diff --git a/CHANGELOG.md b/CHANGELOG.md index 935cc45f0c9..6898e421f04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,8 @@ ### Breaking Changes ### Additions and Improvements -- Updated Teku bootnode ENR on Sepolia and Mainnet -- Scheduled Electra for Mainnet at epoch 364032 (May 7, 2025, 10:05:11am UTC) +- Added `--p2p-static-peers-url` option to read static peers from a URL or file +- Added node epoch and computed slot to the sync committee duties failure message for more context about the failure condition. +- Updated third party libraries. -### Bug Fixes +### Bug Fixes \ No newline at end of file diff --git a/acceptance-tests/src/acceptance-test/java/tech/pegasys/teku/test/acceptance/BlsToExecutionChangeAcceptanceTest.java b/acceptance-tests/src/acceptance-test/java/tech/pegasys/teku/test/acceptance/BlsToExecutionChangeAcceptanceTest.java index c8160aba60e..54845b74952 100644 --- a/acceptance-tests/src/acceptance-test/java/tech/pegasys/teku/test/acceptance/BlsToExecutionChangeAcceptanceTest.java +++ b/acceptance-tests/src/acceptance-test/java/tech/pegasys/teku/test/acceptance/BlsToExecutionChangeAcceptanceTest.java @@ -16,7 +16,7 @@ import java.io.IOException; import java.util.List; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.response.v1.EventType; +import tech.pegasys.teku.api.response.EventType; import tech.pegasys.teku.bls.BLSKeyPair; import tech.pegasys.teku.ethereum.execution.types.Eth1Address; import tech.pegasys.teku.infrastructure.unsigned.UInt64; diff --git a/acceptance-tests/src/acceptance-test/java/tech/pegasys/teku/test/acceptance/MergedGenesisInteropModeAcceptanceTest.java b/acceptance-tests/src/acceptance-test/java/tech/pegasys/teku/test/acceptance/MergedGenesisInteropModeAcceptanceTest.java index 2007f3a32e3..093b160d28a 100644 --- a/acceptance-tests/src/acceptance-test/java/tech/pegasys/teku/test/acceptance/MergedGenesisInteropModeAcceptanceTest.java +++ b/acceptance-tests/src/acceptance-test/java/tech/pegasys/teku/test/acceptance/MergedGenesisInteropModeAcceptanceTest.java @@ -75,28 +75,22 @@ private static TekuNodeConfigBuilder createTekuNodeBuilderForMilestone( .withInteropNumberOfValidators(64) .withValidatorProposerDefaultFeeRecipient("0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"); - switch (specMilestone) { - // We do not need to consider PHASE0, ALTAIR or BELLATRIX as they are all pre-Merge - // milestones - case CAPELLA: - tekuNodeConfigBuilder.withCapellaEpoch(UInt64.ZERO); - break; - case DENEB: - tekuNodeConfigBuilder.withCapellaEpoch(UInt64.ZERO); - tekuNodeConfigBuilder.withDenebEpoch(UInt64.ZERO); - break; - case ELECTRA: - tekuNodeConfigBuilder.withCapellaEpoch(UInt64.ZERO); - tekuNodeConfigBuilder.withDenebEpoch(UInt64.ZERO); - tekuNodeConfigBuilder.withElectraEpoch(UInt64.ZERO); - break; - default: - // Test will reach this whenever a new milestone is added and isn't mapped on the switch. - // This is a way to force us to always remember to validate that a new milestone can start - // from a merged - // state. - fail("Milestone %s not used on merged genesis interop test", specMilestone); + if (specMilestone.isGreaterThanOrEqualTo(SpecMilestone.CAPELLA)) { + tekuNodeConfigBuilder.withCapellaEpoch(UInt64.ZERO); + } + if (specMilestone.isGreaterThanOrEqualTo(SpecMilestone.DENEB)) { + tekuNodeConfigBuilder.withDenebEpoch(UInt64.ZERO); + } + if (specMilestone.isGreaterThanOrEqualTo(SpecMilestone.ELECTRA)) { + tekuNodeConfigBuilder.withElectraEpoch(UInt64.ZERO); } + if (specMilestone.isGreaterThanOrEqualTo(SpecMilestone.FULU)) { + tekuNodeConfigBuilder.withFuluEpoch(UInt64.ZERO); + } + if (specMilestone.isGreaterThan(SpecMilestone.FULU)) { + fail("Milestone %s not used on merged genesis interop test", specMilestone); + } + return tekuNodeConfigBuilder; } } diff --git a/acceptance-tests/src/acceptance-test/java/tech/pegasys/teku/test/acceptance/SyncCommitteeGossipAcceptanceTest.java b/acceptance-tests/src/acceptance-test/java/tech/pegasys/teku/test/acceptance/SyncCommitteeGossipAcceptanceTest.java index de7c3fec795..f63048aa106 100644 --- a/acceptance-tests/src/acceptance-test/java/tech/pegasys/teku/test/acceptance/SyncCommitteeGossipAcceptanceTest.java +++ b/acceptance-tests/src/acceptance-test/java/tech/pegasys/teku/test/acceptance/SyncCommitteeGossipAcceptanceTest.java @@ -16,7 +16,7 @@ import java.io.IOException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.response.v1.EventType; +import tech.pegasys.teku.api.response.EventType; import tech.pegasys.teku.infrastructure.time.SystemTimeProvider; import tech.pegasys.teku.infrastructure.unsigned.UInt64; import tech.pegasys.teku.test.acceptance.dsl.AcceptanceTestBase; diff --git a/acceptance-tests/src/testFixtures/java/tech/pegasys/teku/test/acceptance/dsl/TekuBeaconNode.java b/acceptance-tests/src/testFixtures/java/tech/pegasys/teku/test/acceptance/dsl/TekuBeaconNode.java index b4e0812a255..977bc8ef6ef 100644 --- a/acceptance-tests/src/testFixtures/java/tech/pegasys/teku/test/acceptance/dsl/TekuBeaconNode.java +++ b/acceptance-tests/src/testFixtures/java/tech/pegasys/teku/test/acceptance/dsl/TekuBeaconNode.java @@ -50,7 +50,7 @@ import org.testcontainers.containers.Network; import org.testcontainers.containers.wait.strategy.HttpWaitStrategy; import tech.pegasys.teku.api.migrated.ValidatorLivenessAtEpoch; -import tech.pegasys.teku.api.response.v1.EventType; +import tech.pegasys.teku.api.response.EventType; import tech.pegasys.teku.bls.BLS; import tech.pegasys.teku.bls.BLSKeyPair; import tech.pegasys.teku.bls.BLSSecretKey; diff --git a/acceptance-tests/src/testFixtures/java/tech/pegasys/teku/test/acceptance/dsl/TekuNode.java b/acceptance-tests/src/testFixtures/java/tech/pegasys/teku/test/acceptance/dsl/TekuNode.java index 766f4a4038b..f12c50f2e83 100644 --- a/acceptance-tests/src/testFixtures/java/tech/pegasys/teku/test/acceptance/dsl/TekuNode.java +++ b/acceptance-tests/src/testFixtures/java/tech/pegasys/teku/test/acceptance/dsl/TekuNode.java @@ -28,7 +28,7 @@ import org.testcontainers.containers.Network; import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy; import org.testcontainers.utility.MountableFile; -import tech.pegasys.teku.api.response.v1.EventType; +import tech.pegasys.teku.api.response.EventType; public abstract class TekuNode extends Node { public static final int VALIDATOR_API_PORT = 9052; diff --git a/acceptance-tests/src/testFixtures/java/tech/pegasys/teku/test/acceptance/dsl/TekuNodeConfigBuilder.java b/acceptance-tests/src/testFixtures/java/tech/pegasys/teku/test/acceptance/dsl/TekuNodeConfigBuilder.java index 1281862c1f1..c7ca22604c8 100644 --- a/acceptance-tests/src/testFixtures/java/tech/pegasys/teku/test/acceptance/dsl/TekuNodeConfigBuilder.java +++ b/acceptance-tests/src/testFixtures/java/tech/pegasys/teku/test/acceptance/dsl/TekuNodeConfigBuilder.java @@ -173,6 +173,18 @@ public TekuNodeConfigBuilder withElectraEpoch(final UInt64 electraForkEpoch) { return this; } + public TekuNodeConfigBuilder withFuluEpoch(final UInt64 fuluForkEpoch) { + mustBe(NodeType.BEACON_NODE); + LOG.debug("Xnetwork-fulu-fork-epoch={}", fuluForkEpoch); + configMap.put("Xnetwork-fulu-fork-epoch", fuluForkEpoch.toString()); + specConfigModifier = + specConfigModifier.andThen( + specConfigBuilder -> + specConfigBuilder.fuluBuilder( + fuluBuilder -> fuluBuilder.fuluForkEpoch(fuluForkEpoch))); + return this; + } + public TekuNodeConfigBuilder withTrustedSetupFromClasspath(final String trustedSetup) throws Exception { mustBe(NodeType.BEACON_NODE); @@ -224,19 +236,6 @@ public TekuNodeConfigBuilder withTerminalBlockHash( return this; } - public TekuNodeConfigBuilder withFuluEpoch(final UInt64 fuluForkEpoch) { - - mustBe(NodeType.BEACON_NODE); - LOG.debug("Xnetwork-fulu-fork-epoch={}", fuluForkEpoch); - configMap.put("Xnetwork-fulu-fork-epoch", fuluForkEpoch.toString()); - specConfigModifier = - specConfigModifier.andThen( - specConfigBuilder -> - specConfigBuilder.fuluBuilder( - fuluBuilder -> fuluBuilder.fuluForkEpoch(fuluForkEpoch))); - return this; - } - public TekuNodeConfigBuilder withTotalTerminalDifficulty(final long totalTerminalDifficulty) { return withTotalTerminalDifficulty(UInt256.valueOf(totalTerminalDifficulty)); } @@ -560,6 +559,13 @@ public TekuNodeConfigBuilder withPeers(final TekuBeaconNode... nodes) { return this; } + public TekuNodeConfigBuilder withPeersUrl(final String peersUrl) { + mustBe(NodeType.BEACON_NODE); + LOG.debug("p2p-static-peers-url={}", peersUrl); + configMap.put("p2p-static-peers-url", peersUrl); + return this; + } + public TekuNodeConfigBuilder withExternalSignerUrl(final String externalSignerUrl) { LOG.debug("validators-external-signer-url={}", externalSignerUrl); configMap.put("validators-external-signer-url", externalSignerUrl); diff --git a/beacon/validator/build.gradle b/beacon/validator/build.gradle index 73ca71b3798..1a694749fff 100644 --- a/beacon/validator/build.gradle +++ b/beacon/validator/build.gradle @@ -45,6 +45,7 @@ dependencies { testImplementation testFixtures(project(':infrastructure:logging')) testImplementation testFixtures(project(':infrastructure:metrics')) testImplementation testFixtures(project(':infrastructure:time')) + testImplementation testFixtures(project(':infrastructure:kzg')) integrationTestImplementation testFixtures(project(':ethereum:spec')) integrationTestImplementation testFixtures(project(':infrastructure:async')) diff --git a/beacon/validator/src/main/java/tech/pegasys/teku/validator/coordinator/ValidatorApiHandler.java b/beacon/validator/src/main/java/tech/pegasys/teku/validator/coordinator/ValidatorApiHandler.java index 71d6402f3f3..62a552122ad 100644 --- a/beacon/validator/src/main/java/tech/pegasys/teku/validator/coordinator/ValidatorApiHandler.java +++ b/beacon/validator/src/main/java/tech/pegasys/teku/validator/coordinator/ValidatorApiHandler.java @@ -505,8 +505,7 @@ public SafeFuture> createAggregate( return SafeFuture.completedFuture( attestationPool .createAggregateFor(attestationHashTreeRoot, committeeIndex) - .filter(attestation -> attestation.getData().getSlot().equals(slot)) - .map(ValidatableAttestation::getAttestation)); + .filter(attestation -> attestation.getData().getSlot().equals(slot))); } @Override @@ -802,15 +801,17 @@ private SafeFuture> getStateForCommitteeDuties( return SafeFuture.completedFuture(Optional.of(bestState)); } - final UInt64 lastQueryableEpoch = + final UInt64 maxQueryableEpoch = syncCommitteeUtil.computeLastEpochOfNextSyncCommitteePeriod( combinedChainDataClient.getCurrentEpoch()); - if (lastQueryableEpoch.isLessThan(epoch)) { + if (maxQueryableEpoch.isLessThan(epoch)) { + final Optional networkCurrentSlot = + chainDataProvider.getNetworkCurrentSlot(); return SafeFuture.failedFuture( new IllegalArgumentException( - "Cannot calculate sync committee duties for epoch " - + epoch - + " because it is not within the current or next sync committee periods")); + String.format( + "Cannot calculate sync committee duties for epoch %s because it is not within the current or next sync committee periods (node current epoch %s, computed current slot %s)", + epoch, combinedChainDataClient.getCurrentEpoch(), networkCurrentSlot))); } final UInt64 requiredEpoch; diff --git a/beacon/validator/src/test/java/tech/pegasys/teku/validator/coordinator/BlockOperationSelectorFactoryTestFulu.java b/beacon/validator/src/test/java/tech/pegasys/teku/validator/coordinator/BlockOperationSelectorFactoryTestFulu.java index e2b43e604bb..c09a6a3b2d1 100644 --- a/beacon/validator/src/test/java/tech/pegasys/teku/validator/coordinator/BlockOperationSelectorFactoryTestFulu.java +++ b/beacon/validator/src/test/java/tech/pegasys/teku/validator/coordinator/BlockOperationSelectorFactoryTestFulu.java @@ -41,6 +41,7 @@ import tech.pegasys.teku.infrastructure.ssz.SszList; import tech.pegasys.teku.infrastructure.unsigned.UInt64; import tech.pegasys.teku.kzg.KZG; +import tech.pegasys.teku.kzg.NoOpKZG; import tech.pegasys.teku.spec.Spec; import tech.pegasys.teku.spec.TestSpecFactory; import tech.pegasys.teku.spec.datastructures.blobs.versions.fulu.DataColumnSidecar; @@ -339,7 +340,9 @@ void shouldCreateDataColumnSidecarsForBlockContents() { assertThatThrownBy( () -> - factory.createDataColumnSidecarsSelector(KZG.NOOP).apply(signedBlindedBeaconBlock)) + factory + .createDataColumnSidecarsSelector(NoOpKZG.INSTANCE) + .apply(signedBlindedBeaconBlock)) .isInstanceOf(IllegalStateException.class) .hasMessage( "Commitments in the builder BlobsCellBundle don't match the commitments in the block"); @@ -362,7 +365,9 @@ void shouldFailCreatingBlobSidecarsIfBuilderBlobsBundleProofsIsNotConsistent() { assertThatThrownBy( () -> - factory.createDataColumnSidecarsSelector(KZG.NOOP).apply(signedBlindedBeaconBlock)) + factory + .createDataColumnSidecarsSelector(NoOpKZG.INSTANCE) + .apply(signedBlindedBeaconBlock)) .isInstanceOf(IllegalStateException.class) .hasMessage( "The number of blobs in the builder BlobsCellBundle doesn't match the number of commitments in the block"); @@ -385,7 +390,9 @@ void shouldFailCreatingDataColumnSidecarsIfBuilderBlobsBundleBlobsIsNotConsisten assertThatThrownBy( () -> - factory.createDataColumnSidecarsSelector(KZG.NOOP).apply(signedBlindedBeaconBlock)) + factory + .createDataColumnSidecarsSelector(NoOpKZG.INSTANCE) + .apply(signedBlindedBeaconBlock)) .isInstanceOf(IllegalArgumentException.class) .hasMessage("Expected 128 proofs but got 3"); } diff --git a/beacon/validator/src/test/java/tech/pegasys/teku/validator/coordinator/ValidatorApiHandlerTest.java b/beacon/validator/src/test/java/tech/pegasys/teku/validator/coordinator/ValidatorApiHandlerTest.java index 53532eb70e8..033edc107b9 100644 --- a/beacon/validator/src/test/java/tech/pegasys/teku/validator/coordinator/ValidatorApiHandlerTest.java +++ b/beacon/validator/src/test/java/tech/pegasys/teku/validator/coordinator/ValidatorApiHandlerTest.java @@ -57,7 +57,7 @@ import tech.pegasys.teku.api.NetworkDataProvider; import tech.pegasys.teku.api.NodeDataProvider; import tech.pegasys.teku.api.migrated.ValidatorLivenessAtEpoch; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.beacon.sync.events.SyncState; import tech.pegasys.teku.beacon.sync.events.SyncStateProvider; import tech.pegasys.teku.bls.BLSPublicKey; @@ -734,7 +734,7 @@ public void createAggregate_shouldReturnAggregateFromAttestationPool() { final Optional aggregate = Optional.of(dataStructureUtil.randomAttestation()); when(attestationPool.createAggregateFor( eq(attestationData.hashTreeRoot()), eq(Optional.empty()))) - .thenReturn(aggregate.map(attestation -> ValidatableAttestation.from(spec, attestation))); + .thenReturn(aggregate); assertThat( validatorApiHandler.createAggregate( diff --git a/build.gradle b/build.gradle index d6e1ce4fbbd..fc6b4a5ff09 100644 --- a/build.gradle +++ b/build.gradle @@ -21,11 +21,11 @@ buildscript { } plugins { - id 'com.diffplug.spotless' version '7.0.2' + id 'com.diffplug.spotless' version '7.0.3' id 'com.github.ben-manes.versions' version '0.52.0' id 'com.github.jk1.dependency-license-report' version '2.9' id 'io.spring.dependency-management' version '1.1.7' - id 'net.ltgt.errorprone' version '4.1.0' apply false + id 'net.ltgt.errorprone' version '4.2.0' apply false id 'de.undercouch.download' version '5.6.0' id 'org.ajoberstar.grgit' version '5.3.0' } @@ -249,6 +249,9 @@ allprojects { check('BannedMethod', net.ltgt.gradle.errorprone.CheckSeverity.OFF) check('ExperimentalCliOptionMustBeCorrectlyDisplayed', net.ltgt.gradle.errorprone.CheckSeverity.OFF) + // ignore PatternMatchingInstanceof for now + check("PatternMatchingInstanceof", net.ltgt.gradle.errorprone.CheckSeverity.OFF) + // These are experimental checks that we want enabled check('ClassName', net.ltgt.gradle.errorprone.CheckSeverity.WARN) check('DeduplicateConstants', net.ltgt.gradle.errorprone.CheckSeverity.WARN) @@ -324,7 +327,7 @@ allprojects { } def nightly = System.getenv("NIGHTLY") != null -def refTestVersion = nightly ? "nightly" : "v1.5.0-beta.4" +def refTestVersion = nightly ? "nightly" : "v1.5.0" def blsRefTestVersion = 'v0.1.2' def slashingProtectionInterchangeRefTestVersion = 'v5.3.0' def refTestBaseUrl = 'https://github.com/ethereum/consensus-spec-tests/releases/download' diff --git a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/beacon/SwaggerUiTest.java b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/beacon/SwaggerUiTest.java index ea44cfa0a76..fa6f2630fbf 100644 --- a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/beacon/SwaggerUiTest.java +++ b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/beacon/SwaggerUiTest.java @@ -18,7 +18,7 @@ import static tech.pegasys.teku.infrastructure.restapi.SwaggerUIBuilder.SWAGGER_INITIALIZER_JS; import java.io.IOException; -import java.net.URL; +import java.net.URI; import java.util.HashSet; import java.util.Optional; import java.util.Set; @@ -79,18 +79,18 @@ private static Set findAssets(final String url) throws IOException { Document doc = Jsoup.connect(url).data("query", "Java").userAgent("Mozilla").timeout(3000).get(); - final URL baseUrl = new URL(url); + final URI baseUrl = URI.create(url); // Resources Elements resources = doc.select("link[href]"); for (Element element : resources) { - links.add(new URL(baseUrl, element.attr("href")).getPath()); + links.add(baseUrl.resolve(element.attr("href")).getPath()); } // Scripts Elements scripts = doc.select("script"); for (Element element : scripts) { - links.add(new URL(baseUrl, element.attr("src")).getPath()); + links.add(baseUrl.resolve(element.attr("src")).getPath()); } return links; diff --git a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/tekuv1/beacon/GetEth1DataCacheIntegrationTest.java b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/tekuv1/beacon/GetEth1DataCacheIntegrationTest.java index 2ee7a11f883..b6ff203fff1 100644 --- a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/tekuv1/beacon/GetEth1DataCacheIntegrationTest.java +++ b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/tekuv1/beacon/GetEth1DataCacheIntegrationTest.java @@ -26,11 +26,11 @@ import org.apache.tuweni.bytes.Bytes32; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.schema.Eth1Data; import tech.pegasys.teku.beaconrestapi.AbstractDataBackedRestAPIIntegrationTest; import tech.pegasys.teku.beaconrestapi.handlers.tekuv1.beacon.GetEth1DataCache; import tech.pegasys.teku.infrastructure.unsigned.UInt64; import tech.pegasys.teku.spec.SpecMilestone; +import tech.pegasys.teku.spec.datastructures.blocks.Eth1Data; import tech.pegasys.teku.spec.util.DataStructureUtil; public class GetEth1DataCacheIntegrationTest extends AbstractDataBackedRestAPIIntegrationTest { @@ -45,15 +45,11 @@ public void setup() { @Test public void shouldReturnAllEth1BlocksFromCache() throws IOException { - List eth1DataCacheList = - new ArrayList<>(); + final List eth1DataCacheList = new ArrayList<>(); for (int i = 0; i < 5; i++) { eth1DataCacheList.add(dataStructureUtil.randomEth1Data()); } - List eth1DataCacheBlocks = new ArrayList<>(); - eth1DataCacheList.stream() - .map(Eth1Data::new) - .forEach(eth1Block -> eth1DataCacheBlocks.add(eth1Block)); + final List eth1DataCacheBlocks = new ArrayList<>(eth1DataCacheList); when(eth1DataProvider.getEth1CachedBlocks()).thenReturn(eth1DataCacheList); final Response response = get(); assertThat(response.code()).isEqualTo(SC_OK); @@ -63,11 +59,11 @@ public void shouldReturnAllEth1BlocksFromCache() throws IOException { final JsonNode block = data.get(i); final Eth1Data eth1Data = eth1DataCacheBlocks.get(i); assertThat(Bytes32.fromHexString(block.get("deposit_root").asText())) - .isEqualTo(eth1Data.deposit_root); + .isEqualTo(eth1Data.getDepositRoot()); assertThat(UInt64.valueOf(block.get("deposit_count").asText())) - .isEqualTo(eth1Data.deposit_count); + .isEqualTo(eth1Data.getDepositCount()); assertThat(Bytes32.fromHexString(block.get("block_hash").asText())) - .isEqualTo(eth1Data.block_hash); + .isEqualTo(eth1Data.getBlockHash()); } } diff --git a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetBlindedBlockIntegrationTest.java b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetBlindedBlockIntegrationTest.java index f2b4c8657ef..21f1e5caccb 100644 --- a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetBlindedBlockIntegrationTest.java +++ b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetBlindedBlockIntegrationTest.java @@ -23,7 +23,6 @@ import okhttp3.Response; import org.apache.tuweni.bytes.Bytes; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.AbstractDataBackedRestAPIIntegrationTest; import tech.pegasys.teku.beaconrestapi.handlers.v1.beacon.GetBlindedBlock; import tech.pegasys.teku.ethereum.json.types.SharedApiTypes; @@ -46,7 +45,8 @@ public void shouldGetBlindedPhase0Block() throws IOException { assertThat(result.isBlinded()).isFalse(); assertThat(result).isEqualTo(created.get(0).getBlock()); assertThat(result.hashTreeRoot()).isEqualTo(created.get(0).getBlock().hashTreeRoot()); - assertThat(response.header(HEADER_CONSENSUS_VERSION)).isEqualTo(Version.phase0.name()); + assertThat(response.header(HEADER_CONSENSUS_VERSION)) + .isEqualTo(SpecMilestone.PHASE0.lowerCaseName()); } @Test @@ -59,7 +59,8 @@ public void shouldGetBlindedBellatrixBlock() throws IOException { assertThat(result.isBlinded()).isTrue(); assertThat(result.hashTreeRoot()).isEqualTo(created.get(0).getBlock().hashTreeRoot()); - assertThat(response.header(HEADER_CONSENSUS_VERSION)).isEqualTo(Version.bellatrix.name()); + assertThat(response.header(HEADER_CONSENSUS_VERSION)) + .isEqualTo(SpecMilestone.BELLATRIX.lowerCaseName()); } @Test @@ -75,7 +76,8 @@ public void shouldGetBellatrixBlockAsSsz() throws IOException { .sszDeserialize(Bytes.of(response.body().bytes())); assertThat(result.isBlinded()).isTrue(); assertThat(result.hashTreeRoot()).isEqualTo(created.get(0).getBlock().hashTreeRoot()); - assertThat(response.header(HEADER_CONSENSUS_VERSION)).isEqualTo(Version.bellatrix.name()); + assertThat(response.header(HEADER_CONSENSUS_VERSION)) + .isEqualTo(SpecMilestone.BELLATRIX.lowerCaseName()); } public Response get(final String blockIdString, final String contentType) throws IOException { diff --git a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetFinalizedCheckpointStateIntegrationTest.java b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetFinalizedCheckpointStateIntegrationTest.java index facf1668faf..c6696114e62 100644 --- a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetFinalizedCheckpointStateIntegrationTest.java +++ b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetFinalizedCheckpointStateIntegrationTest.java @@ -23,7 +23,6 @@ import org.apache.tuweni.bytes.Bytes; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.AbstractDataBackedRestAPIIntegrationTest; import tech.pegasys.teku.beaconrestapi.handlers.v1.beacon.GetFinalizedCheckpointState; import tech.pegasys.teku.infrastructure.http.ContentTypes; @@ -43,7 +42,8 @@ public void shouldGetBellatrixStateAsSsz() final Response response = getResponse(GetFinalizedCheckpointState.ROUTE, ContentTypes.OCTET_STREAM); assertThat(response.code()).isEqualTo(SC_OK); - assertThat(response.header(HEADER_CONSENSUS_VERSION)).isEqualTo(Version.bellatrix.name()); + assertThat(response.header(HEADER_CONSENSUS_VERSION)) + .isEqualTo(SpecMilestone.BELLATRIX.lowerCaseName()); final Bytes actualResponse = Bytes.wrap(response.body().bytes()); assertThat(actualResponse) .isEqualTo(combinedChainDataClient.getBestState().get().get().sszSerialize()); diff --git a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetPendingDepositsIntegrationTest.java b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetPendingDepositsIntegrationTest.java index 198426e08cf..6eb6e3f102f 100644 --- a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetPendingDepositsIntegrationTest.java +++ b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetPendingDepositsIntegrationTest.java @@ -21,7 +21,6 @@ import java.util.List; import okhttp3.Response; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.AbstractDataBackedRestAPIIntegrationTest; import tech.pegasys.teku.beaconrestapi.handlers.v1.beacon.GetStatePendingDeposits; import tech.pegasys.teku.infrastructure.json.JsonTestUtil; @@ -50,7 +49,8 @@ public void shouldGetElectraDepositsJson() throws Exception { assertThat(node.get("data").get(1).get("slot").asInt()).isEqualTo(10); assertThat(node.get("data").get(1).get("pubkey").asText()) .isEqualTo(stateElectra.getPendingDeposits().get(1).getPublicKey().toHexString()); - assertThat(response.header(HEADER_CONSENSUS_VERSION)).isEqualTo(Version.electra.name()); + assertThat(response.header(HEADER_CONSENSUS_VERSION)) + .isEqualTo(SpecMilestone.ELECTRA.lowerCaseName()); } public Response get(final String stateId) throws IOException { diff --git a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetStatePendingPartialWithdrawalsIntegrationTest.java b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetStatePendingPartialWithdrawalsIntegrationTest.java index 610d6ff9172..acd98b6fc61 100644 --- a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetStatePendingPartialWithdrawalsIntegrationTest.java +++ b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetStatePendingPartialWithdrawalsIntegrationTest.java @@ -20,7 +20,6 @@ import java.io.IOException; import okhttp3.Response; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.AbstractDataBackedRestAPIIntegrationTest; import tech.pegasys.teku.beaconrestapi.handlers.v1.beacon.GetStatePendingPartialWithdrawals; import tech.pegasys.teku.infrastructure.json.JsonTestUtil; @@ -40,7 +39,8 @@ public void shouldGetElectraDepositsJson() throws Exception { assertThat(node.get("execution_optimistic").asBoolean()).isFalse(); assertThat(node.get("finalized").asBoolean()).isFalse(); assertThat(node.get("data").size()).isEqualTo(0); - assertThat(response.header(HEADER_CONSENSUS_VERSION)).isEqualTo(Version.electra.name()); + assertThat(response.header(HEADER_CONSENSUS_VERSION)) + .isEqualTo(SpecMilestone.ELECTRA.lowerCaseName()); } public Response get(final String stateId) throws IOException { diff --git a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/node/GetIdentityIntegrationTest.java b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/node/GetIdentityIntegrationTest.java index fc1dcce27a0..9564e1f5aa6 100644 --- a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/node/GetIdentityIntegrationTest.java +++ b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/node/GetIdentityIntegrationTest.java @@ -99,7 +99,8 @@ public void shouldReturnNetworkIdentityFulu() throws Exception { assertThat(response.code()).isEqualTo(SC_OK); checkResponseData( response, - "{\"seq_number\":\"4666673844721362956\",\"attnets\":\"0x0288000000000000\",\"syncnets\":\"0x0f\"}"); + "{\"seq_number\":\"4666673844721362956\",\"attnets\":\"0x0288000000000000\",\"syncnets\":\"0x0f\"," + + "\"custody_group_count\":\"4\"}"); } private void checkResponseData(final Response response, final String metadata) diff --git a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/validator/PostRegisterValidatorTest.java b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/validator/PostRegisterValidatorTest.java index 300b1bca288..326be8973f8 100644 --- a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/validator/PostRegisterValidatorTest.java +++ b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/validator/PostRegisterValidatorTest.java @@ -34,7 +34,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.beaconrestapi.AbstractDataBackedRestAPIIntegrationTest; import tech.pegasys.teku.beaconrestapi.handlers.v1.validator.PostRegisterValidator; import tech.pegasys.teku.bls.BLSPublicKey; diff --git a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v2/beacon/GetBlockV2IntegrationTest.java b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v2/beacon/GetBlockV2IntegrationTest.java index bc28cc7688b..70c25b5253f 100644 --- a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v2/beacon/GetBlockV2IntegrationTest.java +++ b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v2/beacon/GetBlockV2IntegrationTest.java @@ -28,7 +28,6 @@ import java.util.zip.GZIPInputStream; import okhttp3.Response; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.AbstractDataBackedRestAPIIntegrationTest; import tech.pegasys.teku.beaconrestapi.handlers.v2.beacon.GetBlock; import tech.pegasys.teku.infrastructure.http.ContentTypes; @@ -46,12 +45,13 @@ public void shouldGetBlock() throws IOException { final Response response = get("head"); final JsonNode body = OBJECT_MAPPER.readTree(response.body().string()); - assertThat(body.get("version").asText()).isEqualTo(Version.phase0.name()); + assertThat(body.get("version").asText()).isEqualTo(SpecMilestone.PHASE0.lowerCaseName()); assertThat(body.get("data").get("message").get("parent_root").asText()) .isEqualTo(created.get(0).getBlock().getMessage().getParentRoot().toHexString()); assertThat(body.get("data").get("message").get("state_root").asText()) .isEqualTo(created.get(0).getBlock().getMessage().getStateRoot().toHexString()); - assertThat(response.header(HEADER_CONSENSUS_VERSION)).isEqualTo(Version.phase0.name()); + assertThat(response.header(HEADER_CONSENSUS_VERSION)) + .isEqualTo(SpecMilestone.PHASE0.lowerCaseName()); // this is the most practical way to compare the block to that created, but its secondary to // comparing state root and parent root. @@ -67,12 +67,13 @@ public void shouldGetAltairBlock() throws IOException { final Response response = get("head"); final JsonNode body = OBJECT_MAPPER.readTree(response.body().string()); - assertThat(body.get("version").asText()).isEqualTo(Version.altair.name()); + assertThat(body.get("version").asText()).isEqualTo(SpecMilestone.ALTAIR.lowerCaseName()); assertThat(body.get("data").get("message").get("parent_root").asText()) .isEqualTo(created.get(0).getBlock().getMessage().getParentRoot().toHexString()); assertThat(body.get("data").get("message").get("state_root").asText()) .isEqualTo(created.get(0).getBlock().getMessage().getStateRoot().toHexString()); - assertThat(response.header(HEADER_CONSENSUS_VERSION)).isEqualTo(Version.altair.name()); + assertThat(response.header(HEADER_CONSENSUS_VERSION)) + .isEqualTo(SpecMilestone.ALTAIR.lowerCaseName()); // this is the most practical way to compare the block to that created, but its secondary to // comparing state root and parent root. @@ -97,7 +98,8 @@ public void shouldGetAltairBlockAsSsz() throws IOException { createBlocksAtSlots(10); final Response response = get("head", OCTET_STREAM); assertThat(response.code()).isEqualTo(SC_OK); - assertThat(response.header(HEADER_CONSENSUS_VERSION)).isEqualTo(Version.altair.name()); + assertThat(response.header(HEADER_CONSENSUS_VERSION)) + .isEqualTo(SpecMilestone.ALTAIR.lowerCaseName()); } @Test @@ -106,7 +108,8 @@ public void shouldGetAltairBlockAsGzip() throws IOException { createBlocksAtSlots(10); final Response response = getGzip("head", ContentTypes.JSON); assertThat(response.code()).isEqualTo(SC_OK); - assertThat(response.header(HEADER_CONSENSUS_VERSION)).isEqualTo(Version.altair.name()); + assertThat(response.header(HEADER_CONSENSUS_VERSION)) + .isEqualTo(SpecMilestone.ALTAIR.lowerCaseName()); assertThat(response.header(HEADER_CONTENT_ENCODING)).isEqualTo("gzip"); // Decompress response diff --git a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v2/debug/GetStateIntegrationTest.java b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v2/debug/GetStateIntegrationTest.java index 3afa02d5a15..36e746a1d72 100644 --- a/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v2/debug/GetStateIntegrationTest.java +++ b/data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v2/debug/GetStateIntegrationTest.java @@ -23,7 +23,6 @@ import java.util.function.Function; import okhttp3.Response; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.AbstractDataBackedRestAPIIntegrationTest; import tech.pegasys.teku.beaconrestapi.handlers.v2.debug.GetState; import tech.pegasys.teku.infrastructure.http.ContentTypes; @@ -53,7 +52,8 @@ public void shouldGetPhase0StateAsJson() throws IOException { assertThat(stateResponse).isNotNull(); assertThat(stateResponse.getVersion()).isEqualTo(SpecMilestone.PHASE0); assertThat(stateResponse.getData()).isInstanceOf(BeaconStatePhase0.class); - assertThat(response.header(HEADER_CONSENSUS_VERSION)).isEqualTo(Version.phase0.name()); + assertThat(response.header(HEADER_CONSENSUS_VERSION)) + .isEqualTo(SpecMilestone.PHASE0.lowerCaseName()); } @Test @@ -71,7 +71,8 @@ public void shouldGetAltairStateAsJson() throws IOException { assertThat(stateResponse).isNotNull(); assertThat(stateResponse.getVersion()).isEqualTo(SpecMilestone.ALTAIR); assertThat(stateResponse.getData()).isInstanceOf(BeaconStateAltair.class); - assertThat(response.header(HEADER_CONSENSUS_VERSION)).isEqualTo(Version.altair.name()); + assertThat(response.header(HEADER_CONSENSUS_VERSION)) + .isEqualTo(SpecMilestone.ALTAIR.lowerCaseName()); } @Test @@ -79,7 +80,8 @@ public void shouldGetAltairStateAsSsz() throws IOException { startRestAPIAtGenesis(SpecMilestone.ALTAIR); final Response response = get("head", OCTET_STREAM); assertThat(response.code()).isEqualTo(SC_OK); - assertThat(response.header(HEADER_CONSENSUS_VERSION)).isEqualTo(Version.altair.name()); + assertThat(response.header(HEADER_CONSENSUS_VERSION)) + .isEqualTo(SpecMilestone.ALTAIR.lowerCaseName()); } public Response get(final String stateIdIdString, final String contentType) throws IOException { diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks.json index 56df6225beb..d4263c63b6e 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks.json @@ -10,7 +10,7 @@ "in" : "header", "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "description" : "Version of the block being submitted, if using SSZ encoding." } } ], diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks_{block_id}.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks_{block_id}.json index 32866e570a8..d5f618fe8ce 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks_{block_id}.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks_{block_id}.json @@ -29,7 +29,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blob_sidecars_{block_id}.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blob_sidecars_{block_id}.json index 3fd930829e2..fe8a79993ba 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blob_sidecars_{block_id}.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blob_sidecars_{block_id}.json @@ -3,7 +3,7 @@ "tags" : [ "Beacon" ], "operationId" : "getBlobSidecars", "summary" : "Get blob sidecars", - "description" : "Retrieves blob sidecars for a given block id.\n Depending on `Accept` header it can be returned either as json or as bytes serialized by SSZ.\n If the `indices` parameter is specified, only the blob sidecars with the specified indices will be returned. There are no guarantees\n for the returned blob sidecars in terms of ordering.", + "description" : "Retrieves blob sidecars for a given block id.\n Depending on `Accept` header it can be returned either as json or as bytes serialized by SSZ.\n If the `indices` parameter is specified, only the blob sidecars with the specified indices will be returned. There are no guarantees\n for the returned blob sidecars in terms of ordering.\n", "parameters" : [ { "name" : "block_id", "required" : true, @@ -41,7 +41,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blocks.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blocks.json index 703cca02f5b..63e426ffe4b 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blocks.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blocks.json @@ -10,7 +10,7 @@ "in" : "header", "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "description" : "Version of the block being submitted, if using SSZ encoding." } } ], @@ -38,6 +38,8 @@ "$ref" : "#/components/schemas/SignedBlockContentsDeneb" }, { "$ref" : "#/components/schemas/SignedBlockContentsElectra" + }, { + "$ref" : "#/components/schemas/SignedBlockContentsFulu" } ] } } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_light_client_updates.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_light_client_updates.json index 56fb7296377..d56edf703d0 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_light_client_updates.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_light_client_updates.json @@ -44,7 +44,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ] }, "data": { diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_pool_sync_committees.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_pool_sync_committees.json index 50334eaab83..408fa738c7c 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_pool_sync_committees.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_pool_sync_committees.json @@ -3,7 +3,7 @@ "tags" : [ "Beacon", "Validator Required Api" ], "operationId" : "submitPoolSyncCommitteeSignatures", "summary" : "Submit sync committee signatures to node", - "description" : "Submits sync committee message objects to the node.\n\nSync committee messages are not present in phase0, but are required for Altair networks.\n\nIf a sync committee message is validated successfully the node MUST publish that sync committee message on all applicable subnets.\n\nIf one or more sync committee messages fail validation the node MUST return a 400 error with details of which sync committee messages have failed, and why.", + "description" : "Submits sync committee message objects to the node.\n\nSync committee messages are not present in phase0, but are required for Altair networks.\n\nIf a sync committee message is validated successfully the node MUST publish that sync committee message on all applicable subnets.\n\nIf one or more sync committee messages fail validation the node MUST return a 400 error with details of which sync committee messages have failed, and why.\n", "requestBody" : { "content" : { "application/json" : { diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_consolidations.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_consolidations.json index ee6c0b839fe..7b14df25a4a 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_consolidations.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_consolidations.json @@ -23,7 +23,7 @@ "required" : true, "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "example" : "phase0" } } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_deposits.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_deposits.json index 4daacc4478c..29688e3333c 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_deposits.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_deposits.json @@ -23,7 +23,7 @@ "required" : true, "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "example" : "phase0" } } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_partial_withdrawals.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_partial_withdrawals.json index 46e5bbe88f9..86978f0bc76 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_partial_withdrawals.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_partial_withdrawals.json @@ -23,7 +23,7 @@ "required" : true, "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "example" : "phase0" } } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_validator_prepare_beacon_proposer.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_validator_prepare_beacon_proposer.json index 8d7bd4ffebf..fb8ed5a6f95 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_validator_prepare_beacon_proposer.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_validator_prepare_beacon_proposer.json @@ -3,7 +3,7 @@ "tags" : [ "Validator", "Validator Required Api" ], "operationId" : "prepareBeaconProposer", "summary" : "Provide beacon node with proposals for the given validators.", - "description" : "Prepares the beacon node for potential proposers by supplying information required when proposing blocks for the given validators. The information supplied for each validator index is considered persistent until overwritten by new information for the given validator index, or until the beacon node restarts.\n\nNote that because the information is not persistent across beacon node restarts it is recommended that either the beacon node is monitored for restarts or this information is refreshed by resending this request periodically (for example, each epoch).\n\nAlso note that requests containing currently inactive or unknown validator indices will be accepted, as they may become active at a later epoch.", + "description" : "Prepares the beacon node for potential proposers by supplying information required when proposing blocks for the given validators. The information supplied for each validator index is considered persistent until overwritten by new information for the given validator index, or until the beacon node restarts.\n\nNote that because the information is not persistent across beacon node restarts it is recommended that either the beacon node is monitored for restarts or this information is refreshed by resending this request periodically (for example, each epoch).\n\nAlso note that requests containing currently inactive or unknown validator indices will be accepted, as they may become active at a later epoch.\n", "requestBody" : { "content" : { "application/json" : { diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_validator_sync_committee_subscriptions.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_validator_sync_committee_subscriptions.json index a32174d4e40..2ee1b9e8306 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_validator_sync_committee_subscriptions.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_validator_sync_committee_subscriptions.json @@ -3,7 +3,7 @@ "tags" : [ "Validator", "Validator Required Api" ], "operationId" : "prepareSyncCommitteeSubnets", "summary" : "Subscribe to sync committee subnets", - "description" : "Subscribe to a number of sync committee subnets\n\nSync committees are not present in phase0, but are required for Altair networks.\n\nSubscribing to sync committee subnets is an action performed by VC to enable network participation in Altair networks, and only required if the VC has an active validator in an active sync committee.", + "description" : "Subscribe to a number of sync committee subnets\n\nSync committees are not present in phase0, but are required for Altair networks.\n\nSubscribing to sync committee subnets is an action performed by VC to enable network participation in Altair networks, and only required if the VC has an active validator in an active sync committee.\n", "requestBody" : { "content" : { "application/json" : { diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blinded_blocks.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blinded_blocks.json index 1cb1edbd7d8..cc1aef32b49 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blinded_blocks.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blinded_blocks.json @@ -20,7 +20,7 @@ "in" : "header", "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "description" : "Version of the block being submitted." } } ], diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks.json index 91bea9a6f03..6784c9b3fbd 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks.json @@ -20,7 +20,7 @@ "in" : "header", "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "description" : "Version of the block being submitted." } } ], @@ -48,6 +48,8 @@ "$ref" : "#/components/schemas/SignedBlockContentsDeneb" }, { "$ref" : "#/components/schemas/SignedBlockContentsElectra" + }, { + "$ref" : "#/components/schemas/SignedBlockContentsFulu" } ] } } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks_{block_id}_attestations.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks_{block_id}_attestations.json index c73cde0e358..9b7a2103393 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks_{block_id}_attestations.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks_{block_id}_attestations.json @@ -29,7 +29,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attestations.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attestations.json index 7242e8ad9ee..122d579e6be 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attestations.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attestations.json @@ -38,7 +38,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } @@ -78,14 +79,14 @@ "tags" : [ "Beacon", "Validator Required Api", "Experimental" ], "operationId" : "submitPoolAttestationsV2", "summary" : "Submit Attestation objects to node", - "description" : "Submits Attestation objects to the node. Each attestation in the request body is processed individually.\nIf an attestation is validated successfully, the node MUST publish that attestation on the appropriate subnet.\nIf one or more attestations fail validation, the node MUST return a 400 error with details of which attestations have failed, and why.", + "description" : "Submits Attestation objects to the node. Each attestation in the request body is processed individually.\nIf an attestation is validated successfully, the node MUST publish that attestation on the appropriate subnet.\nIf one or more attestations fail validation, the node MUST return a 400 error with details of which attestations have failed, and why.\n", "parameters" : [ { "name" : "Eth-Consensus-Version", "required" : true, "in" : "header", "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "description" : "Version of the attestations being submitted." } } ], diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attester_slashings.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attester_slashings.json index 9562ee1a45b..e8ff23c8729 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attester_slashings.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attester_slashings.json @@ -19,7 +19,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } @@ -66,7 +67,7 @@ "in" : "header", "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "description" : "Version of the attester slashing being submitted." } } ], diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_debug_beacon_states_{state_id}.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_debug_beacon_states_{state_id}.json index a803cb0fe24..3becc3252fa 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_debug_beacon_states_{state_id}.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_debug_beacon_states_{state_id}.json @@ -29,7 +29,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_and_proofs.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_and_proofs.json index 88123b6bfc9..cfc817fd982 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_and_proofs.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_and_proofs.json @@ -10,7 +10,7 @@ "in" : "header", "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "description" : "Version of the aggregate and proofs being submitted." } } ], diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_attestation.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_attestation.json index 08fb7006ac2..6976d143131 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_attestation.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_attestation.json @@ -3,7 +3,7 @@ "tags" : [ "Validator", "Validator Required Api" ], "operationId" : "getAggregatedAttestationV2", "summary" : "Get aggregated attestation", - "description" : "Aggregates all attestations matching given attestation data root, slot and committee index.\nA 503 error must be returned if the block identified by the response\n`beacon_block_root` is optimistic (i.e. the aggregated attestation attests\nto a block that has not been fully verified by an execution engine).\nA 404 error must be returned if no attestation is available for the requested\n`attestation_data_root`.", + "description" : "Aggregates all attestations matching given attestation data root, slot and committee index.\nA 503 error must be returned if the block identified by the response\n`beacon_block_root` is optimistic (i.e. the aggregated attestation attests\nto a block that has not been fully verified by an execution engine).\nA 404 error must be returned if no attestation is available for the requested\n`attestation_data_root`.\n", "parameters" : [ { "name" : "attestation_data_root", "required" : true, @@ -50,7 +50,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v3_validator_blocks_{slot}.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v3_validator_blocks_{slot}.json index 5228c531b1c..b1e08a9ff28 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v3_validator_blocks_{slot}.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v3_validator_blocks_{slot}.json @@ -3,7 +3,7 @@ "tags" : [ "Validator", "Validator Required Api" ], "operationId" : "produceBlockV3", "summary" : "Produce a new block, without signature.", - "description" : "Requests a beacon node to produce a valid block, which can then be signed by a validator. The\nreturned block may be blinded or unblinded, depending on the current state of the network as\ndecided by the execution and beacon nodes.\nThe beacon node must return an unblinded block if it obtains the execution payload from its\npaired execution node. It must only return a blinded block if it obtains the execution payload\nheader from an MEV relay.\nMetadata in the response indicates the type of block produced, and the supported types of block\nwill be added to as forks progress.", + "description" : "Requests a beacon node to produce a valid block, which can then be signed by a validator. The\nreturned block may be blinded or unblinded, depending on the current state of the network as\ndecided by the execution and beacon nodes.\nThe beacon node must return an unblinded block if it obtains the execution payload from its\npaired execution node. It must only return a blinded block if it obtains the execution payload\nheader from an MEV relay.\nMetadata in the response indicates the type of block produced, and the supported types of block\nwill be added to as forks progress.\n", "parameters" : [ { "name" : "slot", "required" : true, @@ -68,7 +68,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/BlockContentsFulu.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/BlockContentsFulu.json new file mode 100644 index 00000000000..cce1946b2ef --- /dev/null +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/BlockContentsFulu.json @@ -0,0 +1,28 @@ +{ + "title" : "BlockContentsFulu", + "type" : "object", + "required" : [ "block", "kzg_proofs", "blobs" ], + "properties" : { + "block" : { + "$ref" : "#/components/schemas/BeaconBlockElectra" + }, + "kzg_proofs" : { + "type" : "array", + "items" : { + "type" : "string", + "pattern" : "^0x[a-fA-F0-9]{2,}$", + "description" : "Bytes48 hexadecimal", + "format" : "bytes" + } + }, + "blobs" : { + "type" : "array", + "items" : { + "type" : "string", + "pattern" : "^0x[a-fA-F0-9]{2,}$", + "description" : "SSZ hexadecimal", + "format" : "bytes" + } + } + } +} \ No newline at end of file diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAggregatedAttestationResponseV2.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAggregatedAttestationResponseV2.json index 9cb12c68428..14f755d1397 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAggregatedAttestationResponseV2.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAggregatedAttestationResponseV2.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "data" : { "type" : "object", diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAllBlocksAtSlotResponse.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAllBlocksAtSlotResponse.json index 80cd5b0740b..0b8c5d9d726 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAllBlocksAtSlotResponse.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAllBlocksAtSlotResponse.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "data" : { "type" : "array", diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlindedBlockResponse.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlindedBlockResponse.json index 36777047ed8..6a06a9e0709 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlindedBlockResponse.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlindedBlockResponse.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_optimistic" : { "type" : "boolean" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlobSidecarsResponse.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlobSidecarsResponse.json index 03a7a2c46d7..bc15072c3b4 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlobSidecarsResponse.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlobSidecarsResponse.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_optimistic" : { "type" : "boolean" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockAttestationsResponseV2.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockAttestationsResponseV2.json index 0ab64e88a12..f7392a9c234 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockAttestationsResponseV2.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockAttestationsResponseV2.json @@ -11,7 +11,7 @@ }, "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "data" : { "type" : "object", diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockV2Response.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockV2Response.json index 87ad068b65f..dfedfb0bc1f 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockV2Response.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockV2Response.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_optimistic" : { "type" : "boolean" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetLightClientBootstrapResponse.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetLightClientBootstrapResponse.json index 2d83bbbbbab..df021bf818e 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetLightClientBootstrapResponse.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetLightClientBootstrapResponse.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "data" : { "$ref" : "#/components/schemas/LightClientBootstrap" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingConsolidationsResponse.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingConsolidationsResponse.json index fdef248e084..9b560ab6f4e 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingConsolidationsResponse.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingConsolidationsResponse.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_optimistic" : { "type" : "boolean" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingDepositsResponse.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingDepositsResponse.json index 8b4264a33be..e790fde76eb 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingDepositsResponse.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingDepositsResponse.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_optimistic" : { "type" : "boolean" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingPartialWithdrawalsResponse.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingPartialWithdrawalsResponse.json index cf0f5c2f217..1a7e648ff70 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingPartialWithdrawalsResponse.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingPartialWithdrawalsResponse.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_optimistic" : { "type" : "boolean" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttestationsV2Response.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttestationsV2Response.json index 80756cfe9c9..cc8fac0295b 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttestationsV2Response.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttestationsV2Response.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "data" : { "type" : "array", diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttesterSlashingsV2Response.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttesterSlashingsV2Response.json index f7d37298367..b9c894f3a06 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttesterSlashingsV2Response.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttesterSlashingsV2Response.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "data" : { "type" : "object", diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetStateV2Response.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetStateV2Response.json index 27b011ce585..91c7ea990a7 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetStateV2Response.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetStateV2Response.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_optimistic" : { "type" : "boolean" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/MetaData.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/MetaData.json index 56d34e17d79..044c00c0434 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/MetaData.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/MetaData.json @@ -23,7 +23,7 @@ }, "custody_group_count" : { "type" : "string", - "description" : "PeerDAS custody group count.", + "description" : "Uint64 representing the node's custody group count. The metadata is present from the Fulu fork.", "example" : "1", "format" : "uint64" } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/ProduceBlockV3Response.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/ProduceBlockV3Response.json index eede3e02bbf..544a88c106c 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/ProduceBlockV3Response.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/ProduceBlockV3Response.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_payload_blinded" : { "type" : "boolean" @@ -45,6 +45,8 @@ "$ref" : "#/components/schemas/BlockContentsElectra" }, { "$ref" : "#/components/schemas/BlindedBeaconBlockElectra" + }, { + "$ref" : "#/components/schemas/BlockContentsFulu" } ] } } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/SignedBlockContentsFulu.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/SignedBlockContentsFulu.json new file mode 100644 index 00000000000..33ff526ffba --- /dev/null +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/SignedBlockContentsFulu.json @@ -0,0 +1,28 @@ +{ + "title" : "SignedBlockContentsFulu", + "type" : "object", + "required" : [ "signed_block", "kzg_proofs", "blobs" ], + "properties" : { + "signed_block" : { + "$ref" : "#/components/schemas/SignedBeaconBlockElectra" + }, + "kzg_proofs" : { + "type" : "array", + "items" : { + "type" : "string", + "pattern" : "^0x[a-fA-F0-9]{2,}$", + "description" : "Bytes48 hexadecimal", + "format" : "bytes" + } + }, + "blobs" : { + "type" : "array", + "items" : { + "type" : "string", + "pattern" : "^0x[a-fA-F0-9]{2,}$", + "description" : "SSZ hexadecimal", + "format" : "bytes" + } + } + } +} \ No newline at end of file diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/v3/newBlindedBlockFULU.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/v3/newBlindedBlockFULU.json new file mode 100644 index 00000000000..b48e24fa66c --- /dev/null +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/v3/newBlindedBlockFULU.json @@ -0,0 +1,397 @@ +{ + "version": "fulu", + "execution_payload_blinded": true, + "execution_payload_value": "70091777274856981794352123785798699314161189490191767166854046474344034863608", + "consensus_block_value": "78291679983577647606856001912576699955529486494073092274184166309422601585026", + "data": { + "slot": "1", + "proposer_index": "4666673844721362956", + "parent_root": "0x367cbd40ac7318427aadb97345a91fa2e965daf3158d7f1846f1306305f41bef", + "state_root": "0xfd18cf40cc907a739be483f1ca0ee23ad65cdd3df23205eabc6d660a75d1f54e", + "body": { + "randao_reveal": "0x9005ed0936f527d416609285b355fe6b9610d730c18b9d2f4942ba7d0eb95ba304ff46b6a2fb86f0c756bf09274db8e11399b7642f9fc5ae50b5bd9c1d87654277a19bfc3df78d36da16f44a48630d9550774a4ca9f3a5b55bbf33345ad2ec71", + "eth1_data": { + "deposit_root": "0x6fdfab408c56b6105a76eff5c0435d09fc6ed7a938e7f946cf74fbbb9416428f", + "deposit_count": "4658411424342975020", + "block_hash": "0x499db7404cbff78670f0209f1932346fef68d985cb55a8d27472742bdf54d379" + }, + "graffiti": "0x0000000000000000000000000000000000000000000000000000000000000000", + "proposer_slashings": [ + { + "signed_header_1": { + "message": { + "slot": "4661716390776343276", + "proposer_index": "4600574485989226763", + "parent_root": "0x32a7d23faa44fc04cc23dc3b560a55ade3deb2c393e9de2e6d20bdad2416c39b", + "state_root": "0xf943e43fcb615e36ec5aa6b9db6f1746d0d5b50d708f6400e39cf25495f39cfb", + "body_root": "0x0c65de3f6bad3d7be19d0de5aff82b13d6d8b49f26588dba111e361d6f545486" + }, + "signature": "0xb520c40e02457e0d3d61ebba3b04912f7db82a9a74132fedf190d94b32738dc62744644455959b4b4dc7aaf1e54064fa0f4aefe30696b7ed758c921d266402360e9abc003374800cd2aa6ffaa0c11a5cbfb3798b1816bac7be1e0c67c3305483" + }, + "signed_header_2": { + "message": { + "slot": "4661716390776343276", + "proposer_index": "4600574485989226763", + "parent_root": "0x7e2bbb3f2a737918a12f79e9a52da7e1fceaae0b6c0c82172425cbce8d99a0c6", + "state_root": "0x45c8cc3f4a90db49c16643672a93697ae9e1b15549b207e99aa10076fe767a26", + "body_root": "0x58e9c63feadbba8eb6a9aa92fd1b7e47efe4b0e7ff7a30a3c822443ed8d731b1" + }, + "signature": "0xa01cb4e18fb43a400024b67cd091680b8412ea66ed4a0d41f7ee611a87476d153e18879e22a5dbc98df9ea4ecd016c1801f1ee9411e103383c73c06cb5331b8377ef8f2f4ab67a4975135a59d9121279f9d979625d78f339f71aaaec565911b1" + } + } + ], + "attester_slashings": [ + { + "attestation_1": { + "attesting_indices": [ + "4590659586689121994", + "4589007099177470570", + "4580744678799082634" + ], + "data": { + "slot": "4579092195582398506", + "index": "4584049649527418186", + "beacon_block_root": "0xf1f1973fea38b5b560c1e4ed9a6222b021fda877b2c07674362c6080acdeec06", + "source": { + "epoch": "538655350", + "root": "0x00963040ab8a07b778f467851c7d0cdc7faec2a32d5e528c900d85297e084df0" + }, + "target": { + "epoch": "539040099", + "root": "0xda533c406bf3482d8e6e992e756be34172a8c47fc1cc0018350bfe98c946deda" + } + }, + "signature": "0x8bfc6e1a1c76bdafb4d491ce02a35effde6d7362eb32c03f119c47c12fb2b49e7656bbd4702ba02560fd7fe117f2c74e02142ce46176ebf269d5b34a48a65525e35db6cc446965e86e22e9d8adf5abe92315690b6de5f4591769487539fed52a" + }, + "attestation_2": { + "attesting_indices": [ + "4590659586689121994", + "4589007099177470570", + "4580744678799082634" + ], + "data": { + "slot": "4618751809962686763", + "index": "4623709263907706443", + "beacon_block_root": "0x27d82440eb21c640637a36dcc38e35768bb4c0c79aefa300ec0f0cba32cabb05", + "source": { + "epoch": "537116355", + "root": "0x999e0140abe701de220ca2e0b9c3b044b1c6ba33e0a3985dfe16a16b510f0846" + }, + "target": { + "epoch": "537501104", + "root": "0x735c0d406b5043543786d38912b287aaa4c0bc0f731247e9a3141adb9c4d9930" + } + }, + "signature": "0xb2213ef588828a7c18cdc781d0ed2516fd3e11de625f191aae7ae4be8b1ad2cc217728c65a500aedea276d345f09fd3212b009568a6549f5f40ead6d7ec4d0f3f329c00a1b4bca59068ee0555c94aec91bebc18365ca0b2d6692557b4b0c4267" + } + } + ], + "attestations": [ + { + "aggregation_bits": "0x907c35a14e5afee2fffc1703230dbe923ea49766c5af5277f432d84b3c2323d8a5a8dc131a8cbb3c69aad1172537e0826b0f4ee1639f650b91bbeab0eaf337f9472742d6f8443c1eb7c62f5f876f5f154689fb6548800c39b12a8d1f2585230fc372dfe5bc46a4c4358fb1ebb547796df094800159f2c9d982d61666d8a188e3b665900ce8f564188f269b5265d345893085d41f43a030337dedcafbef1245fb43c6c44b9891c2ff5f157069435c52c7fc457d5ec218f5d2ca50e69cae88c863b56e53213d92d7f6357a56344a4c2b80b58249b494d992f3c78d7440fe6b69d32ff3c1c29dbea8d0aebc1347743dac65bb66529f27dcf476baa3774d1e5c69ddb8d7fcc3929148c9c5995e8b893997b8d9362a715543e06361e29e0c194d3b2d59319837ab6dbd209d099fa04236c25d177a02c92c0a3c5135f246bf9fd884203bc47005fd46b235bf0b462dc754e99647a2302e0c032308b592b1f7453084e93eff658eb16115cf4d24f229ed8b13e073e1233b0bf4eb9ba69438b310735b100f5c49673995ae6958b9382a2070db0cf44b200ce7103375f72fa72c5a51a38760f68db7a789f68fa7bfb672ec0678c7c352dc9c5c1805fabb2b2e1dd89e2e748bba9f11681e33321784b89e8a3beb8600e4ccb4d72a05d067a96a9c39e5b10f379b95649134f15a22e6f181d1e44b46a122a8b375d43dc2f41517fbf2922ed696da5cc61c267e64317d467ed0d0464f06d2d82c110134401f612203c6f33984c615224478b3a1774ccf7c8b1cf3ef697296412c020f5a695f1e04fd7c963df5abec644f339e043bfc42d90ab6236cd0e9a4f7307063b65d447aee56bb116a0197ed4a9052ed97f11e5b989311b6d224ec284f94e02c864cdab368d6e00aae2405364ae9087f32f6ea4a6b80e83fe329db9c4c5eaefc0190847c1ad6087dced29d8ec7982cda88afe31468c8df32062746a2a07e8b537a93c3bfb5acfb111310516ecde7e0ccd7bb78fdc036de4ff5391a596df325e3d0a5ddab556052bab500dae358d641874703557f3f480596b0af14c56aab3e5ee6cf8f4c831d2dcf61f6e86a53eae177c3d917052448ca02e4f287d0f15ada519f3780d118377825c98f0ad02a05dafbda86c240aca3dde537dd9118a0baaef8a2d86a8c1dbdbb8f9ad3f034c592622a9341ce3ffae459d1bae3cab2a9dcf8f3bae9d707b01bdc8e0b3d7887c82e9d39312f2e5ef95017908b0fd0976b0216b1af40d5ad29e40271492e3d2befa613b2cbc0965ceb84c76ce4c8c26f231e5276a628dc5d641e0661b794bcc6b7669438a4155375913694480b2ebdb8b10cf35167e059e00cf353e11dbc7ed643cc8ea70edc14bf61d9c63c8b697fbde0b7af9fa92ebf0223662fca9a14bb4c614ed36e45ebd98f81725a11da173ff839ea8305dde22150214a80e4737a01", + "data": { + "slot": "4608836906367614699", + "index": "4547695001580498185", + "beacon_block_root": "0x95c9163fa9b8e5a07382c4a8ca24e64fab3f93035e00f87325462db67031aff2", + "source": { + "epoch": "529806126", + "root": "0x6f87223f6921271789fcf5512313bdb59e3995dff16ea6ffca43a625bb6f40dd" + }, + "target": { + "epoch": "528651879", + "root": "0xe24dff3e29e762b4488e615619483884c44b8f4b37239b5cdc4a3bd7d9b48c1d" + } + }, + "signature": "0x913ce44a60f20df0261b53d8031d13f3a8d51cf53ba5eb65735ae960623c48acd56286b31ecd74cdaf51f66b2b2331fa0e907e8cb9d4dde513ca29cc34ee9925301bb541055a8daef33bb3e1fb8442a4a033f93f86933bc35fd2ce34a569a6ef", + "committee_bits": "0x0c" + }, + { + "aggregation_bits": "0x5af41da977c357436d6d5cb611972dd4dfe8f24fd986cc3f62b8b2cd6df1ec5d9fffb58969a144cf75aa90897ecee335edb4c087e9cf844a5ba6e2acffdbf07aca6115072cf6fd1e908678cac3bcf3c62d52094d87dcbe66db7b6dc0ef11c7f20a749a5a9cea6b85febb7bab94425c81a2ed6d53d42193e9dcfb3d415dc53b6f872f5aadb7d10201f85dde8eacbc9e87b72f9276e6c0dd3a244a3676c184eb46a216ccba47432d0215454f42d2777ba28c79e38f492e6d46d1b065553f901ed99d7375c5ded4343dfe42a0c6b83cdab8e223ad328b39f46d8a06e1ddfc6a3ce6cfba7a8091749b4de6a9308bf9b3a3c418702fa32bbda084033b12c09924304b14b96ec1369061fb13a3aa0f2233b2524c86f0ecaa7f282aa0ae59437049b8032f60be842d4e0a033509f61cfb418da0af682a173cb8c1cfbc4876d1eb14ab9a440068bcf38a31f4a9021a7129ca37b456c95f016272a17360123acabba0f54923fd5d1bef78786c92215fbdf2146838e8f752a20da1b2472d7ef6d80cbf0455253c9135ab6906022beff98c7d2f98c6e64b5b2fa0dcc78e46b76405edde55eae1e077e4fff69b5a892e10ed73d4767aee874d2d3e0c3fa226f35fa7ce21cd0480b839534220b3cdb7dca9d7dc4f3a3762f82e7bb54a57c2fbea1063637e01c5242b1e0bf51473233ca9bff61513432a56e34ae6ce73bd6225f3847815676c06bde9f686abde54e8930700f645dcc9ca8af8607bc0d1c490d281449bcf65fa22374631272eb06bc53e63c06082c648a356f3bfc450cd3636983d04903a36680c965f2af41323729233480b6f8e7640dc4d0a3c4cf619b86dcdc62410c3400c2004a2f157338766e3d2fe039e733042f3aea833abaafb5ef7dc4c1ed72ec4881b7c7c178bcfeade55329e93ac81842e6758136d73335774d66ff8c925f77e1d4b7a09ee44c6e30d506cf487c747ac10b92528e85f5702dac422013541228c6e0099e1df1e7018dcee8f3d36d5fa51394c95d1a18f51c6db2581a3f71cf21882713ac1c5cd58db94168db50c2017c2c8c81071d6cf68a1d0458b4965908d1fb6c4710c50b74b3cef02e77919acc9029d9f9b866e2a90dcab36cbbe84fd9e4b5b9036d9baba000eef655ffe64b9af0e79b28657fefdc30a107f896b81d64b92f01b71f3ccfc4f8cfcad286ac1e93f52d08b5c9b00b0853b64b4f2591cd55042ac5635ebd811f4934ec05a3ff82a80b8029779d09f1d6c3249037381d16363107158a53548d75a80fab67a4f7374855feb3ee3e8c7109afc0d58a9a5309a601ae0435dac5bf21f0d38d7c811dcc413781e7702f0580bfc9d4dd18639bacf84c7a2d197341bd53ddb1e7fe0ec44bba8c45a4ae2dfa564414fd91b436919f251619df1b0eb2899ce45720e7f542b437b902bbbfcdf1e778af073d08fd2e6504c9b9c8501", + "data": { + "slot": "4537780097985426121", + "index": "4536127614768741993", + "beacon_block_root": "0x6735d63e89f87d96fd623486e205c81ff060884934a0b8731dd31351d25a90e8", + "source": { + "epoch": "526920509", + "root": "0x41f3e13e4961bf0c12dd652f3bf49e85e35a8a25c70e67ffc1d08cc01d9921d3" + }, + "target": { + "epoch": "527305258", + "root": "0x51977a3f0ab3110e2a10e9c6bd0e89b1410ca45142ac42171bb2b169efc281bc" + } + }, + "signature": "0xa17225b5e5319618e77f5b93350430acfadd8ae12a279f1a4176cc7ad1de7ecfc8670988519713fbac8f702cca29bddb14ff1463dae3abb53ddb0c025cd69c8cfb0f5298ab241c06ddb840c7a260f3dbd37120826b13b17e22d086148ebdbab1", + "committee_bits": "0x02" + }, + { + "aggregation_bits": "0xf8d3f62925333e71c92b5989e48786f9ea8582ce5679c63ca0dae6a3948750814066f18bdb3cc2fded5d81f2ed6c784e8c2e8c42fa6b0c3d1670b4069c78cd8594c1547facc8fdb19696b11475dc3dd1c7499aea330b9953f0ccc4fd30f3de2c71ea6c42d470865d80771c74e3110239efcf4108a58bb05efef3d73a2363dfa582352640000c12f848be2c6d52be43d4fa5cab16a2d0145bb687d29ec894d64b389bd2fc97a558570aa151b89194980ea7b2684b935b51e49b71f6cd0641fdb62abb914bfa03b7502414b5c792be5472d6be3c130e030f194fd234650e4f1f3f1ee6c722096fa58c3091e5119eebba839baab03347552015fe40ec788f2b52815cac78de375b46ce120ce3eab28e05810094a1a8b461829a28c89c55abd7e8a0d0a42c23e127da6bff2b17fb7bf6c7cf4c4d5cb2dfe9030c3d2b01dd8cfbc0a387f8309c9ca604eb42aa8105a78199bec145010ec3e8e7b7948a10105c1885561045a3c4449b516d2734d8764320e3670187797901ee459ba0c22bf44cb7975134eb59de969155812ca98fbd1a37ed645720a1fa76f565291b3bdde819dbc89fc2e7376b8945ff35bc69dee5e2f99d9568dccce8933b85f8ff52ee4134ff55d319814b6c4b9a89fd9471fd16e4f90cf6ebb3db3051cd0a08021eb8bf3b56698876d79ed5af7054d75a0e3affc78f84e041dad2045805d90764e34244a32620a2cec1c7983f541e1c7eef01f57f8dd4ce9efbb685910b0bb79cafb313cd33bbf03eafb006911d75e1da95c6a84b34ad6f2af08a27bfd27af4b355161362a3e9735175eed49de10158098dc86767aa7e64b77a9dc2b597ff61131d32acd2471af3140229c8b80831be7ff99724684ed7a348f28e55e9ab05cf80a96779c510ce6ed83da51d98f4baede14ab484100f343e5575e94765738b54768ed2e723cdfed7bec02d4eec688946a82bd59a6d21f7e52eb81edcecd680e217ae57ec734138832305149e67992faf46c0835d4befa0b29c48a2a651f289aa3f32417adcfdff9ac79e272abbe61321e11a3f28d6f34c929b5990c3543573bc8d4f8c28b9d350fe2b3a8490c3e5c66849baaee592d4adc83330b17ea4494aff7af5b793c94df8fd58b4ce2012d08a60146d7f7904d1607c989b791650cf34d91b4710a9a953a628098c96026eb949e0778407d0bb2d13f1162d4d99f8db17cfec40ff447434ba34dadc4f4172e1c5490afc529acf3c5fb2965836307bb0db66c1f50a6e8d6dfc874f7391f6dab98d37fb1380e3cec43a338f523b3e7337730fbad50f1dc399e6f61c47b93f65ff7d841308b2b82b2d72b744761e3c68202699e2848abd5b5e598ae8d0e8dc78418f5741239d79a62389e6a61802fe83998583ee089555cc1207b61b26dddcb2fdff3912a6d85ed4671bc71fef7e1260b8e11aae5c343796d5f64f01", + "data": { + "slot": "4565872325553958186", + "index": "4570829775204010570", + "beacon_block_root": "0x8afa683fea95afdc0ad91e4937a9c6185315a1076506bd45a4357cc27fe5a75c", + "source": { + "epoch": "530960372", + "root": "0xfcc0453faa5beb79c96a8a4d2dde41e779279b73abbab1a2b73c11749d2af49c" + }, + "target": { + "epoch": "531345121", + "root": "0xd67e513f6ac42cf0dfe4bbf686cc184d6c219d4f3e29602e5b3a8ae3e8688587" + } + }, + "signature": "0xb86aecf4e9673e9ac774883f03c46c2cfe59320e441abfc2e2bbaeda2193f58c57a3aec0ae63ba17d3b1cb81bd548689004773c1867cf047e1a2d5c3c51973fca33040cae49bee51bf4d2e23786f51dc5672bff5e9df8f7bc5fadae6be5c146e", + "committee_bits": "0x06" + } + ], + "deposits": [ + { + "proof": [ + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27" + ], + "data": { + "pubkey": "0xa56023832292eec3040299a0164c844769e854beba275c44e4960ab2da7ee11db36674e1e2fa2615bc5e247a2759a472", + "withdrawal_credentials": "0xe5ca603e08e1eff7259e45ea6bb662256d9d74b1724ee8feb0ea59f6e2ebe3be", + "amount": "32000000000", + "signature": "0xa9900942897c434e743c2b0210ec3266920ec6a624ed13b3637c640c7f79ba57a240a7e6a48cf587f71b9007616972821680ff0ca62c4cd47d50145bac76df28d9fbf3f56c98a5e8bd61b8cb41bdc02e3179ea961c2949c0803c108425dfa29d" + } + } + ], + "voluntary_exits": [ + { + "message": { + "epoch": "4498120483605137864", + "validator_index": "4493163029660118184" + }, + "signature": "0x86e947b46923b26125a7dab3240481ddc1b910c1e6393b90df6e2de3809b8b35e450dc8264ecedd8f6bfc736e7114d841428b2469441d2d1d501015eb99e0d7090f11a1185b566dc42f94b79d0a08b22718a39b57e912a304419361108434ec8" + } + ], + "sync_aggregate": { + "sync_committee_bits": "0x01000000", + "sync_committee_signature": "0xb2c1728d5efb4c0577aff84d84d5b0b2a89c22e1a97f2fb468442a8c2f84eb0912077b32ddd66ac5ce05168ab26168e40ddb8dadbed42b229c34e78cc757421908ab6159082952a43133f5333ad2f8382930bead6ab4f0e91c95ed9c66f634f1" + }, + "execution_payload_header": { + "parent_hash": "0x7ed3313e083eea1ecfb57f4508fd068e9fb56c4125942ed01ef47538b5f29e14", + "fee_recipient": "0x91f42b3ea889c963c4f8e670db851b5ba5b86bd3", + "state_root": "0x58913d3ec8a62b95e52fb1ee60ebddf392af6e1db902dd5bc3f1eea7003130ff", + "receipts_root": "0x6bb2373e68f20adada72181a3474f2c098b26daf6fcb0516f0723270da91e789", + "logs_bloom": "0xcb571a3e876c6732a4c11cf3562059c2b8c16889ffb6d1b8d5f883591e767c3fb46dd46047448da9f4783626721bdf9308a2cefba364d5b6b2653a014d0c2bf6f7722e4c3bbe594bb639fb9b0489d49f463e19d5547ce33fc497f70c977a3205fedaf8ccc0bdc1801c8a18154948c8e670813e0c98f6e92e20d4327c71f2de5e7aaf1df92739504e383a1977928614c2078d5a61289ac612f9e3b08ea9406604db94fb2a3424f245843ce722c6edaaf79085661b750ed7b62cf57a68de63b899dbde6c169f2a65bd5b0e808bdf22c850136f4c1421be8865b50aa17c03735c41f4b4ec5a973ad30c7db09d4a6894284b9f19eafb8189121738fda9d6e0d393f7", + "prev_randao": "0xde78143e27b846779904841e2aa96d8fbec4671bb57ffa72037ac721f8d633ca", + "block_number": "4478290672120026440", + "gas_limit": "4476638188903342311", + "gas_used": "4521255257228650249", + "timestamp": "4519602774011966121", + "extra_data": "0x8e77ca3ec98f3c20e7e802dd8917f1b9fc66866da0310ae878d59ae1871cfffd", + "base_fee_per_gas": "73092283800700793286468708950267523415056945357667839430375913972420161943176", + "block_hash": "0x003ea73e885578bda77a6ee17f4c6c88227980d9e6e5fe448bdc2f93a5614b3e", + "transactions_root": "0x135fa13e28a157029cbdd50c53d58055287c7f6b9dae27ffb95d735b7fc202c9", + "withdrawals_root": "0x1f2e4f3ee8c38dc605677b6ce650a08c7fa6716795a8622d396e244f710e0a5f", + "blob_gas_used": "4517950290795281992", + "excess_blob_gas": "4516297807578597864" + }, + "bls_to_execution_changes": [ + { + "message": { + "validator_index": "2996764", + "from_bls_pubkey": "0xa2cd8bc71b19dea2f97e5918a5ad8205b4937a07537f9d84206f15ad383c25e65249dbb53d559acb700bb4f59297896c", + "to_execution_address": "0xac67723e28fe512946d50f68f01b25be5a9477fb" + }, + "signature": "0x99f5bc997861976d73013dd4c06f42a2318912e5e075a2746840bb34134e7f4765ba88dec12f4bd5d2fa24d7bc2c17ce105bfb796108064499faaa4d4b3e17db6e62bc88f8e0a6243105b01c00302c3d9f81f5e790d6a6951532ac94c19d1114" + }, + { + "message": { + "validator_index": "2164897", + "from_bls_pubkey": "0xaa4811100ca7dc5c90d84205000ffd9d70eaa3c650ff0391ce7c3f5eed59f12e4ac5e080f4ee6e30354294ebca28c93d", + "to_execution_address": "0x1cb989437169ae6f9cc483c46a7456e6eff45260" + }, + "signature": "0x833c3424606fa52c035536e38b8c677a1b922a8d35cc38b55e6f057725893ff621d9f49153fcda3af9d7cde737ee0c830e3189e94a62a8d655c328f7b3c77142c53a3e9f6029e16d22ace761f8e60f4b28f2b487821be3272e1905598649f1a0" + }, + { + "message": { + "validator_index": "1780148", + "from_bls_pubkey": "0x98d6103215e3916a0cff3af6b6f29f22374a32d87d440a302e18a9e2daa80b32a2824798030f6a2e06ab612b07c41f74", + "to_execution_address": "0xdb034f43b15d672031628c76afcc23e92d134914" + }, + "signature": "0xa2f3dc0cbadf0807f2d864d0c98c2e474972419b1ef936d0c68976eb732a146c8bd86194e95381d1b9245530b1f138cc0de425bd6478bc56a394619e1192a114680c4e9f8b0278816bd4f5df9e24cc31ca73cf5eb26da54eebf958966d4a957f" + }, + { + "message": { + "validator_index": "2856403", + "from_bls_pubkey": "0xac60d2ec631e27b37f4f5541319b94c8cf82299d71ae4139039cbc1d0c30c71a075cb62166801ccd0a56f0bc29edcdae", + "to_execution_address": "0x01464343f1f425aa1be85acd56de4c833a194738" + }, + "signature": "0x818852c88a6e16f2294cb51803a155dcac4f6ec5ee0d095e8890be8907201ee1c8790abb6d5f05faa2b3d8d9a03972800a04fc1666d877c7cbfb62c387d6e119f8f827ea2ba94d5b6429b33d6f3770b79999da3cb8ed17f2c8977234bd2a1cdc" + }, + { + "message": { + "validator_index": "2627637", + "from_bls_pubkey": "0x92f00f85478ad1224c1be3a9b9230444411e9a2beeb6304e5c1fba1b7b54c9ecc3965abeb3385e4916040260544b2580", + "to_execution_address": "0x5d6ec4433175f5be08277b12261c89e3b0d65cac" + }, + "signature": "0x8b13ef837950d00a469eae427c1fea111ea85e0dfd63c09bdc02aec208523ec4c805595639d50e183dc893022f60abd8118d62c836b6d4de057967f80184532c1c3a25b26c51926a07e55d2ba264de6fd22eb0665668cc7280bbcdfdfdb3c0b6" + }, + { + "message": { + "validator_index": "703892", + "from_bls_pubkey": "0x8939b0ed4fd0659427739e525d6990c02614d703d12c5adaa5f8aeedf64fb9ce66e769d83f9ec61ec05c6074d5095955", + "to_execution_address": "0x83b0b843710cb448f2ac4969cd2db27dbddc5ad0" + }, + "signature": "0x8f65a298124021cf26323bea9328da795a7f2134f42c21e28617a1b663c568058fa3ddff9a71948362e7380cfb591ec9062f735067b1a32bd2b88e9c2d5c3404348a194098c30f55f8cc050b305bc4c2baeb2a6e4ab1d49833bd7ec4943367f0" + }, + { + "message": { + "validator_index": "319143", + "from_bls_pubkey": "0x8f5f289f8ae538eca9f393fd7ed1a5432ba4c145b700075d1a8ea9530ec8cba3b91511e78662d0f2bed026a1b86d6d2b", + "to_execution_address": "0xa51dc242b07456952ea93a8886a01023c35b31c4" + }, + "signature": "0xa23a1e6d9410ecb12fe95fbdb3b12962bd46855fa46ccd7b2fe75696cd4b1788302d6fc3bc1c1bc6f8080d0025b3fdc9139a3b141407213b8123563622773e9b385473bcd03f149b0ea21e52626382dba56b95a2204178c2c454001c79289afb" + }, + { + "message": { + "validator_index": "1239417", + "from_bls_pubkey": "0xace9988853ce03390f8d5c93fa51e3a5f5b056bef4ed1f437a86c59fb687be25d0e6f4be5beeec4bc04806e93c3eebf7", + "to_execution_address": "0xcb5fb642f00b151f192f09df2db239bdd0612fe8" + }, + "signature": "0xa0053dab17b7e0ba64416b1c95b6c56ecb7f39ccc272cd57a347054fab6781ab8d834eda1a4e57ac5b037d3b71945d1805216ba518aefad29922f57f1b3149151d4266ae944b579de5399a209e482a19d3fd7e9c02069e7a01ab2e9a59477326" + }, + { + "message": { + "validator_index": "854668", + "from_bls_pubkey": "0x85a2763ffc316d21106869ce72f88e6e5aa3ffcb84689aea186a7de5056f0fa98f50ce3bcfb8a96d33585c472748b014", + "to_execution_address": "0x8aaa7b422f00cecfadcc1191710a07c00e80259c" + }, + "signature": "0x84ff1208ba8c36a14bcf8c5d3c9d9e22dd6d69f7053eaba3ce96cf7ca324ec3c3a2bd097053788b7dc64d7dbccc30ebd07fbaf41e95ae397751f8aadbc4d84219038b55e1fb3785a8f7ceebe05d629ce2c9c407bb9be6c66c0d26c14b3a7c3c2" + }, + { + "message": { + "validator_index": "2086906", + "from_bls_pubkey": "0x8f220bb09673d250a17cdd562f33ca615e83e293a43e1313a9c3e9438c218cfa9a803426d29e9bffdd884daecf7e0ac6", + "to_execution_address": "0x4dca2b437023a3bdf0f3f77aa4019fb753254380" + }, + "signature": "0x81d6211b8ee9652820795832982520799ba2eab947083a2c6e56d9cdf1e678b1c1a6c8a108ece8b1c23b234a208e6e281477d55c41fc3d04027032277fa0922a0370e76db742037a0688697f618b8b7780cbfb3725f78bf9c5f94876d9d1957a" + }, + { + "message": { + "validator_index": "1702157", + "from_bls_pubkey": "0xb63a024e98bf28daf9bf8bdcb7c89d823f29e65e362a923afec6c78aef21559a12d2c5cdf81998630ac418034c0e58ed", + "to_execution_address": "0x0c15f142b0175c6e8491002de9596cba91433934" + }, + "signature": "0xa386f611424c8ec936f7ef72da9d526823e3bd03f3452131910b7c5ae646a989c276001faa9398ff3ce9050cc0282c5003ee9357b8485f4c52a4321e9c5150d39cebf18546badc0a22d7d881a08bfcd1e76c4a7c9c8cd7f85da5270877698c7a" + }, + { + "message": { + "validator_index": "2778412", + "from_bls_pubkey": "0x90961673ed2682e726960a035e0d1e050ff0754225f97fb7501110e474cee35f7ed1bdeb70eebc97a59abbd7217bc691", + "to_execution_address": "0x3357e542f0ae1af86f17cf83906b95549e493758" + }, + "signature": "0x9590d1d0c5216aeacaa19bb58a4a66a6430e554a0b020e2977be2421bcd089fb47bccbe10f2baac88dee33fc625dd5441217042918ac793c0aa2aba45a379decdb018b7bdd277f2a66b122a95aa1974cb05208e00801ed52f7f86b671c372e2f" + }, + { + "message": { + "validator_index": "2237681", + "from_bls_pubkey": "0xa63d491bd47a8f4caf987b7a22f228dc709f8f4a0d8ac25ed72a18cbe2b2da7662daafbe182b33c81e14eac70bc2f0d5", + "to_execution_address": "0x55c4ee412e17bd44aa13c0a248def3f9a4c80d4c" + }, + "signature": "0x8e4e43252f668d04559aa2ecf1ae7605a054c1fc2d5b0a9b77f9b091b8fd851ef5a02d54ed31a66053144d0319d8f4ac11185d05cd68099841cc554c99de314a291e83c4bd166b924240d4851d8ff63a05c62def40f8b839f087a60db6ef5172" + }, + { + "message": { + "validator_index": "313936", + "from_bls_pubkey": "0x856c75ede282fb092c2c5ce1511945d4eb5026a095e7ebb8ab6a231ef8884390141d100ecc904fdd58b1f2f0e07b1630", + "to_execution_address": "0x7b06e3416eae7bce95998ef9f0ef1c94b1ce0b70" + }, + "signature": "0xa31249a2500d0428a2b38100b6db1191f1014087af8e58cdc025e28fc9e2aa5f08c74036c1c99b5e6b9f96c250700e2505201e2d4657bff1de53e01ac3c28f2f6624da4e953c9d08b0011e547902197fc5317daa051526f68684f16e1608ff33" + }, + { + "message": { + "validator_index": "2929187", + "from_bls_pubkey": "0xaa842a4b0acf1250c953110bfa6025bc646043fc268749af5274dd0197f06eafd7f5ec00e2d21a01b8a420e8178bf74d", + "to_execution_address": "0xd72e6442af2e4be382d8ae3ec02d59f4278c21e4" + }, + "signature": "0xa29e82672b9b023ec4496bc5ba26cd0e12ae4e168591a2412dc2c62cfbf0466710810999921e34e7249e3a4700c837ec115bb6bee111a50c55a1af9d2f996bb6600a4767e23781cf4eb177845372b39df6156906f9e24c5b908920161a44d8fa" + }, + { + "message": { + "validator_index": "1161425", + "from_bls_pubkey": "0xaf50133072b8d7a0ab9318facb15087021cdde3205929004ecae6df99d4cc111517fb629146398eb345a028d413624ac", + "to_execution_address": "0xfd705842efc5096d6c5e7d95673f828e34921f08" + }, + "signature": "0xa34048285c5a03bac9edfcf306e845a8cc0f8e7f7b4c5590dce0146b30b5a4d6340855b4384b53cc72b4ac5bb9b372590a7f7eca40e78ef3ae9b0e9dfe020abc94d161627ff642df1386143f221aee8ba432f4e7affa7736c65a01e6f342cd4d" + } + ], + "blob_kzg_commitments": [ + "0x36d44642cfa8a73b4c27b317e2d9bff5469b1cbe5c05d35f4b2286f9dd9a1da1edf7f9ff3b52088c513683aed613efc8", + "0x49f540426ff48680416a1a43b562d4c24d9e1b5012cefb1979a3c9c1b8fbd42b8517c05e35b3e879984ec65a9ddb52af", + "0xa99a23428f6ee3d80bb91e1cd80e3bc46cad162aa2b9c7bc5e291babfcdf69e17bb59e3819984a1ffcc715b881c2452f", + "0xbcbb1d422fbac21d01fc8547ab974f9172b015bc5882f0768caa5e73d640216c13d5649714f92a0d43e05864498aa915", + "0x83582f424fd7244f213350c530fd112a5fa71806352876480227941a471efbcb4c76127b24d689436e978f5ff3327e62", + "0x96792942ef2204941676b7f0048626f766aa1798ecf09e0230a8d7e2217fb256e395d8d91f376a31b5afd20bbafae148", + "0x594150410d114a888823a4369a4c1e9b4d1af3b146f383eace5399d4b17e3363cc267b8c513bd892003285f184da4d95", + "0x6c624a41ad5c29cd7d660b626ed53268531df243fdbbaca4fbd4dc9c8cdfeaed644641eb4c9cb880484ac89d4ba2b17b", + "0x32ff5b41cd798bfe9d9dd5dff33af5004014f58dda61327672511244fcbcc44d9de7eece5c7917b77201ff98f64a86c8" + ], + "execution_requests": { + "deposits": [ + { + "pubkey": "0xaacb0e7f3717c59e23c32cb07ce03be33c2bb8366da2d27a9954b77f2c9198a1b5f3aea585faffcdfa4800b592c4d5d8", + "withdrawal_credentials": "0x0100000000000000000000007f8344414da8081272a9728d415e47355920f1d5", + "amount": "4701376009451598829", + "signature": "0xa9bf2689fe47ca9ac1fb90da3b08259115adab480b4f387669f209ee7747f7451af8f61e4a9c057bc33ffc18f0b08c3407be0a59b8c61c741572f5d28e2a1f6af0fc17db7c3f48901c9267606c3d7831a3d3647b885946fc95fb5689d24f7b8d", + "index": "4691461101561559469" + }, + { + "pubkey": "0xb8fa03e47468016f15b89212a91f203194684e0cbbac07b6cd428fc7e10cb7d8a363985b46972eedd7bc434fc701c4b3", + "withdrawal_credentials": "0x0100000000000000000000003ece09418d9cc1c206477b3f86b61438983ee789", + "amount": "4684851168694822957", + "signature": "0xa529495633ab9ab138c0756646074fc7753fafbb44389490ddd46048f29267f6b85e46abbc1fe71c42fc98513ed0f6f800ebc9eaa04b484e29af7d7bb0c38b5e088435aee8583a812545b3057c184a4634957604ec0647d1fa81da2d15a5f198", + "index": "4688156139423158509" + } + ], + "withdrawals": [ + { + "source_address": "0x01eeb941cebf96b04a6e6129b9adac2fdce3046e", + "validator_pubkey": "0x97995c0a4cf28bb77bfea20753ecd1e3b3469492921c9542d99a1e81355f6d09ea4cbcb35e3b8f1240e8261d20da657b", + "amount": "4726163266291795342" + } + ], + "consolidations": [ + { + "source_address": "0x60939c41ee39f30814bd6502db591331fcf2ff47", + "source_pubkey": "0xa4a90125ab79fbbe706de307f1de84a6b0dc21adef413c6a5e91ab58e575164bd13c0517a318394a56adab9326607e82", + "target_pubkey": "0x83feea64397a7a9d3fbac0b9a16ccbfd63c4d4fa5d0fd8bbfa13739148e752ce1e9b1e01654b56cb56a196fd8d64db3f" + } + ] + } + } + } +} \ No newline at end of file diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/v3/newBlockContentsFULU.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/v3/newBlockContentsFULU.json new file mode 100644 index 00000000000..9b7d91041b9 --- /dev/null +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/v3/newBlockContentsFULU.json @@ -0,0 +1,439 @@ +{ + "version": "fulu", + "execution_payload_blinded": false, + "execution_payload_value": "68528524947898482245626587218140549377996721132996815943128004863989176842092", + "consensus_block_value": "77180733630415606160778360224182193780458495317001054434989722698587561029367", + "data": { + "block": { + "slot": "1", + "proposer_index": "4666673844721362956", + "parent_root": "0x367cbd40ac7318427aadb97345a91fa2e965daf3158d7f1846f1306305f41bef", + "state_root": "0xfd18cf40cc907a739be483f1ca0ee23ad65cdd3df23205eabc6d660a75d1f54e", + "body": { + "randao_reveal": "0x9005ed0936f527d416609285b355fe6b9610d730c18b9d2f4942ba7d0eb95ba304ff46b6a2fb86f0c756bf09274db8e11399b7642f9fc5ae50b5bd9c1d87654277a19bfc3df78d36da16f44a48630d9550774a4ca9f3a5b55bbf33345ad2ec71", + "eth1_data": { + "deposit_root": "0x6fdfab408c56b6105a76eff5c0435d09fc6ed7a938e7f946cf74fbbb9416428f", + "deposit_count": "4658411424342975020", + "block_hash": "0x499db7404cbff78670f0209f1932346fef68d985cb55a8d27472742bdf54d379" + }, + "graffiti": "0x0000000000000000000000000000000000000000000000000000000000000000", + "proposer_slashings": [ + { + "signed_header_1": { + "message": { + "slot": "4661716390776343276", + "proposer_index": "4600574485989226763", + "parent_root": "0x32a7d23faa44fc04cc23dc3b560a55ade3deb2c393e9de2e6d20bdad2416c39b", + "state_root": "0xf943e43fcb615e36ec5aa6b9db6f1746d0d5b50d708f6400e39cf25495f39cfb", + "body_root": "0x0c65de3f6bad3d7be19d0de5aff82b13d6d8b49f26588dba111e361d6f545486" + }, + "signature": "0xb520c40e02457e0d3d61ebba3b04912f7db82a9a74132fedf190d94b32738dc62744644455959b4b4dc7aaf1e54064fa0f4aefe30696b7ed758c921d266402360e9abc003374800cd2aa6ffaa0c11a5cbfb3798b1816bac7be1e0c67c3305483" + }, + "signed_header_2": { + "message": { + "slot": "4661716390776343276", + "proposer_index": "4600574485989226763", + "parent_root": "0x7e2bbb3f2a737918a12f79e9a52da7e1fceaae0b6c0c82172425cbce8d99a0c6", + "state_root": "0x45c8cc3f4a90db49c16643672a93697ae9e1b15549b207e99aa10076fe767a26", + "body_root": "0x58e9c63feadbba8eb6a9aa92fd1b7e47efe4b0e7ff7a30a3c822443ed8d731b1" + }, + "signature": "0xa01cb4e18fb43a400024b67cd091680b8412ea66ed4a0d41f7ee611a87476d153e18879e22a5dbc98df9ea4ecd016c1801f1ee9411e103383c73c06cb5331b8377ef8f2f4ab67a4975135a59d9121279f9d979625d78f339f71aaaec565911b1" + } + } + ], + "attester_slashings": [ + { + "attestation_1": { + "attesting_indices": [ + "4585702132744102314", + "4590659586689121994", + "4589007099177470570" + ], + "data": { + "slot": "1", + "index": "4580744678799082634", + "beacon_block_root": "0x17348c3f2ad0733f4b47b34442744b4a2e03a79b1f52c8e8922ee71060a05b1c", + "source": { + "epoch": "533653615", + "root": "0xf1f1973fea38b5b560c1e4ed9a6222b021fda877b2c07674362c6080acdeec06" + }, + "target": { + "epoch": "538655350", + "root": "0x00963040ab8a07b778f467851c7d0cdc7faec2a32d5e528c900d85297e084df0" + } + }, + "signature": "0xaffb36fe3e48b5c29794f85515b9a3adcd4206fec6dddac6926d0e985d96a9ade0e427f911d56dd90f2644af13e9740509147d149defa9b0763eecba616e0815e9a91c25178860be7d4196a9814781a4576ba7bc6398ef16b9bd5f88c4143bfb" + }, + "attestation_2": { + "attesting_indices": [ + "4585702132744102314", + "4590659586689121994", + "4589007099177470570" + ], + "data": { + "slot": "1", + "index": "4628666713557758827", + "beacon_block_root": "0x3af91e408b6da58558bd9d0797174a4392b7bf5950b8ccba1a914f820d2b7390", + "source": { + "epoch": "537693478", + "root": "0x14b72a404bd6e6fb6d37cfb0f00521a985b1c135e4267b46be8ec8f15869047b" + }, + "target": { + "epoch": "538078227", + "root": "0x867d07400b9c22992dc93ab5e53a9c77abc3bba12adb6fa3d1955da376ae50bb" + } + }, + "signature": "0xb7720f152c38d7172a82186892a68440bc4d285cc8aa92c1f017f93d5f61a29cf51670e4f944648bd8df82d4d6eae00615073d439389cdf35fbd7670a07ef8407c7c71a16be062fff16f351737ac99f006817ba43a295fe5286dfb4ba7116e07" + } + } + ], + "attestations": [ + { + "aggregation_bits": "0x88e3aeac2cb7509e753b73880be4e95da67b35193a1a8d916d3a5f3b61c59b6d90d866ae7ee81a10a9ea025ade39ad5b978bd20bd2d2031d61e8aa7b5090b08248dbcac0698c25ea7b858ae37e5347010aa764962e4f70513d9e2488a9808d0510dcb3dc9385cc9c28ba4a1eae314e5c3372b3d2387836dc0750553f84b1b490b7fffcb2824b614596050fa2ffed45b30b7db4e67cd782cf0446b5448ed43cb01991cde29c15b0a29dcafdbf29840045c4a3d7e58b93ff391e3ae281185e49aeeed12188548d0dc8e904edc1c8a9831577d08b0c708dbb1784cef981e8363efb46d26f039c2561792d1a2e81218eec593aefaa25bb280fbdd25f8103381a51c68c23274f6823e00a776cf24cd4a2e4f71b6bebb58a01260798a8796d4b7af980315e35b8f0972907a4230ac6548fe53526e689dd107cfce096ba37d3b7c44a0455c0b9b91438772c83163954ac65667fe06e542696b01ee07a901c63648476bdd98c6c6f2a0e399a6f665f52e03908ad32ab30aff1b9311778645415ce6eea979da08bb81cfb630e182488c2a11b91eae07f6565fc214f5d1e4b1c0503a250a326b669a4086e9e84a703915977674e887149f71bc51cce3832db04fbdffa54d0cd93dc9586c1f9e58c9a47d6182e598cc16181b0573e46db02d9fe9c67cf8ebd732f30e4244405daf5d33bf5c1e5cb3a8b669284f83ce44668812eb3afa0840d35d418b3e3ff522f7d6fe70740d4b4eefa59b793e0e8b32b606c8f59187b387cc603d78083d2591f47bb5e0049352a4dfa1d962c817775887693bb8e38086cf7c507795662d237d8aa34b910e9fbe4bc8e5b7ab44ca62e71936918435b4e90c9107d5ba3d83f43bdbff6fc028f100025b118ac2849a1f5f8d6870f4050162783c2ab7ee69c4f50c89474010aeccb0df10375b21e9d059bfac0064be1686f3c1fee2f31a52aac5a3af5762c3c5f8ccc7138685331831fd53ca19f61e7f0616aed8e7b60b66244a7734233b4d607ba4540910c742f522e9dacea4e30c7adf86b826295f93e1fac0b201fa3e69c709add5810e1bbc857af6378182e8ef0db4e9a82610c29890734f1d9d2fe91f68c85fffc0c397de09540abe76303a56715e183698d770b190df0eb1a3fba85d2619abac01f717c2061b6ede95c0b69ce21d13b1784f6f86128d015269aced183dc083c68aa2f932d5d7a13e75444c00671e3594287c5631cbed286a1ea25aee7613d09b0cbd7265df0bf07e0cfba012f834615d2a9ec8440611d065ba1e391ffe9f85f60a7cbd945057c2dea25dc1385380573b1725cb6866eebd2594e02b020f45caf16c8f87cb9e11309991c8d24664f7e725e96e2c646874ffdeeb6ba938a92b94e574077ab719d8d2e7cfcd6ecff73913bf27c3c82e868ee829741fcd85b0ec6a1f2a18c887a1121f384a32bf6e4d182da0301", + "data": { + "slot": "1", + "index": "4615446843529318507", + "beacon_block_root": "0xd301f03f8bca9fac02d5d762345eeeabc4cfb7e903fe128c889a6bc4e0312ee6", + "source": { + "epoch": "536154483", + "root": "0xacbffb3f4b33e122174f090c8d4cc511b7c9b9c5966cc1172c98e4332b70bfd0" + }, + "target": { + "epoch": "536539231", + "root": "0x82a81c3f096d065c7e3f5d7df79bd182a53c9471a737cfb9f7c4e9ed95d0f767" + } + }, + "signature": "0xa9aef1e37252740dedc5fc9886810459f7484555aa59fb3876803fc4924149cb471ffbbd9be5324d952efafc3de4c5f705dd02134916b2afa02194fe90a8d1e8f58ebcfe0d33d0b8a97e71a3f7591cb82c37ba531c059a684b581d3857f05e3c", + "committee_bits": "0x0a" + }, + { + "aggregation_bits": "0xb8170c02376e2616e3bf89fd01dddeaf95362e5081d185fa9adb69f5bec17e22840f28947369dcdf2269436a8ffdfe7b90995dac664172d05e4992d1d40e8c59a5fc24b8bcdcd436af3f4fa98c1d3ce3a706e03f3c56085c1cc79dbbb84081cff70d85f6acbc292291bd8a96de104b9eb8d9d2235f6299a563224628dd3650ce817ca853e56f60ebc3ab6b0b3de977a673e84a07a823aa64628753bf0345297e7bcb6830e95c8e42b77896fab98d0b7e82217680a3aece1b571fd3c9beb57795ad8cb4f084da376677f2a65ae2c54b0a3ff1e02d0be7e8fac52df9b5ea009d5304e3f8a8c09dd9ae7c61a5e6f82c52b1db4395c1bf2ecbb3fb1fcf9a3eea17837e47e2a0bbe84bb1371d9794f0790339553ad1b34e3b129430543bacfe84810ce4f6318dd6b342ba6a036de629acddc0f3b7cf33459afe859f98518dc5fd957054ac06bdb00cc850df69af9da00165b4c033d0ec5f7ef59eb9350d2874a994d87fde6d5ae3ffd02a0d6cd5adf641d4c0d4eb91963be74207b6a0caceba9ad8d89c1eee8185f8a80f0b996d7291e63fd901fefc1885d47ff8a9e1d4dc14088747cf81390dd611b5034aed4f4acdd1de69b8bedbc61ae7b4923f5dc2c8fc38502710b3df2b698d8df9af14d1d84ead26198297827219b4291a8c607f2909d6b040092f8b2fdbb355e07eeeb9ad18717f4242df7e32dd6ae4e60d590726aba4cc07eb9a1d815a0cba65c01fe307b637d599001347461813883100b7044acf4479342221008109a9c157ee03412e36248817dc01cb6f9fde03baf9402091ef049b2262aad08b6f15a52c43a54139cd8b7bf9170bced776ecf26464571698fca1194a0ae8667d397ecef7f032041615b38cd3057cd4d88fe194359dd1dca27113070a02a1625ac9288ff91623d42a9e501f92d17af6c792417aa84e11e8d87230afcaa14822bf5da46f24c8d73a5b90117a15ee1193406ae76a740f8a5d03457dffebb9177f352f44f25b398e6700e19c1a34489fd4a74bbcb73506dc2e33650b28beeac3bbf01bab493c1c957662111cdcdb72a0747e91790b6f07b0b702445e3625b4ac5026bd8877f3754edb6cce9ba0493bdff31cef986a94b742bf6bd8f7c64c169c9a3fde5a2e188ee7bbe05d3069dc70410c0f821b219e6be67df002b9d007aed308a53bf7885d2605718f30e2e66658fb582c4b2aad2ab00b2478b44d82b367325ad781dcb7a5a55ec9709c424cfd2a052dc169c8a52123424ec478d52b3db0adde4e94920eae0368bbe1295390690b69d99952626204d60150612e3780c62bf30b0fa3afef3bca3087f7d04c712142dcbe0cf9892ea2733627c7b7eef4c0a1b68be0decc608c759725c80307633b0fb5fa877c98da3e995af305add93948a2d6764a527b9020849e933be3f1bddecfe2f98cd9714f3fbd649896327afdf001", + "data": { + "slot": "1", + "index": "4541085068713761673", + "beacon_block_root": "0xe24dff3e29e762b4488e615619483884c44b8f4b37239b5cdc4a3bd7d9b48c1d", + "source": { + "epoch": "529036628", + "root": "0xbb0b0b3fe94fa42a5e0893ff71360feab7459127ca9149e88148b44625f31d08" + }, + "target": { + "epoch": "527882381", + "root": "0x2ed2e73ea915e0c71d9afe03676b8ab8dd578b9311463e45934f49f843386a48" + } + }, + "signature": "0x958ab38cce5390fd750e87806f32ed8993a175bc3ccdab7ce2a40c23ac6117b603d5ae98d44a9780cca1f32d28bf5176058ef667b17fd95f13e047cd9cdebbf19f5270ec5a154e2ce2283da513c9ad05c26f10b0a65755eab4b1ed6f42175027", + "committee_bits": "0x04" + }, + { + "aggregation_bits": "0x868f9ed4683f5e22d7f519918cf80cb113af7b692fae23a694f588d43d90507f7c44071a3fa92c8830bd85bcc71e557e95c6ff3fa09d88a7371fa035cc9609c4ad9193d7bb76bc321428c79447829a3b275a75f146e1f20f1c2a0cca8d860475c19337d97b5dd3653cde512f97b986b147b32a524a01904c7724ec100dda5b03615d462d4732b4a58ac6fb1d0c935642316e3bdd31f285f937e40c3cf291604ae7f3a5b8b1937e71739649662d99639774b653aa12d7fa990e0d48d7dc7ee51cef5ee98b7a420bd18719971894792effa5f6fb49f3218005b08b00fa513fe2f5ced76657341c32b69e00885d685028194e2d5e6c76b4185f776000dceb810c56992ef14c7bed46f600876655a7ede2fea688c7d538f8cd0dd5b61fd5bbeb2353e891ae362063cab720d1030dfb8605821bbfaf8d71e744d1e12cd713e64e220c20c670f36de2d6f865d900c335612fbe9300e151eaa0aa37e0da6a7653bf5826cad00a21e7efccc06bb6be8a63b520a77059efe58b8e4e2e1ab86bbf4384d076ccfff6625014eaa83d724b7743e3083d55e7ca0787f6c5a05f850ad4006e2bbc7fc851f2be69c7ea652c91fd40774e92358986ca6ffe9b9f5d43005b9abccf3ac6b4d9895fb0a6954ae2f8485b2b846e33061f85529dc6f34adb6ffe68a42e7ca9d53f7e0fc6fd236ab3992dbeb8b1f2906a820ecc42135a51d8dff9f654e8d68b27849e2562ee4c7df7cddbbe43e855a933edb42b86965a96e4b6388ff9f4da8d4fd1a3b63ee253e5d855f88faba1ef8d8a24cd35589c9a8bcad8f87ab20e6f83ea5fa2e2c990080cad4bc8b90fe46247f902563ffd31306b242c34293e3c49fcd42789adaa6462457e621c8435513bd566a65f76b44088203143735e78a1d3f6e93704df14f36b1cbb8607ebf1e701ae19983b073db1417d5f75c52a3d95761f871516d76901f6b402e4dacdf9585b78d1843d7019cb5ba4257b42f6a331d734d6bc0ca38d882dce58989d7de27e0631759acdd9543d4fdfb10adea96300bde9461e8851d8dd6baef39961a7a3c73930bf6abed670a19ebf82127de6e1a861d083c582983cabf0ca51842b16ab6859f12472f355126f6c32cde777a0efad8397cf240cedcf0ee04d64d210e8dd09d4ee9af1a46e68eabdfb6264ca1f6642425a488548bc0f6984a93a9f40a44671abb9d1daf85020325586b3f94f671c8ff365d5efdb7db5b847a6856ff427fd8e362f92a9c3eb7c9555908a22a34872375ccc47b31fa7e7a189c2968a7ec16888bf026926f82d27ccc6a4bbe81a6bfb2cec4c61f589048779351a96b2acb1b4162ba942dc85a486a39816ec0708d0cf40536ed3e26f82b7aeb3cd3cb1150b8fbf64904a548414ecb707c10c5309dc9ae4cb07e1cacd32abee77c0864eb02c0a828e14bfbb190429e51d48c71832e4cb3f9001", + "data": { + "slot": "1", + "index": "4526212706878702633", + "beacon_block_root": "0x41f3e13e4961bf0c12dd652f3bf49e85e35a8a25c70e67ffc1d08cc01d9921d3", + "source": { + "epoch": "527305258", + "root": "0x51977a3f0ab3110e2a10e9c6bd0e89b1410ca45142ac42171bb2b169efc281bc" + }, + "target": { + "epoch": "532306994", + "root": "0x2a55863fca1b5384408a1a7015fd5f173406a62dd51af1a2c0af2ad93b0113a7" + } + }, + "signature": "0x8ce27ee66d80548b04b029a68bf714f7918fe9b91c706050317b117786daa0dde1ea1ef9a8cc79bb41d6b7a4d661e30d0023df755b5f24daddfe6eda547945d49ab8796bdc3e63d75fcefabc8dda7f9b4d78292e8827948a5ebfa1f662db6ed9", + "committee_bits": "0x08" + } + ], + "deposits": [ + { + "proof": [ + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672" + ], + "data": { + "pubkey": "0xb94235fc2765496162b52009ab14fa6d0d0ed1debc25fbbd1fa6da8c64b58e5edaf39419489b556cb563cdd1d08c2eb0", + "withdrawal_credentials": "0x8afa683fea95afdc0ad91e4937a9c6185315a1076506bd45a4357cc27fe5a75c", + "amount": "32000000000", + "signature": "0xa8d1b8a3f2e7d1f9cacf864d93be09c810406e24e9074c43a1a4323b16b045d428d23fa0762b8bbf203b452d9c8495340e065df1fabb6d1b56b3435d227afb2470f722aeba88fe4542eb8abc2329a6bbb965502fc5ee6ed7837ef9c938573fc3" + } + } + ], + "voluntary_exits": [ + { + "message": { + "epoch": "4559262388392254378", + "validator_index": "4560914871608938506" + }, + "signature": "0x8166b2ed13e982e6b9f05d30f42681b826099135a533d2614ef5f4f59811714245db0e1821a644859559f97ec1e614bf08b2edb294fa2edc1527f46596399534af23c98613e1b74c01871bf1dd2af9618bc0ba23ddfce8026b897cdbba8c1bce" + } + ], + "sync_aggregate": { + "sync_committee_bits": "0x01000000", + "sync_committee_signature": "0x8077d47ad0fe431af45ca6ed24efda0fa9c84364ee8af5f9e83f53b3e5934961197cb31b062dcc3d5dc793ec6de565960924b65d0535f3833ecc51567572959e2849e470be8b6a1f21e2c735552595e9765e66a599d645d33fa3746d409fa122" + }, + "execution_payload": { + "parent_hash": "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "fee_recipient": "0x23033a3fe9f2a903b4f058a4d4ef6a81852d9997", + "state_root": "0xe5ca603e08e1eff7259e45ea6bb662256d9d74b1724ee8feb0ea59f6e2ebe3be", + "receipts_root": "0xf8eb5a3ea82ccf3c1be1ac153e3f77f273a07343291711b9de6b9dbebc4c9b49", + "logs_bloom": "0xbf886c3ec849316e3b187793c3a4398b6097768d06bd968a54e8d2652d2a75a96ab3fe3195f647a70f258bba8e2e6afac13b68e2faa5061068306ca2a652ccf6becd6c58dcb63addb97feaaafc56cf440e920f1f1ee6ced53f0d6efd1209f3f0daf37dbc30149935d6dd2451da4f84d128262214a2e844c3079f5133690bbe15801b8e32f99a0c4144a1d705eabbeb18d2d32bd6c6f4f48b71b21578d4239b6197240a4ff3e0fe9aa69c35af5f59090c355feb7b601c1284334d2e5933fbca40a7792d1daddb890ce4e7124d627c763c5d9d79b5597a8580854a297498bb127e6040a3260c87ac53a8c4e69591597b0fb92cfdf430c136b9a5079a5dca820f58", + "prev_randao": "0xd2a9663e689510b3305bdebe972d4e58669a751fbc85bf448269162e078b2c34", + "block_number": "4488205580010065800", + "gas_limit": "4486553096793381672", + "gas_used": "4491510546443434056", + "timestamp": "4489858063226749928", + "extra_data": "0x7ed3313e083eea1ecfb57f4508fd068e9fb56c4125942ed01ef47538b5f29e14", + "base_fee_per_gas": "66016772192738304600348427229332912155053403334447944293225380805794998736543", + "block_hash": "0x58913d3ec8a62b95e52fb1ee60ebddf392af6e1db902dd5bc3f1eea7003130ff", + "transactions": [ + "0xde78143e27b846", + "0xb736203ee72088", + "0xc7dab83ea972da", + "0xa198c43e69db1b" + ], + "withdrawals": [ + { + "index": "4517950290795281992", + "validator_index": "766262", + "address": "0x4dc28f3e0884f5d07b860b8fce6fbebc3b857c21", + "amount": "4506382903983525800" + } + ], + "blob_gas_used": "4511340353633578184", + "excess_blob_gas": "4509687866121926760" + }, + "bls_to_execution_changes": [ + { + "message": { + "validator_index": "2227267", + "from_bls_pubkey": "0xaf8e9748b8dae2368d451ff7e57388b5a9de96c48d5421573713a104bd1d7d19a8fedc6c40cc0c63f030cd788d4b79c7", + "to_execution_address": "0x42fb7d43b1006df9874a521b12867f80fbfa5084" + }, + "signature": "0xa8709cb09f500debf2bbb6855e09542e63ef41d16f12fd72cffe162f228a3bd53079d54205623296544d6a4e803d7cbd03b452f30def23fd44a939ec651d16f8b2380c6c05ed8de42f6332456e214a3327bf9081373cd174c5fd88c73f7067be" + }, + { + "message": { + "validator_index": "1395399", + "from_bls_pubkey": "0x849eaedbe546193c419188b4aa3f2d222b377a136c5defe659dfa84b5ff83153490a330f25a7ca39243bcd11ebace030", + "to_execution_address": "0x683d7243f1972b8371d02072b997a81a08014fa8" + }, + "signature": "0x860ddd021623b0457093e3e33cec56fe571fbbe8a52a68ec6660579165513eeea8dc706ba31cdd09c5c7ab60765182cd084061dcb29dde1dd5d5956b404b389f599a34da02cd3a50385a148dd804110335507c0f05bdfdc495e4a4953dafac94" + }, + { + "message": { + "validator_index": "1010650", + "from_bls_pubkey": "0x8485b34d0bf20fc4d60d681351091329d0897bac95042cb32b979891d0d5f7f752df602f71f63b1d466017ad2a09b8a0", + "to_execution_address": "0x27883743308ce433056e2924fdef751d461f455c" + }, + "signature": "0x98536cd2647e9ae4add0f9ee0897f9c2bc423061a913bb3f1d5b79d2e3ac3090728c5023a892b7440c6cfc2fff73dd4210b61a2c7ad48282924dfe7c6c6f4884353d98d629b374df14b429a91ee58d18a80defab79fdf5cb71224fec86c022f9" + }, + { + "message": { + "validator_index": "2242888", + "from_bls_pubkey": "0xb62392bd8fa27ebbf0cf05be5bda4d08cc63c65e26ee59edc9a002682513972e9e5810163d19e720b078ad5e45dea8ad", + "to_execution_address": "0xeaa7e74372afb92149950f0e30e70d158bc46240" + }, + "signature": "0x895d52f7e0948110bfcd91fa281928e1c76841a86ae348b51e1c0bb9d10bce59917d950c415ac89c1099eecf840f62f0015790d194a97cabb85ba45d5ca678a2c7acfb4d86f22f430c7292bec30f1f0a24125aedf3132afd0a76b6ae0abef7a7" + }, + { + "message": { + "validator_index": "1858139", + "from_bls_pubkey": "0xae7908cd2718d6801bc1045d733f3c8367e3125c163784df4d34f356f899dad12024a9219f126e63dacb03ac068101ea", + "to_execution_address": "0xa9f2ac43b1a372d2dd3218c0743fdb17c9e258f4" + }, + "signature": "0x9846a460e26f9b19bc8a79f50838489e2764fcceed280b9f8729d38d13b6154bb69a8ab360a7cbe0c80a3bc7e92f5fee0212311895f198f7ca04e838530bd79c2814c2d0b4417c3f760727b92d279c91ccd6c94a08924d7402dbda81a2872ba2" + }, + { + "message": { + "validator_index": "2934395", + "from_bls_pubkey": "0xaa7ec4a37dae722143cee2fabacc1e11964fda925d7dc00efc1c3b3a537f414237ee98b5af27a6231ae5097e4a133529", + "to_execution_address": "0xcf34a143f13a315cc7b8e6161c5104b2d6e85618" + }, + "signature": "0x86c8e92840bfb3b3ab773a6c3f4bbdc36416746bc710630dec288404296db89f63eb25d648a0795e30e6870ea5a6f5b70bf684cbe96b72671398e89a8510991dca3110bff970cf1abec6c3bb3bfd7ba1b37ac1b973ac024bcbad0287d47aa65d" + }, + { + "message": { + "validator_index": "2393663", + "from_bls_pubkey": "0xb4de3568fdbb0af339856e6106dfd7808879d0564325ec1deab8e8932c4d173a8d7b04a546a9de867619730b512748b1", + "to_execution_address": "0xf2a1aa4230a3d3a803b5d735d4c36257dc672d0c" + }, + "signature": "0x8a5025a2a1543e6fa0fd574add3bcb06f96df170dbd82f51995a261559948009eefc0c8fc2c474c387cf52a8c5a698940eeb1fff88b70b5331be065192f46e47c765cbb3678d19a6a84f713e9c9464730649720a6182ea2964188a8dec26c2b4" + }, + { + "message": { + "validator_index": "469919", + "from_bls_pubkey": "0x8678ff3eff860e3ea75396d0bb0d548326928ecc62c8c9b30b58f8f3be02e3099ef80f47a13c7fd828412ba9f990c25d", + "to_execution_address": "0x18e49e426f3a9232ed3aa68c7bd58bf1e96d2b30" + }, + "signature": "0xb47bdd50d8e3ee31806068b3555ea1fc6771e2caf4b06d07394444468feec69e9d153e52ced5b5cbb5f8d44f2e981a060a691dd8cd0d86c4d7928bb908eabca9c2520e9033cfb4e5f13a80d30d4e8de24eb5a09a0e0b734a55811f13edd2fe6a" + }, + { + "message": { + "validator_index": "85170", + "from_bls_pubkey": "0x82b07707a61c37b860d0d290ec1c330ad73d0f5970b72c198aaa567ecbd2d2d08e884f2322519c2e17ab2cc3e9bb26de", + "to_execution_address": "0x740c2043b0ba6147da79c6d14c13c8515f2b41a4" + }, + "signature": "0x8008c559949fc9cab7b9b663aeecf3583273f07c7081afc5327ea39297f5adc1f1d8bb8d9485f1fb157a8bcc291625fd087e435b653ef0020f3fb8e4dc7ba04b6ebc64368aed53b868638cc39a536c0c077d6a08a4831f06e9145d328a52774e" + }, + { + "message": { + "validator_index": "1317408", + "from_bls_pubkey": "0x8a5997a79613125f1de5bd526981865c391f914492bf08bea98d89e0b212f554bab770783c094dc2ef1229e5cf6febc0", + "to_execution_address": "0x9a4e1443f05120d1c5ff9428f324f1eb6c313fc8" + }, + "signature": "0x877005ef02509214e9ede55f546c2b003c0209b7d885ea680d76369fc415180ef4fbbce332fce18608d3533b8d6d284603e52bc79193b0b2128c624332fe1bb1d1e1956361333e0ab171f1bdeee927a169d2ab78498189a9e8f4036cb47b77cf" + }, + { + "message": { + "validator_index": "932659", + "from_bls_pubkey": "0x8af5874a9623513bbb3200f80c2679f001ca294967e33f1e201f6720e30f3c8ab69492f3dab696b485436280bd5da4b3", + "to_execution_address": "0x5999d9423046d981599d9dda377dbeeeaa4f357c" + }, + "signature": "0xb21c09e06746c9cafbb504cf0aced08a807b87f62d57b526d28277802395a420321c8510b91b5e835a9fa47e6cc27d240d0991f1a05798ec502acd18dd8566ae675a05579e71bc8ba327ffb5f92c66c1f58ed89bf2804863cf50b958e79add78" + }, + { + "message": { + "validator_index": "1852932", + "from_bls_pubkey": "0x95e6bd6d5246d58b9d56e43c1490b8dfabe87ffc399721bd63de8a38a7a6bcab8399085f3ed777a668f857f591154b73", + "to_execution_address": "0xe2fd11426e5181a7eb81549e52a9782b7fb613e0" + }, + "signature": "0xb33229dc7bb509bee6290ece9d436db0477fc49ec3cc26e1e298eb72d62d0b4d28e72b271c0c3a9b9f86c44c883086680dc51747dd535a7b0b693302eadd8bf44f802fac281dc91025509a5c6df8bbe7455a3f30d32b2cc27c2322c7f00212d0" + }, + { + "message": { + "validator_index": "1468183", + "from_bls_pubkey": "0x98b245d4ae533c7648fd14a7858d17a792e7919a81c31f1db0dd1c0beedaf0fe7c7fc60be0b446238fd5e5c94220a538", + "to_execution_address": "0xa148d741ae453a587f1f5d509701462ebdd40994" + }, + "signature": "0xb6df5347cf18c72adf3ee1e2e5e942d8b3b7ab160b1f66d4991bab95e7050f302d723406d3410b9275700b3b998f2cd517c4da35e0294235f656d5c53cabc553f02b6a8f0e14a74571029f380c52a935c0230f4507ac486e4cf01ede4d04270f" + }, + { + "message": { + "validator_index": "2544439", + "from_bls_pubkey": "0x9866c028838d222cfed5b1ff8215618a8d6a81c3e96a34759e78172fd2d18521fdf686d1601a860a38d3c1fd8c9e22af", + "to_execution_address": "0xc78acb41eedcf8e16aa52ba73e136fc8cada07b8" + }, + "signature": "0x98ffde69b4d92a4510b5d42ae9bcc05315ed0a20fab2ff6fc8e416678f150d7bfb961da6774e86213ee711a2b065c3d300a13fcf630d7f303c59d848ec47905d2b439e7bb4f3348b6ddc448aa00f7c6eb6f64513182a3d335e2753f66cbec83e" + }, + { + "message": { + "validator_index": "2315672", + "from_bls_pubkey": "0x84768946243cfa8d15223bd7222c94a5ce4a610b7aea979ac29d5b6f30e721213ed5b3cef3b4d2e700251be6a3d4dbfa", + "to_execution_address": "0x23b34c422f5dc8f657e44bec0e51ab2840981d2c" + }, + "signature": "0xb9014738ce2ebfe44a8255a53e34b604f223702435a966b81276bd7967cc1e172a4dbace09be70a1f73b300d83a7a8ec161cdc911b167a8a6489def11edca95a3587eab704e98325ce29eb4f86a477755421b480ca39020c82f07e4977d9e859" + }, + { + "message": { + "validator_index": "391928", + "from_bls_pubkey": "0x8b37bcb9abb306bad986453fe618bd0161b29c9f5f1eee2aa91f44ad2ecf75604c38975532425ca87de0e7cdf3cbe44e", + "to_execution_address": "0x49f540426ff48680416a1a43b562d4c24d9e1b50" + }, + "signature": "0x954da68af7adf486693e9213a63a082fcf1b1ed99c320314b73e64c322470329df27c891348c17b92dc7972dbc7d9b4215c7746c756c1aa2194c7217ab902459290981a0905683fa8563a2a7241f2bc3a3d6e4fca48d9fce1c6c322c4835dc1b" + } + ], + "blob_kzg_commitments": [ + "0x83582f424fd7244f213350c530fd112a5fa71806352876480227941a471efbcb4c76127b24d689436e978f5ff3327e62", + "0x96792942ef2204941676b7f0048626f766aa1798ecf09e0230a8d7e2217fb256e395d8d91f376a31b5afd20bbafae148", + "0x594150410d114a888823a4369a4c1e9b4d1af3b146f383eace5399d4b17e3363cc267b8c513bd892003285f184da4d95", + "0x6c624a41ad5c29cd7d660b626ed53268531df243fdbbaca4fbd4dc9c8cdfeaed644641eb4c9cb880484ac89d4ba2b17b", + "0x32ff5b41cd798bfe9d9dd5dff33af5004014f58dda61327672511244fcbcc44d9de7eece5c7917b77201ff98f64a86c8", + "0x452056416dc56a4392e03c0bc7c309ce4717f41f902a5b30a0d2550cd71d7cd83507b52d57daf7a4b9194245bd12eaae", + "0xa5c538418d3fc79b5d2f41e4e96f70cf6626eff9201627d38558a7f51b02118e2ba593073bbf594a1d9391a2a1f9dc2e", + "0xb8e632412d8ba6e05272a80fbcf8849c6c29ee8bd6de4f8db2d9eabdf562c818c2c4596635203a3864abd44e68c14015", + "0x7f8344414da8081272a9728d415e47355920f1d5b384d55e295620656640a278fc65074a46fd986e8f620b4a126a1562", + "0x92a43e41edf3e75667ecd9b815e75b026023f067694dfe1857d7632d40a159039385cda8415e795cd67a4ef6da317948", + "0xf14921410d6e44af323bde913793c2037f32eb41f938cabb3c5db5168485eeb88923ac822543db013af49d53be186cc8" + ], + "execution_requests": { + "deposits": [ + { + "pubkey": "0xb8fa03e47468016f15b89212a91f203194684e0cbbac07b6cd428fc7e10cb7d8a363985b46972eedd7bc434fc701c4b3", + "withdrawal_credentials": "0x0100000000000000000000003ece09418d9cc1c206477b3f86b61438983ee789", + "amount": "4684851168694822957", + "signature": "0xa529495633ab9ab138c0756646074fc7753fafbb44389490ddd46048f29267f6b85e46abbc1fe71c42fc98513ed0f6f800ebc9eaa04b484e29af7d7bb0c38b5e088435aee8583a812545b3057c184a4634957604ec0647d1fa81da2d15a5f198", + "index": "4688156139423158509" + }, + { + "pubkey": "0xb8a7fcd7c58854073db5f088cddf200b04864b6980925343c0d0b3238d5ce3880197ba175c59b61aade73eb79a74cb28", + "withdrawal_credentials": "0x01000000000000000000000001eeb941cebf96b04a6e6129b9adac2fdce3046e", + "amount": "4734425686670183278", + "signature": "0x94d7e47981799407b6455afd50007fd6c7736bc24b685c668e8af371e8e917d974e93874db6532a4ae61f4f6deea97bd12c425def40e2d7d3e03f647ad4028145163fb47650087a96647e67c495a101275b8b3fe37498b0b65772b420dd2f400", + "index": "4724510778780143918" + } + ], + "withdrawals": [ + { + "source_address": "0xc0387f410db44f61de0b6adbfd057a321b02fb21", + "validator_pubkey": "0x83feea64397a7a9d3fbac0b9a16ccbfd63c4d4fa5d0fd8bbfa13739148e752ce1e9b1e01654b56cb56a196fd8d64db3f", + "amount": "4722858299858427086" + } + ], + "consolidations": [ + { + "source_address": "0x1fde61412d2eacb9a85a6eb41fb2e0333a11f6fb", + "source_pubkey": "0xadd399d4422421f5e4a3457fa7c9dad6af725f7cf4d3f44c2b8026ff8224308fcb7edbcd677a1835ecff50b3960727b5", + "target_pubkey": "0x85808a97e324987cd03bfc33e49aaa6cbc8a5cb66fb44111b0d8bc8c6b7c810638e6a6ac88d640b3492a684c19053f61" + } + ] + } + } + }, + "kzg_proofs": [ + "0x28384a4676f60227a8611c6c3751b6c4018ac9f0b6d0f11d02d460139565c2cd4c5f8a360707a6efa09da5ecad82b94a", + "0x87dd2c4696705f7f73b0204559fd1cc62099c4ca46bcbdc0e659b2fcd949578342fd6810ebeb07950517f5499169acca", + "0x9afe264636bc3ec468f387702d863193269cc35cfc84e67a14dbf5c4b3aa0e0ed91c2f6fe64ce8824c2f38f6583110b1", + "0x619b384656d9a0f5882a52eeb2ebf32b1393c6a6d92a6c4c8b572b6c2488e86d13bedc52f62947b976e66ef102dae4fd", + "0x74bc3246f624803a7d6db919857408f91a96c5388ff39406b9d86e34ffe89ff8aadda2b1f18a27a7bdfeb19dc9a148e4", + "0x713fd146172bf3f6a05dd5853306de577144e0d254c84764e5385015f6b14857ad88bdb287507d903a6f9e72c78fc297", + "0x8460cb46b776d23b95a03cb1078ff2247747df640a91701e13ba93ddd11200e245a8831181b15d7e8287e11e8e57267e", + "0x4afddc46d793346db6d7062f8cf4b4bd653ee2aee736f6ef8936c98442f0d9417e4931f5928ebcb4ac3e181a3900fbca", + "0x5d1ed74677df13b2ab1a6e5a607dc98a6b41e1409eff1eaab7b70c4d1c5191cc1569f7538cef9ca2f3565bc600c85eb1", + "0xbdc3b9469759700a756972338229308c8a50dc1a2debea4c9c3d5e36603526820b07d62d71d4fe4757d0aa23e4ae5131", + "0xd0e4b34637a54f4f6aacd95e55b244599053dbace4b31307cabea1fe3a96dd0ca3269c8c6b35df359ee8edcfab76b517" + ], + "blobs": [ + "0xa250734616e5e744f48c493c6d932629d574d0f2b953d406c14b88999cbfbe0227821f9f2e60836eaef3cf363a0cfffddb3e68676607d6c52dfc486041318c062dab838a88fe321c055648202e744d6197c01d58e03acc793186ff781cf3c0f650617d201785a0de080b592e0d0de1bd143c5dd9a58b26409d6f53158b7b87f12aa888ce822872f568b16ff66ff1ef93a3bd9b3e23ce7b6125dced420053c57bdf2d76d4a44f3de9fcffdc623fdb410955a0e4e84178d68ee1e5b1da80c29b919297fcc50a261fc73d266a343c3a7d408122e372d7db3323cd8577a025d2df6beddd760b78fee43ecabc09f07b9a903b440ada473131c08e4a0c0b8b9e9723c49eb961946585ee57e64586aae35a72d2fc593b2f907199789b2973a2aad42a3ad41f6aee7ac3330cf53d50beafb3b074cd14d21aa90123336986bfe0a0e5e43ec6ce1ebc16f018dc03bccd19f00c8c011c13b091242c34d640ece107ebff45922cea9616cd13fa583ca2cd7e09a595ff16e751661e6cabb110fe536d86c099f2c4a79fbde47a98b7755e00be31870ce22ad1aa02a78730d2ac808b52840a2915ce0b431ad7f7d3b6a23a98b3f4d172d78bc40a79457a2f014e337f7f8a354d6191b5b9ffd4f5598a5e3d738cb34d15d2af7b10b5702f56001138be7a538c4a30d4bb19c73d5b3404669a70a51f537f18d29c199c130d1fc0760cdce82b1b8c85659954da2a3c62eb1eb3d328c20115b174eee2a8114e32f8e011335375ce1a4c96295603e55ce4480aa7d66776c64d69d79b4a92be2ca8d718a63fd426e16927bab456dc6c84e7775674ced0eb31490e828966d962dd757ac9cb15ee479bd2cead0cb28ef29ef6f04fa8824c261fb8a9c0b960afba588f700563b31d766059bc4ab9d5a55eb05e1be89f9abffc29543b22c1cb7f77f687eabef13094650e96b0f234181cca962eeb365842679b755f74f94a6190bcd7bb0e4efc12dd5aabd92e0b398bef059d7cb5f4ce68ca02c3e66fddad5c93a4214c91f0ed3d1fae64eb9d7f1a1b7d12dddb6f00f3390384d7bf3f2990e3bdb90778e844914e144eddf62a39368d98a7722b83dc24b6364a337e6b7c9c2ef07ea61c5ecf1859c83dcc85e5ac6d2fd8af7d29752e47892acd17d82b394664c1e7ad65ce78b750b210eb9ecc4bb34ad3c8f473ef405f830b5fde3542089e57cddcdbf81a0dc999bb703464ae12a7aa22c647e11580c554a1a39e65c953369d76ba462639bc8a885b9c72caccfc42ccca2ed25ab101e66f5e1125ad41ca17a86bd177e7489a63ce01e41d44338a978557bc1da36ff99032f57439b467dfc5e0a1e755b75120bd17a92f8b798a43983859ddf4b15b41dbb85d6b35011b4b53e825b3df8c19a86b5c91766a68002ef8e223364590bdd88efb81ebea01b68786791463b68209f4a6a4cf4795848c59169da81bd2ddc3612b1c18bbdadabe540e9a4b1778f53aa8924497432db47056fa590218b76ab4a076008df6ba76c533c60de863ea2297cb56d0de9f0a4159b960fad66cba8ee4009d9f438d4d9098ee0a3e6fd1f4936a4ac84a49a77a19e79bd704fe896f286510e2a2d7c386b0b80d1f079a5d6bdbec75a1500a374efac01aeb94f696296e2101e13b84af035b15629f1d11f7a87304804a42d240385c81d6615396edbdfa2a2a5d524abdd0e2ad7e07fe0f04fac4fd0332aead497c3ef8768989039d16c01085a26bf32d80a1a4394698cfded69e037bb57d29ebec28412193a17ce994c9692f76ed9893908ab02e6229ce4feeade6c799a6fb543aff1e0600a6a7c643f82feb969ee95523559e3c2ef5851a00b928ab1363e6c5907fe8d41d922461da2222a0cd86013003b6bf060ed2e87287ae4f5060328a14878611429385e5978e4328d68d904ab4fa63bc74cab8028135cd3bc2ed23612b5d720688fc2c607cb79d9f3e268e86c37ae0353076ca79e33b719b71132f2c878a3fa0e497f103d53f0588278184d516913e142a627e3e2867509eb15a99b1ba9c38f11702c2809de8b1c609755d45b82e621f1522eaa255092fb93a57adc9e965538be5028652845b4816fea4633a89be71bde7a0553c63b457a2a80f445d4e7b95aa99698fb56b0d03c744f129cabc0b744c5d458d66bfc45faefcf5e227b7031adf7ef999a0e9f02425bc77c0f4597854927426a4fcc9bb025c197070c505d692eb67662ca1c9f81f376e245982bc83c72bf14f18df556a1e2d48f0c0d1aee75e8e28616c7f8a6a198803d2bd2d14a1c9b7db168b2b2deb19e2b49d7ea63c0b90d41ab4b75ede00b6de49fa39aee55db2bafb7d7f9e8c6d41ccef8c2d92ccfe79679b6f94a82bde5713b3f6d92586d815d963aad073a4cfe0326b884e3990caa4fe8c26ca6f0d4f38b4d7d02173a486ee17e467d23e190927b60269e2304d6f3cc1d13ab621d25c07c9eea29de7bd4bc94496bd4d9f85651c326ffecfc7dee457ebd5392d4cfc2ffbd25788edeea6dfed855492cb6cf28e35e3d387ee62af68b17c03497bf6c3427919141e2f440685bd573d61dfed63684d7531bcb6c5421caa0f4ea2558c9063c36e4b93e66dd80fc2e935fe63f54bb80f35f162dc1faef3b238aa20cfa1838752dbc649c95aed3b27e3616adc4b13a31ed3617c52be1bf474f790dca1e7ef6cc90974060c2468539813afb86a9f99f57c072ffa7bcc47c252d47ed85f7fd80da9e0e6b1162c4025bc7a4c020f51ac3f07ebf0078ba804811d3e75bd5c7f7ce23072d2a8bf0ac14bc95d2b6b20da91be050c9de350ecb7ff169d79a762dec7f3144e949c70fa0bc3ecd7853632318117211a11460072db389b591502842fddbdf34ba803d7c392cf7c6f53ebd68928e243858c5ba44a7c200bc6d4749c8e94e2b518311a02789c3432bfd688f30628033392334c4ed2bdc2d274c9df52def7ab412c767210a3c6bae12f10cb947b94d6e6368d543bcc52b2a4040868ae00c45e2c505f15cf0380067014487f7822752aef87076e75b706c744d62a949003ef5c538bfc32ec3e8cbef9368ae8bc4849096c9f7187b05a372c7c70cd78a6521d188719fe629f7683026a0b253468447e5465ad804d66dc55bf109012f5a2e02ad4b1113c75e9295031f9482bfeb9b3fc2e8b504a83729a67bed9021effd3e1a339248030d2cd40b2ff4da1f4e578ee9837a96dcceab15a85c64b76990065224db8f105776b27b5bede3aa99b32aec6a293567b67bd655c5f2216533243e03a9cb98681553cfbd95cb251cc7f87813258c9ac9e5fb45d48b468ab98186dc1e53da3e2df2f5a6addc5d7c751c4a8263d706a0f055ba12afcdc6acf6c820d2b818ca91ff90e95a5c30b7c640ed04f0fa9928e4e9ee896dbb23f7384bc293911581e72324623a884c39142735cce0fd301dc1daeb9f6a0071cdcd3f1dcc9366ba639860b513dfaa29f8f3bf5572e4a7f785deb9b0f590d2688c3c41d94a43b3e6c579584fb54ee23518f2a8a2a233341c99a9f1e714944776f9b929452fe37930ba787c31c02c4801bf31ccc6724e69b950b7347ade230003f1d1d57b0a2b3a95d8c60fd7f050802eb6d5017186b8a9c129fb8303ca5395a8596a5aa705bbaf9631cf1c202bf94c6b18469f8147987bea6343853e6f6c8594f69eda3697cd8d6f9a25a416cb6227a5116fabac790c9711720593cee9c65cdc28ba487ad5927c6f31c61209a14691d82d057d22f37167532ab1cef39435bd7cb06285a3dcc69d9e9bd8de8ca27ce8110b8c21654ba70767392e87998fdf2a3ff7690385db138a1826c211b21e2a75ac1a4db10e7a88eab0286218b87bd3b7ead8f10555c693f887444d765f55b0c0620c06acdf3535c548dab950eccdb62857595a3b0435b88a99b12779c314b326f820c76f3dd539159e519b71dc8939c84a2e20bec676fd97372da3762b99161ac95dca716dd035579095fa6ccb7859caff26321ca4b9120acf353f2acd8af733ad95605806003f3b333fb0c9ee5369e45711b703d9a34f0a06c66238ccb4ce4f788f7f4e675b49feacfe3c7a7768efd5c81a0261b40cc0ba10eb2beddb5b07141980f95d462bf4ce2c8ff61b2a5595f59409954cdd65304071f0bd1dacc4b4dd28a4062ab1d8f8d1c6eac5edd23c669cef446799ea2c5e46b7df7f2a5072edc492a032e8d38d28b38513a5492dceb0cd154f8617860a3eed2d7308b4567900779512365991dfc0bcedd6fd6d0893e5bf90c945830007466e04c25e1b3c94a1dd9483fa63d31c381f41a03311d5d1df2961714a2ba3140706d6c78ffee465c40ce794ca8928ca434e8f922f29b8048f2d921064ddf5c13fc0a7f8166324a666997901171ff865d747fd1ed44245b6188f2720b504a3480c245bdc98ec4f42ff70d7faadb9c3371dd612af91b53517305698759f810961b51bda7903b02db22cf9634066f134ca7ad33ccce2be934688730d93aa806d5fe266001499d91d7cc0de7496984edbf8b28271069b5fdb29231361b8be57ad745e15e051844e78360477e51ebbd9744ec0ba6d9ba20d0d823f56e853eb83ab19277a8525be286e03358f8f7f6cc89cf5c14053a27674236b4e9a5acd858ef7f898801af1edfa9da3fc598a1cb8851d9b39173b0074e463cc2358dc7f32e345a55b60834a5b835a8a4acb1bcfe547aa58d0b992b2871c7342c87d330bd1ffe122213bab0e6362c662346c892f6d78a90c7f5926e4a1ddc98b71b406c782c2e6ca09d430a0c6eff00a1f398fc6e0193920675443fa2fa46998a5917f3f860691487cd3c2ff6907331aae15cfff76004ba30332ad058879364b2f74992281290750d3093c0b593f843ec37f30374ccce5ff043242c096257159fb63033856c6eea7114beeb119ea573b7d9cf0a9c56fb3a3619e8064564623aa5a8d67da152806b74480b12054e40dd84b6d1f97b953f47b5870c39128de7997c0a14e2a18be223dbe416c13fcaf9716baa62e3f13843a764dbe15a67bbe827c1abfb3ac041cba8ef29c030a1a4cbdcabee82f031f19148fefb8765b2386f2773e75c6ecad023bffc6b2df3c38c9e00261aa26944a5731482a1f4fd53135b15762c5c20a1e41db4d50fb1c36ed2a490e2b1673484f924e6b398db111e49d34a131664d1bce7dd4e4e97a16922b892478949cdfe21262a549817abbaddc1a03c7614f182a3c1944ac1bd767491959e6dea332c3a9f1db697fd210eefcc19fedb2fa5f94d74e5a2198aa4bd2e22ca72b076c320fb56036082f1fda6671b3ca6e4b21bf52b61b09e6b8b0fb6856f7f7bcbc31a65cdf1f1a07f46b8f33f70cd2bd3d7f9c29130185891a9b1aacbc73b3a220d8d058df011d41415b98e486266e3d55ad8f461baa933634c89562bad448939b08e90602600b32f37683db4ff9dea495cdf3c2a6cd776bfe34ce95a56d1f8efaf3524023b8488d8cce17ec547e4153de0ce0296c9975f0f5ee77c9d2f0db070304a7b9f2a97938ab8ba8c66ae2ccffc4f97617ee5532183b2040e6a56ea7b1ffee65bbbc4b9548a21d5ff219e682ff1f5810f06ec2521de59ae491f1cc4f52706aa09a52c9bbf0ef3448bc6f3d1dce281e9f2bd99670bbecff7c10389d1ebecda749d4c5a0f8bf75c447f1c7d057851898265e5bf909c4016bb5b72d867755031bd6475985519185038067881eda1af04346877c46537cd3365077bf60c5db0656daa8907afb2d306c54d9f397ce430ce7f49dc2176a290afd21670075aca7df3548b9d1b450ce578f20d704f360855277b80c5e3ea86ea163cc2d0e2ad558aff28b8801b6055b0e76020ec668da0833457beef2da58aa57b32aec190afef7fcd144719a2ed446c568d19d9910ad9d97d797845b4ac1f54f2ab84ccd0a0467c49daf6a32157e1c30a2616ebda48cdc36d246d2241ee62951520f3ef96809373808285e05aa8fc4f106f2e87bdbff519d6afe446334aa45680b49f2188fdf8d1259efca2e6059f6cb7b64186aa5d73426a51b15ffaf2715f5579e7438038decd0d1615bdb173d97b11da0b0586f2434543752fe69d1b4197b9b577390d57ef00b38b14b579ebba9c77d9b63a2a6aa9d95ba6c88135f60d7d55441431f1e5ad28b549c64952c3613a027d5a83e3d64d321507bb0270028d3ad6ff1c7ca40bbb6254c471552464639c13091c48f04beeb4b35927840facc7956d3fa442d08a45d4f8a9f03b2b5004cfcb02e032088896d9dd98a74168393ec54f632830d394456faa8346b27779face9404c027d16fb7242020f032e409e9d3367142c4406c707399e55b586ae8b3e196a2b6d26a58a28e6c643d8e8224b3d3dec0db4a5ed70d5c962fbf4f3db25b68425f3334e22133b2963c90e85316489689b8bc9fa762192797dd8cb47a3f1749cbaf887bbe21b3cbd4b9fac8fc204f057c9986c94a7359453768e19f83e2353fa81066aa77dd3ee843907f2a37b96d7c805c6a28aa29560e34b576250abe4c00142ad0f0fa9438a5650f46965255abb8619e2e6ddd135a46f0174f9097fb78298e04496d269d91869baa2436ae8b100a729c56cd2eb0e61ff2e18ffc06524255594d1a01518af439af11c47d41819b7508417cf19cbf46256283ed4e06dcd78ffdaaf334c42a1a144dd9dcce14a8e35efa3f2feb596828a2903b4b749b3ea19cc4214fbe3a51d3b485b351cbc6cd06222843eb174b2869786d5970c69c1f5e253e884d12656f91054b3828de087ab9bff126f7368e977dc6100cf56c35ec4df8be0bfd96690078b5f73da2e21f9d945ebb463f20effa1e6932c3c89367ef19f0dac43b705fc340edc6c1f9b6668efaed6ed97c7a73a6282db21ff45a83b87bfdee5ba899d4c57c34576081f6c95a2da8f95d3c87ce2fcf7913747875b3d1d90f9abd52fb473efc682e5e2b0d4a63708acc17959bed709b56f9d46e8771c6544740df1e6bae3667383440b9547f4b4f1b5d9ba3246d5ad3f3b0b9c8750e7afeef87930b19f10651c335f415f212386400a36a192721963a47a52c54042cce3543db6ecfb86e9f50f060899cb7405d37f69ea173018ff954e2ea8be550449960d1eabb7dd774a3e77ccb784d675bdd11b6cdb2aad874c894e2b6d9c8f422ed7dc328802530c8534209ed7d344e48f7dd36b6336d7f3cc71ebfe39cdcd764ad4ad94c909c7e23491a3322ff805802856e7f61b937d88a1d0ec36f51f80afe75f225d1b4e843b1fe45532b06136c15cac7f1ddc4dbaab6086236fb688051b8d1861276def82b932cbf98abc87e0d23924390babf47a64a5eff924fdb495caec0b61abe6aa0485ef2290babc0c811639faa3e8e08a2cf85de6fa6d4462f1acf8e800d717806229ad1267616555c651d699d6a710f09f0d856492c18a1f9ec60fad758194cfbb04578f95d3e12ffbe2f2ae6d780828aaa6b9466404e777e0376aa7a0c86c4e5b34d5b4ee55572c26b8b3f8e865d8a23c499265c03cbbe15947ff56ccd4bdf3a73192129fbf535363fb6d6d0c9ad16dccf6ff1d2ee8a35c934baf7d8e83e4db1f601dc453f994c5d194bec44b0993a4fe13190b2a2a952df18baf94912fc16a3e0d11477ca214d2762769ad8ce4e993220d6874567eac6a38de7267e1e62514fa14ba5ca6f527e70507ab777597de2ae178749c13b338d8faafc93483915e2ed77a1627f1a546fcad02cc47735db5e9b642405dc0b0e8b32cb8a953daafb53c7c3ff9715a432208f66752a235ba28ceef5bf4b5a922ac1801374662339c0bbc27bff5004dd5dba0070d3cbfd6c0fccf56a1e82be81d80b65f1711e61a852ac1b3f3274dd892ad977ccd8df9ce4e21b263b3d2384c78e73bb488ef8e588663b32569eadeac54f62e201aa222c96e1e5973bcad29021680d15b9a9e942e0f115a7263b298d936aee14a58253fa9454db7fc6a83fc5c8a26be736f786f0b6afa43512751dea617ac1b0f62d03a7b48ae136416cd6d7a61f9e09047e3cfba99f40fe73ad25aef66453a05c8eb2cbfb530ea3fde343e368e5c2a0ed9cd38f0884773274b86cf1796f686c9e1a413a5e85b4137c8ac752c39f26de977e4922db666055b65ea78659c8b9eb905aab2afe7880e2e2145616671af5308aaaf5286f0f00827adcde3e58ff2d0f2c6c19f20489a46b19e88b487bc879cda07600a6a78fbd69a6630bec6488a1ccdb833d1ddd9a152f54a16fb0e940f0ab828e29f95fb9e6fc4e977e2cc43c3f6a3b6302083990d72c088c04c96fbce460bd72deb3a3a344efc7101e49afd568ac50e5894cdad459ce2b2dad383199247132f5a0695b2ac08af2dc6db0c9752fa8ca797ba37fd3e3ee63ba5de27bda3e0394bfbdb6536c168281fb6ad8b5205c3cbe9fa20fb87e11d53b9e9efa88a69410c9cc52f7304b9db52be23591a13d0873d86ddd6e9bcb5f2fcff85eca49c6f97733eca568f7f1171c54f98c12d919c64d050c5bca9132c9655d199709ba28e593fc41cbae4c479b41811d174e4f6459be173b2a00643072d2150abbfbc45e3136bfc39bf87c7c820e1b1e7e5091b1ffcd15cb17a0c9c765b30c04fdb785206d2b20bffb3b9b8473c8494259bbc9fa48356a21dd1589fc61e7b0f55f478ec5bba728547144c996737f7dc0e7a1501b80e662b79e7a0858b4c74a029a82ecce453f80f50a8ed1ad0b5919469b52c352a34c129abaa7de6826b104ffc6d9d65c394cf6ea9526c2097d6bfa7472d7c6c6ec40dfede6648d3efa0dbef9ea6f46b55ae424ce240f25ab051b165f233767fdeaf8cd65a0cb0eedf6f271ad443447c324c05912e6d7c7dc342b380f16c17c63296fd2cce839491085a14a0e70e3719479b55b794a70c1a64ff6fc012fee9fca68084b7f556ece44db8093c2581ad7dbe2a7159a7b658a59c57c80a569a0fbe5677718f06da783a93a609ba6fce49d6e6210aa6222098908b43edfe142cbbccb3b21a6245ae0f1653b144146fe72bbc6d27ef48f7d3a680a7d11928cf3cef57a38849c35e184062129c1546607dc7482d7b60835c8cbec796963e2f47a108b526963e5d1b736fe8a6f64307cfb1dcfe45d4ad13df0bdc2b65e9f30597998259699b81fb91e7e0cd1166fea32fabeac52add389e19ccce8e3a2a28a6fdac237efecae9f43d17f142c50834de931bd1bd6073173328504f667b1761ce04f49d7e807289dd94312705212a7503182b6419fda63ca92165e726e1fc159c89b328f73c88d417832cc5303c67d2352ee71677e7ef5bc3a6b96e067909b5a37ab7053628ef2db327fe6d77e025b02c7df34e06a8803d0b590c0e484bac5cab380376fef13c2a0ac600b0f095a40eebe388eecfca955f1631e49283d7b63f6b3ee569e34d68400a1e06cdd6d36181599368143f4211f34f71b6639cdfbb8f325222181b40d78cf5daabc7377c5bf2e6f243aa0b2bc4d0dfa372da9b3e596a5e8fca741d136fc2d4229df6a79f5b1538bddb68dbd6488bd464eca1833a7685653405b90532a1c6046f7737ec68165daec1f0dad40433f798b3e90bbd3c716f8ad875115e7c5ae88739b8dcd390fb098c4ae38de88706fc9cd12de10de4c2fa9b212c6129d24d58a6698325aaf58c07efa449b068734fc91e475123ee42d06fc1460953c6a67d72ad1ca8139886b81e1a85798ab54d7bf24fa79077e38d9bfa0f897c2b7a40da2e5fa1794872af478f29da8f63aa901b6ca11afd09071c8777f75c64fcc89dd65dc396c75bb7e9a72d3dba8f1a564ade1367b89b5f3e924f50319e6f212b85c1ca07e09cf68716e8a6c1aab24e706a6d0686018a2ee417c9f5863ba71cfb5d8f29ec8251dd6756468ab44e6b9263799de9e3b0c8831db84a5924a7aaeb76affdd73afd9890ffde1be1af747877340b7991a5d0d6ad15ff2875db44aaf9ea107d85edb5ec747045a5ed1061703738fe3eaa369620bf2375a7a8800892a5a8b698bba8a9e836987f96f90f8653afd3775e3e9d6e67d4e12284cf47de561c03c276c5a0e104fb50664a988875533556d87521a7151082064a2cbc4f04d56cb2ca5815a4de7102907808ba6232765910cda834bd8ca1e98e5fed46412a89ec5b7126310409362379353fe756d1f30d31242ca9dffd3673f0e877fe0105c6be49e62287b748c6c06b7f0dba5bc387f1f21aab74caf7c07119fcc1a5509af80d984d351c68c731e0705723cf49ba5fd05ffa2244202eaaa161ceeedba94ed31b77208e831bc7fdc36100795d449238ac71684691fe92c0e9f4bebea183766a7f754b156f8503dfcc6f310fc70371cd257f41b6b1ba668f6e5b709c846f133f9977ac3c398239caa36cb4e24c08e9a3e69ccf05c865249da29304931beb1d8e8fe1842e542284e1525381ae149a70a9dadf4105b3e58cab2b849e803a0dca743d6c69697ffe575f142e1b345dc90cd2d9965733de2f84cae72d9f8c5fecb003815007ab697f3a4b9d3ed9fb1e38e9b02413ee8461ac5febf9e7b04ccb34a592739a76bfa287f2a3d208a125c5095b6d660419991e0279045b20dc1be801b18bf117ebbdcceccb15a15696c30f4d2ecca2f551a5b4dda3a3dda35d57203713f6294ae21c4c3af30000b40c70d0c226baf6e020a920d6d18c6a9d7ac440e75e72de242e7fbe41226ca584792bb37985fc505f8414754c5c8e44ea05d6a4bc588220bac9e37927128dceebc3e257cfb6b229b8897e4c99768c6137f9bedadf0163c203e6ca57760c4cca25ffcae0b45e81fc6292c4bb6f1d7fbbf26bd3f17fbea82d5b2ded0ef02abbe41f685b57825f57fe7f54d3b65b15067a28dd099c4df7d5f4ca357d850933001c2cafd8aa67e5e323929e8a78e0c4dd6a970bf9a8b08f3ba9d1104b7a6e01ad21f28da8245e64de35ba983d75e09be81f7cc83d5a9d772b662e164a512cabf1a8ae2e1dee628cdbd8379d774940492eec3666c41ef225503ca5b67d245c7734285cb38afbdc2180c6945e9f00c2c8be8434471be57af1b26bfaa0df753614870933f7cf7f168c29f4cdabdd8010466917831981fbcbc3c2e4860a78668b51ad6c298efaa037fa32bb3aa99002ce54fbe7a3d696d1f7abdac85ef997dbff4f1de3bbab8511ba39ff9f54dd1a6fb7bad1ddf3b7352418d9cf3af30b910a1e5ad5a8a882c694e2137a66afa29f0164431df4542e0e38a8e0ce803e02fbf05610501e66c2bd1cd7de9cbae12ca5f5a1542d8052d1a381f897ef1d01ef888f6d6d4e52fd38dd8acee67c89796b92ca994b15e281b7f7dd57f7ccfc0efe34bb3c5bcb8b3afa0ba6fdd970562acf296f5bec25398ef258326e5536001bb3589274510eafcf3b19fd86a6570fe1e029e0b6380197cd0b2e5a32490a22fcdc8153c7d130f391bad727ae76507c8da37bbd2a5636c2fab3b526317457bc2d6c976222d8a1fb2a1c71d715a4aab7e736781ed7d4a5b37ac3c91e490290b3b6affeccc269666e4893d003fff219b1f9e3844d836bed7d7c99c4b5dd2819c8f81a27064cde54095d61daf37c46c4617b60729eaf08998a737c2bb0118da731df8c61fb49c32021912275310ccfd5e53395643e61ea1489cf2b6bcd50d910ded0e54e12fa10f9ca7cab33526edad54ef49cb9e1c08563c8e3a5de9cd5332923be78c3e72fe07e03810b74ecc32dea4902cc458754ae0262010b4bd8cfca08b0b0c29b5cb670d77e2f8c8e57859caa70bcd742b2253338a4cbe2becd3141225f6e9fc03c4a736e81a1b4398fc55abc59438980c1de724db974c0a59d615d77f954e32343c1bce4896176d5604cda93d9521b1c10c9ee3930b0be06df370f8e6a7ef10613635b06faa0cb929089ca0e8355eda8ba263bdaeab0e0cb7080ba0eb7ae4568026faf9c5492010d6704fafa1d569274d06f535430dac50fd72be53b4442921ad1585070fadfd2ea82eaa9c3eecdf94c970696d3f1200784d0cd5ff08d11f64b7cf82c2c1b54e1203342309424e0389e5a5a6d677936908a0f091d1e54e0af4f9c8b340cdeb45737e466571b1603ce4039be73d87ef0a091397a7e19e1a901db9686fb2e2ba1854a861cf00b98f92a1e5373d1f390a4bd6e7d9bfaede1740ce8bea1ea19e3c7f9cbb76f33307463507adca0b4d78455606b7dbf667098e094d9117be7d2b6e38c6ddac174b0ab6f666e67988e6fb619b5d8c545c07cf80bf8275ae617f37298499b565b78c7901cc6eb8b9409e2c034cd3dcb5773cf62d99d2856fadd15799a7f96c320158d4ae51099e8b9350fcc6e2a588c0bf26aab0b58258685a1333306bc16f955707c1e743ce4b1a35eaa97f967f5b9c20e0d4c993b4c848b8240d4c9daf79e5d1a275ae0303a315ac9eab22e9aabc3c7bd7507496ed484126468edd8f63c5e6b8629413192bd40cd66e396d1c5781e224fbfa3a872fce289c86df5a95696eb70c022679ae2813e760ff3114b9ec12d765b3ef3d11a1d56e228276378857587cffe09b1a10ed7e854fbf539208725b11faac7c7346c646ac57702ae946f92cd478f7036532b91e8b7b5e044d9aff2951947391f81849347ceb826c3c2f8d43769297d82529ee16420f9420d5c244016256dcb833e151bda32494bd5aaa10838b1a00163ab06d77970b358e7e171c82a25b40e524dc6f91765d25bb6f9e9c913f14bf7f32a58a4531c29a8a66f42fe4a12e87997ba911d9d383ad5d4af9d1e2c036e43f558989a3b45c59ef45f8ae2ea1500139f4cd8d840d973742b12d5677666b034a8004b1376c5546e7198710230ab512880c2fbb438a2e511962ae5f5ffa51072cb360ea34a1fccecdc246e90b7a47ada7569d19a8f8f44895dd75525238bcd3367209f2a623f59e3236a3cfe1d2629b1591458a337824bd7132806ced6731b828c81318e4b0b8963bc64a5078e1569a7b313c985533127a6ef34f826b9a6bb2c366b49046211012df4db1f2a48be944573ffb509983a1a8576569cbe77bda80f949c5548f889c7eb0c68d4d9225d2cdc432dcac85dfcd4c75bbd5be7dd81f85974c459294be514239ea5b2bb1813f8af60aa187f27f2314fce9a1ffd7ed92769c50d6ac1d18f6f11706d8bef98a504c23f7ee28d4e04474592f5f590062bce4a1f83ece0e72a6d75f1789e76ebd998df5bbca5cbfff661975f6a3cc8240dd890373e806461352c9f2963486159da469c576221ca880d2a4411d86ab35af676dae8260fecb533d4fcf1d65e1d15f6d68277f46c59caf67bb36fc26c6382480d6c1c4db333a6a7e1a8d2dea19dd5ae4189aee6ae47fac16648ec424a7fdc6850e6c2dacce783a81cb81f658afc4686e7b5cc5278c02ec64b65fec24e06a4e82f3acd9d0fe3583860848ea84142669653cb7baf73d619febd8f06850666c1eba5ae89e63edb85121e4a2460a54982f93be4286bc62a582d94fda68d6fe829f25437234293df235b893f789c9c475b3bbf5f3d639536d076f9bd51865bb24cbedd77e6e061bec4a0876d7ef64ce77161111fa3b97f07cd0832651bfb48600b0f04220c586defbc9a16954a9c3bd5624bcf5b6fae2cc98f8fe842324fcc07641414f3c4d563a57896573198290a9df415b895c2c8ae36dad5f02f8ca79ecd81da7dba35cc9fcee780db58108bb66325e7dccf884e3e1873d37804e00ec6942171d1db64d5460b1eaa4b3271cf78c195d27c5fad4a5ff97d6aba4281a1c451c3350b1393a12ec95350aeea6fb3a8bae9d53397aad6c678ed7f558be9650119e842481551040e4140d72c3898741ccbbb46b39cc8e392f48c8e397d3f4d6d5ddbe3073d317c24aecb8e4a99d7509eb8e2ed27a2eb0efe0d3be578c893a800a419b3dee16d99d6f5433bcb4279d57f72c305b8293bed7928e38c5ffc42022a46039ca2b715a7b110616296bb35931ca1a1cd09ed9e71c909b33b81884c21531b26d8b5abdd32a0eb428afee753f636a2bf36cb3f626509178a34d69bd80b705888ce6906e4b1da3da55a5717f01fc80060661d2e20ce584b031b54da284e9783a9f748f790be93d06c5b8fd3477cedd58b054a74b31b5e7ee99b89a5eeb90308c198653c47fc9dcf3db668acc23f10be142dcb15a0d7badf5d62d9caf2f147e9b159e7905db1bff2cf28463c57f40f6c9f50650184258b937c48363ecd6e3caf2d4f16f3dd2e1250195b9df9689da9b05b9d49835334fe619ce3c6659c0ef148ac5ec7833da41e4fe5300670fd0a2d499fcb906476ec89f1cc96c6ce1b62c7bcb91ac7da09505804e302ac91d3ec02511171ef2b98d110a700e3ecf8d0e13daecd284b0f18d1c2290f35ae4fe6c1ea681c4e1db0e26d8bab48a6f075828227830d57bffcce317971fe5879b0927ecf2db54d18722d3b201eb81d18b2eb05ac2de7dcb56c15fad9fdf8efd1c93121d34748433e78faa98c0d269caff464ac0180bcb64b3cc2e37d1ee84dc78a531e830f7a540d3742f65d43d62d2b1172edcaa75956605a2a13506e86d9887820047743db9a4972363590d1781f96992de3d641c35abe2d878c75e90db77202d827b81ae46014d8bb599b71f5e5e887ac8f2e84c693b0971a334d114de16a072778618265b6a036167acb3a508b973f01012a2496dd5b153d8674a399ee5be2e52af8a8dcce8bc5367ff1eb4d7d2578c4736dad3726db2bc1e6c5e1bb5a6b7c333021f9b03f937d5d2628c80530734a200fae92cd4a870b52cf8886a6af2bd006bce8669e30c8a410a8acc16cdca3989957f74602f61a40b7edffd377cb4c4f0722562d90b068a6fb78d468517217b006aecb3e94428ea6d299b09c095ab944b695fd4ee9fc00af43c68e00b3c25e90a1fe8d505e4be2598c4cc01cf24ec32835097289ded86e5a1c37c770ff183a2dc0c226845679bb4b91bb3c5a3cf5f97a7362c86b2d099d410830de9d311fe91b336cad42e4468707f1bb5ce71673db39a8742b5d56eae1d35f1c2aa3e53eb5cb5ac15ef03f985816b10ded0e4d598c74e663ff3c7f66e0c523c28f323f8b3a12cf9bc8ffc33840165495beb472ed30b09e64ed75c61f43cd1d12f72e0555486bfc77d418867ac6da93eff6832bd26a4e261df46dace52b6c8bbab994190e196796e99fd681f77e98999bf10dcab1be801fe257ab2ff0cd5394ed475fe11fdf3c26154f8b85214519edc36067b8e14f945939610ca939a0553f4c61543ed64d19ee5797d2d9fe61b58f7223a4dffc2a85ee36f35bc2feb4e3eed0284107e6344cb7fd4dc28d2020f1fc3e56a2f3aafaf8af82ed4ce63ddac466fec4e735e5b629cc7b5666d64b5bf614304b5e386b633760116dd8834c63a5ef74ba1d2fa42afac3173788395fce54385acb36922859ef3ceae991c71ee2d4f82cbead9da21dcbc5ee79824a40b7fd42628310a4222c488564211189812a0210c7e18bf0197d55c46eda43d39c7bff5e06c67f8bc63590a42617d0de7e32980f9575de79e5422384fe70b5a7b4bd760ea8dd0aae374babfa15dce2556854d25feae8a2ca69f911f08391c8a6867816fad47874d0e5501c94bce3fcfac11b19baabff844cdd1392abece5f16051c6995157637f0755a6cc1500ffdf9901329db0a2aff0fdad8c6879d910892a5215bb3ac9d9e51fea914d832c0d5946e0c938ca674fdc823b518de63f56c1e1b6148aedb629c6ab0bff4d83942023c59f17ffec285f362a7fe314cec6e94f1d07b18f4e40fd31ac8ec3ee0533ef84b96aaae14fe29aa8e155d766c06f6d371fa414cd89a13d89861d203b26f1e4fca519456bc388f6b2dcf0e39f01a897a78c93970f2667ff48705ea28f02293b4d61c0042af4ecd4b32db659bae19a98d8d441f5fe8f28a75d58cffaea8bb0df19538b1b88f485901347f46bb400eda952ebd61544ea60e8dbf17b048f69146fcc85c623aa78c914d314aab318581277b7216a2ce863808c2a71df240ad8bb821829d3e09d21135f5490f22e1a47f9c719c043742ccc81bf192ed8cb14e492235aa4f668461bfe7486e844c1473b3c9f56f2ead9bce490edd78519a09bc6007d747506f52fff3b23d47f75fec428945d957a141928e914a4fc5680be4645f2ec9badee15bdba48015d9d0a51f8cb4295fb25966ca60095dc8ac38232ee90a23535d4eb995aea5a397a26efb07f9c49168d4b843c842cd79c036e3f99d697cb5b63d30e79b5c714dd93a2e5301b8b01fb195a232b2eb04f5771ff0fa78004076b4e139d11b3e3a1796af6632182a5b781b78a443e34264cb57f39464aa1c973e20461ace0e5e207e18267133084928c40dbcf8b74d260c19e20574cc29b959a8858ca2acc4332b61b280d0828a5e9e32def36f85adaa77a03226dc99b1aab794dc08242bbea30b85c50afe61f4e6f0724fe84bd88a3fbd480f332d86c57d48a34da1a9805751ba115c6d5fa625b910391de0de8e0c612e9a88f0a724099f6dbe06b2bed3428bbd12516e703bc7cd86c1989c52bb9ac14b442ac19955e6c707901fe7c9c1d25c41f8083c399dd93ff046559d522451151799bb2487d383e9e5078ebe9eda148e3317ba47c05e93606b8ae47c75c541e9060e901eb2a70b1021d72aa4cc24bc9c442745f044a48ff8a651a378294b873044be67e51bb241f8cdf7c5d95e96dbf705c59d7fb6a74c108ee69575989b277164e7df7eeb276a510a214b9d349e70085df0c23c0936fad9bb9554147049c6ba866b7328f50f80e57056f63ed59cbdd0298c4794c1339896fc2e08a6ba2227d194500bb0f8c4bb216d599819a865742c4fe26a994b12659021897614fea380346d411f1e0f7669b9bb2feb9ec4c0b0fb411ec1617b5e9c8457fc1e0fa67f9ef1e50a6653aaa90f5da3a5f6e922ecc2c2e3d06bfde035851600e6660f571cd463eb1f167c7bb5e5bf15ca8489d119ca88b46ce20d71c7d025c828d6052816bf527916b67a8f459a65f670a674f9ea1eff56ca4a3d61da482256a763c2e8bbd915d0287dacf2d869f239af475be5f98d3bf9a66118fe49ceb674ccd1698b8edda712b443a9374385f76d63d4c4f553628f7321f30cae80a7650f031b8a7fc5f5d36dbd03e14e2ec8757ea9ecae67f83f45d63ee38e4b021ff0af3fee9f4dcbc1e60367e9383792bf903b66299e175cce4fae66c6a57ee471a36c753b1f0abe278d1b7df3093241002c37c0f052f7e9323380e50965c44f0ee5601cd05047f2f6ca7bee23234f5ecd6c0fa25a94c07b5bb3d76aac1061012298dab30397056c5a33724c40b157e10e5a203d25c38be21811d28b86f08fcd7836603b74ebc1671bcdbb4b222e59149814e482b926556409e0373f2314e216abb694b9d2a72ad3b34c6c4898b95318be61fea83f26283853bf12622889e3589c99c7b6bfeb32d1308efac0d57dd9613e820dacc3df9b0b2f7f2a344fc6cca049b9b0bfb7313538e578ccd47301bf36758fdfcc69cf887f427dfcdaec4c3c0ee8b270e50fe59513ecb6f7cc01895632e4d8980bb37863a8ca418fdc0ac3b25a5306703d020bdf217bea6f9025ea12c608fcacb1d143748d96a7fba50f08d24dcc442060ca509e54054b86314c72d8b482b049c80d0139add118a407f7052e4307e9f3edd11067522dd4715eeac2b4958a82f7a039c498779eaad9b41a41d4b08ab21a03ed203af7877092ef4cc53055b8f5c14b360a37d080211ec68a688d985d9eb1c7a67b3dd12eca445ef917f2b219ca2d22885a1f9198284937f668421406d71ee49d161ea322ab67499e97ebc0985da13efbd63607ac45966a23c4dcd4d7354306f177aee37d1727f293e5ee67b263a8ff576b5d72025408a1f82e7098922f045ebbdc543b778b3cbfec0d0be37c6da989278fec860e909e8414b879b650467221a102a40b340797ba15afc644fefb384288cb4dece87d8ea0f6f88698c55a79096ce609e56ad248110745eeecd21633561277b7c29a3415e5b713a63acc7699d2b709d810d621ac97047a611324a12933cc59ba1738d87928537f95b045eb9fbeae1109077608eb42ee9e0446eee6820d2f2b2f70ca4c8a9f7de4c89e47dbb912d6d00ff7a35e7aab20adbde4971cd95b3b1c3f460b6c32680f8dfebe9a8e8297ea0dac44f488a291e5732ea0d7cac8589ddfb686ee47cd02fc274f5e8925e11acd993904e948e45674d3af02eb606183e1e18f0ffd4377d1dae357dffd87a2ec7e862e827401e3808227ece61c67d81fb9a39f377f0ff79eff215d37f1a9bd622e9185bd4b198139644359fb9b0bf5b44e68a94777caca1523440a70297f19565311a2e6086506d0bca1bc44a103e78caaa9a2fa6bdf85469b56c12748387da4dbfed2e61dc37b36bfa9d69be6fae0372705d702035cf3252499430e29a30cae67e1fad59653e282fe2b4c296d0bdc07f691bc836bd25f0a3828da6a90c853d996ba0a84acf58f6ece78e7f093f75e95b3d3b596980d0532f8480c9529216e0e643deef426f5c5d733b254417e20013a0cbbb2c84b22d13ca5195f7dd5fb463992e43fdd8f118a40653b8f46ca72a69770669e98efa6a9aca7a8902349ef49ce28ba9b283549e550db67507997c31e0eda94cbfc411cdb6b28b43e1efc701b3f00e2af75fb11ef4ff1cbf12bdd57e8469ffc1dddced09b453994ef1567eb1a875e393a9600ea76ad15d15ffe109052aa58f882963ac968698d11024892ed80a2a39dfa120e6ab17c8a6feb6b1df222ebd43b68795c778aedc12a1f08f44de51206ac41a3db4309f1b52f043ea80b2c7a1d83434a294a3e48360a673b9f5ada5c5f0c2cb821d617e702d52514a9e6fa0f8b6deac26d60d9d674aeb8d9c17013890899caf47b40d45b51548fe44f0add25eaf66d0d59e8b7582b07227173953ea6c6f56fad1b213bf1f6f7aa733b42067baf40694cd7f5f371b388bca5d3e95144c7671c6e4a660c6e4fd369deffa58a943c9d3714bcd9ad2a2b78f8a978148ff8ac008975bcddbf3bdde73614fd9a3638340f52eebc43276e1d729fc82dfae7dcab6ea336b36b7ce9f99d905a85ca0bf1deae28d53bb9118fbaeda4df0160c10cb60364d6ef13b1a71673c9c553464f8f9fa728bbe12a38bfa0be31e0a550492ab8c5c7b0753eeace8cffeac35255a2a477bf430409b31a9834d735511b5fb8dbe59960d41ce2a056feb53893b2a294099c9a3a08f8c62a9589cd31cab220de4816dd5d83f47e0c5e46fe59c84fc97b57192d1f95eb641596dae4d77b5a784a9e30fb27b4751274a8f98dc5ca6975216f880c016cf108f060929d9aa33c8d3e8ea8d7a993856f151a7720a254a99606f3d29379c092722c1be40d3d1aae8651ce0a192bfc47a47d3e88f0f2f7765c8fca070bdaba4e85eed2f384ffc86c675e9599a92e04c25718c291959096a1f668a03f4512f7e4cdbef68e3a112b2ea2e123f9fe20714c49cff9532621e85454df639166020870769bdc740d86d67d416637ecfac13dd65bce593bc3fcfa5f5ba6c716c4cef04fb3183a2f922decebbc039720771e17f7d6e3fb40eaadaacb51cfc30010f9aae4f298ae7af44ea98bd5368c0bce9de1d1c77f1e5b36872dc1734012bc4376a1185aa4373f6d7bd9c1139163d6f21f33c7ab08a57d6c9a89c0ef09b425fab436bb570eba184f5f5f63c0d3ed5aea68d7f7ce16942af8361c27c3606acf2b8c3eab58e77e6febb7b023730cff2fb71e4b97082b969239f8130631dd3d547f5681d1e62fb020d25a55539032f3c50a6f420ebfa07a454756f448cdd7f7bc9f123cebbce1e0b62d896dee4f9626934d0a23ed5deeb272059e152c5665a8f44a3da024992a82323ea028fb272b7850d08188aea7c2d2b9b42f2203d67e234d0a3e5183d8a36f6234964d38b458cf45383fc1498d30178b5ae59b4fc7587e13c7abe72025e961ccef98b51b758694a6783b4f9575e6de17a58c532735c99634ad627035c12f7a256192cd20000834feea5369791e6128d32c72f2ea11e288f10d61ecf13867be5a934c18677b68a0ac589c7af281251c823516744c3e9239a434a5d02a85fb94299d6daba07e55cd720755a0e3685085dc5045a8a5fa34d0935fd284d2e8874948fd89b050b392350f1b3c2fb9953550bd84f9b39ebc7436d94e37e54313a98d1e231ae359ce7055eaddc92cdbb05b10e3d69a8a24a3cb9d531bedc35c51a4f30d263618ddbc3b2dd3c287d3ef60dd7a4060707baf0239f6ac47296468d7c8754aed98b3671ef5c3cb311a12ee381be9dc4955a5d9c378796e3d8a00da6d47ef424a922e726679a0e571c50b0066b5db44550f7b458e262125a81942d70abc9f99c73d972e3fdf512e422e963547f7718ad2f644d4f9bb2d9660fccd9222ccacac2e8a0fa7077ae7abf3d6bc06593af3d525fa9e2c4046a103da4bb576b80b9cae055c4c2c8769776916623da61e494a863e69f7902805c3804361021f7bd2db4e885b1814300a9b930bf40b24f37585e1a15f130628e29e56cfee312475c93bf2dccccfc78beaf0a40e25cd5fecec5555eb1589c9efd38278d29fb2b51cc16f7b8827e522aa2396a287d55dcb39c39047e4dd4618e4cf8208ae9c6b04ccce8ea362005e21ae13b368b8de4afda869b176950e084535e0f4ebb43b337decc797e28c3f54ded182f006170a57133a7356eaf3afe31e9552f56f7f5c58d35ef0e7e72d8a75e27b2cfa2ce7f1fae4ed13c1730b48c0a7c2b8e3fd5e671adbe918c4a2f33d83c23f7f02a7e46dde05385758bec8c5d91a66a1e1dfe3ae2d34ba79d6da9d5ad20de4273eea10f76198bed026f0c4273f43f7845615a7fd3bc43c4ca858133ccc8cc7a466b1f5fd17f0517557dab4275422a85f6e37ca6e6001de862c9ec31570cf3fb037a9ee864504465dc0b95de551e68dd6976ddf4bac0c7824342f57b6cf0bcbc9f42c4c8067b2976c54873146c130829306722b8fa59c7910fa69f0388f4c2f87e012612eaad08740b0d8f48004ad76b830a673d5c2b70f2899ef7eef68efe09fc588cdb97210964d90501017cdf634e85137cafef13edcbf919ce7ffa9734ad670009964d6b005cc579f6f4fa5d0c467e8520a7a124803c5471103e4b398cffb322ced2a1f0156ec8c13102166aaf248396bf63a794899df82cab43a7dcca54d600b849c4db358d057baa05dc077b063ca8b2aa7700fbcf3efc99c1e0feadb51d4061b8c92fecff00810d6d6b7d64a21e6bd545ab290e0fd9fce258507482b2d6b1d7dcad491beea9140532b2386acc11d7d657ef27e1f8e841df2fe17176c238520f6822f56d32a07f84ae22e2c2ad0c23baa9852b68a15f7d9e8908410c795880041f771019b9024c3397fda6c90f26bf70319ec76d5cf35ee6543a974fe5a5d2943499d7861eec8ff5b4179506e1a75ddabac4d6fd952dd834e73725968bff2ee26b96902ed3d745dc15433fad5657eff3752f496c2b4730c0ce7e24874d3b609a73ebf497d7dcded1f5583ae0daae917d270d8d8ebc8e1d9af278d2fd6f01f239dac3f30b86b1fc5c824ba29ebb75d5ed2c0df8db62af146c1a41e9bb0872772259ebc706ec4d72a60447b46d3e6466c30a868c7e6acd46f78b7d3485856cb67e944bb116233085a3b0a3df4975853317cc9c2694e4b9e7a67b0fc038b278b6b63d0f7a778ede7d18552cd7daeb5f6f750e8b216d1ebc76fd4b87fd43314eea72d8ee06803c44f369083c91f78d6e77974f2f1e70a13aba24577577d160ffbe6ad13160d07913ec0ea0b25ef96eba20414f1acf923300baa0215104bfc31c07eb0b9f382ad0e563e2dd2aa0f893ce4add1e103c59a4a8ae88b784d323cddce4dc472ff704b875da58e68723a0481329893fb8a4a0fac32a54a47433eb83bbbc7698d7988a34ebd30ae386e94cb2e524747afca0c5997ecb3fb863b4faa269f116743d5a751a005133046e0d4f9d2cf040bc9c1da713d0bae96851329dab5972ed30f38cd875266b60f99e1bbf9b279546f725e6affe7c2bab304bed11602463caaa5fed886c7368dc9dadcd8a67ee378c27a06c385c0a9e7b183bf3f0dc14fbffc0835207dab7172be3311a150d2e407983612788cb23c1120eab258d66adcff0bbd1fcfb457339a720013d699a4168ffe7b4fb340a65c5b2ac2c43fd68a1a76e531b41b3c273f128a884a3c6e815a4815bd7c0f5eb8cc390ea936f4c6b6ba464f9c1e4871a47bd2a47b72a188a052def306cf426823b508d799de3f086872cf172b3b751c3a725d7c9a1a33437be64016b771997f452235e53ca5f58e9c7a431a1d1e4501fed0f0e49c2625ac82c089be0dfd3f5a8d85f501750a800db610588a938d4d123eea4594174ea818fccff0fe5f055e2c20309201f99dbf2f87f400591c855ab0b434e2cfde9d30b0d7c8d05d908d0089b9dd3d36e7853904e0ec3cc4d8b2809fabc8f76425f20baa89a0bb45a18ed4859d277e35e6fb95ec3342f263d4f8ff9be0e6d58b618248378c139fb3a874b1ab740e24b294cd6eaf2441db4599edf5b8b16ee998d354eb523521f9d428a1f37d9077d46cc0dc6d85d7bb82ea4d5ce0f2f2684d9d64c476f2f88b1c88d5e8a6a266aa207d1a9ebb3bfa865035b2c3ef9fd17ceb587500c150055a85f01a1281f507d22e75e59cbdc547faa5a120d529a8557a2c20208e1a4d64593d914d5cac0ff881f22168f524d82c750a4f51fa5baf63d4389762c4c4187296509f48f7610e1129f5e9c5da4c67e6d767b6fccadd9a9e1fc9649e4fb8ac86e5517e638754a20ea3ae0c3c10e9221506571aa496231d2a96863ee2adbbc1245def9813a5eab1f2ac6d44a97104494a6b7c04b6df20311b97fbf076b2c944ded99607445d4918b563d08cb36b4f6a8374f461fddc7aaf562314453e07c88163782ab768b12e4b97cdcc0fd67fbef9e310d010caf98a67b9622ee58ba68d7edf1dc50197149cf10352497b1fc378c13c36a1f089533166a81dbba342603940d9ef8eeb79ef50b5193d45416f6116971a5e17c8993c775493426ec52a57d8f44edaa175cc1f15d9df3f91848e162fe92606ac91edbd01188664ff30a8845c3ba50dfeb82075d35daaec17b497b338009e2e5f01d00f541fa2397aa63132e303527a8ebb1e3584c0623cb616bea0b50c80dc83556121e2033b1a1f602c814bc2df5a3d311297e79a410ca4c9ac54b35ceb999cc4ad16f36b5d86d3be19e41ced02a6189b924a10b1049b6cf362de9852bff3471a2cc45356ba9f22e456a3bd02019f86764decbd35d40d772da95f45f740f93c553535d9394cabcd5b085af98e95468a6e7e93874fd9eb1e66fa8d7e41fbc257588e29b3a28e94ec362e78d7ead6e417c16d47d628ffa15cbd0032af6c7ee6b5006d938e37cc699e3a47c1c1b05984794a6185af1477fffd1d95abf5f8f203e3327a188850dadb49045ccdfa1ef774c3e8c8be4f925fb96e95866a822eae3915b13293ee8994c16d45c58664e227c8582913d594395de710ac4c75463e17af79ccb094d5fc8d94017982ae9603dad77f7283a538da0b8625402ee4f159350c914359dc7707b9f365b4805745f005bc061b9779db57edf444a55466425d30fe9bdf1de269cf3921e575c369f7da0bd6f7210392de0ce378670ab9bda1e2e6b717a308519ce73282c392fb1f0deb0f485e7818a50ebe4db87d68d83d14dd7d6a4a9b8a882ec41e22e0a6ba8a16f7207a1a0f695a1e69a740997ba051771177d3dfa6991811e6332ee5a71b0d7ac3f296c61adccef077c902a58816f70f096dac95c3004a78e86478087e6bdf6aff590cab3ffc12b42219d1adf1ce3f69570c39f8b466971edac8f75bc4168c2f7a850ec3972ea9cb0a83e4bada6acf824d43bd2e16772d578c9b45ae12e474b84a2514d1c4ad0e8b58865a3661f7624f74ea02d8284a71f0c1901ffb724c4b86e34d5a8380982cc0e58eb0e5273844836859d6f6f29f77e667e8e96be49597e04cea5da85c1fe40d3f854c72399dd8b2f17488ee7dc38ce5418d27e80d2e365cfffd6273a5e18a1686caf68183e212c16ec46f8f48f3ad9cb48a053682a5d5b118ccefd097d568767ecd595f6c1dfe9df10563333efc0de09751d0aa379679e4e43650cb5dac3a8e4f058732454b3755a48942eac44c939b3a977b6b15b2fab7f54f13ff827eb11dc56572c99a49706c51566db6b425599502151b3db8308377421e8c1fd3b1f0ad185074f0a67fef9129ba48d949b72e0052126be5d0d5140c0a15528bd47512cc8d9ac85a64660d9b2074bd2f64e815de9c6d491bbed300637193c0f050e8a2136b880e1b078bb7d27b13ba9ea53ec432d8cc370744e06f24180a75029eef21091a73cbabdb9df0976b84ae8f41de2606adb8db5383ebddb91d11d43b981c83c47774e687ce9d4d4cca01107d8fe0da3619a97fce910b99a450ce85b58172b26ba0992d531e3777925acdd88eb250b11c68759297565947248288f20937c70a7dbf04ce92faf9addc1e210447e8f533fbac2c25e38bad5f2d382acb496c8adbe9aeebdef510243f4ba4c5153e50b31b4429176e490867abaf37c38300e426eb006f90d62d4b5614db5a9a8fef3eadd7a9488448a7b1a5cd2ca1cdd048d2dcf128c12710573fb625e454267c966d9409021d14b18ebbafb79e99182ff1dde81b6b6f214ef114a9ffe707f9ea19996f08f8835e4c47138931aeb9bf5db0710789cd0a6d3468e08b45b0e83b680962fc608f6035dd5e1b1f5639bd83df694fe8cf7d2a25c92bb78b2cbdfc568da97f484e769242cfc918cd172a2d2e7b8297f277cb7582fa58fe05fe03bbf3721098744428956db193f367b69cfd66bd44b6cd7df2021717f2b5a798fdd5fa32524faa6be0f047b41f2d724d565a887355e97fd1b5d41954a7c2d8eb04c96271bd5f2f1c5ce7ba2ff92d93458b1b8a31384f97d9c980f94a2f78de7e0543c6d227cd27666d06541c344defdff59c13cee3b2beec0e4984732fe686ea79c8c2804a85098c5d8ad9985d3388af3cf11fe5668553d89b31b3b1b4a91c5dba2611a62efffb841fba4266fc7a5f1ba9ab65559cb70e5c98dd8cc73b45d9189b9222f7a9ab5e7852a7cb6da1b0afe02dbae0c2ef6596afe73ca4de49410af15a8cce27eb48794914fc9e368814328ebd0972123288daf7a2546e029597a3d2e1e2466f166be907a4c07b6fc7bf1107f1ee85f07d1773d363ac09a3bc2a08384f70180df2cbb87ad442d06a110fdf04fe8c174c2c5cd2d25e2a1915924c67b4d86978c2a233289d4e89fe9e04759090fdb434d8d85502fa4d680310f1942c6df85c7f52780c231da4fce1250c16608a82f75a8d766fd0422bcb3e30288ba59deb333c07caf3ffde3130393dd0cf1f2880e2a32474f1be17bbe75176f1e32e1081dbba2fe3d9aa76d2f449c7368e6f6f80a5bb9ef0e3cfdbe6fdd6c5fa55f1a837643399ff8295b0601ff1cbf30f1cbc2a960abdff524161e7942066fe4674dbacb8971c587bd30b0aad52f2a97cce3e1a4f4f88fe269f733f8214846bd312335b439f113fd09639712f8a0a9b6e1f79046324cbf702234c86e571b19ef2adcda81d41d44c20dba0a0aa0e86e85112c42fde919418db361e02e3fd5faab9ccdb45a246469cd46cdccc4ef8fc633bf8cc3910d8b73435138e12270268affeb922db7c414e1795a23be7b7f9a5ef98bb0f2e58164c5b45de336b7c1f87c5de147d0891b953d3490f3f009da9e06e5da062ecec4d2c7b58651a1effb5dd73e8b758b352d8c47d3b2b207a19adaf468a966cdfdb8577173f864576b60b6db9ecd035a5693090d82473480bfa6d386e38572803b882100caaa227a29fe99fa5b8812b7aba81ae4647c4d590b74b450f83a6673bb3991f62ab032a2e739ec180396861df2e839768d4cc1ab109a1c5b6f53e4cfa1ba48e34cde7294faf358184cdfa9821d7ccc7c83e401e4e3b8b4915601dce3679fd8da47012f6fcb0387424c3bb9f0b3ff63f98431f1bc8aa1b874f311e39b3bec30fde6617d5dce57e93e648e5dc1410de067bbfcb0010207fdbdebc1fad9353464a2cf649fffb6069b9cb4f55cadf5ad9a364a0d0f089e2b1c1010b279d44e5ad3b1ebd2a215a5c652648222f7508223aa584863ec1bfb88a5cbc165752b1406c20bb256cda4371b8ffcbb1de004300361b43e63d7ee33b42f3689be466caabf0fcc65a29407d9168cbdbdce71fca03b71c4dbdffe621291f6ed8d392495c79721617f1b75c3c0b89f7b82f329d1d190a41b12c86eac49a9bdd02cdafc035d1607af6b690a9f32155539ae14fd8109faf260c8ad63226532af1472ef9619ee62b769a5b2899ec0548947410954029fecbedc4b906997183be813f994c171d17a91fa7e03410b234d1d0527db2db4c5dd7ba59e43fad37b85b071a0389a48eab48cac307c9e74a8c5b053f4bedc4c0cd3438bcd84030d0d53e2191a9901a8c35b1933f2ee36a449b1c92ba82fba777884a12bead229a8c4ea4106885ed6121c319d9c54889da8cf788bbc65b0347b0168e7b8d742294bafcca3c7c5c34b5d362e9c022f14fec1da659297d9039f9e37fb8a7410efb7e764a96ad65d5e425f8b1b7ad17b8364977ddc568383a212605d7ff4f7776eaea4d911d94a72e2f155a6fc7ce3f2d180ce9acf3684cfb7dcd0dc1c431fd14d61eb2db89c0707bbabd314c7990044f8847ae52a9fd4e779ffeddce9b8e90e821963a72de2aec8740a76a750227a254e07ed74af85ff05bcb606ac4fbaba99cb681b7deab6a21c796353a8fe7093c04632a0561f2ab637c31ac3a27235058dc623f144f383e65ec8518061d5a730107d937f24e785f57c1032f38aef84c30743ce909825b0a5a12a4da9a8f9be361edc086ceb1d8e27def014ccc6cc3ef4515e6c9a1a7275380913f56b273f69c51d5326c696045faa58607f84ed3988e3acba6dd87df7b4357e84a3aca7ab3259ee4e3312c6c1c53633bf03cc5de4702597710592d3fc8290d57248c4a58adca52094a92e456a1ff46cd75b7ef115a29c2e28a22bb899ef5bf100622fcaccb192db2bc405f470af1a73b801aa9117c64a9397953d40326c04d24e628cf7aba672171935fd246b481fb9abfa994fe4018a101d8bc280d2c42b57e8f9ef1daa849efb9af0818d1e8ebbd0c4dc11ce6bc2df7dc215ed769565a06a9c7d835f0b61bc62e93c7b841decfea9b7e4cc1e4e39221ad01f0a065ef8ae22367fcc84f007cf92c201dc6e783b20500104eb6d3f4b63ae6d85dea3adf798d826487395addd0c58b66ff84ca397cb288405cd29b77118e2569448f67a96f8da7f4c9cd3e0bbd24bf6a55e868cbf9ddb38c20cd878099345d007784d9afdcdbc40c642aa3e7aeb1d0a97cdbfde358763038d7cd2ffb4dc1265f7c4a1d91d1a501c5d14829d2539ee038c55c13baafb34ff3d249d8b8aefd0e310f30f831859ce754dabd4d131fb720c3f3676edf74f02685f8325edf41b6ec569e6418e6d1d5f9a42150585dc9777b55c1b09df90512e48943760a1f0e979473cbdac436b53c17bb98de5819cc2f59db5a2db5a6228116033fcae6c624187c23eefab6f9d1918a9907976a37e636356cdf7000f96eb2eead8ecd6d68137a1d08912588c5ecfbe9828a7cb7269c31f50de5d5b5c3f13eb6d16675b03c70d22e58f2055d54712828f7103ef6eeb565345cf478f469988c027f11cc4ae65428fef584b4b810edfb7828dd5c5c22bb1ef59809039700b40664066cffc17cdda084256ea9a1db93d2eb1808a33e847d226a071444a55a77e693c368bf2507acbb02dc0a7f8216b850dd0bfee9d9cd9035ca157b9d6e077a8b62388dec0ead669f374b6784701e56c3a278fd30feefc9af5fc7963c97603a64e8d8729655ee347685bac81fc2b18d1011369a03968dc42046043125a2859666bbd8464a182342da94f823011f2c1e38c1283c304430610488f00d0cc28953182bbf4ab1ee5e435249b0a3247420ee6334589ece91e541878e305e01fb279827c586557f6193ebdd18b427a5759b898839f1519666884d5b150d4eebde087293a4924fb10177749218e3c05e98449d9536663785c5f7309c14bd79d06e0451644dd2b61bb9471a4750a33761ada67a36379009d607e1d8c352b86ff2ead189f416031c492ef89f51270d843289249922e36dd3461091f9ae90d936b89b46d3c8661ca6a855b9c852fccb58e1608112febddf73af30758ab18143c668dd9bc9f83d9a8f0c8a1add123a6894e7c66f24ca528b1de8bb9145bb01708ab5f8336d27db87a378c62b2d6e7b27d0dc714db1e52ce1d9ff7d392b8c3b8de51492fca20b73e2c440db26885190efd5f8360dbf9dc01b04c394befef8b050abecb9dcb188412a6977b825c3c675a12366e253f84da5efcb9162aac63f57b4a48ce793c65675be1aac2755381193316c64d7f72b11c38fb38695474d6c39a60cf9680e713bb8eef5f98ee443dacd5a173ba266c901569a14ed7ceea3cc528f1685117b26d255832c6697acc66d472abefbe5ee680ae97d990727919a7593ba643d315dbde442db858ed027a506d5c9b01450904446aae7c126017a4ad7401191221f6df25387a5d8a7abe14b2b85df70b37bbeb9f1bad6610ff40c8f612456a733e058e68fcca995cc67f1241ac49034f7ee76caea5c0220b136a086383a05a948b55d9ca0120a3b9bc96f2146f1b767f39b259dc11f5bfa2c512f14f9d1410bbd99427dbecde5e224b81737e3772327828f16fd586f91be2b0ac05f8d53c934eafc72d57aee4cb22b196be082bcc5c7e6b79ed71626b6908438ce52111ab5037240d8537896ff6ab186c698c071954e40edb8bda4043c6733b3f81dc716f24759c5978db37b8ddad5b7c761fe257ef7cba58f664031db909fd976b31b2eb946f2910a7a5b3c066905b74b3f311c29aff7ff4e2c9c201a29326e934bbb80ff3797da1af639259290773f13bdbdc1969b440ca68c4f8a89a73cbd86e0b512cac834f7b241ac2cf95cfddbcc676453798ff98091aad74a13512f4a8fb1b3828c98a48f10802b2454f01fa1dd4e3e830197a54165ca275516c21f7d15c139c33ebed7089e3b6562e2018f9cc287c931567272648dd8c9156c6b9f0afc58fe07a240d17c6bdde3674458df534eac058c4012479f2ae18ee9dd0ee20ffc804d59419d70c77f3847402a5499ec5659a020ae1dba468198cf890344341d11897d7f16440c7201fe0ca2da6597d7a2b031be8a6fd4482dd23c90fdf8c1a886857338601adc87a649e90ed692b41903d6882c1c96a3cd300a407401eaaca32dcc37e922f9339df114af763ff4ca8b937308137a549c673edeeba3362e732b9e7a9a3d012b8e9381bfc81ea23902ac0a36139ef421cdfd128f7c9af6aaa5912eece76796f365e4208f40d022226edadb4f88b53ca7e0d94e8568161c9bee337647adf23f04e27c502b598e2805fd1ab0f44fd6e844f08300c900d1af1068dec7f18c5651084f74c120b6570f4bb6b662dcf7e0818b2656ff8aa159eb6e42b20c1623c6ff1a6a27905e14b485f3485640c75f6f9bc331f2469972f63ceabacacd24fae1f04c7b821aba9210cc0dea6fc0f475839b668602c0ecb7acb112621a084f8f463b224084fa6a8a2c2b40832252a803a1bda471f1451eb2d2ec45b23a9b0e6726d415a643058cf7189d4631d81eae89a48ddefb7f44ed0ecd9e36f627c19c3162d91255022e9f718cd26a124ad6d22ce98e2b9b66fbbbe9d93e6d7f230278ffd0e3f80916d407b48d741065bfb065b28f04d6b569510f5c0ba6c62c3685e585aa911ec1b2518db6b6c02ef6a1d5bc8cf8d7ddf48b23119ed30bef400d736b7345c5cab0df98dd559264cbdfc13db1f7c26a7466482811b7c4ceee882b5e54d49ba8ba13214b078cd6ca8797e2f92025e3b98070fed100be65669ad2a848308747629fc3a0ffff387de3134d6b7f6b79a1971d93f916f5a93fd51db3f9ec51c1e88c9ea3df5a1d7bfdcdb498543ef7d794ea19fbbea8a9b283f4789d796450a328eecdda39329e9727b3c479ad4cadffe9cf76e48aeffb40edfcff48b12386ddc99ebcdec7342173658a31a551657af78937eccc27126e6fc1c2d9679389946479d1e94d667a2a9a617cfd23abd0cf8af1106476896da61a0e3581ad29ecdb3551aa4a9aeee8a2d95613bc41990f21d6cb677eb9d522ef818ad248256c22052c3f25c883ea9655678a6f19cbd6496ae3a1df0c28c5cdb677bbf0d0d83c087ae3c1ddbe624c32729ab244519c7992a65631d6957f85080d223de492c6c15eecaeada67e42f6f80f344c7bb67f650e572a3c14d3eb871d2b4b5453592897b8cc9beb44cccb1900a33720ef2d5ccce9027ce35c3519e52aea41293ec50994d6d286644c61ffba5e8a537ceab0b315d3b068df5b5e174106484a4e92ca2e1bf778408a1269c0df4e85d9dfabce71c7626ef9256ba40b5963e69d73712e4a321f80c130e6052f368037471f7a260a4a71cd1fd36892b3a41a8cfc6aad0e84d9516a6fa940cad23ba6a95e4089efe6a1dc62c2635e66b7b5f0a3ccdc5d59505dffff70527041952fc3c6ce9038732778a947d9950a93cc3eeab9cb50de53959cb3c9120c51658c58d0e06bb90090ae0cbc999a7f7740a8ec0b014f6cf514227d2f983b460328956b2b29f8cfbe3681eb9ef8b6afa6c8c17a60d0138860077508a7fef09736eebd19a03b7ca9e7eb747fee0aa6680539e5ad4221a0ff806cd2ead2d4eb12890f8111fc912fef944a2edc09f70249cbd5951e341233dc72d6aa4ee1b33cc5b05acffcda0bf1b74b7f6f599aeef8f29d9340fdfc6545bd66ad514e177c001ba18dea45bf6e4fa8d2cdb6d95c9fbf84d49e3e3a6c009a20b3ac037621d12412a2de0fad9be221db6b082dd658c027f47dd5a7bbd26dde6bb3643d10a7993c725b75f2f8a872b0144d1be4895a89379fdd4af58a3f5bdb5935b86136b180647a2aef054cc2906c023f8465d61637d7a369c37324961b35ade75fb0dfdb7437b7b4dd98e8898e3989e2d390bbd88c8dd0763c8652d323bc4af7668c681429d3f28e43bf6d47254564392fca7cf94d4c40a663b83e388f4d1dcaab124cde96ec70fb190dd7c7f26f96b5d078cdadc34cf3d81ba1a29e9b43659163000ab476f4e836cd20c986f445704186d59ee33bfcf6e5fa9442ec2a76553f94e9721fc84bf087c0fdf40f10872c683109690586f8ee8fca281c7742cb1f469cbfd4915088c648c4369cd68d3f6505469b0979791c113f0b84f22e8e57d368a8a7c1d914c9b56fa4e87fb89870e3a7513091996e9ce6d47083228cdb0eaed03e216b51df1a79ae9c84c400c1488b226d989abcc23264875eabe8969b04c48bb47ccb85c1ec5a1ddd6a94067dec669cce2d058d555c2b1170ea82d5653c1e94b6a117248c94fd8a0b558b72a2ce11cf37832ca60da506adf52bd892730ab380c425337059e3fff5be9034cded9806098462f7e35304f34270ba8fba2204da0bb1b2206401caef69040a26387fa491f7221b584d944948e51772c27a75801dad25bda8dda50d3d75dd25821a5c026a32922018d8c198d23c56c3aff693a88b9e1c8bb0ec270c1eb2be6cea18eb133301eaf80886cff6eeca498520994518e9c7658afb69ae9098680f052de879b368d9537bf48438e6fcf845986100790e673424f7507b26b82024adfd3669b6ec77a18c5ee60b7913b7c44f580011c12dbfe951d23f8fbee57f3369681504354506dc6517a9a992114579a3dfb277d5ccd6313728fba768c7f56d86440f67f094a97c450790998926184d2f1916c60dd74baaf5a608825c6ac5443f3922a6c36e924da5fae87ce727e5ec15a32b61e73c8db70085bb40955fa01c3f206c36ed18eb7b93f7ae8839674df42d81c1ab87f4604b9fb7b5cf52f0a12627604b689215ed16305c58d090ae0815809f2d32328af9486e79e9159762cc740b1740d23b3bef0b324ddad7024da235ce240720d240fd32dc20d56ba94d3ad2f514d895535dee6f63743b0027331b210995c7f375c2203aad46f38396fe75fb61a62f87ac8452b5200f50b39c1f0379d8c37d37ce603735783c9919abeca82fbf2ed106f9b7f2c2da4c796c83dbda7b1597fc00b3e5da8529d3bd47fb3d95b7f592fdcc515499bf99fd81dd0187d1d94f992f1f9df30c6f8171625edf5b8bebda73a7fcb3f58acb7490f277bff52e42495c7f252bf673ed917a986a7197cd75bc38ab937cefd1cf1a6276946a1bfd8b79ab6ff99fa215b343045d6a0fde130bdbe90db5f25450014c5b2c4b3488c25c8a8ee1215f08b182d1ddc452de7d2197ecda4c59bd91dab360dffcd050f55ff8da1ba3da75311ac94ce632a445fa9ee7962508a86892dc9fc00a4fd779e16275fd1a37da105339fd16b392456ef0a933f8f3919de57c4bcb6941b7fc6c3d5fe93877feca018e8f016886d1c4c80bcd7a219b2ca606f9e5dc6d0d79d66928224106822db43f3f637ccd950fe8870a529a97850188050905bf714df67bb6bccf60970537f263e0f5dda5a043b023d21f24d1ed1a4cfd717f1d2fb365c61cec3dd84c2797e92d786596a3d64a8bd5939676bd68ead56eb46178f5916aa8686c1ef03c1a2852fd9a1bcf500e9f781d011c513b402680bd947c3b25fd671aebb3c914b3a16ad45afbebd5864b2d513e9049259f9d0765b1330c89b336a919fb05bdabad636cb56f8a444af5950638c0d0eeb0338433eff7b6f92baa6db921708f1d315f0b367989281107a11fe576eecf5901b29bd8efa0817974a7cc84582793d212af3bebb69ae534b661bbbfae568d97dccfcacbbd9efc07985cd81c5f83a6081fb75106d5b9d1baf462a3e5514c7f9eb1aca1add04aef068c0f1e3a5ae7fd2f8446f75907a05d20f1a38f5cd26627959c639462e2e1677d381832d54e3dc9c7505e85c2b32d4b5b77771c7bcc01b7a6c0810568e00234bc4e66fe706072a08819b736b155e12d7d700681f9babbc317358620d0dd31e9e805fb60f0d7f7ffbfec3b2afb13647b16f6cb95f26ef70b8d076684eec5587db17d6c1a111b42d5ee018835967fff2bbb3b172b8f9b5c4bb6610bbeffc6416faa8d620ce6e54b1bfda471872d5d20eb4abb8daf5542561fcfb4d092554b1d7f19561bc8ea280f8794b47d1ab8eedad7de42a42658b294fba7e9071bd2de00f72efde96c8ae7114474ab67f77aed62d57ebd286fba19882e29f875acbb8d6283efa1b2d63354d4c0cf949c472148936b00d2bad94a5eeaf581f5d19433219f9b50b46e1c5530628b0a7cc037d4c36b37b1bd4b0f270f35a3759c48a4d91c787a4990ad5ed827c83d63e029aa7cd28cebae22a547a7c629d0788ffc87668891a6da6f0ee6fb78977a5f7562b9984bbce00edce2cf094147a3901880f4465ff10a4e86c9919fba65f90a01aa0a4f386536374cf3e098c1582426f75ea081f7849f315d269661fc4aa35b7973f0a98e15830b041ac6441de7a03fe0910e72d09ca1ce59048b24cd64bf4c9ae35c248bff14cf137053ece6c220d2b10b2922016c5c1fa853cad8ed532f830e56a4f25279c2ded060accdc67dea1cfe30ab4ced8c8185a69a1ea397bdbb8cecda0fb1ac7c4aa45d2a5ad9fbee174180595c52ff7811c35372c1ba45cb700cbbb13f62e8274565cb61b2e162b23a873f531aace411d4f72e08aa98e4aa0a6666d35de7823da4cf3f6d8de024a71005a3ddb3a3311a61a56f9f2b52210c72ba9269205caca2c365220a4dcd5a7048957b2d935d60bcb8fb790ce43855a448477d539c009ce1092cf8c732bd8af55553166c387dd6026cf0f938fa1933ad857b30a3e79a87a9183a3e880648dfe0560dbe3584eefb5e55e21da2acb6ec64225326208c7a274b8d1146050d6b5f20075eae1ad29d7422e1cbffda2f500089d6cb94c4c987eb3e51dcd0494e643a6ac5605f1fe3283e08e6456a07dd603fe3e484883ea908699c7af4e8332c4070b3a7313d3d98d2c9ab0dddcc62b0dce8b9f7dba171de0514a2bc5743f84813bdb79fab52e07c432a0bcd7b61b91793e2590d19c1f37a790a3468e8449fbd1ab276af162b6a21e1130dedea3aed108c3694747b2e8f70b19256fc9da183a03c55b12db832ae45c6bdf9a2aa3274987afa40d939d3c4e38ff1b446076ed5dba274711a772a75d3a5a8fa38a672d8679eb0b560c7e8434e93681b14c06518546a19818306d7fda822f0a24684a53504af0251d6ef1b7471d07efd70bc1ba35ea029eff847f074336612637995aebf1caa70f4e79c81f2184833f2798bc3238808578f11d87981d9ff0817eda3283a399f2e847256e30aad425a31bcf34416ab64ed78fff619bc355725781425d180b8d2f56bdecfd941959b321b268b55505639f084343fb831213b62a8319073ff1ed2fe148c14e4cb6a2633b1872c667a83483dd416dca9e28d57c3ab5edbde38b553b37150252a14fb972b19a36c4c8e9d3c164ac532f542319ceae92561ed4176fbe7780119e23b1a9d171dcd70b25dd73d890eec2ec3bafedd42adaab0ad444e5f97a112125f9245096eab1dc98109d26bad0aa9a5e827723dfea8610a49fea8e4286a419ba920164749563030b08b93758d6e80808e5aaa1bae6e598b5a41505147d3513d211f837481d374520f2ecdc9e72c61a2639753a869f7124908729a292ce3da5f0f7ef4d4b37d0fff02127219a17db9b86f1762524f20eadf550be9350e2123c7435f25833ed249644baa9d26e35a9b6a92869ca5ac280e36d61a77c9121b0d41cb9ad68c6af49239633eca196703f197f685f65e3f330a7518c177a4bae21353913951e2592910f94b6a57d7577cc19a4529bbc1d1cadd7beab4848b448c57fb45fab8c3d15cbd8a049d600f8e0b85bc327a8777eb59a54bd1be5ceee8b1b9d630d02e96a5991d03519be301a5bc89510bf514856fb0d230e63cf23723ef093eb362c34a59957b57ecfc36318cdd672c540bd41dc783f5aa9da0c9a17667422c1b8b39c18d23ba29b7aad07cc782865b21a05660a8ea1355dbefa7a43d3dd4ff10d898d0ecc0b40df9675c5e8402b062c18c8a459fe292501c4491601c1b04695a0d90df950830ea534522430878b662891dc44c3ec9aef46f4b17969fae5617e5a1a7367f3e5a579b2cbd3bc14328e10b9398ae43e683c46cc6f70a6b280df80b3d4476dbc9db1c5c57217c6f861422c8a388200fdfa6ed4d0c0b741bbdb117d24079da55b1773182d7f26573a8df456cf57a737b404dd1eb85823ea926b4785e3eab36e3263cde350f2c1749d6279d18a606978efb055a502f77d2aa2116715c7c02d3f8f942e7ba3614b79f7cb9e4aec78dcb79e301203e1cc8284eee27610476ad95352102dcd6d885fb47d0935b1cdb270d132fec9d1ff248ce42d354d5785af321ed382cf1055585a06a47fde4b95d5c0148fe52f8796940ae169aff64d48a16d78ffc2006906127cc141ea8a85138adf109cd9f192dd1363eb90e6fe0bc1e07d99dceedb76182c7982dd2e6e2154df19cd902a024818914e5f182ca9f9060e58cae36dea367958e3f55a8f0d6d8f17ee968659d7f3f8990b7974926054b4e5433195d9c3b0c4a499d03263615226c26c2bfa106fadbd9eee3413fa0830d1b9c8af691e1cc62a38e0b7998c587517bfca7f0c8a7ce00170f67f93e8cbdd2ae9ca286c5b69e7c7936c8b98cbff6dccef4c2b0cc7284a6f6cae42daab08b3121904c810e45465ff71f65d956dbf6d88b4c7b1607d8ef3eb9a4bdd0e692ff3d439dd07a273695151d48fa508dfb736ac9c4e558b4aed660bcc5bb02ddd3b286173ad351eea4c35e3e3014f88cd2497216ad8ca973adf8cfec4cf1317a9cf5e4535e948ee59db7918294987df2969cc0f2bd5f29c9727eb349eda1de2f1aae56e285f2b6b12f8c6465721beb22c8e36151c3d4889d1d114b6bdc517f720bfb606283dbdd9f0bba6a365f5ed2c402d9231d17831abd751c79fa1054253c5ceb8aa72215201ab68346992ef44142e5bc44b2ebc3fe57a4fd0635d1719488d2dc57369b8753364787bc06e942834c04a45b61662196807c209e6c918579daca53c9cbd273e929bb971247125ef154efbdeced899e97b1534d0f8622234db5045ed8d36f3fe7ccd23f65fe3f73ed1345c8c810f121ff446aa9a77c30a738247fd286f3bbc0e41e8490e91d00c31202d81f4bf7588d87fbe32b01dc104805326500217f563432c1fa1c636b0f6051e2e221c6c2fb4b8b7a5089f247e101b6720a9f0803b746a37b28467006e02e84354dcff106bb61f5c8c3d700f3f577ee77f710eabe7fdbffb7e537b1dc6fdf6bc2ffe3fc4a1a4564d27e6dfb299825b25d064c8d22a07cc601a23938306fdbb51549d4f48d090ebfe827bc38c81478583f8ff88b56479bbf8ea434241cb762dbfc516295be7fc3443e932a41c01aaccbbea49916b4a60cdcb2dc91c0091050320ba2bd3443e5d18c6d1b2f93986988498160d09a4b846cfc6742d1073848407e19b45e6d734ef406ef892c92eacf4fe6af3f0c8d5d9d4f8acdc67cf03c9a15aec19a105b1c861a48a68fd39fe1798403768f3ad0e2d86f3fa4d4587e7e631137e2b4dabcfde715d955cd0ad6c18f56c588e94636044a3c12d360f42bb82afeab2072bc114d0b174b256c9fd56024d85299c07e5ca1027702e58afae27bf623c460276dd2333d460d224640a4a5735056e2fc29b7cdb5ca6b87cde763a9f3000350f3913e4bcb00debc9e85a2107148c4a1a8eaf74d2a82970cbf04b0fb6b0097dcb21bd0271e85b9476b073932a62a6997acb51a1c7dcb81e961c8c27c0caad2ba05bf4bcca317d77b2bc4f93061901e889c764dea33312a390504aa0b7c03d9e062b891318aea9cf4515a99443396d2bf93b096981f335239b57ad6de411eb3083d4ec6c3495272b33cd6513cbfd1bc8721ae97bd0e2940cd3bc650fafb0b0a3337c325e4ff10ff9bbd16f7f9d7c235b34512072450d9f7fab0ab58bbe5b22d2369aadb6799c2b5f5320a43f2eed9a6177ddc884c056d5d6a9b41d753ae3ce6dfb3cf8116cdb37eec2f46a6aed26df20cde3159e644ace2eba089f6439f19cb3326267f2de6adf712b5bb374dbd3a84f0447dd75b0dacb1f0c65f23e312d27f2d716e5bdc5e8104daf8893400b344f4a490b85f440758c30e43e1b8e03a2044a16c8740c84a595b1bc031df8d3037c70ceff007f01782f380dbac96b8360cbaa6ab9a4e8a91214f9346ab73cc299c60923958c8e1c361efa4d79eed407a04a21721971c2ef9895962b720542c5884aca461754c4f61adce7c80eaa01f842c9214d4abbab60070cd8b354f882fd97a5f32ed452ca31ab7422e31b3b350e45b5b7ea4b4d0958ab9a97674d027e91cdeec31836294fdc0378a85f7865da49287e37e1fcbfe3557eabb71e0ce4d8524f87c1a887874b06eb1c36dc45c8a3d958fbafe636d7a714ffe202a57e6c2c010703d6bcaaa23c0f993cb7a2cf8bc15f7aa932e17edfe1b9f52ba367033a06c00ef5f253fab0a6b368d8e62b8d484750eec1a0169188c779fa75b8e55d3ccef3e12fc4cce9f4b9d09af9b7ec5fafa7e139753ad284f1abe91854e0d2c565dc1c204d36b2f24907a4b55cd4ef65f03a30645c92fe9755f9d298e46f30be68af1fb59a40dd6fa1dd879f512f232b5622de70c63c53579fcb3e784096589242ea1f2035d45ee3e13c23a42c1b139c412b6392d9571d652ef164418ddeacc006885b57eea27692933f6ae4c5176bfbea1aedeef027d24c3f1cfa8b543ef3b086969188be54c19bbfc68948d224e2021d3da38c25ff26e3081593cf2b045b1f315a8c2129952dfdddcbd3800a7eb9f0a2bcfa3bb831f6f5ea8267c52a59e45739eb58d0f235ae6ce2dd13bb95b243a2d877b3a0c3518cdef471aa77a1013a87af99633908e88f0e35d3122a3137303b76a9ded0d1d34b4e3860ef811f0a10690a0634d34cf87b3fd07a2b74a657519d72c48eaf1bc8f7781484eb0e2e0a786dfd1cca1b977024539009841e57f6e23c0cb645044fb864664011cf200bf694d151791c374de2c97b257c081fa46c2624ac02d39c0103df198092b6b0281901840cd0700cf2339056a2276885c577d5397d0b20d2e301cbdff9524cf9031a8663ef09a9d2338e3ef9e5a4f575783ccdc588a572d46424e4964d72422e149a12f787a456a968fe66931959153426782119ebf54e4d1734183fd593cd3d9b64f2de73f1b9abdab83f4dc5ab688ddf29480471b33b2842128ab47a4f0a6f181eab3af49c2f53804014c5ee2edba24279d1585a455e047e27c686a40b971116e8f1acc5df35890202844d697994982d35b89ffd26e68f20d77ee9ccf83a202d8bcb38c8cfc80f3e6c4b4fb55d0e18bd030628fa7052ba72397303a832f9d34d1d855ee533e2bb53c2876ee75dd00b311a284a317f57553e02127775b12e5e2baa9730927ae839b16a86dbde2be4693eadb53b9fbefda07ab9c23edd77417e69edbc41bee58e35f001daaf12da698c80f2962889bf655253a52356a5a13b6b922807eee61d7def7f36590b03a7c13772e7fb1c3e4e1c398f9d29db9589dc180388b1b9bfbdfa48112e11747755bceee70f3839253dca89ec77055569e392413a154b5f08fb4aced71f61630b5106d15ea3ebc2296e746c912c49f394bffeb5de917ecfb93b0b4bfbb8c9fe7d79f827fac3fcef6fe5604434127b037f17b55a0cc745f7376c11081ca926b1ddbbfc36345783fd1eb4f22878e395e9c2d2ea64fccf0b60a70e848becc785918bd5909d26e8fb75f614fc30a3a5eeaf9600dd7ab5d733aeeaabb07aab5b3f85cb20c23d80fcea0073ea54190f63cd25bb3000f4f44c9fae8a7e358bfec3c26e94fac797e0ca4587690f6d51e073eb54f6764ed4190218af7559f37fd3e12b99621bf81c6fa22f0d6d0b78dd85b1449769a8aa45e3d91444967406d950db33e77c4fffd148d7f7ccff5b691284e315e8ef636e40ca18f28f20cabbf2897a7c73a05da11b26595f7a7a092bc03514cf42b822094a0aa793fcf68da6fea01f5c3f3b2f523491261b03ce63e813507df5e8db4765ee5790f965fb35b08457eacefc9cea5909221864b9e8c8221f3b6ab79402c580aa1f6f4c49349cf7bda725c4f6e81742c91a0cb5381ef7a342fff32ed89ec5ba616e33009d6946c93f9239a3c62c7a2960dd0995adf1f157d67083c83c0d10783d45ab0eccc057cade2b180826315a25b398e7ea86b3d9710e727538b0e0159fd56cec57e9a28dccb759a2a8a8f4e98e7a3c3ac7dbd7a17cdb611464f4b7442194a53a11c9a2f7ef223243a970f46e248eb1d7ae251b70220b642aa97de6625ec7390ddc9de2fe7d53d39541460ae8cc2d285e207c71c961c96415440e0545dd791a3f618f4b0b1d9f943a3ef84c8da2ea9090238f3b668e2b0b2e0dce571b592b21ecba3a31f0a5fcb8c5207bd5dc23129689b56b990df53f7ff2d6d30f9ee06d7a12114c1293463e57514a6868e6f3b3d0395f1bc79b61c6f83df212c7d3cf8e3a41fbc3e07036e02b09d0f07cabf5a51c579e1573b7e08fbb7dc307468c9802ebdd2be0c3b62d0cb2d271d27d1c6df1c6ff57973ad19a967f1d0b9cc36315b2d09aac88464ce327a2ceee9f60049ce0dd75c4a27ce404df681a9bac48805fd1874fb576450d9738921b48f2a404420c0de236e3fb9ff46e0001b14f218488184327e959796a9d699be3ef3c1d365d82a46656d0c1f34828c9a1c9ef9c5f5623930cdbc56b87681d885d4a02d0f8ee46c0f60ad1ea4136b71f0694cd5587607e026ea1458e00f4c899ac5b8824c57d063d9f670cf65a424dd1300630a6b2e193fbcb878181d56de8b92e1eb8fd9894776722d69b9b9430f1e94a4bac1d4f1b11b56816f7c2bbf1ef60efd87e58ea4683ce8b0d58220209fc56d5d15f456875504496ed54baed5f01dcb739422965ae7ef834b359b4ebd82ffe5f5821cca2dbc90a612144afdb643aca29ffe187d12ffcd767286ce1f731937027bd522f6136de036e0eaec8c927093c863d69a136635d574bb17d044ed398559c425705cde286218b0c7f34d2fe9020aa49a02baa5ec881f5fe81e7caa48a072e5675fa928242e183eaf614a6836b281ca95c8b652c6a4edbd98e5317f9e48beba0f7c36fb117d14abb59b33a9461d91444ab7e1a2d5e92fd8eab774133f6b8363c540035afe05a2fa06ae8b750c8c4e02ef907302a26feed4d24f4762df74bfc12948ceb9f84cbc947ff991e16cffd7f9fb371190f9229d7c17ac793b3c8f12fdaa2185808e2c80c5d4cb21167e5d24a3c6ac399d935c11bf82325ec2c0c24c02693c158b1524cf3c4da43fd21577fd7c2e72163183b9b52fa2b7e1ee7c3616fe299ac4acc634418f092728e7a7c0c686592b4e87799fb481178ec70c6c087ae55e3c9d28a857fab5dc0052bb74d895c68084e18cd816b50f79ff0c3a0b78d0ee377d223648d6cf8ab43dfac70734ebc4ccb84a6495e4d059c2d0c1ed3f5da214c9c67b844710a94e92d38018068f0a0f424710e6ea0d9e7f54b4f56c8e25a5963e5a7cb1b3772e26136411d14cf58bb7bda8bb1bdc2f81c986cbb452a0d1db77211974d431cea89a8876d2a75f823fd10119adc286540120c7996f101bad3effab8281f4f8ec6915a1ac1b632730e7f7d1c495cf453081924a0b9568c6ba08382e57318d9ca13769a0b30164004f9bc51fef79e8a3f094d14d7197f3020fef7182939411a769f84828f4dc1a1981e75d47dffce71d0727b5e5950f9c909213bf91b69965041751cc90424e8c2053cfe45baa605bb599c1b55f493323a5e77977e88262603ca7f9f0d011abd344ccf2038429140653839d72320b5f9c526b22b65aae834f7dd74e14f7eaa89d818ffc6766afe160f90d8b2d7eb004ed3d8db4d9b8319874763f0d7d312b96ab3e685c40a64ed112c7d0634c1d2aeb53a5f7ce05942a568202fd31d2664a6c533e5c12c66fc3997dc95b78d944cc4dddb641a9a012815f23a23ab4a05e2c8efedb9cf7b014520b319f9b5702b5b913f03626b0d5d4c35c72c61a2ad7793e13ab9af183bbb82c3876ea1e619a79540ac176782a15e9eb8c81ebd1724cfb63166b037687290e323ec693a7ce973ad6c7de9a51c291d0fad8d582f92e35e0f29de3d3c4b13f22177e50dcb144921c729da6313003c193a4a6e5ad6527b0484358cd7cea08c5394ebc7740db844a31a2cacc19047be0e677199ec807c23c70939677f0b8a38abd3c20512a5390217882f5d8b860316d5e362ee2c3a74b3d3642a642c15614de3692462974bf639d6e5bc6a5814f95abb34e2004507e2c7c36a2e6249023f1165cd2a3feba3e79e930be66e4ca7cd72119abd54dd7f914a571e7bf27cb4bd30c2d644402817268512ad48e98f5b8e31c9f45a17b4838cfc885f1ede8bba5f39d1fb88f1b20bb4fc955c4bd99e307d228a834893db1ffa8d976f46718e6b147295c5714658c0f2d670e503411beb8b49b6d2161b8a83f593007428cffb5d8a1150aee8aade61af0e56f094b010c401e0a945a76058a65db0aa0b51df47e3fe14caca22ef8de89da2047c5c7bd18ce96d2cff43eb07e0dfa06ca840ee6c9ceaeba8d4c41fae6b1b69b922ae86caadb7e9099ab793a59da29a835760ad6f3439ed03d5b12a034fc87fd9281f189082789a9f27370993f7ee4d953c1305a1c68cb031d81278794be9b8e6b24386552db0bc339f39bb3253eeb657e18741c64c6344df97236820c6c4cbe5233bba225dce54a0f4cbae6177ab77bb09fa5597b7b26abba4e77174e475c9f526ea3b9946f9aec49f387835504e731cfd1456380f8009d1f7b7703f900886699562e756dc0921dfb7ead4e3b51a1fe8196d41f2ed388a88912fdb2adebd4ee59f9d076cff2299483a12100fec9c93e9b0a80885afdb5d7d92abbc7efaf29343c06a8b012c545ccb7c232c534cc52b210bdbf2ac5fda9365d8c8f9ad8a9f3dc5d139de9fdf6c28414e9a7bf33202cfd8362a0a735040e56c9a9c2b5995af6abe230033e4df1e94003e5ec8136f016285b414236eaf29acd48eb4a57cf97e50a152ecf9e886775c52ef009945a8a201e69d8521f56b7f6b2979e64f1a262168a1632fa4d2aee71a1e7323bf56977a43126821840308c6325301ee8abbd90655a208a0f6315bf62a098e1589575b07d937816fd8bd1fef6c58601a8e00ab16ed353cf604b5c26a5584be4e4d83ffd7dde0ccd6286e3d12f385768c99d4ad650ed1ac6dd445751019f3c3a7f1777c5598d3ee2f4c95e17cba700b3782674318ac7189917e30a7ab40f818bb61ec0def58090c09384d91baa3ff2399572e8a5e623aa51898fdea80589b99aa6ae90216c7cb5b072f625fd73b127d6eeaa74c118e7f5afd904a386a3aed7889afcd9ce2aa92852fbf740065fb2b54c78ae24c2579d8dc46cd1e8f89e68f21cf53083104a12565e916f902a377c66ef618fe59348f39ded45daa682d35f2a82f5e7b31e922953785fdc713a484b66046816f8ef8a3caf19edd630a3f3859e2d8bb2eed3b340270becd018ab4be1ffc6c03c33087feef571c4d27dad3c8b70de4f95fbb9e410a4785371bd0bdb036913feb016683b2233cefdacbed10a69d9e9ea88a2d96636ce1aabf81a8231fa9e0fe754adf5351825942998445323da4d4595fa35d783b1d5d93e323ee837135363c6c03f3cd6b087e42a9fb72490ddb2003249ed252a669e581102a465f01fe7d0e9bed66a02f1a437371b9d645536a222734a0f5caa9cd8f944dda79d57f4794118cc8db0bb8575cb693d2e741eeabe18cfc8ecf10980a93fda4c42cdbaea0396939db5e0093b51855d877ea23dc7192e9ffdaaf5ffa2e3477e6e1772535e83cfd398c688c9852f293252f2a5fed9a5b99b1ade7df777cf66fa73d554b2323960895823e26af777085c4a055e59f6bcf60ec5f3e462d583223422e310254bf5b79c2aab4953ce628a9fec60978734b4b983966d174279ce1093545e73ca12735dd1921c275e67e92fa40f43ccdd6d80726999eb7efd84ac5910766a4b7bf4c5266bc6476eedc346f59c58341b8cc26a2f23cf06549efa52e0290bcf8506e2d562b4311124150a08339ec40eee9915d5913bacfb60fc42c7547128e6ad80d2eb058cf24391b004ad605b22540b848d0ee7039a247fb0a907b075f7da2d903c4e2b335a340d9ba1d85a3196d40b621638d7b87544597adfc3dc533438e8b09ded7d6972328ad973110f9418a56e5dde385c630ea13c4f77a58e51b3c60463f7205a8872cc4d3d2f12af30f365c591dac2f210a8ed02776c288a83d8bb0a1a4f72bab44be17eeb30aacd5746d9b2223f6737aa7e055ff39703dfa61d38a28a2e7b41701f837340f42d078d86c9b57109bb61a33b7616ed3a21d702901597a621d1f2c9c3a9e8b89d77176cfa3ffae2778b4ffe80daf10978279c5f5206f72f39026d2f44b58de670777f6d3e0bab8d8c22129a61046e5dda90d5db1903654d8ca1b6675fc08df859541c77c1957d89909b2f98e8f7771dcb54c1b1ae09fcf2b263f09007c3000c661c528f470c72488e470ab491b5bd631d2089ca702b5b44484b7e12e2846e4b4805ac7b67d40191d42120c5cdd45d0b831dd654d0ebb44d71e57955cd5fcddfd53c148e0d53363a755414497feeff29144ee571d3eefb9250967fbd54d2a6d888490566fa0262c0caccb4be81d79fbacf719e7293f786fd8ff528cc3be24b7cfffa56f53fdb7526ecdf6dcf20ab95cf11806f0cbe36c6a1db3ac691f84e43e47cea88aac6052d5d3cffddc09ca5a40820b0ee6315e9e3af65ba288e35945b65658bac3cc9e58896dc7c7b6caace1a19a41185c9ef456aa3627190ec53bc0a06c5cb5037596e578134607e07f2734be128b5a38ab3bd486f8ca20e96e2020631c844110fd8c8bd656d4a80599073eefd9e6445486188d2f4a082efed2a473be543fbaa397f4b0181f96a849c97562eb7d8ebbed90a84908ddef4fc2ba64e96df29b0b87ed9bf08cc09845925893b6fe810f11fe1536300d18c57ac3084d73b9e17c1787846f94f8d15ff871fe09018d1615da6dcf72b9b087360895f267b24a8c9983e0679bb47b458113e1c899febbd4b5506af4205bdf560097084a3604137a2af7144faf05b0152f0ebef64e5b02133c1884e965648a6a48c670846bf943e291c3c78a5311a6b4416825ec53f4603e0654289ea351e16957130c30e31e8c886b34a3f2a993206b7968362f6e5579eff8ce5924626c6440ba9d7862dd50ad809ba403e8bed4cf3f6825e6fb3334eb3a13df05e4826df37e4b9e01a8a42c13fa423c17aa015ec7a8f5ebcebac433a4ab80439a0a20e341c80fdd8bc3f4ad1726c642f8896dfd98cd5a3bc44065acb9b9d4d1ca599408d5845ec65641b8ad3db1cd189b06c17d54d61584b67da1e976a8d4acc2d88a499ee1c7a20f920cfb426918fff4c75ed7b3b8db10521b5a83e56276d85c85bf888f7f282cf60064811d34f172494d8acacb3f8c85ee617573a99ef6ea935146e31633847d3ccb787d382fa41e23d13c2d6590561f6bff47c5631cfe902d44a9ada6164f8d3f5d157c1bbdeeb907f7411f6e95bb953ad36db2aaa9180b31ba5b2070a6e550505275be03d6824cb0c9f9d32866673769f38eb16a066978ebc631cdbdc545791c24080dca3abeeedfb0b7e5e71d486ef494cf98c99629ce20ad64aedc496edfb40d643dabddd915da78425cc751a46746d370fb603fddff203e4edb00cbaca91a559c35efad779f4e6aaf836eded721debb0aeb8f693fda3598670be92c94034de6a9f373c97a73d477134b87bc962c4e3e45b2ce5e5d31ca349c7a033d02d140d60ae8cafc1b15c36a02402156e333063f5f78381970d5e06d08efdf961f82d33c67e858b1a55c57852aa5bd05d0f059b76eb78f3b039126d4f7a32270f9c982adba92c310c95249a771216655f82a77df120c1ee1c74189d1212c28ff5c5f95110f67ac3266c1d79543c77e6ffdd859d61cf995b2d9e8b5bf4c129183001b1628e49b427990cbb7eff0f527b0bae7991b814f10816274817e937fb5760f38bcbae6c8058bbb0ba8ce444c75a163d33c35a60384f6f6432767412538a2ba915927e9c691988fb0e304378e84cf928e178a0ad29a2b47abf8631df06fcbaf2d22c43edaa631ce93e2faf93374b4e07861f578e09cfc6d582454d6924193bd0fd00f17c78583a4f821e90833ca2f419ae573e05300c6831c29c08589c145dee912eb5752b20c8edbd3da23dab228e13770a8b30e20dc33152023a1d32e6d732bc1d6ce0fbe0510fc1867417d48503ec1bd967c4c60be28b3d5ecc330b04e158ffd0294732e382b9667cea6c5826ffc4768d6d557f0137bef8f23aae77ceb89d9f57b327fb0bad6d7cfdbc965d9371de2ace2f73307c145924961815ce1d1f7d27dc0436461349799018f530b8510b9b683db19202f633d71fa78a9574c3d97d17b3cb6e5b3c6fd609a074b1c953c6947d55ecc8e5172f06efd6ca7f7118300e137eebf90fe45f9c2b086e4e0a4e5bc1a2ca4d55223908ff3303a5151de571701cf0fadcc4eaf9ffe5eaea347913caa6baf533fc7f1ba3ae3f1cfea8ce066eb7b1ffc37d99db45e49667430f6d92d79ff1cf74310e3248ee7a4c4a0a9f39fad2dc5bc4f47bb5ebfa1b77aadb7edf88307253d812d7b7222caa5d13479a5570ac88c9b12f0166bb74d836a21289f9a96a9fa99d32077bc3a3cda676b8fa1f2d53ada6efe32e592742901f821df5964862876bf23154889d26a0a3a461478a123925311a51a1fcc4e33a17f71cd15939b27f5d7c2bacd18a74f6b4649e6fda037f3d577fd3b6b7cdca2f4f7fff673d92101e7bd3ed77824424816f90213ec06a5153c8a246aba5a0494eeaeee755ed30f3fedc0606faf2ee1bb34c9343bdcdb45410b4ba37cd513e140379ede352fb31440cfe139a94138999ce87f2a06621d321182730e836d1cf504d7376f22d967826362a701300b880cb5a6fc0083852bad2383c2420b5d81c3825fb5a5ab2792dcacf6c8599bc611df9837927bb07d7e49e7069e8d0c5d81446e65bbb50714c3a5102292f5c4808113b28f8e6f7b133ce875a088287d8bc47fa9eed92efa985cfc307a33faee4e4f0c3925fcedcf92f7915d4d92eaf3aa66e28683d2a7cc942de142025f9eff376b2b827b14494373de922eeacdaa359dee1d8259ea3fd3d299f36721796493acd349982c1c3d32df9a8ba7a81a99444471fb9538f7023958e0e3f4b56c2358b9fb538c9bf57aaa06d4303ca76713698c44a1cbfb9d97b21a6689c6d4e1edcadeb5946359a229f8745cc3b68973d463e72a88b509c7afa9f60b25962ebbf3b8297a965169ada1ff5b156c8ee1acbdbaa0123e74665c2ce97ff3273fe2fad25b11111d7ced7493f0d227d4e3a070e8c8141ca1586de758a6e1bf43a8e656507710961b08cf5ccc3a542dbe19732ad5bcca64e46dbc52b986a0046cd582a5885291d4da5c1e5d58569f39440bb8883812eaa86bf5864ce011ed43c956d4c6ae5ffceed5f9b606a1e9900cb1f901c1df9bceeeb402bba2087f3e92de1ed49734996253e69fe11a3e5c2792a8838013fe566731cf38a1e3304d80a33874484c1b9871e9ea1c5772f410c6f5f42ca1c5fc217835ce8a9c5ef273a39af99fdaf94ff6a7f544948ded042e6b799539d272869fdb20f2dc2388f7adaa7c42b30cfa14f66a1069968e7da9647270f8a3dd3f9e09b014168a56e24b4252fd725ac1090c49d8a40eaac8eb8c2c53a791951a4640299141f0c70dd1063138a152a5e427ea90608f46f25ab67b327e395470663afe969a67b1642908de2c208ed889b217c946981f57e2086f99b4b7ea328da2556394c704c611f0624a15034924548b80e519df07a66ef3b14247a7bea6bcae2872c35402c83596136b79d147a2a0922ac9a44bca2d83d4271e6806c31384423a479a075d83f253977cd0366e1edf38844a79835eae2bd9d5d3f2e77461862efc50469d3b4883d316d532f1247666fe5b6810a20b8762a073b6b08347bf74a4533621570440db655f5059aaceece35115734c5f8d481e27dfff45908242ec479ee284291b45b5f1bbfc55f885d1cab096fc35aabe9969e8cb474edf21a9e48af2815146a51915ecfcdbd673adf60f9d1bbf72500092603d3f89d12943bdf3629c8fadb070e9bda32f8d91b000541a541ebf82a582645113d7b9ec6f2e77be8a0e98756330006e1f96b8d289020788c3025b880399a08b8af84cc1922853dc4ea58d731b0e25fe4e626e9fe4fc86c80dd802a8dc6a06b08d86ba52c73fc889d2919d3c20f922776467c0213c658d5ee208a539e79d8c8cd38201c5e513acbf286e266143f924d1ea195a910666f6c4af9c31faa65c7e28c88a337853fb1f5dce69e82ba1388447293ed6f808170b52543200f3fcc557c2bf08a0150aed50ac256ebec125ebea1cdded3fe963c03d131fb88afef0f4d81c2c07ec4218d9fba1c069ce5dd72a34d4eefebbd28e49261933c5ae7c2e9e0be5cc5bd9a0a880d0feb70399858b14844f645adc9fbe6cd7f3f4ae60f734f222ca46b9a4cb2de9f2896037a5e4346e3e51470e339f20126bf5256efdf85a78cc2bf9cf97e50a1dc0a65e8d0d27d4f4fd759772fb8c6e356429466302687bf78e6e345d4310ceacb78ccdedcb2228f8b723300836655aad6df96a9d353f077a85f573eb88e5c5a7ae12df5f6914d1037c75a9ea615ab2067562accfbd68640c0e1ee6e480745bd7b5cd7bda75bf47a1a2baf41b6cb54928b910e633c453b4fc72441ddb9c3863062b656202fa67e579e5ac3ffa19aa95d09fe1a491d56d3f2aa8d1583556121a0488d713800d5042e5229bee8aac6082c6cee4be69dade881b966cfa8f800bdb04b7d54cc400b614067c27008ea3c46dc850f68b0ab76062e28a8d7cf96a5d76e0c5dcbc34bee7b993479c42ecd59bfb8e5ec2fdaadcdef7190504718b3e2cf392f8a94b230387f4fb329e29c91ffd18764854912fafa58e96b4d5473e9da266bde4521f82f1ad8210129b53ecafcaf629def5967607d9d1f9bf342e2668e932b4721552f416f330fe1c5abaae1c2c8036f0effe29fe43c4ae307de776b79c1c0197a16a990bedd1a3a59d7bb906c436b7d559b31eb7b28f36c57b7d0ce82d45f0b07c274fa0d313c95e6cd3c6714434daf9d25b96ec42b4e42e0b23c793a0c3a5674d3099284fa5da04cefc34b7befbaaf096fd5c3bff953d5899ee2e867200a351055fe1fdd0167ad05f093f2fe7bdc6dfa908c7d0aa9c4796dd8bcafe830e26c87e8559ca81c803378cb0d68e0a65f9c1375f29ec6a8e2e6ae456cf2de625bbfb17addb660772f4cd77f038cda6a733250a99e2056780eb8e41b85ec2f8591766ef4b7514afe6b369335059308ddc6ec26f20b70e5ab6af0103f2768525686df907ab80428107fd259b494851c7106c8be4c75edc507577129366a4b6d45a1ccdc0e6798bce46528a74705bbe51dc0883353c86e98bce08430f86208c6c8011113a4948c1d5167e1e574b067271c6c36ea3491b9470e3d54dd13502a7fa343070ef73394d5d3bdcc1f25120cbf39959af5b4580dd3ef0273d4f3c6cea6b4250ceebec416d71289593e2451021bfbc0c68ae0c899e85d1f547041932695293d015606ffab3e35b521db17b3f40005c58b856f110250826fce19a857f79a2d80cab7bf94a4e5c2295ca04f7d61a488ac01fd0071e124ea829f307be51b0071fcd2b0e6cf83c4f35c693911ce1e0dac2d03e8a57c43e15847e78300af0152217f8476c08b7d25995b4ad3410cd2cd28f4b0d16bbb27380247a95a61ae28022d4dd3520d88ffa60a71252d8fa5780a9bb3ec9dd96f03c034b14d0c8499a754ec4bb3303d5d260ec1ddc4387af5e1ce3a09dd5d90f5406dbf9c21295041a89e89239d38f96845e98876164be5592fb5f9b16e3482edb9dc9bd2d3321f89e8d4c2f50f7d94e263027799acdc07ac5bdc3e7fcf4a718f406ea7f6f8e45b79396ade3c0ab735e7baa108a13cdae98eb12ebbc1f2d4a8db1a2f7513890d928e017eed479212ccb53aa019e12285c8464ff80f97102622147d94826561f5708cb95ab592320b2183034a9a44dae30617a9cd41a423d587d8190659c1c05882ca6e44dae875589946ef102fd687c28b7608c2314c69f1c87c8c386617cbef9726429725dd6eea76a0050f24d97043afc406ee965ee7462eb6ec57956709873187ec35019f31f6ad8207595e9b7dff198b13463291e4b223874202f3ede7a75d1e344882a157129f95e52035d4beb637c3f4c036d2698827660912e67036d1d66b78499dd87f63486a48a85c37e4901f083ece1fa8c80492f8b338c760a83f5f532b675d8ac7d8bf6b08034ddec6ed1318df1c706012d4265e2469e1e756469d7a502f39d35778082ab6a9ce4ddec5fb8a96b112c49fa5a2f6351225213d37fa87038fde05d6bb940813dc9628ca9a772d764d58658ad0b6be3229186bbcdb45caf0201000f3fc079397d31d13cbf773026724cb60330825de5d04cd33177d2047dacb6d67ddf108bbebc518e849825b87a5e35297bb20edc46905eaa9f77c6d2c16b14282cb39370a6fb741204d9a4a793f0863fd8be3be41ff130c76e87d50270d6bb20976f99563b51d573b058be60399852d98cdf321503ce80dffda1b7731be9bdfe39a87fd4704527d0b434bbaf4eabb1327f1c205f93125fec2a134b1fb39cbe52d792966b1d6d36bffffcd3a48bfbecf442a95ab846243cefd75c0193b2596c05e57df1d815a5b10ebd1e2d42776eb0f01ef951c69484b042e733a52c43a2c7a95ff403b2df3bb915977a6a63ac4cf7e907afc9dd4cf5ff9061999928ec81e3b563c6adfd1b696dc265583c6fc306071b64c40d56fd8186f07ced68f6e2f7f151361f7180bf0dc23faf0c139ab957eb5f8a75d8ef7b8ad853a580a7b97654da5dec2117a049e22ff3d72a9fc34a4d03a83132a569ab8ef5ca0630f9bb67336e08f398cb3fbf4c0105e2a30be8b60e68fded9b85a9a9314ea5a01bf42ccf8a2ae6fa20fc70bd7c85d65093c31a1a0b06d418bcf4390fa50cc0225b825bba41528425f57a27662c5c193257315589047cb527a6af5cf13432a7727b84de5bed98c1ed47d35cb654e2824399c59b2300134a73e516edcf62ce212438332149f015712ec585636e16a7648238ff98fd3d7592133bb348c2fff9670195db65735b5fcfc92e602058dc34d5365b57964a2201ea3f603037c3f3364ce2f11097e81d03d6b39c9d4de54a51323a61a226317928a29eb6fa6b11b7642b16a8bb34419d2167a55d4b787d5d3e5242e0d5bc4829a7483ba0042ddab22679f99004e69a719b3f2e0a83508e22b67b16d4ecdf08806c54fce59677b4c8c28a8eaa6a24e6876f8e1d661e8f301168e1874d327919ef79dd5d5b4b7364f1931f773fe3e01ad0586e7b950e625eec8de6c7a15adbb922ad99543e6fe4b782d0be0aaa9b5045d6140590dca38b3175cbb0158f2e9ba038e982ace71fa5f7fe44fa6edd51279711ec521dd01b0031faab39b0e1d3833e428e326f3ae3e2a929c02c6fc3345d6779b5ff134f8a5f95b03ff843c1eeebefd50882d70fdeb94d150e3a67a807db1111f59f2a57582d158b08913a9e45e736a31c363c8092675d1c3c1746f9cc6be7346beb2c41712ea534440b1c0e50a231aa158b9c2217fcc1a7a1b4ec8355887e7c3f35eab6d02f7bfbf82220ecea49b5149293dea98c997a9848e19d6ff651b4c6db4b976241537c382e999c6c1cb90261c72da0f3d018c6f1beb19cb7b6d5c939a5277c743dc27b90fc6233d2d9d5e061b3568c3da3ec6cf07eec74051445b41d456c3437a11d9b19d09176e2580512f6d84e9dfd1e75f24dfed8fb23669abf1d1d5c0127ada71ec7a7b847658ccaa36c6a93afcb98b0c390d05d1006a597bcfc817c763658cb2613f6910198e2e2c821c642cfa162263cfae82e2efb8ecb71d0a6bf5e64ac03d3bcf3a3e3cb8ec8dceafb53b7d1d9a381b3cacf3a619fa7eb2f13b7a50b2ca3b582d94f868936be6ab5ffca96b87ee7d44031a5132d3c6ab7524cc92da38e87bcc1def0b4ed797b3fb514eb66f782f68e97238fa03360256e71e23dac33db18e5c98d65c3ef714e977e9541e797234459a34b8786de44fb2971312f7c99ea675040b2edeae7253202b0c20da3c5ae8435a17f79a29aba2e1ab19651ab484e96b716c2eafb9b5f0c9f5b9ab3baf8b61a324caab09d1e9e9e25dab9b07cc3f70fc881e03549d89020a09f311388dfe373063665eb0678bd3087c74c2935d344a12dda030af3c1530bb6feea2a5d57acbb378ca7797ce8ea40be770489f3ad7c4ef3d132f3d9c6dbaee83a05da74add6bfd37c4f11d501f6a0d165be99037ba83012588e21667b6d62175918253f36b95796a0bf277163d05ad916a0741aea8dd524827db6a6cd2fb4ac7033be09c3ab3df4d0cdaf6b3f5d29276620e16fbd310010c2087701ca405d4d26a8e46549f195b108295e69a2cf3b7f7efb9cb0010206b0d6cc0530dde4f9041312059edb62ab859e131bba3f36f07da585900a21f6b049961603a7b632ac093cf6fc180f9d68abf9208e18a73c7def7796a2c4a1154a03316c350c238493d9d329533e6deebf750fd05c170649a61be15261a64ab83c5119164bde50312fe0672b36d3f93e2c60b61d7715816818aae72d74be3e89e179ecd01770a1de937cad69b456fbb20a66781091eab094961df491901bb857f2ef88de73bfc2ee08ab8315b1c9c49dd17cb1f625eb5171dc5790552b4669b414273fd5854a86768cbf481ab8cb2611b521346fea6252b5ac73b4f09fb604db8eb1423385da038ea3075eb830edf4d6d781261ff6c918812aaf5eef0acab851bd916245a139ba764ea88fd4097178371fa0a2bd1d9f0a681330ef9ba164cc100bf695631fbf32e765c4b491ff391b53b8e356652b81e98f22dfe4c17c7ccecf0fd2e23b7cb252e7196334802b248fd1b3240676ac75b01db99d5637235b7502d6d3cb9bfb655ea5dde8692c1067b0a76ddcb6fd5c4cca32c4eb36e4f1b208e757b9e8f2104c71e0c8ee26576e52d6a9a0cead83152f9741f814ec557da1cabe05e13b85af8671d96ddb47b8302a5dad31fa70d984d4d47f6f96fa479b2422f1b5d8d019eaa427ff7a1c22f5111efaf1a9a7d5547569a02807a743cb0dc32509c4db2ea71410b659978a2f6f7c65a4820a8de6e31fd926c5745d00f4fd80b2ea4575e644b089747f652402453b2f990a4fcaff96e904f81238487a1ea59f21f15961f64cef36158b7d75c0236f0229a47fbc7b1e687cc5b5ab7b373385492107abbb8469e750772ed980a37bd1ff13b495f7379b15869ae48470156808497eacb089f02e8f3cb9847b1307bf6bfc6cae807f53305dc6bcb5fc4340479c53215c8e97e2a10d4120b69f40ba1584dc3db56580070b085793d0c63a114aa2c9800ea51b5bf2ecbe8e1c080aaeac50a4f196ba53ee2705d20f096c5b236ad9f83c25985d6d442127b41852b71b0125f9527907fcaafae0d50e8d23464c1e81fafc261512800482f9c19b4f198574a1506999743b6886661de8c99fec8919d845e773dd8269e973f41763b53aa982c9bd3f2674187924c3a007f57cf853962bcd53153fcfde33f130560ab3f07169d8e73c1b6f3b422725fd4022c82547d65f8ddfa2a2711c23af4a74c13066242ff8723bd40382a49f883d9f75c1183231255427fb4a07896aea7871fed8b4397b81461fe3134cb2a998c736121077312eeac570caeeb7dafa2122cba37e9851b53427142b094ea2b126a6b7f040d1abfce43719c3ea41f9ed1eec01c236ad939faefd83fb927d0eab8d56d7663fe82ebbce168f3142e8f5883279216f0e042e74b59e30ac75d3b0ac5dc8988c73048b521c619cb9d17b62c99c99386e5249719b8f2218aec20dacb186eb3dd1e7b1ef41695e60f2378ac8235edda2b7d95058ee8bce5fa5b92d27a920d43dc15e349e8f401342de6b6426fa9a220062a7b8adfeaa9c58589ab3ca63067761113be23397783eb698719791692b745465a297bed168c1ee35b74a42b93bbeba997819a4313cffa544c3009de4f1cc9ce96d7ff91eb4b8d0f1d7c8c11a306267a0675afb85932d14117b7db6f41cd5344e24191a85bcf77101d87e7316b50109713f5f98b7d22e6d421ca8f8c6c662eaeb9428264451282c838ef9eb46bcf757e5eff20325a8331a0cc5df7ad7ef3c7a658c374f70d6d1adcb6090e5af26285cff84a622f9338afcf15c19a794f21301c2391e0879bebeda52c01889541735393db4811f6a68ce2e5889232034fb1a0a056e1917727e46f3b5df6d077907459158d0512150fdb4f88b9f72edf89f2f14a658e27faa2b2578144e79f692d21f24b790b5fb6c7b3ff5b9b1731052d0f21279c6496fba79a2050c0cf21b64dfedfd0be13866dd85ffef148d09182b330d136f725a456305789a889b378e553e6c36972892956b847e0c30b61d9fc27d8c90145476e5b8dcc15f86fc537e79622a7209ba17c82a73d3740b7494704244b72b6fbcae3a559a68c6d08ace70cf41576ec6810cab957171ee7a8f04f3677a15ada610847445f68785d43f885d4b59882e96732f1867e53b176ffb81630a0d2b48aec9fb22dac9ea9b6993e028399edfd21b2d6e1962ac19227db12f750811dd54cf5578f084f66b286c4e7c28efda681e661b52067f63f66f9b8b7024dfb47b86e291f1d41767d698e30ba1eda82ea89b6c603494472b9560f3bb5788f577f7bf754fcf16feb666be69f51e2bdaa40f5b81e8688985f658f1cf020506dac15e0276b45721025f295b3ab36cfe33b858ac4d6f4208a9743c2e0eb4fb627a5f3cd8aee115c8768a68ceb170c1af1779c70f89289e5e9b677a4b4423586be5759cc951a7f3e79b62436292b54eb006c48b2e4810ec271e9db6f26ba1ad59212748cd97006fc707b913f917ca4dfeee5d8c242bcd835536eb160a6403f69d94b625ec28bd94dd63e7c96c6e9ba8771d877f23db3acce15b0ce3743fe063cdd1c7ab9e858f03d34ca88edeea6cae7043883fb4befa9b4c5090cba761051fd11f309b6f11c39adcf82523cc79a84f8a49abc7a95a1011f7293f9320243378ef6605694ffe223ce8def9f3ec878d2265824166eeec969dffb8f19ebda57f487c7384b35b23995aa2aa501f25a4bf8d2898a8bbc5ef3f4d33356f4b926b0edb2015b31a0b75f269bbf12651b1d60d4d13438c5ab3ac9347349cf5b6e4868e58db4e2bd7dec417bd299e8f8c135c841ebdddc3a68cb06544889e41d65fc382acba499fa9c0ced60d16013feaeb9de355d5ef029838783226e6b7636fa84af32d33ededa6ef35459f18c85c5f21f870d577ef5fb71db5de418f2b64a10e78e713f5965cb8a6c9333dd2d492860c615a37f5f85a7088286130c5801d989366c595fc7812e2a9400521501943c0e8614326db76d2e056d2e29230f8911d1f2d775b4bbdb81abc7c6496dd8d7e7d95755c22dda6b9a893dd9f2cb0e7abd5473a63875fac1dd1126d4998b500933df0805d0c0944ec1984c16ed857264f30464299a0ddc7e9980a04b516cd796f303ffaf2a9ad788a89943229c67680d99d4516cf39a1f5b23c49ad79fdf02ca706c0d6b9125317f97d944f3e09a6fffdb3f47c689708d3886ca1b807408378d2a065992663d181ac708a471d7dde673dbc178521b9469eea9258ee681df9ccfcbff4cd0f1b3066724ba2edfe000eb6fb75d01225c42b6d1168a100939af6801a04b9f5e0bcb6352cbe704af1b6a852e1a16af38bc684613e85456ef8d977062982165b3b7bd3ec4b56b0150b0942a321a75dfa6fe28a0dda30018e3a30c131d0b7d370c2f37d9a99a87b2ab088c889704096c52225aaf5ce3b21316d1556d67db9c678908d901b61f5ee25b3e73a58338e3a640dd07481910af9dd7c30ee224a78243cbc4b83ee24f79afd8c9ff4dc7bd16677373ef7852ffe1c0bbf5a6efc1eb776a43c0dbc7fabf433521c3fad311aa3d25ab0204ae3edf56ef5503e05644d18531aca9c151bfe98ec4a0d2c11c4db9f527a074eda25ebdc14269f15691c96ffc1758f5daa7620d0dac5247c5fffcb65ec0842984254ce8f84cb0e2f197edf0ef4b4b6a09177358d89066a50df5bb779e96e21458a8ae9274789e4372f9d3e3b53e51d229a87528eb56e766b3132f2b5e0625772ca53f68d4f8bcfbed40cd776849800a842abefea699269662600bc04b8b629676cf08395a4b85c649acd2166961dd2d5d0e4e224eb4ee5fdf6b06ed963d37d9e116467a6c47db6fc1325206dadc1158680fc4fb8b5abdb97d41cc32755ec26ecb79951f14bf885265db044a2247658a4dafa6eee8c088bea7a554d4a0f4183fc8a75e3a81af5c219a63c9016d456d91288093d25755d1725aa43154d478bf371d749ce08401d0b59635bde02a8b25660c3f1d36aa070237a86fb17e5392fc274618721714da5159e5ae0d298bde61697bbe62441b22614d368eed6962e31649704636e1ca7a9dc0e7b63bcd082dcc04f0a0a87dc5b1137fbe59211ecae5cf3eff0bde1966b2bbba4fa5cbf4dcafe0b055e37f72287ff5198ecde1c959d7add40a84f17f48dd9167a5789b2787209a1b8d374358a996473708a5107f5eb6e6fcda597423f77520a4c55c59d04afdbf2feb2ef59c0f61777920caa4762f4efe9d6f1b6c779e35d33c5f81d49baedd0809b934c997074c8035e113a2c2a653698cfb5bee6d8ac4846075402278fdd68275b358e112a202aa4ae854da26a091c7a564a6e059adfa17c1df94d19bc7f0f38089e90ab2d235a5c1e7b9518a7d258763c63fd4cc1eb0c8c8cae0a60a5fa924ab60df8329f0f448aa24786014a3cb0263efb9a74a971d964d35049a825c8a46d6521613cf39967295f7cbeb91fb3b6d51e255d877f6cc683672c3109918cde8aee958fd4e4c2fca764f47503072961b625536ad5abc19d697ab7d8f15340f2d4ba83aa135ae9d6db02e70d7f47adf00f63262a6629141a3e85b335a4412172e0382c2c38d461fc48828afd298868c6c631997d92cbe046a10d1dcbf105aa8ca1061e5d70ae17afc50e88db59b91205eddddeb2667b1d6003db1100a3476684659a0d0ca15afb8f710ac45c96d98d8ff5103436fc77d9e889d72fa4aab15d372df92041f9ac46aa2a3c49d538f1b681ab8468d36c75707425ce0a083f3ac3e52c1f93e60a09885fecc161a4b61a0c593ab15dc5bb71a618c729b7cdc40f0f066508f353a9a87c85ff99d79f22d30074b691344d1cac410b03c975eea025d4320c88020bcc352b69c03e684f5a0d94ee332978f7deaf79056059ba6398db2d71762ee1493249d1d3696912ce17f2ac74fe32ac1b17f7902d21ac2c999a873dc100c6c2f458b6f31b779d6f710f5b9af32050b66dce5b44c9662fc28e3266661ebcf848eb753b431d068fdc26b28a179610caeb864df36ce85c98e37315016bcfd11311d89e9bea3edd0e5cd8932fcf31f6c3893d73c329df3618ef1ca2553fc8526652d0cbec01a4e3c7e1a1eb06e88e4230532d0e0fe577d7a68a23304b070256385e2e8d85290d8004f1bbd5c9a87b70423c6466e93851e7b5cfb1d23043b98bde86bb241f04c3535f0b15a25aa857f61d4d72e3a10861fe0fd793bcfeaf41a3d5b0ff93f7b60ebdb917d1914cbc6cc1410798f8c3813c23cb31e22ff416430009f03a3d6b6aa84aa72794550aebbf5c601487fd8ef50cdc93a73c211ac3fb95cea1a96eeca73fad069eb932e098e96278441ae55c06d5ba621e1271a120390ac623dfc5bc294ecab5fa202f714bdc55daf6367515ad38a9b4c587d191fd41aada5b3ac481030655ad384f0960dca8f4a452034a00ee7f4e5734590edc27685f44441849506fa2ac6556f49efb4f48b59449f8bd4535a0c42a0d84b87ad5195e3430fb6735e11e4cb0c63dfcfcf079c8358d13742430bc53ab59be631d88249a79b665fceb3678bd631044bfaa73529d865525a611b752784e458bc50ff03b951b93ae81b06bafa6f9268edb78a047059011c3bd7bfb0b1fd35510eff1fdfe0cdfc83fad539198bfe1036eda7474bad38f6074b463305a8d203c3236afd7254763a6a1a2697020e262111496bb53d3e87c522040a2308b7107fc084939fc701633c3f294c4a08a1084e5b59be2c8905421ece912e5c4e89f72c564966d0f27b163d495de3e4091ef2b6415b600981a7346ab36a4750ac32366101b7afa08c7d0f6f5d7871d7fc29cf8a1bdfe22f5b6f924186464397069345ca76a698e23395e7764a479bfd44242f8f18341c817cef4af49619ff69b21211e8b86bb2ad222e14ea12b4f0109d78769f3f2b8169d5ae100435002524665a298c7e3a87dcd26613daf7f481338f155528bdcb1b544e75c0a8e143d7ccb9e8ce60e940e38eb267ca4453a256677d098bab81d22d344409584c52e4c28637a73c5e8cf2b8a6e82b1f9e42bd6e173a88833e3017cffd1470f30d434e781cfce0bc56c23d984c29ee635021f12c8d30db540b5d300128bc03583d192a547ce73c3d6d54a52d6a9aabfe37d399e87a1dfe41cf1bf1c2327fef6ce5556cd5395d9d48997078232fc86ed324df58ed7257eaf05cde99a71eaae5a03ed811f90895078826f0a20c90a9545c5b59435d6da7d22617a3d656ef5b20a537f03117457bf42d34eecfb5c2b47d06159ef24148b1d1017a73e4232f63ff15f34050c86c21adf936aed856c1035d5ffedb019842eccc559332789b6c2ad5a14873188d9fbe94d274d2b9a3cd8817dab76ec2477f2b8e0883bb4081b5b4b4fe40b8ed4d274082558ae288a9e852e578550931cd89b6550701501e3721aa52889b1bf84aeb698b10e72124b959e2a672e0b075c8c9f166b6d55669f148744baf4ca699c0fa86e3934fb6965e2b8d2001d58678cf129751895d6ae26cc86a607bf850755708aaaff05a1e6b89aff38de0a56355a0177ef9c80bb72514c10f7e427ac67172e87df2b8f2f76597f5847fad3441b843f0f49e6ae4a9bba3595c9d5e62f6619017a6f115d91663e85713343a5a756cc59aa8694102ef20653a1dd21c71773d4231afb61421eb4effef78e02865bca8e8731d38c214c05f0a0f5f18581eba12aa798f8ddab13776f91c4c97949613e2a4c2b7b507d982140d0aebb232140b1d1256b7a20dc718a65201a4c2569f632f472d54f9c2a9b7f73461d32c29b265a8eed0b12260715ad68106ed61832bfb87cb40702e4bec374793cc0f504a8916ad8817557dd6121f58f755cd7d0a56d96660ede20a0da0c4a8d1092aa3b7e22d4da2fd82ae13e4d5c26a5e19840931c89c0e07251331d7e45f2c59fa3fb236c29da17779aeb07081193453d87d3b40475b2ec529ef6d3614f1d000741560b30266311fb36b66174ee2a0ad585123fb45c2a946c751a278418ca3c881e625be19bed2b557f09b8d782ad3a55482ff50ae7a0c07af3400e99cd89e7ff297ea6bdfb78d993c95bc5884b0bdbc2622531fbf27076ef66a49ecb6fb1a74759fd8075c7bca5375649455c2ae3d330ee2d3bd36b95c432fccdb76eef549fea6a53a8f1a815f0c740dd334270028948379d9724de82631107a11902fae20f52cade0364bd40c12ba0cc0f771995c279dd2fefb7f69fe4aad02c8d80147b537e35013e3b586ef5818e91c77a290987e83ae81082a9dda804061b700e796d42518eb7ab07cc0f3f37fa82cdfbf2ccceaf5b311bff0c86b2d821fa04e09de3123d9b7886cae15ef9e62ded92fefb72f03df192c37fd234a8c91193e1b3a131d1b4f44e01aa90bd837a3f5febad90d2f23f95fd5fe0640933d6da65b5440621dfa2abdf7704cf882401698e6a8632089eb82c77e942e9976c5fb2657fc76b5263222eea559fca4675f92553475b2ecadbe037e29eea756c10ca43deba8bb6462377b049d74735f36de90ec8770839a7a4120ac65f43486b0dd75301001ad63ac02aa66e19265626e2b5ed6573dd2bff0e27eda9f02705c3069e2375b463989f791fc32243bf2bfba59daf8b154cf026b4dbc5e4b6be64336c404bc56c77ccac4655737892ae737969ec99fcb7f26941ef86fc2dcf102c512677ac2ec6bf082ba020274c8cdd2a399d3b41f8c60953b6e984056334fc8906faccb0e232be8233272837bcbc6e6e2e3f759c487e8d1f0b0aa086305b05b382d5564b7169561e543c38e41df6caa6f3dacacec32e1c03a93ec0aab1e345f5b7b061c315b4a22527184ff2a534b7d09f5b866766f66fcce27e0362dc5721c5755c64e139f8026c9904ce670e69fe91bf68628dbf866aa2b11507d5c64f17ec004828516bf805f4e0533a528b5ddc6cd44a329a19d24a325ebc4343db3adde326a8aae0f3e29c2449f571c836e2b2ce2de417901a7b9e7a4400e8e1ae6999a3d9412e6e96e6ba5ebbb59e6147ee332d5fbb7cee549916809e7bf18c62017837a9bb3cee07bcd70b95adda4397a1489dec9fee99f7eea1bf28daf57934a811417d2e7797ddce89aede80e5de49901d4c3103684fc26586460af79658199a4815a1490e017baeaf7f37417e46e2ca0e2a4961fd093fc44c771d1fca844a6408ef26e71ebde38145873d4ab5b3a0e1bb02bbea08a795b68f32938db99229f8939115fb30ba9993c7621097dbe32dd5336ca98449bae9f541707bbfe94d13ba938a5a762630faf4c36b6d9c97c87405810f092b844f675ed875a6f0fc1ce683b413716ee7d952ec1339825ca282beff2ec61f34fe5f032e8b69f3dfe02dc3cd2233699ab98dffc2da01cf34133ec401cd11ca27e479efd53794b457e0298af70b6bbb8517b39b2b5717499f5b738fe832a6f0e6082a95c0d9ecd27853e62b40f8f14da7ce0ef3a93e1a0b02d5adfd20bb23197326a208049d4bef0d031fdd01c8e94b52d6e3ea5953a09a338315f404a1e4a8bd89078730fe274565c87a003f638820d473ed4e49cf78bd5e5c4982c0ba6e1b357d6033ebb2a777bee5e6dd074e4220413f730921e32255c0b1af231cd52f95c598936da7c858d2e8ca1769a5caf3166bc735c72a560841a03cf3fa6422346fcac1761d6d66363e40266cf00ed4c4bded4fcbae14e652b01294805e6d0fd7ee9c34ebf632148f94a5f6551d4569f184dce1000134becf0d05eecddd113738616332cff92078c5e64757f0d5f3c22427181bc8171611a00708971219459501a59373ea17f0a776d8b5c4f9822382576a1ab836e5c6b8baf64113915b52402f3a22d94d435fca483a2efcfa4e657d60b9a6cd9a7ded5a0c97b64bc3c3cacc67c78173fb03084bc70f14d109fed981c0d47c72843fd212020f974099b1d5bb094111b62ec68a07515e55af838697242b102246df3b4662185f2354ff7794f78f3d204d37c0e1ef06cf83b1d1bd54b7092f7d15addc4cc4d839e217a7649db20303abe4aaf31215afa8bdea52bb201f727357c1798f3116e6f71b4e01be0066884e9dd25afd2a2e6d455703f1d39656a4f8cbb825c910749addcefff025c0a0abd3b17b59008ed13cc61e42138ffbc8bee78840ea59813d24165d9476475d6d3ffabc51d463320425e4e73248f343d04f834b527c0f4b0a70c90f9f7b6588d85516867ca1f76af997b9016e2121795ef5c908d2e1724eae142d3de0b822b058505991d6bba0ae3414f0d0eee34726536b55031ff2ba2e43005569737ae9c496081422e867c5656e788465d180d87c3b8a8aa280a8f43524b2bc83bf46a691820fe298598050f7892e0aa4ac23285b54863dedffc4ff4ffac9e05639cf80f636a31d12fc630240dcece59e142bcd0b9749d1f27faaa1749a5de89ab98e901d2740870de1a8d98ad1db3ce715b16ae402204b9b262f41da0b587f1349cac8740c7dece695a6deb43c4e2740cbca5902ef808ca992d05c40b40f8e825f1712f3bceda064a61f1398fda591b0a9864355c996515d9d0a9d5a2856cf025d5bd11853d5a791e15abc6a4b5089c864aeee617afdb15d1b9d53a15f52b4fe3e5396e964298c229e5c0296a9df7cfdf0aabc49ec3fbf5c5559d8d23c9a1688f9d97231787f706cfdaaf051dd3ba1639b10daba7ecfc165eaa387524f77a675edf954d68039abd1c3a0fbfcce7f04cfa8a1567da45ef89287e9088806d23dc09947be41ba130063db2f75fdb62c50a4d3f8633553bd33d1311188936a23c7d4e56999176ad2cab051ef08181b8b168a2c3871a26a45facf364f55c5671e7b16e2fa40cf51bbd2c69d481d34b90f6552c60a0bad4ac807e0016ba4d874bfbeeae63fb3dc79841940489d690975b87c161c43a1ad791d9f857c32eb782b48439d64e2b124c6b1d5b94bc01111a3c62737e2b2aa91b2ad3ff7607f37f94112552b5503f639d2814637bbdd75b5b3a8e790191de4b8241012ac400f46b20c82d269ac9b49c04369ad93f38749635cc39792df53a505ec3e8a6076afb961bac9024dc2621c77f1bc3e20a58d2f659abb30989b13f78fbb470b7eb42d92b8fbefffd54ffdc7841a6b7132a7718d9cafb377c61ddfada130088148208eaba183cd628de3f46c132dbdd17925f79835fc2cb1844c27038580dcae7bf7dfb686afba43adc676b846ab91c57581bcd1f44aba0e584606e81ed2e2ce9fa03d28dc91b7ccab2d531e5bacce516355543747920bb83b90378c0eddafdcb6f83d03f8f034c184b23494c2390ee5a0849d1ee51b0d4883ee74545e3b5c564bee384b8a9aef72693927d525ca0c3bd53443da9f5c3b403b3ea80f0506dc5d86d141b741b4df24ffa893b5550be9f94bcb6e925dfa579857956b1c129622eb761a5f86b78318298f72056c49ea130f58ed2c1a75fd88b1f39b091555623511369ef02d36a0f033a83bc6248189b339f35bde93119bc35435e9f37d735b85196b3cc5148308ac1df9abb3bb94407145fc54f146e8586195596e1c40214bb2a0655e1508b1b134a16be337c7cde90f5397467a0f26e88ff13544f923cba4309efc573915a1018454973bd064c5443d4961cc6dfa374c4b6a751f0066cdfa14bf361d5ce4c09823a76c450e994486da4a3ba8229368ad5014a07208d3dafe7acc5e95ae7219483d66bbd31309712539c68f2099a287825ca0035c257ab4b4467f800e5cb3f52b78906eeec792f3cb1115788aea2ea5a7313ce5e87e930472e579baef8a7cd798e9e5cef635ebb040f95a4e8c9ca401faa690f494190d92d5e691ae067c425530f1e35d6e9fad9dde0346e9f6c44670b07c3838247466ef998ddece789e624bde31d76c26f35e2ee7a1273df9e36e335901094d8ebab639c4a286df5032e34a9b7517054c188c891d3b230ff30df6d0adbf607ddfe0acd7af07ca0a321b3c89ce7f90e31d16bd6d515b54ef91beee6c822694569649685eb534bcc6ebd677a307f89fc8115a605fd03d992eb71bcc504af209718b857f5bd94397735b9fcc193879dbd73f4220aff297f0996de4013248a2abbc7017d53b00365dabd06cee307a61f9db740161506e00caae2b7e390e68705281b7af80bf9ccf3d62d40178c600aae0502c68324f11cde81589e9452d89b0a0cfa5ea4fac072413b92d0f22689ada28d8ee57b42d118af5ba6adc3bcdd7f19080fd85c82a21730825cace50cffdf538c97429f6f6fbfa7ec1f3d2089aeaac30b4aebc1222f99683edf99f93254286888df7ebb14c3f272cb38303f2f56966f865e8193136d7a9312d409a82bad7157302a0793bf7e9d0bd90dd78ad0b5562e56427ad998539ed46ed57f17ec458a73d7c3ef219f8195294ed95e1e91ff7f3d7ab1d149374fd2134be48a6df7e8f111a3f6e0f1ab644e785381d26e193a5d6f94a9d39eacc128dcbce44d374879f8b0ac94134fa9f05b01e60aabe3d6c376f3b1f060cf937d23dc961f982a8e6c2c325f725d7034a5c474cc1ff0c073ca6839a98a435be94dae5037be8dc11c4c19843ee94de4e63524398d8ce804e9d109e89744931d386de9e44954e072353656551a585ad529079e6da8c55a1b7f31e122b12d2a57130dc4d0885497882e5ce4aa659d1af7b7b59f47d4605d880c94ed97991729e3a6d36640789668d75584dd730ea0952ef48e73769d96b7ecc37cbb0f041b8cc792566e4eaed6a0d854877274b9c99d472b15a37698c7d105edbbcb791e12cf93fba4f51a79359ce849d23922b8853d498f8029ff43f3358bf6f949afa41ca23fb5bd70c99bb6ceabc0e8cd4b67c4333b3b3a76f2d741a00b693213661b1dae7bb215576f6ac25cdc31ddbba5e67e806ed6613f7d7f7b9f2b65350c0ecb3b69a66e169e3dc4a54302b9ddc1964229019b7e48244de890c5e78126c8928f62fbd6dc9c036f4a0e12d83ca35ddd3a451d6478f61f09a41268bc11fc7e3b77c032b0827728c5b993305e5d02abe8c9d18216c6a6cb7594b6f0d40f045423784988edc9ec7a9e7b2bbade186092fe71d2f2b02c4571ef7dd6bda4385cec03393434dc3f34f1ee5ab2e4633f3647891ed31d8a5ff7ed23e7f2928b1b79554c077b52326efc93a5c868f9627a9116261960902503936436a02a996745a13bbe995f17f634e4d8484272dd9de494854f2b8aaf09f822c0b6a6c6ef36fe72700b2ce313671100cdd33c582a7decf4bfbc8666c5a8e66406179fafcc2a7659c12dd54c8a1b8a5a0f1e6d85d664817a56d0778e1daf554b7a88c7f32ccea81c1e73b7a7d2c30c6d9b5866cb6dc55a854db0369e3148ac7d8e6a1b441522af510f78ce43cf45e6ac63694edcd9eb7d857be164b8e52c62d6a7b5597a62d1b3e47c8aac327122a2f9bb2fd7d2bad105813780e601d58c47e4af0bc40d2ade3e95c42e6ecd4c570a2e94fbc2a84f7096925770cf21ae243f697758b79baa6a187720c1872d3e2e359882c1f9beee57d3667f1e0ec79f13fddde82bb268cc7f94735d6dd6b31dad8a769ed59b590e8ea7bebeac5623d5415dea0a38f8d931f3b3c3e1f68a8084976f7e2a378e20ddf32af07fa4926a026aaceed29cc5f8d7ce2877030b1afda03450590fb7b3a06ab77765c687c2560118cf7cc7ebeff346dcf6f3ae175b551b4b1923268365c95f91d01cbddbcfa37d2e8adb720de69d52351b6f5de063f60905caec52e0c47047d10e2695864793b1c55085a5723bec6afc5f765b4b7c14f6adad396f1d2fcb667a6d28b49a556b3275e3aa883b4e797c9e43685f21bb26f07cf883040974f825f36cdc32e9a4f4cc5abdab803e23036140a5f86fb97967b4dcf6b6d6736e760809b990abf5f5fb7170c39fdf1846ecdf39baae1acbd156dfe3bab43e8a45a9354bb1a558255ad13203ebd167b356ba3ec0aa65fae0c53632ef37d0540eed5a91fd7111834301cb4d5d943f9ee4f098612216ce8d258a8fe78f0854ebbc7135642602de40b570c34af5261ded1ac6d27b38a9ec5d84a0ab1740affb58673e4a947899a883f6cc9527b414509638145c50e9e3967459201a2d8ffe77138ccd8d6d1cc723773a97a39424caf4750b204c02e724f922298f2e69b879ec19782a56fa98a0932f49e252419d39d7940afd5c75051513181a258078d5ea732f3b3ce2eb5f0653a8f48a8b38b89ffb8a43b7693ecc9539c72b3569171f2098e5f813d012be794f12bf713b4da9d718b2a1e7f6232669921e63b68ac6edbddd76605fa46732f689728c0cd39645161728f9d5aa2e50e2998d6798458f6c57357155af47a36dbe979079e8c8fdcd2a98a17f8fcd496a129e5b4aa341d82f8c8930137a85677c13233532dd14d8ce746d0c9dc3cf734b0d464e721fea4922bd3729559f8ef7dd5a6ab860c4b395a6961d023eccc27e7b1507a0e567eec279078d024ebc7580894ebee01081277d858c620a1202db6074b8ad466cd6c15ca698528177ccb4f1237004112004f577f837abad5f60f5148d26d889442e1a806d1a3e42856ba665e81e37c714c426ef50a09b5758870d0b305c7be963c77409a3ea7e44048c0c1a055ee36af7cfc7b77b208809165fc7283f045f547e418e7d320e3144719d89f86e8faa6b063e690f197bfddcacf8e859c7559eae4d73eb4d6a53ede4cfeb26af6d25c3af5f38a1a8e7553856facddab0659128a8d39f532dbbe33aac0c7ace5862937652f95289c7d4edac861c2c2b17002d41e38fb850745d9915ccb3b7d3b58a94a1b283273d6e43ed80ffba670e8eb32e016be498b2958ec96fbdc63967f4c23536d10e6d5f995c2e0f948b75d8fe19b2d37922b40ca358d8acaaba0d240988edbaff8ce2948c7adb66ecbca4849b4915f68ff9a434e115d725aae9548597bc73c8de8c6c052f01d0cae7308430cf2fd5ffd9426ac76c22a3a6c800966b6af2f88cacc4b7df7735542fcfb06e9ebe29b355e762e2a2ee6d76f0e33499987c3ad349e3488bd3eae54ec15785d5b458fc57b4b0bb436a60df9f385548b33791bdb4d42788b69724f6cf5f751c24fcf68d4aabeee8e505e1bc25a66bab1a525c9f061688663062771f671bfda602248e03bb1ec0c0ac1f998968d8b641415b3bee108d09128e74977812bb17d8d07f6e2355c4a052cba6af0b795c219634a47da12ecb876a718c5796b03b84306d83941f07a9af5e624f4e6cb839db87b5e63ce86af6e216f0707557ca49aa7fc04989296cae45ffb20fb6a3856714ba0fbec54a8b477ea13d6976ad38c87c841011d3715404dc7e3ba263a32f528750b82b9060b88b0e3614c493f4a24e2cd8cfbbf574b6b54294190744f01f5bd3c26212c81cada5b8da7052b7ac12a5a98c7c4e03b82f1b277f7a01f99e3557a7d089ba65f3920a803e39e887a5e14df8282275bc561d67eabeb6982de4940ebce06150d658774305774ae085ef17f950ed3efc40053f1bc85df496faaac3bd9e54c965345e956e944741973724e70e14891f585067c9904c0ad00b5be3c7954b9b126b106c84be83cb05ed65d750278cac3f1d1adfc6711b799acab07a2039980c733bc95dbbf7e19dc5c868432e938020e1859e35a83e06c92ce95830de446ed77891747fbdf374d890918382bfd5974dd6f09ebef0cb72e3334550b8d5c1d58c298e5730b51f08843fb551e7a0238a5d705e1edafbbe111318fbe7dde0b1cf115236ef2b36fe0a549e25434685e823609cf771f5f314e54a53f089986889000220f088bb5fa57fc722d628425c43181e7e83e16d359c96d71d4b8d44feb12acd53096b529d3d39099042d1ed9b86a38342f2d7f6817a1e75d6f61a729e0679193a318d56d2856a2907e6b4543db7fdcc76d6a3659ba6b902702022fc5358993422fce017d44e848af6c2b2bc9b129ddeece4c704176b304f7cbd5c5956eda69d36622a38b3fd639b3ddcdcb2ce8548731877dbd07ce86cb7200464596afce4f1733f68057c0cd238a3bd54354732fa09dc0dfb40109261915ef0d4bf403349c6f9d4cc88c38850506ef2378c70f191bdefc8c87cf2b03f9d9ec0846fca32d6371844464c8d94399e898c9ca3d5cb577067edfc21a8defdf65b78c517fe0ec63c4c189718d4e62da11ca09df8d3804ef5606886fb6e8b2e42205eba9557cf8400d4bbfe2d4645d31cedc8776b350256218e473b4c3a7a260ac07dbc7b6df17ad4a3ff71b99311e3c52da1b58822f81dee213b198f9e457390eb25cf7055e7a77f4b97638804bb88f1974b6c1bbf3ce818a31a16cf6fd5a183b569245a34930cf7ca9b1c3de8481062cfec871a6b5d1be7495f80f857eb5458a69fb18043d0e5c86c07a585dad2e48a182d2843121ea5fad9a8efc5349bab3e50e4d324c8e9b6c47b3b3c17c307dfe55abb0cf22cf52c605c37c52a9fccf7ed1c960432f71e24aa107c6170efa8e33342c7110e158d1641b9733c5d98b9c4c03bd89d0483269de843726ca3a20bd2c21287bc151a4454e3f3640be2fa722ddb2b11af739da8d7b9c6a8b5abfd9ac2126eb3d7a14fae09e1b63a933bf85c83555b6de1908cc1192146104f0f31529574d60820ef6910fec1f1c6a01e9ead44a5b95a6cd08c815499017c4ccf7e45d07b39c900411ce5de6084febc4e18f162bee80d1a8b9f6d0e7cae269ce8b118ce5d2a39602f555d52c6577e0d842688d9a6edfb5b0c11ff1d6b18296fe756863c98be227c3165d9d963cf02c5fc07259476de606f9ef5213447ee05324f2fdbea783051d6f7937084d830ed239cf050a5fd10bb914699b6367dd21f15d90f79e86084173167e96e71a97bc608b9f5e5cc8aba504523e2126bb4143e25cb9756f3dc6eca9b46f7cf22982db510fe42934e8cc6a5a59ef17c7027720ff4e9f57c36eda2428ff240c89f809b0a48fd515f1805e705cce6e4b30a32d9a3d0c63d895816815c1aa7763f67e9d9b76a59d11e39108700445e7166bcdd73ec8f6ca62cda15d97a1e331a4e32afabd1b4a6e2fea6ec54e98ff63dbb31772c43e5ac69aec45311029c264bc486769013436558fd554b8e57bda646c97a7676e54a90e166a86b90db0ece68a319cdd75a03b7a7709ed916a409704b1d164465717aaaef44eb66b6f3da8cf0a30125912a35b3537ef341a67196a24839cba4016c7555b04767820cbbc8687faeb9134c277a79b2a3e91c08202e543a1055d65dbd1d15fa07599993a991d82562f37edf9d76660e2e8d8c7d59183bf98cdca61f315ea52f2c9e8f42b57c274d9239a1d9fa010c50c2087ccd85fe5ed309431117f8e27479f44355d7dc0a0046c56210ce4ee7ce8fd99bbd7556e0519fd73c28ff26628e91b1655d16a1b3ef37b6d32f72d2354c283ce180bc3d18e36cbb3b5ab6337432eb495ba27587b1f591d291b85b5e21e8248c65db16f36f7ea26e2958127bfca325b53791f998de6e4cbd254140f0722832bd8d5d76f144a94a1df228f3bf21e967829776bbe1a0f044cd4defc72c89bc8795cded94f7bc4f91e7de3360a3d6827953bf462af3e6e4bc8d80bd60d7e8549e322e6443890ad4f462c04b492ef25c2a5c0adb976434f98b3c3ffe025b5dace58124a0146dc1117b17e904fd4cd878e2e9a8fe0d4cbeb2e74c38078347a96419c8b7127c2e3bc74e01f8df844fb21400d5aee4b7c897b9b9e3392edfccc698451df8f69b9c0b1786127313df6a3751011372e1657beeac5e5df481f441b84606ecc4b28c4a851377af31fe7c35059854293981d20857924fc88ce8279fe8f20e74e319dc0f4e86eb2f978c842c884411b0395659992932a866ff8ddc051c27924b658d60860366b95f9d1a12307451c8d5e617c15beef2b42f52cc0335f0aeb2d65e31418defabc101af9c1f04cd0c13db8fed9300da05b34c97f7ad15edb3c2d2edb241c9cc7b1b485219c5d17e1484974efe413b5af6b59dbfb74630251bb7ce8f58f5219bcf3d5da3bd3da2861d25f345a0f347b2ee35343dda123366c6dfaec8567a3f84194ede9e167ce9aa47ba6b30c18161a74322d875c59870f99aa72a19a3c313d08d565a3c391ff8c3ff99933e6284493d19748305f8d75ef46fd94c45bf444fe9060bd658e3498994b2068f4541c8c6823225e4d03d97161946a9f6ea3608eb71b5ef4b71df333732d29d993d09c61f6e3e1fdee7849cd8466b8b5a68c9d6a2670e29252d354d03feef9d7e10a4e6a2c9333007387c54847a6bb580127a1a7458a9f8c5b8f071cf2ced7b21b8877920308e502a0f664b225ff1fec3bb009623a700ef00f08afce6df837df7ac18436f197e90c66dc8db5a6ef8ba548a54deb6df45269f583c7c72cdaad58aa47b72e7f65dd18c29e5a2fca0f20bb61e4bc1f81bbc6eddecc4730579950df79f709fe65ffe08e4df239e7aafc327400a8669f9774a31ecb572cc11fc525b6f4a112a4c4e9b2c69b8d74f69e2b3fa9e95281d8c9638f170367198705e4de5b9a78cf7ff6a8c0968f70aed0473bc9a51d70feac83547c202a5ab56dc7e2bd8ae123a10686a024266603a61a97bcf062a1a876f88d396bcaef6cb29788bd7a2bc8b9d14f578635c97682ae85978fdbfd393b23aeb610e7475b9205b450aaca2645737d895b71854673940193c579ae4466b2ad8d40b34bdccbe7311ae710908bdec38b23fc8de62f58208831b19c497530f80d26a09aa951b961b5bfd50d6c1ee33793d6b6aebc9931ed660e501eda91fdda7529984c1da40d7d189e308acccb714425297277a3a4881a2872a594ba9a01681fc908dd594093d1866f413b258e954d1fdc30f921d4efe9962a3ba50bb2229f6ee421f6002bd8f36ef28df69d7e9c6a61cf585166394d9fdbaa8f68ae2c4436f84e533fb39945f1b345c32ed2831c8f905b71c75b03c2a4612b882909efc3d918d75e9bf2e3a8fa950cf2861cecf0ff067948282bf1e8dad88f579da250fce824532b6b51e50ae3cc2a5b99f3de5cc6f0d9e7e587e44a790a5a52daed39a0f322c1dad43f7eb236e1568d059302715a7c7ebfc46096c784bdab24578c60c5a54487fd2d5071329656681f5330f60a3a21e132b2ae8897d7e432b713b1529671a106380286f45933b4cc3869f67ede58dbdb4a4b71042a3e5ffc1a6f47488c9d25c17dbeb0bf26e418fe17f72b1405d76c8eeaf940f72082b6f4bf516a116b3f45aaf55b15dfe692979f3d27f875e4aac6ae8894762a6905fce42e4805c920b4d5d824655af420e68a5f650b2dc62ad1af649c3557ca24603f346648d6a0ed747d7ab8b56180acc4ff748226ca5f89330ddbfac212add8ec758974f227274ec8f87893fce5e97d4b3c230cf2ce3e2b735aa7cd35804002a75519c7ade56fffb7e093f7df9879ec41b4354d8bffe776d24d8b38d056f6a07a0e96054c936bee51799353587f1c71ed23440df75e31fe2621a2097952fafe71200101726e5146085d295111c222f9657c2e65e2a5cd8aaf5317ebd67fd14cf1c217e884c6d3bee569bcf6abe1be628050019f417c9b4a205e80e9db29015482af2a14aa9e2bc26f630154c1cdf720ae7de1136bd635919d326166dd69be075545d13bc4785f8490e8de087ddfa4a5e1ad7ea1e54ec7f51707360dc6bcbd7f6cf379168870ca228e0ed69dc73765cc2378924049eca764fdd3bb7fda161129765d17f09dfbb435abc5530281b2488a9943d241f06629df75e866d44bd41dbd25eb66116cfbfb5c31d4279aefb6923866577b2a55c97ec7c2b90d890c948302990f063e56533a96d1eb0ca6ba0de75c40ac97972ac4c6b1fc6d2d04cd1a0443e6b3fd35bf71821ab40c16f7a33a93b9512b68b3dede5b93aa4b833982b54fecd4212a12eea82f68fc6f8f68632722588b9b6da6494bf86a4f5026285b3c6786e2a8be5b2bc2353b71117b3548dd559f6f35fc04446de195baa83c165fae281221c74593ea37e385ac50d3d5260b3ef3c4a4a78202a05ca830f583a26c7b91cbc4ddbdb1762fcf8b5a464ef3dbd7072c71191a29aa2ce89b99d41bbbb740aff0ee0feedf7443abbc267ac68da333665eaccaac3bd6c5956abd213b39f01ab15f3514b35195603fd39004a0cb30c7ebc8dbbeac394679ac60a306f995ce20efc166173fdd836860ded08fa80f067d05fa7e6326d53866985cab92a652ae93b88a24213b4e73b848f6b59e9313db25fab85303df20eafeeceac8dde159bd4543ea95de46b09af68faf9f724ceb92154f0e9336966068829f5216efb2a575781da6cf141586658711bd8e370ca012df9f4f2fb2b427b75eddd765abc28eaaa63c96f51a2566bb15391d7714adb3f2eac6ed7de15e0194ad182538e081a9fff7bb057a1b3643a63144e4235f87e52a45f8c7005e202f26b407189820d0b6d5bd2e39f3afe22abf2181c11af0e7000c4c26d94692a4cff6f114b32c9f18df3b9ffee1b264a57dbbbd516723dbe363d4ba1a840552ac5416ec4461edf8236877f37104a53886d4f9fdc2a9f0594967dc8dbc494ac705a6690d1ab924c291f4e9142bb7577abf3a2027b9e04d2141c1cc86cbe9c8c825bff9c3e5958afbf646ca47516aabeaf1ac9068888b71ebe96cd994b86eb0836fc4c8108411a8822a640968c7b74b80b39dd157e553cce869825a0a1810512fcd6951bcce813e56f8cb0dffcf9762ae84a832a7d439d40eef92a5cb3089bce67630fc87fe80f44f73d8575c1d2cab2c76ad8725de6d0c60554fca612e892f100855672fd6fb645cbe7d7a7dafe3264ba5cf3308ca770aca58984cb2be1e4d6d5ff772d93be2b0cc03c8ed2bca71ec6d407f5fa0640bf512c393f720327447151fb8894ceabfe5e62f0e6f0b0ab7be264f4a8bc6b41ff0fbb4d0d9107e499529082cf753d1f67ee1c3c1666ba1e594b4bd1b51cbe8f19e2e16f19d129b44f59cf077b8aec99d44f525ef28cedc55942f1f05d2735df930b108fcc1c16276acc95ddec3c03aacc8dab17b0e0429bf66b90c8cf601e3fd737ed5fd2473c4273f0ebbc90bff97719653c2bafd0da5091b8e37306a1a58ec6cbf3d82d0390fe345f464045f68c3a488967e4569156c5566de42f3a5b1bffa46342b35d8f56c843accd6a54f4c1c1778a9e90027c6291f176e9dee032259a4cb79ff190de15005920511dfc1001ee763632fffdcfce7f0c705a853e001fbbb45e1954eb18bd7a7d9582a286d48e35338f690592e69b0ea5052bd085a6d491c8307be3d9b46aff03be1024f33f6f2177b0fefe202c2fef2da37e8d885da7a08d361a6a7795c8cd5360d4352e310ecff83ef24553707e8b8190272cf85023409a6c13f700e1d21383518c48dae5dd71b83a5fbb535f5f7ba4eb2f4636b7041bdccc2b5f5a810276c1389334a8de7accae4e9a471c36510e58283e13b5c1adb3ae5af4b7a280408f926591b73fa5cabacbf77050d20307c67cff71f2e70819da412bb2dbd8b3bb6bd8426cf1b736f9a9441dce45330ab1db44f849e5c355663750a4cfea8f65b609ae309ce59f142f1b33f46215110f84b636f53c12d0ea39c8256b49c7b3f2a5e011cfa0fb963e5824834834b7deb04577ff6ef643c6ae485bf6bd9e9a5d8b8a566003838175965aef318515a44c10b57015478f67c3da951384314a4db889394a9e4233250571a839dc152c58f5607fa82a5cb00f080e19e9150dad10f510718b93ea197d495532d49cfb8ed41933105a6f4a47f248e9bd29bebea4d64fe6ef5eb5b35e7f582c59263baff71f6e88f573a40159698f93f0f1f021b7d623b678fce0854309c363a8a7a9aa42c0f505c017fe1a89f3a9ca34b56a92df0a10379c11e6396e5a8dc4cd67d4332f46f0d43f1cd61820b22c6197be66058cb32bdd613fe1112497b7007b85bf4267c1d504bf8d2efab5ed014c24a625a346d34a0f6b9966f2484756399bb9f59c59466380622804cc298c8aa1edddc39addb15210f9287ca66bd73aff8ccb4680d96eb7e72ae170223a9f4e2c9a27602a98599e0e526a64b847182c90df19d676c8d77ee1265d9ea3e5d83d73e41c92152d19730b5ecd38a9ecbcae526815792e48a230b54878880eb60b8059eda73004bc06858cf839549129dc5dd263c5656d13f35a40f9bf8f673bb5d5b7c788688300758b4960838d73f375d3bebb42317ea675ff98f2f7db34487388912cd222a35282e54762fb41cd3be620af79391eadd0d3ffee24948ef4f286ebc6d96dbb69ce8c4e165adf2f2d1473d7abe46dbbb021409a7e6843c536fc566c67b795079828b7a21ae5e520db0ac5a0c1c533d21767f0f5a587606c05fcec32058259ac774c69b32333b564da6368671ed6f4a416179dbf6fbc80e183a47652ac621dc5addbcd2bb1326d1bd1304c0f7b67ae7d4d1703d62415e965f07ac6895f8f18da4b0e5385a3731b509e5145bed3ed748c62c76306b753156171a3d4933cc9d726993e2e0c467f46e3a8168bb4b02fe915899804d916c4337358bf3808aa4fb8304ea1d4f3e490664531953bb58188c9f14fc4ad6dc635a657c568b0cb30aa70ad3c48827b610e670130bdd3fecdd6615951e62d683bbd8497d289a010e37c86b99d92b62276dc2b178be7bad33a6612069e55d4ece121180cb6a88de77275d55e809bb3ed9cae0526ace2b692aa63d29ffd1bf7acd2e560317f45a15f5a410e6b120c00bac9be3e67c17a735ff62faa7b5e526f038ea48f485d912b37b7673396bdf4e9a26aed9378331a035b043439aa0e7b1a214e1e8c4a971a1c1cbcd31ef952f5fd756026b5f61966596c3caf2f56982b5949c2a572aa9f838a7cd9d6f8d3be098e37e10bc8e7b8a9cd989d57d3725bf9911e45ce0ee8edfe30e7ff6bc2a4fec534b77654e4f5507b9becf5887eba3e25aafedf2864f28714ecfb9d8fcf8d53a94a348bfd9779cc4363f3fe2e1efd11f4936fad962b5a652941ec3b92480ceb756f1236706254133aabc0608cb4be7bfabc9b6c374c54165cd38bd665a7fe7727079e3afa379b0ff25888dd7ed6258ce49ade5743668c588dedf05b083cfb7538b8e06a890211add639c727e72e3a4f6a2661902f4dc783d6fea4eb57abf61063ed85e06b1d715dc57cfb2469f872f8335ec6b0548755f8421765bccf6c3aebef56cfbdf3d989eb8837ed9ecf88958169c3e758efce55f95c6f72c9e64aab3bf266996841fc26a720e086a5fcc2e3d68adaa1c4ba90c79c01df72a90be55ffe85d46f71233ecc3398d53d2376a09aeaf6abb0bf95726dbbfa67e13083308731421bb298efcb3f84b3d60a664cb0c04939459c889ac97f0a11a70ec2c1f39e5896f9c7a374c4e4ccd986f29e4e93440ccf38b574d21f2fc9a367b16c314afabfb7f465f4a8bee57679ed1d9a3f806b3a9519216736b4f6ab560f073fb924983a18d0e11386412f5e96f8823103be8f017c01f76cfdfbbeef112f846ac4c549541d1a97a4954a3ae452f81c3c8b2d2f526b0f6c105318d0be63f9141efa442932f4a15b6b10c9a6a10b1fb5fba0be49c17ee10f356f6994514dc2ed37510e609bebf703631424a6c00c063b4b86f60fc7df1f198fb1fa2a75a985eb30ad613de4b2f4f70b63b2354aff2aad0fd070e1b48ef1c107d30fca61a55f84e3bbd29cb53933d7694d4129f0eb6a91adc9589bfc5b83b4a0779ef10a381448105ec79ceab1942d61ef91051e188bfd8427f036a32c8887a86bd26d531f89f0c17efea4fe61b83767a0d7aa5a11b42fb6cc0eb8f865b44a529f8929cfad4802f3df04bdc58b88b7b58b3bcf44f2f2b6b0ee9c6bef0541230284d7d0fc9efffc160dbf3269a8afd874b65a49b44bb52b4fef1776ac7e6bf8e0c68143213b011c6956e590e29f1b258d56c42aca23517881dc11b22be5f42f898483d72e4fc3a6227282e56e6f808913417faaf92b7fb1c7a2b0de1064a17adef98b6b62e060d1fa227658b4e7d569816382df53a6d97effa52c1e002dbab062667b49800e162d920df51194c8d4c52aaf3b4ba071611346a254c417548ebe994cebd8da4ac7a8abb80571e2857e6da49a0a340c5bfbb5f06c0a75651aeda04e7da4218de57921558e03927f6d95450c61c3cf7a23eed9dd6bc292702dac71cb62261e93f5d68261961e258abc219c6573303ec09d66c7a05f07fd334b258456d123dea9cbad77d68cdb94a66eec8c7b248d5351eaf5d3496bf71e218bb491863a027921736faa2fe98f7c94370676fb730a33321c0e2bcd1ac24d06463bf63f815dd00a3fb2959965e86e8c24417cb9014db92d8289264a872e77f2379efc6cd483226b05b2e48597650c20d8b51f519eedb69f662237b59e16207000483bc3e6f66c5f75cb633b35d96996303ee093a2f8fa5b57fa5ca602e6b2b196a5002892ee9e59e8008143b6ecc6fe6df9f177336e2d7cee14304ee8211e89a0a6cf8575d59be129785cd7169a94739acb0179dcc3791ea4d978d3e1dcc244dc40ec2464ca0d84f4fb68aea8b2cb470cda099d7661095f6895589b7f40b3cbf6edf7d88d1e08d94d799cd0055893185711368f26244e16a4f7013e460b419338299e951fd979cc7e83304e6c8337fde5a1d88258dc1c26c695012a8c10dc476df6503cbc36709220d0f2fe03806f4fc67a6ed004ce975fb266163870b240434b5915b5952229f199ba25abd16df4c5dfd6b37e3434e94b3e469ab1406df62969da5fa41ec1f5ca73bef03f65bf67dbf3afc829b1b8cd6167757a8b584e1e4a8108015045e9ec111f0061f1a2bc89bb434465fa07fdee711518c0d7ae7691955bf32185e8a66d8f21c4f96b6102c030a9981e9f8b160e540bb7a8af129a4f5138b05091bfb4712922f6d477f9feeb4b44f3ba79cd0dfe1e1fbd4e1854863dd4fed99ca03e08b08ff8a353af4d7691c09c5f96721a5e6e75f2fce1a3689533efc40ac41219488f7ab77e5e2b43004d2f3b2c1724e47985b12a2670d1f03b5cd87c656e99e34ee8e5a35c36471e889ad84b6c3250a3434bf997553d6d617ce2b3b80f7b3100a998f12eb8d4ddb8ceeb71d17800d2ac95e385d184ac737a72f0137cb15c496e1be5515330dca211e50e174c69617da6bc98a78c13b838a3cafd0905f785a6511cac792a06197946b6e4917d9fb19ec5f7b5505b47fad539476ea34f14e6db025568e8289f91e8a57b6772213e8e0cc5fd31318ec74521e23e80ebd73d75634427034634072716264401b104aca9fd8c7429adad20cead66198bccc729d1acc7227736b16cc5de397532d5e515b014db7b29385c43e099ccd48d6a4f98e9b2858e420fba9f24f8ae4688daebe73b54d5214adf7b022b2bd1830dd15fc9bcea8ee5a9d8ea961839fa42e34d4f56daec56eb180c2096977b26ca430e6101249dde56ca4492ed716b19c80d5d06d91f17f25253ca2b1cb2b86a639d15c60bb0fd6d447c86a2606e49fc8da2d2e1abcc6b1642711a7c13a2b7039c880392b395903bc505327052b988381843388e4b016c879dff1a25dfb2dfbed6939cfb4aaab13b249d912849fc14a7451e9959fc822b53b6ca1298496cad5307dc215d25704e2f60bb17ec6fffdb6ac3c69e7346104fc5d7d8a57ffe3a50ad39cbd4871e33252eab3ed9a4135acdcb9659029b73c5d066bb34bfbe0ba9242e0927c46311351b4aeb5c390426b3ef4295f48bd013913cf71488f94567260df6296fbc7d60ea7b113c66318ebf91ad0eed7c1ab578b85670068690626a61eb92de8b75c6704633de6b57de3b97bdbba89cb56dad3b6c5e91aa2525c14e2fbc6882cc574f2a1855d07d3c3e0a8e2f3b81f7a5acc3b56c5e238cacde9db504188d033672427b76830a266347bd2492f8742450e28387be3d242e89b28222fe19c862217cacd43c0647535dc33a0052eb8ea1b7eabd126f824a83fddc837e78efea362afcf0aa97a524a1d397236d3e56c7bb378a2c0069f8df7499d421953992b2266deee9f7a0999ae32767bdd8b92b9d182aa97eb958aec55f8542d797286ffb721684c5b70c21db9fe7b2d1537a97982edded24efa0fa8f939cc9e09796fb206b40d6ad6ce5908c920eeae215dacfffc9da2e93135f7a0dd557a6fb0f177b02f721a6279b58efa828190dfbf8b79049897e775add7f3c38dd8771af5ae8774c0e8d84de4d936b8404e7d162fae7e12261dc989dc8e38a84dadf8f3639ecaf543fbdfa458fae44737e6d71c3bc330b301af780e7939303bdea4f18404f30780c2c768e10f2abf147203a899006ebd70ace46d257c104f41fa32f3b95a506d94b0972bbfe0b829c6a28c5ba1a41048c626d8f756f1a6e283e8d38742327aee4fd21203cf1f438429b0a94f256fbcc2c8c3b072084282ca12fa650110c248b0a8551b33b7bca160a88eb2b8139672aff4350cd0707bb35e00edc24d820d2ef68048b804b6a2ddca54127d46f7fda695ddb17b0405865a0c04f9693d4a4c7745f1955ad35dbc310cd3fcb28bbe34fa14690cf437bd5ff340a732ce7993f81e1e3f6472e077cb45f25181b7d5d09e49f49560d492030221433cc6ae080d0e0a45bc29115eb8c2f042a420e0e53d65b6eadea386302dcaf6a018b1191ac36a6ddfb877231b10ae445e442cd0402979a5ff9a70c1f20954836fffe5606e031fef2f11ac2fa192f890587633849b0042bb13e2f18493090d419f21662c36e37f2bcd6bb69d3411c56593fa66024f134bdbbc5a74094f2e6ff41c972d00bd275f43c2e6ee594c5198839cc040eb3348ba1b300083b907e36b759b3fa31feac4856e6f57bc96e7a43e13caf243b28e3004ef9e59415f00a33b08e4ed28b7e490ed17683c43815d3ea2665089596dfad7bddf91387af20e729e1a524abd6f0d7a6025f361a6e3f4c35a0fb6e5a014000758d9f608f3a2fa1070520e5ed7ec3fbe4e8babd2038767ab39c7d5905146ebae84052b6c6c0ff917d1b6e0feee4c96ede68daf4d3763293c5eb98e6cf99ce9f5cfd87606f9bd3494fe735ff5fdd66c55ac959981da04b8ba3633819480e5923d56ce529d0fc1f97a56fa68c9531879d9539ca55a63eb624c85ba0d9db26ba7bb75deeed5b65b421827edcb2991d6cc22846eaf75c6f92854f339b4d34484629ec4146804a2f31d4132457ee1fd2450f3a656eb104638a3293cab559ae0fbc5710af800bc205ce8db9337c4560f39d1af86e59c879e18086ee068c5d66c8d6c527e18149b26770d6f5c42c2d651b92f4071de52342c28f012050257d3df7b01c0c346f378d28128f73b169bb0455de81c593fa7e6d7456092d156109f7d2f6e0c9ac2f271bf177d8801808dabaa2b73d1fd43a41bf7798f4064673d90cc4e867366d7c50c2bc37aa12de756bde77766c654797409ae32b7c71d970a721ec2d7a4d438143bc590fd478298e93373c11099c397aed2ce137ebd345ecc1089b768e501b0ddfddec8a6367e57d96d1ce66f7bd5a7fabea2dc3a8af0aa2a432daeec5348852acc86dfba7df41b8fffefd5845e73ebc58759b92f46f27354aeee18014a83f38c29627bd4ed02ffb02eb0fb7848bdd9845b88f57f127a2fb4857a1e73ed99b39925439ce51f9e76349bf3bf887b413381f1c832e569d04db0cf93c91983919d740e618b5b2bd64939c592fc60bc521708e69856d61afda34c0278751aba2dd966b480bb73b12e5e221c98b5717622a538d26b6c2e6c235e3b5cf8fe432a52c957e76ae5ec1a56ea8174f649a1df5b747b5f8cca2925d2b4566041141164af0a4fba270529eb4458b466bc22e29b034b107dd9107bd83545b51e800bb4839370055d8147b63b675e8989022319d1c7028f3d3617e65bd4df4579f02f6bc0db4883d8b347af6394e478a7af4d45404214497f6b08632e038e95dddf4a7d3983d989021b97098d1e3dd60c01ecf2bf45ef188c882408edd3a6a474b622bf0fa4b6133f364158fe58a25632f779039ae235c99fff16a3addfc5aa36c0fe21cc27ddf91d4491b6aa1607f7ba94d5049a1d06761e9abb2f5dd2bbf94e87367e9b2155899cc4ee81ef5c3e8fbc1e0e658e2aab7930c72500ceff936cd183893ec7a796a5232b19b74d0d6bf7316e4772834594757a29af7edd6998baa89bd4b944fb3b07c107f647a540098c96d03ed246068932c0a8e1423a4c64bc9a693282d67f2efcd571e2802b46d1e0bfc59403783c9511f694b5b3b373d789e2702e54b4d07d9b61ac47859e18b0ea5c5f69642f84eba463be2a58f4d3e40eaef85a2024fe958cfc7fddbbaf48f36f500602b5b39315fd6bcfb22f1f50fce15004afb8b9e31794c1a2961316cee8b68810e0800688d9541b64dd49fa17923cec1b3e455599fd02142fb87e802e44f97abee91e12be26d3365275d223549066e75d761964e9383b097fb7622e3f043112edfe2fe3e953c5df2ea20d995d0fc08c50106d43f94d4250905824e6356eecbbe38f4234d6db25d228db16632645a298a30470c58cd44eb51c800fa539bee64693f9912c4188542b6188e47eddd5b93a396a061c18b44caf6487595210d62aa8eb349e0d0a4a7663e293133a218549f501a857b94c073a5f35d0248b239581b9243bc520e0613aff8726f203878e8fce7d62102d88372e90132324bf57357525615514557961e68b1382607d3605df1e799f0dfe98e411761c60c898e51f18b15404c61c791684584d639b941baf2624e651a3377bf320a156e7e76e63067bbd752e0b233964e46c938e46c35735043dff2a9181b9769db9f510e642bae5edfc3ca08e54b2af6806f6153d229fc022b802a8ebbd7beeb8457ebe4be7e2ea688ce9f342e2434e51586e597ce25cb073818ab6c51e07d41a6998b22fc9d5709c5d3b7c0371f812aceb96fe335a6d86981734844ef9542a60c4ad48528d49535e0fe71428a0e4116261c3d171f1520eeb18188df5f2c20c9e03a406256e697aeac7e1ca248e78882c69e9fa2aa2926d09be7251766274c1d9c5798e663facfd246e97d054498ceabae4c7bb1566d6d8ed7438fe414c4a1ba27ae7db3d32cf5ef835e4d8ab2656f999070ccaa3aedffc6bfb66744276d1dcec6bbe3c1b1a785677f6cb9d012ae2c1622861effc3cee9235c3604e9818c629aaeb59099be913ce3f7f5e0550623a938640a1447ce18bc570df7f1bc486736086edfa2d75a1a9e996ede599e2c50ed7b23fde3b130830e2a0cba6d35323503c786630605ed3b73a23a0caa3049c1e567322cd4c31a88f7930d23e974024f57fdd98c02bdbb8b465b0265d25f3e38e0c9202fc564da4395ec9d4e8e3d58236589cab1ab237693e5db4cc5c0e5a62a147d7150a93ee5e8882505c3b5b3359c83d1369c70ace4bde47a1d98d94d182e18c3907f036c3faf7617c67d6cf0eec2aa24acbb8d307cd51a62cb9f762f5811682c0dcd6f76992f88de0a50f86368bbfaaa75f99955cd70213387b563380e20e510d5e01aa5bf0beb4690f44d08cfa233e66898f9430a6edabb40c16207bd7552987a50459b349f5149e249986334793cc291246aad1ccce7badeefa6d60b54d852c0b9c64611346d97fbe3b65ab8009f3520197b2306c530b4fa3958f6aa278261f00b861e84e17b389ab8bad32a680b72398d10be840a5fd592a116175d46c22ec07804b189cab535db016b284faad1a48eeae111366b63ea63296f64ef77eab6c21bd082b8ecdf56ef92c3682bc66847db6af876b2f3f161dd6c686f2a0bb460ab85113d3a10bceefac2716d0d58eaffacdb379f5ad4fe61e1ebfae8058fbb65e3fe002c4cb396b772c258ba2fa6941117f2d07cd1f146ecc291912ca94700cb33836b0de1fcbabf87a70e3128e74a5d334acb785c0bc91234bb8e9a021e66e9852e332f3edbf96574be5e938a6310f2920883f9a3cf483c1603c6c2ff173586fc10ceddad742966bcb2c6d56817922d00f629398e0dcc785e6a025fb05e9b7be726c522a1f9a2f5b1f6fa419ba39d6c34d8406c2e6c20e67f037d1dde7626f1537f37d3dab8c2efd1665f69fab1a44b63bc1f3802ba52240e26693be3974b243b7255ee7d0f6912c98691e7f46a3c77bde27279f7f036da89536aefc9fbe3c09125e44b19707e4a34deddf42a3ea00c4dfcb95af481e349896219a4fe9aa8c9b986be9a0a4568106eebc7c8f90a2d8acd76c8badb5734f5ae3982021f05bd10194c51afd2e395d4fada86cc20a9e74f61a446e3474747522060a6ccafef2340d6881e223520f67b66b2839deaecf3af46a72e8f754d02906eedfa87c3a24572feda3b3e3d4f81eca4e5dedf83851b8fee2b50411916896a23efe7f7dba26d5a9542d23f82b3aea9475ee9e0697f4d951626d1ea18bdc90f642e486890d64cfd513ea0e2445dfb801ad4aa091bc81ceec8f7a6e163a6f1135c5cefc7c2ed76f909e1764040826846f9f65d2173cb3d9963a31e276393f37562101f936dffe35f0d31bcff4732fca0f051f05f5d260c4b09ec55febbd208b40aaf138e542a701cf548e9d10d173ee7fbff8650c67505dd1d92c2d25e8429f09345764f22845ceea55f0c42a89ebc0bf242f583f77b4b4eb02baa6e1c71962468a1e99abcc9cbf0891346d3b489889973cd4813c7312454f472aa813be253689d6f818bd91247b342134e6f2f57b5c0eb183df244dc7a7a2d473177c83aa643abfc478e1f423ae25584eb245971df72f670c711d0ea5cd4ad06039d99d19b14c640b62c5a0a747f96567d364850a08fbd758d52bd347b3cca5ab79941b0808392413fa78d28abaa4c097578fbff1c211fb76947fa28ad25e6083a336a6869072376c85ff3e1f6f95d45d9ff0a9976a8aeb2ebc755a56efbf8dd4a655126ad7a71c6291429ec5262f815c1205044587ae3eed45258765a122f54fcc7628467bfc6f3aee81ca51db08177dcbc1e53702b06269b40d6f3b428882437462769f673c2b3984280e79e8fcd6aece1e9ceed0caf73ebc5a5c9e3769590372405667db7f48b9c72cbd77b25dcb845b86da406b9e73f23c622bfef4fb9d20b568aa264fe3b88622f1cbd4037a31952c1b83773af4133d5756a3b08528acd16263b5dd5f6583a07e07858dfe3a37e1166aebff20174d747cd785700273cc5912b1f703f7d6a0d9bb642342bec4ed892d5dc40c31052a8f5ca918accd42fa808918614d7a043dca49ae0145c8b79cb7b33c0602d572d410d86a060069e0d2ed9aac15612b8cde59ae3ec0a8edf64728716cd93f747f402f11076356e720adfb8ddc4472d85e8ae69e36fa641e219730257dc59ef39a007b92b12a364ef3ae72ed5f2ffa56a7a1df240f171daf01b6b4f2dd2556764c477aec65f2c70f01574150a87f3bfafa21c89226a2b21e5b3ee62a09a0eb2eb4f5fd0540fb1bbaf883c1e995aee01d53f6678286228c2bd55204744d510acfdd4ee51ee786293763ebe4b69fd49b7f83ba27b37c1f1ccd6e2329948caf930fee6ae1843b044ebddfdac75a25d966f4b51e84313206b34b2caff0bd782ad9fc3618b3f5d34c2d89e3d0bc77377fa7d9438d5f3c8a1c853504c38e3c11e9b5fe3abc49633e57b15f35265412ac70778c673d0a6e99f2d64185a9f7a82c17b5a0e46c51e0c294a8085dbb236977798bba326d4e794b30d0751e227bd87b0697b7d39928eae6b579bf24474cec68695e572af043653e550c1287ec9afd47c86356e370dd06661570cd993bc85065b2f59c3f1a98ac00dcb7a4ec95be5ee51a8fbae7b8785d7b7211d7accf9aa3b8228bf4185a8ca06b1cdfd19e4ce081dc4afc93bc4347d9c1e623cea9e78e189954f819c3a6d5328df7a7b44e2a557f5b7389aeaefe541bdd1a27cd138d2a1497b2a4f78a859751ae306083128ae223c3d52ef27161389ef0fb213bc5eadb74e81229c74b224f6afca451dc5f88c501277ca4ec329a5c6a92646dafa2e7ec17e09361e403c4e8d5311b914d1b5e2da73eb64c1cb781f9905feced013303ab4b7c25151bd7ab96892f7d0b00895714d06d402537c9bc15a724e9797c28c485706a8f8f53695bda776513c928bcbeb4c374a5e9738a4fa9237eab2f5889f50c62c40cf8ca48880deb1d5f0c4fd71cb0cab687a2199a20e81c7c4ba55cf2febef78d7f3ddfe7e3c9797370d3330a3dcd7fabb530a88cb1f99e1a102449502a518ebadca74a40c24cee795d52d5997f08ac39cad706dd8e4008596c7f4b1a03357ac530a1fce05f6736908d2e7dcbd8616044d12f36b6f3612b3c5d1bca4743719d5ad617213def5eb545686f9a5171702ccf23c3aada645dd01032795f5a1689c835d0644ffc3e9908e1f51df0d540fe739ca2d6cbef4bda4fe44b79f253896744283d730b4eaf32cb102c07a557282f3c9281ab8fc1f4d5d60115f9a2fa3710abf188615a1b39882e8890d8dade90067f42b43cd11ff0b330a4d376e987bba18d05a619745aa07c59be88c42cf990d191c2d7f62801c0b04de19eda30f18012eccfdfa9b0684c91fe8d37ea224062af3cc54ebaf408fd6e35eacc7e99f82e0303026d4cf1296492cebff2920819d82724ae7cbf26c9a1c97234315926fb342d6955fa92057734d7cdd0b190f6a10da276e241becfde5c21b19aaf3131133fc2bfa0bc14183a45114fde60e27eff7703ad6d4a76197629e1c95f3cb876386ce0f5405d52b1eaceeed47f89904134f4de263deed9c642ab27e3851642b0306abb57a6bcd97aac8dd7406932da7c38073ee097a04e804f151d8a1361ee34903e2255cd88786db26f109268250f3620c593febe4161888d4c4f3ef2fd2b4df5cc4bb837453bad875578063b4be31df02174bc9a6dd007ba10d4e1416be48dbe41fa6f0a59f3a930fcfa34553538d5bdea89cc2c777f903dc4d9df58a256d723ae96a3c5398d2292701ade7ce2f966876d24f618fd4610f20d14662e797963af9575f11f50f905daf19d093a8dbc2cc121e96f9a697198caa2ee2d2044a58f95fb42ff1ef244816ebd4b12d0608e7dcdec13658b90205b81d17c2fc8c95ee04d1175c4bf08411f7d9a7e76c5839c3643f220ac1e9f8907cd2546834b97ab634ce6bb7e3420ec602f35c7fe79dd8761fcd147e3dbca125db483d09a0abf4b2615205ea8863d48750df7a7bec0c1503c0f5fd143b498ab7698952123acc0b0877aa54f01a3c3a35d0260f4e2e2e8ed2898561e379d6643adf891ba0a3d3d48312304497e1cde9f91e0103613db2f531799b84134b2fb027b0e64a06c76df60fb5870a05333feebd6bbcf492d28bb7cefbc94d621f56a1fcba83234b4a9ee240834467306a871ab16b6cacb0e9183e3f3966a6a26569a3ba04e6aaa9d150accc95137b652d3334c85ed3a600ac64977aeb473e38b9d5a2658558a11012bf440cdad0aec204fb0e3824b7ddbb2acc175dc77bb99f602f2288042e68a0b396f780822767bb4026e3fe5e14e98de98f152775aafde31b4dc8ae05b2f6320409304807a0949830f4ad58aae1d018391c00fd18368b27437eb0eac49abed0792eecabb63d8af6a8855849de546b6f6112e5666b508c1f35f64650430ee9390568c794d50de742da00b71864dcef9b9c5cecd0618b8a9615c7e479638ca55e34a82f10504ac94177e92ed19a3e7b1ae1d6730967a689eadb05b00316505ce824ce2cd1f9f1f38b2be7f8c24b919d5b7c563ac6239a9c8bb1f17d0f96f975af467c1cae5ef8090b62747fff2efbae437d1a791fd724e87fa03896c2b5931244ee14e821236f84815b2f51e07f7194abeeeee1113f596ce191b33fc43a467a68b7c685c7f44a930095c77a7ea1e3d1dfe18c37fb10f2dc5d9c33f0c44a474a93b7d208e40aa6aa707ec1e139d386432049019d21026c46b6a23ad2f1e7dd606e807620dc36a2180d818a6634f5339c23a224c82c60283c4142b914827d875359f223a8bb844ca2e6559729d75c09d391706dfaa8391ad267112c22307c92cae6def0d6ae6b24d05fac864c4db9c2fe8588a7028516c0b2272eb26db706c0755c7b68af888e2845af2082ed040879b911295a9197406c38911cf7fd59aebe6d35a3288c3e0c8b35638257e82f99bc0bb9e6e6d8169c1d8f4cf5093f5a3f90bea0eaf4086b606fd4d96a041e47243b0af565abc91f106b8a11e47bed859d2c87ff802913cdd3535ac623aea086ec63c5b4e5af39307f43092df65f1ea5b0f3926ae3b79fc67c0818b1dd3f276af5bbe6d499aceeb04f8477033906810d61c0912b5f1760dccf55e4753629993847d45babd56fd06584a83b88288cf811a4ae1b4064d3d239c0b414c30ff757774314bb8106ef80fc6412a5c56d9c948b98e67ddda7a1372b70ba1b9db5c0297109caa2137e8c3684b6b13d59edf7c157b3fee5e7162a42a57119dadc54a34cb5ea322f120d5cfcf3830838f525a244d6fbc6e17998eae1bd965aa9acc1c54898ef6dc8a26d706ba076d010dedeca2e6f588f5163a0e0182c52af290b8e9e8baf6b8af5db7d7b87c7bec2616e26cf900aeb3adba691e2a5d1a77fe64d7076b456a224964c4a4ba8088c445192a0eb0f937db2a4f9f0d23a2ead95f79bf960bf2c7b42e073e8ed40e915fa004d257aea7dfe879c47671712e99908df6f9c25e9954662c4462186e44f3482db34afd4313c0ddddf2f94fdf94d6849061903d33b3792ede5adeb1a200988dca7f199372bca96dedc83b0f757c605f3663db6f6307d0d822a05b7eb9f45333cd7c1303dda238267a9c900db386913401e5313b3bb177ec2fe9e85139e19224998f58cccb0c86c9ca5bd178a3e693648e426932d5a78c4a1d33ed784c7fbe211d974c49541407792eacde8b41ea3f866a256600f8357f059039d63a89b490f30873868759b932153359caa987113396eaed63d12e12e658141e7a428cac343e10bcd5259a5cd37cff67f89e9c25d2c86826ebdd353be0ef0f53d32b4390ca91638d5c6806b81ce92f1032a503245eddc233ac6689a89a5666634eac0312c0cbd9286dd31d0434f4c5665fb2474379d87cc296b6be157032a5f54ed99981187bf412a453e7b2d9578a0185a53aec01437d77e117d2bb287041f9a68425609b986949e4ff1345b19c68c43828e801224a25d53e776b0698c5fa7f62ff7b3498ff68cd35041126f2f0163405242828463c77411aac2dc11ea6635ce2859ff699d2ca2514d5ef90d529b751fdde9a310946874fabc958f7f8c689579848acfe605815eaff8f70e607f1f2921cdb52cd48f6141a08f08944f17e235c5cac8099ff28b681c04d58d94a5250e3d96ac8091cabc246a544416619aee5b72b44d2a599d31fdd9bc9563591f97989e78ae762f62a753160741035656069fb5d580653be8f6debdfabbae674056c7225307c937bfa6ee31c3cdd6179142deb618c4ec52862045b05e52e3f4f19a9fdd45781657c5b1e8a16add584f7a9735120865010eb45e6330e1ccec3f5f96b79424e3fce2930ff91c9c5130ec1fb61559e97c87c37f07b9cfb0fc1c09b22f2c43b901124ed61d75aef9bdfea272888591a7c9792aa22175b260311917dfeb4597d6d2e1b4a460b137bfdded675a79c0b18dc9f6dde6c1e21467e13fb28252c1753aa7a553f47d53eba8b534f8dafad827d1a39ede247dffc1eb733226cd61277140f8190c9806d1d0299c1f5348fcc253eca7a011c7f0139be60548467fe3e2586472b4e7d02e3143f2a1933b8b422e0ac96d26bde4a364198e44afe6f6b4c7a794dd7e8e6ed80973c614dbb875d4e413bbe0c10feac2d7c315b7ee604b54911155cd06cd7f909ae5a416c69427edf5ad4abf2296d077bab7bc1144107a4476fcb04225189362daee3c83cfde8226d208cf599fc8e7e0a6272c6c1cd8a21a4e04fea9dc0587a3473cb59d036bb0cda1c7d8990b7c2de8e9d92575809d5446f0776ede2ecdea154b4ec240db50b4938a846c9cf06e367daea582fdd8c7e9e661d8731d98d0ee090af70c8b1b69120c4e4c0d6976bfa6f3a1fb8074e1c5f43f215df113cf0ee55a95dfe8410fd682aba61f978f38723a88bb5b632ff787bc9e5d713e6f85ae516c7d025b641c79b6380d71e9b6cdf05d4e4fda5e963502c9c23232f99b277b8b88f52f70a8cd792be11cac6166018556089ba3d990f8b07f1b0ff4a89c0561ec42db8ae3dce4c11164a0ac25949ee0faab8974f9ca6f0dd06c44bc3022e2f591bf280a1569f0813f056f413ec23097fb95801d82aee61bf0ac62c51150a0ebad0293fb4f652bac353aa4b181b450a1bbada705042946df282d65ff7dd6ab9d66a9577e61052579344369334e09e9dab8fb43a55a991ee2b25fea8b3a4cc28b47ae87047f4fc9e35f227c74143f5e8284746a0a7b7e39b0a2cca64052f2f7d5411b6fd77c59ea29f4a2db16b2f0acbe4bfa865792c14b5ce5070429984b2dc33ccb13925486564e8a62842c9c526016f0d6f14174b5e2fa4cba6405fa31ae3e369d27a3fb7ddd9a6c0ef7c0d93abaf6af30149159250f24ad0fd7c6a2535e54f3ba34d089d96217fb46544ece3d852d5f3b6aa6ee0ca376071c1712ed41aab740d53cafafbd421420db3646d4a9d0702f2808f0b1d30f12c809a3c5257c6f3fc3777e2c7dddd9a6d44d198da76b45d808162576a225141d12234b6d1e20316458d69507789ff722b5d7fffc9f25da60728495513ec371401c0818cd8f2a3ac406b6b853025f5ea5a55654e0bb036c680a0b0d2fd1e2d4289da4995a4c71c1a37e535ff910043b8c86dd5d787a1629358f5775d112fdef0648b6b1c142c1be662a694633326baafcf8d5817b863ec86e77b4a68d151f900f59f6b45f50cae317cfb65811e457f85b33e6888f30f341a01a9a54cc841b17fd31384ec7e3c216e4bcacb8f73aeb40d5e50c76d3b96d1cbc690c0f8d33355a8c060fe7406feddfa08f1cd51dd8d882d82ea51a566e03659437c7cfe0fa1c5dfe98cc7945ab6976417f112e0e30d4fd989f44769d8fb81f61117ba86ce85cc29806eb9803a9fb7b604032312921f0ed8c50a51d210f564d40a79ccdebbc8a1322a43328deb4b202bc744e5f23daea51ef050e58cf188ca7b0c48867a8badb346bea34bcec089a2ab7abf9be8310a06f4064ea5e866debd915d9fe4908c4f370c372d9d4784fdd80d7f2557a25871b37c234852f9c8dbf4d391034f0fec9098b8003323081f50a4d47f66f68b8e4057afdb916ab5ab31396c6fa00e2948abb2e79acc442384d5e2453b1ce2c40da652a3b1499557b9d6c28ccc6ebf4699f2ae68ef3f27a86803b6ef0ae188a9499ef780cb614e0b1290156410811b22edc3c781e1149558353470031daf07ee19b5cb8c2e856cf20bf7b687d112d8828fd19328f3cc86f00b7c49bd3de6cc625b88560f56044fce1888e5cbadb4757b1a54028c9087ebafe2a22e1b219c75fb589396901e3395f8180e4f39a7fc551b7aeccecbbd0fa9b35f1e04151192ed3b726097a83f72c947f4839bfa03ddd243cc5c891d53379608e0f409457aed303a9268519e0af7ec9d1d6a150b516b9d8d458a50f8da2c892a922552f0c8c9d81d8f8a41bbe7ab25760ef4ffda5f4bfde2ada2e51dafa4cee58007de1e0781977ea8a520c89087b14876e5a75a062cc527b499d37bc34a571222a4ea6e50e9782553f5438ef3fcf8f986354ffb9d5518a191597e2b21ecbb9c10f77bc500c8903e5330f446442f9cd57fbbc546a85b2aae9474169422abe35a421329ffc3390a73ad8dbf49f80d1bd7d3a92f30ed44726e607b7fa74480bf36eb33972e6bdd14c47d4e6ee1bdf979e368890386647dfad9c64820d57d6c3bb75ae65a2b2577ba1d53ed8ae97ea1cc5a308e9bc1511ae5aad75f0de7b99b5fe44145dd825b59642fe23bbf3971c2db459c778412427fd9250c95a0476ccf582195105dea9b08e7eb25bdf22e12f7048e1b1cae87fec0f72cd22c039603b1138685e99c2ccfb074a35b0afec00852ecc36626ea07569074a028946ea5670738c56b5925cc15fef679f54b69ec496ae234ab96d613c14c42ce1a48028faefd6933e11ce43dd8ddf3f5aab491cbf7e1ce78049eb5e6a290847ef6f90edf185d0ef300296811b804060a85c9b6cca892d2b339133517d945c3fc732817f64a1c7dc6d4f7d7f9969c2331bbd232a7edcf1ed2e05cbca55687ab895d372d080c1edfdec293331193716041b84a3e4bc27869933eb42ecb4e73a8d9c747081f6f10683d92ebb10819f05fe64d235b4266d97d27504dfdac51d505ab0620cf57b57150b103ab3475bc44c8d85882cd1a3d3ead41d08561592064870bd531b8749cc3937a608914b5662d71061edb001df8b5bf4c8ed36218d479c563ef528909c8c5b3961ab0146c391439ab2a46213c8c400750708bd120878d09ec6ca7f5437f368ca3bc9d4dd1817cc2581f56e6412b06dd1ddee1c20bcf9e0e47b5cde5fdd4543dce3b11d587043fc79af60dab4b4963db2453a94c84661848095b53318d791a70b3b4074940a65cfa87087f61569fd5d4eaa0cc616a56e0199e432fd827498a64edb8c7f1ac6c71dfecb613ed330d9c8a76d6d2e2dbe959b0348a11f5284cb7d9c8d70344aab4579011bc5129dcdd3a01c6373b69ad816d89236ac554edd59e353cfd671c36467db13913a111345a0e110543fb3ec21a71d433a9c8d1ed74b17f554e0e444bd14c71baf25ff08665f16097dc6d99227a970ff6f65d03ccfaf4b5d83d55e952bd5bfa4ce3a83863d14c86a0f6df1705ff54d8f09068ca2a7d63511f6e8068642a038d19945278f9d28963bae704f69a132e69ccb345b5744a0da4cfdc911bf3c3e5c80903f5c359f012ba4f22265c2a9be3ba9915fa4960fd8e77e1907e9d37938511386b67a581ca47eb0e9f3ea889826e531c8f9a9b175a12c8e8140ec0ef959db4f2483f9b2356919c3934c72f7722f7642f11ae62c67f402c8a02a3680e4bf7cf864cf548bccc248756539687b9e6ed129226dcbd8db29bc9e94600f1e027a78d4166d5f6f0810782ac7e4d2266972e411846b45cf4998626fb106f93044bb580c5e7cf8ded5811f7196e1533d837a90c6d6f091502e40625efc3c79d8399adaf134625fb0620ffb67a245391280c0c10ee8154e738c88eafab161133199616184e20ea045a17a7bc23194a79c5850f7982160d07c680b1bc1be231687be7053458a94d15fca64a3b37b7826fee770bda2fa3f2a804b724dc34565290d26ac023a9e0d217ad872c2fa2b501ab76e9cdc3081df6a93c2620ebb1eeec5c0f37d024b66d3e21b0a82c089e485f46b10093fe4d740fd83df7a978252ee00826b660d8b7e04247e64eceac0babb24ed56c1ce35b2ac3b74b55ddc7fa15055e7781cdc51545b76362bdd7508b5c514abac4cce29dc709235dfcf7cdafddc5401283e9081ae54f0556db523a45274b9dee1e76d59b2eecb83f9e32d6e0d2b6b152e9194bf23a69b907780c4f9012f8276ab4d9f87a5f95f7f26376c4bab641c525fd314e49d04cc8e5c787f27a85eb146210f6ad4bd85e0e5893d894066d869a2361b6f65dd3a187f759a18b31ea867133f7c420811a6dd90cc9e6555015c461151c8400ff78fef5cdc4ba44fb1f6ebc9651c255f50dbdab49ca26a5cf27e44a1f203f1e6d17d0525ef0d5b33a156faa5d8b678b13bb22f332aad94bbe48ce81780d1dab9a9b70d5ed3427f3ba29f230f40ebf8d628b2ed12abcba058356048ff03af78738c8082f1ef0187285eef87b1285a2ba6819b25ded950af237904e30babc53304e0516f4d6dfcfb90f1f375b4825d210143f625327181ed13f528da2749aab853dbd1792dbc71c3c56b06b9f8205188f680f08c4ab350188a2563f79fd3adf373091aa3361034c0c65215a0f73c6b4a1cdd8c47b0e52ceaf436412752e5bd160cca4d7bc6e0bc00931d5f0733f12442ef1421d87ed0dbc5438c2c54483bd54abdd180c1f36851eb93bafcee25bf32c23173247ee34167302c3e1ccbdd39fcee14a6eda9c325371a9f083c684c0b0df4f85c4e19938a19ec869517946863d9867a257c44045bf8d90e5ecae3289c084f57c304e2f4fe89c61191886863e5d1ba69fd97bd1192b87bbd03af2a2420ffa958b31a51a978b96bb3645e31400bba0b33325773091599ed43b3158cc4a587a952c9ded0e5d53ed0f6f4ff365eca151c709cf01893722d4bb820e9090020bf8c62b77911d7758304d45d0e6d1a36e9b05266826275fcff574d6f3d8e5ce9a09a4fc39c1addbe0f83046df783930a19ccf78f28f3a04c2616a0b78a73283defb1ef458074fd99e74b112758aa86235b82f26c638739bce5ea3486b7e954bbabbd992c320259f3f65e01412f289d05b76e5424ce956aeb6703a25bf30163e81f10287a3467cc3e8e670fa5df3d9e5496e5933325e0813c7feb282d616b63ab75e68ac46b1223edeeaa15f302f13b5c6549d2e89caedf567b880de2912a40d1df96f1b35d486efbe78b6ffe0bb19c8bc3222fe687afc9a50deaccd9ced5668a522b1f85bfc622658235e84bb9fd56f143de06a74db512d83da37261342071eacb6a958c54db98abbd3eee9557794fc7bd5136f4b0ccd6616e9daf3f9cbd98692c93dfae1c086c535c59ac4bd410cde52c6bbe6e666540f87097012c58e99a639f456ce3d28e0066c05dd710a023224a22ab6d09fb866818abc22e55bc192f99936714bbbb7d26f1d745fa3b61d57c97c44c878b0a4ce9814a3095da79aa5baf43faa2d5c3176b8619e9c85576f3cb94603dba12c61da7b48900524fc987c2acce2a7069eeb12ab8908b8a9d481829aa89451c8bca69aa7a0486103d6524777de01c68bf1360dea2fa91fd876ef6e368ca05483b47cca05e1ccf65a254440e71ea31a4b6ef0a7261f2ec2d389ef51dffe4a82e3a74e8c12e6d47f96d85665fbeebce133e80c9a8952d0d980c708be0c6a36da8f35869617e51635f0337d7defbc9e28fdeb397b6e5c8729a11f1f9bbb6396a51a6e2e46c24778777bd34b58ea439af1a2f68c43f78a429a889055e47ee322bcae74a9b71bd839e5267e073449a3696fb5eb8b0df7cd0c4e66c9b374e30f50f061cce4c8b27c90e24c30ca467a00ceedcae9bba31a209abe2e3acd51262d086eb02b29fca050a028304a80d5edfef1d10f4d36c18a045c6ccce1250d00f9f8a2c289cd0363f4e314e54366490622585a2192c4ea8ae4fe8444027f991e4f603e87238a78b7fc7a6d84e1c20529bbbeefb9c06eaac0a75760cfd37718933e9ef56972fe939b4c527a284b946fedcd293550d3cec3774412e1d03c9c54773536e82a46dc5fd93bb38c2fa522b4adf75ee7693496a0bb24b1588fea646a1bdbf19c278b8f1931153ed58a9cd72263f02dfcb67cfb3f90d12e630d2c9fa8e51d54a8c469674b3ea91f6ccfd38e485fd20e615575f4486d2e68bf21507df130f5929f4158455771d0ea15a5829d008fc4e75b0449bb02cd3ec7ff991945807ffbdac0b437cadd06e32b57b8de218db84f5979ea4a3a8b3e3231929c75a85a9c945ee41feccd16ee3926bfc6552250ac312775e01d669db5e852131671754113eb16ec0ca3e93c84851e7251ddb4837477279cd77db39889e304291da4f8ed7cd8031bcfe8acb96ab91e842e6ed69d28575023e3a07c54287a71828b8133edd0ec5cfa94622b31de0fea8e76475f1f7566c113e0e057a89fc1a0714528f19af3b7fe4452243b917fe5e14d230104da4747d4374cdd73cf767c7119c296eded2b291746d6660d8f1df37cfeb561b8e2e021ffa66e5270bb535615b8f740dc73e754034d4b8d7a04ea483bdf3d78cefe2011fa8f7d7e16b055891120a9f7e8356a941ccc016f873722f75fb98289e4c25dc3b87dab924c4f9c381e2d6c659600c1a5e80194d58a950a84c7a5db246d2badd4c3859b580eb8af27938b43e608530b6a1d935837d986ef93bb36a508675b9b5fa0f3d8885995f5f8bf09c0def758b0e1c361cadd1c0b6525b229fd47ff822f80712d404a186840e4e3bd46d413d1cd830600c19ea89a3a5ad7b7f826388609e29dda18e4d5a3b02adcedc4d83f0b56f788f7ae61d56de2a35cc6292293eab846f0974a090c0cec5c2b3b3d0b37043513075e8876ce18cdd17f924b21c0cede93cbb3f48c9400be4c5439fcb57962ba03b365c45b4260cfbd34ee78334e2ccf1d06c64a8ceaf95710526a34bfc30aba2b3748fba3845c5898412eb18401368265f30ae745e57d980f560320d89847d4108cb525679201ecd35475e7ae044b2f2b7ecb777db2cb1aa4bd00805632ed78cb05a0cdd57b444d3491907265374942581561c0e5cb1408d2b922dd85e9c8a346b50aae68e57b9e9eca1168c0cdaaa75fea73aab0855aa49633d0061837f28100f80dc5e786609239af40f9222b6f0f969593253ca777204b8f2da309ce41199eb79ea03241021d8afa89c10874fc0aedc5b1f2149616768429b43069cdcbc6fb9bb05eabd3ff82314515c5212b04cf2c6988ec13acad720dbe5de5acfdedfd21adf89fa44dc2363e99338995de7210cf9b798f500d1ba5e97d557d7de4ed329ace7366f91d801bb52d48b9a6dde47a23b6e0f1498732d5855f336dca1d03b7fa4121457abcdcb9248a074fd2c065b4078d6af86d5e852c6587434fac053fb0106ca53187119d9157d5404dfb66a4dd871975a49f6723666f7e7e87a28017a815e9d43e88dbbbeb050a8935071f5893d0dd8e86f7d85c679553ee0d54a7493f617620d54c06ac899d6136cd6f7e7e2a72944539e62586243323afb3933ead7fa58ddd0ba709c7b45e94121e9d5d90b3209a4868e9042bc8ec49fbb0b68505c4a759967ce977872f14e006a7511c35e5e49c86f8fb3750427a7b28f5f9d5d074aeec8f619f5f3e11aee5f045b85dd52906bcc7e0058f56860d5d47182371e257f03594d75958a8b0512f734ef0b675b90edf11fd958e3f88db75839719d9e0d12d395ee92a954b038bf77bd7b798edb0af2956e229e7be2873fd8c95f5b9dd6540a029475ac6fd8ff170cbbbb66157c0d7903b5792b59d42c15a3e633156f5b342644e3f4d9f5e6e8d02ab960cb70768e282422917ede03dcd215d007497e61cb434b0f3bf5fdff47b5d5698d687258e6a4517cad3ddbfbfe51ecf8aae11043d1800d1e495f5d3bb33b74e05d03c55a5079c97e2936c9df7907e1111f993d5524ec8196747d26fc872abce05b6fc5a36c9085fdf2aa3a413b702b621c2b3b314806b86ce16f1d0a624c5acf086982b7bf3c7be108f353feb68dafe38c577324e2d12e1c0d189d37a7344d165840ede431d1828d03686ae15e72f0e10eb5034e3c74cd02476fa673fe13245b355385b78dc969428ba422e32cde17eb7353965bc5651f39332d14a5d19c93b9fb5708540483f1a6df12a8011eeba4ba432ebc6a8e32b65648be2c91d0f71251fa77f12daa84bcae4fcbd798b4c99365396f334fcdcad2cb538a0c5d6dc872d8f839d1b2f8576cb9c2c27808758d1078c380c3615e63b8bbf28aa2ee6141a096ac3cc85f48f171e93149db3e680907e583f098063de64a8d1a32398f2549061444c1ae345da852602ad8796f9bbc21a0d0214b4d0df3dab992a0c5b67aae3e14e005b39fd8c063444e3175d6a0ce097b36d0f567946f41bc762c77d4e26c05ec147078cbc3823e32d3cc05eb0b1cfa66f161103a3ca8ac64b437413e2401a0136a8701b10be36e0202983cccf552f78b760aedea9400c13f9256592ecccd2aeadebfee6dfebb1e9aba03ad047c1f3fbfebbc093bcd33ef3126c6e3daa88f7efa6014dc26d195bfd3eb62dafa4168c0c2aaee9c563e2522e2dc3248414ce29fb65671e72c1cfff46a1c998285e89aae5fc2290803e1402611f5cee8338fd4ea8a17efa9345b75413de71820249b0882de766f1a50d36b6c8502b935960c8d6c5e70dc2d2c6fdd371f77323d4d8852f796bc6a4c69d8840ac56cb25678a2fe1c122399aba41b8c33fc10b2721d5ee6df52be7260bed4741b72f025e5f0f4acea54644017d489ded8f488ce2b73d48ad5065d5d107e53cfe0bf1b7e7028ea80ca2e5a23c9e9c262e0b6c667892c23fc22f4a921b34802034821d2cbc6072ead3df9a413cbd03990ee564a95fecd8798739f6a4a0414331ab503cdbc3b5fb0a2ff17d17d948141107a8ba5848051c11c1c289a3877745d0b352317e2672a2315cea8e6533fb492960246fca7633f98700e74e935c0e39a9979c790461ac97d0f7d8dddc77f1bc8491a4e8934407b5383ca5438577d2728c540036b5576a37b18c9a720d6e84fe4bb03b01af177604038de411e2f29aee9cb09e2b01078b41b6799da12a0473ac972e686905437e33163c6856650c193e2b9394abb9758e32027a46886961f1bc000dce862f40b6cfad442c28fa0ca02bf89113cbbfd8ce991cda69446749144f5ac578117436a0df4776f814b7a9dd14ed51700347059c03a7da4fb8d08373bf7abaab4cf9ebc837d7c342100a0238fff15d8c97ead3236297bdcfd8dd1bd393ce8a6fdbbafd5297695dfc64afe71ad6b75194e43cb675932b36aafeb664a029a5aa294a116e0acc344f830773ee81bca2defcd054dceda6c4cc4353eb4ee7fcff25c55596b25d4cf37a12d0929c06d7b7a4422958a6a68b24d822b9303bdf9fb0f8b47528b462205b4183438d8369d8018c6659d664e4523522ca0ecd74180218906240e38bf6e58132a206ebab996ff564bf518552811a34df58dbc976ecdaa45e8aea105cfd7bc50a256c964c1fac2b720a1d4b13cc758619c2b6d073f06e1650cc536992196aaa419aa9c3544f0b81fd613f766c3792dc0e354da93a3ac77fbc2898a37d04ca031a42feec6ea74729772a577e3e33352a34f60d56c7a970152af376fa396699fc03bd3f9307053a79b2f0ca061c9b9ba4e1f1da26fa1f575c717b64b4c550aac8df4e3ac1cd8cbb0fd1d9e927d89939b25b2607ae16a38b134283a96cc3aa64f244f002aa664040c545621c11bd7ecf2ceca7e09fafe40f4e5e8e95fb82e6a164c39c3490f768dddfa967a739fbb58fc696244f13d74536323ecacc8bb57d1130590521442be9d6aa471e44671d075bed2fd9045a9a8218549f4148609d7835a9434784a23722f9b796abba7d5b2c47ff6b6760eaa25b7c871148f621913ef85a0063fdcb462d280caaa555b13acbf49386cddcaea982efaaa0ddcbab62b5c305e5525720828dacb4e29cffae9c7676be5c701e8ecabe0d0c1ea24005f71827ccc99d6e701c88a51f6692d6f58d308f9b911cd4d73442b62991cdf3af0f9b490018c06c9e982098c4937c07ab3fdea4a75fceed2bc7707ad13991980a7acd31387e577dacfaf221c5af72e2e0c1606797ee1d6c38eba63108abeba826f5f19b4c6627191bdd26841437e3473e69e8fe6981c26610f189fcfd5fdac007fdfb9a386d5e39ab856cc633a80a5853f326ab2a879f96170799193e88cf64f47ff0315765a4c5295958e8b2f050073e4ef114687e6736c694844e8f4a33edbb20365c3c903ee4c99175ee7fd7f6ca118f09ecce7da489d82f6ddbe2607519fb30a3c6be88a56ceed347d492c6bcb468cf4dbb44b28a1062f334ae9ebdec6ae2145e54e27db4154e2820fa93d8d24efa2d13c310724992bb7dad7a1cc201aaee91dc6b09687d80cffb60d9f91468ffa094ab5ba555dc385f3e75c03d40a0f588ba86c5cde7df559e7e9eaead48a751c9f560e897e518f00d7f26f8d88738dfae7f0051d2a8897510c64a9eb0168e5dca6145d1f09d02f7dc905eea674f0b9f5600688462670e33f2f5ef82af13c7f1553d4abbe0101a151d2d352143f155d3e46dced2b0cd52321b45ff7d0790171789901bbee4d3fbac492996084534d6de19459cca6be06042ac424672c2242d9075ae1fcf91039cc93103334051b12de7a05325993f677db424036632f60b1de9bd55c946e2008286f5030298dc47fadba6a62b5547f993f81839d3aef6970c36074552ca18834107cc0f2e0739d8a87e85f6aee4d83303ab8f55da12796713d54dc3af22a21d300d3721d57f3f9563c5d479db269e87972e86d9e3fb64c9667cb57dddb623132f00028e22caead75b50799242693bcac4fc864ac961c876ab1ee8bb6a5e924c6258429f53b2714070ce7808d9f3eb2ad9b43f7424f00e19f4d377f22a42350488954f4311146a906e093cdfb53deac0575f8b8bf47ac38aac1f6ef4297b6c439d858b33a26d9314117b42e5c246d5d6d6fb9562f248fdf1f63cffa862e0d363c04ed899c900e74b7b889c32fcee7ee7f9a0c095cb5ba5abfc13a1111ced8edf21864ae4264fb7f6faf63f9cabbcec266c6add6474764b33c37024075758ad05d6c805442361788f6dd27ba2191a63d90c60aa7bcca66573818c7c5895cda71e088fc674904bd491512cfea7a5b7aa3c3a2c524dcd8c089014c7cf943f84239673403173a44b0057916e939a5fb5604249f3670d9c212630663e980db9e83965c34b62cbd0692085356163e87fbca38f4c3e7a1463b2462139e29d7adef1f4660f2aa3bd5e66bc330458ce424816dee2d16161da0a95e8cc4ba2d239c78dea5f2f16798bcf729748e03952f747a58c43d0236b2ffe3501ecac3385eddcf4a19861bea2398011a5ee6860e459b6ea77776926e9121de2ccce29562ca7e7e327ea83d23e6c82473923ee2e9cc719afc1f0deb180d25d84792ad4415b90ca52ab136c97878e66acc48772aab9f5f1ffc7bb02d432cb3ba9c15b50c93a11d390a22ccb94140ace3a2c7dbd7eec4f214cf4d0d57320d75994894560a6d87b9176b78e0cf4a7963abd4dcb774e0c1c63ea4c7d1e0db1704c80f66667f0db1d7ed2d4845be5410949f27e6f3dec33797012b0802f36900be88d60cb40b2eae6c25f4d5f5b0934d0696c269f9606bd297f319a7afb7bb99262027d5cfde5eaec29aa6eb6a9f314f5fa1b23e626cc3866b0da85166f4e277c102b006b493832716dbeebce430ca53e24d674534cf482155121477df64a7628de6c4a4331953ccb012bddb5c95eed420c836b0abd28c247b3f1f05cf7202988bbcd8be50c4dad2fc9dc33c129aa371a38ed5dbd5d0b5f758b38d34dbcea4defcf90751dc6bf88a4a66fa4be16ce0a8d5a6e1b77e74fb64b747a965111f6e683e248fb40137e14442d01c11daf51364be4c5bbf32052d68c6c9bf0c6a6ff884704552a09f9a9b873c072864c66a9c514fbc278157d72d4d32959fae2d510b2451cb56b990db8397fadde13192c4500f55028cb89c366f1e4e9821ed4c9e2728f45445b3454ec84c79524fd0c70af72452bab7f547e77e63adb09ba3fda5fe88431fee005376ef39d8ff3c6392fdcdcece3d37d61ca9782fc7206c132f20f7457113c214d41a4d228f6eb750f8820598e71082cde3fc8d7f7c987520a7a5ac28c5f55831c65e90c06b4095c53f6041c524476f7dd1cb83e99beb9b9dda926c5770d6e9c9bcee37dd11abeb49af341c8fe432ba9e5076359abc1a47a9d22bbab750b1d472915f15b5f79095651c5fa02ce2f08479f03d0fa40ac4e519b18fcc20ce1c1b62f1ebd2af18ceb354fa73d0ada348d0ed79f4949dde6a68faa58a0d5e3b03e57fead86a66d8fa26ccda2d20a6d8e9070c6d58d98f3a46c516689d9b0165a5fa06daebacf9cffc17ce924ef7a6f345753d698d0735866f739882a1c90638904ab55e86bbb87f3a718e75bb348a8824cafc41addc86245cf1b2094a9e44aac2668c302f91171f2c6267573ba68c3998991ec2842a9dbc854060886055b04efc0522008977f50451dedd4aa193383d29dca95f2d57dc4f06652d3906db6f3f108180bffa8f3362461cb649db3220c7e16e40625bdc7377b6e916dc7154bc47235797f6964a9b48d917183c503168dd678f173ee6c62c630d5975bb9a979477efab3b0522f21438730ec40f352f226577648025473888739bc5f9b101ad3f8b82c1b87471212eac2d0457d10443776fde75001388e72d897945ba4351569fd06f85f0bac048f0632e409ff91373a211952efacd639daa63706f4e1cde84527419040c11022a075eabcf00614b3ebb51a95ee5ab25b67ea9ece3fb8329dda76088f1bb3fa45e37c31afde98a731350f27eba17102ea67c730dc0f29d673d601845210983c0d02439a0e0573b1dd7d026525b1decde7077753c2b9a81b3324137c70fb5e725406957becd6a882063c97a033ca1c21930411ec8cfec800b7e77825c592ac441c1fa38b0e00adadf04ec75f2bde5ee6693f948e958e52d6899c9b2db41fd2e773ce26394799c89f8faebc61323cd32545aac5977f7faf0402d9a62122cfc9411eb4181bfbac413cff927ff7e1572cd96db3fdf4ee1ad429998bac9a027d0d0a0deab9f220a3e0e71ab24296720509c037fb31418d023da416d0d31e15d2d663779c8f9ad94bc539b2bd7c3d035fc087e45aedbab80d46251f3f8478ca293c2b5f44c7bfec9e2174f8bbfec5e266dc5943e5d0acf33468bf8a4a9c506eb9ea507da417e71da45d5444fd3c2402cd498a10fa2265d2eda7ebdb02400a8d4e712fb8a997aef3f8247b8f0374c9f6405bfe77291e8443aa91cdb782a63d419746f22b916a25b3260e37c5bcd68eb4d709c5ab5411eea24707df813e9f0791db7ac05ee82a29b34087f066f889b124ba8c86c39e9ca993d8c9aadcc7e36586622a3c00535089888471c16829db4f0287db185f44c9bbeda072852a14c5e801e46fe0eade7fa6ab3e40607dd7aa64b8ea35882f07e096dd5b6f363c6184aa594815cb0eadf4e300304b94c3b930f468dededf3caecc9af0a635b6a2001df26b94384019363248f049c378e4ef8427c1b1348a533be5bb6db08ac9ccb3ded3ea4dbd0a1d57f8f220cfad8ef3ac5d9ee900a7e4e7383d6a8ad237cb995b35d590ed938feae1f025cb056a7881859177526f12244e1334f6d690a536d80568f6cd7fc8fa5737272574d7ad1b47561aab07f83e65d6c7c6e1cfb5b2f5f445c0e1a7fb9e65b4aa2775e8071dbf2d0b494631e269c46155e123cd67bbe79ca3e0f7bad4329fdb1dad684ae51813d1ffd4398ec7deae5721c15186f1e5750b28e57bfac326061f59e3ade7d0d7e604b322543b598259a2d7c93babee5088fce957e30e9b0349fbc700e4a5959a89aafe43ce4a9a5158783514c16c00d533da5c9afbe763c9a3b7cc6b8b7f09f17fc9d578e36db3dac54c65ef3eef728543bf10d59f78bf7bf0f0152ad12b6064353d96b5b2ac53cea56db8291ece8ec84c921c76e29ff88abf0eb9611bb62824c281c5a873ec228783ebd374c109c0e501bd8bc2f86d38c1f6e2dd1ed8c6ffbe939923da6cc932bb31ff8602e72202f19ed6ccc9240a894af508f2b24fd9c829e2b5c6e8302db9a30d42f6accc805d884d6676bc80843b823d92d46a8c06d9535990fac2813a310fa7896b5ddbce087139a0afa79c410b68d25f70cb1c7a772b28f3418b0a0d7130412785a2574cbce6103c5e5b00f9ca3b18a2fdede13d87e2580c6006b7fc650a129b2334410e27a9ffdc09b8fe51a2ea422ee009015ccb8191db77a27baa661f498363e4e17c7d40f6c564b46cbdf6ac04b9e6bddc9193e8c376bcc9e2e0d27a2848a473ddd1feca4f69478edfae737575581daf9c794df9f9c3aa8563079b046ff46ec9a0e13f4076dbf5e30574d2cba212936edc9dac57e29f3367f5fcab46eb19ae6fb6dd0afa09acb22f163d6188417fe49e601c9251cc754f29748c39a175dc5ac26af07ef6d66e4d5501b67184156bcca9cba0305c8c3934fe5708c11f8109f5fff1b6d1ac1e1e947c5398b30d8c4f2ac7d56720ec70cd839012b32391366100993583cd02e79eca92687ee81583a83cb9bbebe76601ec05c10ee265b5830962adc2cb19046d3b300dfb5e4080cb429de9eb7d9f0131ddc3e66f1ba3251a1c39b1ab48c7ae3083a67a5ace3edf145edbf2a6074b2e96e302ca27da7c520fabdb8d8b2931728cb2f216f7204660235b005795187880e58b4f08ebb8acc5490bde0f71d0f3977bb757d807f8623de74a6e41e78cdfb2d92d6624fc862ab4b1790445e0e4de4fbb1a288c7e94b56cb94d66839c045853c92f6bda17d14fa30d6190520761e4f92ef808feabd5a3c22029bfb791db2d2a334e9cc43ace79cd2b0cda13ded57ec23408f71b4d95b428b68263acd4c1c1b03d477e4c17d096dd0af35b751d55288c8e282c3c8c71eb4b0e2f91b96ea4d83f562ddad3a520871e802700dc8e46c753ea5bec1c96f14fd45a06d69b71d559290fd4cc1e1b559a5614eaef677e385c88b00de125ae9d47886a02d82e52407b68c8b68104bf9d454d772b6fdbb0383a5da2c315aa46398d38d22b973fa887ad74978c920c98e3501e7e461e460cccf9be2123a9a52debdfa2b77e45f469488ff213a7d16688e9ddb82181cf205f9d51271b92f671f64479d16f2573316f4520bbc5e848e4fa910cdea796a92c80f89c6e24d7be96a925a3c9ad20cacea16ba70501653499564f50e8eec604355acdd53a02e3db07d7cc2cb2c1ed3af19efe71212c452a5caaa995357ce28d4b7a94cd5ef6ec75363646ce28391d0f2d33ec5262dee5ee9cea2ac7e250c7ef38465538fad231fe88656eb7a10fffbedc87782270e04485fb041c2ed72ea360e3750f2acbd68813f7b70f44302ac9e25e38512dbe2d5533ea63cd3506dc3b47dd8df2f0c4977dbfc987ee280347fdbbfd691ad668744ba656dd7bb120022720655c3931a17554f765ca7327aa61f246b7ce54c7351a528e7918abb51934f7ea60ce6abc1969db467ad0e087e6172c19432a12f626b913e616fa4f66781a0f9b3816c886368a516757ab6a970ee414defbede5991b15c102af2d6f5038589994b3c543fe77ac1327d5265ffecbc3b39496a3312b0433ca849631b24d1a1ce270f3dca6ad50dcbfbbbe50618f51dda48b3504064233c398244c97452b049ea0234999ca6842a1218bd98cda732b44311f71f259f7a3f680eb6a7e03580c0219be11965135666d0631e935782c77ba3815dbe36d6f3d58232bb2735e475009af7dff82bd70100d66b22f43c22aecbfe56c593506010c1ebc52cf3c25b05a1263096144b9bf3a99bf31217b826aaf218a5096f745739bf5b15aa4c50fa59827af458354b0cb7931b7173118cd0c8518654b841321c746ff062732e6a065f3fd804093e4e5b7484d49003d5e8867116aba1182c7ed126471b60147a172758a85eb701625abe7c1822ae919fcf5206f60399819330ddeccbfab9de82b1e809c8937457ba83ede673a55e9da26563148dc1a2003d696c7b83fc89347d043b7235df3b66d482a53bfcd1e8c90cb68a144471f24fa673ed954b42e0a29ce1f210b43a1db013c02932ebd1c420df9fbebbdb28151d179892120c2a44cceafb47c0647ebf0b013dbc7cccde2324380f98db026c6a9f247ad3eef4822c232140551d0954dc22e10d28a538da66b1fe2cd8d297cda77ea142eb73ba6f86740fd79c801b0bc0402c473af95e6ba4b316e3de8d7720510934d85a6b81b1324259a98186bd3dcd70c15b4387302629a689ee3117fce545bb0cd761636d1b84ed938acb27bf74faeceee9982a3e49f1e64cbcfcb78c8a321477cd8903033bc6b10f29286240bf4fdca9de13a89b6f31d98f788ca8e1ea1cbe3e801c71d0d5b36ed57ea670af806a618fa791da592ccfd7bb0bd350dd8edb03239faac30db9fe42a3c73a94258efdf888e572ef69e5e5f78f3be8181d019a97d25e8689277cc9f6f1ee3c6c64124d282eb31cb3fb6b429b02ca85c9a3ac58a929e3475c65432e364d00e9def595b57b3d1b78eda8c0e8d2d236887c3fb46a4dac4148851e44ba9b8863e09130f721d5c6cc74ceff298f91f3bb721d8d49f732772927b22ec8ed8a9b95a6f22214930ae1737f6a3e4421ae3a38eb79bb237baa20eb49b99cb2bbda2d9e22cfa666a2d4045f0f4751f93cb6fdfe3ce26fd844fc43b0556ea5130d501fb9217e1fd9f60c67421ef76660b39086eed3596e03f80eb12fb5869c2e41e8938ad397a4a8cd3cecfba9c7aa5c0df089c2c357e75b0d5e7a10188e5570a6f34ebb4c3e9b3f797b8f33307cf8720595095341178d1050405b7bf3ea06390100670a04f6ff91e09c5695391b9bb608614c532878d2055f7e300ffbf2d8080c939cb8570ee3aafbaf2d2bceca68ddba38d62f766ff5db2f397d8aac0f9392f1b4ddb0069ad9c857cd430efabccd8371b689ddcd07b7f486203601c5f21874d34ac0f8b5f7649d9735c3404f2c9869b8ac5dc7f3f1e20a81f94c63cadaa9d84541fdc26bea9201f0bffe01636897f8ce78508b52a508501075b66d81e71315d08636f5154258b8ab986e584ef25fb6252583e27910086f7556e4dc757e4d6272d69111021468a5a64f16de2da9c65ae35ba6e399d95344c9e9eddc77bf26371a52f23b68838935d4362e15a306e524642923ca082f0b9777cae040170905662dedda81de19ae93b8102aac536bb8b0b68ea98fc1274da0bff9f3ff2f8dda0f04a743a3e0af4aacee0e7721677baeff1be40ef1e3b367b8344597d459f5cbb16c95eb594fe5b4eea3208b280c8bb09e8b0ba6ea2e1dc4133ffd989e7417360f24bff183ee29873218911f0bf31a80d42f737b538917b3139afbdb5623ba057e62c6bea5e6554d2522f6b002d264768be7e71e027e617a51d5f957f84d6993274f6389ee42d2fb2aad6e9e2fe1f7f839c537e5d0bcf44534d4375ebf9e5a752486aeff497451f3a9343182645e65356590a4cbea94c6de944e725c850562f9f5993bdf10cf1793514b6a9d7509fdf579422667057d1849ac502998cc34f638c48c0386990ad49b08166b711da899a19f8a7d898f9158ac4cb9369c442445f9f3581fc640c307e5d6cf27e0d0847db8d94b1686670d92262ebbb4522d8e58c91b69528682faff264c43066e0eeb3e60441bba405fd56d6deb60340504724a101c2165f960925ddb9b55fc7ecdacc4d078c51270afedc25e240344bd529489fd21534f76a8d32d76e47afea8b39e52b42ec7fcbd7e01b7e21ed345bf4ffa2d8da9c8323b95eb9279de3cbe759f19a6ccffd5a9afccde6ec128539619386f5d1227bd25a5ff68fc257eb8b82de97b226fcb54937f63f74e4eefdd0282f504c0f9dc63cda67abfefc8e81f958673a40daa97e03c53efe1cb0afc1a90fbac8a04b6865ec887bfc960ec7c38d34e477adc24f6c6c676fcd7caa2878b90fe48187508ee47e93659409ae892ddc970fe668f0de38b5088693692e4de040b1def8b9b17342a41b9c047b69a0979f5e6b3d61ea5cc632bbdcd024a96a72b715d9601f6059409fa7f03dfa641a991967b87b9f73cf2badcaa6e600c4b6dfea5c5a05dbbfaa85701af9b73cec3e438a06d050688b791aff03da41a8699004a54d06fc7afcecd7d829e594d28df8798f654eb35dbdd6a949cc8f41e27565d3495c6682909cf005831211d1e01066f70fddfd4c4461cf8703153c6ffe2b2feb4e637c3b26348d2b96459a47a3fea7b91764454b326785c7d5e983d728166c215720ac957c6cb48e40027e5593cf99760b07ddb08aad06eaa4357c6d37e3dbe77a2dde44db75f521132783d982b4abc5804b2a44cafbc7a1954e5cb9e7cb6b54d0bb9f891600f4eeff606467614c1a485a559790db19747a2082a5cf6418c2fe09e41fc60c489751c7b4d3a175a680a09bf00d15ac28fb64f626eca214c4f85c934efcebf01c372ae41bbb705d442ff9ae2be414a9bc6d0de3caaea09ef70a97b60fc7ff4a8c939ad1f750daa76184c02c7bda575b5d76e42713929bd0562cab7970a0b0a20425396062a75d68bff7e9e5669aa797855bb22c82296ee32a76b15a9b4ad52173a20da9ec6543f7ba4afe00d23b776760fb259bc5af672b1040882828987dd0d46445cb21118fc2292dccea9923a93b83366740dac10c5b423d2bc47292b02e61a4ff7667b480ac0fc2a8026ee76771b9d49372230b7835953b3d8b87e24de8915f3f648a948c766d140a50dd3d6d0bbe0e7183b8181ef25473abde84e3dcf9f62929a2589807a0b0c67ff148badd072ec87c37410c7701af5c5a7439976f94eb8b098b5f4d5c91a9620e20cd606aa6248ef949a492c0e52f5daa4e58142c113d4e39817300540a22f68b91e93d31a934d1220c96e00f932053c1a41c08754a42e31b71acdcbd10825d6815be351da9de3d4ace055bd032f90103f15cc5c21e597630659bddf4f57d3844d9a9f082e6b971fb4c771352114601ea0b442365bedacc708229d5bf2103da9c0a63b0f59fe1c75667dd15fedecd6dd9b9b3e79781b5aea383581a0d69b317b96bf70a425528ee424fcfe3c277154fae4569bffb439db68814cd1ac7b39c9361b6549476045f9ac06ece7022f06a9a204ba5f218fb2eb9dc476f98e468f37b7b277689f59970e2756253a998d4fb8e7d565c8434bd518fc5642fce9ffbe36694fa6a58267f403921203de726a4fad49079facc36f2a68317fb72f79520f8d19fd2c594f6212fb306d8578fc1417627e9f74374e46d8c3c4fb22af1f4e246f725ae3f0a328dd7fbe4e441f2b7e07dd6d73362f606117dfb97db04b57e8c7c0d0169ba8351ab3ef9bcf31a831bda1055caf3b45b111b784ec28d505c27942767878ce7f299cb1db4abf2c3f068ce7f23852f927c6eeb18140148a59383c439815d99ec6db9811b8ae21632b2dc94b751bb26851c153d29d77cf56e7edd158ace52623dc73fc936a4dab84ee30f632befbf4bdcbcfdf66547bd92b442dbdf983db6206f8fa37fe894548c5274bb90347de956e663cf5063f2c260dfabae81cb48d227619eec0a660f996afe4045cc759c1e48715493d676455a08c03271d6237c60f61756c8f11047e69c749004d5addc98555756b213edd35a3144c338dcafc176705fe34a29c13b646fcbcb09f2c475eef57ac6e5138812f7f02fffc4c0165f57dcfdd9e7a3cf09fe9ebfb818892d418ef8a254a3ffd8d8dfa90afc5d333f0603588ff999b487fc7bff4c7d1e1a46dbc23fcdc31a4437a02cb92a3107c7a9e7789d3fd8d0f58cafb6c18122ba9b1d3a180b13882f9f5667020fdca470ad1c4c206ff139fe42d0e6147aed064823cfd64cddfa7aeff66e0cb19422e431e9f58754f20ea79a9b50ab8d9e5e8a1328fc1f4257182473796e16c4a7bdddcc3d0f37699835648f50fa63b6219d6b224da358979dbe2806b844bee3d64aa32e37e13652e6a6edae0ae34c654f0f804e5e45d6f0c477461239842d0ee243756cf275381ea1880608882f807d651b81ea74e120bf5046fe53112246e4dec23f3bb77a6d9c136d04b8e35a9784227dea2c15e3eeaa0553def2692057dc05a65e23fa1d3d5377b340d96791756a7eed9f82c65d7464d7f82d4daaaf0339ebc0db9d745b0bbe6ace571cb633d72471dd30208ab2fdf90347eb3e8864c73b514132064eee2a9fcef225058d94dcb1a52b5bd15f3869ecf4a06822f9d27bdc4f6db29aa132bffba64800ef00b95e84a58a0423b8afa29c8c090f45275539402329de9d0b67122f615fb5147063cbfb5f9656402e83608081508f1397c84e4954bd247e28924269a372cc8964841726fa1ff0e1adf8cc474ec633e8ee8e7691cc95a6e52a89dcf22b535941b7538993dce25a2d55d4c20c408408741afe1aa264b062e73df99212210425e970ca3d91a5573bba8be861f038feb920588e4fab977996efd86ffa6be8eb166ce3af486b673be47aea89a80119eaacdd0019629ccb495118ce9776131ba4e470ab391adf2b2913e24802bf8213524d65fa7b0f5ccb24daf213d9d6d472d243e999c63656599ee1dee66665d3b6a36cbaf3356171bc7103d9f2bbf24e2b2cdf64a8fc588da2dc41711cdb6ccbbf0aa8285d6c3b98c1677fa4feb7fc278b45ec8f49feaf4d049c3e537914ca9d0ef85a6e8889a88e98f18fb5de7cb5a93f83747f07c0649f8bb7a632eb11550fe28e9f3a1712d096db6384158f8ed3a50b166db9a9acdb1bb3ae561698a0d419c6ec57bc25988d44b3c31a5b62cc2a6e1da66c5d36f1eafb226d3a27daa037e576ad4d21c31206b256da5b44d2149410bea629c82c2e5e92c1dda8da62f3ce0adb39493c7a25fc79568c84bdbe91d56a8ca4ada0e049020ab5ab4fb3fb98b30733642729eb98188a72c40ea808990a7272e5c7be6bd99e867ed39684de8d0df50e90468c0946c8b5d706fac3ffb665b072af60ff90d1184c9b75df6f56fed5740d4cf27112c7e0b2a4e306181ca861e5f26d2e03e331a52f142d8f402b6a0ff1167aa24b6247df178be496b913b099e591cfcee2e2ac97131616afd6003e635e91f5eee9db51fcb22e229fd20047c02b32424aa4559e20690a0e15ba344b8bbbe81c28ef39bda01fa1cafc4c39350303d562331844d5430498d4825815a5d3ddc5a21dfab1fea4b44000a4c70ecbb2e5df4cdd1f2867c2849c4ec4a54fa9aee635b6d82fe27c7fe3905022c050b893c8eed6c4616558937b4d52400991e7777c7fb444ee65f7ade861727abc1df9fc8dca978e07fc38a1860f7fffc730766c14eb3fb71a16a7f41caefb98cc9d642ba69296f693c9604325887498328cb078f957e239834282ae51b3e55a1a4f04433ec72df036456138b5a5e8a8ea376d72a0cb65094e609c09a82a4a122c06aba3c2d5204c0906e76b65af2f142f1bd6de3753412ecc076b7097a819e02ebf7e59c8a6688e85c571105fd485182c43c397e69cd57af1440cf1f758a491eda88646b76814d45ead3b5311fba9189f346ce43d313c1a1f325f06b5736afb2a5a4d9d6f45451b35e3e49604d82519cf84830cb73708eabb56b0a8df9f7ad8a49519ef52072097a63e496ba4c25900f70b8b6335c882ee6757c6112a748f61a258c3469a697d0b7a473612d90a094779f946f0f76f3a15d939ff7a6a38211297d52811249503f18547685c8c56d7758e97621dafd422fcd30bd0b26a08b79a9fa390f135ee189c8a7df3e0d4a55fa7b5a334f7b00582133b532db42474f0b382899dbdd4e893d4756a8e305b11098fa1f09dffbe3098a144cb719c2b5095eedf73f7028180ef73d1f7ba55a41bdf5180b63474add1c43af6550d1dffb61c95a3bc04b23cc9bec0c43712cb7741e2056132863a27b88a72533569c609d5424262c46da7e11f3641107df1cbd79b03e6ad29b4ff01b0ebfe42d886bf914ee8615e7008168a0e775f93330da6fb38aa68006cff54f721fd6228d314a2d4cd5985aeb1a7ed9c62ea4a896d4187e381277ab11a0219d0615bc59d45dd27c26a636949c429f47e67d3e4a803c110e527c2a6a794b48e2b5b4210d441d43c7f71b784cc3c21006f5f88d2f46e565b90221c41f688c60562d08d20264d96a09070c61b00c2bc76afcf03501c1750e36789d86802c4d6e847183bf4f80b9d73a1430c7dd8688451b9af25c9ccfead9c19cc65b52b8e7a3295a7b1f42271700e6ccc0366b272ec2b97f2479add1d359c6896b585622f63a5114ec0d3eab02553c56e0dfbc460dec89f2f5d9bb2c9f48530ce805d523b366379d8f7317a4d770d3cad4d6501f9ed28a4c1d49e2c8f6bcfd29875b129aea0187494428516ee1d3ecb412316c5358b2f17be65ce2942cbc6a97b591e1097ada9740c38beea60fe1259517c97965bba7e780d15599ffb6fd4b3f0439ac1661bc6dffa60e32b0ba0cb26214b3fa3de78aeaf180a11e81bdf1ddc0fa3e830c629e5ad3c165b834786fcd0368ac1fa9c4753778f85cfd10b55c06eeb9ca3b5732925061c461dd9dff2eead5e90f02d7bdb633522b700bab0c1a0b4f6e1b2d0c3b5a222134a53c991e6f37290419fadd0632dfd0da1c5ad3e9d7789d92d2df5ee9c62bdeb1b26d9cbdbc84c39e7fbf327673f9d9c41a9d0df5dd39460254e22a8f3d1d37900dd05cf424315bd9b6d831edf2a866229b2e6136310defdb25016cd30af022ba6659562e6ac91f96585c9d504d220576cd87de01a786ed337a55c8b2625b64e90fdd485f09352fd4872f1811740358aabf9e14f4b880ca964cf70210307c192d2f31b54701d620da53bbaa4315d59380b31b98fe2b71c65bbda386d415c432c06ceb64c98dcb7a30668a414abe6a004f43c18384dc6153c79453e1a043aef22f152ce14b499c3a6c855f2b0c7ba87e0ff0b3f386416798fd1791450d002b71d2e913fb3066e851c9b61c9dbef38afebdf28689e1784ef0c49957097a0a2d198d190e4459f26822950842303d4b2d05076b15ea96eee46818716a277036462ceb1b0d95b8566d08694fe25ef23fee2e4645383f2df1ab448a3f5cbd91e2ca3b84683687fa843cce3460ab095051c4a5d4715ab41ac5027a76b1f28c1a2d86b0b2443efa36853b35199106f5d7eb46aca747c6fc4109d23505222e7cf007a3469a21e292b6557f71128b6549b4ddf01a3f2c48cb7e7e8b53fdccff16448e108b7e448535c74e7cac72b68612e095a6d6e3da6b5b4284e1e86678a408c13d526569b3f08ea07cd9822cccdbc0dfef986136e52ae83fdcf1b9fdbfaca54ef55e8a21a09c8d58a10a84ed5544a8098e334a0d475c342987bfc2736cf76360dbeb0671cbb6e5e7d037b50827fd805e04e4b7a32796047bccbfb18380455bd68d42b9bb9a4e8d3ed925103118fde5f1552de217227ca059bfee68d3e59acc6d3d8cd6e5d9ac4068e846ff0390f6d8e286a99a39afa5577dd2577fa6e35198c1964d668a63e2fdc022d7e563a2dc3de44451bea88a61f92e4d3fbf60c9a2c5da9aa9c381290687391bed96a2d0195b55e89fc6432d9c5b54b321a8d87664fd50c9e31db85770e5ab5fb2da7bb49d5fea4ff03ae6b618d78c728eec79acf50efb3d84f8538b7de33f8b8ceedf1f86d8e458bd3877e1fcc95d667bf2374d926b2fa472ac2c580a90df90db028e7b6f3cdcf546f247d769136f050f5450fcd2aa942157e49096e4bebb2f16bb7e6e676216267b2ec2067d99d7490761ddc0b804829a92205d33e586e0c379b31e181406704fe8c4664d9dc679a6d39b389971d9eff12933627c42c1d9e436f45867e149d5bcec241c146a06709b303a2d28f629f82612c51b23f08f678400817158ed2e4a434dcdcc36fb4a89bb93a8fae5bb1be77165d2b66f8fd4427f27ceaf23fb1e834fdbd755d16187d534ff03277ffa7adbc22b28685e87b6f1d1f842d9a6ec650dded86ac54b8336422ee49f214b6e32f7438bed12a15921ace3e8bc7b9320b307205745e93f79d6468c9381b50415d81fc167183fbf2e435099320b082c9b9b6acee2382d129a66a1ee5ce54b2e1d204f17b2f35fcee0106722f575bc990e17e16d6faac9572feb22f9e3b8fecb2364730deba06a7c81bf38b287315f25af02310599134264a8f08b39641e7b5de724e038a790bc66754af196aeedc8dc3e9c330802833398c801793c94edb341ca804ecf330d52f7c3f2d46099483f6fe30a5e79c91a734bea2f5fa3983164eed9c06d88d6b14c4228ba840b16599f4a28d4d983d38e7c6cf08f984d00a661a593cd03f184edc99dc4e7525b3126584306662d10e5a8302feabb80e61241bf914ab59dd1598409ee1786a7e0902e3551e98f741561c6e364bd4fa16ad3a8bf76e62ad08a810de4dff8e674532fe0f82a740429a9cc5bbc57656dee75f8b5975aad040889d074918be81abc38c822c7ca30de7a0f1d6b6143753a136dc4f700d7edbbea31b979bf39037821042ccb5f257418394e3910f9c4965eced317309cf9aaed46ede02ff844331c9127ea28299e7a124a0407f776dcad885e6250d823deddde942b267e58510f66f3c23a7b0a022a11b487d0e33a5925e8feab87986e6c7cf3068c83a39654fa77f1e5d5771613f5bc358cd029ffcba7b373688cd141e437362a84deab5828b1b9c99572c605ef13a06ed43533175832a3a6b28113f420d1d6162b7afbdaa06e543409fc8381daa3ae97affffefdfdff7453ce67a6dfbef3a3300a79cbe66134b957cc27c03d3b48b8cb45aa9b34394568c446f204a58cc496771593a618ec931bcdbefb01e4ca95f7dff4bfb1700b15c49e78f75c3df2b247682de7eb769c88f1b41dffbfcd4ce888cc3f0bf91acf1151bfd87511dd37a8756ccc994f58989076db0b46e78e5042eaa41253c11d6bbddc268aa339a6d66282dbc1c4599adf3729ed49435850cb7d81205d416a03c255b6f614bd1f2b3da7f48a1c16e527ffb54dbb105069fa916317b34552ea64762b347d5050c2c0b1f2f6eea65ea2cf1d146a903f26602ffe36563577704ba85e4a3052d29054a13c88d4ca963a946a5d8eca94501dfc1548e24f1d4b312a0f421c868374dbbbdec302837152f19252ca88fd42c5d6ecf35e37f546d2793915b96798d1c4ee1325c31216966da3c928537d56ecfc2a55984aa8a34cfeb3bd1e4baecbfb6e86294d49b14aac3fe037ec82bd6b4da79350965f71926f6da110772376081df4f702bf25ddfbd8b5c63060f7bf98324505694fd06e64109b47209ff77c3c18412752a46feaad7242e7ddc2cdf67d2c692521ce64be9cb77667eeebf82ad814f6a906ebd08704120c37b8d37fd97c54aa0f6d7063dd23aea3701175ebdd510b7138bb173fe04c32be86122aebe13c217b673662f429c525e3e63153bccda161ed9b44e80babf2619d198edb7cb9294b5649d7e7898eb2f16abe8c2e315dc4974a2127c6778f0803c12ba372bbb8f1c0f3c9a27817a5fdce2a4a741d8ba23c044c38200930fcc59b94701d35a92808ac77165ba921cf203d42f5ced236d58ea0634f9e09637603b702d59cbab86a2585cdf4bbe6f09677e62827941ce416c3e5592c4103546fbf54eb1a13d34d49c338a157eeff702dc0984b6054b29ebfe8b864fa62c798e29deac7354abd0438a15ba8f5168187ffa1cd1fd3b053c2ed8e677f068b3f6b5a62f49eaa5dad3938426f2d58c6ddea2c22c3ef7bdc36e49b4ab415abfabfb87a7814a9973ca38a6b6e360fa1876bc4212f24e1ff23c70be836f3533c232ad9de6dc4497229914d1baf19a65c562ca7b31741f86963b3d4886f36aede2bdf17e974953dfc3cd23421d59b41102469a5e910d819338c4c54a6958a70116e82781ee200206be2f09b2a73de2fda551c8f06b06d4de02434dc6d4e436a5ff98b61ccb2c8aa3f5abd36455f368164422ca3837535c2e8c65af4c0c257061810ab160102e850d437b41c8136d0f99fb7753d693f8a58839e4e265120cf622baaf82c539413173de1b46a39d564e33875a64bdad1f6b171efd97353183d3944f0f9628f4ecacbac1308f5c1e1fdb07bb1e792b653ce09dd8df192b7604eaa02c2728627baf500365eb6c3cd40caa66b935810efd25458df63f3487830653ecb31085228871a6968a52e53df9e02f821b858fe86bf778261ef347f2bc545adf506b36c8f06197afda03cd378eadd0c28b1a248436c16988dc1e1ea71e1d23e473a02f515ad7d7781594fde8fd695e263823679b993da6232002a624749dad68c7c2d42e7986146a8b10f63fd5a7bb759231468c6cea0c71be4c0387e46f1fdd8aef7c44603dbacc7dc46ba3f311b75fa02c637741f71bc913dab3de125617962686132dbd1fddec2e11423ea5a728af280bb68fe6a07d5e5eb5d3491b7234440742b6230086c7b8d1b771f8a983228716f730df2f6eba735632ce333d1effa4750298b045376594eba1e6ba0f31611ac9b76695ff11b8e4e31071174cd550d24af63c7207eccca1443978688354870f83e2285b1e9417fed708a0c2308ec454ff80a0ad0febd32050cbd10cf6ed1672d89428007537e0c6c535c9605628b7b03c639f182670a15dcc183688471244929227dadda07c0bb49a0db48f7c19b7d5166871dd2f341fea8e20c518e54aea9bea08bc053c2ac45e7301ed7988e708d885c6af9db02b6e7ac420e92d8f47bc502114699f0a2197837713fbd2e36b5f6cbde6a1aee94f9f8598a88ce896feee1f2767d7503ae13bf1fe4fe3bafaae998355725a685d1f1c88cb3cd0b0fa87fa2aa41a693234c7896c09faeb93fdfee732ce61c65f58276803990d7a2e5c69681f1dd5290dec91d66e4cb71e28a4fa389a6dc5d6d6b958280f142ee9588b56cdfb9267e08d9d58b8a6127cb216a778fa6e542f08ea39cf46dd8c19e84cba3005948eda54a1404448c52837b4f5657a2e3de501aec4e4edfc4d95a01b83a841c591e75b5203e4e9ac7a546b0a9f4f5fdf2e4f772671c056a55322c5001cd8f69156ff9bffcc68f1d07ace98176dedad3895d59c4d1583f414cabaacd6451bf9469da248b12fa0890d2fb7ac2e672935179424bbe01511e97a8361cfbca875483426597e9277adc6f74351a1c141c319d48efda783ffbe8b341f71d1f32c14f978b2b66e52555940ff8f17f7f34f1cae16144c3c6adf08716be201e1c1a39f903d0139bbab4579c3ea26d73e25c09f66b2479f9579b6a09251e86e29624175c3202e1b2a16c69c381a64c534e6d2352d66d0e22ace5ca216dbc1f006d232dc8351b5b1b6a6581bfdb1a2f903e008100466c331bd5d731a474e54b657b0f13505084ebbce42e32a7256ca7314f77f325b7cb9670092fc70e1a690fcfb4a1374b877cf66c1e7ce377f7d48c503b7f236a59900ee4062fa7fb84c725538888d9d347ec6e796a0b8f8f209991992ba50c7cfc2fb9ef44f0d7aea6db42d79773a2491b599e233d953d34b0077bce54d77f8d8cbc3a3bf751468d4a258298be6fcacf6bebde1fd6cb8f0e8e855745e6ea40d09e318127e0398da2b614a2a6674d3fcc58b81114bbb556a8a22295684881fc000e370b44f30b351cdcf95363340b496c9bc1ef2102ed9df48f7be934abe6e4daa6ea04dac7832ccc17799b08f37e891e7b5df0566c8d91c4f9e991bbe4c33d9ee482ae64db5977a982a7f221e5b60214d2f8633650db58525e4591a29fbd7f92bddc680fa45e724cd230aa0b56cd04c621658e3b54ed55b97eb636a3d95a067f7f46744073f59774c928c77d8128816fb7240052f9e23979575f670cb2cc6b32bc19e60b28196384386a72fcc960468ee0662a5bf57104f7a8d9da3f8871cffc45f699bcb154ca008ea5e7653f4715672fa62daa5dd454fa0fceb8306a2d45333cb0eb526259cf14f780b46775c65480cf1a2f89a1616930ae25ccead2f194af2743d7ff101dcb0d106c0206aa976724ea7215b4545ccaa76298ce0ab90e434d275cb4aa0caa71dd2409981a3c064ce31a8369dbc9bee35492992542ed2693702c4d236dde0a049b014e39ce713b3b10f4e03b237d10c18f80e5c7d8c8e1d87b477be916dcfbc90153be0f218fcc724293995ca54e8eb5953731e9242cb4f258049a6baa8a4cb8ec9661ce683c8530d34576e6ee8c2ffa0501bf7715cd5a3cf4d6452cded01a1ce09c5657ca3ca82d643d811b7ecf5132646ed96dadd5df9fc097cf359df9513e829626c3c27420945754bcd449a1155799f1767780d245ad32104b9e858617361bb839cca1405c7d54e23b5339fbb5c07105887239f131ca4297326569d20f8c1c690fcb0a1bcd87c5a01715a98e64e41ce6b1de168f2f9cedbd31c2d083a4e394041ca2749345f5599fe36cebdf74e4aed97767671767c9b60be99c74cfb69abc296e32ac94af118448a3fec430e03f9f0815521232e20c20cbbc4dc58a67336c9c7d3450fbd456fe7568f1eb3a6cc54ce688be1242b76435e600f8640edf66a3b5c59a557c34df409510998dbafe6d73299859f433b6d102d313c6a8e83ef302640df681db1c3f0adcd197ccc8e7e8bb54c453589c70b918903a101c60279251bc7eadf17188c8e08c8afb3b062d742acf7b2f7626b77c0db14fffffc57a08fa19f03e95047393884b04a764951f12ad8c043f9652e63df97a978cc29848eb89cf0026afeaa3618d819d6b42e5c64c9346e37897849c23fa104bd88e760a893267eb7a5884269abfd20a94c74bea7e1244c19f6962b39db0b0acb0bcdf9c614b732fd4fb00eb25b1a122455770c309c1b2129993829653c1feb6cb5ac99dbacdee7478d87549ec3aa4e4054b86a3f51c8fff33ae6a516c5663b9a5adff1a29d72d4b788244610bf5872ff47057153b041d5190e7ddeed19c76732fa958ba5c2b5ea5d962d18eadc0a6d6a7851e46593cf065cb817b03eb457d81767bb6c513af973699318a718a41cb098ac031bfeded846e9751ad7d0604f52b3b00dac4e2ee7c0fe8823c3cb75c0541734a7dbab8226874e740e6145f1431ecf64b058f65956b1fb636bc4967be8e1eb6becd9bd84df0ede8cd30f22cb206382f236efe82f63c7b4c05da2fa356bff859aeea580ec185e019880d6cb59e8966108280afa788968b74fca9cac9d611fe2b1e81da8b357bd36898a1efa99fd8bf3417f1753f64ca846bf919fae33638257a07de9f24477615f236357170fcf9092cc59f7140ca47caab31d80b7132405bbfd6782fb8f767161c3002fe2003c824d0224aed4d9a9b1f68ab890b57c7c7a144ea4d1e552815d88a6752491d85ed86b3f90d71d4dc00c96ec350730fba410fbf1909b8e2222fb7a051ee4e2858f2adfec8bbb2833981fd0ca8a3f6fd114ae33e2b00921613fc0e0977db64cdd457d3e143f94db67fa54c75dd72611c970a21585efd921a898f7917f86a56b757c57858cf336eaa20b6d91dbc9fc5cb5caf6149e0d9398ff992ae9c05986251c1449d5c0763d4e9b38b8e85eec270a833ebd00958e82c853c9e423063b637adf88eadcf3b9be2e272efa7d1f44264b3338c85935e2f5ca00d20c9d4ec7046326668814fec6f977fbb8b3dbfa2ba49013720a873ff7340d68cd61a4a0e18060c760df8e55226a37a906ca7769eaf1d645ea919a63a140120bdd7c2574a4004a61aaf0502d6b7004e1610e3e8e5980a328b628c0685b18a080a2ad4d7b6b0d9c548ff437198a4bcd919075a8147352e61e693402d48abe035bdeca9507ca15efc78cd5721ea95d34c8725ac20e63143ad5977d761606933ec8710547a594ab83828b3bd48d2d0526df1425f87bb206961132dee6a9e768510fc9fb2221fc1194158d0cf368c7824180d8b969111bf84ad09c07265466be95f14988181332852b60f98167306a131b4365e33e7088cf223703ae57a91a7a267ac50d7330f2d8210d4ac36046331c45feac1010e13af851944caf6412bdeb2490375d7c4c1d692b435cd0daf799652d24b61d21d7a2e0d27c5f538d1b56e9e803d8c9cdf6aa447db43d0d0be53451f489f1da4b0d975d9f8f5dfce0f449071a4e4119a04c1fb058414b23c6faf0d5650d02e3f0b9f2cfced1b9d529ce04b50aa621ef9e28ee7ab1640b02c62803c9101edd3e3e4905c3cc6429760b606471b37879fb1442f2610a9657627a26d8ef0eba793eea644e8f8c2ba027bf3275ef364092162d216880516a45ab59350f22b1bd50c9477a651732c9662372c270fa6caff2428d2489efb3421aa91dfb91b4c9ef05616e575d03c222d1de8fadeb34cab660cfb6adfb8968a860509d069e5f25598f21591c6b8bffa9a2034599a8ca8f39d8f4be48a35d9bb80cd16d4d7835d3d0d4ae0cd80311f3b3c974e669b9a0512e8c6e9cf081eb8e6419f13dbae878afdb6c1ddb9de3ae75d36acc023964aaec4f0c2730ab11635c4fde006044db02d5d9e588107f1044734f05ff70233ef39b240b5ce04ed9c57216d5eedab468e5b0bf2d85b4a1c96cfaa946c07728f0b40fecaa86cd7ba959fcd4ff5863edff516568498345496c1f01f923a5932bb6d3a1461ca60362a2ccb96e3517d4d94412a994bc949e7eb6dae471ce52e283b19a0913d41847be2ff094b6fbbf5599364f694e1591ac57c2b48cdab4e367e8701838f7a972da29da3f703bdf0df6c3ecd216803665bebfa1acd807845996c8d943a8b98b23c3ea76bf72d98149412ad17519a1537fba2ef23d6e304b83daf2d15e5d4fc5b7d2e638ccbd852aa918e299053819cd453df357be05590f927bbbcc5c9b96e59a208c68881df41a27124b2856d4dc124ef4d7c7902f6a616310f82e2e5979a155b03d9f00d5f3e765d237a6caa34d59c7e61c9c1f48c8e3983903c6c2ea78fd845713a7031c424569df968d06088c781e894f1b7a977d91e8ebf9ac2508c4290c0b59b2c817257640ff6961752fbb0b88c1d2247ed97db9965b6c20efcb70c29dafa4274aca73a029a85d4141002482723465bf8c6c52829bc4dcb7dfd2c2876e6d588bc59c7b82cebaa226a92026da4d5b5ef5898191e9beb79434bb98636aa76765af034adbce816273abb25fba37877f907b131ac5bc2bdedaa9bca00bb5fb8f1bb0e09fcb8bfe64903b01e648f6efcbe1c0a5717433ae754f526d4cf9f317dba4019ffa1224ceca81fc7fa527b73915581856f167b3b66040bb3cb52ade36c5c92525cf3f3d5a80c5ef8d850d6c7f82ed7025924718037d34b5e4a83161b241ff0cc59ce26ff5bbb492774e9b1bf0b5196169ad8d13913ea05baab92eea6414caa48ef333f804be9986509b3421384e08b506c13111324bdfcb405d1ae58a471a762aba2c1f4957ebc05d47265bf6e3054d258bde646ea0eeb5543d2b16c5b1fe012f349b7b7e292567d090d1676ea0be63561fccdc3bccffc45ec44b7820b4fe37a42dd2cd080f7be177f22f89e134208c4ee4583609ae9522b63156426cad851044968b3edc6e87d786399d1e73fd6d5fa01a28d203d8c81d3a447c2e7b11760cffa05df74c687d3edb5d10b65eb983e645cc9b188a159102ed268bb03b1265971f1c5cc9ba30d329365f13542f95786bc9e857b0374e7fe160f99a09c54ec1b03b65c959624c2c043428780022a47c46895dfba5516663af17ff5a5829282967fce74dbd3499fd95c29bf4351e9bb643d2d3500232fe22a117099628cd3655172a897454901348b5018857862d5d9a694ca452582f58125f7ea84537fc03ce5f5baaefacf46c819080f403ce3a1571eb5fca0c4a1aa53f9595276598893f880027a0e289143fd7916ec40537a38163288c7a8bc7cf3be6601bb2b3844f083630cf5d581823e24d6baac9ca1d838de9fa0fd85b09e046fa0701a901758843464f23a2fb9f26f4f0eb3baecb2593a3af590640288f8d197d1608f0f029af2b96d3cdda509260ab034de315b3334710e16929d39eec4b4cc940b4fad6bc9ca52fba92c5aaf02092d0faf4774763a9940bb790c77d27c393b7b45017da5d78fa6a01009516ccd9a3e9a6e3e71f22a487def003764e7db07018b6895d068c00ec2818a5e8104f63302824e8e14c19009ea925a56e023f51680bb0edac250f28759d8f4a989c2f39f2bab4b2eba2134e65dd719157743579f08799c61c65e476da273be1e29f131a1eface026f2f41a398cc668b37144417dec249b7d87758db6cc330648b1640cf2444e88d8d63f19f467bb8e0bebebe6f41392e35abfde9e0e628e093fa6efdbb8e01010a053aef1b5e7e5c630243ec50a788c98888dc50a5b970ee3d0aceb12c123a6bac2bb0f06543dc866a2940907e27a4ef1738cb94d60ebd0982db7b6690bc67632cc64d397b985bb544dd65bf9d2f208d4a21c309a8443067bfa19311b876e194cc87290983ef06bced59a06902be15f40b7510031f31575d2e1d44031068de09802a8810ad85e567fe34c22facb39ec898583e849a216f8def9e24de1bebc4dc935d504f1c38a51e769dd8a4611d5bc62c7c4058cfd4afb259dd8c6f8ebad95df547a1bd192cb031127825d18c0a1ceb535685d16375e00118e6d9b595e1525325843ecc1b0b86798d2d77e6be1709851134c5818818e1edc7fd3c18611691a3eb84f410dd0ff4e01b7ef1569c341836272db41fab1917dd45ee2b1401541c749809e0960d7f4db5daf4d0d4c90c86abdbe93c915155edbe6f134e9315e0c33d7228cd58a35920545c3c093552d061ffa566485fe69da0a7eaf496aab4f6998e6790a5cd2bcda1819db4d9dd1532ce65d3e6d6b5a54166fb1df9c387110dae6089d1ef7cf67d0349e4619612b16b5f8953179594abed285c3657ade96fcbc3d42773b25e2a97dcde00f59d91143890242a80e8e62efcf58f0caf6e76bc66976bc4643092d2de1296c54df46ac584da34e8d1a2f335a8d0b8c6418667818149b497055e72a20e6e5d01eb9aadef970f11fb806c36062e55271afba6f89ca9c6bb65011aacc74f5717b7ab34c9e1769f58b7085b84c9d35f8bf3a1f9bcdfbcad7ecf5a1612ab3168fdabb55385640912aa5877adc4d4f925bebbb708801a47e88e6e9b9bec34109d8d53605bd5bc78c0255cf31e47827daeb1826b657ac6d4e566f79a1965045393794dd93ed72b6a461c6fa81e8f87b5dafceded42c6cebaad2b7209d63217af56b9281702063bb8b20a03192e5f78832bff1694ab2527a11bdb7073dc50fa9d58a09b10c719b83258b0fe0b73a17743ecb142737945163118f60b899fcfe99d379a56ad13fe7376be4a28d492b7816719216fa2c05b70de6f19f781d70eca532748b2129ae320a4bdef3c4526254cfaf6c10f9f539ba54314332f23c2a904af48cb0cbba245f076d222256cc6826e171c1947930ea1752f11745126d588d61422480f4eecc279f1bcd1d7e5b30621b1f903d172fd4be2f25b4e94ab7cd32dde974d20d3d1616942af0c1bca18dbdd2d7e98a8d04388cd2b49457a0887ecb2cbb0633798c3586459b0fbf63d6b7086a6b73117f045d187017e6fe2bbb067faa673c77032a9fbb85e9a35528bacb96ede8e7f8834b0a9361e50c6bff6423c2b43dc8a4cc6f91056e6098e041f44836836392ca19120eb0c5f91ef590aa365755f73128d64289f3e292cf2fdf8f92b9b03ad78f4ea7b9a3c30866461caec7de97a9555bb1f6ca99ba179db2fc9f720fbb74ab4041f1602f8197e2aaa0b8fff7f1c4e25b08fddbe5b6f54b72e50694eb9f7f1882d13adcbd1d13c63367e42df15e01db31fb030803c6bf94dce8fd07ff6bfbbab418e70b90445cf7a93ae44208110319468bcbe0ce3a3e295e0f41c1c0ef064553865c4ef9277d9050bbfd543bda7ec7288f07b55defa530cdd7b119c614e6fda0b91a0aacf767617778f01ea9aea7e5a7e8181f8f83cac1a347db4bab55bf3ca872772716248c6bddb94e7f81e2b8c735f74579b2296d680ad800f88b1a9cef8834f094cd00c965e322c0f7850583939f805f633bb3c5a6b20949a30bfccd1a177357c10c98c43a8e99c12d1a7efbc6138a6c3e86cfa77081a92334ee2e5950c96565233fc1f589591bb96be445f1b078db0cb3acae32ae09104379409a0a3bf7d95db39dccc024da699f20fe6933f31227bf2c6a7acdbdd6e55ea0105a6e1a689e8d6fdb55de9130b9145db430a8087c0f1d5a10574fee86367ebfb6b0f13e31625bd8e10fe48c4bca7059d8060ebae8856cad8bde9505b6dcb54dada8198ce42089739d9b2f83fa1a42ed9f9661a8bf3a9bdf774779bab7901fa6f9e8ddfe0e760c48dabba319d015bb1916aa2ec77f1ad66a44aa013b22244d8a247ee522077295663078a0a3d46bbf7d1bbb63dff610740d6916fda828b4a29ec29999990bca745d00015fae08029fe1f6529a09c88cd84baa699a96c5dcd1e98c8ac099b17d13c27f666277b71c0fad759b2837427d47eb6d1b798db5362759096f996ca34b97afd574fe7199b29d719cc3baac86c461791f6eb28a41aa7a3cc3643fefae8fa04047470ec3c611ae5fe719a580ff5726c4a4b8bc7ed9605ac713367114246447177464d4c7794009cc1afe991d2689e15ee2b9adcc7e5f77937ac8b86083209fd8a275a68da1c32fb3a30cf1c59930691f50284dcffe13721a86cd536d7c8f10ae1deb765544b5e5318825370986b561a39def9c52fd5ee43e4c782d693c76ccc49e1f8719b254e50ae8305153592b0dc766cef816cfe4edc37239af960c4771cdcccc8c01877a3f230dc3155dcbff522ff845b34f24af96d0c7c32cc84019c07dc7e25dec7d9ab4060c02e4b833f343c3230e2227836913726adb35ea7540e60ec414c6ee123d3c61f46e684730555b2e257f603a92c2551a83b12679201d72bcb9ac81ccf51a0487917472c19bbf235e96a3aa1933bc5a1a8ccee5076b0083491e7879824c446bedbadd7732d4c9b20774e417c76cf4572b2acddcb9643d257ab2df43bdc5fde0ae3495257a516ea4203281a83f263140e99467dfca7fc114975e7c9f627b3d1a08205127cc8b1cdc64e0450decb0b816558f99e20660ce51ef1ebb1305a5f1c3ddfb0b223132b156d15e314d2e23413053f0d81b50f9ae0c52006224731a7bb333356db703b1cec52da2fd70dc8280cf2abba65e1cfe816e952c088d28a6059ab447834a720850827c08bca8bdbfa78207c8fa54f59d73ae1207d3c9d927a86a2f6e712802f3cfa08bbdf7f30e7e524679fc4b7df89300b425590acbec8676f615e3f2a90b5c7e98692f1031ffb0b5b9f61337af57851c40b08e5511fb74efbcfdb0d5dc3826bef9e892bd9c3605179f55f80546d8af55389802b498550070922013cf46094245272078f1364a1bd77a53aa99f654e84f38455b82e87df69689dd654b5d5114b9e1ed6e8536499298620eba78c438e930ff26f71e57a916c27f36a71b60b82c01bb6cbb69b132e24df58c4f048007f1d7a72b69ff0f44140fc85287225f394cca33821a46e37c06380435c315b6d5b0fadb490549b36c698ab3f9086355a5bbf35a5596be088ef81fac55c686ffce8a815bfa7c3e7675f975201bb2126e1ff2e043d06ace9944fa547d9c1b662dad20bd42ba8b14846483d1cd494c91ba9f8be98d24faeac971b039d89ddfdae445324f738bb3fffe74e48eeb3a3568da6f8f618442d1e098570d6ad35261f8dbfccbe06472098d69952a1c43483fb358b106f41361bc9c6b300bc4d7968a040f4bc5ff6bf7119870e8762d5ff02195ccd6e249ef7eeb5218a936dd9daad8f2f33f8fbd36a9ad6f0644b0f04c567a991c283437c2d726b68d6209af5fb1e415e8fb52e9d79815fc7fb40515ecbe5b269f41b0e83f6f1331c16f1484e0337c49d23460ff3ad9e7f7ecf740504614705f349288cb2d8e87535cdafa6f649e49173ab3eb274406448e34ffe84b1265a81ce0dd90294a3eefe5b51e3cdccfc00c98e2d71ddf30bbf7ef9772342459647dd6dcbcb5b312cfc054ffadcef3ee4e63134e107120071abbb11c2ccce230e6bfa99a18c374fc530166336c8af7536121a06d65602f02487d0509bb5d9fa166f9d49fb27ae6a323d96a3f3263c552f4394726ef6557f5eec0200ce2fd2f16825c51ca9dfa22d958385f144c731c5f67376b435c493d8eb80862e5165b932c7c456904c1736c31528ba9c9fcd5677aff4376e46dbe9b39d953075d04c07e55ba4a6e185a3085f4357f6cbff5511a6d63c210727853852e86aa872909e6b97546ddf0f178ea91d167d69cbae1d3e43e217662ade6af85cd76bae1ecb89732a74e791b457d7280c4144d4d49dbb851c0273c207ab6223c12698371cd5823f24aa5661347a2a52cfaaa8de259f5e88eff4a53689af980494f9e131f4e649d5ed8400981dc71b4bd4e5d3521d4b4c17031c234afb15454abcd5b54f8f109f37139bbc1a1654cb9f536a4e8472f8fd0f7eeacfc3e8a8159de3168e687e7abccd00ed25d8519e59e6d82ba77a774735de3a687620bc7ce4e62ba940e7b706040ebe9e81859b4c456f7691e136bda42c51acab741dce19c1279842fb268fa73549166832ce216c55fa0ca139082264fa4f78806b21094e1113b058e63cbe5e351a510cdf08957979c0e4321bde055e3d0baee1eb07c8ea7065bce8b7e80c8e1e6d52d158d9daf3e7a312692c67f98bc25b6c7105623b38a06338703555e9156198ad64c38a3a1916681dbf6aadd8e891cf505d0a3cfd93ee1f4bb566bb3525a0969448909e7afbc9647529fbfe2d96f386e47b6d7cd8607cf17c6e9c4c0a1be8327e08558a1fcc01da8a22645647a874007b8fe5647e1406f5d9aa74081698364856320ae5837ee5268d4e40bb5315d4af6c8492603a5d51608ba7c0550c761c9a457da44614d7088ab087a28f6107394491e1af28cc1c86e1cded9fe3f08411425535a199c6dc01120f14ab819a9bc30a0a25aa704d7af62c83433693626c3bdab9eeb8ad7112f9a5694fbb5c9d9217f5de8d59b18c7345f4932846e1a34b9f7c451fa8b73ea60cb3ddcf8dda411ff77e1debb46ec1e94e0eb07c9d2ab00aa1f468d9a622bbbca43fc50f2a283eea7c68f691f89ed342151fecc82b0d2d750019c3300f9267239dda2af5a32b790ddb3af957b86da73c037d14634457ab21ae9ae6206beb5044d4371c1e88874a05ae06e032b0d7a726cb61e06eacd4855ab8646feac1555e7f9d9a6f51797ddf84acf9095ed8ec825b1587341b073c6d6599f17cd9359e44805f419c5a6755a28cf4095a267a99bb13132726d1748c5c5af90e505806928938d590fd418aa347a7c5c5fb1a13efe19234d0e15b5511cb1eba261addfcb0015811e0c1c357ba609daaba742871dc75dcf6813dda1a80722812bb2d03d5ef02423c99b248755d072e6e4c247683a2c51130898effba2bf32967fcb7bcd95db7c8bc84477de3f4612918487ae7a7754e5e1cf3245621119cb85b60446e54f1e0a263b2508cd5f27683f395cd953fd2968be350d637c8b40355e3c92727e325bef3305f2412a8ef11f491db9f17123efad457e2d2e72cce22c6234d0edb79ca6ff453752c191fb82727bc1a5c2b4e85704a20b9265711f54c388ab86e35127ef8cc4c4d090e2e4fb139607fe2fdffb294518fcf72d2adc8873fc9a914534b5c5fd6b8adee3bf5772a3cfcc876e1a54a55c7c1867db52f3f0889aba965dea13e740cba49ee40f07aa9e4e6423d87359371eb712ddcd238b888c7723b36f1f2c29dfc71677257e2f4230b0e1a096589d3a504714b2c7d9abafc359c24a8727c2ad1e16c09facfa8b0bcb863304671e23c56dbe9c909d36fc9aec3a9a63c278c67c64c5a3295d375a7869d40d42667e38c7bb42b01a81ff8d6f4cc9d636d32b36e8c3b27e38b62c6f587493a4bf2f12defcf40c5696707dba5bd3e8aee1fa7f8b5b7512ae687e945b53c82f361f95dcbf73fee9663b87fd0e3f932f17607356be78c0eb659bf66fa0d20d096623dec0bda7ccbcabfc025049b30568443b1ab7d4a4bf9b37a39c7ef34d9bf666b3ce050478dffa4be6d54c6488a611fe95304a0366454fe88a5bca932b66bef549a8d9b376812c8c6b8249b40538ddc08030df5d35168d9770441daea61a9e2359fbca1b554570dc3dd3a413829e33b1bf0ae717a69bab352f9087d16d4fc6f06c644d806e12f93687b83f1f25a1ad5d6c9bf9540430554a50b7db73ebeddcb616403a74b36f8bcea135ff82e3059b511dc74f89cd230b0b00e32f866a547863ebf74ec177a2000da7d34d56086f7e777d7d466aa4a8a0c1fdd66019896ba6821ecaa7e0e4a4c5e16f7e9688dd188d4b7dd1e26ea2dfbc82c2b98b12abe4671984d44c0313ee5d60e00acb5d451633de877247e028635b3458cd95ef5e1b2f5003bba3aa0a84ddae98e6e2fa56f38ea66515417a93c64de49a40a59be69f68edc378f9d030d66e44659a530250b5f224b7c6bd9b6eb0b46edebda4535645ee9fa0cafea1df6ccf7708da9b406d07645531b44e07136688743241c49afba99219a82846c32d91d15d37d5bc687c0420f205b5a933c9d916a2be0df63efe9498f9b673c92c26aed9f7e35ebbe03875148621bd292cd68e7d45f14e726d6d30388774536391f25261b22e49219ec58b624f29724c0114f130357a0f33d72a1b203c3cc05557ba6b763399057b12d61ce2f1624c33c9f70f77064cb578e5658af01ebe5bc220387d3b795432da2758179df9ef0826302707ed931d1f45fe9836bced5f0a33e4476d6648c43e544db183532d07b60e99ffc003d425d5e0d83a9c8e18a9b61495efa8beea91ba8193e0a3f6b0154dfacdb0297cff0b7c54e2952ce28b4347345ca446a33de833fed817e62df8f1a19a40cd5bef0746def1b17767294b5b974960ce198610b3c2ee069e3bd2888a69c7da71c9495e5f6dca8daa7a46db66b06a1ecd8a6cd3fb7f745d0c0e748dba3df95e67e74809e21135ff6af0147da29b9352fe6c6f95bd313ad0387dd6372ecfcf58df69000cdc7d4f774b2add37c8e0247089fa3d53ca64ed725fc86ef380e98b9daeb45a1c3bfb760338e2e4b3ce2e62aaf19397959b07bef55cc5e767ff88935c27bb90a978dccd118cafdde4b8baf58cb0dfd35f285ae2310c119f4bb704f2bff42db332504bbb456c9a7084c09769245b6c5b6e1ab013c618342a06bf3ad41c9a7f25ed792e6c5cd61bb95c65abadb613062cc5fc130ec3d84fcd22dfbf0db477fa1fbba3444e211985cb622be7960b4a86588e3d531368ff060493074f930277dd2c7222609672a6ad28a111215d450c0384481d5c68ef3a3efcc03a1800a2c036ac7115e4b95571f24af20b3b1d496ae96b45e51fd66a0f011972d81911b91dfe5389f640f31b4a061e8b094956b7adbc5978ff5c2ab0804f7279726229fce6c2a72fd033c396eace8455520c6d7468eab094c9cdb5555dd9503a95f4cf3da31b850894f86d5ca48ed01a456a29c19b61667c3d3acdbe3cb4b3fa2d092b8fb7e79cbb4b75771ce3e64c7ec07b38e3796185fec8d34a3882e9cd0579988df0ca5df01a1ea12c04f5d3b4c7c071a85d8442abe5ee130a25f751849ea164e691bfd35999620f1c33cb9eb87dfcd26eb908d388568b0f6d3ace94f4c17d3c4ea3632701113d949a3fa4e57dd08985e2dd3d3e627ed5d1d9cc2148ebb90fd07cb53bb1ead97b6d3dcbd2481dd4d6ae41f9835b939178db372c3f216c7fb73b51aa08b56630b2375f2712fd228b7eb32af988b10a1a5e53741051db2ded3d624d35eb559debc83ca1091b810fc1c4872293536fc69503d001163bfb18c2234918ec462e0a847f5665506af8d7b4c21010dd761b5f6575e1544ab8dfcd73deedfbe6c6cdfe6997b452d76b3964938e8dc175f0bf7d0a49ad65c80e9d1fd1ec7564f1258a1caca353d45b7b7111c2e7de653d73e75eb630ff3265eafb9374ed2e664a9c41dbedb6d69a716d5d30f9310b109e20d75428022a3b6c3093e406218f36f514e808ae69c316879279862ec98b3a64f20d45dc4af6066cde5c8151024aaf998cfa41ddf2d400fa6538ca4ff8c7402757392a89cba49c1246560d21de97cff43b3e7ac44c38d43b5b4329cd1ca1e041c37c90ef74bc0a1a38b4dff7940238d96f837c3ba0084f067b05c5f3c01ac15a38201af8bff4e244f0f38090f064b0bf307e612f7050f69fc2433118b7f8e97c0578fc217b0eb76ad4992f30374da1e71b291a793f298f307753f7907fa445c0411e824167d6a49458bf60c9e69e9a071091e903ab50a525df92128183ca2482c364878e3ddec6299aa938eec122cc8d8f5ae74332af08a713257472eee6bc2d963cfe02f9b1bd2b8482139398af8d70facb7ffc27da4b1bdc9581c03069a49430ae6d097d702f838ef6ffa076b9d88e01aaf156858f45bcc5f692d2742c58d7ed636d7bf3b7455c6ae93e582260cca0f5bdd0489987903be93a742691c2b9dd8ab62bf07bc72d932dacc882148929b8d36f844acebd0d771013e62a41768a5faa21ea5a06919630cf1fc676542cd6503178c95d007f5e3d2e501feaaef8f47ca1047ff9723737f606f718e9e1be5df169502f641d216b225ade4584976503e70e1ad492511e48fbe1dad18f96906d5bb0b198c50945de63c2bef67994a82698fe1e6505da4106599e8db594a906584ce525bc6603e9a7dd4503c3c65355b31c9cb8c625f80634e79f47c2d73ed792cd5567a8effc5e780ea8b2b0cbc8b3606bb5c51bed841495089072a401accd3815c30e3a62ab6f492c91a8b609a018cb4d90ef9ef706107387fa963f665d2a86f655d9a7004090d548ccf842ac7fa1f458d47b1c5394491b82f9c829b7846460e25fa2f68308161c867519b3e3de13be758b17789daf7b5f67c2202c86fbeeca770b0783a26fc0df5a0a1cdf0f7eec71f97a9127733ac5120326d4c99703a570a45e8c7de617c727e78d898ebac9a43b4e5740b32dd7ec8f9a5556b005cfae1f55300a67d40ad7bf58330afe61b2d2aa2b941f39f253ce33197f7b4a31fa004ab6f30f9b61360fb55f40dd5e13c30e335fd383ea0ff98bdf4c12fe2f86611586047bf2c2bab219ddb2194a53d5807baf2434a68daed4be7732c1ebb00cfd1e0eed13345d5a8af44ea4ab9f75e25c60d90e052cfbcc5d6a65528d704eccabc53f7e9f02406ffed9e3c5a00bd3b3c389d17f9a3ea28f08e9162d742e40fe186a1da88799119381fdbb9d188f6bdb12079bb14bbd03dfa5607cb78cd0f20f250dcd4cb46fcdd0e27fb96ad09ab3ae7f6ea14ed8913556a88e8ae7a7d080757c3919e1e13b44fb621204f9ef6813c138062d9ab8355f81a8e5bb50c6763f4c46b9ef9cfb039853ae3d8886ecfe682e4c11f0281a05416cc2068cd0f4f135cd1475e23b5b9ec27ff42674b733de83b51c067e298b12ac80a69afe4a620a9c8f8194a84d10460dd198faba9a90cea8a26fa3cf3c96cc05b5776f1577c054639b1fdc9a16912599da34d993be7cd9108a5db0c0ded0ecc70ad1895bbb41ffad4bad4f37007705d957e740f854cf8167d2afb2905e1ed6fe5c8c885d1ac6484f01b052a199289f156329722a687c7f4e0f750e646729becc7e24542d2f097356a5e3dc1e28936de9fba33c2a1f56cbda2bd6d0c31856bce7a9cc93de39e3887ffb27db98c75538c4ddbff541120293136576df1aafae1e193d97cb0c3cefa1bec4d5801e1b00006aa6e9177aaf94c17614e86439bc8c33bfca455851252865b8b1a520618d4664734cc42e23af8425744a001ad3ef000d4b779cb6d10f4f6c4825931f37214e17cae5c3415098e8e0f138137b02703ba1c2a752a5af8c2cd2fec664b71cd271732ebeeae3585530bdc56d630fc2c176113f00fbb99500ffa59be5c489ac8423d3b4bda26c56d8cc2f3edd4da8724127cf6eb27cf23110a83696a913782a87cadc431feda2a9cf77599dbcfce4562b71cd121cf8a5b21c6b289a175dcffda1c18e16776251746a0d0e942cab56173427eb7fb530f94fd04e1005e31c9b2db8d6793e09bdce1f2d2affceb3c35841b1d3472050d6a3c0ba73e06b10badceaf7ed421e70e783d4d5fe776789630fc3518e44f2a44765c3fdf1c81268e478069baa36ed92c9dd03510cb570af0c067366a0870733a8009809105173b83de776373f7437ec4de6debdb9c66ddd909788ba3978056e63f98669e454bfe8f813d49fc7f65d2059f5dd82f619d63a7f9f1efcb74da43c779254a0b44358db586ee053ce8e10e4ad873c725a3699e99ef4b5b442fc34c71fc4d014a373532039d2fb80dfafda32f74e78fe75fd966040d3b2d1bdfe1496bef44c0e7e9ffd770ad6aa924bd095d572fbd67e44bb22966fadddbc543c3c0017431cc1c1ab5325ed0919537bfbf138f614dc83f2a385fa50cee204200eb4e93919196b1fa08810d3df959b7721f3934776d63b6aef7c4233ddd095a7b71bd2ba9021801b5b83b9d347119586a0705e05a352e7579fb70120949d81437b213308ea94e694e55efa1b87a28800809617963da45d98205c15f5ec9f589dd10d2f01fad9434774e89923730340bed5645cda5763a1436582de509f1412d431378f22fad7589a1524ae120612f6c2d92d4e9b36ea84c5c8b74cdb089b8404468f12e5987c6e50c2c8ce803451d7033e1a49ef64d85eb60b7bb8b580b96e385e150c27813ad2e507bf17f80766126f7aa4ea0ea290ce65f9c38d1ba6560ffe715e51bbd08562b3cba8fbe5449b7894df1d685449ba9049d577c67d713d4e2a071679771f562b26b654e6e34d5eae916c28355f51c063c282f334a3ae9f7487e278695bc9ab129ead4baf8189c2eb23973dfa95e452fce8758a9e970d9075727dd836ac270495c56848dcfb4afd4c016f27db80e2e30955e0fea5732789c6a8d91a521c46e8917488b9b38721e8b2dbc7850db64e294b10390a8647abe5c7c87237075b6a5e2870d9401f1f7d8233af5f4cbf52cfa1b22733d89bb26664bd46bbbf4ba57574a39956345ef6ca6d1a3e49434d3ae2089b8c728bc1f104aa56d8c852dd31c1bc765e44218805877079dc3c85c9955de30b38d3b7786e2ec1c7989226b09297ca4a7b4643df4f43f348edd303d24d25f80dc2e2e4e4182a9371676984ad65d6b71964a10ff3d2508618b31d00b778bcd30fdf400e961641711a43214bc2ee94a15be3f0ab9247895a4f566e93f1f67e425a75f7282390ec8fb6a3b86c3d75e52943c27d718f1eb4c6fc42c328eab7dcd9943c7f9494a74485c014296c7e7ee8f3098c04704f6324c338409aff0e61e56f5a1912ac9ee13ecf219272e5f33f72294dbe2feb2f6e787114e3a2ac3a51d09fdda6203dac8b094eab69e1056ae273f979f83fd8b790d7901a3f44956a3af2489da03c07b9e838c61da3040da97033124afc5c619a25a50860f68a77c5cbbe0e291e8e3efc2e8a5ec230c9d3638b1e2b5091d26789ae6361240bb6e2f1250ad7f5d2f50c63a0b723936ab440763cad7d949d0cfad7e96d4b021543b8bc13bb4e42c4520cdb473884f39546d373835b4341057ee2ec093f18b0bb0cb20f4184630b27fed16c25cdd7f87b241d867539415f23be1985783e3d5099c8db37ea07c81058745d26d36cd34250c5439b0af33aa2ed104fc6cf66d551e6f3137cbdfe76e91f4eaad5ec7514646a087fe4f1797945153e6521f3aa1ee190088d03e9972628b5212593c40f9bda93449fa407ad49f8b613f20472aff9e7a1a6510c8f4dd98f2e9f2d1c2e484b98ec18854e46727dda6b31c15f9e496e9e1138bb711ad65158574099fd6acc6d1ba885a5f34cb9e988cdc051f3003926ab6d77fa822db0958217302f8e81122d1725998a02d5c5e639bf90547615bbefd3f22b92292504713de2a12eb988671aac214c5155b1f2d2e90da1308778ec3c3efc5fda5f6a3bf359dcadc598b29eaa300efe2c9030d78e97398c816ef165a23fea507ff70bbbf0cfacea99e01f0cb489c060e0cffc59fe90796595b101275dbee259ffaf5aa47d52296a4318c60df4120a8947a8d2c58dcf4d91ee74e4aac9210d252f9d815b76f45072d0a5f2a38a17f247cf72a965a6642fd7c4ae27f8e8d22b81b6dd54d9fadc46483fa834827bda96e6faec26873cf6316b81294996e34cb5538fa1d07aec0b3fa706a2b7902f2ff7dcdc267803434ba8f64356019881bdce418b800216742e8f098ef3580df1a12622a0c1e99734e81db75def2554b135cad4cd2057997c8355beb225025b7230ae42037ed9688dbb37a3d66a4efa066a0a114c2d865f34d067e24404121547921b80d71adb024fda4d25e83ca4eb36036eb0549c96af8f647cb78988de2b661101db82832a0f7e4cd06382ea88a39b7ea4730546b595c42fbf80b89399a6adf2e70e7c4ec5b9a5e9c83fc7ebfb06b29e0e48d3cad75ecde444007e7922265b6ef735d58bc5784f450c2a8d5eea249e6b0c5204ca6586eb2e0eed7c5a8e6b95385200ace3d77d8fabebafdf88d2cca5c3da45356862d220f68c3dc84e71f4e2996c29b904e79b792d7a287c2b65e4b27b62dbd625d0afb3b3ddee68603236b017dd1bc46256d4a6bdb63b55a40e10d20f9b93a905499eb0d62605da55f420cdac69822b456610b45c2d1512e19115b7e362784703059f6538d0dd8f4cdd59ee9153db60259bc4c455e1f38e211f5b3813eff99bd9c828e7a084906b23c70b2b962301695d425dfb8a9271578a9008cfd2348f641977178b5b2f0847b5a244810779025f266e5c01d2af4b2f87b69b1960ee48b78f3d6b6ddb67b16fe317954f2b9d90efe60203856088b08dfddd335a821d197cfc9870ec6ffd1725702c0fd946ddc2dcd1af37b6488e131d4ffa73f69a2d2bec18a9172c0995911ca9fbcfc937edea7bd4ec1fcb05bc533c2c1d9ef945174b19ee8ed6920c8b1ffde1c8f7a99cd4bc35d557887d186f8f7d362676908a2704667bcf6f4c398b06e5bef652698d281b08420bcb88b349592673d48c8e9b4cd20badf45ac79c9036e54eadfddfe3936e07efc75b2e78ed21b38da3cfe8270a7b92a2e65a37973f8281f638fb4214f08dd5440c83b342a19252ea1e9d393b77655d45b70212f0cbd0322a6c11af9570e22ebf721ae2063445668894283faee7921e2fda8695fadce9e4f88d37a5daa2a15fbbf14d86bcaebd05b551ab5c2723ac5ce0023e3eca213778669f8f88d944adc996d67ef25ba7ca7a8dd3bc16ab4b71f54623a2507787db43960130212534e7621d96667aea4679c351952e97bcd5bc96944477527343cc8ec5c6fa1c95f78d3348cc80f896549a138766f32d0e3434456534fb90ed232c1416385f887ea584db4b059548e6d76d52ea72edcbc118b3d83540a69847d80587285a295b7c283f0af729f2ccef236b983266f987396e787b2a7912bf9923a60a877a72ecc7246a0761a98ee8a95d43b5a355301a78691e2e253a149a472b43b8df0f5d7721004c2be8b9c98746cf2cad70592563115871452ceaeb85a453521c0f77859d48ce4a64804bfb949f9a3d34eeffd6e4aa0b4be62035be1fa85ceab7fa56f8e10424f9b351855982b39c1c36950428430c05b38ec5342dccb2b0d37e3bb50e2bbe128aaea6e8fbc531949752d5f4f5cbbfc0a58d14440232621775599805c749a5ce92ff2a73ed5717ddbd59b7ac4fe842c70f85e67655bc753e9fa550be11696cc18ee2795a50345b53f7d44fd5e0afc662bbefe8ef841ac3ca55b3363b0fa18f0bb1abfc3a8fdeaa2e2f7c01cf6253801c2a96e48e9bbf3ae318479af96b682db62c3e19d478d936e992c08fb1c6b18963951954b17b62fc67de190377df1a6f174395b0abec308f839542014cd7c551ff9b6d4aff3f7e7b47de57bb3c5177812b163eed3270ee8fb7df5a524e45339d2f7459a97ec9d1b3a391222ae24e241de472da61469da65dec9592f7066bbf169cd4f9a7665fe06db9c80cfe0f4d289fb085a07723dcec71fde428305e98d56f75283ca96d9a7293bb87a027cea471b1c0b1d72c2d44dab726178f28f96202116a0d66628b921194146fdaa3a65d4d83c3915f231ad08cb8a78aeeecae49785a508c8f51696b8cd9bfcfab16679cf191257f29ff654ba4d7efc39f2bb9f58e74a8f72184fbe8784cad3077358bfdf6000fdbba142080c69f657db1c74a873eb057dd5dadfbaaaae860f696019a39d682a4baad6771351d1f1b07673b76a6a6773f03d78c400bbe614012d6d2ff3073d14c862ef97380d5530181b7ca8d8488ce91f8f6a42b6094d7401bf7312fe491b6fc917f6635c29fa86c7acc856795c96205607541a791cd9ae6f52e8312ec57a4cbb276d7fe6e3081fc49851b2f8bf52c4bb9e5cd6e845201c93da38018bed3dd525cfd3c3c64c1d63701f37baf0abaa0671a297c9bdcce4a0cf7f2846566732f99de91df9c2391e47037df4a3ea1686dd1fbf83aaffd2f9583aaaea5f3698c378df3c43d47c35ee4c1074122b3c078ce77f45efc97fb29e16cf3da9dab31d63e50e9bc3a3ac4f0da3486caa414e9026c12053b4c6565b326f9b16e88c0b6eda0d35cb19c35498f7468a05b60e5b245cb5cdcc236aa6f8779128ad86ad827d2c48aa672dbc35987f143d68c803a20234f1f50fc7ec509a63d1212788fcbe569a533d1e13e3ff6ab228c7726510676a2c8272143258ad6d26b591922b00486f9e9f730724decc2cf756b1ba99040e26c979302c73d02d613e6fcbaa0f0cb7faf8e6877b18a83f94d123fd7c792d65e4f5a0dc70c1746cb33dcf7842ea906c91a1d166fb985c42181053b52e7328d94be2fe0886ab0a10e424096d8fc0036eeb074c75fbd37ecca4d7fb733a3963efc4f86029c8c808289124b09cdb058be204823917a82b22821961e39924ac01d203b7d7a1bf28be70ebb105849e184c14d9f4d4f93e31e64c3c54d86f95ff1e9a9e2d4bded6fcb4d2019251ebf9dd8158fd32744db4c0b01af46af5b5618dd3bde446fef2dabe252744950caebe4ff232feafddc46400a62700c9a9196dfaa564088601c02a126884130534f4a2aaab5074cccdfc6d4a056080ba6c414d5c8265d798fda0822f42f65f4bb786bd904ff3a456883833185c71fbd48d3f64a8e582704e6eab25156dffa80ca553fcc056d25853834d6152d3c349e81c27e46aeb0e1bb11c10f26fd3ddf04656c76d68502ee9f7d07d553ac1361b096dbed047a105055d412ceeb835ee5731ca685392b4e4a8d2a1fe14ee38a4af8e0140271f3cfca2be4d073c107693b044129842f2443e22a4d80cf82fde978ffa81746b1af57dbbd5c2b1b1c0e9298b206900e65b17e3fb7061ef2fc3f7323511375649b89243c2bbf835443bb9753bcb92f977b80c45a57141b7ddd27ed03011ddc6e38249f71bd826e27d1583f6e2503620f85d6bba992e78382dad8e14c24a86292483d71b45c35268f372c8df7353d02a28d8a3706d64e0305bfdbed4551983302bccf4291162c1239379db0e3f6d7904b0ed092e7f1ad5370e72cb86228ff33fa3d0609759ec342be6aacde9db8cdae787bd1ec2d98c66e1cc69a6de2c858719ba4fd5058c930050bbcb994258d27e377b61a4d2ee410be5e6074d92656d86a0c805730df12e1f029eb9afd7dcd91dc7799d3fac5d0a3cd12cf8775fb7dc487b7939cc58e166b10320b0273939400a1ff71ca90fabcad4372c0700bf6e9e34cba556f722c190f08aa043455803f645d4a7d4e9813ed7c1e8af636c1f3cbf92298708e39f680c75b4c120fb347f36dc7b473dab4290a187b99c63cab765852c00b42a7ea2655e936bb45617cb116644376fc8eaadea166662c9a7d3d514a5f87625ef80524c754575cff8e38f1d4064034337dc950a0e97ad36e1c369e5d646c250bc481c6a635fe4778897b259b847a9a2bc18763dc034def5642db7cd33334f3c392db6aeb5308f03d15938b9f7e1c07666c54268dd2e724f64ca66af1fa1d58b6451fd82ef48fe6ad602678571de6855e40ed79d095dcb6084db65c801e4a1f45f9cd982e48baf57beac1c2fe34d6c9ff38c11324a9a62cdad4a3ec4c27701287b7ce134d6f928c2fb88957137a02912be729a6ed0b6668cd169005a8beb55cc7fad28e1107145fa5dc8b0fd9c591e2359b8543f5793289d753897fe9bab8cd0300d946a54bc7f98c4e6dc5d86a0ae3665f7c09e61389be029a9e00e63b1e0a6fe9b5f655c890f3e70e6bd95a99668f7cc2f9c0d197967febd23c4c7fd7384ff0b0d1761698965a909fe9fcefd3a08b2672a566aa29606f4422afe213d697cfa2ea7e9cfb355df3b0c90c2be973aa5589a5e47ec9ab0c955294dc73087f91d653579822c1dd7de349b41129e13dfe99be57aeaf6aa7d0756f1c9d3146751ad105474e30447c986bac4a65c63006411b5152bc592ec53e0c89e33f7fbc237c1270cb4d060830636603f3b0597765a29ac407e3d198d5fe8ea1e61cd5da39bcab7dbaab75b159f95cc89457a5177def720a3e9a6a91692d774ee54bf01638c7f4cc803d078b3ccc224cef1c63bacb89240c8900b5e5fae53c37a0da8f670cb0762fc44925032fd7153140f133c811b4e42795e33fc4a4b9ce9c671c12cdbe96be2dd6ba2c2b5bf951f0391b96f345e75eac4197a2416c14dfcef9ec3dc72d084180f63c063a0f9760554a3ad1ac99213b5f8ba5d0d618d3c0b3b10065dbdae8dd9765f2ca0a9ee42ffe30db7cab8d61a8f946a18adf9c8bb243059cd512c73cc51547a70399cf7c67dfe598636b16bf1ea7aba53f1a0e4a260d544c43785f5e755054af4488e12482c0cf030aabd0d4c888ad4cda2d2ec4c9b3057c67a079764bd25ed7439f17e06ebd4ac90dee456b88322826c3208345d169f8fb9b1f6047a7dca2140947dcb4ddc57ed5e6fc4098562dd9f9d9dfffd54d7a3fdc9a0def9cf3dee9db850e71c5c61d8669515f32c4d3762a5e46b93c5d25c3312ee087c0f3fc007d4ab2272f9e2cdae35fcde7a44738fecc6dc7e43fc49936c889632f6929e09de78a4ae757db946a4a192c26c2927a2923a699f6d5572a594c7080aac44783c2891f6a497588340cb2cb1bf5e6106c507b38216d7aed00c456e6ed2152bdfab4fafc8d6b4adb5753bf2dfced473ac23f1a584629d08c0aa71ddf96c1a09475673b9ef90f542c1fa779b80defa5857db7154fd8eda99f51411353fe3bcc7c4b07b97c161bd94e45c351f9399d122ce4edfe635be1a2ea2d6ad41b9b4409b58f731f9628198baa453878ae48dec4f052095dda5c1347d0640a67ef4016422d1cbdfbe99db8b6b8e2e983a7525efd5e7aa9f797c7f1cba0629fc8143deec26d60ab2e19524904c7bf8d68a4a80bfb2f3b5bf138bbd058f84bbcccab468cf61760392f915a42c8217b31bdac3199ffca3826b29c1669df6dc4844ba2c3b6321235151ded52bfe30778b3529979ff63116502a2353e568414ee33a0b02cb594b01922a376acfc340a52481aca45f8bce83c5bb3a5a5999791539677f78bd5ed6c77f6a9f036dc97b8c5f65b428b830f352992bd714b161dc9248dee182beabfffb65bda15f46576beb41b3da50e6415357c7ca7d5a415e5626c9000e786c649ec96d1ef744a42e9d0cde496cccba19172cfe161036fc134aaaa27460188c4a3d19d0bdb94d74068104bd71cf47f05b5b81afeb1567aabfe89907103fcd040ec12d66eb48a74d10ac02b4ad3b256a092c2b803cc47cb47aba76b9e86eaab1c84a860957e6b7b8c587448e9d53cc744a493b296bd265c6d71de3275d666c23d5b2c95cfb843ffaaa91ba3346ea7240a5fac164fa8e961da3e9d08cfb070540c4d73559fc17e738b17825efe792941cbd78cd53acc9735ad30e9761ad9bd13f68c45f33b09e8322ffd32dbef2192c9a877379958621bebea9b069fd6b65522ec2208870e14b071be07da9103e06fab83c0a5511e47842dfaa50a151b4492f4e47769de374d1f6901d785650ad6a1ed832161bcf4740530296dd725124ce0ff56f2623a08a9e0f6e62d6e5226744de094dbb101b74e376227c144d478f9d830bfa221ec87170e7dffb21f904f6f726ee5f5159e37ba681d886b77f01eb58e1c2200a880f0c6688b03412f78d20797a86842f232ba0a09b04408a94a6b5427c282b43a93303667bd4cc7d6c4ce9f46555572af8577bb7403376ee228d8971d7b6879ea8e6c17034458ba1d05b6a15c71a73ab5e81cfaae97a2a76ad573f9c3696304cd9f780271c549146f76d2b6550f9d88f5854901d2b7a87aec515dcbe24e8403b7d461f72b9865e5becdbd4d21f23bc6f98613434099d28194f94ca68b30de2989fae4b0fee19674a1dce8702d95c62ea4e28263e08e8cd4a9220a287ca50c4c620af4c6f4ceeaeff56816eda6104c3317ad1203ee98a53f639ef301aae9ab8c481c38a15de714ad0600dec7276e1aef742236592961d30dfb4b7b57d219db981bb08a394b87e9f940082d064e8f44ac6849d09e6f222d6043d2a66c2615c2f4e1c679ae369de57ce6d6c1c2f4bc2078acf6bb480612af163df98ea46f8d0958c3b6c8a5b420a4255a19ae940953cbc7fc2e421223a0b948730be1cf44bf5d1a42dced7e632569adea73dd4538c2a22c2c61a5d77a4c904d1d1d61cb2a25efaf854b93557d099aa73cd288d9e64dca1849b69b40e1dadc544915626eba39f535c86c18d4b7024122b687c0e23b82aab307c2cb3a436b298f91db4fc92506270f39ff0fd65b378dd68d08e72a295b6cbee1315244865766e61d1b25b4b6cb4290e655c0dabea44fe95fb636a8b47a7f889eb5408616c16846f4a1f5ac209088bc80c2a347884f7e3b6af538c4f99917f434401abf2d676875d9816706c0b53e12070ae97a6c9db34ad2814df29c95ac8a39ec5afd1cb6817c44be326620122d67b36ff3ad4743ada196c62896ab1377a14a43ea2923ff33a02681a593642622d5b35ad8a7c2e5cfd80dca523a22c6f88d2c64ad629a6fe3e88986219669366fb685dbe43feb659d26151ea51693ba73ea8787f72486ad583b48ad9d23bffc67b2035e13b06ad643805024d1e6a6fc6dea7baf0f48ccf640015d61215fcfa2e5d978a59ab743410e4a1ee1da10720e34bf76e2b4c7a23fa96193e24be7cf75c6d34ac85f8d42b9f097208a981bd85e550c062e955efc1388099340cd34568a6a190d417ca288ad00fe7df7357577f3246c91d2d8f0fdee35848d43ec48a92137430f53c034de18f8f03b21b389d7f03704316594c6c652ed230e5f03ac2a2d1665b8f02db1b3f1b5b654dc6429d388eb2912695696152a4f7aae3afebb70bdf47a410a7be6fc32bbe66a1d703f791cde161cdea05f94e4e060b152e04aec8343e5a0ab940750f1af7a3c2152d8dd0b73adc6866515d54d8791c6b03d8d33cf76f5b898167ef232db6e37fd5b7895c3514d55338f18495611cf78c3c0584c93888a1b27d48cbdacadf2d1442ec2d414e4b7e7347a82bde4ae9d08e9a7b28f2076bdf4ec55c20419372988a2426d6ecadb041337763f264e728bb55842ae0025c09dee7c543be898b179a17d648c29baa8a6f42248f9c140d508b8b3779b3075ecfd1fcf3eb5bc73f36f1f0832242a47037ff15aa9d1e0c634d16dad41850ae303505827b7707393fc2c785aa011666767039392c6ecd7844de37ae82c00201a12925a4115e42b506e67fe94774060c3947134c2becbeb7cc709e15cdb485112ab4ad94be33d59780efc1859d131a4740b14723a27773b73a8f34f5983b2ea2a619545c360b72506490eac4e9fd2bb3c95968ca78a79f682dddc2f786d659169503fc38dfeb6fd9daab855d423a299cbbd6a32e9e2a96795b5c628af776d99a992f3d3d1e3c26cc5654d606b7628b1d1513c61ff21c69e32664028f694189fc1ca778be16b43b6bcd0268cea03bd3727e57551f1acddc29287bf27e148a57dc69ef85e3ca415d408e40713050a9d47474fd59d7fda8b57ee948835ee2c41fd9b3566e119d0edc406c00c873d1e52dfba2c1019a77802ffca6e2782377057d2f4bde0fe27e7895454262b6feea768f7d45a88037648e48269d87774af542fc8bce734892712b4c775fd42c3ac6176284e7c1093797def2d89fb3d060baeda30a9696827da311516e3cdbea9eadb709be37ac0fe154078c06be34eeb046774f4547b56fa4456d79b9246c4186bfa533e1afed9806f2fb38964ff4845b2feaed9de5b5c88a348186d2ab9f43cc9731877acf7bc0027d8cf6f44a5dce53703b3e179c915c286012cb53c9dbdc71054facef51aec561143e3f0a38ba4614d9d4dd1c08b29328430afcb560c3987267b0f50e55c215d3c65a266634f8e75a1056f41e7ea25aa89b869e935439ee98a1d2e8f9c79723c09aeec16b9f1d2806109f9d013346dfe612f01a72725424ed241239ce67185abdf7c26dbcb547f15dc8add51483832a337607baf77b92746094339521f05d50e02a5636828c08ce174fe8c0b3ecd843ceac99050cfa820261d510ec3f83e05ad56f2618256638972e6eeb46c854b6e73dc1ecfd296c07d8c4bf1bab5c9e747698e9e53a372cbd0951c794ec6090f1ea277c48bc3bb734fbc8d794874b50ed1b5eddb79e2f76d5457c8d0fce9d2fc25290357a69aba5836f0ee9677610a875bb0204d8f23d522f4e02cb8bbc57ff5c67f95241b666da9c306bfc6d610aa69bd9aef8d02d97fa566bc8a0bde567e644d51d5b06565ecc4692a9dde28db2a8e8c215da700e3f516b239fd375c8e76b67d39f92fb3bec0abfc5668841b29a817d322b49c4f55877934fc93bd7200b7dd10f2f40de5b7c483c2de3db54deee3e7d3e64ee1f82dd0383cf0f0b39079b3cd40030b69631d50181451d041a60e7123dffc6ddec346819d302bb94396d2ceff64490a95bfc0ba588d648b4afaa71bb8362e4971800b77594a78b52a639ebaf09ee156982639d2d4cdc62bc9037aa9d50239a16821bf2300dc939539b58ab0a3964f7eaca34f9b42c9f3ab09a8e6596c56457d0aa759828b2a57e7d8568eaa1b47ee7ec032c19afda776a92a8e4442b643466b8fd9489ed4d556f97e9d3e88e2dafd1af6a240ec833736b09f057ec0ac00b98ea3d39d3b1dd1b50e3a38e6c08698e0872649e2a1f6eaae2bb03c36c38e1b7405e75c71528aeb2e802d4e37db16df588a5a825b419c6b3c18f9c6ee9360bf78ae701489dfa2e896240eedb264a932da985006c0b760b9d4f0e973e7246808f82a466b8703d22859a1a4c71f8cd7583fedfb09a7c74edbd6bf4475b2a1b268fe05e66e3089eae1b0115044aad33e8577870232e2c81a20cfaba2d5b6268c1c774bc1638db29de7a0c980db8788fe95fc024055308c9aee52d3ee3e1b110aaf797bbb2ff99b0504ecd73dc637cf3d6024c9420f9658472656cde710d34d838e13b3ad945f9b1ee08f509efcba1ca50c9f9acc224643c10f9cada2c7c76b12b1ff17e33a39c1477c845752845de6e183b4a254ac439648dd25ff06b258fa1649fe109e8b0e08c438c2591b0feb2a23eb12478624289543bbc0c04ef8aaeab289be98925b8bce3e6ed0e04de96839a13040afbe32b7b2bd7015128bf2833f4e7b8c056a656def41965ef35338afc213a8008f914f2a35e38fdbe920cfa75414e034f44094d729bc03aa032b897bd437b7441744375e5a873612e04489f66b7328d1a0251ed493852bb202e5aed6d54e926f11532c4c48a05e60d1832fc1fba0776ddc9f6e0f80d37c7d4d27f1e7fd9c080911ec097979c8befee23d7a116f10b8bafa25e11597c2c9f0cfac8a8f07eb602c58712644e0bd3acd3826b2dda500c03e87a54b9ee3d23ffbe6c077621509464683fa0540afe0e37581c4e66288ed85b44dff58ab3868f01842c694e1d245c3f350d1dcfe8fb989bf56f5741f6e1c658e4588b38da74ce96d42b20c06e1f65014e3f4e1fc1471da715266dd27ee1372cc3c88ff10b32addfb1b90177d85f4f060a69671925e56136da21cebcfeb1edf98b2bca55d8c115cb44bfb082d651d5b1aa69eff173e5a41d7d8ef29e257cb705c2ed46d59edf79b69cba6aeddcbd139a07126daa59d951181af0aaddf2b6e023d84f6e8901332d1dfcad7fe1da4777603e2fdbb1996bf31e4776d25029a9e1a38e439acf3f50017819be716c1cbf695e5fd262f4c68b7405dfb6b48fa49b68f4b452b5bed0e00e875eac3898ce23c2537f257bf9f81fe4e83a12c86a4bf553c5eba4c82a5fbb726245b6efef109bb35a7967bfc53cf3cefbecc2c102eb6dec3da82914170c00db656127d1eee4de7e9d53c304d46e7bad6827fba2f644ff9662e35e2c6b9b9cda18fc899d46698b9119c994a910af8e70dc8867aec277410e89d359c98f61f28d7468801dba2212fd7f96f4e948505d4b0af98e40240a8d37f22c80fb0628c326d1753059ab449ca7a7e45f84f73b2b73f6c10c32a03e1b4e140700064991b647d1d878c56f2a70e203bd0b5fe82ba6c7fd432b6ad94a36c500cfe292350a2198c06048fb0d5e605aa92fe29fef24befe94131b24dadcc74c2c79bb5febde7118196bd9b71dcb3bda77871ab81d6a2e3ae9c727e7b2ae98d16d76bc4047a00f02fa39f53ab44a4c550f101c4146fa30e44b70435ddddf33958f2caed6adab3c070c865ec25be70b491e472b4ed43b4da855b7ac82457a23f14cd16b7881e4d6bc8564fb01e6b53a22896c0ed0fe1c3d667abe47a36a2272bbda3ed1ea2ed5842a13e667c56caa4add15497963e68393435b708629f3379cb1f61371582f4967913fa654170640d7683325b09bf5d8a48616b6cec5b7dafb3e74dedfee4abd6a83db72d869f56c3a1bbd7d255eb5a530fe8375858eee510ba337c8133b3918d4b2d450fe4a6145459dbc3f7bc94901ca53e13753ac51bb37b3a61fb810b5fb44357853a8926fc6bc9938ca636364366ced3ba40f8f1fe63d5fe4e5ba81d05e054a063fbb63a93e6a462eee9edf6aa346e20532c4f2f9bb86c14c09adcd47a9aa5f5967e416a8c339d1ec063bf7ce1151148c9dbcf37ecb52574a7ab4752a5b64375ac5714e5e9c5f0931be7c08ec787644998a65a6c6684ae60362d8537e5b99d261f11ac12dad3d8304dafb5870cb7b9bed32ca9ca7d04f35aca2826c1127d09437ea59a70272716c25cbf9998c1cb882e9a8dc733a5e7aa26f50d2fb1f2d53e0ee4de06c1551f713f41de1cdb225be8eb508e94028026c9ded05099096e71d83e3f402789c64f30a811541f3480211a874bcc43f23f4a0a1a1282d1961606d8f6304accdf7e55a2efc404390670daffcdc0e4dc5469046e1f8a74364ac2ad214c81a3d68b689996f952c535b4b5e89c5c2f59bb9977fdb72a0b089f644784fc606cebbb7228b5e3a648d092f385829dbd93d80f241c98ecc0e07dd270a3a0950c4ac20557e419e2f1200f01ef1242d01a12805c7111a4d9144ecf0e0e171d7b1352e3d1e69169ee1af585eb388a4da67df597f98fbca08c7bc45a828a002a24f07e00511aa9acebe4558fe98deec4b59f264c93e5163dd9f0c360d34d7f16672bd16f4ae2532fbde15fbe4a6777c7384b7ce1a8459a37d7ab97359a132ad10045759f9726755accce5c2d905d602d8d4b87f30d58299e61c360c1e4f561a20f2c8eb4a414214e860184b7f35a5206b6edbb58694f2eb397e220e4b0470cc99947a6aef3bd605cdde3ab1cdc9dd007d9101b65b7ef696a5a0db797753fbd31060f09e89b065bc4c580fe556b8b535ac0c6bc65c8e42c85d374003699719db7a13287d1c4e33c37b8200373f251fb9e5a84de59bf68f5d2ec5b8f1dfb1a943d1b5467562cea7ac132f68e2e785b049b38e25620933aab00d50baa0b6a3b8075094f856ba52c46ac34da6e0b389067b111ed908a90e4f3ad81d883e62b808a5a6111e2ea946a4eccc518dc301f6950363e067108d65259352635e25e77fed93a01042603748e2b7c6c4d0e6f51d252b33e54c5ead9b93cb1c1d89fc4fabd35ac2803d830517c0832b84f7ccca4dd8a6634c3238cdfcccf4c90f2bfa556135deefbe64aed4e306939b82f9ebc234510a26495570a85448edd966e03549eca200d019c83fd1f2d269b834242a98cbd6734b983c09c3bb5f1161a4a3239db21878ba8cb99918f3af7a6b23ec7c7d318dcad426e45fec3b5596728f88af68a938480be145533fc7327e3e168cd4b9d38e929b19cbcd3b65562b20ed609a81c7113d5f8d308d9d6a64c6031d030e9c6d0223fdb8eeb71ffe322aae0af7a48754db4c26e7cf04f23011c90c99a5e3fdbf940db3a5d80e85d050f7ef654861f6e37a1c81d808e97fe0fb6c750625738a1933c1c6ea9a6c1e51a74f3693c2e5754c43d0d64c8cfb5140e048775a0f09d8c77a5aab71e1a787ef8ccc09939685266ea8d8887bef50125820078682b2728487b9cb47d82d83f64eb6532a940cc225aabbd6330e488e2892d05da5ec2940f34431b6cc954d55fa6100bb4013b8687d88e03b1e9fbd580a84a78b610aa5abfe2e473d6c9005105a8fbbad8ccebfd33feec67fea2c1b702811b73cd3c59139a995932ce509db52ba2ac97de78e4e6b8da083b4d3133af7124c83ba223359de5d3c0c953533d1bee1ed78f7a3889aa4ef3fa43a7cd688c94388dac700a5ed0d9bf72b7ac6dd0d5597e787aec85255eecc16bf2e193fd29a7763ae21db98b717ec0e2055c5c93aea373be9ef99910b78a301e1d1f0208fd092b01cc67fff9f37cec5159b28110ab73873de270f2e1ae2e224a17427ea27bb9ba9276b02b65dc4a8d51f08e64b083d595771749d5b5c95beac626dfd0039c9b188f2cc39416d719a41542ee2eda2b3e4bb2263fc98130dad105a522a427ee774e43c6da1301d3ca6197240e2ea40d01af1d0b171879115194dc54cc090712bdfbb7c20184edb3b9ac87a4425514db81974ade475181f811e41fb7a2f5608c0cd00f049e49b76d97a011f911b9f0166a2ff16be8c9b61196e50d68b1bf123ce41236499bc6989ab00a6d3dd11620b72b770708271501889aaf88cf3ca300f2a21bddbe30e687deeeee40dac6489a8224c327a17491b7717dd020ae94428eed93d8cc41af95a2a99b03d6c8cad2e80cc8394749d0dc55fd78c9ef50d61fa73fa34c812c1f43ab2b6b32191a785a37715056bcae4d5a40d09e8c42763e235756db0c19cab567958a9e1a6e6b462af42e986a953f06b198c90105142de219f332d2c293c853fa21ae1c8f51334db100cae9173ff1214c229b508e57398533d10cbbab60444ff88b323917cc0f06007210c4d67ae689db36ea3f7813c7cb839162e7183d47c5e34454816cb4801e4ee127cc72a56d24d1caea86894b763483f6bb20f162d48f3fc1e64efcc1b74c754cc4688a4d112fe581a6dd79bb091f8e4d9e6a2d07dcc61755a8116c6f682672862acc131ab56891d36160746142a36467756a5b28b0637720853711adc12be837e084d400f942963fd1f79bd8b122aa2073e91cadd437ef0b9b5c7563fb939e6f2b07e9cc5c3f769210ea82838d4f677aa7a2a6d244e917d510f4d8c521ecfcc2c30341f5ddf1f9398e84b486ccd98942d3d543eb870f052b12ebac74084492fe56ca20c309e0a9a95ce32a931a135e4cb7e5d06c2fded8da82df18708f789266c3689dc8bd9855cf9b36d88069a11b39e29e3e4f9802310c3b6477daa325518729b225a710ee9297ec8a21b92bc759d03ea215bb097cb58dde74d68aa6edca9537dbf6251d30358220065d7181df92e8e4d4ec078b3e8c31a1ab796f220f1a6050e3a598a9a4da4697bd5ab5e26ba8dfeea4f20a0b62e5398a0356c0fcb405ce6f949995e53c6089fcc7d84110785fa3556968b5b27870d508f29801890870f1ee7d8dfcb7b76b9e57f00c2f5528de49152125037d68e2abeb6a1dd62ad0e5a689f0124d57f4e15f9f7c1e6b63fd333a1c5c11396ecd757a0df2f9a16f5012c647ac0a4d26366e1144ceab0455b8cce4c626aa73047b65c04836f1fcc9384ae22ba32fff0e800055613f43459cd0fe0bea668285bb2c747b84d101f558a0029bc9ed8ae9d5fa4b2f8a83ec9bec1c819cad37be25bed666f4ebb1d720657a557c25d1fcab1f8f451c61ff9d5766a7f115ba77996e1e51869ba36055827d75816f807fb8e62279ab336efec4318fa44f837aebdfab2f4920f58cd213395eeb68bbf00fc77040a17b5de56ac1a8e12b7f03750b7279db7d0596ebafda040b631095ea0283defbf178964eaf682afd9fc8e1fbd4c9310c4d0a30fd072a98c72923401a8c1c580eb9aa4442b6830ec1ab573eb9b96cac868188aed635b5bad7b270bf31c416c08d5edb9bab904e61dc58bb46d718794ccd21de621854e23b31c168158cd7c92962621a124327f97d9c0b6afec682225fe6b9ea404bfd4bb589d9a214c840e09f839d3ce432802a79041f3b97e7662dca1f3b942bf93e3f1d6a1e57c0bc20da3aba3956aa178e785b7773eb5990b0730a2a164451d29540293283e63c69cf8c87daaf44fcce31f12b7f81981e3f47618224a567987181868035365150c2d39e3db8612626c61495ca7a694955ed5b7a187554ed1b92be7bbe5c3dbf727f8a09464912ddecba45d89a3c08639ecdebd225853aceb7c77e3d45f483f86e49e69f11b3939262200e24fee34f35f3f3e694b4bdf780a50c0520e09203ec92ecdd833f3c8030cb994a559e7b036e5eaaf77e0e5dc98328b6e6293642452c70704fac935cb8e5903dad3b88267ba14474fd609bffb2d54aa2d0930c53336f2c3759673d65ada54892b41b16e645c83c02eda10ff6837ea9b0184e5987170f62866cd26d7b35a7c677ce2faa4255be7898ecbaeac2460651d8937b257cac89901ba7623edfc2e6426e12213961dec4bda932b845595afaa96c21f13f7d5c011dae535ee7b85da18ded3a94a44f43fdeca862bef1f60d6b75631cbcbf2c23bce280cb6146e6acdb53be099be59126f11b53e281e6b3196ed9ad6b9856a80aa3536555dcb482afdc73870f40073a420e3df4e7ca0021b79d7df63a7a7316e8c628d208912e2386ae6101e3fff014bb225868d0f810906e94b7567d0835c5ced7a2ef2d19c800d0a09b81304801b66fe252dba17b39dfe675c7d43b1c2c45acab5abb0d60758badc72ed0ae00786b326749897e5a9de1266524bd5945ee29a3bda1a5a723201f6f784b79f200b165f4ac760131ae5ebfc00cd928e945785a05ab724a4c790ed553d0e90c4d952e9ba711adade925ede65019f0426294601b42b7f127af4799ab812c7efe61fe733304db5ea0bb80a46993bcf01e10dbd93cb7477d749bca327e8db1bd16dff2af826db136eb6415bbdd132a6b32ce7a851618654e761a12bd877ec572a9d21737e0e9214000754d801f251d95c3c104163b083fa9fe83813069369461016e8ccee17f19a0dff127eb8b5f51f6de12bec10d9ba89deaa34f92ee8b8c3cb49e60c6c5526edd1333b3788e5d0825a6c82385a3a49557cbd9093b0c34e1a8d0cd18e4158758b9bec7985a9ccf879209d562359a2ba2ff17da0e6dcec90a5318402d1dcd4ff49738e390f5f64997673f0cde62cfd68b2b8b82113b35e34213b8068b218a83c17804fae6afcf5f0571893cad0b21e5b3de8d059abe36260822302c14b698c0237f1aefff0fa7b8221c1cdb1a1ea218a01ad28a859e61be9f5c5ecd1bdfdb75e40acb6fce2a01ce438338c324cbec017cff7e4581e5d9688e99dc1aeadae21dae60bce25d62c9e8428acb54fca87c43967c90ea9128aa89220d25d33cecb29892e2c49c4b74ffc6fb0a24d88ba53ab8df904c648ffda262e7bd2ea2c3f40fd884d8a3e449d8870bd011926ceac8a4e36e1bf099a4c14291330974f7a3df4d01dcc8daac9c6e393b262a01f0e7c73bb5fc3bf524d2af5f6e9b37954ff5dbf4bed66029d19e7e8293e6badf3d87662074694395d76a478ec77c2109a34567c2bb13ed6d133d053f78fd72e5db7eaa0a9b3534680a96027eaf73e38da71528d1271662ec097b539a8fdcc58aabb9dd048808d343c1d05cc6cfe5a24bd65898f1b7c8f43dafecfc15e4f877437fd56094262a47bcd96929debb7862dbb4f77f7dc6f5426b4a3b16108e4b3bce82a54d3a260b4be89f033a374298e6a3b3503f301ccd0bf3f3a5c36277d15b2b3eafe975e2bdec4a581755b89df3a93e10b2e9cd6e6478bf127c17f7c40c7c0c9bafe8b2dc75de0488707c0fb7fde1d68ee22fa3d231f44bcaa54065538161cfbc147fcd8b0d57af06ae83965a6d93b489981a283393957d791b09fc7c39d155ab7e4416508582822fc5f6c364beb665ca03954f664716f0176aa4c910417c4cc946e6ff8d7e82a9d97b50626caf6c37dc41c74d95f35bb97534ce7ffb2afcb2cef6a9e04cbdfee519ed80075fc442f10be840df849f90e51fb0384da489dfb688ccbf713aae45e5310ac486d9c287041580f35abe37cb2df2264b066978c633f03c65f69edffce87b17c856c337b0a19007fd18ba0a48ab2c743037f6138f6a406bd734a18061a593292426d9efca65976b42f8f24e31893a8c35f970fc91c197b515ab34ea187777ae1e1860800592aa13da0c3a99f7f634f377a589d8ee9f542774a92f159152dfe5c36330c040ffe55746c1b8693add9344e4be97d0e8b5d005fe3c5220f10e91614c4fa349b53fb00380f4ce9e40176cab84add01153445546a8137acc99ee0b8ad3c1b5fca7a09ad8d0de61fb0033116b1f25844c0d35231354c4da0136877f1b5ee5dd7b2efee60b7ec73fa8baf9ee5825510a379016324ca124d5495b6ba4a53093a7ad039b35c542d5f3b31d43f55ef01fb9098a4cd9029196f350ba37b70b7684283d6c6e31a19a83c48a03d5fef85147c7028b07effef777a46adfe588043681c21c2b9aad30dc869e82b75132b971dc7ce1c1d50839c11d870d8386519d9b0777fb85fa8a7823295d54cf767ac7fb98726cc8de7162000583526ac5b4b48b2545d25902e9710c6a389a932ed95a9f27eaec7f1c1b5bd4236c78d7d8317e8b7ea75c3f5599873d6b2057f8358742dd117baefd2242bc1984aa618abe0a01f7b74d98bfd1891bc2f3746c2559885f262969838749cb4fed91361451e8889b87c5994a98fddc023514d7248f889a264a85fa40a0465492fec73e3928ba67792ad03e771006b504bb35caa99e482c2335720c3f2491d438b2a3f6a0eb7b172127b19ced5cc6495ecd1d798cea3d5571ffe6f7dd751839a8140b62ba96a07de9953b18b91486be41d4b03a41ffd7a1444b608ffab925c97d9c8e6b1e1585d17d26cebdaeb5615050917d61a0b75ce15ff337a17c24784a04bd303706a308375d36e7f0e5388fe2265a5b786625d60b9e09d4f2cc54eecac1489d6ecfbda0c25c37b5c837b7f0a1ce22a54db209a5c36e25471a57c24eaeeaa3fa367da4caa42266ddfec51da7754958db1588ddb9ec50023cf50e39011feac6be9b3468fc54abd0f20271f296360c8bb67d516ab6515a6e46bde665cb48e010327dc08c77b6c6ac57da622811347fe9f4ba59f27955b588f3e25973e2d41dea897c0e399f5b98fe82f1840412607f8a6c8a50e9d93d205033eae4b5e3f6aa36c5f2b1f7b33e168fe4e80512c899dc872c91ca3c89ba6b81f57b876886fabf98b4ba5e0717818e32e1b4da2655f1dce8b6c5bf2c70e9fdc513c2487918aa4d83d879703b77041f5fa11d3878fb6bb65c9d5d0bb4f63f4f32e3ebb0651816761cff1e656c89fb3b13acc81bbf28c418c50a3bef80036f6f14076b4c277e3e0ff0cb805e782ee22c0c887bc26c11dda29003fd8e7db18d7e125f112d3085de25729361a3d328a78d4cdd3330efcd2569e566a471e8fd9432992aba68770924755134a11da9c333cdf2d006ad052cf4759bfa3604fdf07c559abb919795c96bf299d810db8a0de8b05f95764425a6f343070ce9162c031a449b526057f11f3442a7c82f8db28814cdac681243ed322143946f1d5de4c02f7013fe75c8fb045842e7b9130cd272f410737bc2bdabde705b2fe9faf0eaee0be11a97f6107d6c4c7e6c43e2d073062e3ae179160bf260266281476dcb43b163ae68354ed8f04f8ab950628c78eb57685c22b14a4739201ea6f9bb274eaa761a86a1b487cdf2f7876be737f046d6af1860140b7dcf9655c067a839a5be99aa102af6241820bb56a43ec06b20a02b8543804e5ab8c880421c59e9e432c3e56f16f011417307ab852f9179db5391dd788fcd77b01199a2aab526deddc7e9e2e5a4425943663ae9b74bf56282eb4509f5b2a9edb8106bc103e3eab8efcc1f1fba0e1d78b4c7760e34bab2efc20f90b751f74dba5101b0b00d37b5d6eefd3aaa086f93400d84fee126c843f97ba1682da14644dbdc999956c4540caacf3d73eeccbb49d9457015266177d5d1939e67cc85fbeed703979ec0ddb86975c08de5186507f93bac94857452afcd26e3a44a83b374fea7e78afa474678b6d5cf561012ea2af1039cd31b2bd3ba3fb3a9f174cefe3ffde9f6222dc64cafd61ceadc59065ec9938cf1e828688f9777c2f6166c481b8bc569e49478d970611d7c3701877ef3d9d35f52c0021725a47482afa35aca6b6a06f777b8643905d6d2fe24714808efadbcf4a409810c470a68261d268e1c8670c48b33913c1b1812b454a2feaa6ee5b4ebbd51c4823377da3ad92c44fa364c03d6c206b08ea653ec726c5e25a28258181288273367c9292f0380cb1fb311bdd5699e8ae2ad79c85b32de0cb08873f4a57728fd4b96aa63d5944c07e17305dfef7c9e7f1a323ed40e0b26fe0799b7ef65727b6a3ff6ae25e9ef1fe10a1abc65b862278855774d960b8aae94f874844fa9f3b232267516378ccabcf73228b1f585433859921b65a41731ab60979ed71252f9f4393b8405215e10ca76cf454227589a71db8d816bf1e8f3c2ec90fe0e86951c4a204a99116da45fa5f311ba4fab7ab86bf617504418aeba8a85516111417f04dcdb23acdd78228a052231f56c33ff405d004df4b47c50e2cf8560f7069209ef83ecfbbac67078186d8a1609a1ff2ca9110ce61c59f4eebbb2f1cbd4a156b62fa9028a45a04381c36cac202bb7333fbf2f8f1f3aa7e9730a916ab170f68531aa6f33add380a18ffbb5368d361f560d23d01a6b06052bd688c0c5c828e4ecac583614176b9e579a61fd3e2a285e9a83c663203efbebd7876219d053ba0ddf52c96557361b3b9b604cada320a30ed92272eafcd4d91d1ed3b75008fecd61de639c8ec43174a1154f476801056d71571a4179c4ae21e9b8681e235a0667337b5109d8a5450c31c376915be6dff08dc0ef241188db9c7d64301d4f248475e2ee6e58be043ffb7af7369b612d89bbe2f1135dc50ff4d550b77fb35f13b84614339e682150215e6e18548ef4aa85ffa57d35053243b79a921338cf469b20107c97b629a3453cd894e214c2f095911296049c8742bad67fb1a2f0d6c719796a331840225638190c5f48a848275625f059c959234830715aef8c3d21b2ebe1d0a2f684ecbb0eb024813e8662c0a28db5711fab6c60d316c805df597cebfe2e23fa56e9b41392454d5f07b6056e1aa324b7976dca2baaf8a7dacff5a94aabc12639e4eebdf8e82d398acfe45e6ebfc8236e0c33f9d389119a4458afdb41dc6102c8bc48dc50576f9b4badff4a5e019c3de5ee16886256ac88df4ec73b59d541c39f29eafa8a9deaae425594dcdb3eac1ea678265b6787a81df179f967791bb7d802e208962d913faf101694dbf8e8a21b36a2de2aef2a43485d49faee054d3a97c5dda140b5c81d5e15ed34417db280a76601fd00cae0f7bbaa2a01d5c7f2eeb626f82d1fc37412813bc694bdf974f7df35f1a2bc2188426f17a9f215a8934bd337e5d96c9bc02d62d5387332aab573ff3ea594936099a71dbdcb311a3a9579eed53bc3f5f3530b4c8953ce3628f41bebba0a308c67666ec5c563dc4516b3abea3196729b12d0e2114e496f94ed2ce7a71099910315bbe52bb03c3a6b0417f90fe90a09d43b62468777117ccaa639efdff5733f261b98e055a4607355f65b428bad805d2a71c51e06d34cf38c55f94e601f819d7b2602560fd8e2353ed20545ec7e9e94b97f4d45ecd301903f436a2f9d81535f58541fb46703e2cf580d3849a7725a94b55ed5d519d001f37ec31f222b210e276af91c8431e5b4664716b5c4950c6912e2ddaaf3734c091899c6bd8a4573a0822fb8977183d77260a48f70e571270fe31aa4d1456359ed0c113c64a4484efe827be77fa53a744ac97b5a3e355b6d189ccb7d37e057ff67991e4534a3386a353bf748b4a97449587acd70686f5860f49576fbb3a83ebb55062937598d3a71828f9d0fcdb7149eef0b0f903530cff23bd33160ed870f0b767b526e3faa18a0c7de3e36d16a42468729aab3aa5d0db0215d26e07cdf420a017bebefe2d1c0f6063bfc25d048e887bcb1795f1108c2748e31122feccf551ea4dafadc5f79c5f8c117d0ac997e360f1e294dba0c0882b7ecf5c75e66d248b3b739bbb42e15ddfd608f05440e751ef3b06a6c7847cf4661e43faa0d360b2108c05c1c67b64c611204a3bba6c19cd8c9612d0e9604b8e835896b35e56a836a0b8b0640371e86d0675f2265b8e9e960cdd3e9dfe11c9faaccbda476684029ae477ddffd6d89844c55853b4bbbd3fff30f40e8805733bbb018cdff8f122010ffdfdfbb5ddc262e1be8bf0c09d759f896c056c2064a2a7381817c3b34c558ea739c411a212ebe122704dcf40eef12098f7f5471795e236d8a8b180d3087e51fa2063d03390ca5f67f1488c81ec93605eac2bd145756942e9b103ea5e092dd362a96358c4d0f4679d44ba885d18370e0f54a72fa0eaa3a6d67086272b6b4677b2beddd1e3782a3e9fd74c297115d19e4c4a60a1585f3f79f09e15904b7f94af6cc24994f87f47f7e7353e342a0c8953daec8b1f99428e1757a67665afead76cab429097dfe9c1673d5939f5490d6cee9cdaaecb287a50a991c4083d337ab1b0391285cab138c8dfc664c12cdc9e901c7820302329f07db8932effc6e24f730b5950a2b0e71ae8ba78a0dfbcb86be60c3f009f4ec91d7ee6e65718f091cb27d18f301fb7b779f9c704c825db0d8c03bb47c4a3e430504d76c41648fc9875582e56726b496b74b4cd5dba0440322b3b05e538bc997182c3c78b5bedffa6342dbd6ab219fcc7763242f096b8b789ba417a0e4c0c7aadab9309c9719b631c29ff6a503ecbb75339df5e4cb3ecd0acf37a87162126aa2d1ccbb5d1e886fa94a89373cb298833919c81662bbb6dff91e3911b843eea25d75f4e63c6600f87ab38de01a833267998bae834e991a783d3c85fc6cc32e6620b1bad852ef5386744d7d5f2d41a89df4a1c80536c65fdecfaf3fb9b5624e196569fec5b31eb8ae127788d4523ec9129aa4bed0a7c7b9cf0e555986e762ac25a3ee1dc48abbde0d5929aeeeecd051898594bb3cdbc8baf252db66374f4ae1de268bf1c5dc729e0e0f6b7a77abcf074235a38f881116047fc846c72dcf66232fabfc954d7f522b8c33db14289d19e7b99db8a2cd3fa486fa856e1ae00b44bbbb41f2069d1651df52502c9fa1470f5e51a1edb68f0787532ed87e076aec3888733a90896fdec592c1b4a1e3a229159aee99127b92a77afcb4bc7653dea9d994b927f1e68597ec840d859653d59315e4ec7227edde595b84c48ea947558582bb9dd0a0768f3365d4eaf9f855cb35fd0ceb89e68c2287acdf15fc3f68f181d25ad5de1df939c0b5879b22c7e509163cea4a0d365ed25213050c72b47a542d2c1a665a5f4272a1c425a7f99b8037ed49e273d7b9bbbb46da8d7c5557dc3e9638be34914db41f625ddebca21d65ca051c892ad63ff9ec4f6fe6bb81cc28530e600deadc4489e441b14282368921d0d2b34c8fe551d61fd2e50ecfbd8b30383954c4dfd594eeac2dd58d50973272a8698f3196a6a7c00f5272ebe4105e3f9338869a07e603ef16003f7d2268fe6fcdeb349f0941b2e6651aef247921e7b29479af56feda482dfdbd4db93465e60e03b7ac3c6a31131a254a5b99c21418e110c648f3bc0a916eae02becd1a0c78ec87e305dd3d3b2282bfee585c4fb6b94e5fc012d399dafef49bf636b24ab7556e2131ce7b9f58681e4027ad47f009e5357ade8f058cfc23aa88fabfe2600fb3301d059e492208251932d1c21b56cc8d5c184e869be2828a1983a843089ffadbc4a1848ec859aacbe92feb273002d1f33abbe8830be2fe2f3b34eb13316701acbfe827baf898b8804744ac0db46c9e3172eb8354a6f93a020e4db36399b57417183c5cc394ba7ea0eb864acb7e8223b0921d778d1b83c568021d42cb03db81a1d5d0eb4f5e04aa39249f8e5a70dce3b132f925050e3e6dbb349b17c7a1f9c4e40ed9eb887a776f8e36169dda615282c854fcba57b8f904c5776c51388c06da0d3867e299de1f449591a3d10ba6cb235b1eb50362a11e40492fb0afe2cb51e260c1fcae35cc342279d0dc23d5196fbe27de0b8dc9600a3e7afa9d83ecf1d6f2b005de81105e1c1e188df34fc0c4940bbc6257b374736f66822e3e836340d8e5e78885d76324a49e85026be97c091b7dfca035570d202b8dfd20c7dcb66286188486d0fe6cd100e4877fef905b660149a0aa624d846b43f07b4269eb3bb6b63318d0be29ecf566a919a9b9c1d2c56a58b3f4076d8c1dff860109949ea922ea3cc8fbdf69a7cd4e95e88c270efc5e69a914ee3d551bd5494588aafdfb9c8226d3cee2c742e71bb5dcd883752e1726367df9e5b99fee2cd66a7da7f723159c64a9f86f24aefa17ebf580e4c0f704cdb57e6742e23b03f0afb14025dae6f7a8940627be4e86af69c777a985be2ccb536de7bb06c31a1c5e3034a51890498b6f7b51d286714ddd354a4ad210cf1c1529488b24aa9c294380862e76408e4efdeae97480e09e30dd3a061eaf245b31b0dad19d263e07d6418d4554eeefbef7dc831137514d6ff70bfde0b7a647a1dc0f56c5f518e5e3fb255eab4e3fa92cbd9ed8f6747619044a4803fcfe50aa5fd8c8b8138ea798962ac3f2901c0d8875a31a164591b50987587b23d9e2feb9034614b1c405514042a432063779f27b51b40ce0034ce65981780bdf0b203283490d526e52eaeb1701574db36023f852b5da94c9f1a6780ba4bd67cf09a221e474c9842163aa1c66535533296eda22945c0bb75d8570ed83dbec7e22ecc0388f8eb0d00d0229df823e00c86f692be329c431ddb7d68d597bc869472734e294dd4e230029ba0b052ed62a323c37b4a4dcdf9051acf321e73af8e73beae4138871a0ff024c3408b1352afc5cd55d57439d1426c480603f542b76bad6e183111ba9e4626af33aa8da6cd239760814f78f9f4124cb34c7e672b3909519abd2c287e06344eb8f4535ccf192f2732d8ab2cd44e2cb5c5a17b4a766eb770bd653acbb849333e266edbea7c4d235893b9f4c36d692bc557e98c16b83383933c2ecf9daf51b91cb02ee79deaddea1b5ed7357760f825bf520b1f6cdc133ee208b36c4ba39c8ccc9339307ba74321834f78dfc2f799911613e642eef71b8eae20450f1667ec98d22a0b68fd56542d40b487dbd749366f32167c75f86ea0cac8ec8429a9d6cf82dc1e4aef99f297f76816135554ed00edca068f3385b47bd5ebd504d2e504afe9bb345d2faddea8d529fba8cf63b5ed823af85316bcc779f040d26a4a528ed8f8baaee6e2324cdee74b7349480aac211e2023f673d4b9dda789f1b7cf5fd7c24d67dc35a8d62b38b61da9fb8e580446219b1ab02d8deb90bb1979b6f9f6006d211a6c07c515656e981604fe0ee9526cd44b961e9239eaee1a3a00391a612dd39afc2ebf17313abf49664bef6b738b2f17a79ee2b04388aca2e6511bc6c8bceae6215d4af888199a647464498bfa71152c435df7f286f278c2d195ff8fa7424ff3704a3c6ecdc02f81227d9cf2798faaa509759c2b4971be2b7f0effeff2d778c7398bca4123318e08070ea18d2b328a6ee294405801cf57a22a4cc346048509b4e02f0fd09ea00576b4b3f175516a87188dbfee8bbf9c9eef1f1afac8a0c9d04b01138381e39d1969d28edb666d0ef056f83ab446b4116896718c301e7f3f0b23dbd0b8020aad014d53a5ca63966cc24ed58065f2d9aeaffb0606a1d982c989586a03ee6b49f10ed64f85b5c79501a5bf277ce3989bd6a720d90213a80197af38f787129c4c952ba599c471c047d508fa55fbeb112f89b486b7768b5ead2cb47c4a7120d06b23f1401a73aaa3ecbdae65574147579ac83ce1b65bf8280a192121db3ee5f7235ed2d255b55a1e190440c907fab12d0ce95a43aafb3513484f64664c650144900b54e2240119e6c143320152ca3a31f6a735f502efcb8a3af6441952eb30b4c195b1f399fa5aeff1430df0f8a98d1aa1cf9f088c0a5f80207826fb8deff77b7568405260a7cbb374144c62b8f6e3b19959db48fc64f2509a7ed1310ec60f47fe37c0713d2b4d9cebf61402192a67a221c2039c4a578ce7a5fd3cf0f11a1b75fc04ef26e8fbbb92da69e26e1cf484b360a87210445da71e1304edc632c1c82464128bc119deba3cf853f1dc9e75c980d4d6eb7b795d64db6d19a1d40bf3f29d28c125d5b9944b556da9197315df26e06e6a5082805f464c72d1a7a4a709be28f1ef897a7e72e4e729b968c351ab919ab6b20aa660a6ac4e5e3231fb78a81b0e847fb6d862f50e545b07c26cbe929e7ca85317a389dbd5ffcc5a89d987a3792c5a91c36a6dc6fb0d276ebf623fc3e5c19731cfc85bc6d138759a508f952b6592abd3193419c6bd5023d1d7ad265bcd55e86f226cde8afa0015b647f0c49fb48404d2bc230e33b1559cbc9f2619e08dae3a3c1c1f1a63cb44e3991cdb038e8d88bfbabfa72670823f4d8e0e8e402959de6c412a792fe2b4a47961a0b791eb44b53b9eedb21a54c19899014d57d51d67b9877b889bbffe1009bc7e465b79eebec8d4ffd1f465b0cbf341434c30c30cd66575ded1464390b2dea594c7f527c01210ed9360ff20c188f87f955f5fba61e8f95acc281ae41a9c08a897807b7246fa6fa46266e5b7f61b3fcc7d2d19ca1bcc627aedefb40302f57b9ca7d80e12365aa15daa8df6b406066207b0fa6a56f1e6081408b6f6625aef80f4350534fab0b93c2ac64f5631e866c060518082845098cba54149bdcbe1166fc4e86a0a11453a135298f68baabc39755cb09e1c6bce8771c6f767d56a36c0098fbea76df5554ccba8f033556c01c8719244e6a0a4eb7ae542b5d7cc3fc549db38ae059908f41788b73a9909ff64c14c0dea4a76fdd767e5fb671db5cf550da21f592415b83e6ea3c3c2bf9a82d7c2124b9fe27382d3964af52f95e544153c14a64fa7e7116b99f6ba5fcd1de0903b94bea27170e65b8c015d3c333c09447d0dbb6ad2dd0d479dde93fb14c41703fb18b9942ea47937f5777246a760928afb5f7ff841d4e6b642f62eca295290d794617631131f625a35a65c2dcf3b3394d54a1040c5e7f2bf0a31065e87e00d0d55c9ed81156ed7009054a3f42fdce89e3df3dc1c4d5b28d20f3efb69b231a6c5e5c81fe6657ac2c4305f6c12569c0ddfe24f2e3398fb1a965ee79bd703d1fd812d94dcc93c258f5f33a0280f51b647dd34d4f4fe1a572be0cdce4ae9b260acf0e79abb0057d07ccca88a74bd1b1abb829b63b99cefca9ae40a0999107c2c250beca9c0a6f2331950abd6404a923035e5aa0448e3529f37f9ad578c3dcc3d11e22fdfbaff1098097a2d2081fab81c0445bdd8daabc3a5ddb413767715714794024ac676619271dffd60c7e27031dcec4dbb964a29f4b47909dfe8320ee46bc82fc32686ea673405d79af003ae8ba8f3a71c213dca102d11294165e28c85f89f3a43672f627891024b1554288fbaabc88d330f5f2d0709df45b46773484613f665e5a8fa46689cc2e542959d7f6da89922914ea3317f54973dcb566c34e5d45f14450e20f9f98d237cf7c4002ab4108c365864c229e0fc6eb9d6df6aa48ff4170f4b7ef458c74545d9e891e754e3b0d87b2802bf5004fac5f4ab4a9903dd1c8033d7d914642f272a7555579b31bb153cfee201f174fc1d7f5bd6b3471aaadff8be7a8be86d86c087a39ff02d13f26c6903a724ca6de92b478a7cf8d1c141dd4318ad5dd6fe46ea12567f8abf818040b44930a40f6eec435d5b83773b5ad97d5e06cba2cddc32002578de837e6c4bf7d67800f1f0c1b26ed9e67bf61334fe5aec67d7ee3a0b7451ea33441a86dffb2b8fbcf734e239cf67d8a3df547e3bb1586d755c51efdcdd1980398c16df350c2b4056380182b5ce285f3b8f372e338cb3f4a4da8472e9d62b7520d6d78f18c2a4d0d0afa0845d83a2356bd8584a873d1bf1aa00da5ddcd2435d1fdb5eb75a00fa7a27176b048d39a72d693389279b83ac686a20ffead75f087a36edf729fb0a695d41eb23f3fd85db9ba7b7de7f1787df5910566b9b141a6f95019d7ef27891595b87bf9f3e98c9575ebca3c4781224ce3822b03b2f370176f46140a85d65a615fe8f3f69d38d46637779e7cf3eb4421d3658c570def9e02d5530bf6c808ca0670002178a4d2c0f8fa111bfd33c808bade892aedbb155eeff22c087948314d15042207fcc493575fb58e3dec8e03f6f8dd01174df14aa2f2d2eaca215b54dbe74573611c7c09222cea693b13695c0aeb54230661cc67fba50488b202b38dead45c9cfe2370f7908e6a40731f4de71fe90b0bf4c29db99fdbc06635c9ff89be6f0a492d6470d22e2ed254ede8ab8aa30fbb19d9acb57f46d95ac9e91b7309073558ad381b9c47a228f10d6cd881829b865f6f6e7a6770d2237b581e81f263cebc99fdf4fd0bb380dd15740ccfefdefd53667402effc32cc2557a102504901b8cbb0f05bb6e9a9f07114b87631800357b2d5535db1a7e4ac3a78925f6ebbdf8edd114639e938701c36fdaa9ef88226c025037db5af1b95f8e8ab00e0dcef112403813ee794b5837456ae4014eaa5d525c93123b45d61ca28556623e953483b7d2de01d1bdb130fc282d015e459b06fde8da9bc89fe9afc66373718037361175340b1aec1879d78097559e7071814a790677585126dec1817def05ed144a5f3df851fbdebe6a1d43c826218676bd7056a9efbfc0a1471fd3107c8599b199030fe5d7d9bcabb6c6ebe9efc2e673c3665a5c1106554083001709a02d364fa85c49642249dbc6a8145b380ae540cd13a7561f4fa4549774a6d438ec2769636ddb95f7b8e9d69a8a78a25ca74d7a9bc783bc78e18e921db34fca281195336ce10acea1a5377ef3fef26f7646fa922e5068e804d82e068a7a760a4d4d85eb0bae34e031f668d1ec23031a47ae2e0b9bfcf987e890e7d7f5f18bde64981ef2e589ce75dce9f44c62fb97cd5b1d4387327515a103290563249f82ccd7a4c42837165ce95ad178511f1be08c39b5f8d036fef28498309c85d2daa3a89a889f89db050f27ba5503df3abf68d667bba6351901129b7b2cf70a2d81c66f5b36e9497756c54b5348ddda2cb1ef47dd0225e859b56d8690c4ab3294e3ca63f460dff4856dd8aa9c6e3da28cba0dd5d5009caaac75686483a0c377adef7e26374530574c8f13ec189d42efb94771a94365514e0c68cd5b8af88685c946f787667ded67bb8b4adf45e33d5a98962325a17234e1740363e95737df4cea9f7b7bed3ec86ad0e9a29aabc31519bff0cdfd79d1faf6690348c73c28a4f0bf70464a148ee8c18657e98e49e3527d94d3a9035e08111e935395f3b4318309a8dc1385ba30347f76f59f2c1def360ecb336e87e33b4722e86d3ab0cc8ca1278f1fc5f8b2e4474a7dab0c6498bf509cab0c53d55a9ed733c92473676d551b449a267fa8d38c2b9329b0fb68b1d49b3cf9a861a72a159dc1e5a701dfc694199a0e68d9ea62a191e67fe83f60da2a1f3cf8a50bdf918ee1608b2514feebf01894f0bd2d3fa6ac68f7fee6cd18b318fe32eec569a9da1bcaf017b68108f039c0ecf88ba975c93ad5b5c36ad240453cda00e4400d68e2a5dda2c113a78893750f8b1c044d8e4c6efb84bc3b1e11721ddca8b0139cc40050dec92111ef2b7c16dda294591fd5d30ad3c6227968eb84c42070a69b48cfbcf3fe085d9bfbd3a5add8a9bdc2a5e7ef35e6563de18c32657c37f90ecfd573e30abd490615f6ede5628a543b35dc7f21a37133a17ffb0409dfe6136837524f286498af8556b6cd28c8e08eb6c90fa384d5b090104fe94200e7f5d9fd1511e6c086be8cb8ea873af42e958ab0855294a52de6f9bf23d470ba73c2988358b2440e2af788449bd12ceecae7cc3c8f38015b41353ddaf11b1ae0e1efd62062348e358b1e936c6a02dedad681d7c908699ca03382344f78a50b0e9a116049d92511e07338c532a227b28d64f2d1c6a5705f48d6f343ff12ab78bc24f365ef44d3950a9f0d7f6ca73093fda965ded2619ca6187cc3f08020c09c19ef1224ff52daf801e80e6c9406ab5297d16a5504bbde0e3fc64de0b6b8882539be0237cbf469542894af572e7e8b40126b5c0e2b81eb3d40f8014e2808fee972ae0863e81268366ba52e795aac70c379ce3adb0c874a4734989c2d677913053cd1c1ca0b0b9427d4f5ac26442581a17a4f72f7cc786880f0fc833020928bd2861e4bb67b719532a2ffa31c041930ea335024e1006e4270181d091f171681e595e97ba35645b66464d6e01e897df6bb647fcd4a5eff8be754e426ddf901972d09e2379b0b20ae3d1e027a4bb6759887d69cad157d8b57e0948b13b7c1fdfe9848812d7c0bc6164b775b4b18a5677113ca4a418a875a00b32bb82d3464ec94a25b5d5badee670395e842b6175b4ef86635fe5c0133395fd78e021f274429e6e1771868b6d995ee20c791f145d20c9baf9401fa3b7d4316286e62cb76b38a1c2c6abbdb728199d991b5502ca648994554f449fe2041adf3afb632326c84c91c94233832fa05075c6f65309ab01b0e85306812d5f8552b3fa1b3aaea8f72d18982d5594e9c49c8d88f13dde809b885983685cf441b016f40a4b32d0896038e759fa3e6b5c85ee2333e852d837bd2150090e1ff374ce96d14753e02d791abf4fc87bb781087ad38accb2f60962d5ef59ddd3284626ef3112818293220c378339b9c20b43eca137198f67892bb886a0c04a223ddc4bec46c9fe9360873a9a9bf8904c49020e2ff2246a6d154f9388d77d6f83a1e51a7f71e0f56a8ee8df624faac7811f13f7626fd07f5ebd53711777e8c18908678f64a52e149def643ce3a46e6c8402d5347b096ca6ba134374f555cb870683dfe791d914fbccf2997429a70aa04e6919d6ade2ebe869c61de2fa84ef5d90f1dd2679351cbfd473ce1018a43d192141cff335527b050f4820a5368686b259b0b7945df2dd68c097057c0ee559a041f04623703687ef296133cb9e174b4a57774f3bb8629173983dc28721a47f940982b30307beb04d0ad30f075173a1bcb6a8006bacd1f850fccd0ae7e33f2f6644d6c6b52f7afaf99176972e63277af4a48750378c2c0ae58c73acb3beefc51bdeed675ef6cb2982c78009bc43e73cb36411fcf66ca89c092706d4e7d97adecde1ae8ba79afec6ab38d7024daaf88a0ab57256c2cbd5980aee32d2e394b37d2ac8b9293dfca05eea2c9eae24181e3be38753b1fc41d4a42826ab47ec8eb968f3152a205217f0a6eaa76a26a7e8208b780873b5c649980a17df6305aa3f44017f4a5c9a199164f4093cc2c4e0f15c25daf14d27871275a2816e30a4a91f788a351e13384d54b5f8dbacd217feb4ef426b35c9906b655ce082ba4136d86008c7151196c3ab3de11fa5618b35d21e6de564f11aaee19986be2a54547c0c37a7773049a3be73d811ffe3a7826d53d83bdd50b76b491b9a7424ff6197b77eb0065f2bc14e6feb2a6931c2c550b81a27fb138f22ea6591f77d95785a9688491eec16c1c6285fdc920cafa6dc4acfe65d945cd4be4a387e0f5d66838eaf4aed0c18303ec9457013b2fe22a69bc78a1addd9dca83eee6f623f6b75ff83e102cfcc04cd047801c5e16a9a040bc257003aa3d5fee40128c17e297f654320f947b68abd250a3197b89cecc041d5719cdd726d29ba3bec5e765b099fa796a26a8150f84f2958bfe90f1cd00c173652a5a70f6822f0ae8b020b4318f933b46e5f79ab849abf8c69145b3e449c4b148200da036f6287158f8e78c601d4ae4fa7c285bc24790458509f39654a44668b5ae65b65de40ee9d8c16eb376869da8c98567bdbab9233011d71d4f4023f9a69012b65eff244ad451814082d79dca282f21c3545b448e2e2ffd769d509a719b1cbdfb77eba5bbd602a71cf0392bec5bfd39bb999178c93e7fe4339f5e251341970ce069694ab6716d6086457f4d312c2a3c9ee5cf797a712948c75c576db298b09387cdc42278fe24f18b68e8a0a8882bda95c7555d527fa9bdb25bb9ef4dda7e981979a89426615445a1f4fbcd416e5e9e3b5b13c69f547949706cfc146ae403bba033e606abd527dc67d04535ab54aaae0bc40792f6f372ae78cfe807e81db741e9cdbb1224910db2f3f5c6e317a005334a336e123ba1d19a828cb734fc7339b0d8fa6adeb781b983a1dcc8891e5ccf562300b2d7c75dc58f3c1b9f48289b75310737aa750ba14e164fe098c3227671c47d41c60f4c9709c8838d2fd63de0ac7e02c5588c24decba1b8e8ff54924fe52a54827c10f726520bb5c23151a0583539cb8d9ce1f256d3916a31d0b583db082b68cd362508f5ec9b9723d49c534ab0f8943cc1f0c9eb1057178371fb757141cb3d4263ca7de90924cd2b63d6dafc11c19879866794ca8344413a3e51e7bb011a97e0dd19e24444c619ea64715fa39c91501cb850474976dadebecd78d6783a2263dd76a027858aa01e12b9a873338831c789897074194608815e2a94ae47cf4836fbae00368bfa28c91e582a9631a9bd73655be834c0b8d4fb218ceef2c007fd50e4df021d9fc1b4d2c7ab66a45edd59c8bfb8444783c58df6a650ab3cd6845d1ad0c2651daabebc78b13ada17df3cf5b65a9cfdebaba73150d641c5b7480e130c9d85529a2f9245ba5dd0e6769242f065a215c6d05ed93862ef46d95b70a5e5a0d74a3195a27b708a48a30c2aea9a5dbfd4ad22c079176c4e2b8d99d9a39e15945091be55b0a5c869dcd9fb88262c44336ac6459353539ee28977f6a9f3627765ea3d9e90b8ed6ecc6e2bf1228619d1f1ef700f027bdff84b13da9cd8d9fcce94ab1c5f4882e81a09f037667826d36bd247c10350ee1eabe0299be3fb203698b9589d7a3007e2c4d02f4e540b980cbd64bb2c822b8ac5ed2ce5d4a433b67796e27e1f19895a24d0f6d783e6ccf4ae147ccb30b2174fd98f384810e9588c41ac717574aff6ad47c241bd995c6c2ab2762f4bcd8a8ca0998fec2c1289ab386949a5deb612597e143bdbb64d618413d2c0cc6b04cb5f3d75007531a47be540fb306e2808d2d75ac3ccaaaeabad43ec7dc13b6963224bcc2354acd51ecb38d32f229c15e0e170caa7fde9141dbc4c4cbd95ef117246873fb0c37cc6cc4c8acb877f67eb3baa10765628140c1c8011af998e2b7013a2e64051790dd3609c051dedd79940d36ce0dfa85895cc83abe07ba578eb0c64cd94c3785d700bff6e4d8d5cd6301e1b9fc119a355b44364bbc54a6dd9094fdc4f4463e408590da4f47f5416ad57c086eeca40c15241ef2c27dbe0e0fa433e0fb008f98febee89ef253cfbb89c3773d511d272a1f6e98637681a6734f489ecd2b3ba819ab8cfbe67c3bb14fc17562a0b156315ff4a351f7b11f620cb41936c6f0426a6a1bc347d100d946fe3eec8d3635547d307960359fb6d79b4506a97ff058bfa085161f5542c90abb3d7436916672db16b0c4a35f5146207d3a9682d4188565073bab4aed612eaf88759004527d18bca30a5f473f85400d6840dd4c7f29d90297aed6c6c6187ab7a981cbfdae2ba87c1ffacf4bc2b94e5ce05df0285fb7bc6c4ad77af33b96dc02eb3380a55104bcb57d547dd94feda0bae3cbc2beea77eb77bc01a5aff5d070f38fcf16d95c01e15d447cd90e3528ba555979389f4ec45559424c244c26fb50ef1c8dbf3084fcfe8755ede1f5f2f14c09718a08e66d1c9112702b70ca0e13bb3f141bfdcc97375156ceb3ed3a8dd627bcc2d36f45bfa1d8cb46e6dea10d584500ad1aff5ab7d6ee2317f0cb7e92e931bebe61b3e55b999d3da7192c8563cc2210109ccc592e60e326ff5a325e183d773988f172c218efa78b04334fe22fb6773773ad3eea7242d70c04bb7b884e6d4508a377cb6f2eafc633bef8a116e421bef27ec7cab3df4c4854b470b67f9d165882f6984971c68d10f2f9005791915e3a96c75b1da88831526471eb02dc7e591513872fac8cc05fb4bc5035405e047e7fbbc64f84aff90c07a5b432422c5e5adaaaf0cb76c2259f59392459e5d290d8032bae7b2988c5d6571a615d14cedac3575d1c3054d609ea104efc7eea57d889c5b3a12b1d628af18c43991b2757b441febee3d248910f83d4afde8cc6888eeffea261a0300279a04e41072ed46984067bd3545db5275fd098902cbec923752debcd338fa0757a8c3d8483ea0f0f2a46449f112f296da1dcecce342574845aab9a5fe5a08fa0c7411b868cbaa7ef73ba35aed6dc04c07dd42a4953241ca2e393d7dc13f0503125ae824f109bd00628203d218caaecd62b8a383628f2e4cc4f551a10888f82c2fda930cc9ea005a800b8161565120bdae5f5d7a52c1b05a331238ecf5103f8354369dc2f3a6c36f297c91974794523726aaf878aabff5cf84d7625cf7fc47492570aa0eda0bb450a841a1585f6a573b74976f3eef0525daa6e87bef0c2be36ee3c0cf1031bd9d7b617793bc97a47682a6babf438539a3d9afcd757c408d25030f3d4289f8a297137543820fb71781d2016d6229c94b48247a1a8542a1d54d5b2392a9d54be9fe4709aaac3404e35b24cc920f41dfd50d5c40581d149af8ed00fe2ba4878c94612c992abafe24bb16a5559d76dcd7770280102ad084daa3c13a38093034f75bcf54b9416241a05d3a29421ed6410f0ed2f9f34bdc695ae0fcd8a8eab4b1fb4b104f48c4c53c87bb590798d7a4e2826f226d50802ef5b9c2af73000589d625d6cdd2f0eb3ae286726d72de436a050347fe60ea51410e88ca88ea7ead85b99604645ffa93543d08329e86a0b00c11808e74b4c1a4d08dc4b149f6111ca49830a2c77413ebd258c5c7437a9e95989db2552ef75714fba3b5eef1c131db391beee21c20e25beeff082f23c132be95376263c2a22e17ad127e92d90c1cb7b5e0f86ba773782ab4bad764247e66ff99da181f46d848b76967c56b88e4fa1ed03d297a02a420f8091f18a351e2b56f8378d611eea80a1b0d3c669ec060d7f3ab75913113d83d838737ef15375f063f705a26e32831eadd4c94094195a161077d73d1460bf275754b92cb3572e71922c508bbcfa18d1125834c9ba05478c271ac6d76a719e4d355a0f00c6af6bd01d73a3e943181d568ef25d064d67a4ee04814f73283e2283d254e016a1fd725548c841519e7e791d8d1c4527816deb23f26ba3f35c54bc47504d4309a7985f51f3ce22760cf3c678cd97d0f4c33792f7d57cddee6956266887d8f7887f0ca5184b4b84a72895d30a97e41325f159361925be1d820d79d04fc8897254019561ba46aa0afd0952793136cda322b45d97e6121b31608d07a0a9b179f9ce9da8805f677771d7066dc46321dafab9853f618a02e4c9dc38dcfde9b9c6d0cf576bad7bf6e7cb96b7006abe54dded5e17efc639004d48f6ceec349c4110777a2f38153afd4d55a854748e38fd6730fca0d2ec9a79ee12a033bb208d25fef131951efacf52a6d14d0d0adc3a8250e97e7242239e83437fcf45e32b2dd1b72af9e560159f6a0e7ec07e55e992593357905e09f153bb2d4a0d96929ec3c26a5ad22bf4c951fe49919105beeffcd6ef842f10eaed893670a08d33093d4d4cc686ef5c04275b4b3b4c6a3dffd1bd55270e1d21196d380833b710c41e36201d820ec61c71ba845e709a8da5a87207b0c3f34ad3bdf70a9483f40da1bb61afc9d64557924b3374d39542bd0a9e5a21f56d80c2a375978d4bcfa7ebc25dcf06180023403f5ad45281fca6640997af8fb4153db289d0f0c8766d5245d995a4db50c1fa61e398b600c91d162bb59f7ab2016ef59598d32d57591480820d8a4b4936dd4c3661b5db7d9c0fab4f35953e97886eccaae878b83b5c602f409376f1958a9fa01f47921073e213be70efaedef6a9d260211d29c507e452ca4e58255598425271491ac69f048c0ae5a0acf2d499999701c09b49ad1522cdae46dc79e59898c92ae9bf1cd4588efa83ebfebab89ce782f2e68dab19e57e1a47f575e82fc835d835f269134b7cf48dedaa0f39154fb29ac0280f19fde13265b22413fc9ea491d8148f3c5d178e69911352e9ef8fa6fba8a6e881ce5e20423dfd7fcdd288e9772790f17960b35dee79c78b41375f8042be01b1defcf4d65618ea95859c8de15ea6f24b62b8c3e4e8da8ad1c2bb102b8dadd533f7488fa2e5cd493c131f4636d93956051eb3a9465fefefdbd6fa9ff2878d6127124951dc9d18e4d580354297f74b007bf8d3e53ffb168a8efdc9dca83739c470f90cbd8c6719f03c354d57d2df47cee0e9504a2f66516e41cecf216405d0b04e90938dc517d51c54e6e63e373820b212ef94fd22a9c6438adb075bee953633764b51616c93b42980ac17856047ca3e69f6bd4c937f3fe4e6d3425c9ef490845371af34c04f010f8c950ac7bbd1be44e3381e4eb5f6ab8ceb63a2879516ccefe0dc8bac23ff6db6b9a37d416bcf7a7e36afbe538f469b9dd69021c49ba017c6c519b430f6bf8d43013c40af5a0eff4c99f2d72d398dc6ebab7c08c413276463af146fd6855257ecc0a4b977a1b551845741583df2f785a039c7789bc1d4ec421647f51a64b2a9615f5c632d8c68fb47848f6456f7f057aaa809e4a65d82a823e139f26da7eec2c7a2bd4a5ce77888f75a84d172421c5fbd7a3c95c12dced93c9876088ce343c73ebe9d90a865310b2b2105aa349e48e1e3173225cc1eb081821a834aa9e24940fb574eec3c3bc298bf9b76ad38b7fdc99e4db20483185ce7f90650c16b697e98ee09b4268948c3c8f3682ece3815fb2396612df7a48501171e4c96ebb58f95a0ff1ef09c506e903994d1a5b2fe25cfa4d9996f93694a1c60548ffc374178bf0cd38e72c108e5fd0c38e3df3526c4a820b15c38c647a398d4705e818a087182f4237a279887b103668de51ce5afe3a811fd491a4f0ca600cb4a5d93bd82c6df55aca9d93d029108efb57c6584634e451727f09341405f476061e1741cadd3388e9dd1d15c5bf66556b30ab089029ac072a2fee284dfc58af28fad04e8e518d1e3a89b30b8c1f297cae32163a04ac2568afc17ae545fff52a5d2bfc9d69663d9fe97b97fa69e234d828e1ac026c81081687da543c004ae6adf1a632c8faf50a76975827c8fd4ff3337801d51ae783c9f3a584ed62c8b4369cb33f71a2ef0b31b1545dc2c724d1ef4a5b735ce7e3deb66d36bf4d1cf1a926dd9b620f5c503ae41d54c74e55fd94f3b0e223b0d121effb52893581e368f15543c10537cd86a7bdfe4ec8706fd5ca627b667a878985a59c7d485c8e6bf0dafe96b93e6b4df3546095b08c0da0550c3a068c8ad39734efd54954878481feccc38a09f2c17c98f84c5bcfde031c48b0764ef0713bab922bde5cc2d691bdde638145cd4332c7418ae796a2f51079d697ea09e6aba62b550da5f016600e4d4a70670e1552eb6360f52252e1cb8c285319e00c9c1d68365f443fd5d20afddb59c5ceeb621acd0574dd868b407386785d837e94a882624fcee5ce92f3b4ef9831d114327731b09941077f40b3304543c0f3086fd0ec60c62d9732368840f9c15e355b6c337414c9e95274329a5550f5aa0dbf643b96ac7afc656bc1e8a26e697cdeb1bdc939ba99982a374658300f3261f198d8349196db3d6ac280dfb8a4a09fb98090a77e0599e21b5b0fbf92b78f9e5819ba43da9137298ff2c1197764bbf2ddbf4a8400a2a396b64bd8cb4ee4dc1644cc0953ba760a03c9edbadaf8041df8210255674a468ebe0ca589be6d15c7fbfb9f3c68d68482998c4378738792de6789014757e4ab7a937987611e47c57c9bc28e2acaf6148acf6af54e96765b723466ff0ae888aae5bd291b8b9490b7f4904284340ea117cfabc8b3242e73fa73b7fe5636c5e9e165e0c9758c5b5cfcf3cad21f0810016c49cdb5f2ea3935e56a30d96c15d61ac930354f441471085e1f31c7a76edeb33d74b116b9543ce9fd229762ceaf58d82080d150f47b963306455353cc20ca9717d76fd92cffc5cc1ae6c6f0d05ea8ffd9e3773b437764535495bd3ac47e6138965bf02d49fcbda82c55fc8133db9e68d59acd4941b3ece5e56939d5fc387d44afd7ef9da2c53b87587ca9e9338201a8d4d8d3cb6fbb622df169f22a741825bc2753cb232df5bcc9cc5c9e51df1a2fe542a6f75e774e58b87dcb3477a9f6bee2ca43a48afa54b743d4d4b3cbee4060a4b7dda0b7ec4b91fbbc91a0729205cc415c1e84301dcb34484139413ad57d8b75137cb18e91f80f9ddaab07e7a047132291f6e8d9ae2c549df21bb25b082e7fd515432dce2ee6f0243bc694e0e494ce890d3262f4f72d6d72fee2d3ca317c5d0ce2975274bef1f4ada57ca461bd3913cebf11fe85bd9e1eb354c2846e37a4ab8b4cdec97f4600aef21ec6b67e55b6b892f6e9c8ebc9a041cd7af41bf956d1274d73a62a1ee1613971b8c7b2d855c069911ef9342fc5b0018230adf6506aafaafcf549a6816b3fb7748de3b32da141222b6db2f70e9a8bdb93725bd419520a7c82ab1c86df85fedefed2e8219c3894754cab74fa2d7d7c4a566056cfaee18ff9f1e1814074d14f3ad24f037d0f4ffdb74507104255944c37b3e80ce7d8978ad8133031bab99ca7e6a7400db1a0b0a0d8bb39b17789a290d9759ec9cf69ed4a11796fc6d0bc11ee22ffea6fd73acb99e1cf4b38091c9a0175f1487e21221c38e6e03a610ff8b72d7327752c33adbe453faff71f0ef32abfc278def7e9a5e136b0a815afb3c7511f93a76ce6731ceb9751c87db487dfebafaa28fe0a4555534f30a53d29ce641cb499bd5d0b84bea0c508fdf442041b6e0f3de4d255c43ea132560e2ec53e23024abba2b7795cdb7e5b76fcaac41e3009fedd8089f0220822fc40e85c8f505cb88662c9c8a76b9ecd07ef72be82bfe3969929c0a14c63bb463d7845a9c4a119eeaa7588326e38ee666ff9908e39041d2fcb1f4936a2aa111462afead5c8e786ccafeb4beacfa582d47963059d4d764a118bbab9fe4878b3a79ccf8900ef4fe9bfbde8c93c8ed0cda82253788a29ae99390475c9deb882dbc788fb99fd31e21ed5b215a769f8238fa109118aade28ae5e5f8ed185fdacc770cf8ce02123a64fc55183ad343591004b71428bc2ac04502223eff7ea56c80e5c889c0df95999f9952222a743778a6fe512a7fda8a7645e28656c5de50783e23defdf940fc7f7662a1a05ff3459ec13b66db0125e4fb25c24282c42013cd95355633943399e3463e60a919d94eacfeed9fe522ee4d80f95a27bf7388d9f99fb0d14d032b8c7bab73fe615c4b0545bb23a810712ed46cbba8e3ebd57ecf6e7a091fc90afd7566576fc0b40c50e3d4f5004cd4b89ee8aee5cfccd0ff8cd2eba2f7858a72b4f8e05140076a54d8e1f7bd8cdc12026700eb3289b18a4076d665fff0f1909445fbde052b1153e3c7dd146a78f808b0da46c07fc8072d6e838b7f468f897edd4daec2dfd428fe60a1e8528e4c00314d49c540ec8339023e389c7eead08e14d1e8e47996f69fedec66253315036d54a6ab2849f431d43ac234388942ebd726af8b565c6f346974999de8781649c3a3d19e88fc36dd2ecb94d84d781f0a44147187927c8ea98c5afdf2fa9cec0a6b2028f65a63ae0d821329bcc242675892029649596a6c76fe37ed4647ee1e94e0633fb54eaf5f1d39f288d319d45e04a6c1d58b35bdfd9fbbf84c71c201958bc826c3bb8f29da9438e4a2c8bd8776eaaff727a11b0e2e738f677e6677ae6d5af29cf1707fe0b803ffc70d9b77aa73b7d003ae07958949982826d95a7824f2e8cc7818fa8fecef2d6b014ae59be9559010dcec1b322ceb25b1d6457f1ca6d2b56e72b35991ba8e601afd46caf6855364fad471fe392dd1df2a0bb46b60aede4458e7a9bd07711da4a41f2016b38cd5221b2067588ea01c62926b71db1aa925ec3819fd13713b3e79cfcd493a77b3a496c572c801277ee413895ffce5c60b176e89bcfef4260ec98dfec8423611bab238196221334224d4e1b1d21ae756bb424e25bc4b37fb94f884a0930bd0f158502b41013fa6f923c1874640b2847169807cb703a2dab3a23d49a21ab38480dfd12c1606def8cc6ca57914d920bc8af6e44d976737a20a1e26094b0eb898460a1d5696e64a0e3fa7c3ab2d6ee61c754ddb4f97fb494b2bfbceb786389a175d9d0b404956fc1b8d3cb1dccf63cd7ab839e65324ac52c43c212ed5eb144dd80fe3debf80ac932153ca4195d56fbb287a4ff6466377597a8f5fb4a92907e084bba70ba60fdf134ce24e65a156b9060836561e1543314cab408c2db6833bdec72fd44f14b402aadaf53e74d61ccc287e009ba97edb5f8666fc365b834b92b72ddd96ac25c49fc79fabef0981e8e3eb51790149254f9f8d9d401185f3eeb17503582e5eab867b1d7a885bce6050e1493d2e10c362f4cf484ac57c0a5f070724d808a8d2889d1d9d42a71fd8093e738b1c41654a314224bfc4723797ca0615311ecc08c00812cc7d68c11d7ba78b102dea43131623b2563533dfd11809abd748334f8e3d528ac112e3af1632be0beae0ec9a4fd61be1524796e638a5c6023b2bc4527e64fe4bd13bbcd112eb80e5eddd7265aa64713b47da4ef359bff3f099087fb53bc10ef7f6da2a2dfb76f2bf51276baf02e0c8c4dded09e1c309baedeb57020d9e0bbc9ed8111170ef43338ed3666965f29ebfdc2bd4a7e34e67711bc69670ebaa34cd1c1f612b35ace348592158e1d3542a1e70a114c24749097deb21cee92e0a7bcfa883873a509a03a29f1dff42937b6fab041daa8d10eb5273f63e0daf85365faec4af5b4480abcc0483ba80b223fd7b1dd53978b01be0fc49d37eaa759b2a82ff375a115a216e6df3576e7853ecb8a9d4d2fce4184410d89ca891454987710588173f3a10ccdd708b302fbc182e4c92fe4318718779652f69e005ed3a7e791274567665a82b7bb8ee213a1c129a72244313dd148ab5d34a14ba8690fffc3f140fd1fb9673570b301ad4f7fb289f1373ef56f3cf44daa3db7b9a2fa775c4e4dbc902e6f5f6b975459a8a29d06b07b3c789a075e31e3f9ae50aad07d233b7d94fd206d5098cc1a27efc9c8e71c38e07c01fe544f28e666f7927d7f807f9bb00adb0ffde68e996227496d2bac791eedd5ac21012c3fa03f40a3cbfa339101a8c71334e8015a785546b4797c228f92e9376fa1179756090be46839dcefc5caf43616b61e342fccc7e8aeb0e5df15095c280e066e3516c3adf01f3317ac533da696164f8055f7c8d765236fba61f51042431e4f082f4981d1a9bb76098929f3767c75e4fc01f3b4eb8b726b5988bcac99b4514e0cb24a71e90319984c487082554f76b99d156f0a841b4e3a5317aa3292be16aeae6f82722e2a01e99fce9a85bccb45b17536896bd74863a4f93645f5b83586bd451bf131b6fdfb6e05a80665f07f505b0c4a049a3a3bd51633f38536fc04a25b57f0cc7a588ef2d017812c84e34fe9c3d4fd2ce5aa9187b8ccbc8d276da9e39b082a2e4e6ea3a166b2ad60b433f23f43a63dcebf6ddb38ee8ce6eff63fb41afece8ccb939638dcd33fa2230f6e75a7c4fabf35709c1d6d57f72a8a2fa74c9b53a4d8c67594fb9dd96679029a88b62c40eb78480c9f4f288e0a22ede9cda9bcab475a89b90bcfed46587107564be97c608024a7330edf78333fd15492629ba7e1465eb0a757499033b46dba9c34171c8ff2c2e2392f2dd212b7183145da0275a5a5b50955f9368aeed771b1ec3e9aebe0e115c1b2420e3766da423e04d3539c1af835a05e2213734a6928b187d0a3009d63259192294a348598792d46c11ab265b036d86ab19497311f615d8407b4ca5700bc8f54791eab88204edda2637276c32f159c018e1eecab1a8d793587268adc62ea5bd9f3bb6bad2d35229e4d8e3303e5b4988db14ccfc09e43b908e6a5165f85827bef7bc59f7ff2061fd338346c7e63f88998536d9cde98bd203fddaef5af9f9aefb70bd40419457e2d02b23ddae7e64a97949f040eb23658f5206618c16cf60fd958e6f6f6fbedbc56c32517bd8b2917c0c412477097b9183e8f0288dd66f0fe2cb03a2b4b55e2c45bdf464378dbcb50581621a1a30fd321d41489fb80ba844c79f8b0e8f9aec1ff4d9146d7815ecdeb94fd0731efe2183f03d9ee4009502920b991e995995d26b9b7325dfca062c06028a7c649a3db8a5fba15b47ba2c1e6643960c70fa93237a25414b0717c05732cef100bef8b42b7144cf3c9a43ddf1b478d737c26aa3d704e5a85b7067971c151acdb835f3387c613bfeb0206d74ac8bd92e7b3200ca6c7b5504be622e86726d4d5e76e86f4bd99b7ae1761c00ce7eafd8631e035e6e72ab37a0c7a3e8672683e710f6d89dddd327ebb06e04705129e022b4ba91182fdcf89ce6e0a684956731c008f9b3c62e8d0898b05aae2a5e6200cf86db254b63ffd5a7eeda2c17fa1067f7cefb3acde6485205bf3022d19fee91c645073151107baaf10a7f1ff3d6f637d65837b96e9d98b2c1d099597a56b357b3617ad5bd25751f408a65bec1dba8caedbc81bed762e57bc2b3436e4d3ec3c33ec6c17a3b622aff81f6695e54cd8feafcd421558ca1c1c8188e6aeabe5876e942c713e5d91e467710c98b45beafafba3349b5eb139219b51ad7e85d89b1283b14d722e6fb7aea976db658e55b6caacad6020ea87bf8e0fa7eca8532c4d5b4be0e8a276b039e26c03d9b99bed0f7c5d7755ef3b9d5db37421625cb5b84cee673e7f3d406eef27fa78084a8bcf43f410ae365df3694f36c50173557366a0b1e4292ec8b3e9506f421a2d6a1fbd2ada7c83c4712a960c1a74adde2f257007d1dec4736aaad521fe949162e6f30d18ac422be88456821b0c22305f8229e750b4f0760387b5dcebdaf66945684e291835e3605051e5c0b3ec7cb6d99d7c2d02fa1c6baa0bdb1a491cbe91ab282a0e7ffb7adf1d0e2a9830b84a131fd2a87b4db056124429019ffee61adeecef45cec682cfe89f614e82533cdc3d3c5ac55c5846929dbe65e8f1e624e789bba6190ebe7a96c1203fe3af564387ce5a523b30d2ef7f842f3abf87ac3e6dad8cf93e8806362933c2015e80cf1e53833159d2aada74ad02f8aece4f5462d5ca90d0068ae301080b6a56460c61bcb5bf04bf585238a8d296f9a77b29982090453c9eab765839aa9bbec6199f3eae1a0937641504dffd7884dad2dc69116b64e55fc6ce40972d193633f7f1357ed1f08969a91370c6fb03525a697159333dbe58d19fb5f3be3dbdb724eaca033b7c268f2c134498107f5d4bb63919b4157a7aaca3d2082ceab795fb05dadeef875d4f0d40835e54800f2eff1da74a2d0fc9b3d6ef14af9d8d5dcd629c7ced1332792a1864296dd13fbb96c13794a7e61f7b032f2d88ba8c26a53e524cc16c3e53e9e16ab98de90ef734d728b5697ef92bc340f119394651391304b4755c9172b44f29e3b1565f5d322e288ef7aa78f305cb07be33848fdb9f44a275e0b1d5670021530491ac9ae818285794c4cab453496f391ac0608d2c2884b20639f02507c63390727c5c822a73345e9c0a32cd1005ac33ec64d4c5d8820536dd9c6f20f04a3dd0791c1de0720161474eb5aada103604ba015111288a811fe3f236a5e9f52d262586cc96836422c7281492a054b2116e6489f4004080a51fcf43ec3deb9dd9601eac5b115f77c979eb9d44eacd45208ef298493d2e0afe90d050183276a3c6ab4c205de97677c5cbdc5d4b0cf18e274b10a6acba6d0f5710d79f59e4a7748ee901bd082fbf0457a8be0c1428cb47e504f01045a49687b7073f396e9d22b4cdf86b81ab104d1217f828232009699a99f79d95fd2cfc0230ebd82b20f721b9d6b55c0ea8f293682d4c9362390206aa619617d90c57391ff9d0f4074208340e34906c2a0757c021d7494b4db68c900a62e600e50df47e16e27e4460bb6368f2fa5da83f98f6a42d3d90f1aacedb1443c12449a5a85fbb2f0f47cf51a53c16d7ed56a6dca1ad18d19a12d40400d6b15372412f68cab68249084e84f7764173e36e61b132221e1623b420a22b82261929cff8dd646e8df454171431f241001572421bb5979f29688f9c9783b2cb583f2a03964630f664bad7f65bc3e8fee51e922148b80789a43055cdf491702630cdaf45a8f8481265a06bd0c8c603ea2a4f851c90fe9e26e520088c450f0054ad1785e434748d3a19383d8bcdff6eef3d5543cdb75d1f1a10ce10a12c7c404274e06b1e30dbc2b6346b906ac7dedb2781dcf559bced706f4425295e78dbd6cf83e497cd46f610379fe239fc5d470065697e7b477dfe1c3d09a6e2f40207a6a0714b32e2423883fc4bac215782d115ce525fe71bde28cfd49eb31f1dd7f65d029c5dd7ac94ca8a919d98c7a9a73a588c9c9100d18964de831500980bd340eae0038418f9cab47b12585ebb180f378987dd7ac016c246bde34bce58b843e4ffcac078f9f703e00c0664b224ed40346e32445fd665e4f186ba368a3e7532aa940641bb73faa00edbc5e3263b130de7506773e725e28ec8796b14017fd45e0065b5c7cff2fbc6dfe8765dd3cee8acb07c546eed430d8faa76f76d5522df1e3a6f09db8dd8fc759d1692fb7dbe5be0ffc478651dfb48045d848d07a5829b9f8f778994c5f82c41e3adfc253c815820d4fbaf76ffcb2960c24eab2239d0e33f09836505d01be6f122dbb0f546a08840727d4fb2cf67992eb2a1cdb3038f8cffc15edb20337e769fab2ef6440e3a611a2ba452f72134c9cf93f0b06d1e16db3c9118abde5d52bb051f1b2a5e6b80811bce549778afcef48d5ad021c4fa124c3a39849b87a53b8b24307b188b323761d102702afdd382f4b8247c5d48f401aa26adb90e5e19d2f0711d09e40649394fcc4d62a42d31d59fb18a52020101b773a1de92a6147623352998e57e14d3f4bf73f6979580a6fbff0e9e53909f4ddd92f5c72ef9c47e30ba80b114b33b04e9eba55c0103984c605247b4a779b5ad6d628415705558456ca5d0f5fdbaee992ebe3c8e93f2216b23db865b17c34aea37051be67f979478405af414ed691a0fed12d215c9078e7096879e4391347823600c2c97470d3fa289c4705694e46225e3455d0d1d302acbc0603478a819e7abde6d2777f76a075c1873299f86e90e77e2108478935f7823dbcd9f04129258fffdca6a8582cf2ce63182aefdbca9e3624fbab8cb2e5dcfdfd6a61bfd287296b7dd06841c1ed90e370c566d89103173c9a4937f4e789f9809d31638f469b36fadf12cc080c7c91c8f58254ee0c45e9fc1efc775b8fe38bda4aa4eb616f774a2c581a740d2bdbbd4d8b35388b5fc6d53a0517af301d2d4134a65073883188cd54329c610cf01e6c4a0339cb7b33f0eb66d813463e208c3e15dc2d46cf6b6a403e05894f526ddf0c03de00b7c6bfa0b562847a5a8df3915c18bb447a78fe0f1f944d2fff1df595abdd537cc2e27fd88130501af302303cb7d49e2e00345476ecc102f4fb96fc6ea0248a9bd7543fcc4c73021c68482860ebc0227d38b99c2ac61ea59e889bb3739aca919e2bf1b0f76ed76ac9f7b4ae88079371096fd4aca3878c112672a2503409fed6297f4b032b1cb96bc2f6165d296bb47614825f8fe86c7d86c03032945017585cfa1dfefc662e5fe00f8af65f204fdde90e2ee33a1751ecc4e488dd65c3b0145a10624e40e57af1c37a635d8773c2cf249399c14175da15ef61994996b2d6c968db6bf33b3d2ce6cb902bd0198f74c0be8cfc8116cb0897f720cfe5fda6b10193b086af641bb62feee2e97d50dd60e2e027b25efcc2d099e250a1c25d3c48e19c802575ba74f192ad4339e839409ebf8dcd215850c9f3217494ab650c634caed45782997bb7014d47de08a756e129bc6f2759973202a0a4367975125e5eabd2335f01d43b479dead8ef8b7f4df8bfa7b721b2b2fa3311f68e0e566aea95d5f9e1362b8adaea8f193c2b2acfab108a65ebe757f6252c551a7683a873c4b6ffe2fcabf7e9c29179450658708e0b1ffe8c8eee44d5391a2a5c385e0a5824ca2d5fd3b508aa58b420ac4da4eaab631c8cccf4cf98cd3e4c4448414f102d5ed5dbcfcbbd9f996992462b016b02c1d85a65af8d6c5cc4b77861351c52870dfb7422d23919c8e5902dc582d22df114386e862e9bf029996975078949a0eea65f58e12817c1dfe5ad4e41c179cab38a612125b9feeff0cb837dc385f6c6abf4735930a4a2cc0c2d305e1eea036df74cb891925087d6703f86c028fc5660bc10acb361603c531752bebf0e29236ec64d552b4d1143bd08b88f11cd76e88de33a94e8ce3705fa3f855c49b44a0f5ebde6554b3af3f2b2090ada4f679db25557f3a1976269888d403432f485fb260ed8ea77d6f3a3d03bfd34d074cf4f6651bd253cb5ab11dc0edd060b144adf97a93a0b63f46b90eae98b6f0c0db1da6c41e37abc8e93f98fb2afec13260af15d8038ee00e26a2f5caef656f1907122491e4d49cb5ef25f22356e9ad7d12efa923256e5ce32a11d72b00650b80025c2a703051afff3a54cd94111042c334ed449a2d5c2ebc4ae7765671972f08964813d9fa9219559065f89ef23e52194aff938d81d2e119126292079937dce76d7f5f96b75c992aafa567076c99e4f5575d7de3e112a881703e4aab8d62a1f6fa454a49ec789f346644d18688c47db54ee2df95eaf530fb94b87ce608241734e30d62e41673f3f0b726004975bef01802416631e1bb4595dafaa70f1a2cf54302316d2ee416761b0f082d70dc2c8dc2b1af1158d3b8c6e1c4cdadafa89847eaf9fc3c45b62f973a83dd318f0f2c56bd214cde4005f62d730c9b5906c77cc191527073177b4268132dad373002e962f342ba2932b0222264bb15da86d40fd9c82b4baae7d23bf3328b4b934f1490a9b56bbf520d116ef6d25919785670ae2cc07c55dcce864ca165f6b0e1dcac5a3c3720dc5ec1c6242d5e2a92b4d03b17abd0e4fc6b384f6e0b4126d9183da4c56f116b2651d5802b34ac76809f036d8d1cf10baca463ea4a839ac55e2ec97e3a78bfc5e643e2fdb09be6eb68aa3131cbf543937d1ee3827f000e1745294e77b5cc2291b944165ab1f83a07c47052dfedd086952cfe216676e37ca9a1f08b593203fe1d3769b2ad247e57923ef190fac583a2b764a5d70a512c851c18edb72ceaea7a4564908cfbf218f42fdd7ac904358e1fc9d30995679c5912f5599ff8adab5fa3916dcb8e6f07844af8542111218386aef49e934099c91fcd811ca2ed9ad8b0e8f56e7635ed1c5b95252be42d86d63c9e801d168ed9a48fa6cf362a25ccd17d9f174aa013ee1dac96d06dd418c1368a671ffb2f8bc5440f4faed9fba61fdc987f26cd7e4db031e814bd176d81c7c52223d0232216f42bbec1c413f86733c8d82445ac521db5d05e563671024cda184e104f1bf764dc967ab5b513dad5efe6c08f810f4d518f7a9eaafbffa40d38db1b0f16a2a67d0c30c32c54da7752e2148ea35db7beca01e72fe23cd814909f248628edc9bbbaafa41de8e74edeb167e686a9e7f916fe6dcc21d2a6606a54a22df6040bdce54d65d37ff081e7ecbca63e64cd621aff779295c4d37fdbe90ac74bcb71c5b2c6b9668f76106157a9ae5adb469e7fbd2c5299a0c643d4460f1b7c5fd7e2d1684356fe316a5666f55fba6d9ff592247c5cc176e19a03b3654020da1d3fed158096cf4d746e9799ccc98263a60f80c6d643899701b5f77904bb6836e0cfcb07e264a3644b80e8bd88dda0936a7424510b3085df56af8a32ca457585e3a7db9e5b21a7a6c0f125f6b0a4203488639e9f8f7521f84be027fe28e27f8d21011fd4761c828200096d79e26a0434e7bcf38432cadfee133ec1923f3eefe82d0abdb2d3b82f781985a357fde0bfe555598b642522d623c3b04cc7bdede5d8c0fb7ff8625e7f6f25d0ef4d755abb79deaab15a70ae2e88271c41301e81b3e7d904544624f1945ed7233bab381fd34861b316f59229a52cfa7b1eccc66a605ba43acde049c26740a7cab744dfe8d9ee3de74f7b53b50d204466e4bfe24127788774a000e42c445b16f5567a1306113515c152c7fe2acb9d10299823075bf5920ce029b3755149d7c54f4f4b674bb4cceda2fdad9ae55a8cc681c2def4deeef38423e44a15aeeaa459a49c7a07ed6fd945208ff7ccbbc64bc39df0940980e8889919f45ffaa270b361547ec3fe98e14bdbf32de8781532d410ad34a231afee672e8b9f609b4d7577c36af71dfbad200c35b35f5855c7522451d1a2276db9be2144d0d0b1bc8669c15d554e13c73635f436c9905dfda4f1ff389cd4273a874ce4c0eb945f133a11e4e0158f22e9669b9a4a6091823d886dfe33a266b375cf3d6d4b899d5d5dc0022b15de09351bb1c4ece6ab16909fe236e90bdf7925866f6dcca13fc257115f2aa10999ce228c349499807037e576cc536aadcb3470e04269f6159d7d1208934827e5d736471d2ae44b2dc0f15fefeadc0a640d3e793a44f6261acf6b5bc1556fda53f65c250e2f00b583a1a3d5e074818127984686fcfa88130729d089261f87caca0f9f1cc8c6296782bd911b69140151d4f67cb9c337cbed8569118fecffcc001c8c232dbc3114808740659f8e61b4b6692d159e07eb1e3648613797f7d24dd6149f4ecc84c36a23a3d1a98f6d3802e9a652cac43471135ef7887339622e6e9a20144bc9bd3646c5cee24e94b13beaa5a18f5970ce07f13a862794380a6f668929248a414419ba44d3a327175e6a7c1130ad0352693f32484ee592d3c4f3c21232e13ea5d04f4ad6e7906f1c27ce5fe43fb80c56912605baa20b07a69c5fe06f60f8ddcb1cdc6fbe53ed3fabdced4cea748f3f80ec99cd5fc33bb118bb84758a7628a418088515dc9c7919c6aadd91d0a85d67d82c9ea056591bf261df6b0833f0cf11af6bbc1d030d5c60f32f7d8e44261ed766a3e8c88be74f501685c674a7416367b79022dc269881dd55acb13b62b948e34086c3460fd925f5481cfc6a69f0702db37a539a546db43c55cb30a172efac65a53b4b4a36176b2f3cf5eced648016afe1773e147ebc448cd6c9be5cfa1f5539293c9abc8d5158f1a1c177d4666f6e7cb4a924fb137b67c304fb9820181903c1f35dd9b79c61df516ccdc84be3b88ce653777f7370315e38a9ed2331338979610b9b5208777458082e517c520c9c1485331c7c95111b122714b4dae9f97f4e04b2a494b31fe452f50a80a73c389e4fb4b6c46deda3230c319510eb36b0a07495d1d56d6ebbea419a3833ee329803f312e5ea93fcdc8a9ad98388e019cedf0187785605259399d89d0e55e5ae3e386e032fe5d6b725398408d89f3e28eee5fb4e6682a174e6bd2b49a76d240076e3b12d42d9a806150fe18952bff00c0c721be4a7e4ba308e9d1b0b10f392cd669fdcfbed840d46bab98d8e3587040413558945445ad3df6eb51af5093fb08a0e8f1f1d188fe7c8b7d538298d903961bce090f3f82d293bbbe3213e5a4ccf05864c7a06c1520e4f2d6b36d407df8f08bee32472063fc6b206a885bfaa9d81dd97e9a26d18565b96720c1eea5e8524f3488dddcd0c859be927636b78faefb605a7fc8bcda1dfd2c8a121b72b4f3e5ab0d7d1c60ff8825135ebc0d0099e9a6945e5f37fe5685b4706f22ade3c21fc81e04c2bf0cbfc7a362095b57239d0be09b9d928b63846825be5e103dd24c2b0f5b961ce2f95a4753bea34b96473d2a83b50376e9b8d337593ed317127d16bd0dd8564aff487ea6d4105c72ad4449d04e84e0312c570b03e391baf838c91dd50a82147f053bd67341098270547de20c80eca0b8eaab0366c355fcd99b49924278e7ffd91b7d98fdb30fed44fa09915f54731ae60cfdfbeb1a01f120a3382f48562242c83b580fdbe8d4482f5576c5c945fc1edc7fbd554c9bfb34ec089c68f5e4daa26669fdace772aae79ea9e78ef8c040fda58802dbc004fe7aa573c4840e6003f3ea84c1612507e32cfcc9b7e6238148245ad45c724277f7c7f7b77c95f22702560c479e44107fcfb62688763f3d6a6d5cba19644efccc9a60099e074f0bc0a3004cbd8f9d1f919e7b3c833b32a45a39928de288d8107cf8fb82bd953c5a3084b6b89988ecbfdbd0a82c2731c0c954ab0dda1e44d2b2bc3d3d12ee0d73a345ef32deab8e279864829411feceed66cded3290f52721a2d8f03327dc3547ff587ba1a69fcb426e19a405bd412a2564d3f0d4f6e5fb05f9faa22642a02826b237bc564b4a7c9e69c5cfd42f08350c321223e292369fe0279e22b531e18fdea8bae4f22d5896c766f744256275f3732bb469a144f0916281cb488d47d6ac6f4805d241b79f8e8252921a6902a14399619eb2724593af9424ca09c02aa33c113e1dc27e7378510d6895ff50d32df5c50a49142a8d6c4695c06de3b67e01c357f7818cc5ced31b9040952ac5c653a4a50b4121b058ec66e666d212df6c52a4fc33c159e4f83d33ae9e22f7ea00bb4d2c411dc34d98d5dd2a03cbfaed766419ff924a3ba9ec423f2a0fcd8d184adec655c4733e6739227a50d7251f10275cb9891a03f539313bcc26b718c42ff92fb9915ed49db9b3353b9f5222698a8cfff14a9ee872c8f1dd48ff8da671de2461baa9f4cf595a59475267dac2d3e6d9dd7cff4d780210be628c2c1a645e53e0a4bf44a01e5e6d99034c847b2d1ed738306e7388d679ee5c2e1c7790a49d29861857a897546762c9e1abc2d9d1aa838c32d6351acb5260124a2918769e64ee7254762ff5fdd4142e096e7ff8bcde33a4912a8caad80cd32403815933d7f7768c3657723a2bb16c825416f5ce8b80578f6d4050a3d63bf800182ca21d4b8a143909ea66f2aed1919caf63f93113aedb5ae0b29063dadb7b0ca322f43738dd1fb64dc8121bc9e4135b54a889acf226a9df520a78f7bad8826f01d454db7b742b2e0ebbf8abe80db07f40f3b138089c2a4248f792955869812fe8a11a93b80e438033abaf1756905fea27b8f5d2fbb2cca83637a71cb2460f025e21cafe025d8f40644ef01488434ed247881bd0f7b561ecff4eb18d09fed546db0f3934011f590a49282ccedadae49e0484f8f00f7df1ef3dfef6cc67b620d789ca66425c447802a76b758b5f711adfc8afc8b175ddee0092d0e6f7d0c748d07664d1312fe8a50123c7ac434aecaacdaf4d01d5eca590be3f5b67d2476ecad89737e9330dfb3ccfd41d8f410aa9f0040f3d5c4345fcfa1a006b58cfc9b29bb50c2d90637eb68ef451d84d6b92326f971685b8b0ea2af9e32b8c1edc7a19bd34e477df915ae83a58509532e3ebd4b46b85e748a76fdde5dbbb3f0a83a8349966eef8fae816c9260caf3c0f998f7ce0d0275797e911236d726654065edaa4c21e377ba7ca8ba5a7954c3695f1ad3c351a729836b8dcd01a97ea210e1946052600948aa3aa80b506211f48f2fceec10a780ecf251b1a582f2c474a5fa7f5c1cabb44f90bb944c1eaa39329af40105f23bcf0eeaf2fe366cfe5ffea6489ecc00b400aea15b216624cebc6993934c7d782eaf3cd1a4986f69bd6032a142919d67c6028e979c3f10f5dc64a7a97cb90606330e29d3375ddf94102e6f84f989e85055f4372ed244bbd6e8db3cad6bf96ad48a607a5eea6b54ffe35e162460f5fcccd9b0cea8de6872424afdd395b8ba156d4a8ed3a66d82d32e19cdeab923399b8001a1924affaf8368b21c81fc378bc531f0d20922fa66279a412b556014039c262d6dccdda89169ab0d2d6fa0abe595d34a89350d74d0b63029a7ae981ded6d0c3f11b32e74eeea2136f173e3c24c66dbaf1d51e69f7e0ccf306358c6ce778993b92bba8e1a27a61576a0b54cab957c2482a086f0667481ce78d0b5b1739d39b12da2b65282664486daa88e0331c4225f08b321b32b86c573db331706bd7fdd70f9f43054db7062a5557907586f1aeb8f93c858792eae967cb7df40d5f8f1156c56dc0d70cb89d45bb17d913c113e378bf5f5c5d201d9d39a8aec8212dbe12759b8086f08ab434bc151b629c62195998047c974100f1c3cf25b7a4415d6e03a7b7b204f81d14987a5c795acaf6c3caa6c00e4dfcc2a88979bf6c47c1a0350012de354e5c4f1773a0c330ef0d66e39f3a45b51165f390abb22f494d3c29af0c55b68284ebd86d06caa75f82bbed6c9a94f0fd3856ae30bd50897d70990fddad007584050df4f24bc6c353f540b95f204e8529e944e5ac6b4427567da6d4c1e94c7c15b559fdd7c15eeae774b097db023c035434ab52c794ab9f24fba25918a1645b6c9d8f52d9c970658d23f25756c9f7945b8c4072bf772c88b15bfe87667a1bed5f89dde58232637528d17713795198c84c41bf65b3b3dc1efcc78ca9219cc842efafadc4c32d53ead528d24a2804dc4b041a2f300f83c68eb0abd433cf89e7c6b1164749b92bd8a792c801898f671c1d9f029b6aa51297623f736aff5d5aca152ac2eaf55bff9bbaaf8054b7107007647db0bba5d38fb179f0b10ce64fdb07f935b339af85b842aca86025efb0f47acb0793cbec610fb6c224b2c45dba475b8e5a68fc669ec706179c960190a0d907dc11ba0457f9fb10a59f8431c6f1a858377d649c803e07f9ec4c58ee597a0f4d9f149291762687c7ad0179c3fa32a6e28ac0b02bab2415f55452a8850766a7804ac1b08beeff399b7c2463efd9f8332852a432db8209f01ab14b88e8d8e966516c3bb560ac3acdeb3b0b0578cfb16cc8c3b1a9064f2f854fc8de7aaf1b1c2677a39953c8d1547e7d2cc2dd68212bc94c37871d06313ce4b55e1723277fa9d626f57e2762054e4896c35d4715df094c1c2ca46fede12949afa75b0dd3dbbe38b8a1198925cc3647b50ff8510fdc7f711b8b760e502902ec4e21ce767050194e232bfe7e82234999a3c1046d825fcde47e701a5d280b6371036130652b5a28bb72321d19c14c8461766c95d54fdb721fe249634390dcb2bced6d46a22d7e1dd9decb77e6d19c62eb7f6819dc89317f7f658caa64ce3c7c9d8d3be9e671a9b91c3716a662edd7e8ccf89d1412d55e0850b01ecfd363f093ba5f68136d7cf06a465697c681b4e41bb25b0aa475598c9827bb11e2f0ae109d44938653d1d6c0973cce0d4660c205ff6cd6f45397015551f7a8e8a57ee8f2f80d04858d6530d14f1ffb7940ec14a41654bbed9bd6f6637cb7bd1daf85692a72ad908d6fca5ee94442d1ffdcd1a878ce5a80b2a76d88e508af6470cd73a3753b60810978f53f2f7b48922a63020d75545feb7ddef2c6e34e1fcd38b51634fc456012a140f281f3707591a051c12fb66dfd994abb97051439a59eaa451e9af495ca9d4d8b97820fbab9f3843a6b0fc92cb526d54e2386152e598154028dfb10bc555c1a5f0e9c24b61f3fe63810aa41a151c7f6d6c5e2fe493b973f1f4f7b138250658630c8f77d029cfc5bb34d70321a9cdf8fa80ae2ff17317345770b69241b83f34e40f73d6a0bbc938b69e69ec2fefbb7fda6ae339400b7e1fc8334e3726ad3da277df3b18a5c80fd7ec78bd75cc3d23abfda4c80a4f35390d52d8eb09d2ff1c264ce8649d86c28d768dd8ff7b1b9d208a7485abc1ca65676b08878977887162f6a161816530fc46bb10e5371b9689ed1c484f21629891c7bca2d4ce726172b97dcd911198df4a72a3403f623acea818d624b5ba566d00bb156b02bcedd50d13da09c1b9ffc38816fd8ed266ff42a20120d51674e9f788399f7cfe09635c2c5c5e1bc41488309b0bedbb0ace53458eb2d78b0391cb97f9041952bd395015bcda12c248efc55bde766bcca7ff68ecac4dccfeca1890a6af7e54a4c646b78792e12efc4d746eb01814c250aa222f1a57aa4251275930509f20b5980fd29b6d19f3a31872b6daad57de11fb116be08f5b6874ce49ab87fb4dc1b63f7c638690189b9299000d8a5858f6cd8568bf76123ab50d74d436d64281786463a21105b62e40d3e6e9ee9f3a5df63dea5225309fee3aae4c8a95407ca430e3a5a778299ccbed70d00e515ff4933dfde6a25112b03e346b9ac0094ed226afe6ef546a0706bd9f26e18910b45c6c1f7cd6a20d6290ba6e4ed1da706cec5324372fb92a39d8a0e8eb80e09cac31834d7dd595e02bc1e416d3615b3a692769213565f55d5c45cee462e745e9fa5802459a39a691bd6d31876a535373fb5de92951050c05900a884b68de59a774b09802bc57bca32bf0cff6f9ae3a65394171f390a3cd08fbbb89188c540df1936e6bc2a49af7e1cb6570d157b97b5e1f418ecd0cf33cdb462142b88ebf96d2f612a31b66e9c370ba5377b5d2fd3afa0d055a99731404a91ea24cd9e74ea098dfe67559e95dc59c565b5192aa2826a44874dc2e8634d56db4c2fb0541ee1962b40dd28d684b14cec2fed82494b15324784e760c9b7ad0ff3eb006f1fb1759387f25097cf394839b6575001c37567db62954d6b21c4749cf74ddabf0a67770db6f771f24ef53ebf66b903184b2641f8f4aff3a1e06c284a913afda7b8a5ce98355b8a06992ceb1d042af15b414d646b8b0cb02646bb94b465d38369d22fc481628591c0b68be0c5e1fc4b7d9e33818df940fcd99f0cf69c9980703389b840ba88167abe1d1e6b46277683273966b59021164add150fb73aa8b0252ab5afffec01ffe212a80fb057c86015c721b2788f1a79d3325d75270a60453fad7730328776545ce6bfdd6c470cbf4228752594733bb544a7fe72d3978546334ce32389a5ed703e76a240106f68aec8b108f4f2d3915fe2d137692b515d0eae76f96a7ee49a1be0b77a485ee2e492c84801cb13cbe6093fe348ef34019520aff24d1e04103106a7850821a496a53f5f992b54992ccadcbad96cd3fdccfb7785057c9eae37816aaced09396294638fbec940aa4112ef0e34bc2e33f021e5fbff2cb9a062454caa2967e05b8186f4be8681c40741afb82f7f4081645390eb0860a181242e293e658d934d63a82a522f29bfe70d290919de8e003c027bc6593f2655f34dad08f48a276125b3f5f911a7e7b052745c27de3d85733d095d40cf50e7743b66d8fbc71a618f7bb005731d1d5a8e2e59bf1c5d8318d3d45b1c071484c7f6982ff09a409efe6ed72dbcf5faaeb87219e999398633da3cdb7fe3d4eff0bfe4639c9c5c859085b08cfa3aafd4c2fba663c6f8694514e5919cea31361153db4f3abdd0596cfb1d855764ca2cf23726f1f1a06cec1d27826a2c8f535be8708cf98609bf1117e9eebd6dedc8900dedb3edf8a1a9fd8fadac2dcf7575d51d58d0bb512ef26c29bc54c85d3b7e287efee790f5126c3a341756108416a2a1085afe5d531666216014311ccf53185690e9d2b3f261b9f2204931ca59f873122a0ef23965e1127b8aec7a415387855e0b76b355736ed668e02c356a79e9487f6345c52aaf0369051449a716763c63e0ba7a83c32a3ed478ddf5f12bce11daad7d08bfe8372d5b6b88927585d91edeea062ae599c00f593ada4a881b09cc6dc0f0baac69c23f654f0e7225839b22a0c84b038bb8ad75d37ba3d6951551b075619fd938dca74cf9019ec360d260b4ddfce1cc9af6f23cf0399fa327004393bd5a6c30466168eb71946cb45e13cb22cac12741bc7ebd6d6992a0e255446e9007c8a00d20670c9e60015da39165b137132144caafdc05454fb12134501f2b1e604a25738da3f360af827126609536ea710447b4324d9f6b21069846752892a6ab1f8f237fa4917a6dfc99276529156a9038f9bacf56489f4aa0a42a8468182468940fe00ac8c6148cf921cf19fdf33533ce78d578c95cc8bccb91073559cf912c59d2c702cc5418b017197457389c18a4515f3262a36f5064337171c0b7b67317e80329bdf0d94e74d418b6e1ec98f9534f4b54284782d8adb456308700db50cfef1486d35996d571a0da821a50d81bf1d3a7dfc049a0f1abce06366fc9d5fa7464cac53d5e493c8ee163f90635c4f5107533ac4b5a42db6abf66d761ac5f979aecb1efae2e0005f141ac7b79ccb03d7d4a1a12cc3728b4353ab376379b2a7a1a9cb64176e6f6387ea845a4252d57fb6e4afa7ffcc472247c1765faab2dfa35e1ac9c7495f509fd9db0035f7070cf5155a71086374c75e70ba7ae514046ebae2c275950374064acb1c4e3bbb548d6d124dc9c40cdacca1f3a00cac3f2027cf6fb2419d871b822f329e547321636842465be69c87feaabeb4fcc1fcb3575757c6c7c0b6f54667cc96dd4e868bc310a59f52e5998736aa7e41ee4403909c7ddce3a23b38677e93d5567d1e42da31e01987f064864e252b1f9c16d54fbf221c7b11a08c811bcd21af97ce2d19ae309cf555ef5a7120efb3cfd5bda055c39eca6542b62271b4568af508b7bca2379ceee51cdc872ec8955035794211ee0b650961c252a5ee82a7a3f7769c1a179896c26aba6e5cd42bb11be9c41bbdd5dfeb3a48348c3d61e3113c362d401ad6d16f8155415e003ef1f578f7b5f8f02ad5719788e046fa38aaaab9ea28b4ffe1486b3d50afeb6f8a323c8761e2c5a8f2d9cae4a253241e62a0b6af7c1bd4435ed384f255f39c529e42f8939a23a46094cc953aad4c5867d60f9ba00c3deccb175a97273444e2429e8157e60b111a5d5da45c21d0fbbc8a0c60a333ecee779ffa08876412c79fbb7741730c914a0ae9fd2961e9cb90c02c82c22dfe222e22b99a0f5124e585d5c558ba4bf1fd92388f0840182c6f19069c38ef10a0ead5714bacf12224f9b5dfcd330f7d6693ba678477bb950921b0d37234f14c5b32b2cbb48b67db326d4e09bd4162e0788c595a4e24cc6ad95cfaa70dff02597f1d62b469b5ce96eeb7ee6a917bf98adb945a403351f5b8b42cf79076", + "0xb5716d46b630c789e9cfb067411c3bf6db77cf84701cfdc0efcccb617720768dbea1e5fd28c1635cf50b13e301d462e472d881fb9739c051b36dc554cdd0c998d6edec9b7d5a7effbc3e371f7865f2b0099667770921a9131610f7b05cc457c11b043d467d2391880d050faacc9ed39a071e166b12e8d6c743aaace39eb0c0f6e17bb75c184689bf0caa867ee9ffbb0d4ba64336613566fdf8f1f89f0fd5d3622d48be88dfaf4eacb01d45b4fdae5f2ca447242b8c89e46d053beea4b1b7ac053afa37b389625378463b0482fc7c5e1d58e85f678a17b47cd1a5a44588f11b0cf8d3e97c70548ca7ec5f3b0f1dfa1c529ef6eaec372de270d59d67011f0bad1888aa11e011e175f6175116af5b9afbf224f34be6d32b32af1ea8a42b0269dbafc19869d590c9057d0d73f2a3f4e99dd889cb172983105f70cf81753c424848b8ae81ff3131c5ac106c4fdc77eed133fee404afd8cf8cd52d9d8edfe3f4ca03880e638a76e0a1c941a16bc74b8decf6243bb6858222af684551972263b2143b48d37727f4aaf42fbb726f7a3cdee94d750d53802c4e1bc3224ad8b0001877dd90a42aa97d425aa43c759b692130044846c9452f9505d39693f85faaa448ae0afe5ad8e1d77d4770e3968ff976968462d8545af354608ecdc962bdf5cc672d5c298662943ed6696ff69561e43a6657cabc87f854a65ca43bf5a1fe4f111d7b5be1ea91f49eeb9738f58503bbdebcb08bd6af2e185b5983974c63ffed60199eb7b1fc48e19bfe51443c4ffabc39f8c0615f0c8cd7ea99b9b7d3690789fc8b990bcf6686420b75d2322a2d6480903b79181e52cb2f97c78d592b09b9f0f0a9f947418837355f5aae93542f4f245eef5fb2082a4dc6586d27f23cac4f7c7f2a7011b8f5daee58db05d104b95f07883c75c4e0b262b4a77c474ca3512ef572ce80a6ccf1f28276cb4420e803c73c0a9327baf4f9672139c890f44609bed4d8d43d1e95fa47f4c71f739a97988939f82758f31484ae157b8a60b6c3799ceff7811412553cfb3b3b7315de5fd71574e26f6feef7cc37d0eedc36abd25b1ae8a6a0a904c81b6930fa839ddc79752af04ea681f0bcbe3f298140af9e22fc090256fdc517faaddb7528b26ab5b8fa0cf1f74b83ddf83997cba71a09c9bec0dd3139e952e3e33d0de32a865ac08a3f104cf1a28d32bd93ce4e59314022629a168100b9667f06ca7a03a529e9290ef66a15aa3033545515307ced32b5cfdb94022276476113158586a184eae1c2e3225ea1fd42e4a20a7a8a48922d666ef74dcbcc2a6f187c51576a82c6ba9fe55c9aab132c6763071c74cb4c4916b73b3276d43f129314dba158fabd1ab0dd929b8b5cf79ff249e939276ac75045ca5ee4546afd9218dd208d59375c328517283ef3d798db799cc143aca17072f768d46b42c0a015e754e43c5bb1224b197a513a27491cc6596fbbb8907babf1ca7bbf542b3f6491ed26195b16babb81ec63199d4d568ad52f9b144952aaddb9451320711424b3ec9b4277227367a18da5753700e3264d406081303ae833f8fc4e003350906ee0496668a540126676cd8f3201a736bad77592e08edb3bec7aa9b2fcfb8b4a1f5d8148c67839c59bb6f517319e5fec8d719b31b9181fa6bf7cfea063bcf17fc6071c3da4dbd2139ae94650db61777b9460afeb4175837bcd820b2e7a58a081626f19c7202db1b6e0c0eb6fbf6c4baf7beb4134ec58e37e523019d347edd5358e23af6bfd2bb41df0cb024e70f7402843ee68c3780069686319cfebfe184c96ff6bf7327bbed4eb2bace2edf5e83ad922fbaf131c4ad96577426a37f5b7b0305601372947293c768df25aedcd9af48bc1414ce3b21ea696c2167f5a2c18ffa539a1fae176870d4926110f137cec0358bbb6c8b6061dbc9060df905d6ae53b2cc897ceef9495e2a2720a8ccbaa08a7307835b45422b9cbdc4e05402be24f5c0d5598bb6dbd214df57bc864a2db7dec5752969847b641e27537a8ef166c2fef26777f0578cab2c667cb4574cba78c36e50cf3a65f8d7d834d0b548a504e25756967d8e1b0903858532cf25f9c90cd94459a93122f11d318c86cdf7c7395fe325baf3ffdbb2bd7ebc93efd970e6090f1b6323d098dde2b773eeabc15fafcd8af9727fdafc15a1fab0ada705e4019979acdbadd94166a06717e084936c567ccfe49466fb3f1ec45040d3f45d1f3780e3ff179cd77a7b467e6461ddfaa99e81a6ab4bd2103fb3d2cf1fe1ad98e0f06e616de202142e50f9f88ccf9be8d9e5a2914ac6aa95595c24be3b959774f1eb2e9892320c673b6f20d9438650dd0df89c2a81d939f42f7a4d64753c8d4b9cc093f57a44e637cc6dd651627677963cdeb6647827456bc5e719fef9287afcb6df527f018e037cf04500ef42a625086bde7aa656e2221fd8cd299c6704efa6a77092d738bab720e22cba4c345fe0a6365afe58607b54869465e062f9c7c3d1703671177dec1bb8618e8c8c270e39c8b63a7b24c86c70830d5719b04f8fc173e502c329f4254ead0a17ba69b194411d8b65f0792b8462da7861e3dc41cf80969407533c5c1ea2075bccaef6ea0373ed7431ce0f8808f2b762a261695d256f355daeb1c5eb5eac9d72ccf399adae4984f51edc49053ddd0a6970724f89814f00ec6e847a34f6d2e8ef98becfe8f7c74450d58a902ba08e09a241b88b321627c41d423c1f11166a175ed713922fc03369b078fe8fcd39538b731bf2f27d4970a6875f4ffc45419798d18d4c95a52ef46a7b33a6070d112614e9d94a5984bf874d4402215acc3e250a14d6c1765358cd00aead1eb8d78c68ef54ecb1d2cd642f54c6f45b39ade4b4d46a2efa0233d3c8aab6682c259a1ae84f8ad7e0f31f6158cb85fb7b20179725c8bf4b26c04787f24f249a97918bccee3112722ed20e221024b1413f32c3abfac01615f8b81e6ce1a5696dbadcf49cec6e6adfdcd2e052bedbbb245bc7e1eecd36fccb68c76fc46f6ceb77e94925ee7c20534ba1a8f7ddc6257052f0143f45a60975c68189122224bfaf6f0f7582425a85236fe8eae9e6a4322fad125ffe0bbcef1fdf41cf73503fba4034260ad5af29ad9301a22686d0546df24152b55da031e2fdda34659061086ed747b6a95d1f760fd22c5a8e9261b317d381362cb2db37b8df086b00cd8db7464407990b5ee4afbd512e9415fb76ae85991fb080cf86bc2d66d8f0173e62125674452e3d72bece75d897fe0ad42e63ad1ad82737ab0d8c4ed4fb267ecdb4f8370be507aab9595a4bd147e847d9f659ac1ade2a04d9ce29e5ad61c23cb57e07a42d57a98c84fd94c9ec4d2f493d728270cd96b61ba58388732037993447185279a0eabcac30e906dedaf700c09aa2ab9981aa56d195324db0c1f42f92730231198d83880609c9767e56d6cec2d0a43d1117ffc106050b35e7434295d37119afc240231e0c156e1fb7e9b28a5189e199c5fb8074ab4e92aeb6892894f5b84611b633f1eddceaed0daa95b9228a640e870e49e54825f07d005134ced718e6ff2a3aaa961c9dca9e950cbd26d976c800d76a0a9c93fe56bfd18c0b9a1fc49a9011da83b1bee1961cf6a0ba9b23b881e6f55ad7896718d298a499bf35bb270808ae5f156a2e61f84922aea8df8c16593ac2af64db43a442880225c5bedf33134a9c3d13d8ec28bd34fa86fb0f383ac892115ab8ef65b4ba32291511308e6227945840e994e3078a41e380b4501f6335eb817b346ab9fdbaa44ebc48213dbd7f98cf538f553323c614fefde07c4897fa68c304aa1cbe87ea2eff9add410739cd03dc65e42c820df07fa22c6b3d09794a65dd20c73bcc79dc1594216788f23850ec1130d55d7f948a8dcb9de896a221edad029edb29eb675932c0757a0b119f93915b13b64874254e9896bbecf4f83ba6f84d8f1f82f5f6f781bbc92c440a8ffc88870118d21fa8c85e746c64e9656ffc9f10f29023b8c9623cae5671fd2b310a944fa70502a6296c8fc1938d3973438ff1f36ee3398a8c71c03a0e030fbcee3bca6f9e40fea9ce7141195caafee0c255a267e7b12beed003f3e440f3b96f8bd556cabd1958564cd5f1a437a38823405da7e1ec4c7e1a3273b77ea9dc6162e0abeac16c98ca65c65b37bb13e46a3780cb1280fbfa2a7157c1454bed31cee439db2a37a7e05b4c095ad13611cb638c9f7c59a799d956319e9a29b6238cdffb5e1e44bbb1cf59a70daff9a5ac5ebfb4bd7328644e3b5e9515610fcdc0a2c26624c76c9d6b2b2269e1eef52809b48c5ea4bc66865fbbcee88265d21c436d0c65ee782a4ad007ae99cc0d503f770b7e8ae6684efe1ac8af8c415de1baa4f13775f7495d3a72decb4964ba14b40d425a27b102229abc89fdefcbcba16fd5f96b059a42e9600da8ca22669523ce00e0392f9608a88bc83a3da8a1b6d5ed805bb955b26441fc38a43ac1c0b804aa83ec749c5935db72834df28c1a846b77f6d2ac6c6dbbd0fc2a7ded4ebd3d38b011b69e8325b6b38fe92c138429ae8037f364d436154f8c013228ae084528945d008e6c638283cda2d385c6dfe3dcd3ba835d364eed0445fdd605e9d9fbcf4caca18c134539f8af9dcc0e56df980beb1695331dd416f66d47641d2bbb470faab5d6d7d4473dac593cdf3370639fe5caa367b1ccefece188231cf40372aaf9333774e24a84a488e29c64250977f3b9b42fcad10ed747284cc4bd66a4e74a84f36d4e2c39d86f13c71233bd217b40b41a6dcceccb74d5bcd74db9cf30b2d34ce30a81febebcbac5ad9fdd283a419696c96aaaed4b8fbe686c3b8dbe45e644345b6ba0032ee855226db8c03cda0b87b0940df2feedb1dbb3883b48829c3aa66002f5484b0b1da51141db2cc3f679bea5e62041aa5d248a6e1caa222127a988edae69337832156204a65d6900a8ac00880c5cc58c988e8b5709804f7d352d383c66b09594b431ede215c82b384a3e4e8de0055f0eda82b664a3b5a480403d5714a3cabb8ae83c230aa1e5d88a9b685e5b49146e5e8302bbdc88e6853210ff445ffc58485d512f8c626a17aeb951fc2b49941d7b45516c056b704fbf00a43719212b4b52aed50d52f8de1234f0b14f5b1f2dcdebd13fbb8e2d67fecf885ba8b1bc68d9c36a84a5eb009ea82a6f1b332a17c397d29c5f1615b5bfe809ab779dd32f0a44608b945748a78a3dc57d1a905d3c68c0a77525290466f145a95af95828b79547fa85b5d7ab8ed77424c5a5b1039b4124ccc669ea4a7ad36909ddceccc3fe08e18c5cb2e41792ec5e545dea973aefe032790f07534e5a7d4ba3c916f8657b6bc463eca950b28381f77e1d1421d71aedc4ba3a29b4ec96143f13088f8033c1feb29171c79bec4b7623b0a50805f8ba6f293bf74098befd4770ea25cb58a2d574adee30ba78d408f97c03397d974b7185c0b24221559686c91c1840d1fcafb2bfcad00e4c1b71b56a35c5f8ae3d0180c26e1b8a9a43d158b34352a80826cf97c323ef7783c2321d7cbdfce2de16001dddab743ce72f34504b5574afd180061c09dd1779d66ee14900925492ce41ddbbc58101a97639f6aa0100eceafb0ba27812bfa35ab8944fb342a6a00547d92382cf8c8fccfe88a439cb9db3d27e5d988db1454c900150a352bc3997d18fd35018402eb6c867616d32931c900dae7a16a023d246c7cda31100df4f06e0d44bfa8707840d78f07d67aeb7193869ed83c1cbadff312065bcd912bf9aadb6e23d16270286c6901b209197b2a6e0f31aefcd1dd8f83e105232a30068e9c09984da24e58157e40b74be4afe5c7e202b2aec1b3d985af72e7368eebd61fe9548fd682a8cf2c3ee6d01e521c2b5096ae267887472f3e1fc29d8f65b404d03b5578446129d04da7bf2fae31a6c00c00d5f4985a80f567dac71da7f255b0462eef1d30b1de2b9f4c24fc8930c00d055bab6ab838c055231dffdf14d42c2c55c75b6c7555ef0536a3532134be21ef485cc5364f9da90c900523613af1c87e683bc3f8f36ff4540c6a62cd14c781370b78f4edefbcb3ecabf464a3ff9f3ae2cb58c377df38c76447aa87f57e299d298cbf4f871fb1125a81bc41ac9f153346bb491d42a03fe754ce09e6cec416e0fdd3a170e1bd16abd0a5f5e303857450cd4596d1d843b7e69a306a0b545cd2fd623d19703afee0765c0816b3363609e64d0090245b7db09c7bdc0de6c71381fef6cf0f57b6ef62f72010234856528851d08791601136633794a5bddb2956facecf6a0484de95d10ed00a1982799d5f7617d4bbaee4ade9aa549ba804c17fcd2af5be3aff1e91c0e137eb61dd371d6c48125a1b0ae32b0f637f2ff8489a42edcce51900d646575b2fb257f5822e45a76769fe5e24bf3e1491acac5245041bb32f1000cf5c0afc5ce5b308fcbc7f339daef6d78a0e4f8d8ae8c8fcc56712d42cc959975ba7828908933f7710a04efdbd3d49c2509b0c37aa2092bfd4ab1b1ce69c9be1d29caae8a3c471db76c1450bdcfd23c0f8bb95c4c2191cb19fb93a29a03021c7d6cde359373ff57ae6c3118669ccfb2d038c2ca8a918506065f1ce6da96d2cf10099707d938a8d47be5de4d246847cc4ee5a384e48246935d219fa5cc7bc7174f639faebdf3590cdbe3cf21f34de056bccc6c1bdab3376c8dafc263fe4b6984b56160d5f34c96672a3d4f40038b427da8ae5f7c83785da871a3c7c16f318bea10cfb9969fe640d0335b7a81b8d8b2b0e248eaccddf29ceaef00a6c93bb45f4ecd40371c035a69792af8d4ee4e8688a89160ed5058789de8bd54928198084bdd8f495cf12a184aaa8952c2c6a2ddb7267d4fa0c68ea676817a2b329d2af5794007a2ece72ad86febf4a840c34d8d8483e125a1118b6bb20dac36aa8d416bb647a84c3ef4d9ad4e3140f62b92cc08421d21f0f4567a87b8f23973926573ed50e31681f95f5fb6ab8c3360e869ff42e4797b4562d65e45f8f906146e4f4eeabe70eafeb89b7d6ea7537b6d5c644cfeeba04da1df5ffd577d1e1a6d06c0207b837f845197686d44b22e85d76555e8b03acb6dd2beab4495f5722d2ca06f216c9ba955ef26e3257035e695f360de4f3c00461756affd099cffa1d6dc844c8758523efcf6963316909d9c8f52852c0fa2ddc917e1249411344e52760c677a0bff795d5ff2aaff7ce82d93c4bc3871c4ba30344042783f3f36a1831f4c73641f006281e9f848de0babdb922f66d97bd28a87c4174738bc6a426e62e9120dec08b6a6aacc2879da6e59c664da7306d702e04fd552e35e30a11f577d172870d3a87a8db4c239c646c0d83e1a3e3ee7b86bd7c7151d7b331933dad478acdbf2790e3ee6f5f8e59c9541d4fbf0fe3ed376230fd77da194fbf5481a5a5e21db5d1432c271052d1ad9aab7fffacbbee849a1322f9e010bff3fb97017f35229c6879574c761aeba935059e5c21e3a1d8ea9f045db03400497df8b853056e450ef2cb436b77dd6385361f83c746b86a660ccab5429c2ee27844ec7766cb1d4472233dfcc3e41f5318d660b41c5d0e9bc9389e8abeb63c316bfeb0d91471e0a73a148403a80d9767190425f611e3e1127f3a26a6157b008b331b439804c7ac7217f61d90206d73f2a8092d703bacbedb2f246dd72579d16222064723b2584855851ac5c0dff0d3412fd91d36071646476db20696e5133b841e058330cc3ed0359dfd01e173044bcbbb08fc5f7150af5d62a4850e378c7b65bcf75fdc407e3206de7f98bdee4065262fd8b7b2f2a2429cd4d6033f60c9044afde16b5a9ea2b4eaea35130973b51dd7b9c39ed86b64de030e3e9e23ba68fc34e001d835a9b46cb077da44d0591963e879eae5290fb374778a14f6f2687ebfab2e2afd214a28c793dd7bbcfee1dc9d56410024058bd7896a82b5b26a2f195b482f40d35a35df035712f453f39bf9224acf98d8b7f6a4b7dfaca3f92baf0b131c28057a95ede7b4a8fb96a4240398c021065ae0f643152bb7d22df927a8b5dde1dac7b280043343da58c88ed5f71b364de80900e736d8294d0dfc641c0988e400653563d5ba126ae6bc57b4d90aeebbf7657c61b526898468ca91ee1fe3c6065f2d4415f761fbb9c75216fe69cd637582451c0fc008c62679ef79d03e929c5603ca1e782421a5141f66171609977d03cfb0297a4e88708e26b6634827ade99b880708de370062332aea71ec7773ccf45931d0f6d92cf84d2e1cf017e68d5dd05f7c6cbcf75935210a792633ba2ab74e2525e53be6d0aa8892005101b3854ba2e251b92df717fcbe598502e12a95810873f676e569ebae7918482451cd0d61f5352d1b6f065abf3d14b8f6b3a0aded8f4fa054f4c66d79ee16a326526887d95ffc61fb63336b1da6cbb45ba6a2130a45ec495c4e533847c994ce72d7a75c0cabd8d8ec115a268f552fbe0d7facefc5fdc902af397167607eb76a03b4ac943a58c053bd22452c3279e2f41c44836b2e81b3e9dee137fbb19881c01642b12c51181efa8a645e8daa96a22a0dc19930ce0c8848ccd8ab9b9834e110e5df35c8ed51c456114aefc8a004be834505859e83d1d56e2d90877b8d830e47d36c3d8a539faf31dc69f1435b6dda605de280ab46724455ace3939bc44d3a28edcd9929265099efb1fd6e99f4530b4b697004a1c389cf531c8c90f0b1698c5afb6c4892b1e6596152627366ba8738dc478a66266422d17489acac2dd94672ddfab7dea53c991b2d9a9b8b7352b3d4dd334f924b5c3fdc2eca458f3542663dcd149e06ed65d35c3b36ced65d5ed2e3178ea2cb859553678fcbc2ef736add118c76160b4cd1b2c2d155c5a62178b2518ae6ab83d0ddc84620076ebea191d624aa9398740c7e89bb45356eb0288c79980aca553d649579f71171f8dcb5ce0e4b276ca2b5cdf45ff170ee5dccbdc71db77fbece81b53138b974b4f566047057d7e76a35e72e1d6e8c51b74547088deb77362509e5ad5049798ac25e8acec717c97651559543f3a545809a83c2f01f010708703f1a51c3e58c7b910ef0c4acc64a6f6f8d9b2585274966c093a49109d3d84c33691840ebb93bf86545b43ea47480271568113699cae85c9398191582aae0d523c84ecc02641a912a28ef26e240a676caf946df1d991e2164d8a3228b201766fd5ee98c6bfc34d0263ecde208e27eb05354d1e90b53df44b73e3c3ec7a55066a37225a8eb8a095ddff437b2d9221230f812a7b6b4e93c880fd702bb84fd63cd8a10b642d68952b5071a0e4dd45ebb0bcfd14cf08d045944dc557f23e5c0a076a18738c7776ba1443564ecbe1a0888cc0fb211856c7c27522e8f713984d9956074e9b8f7c214c9e472eb85c3cc26e64286d95bfcc8e20017f9ff31ef8308288e4b8e46fb275d1811eba98c2574d1a2d251f1047917f704a1f042a2fc6c60f8834f9198d9b29264569e002ae209b638d009a5c6fa75334dfd889cadf1e5c91a9c9151c2160bf4e3c98234071392986ec93928b7b0f33fef31367159e8dc7f1caafdf2f760b239d89078ece5e04acb45d3e9aed56e7c7bcf85cfcd653862915aa9d0da6282ec0709c336b5c800f1bb383790f1a69803794300e4dd7dce1c63a86f2d3406090f7c0e32b37fab7daa63c9195bade112e27f844ae174f808f32c469ecd70b35693a96bdf8e1eccd0bed75ff439242b0e7b0af25c2987283c3d79274b9ac10e0b2a12792bc0ca828a61ba78fc6f9ae3bc234624a296b13d4099a8891c2d9da3f93a301f070b9faa0d7bc823d2c1da0246fa96ce7979b0b4aa406edad0d741091eb1ef60b2d61e9a1f894ed20f82af0487d0127245cde657959552ee6cd52b1740ae30b6d197aaab4e67ad7595d96ce5768f04e0683ed9cf14742f878ab59e293ac64836e4540c56710ddbeda8a9652e3c806a8ce89db3c3c0b8b62a81e7217613ae7f9264c2f0d4bf18e1c7454f731248b878b08f8ac289ef56e9486388007060df92e01e1366614a425e4c3660759a087e133dc86af967874ba2b2093cca3c9b8c323585e062facdbb02decf33c9e103dc569d8e4d6e6487b30a60a7e6d1386667830e0d7e3bbd29ca14a86caad7626ec011492becdaa5a94f22879f91ad8bea259e8edfa130cef6daed9cfc2f86538ef745279cd11c64c1c83d0298a3b9ccc4680f86668cded004c17bc44767c5117e07a9c0d79fb668b61a840602d995b7319f574e80bfcbf0bcb9bfdabb4404a01f74284254864e1f40a6712a9317a2f06ccb6b7464e5df79ad5b4f3edfa0b831533a614f7c402f36c28b54bc684c89d97395333383bee600c094d42ec373dac7c26126a5fb5dc6ceec1bd168cf01b5759eee0cbee9cc0f1cdc6c8d5b0ffc69ddd45cfd8b0d2a253e025d6031e93ed45ec0a4475bf5fa70abf857cbc1800de323988ea21a3742835de4ddccb2ab9059c9c3a7a84e5faa7fb1dd8073dbf5a3d04fbab6834817d0b96a4b52b5bbf0d0fd98f070e793eb6f9abb189c7f1d62a138f5db3342d03665c678c8bd0e33935d3a8551ef3269443f80dae5807dc6424e2774d30437e201ab4d7075459f4ed2f6cf4de998a9a9ccf1d62a0ffc0efd6ecd30f5b031eca6557412a0741a841975693fffa9c4e1f772e2a4ed040f683e5d35e77595cd9f914b4181dda151ac4a687e5147603d62b8cfcfd530b013d51c386a66e5ae12c3822cf1273517e75b6bd06691d9041229dc1755ba07c20b324e5c25c950eb317fbab531362b679ea84dca00cee32504277bae11885381b8710a1ad0b21f35502d9b1936058caeea00d353de9a925a99bf3e5f06d51b59f617bad3f8c5604ad3dc3b66638eccdf8ba10217edcda5f2c04c9c8bc61f77a93dbff4d3322d268190cfca3bebeffae918207011fb0315543399dfd4da45039d1895cf742216f20aa8fcbffcc0ea3e9d40e3f1511919c4b82c67050d1a0cee04d4db7b7250303389d78edfe1f064ea6e25a8a7460bb4473ee9ea6578cc9b8d7daf6735832033d104d7640c9c23e9197fdafc505586bab979544c2faa24ff885d5723818ef055c99ae38fea6d0427e581b2c5f3b702d69d01b329b085f8a89031818cbb1df7d5da6ff3d851e7526e1f6ec3b9d2d743f8d59fa812722eaceaa6c61934f7dff07443bd2e3890aca437a813bce4b3a08bd3a61de20a24f1ef7df80492412b5b0ef78b08325d7cf33e9a4bfbea267786a15eccdbd50c556f49fe441d7eebb124dca664d84d2b58a0fad6323220b3fc3673549ea88282fe975f6cd7cae801173b11d091787039832cd9cde4e2e5915b321ab34486d0cfde36a8ab0eac7265365b4845e89ea650fdc0cb85d6dd651d68c37e41fc523bc7a324650476f3938baa6aaada590328f0b82e31a88b7334868a12a6026b85bb32e561d6a36df31cfe8a5179e9113db5cbbdaeba0447422351e54cf6c3046f754cefa62518634660dc7add3bcea176a4481b94ba0c4bd930d3cb1961937fb693485d32d7d7999547550788046b3dcb5a01ab595b56aa53a4ba88d8714458fcd5c883e07ab88340f22f563aeea5075f1845a3b5e01ca84c66857460b2ef66dbc867abd5ef77a9666345246873e46e84ed97f99cdfbba8cfb2075c3db66d83b7502f1b45cc3523163303141cb5979980672d95604d36b22552e836a261de390c2d23f31e62f5a0a02cec4bcf20aee2c00372514e61b37ca2a0242e8cae268f2d5eb7d6ae6820035942156526251e6693c084d07f87fd12d3cf8af2cf476bd5ace35267758a02833b45a7a9edce619db432b61dc10e0103b0f53e630bcf9990d31dd38ec6f54a6b425d60a3ee38f30b445f0f20b9ce511eb5b03784b587de6ae638099af6958e60695513fa78b2d6fbf139cadcbdbea4ca0062c2c4c66e2e39226d3a2320cac539a16c23a2b8610f4a780fd489fe5853e2dc40fd95b37bbf0fa58a9dcccc45cb6836830c5b33f02643b0545270edb0de2453d55d51b3e48e66b53ce0ca0a47e0f26b2adb7d0781aa8fd74a189f13576537afb9286f8dc5d94d19aca23fb97429f94c52b01bc6c9ab30d6a9326db87f303510ddfc0c6775a3b26facfa6315872ed1f60f436c02a83e8c97095fcc066528d06be346c44a2d34b3bd6cee82d2535aaddd3c5d8cf0f6fd89c813916b9a885b01a5a9ccd0645e9603a2b7fdc346f67fd5cd7d5a8cadb984bf8c9f6ea99e4b7c49986624872d3c1962e02b96c576934f6fab96aece0ae8f5acfcb8d256e94f60813f5c3a1bfc8bcf1b377a9e070aa9e4d632ce5db6f64c75097f3e4b49bb37823a4f8eceb6bbc011a1b0a1ef2572ed38873b8b80a5dceead1f4f2e9cbd10a580afef7df3dfbcc6f829e357d3e2ce86ae923f43c74b966b4a3ac2f63a8aabcc9b44737c922fdda8e56ad0468d0159c587ab2948f244c88a7d201e1cd221418c3b982cc1e5577f65f958578ed0f05d9d6ebcab015707c40a7ba2124fc16576b66923c610fc7a0ddf9dfe6903464516d4ed10a0a460224955fe35289f9a489332546abd6e3bd1ffd0fc5f79fb0a04e131f50d378909cdbf5ac2a2b5cca44018a1cdbce303da9fa117846fc90e2ebdad135a7af3d666c4c64b09bf2ede598a9f71ca86061f647f0e6669129f2036769f645557b75b1b7a2e4a183cde04e93ab4b9e63021f738f221bb22357a289b64326000496309e292bb73b7825c8db52289a7df90baa00b4b5383eaefcdab4a786e7cdd8ecac309b54adab59f5510d47fb91e17ea4f7a64e3b75a40bbe89322b6f082508cfddef1a62f166240705891807de8147eef2d1fa2a5cf67b4fe0f7a62d52e20e12cec90bde92014bf677aea95fce301ad6448ebd1af5be7f1877f98fbcc9cfa11a739f09a870fa23fab6c1396a7ce2aa69750cc47f8050ae864f53b04e679eec0b2b8ae3c5415ecdb1304f1aec48f84a8023c99d90ec760dd7ac0119ed524f07547d27b5aa7f051e0839ba028976d22d35e177f24d9d33b6fba8a42f4c8e458f7e6119f14f384361881d4eef7cc35c185eabc7ca33c6a3426c20be47509f06332197471f268ee862a1ccfdd201c2e3d51eb7be5158597a41a8f0084e0fd3bafb34c94e030d0cc2d06b7ef25e939951a784da7e035c1b52ca9ed15a31a52f7c3af1deced6067dc9c5e7cc9afda9597fcfe821bebbe8f0a2e379cb736de4f1e859b45d42e56eb3448389a0c1b9682de2f4d04ee53c41607510752422633b2d0c254b5fd4d651db02b8591673b75b64b205d14a3be571f26011e1cebceb97defa9da9ba787f2620a42d12c2396fd4d06e17caa78a27f8f4aec35c2ca80c5a71050965bed2e5058490dffefe0e622bab9a99ea38fcb7dbccd86c425e0004796052e33b02528ed70d51214134c9a5944ca52399dfed9654f22860ecd880787c2089f0787726dd3fe7c59155abd5579124edab81b24bf03b60d674c0ce3c1b00826640d4c4f8c763b48f1f35bca6d6fd4cce27ededf46125affe8de7ec9502c6e98206aad2127d22b9f6a890a796dc18523327383b588c118fa8c93c29b47c968a7dc87178f72d879c35aa48d5893dfec6c3324dc3c758db4d91bf9a6d42fb9f00483bd6b9fb8309d09d824c3105247c27a737796ae51643b7b1fc44282055ae7cc6787b383d645ed8d0429f611d275a93e25ea1ace341d9b746843a110bad09c0dba4fd22dbea4765b7d499fee6baa657d9e61c2eb883ede9489e4f97bb2737e3016c777c4f6aaad1be9e53f912e79f449d98bc53c8f14cb5b58c8a3eb460538b1f6ccd4641685586f7181aaf05c2d7811f4cf8750db17dff4726737eb42bed1503ae8d4914e7d4a02422f4a1decfb1b74b1ce1ffdd4a3e006b44690f367289559a74fde26dd99ca440d0f3b8209065cc2f6723fb736fd80d6c3bba0b9eac8c29765825aa29b8bbf7687d945fd922b5bb94d92ddeb90a8c8cf85c149c5f39a62627f70892270ecfa59ea7c100199ad3004651d439cc5104887a6dca8261f5ab96e6633617ddacd3d7272c9154de4a0571b8fe05d2f8f7d46a914108ebcff9c2c306f567c726c97d032e12d36e76f30aa5641d47a25f759691a83e10b6397bf9f3550af58144935c8dafc83f3eae8af926997fdc91ddeca8dc2eb6d538ddf9d934ca7c6682cad96520a0ceda972327e5c0ccdde4d677895ce17058e4e42451e933173d0b98b647ca44c5ebe5757e3b7ce48c6771829cc55f084d10aaa2f2a8cb63c993430f0519762ebc37dc6c3c5b97abb88d6f7073505ae3312e2418b60c247c860a79c64e9f69f6111ee26a05873681ebe37f411e4d09f98d09a21c7b225d106f5d12bc8b5c7cbada02b72ab4f890a9d35b741a25b40b65bd5a98ab05d6f219de88af277d4612893cdd821b00f48a4c45f9087e2f3ab83dd31e6b26e8f470e9cad9e98eb76a7a5947a5a11a233668b5fd3ee9e885703cea6b70d2dfaefafff641d28647462b338148c249a9b0a97ef2cca4e2b7207e422857d592d12143e8e9bf278273471d70a8b6c163da017ed1132a46daec9d6ff67f460221c690c26be854e92d3cf10eb194087e76ac3910c165561caf9726dd3a1ba7d9528bed714a123352db157c2e9233ccea33dd2e12dd70c29b61f97c6ac6a48b978cdddeada68d60e53825d9ce1f77a373835e726f06a34c5f4454ab101d4853bff790fade634a626860e37c83186833a0f495fb4fb3b7c23edfb6f5216ac30ecadd04afd8e24152c7adbf902194aa154bde07f9074e685d569f634a1f361d6fe4f2eabab2d78f5b65c14d31e94e6f287bd85bdf63c407392e952afe8ad01c162fb6afcfa09cbe7bbade1fc808c1063d83d60fbd4073794b47fc47849fb02e4502507e82513b0fd18a8b3b8a256206ad0fbd04b4c3b6eeab9444c60361ae4f2c3c6363ed76a3b7c0b3a41649280e427fc30bab236a3c66cc3565fa3f707cb50fa907c12b1bf42e1bb8d3df571f08ffe6d8f492a9bf33950186a9c782807a775f931c7e7c7775e1dad2106e6f552dd58394e55b33b1bb41ea2e9721837768cba06a942f423abf56b5071cbe3e7d9c1aef8459e8a0866d40f6fa75ddaeaf5443c2cab4f9941eede51732df65ca64a492d471d89b4a96fc0ea321d936fd8df4da8bb17538891ec5f12c904cb64a35c759f498520f1f8e572b3c03c4dbeeb0cbf55c67c4fb1f9d295596cfc8e3fe3673a57218672d2841b308995d00a63e4ebd300a3ab7a04508a90f25758ae508063f3de79db9a1f106a0a674d6c6c67d7e710dd6f5d4144e4c1aa1eeb13a8122834e72cfe600ce71265a0ea2bed8e50aa1e3f7788e76aa1f5c9e88a6beabf369c4ab9ebe18eeba235dc7ee0958a05419b67b80d11004f9f383e68ef80efb8083392df2b57068c9ad7add0189576d58cb7a9bd9a71924fca54802a1cb5b71ab954af777b1a2e633c8c6946f25a0e15c86482d1c9d4a3081f6802c495fb10c33eff8d15f3e7de018499c25f1cb59a100bd83b5176a847e89c8361baeb274bc6164540653ffe1fe79f79d2804d9da016e19f13c61e22a420632b509ba16f10e047cc2cba10a5f33df35c2b7d0cabc14d1919d1a8edb70626e3d75016dbf1cdf6b44c8de5a2a533d83fa3ba82389e2c367bf9ab9195a3082b287540a3fa2dac73f8143dee40cb7df83c667b8eadd99db832c7820e4465c34cefe5b07f09851771b885d783c16930bd1feef8d43ee0efe4a15f61995b411561507b130d0fc4d801a2962647fad2763ea23ba1c843df3bc2287057697abdf5980381b3d97494bd12004fe14111e165b1e67ee7a71f238ad25dfe9e179124da68e4b380de3306d1a8304eba27657328222ca036bd7e9e122c24e1125371062a692ec1a9bbce0f247e1145be3a7ee83b97aabab3ba7f670d4a0644f51b4ab6c32015d006fe0b05263fdb7902ed1aa6bcaf149bd0dba23813f73e260642fccb90ebc3f953b7fa268deac845a399f496c20e2d46aeb623ee0df3e3dce91e0f9f2a6f87c93bf30a11cf15579512ef49a5cd2596704fe7550db936b88ddfc652d38e4fdec031d3ea4a2918dd6cb6e49544423083069bfeb73ab2f645b5c729eac9e31573d21c5b68bb395ec05ed7551be9f57139a52e5fb3bf19c802a37ade8c294d7b8de9d138cf2e27688816df9b168ccb0a612001f26a0ac3886afa6e924d5cd0895d605e1019d45934a8d1e6c1772b60f1fcfed4dc8d2df5ec2f34b057171449459f892217cec1c318e8e2952b0146c7e681fa7aa4de60bbd4db1a254b61c26dce7929bc07a36db94cf92c50c987635775ec81e464027bc5ca764d264d4d1fe43129f7c0b8b8345aa5e2abb433db8b864ce6370609377dd84e22c164c683a46555f62049e0e0d78846a4eb6b488dcbd68b03728aacc208cfcdd93c20b3a311f4b43cc649ce72f9734aa68f46226ab5d2cee0be539149e12969eddcad6e0bea1de2c17cbf270aa3aea144ccab86f2dc190c7357cf52bb7530f02a8e4ef913f552f76ecca8ec00c1d8ad10eb5722945b7d992ab21741334fa1ac139755b295bd487190b1d05295a3d7582fca6a2fac4f2ce7a2f4e60dfba3f2e4ef0f9fc0b2126f201d1d693f737d9eaa905cc65e9a58f0c378795935dac722360b6156a37087742429747569c8e7861f9c24bd1e4b1c7a3c894f80ccffb41827e7cd0ca59ff3da23960f056f215d394153be1099a9c5bd674bb8c39f1f899497bbe71f2becf09b3146bb3d670dbf2544da5740025b7e5fb22fac15cbce08b0ec2e15701bbb5fdd12933736bbecd38babcc302714fef92f7bef54f435c718ef1cca1467d29fe2b5d68fb9a04f5fbe1336c21eebcdeaecb81280903c9d7c41e0fd4e734e63cf6101f2a66a45497d8ff694ee0d3bd3178fd96fec72cc1459334d75c116f61cf28645517be54cf664b5b6afd479dd045c1f732bb1c1f52a0a3ffb6fa6b4aa8c1941a6128fbc5aa6af8368769cf38e2cbc5f25955677c01783dcfbbfb55a7c796e44ead916f3777b0eb38a84b8a230d6d5121bf3ec44fda1bb248d44fee7d4915f878ff08c83cd7da7e06e162fbf46b0c182e63ebf0828a4be548afd458e5ec5b6c5efa30bd82e7cca0a32130818c70df9fc6df1085c1a5b4e4f6cec41573a8500fe7493325474833c16452d188e3763e352e8afbb0a8ee83f1cdae41b9d86641df4dde05ecaa5f6a74c855b9f971cd9b157e9eb69916fb3b264c9ae9e9135d3abae92744a03f591b6d7e42cf7bcb74d18677ec83ba2009073f52e1c4bb633ed34f708c8ba3d88e2f948a3b8db1c166044dc5ad66ba5cad92e413ff48a63de97acdf38e8c3a614fd0d14162db0e76e5e2c9a1479293561e98fdf3ed63044ca67e23921a248e5487d5111013f7ee5d131f1847007e7a0f48f0f09e37576d9d908f61c5c0bcd92071825fd7efb55ed25a19704bff80968b482fe1d42d3b4f6a322bf63c3d864b9714ae4f779be216e7785ce8748b1abc401e04b1d545024412af35d2d2535835cc1efaf04b44ff8e996c9d0ffc9bf991f7238a32e03c60cb8df19d75d080ab6eef3c7b28b5f687574074fb35f019e0c98a1c5c01cccfaef28ff4cb21a81ece2d84439bfda4723a7393d1298224a469c81d5b845d5ee1c63b731f31050152070f777d6049f8919adf52b2851c54930d2e16ecbe9ea2e227e5a85db962eb161e01cf473236fdb2d3c79256ff749ac8658f22c7ba211242f025fb38dcca7ab6ccc8badd510426648d82d080ddab2f0a72ea33f9c3ba51a689ae5b6ec57f1da6bd17de03f1df52d85bb88bd14f58a45447b162a2be82484cde45fb3258508b9c8ff9e9b74e2c70997109908edce5e75aa8c23758885b0f70543162b251f2c980a928f1ae80fdc2c615c81a4523540e31558d43188a68fc237cda4850c845ee7b73765f035d6bd3e09b1f6b20fd444970f51e74bfffeac08542379e66137e7866b0c2802212bd603048bc27ac208035b34c24facb873137575435953f4f0d22c90675551a83ef795de0642764da81ae6f1e8b42bfce5787a34fedb2aae4c6dd9730d5d96fa40d42cc674e8b1caa3ac1a0df6ee5411cdb123131ceceacfcccc5ba5ee24ab52088576102dba7a1c9cdc5103bd8df767d3377462c94a474dd546e6cd8e82c5063d068046efd05c757c54b8984c548a50f8aa5843680a9046a4f6b27860c5815471b82d7403d9717125c2ba25e3ba5d6e2a4a27a57a1368d8103bb87adf2dbdb3f1de43becb97ff9a0b558275b1689e4dea7eb063f0a1cbbb06386decf76f40ba2921ff80725e66746d448147a7bd27c74751dfe6c7c266704a559ee753333ada300d3d79e7995f616e470fc6144d261c78f0e9e599dc3beb0ebc517b7e968985719234ba6c468c09f51c1684445d8af3552d12305b259a034bddbb8766a9d87f6483be718a75530ea503ced351694aa357fff59c592a64188aea4374b0f08669091a2ebd5ecc102ead438a88679f756feb0070863b49a6a7285c98f171e363cd1c72b910e506932e6ca39575436216a9b4ee076e93367dd28a6cd3396770393b0b0c72f3fe6fea2820f11e3c53c7e4d6d72af3af6b7a4c07e09aaf806d772639484bcd11be6a8710ed7f353aff1bc9515f3ca56508ef444c742acc85124dc915fff8bce8adeba88f88a1d5acc05b2effc44df0d9ff453be464a2017b553a3ae50abe578ba1fe1a93c230055770ba2413d9abb530b481ce47cb4ec6b049fbd532c2af1145d83e451ff30a0040d31f5404914826242b79deac16bca2ba2740d8316abd841a225e89480f8f745acba4be1bc53c93f93a5952965940b6fd7d2fc6761442c96a0ba4f168c826d026ba18534a863fce0f06202f26c6714bdb9ddfa88341795e33fd692feda1b69ba2937e4f2e81301aa9c824fe2b71aa7ce916de17b1e102a3b8ad9ae9525b2de816d88c7372d690abd20e8a8329b98ae8eb0dac133e3562dd94333a5b3265fdca972b2d03f1eb07b98b82cfc4c75b75767e813eb0909b80d46f8bde416d599aea468aff9844fdde1b8ea4425f7659102ba41a7b8ff1982af8e0662f1cdd97fd1aab28d6c8b09d84805aec872e2f44c80cacfbc22b4c398e193ea96cb81a3a240aafe737928cf00a276afe1543987b4c181e1c63f2bd7dc1b3580de512398a8ffc18e4dea29818a633a8e1b928fe250f45a224212efeb13bc46b0d81848d09c5998d113869eb41348f945f117de06ac799136ab6c1e85d5933bc4c3941dfddcdc86f01eaf65cb5b057b20412d60a91f150319b4fb2b506daccad709a26982cb59c2fee48b39c97bde0238983f873274a0da0f00c82a71a63c84e8d47dad0840f51dae3dedd5a51214496c3805e5d4d571e2d33825a3a31fbe19b07753852fa6f56fd66ebe02f214782deaaf70d6d83ded485b838071e418f02ff156e12e6fcee6e2e4be1732b03bb32ea542ebfbb2c6be7d48a2dc0848c6f78cad50e3d9148aadaca82e78d35edb2c4e5533b53110ccce6f74b50c490cbcfbfb24249ef90844494bf915728ab5a7f4fba4c8a9ac99695c23e0907c4ea8b47db883ba3703548609d6cf540d1e0441ff344245c6b1bec9d5de720a91bcbd3543cb725b617f445285bf543e50d75f1aec8e9aa4208bc9c7f32c78e04deffd5d53b43afb0984a4eca0290fd3b8d9c72f0626440a6d618341b08d571d7aeb9eb8e2255a5d2a34db5f515a60a6f2ad250c9def7834265a1a112b68460596d2918a8c188d3f2d3fc6660efd7a95ebf9498c58360c7a6c2db354df9262eb1ae38112f9b8866faecb59f445f35211cc71c7291f428a5b6233de47658bf177b08e727939ab55a676a61cfdd573dde6ed0337c7fef44cd2ada00e07d1802eb492b1672285ddd15ca5d32a7eca976d04fc0975e079f13d50d9b777714416c9e20cdce46a60a41694a9d13b338d1b3b26fe4936b407a2b9a3f15894634b1a7fdf7634875a9bd6edf21421c2908d153a7afd5b9b36bb59191f3d761769643ad813cb03d9e327caf671b77a5caaa201204a62ae4a169423f2f318987c53b0357284e1758be24c00b271a97dbcbf0a7376a1ffaec104061156c556ccd80e56f542303cebb47c88f2875949be4b7aecb3e50992dc2cf9ac0a3528e38e36a9bd2b28224d3fe1f49267fd113dbf5303d8a3cf2c6a3c1b3452e6265603f78cd29a26b93edb91477392cb1ebb417f33cfba7a0360c2387acb4d73fa323e32c949df7aa868e44f9b20a80fbafa9dd7088c9eb1e75071c96c77c1aaae9815dcc5ecc12c01aacce239b968e09a7b73134ab8b6bd335053c89b5d8e46c75fcd588edcbeee96ae0870d86983babdeb98f8902ace8f3ee88cfb12d26a60e4e65c8332776e671bf377e548a315a2fff1b390d27973ca07fc8f4508068cf897966bbac3eec68c633b078459c64b564275fd3be5c3fd5a3a62e9ed4c2c4e385f0fa46002a10be874cc1a1d60f99a883a79b567a9d98413afcda64c2440419726def6af1b20adbb823d3015d2e1e4882b9f94b30071bce28061f2b3a671788235b6b35e7e5c44686a5c1c9866ea11995e3375c77884631bfd5018f3a848eedd85964b978896e0e55745d6d6464b75cdec7252e519f1a48913fbe2c114e20fac50b26551196fbc90b6feb8d8aae59e38dc229953cdf9be2fb2442b1a0f22633881cd148675aa2b0c780a4b496fc627af3ddbe0fefbc54a0c677b1bc66591f6327c1d99cbe165dbd6f5535dda0ca12e24552f0954fcfd0dc7498e1946b062e9a83408458325e6de3d7ca3dd063948e5620fde2b78c4e22ac1770dda7858797be526e70087e7ad452667ad24d26125da8f8fa480c681b5ee7b22e63de9ad445ad0f650a950164d9cc6c83fd07af88ece40fd3edee10021e4987e767bec9b647ea7c351769f99c8808a8d2396dcd540b8f9f742f8f283dfe99d35c8e5da41d4fe19cb42fe824642f27977ff84241a26e67459a7e4ec9761fedde2cb423e74432b6410b3d355540e3389d7c1e100bad2ec5ef06e06eaba6a8ec5d3a665d55b06aa5962c01499edbf9d01ec384576f03457ecc757011c1354036859a699ea54e97f444e38e5824828daa0d5976a236fe1560fc04da84e3c096c75a8b31f4a787f97216b7cc8bbf5dfe5c9409365bf40be2370d59e1e36badd97a18f56be80f95f8893787f703f0b47020d46e77775e7b536b7cb5da03d1834193b1c173538c489ddd7a571e32dc0848a2e6f6e2f2ff27f520c4cc2eb3a4ad8459cde5defe164d167d4079a57d53ebb4e995e29419d0cbb8f8b418dc478ac561c8c84ef217a60436a3e2eac33a0fcb214c7cd89ea278bf70541e22f47d0021194991092972a95ef206ca8205f1abc1c3717e8b849a54a25530073d1da6189df07f6adeb299fd66e5bb8b3dc9f114a4106ad11fbf1d72ba838bf9e410247500b128f14df0b53ed8cda2b2d0c43e5c3345d0fe6d3be320dc7b6022131a3d29762703ed53f93ba5af0b6a16767dc03851e0ff98ffd996d74fa02d489e9e3654bea5cfc3941871d69b271ee2bdcfcca488245991a5ee037a7cbb0ddaf291c491b27f5b9fa24bbd52234a4aac176bfd5610989562d4c20f4a1378609937fcc799a58f9d98d7c5cd6b8ac3a842ad53560faa882c818613840d1ae702a0417e5da9f6b1e279da6d87ecd383630b1c60bcf26683c7c3418fa93277fc17c590c83b8fea470aea435ec9dcb2a0e41d94bebb6e66dbc6b5005db2fd920e61a2eb1e62757db5d2120265ff0ae7d63675e66b9e5f1a28d6052d95f408385c26bc18dc16c269e63514098684454901f6dd15bbd27278c590828cc3f4a11c83af8da0ef35aa11c5d5d69678d56dbfa4cf8110d7a1ffc5513657fe6840cd65094c7c7a58cf4e52c5780fd12493cf6b659332523936d058306f7a2a7918fb03d6ebf204ad1580885a9685cc2a5565ae8ed3d65131f294bc082181d1deebb600b64728af989c7f387ef3ee1c5b4cf5f98e159ac66316fc294453473ff4a1dbb3d899514956e75bdb2d4ff2e440b52f127692c20347b8a7219423217f0cb5165e52e643063847bf4de91e23fe921a39037d874ee4a8087c4a6bca8554ea1cc4d59ad3c5d7250a4c3d365b0839c0674a067d16bb0126eaff6780af66a746096dca0e1314f517f9dfba1f5c80e56ccb509273b6963bb4d7c95a4e8ea4074e6c73a26d595a09992659c9afc513ccee69b70a0234c1e71a1b33a293aa54272255b41d5ce722be500db65979840981cfdfc4d9f1417b5d7453cbc3d514c8af571a2bb7e3a1fe136ffeaaa611da4d824f943647a899a7efb14b4652d8fe86a17554df36edbae74141e0064b91797ee1e1db0307b7abdfd41421de0a2920b28379a8a704cbe920a2a33c81bf15b4ad53aaea724f50e03deeb7b963a5972a7c0354628b93b2339389869fcb253fb5ae600597e940c867ffd7038b7780b44ead4869dfccac3844ecc472450068b4cffc1301ec238d1a9b5f313ab0a44858d0623013c9e678db55ffdcfe19c8bc9cd98f01e18bba9663ec4e93ed5058161eab7cd31d1f06e47aaa2a325906d29126992fa99be222b56767e73f8657ef43e6466b3a4812cb62da93c374c48f75b7024118435a2893e40bc2c02ec077546a513c4fe4c8ae5a2b220ccbfe16c69a69e5fc01c9fd3374ecd9fc85bc2985e88748299dd3c7560bae5fde6c193782417b088edd9e951d4bf27f936eeea719af527695b726e10c3678015f0b47a5f4417baaf7d796eab04482503d7decf08bf91bc9e630dfa78ef6b25cb4d940f2832022893b772cf7afcc51c13da60f10360a79f565a75e1c3fe41e28af467543fb0eba6d26e2ba6ae5da63ed443fa3e70b6a19f1526d4c3be10dc50233ba7ad308757b9e2ca5222507e0c112e05a43a981ead077096f0b6f22c294e92e67186e0c9a09685686cbc0687caf127af1935cc28de0883509a418f5eeccc125343df6354a549e3c3a2f047e6a1af3ebf9e65d36cff6e617c1090dbb215fd346fc7ae2f3902415150c22712d470b5f9dd349db59063599da10f1154072714b16ab62bab1e28324cfcadeb9f221072535a45c5be3ddc46bf5b9fd6d84e2c3b9a5f46b9ce64ffe2a408d7343d1fea4b6d98a48323a192e6ca24fee4557fd04915cace9ba739b7908601f8da916b415a901cb230e3d22aa6e62eb8d43c1bd10ab50fce9da524efca3952ac73aedcdff37d450156e58192889913da1fe3e09acc32effc7d494224964136b9779be61dcbf19319325ed6191990b6cb884cb468efab27ea218b05fa4b74384a29c65fbf443bc062adb06e523bbe070cbd4badc7153b1d8e1251f02728f4546c90d320e3eead74f558c628464d419ebca65649f7337ae4c75134fc89ce0787685edb9938c7c5b2c1307c577410a8d93db9e9d7a40f20634760ade7edf241b6d3d8c7cc210e93820086fa18e7948c2c7c65b04e06f33aae66dc929261bd7f3190ef2540693c225bb39be0f9042bfe7dc466f19c4f090604e91202ecbddfb10422b5abca4abbeeb47a13d1333765fd62c3a1c2b349e00a56ae376b32d1f9593085eb1dcb6103749e5190e31694262260f749c0fcfe75f0d475644cd8d012e8c145a1b736321ab61aa77a256f576c25330d79cafaaf9ed4226b097a83a1652e7e5996f8282083bbeb8e74310890fbef2f8a0bc6070f6cf8ae33092aabc3e146a2b33b6d5142c2fde5d138c0fe28659f4f6511010baa58ddeccb1eadeb4c489be2b9caf5239226f57a6e2eb01a2d4dbfa7a6ba23cfa6f9294774068b6cbab489093ab4e1c8a0f0b87042526b7dab44ebedb4eedc178a0b09851036b154992f1b83a3439850b26b5d1ecd8d39788fd028111e763722ead9934f18c63b22faea37cb27e4ad216f742748945de6b755309949b69e98189b3676865a157c4f59583d6ae8a10cdea6d2de4e79b07713d85bbebe16756c0647014d308d76001358d3cd59c724d26cc9314c0415f61c1703034c4849ef7a3bbb8032b996a2cedebfe7a07f88379a8dfb139504366d5090b1ad1554c6c0e24e5df754695147c772aa86ef8309f3e3a2800029771e19d90bbd0b799aa9e4e635f8715b423aca5ea43b74dbc363afab052d479f11175c98bb7c44c1e014e612a760b6de303ea132ae0ccd18cf5f04073392ecc47351fbdc710febceb1cd862324e1f6edd4bacc240865db6755ce757eb4993cecdc854b19dcaff75789aa3633f1f32ec8cf4b1c33f7a6b3e11bc60b9c935657553ce7a303a2733abad233be90aa7e6209776e3bd6c08f2ae5490d895179a435a251ea39933e76bd5fbb97b6bfe1e3d24c4f9e369c097a4cf6c07994e1986933c7d543ea17075b32e7f7e05d6bd3e0f7af7d8d415b51dd56daad743fb000cfb7d82cc46cf5e398e3534aada0c82152586b87ceb2265cd6edb7e3602e570457aa3daca42ff78895b2d3ca81c6043c4780f4bceb787f91bf36e8802190bce75ced8c9395ee01df8459e3184231bb46236c257c5bf4b687450feae726ea16234f76be398c676b6f476d28c1ec0fb0a99a4af24d2620e83343b6850dc268c50c8084d4a0266982cfbe55918d955af9db869ca5d26ce8155cd6a0e7d62dee85320f29581671473b1cb288575ad9c5c4b5d906b6d1e29e9d320be5544a02d82551080fccc675805d4641fefb0df481bb7e145cf644d07a0d976d32611a0175fcdbeb2622162dba3e7b933f0e6be897852308c9474ed9b9477a3116d16b2b733f56b6d47a5a4c673ba5f2a29f8254df437bbff41f5b620c79238799dcbf305ebcafca353c1db59f39ba92efb4dae7985d5a461bcff5f60cdd2dcd52b799ad124e3f36ccec0222d70b3f0d910afc6dd116763cdd295465b51e021110fd55220b10bc2c9280258bb90a6ff72d0232066f6406960b25a078b90f3737946af47fa18be988a73b79603c98fdc87edea224a85ea9ba172db0260dcb2fcc852aea14a1662286ee436f84ae7446b51d87d5d418208a425896713321a619399b81b92e41760f48055dbfe498aeda10549a51f81a61760c45379f503445c14bc81c03aedbe0327cbc6744c5ba5e9495abb9db3351df7033391ae2427e9ebb99ab9d104e3632e0f8fd8488693010887ffed4be7660943affde6502f04a85f5067f4ec383b90d9b1b550a38804b70c9fc66281d7bbfd7e84aa5b6ec209b87d5f57c424ea168469198a9af64bd0ba87bb7ee2502f5e82108b47db81f00a6341a399441d86e0b0cf4c8f448c1d1a4bfb9f4ef7724d519509e6c3b8ab742387e96d0190389cbb3c7d18107ec50d5783528e7771ba01ee27c3293c247af48e1457cd9d4ad3ad9083251303a1ebb5f8cca7d3fae298d4d79c47dad0b94182be90bb8d931791192792508800a590b7ef685bb79023b30aad4d8d5cb5f205e25d9697739a20b9732fadbd3253a97f970de979c6bccd85d6e60681e4e4aff152e85209476f92a2dd58cb95f09f6e3dd6dfb772b590c1196adb88e02952b55fdfe2076b8a651e312e8c156edb3bdc1868388e1e52dca1c8da9708e5ed752c7375d08941f6047961fd2f6b1a6e0b7dcbee39fd15401e54110954aebd9bd71f404a7ac37a1448dde5e4e8df4fa2b0fda95668e7577986867cfe9617da8d8aff83493533fc94a287d287a1371730e1b064b9f00640cdc0259173bed404c2a121ee93636981356f375a33c66f0f59f90c58a81563cdd70ae5d86f80e94d064b3bf84d8f8cca56c6b39a2a883580e9422a6d406fdf382b4ebdf4352a4fc5e899eb4e4122d41a99074479efac6c3c59f3498aa978aedba59468c1edd37205f40930ca12ec11071a92378f1ae6a95436974c93e3b6d7652e32e58bbe7cb38d0267eff50e5f23942d405d2694eeb999437c37fa029fb564506cf8554b07e7ecb2196f2acfa97fa5ac3c8b4540b219eff4aeb5df3e447919733da72ac35ad6bb46cddd34399ab1bb32b11bcd6f957c6d334b95c372c0a59fa40ebd82f780bd677603c98f9b84d402e59d69a3a8894955933348c5f53b926333e84ab92a76cccc0372a72be83f1cb19ce458f196fd1bd165bd6574e973ebe88fa620908883a9a015f550c74fa64cb58e32cb6e39de3f885083263162a030e1303658c47a69ecaca5787ed8bfef40b5cafc2bbf9acf3901555be81c0ba6349273b6ccb24b53a1d98b7a530405aa655c2b35e7dda97b3fd47160af9a2791a08cb2a89a0cc989c907f0add32794083cfa91b6f09a0356bcad471b9f5f14726eb20cfea79bd81ed8bb2cd865f03bc4db7087a83927bf7bcf206c188413aad56e8d96eb1917315838986c36560441c96b739c433db18f66c94954a64b81233ec4f5efe9dc07a973c5a78c9a55bba680ab1423717811cd02b3400108875769336808782a1fbdcd7b50780df5f866a6976ba51bbaed863558c65bd824ed78e5bba46d9919d450b4471c051d31362b97c612e36eda9f837a5df04151a1d8dc3f519aefe83a33bc366d6471031fec66c83e1976cf161889eabe56cd6357c6ffa6aebc6010c937fc0ee1d3927ca858ac10158ec0dc24e514ca58ccbddf58d8e3852852d2bf081f46823c0a4cc8b1a149133592fc600e179d2de65f3b180156a1c997f71a1f2bef4b8e241db77bd94d617e27dbaac4f9c39c66edcc288d1e298718451cad79f1ed90ca1a16205dc0c892c33b3351112b83b0554306467ce860cb9caa84bd1e0124ce6f1471cfd4a1e4320d74f7881de2f4c23397b4228447abcb4455c6b9affbe46637909fa4bccc531472e8985dbcf33649a458b0e0c2f3e3dd9aa8cf0e57fd40ed0488838098fb2fe0a9341efb091d6f8f22f289c61a0e80b096ca5d3fa1178eb68b87f87f81a273fec3e9a0ac2f1948151cc202a28625213b0a87854af2bceb7f626548064e08800ea3ebcd2a39736efa497591faa70c083f8c8c2d62d1d5b5223798b697c06799ef3e18663ad5e6127b1b65e013f97e9b5702ff93f184660f5914e6f683c7646759ef94c19a1be46a7c436550c04c58e59a2cfec4f3b8406092eb37b06017d9750441a44844b2732e29bbfb7103860c12cad468269a293ad4d7d4af0054aa5ab46217f5f8f6eb491b9ecb568b84b120f61183d7ef428cc6d9c0b6bcf92eeee5f9e71cf2e318ba5073a6f07419d1eaa1875bda83abbf30a0a47748ca1d58abc47be2c3b6aee48b517b88a6da496fb7f95f2cfe93baeb1460aacd9f58e685ee2155e359f513e874b1fce174e27dc0c10a3b17a40bcf9264832760bdba41497fba0ab7ef4760d23463c494c82bccb31d347ebcb27672a79f619accc8770e68adc0fbed171cf792fa4b22c36eed814881b4af5a903b7fc9e00347f5ee4ea1077f59f3f4bda7ccc7fc586cdcc2f89be01aeaf6ee8265a51cfea2b355142a44a789109cbd971bea7b416d7cb9e10a4c63ef16a3e5c3a1e86e7ecf2c67cddfb3eaff3e07f7f395ee352f202fc973a17b2feaa4a85a291c20af9ceb3f154f819e34bea929d6e62e8a56c1fee54ce0e842de08601aea86e278b3d3ac404249152a116089586e17d504c779a204a5fb8170d54cc0b3102878ef4faccfc55bdd0c7170a8c6d299af98b4f7697a75ad82cd07aa5c28531c064ddabcc7052bff2274fdb0c67436723070892eed93252af523bf52fff07bac9bde604d606b10aeecdb517a427a08592d798525ee098643a1e0822adb34d0c27762fd75ba7ed792be3e606798e832902f353cf9d1020b13f26eeec222939e63f2fcff2240a9275529af1481d1b97e6244495a67624eaf3f5399d686198b52c6a4b00c5f40e76cfefa71c8889f8a1ddcf7d41a5d51c66faa3b31c12c9aa5ff1587659a498d0055eef742ce12c86e2313be8bcfd52f8dcb2a31c86af9085ddac1d5a0765d721154df0de7eb70e82c08000d5a5f09f228495bd7993ed25b97be5d20c93e07bdd821fb32dbd66cdc0528e6a885c2ea5a3ff2755bf7e11f2291a912241ce78bd15c38ff62e3bcd251ab444ce5e688f6e86bd440cf7ca980b64b3d9f53ce373f06ff56716c79bfcb5230ff84dc0e50511e407e0a4519214b04ec40e82e264b0abf01ffe37f9f7208d18d62c7dfec52363e0087b6be7a88e08afa1c19ccc7134203dbfb4ab3665fbb7bcc59d7a1cbd6b5d91707da41bf4fcf8820605434cfd1cd876ad55feb8d81636a04343ede4cbbc3c5921be8a2649fc578d13df475ca9e9d674f5b16ddf9ca66662a27137f60f1955420666ed950d1534a4b095b8e1ee57004272121196b9e7cdd11ca538312ff52ec478b61ef74f37e007bc0538de4e6ecc973fe8553c356e8c62199cc27717e10557fb479ddfc4a23a09e7e0294d63403cd478c42595fbf8305fa759114bb9b2158c40e9fe636ca2698f00665917638a88194ac006687989910ae2106917b99b58a344a66445da07b0d443e63de32acd9002e00dbcbbb1890ed48c57600394dc65ddf1e9d3635a9f2b43cb16f1bef20f5982570311fb06563c4056f4029e0a056cdb7c2e6c706f8dd24b80bb8f101785ea21ca68d581b1df098078e8908251101491c7468d9c85483c811a1e5996a6b76d29591979e1fd10df361758a34a830d6afe4f485477db75edf25e66d4abb06e18618e619aaf085797ff3de650fce248b794708ae39a1d034325bf772eff7281cc32e9a16f68b3290f3ea64914cdb26f86630f936ef4582f567861134ce720466dae369eb2dca45d9bdcd07ce8a1804e753d4154b9bde636e242d150ef682a1f3ff6e53868bcd1d614d7facb004759f3104672be521103ecd5a8a0a0ca1ca5d77372219aa17d590e3f9169bba995e6d3006d912ddc7d791f27db89b07e6a566f75f8bc442fec866c6d649ff01b24bf878046d2204282e1094789195595e4440f452f21fca6868dde3facc6a6abec15cec20c5b851ffe3202f97276b1aa1e242df510438bc90dd2425075c4e6d5779cd1533c2b71fa2d65dcbcd35b2f2b59218e13b8ae31bfca0e0ecf5fe84723c9f0fd9033002772cc2148d0389a57be10442f0457c37071601a9517dc1c9b8b517fc70e0c2036cbfe7c9174e2fa22f6dcc94372fa30e5c95578e288e4d3cce1a1802be1e5c278b5d76b3c0462daaea4caeb4cc2b3c896c63f28ddfb9c1e2987f60a2e46ce4605538253b91e394e5fac3a1a0b6ffc18bc3f4f91c2889ab22efc9ddf23b064ca2cc80b681197e1c1cc16b4d2544041339f9452ba3710d454ac0b1821c8c276a66100d2ad712f2bf3de13df568b211a98097ee0fff3337f408cd6db4dd9c5c86290a653f43d2fd88db0284006123877d8f0efc7a010abb91f1ef0ebe0714814fee290887018b4e57ac21cf785be4ea8058b98675ed9b8f2cfdf5cb5bffa38ee5b832feaaff60e263096e58257604dd4214f23272fc594ed60907c0953f8a9264111705c7604baa4671bd6d30253b5684bc361093da060184549eddcfd55d641087e5eda0fac69578068bcb96b11e6df3905d8809281226360213182be32df8d929c5fa51d85872a70e8806fbb3aa1b3d94d9501cfbc2f5699cb005121df065780e02507ab8e048b473bc66d99e16bff60e0f902b5b32324d8e5f7c114e3f00b9ce29ca678dbb22e04437d68233fc4b9e0ab8a81fc5150c4da8ddeaebd36914fb0738cbb1feb5607e324fc5b70ace7015d6585d0baa59e65f9e86702c1ed02d05d9d2d0abe6ce0d7f14732636109e208986c43d6eee8b02d988acf55c3493f6826a97e5b8d2c9d746638ae30f033440ac71b19070691660ac6280c66830930f8464763ffa86919795bee56e29f8736f89b25d2ba6694958c88d8a72a3bebd794572209d0b786a93af68bf51d2d61429f5a843e9612f36c1914cb3f261a0ac6a68c682348053f5e498c54bda03d9a6b2d676deb5676d59a19e48db57122d94a67a9653449b7601adf5e0594b740fea9613847e5ad7ce15be820d048444cd81b95d9aae9a4f732fff0ce8832f57de74a4e6fc2d827e6efe8ee08b08b0247eeaa9ab90c1a2e99063af7fafefb1557caaaad04da5a55c5ef15ff895e5bf7e5289feb0b988cbe749086b7f2a9f1e0476016f1eac4fd1072202ac9e6592a77fef8d31f5599b596dcc20c8b5f450ecdb2a9a94348e5f77cd3234fbd9166962100d1beb933a08f66b7b2b3496caf0f18b4c25706f30f3bfde7c05cd67291f3fd4fc149dda2a428c186ed4ec881098a942651a026a0f490994e0c8590f014e828a1b405ab7781c4980ee776c384a1ea3704f3e91ec70048ad7b3d034f8678ba1d162af02877bd7cc1afb74f44da4398863ba799f98d98147133d69193206129910d9821fba0b3de206c74f1f156b2f5404abff32a5963bd2923ba36c3af0f91d991ef6079906cd4c3739a4a4d19214a1f5f8c3ada3353e7a255dee3d931701afebe4be2929cdf97f356ce8b80d2e9e2c49cd41ad520aadedf1c983d06ed5e3c5646ebb8ed6c47451482dffb2cafa81f6052992acf9ac5673d896a0f7096545ab8018f1f90dd58af8bc809ae148d4669ac262d262a5765933755290cf8e6728af51cfda3565ed90ecc81b6eba0e3e65c7a99dda17e207d83fd07d879d4060f7c7ba93076e487e6074fbe931cdf2de17f7585744693ec2bd4f0d0c4ee040371dda7efc08ae64fce3f87d8874242ffe3bc62bdfc039f64f935df9e7b9db74ba2d2a3bb2b1df3060b36c72cc3dfeef0ce290b0d9bfc4a218639c286af928f2179ebbf1f4a3e207a8c05a973a8106631b2e3435bc6510b2cdad7473e8ad15e0630d9ede1230973f55146ef98d607d0761a8179555d237b5e16e7b0523d6dbea161d6bf1f382f689eb9984e2353ef3e2b71de0b342b7474a0a3195ddd688fc3c8dd9766a902492b674fc9e66d39f84491c106e5a783ea783c432b7922b7f477287b274c977c6149cfe923fe7bfe0bf1b32b7097ebe404734cf9af86c456f591fa903937149629e8a185d0aa682b49eb7c090de532fcc1175adbce566b8369b57fa2c4f253ca81529590fb8075c793d5d2e8128f5bcfa530d256d47770cd50b13673b84c299bdc808d92fae78bf5a3a730c84b4c2a8181c25c366d0973d365f74402176753f4bf78bb642cefcd243e6e98bec96280a1bc6cd55be62593ecd3bb7b97edbef1edc1ff591064e54efa1b1f7023639dd4e66307a6f67df7a71fea0fd6afa270fbd8b2a960ec1aa4725f77e8c6a642139b4e45275e8c8b1e3305ac04ad02999c3b604cb1f589b091db63cc524e3f414cfd06c32c35b61899748a7d3b8ca09c8f734cfb3029a0e97719a15ac182d5e79fe08786a9da77bf3b479bdb95e1c07c1ae7bef74ad8760b7b1fbd08b1e302114d41a29c7e970f3c654f72f6469ef96e48c60d41f33d32f1a33b73c7b7b74698c2f93a2a99e9b09942cecc75fa44f5f1286cd950a90b7100384e147d547a93d50ce58ad3006d6488a2af3ce010cacefe0793f834c53713959db4075e0402140bf8e21af5f360e7a86dd9f29040b5a09e41c4802ceecc13e50b5cf1d02dc51ffbcf8f9f0bde1f6a83a60f2419ab4117843ac0dbd05416ee0bb903b8327b354d60cdbc03528d98738a2aae6c148a36d7a248fc820bd6cbfe5607168b24eed685d1997a9a0ce347a0734a1e81d0a246fbaa737472c76d4030ad543ed3559f96e6a0987bceb981fd0a484f557ef89fcfad57d4b6b8e4cb409f9bf7f939892cc6ea144c455ee6aad4b944af00a1f816a5777545aab146c66a85b8f6dd9b794d91195c976a37303faf2a2f688c7df7cf1b1fd9d2e8e69767f39f4ef4473e6731f2577f7bf2a616f0b914b52c3cd789a2b9ab57513342372b118cb9df1c7de5c041d59ad45412d4b98362bd6274be0011984a1a240ce211d1f266b5dac6f850e2a8ffce05c95a54cdfb585aa4fe625295949d2fafb223ebc6a4a2e30beb97bd90db4330fd5a405cf3225da83e937ad2a50a44fa9e50848c254eb9915b42a820f11ebd12770435d5bb86187cd504b38b879b6901853ef54e82f78cbeb01f6aa0c7a362cd724194767218980d4cc21c2741282848392585e91c9e0f440938a5c4419bb294f6322efc3cf7e11e4d12f29bfcf702a6f6f5a3093a61ae927110324fc8044e4f1b62c6977ed69b3862adea93795ceba8e561da8be9d9fb861b4b4579e29c0d87f495d57fa7c34f15cc309298af64a5fd4055f42c1eaeb5d6e53a489ce6fc0a7abfeabe0134c0f5c3cf0824e47db797bb0cbf2f939cdff7956fc0dcaa914fa65351962f7cd00ed8f88658e6fd6c95485c1f63c761ba9e22040d2dfb9dccbca7cef9ca2ef3b2d0448f8cc6449ca35b66d763db589b5661bb620173a6d796eac1a4febdf650d74518338d1b18b22addf9865936c00008239d91d42f81db79cc3336a6a5f75274d12b91fb8163344e7f4665a1883be00d24b626fc321ae05f455128560bf3ebee64a1d6327a9b3b2877c4c5b8bae2e6792686ed49e74fa1e824d7791906fbea8f440f5ff7b70f3d3dde47a2af2b900b7a2297ced55e5fcffc8b84a418e31f3e8fc00fcca30e914490afc1803f4ff379c3f2a980db419bff37a48dc8e329e54a2d5d8d6d72c8511a6b9780b95bcf38942b48d9954edec1c1a11d4b3dc13a199f895dc99aa7628249213714d811a9b0ccaa2766e242beb561482d6f10e67face9030645c65b5ab039b94e1d8d8f20f35338c90784310da74c1a9eb3f4039bcbdae4b89dd631d5aed44482a1f6011ff255c3186f93df7307834665751f483cfa128b0ab38f7e1777f2140901199d32b4ee93f8b8fd8ad965e4e097ff3e9376f30abd5eda9330ab563f733bab9d52ae856337fd3c1a5386cf4a5816caeeefcabee07a8b7620293bdc944ee3562d5f7a262945a179d10ba4477a7884ff5550fe7d7879e346ee91cacb1a687f14eaed0549bae3715606ef065081637f7e6f5555a547ca3d2a53b009306ef7ac20506d8111186800e38e9de49ef589c5c9ecb85917f8817c4b5a286f688f34ae026da6a7fe887aa470d561d1fac3e581813a9eaeabe5c71833135354e895fca67d55b1057d9d8cc885f47fb4ada1fc2e9898e361aa8de9749b88a8687721215d8af9f45e7fc8489a032ef1adfe28bdb3195918ba837f719942980308224d5f19758247590ec6a26de0aa2682b7fe92776a573ce6f5781d4a9e99d15941e70a26a8e71a84730fcb39af90c5c2c0bb585e2294a3220b5126c0f36524e067a6c1f00d5514818fd2c09aab9704013a84651c340dad7bde8983d108a714a93b4095c68ad688e9e432d2deddb73d9c82e4a6c0cf8894d1feb040e3b13afe7ed4a3276965e27218d0ec580c4035e1a65f25240d31d09b772dc7ecee535ff7d372379a5e14d62b129316e9a9333cecdba523576d1a01366b41adc3fa321164f8cc7695388e70857cc45855145293efcc81e10e7e580efb739a8511dd175747a7770b5062817c2d864fc2be6c6cae49746c72f3f914f881d29e29cbb0ef6b39379df06b247506f00f2b8b68c86a2c974206135e67b404a4e01871cb7be4e063d87098786cd26d89c0c82bfe4fc6b1bdcf2772b03eec91ec80e0d946087e917b489915ca1867700d75b3f380d21b01b1a91b072de57d52ce9f5489315d4d1c813dc12b0caa120eb0f1e481618f171313e823bb076c87f3e222e64bc9655a96d29d13bff03344acb91a6417199eeeaf4e4811728d9786aeefa842362bb7dac8a202cb8c8d2b53ee6fdd84d2fef9d57464cfc232db1409bfee2977d389703c73af4a5ebda0b82d3a786ae8998a706d4c1219603918d1fed7a165a81114461b8b4896a7ccf625a61abb3b6db6b1e38482274a4ce3d8eb810892c958ce0065848a0939cad7d28e24cbba391124f01c36465f0b3956387cf1c084363d27d746a8b2de2cd896d72221f097f7553b4ed3cafc21b00b4e32ad0ae611bb531e48f5f37209088dd955c052e2012acd88ec3bc9ec78bfef1e373489b2ee7ce5be398c1074191c901ef35dcd454581300719961c82a36d477b363692e91f5c64a80675f32e7828176a42fdc3cb2129ca9ed77cc1b28d2dc8f6b1a8bfc66ec07087ebdceeb8b43144def959bb5a866cce55623a22f78ed2639f678a542b4bad3c2c8ece3fb99c2da62e3b0979dfee53df433440b9e34c7f38964c5d8d6eafbbb36bd8e3a62ebada16bb92aafdac54f1d92083036713b3b3ae2be3de5a8ee15296286cdb30aa71e29cc5f40a8e257d0ae98476dd39fe30826eeb820b1d2f9f5d88c0beeef91702ba7445c10a9539a84c4eb8ace979914889578f376c838c2f2569e285ed7191c52436b4813bf1c0e8b4ab86aaabce312709b0db6d2d8ba820489c42a88162e58ff99f672285a366bfbbd028e467ec593abfd6c4a4f31f4c935276acb119ab8ff163cd86fa8ceeacab3af85ce059f04ea55b7cc63544c8c30ea3c7d23fa170606442e27a19ed3aea20845e0894ae3b15de577eb3b054117595aa805513f83da2e036ada02a2068a110bba147a47950501371ff34fce4f86db6e9e0bc9519b9504d05b53c3c4660f4247da56af2a014c94a8462be7375828fef527ce8fa05d67be9762b872b9d7e5e292882a8527f8e14aadb87bcdfe623a5e0a9d49d1f68c94089a531fd39ba2e0f7c138d2ace54f418352f2beeb771708ea62300e943830cbe02bf88793c2f3a785de750da7c45f1dc4f9a7e4a76e459cce2e646680491387f8648da67f9e5af1d9cd5d274734878f90253de4360160013b1291cdf58d44864f9c427eeef24b4872242055191ca653e596507f4a79fb111bd362b6e883984df8bcbdcb79a29e66c3478464c6eca11471212fd4c4c253d92b4757a1426624bd38e8953f48e20f1d63e364bace7fe3c8d98c5ac05bedc4830b1f4383beaac4b4788ed88874e5bfcb56252ca1365bd81ea1910a13561951df263cce7b7b6f98c8b024862f5bf9b16a882b5fe7fd4771f97980a98fcc4a206ca659f4dbbf9a81054be0133fd99a4e22a48a11ce7c6ba3fc206b55c018e2fcfcbcf2847ca684a9c5a76fe9c0c543e273e0dc6e47003de7290ab662985be3d2e7f97aa164b07ff894b879e306308f1cf272d531853fc2bc8c75d2d5e645ca34c6802f45c0747a9f2563cbd4c52cda9289b36b2dd7847621f7bc80e9988c62d9c54802b926e94191549e7dfeff3bb63b59304fc8d9a3211bceec628eccb2001b89c5621f31fca0053e7b0b9bbf9159f31a34fc7bf416ad35e6f9d7e5b2138277979bf1e8607cb7f6618c4358a1cbb8fa1b81765328deb6fb6f2610c54256ae115e427f5e568567a3d85c3cd52edd1c75c542e6732ef93a7ef4670b39bbb4ef2dc0b50f1b57eda50f97e9f726093dd7ecb4771190e6962dd361e0ba00f6c1dab73799ff90246dcf82c34e2e55e39c2dca6456f2731554499427bcce0c8a96a9bc856ed180227ce1061a1bccdd4cb6b5e1646e797b7323a65d6307d204be8fa1eff2c19b82cd1a9bea60fb0c304cf620e32288e0180bb9e6501d4c16c14a0a5625206e8b8281051743edafbf33c911e7ea4285d151e792eb92940b99d4edc2ddd966596f4090096666377e2cbdc7cc55f087c30a3f12f903cb9b647dffcbc65ba9c94ecdcfa7760d707f904b1b727e4b584cc41890e38e86aa0579ecb8a31db0d674d4911889e612be81f5748ff31b49638a1a33059f4f945f21642fa9cf97bfc8ce2107550ed56b753b3278cc22d497bc74e148f462108a1f47d49d32196a85881897619681c23cfbbe97157cfc85f5ed9e3dcfc666e14da474998ce65a810c459e58da3f43da507c18cf27baed9b9ae7b5aaf27a89e836aaf9babf09f3b781d077ef0288c0579866424d6899ee15737ec8176221308fc77334e603190657cb1fd911b7fcb92349ed29a19d9b6ccc13eb1f140960741dd3445e487b42918d75cdf2f4d3fad9637288c3cd2e3a05364c48a88eb4f1a21cf1e66725dae84cc74e9862caa6379bf670722f228b62103a3417e9e9cb220a1b5226e6bd47215f0dc2e2334bd63a7f15b82aee4192f5fad93cbc8d66fe5418ab22550e56d838dedad832707265df9497cef3244f2c4671bb19fe7d26037dcab7aac8c26f9d2c230fd1b03fc94fd54e8e3655f2688e9e59dd508a864a50a76a884059af89192eece75eac99e62920aa36329ad2ef3bbb9e01dd7091ecfb6f9e0df8e475f57c274f2d061785042397a478fe511442b14cca9596a46ef8cf86c551b0cbea96712f7cf97008e9ccbe67036f28cf5ce2c8766f24067e2c25f833a826c273619e631750c64d38edbfa08e69b118a93c3a58526599da3b009197d0756a1cc5089025e0b6aa0986ead5cc61be5acc3cd46a356cd1e27c79bec10149137e0bae572a8642def1ae75eb3ed306e405f92588ddd34602b921bfe30b49a0b9c6429f89fdee2638764ba9bc6177fbbd3a86c9c586e9d3199749f32ca2526be454000d2bc66a2c4d6a856e8d7c848d87055cced70c1bfc872ed6e2bfcfa654900a4cf2b5dc82265f7970312089ac627ab203a0ca44811e55dfbbbbe31ec298c9da644a3e4c3b9bdb6948048b4680f0c4e77ced60b7f68a3cffdc94496ec2898afc67972e6215459eab711e888ac903d197f6291820800497f9cbe4e436e90cea2a1f5e14c96893037c0359563cd33bda85d00b3d18cf45159208075484921c9a4caca87c809328cb892ab3299b748bd456670e1060d2794ad4cbbed861ee45b61c7a82e043795aca42e6cd2bb207bba268b2f1f97783c2067a9dace0bd0029e2ae727da1328bb46e35fe6f0c1ccde79ce9a738d07ba5b381d2bcda1d062affb7e8fd2e16cb1874103090022278a1ff66eab0a82972f5d55474de332ffec00f874ab3afa68afb0e150843141a335345176434cfc28160254644df09d992143762a1fb1cf9c4c6a7e132fdd8398559d1ac6c657af2be3094e29ad48ecdab82697e7c18182e84859a9d9af9a32ec82710d6130e3c2e83c586e892505c053e2f2be17f28452d84b8f7c45838706e86da4107a205ee9e80585482cac8eea7204d155feec8cf019bb6ff8a40945d28e685f7e0335e29c50385ca5021cd248466d856ea04e6e24620caa90c63392cc551ff9ae6eb1ace2d15c3a9453d23c3183e18303101252fa425662153f7d3c3f77f96e684346d7f366dcc264ee0eaf32c9a3c788ced136c5a929643265092ac5d3dd46968cc0c23e26bed69cd58a6bff824f2173e8cf4d1df735e24afc9ff96af99ff0924973b66bd86980fe7966198dd3fd58bfffb889b8c15108aead8d1d2815adc7d276c6b36d3de2ea999b039d3ae114366e0efc18c57b1ca6feba6fbd694d5cfcf055e4947b1f0d43ba9de35268ae525ce74948f69a2cb3182ede1bfbeb5945be00b3427907c9056be593cba2f405c00fc537c5f7b168c22a537ae03c62e65a7e4261059cc15a4919ef9d3dbed4c32a9bde62d030f91a5a370cee0d8d1c7b4a6e21a7b22fa4d4d9b3c3cc28445609cdff4852cd4f61f9f8cadf6ed10e5565e3f3509513bde2a76d76d647aa67e767c1e16e996eb050e9069da8735adade047ba0d4748ca7d3bf186f93e75afc580f1daace4b42c96ffa0f0aa0e972cf64874b0ef830cf0a5fc9fe41dedd418aa9d03a9d5780eb3061fe4f684bf770932936a99314028a3634d51c6097fc727a1e16e97c12fe6ed355956320239a436f8b2141a7f9336aa8af349da635eb2ed83afce7137cc305409aa1b3f7416b80c81ec7735594317f73330a906c38870290aa1ab7e10486425eb78484e5b52f5e42dc5e88a92291f8337641b24359a2deb58ff2dbdb922b81c4805ca9cee78b591fc839cdfd3ea7e11b7c48c49baa7a7c371cb769cb5ffb05511e33f5198aadeff1642ba4b16fd59ea951fce22c7e9e1d6bc56e1a4199511e23b87d8a7776e0690448b4d852bfe47b6f8af5d58c4369261866baf910fea8aba40e48263df542c21748ebced365a3a1fcc02c6e28d4dd31f7e05e2e753e5c5c49d160754d569365a38dea3382f4200c13feb4440f5efe58a3a9a402db92ba0a25221d8609577997a48c139bd60f2e2404687ace73fcd0a13b1f1d080a54eb6df65bab0f00d19d7ddfb129bc5eb4814191654b0ffa33cbf51c08e417c914a95db5f274db65f9cbb68d2b3a37942ace9c1ab521056cfc7e6afa5a708f48b552d80cd29d4e263b5854aee893455ad411d68443c54ce6385ab2287ae3962b4fd5f6dc0fbc07e220062d795110974c7738f4ce4c6080474431f71ec695386c297c3c34e5c60325c53e4c4b17d7e5f01c9423fd3f9b0a80a82e7eb409d880a7efdf5210eac321703e368bc5068ee741e0a8c641c92dd39a13d7e9f554145cd479c18b9a019c543be32870a25137f6db5b8b0980d771c08ac89d1d0de4cf2c38ed34f9623ded3a367d8002e05388b0ab3d56d53b93eb22b0dfb4b03f20c3a4a58a35f60bd89c7568d0ed62b6c69036cd6f720e279c24ff09fe28fde8f0d4f17bfaabfd11760df3ef3166ad9f6026b2033b28d2c67c33575ad576f091592f7007176c028dec49aa30f6de1c0e6a95290b04a79fde19e78bb7712eb76c79d5f2a2f1f9ca043b833ca8cc823dfa25d72018bc096f50c135620b41642b14e8cf33a4f388cc77c633c2fc8ef2b3e3418c50fd1227de44f13cf4d0b2e5c66353ac5bf3b0e3f2f41b5b19c575a8f59cbfe4725e736a240d4acf7ff983219d86ebd3de8f03446864f0e15b07ea3674e38223f2b056f93dc0afbae996e294fdacbad1d65806658a2e9fd5e84b9cc071372cf216ab730e7c4252cb1670f2d81b786fd0d4f90b18064520edd1b355027561270904f5a6ba0679c95359df62799acb96143a0dbf794a954a14cd656036d30d7faf59ba57efec2abd88a890d5f2eabe74af6faadbc8daabcdcc4b733c9838624f4b64b1d71f35ecf16634237cc22b9726db12c68439949dba64185151523d57dfe0f6a9f76ba414c36c202c748a19322dab81c03fe03ca07b3e1c3fc3cb5230efb05dedac648e5aa36c0ca0788c632a4a60b9a864b505a189e29781a9c850524ba092cd2c3927034959160b3e17e6a0826c2cb8f8617a9eb1ade1a5585a0e4b13b31195f70df1c78c187af7bec622c43b1cadcd0638e76e32e4799c905cf4ccc7f2817ac36a4bcc9a1fba584e89cddabff46da8ea0c6b5637eee5e447758902fe73b62b8fea2cec027541fe8f920cb7e0f0ca22401085a55a92a57c9e273ebb7231ec5d8944465b7f49a1b3133c2055b9e062d7e9fda5da6b7098d0e33933ee8b84b083360696f4d0e5182e26feed6c63186779e899ceac7956c90fd36f292670c2e2d45692a9de5a275f2eefe1a8ea9afb0c71bb0bcc82ea1650f367413e07e0660b75cb0443026def0ad3f1d2c9ece86a0189d24f569d3442c238cc914f49b42b6701ed428857ccdd482304061e16667effe62a81ef0b3a537a884e105f4d1cfec460108e906965426b114309061858baf71bc8a778c515f5299d974aaa455811c1cd25a7f8de6312030adf2b831a38f158191d777743050b9cdfb5c528f02cf59a52f4d26db24132262b5853cbd1cdb542adad58c725a7697aa8b76b121d6451fbd0db8bd0acbb9bd3a59694070b198702624d655cadcdb7050e053e11a738865e1320376469b2f9416b8fa08c4053f03c812513cc147934e8d85bff6f29fdf8aefbbab3b0b150bf508689e548921a93ebad855819d31c4bd64b80ed56dc45a6c92981a9d9202c4712ff2ba01c2f1bea6b9c2481a57b2c7f34eed432935708052410bcb24baed17d7af5183897ac5ad482dabf1f686e854a9684a01b728d68e93202dc161e4a47e3e61779119dbd1b070dd86da8a5a73bd7ead284b610f4c4c0d8f695018ddbbae29c5c9505617ad6920e3d9fdb372f939fbfe981a9976cb67d8adff3155bf0832dae19e3810fbd5c8c7513dc5589ea346792adbbf1bd97269d7b982eb5c39280a57c3c3d675912a86020be05757529e0f9258e9142b99033303a15b85b14ff964d2e4faa98ccb6f295ca20239a0999cedd950ec7fa9f5651097d74491a8ed1e61618876ccfa19cda25c357b3696f950f2ffc4c2c5c3e420587e13cd804b277fe2370f606e6ba54f735fa234a70d70f584a2667eac12aae49ba53eda4b7c0dc676dab8562018306765f796a9f98441c80e6be3e66d5e11026911a32267985ae249f8cbe6ed40b267d5e0846e9270c789b74203f7f96d72f198dc0db20a140b882adf0f18489d72098ac4aaa7fab3cfff31b20c5d098c05cb31806869c8c72aad9ebba9e1bf0fb3e81c4d048e5ea2677198be43fcffab9bcdd606127972eabc0d0817e5b190260904f35023f05b201e2d59d5cf6a9f5880dac80d14ec51f1a9a7d8452be6fa322142c512aab020c1e1043399957289d626f976b5291dadd00b3fd7b771566e01faeab8da5c43d9f8a0cc41a29992922447d39ee3703b9e5606db735cb3ca847c9e27086a87336fbebbdd1a83517de4c33a36fd7888c9399a96472c8d9d7dccc4018b3a0bc19d97362795f9a4e09bf071bc948e5cd02105b96991003075a16287e988ed40f0b23142ddd4fbcc9e84323ea9845f7e7aecbc5cd88df7035dda5d9dc1f72c55cd39f509d3806e5c6e89c2a50440ed331eab6bc39951b34992c1083ecb955b4b090c71e13a032a9e582bb89e4c2616908932d0439eba153ae962ec4d5981abf6ac96591b47c8feb29ea15cbd1d389a989e271488c6e6f4fccebeaa94b2c026373a5c27a9fcc131efed572ddd429c2b7b2487d2f8d9b8df115b4aa9e3c1b9479f977105a0e5e408bbae6aaef78e1c0f2497226e123458f25c866e8b77f3ba2104d5ff0ffd9ca96748752c0d134ba64cd8291ab89e1db0ba4972087d1e7e7119ba65c5e2423e8e7baf73a6927295cd6fb56368e60cacf02cb6c6e64ceddd732d80839477cabc9378446d11e672ca46d838f757da614e0aa897914f578d75b8ce5b0bd154e107be6538135c1fbcf26c9a30b807b77ae4360a8cbf7b406d221d49e74bf70b0faa99f9d6e2aaa9b33dbdefb7ddebc79b5a70d5c838167f5e0fe1bbd4ea12081c43af86f395d1f557c25b3721104cb78548f5631aeac1b6693828a2a73d44acb3d512f856f6dbfcef1b8c86ef1cc3148b00ca2ce58591e2e3e17bebe62f43c2bb62d8dd406d889238fb3bc9418dc32b60d035185b958e4f0ebc46a44917d938bbb599894df8cb87f96f747251c50d2a9ff242e456863567cb8b592ea0a46332ea96f33a5345499d2c82ebbce6c539963ad53f998fbef74932f868097c765363c5d0065c0897dd4520ad767be422341658e6400e1661b8390b8c8b2bd8b0afc03e98f9cd84bc173940f28f794d44bc854d0e9c7d4e5f51d47e11bee943638f7ee5ef7345f0d5b8d56d84d36b6591e65cba5a6e29d8a20e1e822d62705275a25e9f8f22b7efd8375412808570cfb79966f7231410159a305cc987bacb5047aa4ecdb338d4a3c73fc954bf0b20ccda10c75623b4b043356bbf4bdb6f808433fb56f5f7e9964a552ff81d9d702df9185c52ee85b2df5c6e6adea1020db474a200d94b0aeeded54398f5d364e1963481e032e6043bab27ca4700c97284e5ff72b61db696051e091ec399f73f30668541d3df8571be4f35dd1337159ea735400d2f3420416e14f01129c30dae54012c95c26379f06e3cb7c3544a5c68b03f8095112040e86f9dc097f8687ef6e70a3cb90bf30855c12761a78171a32cba81c25a155820b3d28b7941957d538fa7d261f962d23caaf433c9e288ded9d346559dca88940b9d6296d08714a10127f555b5b8508d27fd8423f80d49186a23b7776deacdedb34c715441a9c2a3a4da59d0bc34af7cd0e8b69d1b441925acb9d6222194d84aaf04554a4fb89cd85925fcdb00a32f9d783910838c3e408582254eb51d7bb41fa364e6054dc6d537a2402c22d433d5b5333ade519b757bfdab2531eb014cff7bb983024b3ab05451f600dc9b307777ce0fe5ae9ad4537a31946371a64610696939a60a508b73330ff6b42162cc9a41f6443bd484afac630eadec6847005d399a5c71620aeb184148de30b60ec8fa325a2780e762d8134d059b44519542bac767bc09f48a4a3381222efb79ac98889fabd5ee42578966c615be29cc36e91e0321f0f9ae6acfa9a945a682eb370f9eb0d6ddc78408a3d44ea8e10c5ebac652eda83618ff467303a4dd0b61b4af9fecde085241106677fbda381dccee2e7c871a6545e35e4e66b3116d59f11db5495b7c0708f98e7c783052d12f784a4c7b7e367c96f7c3dc86f5c16f47eb95bcc4cf2bd6fc05685a3dee1354e0caa02bf5207c64d04f2c2880a23ccd56492dced11163ad16ab4e048f726d962c7c0590b78440c220fc1afd61033d1bc7791bd6d431f140bffab2796f00254b51d3f1be3af76696a4dd118bc31432b022be3b85171e735610704dc94ce5f5bcf4a7c1e861cee8bc37bc1c41c3d9bd854aa889c1575cdeab8c9f9835d2540859fe863421b06c53bb45be46ba755735eb2bd7a8a6832ff92d9fa65469096b7e09e5d5efe7f31c4adf75e321ba959126088a705e16c5cbdf7e5aee03bcbd28ee5f7e9ef940ab2702ad4ca443398769cd2e855816d93e9d81cc322b6c86530adf8f98243f5da2cac59d1c42c581ff909cfec9d25c4e1d1022f7ab401b8785ed4d39e98511d38e896f2ee0a3c35be4d9bc56920c65addcbad90736d5de56ba562b031b6ca366a9a4f43dd7d5de49340d8618e20984d5e64512f7b1ef49ede3cadb0504488d628860d8bb0163bdd5091b09baa993b6aeeaed0dc358ed33351bdfb7054fa44c80bc30b5a6d1c887ec0be688a8b80f171a8f085ed6fe7b37b169d38c7d21ddbf60f2c4b95aae366a4bdd24f97aa99e6b7263856bbeed093430730a1a7988f1aa949a6e253023a418fc5cd486f43177969c2ffff131ce49cd91f173953fb63236355a53cf69d30945e1c97d10d7803924a8059480675cfeea9a340c27ce5a4c6f0cc666a1738d322a531b24a78593e0c2ffb664fabbe03e35da17e76c22a180c54d2a341771172b05cc20041377ad0ac3298f4e18a9a6ca9e9c20d9f4549bf98cde6017c51b8fd097a43a734f785b8d9c18762ce50becced8f1b5b5c48327c17c2ef8a1cff1765ea4e0bd1008bfacac670bdcae41bb02b8d9c0a445d58c974731a02c9070b4ca26760b552e22cc8bd864fe10a45f6e9e435eec618d9498a560ac8176df7336b5cf5b24f0cb331e618674abe95c47f3880f6587bcb660747f45d094ae4ebd7ac18b239b15c406b469989d1ad4b355b5364db119f2f510bdf279e6270bcec122a1c2a35ca6cd1a5f6bc789c2bd1eb893f51749f4560e6ad9036a19be772b0a2de28934ef66c821e6b0ae06396d1ef407b028f99504afadc47934fb470996b5032e1e349fdf6181f7776d87733150609c7e47cf1f40bc08a9285efeeb9069f4daeb4683bb6580d6eb3a4ca1970861a9b281e89fd98abe204a0519fc5e8f118c5f602f08e25f0a6e5880778f5ba0234d9abdd680c68e1c8e3f4b61b0cc0ab957b5a4c92a5c1790cb711aadaff6d11421f7f2ac4d4959795fff3f723b5009ebc3c50e41588ba816253e00ac03a27baccc77ad2125d9958c92b85cfba0fcb13d52dee45a8165e4c2e6972a52b1a8d9f249dc02d9ecc5ba0e9efde80d477556a0189f76e59c01356b2c001f978308c1f4694cbc83c80c5adfe93e50f27e16e7ea4039f57e2234d7274a4112fd68a25ddb4ffee390a43c08605215bcf3f3ad93db87fda40e8f3bfbd047e1cca5f1fa559ef22cf19bb06a8b1aa85cbdb73bc39ac5bf3a4244e57c9efa5d64bbf3d58a76819e5e0c0fdf36442d301e0ee74f7089d24e6cb352285030667b5fd4826d9f46d173fb252667e002a5234bb6c30aca6dddacb862e4e2dc5312c45a3e5038cb289ce533d99c456abadf2d471dc8acd8bd9de9bfd8f8a10651090e84df1a59e6e8773a3755d6b6cfc34ff042d2915a20f50d24ba72f4756906cf64314162149fd9bd0fbac63bbf48a37b7f66152a9bb92ab815e64dac73666ed7853371ec559ae309d4ccfbe2a79e81e2e3cb6b35dcf921d98447c2a1344009bf62f8ca66282428334b023c4c7890cb819949c8b2edab9718cfb506f25647be16a37dd288427019670de68e2b8147a914120d13ba83d8cdeb693ad8b7fa16067523138b1b776a2a8a05c3eabed6db3fca32051a19b41e989555bf3ebe44e16f2670edf36a41177883f2b90528cee8ee1bd21c34c57d9c6a1daf0dc96cdfcbd3474c8894f240840ea3ea27c39d8431fca03f4521d73f672d85231cdac6765cc44c2fd94289b448abe4d25c770e58555f39b850f12d3e94d6fb74ade1303cf510f5c2518deb05961f6be6a17bf96b949fadf39cfbe421d10cc9f73e9a6f65616b7c65b272473cd8b3323890ccdb26a4f5ed988d3180758c54341547a6feab71825faaac515787e62ea328b7ac88b393236fc5d655112aae89b8ccc3266dcaa8236ad7553aadb9c3625cf192852c82c0b4bf8897e29f14e0a76a2f1925e803f835e269690b0bc7ee60521cd38085c6da97546844a8cc6b662399e23fea7b9d8b9f8b8c5b05074c43b8100bf19312f6f944b8dd616f014b88544f9e439dde5fa768f1a33bbdc7066a5ec67016f8964cc1e1bbd30e277c3588b796b311c3c71893add8c666995557d9268ed2534855499415062c5f6a2c8d2c0306819779f1189731023f0a42dbc465e9410f27c0d22fdb7f5f3b8666a91ad8576cfe3088e1b408a5670c76af317a62ba08d55154c88657026949d16b7d8832092d33679f81c566f0f1613fc03fc451d6ba2700a024988851fc1372b3a3e960c42ebffe615f2986163e2333810896252328de3ee0a6f41f7d534a19245c30ce14175256112641ce7f666d1891be0510694825c277a8ee85623812611f68b58389e93315f7847285c0ee0f434ad6cde3a45efdfbb41f1e6e3be98307a25ab411fd07bb29e63ea42d2ce00af69bdbca041623b782d4c3dd7bba132bf940e5cd07c2ffd8176d90c6f0c7dd1596bdc37fe8e9197cc7797fcbf667448b2bcdf285fdb5858b979373481d6e761bac258e9226a756c81c180c4c8f306c9547a8efc42a7d816a833d899fb23444bbb76e4b4d19ba0eeb0c06a6053358aa352414d75690680e1f178d99c4fd6878c7d1130c1f0ec5878700354664f1425dc510077c6ab0c8e6e67ddeadb545b24bc51e2fcc190696201535c7b316f0c59896ef4e0b16d7aec413b136c0f3872d6a7111a42c7206e46d6003fe0c8f6ff2846e200df4d0f25ee18aa63fdd034594db397d5fad04f935a607763a1c85df8cd4053bd53af6fcf3e245cf2b5fed5cc017bf789727cc1c95e2ff2f0aeb7503a2768799f8ba48f2f835d2e51a99c0fb1ef05b10357a6d06ed0b10a37a8a1d27ece215b3c800685bf806d20cdae30c96e4b697c8d1b5ae303ba753962cf50063fae44346da36616544ce7c3d197e66f51395b1f0f298f71cf014bafce144e6f04b969b5393171d8a79a61706701be854aa501cc56cd8d8032442881b80325990d14b19e88df3eec87d748398cb4eae8d82dcff6117838315813cd500c0fc28fb8697aeb799a4066ffe3db12820365953c1ebb4853fcb4d4a05940b4a075fe7691623be8766b4fe6faee9269b77ee9080dc6a4a237da331c3fdf76c3a23376e28b814a1692115534ec70a7d83b7607b738f3004c5d9e74dbadd068921e0d5563ac0e325c58e89e4938e47e272b8e8467a4e71d8be703f6203d3dacc11b7bb7f0f8cfe0a336b4176dae16097968831a44f0b80f130f37d581c3a77efe60bb08d48c26785271d3e30640bdf72a6f36249a75c2f2edab90fb8cd53dd839cb5b6668b167dbe6c01cb1f4461ee5d23aa656fca5ab6a0ba4ee6305bde386bf4ca64b567036e526ddcb3b3167104d6e5a1945244c3541086986e134474475e6ded7a6b4b2c85d14e3aeb404aba7c6cfc89abb49e351276e61155d693d2d768898c783887594b41dcc7017ef7387a48da6b235a2e9bdc838eb63f94c268006964db10166340b79940ee260a4a4301a1d5d3778cef0bfa181c90308b25d476949a7207bf42891147913b6ae3787b6b47f61a009972c23acdca0cf79def2844f27ed8ff32dac5f0ab28629ced4ed80d1914ac2151d8f0976bf689f1d0c12aecdda16938327249b599d0d87d714306278f455ea189de88f4726dbc63cecbd6ff85a75bfec63c1539dbbc65e09b22a3f2319e3ec39bfc48859493e0d1667ce1fd6e6ed4e5bbb94afcad551e00fb45160c1d3d63b9e38fa0fd3854dc2309c20956f0854f761d2bd6f23fd2a59f055d072285aba19b43183dfff8e4bcce4edb635eb6f4cb08c219433c37a3b46291c5b5592f8b42c3a084527223583ae66eb7fd0b404f7c0abfe9ec7a2cad32795b74b2a7f3940cef628ff05c3cff2ac3c8e67e4a611ef3b3f07efd332c536eec846dbed141e74005f82af787799d10df5f1ba6e0c195058a75f1eb9d37513ac70fcdcfc398a462a252fe7bc0456a29a05739c6e95b9adeaa2f526d87c166fce0655f7f6010e2e3e465f1b2ccbee3ae147bf7a40e0019fcfe477f098d34d1f64ad2c960fbd1e5110fabc9ab3b37712c07ba0f5dd2d3ac10e3a808c6a76c96563e0543073a9ab5daa9a0d6760fb7d51769a5ff257acc9503c58024993b399fd0f094dbb82e3bf545cc46ae82e1797215ccf358235135ff887bc3b39630e0a1d7e47656121e1b15bb0ca2f944896a599285fea19d4b30960cd5a856094e9adcb42187911d87b2d06e6a3c51807daf2f9e2344c646572e70e8f72a91e90214a00d3f077e9cb310fd912ea329b9201ce02e0de6166cf8794122b388ff6403eea99f561ba98a4c55a71b5ee7cfabe9bd1d38832cdb372eabe328ccc59a67a73c4f3ebe4b54172d368348d61d76d5e051b640bbfe7064fa352c4cab280d59c208775ae3021e9af47fa92997df4f623ccab45f776dfd0253d912e985bd1680c0cd649fc0123a44a68ba6dc10c9be12fcce53cb5228ad37b73128844ad301be32fe526e2d2d3a90fbced84681fd8ee94639c063f507850d1a265c4c207d2794957ddd42b66d66b2ec4c1f6e91a043b5f499abe38384c2c3587914c0401184a50c243c4ac4cca58b581fd8c86a5b73c61db0aea0ed3dcc36fc3d936e4fab5b2600404db799adf6e0a3f42e1f6eda3465c3f67b052c74b246975aad0f19abeeeb0510709d0f5177d99d8ebbd78e509bd7a315e22f238f3f5dae0cd16bd0333e0e444b2f5c1163fe04f64270c916f2420b156b9e5c96989875b6635cce74aae04d8797bbe5886d436d167ad8ec3f77ed33518bff0a8ebd6d4764c143fc0a3be6af9b13366ace6097734233a786a29f2ef1f8bc5702a1d1ba77365f08e9b657cd0112ceca31b5102d7d717e95a5efa928cdae783fa3ccca17f1dfc7fea3912f8737814d9baffeb6f1af7a02910dd1da582698efa72eec4199c5f95be5374c3b8cd57e097917546cf541cd783aea10fd73d63f82bdec69f5403c2ecdca764db500d9fdee6f00e6b4631d1f2eb4e25cde5228cf489a5d7848feebe0a544ecfd1ee9cf7fde20de78f20bdb3185c06811ceeeeed18cc8ddfcc03e0632bff56f62b96e13882cec5af4ed79550c73305d7b226ecfc24c956858870e331dca6412fb0b34560d22ecdc82529e56cd02a263e7b440106dbc326266ecc8a05eca225e1961b9f8397bbfbfed3107228acf8e7fa7604c7fc9c1aa935ce05829bb964127864ad1d5a7e9230d2a7ea8dd818caad4f08829415c77a1c2b27a09af425a1a635c192579689060bef891341b4d7e91a414916f9b41ace78edb74e612261764c27364c9f1968980d014a7040497ffc6e32064110c0862dd7f63abac66c41e9a079388e2b2e4605db5a85f91e95bfd030066eec93f2e51a46bfea24a3ca599b253e72259348f9779ebab3d7b3c9f79d5b1b8a098b99b6222a22600f134300225e3ea979e457021abc6582a232c090a8bf387ef4d3db335d485340db33114aa40f5fa8d814467e795b321f2d270e258757708d5274fae9c6f7c4039b7c77a34d3d7597012aa2d47f67f6cc4750273a17437c84e7e5ac91e5661b496f7d956171f513fee979fc58fbb71e1b6e0bdde36d7f7f5dd7f516875d7e32c59927a571f22e2e67b938d1587f2364b3fab3a39ff87d78904fed7c310447b2e5daa754aec2b9b40ced5d6efe47ff8dbbb9753b0f38c4745cf494bdf92cfda3c9fd7270471c47c0662a331bad6aa192beb8b235ba1d503324a20398051430f17c327823476e29e7df6e850247b776e6672197971ab59e7e006a717a0d880b0358dae5deb177298170e80cfe169d1f2005996026e4587b52a9878505965d4d02b69a680f0442be17d6f838f2728864ca08bc5b4e3ba01339e1ac1f0a06b179436e520f77d3fb8274ea6b3ffc0b50fa2295a0f2e9de7af2718a96a903611a3981a3147a15d202cd6f382ebf8ed012f9095f84918f3bf1a243be5594214b2129c69a62a19e554c93e9896a425de705648a2ff11cb24c51b249e74ba9f505cd6056e3c2552cd1a182b18b88b258b5be42192eab2b0e495db68927f5b40d55195414512ca936d054dc74a8525dfe68e2d28e4999f2f385b202452321c328488601325ea65b2737dff23abda82b1cfca576f5bd17a1a415aecce42416841672cb54f63aa0fa7cd3d30c8a25c05780044043ab9baafe884666c45b75ec4244c1c4fa19adc48e91ad69f0d49f233923e24ca39455f9a39cc6a360247c46addc06acb46322e2e2ca62b754168459f615c0881749e314064c3e4d71261aff7debbdc1af2a1f337619af333c3fe47d6ef427e5b98568598151b64b49f3ae125d05b6ec43306a18a22e03b039c3fa96aae198dd1c88811653f061034219a1f9bf612cef71bfd51d7e6d2e143484b630583cf2d5b2ef4739ad99823429c49b2c49f42df6ffb4d42cca0c71a77ad76308b91bccafad221aa5838b96a1b802be7c318c337256e925715ac30ed7476fb0f5176d0c59795c49b73f80bc56cff068f6a0715a0d019f294ec2905b5f24f5ac360e2c4f3283ed18d8bc480acc1fe21804736019a3dca05a43a2ff4a259bf8c54cdcb181caffcc3adb574eca742f2a712c3253cd86cd521564766d639ed8d618c17a42c7dffdc278bb44a6bd5c344aea24bf43abf86f19a1bfa05c3d04102047ba246b4475ef9bb9bc04c1c6623226012926fc7ea9de6138aaa4027130362bbf43791d71de97581b6e0002521f8be7c47d66009a841c685dd808c41820a76650e9dd8c69ad18e9496d20ad3df8f77dcaa4366ab7ce0927f7166676cf0c50a0ca336ab3cc96743f25d836e1f0e3e6022a85deb799cfa800d4a8678b605eea63ad4bd9362abf467330f1879cd2ffa2019327c125b74243cd38c5d3160bd8cf2668304ced2b56428d5138692dd574e367b3e58a1c620d9d927035c50f9e85388d3d7c91ffd4fc245deb6bb7912b295f10f44a842f5f51c646d9c14e702a8432bd2bc9e47095680988fa758add5fc8ad217c1ccaed6f8ef2571eafdc52cf5a09a2f60dab36d9a94a1557cf602de062714fcb78c8d7e6590235da2c26f7f1c3c7ee0b79e73d5616234602c01af9937cf86162be222202a8d68a61f22f6053c0725bcf9ec939ce274831c941f3f8308d41130a6d618e169a8156fdf6062d5c8fc0f2f1fca5a1ecb091a4df22b4937873f7605b56ff8c3fa89580603498ba1085683546973124dbc6b8ca26dbcd056d5f32cbb69ab23abe641b78bd3ba7a69971198d3daa2568fca1ce9868b3ba500a8197aaad88c62fded9a593e38cdc427e6c98731bae315abfdd03445b8903af2cade0f5b9a3855c5013d3aac417e72ddb8db2c0813f7b89ad2387bd5c658be2e9884dacd4c215d3dc99f69c89ff361c0a4dcf0b435482285b99b3e5d68ae6b6183becf761044cf991fcdccea284b3ed09761a3a1337177b5974250e3b5825f0e9260db640b75818b92f301df57fb70974f15f33d64cfe65b46b25bcdab856f0bdf5d4320e6bb0465e5c85473cac3ae67e11e831de227db1411b6ae7caa9ec5a815171db94ec01e058ebcec6bc32d02f433d8d6730e5c4fb0393a08c7f5f44167f9f8ad58754654a938fa9e59a89c75c482d48d540a2e347772f677173588e518de6ad1698ebb9693413c0e9784eebea1de36aab33d151a3966e898baf558c7cd2f0dbe1554d266fe3d6e029a83ac8ec1a958db1ed32291c0319eb038272156fee947c463842ffe32711f22da79cb642e1cc0068e3bf6f0e8e3507da79d9ce8f91d29e0c35e2652b558c577c95cfc0ca0c2668976a7c17a7401cfbc8c9161debe7393382d2885016222ce6cbec68c24bcfb4feb818f5e07ee0537b6411d49d307a2bce542ab717f0a3083243a74d74b807b6fffe52e72b355d98150c7c467a787f9fb9822b4550d9499bb60a9c944e569c8dfa96104a23b1460dd7fa1e8955d04dae8ff9994db55dea95e5a994cdb83c9bf68c64e52d8fab4eed613a05188123f39c9fc80a1fababe5db6375d25606b920f56e90ea198bc32ca553072ac788e5d21500ee0b313a92de7910a4ca407c4e0bc9df4553b64d537b365fb80095e33d82fac805ba81d815b30388012bbb563639e56bb7ab02e338e58d149d55db549c515e64115e0e1ebc2512aad0e7fce4ed0df7e2d0353e25720df8c54bbfed9edb8188f73d8c148a87619b69e4faa96528d8112c616bbf46f585ff0c06e2aee1f5793bf13eb34b626d98b589c9d1c245bc0d671355f430bf75e65c285588053b82372655753267683a45cf042e356de660d0618822489af9cb67312774f84b34212b8e28fb70839b2a979c0e36afd8e39628ca1191ff2135bf77ce382db209801d6f9fbb54050a0ecf57f42d1a65d023152b9228c8f25e8f1f66aa6e8b21e949cf8e016f410f6dab51d41c983a6e337ddae30ceeba88c3d37819984f587affb3a4cabc8c9f0f851054546f3bfeda2223e3c68eb0a40d67bf0de597a0fc5e72c0d64aab4a2ced6646a1c49ed281ecff9c8992e1d12ff786525ce6f4119043e68865cc3bafa8d16363b73b784e8c6451997bb20f82812272c1f3b940b79e51039c962f175696cc187202f340a57b90272609932e92a5f5f9585fdf50c4c6a1e6e0819c00a2ff4e4a790711604cd74a88a230b2d6ca2dfdf2e4c19b1d6901c0ba2de2bd3451c0d106d0b74e8b00897fd0f9d252b9284a12b9361875f81521fe053de2a5f0af03ddb42292ce959d1c16bf5f0ca1dd8664809be525685a71eb8898fdcfcad1084995d46cf188b75c2118125278e454d29a604715407223050025626b8169cf46224b4721ab2f499681570c25d7abc094f27eda7646825e9f8437b779ff11c94a1b880ddd3d5803f1a2f8ef6d2c8edf47e5c541d76d0f3f173cb90c8161cb4bd158f670380323d53366fd754281318dce6df13dfd78ee5f5ea53112e41a7fc2e449e92245b236d99b23f67c98119d0d87a32c4f24a93c73658aedf032ea024e39ff02fb1d4a708e023ad011a62c67e074bf2460a78d05b67cfd3bdf52cbb6cb1f4ecedc55b213701aab48bf666b4db8d69f83c48b79ed4551795d4976a55aa3b174d83b88e4adab569c19099461c7af11a828d145c715b66ded22f8f5777c72c342829b41f6b03387e6fbcf8b0bb3cbe4a86e500f7848edd1389404a9c9042c758071c66002479b58cbd6485f6f7d97c7ebd33bd3fc9fcfa2fff59499b3cabc30e741fbaa64f36926311fc7c96395ef9c0af291c992daae3741e34f7c37c297f25d2f5a67c5ae97a4fd79ec91640a9d93f51c02761a3915c72466c11387cf579029fe80acd277547100f8a72c7f7ef839553b1457f9d1d5556f701a1851edd2513624598bf0f70ad97cca09c532d3755f956fc6be290af41d450d8827751c2043ab3ded135c3a5c2fb8de71a4255dd27d0936565e1fd1c46adb339803e581a1751bd86179bea934f474b0a8fc77f102a576af225afd62d3023cb4ff7740c6e9a1b8c98c2f924ebf11150d6198c7b530463836e2f55ab1d42e0e2ac13bf5fdd1741467152e7a4150f0a42be9b461c00506dd2ea05e6df1ecd1db5c296093f98c22b2df1a81909ac96da3257854f94c05d6ad636b4d955d49b13cc6a30a9566426e4ddff56b736fe94163fdc378dd2144c21ec6c60c65dd82cfa286167dc1c1b2644d702f9b4eb8d951407abf55be0d06d006266f0e67a36bd2922c61172f62b4a1bbb68a3d17790d5e341c562534d9a00a84243be217eef2220519e5d963f155f1e19225f048b7246c5c552950bd16f33a578e65c81c2787777f850690881ef63bcd326b66c505260d2a41bb6436d1f7d1703776c51e1399217812a6c3a20e3c83258ec4f181d82c4bb670e310c85cc423a70e07e510810532c8dda6e1e67aefd7af4f29d2fd209b0c903be75d68f6fce0cb8500cb038cbbcaaa6f593a1d62250eb8e38985bb2213e88e4e1478c49539592debc77bf19b1df6ebe73f01755a41aa5e4c58976d2b97ac944d09f108398ce657a592397b6fa933c8831f41af0ae422a3d20edd97df344e71d0a1bcc00b15996592495127252042d3f6e629c974e07b432d758dbdea7016f27b1fc2627e6f40e045aabe0b85a0853854eda2f6ea51f25c8fc7b4afcdf1da1bc0bbe128fd3c3fac700e1947d274fa0e05aefcc086a29b186a22a02a559616e00022f05ffe725e5515ca2ec56c15955cefed18b3e656793c6657ade320811dd43a52607afe6dc8d8f79b1ba2ca64586850a881ef7f4cf6e97dfeea92693e1ff85a5c3b8306883abc1a89a2abc44677e4832b508bd896b31f634b6d37ed5b9e8dfd93c6dce5853162efa384ee082b40c948ef3d7b62903951f87f500535b4541d2ba41c0b6753c15d9c64a277838ff02931abcde10ee1e97d78225cbaee95673b5e7ea46d4d44ac70929169ff7b2ff71fb37df33cf8754826fd37e3ddef61a8b00a33a3ec35c5de322811d1e2d312f6ce2288df875b3e5622da976e35e2b1a3db6522d59f1482c4886f2e3b5896a72592296ee26f4c9ae00793b4b7a70e70bba0a005a1096a99f16cfe1c10e46059425a70d4d6bc33465b8db41a097d0be783a40d92215dce27550ab7bc98b121f8fd3527dcbc93def25ce71792bd784f52c6ccbb275ca462a3a35032fbb569dc8a93f34b9ae12c00d5413e5237161b7087b2b0c7f1ce5180d8bd7e9300a461d865f1a79fb35674e33c7f9698690dd91254e324adb9d9543ecb0a407f4f0ce3cd11b66db5e0351161c4a6e81692020b3ae0ca73083addd2f7884d8ccb795753494c4014a63142e58146914739a1b2954bb4ab5b6db2cf3853ba517bff93e6da0b2140a336d4af3f77e90bd8c6bdd4271964c9a3e67bbd2f00f00aaa2fc975aa17fc61b26458387334f7b35352f2e54543d59cfb753d763bea4a50f1547056a24438ec07b964139c390f1bdc9c25fb7ade3dc3bbcec8dd026fff0e96b25092cc3bbe4904e72e510f7dfd6d30eff7928016f5b99f325bcf2f7f5fd725027b8e98798a1d459cb74013aee8817b647779c8cfb32738313dff85bb46ffd9c9e3d6307fd65ac40fbf339c2038e721c009113f7562e6cf57174a4743b87367722702aad05d70d583d4e191c7793d4ec149cb80583e7b3c81debc38edd89247f0e760bcc3aa81c4d31ce86ab37bc21c56e75df4d38fad5d69923cac3c3771b30017a35001f76aae85c26b135463f2c54817eb45a60064dcf8b80a5f96612223e5e6f15b5a870e7bfa50976033956d3a8c029af05998283503d873853183381cfcde6142dbdd58dd9da53f432b97ba193279719d1b75e2c901d10164e7c7177efb8f2ae3dbb3b122e29c20a5d05fa830db1403fec3f761d183e0763fc0a1a4b7ccf1b8d0ef2aba270a73bc5c96dc9758fdfb61429edd215d8d6bcff038d74342084659e8e288dfebdcda9fa0cd8be3728386d6a932ebf19b0bec55a4ea45ada9990625afe145e71a5f5609d0a3f0a70e6c396fc89a7a84ea2f56b8f9e441e5bb66c59a2e2e43f7a7fe11880103005cbde8e12f231acd2800e1eafb19534c01be4d978f2efb850ea2c357591e94c51f7ae2b689cddc9d8bcb4fdd469078f76d732581cd50124d68328f81dd08cc84697df2ed48a873d01a7bffd8941e34683a9eab320cafeb237644c17687950f0b281f0b06442d37a5f7ac2ad9144619c5a0ba17248149d5ec9c2cbe28d3458a0e6eb2bcf252d1da7c6d9693e07d792a81901d867b01e591866cea88d773c4bc91457962b5e92031e8cdc99072ee3f2d64ceec023546c9245dab35db013ca3df2005b726bdba97aee1901d702d2c0126606cdb17ea243b03f1e1787c83f411fb4fda7d8b64e1cee5a51ef224c38780bec44c13813228863d060891db440e2ec3d3bdad53bb9822a57bd34e9a89f42edcea9427fc1257497bbe1c53238cb015fce65f858a9e8b6c912956433fd506a01c97f56db2b912467339cbf367d9c09c53d94b7feb70307a5688e451fd33fec546d11940239ad287a62c1c97f8fa2c34a7486de6e9d269e606d80f77cdb3a7dac9c4fed4f950c887ee4026530deb4b1eff0336292990fb47be6d53a8e64acd4b40fc875f22f80f01249ad7b9cbedc730f43aa15626cdb5571cecf431be6ea5efcd1eba1a8ba1bfe57969216ffe72d7f78923b076fdad1d95dd597c3747b19b905c2a5b8e02c4acf8bc4c4d4a8f52ea7b417fde48e2e42504ddc2211866198988c154171b442f256874020b0cee9d13b55a0950248b36f83cf7ae39bcd790500e9d29ff73af9aa1eb16aa6d8c7a6fcbdca0e5cdab13c8e58ae7a4c12edcbcce35655c1d01916006bfd16a8b0d875a16c8ed7c523809dcea3ab5b23e6850049a0cacd985912a0c6f3df0ec033a081672c2a8525d9d72f7bc1fbcfa21842e673e3e4be33da866081a2a78d9d52dc5ce38bf935b9c65e502486ca3c6d783cf026ec8a7f30679768d50899c59e0d81785fe65419097dafe1dc57783e4fbb76b4eb40a2bd840b84890e81405a3b580daf34e735f695c0fcc686826523d21daf6b5c4071f693f476dbb32ae1e63e0fa0bcb2ef4aa7d7d0386a2f19126d9e72b274142d30ff959ab6392c359a73d38b8ec09821dd988b2086387cf61054aecb3ad13097687f4d1f85c2722ad8045c9d25be1d10e34b5359102327aecc41502786a86045db710e5d9f5adb2bec0c1ff4cc1e895918d7a2c4ad1f8b816554f9ca13c385ffc6a614606326e7522ff4c046fc2e5babf864ff73d2a540a9ffe0e7356211e5dc94412a44231429a8ec9a8ebc509c05f30ab08dc26f33ca85b1e995d51a23e7f720399eb00e513a6268cd976698fd33bdff8df00954ca5089e1adfbe5d3af68a910da8a6c6ad0be5ebfd299d1d84aa405c46077a47f6e70ec4b18a22774119bade9446cc582ca790706e2b9fa2c5e8ff9cfa49c96adaa1480184e85554fc574d4e7eb06c2e238721502a90f31d679a16ea765d479ff09652e6125c78445eeb11fe1159e5bdf5b27e416c9ffad02c08210b8c6aa82559ec1fc49a831d88ad36470e25f7a377335d546805566ee9bbaef867f7b32bc5c7dcfa053958931405c16269139c09abc0dc911c4569116e6d461162a4fc3d2c63f95fae1e0b0cab0997651c86596922cefc5c9564a0bebd8de477da8a008087082a705082e99e0db3b9d5c5a7c9c8a9b2a792bcc9f3528e28dce0f92de5f2a716765138b5b06daec19da4a5a69b1cb04d0fe7c903db34230f73854061087a93c134560b7f4209467ad15f2d1eb099d9f3976db13f9a2dabb19c9a1274e9b22ef2e305610bed8be1994c1cf541797016a80a6f68423aa6b05543884b64867fdec67f00d1f2d17735512595b71d5bc4bfe04b3ecb4f9ce03e4ecbfe5cbbd01f5bfedabe1a1eec16c948c71f89c5e5801bae9df378231230bd188b141ae05bca5e8f77122285d8d92660b5bead8c416cad19566e034733e66d4b59f614488607a013ed742b50f9fb579c050ebf86a1b62eb335a648add887d93631667b645c192217ea2085f4a00b39b7a39492688f6ca3b339c07cc7e55f30c66e323644c967de7f98897fa88e060d331f8a9f4a8eb34f5c8e07d2edbcc123af6ee027644acdff4f3fa66d4f8a7f10f7f4cd91f2c885a0569c320e66ca741262fa403f4e66262ed3700751ffdd9b679224342d4c68948c250eb23cf20b8fe0b92e9897c7f7b833c90244840adc76d227c36f635fd14cc28fe3f7945d54637ae83a9046b723720ff51749258531280ae135f63b4af3b01bdb52d57cce13afd73c9eaac7cb4c6d56ece888780edfde19311f41c9b89d3bbf2fcf992718c15e8c31079dfc74f069116e1a437ebae9378b6c4db563a919cc4401f28416d93bcaabb6a1dd328df8ee7e866e181cb7d94317d1fecf6f39db724a7aded4d5aa714a8a7ca66ad1c1813140abe696f2f753b37f638bb5d74d96cf97df8b6ff88ec6b908d880238623e0eb0c050c8093063d0e943c8ff486045428ad798bb95587ab451b4e0a4b89dabc284890443fec34b0a8957ae8171cb35629b9de8a27439e08ee4527281adab4c880dbcc647a03be441b7f16c9ac6ddcf5136d7883893f59c24c076c3537044246b858609e91ced177440fca945692790f76231d9301921a4d2fec1bbf70111c9199a49416af1df8314cf93adc1c845c8f18afa84fd6121e0a37dd826928057e2231e8568dcf656fcaf7883e8bf82a6193d813df4b1d50cad9b803233490af4af8854987aca94f0085f4c876b25e966fc2a688ed7f749c25bd0a592f88c0e698195af91f8f5ecb461084d666d5b4f893ca8ef68a113ddfab055318cebef4f703d141d2b692312d2767381d7c72f81fb78d3a5b408f97cc564f7fb5d6a8f189cddc939d9d5f69bf6e92a043179450534a5e35321896f8ccfa3c38ee5350c6346ef44068548e02933122f3d1323150d7e8a5ea192e246581a8e653595ee12fa4114fcf6205518a70b7a78af9d8c7d3466439f77bf969b4e41ba4f1127a074d07f82bc79cb90ac61e9614a043e1fe4721cbfacdf7e6c2b2a41afb6773e35cf132183684a9a139c466f3a553ed569e5df09426054f9f0b983c46a5b2448ffc5bb3cf405317bfa03d54929a93ec29d952d4be4dbc21af1847b56db250bb130ca97f5c71c03d0e75b9af48c78055c1051fa3a0f51b32e01c96c80688fd2fa61731d5c8165028d7ec249976faa5889bc1c5cb904175485f855ddc368dd404c0f6879fdbcc7f2a9ea59c08c163dba6ec19647685711615d72331b96a92b26db19d6a4efa6a881a757b4885e7778d89ee076b4a66f6621144c553affeb468df4447b81a08189d8c37550afffbdf0e1d4fe9ea1ae0786f5c92b60644263573d77b73d3eac21f6743afc25fad9c7586703a7bb5adcb07f2f3ff57dac01395bd64b7f54868571c39f942242d5d0a624b56d8974a1cf4da92faa5542d9a30a7112c50c003dc8ee9d1da1267486b522fcce94f42c9cc99595ffac3b9fd65e66f2f5d9b2d2c7a52ae8f222c9097ac836fd76fc6154ac64945ae55d5ae9c12d535ef8da298929f84ae954a8d09bbacb90ceea2fe8468e852a28a98ba9ecc125c813709a0e736f2f894b224484eae5da128240f9c8bd642f8a2e8703e3101d1133dccaff606b337bb3ea7c1531ca30b554478d71e3cf91b6bdd407a4078e3ff4f4455da403613448aaf25ea2aa1f4c661fee3f6b3f827fa81d3f3875d8b0a324dfced267406f4768e54d450bc3ec3c43f33859bb86e8b9a0da25fdd35d2fcee5bede88e143862301ec634907d66c790082ff6b1187d5fc2d78fb79fb628dd014cd915e339ca3c9acdd2744693f41dd3e33218f61b31b17dc4f63c6dcf69003473c53c309bf9a8b0cea76d4a7e0ad464da047ab5ea05dc5710af86b42ebc6ebe4b1470e84846df36dd9c662839ee5ee041879ce268a6ee673296266b25a177a36c3876857a7340d0783247c6ee166cf961e7b6f0ecd42ab097fbe9f5e1c6a1a0a802ad4bd4998d5bd55821ece1868a6d8e704cb6a6c70a46fb45423b9515b429ce81f1aaa6dd8ce64d256d08033546c20e0c1c4568d3fcf41c39d80eeddff71a96fdba8487c65fed40e8b9d5c27574c052724f6b0fb4a04077d9a189ee6b9d8207fcead0cc208d55335b9537d6efa716d0d07d5fca3b06992057a4fa5581d10c2f4b2f367ee9cc34102bb974d84d13d289a211c6417d2ca015390dcb761e49e0c9ea54fd396567e244888ae2e6b36b3f40949dfd00ea5f759b19cb2ccf5f3354cc210a7fcb19c30be6d6513842816313c4783f5fbe2938d0440603a1c4b70d9389a66d8c61b712309ea6135b144cdc7f978e9a25610eecbbc7484d9895de16796d0ab10471469989dcc26f6484b14be3e735aace9bce855cb94d1ffd76c67317b07d25712c135db3d3615c44750fc168541fd3e9f2a2f04cb3bb534f37bff906952e25dfdaabccb02ddb469b267fb2a89a19355f046032893da18dff5cfd7b934bbf7d2e73ac062e98a72ec5c2a09a6b3879c85991deee14d3388c14375b42abdbe09d44b4318f34f9cae14ee35cb7c3599465ece62006e33dfa76441bc6379edcb863611777a2948831b796daad1aad7b132c35deaa287ddcafbe9b8b6426804c7bebc93f0d20c81466c27cbaee3cb285e06ed5c30f746a8b2fd00f3bcd177258b1d7de2a82c81f2fe5244d9ea5be22262cef939d2c71920ab83f8e7e758665d643506fe022a0f6259cf3c210b95dc9b3531378a1109ba0e9d7626b2989c4fc491990942400df24e18cd62d74266abd38171908355e94353c4d81f98f0a15e2bc98897360a51aed191120ff1c4affb3aa440cad3a771cd53301c7b9a598343d0b26735bcedd0b2812d7fa20a4bf7e41d3161767336b6218143c9166efb54dfe46b0b59e5d981c681eb99005c93141f366f19c925d396811736751e314719d85503d412d7a3ba446adc6f5d73deed9048d875ba91740f8c01930848f670c5061fff96f0b9810c6ae6a5c278cf71444ada9b5b1d44b418b084bc550377ed55f1a8d859631b90ab33800087a0bb15913ab91b6b96755118ca2863ff95daf9f2c21e7bdc311f526793443bb3140196f0368d6eb29c22ade1ce1e10af5d8513257468c7f3c1872833fa9fb75da61a472021e6df2feede4f46a6449f9bb2507e19157912b442ebdc3e7b116a2bac987d8a41446d2422d15f3697c6bf5f2461c2f66beda56b01631a9f09195d0ea64c0f6326684a36436e2d71e74874200b0e2941598b3b6d73a1f28592132f542aa5ddd399cf5c639be0aac590769503a7f2434fb40e86aabea2580bf68d9104f65b463981a5bfc31b80ede22dcc4ef6474e63ce91d4aa1ecb1aa48520f6c88f3a39b06eb792401c0a66afb88078a0c3374e1f572662c008275b1372c6772fcd8238032b34cee440def0cf673436dc7a60b9d311b77855f647aa44ed8440b249c9cc2e6d12835f477900d0c2bc142c26e9ba1f6b4a64e89df2ecbbbb685d53e6995aa1f847239e8920ce565e75400ad1423665d80a776f89d31161e21de2a8c65840d2e11f863e78e686ad3162fcc7de5f244cac8d2fd29092e602cf49105b8f08eeb82acac1123d6b3a42c7332a05b10ff740fb6f5c6f24ebdccd10d2c3a9f4299f536f9287a02d1f4327fd70ef3d9eb8e4ef8ffbab956793cdd8a0117fe4988e4222a28f6aa50d71089355e8403b38ea4bcdefc57a091bfcf59aba3e10f13a39fdabd8dee08d2192de60d7ca5f9de28113916f7b60845733456f4483efcb34a57ef627bbfffb10bad28c7e129e57b95b09b65748ee3218748b18c88923fe490f0e129104eb47991466b83c161231c7c9c6fb18924e34952c4738fb80b02cc699d18ffd07b1fb0fc394ac896d3b478c4b8fe390f2f91f6e8599d8d7d7538ceb6551034c9ad356b59b09d18385fd88d43ff3365ea7817ba4b363e344349566b1fca1866cd80fc9d6900ab5a089be39de8abd7e45e78346669fadab4e660398d2a0f2358d1e0e7cc1e97c8bed81eb6fd06ad88ba5cf3a6ea8a93d62ef59ca142c6475b2560884ca84b75ba8dfc89c9881f462f0fbdbba5a919ab8a26749ad5f6b1ab8a2388cfac0842f1e07b53a98f38df225837919e262b302b8e626b2d6140d838e2ec683daa2dcd5d6c664c07813be20f4e1a6882d521799040e44cedd5fab449f8322339a6791a147a71f185560bdfd46e7185f26ec166089df8594d7839c937e527da1e6389484c29060fdd99520ad963a351bdd62079ba381fb804755e19d02509fd46bf59401710b8d126e43bca380c0069cf4e0b3de2aff24a84abe631627b786416fb0a4b988c7252ea04d4b18ce2522af1300a8c6ebcaabd6653c857966c41304c82fa81b061587edd26a6572d0579ac62f534a195737abbff561fde4e837c5afe06e9a9fc16b39afd2a7c531570b05c907dfc664d6fc887b5e53089d49d684cb561b9f3717e5d156c5e2e007b8368f2d529cc95e8eb75dd9bd4be598fde9834a7c19e5e0e2bf627cad50cc1dff9421d695f608915667ed441216a5b096bf279477fd587e48dc7be98cf773c062249559614ea01c55f12f437e974846382806edfe9427679842bb850c3521ed82a9f7af98793a9efc9c69c78e432f8493faf152b45b1053a59ced1472375178d22be072dd3f0c7d2195d3e230a3d58aaa8d171ef705888e0bb7be689683dbc8c474d323aadd9e2e7b6cd49051d5e3276b3e29f998f9aaa03c05fae7806f68610094b82a95846a392d95c8a1f80c8cf0eaef9b0244d2ffcc9d1d5b8d47a737b2e35e5d7e54d84000e3e95a060e0c39d9af85f32888dd091bab39eebfd4ab36ed1ee80a29877187a0a0226dfddeae8ca4f9691f14769eabcddbb600a73e4e67d6020f2a1bfe5d426daa6290e6e662aec37108e72d664b5974f897a1db6d3896ca69f1f7fd399ceed0cbad0dbb55a8e9810053669b0a4f1b00ae03b299eb656176cd704af817a32ca0d56a7e6f4c969c95c7409a3933c960866cc385d2d1a58ef730b6649733da3a2763e6f4bfcd5576706b47fdeeba0aa29b0bc513c3011ab26204acdb4d581e407cd4d1b428f0a405e9e5e533e4ed1bd36f419bb6eff7bc24e70b818a3a793f66e0f3be7b0df4549717161cc9755835a616b5fd7ca7ced84a0ba22997290a83c439eba759517fca648022f1faf056469ea557420a71428d2abb61db860141211af0056819e1658012e58bed966dee73f111bbeb0603d64e52236292620ebbc758b63a3f39f214837e57809de6566f903bf8501921aa85630f92b38eebdc3d15ff0aa05373f8ecf6de679713ac7522aa00b8d6129d3ed467f4d8b9d0df97cf204379bd2ad693948e3088a1622e8dc97eff8cb7c0750b5ecbafe855a14e192ff00ce522306df99415f5fe9d2556dd0cff5390d8310d49885232a18d0bfd21c802c16bce3779985ee841033cf9d91b07d369cb15186d0d56932510865eda689cc6daa3b0f238fe2a791edc84fe7ab601d7bec6b24b17d4e57bb29731ad84743e2257450e78413a0fcd321d6e5a51701b97753e244366ff9cc897b7084fdd70e7edee8495c76645f8fec55a1cb628ac03d7b7e6e39f7df5908e9072815ead72e57521acbc3f342d39ba0cef8fbfecf52c0de96972a1caba4fb60a8abe3b5adb1bfa0eb86623f505c9c2c7aa4ea6259dd9e3a80a47af142cc47a2d0a1d08aace13302309da1c4de54c6c328b5ea184722dbaa5932fd31d3a94eb2fe0db2c98ec26c18f6dccb56067902241cf8e6780faff223f7f8e3cd3c8016bff7416d339c1a2c99610a7e08d801de12f069eb801a78263f880f8bb0d1409333686b06cb29c5f58a5182c6fb49d3abb60f144d31feaeef8badaed47e2bb31ce61b79e2938c529f43dfe569c0e55b4558a538ffeec33580fe927cf7982da499c99952c8228358814b3e5a78199297e6a36073502532d6e0a4088b811adc50c5065077eb22c57e0a6b18509a10d23644690f6d6acffc173008b54a16fae5d8973f3628f386e72b2899b64285e673cbd4b83ce1c4e61cbef3c25c7f91af10bf6df9fa46458dbb8ae14b2766180ffea4c6f2987b13bb36ea4bd4c42033d1ed38244ca7fed987b29af8e106765b4334048bc891b064e1a802ab5441e4b25ce12a4a6fc436143d4b836b376154d0a9f67c1cfa60a9364d17c260b482903c4c8e042dd61d07ae95c71f235e3122377e283925add7b0add65ee6cd94b436e31d6193a138c0f0add037edd39fe26d551fd2b3fa392208e1f044994ee91bf3a261f8c894a8bb5c5b6c25015d6532818d6350b2a02332d8513d496624c0b766f811dddb2d4533a25ce42571f9a5eb107a59165ea67800320a665823dab8aae83c31c0dc6d9744a50c691ef5d04627c3242de8283d13068f04a2d9243f5c64f55944ababdd41e28de00e68eb60b157053974942bed8dc5d3e7210a7fdc82dfcf33d5785ed167ab63424734cf7951ca72e6e8a58eb243effea190210a8f78506a32ca6396f424d29d49c4e425e0156fce8f898fae2f3bdf2c33cafc4ea09626807740e9badcff392c1176476c19ef1e5b749f7f62c975351235b3b9978b86224324a2bfb658aa4ca8f097a3d3a315da9f6d9897fdaf6b21a99fc0c7d757449be1a893cf8bb1108653b2a464ae373fe3185040026c109cb902428aa16b4dedab2282f970745581fb92bf391da2c91bd14d48bcccc745d941435eca44ed34d91199edea5ad43287a2b30246fb486aa5f8a2811ae8e94952f5e43da979b044c1fda105c7985a49bbd393e417ce5a355b16a729fc7debce5532a55853221cc1ac21fa313e979b1a27a000a1039766818817285214963b7990db7260856f45b2864f4569143d2d97f5435501c6b83a5f2695ea6e7a74c4f8ccca906804116449f8f2dac098ff45f4b77cfcd35926f24d26da42325672b87b1c238aa8dcef810d83015b3d159ff37715ed86eee6c1e261d60d620737086cb8e92b160d6bd9d1ae12878e1e21a9de431eb1e331e8d6c672c20f7d24dfcb323bc4db7168213a336ffaf04435b22b3a91ecbc6a460fc54f0cba34c2b940ab75068c3d18abf83ce3726882211fe19cefea02eee8192f0766fbcd178550b6b2340d51e28ee3eefe92583ffae59b2156ec573cfe3675a90eda7322ce37cdb554a37d8d580edb5ef02e1f3c2461fff3394692647a7e39cc7ab83564bbd040f9431a15be7e0c75c745f738980074995ce33bd9eb5ad48052cceb0c6272cbd19381778da6964a9716eb9ad0c5af3cac53a691190b7241484f1944c113560a74be683d9e9692afab48d93c9762760ab061a98ca0aad2d70cbeef7023c4ca6895fad2d72ab186eb2eb0cb9b576891ced723ad36eea4fcb9fd2b106364066bbebf06e2d155c4a270e5f8e3a61efcb34f1460730f8659a7bb955a486348926ed12fed74800c944cc2b5d087ad1779881966689e70682fdb71b514081437835d13c6ee95205d3dd0e3bb7c11710d9786a38d6f766699de7d5738b54b442e36a9da68810e50ef0e9aee1405ed205932986b142d8b152e59a01050959160090c86ae677cff23caafabb6554fbab2759bc02b277afb781dd534d1a96d3e0e2bd44edbacdf5f9231e6de0fd4d5ce673908aff0ce7417f8edebf0e3442ccd2729b646abdfc68d18f7dc88f610f27a89cd4f7421b2a64498c94c3048ee0519d64cea6f850dd7c58898e6c32547d305d667204f6f4775b0d327d91ff10870eac40efbd51c12ddc88442a90a86f01d92330eeaf4f0f2fcef0c46e1005a012ecbb6d0a9bc1c20b01ad0abf8fbee30879d9547f2b5abe53449d120d922bf6a0c8f1642048fc6b7c3dbd2ace8b6c3984dd97938edc3b36093895e357d9a4f7143b6319a692e451e85325786e57fb6968d4b5f63b2faeea1bb6ea6f1c71b36d9567432905868da49a9f74e6c6b668c330c99cc0d8388c96778ef98a7e5284a210e4254318b6000c43cdba5e96eda424567105be6b2aa3c8b014076d76db2637b1ac0946b159938a77239301af9d8315de886dfd30932e8e7b70e93b4f151ddb6e281e071335d4d92e5b20a776f5791fcb9ed8531573aab6337e18b6294b3e427c3d745479545c8e45087b94652e8495a7f12d473d1de537563fcaad77f0e5d2d7750dc08e960ccefb91540c8a5bccaaff5bc5ee7eea7a6c06dbfc5381d7a80bbf33fbfaf406828b74bbd0960788ec50e550f51ae3bb2542892e90ade3b70a8d35f67f0cbd08cb0839bcd79a9025e6d76de8b39c2a4d8af0caedd0ee0c05ee0883ad647df550a7dab6e86229f0ca28b330fc9cd646576d7cd55317e4c014b816b11ff4a316b1dcc4bbea85a984424218cc53efd8de827a1e5e635b0097956310105d4e9991b16a8ffc89366abee8116561e1522acd2a07a03bb7e0247c55fba9b34406054cfca663910415fda35a995c150e7a07a0ee7ae3e6e25bb72e5837eaf1183bd81f978c5776f7b6a34e74c4529216f0531b154819fc623326c23d3688e523a04556eec78c0cd736076b9fc2508377a6aeb4be9d95c01dbe8c1ff98c77ee6b24c032af49b097f709e8bc71cb141a6a131d16e83dd69973a1c380d626992f782c8e68726ab6bd255f72989b68918d70f387a03c210b8fdfb0cbf6d1af1c1025908ba036e9660dcf876967269f3994f2ffd4e4b8d25fd227f12be43d831bbb88ce08f7aa4eab76ba2d6b270392f8ede92cc1281dad56331ea18d81b9585ba0e729527d497f99cc505721eae8772cd99e3fbfe82f64c2a9f0699b597729f4f1b89d4db84186e346757c585683fe5d9c74d00652d0834dce0919ebccd307ca27bbe0ca2033e3ac02ee2d9523f174b600c609b0c8d8ce0a608185838e3be3687b18e594a1b7e4c4805c11f3a1925768d2d1b53062d1a73cc01c8362256272d56e9b88101cbed9ec23c633cd2f28175764b76dcf6972ed5c76df04416fc8bd5341f36638e5b42320b4acf4edc540354c0a83fba9ddf6f471ab2bd1b5199304f97e080012468473cbdeb60bcb6bf80ff19d4a41bcf03e8ce8ad7269c128b1f51b6d61a44cfb58bb7fb3e86aa0c006f795fb5937ed89c22d7e6f7507c07452775b9f96d996b53e9ff4256cff12741d6488846fd387c353d0410615d2b828ae760167d7285b978a6e1d8ee99262cd96705b9f08ebad6bb1fc542db3ab0344197afc5c7e8901bc15f0aa29704f182674e20e33be624385e912e2c2223c491b6def87d9b5d986af478b9396eea78d6cac6a722eb13c88c78be9af462818f3d5bd70e07d2c1738f1f097225a3ba79da0caee7b020758181cac30d6618a283cee60790eacd949a376f5de9e5cade75057dcf7882376f34f22b542595db2b233b54345e70bd2525c28c795cf6a44b55a3db0a0ac8ae24424ad0a4ddfa6dca42fce91d4e0082c110863b05e86b2611ccc8d649d3c350ab857427cfa4350d9075db1ab4d3b4ff48e3c77ee17dc4910e7779b4536c9a441a6919c87098b915cb857296d374f563228292a9c83fda8ddca204afc4f8d5e4099492b6b789542dfc9f4d5c34585d2fcdda5336c123c294249b1960cdb2c6afd6aa690083108620f35b5aa95b299409e473dc0335b968e99046b0ca44449d69bd46923975e0693d0b3a86ff75c525dc9d300f14409137bab8b314db8c20c34673ec16d26d7bc9bccece23fb328bcaedd4b7b5a994b18f7c3ddd28f75954e18e0e25caef0423fe59350070b1f5859f93bcbe185cc0e61ef5b29761bfd975b9bd8967e587debe2fd4d4ada1643da67caaa9cb76ee68b50b3518727d073babfdba0c8c991935c1618faa5387750c78befcaaf7505f6f52b77b1b4cd9f603fa67943887eb6fc40b0893f4e509a6785b7fd9b986aaf7b5031d40d0db50d5bd68719d2aa71d31625d34dcec377bfae4f20c9104bf4c6a3b89944684741b409eee6e5c15a842b3709cf804ff08b7ab8196befb304691451ab54a9a9b745c270d7cb0b58a795b6dceddce6e5364e313a09034e5c16815cf711b1c6aa16fa7890948b3a26e5e89eb2c32b633ee4d6a11200b889f17fd7d2452038c4cc1280ac536c252997f1c3c1626979833060d25aa0f058884090239da14cb5af212b7447ce9d2c118bab983238a15df3eec2e93e68f6faf5dffa215c70edc5f7249712c8cbccc42e043365b891288006c8af69060c6d03c02416c09e324552f0033d0fc0ad01b141e3c1164e245b2e317697f4bd907fd89c263300686e07015276f85d549a56d611b42fa3a10d0c288f00c4cf43f5e9507fd4413ab469a00db926b4cebefaabdce589723d95b67e065d2bd024cb18e798261933d0ecb4c9e826ab178fcc49fec80becae81c185a9537f786c635df184478e0fcb29738535b27c0dcc596032378655d2a8b5ee612c43fab793c95512d9cc7c47d5cf1ce05ae904e49859eefd935297b1a7429b04a501782891fae282cf36f619edcab193acaae9f9db8c0153fbf02a981f5e7c1c4bbac7277a7788e48d87c80d4cfe6d03c56dbd871dc4b643dc4e6c5ab16ef73ffec55a73fdbd9ee9a47d014c501382c15080f2fbc22c3eac70083ecf531ba5af2ff2c6f8a9ccd11b8abb7324adae95f9c168625322b761e17cd6851cb81ad7e8517146360fce9ff213b136a277143dab16f3c801788df6aee679a9133bc90f08b8d1382b59b6dd39f2862530811487b43be9456a813f6ca6bd2a189ef54382fb0e4b9ed849b132c85c915f4db21475acd65fdce7bd3c45bd8ee9c439be479d85dacd9e51b2589985727cc75157537a8d800ff56598b5953b1d53a1852d5b7d0fa083025ccdcde3c1027a85429107ff2fbb69de88fb0187fadabf28def7da754ba9d9b9a01dfa33dbba3583b65cdae2942bf84566123ad8f2b989d7092e588ca788c3546cb16e8034f239f1cae04ef2ffe21bbfcd37c45a1b314caff53658fc8fc99d8affed92167c8ebcc227f81474e2c0714521563973978ed3b58194eeb58176fcb46f44161542ba802d1426eda19537f8b2bd39279b35f139715dc5d8d7ec5ebc521772e2f1de67972c9b69b925e5fd9146f397e6e23d836172f4d5bc3ce746e184962e1ef0a9da4d00c0a092a26977a8268eccf06790d094c76a72ebecae6a269163692aaf7fb086abc26d3e2bb3dd7fd9ee8fdfe213529787a98b8ea6fcffa964eb78e69e98250f7474d02dc9437446ccb227871b7488d94b7be17d5e269fc70942ddf17faf8c3f679ce540fa595107cfecd369703040d5afb8030bb911be0835637814eb77355bd36b7ee82d8b857097ed7a1953fad8cfd4849cf692f6a60dbc025e70cd643bb1ca0282e2472eaccb3a9cd5faca63aa61e199156979f1947418ed9ca2e4bef674a4044bba21962e9fb55e9e43eedddf2a7da5ea382f66e00fe9f7a382450b0aa27c3c736a071cc42d699284fb6c07660f57b53a012c32652f708224c2d8c14505b151bff93afaf8709a94e63d074bc32c9fb36a8b19af8c5c12869449d653dcb0678c1cb16ff6c53aef5a94f814cef57d8af3ead65685a5abdb36b2cf5182a0b704aae2944fdc82e1f59b1ceafcaeb0cad1cd719a754e73b0f833abd4ac044808b3c1cb1ff5c7bd389c8766b0bd939210324d3d72bd0720373c48c9db1f7feca6e43854da7340c1a0b80f9a4e6a882f0eeeea2d0fa854f91d9cbac67834c94450cac7744d4d22d3a581c098afa62d08f9495bcca26591a30fb32e2c884d8450c7db8de8fbfb5976ff132989502d37c8b00e6a8c7457b5ac683f155ab41b0270ab543671816c6e39bfefd3366d4c3a66f309e7de049305a946a2ac1f3b287b22bab32ccbb37edbdb2579cf48be64ccfe2e8aa2e4626697439a619101c24f95e4cc3be143a5873cd4e478c690176bf1848fe879d461cda2ec18a9de91e93e3ae9b8731d24b5cf46818998a8f4fa6adaa1cffc73662bfca40f16c5de7b3afbbda673a768606e13948f6eebe2b48200f45d25a2edd544d852fb9ea94b25f95c557284667c41d1043d5ed7642811dcdd446d5c3cd64c7c7c5be5af6a1f07678ddca3d802c9f6c8c6436cc85bca8de9481c39d12efcc95cb8fab3fbc4f41ffb8eedfb84130a45fa72ce18c70ca15b8a9a1001896369d4b68d5b778b93f72125b34646dcf4eac2cc943140ea1784a472c14dad14c6cf8d84b2cabc6d5a653e412281728845bb558cadca7f8c0153be76be332c45ca05f6ef12b925c9bf9db07c58179d006733e0c4b2aa2a80b28d86a9274575f9e392718a4c8eece80cc36a8da5bbc2cb034955868b1039dcf67c68b4a6658b770b4ce5d4324b4145b0ea8549abfe177d8313a11395b3bc58fceacf5d776818d33e00f90f4afca71cbcdd575de3453f3c98c0199b21dea3b8da6b0a49eeee7bddfe3453ec50fcc2ee676950991812d7f8b2986afbf257d5ed0636d998ef9667fccff2df1ab206330c8b3f0093e9951a1e8b132b44c320ef7bde8a35447479620dbca174ed131a777a2567eb9e4b9c8eb89dfc9395bffa311d22af099b0bf9cd2dd1f56230c82af69dd83c097b05bff484a7a7043f07c563d47473e0ae55e045d89eebcc255ea59c776b03145c33edfe4c2c354a8030a6b265df4ccd1188d07549bad4cb1312c1b7c647040a72c4417d4bf3e6da1dc206e3a74dfd0ea4eeffbd873e74bc2657a2f80afa3f8262fc29000f8884770cba5b523e10cc2ef7644841ba462b4281544dc935b6aeb6a9f2db2877bacfe4d408c198135a4e9e23dc8536b57435d33363685dd5d210664d131d22f61b09aff41264d35bc4bf15ccdb4497c26df5df7d94ce28a7484fefce9d58fb348384296d2fbee1fccbea3470fcc085b75951e72a28f2a5ca366c48d42506e0968d4d1ce62d9f1ffa4ea1281e6b330458671f0a16160f96405d03b391126065dc19dcd145cc0766e812c556096a71d7e347a2efde892d25fea55a50981f6a6855c8d8766441d45c7e3ee0528acfdaae68ae150da35ff49b9e9702f74fdd4736a583f1fd8cb436670cdf4d9d928498eb1ed64aa21eac4b89a9e106ec0c2ee3f819f5bdf9d1c201b50665f2eeac062ba1a7fb54fdf035cf8d76d6ae6164cce2a1fd0cb41ed9fbc242d324841339e748a97bdf45d7dff61033f3ebcddd1cc0f0cd137c2c5fa465add2bcd46394b04d0de53c46fadbdd9cab78f23ba4e9d9eb505aad3c77d30bf75328431205b667707605e47bf6ae480c250139044fad6c80c7a6570600e00f1f341100dde6896c1f3475f6ca52ff4adaa0082c28c9588588cfbd32db824be73d100400191c17dc3cc63d0903b87c8fd3628fe4ad7b7c5b5d21dd667e5037b1261a61bc0f64db433beb01d7fe6bbf797421626b3e5eb3c52f891807f4a22bffa1ed9cdcebd2266ca75e6718116e75ea7028ea0da7a74023820d11ec0a02aaffed5ae0823d0a14369ee7891f9ba3662c2d4bef0e5c0e836cae65fab6cfb7f7ed3a01e72f79011f0e50b751f07d14220847a7b571f3985fb95ec0683a155512902bb92639775e9cd28317c7309c3766240c372141a5fe058f11daa0fbf44500f85acf8963f35d93f31269bdd5614f96c9ff33c97fd197b0509c63645c4876ef71d40e46740e4cbcff69726fe138d6ced6564925e17ade4141a7b874422e06d484999b9a70cb8ca5c80bfee6e214fb6a377c963e87c47ee19d2be645bf8b0e792f1d9d7ed4933441c60dc94926ea2d0d708f818e437af7fa7bfa009c4f85753518cab88a3fb2305d6898c165af31bc7ceae359f5448bca3f3f37cc0cc807d3b6397c5ca7f6d7ffc7926a951629687dea7f7dcaf2af893d8faedaaf9fe8426594b303d9492098fa239756905eed908f6e61981c8a5928aae5e82dff05df27159cc9a54c4ad0ec2bab9dbfca4c2bae23d1e6244a7cc0c55eb5bd518f25b4ed8a0bc9995d9ccfafb9659421a80af94b5af0fb42e0c16bdd0e4b36ba9defbe9152277f8cc4748b21dd946a89a5aad1f42f55ddc9b16e0891d31f70af06bebb5110e22820a7a5be676b549417789297ba79c994c45969fc29bc3a42cbcbb01430c5854769c23b3709eeb490837b9ab5b2f1002ff28da0a68dee038a7feac53c762391926e65a691724bd07296703c627553a7f34541a830ce572b668d82a5bc2df33a53ae3bf4e174ff9a3cac8b6b59a28865016396e8a89bec84188e4c5cb5a5864dd298e7ee0ac1e3733039d3ef9a58e5af8f28a2c817cc79fcc16e607e2af03e4c25116d1ff27388b41c41ce5edcbc746fc022fe7e65db0403aeeb4b6c5a67201594f26b05d7841cc40add820b677955d85b142b723166bc176d1979b4c823777004882a0bd357e66ea9bdc4870b3b26ff0874c3522faf784e90e0e4ca63848b4055137000ef2e4c8440a1d390ad3382ff95ec7d59391cccf5717c25915cae664357472f264ab16cfdf9df4981ac968dc5aadcff520ab7a3be19fdc068db07a7981dcd0015866d472ed3e15aa2151e92ccd1d67f637dae7707f5c5d3c9bbbb647db4c36d080a5275c396a361f61e87ab641a2138ac44d40b2dce0c0798dc3826f0e8380a59b735718ed639bf56e2138451b838a93c431fc002285fd7af60b2e42eb0b15f2f584c7062fa4709ffb10721d4ec48acf9192871d4e41d2b6670a02041eaa7a7b968b5ca831f8788dfa82cbf7135b5556402aee893eaf938f4a93d0600af07566edaeff36bb24707514a4fbf093595a76ac513de13487bbe097408a24e11b07325185e03e462e8ef031ec1a20c0c3314ac77dd8672397f86ffd244257448f8c812e1cbccb75060bb4436d717e6dc8ed0dba736b7154cb43f6436793aca7b28d8ea87e2888315b9afef776b16ec09d7f62ad76d92dacc1da3ddf1f1693101fba7bcc2b30d5e9e90eead4c590c6552f778e46673cb5a9d94ea97b93c8efdba235e4a7f3297619e97d35521031a775406e3a4a15f7569874297bd87ac584c66c4a9ea1eb71f55c113a388b3ce5e1222d5edd729eb6329282988b1c5dae5f716f7fd3c147f48f8ab5e88e7baa355288765e165e2f41b5f969a6005711f6297d2499c3a1c29d2b34566e479eb6e41c2576ec7ba59fd53e0f9bf3e66391cbe3f38396f6e3339a5b0bd2cec1ea8a3a9c89cd96d91daad04436412c2f9413373f666bdb45df7986a973b479724fdb4e68dbe46392c894c092e5de461e5450b5808e1be786b5b12b47a325ede5da49cbe6ddc87c7e55e4a50edbed713fa5c0f85b6fe97dfc077d6b4addab14952e55711145923624369b99b2bb26442be82f048eb9e9a4004c0fa89896d91cf601d67953c43d440f36cced1f3d15713504f1f2de9288b10e91ef512635ce402f09c51a4fdaa099c60f064dd5bc34dfed906540a269e239ce24a235a33e2a29105501e17f023658fc7bc781e7bd63db393410a2dc46f8e928327458db4fd5a13df59db32c6ac3eccf217ae6a8e98ec5089f3008a5b07ed5f542efe85f517ae27666419a523f51f1c0d54cb9d6b9977eba288b9020577d5572aa957e2a559d2e499e56d90c88246b330d638baa608cd62a61efdb9d990cfaf49ff3bad9cf711964706f1a8618727539e5f86990a3933892da4567858bad649dc75fc965b8d48caac26c1608f50e73cc638e42c478bbe99cac89420632cdc4e878bccbd90f269b2dc367f24f61be1f38cd8ab4df7badcfed4374934c6f4459929864506d9d6facf023ad0a769c125d075c5d31d600bcc68988c4e687cfa69ef0ce1e20345d593f3dc54dd418515f4609db97bf88b5b2134e0cb3c49207a160e14098371629f648b06b9d359431f459fad8565f2a2bb432019f4f4ef3dec0d83af3bed39cc55ac41ef9763e3653b44f035ca77eaa2b7ed55836218c6760b8157a36c4810832243eb960943ebc110cdf710623b2ad92db0bd2e618f5aa9bc9b8ae7cd9f9890af11c6687caa33c0c8f53ac2435f96bf316fa6bb2e05468feff85b2df46320b7229407d0d4d8e0a4578292f5b2366f1f2ee1bb1936681f832a2966d399e9e62fdd5fbb5fdc8c3570c06e6d8ad636a19b33134dbff96c806058318952b1e7f5b95c95f1a7018c5f6a2868e3d42a78a50423e3e2126b081ab09b0ba56dcffb897b41723d12b32154ac3e5297fed23bf2172d86260104f7d8915e2224aef4240b78aac2835fd098bc37f4c469b17f62fb8cf30218f9fd391a1793d755f76447959cd06819a1c7c2f26fc188fb757cf1c29171b594c86e8feffe1bff983a8bab10a506d931c7f3740d06be1c00707893f918b4cc2d13e9027406a2625696de7dda5b0a9e9d1ebc08fda9a0336062ca17af9b54cd4e5d7b5c303fae3dcb695d4dfdf5e1d6d857c5dbb71254342c2543ef92309b0eb4e58dad8f1dbec1a3277a8ff98d56b169f13dcd762f2fb95ef71cafc41a273b31c72cc863312a9265f1441c1eff7af68e1ff1c4019406126f5639943432ffd4c71cc1c379ba2448aa4534ae70a3947e3e8b54290c723dc0b345aafb93c7f5ac0d22197b3e8bc9f1294b2e6726b629b673823669a1b1b4fa942f77e5d5e55d6be389e40d73eb348d95825b4bac5cef21ce730b75a1faf62b8fcaa8793f132a0d7b85775ef16cdb9141e9dac13f98cfd47fcf1a424dc1487105acea8208f4ae61ae35bc9580e4e865a0d6a61617a245f98ba7f44ae3a75320e4727ced8b706e8ca580b79bb9f840e68c1ed9fa1974dd4c55a9aa0a4cc7fc3d13b4bf4d08418283cd85eba2fbf8d7e4644204002a80b9a17c4a4082d6b09504b9126b57f00077941e2a2f9b70ee7ea5f3ba8622fbd79f5c0f43a7b8043b00634c2e4e66cb2babdeb27647be2119ea612ca5943c7c4736f705af6635686b8d7c77509df8a5a58fd4acc3ac061c4badc3b45b338ccf23c3801271bc868e0f5827ca04ef2e12b179bd6de96ab2a4d3256e3fc78939d3d0fe18bfb0a1bcfdd69b6d3c047150b87410371cf2f8c67deccd76b66fb7c9393f4075dc8d9cec4000120e811e5d477772c2b07a053a883adb41e33598dba832e594614063b2b004ebacfc270b6222159219ec0d899603a4385332d6ef14a8a2f32238d4321fa5432124de904c87927fa1368293ae41872d10e3d346a1097cecc98a6ef314b0eb82a9a28ead8e0e6d9c6c375fc8ea4c2779c9dfac38cbf63b49eada071ac5bfa81eb4919b942bf82eaacecc417f0e2039ec0db09498ab5de4b0f00f1de3a5dd85a6f5e9c8e3bf1b73305fd03c07fc49da531c88d9990724d4524e085e57d6182f4a40ae8bf2f8387e809c3b39e2326368993ca3bb909a64519ecb498c8b32c2d7552e328fd40600b5c5b57c72cbabe80687451fee9c953b03db12f5fb8e5939b3beef97322c5cd423a656c7f80dbf8a1b9c66441c247a927551c5c915aa12027bbf8c8008cda5f7f47216aa2d2b0f69d3f1a757611cd94d9903dd2bd9ecabf0ec842f42562e24defde86ce34ad1b1199c2fd2b2cd26c14641f55cb1580d2cb549ea461898add0a831814e2bda211127ab8fb0c0e679e528a70492dd3896716ed54594a9fba0f8242d51d2683d483fe575f3dea8239cc7a5e6526655316599375a4576f0e339383cad7b83952660b61c360896ea72ee6d6c7e3c8906927946d3a5da020a6737ff72143140621eacbe0d6d7b27e2b30671fcd4e16d71bc12a5b10738c2b0d06809efe93fc88bff1bf5bc5e3f1c393ada69baaf3f6284a61e438fd5dc1c301e00758254355daf7923ac4e8fdf268d51b80aa3bcd7403c58f817d4e9b1ce6d83b46063a50d165a90e020744be55b2eb3146d990ce97e8d707655ab2036f13ee5b43b8bce74c8ff1c92be92224c62b113225e94913899eea049dc85daba6e9e606a3134e496a980475eea5a67068e36933cb4dda469213b2dab6d5a7db0f082c20a5b8ea18008e7136911f9b09116b34d24f72d82e6ed8c725bf47ff2029b020efba091e50fc410d23af3e85a9bdb3dce07e5adca582e175bf07e6f2786262bfa0176c431745e0aac7662b803b5695d955e9ece00b26605eb73c5148b722c75704ad6ea2a3fd0fb1ce1f5b30e193199999382780ec492deb652549594f1b401103634d41c057da973b6638d227f201cc07f0748be69f4f2679ab69f3cba5ae1adff3cea748debb554518188ab00160b69b4156f413f4ee93c88396580bd957ccc2d9fb545932303362121a1580dd84de395b358abea8c968567235ae0e2fed428d53c49c415d3cce6f048699b6f88edf345095c74f420e928c077b9e3d49ebf31ab7367cc389d56027d7a142c61c3d7525e07a3f82f8bd720d5a29290dd996887e864405bb534547e5a084287afdcc92d7b3ae8f8b3ddeff972a6d8f5d2ca6884fb66db13da2383232db19d69f0ec63a49595d61763335c560ea283a3131f76b00a0b99ba1b64480b2efb5a57c6a0e74b2e3da55f0460ee6c32d0563093c53f4a4760beba35278627020ae51735fcf2ab479d00b9eb5a0b843f5346b4f68257c60f5fa5a2da7348b9e0e8d93406849bc23054717832261d7c796bc94cc1bc2149e2a501a3f47759da09838d7e3d7faa7f1fbc38cf7f34884766f09e9b900da62f1ff2a31376b248f58cc4dd889d425f479b1d0a56618fff687c27ab446974c2869bfe49eeb956f24a5f9d16293cb80873b7d41e893340797b21529f711371b39003b25350748b1e6cc2e001fb2695fbd01df3e2499abdf2adf88c0c4f879f1b450dc7a9fc326762c3fa3a04df17efe61de928df59895fab3f81da5c8f69a4b5cf7a58bdd86dcc060b56b7557739244d904ffe93e2dc1b79070573eee7977ca30cedfa4a6f27875bd38190f9abfb46f3521da8b1ef810d62eed6b3368fc581de0f864e776d1d4e87ff31451625f87f6dfefe0077f22e88b373e14763c527b6a39e5b32ee2789899747172bb4d4e6178b269c71093dacba6526856369493229d8b6b903e91170014db625fab56da21b49ce81d1468aac21b92ec72dd4e1638749033593634584d5e42b2b0a14e53ccc1eefdc8ae974354da1c4cfb0ecd722275f698db952039560e7dbb53c00f8234debf5048bd6fb97babeb6b8eb0676a924487e60b6622b8fe9d8cd4acd9da655428842d6c91304f9c45fe5abdfd890025ff30dacc29ec50d44825dec8165b0a45009a9dc7135d769ee3ec751b2c1fb15682694208166797ac269b9f0f5231f0db2fcf34df3069f90037be58f3fd00fc5b9d8c643364117be1bff6728f9bcbe1850955dd48bd4eee0db935e97b4292a17c2900b63f271118126efbd543d849b53168318290d013664b80c63430e2a2c7698e0fb5517abfcfb8b0e68eecb088ad06e62c87eec82501283b3b9c79439fbfa6d48e710e4e21358d44ce63bfea5a2bd1a1806bce47af9b970723aafaedb00ca0ab55007f015b49f6e2b0bb8f109be08d922de85b5555079c7ff542aa5eca97fea886d5ec0b7e03e964680c8b226fd138de8521ac9d15ac6cbb588ad335de5acc99eaaefe0acbf1338983fc497b0427ad748d5facad07f07165becdffcfbab63b6fc241b2bed1a0f393f194a8661b4e3524bd06679140abcd2a9aad93e0673d3f5fe2d6a2458df64c0bf30e71cb63feae69320a63be5ac34aff27fb2604abbf5509ace019fd8a14c67e37d0dfbbe120ee36396234728f9db744e3c6033a0834a9af540e505b01652709a4b5aa1ed1fbad35276575d9ae90e956f49e5ff5bd1a47e027208ffa497356881ba2ca4799f584396f8816cbb5985274b1dcfbc2a2e07f3ed87324ddca35cd2f83d8c2a188b77d9a3cb359d76884a1d7fc70405772890d13855b01b565cd2c20e1c5ff34424fd89358db296b99a45aa9168e5a90fce767709e6d61d6508d887d4f3f05a496b6cc63b540f04fd185227e4b6b6fa49371776cffa552cf89105c51c31c91a83a939e3152835a4376ee8ee797b631b43fb0ea9a2845a4a3a06faa1089ad1bd29e92e237d86a96ed46c56f681148a0435b86943df29813ce0189cee3cc6cc02f779e01aebdf28970bc68725e8f3da060d8edda560c4981b769eea5e129f1ca7a36d315ee816117a6d945eaf111ec7eb92a4171065e5348d22115d4096e7d8531f1ce8a99c069cbb85d39bec4dad7e0d79a1187f944d108ca010d44abbb035a7c7a152fb2dfae9233ce1577b734f3f009f33a14add733feaa3de196face23994a75bfb47f833dc0100050ba597c6f2a6a98cae53d90233f777dff2c4cdb8c592f56d6dc76b66bf1edae5254dcc661dcdd4df06d636598af36a1fbefa9943e9599c3f09016c3bc68c380d3aea569a1ca08be8d52e3009b63c84cba5e834e68a1e97fbe80f5ecf53daa66fb24be160b5a1e661592a765b6a5a16b55f293ed85d904f11d5ceb0331674acde1b2ebbc8f2eda68e9daa10c8e157f9d47dda28a5280ff9b348de8deaf03fba91fddf617854eea7b249b9a17eef129dc24ee61fad5bd2195986b68e6fb7ba67a74179292b4dd409977c5627e2e16aae3c4e7948a4f7fc0f3fbc37c5adb7223f9d2d67112d1175880bb996d0083579bda625850610c4d765e2386a23851479ffd9ea4e84e1b4608b5de2e1ba3d153e2e843c73c1cfd5ab3587af60524bf0638a239f88013b9b4e7de44865747eb16ac002d968898e65f7b2b48c6e5449673bab2615b574473439e278c60af1fe5d33266dd0bee752f6f62bb55a24e33b5acb83f4f42f4ea00bc374f7ea8637a4865375b8c78e17f3cbbc7b1836c455d20894b27f8c6045f926bf4cc238506c8a71adb8f80378dd9cb150f231522001317c933521282b0c98b4f6b13d7191087fd12f8ce8cafd374d10922d978d156e73c1e1a315fb0421d60986c752f168fb8628eb776653212c5955d63aa516147823f4a997fb976c5ba0f16aadef1d072c55fa80b2f4451904e8a87d9efa1f6861c2184a0958f9c8c4f94a1e0f83e07d53d7ce560e38cd487076f4f78bf9a4342f44c7a3eb131af1cd76f752578533536dab0437187c36d81c5239f4ad4a3e522b93a5e790fa1ddef7c01934eaedbe280ea27349d92f2291782037b45b5706843e0bb2653e3b0a4a9416a4bcd8b9840ac844df8d416244e09b5862befdd08db4f1fc5d2cddeb0d3d59c83602796a9d36644c3942fb4bb51e79c42a68b128e02c492c7880e4835acb20bd4e8d308404702228b4de4ac5d184c10692f2ef1598f75852e777725d8c8554eec3188711752e5e7aa591aaceab68341012331b1404e2659c3441063ba35d32e89752491f563df299386503090baa60aad30257e25acda22ae6e176c18a024f4e14781c3db79b7311f178c13afd6d3aef34ee030400421e90a97590f632f4775539e764025dafe41ffdf883ccf68b49d09fde8440d87640584e3839c738d25d477cffca87dd1cd23558bdd44e834e9f8fb0b8b622ae3e4e7e90e41e841ea73d01d6ebfae7ccd6e27cbdba26f185693446ac28a678a68dc1f2b231b46114321674213075c6f935c54d6aaf550c0a48ca5e47179dd6c488ec1aea79b5f75071d427ca1367c7b92c0bb7b0b50499a313ed18bc8096138051484d96d382c0f9ee48b3ca438b1546e7f7fd59a684b55f173e0831a884ca66ff04594e275d9e9b92a546fb4504db276b7915d9745e234560c0946fe19adad379ecfdb90cfb5433f9b921b097fbccb40789294def38ca64bd7b79ea6af9e7b2236e703c78f90bc695221aa891919c9ba9f51a548c94337a816c471412afd7548bb5d86e8363cf891c251b4b6b538480632bf8ac30c30c1ca860e0059c0155549002d46adaeb109efa02a138f7fdc2a9bde38baa1695a77c4015fd742c53518ab115f3e497792254dc203d26f3cc17bc9ecace75416f7bba3fa1a9fa24c87d1275673b179a59bd078480160e05f84787df0b6e2026e3a2c01cfdc3a93606d25f1c0ea37b9abc7d8773b066adbf479ce2db6d4f87746a5ab7d74081f59f02096116a998569229630d2a83f95248de6499921507052a9d84044f04e8e7d0da23b5e1657c11363352c7f895b1fd77686e67265161f4571328dc032855a8ef1fe2ef50362265910e93efafed04cb91ed9105d2cddc024827ef60b02ef751f7d24dee629c54540ea05175a6b57cb5e85c2646a16e2a53e8f7a754513a521a6b8c303b21044df670331e35de7b36a30eca89418191b16fa95ec35885b1bdc7d7ef998336803f11925a6cc1461b64c466019b9279f00d0d3807d9be638ce5779d985c1b2fe2cf84e25d15bb60e3cb4135c043a320758c9cbc7a22e92c4a48b6bb229191959394840141d4b9c372463b8664e8089d44b0ae8abbfd3a769bbbe299cf11555d499ba2ef9ccac448284116865af9f0c502b1256a016c99b3dee5e7058cfc684da7e6a9a878fa5adb043e1c25e6659d34cbf937e441957b40a7c141e3c935295d2de8482ed8cc0b33565469202923f158a7a6423e73428b4aa9205444b5e41e35550b8c4df18e9ff788aa2aca6eac0ce3580b6c0ce462d53f8f2511e8c9f3e4459a2a28a9d4eecf110f012d2bd87cfa13282f168694868aa26fc7ef55b3921c27431795d2e081902a5d28bb577c946bc7054c21063a644f64d4523212afb471302716f87b8440e79aa085cc11f2fb8348b951fe6078581d2b87e67ca45d8faf7e5760de0cac06554ef59383120138b743026191fae7deb221a0f6bb6a0c20e5d686a2c723b613ce59915efc94eadab4678f52e4c5b2199435a7cb5a7207a59919487b80cef18c424992096bfc51f064876a2fa998ed509be4f1ffc9d16f211138bf014d8378f8b665d6488aaf4f91f44e03b78c7c566b19fcc902563c68dba0dd2c3de324adc4ec7592e65983a156f2dd51db58e8cb7a86eb53994dca26df133fd1aa359bc8c09abb22412d4f3ddb7ad8a243e70aa42ec28c9d5a782fa07b1fc2feba0dcba3a1352fecc90984c34275c17ecae391065ee483b830ddd90dc4e76ed95176f65d7d483c018455e170afdfafc6fe5e968e849d9845ddd8b2850f945d2c48f6cf95525d80a38dd5a037cd2bb190a13099c53e27ab6073847c3778f391f2eb9acaaa7f754eaa90fcb39947ab6a862b2ab97bcdc4266fda6b05a95e31f7ac7bd270e34812f94b5089ecb6500ccc8845198d9c99d313ed4e94ac77e5996d63ad16cc6456cd24c622752ac31ce6e4234f9a4be3aa6b2bf7ded2efba726e1c3b2a67279e3581a5e76f32e9c164552feedbba2abc31908efaee72fe2033ca79e00d94b62bd501a88c363bc6f5e6a8e1462f6c21b4fdef02a5b62c8a439596ba9f6858ec390a652ab487efdaebe31d1907c7c574130736d7eac06b5080cc8f9ceabf4489220cdb04f409c4036ca0acefa1d217bba2e7e9d0b96ee515d64e59bc368b79ad53f81605b775c06ee0e5e4cedfb0cd3e255be0c5ba717f0ee458a2e993b83177904c47dede184e0bf881da91d97a20ebc6c73bc3555386eb2e685a2b16271df8416f9eef195556b560c42148187a992c97b0fce306ef330a3cc1f565332d8b8bde276b237b21b1357703dcabc6ae646f2d402239f4f3857ce8eac1d5801265d76420c168a885e371b417d49cb14a7325bfc65a659f6564e69e2f4acfd093f801876cb18942202e6570deaa326d336e7e423244ce7f1b1869b41ecc778d6192e669fe1260ffa3ebbc4cb913385484783bb49d3c854c411117420cbc6751a0e852cb2edbaa4d523f323a0d2121400dc2483abfc249bfd7fda9458e59692b695597f9380606408a13fb94c2a0cec7cfe906a8776647a4313075b10054c5ae48e1f345bc0fc7ea3568ec45c788b08b81306edc4749711c7555ce58017fcfedbe1dac823ffbbf5657f1272f8b7319960e7b758dd62e9d12207c6653f596a5c0c0cfcbaca9ec2aa985056f6c862cd51e152567576c1dc005826a4d8782155246366ae618c650402769dc7418ae4c541168a30d52798eee743d4599861316c5627d585b59c595394a401dca5902e7fe8c8df6e1000e2f026cca85ecd2584a5518e618e99bbc73c22e5bbd3b730345803740eda52e623007eaf34054e6c4febaff3427996b21c51a49a12ebf7436b31da1ef3614284e28d31c5abd38160e2fb7cd22b74e9b52ef6a6d0cde45f3a35d6a2b3c4690d4d28167b7f1595a82b1aad8c9db3e829c0fdb0cea280212df593ceada7f03005f8e7d01fb80c414c76b49115680d1f3acfb7ccba797b96629e80f763c424f397c49c2f96423806217c12f0d2ba6495e151eee5a028f79ad6be56d720fc354addf6e7dd555c9bb5ab87a237eb9d543752a65148b515acc6a2b69dd2bb675ac3b1a8a132b70b678239520f0cc340ae9b7e021dbf6e9d55f9ca79203ea857f4e57f2d0603ce0010192c782dbe2273589e28a84fb31b2f1635a5501e08bf03b55e73f9589683717aef37e352afd18bc0509ca2755b7473639d6525b19bf29b88f8d79d35ad70836ffb8a30eb4bcadf70ba4cd87d619153b6f1021c959245a39e43c6caa3a00fff3fffcf3a988e3f4b21f1bc183f539a92f13e0e577bbf2aab4824909dba8eeb3b5fe221ae6a372f7ae7595abe0b78115534e25511845ec7454e75cd24b4f66303793046c66b219771f9e1b16c54b69177e5441016076b5a5f8acf72d86a248980af5699612e62acc2fff53833f30c65798a22dec89e4e1feb12f6bda3a12de3410a2c67595da84297a1f6423beeda6181f8dcce3cfe6472a48ff74c8b7c9e4bf025574c2dd89242990c0c035965ebd40a51e4dc5f4526dbfb521e6e17600878cec4be6039e50516877c9f639808799d14f46bc44bd491f3ea92500a48fda9aedacde8e73cf0295262701b7671600377c58561d8f721387b20505720041d9cd02766571152a10f24e0b99aee55aeb9e358cd2a32e620c4e2f61d71eab6edb9de8526f9a51b0b8090f8687f6dd2f80a063cd8ee8b55da1a28a865418d61cae41219d48f8c6235124246cb223dede21e277921d34b8385c30d3f4267760f52ce3ee84d14de58b974d5285e941e89308cd95638e387e4d005dc25d0efba7c8f2cc418ca43919b217f70d0db14339de79152e5e7cd4b7f8b65c0928d29c80069a6dcf0d8d8bfaa89fd23c37dcb0103391e150b56cb9241b4cefb6ef037c50458d52e1b24d62fa3fc4d616a5f79db46a98d0d52e7d0fcf9a7ad81b0192d2f1c1677c6dfab6cb838f759f9cf28336843ff0645fa16270fce0486584e129d8c7d6e5ae13ba0de15e74a39ccc2800642ad38892ad7eb7d36a597590d5c56abf6687659ead99c1996b0bf2c0bc4ac45be929ea73a9449a46c8f6f2979c18e8364afaf61c3a9373ce76397ea202ccab1d87aacc67120b9c8895ac751568f8fb1759fafca80d774c260124b23f6015902d9aa24119bbfbfee7ccf50eec51b8692d60745dff5c69a3e84cb729da7f049311d5c06b34d3d344f7b74dda9c795fd03b41fa41936860f4ecec22a799a568395f769ac7c9d0630df657b6b9d4ce28edb54e43680dcaa926235c5817e9a1875561322704a22a124507a6342245f400aec62fa90235a762236eda90a6bffb98c1a0c2436b043b59a38eb952f819330c149bb3a928e4d700bccae8c5e4473e49ead9c62edab15045794f949c7c9e6f20e6152e67d7e95ecae0fc4336fa9691392929ca0d4a162af9cf26ed2348e3cf483357532782fbef5b273d2ae6eb654a7fef770e68e8f2d42ad77ad3fc58774d43a5c10ad532189f24a1a00d1df0fee821c07437aabf0233a1a3b96ec12e86bb03a3675d7e3aff3fe7013592e5d2d0139efa9f0da5ef5b32bd3d816e0ef7ece22e430a77d5719c6e3d160bdc8e6a5a76657537590b768f1eeeff4af905ca1836a00e14acaf098cb3118aa9be2a1c60115be80a44f686c94d3b45b408cbf6bf46e792399a87eb17ba23ffa15411709d755a2783c8617574d3bd67be2b0860c897c5c4a9c4fba95017877342e35fb66496ac2c6673ac2b20d0220fa0986be8ec9db232f87f4c0124b423f89cb371bbde5d94f321251c34b06c2bcf015124eff3c158072b9de2e7928634b75fb76c8cdcf0c522a88e5851128d2e16c0dc69dc88ff15dc9606c62e69e8c94a3765b64b6d9ce98624ddeda6ffcc946b8cc8f1bd0a4c7c5b726c27b218844763b5357b15aabb1b5d1867cb718a675cfe07a77cf3e148d4b34b32d6199a82e3bdf58e29f469806d6da434c7507a40968331cc49eb2ee597d9c909c929755f2b6b7bbaf4e4cf6d63f50bec171db964e964405c9deee37af599630a9ba2528a7e6500b653ece47f7662ba02d95252fd0f3f479043fe9ba34f7df6a00ab2b9c78f77314d813ab06f93dc55128c09c7de53b0374407bfc079bc79676578f3da14e67290effd5f7f3f99a0a8d8947cb894197721fb3a76d13a8775b7bf6c008bac5fb6f6220a92503fdf2a6bb8ba232b0857e0c6873116dd47ae9935490e91ceada804724830ff9005ab313988aa5be4a41486e070c65a81516574b901ae2c9acec7aa75a6b933a16cbb6f3b1c749ea430f05daaf9d5f5001591eb0ec43d6aa77793f69950358ed181c03e503e0c4c405d9c179470c0cb42704efffddfd2c081a036fd6392f6c3c876df01bdb7ca02d97c5dcb2e07ec3fccba6a5c986326e82cc5b1b1cff7957586122e60b2a6eb87b9a58df8b1ff42910842e7beb66818c90659584b96eb6bd373d33d4f2d990e4096011ad4b16daf466f7f7d24d0ae2bfec62c52fc6a28195234f08aedfecdb73734fa06e7e020a4ab5b1f15cf94e403e4bd571af8a7e7006f28a90b2d058ccfbbb873e5fcf691965ca7374f17f747ec39b55601ca25cdca84d4e8a94ddeb62282234b626217d37fe3591dfd0e8cae5352143da9fb360ddfaf9d05bf27a1a7df61b5ddba7350965b64ff20a6f36d9b4ad329078b0b022ff1c28e939f4664d71c9c45743f7b0e56ac59781904710ac30807bd5672b3b31a714b17990dd39d1850b4c70bd6df9b8cf760540d86b3864067bc4825fe7e43d817a6f625c24da6f3d7d8831a79a308b145170a7bcf4aa3cb65b7814123b2c4805d23c53fea19e83972dbc39fb7311361a3059eb835dc4971a3b10ac0a77f7d69053ccd53a6d7850ac4b9f6012f7eecb8a29d8aa343a52eace9ea77e1a78f3e7d8fd526e28b8e8152d6b58cfd1873f15ad745fb6137ce2f3ea049045212d6b40dc49646e222a8ae4993fe0d2dbcafb3125c76ac46848c5cd6560b9a112cb9af232e4c737566baf88c4de82d81f996eb4f4ee502015115ce623e0511c50d88957a9d5cd3d74922c93d36b5dc55bfad2def4dc32b23f95fbce8ad74c4ab204180e0a34d04252f6e95fde8ed99af94497de7ff0758b08ab878e09e5fe2f6a5a8bca919586e717098e0b3de498992138f167d8cce64d54622385e2f8516ca2fafa543980cc6eddb1139ccf8270c5368c0098b23c28226248ad7c322de72bf262816b801086e462e9cfd00fb96e135d6db814e749aaebc4fc903535dadb76245d0ea1ff6b7aa349ff4f2d60fee0eb4318ad0df35a80c56a6776fba6a205dba1da44e985e2fda43564ef4a43ff5123d645d992e9e71792c3b8e00a4f87f009f9186cb4be50a2221f09c4862fd9d2560ed5eb6e7ec5ee18dd4d91f5d58f016545837598579654568feae667d9b4b86db5ceeaf24e17631626d3d94ed00c2078f7f99e490cedc94c4841832acd2ab1a2fd8efe125422bf3b2b4c493540c5210dce4490962dba52a697aedfafd3f1fe0f5994aa8a15835e5f88c86f42eb87a931abc85f7965bb1e4574e4cca76e1b1f1776fb72c647082236c8b57a7bce793b69c0d61c0724de0ceaa61b8c5229da3249d3adfaf145b30b0d37b4ce6169f036e50354d82d77548ef178544b3dfba807da66fc967f6ee996f59dc0cc16b8b5e5b3a61ef2f1ed988a633858de81165caffda9a9a4d648373e9b761f5f03e78181f751747ebe6442e168a9d842e192e2f9aa2d6a2749877f760af6f0a1f03d8c4ffd9ad242fa2c6273f84fe0964a18a53316057bcc408aa221610a1ba05da42e70872cfef40a0314bca314c57e9d94f2a0bbae0f931440201c2cf467118edf05303d1fdbda4e99ee9ac7c1f3a1e363add1ce64da5cbc4e809a090e1f89a9b3f20e9850ab98d00e6731b00851e7d986c45fdfd0b8e3c9cc98c96b8a8ad52ae3223b7de9ed584f02a2f7cb87ee91cb1e9f37d549ba79639962d50b707803bdcf005be57b5d9bfbe4cf94b067fa3a3e718ca2c4513f883c8447158621ac7ea2e42e4d4301eb3e262731d270af0f2f35f462240fc9cd636d34d5a8d5e36e38940167d0fcdfd1d25ed8b386834ae661f882388af43f579b3e12e15786660b092e0fef2d9b34a9b1664c32d0fff8a90672542017b78eed64ccae7b45eddd4c8b767b21c9c4450b77a310d2be22cc7ef57059de56269eece6e487eff20878097a2e68a6546702ea0f7aaa1bdfa94a0ab424f104892066eae0f387c4a326d863a7166043e6a16590c91607af63076c01daaf1daeefd777cfb62856e6742f1be351ea5441cc0f518712960d79e168ac82c61ce1fdc79663994a77965a067ce31f53b138f0c3d7a0789838abc7c7493cc766c176866c7015b1d2b8f77c4db519f1fae5bcfd11915952a7e6b6ea77bf0d64beec520e11d94acc0dc5f3c449e64fab84a6912966d35866e84c4fbeb1ccd6278a73319d5ef41893b0993515e8d17e9148db10b2b3e6a71266c1db04138eee0dfd6a606c9eeea633d1ae8d85bc8434699c48690da27b142a33c3da04e96b236e7810ffe998fff4216739df6dc6c79a05069571ac7fe76bacb976124fcddd23baf6f4c006491843db5c47b543501e7ba4c800b48dc0b5aea82bf68561bf89d3d1f610d69fa486c03f772bf9fd81d1c0ad939245c4fc74fbc5e71e7941993eb7cbf4fcf7ff0b2e35544e5f209d7278a3b7d33ddbcaf326a6aae125103c5b8c2ad63bd7eea318e2f8980dc8dc5692e6eabcf07527287341b05d1e6ed0a21a8be77a55e03352b013c094828d78e8f3d5fee171696ad8b977eefdb4958d34a6590f92eaa5752828b0fd27e551721b9b71449c1abbf3e5d8fe56191299fcd6db19742d516d6135f46e8f62e30a4be858818379df9221cd9e498e6a636f92cc85c72d8821215b243b5e81ab732aeab8f4201e8f57e5ce0f82b89de5b882968bf248d32f2fb014a75a9dff8483c02b1487a80bd70d4554a43a56efc5fac53ba0490353e38a9ea5bf4f9e4deb728239de6ef09cdc00023baccacacc9095d02a2c97a68dc1e45cc4a05123b2e972338c05f5a186429c171b7c7d8261fdd57916304459d604f8d8dde489823dca8d04d7077e51c7ed06f476ca52918ae610e0085c4d419144dbbc1c464b01bf39ba35185dab4f650e171f526c6ede67a492b705397deefb33fa2300d3c9942101b0100dc4bfe67c07e577fd7b93ae25ae725385bfc25a0f08dcba7abb7a983e52a03b7d8e08c5ee885172996101ed07bf55d7ff1e9a784ed479c87f71eee7ab8d8fac0dc4dbf0d972011871dbbe735dcab79ceab61e18ec461cd162e00e8f1e1380933d24253c8cf27bd344afb2f4ed02600dce614a49b02bec0e5efa832404fb569eda7d78f404856394a9ee47ab27f1d6a2240192b9a27087d72be2e0ed204ac47a4cc08a155ec4a17c4c16c9bd864e8227a1cad6108275f5acd85071395955d3919b74336dd595b1954fc0b38a6d0d73307210c8ed2eccfa9350e329011ab2bbad66003b6e86236c77cbded128766da9347bb53d278d19fe1848aee558584273ed0c47c98dd8e56046d17b1f7a49d7355f499773579286718c60d07ef6a72f0b842665bbb58984412cc3fb9701a41022db52d462661b6fbd8860fa88a765be2b112c98dc03ceda9a889100ea63bf356095b2f7daa95322b9945ecc8183837943faef721ca7b31330dd188cc075ba49ab8731aeeabd5c9455de165245b4096a6842afd312525ba4255714927a6c11e85d38daeb215b69d7852151ec1ecdc17e287ed6ce0b5ff13733b6819f758ed7be368716c71b3db41f869da1e0a823df2a581b6da6436827be932c062db1889ac6e23e71db204833ffb3e005177e31a6fa6f83f5f289b4a6478a29db2ea2bfef3f1e3644c4276fa9284d16d09c664c66dfb470819f22d4ef491712a3cf307ef69c1091cc7a9b30f2cfedf4179c1dadedc7e6806a82332dc870a510a564b0c677980e37222af021571a3e979399b51c6437b1732b20524352bab6925f931750c633802e833ecda0fbabb23dec5d3055a3baab4cf6024e5e822945ae244bf2a2cbabe68bb97722bd6d4a4ebaffeb2615cf1827161dfbb6766646fb15bfa644d09e66bd17e2c80005c7ead7fffa7500177a8d8abf8e134ab271a7346b8fffea174a32184db95437b37eebf089de92cffb835c98d6319b11bad24342691de733f5280a17671bab04d6d4ddc3e50cf580bfc81fb4c5cc2a7a60b9448f33a46e51f5e6133b1b045652cec36633261cb2e0fa90b2ea3701992162931bae9db88707732fe9b31f3259de8b93b3004842f9b5feb63155ad1dea787e2f548ee721b7ff24c6263c6ea0f3724b9608496e8b5f4bf7fb08a049bd8ab07418f7d535719a73d926c6b9cabf8c8d11a9ec08086f864b7f22b0a3f724ec8b290e28b3e44bf1b799951d678399cc4f20261f0cfbcf8e0fa4fa281117f8e7bdfa68405d6b5f1ad79db183dd982fbab45a40b245e049ab1edfaf66e4cec69942be4405ca439b35cf9bb1c367422d655d61a6f9bcac2268c7aa69d4efb10b53e7c879534d856b17519458e2bd4143642a29956c05c43c73ac728215a4653ca1f43b734884cdeb845d857f18106cde6fec213fef05b7a0fd584359e965da506839a3e859882c53a595c069c0e99b8f49bd065951aa67e7088dedf4833473649960a5c23b1f72acf4c37c73cde5f5034306e28c2238f94c4f04823e337ab9179b609285bba80c5ae2d02334f4bbd48bd6d32c11d27533cc500b4984983f6f200cc8909b29b95cb386af507a964665169465efbb27da5f5957ae1ebe8196f0149b724675c6eb6526e525e41f3a3dd1959a0136e8399265138f8e19a41c4138446cdb943c57f54427628142b27f41dfd6f1afe3903b0ca771684fa076afd60dded638ebd0c24e9381ac14e7b160830ccd3e09f349b347b877ac174ec8d315548b66e43778358242d48b480a7e200a4ac6f91b46b28237d0315a51bc9674c4ee11f2b32ca31365d28931d17db846429e573305c077b1a661e7bbd6607ca979a7e28dd01425034ae32b0ec40314764bfbfd12c00f6d846aad2a40b961c1bead63dd89b8849cf3a676cfac51f154b73375ec2742479781c0d966d6b4026d4247474b62d4921d084bf5bef7204f6032d047b3f9a969e07e27ef3158c16260303fe6250f51f302b53f1a8b1e298cfb78b8e958807aded260b317ec078dc38ca37fda3b7edf07eea6e29de86ba1960036f8bf6a1438814ea62eb5ff7b0dbe2dddc8ed001b768b8cb7bf4435976014956720b4ed046882d5b06ec3b26d14fd207310b3ec6b22256c11a149e3619c7c074133f6a21df6749f62edc3e1dcb8f46a5a65509a430c6bc73dce55fd26d92eef52829abe224b0462ccda3fb90aef5a02942b0ddbcaaece8bc03c6ea00d70783c3a8b96427ff75a3e1f225249701c78298482c063212e3f62918188c3db08da3a0be0a5647b893e2ed0d30442fa99f410d3e1262b02b983f7e48df3b253eadc79e32bab95da2d0519ef22564b661216a3434dbc5e3fb49fd329d1090fb2e71baa51f9938c8cba87a34b634e073c7e97ecf68952bfd43c46aeefa08f426abe38bf0f92b35abc3a64b645916d00cef10203534ced6320e421811f5d0f6aef50de190e5b47b6d6e8114d642b0120d8eb24dce475b393b4a44c12f70186ec39c1bbbe85cc25f3bea6fc3a789167068b34386983c9df7d679ef468d14143f363a83802f277cb58183656ee80fbe4bf00fb717a57115e4436dc292a790a6d9fec356cdf19e28e275b927171c6de70fdcceb1189b3a692bc80fb80dabab7fd5b56c1d528e48a4748c5270c5bea88cd24bfe5225325e2c332f442608fb271bac1914d9d2bab8c55303818d86b9c45bb3ba874f29bae40cdf43d1ebe6af75c93d8b47192afbcae7955717329eee1788198fb8643792363a09575ebf2a11352cab93d23d0e2e281482cdcc6738b2787c47925a63acb28a21fcbe7fb16e1f89d00f5adf4a39031d8810eb91d5384d37b8b16e5c55a222a5d9a454d3334b0c3ad1d52ea7f07d7cc08d7dfdf4cb577ce86025350a800680e5d706f32c37a3bfa7aaad02b3a846726ae3269196c999efff5212d9d5447b7fa5c832ffd23241528caab0ebab0af6107a2bf9fbad6952cc3abb3bb4af228d62e7a4a3dbca26d2948ea5d7a4bbbaa1566c1e28d29dee4f2ada82a901ef59a885545f6e7235eb3c88a4dcba0b7d93ab974279c97198da8097ad18f460caf4aad58bc221afbb5e0ce4453c83a27cedcefb38e22f7754486193ed60eb566036e552c05a8d040b4623936e5f100e492652fecc3d9047d1f5c112e6d528ca4fb2d894a784e7e761ee383371009a9c13c92eef132e91892b3307fe7023548ae08e0c43b8fbf3512ce5ad9899c17eb7e0fa2c7261b6e1a78127d2b340c7c0c4bbb3db9eb881dd3db05620479f778573480c21ff3d3dd951e81d2382fa7f928d34e737f59c796e2fcae5c7fce75f9106c752b460ad6670f96ecc672e2195c55e201cfb2fb68f35aab90e09249aecac499dab6437c580975834c79471cf414f913f72864530c9ecb9fd66e0647f105a3b414ab076937c0ce78a915d7842cc09e835ab1cc5e0942a67414cbe10b7344a7e5eb4b5e454ad57672dffda633414470713169c5065b7fd4758d42bb43842fbd8660dea9ffbc7835a83d773c706a2b3f56a33fa1c922c96ec4a101a8f26693ab4b213ea9505dd7a87f5eca72bbd80ab9ffe9329723058867273f40c13f08f389e3171d409a346af7a521a728ec76c4155f4b3e0310d2079f4a9776b674494afcbaa410e152dc5dc0143d851df9c21004ba0d40e4957c9721381bb1ee5d4c7928f8df0cc22ec433bb0ce5cb18425d0dc1add16aa414eb3d376924f529ce752e8e451d042712e00725ef07649d4f507e93cf457e8b340495d44dbe197ceb966b4ea680dd695ae0cf7a63a98589d589d11931693e2cadac56aab28eee873b2695261bdde5bf7496b4c678cbefe9e29569fe264c918cac4a1685d943e01b564873330c415ec510737b945d52fd40e80673d5288b24a8991c7560e114f5572624ebde21c7083346d98b225ea39dd14290e01efdab79feefce6caf706e677bede45ee24c24c5582287e25b56968514cf2cb4c2920fc26797a81795600741a5e20a58149caa65ff4025437e1b0e24848c4137154cd714ebb138ac5ec650cf44dc49686c6b7778e952932e15fdfe3460d8d6e9b28e2410ed996b2377d4b09c33bd0b1c2b659e37d44c33efe25ec7ec492fa62fc4151052c0d15c007544cac4d099592c2563ccfb437d73b03edc920534405aa0ba0f8922725b18013bc774ebe4e61bd2e8aa9c70373837b9ab89b82aa854a7a79282a641902be3cb8884df1f7d50335d65739548e5483b4cc48f9fdf92837f4aa22c4d1081b2dbd048cca42881d1e6fe367f21de70c067134a4437521f701f996b9d9ab06f74c41a3218566acd74690db88fa88911cd511f79809420a2e76f6777febeda6b6d7fdaba5d915766cfc195b2dd7a32ddcca9fe3327cdb34fd8d710ee7af914a8951ff49f926e97e756774feeb3d8e8df998e52446f326b409dd591fc86bc20836b789bd011bdcbf41edfd87fd74b9f5f1de8b69eb81a43bebca6f70e0daf2ec957c4fd0270f5f1352928a20c143a4d399903142fc9ae999af9d47c44fa897ad15db1941d97487a0e02c7d823973f44898acbaba99c51bf55754b33e187788f53870bc05075231ee5467e4fa8bde0f03e9424fe1a3615d6356519d29a37a49d8122c6e83a6cd23a5ce92456f821397f95dcbc402437c5e0516d59d493e9fbf0fce8fe1062fcc8a18a149ff010a8363d816cc6be163b4839d7248d5d097421130293cb6d6209c5784d1e16d82b741eb0b0ed07b10332f55ba3c57d585437cb514f5cf1d347ab25a919caf3b913f582ca18ead97eba69c27efb8daa2e33bf6f3679816ce7e41772817ee178744fba3816cb71c2457f24b31421f941acf5a55574c8a869a7a00221b44eb72c8226b470335fc9d6a9314507deb1eb742fde031d4ddda0f4f6642a6034c69bea17eafaa54f4a6b0c2f14ab46ebc5444534df29fa676aa3aa62c1ab05b7e732002990e0c02954f593b2896c0c50bd7337f2817482862ae9574799cb00a2dc739477273a0cffb67f87e55424e59ceb06fc870bc0f21eeb27463e661fa0f1d594846deeb439c92b370eb83572cf6985a9e68a7b251549911ffd4c307eea352ce19674228bab9fdc89d18a0249416a447bd98baaba64c743e8ecb3baf36a2ea02ce3a60017fdc1e941a4764bdad638e5b8bc159c03da8a73f5ceead7d164f5b826938b2f026050bd65771af792433876fc35ec6eec467792c82052d1cc3c9e61338892b924f0523a102f91b74cb72becf261fd794e10119b54687f737d2bd4129ff0e9f2b208210ddba2a6f0b52b473bd570b4af6383df09abc109e01b6257171000ead1f5a9603c61912a862084bc2ec83bd91bd08133530b1e34bae4930aa47cc24da7af9752f6b085809e1b3ad5405dff300754f1cffe3eac34ef86d9b8f40e47b5d6965b52e30662577b3738e7d25ed07970e854b31aeb7cd8c9bb51580a22d5747bf3016aa4dff43e746b55ad15d9d14b75ce3f41ea4cb1f10d82179c9e73373dc716afb564cd3f76ecd38153f3134d5c2973e67f16b6f7231f6eef07c3e3bd8651a7ee7248eab4aafc125bcd31a0687e9dc6d9779bcfef533bd705c500a230d4078a4a53bc701c4fd5c2fadc70402587aa943a047e5b61256f9fe80716118d4a7ede3003e7e36c7ac1cc9b931d00b2cb16516199847d5e373fdf1dc6f8e18db9dffa02a1f8e171244466bddbfd326c343d6d884e5d70588591daf2d6a8f430a3ed8be32bba8b6154f61e7c72155708aeca8c25bb2a121a1cc32c5fa7c97fe5912c64f334dcf8f23a4b7ccad6514eaa1cfed88716e403d9d251a19b8078de65a3cbcd511d0daffa8acd7dc1064be14e1dd9826ba306807a30a362251be8c92d9cbd012f850f50af3431590727b7a5ae4480135af5c5d773b7feb362fa56126483cbb69e63c2073343709aa224960496db264d4d73079cb120521e90c0610b5d7dd5cce01bdaf1ec84e0cde9bc0fc9d9f00612435aaaad76afbc772282450736be235467f47c8cee90dbe8320ffcf1de5a77d4c951ef1a318c44d32a7f60abacfe1ecf84ea5e8255f03835b897dce4182caa0140f6ee45a277628373c78ddd8deebcbd0e8ce5efeca9a016378cee1b025c5960d28b22c887a0f51de632b9db87daa41abdc2ccf10a5dba3b961eb658afc9e8e4967df08a70928c77ec64ad04d9aa85f1908fbb0ea0f6819951c2fab80155b9ea456e4c9008f22082694bd30db958e5cb093c7cf34075bd645ee8077c31c583c9d346f54dbc3b79c64eb4f2b04c50712ea1949cb49a05a914b41df81babac2c6bcd8a9a3f783828a2a9ddf66afef0f7e959911971c5750c4797a6df78f1f9efc8f8ce9446072e4e1b3df2536b9fa9a43d715f6fb6ea1be302c9e64f98a850d812fdb86d887f9333185c286257625e428ba055d13584298578bb7ca1c3ab4585d5899cf95b7c0a50f7875d773058535964ff507ce1a18d301e133a1e86dce9c7d14a84bc5cdf0cc95d7b45c9373a7a31b60fa56704c5eadb8fca34e5a03f53932f3335b454ce2dedf8cec5aa9ac880ce9abde76104b9ec14ba89564637e88d5aed1728b07b70e208f5be471133f43a457bb21651b04c8924f2c7786667413388a3322dd90425f01492e07a6dded267d5f3f3437cf0a2d2f99e4b622bec62765432b489e7ad2327e387397694b131fc41f028f9cc1fe57e6c5e490e336adb80ab8d2f866f347b53c8788623053d392dd586787255842fad2b2ac3c398f90bbccae53223f3d2062cbe938c518201e292af27c03734f016a2704ed6c23fdb419014c80a1f12c63cc17124813fd90821afe769b6f1537876ac0a15b536caab43c279ffb2017abe105e43c0fb4d0b7d0fa409296978bf2e5387f35989adb32cabfc517f2847137c43f91a32986845a8c243f997d458439ec1651ae20088426eb0f600862e5c662697e0f09315cce752f307100ecc73f186cce97c055b83289b204e52bf4588952947a23338aa417b63c2161e2e9c1b06dd1e6db618f2633561bbc4e1a64123f3feb097d69418e87ff2133607d5ce6c56c08874e4e41730ff70a432bd77892ccf8c5a849faf63c95e8ea6f73b30681181db43da6852f9ab0cfabd46c458df0785f4cff07b6dbddce3ac37ab88a19ef15dcb4294fc9b28a46b297ba2faea87bc2e8e47b6272bdaf8a75493887ad54699cd9fe3cbc220d54ac68d2171b3b2736e01ef35cc0882350074bb13ec0e8b6c1ed96c093e45aced7902e9428a17ff2ed1a1fe6c30d547bdf1823b6370bafbef6cc6cd9199d8048b48834e4c0aaed49f3fe1b97abf4b854cee0975d9e43983abe9506a0f88b691459521f0314295d1bb0c5d8f7db6199ae6536f68982f5dca9691fe3f886e82aa6770189a50ea08beba13c311135ba5f535c56c35c3c97da2cc646d8bcb5179ff1417b7cfecdfa984e78dd9251eb9579450b28336939209505da0c8c6f327ae81e29a9fb99fde287f059c17e2b8f30d73b13e7b3b64db831a8a152fb45ba6ee64e0e0c7a072663c12d92970a04fafd6e2e85486193327e795b2e5cf47c57a0c26f17e6615436d3923b29ce5f717afdb8f2df428e361dcf5c69c86f9bff823567219a058c56d2eda9e028a93bc9d97531e874784233970c6cdff617e75d645a03aace57cdc62f749cbd8f1b70ff14bedbb405e4b8ba02995edf8ec92513aaed8afa3cce692b8cf5622535d364d4e297bb11adcfddae74a68c7f2cf1731cb4cc33c315ce97928526d7851f0f9053616a59a7644ed584ce7e763bb7b546df0a59f997e954051de0b33b600f8601a2845c44fab96877f7411f3cf4d30fe55f5c561b25703a525882a3b3d140d9da1c21e88c6784edcc89a85c26816630ebc7792d9c73517b9569b225c7aba5cdd0c7aaff4631ae5f93d958491dd08492c93c0ff6c43d2345d507de2fe21c1accac0b044a0c9b62cac0c163402f967d7f410610669d530c908e467759d6e855f7cdc4f5487a16335df94c63cd0e90d43dec0411eb760fc06e3230b03a55319c7ca3a12a78b27f0592187845a39252569eb5780bbf64dac3e1a6301ffc79ce6ba235d1c793d969dd46acc4bcf732aba51c5c1742bfbcc030e7c14f96dd3d37b27e9c01fd3e987bd2a5779b40e48f90e452f57242299b1663b4d03bb73901fa422c86ae25349cdbc5edf17ec7e0eaa25a1266b03c275e2c4a8315240ef30ac595cdb4bf550115ada82ec30da507a93c3b0dec8d2b422a134a214363bd46fffe0ca97c776b153b9c65d44ed53595d612ed9f96b986656571e17904fa03b86def463147b1008bc57abf6b22f442019f6575f2c977791d3a6785ab73d9282744773bda1470d5af70ecb664878c4723d7c0e85cba99d71d1a8365d1a2fd942d59592832f4bc8dc07e2349b6f706020e744c03b4f7c34aed36c6099116582688e2128ed38cd5dcb134ad992fa124fbb10fad4ae5df0472c506b9fca6468a05b0fd43bf6b96aa77295a4ed9f2e8e1ece167745b1425bbed55c58ff3211f7088c129a8c43f60ae68fabfef7b0ee2283307de21443d51cc911df25e26b8837aeb77ca9e974f4bf39e91b39a8f69da53b0affab20f3a3e2b387ad05fcaa6c5d9eb53a943f5754d9ad2c08b854640cf7fcf21e6c3e1eb9daeed64e644e0d72e788cfa72174ca97091183f2130063ef3ae8e4eee3f46327137730d819ec89e7cc48f78353886d051a2bf0752908dda2cbbbacc06a2964d92274d2d2d4f50385e4c705ee629b274a1d050797e4e04009618c70344c596432a28dbf74010275ff926e297dd2eccf6a808cdb70a120528fe67eb4f6245abdf3a4032024f06f2b1662f277957302ad7bd1d825ee1ddf40d69d970b43d6f4bf2163bb35ab7656c5c310fc0bbf3364c0acf1811ffef7c39cd8b5e59a458c19085e55e974d15274871db18440b3573134ddfd67f44a5fe20c251adca845afc05d72273ed00cecbc0a65af2695206d6a1e883f76fd278438ccc5812e7cf8bc317091e17c127883212b4940f8b2f3239645c651bd5216299aea37313fe295bcdc8a87b686689af7b4562e7fc2bd7e81709f3c272c4ad606874c228e23e4edca38b56b2f923fff1fd057fa47953323ed7655dec9b37bcf2ee6214349e567343f5631b8e18b5d7c24a70448f62ba35ab9e8c0cc8d1dcef9d0e03f30368a4ab6b74b135af645e45d9420d75616c1e468bc0942a516a4e996c2829343843edcf5149467309b68e98b13a6b5f46ae41fd9fb2d7bf13a54b6f6b09ac012bc9b9b69911ab806253468e092f073960fc60ca8a96a4c8b0c9ccee2be75cf366abc7d50871b2efd778bee6650978c442122bb85552acbd5f960c25426c526c280639ee0732be19572e0bce8af40d03758d8219eb38a85768fee00ec7d4d88ce2826b0f27f6576c266eb15d06c157c6f6b794fd9e42fd24a938fd09da1a9922bc4aa10f9776ff205c9b6ba3a5594052b6220f13a0d55dde141ef70d1a33c9e011c9e594b05450db64489626fd47b6e419107e118b1eac452fd829842d5977d2ee3dd8eb6a7ae12a7d4dffdae4480fe478ae1dd7daf89ec092dfcf9e3c6c426997204635e40a80783c2f11cdf4f099a99f22a8286d67ebce6d4aee00745b11c30352bfe6e0e2a77808d594980e610f5a4f62ea67099df4f1ff6aeb6186a29bc15b1f8e3544a95bd79d8f83e8d30ad701bdde29a5d694449a20beea9827d6d4567f14bdc69a6fbe738a6fa3d32d854e3711ffa426df3a4f35b829482591408df9809e14ea90e2102cb3ebe7e6c47087d9e86ab8e096244284458bccda008ed98d277e3ab9790af4eccfd7d0138a6c2d1ed32473604dd9e2fa599675d13689132d6d0a5dafcb9b1371ebaa4186301a8605d674a359bdaabd031a03eb19f8e78521014314b19fd799e0e5158b9aae32bd77e9a2a660831d27adc10cfb008f27151ac5b2620735fc0e4af1e9a0c9bfaaeec27b8185579ee1d1701b40b8dd48797712512200846d4586c0184fb66662e7a0edeac727bdf35afb7d0b9a127ff4becdac6f1a58e04e7d3ac5b44aba765b02a1550b3da85cc9b9702c06f6054f6997afc19d36e66b821cfc84f6956ebfaf1e735fa9b113d24da3ee0495ccb72aff7afcbb8e47da49d8fa125c60c412692ccdc88efeca1cf90f6a9d19d7411ec013e803eea9452ed1c28f75054bbadd32de80af3c3b9d8ea184d6ab3ffc830afb879fd66d8913981dd4c277d46373bf479b136944061688d4827f4a19cb79b0ac40f1d22e7b1001834b4c535a25192536795a206cf736ca8cc6b289c51dc10522a718befe037b6d6084a52be36869b96a52caeb021a20a30371eddb795ffd91ce29a9fcc457a37dc280896f48d16c5bd3472cd02970ea3f9b87e43e3f14768a8ab70abce2e2edf2606705bab05d7dc5fc3a62b5816d526ffe6f1d4d8b5105532447061fdbc3a5e2c5011995f7db9c9e12523b7f847b321f457616ba734056be2e5162bf7a4b9f80d83ee7bfa16f1bf0a67b58bca376cd1ecc4cfffac89d73a706528f168e83aaab98b076da74118e390be3209d632fe9eff584011e7b3ca6be034c649fd6a3d5a5930c0299030c159d527fc6240de9b8b0391919124a81a3a3a944ebc2569c7fa27dadd8e0c17ff2ddc9845ac63edf9768bce47ce1e8e60ba777c33de23c903a146711cf707edf702bcfeef1df96bc9341302797a0697939cda656710fae547ee4375a3ff7717319f278fcd9c5ef21c778dc058e13fe5b5eecbe0e944771f52aff75cd99b76dd73a2d68b1dc4f2922840f80075c4cd742f3ff6c01b93f0430dbdbdf568521167abff27755951a48c94e87389878c334f7750b6ec71417f3f806ef0e0390fb7f205433b9f3d4eec692a732b58a10ad81d97726b3fd298064f3f52c29856f03f960dee84ed9160153eea5e4c690ce8cb559fc8b1cc60533acfe8108a4b2d1253f26432d4c1a05fbcfc06209cbc1334a0b7c27c74a458cba5da5a9973e05bdafeb337df3aa0f0d016de23271881c8047885c3c570e24d5eec9acf2c7a31c811b6298035dcfd10326c8a1b158d3fe2a3dbba7eb64ef1098ae09899ccc9839375b243f80e5d0c1dafe993d9b77b5adebdb901ef262203aa9a9b8e6a23037c2d2c20862d6deef016448276b7720e6d151771a1807b4efd7854e4b24903675c2c1f36f1279f732f926d1c2d313bb15f5ed3aa9fc1ab075a1f02c7bd31f702a651d6c43b111c525d24419fe91ce23ef0b0aacaecae5a2cd559e5f9d3bb1b7d1806a9b3778768d16fe6c5ac3b8b0b9b8e5f1796993c59da133f2ced6d789f58406ea9e86f2f0c7feaee1e977ca58252ebdcbde83fcec363281ca5e0ad5e75a129479071b7fd410775a8c267241b52283ae00136fc0e18f4c085d590d97e4fc95e6034becd26489b43d2265820a8fd77e383595752b4b3dd29523a9263427f9b55f81c320730cde92d7588c0a05e48046c0d148349f10ea8f79d8b31df7668e7a86885d633ee36c1b692a5324861181bd0d1bad6813c8cf200a83e825dfbdd2be836e58bde38446cf7c2a53a2d7ce1858ccdaaec88f745e86209452c41ecbf161a6f7b92e643703375bea604cb4f754dd0e98d6e6b194adec9912c4649ba51cb4e19757329961a6e0946ddc93cd26fbdbc55fd5fb2b8190cdd5d768b4709e951549439754af510a017aaeeb2047207f854a1db2cc421b68453adcd4ff6cd3816199ce4906a5538e63a632d1053b0c4b39da8219cb51cb0bf6b193dfc291916a89aedf40dfce17013072afd0193681e449148292fb44cf6345275ade50978798b90c6e8296516901547dbe53f9b85eb86c7c5499231dd98e1e0df00ffc68c8b27957d33b10ac344f0a2aa2406db57797d4fc13e33f73fdac9dd9064b6ba29d4b80db6bd6032ddec60f201ab587170d2e2e5ee34b49eef1a93783dd41dd182a455b05c7cfe678e80093cb47979839180095d3a631ddcc9ba00009edecf051dc37a2e86737fb04ebcfd0d9a2ae386d65b41e6f4c3d745feeb1aceba4ee2a07b14423ba15f49a9dd8169dbffd360e787eb8c9aaa4dc708d1969c8af3702d8aa45fd5d54bc321be395b1cc329a1f9a11658773e0caee744f08076f5e77c71cdbba4babb4dca0edcadf6992ae4d6851651d1dfad21d651c322f4f7605c27dfbf16684a47e8d54f719823266f3b54e82960861d324c8da70d9aaafa036fe7fd877580bb7770b846febdd22fb827d3d09370f9134ddd8642878aedee784a7938eaca8375509da6efa30c0ec1d24b0afa5d29bf75ae9eb1c085b42475b0aeb5c74019e5ee0c3731a1f2d88c612641f7ad3626576a69a6228915d52df5ee5d389cc9f9e303bd68ac4a8f89d032f10d72c69d909b0fd232c3e75720c4150b58786fadff2d1ee98d92cfffd38d5f7bba17ee09b78da621c1eed2d1d8f21b92093cc7dcf5759f0058318037c76ed043e9df419012d84b701dd2478fae77e3f4f461f26b4619e5f3903b18608c0fe4233df37a1d838d66cb354c36336621f757021472b82ae810bf7afa00b098251f77929cbf3df1e1d45f5c0281d11253c8132511ed366e8182325c90e0b3b32ea12b3ae12104c7da25af0451495632271604c3b00193d98683e4e19ddad2da6f9f8c8e6df9e48882157af184bb115554c20f61aee591ac895d41f26c985c3b991d96473f35d6e546026a437ccbea34f160d6dadfa60c475b948eaf0528ab545d8267614270e50f1b77521b39274a11aae4174eece4f35d5bff126478b560e663278b0ac310cf2539501e08528f43363926acee459c71c63fde4eca22b67ad1022640b5637e74d113d097cfd8bdb93f971d6c57efd645cc763d67c9b99e2c7fbcf76408697bccee85b40f5b229aa8e9fdd1fa67eca208b878014b6e5b74663d47b704f43abdcd41e2e3d3013ed700727f5d443779d597489af81a2e4a632dcc44c64fc67654035a747b17577a90373e029836fd82e6495652b6fe8c9d664634b3c254df806a4b91f47b2efcd5da85c597076850b6842a289e56958460df07b6015ac0e8659af9e9afdf630d2148fdf6a7b4ce29f8fc0002b505c64ca409c7bedc1c64da521701339d534aad563332d98da3567871e964b0984e3a1566b621093606ede70bb8fbd9580b83718ca260dbd1560f8625050d0006c594adcb6f4b8bfdc96d71e131934ff3cec91b072a9590c208dffdec0bc136de0e0bd2da54e4716032815a56b58878231bddb041be57c5ebc4de91fa8424b5bdcb3fb7e155b66244c15b66da55ab4c5b4b816d31f94fbcfacada83e8819e18c360f2c7649d80f69d7369d1bf7d531b28349adc9f25ce9afc7612fd55d94f549885a19cc4bc413ab509bf25e4ad266ef32b4eaaf7a3070be4bb1f99aa5c8d9032c96b17c5ac6949fb9879fd9ae3b302d65517e1e20884fbb0d658311c9b093c77dac8487363c8be0513fd41395a5603e900bfdc7887657445900ce40c4895f80c7fe4b407bcc433317fb8380c3e93a035b555f51431ced039f68de8316942b0a83695e2f5fa1dc1e982de49137faf723dea481bae5378c2f4aea3d6550901a14dc063c8280b9c9d2124df3dd6431439b51ffa25660374056573a788bd04702d39b29070c9f0e525d1ae3ed5284a8bf10f147e65487662b7f86ada1b58132ee83e86505d665ac13323c8ed77be59f800321d4d6d814950398425fcbc7abd29cbe82002040a6337b0060f7f7d473d18ec41e3edea2a5d49233986b92e729b0ff976ac867b1a6b04edadb795930e2996641c58ece4872bd3598d5b090a897f4be9416328bd8661d24aa76624b2a2e41799e309e5afec6fe5e1eaec6e948478ab46ba686637cfb62e7f9d236e1ad6d4faba14afa9aed7bde13dffaf9c0fd12486e98bb1c68dc632f5909fc6b728918c7d4ec89b98b1ff0b06cb27225bf4f5b24b0bde1db39a17a7f8c340f501813405242086e5f8bf44841187ef3309487c4a1f0d7b0be195de44e68aa3bb034dd66ec353d825fe12cf897d9d336da6e2a85a8d93f13a36c9c1d7a287392f1e97aea566240f1da3381ca8b03e00b2b848657c7ca7c597b3e860a81ddc660e89c5431b271acf3eb0dcb001001a870aa8e4f606755e705debc0caa82e9b30eb77a8c0eea7f4ca33161bd3540d09824e74a4b9cd6c01b7a05b8adce7c8615bc62f2f20d409d36fd55022d12c182658e73f80da72c873cf08b29c3fe943dda1599370b9a224fb61cf727e9112bbd350fccdfc6ecf5d8046a93a963def16f9a1d58bf1f2eac0d07f9b3ef23dbda3a241deac61c994115ab7f94f5d2c476d07eddc5c666069ac5de2f1cd76aeab0460dbf777b1ad526569338c271825f85e676428bcc36004657c8a6e9452f950044ad43b0502b2616e4d157cca1a184c38ebf9672134b9c33184e0d3a01dfa42c280f4efc99270054bf7dc6ccb13e97c578b956df2218550c50f48975b68c0c36fd4a91402f71dcc919d30558eef61e68a60f5af24430bb7bbc031c2f76287bcf6194d5a7f01f68f3d925d3fb4b377595f12d8bd20ab809380c247c923348cc5e0499206a3c3e9b0d1aa467f2dd0caa2e8407a79fc5ea24a866c685e2478099b32d2f1bb47a15cbd5a9e8fd735f8502d15f2dbf090daf3404e15f7322ed4b6e2034540e5b918a09178a5d87dbaf9fb23bd53478653d3b4d820b747743c5856012097b117b6f8a63fc736ebbc64fccb42b0e6e3e5af4c9d71c646f7c1754700f39ac2a44768686d09e4f8bea74e5fde09d86eaeaf4955eadc4e15115d9824e4bcfb3ec2c0d4a01e58dbcfa3eebbb49a5898cd392fec899155d6929e94f1a8ce79ac78b9771b42a9a228d7c55d040180251c4107bf4f79d1bb45b5c23784d7679c826a28c46c28cbc434abc578485e5ab54a63e6ae3d203ebc507c4b21a2f8405de23783c79f4c7d3e3ab9302b6c0917455fcf4d2b5cbde26fe309761f3392fdd9da232f7bfd15f95e8211d4298cc415e8e685d90399bd16cd6912410d9c55b2fd99d518c556097345c4d964de7a8cff9bcdc192f3fbb327625545d9cdb95510de0a17eab38af5d21c187126d1ff4caf29f1f7bfcb9ec4089ae9c2f40724d44e67251ab20d0504a082158fdd2a27709ebcd4f0756b5b0672c05fdb070a4f46bbbd7e27f0556d7a925f8006d330f9bc707295a50f348ce934da5fe18888e77ad8efb9e1942d55d9a3d6ef14403afef58d29d831a2473d1974f349e8bc4c226d3cd566119f7d50038cb66512889c5a4684e4ee3d23ce58aa0af3bccb365ce3555bca11f02ab0e61d938d27c3c2a7011ca67c4e655ab5b8ab93452ee2df3993db21d445ce75491245c335281bb9cfa30d91949ca056e10a961db945bc2f572b857a2d1b26b9ef473816ab3a056eace1e6bf2072331e733822fef84e16fad4c881ad9d24f0ff7ea7c5a50f7d2686c9d9e4ed2385ac9461df48504dd40468e2c703fa79074ce5292eec4a9a841f92bf4975c0d2429690411a258c4b2ac108ec699138996f70fae8880f701fecb8d4f4092184c7720ab23117400bc474fd08c040f151d26c2e3b07a6b1e53dd83cd801f3de1d00b24d03c281420a33fc406629342abbbe451910b73ea07762c30f373faeab002f1ebb583057298c98e9ed05897866f1da2387666aac1e02afacd0ffb1c106e5f48811d478d418d9f57dfcf2459930552359b34fff8b400cdf3071d4fe3c9cb3742c541a2367779891a81e6991305848913b5314d540bc7034cc2df781f53bad654ecbd5aacd153720ff1c0b009dd6c7272516447f4148702af959a038d8f67f699fec3242c4dc3cd3c8e30a2b3fe352e7e547325d5a18429214990630485cfa41854a3c78cad63fce32f562321b1611e693124b64b86001aad5d56ba22dedcf9a3209fdca8fb1944279a9c0ca621270ce27319a54b1c558f9685f7e245691941e1e5142229ff78ce610e83f585e0aa6ccb37e149d0c1228f5f27e6ef0f96ee78fafbf29c4ecb355f86ba378f9a61c7c3e4af53da91568cc24ddcbe8420fe75497c0d7f026a30acb4fd4302c8df7b656775a0411ad2bf830a46f5dab555d9d9d4e09a6c24234673c4e9427e0168ec6425eee472e2946726a1c4f4b257b18645035377435990e8014667c4a5e379d4148ee5eaf4180ab9295a700e11e8f207662c484b161b6335633d63c8ab9680363ce5c831b9f447a857d447b0137b11827a40a81189561c11fb77dec4a66d067ab2fb19d083a6b5281baeaff7ff5504c1f4d25e9a272450a25a2d05210b4c29ee877318f129c1afb21c0fb936e421b4b3a9a859080ce67dd3243655baf54fd740be30435120fb00c4ee18d0740ae081e991ab2b54d503e7d4028b2961468ba90591f834c25923c35fca10a2eb3a0a8c191a66c5caedbe1b97a8fd655b8ad561364e81fdaa75631d875b54738bce88bd9f0368f68821d9aa55e95daadeb600e8aebe743e823e291ec79d6b4d749168bdf7d436b50285077e08dc7c689ab3fa21ad1e2702577851a0aac8c96580757a0944daab7d81ab6bf2ee0fc0742db5a52958a604784bff6dc4434c0fdeb61447e1cdb5e16f9f2d8da90cd1362dad67713236a2f78015364108a6ddde86d803002a7a80133ccc7f8d64a97c631f23e9fee7b41b493c7dc4c86f6c93979ed6f4581f5b7a0f52cd1890f8cee52a290a94592ea311be93e1a571843412869d59a97278214b1f3d37e89090cdc99b6dd4998ef3b540f31bb4874f281cc95e0139b541a3a3d2878ff81c23feb754801a656dad31037c397cf977715c4c3e13b207111bdc5b890243cf3bd2cfe4b5ebe796fd7a578a9574f7cce3ad226b6b540a847c5032e770d2fdcf851f416fc4356fb3bf610da9d6be9dd9e57f94282a54c628b106fe8894563ee0ae55ddb8b316f3fe8968b3a408d324e3e4cf21b2b0971b9c64afe6a6193c093ee4acdbe0d7d4f62a3e3a04240d7f633f82c1ab401eed04401bd15c4ae0b158f82279d0507ab60ee0438800b506a1f256d8e0d88b17d65da6ca0655a2b33f3572de5c4c32be29a83dd351a547117184270949914f73f9c0154c6125800a2313e3f6b967f6945424520fdaf6ae8a1919c21c9e0acef66d3d079f94a1dc5753c9d8ffda05cfc2fe83a3f0569922ebdf55ce2ff42c4c22f0deabfb9af54eeb8f39afd68ed034f30710a9ffa287c02d60ea03f2fd62940d55b564b5b7499461198b1d89308a5fdddbdd50df7b7706c99c1db1741c197154cc7f47ed03ee12a5f8aba98b5559d17896cb79a717225b37e55238492a483613c360a114efa64d7ef5a62e409c1ecc41ca93790f1bf7850fd5948eef1b6a37f379076f3f5db76fb49e3e5dcc54bad88d1ae599683ab730adedfabc94cf1f4e47a08ce5464d70c7bd05283940fe643ef01bfe94680f136e698c0c6121a6a0573886d7e8bb306146001032990cd2e290ae2c2a1bc4edb132633f1a2d98bfc5b401b8c193a95fbf02a27fa0a9c9d7671f4537a05499c0f3d4d7bae467c4f423c93d1457b627523eb6e91504694d3b7783fb90b057aa3a58900bf1ce6838e8308142af8052bd895d402f71e32c12dfe5188966e3b067e3b406c20e471e9cc8e0c78d15211e935424225c889a1bed646d7bc968a5e0caca4abc465e088a4b9e830e42bf280576d45e03fce5f0b01427ea1081ab64dc00ee5b9705535642453eeacab2c671a6a9f3b22bdd04093b77db737f31e88b8ce4961766b33f57f0683c04f5003442d38a314f0a4170756161dbfd33fe969e4d49409457067943d10577398bc76f2c12027188b19c897297744911daa08fd47015c91480fee63336b915bb0ed8aea51fc6327757e9157eabed8f80e86d24f8b92c000657be46f9069d15e902076912686ee587d584f4c73c3bf1a81369e9f5e02ad3f83af39e8b3ac6bcb272082d39905535fd2ba2a1413de424f4d869998113eea95ce9cda84f60138f89695c6304ec4b8696f949666476be3ad1f54fcb6f72f1b8e4078b2fa61a4b9e177a4bd23b091a01e806eb572003753e49ed4769e8927754529c8ba8f79c8a4f6b39f3f46624d3de74bd7a89c8d35e55a9871f1c62fb848ed595fd85b43004f0b3c0627759b0f7db47ab25103b2aa550794faa1c6baaaaa95443140691b50db3fb2bc76903d467fd980390bdf51fbaed1a14361da090a02ab2d8d080991c7ff3841ca8fcfeea25110b1aa6b1421f1f3ffb680f3dd610b09298ed5a769aea60d2913834d8fd02e9942eebfc252a687bf7342416386985ee0c6affe8dfbdbaea8c66a79d60a85d7fec4293c214618f0291dfe16144d3ba4798b1ed38852db8d12348988679b9f20012a2d63e9dfefb2a8b0c7ff64f30705878da7c98580026e72d12bb7d9a21ecd129de99e3475c67b438a1a2889012dc18f701d37d1bb7db06f0bfc58a46c42975a45b65ed8b2764fed7d03052971a2557c16effafcd12be5514eeefca38f3bd2ed81deb933855d4aeeff7d4f65a19ea01689870ffa81d50d09aeb781dd8226d763c8f7bcaa35970a829ff7e78e91ebb42d0b07a8eabd52029dd691ee0c373353ab1498b90c0c244512639e13bb4bc9b689c50d6a9f20554f7bf3ca9bb8b95c2f07b4636d27e132e2902e4f41ca8ee85a2d73e1e31688226356be56180e436f97be468bad8168a62b0871472938392e4896e4b548f8427650e24d39212ecaf6edb9b09f94a224de89d47d65ae71c11197d3edb5b4327b6f0fe215f0f674ed3eeae5604f9bda4551c6611b96f758ae1f8c9c5137df8c7e13f417989ac8f5ddbf68845cc64d5654e2e1186d9b8035fda4ba8be8be32e82adda8c7466c3d76e383911553709f43e8ba061bfaf01266cd94e042f052074bd82df24f8fcb0f00e9e1df75f03597c3e2dcb4a459459b2bc263119b7fca72b74428036c80f552edf0c3eb4bc93eaa0c2825ab7cbf89245b91b9adb28c950e75af08387ccec97d32dbfea1ed108f8c4edb4cc9f72c7c5d7a8032034b29dd74f6a7dc074abe6df6e9bcea4cc959edf6c16def6708238cb60ffded10924005d9d8da5a740568e99465f21a2443332a2be14b77fc2deb3c48c2cafac1c202ce59f77cab7b1601bb8d5fcad4f0223ea67928f23635da9009480dc3428b0376bd857e03308013eb330587c6cc9477e3ff912ab077192cf1a61aedc96ac0545a1821ead23c218bd687b67785c64c0641245eebafbcde07b8317ba163c14a7892b925ec5baa4225ede15a792df25f3a406dd15daa46eeca5c6e46d533f33815bb89edc95c17e665b6f0081214847851021780f8ab3a1c43a3dbcbeb7474bce6aec9d8f8405b7787fa441f228e4ba4c268170d5bbcb847a97c8d6e02d3d96d0ea816b09d722c7b822836167f0fc9f32fc1d4247e4e38c0750612d6c2c44c15c270d486fcd40be1feaf5eca8c73bcde592a0122afefaff837cd800918da86c3451b95902f47bbc5e2128f5d7cca44f5dfdd024b99b5f7bad0618525c68e3ab308b1f2638ed78774dca2d917ac5e0e42a068f64c669246dbdb1836a0c1eb4883c82d11a6336e0b8a8bbbb57985cdf7e9d3cfadf6ac6c89b8fd6d954750d597e1f1a5007eba851dd206904e7e657f3c3b3934048474d8e9b180e185f759e50ff17f9ed9f15bab459b82e076006966a8fdefc8574547b6e592c44759e7997aff045fc8cfc5ebba8307239c1e7cde74b7093a87ade43cc259594ec776712ef0528e5de3c19629d3e7c5067b827a8165529afd6802470f3536377548cd6978bfff4579e805651f713eaa2b849ccffa98b30a860b6885d1243a90d4a444bdea26a96016567f8fe545d3da52cfe07bc3db32f9167d16fca0e82a4a99496e8faab11c1f005b5a6750d6cca6d23ea0dcd7bc486ebcf82e54f6a20630df709141815e31f5a530ded2024c2fb2b9fc498c80a10c74975fc18923d044a11b6b4fa592f35cbe2d974bd85f6d4cdb6fef46496031139c23f4cd9003985919add5e0bd30291d7baca80eb8ab835516b0b4fb32cc012573185781e28cd31c3e1bde27888fc52c8871e3fad5101f52e5b7496ca5c15b64e4c60ad8290dc6540095b1cb886a89c151f3b37219eeabc1dcb102c72af49128283e755c42f9924bb03c9550806ea86ab10a6e2c6cf844b6c01847877515ba609b56daf44696f79bccaad23e69e63406c018ea4006aa1ad7c641cc12c10678f2eaf3640899e207e1ee56312968e01c8abd53496982c36d843e90715e6654281f082499ebd4f6f06923d77599d0bd83fb1ab84753abcda04cbd137ea7d969ace80a64a1e2fccfedb1b49760848aac7683ca659a2f6da2284b1bb8dd2cedb2a66c7e78755d0724867907d51c526d199b3fb864a5ec030d78ea7fe2b6b3ba2db0add2ea0d5b782c89c1e18c3418a3d87781319fa71f0a34efdf25a034929d5dc349310712b9d7bc407c33379020a985a529d6b3bf2c3416ab2ecf7f72e803b0dfaea3034f6620e4dd6d42ffcef0319a14e25dc921ed8b6f5f583b2374b2fe440149a75f6de869d5ddc78668b6e123d9ba02df1dd39b3576ef0b8bb9b92a6a2389c8c08d353b04d3b9e2a336a679c89dfc8a8042ccd3db972f822872f925b9b5c58602a9c2d2ba675943b4957c34761e1af7fbe11fc42d95c686909373846e08b8ee8d4dbd164c12a064d5a28537fe8cd050f5f0171f2d6c840cb464e27641d9320ab2d56f66d0d7108d90cc408f2f97056a9d971ef603b0af39a317c1f37551c5b63c877e67d9c086caa42f4af142b14a411bfdec806d2d14cbbd852ea44ad29477fb9590e6e05b6a460afca0b9ce0890800f8ea483f1186a428e67600944a6d7ea278459a3ed4e8ffefbe915a0573d6cfa24f30accc1210146f6d28d0333e107b2293e22c8e8a8fd21dcc83c70e6329bc19ce855c501c1fc6320aa725b581ba1b8a2e780926303ba007a7c23e3a9e18a7f8e2c6fcd4b72418a54e8bb7ac03ee9c185bec926f73f49f9c6b496d51d34f80c85f6545435c8b9913826f4233c4069940366babf759646d20a8d273ddd625be864250d2efa5e9be5aaf81f0660172b827dddf53f1803227abd3ecf8ae17cab02350f9c90a1f34766a03d902e773ee9b282fa9e5b2edbab5a814b7d35723fccc037f83b42e982fa7c97ba8d35b9be73253603464356e7d775657007eae3a7fef7f3164f1d610a61112e5a851eb1a3e20e95b67af9889e81a4ab4c2d950f6bbce634001f9e22f20e971295406c4250f08e1f604d39d0062ffeb26359b1afb414c70d515ff174c250429efcb9197fb4ca167f2744a2adeae11f593edd5b1be1b1cdb15e8999d0444730e87854819753a2e57ce99d3c9171dbaf71fcdc0fb5b2644cc9c99c97f6965da0b2b154884a01b8fc66b9e5629be101dd5d5b0c1a477df49e0c51c1a2fb42cf59e8cb2e9156ead7a7a7fe57b9bbdd6a0469d20379b345b81a8c798a1ff8f654557b350f28c6c36886dd484c4962edf6556817643923854d4289e464ca8f2c2085d2b6341af95429f4e5ef65c3336c120e646381281c0878459c5103ec7847039e883aa08c72a5c11ff1be96cb176aa8f27539dad23c5cfe0a7c37f115b9a388bc81da2c820a1531a18ca5b5af20f1c9723e27a7f772fada07384bd6249bb400ddc4969668e9ee8c363656b51fd2f17ec348d1006401d349e9282b964d8bb9e569cb741b1e305e6315e7d7f657a331b148b216f1a86358cf2ccc2b735356548ea9133fd967a13032cbc56becb3956976daac67363130d770d5e9ed447f0ad1fcdd7b5f417af891b53e4ddf201abf3b1e5ea749135f79a8e3c785d47797e821d1fa1c062c465ed90cf70694e30675787faf6bbe22c05bd2d3bc0a16d67b51ddde6b50e3b2e7ed2e66eb04cb0b7a71d42ab4ed93d4453cc34d0cea0e91e52f10925ec91d9436638ec16253a5da9c823af01c61e4509be411c33ae2e5d8a761e72b3b4c122f989f6032d067650d8ce082ff304a9add2646a07ee61988be8257ebf698e39effdd9385e10bed8904fdd3d27710566368b282cc9365b4eec21c639198090a7dc81490c350e6ba1333cc1a654a3986b09b931da0c45065ff80ca6f32f2ee30ade2e54fb5d476118f7c467caa170e19d81e66b1915003ec1bc8f757f76134642259576bac2d6a5019fdc629362add8a58e7604d5c27ad46e7b14c72a890b89ea3f3cb2e4922873df7cd767a01780c837313cf042d6180c4f65f6949505b0138d816e0bc840dab904ce6fd1241bd0d0a9c9e166f89be41ef1b662b81a55ef5d1e159d0a429bab9977d9ef1d59d9db65da324a620e7890b816c2a974c82bce75cc4fec3eac9601eba3f76b6f7b7666ce66e39a215601dc7a0eae22ebe8bd9f7c1d1f11b8d8963bb8dded510c600447a7318f8ba79d9e9879def893a61aeebe285eac298b1e4ca4c0b34716de91a9855f3903ed3c04d855bc3e038a10f9f51843608fa452767517f5119873f3025c9db9be3516ea5eced1c2633124fb544ba82a892a9baaa6198efe33cc82fe4c11eb4fbbc40b01ad8aa6fb986aa81afdc3544e300a3db38009a3b567faeed58186cd0aa85cc3949c17514aab019c85163a8cb64d610b932cbdc9a99f56aaf18b017bab93c1d9fa1e979b8a2350383805334d7c78fdacf385de619dd536d5f11eae1c4689746f4d0dc6a705518ed093e44a4b4b354c148088120a073d51fb17387851c2462fa5eedc9f53fe23b225db8f664be8944b8a6bccd39492459e66c92e86d45a43b05eff63147629d85eb4b83aeed3a62280f2ea1270ca9c6d880a1155b4a51e069187e7ad017e2e6f2fc0b59992d3f0224a45b5e27ab3b9e453751e28b4bc73cc2013d2dfe35129fbe53ec49a5eefc32134cf8934477f2efee748c110b1018f807d552f2dedea2db949cdb7ad17bf31d1143da82f3a3a777364f7f1b39c00feff642130dc770abcfbbd86c89c2e5ddf371ede57f60870c1762ce347d3848e20b2784b4d5a049551e5dbef12f5c255872f34ce5f8233867095518d83bd9462a86eedd0c1603592d6f2982315ff7a2e773324ec8e914e139b6a8830054fa4761eb4e1e40c297c8d2e56c41936473277117f989833a2eeb78b211102548276dd5e2ed4946fb16617ac20e52c3cb6c091497ce03ba4ff450640c83d559b90099f188df4897311c2739a3dc3fcd4395c252a82e879bbdec7d5ec71800927a29a154eaa48aa62de0215b43c256a0ffd568051e3facc558a62f875292bfeea0e3f38d800e001cc9fa561aaec8cafdf303c01704c24f9d29f22a7f7b34bc2fb2e353ae3728f6904547964a1c5fc899d648dfecd72556b985b512440234d5a14bb4ee86e60efd5a1040675b32310fc866ea28ac0129c2090f55f01533849c013bd1638cb0d9616fd6a81996a51f07439e46ddf383e0d23a70d322fe69533b77910958e245ac812b9a403604962f00b3b23283437fb3a034f28997fe3c248a4ee72d15ef4c51a3e37f8ed3043ddd91073e9223d51324ff6fb3a1387eafc6a65bb2478e28ac9bc141fa9b5a842373468ae7d479c31ed256aa6481edeceda56864e1942d98a7b68ecdbdc845ba11d110a1c68011715e500f24d0eb39914bfd9c9bab7026e6b87304c1a8f6381b3902781d1ba977c4d61ae6770bfb872771a74b7342b7d9af973a64a5196da6d3ace477745ea36c6bf653dfe95d2837c667e11c1974363a5d439132735b84262f00b7233d4352d20663199ccc5ddb17a847fc09fe1e51fa0f029bc6f42ce313e01021a6d3fa01b3acf0ca6070e83f4de286894b9b40c4f1c14246e8c37fab7cd8f4561ff2a781d729a68b9bcff6c9d37dbba1abed65805ab5b1dc97198ea5ef92d7352d69c70282dff4b875e2e5bfd5fdc840e2ab131491ab5f605972b2f1de8652967e7814927f54613dfdfb63ee8139f80330ed3755fcf67a330057b9daf3732d3e2252b0891c34e7ed168b166f09f490883486fbbcd0e879f107c58c50acc8642cc2acdbf7e35070f1aecc3bc2a4836d8145adb20347d81b639365575d65ac61a90b7ffe98144f8b7e5038f118ea774a16d2710ad60a69519ffca494f25c4490b96513d4fbd85b9da50863f793fba456c1d3c2d403ee256c6420acf6cda7ddcd952f4687f02df7a96363300b85d7da1cad79df51381812c3d5b73c6136fd3403da13e43daf5177b662bb683be1d0fb2da6fd64ccc32c6d3878915d17a0a80ab876b8ff7277bab9210bdf87e364a025519629fbd1780ceda8fb93dd79d1d354321f03c8fc1ecc3a8e3516a291f7828a004d684f7df694225c586528422f5f3a6d22a717d49df5a3c464174c279826e568e41e94b0a3c476c14bfa4c74cf3bc65df2c3d13f4730bde94ffc909061f87755e180e30c8ebf5b92ddec7520364fb84f06d240b607b44b55077a6c40e9e07a9e53029c077bf53ee1a3b3b1de41c41fcce5fb800ffea2dfa9de9503c46274bd63fc9193814e2963d26e2c9e4685b593aeecedbf30d67c37b12f074bfb205e992e655037c36c452ae10550ca41b93769dc6d9ecc61de35b19d479f21cabd4caa73384ef90a56c029c98abe422db1d43fbff8863c42b9b144a07decb2ae39ff796b31a9c20771a493850cea2642f00e91d6c526a174ae75b978d5dc1418848f90f48a1c4f9bfda2b05c4c5bb35ae33b93ed1109551d8ab261f14aefabe6dc1597b1afb8a8dd4f3785af157a4a56f29f790843a22e44b6831137268d88449f415725e5c1d7419488ce30c6e6c87927671b7d46021aa88260c385774a87600620c45e4455be66312a22199fc2df2d0dcfc4b4442715dc9cc96684acb81fe02d05d757b700641ea9df3e5cc673fc124219b5b94f9c62018940111f82cfd89b9946e3925d2ff89c4dbebd9499e5e137c6213e59e13d7f456a55bb4d09ed9090155b7fd16272ce3fcf7dbf72264b7cb7de2055f01964844d81e3867f7d0dc72b744dcde8ca8de193050ba0f3388bc115e7211319740515a8704f85480c2683d583c922e6cdb1319be6da046c3fd48cfc2f57438c493b9e7a0dcd538ff3e51e7a835b1f6b5a059768ae5ee9281146334b8adb3458f658e7ffbfae5e5650f75737501746fc9f1fce54c3f383fc7484935b53d279c8c0ff51ae0bcdcc032f87fe45c484d8876f2f8c27146566d2f662507b09c1676987f6e9572379243efde03c4ad28ea64e0422e898a66578f7df6dfa64264dd7f61b5542faa1ae97cfeb0c8a15203f3d92fbb9c5c4ef543edd3361352df2feb58c376850cdacaf48cbbe5cb8ace49dbf115fbb4842a8c15233a0d0a0d15fee616f144fcb6c9f2f82ae8b5e996495f996c1e775ae862d39ca073b80c1ee4c50ec16fdc94965d10231e6b62935dadde6f3dd2edd997c2607c282634fa9022b2ffd6e0c94e7fcfbdacc65e24477dd1d70909aa6eeb45dc8bd153508b52b4f0b46fc69cdd312477b96b946fa0b716b8d50babd05cd2c5da599e0b1093639a3d6505751d88629d22eeb28d8af7b14edabfe3b3b517d194e1e28912b9c73e9c5b5867bb38690ce7fefdcdcbdbcedacf84e811e26f33714efdd2167a3b467cd4a469d0e62a9c886010124ffd1ce94b4444da5dafef6a9436a4e8012ada1b94a12fa2f237718a8c4f3bf0dce2332bf5df61b669c501b6ddb3c69214603166c42693b2b660744f3d5adc992dd2202665d66f36df83212dc5cd6f105a2a8dfd0fcbbb30720c03f7ba0df1f45f353d8046e1e5a2017a1ba594b4f5b34feb8fa3debacf0b83579c20165ad041f509cad770becd50c8f37f2c9e3aba2b5bdd28f02c6323e8da528ad1a914735f4160cef8e4ae7f78c567e5d438547bf28b89da7607f83d55e981cc7f82724c2047df45806df56e770504fb71739c33496f5051de41f2ed0f805cd29fd293b2319c419f46e65d06cfc22f6b38f8d28a5c88e649e4f78a6dc2c0d1053f74f4d6571ed28a2b5eb4947243fc8d664f56d677d0d1c7876b4197f4dfc025751efb4e00faf5181d6049493674b8eb608ab0a9677dee9bd340582a1e8d7e70b644702c6dc09f2874b1734071df608fec6309f76d2eed3a03ed591f0d1c539e508dfea5fa11d92500bd0aa0246c2729710dafbf698ad0e3fb6b8c0c1220fcab9c6bb74f41af41185cb3ecc339ebf4006d349554144c701654f4839aa4052975afb18de3169a890167227a7aa9d8e1b88446d02676b3f859636f8f08725b001f93dcda99af4df78bf96618519edebddfd89d1b28f555685314f048c107e898525375d91162fbe40833e5b0f0e3988b538b0a54bb9e50132c734008ff8b5d7f4766202acacf273dbff7642f8a35cf01749e21fd348ff2214832e370803679359e3cdc522974fa058a7a4907533ddd0a2598d4bceb980f0e4d9f93e34c7ba0af0a027f3916dc0fd1c6eb9bac11574745a19218dbd88c4d2978c2630689199ad5ced8baaa2008a54a94a70a17ba678b831ca5cec8c8c6e81645a215475b80d503051acfd639bb80af607d0f461a5c154c36ceb2961bdf9e4d64e53152e03bcf8cba6494d1fcb71550c8ea68ba9620df5b3ccad17b15a4a898014dab9d2f5c8532da85c014872ef714c463f3f7f623ac1e3d7fe950bfbcee995ac193dd6f089bb0e68216f9e0dcdef42702b90742b70037eae822145797ee41a5ea848ffbafbe318551b642f6a3327e7136bff8aadcedfd4aaec7695085175a4690e371958b22d5d705e7931e932d53e653b3598d578afc3ecbf015e526c2ff57381205ad605b33a88185f335ac8ea9021218c1790f7a70d0f7ae833588461f80c1fc15b3b8c5d261eeb84f45e2f5c9375dff48521835ce56b7d840f9911ffd16f123297efea5aedc8badf7ba14e692fa10ad0c77f1d73c69397d7ebfaf7cb29d2f7513bf3394baf79ddd1f3309b9f42175b8ae02ce2614a176f694bfcd1caa84edc764853068580383df60d0a5b076959863d216f815652c33b87b3910d023426acff4d39ec7e2fb3cc73424eeb6b14be3e8a338a1997230d1445366e687b1b8d7ac5e4524ab2594f7e87da7844cd39879704cbdb1b731fc1c24dcf85a6fbded131381c06bace10f5531fec2b29b1dcd4a38804669d6cc0a7d53fd2dc41f0110731a003d01b34aee8b57e06739a46523e53af24ee20a24d62f6a416d35a80dce5378c39731a28a649fe42f386cfa95ff684adec6caba49798197557954c8c6fc77cb747760fe3ca83c6a5b3f59a22a7d35267fc0e33c032323b48c307471e18d5b130341861cf309074bb83aff25b64d288b962c1a444d580edb5bdd165b6cd60336231cc852b1df5c25fe71d4235ee78a9feaa64ac9d4069e61dd163a3a462501adca075ccd703fdf48c91f20395c030765c25202d87c67c7914f310ef5a2a99c0fb5fe2a1f9d89469e1a6ae8597e6c3c0c6dc7ce1adbb09c3c953efbfe88a96c35e12be36197c34d10d4ea765ea51dd21eba0cef43bc998316b49e15e35408c919132f6cbd35c2bed340c8b5cc47b01c7680a777779eabc9d1562064e5351dda7d5171ef7a3d24e9e3895de7a9ee1ab4dd18b63bac3365801749b1998dafd93b846789e65bee1c0ea841737a6fb7bf9212de1c0d91e12ccbd1009f24e01a406f2664b0e1c9770e8bfddb07fd13d4ca9788b3c225e4441309b61067b504202a94711a46f8977df4ccd12ea86f770ae186017eddcb52aa6584a0b4179f1b435f25eda165157b999e560ef8577b68341edf89a64e83e79510921e4a40b30d55fbb06bd4899212d8ba63d8590a4ce6be6323e1990f5ec53dd24a77d4717b34fd24c7cad241d25639b0f20c54aa11392af76dac49ae3d6f0c3d489e784ff2d2391499d47ff5cc8733493f7151b369f98f706913aad91722208a0fbf012f1e79d768028b00bac1412c2ef8469e59332515f9089136fe8fd9cc3b147b5b492f97fad0f6a043367d320230b9d2e94290ee7ad999d269f2776e17907c871a7b03b79bff8dcc7597e805866294eac8ce13089058087944b309df3bc31113f494310d06f327e98995d284fd06b4d131ef62cfbce97171ce30ec3827220640423cfe54598b6396b887248d9e465f7d0291c6dd79ab5e638e2a55cdfeec7a08845bdc340871e11dfb88f57e16bdebde7a947234d3353c64131cda4f9609f017da225bbb5c4b0def93ac2df606d365f5be558370edb8f3b86c39c240fa85077f8b98a3deef4667ed8242ab2c84e8f93855c5f3307b6bb5efb07beb8be9ea46aa82b9e74a31ec07230f2c1c2d964f6869ac100e1f4849530578bd9495545ec0afcc296536e64558264640fd12ba160ee894da18d8b221c59a60e79e06e395cdda1b75dd63a65738a776c071f061a34c8dbf03434d29f6af78892c178a7199465846dfa5f65ce40d25b1dce4966f1c5a584603100db4a80ac01a571c568c55de08c7c4b03dc88475c44f48a76bbda4c46f26cfc64f6bfa3930ba2471caf6fd8eca3b8b3225fd0d90986bdefaa5986532a8be54a58efed93ddc18b34da7274040fde621c490e347267964563ed03f69282e5281dae32c02ca8164fc415fc84511a22c12257ab6f31cac5e082b2a6845e2fe8bda886f4de86376d3633bcf3987f0371920ff528522f33dbfc15696bb958493f5a65384c9fadfc71e52ff370c6e6b63da7a4dd2b4db44e2b2a96b115646348180a6386c9f2fd8be03e2acac87c7df82427d49087a138c9aa735c84d47aedcd7005bb82cdfe2f56ac39c174a2607798b46fefe4d64f1992ed12d79f2157aaeb8ade08ecf30052942a3460d731859a3ee8131ea67d06682b7a6c1bf283866a1f4a4567f5b4b9a26256bbbd8fdbd84ded2b11741fd7315f41a63ac95979cc9828263d7f3d67d87c84ceada93b72e9f1a9e387fca57d485365a8669e1a823f05a435101746429b228bd6f851ae2b58d08ab9c94643acead480552794cf81f4533db340f34c7446e91dc51a8b0595058080607039d7e12c7d9f74eb5ed17dc4d875bb8803e64d83c9db5695aaddf324c9f39c7a4fc13a37516c3c6b4396b1474ea1bef52fa2281da1f3d9308bd9f43ee9f85cfc3e8ed583e84cc4941ebb479a0ac64ccc80f66f39db2ad31b28c659bbd6d5735ea3b675d4d653729dbd5182ea5877ea7c3edb37226feaba735f0200bc6067db242f8a4b28c5e23fe4dd4be4e789f51bcab718c585a1b70e0acd5469402bd572589b58baa0a5aa8235545f8643e5ffdabe8735792b5a5a1c8d99755ed8fc946108baced6eb0df3c3850c8c5f124fdb9fae93a4e24e858edcfa2814301af239d193882b178485ee19e072cdfea0cafe38ebf16c0a1c4539c6c9f94e66f9745b98b4234d418d51e80fe80c1eb3705da463642a718b37e5a9e98b4e474091ac940d24fc952f236dc6ec3e3846d3695c6a320cc8e9c9939b2894fc11a155513061502b9a63a7e2339e49b6dcefd35d7a3e7628193e7a4e66f0c135bf0160fae1c5151dbad59876b8e80f9767ddefb62e3c7722871d5b973542c689ab6d3a575158599f88249ad91cbbe9687cf8e40083844ae92dda4d249907b59f73967b938016dd7a79fdbe3b0633fec7a55073059c112d69481d27d1b081af2359569a3bb4296afd5123ef1b28064bab4b87cec042e218d8fe85f5b03f5f3c362c592ed3a6cc0e554108bf3d6f6a38365420d0802df24db87a8f8a2f2f92f64df10b9d5bd5a4ae5feb1d7d887b2480edf56890e8955abadcf44ae9c6f0828eb7e93ebce3879a73c648c40e4829a1ae7f8569bfade753b543e8dd126a4ae9977b28182ff7f55ac1c0df9e42e4e2089dd8499efbdef68df02f97bc632bca8f3a9c5f4dec209f17cdc49383c23fff88182d36ea1bbb826de50cbd38d4594cfc7262b523c2681770a7693ccb10151b812ae48601e4c83f382bb0f0126f9b7be7116d99f656e284559087cb1005d0b4851fdff1de53eef59902228ffd27cb0cbf3a8b55759900b673b532f50579db875cc4c81cc0151cd6b634a8644d310a328e58c138ce6b702ffc63f8353e87fac10f34085a4edbac953db5a44f705893f4c0d773e6f16c28435935598bd2e915a5275bfc91684a1e681d05f4dec8cd2fef8f1a31790c5c249a3b1430ae1d5b6fc8aa174f6e513a3c6fc45c915338368b17d2e4cc25d2880bd5c6d5cb01fe8a7894c224f91e82e50c7a186ece32f77dd5d09e43460c416f441091415ee90a16ffb8d51030365bfaeeb5d0f81a88675566f2cf41fdef4e2cf41b0708a93f105eee5808987ab3916b496a97e226758180e34e1ff58d0a92ff212262bf64d7f23585d137996064319d015d1c0d12e953cd1abb5562b5f7bb2f5a842f23ea8a1beb32c58872ee0b17562fbd35771a264b582a6f01a6943140fa1174c32679b82fc5c5c4fbe159943be3e49e5ec4c11e7939532cce0e7d2590076e53e1c1caff8848308c98a4f7b8ea92e6bd6508b1fd15f955b1ff8fe1cd9d4262edeed29aa647eaa875cdca91ed4386e01f7afc1fea3eb9f3811610d170bdc1895b5bd02d364b82ae1add532dd0b6c2e7b330561368445e54aaf25f2d841c2e60777893dc07f54ad937b4abc57174c14817cc743fcf0a32d2c817395e95001df505ee813b9283eb5ab2ebe600a5380b72fc163231dde13508d73595e9b427c8679848ee4a5bfcd142ae772f7f0f458252206552275f21bbb84b47fba78ac1411fd4cc1b0906e0472ba3e5ea13beb335e4c639343f8ec7ef12c5b8899c07488ebca56f89eb506e9cbb93b8642132d66d6a5f2a1ef4a72c50693f408f3f21a2f32199b2978233fb0ee8c2e5e006eaf5ff7a3f9ba72eac43d26f54f363e6dd53d3907a4aa2decf684ff467338c7f36f949d84d7787be529ae0c51246dfa161612071005244fe55cf7f59f51c7c5f247d1986882e1a024fc0c8b4269bb261e48a2d74c7fcf93f81e541d3b75f4ee6379072d3e9de9d842b02f09327d6fc7c3d89c96877b1c53040367953db80b79ff2746957b705bfff54a88ffd2727b6838dded681dc4e10f4c8b76d2343a536061308d7da94f8d55070cb77af21f2c9588e75b24b1a876e77888981a4dfdafe43d0f6185bd357affdb4fec9d95c74c5f99dcacd3adf568232abbd90bd883e308a6ca8bc144a29e858de9d41d687951db34dd4b35996908ac15e71412232844115c0f433b5e017352927711c37a808ba32694b93c3692ab90b8f9bff59d288f0c38f4ff6e85287c38f67407ee517bbc53687b288e773b65819726684a51a298489c15b1cd2cb2b1e92209310e44f7950d5eea860742dadc570f1b10fda4f32ad7f9fa933a2842697f38d8ee2a28a9d4f622ffe035ff9c1f8ab5ab25ce76415c1265f8ee8fe7fc0cf5f555455b549dafb6e5b474daff0b8bb8489d4ed08018fe123afe181981bba2ab315ddd4fecf844fc54b90a6eae636525316bdeec0f659038d108b9178cc690e6e10d16c77f2687f81bd3269b91125336912d615c0a3b4ea54322eb3fcb211c4db533f419f987eedf6eeb6abf1e059cf5e5004a30462880c23f28053aa7b2d36d3bb741aedb07dd6ba70c186d5ca91e9037917dcc2f0b3dbaedc7092479cb7a369ddb3d85d2233258f1e7f0ec54d4e1dad9aa2368c0a727fbe361740da5e50c7de54ad5af8e4a07e806b4e1b658f371c9bcf2e48fc47484b92bc8ec7a84942378d93277d1f5a6ed60fd76b9fb103399f64c287ca1725b386b55089ee420fb5e4561f442a5a0b24f89210df11c62868d20e4924c515163de4c9db35f37be4e706380277879a929ca30e47ef4301eb762a9c97c81276e8427db1f579d5535300d36def5c8aeca3969a6d677a38287ea6917c3dd14fee319255b1e16ec911ee66187de0d6d3acd06b840b7f0c510a3432b953497fd87b1aef35453988a35ccc18f024ab0992747de79d88d5e020e5b8dd16fd1e3afc5df1e791057be9bfc143964b7869a5111aab4b54ad8f87a6171163399dcdc0c8ff8468e1f14cec898ee7ebc9a60cf55aca1c575f8c6e8972542291e29f936d812cdbbf9d34b091c2dd8a4f80362805e3cc2713e478973ac2856c932d98a98cd4c8c4416c52ae050d4148f782fbc99a91c87b3c820aa71156cc5a05e86a62b79922911dd4eed318b19b6455cbdbfb25a38a1c5fd707ca527a9694703b3924d090b13e7500f944d637e766ca831e5641e9295d48aa897c2c4c8e04dea07d87d693238bef46aa8a478f663eb7e74654b01c0abd5a43d6438b6695fb66dcae1ee185760880d061162496a5a125352622d716c2cddbd29b811fd5e53c5a66c2e5a591fd11cec4ff656e1384ec1dffb9e14edd3ef8dfe68837b1e2ed65308ff0ffa8400458261f3b6ef0eae665f2d82c852ff473c7c4f7c8cc41493ef0d85b8fcca94c63111cd66ec223193e8aa24614eb7baadf49d9fea3ce8f4fca74645726f7622115f28e95f7f8c5d9ff0ab02f3ca771a001722debb7df6880ceb4bfb2a58897bd4cc6d9859cc2692fffd5381f9fb8c52cc8a49cffca3ea17193a6418841cd8add8e9d57a13d853e2d24c94af164b8654b33f1b7d3e6dc353ae2ee07f452832cf371aebfe10942813ae00f54253e6158bec9b0d86160ceeee09cde9d8d70dc724e18d0ff918332ce71b1ff7a39b68d714bf3afff49e4456aa9da6fb4ac836df381a67b387b58dfd6d165acb15401213950afb189ff298adc591cc29444b24ca5ffa30b930b796900890aa272174917f07bf5d733db485bb9b4092a6e3b53f24a7eca582b1b1dff576edba45d9d15a44e26334999989cec8dcb71f2dc6013bd6ac2fc65ff0792dde30862154a9d291be37919f412d9ada77493bd43b3d4d017065583e5adbac1c4c7e276be4175881ca77755ddb8614219c08c078486d5b37c16bce1d97c527d6254291f51f5525a493e65268c39da8a5e2b27242586a114cd10d4dddc8018fd3982cf999cd77643d2dddfde440020c855df730a5a52df91899ed64b56b0dcab38117872772041f81756e5f61a07e7791444c0cf63d2ac11220b6f744c69d841f4aa3d9ad15b9c84c0519f662085029ff7c77ccddc059bc09df17bd87e844abbdeec67d97779fb16f2ec55445e196e120bada6c9babd5607a8af9c21c2332f4371fea7a94bb1693834a6c9f68eaff653449579a16da74c66da68ce7dcb0c6544faa4cc854d9dc0b55dc6c10b056f0fe3eda4d39c227702eea85bf5dc18c548700a8f2d312591f18dc45bd74508ab0f9f9d7b6df4e5ac478f397582e1aae628cb81309fced26429fc414e5aeee532a27cf2090562dc0e2ab1b24e1b414253f2699c8ba1815875ae78627e3330ebbd05de532e51ee12c4572a3d8672092d17c5dcd11baefc074531d102ded8ccfbd30f53c1d87ea223da5992acc0df44dae37fbed4057befef54fd2fa4043d7fe977b4cdcc7211fd30cea95f0d4428954ea9f1076fcd8b64a2e277857a62847726d14420c65bc58bcc85afaa457908ac94a596f4738ef7afa39c5e804e370a0b871ccbda41ddbe425c64702c8efd377fe8eb12e3f0a86a5771cd3de98bdf6bc17e70126694a6846360a270d9b93d524d9d08d2adaccf1424a4b477bd8dfc008db8e47ea74cc43b4256b141ba11537378a1b3480e9416a52f39f67c3c01f8e07f26493fab756d79940b5c054af25d5ad93b2c31557a70e4a97ba541d1fb101cedec0344b83ba5614ba7d1e808d33d4551fc34310faef3892781f6ed6b9c1ad86f435fb57258963774e8d868f26d5bd53a579ad5b7b92ba074299bd9e0842c9eee5cc089b969ca3c8b50ca1134992459fe2b53b254aa0b97921aa1f097ddc73d7a370c31736597a43e6dc1bc1f73786841fd79762a016492eb2150e0f5b5d09a68ba83ad195ba7cd626c519f44915cb21c65a3049979b835db7cdc88c210d2cd5e5f91f52577d68a3f160512adcc342eb484723d54b19e4b4a6cb18c182bfdb71b48a212718f85e82a6f70585d05d4b29599dab4513e9d3d302a10fd1ec98259dd1df0f616e75e47c0da85f4a5f4362776d49ee9dbf80eacf85c8f545a2ccb60f5ed0b815f520ad51a9912b65f7d12344984f5823f4d326b01b02118862d5e28e7f08cbdd68d990f3d9e5b7e4eeae3153ae2b7de289db7ef2ac430b6ca2ea7b7a6fb56656d4791709cf0a5378c387483ebd9f892a04f57d08b9088aa454b43244d93439a0cc6bef6d4a3af0f7ea6948eed16aec0e150c4fd4c00af548427f10f188e122e1bd9448ae324697dc331475240fa2cbe431c07b3181ac8254f373059b69576fc247f07d8ff56c90c5b5e3bdf413a63ac937f8dd6afda15f28279272f0d3c899f0a969b086ba67b0f4513e6f45b2eee91b2096bdbf599f2e09dd720db12c3f709c40c6f53e651cc4d0c39c4952f52637fdc43cd8e785182c9fec127a34d3e029fc10b38615689dde6141969c2b785319d6b5591d89b75bf9752e287de35f96adc86547e79f666137d7ab8fae350cfd61d21be53cc2b490717d34c3b7bb32a9d7bd7b8e5d21a8dc590350f06ba6af99315fae89c3a2ee66f289923f73ce5135061e3eea29165ae6a2db36fe120ad4ad4ab2b72663ae6b7c31d3b6c422c19788952e1361ddaea2936bfb05c453c1f45f244029de326082c70e7652d9e54f32c93eb7b828da4a8372cc1f70a2257e7d783a45c02026a2638dd3f251cb85c4707d7c86300083018b4e97aa356f66c900081e403a6ab65775aff4ac65ee1d82e2ce31ecbc2ade1f59e90023b543317ebe2d3775999fbfd37c59be6b1af3dc7fc5a2d23fed1d79a0ef5077b20b5dbd4c7ab8fd6a7941db5d995a46dc81d813c5c4e13357ba342ab9d5bd4ca7c5af7f38a29bab6a73e41ab40eb3a1106b3a15f20689fc11b3f9e5500a2332f41e113c17c572110593a1de87df20a1f92afe3db58c5e69cf38da3d7fc6d9f7aed317ad17598d428eda70a8fc37b547f0f49fde57df62b6f7cb5446151013ae9080166c36d23c439cd79f392aa8bcc532c3a2a22f0f5a0a7068f492141cf9097793d1ccc9085fc18947d6fb9e2e84015ecfe4812d02063228f2aaae3481aae7e7cbd272f7ef5e24f6cb5ab3da12c59ef99ada3d5012ecd190b15cf75f3a79dc844b7c803c9c25ef45af89bcd18fc104ea87f2ea30fcbff61ee0ae0b337917109a363d62e799b5831eb9afa26d4e5c1afe00a30c751dce15ca446b0a83489cfe97e489629b936ad5ea12bbb20ab0b44e6532e5585d03ff9f91e00abbd6fe89588ba07965d248177c5b3c7448f8e8110c33521e4e3a494e43f6aa3957e78040f1aff92b6555d47be7e20f31f9fcea26e2e078b964f2c6ced77c5e65152354858fdba3578ac542ce2738d7336bcf1ff98bc809f4cb7e0f96be2d55a9c42e810b7f0de8a40616794fddd66f289d9ef3f374acab9e4f6b3f292a1675a9c25e4625f5e9a4b5280e6b26667c7f719d882ff38730d1d43a5c1b4561c82c2e543e9a09b634dffc7bcba1fb4eaeb8373523244ee25bd1ecc9857e1b8ed97f93f10d7e57eb58e2c7283a120f60322f6dd7f8a32d7c199022043219601561235d683d20c1c7e4f01a33a143c25d93bc363802ceb6f6bcb6bea33e7fbec17daa81cbf4ce0867098543a916c6d0b8a1746d4d33a8d487777cbc099c869349d0c23e0c8ebab9541e21424d05f9b0f7ef292a1df089aa6ae2fe2f18d2f503d6fd8088bd198846471cb06dc6ad21d79754028dab9056f952792aef347982ca3b2ebd65f4d7b377e82276f2f2a4d1d4826b1b338de08701211d333fa4be1f5787907fcb6fc0c353f7f2900e834f9d8ef8123f0c20a208ac7a919c88e1e49c1957d57cc932fd49ebaa72082ea26b2202fdeea7823009df03fefed2539ac0931140b0a219846eb7b2002d6f4814875e56ede6d526dd3ea74a786f5310763ca7fd215cb464d625fe538cd01222d8875530dda47251dfdfdd31ec566468e3d411c4e116f7cd74e9032272adbc5211230886c218466dfb7bfa0239055e23ba1c84ee799eee97efb4e497703b0234b765ba6943f43adb3f175ac0e33683d89e385353b2bb29f42c35058e40932519482f8a872e3073a2e5acf988da8469f4bb62f74519b41e50b24ff50e1ff585728ab3554f44876c5e1aa600c909f0f1d29167dae809d717b1329822f60641a0be37f9f104fcf9341db7661b01425cd1ef552a767aa4f52ff1aedb5ac2fb7f9f6a475cb1305d48af1fecc1a52e3c13a96f9720c3b79ee45eef7c971e46ca577d04720d3a2adb7be7ad3580a51e823faf83a5d3f6adbbfc95045b7dc31fcf99b2606f8facb75d5d777182de94359f72e769826092958b9bec4f4df56623a6b7779564391afb46fefa07500dfd75451eeb0b04f8c090cda1dcab629ab020214695edf0b74b28543195bfa6b1e0cf011d427e216206676ef48e5ea7b964ae8781c4344b8ad7bcab0d84af4963f602b2294be252773d98a8fd37d77bd7c6e5ecc69fffea838834496dc59e242fb39d2d65b46c57a5e6603b2a840a3e28cc375b1623d14b4c14743b70cb6afd1625e37ad28392ab6dc689076a1440b4181ec6b199bc3f72df2164d8f940e0b28d9da177dbaf9e77e6d31ca2b40a63f0c6ece95118ed7bfd0ca0761d2fde37dffc2b4415ca4732c53777599680a627738491d2268278dab9f86b10f2fe4ca98841e8a826502c7158201882214cf1972e59016624672644db994711e6951dc6a62a0d86450158dd9f72fc5c2c187bd9a77f0fcd158012ad403b20f453e7ca8ea7fee26784d5b722cc92768227ea263ee0e57f5577258df563fda441832acf73cbf5799179a9935547fa63d2384c07f2ddade99322d58bd6e3552d4f855ac8b423bb344aaebc866571b8fbaad9c94ad8a4af69efc6b2a9bbe788ef830bb7accf3af12262a53208c7bdeeecba9e73386930f524018402b8acf733879e63420ff2f2ac2bf77a9583950c50cd8863603ca3873d9b717eafdea844c5cbb41b44749ef2f407c5964e01b05fa9d7097d280461547ac93df3c84c15c802f7e78cc8b5f70b460d8a09305f92da56fae1e769aba67f531c8e20fe782113811b07b11c78646713c84af5ee18ed51c93527a043f8b734a332895628f242212feb993454ae7cde3f667ecfa0a03d8e074bc271dda70955f76fcca5bfbf2a03cbcd0dacc72e73e0a3f16d634347e9ca2bbac699deca5fd7135f74ec6352d6c16747ff2f90576d6d8b5a503a35b59ce9e1105c82f431abc46ee4de7554049e6bedaed9690ec37a323852ed75bdf2f147eb8812bc51ea7785b14091fcf92963d798344747640c1f945ff5d03981009f23a0f6bc1828cafefa3be3eba05db23f4c77382b20faa39f81a8465a760d00afff68072a75350d2c6fa00c9652ad5759e6edf02018fab3873f30792e4853ec878b41d0565033012dbf2541cb3dbb5fba433461b8e9d41414f4070bdb2526e2be223dacf4c763c25644468bf4087eec51bed59feb16ba5179a4b3afb0c4bef8fc1a026b5cf30b0878e7318e371290dc7d3a316d86af25bd357eab0a21f537aa76bb48cf48dff500e87a4868e567ae3bc05bfb197a7b4e95e1bbdd3929b611ccb7e75f5df29dec3fe4efa365f3e93c4382c3bcbd575cb5382f3129309366b117c63da67966f842b80f3c8c82e7ddbeea06d84ebd6a269e6a0d8ee4df174adf42dca515d7334f4dca24cc01bee2416008ef7362a12d078fa71db55635ac8f46a83f18b435c621e55f2c31353cb3567001f1c8fa3c13ccd489f0153ce182a5f87ff2ab22710b85e818cc4d0f39182cde0aa6b2ef23de01fb3dbad746f38ceee7a744d70fdf3b8bb7877da9a9caa175c2f98eb06c7100f2580771c59a4483dc6dfc8429c2fddf3fb67dc0b7d273d691d6a3b2c071debdf882d4875850b2c208c54055ab93726d64cf679ad18d868878f8cf775e51280a8cd4e3b6f3f32785258f9762817258158bf0baf45790568538aab69cfb34c75d90ed77845b067a4188508b84635fde9d868870acf5c63b08c892126e6396f4fa45319c7fbe7d103c9df0a684f8ef3561670e936440cd649b2efac09f9ac6015d2e45f95e2b406192cb3a9e102dced1cb667ada6d077979507a51f268f868fecbc696b97527ac3a4b305f06992a37f4f333ca5855784f0d7b85a8eac567f3ae4edad37d303411de351e739e1ea97e8d240d7f36ece00be2564d355201fa34d3747a6f618c7635eaa17fef2730f5866a75f31d7fda3e1afa437dd315e735cabcb363200fba5fcf153a0e2dcf9a294bb3ca0eaffd0efd217b82dd81d742d9a7354faf63e55e2a0dba8bd4ef238fca5ab9d50940299e3774609887dfee8b1495b6083af52a263c0e2d0594d9a13c265416f1c66221e29e9ffdca1db4f9e0a2afed0e145b5394ff69ec7479f2c8259d6f1af24fabbaed9ae15056c66afcb482e394e7a35b534e96a597530127c6ae3af48a494c349ba4a0ac254c569012d07d77984de3810547d8bfba620cc8aba8d4c2b00d9a19670ac2270745eb57af8521818d3d429b9e8470a7686aec093adb3ecab6c7dffbfc9a63ac024d2e166e42426e78aa493d32708cc2a51fa08337cffd91581e0e81c2bda84a3ab69dc772d3a77ce3940c3e47e17e69a27d8cb0595b4ab1e0b7d1d200a6994347bb86875a090a3f457ed3397c57ec69c51bc172bdb5255877ede61c51323d8f6c1bcb19bc981720b772330e3c149282864a3c8cef0bb4c7c0291a11199de158991a2a64385adbd9fb22ef5e82067ee81801b32885e311d4cb0c81651710977c3b8f87f11a4c76fad5c89512b0ba99c5e5e5174f44c55e6850af2151006d6f0fe2e7966e8af7ce68aecfd0d46fc0beb5d6fb7b74dcf4c5023e9fce132add6ed6af52632d491b89d88a7bb694aa38274870beeaea2e37e4339a6f776c49fa38cc9d7069a505be5258540845048c7df183bcb6926927e90720aff58e203ea26ea18d3e5af03a0a56c76dfb5e1d97169a5f05d3e28d24e96e038a8d7179efc760362c1e2a4ca19569589aa13e98ca6ac3495f0b4457f014d4aac9ffe6c538d33422a428c29b2ef66a1334f35b76d5e25ea1031dbeaa485e54f7bce2f4d4e561d730203585e2a6c60954b2582d795b6d4f3b7b6625cff7b7f15ed190377abf7b22df1d3dddcdbc7c2b4a800901a84997e9e0982e67f17c5dc06a510ee113a88b6ce08f08312ac2b2fa7923ff69cf3aaa49ce43e028a24437193873784efac7af4d9cd04bf569e8c6a639b2b660fceb82543412053655715d02fab6d7dd10ca32c9ac64a1072311f2d2349a3a4504c1115cb7b30828e133fb5c75956f4f3c2840315f8d0925902e38b6ecb62e65fc58b7ccf02b0f4a04b4144e837ee586e587250b37abd9180f34d4f733b8d885c032effcecdc67fade88f1c59227d9f17a26b3f26c704534a2960166b0d85e376f61fa34aa6167b272c12d00242ac832ea558dfb67e3ebb96f5d45bf61e4b663ec507c48a138b26c287db3544df256f02c0981574831122c40c298e8148fffa05f9a3ba8373e42594e141fb838fd58d2b9702d19615076d704621715ec1a3e4cb2e878a64bf7b0ad92d04fd8a26732c70da794c2b972e3874cfd1296e24eba5615ed8dc4acab90e78a3527d85dcc6ca5296d65ef8b48f20ecfc8ae4442bd72fd7b63c6449f50de052cd9b84bcf72991e14f70fd3c4129f28e64d64b82a5a63571b27a5e75d43d61556cc6c3c70cddac155c8f77288859f5410db13c80e6298c4ef5607b092d3b5ee4793d6aa5048af7d7ba0547dad7aa26e6f848225379047cd388ad7c5e09d331f24ae423a8e67d7a99677945d3e74e32a4ab4673d3fa569edf81443135ab6b8de74b13c70e2357123bb8a50b7f9eebb1f894b6ce8963d8e1e765ca30409a3a44ba4ee8f381403a36e837827c1d2841cb03c52bde300f8e3aebe3b8de76b26265f85ac842c82726f228c6d0e116edf17fe1538147a15ecae191e78b8c1eed972c6c9ef5b729ed98c1cf760eb4ba97ae907e8a45640c070a722ab45b11c7a98674089d34be86eee591ce8608ad21037223532d92f4bc132fb6abadb852fe4b8db35c2717eb40bc6496d0aef3ff668bce4e4909e45cd2b9bea136719e2037c183102d35bd5412223613a086dca7725ac5b0143c8ea9fe6853cc8113a4bb080f5eac800a3732776149ffd15994413f4a3d337b34371d22e4802b3dc996d85a69955c4f27050775ce36a3f651a3ba431102338e9b87dfe1207667f2e8aae1896d488b0353054763d526183b21d37fd71ce494913bbfec9f65d7d7a3236746a6e464f55b944c2ce172b1bd1b80150e6fa9f72940389a9b111555a555897d5023c7abc385254f1e3fd1dc7c0b81396d6466cc0c2b15d1ef1f0a7d4d2d379a4c387d07b33381f940c92efb054f95b68e4845391edb5501620f15bc5e11991035bc73922f788e8141f92f70f32427a07191791216ccdc63ce6c9a6ae41679cfab5e8c00c96c06ec5e94aefb6fc6292f7cb152eb8bc5d7296f9ff240ad53b9bba8ecce595c34774e5e61b107fb2a94803ebc983c7a2eae397756e60b731d8118436c6c7abd2e3d7c1bafb8188e46ccef11b318eab969eaa4d7bc7a644d5c55d61071f201170403d6ed0f319aa9584fe4175800ef0cec80438f50c300ca04e1a277e940cd3b47045dbb7a268aa56cf897c239d7d487e5920bc4b17955fdf02956cd9d6a9bd7466574bbeb8181cf2ae33efb0a3cea35c67eb4cd111963b3c33526e3e097ed99b7af867987c9df79a861ee3cd5f010635ad74adaffb303e5979a10cd145b33b05e8b479db47314c1a3f28a067d58411fd09dcee292808d9c72f4258e01822b374509884710724a2e9c856cf94bc696aeefed20b19c118fa41f4175f45032c1c4438364b2abd79e88091540e5efd645d3530ad43a340c1a4c22cef2a56f86565e485427a09ffd807600ffdc5b137a2740bea009750f517352d7d51245be3128f8906ba7ef877c974853bf995e23e66e47f9bd707c9849147b0526a4b491e6e2f38e99ac81061425b14136ce7e79881f9c2546e7fbb65f77ef65bfbf89ffac545f2442d7cc911893de618af7838ff92f3844c867ba663aea2840b6119ad3d6666f08ddbd3f16b5f20a5cf1ef47ee119f5db5c45e57d1e4dcf5919a713279f5289ab229bb48769829ed440f7e398e358f32f84a6b3738982b30300adceff4cd105fbc3e4362899787de17a4095485a08d0de647a3b7b6c4c13de7e5a869065c584b1133d260e9cb09de80dcbbbc2d0d806a6c4f74e79e37d0b2219e462c27fd9f3f21a4db950a9ef5f678e3ce9c885c598620cdc8e75dd95cfbe951f04a4227ac3f4c58a045b0710da70162c2952ec361f63cc1b8f8b9ee5dbb27fe872f04ba0f9f86571e962960f7554c44e54db29f5305b3623b1cc3d07d6c1a6942a68ea6be31b2c4a84fc476ecedb36b4ec589aea82029fa6d5bd27a495f09c782c81658e6ffbb3845ac59fdcf6661413956c4bb66e8d0203489e9a8b0f26397c4fdf13857b56779fcb88393a6837862575f0800ec9777c2e852f2b191dad18bf3d3ac2a39d8157a0862d41e44c2bb8151d232ff3318ed138c04740eb5918194dd2d232ef35f6181d0632f953f2035dfab9be83b048bde65b461397e99136dde2c85d98c7cf4fe1d3547c370d81132963ad0e5ab16df1459c248bbd9b795b4dc2f1551c631ec3bfd39cc7e5dc53d756f5d9a6c821fc3c9cf9b05198cfaa3d14975bfc5b181e792235430880678895201837b89261258e3e2fd9d7de8f1f10206b25e9e57824405e6292b59a07a38d49b17d1eb446d878a00459689b6aa54a25abeaf3c03be9b32cf0340659fc5fad96f1ff2adc2f5efcdd2d3a78af0703ca1a3bfb66e3f7d154260603d3f5e70b044f31fee0ece697b733bc3f664e0fca8db99ad1e4bcae0a064e57e4013d9efd5fc3dc0ad07c5304b2841e1fa57e600f5f031a7923ab26351188aac81013430b9bc2704ff955fdfabad6b1a8269c978318ba1dd6a58415b91d1bf3f896ebb8141c2187c434f75ec463d3e141c0d7e4a51de67302e7111bff8033f94259505ffdfc3af3ae5b14087ac44ad9522bb4320bcc51b82f008e8b20ec6292c1db6021af1569eef3151390d88eacc28936889cf3560bc9c1ad2b0ad6c21b6a43324bd400e6905416888e586d6d8f9815b70135a88ae64a93bc8ef3ae56365a922ed7e599f993f0ee47d41fca502f863acb9e1c5b6afa3d96544e98dbd86f531df2df5a2deaddd871ee6763a817e8d7e10932e8837823a2424a79471414e7d5c656cf1da695dadb12557f9226f2bd7b074d6557f2be7e2b859c0f2967e7a1f9d9982a9d1e777bfc9a0d861089fbd51127df335b1159f006208984e8f6090607682a05babd52b5fe80eb9b0729c9f88c0af66b6c14589faeaf2d422ff4d6629f909e8906d38d020417860f0b7b1816639c8f3132095676cec57f25ef5bc0647576297454cc9dde371f73ea895759c04d9ff77c7807f2a638cc82fd7c448ea295e2479993def14b8c99996711ef8cad9a6d779976f9bc1feaa1060f7bc3bf133fd8bf5b007c9c4e86dc64735f14d5370c22f3a665b6d31b1f24e69593b639934b9b5136a2f1ca6f1a4bd03245c61adb49cc8118676980947715b13903f9ee6228eb1e371ac6ca3d99393c7a592366bde0926035bb7ec2c92b15e99ef3cf54a55e74047fc1b3f5c8abd3bc577b31dd21d4e4fa9b479189bd50987dd7a59745e4abbadfc317585e2560151c852423e2f3bd1c24b76d12c5b82c17ffee6cfb6a8aaafd01cf81f280ee452918f98b0475407f37094f31a627c49be0155f784268690adadefe57cc8cbf9abd7f5998facfbb8080d3f9ae6da2318445259a6e7bc43359a95bc4442414ba8622ae7fa27d303983556fa1e2b929115b0ea884d79003025be20225f3b61104694391fa073ae33500646c07bee049bdb86cbff6569074d1f2fbc43b0d3f3c4634cdd38c8d80f34d1a02773e8f2e704efddaa13db7aefa009b94deb38a86912cdb13fead917052c31d857c2fb72d9124059c1398c3d27dd46de0f1504fe3dbe9cc8860060f46e5fc90b72614b0be0263edccd6bef2b0bef4bd9f5f671939b6b281d462f86e75ad04d5d0fcfd63baf571e83a0d55e1c101ed3e207262c0da3b3e17e562132c7f28095690224ed318f87a226fda7c9c9d63b0bd0afb3dc3e4224dfd83a79f44a518dc4b5e603f0bd64decb5a23042bc85b00f69ff9a0c27eb781eb2440a167dec22730a94d95b6c0fbcfbaf8c972c4e284843aa420873a5149bf68edee4a77213126ae24d98014113971e253ce8b38fe5ed698dfc4f2c2bfd4ba0a4437eb57d69197d9168e0e6a35c819055706dc378226500bacc3b85a6f9fae8a706ac5664af250f438c0d91b6b54ed0e120943e1672606cfbb4bbdf2597691feee19cd5dc6b25a620679ade27faeb210f285c77b49f9976599c7230466fdd9a7971c931e05d356c7279d17c0a34010b1c4105b8d9e3dfcbc0ec4982f1abf5331672d89cccf6c8b04f15926ffb0c41d8a4cc08bc10ce88783b0d3f726dd40cc68517dcfc57063a63df73868e98cdfd18180d4d3583adf774b9ba73b2b9bdc8b5bc4bae6d5202a69c280222064765a91d3bcda2476482de176981e8873eb81b652ee959bc3894a2147347c1d549345b80bea20a0b2bc2729b9fd82e4bcb5483bf29426fee96561eab37074f502892539ae23ef30d9d780fa251a3ceece45ac2b04587dab73aecb5e1a080e49d644aba0c2c7f9ecfa88fa5af1b17116b64caaca9ddde520436dbe05d9bedf43a8289823728301f441048eaabda4b615f6502de1f9e3fc172b1d59c6a76a3b6745cf473c541b4ed55e32c6b62d4f5786f84675a0c21600ed48e5aa9751477a6f1cce3d51ea500e660ca0b8e04700c1edb6d232f6c9a4d9fb0dbd7f890ab463427a2fe1ef434a29db420bc0aa47e5f4cf4bbd71bc1947b68c313b9b7f215cbe1e2e5ab58b88ebc6416dfbe9bbc135d44a0255e3390bd5ee779330b2d75b2125fc273179b221f35f13e56017aa7ed891ed7fcef29e2c1e482759aa0c317d5477abadfc223ad467ca75bb94cb7266e6e3128fd4eb8c43a5bcb0fbedebd79c7a40a93acdc0d188ea6b08b782cb2dc22facd356ac914c7a997d2d1ab9f716359b75867d2d7a0e6eac791646b55add2dd9f94327e33048085725df95bd16c3e0156e82695fd7edf13c3c46ecbd70bf45daceb6a28306e0956e7fffbd3bc8e988ce8f214abf3ba8de5fee6a7fea5d2918799edba1b63b17fe16b4dfc181ff5a460e65249b37000c0d6b36efd313ad7df2c607c142d662d8268502758f27d97b74aac1b30fc98890a7dc37bd7c3647274660a05fe019c99b8f23adb1c7c628ecce00b9b089abd8f44214c458d7e8da5ce7b08e5100f3ac949ab0f348c89634f0172360c66cd774307646ad9eba2f15fcd5b0a517ae6236e644dd8d79fd7299a1887e5d5b1b95a1d34f2da60b2c2a8f833a55f137bd67145b9a07c4d7e0fd86df7f2e2c7a56bb5856d496edc176b7a012b3f2076ebd7bcd9fe055ecd099980212873526ed12f1f67998c805e439fce4dbf819f33b2cc89b06b132890513d93a55ae05e3b1939c83c6468e716d122436861eeeb554e0e6e493d4168a71f996c07deee2cfa3497c892bc0708245294afb863785d84524cc7ce36a6be8b6c5f718b2b7f35b82e7de7bb55180700cc57a24b7e5d745ce1ba20b91bc4b974e76b5f155a7e6914e8d794b526df448d3751a0834f8e8a1937919fef3564af3e72a5be21aa56c1ad93340fd0ea5c9739ff6eb1fbd5a619fd21d81021d183241ba5b09b46fdef193d39f7efb5a082f46b8504048af576979f7f88722ac05096884a72f60c5a4081c034e197db0c767e749ef4b0a0f61a2b90c9f91161d835b616df618ef7696c5400b5e7353434e6238312acea4106a4bc6f87a0997f70f76a4c17acf6b6fa77d1a03e5a6247e36f46bd1eec205cb3502102d81ca8c6e8df289d59251cde7e86fee42859886729121967f364e3a972556686ec98ca9a1ffc72bb400ca7e58cab08421e9c97d6d8b2a83934208d201b357c058a77f48afb6797be199ce2ef5e4b7ce4a088b81b09b3c06a7cbb02906aa9c42c8b52ce33e5aaf881686f148a510bf9528198fca996931da0d6720d55801b45b85d4976e54a24765c63b26d9b6952436c6a10453d9da99f0343fb1ce761ac7f66809f8b4a1b88c5ce752500cdca59d5185506daff03e36ff2382d7a9974cd34ee0cab9f904e6bcf0fbdef60f940cd512a12b86ba0ee9a484d1d7f341f06698f742a1366bb5ae0606e8c41e39db8fb790dc53178fd4a7e5444cf4f5440c79a7d90965e3eddbf23c457ebc694dac597892566444ff0468055951e011cb64bf837fe24d2f0e87c58127312ea65491c081ae240cc2e0fd4de059750e261538a6939c4389fb8b1975450a9f2e527d81848efe2724731f32c37e5189cea4c75609129b14c62f577997da822ada84adc365850c771bc08ac49aae312b043fe370ec67bc86ef11d120fb55339188684ca9a3ecd9884f0bf906a119d5c2ca4f111b799c469bf7ace5a0a55032340bacd578997941b47eefb8993421628257a1e48e4f207bdf5f20b0ea03cde99e2bb594cedb5bab029dc77470a652ec8a3e5232401b58134dad316a969ec621ef15e78fcd45314e1ed22b58fda55365f238309f5ddf8aac2ca2a673102b3c08313c7882ef1d286192de419fe531c606e15065faa2ed57db939f7ab008de97958252a68301a0df09bd2c0f710886ef8e25fa3c4480bb739262bd9e7d42f406165b3620602c8b4072a9def345ecf459c2ad84b268e704a2ae3ba0f056d911a44ed80520ac69a45dc79a2a391224583dc0bceb633dbbdf2328794c77aeb60fcd38f0415b01cd284cd15c7c2c32448a4017d813cdfde37d320d17bb9dd11ce05a1b2e9014ba8d69126e44aece212fb86e176a580ed8f8667052bc31876290e80371b8e7f15beb086b93438cfde15c53ef9cde4ecdfb735ac1b68d7d13416db79b2f584a538318fa81eddf7d0f953d2f83c705afbc3b136d7f9edb418a2a2f27355db13af35394428799ebd03828090f04f021751b1065ba011106b479f8c931dff8cb63d1bb0c672e3c9166d4264347416bba1a80041de19c182a40c163c042187fd9b6b3048ae11e5da629c667f33f9d3886f8c85a6da18767116eaee550e0059f824aeffe3bc1b94895491ca82c94047ff6fe15489cf2da6f11003e98e7e00de286888ebee503544a874f2f063758c764a8041e285222d9d42f33a2d3ba5288887b20db76ff120e5fa9e93193c7be21d66f9257e549a476488b6a3b618d94b90390134ac91cadf7218814c32f86062f12520e27ecbe5b24376613ceabbf226b9c087f6498c28621951211f9c1c72a9252fb46d9e4e11e2a0ab92fff7d6cd8ca9f02b48a424fdc7ed8556aefe843e47f0df64ff562f134e3b5cfb41df4dcda2af7f07d6df7e60315fd94b04a4151842f2455677487143ce093be16030aa552dff30ea9973990b1fc121ffa816c996abbeb0a199f0fcde803a859fc0e50a4fecbc86d63c1a97dc629111c708fc611545ef21d318408a83431779211bee1da80769a283499def54a05b1bca2a654e333479d86b70d673b7bbd07a6a1e420ad18b7a7adb2ee4ba1b5d5c3184b70ff753c73379608fee3261ef71a70e5b9f7240f63dd47c12f18c7aa145a3444f51ca1c4ac3e29852467b4e6d7e9cb88242e2edd148813973b5c4df28c786ad30a7cffae9598f72cf8acdae05fdc8a6f63a06d5631438999be8c25d22bc49392f24769caa00833d6e13de9512f1b228a6310f7b6791ff56e4493929812047b1f9369d746a5a29bed4f55c7b50843a243dbd7862dbc68de0c6f8a51edd2f7ab6b0828c3af71232aea0bc83bc46630a95a29d3c94ddcd29d8bfcc193ae34fb53ccdc3ac6a326c6f3af24a4c19400e1307c778291e98bc999501d79b1f56a8140957fb58c1459bf681c6b65b36d320251dc3f2ad913d5265a2f677d7939e8abe3b6b5a0cc3e7e7451a22247b1afbd17c0c463bea8315763e3e94b24500ec0a66bf12a88638b0bf008b0bebefb2bf2e571d546a430c99dbb0da7ca7adf4e46c6edb681b3eab7c2fe6d35592234d6ed1772e5546054a9f5d529ff261aba2e74500a411e49aeae47402e13a69d3216217dc32734dd8dd99e28de69960e760da76db8900db0589bf99c01ac6c96ec55c17b7ac481cf36be1dbcabd0b84cc278c5f33c68e15c95fb64b6dd70e4e62b56eda3738df8bf71d12b22369384dd517a5ed6cf2e1541e06eb61f0e44282cdd26f998903fe205d2078b015de9995fcf026692872a28b8c5fabc2fe0381dd87df0701f44ec8a623268c419549362b79997d209b0302f4e20c369bca67830b690547beffefab0e4ae27f8eb98772faae9c1f56df341270b5f58e1b44391ad17f4fced509cf9fef2e90dad3c2abb4af2ba8be118be96a2e3bc4632851177615422f8887be6db23e916a25fd967cd6fa970e08b790da20cdd56800b5fe9042dac7f7f0c08a59e81a6134a859f0f467dec145f58326110c75549653b792a9902cd261ef5f31ba6ac6f1b1357c62c2c1b44767ac5834705ea73b4303e8915b9158b6083dc857c90527672b089809c9e7d4f6b1f06a91298ab7f72b91c0401220ea44ed5e8d0b54f7676aefadec309f3b01a40723c72d44782be54e8f69e32f1d446bf32d33f93c0d974ace05137d0fff091f6dd2c01d1c0f7c876de48a048798d89d62ef464af71357af9e4b3d2f97a64de68fdcb45fe208f01b91203057e3cb4b1068fd52e70e9501edb734bce6ebfb006a3a1ebf1e191a8bf385e1325c7ee50b6093ff6e28a0e5d1da771c5bde70106902e1b3452718684ba45747ddcf8aa2279d58b36ed5de84f3c4be406503c2ff703719ca7b3c8b4f2f2fdb78b608abb96d8c9044f1b48dca8db5730e666c2e82459b1dfe3d00f27abdad2838abdc7a151f95f535d3cf87e526d9fd7df6a5384fe0444a4eea28214909f71987045603dfbd0baad9c4fc3a2af833ca7f29041750adeaa49a15d3bf836df1cc5bde7d4758c372b059073e27b10d37cb7869a734a2b3b850b540d7c76577f3276510c6bb8646d9725092f964454b05f6ced82baf69ec401803ef2d09f2bbab4edfba28c8adddb63af1231a1ba3b061c385870ada73b14feaabc096aa9991842e78e9e749994483b9c0fdb509067751b0ea0f8cbba96d01595b72e99f32e85df643fef310b891cf83dd4feeff07e275bd516ccc8e52f9311a91e4b1373eb9c498c1d663600604d690d8945865cfdd02f1e117b841264c4189818cfa8e7fca844defdc1574c8b34cbd1d6069b28dc400d371cc1af72f6f342286f0721be2bc8e0e6f7685f714b0c649ec6006f54de538f1736fd08680d86c081e127223b0a1b11bbb831c8a2f531658df9b9b4f13a6c55df3ffe8f9b09a8b817ee7ae43199094786ae1cc42b3d7f274061dce77475bc02aa097180e35129977b346ebea08f5b16b851d8a288d789a078ea42c34792ef0f4ebd01cb87dfa34f94fe437dc4c97d300ead24fb7c6a549e1f70f0de66aaeae553624d99eeb1466b8ae47eab00b8ab385c05cbd60201827b8e3811bfe70e26f71090ecc9a91cb9b8ac2d6d7538b87f30e00d4f3097ccdb3a3678afe8220fb7c6b6610273cc77997eb765beb83476e91f202894f8a1738e59ff8d1d98a4dfa79ed21e143458b443e77a0a4b45558da5c4c2b6bca2f972acf0ae30867c559ec3fa55057692cb6acc7717d2424b02815b77b97105139e04a2a2b531dd3f5d28c6ec2c3e9d29cfc445840c6ae3ed07cd513a2e64f185dc31513a8edf98b6e6170d97b95d0b5f4c135dbec4db837c4c88946290d9e0d4377bd140df84eb19b060e9e88c51b8fc6ba78d8a532ba0aefd626a53a39a2d008e36cf24c1128e97aab4141a7e5505e585ff6183d9e9a5e8abeb46e44c7b140bcb8b9a8387a50ef1bff21ac18d66190262eef24a9163d38212a14b17c46268de55f4fd009eec75424a5434122920e475ebe5a0c835e9cc312eeb51e578dbfe3fbaf1ce2db0aca8a50b4c38c8c0c045962a226748be50f4511ef3ee212de834cea7a8edc2e4a2a83eb84b342241c4adf4a1a7f9621c99e16a75852832a1bd0fe93e7a070678906e658cfbf583c78d2645f968bbfcd64826fae23fc5ce40b8a7f4a9cd12c4e22121b8b1a2d0927c53ad5a10949d3b8723a96d7ec75fbc6b0a62459b93c138f93fb2a907a8376c1b01318420c6c9430bcd407241b40f41ca8762e7ca36ea739b9aecb029f8378e51e3fde29ce74b7285a4a116e56c97074a26a83649eb4c7419575c094313fd4f465378770d95e48b5851452e04d1eb122e7413f3437f69400a839158c846ec2549b512ce7a4968c92f85aa17ace5b41bde8d4b2077f6143b1d867a243915d30efef4cd08ff61e569ddd5dd98f29dd79a0e9ed25681574edf4ed38b5a6460a99b01cc1691f1610b05851fd1e47eb60276ab0e1a8d7022b6a4e9660aeb8274ead0adf3dff81cfdae7697280551ee19de57e4cda874b6363b6a70065e70e3a2d4370852d545645f9391a02fe90637002cc84ea057eabe0b5b8ca0421355144a42dde8bccb56e93f7d3d9940884ba3c9889e6b81b9b54fd5606e8db32ecc05c90af4f48c84f5241fe70b95280179a1e46f254dce8e9962ec6d615695962abc7893544a75610ba844891f047ac95d069ea4c4174d74a37c75583ca110286f925cce343f8d88b175430305745fd13fa83076763afa1a1eeb1d5c66126894ba3f3854e56ca5b800a49bae7ed501c110dcbfc8f36f0a269e9fbea709ddaee5d3656296488d88591eb52cba354a6268fd0cb05237a017900482fde671fce02b7553b982a6c06c895433972625247394c5fc87934b15ae77a9f7deaa2f124488135c74571966ce05552eeee01521cae1da88e054ca2742ea478ba573e003014ec2013a7031f7502f08ab161c8e1a4acdcf19ed9d2d92d49dccf25e9e99aa5a968f33b8d382508362811024c243138f0c450a20602243fc2e594066bb9f469521d9fc042f448c8bfcf43614d2099d5e5a0323182aa17c013582c1569cea6e7b939ab3086542f5fa4152ee5c527128583a0d5e98d2589bbc257f1b557692cf8093eb02abc4601da9802159b4805bc477b42cdd67a1915d4a869ad03baaf675c8c34dcaaf239ed15f29aeeb907775798ab49832503849af81db323aa0edc1ac5d25370a98ff7a23c6521e4a4a450cb7bef52b12cb4a8bc28f4bc86908d9b6f6ba77d4209c56ed750abbdd5bd0de5a021b041e7c22217604977db005400156f3948953cd623e8c4ca595ad407545e8614da6309e5e3f93409e3b12d923f738d82aeb5dbd3e8a7a74482e5a899a2bccffa17e0cfac834425d500e49d031fd51c4ce5e6b05bdc7e4137eb3f4ce0c170f0e674bb4497f423e6dcdfec5566d233d425b00fe38bdf2a56c6f30e6db1d0e90438c885481b314a7027d93d4e38152851920487abc580b1319d7455ef2d1df9480a8d860e90094b7cb7513df5419f7594ff17d7d77b31101ddb2f30697447a2a03707169e6358450bc0ec78aaf0afeb804f04fa4851f7b6ed0fa252a42318c911e8d7a854a11681dfe81f634181ba785ef044967487b243754846e91fadb43145b263f65fc80a80ffa25b4084fa7c465a858e87e5bc53dd0e2b9f568e771b730a4cac8c43f20b3c378d397caef70b53031fc34eb8fb9a5f162497d857d111cfd3ca7f16584913f395e8627bf1429d42cf0305da1f183a416ea2098413b3ed5d35741f9348cf95eeed1c2123f23f1b1594082a74df5e74bffa63872c1352e59f6b1ec0c09573e028564dcabb4826cb0110791191d393956325d2a7bed982ce50d3208605107a7090abfc7b87000c90fa63909e9a6740da675a6e794b9aeb774e6fd4de34633182ee0cc2d5621cc0943f908159d81d52a3da8c4ee383c306067d65a459a989f94f235a0da6090f7566fbff0ff9090c090fa0afa909ab71f5fdd780ae624d509abb7fbefbba25423bca16feb756535c36519b3c740717f721e849acf38057dee95b81223c4922934bd7523b678fa6cbca645ab10c8f2f5cb2b4777d18fab029c3281bb6039bdad121203f4cc552ef2bb5f0970ff8437adaca4b68a9b5fd377e4c3f026d12f99e4167f4d0270ca3e0e1107ac85aaedfac61a0f3d38938ba50fb8d782b7dc7ffb61cad0538aa70876c68a43db11d7773ed115b76f29d53fd821458ccc3e345d27c0ef7f80b141b739bccaf4ab8e3555961c3c831d205ff4134117aba72dda8dd68b915af158aaf62af300bb936bf06a6eb81df7a9d08094ee88f4834a36e481eea30d14dc69366f23c48951497c50a2e840a10ffb69136c1d4fb73c0e4dd0d19b37ce353e59db5ee2adff157738ec46fe04f680d41adf337fe1a2fd33336d8fa371bc3411e7687215753981037b8a4f43ff985f1760e94e38784a5941dc7f08f767c3da1ddd3045ef5143286036466fb0de058ca3a8b23ba5824c28f40a48f05c584e1755cccec0c9c2849ffb4b75b7db295b5865d9ec69fbbba4503a12570a7500c3a60d05e7dbb57aa467df159cae05cd9b7f171e4aa2b2a592dcfa463750b2a60d8fd75e8eb6e0d46c1891af957eaca24f5f86ea187ea03e9683850be5e5d38c12e5092ae6dbee9bf1befd4c686bf0e1f7f960039ae408ea6e1fc89598cbc31e43a349759d0f5986a73769af7410c1f2ab6082ab8aa4d3b9fd071c29cd3ddc27200354e75a2c28ab0de0473457a9d8cd7eb41c74b7473e03865a656b263636486d3424cf2eb2d9290fbb1836cd202116dd5b98ec52d6337a8bbc46d09ba9cf8327319f8a476e4c81aceb19bae5b09ca66ce0a701b76d1be7c232bdcd4a6a030faf35e1cc3a60fbbf5ee2b484f6221def1ea048fe84834d212b6f7cc8c61f3e3567ac5556ce34087da095a411a4a01f670da20a6ea6e2c9a1f3d00906bad2afa35c5b9ac1d8f31cc16ac8734da7a1770fb997c4e837e7c492a6970efef0d4242758868513d9059f40c63cd07e25c9d72dcf6cb86396caff40e5888dd5d0b91976c9724c092699eadb12aa1b586655d0911e1e6d536abd0347c6b35203c87950062df778bc9e29c210e2c96c7a0337e4cce8ddf90c8ddd7af766f7fddd6200408143269a8f1404fd1c2cbe5480cbce425f869ca1fe215aa93d5100491baa9d06c33e0c060000f12cd7e089cc22b86ffaaaadca1979aa5d20ac5a3faff3daa206ae32356fe4d7649608729817464f80c29b4d9efa2a97f55b4443a7a36f4f559443c5bafd91427292e37bd1a879fb42ef21744277eee273d32a60afc753b50bf7ccd127fb5f5d0602b7be75d64c804dcb18a20d7bfeb33c6f414265442b1204d0914e0c737762bafd65600edbd5257858ff89721c0465b4a82087f9a67ba37c832070cb1e07c8e9d905d82fa08b1cb7aae00ca20b64a184d9ed23fbee8fca230478e0d5616d61ae6f83a492b61dfce67aa746f230d63d84bdc1671bd43e2910a2306d41abcb27246c62a2012d5d8c7f587da4ceb06a6bc335d4cf0ba5d1c4a2fb0bfe14e532602c1a37ea01e181dd46731ee74577b46ea9eb03fb66cb61d2c18dd7f3629d2a8d78e3c1d601977359441ff1e5b2469206b3b158f6d9c379cc7d53bfe096735960c44c6017087b528084bfd0db6ab16309efd9d2f59b4121300256c68561750b0bde806b62a8f2b027c83941032ceb41a380014e78a92a3434154b0de325d849993080bde5238155684d502b4f370d1a2d333c7d3691c3daec3ea90f5fd32df59dbfa7daf812185b80a9e9136ea386a341240e2e2884c191ce1433f35587888de2ee5dc73e504d6426a58cc09f26d1b5d4c384057cdb4631779907b9beed49776ad3a8b0750a6c7109c011154c72fba4fd205354ce5ae7a6e65f01e17153a2656c4b9255c9504adc47304b471c866a461bca9332a0eb510b6fe950e0f310de316872a4ffa39e83202ecc09970881a348d4bb8bf332b9dccc4b02549daf3448b33985f987871294ff58200989231180ff1d9afa1f92bb064349fc3f3466503608ca13b13056d47dac9a6e929ceb7127f4e5b0de8e3c2d7f5e65981c813be7621e65cbd96e2f92a2e2e3244014fdba6998c6d40d9af6b5c857ba11d0c76120b22682c54b8e66f2ee6dcf820c8f3faecc234f9e09ceac1ed30dc3b483d97cc36bd1f43ff04f9efc485096436f6ceb68200f461c80c7a27ef8db4d8db0313f76bdc7b5df91299f25a5cf41e84f5a56236a61f47f0d015bb421ef105c0827a57f83bd009f39a58264a765ed30ff27448be202bd438a3c79e0c8e47346513d258ded0d7801de65b9efacb0cf6cc98e8ba250631a1785a708e28a3accb0c9e12c6f0072a0e8884dd508b2947a301bae6f7d91e7023782644c64b64dd4f4f36a854bb95cb08926daae59b7a5b8bba3b02db80cdc9adba3849390d03d894925ff4fe01369e5b7362a4d4113f1bef1f0909600317440137f0dc174e8160036261cb2ee108ea9d1da942d4f2ee5bacbdb378f5758f8b6d61802ca6bcdf7dedda5ff4b7d832dcbbf7fb0c98aefc755a104c029fc89b6a8129f6be626be0f9f29e80aea24b04032f36d920df71f6c576e98e0de868cb554bcd6fe77cb60de375fe4029c63e34d5c6d132b0d25c002da17ce535a63f88e229a456559bf1c2101f4d46083360a929015fde82b4b68292e827dec88bb4fe4a2c436c87f297699572925de56da1e3bbf2470a6edd78705c2749b4498aa1eaed029d8650abf8fa4e740814cd79ee57acbf2a6ce40bcbfbfa6fb235ee0460e9cb7fffe85899991b5b5c1a4ec0b2cbf6ffa35ed264024be75c898fd422d3590c0ba710429b41cad29e5bd5863278e4a51d8ce140037639e4777bcefc0313c8aa784f2d79e83021f63e70fded8da7d4ab523d30c8ec4ce696c52b5dd4e5cb89dcfe52cb9f63a2dddd264a386fade6b6ec4d0ecbd2dd2cf6ebc209ce65cd603c9b324fc18d037667dc863f00c962be415da42f69bca6595b6270cb35d5f6d2ff41c8f595e9147767405151513ef2847d414e841c24aee31bcfd43954a750d490071aed38a0b7f2315ebe3f421a94185da3270ae8906e263fe9770d5a53fca9a219a840c7195d9e7d3ac8aefb30f569c3ec6fd28aaef3967c9de5dadd4fd1dea23392613dcb50cea0f5ae5abfc5b7d6bfb74b8a819e60e285c2310fd28bdac550e620b7381f2bfcce03735cf1c1ed530bb7439380976a5c06486ffc8dccd6ccd2483bbf2a125c9d10945f7e55f5a1681010c3abe853dabdb16339f63bbab79e3377f1be9f48a949ef447ca0f22b4ff8079f9a27f89d0f33fc902b7e3e7c23167115f4027bd8a831106b192d4e4267ddf4647db8ba9e79ba557167805ea7f6ff86091cb04a7845e536bb4b9df104ce5388ce85c6f9721fd302bc12a0d4e7bead1fc2e123154a406a6a1e670d6c945d33399aad58afef1a7bec75d5937f413e58d4aae1e44101aca236d48ae1413b61fa17e3558dbd6d187e019b5d92d9f8eb5127e2602380b5720344cc117a7c1f19a8293dc2a2eceada13033cdbce7e377209a2e0c3c9cc4ecc9abf4d21f8cbfd3c6753df9b8f71ccb6ced6d48405574730dcc083141dfa18ca664d9820126d287008218e6d2b7f1515dab7481218b4cfb8b896da81ed5ab7d0fb7e273af84458d44cf05929e7a3f2f688e18241baf7d751915225dd567363167b08a7dd48e57a77004b4aa115f61069348d33532e9273769e10b41e11d11b27d92d733d156a8cdee479bf0ec45056156a5d828d116ce35471a1b4dd506d2a627422b6d1f563b8826b9aaa8d222336b46a90d8b7380da94fd6308ad9373a347cfb54d0d42e40715040c1bb9d7c940c91f89316a09c12807d87f6fc74d5bdd5fca3e1bec5e4e0e927a4f34ca2c1fe9f1176d4a19856c57229af5a6b34b7dcaabeb0a4a0e76057615d970120669d01272754e1b8f5ace446523a3829440936827148a74fc265f2fc3bd48afc9320b0f7ddd040658e2ff54f29fb2665f046b366199ce041a09312817c99b8da39f99a52d2058d3343e4a64c979bf73e2d7b2d1c8d5d858911dd7615d244768e4e3bb992b746b49373832455b45fcb350e114aa6fa855fda670bf36561bd32d62ab97169d1cf766484c45d0851b871b75034f1725e6ce8ee3a53c2dc42ae744707ec46b47ac47bb65eba9e166fa5f565cfc1ffcb0e2c1f85e6f8e7670291cbd2876ce7e7a07d9744f03f0600c6e8849b0ec81646305b5570080550372088e77f2dfba40245281d78aa74ad5d3f081bd0b497aafc42116cea0509a2259209e291e2189476fdb35511024992547a209ac70964b38d913d3b6483f3f7094159017b722fd681731176b5ef1a97e149873bda7d73a1f1c34d1d92eef4ea0488d380e60d4ad0f9e4c0aeb471622986333e823c22e0767e4e24d956f473a8f7b90728a6c65d50a4a2b02e54076e617df23419e72de8289ffe5e647c091201b898a2ba801722e3d7926b33c9372fad09f55b47a279ceaa0a73ed37dfe4bfa340de288bb55b79dc42af9780db0917589bdf86e3c3034b4490a0f730ce00e2f610b781ba885369d46685c4d8d68c028288061ff2616f8b15e14e1438e61c85412c4451ee52a2a39a8cb689510c503757cff5a5561782c3ea1897cf289ebca216ac1a23885e519ee2b279f59ca5eb6f9be3ea0743fba64dc12a6b81b30ca67534a6c264a7534c3c2a40164ba2f575f8d9d859be4e17695ba0bf0e74332f65de493a37308013e2059d0e6b1100c30bdbcc5267c25f7bfe35a788985ab31dc9d753f86be6d0aa49f1f5be6a7151424f1ccd856f4fcf09ba0e737f73179a2564fb8474c199807217bba11d98e45097e6075e3981757439985f3e12e1d2b9b90f16e9c99448b08ccacea3cb903332bdf98c252fde7b7e56b6db5bc37461bb8363cc3601afe7c8ab42bfff4a7ec4cda7b5aae3887d13493ed6efee5594fa1fa8414f81cdd43c5078414fa904a5397748cbec3ac88a59942dded2033cfd3e537b4b20bcd436898ef9f2093ddcd95f99e2f0f75bcbe1a9cafb5826699c3e8f877b68e642c6fe034f1c5f6b036c066d71c55e26e6b997413e09f326edf03ab256604452d7d5c92445d2fa980012a78e831151348f2d72b18839006de0efabcb6076cd12c7cd28bee04b15aa128d4fc8a2a98cfc63026c20768ef53c002e9aa2634ab7d92bcf1ee89a7d698060072422a6d0d244b422345e265bed672aa8e83784dcf96f7703a6ba057993309b115e27253e6c9afb52acc54d9227bc7c2ec9acc4314edabdf62bd8282192fad340cdb4d5a5a93e597a6cefbf658305c27c4479e01eb58d6f0e0ec8f4684bd2e8d6511765c6592369243e34ae48089e4ea6b4f20895f2b375942421d7990578c91b5f7ae61552f78f01a0ff4369618eae5d4a223c8e0a80e21a3584b917ee2017d483a6300bec420cfb45f28ae15a3ec78a88eb2ff4cb92a7907e66f5b694afe08fd80fc5d484945e0894d4c03268b54e94c7820b82426f043c30ac06006c7c7d6292341a07fcbcda53275989191f6bbabbb23369ae42ff9ef3ef1207ac4eaec8f2744b636d391c74644eafa56cb9a707edc9775a20e427785b536c3c3cf6223fb95a422fb1a4fd16f38ae51b839674ff6ddf5c680f016e2e9f6aa843ce85e7c1afb10c79feaa0421ca121cf891b61cd8ea9d3bca33baaa401f34b0a235ff40ffacfa4103233ca9ca8d5187118d413d5678fdbd4c99f1cf42cb2610cbf2cb44c4234b0c19e950c4939465427d59ff65cf45cf35a3bccdbc366fa872d7d63601b904cd660e975e2c0507a2f1988be149b0e337431dd83a227b0e97ea8d02f035490f3fac198ee36159560d35d77d767f68352dcbfa2967770283c30d71768d9cbbf4717560fce14bdeb9e2eab74876d1dd5ffb3dd84b46fec3fb72dfe99805c1b94ecac751775d0422cb0f4296073b1fc947c32ded670fd898a1dc8ad4ee346aca90c393a71ce0b43c89b69c36e143cd9e7df7341736bd29f79dacedf9c15b9280ca6a83a989f782c903af423e7eb0c5e4c6df2ceb2f8f503dfb85f23f989def6046e0188b91b48c60ae03e4fef2c80818cf17b4465889267f5a7bbb9a2d830cc0cfdb1cff1c2af5a3e572eb3fa575cd83ec0d051c48f0560747969c081a79f01ab0255d5a06f400327feea0ef61c531ac4f871c72efd2c2fe0353e6226c4e58ac421bbbdf16ae420e561e1ce6a96b7b2e661c30d39e7cf5eb0c22800d48b87e40532e8a0f837bd753a5dc0624383ce838b4b674a37a01a9fc25e952cf09ce74895b663e14657eb342abb72f37e7b30efce916351a6fba5a4bc57f835d818c0a7618da6aa6bd61fef97e72ecae666eceb7845038d718c1ef92d2327de39d52474ddf39100275d17f713b834ccaa4afd045dd4a784edb7469023742cc114565729090443bc7aeff1b84a2951bca6bdd9843204228848bf8a9227b63c87d226dabe50451f3df8420601d2306b4907500253e4e450bd3aab44800bd3f0f5cf2f5128d56ca78c5e6ee1edcbd6aa17923481e810cb91ab72ad2760b9df2ce1f2aef822278acd3beeb261dbc9b0613931b86996bc1d47cd617c1f35f5c8ce0c8e82dd7ad1f09b2f25f08ce984a561ea347b0676c3122cbc257b511674b93b2eac7e9c5432b869666b5da1f9b7b87d1a21562f6079403a92cda25ca05d47e03b67d3e48b94add5645cb6558e4cffd15996458c089e22aaa833b4de2c8de3b6c8f3fac922be85cea062f760108b8cf62ff3bf64d43f41f893cdcaa1fc10ea9bafc7b989d5eff658853945fe526ab463f1a47c0c57ad6bead37dd808c01541f1cf3d1c93d34d2ec16bc41731bbd026295ef10e20c6bb0b603024757ccf1a0e417d022edccbd2efce8a1198d24759855d4c428a877f76d0b21eade7a80e622b459873b1262aa4932cde7b78a1792db05e34eaa070af55d95bc23d277bcb13a414ccfd82d9a1306406c46d6caddc2738ee2fd1f13482beb7f74736ca18a1d96b08356b996f0eae16cf75dcab37f70afbec00e5987966e99c8e41c859180823718f84b088aa789a40e27df792e81d9eb989a4c98402b767ac50d0d2aa163ecec0710c4a9a840255b15896592284e8cddd2eeab73c28d4f609d0a7b5670dd7eb4fc7ac4d975852a25831fdd2b13b7122056a029d8b1a7912dcc17792f61400cd0eedb001ed81fc1d0ed4e8d3d627de0bbc4c897e85965b1c5a1e92f561b5c10d6c34392c19ec2f94dfc1c237710f0d661ef5a42d928e6194abf52be5c0a6281e2da7b33f1f7e1688deebe54201a98eff35c95957d2e3dea82a03af74fddd928268220cc15f7fb2f751578f89a00f5df92c64430f8a4c17a8c0de4779506a67677808b543a1671b73557c8a8044849c8d09cd60be162ef0b25a783d0123d1800348d8e5c21b0ec9a6dacea4f3efb763fd9813ba44067d740406226b9affd151db6d6fdbe2d865d8a3aa4a3345126ec4d57cc9949f2542047d804e88cca064d55de7b0a4c693c7e218bde5f62c25b9f29a206d0055bf196ce4eab798523d9778fb4106d74c3d9edf7c392a286e62d1cc5416ec7bfe5a74e321244f870183fb234f11e603f194ad86b1008c49db1b79f832c78968660055275a51413dcc7c3ddb952a36a15b7de2ee9851f0009cf1645a43749732e2a3ce3f49b3382ead7331641008efa29cccb70af96c7d4e707ea4136143d76a91aa34cf2930ccd572a233645de44cf8db6a803582f87b0ce1eda32a8da622cc633334156bddf605abc696b81a61e343426f11b9f40f8f034510d784497faf93d730bcd4f0440f7624ea2db86c8e80a75d487353165473134a0b1a12c82fd4c3d92edd5b089954cf234ac58b29464a6d5f42d1c7fc9b7e872db77eca58d949fcf19bf2b2aad9b26ffe02a2574f7c57422930c84da791d59542a15cec8bd9f4ad9f60c29c98fe1aaa64304c91b17357a23ca2f325dc162cdc778c391e54c312889a381e3589f4b05212ee4f5997a4f9b751d08b55c52052851bebf0430f80e066c0f70ec886d905e3434b97beafba5b75248e9ac6c8796c1248fc93284f034e88baa50a1fbcfbd22a064384d18ad3b9452828ca4312a3c9770c8a73256d34f1b455b3a0c9e08b1973a6056940d030a966e928c7986d330c92c72a2021fc04317bbb16e54eb7f9fc3baf5cfd6a10d7e4cd207ea54b62640690d220775d816a631175fccbefd6c8ea3686da22a9840f9cb42978933cddf4d996f44a82c5aac4220fbd15c3e8fa1dcb12d1d937a7f554ed826ebb1fe40ebcdf95bb158a9a949984bd1dcc6944b92b7bcbfb2a8daa61a46df792b903475834a68f8dc73648f1b58f1e475db02169ea30ce0deadec97971ec33322b420db9ee00d03c453fd0250eb166cf40a892489f7dae8b1b054c9cb0775ef2792a4b0cfc3bd306edc75407fe94beda8ebb7121b5f182307853d7b70a55fdaf303909f14b7a38881f17e98a6a33cab52b8104ed15b839ed143edef9291a13601c189bfff964217ebfcd44d6b9a1400bfcff57da1bf0e86fac4697290d717fa7bef87bc07cec292126aac111405b1d2d2322bc9d931982ac6292dddf97838548d8ed823cde090ca672d2ef12750a38f5906e71a47afee3d6254ea9228e9bc247009ba199ce24bfc593804c6e9970350381772c9eb0629f8546d611bdb931cadecaa83f978fe0368f207f67bf72f13180f535840bb5c4c21025e44d60351d706ba225ea294f1c8bd5c1495bd2c1eaf57e54b299001a6423960572b7610f58f28cb058c721b8d883ea163f9d9889e92163ab5c80558322138454a993555c3f683bc4b4233f0373daab5f78df53f9e6976b3ec4e2b4a1fbfa0676f10f8f2f383866ed110770a696c55d35aedd74f41b374b46e79d418e09bdf4dc236c98333028758d6da2cde31f5ffb119cee8e85c7416535dab185bbe1530eb800a6c1524e9e9467e5f6968b12e47e046ff2dbcfcb96784ff7d5c9753f08196ae26ec7dd98786065352a93b9d56cdf3f5745cc7deebf8d63ee1cc500f2b195d921763e25bff96f6bf030e2cc04f70b4bf644e88f6eec3bf29cced6fb627e26f38bf635c270dbd999299560a77b029b742727099e917a350717d1e5fdf20b48feec9bd06ada5e50582d79732342172169eebf79892edc32aed4b35ae77f0fbe9c8328b5ed35e1582a677f491fc0a4217f915f4e481bbbfa2160795923c2689cc1dd8b9d171aa67b8fb12d82cea950993fd898c2677f443578ce75d23436e77f408208388d3e0caa1df99761daaf739f055a0fedeeb6474ee8f0f9cc373476e01e8ac83f33a1b43b8995c9278fe113a4c33ee2b2988357149869b95c6080ab1c3e021656c5bdebd0bcfa3ca843d61e03acdd1cbaaadbdaa407c429afc103eb9b057f74b43de94c08c0dd9f436cf3acc28db0e9240eb25ede69e86f680f14155c77a5f7be7e0d97b3f453f42f4b25b38ff1b7bdc488bda4d64be75ecd3e1408591b53ae17571930d114a3b3431f8c62021cebab99006ce64b5d3f9d3056d7990bf3e1c7cdc17ddfbb7542ca1a247f4d53a380d5bcf8a8b7bfe77b9c47af3d30c0d8a5ecded4ac232607fd44b5c574e57a62329434c7c199cad67886b9827c9d2bdd647c933f6c80ee24b51cf6678010f585c29c4c4f0aba9590768ed81929817069f3ef70dfc4b3eeb1da4e10c091ac96035899ee53327ed27dc17fadf0ecf271e2a0eb4aab0a583cfbdca2e5e02f3ff120231d3b54272bf840f3670954b1d7c97fd3ac8b75c2aa2aed7674e2c6bf4d7c29c92fa1f50993b27f1ef342b4e7e22c66467c43abcf2ff3b7afb9514e2a164e9e1d5b25f44c022ab714221b0edadb5b6edc7d5dd8176c6bb9babc9ff1af9102d3115f77838e55b87a8ca26c454ef5c36eca70422cef68bb8939cedde56204572f3a97107fb72b9ca4e260e8882238ee7f8fd0e54beb8cf8b9dd9b952f264a3a00e891ba490a3eed341e47035cd2f8c3b6c1051d5dc0fd31259cd7259db89763a70afbad7adb2de2c0505d1345ab4db6de7296e46a93899d04c4a281511662b3d8b9e11113de0afcc3f0bf0a1a612284ccc5dab651903184d5e239d3a2cd3ef02d3e8d15ddf424c47399cc75000c452aac35c2eff164de3b85a5459bfd4ebd00641cea3b5646a3adc62b0c58f0c00a7df36599221fc4cddbb71baa8eb489af27dd3e8d47e54d2f7e9cb532e1641b36b8fd5fb84e51bacb5dcb75c880bd876bab109e97f946a243f06aaf6c4c76cc54d4c12685d7b3971411ea544c4976bf607e86a623f7e144be4dedb4d1f392bb05c5ba650dfdd0dbbf54695e6c7d6fae8d36ffda7bdb9f45330125ac3432a736593f80a1c9c7dc54a0fc64a1ae3a21348d119d0b8b3ee6122e760ca76757f0b862704ff18a47481de305165a3053a5755e9fd753c29a6e7f160f7f1cd4f9a0fe818ed07c37956d55b8224f04933b9fc08adef808f07a6c2a8610e399593576d6dbb02e916797c4bca9a46d882322c4bd0156d0ae0516267fa97cf31b047606b2a351431f724c3df1dbf506ba837e8239c2f24315a940dfc59ee3c0a5a0fef1fdc2a6aada00c0981d13f03dec28e3e743f866596645cb2dbbc17d51bf6d7a4f5ae14b4f12e3b649751ff5cc9e08572c51d70faddeccb67132d02d35e70408a2e55f577d43063ef78366b04a8ff1944b02990df30c49923e72b1931f02d5ce55b6d6df0f14c3844f14e728f5c84284f60332955bd0b11e44de4810c958db31de538650a27f6a834c47a419fa84327f519871c9033b1e1ec6f2dbb9f31f8a38289a2c6601930ea182555d1d3b61aa585b1dbad1749fbd3992e5d4bcf5081816ad49401aaaf6387143baf8e528f1715e00f9166853826b1da9aea652e9f171ccbaba054089343e808a5daa7faa631a6d7b33eb2ed3c10f3c37be0b27470458a1ec6f31313b5c0fe87f2c3c8684e9229382e920eb116f60cc0cb1fa2993a815b21309f683cc80e0ffe27dd4f9b3f6d4969a57de8d68d3f5fd53a72f42c170e94b9c92d426cc2b8c3753ed8455f1569925352b6805ce85b2825a96c640f456c1420c48a744660c5ffcda131a2add19711590383711375ae0440af219961a6594e3829383c97a0eb20f5b38aa6c756ff88e999daafc4068bcf2c17a4cc5a3f6269dc54d5a2ce45d7a3c147d45a30edb17c788bd2214e6f42f7066059d0bbbc0039c674f57d48567d5c4c27497498c2769a61605d245a093f96e93c1c59beeb4ea6a70d46025c9f80b4448e38317164023e9638599a213231e374112fbdb33c466ff7770525d32ea6a193aea0f32149bf13c544ee5e62cb4bca9b7bfe8d0148905df15cc94577d75946c62c99a4cb47261c0b4a3d3555b890c18fc8b3b7cd47e7564b3e95dad5b1426e259f8d2a1c1ca79123225e8ff7642d2a917a9710779806e92aee40183d97e7581314487cf3e820737a3baec66e3ae7d022c94382ea3d2b33f9162fd135a86384458dcb1a83aeeab47b176f9fa32d985f9f1fa736005c244fcdb153046dc82a6ab47dfefb1fd76b5af7cab4317631bbd1779ad6724fbff39b478d8ad6141dde5fa74e253036ae44fa787fa49113bf083e728db0095355fe8be2d03df04192300e17db2cccace4066ffff302d10755238718ff4e904bafccd8ef705c79af57db2fbdf6c4e28f0e7eb697f81234a0f453c5262a4abe07845b3eb3b9a02da15fa28a8ce34a9605228841fcf4c3b312a1567b31fdcaa39e2dfc1f4ecb264350e06854f8db838d6afe7d36805f3027a9e436e8eb9b6d9f3229c5b8791a531d6dd75576668a2755f1e12b683c486caedf4b3c086fdaf33d079a92b95fec0806c581086064923a7847f05903aad1a338ffe8e616a2c5c76d8fc796763bdf306708e3dc5cba06395992b2e43495af893f3ecffba36d1b4eb09c987a06d0608f3e0344409d45ef10168d95654a98ab1512db9aa18db2cd0833831d0ef52934ebc556ae156695cbec00b0676b0f1e239348f4e58c71168389fad908896b95f38389e8702a18a409ce7711dd42694089ff3b1dd13c6797183489792e5bf02b88d866c89eba01a98ef7241f0f4f73b6e3b89acd854715811ad1ab7e098d20dfb3bd2d448f052cec3328f265faf19d6b497c74d4a8b673cd4bf0556239b0047087c4dd3c5ef296b944a5385efd0492476bb457e8e973cd33221bb8aafe5fe354ecf0b9966bc4940d0215f8985ce1da2409185a4778c5d2284bd7f954c051b3291ec0accad7df375822291ebac0f898f27898261b8adaceda237941da88f58ee92c7fb6340b9e04c24d192963b5fdbe8324a06afed86752c53dc6f39d84a6cbd97af15fb8313259b09eedae902b9c9b9c08a13c922054e5cfdf6755a6866b96c13f476bb9b99d3de4279993f4f6c1b16537f3558ba374910b852df8bb864738c308643d34d6b48d726ce4f7854e77218957033a00a559580b5d1f9e6f1c1a64ee3375b9f6ff32af00e6272bd7504723e621d1a40af12ae683ca607c110710306d75d888976edf452581d629c17a3858f4e3bddaff52941357e2e20758a8a39cff555209cfa4c197881ed8729b3355f0a6feaab39c1bc20870f0e6b54f872dcb53ae945b42e365936412b43d8641c4e9dd67687b83a06d13ddf2505a30cd0446ab31154ca6b331aa50a58b5b445171ea392a730153bbf981641bca0de0c92ffc27e033105d5ec8f0d994e44cc172457675e303726f489f156a53b3c53e6ca4d20d94b11157737f3744904356a79aef833c436dd24ea9a9dd5ab2e707d1cc18ed3f7976420c46e30cf5bd969d58203db2d991ca3abc42c38dfd094f6403a46310438da8b2d86f4bdc7534709a354002a0f626fe260efe51a1f559409e0bd36cc018241263e4477f9aae8110635a9b92281bf0ff78bdc8e3dd7f59b4af5fd9adfb5867d88d036e6ab2f62541a0e3b4c9868df07b062413ab06eff44710d65d42b60ad081dfa948e123de15ff315b73a3a0b3bcc0cb6a530bd3b7c90eeac5a98876ddaf4c5a207b75061d39f5ce23a664fd1bfdfd1dd982357aebaa3526e92c52b590a8d5ddaa725ae2ebeec6289a7b5328e3f2d276c79cd465d81d757b55f7a3e387330e8d2fdd599123852a5f2908008240ec2cb37123cadd28de53e89c410738c41b838c3f2fd899e7c1d3cbbfc41cc2a3d075dfc59bfabe3f5b394309e369a5bf00f3d2151fe9354a5d2e71e80ae7abf29812eb150f2a8fc33650caf1dd8e9deed534063e2774784d84e8954c9d1fb724d231dd438be87f40c738dd5ccf0e8100626e9e1a086942e1574d57881f93afb01fea64999f8e328a988b4a7b81e8de50c29ac96e4404fa016b6f3c0c98328dfeb5a8defce2494f0ee72bdb0d5ba1e55de660c965a32336e84823143df6bb0656deef289f6d394199276a0571edf5a782113ac54eafaacf4debc9a72287f2a0907765e28e5c9aa9267ff6f1dd691a17a65be84a6937f70a2944eb0cbd80673c2c7231ebd651045c3749a33c6b248bd4092e3df7abcf65cbe2b9a09f8779d2633954ac43eff1b5f5ce94f71a7b196d3de6cc2f01644fe602f9a2cfefc7eff9dc06b75da25064f161aba391d28f657e510bc643a1e950a0cf32cb332b06c12b3e5ac94a5becd968dd806c59a9f2cc965750863f8f6ab2a7f907f539ce73b4458a7bcc94722300bb4a051a83b93433b86136c73210f919c1c2a154aaa514ef4d15589467f4988effe95d8c61535424af12c417cd4ea36b363ae712236b357f9b33870c38ece4bd63c512d308d73c4d43474b5c04f85353bb865bcb62861ad48e7509b15295bec9d66403b8c02f6a01f8847b4c0b56a2c261d8300f63bdd843da713115ba9ead74c69af833475bb4b55c50def3976385689ef4d6e442ddf8825a60435e559cb382eb7b57f5e2a6aa84edcc9c317a91123f5d8e784101a6de2e7f07ffc46effa73e26d429df458c71ac8348383a82380e0126dc4e940783ea4843be7516823032f46aaa28893f58c90f5694b114b7f118ad501e6f3d84daf4b4b58444365ba46674bea5b5bc3f05bfb3894d751cdd4eb2064a07ba1195fd10b91175889884060d964265b8f8a8f38b42527745814cad1e14e837e1d841037d84670faac705d37eb0521d25eff269548ba20843c8171d7ba1ce410bce461843a4d4216ae171f9de21b00b8a089d06c8ff6c4f2c468296efbce3e17a26af0d588f4c4f7116466324cabe9461ddf08d2235744bdfa9c6f7fc3ad464c2823f30f21cf176012c98771290d11b0fbd94bdae66ab6231702d855930a867787db0b26a07fb7d4efe14f6c3dc86e85c2bee0fb8f12611386e73e5ab7a67661721b9343b71323e72f84ec3dd1a35ab095d5499cbd89c76304b80d4b938cecaad71e930905df79ae59d5c80d83d677274be1269434275e34d036d064d4b116d48e1545b7834dafee602c707113a6923be6c3b185bf76ac7d965daf425dcb2b88dd80c3bf042c4c33c50c8297988e4c7c7ba497077e7bba339949790d1d666e7d3356b88e837b0475045da41d3a68c424daf9453dea3e9e2a18a98111c67070419c72c1aeda6f2afb4b3947f5c95db3cfc869151d7e209b876903c5f288399a7a7d45b6b4189129dca00dcfcaa5ade5fcf2ce69010fea6679ec8e4cae86161a2df930a041fbb315158a55ffb4d7e112a26c54bf92e74309c52a3da16d3fc06038eb2dd4e417c050b9caf68e36f8e4df4092841c7a368fba7506b86032f93ca2d7cd066a511f15e979441f8dd529ac3f7d05e8df33c1ed3d6a2baf5dc4b29c9f561044f9d95a2435bfa10362402ba0967d8279218698219319f01b2c23e0551ea325451e0b8fb9558a9e62e5efb8437ec5e756ebfd2a177522203e7a38834464ad33f0519abcb4def0a1fe3aae498121ea1eef03eca2e1e367f57d9292802974f9d3479bed1c7405d642fa52b9d154bbe396e5a96f0fe951a17e9ac0a2985c0c4c3189dc83c087b3ecd19c82c1720c8d26f83f0edb88c20df0e797b7eb71263168bc47c97a4892790f7f99d45746404ec8cef5fa7a176a87c211abbd01bc5e65286854a97b6aa08f8e07cc609cd8d7a2a8e2aef2779fe417c21b5f447c7fe2fca819b396bddb08052fb63cd25e7cc21d582de80c69d893b8d5584caddc8df633f89ba28a9c0422ac958041901de56fa92b3696687eb24be9c7e974e8195cfbcde838c1c706fed00f4edc8283f6be5a9993d5e0290f5fafd100052a9dd0cf96e69342c8a6388a219c70aae23ba0d35286325043b7c3cdffa0955ed0fdf08ce9c4908ac71d5b833eb4ec1c7b6d0c6887bbc04d5bcff4dc8d0c9b7f30a70937f5b80049048299cd9267d0fb843218723853f60010d7d1d5198a6a2c30c291384c79f4b51b4b95bb12088473b5f0cadcfdd8960e96b7c7036d7279c1258ec5c1729432cdc14cb6e3ac89e609e9f982859c2c223a4872cedda8031926736a89db928b76310df5481d830f38f42bb91f11210421c7dfe5634c3865ee29e7eb97cad13c44443c7abd755aa5dc81df7fc7d4f516af972b172731bf9ec0f666ba8ac7830ccbebebb567c5b691a8539e53cd0ead90768b7e6bd0631b7dd11c3c1395d6823b0d53caf9824fabf639233737e85bff3c68f313c8a16f6af29168c470ea709632bf76f3379ff28e6ea5cbc484906301b9393fc69249681b22e91ee894a16b1bc9abe7be355923d5271af1c764d9ca24bf182e6d401ae8bceb572e7f300eff5e85e24799e465d73a104acaa72c8b9fe5ba71af1f01d66f4443564cc3458a332304dcaf691de406c109f3c556b1b30306b426bd573b1583c083006c3f6a738051fe01271141486ab832e2d1ee16c6cab5c4efc7b57ad500acdd43c4ae50506d34a1af5e04f59f81920449f9b976f12e464504b83aca3faa9aa3ebeae03fd4b42264d0b2cbc2fb98273ee8d76d3a876d3a5d695bf3c083a864bf93e955369a2bee5352fb069c053162d80a6ece8cf8a75db2eb6b6fdf247b3adaacb75cbb11ef5732212be1b431ee86545d14f1a21c84c18967a2253ce7b687304191a9dda615b7610a41a333e267279696384c6bd84dd91f34672219b817cc35ed524cc2973a761f8c87d68e9bb0f6e8f1986e773ea317d700149b0b4ccf0b99e5186145869549eb6cf13573d3080eddea8e1e0867655fb7e42fd5c3e4965684a290821886921bd445afdd6798068cd87ea389e5383da152281181da5a9a066ecebc6117e7092bb34ebd0272d79d027fe63bf01eadd55cb887cdbd0de300df3282cb052d1af6c58a01815eb0552a4037134c1a2f5d2e02b4e74b665518539a326c308c212063d78fe78c7eef9e2338d3d3e1bdc8f6f9785f0d8d1c88beb57a42c89e726213ed19990bad8c78b5ab3de60b9bf2ad5eb1ca151fe87a93a43bc8b983eb7f7254fbe5a5afaac3c39ccba582a3a33dc5756140e5202e50b034464b78de2ba70f4cbd90bd55b9b7f5c05c68ab09d0f0dcaa0a87fd98930ab2cc36a3e003f82fac40dbf55d11674390ad6b7abca3b83f7781f0539de2e5c2c463e9371fd0377e0866b4eed38adf563b66250a29034ce917366dc893d7a95202d82c4eb5366555742fc2858a2be54f4a922b99da3adc87c7630e25a770cbad723098832fdd7abd344f837c1e8fbb95593e6ff3dc1595942f7a451ca9e28dd02df958be6ea1a5cb011ca23dd3911c1b3bba1934c63b3ffe3e8e366d8112dc426b5a4218419a122255145dede4bf9fd14abb7c7046ee94cb91337e123caa56bde5987c0b30ae7068d3747197cad107145453f54ec2e9b669e1aaa88b6588c80edce62812a0938e9fc1e39cc01626c1591a903d73b2e2786728713a4e1def9e62275d2a31ad815ff294d8bb2783b6b574e5f0a4fd7947e79e678ca822a9607330b67a60834b04f4fa01f43cad9a4359738990da1d62825229bcb5df346b9da3173870eb734acae34491825d752cee3aa9a99a8149e2244f68fd8a2cc29e0e060baed8658090700df4184d8e19a6d4e584981ebd6865c7c7ee1225b671f211273f59905bb7dcd2fd201b79fb2568422de6d13ab75179f72d9d78e8121fa88a6cfe09a3c517de51866d113e55a8ddeac6d20382866cc0be73745fc08da4ebc0c0fa30f3fb1e38ca946905feaac2c3bf6a9d2479a8170e8865f345e7778c1d317825faf7a15ddb1fdf2cb145dbf9d50352a8a69be82054d8e2ae7a9516461c54aab98c0c2dad6c61a3d26b46f6d691f50feea8dcd8a3c76bd052537be0a16eddfc062aa1c0400f40ad00b4b5dd7ec44222512d1219d7ebe1b73d96b1c5e1b86ab2c668919b759c82fa5baaae9df1d408214404d6322857f808902cd91528e27400eb272cbbf57ccc68c980986ac5fda8b3353a84b66825ee071efceb5610996ccb85e4ed0091198c4a9d9083f2a67268a5f12e6ee19dac4ebe7cefe9608517c023000747f28004f5df476587e872fc7f7694749ffcf6987a1bf8d5f4d4710ddf5b2e87202d153a3cbb77473f7b7fe707094a94db18061fe165d05142f24a54f4d2c3bb0045fcfc22914792eccf279d61a1b9804bc08ac0fdd3b7ab08528fd594bc0cdc4b04f3bcf797db2121331ca7306a9a45e71a8e7ed17676acd53e081793145dcc4e5c565c44d3a0ebf6eb4d0e934dfed2b1183ee8d9502acb5535d15ad3dc78adbe906b3edd8e6bec9527e6bdb8ad149dd4822ef14edc2db49d9b41e920b0338e462fc3d4d97f212dce7d7c97eb089405049f114c1f7701b73aa7fa66672ec9feb08b5889621219b023ec9d054fe83d62ffbbfc00ec26b20bf325b83821129cec259e4bc9e360aa16ba1a48fb8ee2f27b4a142511c6a2492ffaf6896199d94e00d905f7c647d9aed0d737bc4383173cfcaaa917b8e3ea0b80617cc1759a5bc9978439f4111058fdff1dba570ed682628f282a83377d7f97adb7830f3310264c3fa6243509612fed1160f3c7d3bd396505102e72401d1ddadfea141346246026156ad8d35c75dcdd22e93a16fb8900309d76f93bae1450db29b8630838f9c41b23967e3d8137a3aa9aa3af62d200e215d692654b8d325e062becf33b184397f05afd14f1c44c9522cd005a2d38e179a1e709fb5629c0abd54e8860255e41e4f5ac4ce000dd7007be9d427d19570748a2f4405a8375d3ca4639f6e5a77e241f9d39435c7a3e7fceb1a37cdf2b7d986019d4d77ff36342ca691cf0f7e4fd749f5fb1d929b15b9552eeece0e3790384d8589dad8f4ba6cca68351ae5b10fbd0274d48a7015b44cefa31a52b2189c93518de7f85aa2e0c2c3a5786c56bdc1ea4fd7badedef55da38400c843f6d0a4c5850704ddf089807bdfa92677686f339ee3351a2a839b7f8c02cac48aacdff369c8d3e09e850eb7526ed6cae11c18f32640daedb27f8ea32460de0c285486976ad2455f5819f8fc82f8231f53810d5cc48fc213bb61f9926585eb9fc7b74eb76299a73aeee2f5cf661f98caa85428b388b0226fce8229066abaf5a725d481f846c7b4d20d3313eb76f5d36ff8fa4653d369e0dac29710e5460cd4ef816eaff205c41fc6291c470fa7e5860b3432c7e9332116ecd3a3c5179c0eb3a99bd02bb412f20a5d7fd2e95b63a1f6a28b9a11c3c88c9384842902e73e639185ef948c560b2b8fc36e4e3637b0727e42e6ae0d276ad15935303ea5ec9f7bc317324b2da3ed3d3b14b0facdc62ebe0a4c0c3ba9c53433207176182f94ce19708f4002acc78b2c8e322f1f33f807779c155db6543345ffd28ee9cc482b3c3114bd01726e1a332a7c7598484f1900c5cbd7292b8475b69d0d9cab2f3982a0e9fd68f1941aefb6e9ee21e023ee0035233fec0f7c339f35cba4ffe23c701ca2b0d1f94ffe1a7b519d42b54e2440c748cc365cece95e7dbcd11eec30fd00f12379066b301f1dca0c27c7ffdbd1590efb5e02bf42b68553453836a293961ebb5a816993def998c2a55c420fe3ccb1da72448968319f2ea889c959835e1da5da0b3b98bb5778403a1bee6de9786ba4fbba87c4e74cbb63211e022bf431c493c4973b8884cfb7911a5b727216f053f303337c40d5fcec2f717dee020f1d3d8a03b26bff1d7b204a95bf5974fb529f42d2f6c6a0f133be2452d4416926537950c8e8081acd1c0eef684e0a0605dfdd98a97e1d19949df6d893a0f69f171f784f0a5e6dc9c209234635ec35b1a1cacee2d9f951f4689aa76337751a166dfe80163854fc4e42a41cdadff58e730ce0bb6ff825140f80a6bae29b757ef4500ef8d6777004c21784257c08f25b3be7b63075a8a4235dab0248f8ba59e6954f34f7e577d4e2905ec72ebc8d4c0f6ea596348bf3118f612dbb1c48750df807eaacf93ecf7134f89745cf74214ef465c64b452d325d01b7b765e0fcee3c9e8cf8e93200ee386d8d119f843eedc136eddf79103c84260d8cb9303c41fc5fc81cddea9ceb9d05bfb89b62f7f946fb06c57834507bd922dc21fe1d3ec89d1673e0857865e6126bd43390c31048752d6023b3e83e138ac8a64b9b82f4478de8abb83fef247b8bc1858e289a451284470330c7e1cd0f7fc6def62f26e7f6d9b9d3b658803459811759ad24a8770329c68c874df228e1ea07059d729ba4139586bba192158dd169e84f47c15b330ab82d28ba590c19dc9146bad40fac135e8e3757736540d35a06bb3f69fe8addd9271e48cd64d286b7a26db7bfd8f1999d20a2aadb11df970e4509b5f235e199692633f6b9076bb5101f4f019841f771190e0545bc8361602ab1132a1402f94f733d22c2ea8521cde7d36dd92c3079bc206d9417ac04d8bc9273822dd9735c3af706c913c2279df41fe2dda35e1aa4f181a4e6b376be358d4ae3f5ee9c99e5d7b9711da81465b98600d77d38a374665813785407980d719afea5e8898c5539edbf15324da9df48eab8540adc857032132e259e78c6a36bd37b6085512c845681d498c085be2d4d30d54ace6b210bc922308f67e5657accd034f75152d67273650923ec9884746de4ccbef11ca86be878f97b5d5d119535bebe5ed23833a6a3e52fe32db79fd2b56a7624a98ee191f7d56fe015a117947f6a54fc84cec4f0ffb45da39d49a89ae9dc8d46c7d4a65409b6fb3cfd5afc16e50b5396da485dd94a05706d0835ab5df29834bf738e62b0d0020b0ae3c0f4ee4738bfd40bb8a4514bff863f87d6aac535996c0008139a6560998e34f7cc6b21faacbd51eefd97bc577e82d087c31840dc3ea0ec543d61e7cff37baa4a8580bab4c4173a2bd70345cb068c6479e35e78526d1affd263e1991f704af724d9856fa6e5bb7d79ab0d845f6c8eb18f4d59a28fb58b047f9ad960f6be79f0c0738111c4c43c90bd0bad77a482b7d34d71da94ead6876365711a7e12fe08724284aecfc4164fb930ff2ec9107ffc51cb7425b4870a06f51d0109c087e3fd2af7e2fb49742a50f5f182b06364699232e55f72aca965e56cba3c21002528e179342c8a7344f3bb65a2e9a65a5714761fcd9f70fc6e1e6352e92e6ef19a10425964613345493eb351ef1a5920cf9de59aa8aabd4fc6a5a4884ffe123f3e8e2f5c1361004008277eb62b0d620c1463e443320f6fa9a35832675a53c3fa7ef1bfba110fafbfc56406685b353432c1aab92a8f088e5ec00177620c004b5b6f918a6ef955331d3ab45ac15114908768036f35cac297e06f844344869807cbf31c2e5fab4333a1d8742be5c5790e5b257b5794a7d8fb5753d04cf44e0169467683cb9e95628a46128c4f8e7e909b1a97618246c2379d0ef6aca9d09bd6770a378488b6d419c54c3ec44270f748f569fe3a47ae258458aa9c0357961bf6499394fc0c03824ea89a1228a0272242318976e8c335d5487737d10cb4d905638eeae4fe0521c1b8a9f0d54eacba24e2360b85ce5403f4be3b03762e070f71320846ba94a5695e5f74ebb528cda937eb40dc79f01ebe7eb959466966f622312c0bf6acd01f7f107565d6ea9d0b90057b5d98598c8662c94f799f03d50da3c05202a4047d2fe9ae62114e933e96532e0df3314cc0b9263335b85dfb593e76f692eae0da458fc1ef21bdb2715440e6cfcb38e8c927266fc248279b763d5c258a72d60391b683707e2ce56af5e2fe953633b98d002c00d39acb4927568e9fb3a8b26958b3c34e797d2bb7f539856aed16d0d41e2bf8bd307fd99941033623071c825f9da3e3ba56c54395cde5a44424f3a93da8d59f99d2d13202244ac168e1c60804d3a4e995677253971a1338ec1f8ebd7d7d470a14a3c423655d0b85d36777ccbb5922f02eeb93b50735ac0fea038ec56ebf8da37071ab5817fccd142c3c52ad78604ca0dc0d0e29e3f7e5c26752b071c032e0a83446a2bb60887cf81f2558fe46a3630e770501485ee3c16fb19c311778665a23abc7f90bfcced62dbb46c88cc3794e33dd3d47955f0fc2dbbbc34ad76c2a434966ae1bbc9e7b6249f5ea603f9f3551c56f95dc8500ee38fb9ac8e532c8555c0bb649d9c66983e4f926dac05421d103d391a9401410dede88092dec048bddf40833145699755fad4889436b2ea2edde0c2d33265c928d9722e6e3d0e60b3bb702385800e350174230be3530040f22fa1a317301753c2c9153b3d137156d226e2964e449197a1b2c0a4aa7fbd16b99d5b50caf4742f96d270f16dddc042e8939531ad012c1e7eff9e3150f4d504b01497a35bd7138675d3463598f1cfa9dfced360250f81b81a6ba02ea8cd9cd58c8f199a4a113265afeb893ea44c01f5e48984a869af9aba4297ebbfaa11a4fd0acba9a573a9be857c00765dcedefcbe86c5fc756dc241ca056a44e5979cb6e069b5651cffb87941ac1da14655e6bdc08e63ea2e43c3e813be804a380c09618dedbc82390bd2d0110dfff655e2f6d555c4153fee9f292912c313a95c90f775d5293546aa49654d8dd9b842dc62ed9b8d904b3bade686a67a1a6980ef7e28b4fef8e6d7619ca4742d8ce8b033f6098dd46e50d438471c79dba3a9d3eab216509586484607ec325078a2737158f8d4469be4c8cb75c8c6b1b0b87dc20f03707c3c2dfc73e6a23838633804e98216785703231a9d5303a4eac1ec7bcf0b0be291d77c235d0f5dbb23645008f0c8234c12ce53a00c98861fa9defa2844b3cb4729953d194f83d5d4575e70ecc49e4140328ee3a4a3036c383ef6ec98888c844b08c4a3332a3e3d1905273154c559ecf38bab9f10130cb7e064a015b823eec2253b6e01f7cc38b6b54aaf8110b1ca9342a3586256b611fa7e2e2ff2358042470ab0eafddd33360bfc84bb8f9cc7a250dcca6e908f6c9cde6259d36a7e43a5135aa4be51031248d32af2babeb2970d29bd0ab48f138ccb434d53b65f88214376b2912c35970a3c576329bfb32feef98ad9766615dfa307798083bc3666c1efd92fcc71f43678fbc16aa468619e892ff39e050c14b05fcfefe0af276f73047afde4b81e38017e1ab12934f608abd47b793dd484de1c1bdf31ef0f41db0d4bcbfe9fb918b7e9bdbd08c4f2d4e842340122992ecbd5fcc77466d524847b15b04800124e2ab3da61dec857f204b5cb18c85d491101c6c04f8aa212bdefa20cf5baafdd4426784b0f6c3a904ed07d049402bbd8de14aa5cec2154bf6fe2de504cfd9a8b2a6fa5b2daa9f2b033f63e8937d41c74b0a7a8a824244f494b64d2eb4660eb9215030df5f7cceb27197f6abbd84ab94eb09b4b13ef734589f18bcd1a0802c580cbdeb58ac7d1f570add8ba1f2b26e159bc0544e9dcfaa2619344d74e7ae7c3c7f56a1b27e0a69adaeb6a122306834a81c1b890703a8add8b9daca84b4732a51a1b0dc3220df05e490a4e97d61f3cbcac0afd71e822b06153bf46e06f0cdc5eec775b98b16704fefb365cce9edf7a65ab51195e68bf6c7245ff26c2ba8d2c3a3a9ed6a39e6f028c69497e346223b5a65cc997088eae8c177a11e66bf447efa8cf16fb430521477ae0ea67db2206b23891c66e61bbd090c39c3e6f661cd7f283eb5f771dd721aa399cc111ce93f3c5ce51c5ccc0c703d83f3a5012891ccff6d3a8f7b10713e321b91d9cbf878042d0a9b1e0bc9d1eb5245462642fe83994bccfc5fa410815c8dce3222e57ac41d5c52dd4567d9f2739a36a9e831ebd412ddae90f7fa88f55ec6b33df918c2d4101fff916477ca5ff04d7b414a1a59fc136e5eba29aba247ba62432ef1c922fc7a73fd81583ac2169b8f02c6e7f5239b2fa68daf0e891c10174bfaea9ce0a14816f8e019cf3ab71a4ca9f8736ce11b957878d05f721bc6e5d60dd980099c7ac6e9d55eba9082f5b9dd8350139b0685fb63761d4db40c068ce6a0e7ef02cc9a924fe5d198b5e09c246303430bc3a89ac70d3452f4998957713721ab07761d25bdba65b62f66c020532b12cb8613ee07656a59aec5d5c3c57d7abfb4538119f1fb66d2303f0920c73ccaa926a97e3d6b0c2f2356ad44047231f6a211180738092d5cb9855d01932e5ea21659d21e8ddced7ae5d12b24771513920cd95dd2ee2ba96ffda0175c9ac58fa807abf34fc9632b8b998dfec222766e716da50fa1f64b662d978ea1140b4e2c5cb925f4ee907ba3039f58586e47f362b7751126a5170eead2bb0117ccaa62872db0192571df968b96a0e7a99dbdff414e593fe44eaf500cc64cd04b19a6ecb3cc0398c6c5e198da14fb52fa9ec59d3dcca9532472c99e893195752cd205ac9a1a32fa9b331f5a83311d96cf4522e966cf2df8b31817bd65b1a68daef0d2b560b6cd5a90a453287f811512a75e468ffc6a0fd9c09345211e39195c51f52aef1d6121186b11d544a882eb0afee8d25209809429559e3876ac9d8d462ee92096e3b10e5594ff216164b36f27ea59a287521b551ce4a2721b596d15579961e9b912d4037ae94243281f05e6f54169239796328d6be67586a25dff8dbc51277abc024ae1b1a175ffb694334d64552bd4811b5bb8d48617c65257e50f48426378d6f7ed0d6a42d87a1cecca0c48367944558d531f985e4e82a58928cff0d1720a9469abc4d8a38bc2dea1e682d990e924ba2c7b60fc412d17caf0fc2b4fc4c5e45499aadc720557ee7542f3413414dc8d694d9045c81cd6b12424d43e23aa67b3cb78e8e972326cf8cdf4fccdd86a59d8af24506acbde0b34c908faddcee116d47fe0749959b6db26c7d4545029c3c918efe7d150557865da035425f6d6270b2f4e16d1996921abe6b81d9707f0e7c3891e3bb781bbe63352d3dda51265b7cddee6a32835295dbf44e8245c31d9e876fb45ef8b3fd6506dbc69c31a1dc9fac4414a7d5e00e5100dc515241ecaf35270aa0311ef2584332fb3ad59daaff5cb5502537728a72c16c134edd31dc734f9c0b608475fc6269ea9c7baef75d1ff44bc9c2d0eb3ea50fd523897d64f5df34cc2d29b80c4f5217f85165d610393a020feebd67b875de9a1b3c22bf29c7f6c46fea615f410075d0018819a7916d6b7aa9851a21eae4453cf0957351bfffd40ddfbd6646d93a0c9f3f4d128259472c640cc1db92f474b2bf5aef2364f4596f210f28889ecd432d44fb293f074c90f7362a7f898c91363d5eb5dc1233f88d66a81a3d01a941b59f6bbeea8917070470952332e8c3ea941f9c8c549e4c999e87697e463c1e7ec94252dedc4dfb88c14f44464ea3abf486702c4f294d646f93c443d8e8dbb5a29e7609257bc60fa49234924afa31a5195819e2a3fef4aa01693ea26df69592e9bc22891fa45ce2f46523bdd662df714a2494165be45043eee0bdfaa8d1582a012b502528c2b97b4f198a741432d70dd12b2a10b54cfbcbf47cb7e2a0c9f2f6a69edf65cd01a6027ef918978b3f97b1549573b09e9a4a087212b8a0ac237ee8d07761386aa3f7e1c9d1b85fedd38ddf6d6a8cdd17028d01413aca53b3b596176c394e9e9f28f7ba033dc5f3670f2b210b330daa5b09ee12db09cd7529050bc6437420dfa1c3a978a1ffa83899f28eb1de6b129e7fa2b5bdb36e90e3289e8492fe613989903f8449f85047e18fe76cb2bad95467d50783b3212a498403cb9e74fc945a8496c1fa98217db82fb04a86a104a43004a9a9b72eefb9eaa332cfa874222c9de65132a217ba45fe61276ac3231fc8be9adec9663ddc6dbdd662692ae33a95fdf705317b90310dfa467f7e16599db49da1c078c69181cb3abc46386f7fe72d3d470b979b52e986ada1b8a20946090ad6cc281184f0fb54ef63eaed88e7d284de95b183b0bd895cd49ebbe982961207c7f365bb6d662dc7b82d78c5ab52469a3d194ed21e6a72067d93bca26df3e4dabb741d8c7328f3fea7638b8f943f4723f407728eb24e540f213bed96044bd3c60fab1e7008d665ba2dfdc59901fb569dc70f4a65bd9179932a59d4d513e666551f33e7c34835b0dde2dc9d751ca87d7f79d3ff904ca7bb18ee241b77f8380f9f1927e8e28a59b1375b5d32e83d3c24043898a3e99f3424fdc409ebfa51f564a9a8ae9b8f7f6f985be2d7d1d4c6021e5c7f9d12c9202a88106d812572ff2cadd15d2ef9fb371a9911f3259a114ab4108b735ba959fd9d04ec0e9dcd06f2f43309d251d986f80c7017fc506891083735b128c7bfac910812a2a5517cc47dfd95c46824d3c9786b65e7ccab81c51c7d66271cede0076709ca02b224b0cd25ce72565acf1e5785748ae98884e1ff3efc9ef29d049db7d7979dd45fa8fa38fd6d71728aa633938bbb81e762cfca9c583a80a0becdbf565dd03feceab3c1076d151c0fd484b38f1ef7726f34583a414a1d9e5aa7e9a7a4a03af51d9a8273034a5ac33f295128cb023c5e22c49fbdb177b2eb40168ad7e838538f88487772bfdfdb65a42636afa09fc18bf630f2afae5d7907cac8eabea25b23a851d8103b92a59cdc2d7cbde35821460af54536cdfb08d0145bc5bf76f770c8f9330f6435e128c40ea3ca67b7cb5750587d8362e217f0de72e673b2b1d24cb8072bde6d28c7b3e0c43df1481b62022cd3682bbf3ae8cd6ab5e4a1f96638459cf56b9787cbf3e6bdd6521f92707b78f7efb834bf1dffa00adc82cfcc79f8ad480b96677dff8b7e1682fd57b7601fa235fc75a32346b7eb3783d5c4b2e77ff9084ce69cf9d45e1c611c2328624f31ebd7c709e205b0c48ae5c4fcf8bc09c8c92253d17151d241c11e0a5464890f7e72cc86ddca8ded67ac144eb2fbbbcceb5164d8435fdd6f3ea0cc7801eb5c2c43bb6ff2c92c4e9792153e9bed3e0731f480995b44ce139ce1dd93b21b10484643392694b334fc2f6b9dc4dc6708526dbf78f2a6aab41196b40e91bd59b2f804b496e5e3ba789c18b1d6c8f9a0d36f19cdd7e80307b3daef26886e34654777b8091e9a320d197dcd5c023035c4604c96443e2d1b9991d28dfe14a345b5bdf96c5661a97ed8301bd6a06b7a451800488c0ba7774946fcacc4f8ba6abc852aca4f5c407270bbc33696da4f1d4970fd0095ac532fb47a852a96f3a5d096494eb8c079d2f9f1517fc7cdfeb2f6878a304587c71b928048367d2d1cf06a65a0febc169cb0142784911f2b016e4044687c2e6612ce6b14b6ee134e5378d39d5bcbfc4a7fd63b3f1c08b78d09f14d2d4662fe15db448d044c438f6e10ab2f1bcf2bdb98bc02c334bba655fbe0ed975ea4ef3853285a1a499c80a65d20b88d89c38010d2e24a9a7cccfff0c648ee0633f93bd9326516969127c9b799958f78ad907eb26a5df1c78376d9e07321dec7beb1cbdc5ab194975537550e618b73c3fb90d9c3047a2383752a5e98dc62252f857652860a842a20d69b133b8d80d641bf61a7ee8af4ca71d4f9c6dbf9ebd7cac100bb8ccb58b04090b3a7387d2c0d4dbd4e9b986fc1f845497191b55942967930e7f2947e632b741c292e037425dc4c9f948beb1ef8de10fc5dac5e9293624ae55c2bd99e3a435d8591973499eb9bf017606c082ef384279d6f0a4d2e7e15a32008db9e97806ad4546e9c4b81971240ac72b369a0fdf206ae3c7d5874bd6c2081181e693d993823eec5c926f516ca8b9c2b85b44995f68f6df78d79c0baeaa9ba73c1119374aca64f1fa3f4507fbd26da910aeadc3c6f9c635ac0e49b2a573f56e388b1a7890d0ca0079518f0cdd7e91d8b972278e4f2a443ea34480d094132f6260a966229c9345ad80f341be7a5b73d7e52f7cee974190e7f5239b4bd4942e403e4515ca1f458f5b0e71a0b4776d6cb8742f54c5d7fd510e31bc8f870493b5485e3bb49768cc395e95c07d88bc8b5608cc02aa4ac70d4f56c902ba6f7cc2bf1c50ed83b7704471ad8ff30cd00ee252c6e6fb4ee40596d68bc55034a0886631dc46c0c3c3947a8ee4c2c741b55070e01d79b07f983eb1fbd71adfbf3188d9d5dae49d0e7c8a73796f4f18c1c78b8942dddf7d888efbea9f51f4513dea6209ae863071c75befe3db11926a61ecfc5637e2d8027a4f16c24db50629b5d3caf78e5909ad95e145b72332fb613b8c7151fef6aea1edb8f62ee34da050f07b393a10f0b4c6f199808c559242494a6568cbaed99801dad35e170c585c92a05e9f7aca9f45b6c13e4a35af60c98f9c9e9267de67888e770156d88c6a401f193c4af5e526ad79057e12381aca8f451402849c97288cf63430e2c35cad910a975e9dfdf84e4791933987516e78dea2b77d9b36a0ae32adbb0aa29c90e9decd1910d577369d8983e5518aef83a6a780914e6fd50f8d146a0453071c15bc93c4cbc2345dec694e58f44de4b216b4aedc2177526c36d8c6a87bdbe46f3975e8adfaadad3d52f9e21d2572ecf37763b85a5e63dbc3d26cfd2636d03fb7096f292ea0e141b9a76f996345181f3c112b61bf42dcadf6987791673542d88779e41f4f7a122605a3ba20bf975a23cbb644ba75f1ac2cf508f77533bc26a9685e93ddfcb3a0ea6c2fca4d4bf0631114ca64790a649b210295316114b33cb4573ab34b841d9bc2cc7bb25224e1f6e23c2c435ab1ab96dc35185a17da1c8aca45d60aa51df5c05515599199eaf6fdd79f00604cbfc13cc5fb9cdccf189b63a696ac2e725d3fc468cde8509a430537414a3fae2a2fe819dc93730d24a4023098a32332b6c2af4e0d8f9ba10b57834b9381170e061f9a4333909834531b005a3b389855b92c218bf9877fc5c055f8e7dc3b22c17e510c31f85a6b2f6d5acc212516387b465e9e351df8de065fed77a4baa1644244ab3df342acb4222206f1404372ac6c3f80fa7388b62ef4d6d52ed0ab93222c96b7972e8117fdf68a051d92ac74943b239ff9f83eac4cbb3645ff713b2281158c241f78fd7e33993b03092ffab9cf46812c0934a0580e3efc7a2d10c917f991fd4334f8b599a33955ef6bb6dbd298ae5a79888fa34a1fba86361c11dd6b99bc1e8ae3746f723c031c7bffab7dc36f412340a1ff45a92f1ea93e19c7dccd19f94815c625b4ea2605c99f94248584d42b6a1bb0632cad7266a7db3979a21fbdd4f22072f33735ac48ee163830d883d1f4310c3d7cac266d9a1a5a47fbf5f903318d8e7b04ee5a6c4dc8df66b426215691a6f7837724f41346508cbba622252f22d76504baf5b4e46545bd52a82b3061982f238d56c78c3a88bb46cdc6ef21922b3d50dd7d677346ae60b836e5ea7cfbe1d3bed5acca7a5110f7e28cc910a0b5c3031b3604f41c9d97ab9abbfcc33f021b8356887c30d974a5a8bd10c8ba094a4a503bdee23a05454186736cc70eaac117216045313edcca1050b7b1376df7e9d99e4415a0b7dab11a94163b9d1a635fef1db47bfb0f493285acb657d623b7ac9fd670eb9a261b85876f99146ad501152afd0f510e9ef940deec23d62318cd88a2f91f326f4d9bf47f7cd9851014923a8c6d8f1a82f75a9250506b58faf06f86246051fcb624038167fff46fcc711721487a3b65dd6ced6565367fde17bf08c2078b2eaf4b7b4cfc934acdcc870002bda0ed798e86e2c88d5bde54c9aa6db73ee1db7fa2684d49e03eea8b835390be20473496ec9f8914ad473f6477335ecd88a3ec325151341bf5da331a4d762827c7fcef428710cc90c68d732cf14cbf53280bd4d9195d85ba470883a8a8c3680eae44ef1160bb4e0c1b8e2baca52ece81e3365f2b8f8af17370a0bb29e02ceeb6402d6ffb4a278bef579f7cea36f99a48d1152c8258fcb86529955dd41cbe815a127d63dc5619a8b215b02a6f562018ca3b959b5ca201d003359b94a48b79cda568cc00f5c5e3e663a6293cc8b18335dc52b8c5db1e8ca59594db32d991c28e389655eb69966b312334ee4006ef08888bae03f545963595b60e257374114bc22725863cc19a2613a82f8c363fb9c88694a1e6b184073771d70558b4bebdb4117cd19a08692294adbc0e015d0bdd20b7ea5b0c12a658f3fabb9e061dc17f58dfb353d02c3032f206bc5aa5a007753d3933ddbed25e97f792f936833bcdeae5a83cfbf2f5cc4c3168190f1c775526eb064cb7c5c081c992e37e2bd743f5c0cc1dfd18579e54cb685dda475f2e1a6dc4dec1a06a138b4d67cb08ef5b829087a232cd3984b9c4c54d52194044b6fff80b4655d78dab18cb9757ac70f0f6b82bf6aefa301d637c8b6eb282a010deb119c6438052f49a6bb3712f50d204d2ceb6432fc4f2ce6dc1ab34ebd71dfbd8623be377ecc539f3ea51b76d316ff6b9f412fa58e03e50de3b8eefab6e67b19d45738df9f873109f9f6ceb855f32765491dfc40af51abcb5759b6946b1653d5e151cebf735d0b8f3b974407e3c3df38cd1558ca7221dd16d61f5c9209dc8e3e68f82e870ebf1dabb09470d7901de4376233ddd367786df90d1bfc4bf44e6d52bf3a1da7195d62bb8867ce9423ad60673b9efaaf9772d7086fff85b0e4be9d0ae87f00c3e607488f5c94ad35c44f176850b6f9d3e9c38ee0406e2b22e6c4f04af143c8c67b19c70e391f400c4d6eaaa4454885db5d3a8dd9766f7b54df5b7d9466796c05e9cae0bc941ca3f8b75a57bfa1309913cfcb36851847999a9480278b4d151a83d6d1921125dba0234feb08ada8c03792a6bef4d0d2785703959bc1b0ba80dc69b23afaef011728297202123184523645c6a4a79a2fdbb5e2a33e19e74c4d21308f0c606fbaa0d911adfb3eedd891167edb5d8d1ff147d26b573e7c9fb02408d5ebb2fa0c11a5903d91348b9cfe8e90c51fc6c067861ad15a5cb1f4891c5c6228f9ef201d378a0d16fe7a3bccbb5bef1b26403636f3c1093478163599e70f7279467e574477e10520f5a8b2e16872d79e806fcf835e22fce61ed129b01eddd8e461b0d65b909a72e89c1260bf7b80313f66f25a417f2d55338fe6382c3296e82766fd09c829db3f81f43b95517e9f2bf251f97b692f11389aab60062299500322f4efac331dfe77bf85ba749987c55c8f00a5c5535c6db4ee2a9f5140fa7dedf54568ccc6e18f8322f5acd35f41903d78a1aedcfd83e28501e82f0a89857df84dc5a6137f0b9cb7fbee325fc352a35eab0aa7b7cd189b5bcab7fcea15ea2139bb4e19f5ab6d13d89946dc06ff95e7bcc7a0c0ce330bb49723af07ab0300b83e116a5fc137d996de071c5070bf429c00752056041674c8dd654bb1df76b15f82a6316cd9037e99e4f6c8958b87a435d84dd4cb1b1689973e3eadb9934abcadc89d3d5e91575c0aa743baee7a696254046a50e3c7ef96033288edd5b714837276b523961f1c0bfff08c7faf865c08f1efa6d6d996bec48cfc032617807c1ed55727bcdf9ff6aae32f9c88a65c04505bb44d0fce903ed572e86079f1a208e827c2858d08470a9f71eaeb74e7212b44d39065c45d02ce77ac4f83ddf42006d0e60d0b9b300afaf2697299788f6135ef28203ac433b923c00cba76800d5be63afa3f1299f8ba1296fa5d8c151d25039c4bba72ae800b0bf1f09176df2f63d0805056d4bed25a185285c3d3414b5c9dc56c6cfec984884db6e2c65e43cbf81b0b6a82b2eab44d89a4a36d2681134775f7fd8d1f3acc5346669b1342c7733be3ceb76bb871e34f184f407c95bdb30a932da1f335cf1c1305cf15b9957d096b61cd1876afb3a4a3e01e87e87e0db8f7cd94576bd7a26f89928c93f0ca68a08480b1aa0b39c2ce9c5340c33030dca3ee18b6626e7ad813efe2e1a59a8247a7239bc79bd0d9fd151dc85eb465f213b8bea6821c0beb52b01ac01efb431a489c7aa6129b370b63c46351f32986dfc0fc963d923fdccb8bf8c2b0fba29a93c3692bd7f67d62004347c97c53380f5dffe48e3285bb59eb8cf28a798ce9f6e2d11d350fef3ba938bb3df9be46524e201159fd5287be3e81c5f024c72e2e93307412feac994ff7f1368a5221ae156ba2932393be67bb9782868e6ed65942d42b3ff6e269e912a6a07362d6813e70604648a45121817c5619f57cc770fe4dbd319194c4bc538964066b3b4e341574175a724e9a6f14c241ca28b30f3b1b53985df7090d4b15a6dd80aaad959c939c114225cc64371dfc984c5da3e30d34f781df07a841658cdb75da399eccc0b3610acc661d3fc18d6d1f1bb0ccd5863e05d3253c0ad4f17e976087d341335631c372d9db6808e3cfce5cc775f25f8d4f67d681561ddc3d20cd2a8e1e03a2aec5dfeed4ab52f8bb461b2658c01a141d1060252e78e8eba941653dc2438dbe9bf90beda4107f950d4d869eeb59912a023e9012e710c957ab6ed32fea68c88629fefc002082dc381f5785ad4ddbf00d80e5a6c0a41b51b9d11fbb524045d562fdcd82f2013fba8f7c81c92e6a480b0467d797f0aa7f7f25130ab98bd5de309ad3f4d97fdc517b06fe2e392fc78dbff07654ad1d3c9532f6fcbef8b9b2d871c93cb73f5da377ecf64a1b0170f8046100d4837e863bbdf176626bdc18659698eba72165b34900046d5aeabe8f42e29c16def8a63d05cc56477028d89a24edb88fc53241c8cebbf40ecc4bebf353661fa7e60f4b3b36dc2cdc0f3ddfc39c4e3d052942e901af0b4d1c95a183da58bbfc677910964483aa8e8fddbadbbc565bd09a4b0ea6285732a36e31baeebb7bb873eaf92c1f074f9dc57163004b93c0c57c7e502b37400d5416db5c7b555c459f241bdb8f9314a12d848d3766917025fd4707e41074b7af96c1ec4332929a25aac0308d3f052b62eaa4256206a1502ad0af310f30811b629f3cf1eaf4a6c5961566388a1ca5a6e3773442b6f180ad08e04431c2cfc27756c726de6f31ac2d3890518cf8b11455013ea3310ad8971d76a80b0186fcd471259581e8d28e0bec109c1aa94122faabf4ad79bcb4e5509f2447108fd328a2f30c9696cca2fa74c261407415e94f4f7be7d98baacfb1afdf45a7e875567e4e55d423dba7dabbf1f3ac8483701c5163ac7f19fe08ea6f92207f0819c5648b289d26abf09f9a33b3b9998688b0fa7ac72a05af11e7a071648d2500a7b95f86db2a25eae126eba7285ec833f1777edb382bc67a8453bce1b8de18ada7d50a1b56011451fa9772a7f6c81ac1b9bdd6a8aa2d68d73328dd7b5d2be896859714dca7ede17f973f9a3c19a81583c98839b756ad9fa116fad871636a14c5f1eb34e13f1b42877f3cf335bbbbc2857fbb7651d6b4da0da1f762e729dbeaf1e0c96bf9b361a93aad70a07b54e3660149726e40d56d2c636425702825492d437330ba08f998173f5a6abd1f98ee96a906e8b6c37b664ab233bc9d004b9aa8cf0e7011ec1ef646e8fb422079764756edccf940c6e38723db3b512fc38f7cf4ac50441d628eb84cc046704e0c16aa2937c3efe65ea83fe328bd17bbf64d69506e4fc353d5efab233b5ceb05df003f5e3e82d2e2ac7a25a4e66a148fc5295aa2eafbea3ea20b9c6cd538ce7195d7ebd0a0e8ce07485fa30df90f91403cdd6743e3e665b36d2f0a081680782b589485805ce1ba8ec89d4e73e6c8e6be6279ed2cbdabf686ff9285ebccef4cd26b53590d27d9f50df9b769c46ef62b2e4b65b0bea839a5cfabec71a2b352d42fd6bd2547d63d36b8767cb38832287c6605309478f6bea9ece72c2eaafa2d387edf3c836733d389347fc9a653aa326e1b1d9561c4279bbf21d04dee6ceeacb119ede555cf3bbad28ef4f535b2924e79fccace607b5c7f3956c8d7f71ca3b81bcb980ccdf8603dd9f0bb960d344eb964a682f9ade1d25e6a603c50c15a894fc2fc36d2bcadf2c739ae075169ca7512bb0cc4dee8c0793b4b9728adc9d61484bfe0003c11b30c42b61e02327914b430f35e6f167b514cb82c7c860b751988035b81fe0df94064bab836548adfa1ec4c1ec968d1000aab478e147ece7663ab54472d468a33003b629a9fdccc3948669c4d87c97022dbff094519a78db1cad3a1a74df40c48341ececdbcc7aaec162dbd9a68e08063c264f4f13fb73521838b0150c4cd67c712b4c93d96f8392a83c59948801db3c3b705a0bce56ee20e5a08f4bc1afd67de882262e324bfbbe42563334fee394df8e37c95abb251f7fbf1fa4cb5d78b6f299d53d2c40645b8599f650d6aebab609c4ff0d1023a2e2e906198d378b0d2b96dc394c1443b8fea1b671a9f2a7354c96400bc720570a3393fc503fa9fba7b2d62d287d0f2785a434091acc2a9ec5610c627f4f5859d0b562afa181e95845080b0381f343c31ef148417f5a680972889bddef2eda94f42e8637956ef6730db2b6dc5242ff98baefeee31c894b36d2542873f2a474554c0892a3a8f7d96ed276decdc0f1b05d1388e319e1a2e9a674e16845ac23c3e61fd23139665fd0da12e06ce97dffb4d9e40dc97ac284db5c514a116962d120855fbd68ebf7bdbe040abfa647ae5beee507b2efd6f11f9ce61c30107df70a6b8aa92062284d7df9e9e7a5af95a26b3192650fae4113fa364a733adb5de8dc93807ff5d16071df5a8f3f6a1e61cf867ebe0fa049de4fae4627db8fcb45ca8a04045359e5ea3a77a9b417a9a191957a0cb18c466f31006943aa925d8aec840ad09f8610c3220cab4e1ecf41b4c2ed072373cac53bf9246c212bf1568d778387b50d1afe9beafa385def32d5616fcc61c5fe3d44d4cde28d3f91e92ea34ddfdff2837caf4bec54aee7cdba4d1b2221b22c8769cf8e0cbbb6a5d6e21e901f1825e7faead0883e21efa6cbdb539b1aa795126664d8aacf4a649344ad64bab744208594d3b3a54ff2b4f04cc8d7da1b5a9ccb7706b299f4ee295e43d4c1e662c8cb958ff2cfe0371508fe67c08c155446cc31f00715d772ca2aa0d7edf9040481d3ca70403e45d5edcb81764b68de90961c5ff2bd9d518552a1b626d2570c25121ca14b543e1b5319308fd35028443138fa37751b4b6368b25c909cd626e896693d135590b1e8fec23fd0ff0ac9058828c5c53e45025aae0e3ccc8c41397472daff1b2a4a9c018d71540ca63d10d79f83536100570b906ceeb727692c64898c33e1087423aba82e759efe39ec03b593b86dadddee9214c3d6573de7f3001aaf06979cd4f2acbf1b09a17c2b0c6e4aeddb4f61e8b326e480733993af266b5e29ee870144f01008722db4ece7526064bbec29e35a533db1e67d8ff96f9c861189fe4a8c4a536df38b38840c244dab765205a0b29b5fad3ccaf01e396b0035bd8eba314ec034fe0331218f0728626730e9dc4da35313353e9cffc111e0a3e216afcfbe77fc5021bd418daadd17436f2083b33de7203af2dc12b4e488e1ddfb6bb399268b9e3ad823c1c27c19728be269dbbd6fe9b067eab77a0c09887a97701e4becd65e5ba949cf5db300d73e05a388416b59f84a35857ef0f247cb36e43631a0e9ebef77d33e89dc7c071aa918da259a6b64c015750e19056cc61f6bb0c6e440bdb804dc2ba67e06e3b474fc6b72fcf52f6b96a12936618ee944f2d69f9e63f0ea449fe6711200fd79fefd409e98cd70bc40928197926aa6c4932d7930bf7e3081c93f6ebb39d214723198ef5342654a062779fdf5185b1b801869b2162d7a96e737f79604740e9b386d877882a6ae6bc55978261ba6d3d19a4e670e9173e93c31ae4968dc4293256b26589604bed8c99483afd8fe7be8db6741e44e231c9ce4d307e14cf8c60451eda215a706cb8a5979448b7317bca9469814b491c13b9a96644c0fe6d3445d0e4b7ed085c7cf28846bb2ef5262f03be0e07b31acf5e430d9823c21dd05a70de2f32a759e7f1128514bd63253618580786c41fc15f2b00eca6bc8809c9dfeadb64568f235fd9d73b5bb2be7e975494e5e99c407fdd63d70afc699a71ab1fb3d25d0d1af20aac2e0babd23769dc9f1391bd774f95ca7ac5cd21c87e1203d73f554b35054613c92b37188a28ae56295eeaf5758d7338d21f2b31623dfb79de0a4d47fa4dc69486533de06814bbe1c3216d3ad88062e1547c2ef082e18a42fe2a50f87e301f948564f54990c6678f627d2f45fb49963fbc93e5d9320fe1b1fb95b401ef2efcd75c452f33385e88f98b8c308ee9bef00fcda354215a2fe2103cd4302f00d4cacefd3a933b89fec93fa8fa458c695a1f4dbae5ea88114562ca82796e51a458b6a5de9b5b873031269cd356fe12b0ac2fc86fff527af08b20458f575a685fd98041331b2d802cec870ac9d17fd1ef96aadb1896ab996c5a309000ab2e9836dcdec401ba88c71116c5f1f9ad35aef729c4ae78d196015c5e23bd25b15a1a01f341577da73ba59502ccb2564f3873c1c6b8f4c521bc0ac375fc1608347792575226bfce4d80aea04cabd5c184a8bd0b07ebca99f1ff16e7d24c8be403df3c0211ebf1876a6bd341920d3cd352655ee7be0877f435a20baaf0bf3e4f3380b7faa1353740eec2de2707eae1e1fda0564e019c8038e7fd3a8173eba72245b8f22eedc881def3df8665ed4d0269fd44cefd4a2f4e3d5d0de23b38769e9fcc287cf9b176b9aa009f5292cab19e96149624861a0d594f1386053b779a6a8ca3e52e1b44b0aa96dfa789a95f07c8d74695d7623f3fcc7c07851c4085da8477f8c53b91262e8f6e56d8d134a91b73ece2be9e5ce95e258a36383f8c1f48b61312a604de06aec245af8128d71e30cbfc6a59919a64bbea4ff2b143fb2106d8e9bb63e3f1eb498e264f9ff8722e1561e98f363b1059f78c9bcbfb2a3dcef2f0e9ce1e55020307dc85e402d57e932f33ae5b0faf4d82f4db9c934417bf672249db4ec571b0c2c20dfe8c062e2470a579e300111032352f8699645a894eb1eed058abb3d085f56d76c6357964531cc53d56128c64579fc89a798dded5c5aef53476874a3b069154bba789d8e3a8f8b569b46b3bbd28406383cc8b5e05515f9f68fbdb078edcc2d9efa91ce5b0fbe532c0f0d3098eb83b7c92f2401eb16a2dcf6e49a3db61801b973695fbc58080f4315afcc76f8e9c7a476da2d29deafbd081104366c4b38d36b4dfe52d3a57046753009fa81118035e05268689ac9add4cccff46af2340ee12cfcc9242f50481bbe8ae4f3d6845dc776a233dda02e328a3bbac7365b5f5320fb1c304fbf9673bc335a26777e29f60b3fae0d9b54238534ddad353a0737b55824dcb3927bff8a498930de2b8dcb5ea2f7f3263296364b5f32cc2c3ebd0788a2cb78fc70a82ef057392eb3163c24f2c2b5cbc8371b27104806a6dbaaca8d82f0bf420bb02bb2976e80806326918cb6b5a3dc7bc48abf2762918e760eb45a4185a20c5adef0320c8b27b426a9972c4b580ffb87f5a969fed46b40c69c75efc2795d4cbec95dbe8b9f1ea78ad428a9799dc849f36c984ad3f84f3e8aa953ae8736ea637a03d719c40de722d24044926709d0b847cd1cfa7ddeac99dc303b0683fe67ccdb6454529f30ce69f367f813c936553b6f43012752c60809104eb2799562821d228805fac5d3f740142bdbab6452054fe8f97fba6baa3378f4c75863d9cc272b304c06c6f8b73841c85012e5ad9fa9ae6da2bf4caeb2497c0980f899a6f68fb3b554237e2710c17865fdeb5c3bf1154aedf25ffc8abd8555e9032656d37192571588ae70370897a77a3f0792623367dd532316fb2fdfe36822fe70fb62204dd7479363dcbf3be1a0d1870c4052e291c1437159611ddd935bc8c424a785ba1acd62635c029f3a019b6f27f6499a9040d0469e1f1b3bb33b3a41ca98a6854bd96036ac15d22e087e78b4d8e8742e6202756c6fa9ff730e0a56362b113702b380adaa6583610ca0be5311369c759793c9458e2c5f668ad398c11b252f31a12509d3224935a3d96d94d7cd42531234efb9bca624bdca52969f97749af18133aaa1ee30568b0c1dcf952efbe0645b225947edbe275051c1247675d5904593229c36735352fa1d679d48930257543ca745a44ef90ac23f3ff966d3a9b12606df2b489c494160ff319e1ccb34d479e7b03e80f52827f6b98dcad124eccc4f60f3db10f5c9f068a2830f36165fe63ade5e6116d735da355613fd1dea53527b8f4f04fc2d0b6e021d3720085eb103d39750e08bef47056d5ad22c7d1ef8da33645c516cba9c8de12df677bfac3002ac08da819e65548d76b46da67dab079d34666842d2f08165161d58ab7c3788a0468c231da30531da78ff92ee6ccc04fa59a409aa12a75fd2b06a4fca5e854afbb2f3a821d4adc35b5228d83a8a8be3f3216222313d85d1f174fd0bd35d7d9b1999ba8110f0853c0016839bf508c386afbcc450d29288a9a79fc3bb3df564cb62d1a45afe271c8bbe9763bd3de34b5af6ace1b35edc70f11abbf71f6f9e19a2228d460f175ec1670f098b1a667c4434b8f8d01af810120335837bc1451b0ff9090f396016b4be5b6fa5fc867513993a86e9a4e4984cc4f129dafaaa9290dcc9aaf3fd58ce693e2ce06e0ba9a5053845175d691288166ccce7ccc8f398706206ff09d396a50b02ed67fab27ce6e09b18c5a58c4eeaf7d4f4a6a7a8129135d366e3bbf8c714f13fc98c4c8d77594695df0dfb53f72f6258e6631af5e32aec28d997062d69280b4242dec5f73dd59c7e7e137a3d8ca1e50a4b5c6dd78a038ed1643e035dfd0403a03c6d1f399a659343b51bb67138dab7e92b94c580d9302c9c2460ffceb95da82eb64e77baeec873e68811d9a6964b8ac25d537997b8bbe930706b2547e7fcaffe671b6da5acf0446d1802541735b6b0cf09a3744a1a1fc69d6d2db5e80640c204e9704e797083bd60d4a11f6ed2b5974256d4adbc61ce37c20a5bccd51f99d9441f6f5369465d06470bc38ccac6318b36c0f8a9bacbad96a3cd0ebfcf780ef19aee3deb95400c4dc4e0e3a43d8eebccc5ad6811ec519356f40141005a67b8027b1d831873f953264b109f1a63f4f6fa3a1c3d54f3b5cd115889549a21cc45564259edddedd4a7c0864f39caf7f23ac69813d75e2dde9d632efb8c37ab4a761ff41caeba22d3b5e6e8bf17ca8feff3f8f1b55a5e0372b692eecf90ba8948a16c7bfefb36b78fdad105a2430bcea631cd4b562c9500b0c20b5e0bee669f462f65cc8f8b802899a9cca768eb89bfbd56930400793f1eccdcab2b3894992b351fd87e921e17a1a369a5c45ce20d3ca49ba8f83caf87f7c016dbb98e5711a7f9821abcb5f388273b95f0be3e1d7b6e2d8abddfb5028bd762f57621d06fc7b07bfd359a77503f38815a1b9db438b2e605856c9c7de96dd3aff08cb7b5f9578d344a673e0cfd5a1c321c4e20e0ef00d7f83e2078759f8062ccf4e49fd474fafa6ab7ec605ec9a08fa6f11ee52aa5225fc83d4a853da37326d8e35b367c440a5cfba5240c56047687c62414f831e0d006375ee9a191389cd5ca100e5965331f7aca0afcb09303ed2ceab4f687bdcae3c9c25060d4c8e64879d5c451ddffebb563c7f0aceab6a0e15b76d2f49fdcb202587c179cfc69f7257258bd81b9ca7d6826aff3cc8b19b825399a6794139089e469578a8a136efbb1f45aaa97ad6addb6679bc7abcea0abbdb1f38b7506eb66204e4bd5e072d544c2ef94b0967422635f1ec3b001c3e7de2cf5080fe5b932028e0f9df931dfaa6b178f88e8c5c8e64b47eeba09ee528f3cd23c75f43e8a523d36d7b647554e6cc901ccdcdebac48736f3e8f0be4579f1b154725ff22046ec97d36b02e91ca416ff15be2614346b50a78fb415d13183ceae1f8751f26c4968b7e2f056595cdfbe6ff19d937dc35f0c87895ba3d81d77cca8ef8ecf941b06ace84247ace83e71b8c00eac7102491a9ba2b646b87df6fac9996eef1daadee4889766b1f039eeb8c55daa6d6a003d1f17280e240bfdb753177ee0367ebb93a788d7139d0fc388ddb4f7b6f15cc8ca061f2cf1bbd2aa4c58a1d7df6bca8186b777ddb4b47252688018ffe10f2b1ebb5cfd2803f71a69bb71fb292ae8be6b8309f183389a8886b801812da8d378bb2ea3437892962635a602ff7f7c10731cba813ac982ed26525d51b8fc798551cb2802ecda90612b9a18d067e57f7b79ea6f01f4506d80ef7e2986072bf003e270e96d3cf41bc8ec3aa6456eecc559e060828876dd57da3a2665b57a3d105ffc3d184e75ce953f774cd9aee12ad530d3bcb91444dc486d6c3aa4c46cfaa0e7e4bbbeefcc544dd98418f1bfadb6453bef72eb2894da9d1efffcec2f62ec8e24fde7124c58d5b6d5e17cf00708b0edff73a7ec25dc0a4c050b842efe5ee360603db211ee488734367e6afc25bbb71df259b654df2dc2b07f7f3f075e7172bcc01180e90057006f8fb7670adc2671ed2c01af0f166afbf102cf6cdba41f6ffa191caa34d145be3d9ecc0edf589507989b9ad3c0c28fd4ee45549e3baac576cbf08ffc034b30a11f615a8b5c5377a6e820a619f559e40ec0a94a3d9bb9b267ec5b5a37b93eb26c43b8382121d1f1ffb68fe0ad25744c91c801ce04579406e4eab70b90b176124720ce0aa575b2e9c77386c46b8a83efe7551df8840b3ee1d4f95e852fc0e748409eca5d008c5d6238c57f5168bc812cbcd0b4dca03b8d76e3d5d6c1b178861bc5ce923eb00d23968e33aa246a28bff8647d9cd60f47bafbffb926aaa7498b932b3597c547fa35a88be5580f6b513efd55cc5e53deb06632dc6347cf15672fbc2b9ff235ebd55031f46c1f3f1ae3442aa83aa00cebb5d6897128df0af4842cf35f8d5bf3d527623112a3eabb59940c049cc2ee686b33576c7918bc7eb0618912c92baac0d248da213295a878c0d9bd9e13dcde8f64dd0954f434be26aa207d624ddaf46ec58174fd2581517319681e1b140d989734c591afa3b32335b774739132458563237a9513c1e16369e2869d78470a331408305a748f5369bd9f9a7be7a60d282175f698665e8b2576ce32a8bc7c678b3b66bd717982c130c69f23ac893702994fd9e6a82559d83b8844106fc224d866c2a4dd335b8c0cdfb6e78f45e95ae70d9282c5f78b94e56cfcde2d8881d6ff13926e983ab5802ae5391db99d69e7cf21dc34457810f4de9bd3ec96163dccd2e27744a352f5748ce418d90c1edf9b05a3dac94f6c5ae25b52eaefb561d8638618faf9c76be745c3214c2797dec894810574ae5465e0cbcb68501e8706819f114190359bbf5f1034f77208dda70dd9f47b5a66e78f70a0f29f5fe49a2cfaa43d0097f482a815badc392ff0866594d060f92706ae642257753d785fe868173e46c479060de3d66a28c26949db5347c63f9d82b79f185b6876fd5ae36f38615a0afcb68d9533b809d48a5aef0872f06b3d4c563893669f5042ebef75ad3c708bccb295813daacdc9e2174bb34103e5537f77465a1d8ce6110cf3e951dba3478683b39d2f31ff419ba2176ed9a428a5767d541982bf9303b0b93e1f650467daa6ba9525b63ec159b7c06fd399f9dd6bb06a07042a664683b6c0af9ed3e647f26902569489bc500c186e2874a139e32a422d826d5f375e0eb012088373a6b8e2f0f05b46f0bfe061fd93e78d91eb5c954fe719f444b1d4f8af1994444e4f17cd83b20f6086a3f8b26a18ee097d4d35ab600f15408f186628c9c467d22428e7be0b2a613abcdd2f3ba532c9776f4f88aee118b4730737a4e596a4800ce7d4f19d97a1e27f55271e2eb9cf2938e35da48ba1ac76d70c6a327cb3175f503e497aa9d70a5983e8f1b9a2f60694d04afc698356719fb70f0105c84387e8a9038beb52a4cfe3d2622e9f366f9ed804872f14571764384615ecbdee69b3a4e2c544ad5376321e8d8163f83f7a9f8a3f75b8b34be0c019bb38ba808dcf0fa81947280831ec3edc87591404c234fbe2065e1ee71a117bb5d926e8d7942230bdc6ff2044d2484a65ead376701dfb3ec4b78589994def45a97aa07e85e593449f0b98566a68f0034e77297a07a3f258d0849e6dd28c222d59b5fc00598257a657fe70ff54aaef1554646c1d65c4806cc2c35104e02b36bd14cca4ab64d4287410281b03f7527155dd48fe15b29bd1b67ee7ba97668e1abc880b95022c10c33eeecbde6c05e34a83fc5d18c69ce853838a21ec9c1e14a3717f64e1afa54368c5c2a935ae6ce2709c1d0545830a6e3b30de89699e4be30a8031a52db22af65dc2aad84db13b417dbabb4ce52c3bd1fe4243d8abf635426a4ca9dd34dbac8c6bc7e8058abbee022e84c2f4ac1259b8d88cb02e9f5a312f43f7faa8429eced55f2a8fdc03204412e62d7d46202bafeb485f56302534fa8dfae452cbb92eb63a8a01cb9a01c204f72c0a35ee1e9affa992d04ca591cc739056d61cd38feeb5124230e2e184676a2a28aae1e65587b4353c1016372d4711f80591c531ce2c24815f83369ebedb0df22a8e8c72c944e5dd91cb6666b56b736c1518d98e1434fc15bfdddf7c95e186fc23664a0c52c5696b21a2e6b6d940056b7b747fee11a92223c274afc425f627762be2eb3a1a6376e73faada31be76a1428f0d9aa20b396759ce1cae903ce37feff912c82d23f679268205eccc7ea18a258e9103e45c989dc9cca5675add218b3a6e5a4217bf3a385f44857cf6a343409b176eb45ff3d067d7a947957abe0cbf560aeced4a16885a5b265f3b85b0a8fa82afd8cdf9cfe08b04d61ef9c6c9e2589f75dd703fa3d6f07b8af1eb8c988fd7663d67cd8688a8eebcc9b87cbc9e999ab2f8c688b6b7169de11798902645a501178e386b41c6298e747ab0e4b41080dff301f4d277f5d6628539906b0e12cf5c63d2ace451c715157ae75aab7fa4b0b21da3233a3dd43a55f49fed8716514581511daeb5d1ddabe1d99083d4551554511413d92baa21419dadbb9ebcd0c77d0f5ce7880255eee7998efb38cc88d2b3420c2c3cf7687a5a92d745815b7f2be6a61f8d543429f300a70531a9a27c7e1cf023ec89f7d3d34fdf1db986fe4faa6e0959cdeb8926793732af3f0e3776709066c2f5146ce2f578ed0fd4e8242066e4353f4e759f2823f47ceab7aa2386314aac680dd61f6bfa4210441b6e928ff21b8313167c2e002536ae202cd67c61000f54269e8c4231d3062bd954bea2f0d8eb0539129888f6cb516f49b919b5495151388d376f159ac22fcbad0ac702bb13f7cb4391a68ec9f0fef1657b5c383d492388d3096c4d5ce0b1f0c80d3082819547b537c992265d87b739b81220908a44f98fce6af94cf498d0fefdf0dfee0fc2b8f69d51ae713d1666c29d24cd2288503ce8935576972a2a358fca8a902c42f3318f2fa59945733664defdda0fe0a2afacf3d9e91a2084295521ca7573fa59f5b03992a6bca91a14c9652d62446c2e5994d7a3e6785606fd28e0e092e618158724a60c174f5ba1f30791026bf39c6177c95760338c12536232f86b8338c189e016032621f19991a8de1895ac5e58b2e98040665a5bc2c2e8d2375b307da1db262822dcd0d3be531d94f5cf5d1d2a54c2f047a40a287bcd71f2f3144372ce2ff758c17a9371605fce86578bbbc81ef5c6c2916d952fd0c5b5f56a6aac735de2e424c325c0d604eb4f0bb35e89b8b8f4f3563e876ffb90a2c10420b01d8098e4f16c5fd70d7aa447c49af9bb8acf0f39f5d5affeb541d15673a1e8428e4dfe56173297ea18a57fbb67515a2e08586e76b0136fdba355dc01008ea65fba6d80e6c31f7549e16c08de05bd23c850f0fc35ba41da721d28f6126f03e838a182b13054e6e4fd4b3ae32c81fba0e434874f28dd7107ff27d80b571c38e8a20483d576a0652b339ee23fd050290c648768e5589ae8841d6dd3b5c83636aa83ec0e06346fa749ad08500d4bfc1ff070a459eea7a13fe105bc862de54002287224d4dcbeffa9d45a17bac921a28493afe8c5e6875b58259b879e183b9411d094ba0256fb7ffa0bed406ef1587326477134fbdc5c601eaaf663d74be2db10cbdc82d1dc45941f39515c284e0a36adb1266c767103011af4ad8b5ee78d96fac3309312b42cd6d3a17d26fba836c49772d5fa3fe4f5bfd27ee05cc26ef4997d2cf7c8d72c4154109743bec8a0678b8ab6c64b58c13dd101a20dda72be5b8ab337b540275d460ce76abf284ba7ab0cee96fd5134fee0a394facd2ad2003166270525debf4847742d578eceac66f45edd5e45ff499ac1517f01cf16d504b7fd2bb63ac9edadaaf4f69e29fab011e6a8640fd1d0ac14f7305fbada8c3398ff7182670ded6ee82e69df74a55d6c60b4aa0fbd7641ba488146eda3481f29c796bb50497e79679cd4a42570998b8d3bc035c8a08a53d683d4cd4054f085c5238126684fc55f661b23e9959a277c355847ae04f63e0a38e626b4e16a9917cd7670d2db33c0d879b5dd714461ee0d60469d90460037f0c560971eabc2ef54297c5c32e7c5fddd536835e817f2307ddcb313e7e8d1ac9202e23ee07d0d365ee98cff8e24bf04af7e9ebeef23d0a8f1d5e5edd53eae22020984fc07c3434c7bd25811821399424fa1f0f69bd3a842f0ebaa791002211a5399cd5550be91229580117c7def1c6406d41af3f4e3b37fe7da47ae621125b421355814afb0ac5cbb16a93243d6a796df0498e1772e2854a6b42080287ff46e064c6d62c9cab9bc9e7f06c16c3e5d56286c956a95438f22e0a8206ed4ef5b6f26786c0879ef30e8143e5129e3bdc1faf510309a32d501e3af5d22ac6b48abe4a4ca0c154f46653c99cdb623672078289d5d2eee26f1969c0fd8dab308ad9d1f2a28cbaa0c9e9db3c9924b600dce1aac3bc4a754bf0b90165ff408f457cfd2e566b517e5279fe64ee75be9fcbc816b072e734c653eda0b0ee36eebcb1b8db364875314c84bce08145a712dfbaf4f532799193fe355fd494c447c3fffa8dedbe7c42cf6f5d65e4c722a36f824f7fb6c4ee4bbb2a1af7bc9b00ef2495569156420d5505c755cd5f4cb87581078f7a0133d3998be39680ccca130ffac235b6aa35b78612d2c237a9ef54392cbe3e6a52f05081b1a9c9131085d80740c1c90dc4581ed4eced2a49be7b753f9dedd50053cc583e3b26dae229451359dc2d1ae5fcf117b24c40b10a10fc351e0b81596e33dbb22d84e4a378753036ba727136d5ae6a7e9e412fcc9ec750ffd4606586975a8bd214bac7c1a0172f7a29c2d601d75ffaf0577eb38e48e2259b8da45865336672dfd2ed2773787b4d03fea527e1db8442321a27a1faec7c23f07878a602e6f88e1fb5a8261e38fab110a7a2d6865fad113911aebb3245ac3971696cfc1aa0c4262a1dfff49660b10f2af5a109dfd9fa0c12e9eecf479ae72a4326180d9ccc54a063b6b9b417d2ed5533df88d2384a8bcc0d620522994c454464e9115df6992c12a57beb758d80cb92baae4d867aa0d9d72e908990d8ff612a47fefe9b6af711dcb493038bb9d035ea04c30457db671b9b5ce7b6bef398bb17780c5a8019d80df33a8438b84e3f336ba61526c30001eb7376cba6fb59518f5f42fcef71986600168cf4ac39d384dd0bd88a1b5c57851c747b18df68959b621310eb63e9693ed59165d1c6ff31ce83f31465c45361edf10600fc35a5f70007e0fc32baefe3d4572a9b5d7249584b0c51c8341943b871c3fdefab823cd79e943f99880e889d61c85117fb9f0dc5820e74d0ab931805f20908c6bfb3cd5455de912fbd8eddc0168a26525001a91f4898f430c8c72dae150fcad60f0d4f85cb3ea33ffec2dfd364f315e57e0ef0eab32fff09d2d0e8c614251395994b4a479f180a1da58e1dd40764af8888990f13f3d93b43693ec1fc3e559d0dd4622650adeed6f657d0c34be92a4466e3adc536b64b0b6329da6a500076ec9f3a6a181b1e247799ff0cd86a5520d92866506c159855a64510f7bb8a81b0353a97f2299c5beef0b2a7edac3bc92a8708de576232cfa42e03719baf55b61185291c47097d2091acecdb748fa1ee56f680842ed8578c45714ee6ee9444f4c981d3f9ef7e4148616d7f0150e40bc67ac06bd031847c5871d8560f1229acd4509a2cc86290200433faa23a8cf30d9ea6413381912740f545e27dee66fa9b4ba27ca56761fd8bc8fb9929755e8e68c67faac474b785a4940f73f9cc32258f57943427e1f41e8a2bd72daa3adc6c941c66ca57ec10807d5d4cec43282719715637acde83b082dc1b2027a4048040f38f50170b496fe510d463ecd1c8cd2b9ae642a6dbee830ee5c4c5e2a8eb6d855054f494b847d9b4ebe7e775f3b32de42eeca348c2e13e902699183344d03ca560e51b518cd74916fa8fab14f53b5b6a716deec38e7f4d0fc12b589f665c3bc3b10a24580338c3e76ff7028f58bde3874fcd0cb39a0a0de7e38e9bed85eb6c5d69b68fb939cb8ec4eed4e3130f02777cf89ff4372929e7693eb00be58e8f65e9891f11124b3b887500d02fc9bf17441683c7d4d9ef8984b2df3e2a5e355bbe2d7aba6355a68097bf2f212bdcde45abb68a6f385e49618d71e4accdc731aa66dbbf45433ff6deaa9ef9e0f533280f9422eecd0fd1f2f517dbca062094a52a68ace4cc3d903bb72b3f90b46ae7261632a2948c60c0c0efead0dd6962ba43b684a21e69807830bb5f493a64e8546889605768896c7ad7e4e94e98357ff08b655a89bca931f785ef4fa69ce662044d8048f788e34f16f52e2279c72131399cb265f0b540f5dd276e857795a9b458b9aac64fece3181675ed6b0b8220c3cda23028f54b3dac2625a120ab310c38f20fac01f36d37c1920fbe0108f4578529d8c2dd7176b5f9e5fd620eb4c2f49ba6d87e28815ba6f0521877e635141765ff1794ec512d317d9ddf864d6d7e6c7aba2b7e7ea9fb52e9c14e32dc757b2cea6927f3abc79985592ad95567953da7249a26135c6db8956201df3bc6118e68636e7da57b48c3858bb7cc22800e5a4515dbd41a7662d10fb766b22a5f1595f43e665e68d77b288b3afff5b6e108a514a19bd77081e3ab8f54f9ddb777edf557af037a5c53a782f0604257fcec31de0fb00a6081c256e038499c1115bfa4b32768f0040fab6ed2800050711c99449c768442b5c3565bd05365923b895e644142848f97ed923f844b9a062398b6f886f71d501be60ac3de92c4424492c4deb4ecaccfc4ef4b560a657b4d8e1d35836b31ec221df1b0ec76ca9b081428da19ae752a1ad437f82954506f82339e85cc365bc9d8b549e72dd60eaba57a44d5a7d19b6eba013a3ea4d6d3b03bb3498b884cac3025713b296c42b5bb71773f555efd3f81959185df0853e4f230b09536e4b199677a6fa1bfec545124c703adc5cd6381348e7cfef168e2c62fe95b24bb9dbff06409c48949a5ebe9fcbd6841552111ea38f3d5be3b03f7d933cc170ad109d1db7e592224f2940b52babfa646de5de906eab970296bdbfce87b11445e0ac5e893e81ab0f1589d0e2e42dedee74d8a44db698e2af5cb89c8f3fc0f878ddc0d849270e3b7deb8a170dbf9f30bb9e28d1465820b76f33fb7d823df3c31594d9a6dbb753bf3a4dffd99481b933696bb0a623c2714ef4fd960d40fd020c6a5d15d4b08d2ccbfbf201f7e92508f719a611a7bfb339d31558c33fb4b9c4bb8c8125b6ac0737c9d82bc6fa128671bbf0b0faf3a8d1de944cf6479d9d83bb64d0cb4bc0a880388bcec56540285b30a296e11872a007ceed369681c010a845a0522fc62bf059bd5b3c8674ead88be117baed49b01ebb0021177fe4c6f566a019717b5acfc6d5bfae66325a70e5ca7cbd8b67de95cecd260e53921e1385f93b075120f443ddc15f9df627b57ca4855243404affa20d701e5ff6eb3a5ed2e8196f57038680def1f40f7685475f7e2269539296881e6ec3a3bc2d1369c03fb42f8fb163a26be68906d9d6e23063718fd3393dffeae4374d62abcbba490c04c80728ccce7a7d0619f10aec9976f09020db7283a5e6abe438d2edc511e391abc31a35dc243a71c2834581ef9e1c7e7ebe16a8a8e53077a36a8baab6a39e2096109bd357adea3093be2aeefce85000f764c9ee773357aad761f8215cc9f2e977c8acb57a3b5a9b65584cbb926a6bac48f1214bbb06719c96eb927119a999b8d5eb4385c362ae7f19d51fb5159ac4a2d2403695c7d772d22ba514be73c777ca8ee8220775bb9a2e04d88ac64e8aa44c8b9fd3ddef2b340d944e45219427947d4f70b3a317376b4d6f1e3402e992cc027c867e5a0db27a2804ed50e3cafbc3ea1e9fb338f584542b154a09d6f5885ddf44aa3bb1fd6e9c6063bdcfda08e6eb7ad171f1bb9d86bcb5a87bc38c68871c749359fc3521fa8af4c9f6e94964c8f87d948c8e4464d46c4c4bbd74309947587cb02bc84cddc95942065d41329725f2cc67518685df51e122193d6878c409f187f4fefdac1c90916c1ea38ae48011c88a9e4670a16ad224909d57dfab8a0d450b4d4746b3c9a6e24ec59d0084a1b1be295fcdb884a4cdedaa5872754a6e9a0336bcac1049578c0809e7451b51a04d99f52728caa0f123edd33fa634da58982871d7f9b6293a70f0ae238b34d2c8efe68446d1dff7f7f2805c3a3aa57216b8a26a485a9f766ccf74bd4af6045c8595129e5e217ee6217a3d4ca6ed617bd62b66234be9f79ce92040cbe51b220fecef184fe845c8fc1f0ffe63d412fb9baeefed8a3490e5883392a88daddee81a30b40531af872e87642270e18879320a15a26dd1e7344003ced396b111827df92e7c9a1252e12e1ba7534a327a29da3a67ec35c05e3836e0c5f5c938b38ccb63e236c18fc6e5219a6396a1bad8ecdf78647b0d162745715623540a04eb7aafeff028ac6dd2f64da156660e0ec3aa4f0db187801be36d966f7b931df34341b4a51c7dc5ed92cbba4b050c947fcd91567255ee6861c99b3b0461ad8d8bf99e0e5fd264d0abf5467f7f37f17bb8811291823ed930e2204dac1eef0c95678040c0679fc8dd053f9e83bd7605971adba92db5baf7918cc8a317f141bbc1c6ffb10cb4b588f67e88cff18f9132970ecc7bae3efe46d394b2c301c5f99b217ad021aaf36b4d9d073a68ce401de17203b8bd535da36ac7c76381126bbbb9090e02f357f0bbe78999969b7377ef8c04d0f7f0782f23950d8176609bbbb2a2ca83d81fc5f0c341401e30a9e8b8a369585c57ed6e31600057d417e26ea90ad5e325486cf04b45df642a6f934f8c19175af498bb9ce71ef6b2ef8823e341743b88017d686cf426eef0b10e26e331f265d469ef3ff148846823bb9fcc19b6a5b9855856433186f2e6a77b9e4c3f70172cf53784b4ef34a01afc3f464ee732d6c8e1eee46ce64c57bd70c402b9edf83329c72ef3f3e09fe058ce70fa70f3dd4624bd6ff008cecba5a07435f1d9704a34fb53c9cf93f3269941e3804d33edc7b38550457231bc8b554c250a772147c3ce2260351bcf546d839d861865f8eb04e57114281b09c4567fe88c05749ba0cef817f33fcf408cfa3a48a4597a06586524156659cc9d8494627a89a01bd4c0b06c6e1dce596ea451bf287ad65b55f47abc2f3bf61d9b3f2de0e4d5ac750e477e2b0aaf451922ea9ff6b96052eaace3ae8012b70ed7cc2335ff780283dccad636f763cf4de3954cb12623ec629b13c32e44abb2377a7175a46916bfb3809ddad0d8dda99b816da8cf7ce0e7cdfa8c336062a1891bb85c7e8cecdb181fe5545b419827a0132f8187d187fbeece22286d5b3682be27f8e96f8cfb678d466370253047b3b4631d781fe4bdd3a245465eb5a6a2fd47d5d4bea0c42ca915a9a5e6b615b7391f60f132998bf576c22b2bc1d20d8b3299319b5dd029b83e8afa2b3caff5004f3dd74206ebebec89a498acf9d7f95a0bb73e", + "0x7c0e7f46d64d29bb09077be5c681fd8ec96ed2ce4dc2829266490109e8fd4fedf74293e1399ec2921fc349deac7c3731ac0b353f05a301ae2319507729f210e2dc25b1679f469c5598846a229b9103c2b3158a19906e1246677210099b509361b81bfed44c48bf8afe16ed3690e9fb032f78ebb5cbd2c53050faa078651115e7be002bb257ed436120c041e67bd457a052ec4b4fa7ffa6297fb0d788e14ea8ad43f9e56b2d8f1a6393c40cc0c23306c3b5516564ac55bad0993b39461ed879a941d285eb0cadb6642cfc3599bdb4ba86d596e98971643370c7451d565f93672bd8f190288952966d8776a6b138db770e9131b8fd25397cca35e9519e9ab0101bc9d701fd0bcedf1a842f66a1f4db5f91ae271ac109fd670b962c1090faabc94ef92d6b204db78f2ac4d30bf32547d6ac53a746fef4e3aab89e8f53295e201e4cf4685dd0e045f1723095b05df5823c088d2fb203ce6af12687a7e64fd769caa668f8af56a6f75a87730fdae40016d3b4cc48ea2d15e6308a8dcbb6812e185747a5079050588769b07b3c0cc1d6c189bb64cdffae5b600b3172d140f65b31c01d24ce7653023333abfc78f5d77d6dc8f90ec2c140c5c860dcfbd928350f44d227fd6f694f82522dd8ed9866b7eddf7ac564be4a758e71676d702d4fd62b4a273e6f6e24d80c3ebe1f080c897a914ae9cf68e5a28782dee5552028f497475bedcd5ca81451a884b5d74e1205bdcca32766fd6d784483e3674fdb36bd372c2fe180caea3fd2b372246281000ac472d1257d6cbb30e1081389df76e3ac835a7026d863117f7e5ae85013a9946a514ba3aaeee105d45d997cae184bf15fe883dee7e9f6b6abed2280bc29905a3f29939dc3ebec92955c54bbc9d7b689215a0e41e9c4f475a33f63057a484620c12e7d9373f0017efa2f6b54ff789978a8d695297578f3b84267c83a4bf19d7a4d21ab11aa73f810e13ea4654a9ed8788fe5678650622f1bb93ed0f040f1ad59c76eb898cd258daceac3d7a3772cde90da6d07059e2f0459d900506cd78f52adc544aea762cfe1400a5c74a91114177f1befab44dbf075d046d5ef1cc995a9194206909699c8f75539cefa9418d5743607adbed861bca891a237a9a311ee97bbb98fd240cd9138a495f481f79eedea6a8ea45e1b169e68ff19244d29dbb842fdf13fdb7f3c4cf03c69b53113a68cf32dcb31decf2dfea2fff81dff045025957ad38f8a7588b1ce42df88c969d3f30b9b55264595383ce8bb2157b6b28a4cc0f50c20aea6c1af6832671e199bd9eb3494d1afce28d4f6f1f18b79bf191e95b65b70878de50dffb5ba08538893ae90728ec7d66678b65b17d42dd63823f0dbaed83bd95e0c31dd91252ad08f0ae983506e1a8e3285f7e6d779f00696a060bca3fcc0cecf87829a3c508b583b51df445a74ac430616c52b55e091632082f6d6d4ef1bbc7fb119cbdb3377ffaf706107a13905a3ee39ea9bd57a9603715d0de344b7ecfb85fa3abef6fd6d44a09828e33abc0ac3a99ad4c64353ac69fa433dad3b89444ae7e54f55f8b8c953d7dd559fbf7b1f48299f0134acba215f7de976e1c331399b24d3f372b3841f7bb3489aaecca5371c145efdcfc38951f8931a0ea52c87d055ab98df01d95e5f36a433e2298352b73e46605dde5df1263527832c9288ee358061eebd02847bf418b1f99db809d12bd64d336186f5da1a33f9c4669b2ff06b5620a83227af2d683cf3f4015f0604321eebcb225b29d94c701dde6dbb3ddcebf832c09e3fba5f49cc18cdd71b29ce1b0498b880b33aa8993179df161a0f7fe55cda316b28ea9b5abde115bb18a28e2645fe232c41903ed1b74af3327dcae5106ccba3e4f2e6a448bca43ddbf0a7ad54a97ba78419346d6e929fb3f170d432444eafe2f1bc3b9e6be6cacb9c3bef383c86a2ed2b4e55107208ddd0c79059823f2ba12b2f0ad9c454ed52efb3193a905c0dba247b46c4cf4342390814bfc7de604fb346387895b72adc4c5d92fcc721cd093d414446776fba99416afce65245328269712b57a54f16d45f7f4241db3657995b1089f109b0ad3754f13d1971ba038a3c19af06270942bb45f2098141d04c1d751a122838bfb3f02568e8715f6e034c196604f79afb2d0849546dabc592ae17a2550f476638ec243ca0403a9bf185b4df94f0d462625a89cf636f16b8c372e92da82cba1ab5fa4075f8422768797097e52187b648b58a47cd6d25b36f55ff6e143bc4c87ced92607e33806a4e34f70471c31e16f85023674a0cfb7dc40329488b9c18b7dc68387d5d9e4e8897ae21234134fb0782af633be6343f139380493177b2c0a62bbe1386e986898bd346c77806ce755eda307f945297d4093eb03e33f47caf1c8064ffb74c02593c54b2f5bae5f3ae5f5873d6afd34b1f572af66498d0a881b694132e8f8703bc74b391f399f44c1247393cd317c3d189884091de840df2fa6346b40cb6eec1ce8a491551bfc3ce370c1cf0282f105e3b106d08bac86356dd6c19e14167a86f070eb7b1b82ad097ebcf859b7b19bc79d93b22a7c902bb1784a6b1f6ecd23040e3c15ee4715f119a66df5d8baf315bf06eadd4093e73b58eec7f5ab48639d7bebdd5e807c8606f15027570756344980ed2577dba55ed23cd16f6816c05993f75ccd6bd38c74f45e2ef3ced305753b030241119ddb32f8c10e81538c526fbe1e178be8f490199e58bc12beafec0bcf5a044c72aec2f8baa04f96bb60801ae88be92cccfc74c05133bc863de62d33f4cc6504335853028ecd5f9a5d5053ef2d49614923510b0ac887097bd258bf57dafa28b324345e36af51396b49380a1f4b9ae74ae3b73eabe708f340780497046ada146dc61b5e3ee1b6402f09132bd3afd38bc46a3694d51ec37bd34929b9130e5b6a58520472353e9039e1c975bf404bdddde2aedd8d7e591718e8c64c388c68ecc5805156124979d1b52b00ee2308ae8900cf3e267c52be8a53650e1ef7cc9f281a4725a7bda1aaae098648403ec5bc2b8f71b0ce3038eec6abc825b75a0e5ef39542c0c4cc16a378856f42c956cb363a4494e3bb140808f1d04340496428375796fadcb03fde19f09eedf5bd45ce33652bf8a0158801f354c5e2876da21400a96ccc63d9a95d4f0b03b350cc719ab7b86a8e9371072a736f188ca2cfa800249b4dadd8a2a1f646c815fa45d2c5eb3c531c3f9766af171617dad150654c0855e163dc2e15f61590a68819d10fd2a0e7c27ad8f9f0368b274b2258cc9f67db68cba1185f2f1cf5df53df9ce0b7c0f2e5b246604544901e3a54d115f9d397e32a749fd7d7331e6b70c9b841ed8d6326bf3249c767c4ee2e51c8206a28de4dec69a5556539ca4b73d617874232656c1d6270cbc9fc3afd730764367c50be956d5e3e7096caab34789baa2fc3a461e9fcfae99003317882bf64460259969aa841f126013ab5f657a9a13fd0e8bae7f828595b0f9892c7595218a6cffc860d68c954ea2a1b5802bb0fa1a936cab7ad7d759baed4597f9ab762c407c801a8dcd8b6bcf95434e56bf5e26b27bd637e6ff10d8528e78b5391dd440d4ad4cb4ef9b9be765f3b5802e0e3979718b8841d55042d163a665edeba9c0dea784845d6b817010f0632c73d935b81921d767714d302f014ba74ebcd367293c8b1349f3480acea2e5ee2fb32c91176942068faff93228853736a937f7f535e34bf7aa49b3b7567ad0b86cbd81d4154d87752250a6cc5c57ad527aa922e1aea723218e4c3c3878e8cc110951353a0d4155299618c69082f303cd7f6564181ce844714c7c5830764a0dd45fd828bf347c4790cfebf002f443e50ca2a48f718d33522121d1dd92d58d561238d2406f1ca3ac15cd8e5ef7a8f8d32768a9bc3d3fd9e5fea6a78889aa388316d4afe6c1b66a0784bdc26d83aa73a047684dc4ed8c9b0b76f3977aed8af901b0710d8706814b8e37b1e4207ee488f460ee5cc8c6e3bbc46b1800b74f27b951d2158414e19ce3ad204f5e9e907669cb3953d3aaa6a7d985e8169aa691cca58983bd9482d6ecee80963776b0d6e634f4bfbd1f91d83baab6928cac940d50b7d21a4e564be985cc5cf9fe79440fd8d493af481769f9a16434f9a544314f28b8ebcedea0ec4508614625eaceec5c25faa089c61e61ec60d7d0ad1f6f105cb4f6a494356a65ffb0c57ab4d6316096854c66da9d636bdfa583cd2f60952b8cf35f644d91e8bcdb369ce611f951f826182004d077b0bf5fd1c466a6f4fa5ef22feba4451bda7a30c40fac5b5afd327f7d4eef20bb87587ee2ff466bfad6e8545dec72039a002ccf9f83a415404932155d236e420db3750472120e653facedb52e19ef643f7ae30157b0d7abe77b3df57aa61def53641ab82fbdd2312352f66b24cbd10eac21b5977a7805c53f003de2beef6bfdf0598cb013929c2183976eca144fe22a82883a01410e206589574006cf9b1c863235d9bab502e8003b88275af1e07f7621710f7d9f1bcfdf0ad0f93220eac75a31574ece7c8726b30425d4a1ca4819a166e55654ac7eec9a3ec33eb29d8758cc9725fe90987c3c9dc0cc8c7e54ecb8fa872934275cd406a1274188a64a8b90c10a8e42ecf63d01e070ad4e0c6d8e737269d35249ec7be003b65976fb7eb4801d2ffc34b1a73fc3627152771e68e4f9e401405d2e8cf5f00e65a84ae6a18c127685bb324d605cc2adb6cc4d48219f0bbbab7987e6177fe1497d616af683a8801a96eb618e1158b3941d0178751684ffd77a6303abf599114ba4e3e0b5bae7db6927c22878c1a03db1156083120db93fd8f1a68c7a68b5145aa4bbdbd99f3a857978d4b1271bac7fad30a960c50373c89fb072dfc5e9902fe2951b2c03d629b70bba856bc866ec885e6064e1b572cfac38f6913c2c5c0addb4d401ca0e7514fcd53f868a98db3bdeaeed6940661cbd900110c6e94729f44e1c6baf4ef63fdcb417248486fd7dc9f8587229981bf17f2e2c1094af8a9c3fe3bddc9878408681928057cb98a8fb06c4715f5f69d6c689d48b65ea5b2a0d40b34c7bafa80193021f67579840cb37d322c3da8f18dbe717e4b32e1b3e1da90b0a0cafbc656ccbac354f044ec15b792166f6fcec6ccab943526662a9ae26f306e421dd8bdaf1deef84c05294a3696da9da8eba45124afffa2952275083f3457876b9d5ca54f2aaad106dd0a231826fc039b4013a1b3d76a20622f57c9a46ee98a6f5f3dbc5fdb3f3b0a7379ff924ca5836cdd637798cd4fb9bda582e5635aef98eb3595044a45605912a8b054f48e147f3e979b4857f65462e8976ca1a74bb38fd1cf1638bd611a0b22d7484c9ed78608afedeab7ca4c9771742a209d0b28af7f50a1ea078d68c6d66cddc95c4c689a288ed02b0fd489bd8456faa826509fab62e3849bd8cb73aa9d5c00061dee855be6d62e7b88c82f946ba6eadbf4a74acc09243aff66f6fbd197a606e207a92af6c2d7c3f7513c73bdf0b819403f560a88cbf821d476a766aa0a6fcb15b3fffa3aab24717135c1550d1e1078e115e4a8b2288a48670ebf792cbfc83a5c1994cfcba570a005798ad85b77a1421598265e4cd742399430593710af3799e55376e46ec6e5c8b5fdb59c6d92846b4e2e45d881d3e88c157edaadf5b573df4ee8b325886bc131fa29d468066d1f8a1390722f08d537c42477e473493c99e98bf4d577eeef8fd6b853a6bc2d06dc3335af5bff46e57ac4c8eb685ee983ac7bcb3f8adc9054f6b117d73824d318c461f5bbb517a8da07a405f37980d5f746ebc014c502c01e38837b1ec929bbecd4a5e23eaf9dbe9b9818319c757389b9161c92ecae4587f478b2a0cac07202e682f7cfe18f02a4ce1e69393d06316bb825911223bf3956c05a940ff9f584217a5a8b24a5d9d92d78a7c4314e0d27cf18921589d2a49f75818e5946f1743d53e63ce6fcdd7c873d6dab444aa2a7350adbf0d4097656eaf4172a9600247920c08927a1f7426d408d92d64738c049b3f458fc1ba8080296b727731fe6fc7773326b9f75168f007a5e8915383506789b52539465c745114e90f80c4dd9b1374a51071ff99675ef0e00148a3fe107256a95850718aab75403f115ac0f7ee0ccfcba8e708bc409dc945404afdbd0ee8732ad13c9bc25acaeb80e9c47385d975a021f85ee708315ffc4926c09744f5adbdcc7eb9a56f43f344b6e7f4c80a70776880eaabb8fd9d57aab0348a07aaac4c1a56cf56520adfd83f585f13c0face1d38376fb7238350c04a9e94bae2fb8e74ab4feff7e87d04237ac2ffbcb9804fd969ae7901e765e8d756f4ef173341ea768e5ccc542e0b4ec32f4d5d8191389ffde999f019b7e2b75c06c6b39bb889f3c92c789678aa23536d3f01936688df7b430ffcb8266d5f98161cf8e0f5fbb2b2871c7e3f423ff7fe163f181064ff472b46037bb06185ab924cc25d3f0831cdf9ed909d42e70eaee97aa0ba18e7011ac706bbca9898ed61664c77e43f6ae9492edf5a9acf6eb2889f99e5ad3d51a02a1b687f2dacac234615e709a11ae6965e856179fd4f32c0602e34e5e412751a7424b4054dd113a4b698f3a5cfbdfbdd44581f3a971e64a24327541f24b91cdaf8351518ee2a57a88ed0c8f018f35ab84260e6e9f43387bd217fc4212c63843d1b681dce400e9435118cc435aeb86b67a4fd2815ac7cf2e6cb5e92fc1bdbdb31343e3e55cf40fe7ab746c7a20e2cc93612287d589d88522bb9ff92c6fd30c89d725d52494dbd5980fcd3b794878cc10eec491cc1904425e54e28db31af27e39b4dc7139dc9247f2480befef3c1cbd8d6941366bdcd793f23a5b7473098a938851349a3120570de6b1b9007a1eeda42a8d7465c9d90e1495f01f6f7a7e18ac9cb5fb90644ef6af71ec091c4f063636bd0d09524a37fb43d84810ccd371e2309a5812ba43b8c02e0b83dd32b39bee172a304f488a381c0ec44b11bf10b97d461841d78c89cc473c3a54574b46dd52aa91e8e237636983978c203e64dc2ae6bae659359235ce2f75dd14839ddcb193a175b8fdb81779facda826be8115f0c5dc1e7f3e14908bca180850870a69729c9f6cf4da05e5615b55db78a082f51804dde368e3f32a2d0bc9198f40816e8b1983565a44868774a5921d335b5e086d5fa3ec7609cbb05d6250aecb093b483ec82f655b5371da49e3a997142731d9200918ddff66323e27bc2f93a5c7e0ecd4c6811e305859fcbaa190d8ddc5526dd5eb36cf37c628e4265748038729035bf2dc790d56da834937a881905dcceffeef705f0cd15ff85a69aa153fe621b3ffa925731d184c2c77637072c75d498eebff2ce218cba4a74aaf6b23dcb39c4c4df4e54e77677456479e7310a5bd939ff1db15c7c672fbc2b404fb79b11ed1a62bf1f3359576e95c06521184b8d30c3802143397250d7385e775db0dfd5316d3a13966d62b5f032ae9ed851d9016dff85b124d8e758707925d6a5ec0e5dec6370ccd5a48f18ed24ab7fa2e676e4ab3565187757b3ee02f17d41e337432b9803aeaf84daa4af51a3534d17a734fded053ba8282224e68d1bc475b6992a524199a1c177b118835e76e9b5302afb66c7a7666fbcbc7a543981410f9cd0850fe9f67bc3f1a894771b1ad4e1c73a0696df0109fda3ca6a3a1aca9a226bb5abbb6f2370bf840d77209c781c14952366aefba58b355d669cfed0f55b65de3904085e4b39a5e8ea5562fbf8f1da52f27e2a8dba1937c63a2db88c2976e6e9c28e8d275194f658a273e538b424d0e67c85d1fe3f1f4e59682e493d8ebe56df355babc0d4c1834be94d5862dcace9b1ad07fe39edd3f942252249fe676ae1a22d11b5a1eb063892dc1182b2c5235a6a5e64341e14aa00843384bf04e7999472736871910b2df639842125908c470121d35009e59be19491bc3fae9931c8590205b0e8d0db0185b89c95b19606796c54b95158ac24f58825de346cebcd5d7eeea7488382b9d58b3bbab7c712884167336944caa0d42b943038b8cfbfe120ccc648287866bdfc9e2ae3858a9c0ac81b7109d9ab822409a72018132951b5bc31342a588b46fa525c2e8f32c2b96c5cc34c2012147f3edb4fed71020de08543fbfa36761cab7cb1974e90a5ceb1d5f0e6ae0ec85a97272f2f9cb335efc3fba79adb9f3585b34d7d97f9cbf869fdc3992f7eec26df10f9597c2fa4d28c04874200944cd8c72b5c196106d2fa3afcef12c78d3f2c1ea7e4f09930ebf026c67c4f83838dbb8d39b870150450ae37daf73948c7102d197a9b4fba48921d8d120f6e5ab3e9cb753aff6d5d6817cad7cebc903f72f5510cf3f4159499ced9f7c81f24a445db08b3ad2e82e66eed39172075bc3bbbbc14751960a526c8a318b3be7e58ff8cca0afb425625efbba3994893b90a6edc93c56812bfa78eeb7ec4985a5ad8b34e9e79c468ca4fe31309beb73540e5da899d083bc4c985ead1bb395b3589d26af1c594d5f389fb08ba192d1ca789611a832b5574d8f9ef4e4d23c89f88da5b779ab8ab22ba82ad3c4877a2db4f81b4a86c037618964f57cb7ad534e976caecae7b82a5fc3a42e8bd11988a1c2df4b7c6525a0d3d4ef4767e35bf375276cedfd1d31f7b8fae68b70b634e8aa81ccd69ea777c0cf054dcc5ba27aefe1768edf6836313bbb016e625d13040f69ed2386cbf50693a6ec00f053b2c53a9f4267ed5d458dc06fe2aa2c5e107a85af7e22e86b7cf05b5a9682eb866f106cd4996b68358f3ad924b3ab12a465040f5d38860222b62e96b20e118a5a610f1f11a7c2cedcf6211a8625ba17058358a39a41539cc0941349f02676558c90b4614d8af886361a2e8271087bcb2f0c4b94d17326fb91af74f6ba9fd6c9f77e2ac25f867741961529fff82755591a117718bde5aa13dcd3ef5385d334a0eb931818a63b037a8a9d234b7fa5856b404941c0240439b52999954476c48187c880f939aae53978a841f31e9c5cf5142179f32f478072d18f042c92b91b21e8478143a2324c13fa1223384c090a74769a64bd159f058f04fbc60104da9365a0568450de49fb971b0a4edc580034c28dbcbda345b390ef3de72939867bb1202a346cf551439cdb4e0b3c54affb0fae24c7a1f4ad8e5c00150b347200a4ef23c43e9c65edabcf30a3daac30724551674f5191730e428633852786b83180ea73693ee5e18d2f8c97f374b894e6f6333fa143549d44449f79137d8684b4ac5df2c7fb345218ed53df5220c680071e5b7516a34c0f5f3e3d26b7455884eaba057d6bd571d2d1341b3beb6ecc7f54fa92818bb2badc2a1fe175424bf1c6e1ac737bd43d23feb58e9ebf28fdf60fd43c07d4152b608f52fea4d0684a11a4dcd3fa5c2cb154105cac63b5caec208051b4d189b7ae3c2ca34f5432c7846fdaac928b5065645e188cb76d495f6e717b4b8a233b1063354767beea75405461be96a3d41dda6f860152e663134b02da6fd91b2eb8ccaa1c1ac8377fa93d5a6cc22e2ac564dc2906970bdcbeecd07a722f72dcb32aa1fc665c6fd26cb6fb68e042bb24039d6769cfbbab47295598dd4078eaca6505663fc1080527b66071b8340b432d334dad04c155b4355259cb56cae8d3fc9c46077a352ca1b9d5fe89939efe10f16b71ca4f902d30f07695356b480c4ac2fa6a93f69fd3ca7f19fa06bf8b084c7a86b3609b68b2bb1ef5b5e2e6710fecb4ddaa125a738b5787de6eaef86134d2f7f54bfdaf46b4a35552d655d30d1f50b5dbd4297ceb05cc616e14527aeab52ee971834373dd08a9d36aa69e6b2795ceefa155c85e5b8d8fa6749e13949ae67ff02034901efc1315cf6173831224d8888176e58e4126fa834c2af0ff0e56ad333386c726117b8e4dcd4c9e78c6acf6e04342bc12d3b36c9c7bfddd638f54938acbd87e74155be1cf83afb79a5e9a5141ff1ffdcdeac1691b7b6facba58b309c641ed049d1cde3ac82d4b82c11b7a6b6abed90bcf8dcd74e42fbdb23edb16bc4a4308b680431e4d6be7ae246c97c588d0ef566ea7f33e5a754f22ac3694585588dac204d10ce3c15e5ee8ff9a8df6432c07d88bcfee74fdc11f44a259968a48992123ddaf2b71fb6a4646272ee77bf5dd07754f700ee7f114ffe28249d835b4efce1facce8f9f69e9adc8c61c05983e6606b780a98f1658419375f06bcd4059d651f8cdcf4db6914dd4e9d05a52dc9b124e71bb2da63400c2d3f56bce19016713d2b1e0a6037162f76a550460ad9f77fe83e9b2f5f9745a77f544ee01994fbd149e8f1ef35db6fb9e086fb86c0b65157079a6b9ec5ecc4e2b4447ae016a275841e32e203c200788f8df051a0795fc0a0f45102232d0f91d0a82f96b5af368889aaa3d24e1bd03e3d61a197e04e0221eab5a0d9d2bb40c5e3e819a4ab5ee66210acadc00f97f46085355483083c4d93a7629fec3d1ab7377f394fb80dc04ee60a37fd701e5241f3ac55ca5efaa2e58c3bab944473f5072b380f95fff81997a6263332f3a6a9658ee603a62d38c470b303509371337fa510d0172d6936cd808d86dce57504c0b16cfaf214e55c4b2cbf26a66808c5ec6a6eb0ada79ebde8077e3b41012517ffeacb55cb4afe73c316e86519db7f88f63839446686336f97939b24c6630c6e91300500abcbed711ca89f42a43807fa59a236e288ae36a7adb61692a3d93803e4ef0c90a38649172a1a995f5a35304956a8371c8dab8f841f80a1bf626291152be94c2137c0a73725416222e119860f34873e2fa4c1d124885bedfd64c722e1df430a73e0cc80b42af40e41f2416cf8bb92e10030d06e9fa681d42c5d82d7933ab3c9d18a9b9d7bb705b915dbeadd5db7227d8e4704743edbf810fad4f3d5e1baaa63261610dd7f33ccd647fd51e9f67b8f06f3345b3a4ead25a332a4e9fe09a4a2ba8ad92d5af2643aaa994d2300b65b3e9230f5f4b4e046eb49577e7546f07f6c45101b123df9f6874a6ed73777de30bedebabd36470cf45bae8e6513e1309597dff89abec0c0fb690aeb36a4cf29d8f3765873bd4c81aaf9240230207fb475e5917e04b4370a66db3c6d1e17a38eb4563d503220bdcc7e8626ac0ba0105b73ce446b805c194c8f759a6bd3874ddc293d7201c78295412965e2a1f654cbc727168f2d2646620db258c9c0af34aee71f3987f436f8f14d8a898ceb45256d36ea6f12cc822dd1656fa4c9caa0f199768584512b36b500f423f948111ed2f4865c33181515d8ca734b8048c1a7c6d870cb7d6df7b012393a9adbd69cfefd4a5ae12060acd4beee272eb41b235adec81e6634e5e5436080a9391b5df23483952f1f365325a788a6fde4d0672162c400674f056c5fc386265b6f95fa0c651a2fef81920c2ceb543a179ce8327dfef38a0d8547c174b67ae4ab4ddbfbdd06517d35b76beadbf1d533bb6cd765627fb694f086080cefd67e46640a82d847e5cf1efd341299c67d3b1a60ca1b7e69ca51aa1fdad8412491362c0a80035af0a1f12bfdaf05cada47edd04a143f720fd986da7388a8ea3f8c88481aac2e8e6f2da9832da219094e7d1523430ace8aa13a605b009fb3d3a81c51cb1b312867b351b85e68cea961e93ffb45094fe131d18e508a4caf7e83eccbe49edbd6fa2aca2936a30db5dec59c222d5c06eb35fbe10ba161c94de38021d962e39f04b814a8a465b2e11f026a09ae7b4329cbd566aafb2fbd5d932cbf01b9d791cf4928c9e606dcaa1e96e385c7e0c337004050206e3b7f08369d43c1168f2f715dd70b81ef66f758d4e94c2e88a98914e77c82bceebd12303d0dec4531b9f8c64005eb0a7b31a54f40ad8638d86c623f9118f037ee061ff0c587108f0e43f66d69cd7606d5a578e3bcb7ec5935842f854d91abb7c4b087daf4361f967d71823ce84d79fbd957110243a392f55abc287421c6ce4e99e92dae6c4576bf8e39c1e47746562e3aaed11f4050f84928d5b6fc407c83ca43f38ed99767e0de58c6a2b82da01b542565e5b5ae62cef045031e6376da9bc6dba2b242ab50219fa6f6b5fbdce42188250d980af5bfcae2bc70f8cbc5edba8c7fe169ae273a929e6fddcaaca2c03c259a88fb3d0b138d7105b880edf6250d80eb2ddd603061ced2584065f122877b64f58fded4ce4c93e9b06cacafb6d6901711186bd186876f05981bff8c3cae79e3992e133c371e3eceb48f16c5b1b9eea8fac8d68b5c71da7b7e1c1b0e5a503f74f74305fe537fe5e18a1cba866068e285ef75c69875671b1c9f25279b13abb1d85002a1a49a2cfd6bcd7d7c9c3be5322efaee910747b8d2a0fcce2e8987a1934b667389810f23496fb315883cb8133b98a8156173d63431aeece05d26ab3816f91af29ed6412722c2d4b8760bba3c02d21c5e9a9d20b004da64db5262d81bf9c80dafd518e940ca3aea2e4ce71f89e47c4a54a177b686d4f83671413e08163b1c082c5c472e38d161d2b44027b08dcbe58b15e53511120e425a09e52e7d9d5a6017c21191511e895cff7a5b1af0bbf6bb8fd13e46d736411dbf3d43da1b46269a201c4dc269c78a019725ddce61eb53a8fe4ea043edd76caa535c3edb534a1d4abfb9f23470484a49fa4f7a6c3ad967471e671241b75d5b57cfe9f7744508604c4b6edb3ca97dbb8c1d0266abe2a6c6472588030660370f1494190360c4833096f3e28a4abe86064417412c327a551cafea34e61555553ff87359671bf3df02f3f511363e8c444c378f805ce4254fc58718801f9d67ace36b72c7726b75e71d231eca19a5bde07a534427046c28e0f6781095459d2bb6d124a8b45cf0a38acbfde03121dbc5453295b312f987a3b7770b3f31aef23fef688b4928b8febd5a19799a3ddc4ab7a1b8bb0613f4e8676ae89cb0264d0d23594f586f5eb623d20c29b9af3bc645bce8feb5d56f7ba768f09b4359dae27619f93d7da94339fff8fa10899849dc2eaf51b5fbf15d9d9c3e250025a7c67a807457ddaa94fbb55d89a44cdf1ddc83f16bd76f44678b7a27a7499600a5f739b13802b205a35de7bb1f2abd4f6d3bc1fef9b9da4e1998a02911817bf128907dd0bc0a19dc0872509eaed4398dfb01be4a9bfafea9ea9b34441a5581a8494649a55b84546f46f98e66508bb05c929f9f0422e296b2249bed9f5530d6a09ae205c5bb0aa82118e67d903e5dd69b50d7ad02ac7b7236ed14dfc9d4e43d117ec38f0b8238859baedf278125fc673dd542c91c0814ec6ff278136fb223da9b315995967c30c8b9f0be89510740fa5c48cb31ef96c26c4b1aacf6004e0783fe18ab455e751704573112253f03a05acc77329dbf6dda0029ee87908cfe8baf4530d24ec5e496df41339d62aca2bd7fbcc68b9d7edf79fc8bb0568f4ec20fee437d7c2cbaad5a81f28dd7c4dabfd8096442bc571f55fcaf6a865b22ced7d8ec4fce6ac643e6930cd18569eac8b55753c5c7028abf8b882c10e249a4883c8d128b12f25e9370792d1f33b460de4b4411f6c86ce259e48318c269ca1578c4bba6321e7dd1f5d1c3b5d66248464fbbcd838aea5fa5fc6d18949ce8f967fedc528abdbb0a213e462e490ff56dbd613fc536066410a4beb8b82d5674e896ff142780c880aa568387fc19bd9c9d2effdc225274c80d83ec4c94e6ddd61c943433700513fc02b04b2372b5dacc075b3b717d7a899eb55028d7244705770c0101fb4bba0e78cc1d7f7f58e04f4f0e3fbba19541f1f9bb6b75b7a383a86fa5b955bf375ac3bb5612bbe27d83277ac8c425fdcc26a919a7b96aa690b00641c92e6a8a984409ea01a0e1ec31a8e63780460875a8278be9542d05912e073c8ccb9056f037955cddc3e7fdedc984162035e1d85d54e06927739dd4a0043a1095f4c9d899c0ccca24a6d7d7721f9953ad1997004d1c3c60d607eb7ca35fd98ada0249ce334309bd144739d12f10db733612421780f4b5369de877c5a9cbc7fff2a49b2cb7b4cea0345710e62bfcf295b03c56bbf3f22800a740edb0c39ebe85fcffd882ec6b5fb1b01e49eaae48882b686474aff3d030509f105257346de2085f2cdc4da5a5a4635df3b65effdf9d50cf8fcc27b96b1aad6dac717c5595676b51b74ea96401a73648c562776dadfe01387150719f46641f663b921ca8b346668f218327180397eac795292d8223ba04d1f7b55c9208cf00bf387b693c2c011cf2601fda109465607cf9aa746ab6b09084be49179df9fd6c3ef4cbf1b0a6758f295a97d5a380eca3b49b87f4df6030106899915beb89a7f53b11a2ec858dc470a96d77b9b8f6a6e23fb8efd4e11ea186440ebf2322ca557c450890e3668f44f2f7ea7e07140cfa50c4a28182897041705fdaf147b0f1b653f0a4e3345a208797f1958a535a390d40553e787e28dbf22c14694ab29ad97d0aa2853c287bf76c3041274f96a0d932e627872996a56a1648fe5ecc12537fd281669f728f008f4a723fcce32cddade09bf409d51bc129792f6d11113d5b8752313bb8cc2dd7a71ce1a9a61c4fb458388fc866c2fa80a9502b9a0cca99d2b6a1ba91ed865f04c3ccfa2448b506eae31f30cad5afc0868047a9a18e13568e758a2e2e2da9bb5aa885d6493b4bf13a39ead6b89e90f67ac5992c9108973a0855aea5efbc2daac7e417aa137c28577cac8f67be9f9b620a984175f3a27d544385c60e84b27728a6436ee7ddfcdd60ab6e76f37fcaa90d2b9833b024b732dac05e7454827a1936105b12e4c71fae750219cb9b38a5e425806babc26054f6f5c2d8a13ce853eba31d02c13c3f3ec70c4328693610c8c418bd3a8802eebd3f60661272a383d2713f5cd20e67a6254e7b217b5377cd63607ed932b9edfee9eff38ecec1f3605e949492ac1c238995388927d7bca079b509b0c004bab2e50154a63ef237fff2b3a3bf0b315cbf94c3f7d67164a0fb89963d24e9651f9cfce5f78cb108e6974a60b009404b646096d7f25d632dea9aa9eee1e9e88f33b136a648db84be788d5e493149aba2d5be156ed195c9a42f2b4c3bd4dcadbea21da40d07024267f8ef1625fa4007284f0dbf199608f31bf8d0c80fc86d79b4373256138a5ae27919ba88018277ed8e72f8b2dc885fe94b9557da9075172136a810f767d107430d1d4591bb794019ccf8f2ffaff13257d18b3208f717db5d8d715419eb67f70b634128cb87b2f21f9dd63ffc01a326a1ac8b13aa113c5e2606c54abc37162c405bc265a86e54847a00716cf430541d61c1f816eec1de832872848bc11565bc88fc690758ca640729b9e12ca611cc8cc15703c9877cdb9a78a74e051903f02e4ff0b08cffcc9cc00dcd4bcc4b6fdb3c2e9b508574cbaa7b75fd9bce38b4871ee7066fccbaf68fd25a0a40a3908427fb6e1d33f38fcd702fb2d1ea4d0e8f24505ab01b2cc7a122b7127c3146a381c40d885273a089b25bfa6e05fc8af62fa9a4e5829e4e39795001a9f9f95dbe0ca06eab10a8fc2a4152e3cc7e1fbb73e17490d8b9af9c9efb422146976e5cedbdbb191d141f37c353f21270a5905a4629c60254b2c848f6feb7240e30047f86a037f82b7f55c1fc55dfa3b6e7e264483dede6586ea4b07f27b8ad0fe583d1cfb62c324855007856ca60be02357e7ee9884ea9b115503ef6739d992d98cf22897357f1cefda4b4f8c75019d8852b217329356a856fcb2af5b169126b70b61da14192de5ac4c1c9a4765a3ab64fb11d4c7175c8ce6c39c467056d047f59d9f72ffc1fe4475a86ab0b93880faa1080044b69df6d839ea0191d673c3279819f68ee75c6fe9f521cc7eef223bc8aca6e47c74981c7f4ba3b2ed022f86090dd3adac3efb827d6a77f4a0cf7e1b2b68287268102ba93d51b5a163855e256e6a2bc06b3a552a18b32e75efe1c6377efc1e3b9a8b61b305b3fd09ffd7545a62bcc39736042a1301b35bd17e36f01a1a31499aa443a1ed12448f867c6c9aa7e929aff7aaa67bf0dcdd32718d911eff88f8cb56cf99ba10dee7b4281dfed60fe6c0fd8dc4e28ff94659521311bb8a4cd213f4c0cba96406895c4550a745052be28735efc658fe40238e6217acb2da0d56dc591df3b1e73c0aa31c058a6b62b9216d163499018f0c4059855a64ccf723be0bb08b01ed980d58c73379954b6d2b69277637f0e343929ba5e67985e0f20ad0344be2c9ba4434518606907cc3c2ce9ae7807afa1c6d876814fd87611f2cb88de8396b7310bbab00d735c1f3009331f752dbd43fca823b9d16ae8c20892b9806e22a9df43d269f09f4a606ae52e5edd36af5977c127b5c7ba0c0f34769d9950bccead1abb6f92820e278ec9e1955762225fcee58c8349553a7b035aaad4285edab8788fdf8c2f9dcb70d95f5e780223845fed324071680f605f5547178e1e5fe21587034a8acb8d7030b07d09e8d150b0173ef4e099df18c54395c627326b5eaf9f9b3d6cf92151ae932b3081476f648db0e150a5170d6939190ddc5bc0c6baa2136b6f8321928c7b6ed05591ceb0e61d9c87096afef9d990b30896b1498ff83bb15878e87d6153fcb4df5a6a08e0f1340c72dab0d044ef284bae6d7f72f780acbf42139a3bce61030237ffc7555025b6788a697207dc9f17fc66ba8bf684a8d9065f418dbdf1b79714c1c7c96845055f1b8632839088acf246d7f95a21df9670532784c81a73be9c4d76fd10c929011d751a23074b484dc68e67ee6455ede9c8f755b88e9d095f9634ed5b9254159a60c741d9738c783f219b5cd61e89452e5448f2a3e645cfba85f17ad16bb9a363b39a8fb5ed9dd07e131a803d8fc5ea86411e6d899c44636806d4e3f2f8fa1ad913399533603a2c339c1c592b6ea75b1ece57cd517381dc6327cf9b0453efe1403f32563a8e13269d4a93f4afaae1f03a7453ec1f9b168c1af6f796bb63c546181fd8cc567b4d820bc5d83d118db88b10cc78c25eabd28f3c5507aa17b47b95c104c47e12fb0169238028e71a938794a97aafc39c4eb7343e84dc7af92a647e6e3b5021d8e7bc70053022e252923a4981fce54bc6867d29b3affa005601a7cc80bd1b4e187ffe7819644a6814a2d35ba9728b1b91f00e81edfd0596294cc26cdb878847a0a4bb548b4d8a93d3cde9e094da17e42ab508858ace49968c9e03c3dd1a3ecd545bdd44c2e7ac860b96248ee24181e47ce93e58d74e33918b700e520336a900c395bf425d99e12599d4c248c098c79596f237693718d609a5295ab161c07759399db31a7eeb3d5f84af1504c2be69671127adb4f64868c70ee8b3d37e1d1daa5ab27e566d2438037ae303f04547ed8b7f4d10d8316bc2b52460b99d39e350345d36d7f7e0692e2d78d585f7bf3b5cd537c801f4bd88e255a37960ccbe028ccd67a0eb02708ee03b6f89288f86d3c3a11037d75e3afe6cbe8fa26f2bc4fb9113bfbedcd8fcd4f259d9d18fd3fab1b4d7db171d27b6fa252cef29011c849ee0b0b4473d6220c46b968acaeef725bdc2f2b5761266931c7722b056066b333642b18a8a9809e09a378d3bf79104260808207a0f27629247f11b6759c377ebb242e6bc24e8853817a89f902c53e5039ea36aed5985812ea3c4cac0a94eaa428fae5b62fc1f754706f1bc9fc028c8cc3233f872da850cb7ab46e9cbda133a0dbb19dc9864a1c61d85aaba365e93cb08e25e555bb935c0cd63739a7c73524400ca5c852c3dc7f584f04f3d643c30fde82a4dd22013da3035ff675a0be39e323102116ded125e144141c130056a2ca8c64b2eef22ac68fc18d3e57e113b5f71abab175565c225a599f9c3d05853c7f3cdf7b0d8b2b20ccd39f3d34785f35176962f1170dfe2524633d87e41dda5d9d1ed228af48202a32ba7a6bc7ff79e0317a62ae635f44b0e2c843bfdb7f63c4b3d6749f47dcbec4022f1c94dacb41f592fcf9342480b5cf46a6d80b23223d099c895292b32b6e0aaaefb47d8ceaba00b987a7d146785429612c3adefc1bcb1577ccb5ff20ce36fdb04de0dd4b43c4f246db0c40e758074f817cd6d6e608c0ba9055ab50c15181382a177415ad84f9583a4f536298c679f13100baeca5bafacc934233dc3386ec3822ca50daad0595d5df4d5541e22c1e054bac43c034d91aa84cb4a89643a8df4712b3f0aa4522cbcb90954dced3cedc61a5b3163fea0fcccbd9be35ec1acc8bc1a844c2150c1b636f20ebab35ab7c5a23be63fca03b183fbe9f5b14dadff2f00fbce12d6564e18bc398284a26b9552fe7ff949ef3d6bc4a892675d7b839ce343c879eefd86aaa556115c6183ec6804a124a73b0d3e8b4886d5c9abc2a0124167e6b91c4e5246c488d1857d3febc526665910faa5786204a2e39f9f00e553b8e0f14ee19c4f22bd4426a09af03cc77c4ec3cf12c7c530b66c83c5930a36015c443615b257b82fe9708e19a7fcf5a239a2fa33febbdf0ca80e8f6dae51fdc67eca3968527beb40d9f3dd94d2daf34ec7ac0d4a7e1fe95c96de727045a9a7c9ef443155084ee9895b56bc9f587754350d98fab7e424e4debcc4b1ea0dff2622a871879d5537dab0802325b97bd8fbf82831376749813b414cd25f2b31156d6afbe15b89de53876e0251e9a76abc104acbec2cfffb93384bca5ba6f2a077f7599dbdff8968cfdfbead242a210a657dcaaa55b62fba4c8c951e73450045f741720e8179ac1aa272a1b23de1bedcab7202bf2ba6cb74d5cbd24db40df2dbee4cbb417705dc6909f969fba2594683c5e16435df40b3ad34eda725f66372a9761c908d1691f45af8cca0edf9b23e8fd1026452bebd8eb8f4cf145b96c2b64b753b7b399940a504c66a7336535fd7a170d195b021c958685bb06cddc6364e522d36233b22e8227b94f5b4844da81e11208be88f1e05b9f3e4b4de5f78e13f70801f47f47e94aa8f45b36e52a829888d0735e726cb862e1a84648e5b3c797963a209cb031f02d40d568e0020c351c3813a150e28ed540ad4a02c3c0cbfc88deb5e90d47b2b25b460a395d1c2efe4e1262c372fedfeec3917eedc7d29482bc369674ef70ebfa4cfc9f27990a9f07ace863ae9e6fad3bfe17af628875e0714720456677106215add930c11043876fd12e7c13f20cec9b1c7c3ae2882c2cf89b36735fe77138dd458eb60d66b9cf02fef551f90a9255e9a8da374d977d34ba25f7d65bd934d82d6e446776770c09522bf5366f6d83938c8bb349f99c8b5a10e5cb6a6520df0cbd67d89dc07a4370dbeb1d252d240942e7b9bfd2daf34baf58f3abfeeec69a8767f7c48df1a934dce3ecf062e4774799768e18332c1746c377927ba6ac2f787ad3068df2cac6495deb34fc0f1badb163e3728bb475b62ac2b372858bc8c6aea097b993b4dea0a9d497f414af35899e6aa053bd8c96fb093b4c6a96b100888e339a6ac890ea603a65cdc7f07c4907dfb09e32f5388d0332aee385fce2676e405012dc42e2dd7a8856b53f947c3950b27de5552225bb5bb2ad53370b4c41daf947f3e9bb7e717110fa645461012dd8d2bdcd3dd775b3d7a5ad370f7c653c48e725c3b68a7b92380a84f668fcd36a43a6cbd4b888c7fe5fc34bb3cd19fa1398e5fe63c8f502b5f67ee7c3cc42fc46a68cd959ddc400013b5ee72fab980ccce1858818a2421804ff68555a421a4c371d2b63c1e659f3e8f1010cd9ebc5f6bd70627bd253f0d101f3b81ba4e082a7940ed69a516a689d604222bd333f1a2e82dba7c423f1b01441cd3f61b3c237c53224b1e9742e8192b84d96d15578b25d8ae4a1d5cbf0c8580392baf3a47dec780a810961152d3830001cd1268ba3860cabac2f741c041fdc48b50098d9a2c6dad23791ccf6cd87da6d590f2d5a3cfcebfb86b38740f552f69cd507900359f80e72b6b20c1a76c7dcd3ba0b7756a4dede88f2aa864b0b0f72ddd2a42db6bcb097f1b1ddd1891135060d3d5763dff2466d02decea6459c058c93d4f4d946401380092c9c269aa39dba22274aee662dd4b6604226f50f5f34d3193b041919c520712f37391b7e7de0c6610beed72290078a4884e20b122920c2c29643cdd62e80f19e6bc57ce2f114758681fa7e7fd5769adb2a12e2eb35a9c176ed2cc145aaa79fbd5c6c716e136d0585be5ee651c7f3b5880a57dec30f9f16d737716f6fc344e48702a94354d29123cfd8628d9d9bd911572fa8b285147f5456e333a3e1220a35129fbc628361fb29dc77de41518398ffa0f24e6b9875f1df53a2b69bf3e95567eb9db44425767cb3413ae7068d37036885e657660737f8c00d63843e5723658359922ee52daf2d69da35fdd40970eca766dad43b46dbad5bfe2eb622f7554b8498a0e1096e2af09b51bc678e007040966ce937150fe7bd66e251a39846575f7bb0e0b187103b4336b821903ab58f95fd41565935a66da4def09009aa0302b50faec04bbe7c4366a76c53e1d04d40b6a285b3fa4d717b91b261df19d52193af586afce02b9245c065f3400b46f57dc5ae9be3e365837bb51b39298b7a0390f7e102895f37512cfc23003d66902d5ed2b7cdfb9aa65220680bfbfc92178fc86fb95e863bb86f42b0287cb3e410dd253a7dc628e85c2e7d3e7bb9ee00600a0036f25c7b99dff213b88c206a80956e8b0a9d2717d2d00c6d57d3e4cb20339b9d39d20602d0d5b67fb2ff696e6501c458535153a98ab24b866e6958c0de822b0e87ab99221a5aa867c687f3e3fdba02acd31a66cbc3b1be78dd54c45cbd63c3fdda084008af594b289824e27ffe3e36defed72be20c07231d17c97006f27d6f64b969592bf52821524199a5da4a8d4f8fbc4ee69f1697da9d7f0906b57ab50ba75d695f2641baf4acd1e185096003b473a7aeea8fc283d16dcb041d87e38274138d8ac105b2676e4a159de546e033aee0729843f6fb4a873efb9a3becb9b4597548ddc9fc54a0ae54358bb21d0ff681107e2fcf2a03ebd6d0bd03b37f154019b0514ab951f34024795293053d24426eb9c4f6a09f12581e8f4e66a81dfbdcc82e6948faf5ff48d77426132ebf67ff547c0fb53d2b234947beed44d7dc47f905429879deb2c06ead41c3385ccb3b1710a1811451f2a422aef3ab9dc339c77716a1dd5560b23b1a73545afc73f8bfa98a769b1ecc4974655c36fc0fe4c516cabf6059b62192702af6026694d6fb4c2fea9573b701a563454ab973072976d38137b407a23ddcbc972943f1376ee53febe2d7019607f0528340d25e7bb845a49c551bbbacd69c652ab00bfd97f2f4490e3658bf478d4c8c17182b4b2ccac31967f23bcb4aa8e72c21049ec85bf096e0d4b167a63fcfd91b9705b9f32ae471d702870f63cac646755fa0863b4c03ab162061a0472f5657e00901a5e2654b448ce0d0df20c50c61bea7b4a1da80fe25c1f91e036992e77430159f4ba56a2f560f77aa1c16118d39a8b970e4e84550438663ee70303f826abd1c856d482d230a5aa5c27094b8c6f48ee5cca0bf7fe081ac7b2462f331e662067fa5deffaa82f872ace705464c7c0b5105de7ca9edc3c138349278e6f9ab04b20895c1ad351e1dbca939ebdf21db18572ac40a8b40b4e25fdd14795819782bf35db5a9fd753d79be4b9aae3a03f726193caa783c5fcd38b59287837ab5eddb4e3239146adc1c73351c9e0305390f5fcab2961ea839dc4948dca2014e9a1c5d75e55f168c7b40d65cf445e71ce23732bd3bda4d1fc81fc0862b1b8f5db61c523e66a9ad21d2925b6f36c98b92ae6e60301ef2021b968bb242a634da0f35e68d0836b6675cc833273869ad79c4c008c15a285730d969c2620316c01f0b49ec14d4f465ceb066a7b3e71d9b5b3de746aacacadb3425e86c44720278b47350fe45042313ec90911e8309ed0a2728547c7256af8e9de6d3702a5df05b34e25bc6af0f283fcc0f3da898a6a6d6350473dac546659903cebd5b136b359d700055af2d0c41f3f94b0e70ff38e3b8d3c636a6bf636771a8d5e9a83b996ef6a0b5b259a616357dfd65f3c514a9fcc0e660f4f15370d4d6b43b27d91001ab46f7c09358a2897ef6d81e146c9088414a551da39024643065c4ee6cdd8dd3ff802c11968691fc843aa5372ce15308f2a6540a8034dfa57313923009fb79a21dfcff39908e61fbfd00e0782d576cb0e7136e686fe56870ae444980175720059f2997b65163060786842512d8c54007fbf5470d11d3e41882e308ff092b2f072d9b5f9f2ed7eff181aa6b60536b8aebdcdcedb5ef36e71de47a66f3912038eecb68c8881a889a25969cc2c11d1d0a1e1c8089cb41a103b2232c371f64455f47cbb1d4a3f240d20f8c8fb8c2b5f6e5097ac39917710948f003198b8e5ec7c81ad167846431c4c3d026cadd633ee8a2d25b6ee4e95412d33a851a93c1880b0ad028a449a74198a7a0b6a1142afdebc88790885b2df5252d13f6f6f86a30b0e74378a39f5b84e92ef9fe28a22cc73c2fee362b3c9143f3d215a93d638e043144b4d08a76804a42f3886442d99ee6a007a5c9eff088dee6f1a1a4ebf6bfff829ad72b2ee85244db470a21d47173134fbc2797f44d209592a39f9a57fd60076133102bb04cd604a75428ce0d5b08268dda0794d334b5e17f6d2618b5fca53477e321cfaf26a4a1a4c002add0b3f4d45f589fc88cf83ec871c7b8f501afdac857c0a9d8c574855b515d3e241ce52cd4834e4560fefec304e2e7767826123db0800d871e9e36714a532f6395b39f78585b0d599f1bf1ed6027d433ba35a5ba4d562d88dc4dd9433aa0704e56f1c447ae624a5b5483fef0a5fa127a7b41d67f6b0de4f02fd9e6188ed7f52af8778c016696eaa575ac2d8140bf6dafe3136b7f3011402fb411476d429855fbc230495f44410cf657471b0587d1939fa182645a7138a3aa110402e13958c4dfb6eab8ee014b19e39ffc6ac53046e0694e2e23d69562565272bb8886c910870ddb50cf1cf5799e7fc6811bc3e2b9dc44cda527c3e78b4367faf26652757f3e7a104f918ad0b38ebc9b6f72a562611974316d3d3bc0a65657c82c71235da4950c8a3f8ee25b79f1e71baed9affd87837d76eb62a3ef44ef165daec2e30278c7a7ccac529e6f2057b0626c148485546fac038bf646c19e5fc37527cd3e854403b0d47ce60e765435e98f812a3756931e3db30a61d7083883518157015d8f07046c00db6eec03359fbb109d330a2edb6c909fd99334cc6f7cbbe5f56d3147e271c9596d2a3210fe75a8bcbccc7a008938de8e1b8213092d5fcd5cbd0d3a337f804c9b2af48dd7db4eb08b61913a0904b5b49d1982acb292a29929712343dc8771e2e0b8af0375f2ba3ec2ea9694801a5009cc1c152eaeee37e04626626e112be77a7c8d61b5970d9adda2dc0f44d3e2d51c052302beb555131eaa2ab00d678e93d5c00baaa105ef1af134d7526b17eb29aef20d66bcd57a641fa7ad29ae9429af8735d909f57eec89506723580274ac629b0ca165eede97bd7f35760fd0ff576d66d2a68b136ef59f41bbb3ea9666742de049b4b17b1194d29ef4df05fb95ca509654c83aefce3c1f95cea25d54bf7bfcf4afd4083b229fbf4b2f5ae77791b5634d4fad8aeeedcc4edd716517a19be1d02775cb63e30754a881016dc15da4839e5a9fe9216dc804742e4087d5845c9002aa6d3e241cfed6159885c511673870324c00b8f684013d333a8473acf90354e813022eb5af7be4d2fb9eff49da192ed0d0958e3e8dc2c19fa81886a8465d6b2abb3a9707854017eda5bb446a978db368202ec530ff4ef698836e3c65ab0e41cabc4d801c44670487dcdb3d6eac4449cde4248dbc990bc39de07e85ab8b4a83fe43b49a18c4bc264646a31caf93d6fe7cb30e4288f83cca4e71477041d924712334d054b01a99c6c6f3ba25cd03e505f1a38ba1f41ffa9e8eda402f808767a500fdeda6abbe6196209b8e85b9a9ffe50ae0d8e54dfff26e79740b83e33b4faf8c0cb605f19dd8129b19eeca6d38aba8d7cd4d99409e556a77abae632103fdbcda41356fe6865210b1226e5b5b66736ea9635575c52ea0ed23989d904a83addd6800f4f11e2f42631ac087210fb3310c148bde95f61679d3738154c36bda30adfe83739d470ac082e0d2deed5e3e63b6e430f4803e601bb47d8db8921434587f7b21e1a7750a73f7598ec3c369eb7d8d3dac321e4593b34984c8a4a70247695f07b9392a0759213dedf3ab1f9ef608cd55100a85093046d66f8715ba2595941e33b241be6c8d6c8258c2f94f635bc08dd361c4fca2741ab0d60f8318c4f9a02a9ea6ba35731e0c26bd5b43e9db24dd157d0e557889e640890a9e494d59ddfe96234e139f26e4b13b38b5cb06d2c9caf3699572ff572930515adaca4790d6e9cf23d17a62ec5047e66af9d0b7edc6d866ecdd0fb2fe7f100679523ad47efb5757f79a26b7275a131d099fc65f8ac445d790623bf8aa60a3673102c5563c2c4a3f58a13809a097e52a0b5dfe89ac7b38ed3e7064d0b387786cb0f50f3c42ad5f8823cba1a796e6bfe6cc71256347468fd7edbc9f5ed40340326196008b73777791a83226951def49d2bc63aa12d4700157fde462d20974b12de267c235afa0a64f4927d9f5c9b882fb943bc75fd9f06255f5d7ca6c523be17701828bd226c878b0b0469d0477a0db85665d62eb477b355aa205154b395d7bb00b34de955a5c7649e06c633b23caf2b276cf4fd727f450f73495a80f5e35544d2314e1a9163d812b0a79208b1bbebf0b4cd77b9ed8e112ecf5db4b04aa00ef9d266859143e0ff138825f7094ee22a9768dc7c14ee62a1c655654166a419fc370d6be08331f779ee3254f98304786b7915005cced3ab7b8ea515ded4a94edcaf36df696bf19c2261fd11887045bbcecc6d7ee9be0f6c6f37de0e609735b0cb3322bced786fa58829fccbd0a9f6cb0c0a8ad3b582a6a67c2c25286f09d6b385bd4cb3169b6bda22668512112beee51bb8679ad0f0b25db42825cc8b614f36357f521fa71af961a1f8b43d568d7a6b945d6405d071e0e0a9118a65d4dd16aefe587684af5dff749511e921dd69dcbf9bc5c6e61ec6f36b4f5885db5b56d52daea11da1e4fdba65e93b46d40310c7f15fd43449d3c7401558e44b1e2350ec3633f5530e770039f6e2d3327fff08e5356ede3b988f3a310c793796c3073ced5bd4a646700ea8e0fea9d2d846c83751316ed5cb5830cac327240722b339e51fb34488c736ca0be7648d3ca93dedff1d140ca4b97148ef07c5950431e30933fd1805f2cced6958d960804dd66842c2ce831bc23b04ae8ea4f54fec0825244ab442bb5cf01dff6216158ab4d6d49a2adb553d616fd499cf53fe5c3f700186c9a8a06866f2bccafe517421cce6b9003e311a9291d4411bd26225f33935a5c457ef10abd1322e285a1278afc284b01dd5b2754365cecfe2a532d153b4aadd73f5d46171e837d3a78034a7b113f4f5c432b14cee68263ea51fb9f6ff9b2425c09156a4cdae2b2cbb0268ec3687bbc0d1b277bd37be883199f101d89b9c7bbf8d2ea64ecf7d5d8894adb1bcb02a26a5cb21c2ea16c5046cd1b9a7121c618ce6ae79ad2e8ff1be461c30e68d525bc409032a41969d878e95758f5dfe158fb9060321832cd79065a61d84349d7907e8ab1767198b490b7e941bf6685b4d3f670b914ff9dc0f380b270df59905d7c128341b1d63d828421176c3042251d93f7ebbeeb110e45d1c90790aa86a26561ee1dac144abdb5a95e6e637fc79bc7added2587188027192f7400009bce59f915b01c539a731bb8e9813bd57e6ecefd4a241e924e32d107c55ee0012b40fb26dcfa7e4ca1aef1aa8ecb08f91998fac0fe99c8ce04c62107a899a04e5411be20a56564e81a450683be904c9cd79f35bb87443753bf0e130c25925b9308e3539f5a5df1fa419599cd360026da1cc1839b6c2216038e91caa53b5b7f552a2f63cc209000d73aef9e7cf62e1e653050d7dba0b5677ff709dc6bcf2b1ea4f6c0cd14db72272d8a17a7e65e94002d62313fe1fc8251a1e6e55b029fdcce72e836478d95baca1612c69ae9cb8d43b7f35e6583ef92f8d19ac8c19dcf6c1d406b853be3d4e342bf082845ba36da00ec8e655d9550f16dd193089b300f7c8be90473051454ac105d985fae2a9e1e7e594fe8c249d533abbe31300dadaad420cff81d7564a498216d5cfe4571be624530201b288c28ea9e724a7e280479dd8ba8c872a652796f2462bc8eddba1991cd797749d4a91231498045660acd2625d2ad61b6277c27bbed39380c731172fdb24b4550d2e36c24e86b680dd0bd41df90f5360170b2024cecaa1769cb619cd87ff943204fc4d66534ebdcce58605e60cd2a04bea5b7d4b5addb9009dda903bc0487b43f48514499ad40a3b9d8acd5a355fc752cb55d9bcc72d667450a9a4a2441ddf8488a7685e9f603130f3b74e3c6b0e77fe0b6011a2ed42a3ce92b3339f0db836b67ff40d88243e9c4c754c4618b9f41b941a69d8fb8766f36b66b2b8be52be14adf4dc57015d359c00de7aff8d82c9eb50b68ea0f0fd0958be1ee23432bd0428c84c6cba2577eef8fbd71245d374efaeecd204c9319fb41589250f9ddcdd830f141a39b0282532570ecd5b724571449826bdb82ce829c98aa66ecb8203d7fcdc794957f63d342cf2360c897c7896b46b19c7f594839d7342deef80443cd6e43550da5dd130adb2a1a131405a5446cb1d66c18cdf0f05038ca2e72f1e6369d8407d35dfc17ed159b7ab4ac0442a13b503cbc6a66b29f46a7c91fd4a3a615b3db311e4fcf6dc534615a25913085df7b5f0cbddbbf1301b182622da53fff69041246bed96495deace4d8fe7dd265e04c4f6a79a7710415795272b9d0e90717192c32924ecfb20c245c1f0970b25fabdcef984a67de5d9ebc111398d1ecb266c5fec8125da39f217de948c4f64200e8876ff661e89975a422af1392ac474e83d21ee2c7d1652b78f47a08e256150d678acc804052645cf13f93ebe4ba3198fe36ed2bcda4829b6d4c037aca7cbf16993f9c87409df309950bdf9dbe445d034cdfc1805758a734e309dbec16bf9dc615f3492a0c5905c363635425c6eb02b6430677ee2ba79a38bcc05c9d16711ad915412f4424c3727c71a01a6e94e5ff65a01dd7852283eb4c64700e444b456581f60628725c2d41db9c3bd196340691738446af75aa6311b047f0e918ec7fc4e6bce383ef5ab4e8b60282a22ea79a748bf35988eb44e4d7fb576c966964f9e9868b4877221b464bb08659486a61137da8548148b206b32f7587f1a429d1f0f58b2f196ed26ef815854f1535d6cc7ede83f45e3f8d19cfbe12520a22f487ae119095dce12c77af8644495a52e0c4d3c06283c65edc3c17ca74346b0ece8bf6cbdb507d95ef2e14d06fa21308b01a0ce1b69505a22c3f28520230af9099194ba1e7159a5849deda955d4e777d27120f4b3722bce5f5898b7d404924f2911fff59cc3f66b444a6593bed841a4695e46b76ed0645b2ed9335aa4208a8b858bf1828594b1a24dafb6efeb34016ed913ee44f3282aeba046b54c0c2fc936f14d103afb95df4ba1924b81853bf3b10c1c0c6f9bdb942125b326ea00a36baf1e15e145ff1bac85936bd1761930559fdb17f194dbc34a05a359ecfc658c971466126d9cef44c22d69e358c27385a8d03e88294654f5e626c43794a7ed350b363771b3efcd421f3b4bb4f564538c8adea26486cc208095a3c5720443c6f68456776e47e9f43ecd45a5aa56f9b319fb9427c41ecc5a8e855ff000414006631f918be5be9f9b283d9d34820517978f25e7d2250e19de3137bce632cb2cffed1f6c78e0f70ca765feb94278109a619188f034750d4de01862d4efcb2b5ab6df119d538c30c52971fbed800dca305832b23b9f08b145cf2a188190141a394853e5e7c0bedf2917a054f7ac718de144c8c90a0c0449206caa967f47a9e8b7bcfe95baf6538922d2377f56e79702fb5c45dad900a2f89dcbd46fe05311cfa375a28d4121402699a877f034244f41e038605852ed0f4fa335a03019e0b2633dd40b34d71b7dfa6876f4cf633b409ea303eb03c9d7caff9e919d25d469eb9c2087647c13447149fa758af36dfa8e57a9f55cd0796db73c2408785842320e75a04dc2656b9e31d0b451f9f69848414afafd88e2cdaaac2a776bf563fe5375502d512952e8b14271d4e8ab55060cdf6ed05476b18315117cc5f89601bcaa6bd9291ae5d44e13e9662bf65b13aad423e0f3a869f8464ba5cac8c2e2361770c6d879ab94c55e79881769889f303323974912d3baaaaec13747ac7ed049da7b3c71b8d7fb1dfa81e3184c40602a780ed7420823acd883e2ab247f22ccab7f195bfb90b9fe22eaf15a699a0b6095d465cee6bea959136ee7260ff8f87229f2a8b60b8b549b977a47c12ca0995554e4f1be44d4f09404917643a3182761d7e23e7476ae86a13058e5c5b201da0d8d21fa02e4103306a48bd95f0abc594ad85c69e267c232750746f519d611374a942455bf9277ef76232164ea7e737742b45d46b43a32ac7d60169c8a69fe27c8256c01144625b3abf10f1857940af8cd492c34cf69b3eab8ee5a261799b8f6241182be86134944bdb9caa26f000f00e4704862c2e78075465bf979cccf7584867637ca57a7d307f57f4613f8f3c484c09f73274ed3d0ae8cd139075893b26929cf58acd0abee76a955d5f33497adcf20129dbc6c7d5c3dd39d860e350a4e426290fb255606e6cae3d1cdf6f082fef95fce0062e6749c39ba40fbf34f4c8bb917ca339e020a55b90b955b20b2708add82aa7a08b0b525df10b77ba24fa0b44f7a819649dc10d0ba2b80568cff90548199f8d4e3c0337d343ee41311e1dde288fe29c432b0f2fafe9af02f08840666ba9d3087c7335fc062dd3e64e8eccd0e03505fdb80faa0194c75312ea39b65e5278225896009ce01612c3fb6756aa7865b50f1f3eb286d661e8200e13a487a70b924d7e3ddbc52c7ae9cc22c5650e201597a2fd5d0d6a8da81bd51782f3d5d5b3fef8c96b0a505179017d062f44814928ac8439fca9711b2bd3f6dda7ca3386b05b2aeed53875551b196c664dde420265fd1f3aced88b61a56449f041c02b573600cfaa058f7c95e286b4332b35c504fa7d01dea788fd5206e55924b473b8b3a39d3905f13944d1f2796fbd71aa2fababb05dbb7d8add6b5899f6097ab8cc6d7a139b10105bbd8a7a9b41ed2c83dcb1bc6989f03e8e9777d286b36fa2fdcc28029e8d4633fd6eb47977cd932ae3dac93cfb7e84e8a56ba7caa067f786020f94dd9d8b6f9c0fefaf3f1d3dc546f36bfba6645b5774a6ecf88570adba311e62751cf6761b1c57709c3a59be45371d87d8f991e3a2855082ec1dd864ff22db8683946511aa35bb31f5f1c20106a847587fb351fa0af5c4e98bf6be2ffc686db1108b4f85e38b530880469bbcafbac5bb6c5b6c2b3e9e6bb0c07e0bf5ac3b950985f91edd201820de8b512027423b3dc61e84332526111dbbfa344b62b78ed42ca9f6ce8b04ee64327f7d8d80be1b1f3c876ef139a80812c2262acf655f4b7aabc00e2ae1c28d3894b6b17787e4086e1b4eb9dddef5c8d5cff47cd0b08b24ea8a74940199fa06f22bb3ab9602ff29770fe4c59e2e6dc73ac46e87653bda36b4c28d34f54e1d6eca3099df553ac05dd1fc64bdea66093e1bd3deb8adc2c4e683c07f56620168663371fe79b87d2e866f784a5f8e6a638c810406569f42d5aea9e3c213ba946bc21acf085d359aa0b5d24dee03fb3e4288aeb2a2994f80eacf0701ffcfcb52257d91c0dc323168ca4e71fcdc7c808ebb1f560e47ef62828c1576e305bc8965a78d12cd5befa53fd9693835f8bc8227e4ee549b7f429013512045c49dcd6b5f5157f415335b587ca010a56169724e7b10ab13b0499cc74350e865d61bf6dcb298b865c93982b502d623531864fcaa22a585c7f9d98899e5a869debdcea10d3861fab5ae1f1f13b45efb07abb866eb5477e8c0f7b2fff11015ada01139ca1dabe5218d9e6b5e97fcaa132f9b36550b6fbd2d047b0bc8169f8e9e8de11b25d02e30672807ca927d47235a771fdf0858778f357a2f85931eb10364692b513adfc222d2a46aabb4c687a4eabfa3e7e84091f7fa200d3349c3291b26cb65766a9cd20f40e0dd32c7a5b00c50cb448c392e87928ac6e5ef3a872f097d9ef76630b8a8e2537f8a747c213bd7994054b2eaa747c0fc02dc043fa2ad73f3a0be8627f2f5d712352e04b375a5c9d859dc5aa8a964645558e81fe810d26651628bdca0f64dc62f7f9bd3a6b8f1afd43f15e596bc93366b99559a556d9359a1b2a2fcd0dea8f646a83661ef2822290d7bee20655230a338fb430f56ee254221153cc3e09fe38c8c077936a552c28357128a319ee8b73b387e2542d60684ba91c305df6a343d80af2372b648eb5faaabe7bf3f65ae4ab7aeaf4355d6a4f03495099e2b3073da23f394423c44dd0820f2a397fc04c23283041d39505ffc6b4011441cdc0c55443fc140a089237dd40ce50ad2f3fc9e56e3903576f632203cddc39c877578e3e4b636cf5485da4b5b5a56e063ae7600c5a278c1beed2f676ee17eae5c991a288dc46c09bc49b5fa3be06ca0efa44c4f33548286a934a4c2526dbb9a0ca03e3df2bf80254a83cb9e94a0aa2c51020dae7322022e21e907b7f86f77bd7b03300e2b779ce3031f11238c14ce371936a2d802313f01e85eda9dba3b8f188199c96d351781c501495e11cd88e0aa08578b587c8cf49b10869b34b22a05c46c9ec1e86ea45698f3ba08bc028a03769555ce0124abcf4680a11b423f53e92c7d8f7c201d03c2fe985ae8aa5d61cf3f6bfe0d48617d0e46764d9b48844cd3b066d5708ae88f83a74828e1ef14a1542ee9cc6dbe3b0e9f0a00d675d0e9022030d23e65275b4820636b7d4cb0dfc01295a08d2d00e2b362de81dd4fd4989c6585dd4a142568835759ff9adbc17cca75abd9d0265328d076563353043d016ecf6c9843fe63e23967351688cdb22c16ad8f0d2d96900221a5909fb9c92856fe534a8728748a00df603e554092f63317edc16a51da430aa15d0326bd49ee101cf769226925a5e1c810f7773235395b386ef455e8127a00f8db717c1aa56968018ac9576fba5402293a0fc80e290d72c8ba84e249c970447b5a6827d59d26df889b3706fa452fc9942926abe54e40c7f61d335efe0c2d5ebe747e04be6168b6718a978447974bfe1de01c15965226b1df45b5c610ae0777b31b80c349afe477b4eb661910b7e34cfb587c0f8cb60f08a96a914d317f66dd5bbd8766b74e456ae7b6348250199bc5c0abc237cf28f6aaae8c47daa7c92d83088206c686192821b3ea966fe44d3c5b280d403f61fb1ff8be9b2e87165df07e2ac1b10e3f0a63ed569b4f06f139b1686af08a6decd91d56679993230ce58789b30f4f3e850ec7663d9dbe5e1f24902726cb781ac2160fae500899b1666e8a82068a62a9829579e6a03d7105a71dd738da3df73329298aedab3a0de7854605eb773bd5779b14420e40bb9d7b28925620eda217bbfc36e085ae51eeb04d9e006a5ec5c32475fcd54122719cb55708dbc745461d479ac3b3ea1e009babf89a9249b3a7c7ff4cd842246ce5fc9b765d5df873c7648020de0315f161bfa9babeb3f642cd37ac9e911325442ea9899f0560e4686889a5fd68de04f37ae53233d399846d3d0fa31a12b3f0c65ea6d2df1a279fbf4a4306ce54e538892e3101b0bf1929771563aeecbddbfb0bee64382245a8a295dd178a8ae8b3357bc237843ff573be682b936f528098fb394a4076e9c4e647f3fd1b2a0771fa05d03e135d935afa4280fcaad78164796dab09c1b7da2aef50c48bb574c1f1d7b6ba3ccae3b2e1315731c9bab0dff4220f236c711b1886cd6160758009ffb092d796f6e4a27d316dc3b5004b1586da4c63101e98396b13a881a37b391f3cb951fff4aa90d6fd0c61f12d5e6ef51a779933e46ff9983fb79f9d9630d7ffe9a9e246b7a402f48a62de6e51596193f6726d077573d3346dcc3605a8f2c7887d71e8ca3d7ae422bc2cb16cafcc17089a7913b173b1a500d311c6ed73e6a1aacdca082ca35573ba2a8f9e427ff393c0759e05c2ef68f95ec1c0f6ee1c3170ecc197cf100958a4cb04d99fe9002164f9ff232b12ec8a4ba83416508234f52ee7507308a1f46910986f57c3816dd32e471b9f363c03e46dabdfd8a58b33d4f5c9ce14400abb0aa217ba218fca7704c713cdb0151f1c26312706a69ccc82f6c6d38b5ef8fefdf0ff725f495dab5cd9dc1744d0905e2ec4ed50270f886e13dcf6dbc231db30388e778ad917ecaf831401e32edfcee116d28d5078d29d7d8777a7cbd761e1dc59c7ba6f43444883afea5b5c62826d527c5a0ec22eb8d869ea55df20e660f43d75741ce9cb4a4a7abe1d2a37d07844a1c3dc0a399bdeec86f9d45b6c9f7f0a147b7917f3f74f1b09fb7ecd82cd6ab78114e5c9b7137f5e8cfca95bd479da1e28078ad43ab539994bfc3a001ca9ebaee86df06d36ae7523172e3b45922e4eafc03cea12a23ce8fc7d1691843892a7ee93ca0e6223cb153728b48d3a74880d9c2bb3be50c1c4b8d8835bd87cdecef7837f55f5d5dd6f152fa228ca625b82b25d3872bd4f6204bc60622bf4716a42577571ae72213b71992fceb199efbdb5e487befe511b04854af1c4549af00b4471b06f3e7733036eac93d7aaddaa2419ef771677868559c5e0f377c50c9045c5c471459c23c57499aa3e4fdc8327ad0edfdf9cbf43a8c72b6d95eeca282770c8150602018fe5bd556cd2a94479868ac2069831bfba58eac8793cbee2edee362727d378cc3797839e39f5bc70fd1e80d9fcc1bcab08a310eadb50221bde5319a9760abf1950a45f43d0694664d83f6a6f73d1a4666854bb7bd3b17803da41eb69f545b26358835ef206fb671235adb465808057e98252233cc42ac22c5ac85390f6937039ba217f12d72322662275e001310ec7c1b0feb2bdf251263a280f4f54ce24dd0255ae396ed7ebdfdafc3205dc8267e89e3e2c8639ef7f6f81f9b5ad55dbe11ed52e0af2ad71a7eca442e04b1d1c0434ed0641f23198f9893b8de39042f4b22157bb5988a25c2af76994df700e5d512783f2effde4def90845307bf1cd731c13b66a4dcc5f25829689e40446f6a47fc25d329de18eb703a26ec8291cf65c2de7a9721c0327d17dbff516fc3248e4660c6d44e48d7cdfc7b05dc93d2f9b516ad68903d96421e21e509b9395af22d6008c7015e824ee62f5b2fcb4879e65557fd9705bb99cea488f885a8d2ec91d7ba8d1e3d10d7cc90c7fc87b09d3b2fc96073172692d4ceb0c5f8c8fffa0a369afe7eafa3783a01c2a3b39e1bee1058db9a7e0ddf21c8a83b59be32aa4e5f13cf61ceeae7c794f704b46f029b636079f580c2d956c765c05becafa5964d87e93d4ac76da154e7aeaed3cfaf9bb657c3dc01b246ffa4a407f9eefa2bf055ea83c55c31e66fbf2c940363309dd0012fc6b13cf14ad4610a756338d8d3c1680df3990e3078531c8177b274df416293e72ed5ab40f7f234575b28d01d44758f22a6d4fa45801aec0f285fffc350456139e5a36106d9828a283b576b274d731dba1972a02b898ea1c1c95a338690acbce938829f349d4be331e892f40ccd8dfa6f4a7b4a0d668b63d0d56466ad4181018393fc05b02ea4b378537385b20397023e258942de26b18126ef2b17bdab8b39bcc3f02acbc3170596e5627e9197ec421c31fa2d91105556b9fe2df1e87ae0e695b9bf14ddd7888ff8181dcdb43ee1e5eff6a65851c9d68123290c8610829ab3b4a590d6090e6e59adca4977d8e49fc8095308bcfc14e89d26dc894ae3083318bd06d12a845f06da08d17bffbce113c9f95cc2fad41a381ccccfe9a94f493fcf67a0075d72f5e94a31b865ea93b63d9bea62f1695e15ef64e7e5fd219ef8eb764a6024c62c45fe13ffeaca8c9f25cb68b815d2690695de91fe3b1a5dfdf74a7f30916a9c641b075f022e305b271193c96733bcdb2a87e0b9c140b5019261482b82ac3962724cb3eb1697479ba1f37d12bdfae179ceda2af505b502d2d4a99f40fe4ff368cb030cd4925cc67c2c2f06817ba0ba3988fb770bdb689a8dd75af3b38e805bce86cbafe6da26f070706c6ac5e0ed3bcf067d3dcba5804b201f5306fcc39793554a4ffee749ac806a8fdb3825e77c14bba5163b79b2945e727bd6763aeaede6b73e7c9df42bfbf307e9afdf17fa92d5c40af66a47e41cbd6fae3dd41e67362442e87990b2734271ad73584a81ce8b669b3e5bb4e6e71a209e020be3b0188ee663a1c3a94da14f521400ab0a2108e43c05ede7c5bdebac5bc1653c4f782409120e30167ff81ea4d4ecab9e8b7e4884f8e10866bbccbd351748efebd9d0fc433bcbbd67ff38e375fd017c89d0d74da8a82bb4d6e3347a787d2c8c79aa10e8ea0cb96fc4c26a4f00939131cdfb26c17c80e9aaa1c1979d59e5c5df90cb0a8eed91a321cd4af29fd5ca8678485e611e93aaa44965bb83d2f68172100ba5e2d88c04784a13c3314bcdf81b02eebc9348f06ad3d0d0ad1513bc02587f0fa811fd409387e39c48f7d7bac6fde3034826e5a1c9f6e91bd13a7b5d1d28aff2c4a619d86e75f57c30b12015bbe7e00270a452f6a14f4a68ea8e00b28b25607928a3b83b94875b4c12b0106bb5b69fc94360a0859705e57f51228df91bfe705c1cb4579bd312dca9aa715b65e02d9e452aff2739b2a3fb0b5048389d3a81e9da60b87477c8f0158b22fd432f55b185bc1de18114c6f7341dcf1929329ab0c93154d8109355995e138f4040e7524be69e519de185c341ea2ca772f3b9baecc53e7583cae52fec12c8020d8d41698e9fb108362d2511eade953e99cf41c89e46aac52ce7a92480bc55fbce9801fb60f621b699a1c57ce9435e99138e58293fd0aed0253847aec157ba9a5c5037b22b1d02925dee89773aa27d681546843fabe8af9f8bc3920424ae0ad9330c126b0bfde07b9afbbf0b921648df5a48c0974b7e44ae66dd73ee0c1ccd05667126cde910910b0d72fed6f3f1405aa119417488f3673d50df39d13fcdb2dc6b9c4ead20130a404e972167ec26623b0f57679ce2e419e1eabf3c76c9aea4c0d6397739abc18360cb2c69109de0a3b91d85d07d420eda13bc79510de939ee64b45c0b2bad5e8dfab1eff0edc60b597d67328388c3bc39edd9667eb23e2ddb8b93a67aa5e6aad8c579608076b4fa11a4668e8c3fa857130e6654c9271aa526bc00229fda77ed7b09dee5e4a18c70ae7655e6616ff624a2e26c2fdfb9b47ed83bd6d9608ef46ba9241a193df857ab21e196e9a916b46c3fb03ca85223d69616b5e4eb4cffbbd0f232613cc3117785dae679135a0d29bf8686bbec49989b0a581c8e37ab581c070658b5f448ff934562ac3961898f3112423a9c1ee75d2d07442ffe3560768e5df686049c7f74d08e9ba5a7fdb6cf1302cb5137f0982ed3ecc793a0aa857a9f13fd0abaa383b4e5be71850764732bdfc1518a45172c6fde773881e1144a8d315daea4cf80b6887d4259adf95dc6e5e688ad3df61595f563d6db8084df464731ad95c9736cb8983adfc4dcd7f4c3e038a57aeb61d40a3712087a1e1aef42df33fcf578b0995b77c33cb29a966fe4302d3f0ee355f809936dfd09d27d47472badd2f63ac619b72f32c7045bc858c6d380aeb2b3391c3c0067e1a4e23ed1adb94bbd1b4b8a4a354427fd327b12d45856c6a81ac50238b254e027e2e78ae7d84acb77119c317860e89f85c23497cac94a2111259fda8aac88f4dd53a8337ab09a18a306d71beb1b6889378c2b08df71689e19e3b5211c855285e3fa339d3a45e856211a461d9a7674be41744457691fb690c4c90ef7fe1294178a09079bddc7ace9c7d62f7ab7c2eb19d3128dd9b987849cde6653b71c4a9adce1ef9fea2bdd37c1ec02514385c493c493ccce5155fad1c355bcea3fe95e8acc0a5846e6623a70aa989fc7b2c02b6b65bb817e893ed14428a3d9fc6494b9ec9a6638128d1de15e9116ecfe85841108bcaa43846ea7dc8a57241c2a04f336e52764ce8d53a330e967166390e997fc0ea26057044cdfc913b04c11527a76b7d24389771e1de5b0695364df00f4e357a1b0d66eeae728eceb8e23dddeaf86859c26c3eb94e8b0387d48763bd2c2c700a866753c0aeca0a21b8c4d5c1ab4f702ef1fc8273a190cb854a89cd05a0585376609eddca9fc079f4b015d162f9bb214e564366b1c65ec78fd1e413e3fb9193690d4e19d8f97c9bce6ced1a764627e805cf102f35320701c49070a0cb7d63f9f48a87a1b39ef16272e440be780f9d8bc57c4aead6a1f0f49d78eb46cb1f32e49c8aef11571f1274d2ae036feff6c2a095bfe5e6f8386513909e8fb74b6848c4b70c4a8b26caf9add36bec0537f9b213de9893350ce647406e81a90d6d3ae4a01c9921343d94e99bdfd4b1f8e419eda47c30623025442a55a8807a43ee28b091216f42b4c92f7800475de1e6b72ca0662b76f8f09f6a309f54106cb9a50d0045ea46b3ba7ae18654748ce313189c1b423719d5d6d45cac5d0a7400b489e79e7d067eae76fbe68d41ee7b5de4274fd67286502703dd0b1f458c0afddb4841fa8f60c9df1d80809b252a23e26364111906ef2c6de0661c5900437401bb72a2fde47bc6d36962eff0932e5bd1bed51d0562dd6f00989ae2c9aa871e1e4430cdfe7b03061816cefb80d205c455c8cfaf61be4a2020990e46a753befd034b8ccab165a86903667dd3b35c00f6ad7742bb55a50358d217cc7f7d80408016064c073a4750ef7f9e8553bc61c7a850649a2ef5773e032f8963e4e1aa17040093570314db93437887330f7b423fba064e316053e7818c412a112c78bd87596871b255c16f8db5bceef7a563163a3fc9974e899e7ddbaeb479f1ea359b691c14040407d764f7654c24643a1928fa070dc5b770a21466e8e8b9452bd49755ee0215b0844cb09acbf07e361c7f7684422803d1a6f25d2047eb72c85babfb9ddb19507faeaf5d0de702d676f7ca34c324aa9d4df5e65b138affee1104ca82197586c5d7c03007c1bf0208a31abe4778c8cf8770e486e5c8d015bd0cf1f2debd684e68851d4f6261046376eba58bcbffa2bcd7dc777b28125391317acb53330aa36e9112354eb282e88b857fb5198ee242c047f68420221edb3ae3864a319a4143847db0128052a099a11eead83b92383dbeb4d144d928e0fb162c6f747a9f75ec38cbaf4ce12e6be50b2e7e693d8fdb74c0a1b503de61c63d1dad339f30c4603d93ff885b784868eb1526d391926e6925d7b52a10d348c0bb7ac85d23d6fc1079db0275996836dff33d7b5118cfcf165cad389c4b9b2d95ea1f24d4f2a13062aafba0956cafa218c6f627cf3e128451c8a39a88fe02b58a84d62dbf850abe48cc2109ae5d10c9ec17ad263c49ef14330ed7ed41d211565bd301917dcf56f4ebc0f1506b1dcbfda1f0dcfa5e7d7a39c30432663e120ddc7cd278c4a82d48999021c4ef3cba54231b19e428a1ad8a620a8a8fe0f89675e7b6e39e7d29839c6553314641bd88733656f307b9eba06f32f4d6fa5861fc966a0910fd375cf11b85b37c4e07aa80cbc23a53d6ba93e955ff017d5072dd05902ee30e23b145e12118edefe0e46c101f69b832a2bc56fd5054cd77ddf3d851164da88d846ed74e15b4236e2ce133a94662355b5e5467a08c6f5afc1c45e6be99b788715c36448810e15c33c3e9998527f54c5e819c89f576c33af060f66e24d6b0a60d5d9364d30c9c4a8b6e4edf6cc000de77efb03fc5cc777f320439f44054508d8719552bab42d6e5a6c542b274b9756933203206ce51e67b20c163dfffd402f7e3a10f2a8713f3d89a1e5f8703c2d9c0eed6c7a02fa71d5800ea6fe2782405e475c097255fbe4cbad0872082956ec70494ce9876432261733b8c7be84a5cee00aaa48aba5c54ad16753766ed05366bf324aad2fe73bea69692fa4996342f245d688cc5116ddfd74bac45f3435fa40887f154263de54418f7b5d5bf5a0c726371862aeda4a470ff329895f2c873d773e493be4a4e008d9608eb6d670f7ab83a76031ee812a7d84d9b78886db0c0df95990b88750434493220aa43ef2814868d0a09cb620485205f947075d6d75daeec2b92c8e7937c2bb2e65d80aa77c246132aea4b4920c275c388bae77f0efcce0af7028a5f4f844d129bae7b0e7888fbd8739afd521075208028555421ee334b155bf0fda3746fb0002503c53433194bbdc057607295b3468e23734f5943a7ba463bc0b5fc08a5585ff721b45cafd66ff30980a265acbcb459b437492606b7b16acc6959b7c52602c5c21b3766f01e4f849fcd302ac2929d42fa89806de2cf7664b3ae71a5144aaafcf7e96e598808e0caae731484f8f74b1e24092a75508f24a973e9db9b1ce433841a6bafe0b7f0e9f618d5bc7b7afe07b56a6bc06b3d4325c22dcb66f3dd3a3b10e3a6a2c71e7d0d8a99cf0fd9e09e0944dbd112e0438642cdada2e80a5f4dc7053284a283fcf2fcdf3cd540aea6062dfcf1daec4674fa59fdc906d9c0e844e6fed15ad7a80006c3a0264efccdad904180047e2376ad64261611fe18fb52216b4a0a0b4d70ab80f94da8fce94cd399386b7cf9682c85aa72f2c8fd1d2461f2f26c0185fb3b3e68dbbaa75d660894a32dc8e15d8989c0747afe3c5a25a82e30109aefe9b2093c7e308d553f981ec1763d98b57f98915c7832bd5c026f78ab04fb3f21b1f6027a412ac33308b573443866501c5a29ab26a8b044aaa0bf8928986d7ac97a16eebfd06c2b6c685b2ef5a13658582cde24e5d0f2bc787b9355f4b2639da47a3ebdf850a8e9766f69397cd1e68d14dc7fac0f62d0e47aae7c5907464dae6aa4cc01f3b859f5104098c3485f91bf7e6652d71765fa8da1972095c0ace3e91104f36fb124849a82dc74c094afa734326a8b9d41e58a1c4a91290fb2b9393ce1eb92624b1276f735c5026779af6823f213a7da0b4acb0bbd534b507de0cec952e247585d2af8819d6372b31370153a34f8d6cf28668767fc9729e5bf0e6668c679cc730976957f6a7bdae3b851db197ba3ed9f063d7953e2d589df0f062122047c3ef88724078d131cd1fb3ab1efd580ebf8d3e7c017858f37ba530849e9b78e134bd34742301aabcc15413d492576314b34d68b0b59c4291c81db65ed7f19c6dcf6129f0380e905ec3bc098b9577875d31b7a67d3c670eac3391433e5a5efd90889660b850394317f69c8d0e6654ecc7a2f726d1f9afa7cfffb1e0591ae138cfc1ba50223ea043be8cb6c972318dab6d565d6667b7167adfccd1f48ad7614c314794a53cbc1fa443f590262563bf7f18164a2db2e9bd1668ae8c09bec29b5ec7a30f314ea3a8aee47d2a70d8d6ef080ce53368b38dbe6016e07ae3fd1796c303351e228d4d59b093dbeb993b09c05886a8ad774100b67e3a3981a9097e8e471cec07e4ad17568a1ec465bce4ae0edf6245d2d7072efaa6aa55e3a9243937b236af5cfaf27780151de70f44c909b4f030716c355b32619300ec3c6902376c5e8e7bf053acb97cbe97d28b03820e3487353758bb76220b1933aa87bc8597f070987e7f1359298fc698402fd482cf6e8b7342657293ba5849bb9019c243fe3bcb1499389ac116f2043195b10c8fa62b4d723406119a3943722acdc6c0bb10e1409d0e06943835c97f065b45ea7f4a226295245c438402385556bcab53a9c43701093934dad564014de95d223a4b16d28dd9f0d00745f14ba8410d144b45664e756a97a98aa50331f9e7c18de7bb4be9d59e9b47a7b331e383fb81e6aba9ab2c57b7f06d199595a94705c15d330c98dd963b5f2f9db2be7f5c29abd7ddc344f06812e8b20985dc122198709885e3786231b8e382aa7e6d0fbba53705513b717dfed59d7d531e0f8ce05d364489e3a9d3ac38e931eac7e13e84df3aecfedc21736c1bf1ae2a225236dc51ee7a3fb7244cd5ef094c73f38826b7cb2764dcdbc232534e4925ca713182dce5c18ec783f19021a9f747e95ceb0cdcf643f3532fa5a7b4c8317fedb2b490c94e142baa3345ef084223880a7e316655801f36e18bd3f3a3fb26ba5ae41195fefedf767392140249e62e76caf543d23fcdc34e6638ecb1aa3da2bd5decd6d4dd3af6b94db52e420ad13c0c72e75f70615709f0e5dc9660573f94b328e015a525433a3a3d40c82d7ecd2e778877228a65fc1e05c3d6af299e0cb5c08e1fae5bdfefd833cec625533063e544c24629bab39d0c6c8cb7123a9f6d339c52ebd1e317d4e52c84bea0d905a8f7f7331bc025330985e4f097047bc0b5f5579c2cecd288f3a10f972f2773e1e890701e5444af0de874174ed072a8d04f8925d2b9e716b4f257d403c38830243b9836e57a604681d850eba327e3b8966ef83491d11529bca472a56f14476953260b716ec3ce4b47ed8d42b33a548543ae3e43be1ded6ace54536b46feb11245984c2ba49d8dc611f9ae8d4d4b70c44be706ed7559897649409c71a5d95a4ce7ffc1cfee272c212c479314686f5a5e4e87966e27f7ff7e15f5e460c6c529129f77af5e90e22f7fb47fc85174b117e73bba8e2c6aa9081103d07bb50b0db9abe91e30567b1c000685b880e5fd8c58763641a5812195fa337b348557103fd56886e760dca7316ad3492dcfc3bc120cbda315ce7f744a7d76c52216b3f79168b799399e8458d7dc152c2c81d4eb3561a345424cfccb0b8cb1b7aaaad4de4a7d6f6574bad701b491148b244ec3bc332717f7070938a47198d836f5b56726a18fd569f874ac70a6e3caf173ed62cc972f1fd02f4b1504d04573ac4286849292c5466e329e82b8f3046b4e5b7544ecda2a6a6910030e0dfa629a50cbae5b0ead958e80e16ac5f2cd8a99aeb14525384493ca3ae51e920073cef81e62f0b4ce972300f28b2988c4eac9136c3a71aeedb7799d4ca664a9b556a955d4f342f04a54ee804cbfaefbd72bb5a720fe2bc5a970de54bd8540cfe18852b1d4b4fec82c76c9a6574bce564df2e9eca0abd4fd4fb44cecfbc399b9b1a93c879dab998b618bf39c19bbb72d3ec2c8fd265350f1c8d57155a94bb0be9ef3cb67b4129e052830dad1d9ed5c9c4dd8b9aae75f49ff9d94d389bc33de701db0420059e4c884e29a60b72786447d247d7db98b28014b2584cd875dab5a1233b6a5049cef60565884b432c526fb2fe0b6a295d868f7f9553efe37e464a3f2f8dda574fa72e8e97ae122bacd7714e2adf9e2fe06a52f873e587d381d5248b2dfc91d3727b9fbba67e230bc764c48ba16259519658d9f622064c4cfd072344c581cd6ce3f023b699048ded46ffee1b8dcc69ca0985e4d7faa6cb4fa3334ecfc796f092252865073bda9fa0642171ce80208dde5671bf2859df3cb5db754553a57380e58f32c8ec9c9b802f5354c8e1ecf70bb6ae48ff141f29710a4076039bf4e016bdcdd823048f6be4b9b79abf63abda39e7d88e3ef132ad85221ff9a9c1ef97ae4460b1f8a52b88290029ab51d377275792ad1e3067fb9fa088fd413d74f432eb9e1987251d4bef3dadb5faa775738c97639b78a338e8ad4dc50e46798904ae3ea5a20f52310e1306645c9700b7a00f4fc5236154e8e8774be5beae2acb47770ee9f5f18926579e35da93d2847f69a7870a5ccf9fd8f21fdcf82cacb50f860f3ac1e21cc2694d49ccd6c2bb5a9b186381606d2b78997ee5ea52aa97b42db03aa5588e6d429fdcbda8bec76a7b345e23dfe316dd32300ad298273f66d8e655c0a7e4efa52dad338ce375701a18e4cfe2814c282a091d967502ca25eb74a22ebc846451b3a1a9452fe4c004139810638e5441086566c328b350314bea62b3937e4b8dd3442a49482162fcbb647924f76d8a8b306b5da34a9d669dd3fa21f003fdc3cfebb17f873800c4f741729ea9ca1c120fae73df838762be2b95396497a0d248b8de30ccc955c28ef9374bd27b00123fa4a42d8e46f14947ed9bcb6dd6b0d0b042495df1a6a0fad679b2d68d1423b9ebacc62e439f9ebf5696a330f2c91d1faa1e9b0e88d7622de6eabacd47699c1a9685dfb1a6522671fe31a065597df6ec284b987e948ca63486fccc85d9f43e1439c14ca56ff0277a595a39d7963fecb0cbe1d7bf2891bab4a422598bc24bbc21e4747f092737c1a0a2574924fc9fd6f9566545846f28b2a040cc450c550a2eb553b67d9f88701ba225305db0b1882dcfaa68a133d98ee5ced3a369121503911f0cd761e7da1edc8e5d233906bf3791a1d3edfd5165626e9daa66118ed4524309b9d3d76ed844b237d242540acd4a42cb186f433642fbaca6db5c7e3056678b7ad3e5a16f046bcfa986db57fd0bada7a02a1eae103debc285d13f651681140f74d02316be844666bb0a2ba14ee7f9cb10d2874d41bc6f18ab98696e426f8b5b175aa29e07db8e33a8816bc63e71d2dbd5c37483fe3d9fd840637bb6e7e065615f559737611721f1bd2f9a0b52b0b6a93579928a4b9580721ff5454d84defff468b695f3255e08e118617cec92382f2c523029eb3e5f0718d2e9a2b9cb93084c4b65177825db644970bb4e97a4ba76fe0976e607996a2643ab061a7161ad8a8580b5307e227c73f3f24c3b6ea5725edc68db8d91aa0bc62ce90aa26363c3ab1fde317755a10c2aaa33ea2a89e1a0db2aa8b833128b967153eaaf886fc49a097f1dbfdb5c068df4c025adc6325576876cbf1f80649f79fcfc71cb91ea7647eb6df456768b04df218b29a78667ff1e5ece84605a3870b234adfcc5a91c67797394bddd07ea5b2177e328187b5b04d4349e5dc04790d096f5b224d71bc2457ea006b1d44418e85432a6c3bc15f59f1fb2cc7e47ba45542c939916ba188c22c22db5acead1c5fe247e358c05994fe8bc0e70bdc586821688a3b615cc7ea0d6d859fb8cad39381eedf9f45349fb3860bd8844ef70bb47d0f0a0a010c740163f5a2b1315de08c9eb5582cd8744fcb359de3d26dbbe1ae73ebdbcb2458a7c79471b0e9d6728ad688223d8ae9c77e37628381598b95c908ada28808bf7a24f4cc48d891e0f43a815110f1c068c36de6c24b17b40456610acdc98858f3187bb831d51607e96b62765c9c5574c607b3c337cdef9685b3e739c960baa639cb47706c93da088b1cf17041e677578d1cddb9fd73c157f2cab0afe17ac9374622564329575096df57d562d511c1888f1d1e735caea8196fc17df4925c44f7124cd6a57c342ba412121c13453a3c1fde84fb8b1154f65e3731ebe4a7e8617cdfd0f033bf2cf3c7df68676fcf0e6915bc3c6fc80bc544d417fb985a0746b003e99653695d802eb7ba19bcc8152feb6ad4bdc9547e4268bafc0c3613dd2197a41559af993cf031cfdb18e2750c92d55fef83b755a8896d3cd8fa303eb0f1601937860ea542d3cb6a7a36e160aefc247e0eab69c45fc9362628a4636c5dbb15ab97623056f6fd58f80f67cd7e513e69ce9f5b6dd473e6662d8b4ce92b9eff50379444fb36b35037f75d7bcac2afdba1732c0564ad2198a02be2a93840d38803a5fbc7da6450ba21ad6587e37b8f36a55d7edb0610d1a637d455f563dd749902b39133c51ed03f5f2d73ae8678022f26a795d38e1524c2847c4edd3b48429bc629b5c5a72c8238c791144c26b0745caf2bf742bcdb0d2b6c335fa0751526107875c1ff7132f9b9de6fe29026ee7a5cc8ad07c74b26946342cb521d25ed56756d217fab893efd05b298009dde64e6de5b3da0e895c75eaaac007fbd51476567874ac57e8c5c83c12585a6f5fb27d3f72de8f901a3afead09fd1227bb74efef4040bc335b09ee111324b6f0cd214a2b662fa3c0a973e2fe314c5ff12e01d0f66c9630ef642e8bb9bf8c9d5350c29ee88c334f534f47356cfd9e9c8049e9fed34a7fb2343c673b1d366c8247a9a1f8668747d19e4b95bc1865601b9738fc2e8d614932ed88148ec16c7fb8adfc6fe9ab5bf4ea572fa972fd347b53e351726e0b90d062440c2589b0c73af771e6fb9601b2e15e5eaf3307fcf4885ee0ee5a9db15ec63bbd94eb25347013dbf2632c39751948779975195cc1f1cc7a46b448ee427df17656b0c2cf60f9e465fa51caa0a5edfe83e4803308788f51890b27a86919a75f14bfce91e76f1bc278468121ade1b75a520be65dd64a505990f3b0066aac67f2d79ac54b41ea8fce5da1a3bfd4962512b8d6033a45b738583bb1767220677984c6d6e8caa6a258b73f8a935da00fee4811297cd906b07bd55896a1050fcfb822ad0d29035480fbfdb06db84d2e8241b1b82a841f828f98e857d4fea18ffae5789afce95e7a197d92236e89a0b06e9b6d8e865d0652da5480d14c16dc4a57ae9f6207833fbd1d24276fbc708eeb4d12fe7ab60a1fc5d13b45fef11a17c2c0b8ee1acd9b06b6904f405280919cb98f7e0de35f90915dd68db43db756ddc9e6ad529eccd6c172d4e941ec50326088e9126438c0559c529ac9039011f492060477ec0d197c8ef08342a3403dcebadaf43f9e682976110d2439781d0847bb77e42c6c4a1e160fa71d5901b6640ee7c31dfd876a8e1599aea02c21aed4f72aea3b71af7d7532d9fd7de2fe9c1f2eb56ee1d025b71f0a908706cd4e3214b1ab824c2ca890c9b895d12993c0a0b78be3985c3286cbf76c329f87b0b23a8733c838dde875b3cb89aaf268785b58b06796132a1e6fa7d7e36131d49ad27d62f1b1588048e9d93758a8a5306ababa9f14904591f8dc52f3b5bf2a2d1359542f9373002a4a5e39e9ed6323dedf56a49619f1a604171153cefd02ae46bada3e3c08eea4165df7cdfe4e9618c1b1a0551909f646f08a9f39288a6b93fa89da5d9d04708d017ac8d60f6d1b26769117f2a70e5f44d8078514f93ff2e4ca6832f8bc0e1255abbc6e56705c6b601143e802d774eb58c7fecef97d0f605f34bb88f77b7e636cb037e694853db6cf18e156f2f7a5994a0d49c98155cec4f8d0dc266ae20f5f96affc2c9c2a4c1ff14eb55e9351692a784dfcf54aac88df544aab570360eb0f6bc09267bc24c7ef344d70b797e85ebc54dd414d75791bea4f1c8d70969c45cad63955c809a8a13e80eec9de17d8fb32e4724b6426cb29e276279ecaa0d8f85c97c87470d8eb3076aa89d4dc103a89824123bf230823bfd98e13ec3cbeddb92bc1d594de45cf475502fc8c38e19fe7e818b134a7c6e230120b82ec1b317fcab33c3d3f44af8d7285c68371f9ce1a19912c2b9eb893c810a49a10975d61aa4b974454a8483a8344a4ac6a29a280d4d31dd2dab51ba37b423f972bcd44570791ede83f7d544c01eaa95c8087c783379f1d7382cb86b028861e97b0f9e1412918418c9bb67f103370ebf4647146c7a73d790dec8ab7762e0aa2e06012caf14e0556676fa99ff611759382a3752220cb6483b3c7958b36dad524ec2365a05fb3478e0677d0c0316a31508d9c1ac6c661066f08da0a6637341f89ea19db72236ec782c7b7078d37ef0e228d4030b5d6aeab97c87a547440dcdda73d7e9b73fbe33e335f6734bc45603caa6e9aaec0ce70a5354063d89520f62c48fb59384e4bc7a100552293b2d9bcf114122aeb72156a12ced1cc62c327264e836f06cf3198a83380847226dd368956bfcc0e2fba7179feec71df66d4aa9d5f82977fc6ac0c17b0179da5ff31e3223c05e501f8ce8e421c7e29706e6982371753a68615a2f650263da2f35b772c251e371a216ef27e66db66980f53948da4142983943af347846a276df5cf99a0dd1a951c89d8e8344cddda6e681a902ca89cc1499c4ff5159f3eb6276bfb6691d0d54f0fc01a0308790a42f2ed8f7bc464cfc7c59de36a1bb0945bd1527f77974d76fc0bf084213679ca6d7ddaf5923db8ab07fb07848737d78cd9be4e30f00d14349d9ef180595e582049fd7d67d686a871f6a2eb1f75ecc510bb175cbf079207245c4926e6ce06aaad2573dcc6630fe03597a3fdaeeedecf2e8756d952eb8af4365afe22fee01322de45759c4f0c4d3ab80a9d69c6c6588b96d1cbdcc9b19b649c80a92a840254bdbd4aad4529d73960cf296474059cc901d9741adba38a3083fb16a4782973f7793bba57cf9233d174fb617eee839042704e75bb9dc63af91134fd405b689812a0dae8c77e819696d1f1aba576ac94fa97c34579899c46696d99cb431eb0e21b9a1430e115cd200dd333dc478c2cb9ca9e5069f43445de37a1d9c865c53303705ded809f5143b43eb502be0972e406b27ffbb71f4fd2bdde8c0299d296e5b5d1627c108fb83c8f3880426140e0008f520b08dec2d5cab81c1857c5ab75698ae12e6c1252b98c1f8b041ec47687a8c072781708f99b6e957777e6c0850c08e6a86ab2331f19e73ecce77d89eb62e7947a847910b3207431b38017dae8c7ecef138c02ce3db2147414c1a4bd12dbc1ccfa2351ec34b53aa75d0f9a9dd1a03838730ebd9a8c829125824582c20fb8995024c36e8993f3aa4f4479708b30b7b3b1fa3a5d02fd096ee3b4848f5d40e44ebb4d1602c83d853f0afa1203a36bbc27054181a70315f98d0f52354689b1fec53e707a85bd7039f02957c46f37d92dad5cc55f1a146f2f9e348411851ca6bdbe5aaae584f8c16bf9c2f6ac87b1485f758465dc6349370a5c4d7643739215212452bf67220f96bab9dab7d82c617855dba5e68cdd91af020817dbe1b43d297540e6943a7a5cad0d20283b0402449e70c5f06f2f51c0ad9c1d4b677c02fac0247fa2b362487393ec63a86b719eb3e2e6a13e0dd387b51ba5aa4554b875ffee5ba6eecadf71762e250249f2cbb741e10e88193090650076c0df2edefc1cd3787ab2302c6d533a34c2374dbe1df4a42b7a48992cd193e35049b437c72fa8705a56bd824ed2f7cbb15175e283d3557dc6df7537ba2afccdcf7eb7dad48140b1424e9be44bc397bd857b848c38d173e3a9d6b01274c495f92b03695b4d4bdda3122c185c61510562e4e759af9796ef294260c0185c51471233aab2ef81f8a70362d7fd2972ebe4f2d475cd81a173dbf4f14241365698df7cc9975d1840064139fbd74e1584eed577b2c1b22118cd02cf8a34f6f9a98c661461ae9cae5f0ef85b5da85ed141c6ec26adfb0b57047146b1d7d4021181f648fa864d061638e448783ad8b1ae789d20e14a0e51d12ffb7e8414789ba070ab2064566097d327c12ff9f9fecf199a9e8e5fde14054fa949978271c1f3c8e9561b2801bc99830e812672347e71e63dc4b4a01722142d4401d17f940d768cc4d241274dce87c9d1eedc2f3a14b3089d3906277456b3501822659114ad8dedbd0f229b159c475edb20fee58d3e3929164b7ba4c846bd3b01acf23affee8d54f58d9dbac50f57d298e59488656c6d74abe6fec0bbb2c4601c536d4855fb7f366f65de1fe097c3f2f93fe1df2c013f2083acdbc3498b57794e447ebe8a7de18494deb4d77b150701f3f3b0ad01271267668f8a0a41492cb6bdf988d7081f9ea5b09adf08bf1a241700238d4b3571c62144058561c793331e541fc6d7abd1cd91724c00b06a799b229cf84e81d04effbdaec7fc85d236c8564487269f43ea014170003f034f2115dac966edf30d4d18095b249b51af69775c7d2ef043150b2bb6a1f5ddaed14ed6f28cf295f4d9296f2ba5dda9537c651b69395147ad5bde61dae10540426c095fa46d9062a858b6ed3a099b47e5ae4b4261728f1519bfa01cd1709e23d32df2c839fb903e796089fdfeabe989188b5c1ba8672101b5e47b9b98734814133562c109469dcc80fd814fdbcfccae3cb17d64261b1c66f6ddb0959872c154d139d938af63c35f26eb19215a61debf138d1012a6d6c58329b4927138d8a3c32905bc21c6ec9259791f88e9796eff4840e518ab61a2fa4fc4e55091b5779f7c6ff462d8c07d497fe93fb398b5a99804e44fb393cbcfa0a265e0917e39014238387a780ea4380f18df25f4d1b9e76a9fe2b7dbbf1e6f2dab0d8addfe9e904faccb9ba753984243e65c60a8ccdca3eff5bddd83883fdb38e208bcd75a6c1fab6ea0719a954944d84d46b294c4b97b496d8bd4f99cd02c23e93ac34a62480ecf1c7ea94831feeac0391c931724c4b1c44914859e4a25c2c809f3de01f796a2d5c95206966f28676c9203ac2bd241aae724cd2aec94e7c1464838c47328f98211f5c7dd4087f6f05257b05e3a4edf7213e5f2d3ccd7dd8fcf38871b3d2a243b368b2998207e0e3c92ad6039be83fb37b4d8c5e440ee38588f0b50026bafe1be10b43f33b483340b9a756b85b57fdcca01d78d955517398aa0801f88957413ddcf6e52c2009f139ce83906bce47139215088cc716b13c55910b64132ca0243d1dc3eace9bfc9c134d788ce0de9a3e9d8ef37c5d7cc33c43cf301da7946f59db7436b9762ded2e19e760b53db1a5013ab9ed14b7c9456a96e894adf49024c3e0eac92ff7b4aa276a67beb503c4082e8fd87ec9ee7e308a26e738e28840a95453ae195979512b8949d3b5a9a7b0f6cdb54d505ebf469494a7ff68eb97dabf6a004eb1aa2a6d30020d8b84aa39781d736dace4cf75239a59a2951cecb7e6b644319b62a41b87759ad31bfb081c2f4a032de8ba26605efa803b61f54a442d58842864cab7f68445c708410d7c6e21e63ef5133afe9e428e04eb6d0e9227b122e8a429eb81d683951d733a19ef713d0be3f4acc2eb91c4cddea7b29c11b4d562fc9a5d91d87fdbe5b18a3e4b8912285e8c8829ed7b1ab9b03bd9edab6f8d1173dd2e953714181a43f7cbd292f7c14ca65cfd9227c75e69e0d717824a3d3931cfee9b001958de26e57a46e07c9799d6c24f8cf834a07f3d78983aa8b6a37155357637d7f9dee21f7956227d923b4aa7e55610bae4b7350cac7f1959dc0f94a7de47939aa61c6d558adfb5d4b8dbed828b6b9d8f083334a51ef8ee3c4ce2b1babeb91b0c7343ea530b5d40af8f27ffa4c3068a32e572f87463c7bfc2d31f4e68455e4123f8d40d12aea9e2a13794b96f8fc687e9d12647d78981f92bbfb40fa65742472e1995eaae1600d3f278a0f69a7b240a017be7ff8f00d5d160bb9a41c47a4dc4ac2071b160cc601cee171ebdf55e948e3fb96f9988bcb544089955d04790d16f59f7a390dfc85e6e0efd4ab9b635ea5459ed67d50dcb54a8b96287ae12e145f34dc79601e6df59d82ea97a6f545c2636748a6d4e965bea9b6bb8d4bd1d83e6baa04d491eba255074553072f770a9aa311ca62c67d207b1e44eebfd86a4e9d5660ebbabba8d7cd9bbea052635fa9de26ac9991e1fc4fb811fde468d334c9fa0d424f1aeba0fab30e075bac6421284457c6842971aaaafe896b7c96a22daf647c9f14eb75b0bebe2d3d48a123e28b529f92f010649fcf47a05e2b0874432dd0e5ad0d85cacaf8fa7600a978cafe9bbaf165aaf360460d5b41688706e9dda1e8450253316f744e9efbf684af778274907c3a48d2c3de778cea62d9f6df53d750a11c2c7f23463411304707e16ab2e855d12f19edccfc4fd86de5c11c10710ee1f6db871d03703cca3a22ebadfe85b5fe3d06a6ecda07b9948ed2ed3ba9f8d8abe501053b0031b5d42c37f874ca248458aea5c16924bbbf3375cbda0bed1dc4d32bb98aae0961971c503c8fee0e6fbc803096293707a7b0cf8db7abafc409d37bd90d716ab7e8c4d9606946fd207727522288b60eaeafbe7b62420da4a857c95c726f39fc654497b418fb9545de0562f420cc1c847f8af992675a2ad5cd9845c93f31d71a4008be7debb4945e57121ff70ed93c5f8344947f7db3b0ce6ed2ab2ac40c8885d3576d933659c4adc34d3aa3e8c803c0adbe7bb42044e53734fddf40989d3cb5746ddc4d6d33ee3f83989a6ba9d8dbadc9293dd3ddc8c80d3485d0aef9e39022e317140dfe8f0f316b8be4a738ebacf48e8f3c38a53e4c4dbbcbd09df9c3542256350dc2c43e5675d9f0fc022f086d71494a3b67066a95ff19a4c3818984a49a583f1f0de1162d1515455b4749d740305a8b2e12315253daf5d815489b549112a0bdbe4baf6e582e503d2c7388282cfec4d465b4d6c122e63ba4887b29c159de59ce8b2f75a6224c393f443e526c5250ef7e01fcacc702dda539cc264340326a3fa2b0b80b9d98e869e6e17b603ac7a2af34b97b5e36d932ec3aea7f26a99de5200090ad7139d628287f4002f1cceeb0ce76f25e2c2707fa294280a60cb855d17bc1c3e9bae36226e28efa01737f6e292617271a61740d16ac5ccafe878ec33121536b1e42089e5781493cf7e157adbf9ac09b51f93b416e61897df33d2f0868e536cadd5b993be9341bc69e1978e4bc496b667095619012663e7228540295f3d182360c0b8cd01a9a23bf98b1aebf7264e8c4a9db0c5684afe31e682054549e5760571060586ff039b257a35ae68d315e5bc35eef283f95b455e2d589d561d58d8cb35c3d7d54cb2bd13b974ab301a443bc322288e43e8e07641e2f11195330a2da8f2c35faa2bb4cb8d58fffca81b24c56efd47f3293903d562225a518106939ae1d8e15d5309de35860e985860950fc487794644ad9622a62e5193fae3b46a982f91381976351bad3c9fe776499d26b07d175b827321c6c3691c9c31c2c3aa164f9c7a3cd1ca8acfe65d1218837b9b1dac1460e08775f7e72dcaaca8573b80d754b39ad88b6c96de670048e378001ae5d54cf1ff17d18112b3510be72f883c06be4bf39de0f34cd4861d6c45bc66ee8ffae4d4f286eed2a69bb533d4f9e77ae103e4f3e67a99c14170b023102c46497833a26c3b824d6b3a90b98c9eb7d8b61c065725bc0d14930f991b1f1dfda375883180270f1a88b605bd9e78cfcad1894ef5a4bb50be2b433cb2beddbc8e4149ce8e9d5f2e6b0c19b6559be7a999b9dc8a1bdaf8f6d8a877419b32f113694e24e73e58a11ed355cf69e7c4220bef28417f0ccbcf68f2e46e6a6090b5cc864bec7383e4416231913dc54fabe39cb16b15a8ab57cad1e523999ea4a06f7c01bf7a41dda7afee6d735c6c72a218a052bce54313077754c15683f8fce1ffd84d8a6cf605869a4595081eaabb1888014abac70397047834cc1b562f4fa9c861eb54e850e68829ee3953970aaf831ef8393263b0d62919dd9647487aae71160bdf615f08d6eeb8db0d5f989e0794576441a51c8aa39f0f4b080fecef9cfca5c32ce8e88137e35fa2e4bec6e5dda554c29f7fcca2151b83c11c429ce5c55018174a822362c9ccea592445c12a7d496bd6c3cc7431a57a6ed42d9a433019287a31c0f88e53858e57b5137d4a435f3161228bf3c534ccdd5e40c42928a4afbd2b1ea18e416eab1b8d5a7e4395ef51a868add0fd2e806d798c23c44f2dd4e1491743e6a79b7ca4f8eda138e9accc6e552caf002b2bea9570b8623e6ad4158f02f8e9fc50675b405c92ad93999e7ffcc285528c9a4502c617be317fb544e67850470382c379b57abd9db7e07b174e62319bd3398914297f200bdf03fe16cadcef82d568ec575b74204085094bddc3ae2f8bd1fe35cf98806dff58b87106811bfeb6beb0b3624ac6e33dadc6f7b6faa3ebdc9e12225ffb1f187924bf72719ad032d1b0ec546c66139540b76a0f2355c19e178d12e202a57115fb89353322e5096be61793a7aead52af43bb437fde067361de92c259b63d5c991a94d5c0bf8fc1f46d00a3e5d325daf1b72f3f65b155948fd5391e3de5a17d5a14a6639cae6692bd8fe42736a3220ce9e48d1030b53b1ca1b0e850ffb6520e17a184ff75cdb812707c4c95fadad9a2f5e0ab1acc8f966ac0eafefaeb950847e2db77e1367bde239e07ce80b876f1a7432093a3d00795eca4e599c503de0ee5ea96aeb18b5d45fe1bf470d33363043da7bfdd8e28a8df839a4f8bcc40b609ce310dc934cd73d7f6828a74b0405238f3590203aa1f88b8363e1d4636587a3defb7f87f969b571fc2704bdd7723e07c7348101d256531ac4ecf60509ef18859a53600fa06f2d404699fd318c164dd78cf8f4c858d18d687473aa2d0ae98b12cbd1a47b927b0fcefe38d7e7689ca57bd2f90abe48f210ebc0177a5a279e5f44fd66861cdcb7081f7b39edc80dc75e395f4087635fe318d7c7d6761e04a50e54d32b9c610f574f7448054b6241ff98ee51e9bd71215bd42420b51fb4a8f88e8382cf6877c1a02151a491fe786e74179195fdf84656f177a751b9878200a18c6e5356b7e60a0e6a460081937622cdaccd719852258983b7df59b650715beb20cc242861c208761abf8515e05b90675d19fa5d3dba88a9578927e64444ef3208dee86e57295b4a10e78cf38de40e2a59ff9f4135f9e739c988205499a5533998a822c50904a9e3936e23b408a995e32ef99c9c52487dde00ca9d17239d030ff9746e3484ed1bdec45c8f47bc57453cdba88894b95ae4b8fcd56a5e09f2e08b620df983de29de85855bc427cd91de3595dec8d11fdafd16aa604947be5bad57609904d7d664a453b7e7ef5ab492473c7a6e1986e22d6a371dd56d8c487693825efe659bb1b42079da98ed45698d0ac67b7c0ac36643131e4df2fffd27259dad002f05c8b8068e7d6243d14e0395d684308f7f20be38a278c5de9dcc5e6f3dc305e2636bf4ab28ea5111624ffdf9fc256b6c30b3c92f069300b6d6a369e6c53fbabf0f8af635b206efcc9ad78440f3a2b87c2753555df45b5b76af943059ef093b33304dd434efa5a38128407f37d52128354632e59c6179d56221d03aeb56db0ab3ff80a6b029025a47ef8c2e43df65fed0bfc22f6f096d0f609831afa7fb38bc824a632b6aada9e884851fa0a1f5cf36779aed7d4eecc838907599eb4ec1fbb1a5f2c163074c7b5f36b5394f4a1beff3c132996bb1cb73e0758d17bd6cf06838f96d694552dcb247ccfd4fa50dfda04180b87fc2e9affdd831a9e582bcb6da783244e3dc98b5052909112c42c468c2ca74af55694a6304a3040432c67fa1f809cb9684780f35cfe5da56df35b1cf6f64c66e40a1a4f5a70f18d0b910b326801ebd94ccb6ce3c4dc08d688596b5c7d590d1a19c0b3a390f0dbab1330cfc1e9d944e031392a8b1ec1adf94d61b978b915b0cc81432b646fcce9d408a34c343d26710bd86c398fba545665e8aaa6678a131b8b7078b9ff770c56c89e6a62ab87147a6307c17068869ea81fd89f90692e5962f153f34f56a6313ed8d8ad77a7ea553e0dd0b8d63499cea78daf2baeefe2fdbb7ddf5dd5b85827747c17b382d0008432fda005b0134a4bfc515e9f28486e530e1df2ea0516c0ad9828efd1af488cc728151173407c184b093003a66e1182ec7a9405bb45d0ca9ea1fcfdb55fec777a325ff8a64a26e8b6e4da1ce4a4e47b5c9caf5504d16947295db56857a3c51286466b5f5a26b3b0cebbc34eea3a3c8fa67d04d910724f6e51d0366f6a29c1e6f6e2fdb7daee92f2e78a4a750f477f73246e064dfab1f6b0135713a7322090bb87434e85414dfd1c786e91d01302d50b7f95bb1263e44ec66673f7d12a375574225bfeb85b6c2af4b93616c101814f60673df79b19274b9909c73d0177a6d26a963800514ee5bdbc413129f176a3b2f57777559afe300d6159875481e3d6502fcfa7eed6862fc68e3783c748a8d03e5b38b3ec00b21ee89feaee4ee12e28855674a846a13f03af21894dfded9a83a27b0f3307294f43dde28237a3dfff3deef6cae35dcd5386413c5f46f84664858a6a6a50a0670b4db23bdd600a6a3a66086aca85fb404b70eef710e694043016b388a560869e4bd5f6cb2490f0fe2d215313c08d6f8346e61a9203a01a2c7b96d5946ff76596df2cf1063131d50f8255bed9094b2c03a93a5eba5e4ba6bf28105a5af7dbfeb2251e12a314ac1b58a0d3818f7fca9bb77c5ac63167cc5129c251c5f04331e0670e603193b8b637f7e2a11f99a0ea5ab79b36e4043ee204279e266eefcc1d2e6188caf0020946d63a45413362173cae4e84402b946ca3e5aedebab5a6c4e369a9133fd47d4a0170933796a5bcf79abd1c6a3bf8620576cecaca684d370e0d085a4b4951886ff3d8e11deb65a44ad5470fcbee9656231a93e30c66d2b34cd38e0685a64e2918c4a02f2933a06c13799d13820b796ec41aeccf5b531573c47413789a848da860821eb3b21e89700580e9a1f2ff360ba1fd1c494f81cf14b78bfe8d91238753b7a29c1c6afd229a168d286c73bba8abe2e20889f66f7b9d2c6f7a73fa1ddf0f10e087064477f3c1c3c69e188ea03e2cf0d8c305677700fee2897fde5b9cac88c2a4ed93bdf3d354fcfad0e1cdbc8baa525330529fd877bf9a6f6c4c58bb942d3997450f34f00dc9394170108a59165e46aec070b008026af6f49ad7bd336e4c518bb1fab701cdd68d957c6608326bf39a5fe68949f0f5ed81f40ba6ef445fa029f1d02c8e80547aa08a2f8d549e8a389cd890ff526e2168e1f9ec446a037123b246caa8d80530f5acbc74a117d14722a558816b7bce863093738f6b286f880b5ceb53a89fa528ef849b00265a8d7923168764d5158a80004bdd55080c792dbe4bda4cdcbbf05ff6c109879ca4a9aedcf7c9db589e778cba800782500217a7e0be31beef4e89f027e56f59c30f5656ebec1ba05a8cd9d4614d19d9dbe148008f099641d0d6e8a1cdaaed26e1a749988ba3d372778263b1765443334897cfadca1f37d5130877835b05ef0848d1e64ae12b270bc1c776e885c200039c549bca24de5ab7108885718d8df028750a4a9dc4292a294b1b63c078f8691501669fdc421cd38da17c0bff68a4ff3b679f5000da1a2d638bed89aa724c6cdf0540434f242ff77dcd32914e3abcb1c614d1d7ac21910e5607843919e29759be6d49c2e9fd04c7c3d8ff2ad58a000206f6c2ab881fc12f47dd6db5dc56e3347d0fbb77381f9b6a1b4342548afb8690cd9527eb554d86e17307291831bfab89da32718091420c0fd6fd1015fab28064d2c261e3a466861a8d13a94e94207120226e5bb49180f0d068eefcb5ded8f84fc0bd4dea4ea8fd2aee9f79d8700982a2275761d5f0f3e4841a5c019457f122703ab808629d467d73cb89bf99fc0940b4e7ea96c47c02579a23e18eeea4e01e2a656453d0f1d5adaedb06532330f7d6be087febc0fb7a4414355362715a8127704e93ee7cbe34efad2f7d4942c1fa87499a61e620ec273b38dda610c76c22a8f3e55ec4112c6e872f6e96aebc14715e34648a2f47675aaaf8a3253040234b4140e21ddde096dd11f48943d21a480ccdb96ab27b996a75302f6b76ebe2c7a8850c5e6af55f1ff156d353b5ab4e9eace1f7d63b96365f311aced33cf585b75688bc5d260475cab934667d4f7210f45977c24d98471db38d40b8e69204d40e80436dd26e80c182074d8208a79b604792a9c00c7e092ac1a9ada908c492ee5fd96d902b8282b8315ba32823b416b040eb89636bda3df997e482b11c6e780ddbd085367722ee6ccc2dd2182fa51bcd5b4cae73c9fcacf8c128ee0eab398387d9bad1ae8d1bc8d236579ceca8ec29f38bd08a945256f3211c3d74ac8e314a4f4ea8a9a80662d5d51bf05f6c4f2ff086c9e8434c05a0e9d914455e0d45b1ad2e26230d577599e08a994a6ce05d3dfa127729d90011e1f0def8e0d41381427b9469f20dfade170516c2f07e8031583a3eb766f47eda4f8b5a95a03f9f07b03acb6a2c9ec9acd173c08db469b6f4f08f93c8ed48b4af40835d6a969b262f01ce56c4e0df747fe35c19b6bf5dbcb4a0e163fbff4cd4b6a5ba6873de8c9ef47b03207ec5938c7ea0c143fb31f7cec85062b20b36621b1356f532c1df076424ac40dcfa85204791b3bd86a0c6c35cfb457a1f738e016d8d95df6971520fa7d34f4a5fe1108bcb7aecae0afd44609dd3d50090ac176ebfdae51cb1b33b9836c370aacbe9dc0e05bd58f52a9ec1eca01b9e8e3e0e36f2ff35e4cea194b23c4e2f869e587225187e755d743b438b2df2f7956f247d9a146826b3da3f6748158fe0e4bd22a5e05ae0e09653381236a98d6ff6df50c016464d4a668d6278956859886c3f0fe711837c05dc2f00418c8998980d506525d0fe532b91c8367aa39f14262a266a25ebd89c9d3dccfa70ae241986907f65d130f279d9fb906bcb89a5168151a1c428db71bad82f441d3edee0b9cd7245319ee8045cd2607c61ddc963bb7083b91994c83654a92da2d273ae349151d9811d2da65567074db3aff00dd8ad1193ef8b8490e0384c17fa1b16f1dc5054287ec726b620e897f11a0e154a21057179f5e271a000327e1d2b67c8d2218198016f716570fec2d94cfb56dcba67cc64707ef25b592a6f457efc5a7986ad352c77a02c5f7d94c16d11d583d9b49b25be20796b0f8fa13d69e9b3e0a1b3dbf6a37dcc329cb740db4aacce19fc1adfb0694a493572261bdefc217c30fa19dccf7a908e45af3d797e967ab95287beeccd4ffadc33458697e80e63b5e163d48874a27f66208b6d180c6a50e88c3cc6309a236eca60e214cb236bee6ee1803be1a607015f904ff261717d1a6c262fbf6fcc442197732eb7ec4eb15bc22d98c613ca7757460b9db4386fdb0a69c1214877b67a1abcfad84ecfd8449339a0d76a38c68dfb0afe9fc7b6e3dda398169655dd8aac270b557a1bd900ecaf50f52e23e418486ba302f39db145d3a4b9ed402b2a7528af706885ab124049e8d9db8f5852adffb655dac0c868c41909b353843407c9fd2ca9f73ac056620e06377e457be6549ffceebcb12aa7b75ef278ab741eb1237e67bb8e2f6ef58fb3c0fba87b78d4ee10a8b144f8ffe5ddc3fe0a33d5c729e73077d4d5e7ca5733575f222f7447681f5c5ab7c8ae7d4662ebcad638db7352538eacb9600e7f3c0ebe02ace473563013190916d7426b9643b75c9a134ba0a2374386cdacbc3698db7e6ce53144345d26cfd8d441279a2489dce6250bb9020e1d40cb223ca000f618a867cde972abf9ada535644e6b3b33235fe95dccca7f435bf785ca93f72ad474dd03715472ce21e5c0c46323ac98b268892b247e732579f900080ece851a9a9486b99f26f8dfaa5c3577169865626c9d2e8d1b250aa7fe8521c41da94ba693700104de3b2186c9d6996874dc0184cca75b5bd56b14931ce81bb5e7a6a2b51a95c0ce0c558989e0afce185470e7193db2e802622b58def523ebb8cf4d00b4656b3c2dfa5a260fa9dac8239b63ae7f0566c242a7885bb42b54f729ef63f20cbe27927484c31c4f478ea77927c42a4d7f6eb522ac9c05a0c3a9e2881c53517a88a3a4442ff8b9e2cf9a4f4c51787f6e941bf0cf3ffd2b4eb3c689a06832fff21c7abb8320b9fca961aadde40677fd0398cc22b31fd3658b2384e797f72c7cec353a43418efc3a9ba422b506a903d4819b08ddb389b369be8b976e925460cdbb6d302fd394686a2fe86471a36a8c3177be0e71a1cf43312626d770258bfbb62ab99866d26c9e19d04c0123d870cec1ce336d23c11e46319e2bc6453a22b4a03515405710100278616fc767062979dd9e6de4e6a2902274fd0ab655a9a8887445fa15f0c23800dd0a222769ef0151ff43d01251e5789db18fde56d0d8958420a2ec914d305cfbbefc8da456651ada0b862d003a8c4eb171a76324c54e5717f24de245c708544b6ddf506e89a3d177d91c25891ac7a0abbc06abc0f8c9e53bdc011f138206d86b7969067b7c079e047947ef623a2564b24ba20e4e20537c840f4348f133456776e9bb6360094181379f4bb921f555107337bf889de85aee1973656770193d6b2fe7308cf24848df6698e840a3265150b62ba810505c43c9857e48e5c0b37fff0e92686affe338fcf615e3761f4c5e52371f19f3a88eedb9597befb456fac2aebb9c07b6e24f6c9c9a40889a0c83dd4f293e1be7eba24a3f8d667459e12941b9c5bd47d6d7d5a6275d250148826e947800a0c17408efbf015c4e7b87b16256bf59df67560149c478264a27a6eebb8d3495d3a02a154fb6588d82cf0a2c6a94764af40bff9692f56a3c98b14f6abed5cc433f55f797f21af12da840a06eafd82bfc6ce524da13a4ac36b3d327778a2918ce10c0a70875d2021182475c2d112f1785d4204bdbf1782f5eb0fec41ff40afbf5314591ebb151ff4aca443df6170162c8240ce7fe2d690cc01fb82197a099936fde2b86fa8a05cbd2081184eb5ae26e4d3f32e16bcb8a000b71f518b5e8f3e9dbd124daf05cce0398c9a9df0ecfb52b3a787943de4b4a58f2b3c4a035b3952a08484a5f57b59e492bfb48ca42f986875b3acd93485f55fc1a93a0cc0c4c54fab9fd982e8787c7b8f01f64798df5cbfd7591ad263b9592eb994a27f083dc0d2f035faaafe395d1061b26d026a8f2f78005d07e7b77cf4b07fa7220845fe103db77392cdb99799ad947c8978d34f8f0b6f4eb2c3476d8b3bae0d0d45def36bad234b8f7888b3c018f3c59e38e4840e28f08bdc1110b71a18261ad961037add45fd7da51c428fd8bc59c1657b0c90d1e0befa4a46db6e4e997dc39ff6b96446c222d9ca216fc1d864d6d9788c7a42132c2dfb457da6500cfd0c999e78d9b7da5eac27bb0bcfed2ec68f2ed9c28c39a0b16d401967154ee81ec596b73ad44b9f0ef46876aece653adb447e6c095afd5ae958519944c799affa3919f2fd6f75f201fe41be72e058d10d6d3078f792f7b889477899f39ee4defe8a36f911d0a8027dfb779baae848ba3143212a793d1f42465cd1730b5052282f13ec980573fa54fee17ed7f52f0b344f457511080d8416ded6f78309c342f3160be443e705533db550cc81b68d7a6f3df3ffa37359ba667a4a8cab8d226edb8b861190152f256b483eac6e95bc230e0dd6b8b739f686f85cd16ed0a6a3f92e407804b89fb2765dec28cab3160ba1ab421a51096f6c10a4de97115a2f5b1b6f25a5a21b369218e6c9c27e2c3eda0e53e1463bba375949dabd58b9b839b29bd49eb1e5b9aa0afcaeb45437f9439cfe0645db5dcdcff23d1abda4dada8c4b03c883b259b90191acb13151f9fc58459238cddd38ab23f66c79910f04b5306c8c69f2eb5ae6113119becdd1195c7b60f65357a57da0f87e5a22219ceec30a39ff0bf2a77c2cb5ef01f9c3f8bd045b3a45338967f75ba58c19d311025f808a5b78b3e54e162089129059f4709e244ed4f9a8eb552a725a359f5ca7a67bee65dfb99cce2baf763f6fda2a2a86d5af55917df8d4533edcfac95024f2621c12665b0eb65e86e4887e24598db28f34dc31cf075a238fa175846c64a44d71627543b7f622dbfc70d6515e96f342a7baa686ddfa7bc7854e7d08db59e92e1c98a39220d3b7ce472f802a08bca62fe64b4c100526fd1e42c819347107164308f1afc00078808cd14dce6f8ef841f2a2b5d1e790d8f31ed8aed168a275e0dd3345ad1f06283c82cb6ba99f1117320069617dd70b7e674e6d4511656e0910b8054a370392bcdd5aab031fffac113ff1a4d55abf2390d5905562a87c924c05fe041ee9ec1dde09f1395ae2dab2d6fef53e48b709e506adc00e094b6179f82fae1435e5c8690e9c119e24ca5700f45b9e9d14a92f4014d419255d137b2bc795474cd4503a85ee240e0d3b4fd3ca5d16f0cadb854d0be423744ab4fbd0c1f350c8c755d3f7059b641f0bf90fd4881042cdb57268c7f14de74d2a4d63811d420efc085e1b38fd30d197655f4e8ad8dfc8aac987affd03e35fa6c49790cae5db901ac405592e7e8e18e650a771e0855ee29656167f11d98442a8590b29a30e4f2cb631bcc296c729966754b9821b126ea08f83533eb974c03624303dbbe269804bfa3f4f1053626ade0aeee5af0b5fae6629c5bd1825637b5adbc04a37fa0473ec393d18ff16c74737c21751cbcc5fb86c85125d7bf3bc1dbd9910b16f3c555b1fced5c4d1245d111cc618bdcc16f1c83d98520f9b350548e420435a9cb674938b447f95cb19e42bbaa74cc44b1e3b4338c0bbf1ef83135048e2b001db98f1abeaddaa33b5ca9a407533ca1c07053f3c12ac1f95b2227c34d689090eab2ef202875c59735e30b5d26323143462da711352915db0633628726d584da87067af01c722ea6c1664f36fcfa13d4ce22b87f6d4b274714508102c634ea725f4ee875e9da13f5d33ac6bb9b89b2c47b225cd104737f162e05a4961012672d1e1d52d88131793a38c98d9514fe3e3771e43bc10af4fad187ecedb81021ef2c347cab0acc89c9105012f04577d22ff241b8f9ca0e3ad207caf550d8f18948db91ce066a56d869c1bf1270d6c5a9dcae2bc746269104bb89dc5b91818676f8ecdb8e9f56e47104768c23abb82b7c4a08ebe1f2539347ef065582f80d0085bb6925560ffbab05d6b275c7a118295987780fd6cd0f0a4622b5ec4fa6d3188d02f4395dc309796c77052aec1c5a0acdac77afc6af4ee868e7d0ea624d59366f2a5a8fb1ebb1bfb7a9db0283068cae51038fc626ad4c75819eb1a633e447598368dec70a8719173678d0b40b64daee057b5d9779e173d67f2ce5fa1369c2507e1e6b7c0e21486a97d28c9edb18f276f05e472ab4dbd91598766cacc3d1df00e4e09e91bd988d3da3db23d2f9bb285191b126610923689a4babb8f92ba7beeff0c37ad9480fab45896cc0185c0c5dd98881564dba9c79a142a67b1674eef189eca0efba59035a30812887975130ef45b3ec0a7e7d7922449c5e47402ea6dd2a40b1e42a9ebacd7e556db8207058e7e0510d49f31d4eeb336b4748fdef184243db720a36197f7037bf41bf34a72fc78ec66a08d5dcceacaa48dc24dba72821a8a71b72b7045c4016c825224cea0fc029bc4b33530f421e5adddcceb1a66e02f20c69e5fdf6b85fdef0e8454294ba9c950154b4314a640e041fcc6a6c40624928822b1d09aed57e44cdd4a0273bdc44d7fd268aa9713dd56a433efcf4335a30abda03da6f052e6ab617458c3c90120704df5bd27ec8585eeee36934c67ece1c0b1a17dbb17924a6120fdba4acd1c0b8e15b9cef8682e261489e8bc7cc2c579aac737336ca56730ca0ef1ff75245ae01fe72dfd0906872824b77041772d8ebd695a61ba3d183fbac9c6188e41f7a8fc3b049b6323e442ee850aa42ce741ea8a903513175250abeaa874dad0757308b79863b1a810c4ce89d4eab9c29bdf0afcb81a13caf90f6f94d85bd80eb8490429a8308e375b8c61d6c813539209a971eba93ca276c8801513c14fdf056b2e41da30478d85f1c69c513b14d0509086c57bc9c4f7a247ad1a4eba3c25a6745c19a156bdeb4f0121bd583ed0f77a5622b715744f8b1dc208a4c8549dd7868f0f494a5f583afb5dee5aab0301eef3f06bf58d6a6e2fd1a9e3c8bfb205faed470aabd99e12a07e07a3ba55fab0791cda1532656e24fc11c9f76a99ce9a948525100576df9aec84c95bad6454be9b1cf11736544f6c09adc7e19e2532943218cc6ae45149d27aad75550105ee5f7559d72c069621b1f9448ba0a474d0c3b0ee0e678a234752e316ef7182f0619a7e51075317a2105454c5a11970436a075ca90bd7e8fd23e47e9d18b68a4af1ca0c59ed509348462ab0f63393c14023d55fae6290ae9c2706b977bacf224ec72029f11f28ad62aafbad7df53cceacb4b984878cea6375c66b321a9f88b26f0b1eb7b212a90589d304c3ce26a27815f8ce3ec91c42971f137ab38d7a5641d4261deb0744e01f825d76d3e0043a19315b480c5d7c7a19e6fecdeea0aacd46409cc8102ef3a0e55afef59ca8f1dcd6192cea234946774a931fb413a081270be0d39fa139e1023c5b1f19f1a637448f6b9390734ffba275caa0b0307c98c4978b4675ab167ddfa74873f0bf138a934f0680a7eefd31683e80bff8658c98a4376886f386bf1f5802a9ff7af26f4acd5c77beb02c0ac2ba1c64aef7e75208ef8709bd13de23ab4f3df7522c15882b59cc4af4c15712ab8ee94c0acbd1efe96d187459a5027af3eb37fc2d6ed2310184acc73d036b1da05c7bfa15c8c72b650f9ca3d2cd94f4d718a3bdba1d3d4e6bfebcd8ba35c17432a152beccf369444a64a97695837916d505f6b48709ebda915bb7236e27f3b08f5f56dd7b8896e4f5240b226f11211f28a47240e278df1b579327916f400614a89ba0bcfa757cf201a9a08d07991d49502d3a80d7a245283c82d4c699f9ea8a5bde5a2bcadc7d1d3a71ce3c498d09d5d79b71111732fb63b369b85688604bf0fcb5aa5b5b95e2557e9e7ea4e635be1ad42d76592fcbeaafc36b89a4f296a96a1432ae5c7fa95a989876b110872dda1a79e721531f81365bae11d2c32d51ceffca68882788d850b78ee39d7b87e3974a720e2010065c321fc1c799d0e55b87b7d2f27d91f4140d0ca4f361f8a51df4936fb05160ccd92eb09c5c9d84ed11b6e7ef6c21b59804a73912594393607224c47a1a4251016813adff86170b59e4ad8381f98fa41482c86b7bea7fc94acc5de2365fab77c6efc8f7945c1955f7dce28887bcbd76131d40bb3b21aefa1eecea2820d80a35954574c05bda7270a310e8e2af5fd2013d9863a20a9cad75dbe6929a409f456bdab880cdfe602ba3d52fbe60e38f95d4fc6942abd09d2703cda04f6e92125d50e2887acad7338a4d52fa7195a57deb40413ba8c1308b9f0f035854cb765633545269b9a76afbaed4d2c70abe5b5e61891d6cefd2076e13d74b1b648f3cd25f4a7b05db54dc43ba170b00c90638ecc983ca90a3a510762c34814f7819b0b0134a22780d6047fd85317ca2b4c917e4e942d9ecf312ed74fff4a02ab752125f0ef6fad22944d8fbed881bbf7ba01c8634998bfcf50b115e5dd7e538ba6fa213a21ef2999e6f4a77a871f3fca063291898862eedb7146fd0b38ed8d924241b43c8ef93442a4eb68caedf8813fa70b5635ae30223231f51867d751ac08a42212b461d4dc165df9fba34efff527ed3993405dab8b5aeef7be442cc7d75a602a748e1be02ef1ea4dc663343af1b652695dd6202c3ece175966e2aa8d9d4df67b4dea3ce802583ec36577f7c1062944d44b18a2fcec8a6c2d15019f3e98c2282da75317b8baa19d1ab3b724bc2325f5d378bfd427b7b6c86f9d6631f76a10483d4582bc0f33a8e60c02023de9e28944b9b48d29610eb194168f50d71ebeb3ce17e15a5f6eb874bccb1fb2eadbff6db43aa48f2d03834d08dd5c19bfe919569045affa84ffdb6e59d332411e9a5e267b9b5f165310d247d3498f571cb859e263343afcc6a6bde543f06d80b0aa544f08f262cb1ad99be3debc06ec69da75b74bdeb7fd57a878dff5fefb6a0441b0b03f640e63f6bc1b890f165b02072cbf36d9ddb0e6daa70429500854399e4f939a2cad291e26aeafc58ef925f6aae84e24f087abfe5b203f4b82fcb669fd09d6332a834a05a771f2ab0c193c78f761277cea9ab390fd747897bc1dbec65b8fe32b9ee2e0ef7a86715891fbc56b0c41855bc8313e81ab47b60a68bae0561afc9e46b6765d84010eb422240611cdf2605f600ace87b909a00c8d5f09fc50e3612cb8d5be57eb7591c6c48ed755273443823df62a0645261c78663c482a4cff3e2cd9e3853869d7c870269ab1cd0e88c4f7d8b3b615bb2e48d5321d1e1fe4ea31de2d91bfef9d4c615a774e18e9550b234f8125151db95a3305ce38c94947bf3c79a03dfd0e4cbd78fb2912aeb4251d1ea5a91c156a4aa2c90c1dac2f10a105f19948880b1d9785ce6ac9e3bd89fb7686bc1b7e9ce37ab4d0e16c03eba67ab3c5c08ec00616b679e52d484066d159782471aa31a165db33673e4cdc24c987989fa3e860f57b5d437b09e5a057a33fab02baa02c476a1a4031f298bd2d3ec6b30dd15932066d4db7e892f56d7222a23c0d7898e4c3cd19a5dc8d4651ce59901d09a7d90c62d68b27930e38f99b2515c409522ce1233817026ad4a1d8c7936a040d1fdec688218f56de6c894a5b8a15849bab52e50d487536006e4fc4f3c3f7c5d6b2e06b2fa0b045d8420c99fc639241950d669d8b98069c3c46ee65aee9511d2823d774ec46f6fff4ee39aff9bdba47087eb3befba4a84b317aa2c2d03fb2bee036db7d7baf57311a13a847b266daacf3eb16aae4088e68704cb3deeaa9a7fc2379308047d538702df05de02827a8ff280b71bb6f522185760fb1d21357dd107df98b575e5c1f459b757822f0eaf69338ce17a21f2c2cab8d2d5b17d1616b09296fba0c3dd7d89620bf43e59c25ecab0a5e6b0f9e957ce2f24ebd8b8e3b7bb55d44c2395fb4751effbda17b524fe0e5cb5d329a1b196152eff415845421a7f34eab239ebb8e5624b7eb5592aaca841516a872bf1a074cae476d0945727dad728226604f161a0bca68d697cc7df9c891a7135bc03fbad72521b041eb6bcf8ee7c353695ed03c53092858cd5003aba2bc117e4d8e3854024411e3f0821ea57c11b17030e31c226625c72e81a23b10a1bce95f2fb9deaf1c9261154175ad13f383a47430f17f796d0612cfeb4a3c934199c108df36a4bc67719100cb91782ded1daac8076787071f5a1e37ee1384209679d5e3908efba8bcf49c2a4cf6ccac2d9ed3fd66c26e811702b59d1a5e3bcf804777e4d73c7e44e75b5744d4c6f4f603110a579c548925a4231648f915543998313b17525e044e39303b8ab99270991a82a3a2dacb93c2f1ddb8809515c2826640f2831dd4bc06171bd5657d612d40fe673f9cca3b803fabc2257c00f3d93fd082144558d984fa213552d5ddfc109fddf9606c4d48e1128565000ebaa29f520365e718713daafc7f4ab69be2a5ff95ce4ffaf96abfe37ab11e811f6b339c4b42181c9c53ee5bcb2c70bfcef7125a89731922c58c7987376991a8dfd42911a85148fc6dc25752c8b4cc38f592c1179f81e48643438509205b50aa255999f43819a827af2cd34df3c35d935d7d9563a30d57fa0e70de847d2f5792e04949fd43943dbf2fc20e7e1f51987083b1d689ed396f616433614f4e173aebf44eec3a863f234a948342786a87d6e72c9a69155d998b4e0adab673f359aa33f0454b9fc5ac04824f5de7aaf8de2b970b9ee7bd41f6b6b149ff3697d5803d8a5674468f09c6af93676a0b18ea0ee9b1bb9bf1853e4f0086a27ed6d73d7654afc42c420e94b544d9d14d7c98a1ea0defc6a91c7b64ce9800367ef03bdc49077c9a2e099a9ad1678116946d6030c927440dfb2bae9e1070fb51338218833786b7844016f78aca15555e5ed9df1b0503e972145e7980d9d736df6a956ccbd5137a81c0b055957ecf8164c2ff01c16be75b8ad050a71a0ceec2c6ddbb07100c15e64cf52012e5f3530093545e7d78c8671caf3e88aba5060ee4fea741b151c140e28385fbc979bd320038d0993a626a5b29fd98449a3340cdad072df613937902b36e77b5a8484965c7c120cc63e3bf86da1374b9c9c496b3a8a204327bdfbcd95409d1b74b2bab61245d9f8fea2e6e5037559940cf3ed6d4271a0d56f5f13262191d10a78da7d563eecc94ea8e1861018e68079992c67649336b47895f5b12d26e72e7231ce3492f4df1e66282f3e1b3b63617f8bc95d978bb9b3a8c1b60b43b30413a91ba1ea2034f6e6c67ba6757e5867a41023bb5b709f4005bb46aad929b37611d86dd7cc84d8b687cf53f9586c5a7e66c8ab4253327f77a86c72d7d9b79a7b716b08adaccb927137abf3bd53c5b52fb78cbef218420bcaaec0b34e4c916f0cac55aec081df09e5839845d69c1cd0fd1d79bc3be2fe58d1bd2e2e8576f539f4f02134d3e56684fec97fe2a0a8cc71d51099cc43cd2a4a2e8d2114c5219b3392a2d68ed59535be03bdd90542b41bb6bc7c72e6c959e3785b6ec562a61a9d455bd6a7ec33f54ccb4ae8e5a7573d702b4d4260b37aeb297ab6bf26d99cb376a76fd97941278a6c2a7e243138d988951589b6bc506d4bfcb83e78a044a94010b1a1a833f1d97d32694d216cb2b81b1004e822dc3c7525fd6b4ea19a7c259adb311b76e181571fccfb54e491071842822e0b42d7f89588ac67e0d898a7739f00df662aa77f925f362afa435e158b8b204966c725292c6930cfcbd098a312af99aa03de82fc46560e35f26a14a6eb4a36c34dd4083f4f21ade5bcccc0ab3a310016d061df5523bcf1132e589532ba16baa14784c5f485eb2d8298285e95ae0c29d18bb6f6296c6f6f6fee63c660e34af2673062af2627671de865d1333edf2e1139669304a743f387b8d5b04778078529c0c1ef02d3a71a4e06d1c71806d8093a8710e3489ed7edbd7fe8bc7a470e2a73d64c1f904aa6ec925ed5a2e66dac1136c41245da04fda7b66d8ed6d832e7e17f9706dc34dcb9a8e717280ab835483f45cf328a48cc2a906a7fd0a29968d214824518822785ed7f29fd853e77949491010d953a0f3d59b9e5674397a97275732215c361117053855f6a208ebc62de871b8fde10d83c065898394782f0a04a7084c4493ff94c4e33936a02e1fc524aa826c7087a8d2a824937b98701e805b0c45a5effd3fdcb04e338886d300891edfb7516c71a3d3ab4882cfcf20982fff7e80b9bce4be0c4f2582812dc09d862d28e08cd5647ca7ab8b89734ae615f86629de691c9c75ed5b23325d78c0daea4c9f38569528d70ef149fdeccea2556bdd36566acd5db5e80ea7ef7993a72823a6bbe4a2ca9281667c6a7cd34e043487b7107880d5411e817ba2614c0e781c2d01008854f2c8d6efb105f480299014ac90e0f2edfba65eefb3079d5fc74195f86e7ef60763be2ec61d3f88947b475188f714b953770c7ecf70dac43fb0f2a2b5a6e144525fa81867817c9f540b60be0e70b4fd988db9d4fc982576d48653b8a75d81b1f55207945b8bdcc77bc050453d9b7f288cc8e3eaf18c9f64f00e7e66eaed32ec073e80dab776c1e75dc3df10f6761cf4add9c77da6f166a50ff6756a9da247b4963d533e2265f834c180e3b583c50c591b0ae0ab1f6e376439ac1cf85ce64b1a84a0b15c2ef4cdf669c7c9f1666ef7761622d2bce008e44061f3827bb20ea872449be94a06361bed76b01aa35d786cd2245e30103b606dda69fd845a90d9536f95ecac0f4202dcd8de59a4146b157718867ca2ba15fb6b41cca18a9e713c4fa041de061c99a875e138fae1c768bf15383425b389524ab1c91ce97e42324319484edd171ff6b96e8de464346d63164264781922d513ee9cd3796fd1b507ed8cbdf0776a060e091853340e49ff19626e05e15110487f00363b7cc9b88219653e6856141cf819d6973916a465ab3f1283ed1082e27b3cd26df217ea2f9de984333da2d389575951f94b6269c7f9d418d3e55c08df976125e247d4b704f7f6e808430bf10bd4ead8aed2e6b5d6a4fb3eea3969fd64dc3213c7bdb77c4011850c2add9da6dc672c1352a75ba2c4a5c9ff5748a4167edd26bf11004505f969b4d650740d2e562bcf13a19a38c6ba3711d337dd3b68614f5498b72abaeeb2ee85cb7f013f323f76d5f4e2ab20e03cdcd65e4cc367c63f4279955173c9fe2fa25ccfa498820d221f4c6a6f64b59e072067b4b35201b5a32831d4ad52e6178c07531e8f69ea7202e789f15b52a81a5141fd6bfcf36a6686572f80f6af34d8858ef31046285a0b2a042aa6bc609231b84ef0e77750184689abfbb4cf66863e331f0b98ef8006f6dafed1b3a2b264d006cdaba4a469b39a4d36de3ef7ce6745bcdb9802aabeb332ac567c91b0a4fe8f0c7d3fb6d267827a38363c0b065d344634060f19c6fc0419000c602f52d86023d63b7791a3b396a9114e51d2efccf0822b508d32fbd37e66fb3e6050483309db566efbfb97091517e61df2bfef26d1a67e9774a4f13f41acde5e3322f9dd6e0a5c66a39f5f5391fc83c027884dc78d600aef00ef8723eef69d0556cb93275d869cfe34464bdf6ff6fe9aaff92b0ceec976a62ec6adfd2bc0863654d689b5d1656a1761b45feaa70bda19ea4b24cc8a25695e7ec63e2bc79cec1ae1f3357a6e4edb08783cab57d818c10958e6eef31ca513e94c3c40944b925c0f3bac4882be3b742fa890d1f0ea9ded8924325bed36edf8794523b66e82d436b9eb875751f355bf5b6bb9f41b819ca0c1481b1408a7cc5259b66ee0d6fbef48113a5e7062ba0113682990f62e9caafb50620b4e3eedf70e19f01a498fe7fb4f3d418154b1e3fe5ca22406e8c84a8b451958d677590e33319eece25a34b27116974e37df630aaa249d87e0a0e579ad64fc1a2acabbbcbe03f839ae14fd5c25dbe55b211dcd2b6e29e21d622fc9c559a94cde46f9dd3f2f359bde5e4c331d0428041dd9e770c311189d31845ad952a3bf978789d483ae8e67f59f35ba66afe3a71c742d6676f30e01d7fa96f3c28407aca0852990bc9533461c2e4ada7692f3e08715e68ec96ea2942288ecd0998efa648236c982ad99f0abfaec228f6748addf1c3025b6e3825dd344cd4133549323e287a0f474edcaba9ee0f8bf1c8bbb1db8914617af6c3a9320238ff1b2995538b134575df038509ee5a509e95d6f26cdc632849b3b2945c1410af7a540faf5808248c4e33397f869afee1252cde005b1fc5a8ca3774b1d95095e14b055798d0d86d42fa31c4b80487ed1c4e6f21bb7c592b65a28a341db9f01eb37a343425fe9d72307424dc39e3f9cd6d6d96e3b1aaa9c3651df18ab7dcc40951ed2a1d118e0facae462f9e8d791757d47203ef0c4854f0cd5b5635ad690f0b19b0374c234b38073009aa88ba6781d9b135071078c46ac88e1d5e96784ffbabcfe354426382f2649c358301cbbcf5b4e78019991fbfc396e9824035727e70c426ccbe415d0944187b5e36cfe535fcdd45f3e2debcdcb058c26a0b3bf12fb50794b862d17618866bed0fd29ff6177660490f60b9b2a2af41c25811f7fbe1367677c1483c536bd91a79e52980e66533d92a1436063ae9ea394a0da15a88e8c7ea9193c011485943d6a29e9868647586f93c7a0b279eb6c25835399c7a4cb6988fcbc326a4e1d7f4c3583ca5ae3d242d079b2c57808995b86f6bf726121f3f36634a658d8d7799a8fa2c71758e4630cd5c27daa2fc61b80e7f43f67401e815e1bad8db6f25d1b9b90760ee36a9d273afe6d9f7ad86b57b203fb67aacc72028a3bd9b24df0cdaaa906bbb579082bd085ca65e4e3891b619fb9a60a7f20be538a4e6190f41a66653481b3ce8b90103943732042d7c91c8a0052f56b1f717937d5f859120d2990892f9ff8c1115f4e73b4833fa9b89801c7f97d0c3ecc45afcfd863e9f1b9750f395ef7451a0f989b20ad7e8df27c55a5d35350362db21e5259a93893466507bf0bf23cb3f2ff6d6f2bfb8a2a220c6a16c02cb84b7a6a0ef98d73a31dec74e8d64fdc3c70bf3f0525b52a746ac65b1d92e9aa5c12bb0455143d845d65a3abe3d63cf322321296d5829a43bce6119f70d6839195ce920c90be81c8f6b81c61805d46fe40a2eb3b8ab1d2cc5c8f1d50a49a8a8bfad90a3a4bd1ff53eb877a7f8a6a6c6b89d7da9eced049573d5723d471d4800f63ebab17a2fe9beb8d8382e6ea21721f67122ee7a26d095042b52ffae20753fcb4d491fe8c9c9570dbc6b1f53c104ddd40ef10a7a443d846e1412ada66b4e08e14d8ecd7b1b7e6131a78985d28d517aa0714ae4ff950f64ce6d58f8131a1113d86539b063573a3ca8b1543181d55bc4ce8ab60aa34ed87436284d3488cf542ac2ef1c8e59d27ad8ce449e62f02d800512bf4eb5a9074f80d8ca48343d2f58c2bbfabf277d8764c273a25d53996dae765768f8ae843d3a6b6dedd2e1b4625d7d3fc9c0ad1493b508f45c169f5d2e0e5dd7516fc0f3cfe7caa9bff023bd97162ffe5207b19fba45e1a6dc8ec09d50b387d83b2061988235810582c3f1727e223106c0c7f643e1162dfcddd61f1477621f8d5ad3b8ca7d29a11a0a77aaa0cc981acdf254da5e92f53d54ed9d6a388965fa7ad8263c3ccd1a1e6642800c7dbba62c3ff9c226f17ba97f41f2d930ec3170e63551d96d52e2690743a72b6661873b06509e5992aeefb5e696a2bdff9660949ace55e48e2b11c9528fcb7bd986f2c470a8d9d645b563aa466009ff74a5c646433dea6647ee10157787d457cd3bc0fb57f55b811955f202f2a3076e04945d73da3a0760925c7cbd590cfa09e64b3cc03e0c050b72d9da984597d0da694bdfa1bd701a3976a156bd50b50c0e1f86b206c3916f43e7fbfda201c26a4c019a4b2a34a2832054f882233bc6ec2fe065f2d3020f629a1e816146926632877f026479d7771734d81b472bf25f0efa27e5d449f46a5e728384b0b6a96757e3c4ed32650fe19e7bd461d2e49407fd732567aec3028d1543c722b9e6cdcd5e73c48a7f91149454b39008b26d70efd730db7bdf028386ee8b5386edc8bb019c7ab94c5ae42a116ce658815db98642ccada5f6486bd000839617d4e31fc2cabf332505980a06b288d95473aae9f511a200bf72ce4f25d623095c1ad4de752246e74e0c4e0c8aba4345f2c85537c26934d619eada4e80ab5149862e1f1a62f9045240c858f15914a7e06b597f6ac480eec02d74d8be281a43aef559c687951aa15b7827d675e65ab73b37a72be3beed53d78e9bbb2aa477648364d1f08f2f76191dce51a9ceee21e76963bbc231db4978a26afa78de2e93d2da763565ed4e3d3b373ee7fa7da5ec9e7c325d903f12af865c44f7868309d0e02f61c615de03642a799ca1b437eb1fbbcd77c44507410f3b7f8a8c64cd2ddc95d9d08791e32750e0d6631305d651560d1a856c74ddeb7669a2dffe13363ce32c4d804d90133db6a6af1e8be15dd9e0da6bb0dc1749f2ec76aa304798cab4859230218c6cf8b6e79e6421d87f1399eb59d5bc12096cb5c6db46f2be7c07cd0ceb3c86d5a2014f20393f91cada9ec6b138fbafba8afb72f6a5c01f4e4cc5744b0ef1361a568446b2c1a7f1cd3140cd68166fde86bfc8d60ff718d5f318355c5d0414d725cc4bb84bd0abb1ea8714670e0ada38ca30d9047d86779e03f8ec0cfd8d070c4ff0b95bf1d7d473d0236aea111af723ee490f9ea41ce9d6da8204687a9beac9fecf775bb5994e0a4812253de5c55d657cd962818f156eb02256411b73d48b32861cb621a3ad5d6191a03320de7a1cef3c95a94bf3e558bfec9353df4e142c70b5acfd3bd3ff25d2bee312c5741e23945696efd7648ffc22195e229129e91036c9fa8fb81c4fc197143063dfd88a7def78d75f42dc2faba57e6228784515e7d08fa4579f63b0a560d0a38ca40a0b5e08d5b8bc2fa272046e3e4be04b5810f5f019ec6868160b5c36829c736b21e1f77c117e685b3419941b864a41ca05841d98e6371292069a86354d3d3dde2dc0293e76d0fdadad7ac068c4944bf1a2cfb1d53c927cb86a6d37d0fbed23f03152f825433b785ec4fe08acfde3a42ded84143a5128dcd082e89694d0d75b09fdb2d8f283b0ecdf7ea494d27ef34410b9ea2b2ce8cd306a0943dab1616c071b57f2ca71bb01d29d567d10aea606325dbc7ba48a6176961557098ab59add3b8dc99644e16e67d9c89d2edeafde614d857f6703437dbf2558df99183b35a215398117ebd6f1ff56b6a371926b25cd2fdd320f89c8b36464c878a8c88796f5dce038621e32d2483a944194c37abe1716239c8ae394b0c84539b4bde34c05573ad8d75653e5eaa696732ff8279cb490dd259123b11c5871bb1461b4400a980b7bce74493ea073e3bbebbf930428dc8d109f7cd8d2e1c589d5473f3c1acb1196e5ecb884cda45aa9ded7666feb33ede802923add8e8dda5f7362c959353720461ebb33c2f350d50851f1bd29caff1d7dfec13117833c45e483ccf3e2573213a79b7b0cb542275bf64a48907248865fae7f11f0a267666e2fd632b8040f84330f2bf2a18155602ecb42ddd392764affe081dcb74ca10b4ef9798d46bdc541531385c6153f0b4f2cc1d5dc5ee0cbbcfafcdb9f5c17a4120222b061bf622bf50f10f2f4747c9121df7a4040944b75d1c1eeac7f85bb25ffec2a6b216d19eab883a3fefe2ab73ec9b17967d439d4f3a17f29d87eec21206d40b85fca8c60adc5cf3140ceb1e63c13b6a76fe927110b344122927979e9a3f91917a526d88478290060297bfcf2033ca4d0e62c89acffbf7bd1fc3428e57a83c4b4e5502e2b4da3459cee69ef36a4879a247c70efe225108533d415819c9aed42a11f5ee9cb21dd67937a6f5404e1a8aab6485f9805c0d389ca2a500cc866cd0416f54eaa30287e9fb972f01d201b017200a863dbfa2cff6e1b36a28fd8c3ae88ea8caaa6fa63cfbcc54b2c78430b03d15da03fe0bc6693d42f2bec166ff9d7ba1e0365cd1c91ec9c326e261c994c42558edb196cd7d06621132b37c0e364b7125369f36a5e5abb74bf6adf9343b7f910362f01c9ee56c918583ffd03befb64cc4e57af4edcdf2266f03ed0a3d68a126a5eb5288a35db1dfc9366c4ba419ee11e7b0becd5868d3d298aa9d9d9db68f6e1f2745e35f7f4c2a3deb05e71dc39fefa671b5fab9e417f501b8f19564d1fb6f6419a7ea811ffe44b556c61b5b7bb14b245b4be7b3dc309d46f6e583e1e434f05813fe5677576130b9a61a5e32dd3fcde6a6bb75acd88a91d1ce500f1b29a1a8448c520e1a9a8b3095220e2aa4b84e60ed29e9b1590ce34c4f743d3f86158ad0314bb661345b2aa9aa65bb6e4568a04f398656e3b18fd46829d33c7f6fa24b723c5578dfd79cdd846c356af9f428a305781102c34cd5f92b9ec68cd333bfaa6101e828ba784f03fb65a6121353b15f3b4723a725b6b2b4201866963505acd202e4769c19b3ebcef222064e30d207b99fdf668e9b481d426d355602b947f098e494dad8b2a8fba10ab4f7d3f49036d4321b93c127bf2b5a6680102fab347da520fa117e3e0f5eca86824adaad1aa6f12ec0f32587b7807ad3d7c810c814346728495e30a3102abf3ae5f92158b111ee50d6ef18bec1c24117d779458d87719abf5e2968f6adcd0662ec636e82ee63b4884ef2f272fbf2030cfea872855db9f5724256a18c5bc3dbf09a2ebfa190c988729d11ffcb095b2b2a0906475bedd2f9a785d41cd6f6fa2ae1740361ec919bf08dff6703200a565b9fc6823b1e2dd84a0a76f34534dd89f04a671cc0301d77d59a465e1b3f34a23e98235f2f299b0e9078ca2a7a1426c356d140aa19aa6c6339cefc65d6ab1b50812d7ff87b7f21e33ace524f431c5b47f1e866500301d99f53bc7e9b1f144688d6a259089a721648a6b5583a04ba3cfc60fbbdfbce797b57f12703fc99e6bbcf998fbf8fd15a9b307a93034296fd7eddc93da586b5d2cb5f869fe5f7ffe345c2d05c40ad32851af1c98b70f592196d5cc709ab6af809ce88384bb83002e19c8b52ca6dd71ddf5f0ce9ad0d03199ab60d8ceb66299febdd1a3931c08baae30d334f36b4b635be484c23caa986412adfbc69820c80fca1da66c49fbf2da974b261729517504477d6b14958c6b5ac677298427a1dc4e95fed2866ddb656447c0bb9ac24f3d4b06161a0519b2b0cccdf5ff0d53f390734e197401204c2dcaf4eb62257990ca9a299ff9722937b4ed6c27a7b3427b5f18f196def4b3de3723c7893febd02408a86a6ae524e50e27218cfddda396d7c6013f9316f54bc016ea50374ae5bc14256ef386afe409739d445fa875cbc47fc5da31185854a2be7f4d93b7cd175b171533df8e9a69ee730e887d9bd303c384620138ea9235a763cd10ebc7ea288303109c276de112df2456d6ebae7191585226638eade66edede7dfc88a4134721220fd26f972f726760b6cddb725df2b0009e6949e52b3ca7a6b3de57ac905f971152b65f7325a6524751482102b8fc095fdbf6de0c6dc1d716b41b72eefca49ed6dc268123d7846c6cb074a05d384d9761f2714395695d56d56ace88cdc865630cf552d1c34f964d163f7e36a1a605f5057de3ebde12cc9a70e378de4fb732d5e2a71f783209dfbb1fcdc5de3061dbc312192247620f19417fd244b724605565bf429c57dd757a6ac610aa1653da754850e60e80183a6218830dd460e2b096ade1d98665b1790522271fe0c18b161d28f90ae29ade226a57f50da133826555b962c3e00035ecd89b3df65b11712fb89c2b2e873ffd8afae02c71ef2faa94ecea421a93b50a1c149afdf5c82ea2d31bba14ff09c337e816c2427b4c18e6236ab7ff3f232096497706826192aefdc3a89e68ae1242c5e7fe53b4919f2b8c5095b2575477e340270e225ee27b0a34563aa97b7172de5ee500ac45bdcae0ab2845a578c0aae2e960aa0fd403caa658f3640efa00c0711e751c43922edb450f1107a8d0aff2305d102e4313b6fa23229a0467cc18044741df74ffccb5c9e40941157c209092694f47a69fa8cd0dff205c1b1231fc75ad029b93096c49cb4f8a449d9c3a95e0613b8b354ef9825dc251deff8373ef4776aada7a17e08331b7a57956c20f365a67ad53ce97f8f0064916dbdbdcf3bb83af9bfd87170223db2a9f9668d346aec87bfb8dbd4b4897e2d6cf9f7a60622df72da81b2665958934693e20a279a37d75412619057d9adc0c070a8c67a92b9630b82d8050f1173cc85d24f4fed8ebe46e89a24b86a07a86fed264995cb1134b8be48928e5081d675fb1adc17e20d36cdcb5176dfc559b43353432ce0009e7264cfc4148c7a29a57b20dde8b4befab5f6362b33ac76565216c220ac9f6d8fa04ce75d4c6d15fe4fea8f6c02a30c84a4d9b048f6585bdcb1564f06d3c3b86ed45bed789bc99a68a732b5ba7c95e0d8e899276c8107f7557773c49f26cd313bb4f6917c3f90085f770823fab67873e76aa629d5a55e028f6845b504db4cb9bc10b17c4337f98416ed34723ed593e73960bd59d77c1c32a54dbe6a514008679c36777912e06d3c6051de70411c6b24bea4a175122d40c627301cc51ed5258ff4dd21e13ab78075251f6ad249b2ab5d1cbcc7feb088212d6bedd58d76d417bd12cc212bbf3734310aea76ce9eed30d04d93862072fb41936123c64f3f8754840bb31666dfbcaed92979ea688dc67230616f8f385c9c89fe50b4e06c7652cc93bf61ce63a32043946f8ee5254dc5cf12d7ebb40f8ca0d75578727e17060b894ba2a03d61451dc655326cc2cd0507f4e6a83f62e820348a7c14c3ff9560cfffeadfd6cbc8bfcbfd598201394f06a6e83bbb05e946963333c74daf21da397fa96dd53613feb4e51eda1aac1fd24961e31b8c16f5ac3e3f8bb5cab01e2b31d36f54351ed104552e8c6c81978f40fa455875806e8b2f0d4ba8b80851024846c56dac640a2eb3c330fb5eb00fea80e4a30cb81d74d5cded60c18782a26274bff8f9d64b6169fa77d0595606bbd12f2e49f2d0c3664f6378b77cf343b303bd7c62aeb30a7612c4f043cf10f0344a08be1e4f13c6bb8660126f9ec9b3f7df5642605d3ba83a0f26d2ddaf3e150c477ef9a18e4eea61a4d485d8112c08943f9f4e11327b69a76ebb23d3b29e74193478ef9a61fe3241a88dfdc74b3c31b19506299d729022b86f7e0e36d12e73eaca688a0ce25f45792c9564f2b4faece7b52bbd1ed8c6795fa3a5bb7b2873e6f2e05de00234425f71c3ba041737bbeb74a209f7c82bfa70fff89309402eb3733d92c593c0e4bc88d973216a30bbf023149a9a163d78cb71346e577bf862a477d94515c5c4994335da6f6d267293c43f9a145f8dbc10a3f87850610871e93d374e9b1ee026459c2f330938cdff62a86965ddef0ac2cd8b840f4fc13a0dc7279b887c7ad66435a19dae1bd66a70d24b985efa5f52193abca20d1d996df878beda8bf07841c9dd3e91ca8ca6cb9003b49c9aa601fd78a31b16fdc6c78091955ec60083447ec7fc5ac4637b0a500d3e8b317453d98ed353bd98fdb1065594110df617c3aa0afc8891092871cf4047fc65a425e3d51fbce3c00601788521ae2a8208858a6de04aaba12bb519934b67017246cf52dcc37221c76d8dee80b1992680c8d80a099712f6900da95c04b1a0824b24eed2ffc1d144f5a88ff999efe1c794038f87f406bb2a3d620178116a61a643b1c8ed07ef9194aee98515fbaa7fe36be646ceafc9d624cbd28dd726e556f794d8306b2af9bbb3e57e62c76565eec53d229a98488b4c23f96bab23bb42a44fa04f9e3c358c3172a698eeec12d734bc9eeca2233d8d52ccbdaa2a703929aca0b84b59a0b01985e33550f7708e414b79ae08c6ceabe074973412e8df9e78ca5ccb1bd04fd1bf8575a55b1ad3ee66a7d680b32c20feaa79a0ae6617be714086e8f8cecdb629b3fdc75af7ff9e457ea22d294aa8169d936f317eede4ed70c5031e5982d42d7a59a5882a986c9739f93daa8a978ad9fb4c2fa8ce3a624c7ef3ef07737013acc73ee504049650cd8634711f246646b4c205aadcc3fa3e06d12e11eb5ebf22e2495e0d722f982b9ff0caae6b9305d859c7411d901e1e7aa0fabea2448dde0685a218b178e6c624876191dabb500d5e97ff74ea3c563256c629471df641ed3993b94facf655d9c3711db2d67b6766e2a6afc4403169ba55582d87120e280a8552e59a8d0ebfc0586ac6c7954eb749afda20bbb449ca0795af6f5072b24040e940b47c37fee31683bf7f26d61f4519ebe26738986433736b0c410f838d7250d33878e3d5747fef5df4f7a81b0c46a8ae916e3743c1f7ab85497810df6799ffc7128dd4564a9a56100b1036f19551edba1baf769afa111f283f0741a03b85ac672d2b607c8bf6f09adad92caa6269dd92c0fd372782269a9426f8ce37594a644c0dc474d399c1f36fd7d4ec51595365574e827230ab59e6fd723b40f5464f7efc5bb31e381757ace881b084b59f90df988a158a1264f27cb4df49d481d99bb355139146dfdb57734ec6db7ba199c6155195d8be5643f61bbf5109514415b0f981a3dd5af1f5af4394987c15b3078cdaefdd5d541b1f38e46e0789b96a3f458253725e934ed9e033cc6f0195a2bcd33c9b0bfe2c8cb0ff4b8658e034e1e0b18eea5ae1d907f00377d0a079183ce81352fceb6b2b2c7d30e99a1bbf722fdaa71dec26da97f848877c8c366e1388f5664ea9ac15a718cd2271af226a289812143c8d5d68194be6c4a3f23694e051ae8983b7b60e2c156f8b1037c77e6495fa7c57984d6390f81fd9af75db0e517cb8116a6792ea3a733e13499a4a9df853fdb0c745bfaea2338e463b62dc4b56937c0668bc411ccea897fbb0b97f393ed3e0cea334c29ebe5e0b1d1a54dbe8bb4a30317a92efce9648e120163c4b990aa6d54fe062aec50b28cbdb85e01070a7e8bb2c104ac3b9820cf6cd6995e9360724f8305162d46880edf5278fe8c212a631d4c0d36d85aba13aa8a79dedb5e0d5b5fd8a3a4711d7a969530a54bb8887b80bb4a8b897291e105d378d98477662081888d4086763308c4fa56151d539bb14b7dd6a02adac4bf06d38a003eb294d24aab31b76ea1addf0f71262750ac985273ad47e35d9818cab284e11e95ceb85e181dd3e914ba2de429eecd5d9c1aad9961497992d8d50e6d669641ef8752dba77d26fa7d146d7ab5cd7c09ad7b750edecf84eb1a6ddf38746a0e3a704d89a2a5b582734e1bc9b71106b9300e309b28117045b6c997a9778716c29a2b0304c748dce4ea5b36c32f1688559538a8edd92512a64b1cf248ccdfe0de3a86061498c99f6f554601b4aaa02d973197a6cfbf72d3760a563677b89554610fd234519092863b2c9912d757537cd8a6d5162b9361d6b8a04548142f2bf2a1911c2a16fa389bd676743ecc45fd94058c9eefef94fdb8223e64aba1143310c375f3db02a4354cc0a55c30186b69dd210c65578a0a33819f96b8e9c44f38ec44b1999a78a54f91ed3c3b6ca33ed634c1d4530473cad1fdcdb427b2c769463e73d166982033ebf4474edafd38e097898e54bbf8a2d8a4ab809c1de018bfb5cbf4a14a946483aef32ac464fd08d1a634c64999ce151331063dbdb731ca3f1da83e23af29f4c22e41e67bb596273c1d96bca013be4deeeccbc034db2c13c08b0d1ed13295421997e441307f700ecfe40b54a2006cce41032676e1e096ccd86af73239f57207bd7bccf2339727172217828872d656a224f3d30345c1edf457adf56fe16f18bc184b6d27fcec1105b1d28ae5de9b69d7d99e73be36ea842d412b009c7e15b122ff0e3a007bf8a3796386210e7db4d5fccc9bbe306628433d5e4d6cd47a3132baef6f4b114aa9a27ea5f5fb3819a2d5a89ed51d99ad4e828f5f6a8908ccc18f4e6b2c55e4a420c3fe0f7791ad741564f340d6446b34853cb08c77d27b1a45596658761e7533c0784aa12fcf4954e843fb23459ecd616a86d204ef154437b70ad477e80db4a4577996854cc600dfdaee61726f33199f6f504c8f0d6fcfe235eb29e905fe07197bee7a6f7d7f564c2e22c95deb605eea1b8d17fcc96d5ce307483dbf757bc55c4c6272803185e5e276c95e7ba81ade381e25531428557f6b0038aba46cc2bcf240355fc158a4db463ff94b30ffb991a95995c01ac9e99ed078d85290f64cabeeaed1052bacd979185784432e9150a18755ae46dcdbe477915a22d5891288c99f2ae18b3ebe5f95e2e677faff0c43ec1cbbaf6d50cec197acf30a1c7ed2513c0bff7efd2d56581959a373a9a5267f8654cbe5e5c96247e3468fa1d123f136a3364bc2cd94d79981e7b9648e4157f8342df60100b70adf13a20c40e4ef8f028d428e014ec0b8bf618f50a36ad43537f1fbfda233f2a8873263eeb1081a0f170055ace0388849bbdd16b3d3010a7baf6d7e50e499a21df320299c6a33b13133f353b69127b74cc8308787359d15024189bd7f576fac3d281073d08022c0ffbad36ffeaf1c0326d726fba33c8c9e58c0dcbf047e99b117d50ad76c2ad2811858027e43c4fa959e34a1bd5f689dbcafa3310cb6b41ca2a8576a882ee108a666c95323fdcf0a26827517b8794fa70440f907fc9b85a2dc61655f2efd2dcba5680690ce1235789e96721231eebf03a5729c0fde0c80f9de22246d0ace55e4277f6ef48287eed357b06fafda55a30d926137b2e83a0a94868879eb6e55c86575f398b272e45591e0e45e2031a811a6c280fe89fc9d1a08e1b34f8685003e1ffea77e6c696ca088551e8f2a297b9db57c823ce336e36a918cea90bc65f1e72aeda422bc0662d6764a91fba72e1a6ea1b1c8b442544c818aa8b2a5627bf7f161cdf292aec8ea457b42d7df06730e2dd96af59adee2a8e0f8554c531f3dbedbe33d751744e6585a9ab8af2ac68bf2254c466c5e204553ca00c8aaf2ef32acdb94b6b7a8f1f9e54f3cb8a9e7fe60ab38f102d7d02884db406de44e1aa04c2c93995cde541f7c2873ac0538bed86b6067411dff3e48f249652b74a5ff58885bd9e0e62c0da90dce7a9bd6f1321245cddab87b8eeb879d23dccee3ca060de954469692d572619264119e1a026e7c83c630572b89fb20929aa20c94d6310bbd9576ae27029e8b1b3cd4ab5307e87cea0bca252c924c00ed939f3fba0f63723434b3610d498660a2abe3a0fee5848de8c195a94d4ddd4bbe6d47e4d0adafb647e2c8a96e00a88d9242a0bc8b4f52bb652c8a721b7068d7bbaedc1e9806531deef65cc46e21beb124b15724e7ff5528e284938fd95393afc3093333a64b2c44a4f7fcb76dadece28871735f91f3958be4054317911a99912e5f5d0e8839139b425c7ac95cc78329e17b32db4718cbacb885f1a32cb9ab71f2a55abc715abae42387e10323f397010c8f16663d3afde97d3a5acfa4785cf494e6a8ef7ebe47b89b2b80b7112d08dc3ed8f4b5e22f9db58581ebbd3cc03df6edb1a07e834b4702bd9cfcf668cb2e9e700309e03e86901302c42c91ce3a9804babd9ee36b061c8270be7418ec5b662094fe80e4d72f081f04d3a1f627a97de3fc904cbb2df89f4bdb92f83886efbfaea2f9b6202bf8e985ca54859776f3bb07346acc4a48903445159e79b6fe85c48a766db6d8b5bd0a08601d8da7c44b331c59c927f4d4a61fac2f9a75b3bd8bdf677533b8b58db475fd898cac5a8573da81b44723c52780b38f8b353898a09b1cee0af8f843893383cd064b726931764cc87fa785eaff736a5280d58c8fdef6363cf391ac72f8cd8f771c013092f36a13385845f336481ad12c52971e08fd6495625508d816edbbba0b77e09316650f044b8155ba9e671fd4aa78099236d46db1e4ad518b6713d33030571bbd3a5a4de630f7964fbd2122c92a35579990a31f953b89154b821a922f9f10a31dc6befd564a5166c651073d546179e0e05036d38e530efb79e6ac001aa5d8c7ac89827a47af745a42bc761d1ed51d78b7f717a0f60d594e38f7f865afa5e49307d395d1bfa916d53b842cca286468c2c2c7d872e5bea406807ec917b294d8fb1cf9f5aa90390f3174d3637b73bce26de54762f709ae46773a272ee4127b853eedd4c933728f7b78a1f7862688e08040bac35bc95b9b7835ac01b4d703f9f70db5428ea0a593b0cc2ce36f9f7fa91733acca9e9c4933f3fcda022e622bbed65b96a452188f60fde9d9ad387103432315c1aebb4f239d589d80810d1c8f1111e3715f051be6c33d71d10e9cd0d6acdd72a1078e1aedf16e3ab5ba4aaeb34bddc82d5bd0b40ac03ce152e5e5497a38a5b74531e14a7dbb2a69ba4edd9edd5a07ef16878510c60ee76946b4730c900fb3c6f5c92441c27c89f337c0c403553f8fd163521b3b3d964d030221c5f5c0ae2184f533319f52293c4dcaf8a05e0c9097092134392a25f77772d8771cbe046243084e171cdbf5aa2103fac4da2211f7a3cff823d457570507267422afe859d04877a0e01ca8a75c91af92525ca8bab12717581edb84be46a714933766592c7037b7d43c81e7b490753dd7b8d98ca20f641d6da6f3743374530774e92eb2e30d307ec39fb113f50a3684406da9c50ff896855c4046b549fd66f92815dbd954460573b0bf4557cf8272864acc2ce4a365795cd3f45ac03c8680780db7914e1c11225a861929c2ae268ddd5398c84ec8e40d9dcdd105112664342ed373cf253933c0884c6bcf4ec516051cba736d708f17bf10026763f664218ffdf10df7db9ac86e183a3879a981e7a0302d65b0207c32cea4e54be53aa9fd675eccf17155b6c1e894204788ebe7216914ab5c73c6e77f118fa1966ef0616a83e083ac60b3a0613b1ea524e4bc11c1724db4a61df78ddd02dca86680f3698f85004d70dbdda0c03c39e49e6e8d76b87910117864941a3d1e40d35c76f7abc7b4b80c94c2e5a24852c8a94788d840694b0bee6ba3aa75249046041dd32d201f8c772d121fa07a3b87e65bf8a4a4e12f01222ff9c491ee2d34376fd29cdaf5db1d66e408131d6d2af39e144af0b047d50aa99504bb125684e34d79a7c967f3f1452893375adc0a7f70ba2b1d02039c1c09e6be5087938d6b131d154fbcc9178cac808d875ae1fef5a21d9f15a3c6293878e10e04d48b0fb9c335337ed046508a98824d81c408191a4e715d18a1b123532ad3522d1cc47b55bd6e8d6ef7f3a5ff913b0cd3c34184d4fb0e74d1b35d4d0992b3453b642140c02065a35b64789eb0d4fec7d0bf8ccbd9f26b8630714a2bebdcbb288382ff0c894410380749eaab9992bcfceeabe10a357d7cc2e8517940fcddde50bbf75be2d6e3820137a2d66f68060fb646e85f6bc87ec9baf0c5d50c37c884e180575329e19c33853314c645ff55e72d17b269d4c55b322c0359dbf306b913ecd340b37b79bf664c4ad7d001f64404de43248d8d352f95ba20e72befcc120fd398e6a2717d6b93b54cb4131016b79cc5d0c75c677251d71c0ae107f55da7d71e1628a40b65ffdda80e11182adf02e8a768b499e3ac2e0806c8a0da4681b256e97a396f15b9d6015fea0c81a703146e33d94051bf676d985626ce4c7075a41da553dc6a2c9758443b3cad8f07e95d49559643d033fb64dfc533d38e9b69bcc44b1728c3ea31564b72e61950b12b9ec47635e38d3d13e46841c160cd03027392ee9de260164db9f0d8cce98110186ffe06eff66f3a2f47c5b4e90202bbdab4b53ba1684399c3826dbf597f8d2532aa7c7d24f70a3b22dfd5c984c591acfbec9cc94426ff760319762ef9741857b19ad9f5d47dbf7494a7cf76b2e86bc268df33e1899f62e98ce621359d190bd4fffff49f2657d75c814d6edc57a59a569553120fd908844c7648b8373afd181d3ae05283e5210417b785110c990178a7e98ee5fa806fb988e9ccbc58498d1e5db62a927ffd7fe10b5cb3beca64b5f8d8439f9ee32e723d37a4c1d42649c1e50f782a250703d75cae67de404be61ebf2972752fa6768982d4771260b339d72317bcc8b5ccaba024b122fae0261347e866bccfe06352e076f1c977df161e20c2c56f9fdf7e4f4b812faf7b709122f6c45558f48ab49dbc3a7b12f5813183dcc399b5db29b96faa39977f40a0e20dd8f0bef43b3bd097770bdf62a77327f4285b5564f06a842bf76473dcc4dd1315b179022f6c104365066506d9e3c7b182fafee78818001ccb604c9260aa30bf3da208a120e2578d8f129ce52da618de422b9420dda98230382dbe627c8ed280ca7d3ff2cd8c358981a2729d274f3540ce96fb715837e58b806974cff3307b5ac92bbc54b5b7608e0a5269fe25b37aeac246972b9f8322ce552a71515cea9adc891e748047a5bf13df1acf929a78aeba40af98678c43e8f48f5c726ca372fd661dd7594869f9ebfd19add1328ac677aa6dfb2999aeb0e783a625df4a88f78ec7db797e04f2f3e9e0b357108c0f43cfdbf169c414c7ebb56e38d4d0b81e833ddbdf7221122f7b9c3a0d8173f4d661000b7bb945254f2f6658896019504db2309a892a605362f6bf126caf4a56a20216e93ba59640efd14758fe7c694152bbd125fac9775c3ef8757c7721f301c85fcca26671f4b608197236a136f8c83ac45d049c0fcb086db9ab2cbbf688b7b24c6281b6872fc82adb07fea1254e076a89fcb297331e860a63e5b729e864495dc4e323e72371629df25cd6ce2d16a91a54951c5cdcba8027293811939068cedac7c7483b105aeedb7f674f21cf1583d540dc501e236eff48357d9332455b79d08cfb80f7718c7413fc26b13206af09fad5510c54a892aae6600735237ed9d0f8fbb46ee4a5f218a81beb68c0bc8d553eea2e3f39b898adeebf6585e5ce9831a07fa663cf2c5560b080a4622dca623928db76c64c7fbe1e3ffbfcbbdc6e023b29226e4b09a811f5763da9f7ff83cec69413aaf7d04eeadc307b816dd251660489fc59d0e7e504a8f926971f61dedc8231e2d2744df1d81f07629c7571d048bfcaf4db9143fef93a6bf73dbb9f1cb57403a0e6fb0d0f128b83564541cae08cb989cc4615f97e301ab240bb24ae115f2be126b589a0a25470531e9bedd0de7c88787faed26ba8cb8aea2e32aba1f0bfd1f897e035597d6d129c08459edee4f383dcf10561feb93cfce01ac94335ad306a467297a2cedba9257728a7052db4299f0fefd34d9b4efa1a99ecd68446ec4f551ff90ab85b0a587f705f73585f2de31aff77199e2fc916fbc94d6af35884f159aceadba8a01908e2083861cdf7580983ad61434f2bd187315dac94c60f8e4d7e6786f7e9ffa27e1834901659deffe8e7b043417004df30fbf20c2387b704d124a1e39edd1f9d8b1ddd138b8de0d39c49b0b61b94b4d802a15badae5dbdf63109fd97926e6c4037e35e8770632d2864baebe2a37037bec2201e772f743346a9ecf2ad9cbd94fbf66709e2693bd839e8d2b35e16750f6649c2f7417a8b50f973fa4cebf2500b78dc2ca2381b945b08b2b1ed5ccb05c1494ea955e654c8ee1afe2fab672bea88aef0cbe2775cc912be52e5932b4ed356620fa4d81f0ac70a2b595e0273bd44860b2d62f5ee18b0bba8004f33027674db14686fd93fa737481fe0ac19cc4884c4a3c4bcfda9a509fcc1aa416f205a04e12e2969e2af4da06df32adf0c271d07c578afbd8d9c9898ddc7c4df7b3c3b06fdf2c33131444266e3c9b302cb03bca651cda9372e9c6a184ae54d00a241bc3a49359a0e3a5ea4e9389ccf9298d44e2df2891996dd2a6e7892ead3b1c25e0463e28785f622dff6529f7bdc938b744bec78b18b018b11e581eb1575c8cb64a4276877671245eae4ac6d61c7a011eec0ed76e5bb559cca3e80eb6b22c24375597a81d7d423b077ec079d8f4b686991062fc2fa572a69bcc99910a0a4b2c50007d3551f2eb4a7b6d8b04d818da1265bc7b0f99df163be4361463a8d25d77d15829913d6b626214036f63f6bf311b0aaa3edf807d03e5c8ee2b82c3e40e7aefd07e76b0f7ec847192b94594c5dd8c248e37564c293897845721f0e86d9372c2e7a8b13f829c1f9855ca1258e1ed4edbdf103237cded13a08dd55ed28434ae284b9eb4372f85748abccc252355ba814f99e5ae1ed70993fb69c043a946b704ed7badf38c28658fd01da7f31a2aa8eef455ea38dce7046188a4c2e47271cc500d12e30b44a32831199caca38e121e68893fdcfd9d7c865c90396dcce0b88d51f22d7b47c5924dd33288d35838b272ec00a8fb8bddad4024aa3e0f4699eadffe3fde25dd9035b6445f299d54e37b3e6cbf47e4bf4e3cb4b09734e3c1a674cb71ce9eca318134124df771d8d7c78daa1b0f10f2b7d709a766762cf39c5a17199aad873f30a01a7e7cbf9d64a1371cd6cca7eb7801bb21ede367055f4b156dd7402a0e9a984042fcd87cb54d5bef1a49849cd14a4d6e3f89b42a573820c03c233b0afb023e02d7ed3c67578e1492aa4d5b2e87b7078ae6177c5def1ff64d1a0e1cf23a32b7b93c40aefa86c8729eacf855b2d4fc9119db8ddf0681fc52e6244de9222fdd5358e6e799dff76a4f270fd25f00ea1da74a1bcbd6969eeaa42241cadbf8ac471f40511ea1d914f5bdecebaaef12ed818b7a8a08ac71922be5d3d7ab62ff207c521cee2c8f353e8af4dd5b2d831c34fdfb73f6e6018d219039d0276be50f48e39291255ef5550ce2e3f976e42594c2ed39247683f5de302d3090175cba3d0d5f8fdd19cbcaea28eabdc79968f629cecdc2bba5f9808427bea07969cb43e596e37926e3f221d4ec964edd414bc1f2d47a0a97e2cf08400ef78e417ae964a3120196246f45bf3dedb476023bc07b1c693d7f84dbc34ad993a5f508e0ffc865b62a8ea616de239dd4da1c7c352111076b5dc46a7697a540b5c53dffa029bc21808552a30d9c8270f6942d94826f289d328f787d48c3cbcc03cce89314e2b65163b4f28532f1dae8ba707f059886d3b99e2bbf2fe78e8204dde7f2a41d5fae8ec1cdd6d7c9a13f09ce1b68a23d7919989fae88253576e2bf67385036ce99659eea97a865991bdc272655fc957f37aeba55cac773792cf7e0e33c437b04e16d944b72c849070cd31a562c1f3be4540ccb4fa31d28cc2262d20e49a4fe0394e1e6126f17dcca76ffa8653c5f257b67aad1838abdc06517142e77e93b74bc982f2b8a79f09dacb9210484eb7d408373951f689be9f8e3d77391c5bdd3ef7b9f1b2d5a6dfc5d31f1019e867cd4cdfc3ac4fab85736bb7be89820ec01f9a655beccfb23911d35e6706f2f8927b2fe1fa4e9494d73c5343ab75030fdda3e2ef0314506c2d2858f713612731a43af96cadc8de24dcb6aeb7dff293aa74ec12ae87b24f3d8a81fd4c1ff67bce66b3462a0d68424bd50e9601120e80b4c4908aef731678ce28ad6faf24dd66c8eab1598a5688a629f6cb6c2ac5860a2175978f4311518dd432fee08a8ba292d276e098d81ae7471bbfe0521c4fdfe6af979dc9116eb2e4fea87683f4d4c15e2fc80c0ddb8b85350b6480af7622e9bb6602cdc3c2f3e5e735484b13475e625b528aa5e7026b5ed21a3731af72ceeba8db8e046f7848a0932968ce4dcf2aaad1523031f72c7eeb579851fac1d76621bd4f089c9f567f65fa2fad097188861a3b2e9aba34f2ab2f5045f557170046277d99d2dc8d5bd90cc173a7afc5e89352c6da2f93378821bd1aed5fd729ed5a2e62df939f54c8984da272b95712be1644d7295c55bf3124f96c4b0bd8326c752a59226b7e7419a9ceebcbdf27251a0e5f827a91c52f3f70b1cb4293f5b14a42fc42987db2528f1de9fe5e34294f4fef78133c420b0b9f47f11463bc0aea9ae99571d6e402b546c88bcfb94685e6fc933c894077be7ffe91e6f6bf54936308816630cc47224be16b7469d7a3d3c22b2dc016dfed71d879b0917517e96f673cc4ec3b8da87722be4941692e2770c07acd76a1e6e7b408dde6ec694888b38652c52d42ec30962fc20eb4810fef8b435b5c134460170326747c32fd180f31135d87f06ae50797cab060ddf7530e4cae5d041bcd2150bcec6bf6ea304db6f2a5f9b40bccd8791f30148ece235c55d2eb8d6ed54130e90837c20d77570ddda396f5e4c6f594fd1c00b622ddf45dcc7de7df5c0155f2f7828bc642db999c493a87021f4d6531e027bfa7627a6c03b90913ac7534f432cf978d2a30ad715f5ad9da7a927210b9a10c54dbed1e1f594973e53b5215bcf36bd886a2ff243032e1fe3736b19be0a44c338c4b0ed1b80c3eb7556622af800fbadae715a27f790fa386086e20683026527b97b4725a75fb2d8a603c77f6c7acdae0bf5fad10c306b6f6fcb131e05241b5a989dc5758a6103d2789c506374b80d636479f019ddb8237d487ecd5470bb88eb6da6b62ef3174603253cc7a8a7cdf651a571898d95fe0147561773c6612c4331ee755ab1211098a74c8ba9ca8fba2b80beea31d344454e0e00340900594a189d96ed1c0fbd33b55e9f58670591fd96799adb03a5d5022ecd72dfc84aab3e94fc816e19da717210f2f6baf10927348fb145cd3aa66a0232605636ea60702bd6b27e56bdaea15e433ebc0475dcd36c2ac2065e785a9249d6db46bba9b7c0bbe7d24c8e595f51585bb1e0c15d081d94453b254bf5c131e665d24d0c9d005c9db4cbf0e88deedf6e7cfb66dba07ae85ee9ffa5d650beba75ec4af62c0375d2eeccff0ed19979da832c6df83f5db5593bf169bd6eb62982a364698b48014b19e16e07efc481d0fb27b75c1f4ea0c72112d6db8b8cd0c7ce781de309d400442720edefab791325aadc84455e982df44448338c222df496f71234084b82db36d771dd428ffb7e9d0c65c8af78fd5383e2018163cd6cd6e1531ff4a58e321f2276cfede7397cf9a324057162f98a70a9ad24db76fba3140c3e002129dc4671ea88787e723a8d41f89f0a102e7b7f622ac37657bb2592d9062117c2beb3f8f0d1df124f7bf3dd4dbdabf2f22002796b05c622081d4609ebf62a5be45b20152ef8d4523b167c8a44eea2c8ba9b025db0eb11a355a6221de0479541b3a1ef987d7aa15cabaf59c2e37d2c7b4eaa17159aa5c598fca9d13129aad2b261886d92be23365461c6c7044866bb7513e1dd2af103ece633d754f0c35f5084de36d996f23ca2e65e482e20ba410352a74e28f647d5c5c12da4c15bc6a6020befcc0f5e0d571dd1d9930f2f5c97f0ff86473f6d1757299d8621f452ee0bc7a9e73f0ea9d78c9d1ec3eab8347735426857fb9d822465250544758e71d6b5e7290b50d3d99cffde0fd00b0dd3126cef0196beb0b5f7179ffd594cba41484a8378a59cff4eef7ced226c4d62e7b1761f63b1982e78766f85a83ae5b4a1bacda4cfcfeaada48028fe5b12e5604b76adb57bce0ddcac40c6cc649f72f4bfaa7940b487bd4ff52c5de47f8eee3d40e11c044167cf5949ff826dea0d7da3e0ab3811d86cfff3640da119fcc4a4c779a88d6821d050a2b515cd0f21cc9705d940b9c039da038965ef58e85b541f3a848fed4ebfc47e4f91d05af83d1515d06c37a8491a72bfffabb0c3606f8cbb087579478ed84079169c2f78ec98319b63b22ba7b6dabf01f81dafed121720061185dcf5509ca0ceb6def7db02dad82e721b0d8a5949f8d680e75abdf4c452b10c5df6b2955131c83fbd6b677cf4d71d9847d0162d6c28371c953b080ef501fe2d87e1e78fb18299f8bc8fca3018f291652de45ab5542e1319c303c44e77c4cb302ab00dab892641b9bddb1aec93570101c2a4da90a3009f7b6aba98c05d464f9d7eeab645e16fdf02bb6459163e55661980c0cd240c913a80c50d4bc8d6e9a984fc745455246ad074245869abd315eb92166e53f170d81f1d3a75904b82cc039470cfec10e5071c067ad8d2bfa81d74b35bcd62902a33713076138963241d72cfee8c188a0bafd58282ddf2cf0c2b0aef63992bd49110a90e8817f519c8bd30a986425672985d1e0961b85ccaae91384aa40a8f588433ceb78adff670bc3a0189f7ac5456095fdf9c7f4419ee64584c63b8822682e61c3f5fe77305b8770b2e47dc3a4870d76fb085376268797a4633bb8cf3274fff339ea85cbbbbb8db9a8b702ad44bc8e652dc8d8cb1ef664420963d21dd7a7935ec2bb5d5c61748efad337e4427de955b4e16c77cb48cb278ed438609195b0d5a25189992d240d6e31a10e3a8755906773f3ac544225f870bbe538dbc1b1ac84781c1c9025f43f05383976015b5ef6de7262fd1951f6520025666ce3af7d3cb5b320b55db2456ca1cedc5498f6512b69907c5373d8dc4f4e7f8ab0b845a8454ffb04335f7e49f38276c7f243f2f9b8c755728b94f5865205dbb807c167abf48dcfc8c6b934b64a5d1ca366abde9de950e77058b08e811384777c870995bb2a80e0fe02d35556a0da92d68b5b6d7c176c429b4b80ef7e245d653161bd17db308bb48b0ed71bcc3c16dd38b54529118619cc7c10c27524f7d6f89196afc5f23ae59e2229356f3d702249f3553cbf28dc692fcf76b64d31ea6b0c9026d65012001a06fb7c1febd9b7825a9c8978d60574018cad42a23e10c94a1324e2cc273a6f8bfa776e0ef26cf7ae84d5bb1579185d9cf48e05508726dad5fbfba34ee65052e91cbc373bd26d1694b5f5ae930c0a19863da2738bca711024e23359c0552683bed463a327fa3f0c14b08ac857da1fd4221b65c2a50b473580928224a7fda530e4d6df26133d956b8336bbd9292836176590909ef4ba44e7e9db83e82c449b940bfc2972892724c92905d490b5e0d5b758adb43051d2c91b91b20ab1a01ea9643867cec7d16324eec39c89600acc2619999d1d79970184685f22a5c6f251573b40fc82157c2e43a301ddb8f01d58c0a6da06dc042aebe6ba6d11bcb23b4357305126c7d2deda0105096fb01b47f19ad061b70a9f6d709e4b8bd2f81d335862d96aee45208b67b0bef2ff4c12c3eaa3b587a4ab2a4b0e4e8cb987da3db8e753f7de61f47fe122763d4a4b728031f7b5183939b642af492f86b154a5794eba6025d64826c37e5f1ae991f5aa721631f8317af430970b2c61a05a61150a9a1a8efacb2c1379c6387fb4bc36f94c5ab3e56cdf57703fd5cffa0c56ac7f9ae675ca2f10af853d5e6700e4b254225ac8c17f291126d56206fd322c75ad4a5da18c4987462fafc4b42528bcd2edfe5991816c254ff1a3aa99d52e0d40c8e898dc320664e5c1596674246ce76c139afcc9410448e9f9cfe8129249d46f8ebe6dcda08b3aba76f237148fe4c543342967e9538f2ac65cd340f44de73673d29e785053684663ef257a49202f8612d726b74c7436dcdf91eee84ae4246ded89c600617cec39d545093c9046f0da03251af7b2c2670fc23a694b1fdcf6f135808293a30316f0d742099ba658a45c3944d51fbf4ab2141041aee80665892ad4d8e84adc16cc8284e419f410dab22b488234907d1c5ac5ff445ddc9263f3950a625080764acc89cd34e0af94cff532b74ea8dcd6f426c6d85bab50df8d8e7649b76f56004aebb0f56fd010be23277f850514f71b762f597a1ead7c089886feb7334e5aab188b46137b7a8f5d1be67ba189cb7680f0a24bd5076403ae7071e9b0b47075cee168dd93aa7ede03da468b71afb9379dbad36a7023a9aa788d0215422cec8e6359249fb5d8e4a488f61d594c77f99eee190452e40b4f6a8d472b1bb003488487ac22770dcccf5a871f7a7f00186c9254bbb7505f3915c51b483a28f04d5a96fe01afcf01eec679dfcffd8d4dd9159893bb8b9f22a04636d404cc472dca8701ac8a7a354e51105f33130b4a67be4ba1d23fd717039f1d406c4c9e2b45b6113c1d22ded78408d5d36b5af3097800fcbc1d9e9628ec3d47501ce398ff4b715b40fe7e7f8685cc092c31609d611b599b4be61563d15abc1f41222f9d3606ee515ca1f33b7f0af35552751d53f3e21c815680187902df6f82b73ff5ee5b71f55e3a7dbe7a191eb572e4eacda91bd225bc5ba3210fdfa0f246fe372548dd3939923bacea481ea1c5bcb88604b65be28daa36eb1f7f05d7a1c54955b6e9714236eac56cc0e066c637f2c206d0fdd88039decc596d042f526cfd7ee4933b3b23e7e6dc9fc57e2d95b5565367efda060b3218ced057102ff2f034b3b799cdfba546d0354a4ea6566a06b8186e163f9159d06425993977982ded309aa2a0cbc947a25afc199d37db74e50c2321420ced33b7a2b0e021f8148dfb5902fe9a3672bdbc92a7da93f9653728a8614c1d7386d59dfe72340de1c92fa26b4f29c1745a6dc03b92fef378290a353abdfe7409626fea2dbe0baed1fa45b1869d04ce0a0ef00109851b2f5fed9ac91afb09bd8a29a61c72bd3bc5de7994f1c0d7734b90ce97925d046cc7a2546511950c85a474091308af64830a985af7228c96e0ee306ce4a27bfe4f403368400c304a4dbaf178c3de1d0500a5b2cbda4a8e0bb9054d650cb54d6ac69e0284d2442d608021c401b50b67b0b8335af1bf52c599eef10acc7c9f3382f7798ede16d7b75e015622625fdd2c2213666a18bdf60ffa74b6ebb8515f7d89ac9b4a05ddc67d75f800b8ee2a00511f5c2413a1fc0376f5c493b421deba7d76d4308fd24aa6ad5f50dd3ceff1c87e194448a98d3ae7c9cf5cb43fc42ab45e6e008aec93548c926a36ac53cc864fc46c60e5a5b8498b7d763de905756fcb21bbe76b0652475b484ea039a3492d5944bca62116538e87c4686b7673899d1176c7e2ef586d435742c5c4705bb31f134bcaf49dfd72849e5d1771ef5946d40a4eb770f4880dbc0c9eec9c8098da099d4fa7896e6d27378c9d2bda231133ed605f67b41d2233f8867cfc691056f88a63ac3a8aa351beca2495beb91b19f2f265f6f8f265e49594d6dbd42d84e412b84a18f77e6137a6f1c26c0a22244fc8a266c792153e03dc00e8aa302f51124e9ca82a04d3898d9c77064f89aeeb074ceecca7aa2c3ef820fea9110e7b627ba2b10f744557f321a7bae27cc6fbaea0cd7f1259ffe965cb3427842700608db0d469e9f56ebf32ddad2afd645f2a7559eb2d83cf6421edf276661d92abf0152929a8e002c623f3fe67ce5bd8d35f5c8a6a89cf9ea84ea42cb27a72c6a48343303e471cd24480de5cb6be63b6cd45f685e0546f761f10e5f2e8793ce643340541a992494f9635166672aa27aa7987b4baed06d4d7dfa7126f9448a773c762a68171cb76f1c6863bed2f5106d3635865e5cd486b70497baa0b722358554c31935145a5bda2961d08fb6d0b99720cecbf66c87a71c13b95e4079e1bc4e4b6072d1b55c9bd020f83762b3940f2f911fd000e9c2e94ff4923e4ae6393d600a60fafdb1154e78d60ab7a5750ef2b105f4797ea59ab64544df87714dec3e75eeeb92213aa57957310684a8d7228466c440be0f6426b9aebf1096b793e350394e938640e0456f82430f235999b92559cc790f3ad249d25763ef164b94f4b7e90190237bd20cad0e6ae6610a19ae60114b99d81de60a3110da16e5a6498b7de873e546a86469ff9efd44328949c71541c5501be4c4595379ebfe18d654f00117f02ac0dcc0fb6c2de9eedcf71fa96d67e4c0c5df597bdc04c25d21f5a3104effaca4db5117d641b8fff2d76a8d94a00061313a0034519796fe96a2ff92671168916becef676f28c9b05af4e0ff397f62c3bef71ccebddf11698f88a2f974a0f1d094b0577c01b051381828a3c23199a98777e9360a0ee7345f76df0d03168c27b6f83b6223690702d0d9c203a3d84e5339421d8879767c242bfdfdd00faf63f2f8fb876415b772509515426dbf61c9c095a3d72379b18adb5ff09f2b459f4d5bc8d82a510a2e81dbbe1e6b733ac3b4835daba4fd51502736db6cadcf211b67617173c1290906f023c6ff370f525ce89850d8786da3adcf40410a2dfabed626f883086b08edf8d04fcccfe74b284d9b4a90f14d1a65391b7c9e538de5737756e88d2c15ce9f5378927f6ef0749f1efbf047ed61a977fc0b6904fd6feb1133fda42f996b02dae55a3e66494b6f9b8ba827fabc61cb1463b07638bebda380e6277bd586fe71229445e21f31b0fea097944f46be209763688492c10883f5456575fdec6fdd27a8b55d892029ae9159b7d9a0d33ab4bae6063ecd45be47d4266e946cabab0dfecea4c2d35d98840f128ab96b223a64e40fc3a3f72f0d84b2f0fb71455f64229bd57e13050f641993cd6fd455a76db5e6498b05476ff64341630b6c77e8b2d9f51e842f9b4a385fccd2e017fe04d5994c74a1ab50975289852afaead36f5303937e58f39f02df97e50c05800b6abb0cf6f0105e1f870ec3dffa8b8e9dee7ce3bf9b95d6c7dfda4593cfb38df85b575c672a9aea3dfbd18738726c64a4ad3ce8cec1a34ce444274928954eb45aae7c21fd22b88357c823cbc0b1e1b722ecdbc1761e41128ee01b734df6e4e820a21b3a00e5aba2e543c8a157ceacf4944c06742eb93e569d220a219416853643caeea6844c49e49150e57c389e74ccb90496171b7e01315966cce407e477fec029b0b3fe21a44f55b8f9eb2d25ed41590a2829c19e4f676b6c6b5b8e1ea6c4a849a41ed4d2eecb7c9967c69e87df8d43c5466f3ca7759b3934c3917e8c7482bd1c7b7ad07d7906195eab587149f22f72d34ea9187ebfd9ec1c11e82fb415558975920a71e11580eff5e2ed7fcc80cb4445ab244fef7166aa9908b47785c67a519253079085e23f951ad71ec88eb47e3a452a65d44e1ce1ac66c8d067c12692fc77521d92d10051e5e392c57ab0ab6a2f1cc71983f0fc1d70501956741add8ea0b502f3ebe7bc3ac930eb262f039104d086f010fb8fe80021a1cf5640a08468234af1c9e9c28594b2a997866f40561c0b33e0a3e04520e22c07b6623dbced8847fafad3977097428fe0299a623ab89f4114b831981f4669d4daf845a876bc9e4b5de2a795c6cf9dd0ca753c46543bbe1a5db273148b8f3450889504dd482e5c5e41ee2d85ed17c23bcc188be96e600b74f70f4e4d59115b2153dae52b1990f9c12a0a5e51914ca50545f3e82ef93b260a54ab0a99199a3670b9ce5edc8b8bb99097748492a5d5fb0588d1f0bc09c015f650e5f5d6a4764d669ce2277ecaa746e914025e7ea20f0a1a7fefa131d3371ecfd43ceabf8f095228c95f4531cc15755b21198080909e38c8ca5405763b15a74622d0c83d96e66bfd65dd1bf2edd9673dbae8399c106d2a22d42885fb2296759a96aeb9732f27dd92e5d902457e2f78606a5cb74d9f30c72ff860be8c0ce180c2c6183fa927f71910490ee02109153e43269d8c0a2181448284028cdacd140712335b0baa13850067aa6096b294217c6d113195ca1a52064fddde18ca8628798fa6a8f9c4c9a193071dae704feeac6eafda67e59a0af9bf903de5d57a89ce8c2d1f205dd6819438a8a36f0a810537483980ffc8c4a85a30220d164af704634b9eb753806f813358e5e0d708894694d72a53a0d2898458ce2da28e69aa87d8e72ff3a13d482e1cbfd7b3f17e6a1370cd980a92d66a3765bd8eb887463d192ee0aa8dbc7283ce9d8fdf475785e190284f7c7e85e49b6fc4b416c15c5e645979e096d524511de089e0085a68dc077cc1b5a0f2fa566a3394cab61193377a360c0f71c9ec4d972435780990d31761c944a58c0318ac2bb4c7fb7876c3b4c3e0fc546745441327ca3b089c749a57cc4491ee3b7ef9cbdf363bbcc833201838377f7864a03fa622a784916786b0ced3bc5baa380caeb1009cf0b9aece8c9ae6a28f0edbf2cf29095993637d59aee1488add36942c88cdabb0d2e69cf3c7ff9582b212d250071122b2c810f426db91e0c9632eac04119ba6c6216419dcb30d417044c9897ae81d3c06fa59ee7223b4a6a5f36cd03912efdb18a69d8a9c68f37c1e90b9c8b5f72ca0083145b20cc29b523414f0d828eeddbb51f0358a66b7174c3ab4784bf56567c1ea8b39cccc59cb338bf84a5eacb7bc56fc872edc16751945e38c19250d28691088459d7d9128fb84b35ee8fe48481bc0ad8792d5a86cd493d448c65ec841b7a880553a586d862ce088f3b14602fabc30a2b8d46657f27710b2590ad58557522021ee3a12daa5a9fd33b2c66536e2c5a03165b030055c5202c8b0935cb39b8b7c539bc13a1601e0efe691794fcea3908f100409dc972b149f1680736cc9a4a7c2572886761f03c5e091c65c5024289fb87dacf5ef7ac19e8f6ffec009da657acc1c7627a3811a2ecb3b815c910c3dcb309e74f164a50d0c383bff1f25c634d72bc4f5cb403912578d54c38f4c23a71bf738e3b584fafcbc01159a0bc661b60ebc722fbf2b6dafdf94bd4735002608e8719b6c09198fca6bf5f325bf89ff4073c4009b643e291470e7b85801a27c7fb2cfbe142ebd1cc1d0eaf26d410b5207db4c3537a6e442282ec1f49ad907c6e87746bd2d7fae24e93670e5b93777b194105fb0b295034ca12f07b3e5b11001182c3d692ca4683238e85d4c3742bf4c9968383ad1605ebf5c1b0176a8089756d412cbdf61a98ecc03840acdb268fa859047e2de38ae3f8b839aba07326332b999e8a3152f81c957ae03ed4f6ad8f5b8dd5a0005943466fd28b79a3a5e9a3064776b06fd34d5b1b987738748fe01a4955996ab88ff02689efab9b24387d2bb5a429a25b4331f3cd6114c429e2ebe56d2ea2b0aac2b688dccff1cf594d268219111ce3fb1a753179ac70b92e34cf83917189334a5daeb25e8599fb05ee3fc750783ad240cc1a7264396b21bb26ddcb0c88a743b731643ac54944a339c1b4cfe8926f16abd4d852a93285b6848d3f9086439d75109e5ade0d4a75f3793187c4219f2c1ba3b098b54e2765f57d586fa42043cd667512833037581559902f4e11556ce69c930efa92d12d56bd3643be33cf65de91edf5c81074aaf0a984c9b3a2dbb9974519b1d09c053fc5808026cf67d4c63b33a5bc86f763ae36dd835af3740dfc3c59d947a1b0776ec50538fb195f9aa6953d321e0e101a7efa53b52e607234935572d126271abc608bb656d7687365ef5d5ed3be2423fdb3b6b14014dfa18c61674e322cd1a55243f181ad705cd098ba4b12db4a8151ca31c64406796ba5ab767daa175542830a95f74bebfae8598758dac9b8f7519e44eee8fecb629088e937a32faf79d0f70f413eeed088d4e20ae2c91d529ab6495b04c2fde0c5f0dea4066a6fa06906e10dea8bc8b4723cb35b489b139e0643fbd00d5ca3797cc2327ce668f0c72922070dc64ae1b7a6105fe22c1872b43881bcad4aa23e46674ec3d60eb44a9764983ffb1608964e3192ecfd87ca25c3db6dc30536e343060e729356a46e54ac368d5f041ff8dbfebeda4af84a81b59b1ff80cdfef55151a6d20c80d10355e71615cfe266b701076525518a3b6d0c6ca7186c73f538e5b557bdd56918baf7fd8951508af71695958ec42b956158db26b9b708dafa60cee93594404438205f483f9f91f80cd02966b6c34be4de454292af9826fb594af4bd30b81b26c596486ed40ffd259d2fcdeff85939a963d05e823ff7dcf1c813aa3d211d7ff060a7d0e5fb9539a7fd13f97b73b1aab1581427c9cfe960a0b5fd56b7b331b3545b805fdcd65d1ad6e29550c11f95a8c51d0f218b52ff5f32fe38e8d945b3684401e36f8ebe18ea68b26eaa6530a36c103eec17a9a55371f9b4cd3198269a6965c304c88fe1650f1f1cd52abc2e565a9a7779ddcdaefedfaff05f9931379fd6b3fdb09d44fee1111cfe6038a3773f4c7813c3afcd5cf1bbb7210b9c9a23d6188761c326d4a1580b1f3f916c08541c159d9aa8f2e7915ba13e87fad3b05b40b732300102d92977f89848aca474a63013c5ee95784b90a36c30151d715129dc884493ff020ac8ba60df57d0199087fba22f53792fe7d11f0ecf1861bb8bee87b069753a386074fbff2b584c239b7784a1f64a001d3ebdbbd437fcfc0ce1378999fc3d6ffd879d648804158b5de1dfdde7699d4adc04673650474e2f4fa7c62ab14deec5cec7f68f4b26fceaa1ba721fcc886556074d72525c00171450b3539cf55234a171bd6ae2a2f3c1512a4873dfa85caa22afd89502df7e3c028c4d09938dd381e1282396d840368e5841b5d1b84b5a140de50361d23834bfe75382abfaa5de4cf324d6453523ba11d3a76a6a41a0ddcd692e0c4ba9fd1dce6e9b12ea6ffc09afde013975015411a0391e9b7328f56cc88233da148adee4aafa22951caa47680a8894541870411bb578d6c0cc38b266febaecb2cab4e5f59eca750a3731c12b5c81ea69a7f8a3b569152c816670ae341ac188a23c3f6cb4ed75e28d70e7c3904cb95da3f80c5b78bc0ac38f469dc19841088e3240e0f7b227d142bab0dede355a16605240409864321889ca2d02327ddf1e794d28a759bee467904835c2ee877200e73691d5b22eae179369c0bd72ba0c267a137d7f95e71d121da2e9010db1a5f8f56f334f7c6d86934fdfaea45542871f95669e4dfe4a6380424238df83d1cabee95c2fecb7e934a147c85288c6e07b7d56294465ff4c5d3fe14a38f60fd7773b4a66fabf907c712974347251fd1007ef6f5e71c278729dd50939f2a553f7b366e7a53575986306ddee996ca46910a8a9bf910c9d723f1a81dc14c09fa81121d2d7b3178f405d950319babd89c09cf84c8533732830862dcee14b0fd050a4d6d079874928acd4e8b793a244f92b068dcc33baf1b3525538f2f02a92c3da16f67946151cf0d81c698c5112206eb3e52a4979ed02b69e62d60af3136f602a5307271365f2524144e91c512d9003e26c5cc9493a69b90cf4d4a244af98ec564f7b3c17f7aa5a98c7bed52a7b77c78570092cde0682c8de5c87da5483b1e8bd03858a7fd01262b954108e4118842575931fa988ff1eb3be9ea8e2e69f3996e774bc9cd23c1f66ddfd38e1a5e2d49efaef9951291a085e461ed121f9f92881cd64c18e0851980e556c58236e1dd4b298eca7c99725f59cb77b626bd9d954656f5f1a511543db03e23ca0d9e4afd8f3fe690ab5022b756a49ea86bb0701f6c72585de095e78ce1d67ac7295d44f8b842b66b819ec329a61710cdbd84a41e75da3b5493265f697541451b0b9fa3c33294b36613af93427f4016e34528ffbedc8b236dd9814b0eb7c48d454e3829e16d6e407375f1dd0d2632261e9171c8297397b91136e66b44badbc55d251ed20be25bb219e49900ebee6fca9c0798a2d6d2a3fc6dc19b7affd1b3d7fd24ebb7ed8ebbe89cef1c81ea53715de271b8f2ee806abea698690939ebb0088ddb5c81817c42338a66b6302a9b2594dd3c51d985723872f1f51d6e9a90e9ab1411d462018f7688efc2e660e1496bd845d3c8baa6666f4b676d08bfc79ba7a40869daae85dc340cb24af0270fa4977359b2e4577cc305acadcc80df5da1eab8ad2296f6b4942be6bee85ab5fcc4f38846d75376126b04e3cd045d9cf5f4e4b307e058ba27755f6810026fb605713be0c8c12319744a0a3bd6567dd8bdba7b5879ae11aa61b7a885c12ebfca589d1f80c68f4949283cc7581eb540c97edccb238007d975825f3098a9cc9d08a2cec418f5a41d6e4f3581e948ec0c4318e0a2df3523672e10d5f9773ad6a091d1db443ed2e8dc35e39a92a15cb0ca15cd8d030582c19c357db955e19a4522377056297378e4250edb0ae98a8e1b6779ed0ca4ee2482f8be4b026c2b3791c42e34d6f6021bf17d2c37db85a39785548ab29d6fdb06ff23e0f076b94e427ce8d6c7a99eac3237cb26340ffecbafdb07d65c5f04c1741f6631d9d48d3be18a358bf4fa0b1da575dc1b2989fc0588ca78f7e7a136ee34862ffe30068b80fae61789a34898397167e06bd2cdbd02de1ca543e51a8a7d9d8f9105520a2a41e4673de46635973aaa25eb000bc4930183aa0e864ff5bb971610c1caf868377c6abc198b7c0dcd95cb127527367a64feef1439cd691c3886b2e69a75a34b50a2e76b635b7d13f1b8afb3dbf6db202930c1572f47fb51a495c5821a43bca2697c698097462a973094b359db493a186fd7b2e4fd2d7a9856c8a7aee385710e4b621c3172860916acf4d0a81c47cc24d95cf99b35c4f739d7580a4dbb365d9d10c176d179e1c529f8aeb9d3a4790a9d9bbf0e736a61df3c660c8b390c155ed5a9f1de9e72ff81d49e993ddf6079e5a801544f05b78eda6777556f28655744e5585fc5c3e8cd91cf9957855d9f23bd79e6d1ff9a39336c0e2f46b134f7eb335036fe6c0cabf44bdddbf2ebd89763d6b73db3966c90d014c0ea52c8c61849deddae11dc564e5ae5c2c8468195df8a91408ce2620962cf119cb6e4d7a1c3cdf51c0043afbca8b8887bb93a7f67f339e3b66cb9e9d1d8db097cd5bb2d3017b27c4fbf07c9d253411c6a7bcc3b1cb4d8d1550a4f9667205238603f223a9bd487d12a53581720305267cbcdea615ae59ef9eaa91694cce9bae9871dee6bd6e14a9b6f78b6e919e1398a6ee61f7bedaf2c59dd1eceeeafea575b694f549a87c801f7ffbe8391894e0cfac5ec0b14281eb3e8aa53bc510b5bc04f4ce88ae6a238ee88c407a8463c218772b77daf0567a1acbd55c43f00c9798deaa2ac3b3fa3834d53630b888a434a06902d2a86adc78e25bdcf05ade1a10717a55c99c6ef831da97485d74b83d97b880352f7701ed29b941e923a7dbac4c83f6e575b54e50223b72f2b49750932acc39283dd70942f664341349dccec20065247c3d6b8933ed1cade5796c6611e9849568f4931b584ef469603fb285a600eecefc4a025a4750bd5b431c578dd6e3fbce7709a62672e1908a15437b040b5b2fc72e483acd789d5f46d8b32c2da6a621272e1a6e44aef2c5c5083c67e2da2c5cfa6dc0092c7eadb9751b00caddf8c0aecd54935c11b93562d325f326e5ecba22af230c76f6db8ea2a2835d63dc9ed02f7534085f6892c25b3430e98232db2a678e88641279d40755a0683eae9486f58636f96c51150d90e3b6047296e5df4b2078f2106a4da7511e30fcbf15d2ac3e067fa1f9a9992e7ea809023acf5684aaa545d04676e35a1f9f193146c941be2b1d67ec89c48d2ce7497bcabfa382209f8674a34e50d145c8a1525212f3cf161a6c17440da17fbadcc6082b681dc485c09427945b73b19d2c8bd8ef4e06ea160de2ef98752195ae7f69632a0c248e9c8cf5756e449e58c66d84ccae87cb76e663cddf6e07a2284025c6436e5d498a1c73d1f3851b7fef21b84b75558d368fdb6e718f33eba467733488c5fadded82570ceabd4d55625ba87bab58d1307444d06cb9ff01eef2181c56b23e5e4a0949d40ff5a1e142c122caf0d83ed07116fd16b17961aceeaf2b32f59d80e96ebb5b404d19059ae73dc09e6332f56ba3cbb20bbbd8a298aef85f4c70accd0d424b379c148847d301a0c7eaa857ebf77a83bf81ef68bb49237efeae05bfad9b3c60d6354ee1b3253447c4e85825af469c82b8af0bb4be0366e15609e8b32d768dd20162550dafca8c60d78284cd23c10e425534a4d541e27350cd2f2bf9fecfb8b3fc9e280da6e86ad299e6129ab17f698a9efc2ad4ceed6a13e49087ee1a79c86235bc791dc657eb613f8f8038165e453f2ab11244dd386ba69b8cd35b4ecfc98ab79431f62b21bd50ca640e976a733d91dc81bbd43efa2fd667181b4299ee01eea7148c4dab499af4598eb8c773358c2a2aa0ec668f67edbc678d8ae7106678a83839da4e0c33d1fa171bec205803bf9167bb853c36c1c383bc2d13d323f71e15cd1cfe2846d9bb54610d0079de9773d46df45bbbd5f94ecd19f5b5d701cef3e9a495528ace57d3205a65af7a19316a398d4e819ca0df245ffedb06d085cca4ded1e6c247b33690d858a91d5e2460112c9dfb1cc162ec88478c6bab1b61b9ed133ad1905d3efa5f14a318b08a86ff4c5eb0c12f752ca8e5bdec3d2d2afd7661e66e36c02dea6923c8aed1198549d5fcdc479110283dce3753720f95cc973dd9fd58cd1d3ab2e8682c76d19b596254d8d6e644317e5221dee3a38f13e32113e51bb13d336de84e6094b19aa3128cd1b3c50f8e5a6e5db35d76a3dbe4ebbb2d1461697266b6505384a63b94e011f988f66645369e1235c07b4fe20a9c3aff1af24da6d35b94c0cd176771874bfcd23816ccf7dce4086b0e7fd9d0150b93d45d4a36d71aae796548eefe980b52b342c3dffc54decff5ebe3da0eaa53eb06e9ed01379a9b5c32aa65ccaca45c4a6ff1e78a9c371ad9ba093567ddbcd360db05a1dd30433d39fcfa4ac545abf73b51bde9344111bc85922d9cbe9e6649e98ebce44dbe77ce3cf39d2ed8a5b657684d213d8809b0245bff498172cfdde80fd2fedee3386334c2c2715fe9f36f183607dba276219c26819c6ca8503534a304be9c61f7adf75aa948b57137aebb1f33cc5b9b0bf82bb37f55658901efcdfd978a9edd160ed2d5867cd0d0535d47b512d73bb0cc5d608daa7fe8bd6a3551d51da80f4732c52a6a70c12b9039f37de16eed0994c73322e9ac63f1b4da940b0ebafe693b63657b7416a9ab6bcbbab887d5d9909721c378816ad6c3ff8be2cc087963132876e3b25846f2feea03f480a53fc7861ede9c0b082fb5b8e7d62f25dbd14a0d208d4d109178d9e318516a954d1711ea1cf53ed5383132d851f8a7d24cb11f1acdbfd6f633138465f1bdfc0acc206db1983ac712f449d1cf7401e485405588cef09952c232e69b299d36b7bf3a229d35a07974136e50369d2627aa4f36d1a3b6e7ed76d54241e49268d42307003edbe42df8c851241f546edaaf1d7bda36b703f0017c8372ed706c51e1fe58631883a591a56e17f5ce6e5cc664505eb84c4218a4c392c6bec1b4b932670600404d3a6d124940a38838c8498a931e71aba802f060e3666799bf1b4cbc1d70beabdcd99d9533baf6b346495aa18df5aecdc5f5df11f9eeb6ac3670ff5c4aba6e32818df147612ac01862bf3713672ba0b1505db7ac011fa31220f4e52cd78c8d0647b08690a34931693662595ff7e07c2d57c5ce714c5050cf37d99a50c7a330c6d5e8e7a21928276dfdbb4897a8be54eddaec2efa70378321eca6b980026f75aff51807d586f4a0b57169011ee956497b6ec531c59aabd742d14bd5a5fa262ad6385c53bcee2e378b5e57f50cf8f9bf3c46a841e8aaba5951bfc3f4b6348c71b8f51ed726d573762afdcab6b1cdb122551c04e6b358b0f863526aeba47270bc93fae8feb690e33102cd22ee5c4d3febf256a1c98ffe4e9d64dbc241c39820b95fabc3dec579b31753b62bb25f5444a9108493e3c43e480fc73ec9034334fcfc8463b02ead764b0c6396b50e696ee70cbc521f5588dcc1c3d3a652c1b48b889261f1372986a265627bf91fd6b1c052a0491190a8afe72f06456de091d939e6c0753cc4cbba371491b8fbab7c7b8b3e24c373ef7808bbf57991290b1d5aa114b717d16ad5b9c27d7c0b8913d8c7b9308f0fcff9f8c253266e594b6cd0ebed90b4e4b43c942370169077e060cac6238249d08b2992f6a5cc5597d14e738a7f0eb2e05c843dc840acc5e65cb627159a4c30ded0e04079762e3d9bb6d318f2a069145b4c00be25522c7980ed958c247d1346d39aff183257e71f0c70c683843fceb7cc569cd73d67c01f700e90023c92c100df8966039a07e3245963cbaf6db69ebdbc0a4f27bdd20399fadfc9d27df149330aaa6c2c0f944198ec0d0c7389018fe9b86793384766ac9ef4ed4e748f760caf89e281677eb44b715569cad9d1a88659d8691b65b0e89816e22785f4ce8d68cbb7a488e94a809fb30b4f9213ee66b582392bac1309501cb4bb8b4b3b21fb5454f6395cb6080b03e3e9745a14cd027f5013b67faffda2920b4b89635de132c8f158d85a485e06ba6074e61aade875804a82e2d367b65aed2698cf35ce333e09cced3ef7dc286ffcea29a310bf1214c8bae9e48dbc9000e2261cbe05c35fa6a767fa18f33829746cc2755203df967852ed89314d1c4561ea2583139c8a07bd701f5a4859015bdae77d95599d1951f3b64aafb930090ea85f1a71d1d4646c826deadc0d6579469b90e99858fee2f0ad8760a5cee64b3f03ec0be506f5687b8cd0d352aeadca6d37b21bf34f6da9fa37a57885becab159e1a260eaf5726174c357137e90c2cba4c1fd1b301479b26b7744041b87c667ab23c49564ebf74a1953911dec4edc2601d625ee0a9009e4ebacd2784da31c965359b5492f7d786b949ab39373522d9e12a1608d4182278857dbf01a2ebc1fc879683befc94922c036cd063b81da1383947a139b6eab1b1802a39d3933c86fe11a514dfe5b827d5c741dff022ed48a609337b09606038a2bfb85e9460d3fd10961bc2d6568790b369a585b4553e56da4307b407b774425dbcf804e36c2949bc55d0d3c4bad10ef36612634fd53cf00884f26b5c235ce2ae9d1636851e80b05e1ff4e44d0821a3fbde458f5915df9dfa67f458363b382c287cfdb3bb7db41d4d1d2c657225c096c6cb1b0f5dcc7fcbb45f874389fd32b93b8c546c64be259d8338bd18b57f95f342616561a0dc7e48b2baf78a1c3686276abfe709edda15e2e5f071969112c008ca44d1f6c09b59c9abf37c9fe9e42c977eae2d6515abe6c30fcd5dca425679eaa38ea2b21d831966f07c0888cac21d2edbde440e8220b9bab5c32373d9d0b2ee9bc7df6e11930f1c4e8f235e783df794d5b432c61e933f649540efa6a2434330a554d776fdf2914a8abd23ced984f67823a5660451470705f6a6e14bdeae3c0f8f02530c2498d8346a4e749ba183ec0957778474fa971801b973509bc5a531afc9a398e352fd24844b9fb01a3ddda47e6bab40734b6e9064fa60d2a8e1acc5753af261a45d3518c44c11d2b4124bdc906154aa9465f1c05b412dc4d5b19ce18f20274a6c68e279e40543c26710f374fbebf9951dce977ab940e89f5aa2424a6a09fbcb4c02dcb9bad09838468a9110012c53fd8ab0045a7327e73bc152ba243ad5ffcec80f8e257da155e8f4689099e67dec0f09f15a5a2481c2c86c2c392975cb86ef59855a214a6fc6aa2da8658d75550a61fd0ef0768aa6ff2f0d4946e258bf8420ebf187b5a02c427f3e25d30b792a5b177cd788da07be47472ba9985b614426035fd98665e34f00f188bde1c745754a43d1e789f5214c4e26a4ba1511d3f205540adf9797dceb07b101bdb1f82dbb0689faffc5d70254c9cf252faac335bc361a35c01cca3758b9f8b29c7a510bab8c1b2a25d455f8071d48b422f716d34f94d89b1e1e73036ab4973a1154d9bb49499e499417d5f6099d2627920d803b8f0bdeee1ad0ad363c1d664969a2349f2e25e36f84e314123c85a8aa21b21ac212cdf551bf1fc927888132263c40931bd00aa36cb964ee05210c4f3d33e36ffdbd9b24df399361128ee0282a68bfff1ae0393f44e63ad0aecc301c344d9b154864a9d423e706f0988d971e43615b3d87b8f951abdfebad8f642694b5d00955427db3cd9e2c119e3cce342572cf76bbd5d77c558d9e9a364e307fc33d00bcb14fe9519b452317c0e63773444d7dbe66786d07f08912ac69363a79ac1c56704115c6a98f00125c8c647be0417e964b496af6aa8470c4430bb37f0ea8f42a8e41ff52f6642cb89585e4caefea41365ffca7e92880cb48c20ddab1aa793eac7b3cbde5999c1a68cf967c227b6cea4591e7b174ce795382afc0de85a80ec5224c5ec2eea81e8ef1a50da320f5e05dab8c2a0c485ba877b4ba789c95f8242889804dc50d2149405c2677b56ecd6494c7b2d7c373455bd965ba6f10d0935e5c72d4f941363e925e72d9e272b9c9ae1d4540d7e153ec20d112d6cede799b9928405158f4e39f1d091bc6367f3955609936cd63f98c8c02e9af4330cabd48bfa8a921f1635f3028d384740ee3cb08003f8542929f1807c75ffc426940cd0d9ecb91df78551200fb47203c168c9aedd656af9ec0ed61cd7da6a44018cd908acdd52d566c54ec8629616a66f3c8543cb7bed62318ff7184abe5344b46a3e8360dde7bf2ca2fd7fd3b1287f090ccf79a09681fc988772c315276db4366197de40850095c997b3bc28abeabf51731271b5cd95d09c5f99bffb668fb741f291f7af06c09f0ca0d95f5fbbd590cf271157b14ac1569ceb04ef737fe8e789cf1b88adac6bb188e8117cb88dd6820f36efc6ad50dc84d94c8c22ebc2e5a988a33cea97bc522bbbcb76235ecdee1932fec25d99c3e920000f2e24f4923ed1191d48c9f56240a355f5047e6a0f5a8b0121284869f151cf689e3927f11bc76e8ca606dde2b745da5c5359bd2604af8b400eed9656c7cd6b51dd44bfadc0a672eb98563dc1898ce78b8111eacac79aa042fee7387f0f089faa204c9f70ad6e1f036939e318a47cc74a6d26d037e155549646770938a0335e6fb31c4a78518012f3303da9edd8dc8ba832c0b042b21338b011198147bdb3a63a923c259ed81e78658ed3d5d534acf7d42166efcae95df8c0c88c615a5b0e10c9022ef21eff2a2825590cf59b8b16c646b4a2a24ffdfdff3f2cde2d3c0512139897a0b8d3303dfae2bce713e05cbe3d060c92352cf5ffe0765c46786d8a0c1fd84fe6735927d67e5c6ad756a08f2b4894555d3942ee97413f6b47c802511c94a0382f24a3fe07a7521d7ba3c1356747c54f69adeaf47e7ad27ca9d2c2a303b749360526078deec13651a60518d7bf094b4762a3867b52d7c2495d4a4331827c5daf4140fcede18bdcbe9039542b9a8e278e5f32ae063ef2eb68b80e943fc05f65b20ea44887aa4f27eda944f3bbb93868a15b05556f70ccaf183aff8c3a169a0dac9f04bcb0112ff5626b288ef013623af1ef35ce508db7eac3a064843e2fa09bf5813e013f62229272d9c67b15e08c9bbdcd0a919a42ca30ace3863f82bc8e04f3974e3588f0a0137efb4703c7a2e99496c91a847cb2d8f614513b1acffe3c2f05fea83a1367031a49390c271507d98eeb3757953f10d6c340712a13b7353abd5be8de3260c427eabe495b46bb1d16c12d78b451f807a3d4b608ac3d3b04c9ec4d05396286157db42cf2e793dc0b6fef3c393a9aa53e9afc200638eb674c52e9011bc86733de3c401e688a5e5755c395aa7f3e8093db3757a7a5cd0499251b7ee838c133bdbb64310e0e5c0341ade62b776bcdabf80fe3c77c8e914ec6d5160332b9e784c285447b8167c3dabd0d8c63b67bec2b1567988a4c5987a2381704d3792b9d4d448d03f4008e77c9c0b52ad7175ad88e06ce4f4e1b20abe6cdb738c7244835eea128621e9d627c23612eed781df55ff4e626db56eb27c7b269c589fdd54789ac98f983c45c835336a8076ff2ca8e02d014cd950954de0e8d279c2bbb5d7faa33f7f4592a0c71e4c0bc6b00bdc1828cdcc347fe9f0f1838a303eba19a7646edb0ad30792dee1b765f7a684ffe5391c6bc795129ac46c4ba47846bceb319b648b13348a6804c9dd3174b972d34f5b37e67ae23db1a4737869680517da579bd9563e7b694aa254454f7deb5ab8d7900233adfd0cd6201f032d987f991bc18980824237c76471fddb5635fa927c1230aa9d74c0275f356b82140ace91859110206b5e2aac5dc761b8043afa4c0dbf57a2f98578dc6609b7a40fc89f1b2d17dcfebafccc3a8ef3c49a5e2dd34d4e39625b712664fa65e6483816dfb5be73551e60305dc7b160358bfdf95fc1f3c1227606e8ee3a7c5f65c5c3ee03655d99300b10071c793e7cbec0b5c32ad48cbbecf9691f9ba302e784bcaeffb319732da75d005703759fa81e9223eb306efd15ed17c61373ba1e8cba1bfaecb2cda2f917d0f4f9e90297938ad1f2d274c7b6a80b3ec93f79926c7419b788045c95953f0ca63fca839a2de2a9766b29e56cfdf4e3a294ba6cad7d2e57c8f7ba5c1529645f248e4cef6dc437fc19528ac9bc7fc56bbad061da859307cf6b07bb1307ee61e613c5167ddcf71c7079584c406a3cbaccc1d181ec062a6ea31f9349feb9f69cea3fed85a5fe51f079f81d5cd1feb8fa2336ccad6412522bc4481a00548cf5f1e4fb2f95611ecd4ad41cc046f4548888485c19ba2ffcdb7cefb0d81f2f76ab1ae79ce3e7233a26821610fbd5491b21ec8dbb8b0a500d525abb016fff6581a6c10af9a7587f86ff327920dadf33560436b69dd3a66e03c36e534c1b55884a50df0ef2929f20e7d2fc7341f82b68df338eeb92f3c63f8d5c91df85815f49834c3a05e66ce12079b4d95a86509015dff8cba6ecc4c90bd0d5c67504042ffe712725933bfd39df0ae5bbc4ac9ea73458facfdd448cc719e5a9151205ac91bd6e54d3d1d966937f9c345b508f4fc3a79ba39ab1f39d326d5822b74d29a2631d687cdf4baf945ce5e7345c4fb301fbdfd2da58199a123844ab316f76f336467f601cddee2db6f080d43b3bfbbc957bd77707e1b49a8bd208d11d15364c7bff5ced730f09c9cbc18e0336a51af6ce7753db685a069d07c1f2b3fa96310069040bb6c39f947a43987746492869ce835c8aa0bc08d00bc7d36caef401e63f9beff5fbdbec2240a579d9244766a6565e2a7d3f3576389640416c136b59911c97e6750dfbcdb39a4f086157ef32edc52c178d84c075a4af25f54ca6da462411a42ff1d2fbe2a50e446e034e0248d6f5c1d8180d9eb7eb0e770b722098ec107a347a2d42d44bb6a5032559ac2379f5e4653b37ce45eaa92ea9e9ddae5a654a15de9b5dec6361b76b7b2cd2c78c917333d6e5f68f9ea1f3ced8a7316f96baef88e2c3af7292493ff300833c298f45e2aad66ce56c847ea3710fbc07f9a65becdb4767de08be8010d25ef09d13e7e1eab2511802549f50c9df97196ad4c95f4ffa80678cf979b26720f175b2f5dda223d908fcaa8c892c82a2623638fde81c3a34a63503229d7babfad1f578f73cdd2a52d545852946b0a58a7aa8ad6535dd0dbf3df43f75a0ef330216e317740f63227278e3db9907f04129894dde7091bdef3194d91a784dfb00dd180d0c7935cec834fce1711b46c5d4586b2ee977cbfed008a554bac3bcfe3fb4d9d7034bc69ab9b6a3285042267a8eb0d590d746a853e92493b67186a43872b4677301de423bd0ba6b71a8762f0baf1209e9999ebdf5f748b162a100f7dcde8e5ee45e5e989045261ba1817252793c20979d58b41c8baf9c1ac72c09d1f0bcf772ef16aaf26fe284e3e083c73fe6e5c136cf5ab0cc26682edb9fa089b8452a290f3a46d45e208d83911be5580e75e4a1a896193015ee916ca84632fe2a2e9661ff3130a23dfa8a744dc028dc312910aeab6ab2c2982c6aab291157fb7bc5bf5f2e8e331086920acdebec1f60c13d2c9c01a0cf6d3fe123a4d0ffd0a303e5c8e9717a02ccd71beeaacd6159c20dafa36283354a29f10d0cf1413fb4329d20284867c022b95de7584751e1fa3788f08bbb455e3c62205431944d3e1775756475c85f7f326d802f3687d2dccfc5f808c9a6cd7bf87924a8bd71775ad54c290e263d5d45aeb26896ca703b9133ca048f9be7547a5c43642580d00f650a2f349b4e791e9bfd08520265ad24f55e730540b6841ec14588504d1cdcdb82b3a6ae4669d73b555b22adc16e0b861a8d462e2b3648db287e852e3bf3264e2830d05c30f2b3533cc76512216efcf6e55a9903ab7d431eaa566ab29622224f3434dd0ce762ef46de8e6c04dd09177f3dc11821a7ff47e1b548dd694fe4a8956b1a944570b870859a23868219bf95f6100b4350d87d6d196a6376f66a31758fd66cce4427389f6a3be4366bc9c6d6f6dd32edee081a8e5b14fe411870c9a8d9c3e6f94d0d99e9a9ae38b2aeaf9ada5a9125bea58bdfcb90b4253f8838a74549712a954865103fcbaede655164a5c94fe882b26e621706bb717fe5a2337bb5839de2baaeb40197b76f8e6e3e07ec6cf5b29599ebcfce66c932e69be263fa4427840e91cb833b6955a02e1fea8aebb18e9a68950c4d75d77ccddd3e2aa1b0a28306c5d74977bb323553a77ec4c0762a424d0e9e061d5c885c7d129edfe98b63e202d25d129dedf54da003c77b911d8e6a316e019af92e6bba947f01d6cc857f5f1c2f8a7a063cb5c911fae70e0b8937770229dda89132b8c799849e0836a7d251757fd7c2098dfbe12d2403b02e43a35cf972a51dd4326ab94124232528229d431e6452e5c4ff56ccaf25ef76a894f4946213a1214190c0fcfbe430e62c64037b3bb51cb4bbcfd7b641c4b8e3da7d70b0c3136ca3bbc8be7bff4eda3d86d38d12236aeb47abc991d4c9781b31e8530176f20a772d952da9f10bd029506a60a7a1f54089beec241f7a9c530b77a335b593bf5a850cce358f4f51e1993dd43220757304524901e61e4a25252f9d935f3fdf16292dc6c300bd302fa89dbdb384ae5710a5ba8b2128ae71d9bc611d72617426b7575cdfc72a475fbeee1789852768ea8738c549eaccf5f484b83096cf5ad08fe33fd0f2580a8368563de2949e4b4a8d74598d66801a9c0b45ce5f2dc8afef8ab0819d17f8c98e418112491cb4deb4d7aa4ec032c6c1508dc1b364c2f1191451cec8ac97d497c5fb0eb38c7b6a3eeba05bd8200b7c9f426e77c5eaf0ed94a5f5f20237f6c7514d893bd062daf40a97983e7f0147664ca84b26594fe34969ac0646264f465ca98d91184e72a60f9d446f47c8ce76d2393a08b33626f5958358bd6f5056d1d6b8af55adc8d9dddf01e18ea7bd84f215a9b578110bb725df587abe2db9850d816722a57e12a729816643631ed434b8df455b2007c97a5af4d4096b8fad67e4a9c81ae270cb61c84c8ca332da51869a778c71fdd8d3a07121329ec03b8b5c4919d60f16365b814823361c866b0231bf446ec06536808a244a25f8c9627d1720f0833a16ba0ef112437e2e228d31846d35d815f3f2ef4fba8e7c7a9f3c8f21732e311bb83ed494c575ab3e8fc29ce02ce2d7c27f618d3b8ae429a8f7378254fa59e5f6151a16be5d9e6b13320f4a3c33861d1a3362734a4e4cb6ae473ab860f1fea050e34880b632f2505bf447f8a0232782f89d75dfb1459045d973936c493e054477d146113bc0660e247dc12baa1c860a39e766635627b4a51b108768e7e71332f803dfb2fc401e3763f95cb00c17b4983d085fec53e480608b308d5a64dc7cea2795e6bb1f19dd33707435c80b94631f6a1973dd773ad668e3c9acf9c2076b3e9a2a1328bb10d2b888c06f24029c51b3a9aeff6bc416acc800a2912853ba4cadae995f075d5e3b454aefee33dd0c6048e7436324f2c7eda766d03f5e3f5fb4b4019cb0a28781b21d3b5aef499f383b4196b9e9fdeb00991fbace86b40183298ef693ab172ced28c1423bca9cdcd3a43929e1faac4dabca8f4619961eea29a4ea3461f1b93682df0f2cd563233f34be9c9b19def2eb89a39a785f55749d76acb827452f5c01dae23a292c06e606dfeba9e9fba4824cab2e796244623191a058e77ed7b7bfdd60d6194d4eaa6d81672c8493170fb32bacb31a3cafd500933aa365ab0a96cd8f4018b4102cf29a969dfcc81fbf789df5c91e62deab327141c9d35266404ce8d01a88a1cf005554400c23f596e4267a4ec568e047db20768fa9f3712a6eb199cd937a66484b40290bc8fc8e050682028c94289e1974d4af46478977b7519e1ca5aca31522562f3e9a8d25a7fe2912623ae6b8e119d345ca80a313b68eb55cc6eeed01526350fb93223095c114ec4dc797739b62b49b9aa82e2b000378c50a2031621442f8f5e502ec578ca263998ef5152304067568627b92dd146b007364946960e52430c82010d690eacb055dbb51dafab513900b8952c5c28872f4e9a4f28826b40041d6d21ad3a8c7b09d7c7dc342e39bcd5b5f203632b2442ae81472abf3434752c215df3b675e6ac6d1a40f6d5b39c777cfa6635319690659b231049901d431bb2f4bed992b5ff6a2c845faab6731be290b7e96550df15f54ef75fb577f88956c698277e14f966b4bb0ff4e0d5e094435d15aa1947656cdea7dc395b22f842b733317de0613cbd0ab3a1f35e0690b058a089d8d5d10af5aedff6c366444059e18b64dc4764d8fa3f51c2ad9d96860d040382f433b6a70947c5d0a7287e7df7c45fe7a375fe67de7498e7b11ce6db2496411b729d06916bc39415d1055b6c8562e7abd62ca5dc96ea5cef049d83f9f3c20e4558f83c2197be29a45b6763f6fc19d8045d1d9421a367f9ca58870d8fafbbb28f9f6ff83368eaa1dc629148a685adcc62d818fbcbdede9bec09dd0e7e17627f73ab0418a0223dcbf1862ee8ce90a8feae3483804240a537d50d0bd4f9ced6d8ed25abf0cd4e1e43cd3d54fb55118e3ec2051b9e8aef52a27379a43a64f7014d094370810f8ddfa941bb9556385cb06af71a5b849d03ddb8b27452cb7819145c404690ef238e6f188ec1d1a6c18b93c7b4f1dd79d78d57080b17a0c006bf6ae13748535e0b4efae216a28939948f4ce7ec81ff86dd5c6495e5e19873519af208bb31c28600495e42a46c98f25c8b6c646b803e2d85feee682dde006bb6180519e531369c8b0e368b134b0164258479448900e580f3b99bbcf40c78b2ea489a6e374f58fc5faf1818a706890943329c25db0532dd7e2207628490952db5cf07f9428a321d5f0f6fbcc4fd191b448de65404ff6b50a2adec5f7c2470947877b570f61f800cdd5deb851e864d0ae44c63f11f38f6a16890d14a9f2430aa6d048f15672528553d795ae3ac4fec5836de462d479bd877cbc7efe30110d7a649a05fa8e22155f641483f66aa614cea84c96ccf3b114f252b329a480d8b091a0cc55b1834a9194d0f3eda5065f93128529858bb88204adc2cd02fd1220c151ac7852aa2306ef0bb9ca47a4fbafd172f8535cf4d4a461c1896ba887638940c18f4b4a3fff74fd4818d3939978414babcf3e0eeadbeaa18678cac390763cc87783d02d11cd0a0a403872675c6fa61569516ab26ec61908e0f73437394eb4f89a778351cee86f216139cf3cfc197141a0b61e46896f5142257d807329759b87a78db36f87cef15b498eb911a26f579970aaf6d90b18053d1c19dc8e9179b87c569d35140da18317da7fdf8c06b1677120ce39f6ece5832ca0eceef6ae69ea6fafb1e6db2aa74e41d0a854232ae34c7839370740b65d110f50ad46d8915c35dae087fe3119cbd210587868f8504ba3bc9fed4fa901ed8d29e523169545eadecbc7123275291997d683b3cc7101f55c588f6da1b51d65af40a0af43e5d0b19a9928f9a5ae83456ac0fef10bbae92f3674c928c09db878c99092bfc779bbd1c6527a17b144c82533b5ce1d50ab1d0d3a95dd02125ce14026c6655c5b3de870b812cff96e538b3251aa7af678dc13e6566668d4d8ebc4b9ee77ac9d768c9c38187fd3632295ea0c8d14759182ca25d5027055ea3c454d42a3e7b2319ffe7dd44e0518cb6704f2f398563cd53b581c39f06fad8527e02e1f24073eda069b297601a9d6dd37a21e4e214f3dfd4c1e7f35d2423f59edc700f94907a5ec7992c8549e7530f5b90912286d68261a8e45f23131927d11c989b25c0ef137d29dd8af26f9e46da8e6bb74ae8ecb038fade5eb574fb83fc725881237440bf48a7f36a9aaf7cc253bfa4c18b223992f9326226f161d8cb08cb97c1e60e00e1d2472b0fd214ea64e2ab7dda52ba649dbb2877f48a33d079ae66f33870ed26b70463d59bacf4b3e26a3788a88b34c97b94c092b7c731bf8684c24c8275d6b204eab9becf17eb7258c0815ba4e087b931a15742e34c30c32b8ac2cf12fcd59e5609f09cbeefcbb6ee3719076708bc2c99d9357ca811088edeee6b32068c32eb00585e3306298e48bd0289f3944c4729278a49070b29f684a824fe486450778cef051d4c29ea92962302bf8d6eedcb9f630f51f19cef64226b62fe23e7b45681b550f94c9d5070de075ad776e462155c8978b50eb1161c9b84d439630558c0f12205af6b61f90c6ab33951190f385d1cebe3e2e75df6e40a8783b487170d223beb3e548ced1a480baf7fd93fb96205c2ca2394ceba57103886d3d092d546d59cde5f6010a44aaa4e2c6b439a65daa225c3e7cdb2ac00119f38e60ee62059b4b43f1e6be98b38937bb76bd0cf03702446cd65a11781f79d7b4ac321bfeeefbf49176a2928b5f2f465adcce1833dca9505540fbdd32e07899b1ee339c155f12b8189c2da48f560e62c446d26d16d8475b9127dbf2fb926182813b58115d69c8f74bdf1c1dcdad9a2d1f0467f24e37259954584919041adc52ef7889281036e83f072d18684502ccf8f8c06106b8b1b2920950e9d87f77534dcdd823e8e2a3a3fdcb6560bf4a37a26d376945f5ede5ffe3f281336e79cf762ad28076c9c0aa0dc8ee88440beb5d9d4c7fd2cf38d4e0428d14f9f2107b2cb71d704047a3641c9f38f55fab106892413927e06c8bb11557d3c642c58acb4bcfe9d7b350641337b453a6a98eef166698960701c0cacbf53ab094d7a11d37d337059a27bc9d03fe0c818f727af1401db073b9df22aaad898ed3478a4dba9ed7b0ce97ccabdd3b724b14007f12a8dfa1188816de1b3580c9193344dfe486c788bcd13650b4d9f1957b65bd688b5b4e8d67400c7deb2122f5452b959057b5242c221b08b95e69b49b8679f1582fc94a14b5da132204f4e6d7a12f4eede9a9954d6e9d557ca550eac1bd3a1615db31dff12093e1c38dee27b75f0b2135b17152326ea5471d7cda6f225441df6b80b80fa749e01ce8e0d610a6d3b14b8b1b898027b65e944a45435d2de32b64eda5106586d4bf33040c87521cfa9e3f9e67f2293b1d68eb5b5af33f9de6870d40e37cae0bec129bc35350a5f8f0c7a4ab299c904b3e788f44888950723e4a0652681d95f1bc0a0eeead2d458b791b9a1ac717181ef811d08c8fb56fe9afd7331d758eda4ff7a49ea844c6d1df79925580fe9f3f5cef4855a8a3e2f372609df6b1e0d65cce5038a994f63f3c417cd085855e6f66ea08966f0beeb191645e3935c393a639a20311fddfd7e1acdd2f5417cdc9665409f1bbddb50c45e980183374fc0be5aa9b4b1dccb1ac868a83e4373faff803c11896bbba858d588276e443fc00d98f7604e9a9338070df0dac1382ed55f6a7529eadd88589762e4127792f511125e90b70a42e70c2d3850a6bd305098aa32dd0692cae76b4c0489ee0732c7bfa26f6a7e7c32a0e24b6ded76665d3164b32d07e4ccd528fccd8f32aacd3dce420ab4d1b0e9511aad5b0cc83aeaa382f1dab61e6de918d1e261da12c877cd6cf2e95360bf0e94611d88c32b91fa75162d36ad1753d3a1aa4c46611599fb7bba12c5a16c836962bd626c94504110829ee7e9e02c279cffd48c5794ffda9b0e38b8f842f135df539a97718b15e209b68e815cbf258bb1ceb5d8b957a190af6924f1930b06d56613209dce2862d59d1993d56483063b02fb79103e9603bc1ffc3203a9010cbd2be571cf3c0031b6040f62764c2a08dfbdcddd1761aea2116a27fe90369c1c0e9f0bbc481012176f623c87fa5b797f5c13a1607d2c15173739bc56fa4962a8d815f9c413727f701f2d85a8765fc3c115924f71ffceb3110400a0520ca83f98f3779ceef1c6af05eb9617b14df3843ce59baab1bd0975dcd59f4247e4db2bf0de9303cfbaf33cb7770e488396566ee600bddb706953c8b9e6ac11c7ff73ae1583c787013eca26c9c432b15d084576a7d2db6cc1b5a40cf7b87bc1c4d4343d3b9b3cb33759e098334ab251587232e71f5a62fad7a7182e68b67964638888baab0e4a538db306ff8331563a156d3e241f48278222760d1505d09e4f5d50ee4f9696707d827bc0f35bb1c9c467bcbbfe652f4840042fe723b38cb9c989032b30081f3f8ddd99ad6318d5b29e65a3ae5cbbecb893aae2e9e3bd3d29c172ad7732969e8ff659ee3e85a45ec8926f5edc8a5acea8407948901d9f41f23cff22730d81831abc7912c1b4277e7df73c1a2aea751c2b31674913de8cbcc5617b7cc0d89cf0b0b9301b87a2122816f901ca3340a1ddb19d4bc8e65b508cebc5ca57ebe3e11c0369dc1b3c32d22ef24b5a7c3cae16bb6fdbc13fa82fe00fcc3c8ae2d0e4131b6c51c6684eab889ec0d423b33324571196bc4c47111be684d397a24b55b2b06b554d6f42d94240c81dcfe4e0705c48cf5b1c7099383c569f3d34d9374154ba1430459dfcb9da4e4ae66ebf9e72e2d89afe3121cb4bc272476a9362000424e234efc4a58b292d1e2cc25a0ebc06ca57d7c59f541689573e107b826e781fd410836e3c55543380b879db93e01e7d40d4be82c664aeb5bbe84045f871e54f3e0846768c3d2b903ab58a762f257b44dbaef5ebcb8280e4d7e01fae24101d2e431cf66bb99212e9f06e0ed8800ff3613782bbf2c61a2022135e3a5eb57c15b28766c09118861de6b42eeed3469ab3035e42d92e4c840707fea2f0b040c05102768de3823536956f9f31cab94170f50171249810f33f99085762f231d9ab0cbe0c9492daff1b86a9094afaf7ba2b53ef181e2071bb13cb0419ce1b20c80fe966343f087f648441aaac3401bde9c88d84d671c2d3b27624b3af42c7e085628c5579197163df928537659e53f58765da48d3ff145e8609c3ee8a610692e3722b2750338524c3aa1465749afd8a7eb2e6f62b8bb5d5c35eedd37f76216fdb92a380a4b8cdcf2c7c5706354ba972c07e4bd56e664e815bcce95099de63ad97831ad79995c597edef0b8e48b2ca56fb1c6a344cbb2ce58916fb3b1efc02a8b2a5676b70e9f014747d417dba3d4ab99d10b6eda2c71baac2ad74078e09a1ebf4a0206cd77c737267594007815503bf9fd0e7f1ebb6ec55b3b41751bc5f64c84525f675a5de035f7b07a62a311e39a80bc23a6e6868853f42877164bf2843bd0802b500f6247a71c56107977436ca344531e3b5ec83dedcc8f124c2c26819bfa322f1031f126a1f91eb5c8c1621eda0129f64686f5856578d7dbd1d6c2629b3ecdd49b1a3d07f6798102968596e9d093b5230db228e37254d7b62ad7d869d73d33a55db78d1052881b8ede7aa7bec47d029c5b08d7ea28ff8acf71b001d3f97ad0aa700bdfd8e6962fdd598902168d65bb8b2105d7be6cddd6f8ab530abcaade30fd63abcfd6ae1a319b51518b643395ce33eff9b63094945c6f07ac6d03a73429f7ad41dfd3790d616530a63e68f47c9d892b866389dc8f5f724c159facb4ae8fd9830afdf7046b7abd7e0ea576002bbd7cfe251e2f4b7eb964dddf2493b25e84dce05766485ab66ef5a54315370bd9460429a1c3a3d7d4de6709d0827630be49f12510d5b39472322639b3c6729e60b855469962957348f3a220a0f4a8d329adb6e12cfe05efaa9983b403b4e42ebd64e73b0222fba254eea7ad7bf8ea4b5fff61fe3a605cb56a449f9b884d3325937420f0a37778dbb9cfa87382a93dc3059d9ec9db61f649429b6c9fccfb7d68a976d8b998ae80cff9e36e5549eab5822207a60845c07aefcadb17fd0f72287b6780085dd0bdf41edc1846155b5f9afda48b1291c24d0c7418350297c3d0cde55dde4fd38f6e35a4ec614ef2b1395693d97d2ead2f00c8294bf474610f98857fbd542e91ecd2e3b9f82ce5833fd10a20f6fec1e87d4f86d204c1dd9c4e6ae41ddcef1573540cca6295e618d8680fcae29456a1c134e4f945e8e9a5ff8d9e625ab564b6ff0562a632988e58c684a9c3572ddb7d1deb9585a21fc1f66110a312666501243794a7d2339d5cd19b612bef63a36abb54d1b963cad808fdb5cd2fd157b02dbcb868f301cb83742cc3bfd1fc96ba724c1827c1f8c7c36f7d17ef4859fc7b7be9a33ca58ec7eeaa9ecdd33497579989d676c4276b75951dcc855411e6f25047293aa1bc1264c4597c4fc5c23f854e96a1cb90b2da6c884f796b106d4cccdde8f4f2797f44f8b144c356320a507a4789137009fed0d7d804456fe873b6f5757370647e705182a38d4cdeaad4e95fd9a4ba9ec15cc52d47bb2b2ad8b36a738d06011eb99531fb4eb998843311e074bc552815dd05ce52993b9e468e4349d340ae2c540b0fad9ea8c367f9c48ee23f8c9b1ea89893d8d01976363deca4e849ccd36507a7fc0ded6e448f09cb8676a44a01d22bbed10317136f7b5b8a777ca0133ea42196b5b8319ea3c0eca8f78579da2542c831dcf4c3583b860131fbef741ba2ede0324e24c7fb5d317d2fcf8f8f83d4ea0f688d4101bd0c9a0b6162de508ec32fc7ab6eed258d59574d2ae5c20b72ad4ff5eb3c4adf9b4e012dccf452473b250e328579fd091e4a2b24d5c58d9c365e240ad8cd1c7251d2c199d9017b1c934985af1802009ebd25a344604c6d53456a1349610d3b29bd0bfabc22a3b3752d83851e0f93a0aa3fa95609710d04df768365094c615e7dc75df9e1f64e9d334255e7ace9c44a3cb9ec7fc99f91c47786720ba272c69298d77665a6d73a1fe331645bce7ba4660f0708cab0f85fb810938fccaf401f430e5abdfec3fd8d8425fcf5375a6d694b5849c79f2f7cd82d45a4ca9be839d2101240ccd540d2631d0bca024618b87c6229606feced9fde560b1e4455e471b890dd81ff035d749e0d9f63d5ef262ecf34cf759280b6cb53226b50756649135c471e931039a53789334eb73b73cff27f5cf773f48ca5dc61da57e9e8225add867e56f6c2af69204b50665747f98efbd2945c887fe500a29551527c83c7f59f20ce14a8a05b796a29dca5fa9db555967762ffa848fe8462c9a8a8035c6ebec05d72c7b1c66169059a30b8fa596f3fe11e0ea80aa4d49d56dff7ff5924753bb93dc9b999c12ee11226f284d47a15535162eb8ba94936f7284c6353bf21187e9759917bed79bb5b681ce46cace540292dfa2575c489180c7b7168bb58b543047d02c48abe30d38e131490e9c7f5c5b310448fb95e91f1e062c86a1fac74de5320b0249a218c6c31cf3e6b880e9db7c26b1926a2bfbe45e1e7dbcb6a29d20d0f49bfdf37b0b3672a918b63e591147e4d00f652a2f105dbec861318fe9d5537105780d2e8077d4349ff98fe1b021de3f8686e12e3436544fdaf4d12dcbd64c072ba95560648a89b8af377742136cf35cd8ff68733ca69b770474aa881a29bce4b79a2aacd982c8292fc3d709da8fce79132f8b265dbc35df327e5196f47b58a3cad4852199f940577dc676022f61f47ce6839407b93eb94349c20dd270c04a8f50478072e0c6b762d0b0c811962dd32011693b1cb4fd5cd11e5ff08d6367a323a3f0c17de0fb73ded32dd09525213f33b79f7557a34b6fea4b93151cd6c42e5edb4bb4207dd8856a3b1fc29e6d07a8feea1c8cb27a8d8d8b0be8adce03ce88b41cc5582183096bc211b9dbb130ad84a5ef07e07c8d7803439135080de9410301e86513edec4e6610eb574d9b9d3ba23f19e9f18eb2fe164b2c7512a8949c21586f2abdd4cdb907db5faffbf6720cf7c3338032794e41e66165fd5831b933ec8c0b716c162ba8545cb1994a44c8dbd4e3f1d6c62ef6d66175b545017b38f69b9cd8f7605842a6e65d975416ce3d69b85f6006dded40510f33892f28203bcc235c7c5b1a7e3f896c48c24866ce85eed6b54699f940b2bd4f6edfb0082587eedae95becee3a675ed6c5871d09f02ab3345f4342a07ad2210aeace2ffd63c9fc99e916d62e970f60ba5ea5bd1f78ce70e7acd10983ddf711a90b391ad6013c91b8578dc4e3fee55568fc1139fb71761eef70f00fe155865a7249dc3cce38e0dc6c167aad170c86e26e0c482a7ff8c0a51a6fdde7124c28a3da0552abf533c5f904d6688e2dd23a3087d2ac172f55ef9951398d3d09a2836baea46eaefa34217819364bbe1c86a590817149e3531c9e75cbbfbe1d5f204fee541b81c0e6c1271c5ec7f9d96fbb1790c12441e345bfab476884c598054663f19ea124c17e9fe0e2a81c51c7e9d74f0434b00f5f322eee065742965caf2ef96f09eb9fc3125a171238ea63a6915be2fa290b9103ffada136f66b77fafd8186811b6641f585075836656ce8b6b101aab6bdb560cf63d5a9539b475f882e02c5bfe25819ed1935910113c10ba1908cc5ed29f13bcb2b6dcd6ffe5387296cf0bdbfbe2e4d77eea744862c7b20418e2e044a2c3b8a63a9b90e84fa0da6630d0889604444719f3c7933f039c72bbf882a6dffd0d9886c17e99005cd5679fd2c39900ce6150295f98376cdf9e36c46a6ef6b42a221acbfbd45df8da9fd8bdd0273bd0dca1bebf4b636d2e8dce941ab8ce89cc6d57df1501f6b8d07869a7b436860a81a9df150a241bff424690f549947d3e34f8ff6bbdfecb1329d73eef4affac1ed2d4e587289063ba4e707359f33ae8cd7de3f0184dba94c1c81d73139c9a2592476c294aaf9fd8565ab5ad834fdee8f73c3e5d8903e46081191bf55499c4a689a53ef95827c420fd52acd191a565ef8c8b28563753393bb0aaf4f72386ab7a3d7a4093bc8e9b538f851182d7d37b1314860082c06277218bab67d16e786613b29200d2c0d28a7f9a298f232bcbede902cf9edc7c8c1d39db75992fa9ddbb4759832c64345a285848d415cfae1259379e0ba39291deffe989007808c9f437f2ca2325c0b07e7657bf04c50687432adaa363d049229ca9c8e56baae4005093ec200ca345200aeedb1e9963efde8aeb85cf047a687bbd8f7ad4771168915969a1471f6b3f34bf580dac566810102ae329259fff2d106a13fec80cd839a6ca3eaec1fe12b740d27b92d36392dcc1f7011dadea59aeef83540019b413aed434d84ff290d54c006c92615bce11855bdd2169f71cb702e419d42a371bf5d27c7ae092ff807785162898357f0540d9305794cf4c752741c7f5e6926b9588c3ff53df82c2bf3b40c3976372b95de83469f80061edb4590dba10f8b4de98066278cc7fd108fee7461ebf9081a98f20bfbde693c21d9f67d4cf199ba52e3db4db65c326b0a035d9295e983bf2df35b17bd2597c7a0d7fb20575f26e6251c35398816dd9d5441f28da218e8ae557520ef11b21bbddd1a1cfda4b33d06c3a0c2577ccd073eb83bbddb3700209920cc7df64f91e4179cad684807ca65b18951f767bb94a2fd82bcd37ea28c9d1e768df19f1e9c55d10c5f3d4b27dc94037e8a4c34a3e0879a8965afd87e0ab899f46c4a5f388a27d8a20521c1e2b4f640ea36b691e7c9018097430e375d1e5293ed1079a9a4cd0386aff503d17979f52bbe6e5e20aa638a6904f5c003945a89ad7e81c038fd783b1a753cddc7c655402765aa99bbec3ac515121b1525b19971d9a8fdb3b000d7e42082fafaed3a5bb6658fcf14f1af26cf86cab4853b0614d886c8401d691fc9d7d4d4c5fd2ef1258d295ab1afd44cd4b8ca544fa9ae7e1d54e296cad12ee294d7ad5364a3fbd5661294c1c28621dc2f1c923f5e8961f14305e40d2e3eafea90f7486cf6141f97041e458003f102b1f5a3fee77f44c6ab6d3c6c9d80ca80f0ef9b81f2f9905efa717e2db732b0b71df55a2cac845307665263753a7740c591b34e8490f6c36897a340b5227d9f9c35307778363c705cd9e0646f286cb0bbadb7f8000f557a84ae3a1c37154dce685016506cc3ea8d85aa1438d6521a5139faaaabe2e505a1600dc962d3346e990e947bda43cdaddfe2e0723944e88fae3597f1ccc99a57bee3c7a043cae1f5b4b1f9f2e48216c9b2da99fdd89ce80a6f76bdc4e3d72a1432ef52c0d95b898b06e0d8f2a6f1459de9d84051fd00f0fea7c85794ee026a23f4fc69b86446d9a095976cdfb56a0a4e54073a889558664e9dd3af43ddb52e48043c1687c3e0801aefead4d3c8260f7b3043b8630c0f0222cd9b291d11ae1f91b82c79dacb1bf4b880a416e5c8f5d2c9028879b1c68645d1f2acf61d410bf9faa23cdde092a85aea68e2fdb1f5f9d1487a1df28ca21eedf91c191e2a3c2b856ca0e92923983d8ccb8449d2d1c8b2145e68e7844aad8910d388ec098af27585d9b34a41319ab1660975e19cc3f2cce50c0becbd5a2f9b2132bd509f100d8e1c943ddbca33534ee2ebbe6df1049f1f2c46e422e0489ad2f49661a2b23ad0ac98c6b04cb4b50b8e306c3b0b6454b85709c0a13d455ade3b84e4999dcbe65e43415c0c53c0be20a10dcf1d947972f46b4a2f2c5f3384e2c31ed194d8300e915712a73d959b9953b82ceabd91bbc2f4b046d4b51fc7420631cbe7e89eb098fca634eba20c1c3c868ef97fc2195ad5cbbd5257ce00e0ecd296a6104238ea1c1e662a64d425b850c629acf10508f7b18742763aeb82e79713225639a2722297c9602f9e9565449a91a9d85bbec83f59cff1aa6532dd99b1c5ad1fa15277d12d22bb7c8d1a5ee2d1aecfdf1f3bc569e73db45ef9ca4f7f55393827dae0b0438684d64f4487140038ca83a5752a22b22fd0e750801ac5d8190a0f6b280822e24f874339018d32ef2647d33c3950be84fed11ddc1bd1c4546bd9e3b3d0bf4de81d0bd4bda0ea93730b6a59f0c1ff5416acc02f06550507a60bd5fade9b40c91a5520345487b91dc44ceec754677797e7e742d5414fb642a35e494531142d5a05d724f70abb5f7c06dab00f3e5c5f1415195e1b489479285e579c9ea25635b2cfe3b994f539430cd7e7f94270359a6135c339967177f8da79e3b2d222825ea51eb4ad3d6e6f5a6e8333153386f250f7748256f1f3331fe7743d92ed80a7dd2ccba514a50663a181d4adaa1b9d63ea4bc4f98e52814b002751179e65ff6c3c332649653fe68c9e034de4b32d1c95e3eece88bfce74895c4994d325019f634b453dd714bd4328958267f8665074f65076b385198920c3a1dd3ba9156e6d96f597eeed2e3e0af683fde1a417ef298d3fa3ec71238616a3e4ab49718ad46fcf930ab00b8c243bcd7393b6c67a3259250f6112249fcafe804b25d25ba7a242db918d025bb70c8604c5d4cd996b20d36255a562247fdc98b33b8c74561d49b387c77dea1839780d5bfcc24c1a1e2a518c0392fceaff1587d37a2e3936907476072f52dc94e90f72c2d65d6100f362e12341cfeedf824b38abf8b447422b4d9a4afc4551f6e42d983187a65979abd4dbfb64cb8b0eebd81f93d6b420151b814edab79b63fc951267206a2c7f8b2aa4a6921bb65fa325579e76926c961afe95ceec373363f579d4f44fe923f50f83142f5736c6b42b5db1e87beb6450e69a07e3ab5d5f2e4a80dd3330e0fa88ac33d8aac4e7b833941d1d210fc5d63c39e1168fd280ee74d5bb33370c7e07f419ef0a60b78a884c9f0ca9c2ca4ea8a66e579e4c422f0cc4da835674abfe7c867c8f77d485b7b5b63b34971ee7f0c56ecc417a223905bb725d790123e0e350c6ab2adb1eb86f2d6f9cce0eb3b18b968653af60c20c17529f7c72430e5d137157b850c4eac2ac42a7a54acb7973da062b23687c826eb71acb06813f91babf935a7997031b89d2e490db61720dc82b0da031d0ed2a7a5e9250f41ef2bbc3f6b26f0ff2adbb6db5876ef32f48363bdab963748da959c6bc570b5ebb90a60b7c0d023f9e3891f0043b7355bdfa47a8bcb7058835181f41eb5fa499332aa8e40de9c587ccdd3eecf46fe6a99f90cbeca759d0290cadb4c813868007c746c8c8cd40cfab5a522632e283789a8ec04311d014332a237f067bd3781f37be5c0cb4e6dbc188189bd2aa8b594741742d4716b89950ee2a0d18ede2be839797483a3c1c71541f3964a59e9f8c1c9ca09466c60d4e897ee6e446853d75daef527958122054d74d25ff28d46f7d88179d0ab50eb456abb558596d6728e93fa7ffc8749310575ff182c8fee320241a92fe6d862bee474331c2d701df10fce913e1378f0b432bfd4740c92ffca97d628cbf4cf69d26eb1c73ccfe7e76eeddaee6b306cb0f55f38bbc9bc87eb4ad3fe6a82e61c26e07d74f4217f62c6e9831a97d489d75e3fb39421ad566780966d88785b1c153ae8bb0cbd2c550b634584a01a5ae5168b64a3dca0ebd31404b24d7c03b2f4775cae27f3703299ebfaca0bad877307030b3a040d440161c1044aa93fb8b5a1298338690f78fcbceda0a64c008ea971f2841923fc79a37f13752bb5a917ea4f02f1523682cec526556f67c6cadc1871c4575ff3152f36f940b7c8e5ee0ea79cebb60ac7a7b4bfcb7413820e3c1cf47ccffaec4ac1ec55a184b5b6bf837c995cc645345a443c8e9aae0ed028f24101e5cc90a62e800450e899c9303859d33eb2d223e6c90cc8cbb5059f0c70cbe519d01bf2f62e1dbda83d280093a514186a7494b5fd2ffd46827ecd80560eddaaaa8af5e34ad4773095424838e33f2586c6e46d4f979a2ff1b46e3fa2b30590c635256d8b911bc20880cc8cba4531d9444cb66a7297d02490d6c301718ac8262ed062546cc202419489b739268336d4b6cd63f52b2526b1e851f9e8a028622df9a5f75f6d5525e2b6028992fe8bcf89186bd6700d2b61ffb000137e2a3d2f96157117256cc8683819f1e16ab5f0ff9c541f5cf015d9ad5b99b4b713c75d2685800654cae41bb9b19492c162cb689f472f34ee873521a3b852b31b745f81b00bd5c9cb851254d51745d39778814c3a2b2ccac7eec63b57202a35bb71b98311572834a842b7fd2baed7d727dba21b822ddc544c6e79238483c4e6e4e42fa56013d955ec076aa1c77ea8743a2521f74d42931a3e57aa16bc98c26714e0670b11052e4e93fae4524ba8feb4206d98262b45e0b844771a19aebd98cd1c25c53c0a1b5ed3fe144d26ffbe405806d253927d44839dc34841727a0cb3202325d7a5507be2afb5edd6b5ec924a501471164a30e0088d00d73c2d171712de681517163e4cc13f72277d9d0bed254463ecbffff59da3209a908298c4fae875e6e216424a3cd6f58064b6fe7d15480ebeedde88195556404e8202c791bd69ccb50eb044630afcd66ed739ffdc341e3e344f675ede1305af10b46311f127d9bb4cbdd815d69060fd07cbea4795e222957cd30c2071208c7f71a25d905c8c378e87828417c7143b16a6bbf4845372ef8a2798361168f78e98530ef8a50a2f488683b45d8d3adc92e3cedbfae880d2bbc8a1ab1a95d3694b35f39ca773b23f8558494f3320ad4cc2bb221effa6cf0d88ae067154b7de3c5f673c02d35f60979aac47b3ae5c3c14e9069b1e4e7ad7c1bacec2bb33a6ffec189171af49965aac559f9dc843305f1f8ec218854e1ec21c586e06cd1534b8769eea21409a87156e9541355155722e5d480143bb8bd60734150a089d5456e646effe6f1f046538fba818ae7336593d946369b50fb5e53bc673d0161abca6a4b4882da81ff5a6b163b89c17c9090102ca1cb27ea09316e9b9c2227d4700e4baa63e2b27fea086dbe846b87b777deacdfe3f2cefa62a347eeb5718336662719e46ac7e900d4685b06d9a5039230b795640a736b7fe4e914a1c98fb60918ed202e37a0455801fe50f09d8b52ec1b176cd5459c8550204838a146acbb178be33fa639f6a890ddb2d12ecf132b493168d8980ccead616d5e2834a82ba752259e1a5f298b50ceaa4a96d0e178366dc99cd3e28203ae280348cb2a08caf94df9acf76b6adbdfe4f82e7ea523159c10c332cc751f66b195da1e2040d9ac450db4b12fec91cad860ec03be91523d7897fd7007b45f4c0c6d5f748283b60c9d8f02e654dc93e85e9dbaf3cf357e1180905c68719d2d795dbefd7a8e57bc9beaab09da6e79b9898f063cc4563f63ba716cc506041f57cd73e8980f08d930b5dc6bfb957415cf60ea04ca1f517a42104f371a61079ea25866b62d58f7639fc8daffab61ed17ebe633dab81af38947126f242aa7fc7e2d53a5f4d88fc855aa2f040060545b09acfe6a5a32c1b0a09f9f4f5f52278dce6949cd8db862fd07013564e388a3acb75653bf52bfda3d2380fcbb86c662cc9a501e8e526df26438284481702b510a236b4da7b2e27f7ce3a5efbe74230b04832ac71c38947626398167e8946e4fd98dd228d0584d18936eecb4a0e36807a98f0521d0a6a566718c34e6953468adad86750f66f809112500d226f4eb034e8e03641e52d67403f89f859aac60b79a6bf3d5907910bea0b96de0898edff94b92d62bd574c8ba4f8086435998a80fa03e1ce24886d80f535eb3524e5ad052691f661aa144b57872113f693bf1e97b1b8967ddd94bfcc4e12dfb7a6eaf863f37a37fc3e5246c41e515847e25c2d32c52d213c171ccd8aa36902917b31da78ee5e194cfb5a4f947aa1da201ae2adb380f2577d93628e0f16c64b133bb6c9ac238e2a3dd30b7b8c652d1a3b2f77d75d6938ea5a038024a7bbf78beb7a6946e04d3e2705db56407215965106bf77e3efc2562f13a3df9f791090f2e0aeaf4002bf0652dea0c026e66082c28d55f09f28a14587400cc016d22f68a250bbe25419ac625c84c5e3c4753b1b12c80925d218ef254b6c26b70bc2fc1a56d78eccd549aa33df3553ec0e7f298cb5e66b0c696f48b64ddfaf2a245b2c8514db9430a7a2913d633cc91ff5be36886e76c0d07f291ce0ebd172d62ef94f4cf5e69641e8ba09a7f93cd04f52a5bbc3d7624b4f3050532bad5ddd4b7a569357f50aaf296e6abb7e64d311662ac8e676012ffe9c35aea14774d25c6b7b64df50dbb141840e278231cf39bce3381091df1df5347e5ea7b9863f518fefc32278272c9f91e2b9d0fe1617ffd057cf785cbf3dff4df0cf9bd75d79ce18e248eef88f2f07654866f69ce4a30d7ce7037d7eda1c0bd09f17817ce7d8ddaa23f902c87e04f35eafc9dd7237d08456cd2f8ce07afe8a836f0e9bba62d2e998e8a329b7b1c5622484e4d76310e226a7d7bd1f72ed99755bf78a7e2aaf97b824362fcc8c26bedf20275cac9352935d68e6484ca10217774a00e4c779d6a860896a1eea9d9fad70c26ca52589462a171a710ae8ef901a952909432f8880f40eadb368a776261d22511dff07551822fe2bff98a084f0e297a5c6c6e4327b88404c959f6fcc84c3941a753cfdb15763cd1ab0f699687e74cac09d755e413ad251636765e799c8f94386a65f3f59790cc331b5ef70db1bd6e3d627000262536f8595d6332652c63f76cb54040cb755ca733fd4c8bac8ae5d2b39b55354c8ff8de4526072f28d95d0096e199a2ac1a7c08073e53d5cf39e0c2a69c9fc98c99ddd9a88dadcf97210478f5bff6e0ff18f02f20857d051dc5afc7ab098590bc82f0fb0b9eb39405a5652647e098a654a129b3757ac65c3c3d1da8c548f9c1bd8dbe540788e613ee84b7ac0e0aa5509e698251362f8357d64fa7666edcb9e59ce6bd7995994936bde15f4e5054b1abeb06cf6eb06660a28334e5dc0769f82f7cfcd3cd5a9201e2b6b9f86e8f3ca4828ec3fd34f74b3cbdafb4984058b12260e139512df55295458a2197fbc84f694d687a63ba2aeb160dfb1ec080dd85e650d37764900bdfbd3ea1576b57ff914e0639797413c83c6dcc4263efb9e45722d0281cda6535db61d6d3beca02e775df3fb01f0f17e716afe1827c63a1676715e9c521635c698cd793f68787c37087d0acd06f04c9abfacfd622c1363b141317e1e6674448522892fe1b3577b9dfa162e3059bcce0a27aeaa396d35c8648dbd3aa1b42dfbfbfe840bbafc8e0d9ef63b5e9266dc870f4325dc8e9541833f66d4bc546f2c76c2622e361ea164340af6f58c68cfbbc59a31da2d8adad08eb59a67caa91f7e7920274c5a863be2e6c558c268b83b2a4b7fa52b0f8d6e80f360231fb98cd5d5b005fd731b36d65a861faf11f7ff7add18dcfe8a213a9372040c8dd4301c460880990191dcca97dd62f176c7fe854eecc508ddfde699a8caab163e17be85e09163c4d965d66cdfc34fbff4bc425d54546884039dc0b6a133c788e1a934f2290de15404027e9c24274842863f8ca448740da959173d4a385894637a02e2ab24c007a2a4503bd6b3692314488e85cd3990c225432eb755126c2d04a2cb8fe8210f81cda18b6f868eaa596dac5f64f45b522d818d3644c0cda315a93c6456e12003310799c2cb074a53d826ad5a6492de44b426b59bf2538fb7d56c7f5f3f22c9cd6674cb59f7a5c68ee671979d1115875637c0525858b44364a8477b03b83b213c9d9ce28886defccb19f80b376324da5e58de178071283aeb36ea80cad33f5e48cb7d20d9405aec3d5a55b2ada5a14c935331e0b9ce512293658399e35eb58b8b44aa52aeb758ed5bf71d4b7735a94c1268d402bc132bbf2330c300b0c0ea56c32912aab82c88425fcce23f840921f25ad06d3dd7c5e7d26a96ac0449aed2fb52695a6b81c883ceca74e58cb20d9ecdcf4a25496b6a8fe0b89808f0f8acd42cbe4fe345e420723dde906ee4574daa9b3a32b3676df56d6162448cacbb643bd231a8e0018f0f7ec8231af837bbedb59947260afde987b3f541d0039ac6c22aa9f96c252088d823f6e2c79d679bf83cd905445d987b7edde833c914b0feeb471d090885f8a5a08c5fad8385b4a8f6eb346aee84a5d4cfc21b994e69607eff7c337723ecdd12347290d5ed31b7065acd7acd26045e3bbb5d07d85e56d716a982fffc0993d1cf1c458cf2f1f006cdb8c9f56a75307709c7ac14d8334f29c78319e97797eb5830098f60606bd8738cd704c0e2613e792c0f45f788afb7b3484c1df96ab92c1c5b82cb71bcd902b1c183e12eb87b34a1a5e36f1158d8e77784e3db817b7f9d0dcdf230dd6a25fe90623eb638d5f206ae0ab7ed29bd65727f1a215ab9f5bb01fcd6fc235f12749e8257b67ceb04c05dff045db8e4b05c0069dc7570474534ca9c18214fab1f0da7d0fd1206eb775dc7fad2985e812fbc5315505ee95c7d61ea4c0cb598083f4efb42a40e7e74400f5ac2c5fbd25abb39430c32a50ba4d4c075017c297150e6af492412e14694d9bb05e6c213c885d90dc199f0753a3e23b466230aa13326cad9625bfff977129d5418dfc3e9f3b391d03ed32d3f950d69f2305ca8d6925868c7ae3b978b89194cceb6d356d0d433f26500ae3e65c1bc498801ab1e544ce47efc71ecfbe4f6c18ba94c561c82d17d8cfa2f0fb0c447528768ce7488f89bfc8fc9d4cac09ce17c610b34934b90ce40f40fc546c00430a08f8c97a3d5ce29d362a0def66e8bffcebc6518a52d219349439990b6e1b9c38beea47b5349346c968378d74f02965deceaafd5969ffe96f19827007f3a58a3fcd65982fefb4eb842c143c1806c48c18c202fd6ef93f413fb91266aeb25f6963d9f1b3e9258d47a6fae72db611240b3bff7ce30868e7f74e1d628f5ffb2dec4bc4083a75c9e1f5337238962e04b667c9ee9090ab82acb79ae8f446cfb21f43764da42d44762980ab7b9c2fdd1e5fa9f79d861f91b9500b355e87f92d76ce2df362ea66b6e0b69a26450c78c95a06e9c868868752e11e51f71944dc7d2bb21757921a3faac5485f1ac8c6f4727b10dfd212058888072c818fb47190ed6edc8ea713f7a8976ce008ddb5399615a407a0671ae3b4f72a3c3d54a3be4ca1a163058b336e714dd5bb5f44d500ca53eeaf6878da0a7059221472f2aacf1c5cbfb6284ff56e1cc70b4393e58736eb3543f819b6d4b02a04e7ef971545c83487d98637d0218ec3a53e527b80e6f48e21745bc5e68675c36cbe0e55f0f10a664409a3ce58f94f7b19dccb33f5d3b1ae390f3aaee8f90d9c1467ffab8d8100ebac5e6e3de9409d1a9049d914272927fa918b73a3018c7a8eeb92ad7e453ab034a7c10edc4a45923e873602ca7887364412ff19d2fa9f08c0403c3eb97bcb15f2cd9e50b14e28a079939722c1589a149874e767620cb52f52736bee68d24f79737fde16633084625b938004e58d02399f4ec0dd048911aa6756ea673b3abd7dbedbdb9b904865b6373858f87d7a5c50af278f5ea6048d8f0baca994959b3ad4041afd34766ec3d2854c077805a92961862f15dd63134ff7ccc16c7894ac65bfe002cc99e106f7f2a747f635797d4698355e4ebda7c5769a0bd00f66de090c5bb0183ea287ad95ed1fc16d2b842a654e71b0936b575d8d2477a9f01476dcd56eb525fb98faa243625a81c99459ce13360225f4ca059d3586f857e54cb987a7a37133a6cee27ce0a501e145f49b1dc263e52b72d30ed53022bde5872b5870a22ffb5246ed4672b00ae52cc20c1cffc0ecae1d14dfceabd353f4d2b70b2e87a43e2cb82dd176e38e36d4218abb1e399141ac9c6161aad2340499d4c77a0406f575ea05a0d7883cba0c1b6b724ceb84623f64c4364679be9d2777fc8451d1078da7a3ebc03102eabc99eec76826e5a7869cc514307a5289c7ed31e50ac64acaace85ae5efa98d5be150f44c612d60bd4dab568514461680d3e17a4b1127fe58e38e07efbe27cbd75de10594df2c99220ad8ac80455b287a6ed182ceef0bfd330a0dae920dcb83e8ba10728479777cef4dd06a568e4c0b258ccc1f2b3549466d695a12a2bbf8f6b8281bc1fc748abd4c2a9fe9534942231c0fe96b4385ea18e71273ad3d5960c878ec5ee4261a0560fcc14a300427804c3db0bd2882ec6321d696b8e355e2055fa205674bb11106714e065d6b4769a2589316109b6d355f9b2bbfb8931804fccb10042ea80aa5aec3185a890307176a1015ace6843ec671958d17346faaec9040ca23cf5f47f178fe84e2c543b9f7c8ae3b0077a48ca70899789f547a4cb6a83c471191297873257ceb304b2cb0b9154e35a257d3d6873c03735a6c98e43c05184e854f6319e6bc293a986de681d8e0faae62351cefe8cb4ea332f1afaf08e6002888b802435d62a25abce557ab2c071898e61ecf16d68298fdf3c085d5049badd55ff38a838597d22923c90378566b2b68724654847c84edd47005f4b9d9e859b031862379b314027daf2c62985373416db138a014602af9802b072ff31ead772b6df9874946de99c7957c871e0d9ffe1fabc0ace86806da1fd03bdd814c057d04c8305364c7285117996dc43cb6b0eb5a70d309de03ed57ed1b98961f767afbb12d51b965c75ad4cd720ba4bb0fc63c5bedb24295550373d8c11b3ad0a5acf8811cbeb2b5004ce9c15268aea5811fa563a5ece93ae5a19b94d506e24f5c6007f8a0002cd037ebd16fd1ffd80c8237ab104b334960516b4b157412807e60fc85fb732d87a9d96a2c1ca486f37fa1fc8223d597b041ad2c13c65b071473b4b97f79ec3d55d9cd42ae9f51f1df66ce45cd835b469a81def9c7536eefb7d6ec55022a739e0ef5f14111031e8677f6dc87099c08e83b4cf63ae813e50a514067c99ed90bf7bb86604f43c1b282ade5a14f6ab5791b1518d382c444bb095f517a1fbc2b6a27b3c6faa7c9b542c1c9ab583636e4fce79094a0b285bcfea6a51831dd9c3b7d4420398ddd4ab4e834864a6c74e708439c80e398ded3f3060754e67082ec1366b94d395c76d7a3d80902dcd04d713e92a47a74e06b1a41b7704b384332379f623f4891969169a04b940d99553df01eddd4737a7cd8d697018c3dc289f700468d8962a891762dad78bb5fd034119fbf7f33ab24fd1d4c2b8302497f804909db30ee31042f85ef48c930f65e34ddfcf18efb871e113ab6a8c30dfa2714bbf2b5f69815eb4879ca74836f83f8f6ddf8898ba1ab5e129f8f7728d7c004214d33bf935fd0bca158201471a763c0e89950a5920a24bdbbda4b40741f24fa431d9509adff43c3644f5c8fbabd1f215ff95bdc551322bb70c298d314850d7c8298bb6a179dab97b8d5048ad97895aa41ea805a46198f5ee686bf33a247d02f3b6903fce3a44b1b3bba9eff852573942abb09140c763aed2b7eece765a026e5b479299b6fccc22606e6889669343bead5f6cce4de24e2341f150d4e8f3e8ce167f1b21b0bd8495df9a2cfb4bd5cabaa066fa05476f37c9e0a519de18fca5493ab44d5f661ef1fb690505cdc8d7112ca2e136f65214a70f1d75d820d206170a3671629bc0e79de7d8ccf5f08d1c2a065765e5e76fd9eb6cea95935410a68e2ee7f4fd2936813d6edfdece847b6c6673927aab902aaac0a49950862dc6f6f05732b151645d7a5962c07f5288db51bff9791edb4940d6850bd1832fbe7913e07010cd0e71540593c103c7abc1259b47386e3f0d66549309c81820b09cec9df87dd7a328499e77737a2621354ac6ddb02e0d448caf4f77e05545ad79e5263a1e89314367a231cbccebc1cc8e7d55eddf408f858e5918004eca71c24c754512d8f9a3eec9a9c21faabf325d05450d689168f4ce40ee0f0ebd9d298f87f45c54bdecc19bb9b7c335d003593b48f90c2b0e47f3e1a0032c64c8fbd753c48d9cb0f15b24750b6834f3cda1a52270542adbef0860f027c18d2ad3db90e6c7699cdcb12a0b5bd3bf19e39c984ba1552ea35ff54dcd274580336e3164ce30c04a6d10f0651a5f064b65b4d199159c37fd0060e7867d20a811bf9ee059cbafd2e08f89004cff48ed5b24b75cec12cab154e4d08c7b576c5b71520fd09eb9f6fab1730956ede81067d60b62dab6083803dd3b60afea7411aff3337ab900322839af7e554e78a866fb30d8d1731357c4a47c9f0830760e07f334427989dae08110d1e7b60e82fd2cbd9584404f8fcba32fae25832b4dfcba01563f0f584aa1cd5555e07970de0afafc4c0f9290f7acdb933c0ed02e46bf8b9a4fa21df1fdeeef4d78a06ffdd83099cbdb5ccde99526c99edf0ab27b5b0a4f8c66eceeecd7d45c1cc3ed6efce0918a4c80ce9cbb3e1b9dd172c3315dbb10ceaf0a78ac58ef449d81499acd8dfa567dd8f54bccc5d252da87c070178cde7045b2aa55e8eeab14d1e9704decd78661daefaad3cf6716e7d76d1b0e74a35671e5af461216e000ae28cb1aa0aa4335783bfdd21f3c7100cf404740af1ba54668529ecb320e2b08e569544c37edc82f25f0e7fd914c82e26995053afd238eb792248781c68d8580476d6bad111e4bd46b79761f625ffc0cf6a92e42ba66fb3a55699216b2b2d4efa9a1fb78adaa058d34108130017582d0f02493d77105de8ddb21e1103c81356cac8894b80582089acd1df4d3bab609ff7702558527e23f2d51c137b1f263954d6f3758e5a69cc4dd27bfa2a9e4eb794ee7123e14ec24180f79b178903aa4da49b6d83948446fa8fe864ae9385502de3e16786620beb72ff13eceee81b4f49cbd46278cb3487bcc6f34c31f9d6f8d2466cd2c2b4d00c915f0f8e8678430e76d2364f8df6fd6bfaf326566dc5dcc437043447974911c4e245874451fcc1275b1fbebaf32768b410464ea21061d6b7ef8fbba7e4c56a17d94e2941c782fe77a06a7b8c66c51288a8be57416b70464bc79a38db0c5614252a3d0411b88805e373ff5a04b3041e92703b72c1def1e431f36f2705631c8ac0ac69698e2719d18cfe96aa05ff777fa2921d01c3f160193ed858ae20ca65d0aa9ee09e1868f416dcb687f72b8828ef1a6a08d7c3c4f759f10f82f3941d6616677e0408b0f6de1dc979b55311f98869f365e0330069a0b249602922bb93660e27e949b93fa921bf20217b156f310f7df7684c5f044c6bc6d32438c160b757ecf0eaea205b7208823c2ed29d4a5383b4388c8fa70d0350972b94ffec5233eb34d3affb0fa2c37f1b4ee08e1d53a7bbf9291b6c972396f3d81a7169d05c2549f07591d995d30333eae82103729cc63c5373a0e733e4280c68498cf5fc9f9f702ff8505b9f011b89bbddee3472f09eb387e302fab196130c02dcf7b6a4fb29909231fd12d900f8aaa4147a22cb9b2157186a595046341032713b2f6973727e5e596497a196ede38bfc76543462a1ee3f579cc667dbc400b58824b96052f691578246ab02c13289a7c01c4bf12c3b48ba540600d8240f28bc8afc95b4278da9bf853aebce6410914539453c94e05740fd3841ee6f6149c6c1f09fdb3034bb316e10684763d7791b7ae2ce71366b86f14384e46fc1ad0ba7a1aa5dec781c07f978d411e489fa7462bdeedb92d74334a15d4dc1ed6550b797ce930055dddc39e395004f44281039f65fcaee4e75738c0df12b66f5142303d13e94531463148c308f1b14144eb028a376774e84e9bd91d63d407069088041d6ee7c5c56331d87737d4868529b4b3e6a68c3c2a33329bc3ce2f9e34f458b962cc5cb74534796d93a540110115604a0a1919867141513ca9000caa4f2d9a4b0cd0411eddf4eb5fcab680703ec2d2413d4dd0ec6babdf5ed743e77f2f541cd24da06d79da51c8271d79d75d86ea47ea3b279bd92660458feb5e6847b11763ef0bdca5df2ea7519f641b84a769b94324b649948997d4970597f2924d38f9d8fc625cca32f0d0306bccb34dd33a516d28d3801d9f165c67d72028b94c27997dad20c7c682da8bee3254565113905f85a9a9fc4707e010af37e1af8486681361d648f13385c965295d4f7b0c95c6c1ea51c65b193d944ca9d0c60fb1fde86b7ec39011d3f9413e6915e5b5dd777a395f9aa98577dbb7b08a39d1415176180bc7ffe2c24cefe756b27b91ba75651131fe3b4955c5fd30bf650899a2ba246e4a71bfded6dd1e05f43900a4b5f2db3290970b8c137a26cc02b906c62f6f1ce210dc2b57f8db00098dde17c1f19fb647a0e0e0d1c13d42bbc7699d9616a1a1717f99a8d21d3ccf068d45a85fce9367ff002d48673454e511642da35c9229799ead72c90acc846631a3c0c44a06a6a1cfaca12113fd60104610a356fb1a0d34ec7576196e28d6d865a35c97234678e76c0d14fd8e25cea0b74fa0736fe3e63c65526503a1dbf191a0f6bb9bdb128b91522007f605ba5f1022e9710144a8d51e16490c24fac36c1e849b9ea33c00996240ab780f9723be4e2e6f13ae1dcec31690e8600f02787403d7b639776037b2aeba807093db52014fe1589f482fd0248169547019f898d29703b4c045374dd26e86d483c657ba865a28aa7933c3fe811fb961730450f5177a96f5c1840669ea572fa0be530a199c59522cf774b78d70829ec3998d2f7b1913c315394fe3ba99318517a531e314c90995368363fef2ca1db8475eb2f1fa288fe0b678cf3a420e361b2d3f6547a5c188880686c81b9547aead227630a4b9b3dbe6e34dc14be4c739c82660f48f4d4bb2a7a88dbbaac9c6a0a64cad328ad33082f400ffa3a9d237b727429c8c87279f8ed3707b65d823f21cd0ed41559b6e89accc4b08c6bc41769f17699ee0f1bd1276cf02b851e612072eddda902c00bd643a55ecb7ee406f88fe3bf6cf8100b7119ec4eaaff1a9d0e6458021254199cf019217950b0cc4f8f0167a898408dd4eb27abec51a7d0da0c5fff5a47c04783889c2c2b371f52c82849580ec1bb126a26ebf2cface678d5b139976ca139a647d00a1a731500630acbce33c07cc306ac8ccd06400243cbd537710c7358a70575a49c43dc4720ddb5a036c60e40469aebeff271c3b25c7c17df93bab95f28e01d4d6a79ecdc2d00c4cb0d8e4c5a0cceb21cb80f25f172ad3f1b2706c809f2a421a02c807cdea2ef8fdb2f3844952be8db933a9e66f1293c0b99f875760ff91b43a293e5b5fc7baa6e522d23d9d02ecf6d1c671db3fb2146bef6b243d7059b91ea3013ea1cfc78671f52f64d4c311aff966828c19911f53492b5624f4c77dbe0274c8d88237a0b88a732d574fe9aac55f1ea81fceb9f382e4428104d478ba8810a33a96cc2fef677420b17479c79e4d6512057188ddb88459574fe03bbaa742b1ed7ec6f110b93c86ad004f621a76c53c6c7855bcb508bed933a06109269dcb7d9b6beb88c3da3c6d834718dd24aefc88cec2ff43ea8baf2bfc0c9e2505e266c510d23acb20d639a7d84ef701455148e28fe860d8f95b2d292b7b65f6abeade0a31ba0618e3995a0818b209a9985d0556c5b08b9bb2898d3ee1a0f7eae6340b8391b7cb7126274f3997c988f4b1ab6ee51c0b74913aca16ef82546ff27695279c7bc2c0fb7836d6349dc533c55b4710048866f221a88c774fa7c173049e08b471bf3e07837b3e5fcab8b336446e6cae1cb6422a982afa138956dde898bb57a457561a05f4117ebd1d6768435bb3994a085f8652a6c2a2875998b3692cf9257f54d52d06e223ec12260a877639db6b0d9a5d6465df8ad8cd93526850c00636aca2af48fd02ed2e54302f22f0d3803240169ad96c3c90fb219b7705f15be7fa9930499320afddfc085b25aebc5e3e712db4c40df8973a38cfec84707584cdc59221d93028670b89361ae43fc8d6d1beb322e020c532457ad59251217ac90723124a1c4b294c31ddb3b541521b7b51b492019c2fd23147967faf2c74243cfd372bb8d7f162a4404382c8798b8d4f70defd637f98d71bccebc4f94bb1ecf0393419282b78d55a812026c2033d7099d2e2cd54e3cba45dfc01973a8a23bf808b27638eb339287a42e46667b9976f64724bbc4ebd30f8c7d5e009cf75d868892dcf148f7df134b81aec4e4f4dce0e0114aa72c239e8310cf4289c2aafe37d2c062c6e06c80c8beab87fbe6411a0b081ca05da96267ab047e92bc251973f088df2f3138296a3608a444667680d06133b8cc403a22db4bd7126873d5c4ea5575623303bc71301b2354ed78f6d65fc814cd7823932df45b1ec7303b9fa01f63b34899a8249c4e5c32e5049915b10a2ca12668b3d878ce355fbf9ba96ed8b0fcd59518c2cb488edd7dbbedf9a6dde2825b0f3e08956f2f9ac47d9c7dc896026a4f9718f346670c3a547a93aeab4cf4fe18e100c6847b33ce45c53fdb239cdfe13cd46e54bf35b0d179fe9a95093ba619ed6061f1077a299af29836df2fa869f7e933d9420a16f39d7b5e585904142f23cf8cea199f6dd5a4184a5bddddf8857608b92ce72e955978380dfafd74a1dd3852614586d4ab981c9a4f18a378b423109fc1cc464fc5167ab9ad59b5e0eacfbb6d9481313eb77a4bca5016292ba162d47ad2b31213c22c95ac1f385fd41df5cc44acb02abc5d7d82107cb0ae4b829dd746c713c6dbeb2b49e5693b55b696edb1ffa19341eb96b75ce2f272b1ce87f3c798b0176facf9f664be1cbef36635eea482b1835161bc6b3c5e5eb81bc3e6cdb465d5c09566c88ea518b937b23dfd77f3964620a1835737de9d5933c37c54ebb51be8b7422c830ad1ca26f590fdf4d5e03f0b2ebb2c3c3edc80e7729261ba37344894f56e1ca7440be18b590c53cf4eb956056788f766752a08693c843f05e7af61f5a25f38c0abb380559b4a8218612b205b0555071d7b48d93e57c6d8ba0a946e69ce29add145ec7215101de8e5ce18677ce69a1cf903694735060dc45ad5c06c8a418c4c0856adf4b84b82cd6d4eb4e101024871b1fca47c5167c300b40be92b006ba01eb505090044b96e721079e8b72d785fbd6f612e20ee367e0e027221311dcb0bc496ea106f47f8950ebcc0129fd4fdd2af41f76103660911d593684945e4f31d179ac723864200c098317aee95942642e5fb0a5020862ae431f7e8663933821ea4c53142dc37cbf4b8d96daf7f3f834f773163120b59d1b7870e18817abc926c24a964ce522f92dde81aed15d773447388033e45252f229349ff0b3ba274b30122ed77da4b75dd4e329bf3a755b3067824c46ff0255419c139018115c8de8865d66b8623e5eb7d4fd27baf61155b758718ea591b91cd7d7663d210a22e78cbefb94ff491813c8f46c6d09894adf4798bd744a81dc666389b633fce9a440cf14b90f48fcbf7907ca3dc2c54645ba486c421e2b091fd781c09c15e338f22bef10266385b555563335e1443dc65e674d388c2065b81079d2c31518c60d1b3ce17637cc55dc8915708ff5e1c94853b06a444f04383cac36a21fb1860aaf988c6bdf27bf24619a42f92a6fdcf718d21d9b6a3bc6cf7ee65f23b1d93b991c24395287a4621def8e126209c14ffc160780335cfd56dfe4052836b0c12b3d5dd6e393272f0fed58eed865e920a37bed336a6771e2190bb4f829c1f95dda51a98831b6e846d555eb4a91480e8419a0a867b3dd34806923ecf8de991c42e2c1cc744a22c35af7908f4e59c7627c4480a9c0f6541df5102f1d8b28fdea1c71555a075d91debf6b81e762f498d9af8dd52f6a125827d4d145044dcb97920bc8508aae1989c2e65bb6cdac467e2d3eae02f4b3aa024191e03af917ee1e7df7bd62de3135e869d2a83de3d5dbe2620b376a8b37a6d5b950641777b29e787bb93ae3e4c7e9828b646246150a600dad8f0d1591fcb09b2850fc6449ab4a74fdcabc61b5b073cfa96a519344a227e0987fe6a8ccf1b85d79bb37482800481358e4d483009594a2bb776fbd7830a8299f59ceaed1de716715a51a6bcde04f615c05a933cd4a10fc7f7e6c464905fa8480a8a429d126d15b57049fb7cb36fbdcc00b751e3dea32e3ced0297b66d15eca0c949d7c97529559bd1130e2b3994d701f290483f24d455379a03d266cb9b50f382cc1a1f05cba2f8b1430c44ffe28f989403850f1331c388a5e7312680d05399fb469b0ec2905a2ceb97286febed561f771879315358b7afa5d4a5dbed8f818de18c8b3be667dbdf758c09b7b9280490be07b3779b2eb1c2aef749955aa5c21599c5ed12f4deb3c771e558b9aa5b83cfa0a311263a99a67b0c157c13448a4a35cca86bfe06a61fd14f1638bc153f37d8cf1db439917792555ba8ff9fc7c65a1b3a5ea8bd399b082f00a8feb2ce9085e81873ee5303b6cf044936a23e9d0da2c181909b2f7ccf08b5dab704f4571b324d5f634063582de8dd28c6a3f3dcb61591fb4b881b230fcb70efb13b992d21489ab8f2cfcbe6f3a5b572dc79f4f4cfcbb82d29ed59d64f33940387a63166130bae040a5005a1573ca048febea95abd17be965b619f740b99dd484186d159f6ff782f1b61fcc007deeb802f4ed5f88aaf292bcd1a178af739c953c56529e1b1cb9b61989769ea7d11728df353f2aa776dd84c91150979c0f010b8e1238533de868c787dcc1fe6aed80ed2bb5b0b2c8c61c1fa5708b5eebba9c992c1b06434f68aa66547f3cd447d20a5578ae92382351053737378664a3674bdc56b651db5492335ca7d8cd21288409f0950fc6920970401c3e87d490454f0869181c183d014435281462880f948e20471ffb9e0557a23c2930d352af516b1274a2f9487eadbd535a04297835327b2f3bab4897026a0a2ec1c7645c098cfc2003d3ef20a250222f9fdb4fc101205e4ee74d01d13bd3ec9edd63d4517f7f04a8a2861154524bfb7bc63f8b0e54ac4bda1590e468b56134908dc9936fdc0dca2ccf1c6808a350b3ab4335a54fa867db919a56e598bedfee29083d66f45e9d5aaa84ab72a06bd41b25eb8efbc76aceacc1234ba9aafca7cffb345be297ae970306a6ba9e55fe2ee70cee85006d4f0bdf8054380cbaf134abcdcb96f550bb7bd7932e04d1a248152f9e562db794c67099fd39739c47a9f0fcff6dbe5e6c3eb92eab5fa2e47ea61bf01287da3cf4e85182d96ddc1b9b74d5627c5b7b30f3d7e9234b5c492367f2b8891c7d8a3bee74d44996773b00f6e0e31d36a54a536102c115cfe4a5cf399ca63eecdbc17731b72e1d123fb7f795510d953aff0c03ac563928b324bf9de0d089b9cbfe6345a778853514a2f65d87e7f5d35194eb4f98da1ac268c44536cbfc88844596830eb24b474ae97e04c547a1db052f7dfa9b6153f30e3bb10eb53933d090dd913dd1bbd2731810c66a7538dc03fe30bdb31eb0d6fe7c434d942c57440eb05958459e14dab6e1f56418e9e0a14bb3b2e61f65df134c3f6ef93c1f248ca31f9a90e71c215fa0e9c21b8e4f016bdabfebc843ce940f9dce8e2b520631c492f601fdee04d9de8bfb36907e0a754282e060c9340ea64b2263848207d0286243b76f2b05a39585fae2952f8630e5710b77e4ca07ac4f95337f6e8aad5b2b4dccc5c5fbde5c301a3df1a3b1df0c4b22850c27c4a883bbf39664f12230fdf7f3cce9023fc32471be4b7cb24e029c429ab7c8d7678b44d770bb998ab94cfee70dd2cfeaf0bf04cdde925dbcfae6132d0400fa54800ff27ab68a6af5c9801bb990e2863ece309b74eb4d7092374a5923e63093ece06564dfb919669f568d0528a5180485491099b2b4c1161850a086b8b58da9ac0ebdc664ef8ddf2c4b90e05aa419a06320ea459a8449b68f0e9a6a8c319bf8c3027f18a9c0016d0dfb20c51b68d79686132df80550b337f73f0809ae6a495c72a873aeee3e106b202e9140e3774487198307a0e598d8887496a417cea7ef5889f8adaed24bf579696d70d2b2dc8bf6cff1f03edddbba19d2bcc680418cad927cd4439553b2dcf8d481b370bfa5eccc7db0806833a3ab5f0bad54e3d32c08540203f3b227ea0f910c576e02ec6790d43f3438c80f993153e99b4d116afc040d44f0ffaa637f2faf5bb4e2e51342934034d9759b09336df4ae0b279374ba97ce9e13cdf270588a00a47dc26a2530fb22c313db3206d1b8c0d5d7d32232cdf3cef31ce4585454f2f8616ee8540cb78bf476520f746769213fda4bb52dc2b134e7884b6c7b44fb224dc180765e6c333a116512ef5a8a1c1e791897e656076cdc167990534e903bec7cc1723db32b55863926e8e47295499e7ab82f4bf55920dafeb45ec299d56cd8436a1b8d74cd9121115f7f605e97fe1ed5aaf688930a412666934acc788713f225108211369c971fa0d8d21d52f5ddf91eb52e9f71b4f984b6f1dab1dac41ea3e9a8e92c81a40b61d4281f359929d3886f8e981bff5fc2aa7ee42d72037f9a641b304253527f1c09fbea51ba0fd2300be40b4607657544d2f0f752dd0af00f1b8a1bb24799ecb3954a88f708a80e12721f5df684fd7efbcd61007dd25c610e89c8df29c1bc3d51a15a90e9b7e92f195bc4580dc3d6bb3bc3cc7a6dd737429636ad8433e71390d66ca5a13f966ab5e589fed87753338288074f7dbbc0308e6089d549704c69d7d20e0ee244015a9cdb21f9270f340a72640cab37d8b4ae833c8f1d5b768881b8128d56077459fafd15bb657c4dd2867705e1c803f36d6caafd282a9500578f338234a8efbb5a21fe9e2efa85651d869d96942f061f41fb29b4d9e259a22ebb1ea93a0eca8ea2b609479fee090f4a1bb0f1ae8e5e5c1b3d70297bf0747195a2704c13f9ce7dbc3a65b5d5808f9a430eaffa0838e86657eb27db7d44105816d45afeebbd8863a43c0b8c7f711c1ee657100789a28a6c09117fee2791b8009e5734a76e12ac5ecbe2dab8428601cd05a7d2faaae7190d208dbdd57bce718e322234514394801f5366164edf08b7ccf7df5f054745c74584932ba20cb6db926da3fbc0c844d9496197317ccb43c918c9973f28bd9e212a342b483c0b4866f4db3af1a422069ded2254f086ce0ad547909899f186f8a58c2eb14ffc444796b66bbc6a650b21df575615d5cf203194434f62881434fddff8e755125da1ba59d65bf1a7dfcec287bef762df4f8012fa45aaa73bc9017c1aa1eb991ac3e96d6cacb6159d9572798c88fb599a1a7a0960ad51ceea1e90e69f213dd623924b6fcc873b5b8d1c57b9b834d72c7bc4e2f8c1795c7197a9b3d28a3b0ab7e00a12923e72c06575d48d5c0621f8a18fc618c40a85f9df9f35057926e93dbb11ab8aefe25081cd4532b51e86b42d907c3935d570c8cd9b216b9c3adf6d90b7eb09e45fd9d285a0ed266d1dd8ad7a69cc81c09ae2400edb2b8b5517c343c252ce6a1c02f6df43de346d5c603498b7ab8dc7d9038344e409c2b01d379208ca884a80c2bc8579e8fb66c84e4c03a9ee6e41530105365bf346ae3f04625fccdf28791960b3223f3d61cd7d2b3006885fda192adf1a3dece7e2236b3b88c0637a56a1b3e3d39809f5ecf99262bb0fc4a7ae888370bee352cee531fec43a8f9f85092f2a434ada4d466ce19af6804cf6a2ba1df2fff33b2c928a05d0432f398c528ef9fede0c043a1e27c61b78791bd63365b5592dbeeaef6dbefc8d4dc1a01a0503daf4e25072bee354f2d71e8176bf4d27f70c14a7042643a588c5a36e8dd48cdd91f6fd10e5f4b5a04283acd9ea6d441024ac4e3dfacbcb16e057ee57ac7e88630184508db4974dad80afeba421ee9d40359f319094ba551a82c1ecc420cace30ae1f5eca157b2d8f8df96c6af807616d4a4516b5011f417188df969da477b8b59976230c6f3a9a4d5cc19b9929a320606833fa46f158cb0cca1c51f3388eb2b4673c3060bc8be566bcf662ff84e8d278871c07dfc0cfc794cd302b75668711c6d4f5c81504ebf549f4c46152b821d925f23cd1a2b890c8e28bda1bfb0d9398d67c2ba23ddb8f97db2b271fa8a7997b6ef3623bb457c8e08502414fffc854aaa4f1bebb31fade0ff5a6afc2ff55ff826cd5eef8beb0689b3f96e3e81fdabca244215c400ae1c9a0e4cf0b98b65d0d87cc2f64976dd68ef88845440d9dadde6b9c0c4112298cce25e8110f0a12f97700518666d2f25779440aabb5a2dfe9e6f9e9cdd5dbaf3889b8b5834ed1ba9a632a50373bb682cd216323d0f6fbef0f93fc3aefce0f05390a57f46197c93c16e64533ba2abed774cbbb66cf868afbabccbef410d44156d961dac359ca40865854e0f72d5badaddd18481a47dac9d6154adf4ce0e4a51054142831a3e5986db05e53ad37fe5946a67a6ab99bdccf76c15647d05df65167d6676dc3eb47c629a73dd4fc30ec03e7470918730a6752741f2587df738212d294be5ff210768ad768710d9da6061958f31b92a98b977c8f0d4c892cdd03408cef6ef1abaaed4af6bcd56cde26fc7a687d2e64728531a229d751613f5b980814a7cba6cd65ce0aeb8e0c0620604773675be89a194e72bac8c566d3f33c430ead204ebbae2e645d7d068127598f8383abaf56319c7e038f9641b115f9348a0fdfba1493972bdc1e59308586933e70290b66ab812f15f5b6e281cd355480668df43127894387ae5f8f364c356b533e7f6760131fb767e9c89dcd627fdc5cc4067c143307640b87361329c36b936d005a1eb375de50e6dcaade4bf03abbcf0a6fca47b2f71e8bb61b3d568a8a5095582996f12dfcc8ad33895f64331ef2bb65fa749cad0f8a1d7708493391a5fc39bd64b78a133d21eaf6c9fdafc9d1d548cc37d6728d2135288dd3d8d416528580efc3703560a112096c443b79f0018b98fdb5906faaa69e390f2c6df7106aede17cd9316d47c087bc6f20c0cc838a8fceed1d044090f1bbb35e22f1973bf5c81966e770fe502b1dcd3e04d4199f7032665dc2d96e240775469b66301c536ec16445ef24a3c848a7bc96a2e762818616d994217b4823f1273a1b435a0b3b29150f8e104dafd4ecac38584e0bfe96c8b4957ebb98cfa478238ab2e0835613b51653bf406acd0599e65c15f475e5cabcd74599eba4c19b9b2dcfd29122317eb3a987a44a01cb71b2c4c535bdff97815f1f657c2b56ab80bcfef9cdb8967998c4c89efcca1a75ab2ee9729aaba989df738027e93f290d9b7fc2ddc55c9cb166d501f42292c4842930ab79ebaf14243d5fc0afa157dc8f9a859a8a12a8da86b854f66a936b8f9beeca9487f9170557ea11fc958010f24872b71b78295a58ebc490dbdd63cd115084b2e534ddb5e8b8a3e123be8aac330fa8a3ce7f4fae02be00c6fbdb0c5b624a9be20e27becb4b375ba4797ef57d29df8981aea79f572703f23534b81b789f70e26b37036c9b5e5736cc16165bb6a44ffbcaadbc30fafdac01f376e7a7606a23e76ebb3033747a06e4bf657397523716cd012fbd63f81af48dec47afa55e688a10f7a76b973c97faab2ca54a07d2b89bd0218c13a582fc3fbf2c422470bcc2f007d84027dec0d4a2d9996b7c23c5c4a0197592a02a97839fe12793782406a53120e87ac09282f3a764171eccb20438f21ffc0296780672d144737d9aa804c2348ef281806e60d9fcf87b7ae60b90b92db35f0f21b7a0f1dce437d422779ece7a8484346f4e31137fc0480eb821a62d96f26ee2e422670e3a5d3b83938a7303ba8348a5f520584c2790f3be1354aa40f8ba7f184522fc378ae86708e6019b9d8a72fb9a50f569d8c95a0a41a93ecbe09e3ca44280c993c1e06e52f36958625f234e270fd3963a2d670b5da44b002fc257ab8c649ad755659be45b6bf34a4f0b2686b7b2f85d07640c291dc587b49ddb873a1876177679bdca7bb1a859c4eeed7b552b66482103bc43e6acd88a1940e74fd70ce6854562cc2a6a9d7a456b2c5142aaa2c006703918157ea9e6589c0de5c0522914d980ad73ab4550c14fab0708c76e428db8809a7c960097495345f29820eec9d593416dfd883989f26f537ce89445754a757d04930cf175320f3f8a083e7ba3f1c22ec794f4954999ba235e49900a5eab09184a2c9b5775237cf18dffd582ada5c720cbc94c7c0ed16fe4b78823ab6915ea8f89b88528e6755aebae8d07233022f2839d10e6a9e1cd59e0f7877b274e23f593a2ceff228fd40114b385d8970e0cec83004163a3f0537bdcd42bd4ceec2406aa3ca88d8982bd77df10fdc99fd3fbf249de199ec23f3c0ee75fddd4087e9b57069ba3f455a107d67e2cd27c2eb9fde2d7b5b71fe97cf6d197280afd3d25beb5fc6dc3bbca095701479b21661fe112114ab31f29d9eb02aa9bb2a320b18bf88075ed2c3c84c9aaafc77fcf93da38aff589cbba4b77e4768ca5bc9ef45b69688010cbaa416b4dcfbe4c2603811d0e3ca7bb6ad49176617bc01e0273ab20f36084dff52a3b2b34eadac386a7fa592f9624f0231d3731acd06c30329fa1e2fde6d8e2bc3ffb0d5af3744036ea135d8e8d6fe65729f1af48457600d0241a58463688b1989e085f2f3509989fc02a30c06777e5f7f0c721e341ae3b91070ba7b53d6df7c7a27eb8accfb5d00f60fc65615cd3f8604e7e46263d514799d1f91eab2016b3f5c97ddb8236215c40c5c9455a184d1acb848a8d1047d5b3a00fe8a14bb3765d53342cf675b1b0588e2f8c863a3b3b12efb59eeb938008cbb1d24f8e97036b65ec2b46792edc0e53fb9f398c68dcab18556ac1a80a9e7f53a430303c90cd09a97b973edf2b260242695e1959ac025f81350ff6a8516b54e3ebc1295f0604c7d6b687ef06f05393b6407628a5b22a91fcf37375f12644345c9d22abdfc24f66e0d6acda03ecfa837ad5378ecd80c49536054c766cc19abe6ac9762dfd9b88bde91fdcf985310715176bb4208e76b641e07db1852d757433236be080cbb03e475d4e921f3b6e3b1dfeaf43f9b666d7256aa19e6fb89dec7115330a295d753485101a6ce7cb40a76f4fe3011950847599fc8573b70cf6ae467268a1c92c72e032a273ac3656893592749e4c1ddd5dd094764a75a077fc7c0a1cf3d6a29799ed477cbbb84c87f11fc40c694704b3e49c5b7d6a4cc66efeac90bc62de1d7bdeb9ca23f59b63b78a7654e3d25901928a83f7e6738445f5eea8653a7073694747d772c0e481e0a80a9c48eaccae61f5d3a18209c00c744d386d5d2708522619118f1b06183e14cde1ca52735fb580cb590642b9dab929f94f0d720266bb23ac965906ea16c88b30208b1821a9a0cc87193890ffefc4984af22df26629f42b399766edcd5bb9f070e03fc94a47e7dac01eae97d4f048b6079187ff8297c6e0902917e60a3ece795eba9904cce5c58ccc0556dd651ec532e2ae695d6f6cfea70520831306ad6aeb2a9121117bb9b9430c93109bb352a002c697358f42b9eea7f6e1f6283975142848ebb362bf150726db9e30ea8eaca0764024df46f94ce9d30dc86cbcd8cbf45058e4ff700223357350e200be423c73e481fc72238e0fca0883d81a6902095a76d1b307def4f88ee847c53bae71ed27dfbb1d8bbfda876e39f658e6c19ccb38d836b5a3ece104a235622a9491f231b1ffdd3adc0f1c7e35abb20bea13533da3b609d900478bb1c480ef592de8b5e06a3df3efab11344e85426d16f5f856d055b2d3671d1547bb8bfbf5982016fe528cd6a1a550c9020647dfcf8009bad19b2ebdec0a4c635a785187c6adfa6d7409b9c88f70ba9070dd68c963f1de812f6faf9ade20b7d8c9a2b769d18f3a0be50975d9ad2eebb503ef592dadcf5e5faecf7df0877dd9bd1ade1f11adc4d77cabb5a72eaba277691b5990a8893a2718db56e4e660d80153be4831e98078b73f1a101c77135409fd291905e623520ccbe55351598355d37621e6573f46343909674b04a3d988df718803b64a0e2d9462f824d79658c8c69c9a9340379130ace1e5f9732c51c34957bd3323b256707ad7f878abb20e89a613b08760cfd3a7d50e9d70e1efd7cd2ef95032d23aa5ea2b43618da86437f8139c70106ff54c376ece7bbfab94b28386de88d6cc22b8c24bc21787cc793216014fd862e6aa1552a1e0bd229085dd34e197a49b1eb4cec130277038b9d445e637d47bd28539fe0591e245f83479d4b8dedd75ba5a41d502657cc10135fe84afd0e8f3b5d0772dd6d178f812a08a9202b5ff6dd9133264d7295739fdaa45ea8fbc35c3918d1db43bea4962bdc0e14c4eaea17a8e641fe403eef9d651a77143404076b0e047288670dac832dce3eba9cfa8cb4b3f6a00698cda46b85c5d00d45972eecef5ce4f8c8590cf55683f24771d9347dd25c566162c4982225b22f8cee8be31af01b58abf687109b6e76b6c1f76f64f5d601bcb1e3949e5f062f2470a9964397239d3a2806cd62df2a2e3f4635e6a8ecafc96e9af271c0053c2e9b78d54f7cab87bc3d99d158c0a8f1588b5190a1c6ae3e1612e5e16baec0453ca69dfbddf2ea994639db871525e707d1d76ed744fa640502e32e1ce4c516be87be92f8ad836856f594cfdfb5e83a27dcb66700fd850b577b346336eb2323dc387cdc76171948a19890a5f22d9e9be7f9e48ef6aa0004e4628136677fe96a5e09ae758978e7f1777a0a5c9d15e6275de0526d65c26648927cb40be6cf7f7060e090515b9e7ac4df18d89fb0b7f3804eb569ba2a8fa1fa4e35c37e82a9785cae5483facb88794ad2f02c5f96d401da98e47afa65d43fd1130a1e9572a8d38e53c71dc94294d086426f71d50ba9ae154a0763b1ebc3a687ecbe3b1257bbcb4fc13c4bf3edf6e1a445f28368feef9002c06e3e458a3ad3eee306f3efac7bafb55d2216a1407f153a76892bfba27bffb9d6171a4fa407deedc06178edbec52eff76b8f8a6bb4313baec2fac0999dbf811d5468df94f720e46e70aefcecb602a4ab17b91ec7b65f2a9b7866ea1a49c26cc361f60f1a391f491350905f74327e83c4646c230d7dfe7541d1a1f93e5e058b6616a9fded5f99122f5c1732b6842b3fdad31bd591ba65e3c226bb2e3b9eb939f258f6859467bf5fab9f27d27aafa592de905b801a7d416f150387d0c5aa82cf05c8b6f440c4562881a1a3cc4ec439d6389067e2396510640b141cc1beeff9d62692a4ecc77e383b9cf7f539d0fd6c61d11b9d19a8bca6c0d7665522a66c2a19107be0dfb528d38caf7a8a2a9bed72bd36d0fe257838acee48a0510a93a31778e7a66f188c32a8d5d4a95423a76db7a74625b2f94c4f1cc93394f3479c3733996453b85066accd80110e46aa274c5ae404e18219f02dc6f2c8b36237e550e75f32de08dc8a7f6cea1a97dce241b9ade0893e5ccdeb7ecf7cce478aa6c0b0103815570f5fa7bd42eef3fb903a2956b7253326d3e00a6c2dddf7509ac99b7c7f30a0636118bcb821c63d2366257565b29a7f8f9df3df7a2c35d635853fa32a78e58269f7b8f7346e38567861eac1048d974108135ab627ece71a1b812654a7333bbacbabcc052ca3169ddb0b80ee876ac71068b48d8e6ce08026e08a406bbf5fe82d86bfb29147ce0b7b8df178890621db25eaa22d08b450ea1d3fe027e4159ad0849a5726006f10bb030d25003fecbc0b0a43238f5b12d8f3ff7c8493fa71fa2e3a90fa56a182202e4d64bbe559e5f96cc4ca21dec400e728756bc0ab5ffd87903dc11591dda4c693d6c54cbba9d0cb0f6f7fabcd024241f7533b9c6e151fbe9ea74b78761e40604e98af76006078d9f45d7772d8ca087e2513c46924a2fb10ba4d48d7c6764e60529701595fb6b3fece41554d1155f38899a4713ae48d4760643e554ab84a46cbd415971bf96f3bc795f073b58361f1216f72ff66285c05897b709acddf7a75bb49bbfa65c287ebf8e7bdca492459b45b5e7884087373fcd6432f2ec1a9d382dfb24dbfe5ef9d64073e8dfe4c516cdb1d72b3197f02a53288420d266962c343f63dd6dfca72f6ffa0ec07af22e3d0a7a50e6291ee95467654e867b06ece981258334b4b4b851ad11ff7a0d2d7cc81a70148ce4abd411013e20bc6495c53cc576d34196920476f0019b250df974c226f94889c2b165430204f349b8022b0150733ca25f5076a5322d335329137ace62d9887d82c69494772acb339c196455067bc43250b41ee954ec9a06c5bab91a4a0968f3ab7e8d03d207c91fd52efee6f9aade45d9a12ef57a4292a12f38edf6cabef145f3f0ce126b63a45fa06496a0801c16332c4447fab965504dfee9d2551ab579cea2f0edc9fa5d140b517245129c344b90dd9a49581d6650f022a3ca1366454f1d3346fc4603f224bb760e6a0907e993d8ac08409b9eea35b5973efcdd848c3ac4e687081ee8582aafe6354d37558b517ee9a389f60af0d7ccc15e2855dbd540b10b79a33a175381f9c8a1d876f77a1fb565399247e55d6a8aef162b21cdf0914e80e389970f203ae04ad4fb83538fb382fab859decf4e5b15232628c7d4ebb0ee98fd8823868933ae236e08842467519c6005c80230a54c13a26f76c0b72954a9705ce57674e0cf26c292699931f558f25b48502f941f2ed8d63dc2d24ac9734db62b1aa482c868597d65ff00d71f4337f96e774b175c29dbd2def19e20614beafd8dcdd5d6f8f34986e2a7546273f96ca4170b0ed917ab88404b26d23ec3413c764eed77661a7a798600cf6b00539d96e8f92924a9f05aaaa5fcb67d19973a19f624bc87cd0c29a961eedc1771477a211a6c189c36b013534de84e9c824206ec3be98fb2086ca57bf0b98d07d3ba258e53ff6312a644215ec9a4ba70607dfbc2be942c0e1811b01d03b3e7b4deff9b110dc2f0145054d726deb33e9f86728060389f85a170405ac4431f4c4f5eacc920987ec0367ecde211a8a72db1888c53d3f412d0bfbdc4e4b60f730331890023cfdc6b4a992f762baa60ee16e2dfb5869ce8a971fda1ead6957cc5036a9ac94c99f028ea179157d7526a47fc9d9a6d3864fc6b31ae74650b4270f132225141001fd6988c6eb5d86e2c01eee4659cdfdc2912c3ee75a2c5755e64b1db63bb017702402341c87cb06697beef5088bc6f4ff5332bd1cd889561e8f107836346bdfdacaf526dbba773d9bc0effc17af6ba6abfe48f65342c1d7829eab0e148c9cb1fa3ab6778d6f8a9d588fc5931377a456e651a3758b7b8ed66200153025926e6c8c2fc9453be6264dc07b3ceb724cf61df941ca089cb9b943a51d09126e000a00af705931a7a07fa7f3eb305b55ee70671c7c5b44bd657e84a212cd4c79d632f4914ec1df9a64e3baa83a96dce2c8d5728e4d40fd19b847f05e582a5a40f667e173534f7943ac05c88ca9878e3ca861d2f9e608d174819855956aef1da44585f5f0c6762d9e15fdc9764dbf31fda832f02b36dd9fdcd46f729134aa5975565e71a1dc76aaf4a272e7695e6aad4988de861bd0a1087183407eda4e60350dd7c52b08a844a769de44006895158a71b56f243fa584f5369c9d9fad57c0be754dfc0dd12f2d5d95327228148257791fc7a9af337a2210fd61127448f0a66322df8e945f3a3608320a76242502f2c9193628ddb25edb495069388c0329d97a38274552adadbd69d88864efa7445ff2927fa4bad99cb95280d002ed3c6685ba675ddb6c789c3847cceef8381203220e0a117325bfda8324b4c3618e120873bf524fec1cc25a3ce9d8f97ae324dabb5bbb9f10535a6830780ebfd5dcec5ec88a87ee9c309d332d9d3dd5d7849eecdfbaa0cd6b4cb9f3f44fe2404639d9b6f5fe077551894c9a0735aa6a8be7bd395333023e7169871d9b6bf7dd7378b483a3646262f29db1f0b9854b26ff8b9451ef6f967b42dce3a797d3dee9a96325f878e859d30df60a3d6ee6e77fd3212951673c33526a2888399f535725e83567912f191ff66fb10269f4b60bdb21126a50c20d0e7e53a53eef18f9c1249921e461af6d189da3000de436d6459024f7efabf9788cd240fea835dc9aa6600ec99f24dfbb3a322aa816c3442a7431db1f90d4ccb6a43a08b256a51c4b482267c771636abff18c208483b7051d205b310cbf8ea726ce34dc962bdb43e849be3b27103aff99986c74007d771d1aeba4e6f6c2cb6aca81ac81511687be9062cf62ebe97f6c4e8299c49e9071dd140b83f646b68603c84a536ade162b6f2622636a86d162984692ee83759ee564ffd62a871c5a4ffeea66db4d0e95448ed2c54aeb6277bc7ecc64cdfdad17bd385463cc76cab86cb11ff7b5060307da3c7e1c02b15ab4ac459107bf68048dbcad912eb3765798c12af8bf36a9b6e7a6f35a7bdecc40a442fe2a42434a4c8de878b7dd1f44febcdcc92b7a3f0673fd5f4659c2770f58903ed68d6e100dead3379bcb08edf6acfbde5114b3d40c58f0c927b2707d0fdba9365798e145d159c7eca65517518e851c214a2f3d3ec8d9309cf85fc969d97694a8ce8ae3522ca547300ee32c4fdc5f8dc3b79f30950a3f2e6a30a107c59fc8c0c121883894c4f1ccc7c38725a9b045e49195aa7be12d24dd0c5d7aa3ea47e796e81e1a39ea72f1d500f855a264acf531e4f23b0329b8f88d468a31a6827bdc7050d6ab7ac9da70a62b25e72535776324684d5f53121980139be0d20e21fb226522a20c088837cc553ff0d9405d2834f9fb8cc8dffc295139966fac46bd4a2be1044ef129e973752d819b4cced894444005044dd4b093598afaa4d1a5f374db130c3d72bf297f725749ea6740e2dc206eedf9687508bf576792e79907438e0b285d848c260f39dbdc3e5ed1fc24038d3eae90b61035805e6d9d291f6fb8d5074f0eb09eb4ba3c60f4a4a739c92e90ffe697497b7d813e562c140cc2bbbacc109b0d4fecbe4348c0a093fbcf47f2442219bb081c2db4f47b2d3c59a66de863dba9187220335afd539f35c4c8836ca755d5a039a2cb7208dc494632317a3967111f0f01c4bf733d81a665c8dd8dbfc42a0d3aa33e7049a1dd50f1488e30d7a7cdee2929c98c457249f44479cc2854dce815318cbf5d37dab5fe6ae32d2e5cfe2178e12d02848ca9bb2ca58dd685d4c709eb060c1d53e3e2f142e93541636e24916f8c95aa2966897e885f743f1112dcbc40a6c8f26bd9e7efd6b5d24027e59096990102da04bcc84b53f36fd24e28af646656ebfc9074636424a68e675dedf51c55c6041498830570ba055f5ac66ea817f937cb9d78554bd77b393d34a9ddbc04f693e5bbe9d4884deb9c4e2a000c7f1f66b5a65b378968239bd714eab2acdfa3ef3da1989c19c7da8130f496913bd47d3d91c86060c10af983e960107c3bcc41cf425e5798d6302047e916783999e661547ca0fab53f315ca2c664f2c3e5919b0692330742d236bb3faac0ac0c03f4b3b75daa1c6a57362343b0f71f7c0a76628650659e44993a5f0abdc894b2e43f8e6eb67adceea5047a5a556fe94c7e30ba28a62a73e9a382508e3beb94b1fddbbf0ccbe9f35665df619a98e3e8291a7dbcebdda6c2009e2fe8f9902997cbf4414a157d2240467ad12bd992b377f6d763f4fb62ff2c5a939e1511aca1886a4a84e52cfe4c45721fe901c80b79353a2f95e38e645f34cd029ad8cbbc62da1c7c5d7c1cc7a8a8b250805df9e24486e5a37c7e8d2a49c3d1193ac744970701226bacaba37c2cb4a157f48f3723141026b937ad0e65cca4a89a5a8bf71508f70658fd471bac2dd6cc1b593c2bbaea3e4bba73cda1001809142f1b634f15c4b8520597d6e78925207518e7d9510ee6c0ba0b512f69496504a029f5a085e243c642d32312bc1b63c9df191d3444ede609f5f5ce960467690f7bf78f27d0378ba597e67669ab785eaa3624d1ec4c8c27d0a91cefbd4b7b5185dec4a3f2df1f256071ac1d800c096cc3f825b6f44e952f90dc13b4cfd8edcc260716e88faf5a40023c4d66ac2bf0c1b4fa572e14fc791d0819c55aed62aed097bd56429fa11d4d1eace04377cd091d44f76c9c685b8729bbb796b2ace8778ddf6ea22658ef488e48cb7401218125d6deaff2c7df9f739c7032874494aa5e8aecd4466304676c799a143a051cc369e30f9d8653bd4e6030b388ae0da2f532f40c2fc35d807a351230a166fd8fef0815092fc0b519b68af853b4d7edc6bd82f9740a461ebe9d20a7ac64a2b0d504b2d7249ef29f60b32479e22d248f6608447abd9aeb6443f58776b3790e54fb3567ea574b2840d0c90f8e3881eb77da26726961a23e6aa95469cc6d7e39b9454da4c0c3b0f955fe88741cf0f1482ceec027fe43ebbdda1e8d7d1a090193dea9defebc29e221a451437050ea2f09c163afff38244f6813e40b7b6537fc2f6d524aaa0b6e9df2e284145355c71bea056da6c6512f5091a3cfc89d23ac63f2761e8f89a71eeb09fa2838280c709b5e7936b0c7586e41809eca84ce51a1c0655821edb8ffe74eebf11fb08241907e488c5a773db652ff9b555258031655dee2f92058b9c619885ec0223bc84815735a586a61b2392f3825aaf991b3be8786cccb17baa7af2de2b5cc3c9b74b0b30914d06979591abd44c143e4e47850fc4df7c1b4052a413b155ecb4d2c0ff861ca899b522aaaa09890579f4ee7371cff708e42d918fc7082b6595a89cacccdd9586b498fc9c830c192031803e16909dbbf07751d6f466ee4388a9af608185f1ca9f93783f185141c561dc2e6e96159639bf89d4ca428dc677de8dbf1b779b4ec43df9d02acfeb2f0919a2e6b58a7a96c01de3ce3c621c1b5f30e55aabb9be6519b1c67d46c27db6a524af31d80bfe44da92971957a409b9d4ab7c8a3326037156f7a2e35dccb651a31ad2219c000a2653026c4c8ea445c90b00dee35ec46bf484134785871cdba731d6cb492e1482e955684d5198d1e8c24a4fb6a0a2f9b6cbcdacc76dfdcaab44fb5af3d4bc6b018c24aa390d4b36f739554cc31a4cf238789df3e0f65439af46a2dda3e206797a75507e6807cf000fb3f92cc1dd5964fc88b73fb85f447c0f8e2c965ba7d229e0bbabea79349464ee0254fc8bc45f8175ddfee683a8fe64d2dbee6e9bee55a707fe457a116a52c98fa6daf874df01814d46aa2d31aaa1e8fc06390880c6c6570c4c8fad109ae61228fe2a9ad1da525760f52ac0207ac6d343920ac46043ec8a395ddac3cecb88c8a1e71389a9b88f9eccf82dce22b741961ada4b0109e16c978bba2fd0c03c8b060a8ac1832a39014a4522ba9f97ed14a480082ee6d38c74b3f6418c3f4ba196f6b1d4a1caec60ae2dbc93e3392e409f862bbb46824b3b7006f4644e6d42b9b19429ca509d496144fd42cf25ad637539f88ef153d4f6c5fe314dbaf3f03f76f95261f3a0c3b3823b103f944e445605dd17409e69ca965cc0802b0e683bfb06c0d49752db57de57dfcd30372ab3ddcc68b83ac4a55100e21be956af93fa9c59e74dfbcc28b7b58c04a60697fe980aca563ae75c9e77be913f73c9500e64855c1d8ba16e52d0c7759b1ecf9b388f65800801400d132f5976b0c01bb91e9fdcaca8444f7a300c6090e68124518890cdb566497a330aa468a88cabfa54cece3165ff30c4caf70bab5753fda86fe747396168b562d9c1f6c09dacfe6cc50fa80485a9156a8dec249ec7a673f4877e5232d25d013412b1b0314683bcc23c2d64ef5495046ceab747006dd85d479dc16e0e75dabca29dbc33dfb4babfe7f4d587145f108a435b42c304bb21c852c468da3a0083b049f0b581a97318b26c19dd52bb9c7ad54a43a3bf632df40add115c9b298691eb26b0036e15fdbb252bde3a1e7b9754df887a5aa21d4a1a001196d0b3d6833209af261742bb99f54cab55499ddd15be55583fedf0a0707da0118b42ac24110b19c43bc0af440e63bbec1aabdb4f50c047f8d74cb2e7a7521ef631677ae171b3260d4ff897503af5b732da1e2a7a3cd3bd513d8a85fa12338812c01afdece660f2bf6ff64d60a0badc0457b6a04bc19655bcb20501d259cb2d332a903fe8c75aaf6d1f4c8e5df9f5dfa687d1214df1fb1fc40e7157739408f45ad852df05dc114050bfb056b37254ea47f70cfc3cc428cb3c3eb3b190ec21c45c6d090b9df379a83279387c935ebe0853021ba99ba9850baf68ef1675baa30426909729760b61b0486215dfb685218f93ce10bccd46cc82f3557e4c9ead3ad407e733a3adf9539d7f56c5224d750058f73052b8b27bd80d9f36e6084daee5ac58996cc53a91a4e91ff21983f46ef85639067c7d0fdbcebed782301cb47fe0817e4bce8ebe80338448a50fca92fcb53ba33e306465b5253109567f1e4fbda090e6075a12c4d01f537d1edb28aa89862bfd0dbc11297989be88351bc89b3aff6eb4613e0981f390c2c8d50ae5ce69a8e8417b4cfa7455cd500be9aadd7997bc6f5032ff9de82c2c86bcbb5871aed2c9b96e65763d68fa3a0d25021c2859a9334cab72251b94c29443f2cbdf7ce623a81c341b077c6cd215f2e45692833411e77ae308d108fe8ef408329ebde8b7ac60dec24324c9ebcc33666b71651f6f597454b72d1e8c6f409d5719528de096766d0fa4a52f1eced25e4e687748f8d894f2f940c98e8fdd860e4e5b8407f72cbc4595a2a08e529201d5d28f6f049d32de841d3fe4a6094674f6ba35763ed162f1dca847951bfdb072e43200b9cba5729dbff12c999d642b928996e68a53d158fc3af8687afee37b11526a073af3f42cff3a6609bf60ca9d5afbafb7d7e472ec79b358f95a7844d0a4196494e033cdc86d0c6a047191409689df401b54a0d4eb1a0a1e72742120d565207027c968767f86527f0b77d70a0b31ecefa7ac9b488895e23ecf58d94bf40a1821035097022c77bffca30e14e5137538b58a8a00f8e5a77f2dfb91971be0eb8294f0024499b9a2c7b7493c8c88df4d1573d38d7b3d5f422bdb6a27b827ee6d5881aad508db59b6892582afa38b7192141fd5e5aa40539a7662d93cd3440876cb9e89b1b8e02f4732f624601a063e43e01f5df7889554ce415ccaa2bb2f6d5a254b274b8b44f5065a57f19ad183bec1a997f4a6779f0a3cb93abce371f388ad33597657c528ce1a976cfc7905c5fab19bb1435bd5097b2e2f9170996e748ed0c0d6927620169d97e6b2f9e83588f059305daa4f89a056ac1b06aa0711a940d91c10551889452ea79f827ba1fd178c3570d318ff80adbaf97beb5b6f5d6220159a4abf5b098aae401f56d344517ea7323380cca80830b5ca6651a1dd3c8e4d18d72b125c0645f25d2a1740c97ccd5e82d6714cfb8af1755c312e5c6c0b4db760d284cac42ba452c7bffc9a8fcb75a929d71e96cae2b90e4d79bc8f1f6147ccdeaa14c50e5f5d55ae07437bd20aa414e106f07e1d03ca56c60ced2a9b2c5d4deed10fff0facf2e8eb8c5e0ccf171a3de17d21adc731ac53df04df4c8b4c14fdc0f3c9613f7ac7f010f59db4b23e1a81eb652cda150c68a69adc235f3c2ee1d28ff92ccd8f87d3ca8c6cff798ade09638e5a855cc01757f16d057f45925fa9f6d9f10a5dd3931bdf90eebb7a54a9598941217543b89867006268abf412a455e4687ed753d9db22afaf1c2aa27fa93f9f39ec4c55cc90e5cb79246b25fa2e161288122a7c62a7cdb26c94ca99b7e26c2305be8184e0cee35c589586124629e00630bbbce768bb681cec731ad38df9fe76514c3ab4a7c7907f99428b9f3c4236ebfd8f7147e8de9cc476df53b2de7c082d8066a407caab32bc0d2ca641a2420a4f24f410a5da23c616b146ca027a62cbed65f612f890a15aa9c735d980a6584736e0bea582b614746b067816c36efec6ee5c606632b74e4f17d3eb7580b6ad0d04759c1fcb803722f4ce64efd83d8068901d2cb65b2a51f78d70c669a0e9c6fadd8bd75ea06e8e53fc36582fb4c3e1fe26e91400d92bcf3f9b84afdd1d36a25f07b6dc75087100e2c658a1412b73e2ff48903ee8b06bdc565227bb4cfd5c5895e42d48addb0a3a7da4f524f55dabd4892569d00f46511cbac4bb45500c4a09589c7117bb0b36a62e7b18c241465e26ac111c7c274ee0432ff9e1e7c6d70763f0f5e75dce5895311a9315cd40dbf966627e15ee7dcbf46da34b27822172dc327c3a209efe230f06a9d8fbae345760bd3c1d633a42b366b9d64a29381808c8a5590260531ce93f9595cd5f162f00c3212d7e3899c3a0a6b27ecd2d43e8a5ace0226475a71dd92c5dd74a4208430f5436553029b9bca74225f6a37b5eaf36b1979c17e29b2639ed57ad582bc81a3a4391104d0141f7d0fd15e6efe43cf1e94f8fda66b4adbc88f4a3ba2540cd5f12e5393621395b184569bfcdca8a20eeca97ccf1b90c73cd5c56a3f9a8dacbce0c395e5e1253215167d09e34e588511d005ba30f3535de1fa0c1fde6e060b139ec245d3ef0bf53de4bd8739e964b645754c4c86002102b186877755aeccec7440d16e5d1c175a1c3170e4dc7219942c88aacf82008c5963e39c250b24b6e9b7b58c602f194bd1373df1d627a8ca90b986df6363cb5b3f4258f2ff5cd0faebb099f22e238362401920e1744b0f5daf00ad962e3ce2e843bced927e01da9ab34aaf9b2ed6a73c7e855349ba37cfb20b355996d954a9bf25c761b741f81ae055ecf53a7d4db9b1d9877b0208144b6952f7803f1195e1a75e1256128a0a2bddb82f959a79aa2147914c3516a34784c445f411b00701333498092220bfdb096617e8187d45efe8015bcbf6e8331285a43ad3579cf145dac432a7f2bcea89caa08278b75e48d35ea1de4149af44b455e79b74c19c8756cb78bd16222f3adee2f65e7a9c0faea77ae0397ee810c5273ea865809f3e8617dbe08127f1e6800d00e2e1b37185e54ba3f87bf990e38b685663aa44b69f301cc268f98e0c70b30883c9975ea00f2232d1842ac28696cf4ca7220fe4bcbdcb720a5252fb87746c5d06e8e0bd044fda733c10bd361f3faced5d804fd423ec1e813acdf1f5383c6aa68ffa6f050eef49f608102290d735a29fd377b6acbc13f7f0ce35ea959bc6108c4e4dcc8f8423ee9ea2c3393cc2da167b6cb5a6441d79a7acd5b58902ab78e2540b94d364705b0d98bb7b56085567d0748e531522d8c783eb3b9ecdc5575b0c06a7de3310da6e2ca51e14c31be2aa7b0633b90d38e409654e2191e8ee8512db134fe4f1c75fca9687c7003cc2452e2867d59c2cf5cd032a0cc233c004bd0741a246d2e2e2d8c0db72f32a71069382cb53bf0422a28b27322eca7d71c8f3be555567c5349f81384e911bff871cc96dbd67f67b35100ff1e3dc23e4c9c721efd1b1bb17e538695e85980b79979cdb3f38054c99bf97ee0826bc928dcbbf80c3930dd5b54a501ce8dd6d86af2e8d97d9decd5164af66bffae857ae772dcfa79d1c10bfc18aa0c5b0f4da2a5dcc3d2fd633ab341a041ffba59ba00df3d978eacb14c3b2e321063f2c2d528a2865f176d71e67c05256c58ad1b277b5257076a5eac432ebca5ed5cc3f2fc3a3f9e3581c2c6cd40d8c4dff5073284c1c53c25a63129a9e3d8be5807d8d667f347fa1dd62e64d879db127a24d4efac6548157040388a93957b62d906724812e9122f1bb2e01d51de14936913483a88731b3e9df495f267bc24902e63fd5f2d2f80c98ed68607c18759360ec9190b8f07357e8fa8b63ecfe15cd0457022071de938d4de405519f428d019e8ed508330458bdf5e553a5f9f5ee452790a6cc7a5691233d1439acfdaa55357ddcdff527500f576767343fef2699f9324d1bc6ca0814ac8a4e9fe83a2c4ac8a0e2e97a23ebfc52c9fd2d3f947e864e40df01bce5cfe1b7c7eb69335f85c6f93bc4e2c6be80c49c5a3252255230f8814103e46493e706d97ec6d422580251989a799cd2106e7ea78bbb8e13b7667b507a08def75f51dfccaa0571b275b4614d98de61b736eea27a856fca9df6831b220147f799174938c33db70e01e93aa8c82811d0a3d3567e5ba006be2465f26bc542e6a2084fc97ba79b3a4fb74e1b1226d01f0d968a644015edad32c9fd84cb467df322c0de1f183d1d7b2a151faa13502908b60b8597f851ae699050dd6783fb45c8c7395e92951490faf0633d83f50d61051ec9f19f11afd847e6c6c7a0a36a02c145a3b0120cdbb3ab94f16b9228e4b82eb9b27fda1d389862d645a21fbf5770439b9d7603eb49bc9c42c9d2abe2ea0666cc74e5dc06bbcbb20f0bf65ee9d51e154127980c4509d47197147eb485453496bc5e5b12f2f884b23ff4739497f3f0019fd2c0ff112b96aff86fde5a93f3be4197681f686c0f8acfa5896a7147429ed2feceddcc188294d5dc83485f2f4a3861aed2f109af95d7adb2fb52730d3732937717a48673fbd2480ce4726c7283c6916130972e0fd21a3a5ddb45c46c238e298b500a77df4d490e258dfa7f0f77a2936ef85af4ea1b368c17e080ab1a50e43b707acb434bc66555eb57e0e20dbe991863e6884da5f6c1998dc1e68d8f953c6742a3e72255b588d2306107b299398ee20992f0fc82b286b897067e7e87a8f1c592311f1fab0585e95cb4b7f62c33f631eda269a27a6803f10aaef15ed43234c612357c6c7fcf25a8df7d1e4f93125b8448ef4bd749f6ec2051c10d9023bb88505368c9cc8251a69019aaca268af4daa203a7f45a6138a6edf23344329950443ed233140417943634821c307fff42a4009164444f7a1fcc867dee2df662e91420d00f315dab1f7c9d179a294831ce8069c99e2185e667ae386e86027da4657954a817373e759b108b601970482fcc47001f80f4d8eda8cdce0df021495f32446ea57e01cdf6ddfe798b6925968192678dc1982b9fca2a61c6656a8c3e389a1feb8bdbada305f5488074094d9ff5d3611d8e3ab5201772d350b90069b33cec043a55ed219543ef61f79b964fc2d3aa4cefe38e8927beb743262c40821009c3c311d59081813bbdb2f657737876ffbd4fb3b89f1f9bc0940328812bc501f3e08117431cba3a9454189eca227804c45d2a19869ef52c620119d31a0ac536194834d5e23afb780b5c64306760e3ce4f8baeaeeaac0b158f67c182a76a37b37a6f280044b036df2a0bdafd0f28b22a207c400e184c67de8cf0e982239576af77b87c0fd51fa40fe994b31e17bbbfc7df505b5d686192434866b4f21ab300095e92a622c2123ed0a8689bfdab2d4ca979650b1bb56f1a1bd2f8f8765528f742e30beb375afb453f48d133b27f2f7dae62d6723e493e0e54ddf8bfbc55f1a116aeece8b274e2ba1732fe902baa91d9aa5b9546a588a785025020cacb5660e99351d30c3391c0e605a34eba2a1a83cd0e2eae51d2a6b2177c39520929b13cdbd15b3e1bbaab41d40b95cb2e0d1a9c2920252af0fb066d6284bfd324c9d11b2b2f5ad9ac22ffd7d2f502195d67b398a1c24557956a1f318689d4dff5d22cc6af22f5e0ace62f8ff4de75cb2b6ffb104dd086164527fa29aaf0c81f0c32d69de19b85f3da35990691c50efb7036929529028c3a1bfaaceb757209032af9a9475ef3c52d485cb656c42f7e217ab5de559668a5eec3b862ea95879c28c6942e4b696b8005e078e26aecdf9bcc89a5d1dcd773159400e5cf723ce5300d8bcd9af868405deedd83e8852c999073522b3980958cdf81269b2c889d09cff8d89aa9a7664932774ea51d3decf3c3c87d51efd55c3ca199a0d00db574d87fb73ec5254d9028763896dbff325642003727536de11be637b26be2b76d7b477a0006595778b80bb99eeff1923fda847ed461b68db3a80e356f9973c41bf61aaa8fa9e8bc04d5fc4456e2c6f581aa6eccfaae3687e53a35633ad09b354c28b2a1dd569fba2f81c247dfd0e2e90b3e7abede897f6aafed3bddbac86550c2dbe348126f23294d7a50289c6d5e4775d20de0f7ddb6ac5941607a53d19dd862ddeada460c49ee0821c8e97d3f1997aae3af13c38bd788709cc390e84af087047d62056c769409fffe08be4c23404db7b64b5570e8db416fc383506b2b58da3312533a31ad8cbe763ad1296dc9235e21d185d0573cb88f906563396f7cdd89e1744e871ae3ddc638236e5cec335f27a98020bda64425c11090026d5cdca353c4819c838aff4bb6cbacfc9c903a4ee7e55170b390b03a5c753aa7dfa7fb48e0ef9a7727e61b75fadcea39efa409d43c4498e06a76a6d9475db995a9d82093e9c323599e200764204098e35139a0716961ec8714df3de7c7f34bf9fa07a36ff7df065666edc3f249b994a8389b52ac4f9ba8ccc3d50357d65f905c74f774414e39318b4e8f08fdfcba5fa923dc47c467f26b1997387805a3700ab2e5cf937fe8c9139a26bbc062b65aa1887656fbba240898a192cb90624457a4ecb51895a395902335314d8adaea02a40bf142bda98319d7355f6d35ece2742828757e266898c359bcaba037945fd4d44a6b9b3168bf5292285fa0c378e923c7615b8d81575e28b3e9fc3050ab043c4572b7b9cf8262be7942cbb68b5104ea96c0b59afaa92a7cb28d5ccc8d69bbfd2d12cb5b6181315fffc6c954501df9af0b6e84b67574cebada5b06085f59b2d765ff91f8897da7b9da88b1a7cc9aa17384fecaa4eb26c8d935c749d6672841edecc30c9b3809ff2e870eeba52c2b9367c069558cec5a643fd1ee0817fd596e5b649f9ccb38650111c3c621e7902c3d9b6393f33e18f2b9d63d9a78bbaac988b493179f69a4071643134db7288d24881577636dbda5849b221046339eaefd7ea3e418bbb96b724c923dbeaa5eaaba3fc3e66eb1dfdc1fd81a6240f1807b49dea2e3a68157d0595aabcd1c6645e682d1b9013000d89c5465f051d577b937c0a386c51c442bec1ac8ba91c523c530982a16fcce159ed6954c0e7e8b91f73ef74893ddfd41ff2b82c5501df4dd1bee06be2e6f7a942d0fe775ce8d7021369e98b6ff285690d1cbe160174857faae7707fee6d64f31e9e1daa962a975a3599ac5060bc2aa5c8a60781a47adb5239a9908d2b112d465627ae16463fddbab36284941426f7a6d5053270e8b2ba2038d138ad337e7fba73b1be7554f3cb137bb739a7b2d134e02505e792d336640ce4d1cc75ba57cc46ad99a42a2071a5ce0bd59af065f3a59756a11f943284319d242db30ac5bde5b691ce0f348fed0384486ed9e94ca91aa40ef51d7bf1270ff7db9ecb8bb1f7cd9fe6d6c323f5d9c45367af613805d6bec4831d3e1788ada038f3de1eb72e8ac868cfdcf4b20e63edf867b6f8f9f0c3db58f85a5c9eff2347a5837bfdb601d25b7302c2ed28aab7d8d776a057b4eef2268affaa6b9bfdc770d58347dda326e833150cac31a850ea0df2bf19c0b968a57a5c2e2093d3c625ce487b18804796ac727b4f85c0c839bf658a934caf39f22c04a991bd67575fae4d520fb429b81a8d4bf3e35db3de77b4e6d38485be6dcc362045ddb69a31cabd1adbeb97e2f5599f32b7859b46419327f8d3848cbe888b8e76c07aaf1f802572a811811069c1d1f5053761772138c3fe243b9d1cf75774a1dbe4b1af2c32c24bb12bfc816d0819a7a0ae1cf32c84b25d3606a24cc6f51047711d6c6c4e2b299924793d3de69c06ae7db1472264bf1e83337b59c5ee3ae208a300213118bec2283abe6ae032193cb6e60a675135d11e9e9e8105cd399b67891f56b305b609b1aa505787e1e012593cb27c8e2d3b583555cc3e3e5ae7b2d0fea3bfbf474da135ed3fcbd7e3b74a5911e3155cdd4521b11fbab832f24c31f4897604d1f03fc9bad2dcc31635c1d423b6cf3819c9815aa1bb59c2722a2fe8df8be529ec106597acc94078c7af48291d41df675f733b269e48130dcd545e3c7bc293493ad4b6d6f68317025ff6d89b8907cf94f35d0ed230ed83fcddc60ef5e6fc78988e5f542934deed8edcda2bdd4ef3baf56bd2c2db43f368d76cefadcda2d29fc454afd68d150fb1aabda656f7533ec0258da1953bc949c818de24de4991306a839f6af397da84b1a721cfa9b2dee88f27822fdeea62311f9b5d348ce86b6b7fe9cf92971b81f14da8b599aa8888aecf6f7ba50bb50d71c1f54720ed78e7cbb362575df13a6ae53a1382ef2eceb2457fca36d226cf38b4c5b0d4875600114354c21631aa5a386462f03e6a10d2f3beeea09bc92cd2bf8b04dca6c887443b4699127b974ad028ff0ff9543bd26f58339bf9ada5832356c5fdb4b360618814f43cfb4ee5d91fca398a0441f4fc610b7a3324cc43c32b4daf24aa5bbe06c4689cff55e5f99b7daa64a14bbd8d2b67c2ffdf375659cb8aaef05712d3ebfa42a19c25c7d71c0ff8c93544885f4b899b316fb6fed32ea626f33baecb8697bc3f63bf09368e4bd88285dcb9860e2e5517038b529a2602c2fc25835742f06a531f2f8d3c3b32b50c70848046589d5323e21b528a33c517b7a58de2131ce24fe1e3f4c0b9e01478cec8cd51bb476cceb439888b3d581c6844f7a1d292da90bfeb470bad9dd5618599cab1a6fe9b56152a9c1419a3a7dd00a058bb880ce3d224e19c56ca2580cd5f3f3d6872389d8c31ac06b578763b377622c971d5a6428ea4e40adb8729ec2cf69e0eabd9f0ca63eec5f693d0423dfa4f5cf417a70c34e9f908f8ce0762af9831fc51f090ec70314e53099bc0245fbd6c101ab0f80f211735b50daee81232b7e4c723b80ded944ff16c69b1755d79aced9b9294ecbe6587629f20ec888ac93757d6b7a934239d4a1038842353502d273e004f3819650862e291d07f326c5fbae107eeb0bb3c06a44256f0161be7031e292820823a977ab81bd94c62219ba338abaa737196b5743cc688eed30714996b43c34080cd3278a1efde9c43fc3251aee024d1011e824ff7fad6d12c8b1b6d0603f9bb7f463ad37c533fe2d8aa9805221c3bfbdf070d52b3c493428fb47ff62b19127648eb1e172dd5d55c071f8410d80ae15888687ee9d0384a3f4d4df2edb313bf672899347ff97af3833ebfb8f8369c64ef4657a33116c1ce1e096884e89b0dcdfb99ce83797700ea94e5ea68008b2e2cb0f6fd719c143bf118e99382d94ce24d77b60111e474695211fc30eead1e02e1544bef34debf094c3726046b8aef55a97227073c44368142aef27efc2da82aaf06c4f63476e78b328cbcaeee3eff0d7a20fcff6b08de58cb9f0a4251381e6a9c82a7c83edf5cca821668bd1238fd489911efe8991f325b468c0b53374c1a55462abc2f24b6804f41719f8727387d671afb2889bb8455377742c0cbf21327f25e462ef145784558ca8e4d0baee623825eb6911a4a9cc617490e932139a1f206c2c6fd98fc0e44b581e14d674fab0684f14cf0f9ab554977d891fc29ece6caccd779f5ecedbd874b5bce1e3d2fce8102b6aa5817ca7604818b8f77a71e41803c0575a318192c5e3f4d969d1e6a5bbda0d7aa7cbcb8055230143975ac3848cf810f9db571b690051d9c9f67f2ac81456d94dd3e60c46b1c9a6312f986ebd10025dba86f1539356421c98ef5ef9c04f8f89ea9dc047db9ea7aa4e0c8d6f7111189a1240f4a318b2a0eb92f32713716093ab1ea8658bf078f262dad0b869590de78fc71319cc088f5a66a5ecbd1dc5f255e0a0ce2768fe0d775b0d426f239455c15874971c50c03237228222e91ecec22b5f7eaf717352b768d26a534006c7fe25e45fc8ccf73cd7caa79d9821046aaf516fd9fe62c52b95b23ae359d6a0cea51b77a35d1b4b823c90f2f840b81d7c49c7f0f744a27ce78164bac690d923ffe90f28a1c8901b0e5288f4bbcd769eb5e119d3a1df09393d8eb5ac875a63e6f4be6664ca5d09fc5cea6410a02b3d20ee569b9dcf60f7a18b18be204de7aee3f4f76669b65f9bc37eaa2fa12aef3a1d0c27e6e9a8a40ddc34d17b56552b0038ddaebbcc88e6e10cbba79272b73e22787d847ee3d2382b190b3eea48284f2da6a56854f3a7ddadb745656444530319f23f72d6cd0eef2f08cd8efa1e9a03d2157019089cc3914b650324dd4b666a3cb67928f97d28b5ed5eb2d4fdb79d63f70e296a01552b8920ff5db6e7b12e0242cea143a8dd340c4a5508efa427e74de63fb8e1a40175a06230294a54120bfb20ab3880c36a20b92629debe11335e60edfbc0d3535973a50ee696da4fff9457b5a110056ab68d88219cc17395d760ff1eb7f23629687cea11d53b3c677b8b15fe68267e62e703409c728b03a0c0d5126f8ee9c48f0e008ccff323f588818d99ee9c098afd356d16c7f63b1f15d30e6323be9e055b7f6e62c7fdf652ed7ca4e7ca3ed53bd46fe54d9974e736b3a47bbf3c296928dfc16eda29f12c7188cc9e72ad32b8b37a77d8c8bcbdb25e79002c595ad58dcc5d31652d91925221ae483a8c24bf0d107dc170b472a6df26016322fb9b6c601b00ff49b4ede85de7dbb71ec0cc120639c3d955a26088e9b89182760a33bdf3d580adcf4ef0bd127c3156a8a36cbbde48c6dabaab06c2b1cb49c34778a5395a389b94d918e3207787fc5582e45d2dab92d8f7bc775833bc401ec07f0f417776d44d5e42e8ede65785e05911a0fe42ad891ff5113f94c07b7c93c864c8e0b05bc6028df24c3924dd0590fcad4d7db63d0bc5af0627fcd4aecb075efc0bf1433ee4b8f3460d40b62ebcc049afc590a744cd5391cd8d87dbcb671db83d119333f4cb5b38c758e4bc280d0040452f951c42f3281e1d22fbc67dec524114bedaa405f092582c2b8b182010525823df157be60b636b1ee0178a3050211732b665614d067222b79995f1b63311f8fa7003103bf9bca1ab4dbaa0adb1068db281f559297a9fbad6040d32c1f858fcc5a5b48d5a85517ede8fd487c88cbdab8cf5491e3bc4b7171f683c0b39756236e1d05784b9a55ad5ee33273e1b2880a9d5473464b8c9ee868f423e6f43919debf6dda9effeae9d0961c57dcad24da078d379be884ba5322529d13b954430fe52b9399fa96cfb5b96848bfdb68ba1eb39df014e07847b5d69d595377804b8e8196d272af3d7c54d894208c68e3e254dc317dfdb02d73c56989c64c257e3a765df434d71f0313b63033c12bc633cbfdc21e480b7c12f775a502c71e7351e32c8bb86819828a004c6b938a4d94a3bd31512462ccd2c10990dfead16f15a2309c0b49022b50925ccdb77e5bbc5dd72403e88fcc8135441485468ed5365d0f6d2e2469983a661d87dd898e2e1c8b8c8561f29764099e813ae7424cf35bee6a6f415e34e3852e6af47c59022356cfd0c9512d193d89fc030db6e1e17aaefb1d0a7e570414933aed799bf63981332d146420c0e3b346256f9a402167f74c186348cc2c41c9b42b79aa9992b36bae0dc1034bea3b8e35e48789e621f1d4061825a27532cb312fe60db38f4953b76c8cd05542505f3ae7fd8e10e26221a075602470483ead73fbbee1ba45f64d44148d43cb6d4e16c030c6ca407a659b84a2b2b3f65bdb109998108177910ed06e69426d65219941730190e09fc93d4a9d5bf639db9cd2bed915f3ce8173a9af2fb6f7d97b4a1b1f55816ec637c42f7b60221d6b549347397168d78c42030675e670d95982ead7f8d4c25d9d4f6cafab4c140f2caca599ba835b59142b005689724dfb0ff6ae6792ba52ccb979ff568ccd4a1eb11cdf028360370bf33ac7f419f836013ce64f5ccf4dff25be5e28aa00f004b38c735009185fe4c1f0ca3d5acaa2a4387bc1e85dcc9531d48630280586125ef14533786c39684cd30dbffeaf7ef7991d927a9f1bff831a1f424c04215ab863dfe7d795fa07e195657d4946083c52a735a0d4913c0bffa0fe53b3942b363a8ba39b563227b91926c5b67be1c461044425f17d2a3de9f0f2c45d851b5e3658e574d5fbbea9d5d6b90e9e8a0ae4a02be87c2b9858b4a7f4d5d63f95489a8164d3a844008a6c475cf9911cb423f2c296f485f5e09fbec9bd8f030aea955d9db28d06eef704d9f0b23d3c76585999ecc1cc498a14598df4d848ac3e5bf2ba3e2bd4e5d59019e535a14f0634f3e30e59cc869d29e402cf19980d1d6cf961c0436ea3ee9568d4cf9e07f9c2145f3ef5bb1954df64c45302494372d46cd7e57512574896e50a1661d6db19ca2a3fa17eed6deddf1eae9503092845a96f0f8d7b1faa6c289f2328e40f5cb5f696f024d9f2e58ee347cc77dfe2dafbc6d0ed6b29f01601f9ff20302584362745fed3f95051c56713455f4642e18d490135ef7346bdd459356e3e8f04b6f8a8650cbc9f4c7839360ebb7934992baa595f8a95230ba2f24151a19666a7729f66d6cd8deee265a116855800cfdb1aaae4c2e101c06028fa5eb999e545b2dd5d959c74d1b477081e9def4e0b86245ec7fb5ea5237370fcde531483981693173ac57d9a6defb8ef82e7b4d2f214ebd03754607b95286818d9678db7d772d3c5c0a49fe096499775935f769c013bcbcd8f7f1827e4d014b2cb085d0f4ea3d7acb44dcf6404fb3baa7d98f55d52b5f98686e3affd4cb9936f4e8b9e54e70bc0d3968426641b088f96ea6dca2979938dc483cb242741a4f5ca56c909ea978978884c32c5645bf946831ed03e5253d7ec6f981c8b7bac34dad4b8e02c1e3c08174ef3913b273d31452262fb638b0665fc908846eec5d78d36d656e56d901a7b3cee7e9e3c918565a94486fadb7a4cd510d03e4f411ab2d18b459cf04b6a217e787a2f203d16eb41520b547a605ec9070ea37157b7f5793f7ed3e92efea8305a3038662f861f691a57c59dce9c435521f714bb76e2ee1429857f195174e169dd79b649825f45ebddb41f204892055be93e398c0e33d7f4ad88779f25d7b22a6001b87a1d26dffa9979c59485a45ad14203765a2016ea2f5d8e4c2caa1527dc57f44875e058ede6f0ccf2583a5e4ad7f1998e1d05ca705f59d2aa22eb975cc90a44bfa78db7f4b9486b1975329b35f50fde5fd58d7724e4856e82bc758cb5aa6e458eb73bb4e061d0c2ad9a4cfea006f08300b6e8e7d3d8b8f025b47fb00fd3a1a0826611869f8af3fb98bf3f7c6b192cc402e196e1b6f88462f07db3e0206d03bec50058a257dc185eea625b70931126f0fa2743fc2ab33827b2b0efc854b03e408d874aa3b3a1389efa60fce78a85f254bca1c698bc86de8c77ce68e803aab2c54a77381458805e2f70a01615c898133d915c124b517348644502968aefbb0d43fb52145466b7dd2d323f2ab02791a294eb1fe9f23691dd7fcd107020ea85a64275dbede1f1b61be63322d083b4dd2597409ef59d99a46f2498babc0648df707e2898cf11b1ced461fd68c99dc183296cc1d141282b910a55c395d1cb582202538b0211964e763b58fcba9e23f4845fa06a38cc8edb0522eb7f33fb0cf4cfe426699a9b38b23daafd2fa9150c1cd913f8af5b9a28b8ce03eb3a2da6dbf1248ba9cfde8d3046d210918d6e287425e3960f2dbc102f3478adefbc5e94258e2ebc580ee08e6a7ae13db280861dea8bd55818e1996c35f2ff4d60f8b33f4b34493f9aa117529310ac100db7267f55c1be20aded06b562cd0ea4fc33358cda9e275d726ab5661c15042749f7dc7dacb7ec38b1cb6cc715e79145bbdccd80a5b392c3bf57776045b0b320af5b3f46ee643c288b011ac1d194c2247fa33ce90ab5e74938b588fc468130e83f2b39510a2a7869db992292b29dce2b4496f0a96c0d51a7152cb5b7c34bb03f1c26cd4b67964ea668bf1eb917b60d892ce529e68867379c52637e8726f86e8fe21ad07b5e85e31862b623dc0a27334568177fd552c533e47d805f469ad7261bbe001905bef61fbacd5d653a653645b02ad813a0ea4da6cd8ab8e6b1ce6cf7a2966e4018b94eb000a77126f28e91551d271b7158f26cfca74dad044a9f6a832fe2c39f7176009ed9e338bb6aee270b1a142e7d7c0ad792b2410fe48e61ebcb7a0401e228fe044e6ffe11c01bd5f631685679e337478db4aa8eed494bd81035fb9c3097b8225a098bd8a8bf0d7a8710d5c7cafa65d8bf22a2288cbd987a8cd91596b38a40945a2d242eed50a80a6d6fe88f00816002b0e25b7e809aaccff65360d026cdc88d873073fff57bbb66834a86586db9d35663321528a3459f1554d55f4e4f91a237b0b48cf64bd65549fd40c7dd810d02a8991a5f9df063c266002fd5985292f75506a8577f7c3f4712179fd0dcf11db2da706b0d7cabd5051375aa61be9e2fc587ce82da647ce8e4b69bc99db2cdd52a819b48bfc26529accd6689b9a2aad3079a89177ec17465a4d15026ddb036e96f7f9a2141a3d83b88d9df922dff6fc046f8191e94dddce7b6e67f708e33b720b9da5781bf152b186b3d297720b0fd3f2fc38b0f6094448b899c5a33f110f51aa6c423bdbee1988cb851a27a93ac9aa67ba03dfba0aaaa064a63a095f518f8194f53726b3843a7943aa040c546e8fb8da2d9ad42db4a3778d4ff25410012031af5dae8e9618d10690b17ee4403b5e78dbe3bbb95c27749080aac29fbc73f8397c4e16d8e408f1ddd5255ed09d7c478cf38aa6e57c2d991422d99d3e99c8a369ab5ea3789b221cc113f4da49aa72f2ea757da1aae9e63fa6b71720a3bd4a81171e99cc0d1415cc427c60108e7a58165e956b75325f0aca4213d107cce45c450b575fcd80c0e2ee4f5cb57f958faa02515c09ef6a04f951f54717b545bcc477b390ea233b970a628a58838c9c450e18ef5fbd6002162c1d5952bab1bae203f3abf31b126b212a7c730b99ff3b5b084c92484e1e7444892eec5e392314f84e6894a72122585d2486664ecf83111377a9818976012517fbb63198f65b2a619dda36b8b39ec7e66d3c63b76629f8b112ccffe116e68fe6429ba4a6684b05a13e21fe0851147117fb4ea815fae5d05b0d67a9817930823f5af9794c8008ad695c68bcd0f1d8821171e11df7f810db9049bf23eab84268c1e19e33c71b4c8ac6d2aec1571a8036e6a60e908034e49ccd842f1be8e606aac90b8d02e12cf75602d24842f21569754a3862b92248035c0f42a3913d0169177e297bf9db298a9e2ad05d0d7167318d8be75d1df68ef1253f361e7dd71adc640881550fa17caace526a699382293bf4b5d0f3b2c7e59568c57634b6a861d5b7145cb8f1dce6a3d7f8f7bb3cbe2e2e1e20fc0e5f20b1bc1ac8b0903684d24c43e54d78a7f43ce25c2dbdf60f542e7660cbb2093fd17d9674d53d70a7907d3ef48c881a03fc6c7a7561da94a89a2fc2e64c1336c3ce193738fd0024402f372e2e23b959e51782a0fcfb525e7df5b384b730ca5a996432178a9a9592f46f729f97024ba44ff6372f7218c6f576cdd374c8087d2c670c5c9359507fb5f36ccb9bf664229e4646bd256b11bf4dd695a00d239a6bd95471e76a59fab8197627792f1deed69e8459772492b8d52c6b17a30f19da0683676a0e4088943661dcbf77ece5f7362dfc59f4f2375e30b01a7c3afb88adc1bdabf5d21e495bacc21d23bd6840b1648a2abdbcf9730a5cc6b5d4f59a329c2b11307e61f00ba63385868733bb4d622e293adf5fc8d489d9b41f13bf771bea797acff6e606863e3488c65286038d675b2ff5efea90a02f3090c4b2d36003c9ffeacb9392937a364fbe4f4307e017b687f8879bf4a7a56fd1c65f8914e9e893bac5382dea31137ee6ab04f712f8eefacf9213198b099bb19a95127a2be89d4603643594af5bc8bc42e83629657456a7003f10899dd210004d93ca0463fa6ba3aa94f76454f2d92e47a5f541be81427c32f77fcdecc5f074e425f8ebd0fdc8b84114a61f61b957891922ac1015d1d366bfe3f0452bc88e855308956aa2941bb9141a039243d9b926223510cc5017e4bf42e34f19b6664990c8cb7ab4eda78f566acfe6dbaf5e09fe4ec760b1308ea240e8098bf73d4bba4d4e5209bb69e0fa14eece89981eb798269257f4dc9773403ea51c047dc8cc76074a551d70d22ed143c8a99ff6f93a4cea2a751736ed86adfe1716d3a1ae5d60b614de56018d462992ca6441c9ba9d72a866483b88a08e6438b1a7d8de9f18856aaecfafc5541dd16e44f8a7db8d7e2d0b2d0974232fd2470f7cafa0f23c3d909e555a62d7566f72a686d2b61119dd6951d986479e33a08d2051c7147090acca589e871f94273bc7f1d951561f9f9d68af98a0cb9225c9bc6f81b9fe80866dab3b7fb1957d6a45de65b04b9ee00f06d707c4cd14716f23b9460e045b868828f8e7ac094734da936ff82588d09c8a46777f7196f4c06906e05a53597b808cad75528612b0869bf1408a784623be76eb58adc81a086d9cd034c9a020f9683b6e28efc623bece6b6d9a29fcb45bc89e6aa1697a8a16f15f619dbba2f477e84c0025d42de8951748dbca7e34773898a89ce47c1babbf85999f2ec99c233812da9ef0354be1a9c59f52bc942827ac35dd3c0db207577aa3d6f488636f2f790f34a671dfafe220bb02ac986fbad3e7c2716ad50ce1fce2767dcb44e3154face4be197087cc928c32800a7e23c87935526a2bcf26b51b5a2021166f05ccef76ba6b1fa625e9ecefc9984e435d208fa2acbee6fcf450caf2d849cb15ec512b8554b18160a9bec01578bba04c8fe07d7a53a0e8f9775133b1562a62e4f3d5582ca04c2dafb367333766c2ea6f34a7209146a0e1b2180e13190acd59d0f0e37cdd84a6b625378f3bf2e7c95ce9da20495d59fa65aeb38f3b0c0f3db0d5a359d1676077d22b1ffe24900b09e85fe9da3ce3207b6de5946513f9ea0f6ec37bc8460bd923dadd60eb0d9c7c08c7f94ff3326fc44cd32be64f1259727e1a18f3dcfe5aef594d7d17bc6cc9b2b1f2809730d71f3b76d9285265477f6fec42ee1c5cceef79a84d718e33862aa735a997004acc40c0ffa3dfdd8fd3b6e457f7f83208c3ea742620d75a6df8b689b7f0fca4ab2675887eb8c73afb6db103aa4f9036459a47cfc2b0a2e65d312231fd0de1ccceedb1014185751355dc45344de2cdf6a647ff9f800c4f0f00f5013f240c4aea529e082874dad2148e817ec4bc4eb90daa6ffaecb6e51ebac8db4432803b88ec5faa41b9616be7b520caf71bfcb484a6b9edd36d6612ed7f73d0f8e152aebadd7ef5465156503100c1c08e8c0438d91e4c506bf4da0c8dd2bd93611a06bc63fc01575eb9d5858ddabe7a5f1a428433d5505b47651972bb3d30365f56ea800dc3491e34f4826bb09852a713d5284550b66185c8690e879ea5a7a324cf4359fe8fb08ab5d088452ed18109819cc5ada85b2b772b460dafd6a4ea153e5c9c6afddeaa50bb0d5fbc13bc48f4976aeef0fecc46905b7df1f61e6c399be7dde51a2747b61884587f5c0e9c3ad3a17c5fc7fa365064952c21887dc57098b32bf696d1ae05fffeaffc1425f4d9a4cff5a3f0d5285e39d948c13a041d0b4581c14a4a81677516e6f6f6ba008c7f7718d521ab182b1d882d28a80021b1042ec3a4cf6ced2336e1a8be9385c484c5f26758023e66c1bb82b100fe757e4c6ab1153c9a7114fac9d826957c91760012d01c27f973592983897f470656742b24822513269660e362e9395fe25ff81d0b5dd7dd1d15716871b25f19400708ef602ae6c4a658dc6c6ef4108aac528f4b74fc97d524760c7b694a4a17e70c7dbfde8318866ffc76891e4e5a1dca32fd3133a12d4045ec77b6964eba60e1917500333e210a460859b80b3f3ef891ad28ba0058f4f3035009b070f1cf9552e3a2381b5d2fbcb3c848f1a08429c3bed155ef98bce380eb7d4c3b651a430b5ff5050fd4b9b2860dca1e09decd6760da94eebf1280ed68f3d73f518ee3259a25dcbf7f6d7d22a3f7624a8021408ee5db4cdbde66eaab95f9c1a0f2011b77b5995372aa15a9132ca02766ed16f4b56752376b47135360653a2548573ac584afb23830dc5d909f6bc874dc759b778624b6f5cc2537a841e924f196fccc971e59580dfeb68f5a1a20fae89b06664910d26008172679ec1a2f4294f264277c98649078e29842831931f3e6db3e855f771f3d5be06b88b439b02785519a50129d36b3c386a4835aca8e6716f13e51a16db074b868b40ea9ac3f96bdd7c5be2dd00eda5d670d0d839835b6e231cd436b7d1d43505165780ad211f837836e285241b24b5694893b75249013faea82451024c39b38e5890d2736b76977e830d93dae0168e7010babfd89b1f8d063f36252bc697fe6f10075e7c1245b00ff017a5c952576e86822a6baf6215c1df3fe88ec3810b6b82f5de14339239fddfd4e6d51183ac458b7addd9e9037565a23c4db08af63206d3a3ad5c809c07019488cd773aea4bada10b43073ac355848e7e077c9b0adfba91908a31969998f4769052d4ea77de0325f91a65454ac0a69def5f1c377434276598f8a6bc31f15fa2100a61e7db751cb72d31f2f1ed23c84a99db47edfbfc9beb2af9c087a260e4e84844a58f7edd234b36aac4a52d20b254f4a71f62f92dfd2431b5ccdf15d355e205c5f221d07829e5f10e8bb61498e1ab0ba341eb8abebe6581068abf19064cb401aded6f70f1e605f0438efac69ddf70bfa535838561092c4535c2951bf733c373f4a8325ff0374a28447249a824a93951b53fe1c7dd552c8ed77e0f66f46d8b8c8a56c3b4749f711a0aaeefbe3ec8917241bdd88f3ac078d6b8afe26d4b8cd4ac17f87f862d0ac104721b6c75779b8a8d350b52f8184752ba71dc42196f7cdbea017fe47c5ce7a8bbb8e361cac81c4704162ba00c0a9c34458d008126d8e8cbf8f58b213d7feea99c25bfe9707d0927c7bed16a114fbfe2aef5bb44bd022436de0ffb3e6eca3aaae39a4f3ff018fd0a29c7664b64bc095997cce45da6361300a4e9ac95f5e990c58f142ca35bb546a780a003701a68cdefda7174c5ff81d14b7d523ee7329e18790ef88917e6af41655cdfb91475d3b904ff625f1403807b33f3afed280cb89359f7b2f2719202fca6734396c0fec6e4779e3776b285c9858f784a2562f3a4e548895debf24b3f940db37e63529a2fa0451903289d080244ea515ea11262606c50dbb7361d71513790a4b784b0a5045aa2007862c2478f06881130cce8bf1d7903f1c0f69048a1337c5905485f7120382be5865caac2f517a4051740c5a04215e9ca1cf06f36ff281a4a35ba9ff8b9bb835145fed5006aedd30f6687d7f6834fdc16510bc84a93d236f6411f6c50b31dbfedab0b262ab17ef667e0c87d2d762e0ad84ece3abcbe22b8e80f59b1c7d8461c813874bfe60dd91f9e3a9c6d3a53a9d8d62c8253298776d91a2c53d6f18e121cffdb77db8bb2ba74e036188402f916d1fcca104cf796400c47ece75fd29d2d7c6a62f239d39499b778c394f75b9b2afa292f2528efc30bfd02d2550e574a4a35285b0a97d4a76db9d135b53a0eb0865588503b6867c77c976879ecdfdfc9b8a0dba82918fa3cf577f12a9fec34ba3b593eaa72ee084b2024e6f9e62814156f422392af25af8d204fbec496e896950695ada7b882a992b909b4565788832082c775e42f4f8724f5bad4ab0f6e2a06170951ceae70363d05e36ee55ea536b26e45fae2b55a2859cda9c57969d7e9ec65bd16c70440f7e989c7b1fcb8a677b8daeecc44ee78defea82f6bdfa9d0810e9e08e45d3eb3a5c733d53eb769d74486f83bfb5550f1f0f6557da6a97e53d2a945b239534fa56fc6a7744b4f35a14d32140755ee34864db9ce437707a98ceee3e4829fe4ae5fb6cc5479a00226e52e86a249e6dfe9ee51e77b4ba95618c105c43ca808549f5c05574ea97dd2a7a078a0b5446209c34c3cd5cdac66a39cc81f0e728e0cf61c4c2000f65bdc4829303181d580ef874be2391fc6a85eba8161b2ca44af4502dc2799ee8ff1b3515c20884499bd3eb9307f3e14ffd000be35e72f9b340110eb4b3e0bd91c2ba72d582951a07eee8d4de6df04ce83152b40f49ad28e1bb72d6392feb3239fd0a1e4d457faac705df1a2d600dbac227dc147eb3436665920c1375214ce5edc46c9565ef5c157af8dcdf5fe61bd1ff0399417a2a9257ea3feb8f54498c41b86ec3529559c192d4c4882f551acdd5e970768910703cc7f86024e103ba7046df171ab7cecf45309dc87ff27da9ff94a119c20641fc5f0b9b365745705cb168721c58f6099364588d495fa854535e3da531a641267a960f9229bd272a6bffc65ea105150858236a7cee5c2af1704e3d25ecb5f55947c8ac3f41caa321f65b68eb0e202af9c78dab34446ff87b682e80c4048a4c73f6ce3854af5dac6661be7e758dfe5604fdff20b53b06d3513ae4a4f2356d1fd2cde777604282b8c7e30ae8aa8e46274c0b4113aaa753a33ef6bb0788c018120b48f659a8f3be17e40959674e44f04aee756d4e95c023f4544396b9acec80983095962df659f74f09318a50c6265bdca9b4b16376a2457d8dda66be5c80b139e5170033b935dc26fd1030a0536f72a44bb4d477c2ce83838808032d0d4bbaa19be4b7b86de8eb38a82dc3b9d49de10ebc56926822a72c0f8130400a0f9dab54a947132c28f802406f63294664f558c08eefc552bdf62a3bc04762f94dcba214d93e8ac71f8f7c6beb638cecf9fee10040c864c3cc67ae1ea557da1bf2aee64cfafcd9c840fce26b9c2f80df6f02446ce09c481dd70a6413a4fc54ba3d2414148368f758212f301421a17978f590789acb1ccafd33d23e5a76ea1891b88e5a97ba9dd18f2f419eb27de2945b04fc2fb22a6e2baa6d19d0601165b5d95b51c8000a68e43d92ea0783f9f3abdd62de651770aad2cfa91a3029e3c7006cfb55a72a02cd9a650109d9dc2627bda69b8f05a8ad5c5421837676963ffd66909989e9b15c83818ece208ffebba7a1ca97af9e38a3054e9aa4b0c29fe00a885dac5da539bf73495c70d6c998fced13d2b5a22943a79a107406b1d4abd98326bb9c46a2f14f3d9a132873eb7a9649066ecd0edcf917031b15e444359764126664f03df5b13ab2b4f6c2674903fe5f49cf0c5e0d30d79d6485619bee267df45983a140ad3d1e5be5a30cc3ec3489a782dc81422bcb6fb977315ec8d4e9557ae3bf1fd08f7ef9f1c6df42bee294c2ec72c06e2dbeade71b5c0622455eca4f8ce0db5772e5cb98e35475be311d31afce8c8a3ed67d4eed7b5130696d0cd34321aa36e82e568eb3d3cd15101ce3720d40dbdb0bb7756d04075a06d20064e79cc8e2d15913d6d2e2196662031fd19ee40a38da3091399991df94ecd7a37573f52295b1ceb1a19e593eca8955016a241748d2e344e6297628986837555ef653ab65a2b1179d4a16d0837123702d371f0ce904bd417ec8f94cba7d59fd1ce87822db802a8df1d3c96258c032243079abee317d3247e31c0cec4289e65f2ed2043d614aff56c9deb73fe5fa7b343d68f07337b16999e428412c21e734ccc889eae5e81aef09c7e6d9da84079579a904029368a65903166d9cdbba04a8dc838a4b69f8be43a18f8e4b0c44015c8d6e77fc1b020826bc4e7d90ab689bed87d9de18bc28b237e54cfc5eea689abd36ac02fba59a8d564b28a5aca0f6bab755ad98b8c2a76dad3f2946306ae64ef5412482ccdd96b124ad839caa9725a4bdbbc0d9b11cb60612dad9ee89d1e966b10cbb7b87d9b4b75925034cce852a730db73d6ca1f92c1d85a010722ccd50c9c4d0fdbf5fb7810377c48ea1c9262d9af86c2eebf801f119a06f08e1ca8e2c9e50a3989a5f78e3be22a0cf74961eca2b25fe047b4a6c83bd7643fd8e4eae46c18f31dc92e6b990d01225b77bf83194f58dbd131223ee74feaab7b1cd33aa9604ae7f42bc0fab9422f0b5f64e991c8d6a7bac1351b555e937ae89e9b911cbcd425551e296615dcf38ecff867ef0b7b05dbf73a0ebd63f1da88917ed179fdecc41da6efb7f695a7517030b21b6699a688cbd11bba0128cdc3ec8060c40c6b62b6533ad6fb2243a8c792311c6f17a1216f90a1c48c3d0e608bc5b58161b9a99b330237a44d758d07157b79438c29c658e15aec28e52d8ff181e972fe02e3ed7e49a40b124263e6953bd46047fa156879abd49babaa2aac99460987bc4ba138b702fc7a9de151d78b7f12e766557d1107601bdd15c957b6c9a8abb831ee4bd25be0159c0e39cc10cf2eba7acf96da11d52c0013fe761c86d5c0df110d0f2cebd686f1c1bc901e65eb21a929f10b6bbd6d412549e35eeceeba072118fbf9d304dbdb2df09cc3bf7c0767ac63ebfdbc5e09385ec3502b767b23f5b880a536799f140452c2f48e3d45511fce2fce20a35979d23d74f6c48045da6cdf05ffb09a1fe2712749240b26ef72b3bcdf799a3ecf9f150b1627a46d4af58d47c4ca7f44530dc78c2d6da9461d6c0846541c5fe4e7706755851920553d0696c424f4cd7f594801f9b14e149f67c9f2d24e08f42f2484375d34000b3bf0b04c4c774643f6bd66395f0404293230aec389b9ce2466bed84ff0063760d4268e7c868376b44f2608dc55c9e8ff675ab9e4e1696ec89e0659ca4d49b86adbd53e20670986344e688393905717f0dff960202d3e5a1345742cdc22c162ade95615cd6fc7651b07a36542ad5106c66ae0836688b4d382fec3351408bb43d05e42eceda10f3bde820d00266f780d3f4b510affe4c0bac456bd0d5153bc9009ce23245d15e5c362a1d141affb9e6d811dc52b3e1d5713c5cf66ef9a8aca896b78e77e4aeb4c5cc891c52a5d04595bf0cdd30e052f2d1ebb3ae89d1f612788721c2f4600f1bd79401defd63d0d3e6744b3e3ca38f9496003f92dc678e8b114100488e82f303e2288d40e445314ac704fb3436c2f7a0328805ff8d365b5bf6920fae83a9cf228c24564864f4556ba722508256d383a8a4cf998e09b03f0a0f3069d47645eac79eaaf0eced4993008ba357670cc28b0be2eb9c3bdaba7f676831dd7d0c5d0ad9a9dfa7c2b0d3c2aa07025712ef4fdd3e70315303bd2bfbc03393da62900a76c1326cdad0d454a54255ddbc271d8d222dd0bd4875595038d70fb5e788f4fa40f318fd6627d04415f30375a148dd6598ee24ef05e3896b3e5807dcaae0f9eeead3b2c528056c4d09778732d7b8eb111551ace9d321e12f40ebc0af826c4e3c4e2ee7f983a1d4cd66258a1d8b8683a15eea341291102846161714bcae71f34dde83305002eb9e57a4b4e56575d5db79d1aeba959553e1cb898d95f107764c2036d7088affcc07323ce032db992f84d15646b8e3a7f87dd06ea5b423490ccec5f6c9b5e665ced0d8ee591c7598fdc434ab99882d01f5d1da8e0db38ae7b061e3f527ceaa7a1b0679d5b004ce8d88eb01f55169eb61af8360630217437b393a34bc391b9eba4caa7544181aa4832733edaa444c573608a64fa09037cdb79802035478a991c67cbce67d38a659717acf7fca05abf2ca9168898eae298df4f806b5677cf5d35f7f4d1434734374ccd475935e1afdff90eacd613636a44a456f363db04223b9744b61fedb45a41da939a6d855854603736ba4205a0a68b122c9a1a5b31f171d3dea29d8cfb3c4a46a8bde52a9a8714c399c918440f058d2a2366a8cd3fc18dc667dc18741e2b0fa03d1d4d8d2b4cc66fe1fdd3c4fe8baa141d3e8a3abb86356522ee927fd4f8736c8b2cf97932010a7b30bcc6d750ff776394f362fc0c4a3f05e187b86fb520011cb90368d0ae3c8a4b5d8c9306653e28d6b3b208a7c5af19547802da6c4c58f6ad1d47c0f1b6adeba70655011a383bf87d8b907a281e143318feafd3ea20e29c4d1619e432387318615b67c9256891de7a8941b794461b535fde21a3aa2eac8c304437da702ccfe6d5d6782a6fecf4196c5fddda3fc172e162a876b3769a62bb385fc92887012c4155f05bc36e72806600079eccbe29039ce1b26e408d5ae8101831f928ca227e6ea72b8ea9f74b3f075ccb28e2ebfd3d75af286af346fa387bffe03c72943d6389a27fa53323e94d3e98645a71ec887163aa4a8d475af5422241fca402bb8c8d8994644d0b3f88471344faf3f80d0231ff3ca0c693a0e58820a0f050e32b9fd7b9ee8eb89db30877bb26ffa0e4fc68530907fdf8f26e71bde6f6eb1223136c97a249a9a1fd6d543bb2356da0817818bab1d478e7e8f2ba504f45259cff18d9b58ea8f171ac693e1642c1c3f397ae086f32b0fa07fffe4606661d8870b8c14098174eb52293efe5b5ad59fa1eeaf3aa764503ae074b787b3b41f41ee37f2e9cb42870fe568c78aa5a10a2c8a7bfe1ab20ba3bc2eaa271530e4bca6dc666720bacfb10474005e5b1e6e1ab113a64550a51b444887e2770ea1306b3af0ab0333ea2dbeedb0d0f4d829e53b8d6d32764b1c57d289116902374dbd8115196e31cc7f93448cdf81ed1ded3404e59dd316ce92c4f3744c98d526228ff999593930dcda9b18d51935a23080abf18b0634c0e8de0dd0a0a6b935adaee9f162e11795ff2222d794c14ddf0d1c3ce27c6eb5a0497cdc95b415581603178b2bc5650cc73569525f24d24465830f479ce291fef9da825df6e37e20a4cd6cde8ddfd9e182e7d9af522d043c69da848846b07a6a9fb162d9a57b0233bef014ffa13be826553db9639a7ef512135262c9eec923f47e4bbff4dd7d7c587631255316fecfd523c62326dff0c614006acf4c02bd2847111e04c1da4ecce792a8e3953da787dba66dcd76135be2f0c1fc28fcd7088434eb748c3c5e71b5460e05d2668c63476be7c238a9e796da955a2a6e0226f79de832a078432e536bda989eeed41fecdccdc88e207d539597b1c41270df8a042ee61f738a3b93291aec135815e932f76a267aba0d991283400e6b604efa03d9b0f77f12a3f6daddfe7d1452aae5a83876780786534223fd95bfb0a20a6275d074ff3513bc60d409e04d686df8cc87f26115c90eec1a4955ae1868783cba2a137fccb5e8758f5704fa498c9dedc27a15be79f125ef828ce645ae5b8a30494c3ecbe08ba395b2bbfdaf8d330b1f0a4ef1088d01779d78b779153ec655fcbb6c9ca763d2ff0b365d2c9493c4063faf7575c62852fe3977d7b9e02fd9c6507cfeed2f51bec35f1f1f0999aadaca6e7186010fc68fcf2be2c2b82e893aa31563dac12856126e9551e69b7de4c20e1619bbc5f732382c22ff8e83de9881c4172abd5dbdadaa34eeeb1bd8c6a300692a3a71b3763b20ea345f15c70954ba22543ec636e2c4f35218692b09d8a7ca811052abfda343f0293bdc7884e759e6aea97bf9f95d5d6ea8aa7d074ffcf58b15814c90297beba25dd2fc99d5a0d879fdfbe9bf24bb6831a705f6a52a734662c71bbee9ae7df6069fcfa69fc14919dec010cb642da4d96592f3fc7d1ad2aca1c3918ea428d9db405615857621704dee13b227983b6c38c90ca2450c474d0b4e32925f5315f3954830076b4c94f2547d94df91ef70c6dd2df7ce8c543fb980a579e2b8ae277c826965164d16841197ce4d180161c1ed54f89e42c65ac5576993504ce50d276d66c24f201b093aecb519730785ca5bbf8ca33cf114a7aac1ba3da14b77ee5f8ff3c85199e62103dcd70cea1d0a6ba2892d3cc25d5dc8bc7f7b773ba69f75a4727fc20cbe439d645f7e47a5e29267b3919fe4f917dbcec124d74e5757dbe7dcf2f54ce744c280608766dfce03184781910c51f46fa3cf84fad77fe778012e28af73d4e349af12ca18bbdbc272b8777bb0ec4dc7b86863f2931ffdbb1465588c145f20c76e0f5eaad3f4bad91402c6c6b87d359cb4222745d60f6f7407921837de48c78e69e5b1b49221ec02d3e2ea058bd97b0e047a3e424bb6af425f27444e2d57b3377b6621cb34ef542f1241fab1123f24dab2f5cb85ce734c7de07455509a80a5d488b3049382c3cd8bde51f2023d874ada3bf378dfe7ca09029accea04e266b1f4d00a7419825ea18b53823368b4ad9b579e62f2be64f75c68b3ec45fd0f33bd59772bd287ea0013c30a31009162cbd8a65e196ab002f2f003df80cca4486f07ff60d140e8a9d4d7919b830105fbde57178c5015e93c4b23b7197e89e1947c9c6f1ac526faae61959d755bc44c10468231268bade38ed88895a206ab4451ede26cc2f8ad16692d691ca0cc37aa75d756457bb3ef0cbe876756549703cb22bf0fe532904725b03f66ef27803061ef25e5485ab71b80fccb3897ca7a882d9329af39e27f25a0062c0e8d461be58f7390d406324c77d3f6002ceefce1d3c1b67822d636a3bfa8676adcbb8b1b74977d6bdd9c77cdccf41ed0a4cc398da4ea7d351b1647c8502c133fba1c94975c1436bd4f4aee58e715c61cb731aba35b1894af227c3f3458180a2d8b8516fb026771bc898eaa6519a9d73bb12ccf327f59eed61338e990189f2cf3a22b52242eccc6808297ea13b86d47448e2f8ed23b7b6b359dfd0a09198c2c60499e27408b05421844001e5d9c8c84158331d915dcb927c3c42a9e96a5a8c5dd3c9166612a9271856cdfb61ca3c4834976a1f9c254016642603e122b4d30ee6f2b771a17ff76d3feac259ea32da732a88128fd49babd30ca9c9e18676155f1083becdf346397e2264a4c6529a0e465da733ce792c83b142977afb20c7bd5a57f86f08c97909d46da9e538ff7e5a8940a4e8292085c9994d346397c33f59d322996f2b5ef2873e89f98118b9ce907f3d9ca006cb8f7454124301f6c8c6d801314eea9d982af49edbc37d038cd1d7abd90d122727a411388cdb16585af48f74f2681c13d630c33da6c133c15ddf768c7b8018a215883d5a97f188932832dfa15ed3952c6d50c4a62c4d4a263de6fcb9e612db139d42b9472ef0824454a86e22ac0712d527cdf6aa153b881f18c83d2d625dc5e83484c4a979cfbe5d3ca0260e4f77cf76562997bc5b211644d1fb3a54ba9c9e7024a1b37dbf0bad9704d167d9b581c123039b24468c2c5118bfb852f71b0614140e773be5e93e6fb71e977b3cb820b572fe787d91b8fcc0def1502fafe2048e48e9f52d9b915732146b0a110502b76a2060fd790eb75b6641b71371b8b34d47e7f255a16c472272e10cf536a701b7c2d4758468dd35d23cb97d0b531e6e59077e559512a2c31209b02ab11a3b07cb3b83b14ddd57098480ccf2f12714a2abb3f1a70a110415e4b4d3552a1fe93c0a486fe4f88fe6b4270c8dbf866beafd7c77568d7d8bb8effeebbef578e86c6884a266484976060ca7983be47cfdcd631dad7c8582956300c1e67a158a97e5e50970d85db3de3419b5303d7bfeda9ddf750065bd3ea11fa784a9e02ef82e9273bf003f072145483c585feba9a666a6e7437164425148adc64ae9617d9f31c2c5cac5ccf18984f7fe8a81ac4a06326dc82d1f3dc19c6b223fde1d10f699666e7f898018bc1a7b9e58be93aefac1216beb316955aa9c259734348d43b234ac0deca754db15a07c62f8f8b1ee736221edcbb2ffc5971ef36a379a02b9397b294870579b630afe0905c53634f541f4a5c7e20fc09fa10d58cdc9978c5841ab593b3f2ca482cc83e4778c95a60cca3c2c371a48f206dfe24599bebb4950bfeff96f24b06f1f49490dfaf9eef7bfaf0c7c95351af952c7f2d1575780c8d41517f969c13be96f1ab2c62f354b242db421c22f71856f537a76706c7dd8adfeaf9e7ac7594f70680a5c9c16835caf925e4848bf3f233140aa7ec1eaeba109bb330302c1e5ba7ae18e9034431b070093da749acb20a29f22d3bf96deac3d08d190613c2c0703e253fc4da7943eb72cb3fa4b8fe8b0ace6c9dc372209059d27c3c9b90acb0da1a87094a33c85bf8b1a91721a3cdc1d0edc153645b11a85471aa0e276bfee96611a048c955804568a38c9a89dd4071e304e2bd9360ea21a5deac9fb5aaf3a519ece59a9e6e88feb7d2991c47c179c7c8c792f2a64ed4b9429c947bcc18567524e642f4c60c9477625a420b18acbf0d019b61dc3e97b7b3e5026358c4c6f1922b31b064dea4ecf2376fa16b417fbc5ec01c66bff4d30c8ef6bcd08bb5851960c271a027260fca43fad52a56951ec916ae97d4c447393d0e264a64034a6c3b3d743f3a46c4083b702366a9c9d2f34951e0916076982a93482980d8b8a458853063a76256aeaf9d772a908d6f546b1b05023e6f53f2a7ba852705d3dcd367990c82aa97209809a83f90d48b2b5d770e92120a1aea7ed6d12782d4ea31f07c5209b4bd9a36ce7d00ea7c488b90920d75d17514011ec18109f1c0bdfe5121bf9800a848ebc41b586614bc16e4945ea5befb1baeed862296d54d97e5dbd73b1a46c119281129ba4a6ac574fbed1f03bd24f560df4411f0a8ad84294134a793bd1a2a402eb716d0e7b60710c9de4a235667d3e2e1494a9e6c5dedf21fe5cce99ac1fe929e95553528e9755fe5f86e677499aef7a33002113de591f09e8db112e9e4a8bfb12c6207e7f8383bc9095baaa1fd0e9b47002ead99eadafd3275980ea6525798134f7b1a66313b7d83384acf6af289a3a545332fa2b829a321c2a4d30e312d05657ce679c9b99175352476f9e1ee5fd1c795079b9ed081f00800dff526437383bc0b75f997ad5eb293525e5f198f2dcf6be0cd1e780aa46056f6f4ae343dfd8a202694513dc5ad3b68ee1e5daeb0018e8492db6b3c453d2bcfcead84432935460e91715e8b8e0d3211d670ba3a9f6a7eb9884fdd9ea70adf0a8c4cf2a4db7e65f748ffe13535e71400fa2c52e1504c08e5d1a4be74701597f4cf5a066877e57abfebdf9753dbd6d33a0b6d6ac6b2914b9541eb27385768a04bf295dbe60245373ef38581e1818634da79a31593050ba48dd28f30877ce0ef2467f8303b0c6216c3bf0f104081cd048cc344e6f6490ba343d9deaca4eafb596675192ac55da1838c72aa38b39116071212dc171ebd96316206aa45f6a5c7184d3d5d6ea8c251454e98858fe3634e85c329a511426534564939bc7c854d4fcee70eaf7249dbb908b3a3a13c5cc9dcfc07a805d01aaeb4a98a22051c814b30dc9a10c0b6d5015c3dd73703fd0d6d6a64dc917f5364157fde6bb6a6a0bb95329b9c350424bb3e220acb42156acc1b75225432f7ac60e738de686f4e6e2afe08b87a84e7892e4d640b13e84370d09cf4e9154966a0550bd7e9af6084fa68139bbc92adf567a4aff9b4273b1a35351a9258d78856200ae06cd8a218daaa33917a9798f1edd359d4c9a7f5c96cac7c193460ea65bd154d284a09595323d4ec6066c51558fd4ecd498c065df75ac30804e13bad34130170073ade1d7d22241b2afd9ae33599ca4203abd9b4253157a13f3aee1898bf02c70df59aee0453c2e972010fb303b4f23fad78de42b17525f5d6110e334035c22b551857ff7ebb9fa450d14f878446100f122db2c4baaa8112b2dcf39cf8567c7aad33483497f1c03fa8f360383c677c438e5925eac18ee4ee5e03310607003b14d9c009abd3b9c8cffedcf7f1356aa92c95c7a8da0fe657df695398b4d9c9d860d915b13027edac0fda4dd1b21ac33c6245f330abf1165923461305020669fd454ba46bc7538e4addb0ecc2ce97a391400d94a1ebc2220c5ac67a7cdd963bb0b1d3171e261d3981bb6bfdde6d159041655fe5ce1ac8c57f0625923b45abe277169c25fb384b55994e75581a0bbd64fd3477a1662dd9c752129db9c1d264013fe8de1e519b7cb7fbe35a0307f7cf8416552de09e0cdcc74148925bee2d267b5f208498dd23c999ace5fc0c60d54d2e9532dc4b5d140f0c04d9498bd69221cb46bccdb9ce5534168f684f8f551ceb2b9e7b545ea595232165da32920d55374f1f3c14043aedef8c31a2aaf8c199575f37a2e19780542852b8c1beadb95924a0cb2793a538586ea0c66cabfeb3ead4dd2f605ee23f0b44439aecc97ff49a00514a8445a9093a45b1f9c5a3dc02041d990d2e5992e9e53f39741a94f3a4a50db04961d29592eadf03814f9bbff4ae98ce67cd48b8e302e2d75bef4899361bd5624c50894d57f101faaad0df815904e6b602bed0b36ef91761b97518ba503297f740e56e418a8f190aa7b32518def4ae2f56cb153b5051f1be9596dfa6f53309c6d73959492636625ef6843852c7c4cf59e67c224823066ae290a3600341fd63b9336a1cb31b0dd74543783bd1b48acd65faa35b9e1d0b054148d00b105281c2ddcb18c75a7a6ef5e0d9e3795587b29c08cbd104dabfc2367b64b55734cd44d0ca74eaeedd2a684fb41fbfc7c5077db75237ded43bd1859f759ccfa94bc6e0c74592070d3c393dee0ab32b7292767c84e36b659aa23c21166fbbfcce76d382c1b4629eea75ebe584524eeabf55bd190db3ad45f064e05682dd1e0304747e6e513d2f5e1dfede8a72db26e001d4960e04eca62102fd2658871b300a8ebf487776a8ecfe930c300a95a6419933bda3eb1b9029e160b84a51fe30151ee3fefc87d86582b732273e79eb2a24c22bd20c94ade0582fe7dd7add404033af6278161d57487ec47f71f99c083d5aae5c4f05c1aec58ffbadfbb48c436224109e999dcae7d574e95f95c46e558285d224bf3a7df8ac27f8104f096380fb71fb30cef6b3c444afe9e256df9e231a0e49af9501a8dd9b781cc3782d5bb1d3bb0c2a29c712eb7f110f2025fe10906617506438d875116d0824f3eeb4e15a7af34103a340b5e9cc53a6223a2b58351f0fcbe952acecdd74e40d80df025426c2fa802aeedd7dffecc481e61b4e42ae1708bfb39b2869aa058e9c3d740d8b0c5d43111a24d4e189d3ca746490be4de86315d6246a331bd28eb7d848ab564c50e3042001cd4669c34b41d8ae56182a46c405de3ec0b086ca4f4d8a6c3513d648cf3d3cfc039933d227a70b1e371d429283324ae3a98c029ad9e9c4950c5458fc37fbdbddb90c7026d3c3ee8c3cd32ec13090afa3130d399ed8e35758b42b778a5452d486583fe828621065a528353c84ded248227b6cada2e0975b835634cc66120ee3ce48f9723979b8db3c75bbf1abd24273021bc92f47356eabc52d906463485228fd1c347dfda478bbc074bc825acfd13269748669b6c8616662f0793e8b505da8d061318bfefdf8f8b263225906601cab0d585956acea7a70f52cbfd1cc1220cb1858fab098318486367d3e964cd445a9d9d058c4cc61c5ee47cb0a8374ca9bdcdd18a717394a24deab64908b93d208181a9298d949e9c6ce3423ba337710d48d19e6597decd03f7e5d76313f7dace98c3fcb038bda4c603d9d5b13b08cf4aa70ffa9f1b43d22cb673cd133ed29df32bb2e836926019d502e6d03183f1a2f2c7ed5e614226410039dac2bad824a6947fe20ddedcba13547daaf16db19edb5a3945c995c3fc22c6fab61c5552203e1e1d514e95debe8908e3bb4e135eac43d5bf1c8cf141ab4529b1c4b089ca39d730a60cee135cf8120df8f4174f354ae7201ba4af73ed5ad4d910391aacd100c39e9e667fa83141da7d6dbdb960e6a2df18c7726224025aab49c74a0637f273b851d52721d342747cce56618746a35384ae4935dc8ebd3e8544c084886acdc3421eeb1a53fbbcd8ee4423902688232019cb3dfe6c4693dfdc5f55de41120d4129679b521288b9efb2796a68ea7e9d291899f0f7791ccd52c0139949c0c99ebc0f308353ed03185d4d0a0be21b217f9349b743bd9020ba11d1623d2ae38c4ae8fbdcaabebbc8942b6dc15d922bfea80b1510960d70777bad45698bfcc7695e296e686b4a3f3eae8f9693812a1997db4547648ddb22cb9cd04959f0a8867c3fbe7075094e96cde5f6beb98c9079c6ad4cc7140f72ce5ce9dac4a01e2ce1d28a5903ad1af5a2670e34fac771fe3bd5996d3b323551fdf877e05c86e7e78f4913f6d3f9b114f36de83bc5ee87db4e5c3a2a875dd84a4df84dcc1c00e97e1d81f5bcbdebee709830da33caecf0dd7f029165c613d74d0ecc8b29bd2dde9989c9c40dca915047affde7ac810393f74239a00e9e7c3f9f8c5831433dfcab61b206d68f787d55d8a8f3a950b50504688f242e71f50c84b8eecdaa53c53d842a2688d02adb96e8d02f66652fb847f99f659fe4361c8088683bf1c2100b5d458fcf2c871a83b3f52f76d1066bd7fcf72ae3035002805b42b476bf7d526146ec37dd5d2cb62b3590ecbd13158ded5ad52df2c36006436a39d4bb00322da347dd6fa82225aa54f7946be71ee03d810a97b3d8a2096a45dcaa51fc231fd319066e5d440821fdc463f2710fc4c18e8b688745684ce0b134fdcef16c16c72f38358ca16a20c4a38dd01fcae18ae9936286489f516c01c3de7be8b8290171d9f4bff61a199eec3a21cc8b9789acb5f4c8a004998b6e27aaf3fb36c790bdcafcf9c000b68f5a3a57ea888740b680796d93bcb06f3f2364960ec04ec30daa36fe800322fbd548cbd3b5765e6257ed33ccc8a3b588535c1a1e98baa46e56978b6134606b5aeeba60fb97b68ee97ad06a5b6a6439b3e0ee7109434811b52c9757291a11f8972a5fb5177083c0ec3f603fa8509be6c32c056163188b3eeba6bf2a4555d4d1ee377b86f9bf66decaaa4b4b588d0712f5d00dba8c5786ca883147ce2f62a7de80bfa5105c19a18d295897726c5bf5d8c781809ae04082d14596d50d5ec7551e1c58f06e89cd1302f3dff51f19fe976eedfdf8b86998bfb64e90886bc1e4f1f0564bcfb9e6f2e4f148e8ce18ed234ed03853cea7e42402aaa2cd430e8c1cb0fd66f6ecde0479584b8f952c7c8b13a553ff41d0c5dbb35a2603d386b3e88f101d87556cf1f15ebadf555a5883fc437cc5869246ddb77dd76e1c06e53b81e8a9316e29a70fd89c5c5c84d6a2ae6a80848cbf365e0242ec605eddfcabae4fb77689bec7a2ad0ce44e6", + "0x8f2f794676990800ff49e2109a0a125ccf71d160038bab4c93ca44d1c25e07788f62594033ffa28067db8c8a73449b1743a54ed336d5eb39a88acc6bb5914e7485681a7994a2e7384f6d5921e582a81125ebd338b854efdf4cfc0741db212a2c84bebdfab2e6af340311a3b24f7beee0215aa447382f76b8f734fa4678464eec74d45940ed0a5b2bc4b8586ef5e2231afad4f346e56691c552c6e2e5f0d0b69491132e2068ef2b2647e27411800724e605f9a4a6f666c8afbd9075104fcd8a1dea34c1d88be9ea153511d0e67cf79b63ab5c667e24a0b3c9ca654afbc2b2a3cbe3e7039a81a83dd6a919d8d0d93a0425eb1dc9a22b359eacc07aae141c249a6fb3c8b148b82967b9b53af6a56b1be9b1d5c02a784db7004219ab411952407ac4e7a66a0763bd619bdd08aed86a7dc310105e8c0ccef2e6f5048b0985ff8281c5dd1b3e46fb1a85a79928bfbbf347e4045521b14a79cb927ee349e42be134889c4a71a3b6ba852a70d8d8d3b1845d34daf1171e4a1929ee1dce6485775a6cf89cb5d717871e0101b4784d863f8424cb4e474fd5d801f49d810f2966a4f09d7499f9ecdcb66c950331cfd9c645b99f9d684c43e65c8521c86ea406545acdbc8fc4c79291272ba4433125ebeca1d016c8cb099d2d157fd0de36c1b286283feb383721159f4fa54cf91137d3fc0fd84e34741d41de91cb75028b4b1a68c039bbbc29e0a0b41569e08be1b662ec72c7529e8b39aeadf6ca18cda35d247845d1fe7de6300acb6acc678455c653f095f4cb3973a2abbd39e39f98dbc744f6abc028c87f0fe36aad63369cc57f841c119bea79feb2479d1bfe2c92c98ade3aebe53c5d5cd1e12ebe8a8f598d7001e13a5cdebd4a5626fb05078a2ca45d76eabbc250a1c09f97bcf2e05aec3117e02df7bddee395911fe35771a5c3312bb56cb5fd9b8594f376adc1c9e83cee6ae947c4a3c304f4f82da1e7b01e83d6933a51e1e11895c81d2a2217ebc65ed35114989cdd2ddaca35ada3abbee2e15e673f8c46dab4c4e6c139fabeb1a4d97f29d0ff23993f918785e8f68c97d844fe2d08b581fd10e98d5703ea36cb477a8c421f7c1eede40b1a39f9335fbc9d9a99a127b03a7dd2f3d0aaffe887ac909d316281215d4facd25e38f5fcdab45202de31916f2b37835ab55a59b27b0b8f275441aeba251d2f39c77c6d60418777cfd3807bb276270249565ad351a062a6981d0b209498170a773d913cbeff41d87c96e312ef40f183818472fff61072c2f27ee16d3ebfe065b77819a507457589609ae7fbcfd859230c15bec488e8bd9b6082587651be800f61b34ac074fab7f43271c9a5ef3fcb0118732d36b3970b0cd11bf8597a1be52019fc6e3c09fb21f5ba4efc6cbb8fd4f7af7302b96915e672f83cbe455e285d394228626b82b6cf0331a7a78da889a6d524dc577b17061d2a6a4d9a0d1c6a1d46fac417a188a563742b2124e6249d98334f86953af882450abccbf2967644bddad84115e23d1681c125bd8389edd0a4d20a90fe59532033ffe5c81d13f246ba19f0f6f3e183e154e9f4840522b548e88c8d8d2449932e83ac4f23e9096e39f32cd295e051938a08daba4da123449325d67b486e3a73f715223ee31634066d2d4e9d0b1d7fbe234dee2a1782ce7c8843ccdc2f9a29bde58aa093ded92544e58f5f50d881417914db79315b8601ed41cbd74f3f3532521bcb6d13d65ac9eba42614ea65f4390086e8655031c1dcd7a36bdc25ce253677f683b99b9236a9ecc862a814f8f46039cdb3dd4281f833e1ff76f93f6920d49f6ca0910725fd0a4223972a606313e5a7a1fd0abaa027d1c49562dad59432ae31eed6e6aa4fb5d9cbb67e534dd976598d528be244a0fb86c319489785153b00fabb1ba19a4c55606accb1eeaabc58349274a600b53b5913b0f367254f2a6f864f342cc432984bd4e65832d307a0859d8fb39a9592dad5d1c59ca0575df3d4b31aa307a48c23f7af7212e56b3b46df8c548d3a62714d3c3eb35dfb6ebe1bc7383e8d6f29d7562eddc7e311d046bbdd3880bb5ac438fd0b4782b1223b6ebe77d919456c26c397b7af3362e36b106207d5cbfb54d3b011f56f48bde1ca5369699421d3c8ba759cd1af168bea38bc217ba05db7848ce6ac60c4c89facac1413f218c3e292c8b2afac34a3549c86a2b36b44ffc2cc0f39b9e89971d719bfdfd2c08d13719f78312febcee48cd05227719d82511311ec21f0db2260a06191912b52a7ff6f04cf4cf928835a194232f4e6e93357c9bb7b0ab0bcd053f7e453d4c57b0ef86d9d4f823370d4ade813c956e1bf96f16c3951c0efc186bbe1a2581d87e31654978ab270cfc39e50cf46d3c59b9fed27847bb35a1e559c46b6c223aa0d86c5e413ada8487895c10b1744bdce3b9e6d54f7762aa30696afa3640f0cdfbb332772d82db0e11e509ac8c059ccedc5e77c90dba41b53ddd8475726756ba9a70ef71c81f5f8e42ed04e1f5734d712493841fa4d8176b8792048d495895fc7f40e95deae3559c093e5e773b76b8ed413617ead030f719358a93140e4ff19175b7f4ca1afe0515318d53bac66f5549464c9c4891353543f7163368dc931c14fdc82eaaaed2d238858d7a8c8ddaea8142ce9ef1f48d65878156f1bd4d59fe0c5f688a453c017f14a70989fe9b9d61a4428cef460f92493500ca4eb17fe69691df5db4e43bdddf790cfbafd8be292d83ed39b00e80650f025d90d7add99d7420b5516e3ae9682d0611f503806886ac3c86005e7f90c6e42aba769b4408ad26a88a1a75650e84ec514f064569053ca19c24ad5e09357185d56a6aac571ee68a6188754c112124b3634fd72bb604181af58bb6a9a2368ea41c5b07608c49c4bc2065bb3d3ac64c80db92feac1a76444b6f7793492c21b065dec0ba9c9b8925363b8c8b09da371da44902bb12574442c1638de3ac70ea191d11f9ed1daafb1f8667bda0ba56f45d6779c21a03eca97345653b295b7fa7534d6497db1f42769d8d36e1dd74bbeafd98aa5d3040b78e6bc14dbdcf3ae2e979c21e0e5bee9b862375a6932fd860983405ee8331c0a70fb0910b71f1565d5e3fa666aada5a831df7a64ffb7b7e4ffe1309338ce9fe6b424c2beab3851eced7983e2ab0bc30e8437abb70a1c15e376460f60e63433f11ff47478eb3510f07c78f1f5c125ab8a68dff8a3558d7b96e1ea0975dafff76a8c93102e74df5143372600d5c91ea48ee35a34c54bf821a085a48cf09988fa9f31c668b23bac24bf7ff4f241df9129d316d35553d2b39274e809cc632472c1d13560b5926cd83071d2370c5a86416769085af402aa452df22ef640e7dd37c5f1c354147f35d82f1af7b71672d278c29d4978d075fc6fa7476917233ff772f32b2e7a0443ed906cfc946bdf02dc1250aaa7524b3bf78b872a053bf40f06422a41e7cae94d8d784cfa01ccb7a5575d5c395091eb60960fa95de078f622bf42c0b15c398dcbc4f9c204672ff4206013e5b71335db9200ffbc87b532b1ba04dafeb7fb239a4c2641d8d993806d84c57d1c78afb267cc16f4c459dd1a6ff7ba1a9f12eb1520ff31e62d131c7d0256735eeaa349ff8498195998059e1ac04b1478559f43c815773eb97284975b12cebfac67ff88b445e2856d650483fdf600489444c5d146d106825dece91f5d0324b650647bf21567558bae292d773ca9cbe4e885afa9b28ea7be3cf5e66556bdeaadfbe297768cc64ebe46391b9b20357031baa557185cee7152d07b54f7ad2f7dc1f499965820e55ce73abbe411bb37774dc32360bbd474a6ae3180df90a6c97af52f727dd9946b5012242d213edc14f2034df5bec9290946776298f7940d0154234f0de9500ca0dc3e69dc3f294a724f82ed0438d7ad793acdc26e0d028fcee6f83b3caf9d86f4c754156e2e0ff3bd3f6503aba79c98f40e85ba3f218201302b9fe28651181f79ac3d98594f48bea3a9cd1a3c1d8f4a8d384cb05da16df6a6efd934a53f71aa644846fc69c00beb98ae6fcf7bc54f31beeefe07ad98dbbab6a5b20508ea2438905e295b3ef1c3a153bfcd6a21a53e21e293b0072a2d19c0683e007e52a46f06fa2666a8cb89ef794fc011725a23ba77baad2831606e2213cb165ee2d957ebaa464fc438d9a0c83b4b3e36934764d580e96dd6d3f173f6236ff463232806418d398b27c982422c12cbb271e57d738f6a78ca7c5914cce09eea1131397d1b98543db51429b6467cb695d8153d853ed58653261916113a1283543b9c9b4c91ad93e07e8a17b97775dd341055675a5fd8bcc989c631c6c422f3cafa9a40bae0bcd255b10f53a308345178d49f7eeeb684d1106b9f9925155775eed4b16a22c5a411f1fd1858de5be0b1f33e8c2ca4d71e9ebe06e0c2b324c37a65957f3994cef1ffaf5e28cbac19becb7e9c799ad73f55635148cb710b3ca40d58abb55e51c4b873ad0648169f9697ceb211620652644e26a94214a459418c78f4950f9250d76a1bade2c2531f8abf77704f8c6dd78a7d6c8838ce34e0563891ea601b5fbda40d0295a93c3ae814236d5a570f83997448ba193525ce74c92c13ef30e5af74088140ef7c8b608917269d57505a34c1d8c7ef66346143014f701f3de0d7078abfbc216a19f5d9e5d84374136b3252ecae2cfee1dbf57b0295008810ab64bac5da2f135797b1ddb6fcad1e7cd6d890ab499477dcc2a0ae0a1fda062bec43891f01acf52cbbd5e605ca63d946c44af60141552a104bd8c93f75ade151e960fe478286c604d6067cb3c17b8b687dcdf9e92c0f501a090d8dd9a29bc4cbafc2851f39d9231e369a98f484997d9d86380cce2f07d8f9bc7f04a80494cfe80004c43f3e0de25a270283cf0bca0ae4d4affc11519bfb92daadcf8c672deb784e2ce6716a19c4bf83aab69f2b40930112c0b187a7d69a2ca296d8fa76147b51c7fbaf33a91e6bf8d3a669956dabcef9f00efbf85370d6f5c85ae87e7b696dcb73fcdd381b4cbdd1ffd320333523d99a9211d4a14bbffb7bb1f8d33369a7774362ea08e7083557bf8e4fb7d236e0faf1f97a4cb3f26c1e333427d24d3eee0a9be34498daa40216567866381d3e3e38d190546fd286f0aaf5f790e98fb1ca2ab8d71a7a619e2b6cd0845ded9444c02c53bcf2ed96591dd47d5af24cd530d5da030a6446fd839bfd8d3db50a0ad81091508137080ddb4dfdece8dbe88c2fc248e99d792ce5f573f38d6dcb7a28d13811e938d5273774f52946681b5d35c5bd315b8b7f8984a8d192f831fc5de85986c5005583e88931a30af26d0d1ae69b2c434f2bd14ef8363fe5969aa4fa1a44deb5bc3457d36b3dbf763d885960c82e2c603dd4c26f95c5bfac58daa801e2af714c0909b3e7ba2a8d01d7f6da6f9a586cc6a2864a6660749b70cd07603e3802128216c97c28460f3de054f3b7482c323c0680a9617e95a1572bad6d0703662b9ddbd5368fc8556e1586ac89e9ffe540e4a2dcd6310022fc8405526b1fe58e3d3c057ef3963d1ff3ff32bb00b6ce3ef5a7f93fb85e8129664d943ae553a722536ef50ca4cd744ffb0230c2d2dfb2457908bf36f3fe9d82a7eb458745d2806ac51907be2545a188f1719ce4358bab1bcf22fbd325161a36f076017f0c2f4c02b31d6798d2b49fde77de7daa341c5d763f43ef29f3a1f4052bac820cf13c8a58d61d87dfd5fab75962143c80568f2c201808b8d31f8c45e11f9fa53c91778f32ac8204a190c3987681aad135d80eb176baadd06dbe13d871667da9c2b2e3a427eae7972b0e09c6a53cf2c07f74c6b0e9f95dd51a6c7f538f28cd6c7313875f2145732e90885c57ccfc4f4c75bc37bc81ca9c03fd9c2a6ccab4d1c8cac9d9f3e187cd4329fd2bcfc2664688130091e1553f2c01c0f83f07e5e0ff7c6535d3d47bf9b7f010d17508d565be9cb9c6c8df14d9016310c7b273563cac8e867f7480d51378e7a3859cb4450656f2acd77fb77f2427471e6c49dbc8125d9c94abf2f52d8a93c4077d4ca7c61fc01794d2eb75eca89f151ff5cad6993e6a679737e2f3909f96afa3cea53a02d07ee2fc574c9cc526ae25cdb4a1a05dcbd4c1bf4c06c764cdde44a12b1c6a15c582add6c1ac9407261396e5ef84b959688021dd7fa524dfb9a32670d3bede0f58799ff46bf43ac4d41e20a799fbf209ab3855e72186458d7eb8604498da0b7677d391908c879fa135b00e5920cabb9a212c3b7920f438ce3ebfff94f327a7c161cf88c59cface589e7bcbc4499d3a7035c7e34f767231550ec9d99c2af73bde2f0fac13519a98378632a6b51f843ba2dd183fcd2bfa5eaa279c8bd9820c55ac2f8656df21ca03a0a466927eec0a3579212b4e77e7e8c4a9721a1b8f861ebd820ec723f0637b62875f429a724709b2f56af9d4790e015c015b8284465928a2a7d3fcd7f4f03eb5f78970ad6c31753d48a9eeb41f751dbbb6f683b5491c02fcd7aa189ff95fb3638d72cd444941cd855843156b5e9f7a73a07c641e2663f172c47efe66f4cd5122fb41bb0c69e0ebcd41da62a84a91b747ea0aaa0e30b823279363ba073d36db3c87a93369329755e9d1dbc99d9e2ff06693bd0988003145265bd10884115be86289e1f02f8d6954f20be5fa60373093dff014920ff012a510aaaebbeb0f3e5e82f0f74766674372a0a5f4ffc1999ad58f28ac4b4a9f879a6bff2ac650bc28c931be6e8e29327524a6896d1b0568d8e5f3b73fcadf70611b635169f9ceff44e0aa882a252a6140bac457e99437f0554054ec0368320af0b64886fabbdda5c5b35bf7b0824aef73e055e2da5d419fb2c7006a4b25fad9e466f2fd274602de9e47a349b7d604d9184ce2af00b86885818277ab7d66b48c47e837050e2d80bece9c64d00021339f2e5efd79a747b8db992090785d0a28957a8e31638646d5bd356bb9728dd5b6c777d205afbc3b9b79f7a907729f92f2ac4fc287d0e22fa537ff0d34271868465a56cb9bf4b0750e5e2bf9118dd058304c2c9f1679770138ed9964ce7fe5585865b8cc949f2adbf82b5ce3e88f8c09d7353e60657ef5f8d68340aad919e29cbc7a1478f639883b98a8d62fab9604e046e8bf8ff573952421001286012d117bf62c761b09013373733e2ec13f8fd55bec2e4d2a3ae11159e951bad5ba034b39d2969a65e36bc1b6ed7ced915bbf2e6b899247281bc671fc4dc5aaf4447a4b3203d51cd1e89ce92f6a93d6663b3e4843e2e24a1f4611a36f8292e281ba82102fd089b29894f04356eadab3581c77296117b2b1ed3027e520314f47e68ca2881df55978469375ddad344ab89700aabf6cebd829a29f61039174788d1d2c73917eea6c4e309d6d9ad5dc02700ad86b44f890f15811b38b5fd524eeb0838a224625b4f04473bcd0680ff9c440aab620f45561db90cb0167cc609e74fda8a2f29d2132961840a9c742acec767abf5c8614fe0a3994640128381d3633a76e23b85af0af14bf8aaf32010672a3f75ef72c4b3f5bf36a3f12f826204636f3edec5d474a17a2036f2124fef0f9f84dcba9f64333c4b34650d472fd831defefeb1660c62cbd7e33dcb16187cf89c78e9b229ba7312568778607281b3025b0bddbcf51b0f53868da5933e720b17c8797c93928623b29c76fd01e1ec5993a3367b1815782ac16268ff71e629727ef51f209577c3918c4c5d9ebd84de0c798134a0750abdcd27e01d0b9f7b6e2bb2865460f2acab320f41ebb73a6217c23a7510f58311b51561f46ef151779d82c09a3589b10194eeef3d1a9de60fc2cdfacd0334f9b88817dbac70f4faf75aee15a139c7f60c7026c74a2105fdab136ffb6d82072f8688eeac15731c6d82b4d3aef5d52efad0220014d9783d71a09874cf697d4a3e345d50c4d524d8f4f4b72a794523cc5104e6ed04c7c2455b24180bc799b1a45743bff9b8b1283dd1e3ea3b44961da9e5d02a7457d5f17c2658a9317715954f3bb7e5ff68d7b5418d89cef6d8b223def41ca3a6b331407c29e88abe812aad127f5d2a17cde70f2ab1bb683cb40cf656b342668c2c2b2b9ea73d466ffd748b939c811c944f05b99e6290d0b0d90c6367235eaa1978113b5cad27a220ffe5681847aa97dbed8a9fd74ead8e22ede09f4516dbc450d1458f36f517bd4342ad5f7b4d11bac22234cc84f59831ce353bd538dd09aa256a063a760714cb66d9330db7ef37d73c8cd37232c902a50b886ae1e8214514fdda35c1138aa56bf4854b1023d90f963b9aae655c1b3223f5850ca60136907d14a9e2d63596674ef5c6209173e354c0d1f6ed37175e471460871a229399eb191b0ac06b56a3878694e31ccdabfb948dd63ae020f43f251a1d555ecdc97969d26487cd9098af4a65d6c36f202db57524e21fb7618eafbb17b173e0313812aeae685b1de636e0436c43159589fe128e46535f9b9a8bd51b4d43007650900e90bd277fd11e9e641d6e732dc3d13f26a0c83992358f6a0ec2f31bc1834a3d37649c6aaa0af176adf27c04171c59dc02bec7cd4696550058a2f1e8b46b6f977a53e071008bd0aa76a3c1cd3fa7a72d9b238112266f42afb0571832301d57ca1be5a149d8581ce4ac11e9deef3c661dd4bbba2a94e9e3ba8dce9c5a4d8a0a3cbea61cf9fe307c56be44a80339779117bdfd2475e1601a6b4d43cba3e29c82cbd0beaf200b79d1a4df3303abca449c52620ef28626b3d3881b44567a4c324ef23dee2d8eee1574a6c3ab6e0ea154db7d2ed172f076278b7388c949824872d3aaab70791aaad8cb20a30b465682582002afa6502c7a45c3c0e8fea40522e83c627c16e47713f5739a56b76a1e0d0461110a58558ccf2949f3aaebeac66026636d01efefabbf117010c223d2d4561e0b9667f3993e78f52f68a28bb84c7c43d268112f3834f48ef2c0c74be0da195f6c25ce0d8ae080acc1e920940a05ae113cd91c65bead6ca46b5dde9a12dc7c31416c77fca809861ba5ccf23dea791e7152dc6199c0c020f494cc7c903a865a12c7646160d464b33da055c69de87575b15d44777ec9562a06452aa94f4e2476f11c83b9ab38146fb6d3ef2a6b9b2492a0a2cc67fd8448141cdda68d7fa79d1effbeaccce622bb4eab7c55e8d9d33e7748e5b200bbe81e536f9bf57ac8df8fbe806217c80d22d1d1282d2afa5ef909fe65eb63ad4524509ea25c82ebc996461f1b20714f9533525d49bffb244c37eeb8adebde1f21d4f7337ced9284aff981def6420eaea44ce81ad544894d26661d9e893b1dc21f9ab7128394046db137090fee4e8b9519dd346600115b0c3d59fb731a6af91b1968c2eaeecffe2541fbe4a6ede839a8d662de2797b57ea6f43c6c67a6865ddf1f96b1931333b1303df1bb01c61f1d04a3ddf60fca0b71c8e97781d4dc84f00d0f885de6c9ca677d3048117cb62d7809fd566d7acd0cf6d79eb342852df8bc35fbf9d661e7b0d7c35b1ae74e93ada7d26716a072a7279a38e0ee66e86653737094d14997e67e6317d016ad4f42485bfc46db79c776d29c2df03468a273861ac1ef84eda61bbf7385a7f8635c2c0c23935b6909b1baf5c8b3480107385dc89ccb0e56d8019160c68f0acc088f693e51b6d4c4dda44aa14adce700595faf6b3f0909152b8e1dbb627647c68e17b8540b868c746a0b2d263b4b072bb4f91d0041a944bf694bbb228b138d9db20fb614f96f7cf17c43e200a15375742cf48d9f42d53b71043100514a3b21fd1a640586f71aca32ae3fc9221d8aaa795667e221058d74c0e9b5f84a19e8d9e71d0f97e27262c93978cdaa8dac3151ddfd5bbe146b3dbd7568b89a174deb71c4450684c01d0b48653798de9480e082789260ef2cd9c8ff6e314f715c0f97250e7a87f1cf199dc75ae2b665c3fed2f67210714518f520f9e27d404596a452d689c5460b14e0336ee21904e0f3d959b340bd125a12abf1a964250962e4285a384a1634bac5d9bbd926f79d59469793e1a02a254a88595ecfa8a8aa61643df5e385c9bf8176675b3970f12a97fa1deda556c3381d0ec1d76b86288ffd8e9426f0e5460b0df5cd7c846ef9c4be99213c15a7d5976a8c356ae165ed1ff0099b65602fdf4a9521ce5587e7f1f1ff0e9dfed4f2854c661c54a152aba1b7a5c0d3d760452d7f5a52c4ab92f13cf1d358dfcf18ee25b2552d5be066023a14880e244f17a3f47ab701c248ee08d5bb65ceaa6b42636141f755f99f9f9cbd5224327d4e8bbdd3f272f69af722b62714c8f52a1935a24ce4fe748a55386d27ba14002e223947b6deac3f778363be00ccffc66329b2058c4bd6c70920b70f84c22566690b6c778ea0aef1c166554d478af5295f590a228bb89e8be55ed74a8b46928d737fe88f0cc3ddd35a5cc4c75124548a48e54c16baef1e7c74af71f4d54769e3d7754fe33cf3396d0983d0aa32c53175092a98d18778b16fab8f056f74bf762ccb92fc8149d638d648fcc0e75acf7fbf635d6ceb992b0c75f9e0cd154813b64f4e40375ff8f63159b3975e91839c2b55598a27eb0764f71efe1259bf65e3d5769201a0ae6e3a3e627911bc00019150c54b52c4d4619ba2e6c4fe494e7c5a33136eac281faaeb19c31e28ecd61163a47e156b51c909a943cd6fee3ef922b2eafe1e8b94439262a384a6960de0205c7b4e09402822037ba7d6b09cbb4fa1d07cfa22d4fb6c3f82c9df78715d45ac3062526b6344a8aeec9f637ae133f3ea8e554a5d8edaa0acc6b14ccd17b26ffd01c6e8284f2f3b2870f53364833bf7051bb455e51e4eac822ecc90e74ab5b62d482e8df65a22ff5dca86200b8b0b8bfafe96ef084e6b1cd38304bf4b99293e2a950f16eccfd64139a1a930f23af82e9c99fdda0dc9e31979dc21067afbbff27d6786ae2cfac2efad5027f8d2a6cc703c10c665bdec60fbd970fee5f245b65d375c437bc01c0db52323b5eb4fb3209927c8a2047a9ace22a9b0ea3ce929e9d7c04e3c3a9ceceede56a878fbfdb4f19ec52c0e66ac0beb72a5c7d4f12a99c1601955379f0fe389ccd7ee0146c11a2a1f4e702d761d5b3903f4955f5017b42522255464cea278a5278dd8713094e849c1fbce3d71f8528e0cf75b3fe849b15657476d6309220462d7b41515618f8e5d8c825f80cc6381911a03fa2b5bba0a97a9cd6259e20cb75803423fdcc7ef9997bdaae5c61879c72fe1c3913cbb7d4354edf00f514b8c523523eed100645f3117bc3105f069d5e0f797622dfd5c414ceb3ff624b9321d498ddb05c55bbe7f8f624be4806ee4a28dec689fbd0c94021600f6dcfa4209914901035b7064438355396667ee54ff402971e9c78988504e0bcdac1a6e243aa51cb0ee7c0cd20cd1a4a45a1b6c326409b5b2de563ff485c53a3239242f08a1c0368ad089ccb710202af77d18c27b04d14da95e9b5e4379047f90c8a7ba307f0cf15f883fc5d7e8a5624ca5f6cc3f2f85c0e69a56e4fd9fcf81b4adc64e3ce69a3d7ae3d59c42f8eb6cfab900414332f398ab28679629cbb3479a60097887930a748c037057a945da519dfaaf03f7d537140ee37261a4edbb56f7ec2a3bba478b476d6835aec5fb0b361fe6dce6c1fb3d92b8c3a0083a428c1cb449f8dcf70410e44cb05612f65763f0af3d83c4b2d0a24cf71510f89b6864113fe745cb704a176ea2d069b7620382dc17e407d90fe17ad7676bbca9581d7e63ac480293f0721f1a9be94e16230073d75b2b5b071ad43b859e73d49f26474094c46ad3c22282bc4e5f5ba7aa9d5fedcf977bcebf99a50cb3405ff774aa33654f9443115f197858bf27e7ed33377549bf509529a41e6221cbb853062bde70f771e137e777b89df6da0b6b3879a1ff899597743ee22fa934249108ad39dbc3264ad1f7eda1bb76dc71c30a0a1c9fbc4a54a25d451040057a097c193df6512cbd9996323ced2df96db1e326d3bafdd41d3164ab418b768ed30c7aac01767bd463aeaf245359a42b05f73386aec10bdf1c28c7347e93565abb3074f597a70f52df53272d26cb924caf0e2701fac073334efcbfe3a98436ecc6142293664fad78b02689c48ba2c508cc61f3d30152dfeb5a56fa06c7088bd97a2a8244a0f68e1e6321ebe899b63912235dfb50d32387f718ec8e02021d1d3946fc221fd67957ac9550c39f7d1b23a39d08323793da33e3fe2b29989cc7ff2cf5a9c7556433768da78da02e142d89f0941c585d600f764f6b2797c9cf014a22e690168f73f8b5885c113254407d89a7621930e4fba83401de7218b3924f32dd43241b7e5db735933a35d3ed9444b07396e08a6c3b4a2c329cb699fa1e2252296fbde13268964611374edfe72aaf2481c62a5658ffb1603525ac4e43cdf00d580b5aaa026cb70c772a293acaca9ffc14acc2d1c1ad4c6bbeca09958b19be2de6b1f3177f9a668c7a50c9aa1e8c7105daa337acc3ae7d2ca61da1f4f493a42969e7124245ff02b02803d21cb9ea04e074959422c6a4403b0aa2c33f2a9c6759d844a5b28a13d45fb5c8f9e2bfb727032d9eb6727c5a89d146323acbbd96e4b5772cd47783c8c6c9ab8779b57cc54b0523e7e905cdfb3fb40694cd7fa9666a56a792555fc5be0c8ad577ddcf8c164e0612913ee9d65f4a2a30e98da53fe6ec5414dde6d112369a762009ba44dfb95e35bc5cfed7090f6334ed85e073e813cda8c37c50908c8f3e5cfc210e0a7e5eec5c273a7249166be4078cf2e52862c35aebe1c4486a47eb77d6bd1e59feb6a55911a99123a6ecf57fefa61c26bcb3e410c8e906838a032c47291e99c75137042c56e7922c1a97566d0d4d2c240000fa88c76fa089c27129eeb044cddecada3f608ca2484e89a79dfe0a63a38f8ed42330137cab93f5ae8cf5b664512975a9c0a49be7344aacbf356513818c9e2ad5512a553bc8491ce477e7bbf4643db504774f2e11367ac7a478b16f2702b2f316e388a922e947c0b85453dfd8da602d9a65b664ca4a2531a45183a648169a2bc852e7b7e8444dc0e81ec126e5eb0c8d2e058131be2d3a1d21c7c11c0fddb0466de93ade69b4d25c743b69847c9a00b2d9df5d9f0e4f959fc20d8f45be2fb6e99c9c62e5e51f6499c665c2e2006d2186fb48b83706bcd8ba758172330d46d2397be6fe9be1484cae54efc1b765b4976322edb1bc337451916e264cc5c11e92df1c0e87f9f8d58176e3881a028974cf9a48ff1ee187c99003f251cafa3f1db901117bbfce14f6fe6f80f55aefb16fe6f077a3cc61f5798354dd69c4eeaf6ef65b250ad8728a02de2b71d622a166141222f99e1c08d605d9d1fc8ac8ebb6dcff7629d1be35a48b623d57faf38864c6af407e2b5cc9c45be4fc68e5169c49dce8507739472227c333fee742281bbb978040c216e568875fe990bf24b88588a5a145784f3f071cdc84492762e5e0adbe230d0d8e24013de9b5ee62f9fc6ec424f675e0775c9f7301ffdc7237e96290d30167970819401b84656080fce019bc39705fc4b7b3cae12bdd484fbde99b53fe6b63fb244a19d63566652c1b72da365b9ef65a20016507a9c5d37e7f938afed8b2ff199ce7e33554db95c963e51e6df2c859f91efc0dc3fb10a4095a276fba5c08e71737def93113e86ef7d22ed6ad7a6ee075edbef155051cd74a3c760e023ae27334996ac953a237c8b5ab951d9ffb145ccdfd2e80301b1889b994dd68bf7537bc2a2de0a8fab7c96e2236f9302cc3c9c73a947bf7076e5e3f1b35ebe8bbe6f233c933fb8e0a5c3b85bd9372156aefcf8517e436c6b161fdfa97df97c56ec0300d1174c0c690d88ce90445d7b6ce9c857141966c2c90d0eb5653bc85fc322bf4647c6c4060fb54856d08b522c7df04ebf3b4265b09fe4a2fdc0258b558e1ac6f979cb72a03bbb582d9e9477f0e857c28799360922c9229dbbc4739f81d81ba2b9d339f48359f6632b3036f6ecaf556a00d65ddf1467049afa74356d24a40656dcd8a7539d5c71649cf13b23f1f9d12ebcee501d235a3e95e744fec5e05bebdb319d1e853039f81af0ff370d018e0787efb0306edccbd20dda9b5f7e9d49338de44b58225067b45c06ad2523d35eb46b743f4ca4c1a5f540985833cc211e593772a04e009f65d9c75702dc1c7efad92e3b9517899d16012d3d4ab633126d31dfd06e1978403461b1da39508f4f190e5b29fb714542127a4e8bb7720d2330c374701b1d7dbcd9d85dec3fa8d6a6155bfca9933c1c68d0244923d6faee2c42b0f9f02089da65dd3cd7b6381d40bb6bb0f47cce4071874b29ef095573804ee32ddc128a263282cde5f183fbad9d673fe33da5f666560dc2475825d3ed886e388d889d7c76960cb984522e91a1ad70d53e3bb0a53c1937381dfbdc67933b40c95373b6ab20da6cb92f8769bad9ff3e19a57cf24ccb8a36f477fad4179f0f6302e41d69e1b1eee6637e85ea68f542b0183f95c0aebefbfd03bc18d16228ad56b2b5d7ee7aaaecd657b61f924143237785bde71c62db2638b1570328b7bdb8c28e1e3e9beadc9e07b407439b2184257c35298acd54c5837d1448e8d3fbce8701afaabc30341cab929fd91077967d27d5a343a34f4416bccd81ad871907e807f4100590c6743ab2c2c3262571625c70346d77e3a745c43cb1147033f328bb62e411700d5857570161cce99b6efde67a23d558fba140d81d2c2df46ee99efb28a4f7cd308b9e7eaeb1eb99a71a1180e3f840b631ab6f74dad8eede20c71d080e226939b33a9f963a2255b7ca9bfcf8233cbb387b16e22a9316beea88a34f657e6af42d2cd6c39e1258c467067d513407157194b542fda3d433c8cb6b104f089b658940ffb8093e8addf42290ce5798fe773649e8cdf8941ce47d2427d72f7163acfa67182f82a12925276fe0a18851c3fbfff2acba5e06971b0e8a9f937395187e80d5b8fcd3aa68fca2ad2ced1465eda7682a212f8eeacda1f3983aa8949a2236385dd6e4b66e31d02ef79d925c936a972df5033f3d0445496619577a7f6003a2a16ecfd77903c4569808d7bf770afffcb1c6e004f21c3cbfe833f5a213dc1f3e1f9d752a7d9fd54b313f9b1ab0e839f37a106a28898b1154bcb580c3a6416aaf7cb8b073b80705ed4ea5a837058f8784b26265d2b10afff16765effa81ff36c762753c75344efecdc90e17a9aac34b83a81ccbf86edf2ab53767a58b5f88c6fde1a542c28ee0e76c7e45ce8984a42d1d4dadfbdf974f473db8b1d11ef2ed4d97ef01d4ac77e6f2a8cf45e5cbaf69ff8fb8632ca859683ade409234365e4b8896e47f816137f028de218bfcb7f9f7eb09a2cf6dc0b214884a644182c9bcff1a37fa3c98fe25f5d0f25d6ce5fb6443d489ebb1ed22f783782f8187d3c099b856e9d3f5c1e230a205146f88285fa8810688137d56504ee034803471d6f9744c1fb0f20e0c6559f85638ca423db4ae2cb94ac1656e1a355554dae213b1c943650451402d97a6363b91c0e34f84e516d5f30c40035870f96593833162c879effad4fd895e7134712f03b8b251570db2c4cf89fd7f16894094affd8d10dd11d39d37fefdd15cbe47a9dd463484bf6009713a110a5a37fb8056a112a48930de41911167af20853d0a6b86e2eb79a554d5bda3069fb3c38a855eae88eaf2a384fdb5c61c192665849f53f8a85ce88bcd850f428d9333dbb8ef2f0e6316410328c0449c3496685f5701dd8a1d9084275abc2dd630e7759a6ab1061bb1a35cee0cb658c848e711cbdbbceaba2e94ef6571d0f5188d3c0c2f4f930d497350561270004af879af77776173e8ce05f9b2b56c4bdd3c51570e3b07b1e45d0aa1aba4c133d857a8f733e8485a3870a2544da17f6e442d80a43aea71fb77a2fa5b9b5246d82463e5abcdcb0ebcf193adbf4e0f3ea9987579b0a65aeeb325098a0c8a1632ea7d0d3f1af16e5376ef4c405685b95a2447fa29aeff3ad2f23482e58076a5ad5bf806cc7a382e0b7a2e6194bb39ad273a7fedbef35ac0d0229cf8064d7e66db8fda2a50618428e34e7cbcb5937be60af8c4a9587b96558f8517b18a487226ddded660e74de4b34b8a751a55077e5889a3535c866149a62fad8f05000e7bf90f17167be41e0f57885ed481cd4404f5c22f50a9c66a44e72802d0b6067dcdfc2ff811db78976b499b090f6b47fbdd843ac8cbb3e47ba27e64408d4eb7376fead9b73fe7c8e0a8bbe06346aca5e173638c4d9633cc1f696d34f6bb4b6a260bb1ec7c8a9bc806e76ab45484849130646f47d0e0825a02b91c64073713eff2d581a1e49dbe9a7a6f408a5a4a608c252fc27317b0cdc5788e70562db6dea88d8206cd800086348efdff780770316780f300731e1fcd6ef71142de711424d5a846b1a054feb2b6fb964654815174e0073b58ce9371b8549878a340b4e62e743bef586f586372445ef45b19014e3c7303d7743659f655ee9a748f9a2a62e6e90105936cfa05891fb67998a05496e192c1cc0b7206ba55dedf35e6b5da92f971f9007e1a9a219778e8be613b5d4b2aa81252c337640960d46efad9331fe2ebefe690ed1d0d817cb13ba8ff2491ec0826cbd98ef8f3c381efef2e2dd52aedbb78d0eb2a7d1b7927c7dd0ecc7279164af54630d06f667ee021321fe4927dab1e318136bbe101b358375cf97e7e3491cb47e0a7cf662275e068a8364c2c71e588c009f8dd51f0c625fe2d64999bf2ae169d79555d79c24e2628e8d07ac9b1fa80a63b9eb5fa8ca64436289a30477afa7763f75cadd195ae1e992c9aa553bdf8f2342e124c106dd7697e091d9ce7a535ee29c34dc1c11e97f50bd17ff62e680181cfbc5ce57ca17d4385f11dc89fe0a78ac8498ff0d8939c27aadb30bd135b010a55065b52152836db04e4852eb0aebc1c3e7ddd61945fe716866e2e20df90b6e045ee82354c77c16805498eb85d24f2424351d58711a1064e06566caf55d7066d4e9bb76beaf67ddf766de90a5d6c173bbc4091f239ab925a2680817afc54a6315bf92d0b2782b2c00f007bfe4e42db0b44c75508b8839f699a7f688c5fff0d70403661aa95eca8fce696a047f17aaae104e64d77a465ff0f9e08d0ee5622c2e44c4617e1c57798ec6d270a8e4478deb8f2a35772443f55e81976fb961ddfe855d46175351b5e60af468f22770fb63baf4687e00a6133f7f0d64633de57a830eedb8024e7584c1273f20f0865d442c096ca1fd239b818a1d3a99cc56779c5069e97e3854a99e24c757aca14ec853dc2a31d7c8e69c8faf680dbbd969654d11dfd548df7a5ec3466c40549f740045d5e509cb3fc92bf96d7c9979341f4ff3d4466c5c628c3a74c660bc5f85a21b46b36cffe5ea53fa7df7ee0d52cc82ba8cc8a4756987ea67ea6d1f2bca620f94dc67fa7121adf02ff7c78eb013bd4795715bbe06b53881ee4b243e0be0927465adf61542d070b3cd7476214aa9687b435051eeadf0a841dcb56d91e4f38a37caebba401174be13326cf7ebc94b6dc4c465a92dd1a14f30ed3696bba4e2f09eea374afbf358fcde681d717c1f03a97eb3329f3db7b8b3e9b1c399997fe4e8474b0b8d6c8b2805b0ea1d5b0f9c364c48b4b58ce6888d06b8b8006a39258daffe47e48fbb12c4fb33b0674095a579acb3463256b768a05e1bea68414afca7bbf89a37b78a04a3226150012f06123e60eb60a9d207cd8913965875d3fa217bc87278fb862df2de1ca08ba42e4c4aa771b060f26fc9000a02aee34ad85427f8f564f71ff156e50192a06714c8973c41e6a270bf6b7c474a17761698474a558c6abfe50611462d81dfb1000a8e87011d2afb47b99013124c6f6103668aef6f69b61d0c0833436c930f0bee087841dbe2cbe768c6e107da187a5d660d0a551092915403a202061c51c93f26b4a3ae239ecf3a5a12b8ccd141fcd506eaa2728a5f01ec2598422cd43ae31659f08f56443723db97055c35a3c0e37ce14d6b5ffd1551bb2eb11470b3637dad1ec0d30b18245a5e456c931272c9571dcd7a8b18fbc1f035af8bec75b1d0c68d39f5549feed9074a97d365790523d24aad86a568aaefcd393c393cbe57507a0c73715a4fd60a0e31948a0ddb3845074af7bd7839a87fac8c7022e75b830055d49ab339bda21675ab275df0fe37a5e794e60a25860bb0e23496241416fae66cc13ebc943568afc40ea611ea09e32bac15d4bed9c76c7908153d111b5934d90ba6022a6ffa8ae1960dec95cbed420fbe6ce11d2fccaabbdca2af2f95c16296cef1323ccdf13a79cd1b68bee7e5bfc7c32e344de12d32e34a41f7ae51a7914e89a4524f3d64b140681aae5fb90e12ddb51a05d9142689e7a7b7a43d7c4843c73d1fd7905bc2892ff3bc2d4ff44cf9f7d1b7769df62544d761e8f516613a41483183335a01c420fd052bd5548e3d1bd09634ec6b138d944f5e37a0d3ae03d6212035eab97df636be7c8b9747c520bf1e9dd635065c1bc8027644f9091b4a8481dde33bd71b704525715824a110e20cbcc17b5804a4da49320c1abe5bda79131246d5a54e96428015573a240d46c9d5f2777e25e256ac8c0587f06d0a48df04eadb626f86cc95790bcc2a73763377200af51bed5b09d4b6f2bee29be3f75e33cc2e0b8899ec998568af82975b38e73afe010faed15f0bd5a5a20a54f1b770bfb6e1d0730d5ff8f41611f84918a22281c7966a3ae7746970b897433fcdbd3440e43a7a93c9c3e364b07e85bf705b853f2fe9063e7698db2f1bfad5c30b462d41cd7cd795a32e3cbbee6c95ae91400fd9235b0b2f474b313f2e99bcf77ef4f64c0421256a709f8f3a88db3ba6cf9bde70ea92971a2967382585654391c6a2b6a9aa1539d72472721a22d4b88e9cd3dbd5e2b1d99adbeefc3e43cfa9af51847d0f0970b333a487dbe1d1cbfbccbfb1a5d624be9f909511b7d1a321760077c65fc39c79a1e281afbbd8b552691f2c3561026e3bf2ffda8f50712b483b7eb32b88d085ba517c3fff876e5f770ad45b8be98498d4a49549094c5c7a3dff0fc672e6cb8807f91bcef58feb1c2e8145a43a3562a285fcd75c8feb64ec29ae0a25c130318e7a917c7138962299d41f2aa1edefe9e57c412d686d6665a3a8d8c28e6fcc009465e0d284b5675e1123aa58cd9289ba801061c60f3d36d4b1620a304f10937c3d52b2248a98e0d5ad0cbb3aa58c3ce79d25969b9aa0f1c49c8057f8df87071e0d2a30ddef473ead128ec8093526a999ab99372e33d1d11faa382b9a78f5e63fbfd15646f26fea20891dcea8ed49d12bc682abba1b0f5cc1c5e458d1cda2380d81c5d96cbeeed4af5250b33bfbd37d704d84bb237fcb1839897cf8beb13b5db8278bb6ed52fafb7042183d1553f52233cc201d1858d15be9d4e6e671907786ce35fc79c677f0b8f2569ed1578647ed23e2666a849c5e8901566c2d33399624878a0672261a9ac89c30121b849874ac096c8e7d148772375ed27d9be003e69f7d112e0b3ee2b6f93d69543ba75d71843e2ae9ef37a6ce70ac5bfd46495803d35660dee5cf6b984b355f2793e78d745bbf6a3b04adbe14a5122bc2400607c5cbc18eff4fc22b866e6b08b2832dee19e704eb8c56d6607f31c98934e1885636df493983a6c6dc4985370f5c3f0a99e28385fbe8c39ed827ed7391d46b14ffcef9d2cee335c292a3b89ba6b31400e8f359ceccc4f19d2ebbfd14e1456dd59213bd5945ae1448c6f6da74e4ab748bb88cc8045bf981d7a4ec8b2769b9873813dcb06144a3bf15cc780a572967d6a0b2f5f7ea2b5e59237adc1cd57b3ffecb2d5e0ae52adae7cfa9efa1a71749e127882d06c87916d0ab87b99687fc7eda912fc6efe097aa9d33113673685aec6f1e04ecbd81f7bf4068c217b3d53215e2213dc59bf102937096978fbcb7e3266365ab8685d0b5db0bf327c1ac1d2729dc2943405125038ad1380d408a6fb9370ac68b8261cf4663dab305dcef76d4e927642d532de23a767c266613e81ce86ade4cc992ecd968ba2c41b087be366ad9525fc2431118c7c95fecf0ebc5e0f6799c5407beb21990166bc34b54cd4096cdba0469c59035d4015a99afdf4155cb2d527d5d1f073a8c5b1871813422688ca6ac66649df9e4e8161a780066250038a2960efe430fadf1488ff51c0863568eba6da034ded21634e8df15c3304592f3512d9404d83fe62f3078217d29d934c59675aeb5e15969fbe50b3e142b769a99de31d757f7bcd6ca8c1c74c515cc74b7ea0c7d6460e57796925d2e726546079d178f9bc3b8f5ad53e1b5ff5bab321312a9c32e262c242aded726a9986a3057982748acf198dd22e06c57fa07e4c71c613c281b824ae6c6e6acb15993d2050ed86116f740663962d113e28fb80f09eb550f0b958928e6efb07380cf0d8894c5b59836a2cc0345801b668b7a19bc57ca8de63c9bdc45fb0b26b9572fd1b47961997e625185cc254a3122f747e1a58520c1b3197a069ab41af440068d97c98899283c1eecec11ee3e28337b57e3e75ef454e4c590243271ed1c451a49ea79a99c6841495712bb6d4262da99a2cbcd54f321d22732ba6a3f7d41eacb9d5f8187461a2facae7a8a45f6f75008cc73c98198714c05e51fd49dfc80e174bcd0430dd9f0ddaa7e09e5c8d2188f3ebc9db8b8005258d6224452b68bc4e2cca0210c06c57972431e1439d678ad566b466aa4a58792392151c911e1d0422d48ddf98af97ac35a80a6624b95dd58f71ec6d2c245f2d4652f47784ef63c9cd1154f6cafdae66816fb0df9f2c9c662c722a33dcd70bd5aa33888fdadc27e919e0809d08a5be5c3b32dc1a68845027e8329485a51f68ebcf77e33bdf66e554d41dac3a6a4d7629c355f87808941357431e0f85680ac22d1ac473daf66df1424d8a50d43acf852fa17dc23659fcf3e27f8392247a263e28533a6da713a1157cdbd1ad86768517fbfeab7fe10b02db1723ebcd75237c94c1262150f4413cdcfd56aa2f495170523828f2630523b445c37a7b956e1f588252a21c4b0d1e1725fa9cffeb09b2270eca12b10f1277628c7a156dc6b421e6ba1cbcf67b765a03def50e300a85b39d2207d169446c336432ce458f95214c9b60e4cdf750883c7bf8691059256623b1fdc7201e33a6562ef8a3a2dc7919b870510610cf8c581da0f6d28cb3fb31059068b9dd4006e236baa9cf871f258af3edcfa4250baf4bea88a98c7000fd2e0feaa65c8a368974f83be34793a63c5c7d03536b9122c3a0a6e0fa302b058a032cf35938cd650ff8192946012909c46a4ab586f93c0cd8c7e6d4db713418f708fa35d100f0d7fc21e88ed88ff1fb6b9e4495c73cf167a2595354b38f83bda3624d36b3e9616992d709b9882b5535379fc70da3dee1360b152b9de59e1653b9c0aae327e6338adf30f3270f9a056227ab237c26762024ad5dc11b4fc86ecd6256cddbee579c8efb5273d7a8cd7329e4841e1b0759275d8254f998cc910f848ff3237d0b91758fe84c27d563bd58428e196fbdecc050fa44cacdb82a05030e936250c9f096bddac16c0427f8182d973071445869785ef743f9cac8163d582e3422ab1757c916f417d5d10167ffb37a81b9bd5d676af2bbae2a93deea789dd0fc54bd97256a46259c74a94fdacc6bece5be6ee7183e173499295d466f596915dd46c6a31987b89e7de47d867e691fede8f3e1b0b1a0b7783aac7241eb51d46e733a38e31571f9271a1c90ce504057e3983b12e275fd230828aaae141faafccc8b473a3d43c03b60e45af9781b2ae50f7d07f1a9e72b8f8e8fec056701a782daa7f4269b6ddfd58ea12324c61a265a1215fee4a81d0b933eb103fbef59910a49a2dd0b7b463cc00361a651fc03af8e7d144b422b8c18abb91c332a76935abf2dbf292b5277851c08cf8014ce68d81c7ccceed933cbcfb88872d4c01d5f91cc6dbbcb7ebfadd2a95ec54ed310b125e38475de685623087e24ac26fe060331e43aad862e8e0b2e4f543b1f4cc32439861f4b8b2662eb93248e2c7eba3c6e97bb9fc77a1988a4b99660f7830c64c00eedb8ab7239dc001db6771b50def26b978a1c538d5318f4962e56a49cf897cd73c287aead404ae598a6fccca1e614902d8f536d57a1bd74c969232c30c8207ad1f580e112ca4c4ab647ea37fb6624b7d78bc56167fe4cc388bc227aa18723e72d395c2161dd8916555198bc19826733f0429ead881a04f8d942fb064f15bf6a7c84a8bd1670672d716051be46756701b7fe900077d66b1fd33811d0b6a5f2fdf293f05a0cf09583e7754bd1630bbf9de40dc5ccd8c90afd9e82869c8a3fd4102063ef44a7bf6a4a2473307f74263956bb3ed2379ebee7813225cbb1ba3f173fe9b9d4227bb00a3c18a336e4ab3c3f308d68cd7ee934dca0a8cbbd595fd4e29e709c993f7f8d6452ca31c9a6cad797be95e4641f76dcb66a64425cdc5382f8a31bd564d88f91fb727aacc00be8147580d80e0d580c1f2e9c6cfd03cf47a02ad19b76ff22d0ef81d9908a2b299725d3a36dc73cd1ee96a207ef9142db05db22b2e65059fea549434b85a1a679b7cf264548f6b9815890b1847d3a365fb1b178d77f7b1d7f74395f5d80af455226ec5b860a02f61f118f974f61537e89c6f717cf54d256caeecbd357b8d40bfdf4eb2317ed5a7ab2d6cb620255e1bbd2ba54f752b07424f0d801587f7213f479bd4b940819ed6411dbadf5911009a2f635c41e2877457eb8504e06d020d589282e23150614b2f46adc55d9f8559696cefd15fe67f66a0994441cd7724b6511dcea9d9f4d0822261d7015e0799874e2afd96d132e08d1fc229346eb77d474401c70774c01c3b95f76eff497a4eb37722fe4c2e1e338a715046a9ea69fab978694bb8132ac3c782e2f162d8d85a295266dfc6037a5e4df9bddde689a3c37c4e5f31a219514616612afcaad5caceae8b4484a67c476f9b276d269dd3f788ed95abfa8d262b5940a5b6eb89896f1b9ad1722134b0149281a51d5dcaa82842015d6d8aca0037927f313075dc4702699078f076f526501d455ce8baf6e1b848b9dc3bc4cad778f7d3001c7e83c4918313c3173c819ed03fb68ceb3fb3fba3335f823b8b5b0c57938d8abd4dbbef89102370bfa7210f1f6ac9ac23c5226019eae9434993171b9a413847e39993ef5445d05d18e0ff94bbb5bf41187a59e4e640b3fa89c644ef22c79d0f162416144c47c581e3ae76dd1d27bc88d7be11958661cae6f9949ba41a60cdec8ec05033efbad07476adf5714af7527f66c6e7b94d2ecf911ad5fb859008bd25dc6d0b11eca828cb73c2d777da2de698ef5c79d76e9f71d95eae264cbe26757fe0489306ab26484e56277e0b16d4da9c14285cb77fd4c79f6cdd76a551a821858f577f41dbd4a33d084a87a49a3e347d780ac47f2793e513376278d82f12148f53d51a9b304f2fd10434e81d55bd264b758efc4cbfa474ee1e70822988e351bc92429aef38cbbee7b3a030437f4b569bfb17aebefbe8efc56da7992d4b0684acc49349597523d3350ab0c6745d0a180a62958d99affbe4b64d197dcfd664693a96884a5bcbca79ff8a506e1c45b1a1972f4fb9f73f60f0f9b85401040990c377af3155826da5b275cdf33ffacc308677a167ec1769ce78027dd7ed55b803a7b92986add50147266be8ec81fbf21e9e17e2a2ab8b06beebb38f7efe424642c275e059d9753427c1a30f751f66c1411c1ca258570c8ad623ff90b7a8a503b480a4d78529c934581a58f7e2e0a0ffdf18869cca4ca592122701723652a94065874cff32e36469a0b8d1974e4396b5ea7786bc7b81b20003017dee223b91301b0ba62247966c38527fc88e807318b15f7183a8ff1abf0af74e0dcf9e0402000a8b5ad4b6b5ca8cc5840c8394af5e26626b4fc9b853885a813da20e5335e469cc043adc24600ca1ae34c3134405ec719acdb0c8e71701658fbfbfc1436c3acfd85c5f0e49f6df7863b365eeb6598341cd5df7a40b47ac610429a62b28fb6c265e3a0e67680708cdc1cb789ace9a1e468e658a2f7336edb487af3c986f9903ed023bc38d9ee0dd49483ae7facd1cdb52924a2ce1d2ed8c9b767a7aac81f3f6c454d08399b20fb3aaac99d1d53224461506b5aef3f0f390f1a663984cec7c4cbb7ddf35d3e1f2352af352a6346c583811fb8e45c3cd586dca5619176ea98b5ff8631f5ce3cee24a1d393a0129713d7e85d09e8acd5a9a7907a787d6af0eebc0b02050401a551d248c0da6be1b00fe5472e8dd1961b38f902953b2bca28ab16e382931f63dc2cb3757671a038f08d2524c5e94de85b5bcd9d120db1c9b10e1447fdcfc71a5b1181a299667285ffc4621e77c1d0898d2ae748cd48863f91479df51a1481d072fdaaaacfccbe195e013b89d9461093670fff239abb050df97faa273f6c558c727bd3ac207b809cb281a64fefd28a6f968c4311b56cf11680edc95f0b5852a2b94951bd80a35c0acbd3682b9cf4fc12c192d30f23e4eccd51949c883f7008af8b74ae68ed0c16466c649d2bd85de93d50c8446615e8fe46963057630fe40ca4b7522a06c9411a395356368b5d6818d229f41e9d972215e494fe4446472977e4632637da5daef583091f76d7caa81537d2cf5e4912407f8c53e8422bda8b6771913bfc08b37ed9be6fda7566732cafcea5e1f5a66cde7175b4f5420eb3827d26283ed4581d061d4a1fc09d1d588b78791ca44603d713847a54bac99be3d05e069e29ccc4359ebbae05a8308802ed492b492bacf7876b3206ace2722f8a8333978ba428df1f36d18edb15bf3d3c7cbb8f07aef273f6f55d8a34f0692209ce284fbfd2de034a3e202659d5b498dc8aaebe89d4d9985a71c98894aaf069699ff010a2a8195b1138905a4acbcabc26d4c600387295627f9e9d2b14cade85028d3fb8fe92b7abf3f3aa5ce4418fed71e1e9a3145d50232f8de66ddce51abfc1574fb67ed6ccfd38741cd8fea0e9341692c2df1569a6cdc40a14d4c2be25b6aae25cbe6d621d0d3f7d39b412358e59d72c41ca272a280fac647cb4a3958e416bea288296f2a68bd017776420628a25482e195cc803d93ada5fd40f8d5a7b9c1c2f787e4a44153432adefc8df61bdfcdf3c41856f39b4038a9db9f93b2826e58b0a94d7e6d24caccfefe09edb765ac3bc48745135272307c4a42c91aead5eeba39ecb456808e337b2762c815a506a144be2b11c688689277e6f1189ccdd024fd2e0ed11e00ea33a2bcdd978373547c84e40bbd704a6bab65ba9af40687b8aee81c8cf21dc770c8b5cbb911d0c6e21cb0543995c43cb7e7058c5336c1ade7ea504d0cb1414bfd09488b722464e517c435fff17d3a8821245e8ae2c4dba9afc5a86c83d70ed45564b54c3ff484346b008810244255286a6f35522107b74903660e3ba07dca8c538ec6473beccea0d6869158bf2836802df746aa7b63bc239f21e7c300d6f4a5ec5910383982843a324421b6b3afbf16c5735a7c0da6bc306081860c8ba0b8f587f95b020ed54890eb7633222f51670da18209d209df7bcf4e8316a6e7acc80699ec2d013bd6b5699c9499e054397feb425792a9e02e3bd8c115728e33e807cc68c58def62fb9bceb562179f80835e4fff287a92f72e2acf19b64a884fb36baa067ddc7040e5cc6bc2c1fd14b6a76c7dde6115a6c398340acae6884712adeaaaf83c066634676f7ea7126aadb5593f9e3e0a48ff207e4a3710931c8304aedbc49e5cc37686cedb5031cbf1d63f76989e1afb16e986ffdc9377c298a025a225a2bc96bbf0f34bbb87a775c134f448310259976427c6b7ab1886e8a51de5f4e30741cb743c3f8cde014a4f34a0c73276cf8d5b9b5e0d6201b2c57d7a3ede4311793025cc69338791d5414e2b3ea7e82d4fd11547840f0c974ed47ad5302756925d1514d684414763e0411244a35a6d80356ec8a1b2cdeeafa795ee16a21236ac6ec1546a1d9d473d56235dbf30aeeca5ffb7d3b2f5428ad521152efc9bc038ee3bd0a1cf5e5613889bef12419da9bab568acad4e9983a971e09ecb7d69eaf30722c25e21078c9507cd40841f01dbae262c35222e517e3c44ff28a8fd4dcc3dbf8da0cdb7961be51a9a41108b8219a62666f84e6b9f7d8af35859f9cbf5d6183ddc6993b388818a856f0f8b15a1b4e2c50f34645842032888e572f86c5a4aed28ec85bbd27194ff903187dec32e42ce43dcc6ffe9a27ec1c1ac65472b5975288da4d1401d8bb01147398b341edf350768b614c78037466547169bb5401ebfce202e13cc1265c7270aef882cebf061acb82161f9a6c08e53424e4278d2ab6dc1d650f7cd4fdb807412f9527497205ab8b9d499b76ba6e107d60d6edd5b37427fdc20a3500dfaaca128556af57f05a6df68afb6ac66cf874cca2497782f260976a81f0f79a2700eafd200c7f3660e088c36b2ca7326ae6025c34f5c20d59a7e8216efa0aff35e0376626d6cfaef7ed6d19f699646ffa118c467752dff8146a5c6ddefce8ccdae1aa4b63c32a5d09ec4f91736d2526f95f4b61439675f919ee38f2387ec0fdbf64db2ad28aef4704f5a54bcb9463b08b9e5ca4d54a3d78f493458d3c64f5c5af48896d4712d3c55fb6aa140af60ba2e36c3e231474855ffd6f503f96ab9d47e5d0166b2c465db4adc3dd981a69fc23d873559528deae39c96eaa2998de0315d15c08f969a069fe4cfc81a99f678d1e60856b6eb374ae9fecf3a89a23082683fba28a8be49ea67276791e9122af043437302a8719478ff76fca242a18b038ccee45e8e52b5418ea9db7fe7707a6208b37f4a355ae2cee828c0ffae5d9061f0253ee175b402f96be6153b1d8f92f9069328bc9b5bcd17dbd8c798c8ec0c5f7d0a5902a9e8f114d9182bf8a04c3c2799e51a9f741b054810beafd3fe381728d113828de228bcc3b619dce1fb8bcf8f4bc4b2f663be18054b80163fcfee8a3e62b5bfc0f0e7a2ab4f1a1c8ccbf51928d26f507b802c522e444fbbab0c46c9eb649e87741b668b8e1803f0931ac3ed4c5e5f7d1702085e73206ba1ecc5b771fea588bb618b457a13ccec1d1b09684749158bc0577dd3eb8d513f440c5bc70761fde7b2ee0820c0d1671180ef0f53fd4daaacc7e996b6d877586c89a954dde1a28978d4806b1259f127f024a5d82d518fb203d2f069e401550066f04388e29c78bedc24b9ca054e5a78298f8a52a27d34632e34ad131e245b8a9da8530d5dfbf0439cbbcd9d7debda1c1ae7d3c18c3477f73656774a6eb4292236a0c021c7d5702d2163597e1c801a0d3c91dd9c33e175f516ee54ba68ec7d841ff7bb7db13ef25f46ac0d3bd4c0897889f16f71930fa129b8b7614ff31a518bc17435cf963acc6701f0331e27deb4e1f5ea755af7680badc84ba752a85c4f451c13282c232de6f3170c676ca3cd0e1cb33bd7605c747ea8932be76664ca5a03983dcbef9f58f5e8a8c0b0c19dcd5408ed04d22dfa9e92bf81f9d035e67a567de96212af3231e075d4e71814719bcad58dc26e3a461f57a2982a66b61d42527ef09f0e3c0bab48f0ac38b08e74ac040869b1e89d967a6c8664d2de42eb2fad0bca363896fd0815236f0c7f670e6ac66a13b1fa79e74ac79aa739a044b8271e8e8a7a1c2523e0e5d587e9946a7bf985e7a827b13494246e6da956f49e92d9f0a64d0cfb661b99ef41f33fb1685a35dbb8dd9586a057f24dbd4b1a793648f9562bc187894a3e9b70ea665be28bf3060e5baefbf898c9e061946974aa547829633bc34840cac52e0d46fd6c062d40fdd974a6b1215e87dc7d5572d17a7e5bb585158ccbcd4271f83264195e34eaeec9162456639f4460b9c3729d3dfa682eef8a7eed6612479216715bfde889bd1d342291aafddd2e1639adc196593130cf93fb3d4af0239649b856ae21b729a1ed54ea49407609eef193c55e4b0f44061257d0536be35d5cb9e2c1e3a6d12c1210e41dd23dc140aaa9472a68862b1e72bb751c442ca30bd7d1941e0fd6bcd2cf47d0db5702d7c0e62bc10c706b4e0a2484d7128ae598c3a0fde2492f00a2517ac44736044a6cb65a464c126e969f173bfd788017dadad99c93b3dcc12c18c655d30d0e5be17260e6e267e249fe6b53e4c24342f243b6caba6f756582568731caab98b9fddd548cc709c7e93a75e8c4a77432827f7ba88455db82cb4fb7818e7e2d121be51ae4ca76733e43f8b7798c53d487f75e62575c17d3725939e8fec92b724c0c7a67355697b00fb62a7dba23d4a2460348e3cbe7c9ec9f65c3e61909277af5a10b956b022b74fc42dc88c7a27bda2139794712056980f3eaaf58d007be2cf16457c88eea58cdca34693ffa25b85c3f5645851f335d3e23dca5bf81f87882ceee611defe0869e67444c249b19648f99874efc01f82a2ceee40e78c9d16bb1875c62f712628599300352dedf9f6db0bdf3575ae46aab1a83c4220a325280d56c28ed676fd23be52cb1aa50918824ca1c128a90c179e801ad13ba362eae56355903758c642dc113273659eff65a077af0263dd331353f02d124af3d5d1169759d294aeca6d7abb556581abcdb69d3358030f35022f43df2e0cc01c9503a9a11d22c621d863e9f307854ac7b27e2908f28deb3255c1ebd573d6a62732233062e09cc53e209b57ba0f7b916fdf20d8763f76c797b63c4bc3dfa2345ad13f62ebf700de1dbe42b8d841c8998f3f47a2d316910a91560469c92e105b4b976499644e1f30f994bc43f87d629d3aa70063adfcaa2d37ad7bce1960873dc5d6c0537a6afe2e13fbd2f3c589974836ece05cc672d33e5c5d2007e2ce64af772892b25ee55e20ed6a9908277c2d3b55b685b09cfd885eaa32172548cc6dbe7ad655fc5970aba1cdb4d4837daa3c8aa110b2e8822210431255163e77cc9b27a1454a1bebcbc022976a1cadfc490b3f5705aa7048e085b7890b00eabb7896dd9a46f41d78526466ee7fa4900d3747d6aece961772640c171aa8d2c6b0384e86e7782fb58ef8b104b158c37cc39456bf7766839302ffc6d43e77cbf47a0409ff98294cb8b4e444e9bbbfd58460361ce0827ef0fbd29638f593ccbb991692dbd4e557e0a2c80060d3018017ffe9047910dd2b164b7b20fe94d486985eb32ff9c88bc93c0ff226e6d7f1996407cdd2079dd9cea8e3cad9cc5d29a53df020dd7c530259ea4222cc83db2d4f9cfd924f0dc7ec015e08d14b1212c7c738814b764e1f7de72ea1244a061c917e8c03a60d5a4356997d6275559209ddb52e44c8008f8bbe9c5c363f2b7faa860ae18025cce8b89bfd817ca0c0e5acd34219f4716e8728ba5e993063197ce7af4390a0ca765745d36a2a48f423caf8da2c2c4e15676d3e07abdf60ed524e0cdb91a2d2dc8df5fabdde68981413caffc8cea8922deb7148233c35bdf6c616a549d5004836e8065ab2bf44a67fdfe26648bf4906b1e17573842477e0343b0e0f473a2a7a580106df5686228df66b73e756b73873ede270247c49a6886a1d4b010f794fa3904525762cf4dfcd75d4edd0135ab2a674d20e6fe967521868e2180004bc56422c0e0bffe8a0dbcbbdec7b83deb794f0181a49a0bb0c9d149c14cfe935a6b89bbd3fc8cea1e84d4e6bd704f4c4a616a7f997c8b6442b51a83374f86b3834fc3470bc552dc6845004a037c82e424acfa39f91ade35b3bb721cbca848a4971d4586d1c79d8e95991fb3abf11ce4c6406c1293ef30e50092171ae54b21ec83a8897505ecd7f5f44f428a11b5e86b549ff6489b90451aaa1a3afa9e15552fa8b5944ac81d047a3ed56e31583a89cd59391efce72417ac0021995690f2b25240c17f69d3d434995f44069a3647e688de9eb4c86671f8e177e4e006c3fe0ecedd8df077345dc1284f2895993fce4d99279ce6823be514296f33774802aa4ce1ac766185dcd4c220727e63877cf12f10f00e4b47e91da8187501b96d83315468f93af8b3641d86da9d4d9edc04d7d44917121a661ff36e96cfceaafa8dd94a5a7be5508575f4ddd6398ca45eb21c17d44a53d3623cce44da11d713058012c8ede0beaf9772903cde745c57032eb79da86986361542d5934cbdf802842ad5e78c3dfd80da95d988fb9121682dc6634abc3253baa7c8d20581f261ed005ca883041f698b8546998e81a1a00f3114a44d6a2484594e65a472973536f0067e99e54342b97b25408d58fc583b820464e6d56874952297c335c481f1258b7bee078d9514f7174160238b175d748c72f32fdb85d6a8976b3ff530cb245cf96fb101e855d4397becfb60c704447238f51b12a9cbaee120c8bce580072905d65327ee575b0d35614c36e455fd2fa027e12b44b3a4999f68196841463b016b58ebe189e990f0eac3c949d0c0842a52981663abbda89f829ed1ab058a6eb69fe9df2d95d33d20bedc1ac8b066602f02ae706c3155be01c1b6e3b141df2c1c549c65896085c586a8d73b017046b69843de63a31c9adf2913da435bdaea0b3088f5f83a7197fd1ebc2e501828b7b1ebe78153073d35757b54035aeaf91beb512ca616dcfbddc52fac9ee567488ef54507df0e26af1f293c49f4a0d85079194730ceb6af7d4063e07e6295db7a894d667c65897db6dab6b3c2d10eb86650d2693d0bfa9ac0566f700ff746e486729de134810e15d36c57d6314398c1b655f4cbd75c3417ca6b5ec58ea7555c18be4c1ff0e413c9cda15341a8d786e956164c8bb8f82d590e386eb5303102244f0ee6dc74cf6355aa084014a2708e5b7062fdce79fa9c23331bac79eb3f20d5db4e2ae709ba12408e591f08d2426c5824b87bddde08ae213ce095261f20a718c9f524cd3499570e59bcc81eecf922217b566d83b099cda73d2809e498d0ac66a5a42f3f931896cf3d55cdaca24131cc7c57be1174df8fca10bfd9a4944eabe9851abf0c5f11bbe3ae77a42495ff0b7a22ca9b81371deb85badb5f5005e6669ed89fabb5f5d4b5625ebf4f3e84177d013c2861b3c752e9bfeb4af530d607b6394698e513eaafcf9ee1fab380ff579105b9edd271b39f0dea8b447d7ba03ee1f0e7e3d5dcf20765a6ecf15d9a966ccffff9e2caea87dcd8dab9eacf6ce54c53a4493cf340a1ae7bdb841bbda40f9c81f8680275402d59330f01361a26725cbdd230482a277addd376284bc8e1123cb17f94933871563b40f34aac0bb28a710357009847f78bbcd715ca749f00c57b5f12128eb3ea5cdc7033b9972db310767f3beef7c1ed5ee9003b66e2753d3326c6677fe9f8f555d06d65b40f867965fe7e6d0890286dfe7e15bbc5e306207765a3a1be4d00ca71ccf30080026fc512e6b9db8e8237bb202e0384276d26d92b8eaa9767bb6fb0bb5242032f5a21df3c61219815fde5b571191b00ce18e0ab42e0ee64793ba5581e52a22b13e694376e1bf94461ca9c9dcf15ec9a86a7afff60abca032c8fc9a55b1adc708974b2c0b7e9a58f32cec23a81f91a22b80c08465376ca925eece7407d19be432376a85bed28d9e129a84d28b3edb2c9f1d1dd296309c9927e13628668285504f29bfe041ddc7866b5e42606c25d0721d1a63fd6fc64c915cfd70d85d9021375b6c95fb4b803d1c56666a657e1d6871dce3f728b267830357e66a99194ecaf8518c0c554bc92469fc6d354267e28080ace35302b066c89205764752654cfe9a599c97146518789bf9894fa9ca6e574bab6d8590c456a9fdcfa3dd6f79c3dfc8dcd27e40fa697939096259fa0ec811592d5bae52653b371bb5f437679a06b363b4615d442dee2966b8a9686c62cb3825202885aee9c288e77b8d130836da64a3c286a3c72170cf354b2f84084b7536c866b4d2ae613034a04950649f683001c7a13b14d4f0cb761248ed2a744b3cdb2ff397f31116e9d9f02e87d1e913a33b55485d484c8bd76e305be7cb8b66dedde79d4e5aa88bd3982f7e7d34d6f1fde9ecc49e2ab204b0ca12843f4bcd8b705372fe5e0c0324d795a9fc111d184d4e84a5731c793d0052e11fbfdc829236963a30c6052372b5d47aff40bc4d8a4939acff4eef4a423ac1ce459d30be1bca86f1d95fdd4e53b461f491d0b73b61e6cca1653eb284e767c8f0ae7b253f6a74edbc87d56f4cb0c76835fecd07922d249bca3b8485622de7876a864d03baeaa1bf444a3f9f752de39371aa4aceb1aef8b13281adbef543f99ea4cc2925d7ef4bdd14533c573148400d61628d022a75faed0600a51da03181b8c83b0faeb3fcabad1ead38087ee5d0b5c303e0e94355ee38180ecc119ac980a9463c90075fdf1df2358581036e300569d73ab6d678a9a0805fdd3a546ff2cd1c50e958d95f9b3ab891026aeda6c8fe46e34e3f9af764b495755c8ade803cbafc5f25c1542b2476ab4eaf0221e1408b47b1feb4c422f651ad17a7c90f7ec8a668acbedc23b1e7c905ec70250f6bed7f890c6df94811f9dff3a90681a3f37dbe09b8a3bb07d1283606d010d858a70251eb461d56580dba2f7ab082e4f8b9915007c427cc35e0292423c25447a38a03fe7ab5ff6d531688c7c95501980a805c85b05a5791d02627f3256ea7dce91d80ad34328eb47d5ed73498e9f7a6614d81672ec25c1f6c60213afce3503061fe23925898f8fbb8cc3390645bab9140f5637b368df40f6b3e788852163fdad3df14f3594b61ecee7a039d45c400923da6ef5ec30ff2e024e654affb605e63c006a1710aae2976f638192fd2dcdd79855fad2b4edcd3ee326fe4ddbefc81d965cc3de62dac4e91b30617c0d88119cd0a732a95e052687df567621a668adcc75a1ed66e1430d5dbe79ea05e8e37fcf8f60baffd9c0f82805e4ef3e1cd8f089640ff688831ac46e9aae75d61f8a350cbcda044fb0677bc1654194ff945f3a08fa304f84de8963d55c983cd87970f048bd5850c076c2f50e888af3bb8ca8169161ed6c536eee701eb5942e772c6ea5654805be65049a5f7db7c6fd7597d6a07c163b4e4edb69a3574b0ad8e9fd0459d9ac59a66f17085e3d374a9b31b49c24968efee141d55339100767cd54c82568ff1940f1df4fd45bf649c20bf35d2020265ad6bf3441d35b0b816200ef8d4f92980cd582bf4db9ac5b8308f00f5a2856c80212478fc20abed8de53aae58672a1fbf6f6a2b45c401e510882021830a0b295936a7c4314aa050594e220106a38cd664110c66e21737f49505f6c6244838c33e1a95424677a7883b2f61aa30cde5fda0f559599eeac1f66b8da5bff86c16cbc54b2412207a53fa4ffa37f819c39fa9098e428f4ce9657139d9b4fa81d58f7d963e9dc88a45c0db0491160633ce4905dc920ac4df81afce94212254863bf4fc37cfdf7e81e50961aae224af0dcf14947253c85cb6d96ed309edde2e0c287919da12da2f3c18cff80a38bd5089f95701135ae82d8fab3423a9794edf80fcb6a95fee15671a7fb9981ebeef5ce57f0c817500aa91e01bd9d45322c9e551e127732b46293fc567ee192b52fdbca3d550c0a71ca2ce8beff81635551df982a7ada2718644b0221f9ca5e3c9dd0365a6e7652d8036ce265670e41b2d0ae10a120cd50fbaa72ef498753159f2ba702838b522809d232356a6e4c8a683c420010b6baf2d6428993af82d0cce4872c199b34652514af95ff1ff3cb5735e7571e6ffd60728d7b177b92dfd79be0018d556b8472b2f3f9abdebc422e4c5edb80c92ffbf9d88d1bf8933732361b042731e57b60a806fa7bf113b3f86ce53ef1fc78d3b79620cc0e4a43ae360069caf7ee6dec0060f82ce731537971b302f2caffaea3dbc51fa2145e3acce78d9ff1ce65ea8f255630cba96fb2a73d71bf9f45f41da7b24da4c331c2239bab651f12d8f842c063545714a5b5713367720d4f39dff8fecb2d56f2e37d0841f65dabce510d2357888baa54dca52c2d8f87cc667c8be3ff34912952d770ccd2658cfe69032c22666539775ca3f35e4c51f657ee1b657383a326ae1f152141d8f63899f6974229e5c429e99ace9399ef6f255aae530ed6a14996cf49c520274e4df7afc2c8a356376233141e44cb6c1ca3d7a576d72b6e6990d968cb794dc73f42a5c886edaa5c37e6791f1fdbf90cdbc0f1f0819ac9913fb04194ab64af3732b2568fcd7fd47cd45a4b0dc31ef06381f3a38740f8396b5755436d28b398f1025b4a834ab44ad0df8159111ec5ac4ba85d6f425ed900003eebc25d5bd3cf091444153b1cc3186c116183628d9d5489b5abe6364dee089576d598eb8e0bf9bc49a3a353755f9d49da0af244b95079f296511281ef9721d4eaf318fe85344fb1cb88f30612909f09c160074c035eb62efb3b23dc630bc894b75ac571197e24a404b35c8345e7e54794bd56d540752184972c9cd54ca27fbc38f1550c396c1d74c95a5bc0b42ab48c0571dbf47065fd163ae4113de0a8e46c56b1dd243dd9f8e7bce5db864b9974ea69f6938a3c60925d9f9474f71f7c303907a59718caa4edaf48e5e0c6d3f7c660793701e13be9c75631cd1cd31610a7849f8bfd3ba9433d2f230ac7c55424a213db38b0aac22388764c515fadb249c50106e2d1a7378c9b88aead21cc4c32183b475395b3bdc516638460d832879262dfecae2d8f62e1ccab70e5b3cf51ddab56dcd9d3405582d9e8ee4fa8fbf6347fadf1603a0f2b54f5a817e5a635d8e7f8bcf80fb10126969bf4341de04aef0151caf9017144433164456d4e35edeaecfd078f43ee16dc1753675a500d78e94996815828c963a853ca7f73c8f5de156bb6ff9be75bdfafa1372c9c46c71da354ef28530307e14de1ff78c42fc1be875ec619d2c5225b998dc5926a971290eb6a6a2b41bb8dfba3f2f59bb074b2167593a73b3d5aad0a7e3bb14500921c39d7785a476283ce6fd8a7353da91a00bfb7736d4f98cf70f9d086f1f2a41d405e149c49e556eb9bbd33b03cb9fcaa6ec4a4ca17c1a37d9bcbb660eb3947fa5606f58afbe5f1d8e015cda8f52ddd208b62902f35d618f90ba65907d7b2083f39e9b378892fe58ffd8a99ed6c82819f9b5c8b8d56516798406ce1af89d126ce2ac01ec02b4def3b67b96c330478a68ad230de5a7502540be588cfa900f73bfd86b58d7c64232b03c641e8b056089ccdebb5aeffb4bfd166c54d4d5a83b1fb40097f9c8f12ed80684060b0554ad33b9486d65801869d2326148326778fa1a48cab7d10c9453327f6118eb3e2daff65e2c15dc1078dfaa22927fefc58ad79969692aaa373361b4500b6a9ba237fa6673d14bfe374a1fe2609a21802b40a87ab45332ff9b4798755e9f4ee2ee2bb64e01fe406fe5f0b30baa37a39c974c722fe2c51ed4c6bc534f9c9c94df63566c9d0382a8d72a82f65f57cac6e88635a24b0f3d7f372073635294660e53731b2613a8adb6287a4a901cd6db2c4acad9913267fe6769cfc1369d12c6aafb826fdbc017d42c924546cd82589374506fe65ea09b8fc6d54eefd6dcf4681d91155c31b88cd0757dbeaabe5d0841ec50945f1107cb3cc654b0b8b102ba5b171afd7e88844d7fd21f095b2d3a56d6d117f51d12fa1d9444636ecd33f9b5950fa10f895b47e04296759a745cba7b682351f74bf12171e95545cb543361bc6d9b8935c1ed91687e73b89ec59bafeab2ff0a00e97c72d6d3d9442b652aa2ac1f57088f804956ac1bd8a2364faae32d9396f3e54b279d95ad1f7e8b8c41d7884c5e7fdcb38e89ad085a1212c9e8bbb38ba9346697bdf998179bec324a2a63a87754c14b5e91511fb533db6e1e5c2016419c0e9c4a6e5fe172a8a9ff94c9342688fd7c4a14c8d73e97d0decaed7f50b6ff14959db41fa8b067618f3e52b206e24d6653047f8a1bc1a769b7a808e98fee342d2f8a7716d8976081b1cfe16f234bf49c5ac1de9f5d98e3b18a9ef5b7d4aef131bd890cec237b0e5a5e7692a078b293f90e70821dff4ccc92d58670dbe1146df485753ed54eebe1d7999729e00211a1f6f4435095ed86e7f84213e722777381aa4d26ac381be9939644565e82dc067a996d784294f62d3cb0df31fd2081472d5f38ad4b95c7449e0561f05f1d7956de6a7ff5e6709c38da503dad07de72cd11f3590fe3b8d150c19c287d4ce4d74672ff95cadd6946da513b5630925a3344f5ac15768d467a8c7f20e3afbad1b6263d107a315d14e64236a5445fdbe1486e415aaf283b8dc23f9ff6b10f31a210a22d230412b01a6c8ba3b51e06552c2c8d85ffaf0d30aedebfad8ac128ae9e6fba90c34bcdb34aa6bbb4b189772752ede5f31800e58413563878c292972237dff99b4a556d58f4600f0b39d614ab8d94d9e06ad9e5a1364c6292824e73f06c86e7e73780342498e5c14c92b7a1f1cde8be4762f2edc9b6ab88d3425588730d35dcee1938eeb1e530b0a207e875391986f6450585f98dbf2d95d7b27c0876bc6d149206aa502d0a7a1338534cd77dbf6d259e73132e57bf77a77b6eadd2baceb64497a38035da4ee56ec11b68c7e55c7a1d37f70b5ce16dc9e463c2d23773f43b0424bfe86d8c077c8cf180355750ac61be9aa4ae7dbc22f5c377804e2fcbb30a194678607c2ed1c30e02b8b124d2292e05758bd663cb7b9c1662e462415eb373106ef7128d3d208fad30b8b0fd30855a931b778873c553eb751288440abdd45a95eeb6c29b4b1fe1ad3df7c9c366e4f831013f6911b6084b863b68c61ceb1e80a57f5b84d47dddfe85ee35709521f68f3842a77d1a7e12c8bad4f8d137e3780b1ebd1ccce20ecd07e88b5c86f046d4974a1cd1d59350e923de98491d361034e516a9bd8f10ca91af9e636703fb69b6c091713b068d353ccdac853ad1dbd266a52b27157fcd941ff3c04663775e57746d764753900b8777383861c011aa001724207e269574e028e3c2097a832b8cd80bdb48949cb7769b52a130399a2c6134f445dbc983ec39ddddd2060f970abdc2340a4339a8ec866208f5bfd0dfc9326353a7cde4bb0dbcf7d1c399eb8397501abedaa97c08c30fb81b9b1df56bfaa3965843ca32148f9b1d657ea47bbb25df902808116965a1bc7ec1d41cdb60f05a7b6b96a99d50989c8c17940c1a4753b9341361b4398ee70da7c13dd4125a24eeb14e4127260c009819bf18396dcdc061d39e38f14a494ed5951320212c1bf16dd946e0625cc7a8fc7ef3579ad336fd0d2ceb7aca9a01aabcda30af206bbe63d669280b60681d674bfb45551fe0c23328f217e066d973d8bd3698edb68c55aaa05e560689a26159993f5e47bde6a073d09f73fc8d09bdc3a9f23a14099b2e1732b1fbe329bc279f12ae5667ee985d785918c2572fb16c8fa385ced004d22e8368a309b4f07778ed71e8f17e2eb2b7b2c81ac548dd997c36a38b3c95d893f5f515dac4e871f2b49289ae83997fb4adf15884700d4e21501bf30bab7f766db9de7b47eb44a67a6a1bc00ca71ce6b4d673f962747bdc191d4db50fd717152b11d5d4e5bc7f6afa98ef8fda1b57eb375859ccd706b0043b60905a88bb3bb2fc1acdcd41714afeee2dee038965451d1e0b67a8c91759ea213f8a2c86be1a8baab3e606d5e38985f1b5423f4105e58ca0a1cb9867588dd2e1f9c8c5bede0ba3d9af839330816687cf866ff85269f04d5de01f5b7bc0aba824cec596639b604260491d7ef7be4b7233e4ccf7f2eb46fa733c2be38b7b6679dbed666148901372aa326542a9a80f14dde08b9b497b952fb2700ed6cf67f0f87e6bfac0590057832e029b513c4b42226afea154d1c40d0ed0db5510f0903ffadf3d1d9c63c89487f1e7a290880914b5aecde02905fe1abcbcb91d1f9a507afa87bd83b6277466d71bdf56d6812359c89d11e3335fa40ce2fa89e2c6e2feef96a93d2321c46f698c9dcdbf7042faefbbc1266720a7cea02c0d35d07a785c7110a1a2cec5698f9806e34360a0e5da36d344b124b190e930cdf2c262e8a52078ce0418f2de6267016999ce7e19325a4db789d3293caaf904fab3b4f36d245550da4548bc7c692e411b830c6a85148b94f5536f522a9bbcfa6afe525f9cbe696162e0b7ad014e2432485cfa04ffe999407b80337a7ab2433fddd18345bcc229c8391c2639a6edb6975ecf2686999a96d51e4e78a03dc5e152923cf9894845fdad545d15daf578df649179c038d883771816362c53185d86f0cf27cb9f6d33202d4f04ddc8500a726d58ffaf3a33339f548054535cc536e0ba5c34cedc8f35b91ce6dee63d698c59f0ee3030a797f06ed5db60dbdb9210e1c208a73989c461fad27c28fa07c8f0f96dd23e9659e618b01a8b36c6ade0c87c1423656ea057beb5c6971ab61349b632ab47fe3b787348de9d5aedec3aa5ccbd770201f13f47940ffd610d9e649bbfbb96d53dbe4387559cf5f281dd98ebd5887d7fd6e891c591385b292859eac279d603c629013be01adec3640e952b4efaa9c07737b698babc5947e0a1078f95528dd2aac0ac802d129122a49218d2820905fd4aa871a13e351c7f9d91cfd5407ffb2ad357139393becd310a4d2e05cb3b03405d2c664b22c876ad194f0363c41257e6da2fb4d32be7db01d2a2b935843098fe9ba2d8026751ab14346383d17264b71d1819cc0f81a193529d987b26993c784ef031ae85c5ee9d946e083e4b74c6d11b2e28a637172ce588eeda39f30c095ad9cdc5c3882502f0706e3bee74448c269c7e7a9eb6e09891caae568ef573815d62a79a08dd2704897d7f5b7c5f33615857af0a096ac5475e67a961e1bd7812f2de78daad839d2677c30e5ba25be4eea7592c956e0923314d960f7350e55838d6353d49fdf80ec751432e80b5beced3cd85a68cd1ee4b00a414f36b8393655d0ab07601a99d34b1873514b5b7e1bde9acf38e1eed9101fecb63cf6fb2318408d108a840a68e7e31430c9a6812e651dc968f9c47a0b5feca543aff4c5eeab05b16d3de43e56b8ff7cd85c0fe9c157d0f1d7c4bf8f63a6eeaa33b41757d4375e2d89b24347886bdc89e5127d1d00509d6a73d5a4983c9731c1b313b861f5775b06dca0b23fbae93027b2594bf4c0011f84da44cc0f800a088bfcef561c9ece7cfb9c029174f654fed55a373500a958589a6bde9a33bb47eb8ab845bd70bfc1300bb269528fa7a65ded71b5161e6a4a7108fd5bb6056c20a62d6fdbcda16efd7c3f99d6fadbe51fa2ab70c61675fa58ffc1fb292fd067e3502f8b34e4e4b5225c0be5256763bc069ea4c35f93fab58aa6b49c401a0d6386347996fa75a0d7c826a2502f01aa74ec2880f3f129186b73742d2fbde20ed72ed4b94a24557591e890766156656f8ed4629dd42cbb95f54c990b34ac5b012659fa0924a0843dda166f9f063e5730d84ecd83fe7e552bf11c84a0aa9968c91163a275270b3cc98a05c5e35071ecba4a7e090156f483f10a0ef4c1998f3c1e9f4f3bcba676eeb45d440ff2c6cc64c38affe0846d37e4c29d9cfb315b8c30389eff2b40eac47070c53fb8d0778171f0ec65b5a70ed33633aba4b82b701b28ef86dd422c092acb13f030b348f264d4a1013bd71baccbb47ff6e1a98c899ae1d33132af5b416f2ed30c5027120822a753d1d1e522c898cea599b49f82b026bee1425f8df03add2094af006494f3673b1c4812d27414dbf48b6d2b65f17a1e0d5179b3717746be605016750c3934771581ec0cc2798d893dcd9f6962b7934c864cd4b53d949c8308e5db3adb897ab71f7b3589348ef71ea9d000aef8fc4cc231cc96cadc929e29482155400f2ff96444ce9ba4cbed119cb9269da1f1e9e57b2b1ec9c1a1b1d8e590f82a0be96ca56c05198877550a4d2deefb4cf539b22987e6448fd628a0061ad55ef6f70eb9c743d5c527dc17bf9fdf3c8b50c1127c2a751610171c228e8881ea408ff34609ab61846f8fb976457227b51990aafb1e9bf3b37f0f86af64192213f63643def9e4433ac7b6d9199d9e70dad85ccd9c2f4190f5ce943004dc1238eb969434fcbf6dd733adb09ffa558bde34f12cd0f902128e3c0e1f81c1a5d5322dd2953445eed934108ac5c627401635aef3bd124638147947661f4cae9ea75fb22c7bc8997cdee0a05c2aaf180868a7602b6dec0501f503f62f6ae0bc1203220bc934ba18a2dbcbf74c9d617dc54d85bd2bbaddf3ed715c901994653c8072ff72912e7a15d9f06567ce3abf2fc76d4d51ac310513b9701594035310cc629edcd6661d5b28721e047be9785d6630fc5d13ab2f638220568d85ac97212690339529ed5d2935fe8b90f07ad24c80c95ffe2f47bde8c94c22778d4cc4d3663852c1a76bf2115fa5afdb009bb2004b23bf9bdbf42cd9a3ec9662a7bd1c8bc53aee41de6a3539d585d7b2f2c87ce78de3142bda6651a816e99fb267c9010dc8187e737a166b3a5e7411015647ea346d09ea260ba18afb4fa342c6788d5b144670eb6a90d29e63a4dfc8bef22de16462b8ac3c7106ba97b7820f22c09fae2940ad52c96cddf8e7f876f87ce525ec1817b17293a56dcac71c2e4df7964e298e029632587d7e07e2a5bf150c8626e04b787bfc6a2ede38c07cfca199451afef3235a241e81eec4302125d83756357d2da7371210ea10b6800d7cb90883d95830619dee988cc70b267894f2c7233d54891b3c5c62ee27fbcf3cbefd3a5bf8bb2cdd8244d1d071161ca90669fe2bbf8afb6ccacdbdb9a3779cd1e9459fe1dc7636af90ea3be4ba6e830989d35e83c6517d8e943a88d8d15914cd65417e9e12ddeb8bb3a0567564822b3ae21412eaa3a3cba3cb951e345a51f84f5919c837c3c6b012704f6789a188b01d1366f61173f9ad2306a661f9955c15e32cba82afb080088e34311364bd46bdb8708abb234198bcb6da57ba7b6525b14fc4b6401cc58ea01e51e7349f46e6097d67f5556dbad1e03aabadf86c86131b7d1e1f66f92fa8b14e530183da237629f79784f07aaf2e70e4d424ee82360d2a9e89635a00bd682ddad9bd9019b4a85f074efe482b1c75131e2c6a7a10948162323ab85020364386f34c5ae6aa651309cf204210731aa2fe85a3ae9a7f6dc22b05645e0ca5680b74c83ce8db1e6d4b34871eb73dc6252266021e1029484612eb0e296176d0cc8d3ee740d9bf1409eccaf421eddca588e38fdfa9cb925daf881d7966b1b2775f521423e1357aa55f1ca1d5a79fd9ee8eb3cd6bac170bdab950fabe95f007762ecfc28c9092241099acef46a0c8ea9a8034134c4dd95e3cb98c9097f37faa16a68d7f4de71ba7d9c13c62a57c3b941fc76e7175d206bbf4b81cca0fe0d4f2b3d7f66f0228c540c554aa5c9ed3dc13e30f39db1d04718a12b5055743a5c86600769c5d8dcf686fcb5b9966ff970217ea7cb20e861413d7a9b81715da50bbcd0e8408f5c934a904248e9bfcc9eea2e6117fd21d80de5bc62cbbd4f8519120dce77af0fa176bf6836f38990260bd4b84dd4ab114f1e7719104ca31aeeee4f88f155b117c19a25aa15e5b579d7720ad02b2e6ff6508cd98765ff4c51ea61aaeb93d4ebb74602ba977e0b1559ce5fe93fe8dcfbfb913297d1e19875a3a1499cba55a9411eb378a276f61be8d90a50a09ff57cffdefccf32392cae5a718e1eb7e899b29918fb3c1af7642c3c8c23a42d24c81b3fa531da63d78f57c1310251ce6706cc094b087c99a595dbc878c1dd588459d44a2103202b537860be2aa0efc66608b3d7fb359b813ab9093b86222e4651a67b5899f73be969fa07241cdf9d45f34efb0174d4521826e420ee1a98547d1f2f5d1789c8d6e0774a51b7b48cdab4fd4a134357aa98dbe58eed550409cd7dbd7a078fdee5b9ce1443e48eed45965d74b458c0026e5a788714079bd36e4e3a7e90285b42f1b181e3e37d3db1fe198c47083dd7f54d08ee3c34c82b8d5499154f7e7ad6f343419ce6ccf0a986803dfbad037aba8469efa80c95d743bf5e963aead6bf06826422ea07c4b5b651e5edffed2a56d19855649d773d40acd1c0c469f72bd05b32939af302350c1b9e1e042f4543f90a0f9bbdad66191a36a7c6f8955698b49336449cb88eaeaa0f536d6b7745d9d09758361ee5cf78c2b1774b6aea203ad455eb9cb9bd7560ffb020eb97ea23bc04bb5e1810514b90a4641f42131426b1305739f7e6d446a1003972034dad027ffba54ea5ee833ef8913fff315ee8cca3b219db630d4c6c6c8d7232f5b3ca34f9ee8fde36210a5d2cab57efb124c347398698b9226d6bc2e05d083a54c2e3d7c4907bd198255cfb0dd863b3effd35fea18773ca2cd06d39bd8391d188f0f4e4c1be5cfb8a6a17195ed040d72edde2e68abf6bdaaa8c5caaea7a7d4b4d40ac06924790cb43fa871648b4bdd743009c4dabef42777c5779c9f1c9415c339309191fbfd76fe9f4ccc0d7343302182e232b3c2f50bcb5e61f0c81326b811c51433312634bf61adb21bf7a4ca783294522c57a975b1d1964496bec71747ac05e29825b0ff47067a8167387877fb60a1a37c62800936ba6af1b27a69184902c648006ac42ff01d4bdc00cb4dc03dcdfa52c5f09cca93808722e13ccc7762c3e630f80fd32bfe35a9c2eeb9f153415e284bb4b67c5756c23ff6f7e9ae7cd042b9e596b09f2e8f3666fa86048c7b19ce0c46bc68f0a9b598d08d47cf46175fffacd3efdd0a1c2055767879992dac0f9bc037290530a19de10203634ded571bd07a9fb7413b9334303e4adb3c5a4a022ebdda1338690ca242d0a1ad10431e3a881b944f2db57e930326fea0b0f90bf4af7accf8d83e22a6d94e033f33360fa47eb83753af3ab007e2287cf65fe538b67fd953b86a7ebf1d6ae04e2b4de8fc4899ffd0d7d6965e9a30239cad907bedf4c2ee8df86d379598f13e202ec9afcedbb4653f834113b727f778b8164030a56a051cbbcf4eb891de61481d0e5a253deda61ff50b9027f317819b9c889adcaf6c83f3e7b6b59a489c032e9abaa53a3d0f7c430abed17c3bb7ff73aaebc2562106f666501f28a492599a45302cab1dbc88215810bc76f8d5a2e0fa371256f0a34164729d2b6706ed1bad62db6c9e1de886051fb1208ed1c3587d7466aedf56d9bd9f9245224fe0869aee4ebb597ad21e7d6487214acb83d1d7ab7b9287001d07859a3e44b46afac36e223abaac703dc28841c270ef6bc2d720d8c175d9044c5f37505744d8b0037d16a99a4e8f976c941c8c6bfc1fd2891cb36271f4cf6527cd48af03cb9e5f28b315d806f0b84bc791b41918d64e2ee765ecdcc1cdd2c23961f7dc935a431896213aac713e8562e31463d9d23a27f476d4eadb4a48a69948e24120b60db8d4f21f39291ecbe284b59b5525d3deb9e2ca65c178b1dc04ae4b4c0b5c296aa07d1ca3ac9b35ad71d3581699919f54a24de2ba794f21a6eff38b4d80b10ad3e9221fa6f083a47ef8432ee29646d4a3ca35e256a2afe87df1917ac4a67abdcbcc352ef7484e37528c02cbcafb3c8f8391df52af575b7a119c7eed8da865d84693b00ac2ed5a2a75d1e328ee40aee9d0269aeaa465d9ac150438dccdcc6833678e5c51f22211c8d093cf5ce16bd7730cbe6d75cff5c18f83b2ba7369b4c8f175f8ac564da282c89297e4b8145494ec6d9b284c89f20157751b9563dc08e868cc738230c2a7d6243c65cb0a0e5d732ab427d0cd841fe69cc35159665400483397622897a999a7f0a0c7ec011c37a38c7c18a8a7d402362ece79ac60b8ab13250c475a55494dcfa061d16be22df604755ea275d677fbb410c74662a6cfbc1562e8496a6fb273b7e3d079b119c6eca9ae92605a8c44421b84c37806b3be159434c6bdac319658e6961889fc160592b42c84387d319d72f7234febc15cf7f53647b5b96b43eb6a24f778992fe9edd94a28b7d15082551278bfa87c417d6e8a7b67425db378cbdc176477c349a903831f11a4ed3b7d25d2c14a138b847a19fda4bb79eb98c728b7357a004cf8acb7656bbf071011242ce5291df03a3dcfb4dddc9b62447fa7c40242369979e6822ce7761b1df7691d93b4e7addda32f2930b87e859e7e4482e6c0a3c84f968f41423079411ac3f706b2858bdbc263b09f3f9e8f8c8947d44edba22b781c8ee8fd09b2ade0c14752c6a4e973af4192786063780588c40864001c555e12177c1bec06204196c27cf0a2d1358467ae2d13138688300fb9f90909e10e5b7a7670aadaffa2cf59bcd4590444db229bf0632b6166050f8f8f5250d03990c6cfb0dfba976c6ea77d31e540adfd0cca07777e4248ea04cdf05487395a26c5ee79c43f1a53ea6a3748a4b16063d74cb5b3720eb71b0bb61659bb608886334be426637d6b650ccff1a408c87d8357e9880db00e2f30dd59cd1db128f4debb50a4c1ea3e197762b376891d39a17ccb02626c51985e89dc55e7b900be0cbfaa27308db30b626eb200db19f3cc61ed2617ddbe3b4a0ef36a4f853788b5ef0da47322c343abfe5da3b101ec76fde8c9e53dc1f90d56c8d97b48659e622c62ed9eadba3454bd37a7444ce28a577ccc4d03f89e735d9e3aafefe5922b096e9f9d3eecc0c8213622f89e4ce216fc0bd6e2546651bcf92db115412475a6cee014ad70a3c3855aedf72bd9351ac983bebf45ab13c172e6b87f3e0b2be3c019c401fc9285daf966db25649a9fd41cae1f90626c4df2e185091649877ab1c839650f825bd9b2ccc8fa31149b5edab270d441736807722307c26ddef97adde6282535ccda95c1d3c8cb67c9d83c189e66510dd499935aeb0612cb9476c747bec40b152defde724d0de55965c6aacd0345bd8d5530673fcf64151b8e362a3831581c1e8a3241398c77df701d2c5c7476f6245bcaee28c2fdd3bd37e736be6969b2bf0b0915504053a63b6840fc44b09a8767917629153dbe4daa7152b1b98ea72c47e3e5057f0a769d4e1870de2b2077d928cac7654ac88317125676b0ba2c8841b6eabd9e703f3e5502e9a5bbc36843e1ee6075bca193253c66ec5fa340e0fbee66c15a65bc20f7e5307ee60158797658c3ef657033ccce0e4a863cd4916b06d1fe11de8450355034f7cda2c3316ac5a9ea20d1521fdb8e21072d95d4f5c30f33c4367d93b61d4db906657d7f6d7038c0bc7232db20b500d3128a395fb5d29bda60b1d17055ccf64f3b085714fdb30d48458d3d23b7861cb344ca2459622c997f7636d0ecba83c258a1d2486eab799304eb9fc84a3c7ab1841b79a2e6199514beca60679192b45d0b1801c2a4464fbc7e8ca42d36a90622cae65b299c81c978a177b9fe9c1d9cb172e2cf59c78aae64087f78b32efc4b0f31f53f780de148431b5fd7168f462de4e3f305f79791c3c6846ac82e11f21305c4342d847e2c197d33604b71f1fbb46dcd92bac75881ab62764da17dd5bce756efa51ab03d7cd619a63f4351867e2fd7c69a051b419395fcceee2fce46934813801f127546a6207742514ae05cc14b356ca2069a47f15179da6852a90bc1a4e885518e8cbad26c3915d7b6d23494949da613e3272027311c10b095a7174b14976ebb3efe864b663365a03bd20855c567681ca8d07454c5576d2d68d4bd2d5d1bf78c81f9de9dac9d4c7a8711de383a5197ddd829c195f3f98373585560beabdf16034c166e90b697e37d65db606aeb5851f18bad7279bfe75ef9a4993b1e4d3620ce101f97c84cea194f6da211d46387166bf037f06c616f9a858a53022d052fe33d96e745c8715192480465c7d67947ab0a5d0b7aa99de1b5ff8a7ffabce69deebff7e2f32437088e661826471ef65eac64fb6d74e9c03b0f2bf24f85fdcbdb67613080f4e26a40c785e72883a03f9456d67f1c432f30375c63931cdbdf3e70e2c3ec86e3b578b39c76881c1a290d2b16058dde6d77bb37e5783aa91aeeef44cfbb6de99fb7593683d881a21ad072824f1e77ca69a89baeb0b67ae6c7f79e38f55da4fd3e6bf3e573223304d370c65679eb2f77ecbbf13ecb1f3205eceb12a5a88b383ee752ea015c5cfb70c9e26a7ec62be159ea9a28f17695928139b97320cd325c577762fe44474f428e4b68a416e96bbc514e1a35114f050b0caed4ad62ec1c3c66c6b23c7a50f9301c2b0e43a6292219a976ea1508d9037e849c62ce88d93ea1b851ce51bf7dc9143bbadbbcc3c820f4acf0a08d8782357c3e0445ead22c2e6ba0a963b46240ab8f2d72762e68209bd2f397f0c09afe786787e3fc55ccee0bd81421b3ec0c3c65b99ef729cabaca951c69786b957d0246f01d6b4b1a2e470b9af64cd5f99e59e71c395ed1df1d7112d32f31ae2087cd43e9f92cf7b208669f56925090ff031f1458316b3bdc34ac205b9295362b9d6cb8f549c6bf6ecca800436cdbc927d579aaaed82e0cbe0c5adc64610327bda601f8b676c4f5e0cbd7f3384e1381608ca2fcc9acdbe4039a7c2bfe62209802d1dbb1ce4718b82fe222b14215d3da2efd0633328f7639776dc85904bc5507e4b07692a1986b13e331a8bbfc2784518a4e56cb0b84a9d0572a5292f4c1318031fdabf4f1b71d6038f819bae7f0354232d628a0f6faa346bbb26ca9163416ea36826b4953f7e8f19eb33af1f554bc277a37f007ff5ebe2c213ccb9ca2d8d67773bb9c5f9a1205e74931210bea395d3a9b3a42580f9448117f17a07dceebd9f498052035ea0a73b7bc9dfa5a8ad270f5920045b16aac74b000195a8210a355cd770ab5ea8600337da40e9ad031ddfa26c3f8b0aa83fef466fa0caf0f48d8eaf1f1dcd0a6d4699568ca182cdf87d5a50a3792004af713c1a2d61bd4117a4d1406aeab6de7c8028309b09500968bdb1a6c7cc31d4e6fce1f1b58a721c85223198600f55f6157bbee8ae89606b93b3be8a6f4b93ed202281394b9795fe8dfc5b134f16c70b426bbb8e6da51862be96f54f4c99adc04727f641f6b68ab570cd5de36461f64223c6e6ffd4d6ec211183cde3b672fc1963d63424e84a511147530fb694a27c618dc993cd2e08ec930ff9b8cd5123dd61a1fa34731b693621bff016ed8960daac4ef2d5d0f91c1a9b9a5cae05510dad9782e6ee8e5c5e5764fb2a79840079fde8f884c56029679abac17540e33526382243ee67aae527f497f62bb90ab09a1731d006d45c6632aa66a2f046a7937777cf8decced68bf7910df341894ce4c9c4a4c2c4307d92386b8a31dc1662bf9f9f9d4dbca8a512b6edb2d05f0b96d0dc8123f14c3d9baa2b7e0c132f4b38244e7f2731c00c349c7cbe35a09ba1aba4ff72905ef311e4482e6d5c92401d4853cb2dce125cf1b0531948ed6cae4edc6c327a58d04e1227745ce652664b4db1cc6f09fa017b88b06091bd730277a6cfd0c99d34c8b991b21d40c6ee29f19a81ed28060d1b08acdee998731966784ef1d6eabe62c4d38770ab5bf2b85ab5cd8764f74be0b4765ae26d1ae39bd7570e9cec12a0cea000553530a203d93c7f4d4f0e7225e7ab39438401b67bca6f5f706695913be508e6967280fdc0243c1d4bc61e433e51bc4b636a123d4603dffcf1324e096a0c67f00cc025c969b440bd78500da631c6eda8b1fa253857b16043c4e562f3d8f8a3ce8cec4f57d0c5f4755248ceef68940cd2db36ac601137b4671ce2af1a515c55f30689466b44f828bcf63083024a6d0d4d12a3662438eece4514b18a1d4da6b0169b1f8abd4d2b5bee8e1af1d9b5080224e5891326d22706d91a7457f1dfd0b3b2bc88c87b368ae3cb47fbba02d749f662302f06bedb55a3c7f404a35deb737b85671004c6658e72f8d9fe931e40bfa69a18c41476c9c82fd34ce5f37da698aa14645dd1308a025a7ca20e5c645a988260172ecd8cdaaa4869d45fe64074071e269c4c5c44945092454b145f1b246ad4ce17f331733b237716f47c92ea090ae2457f32f8fe80a48ca103b9bd233f5d3e00a3dc5852f8ca5b0c0cadac93e5db864077345c4ff4ada9c548a35c6d4f9fef981c242583bfdd77a2444a4ca514437dac6cac509ba30a9c4a3e75957ea9311a3a0f3aff1574d001d2ee53c5614a0b1a5e5bc87e3a90a314aa960d4bf1506f3911897adc4b90377eba74058d5b465d3cf2f6d747fa1187d6c70bcdf0f246e4aa498860211b5827491cda2ab3fa8a2c58485ffa059bb109b76567e28ac32850f493770ae9b0db77d7ddcc5414f96335d301e51ddc52d3371eab1bdfab3a1eeed2a4ba2105e9c9963a89454e0be93c453806de83474731e252a76b16fa41185cd9b54a7799d712d15cceb77512ad47c7c1028a3af91626cf3cc72389d5555fbbf20563e78e435a3e7ffcd2db77fc72cf21e3063f1a52c7da4e60e25f4d0872e49a523d5639253ab8bd8cd24901e2b01d3b5d553901fecf0ffa2af035b28033c8fc64ded7742e5587c0965e911f3f8dd3b3676d048d125b0362c1a8b6b8f569587183f2542e3f39b04e59fcc71a4614d6e7bb6274cbfc6dfd0926734f4e368d910afbb93ec4f0110a27b70e5073000916c65a990c501c53b8d93d4af8f725e57fef9f0524ec0a2b8961b666d18dc76b3891060a98a246c4c0274dd554d136f8594f434339d20d43679d006483a2cb505951c796d57944e5c06e8310b008f5490a9b419a25f8abad136c63a56ad29006e301676faa0a520e40f26e8594027d69c285f517a7f04b4615bc52496c376e8cb32bf6858c90a066a1de841303260150710641ecdf758732488263be58be10590aa946131758d44e6b5f9c488ab0460f37350ab65e80ae742183cf23509cf670f8c56f2bfb00859b21be7349c0d727d02f69b9df33f5434ee2e8f639223bf3cc4ccd4d62be60c19f3cdb274ae1eb1021306cba0ba6397c72e546d8e28b8aaf103757fd7ff96b8807073abe96942584944cf30091577bc30870c59c3274be25911a5c644509d04e826c67a02b1a4798af46cc7f07efc3397fb0740d108ba426ab4b23a84063737d3d03bb19de623f75283959b1e494ff2e2dd5301865ebe5d569b1a2b4b100e7f02eda50d914d58bd9741d051228d8f5aac564144fdfa2bb2a7d85c9b87e91ef7a2fd6a17310c02b97a80455a417ccd4e8994231694041d76f80ac7da73869b15de5a74fe1c3bf9612a41d1b6c0c7156d5ab082cbf3ed182c59060c8b82f58b6d37ea490fe3c934dc692e219f34ebab89590a160d1f5dc45a03328cce697e2f8893c0b270b9d274bc0b90717c503c3b8ff224c6abfe65faf478d53a370bd875c1fcc81f62ba1d9d1219605f7f52704821c067344d188c83e55e7793359490b7fa972d119e6ba2fcf9e4b58fb989d9d0aacf701bdf0696bc83b87b157e995f29a31072fd2aab88e560363cea6454804a6a0f2229c2adf091cbbd47b802a13a84732bd97c845feaa81abd8801c9c39a7afa1218db832454e266ed09f0d6cbbf63f1fbf0ce16c4db85b0a7b4e07bced5d0f88a1cf2addd05f4040da6c33c197cffbda98b74e381e9a5a2499f438ca97b101e41342f5a6efefe2efc71f3281548bd63d7241afa487964f13011f39717e53fe770185c12a38637c8f4b6403c8e519af9519e7b210b84da7844e09ee5d6852cfb90cbcc7adeaf7bb08aa2c67f33bd26b21de133ec1fdf7463a898b61bf18e1eb54f4eb8e94010c3e96c159662708d48f973a8d005e5f2c538a13ac66ccdbbff1a66526f9e9d1e4274960edf6ca902d1ca04f793575c4b1b2dee8108d3e239ba8429f6df9db3b9aeb83eac06a0896374b572eca9ef4ad1c2e322cea60d132f1526fe379643a6b071f7c51fab64f46d950cff2d7d5b07e3ba39a06306fc7dc5030a7baca88ff27e30ac159b96fd342a62e8aae33bae15393e1bad54de7654e03fd1a06ae9dc2b66159b131b7880bb408d70223fd1ea46d6f6b4caa94fc74ec72eb29e226a442490216ff57d288326ee94e234c45d6782745859e160f5bc03fe10beb58de07e1fe690233d2c0e3c7258839cfba47e1c1806eb3114d901c9cf13d57abe4872925756e1e29b3629a0db4753e59bf84db49357d049b8e18ac5dd8309a67c263ff39e8b12390f16e178c6be2050a6406aeba65a84c46e9e8eeda13a94d5314c92369e3729f6b8e747b8e7cb21ba0375a3725d016c5af46e0dbf339830254d4e1fcaa817147940b6a30a3690ae6cae709dc7e98075888cafb6207931866869602240f3e0c21343245aa1d8c4500adab9ce21da11b41168114287c66c90db71b48d65554f6134d2955af95a888b7627e6b153e73418fb35d341d3a57d427e9b3640358b1298c30dc58606493621a7529d26382b705844d891c7a30d00ce8d470c7829c73f6e007b18b7d2be52c09681f87236c3e4ac2e500d7e7ce80420761288712c5fb51514c8f22134bbf1ef92e262422e598a5bc12846df88ae96bf43047bb061f8dc7875036f3cc6ea043a8b0d129eeb940edd97bd31f2c5bf8e56613732cfb177eacc2b5e33faefc48c8d44bce079e1851ac54603fb3d641b55ad991fd866cbff879eff449e1cfa7af4f2650fbf3e215cf88f01286b530bbfe2015642679d94e4b6e42d9d64814e00542dc83559a642a82d93e7702cdc14f56275efb2d67ef9ec8d715024a15765fcc47809db1ef39b35cee51872a701a06bdbbfff9379f51ad38ab26639b33b39ff762d0cb46b1d26e74cd6cd15d9e84ec9fc2f2b4fd36bd1cd94796c431c69b5f2458502c095bcc018b6673f70374ec94d42e16b650fda6b3ed8a7341694c3922dc597656d49efc74267f9d2dfbb3c293a5ccfa406d29f4dbe094efc969c457b0e92733d165a672b339d934be56a00401efb193c21cb21922f4e1cca14dc1b793bd14aa9a27aa4f0d5d56f5876dbce5fb4ae53464a876c1bb809809de97af559be2a249a2caa61eb89619fc7a3852d1234e0e2a819ba30ffbc72e40eefac1bf5a82ac194db13bc24ab3e9101d01d59a1ed440d72656fdc5dd53cabb106f4069a9f94600f429fc26412e567b08607bbd155c35c6986ffacd7fe7fac7d7983347217dd4f26379bda77daa60836b8baa7c3575803acbe8d725a3ffb255ab7fa6c7a3cdf5845bb5ab78c1faac3385f50c902f3b9be7eb2e11c82fe39fa94794f861d1fc4d0b116f2f7d35ba79f12e3b6ec7b8e2ce2bd7ede5e7ad43436a3c07fa9392414a94ad2deea3e774e3044e62b6bb0a5655c3a1b2d7c8cc6d700e6d6fcc1c92dc5f4dcdb86f434560343a63689e3362e1403f0f5e498add090f5f91c0c1abbf0c7287ff3232f9a4a3425b0021f85b80effcab1d67aa7b566c4579b591b306cd1352714a04373cbd301f5e4864a3542ad679bb79edd7f053766c80b7b38ce0b34a8bcba694522b2a2c97cc778d8adca9b25577069c9d1910066ff9cc17ff352c46ed4c7fd6c81eede549165a494018495694f75a5b801270f7769bfa05a00b370b862b36a1002cea615535d1b41888de42b8da3fd43c4079b4093c9fa3e4d59853fe41a0db57196970db4b54cbd7433ab74e4435c2a30ad655f65ee8c9b8a855e28995857662379556e1a66b254f7bb8cb40f7ef15be365453b7dc5b2caa8939e8dd9422371e34ff064ce13507850cb49e7bb9d2e7627365c429044ecfe1e45478df44a751e5431beafab7e2be3eb91091c18e793aa926a030bc966dce6532780cfcb3bad329ebc136437e39530827b192b680338ddf2d3ef0760038735d4ebe195e79f3de434baeda4d081382135e007f799a833ef30c9f1c8037829b51e4ffb46fb95eb3dc1301f3194fde0e88ec6a895c769fbe71fdc310fdc0f36fa3925c475d25fc89c021bed425081a611f2de0b98e3cf2918d68d2797373876ab318b7528aaf423f21634ea500e9df7225715879c8399b23d19a95f70bb10ead72f737462a3b98cd93d0fd824655560f39f74a2e4d45ec6769ebfa4c58feaaa75869c8626f61db9752297b3dc9c33c6165a933e9d305eb4e322493207f0c530ff77b99af0183db838ea85c9ee73d62d16e96162129c5d406efb2174def875624a6629cfeafc0dee4d818984155fa2f356dfbf67f9bea940e580fe0c1fc3ed24803cf09018d221b36f0810bfed43a1c4d0d7c5cbf85645018e9cc6cf3087e3ae73b39db6bea2840a5792cf6dda742379313d9d7948741dcbb9802dddb18d1d6a85e87512ce43eed6c71de7ca7b271a159fa0d78ae3f7a45f9e30d798bfab441fc2c706fac6d0a37ff5b0226f59b4e1039c53f52bf9874488bd7392a495c24eceb264b7a271362260082e260de64904ecf6350009cfb19d809017efe4277579a44cbbc800ee1c43610c140f92f3e06b7cd3d3b1f67f8719cdc715ca8ce2f7fe20b46d3ce7c238dda66bb5aa7349c92bf57c298cfcd38936efd3de1fd39cdbeb14607b578bcefbaf43c70d9810dcb4c6ab114c83654cd64dd8a20e9792bab29c50ffcf7d4daa91f5f078742839a8542d23d3047fdb1271aac2a3020b892861432fe6315ff4cf8e76681d7400df35041a5cd1db3d13e548c513ccd9cfd28489ce1db7c3356a4d7fd4987f880646e9e85a53d14c3e36e449377db3396ae816ede0cac7eabfe52c080bfc0dfed303cf62b26659e52695f3c4a7cb25b79d5aa7901c401a2475e80109e6f1bdcd0fd8cacc6935420381b73b5baf39c0f8aa15dfad56ba62a32a0ed2b68761575b7ba4ae388e9e35536b6fe47c1241a6751e3be268b3a90b0f333ea03e7e4d7f8083c61da0d3991a4d07c056e20878f0b5692af16acbc2821ac4b58f9803e21c3e4bc96d0e12baf5a2bb205319d4d5bf3fd47ad095d51e332e760c14a07feff863955f4f69776e3356a21d514b2d7b67c04c142589aac23450aab7a80250e5d250587be386769f5ca30968dd1dc3c6912a36308f30c5674e65eacd988af5156da53b7fdd9fd65eca8016389aecbc849c465b13491e2290d7b2aa778764e1b69cbe4ac962e7a617e513adb6f90b777927da8d7bcf0f9d5a9bd18218b1258b36c405114f3eb3c65ce6053d9510c087e02c3e42205ca9d5eb0147c6842b531d85c1133fd39d7970f7b7edd3ad611f7c3d0224b842159fb9ca7f58b0942167b39f4120e5c18d23111fdf16c5e76fe49606ec09e14a69e7bb9fdd0d658240762fc168caf89198857b055f446abca2b5e2419a6ec8c07ba28b71e4092eb0e4aec380dfe4dc18f3e56470d192d0ae74ab7113ec683c98bff52e8da6f511f57f6b87a8dc9f2a30c896cc281681468c71ef6dfabd6854fcaabbb741d01ef92361db744977a9eb469e4d2248505ef37cc679e78956f84c3bc56a5d6f2d924a78fa093891dc527db607adc014c78f0ea46125b7a6418e16f5f884c5fdfa06105c26d2c33817c0ce5b48f3604acf8dd7c16fa7fb85b2c12c1e11075b285dce8188f8e2b9edb0f4b02ea5edb6baa510dea53d560b909c181cb6606eb469df12f8f0ec2081a1955e2468e6163865a38aeb40e18b5388bf876c5558a10e83879b7dcb28f146ce3acc429124afe3b0c30db6019e3a8a29d695d873ab8d3365da955b75d06dc4d5cc9e20831308385ca55b8f7e54f6b9b8187c9103660b224e7c9039b849928eaa7a171a1e9b1b5f029ad978672ab0279ad33cc02ff6ec37bc2efc54865ce1b62475cb69b060b141f67c8b39f4572efc74fe38222722518557078313f4aab6a4b433a72fc36654047d5e592d57a1fafc4a10255ddb28129a3ddff6b49df1a892e26cd7fb1b6e25db19cdc8d44df2080e20980fabedb7b70a789ca39f195b5a906c70152098725883bc97247061e82e0470ea93af93ef8b97afcddd7051aa3d2c5e3c9cc3a3755e2d8a8f619befc20214f17c34de4369141878d41eb19d685ecd08b6e5edb3ce5980c7a35a212a87c0f08020aef78869a200e7a21c40388a29c7e5ad55768dc9d97706a299829107228b482fe77d4490029a24bce9060e5b5ef9c814241c2a1a9a334e5f816315577fe4b572ed1ba76e3d5ab8ed2e10e502a57eca36150ac68a9ff9831214fdb43287ef649e09f11ed1596e5d8980db09a9f3ea17f9f334ff510be7261e65edde1358495034edb6117d856df1f5c972eddf68be4681e1eb71c4e6cab8f62b66f0a0bc83aae55df5a1b7adf7e5f5cba325954b05394cf5e537d7ccfc26ecefdcf1ab876ac67cd254d9ac2407790919fab6ec98c7c317bd479c7a7014727ddedbdaef7f9e583e20ab1013d55d8ee56914ea098516755c13fdf95de5c618645ebff6c5e4f949f2e64a06bd1117f90c8b510a845ab09b55dcb23d69747497cd27fdee307049c826c3d570f4830a14bcd75ad9be304d22f382245c12c24cdea94fca875526193d2f6c0b9419a8f45ed06bc25215363202a0c122864695bcec310aa2c557c9744957a2dcd053380c7bf22a439b36261c9b7b00814b875b8c2777fec419233bb2d8387bd3c2d811455614408f2f5022196964bb1374b991232b481ab3f366b3b022ae890d4087d7875ea84971b1b019ac2f8f8951f799b8f3d72da1d8370070d28dfebfa07a903457d64c0c5c256f98a7f1fb2f14133c29f14550dd3f0d2322a3b820c146cae29be1a902bf2bb63737571c57ccd7659b1327c58fa75699e6e2b880f9a103daae7edcafb6b971d185b7a31592d1b79a2ac8a4fcfd04c581fb0b0940256a9d80ec296626a2c35c20947a0cb0746bf6a14fe81fbb1f3eb2a1a1d09938828d63fb04e0c888967e8cb423f094097bc624d0d830c013da9ead1473908f182593697d4b91939f8e2541b06f6e10511b1748cdba13d77dfafa941e2963fcd59f7c4acd4ac40459d9497d7a3a460823c5ffb71e6292187791265f3405ce4799e55e36c4c38c5ce4dec76ec5dfefd95e9d4b2ad66e043eeead5db64853080fc7dcd5668dba32dcdc33beb895ceb2e0c0b377fd4aebbde7df159d19757612d90032a92567545178de4b666a0b2fd492ea19f67df030f369c57878d8fb25386242b6a869142c2832e57c6f96a72d2ef3374de25a80529e4c272254ad6c091a0dac3c24197105b0c236ba68de0d1d041c79ea6d671a72675fef1f02cfac807648a220ad78a5226bbb44e8cf4425ff96e8be8f27c5eb8fcef71fc4d070a2a424f3ea4f762b0b159a47d95cb7b9445b7a294f0aadaf6fbf9a6d29faf951d68be41b400e187f42d05bced0eb6011ca1e52dea27d397a6d243f0e88e0e62cb48a135df6cdf6362cee1cec8ec2f4ee6e37ad60a9cd1d03e720f35143009beb2ff63ea668d86d8aee115f7a6393292404a8c96659191eb71ae991cc4fb8682f26a4a62243997f6aece1060729fb57f3e5f9bb7dfed8f0259511f76012bf963b15fb4bca60b5883db74e0aeeb7dbf6037915f2351731a4cf20358ebe2b592b399069c67b0c77dd8d51ca2ee26518bf146d67df707ca4ba39bc6357316a211575548d3dab889cdd2dcf8f0720a680a87ca60e0e5425b8ebf98f9eaf25fa1f399174ad20f6acae21e573574bcd2ea3338e663a0afb6fbafb692f578791100303c15fa28b12231c3f65199ee0d8f31df5502e8b3140e66d01c1534490897e3d0cb07ace58c75362a4ef7b6710aa46a227a48afd1e66485b474100893e9efd805e8abc5822da896b67e1bac966748916fdd272a3d8ac98f48aa59e68f2b29b38985427b2d9d379463c0b472de7807b4e96cd47b6c13c3f05a00273ec0f5ebb975ad109c773f500af81d5cc19b1b418bac52c48eba5cc903da3196e1c213f027dc78df6ec65d554f5520d17b0855aa5f003e343997e3c99e1e8626fe803f84f9c33c7d9e107b5ee7cf1e74b368c6c840b4bea171e7f8a36c0d3f3ca5b06a0a0b60f33936bdc3b506fcfdcd375df5798b1874509387d4ac171917a0e4ef8576879bf06aaeb5f658e4972905b7c7486ac053a5c7b221682c446f7cfe6efa09d4a655d9e808fdf47adc7dc16a6ee284a0aa0b165202ca61e05adad565d4bbd5bfbce6a591fd5dbd0263c844ee6a6d83f3d59c8f7f4613ab78232265cb4a40caea96c831c53602fa0ac69181a95913df8e555aa4a25a8dd51a2ff5498606c6eb9b2b7c7beb9d046e61c0f93253e8674b71da8fa752c5df51dd12a5bfd42271b52b980641eab750810adc5a82cbb5215def1940b2ea5cf2024f723fef541a64bb876f9f16b01161e1bba4d99392d271983084d9d109fcd5baf0d9cd968bcf3eadb2586a6eafbcaead5faab76150d19ab5b04a5b2b12465f73b569c6556125464941fd55495bdbe3ee9453146d4e67292ebeb6a4f2ad7ba5a0864ff7a5a127b6d6dd477a72ad3d23282e800536fb9c704ffecfe892445fd7cfc01177677cc3004cc5f28f37a30df7a9b2fb3100688e2b41e852804a872918e1b3a9636d0610fb5b49665b8abe8bb8eedcbf5724cbbb66a947f793c9e88d568f246e7aa8b8263b4350e7245882db82b01907681200ea12d9ba06591820cf4fa5cdcdd263ed8b2855d31598adf9df02990d2f23330393e3b63643da26a8e33033d9d94587652781f65fbba4ee3128b6630f6b5e0b77e65af0821d87ed41aa875468a04cfac4cc54e997e93a03b9eb6a0ba8465d5e225a2553b93b03f36d2e769a11575f111454b98cb068fcda2817132418f8e88f6eca2693cc4ff060f3fc59fa5b551f673f42b9f8f4753d1396683cd2d1820f32ea2adb2bfe3dac8e5f88593542dfd5a196013fad40d2eedb219cbfe9faa9b47dc8c6ec7d66933d0e7f9d8909b9bf116d4daafee085204b716aa8789dedb25e705c1122c4704ce8d4e7e79c2122b36d5efc5aa05b4a9461a1150b1ad2b9f7e86ca30605fd5ceb240e6e864fa4d7a1c9931f21ad2c28f0d7dd4d256d96a0490688b91be670bedef384afaf0079a5aa80989771007f4dd47d4b3da8917b9a23bd1c62bf1c0efc37c75489662cd34cfd65862831c03efa5c8b1a98110e88d1ac47e0826aa76fd3b17cc0a03eb75a00859266f94c1d460511a5331138c348238b0170a5408d04d30622a3d9303e53eb624d8d17e35e4b5820ffeee4e71413a4854d3f7840a378de977debe27fdc78a938990bf1faf9d870f2391c4c8fd9e319f79cde4d049731ad6295f8a7ac19e5ca423058ddcdb72ede04d21a0afbe2667d1003d09c12616d4b48ae7ade7af1325343f900929f2c09ca193d24e522329b80ebfd807cbe805198a37db17d0528453d3c3f8dac2601f36bb60e3224062838036d5f8c2e98a304c72f877d3ee35b86f5f935b82c85d0f190f1bd1b169845709df77f1a936d9abee03ee1bf225b8836da6d95d2f5d09c161a92e6a08abc4cee19ee2411b0dabd943f40d9f0eba8e95dc3d85569502c1cb87f7d1f165754d4f1f605c5c7316a24ab139732aba051754976c5d646696e60e34976c053d659a140e5691420e4454c5de0c0f9260d88580932d3fa82cf5b9bdd952a3157620d573a4fac02363a771ae3fdcb254440a12e462650029ef86e016895929bc0df3150bccd899455c9b751f1171e82d20d99e1e5f7a32e91bb300dd50e9f1bf83159b3abae7b4388ccd1e2d6ac8a9a398ba666653e8a7857d420a5e4db37c64ec04014ec741acdd6a190b8a291b9a38095e0c880081de3af632ee6ca688a21e1fa3d344157509c4f4a41e1ef6ddd99fb4bf233bf54af35c26dc094bb37a8e859d1bab31ac05b36fdedc237103bba0f908edff0bc997726de5a4e76d25f7534f539c2c690cfa1553b5427ee6fccfb679987d986993d0a40c47588153708e7634dac9c3ee9d6509c446ee39b3643dc72f1202372c41fa40bc76f10b3e8f0915d8ca67c7ad4dcd20866cc8fb15c971aaa878905237f0e454a9addc164b5e9880495283b11321c109600253974a61441853eb5d436cf4f9a46d5b58aa57d588bfa99392446958381b164d240e237da3ba07bda031d481bb98904d5d3d70bb883096060d39af13513719e52cd23bf5d3faef4f5499a071ea97ca67c797c751556ce1b2c2010d008d7b27cc8ca6885e3fe72c844d6db7cfabec095cf53203292fe7e73ac1ae82d07879078787b561009333ce0ca940c16c2c64833554f42d2e3ffe5aef717fbadf0d7d0a54d9866603f7095ebce829ebc7ffe7c197c15b486d321ed88a6cef115b79b40805601da42474d30055c13ba1caee0f34012453777c07f51675583f62801b41d3d45fe20a0bad93a35c2a38510c0be8946cc3a593d1ae75af62545afd1aad4fd42ef0edb2983649e921400372c992be1f1c269cfb6e785b0473d3a93353f16db8dce4bd04d6192e0b9aaf7205412369632f143d6c842e9a49c44fcecbb85583010825686dd69c4a0ad9d012f7a7873ae89b8b2549cd84b93f5e9041c4bf0744f954bda526c82ceebf94df1801c0ada0f3c5b1fc650693428595c2ae7fe2c415b44919c0d00e8fddf20ddba18e37e6b08ba840b2d224d64af87d22bf26298618fa65d1dc452aa6f5becb547ccc67caf305fbd399084ec15c177044ea8ccc6ebbffeddc7108e2cb7ae3d005bed7f22fe320df665c4c5458be88ab0072ec8fdd83ad3e4b2f71aa6d48d592c8659977e9a412b058e845c68ec1de217be2bacb74875c667f16adba27bb97b6c2de458179d454321ca1a2afc752d9b7e91835023932e3e0173d8e482a91ab3399c4c1265ae10cd67b51b9abaf76509ad394494a42bf3e37074639df78b4aa4cd29327e54911bb75666f6b9efa2282d73f26ad7505329bd1580abef8bb7c0d5a66db8f6c67d9be352f75a18fe2834c71f7846cd719b117478fe422319ae21960984cd0f0e4bf81f249fb97adc29c56508148d140838656ec25637ca4fb567627d624485756aed1378595c3d92f2e5b207b977d245227c79429f4c1e33fddfee4c3c35fdb8b1df445d1fdd80bf8b871cf82f7426100b2527e9ddce1a9b16369b05f755fb88f53191c9affa1d14183ea83d5440ac841d9971cdd81a9ab3b90727fdae3c860974a27613e80db7d682ba653a60806a6e9135e0aa7640c07bdcbaf1c94bbe6b530ffb0d77aca1245f7e5b7cda49227cd20de5315caf6006471990edc524dbc5f4579ee59660efe89cd26f41092f207b67db6285660ca94c3d652bb390b5eb5d6d67bbcbf3ef414c90fb031e37d2733316e7c1126eb90e73da160dd08e62ffcfb08a322877668142d017554cdb264d6d7e94e1ccbe242b1b6e3cb57f654d9fdca9bc74bded1869400627439eeeedddad7360baacc52fdc5f9b426b7c8039672bb2f0e786875d2ab56f985c8f6c624ca67b53acfb94ef8981daeae3798f8026dd1c2d9af257d47df35c295dded7f59ea8504439ad62fd33c0f6913f2905177bb0ad754de3d73f65f3b5133acbb31cb3e260ead4bb0957a8de8ec61a5b99a018281d8626bf62ed1f7c718c15e00b2b914f50c0b48786cf8514972fabf1c5942d16985c884eb8ad13f41f92b3dceb40af4775b6c9697c0fec86d8c222da4a73982c3f94e6557e5dac4a600b4af5e346f55859b54d08b225fbb96d4bd331aa08dfb5a68f98a4bbfd732e6a35c6168bfa93973cf08e7d90a784cf4540cc10adc219675873f7c95d5ce5078762e14bf90a01e99007e30ca66190d1a4eaec30dd14454f4ef050c1b24cbbff94089faf4c45aae27cfbebf4269896b9a1dca4cd09edaa447cde78acef6fbead821f0e9325d131b65bee98e965d7915fa9b7dca5c63756d545a70324ad8d53ebd9cf679d297d454d3ab78ce35e544afefa42c1fee974c2ab018073bb667c4cab3071e5b6801b63275d44d43d2edd7c8429d26ae30e5c398d7e74e216fc99bda6b6d8e77f59ee1bc4bacd168e9959bf7c9dfb9aa2149190937c41f35633d4d924acf749ef6424a9647cd7a93e84db44f0119f0ab99f68390830ff12af32411722e9c9f8735665e3b7810433b5793fe34a163c02ec95bcd452c29b55b107481ea155942a9f696eef93ddb8c1bb265dfcf08e983655a2d0bcc1cf25773a205945fe6e73cfedd9be3139558c8af5dec72cea33b72386b446378fe7e6cbefd2369bb4c63915c168545bbae58cae63161fe2bd0e1e60b67f23416a104e29f0d5cdc121829e18f7da77a10d3b51b861e9ee3a61006da225f9e226f641aa11b0c59d1b7cddbb1dde7a9972fb39dbb80c9520d2df3c447377df9c5a28e8b4acf8a3b10d5da3dde96d943d3a97774a2ebbfcfa573bcb7ac5d32f393a2865ec56a8532858f7b69f18ccf9f8052fbe5e1e0724b31ad807a5ee04acb4b7588cbed1221c4dc74f8d5c86217e7d1da78eca0eefb78ce0ae20ebb9a05e75158027835e562b40bf94b0eb29b07cb6df069955c5bd848ab5669a2f8f870faf289672464eda0f2f64ff3db0f7e952f5769446cff9bbfcae8e6bcd85e8a9ced7d39d9d63d0f23e1d617f66f7a702de2d363d2fd1632ab6cce41064f88f11702cab124eef09358f3c8fd0f1a67a170843b130a351cea5ebe6a8d1de9f5fa10a45f5df1cf2bf1dbfd5ff7fb73b52913863e28424061be2fa2134c910097edb78b9798a15731e2cecc02ad42518c0d6db74ee71ea955f9ce5431593a2eb5043dad5cf32395266f91d6e4382be22dcbce1925a345f9c86bfd3c4ddd98d30a09d115f1f5afcf28b55b77df69896b401674299c4eca17b1efa8c6f50ffa348a366466785dfc8b610a809e9110fd8d7cb6e74c170e404ff3f6f0092937207d3f25264328f807947a1b3c2bad9f242d6ea3ef74e3e768dcdb6bfc0bd487bb0939895992a7d43dfb1426275570b4da417ad84c94bd57b77acd5638318ac7aebb9b7f2d9e43f963f50186f1c56d1686550557df2541f87b291a031a33c1de6d676875b5b356199d3840c9a92e82958feff97adfa765d605f8636f69da9b388e6e399ed1a544b024544e69018d4813a7c3fda426e1a6d395559a53c95c4c0eb6239a9b45511a03c387095e0d1f9850102e00bf75f000ec7a02191b7d0686120e554657b0f1a92f6bf01c010456f6d2e45d936d1e24e3bf9fc90594637088186e08ffb4c904c7210e403da82e2263e480e081e8691ade95b5e16a739da5bf09715e65206e21ce3fb235e52cd7628ce99bc3c858d0872bc416cd0894e6ba471301d6c367b540964f3ec6e9e12b659831cbf99fc3969dc83ba005094d2bf7adc45e415e840fb1e271724762e43bbd613531e424942d96396ffa92a9c865130bb8527cdd5242c8e6268a4cf945080dac83df257c53400135770295d0a21bfbf03d8fdd76ab3044f90d0b9fd691765370680e94a513e8df47a71f87de5c34b4dce584b8f37f8e0d54ddea283b72caf5f1845c476b087b08fdf81bfbfff555b372bf54e65e9cde5d7cda51690f3ca05fe8a70d9116b2d9e7404a0dec3f271f9b67a79163ccda9791f0e3fbb77d7d1f51d8a2c916b8f7f11d979abe83cd3885310e889050cd6cbc87043b0b0ff9a2b6de40ff7eb7aecc7c544d6c52261c6e93c53eaaf53da6121407e2daf04785ef142d8e0e4f7bc9f4efc4d05d7072de39aa9abec618dff36f615ed44883ca6cd57acba98ef5c6310b6fb650141c6750953364280ac12be73c4be69f5a6d17f45c4c8ef49cad4d2b1108bb54a7fc2cb986f9facb9ee95286a1176cc55aeafb4066a157771e6aa7127447909ade6112d317447ee9bed9e58a24abc4d10ceb8093f76f773410943c6a36616cf26fafe87e77db408b35c09f57c03d3ca6c033f83f3203846840f92e59cc4b72003d2880d9816101c40dc850830c9421aaf428e5f15f082329a44a131302636e278e2e0534000aa1799571528180056703b1960e14b19e69a53ff0f68cfbc6fed6007ef488be373fa9da093e997e29bd3323567ea3c3658c7a90d8d0011dbc44ed51acef4f84782a3651f28aaffc667a17963c7655e6e303e98d660dbbd399a91cb844b0c4cdf9032846fd6a437474f225a0199829ad0aaac98ffe23f7616da1cfc216b5327f97df88cceee5826c2b02e359369be50d6675f83d1012b88e9719fa898e2cf04e7c9f7b1519a400df427e3f22db9bf7df0ea4ad68ebfedd0c9d08c13b29dcbf0331cf5a2f254d75510196525a57c00148f1ca4a46bb01bc4d66ca9ba9739a7b2d6be170ea66df088dc2cb70ffc9b48cf49c908b1dd7fc9f1293fa7a6e3897c4df01f1a64d8875d6ac9cc9d026c74f80cb121387489691ba6e245d2614b1391023c510ac2df1be572eca793c16e562373d4385b1227c0237cd700cd674d93983f11899a222cf488220931cee19f067a70bc85dd80586911fe5af55c20b178c722bba1013941b21ce58e215255f43c05dfea67d55e905faeac492d47b7d962b57ef4996b97cf492c838df21794bb27b053769bfc41d72e2e0849b53c63e4aa0f888a12fa02957f3259276340151ae5a2e47ac7387a73784c74b81ed7ed4ada1b9783d1541706711fcff5f8580a310c6d706af3b38d3574bb1156fda48e4b300aa7aa42ca9b250e2fca2976b08ef32400b03d0b85ef716ae2e6026c466ba720187d0bf3ff2b589b0f13ef6bbbbcbd2b7a9da65ee8b27e38ecf16287994e61cf82a1be143316752d58eabea3885b1e0fc0f92b22083de2d025fe4ef0f668069949945ffe0891cf324f45dbb44516e837e8fa84ed54373eb7ac562f4c7e2bb38bc0e7aaa9efaa75e9006d2174d36f8bfb746da33d6e4468886db05fc4729076e9f22a0d340e956ce5a5f9bf7d6ae4ee275fd299f29a39106f72e5ad85a762eeaad5cd5e60c52b448e596421b04feb767cf043f2cfd1dec9af815bde40fc55f7f74969a415c0def59f20a989af98cab32f6e2b1afc51774e1c0c30e2abe90214b0ef146edd935aa5a93fb37a61006f376993113e87cb9450a26b8314fd1d17bee6c7b45b64f195838fe18df071cbb969c5db1350de17f74abc717d6576294d2d62a7685ffe6424c7080e93ebd0bcf6cdd49dc8fa56827a49fd45e5d2d53afd3f1d79879221a7f06621f0128c2f1a6c109cf59bf1a8a056c98b9466efe0eb5819c650d0d4e67cc006b86c2d3886c0365f157fef666ebb2f749e0cde82e01da4b93f4dbbf88c28244f0209d8e19048e405abe0866fabc6bca7062f477f22e6fc4c204b14f3f569b3bc05214a884c3b7dffbf250bc240ea0372a36c259f778a842d3367495f280fbacc1f6e497d7e56f13626e9ae90789a6fe8ea948203b48dfb9df65017adcd14b64f7ddd10cc2be1177aa84f3d327d403e866794dc1033cc22121c6d7d77b4564994a5b6cb5c2110b6b782d21defe0720e8d35839c9b51a873720cc823d84ed0800fed11df146d7a3dfde5d9168e15be89388803f12dee46012961d89c05326d9321019f7b41e29d34cd7427d92bf4fc6ff423f025d2f0db94ed68112d2e9a697a9861bb310f99737bd3ca109e7f3a4185aae25ad355c0065737a545024ce342059ce0d881ae6b14deb0f28962ee064c24ac32db7d6bcb3e98f24ed904a311384bc12634a30a796da793edff88b55c9677b1942c826902508a99cec4acb3485a9c1d2fdbfaa4a50426973003ec04a5e99ae61e1d66a65ae7fc16446784b1542d5453ca03fd3c16cd547023c2ab172d882705f9cbe89b4d2f6fea012943f722d82fbd1cb27269b80b1ac2a353403aa4e5ec06e4376c0b587c08dd0eeea98545e5090f1aaf5d2db94bce8f80d19a339eefd714af1d92577b094a37a3588b5572931dfd12cff4df0e63fda800435fb613e64af3c1262628bcc48bcfb1dba92804b633bd23887274ec8693955a578156dfc367539367af36a42b96795a9d559079255b7fbfd8af4b4f70e87d3cf0cdfe43370f1f332e43d3c037eb577329f413f2bf0e4e307ec53e76905ac6467c2b09622a960bc220734a215b904f09f4dbbcb7f9ea1f117b2d7f64556c9a8d219bebc5db737df6ab70d6dc8c6b67d9ab2dd0b1fd5447d1ed1e3e617e956f19b844e3d8866a0d99c1bf2e8b65852cd65c952aef5db5d634371eca78803a9c679417266a9ceccd08e7121bcb4bc24ca6621d8521542802d170fbf6f7fa7b7be721caea318bc0c5b4932aa7bcb0e479262b7de52092c5019433b931f13bd03a7f4d4206441825f3a5dfd1b6845cea4ee2c88d9f64a2e1793eae1597bfd4985a06c0b0f49f47f890f28152c2ccca16629d55ce988cd8eaf8e00bb0c07b3e261fcae8e8e3a2d4a2454a1ffa7441973ce6cf2422f2dad1c3ac642a04c2838edbab0bd8bfbb923aca596ee88ac014fa173e22c632d7b485bd0b04a1b6fbfc3a64467de97b30174d0b13b488b1b97b54ccacf5d71ff625e692cfd116eb004def2d4cca3e9fa2bd603fd58664da3a2ecdd6ded9a9660d5910084b2de99ec79f7098b80e0a97ee73030ebbe12700dceafc075f16af2b11240d0fd5512242c264928db659a819560e45cdecd7a44d47f2aa562b27c14fa47c2194bec8bf084ecd3a739c308c3d5cc78ff21a0d02ad5389999d853932fb04fbae530af248ae165277a9dd0df892c4b91096273d399e97796296ccb1af88175ea45be882b5a5ad2ea106f1da88cae464b0ca38b5e5ee578f63a3a1a3f4f9ed087e1ac901a4ef97e19103e87a90b21f2d9bcc23d7622dcf1cbb3ae05b4c600580d61db649e01083ace78976414095afdb59485f973af1cb765404f4d8e4e275ee86e2800a3ae326185a967776a341dd1c7a3c7100e4528d7504fdea4cf14c7da257584248ab3a97701e218fd8694960fec6371bafd12c96f6b530399e9c4d1f8e40fb97dace986d425cfe6516823dec7611f65d56d0ffe85ba6dd83e7cbd311c739a405eda66840e1b1a8205684f3dddc889dcb3bb594bf0ab212f2f8b02fcf079c73e580b37c52e6c8271eafec1d936da31e86b65cb55aeab01a71d32ce4722e117759e658c942abfa84c0ae25c135c89678b5b7f896f7e9e246132e0252f9bc14edc4479695c9cf0480fcd5624fac7260e4373dafcf51786cea2ff4d7a6955904486d1e0c9c3db5cd75b2174b75ee525e28cce088f1590de39833c30bba144ec05205bc52d6b00439ab5e5e73e135357796fc48af24f2a0e9f91f6e54c1ae09dc180fc4a0ecf1280c6e8306a990614bd3769fb3fb5a932eddc3927c34073d9d5e7433adc183a4d0e2bd4b5f0c6969a824e1d773d5f6b63991afcba73c0d843f1363e8435ce3ef6e336f492efb2defc47f46206e60ffc1471c77915f1ec425ca6985012789aef8ba63fadd2ccb16d1fcc32d0e9cfb3bf85fb43106458ec3da3ce768104ab9a8772fed68d1865492210e94e42c8d0fd1ae8f9b9e73b0f6abc4372680cc76ecc0448d9112d75b4c010fa1de2683e02c388f681c31d82bfa1b078167ea14c537dd9a559f1c44426f7115bbf6fe15cd7aad3c8096ef85f5c5e35784b26c80289c202e5046ed07c17ba34b493c60019c756c17ef9a77747f3460e2cf853edae12ca5eb09fc040bd7fce5bb9a543e8d2cfd552ad218b9fff2bf27ad93178c5c0986e45e4ef0ef7473e48e80e4f222fc6db3d988cc993aada64473ac2626d0f30b934846b39141fefaf51dcbbe3084aee6aa3c84808ef839ac93ecce8458675827a59ed50e22cc5fc5005214a4765d9c3065972818ab31a346d5cc9dc92eff55f0d96682fc5a8624a0eaba7277f4cc1478212563c153b21469bb747cb882c22aced139fb5b22d19f4d8a927cfaa9b729017bbe0c2d1971a74284e82e379865827db6be18ce4e0f8eff51e62856ffb52ba05799d40f458ea3aeccd911d1bd73338c91eb2b3c7cc1f1dfc95bdb97edca203e26a8b0a2760889c032295a327d808fdff2890a51f097138bda19252cb7a72e5a6d320a234fb87a3fc809c5af5b1ec92ee739a0fc8e2c2892e7a0cc6b307e8784a98056522e65c72555305dbb2abdac843e6d97efde5602f9b99b5d0a98a386e37bb52cf5fe0435216ab85c73e8d1abc02215e3231e4c65b93af3d8a7ff8550b0282e33561379621643a9be1330ea0317fefb8e5166fdfd3efdae1c4244b677b9650470c0115a0c9a7944c67f3a8d9d90b1054279e165c7e9996c42be9608dfdf788ba105f1a4417887889dbb6e0c19871bd04a5f0ebba18fd8778263940d4f98a6e244fb045b9d2e19912f7382a5612aee6de40915b130f9aacd205fef65fb6ef0f6d9fa1a676a7030bf8e742a9809ffd5359e432b45a962f7938840a7b2827d238ec560a6592fa316d389315b11a45cf0df761b09c013fc32d0017bd123caf93635eb0dfdcd7f621f628e3f190e4cee916b48656de2aa6bcc665ce9f1e773a6fa2bbae7a38a19fd3a529ad9d99789335d879737b26d6d4866ad8245e3fd955e15a8f157abae43f55845c95c73fcd0ffa875b66e717aab9fe11925af4f2bc58f5309d2cb1b7e1e829a1efecc9de3e9fb36a77028394f557138d8972cb9197eba45d9c932729f120d550b444e0364a6213a86214850a9153328518a2312dc74f52eb0ee832cdcd6b6e4b9c5ace0797442ad2b2ef68aa9cd4eaceb77e1e55e596a4359bb3666b693cf4ea8a4d435817e80f9f8561c2fd7dc9d4893901611852dd636d09dc98465845eb4b48d59869541d4ec4f3beae8eabbf123cd5e560af35f0b1bf2d83cf40b159f9459a3f129f9ba8900e3b652cf53d590f265a09abaca7c6e8efb1e95f337e680df3f39f52ce68fbfef57758c78a832b2b0029ebce5d96b793a2e135e71014e24d810e8e4c06adde99d3636941e768a032d1ecdfe22fde13aa2379222f856e761c7b1b3e03c33b04f4d5ec0a7d31f7624633daf8465b9e1d340333af3aa4b80417e53592fae637e8d257b71cac6bf1b2aa664b0d5144ee5f8f7612ce751784085a8ff5dbbf8e25f120a36ab43983c641d9b173e5eb5c19274cef06b9676c1301def8d219387b92ba2c0181d1ebe04ea7b036e6fef20aba8a4fe688e9e901466b1ea2a0d688d6513d567600fa9f82129b257075e3b4fb928fa54a3ab1f42eef01be6daef11d546cf953d3860f8d6961da931e7be5dae3ba37bde589c40a4bb5beb70a2be072284f1a4b516da624b3869388784614e0b2ded42e7aa9fa8a368f2e2c13e39e9200c7f14e036e70150754eabb495fa700a8378fb483c71056dad4577e99767fae79380cd1f686b369bbe49435763070630c4fc6809b6b289e9ec5c55d4567f9e07b5d70a31aeba246480d7b5f7aba5b978261ce048d14c674bb6d1db1d4984e02a8d46dc7f6b383037e000a98462f31582b837cb8040155baa3ba09bb27ce1ef478142a6ce0f2887dab09d3c9dd1e8094357b3271212981fb04fd0db423d4c9d6006dd9f2c859d98424ed67eabeda66b5472800624665cf754bc3a17855d7ddfd291c7533cd54896965354f5cedfe272c9e0e40ed2915d26ac04977d4876b04f39133a22cac00df7445dbd1997136f3a984819f7aa09bb77c0e3ad6f570564addb994dc0b243f5f7274987d58d51e14392da88117fadd2b5801a05052a96885aaf072fb3193f0c16baa6f10d92b0fcf2ec6432bb7e4f1232bc5e9988685e28dbe7f367d9efc32f965a49f4120268d50f5afee8eda890ce442f7d43f83df8935c171f5edfc9b79cfea12e3f2fb6cc9b46b0cbf8af896c56c39f0036877a244c2adf1a14ca06ce559ac62afc20cb029ba623a2029f480e4c8d09f0981c86be333830072872460f18f8100ddf963c2e3f250e88b77007c90403db75a9d1224c109b1b8707023069a36c602e35b44f2ce61948567b65904d53894182eb76ffd2020e334f527a8800928dbf9b1195cd1fd5c010fcdbda5477a80986baeb0b1ade6d6f79ef6e2d993fd6b6084f67c40d5aecb9862739bcbb4ae8717947c84af2dcb040e3ba6743e6da3c869a27dfc1d06a9a89b054ee0bc0fea930f154371a8c463c2767ee3f383546fd601c957b83ea601e181585cf5fdf2bdbbd53540a1d422ac56e9e79135be35378ec5226a8f1bc856031e421cf61587ae71035543d236818ca83f50a7e508cf8c194046e2768821d8805afca314db969972703ff79b5bd8c2e796c41f88f006d7808eeef6d3868f6fba9b012cb76be0bd283c212968bb0446d86e72514e28b28b8bac6075d2779d0aa93a66e5cc280cc4ea8da63fd166f2bc5830f4ec4eb8b6db16355fcfcec57e84f2139d5552af4a10da0f2bc27f7cac5cf6fc24a239c5662817c94b0c9b5c92ee712f4d3e53cb63c1d79dd2d3386eb4723ec134483bd70f075c6e6a461a210f7ab0acf1a7d992c14d0c2969b7b4cd0befdc1dde4e76914e4d0c35b3aeb471626cc1346c0a777f36702124fa39089a3f77956e0f76e910706743a046a502e662c711702c0641f9c907c8288223bafdc0e7a3b73589677c2299db756628553f854df671176f270bb39ce2e43f65be432d146a1c518c035e669fe08a4bc6aa6cb323337b0185d5b485f38b739c34d845f58dedfaeffcf34030d0cc19b3c808c5037b41fa172fa654a285dc32dd91b9db08d0fee0ec03fb5afcc4eb9e04b895fa3bbca9b15606428d8f8757c448350726b7ccbeebe8b914cee78e68bada378e99606678c26d071d16555c10d735755f9fe9d889f11e49a5fe4312e1689d674ed8e190eb6dc4c24a46371b329fb56605d068a2fe9e3c9bbabe0b1a0fd0aac8b9e2a4ed040c94b7e742c833584f7f1b07c1bb4cb543dafb8c0b161b028b080b626bf0e25372ec9bc2b4437e957f83f70697921269080cc97804c314441bf1b2621a233060ab7ef7c48e6dcf6e0afffdfeb6e4083ef2bbb94a4c26eef383dad681f44cfac0fc1ceec5ce42566e0ae2fa4fda04bf8e62978f7378915c8c0f1e5e0251b7300fd3361448cd493621b3152db4c1de32f90b12f5e180f50f4cf7b5b312c5d372170ea666a1290ec15dbf9ad69bc3cc5002bb774d37da325a52276aab3a18a0f7469aad2d6bc0150f46e401e54e455d1ec98ecc5dc6bac8e39b7ab08cfe4c83540cbadce7a6b44c96ea3ac43478d3fbe79df5182873f2d69b2505c3906c90cb73bdfba99b4961175025163287036a32e58a955af5c289d0775f79015e11a156a5cd1ccbe1bc47f9783d122a99b931f0d79c485320eaa0d549775801a6a1235dbe1304c694015113b557f6f352a0a3b5a84a3cf60a21ca1c195d903b0d4e3eef6d372d7d74eba1133f73cd0b8c53426d69fdc5005dd2b518660f71a1905315e7d216e9b2fe679469bf5ef1abfef624e3017a8b741a75505d722e680401f96728820e03b32582aeb2eceffd0256e16c0a6426633ea416ff91f048150d3f51cfaae72e84b98f53c0111d1db8bec5485593ffc18f53e2020747368e7b85b2fc67b8e358b56120131eedf5b7279f6eb1ccd040fe43f256363cda8e2fcc14d3b07e2c5f7317732611d6a2e0fbbe8cef7f873f14e9409420f09c5e51fe62038bd48f5aa212582c02f2bbebbc72fe6c2fc6cf07173162b984235298c91901c8be867a6446018bd3ad3185305364ae8e1eb7fa0a961fe208ce0deccc57f2a82a763332954289f278565b68f0be80d8cb7496be0e24eff5b6f6550ce287ca7a927adf1de7696b05309c96b07647a7f61d0461f1dd5067621f5d4ab2d2ee13d8a94aada10abc829cec8f3aff8f26e27c85b72beb6aaacdffb320162b37428e9def8fb9a7ac14c491724a6911be6d894db7ca71eb3f0805dbb0ebabe260a67e85a04ecd3a48566352b58f933c0caa6d66f1c964a40da9136063ccf59d4342c3feeb058980fa7bf759af4ef4a3dd9d4021e4ed0010782be55792b31a3647754351a9cbcf22cad8a7432cc789faecf3ab1609a95344d1321c7588de76102c91fd35586955f2b8041033622239003f6f981c0bfad8ce804c73ed0490628d13bff6b82aac04e9050efd62516198f5d25c99310bd84e100d09991c31044e6b38b1b0e70df09a4a2e764051990d3a2beec7d0bbb3662c4a2cc7d3a2fe3575a634f8b1472b51639a5aacd8da52f61e2072d3b941d8906f6211ef8d61838cd97d4c58c9803020b5ce1dadacd58ff07fc47c69ed9f51930ef4bd91fa90f9f9085ef79dcfa7b8bc04b81dc2109c0ee7fb35930210ddeba8b586ace39183d02116095366f5bd3c62fbc3a8e59eb0055025bd2189b64d92e5b9115a1212c05ea7337f7046b2477d9b357c9fbd9fd01fef06040608e98f024ad2cd7178e163764056e3c2f387f2e51283a39f5202f2384e5bdb9106165de395a709ccd51a5cd70be3d7981e8dc0e447b740155255786f88f85ba27320cccd21ad7f8aef4d13f16772ef542006e80ca328aeefef1ace71bea5e534d51d41de3f19038ed6534617f1ba3c1a1e1ac520591f4dce1584b06aaea01a8d2ab844fefd8fd4251118cd2c4054da08ab8d0e02176a143868db39c7912bcbd91b2ebe0de11364d18563b024470b63927ca5b460edc6f8ef31d48e972e3f099885559526fc3855cc438c7bca5ceb9a37c788fa3cfcbb448f60fd3c69e8f92b049b323315a8de8988a2c5a4df6bd0438e41ff471acf8b81711e00055d0f4aea29b0322348091936f49fc422e71269dba5831d3e89cc13885a2bede30ab47e04ce2153468ab076b85302e7249e21b5ad0d191be71b335e59909af633d08a7d9252b75ba6cbad18b7984b800c9be0367c52754062d6fdce347d31be6fbfa2ee0ecf6e419c046aec3772881a577578ac4a3395843862a6f4aa53a0aa374f9084ea81a73391c1898149bd7ec40b1c6fac5994f37d1d81765a9f685563bafe86411f451cc09e3f698352038b653e37b9f90b0f32a4d247e2f7e890a4a31bb0f3d2aa05cdaf99aafd611683260849d86eba2d2ba481bd12748bf5ee16a6e4833452f9fc1f37e7b59e947ca35da1e32034f4b22b882e38435c054a5969cbdcf5b6bc944910e9109329aa93755588ee64ac32da094591007c7d19a045e88504b08df37d4c07830c49f02bdac65f4e6b3c94dc121851250352c13e1b695ca397fcfa9ca5ef991dce02da33f7488685d979bf2d19798901708904eef73a292f2d1b18267f2f3e31a1893729d39cb16cc7253d2ffa418a61ba74fad7c2b6e39d6b49dab0818bdbff28115157aebc79c327d8d783d84f6cfd98d6fdab48f13d2a59ce8563ba279377382dd642b6e6e6532432fb3533f7ed20fc0e0fbb86f80df048abe48a1cb86e52dc609343d1e6206903777a45d35ca9b400e88e61de21829fa21ca2670a50f73b54e96b9ed2295b9b8d33d244af1b025336a39bd6b3fa51f7556972ef2d57139248f686aae900bef37480aef5e5027ce744b193f9fec1463c39e72d904a70bab99981218a75bf0c53fbddc93b0f850c2d2231666a9f5dfc019c0c64a98644d69b2561f0f321a66372823d08bad1fb9a5dfe36b9aef77117210263b44330b280f17dcf9965f97bde0e992f56893a06d94748f63acc8dc447722cb14c16f4633c0f0bec1a56e35fca5a33e0b94f762f6fb2ae2c0f902e41fb031b19b487abf247e69859ed25920dcd817f2f0a24011638ce10390a05d7e13b301ea867d96bb721f352264914850b02b2a23fceb291fe9af3d4d45650e786d79b92fb16e970a3c8308819a8a1a5cd67a68928d9c4320cc8c241c61fe3df304ab670d98b36845cf471c233a73e31ba0627f7b8a43706e8a9241b809cc87b20bb47997676d865c6bdaadcbaf1f681bdfaabf559b72692088f884474d9e7c33ced644b494db837613307d3cf9ada5dc7bcca12452d33a50b261a0d2fd1022996c1a80f44751851e90d85102ed8a47eac2383d589acfc1b1d40d8c5959307066d64ec9fb1affc4c2f7657151ffc633ba5195d23d14b732799b9e03f8ef8dd408935d2079ea320f8358542cf215a7fd5fcdd242003e1d95917b7b041a7aa9ae3221c669afbe65484f5db6523d3d9e720fcddf93388c064723fb4c52c09095d305f773eb8d0caee35508edb82850e50e6fa2bc6f0ed45c756a14ddf4d4790c0a0e6d13d358d1f26bc2dc99b863e5b586bae9dfa4e8a80da4ddace7b68f7abd920b1eaab1e14a8afecb11ccae8313c640b50b2fa6ad8f272ca45a0ba7ea61779a8d857ef84f4ec5cc13a9227c40de02d66c1b4908942945b85cf2179a263df9c85ce74982797f469b53823e06c15eaf97cbb9850783b897c733976da55f689eb3b5c9460bcbeaea465cc668b7f7f8fe06fbe8d4ff029fec2e4a47fca4316dcf69538cedb1c0c377396443c3fb0e30f95996f99ff3bdbd1b946b1eb9b76c611dea49e6177bee4937f7a594b1c3e5ebf5fbacfbe60990d066f514c90bbfd9b731aab054d3ce98162d954e2f6b049c41490a955d190c282d7420cbe1cbe50eb548131dc461f9dc54903cbcaecf382f11c6da8da293e93785b939c132e31454fac001edfec6ab69a6c8aa0cfaa7db260a9770325b3f32358e5d37cf158f7a97d8664461aac877c7b640b1fb1c78ef50e98d07bcc98d9ea9b0d167b86c880b725d862188dc755731bfffb711eee6798e01718f14dce8871321a7e7c1eb0efe3b4c7bd2f7942226fd7c213522dc8901b061ff29b965c16a56046d2c99b0f14e31756a0159a24225945cf2391a7d941662295cac6cc3946abb81b77d8a5f343aa61c0c51c1beb677fbdaabe31eb884c829df5123ba529fce81e4c9750741ddc54b64f3d5ddeceda4ec5f8bebfba4652c71d9664d4767747fff2ec0857d19ce3684e88a97ed5fb41a7e12441ae27aacdca30c0c1cf7a75f8b51c17e6f7cb54699c70313138c78a8a75b6a9acc752804745bd04736dcfd46a59cf520cc2c64d53d186a4ab94ba015008f7f4e752d6f95169c6d1e77fb7ebfa2ddd3198716da0635870e0e6e200e643ed85a5818009c7ae72088a26ddefe2afd493fbc6037361cd7c884290b9abd635c96c8dfd163371790b8b407dbf52eff54403f6a6b69236b3fd950c5ddee2278ba3f70474d9c46fdbdb1ce4936cc78cae8c8453d8e1950d1cdb0d65c23d665119d6a32194d59f8e2a157defb2b08fc2521a69593064eb6d1a308dce994322defac650fa027a5d6ec717ea299173f5a8708f52991e2fc6d87282fceffd68c4560756018824523d839e41f0f478d973ad0cc5dc14c87b2039787ec3de5085eac11e6232dbba39eea2fba075341d43baf8c3ed4ee132a888dac31774356392aca06d45a88ef55e8d08032903665679ce60c54e851eb596af8e15778bc7eee6ae503776a5c2bff056e40916ee5167382d2e9a9a6583273af479e702096e7a049180becda02cb5bb0d7aea28f75875cf2ae0ffb082d1c2bfec01bb94b95863c2a538bb24f8075b721ca893104bdcc38de921cacf6af8109843ec8b0b64edca10536882d105fc9743457d28ffd488052a874bc42d5a36ae97b2120994241102594ca502720229a88d1eaf411da87a2a9754cafe8a8688e79049f79f9494447114869524ae8d262fdaefe2a9141784f6e503e51ebc4ebf6bf4661731d05bc0420185334a76e6be0705e17bfeb516f6a8a1af6cf3d0cade292ecb65e94fe4543041acaaf321f1f9d92abe49481dbc7c615509fb3f4c1fbfc1ce7ca0ab197cf15e1ecb2874324c493ab4a9ff8b8ad8c7be0992205cce9cc055e859ecb0a9d480ed0f3089a164fdff812d7fd4179f36f00ec2f9326a138cd0cacdabf74fcea635b5e60af444c9014a5b6215b48b19fa16af10bf665f79490752d75f6442422188b0a0d693e6800fe9298cfe7fed1e956a0d8ebcc6d722701155c64606de76bd223ca2701945378ab604e4801d14eda14a241240ffa5efb6fda8a8fb9f3eb4e8dd286aceeb0d9b94ccb82f4078022e70f19fe427aa3282fe9a0595cc72c9c933dc09caffc392a28c8a971cc4e5549a0323296816426e2b4adf742a522f1a83847bd5b78c1075a1040016d36fe73456c9d6dc3077b45c3a2f4ea1000dafb8377ec55886beebde081c86c5c3504f89b54b172f4fd154ca51356186354a697e4d8e88edcc5c2531bb7cf3736e76b5854e2f728cc6f0c3f869781a42fc2abdc4659aafd83262b61c80dfb388a53b6347d0a7a4ea1fe31fe073422fa3ad80046689dda2b9ee9572b8d8f7ab1fa890e4ea72a5884fe63e8f3f0f41194a11a7653cd362abac252d43a720a1533ba1073ee6715b55221c46e73aa0c3f7753d957413df88f82778768bc63b96ed515a32e69d72e46f57ed0d891c384e46a9456249d425a6e0ebb59500daf7c4cd1e83f3ab114991ada3abad7186e7ef86f7c3d70a3acef50117ce2909a8ca2d5ee2588623bbe706b9cb0f4be2d0003f272766873e00eea333d21ec76aa903f1612526d4a837b1987edf0c76e6a746448b5c1f7f7813eae87b1022d88be391744970730a593739a294e3bb30e71e82d4ef6f2b7a526d978627aeb5171fb6714881e74ae41e3d50ad4b2889fc1761ea449f570d8e3bbbc1292119ed8ba6bdd514eddd802c1b1510ef52d02e2bddcfcd5ec80f7f1ca288c957f974dba4e01c3b25e890b7212d09d61f482880e73b20c3d8fea165de1193040178624e618f1270b4078f5a90e6af17673152c9aa7e6fdedca5db1d89b3e515b26f4bd8b4c6377d8a79b1450ccf78a225500b54db80020595f4f7f80dcaee12de11ba935187a088af899fbdf87f62a575e401d886376eb9a7bf08d13eafb910183bbeeb3d25f93591060cdd9386a96f281c61351ca157a5cd255b98a99a559373a1384d6ea64b2b3ea2fc6402e72179a29f6793b9186094419cc38ffa349f46bd2b7d7f723356830d65db2694c6cfaa60d8ce7174b987bf5d5a510e162e861acce2d4857e9d2961b41a47419c63b10236e2a267797efd6a29aa89e7d6c0763bae544ac43c256878d5e3481f36a492fd5becfb7fc9ea6c52c142212d6ca4f02611278cb153168651326706238e5bcae5d184d4a81d7a015d38b97efc5c68208d9a92ae2fa8604c1e76f8836d4803fed62006a47053aa53875bef48c798145853d2a77228f766f0fbb2f102dbd5552cbcd5ac3487354cdc5622b199534d6504c10b3682f486f18270c10f40ea2efe22e16969b9d32e17af5bb3ca58a683e0874ce59e4a1af0bd7c610f02bb2e8cc527f9f64c2c689ced02862ebf23e1bb257d794cc3b866d1c200b2e06ea86fc4e972b259572fdd0df9f5e78c037599dbefd96d4f45ede221abcfa00a9010dedf5702337dc84aa7452d2bf7356e8d7904d1493178ce61e140817fcf600be5c5c01fa5dc6a09eecc730a514bcbb97873fd6bff5d4d4bdaea311795d7624679dbdd0f550c11d1417a73c694bdc58b78d41f369a855e9056b9c6c56cd9660428ce39c5b7cc06a0d30ea9b18f6423ccee17396d1daa852e9254c4a6ce069b0f0fdde6490e0c23d1e73a7b0c9cc92edf8ce3e55887fa8d97a226ee18f8ed3a4ac542d28a582fa77e8ce45c7ea27832ac5732c8729ce0dc46699e5daebb3f23e0f0b37c8b7eba8cf91635f843d85502fc745cf30b5c395ef313848abe790197fb1301e2b46a80b29cd0a743cbc08bd6c988bf8f4fd9b357dfe9f38a31b4856aa36e4dc79dcca5870f8cc6b9feef6a0cd49e13e86065a5ffe51e390c083648b8809ddb3930867cb065869e961b6390beeb5b6d45280485656250c5d8a9a50181d5de4e810e617c014c9d36cce47dff1e589ceae645a6f93c19a97a58124db119ccf58d56ee777e1525cb14568d59b72894dc0faaf741f3ab512f409f13bbb0a9e64aa443fbaa9641c2bdd550a7142a3402e78e549196b9c88fc092b259c076cd469df227545d255dc60e6a32bc850f2d8d1b7b141d2aacf1aacade55742bb5dc03f117b28ca9bf427e38fbd33ac6117f2008e1e1690f650e6b12e5dd839373f2eeeeec56b20b120183b4eea08cbb893e88ae71d01dab0b934afccd539d0c0af77e237880ce346d6b362ce2d4297bbc25f5ffcda93eefa8364643b5f937dfe26ce334341591e8dba7de16d1aa722747acd7bde105d503bdf72c3254f1a847d1d105079a946bf41b87633bf73e798123ca9f5efb093379f943b25a68ba1a92cc5ea01d9408e911fac27ce09a1b41b66f4201c68d9ffc695fb205ccea5c774e0514a57742da01467218437c7efa6fc674c7566d41b9caf4ffe0d4323c4dd06d2d15a0def6982d05f1eb88a26a698b4ae895fa69313a923452e04941c5dd1021d969bcd0544f71cd00033778ae56083fafe22c0584c2d97b2e8a745a7c1a2f0412bc7b5022b857e876a813e0a5d1856ae0c2cfcac781bd1168b7c6ba3773234a3e1915a48ce39d6d53dc875efcb516d4eb15ee068f8983db2b7c29867646ffd0ae680b3ce8b42a210aaf2573954f03f06aa76613faf1e470faa2a123ac72f8f24ea5b249c2eb4761048e5451a9d854223231b27322b6eb9779bccaed8033fd9ff5cfb2650fd1ba7b24648aa78c5618e97f8878f191b95d67a371925f33c6aa9903375ee9c18b4d259a7bad66f26bfde7986ee19211579d36b20b4a4b0be95a62f41eabac52955a6688a8098cde5b3fd8309f0e049ada5e6e1836a0a263925e01920767b26617fb0c98bfe329558d385928fd3d8e4db56f137bfb7afe3ca40fbeda903caabc41495692f94267d35a9d02a7859971ab4f90f0b148ad366dbc0ee3000084356ce9e47b95da7aa6f977805f0844e85666a9d0cc26c39dea6c5cacdc92466b9be5a39342ff0f2090bd0e87e2e7a407c19ab0ec30331e24e895268588522fdcc8be77c68c34d6a20240a8a29524ff6fcd6409703382a96f46e03a4e894c5a2f8fb2102df721744123fbc5b106fef8d5d140b9c6610781532a42cf4d90ae48c4261c55809bfe4fdf317ebbe07ba8961889f4493d00095016ff0dffeb75f366b58a0c98b952d106b831b3c7e4a0e721627181a0d1bbd6abc850ba70059f0bfb306b4e18c35c6932042eed7d5e76991775f7090c874c37665f1220e60877bc7e3a8294a21e097f5cf39e71ca5146d66fd9971bb0e90d1fea6bb54fe3705a75fb766a2e7299c314463738f2134cde09525243544cea36b5545ae38e8e2837a7f99d054b560682a23ecb1250737b82c0bfce2ac3f3199572ea21854bed0a0e1aaceb38883e53a9ae7b7521d1cf9e6dfa877b41b55a77c2003a68da7bf31182b2b1ccd1c0634659fc41a4c9cced9e12c898c9098349e6e9687c15a201240258ed7ed5603335de2d907c424fe6e856b69ce15f58f5d62dd4c2ef91c242d3277a16d3c4ec0f09d36ee65ad6551c293888f03f9a94035e2c619bd2cc50c142039e079b6afef14ad900757f778d76476a4bd0c25753e6d4d1e98f10c91a460656a2cd0eddcbdb25ace5183442088fce01fb5a74ee8f1b9ca36a83571faae1d4a2c48948bcf6bb95adf7e3f66ad8d3b15305e7c8c0c15d9bd41ec63ff625d71fcb85dd2ccbecee254c241196cf0c6b2bcb940bd345239e857844b9c574eda17256f77a7c961d2f19301d673685e45743abd0b589ed5410b6ce571283651c3ada0bc05fa4807f240ee2577347c4cd1859efd10b6a7bbe562c2d94d703d78a7ca27ba5dc22252c2a0c10fe87efb3a6423a5c6c60c25233053638291fe59cd8bebeff835e3728766861c87ec81bd14aed16b19473e98ea011a95053595f2ce682d8f5a2b921e02188a6e9dcd53e9f68f40c612d049d4538db585c8f5515620aad7acca3f506e8da5355aacd8ded18da1fd5c11444c6e61db1adb34cee21a77b3b648595472be1ef02282d6deddb253abf6fffcaa101ea446bca32285ca5ccd5646a383b23988a46e6a6bf0b5e860062fccd613ab307010ff5f61d420b5132d5cac1071877c4567a961cfa0b5903e79ddf358cd15c56b5f894628b06adcecfc0283408861def0c6bea9f6583c8d08811eab37b65aa60d6f3ba10c86737c5d937973c408b59824f6de8df77e2af84a178ab9a3a3113dbb11c25858410e58dff865a0df435cd319b2d0b1f1c4669a91fb7203993f74e20ebe9c234357524d892e5fe0e8a6118d0add6e10a1315748a50857ec19bbe1d09f9a9dec26231afa750273c8c908f413b84e234ae2cf6b4e682c708984665aa4a7736e896aa58570aa77a28664930a0e18257443025493ed237129a46b0b046ba74209c19cc776fb6e0b618cea30ba116a5d7413f346c5e758cf9e8c9d26ac456e123fa2795d15f34bae19096e9c51ce37844e42c070791c658f24bc428c3d982334322ad4974ca11c1ba53438147fc401d9be57dc4c2d3590dac1473e934bca36ecdb3a9e834a36ea52d769ae33d88e9a5898b9214ce16151bbaf223aa08b9756f885e1887c04cd8068f310d0a955ba72bf40daa0899c25e034dd3009cc58f0d19150edf62faf7ff072315a9758d02e57bb31b79560e532624a6e29496c306a04daafd53bea478c6c723fc8c6e88b27643277a71e034a5848c637496e783540b0f0eaf0606d0c893a2fbe8aed04aabb2ebb347a8ecadd7cac5245d5a220ade3674e9dfaea7d00a9a39ec0a8ac3db4f666201ee5737bb1acc2fb556d246f831c695f37ea59a76a101a2651fb861016817410ff42b0206135af855b2e0978c3b98bc57c195d7755390429ebf7c5a9a0d8cfe734a237728ad25317fca4966e21d2251a04bbf5931268e0a9ff4a3dc105191adb2f2354f54deae59b139094f273940783b9a0019eb22fb26b7342f760605435a4f6a68625ced95fe52f73450b33a8f0ef5d52e8c68c06ecec1f08147caa7bdf3ba1cd5efeb7511f0a14f9ee90fe1d21600274645dbdea46c94fac65fb45d79117df44e42fb5c242b036261c3917f0e721907ca35aa3163a8c4400934c740fa7d972666b20fad997f9415b0315e412519842bc352661c504c2b340cb8fe0c40960ae26ef9fba0d2d8b9327ba14701555b529b3885c5f077c214490543715b9eda3fe524adaae39d8bbc0eb200de8512c01a8b7e560c7a60efd14427f4b028755eb5f20eaa6944b444d0e4cb0d11eaea7b9f6ec2ee9091cb1c533f4c78c7deb6663e409d4cdacff5733f672922e09ecb04e9f89d47e5792a34e277a325dbd9dcf5830ff183b3dad07d6a923b2f2438a5443036ebc252afc43ad689727b1deb7bce9ffe20f630e23e4e9899ca9c48a34f744d60a16f7bb375e04e2895f4760af263b9d59f14aed93f873ab49bb303fc4981c9e9754838b43ac467664a30ea8dd73f16de7aec22c93c9cd5c473e39ead046f83899c93bdc82780078396fef7e98b3ea635f1f5e1e21878699b428b6b4d0206d54b899f9351294843215bf268edaf3fe8aa1daa49fc7c3ce95d5a1fbebc88f7cf4e705f5e12b136d60c890fee77b73d980a95ec18ac642b43706c692818e93d9f1db4225719c813cb382e4f77ffab2d3f5ec57b14050afd3997c064b8e9647a576cf580e364781104e3d4669acd2a519300a279a27d64e4e8adbce8dca5601dc839bc577c8ba04c34cf5292cac6786448ac6fd6d296500c20d955aa91436aab66b1ddb6381d5978b38b6a4321e7c0e08f05c2d7f31121bbad81ce4baed0c375656ed13e5037a682e93744cc6873a1684651c80f8b276fd8fd6ea97fbfd355f29c064d81bae53010b51b848c0cfcddb4a7e56b8721f3d60faa64df5768d2ef59ef8f46dbc2aabe8e85c17de41c1897532e49d8e0874bdbd9a190d879c0cc782e1a2cd0afae44a95341080fe538ea33096d554c95baca960b0b7dc1db28be30a8b36d3479988736b7bbd53a85b4b7adec2a48b47f748caebb83b9ef6e640cc127a7ee56a398ce0b35929511e806e6f52e7352f195bceca6c2e137476ab070e55331c764399a6dcbeb90b4f42f7554f92088287fec848164cc3e1a366fcdceabf85026f93b95066a53791c69cabbf497b271806e998c1c3ab74fc48da83625aa178f7683e444b645ab9db2ddbd6507addfb9a645776cc92078cf0d627cd5f9a22e61932b98c18eafdce7d22cffa120150673d13a768fdf72731f96ba04c3e4f758656a473d3818ca43b0164381aefaa3f084bf7b4f16d39ba7d8cf3eea68b34549af1cb36330ec6041b639ee331382afa23a07967df3a9b1f1ccf1849777b5db9d5045eb1c4916bbc749304e8b921dfb77430e5fba5049c455b1c09dcce6105eca5f87eac119b3020b2f6ba0d664230e6467f15313a7241994982061fcb3af047700ed9a2e6043cc757e611a773177334b72775a96bab7467d944caf5eb225b60f1d902b4ee67cc44982d906692816425d1564c1eb1de6e3c4958b7cc45dd7c6076c2352e4ba3ecc1d18ecdfbdc443127c44d5f3e31ba35140be8dc18474f96cb44835428855b3869cc3d1d8165870e7463e2dc5194f6276e2dd5c8e58b0493fe26ac41e6cc77b0d69b6108049157623dabff9cfdd3ca9995d92f2a5b25a93915be22860178a19ffd599998b2dc237ce31321afbfcf7481b1d2be4364ce90ec14ec9b479014c98e368e747277ae41dd3b12d938ffe5b5336d017c2ee3c131fa7e63238fc434a24967f7f7bf0e82681128424ea4c93251304c0019ec194aa37dac2b99dfbd4b22f3769c1cebdd1a3417ff5eba1e975e93fefa4c764933ac27cf95b3321c8791062a807a4d281862a6588b5be966b018c6192f3b2a9115c69e84e7def6be7ae94b3d73e4edd0f93fa1339fa1bdeb0f72bdede705000ee98f0e0287533e5f8733b6701aaccf8d240e6e1282bfac3ad84e4ce32264775dfcb5219ae82f3d880e464e51b278bd5166383914b88f40beb90dcc7c54d64192f0aaa53ed93c73df570bdc198843f22375409145e63596cce1559b82387ac42657e50dc19d9f3b9bd2e2722750cfa0ba69a0ec68d521e0054db59a3fcb929cbf2b77eea2890b3f499f73e17d26136ce502f7214fd5a7e302975aadcd7d1a17bed3d083766f74fee41b93415c6bfeedc7fb7fecbf02a47953a1be3f72f7a5b7a28d4c2acf8c4d4d3e6cbf6de1edae30e4fe196df2310c11cdab83bb0af695b43f7a12e5c1d372d3af38f384c0162f37f5ff02a9957f4a2a29b82814891f1778bba900daf5b3f48b251d456a050516759906030869cab8dbf352713e80d6b62163d685d344c520467382da44e9ceef53cdb3f4d564979b4eca1b8bb2c06364024db7c8bfebf54b26fbdb3200b75828af350c7ac172228941e9a60bee04078e22cb14092f4b1e1525a483b5cbbf734f583a513361b69d3f840b92daf3adc0a9bbad08e3da371c118c20aeb9985f37f193f0f2fcab65e18b7d98e6fcc58fe6e1bc55140019dbd7137c8431f5a011c6e999d5e4907d310e08a7222300efcdd5cd4897f6cc6b23d493682c185cdc94f00f1659df66163ee4270e368674fcc75317356c6bfef3c42cf899f339008d20694eac3758d69babd03ed476747fff1570ad8e763f0af5c923fba9ba556db5a878c76ea53b4c94aef3e9b00f14100c95f9ad1153613d5db3a0ad083e65539b32686b6548b0dd6c38a18e6a7077a9bc83d87eb2bbdac2372943127b3c250e4b39107e0f0370a0f42f1e6c605cf106adaedfa8167adbc2383bebb897ed0bbe142240e4db8e7ff8e0399c1505496c1800ade6e5192a40bc3431d93d4ac8273408c1efb5aee64e7a4811b6075c0cdff5da2c3f7c49cc3e5ea5ebc6115399a0e77fed6c7e61818c172970ee7281db3872e34fd771682823732bd49c7ac5e9d4889426f7c7405c350ce287f34220995ee7ca179b59edff44e0065ea44e88b54d8ba6477b0c8cd5ab68b709a9e0fc7313aebee2e67d8410a25a9e165a86d871022dd94c61e9fa56df2452bf3a2b6ad5e675f6f71cf38ae6c532fc454163c463a71693279e8033d0ce5f3db3b9aad39f815a2b24b0ad927fe9854e1f5b94b04600aeffa27b455201f0cd69e9050d36bdec241966350fe2bc743567812373d34271988d58c80f69954560a9a70694a3fdaaa002ab4e7ef6a54b413c47352eba3348b970b46134fc0c2edd384e733ac145c04d2a9b8085fc7a91846828f878c33e782c1f0a4a8e8378357b2fc0aefa490d00025c7645a55797cb5fa929fa21a3b9c15bd4b8bcd7ed02748d105c77d1882d3d3d6300ef7d1d248e8e609dd6c3e16080511060f26e184c43f83e846dcce1ff340d927d2936999a1c4215b4cc9e58de99d9152487a65a93547482b7b2b249cc4f5f3dbf310bc916a89df19c678bb99f46d66a02b50dfbb1719d8839239cc98790873e4010c8e07915dc4336dae007fdae6b5b36d4b0b8e572695f4bec1900e34d9571516b79c65c75bafc4df01b19af964a77add32e426b33ebfdf380699ea88ec73756c21393d2973d3272b70d1b96906f108c9ba4bde88e34b9582f89ea6b2314f71024ea17fb658ca151415b0dd07421bec18bdb42a8b1c1cfa5d8eb3d87d73d98ffb1c35665eb6325ac2122431f13d7dcad88dc5da24517e0868df7856a536709c882160442399d41d389a7e3a05bf10ad447058f5846246f2f1171c3398a69bab4b56e0d668d589bba23126ad377e4a9a0ce01cd7f858765f384748dbbcc752041c950101d67a47d980e5127ed8d7f623d5598ff7a2a108d6fbea18d97dbb434b686f6decb73e256169f7cbf822880a075ff0982a5b6af19420ab100e592a5f5d6141e00637dbf3711c52fa77d7c8311ab1de7a76d589b1b535dbb370909f7e19c03c32fa1c44e57ea3893ad6207b529dae799313f97890dad361f19e63a7b80046301da2571bc9067d21570e83f4f9eaee496db3da2d04ae5b3119f589f98dae93693a3530116df23ab17e3dd5220eda76e16d0cfcba892149a9957073c52fbf4d950e202e4dae78fee1fce6026cad44d097731f8fbfd8a5f55e8e3801597769621dd2004a6626f82798f4d641d62d67478ec9381230a390f31c377aa140bdf13552e9e725da9df58ab244f87556aba92cbeb7ef8f9698d394af55e7ebbe450a449f5ccd63cbec7a70a0f183b59db0c23cfd8ef75907cd4f9fe90741a43cce59c35fcd21878e3597b9fc3bf39801a9b1b96d5d63983a54339dc1dad1efde140ad0c770a43e569ea27253db14c7846f9700d399915d47873074cae8e5b1233052c77e78314037675aa75d52c63b038feaacb1d90a6b7eede82863eafd0f8ec5f73b6a680634f271899d06fc5f89ff746898eae8660df7c675187ac3ffb3a917a4d0860f74f170e94a3df3de3cb241baeb718523e680a5acfa8090f7f746a4406715bc613462b77d1a39a0341e470d1db92619cec3de73f41e7cc2f46e05714bb0d6798b3d020d8583e6d6070e942c8b3fc48f7b83790b6c7bba3737b2beabacf687796e83b0c92d712404e52c9623be14041493fcc2c54d2de0f899f1a2ff4818981657b07dc53a17c47b9a0ae9cce5509a17c11ad8162b65a6ccc41287ff792f54f7b6429c0a02be3b9cd6647b4a6c2628fae34b1790b2b64e86e87b3ce04c77dda1754204762909acf5a825b0a6a1fd1bbf89f8ff184cdc2d413ab7e8640691a1b002cd61af90e54ae7428b3ee6e2774543dc06950b39dc905c67c7d7d49c4d7f126845287f2871e2251604dd862d93bec18f725b7617fdf4bddd9f3ed0dabd2e9b0253d356401f7453586e6fd22f82c4322199ad07dba9744aa3ae47f65f244f1c78f30c2f226e97d2ccace08548bb522ecee858cbc7b5a068527cec2dff3a1568474dc20b3c5bf642bae10dc835e11c0d1b25d4fac529d6829bebcb0070ac39cc83bf8ea694f458f338be7a94580be567298e46080b2abea2131a514161924f84d7e050f275b1447070c86d1c5c301ede44297a3d075ff7a604615eead053087478ce283df22f89efeb02c3fc8407b74194ae6de1f5729a10ad5312cc7369d97f2e82cec7103dd82994c9048e1d0cab890bd40263a7649ccec4e055a5d1bda8a22c87353760051a57c87903ffe9344ce909bee2664d917c8fe301e16d1a4892b57963a6f5440946ca15d3e35006db5f23f58bb66e3e57c9ae1937d6f2cc60f863473cb0d5f8b3941a39d32a7408437129c5e70bd9ee9b94b459fd581a3fb2d9643afd99c1ed156e03e6b341155c4166219891f937594215bb31318ebbbbfaf5bbb52f4f187a345934abe2f9d4b5bc5c3cea93dad737960e250bf54f47e142728b297c8be97b8f36ea8e37b6be83de0e17a048d94369255a9c90ae887fbffb8377f6b345bae6ac3fcf5f8712d20a1433959d1d7ddb0ba7aacbb6cf94e2608fae644f228cf1237fcee0672530c2a812f80b2bd7adff632ddd7a8f54990d7beda1794035d463740cbc28a988016081e7c1d506abf9de71da6f8aac552aa3f31a497d9a7cf57b4cdd3719705ffac527bdea17eec06f853033327e492b342ac760498ce9e1acb73c64f95352a50ab68dd3c75174ac460bd52be2bec25f184e1272b8d75d994c52e3cc09c74c99743e351132a1e0347aae4d8979f49dd830a9ce0f5024501458936de2dfaff7b12c95126e828da8655b2284bedcc5b2a364609c32c3b02efa32f7a84f965a82bdce2ce6ed0a5f9b897f623c1228ff813d38c25f5cea675322f0adfa83c9cd69906e1f58204123772d15b0f38bbb567b12415f81f6f8c938ccb924ce8b93567d9ff2d1c7b847b2e01edb12f0fd1ab53b1428996ee9f6deb75f71540865d7e01d1481678bacc8c8ca5d5befa8b1e66bdd63003b39370fd3097cd8057e84d6b95be7b600b609a1e851222daaf5396d9ff75cd8e3843f9b97950d7fc05188c124fafa26fbdd6bf8d8bf18e63d7f58b7c75f80f8b23b8f77a5a33af4390442446f809dee90d4709479b60499e7b5f6c94605c978454ae7b87688773d4813fee3473015b1d2e21313bfb6e09bbf46606524db288639567a304c2c6087507ffdd32b3259a9d1c98e42c4ba0fc1ad14263fe42a1bd066a2868cf29202ca9fe1de40a5bd405d39323d80ad66f8015ba102fbabfe242a68eb97a13f3f6550915585e7cf2c1d87639fdebc798c8acca344fb191a8c3269737e92f31715f6ca3051218c67674543582a56063298aaeccc56455e70da5974a3f087dc4e0a645cfddd1da60e4c847f0295e1b13ae0bf2a94d16c376e27e52a2706c04dfc6c9fa2036bf8e4b3a6ee55bf6b0fac160941da26b128772895861f404ec31c793fc0963772beb8a6169eaefb6e53a54afe0db0f53684b7e6ed029583e6867ceee2449c29606b7be559114671a8dea63e5a17651c70ca087b098cb16c03f3910715da8952f6799eee510e946fffb6e6770fb403ae15653bf46f5ce58e8d7ba2cbd75c46b84087af066e7ca295ac518743b07d256d8825a35ed41236bf718db4fd26e4948bcc6710abb6a61c5a947c80e54520f8e49314ad9946a6d3542f1d01731ff243ba4244bb224c04ee73521a2bc055b07e95be65ee10872a6bb06d2972ce91489bb58c9928c746436e203b5d345de189c8bb38a15daf9ed09c5ba317c9aee4abe707dfd370d45a7132580aa67dc9872fd275ae953e0a4865402d605b8412674c6521530bd5b202be0f6596c2a99c2c4f376a33321c8db7a524d2a4e1fed7019cf4ca074f85c9f698a90f3a99e000760fa7e9b7cee31491bbedbd58bdce19cf373cbdefe6304cb2c3c0f16d50182770a2ab4bb3b6fd0694e6e7fbc423dfa8d71d1e07ea8fe4e4b14f1f84da76022cd7bf33a7bcf0161da0dd54d3e7b8e9d1c3667e80172bc8939155d4d729abbc597dfa9d7cdf5a71848e6cd48934509272498cad45cfd86c5bdf5225d5d6d3bc88a57dd54cc538f87877bbce2cc30cf8df9212991300ece9af9d15ae1cba375d99a78856a90f129351400fb77ffd2f65f0b129b20fb11a89e2498680dac04c14b6dcbfb6fc5bbd67681c098177f43a862bcdb45654d94822b298e2295e31a9a49ad4bc6628e001a43339968356ca04969a2a44eb9e4c7625f82cb47e1b8b517a337ea310c29f665030c7b5f1f068bbb3533c89cc38203b67196ba46ec98686f25b20cbd4f253373a69aec42505aa9a57391546c328140b2c24a9a5381e8098aae0f0952ec1e352975ba87a7f9f023d3209c8db0456a9d46461900cfd7ec35a86eb6af513aa7dc166c84783f5f08269ff49a67465352dc9b2c8153fcc49cc9160a7abf6db073eb7a1be80279ddc9637198e20ef7ae49e224ea464f08fe586af38c5f6c5339f58adc4f40f96cb5a48f4ac393614aa0013c3f019a835f241ffe00632ddf25a433c73305be481df8a3e4608a28722950aa95632fe1d35496c8318cc51db5c8b92710a266926d032b269ecc78db0751d82241e6df9ff6173e4bf15f51a67ffac0d5babadc56f8ee7fd6804440141c94decfb64706a2f9fbd8bff3c9b62b413f7b197e5b6c501034ba284cea14ee5fee65d00d15c25dba0d71262cafb5a4f39ae46bf614e8d1ed291be24e27069cb366bfd385586e446dfa027f58b0d7a3031c40ea2523b62e5ff9ef6ad298e6e7adc1c486019afe8e1b468ad1765e9afbd1353b8decf52c6646bb9abda90c95481a04c769856fcbeb1ed2ed2d497ffb3432eb31ce9649c8ed17e730c9a98db81477c5dae3bc9d3056a7b38681d961995ceec8ddef4dcfb8c65e1109072a80412778526c9375c89e4a385a3b5df042d93e42b0f9bea265905936fad1d389ce41e3829f452f21b3027c2a06696c9ec1c5075f71a4e609e10c69d2eb0cd6a825eee4300b70c65711a429298f156ab663975fe9358ce35a6443cbf868055d6c41dad5d1f09bd051e7dd36b27a23d74e2a198978bb2c385249ae7e812ba02c3e49c2cae80af84b6c7a52309c62829143365bbb1a5eaac31099df1edb729b9b8b3c7349aba5a218acd17c7c8cab95b1b27c65eccff213049814dab287a21a43446fa49585a11edd35c6c10f7f8b4bc0808bdc860c72159c53cd524d9b3097bf5f16d42b95457602d3a3621e44609e6dd45dca10397265ab8d4d5dfd40e4902c54e478612de2f5c17359f370ff557a6c9840fd9d33727768f650441c35649715a0b51afa5343a8d1a8393632a85d41fefbc6ae04caf33cf1220d911b4a158790454d242143f3fef7274b7f478a736705f1ce642f4466ff77090a8394e6481316482180a0ea4c50b24b290187c435e12bb1953e93d9e09cc8878a7a8082bbf7763237525c6d5e15259274a569cbca5ec736dc1fc635adb1a1dd8417302c636bfd90106114a09b11c01dd35228e6178daac01b6c6cf8a178842e2b0fcd058eae6373a7ff2b9060ce5b3481c28eb147d7ff50ca433a394d6c6d0304faf0c350cec9f17a8ac1fa431419c07147309ba0629f2faf7590ffeef25ec8929c213045f73da2abc9aed1394cf6d0fe281568ab3e0f67479651c7439fc64c906cd1a998f1bb2328ca23bc85f2e1152a7369afa90382483aefe7011fd08c45b354d99f6aa0c197e9ff6d957d850c656d5e305c5c59b5e5dd381993d5b80dca08f93e197b9eb72140c325eb1b9a5f3b1bb181301a208794cb4f3154781c52d7dcfd80312952766b2f7b6c8162004b354fbc603c3636757284584192de459dcc32139193c1122122db061ecd8c218c956ed6ce6ab61301dd2503ad8d8006cdeecdc619011d396a770338d87a12022fc1387555f459b61df82de103f921c617e5c95eacd18e35149f917083e67991cbc46749e6ebef97632a50ff30804ced6b3dc33ef96d23052d5434b597a4fa31edcae0fd99b1fda8c39f59355f3e9a3413e58f9943d22ea012530cc7b1fcefa1a5a7747c887fb589d7c625de8c43d0a243b28771d7122b3cc8dc68162c661bb1875130daafe03c7bbad1a2e9ad15c943f7dd5c2967d2e67a853594a05713b76ba9623d4da13443c38b38e67a672b2fe2ba818427dccc03e1b127b00aa16458a5d89752ce752ee87b58365184e473074e231e2f4e544ec52db07fa28b6670a20de053b4475e56f209304ac513ffcd0bfa3f19d149bcba2e6ef68f11778383c838961dc573fd8855b393b8e840fe8dd5f9b0393bf8b40472e5f0aa707b9e99e045731d26cd9b74091047067bef74fdd7aafd2c436a3837ae2417ab1ce517e7050d95a36732301c304fc47fb9d761d82a926800fc41c1f0fdeb6b6f88780d534bff6ca1491f2a588c8a3cb3d3868dd12439c4aa7e6f8de1d5ae595679b549f77d22ce2c8c9de45548a219f56f49470ac612bc83428ef350b3d57ec653951ca2b7d2b4fe4f4fab120c5b6cdc3f320e9df2b39bc50565a8951a1786a877160c56c133edf7063545e163b88ec2a4ae67177de8dd12464a409fe58198e9ac2603cb457cb098f4100bec76cd8748645b21f7006fb4ee486f2e70e21250fa9fbe25ebd3846c863e8aa9ae0d7e6bd06c0b80348d654840b453029cc1ef52516e40b954b1442c0d8d71d176e8e90502aa326ab41eb1aad5b6e3a9ce54a1e8e6426ba0d97c26839a3bc942e8657c9f48e92670d6eae94addc0020d441de7ebb70276c201a15e70401973d17b79da8b51cee8b0e97996526ccc846d4e2afe74440923558796ad6a34b9a53cfbf1288391d766feb291bf71fa35d894d347757913f5de69d8f637a851538bf40810657ac0726c50ebef2681e424e2fecb7ce8672d843c4e985e5ec19534ac33966cc9cc5721af89bed4aadde983cfdfc6d93d779f805f481d20bf00a2bf06246c2f790d16adabce4e5da087ad89dc1863973dfafbbc28f8f2c5cb0d3efdf621a595ebc5816c45322eae2ee039d154eeda849f89d420352e56659c22d3bc4f9131c8d1ba5e975948e7edf45579024e9773c6e73f45c5015abbc0eaa8f04447235502710e38abb842770f8571bc0adf8d0de4ac936b21c7c8473a5fedc69319de2708abbcdfdf3799cd6c7d7938e5d5dc98272196e646ddce56969993ab2f82b113ed2e7ae6abcce14e314b5584f32d869b4bf97c5c2ebb9df68d9f989b876fe5592a8cf52459e4695394df6c1ce6c883af790a68f713e3f869319bfcb2e3913a8c0522d634a96956a9e3e102e1342cd201993944e2e34d34a71a13a0b3e5a7261447259af4892a8c0f5e28ee9627456bd4ec9586cfb627e7d96f067c8499aa30ad4036a20ada8f66bbdd81a6646e7515fd02b93b745eef85dfb5961fb0153b13e623414e5a3dd94ed6521a50574a6a7165f2c59009024ba7cb722949e3abf3f5a3a8a20c91014f9afb0d04d0de4580bf8be9a18cccca230f64a02b8472a97ec09c03cba19e121cb2bcdaaffb4f7db56bff0c40297da0dabba4eee0efd1a79444dc2cd9bb33ffc16b1dea5da460776c8de8a51a5ee2f5a7193ad6e8b61a6d44be4276e81a480d59a5178dd196af8d812e7fa033f644a57830097b634a8d5c26f403720a34995e0ead16bfd1a63ce5745b925a363df0dcd918a75ee0260a775d132629273a232592b77c804085eaf6aab402c294a8b81bc644dfe280c498eb873d06a23de5abe767ad1c01d36e01a8057745c3b9a26f3d65312f9cf856e23701a1d4b6be2537d64ae3bf9ab4b8aff257b8e407ab87719711e74b74552db5d817de133cfc2e922e18e6a29b9edf821e76e2fe04b4b318253445989cb9d4848a186e1a77e6e8ccb0f15ef6e02e05ef88e44dc459f43d48c4c977b250719ce41951bb96e491e6b8238a385f4187b6cffd663bfb7deb99e481a31ce6680ebd10c46c9b054f3f746de9cd9a76c77f6edd9ff2517dc05be456f6b38eb9bc732f6627cce73b35e02cc6a3590647bcf5843961c434b8951e110bb2fb855f55fa33e7c3ba01e18051cce2e870d5d4810124e80b9ebb2d36c488f5b9e6ba44701aa5bb0ba42af18cc6a0a40767ac903d1d6b51da6bd5f28c180607142d8487514274ab03aaba3b7c1e1333dcabefe452861fc19fd4233176e7acbd6388767ae6c41aa5733f6ae4df1d3b7bb4ee29adad6328e88076eca74d9a649196d0e524380a5c3ca7a715e2adc659ab440969bcdc7a9c5a3cd21226cd887a87a051c7bfad6b7126be7d9b81874861b6aba4fc55fc7d561003276c133b1771a2486cdd3a1f669bbc8ca5b9e14f4367d287caadb0703cdce4e0c0e4e8e8fba96c05d444b7b70b1f7d0c4816751256fbfb1ad47a7c7040e418b57b9cb301464b72e9fb730ea8dfe98b5cbdf4853934e1717f691f575fa3ecd0ba7c5695a8ff57c69f847d49a985712c528670ad14bb9a35ec823457f8222593a16456456785767c78bdee264fefe74a99b77a5cafc18391099e808448c165ce357c0b8becec472d858af3982af187f464784056f79cfe8d5599245b79790a51999db8c51a158577c5418146bc6991dbaf7613333392557a98e7ad4d6bd353d00bdc9d6566394f7a63512a0b376487d60c7367ddc8b1826b690dbb3d20605b63432c07708422435c00c1e47412e1655e0746fa1654d404b7c29acb06f668c206558f0900694ee7c610e07d456d2ed0121401c6f00cb44579a61209f3b05b001a2d82a6c495a9fe6649b3adf43ffaab35110def527e5cda10d372524556bd9de297b3837bb8b3226b1bf3bc2d5f88382b57687a7a8c6a149f874d98b1d6adb707da42637d9929c90c41ad784c4eb6740059663a76cbd6ef8e58a7a3df8846df15d9080f325a8e82015adbbee6e1b691e0d4920aa925446607140bb6ec735dc7fbd3ad7798032ed00898804740b2af43a0949a254dd20c967ab6850de969773a8fab8d5ec1647369627b206ed65da2fc34be5b1aeb9b87f8196f7c3b59f2f28108bbacff5241ab29539fa0a7d69b4b8137b47fa7e4763f185db48e69b704b6be82403fd706d08e28a596e700a21ee2d26686408fec6717d57f68f61bee92e8b27d5585cc29892fb125d8ca7a5246df1b25f23b4789ba9449000e18bddfe385235f77fdc11e451ee425bb1d5830a33b29f8f275429887c9d1210c3542dfbdce47ed9f2fc9daaae7d2f983f37a3a48c9fc0be3ec75c98b99896b0372853561e6b3d6ed92fe66ee3fcc7a8066bea3ed9530ab2b61a21e4e53d52932a385a05224cb28dd4f6060df7761863476d252e37e36cb8532e07096d72ce9e89098d0f5e40dd90fe1c87a4715677d96ce7f61d360fa80ca74e4ea33c96eff0ea6c0e9f7e2853fa6d494fa98a8d3c65b8a619f548d1085539e788c137f7602b73ac3038a632b9827306139ed39e9485542130f4d7065b8eb71a8a9a6b28c4dc3ec50ac6bbf5c83fa38be2453e786f1dbfb8967248f569b4f063c699924907f9ab88d64c51269856da3a8be6d8ed9334dc8ce92c64b38d43d0d2e48d9b160fcebc38a1fd31dbe864f6a199c629be38297279a2e76158fad17bcf095eb922c69840cd0c75ea0805118d1026718577dd7d67f5f0f6ff1ad9411f87df493bfbc33326de8b80aba3517a1529f5ec54e8030013c30ba5885ff9cf3a761ddcab0c209baaafe426c19abed6c7e0dd1cdaec90da3637eeb880dfafb694d271a04fb765edb7afe2bf6037b498106d2a7f2aaa0f5abbd2e0f16e9a18ae547d64dc57a8de864b7582ab3806089ce7fffd9cf4dd7ef4ad09acab9a589480c6372688c0da124592f7e6dd02f0f6c289771f5aa49ad09db4f1b7383b571d7b992c8320611becf22c86014f8986996cebcbf9c91a415d5dfce73935a3805fe8ffe29c99422a06ed9e0ceb37bfabf1185884904c85981e711c1006a5183b42517bf191b26d98cc7952949d44ee338c73c580576874aba587b23d96ac74f59dc6eee5b6b5a737266d6600773d121a4094ceb87d10c18ab46a45b2dba5bbc23548eee46d2fab31619f4a83c806ad1bf0b37fc1105f7c02952cf1f0db4af894ae41407b2bcbf66af75a6675061f2906665081b4f99f51bfc20467a6667f93c1c85aabc5e676747334e98e1ac6ded2b3593394ad726c78956dab539801566125a57f08344671c450f420c04f9729640f5762b2073da877806ae9b606ab64ce9381a01b2b8252c5cb130910e0f2fb9ac81d22e6f98f64f92534bc165df743094ffb681cc065b0d8087b9c60ec6db5ccbe8ce1cb6935022b16368c957d92d9336fdb3419baf99b64fa6c63160b09c3ecd47777fdb58d22af2963ecc35aef5979a7dc26b9d2fc4448e480121a245111cb6393c4af503f94c82e209040fdf9175a8743246c4df92f199bd5aa1d58ac9cdc8bb73221fa95702fea98a89bbe5fcb869d57b83953d0f5a5b2a8382952fca316c18d337a13011897ef888204035e55742ecb72217aa1a1567b5756b9a430be6d2c0f8ace9a26162ae434a142f513093499f24e02679e8994b54e9fefc1bf9d2effce38f1a7615217f141e24985871a9ec2aa3351ffd81764575e00fe8bbf685810077622e250e885a0ad67f59a1745945cc3cebeb143ed6d32d1ce6ac18d55b3e43fd32f596c2f8e8ae46d4e308b834cecd9837f0a45158e76ba4926bdd607b6bf1a1446ca1bb31c779c767c36feec15e968570604d3d36a5e44454c1e6d29f68e9f2473244165dc534b746806d7f6f99ad764bf1a25abaf8200a0c2f8b5eb3fa0166231a0b056f89aaf77fa7aa0456352401aefe2853066d15cbc129e9a6395f44d44b1e684dd4ae2a6b710f77cccacd715f0e8c4ea72909289c3807e0448a725cf8ac36bac970bdf77e24a92259c221a5ef63c0b92b8828645993380d44db72c0f221d324e5ed91249bba7057e302edb6b3a7bf3f869089e121098523a81b2af9c77dfc51235911c0b5e94e33d326c5ead1e40301b3c20c11d7a93636e39d8802df235eb79a12426fc088fd28496fa46c13d997448306deb6a3326b1e5f92faf38530bafc720b24bf352c41bf97660cc56825d5d6185202d76ff2faf4f75102ff6a318ab06954e28892d2091ec452ea50610e88e26ba083be6bbea7b77d78e159236ece8d51fc37bcd8a04cf90b78a7a5b4cc9a75c837b5a08af6859435cf5adba6c04d348f3e22c50cafa8d1592b0fadbd6daa244d404af5039ad1025807d7e3d1fdc75a9e013a8bb6e428b3d2b4f44ff843278b6eaa38e1d06ba1c4934476afe3eddc308aa54eba64e5b4924c02c3b988e7e2b77465a27932272a298577d85301d5a9dc76221c9d280d032bd229609ab3c62df0f9e53e9d2bc4836b4488a67bb38b5fbe16773654167d1dc222bc0e4f6446e6956dfcfe7502cc22d6d95026696427536a3567849cc837cc9030e73686a8721b6795fbe471c3bd7767bf6763e8e5324b18318ae3a9da4d769da16841c5313f25c0062f4ba7bd82661068bab6a0ea760b9d7aa9cfd36d1a4cbc5150ee32d6575403aea1122602f38749b8f7b6a48b5261e1176f27f3a88fcc0ecd92d12b11819bcb4c3474acea6967a888cadb36c5a33230206468593293f7ccda6bdf717f88d419f3036e93906a2e5224e45d78f73f51a3453ffc3aba6abf5aec90323b64c5823e8b20078c535470a5cdd61d1f65fc146d4583713f70388bacaf3376ff252935dc5093e3f35727083938c09b5eb946feba786db9ab8987dcc582d49da6cbdfe90051b5e21c02593a5a0ec449e77d4de3734634c543bee869adf7e4d4a6878015fff2d5c1e07fb88c886a56c33ea2b86922ae951c92cd9e408a553ad0b228ce2f616a31fd3e3e63060a5e56b3bafbf1cef2c0b547bdf75abfbd1650ebd4a607e80c4637699072c9c9966ef87217c3fd40c9234d267480097cb6695abb369bc8626de4203e1191c23a471381abfa13e3491c90278ec333ae66e8b1280260c5792346f9d78f1fd8b1226439cf84b16da40f6d55f2cad8db50bbce04d82a6b865183a20c2d6c91c5ba8474c1b62a2134c86aedd25ad9cdcbf9941cac55ba8864e4d72ff85d19f39b0514e9002bb32f31711522ff7c779d57be3349aab15d2e8945ab326eec2e53e1137e113e39afe210077515e5a1644659dd47752e41807943b7a73171c4827fe324fb9b38d3f00fe06ec0fd204e6af6adebd33e209193a085eb1863d8b2243b30aad6bb9f694fc497d3840f64a008cfb51078799b2873c965d424e4cf2be2021acce137975675738cfeca93f5ffdf76d55238e96c1b8e3e9c041ec356610c6b39fe010e3918009bfb3f5f3f2d1b3234f8f30f0e976cc0c709a091f0c0a97afee8a34d0d115b7dc285e7fd36fa3514be09dee3c6d24006df2edcf23c363603ccc6c468c4a0d40ea9ad4c66225dc82c4b7b1fa61209e17294b11006a33219e47c37d11366dbedbe005c67962eec6c16a6c277bc7ed88c1538dd576d41049dd6e3e1761ed2aa3dd04e5df8b0e5501fc238d8f3fbe1141db64b1fbff88f51eac6712f8530c56ad39167e2415051c8ca7211b99acbdb437693d189079c8f8efe69e2d1e11a4e6c518283fd4f47f2a5282cdde729402f1fcb8dc852f62bee89f22bc03a8da20b73d7cb1a28d113b7cceeaeb4e6e1427a16af668953354559e190301421b7f7613abd628bbe7e8240374e5c62c16215f9cdf800c48cc3fe85893c60b401e34acbec1c510d7f15487274c19a788398c4fe9974ca0e9df549c54927bb26991c32a3aa2df99f10de9083242b9629bfb75c8b0467b9554d0622573dd86cfe6c3cd050096e586a78c5c8817d447552094af0f04edf87f90737ed1054025aec413cf07f919e957fa5051e7ec95b5e957b4ac4c8e9d9161b5880b155d2aa227aa49b862d3f8c6318e55d806ce562e5ae31523392fc32236272d2fed0ce9fd28b64d44aa803ab02196ddb1e11c34dbd6ccdd41935e268b689ade5b0dfb53eba5113df5a4a4380eb2ad631a637e8c0c6ccf46cdd49a82efd1f009bea13c58a294989c71a9d57dd6bc89aa3c1d5ee0fd6d4ce38617992ce6d328cececcb939307486151c2cc0beac0579c7aa0a8038ccaa48a46797f965c6812126eab65862b80547bac4acd20ff77da9d1082536922d11dd810af5adfb8baf9775d403359ee41377839ae56ca5020c5c8678a03f44aec3a6d0b69fc4b62b2194743a2f69d97064c415eacea3369974a275361238f461be0823fc75cee18a68a30233d5534a95f11816a836af7727ac52b2f5eb7b7adba7656f8c62d8d5021a5823c5166d761015e268c525fa75386f1282a4291fe4ef826a87f7f8924731b89b65a3939910306efe4d315fc4696f055d61cc3a8895d74df3dea89df61f3e4fae4b5faf2426ae337b2496e0ccf250399d1f2688c93ef69a560f4e515262fb4484b63c0ec1ef20cfa4a11a877acd784741aa37f0ce8ccf8d85ceeed490a22fc9ecd55240f2bae7b2fad9eb0bb40c6b8a995b81ff86b8d6a3204b92bded9e7f60c70ee6780c6ee96409dfaeec75f7bfea2896a8f0290078d3e2dd2208a100f0e7ede1cfe9d1f183753221730ecd1ea5c6823457eade20e7c092e7153f162bb0a18e60f0924b8c8bcbd06341924d23c822bf361dd627e82747866b332df359837c1f975ad57ea4f764e5953d2e3956802f76c3056bf97ab8a8cb6d8a3a5269bde0cad4d5d035f74cd24edbddaaebc9edefb68cea16cf0eb5d6903904a448196cc6f3e467c16998af74eda97392ee2839f8fa3f042d165bc2384b653deeec99bc46908b0ffc36adb213cfc847c2f113b8c2c3b5b644962fba3d03bd61e41362e0d440efdeb0d7a5a5458705d36f24c40c8ac37eadd926a8b001b857e39ef3245812076d1d1c5c5ac84d41bf2ef6d07136288fc29a294914162fe89f4b109db1ecf570ba4ac2c1a7f93b223e1bcc6a9b09c15d97f16b00324e511bebd1ffc85e2ce90baeec4869d2c2eaa737ae6fa11dffda97de217597bf85df6a3e9524635131b8e15ef772a45b5ce603cb45ef00e47eb017b22aec7cc22d3e839ceb18f26d2546ad3f606cb5f0454bc6f2fed6ce65ee083cdc2af345cd3c25e85d4e11c48f1bdde4e4cd0020987eccc434c4830d02487cb4e61d838a48590fa10550de0bcd5123b039b936ab8124de8b54e8c5b7aa93d683faf1394b1ceb3d767845854592acee816f4a3ddb21b6e150393c28d836ad2e1c3f9fed8a67b82c79a6f57152b6240afcb5e29e5953b49d530d26aa1027d81e56242e3363800b098c10897abee0a25710ef9d3a6ce0751aa847638c3fd877cf48ae7a9e23035dcec72438b5797ef9fc7eca7a21d23389d7d090076aef38e870c09dd8d6ded66cb704d4174bccc0accb118589fd52a1d05260f79c037538c748a95748baedfb32185718e0c2d6749468b67ceb2ddcf66a2e2a8fa0cf302dc87f544b6d0c10dbbbb86036e1204f61c5e9f5408f224d23a768f2d412aaeda750f7a1449b007909afeeeae36fee23eded5f97d2c0703479b2ab8b75030ad25f8b69864ebd8fa163eb9751ebf77e9b4ff5c89230b983d141d2a72a6299012268262f7797bd32b60fd703784da5cf802102e43ae2ecc7676ee87141e8db5a0905e9a4ffa8f09aec48a33a415e56adb888c7aba277c54937c2d727985d16c0f0d7ed12d75a0d6c8ab3148a48b60ddc4d9838e89bd6396508a8e287207c77e83b8c11094d8bd65cd14655af1a2a093de3a08d6fd41a1dcf5d852b17b12ac3453a315d199f8da5d88109ef71b9c878fd426722eb3a98cafc5f18ec68fda31b626525b0ed20da59ee4448a7a16be52df24cc722d2e90fab69635c1b522d69073af3e24dd9734ec8ffa6a8abd67d17644b18ff64710b4acc7c557b82bfc41ad0da6543c0d61ec9bc5f5d0802e59a28c298785d702347752fe84dfc9269e9a4b6e7a7304a3dd9a43faf0d7ef1d8d824db912f95f97da60190a66a858895a24550226f29c31fa052fa2267568636bc69f28faea9cb51797cd08e063ab060d672c48dc17e05fd2da0e999ab448b1bb48b385ae89804ed36c8a967b131364acad1124eaa02c22402931acaf30ca3196e42d9e57bfd48f0cd0faf2418f61488b8697acf03e0073fbe64903f29d60478cfc67ce20a5fd7b84da295e0604b0132e442761cc1662942d69cba9bd3f688a8cf5b8cb14098cc79943e30e23707579108095fce53f1d24f2eeceba4e71245e8eb8d3bba6f09fe6eaeaa3644d28edd69293c6555e46cb8c7f168df1361f0eb78231332bbf0e1b7446521a373753cd7f8c1e630083acae9d976466a02a4b72ec60d396b4a350a35c8d1f3765cd6c4d7bad829c9f3d665d5370c17b50958b60af67138f6b585275776d9dcd0506c47c6bef69011dbc5d3b1b7cf9d68b6c89e980d3e9195c2aea06774639c4db5afde898d23b623564ecc41b583c23944582ad415d524fb1ea9b795b1e05d5ef3e90945c09aac50d4165a94bae9ef507c9c8bab4ccd01d550222ddd04538de7118483d6281276dc27d8cb5610897a5b83d40bc0fcce8161beeee412330acc2438ac5f27c6f6ae9212c1a8ee76783b5320ae577f2f2a34bc8e39f9bb20d5fdacf22fafc0720ee3e068b3b3af9f622cbbaba439d5fb00e398a588e7310ebf2f20cd8b0120ed3721afe3b107e7b4c1938c14ffce39054bac4aee1456b31722de0d11201e0b0d87915385c2e05d38d70120e57477ac0fc3c49af70028f5cee799cda6ddddc8a77cb0ae2401e5d662f13dd27986cc3418caeb2e03b3978c2de64f920b7887305e4f27a6eabdbbf743451c0b6ea4966832f2cab5abd0f40e63621e06a341a77ddb4be0072a657ae0b966052e623d0abd41e58d7e711e0414267052230a6fee94fcec1d50ae0f65a25e8d6ef07e6872d0878d72211aab9add26b0bd939067314a9b2d466044310e4396b31a4f78306d44d0fd21c96afdeea6f6951589d890eeb2f8490f828c4745ecd7751a205187c25de087664e4b946ca22d699acf4ff36c5a7c9d65b73d5e0afc498f94c66642be450e67425606c1a89dcc3c9acf643a763e23348b212b58a398bb851cf6a11e8fcb87381a48f613aa33ca86b9ad013f0461c38cd4272da9a52537c674504649cc5dfa9d7db7b56b7754ee72e52e351f5551d50115eb717ad92fb47a9745395c58b392cb327d8e15ab1687a630cc6606dd45716025367a254ec626c6c14478af5726d82d502c3221c9d984780adb00764a97f415473271a939735b169a68ac852a38a8e03d331bbac284321a1a6af0ebbf553b8fe27c9d062cc7cc23adf472c15c8440a86c5591aeccee5f00266438ca3fa9493bb15140b2f4d7b09e29e7c100bded106abbba7937448214386574db0265060e98b5100ae5bc1a01f4279e75117524384434719ff0e0e784633756cb29e6b6daa2fa552d0b8df9d59a5ceccd2ae6f743623b708a838ab6a51b4672b6c3c76e4aeb0e3ccf41169e3df357416ec591fe876a533be1fa5e0db2fd636a2118273c94dd84d6445a3f2156983ec8f8637f52f3425eb5721bc96e6ca0b8a6d6dc9b7357fb70630049c8040f20330416d788fb668864edb1418a08f39ea781dffbcaed9962098018ba3f0cfbf8d052ac8e3440744ab5d81e7064cfdebaceb7d5ddbf180192987d99e4f34a189deeadf945123edbafd0390df0ac91e6eb18b5a48faae920daff8a990ae5bacf3158dd0602f3e03a4eb8452ca5a57ed31f943a0e7bf5ec86bcf6519a1c06f165c36d12a7f004d90df66f80263614bb1ecac51fecf27cb94026e603761fa1cb496aa6cb072d999c74a61d7b6193ee0f45593e468870166f533b3675556c42d4765bd0df249e33fc9675798a07142da0e829c4f1f6e71efa77287cc75fbfbd4005b1f14b83addb9fbb4c45b380676f96ea559c917236f6cfe481ca6025770c8126164d999df98c098a7aba81de7123c16c982bcf2b4466dcb0063d6bebf662b5941848905197979871e0f39c46207f1e4db6ea8d73215a420b9941e2318184967735b8b3ab9faf4ddeb7ad63d88769aa8979e91dd7a51cbd9d3aa4399bb311f81e72a79f8d028fda3c47946b3a037a013e43302e17541dc2d2ae442479552b84bb214a9e4a82734b17f1d475ea154d208bd739ae94a8195c06446965c5c8f563e4ba245e831aa82c00d7b9b161f8abbe424483181768051ee28168913bef26d1e8740f608fd7bd612fe2d28c49ccfc3ae56c0849e1c012d4c8a5f9cd851f76e1097bd177e99f9303bb4d01f4826c6225c3f8e7a055e9e7d965471fb49900e61071ccf84048e9505eeac843faf094ca28e4088f03ef44098874f5f0001aa1d4d9dcd8deeb20054e8ed506f1bbf28f0307962271d8ad9a8e750937fc85707fb779e4af3c4d086508c6fde3a7b30cd7244d4650a80694cea52b061eed89c6ef66cd16861af718437128fe292c628224b0c0c9a7362ad10edf3dbbc0ad3664a4ed8c5c01c95d7f9caa6b095a881c475257412f7c8e71d6aec1dbe22f638fa4db831b441cc35dd9a5f71e62eb2d9c42d5ff67ebd13ae26eff7b33b681942f3c1db36b850fd51eb9260d2b5eb6841b2ea8a3ee6ca83fe25fc73cf7ead9fbfa517d635f0559e633a66caf1d51a871d06adee9b93e3e98d414296b67fc9f610e5fdb8274ba184e662f7af9dc1f151812df006440e6e3ccde2a6ec22465853282616079b0f40e8307ed6b47836560cfb7697ff64148015ca3c6bd5d79ccc2b9f2d953a6e65b3e5db59a59478fb0d7f703d393e08f6a7339f7d5d04893183badabb8e3f5a6c77fbbb7f8a9bb488f8780be2ccd7c47990f9748da701115bda7f40e967f64ca9f18f6914632b846a0f483667001642b578eb117da9a8f7ffbebe7a24f0b393d4ac6959cea13aed79eb44a8be82fa89837c35fb0530a84857f4fdcc04edc0d552bf3485878fd262447646821c60b52b83d52425be4106ba7d9987786279d9dee2d801a42bf091d33c402b7be1252d2ec68faa33e1af97221915ec306774ae394abbc4f204e5270890ad531ceee37ed29da8de4ad1918940849c7fa08861649a0ad1d68ca943da51b6cc240e714976262c317a6fb1d4dacf3c01d6fc9e8614196a2c71540b7f04891c338774820b1867a5d95c77bb12dff08d4c4eab89c94b3c5878376b6cae945b7ead695b1e7c1a336b3d058a33f8bfdeb0f685f513cb89d3f94bac3a3a3489ebcbea3c3350b8668d6b631d311b96f6f5dd33decd0b01c2a1e5e0b70c11057bbdb489735da11c9daf6d29edf80525d30a08e700a4bc1de0d75b6325346a9512f7311a09c91cbf8fac36bce3a0b1e4fa0f3c47574940e73e5f02f326c5b6028ceda9b5fb9e7986c4e2afd112dc43f7e20cdf2992e557bd2ef4eff1cedde8223b0487c9c9fe3e16f63e7915afa14f515764443123fbbe707510106f957eadc305db5b91f9caf22f954e911b950d041af96a56d4c27b2abbcaa52950d8f2d888e3ccee869485a5594222fd37c2d02621bc4d4b51ebec659b5aa8125f56c9c78762bec6bfa83c6d9254009acdd831bc626748a0225b9c40154769da84b35cb6f3253c13c9c486a19d56e782019d9d7eea152cd57a96e43c5924c1f44cf8eb50ed60e909147f8feaf587e0b3437bc787cbb635a2a0648133247b0ab0411143fecd5f3e136ef13375c95822d5c8005acd4a8f34a2c250f45c3b47ec7fd24ef3a615fd966051372fde78f20258e45f3753cdb600abfe28f972457af4e63be21bfb772d91c513f456a6f2adba4f2dee49359597414ee6800adce57802095867c2786475bbee1acbe741ed9af6af7ba6e4eada72843cbf2ff612eb9a81305658bbb4ca6e934f46e6e11472fb3adb16a6b3655adaa2841bcf81bc95ad73d0169622a8ca46d461b07275ee63c515abe1b03ceefd3779e92a411f1d7a704bcd50e46304773d1510c2207fd5ab25215cebabefdfea45edc75327b1e041199716b46bd3cfcd2bb86554a614387ff8d507901fc7a6d693444737695f66a0d17adbf437d6cc91f927de453c21d0c2512e963ebc78a03405cbcd41b17b022033fbe309b79a6dbd2367ed792012cfe5f717510dd335c37f53c9f34dee75e80ad117d9ef416156de3dee9bb2129322b1e4b68381dbfb2b9d87cb6eadd5e0ae96afb585f28b54b0c66bda4f15d85ae46ec777cf51ee74f6168337af205b869fa5c6595ad433f2cea7e76b1d75bb07477e83f22076496800b979332ae33c8c45e582b3bd2b3903ead77ed438ae090c92e0ae9c6e8bcfba7aeb71dc89f778a8ebcd45f7f3f48024ee3a1356637791aafe8b134cab6c87ff6901c6cc3d4cd065fc0ae208a7a650dfa5841bb16d0f2a038859308996e51a987893a9f225264d7876202276590ed751bd5020e329162c2f0033b9b1548f5665bce99db6517cba21e7b543414ed9a367625b3f3566b1f56dfcbe13ebf839ad075269f9710d9525a69ccb737baff529a283fba99acbd765616a28d9e46ac1b6afeff46935b84162d0024359affde64271ef5d255fb93c625ae0c75b6b52cfab7ed1316edf1b8c88865b8f8d1b12c0a91bd6e68c2578e155b5fa641acaf2d6ea76a1acd9824185726e45181bbd3db47e37708d4c365ec1ac46587e4efe1f8b75fc3cec541dfc2a3ea2c2d3052a4f18c6b2cbfbe61dbf6756d7078760b9b72972e5799ad99da306d274b1e1be3b893be86b01bb719bc07f4ab178507033483bab1a4d0d383bba3c5246e97eaf89d4b7315a55ba14df6e97003c40e8d0cdced00ec8f4a4961a7642ab686d7ab5b3b5b75146030e8f18aa60f6a846098685b8dc2e1d08a6e94569530c146873a17cd237dc12bad8b355c7b32cb02ce0ce358effc09d8e707df2c10e676bdf8ab7b40f79cb9407f1e5b0fe78a85cfc4a96aaf6031f0281377117dd58f59056e030f491aff8fb36faa0cf0067f3e876ec0183f850c9a755a63b5425bbafcacc24b8252b7aa5cb6356f0b04d369bab9163e5e3a5cce0917a3420277801d6b6cccbf0e0fed4f662c38df7cb2682af13f4b74cfa9b04aaf9de40bd738bc16b907de6ed946709721567856b7e361146b58894f74d00f5126fee7181590dceb783e880b782669486d3f82516cb46a9f8657339d6e3e57124899f40305a7854c512e46dcb87281c026334e15568a1e26369fe269130440a9426780761d0d589e38957ca9ab869549a271fdb9a1ef3a8a7ad506302dbe936383ea96801b6e8572584c82408cbc120667b405aea76cc38eb17ffe4b94e15cb8a3fa460cfba7a71e27f6422ed50235b62975c8860b91972d6e0ca1c771e9de72703cce4ddaac5913583f8ae97c21764ef0b747ba83b2c4916011fd1b336d224524b2380152533707dd088414659820950c909f585ff2ef9ddad1e7e18e0854271d41afab2a1ec1eddaa7a83afb9f35f2eb8f1434ba1205c5ee556350592dd708ff5e0b5c3c8f51fbd2a82b47a6ed8e115e2293b6596ac75550b65880b95de2fd9d0d422ab18cb794722c679c4320c87f429803ed0bb7dcf7c9524627375dbd62114ff48a4dcbe79eb11ec629e0c9c8ea19406fc9e34e4be17c835d2b6452d105e49b23637738e9fdb2cfe538b37c163532198877598e80c6982efb603b1e2f82ab7b4d6c5e4e9628f6d5d2f06df5e5e2632f0330d7226c33c1b0ee2bcdd4e1f43d1958002cae72043ba318ffaa88c1e9a8416b3b60d08115e4db1ccf91fa24e0a39116774829f8474190a1a4810f8e915ba21becf973d561e347b2f037cf6f0074ea1e2f8ba632b67f69e02458f26c15c7092c2508b8960d357e2dbdaf879d4634ea3783e44571aa275e88e399ae2d91eeac8d941703cd455ca0804b0c2a04b6c07af69483956d871d9fa16e1695dcb6947579d41eaf9878253aab66c1d89f315160484ef756da462f65ac8ed95cfff334e32410017a155bbadf3b42827fbe673b72ef15e5d5a4ec9b7bc9e837fa2eed2c202bbc53c728364d254f0b46aaec7412946b895f0ccab3db45d6fba8b6c39845019a4e8c8cb716756a0ee1042bfd25d9a66b8e734668219d26d98202e4a05e901c7f1599e18abb2d6090bf5087e2848ab48f17ceaac03fcfb37e235c35dd183491c9618b4c9ccb474d50a4d1f028baa7e180ad09272a549e5fc63ed3a809a3d9a5099ba037501e462cac4b7bb2a1acd59ee2832c76236a8deb1ca32936c53e18f5442ebc773ed3a81baaa048ef7fe1dd58a5746dfb68b83ba15346022f097a0a75073e60a9a00b409b1dcbd31638bae9c38e484e7470a8ac1cdecc8b1e9088f881275ff84e118d34c9a0d9a70290fb6c0f567b6e7789a30b77cc42d6821ee24dcaa0a1acb21431b7e76e90c5523850e96465d7e79b34b2bee055749844392bdb6bdcc30cd2f30969069ddb40c2348b526547dcdae7009f86c6e9e49e7874c1990477ad1a4fea552233a1aea9a79314d32386b6d48084954220e5d4d6fd052dccbd8229db39bcdde7d116a375b90de9cbe988f793cc084c4290374ea21483e10d289ccca1120c0d19c8efadb53405e0d38f568e08cd6ad0e201906a726cda39fb7297ea14cf11d434e7e8c4858d1312c2247ffe56d7f7cbe87965b8391af40da7669640175ebcc525eca92a4fbca602e58d89ba1bc11aaa23da2d76dfd8e03f5b7051fdb7d4e339fd371aa4b53015a66dd706080c5dbae4efd32f4cbf660a888293121b4ea8866ce3b9c7d4b89877fd13d3edbc05a5a9299f5ba25f435eab50f69c17626ce39ce0a081a94e73e72868b7e163ff53accb91e6d01bcb6a9346a6b7be02d5f1804ad7ef9e3cb15bf9346589ef87988c75b66bc76dc51d051cc8a60d5441ba0350ddadd9d6b3400019c311ca6ecfd330b59c117b6bc2179e9cc1c15f431adbffc40b7dbdbcecf867a466c6349a5b286103eea14343da1d8610ac09785c307a5edb419b18f404dbac27f6fda168530668877776143291a892cdec7552145b3d1bfc46a9d3738286304ad2ad438e91788c02b40eb74aa931e566333a59098bbd440c2c15fb03ab87c407fdbc6c5db11fae97912659c90429c702b563ea7ec3dd3825217be014ea5b260fc32cba08fc99bafeb2ec8e4e5e3fa4db659bcab4608085bd2fc013b6ae5e919a8ea20ea47f89e1c13ffcdf440d9a58a36bf2050a01c41305c73775f79dfb79ef69fa9ff8c6f0bd38e827523879affe76cb04d3a9c9f60194997ef62b890e82173a76b0dd1e73e92ee5a82bc1015db76a43d8c1c13f9d94b47d640368b99f828448c102ee63b660d3234fb5461dc0392199e095efbb237da5f4fc3e315e79caef71b661be8a30712dc84ac2fe6a4b3a8552753536df197c285cdd4bb2c473915c131e06e7b7479fed345a3b16c5d1bd949f7e006c6342b4d888654916d946be992ef137284e166888f4fb4e64260e05a323c87912a75b8ba82692a0694508074beb63a7fb74550d33e7ff61534a19bb98c9c0403ee8c18432351bde75a73fb1e03fdb3f1a47a09d7f4a34466d37158dfaa8077da9b55b96363df7c9b7cec11a3370e80a622df38160679be92c67119eface6e50ea9d11d7e8b21569ba4d72f0ff7e5c70c35c4dba417a045af028551efebf8b6a70d3b58c69b5c420264a97298fb8f52c6d91ac07e98a202fd2c366a441fd635e548d59581748bb9287bac2d3d11e910d855670a2e9f7fdfce91bf3ffbc6d914f991ef9194572937510aff6737ca2d926ae930b2c165300c7e6311a2e3a43ae54e379a1e629ddcbd647bdf5a3f5f7f8f1a0b5f0414deda7c6e3390d77a4e04a1646e30a2f9b67652bf3681f59d656a60d98c371e61181f6523d7f217a62148253316fe9595d7877d0c75d15b0f4586845d4cfb742d7609c4632b9b0f3d26e1b0262ef7076adf75cd33c08c627597771e2351714f7ce3b8d76e67015e64a64d67a703ad17c3619f5155f5c5155adcfa72fc790a495690b5a140f24d1ab887f0d231586b7d73e09420d6d98733422a206c321caad29fe44969e6eb094c46af835cff01ae019396dbd37c958aadcfc78b1835368aae3fa8ec3be3dce26f59faa3d63ec9ed018d6cfe069ea30e2cb4d6622bdc1724759599f065a43ddaf5129626f4dc8319ef7eefeadb580dcf88737a867937a2801240ec3afc05c8ddc2d5bf56cedcb1eed1e665b976e3fea452f624e37cef80d545346ab755e7c4b1af80385261401ccbc0a15b0882e709e74becf2e4d435ffde2123319e8ccfc74a0879f4790c81387f693a3f05aaeea6c6ebfe4195c2455af88e30466400a28a300f85d2531398521f8f87ea1421dfc7eedbd3ea80ab74b38ec8f9795dd462db47777663492097bfcf879a30d01b888d6e7bdfc8499bd2032ddeeb56ab700bce6de9a40c67bdd09a0ebafdcab1513e728b5d077ab1bf5ab30934ea1312ff6ea4a282380f9edb90cf0b2643406481887b6ec81480feeab3b5b00145c5b1ef2e1e1f53443e134e657136dee29d17ecdb44c036f72dd811814e1fd2ff456f73bf2293e0b06db34ef6a44485691fa8d768f52fd6d60a19cf41df680568930d047cf7f8a2f6e39df76e9ba1d7f61ca80af772910af794a2e2c260c64ffb9495dccb73dc85a858f4ca75625b210cdb9054d263b7ea688ef0ac1e6ac4379e8aaf7956e5b16ace49472ab58a60c4aa157704c7d16dc08d3d05b24de71d98229bfe214896dca60fb224e0f3e61bb6c260a1722e80028a694b4b2147e1b3231e3d6458a6275181ad694698bde54200f1b747740b47987cc5293544b1f9fcdb10744e6bb43154b94dbc7c619b47f9418ed794e936051b7b222bb50f227c3997db1bd9e867dcb1fc94fdb831dc3343290d39bb329cfb09a27bb62497ef26b38386bc9724ed61ef7191268b5feded1cffa8cc90b485a376c1d840d498900d529f57a052b43bad6330f5c5fc2743ad751c64caad57f95186d9b0f648ee8c36da3e3926dff4ba86d8c520cdf22ad159b96e56347c0a253a7da11c3f201cfed63789708a8083f60052b1fd0327eb122f8bf64be4fe3cdba0d904d982acc89f4d5afaa39febc56217dee9a82d5953a487d14ab33e58651f534ea119e1a13c703f40e131321d6031b1da55ed278f2d6a533914dce4417bc2b17b4a2bbc94e7e07701e2d60fb0bf357af4528e8f1aab4afae5908500b87d0fe41e85e6479fda966ed575a4ed4492d9433d3162b3a1df75ad1812bd0214ec87030f0ef2833e4cbb944f6547a6db4c21e01cb63ce098433e69387e0cf0b34db052c853d54b5a17dccb4c529e8ab2a4c0a88b99a94f70328129cacef89314a8ecd075f7da6677385ca8572fa0be5d143f24fa0877433a6c9f129790d035f60c6dbd614fc3c1455274619bc492dc4d5d2c7b85231018b49605917465caa8bc092adb75e8463c182cc390d72d9158ea0165af9c7fa7576cb744b1e08473d1bc34f187fcff68b4562f6e232959625eb9c866c706a4311837bdba32eb346efa92a681f823079a39a6e9d11ee78c9f23cc3cb55f4e8f2f2e41f6ca16b2558092ee7db82bdd27aa91568cc21a44dd2ae8cb2c4e54f33149fed997a6ae0ed8f12d795acd6690b98b799f6f5c93dfb9f51e912d2e7467edb7f77a39a569ee423be59fe29e4cc9cde54b5b8c6474f45e17792314e570c71e8101ab562de6382e046b0f3d0fe26ca376f7370139805c6133cd5e7d3a7c758f80641bd12c0713c87173a49a70114435466fca8f5174322830153e48e245370143fcc26b2110c552c5466ba9017fa5aba8fe8b1e500d77713dfcfa16414b3da8b0b8cb4fb10988a24a990a1f7ac0d1e4102b8c37a14cbfca2ab7c5d040ab85ae87badd87d3f004a296029f36a74925f4b20d8d88aca19c160e21d62135f060afa694b28488725ecf15ae9d2a18a09ba0f64e536495d8210e3a56fcf7cf817b3c277ce29a223634bbea1ecebddaa73fe4b92d2e408bf0a1bd8447a40626b1b25848718c811ef82c8c1c21ccb3471b0d6d633c1f37aa3b8803deff7444c39028fe28abd1d58bf73a7a1542cc57df7f7720c5bd94876b6af3143696516ecf0a7e9952d01b970578fc54716a8ef5352a4391cecb5c12a6648ff6b305878242e7d68913c6ccab3a5a50fc1b73835ef0229d8d0fb252de1e1204063c665f4329b44fa5a9204658060d75e6bfcf2b67d0fe66900a264b95a9743174463f28b9f9c1d9b43c7e2dcb1859ce9e84a89e69d1fb7b4f5747ef06d9b55bc205eff6aef7a505f3a85672942fc9bc3f1dfdf9c354f54c30959189a23f0a5c49dd5f1b31a9f42092190ae126deb0c7fc26ab35545e0191cd2d2a4300408ce5b327863e175b2630367338fe5be613b99ad7717401e1c8f075e733f3596d70ef824d609f75b5d7b9798eab7cef20f030f4fb4c77351bed82ab47126d0c7c3560882b73be2760d80c66425edf00f6aba37646c1485c030ca8a5c5c62d1cc2b1276dc9fc0c4db7b9a6fd3e6ac09565abada3edf38e67c43555ceccd163ad4720102d6057e2c98fcfa4b5b7e6c414a04d24909aa7344b4ae523448f41908a678fb097b0460fc20bd5b5f5dd017dc92ed55266a7784281decd8e5aa8d86aa2ff5215cfa929e4237fa7d6992bdf4e66acfc5fe3adf2d288d40f9b188f764687315ce5cc5f4a641c64c940737d04127d0d3aefda6559055f46a6cdb6d82beeedb29805db51c6ada05f9f55c8fd5f300879f2aeaed33eb40be11fb5254ba4d631aebbfd1a01c952e65599fdcfde30f9e2b020abdbc6407e17c1f47f86bfd08ad03212acfed6127ee98eb9e636e55c514c0a30ea6ea887600f5f0b10b0d4fa6deb354528cd5b0642e8ea2b4a9cc2fc1369f60d108899e0bb048c3ebcae71ac48ca222b0f25bdb55ee626df6418402945c11ab481dee18c1e0b7ef6783f18159955fb0ad473a4aa202b31529bb13853b0c2f9acc93cae2096beec26715507d74a9d08f31d7d5d62b7c18d0755e363b0aa3a2b55ccfd1e0b9eb93d4431962d664d511b05aad94cb887f7ca50f820f08679df24dbb095a6a1f81ec10166deeb627b495cdaa573b6b88be20564134ded614bc7923f4208b8c8e112feead8bba79a68ffac60f70bd495c6d77eedab418778caf03fd8f170c593133d0f2ac5f02d98f71198d371b43bb930f33d8fe24910d20db98e17937a8e76064e0f0dd7f2e4ed0ac1d1b28957962b4593c70094a7dbf01567819a5ee9bee1af75951c296ecfa3417548d8b32ea6cc86dce0c0650ee80d11a152bfc812dd64c3e741d559c15e737137c50f3e499d15e934648bb8285a2f5af59d463e5f88af235e5a56657e15bb7c351cd2190cc45f05c725054f10c7a3855118c1e7cc070cc296769746ecf9533542ed05c4af6fe96a03e84f13d84eacd48ad8cb2a6d282da4d13cf78386d8b23854f4e72ebd4813251c60784a05875f19d82f5dbee66b6929542e35b37956ff1404ea7c5595e18fc8894af0b00e350f6b5812a4cdf186bdf1e88328b129d40a9211f42eeaed9c7ff5858f866fe0d8ba0a890f3cd3dc2f30fa5a1ac6c1ac1f51acdda578644ae4b2418f778f945d07597ed0dab78c083d719bfb6e470d4df76cabee90bf8b88ae8cebeaef2ec1d8940139f463c4a46b13ce1820ac84f70b5caac06e65c07f58563f8b1edff6069a8f421da27f66780f65d556a3c5d39e17b4a0c5aca22e29bdc05d3575894b86610a2ac6ea1f15aa913f442260a5fe6759bdfe0599d769ef8ed3fa267f05403adcb6cecac01cb20ba36a1629b96722ddec4ff27a4c736a8af83bd1208ec0dc823050611f7c8ca3c68a16d46813a8894d9ef0d5817f2548caf9842d0c3a13026b76d5104e5aac8f8fa0da765e57ddd38c71330ee30fcffb37e67d9461dfe5585b3a944b81fb587d21d30380b572c6fbe71dee40f17f023f85e6f05f0e1a6503e8fd022740e2165b3224331a8dd5e60ee78b3a50a47614abdb74a9cb4350c6ffaab56bf84cf8aa2e912a4c60abf512a8ba5b49c3d63cbc793de0ca2caf271c6fa94866684d09436f248cb32320cc0c7f445f04873741448954cf764d180b3b329614238bc2452e4c0d8bddcbe956309f821e813015974a863eb7c32648aaad8e606a85c75ec025e24a752c2928153017c552432be373115d1f6403736779b9cde10e0e97f6f224a1d6331f554a8ee1337e6a4f7d3cb05f54857659d2b92c730729b995682037d26459bccff96dca1998ad090d0b334bf173f4e0a17bb741e38bd897d72f174f7701479fc19ad7d699c3de85f984ede87718416ba7b30c763a9c44cacb6b9adf8947647e00b904430bdb73692a69f14b2bd7bb31aa84f34f166687e5d1ad55efc3bf798d8eec59a60cc37df39fc2f9e0e91293223670b192d5728a71abebd06bcca13b17234dd8194ee0b2966790e635e9e438824915c0cafcfc196b46260aa26fc73df938c496b8bd0e2e7a8efe237af63a0e69cb044dc7aadd72c4572fa0ca679e20256d22f526c4a17ff7e3dae308474d0e42523e4a1b1d0460e0c597e57ab55a02212d12a005917f421e8cefa6d7d8cdb74c3a0f3e9f44a9e818e3104a2d88eba586b541868177a9d730622ddf066373fb1c0c4e5eec69b1c43878ca47c6b674af81605ed0c65ac322242bd0e657d6c18919332c48e3e1ed48019f976907c84ecc5444bbc6852a6c222598e623b06d3274ff0318d326d23041a86ce40d188bcf9ad621bd50746f79071219e8f29b4e1db85d1369129c05653a556cc64107405dacefa26563cbe767fefd7e42dec6b906f417dcd096f1d01b13a5e9b16e42508e0a1ee99745c7339336ad6e09bc84cb313ae4b5c96513074345290b9e9c1e97573ef36bf0092a9206d31ca331864bcc9aadd01b7eeab6fdf43fe5bca1b9543a8bf694274affb9acf858f8ff01253411bb58bc42e258d1a19454d16a53af7e122a113c1b4b22bd7444e02674a4ee7e6cb877d9fff9981f9ca72e5c8b750d9fa349f9b81792cb830f71c23bac00520c2ee24131ff84d59f85208ae4f9b9b898a59001e8dd5fefdcd21ac501954afee2b39d181e4a8b36152c0be03f21a65bb41c8ca1448dd5449d51cfc4f9adeedbab8a24e4d11d842586e6cc0d35f6e14e1d025f42546222942078aeb5d32bc656361eb650cc1111b6c0f96a8f03c27b4d647c8e9537c53a3cc2b86267f7eabcccf4f91e91688e8773d00c89c1d9bcea90fda7ec461da8f2b9634842daff31536f7c99b7455093c2e089ad11c45d78dadfc0efe338cd35959be96aab1b3b44a58908c93c2904cef66c04e5ba02271a09b26af5a46020d053d5bdcfed8f2bc4e2e7f595232f5800837d1adcd81c4366c2ca1a0af9c5845e26dc4cfe524809e65f1047cf4ad1f2b6f671ec8f30e2b299c192d436bb207aecf64587d217843d72aa1922162c65cf4fc9345c96bc5ee814840901d5390c179832ef630969c3e6974c2c527eee72be507b0091f2957b4fd6565dedb602cf87d019cf5addb4e3588f272ac4befc32e30d1c7e77f9728fc3c4a81848e0db4386e469b5e9b2e394980c90880bf2008936a06d473d466e5515ca6b5aa6ceea86e5e0392510d54917e2819625dce6670d022c2124d5be072588bd8ebeff514ca80bbf2462d541649a243225c49200cef86677e50e77a891f2571eda722ff59ecb71e31a8ec186b2c48013dee5aba7f70ed7d0412c1ecc7b932d9eb97377f641ca25ec746761ad3fe5ce81e2ec484a37f99c45776209ab2efeab7bbc13facf4aa448cf21d0c637ac0f17c1eecab1ec62da5128e22e3cc368c1e5acd6bf415073ca90490ac8062dcbeb1b507306cf49bb4865e795aafce34fbbe5d9ac69b8428291c79c03eeb9352452cc0a9689b18366449b332d6d5792a82c272775202ea8f0ed499eebeb7cc8ece6d11c4582086460338d7608229a7de5a01cd03628597fcdec8a15c86b71664ac504c4c595aa2c026624997431d80301c8a791724e501d223d8e6a0355bde7eff4f4e268cd12f88329211a74d46ac6524ba3e47d520f1659836fa4201a09d867d464634feddea919f8987424476a4ed3da5a081bf7f6b4691edbb780d002e39ddaca686859506f8de870d6f99236c17f2c0fdd17ba4b05ca7c942513a5d9507912d1521348cecf7919e4264b97f3a4cf6b768efd3db36a691deee80b02c4929a7bd78f0fc5634d8576045de88b08b56ea3370e1b29bdc935df54b6f8627bdf8d0b703fa4f23b9541e03526b5369fc6acff6e5e749c5740ed4fc389cf65bcdf0463e1a4290a2b409071addc817227bd55642eac606c576e3e414c85d020c76ae96aa6695ed82623af57f8cd9c72d48ee3b4f939e1f3f34d7909971f5526e2525bf5ecaf32d5c92f4e7476d1d5631d593c5a491afbb2499c527b5ba2e6e8d641eb2e17f5f281d0e450cbda2eeea83e856e050bba9de7d8d17bcee7f8356370a5a4243ec4fc6b9e4e1d90acd4aef5b4fc1c6b1f3be0f705ab11699dcece0001acb8e3aa38670dba979a80c8de1ef9c36d8db7d99e9fd3984023b871fd9fc5df50dcbf5b5049c84c29411edd6c941cf39f8ac783c0c76a3cb0d30b6e4cb39be278ab1d830e8864a45bde3fefc8991a8fd88cc6d91fd1f40255d8b9317eae7fe71ea3b6086e56cbb4b6ed68d6dde0d5254fdaae8b7b3d0dde8f559f6caff7fd519084ac0624d13691c2a94dbdfdbee509b2914cbe3b1d9829205c796405971383b933ea4b3260aff56736eda3f8eac2d1bad0d08bace7f81d0c897174ac2f0f67826240da49c87bc0e086b5dd82775cdad268b67f0830655c198aaa8826aa7fea3a9b6468fd151c7338e13692eb4322c2c7d3b51a5301046ad5888ea3e969977d177c79e2c3cc82b35c21073e235d3fec8f5aca5003eb192e2ebe1f594e28ac96bd350fe5ca0383ccbd1d97301209d4ff1ea0d60b7e08b9759ab09155cecea42de09e9b45995ad52b7fcfe60b3f767c674a024ba6608d4b6fd2deffd592ea373fec6e418781efa8e337203749c54956d3bd824c739ba0d63018d92c295393d64fc5715e66e4c17029437f12b39b8504b5ff293f375c900230100bd33783df00e091c6c051432a81d8a0a047ea2a81e6c5851643a9c8a8cccc29b836fad13f8afc977b93eb22521cee6507bce233eed37ed9a927f6883746c397ec56fef75b05b029190b8bbdd5bf0dbd3d4e61062435a0cc8594402286ebb9d86451e6d54a288da1ed9aba85f9e0fb76dc5985072b3cacbd4bac1a21d5ecb7cfad4be7e23f7b296f2c04b7781dc8222bc4d13b8842586bec4f390e14a23aa96cff794aeb070d9c3332e0f64058e711e8294fc9ebdaba68deb2881756c245dfe493aaed1eef3904ee7f5f9c2864dbf97359e6451e3eea71d3927427a91c2b8c7b7d12c36feaca01383fd705dc4741301d4f0c1b5b60eb1a4a47c2a2a00b724ada3cf750401ed43992615f3ffc64aeb21a8b5a8a4393813994d8e5e1dbb29b94f999362d621cc3d5c0ac338c81d6639b7cc088284515606b7b2570b110d1804b99819c8a6473fe023846c2e4ed48c9aeac41865a50b7ee8ef568e9d1e5d8e23249e96ca732695172988f52704fb656d17e4c37ddde127045e9119e779d5aa47201fc855a02fb1fd83b66f71013b0578fd197fc404a0aed78021ff0cc8f08d4174b11058c927c086fd11710d6a620de94bec4d567728d46d19670136b75e01490f83067bcb97029740a9ef389ecae4d355b95a10ab4dc333f9ac2b7e68143f5336e25b47a4475bba756f381237c2d24e6080bb9332fc4c077a34007414e0776b67a5e61ed235c10cfb0923f54b6bf06c155cee4c45d89146e00e68c7593c959b7bf26404eeccb51337b744ffca69ea6066d8276eff984e7e0da1b0aefb410d436aaedf86ba3018b216c1a18b4b7a7c39517e621bc34a312cc6c47ff0e1b03d716fba74b25df8da26a8a7ca046321f6e764ce40b863c4411f6443aafa85dbf8d9fdf888bf23327eae439e9b9319350ac5151f6677e133723649bb6b1853e9f88ff9995925bf3ebd3e7572adc26acf6d3f66a79e627b6c8f9e2b579bde373efbfc4b9d5b77f3aad2dd16781318d96953ad71dda28d89121807e5c7e2ef142e6d863e421298f501dfc82cf4cb00176305b89feb66a3d4b6b5c0c5e69f154eae207b52dd3675055fbb0e0236848d00a053347125d91d6d4783ca32452e9a4dc3f827500d58d9c3f96005585991a7c1437626fbf3fdd77d5eadd1d5a5999f0ca41b1c396db6ee12b410c4c0c9e683c849590024e4e8bc75e0a079b9cbfd7367fed3ea402c19fa0fa92f0b745a76c7c7fe3b128f848cec1f3d352ff426e94ec86cea47fc64aecef3e8b078cbf5b8f58324f08aa8a77aa35dfecc7713124497aadf81ba1fdd9c9f87cf65743a5ac832572002f7695636848da7cafdbbdb87dbd46ceacba14c8e378b8abbc5a6c12a8e92fe9091f2c7885f00226066da426e7864955a45e1272f440537d47d19002addeba41335b36a9437922952e190c510c193a25e4866f34bcb83bf744af61b0e8f3d25a628350843b02446442189bb407afe437590c80d90d576b440f7bdd6af04b8baf52163c4d9e019b497b639b76f1f4e72665326b3c962cb5d58fc39e2908bbfc60e536e00728bbb9ccb33a2f84b9890fa02c1cb4223b58e4a3e898d81ab950c8859229da911bcd17fceba195b3bd837e1a8d51528eab922a273f10634468c769f7c2d99d2d05a6e8dc13de7e1934eaa916f33e5a0a02a1de5d0cc3d78916145a87565526216a0a428f1afd7004963b237369b335b427e68a7ca64fbea98bdc01c66d4e364afe909260664c3c5094e732a001646c03fdcf4b21f2d5c8030efa7bc5899b28ca7225684667df7f03c2d242bc2369fc912b657e244a79203a71fd278237b5502b7388867bea0d3e690ed418e36cbe4267eabfbe60b6e5c1ffb5a80cdbc73beba1f0cb4d3933f180185c3be13981c47387ec8c360c7bc6e9a5ad720a4408709e4a6dd870c7a1ea0e9cfe4709829ebea3c9278e3b7de34e913a1404de9b8bb88a8893eafb5bdf1b2facacade93ccb555f3620193e74ecb1fa495cbdf2cfd51febe40710ab851aeb7d2c811541aa3515d470ea9807451ba84d95f7310538a8d145120ead901add87d15ff99c7e2bb5ed88ec2509497960f1435040a695d3bfa32cf54bfa0be5695b2e047b53dcd567b3a6f1c57c79c65dcce5b746952ad391898dd4af830f895d9dcb48d1be493d159ed0b19e970471c87f5614af2f6317f61e931341a6b75b83c227d03b5526c256ca8cef5115c976ead4b0777cd6d98f3a1f15176d1731276c072d301f06cceb84b83cfa6442e71a7696f3cb1c9fd6a3cdf09838345fef145ae965a222b1e99910cba5000081dfacf817fe014bd7d10e8915e2e87458333882ad41d68aabad163ecb09fc14c600a53aad9c73647bc6daa9ba126475b3e17279d96817ee3cc0532f66cfb5721d2770c431a5ca9ebe5462ad2c5c99b672a9aedfb9213af2210edcc9aabaa99621ca84907e23ff2387b4849e5e3f280d6e7aa401dbc4ffa00a63444c8db5c6e6855b9bacf8953e7af07775d9655d95f7d24bac369341e5031dd424566528505a8ff5232d023acec5c81dd2effcd7182b9e324f3578b28d2471fae4bc70e2617f9859535f86683a631274e7210142a85a25c89576e5013b4394fde4c64e92d8388d3e61977202651084ca50d5f61f1e4e8fe04c05799e0611066ecd4d81cea08671efd15135ed445b09f55a8c81f8a0795891bac3973fccffbcef0fd8f4adae28d939e59f469f68553f1ed524ecf4ab67cf877d47e7b9f8459eb4e2f071f01ff36eac84009ebc8d9bfa693990a6115b7298af90e8d3e3ae0808c740e529b74a386f254bd838c3df98bf6757cabfdedc7a2a29ad850b8af43a4d24b99331cdbac32cb17fb498c7af8d4a55ea8e70d02b88529084cd0174d9242fa7162cff7f5f7f8cb81d664141b7490931c531911f7178af928d916e78ca3169c22a93f1076c02887f44cb3ee737ba9e9c7e08213ab33a33d65cc4cba18299250b459ec680acf7adf3a7ce9a9c8a64608fc607c3c3b158a82fc44ad9624cb3869321812272517f9ecadcbde86cefa5dbd8cf913b2611f3292932b41adb8447201558980fe8736e90f09998bb98b0194b7377f6f4b137b4a4d80b44552b93ff7beb9531771bd494cd4649642fb2ead625a613d17d4e7ea85f06fb7216dac52893de2c12abaa94ff32b281e05fc98b4f8ff8144307bb965c70a36a342b48c85a5bbdc043df61f485b0794432eca85b7ae3f3e205e95e491d4490abd92835a23635c81d1eab9348cbcef4173d7d221f9a30b69e711daaecb519b37b61e453735f7beb819c8b01ba47258a596a396b2864b954b5e1c0053895835ee95ffaee5c02fac9e2cb605486d7e3fd60904e88e680740e6c53955454d2eb07cd6f499d4bbf7297fa86ee24c8c649104f846ecb45618b4ed0b583034c260b4e534c7506938817c325c45c94074e2d6ca1a24d5ff32bdf7eb52513aa3c90734f514663b78d1b13725b70b77415fa79e5e54324e4d51580aaaa3bf33aec0408515dc6c106b30801caca316e01f387aa0727a4311c4dd136f011a575c4a33c7fb4e5f17b09d5dd740be773d727c85351f4eb3c35a80ae0fbc4c37c10c1716ce63ec056479778e96e7ceccda95f2a989691e5f2f4d3957b7f06e83adef7357a1cafebb51b5f793ae922282c80133661b008a3c1b972cc78a3ddee9e1ded180554a47da3b10b6cf3524f8c235d993c456e94e7c0cfcbf202fe70d3a9aee2506e96d4f6b60a7870c508f75b7e23bb08abb19f7b780997244b5b67129a996856e83e937774e8f3656ae2def65f1bcffba3ef3393783b093951393afedd877dea747ba78eec5298b342a695105571608526b2b72316bef06bbb4a585b1c463f90a4d1729c4d14ac16cf933edc44b467b7c317fdc2fbf0e15d4af4176ec6492b5cdc986704473c18299bd82bf77e5a13f9c850a0e9f8b2733dd7d379e42126ef3ae17acfa62b9eec91511a491c113a201a1d22b6b21ae88b2bf235bb455c16c9116af9e15c3651f4111ff255ea2610c2480e68ca72a2fcbb2c279cb8d10478785a84e72a7130305ade3d6df04675fc1bacb48e2ec0df5cad39a84020fa3c4ebe1ca9eb404eff5a5dfb7e8a6f289a0349a5831698c64cf89d409b8b74df0abe6d677a03ccdd4bb31589ebbf8dd0e88df4f821170f008dc5ec29939bde7b7c920cab43fddb518b6148342475e3c151e58263a7b92cad173cb631cbc3d065b5b9039881fc8e522e4f4c3df98731faf4bdc959ecbaa9a668db8028940a795494c45f62e8f907caa0adfec6d1c77b3b74a758f8aeec3c628ba3f96c03aa03d05869218d9940b5c8116ec75fdd7af36d4a9c5163eeb4c944b598c0b05b92adb794041e9f7cefe63bb0c8adf6b6d7b1644479d118048dde9b6d4545dad7e5a687c0117063f87ab57026b87cae148b428fb67de8f7b08383d87235b3957879c588fcb377979c2a389da37bf7405c37fe6132cd22fe89b958e5257bee6635590754e4316b28a6990beaaf161ee477f0347f4df1a0fdeee304b2c52ba04e7a43e553dd737762aa3728b65cd081e313bf28eb8354c0cdfbccf34d2ede52542b2b752df48970b31fc8080f20b3a95f811fd8d45dc753b8b2d2642c20329f877fb65c3b302412e3ece42097cf0e87e5d68298bdc8fe6b25f565c96b4d48684ae5c093843f1bd0e2a176a354bcf5f9cf8bcc80090311b0c7bd8b733a8c4428f6c9d7f6d880e836977f3e9922e6bf65a5b7d6a34290fd45cb755f94b296d14c2e8fbda9fdbc29dc3cfe4f47be9a8855e352ec1a996b214bc92c8e8ac7b19aa37130e94913531fdf4a1491e5aa99ad30ea5250e06915c2dc81f1d8801e6ed2d6bc1b07f19f3732f9f41940a5650352fffa3eb579d62787b09e87955cec76adf94f887407e7e86a1eafc76b07a4efdf3e79e8c472b7d5fd3c003d2dfc320ce524e926c3e67866f8ad5478768396837ec6e2449aa77316147257af9fc5f7563623065f3a4c244dab32d589987d69c69fbb2f04485f8648a0010ee9fb844d3fe12dff6c559bb3737cb388715e8d7e3f75968c625236bec3d937bf5ae89a4bcd2db90c9d42f01fc802948ddb2614189f7736a0e031d97e2bdb63c3dc1f7b4c67e1508a8f640224b8fe04d2f6a523714fe006d001d18e8f5027d08f12ed7a0d71cc8408ebd1d65823d104abe162b47bd12e3334ec13934019204bed3fb5ef89e83ee5ff20d44246b001f01a05382cbf35a6eb2dca4c41f1358f3f47de6c9dab9e8c0f37f26b3e1161b8a1290fd83411d7cfb9d119c50e415f205d95061c752a938fca2d30c906b26f4524f02644e222baf3e497aa3955757ae3d0a11261a335cc25331fd1d510dccc98f139e756291c9aa1e604e659eddd47cb0daeaeefeebfbbaff86cccaacb0118cac3dda637a6bfb72def3b244b99422e3225b8f20a6789e592a9855d15331e8a93f52f98e8b2d0f52f7aad39273fa34d53afe2000c624002b60f983b1a322e18d2723053bccdb5aa00f3531f79f3d442cf43c114e2cb534d0a9da50c70d5830509395670dc4f91d440693093c2d3c5ec29828be58fc45004fee7c5da004e5d39df671af4c2734a0a5355f9d2f7b071134aaa78bba88ee55f0738ad9a6ac369ee9ce1a46dbeab4099df6c2d1f008ad107fdc4c59ed7cde3771e22c8e27ff625beb07b3cd57448a3bc4f87fc883ad64f33745c28955915dc9441357ecac8b33a9d2cbf5c695c6fa7c05392b8a9f69f8b14c1c4aff87fc62c6bf1b66d89fe15471947399303416116315e96c046f86e74565ef45691313f9e9cb36fb2d69098c00bda5b86a0c310eee727cb1791f8020986a6ecc8406658e6a68f87893820fad200e5edc720d5080eee28bc1aa424de426a59b219bead34ad169472e46c06ef69c4080c559a3fa32aa5227d04239c9ff8281cd67515a75eed6f52edbcd3cba3cee20ab9e5ec1d8f809f97ee3559f52dc132f78c0a5e8a37c9bd5e093c4cb00f836d56fe6dad5ea702df4f12710db7b12167d558a85ea0b52f25d249064625174500799c72e74619fcf2d46f7a4cdf5f90010741e2a7c672ea26cacf3ee0527e63d5a64b13a5ecda6090f588d2cb5e1416a7c19aab00ed0aef76e89613d091abceb3328ceca8bd7146ce475e792997bc985b9c61b6e09dca0d70d0c1e470f1398fa417073347f7083f259f03ee39e591183d1220141a6dad5734adf658d0b55b8ca8757eaad52fd890ad9944dcc913246aa20668dbc18cacd57baacbf0c0d30ccc1a0d4e5abccbd983dd14592ab5e23337a239dbd3dd3b5d6bec7a43ebfd76159706c47b21cb89d13f36b4a958f9875d5016d6c36a5b51dffe96d1598d337ddc2a7c26588c1af6a2f4e25fa465752a9399e6e73c725ab61b40dfe99f1e4ff909e3d9e1ae8d68f8f7464bc0a0a75d67671bc6ddea6ce4e852a9a4fee82cd2b3f904134587fd9345373bffc8d44e06d12703940c4468bf79fb92fcd206e904a3fd9638cb74ff93e9ca18302759818b6ac79b412c69a7298ef0742e2a96aecb7a70edeb8b77b20ac4b6ff1ed73d430a2d998975d98da0f162f0aeec4edb08941998d7edc46ccc5c0a7f2a8792ae9c9185dad22314f10e8cc16a72f58daec645185896b0580f030ac15e160f5727b0afd30d7ff9c1651b808d9fa760b778ef6440b406ae4d8864dc46ce0b39e9b8b282eb24d7c9276bddbf3d0de8e0a13fab991123aa464d8f0167c859c120505df881977b902273d5b649592fe826a5c26fa33db07619271b8b36ccc71291565c86c713a26ccb35064cbdff8cea671fa704552bef98174ca2c508a78f06a20ac0dd7e8ff7173de0b41a65611716c1f1b4309775bd911252ebf35907a09b1c41d9ef41b114510a4e47f19345d8c9d2002322986ad55926756d9b996b75195710d46e991006a3cd3bbac81b84f04778b4f3e33d8d30752c11414462a680dc19535cec89ba563c6dc519c3118be651f17c6172aa143a205829a0162260ddd8612a527813aeeaac6df3895009dd44902c485b402069d10037e3f677bc95584d83768eb1cd63a9949b2bdfbc6e8e88df220d1140dead1c05950a8409cf14c7604460b77a5640f88c8bb9c6a7afc95fdc5c4590c09a302b5a2d8b89aa6e01aca304d324c51d2105d74e4f7f296e4c3849cd6c70b21cfa67a4a5f80c6063532fb0ebfdd42335d9e098427f21a611e71d2724848f251346dce30b0828442457646266d270182eaa69b30e437891a601e99b9f92de11b30142aef215e9de162be062ef89604cbece057bc07669a52413bdff281e3ebdd34fe6a8529cc38adf44a0fd3c1df027d5f22ddd6c59ee4ce12ad7ab3db76a503a075c6c8bc190c6e2e8407f73cd83790ab6c7bcec0f9c452a69ac64bc6df96c8532fe3b39c81f9771b58392e89cdc1ed22e508f1520bcb9c2855879315564d6b190423b189d565a7d18265859d16ce2ac64d68447faf45443475cf2a40927808112dc0ad94de2ad19d707333279bcfea2d3c5c4496b82152c0eac693f25eb922661adf79d8b774b8588a182ace0ddf9b0ed80893429fedbcc4a0e6653cbc43a74568b25d32ca3fcec17cbc5131cf2ca7397cb24984ab8fb0702ca537a207f507f80cf5f37ab2a089e44d2df7882bd7b4da8053727cc9f4d584fa5747dcdf82f09a1ba7936a6fcbae722e179772e4cb86f6d35a3e90ebb8772df3361b47e904d4731a768295eb1ee7d9ab4ba7680a6feb528e209655530db4f7375f55b66a15c9ada0b82ab3b9bafc8e6a2cefb9a9560fd8cbed43648de1a6e61c4c229ba0f1990fa4d87f74667642f16f2f939e37709b443231d537584ec971214610931e5051b2464692aae4d19188e7e2f098625faae6859f77aca7bc695857f39828bfdb2439f48ee5c44d2d00586b165d1f4e4acf00db5ec831cffbbbeca27a4bd07c35bb7e53ba2c0fe14fcfa89c723c65e6f93efb77faeb9a3035a7e88627386ebfaf07f26d7be4f77b27c07f66601033c05a117ddb24bfa7ca1168b793846e4ffa1dfe1c2eef12a6d34d2b3828612b7c89252b66c82732c260c15b7e8333c2612d926d4d3442e73421255cdb4a3799283e4e63c46b78e56061b40fb3a7fe44974e18ec7a10bf0487d41a1f168499a16b0ebb8c8bed9b9ece361fd9a625382ac7a29137a2b389f9d465692194de6a53ed412ee2d1d2ceae26ad9fa046ab600defe68d163a5a4f9aeed33734e67f37c333da2ea542175c7afab17d963f1892f3eddcd0fe3f402af57634d43a68d6a1e6377343e97799a04b49a18b4a7a8e923c677382cad349f98dbbf75339eec8c1f61d83afaec4a0b41698f96cc2fd4d9d5003188863233f23679ba40bcec82f9e56af591a427adfabc52c6f2d321cf4555bff6f7b793f3035fd533f3efeea4139e472b26382c2e6a6ae9e0ad9cea874e3086b28aa97e2b9e4149ad03eae678b9278117a8e5194f0425a46070315afee8e40ad6875bcac74e3636cc2a7e5b7c4a73a01e51868f03c71acc2fa3944bc8cc7759d70770f0643af4c5dc03890bfdfd082de6b7f2cd337eaf041998aace90b28a63af90ca93d5be22e94a3d8411a189b4acdbb4af493c0e654d4e42105993e28bcb5bc2d61ba1e56bf928594006de178fc5ab56a35a6f8e92cbe27ee0982313d9b75b13480c82a67a1fadfde52b808ee1f1cae6c31c9033f4d84deda9222597ef5a349d6429e7f98e80b3d5a0ec272599eaeffdf240580a5eabeb57175a94dc03a7f1f82ca973bb914238019642c64b480a95a87681f3811b697cac0ca3fc3a9a549e2bf3a97c5cd2a8dd1508f126e1ed6f7b9bc2a983c6c5a4a5843a1fff11fbfccca232e78c66d8e66aafcad061b9fc95257883a59beb9a0a6e3e6afad4379c8a1141bb2de4cdf2c9489067d467745d6758211ed7c4e69f80c3a4048ec3b7d9aa847a8160f4136f05055297d27ca46499a21f150afb59171af3279572aae0973d4581a5f7e439a2c0d4a5ef97b844f736cf1506b2312e170634a64bec7ba3a8f8f38183c30f832d010a25e93a867f57d6754531cbcafd46101dc4befdbb410e9634f0de65820729afa2b19e2f25c553e86923bd9d1f4f11622ad570d2054c75ed31e37a6382161e3cba66e8222a32d2ec48fc27d9fc9ed1f13b54d92085f07f4a1682b1e80369fb681419b436fc45f21df0a899f9223bc97415ecf4997e99bc2a9780dc5b31246d429667bdd357e93e50035307adc6ece4b7df0f9e7ac4db614f66aba0a0ebab422eca5b07e7cac4aa5b6b495bfa10739dfaa72330d943b529b8be846e7f4345cccf5f9ab90b38e7505ed0e412419dcd7c46db343758761be6addbf0c9fcff885a9ca62343d45bbc338f247c04c4fe5612c5d0422e7df0d9a87c7ff22a8c1ba6493415a4e41f3c53742418693f5637af5fc53f178e08d7c098de6f7789f2457442f8c854042cbdf4bb05a41c38ed41760879c3aeae526423ce61f434e65c60569bddfb6bedda0f0ad2a08343b24f88d6ce705c313ddf64a6d0445b9462a701ed0238911ddd7b3c53983bb4fa1ad56ddf2687ee7a480fba5e905e75afb911f598de09902b7f3a9e6de78bfa13452dc5afea36c3332618da3ff4a7185d2ca6b9cd0670a3063c3e66aa05335d6ab974587079530579b22b50da57e69c4d32680034cbe8977efa6b1635b2f7a8460d6e631ecbb64515ac0c376a92c75e3782f8319c6889de0237af078afe3ee8d3f094162643c1f7482f20c3356179401343bce7c05ab00f7392a9e43c7051f3a3e7e317cd4b76f322916bb73b4f67276978bd6fd93366647f3aaa2d0f256fdf43dd91fe6c0498f6681dd4ef3174537cacfb6a4dfce3693a99cdd8b556f39286e007c1d77d8c631f107964d8d3a46faca89416b7519ad894739c9125b4c00909fbca14a370b5767245ab51f380ee75a8fd02901816aa7c99136b0b771989b04a2d8c68d65925f758060ff8562b780066ac0a848f6c1d12127113817b20d0c070feab6ddb6b344a1d49af0e2a96228a5eb3d5566e01e03aeda6ab4355b1769067c714cb8b410f8c71b5cfdd2ee481920dbb3c09bb7cab6fbcb3114cfdf82e8f5da71175baf8e77be8eca35b32760a5975d2c858b2c41ff637cafe1cbeaf081947885f58ab1c40c27a6377b09d198b849b3b80b24010b1c7b6310409b7afcf6a5a33aa1f9660954d03c8c7c9e8864ed50848d0c08ac95560b7b6133a5ddb36229275e7ce292afb00c4fc135221307eb14945265564401e9f5eab752af75309392e54422c04ec6a17e09f6199695fa0f46f79092edb2c203ef0774e992100dc57315188723c50d56de023bbb876a54bec902fc8a2ac0160ea57bb15674962f9b1e3bf4a95d8323e5d30782881129869d544d4098eca0ea2afa1fba03035bf81594f292673576c6ded9f41e4949ae0a27e2822d8e8dc734d3f81e6a3f17c94f91fc2c0e1ae296cfeefe3a2cf5f809aceed5f5ef167bce2ca94cd21c871085fc0a452e8588c31a3d80213956682c9017f070ca57515f931099dfeabbec19ab1292855c5601a4abe5a902bd0b6a88f710541d945415156bf11d2b3ccec97469b3217e5e41b27beb0c2a28c431bb580b28756733086da49a2d62e2e9596eef25d0d0963f06df8d08e9cc7791ebe9c5d9900d80b7176857daea47ad5f0a8dfdc74fd14f17181863438424f9a6823527cf54521d6bc11085046e3aeb245855c11eb3dfcf7a8910292d2b5eb7d2a3ea047cf6dfa8e0e68d955fd0b25f4a4700af701eca09e6e6ac8061461111026d2e6bbf62caff052e376d40a044e6c8b883ec42730a8582a5075a35d8383291f243feae108e53c256a83458c41ef11325fce043e1ff356d641c3eba55825feb33aae79db76d9b89b6d1cd99766457c6ea12c17300ecf1014c7f359334380adc531b0228142fa2d243471f11e3cf76d236813b0d9515bc150bc09d726826eb57062963492d5fb6870f320a4a03677444117d0573da5a7e9f9cecd48d63e017b9561e80e0e3baaba728b243eacee4c8856ec1ee80ab07bc9c19b9dfff6fa07c7f01636a7a2f7b2796af410bb3337c364b09e661276678deaf3a0514698a99644c46e8f096b118f7d00b24f50aebba2250bb30ed95c432996d9761ad9edfc86030f6824d1fde085a473dd82e30a50f4bdd2649d15be81f45e2e001268eab238f8558166b1cb857a4ed598aa8e725c4143f34644f17ff27e92a4846118aaeac37cfcc562efcd17d7e155fdc920db0e6c7139fe846c8605cfcc79e74903adcc67c92cfef1e384f07146a1d6b99b693c042543b7a1db1915f0661b6c0fb3e10f3f8150c3ca7d46a5ba6a4bbd8fb7a41cf1e0ff399f659d26d0fedabac6ab7f252b28197b77bcdc8cd5be4c62805e7748634ac1bcb886959b67f9b21745deb11576a5187bb03874ea8db88e1d6c2e03a745acdbd8478dfe8c3afe1afd01361157e2c5e9d6a099da173050881155fa4232cf74d6424d1df3cac077ec8c8c0eef2abfb8e89a2a1d0d496e84ea75d6497dbd6ab52c28f9b0a2ba2613578953b96f481f927b75551617c36bd45cdb54d68627e5a49d54cc0f988c2647e5c7e2f974e07ecbea10b16a40a0ebc6497a070ed5a2b51c0d812ddb4f856ec8905065885844fdc0c99f9a118c7b6963bbde2a9560fd3e1bf46d98081f522612e79a2f9376b9cd30ef5d039b869d93b84783a5c157121c4361abde5c69a4aae43d9b51398843aabffd078ca8648437560d2d271da1cfe45a89304cf5278d83c2f791b410ce6fe2767c8b876d71e132d3bf1a54e82d795ccae724e4c0bf52ef72d8ce14a10a6b17417f71bd35cd656447c458dd941c14a521ef7c540328bb187f69da3be74cecd570dfc592de7bf8e8d05dcc7f47ab23e792494cb1d3600435ba6eb73bd48abe0536047d9658c32f2b0eeac7c35dfa21d873a9ef829f390553b36a2e10cd0bf3952d3b9a4c2ada276ca72d3affe49e5eadbd297034a367309a443355f729a306e4d1a09879ede51076c4b0ca8c1e052d548f3ec27976ec73150796c406b5ba831b0099d81dce490e1a932b756203a38c3bab35c2d77dcc2eebdb0c2eff322deb3280d713c7104541f4c3027632bcfab496f84610127515b71063824324d6f0ed3979f819dc88e118b20bd49909296d2fc3fe342ee5ed342a1d862623ebc7914164f7a8570d1f3241c0a31242ee5cdc68686d7d801dc99e81dcf052b9a5a37c999b695fea2254e1cbd6c8b3b05b1c1ee5f9961915cec1c325a9907fcaedfb188f6a25a442f7b70f6c533deb6c95633e7e80f0ce5124df57795f18479776d4b382c1e2e9968b6f82dfb2c5f7d2b6e09159f2950fec1705e916f4817b4c18243abf6d3cf6a8c9b521dfc3aaff201376987cecc26acc0065c5ba52844ab15c5bc36a1a33da9fb457c7305f39fd92f2bbaf2b545b8dbfee073213312172c590d7eb0d5aac7af880365db48944bb5ff97a957c4164d2167946f1f0ed1c8541636effbb86eea8ce49c84b86e69ee1a88d31bac69789639a9e5319926a7b3f2b64e9f3253e27cb00e097389148a211b0619463dbdb97e96e38b13a010909ebef4d833322dee514f07dbf142904ad12e3df089f2f2b00cdd074b7d6c29fd7d3b6dc6e3773ad9d4fdf00747b895aa00e9196290462b25c06c7c811264b40b6ccdd1c4ef2d64b283332a77a6051fa5fde5ae94447c6a4e27e2fca3f2ff622bdc3d185bc0aa99b414e0f39ab0e56195466b03ede9be081f300c76d152d7ce8c966b5eac4e5a196087f26ef7576671dec02ed972be7fa6890b80e373a451ca6f8d7874667817c6682fb9d6159ccdf221805e50297c23d56df433102a98ef7de2d72bdad1a1f8da916ea67476d7718f1ce3ef69b414ef767aa534932326856a2909d7c3b45be9202118a82d4db4f1e16869fede77bd3f9b5dfdbab38fa1ed2830bb4f0a4c5664df223ece413602d3ff4bee053254c373cd811d4179cf6e49c07cef564396b43a380e03a1ab0cec54a857742f3d4ee3c26f5f587ede07417626acb8d197a7b8c5e6a4193cd3b8adba078b557a82150983213e677cff593d578613aa604212e42ce5f206dc8310ebc661a02e3cfff94d0d07462c94e12c7e6628d178df16130b7d35fbf932592680e7e23ebc2e3d492f2b0f88b47854756f1d1dd9fe8af6d22eb266242aeba38baf1162b82ee18385413e3d3a7f3be5cdd00ad13d7fb44c319b5db523058fac6b86bf7f3da8110e598a2747ea12595f4cb5cd0e205fb50a71dbe71d8f6c9d0412d27d2388fdaed49518d7556853c1d61e4ae81f234701a2eab4bf97c64113d52768246ec3bc4633226308f5007df0c00bf79d220b5aff1a034da169a2edaa86d05ee631a02b58af1f2199708fdcbf57149df6afa995cdeab9c87efd66cc64009df9acaba071a9214429ec7a7e13afb8140b7764d37fdc8acbb4d481e1a57cf611f79c3cbf4b39e18da37886150cca21db9f5ae1bac9f92b1e00c62b29964dc4f7186e9ff770368d630bbefba8d0aa34e9b61b9f4568ecc2e49665c6b2c271316976c3e21bfc56656ef586a6cff79d1c2229b58ef5914023dab66293c7ccf3016e86fc40d0381a68876702d70ae3992105c72260d1a52c636b0005cd115affddeccadf7dafb208ceb573263bbca336b90af8dd2d1c621f8e574575b7ce6f0121441abc03e65a32385d812383324de9c5651601f3ccc0bee0a08d9c4a4c5e16e465933bad581d4c6b2750c34aab38ae291cf70171c5f4b7cecf02807a9e9c819f3ba85e43f961b2f3b5cb289151148bc5687ef34f7f5e206cca4da7f6e6e505d831cd51f566b5744bfef1245b5fc51e4a82d9d7548cac0118d12fca5e0d57d5058cf1508ecceca3a1e466a849dd511d2664a0195ef5ef3009c1a700b46813abaa1321c0cab1119d2a1aaa424ea24af6c95b8f0e60ff3edfa2311193fa13a6c8cfe3d0bda948852c7cf1bb18be912304f6c28648c7410dd1ef03fd3d94aae9d79abf8127ba40c11cc8dcca37ab6ed29406d9c9efccc000b81e8613f4091eb366752017fb8d67ba494dda1a8110ca801bfc3eda31cba54549ff7275de371e745be630b15a49b354fcfd6b8c56f9a58bcc82346ff5eb15dac3f49b7f5096ff8d6dc4059c35d54a19216addd6d98c5b85f3661a7d9a530b3b1ea3f28d66c1c5cdd2965479f7009a68b308014e38883a6e256036360e19ab152743208da2f3cb3ab8d29c23361f7325f2d6d1369a701a4ada62aa27ba45af68144ffd7c5012d7ffc50b4ca1f47e8b7b636d7c547f6d457abc638e0d42995e5fa51c78af16cf9ab8aa425f7048c92a94c2227c89db4bb0ce914cd6c2d83cd261601af09c3a28f013a5317f2c5295e01891951f00257622ec788d2ea04ed5423ae5857b1f84b88b2cf6014f7140203bd2de847c2fa0131d1b9b48dd18f804a8c133fded2c3276ad33a97c35a52296c5d13c425fa36f0e12b990fd4eefdbd39d311b19831b38387da6c441efeba3e2d68f59f3a05aa6e841582e7d7df10a91cb1032566886dd66925c2aa32dfe62ba0e54e5b608769589b8e46a03e990272a39ff78b70023c073f73fae59f8a97e572e24661edd7603c39386e1f89e3bbe4285ee4a268bf642ce368c1462fa0d60706f1ac885e7ed39657d9c68730d95a18a86fed85d25655caf00ec766ad5764677ea6054759bcafc829dc84a63b6909195d9cb7b7c24e9dddb84f68776bf875f2d41aa788f703b1b6d7cdf3b37bd92386776dcd0e80a3b839237ce78c9f62c47a816be5bf667a523adfe1b649113faf5e6bb4133bdb48aa063fc934e83086ea4296394ffdc37b91ce566c99b054072076f9024ed5b09f6667bace46815be91369432bfa22c71580226f68efe7be72704bfe2fb32af7020e938f080354fc25fb88c268df843f8aa77bdcf48508fb11873c73d69136ed3ef7eaf455b6314667382f9c1f48889cd23a1244d323e5d94eed4fd3d6047c7c138ad7047c1d1915f3dff711ff4914bd1719d164e9990a7ce3d50e42d2b7b1a3b5e975a1a3fd56149c707239bf53e50837a02376c26381a860732968b2bb71cc4e6f60cfd74cf1714c1225fd98c91567464fbb220bd8f2f0a99edff6206b5f427af41b2288ea1ee8822449cac5b16dfd0939779817e913f676cd67280c5f759ec9edf3db09e8cd7bcf1c1b2b0a714bc47b46d7615b7577d9d258ce6029736ddd40554f1214617a6d58b5d7ee2a9737e34b49a520f2272aac9d1307486dda7404d864c87e45e4d77f576bc0c970bb757a5ddebdcc19e9b9730a312b5395439eabfe2091a49a6b0fe69a4dc188276924f6452023cdb4de8a31217b1db89e0dc48111b3ee98f9e493e1021b920d221cbe47cf29c31cc8fc9b323ed90e344d8ccce1e893d50caa4acf5506b16c49354d0d6b7a689cafff251dd090269de2a95c82dd4986f02cd94b2a5e2ecab255b98ee56bf7be297827dc78b39b5886a07bc972b673619c8c15853041980c1d9b0cb933baaf7740c0b380b3a2b7f5291ad53f849995aba297d448d3f175684db10f2737fa3b07ca03382542d48edb52b388d336965404bdf5edf70cae8dc6de41a602f6a6e99e031ff1ebbacba25503ebacd3c036495f2be21cea6630b7064cc33ca13ecd3e8f2d6d3cf800cbc4833dbb1c6f79d2810ee7b881e62358624e48513cf0c7dd6f7ad4671befcdf59e1002baf76843b0fb9c3ce2212c112210a7624199f14215e6561e72b407bb5f2b38ff6d21dde9522e79d6d4640a404ad5ec0e5447486f41c341c5bed2ab2b5f391eaa5ebf14a1d5806f821d95092af5dc0c6e8bbfd484ba5821aaaa61a8bba9ee74bce4bf6a1d13d0f43b3b66a3014de2936fc27f618440ac172979f5ed12f1407350a54e40f26ded4045a5698b3116b98c2618885f410cfac4991a44e140f17b1b15ef5f012b751c39598097874cdcc7ae6b24deb236cc2f5aa588a73b0124c0d154e62b39504c962a405fcdd8ef7e84dc26b40c8f78756f7b5c4f9e7b8c968042c889acb64ab2075551ea4a335a94fff1d97c9d6355c990f2360d49e5d5b104996f1f20c1d6be1145ab703347b94d5ae346d0a4d877309d31670fef12591fe905ec858c5c79f2c7fe2c3510d96f474a2b4bda35db9b1454a52bb37b15d9569c95133c379e290132f879c04c6ad6f598894a5ce9b92832a9d707e0fa24b3cbe256b9ad2a1120d4cfe392a0b871382da211c32a5e51427341620fc21ee1a62253d1e379b72a7e9b0f4bcdc50824109ada88e4eab54823c6f8b0ace6be213653dacbebf3efcebf6cd6f8331c54ccc2dc461545af135ed2085b948d015457fe1937633d162ae528d7fd339a1799b45f62ff3b0d1c20c384942fa49fea7d7badab7d70b57a83fca00bd1c9eba7369e2302b22f35ac8b893f2be87146d97d91742a943fd5b15a00afb191e8837270cac2dd226fad8a831f8a0a328b357cb8b619fab895467fd0fc8647f3c9943cee92bb00a3b38c333fdc43ae6c4c98503ac30bb1f8076a174ef35bf79f2dea293d9233c1a12f9dba789cee5e28837186307a190fb8a1e976febe6720b3a390d24d5c21f3171de325ea6e00ffade05cd36d4aae142fdb895250095b6e3da72b39f2c6c494199cf6c3d7500eab753c1cd0e69eb60feadfb2ea774e273ec488045b64c2afb94ae14ac783fae1a8afa69ae036bf8d3547256c43eaf1543bc0281c6abfc1e11f66b4bcb8b9bbccd1be4a4f311b40972bfb50c4dee36257951d82c9c084b3b708ba3e02854468c91cb8212a08f70366b28d6fdf1ce35091e8bd04af45168ab2a5a729d60177543f2de77474824fcb9281d87a25d22cf0fafaf3bf10463e5456a7220df8c8a66178d34c304fdc5055a4448d304b79454e9cb8085dd5c3a8e5a342372e5c30ab1a1c3c1705b9894510ab93ae382fa47ab64d70b9e9bbd3640fef4f828d24f862e04124305c46bc225a72b4149cc5f35a26702db77290ef656813fcb4453d002c26ecc7b218f56bfd5069ebeb8a8bec37d28f2f266e690f05a649e3143ab6f870befe686a2ac69c8f33a52531733d72a9b922ed1ef637f47f841f53fb1434891637023d5cf00666b7519fcf3a67c9920c4cd5c22dd3344d743f54df579612dd0a4646483e6b7433f78c90be2fd4b78dfd1c176dd356f448679a9b6b293212dbbf45352dfc3fa2d3f5688c2c8a8884b2e0a8d9ad05062bb24179894a07ffaa90a9c1ea3e328a4f2afbabbde99b0aa2c55d29b30cab136defcd0828189af45e82c2125f36b57e93c8788f660f063f2119df79d77323ab721c3d77fa84217aa5a3060cbac10bde0b407d8086b3435f376b140c9988bb0aabfaa33c6e5ced444ab2f7b69ec5ed3677c1417047561d401cea70ec63023a6e28a679f3fcafe386599219208290ccf8647a9eb4940434e8fa71a9d664ef58c92ed31ac18036fd6cf31077335f704a56e53091787d757b76ee363c5a4eca4152efd7464e7d9dc9eda0251ca95913bdf762cfbdbc44baba584592e70eee8016dc3aeda24f5fc0e8e703639b0122dcaf7d10eee9e740730dd284972dd9830f6b0135e0369ef4779090fcc888922cdb60d393ea7ee7ecdd63d1e66ad53e0d21ca1e52e6eddf9efa0b329e93fda20d6e4251d9c90ae0cc7aff174c106bcbf6382f1d2a6418c00294363a8df316988c9e7caf38f3bf6d087cfbafdc8ebe84e5468b0cea3eebb735d10399a0d57531403b69c855cff474dca7c0b2d0d2606f8a29428e6ebfff66ac1cf76ee000bed5c54b162b6778a38246dc905f1bac2a23b291ac0f5125cf7b6b2bac0b3cdb1cefe5f2c77dccf4eabc8bebfd81f2a5b56f02eb97d471c73b2c3d8b513c9116bb57370972b01ee88a637d1b6e286c38e110186cc3d1c806073eed1725eade604cd613bb42ff23426be09c2ba1aaac025273f633655787675d9fcd1bff08bdf384aaef3c15c551361668816823005f51ee88fb66a58bd4db478f0566c9d573889c296639ff1dc6b1392a21fdda66713260adc99120b5aeaa36566daf00654cc7d26a8df4c559e3982712e0647c5950bc989ad9346655bb647e8ef83c3681f4c1e7036340633ef7505517869b15d619fc496da63f7d131008d7fcf0cc91d90f6aa0d56346871a987dde1d7f6a85f482336ab9a56e5c763ecbdef883824980503e46e8a0da13a8a164006706fd00cd69acb6ae7df3716f2c07916564b12db9b0992558e3849ebefb1e9d911fb78cae4d6d2c4d2b8b1cb5835ed73983211f18a8291052b1acf4d59497bb2a7f2586a527878fa90a2a31edc190f69820a193ef7511db1f465d92583a5d05cec4be1d525d8ae641f3b17aa7335e1b7bb781140fdb29e044cfe62bc6387747d6a818d60ec8edfd61daba33286481d6e585eac0d1dc9d7baa803a25a6edbff59dff2506670ad8e397ad528c02cc099bb4b3c1c77c6bde8edc513f1d4ab5c3a54fb40c5bddadc86a3857bd2b83c85241f1594befed0588fe5576855f60dec590461d255402c313abf31eaaa7ea256987bcec83139ab45e34dde2ae6e568d5815ff4bbec4dafdff7f79d8070e78c6f08ac6c9a99fdbf5f59cf0719b828bb9e737973a555396889c062e929d604330835157ed5f169175f3294379e70553aeb21adff806fd95061124eeb5d111e80b0f42e70f528d0baa1ccf48e29315c7b9f289f93a2891c2813fffe3cd958bffddf7a947ae482d4db08808d317bf066bf358738ceb1633333c0d836b5f41aa6b8594385bbe29b497016150bd5a2edd9d44a06a81a38cda23a08cde068e423e714832815e1279f54adc94a9a94f07d5dc1cac235629f3d23bc88f046378ef8ca27af17ec0ac8953137ac418cdd781ded57b8ff8fc597e3c245ae02c6c816fcd9905a80a8b86b74a686d7226cc868a194a3be3694d1d19896ead765072f7a7ae835e75665b8aafe75ac03a5fa747465dc0c2059604488503cb788fb15dcb53cf79b2dab5eac5014ab4ae68d6b70228b6078f39c7558d68458f7f6c52f349f244ad53f97f2614f82b6415c5a0bb56d1e089371be50ae262bd8cf9e1782909051761b11032d9c1f1533ff1e054f2b647d06ddb92fe34f3b43137af8f308c7b29c3b464749ce2ee521e0e87709249801f2c8a2038c46c926f371b04cac9b1dbf6bb3e1cfa7300ae6c00eb0e857899d71ece272e1b0ea3399fbba469c456bf612de176704ecd2625a1fcf0fc932ef1628244944d08568108697d35f4832dfdf4af0ff1eab6a868306d2e3a41445cf32f7e53841aa73a5add98908b0c7e6a7bcbf59267ca86637049ef432e19ebaf4259cd70466d49fca96bb2dd77778c6dc6a91da9954df34388b5f9fc204c7b58fe3c2345c568d9022772319ee42d0d57abb4900ae28e03f0323cbcaf40ed6a8c4e5619325a561956627247e32bbf99920c072f5ed93a0ff553e897c6d4fcbc05010cc5ca6f395326f88b0f10be37bf46c67d54c178ab9e43e895bd3dcc82ed7f35067952f444a945505de35d18c684e4a26ba043483286ae4e4ece289cfcf73c1add55459c9c73a9ee0b36550b985c9f5f274f69459bc56e20b5d22b6e381181b83236d2f40b7beb53d61c5751aa4feec0a520ac9d320ca0990785009ff7f617d189325c469d6bca6dd176187584d20cb7913bf838d7c0c3917017f58cf2e8cac86b71f9463a8da897b3771f081bb6789294382f14e4143c04b3566bb61778eda4af38f49cc0ab0b2bcf33482952157648c085a46bfaf7d2286d475828205ad517f43c4c31341b1da09ead425bdaf48bc74d9ea1b5f6b9321c7622c63cd358599d9efc3252f9ef2d3e84cf11ab6188045c2127e16c9ac76c1818e352a9934559a7f18b8fa540d62c5c9fae8c2653b57024c7dc16abb435743d2970addd0f9334da0b987ceb0e6f3131d96de0a29e782296d9636493d3bda2e944c71fb22fd85059e28ec7908abcf6348b1a0bd3424ab0110479e48cc86632a2a777ff659908952388ca751179f2581061e662ae9376768713b2224d8952c58b6f283cee67a0f27f54563a2b16f3da1d58340b2777aa142cc7fda0b23712de7243dcd793ec59d779ba6403e0aedb237afe088430129dec3c5354516f5a706664a22266e29545ba6de3d46c48aa477ba453901a16a0d6a5d4c7961e8390d829d65d6d93e6554592a55e374a36ea5b52afec9573216e11abcfcd6f65864963575f004f9bbc21fe5f05789923a7ad3fba003efe05913597acc06b2474c44c130401237dd06e644ba0c707ffb1065f63e8a22c8a9cde4d4a1cf5c4a712261902a8fef20f18247f21db49cdda6441f8d8b7244970d85571bfb28904f1f7eb670f9f466a9e6b9eb09519e9a605dca6e60c240a56a1acfa0deae98ee68650395c27a96afc845809fe7266ee38ad729c9861d3ccfbdfe1bf5c62803d91703c6e295a6c28bada8118f75c558bd572b01f1f8b896ccc2d910db939fa3ab03f51523acfed812d571a766f027be6b77bd4188d0baf8ff871ac97f2a61fee03b4170f23151b6670b16e81874bf037e483527dfedbd63358a87684939179e3d68c8bfae76e44e93fcf5a5d9ebfd1f53e1d4f4271212deea85907e35428d8410b799e3163869e0d0e71d04e0799c010ad24261fdac70dbc2398c9713b3ccf4eb2bab402d35ac01b54e6566b9c1d62404f1fe71f1f016e63cc3dfeb4160f340360ff2628db59268ba7bb849788dce05f2aa2d307e2f06f631cb4385d5ca1a4afac22c0d28250b07a53428ad5e26267dace1ee2834441d274eb1edffd9950fcb0960c4384f94823b97847a7e3f4d1a827d16f3d2d10f87d9ab75eaf13f7c4e134b6a1e4b92c79a65df64eb32a478358582548c45beca6fac1ae00375b81c1390e75c7cb66781d47f09c2c96fccb8fb1b2af3888c88bfcf7f31bdd5a773d68b099bcd2963efc7974226ee4ce22c4a0f05e9c575200fccfc7141ad7d2e735e835b2cb53d3cf5f448217eb50eebc36ead52350b51ba680fae034aeeaa84f02597ab52616896e0f672a3db32c196f1690263304b39285a4b75b71ab78bd0b81bc7798d357b0ee3b6607b4f5c28be06d002b065fff99756ace7864028a4519bdbce70b54afb42e27ae194877b8108a2dfe334a9c75c80ac87917265e96474c3ac1c9b00fd4f67187b944f92e158bd474310fdd155ce919d4e13fdc30341ed62164e05c20814b8b0b4ed213bbf47187701392d93f877a0a53fa9adb91fafb1b0925346fb2f67bd74904edd8300a4b8728f517b469b62ef98ac6f7578fc760dd4c748f346b32c307a4ef26b7087238e4d6b1fa66d6176caa8955c8a4d58fa6aa3ad7015c87d354bce981f11229236838a2561daffd41ce4c4645a105ced678ab82f25d7ba3c3d1eec3b5269f51aea256d5aa65580818a40b493ebf0e97f056b5abbdb9a36029d52c3322824569e1bf48ee0c3b9ad9ff6f71c2a47f95783913b283fff20557de6ba2aad8249f70522c9e1e8a0c843788669a3cafe230b5805856c67826a7089e94f491d610fd1acc6c0a176fc979e41df436502e104adbfe1f2874cf3825c667c5eb3762af005014945338d268c0bbb6385e0794d1bcf75138d593624f8bb71966ee7fe24dc4178bce9083c0611a236a8330d83415084c24c7d957ab57367b1f544bd49f9a93b3aed6b8e3c7317463c6de49614f6e0e6a54c476e2b57ec90c2b5f5427642a34e5a78080aa92dba0ba52810452239166d7af79f82189b832e652cd480d1ff5bda69f30895a29612638165d8b2843d93b9a93084d7f0a3cbf8c9cd50f398ad703d5c560df18394f1ab72b93bcaf57c4be5110e3ea58070540fcee25c3e549118c8e9e1ec95f6e310e8763fbdb66bf7425bc8152078493533ea2a45d09f72bc61849628be4cc8c190c96b39e153dcf2e3ccce3f11c4ed92740db789240daf77fc0dffa5d96246e1aa32dbf3cd04afdde85b0912ec2b8ccca1c2459cc7872b8a8961b6e5dc8e47bcf03950fc7cf72e992ec6d85cfcfe9f0466171b6873e998810e47854eaf70088d52c2aafe627150bfb01f0a06ad70984ebc45e4f3635feb16def2a517594a1224c27c4b873fe3dc6efcfb003ece90af3ccad2810bb816f5dd655a05e03ae00ac5a537015fe1dfacde9385af213ae116c40c5a191f104d52a47f30929aef3bd6aa8c4dc124758bb0487e80260f4c67ac3619c96f4236668c6215ba69e240244e0e3ae01b5c7b8f67e0bd4e8ba758ab6a49060515391edf3f7a7e0d3532602196e3ce2dba5288766e7db4acb38d4077535ef9f2fc7f22e22b8812f2b570b973420e9574a6ec9199a47029746811e5edce6e51d7c0ced83288f3d7424983a1db519a2ce60333b78bd22ac2dd33eb962c32d9eb7fe229f5656dfc9140911b3388eb22477c18bc6cdc2e3ae6f4ad1db972a408958f4e5183c53c5fbf8337b87b30aceb1b0cf20e5ab57dbfbf9121710736dc3d8fe607addde15e70963e2725bac3b538ed5cdb7c51c506d30865604b8f3e58b03d0ed9e68b9dde111581796ea14aff9841738efcb857198095be3898689fc2b453dc55ca3a0b90692985358808007ce606cee740b5ac7b6e94c9b1f024bde151d381f55711e65bcf12824fb7f424feb748affb9d19ceb2f574e9220087c5380cf766feb269c862cf669c959dedc20e713f526311c34edd97b903e0947647014e1c867d8095d98d94cc178fca5befe57181950f51e0bbef0a5335c92c3751aa79e7b4046d948065a04d2fa35725274ae6079b04dbd0453dfc787669554c39be696cef87245864abc1245a8e4f75cda524beb4ae515bedf90f6dcc8a125c7bef11c7881f973e51207cf2107ce79abd89a3fe3edb3f420d8a3ede3282c35792c43c739034f7a1ab9df75b68a725312ffb225d1fe865dc6a1a3899e6c4bd9b50639f184b3b5e7c797a0a61038a571bb0f0aea8ca4d006291f614ee05d0938f4f8c53b2fe9e23c590610e6053129d6c4d42400d322e4d9a77e9de05e0d67ce4c3986073763da6cad05781ccc6715162f9b02dad0780e7758f77d8b525757e9cf3388fd97f30c6191e7151522fdc4dc1bad6373c1940ab0a95daabca62b1c2f2cda95872f009d770a7bb801080ba9655c6554c899ae280cd6b98b86ba7ba517a5d1b054b18bc7fe7087eaf407de660450b65859c59b2045264adb1eb1efca6b59f9c0d9abb8d4bb5aa036660edf4b9c123e75acf22defcb039b955f52c57bccd9022acb9cf89e67559ce8b4d2af4629fb411ccaefee4e3fdb9e70477b7a4a2e0f171aa61559b42f7138309dcf3b43376a2bb6c096cb54f8ceef26781e250c5771c1e829f0a051329bb2afc5cbbffd69e85f1620ca7f798139a545b8d49a9d658d9bcad8922ffb06c8645035f2091ff4948eae7d81d5e0190067ad71fdc94245dc72737945d04334eeaaaed97a74ba21e4ccbbf2e5080031b5a8a2326fe67e3ce9e2fd9795f365b8d09d8d01e35c14cead1cfa9c7ee3dcf28a361c2cb84bb662c89d9402cb00b082996c8ae0b519eeee8b35a41b6d60ffb4157efab5ee366522dddce64d6cb168f7435fb610e5b0720489aba616baebd788de3cf5c911ba38bcf0b3664fd3a8bc70d7cbd50db1d045ac1ecdf6b4b18eccb0c57e5884f98ae1c39840ada3d1b97ab97188c1b521cd241384d2ee23509b572135161da9d78f0aa0edef2528658ce09421a4cfce0ea4ff7a4c386a14bea8a20823f8831e484b770d91544f817c957d3491703780b8496eb6555f1e3dddf2d042e4251f6ef189f09a04477595cb923ec280261cd7efbfecb306cc54d6e46ebce2ce0e1e45b5f34f2b504ac510b0fc07dc10af4842cfb956ecdd9ebd1d0e2741afac93c6f87062ad77f86e03e12520e211dd5bae1703ceb1f54f208ad250af52a3fd153ffb4d206b8b452ef3bacbd29d66e697670da27973f2f57960bb2fc5ff6d0a3d3168a26fa046d9f7bc93f7f204d44ddb56c09575161d0cf70221956c38f0c65a587f61fe2bdb956b3628db251ec7de6b7930932001434066b651bf1ba3c2849ac1201c278a51d479f876b885c7a069b4ac42a3ff7448d0768c1d3dc80dae75635f5391216506ebe39b422632f034ee3cf43d3b977d9ef82ab859fae60f32fe9894c0ce84b72804d7499264f4044c968d454fe51e9bd2b2b9fb5e5cb14202d8a28737e1bc433b449b0b31c169b82380867e0679d13300c47910896e410d830467602a155615964091e92f0c662beb58f671d8e3dbac591bb0a2bd1e5762508f9f0f2ec73fbbe5c5f7f65f1c809e48c779e59b812c6aa4805b1cdd89d8f5b92036e17ec468eca8ee33ddd863fa41d3a5edf20d05a5dabb92570353585f603f608fe6783b5752b38995567594796d980dfe7e4df07024091671208c2a655f1a27f0381d3c9e47acd0d14d55543b8598309c5d609d82fb139345fe7a15e1e0b382662f95c85272916eae045b02bf164804654cadd678aaec440890112f68d12a87e0e6a975e2442fd696b9af8a124310bc422281ff6e5cbf5786f9ca2a23b4d1f15ae6489bed99abe815c13b4b3561ce13d3728ccc79444877048322062be4ae9b513c021507d2fdeb6ded2e0843df506a5c6b628cd2555badcfbc1cc51efffdbbdb2d90927b1470d1c86b7df058cdddab5bdefcfff2dd5c909bb7bb3e0461acfa1d734a78829624ccbaf35db26629ad0cf54934c32378c6c1070089f9c5c9de52fc07af4f7a168c371143ca9f5df76c93d1244c453f80a5bce6bc1318e03c69c535cbe1c7120bf1cd276504e36f6dbb7333e46851ab601bf41fe96b550eec57db538126468660ec2e3e320dc35100af384bfd0f27cbd5de414723a5110d8669f8175468064500f0b587c82cf8aee750bf179bae226c87b8a443f65a6ebf928f7d5092b6cbb3c9bea0ef7d6c1046c71c015be115f6ee26064f9fcf287b4c9e71bb3f47c120e014ee85cbee1de45b8581ae6d5cf8702f973a055b112f7205d5e9b4fe3b60284c526d1bf65a521a79fb6699fbac6fd96c815acc5ece9504275a87b185180cfe33ddf94c0c7862bda31aa3eff29576d4b4207ee8e1c904b7c7130ca044a564a6ee9fa7a2c63c68df8650844530526ede92fb552b6443274e85deef4875a1ab8f4cbc5ef7a8eec34e3a774a70b17e9a5306baa19212f2304bc31bdb50913d45a215045a7f82e8965a9c5daa3059f5a3080144b636b15355788c552f0b960c3ee108b0a91e782549a76f024cad8dab1573f0daff88641c4e8569437c1c002ac39aff6db10f93990613aff04dbd3b07df6113ef79e2f325d9b3bed30beda865a6281691a8d90dc63daac9c7bd020924d7459e0737625fb6379482fd55ebef81de40fce81b97d9c420acb8de22d5be31340af032dc1be356acd15f06899ed9f305d6ce87688c153c289f211df3fb376c127d591a2496c1bd020f949909890e20d8871d88430e73478e75f6991e395b2cf24739035b996f7e07d31d84eddae3c2bba3fdb635b8bf6ad3c1454b83a3ec3837786ebde44dfb4c0a850b2b7ef4d70c32b54ce018f30f0e38fb2c1777d13fcda99763bdb3aac8a26279fdd8bcb82c0069a6845d9ccb43d947d21ee242d314c3f6543466d333fd7be70d2dd0d9af89c7ad70c371c618e0814895efcaa1fd29ec2cbcafd6e20835b677d68aa6bcf9cf10f15ce8ef6cf27543cca459a144844cef41ff386290435b5272d9c5d17f108af24ad4e8a1ba77124827f8ebc751e4f1eb8bcec83c24a6bf7c3fdc4d71f25aa18573c0beeaafe570bbedb1941ee01ea4be484191c7f799c3c7c5bfa254158f43284a7c9226a1fde8207cc439477cc3caff184e065af67db876f2ec82f4a1e421525154025fb5bb53c972a61192a8ca9abd7dd34c592445c90f38d1ca95801774fd2e97a903685d60f33317ae2358403781623052ee166509ad0b6b1715513a69eb2b36497909b8133664f3ea7274be4c66916c0eb1751403ae64e67deae558f075b7f5337c3cdf6b527319331159b7b1eb3bf1b22d80d95e7c4149eaccc5ea0234e32de084781b626e0c5ecdcb5790d5aa75d1c73e87687e0f2230f7fca915db70e51ac1978a30c508a5902399348c0853b5a279d571d224bc8e9a50a702c0bf5998bdc92b10f4a5aaf38f3571a785e61c59e599ef370386a68cc7f3fe717350d1fb4b3b1dff335078736eaa24de796e6920fd1329669057de2b22dea74e0f7b0aae31a1f41eed0949e2a63182f9e29067afb9d88ca1d7bcc5fa3dfdca224b856878a01c2488d112dac560269e8ce23e6a0d6f82071d6d28e590e371b42d09d4a4c3b0613f2e1f9e06e2c4a6dc213c4410279e332424da8cb7052d782de1785ae61e12089d53c6c0abc5619172b41f767e4d2d728a92ab764b77b286db6409db49ba4b11420ee08d043da01a6e35c400b4b330010a5bd0e9ce87c676ce122c6455ee8cc672cb74dbd7dc47ecfb09d2dd6ff142fbdf03481c3dd9c2c70ff9e6b2f4b40d50c6ca9269c67a13018a8a9dbd35846daf462421686e98644f755c3765e729ffa7249fb46565b255ae9d8231edbf4aa10250ecc70ebcef38e931314426fd100ccba8b077849663ad8daeb42903930abf57809ca4a7429119f79ea3603e17506948fbbba22bbc30ca381c535d5d77ea2f409e0a0a548f31b9c48190de30aa7276935b4d7c66fd014109618959b953f70d77b12074122d0b4020a00bb1516524eeb8384b719eca80704ef8f2ab7143a1dce8395b16cb185af8b9cfdbde7cb9b8a659ec6d0b52399d75ab0a1efd29ca3bd1c93d4cbaef9bdf0a1dccfbc45933a5e20ce5be37449a0b308fd712fbf3b57fabfceb1aeec86e614b53071829d40005318c4f1edddde2c056f8fec7133798091e4c36ff82ca4c27158659161cb58416de4a18c0c2bb1f799cf742aaffe4bcd7c638f5c75b895680372eec8bac858eb9f35af1acc6a22b33e4a1141b1cc52ecfb75ddd548b2cb63bf2a4fd436925a8f6c9c1e23e645453b3856444ee95e0a6398fadcc1cc373fc2f022822bab3beed76279ecda58afd63ffa1ed79ed63593c41200abca911ad95b5bda277a5e2021008f2c13465c339dfe3871aac5311364976abf8ef18f133872841ced96934d8731c6fa18fd5a8e4b46e289ead5258ec3f4ea774d99ba5535f6cab7a84a291e3dd4b14ba66a2ac33f0729b51078e8cb41ca0182376f7eba6e2656a13ba9e1f98bbcde7d27a4b2ed23a07b460c5a0d5efb4287b68e506f84e8b7b97b0f4e0a2b6e60171b842a2e1f9f508a5c49095392b66063a235637c39b5f1c6447e09db166b3e938561d5185c1ee94b5be6a6d77898d3fb80c6709abfffe3a96cbdc42b65334abda4fb053e91b608e0545a49cb19dbf3be90292935f6805c914540fecc177e311a47b0d7645410a1e6293378be800f04579bc40ff21570e42849419ee2e7e490ac6e063e0df7ca42f2a527e18452c970f86a9b70b5352b223f33d674f13e8d027151b33870399d3ee42055b1233626c2be7021a87518ad26d9618a149835cad1e5a4632b746631c511cb550be4bb07892064a68d9a8cb672596e83dcba3cea24b32d35d902103ff8ec503b05510541f2149bb807c8f18d3d3e96f59f88c63832a80e7e986d41c859f1120f583740c37180775d77cb5835f06451ff2a6fc416ede6b2c29df9efa11c5cb48aeea382277991455d2fb62263ecd13486ee0d8b534aef32bd23845363102fcd1c69d15314a2fdace72b0e64bc63f87e1d1658251ce820ca06f01e89c759d3bdedea5b4fb8f44fd3b3e63542c2df5b1325e26f7f66f6a525532fc294737a2193e6c807cd4f6a99869237293d0398bb4f36cccc4f2ac174983cdc2a61f25608f27bd9c2a655c1205647250bdf9b222fab7382fcb9204602cbc803eb9512be984b799e13ddf149731c3d900cc2566e184b3ece0cee261bf50d6f430925a2595656f2d2431df0e358cf9c29e980bb06f4a2dc6a0db785ed213711bab9eb62f7fc42016b5858c894b7a6755d62928607ba0304ae7767b8cda5cf7d2973e65320611f9f1d29dc0791e6135de6b5237aa35b94f925ea24ba73fad41ab30cbbc6a4e5b9f8a31673eca553e3659b29fb199d22f897b65ae7c4d0ac139c985ed4850bd2896c77ad5445a7dd0545d1498a9240ba5a2128edc03d269bf2192fa44ad2d7e5853e6cb2c06fd864f4dbd9049a28c9e6b8af120d2c9c52efb6079c65dc62b0118c012321ccec344b5b5c336283935cc44926195da07165143f80576f7825a79e7125f36a8e08bef95960fad3cbd79da2c95fe1cfa1aff6ac3ffe6689b2f785cae35464fe55b20a38816bdaea20d5490375a4717d0b69e3774d0b851832ed5e7df29586982a63fe11ffab3865759d8bd7cc6ff9e49a2a31c1cbbeeb8cf55b798af1c6c6623357b0c72faab98589aa2b014b089fb2368749edf6e2f780e6e0db2551db8998bb037ed3134b5d911e653c02464612c3fa529e761715442118b18bc63a77a4b98c60a305731d9521ced26c6fb31bb65c0dee346754a27181439ee02297376390b3053e5564fb7a24c44749e3e8dd78b040a58ac5b45e9d333b85b13273e5d1425b52effeb83d5791151b8aa249903b96230e92f97e9ac9f34c0bf41967d6a00103be1d86fc2bc1e22f34d4ec42e64bfbed8488a4a8d8a7a9886e524fa2cdb151a2457abc283deea7c459a756fb0999eeb20639b29a3c3b80501c917c62aa4e1bf8cac19c432afcbb510d70a203c030ddeb04ee4f9a5fa82fd9d71ba11d5c4e5862f8aa55b7f57c294c80280f40ee8f7aef1130ca3c3bf52e2edbd6e5dd8d713a8f9b73811dadc65042fbe4bbc2b16fb6d32625bcfa9d4784ef60fdc666210578a9a7c9d359aa75e50f60865949695ebc3a4b4411c16b498ba29476f0d2ba60b0d9840069b90dbeab3fcdfca93b7e74d655bfccfda0b1c2a743d5ad54605cf80a2b17285dd080e5a38fbb8fc87b6eadd54b49f3c60d193f9e357308123eac87c3a9cda943b7b8295e3c1b87fc1e1e009f6d88261e61629a524510e2ce3af23b7fc605e8efe703d95365b4a5ef0714c73ef3dd83efce8e921e9ff095019df6d5dd3e8bd33735debe5fbb06ea5103d4873dd4cab738650f335b3cc7aace157a48fc57eef28726dcf2a668cb5e4662ac693d4a172c74fc246fc59054cc324b948e221539775788fac977e0b52b38c79a411b4867aa529c0fa67e0aa6a5cecbbcede78498b055036e177e3e525288d2edb604896a39a9c4dc5b99bb34503c8f42480679b73294898bca7d61af06211351ba73db1c4d9281a510aaafb7c8741ad79b8311a6015fe6c6a189ce204029d0c1940e2aefab7168348c4b85d687a61c700ec2c199962b56bb05228fd15adda0f653bb973532ed7ce83291bae15b443dd6b73fa4a0a8b400c1fec1eb89b8bf8a823d8dc578d5ef44352ca3092b9d1bb0efa1b921b6570794c4515214660cb140530113107170892fd67111c6e54ae092f81a41c517fd5497ced0e6c41881dba18340e664517127e9f94b9c8e279f09d4496439efd81e4435267aec77334366c0709aeca3f0705d14b09504296be7dee8c0720710b34a7caca69ddc43d825044404305ef5655921e7c9ebc5a404d005b762ed88fee0a8fca9325194c3741a79de125d8168a990936a03cb3a035896921423cfbaf44b3f00107b7f47be32dfdd13559237cee1fe072a44441a6ea716b6240888f2c6e7282d9f44493d791e216065ba89361dcf0329dc197469729b0fd35d8128bc06919e2ccc1bf30c5c6f83d0668ba0df5bb093d5a38a8f51ff4d2dacfcde45d117d400e6398629a5cc506be32a03325029c2ce32cdace57a34b4700b478ae6509742aedb6b1ceb085143e6a7c88eba874fc872a0682fbc6c1590335fbdb0e770281fdc58ff6d6ea6619711671efec12ab767bbc65deb8722fb3b27da7d2365dc007f7c3097bd8d023212f1b583ac518992de9680a2f66dfdaae6ea508c230533bddde77ce96ca80eb7377d85e894020ba2fd79f32d87b65630bb3bc3084f1893ac64555dd9b072c574b3d2bd58410c4d3349ff76ceda9afdf5c4c94787c7ba5be3e0a35e46d2d9a18c697fc79e5035388618eacf815a23df4fc72451408c93e3cd435d3277c5ba2f83202b3d7096550b9faa11ab66c68e2397722abb7bce762a69c844ffcdf81b4254d82bdb02acef1b9320144a73d1946f4ab02e34a27aa114994cfafcda16b4fd243e30a7c0042a1517aef5000c32b651823e5d2aefc99bf73ec2159b866ac8b23a77592f1eb9f7e8eff3509c8435c0ea349ee9e91ee60d6f3947899b108a0906f94edcba6f39adb67446e5c083692643f93ff335396b2325f8a0a2140db381dccbb0935bb2833c030f72adb8e4649613dbadcbff927dea32eb37f83c49e6f02ed18a7ce94445165da76b73d3d683e4ed897d33636df926ea855abb95164c6a65279c69eac918cbb06ad09dce94c644dcd4e63ce78580ecd9a70369e15e47581c829d22d6b7153e3ea278d35d0e96ccf41c27c841548e06ae680257351088ba3336523081511a7b4019ea16c91e9871efa927b967841abe8d87d4c5be2ae702cb15e6040c71f5b398e4502c5c42d50d4df1ce4076b80ce5a571693de59e31fd20401cdea83975231eea9ce2c18c24462d82e481f67e6b0cad878626aa613775e57bd11a04eeb828ebce898ae00e3938beb7671e8fc9d79b43030b5cd4b01072f45034dfe582c9ff6c380b0fefaf970e6b9dc15b246165f8829df08bd2b71fab53c3c7d263ff82c45c11cdcf15bb1a85f4344e78f6d48592befe4e050dedb9bf72c64723d54426d09f603d802b181a8b6fd72c5d83d79f0764934a0849aa0620e84997febfe49f3058b1a3acfb05ab9fe3a1136a6cbe815b6a6e73fb8ae7c5fa77d3e16df2550fcaec29bcf99bb49bf20e0010c5a2722702af65bcf3189495685c1854d49acdd9ab1fbf723c8eb3f6a566b8a541522dd488952dcb9975043d1fd51841a5efeac906b8380a365b65966b04a05364022a456797c2885750c5a0079ca22a6d8ad88426f38cbb79f1b4ac4928218690608b0f01925601bbc5d4f45f6ed87bf731eb18904fdf74e4767cb8434a4aa5ad521acd778081dba40c7a2e38585d6e271429b46a5f9417a538137ec211410d2e13054a21bd8c54f39868e69cd8e58ad17671a817faf86335ecea905b8a02a2ca17d1e097bf56367c4fa960d87ba71e12e114792f6daace426a04c87ae6875d950fc63c085fc85c260a06e6a013bf34d83e9b44c202615ff0e36b41b8a1137d26d81b84c181ef967729630b99ce2aa0567b9c95748ab7ecc9a4d69ee284e54213b0665418a4a633dc1b833e84e9247552f7747fb6c4709a6f542053c37b57c7b42fd35a5242c0839fa47f8b221f8ecceb5625b68c0bc3fe96ec18190bbe7ab15ccb60fcea1f142d82d22f22db29d1094d531c42529a55356f6039e508b07399369d5fadfb3e87ece4e8b310fb3467abff14ce1a4c334f5fda4a57b25d47deef06bd29a407ee8b8cfb5852c5b699f81726e1bbd2d5ccc70883102d5e39411e4c76b9240bc1b8cd3f09eba2a032e3be39135606440f65bfc6a7d266f92204e1520c2090bce173d4857aaf21571f0e2c6af33a61c4249955e930851a9459e39ee4f11f1c778f10dffd85c1eb1f2b133d1f9d9bc4bcd3eee592d79024ca08c5b4813ba8986629f6457bc9dee7774058d5a439c442243757385681b9ef9eb3713921964720e710975abff39fda802974f256d764b5b4ec06a7d905b9ae2e5453e1ac87a8bacf98d8bd86e60853c15a46b2d7d63f9a2dea6c5955c4b419f8e2c2fbad2adeb07b37a27965426acc9c17e3f6bb2e54c76c4e163781722015186b8f3579a6ee4f0fb95e5a5c403599c8c0ac6a3c181e78d7de0255922ba4c6dc089ebfaf575165cb6973a2653539e7db84215a03140ea25f246cfa962110cd4a492ae6c283d96fbe9acfd918cd6b1f0a2b52c667e2fe2b4db69b9775cc89c13069b43a0498520289ef5c236a93275e6f002144d44dfc4e34dd455dd16a762fcaec0a65958d05e0cdf07062cc66c8e290e60490635e5fcd862c580316b17e8e5abf19fcf7de63b44ae6a241565731005c81980f6015b86285cafa3de0aa68e47de70e941ca514862b31c28381395b3e7990baf77b85d1bfba1baa70b5b87cf86db56a6bdd6e12e0ddd0b62b3df089e0599266fde458d703eea3eb880400f0c1d920d298a452939a7c79ed4dbb763bc3acaf0a95cfa9081f0794cd5711939ee76b2d709f80fffe3b1aa2d6e0ed822aaaf1304981beb8fedd7e22536196e23592f63468d8cedff835fc284137e3e252a03ea8e0f2705b7633bd8c07b4b548fe9875ac25ac3e509fa04a7657ac874312ffa4ed122047cb91f6ab548b36f1d630641110783e04abf775dc802d45b146d74f8b5a10e0d004b7627199c2885a929813365a3d68cf10854d24e8747f720e7a5c3e8e978ecd1a4714b89ce0821a590c64dac7c8c367690ef38f98e3cd0b30d19531527ffd159047e2a6aa5d48d0be99ed6ea493870c645a9b829a87526793415aec3eb143a622a2696b51ba37681ab7e179a1411c8f1dbe2ca38dbfa503115ac1a915c326377dcdf88c5de33c87fef66d02ebe87d17a491587511fd48dbd4b221f34b252ca3563e8ce36d3d1b1d1f45517597b2d5bfe4af5ac8ee0931e40d6e7177bbdc248830c313e608f05f09b9c4785c952ea0a0cdea71ecc7fb17b7e9a2064ad5d3fadc7a85b4f1bdc17cbfeedc5d2219e83da78c606bda4d1b3a803e1bc6af50764ea3a0cc729a33b6473679209469990722e490bf5d7609e2bf377d521fa3f4769344892ab741f5c7ba5d058aa94c7aa0a818d77c3a42d237ea6420762c44b3833a8d697477f08a715c085b1df1afb45f0db311aa56cd2917f7ed1eb05fa790db05501fb1b92f2b6d5b57634518a790cdf99cdc733653c8bdde2d05964454f8c86c769a4387b76d8da84ce1b77720c7fc02af6940465a6ac5935370e8ba87a8e1462d9fb98a7dd90231e49c38a44457112d4745e4ce6d5ffd3bc4429b7ffa581bd33576d905bf015c0e6b83007b5f68b9da704429409e38525f780ae5d2a4ae6881031eb46dcc4d0d43c4786b99c7bc77b2aeb257e8a45b3ca5b4d06c41c3fd31013b86a459cb6e06caa3e9161bb85f56e66d32e99d86cf15dd9dc7d285cc671c0dc996412bdbc991cb0983ee2fd5839875fd04646c6fd1ce2973ec37aa75c7f622fd156de772f0074511c20022a8a8b1928519fac7fec04ddc9b16ca4ceb5cdffb92140403fac5141cd95ecbb119235060d1e2abebb0def4196a77061fae3c20d33f42802ac307aa32b93fd1eb0c8594f942b1f4c5966142c65afaba8e6d1d7ec193197fd86b49dec8b1cd0bfd1a569ff472d792bda74216919095ea4d1e51ab7b9691a08828392545c1289b82a77ad5f875777696eecb6d300c0ac3a21d9ac5e4738c2ef7157627be5366d39fc15c07ed8ac1d9081dde87d85001e26018f431c3541a4871bbccdbbd36b66a9ab8813077488b1fafb13bfabe9d1209e7bfaa92d15a95ac4e595c54da8578256ede6696505d53e3aaa87b89d987c828fcef23be4a52381e802bdf1383c7a74b66449593fd983148a7c17432bd6acf764ff2a6a03e1f939c1e27e2b17bfb21237dc07d039f4654654906c462dd7d0995fef5f3d6f2886a8f2ff7f02a7db5cd59e760b8c0fcc7d2ac635ce98b88c48637f7236ce2aeaae77545ae8392eec755cfd7b84a2f79c3ddd7463e48728acbcb6fb2a31c9a655d9535e30fd46ac68aee92ba4e5f85b95ebbd114ae253f9bd59d54b2b9cf05ffca66da4c94ad4dcf8e6e2dd00a1ccdf5192ed2efa56b0723dbb68bfa04a99cd7792fb636449410ad45b5141e9c42bb66379d4134eee4822130afda608892ea06e28b51f98f821b058ac652f89417b48db1e9ea189c03726f430820cb2b4ac4f932b584cbf44b9ed0500efecf551f12c1110b947626b8d477010cdfb8d7f25fa756b270d3a2a84c840c5e67aea3d1c6d27cd5a086113d0e4b84b145b90053e92437765009c72b23e8fe9e3768d6b581cfd17f68cd09877ac6a9e7553237fb15dcc9edc1b1798a42933f6a68be2825c3e8eacc94aa9bf7027e4aa6f496f8accc36be55999b5d372f04e2f8f71c936adfdf96552b72dc69a13f3d7676579bbf16baba32df3349b650afeae257fac212832a940d58c28ea4c8ee22325ac5a6114acbb95aef093db7d510b7993c940067c374f7fd81effa8cc0e34ca54a7113540471bfeb4c2a50dec242faf26d5f9aead13bf75a6be091bd9308d38059eb0f4127c08551c303cda985bff60d0d5129993edce21cf2fe4a6224fa4162c5deac33c6395b648d2ba639d06fbeda87f4f9259d3c3c7a62ca86dcded351422903f89049e79e29d612573c9035c936867d672fed0ff3cc2fa433df1f44cc721a94e65c254fb290512fbb61f60988aeef2c626d756ec687d0f5f8a1cbb6724cb5908d0658589196bff70fa548abd10bbd96c4d0bf05ac978c47eefcddf4301a49bcaddefa1e10441aaddbb55550fca773533ce1649d674151c5df3fbf55aa29348a4acf47edaddfc8367d1bfca94386b22b9e546869d2afb95a3648cfe598a6543430020922ee7978b48db66cd7c6705f0a95741ea437d96137c6ddfb21da24a304fa1ae80dfe50cfa381bcf8b848058e13aa47dcc2e0a95cca99d439ffd5656bd322bf1fd0c6ddefed2e8b5c2c9bb997d705ac7df6bfd6a531c8e7d0d707c017b9591cff958c1938c016387cfb2fda3708de2bdc899d6cda92e6d46bf5095a84408cd401f339a3235cc2ee892d68174fb4c665404dd803a6504b7cb7854a80a39a6ccd4a2a5b8c916120c2f230e25aef4cace521e1b556ee3b6992b5b73eacb42ac002a617de4e9d705c9e54e1a3c17593b2ad437f68aee8e4409fd0e5459f43049907a4de76128b47ca549ef8667196cd32dcadd42f280337453c7be01d7715f28930c30dd5a9e986287cf0ab680426886f2762ff28baf621e1888e1767792ef7875bfb4fb086850e5799cc73c8fc5bf777df154aabe4be88ee62fd5c6778a90730383c99ba529c128d10c2efcb0f8ec441fa6458770e74ef0642149f0c5f3d7a077df4c4947843796f42dbb9f02d4d28837d5debd445a74f3d2b778a217492a624d6c0cf1dca3c3184241c36be178ad3a74114a1b993e2e25edbd357f4d6a337f8757136068b3a5d8b440a48552a792ca36c3b39aa474fea3b2f5c2a3471cefb990e348ee7265ca47fa53c81ff745821d63a5518b459ed72753927e825f8741abdae55e6e786f5791685a7833b8dd06cb7e47b900a3a4f18d97bd5c5772b71f6ae54610bdad0948bed9677eb23f1e663eb18d8687c230ae5a6b1432c1c61b48bf6885af8919711921c741985a6859619de72e525898328de3c926ce491f098be7ed3205326f6787da20e2b994080586961937f882e55c311336f8e5e6fa38a32647747ecb7cb1588945fa1f0ae03c0e796e872ecc6ca674f90f83cebd5b449eacf884abb346993b772e6932d9fa3b5138cc506b37a4cb8c998f3307b46b2dd58fd4300e421c6ab2d45cc8369490e6c33c2c9c1b770ecb3fa8e8699496fdd874ddc15938750af60fd654e1d27340418924ecc629bdd467282c1ffb29e2388d9602e5753ab5121384c37b335f678ff892d532fdd3a50ea80a3261af2576b577e80f260d62057519384efe6f09edb7d851836cc4d236635938074ec359bceb27e6995f40483f2e667bbcfcfdc6db2e53f689d275cf2c538805ac6f68a70f2512a137573f303184daffbe9a781789bb014141eeb92a118a094d704f42696b070e19e2fecfb5b91a5b2601b92e97f4a419e328081113d208f304ecfaeaadad6ed924b664cacb3a96525bc60ea161e340fc6e107f51ebd6d921e3c5826c42f68492eada249e0afe402d83261208441525abd81c151f01cb43b211faf8c98cecf23ee88e27cc4e6482db76bb9dcfbffd554c86cd5a7993981d89f392b87636f68f448c9df36aa7fa375390d18a12ddaa11a9f062822c294efbcdf8054ddca6a831f15dbfe3a294ce290d476d8726cdc340b0d348105d37e8686a83a623d64dff18f5b5a61b31969be487dcb747115dc92af4ee650f0418394d8fdbe04d36be2003e406bb2fe909ac3dc118a5d20d3802c62a5673aa6c5069dc2f342fff3f98bc12b7b5c4102f5a87a5c116e41109fabcdead51bd4db527ca3680bffa1d2c444c9e48820bf37d7cc73711216dfd2812d25cfbceefbe528df4ed7ed3da32a87cc06ed97fa996e1bfaf273c9e3eb33f758f213661d0ea8c4f6e2f691ee43d55a965218e9d148d7deb5ec2540d1b8c5b207853a5d10783fca14f4142ebf97d4509092feebe20d605adb6c06f125ac6396b817030405de815f4a2525276530284ada8916664fc744457520c25931eb0cd2ab82ae6d304489817795ea451a7f28c433821c6e3e96b97f0266c14e38352bca377e67bfbe3441db7eb0586d9aed6ceaf4487c230b7e37091a6c65c00947fe14c9cacc23dedff911c88d20cb9f3c93078801872353622d41281c824e018cdcb615c86389af5d4b247dc478d7e19758afe82fad2ba3759de0c5cc813cb9a763d45b0837979a5ab95542088244015da288b44bb43e1ca453a251cb1d7c91d59aeb37420c82d674e213236153050057d4b2721e70829c30daaad9995a221703bc7c5b0578c0375d392a87964d4019b37a8476c39ca0ac7c78592da51a7e01b5ee7c2a977cde168c6f6af1a91787d4811e746dfba152069a033992b47a27a4ddea2c3aeb4bb7aef6ab316fc7546a5a4ca25b06c80d8db0d9db2eeb2d14d7541cf3e24c68b270c8123ff7750ddae09b766725942c4e9d29f931406568fec240b0e34c7a64108b041c167826f41e2ed1de1544e04c27f94540cffc60cf1c278c6bbb527a72df83c6b44498e9dcf5b5c406c438a8a16b61204692b0cfcd899d786fa233c8c0bb5b6e25e5984bffa524bfe062b83ab620f9bd4dbe771f1383f0c950193286242a04edbdc201435f147d190f5ed83dd97ed5e3d6d95741abe0342cedd52c1c8e941f4a8f1783a53b67e698cadddd6b8a4188ca18f2adf10983c11363b5ddd5d5ac1752449111839757d48371145c0a42e3ef50585af899652c29b0d65e7782f416e3043a8f017f9df90c0a56ae14839a56d4aa329c2679a8a73b90142d7a75f813b51c4d9eb65501345b64e7362d81f439be1568c16e76000b0344272475864aa3da5159e2eb56684f0240ad9eb9f7c7f1e0f341cee9de929dd1694dd06e58c6c2ffad157b85650f328b3ab1d97d42a0a340eb818a649ecf1e404b1ef1778b740ef0e7b38de9f4c3a4857ab62f1b955ac7d7962602a1d07c1b3ab8579303d606bff1351c3c8a0fa16ef0b8eae7a7c384e7b53b4af7d5ff847b93c21ae3c64749e05bc6996f02afeb78194007e26dc0ef2199fd7e0345afdc26dfa67fad9f392c04bdc688ca627cfeea351d6fedfa680ab218871c2f897b097c7d4da86db6ba5cb3f9d7c738e3ead62c2255e270103127ac51b61aa08730140c515060bc737fa47f43a7fc81fccf1068d69bff8dc89627417916cffb4f31e6ee81d693a59f14aa4a055601f26283a6477f0509f363245e190211f93e3fe6f36b430e97afe72588e1cd23724413c24f9361d1cd0c60afbb28d7159cb8ed4f2d5335121c55bba067b674aa46a656a97144706feb6bac41a58cd88564943de9d5c732e2187c49a22c0230e579359c3d31067aa1805320eeffcf55a27f2a3cd9b1c03206d22c63f3bfd16b3efa9388dc1c31b358633c2bc55270ce0e6fae40a7d407a3251269d7f3914ab3589fff3193b4e295380daf4c7690effbc28e14f73b853f143d9b7befd9e9d6fa99a30cded4a311d976d11c413822e1e7c6406c36715da833000b14f1d979794790d77dd3598b5c5ed8628220b4f619d555ffb302bd94bd40ee8e0aac3430a7139abe38f8e7b3eb52207b1730a21311488d6661d91d1ed877c2d7fdeeaef7eff04459c231a7617c47416b5119aa1350041ecd823fc9605c7faa7542e0412735e7136c62de704a88d3ae434c67889073f1519cb70ac9fdbbf5a2954902a48634e0d265713a70abfef96a07a55761dc09809a482455efed5223a0e5e2e25b8a5b67125a093b449d48e3d489bf11d7c08312be3897838e6b7a48fb1b1e8397d0e21e292093a6aa8b350477486c430067417b8c6faf30a4ebb7e471520d1cf0d443c7d5e20edc83903e016a05b6af06b40bad770e333dd4ccbeeef516baee1c2bc5afd94c7646e447a2e4d97577339299d6de3dba3cacc099fb5759f5e7a40eb99f008521baadbc16ceccdfd90e46d7a4bea3ed141dd3b59d697f00813e5a514f819137c549f0b108413d423e7b72f14bfcdc0b256a64f6182de7f1d85d09674d712ccebc67659cf1a5c1698fa56eb27e714abd868f3bedfb5d8363018d2159b72bf21e1e537b726b7c8fb29c324327f6ea5338638a5f0ead15419f9e3b625d9b425d0e7143e34e88b19e04d5bf4e4b790c89cb6c6336a48452928a9b1fb1b0585ee818dedbad34fbe566815e5902eeb99a9dd44a2248eb25db07dc35d53c386c4e8808b8c2fb3566b4be72d01334e49c5d7da2f5698aaa79b457a4dec244ed53586f6456bf480d40c06d2962c0f327476c82efda9c0579cb2c90028fd0a19d1f85dbcc244b642e9eb5c44027ec9e1a2b853827cc36226ab0023c3a376533da3eea8bc7987f36b69c3629511a8f8b8d78534756d1f569e1bd2ba9ea22c81f30c22c5e2a0df80444692f4fbdfd9a971b3978b16cac40b8d5a36fd08d802ccc55044b69bd577049f2ce331438d13defeae6a5dedb70c02a43d85db8bfa889d921f6aa1e645a87bdfd37bfc8ebac80a37c6ab129161d75267acf44b52f857155f337751f5baeeb351b77b7d302b37964edd7ff5d13a0c236c08c8c6c4808784f98112b25c2734d2cf336f9e8afbab60226bf3b87171d233e7eeb3c835756bf26b319058d59a96ceb843c18f06200e37523268ed6b8c04548b2d0a529e1269993eb8f9f98bbd28f336534343181e69602b13068ece7b00ebb704236b6ae61b688ad33fee01355a61d6e637f15231df1463400b75229b1b73f710429a55e03282db3cadb77d94068c6b0e6a938d4e5effa06057e56368b0f8cd75e66e571366bde349e4740bbb7aba49de606a17b7afc3d966b4ff8af1f19dd7230ff79ff7a524fddf0c6c0dc11a88c968ab78fc0dfe73792b2f4ea43a6f1637547d4aa43f2d757c655b8a5cd7b4661ff296045a21ba185e10493c791e772f549368003b926ea4d39ac4dbf8b9f71682585e1ac3d9da30a239eb9ac86b5b43eaf468b7c8bbef56848585114a98f531a1ea0608b501d12a3725cb1c0f41e8c5664b95907c280467e2d62103f09416a26b26ace31bd72beb4fab5fdadfe842bb977cf4af9cb90065a6789e2b233f6028261af100e798d74c9bb19cd1ccb8c93daa4d6abfe247f31250290926a5a781d9d161ab7bad8213994e1b6b60dfb47cfb7840396be86420e55852d13841f3a59ae2faa0b362e8b81300c039cca0f9ecb52a5c0ce6a32d8a8a368211c5dc8ca9a745685fcc1a64316f517313bcb22eafc020fb3c64f43f8b5e2d34acd91759f012b8e0c72bdf4786566a675dbdf783d38835f8b19e3e2521f4f2cf09a17d8dc53b6d81e9fe92c547e34274c0bf4bfbf3084bd5465319c4d992200b59f0440de05d05bf27b2e77ea628be0dc796cc00005329b522c109ab77b475166ebba06d6002d48e787b616ffea994f2687ab2930a0fad42c83050464988ea40c09da00360897602bbcf6b623ede0ede1487b88106f545dff067c452df7192fa9054a19df2a7ba4fc4eb7d670bb68fc6c73e15778a53c5b27635c21f47854e61fa424dca4ee2d47ec64d4ff63b0fef72680203e56c897c76aaea25722d0f50c17eed2ccfaa18e73821381cb54a3fa470ed9cd800468fab1573db581a570d6bb3b57fc7b03ef7d6708233fa12ad8ec0b4cab8b15dac6e3f7d7ee16d8facb238c3de4653eec58274e0798a3c288eb9b971c366a7e24ec2e0349cda4d21aee509c77435f6d2cd92f09347cbe88e4a7104ec8399981fe53f529b1327f49386c1a9535862967e1753a3fdba4b3b252eda7e5756ab82424d291fe0682dbb351a13f0f5ca863a0857c3224c6d9f3bec600dab07ddd7692f15da99148dd4b8c260df231c4080fa5ba336a9fc7e236174a496b97cfbbed17c1a402aeee60b2ba710dc2dd9fbd27fb6fcd4cbe34576478a7ff66317ffe3c556e35cec13fb42f47222f39aeb922216e06919812606fc7215ba22977da72f728ad0c49e11bcee2790fbc46eb2a2bb4b894e5577dde55b255b9702eef9e56d4b3c4f21e149b308a78e1f20c6f98209226bc72abb5cc8fe411711f3fb5f0acfc70abfb2c281458ecc961f9049c94620ce0c0b11ae59a395421d7245673f9b67a79fd7c8a0df4e012ad51fcd6f9e1c36095108d54c692d933b7313bed36f46afccf1f648557733e653f1b24690bc0125f12cbe15c6907aaff018ab169d3f2e02a5b9e72cb5bd4a45bee1fb9dc57cc7ea782a12c760e23864f9ec8f7961cf562021da5d025f7d3d2da9aefe2aa0c79c2969983db0b260c470f56192085c641eae3dc09c6bd926872e1df6c876a822a9a6f08943ec26a23659d1f58d588fbb7ab41bfb799d0196ccddf742a3c2b1fbc9cdc407446cd4eeebe31a9da3f1bfa72c1da98e34e2c9a623530889cc7efc1b2e2bd214eb73a4d2b49b659421d03e843a3ad9c267174833b8af3b5859d2286d5ef27c68ac19c95d1050bf4979e58346c93f6d71b62e1455748fd998b018f9793e797100f7c8838d5894345048969838dbc54c14aaacf603739bd0e2c75fe454b2ba04ec0dc23b97bf3f658f653a52a692476e16a72be76b0dfb12c2b1ea78cee2d324f3bd98e40f5aec2821189f5c0756a54f29c6d95a9444db027a48af8e258c85d9fab9b4b429377b438f198514709aa3fea0d8f8e23222eeee19c0d9499b5eb8544902d02b82b58d2963c9213253286bb118dc5c1bc36ce89ef4b247ed943bf5920b5d7d693ad80bd539049b43de6507efe1a7f0e83db403f0cccb0a7d3505ea8bbe909ed3535da0a9cd6490f77a91e84700ad31080a4e7b814989eb3099c9eaf25dc3ea0c8bbb3a69a85190373fde629eb337b1ebff4f127181b6e2b61c4e6a877a1b6d3b2bfb8d386f1ea11256132dffd2bf95ea9afb8d27b41ca0455a6286f59982079f939290b3fab3ba77aba6e6097a7b18bfb15334357ea2067fc6ed79468232eb77690cfd11ada649c0644a8be9ca95065550c8563e1d85ac22175e28e15289223db042d55bb85eae0af08b03ddc62142e88cfdc3f794985b90ddf7981a8d7a06234267daad46fabe64b472944f7f1f407372b35033c783931aff8d74566ed5c7f162e7148eb6dd40c6ac036b8121b08b6d5abe57fcd0bd0629f54f88b73d83e92b67754d505d7a73db772e18c09ee340da4fd034c43eaa1b2bffb148606fd2c484a928958a81b0879fa6ef0f2ff36092a6558dc99ee9916c5ab0ed4a43bfdd03a748b1be997f551fc7536328204d884458aa05fa8e8f5e484d833cc783a520264b6712e0354ad3d5fa4d1a1ffc9694320c633a32e378ef32595db91e66c654009ee832d716b98ab6e15e4315bb25b0c8c4f7c1dda1bc9560c52bc952d03fc639f7e2d9c0a8579ec2fb78210ded8de689089bfbec05f6c63ccd0406875af666ccdf425980d0a50f6d4cd6d67052e15b89d07681540b7d5de77276eb88ef430b8a68583e3dc0fca421d551c48904d737f4c628b38f0b74cdb121eded44fda96496d048dde2db89e2badf859b0a2ea04185d51743196a3c8ea2205c3a4d356981e87b9e719fad117d081979c986536b3f0f047daaf4502498f5d4911658dd20d2ca3971db67ea6c11517be40ef42bd8caf8a63949247d5f3e97d4e1bdbfafd7f85edbe0b57186f197cc085cf23209de71b9ddd4bf341b9dddacc80ea1024c10ef151adca0b8d939ff2656e43780d0e6a95f613ac3b0b3cccf0b209e234137cb6239ce6d1d7bd4fb9501e5beb0018320510da31443a927e4d5bd91ff4bc46c988464750a49bd43e26f704e77853d564738783adc3c34bdb8b0826f325f747e1ae307099819c6259abd7d3d7b93a25c6a7569a4f6feeb3b3df24bc8d20b5f459d5ae5242a79a00e8624a439c796febd6c0e3f517ef06a19b728c15ab89b3722a291957dacc59b9cc97e5541729f078045e06a038e2bd3b5bc65bd57919ed4cd83f503a7f5c5c9fc9e10753422c2d3de3f86f17d29594ba80ecbcef422a3adb993acef2afc1a827f282cdd0eb3096035be6aed821d477b1b9e37b6ce19e06300537d6cef2791e23c3071daf29a6f0d7641190c2271a10f3a5267ed1b942037e6a83c62edf97a46c98752ac03d5071f33b75f0f5742123aab5ed81dafcfe38fe938ef0d37846bd3f9f94e07105d9c3e3750cb4cf827cc311f3d91a4c9a56275633a6c7d4e6c3cefb80058940c86abf5ad61932cf5722cabeb9b7215bebe1817b873fa14cc7148c6eab034715eb51b35dc1213aee4e8b368b8d318b762a78248173b120b55b328c6618e4badf54cfed268d988e3e3d10da73bb670045432fdfecc9e29ede12b1023e33922cd37ce6a043506f170c4733ead06c80b2c07cf15d221173219552216543b2b0e4aba7fd2e8c4e4760f8b545b456237f08facc02683cb63394461855d9462e90511cd1f2cfd372f260e3ede603b3b221947e25ecd73ed7671f5bf6d0c62b1723e01d56dfea8d1d83cce033ed2e01efd1b9c36caa328a98fbd08b840740125c7447076949fb01171bb459198d189472d708d7abeaacd3ee6c42cf42ca0f9b3c68fa78fbef6c25ca1987de8ed4710b927a64ee46cfbaebd8b7565a9fbbc94b2d51a610361acee34874a12674685516da773c40188acbf445fd48a0d70726247f975505303fd2802ed2eb824037bae90ccda0b7beb5016d33af1c81daf53b5ef5ddc980a9151c86aa3b9b3a16b538cce36daf1a489196da8b9d81db5690126147a4e52f87d570a3c7d365ec5d2b2d4ad6c0478e3886fa1353a67ddf2c2750ead3e610b3a47928fe2af5aa52ced5f73fd211557dcbace359dfdf231f12c370ef7077042161b47db729ad78ac8326ada502f1b7a79d7c3d0c386dd93cbb5dc87374023eda6b132d541359fa3cc65267e8c4c167ebb2535baf09a3e54f57e632391e6c9f553a0b0490dac909aed98825982e0f7365c7c8763fe850517e058524ae86bd8b51db2da69b4e4d1acef4e44679e77ce2941c4c4dd1a841f53f2bc8daed797fb7fb70eae4880f4302b858dbc2aa3b38311be66a45d18736cd4cd9f0bc0b4679217723a735efcc586fc7cfd5e2776c6fc5da75139be4d2d8d3ae6d54b38a4190e36f6387d075f713a1a41727267fcc99db0347b14fd0630e17867049791bed5ab08cf5cd3038209b311a572c2f706872860b30fdebe856f5b566c588b8a44a737aec48d80f86adfbb83049dd2684f7daff708b3c2c6917a30f0847e6ba6e3b70cbd061012eb637e9da7b100964f843edeb60580957f994fc2368d94f9ad0aff52be261647cba3e2f3c5b3c615c6656e280d87af32776285986ad30f65294ed78eace2a711e686ac18bbd5c3c3eaf1f988246a1182e149a9a5a48ed1f7eadc2bf379bfa7d07257524e7b04ce6e5ba1575b564ec1731215f59451a5e3bb8204308b8973011a06a692b78bfdeeefbfb3e280b027c1740552be5db0c39748cac5d23c34214b831e32a98c834dceb03e8ca37476a16324d84741e454c202435b7960d9486163969a6208ee929eec1c071e17289f50b0864d77a901a55c0ee3168404ee861dd6863f4e992afa568ae8ca68c78354b62b8b4aab79e75e379bfb9d1b1dca213b124c3454c44d908753d93d05c72e7512ad825999b57410376d99d71a933d4215ba7b8744c44f3d2a2b6698c161d014062c0a28126fbd9e26dc4970e6a7e586c7989ea61806517fb0af14184e9457f705b0030ac298b7c0ad827f5661eb7a7e4806c2e63b97dfe8e152f47ff91cf41a9dcb71758140ba809765583df14b772d54c4b60064e4639e0a1ff8927d37552b7f4d6d8235933ebf684d3e1c9372978e269ec58ff94a78da7983399adb55720d6b11f871404c1cb1464c77aeffdc2e0c0655a193103f1d6950c25fe448689a55dd1a232282724d5d2daac1f2df6702089ea304f0f007722e9fd980412b86c6d09263d99ce8841f1e76b183ac113b61572962baf02e55d89ed501d287250a35fbda07a48990789a24ae15ede2fb4980c16c15c5bd532e2f42801b670d34732289babae7b8752ad0f4bceea45ff3d9b0838172fae815ff1f3957a61133d99c0de1ddab6e9bb326b9e45a824433afc0e6ce6fa1aee521c24eb39c1b29d85920559e5b498dc755e73da0d755ec30cd4c27469948fa8c728c9c77cbc5a7e209f1230d4787d376b8ec0da83042b66f660ae683f3aabd9a39fb915e956f90baa88593b2129707087951f0cf7784a4cab3d508931263c22e584675d5318402cdcd20a2c3c2381a7df6bb4bbd8904f35fc2ed48760385444c67f9855ffc7abb0c650a1cabef0fe0fd61cfbd6e144c5d1338f9eaa1f630bb5d5095561163a8056c3bccde8998a69e505f7ebcb2ede7000c282f547cbae0efad759c421525ce3d679bc3edafc507e76635e165abb92d0136f715d7e405fa52ec6acb8d27e1042a7af999a723fb1bcbd18e71d551e19ff6c0508a2ea9926f03ae3d80cf1bf4d855a5b0760c217b313646cacd8ff1d869819c2a008211087b2eeb4d92eb55a7b488eecefb6c96585a1420db65d8aab6ae0b02da2f7a54b5b9437fb61c004faff134def15f0aa7598affddb9b30eef18a4e5ed37a1e11d1c36f9ab45fd5d16fa2b6f0233372828aa9e5c9f64e182085db36a9cd5c6880f4b284292050ad8cecdaf966b24bdd0265eb92dab6ffe8b90251bcc13419ba93e08772abd543f732a371d592fddb1145ec49a62ed25270cf830cb729859f2d2b2cb4300988e68c8f4c79a24e6151ce0c388e21a73393ff9038074a736b4f077e8890b54f34305368ba5316d2d558295fca66221ee0322f348cc07553d105b9c504e261f81036d5760e72c63262c6d81e32ceee234576a6ab44e1c47c0dbafbad0a5afcf5cb27314784596d9f68244e007cd4d46c0dd335d05d6f83a15c83ced3fd921107f741003ed162a2546f5d9a02b414416300b7839502d3977596ea297ebf72de04b25c9c26da05cadc33e3246c57ccc21c69ce8067bd24963e903784a14b29afb0360e46fb9b24ac29fb75f4b80affbd1e8a96994c3fc33c5ea1e015f6e03349b4f18a44a2799af0b0de17f34ba1731b8a1448d0738f373e1c38a27d5a3ad1553bdc20a3521583a8ec8012e0806a57d821daab2d63cb3d3b59e2c2b52cf82da303b0dedb7a43bdcd58dd2fc44ac6a6dd73103abe808e783edeaf7b9ba02807a439f2752d6c2b5ea4c9c3ac98624e29cd5d0b4054f272cedf9dbf261c7c2b7e1651f9c6414208d2e293b1cf8f79ffdc356974066d2f9a9f3f0e94a8f1e860c8a7cd9b775bd795b3aa13331f15a7e0a21a142b5855232f8a66e4d7988f33cbba1554c83d5a2195ca24d51f768f0d8636de534afc1cd585598bd87771ae6c3b58802dd4a8143628aefb2e6ac4bbff9f4c5c2f4e85abe482d51f6db03e7e272cdaed054b7ea8a4b1068f2485d5bcbdd8b310daa5bc55db1efa39bcef5861090ad1cff5c76591bdb0407894ffdd297b9fbae3ea6efab489736d176aea2f269d9a531ed0673a966b37a3dd5d897a0eb730ff54ddabc89f0d23cbb1b0852e282004560c6469e67ae82de56d5468a082d254c4e215bdbfa418ca4a18a30c2181727c3f39d75478f628ea59a31fcd0c3d29e833a77e4c326e9c78d1fdabcbcc971683c2885cd046a3c324c852ee463eb58e036c0e95240e6a7d5fc65b109bb8e6e50bb1f65f02b54e15aa4b294eba242e0a3c897a429ec8643de90ec9fb59a9bd15e137e4d62da67cf087453f582d2b21ed17f9a810d454eaa5d8a120d236225f9898bb5770a8e50d4d36348f31fa80990085a1f824a4b1e13a3216a8ffa142d76b7584e76b54dc954633d3c62bae64ce61bae2f074eb2dd03532da8f8a69820ef47e8b2e693618739f679571e500b3591919ebdbd29a1855de4187248d6a803cb88fa4a83b89b936cde2067786409a1d4255c46ef1403f7c6232b8405fcdb12883f8defa29c30547001f690f37917154e44388acae767f911ae1cea31d0b7124d2596010a9c1fc9bf58f8eeda998b96f992874443a074058079fe432ccdd5bc38678dad70772bbd557030ace6d1c776be65540d5be3e3bc1e4d705155b317fd2e25c82549d162edeeecce7cc1b236df4c48e1ce00751632ce44273d3e03ecf067f3a2dd1fb3386959009b8bc0d257309d7afb7837c03361e54fc4627986a2dad05a7c0f67092dad69f8b0368949dc85b26d1ddcdf53da7cd3b0fa88e4c7d07a63587f179e23053afcaf9035b135d3f1594761d6545f60f08e8006ca6894c681f4dc3d6d8c3494aac0187c029f36e6408064433c043aa4391d2a73a4b981120b9e4b1b46b7d6138a69b925a111f2a55960d1342752e06cfc00ee31ee91641655d7fe862a50850c6d422baf1cc092e6883cd3fd935f6d5af1e55f00a44adaab267fc106089a1fce0e1c9cf75672432c4d8d5ff07ac0a4669274e61ecf6cc1d8949a56118a296a7875f44c3a03ceb72773909feacbc86bf5a6d13c57fb0cbc931a4ef0b8c3748e935ebf13fde5d3a14295eb7329f8da4d7511f0f452f753b39834a3b92574dd97387639da4eb4b23d3c50a5edeaf30df78f8085ef41d995504df3004ce06fc0f4c91abf1d562c26c5d5be10d4e0d993bbeae524e5d081bd82b534da3becf81bfb3bafb5702f4112fd8e0e6722739a851077d4bbe36f17a0fe7778f88ab20f0e63edbd34f71b746ba8723fb386d2601b0f532872c7e83301b9f27ff632bc06c3c80f6e42ecffb4c610f36064e3da97e4f8399ab5c645bead6f5f2cf29f3ce36b2aa00d251c31641c82d6dd52cfc5b845ab84200de707ab1820084d39336c547b6eefb1016a954f63cf33a94515ad4d5d30ba3f2a86ad1c528d8b4fb9c1b24bb7dcba303e4b11c5a9cd7e5e0c33ddd1742fb0ac90d2889e06bf31044612a27fa49fd4f3e24946143cd4a4a613ddf7594d783be2164ee673718150e85f63c06370485c698781a11939423974f178e62deb7d708c74548335d2e1bfa8fee5225fc54c87122a24baacaef7b1e8c6a09cbefed373eb0d8d543703b35ece083cd84be481f972b3f9ff0bf9dab3f47da2aaa1acb5da8f2d7a9c70430ea7c68d012389f5a5ad62c9d9b99fa9526f05d902a07c41819b12e8ef51e023cc52ba8b40842ac3d76d84063254aeaacd0c5103f73d0a52388eaaf792d6a7cd0e10e406fb950df51cdce29f85ffdbae3c2994d0ea79a3e2027dc1f760fd5583b745597ca4b5e076db0af600e99e8f3c95625223fb4ff674a8c4ea8a29611c55ece77646a77e64e761a593ec850697ce50f4eb007c65d4451985dd1f0f0be97c9a5c645dde1472cf5ea88b3f198aa494eb631ab3747b4398e561543c0b699ebcf06f5efa1b3f90e667aaf38776db7f57663da6f61db139a6c5d2f46e6894e365e058bc08a25121da72b46242013904e6c8df679f6696afb21104a04b46e84668a3cde0fbabe873e35caa9fb435ec45399859e549710ef2c34847cf1f18e8acdf32288995e47240f86643840b1e18792f64551fab16025ec08c13de5e26764522cd9a2c64ee8b5d88b4921698ded773563e165fcf5fe2ef02239663200c5a813a78745d45dc26b58acd1f1bc62bade5bf398417210afb5000f7d2fd6c3917c20e79755e04b788c4121e8fa1accf3e9e42f0482b610a954c40175530807113be35dc335e41fc1231c777da4de727677ddd00fc29d206e9d6c2346f38984c0dd39bef8f0a2a1bde3b598c1960bda592e6298a5f56b8d9e10fe3250cf966b5e2c0aac6386e30fa231e8c75dabc794e6ed1ecb2ac87f810afebed630f60b96ba7869ab8404ad9717a98722e0a783d3de6d1de22f037106f276bed8e45e774830b5cefe0c15defccdd3e48186da4841e74b1b4877651d96cfb8d9ce6e4129de41101ee9d924de54c8b4bb376a7690bb4bd734b13498d8cb2b76813d29d0fadc916defc120a1ef4a6ab024bf1d5a2bf5383e09bfab9743da097087e5d3bd2334326ae7da7d4709082cdf0f515b687f166deecc2f500589bc8270f1cb4d35a4bb5a2ada886d8f824fd2f8e12d15e2204eacf9dfdc2e7cb1a70b82fdaa988fd35563b87571e2ad69c28dd1064fb889374f11e3ef0a18680cb14a0f81133d8d226b232797ba410cc2c8694776cca67672d218701f2d9108306e24d925fec7cb1fc2af56c2f8d1a83f6928517345a117dc133376f5f31b13cd13c2c5e0891de53816ffffaf31642499537da367e2c774258749f2d277776c0493a539f2086128b900b1595a8bc21026056117e11a3ee46cb469009defd4f3ab1250b97794f6ca165d8c65042c438393043294a0a874966b3a0a852a8161a91b1fd1ebf64189e4e2f86490c16b43f88ca489a2924867e0eea8a14e72f9eba8d4bf5fe0b842f69dff41a9ce7c8d88cc39821210e87aee16151a39b88af6f4d1973f1b2603284de72c969fe4b9fbe889e427f59fdebf5ec378c9bff54d5ed6064bf0f9d9e8a2f2f6f44a1b7fbefba32bad585284adcb1983eadb9aa7bdf7b4209bd1b0cfbb6ea0c9038c12ce4f563b54f9a4ef7a0652044beca55ae8adf045b7b60199e84fd939a30ad1c47ac18140be96565bd70dce22dc2d25f11ed81739b55cfbf7202f2acecb22fdb2a39096cb2d9394bdb7a2d7a7ca7f1d76e74103af95937f82d9750db1927ad773da3bcce72693ff4c493ced0d6545b52e407a8cffa33b262cad1476adb9326437c5565e230e3bf4a7cde95b18c9c4d7c50d2c22b545045d13b1664c8bd82bce022510712d3f98aa9db0c9e4e4f8bb090e1894949935be5cae187e106e1b1c0c6a1cf290e36355a61b06ee5b979a5cfe2f3aa57addc390509cadfe45a490db7c2e4bc754931592438a5d9846be954455640c0bfdab789a0fbc2d8fe9fbf517172e9c3c579abf8ffe5fcb332c1660958e55a1226dbeb03e2443e1b69d441fbbacba5e7491abfa628961cac457a9dcdb61f815839bb6b4a7e3b03d39e9903615d943ee2e5ecee77f66be6e6913ba552b9a4b8442a0d53f89b69b1584eb5fe209ee88dc4de716ac51bf8e3ae4a0b1ab405aa3d050465f204aa0e13992492133dbcb8f98f4170626449c740ee89d7c476c47b4115f1dcebcbd59c3f249ebfb98b5a479ac429756dc36dd494fd3defd38359f3f8f6c8905f4cea3a8e0edd6d405e38acb01d344efc9f1f0f7f910587a322ef06fbb07c2128714242580d7ef39e7e13536df6f68fde4569de0fd1f0371633fe38ef281936277420c38b798a4bd5e6107c06114f0fd78a159803df357c7d2a65238cb51ff6a1ae2cff0d22f092dcd393bb1ebaac6940f8d30bcd5fa63412958df5e581e68fad6816eeed175b8b2716fd767b82527cc1d405f66fc61a26fd1d96ef0c9c8bb3ab7951ba66dee81db3c1666a0b09a4ec1100ca902b721778ef5f75e7fbc8c616d7cbb341b2a8efd1a69f12273d8f389eced2e9fff4e6a6374b0090c6d6778ff1df144696ab8fff558503ec8fa55162405e749de2c1aac3d3dbd64a0b796e1d829855f38141e956fbece52f5bf6de40bfe558bac8a291b39f1e24b8475409448ab1f2e2fab82b3e3ae866089644e741ce4cd9c2b7ad8265551b189d9f9e2889cd867831b1bf06232cce19ab209f3d296652177aa6b8ff3991cc2bb34dd124a296fb5b6c894e9cd50fb3bc532cf5055640b19f1302e4f99d51180f371f77643230674aad195c03fec5683d47c24c49005d547cd22df5bc867b582d8df74a6dc06e91da712a5f7ebb530f2ee53e496a977f9ba8effa80fb2c57730a0249a68ad724bfb0543ca10f6265350bb0cf01343fadaf19ec33e6455c1184fa72a03f6335abce679d00615576c988f51ef9277da6b3e7cc061318764b3913f6f9193918b46164d134dfc4d75aef16c1fd137e99179f3c8e6bcc38da3942df8c8de67ec75a27275feb729d329d701d7c1aca9d13b045ce68d3030428fc063539e4cc758b9fe10cc72707f8c474846acf019c0e6922bc77f3bb4f09833b40d895d0a5f9516ffab634042381d0cf8a4dda955eacc241df73eb0ebdb61f68107c38badfab2401ddde9998fbb6323f84176c5db75de3dcce11cf0f4f334d487bcb32cdfc91bcd37dd2efb0f9eb212c982bbd83a21ac71a6a796aa97809f09be9017cf810047b75ce007c763d199806909f09a3f042aca0dc7f88c1a2a1b783a513c5d946eb21e0499669a3198155865b6caf9ec44481460e8c390da88c983a616679435b50e5426c294ab09421a5ab8a2eb2031593f003308b62fc5c9e5537af19ee1f213ab00e38774f0be8f64ce8d376c6a02fec840d35f585b702d821fb89df0113fedbb6f9b12f50d1050e54bc92aa464932f09fce53e1f8d6d322a5a9c964af616a14b07862d2e9b00c67881d4374b30092073d8a872af66e7cdaed05b2495455753b50ddd69a5198d4a7ee3309c4a11e9599baf10fa441489c27199765aaae863e41dfe2207da68e689e85502b603855d89223eeee5d4da1492abc866d37d33a7d1c04f35432d6a18693078791059fe6cb3bb32d6bf912a08cf4574234de9d42fa881fd60b556722226d93fe4b1801c0305f8dc4920d13b1e05462088b015f9b1316d0d3e38dba7ee1a067e00ae405a3a0c0e454b19b2c6cb770ad502642c7653a857981fdcf94ef9ff618c7a56ce00006e309c0dc933e3cf52e386f1ed753a67578e99d7ea504d0e91aefb396ce58ac211f1c576b69c5f27372b1e76d76bda8dd7073620e8cf4ea840151db7b2f7112070a57df77b7e6a47d2438a775cd2bce1f1d1ea35c61fc40e4176b0c953e883b9d2b368360f59cab540f22c17a892f04fef7bbf097df43c9b54779134c451b711f05e9f6493bf564ad88d35a23f0c420cf3609b1f629887856c95e39a9c789069e67d1ab9a16916031ecf129fd07e1e5fb0729ca3269966959c675eedab47c6d7d1a06ec7e6edef5fbe57a47f8504b7d80211c100778cd5a05ccc0c1b127d370f4d1131c6378b7de1d8d8a21e80cc6d3719f0a1cb79f78d4d40de80026b7362b8d75762e7cbc5c551b4eda040518c75872327b9686641534f577acc0d156b910aab68489422afb606ea5420e6b51434e3c9ed1463f62d688cb91ba9870c71e2dfdf6c73def3c307002aac9539b934e021f88ae6bad38f5a56c3007116797b38a0d7ffa6f01303e1db86708bcf83c92027b950af92388a50f22f91f9a3bb3d38fb8042647bd43e2fbe509f1494b48dc9746da265af5fdba6feeb319ed16868203ab819c84aa11ff9cd1d53f9a40f5489e8997ac3efc70540f006e06db47aab653ec59c52812f18c8839f520efe700c91ce34996cb170e1e6b406c1de7bf293baa51d2f82c846b82cace10d56d336e06d50408bc41a494fc57c9edfe81944e485706d7e36755c1a6d3b4ba5e217edee96233311dcd0ba3335668bebd5f8103361b0b122e271a7e80db04a982ec037a4269c96b41b9331359a12199982d64c4e9e2b4515ce62f1dd2a44ac0a4d4636852b7b4f34ab80b67a743aa5a8ddfc01ee29c273f29d033be568207ee4bf621d94149f5389443034581f3ef0330e939c201e7e164ce648ae9b0bd30d35603269cba8322cef25d900438ca8c8c6ff81a217c773285f7b4da64bd0ead3e2b623d4a2e11e5a6f928ab4a67f356853234d2a0854dbc405a1e8e17bca5db776ae498fd88557aa6d4cf53b6774cd38af593725aa9e8f80c2c5c56ff00670b59f492499a5283357e9743069d1a8cbc87d5a0316be6ffb17af00aa5341f5b003a433ccaa680fbfadb19264cd7d0f182c7afd3e8d4f67386cc597432ffbf0275aa6a4976b47ac7c3e8ba092d9dceadc7d841cf97ee61826cdd359577fa973195fc42dd0d5813ab1e17a6ddb572ce29e13f73e8de643c912b57a1d4354a2c50819f8b6834b27782ac4173f77724a51b5af932ca84cab745dc38fbd0eede5968ce490eadf387575ea4193cac07d4a8d272cc9285f4b8e3f971ad52fc6acad02c04f40ca135ebc7164de580d47f143d819b6d0a0abb8042102d32497f33a4f53f20a384c34b73a2db878e76e7fb16165cfc700cd50c6a1316280da3fe18feda5a12030f396905639f430198931de70449f00c57a33c85741fcc13006daee8449940d16c78282dc61706da94db89b75e7f84acaa11460bbe4a5bc17607ca87e81b021703650305aa756b64f7c76a3e51ecfc51d065474eb9e2669d0bf908b759662434d574daaef3e39ee91bafec21b6654ec9192c033a952957f23ee647be585a67b9c5e6715c7b53e14e53eebf7437b6a5aac5f05f64ba70e8d32acf2b167276ff12281df2e740180a044bb09b42d755df2cf11fe5ade0c3aa75eb4b9a3c220a1603ede767fc6a6203421406b62c2c3210c801024372081880d14b244099ef6548ecf3e841ced2ab499964294f16e541fda7b0ddcc4839a1219ef0a80b722caa25ec4a44d4631ec96ed0e93727e165bfa2ee2184f55428ac99957b01afef52bbb3c5677dd86dab6b9812cb18033a8fceadc6b1eed926281bc80b61d822322d0fe99ba3b9eaafcc87ff6db1862b75030200466121b62b0470e1d4696a21753b7a357c839f09f91b4172a2f169ee7a7aac32200d386eaea91eed7b1b05aa440ae1f7b897b119ace2b4d33fb1c71cc4f62a0f29d85f0768c0be46c9806c80c16ab50414fc5263d8da389714218c8a66ed5c14a773812ba094941c990c76abf5be7324b9c29a13e2ca6a47ec265f9231b34ff4752f8ca9ddf4d3f3019163f538cce89308d4bab9babdbb019e108490dac0ba15f9fba4f226e5f123cb842e6da5c5e484310d06c9a9d9f7f76a2a7e6639a04a14dec7f79cd2495457331101e89b8024999ca7901ba517aaefac52d5f99494e03dafe38ce3e7ebb00f07a28f7b5805a66d2633fd6b395d21c1d4e4deb1ff4fdd1336554f230f79771e07f2e20297ed510a2aad47da02bb4addb895e0fdc34745cead44645f1261b42c9fcd679d4743df735b7e476bb5d18ac2331b3ccde0790dd8c5ed0ebdedb2f434ec05c72d53d11b1c72693087b59f3e8812b9931696b5274f74be9f08705bd507134e1ddc6f184f6ca3b4917940399257530d015201b9f587988d582d6b6712c8e6fca792055a4242ed1732f3242deaedb3b588fdc9b5a2856d13c3be742b1d6fdfece080226b946d303aae880b98321d90a8ee19de0e8384cc0db27236737a4660f450997f4164331bc7ee2f4f28054a105bf0ab3e6102743fba08a34e1a6c6e4eb01514956c09cbe36762c66594bdf0a70eb33bdc29d876e38f6fcec0b0b35bf79a34ecbeec85e3d228678dd845421ce4dfe558839a33611b635017f60c8e5447a95a60711a991a9e1576a7cc3a7def8970b012d96f4f41125dcfc24ded61f44fe894737d8fdf879216739d1b603f1e0547087e67da66d20d71f9bb3d0bfeac1ed5e36d654438308f58fadafbe58e75263d7036bacc540991390c0f0342ad3ee3684858c153bb94cfc9a32f39512f4f329876d68a403f8c4e678e71e2aad94366130f83b315eb228675fc51fd4a88203fa47f80fd449035eb2bebb6f8d071a7cf1daa036d856cbf46c864562871eeece3ec8b59ede72692904a66599b5ec528bd2f622dc222804541071a3c39a9b7cd366db20a494c1a684fb889f848e618daa8f0801ecfc1a8fe4b847062c6b772701b51f8407f7fa12c52f6a0d529a9c2a59fff5e33acfa692dbe58ab0d861e1098e121092cfbdfb288df8f7155207d3cc547bbeb91322bcc851ab1ede5e682c89a33781303b126b6dc2c6623846934394a3794da9ed03c60b089f37875381f13e0548db77fba6534bb00b43690cd2876969ae39e866ea0d1c9244bcaae63000d67b045865c038ec96a25f3784a60ccb3e22a80c4b76232b1e20f62316433124840b78e08dc054ebb64ab0d25a8d161fab8748b006576f8077f645429d02c3c17120f2aa844975b81d8fb84be454e3e127a6e318b07faeb6c19ec25140cf810139610401c5cc47a3b29bb78c2e0ef36e1da5e54f0d8e941cd9daa44f89a58d2c01a96532df3bdd3896d7bb7fcd9bd1b3160135f8a5722e3d2ea38e286deb5cbfbff1971bd59d5697cef3e432ab73d623de866b747c7a406d957ef2d019f3345ff3b25b302e488c556aecaf395a493614821188b30b0eb1fab2ae0b9898a5a91b5d80d76cb6ba023b5dbc82087ef32c2620ff0f05f5c4f93de21a2940eaf50f73e7305d574ce59bb385fbb7dad891e0382893898c85a7ae273edeae13f02a27b79be774af56ca5ed4052be913089b936fdbb82802affed4290b3f9fbf5db98c9b0feb88dfeaa726f5f851a75aca8275989a6bd7314e096d08c89d167017626bf838d0408c3730cc125faa7be30c63de2d89b9c3ca95a71ce4cff43269e745b5d7b59cb7a5cb38584a26600cb4963027514c44dd3250a3ea7c893cb2bab59701fc56352b12adb358565b681c73726bece7c9b80fad25546a0ff3b3609560c5efa0042a157c26045822986202bba5a9c57a871bc0622e130700ee01f0f22590687199dc0502d3c4a0e53ab0a87416cdbf6f8e806ca311ae62bfddd3c761172ec18abb548264f6cf4154cab19d9ec6e8d0c1979daddddae843bf38474563e6a7dc394d83f6b3970cadf634015ca7297e8b288f06cc5c7116649e499cb7660b9e88fecef482c1dcef59643d9c581fac127a986eb45a27efa325d75d51e4094bb8865b6f121c74f8e1fb33719d7faf2eafa89ea5e257507e40795cd64ad5c3630db666b6d72c38abf5ccf86568a002bb3872fd8113a258d8ea92e426773cecebe09c59505ea8627f12ac2ce1b3940c7e4f9668e20a8c7ec7cc9d251735486d56a024c83edaefe98ba7c08e9a6a71837e6a355f57b5fe127735a542f1116c69123202957701c98ce32d6d5276b2711f447af31fb64429d8301f555303c2ad7743763ae916bd1227d76795bd58f8922ab3a5d3040f39b3041f34b87d0e649e017dc39147bd00e768328a318bf6de13b6a14d7cb0c95e6e768dcb06c9e73dfe373a9d87bbc2566f3c1edd6453f1517ad8fd08ec20f89e2951695a8e2523b4131021a23b4d803b840c5ee3bada6c84961848c2f72eb62fc5e13b78fcf880dbcd2320f2483249782d395580982217e0213bd0a1e702c88031b4e234fb506a76dc20d4d167654238027d7dc0209326036e419308981ddb630c7f07b2015503fefefe2fbfc79b47e95ba222f0524a44d19047f880a558f7d7cc266a662d740fdcf60a427ccbea3901028348ba2126d59c04c6cc1d69f54c045cea4507e29c97edff5e43f21a7fdd836fd0c2ccff9424a94026d2c7e80e536480d6967da837c53489f7d988bc6aee62321b0d59d04d81a941f74403d49d7ece27af69fe0c98a807a098aeb6430d3e0f7e975480c308d7867d49c16dd1398c0ae9404ef11b6e6fde50cc5d339996101563943d1df132146412952ed23c1a7e7643039122b04d138856a4c50c20c9516333a1fbc913a571c92e893a7d5455a6715b88707590bbc91379f7a466a3afdfff399bcda4bdad4c48a3dea4b4467499ead463e927dba7fddebd7d4ff699a5b34dc568c01f50078bc6eb09c8170497eb9ce5e5eb8832822e49a5002a56eed393dcc7dd9894d853eb7b66aec19ba70453ef4351c47c42a0de311a861c9d2d8743950713ecf1b4f6a1c03ed648420199283eacd044c7aa3650b8df217df66a1cb58fe937db568c8f085dea0d1591305d0349556589a477a5d00229564bfc946e46125706820cc896b4250f009d2d22505d105929b4ac970c55afa339c265181192dcbb60979c993b0d43ecd904c60bf2e2de23440353c45d8275e3d6c338264d62afbafb72d3ca7f072a2d2f7cbfee9d7f01a7d897c31d534678edbefea19a839d964f60d2dd48eba878769117343930116f2787f015332418f6f57aeb4a5d9384f4a980e6fa26b8a32e19b4010b660966f51b8d8eb37dbbc070436d2ddabf881b8bef7d36bb5569cc42b7fa08f0116cf1d71623f26498a1cacb69ac715643fe8d034044e9ec5e99146df605083b4601e18cee93be0b54c664f75b8f7f0ff193f685da77e0af2801af0b11eeda1912b75ad70d85c0e78d3a8339b5b8666838e24e7557f8ab48c4736b3aa54234470dbf2fb826ee8e56830d593abd6cd532d9762c62640bc25f761dcb0034b51e9ac175f75370d82616571b61adcdbd4f86f313d1392564aea8ec6c4bfdccd62b429001d63ffa7b2c182cbfe696f0d2178792339ef31a64714aa97d6e9bd586ceadef2a16011b630085348e694df4e185c4cbaa510e77ca9b9a31044eee93f0e75fb42dcdd3f5e197e3927a3a5d8209a1068027a409715b671f857adc080c153639583609d1fd7092ecf64181803929964013de4db3b4480d972c8bb0672289567ea47a6377e352d66571a735d9e8e470bcb93405540254e146883879a3f6bdf57307b17982823e03944a7135aeb98cc1f4e4d0ab230eae945045ec10c90f086acf5b1377e01388100cbd60be66634a89bd203c10cb81de516a77b0b1c9163d6051217b3fd67ef61d58873af4fd48d8be0d7a0a911eff8c734502723432ac23da426d6b6feed73911637fb30d5172aec311d1fc983faa3ffd01bbe7e2bff0e01efae258fbb5ebb67e86f64082ce1a59a363a5575b6f97b1f1fcfbcca33425129f0a052294515ad4cb28228eefe25d0607dc74a5e1545b8b2db744241ec56cc65d69d6fc2fea24c349d580389676ca909f416da009dfc086dc1099a2f9e44999e72b289bd1fc622ae1b691b8977e5113d717ca0095fe6080211399d1dc4f80b35bba7845633b05e335dbe83cfb45730482a267f4d039d9c4c112902f38b598e514ae300a99a9c6994db094a6d95d9db423d852ea3400e99b88a57e6265828db29dfd7ec4c08b7e603d1c882b9085c92012946a61765494b124986287e3fb4c2ddda05a49c03525942bc78057aed04c6ea53d95badd49dbbf8a0b7631d8c5ce363c28bbd92686debdae0dbca1e98598b15838b99148109c630e23a9dbb3ee3ff02c246ec0fe68c0e37c54d1f5c5339f20e642e709177f76100eac8f792878fddff2783924381def08bb6271b04d9a7934207510592534eb38a95b0fd444d20d47ae33cebe311b1004a413513dcdd671e4a6008404ec7cebede43135448ac8e79f30df0eadcc03af8c3b938f34e8165ec56c847162818c2db0b5a31e99d72a0138c5ff9391f90af2b38b77fb449dff0ea7f79c9fc69a1f83c18c3c6ef7ba24ab9f1b786ea42d3a713449587624384c85ffd15873b6f4e182b276b773955f2e34dc19617ccc3b1d64d0ff2b15f6ef0f3544320c22838223bca75c34bc2234c27c05ca48d7eb7a5108e283109dc54176eb57a819c8ceab1dd8416413d7f25510637672acda6ff00a23924f914b0aee39f64100541afc4a61d767cddd2c14ad14b168a96ede62465f5a689b6be0d13afaadaf0dc9bd3973f486df995cdc26d540e05b8fbf97b394b8a3b811746b944cd820f8e1aa320f5ccb8644ae9e4250b94f25fde8e41a35c7f3be2028e45bc3b02dabefc372f3bd63307862f5f93889b013ec1d82a3829ba9fd593f9d3c6c4bb05da4e4d906312b16f8615d600f36dde3cb98885cde6c32b9ffdebed6167a23a03afe3c3e4a6a0940c13df8bd9a9195f9c628d0d19ec1af44867044ff88c93161ee269bad72ba322ad31fecc7ce62b3cacf062ccd40c9f65b45b105e19aa54a0e983a1c672098af8877d1b3e7c6c10c3aa24ddc9685493a9d48f72168d922349ed267435a1e32260e366798ef4b092c00aedba6063c5e945ea4a4729dfdf285928aa1f0cb423c0eea0416a8e01072980f257a381f899d5720fdd9c48dd65f9ee89d3ff86dec0de0faea3090043dcc853bb55defc7d1435cbae65d48b1bb721ad75ba007db9988c56941353c960055626764b7360ebdf346507eae4ab6fb9ed6645020426c15711d7ea06f037821aff0a657597436100cfeaadbb7a33764ade51c6e4c281d4f19bb8e03057f8d4e318f47d19964ba25307dc082f2d840ef47ebdb70cf703b8aaf6a4b620173b08d64abceb899cd192a107bfd4a144bfdab08d174e40d43995ae83ba42306644d49e1e758cf713d4bc3c7da4a1d1ca35c1c0a60eb4db1cd4773a042b6dc2514b70c1447e731473c9cf32da105182df006f8de6f9841b5be0cd54ecbfb6d1261f194320416786b1fd1c0d5c0d9c748bc8d39e334850370903ed154513adceed8292676b8c6229c75e1a21fadd8fac8b8c9f9f229e1c4cb2338e805f6a79ce13909e7d07741322e1ffe3709d9b0808cf77cc71a675e11656d34cead9c553099bba87bb49495dc03626b41b44bc3c25a0641353fe860b7f99f427f4b9e809a96c429a2b57b8d631a865715ef2643299b5bc741194fefcf08d5404139dce7ce7a5f6a9a861574904912e1e24933b4676a2cdb34fbc87878819d22ba84147227dfa3087ead7fc3478783167262a51a722617fd6d98a80750b4a29c7a9ea33845f86d890a2da014ba38928199ef9a6d87ef297a9092d3f03b41c5769db5f31c1cfa80c1ea8882ef362fde9a7837dc3325c4b5c3a3b7c2d62cb845186968c4f0ab9c2d11535f46dc71ee021a65f5ec661430a6c5d51baa33614bbaef422ffd5245ff2ba5832d38f175bddb451abbd6ce38aaf2a284aaad71805206e719fcafae95c261551943c4e641bfb9805c17d818dbd51e678e376e914d33a541c7a8ddfc7f221896dc70486e6146fe4c65c6747055108316b4f19142c4c9f32fa789e1e3fa54c839e2c8b1006b1f7edb9ac4e8548ac868fe4f8314bd381c4037252a2b0672b67f1d7a50af6e4df629da8f199fe267ea1b40b58851c724316fad1d50bf969ad7f0f9432bfbfd2ba2c7681afcb4cc163b8fecad68e7fe668cb80c7a348560253bf0e4f9c7289d6f65f79d76df24012df3dd151c5db5900ed4ab4e9769ca80322eb590c3342122c2722b75f08202e649dd7b1925e20e304d829072dfcece0d42cb21cce99af74c2cf954b758f4ac0d70dd1c5c5dc38c02afa0ba0703b00cfec10237c1fa34e5ebb47fc8d95b8384dde47da69e69d88a02176f17bf38fef145ac5e29f8c3da297ed6b416ce2de5bdfc1414d2332586965871bbb87da30d15b3fb9fe442770fa6c62215b48a293b9941c577317ae5e9c5f7291efb2ac49daa35242741404676511dba72630bfbe464e5e1f858aa0f5effaea500b75d6a27bd05a5bc760bc8f056548bcadf3484f56164b945ea514b78a446c6fe55d28da3a5fb8b2423fedc55ea0518bfd70ee7bfd167b8821e658078f146939f310562b4a8eda08bb2ab78f6c46d073f96787938f73d96d402d80990848c49c747a78c82016c9deef7e406a93675599d34b8f5d93da246cab4de30356645863d3248ac295ff9c74e3243126bfafa14615d3a20ad42f71c719649b648031703dbf53ed813f0e0218c4b9385440f22b20617a03b56f40a796a9fe091633554d9cd0f1e4ce19adbdc2405384c13ae69e2659c91971050d01ca4f4b507345bca45cbc6c186ab449210963c54c04b78e598952ececed64d89081d218d5ac08ad1d41625315356c90995848f74818a959ed48c120aca561d3b7b34773c5accbb0d53c40e8cbea700a23865465360b7e59a3a985852b9eabf0ad23520a8f0b471fdd8d14e20d689934cfacb76857b9021df475851b5eb9cf25fea7965c6614e3fab8a7b84315844844435c613def99b5910f113b26df95c1200ac123d9c0d909f9e1ed7e8bfe78e4753a17bb08c89bd50c565924a76eff9043857fc5c4d959f705433e9d7949dca2ee0022c454af11c00fe15a3b626bef2c8af6ba7fb631b3b94fbf4b6e545927abf1f8a0688cf6ae6f9cf9d1e2b45e1d56d83898a8eb0a6953e8aac893e0f6cfd16617072e07f1932ef79e7df08b701f2310fb5f5d89ebb7315b4c61433acef06d7766d48e1b796acd820242bff0ef1ab83b43a54b1e20fa68266286485cef810b5483a49f806c92f1fc0c1b73f8ce041407e8bb085d371c69e49c0785684f21fc0b208dd7002a5e4cc0d6ded85b227215c1157f711484211c17207efab4446b08be83cc15211a5fcdda30d08ba1a6f8181dca67cce09eb8a0f10587a6370ce3c34f05c83ee823c221b61a014b8f381fd3f85af3a7ede0df1232d9cdbb2a476b4547935a0a6533bc12c94d85a88a5ade477ced59af65e99914191ce701aa784e46593073dde8bc069548b3747cacb2b00104ff94efda1cb208d1c2fa659987d7e9bb7103c92f326c9b17ebbdc58d8a33ea67dfb5460721913123b53e065c417aaf54ff3d08d78e64fe44c6c8e23f5057665b318cf7c16221262d514142c2d78b516619259894cec10a3fcde84b75172098d56d9c9bec8fc34ee5e7039a1c5b8b92790f69c29b726c8984b89f399b15f6e7aa5e66ed661a535ca13ae5659046fa3adac896b57b01305203f8afe087238637c3a3fb24cebc3aeb7d045cb1a2f5c4c9273d96848e8297bb842eff2d6c403260a231e6e0e9ee98c47a7281c26c273b9927fc7827c003da7980b1482ceb0e12df4acf5ed52d71746f5ba46b181581987a3ca598570e16d7be6e0da07d945383d0dc98d3bba4c70004e02e58eaf60a1d0aa6700561a34f23ad3a7fc392827a4a9db57dbe3ceeb7f272b69aa67159afb53df0a64443d7c72470c67a3e8a881043fb3ec1cbcdb6cde4b298e4a288b7c034f0c9245fbbb39c3f8b8a245ce12e47a0230e7b50be35d7cb8568fc1f685f711a6bcfdb3f11d16f12323ad9e960b976bd606e1711ecca697bc8bd48e28da15aed30b45262c282e4c2bbfea7c9ef93967e55f4d557daca5a3a7e481fda15ddf8228a9d22d16354255a834cd15435cfc740a041495b25e545670a9c4f2e10772a98966d797455c86031c78b4d8e35c9c95abbb2d9f48b56092d4a7597169e31b499e53498b02023446e59d0462551b9832d3d4b42a70945494780512e86df66bf7cd6fe55549ccf888f33a39a47539a80c4d9d614f5ba39edd644383ba6fb6257c743b39ad72f9165093f715c4477d86d06c8df310786a99f46ebee5a20ce77ece83ad6e4e9cf4a17f2e48a53fe8f3c9d756ccd52a3c1e24f3f10681d39036cd182c284c4508e9a5fbe36c07a2ebbc885806b3882725483b0ac412689baac96c040f12b6216d7ea040ec28d7e764a9e40628543a19706d0b8d1f27495ae994f5541d71df507b5e34d88617e4343cc8f0b93dd92e295ffe2246d2ecfaee9fa5b8e0efc554c84b75788c89cde5f7f5eb5cac88f4d4d87aaacf2edb88736651ea651267375489a53e1875a691e9e15b5348287b46f3ea37a2fe4b794ca006a4bdee612c93c5f77da661ec75e467c437e71dd413795e4144a3404781a5cd68a099a79134b901b265fa4a6b0afb5aebb0e06a9092050c3214df21b89170ef46e5c269a546b61999c25ac7dff79f699987f3759d0320f32a0d3ca3868a4bf8a6cbe88bcb843ae0b1b7507841e40d6d91ea81382370694debd52462f39a5e03df3e319b930792636dae7c29f479d18bc4f9d0a5ff1f3f9451671f5175b26dea6c691bc4ca401ebf509923a39e0860ac54ba1a04eb184593c190fb6cb0c0791d10810f2956a8e4cb41f9aebbde5acf42985acc851ac39266ac185216a21a4c4c01404f599529d62f5741cea1e6acbeb55c2fa928ea9d57eca9a9596d8c4742fe628bb92c03b72d3cf3574db5020ffc566f0451ed0a287ca2d19c0663b50cbc3ade12fb2553e7b2b6a9f437eccf86e0cafc5982503f59827b63e052c7e2e2c13f08354570a64e1b0848ed5da10cedc983734e317bb2081625c923f31d1d0ec9a81176c7871f047b6ef5db22f1d21ef2e38acba61ae1a81666b66982427b30c35a4517c2a8439fc0d1015828ff7e545c9a12ef074352c285b036fce00b6707a94924f22811d10186562e695ee2960ac82952fe624d06364ec98a848377be836a8f82054fd7fb858fcf1fdb20f3e0ffafbea48d0219f95008d708e2faab37108fd7522d98dcb72ac6ae09ff85849ab74dfabbc46b8e9ebb1dd28a106f36320b0b91f2883f38c93b8d3e396fb1a5e31c5aa97c7d77d990717c5303d80c7d219d39dff7772d22c2cda42c5f2703d1700d2389fc3803ebcb04a2f4ac1850b0af909809094eed87c4363a9e41602961004109d6c1a39520417ecdd0f05ae445a43c82344d79d2b309e1655b01824676af41cc2d607f97c48a2be2b6a1f9cb0d6ec0de4ffda25b6611724922f6e0ca64c9fb4e56e2ce69e025343291a7d0035d5ec149c9ab67e16098927927cec1cb05d46537cf5ef8fc5cfb2ed01344736bd72e26c6b610783988a44ec9f441661094c0b173fe3b365a2f354d62ba019b75e0dc9366f96cb861e281bf71d47baf696496cb226e1d5d005d2e60c7e9709dfcac7bc724eec0cffe28af618ccdde17b8989d081de4f829cc178d0ebeb2bfcba2909cf91830c5b84b63d018c566e0fdcd4c52416cbbf56954012650f4ebf4cdb76fdeabda11316babc315f5d3ff9cc16a4bb87c61778d48a3473a3d2538bc364de13ca89701289e4b13a7625c98e8ad9b0ac061b5ff4a21cf79086737219dcd9657ef8fa9c8dd4377290c650a8d4cc06c8dc69226a62a2fd9c04e64069cb5b5661b5e91febfda829d34f537be684ab840d1611053324ce96468de673bc523837d3f21ca4474ed14fdef89aa091eb9fecc225e066cf52ef33ec8dfa965a38ce68d9b65114d5618d9524ee1f22876ca3f66d5c3b6a27361f24bf8a729c7a5867d5b843ccc4148bbcd12ffa80e6e8fc9db93c0f146666ce19783cae9d06a36011aeec21aa8b9714d80710c8211391a5241b6f1805a1e24e604839477ac3b456c487dc9a46c136babddda0686322270388085e537fa3d19b2bad8348f69dc610d986813daf38b22b4a106bcd6c584fca3253722206f37ed02ed22ec7bf6698bacf12505e2822b48ec3f0f45183d8cb3e584afee97b48e3bd29d0437da536675466cc3094c109a8fb1335ec2ff3dc4cb9f26b76937e936a634b365c49876cf632ffbf303bfa6386fed3a4d20888d31b2812c7f60bd45c6f79646d9eadd648b37a570ed6f0755ab218256dbe5f9560c38e7ae95bc4e65972eae95eaf4fa748f3a98d85b318c1ca4b3e5c254e1d8f8a54809272773252435d55c709707a4fa26f0f78e4ea5825a9e3587cce270d3290efa8a1a5114f7f40308c01efc89a98854a4e4bc2ca1e8e3955c3805739613c2bc5435f957a17517a5115298058c47f011ddf90549a177dd0a2d07770782bb641dba2d0c2660ce1a656ac9cf9942b86b1c68d6d8df2b70e0e19436db60ee5c9477ead7749b4b24ba088bf9b52d5ac9194faf7374cb9b40ec5a7d42482b6ea2cd46e5bd1f27e148d5891f0282dc0435dafce125f9af08b1c0054b1a4e38bfa1729893b24cb9a3d6dbcbc97bcefd294795ce6a5a02e11fadfd6e2fa8f94bcbacfb3daee9e1126c07c57f53ec7720e63dd6b29cc8fb094844d05614451eb5032bdc4d7aac69d643121cb2d2304ec591c06745c766b76a9f1fa76f7171519bf4d1602aab9351480aab16a38b99b01d84ca8f658e744b7c6ca83389170943c195c16575ef8a9841947a38e2627162f3d25f03a1637766bfde1fd803340af136e94c6610f59634bd2aac57029c71de631fe51ff2dd068556fc77dc58cead655638b56a10761d24f13788fa396a81115eed1ea640af3abec4a55ab082cc9480128bf04e73caa96fa62d97a76220d68fd86bc70b674345b25082466d805a818259c0f97cb7462cd7c8bfc71d99aece083db80b3eccefad44d67147aab68480bf2f23f632bd8cbaf42ac914b916d708864a605ad12dc00c17ce0c9639146dd401c2379e7eab9b981ab124d57cf0c7889f400d421eb9dd76649c7292566c691afd730c7f285db17d0605f69fa7dd516d05b8c9bd179786254c863df29fc62006ef9bb9a5d2b8862ffe60e245cd472107c708aad37527e585406a7db3bee7abbcd0744465267752c2a41f53c2203db62239e6a7fdbcd82c5b47beed0870b18c545434383259e769a4fc29d793d0ce9b9e482b22d318c5189dd317fb5b18fe1192df298eebed9b6e7d165c923c61748fa492cb5f309de34d73695fe45f998a0214579ba8691ab5adf44497786e8d7dcb9fa1d3fb394fec6b85f2d347f6e8e7a40140bca2f242522648c21fc75e1cd19c23e8c3875ee3be486b4b5cc263668094a10f800322a29e1ed4ac5aec50a82b394507442e3427176712550ac41de0bc60799e9d2bb2b976a02a02699cdf700fae17f7c7ec97c74bcfd5ccc9a9cc22ecdb4c291ce5abe13d9c136566eeca12fb51024c6049b8659a282363dba468170e381f09987834d6ff65ca469bf03a5c8c1bb5e1b06ef1aadb9ab845645127f9fc1133fdac40e73ede099165f0af78b14d531ae223cfe240963f7274d88167c591e04bf23c5b7dfeef3515258c7312dafbdf54f821428b1a4c43c7533e42e387a9e5e7f27ac9fd3bf67f101c7091d17ec2f3d731df76d6dc13b1fec0bf27a270ad224684410c9268d12fc5364a4ae0cacac743bd522f4b918119c3d0c88db369fa7cae445319ee1c13286e90d00d891b559b89277df8849aa5a84a2ca787aa0614cb75e5d9769654f31ba14e2fe1588e2b25cccc52e15528e1ffa814f6142d02643ca87e0b8dc24a2d856673556e1dab4d36817bdb9304dad04f66745c061585499d27496cc8aec44932a913bc33e3c24b914c18a728d487f03c24bc1ddcbf57c8415889d1d6abb74e39d8e7d5f31f1b6435147d64686c634ee7f265dc0b7a4e95fca2b340d5a2b276b2827772343ae37f2403b4b499b2eebcea1d99e8920c580f59f5cee6d9a69458ad8bbf55600849a45b8f38cececcdce816f65e518454fbd393304220b4dbf1dcfd06512487bdbe27ec40ffe44c1674c44846f56c12918a8269d2394fefca94d33c564e122c9821cf023c905ca0356b455511986341326052ee3cdb0ed1284a66580dd302d81c9b969c716bdbac039f12f9826d3800f1527cf84f2d76660bdce2f60e8f0fa43ade865569f2d1daa3b3451f273b1276c8b1a39eff7885e9ba3a15cd5ef1e692e16b173ac7b8c4a99dcb8094bbd5cdd3dbe1b860a26773bd9ba8f62e65e4e4e6723ee0b57c91a1e0556024361b4ad78d8058809ace0d0f718a6817bac9f28d99987746a1a0d96278c8a34c048670bf75982bd5d22b2439db79fffc1d5697e8670f5f73d6a6562b572866ae9e8f6b23d20d09a5bae2587c8fb819f612261c4711d9c8101f48cd8251c902cce7d9dcf6e4fcc90e9037278f08c5ffbe6e9031584d5b3899a15ad61b294c867ad17051d3e4d69789ccbf310e4f5abb24193e911af521a066760004bd2085c89fb18ee0dae45939e782178c15127f437191f513ef250ffff3e1c457b664b429f91b825b103a824b8bd1757fc31f6266dab9dffac6211a1820dc4ff731a538fa06a84ccce8ca7eaaf8c315ef89d9b6d508ab56e1bceda18f58c858d48cab9533f16dbecf708b9b98062e98af6f230943b341e4bd4db74373163c30675483c0de6d2706182231b928dd729959421370278b02643f3beac71e95194f1be913ea7c212cb0bab714bd429cfd349f6af144329103125e4a6d3dc2f7043c48958450b010ac85a58d58d8543473db5cf448e1ed0f1324e371c3e3b306ace3749d47c4197c6162137fa66a46144ad1d9a885241e8eb33682561c7186f94696afbec2f21453cb8bb2be0238d68eae2cd7dc970756211d3785cbe4af71f38f9d1d42d5291a9a18888510b536ed6ae8bafba15dc6afd98c33ff05d298b64de9afe8765fb588f75afac02ff49cd69b5cdb5996fee0fbf0e48e587f7c90787881a2dd37de47fd3852f2ba21e9b1a64d4c1173155e279105dbcf8221a137c81b37ba93ddfea3e875b594b22eca656da71f35a8515595d3e690dbf0f51f33e64bd75012fa990802f82574f81e107c6c567e42dd153d71660f53dd1ecbadc6b6dc3f106ca217df1433aa37ab6cf23b6c6608912fea84343e7f7e00ad0ea436fe3578fa23504f9a04f498e68c9c2a051cbabcbd8978a69e8599fa1c8ec1420a3047f21763dbf743155c4bab20de8ea840c5905e9c47d7b2df9c6bd76539970fb9d3a2e4f7449009958e3a0e7bcd8aff2128f895e0d248ca356b7866fa4f8b5c21a8c706942ebd27130270cd168f863f8b56a1bf2fade141e1aace129d01f74661f3d56818942c5da005d9b0a004cbdc2466974b4db9e6f1b7abec9b73ec1b65301ef83b6c8ced6e7015544e85e4b38725950c09831f05ebd2882ca94f82288e3ade94d3eea87a9a27374ccaca6b4934fdec221cf98828451b7d886c4aa627b57d2e23fe6245d039be1a45010d55552107d372aef2e33e969b23d3441a0b124e6567e97669bfc4e071885bf1656163a2b64d064f2c41b7b85f8131cba0a749dd77e99c884a3ef18756c2a5e368a47d83cfea8ccfe654788480d4b1ca2348002b23f8afa05dfea94093c3342ce7a68fb7b3f8a5301fd7346456b09268e76f3f575a15c8571902c1752c165d9ec3616363e7d9a5d1823b84c5416e7bfe309341beb39c07aa3d5e69ca4a398626692d75f8c018a43ce60fb167df0a982d712c09dfc14c81a2fb2fe4110e22c703b41d013c7ccf1d1236cee846e93639bbb7b5ba8259cd75c9113dcc8ddfbf26b4f892c2f5b3716c86a2d985b87b0464d9e7b07eded4e176b3339a217a078ef0e6f0444588665035df0949bc36e39886c38e2ef21765e94263d2aebb8d43115eaa62c07752bbf05b8778b11c73cd326e42b83237e147ebe9f37230c591400b6e2e9ac482fb7ddd476848731d832568130925a7e41017b4f9d7f25fc4ed3ad1cad07b0d87814a2632875910a4a045c3be3da44a52a136dc8198812310ab2517d58f3a73501b1642cd26dc03dd6ae1e0d23fa6354ff8b9298c4ecfc2aa95d722bc15947cbc29171fc6c127a0217e329c229e78b8a09f528b2805499f06a0096cf1d88a755767742b66511ffbb0dfda0d8c26a504d950bd5c9e323f9722d421f2872a2d4031c13293e1b7e0e0f9d8c1be9d13d8eda74bd6bbdb7fff8a9f9d899bb1e2a3a62774a5bc963fba9b50e6e5a3dcb77891d7b352ea77d1f0d3e79a9d8c44ed4a9ea8f8c931308b644468d7257c2394dfb2604f8caf2e56f55bf7977878b88b0f6542e36b793442fe7c2aa9871d0391ea9386b0fb661578523bd6e26124e229f5e68640635a448d7110cd9d4b71afed45eae9348aa4c6d5e5c8cec8903dcc8173c1b04a30db8ba776842f26994744c9466af5f7f659876f65f2e2dc63d02fa3fba43252db821326e70b9b2d15a03fcb5d71c38fbf1c3f5a760959140aef48b5185f9a1e554a5bcb6eb5c38357adf7e1957a28ddb0e2f215f547618205ff32351b10d99e1df0b59c69a518875561f52c222284f948937639ce9f3ea5d0883be1451abefce55317d356f290bc409c48ec68226717a9a14da462ab1cf6582b32b9a7748cac8fc93923a793a0dcb90065b8df9836e609667da4eb645b846bc188fad9d8c163c433f74f419873e662312785dcdb8c24287516820c0a03473174ddfdfa5b601dce608f484442d32ebbb4eb63bc5eb70047e7dc0e534a3fb114b0e69cdf8597fa6557b55fbd781e1010ffd7919339d7b3baff7d099ba1c67de30484cb473ffc7f87a74d20e5cd4270d760b3e53a53e6d0dadd9baea6d62f6981dabfb5a2354d5b36a7416a9aa5645238eb90f7fd9c6d31b50cc56ec89e9ca07a7bdbe460515e6709cd3c24050cb5e968dd6108bcaeabe802120ad9a63ab2887f9b3304249d4fec5a89cea03ad6cfb0c9224f62bf42543db57c57f2c639bfd291fb9c233cd09659aba9198d220f6882a69b18b9b2525fc6bb9bcbe35e522546adac03744cd9d258b26fa4809ccd7d5c795c32ca77d788641f5b2119a2d6ae169f66a265502428e5fda306b1baf6495bb93504b0e6aaa01754558524fd63079c22efb7cc7a87ab38d9690e4fd323ae2329ccfed30c4fa93766cae10f0631b97e610ebf791292eebce23478d616437b7996ca22c0e6506e5695ff70e1eeaa6d9117925aba75fef50c4f6ccb3bd6b197513d23bb692ca94a4922f27c2b4e96681c98c8d81aeb3fb43abf33a962a0c3a5f83fba14c37a89e01d104bcd7cbd2ccf6ec540db3058813e621447ceb0b33fc1d25d4e844ef7c61322e3ba7ab89d47b4056590a521cafe8a0fb7066598be2293db5e8c6086788fdef78f582d2c5e4168f0ae0c8c017e6db9d253216ffe200e6ad2999759592b9acf5f1b6a7917b298ab4fab1f836ca8d274c9ba68bed77d6db43fa98a3fd8b701a8608d6d5630c2e0ca55387603ff91b63df6ae664a6c4440535f9ff5ee5c12dc5e826da0e78528e76fe5e7d5f3bf4fe7fcec920c2a41300b8a1bb6d820776889ce28e16eb318301217bf337c6dd7aedfd5439b8d2d40956a90692015fb28b063f42461430a6e1ee1c8075905baef3dc19f1ba0e4716014b3fc910291345a6af5459139dac2041f68a9167f43a88f21728e614f4e6be3218d5b228873cb79775847c8979679f5716c7d98ad51c1b0f2f1fbc26e8d816b254906ccf7579121fcc6b852534fe54e05a53a78fcd836b0bbe96bd4da3bada3653030838e47cf3f609d1517a73a9288e3cbced5557bb504a3f2279d99687bab77e207a9b934d0c346d02406dbdbc34ce1c2dc0bd3f8ff49567fd4390576edbd4bff11b91f4a7a3f3dcf4b882b59f475a870edb0730a55936c474b24324225612351e25f72660105ac23ea23a282f649b23d31bc6f36bd15795522175fae9b8e2c7873a6bde0f43e1927ceb7c752c40dc7f0b045c5ca684c11edd2e0aebaa81816831de522d523bf7e50505162ce2c84b20f43a0fe4b1eddbe8a03e11a16fa59dfa2df873784d90ec2f1b6343e86c99cf7bf409a872cb5d07ac56f8954c7b0ed43c8f551d1552ea327cdd0050c72787a6d0f0dfa1e5be7742e0b1c68563ca17fa342b25df53e287ebc072d940029417dbfae3cceb3da0b2202bca57a4eaff1238eb957cd3f98eb9c5a5b26e9181b30486b6f109399567db10261f20903822c4f37ddcd2766ab1662dd89845007c36bde0f7046ee13c8b90f336ebd6d66436e48ad8658410043386c94683676b720ce5274319f951a8fdc5017597f519d5bd9fdd96dc51ab703fa94adef3e2bc1ae1d24d2e814e0d05474303d4a73c439a5517a9df2cdd9dedf56f89a12645e70bce107d76d7323ca2cc24d50f642fc98f3bdfb13f7031a3cbeb0df5364e27f23c12db6a53cb0fce89ba594012d794036f4981becf183983a998ce5145b2a016a9f0a879f2a37429ed6d2420cd7bf68f480af8612fcc454b2b9390c7393ccdebaaef9cab432a926c47b19ed8c21325c615eb36961e26891630db4340513851a3e092136582a3c03d5795321db7b0b43c542b9f26c0099c66c84c6e16ff31cf55ab511bff23aaf72b5234200742f07a5ddd1e8ceace3ffd0b6fbdaa130bdc715f9bfcf62916fe569ff336fb7b3fc5120a6c86cacf4fdf899e463324bf00e664cc5bfc9c1f77d89f5949852be454f05b50824018b58a6506865d1c1ffcc97959d5eed436a631eab8865f276c310776f82ea158ac1454719c923a6a70f88edd066c4d20a4e226f02c5d2efc4d351bf6d0690487af7ef1cc572534fc006b355fa3d7bbc3f8facfb2a84e6b97b2473ac58f6e5487bce322d1a6e853d14e2219406e61657bf988815a7ec81f49533d150f2449004965af1a33df18c910ebe2d7d0271111f8a1dcba3c2584270c3bae7f1441a831e0aeb26efeb95c2b16fb954a4e947901b3a00e2baab667f8da498c3dcedff18c4a90de4bd3d02d1055bac7055afe94514cd6e255d071f655b4b2097ddab7672f8f78ce768024d1b415f575fb19b3b160c0dc7a02753651d26b7dcf36a0c95b9d7dc522e3b79adfbec28d2e1824826e1f017cd8dd2c0dc73e3c0684ee00d97492534dabebeb7a5e55bef87df55b42c74f883530fbb19ef56df47ba18dc6ed02e6ddd861755aef67147bc0adfbd14b310a48b80b1c2aba79e980629c5238d063f53ca43487ea8a639de301d38c84fbc719f76d3cea7fd02f7d87115a0ee793774651dfa020c8c0cec5f1ef2c139d32890117ef9d8d6d7804bac335f729ce062554f9301d59996795a6b44ed30c64d6a1bc398ca8477aec54d2d54cde2e5c43eeb6b52f5412bf3dfa0debf8b46eb050ca8bfdc6d3fef78adf713f2a2ecbd224951bfde92ec752610f16c65be6f8070db361edd4c8e3005344735c78708cb3c8cfb9855daf417ad8bee15df83f56ffff80c0f422659a906f15953f30a0ca9b120d3d0e019b41390963c2e0e54c21aa1a5a1a5ecc8c9017a777907d23807d072a4951bc3df55d2041ef478b4c892814d701076327cd6c52ea52331b7341f6effaf145fbee49ab1730a8fd05eaf08bceb485e02d39cfbec2c8126005197ab720b1db78e1e5c7f00a6b6cd5db91dd8d94b1f998cc3c9a5be1faf614b4606be56944457b87662b766ce88c835aa63531edd444dbfc1fa60f06d8f3dcdb6898088de8ec2268aa78b45a84354d54a3eafe77a6fdc8e904be900be1224c5ba4ac1cde9a34f9d45d8673b480650be996c78c44b556e7ebc3b2d9e937c369e45cb225189756bac620581e8e007864b2a18f9f2d101b0d1c66dd59dc20ca293c2c99c5d1e4a9d6d50849584a8b3c7e6d786c02b2ceba6312ab71a22c8603584c830c8c53c7f627f31d061d0f8e9faa82e6ac6d2e8767cd7a86a07b6578c296ae259afa4e4bdb4c8ddc58f56fd9e2d09948d316add94042409c8a8b85a72153c9aa28771ac13f5c2bb6c10aed206695c010f4c3b8e490f6f0c802f9c3ead3d011fdbda6a33adbe2298fe223567bff818543647cc2cf185ca59920b49cba84af88dd95ea3e0dc85c333fb9d337e6e3b0d1fcb730b2416d5024d2a24e25b7c88b105f88f9d757289d4114aa6538c21fbc38e710f42be8620a37ea218e1e219e9dd06ac0cfcc76dad5714e5a50b1529ff3ecc6bca0ecf58a981f8a1222d25f7d766f39c26ee98d3d31b9a25a39e13fc71b84f02302629ebf02ed1198278f7cf94094ddc1279004063094b8a1d3c9159d363fcd07de4b9bc060f813276583a5f023c7b9496a1705223d1fadd6222cc47f19965b1177c4aadf772ed6f767c2ac4cab7b043151cb00ae29a3926bed1c1f70d15dacaf62880cbdb1e9d348ed86885358ca4ae267ce27f98284eb87675a60e917ff6646ccb605147e083b71411ed387bb20ebf1614af399f4b030c360e3a2495ad841ac7f8c5f97719c70c37e784a19baf99b04bffe9d92281a4faf7e4f66ca15158df954cde8ddb306873fd60b51e5e081e0059540a685d78928334e0f0f098afaa9a6d7a8ef5e8e96cd154c946d07e7e598aefaeb50fafa1e10b5350a661f04e88dfa42e8cb7e2ec73ff9913cc7f9c1eb705bcc9c22b153104f159207164c440f41c92d1d54abec091042e9e7b045ed606d33c5c16708b6e4a27888ef302bc03764827f596888aaa227e036a817c4c7da679e26c2b070ce2db9e25637a97ec3b5a68f88b2682c1a7c9e1db3e6156e2840890b687b4ef14ff6baa02dbcd886b11c4d035872b86c00024431df6862bd8c95d307a9d1d9bcbe80bc83dbe6f8eae819b496a863423ac4ff1ca1aa26dc9c828f98a4dfeaabd548a84debd631ac310c54c8f8fe15f40ddd39dc74f2d907e92f81002efdf166c25e31ed9f6d1276c9b020896cd3503d65f2f86f38c44a88801957873183ec6a52fe9b917d25d53ea1b6608fb7e02d944ebe0573ce0e9fa9e48b707cd442426072e19520ee9734d150cad98360f27bf10505a5bc12ab5fd9694754837a4014b21003fff933525160d1d3f1a13dcc1c52a133fbcf4ce67729f8516f14bcf56410122c8f6c848438fdc553c73d53050a38cd77df6872f82fcf5b1047faac6b61ec557a8f3cf289562154f13f3a02f08d2799628ef4391006a72509cad472e7cfffca13c724289309298cbacc9486e906295468dc18fdde54ad1bf3b4972b23c6c29377ae4ef3fd07d461d951d8c5aa3c4c79cf80286bcee98439f1530a244d4ef63a1f39dd9d2375c734bfd5a76d74e81face0d1b00b4a08f2401e42485e478f1cf861096519a84e09e9085a3762309239c569d3ef90c6da61dac92b4268e161fe03ccae6df99353878f9d86d17ce24db2eee5c857fa70fd604509023b8206fa24fd5ba3f43dc3a5919ec99d549a0236a8d0dc940f87afa120997d804a151a70605c5818e9ed722d5bba5886b1f999b8bccd4a0f7178dec4f8947160db79fc8343f9ae47b281f7357d0df0966dea3dee924f24258ca4f217e200b1162e0e72e8a59e10eba61de6d174312b3422cb413b55234603a3d8eb80fb9dbb83d79ce6c221af3aae939c3a541fa73d41fd57ba6c30e664c7ab0b419207a735903c13c7d096d920ee396a449342df1ad942492c5cd681cd31d160b0efeae0b7491a88ebd0a7dde8dacc2d64b906d366c4c44100e6fbb8089bf2f91c5b303b61b60192cb643c60ea1e7644e41e772cb1a66d0d16a8d8c3b300229a640f8600cc3fd3ed769affcf2481d20b760705ffbcebbc2f118fabfc1f55261857223e97484849758cb5e059dd9572fc1d250310d71342c238b2349c8b5df9a039e2cfd17f376e65a99a92ed56745b9498712baf7c1c24a3045f3a8605534bca7f8653cfde0d22f50a760b52d69484118246191fd5689cf3b17e04264e2afd74a416086c6e58983b5cd3084a646e5bfcca9bcb8dbfbb78e678b1e15a47dfa67f4c1dd041f830d866ea6186c8ff273f8243fb289d778b99de3d94a074c56011491d99b0389bd03e42b90d4a3532b507a04707757b123576ddd7a61840d3c1bd02f19f54a7311df90c32eb5bc13702791cd669e18b565c97414632a223bb255cd352548a032b848da066b082cb2d68d4529ca0fb9eaf121ad56f5f9a4b677454c96c20c222bb6751e7221cd154f97d47cdc06136bb4136302c4568e1e6ea44419dd1a4950a815df2a246b81985d77e77af76446c755cd8a153606e5e7346947144cc6c3b510780ee8221da723fcaebfdf0a3ef58d9d06044cf7b0b781ab9ce66531f45130ec01e1a8bcba0b7c652c1e66724501ae2eb9188e85a219e1d316a58305e051f5a5e2a1dcab3f607722c9731a3733fb7821787ef4cfdc7bf52add0b0154ab78560afd5f25fdf484671f9435495c792973e64468dfc377ad2b0a1a18ee4dc4a0fff54056ad492bb99a1132bb80ee6c105527d838d880dca50ecb06145c7eb70acf60353a8bd5f21ee71f32e38083f34b36ac9c0aca15ff7b5234d88daa38bc9edab279ba3b6d0de72d7de5ea6bd15ca33f0b911bcf6d3bc029c117b885ea14e89770d46a7a52d321852d2da4698c2667fdc8a5f236306883e8de76e3eec47c6d986f9bfd452120c1901d61451e957187124f537596d621bf0fe47571f35f6135c4cc7dd9e4ed1c26ec7308b747433f84cb095db6d153e49a7b42c0401c78e723480f73d4b28dd6f58802b534eca460731e40a7881f30f11722a824fef57c3fca8b04d1078f4b1b3d9435650f5722018abb80a384aa6dae868a12cc3a718766ca0625f109423f9f138bb81c072e8ff4f2463f31991912766223cf2701dd702a52cc2b6e964a8e1d48185ded840617ee76d8e984bb4ec2acb3c2bdccdf6f0996ffee26aae", + "0xefd45b4696136558c998e6e9bcb6785dee80cc3a937677ef785096ba06439c2d8500381a18e40426cb54dce7572b8e9738a5ceb729d07ef542c23a3271af824fd0b528d05a6e60a9e0f8031c5539e19f5e1645d582d33fe1c5addd581d381c217eec7bb7aefe62861cf3301d0854ab31e0c3402058fde75e375ab84ed64f6c0604f74307d99ece1df793cb16562b207b44603b1d1b6b25d171331ab73c5bff17179796a592d082f5cd767da8382ab995933de3f16cbd0e0b713aa3034397df613322ea7a0618f08b5f7ad26a3b4502b4da39d644a2ca3489db052c35b24fd0ec18b642d1575682e15149d06c0219c295abbb1ddc4821481774527d64a4654916477d21c318f40bd2aa72c6bcc158975499be7d0b9d5afc52a62339c70926ed108903688ad3db7bcf5612d954c48c6504bfefe853123d13280074974f26707224699aa193834468aea7090892e6202bf43adaabadd0aeb934b375d877112c3d69b5cd64961a4c38fcd0c7b4b21bc31a95aa2321d73078a00015638e4436111f4900e8be97fc61f6c569a2e8b7e611122fb5d800aa40d67a1422df200bd5bcfa032387dba7828115ceeebddd6ae39ac79284c99ce945ddcc4af6e52b14811843d4b8405a60793cb3ee40868c363f294aeb45f69b3433ab3326544d9cc3a21091149e5604a5a09520cd22b73ffb3a64aba9a70b07c5376a919422d5ab8af49ac9f4787bd4ec2dabbb12bdf47000acbdef4661efb7712e23c749ebc71e8a060d8ee22da78265493164161cf46faf7eb09d41ab5c7ef42b60e6c75c2b6575bcc2f0c569fb05988fbc1441b13396cf2c4f864dc2908bd0f59e043ec78081f9ce14a8981bb8bed091dc6a7fce4309934a22a1256907f75486931aa2a315d7a4479f39abf53f3a72530628c12d9f4de1fc5615d163476e1f8d3a99cd09e4410f06d8d720f02cc385ce4ef5de69132cf37c3dca75fabe6133edbb9eef39031acc40f5ebc7c5742f516ff5f33d82b9ab81971719047bb040323c1df55a13a80482fc23867a749d9e7595bee42f5d7e228030377a20b82e968145c444919fb5b45e950e2e9fc1011a1f161ef05d423b9e97bc6c47b18429193486c9247085ddfcfe3cb3cd37b2254919ba3159835c5e2860c5c5ed5f3a8a015bb31af38f9550d5cd748ab029131bac31bf8ba55c3d23a6a2689b282e376034fd316d9e3741ff36cf94fdd00ef2f50d2c54cd03f7575b57c4d6f01ff95c1d19529c00ccc31e6aeec5492deeed235121b21e11fb7a84c635dbd62184658de22906413103036702c8a5110824acbce27813b525ad247efbb6d042e1003934dc903fa4dac8d37a1ab84dc0b0ffe79a204e5f2898355b68e0b2668587a196beae64d1fc89d4445866e097ff344a33dbf4c75d758eefbf43b370e824b100ed1df3558cb280c992290c95e7c893034e6282b3321272ac9d7aa21cd0322d5da644c3dfe3e6861da2b644c37fec13481a57f9e0ff676a255757f527afd93beed3ae564d2fea8d17ffee8b5b168dea197ea47b96b151a731538bc45536d81c111fd8ae26a6c42210016161a14ba431494d7911cb3ba17b8b6caa42765000ee2944c353d6d7b0b05d69c89882e67c2ef4a2c8ad1bf39b472e1aac9412e1b6d9513c73209ac69c9396b97b3a58f935e859c7c942ac587833975c6e3a8bde75952c04721f11feabfa1288f9f3b25c420ef9db78e666a4e4b972fb2f076b2d49307f9f4d77f8f5b39ad84c64181540eb2e350d12074b95800281c613aaf0d8543162921667e9d1bf305a7c0231bceacc3dfcf59cafbe93610cbb5ba3c610034c06298ae0522a178dd4b448bd1ddc28546a26375cdc13fe8fa8026c4b9d722cfbc1585947e0e441101b550da4c5ed4b47468a015edfb38b8744e796db432943be2a48bbe522533bef082e3c6857f3163d3cff76f0d4a20fba8449bd076e2b3d0719438dded8b59205d5eb9ee019d4692056c85326284d870cafe719e7c5cbe1dc254b4c55b72503df7acce185cc3101b25321475727d14e55e51c8678d4b3cb55a9cfaff4c69140411d08a9f697592a0511e8be9da83688e32f5d10187a239b2109f72a69d07c3ea138f3e4768e32dd013d9caf59be463ff65738710ef776c6025753f7e3d84b23aaa544b469bc4b48e15f2f0fae7bf5974392edfa008435754c3f1c0d99ae37e3bb6b29e7dbc86b7db6315f4e01c98f6172f9d9567a7a2a586a4748164385330e66631021f9254497e24094197f481fbda0d84bc36e0d4b7f595c1ffb9fa25ab4f1a857aa95d129639fe87e0f974ab621dec5848baf916ac42bb12020ed1ab764d8de453ea6a5f5537697ece87cd295edb08cf4227456ff7f86ed55ce749d73324940f984c6386e45c8658fc2a4aa5fdf8ee8f6a3dc0d7ae323ac6d88fb50ca5ca6833674b24edd6149fcb1d64b89c646660f9e7164c5f1824f49374050c042ae078d4185ced8b24d7fca11faf1446e78180c5463726e264e6d015a79c5d610e8b5f029899e865797478d599cd818ee14f9e85c30cef61b77715f6167aeeca696b04535e84ee6904b5125f6e187f926ff51aa83c823f1cf8a66fb78fee4e3cc7c2a4851442b1519799fbd3faa49f95f72dd187ce683cdcb4eea8871bf4554ce5a0accb7c928004c600a4231faafbcda844d5cc36fe0a195ccad35e9c031c891376b7f2ef45a340c06bd2528510affd187c765092594824152f657b1180f09ab791a7d8c327c3f41e3b87966e2f2261422622a6dbdda6aa5151d6dcb51c67bba0e1baf6f9d6ca091744e53518bc2eaabb6acad15c652b5f1951268970c448dab9724014ce9ac473a80a782a5a3190549a525dcf1868124b0cdd54f0d40fb2ea41020633ed7e2a725023f991c725af95a36c235a9bc4f7b6bc5fc2d1cd45f63b7b3ad9b4dab5856a4d065403c252de80f916a48072f87a5811d304d887669daace59eea029a7d3b6936bddf49adfc73a9ed7cfa6b0a5a70e2b3afc7e29c179e6fd47b7b84b26253abf0bf939cb977b5d95248a50a6adcd2bca0cc65749fe9cef50efca79b853dfe8e3a3574c76810401a9191ff01b086c65c636bcc35ba6670b3c6920a51ade9e038d1c12a56f080362fdb12d8961fb2afbb3e86fb2e8a9545ea9ade60086465552c2655d9159e406f484ff59f1bad22568573aa1cd84e84bd68c6383e468d516bd747b850241a11a972005dc54e1e7a6d933b7aa155d0c5ef8948298e89ed74786e6208973fbe75cf4a94dedd3965c1ad21292bb2a94ceca8882af1e6e2d13839791d33be0f2c334f2555ffa0db96e47b3cd207ec34371287775202ac33132c81b3847c0a6509d67a1badbfb226fe33222c7fea6f20e75526706d82003f34817b239dfc68a4ee2fffb05a0d3e1f93e298dee8c8408b8a565dcb5acd89f6548e7b87411f36dc20cf6703544f5f218d8ade91f225f294d5b989742af201add84d5d7d6323543ba68eb3b539dc5e9adea5e040b09ba69feda8eca930319a18e8db7505599c91e4a007f9096f82bbbe2715f494f9585e63025117bce9832d4f6bfb134370f35f58a1191bdb68010507159ddd5d3f9d95acdf63679e68124326b394909c9de2d9eece678d68898d867d2d666ad2574033e08395935ad3bce0a0cc2fef9cbaf9191c5ad92826eb50c126cc7c981b7c2bc79e702048b900942d55647a0e39761de178a9191002d1e5b60e5f4f4fecbfda1821fc3fd3b1a261e4f332c7685ac9048dc91717a4d20edf03c50d33a827e2e1052863b6e172891e965b278d64d17cba5e7de68688dea040ca5198e0c6d77364b099bc494b167378bce1e5e63411101e11603d5cb8b0d5026ced96f241f7f89efd253940ef518c539cbbbf104a571a65bf77ad56aaaae1921505426a1bcfd45a648c4ae9a0b73e46f8b0f8ec512012971b49b2728506704f1856912b49eb897d0b5d67162456291a93820c82c80c410df5fb1972653bc910152ad07ecde7137a384f219b39cd284e82aea87b18978cf90e1a1260aff5729bf6fdbb8e5f98e7dc0d872dd1bb262496507c3aa64b3da6de46e2d3047615c22fbc1de2eda34c74c09964cf16cb06ec58f07a44734b0028140b6a9070ee64b3fb13ff370ef532d75834b6cf4b0a05da2d7eda297bb15a1c4621074a75f4f883a4c564d9c8bb1bd0692e68cb54eb400666d34bc1f6271173f3bcbbbd2b9f6deec3ec946ed9571fedcdcf0b2e9c0b83d985e84fcc435a7eeef0e59e5c6de570a665032cfc6198e850f3a5cf9d8ea07d7abf07216364753c27e42e7b9a5a524da889bc56c563c4a56d5a22c3f71df4fd1481cf9f807f384e5ecabb1d84d6c96636a5ae7c784733e28c19897f3c3df12042e804ee1c5e9529f873980fa5075ddbea22cea5155b75ca025a2f90f667c0dce84736a1b0f0e045a5015fb3c1d82eba17dbb724dd4d0c9d79da0934b5197471c6a52db78dc6930f6f6d2e01d0796882cca2cb4f1cb2b349d86b8b522f54c5926e3c33b636969a631a03f15ae6dc3ddc3bbc1653dd833981e573d3bd831ce05cfbfc1fa3bfbc36f492e1f2328d3a02bee85f0e65569be6b7ee6b2c1cd5fc3f66d50540b74fb46e395d7bc87efd8d4c6ff63b1ae8733a77dc6860da12317f9c80f43105000ea10ecf5e1a85305b132c1c33eeee420085a3c5b674398c4bb8e5fab98789521eca3862a7584130e8d16ceaf88eb879bb033898ff5e2c3318bb50760dc9e13cd717869046a5f18f810eecc2cd2415d22b21bea745e6da7db52174a0b5e73fdf0498b65aa5c68cf375d3fc40be2bdf0b10b0b493bc6ac0e16d897464fe8ae5d6dffef10c4c508267e972dc79cc15c8f8226258a3b35d0a0bcd1141659e8ae6a45a2098be7731811f88fc368e6fc6c27c4f50fca147c24631e8e1dfd27578bb3a8b78a1cb64288ed73ec9bb370d173e418b77f2bd75b562e301a0caec3015a49641a48fe9bd486ad10cf4c1c48a542fa54d36042c17e2f8e4a2fd5ac310d9d9994fe5edb9317949a8c8ddfc338fbfecb3ffd17a91c30cf0f61a27470a1d6d9282a1a361fccaf7d874dea54062d40bd82cd1f1b776968869a51d552e0eca31d2b309e74ac249d195fba2b5567cf1e1d8e515225e445abfff74d840351faeb70eb58ddff445666b73dfd437e2265d5ea712ae54098da9b0540971a4b2023a46a193155d564798fcd1124a9b540e0293e63a035b97a52d6bf01e53c3eb3d885809109a596210b811c5009514f2d0a4040fe9d26f00ce3f976f7217e1e04b3f1cff40516be8829008aa28a219e674862a295c57adbf6cd8ec01ef15c9291033f55596e45105d243960e26ece467dc22f157c65d93cb1ee6ba38bee646e218eaf8ae656e6f23c93642e75ee9f6eee9a63a33e280881e9edc6125132faba6816b72fb6ad84a8bc210e715d2c3917746be5af2e80d52cfc089d7c7ca174ca089c260cfe6370c84af403640c0403dd7fba49a6633119db9120525cd3bb503a22e75f68344ef0404d46132f628fb432155fdb5c50fa77bb6cbdcea9dcf78ac545fc3192a72b023f117cdb22856b9351bb7c65c4496f4df642479d6bc3e7ea97396e4e44c54f67ff10f9ee2efefb264c162f6b580861b21824b0d30758a275e19f1a12784ff2ed3cb1f75c2a1521268db539fd8bc77137dd27d5351d90d04b61b129be3d6a19bfd57584aa53821d99da0ad4a51e9e591939902c0271140709c78643ccfed45de7ffff2b6b4094e95a06c671ea17fe511e9a20ecdb3f801b583d28eedd615da4800ce8c3569cb1301d5832bb4bd2c889b64dacf7f8b0e91aedffc294797122544c81183fb14ec98bde4e7990e8d4b3c22d374234d59b2792caa980c2fe4c09290478c13385a3837d5383c61ef6e2fb13064a8b8125ab3224de0c0bd92438902b68e3222b8b0d1a1977fbadfecb13e0a202df5a1efdf2ecc1003c7e01770a201b3d47dc627e47463af2d373e0a1add6a47a4fd9665cfbe1b4197ffab82d9231bdff24b026d95106f05f83537416126256827ef685223f88f93a79ebcc221e827ffe84f44e1b6abbc245d0efc60b478151a767a6bff6939759e3ea4d98e9d3fc8bd561298810f9c2c551a20eae133cff422345cd4ba43c935d1efd87738da7271150382a587bc0c2b92b21702d273ecab726975532de5441f224eda10e81515b9bc5a14e23facd4cdd6ec4253cafc54f1f5027465e4995ef78c75379fc3c126c850e875955b239d66f654f5ccf1cb19bc8f500b23583eecf9ce809dd198050820cde0ca936f3858c35db9fc276ed172555185bc8e09c5451a061114c7843b3b1bdb977fcfca580797a6ad25da47712913783a2fa334b3f3a1facd4966bb73f7d3a608a92452c1d1c4db09d045b206d304cfec19a4f7a3ad86e3dcf0a100ee8a5a3250f5ff98086b87aa669397dd5bdb1dd27aba73bfc1a811676d2b3c9ea38d6593332cc30094c9ae81a4f303f4315fa657a9deee3e4f36b2723008dba0bde3e522963f0943202d6ecd672557a8bdd6fc93a07c913524b21546da0e80ef1a90286902ec2b6d3d75741395e208c82690f2026cdbe5cf27c1deb6a4dcb460ce56707c28e9acfdcdc748b0d94e46970bfa4c217d4b807ad9df9543cdd0fe489e2f319b58aa64868987255c23eca359fcbd35e8276f8996c940ad0513c96b1e8688570608af98f07d9acb6a269f694efcaaa3ab2313199d1dfbb1f33eee49b53358458353635b42870008efd9c3aa93067006540b97e3e40f89042e96905c4a8a006f787790d78edbb9e587f7519cd78526bfeae1e5fb6b6e96b241671420071f01c24a565d698d81fdc5a27f11db7bdaac2f1888feabbd191f4c6684eeeeecbf793f7df6dea62dd5bfd86a34df93d2d9d06a814a0ca64a88ddcdbcc1b0191ce77c74170139ba600789af731d01c0694c4acfea500f10504309fb7e7826443c4a32ba02464eaf3a999be469068be7ec6f8517a42d152cb86865c0df058199634ec9676136019780e46a10bafed21b02723da80954019f35299f7a164a94a93a8f3b605e6704a2b29361872bd7f51babfbe627d69de597384cfc39b02c2301435bdfa596153b95a325f899e1aa6bd51fa1eaa896c4ea5943a9595dcb143ccf1635cadd099ca939b96f1b511350acb2cb72aff0d2eac8ea91b0791e536ea529305303ed71fff5a90318e3e00ee9e369136d75a56212d0e7fee0a2e9a92d5ac246208619fd64789f731c984bcb59b73dcd09006df7a580c38d518e9a724516209bba1459a996db209a4a0bef5fc618e2e1ad10461befb3ed082ba6f85130f3ab9675dab7ea824d3486c63bf6361c2c776035b1a6c19f54a8b02d940c936a14260056de00daba3f7787874de9b4893b4c6c744e29114ba78a0d27202992f56353a4984512e4f5b7bdd6dacfd55c01bc5ccfaca2d23aea22f597805ec1b3d65ef6ba2b6687d58d301b68dd53c92dbb61b9a817703a0b58d9f70bb02e667596f1648030a9a229ff08f77305539813b2444fa2620b2161d56f6defc70985d8c1644d747e3da1b66f860e9798652bca2515bf552db63bdc86a74c06e520c2ff6a597c6e209ae22c216486c334c9cc7f1760360c8cc941e6f375722fc0cb0759a6d5b542d5d08d6101f46d9f463730d8cfe37cd189b084af87ad666a2147a5170c61f3fc8fb09e081ccf5557940b2faf59f4a7e69fb29cd71436dd9466c316133c3199d7f4b784552516dc5db4ba721f04f025fd408ef4414cd5f5c402c35058556674ede0d7bdf4f141500b929887dee3c3134751e33d0549877c03f9c8a8dc7c579451e10517f4fb83d092eeee11f54c800e56a96d187c0667ac8f6557b5ca5cef50a7ba9e7c7ae1b6824cdc631f375bfdf2f5950f763ce32637c4f33dbfd2a118108de19884a3e5decae642b0cea5708f3dad57ac85222519932b66389ec17c3a9c2c00871c6e6c3aa1aa5da6c710adcbfb50a2d22eab73c8d14f13dd1a6222c51d0c776a057182e269a13c883de3795c8226203768915a20815864db2f564dce09cbd85507f355fbef1443ae7505ffe55861ecfef200ca255997568ac426b9bd97ce6adf0618b6746694aa7d0c21b0fa0d6818da44b8983fb8bafac6ba41a8099001a863660f9b5a9063fcae7263bd1fe52e29eeaa22fa0e307bf7226aff5f0386b3bf175d939fb572fb99e45c0f9de190239690efca0ed8a43f0663e211a7b3ce5313ec2d9481fb310e34911fcb8df86a994cd10c86537ac161754d8ff14cc7c63cba3e689da10ffd51552e319f0b7ddc612dd5b55c2df9c172a5c817f4a18b3904ff5d9c5e86d32731d7c24c055b2ce8408c00c1896594d61e8c4992bbfbfafacde1da2dc45a47d75f6bb9ee3d02bd083ab2f1bcdaa770a1133492689532d906ee91ab2d386c3ae1411407265f4d43d5455d4b3a5f03d0909c3ac0843123e0b6bff81d66f6ad8bc1fda9a1f334cba51ddd3c4f949a6dda177e50aba1d330fce1f72e9a02da34fac6135746b218cf2171ea7448425b3df607f7bb93d8c1be98f6df04357daeba85d9521c90405aefdf401f1ec6fbf1b0b08cb5d520c63cb5fc61d87b12bcd81f5f7c0e4d5ee7b28898105ec6a539c265368cfb8cafe0be04b7d6384b988820e368ed8b118b367f374867e7eeeddd0ce05b6e24e1f0d9991b1b44255d70ca7dad4784b6e3f1512a61f4713b89780c650a368c3c6bd8254a70cd9036515b3010c802b34d14c6684aac7f8a2e806d7e76af42ca60d2da0002fb5f6ae6f9d230d3a1344ae94639516b848e1483308ddaa3ff201f2b547c8ffeb9febb85dc7c8c334acbe262f2718269977b6277ea4adc8a0dda0887432ff1322c2c9e25b46cbc66fa588f6de3d1e68c595c941a72b753ab53b932e7848260b6d98dd142f036f6478bf43667b98c40488115a3e7813b48452cb5cdfb11a0ba2bc9c8163433d3af89fba93bb9688e1a9f8a7f091a4322c80159675db7781b080a086ef553d34ecd3deb7a4e70b6b17fb9339bbd6bdaf32e217d95fba55b10e1462af7c39e5b4fe21123ef920dc046f219ffd56b70d99fecb8a1495459ee90c664c1d20206096531200c3574f575e95d3fb65e268ec9771702b07adcf17c64cb50e8805c0a512d53e134d2cd4a19a8fd39e289faa7a7f952d9fc44059ce31526ccbbbfdc455845af9dcee34977c47970df53461eeb646ad557b7b26d2e13528657dcc73070790c31b92fef161ce10476d79ca1a7d3644096dc7b1455f4929647b7f098020fc436e256524257a8afb50db0935c006a005eeff3c3e9cf15fb2fdb302056c1747a2f551d55e4eb5cc324f284d58f87ee041c3b4b6f5981fd7a88039399b268e8924b0958fa157d1784cdaa8b3f6013a531243945443adb9152c6baf30c6e19d138cc324d2762e2d8ae14ae0276c34436bc1b44d36aab261657badecf2ee1948848b19062663e4c9dd09e4d976054df28cd1da2eeec3cd70d741efce1399aed07d75b3a97663bd1c6cef66653a937974901067a6c3ca8ea8a2724d3966a09fff9ab008feb78c5400d5f84128940100774e98a37eeac1857e600536f7f813d7edfbeeab08b13755da08fd2caffd703c0138928685ff503caff26b7ec8144b0b5d8bf8d36f450efe0eb3f26c6db66cfa5e0dada5ac9b49239c8d15f44d3fc223e599068fbd36e56eb36a0647c55a8eb08ce48a80c44e8980a09d12dbaf5f58a4682c9b73a214f4ac02abc49935c9cc130e034fc2b73761ecd0f05f2c510030e3d2034f85db3fa78f326edeeaaae05ef47a073d13c4da577d124e5db91f8f80eeb504f3929b617bf662b64a1c4bfeb9adc32cdac27e2a2ed1779fa3768242f4a56a7cd3f2f7676d8bb0aa3083e0f18da66a97f67bd75fdf65c86607eaaa40402f93a1578b75988a01b8a039d9a299c238703b9c9f9892b0044b24ab12be25a3b2370c1b87f54e4e2740d2f6e95a44ad5ee7821f50e6402c4e2637e0b0892130a976f21d503c8c4bb9471a73935d838c824114f9f832e3f342fa1d5fe53d29bedb133b6ff348d8588babf3fd1dcf443f597424f1cee1903f211b8bd823cd55e3db5c9b7fccad72b6889789dd1915b8929b24e223916c552561f6db7b272d94ea5ffe58f2499beda4b794ebea8f3caedcadc543ce687c4930a39a8d9bcfc6f5eb249325c3691775e97294a71ec9c0896aca9a207b2e05813319a9d4c20c638096f37cd72fa5dc1a451377dda00e92b70f3919b5f136242821d1000cf3b8950cb0fd14ad6b4bf873fe5789af10e5894a90afdae15849227749d61df322ceca3a7afb425c467148be470c104014b0be335a881376d6bf733e1d02674dcfaea3ca01c13f92ae6b5b6eea78d27298b13044be192ca9fd8316ba5929340461ce9683fb4c90b2ab617ddda423c37de2d8c71e74e0b74590d08ac0171f69b7e3e044713502bad9cc3cec3ccffb3c86750bc5f464248953bd825861836eef4a56782e72d424aa489e2ecc40933990a6055b86e6c09c7a35abf9dd4730098d4716475a6a061d57ab1215ace7be774cc38bb3dd3a14376cfbdfa74867deb37f3ac86edd40727dabc06ed1533308f6feab242c3a5ef452dade33ec41d08481e7db3b35515ffd8fd5e2f008a95db4381266865f72ba68ffb5d3c573735c764cbfcf7c2d208a8c8ff5c0629592d529739f2431c277ed94e4250ab90f5cad2e6933d7f2cc00c289e964a1ada53ce0ef4802e04f646dfdff4c9a30bf43c2725b247e06507a4d028b5fa002e8d7c61ae8df570bf7d987bd2da456ea6503af420629d495458347e5589afcbb8f545f474e1c5f05bf1250713f6f799bf16e8830852640811b04706e0325e776303751dc6c62ad713488ee2c49c66dc0a02fe4f8535bfcfef19cbe6fff2d26d8db4503aae0fe351f788db014c5a564f2f943b772241e9a7595a17676ad06f9acab809f25bb952706c715dced7d3798a4a5f975ad1e247064c7d3fd9de43a62a5fe383809eac2786a86bc2a1d4bc89b86e201d84640acb13dab432e89df4495ec86deb846e0ea68837d5e84575dbb6061daa84b01502de86a887cb5bec84ce83320ac0736420fe9d7995221a321da8f9d29ecb2bffd66a1c704f2605946ec2ec01c63f5740b14de02104e51b46bb76a777fb5bb0a251b2e98007d9b663ef181f4cbc5b3c621d2f28b71f1f16316f5a92ef71899f637efa763a6be645a80515c85c98a08551dff78c1714b0a734b7f7e38d936fb909c655d192648691b97ce7fd31e8bc6038b0082bf110b8a6d82a82159bcb7a714196048893ca1d797009522dfd3e8fc66438d1aa4770bda367df24a5d529269c1c9a33d8da6fff78aa76e1a8a627e6c0c74f69f5f12ce0f471dc6255ebfcb7798c8218201981d05fc7e1902f48e75b2c78cee17d1ca995be49a06197023d0711ea5eaf109633aa2f2d07e8e8b10ff8cf31edae88c7c4a6e486b44f2d34c6936473859afba9c352c7c59ee644e4e1806fd035cee444446aab825259c60b637b4bc60be70841c327617cc84ee69780a670d6038a9cbd867516de17dd510aa7159f68cfb71660b8934ec488203eb4f271c6eb94fc3dad8c3dbffccad20b249940fd400e19839a0b2998105558c7dbf5a11958a9b47d634e62f3842f96d0432ea8961b8f7e269a46bc535bb042e2dfa0df8f8bb41d2083629e67e0ea871ac293925f295aae539ea21793a2d7f62645d6f426979d8d4884f494b1bf783628f449fb807e011ac8f6e621c7657ecaa6c8866e54b10f1a87320bf807962f012e9b0e07179279e815889792542a9bd0fcd7c3547db45a97402d1fc17d1a55672271971a21c18132374f738de0fa43b53d15a2e2e49ee362566901760ac74275a8a21c1e07cc9c33a8d842bf8ce39a88cfd9eb67e41125db45ad11b4365c9a01d850b3b73e5799719cc3f6d5f374ca4af2aca3be99d33fa75114c57b315d8aac270e78866a69aa1ca148166e3843124b4acd56febc4e1b30a98e7cf6679022d3886689a8c4ee0f2a45af7dcfe16be3ab0db03f57f91016edec60abb07680b8e8d953d215c5384feb2dd76c1393060d9e8e7a383ff84c4666e0a04d8270fd5be82fc7a499bb7afb2355b0e58de2b8f824bc877d5a49584a0e95baae9f049a5bd01b272475844c0ee00bc15a94b824f775dbe53fca742da955dbee7f8c022ed959fdca7ff4952ad08cc3a2adfba5749c442cd607cbd0eac29951cf3eeb17546e5ea87dfd8064f550168d837de793d52c8e6252e7cc265251d1fac5eb6269ebe09d1e01d4f98170700bb4a4c5c407f818b6e0837c6fcf497818e18c1015d596e7d5e38cd55decc4760adadbcb89f7938a056546c40bb05a667eeab3165e423cfe5d7e44ea0fb7fc3cf87c115f95d3de00e06db1bcb56f3485b6b01eeed95f894ab90ac75a40998ae5c3e0c565c7fc17fd3ef087d7df4c283a8fde8503e7956c90d064a6ea44f3c024b9eb87bcac56febe461cc63c0a38ad365050f28621c19736c64de5c2e98b5819a3a27e64d806591106d41add273bdd5862f64702917d025b96217d2c059eedb44198e301c4bb7126b3286754a3c0f51be343b63f826869f7f423db1ad8cd80b4d3d184aad1069484f7aa439c2d00d99805c5478047c4c9151c285e860545f328b7584204496e91021d9b788ec0b28d16635355025956e7147c5bdc962a83918f62ef93b369dd3fd42d0e87377f32bd2a9d4011d88f2dc9fc7f471e9e6168847a3826001aed01f6a659ed20f95d56366af3b9fe0d753b3ae3d7b25fe2399e5ec9f75aa86491f713ce314dac7cbcac6aa9ae997321df504a60fbe6d138eeca9171ca03bcea875b797f8efac3755b33f1cc83d51cc7571bcc12d6021870e4e9f7d6340501dce0820b202f43b634584e032a50bb7a010436d734d06fcc8abfbb4ab467b8513f4e1833a067f00609188bfe76d1375e87083e4640a542fcc98e7fad93b6b51a41d8d65ee86c22ea734dafe64b3b75727aa41f38a3ba4da687e30d21d7346dddd15c707e55123bce2a81afe032cc39b06d7c7e9084e8ee40e1d7fd1151bb15b094f4ef87450a4fcfe9c86bb648c490e8bbcf307698e62e323250b3c76cd880bd1d9711f2b3fba43f16967c566d5f723f2e9242d404cf9c595e0115f4e66cf0c18098193ce6fea12731c6ec5304b551abf2a3dad955696c86ec05302c16f7208e2fdaaf68285323c0195f7962459fb178e2a1a97a822fc2fdf00b3e67c3ce598928c92379995fadf91fa1d2df1c0c24c618083fec003fc4f7c7655a8292d37a2c758347f9075108f5e65865469c596108d9a0be2beba7fb20a087b1bcfa4fad85f8bec176dee6da8a179b66b9fa9f7786c579f57733cccd19d5bb1d39cf1294b58d4b4fff1f4194c2e2533781250b6cdc65d9bad2e8c059f71918f38357019573764aeeab74c17d5d5454b885e0a50a79fdeede838be3d1c273fd3303f8a31c871975561246511e4e75c7d2d476380b21b236a69571157ef703ad868c6a6f8a4f110d73d2eb9e303a3e394c22fb1c246c02ccf5593b4fef07a3bb0bd186ccca3d8a4fcc0be8234efc5999f842182b1e448c24e2df577e91d64a6ea4ea9a208256f185efe333061924b8e37fb1711d7f6b23ed468199deb43c51494fd4535812b4f20dee049c261f73ef58380b9412eaf337036c59da415c87725c00ed35b7b206c8f2fc192deee86070700993750be8c38cc480c6b0f799f8ab15c27ca5ed470bd7f11754b0aca69687eee6b0868964193e2fe4eb33470941e6a4fa277fb7a81ba0044ceb379ab77430c8366a52aecc03188cc530d0acfe0d703a697a4085819efcc9f696bbcdd58bb7be5ff1ae7e69e43c9da6bf2b4e5d7848aacd67c0f11792ad68d913c5ba0a242dddd1177e2b40f61b8bad081b569c93393e34c17706c5093ac556a32c08b0b8a74115d1fd817dc2b709823da52a6be2c2c08ebf59901ba81d25968ae5d1a87556dcceb9a8e533a93c70a6d718af8fddd30a9b803c07562a47998c92daa7afc0630e368fa675fd5fe7bcda0f30040e72569e1681d1c9d5dbe6c92089dadb0dada75229b3cc3fe66a3bbf1c66457865818917e6282eb0331e8dfdb5be94f050892a5aebad2ea3dca789e2451d9899b25f2b7f263de436a0e898756c88a53b9b51774695a63e44c8c6c6521cbea09cd25474c7156baac41742f6794ebfb20cfd38beeb75ec7d3452c9b175ea917588381de1fd5ec494cc3dca2cae724198ebdb25c744e972bd2f5b894af254283fdb006acdfb9d3addce8732be89d56fa4bfcd32b482ae4dee10173198c034d4bc98f461de9fdd273c7abfc0d40d4dade4f1752e9462663882e0c6c1bffbaf2dd9f498193dda6ac6d06fc9cd411283e581dce21cc5b2ae115c1e158c6a70a98d4e0c1d20a11596b7996b0c46ccc353042d19a2b22632435a50292aba7c21e4955b5df3f62ac7e37f7dd3ca2ecf2d477c9b8042db1c33a7b935e6a8c71b3de5a887f228900e2fbc06e3ee3e1a28e91dc113ed423662ac1e788508e602053cb46b777118d60d94e117da4850b3754a92cc09127d94aaa128058c9ed60f3425164cd17feb24c383d3e3d3fe4638a6a9809bcbfaf37d150e407329c36466d92fc6f7313079cdbbe1cc7eebfdf7f9d59ca2af3d028eac70ba63f8219713d1a03d7be23069749362cf3961be7083dd7d40ea8ca755aa8f4aa9c86dfee31df247e73ec274788931bab659e6d4dfe4ddf1e6533c9054b2c8d40226d17c0a85ba8415b814d843fed2e70141cf9ac642872fc9b5cdaa5fbfae96aa3cc6901ed8f33b6090969dcaa4968d4995c0e79e217cfc92aeced2e82dcdefe89712f452d5b807ae08cab4e87314f5032ec017a55cf254e454d618d67e616ad2072047166af80dce267a0e8ee6d309ff3abcb3d60c322a22b3fdde8938dfdd56017dc18300f62606a32e01dc55cf232fb104aaed541b71306c610522916d6122e35b72097bcb53cfe1b8bddadefba19c85cc165a5f9d80ef1ea326c08b650eba19111166b9e3843ad3a9d3b808b9547aadad9c7cb93fc0963f67e4ecdad6927e40985d60047cb0b786d9c5c64c63b8aef1214da39d9aa64627d843684a03947ea81011da472a39399fe3aea0d5c6ff59630a218babdc076c0b211af9aae2e04221395e209556a4ed98a6f53747a2ee22a62b01680546b4ce67f5880d3b9d74fe7afa019c01baa009ffc511af252b845454ad5eb5c5ae666527078b3e4f1549ccfcdee34298e65c5c452860397d8b7516789c5b5148fe0249819390088e5af9e4f492466dbebf2da8f6790771c15d784a746883a4cfb3246110d42b4b6a3434f69b6988f01efa84f94da8ecd476345dd8be6513d8a45ffda3258bcd61a89efe05c0d873a1e8a537761e68b7601d12fa727d4bd35cf0278303b67f91e7a145c68b0efa1fa0ef9f145f22afe670fff1e41f6db67d442e45ef618ef71a78ac0d44a9600c610f0b1bcb3d673af564fc3efe0b7ca7b82f50878c27a94281ff7f8c2ead1ff2c819db21217992068eb12258cb7624019ed254ced5539a2f4c6bb98dbc49b3b13766fd0d7ac926d8d054f116a1bee60dd4515b90e423089580ce9e8ff728eef3fb5d980ead47c8b6a6de643e9ed737f635fafe572fa80fcdbc4a1a44dec8988683e60fa82b10ba6c267f880f76b7d84e0c15164098e345336550791257c98ddd9b70a83378b4750909cd1fb80a80d288d5dac47dcb4dbfa8e007de95f215568d427fd759ecf4495f2e3622ded772427b9ec633d3edd22813e5f5781b7e95d6d10508039ccf7c6386314c2d1a2df7b7e5eacb1e1d9baa86dbd32c912666496c07f54e7bcebd9a7f590d5fc779383d26e62d31e1c734a09e6e269d19eee806c73121208d965d2fcef7d01748fae0475281d210985380a66cbeea5612dd1834ee75ad88a4f2664c3544640581147167351ed4c273d895d041bf4fce3c11af321e9e6f719ab0f93d3e655c4dcc2d116f030be7b0567e1e0a57eb4175baddad62989820bd71f343f87048e0f2fb23122f63f630576e03e328aebe173c0548d3e612f71cccfab47823c81a9d65c0c707feee7591738939aa3115394ecb518cdb943071b5870e3f164035ceca4a815eb35a427e7aa58c8567ea00635588d39893bb4c5f0f5754b27c9de19d40b24f1fbef0b0ef58008d62b913bdc36cb78a8fbba8f141959fd081d41cf68099298db7438a42078d52c6dcb7e321e88f4c3d47b9188437f7b2cbf544fa38b8685f1fc72cb8b6ebf222d916139c97e1723dfbcb1afa0888bb4cfba87a16be477e488c65593b2222fba67ac48155b2c58e6617dae82e6e1f5f013b0a7e7a3b743bf926979b782f19533307b17f5a192d3e55ce65c9356a0906418adfd90f514bf7a489db81812aa11de9353b5cabbeb5e988ec14f2e4d9f8bbcf78bf11c7371b7375f5a2f17bc86cbba182d29885a47e44fda5c2eaa07ec344d5a49568a6d9f65e2cd5d091720993235bc17d970890af980f79fd1fb922e47ce66f21f77a4934eec08b3e05d8aa13cca6b454995111ef2311678745d474f849aa9a761226eef07b6bec39f546604b22dd6e070da93aed831805d888965e431bfc087c02c17a893fd13500ec486f7f9317bc552d9b39d932e4e79993eb3529faad8a6f0811fa2311422e49ff2d5a582533d196ef15c6e813e0b52a5e9eebb62a4c275eb505c9243e3a0bbc4a3ffd629e5d023242e604d30fa0ba1dd22845175c8415ad903b59b76d9a22773ad6e08d3eef51289b2e0c58c1612fb83ce5421f691239930ebdf94c95470088a5228aad07933e88d6b0b1b831678c77910b0fc3a854bc9dd67bb116fd245f76b8a943fa95ff55f96405ac38a53c1f897c24359ecee91c295a3c6c8b549ab0b9afc72d9188c2b734ca1959a0773bd24e45dc6c6e5bfaccecbaed57e8d617523d62be66f079e0e1866b90adbf08dc89df805ff6959d0f5d6d01a855ab7f4a4ce49b1ac17e884bd752aedbe9e4b8a8bc8694ab6199419afc87a3cace174ff27b00487ace016f72ee8d662eb366f5e3f241087d9da4728a01eb5af513b39e8c50dd6bfdfb252d6a5c41959b171e5533ab43a9c555048b9b119c4bd5a8cb8544e135f1eb1cfc3f74df0a77ffd5e8c4e1b9747cd4fcac54357a717a0085ee4ddbf4ba405a07796ae3c19ce28bfb26c48a98ec809955b2d9043e9693595f6ef77abd8facd6d5f40da1cc3bf7118a3cb140447c42aff8cfc4ae610b01b68ee3cda475cfaa69f8a912d5a6411b636315268038253c1419e2513d0b2351c0e7a80caebf05e0727e3860728e9b4a63279d6482cd9e0abec06dce2b1a07ed50455d937ca5b2f92cea27e6a94b4db5a60b44d3c0c0d26e70d816aa31f8311fb71563aa755acb58e26d5b3486bfeaadb4f48189bbf66020829128172f85f169ac5c63d7d06d388c1caaa3a331741ce849424dec54951a7079330f3bdd2aeb2dec16c8c1c0ef579b58e32d0ea923220734d1a45a546e86baaae2dfee235797a0a9d14027242876200a2d0f18dd3f4d7ca0ae08eae15160aa42b0ce0f37d6c0125e953ee0b0e15c33f736bf07842582b5f8d9fd320d49164b6627b65fddc70687a9f87bf4caf8c12337419b2e1ec9bb9ba53b8e2db1e84aeb529694f582355c983f4d71bf79d1d1035e3a63e1ee5b866154a8c71d47e554cfa7850c3ef9a08ab01a5edf242d94ad029f32ba00ec9c84a1966138907ad0beb3432be28b063eac8e6f2348d54495e996ef1da811e647ebccf70579669071c61f6029823827ebb11d1b2673a28b170f7975561ae66a5b05eae14ba0f3f279df87d49579542268dd9a8409ece318ae1b6ec96f61d524bcafa2eb33cc28756f3040ab18f9e753bb470c2ed882eb49defee1d8b2af84b812dba269989ed11e86133f72ec59c3ce305c076d3cc789c5461c5270099d3f639f0e475d21bbe093cb97aff1ad93dfb7e05ac705c493a2bb7ccd87b837a8e0db24e29a1aad4bcc6876ff533234c54e7d34d693a2aa82d1d204dfa23001af4938fa85a73f2f7dfaf56341b8fd1cb0bcca743677616c711e764912f4ee3d776cd9c93912d7e0013e7ccf883442553c7f5d043845f28e05c274349ba732f427e39f81d20ac05d8c62ac15b3bf04a8f2361a8e6af1fea424fa251ea23f9041cc18eb7e3b8ab5f458c9e3e7d391ca4980ff0517af35d88c79ee8218c4de423ed601250ff1e08e00a115b0aab196a46939300597c088a050f4a4e83891626c0c9964dcf38695939a29e96bdb45b0460c92ac8175a8646fdb480674670f4e4ef4ceb1afb71f93fc56b4b0064140c9d4d8a7c45a0947dd26ec6cf229673584c5c50f6d8a47f7a7fc058d80495c83b74f0ab3a5c005d186f54b1b655d3e71d292b65e25f771da53eaa400012b04a6eecb6b9b5add8f4cacbe5353aa05e3234b3a9c9efd87a4abe664c4de6a045b7202dc20645c6d9315d6e238daa2f6121f7083af19c5977ddeee8ea9fc93b95167f9d8feb9b2a9ce5ca0226fb4182d8c2f2de4fef89fe58efef7b759b30b26be376ff26666a425f8a3e195aaae23a16d8fa26054ce3fcdfb28990f91624761a2498730e4dff781534321f1b1d79d50656fbfa99a0eac1d748ed33b5ee7deaba237afd14bbac31704e65d933e01a8737475ac84bc909ad06af6c0ecbd2ad917d05031aec130cffc6e0e24169d453e0d7f3806c5901058244e3992c71a93083ede17978bcda18203088df4599e7cdc4990c6e763a4af40daf4c4dd42078f779292c2db89a10d6898f70bfb48aec6325eb91fc57d9b70c89b6a1a3e4ee00ee529bcbc6e14cd9b3b9f218414ca9207ead7b4b7154171bc13c8c34f40df480851024b230601db158cb137c7259e6a65789204f8ce1716df1f2ca78fa2bd97f398202e4a41c6c46aeb60abf8c12101cc05c214beae95ca887b67ca95e228624f241578381bf4b72caf5e870e212d716a60c60ad955f51c4d8fffb3341c31471ba1b9e9282d58661041ab7056668c5e3301b84a8e322e9e257663b4d237dd005cd0396b07c177fc70ff2e53ee36cac25e20e16a163bed3aec65622de86878899d62b92bf9b349e5ccad5e874ba04667e5d994401e78faa3e2a7d6ed83fca0d46ae42818d5285ab54475cd90b34ed4ab096216ee465fd5582c21879dc677f234d4ba1b1aa40ac2f22075ceefc4135626cd49825da2fd91b6526b81f366066508f02fb117265f9cf249e387e2ebbc16fd76d3eb603cf240e4bf7c6eb72c39bcae588fe2fd4d69e3afcdbc195cee39d59a115720c48f386c9545e1a35c77149f1ea852c836bf9bdf525e06baea6313bf80edb6c2f80ec372629682f35bb76e33a7025ea8cd585b921bd49ce8bf3631d3871ce4b0a99be5cce5cc007c4ff39e568d8b4cdf2aa691c684a7951c9027f166d8f772e56e109083e4e29afb39447bcd3cebccf6c16b0fb1c0752f8d89498dc73b973f470fba58648738a7675158a705b7d10d7b441fbf4a238252f83385d231315d22193ad856bc11139cca1af03242c26d3a61ec6ca7cea933a188a515279a5c6ab4fb6520cda3911aa8aaa362884d1df4061139b0bd059292183d1b09e1fe7a2724b38f3ba424bddada7a2b17ab0aa5204d630a7e884adfcd4074adc5ec3e05bf1923e745b5c58e43ddd89d0ec67feaadb8275d1d926ebeb7ed7c8b81c3ae0fa0ab32154ee4443b2a3a99d4580a3431dd83030d07abebf4468f4ee3c8b1e5c1fe628aa9db0a8ac9c536e4b69addfa2ef543bbe76cfc0aeb1312cb5cfa6d7df750505e6b65b21ced323be5f08e58862fbec5390eadeaeb6bdd4f2cdacafebd37d12fb6bcd89ea6c2f0cace2d82155b6f05fae517e1c794e906107f01c0f16f37009ee5fb16294db5630d3574d74eff9a1bf219ad535677ee14984dedb7e14e85205c26d37269eb2254e60083834d7f6055eccc55011b136932ccdb44604dd6d6b9a486b23632774c6f9e7dd39027a1ea8d70c2091f809fa9acdf96e6bebd62a815909d441dda1abfc41b43339ace61ee9f7cd0a792c7e73c76959a41a83ce188c488b78ad9d6cda947aafebe556e95acedc00eda76cdc24aa6106e754b1b877618d06c718e27768250545c65051bc5eadcec0015999ad0c1f6345a51a5084c27aa12d41a558fdcf41ccb92ff05d0a36f550b0e50fdc667654397fb560b7820f5d30cc3cfba9ffd544adf537b41beb40045efd6cd5aacdcc510fef1f5a4571a6b343fcf853f9381b55e892388bbeafc371db03dcb99688c460472cf50eb16121e2fb3002cd7f76452418257b8091ddac9523630345ab0559867dea8fd30fd69906bcf687c6b291c37bf6b410cd51d59fcded7878d6f71697aa941ea5e18d0f95d543c0fe5599cbbe60889456c5c45a522bd04901b5f459d26dc6d506319ca58d298d8e636eff7ee532f07e0acf0596be8710306ede4b3a98935592ab6ffe0ff58abbdbc2df400c9a5aed5da5576be491a7fbda3da6d45fe4a8ffe43ab6a5cfeeb445453902054b61de00e368ce9f0a761f09b87bb9d6515b3e7cd1c7c4dbc3ac3de781b9ca0f01cf286f0842cd5588f1bd1730b07ca1572b2e1ac4bbe71ef790b38b03dac939272184364c159dc655f0bb382dcdc7f6fb1a642873255f0d9a659d56be58f8fddd3c82018d88235fe762b2b7b66f4faf659fe746f6383ba2b14e47d5e00d01c5766fc08276f27283d2d4753a1e344aebd5287054f592a1387b248bae0e33837310f474d51a9729381b35a47f7a34fc2542c07282766b913f774cc5c658a58d1e4483421c5e71868ccbaeea9795dd6918fa5b732e1f8c625b65d8df6fd5a464e9c21be1e77ccc32c6ff6c61e6c976f281616651eaf9cd18844ed155eefacf5076eac8cbf0affbd7a0ad643cfb582dbccc7a8370afc5330d1ceed1d31567988c8666f6be54a767e7edc10c9e94dd13371ed8fa3b8ec30cc67e4d4094cdbec93526498c9523248297b5fdc531db85e11433c9d970e704dd7067e35e75478cb0cdabf02293184421a4638e82c2191bb8a21a8e7c496df84573d54fc392f4cd89d88c857178cf4cd13c874794b2c2bee7e1d0669c5fe2f9105f08570eb897fb37efa0dd4abd5e0ddba7f1a3f907e3afaf7fd7ebdfa99b16db3d68e32115039e07dbe7a7b8b5e98ee9efd04ba77d6910191bdd16e39dd602127fb8db30f39a3e4d4db3ec624e034542b68145245faee0fb40b6675b8e3c6521940dcded039feb589498a102bf8025c85f9ab72f133d7e333ca2ed947eb6947d1d6f2ef640cc7e29474175759a57a02897d804856ce83463e905c9c84d5cd30aac7a1ae68b1ea2cc0bd850a2bccc73fccd7b6fa2f9cdec4e327e0599ba804e9a76d968bf9eb0a8635f9830389b4e22ccf7c527986728edb790fbd412e0fcf8023f93157d5c2d29f02f0cae15f8a388345f5f33a00aa13e8ecfb2b5d1ed64c4182edaf8c80005b8269dfe75fb4dfe338b460e7836ea1f470af508d444b723d03dca29c6bf3b59edab2f7d6651125753b74f082109d37fa9654a92bb1d777d0fd6fc39b595bb4fff25adb6de41a354b8b8969d53c10527cc10b55ce94241f066fc9d07e46f313db87de2696c3a7cb7b39a4a5a403e65bbed723d71ba17fca9fbf7f9dab0cd3af2dea20e3576d04084c0a0f11bc6e7fbf5b997465cc687578a00490d0d207dba548226113b4bfe6f038be45308b52f16fc4e70c6aac84d2515d006866f65b8eda9504f82b4f6f2bea8f436b17146f7c60c912cd056f66a21d1e05dd2ec0a6c3756c6aa593eb24ac439752deef2950760c397aa48850c3e5cc4d5b734c28159160f5000728b4df5cab4636b977ff861df08b1602f988c04df03a0d8db86b17beca1f60efba566666b68fc31f800517cd0ca1baa7948e4b043e683a51bd522d52a7a55bb88feed0225c36c1dc6f1930e4668a20784728486d116d545f7ac7848d2e20c057debe75b8793942f6be0390808769130834507ed7e765e7ab64bc64b55a2ceef155bdc28e4ecbb48e7a4625dbfc5b48b333e67147e2f4cf36c2629ea36a9f05e294eccdfffed9a79ec63bcdafd677b8b54d328ee147d200a530b17ef562cb92b3b086a678122889d15884479a2ad88d5242374ffc02ed392a1d3afa0b88d3ef55b1f7b0b1f5f4dd15f7c5b8bb92b9f56104d5528e211b53994c520dcce710cce513a897c77935b83f03ba564daba669b73abb7b7f555afce357878a33cf868bc549979ac4515c6a72ed8b17fe95b441b2be2b905f74a015cd2766d1635367706135c6479995b2bbe4ba877e1a76cfa1f21f8dfe27f93b00137d9127b9c9a7c0e8b271e69a41401ff98418e086f716149d20cdb1f982c48be16d28aee24ea559790b1d1f5db544af91f916b785c54a62cf37931f3b519b60edde7c2db440d963b7806caa23363feffdda67e51c114780e90f43fa15cdfb09350b1a3198c29d188fc8cf10386c8796de7deaf9ad1191991506cf3017fe9b0106041b2e1e3b02ccea8afcc426e275e5e14cb7d5fe7df3930ab05a269f14dd5e8e2ed1ad1dd7afac7be33823468a1c474944ae4a81122b995c52ad4be3e08b0bf6bfbab64c04deeb4fe3751ff1368f41bf77558d2113a379cf6774847d5831a0b443c9edf4f7563fd50f3aac8e20bcf6228a079444c341fa061f5602e918f3499b1af829a8258cef12e15b24d663d4b7943872bde8ec445fa1dbd37fd7dc035cd4f7327472cabae35a438c41c07f446d3dcd64580c5b2ec640b2fc04fd07a46eec628cad0c65205e6d18b1693bd93cd500abeee69661c02048f0ef9fcb20b22dd337c455003a3f5a0fb40f5d0938cada88c8cd3603540ae318912fbb9b4fcb38a4251e2c82cf32bf5f5e478f23497e87de2e2da9f10c85b66ecac2fbe8e4fbb6f23188a4066f14d8cbd51bb5a21da851137bb3439b663fc40e8128d19ed1ff7f4430116b38aa6fc45fc80f516da61cc9535ee164d7c41a6860d01921eb2b13fd6350af6f06d3c6d2535dcf48e03d8fe41a20c035078c175fad861cb9b0ad5223328f5634f48127f723ab6acd3b1f7a712318e032c3a5b1c2b7a5e56f7e34ac29ac425f57b40ecfcf323f6020deeb96682336a76698fd4c630ce58b20e3445fdcea903c945a1bdfe9f59b77ff3c26e7285379ef2e7c05b253f8308ae911810db0fbf582b41f0a2238edb26bc11db74cdb4079f5a7de339ab7502492590d375bf695c03e2bc783dfed336e656dc36bb28076de96166d7f4c274c942e74fbd41fd6d8949a5433efc02f4d2b4657a972c46c07e6e0eba6e6493a850736b8d76826e970ebd5939a00c64ceb39c20ae8e0382f30e3ee3b61eb090bde380d92732c7ea1be8e8bc91c274971d45d4b8f912da82dd2bb18c23511c7c56494b9e398f85ad8d81e48dc2d1d1406b450cb4e29b5f56fba6771cca3625b9489bfc38c2dca8528918f704d675b842d9c3f2e29db394861517495a85aeb2c79ee0fea1b6a465df6f1a77814d8a1bf103749bd7e3c5d92878785c96bbe3d2aebd90fa314913166470884693ad773f8ee2b04493b3128ab7391ce683039eed644ddfe6f7217f56bcb2d13b8efb297c22008f9232c0686f66b4b9ba32254166858904eff53da2131b9719a6b16539877811023ed2af1c99d93ebc78df6e4d2f0ba5b251ff8d0e6af60312f947a0b46abf0bb742ae7ee245890ff457da1d5c59e982bdf7f76a59bea946b3e11336734b0dd3b51b358652fc3f0909bb8702d9206248d8a46dec1394c4fdc06a8e4ab392c0f6411eb2409664bd5b16275d70b6380f228686fa4aadf982e781d6ae130f0bc187781cb8043aaa49da1c7268e366594d7c471008cf24f6eb371e86b5e6b37ac30d963bf59bdbed29c2f0d1cddb54a7711f8ce0b72af6f545c8c24cb39beb3b4576fea4ccfc3cbc11500096f2cbbc596d8845f82a71aca5d032460050bb14bd6047d3f9047f1dc6e02dea54233b71136a4da36d6c2f20d581ff9809e772fa93ac7260086a8e563a067525d5160166b1ab69c1a6d13488a8cca843c1706d7bd29905cbc2580dfb22e3750c5cb55939347bf2805e32098b810b1519e33e926390e97d2784c25b783dc02e20187927050ccaf01a61ce07fb0a6489988917d9a158a09dc2d771b1471bf016d4b7ba233e99e03b3e02988d7b22df42e2c8f73540c9bf96e474d43b47d382a4b709270adac891e3949f830be9ea2f4949281df051ecf3b5527fba143897c623453c693346a27893bacd5a5f67cb049f1153baa290d892792a25cc992e0ac092d698fb1f7f9ef206e88c215faf4d0e37ae6e11b82e0546b5181f72af1ac7f5b763ca34f37b1548d3e8e948b50d6fcc9e188167b03624c6747ffc5df0f7f78704be902af07f0ec8b8b26e9571294ec1427526afafba38bbf474ed1ae18cbb0dc0ba1598af496b2e583ebe7d6f0c3e8e153f0256e5676b518fb129c5c946a302fd32babd181894e1ff32ad53bc89e2a9f80e35f844af2873009e45c8d5216d6d3626052bd0d3275363268744c8783cc53a8fc6279aaf280c4c0d008c4c4f2cf19b2ae4fd209ff52feaad93a362d734ac5d5e56482439592f842d72d4825ffa3606e96e7b1d9df08ed5ce951e7b896929c52988c6873bee72f7c6e9dfc51a8c8ad332f91cee7c9386c1ab7699528b5a5eca2e5480e2b94b889c0fde6707a37cd2c4ca03460a935a2fe45955b5c13bfc7bc41f1f6d812032f74b662a2b79f5d125c53a9b9315ca1ceccae8a9c1efa44407845b2d8386b3a5b07566b8acb6bae12e82f1be621420dce6accd07f1128fdaa654d745bc9902c381a285f678d15223b77755b8c71ff7f03e90156499fde42d8875b56aec3c00fc0439c76c9a4dd9653e865e309398a810182c03e108993923d8a88cea8bdd7df103a415c93cd2f4977c577c1159fca9e76775a6071723b0ff69ad12101ef49dca041e7b2545c9b5f9ded7d17dfaaa4e829f016c61141f6ff52549aecd2768107839e388d7403a562b1b64a997bcba57507e99f2ef1f9f54cfc17df9e755b24a9bb3920f52b23ebbb3b0aef12a66ef9dd3c8b338b8c062405a17d7efba23e81cda4ec6a67502e353d9a3e84dfcc4099be65791a84d00bdcdb37b7729aedff86c162246c54eeedcd9bc8aec57270f0e638c8e5c4f4dbbc0ea5cf0c4e6887c7389968cf12a0b3adf7edb8529dd0d18efe72a1839868925342dcefd1cf24583385ac0cc7c7242a9b60303cda2c14f1e7191382a5e9a4fe9831208976f1e063a0c4152d27a32cc2e13cc27a0ccbeadb6b4ec9ba1ad21f85a73db175955d8681cae733e44502f9ac4d13eafc6de3144c83c8c6d89d9882e6d081f68922dd51613c8d294d3d4c40877f584e436fa4e99569683d32e6232c12521cfa341ae950e349c95f5839bfa9d3faab7aefa5eed1e6e54dea82ae84b1c8be29eab05439e6bd8e69ffaffb74514599e9607cd205cad37d71889842fa560e4f0498c35edb4d742be279ac476948da2c49d386b41ae637fbe2580f66f5976d7893fb0e7a160e9d3ae0ff58283114c65a750ba6efe2cb625fa6a01ea685a2097ddbadf126248a7838b20a88423e2c2cf9d924d4821a31979d712a75684dd980da876bf7d98e74d75654d3f7a4fd7eaa79699e6694f868d9b6bec1254991549fc2de99d9beda5551f7f3da86c8ddeab32ac0de969457cf0d11bfb7a399375de10767bb0fabf607cbc52a6378b24bc5ba59dbac9af88e5e6723be62cf1295f2c5278dfdefa1d53b4d2d07f4c86a03572ba091b34c10c31d26d26a9a120cb446f15cbfad5f8c7bf32a2135d99238a45d36e5980565b8bdaba513503d8dc95b401fe3cbbb1306ba0878743fa0825655876bde2d9441eb38b8bbb87eac51b37dfae5d6c73f6162d4a5cf39ef9d5b116cfb231960ba3e72e28b66720b4bb187d643485b68f39d4a44ca6ae543678c8270d1bcd69cb29f39467ccb6e8d0499da811e18ef82b51098e2ca862b5c59d3589294a145521c07093b7b85273bc5fd73f641291c5d07724bcacd1bd5ec12f3609bc726e16b7d7fa26388433b9cfd585f629753ea8e8ffcc3654fe30490f676c0b15e3402f8bd138ad438b76c082335bea5be45c07e970d98389faea64caa8714c841c0ea7da7f7f7f437d320552fcaaf3b8a279ce88e55b122610d03339bcfe66dcd18d66a6c40b73fc059f6231faadf38800cce7585988e0b0c44b1d0786f2acf52ffd783202df39e27bb503e747d8d275c369e25b2fecc1e6d92618bb402b315969294793cff34bc4f44f04ab2cf1ff18b27892af0f45a0523ca39a705b4d70b50091b921a6314c4349df1f3e4eb9335b285fbea3e9df6d02035bedae861b4d3ae3c6ddc7c685ccb6397ce4415c95c6925ccb7073ccfd9a12ecc80d71ad3bac2cf027e88060ba7397d4c3aa1d70683d270ce4fa5b1a8b56868bd101c20fb85f54a59b0cdbf4ab15bb88cf236c0f91706d20a5cb907ae5f89bc42e4b8c04e21fca65f214194d4e9855d9de035e9c74dd7bdcc5ac7cd7ad28c70c8366f86283613e021479cd53afcfd4b47236b6e95c6c1581f614c340264839a6315b6403dd1bae832aebbb6bd5a387335dc14f0c0ecb8fd8f0714935f5332a79813bf8220b21f2317e00cd0a308d55aa3dae5163066eebbc03cd4e43610aad571628923d956b8ea7ebcb99d22272d9a5b7d3907acf491d4cae7b844a5dd6cb8e5436fbe8535ab0a51cf9effd6063161066669f14d55c5407184fb76c1b2dfb98d145f3311d60f43856d81b9cdbfccf0c7d70f86fbf0fe2923233e61ac7a5992ac651e23f7bde0c9cea209f51b92071d2fdbc27af36fde6dce76248e3116c7d384e18a77186080c6163abbbc079198d173817d066a82062082da90abf7c08461fff3c9d99f8207d6c66a8881c05ab98b05e17d683570e707e178fe0a41bcbff1a171bd39f6cc2f89e3f49f97a7de95dc69a5d7618a41861d64ffac223c616d91d5b6e049c76f91e4f6b5c7b62874d6e96a4c5cb5c89234126d87b50de4fca6207df9e602161917e0ca00ec7a22c467ec956ac3ae5765ddc7289fab09711704d1dbc6101d61a6ffeaf3418be4de46d2b309912e9a927f03d3419c20f858095faccbe7339bd74681622bbb4cd79b58292095ae3d49c52dce0163a23adfdfff490d4425de3e9dff251c7a5f609ca326d8a72506ea8f387689d08907946a38d35c2330a7d00d1fc445e1321a3d5ef5f658d3851447c84e12cff12800c36734506e7295e74ed4779496efbc0af2af7d8c31c16bff194fb0be25cd1abd3c4685d7bd520a7461a1e453a7752e7f8602dfa965a3d767f10588b444fd6365c2a08c740c6d7cf7394949493e18b7b7d32ecaf4ee3ec2b908d1cf5d51d0c59529adbccda64547465be1c47b0071dabcdaf1e6bbaf6c1b53cb1aad965dc820501dcc88906bac9a660545565d7b8d7ad2d76b4c61c49b181c3d4fdd0d251da78467ffe53aec4931cfaa949075a66bb2513c9f896b0d4dd36ae75f32968838df9e6e6c5b64e01a5756e1b15ffe368280f346f53d7f4a96374c2a411f7b8e3976c0d5dda2e845ed3f8b56c4dca4ab3841d629bb41c324a1428cfb6e542abf72e2939941d995b2e5ad73ccb732e0ca6cf9c78c9f5e71152b91172e626cc48dead5e096293f408efbe7e708ba92906aed709fc13798952b063e90551ea8661cdc804c234c895d267b0007efc038d8bb001dae2f79043e529810303ba9bb3f1435a4ef4303c189ce836b7daf00806002deda945243349dde59fb51a28aaac1791974ac18cdb4978b87e5971974077d92337a0528d42be1db59ea3ccc50b4825d5e4a6e46ccf80e19d0a95c9c5de6de2da1173b0f51ebc0c0b7e109c40b519f0a0f29bd8547773973f8f82474bdf0c95a3b4733ec418702f92b6cbffcd03dafdbea0c4ffe269122726fef70d6db0bfe1d0a0ff2d711d17bf37d59fc3438999f2fe30f81c379ce296cf9abefaac392c6938cb15ac6928f4f330bcdcbe4e10f04109f5be298f21e0b492ec6f585c3cae1402f48675176476939479c7cb3ec18b1fafaeb3a2165aa7ee8f914dc25f0673298db2dc948d69379f937fd95947d42b1e88121b8bd4f31d2411ac500aa9f216d1e65393cbcaf0ef5f3f48443343f8ee71cf92329ae4dfd1d2ca4bf6417ec5634c91dc816f660c9d7fc2b76d24cddddf07cd6147576a061f7507f601f8436c353b34198e0422d552f2d9f5f1a588a6f1637c511b528b0cbc265e77c2270a1420e048773fa71bf5bad7ba50aebd07a6a634022079cf68663076aebb9086793a6aff397a9a0b2a2c7c4fea6b9d9e1677b2fc682521658503c6653ef32e803379ad42b8f5ad2cfc67c13e9a0b607f00d81b0062b354b28e01417422a7063d5fd961a5e7d91e7d4ffa01ae7a631bce9ad48652497166a552ea80c1329ad726d18e929d0e82ee0d3857487a35b6feba18e5a6b70f596ed22d28d22e74a6f9f1dfec34bc848a3b5dd75ba8edd7b4705cb77d61158a8713e898aaaf600426cac7dec66fe398979393c4db11cab53f3a45437603b9ac62fe0f0ba30502d98c0e3df605139ce8db14aa4749bdb36442cfc081e1c61a99aaa9162e73036c4277685439d875367a7ea6b66b0d75288449a134881bb4827225e0b493bba1733a05a102b2ae7bd8c205e049bad89a0aa5c923aa83999bf37918b450c058ba7ea05265ff9538b03bfb5a9d5e67dd28fd42b25401424e6ecffce2b702136514d7d30f1d31da741c290176a70bb13990d0b617d4fb9a3e50c08f4b106a6e47a4eb54afc0b65780e8d856aa5b1e6c7e23d15458e89b71b3aa75dd09da93fca96106c54c5d5385ec1ea23c60593dbd5bbb37f3012b6117441924466dea7c5c64417f6a16e6377b499e25bb9e3d75dddaf8dda10d9a5c99d8155fd6d04622c5bb69f095a75f3ce19fbc85fc420612165d27854e66620700625bda7ce44f1452dbffb1ff9b76938f1313e51d9d1317d5257dc5248e276b02487b090284bbc2e87750e74cecc9240e24791b0e4b96e8973bbafade0521689f0d09d4a4fdce3a7d8628cea7da80b4d57e8f8503f94e2def67cbdc3ea2fb3f368a50cc8c948b1343144e1627e9407ef005554b03b2fd1b5f16354b2ba3ee8b80dde295050af708bc95add299c756ea3506a66f59e562351da5aa99934c1620c64575e8d520f61cd794c8c8977620d15feb3bc83208e357a0fd76bfd52f4f55775cd4226742ba4044194d7bb028ad3128591b408ed9bd35050d14effa2de2f4d4fc882490b3c589ac182d6d7056a55f1a36a502126e32ada404e8867c56e49ee82988055a17145d2c1ceedab9c5510fcdef3ce3c608ebd88e776892df2e98bc0a363cc4c7647c9dca9b520d9b64b28f0fa82362c238aa06e3241717970aa85c3cb40c018fda5e9ba09ac35ee971d9a37847346e36c4f8eea72a8fbe41f2ea8191965d3b35ad5b903139e90b356e51bc14b9b804b2b7e9867d975ef18f07429882b607635eb3f7b951cc0e45260cc25dee1ce3caec647823600994cc268af4215a9688a61bc0424601fef1f88f321dd851e76f82694a90d9f6410bd40223d2615bbb8c5cd115a35c239a13193a4c1dbb89d3054c36377c506e4610a5e4afb46e78dfa96e7e0bf0b642e668f34d9c90d873e8a7172f3350e7245a399d422e3ca7ed2c4592554021319e3f7989850a21f66a2bfa2a979c587b3ae12306980f842923e27ee754b0c8811e2da3db89652361cb2929eb01ddc09552c3f82e24e8802f80b470592d989b292d98e865f9128ec7f192faadb7c50c5a42fc14f3709b7af45750bb52ac35ac07e1b4fe3bcf7aecbb3c51e6b96263454580b830de2435fe7423eda241105d5ac301d636216d4f3c2506a4e530621bec2e67999606722400e202b64655b4dd7dd93fafe2f04081f4928ff21d9376405db1113acebc2de7ba9ab8481c53a7dab60eaf0b3015ac75830e43e99ed3d5d8b3d16dbed309c4666d8f1981e36b02db9f067e1704fbb17005ecf288462676c9610a1b5a58adb3ca3c9ca37388f8b260832a3d3127cb05531e37f7fc732b2655c50f9e8467c75349545de36e8c72ae892c9e170854ff5b09c2ff04bb1def012fd09c2a019de08b91ba88bef81733e25693d6f877364a3adac58d2565d4eaaaf4c0b5a6f73a53ae9a1e3f6bebe157144a2c68189876bcda1fcae8db029ec986c6ed124c87f4b90f47c673485fa1f2fdf1f7fab0c3c661a3a1f1c642b3be9d1ef3ec0f7839814e8a09a032f2880a9f5452095794c3c3bf2f7b402b2df11de09cf8eec7d5c2eba94c87f236c12e6347ef8a06eaea55446d7abd29a18a82d39201a2d03a474413990d896fa43af7a14d63091e6761af3c59afeb704a8a3c22d17d0c11605ce69c72f53ce7b7cf0c03ff057d40d16d2374834ecd58bcbb57d14e265785ee0d36f30414e873677cafcab888c141ac6959579264425d4cf04597000437a2f57cf741e80f2d3724bb7cf794020656cf85302f7852acdeb577b8009b04639bb9171ab0ee0fd05273733e589b21bb5d9b19db705e995197bfb4b46d09c3e8a5cf04fa0f43d428da0ca40af4ae0b8119f7b2a8352c1d2c18c9564277a59708f7d9e6012ceaa2426fa13e332d1bee4b8ab4454a71ae3ff7ea88000e00a98167360b3805ba9a61f58b9d8a4e48edcc3fb2a9a984b604791f2391a1990bb0ddaf1548cef68e05140442d9d129536102bf177d11a7d0c69cedc7d6ceeeff1295fb52433d2438ad0a8c368d23d6da2e128f8e4181ebf20f754a36fcb8294394cb87ec072b12965da0cd6f1043afbcce5760a01e8902b5af8902771861d4471f1ef2078b3f734bbb73860804fa34e2f970adf44f37d23e8e648eda68dc95a9e64804b47d7769503ba873a66a61425164c8adc519a988f18bd1291420fd63e18dcdb240116e05842956d8f7ac9af26c0ccd0db2cc3b6b01b66da8e359e56e5fd8fe5b464484fc368ddee89a2cb993257b36bba1e385280418860580669a2662743771f6428be373851245451287bbb16301dbd24e90aa15228b7bbc164d3a205ecdeae28cc8db0698abc659950013431045ec21ae520dfe637c899421549f621a759ae9d0801c81b217922a9725e8b4686d744097af940dbbacdec49c928fe2fe19f148c77c150c94eb0c8ccffc7b97d4be92d41afa1a749d2d61e21b6d66ce3b256fe90945a7e4aa3cbaf4f1ef35c93a024782f3746ffa3a547b0c05b7feefbbc9df878c3bd9da26cc6d6d6c5a2646f56d0a1120ab9ffd4d4582eb5ff911d396f831bca19bc5d9c08b5c20ebe13cf138667effb15f07c88d894793cda408728898df4867490a776753cadc6188b75f6d7187ec6d38747fd775a5c55c603c0ffcf344174ba5607241d1503d309d5e8178b4626ee1b3a9d02465f71bbe21588f46864796b2a8da4de048e325130bd5d69f0072e70496c2903e92a5a0997f5ffc403ff29843c99ca124108ca267e94a9534fa6cb1f94a3953fcc97457bdde6ec6105581f1eec4301e2cb79e6d5ebaf4e71302278188f09aa9aba55c60b87700ded2eb95f163838b5c0a2ebf10010e898cddbad1138e3edfd98cd68f9e46cdd7d7dd1ddf5b0458570f05dfbb137831bca3a702dcecab04038760da7fc5f27bd2c5c7b768b01da21a3d84a5ba6e7b1aa569159befdd27e19e071193fb50cf0625faa2fa8d3dccc64fb7f7050b7895ffa31ea132d9d964131bdb5312ee67bc96546a4a58cc59caf884ea8cb343467a7f42a261a7fb85ccd68c87706c996c5e41fa2f1c0aea641212f114f7ef52190b885585496689d84fd3eac39c236c905823177b67090e5b930dc5f94a494d9dce31e96c9ead5dd60f35ad547dff3804936fcd2556725c45abd78974affa8f614d43410fb72632280130713da7a4d19a6962aa018a956d2d3fccf7db0aad89595f1c1e06debe5cc4dd3b2c77702eaeb74c5238b2ac48138272d11fa17a664e31004c1bb4dc8e16a34fc6da9814a4047ed4399f69ea0f5d17000515d7b079df9401eb6ab7c6214f8abc46f1203571bb596b7fdff6f3b7717867f093b4354690fa8c025de2d4beaf0dd0292e12c621b914d080794a94bbfd9b8f794d1be9ec0f6b7e917805d460635c9c7d4ea1bf633efd358329332c5fccb4607b30211b631ebfa7a99aab764c0b90fe5d6f7cc412cd228e13d06e6684cde3f0309dc93ec5eb017f43c5fc075a20cd83a6058602b20b21f9fab62ee154568edc09faff4b67b00cb0595944e93eaa56c2edb020f04ff52f22644df945c6f23044461bc8aacd34a30e8be52acd70c0b8355d544732c0debc69a92d8f6e6c8f52af29e66aa3f43c2f3b0d4dfed672dc154358103076a629964f5654553a83e8ca0b38c00f7dabdbb471f77fc51dca90ff4ef348cf928692c90614f3be26738c509d8c122f5eec75cb7744d30bdb88d9286dde9f4be676138cb4c298368280eebb2adbb945fe1f99930fb7e26a2171d9d4f5abe0cfb93df7d6f418c3df9218cbecd785ac500be8385dfc9391ae9e1506cb48575dca9324aa060595997977f735176df60d312ffa4edb4332e53a8ee4f29a449f4b6a7c75e2cce47328eaad6f8b088eef82568c1344bb20b13b2bf2dfabb0dc5c5d9fa12aaeebf8dfec4745a446091922c95de3e1b005594204da990626d4d1f979d8064129a666a69680222f2a262bf6e22df77d7e5ba80921c11bd505abcddbb36e0784dbe6a7d61233f73939718881041ec8afb2b5ae72bb705b5bdb5cb0fa805e50c670eb4de9a2326ea2d229618cbae8057aa866667b01ed48858db55097777a21641f762a40b2e3e7fb8a6c4d83cdcc0af20ad3d0b6a9ce0d603320fee6776035e0c86f66c6fc3d3e4a093200162e5c08a2a2875a3a6ad0e5656de40045a6aa700d29ed888c554a36e46bc5c8f221a615fa870636f35008ae71b4537a057c92e47ed82cacbd187e5bb7f8326d9c316030e125e3ee9ed7e02b5d05d0e7d063859148ea7ebe3998befa713d654f2736c9985f0e42875256eadb028d5c582373a972037dc5451e87cd9993ff50bbbc0d9d39e6125ca833d989d648affc64c5b73f12641c181becedadc273411a0b11f136a7e95c94772148a445f919b463f09776722578e02871d0b5d2795b34093681bc72d53b4bd1290df2eb38a642c9d7b2928bdf92830afeeeecbaefdf9b66d572c97ff74ff8c511aa04df0f9746adb0eb0451dfa8adc6c1b87dc4277a0c0030d2ffac3664a1cdd1fab5eb51479ee61c6f1c64c037939a6c2a8b56404dcd14c8ec45cc6a958e30e9034467846b19605c7a738950e896f79c8c116fb1905486841de390d5500dc9563516b6caec4d4c9ddfd1f49eb789ff453ada09c1e12579373e6465a9368b28b0f94697e9d63e8e3f5c2f09fbed447a34f98b495f0e13b90d478ccf71f984eaf14b9a9341cbadb8ca229697b7fed487bebf59aa05f567d74f8aa2d76cd5391787163b3e463b2abea99187527791f01011984e4aab13e4603d7e4df1a014d5e9a2ce949156307463c350bfb67cb683b2f116037af1d1222904d4955e835a04d51ce2fa6153e27477ff3813472ea4feaccce2afa9e517aa6e59bae9bd477a39e8ee4985fcac9e5a1f9f70274c11d1ae95f8f3d8f93edadd3d2e426b2fae80446a87ffed57011ff9a6c86aa7a1100523dd958ee1103069b35d1b118d7503e3931b8b5bf2ea2d369c2398a4bbf2a029e926c6fe4c780a4e10fad6ee750b4433a193e1edd362f027ad46d11204997e6e6eac1df7cb8a5449e1e38ea2b73e953957ee85725bc8644d3ac78ce0900c946cebcd5f83e1c1a5604b6d6db7ce284e2c9a8a282712f38762bb554976294b40b75fa68cd60965cc0c84a2658c75891f4f7c226c4f1a1cc24dd7903e55c6066f691bad7b45b6ad0595cad135d376c2ba3de6f5cc6896fa0114a4e9057f4e4a01bd87d8aca901fd06ff681764ab01a3b9d2a6fbd353d28a0b50d2b3d2f6ec42660ad4afb6dfd44fe426fbfae64d51be9a4142ed343ac8acbbaff2f19d3695cec03311975c0ff46d286ea3ed053a23b6c0c505da123a0a1297f0674034d81610f119249492a2b896be551a69fa2933f514049e67a90a7566995b90c08cc791e1df0b51e34d72c36097b9f3703435f186e3db4d94f47c30bc244d47718210439e2d62e770e35c0772158f84e91083d6247146b31fc88220ec80778d05b430d1eb94f823eb879b308f7029799952bbf75cd6d9c7f8099eff3d00c3f7ab6cb9e770ebbbf505c18fc52b8f0854f3dc73a8bfcff49e556432c3734b51e2cb4794f4e9dcd66cacb4edb8ba7102afa995cc0b2191917ea47539e9f2c191a85b2ad43b8b60d9efeb39a128087419d91d14fa4a2fc1c670f3c1acc4d5f83c49405eebd37c357b98ddf4028028ddad8fa2167979e14ffcb3888ee087915f29301d3673f2b0e5a105688c5bb2c6121b03055524ff99ccac4431ca79132069803b78b6538f1d51a2539fd77eaea54d59aa1e21ebff2c31bcc68cc22b9bf255c86453fda48a18d6f1aef83e3c378c2a54f8c41c0dff45ca4b63fa7c2245d5058495e7fdd107d37847a626c5dcecdbdb72e65df90087115aa6181ebea187dce5bc6142d28917ac1584d4ec07b9b23a1227c8ec4cbd7df0988b1e0b984d5d2a06726d054991b8a57407f18d79a6c0ab7746aed3010aba5062ae094107d02bd3a34741631b1d379b16397225b58e7bd3f2cf52561e4a7ddb6931b6ff7462ce1d1ac9e9b8718bf987c3dbe0afb18daab53418b873c2e544d815774950455500ab26d4b3ed717667b231d14971681105fb19989f4e2bbbe02da211c3d8ba2799c144a79dc381c048460a6574534ff37405993854ef1bb375f5d2ff4fdd62a6d2fd3caf229683a48103a52dcb8f141d4def57e6731da4299901fd16b99cf706622eda790f224a6a56e41ead0806eb943b4731f5507e0c81fbb39edae4e42f7e33a40514c72003b34fd2f0fd6f0e51fd492d72f6cbf14a9d255c47e2416d7c983a0046922adb5f7201448b5e4054aefe63257db4cb142a67c7b1c103d5e69f3efc79446c5f05e7cae9d31a2849136e62590f3427477c9633432884691231506db1eca731fea3590c57d64f452258188c70859fb66ca48e774eb0b55507eca980c8bbf2fa6f80e9d152b9598d878ff9de370958caba66a1fc6be8986fefea2c17d0e1beb7ba96b31c51b02d4b043dbb0d78b48f494473d5af52011b78374859f852218d06284d37fb2e7f2bdffc5ef8fbb9d4f22ddc054cedd199cdb89f5ddd2159c6c377f941ddd434234c238793acee506917b0f415b12c13a55752b475100072bca2eea567844c82dde1f35a35d44801b7958c346cea22fd7e721f2fa5b5275c62efa13f948d4670a3c6b9ac5908b2ca9ed85a652665f81424a0c25debef52c986e8ff6106e4da462400b91232084b8dcf9c457e00d0cde13e8776794739b2639621a18390d96699788bccad7c9d1e279384811b05bd2d5b21038a777a5f71351ec785d3ad639aecd960dd934dc5a2f970e3a23ab3bbc89ae14385b17d445fcea99bcacad91e5a3bf92e2d369f6c9cb4f1d383eedd03c64a18af611f1d5bfe810f9ad5f3fe4eb775394f34fa5b10d841dedd18dbca2a461a3ca02503ceb29a180e14586fe6ac2a319354aa53046dbc6ccb90aa37ad5aee88ccd83bee37146788bd333f961b884cd14e8c9853d7528ba3c72dc2ed887f5328c43b2a90515602873415a3ced446e386d61a2e35f9db05f5d73b38cd56b7a45cfe35dcf9583c4bfd50f50319f1964c5f129dd27eee473c91d42f01c5a5a207944ad657dfad2439dfad9e09994d56a838854d5b8c1d2325e3c8c686f6cef2f93b30e4000bfb3b37c128f886a88b32cd0f02dbbd01183f62d2b04e43d5534d56db1b27761b5876c93bccdfcec1b5f770879a912a462e38a567a409f3637fca03030fa2976213accbc62fba1b210bdbec8893f31d8c205fc777aa3cb96e5de0519ae06873dc773b3b63e751357de4496bd28edc449d1a8203909740c9503adddd24493568ff665086e1a619f124e2d3a04d5054b2345870ddcb9bcfb9bb6cfe2601bc2701aeef0325b1d94c91c0679071b5f939a43f2de9ee2cb3aa45475453795fc7143b32f5b9fee38bec8de2ee301629e1158f483e4f1c2a1a20881bdd4dd1914a650f29f28400d068905f69bc74d2b266e80f06786ecaba9c39ca6ba9c3f091408ad228be10b9d25a1a0062365b55b5c56e2baa3f6b359eaa1c9882763a71645938480e9c2782176b1eb5d0a44279b9308a3448ef033faa56f6a73f4ddc646430592c77c620568b02fec64b91d36150b0fb8e3a7949b21c56d51557cbe303869c7a811a14ab2443d7adfe2145e97c9f58570990a02ddcefb1dc1aa5273ddfb2ba22e05eb72865e562fb20f313aa66cebcfe7a82c8a3280daddf537f46caa7de9b19b53ed43080cc4d588764363dfd764e6947def7893573df69893e430d67cebc2fe87bf85c63fcae737a8fe8f650a26c6bce134f0404fcb664b8102ae8514a17078252032d2841611cabdc1717eb9b7d1fc8474433d7e7739231c1d1441d45022c0154ca43f0bc1f8ffaa452e14715266c3d20b95d06c36f629d113e87468c5459d67e509a9c4b240c960b2213644dd49d5184234057959e3d8290b2deed2b6f66f5d8349aa90027ccfbf4580950de20ac9fd3a602a4b421ba16680426533f297a7cbc5cc66791bbeeb5af669074099e58c4751a1535a60246ae94586f01f82c14bc705bd0000be0cad09bc2508476f43dcf193dfd780aaa40b70b2e08c8d594d73a4fd4a22792e6fd64a68853477a574ce945fbad1a006fed01e8d209748433ace44028b7a79228ddd7638e6ce8ef0d5491b4e6aa058511dfa5a807358fd17931eb6a74837523fd06dc28bdd3dc6362e89c9f6a367c7f7893e751d5775d07c86b720ebf5909d3bc3e51067648970cfb29d9338878e6155d04424bb157a87ac6104063c833ddbf5f9d796b03fe22be6cae8c308a43fd547b529cfb84159410d2f03cffe7efc1c1226894c4d761aa2e35ca3f1ff82e9feaa3dfda7f0a8e5be944fc4aa62540dc3f01b77308ae126d9fd2a5a471fedc1edae78469662e9563b3d84edbca4e2b7481074cf597b47a01352866b1988633cf839287cf16127c8d40c83399c1aefc1202c25f3da3afa48412a6a8acc1fd597e0c8d68b0bd064bb847161f4209e25f9a1aaebfb7331aa7eff4fe3400c5aa54f097fa6548b2da094a8f3d381833474b1032c933015d3f4ca298f816751a384a9b958292b978c311b1a8181d4ca0a903c6a4c3f9231793c55fac973b0b825702b72b1de5acfadd2fcd7d26ef98a215b7603eba053e144816dba40d91d29e26b215190869d18d25e463eafd48bf341b33a33889d5ad432460503efc487ca572f19876c57a5360b9eeece0a8a3d2e16ece9cf8c4ec114cb08328d206a19cc330a67db5b479536155f4d8a4989550d7fd7e96e8c6658991675af929febd37ac3bba240dd0588a902ba9ed722fe2c0a81c824c1d4fa20a8c44a5abe1e5108a822d52579b1f709af459581fde9b7af93626e85ffdb67d008aadbb5acc038e05f60838fcb738298cfdf6d7b2a3dd2e1acd5be7f6760875207042766fcdef4d7ef134c43c7e4392ca7c2f2740d5de457db466785c74ab7474629d8b7ee72e83c3d1c5ce918190dac5fab3a37feae0dba65ab66931ba6407f6192da1698c11eb36b8385eb6efe6575fb023bf5b52bc449e26882a4393e86836064c896a02d4db3d3c0eef96de849d76f8dadc297bc5f54153042398eb7020bf9e6336d9450a80949d3c286b517ee988ff1c11789c9fbc21fe5ffd8e8318688a190af74c4bd3753b1ede648f46cdf6fc563cf4e5a796e8cfdee618b58c8539b739283aab6109e86eaafd7bb0cbad08a9efdb92abf66c33f5488475d1880b79cde0d33b126299d690126559f49635f09258ce64cd7cbdd7e91ebc7e18b786d142a5e4e4f96b6f818b8077276a242a2800adf66be4666a47e597466ab4b6ebb43c81f93ef6d75bb815cf2ef0710ff2279a2e27f6dde955f89451007d441e36d9b78df051eadbf4deaee968fdef049f6f0ac0ecaa7d477c07cf2987f7ad67d02423a9b840e2b533e69981621c97db403d5f0f3f3a18d005e485ff1db3d2c7129940e7f4c16676f186b7107ae5c4e0f328da6f29df3f35553749b008cc46c00709f8b87102fe9ac242e98db0b6eed851972b263dd1961ec1099c5e3bb36256f56a63ef4897932307c4697a4829a7de8104eafbeb4f4152860e559f107c2b2f04b9fdeb3deb43d1a681c1c6df9bf6dd5e7e4c886354743850f99d0679717bf680bb54e34d5c88f58a16afda246813db563676608103ca288bb8b8ce169eccc0e9cc67040903dd836a7c0914bd8c551baa101a5310cdc9cfaaea519e84c79d446c9e5c7d578c321540d0256fce439d956d44ea20f469a062fe364bb4080fcef403dd9ea1b0fac92dd53e8e3d1bbcac0da6ede96ba0fc9645bbf594bcc883618328a9dc6e7966dbd30977d38df962bb82bb6b6c0ba0921c73d54ac671413ebf03756deb074f721814726a14acf885546c9d9cf1d305a3e30967794f1df0f66a5398e804a3db1057a8fd987f1b2bb01ee8e2c96f646ea218e3451e0db6866f2d457fc1a321e80fd010fd6371b353c3062e6d06b38c338ad429da171490db1628fbdde75862c1b0ec1f9420d53aff9a4ca5b3022a0ac9f2b3c8648bdfb957a8a61e4231039ea86e2cd165a3898d8786418c6e285b465e2c79dae574e116c5bc3719dc19f30c299475e9a253c8408f43c6a753dcf90b77810f8d24c411458276bac7134883bf6a5b007553071c148493a81199f327f9c527c11c0e3c858a41563002b9564d268b7b28f5a6781d1ae23324552b15363d3bfe13ec64fa8abbc6e8fab98da84aaec76884c826eee23b8423b591c45c9f485bdfd4b0f92bc50a5d35a97e0cd6a180490901563b3897ca29f30c08b23a1c98b2bf0f398107051e3a42fc5efef4b423a69ccc3ac9cfca9fa7531918628dd301452bde9d587461bb06701cbdb0e9422801a6242014e428cdbe11fbc7141f0dcc0afcc7037ef556e9249c45f4792625a37d01d2faf9a296b97db23de0176435e7b3f6b8521efc59bb60bf1f71b9608d4d434e90af0ebd79cc5d52726a2f5b46d8f4448950b155414a0b006722ac38d35450e5afa8b11427cee275b4923401207d432f9c7cf08d4460e4004d384752b237df72616052eb7af4fbdb287a4e4a253ed7774d76aa4aace2ed6ef12a328d251df01a64bac3154bf723462c0e8fd9d64f1c19778aef551f276fc52f9a451a26962155acd41a28dfb8fb968968987afbdf9dea153a8dfd571befbb80943c874b8a019621303bfaab3f76a02a5bae37aaf6b78b78cbf4759a575703480409f52b43b4d056c486b48bcfb0333c48e6d118201bc60dcca7891eb10ebda5d70d5fb4d3db42e1c14acd44513e0425df1bf7d6fde7b0a38a1ac486803d043859f9860136131ea0f35ef130333253bcfc56d3c6e376e830ae77adc12e3fb0de7f5eb2a226fb1eb1adfc49d9f93096ce3de43bdcb5afc80fc1942bd1490e959bea06331ea12cb08c9da2e5d8660b6e951c0d1e5962080194d1d7ef17779394cddd74f06c0d758bbbeae2a13f8083e0a565ce28dda0de64bbac865932559828e0990216a3f35dea1a964a6d2712d7ae8523fc201a8b46975f93b174f340145ce686c0bd57dd5fbfec0cba18263636ae387dbac82f11a89dbbff810e88614b63bfdc0e1f00c7fd236d65ad85f3649da1ed5e67ec534325b265b05b4b3bac4d10c32b8041bcd4cf755f513f278a3a4aa0190fcd773f5a92ce2d999111966efd6fa77edafe88f1d8788950be4315a8516b767f529a707a7a5ffc3195519a734d8c1f10e639e8a65faa25975dbc1f6a5b2ae59a7d073aa29c251635cb1c301e18aa3305837b798cb95986058c8b54885b219b6ff305b722c96109c85d6be8ec4dce400f8dd624e3cb705264d5f6be9f1337134a90ad703c62d5955f19bc37951234f46b3b301db5ccaa7f2e633982202eff017b09bd69dd7d8aa71f3b71fd09be7afe856ceacbb8762e0dcaa5fc324b2ad1464d6f1367412d96a576e15359f146c57d0ca28ad3dbdd33659b603c78da25b22218ac94dda5db85f098295fa621a0a9bf2d71a02d131a7d35a77d5553fb153a1b0afa6633de88436cfd5d177c4b86e556ef319df2a6473050418d16f8566cedb31b26735ef6ccffe6d3ec24ba8318f61b8a0582938e5f2bfe67f1eee8c70f95ff68b6f74c0788fadf0c2fe278d29e720d83c3afbdf3bb017d50c30fe29a74d8206b9a7446bb7009a0042b5503a9133f9b344b925968e40c64165249dee512ed9b54507bdcd932301ce395020bea666d46d68cea8bdfcd1ab30067f1f91aab9c0476b006ef4b4ca8288743a84bca7029dcffd9e3bdbd1c548b76e5dada2d5f7d6a36c32d5f42106a3679b217f0d0f62c7c7a3b9c997fc29430d0b69c195cb427f1aa501e897164c4943f297a6ab77b5c6f528f0f1927328e72c41e8ab14ecd66139fb438fd4d2f643bcbdfba3f27ea89446076e850572eea003417b0fa835f9e7af2904271aef8dbff41519b32d40b02da106830b34b62083327a4365ad5b05c143907a006bffd8d3d82711277643ff12a3d8393fb12badc35ed96e789d340362d57ebee0468fe8f5f626b0e6e1f9fbca6cbf3a8f70abad3d122f62e8a23a1881742c5f7f65c01983e87181ea0121e05d7e91aa9ea8bb1aed2b6208a88018479884cc07094116983d4aab9fbfb0a7d8d7a3acaec185794077e04f1e80c87c7468f1738e9f703808c644c9740731ee96cbf1a9fe85ac16439f4a7bad8c61ad957373c051d6d2b5d526a55d5cf89b7bc5cdd1e474278c9483d18bee49bb5e954281e47395368812154b859860dc9f823bf71e27df1a81a7609a7cef11502547a21ca475a2bcbdaa0a8384c718908ecf1b65520c6985c7eba22ced69e065e32cce130cecca5847342e0390530605bcf944b9bfedd9c23dd6dede75319d63566155fbf45f17700ae9f1633b7fabc32cf29997e16988e1f60a3aaad77c188ce1ea7ea94a1c4e5b38a4ab20a967fd619449b32ab6d855239d034daeec3c6972f4d246b9b03b3ae7587cbd19030ac10ea4c77a9e2b3f3c7fa42f4dab2831587cc153d70b371694d424a48213834fd90ba92d0ca39c93f9204df84689a9dbfb6844966c401e01b157309c94350b628a2f7b3ef7f15c652be47552f2d1d7b64bc398ba2641ac922c9865ffb38c4ecb3c62bb65a8be5539bedf3ec89731974e1b73a0244bb910dc11344f74ff888920592262984e49b22decd67b248ffc061fa02efa46db96594ba7bb328d2a7dca3c6b019e480e539cb626c5f6291ca8d25a5f004866348c7727e433fba01524ca4bda240287b2a108862f598200d14e12fb22c9c50ea19152d8c293f3e67e17542729c604ab567c93f05477dc41292dbbba5fbd2f366262ee6c1749515f84583fc9e0b3cd1cb4306d613eb360d0c326a0df47e2f843bbfd9e114eb58e5255cbf6d3fccd541ad99056aff5da8ae17c4102f3a095d179f9254d6879ac9571c1b79173f08bd0910e70ad64e26949e6ac28b1cb54057e7644e2caf464f5b9e04a497c192075746b9c2a894c3c13203bfca7bb8ba0b7fccc42fe370ff4cf83b7ff10b0d4faa97fdcec1ae7d6123e1aca8e32b073b600fde94288760ef26a4abfa6827c48b4599b9d4822e72567868d08c65f6dada18ea5c1a555af9c9c699e7aba76df83fe4b891e072718d6fe39acfa7a6782703de0aaffbd7ae6679d6684bf44a86d3b095722119791d4d385dae7265daa1f221bc9b5b333d39fa0dc6e7f6eec39cb277aeda4e534cfaecf4d9f23a31628975245f119b4418093f891816b106e2cb48a088d53127ed1ed237af3b6a5f0086dbae754dc30cf6372133e13286547ea941ce44c6340518c193daff43f44f715f89806c109317da3ba9bc28e122d95bfb2e415553ab8947a97d76cf6454a063b92169a5c5df43c2b9c6da3ce50b7015ae4bd9766fea68d1757a412feab51bc0f598c941c3773e92bed8997a3ebfe2951da89f54f73176c658e262f47f3860c457ed3944de276ab962ec3f453b9600e9bf754e97729b8906986dc20c14dc30a3728fe47102c04a5a3a0562d151834fb14baec8957fcc8daac7705428d80e69865e21bc8d649127e4d67e38a9678d0d4fcb2aa51fce0c9fdba7696cf82969acfef9deb97e90fc8f1d3be718e78b8c9d9780f76798904c577a670307cab62eb571d429d35e477b96838407ce1ce4c6dbd10b13de2b33a4e4284372928c7d25b6ed8cc04a13577df01c4352d90a23cca7330d66c0d43bc91c1ee9ef987c81163f32e03e19ba225442981ff415970ebcd27a7521c7398350cc680a8a29a547a7bc0d1b117ddc1339d00be87463ca8b33f9b2a5802db2225c6ae5cc0dbb147592d74997d09ea7eb14e6b90c71a132f51a59fd2ce623be8892cdba7091c762f80bf0afe435fcb992490844c5bf4efde1b5a6e9a3d820703e2e0a40abbd0c0cfa777e49e0bf35c25efada30f274e2d02126365e2425dc521791a0b328b525f9ca2944dbd84b68a0b06a1d7360b7899dab2c915ef9ca63803077312502d6cd1435f6c37c019b96685f776f0e6a8b8eb1da9879f68c24d6fff9d389d99dd83de21bb5795b18fafa6a34144c2853633bd71454d0eda0a10827ee99e29c7fdb96cc92456bbbe369fc1c9f89a4a3f640394f5c8acc93667d6e97fbc697496c18e5d820e932fbaaa8e982fbebfc68250412bb87f74324eaae1e012f0ea7748ebe053c730379b9b235e4f60061796828cdf063fab41365b610765de916da02298572fc59c2feafa5529bdbbaf84f9b630958e033d96f97a3c81169d626858ec1c89b9e09ed43496e3d4a5f5e8b75d5901465ff160fbb72a07115d9aa4114075f270792e719ac1d15ba9c095679de3eaa29a3ee8d7faa0cf307bf33a3a2e7d0db206e2fabd354831cc1d6a77ee7147acdeba203e22f9c733e59937701436910a22081943f2dda2e1e033c14a242f1c27f75bfc3c7a3a3400b58a6346f1270d435248633a6097452d9507db12ba4c8ea50c95bd9d9e9cbd46ceb8225b6aa64b98c815dcc831af260a7474a9a6e10f86b6912b84136dcfa9fbc4c5cb6053381368bd897d052bd33e8b68f22b3314e30eaccf497ec24c16ed77eb92e69a68c6a31968d2a7c23c6f6a6d1e0c84b728705e1f7bd11cc368dc88f43aed8b634db03b935bca4500e73a418cf2109187ba76b36b58bc12a3baa5c114cc9d9aa9da1292c5f26e65776b206c6b73e4c8c9df98892df03c8de1e426cd5adfe0b36ebd191d1fcd079b10d0e71cb1710d1efb2f984cca53915673dd8d28af75856f4665763c175b11ce6bb14f8ea6a066e56a1abdcae8f1b921426845fedf78373edc425689a47a3c1f5ae57ddebac612d8bc8c6223f37a8611a961bde11a74b6fe6d56729ec623156f64edf128ff7d968067e9dfd399d5aaa9fad801af73dcfa604b0e12a4fc2422ad43396380aa84399c374e4bd24e23cebcf9fa2a8b64e98bd05b751bcdccef8f7f6639354c969d113ccc2ace5ac9d4c5965fccefd948fd87c598b18abb3e75b80370416b98c00059bb1927863185ce6e9658b4e57be09d210a8ed2ea7361121a60b73a461acc5bf2f2e7592ca0419dd6a605d736d0cffc92b8dfefa920c58c8fa0c626f6067f623c6c50cffc6381baa68bfb3fd9c31e10ca73c2976267001fdbdddb71095d43ef96b7445f98150be103c1c3dc90afb93a4fa37f8d747b2a95d6016a1584eca6b33b7507d4da516a7153c3584746e5ef842849f4d7866a6079da91988ac83cdb784c11b160df0f6ee698efac607c94f664bb5e1320cd5844502ec9c08cbc6a37f038aeac67ad1da9595dd122bbee1c6417ef83615f2a847be593f5f2abd33cb513de3a3a9147b2f417539f15d5a2fdb787113279de8aee2ea83f786fafe9f57316013ced311761e84527dc5023f64dcfc8409287830f818a17d0052ec816e333e507632d01ee7f6694338d95eb72156e1d5b8dce70e452403f16c05b93e73bdb3611a6b61f183e1005023d17ef75e6bf90b7a922f3dc7f0544c18cd2eca2aff52cce2f176e3840cdbed40bffe4eed6cc1e29d16fc02ea413003f9ca89187e53084bf273333e99149f2a364eac4c551076d0e283086e6a3a6af636ca3922b49dd54b805c4125b2372ce438969e1ae42c21270b4f8c7efdd81adaab2bd9667b77263c8ddd3536cd6fc84a40c7fd277cdb6716fb2ed0dca4b673f2282a5ed77030a01f0d34177f253de5e5e7e27301719801e881947634558a17254b13d723dd7e47b3fb1421e307fd3e0fbfecc1c09b61fd96504d624e0687e08bffc1d3dc824e01f4466dd40b162daffb330cf9fc2ce781551637a1fa02ece72aca20f27963a05c7e4206db407dfb76586fc05d045a0d213749fa8fe80d467e07f3d911b2f8ffef90f7e230222396fc5ebef36ce20b05b897a9bec0ad20aa159c671563b098497a0dd49818d36e3d03f8c8b9f8f61d4a1d84dcc61381dc0d9ec9e9dc5cedeb245420633e00a7d80e7d7adb77178486919daeffa3b857111f1ea4b177808e0d39cd6d1d0eb45303187f74cb750c6c3ff9b34b69e3da82a9dce33ffb0bf976aeed625e05c223892a9c903115fd4cafd66e34568a5430f90ecd99233281b0b315153b96c8c586fec7386018f090bf68732129b01edba2de5197f2b25dfc302fcc1135cf00636c4c602df498cbef5b0ecc52cf91aa9231bc531b1f53abf22336f703e2b4212b660cee5b64e33470708b27d98f53b6c9481e30f654a736b56377c7a9c369a2ea8162789326f6c75a92517c5a31e979336dc8ca0138025fab3336d3c1eb11787300621643fdcccb8b89c16c7fdb3f261c80580813897aa453e48b13953b1ac4d46948c610c8dcd37048377f03aefbf2c1a17fbf5d6f6be8333d3d426f381915334b126998b433c08d35bf7a752dca29c93951503f238af3b80834f805882a1711c6fd726f4a018ce5dd2d67821c2ec28acf1c1521507a2e3473b12250097439e70e8bc09424a4ffc4d44536be81acba37355102dcc06916560c2fe9e0d2ac0e078763c7ab41c052f461cd76dca1c2de309c38c7029d6c28cd448b31ec5bb26acd03794134e72649b5cfcea8050d2a1502483d2f33f18d8e463b953b31203258ee6e6a68255761e5d97b831cfe6c2b0708ee3ae23a991bde3ffdb3af2029e71888000fc28d789127e7421f9f95b2b6f40a4456d02035515504f48bd154852acdd353a2e4821b8cdf0639e29aa65c6539ed77c26e670ffe8b52d286895b9ddd594ef4842d7463bd45a4a989ee41b258bd12f7d2d751305b76328ca655dd056c1786ff79f189f10e77700b431b879974ea9c359f368960d2dda0304f2152b1d21e3c98ca764469db713d3dc029bdfa4ff9b4293fc90a66021d13465085f0c5a1135e3821d629962bb13031fc73392140ac46db6c16874629df46639b67fda104279fb8ce612bdc211cf4452285b3a86ce969a4a955435200b45f75abacb9dbf224e1eeecdb019d5adfe40947fd8629a17b83310e942a3ecd7957bd55ced858fb1e0b21f5053d74a36e4139374bcfcaadb5a358f8c007b0c1efe3758a8546315d072edc7a3bc66634de2cda74b43da134d36b2f5be07fd72272fa7786f482da23fa25b007b79faf032a5f4c0ecd7360b7b344f462ef36f8edb8cf8c4c7787f23a7675cec36b40a6df226ff1ced272b0a05a6c6d63d079a246a948ea6e47d1594448fa39f87b9d21c8f4edcd4253839c5a2f4651e2e754b3fc59580147c6153fc2b3fb854b231cf45e0a56a36a110c5b482848ed4ff14d428bc0417161f2cbd0236f977f3f77e45720fa600efe8e5962dc1b2355f2c548878c9ae531530737f0c00698fe7d586bcc5ea66e505ff9c5a097aa565918d00422fe6f26601610fe5ed9f3804471b697f617d11d5a68b261fdf36f0bbb90e68dfe3f3b03641e376e42aed18ae480c4d1cd99f5282bc0975dacbbbe5e90001ffbfff8f06df75b3b190c78124b80a0e7ae6b6722e115bfcc0e3ca74ce35182d60480b62172f0dab81a4a8d4c621a994667610f50199fa7665779e0521f737fc02630a370f29a44123fd830f5b3ea44d45262b2934a88182de3548be481e6e5275fde87b44833928ff1f6182c83697c0dd95307914bd1f295aa211f67bac3cf43f88f7e8e1273028c0aea9d67c853ee02a26f34da8cff732dca5248fa2368891dd777770c6b521f083f6c963467ace454f80c209b6c49add2b0bb4245365d6cf55c537c25a0081b848656147bbb89910ec0f50d92ffb5118a204b4a57b77dced1e6f41f6f38d0cea4c0b03230cb907a4cc82a30c3dc3390f76a4225e60be5ddae1f59330fb171130d12186a15b46dbbd264b1fea84e12b0f5563e0b03a205ad89dddf14f7a0d7ca0907fe625f600c99e6322952d0a0e7a0cea9d1804e7958c0a7230bdf9dd12bee34d24b5450fdb5d3f84826aa5da77785678133aa2bfad398004fbe394b57d7d8607b118f1fc9d35cbb72bcd9f123cd841d4697f91f8074e9d17d0dc05fad718dfc0ee5d6a426481dca89ef71938f1d1d3d3a607a48edbccf75f42b33dec5ff9305044186f1f1dde315ba485e3bd1f20b8c8b77e4222718e04166c24eeec89b5f74d42d234c20d7bd830c8d82793c4c90bb4eb55b3e4a84e2d106bcbf4c67a038414194e1bad4c9004d3d88c0f00cfbcc6ab788ce014700b2a6bdf5d4fc68e7b54ba2056365b4525124868fc6bb4a538ce58f507de6650b3b7e76ff8aa9dd32ad414501d11b1382768754ed59ed99f08fa8bde7cb217e123062e427be08c8bf5681cc82f4d51b9cf37a927bd2f2d898e96a714e7245d5078771886f6ef72aec9fb7d4af3fe7e2e5b528dd105c2a5259d2d025a929057e0a78a00ec264d7665a164c1bcb7e9d1540f8f11ef715ce8a622a076d9b201aa66740bca2a028fb69055642fa957fda2ba917b71690935e036a3da0c9c8d1c63cba8e1117853d40a4240168dbe68b7c1448e5076e9fd721f7083ae05153191ef8ea7197714686f283faf03d64dfc49b5a9ad647b5e9f984be6229a9b96bd1d653f49006ebecbaaad85264359cdefa986f6db97887d6087bc9cc68979d93d6193050b6c6e3c15b974c0724d0157cde6d20adf700b3beb4fa18b53db3f790f01ee198d8d97d7c22143d48b72192b3c6eaf183de754544540721fd92e6f77dbe2914961e114dc263d625747189729011dbc27731307c704e233baebcdb7b61e7d5d76291da91d6491ed13db2cc8598f3f99957b3f0b5894da122fcfb3fb7e428052160632c56d7a22ac892f774b6328e4d990a4117e0d88df2c47718048fd445a3db354be7a2863071a6902af62188d20759cb6cb3cb20131ef3f34e0adc1f156ed69be886aa83dd6df1cd98601e73d2dab106bd86355254c4f4889321c3faa5e1e6c96de88d18bb9553ac31178684b784d9832211cca9dc746065b796650be95938088ef32867e40d814ed2e3ad5b6115bb44be68928318c671248db19ae545ec87f97809931523ca52b02e5108c6213ed3829138d4965db1178ad421c7ce37e0bd76b90f63fbb3cafb65fd7f58f92e680ca2849484e34d6d13981e3eabb386fce09f2c65ca2627d5621173ff403fd88c868991a1119d175aecafcb1e0d6120e712b49ca304d72563e88c011aeb46a334bdf113081d27b28c094171424174941d86701d385bc318286401d408f90e7034b551752dd6366843972d157ba2f8442ac7aaa19a869b2c9874f8a364c28838d96bf1391ecfca8c228364db8c6b2869a3136b2f718588cead3ef42090432a16f276b9c05a78f46f49c24bbfb2998050d4e0093d5218caac7a00f73f64109da56b17808e3d8544123867413f48ebe10f770525240ec8f2737f7d21928252b6b098f5957d6f347bfd19bd4a06c6f630be2c43a4fc0beee39fff50dbcdf28ba3761cd5767ebcda53e89d1e55a4ec4ab344d46da604b97bb30d439cde67562fc58556e0c7c72fa73da6b65ba1005e320c0ef19e6446cdd0a806903cf81d78ddb3e7560e814a0bef79ef9605c636f812c7ef5c2295e794f74dde70407f26aec66607711af13e1603dee7b784890e3f89f14f8a700c3749f976c5ad81a0c87cd4e7cbdf4f8321db793f4c891ee0b13a82fc7b6abdd9b6f6d93fbe400e3d6e5926a69f0d0b0cc61650d2d51df34ecd6c2f3cfce7cc5d18a6e8e4fd500f21dbd263377152a95f0ae3302f6a868f2222ff6e847f6a5d30cef983281e17e08d46624495ebfa7bccae03e8d35000e7488fe056c9f7b56b302561e2a6925ad9c45c367ecc03ce90c5aef8d0d0e3a90fbb54df1c6a60b512715ffd7a81cb124591bbf52833be6d3c176fec1a5a296eb3cb01e399c26006d86402988e279ba309e2ca7db1905ee09e928f82cbceb205fdf611b9d7a08b99c385a6cfe90c4c314fc213462db1f53e2ea4eab977f9b52cf01e6a800520fc2793b9f8bbd70524931bce7775c9b19daecfa93a8655a12a0ceb2a22932f71fc7eda1929b3ac347c80a57f01628505c2dc7a6b657928363de7a783378fda11999ad102c952ecd63301ffb4677af940e87ca4c1fff376f69b58acb23e5496c3ec5e14056b0bc58dd12260d72cf1d248486e3a0c6b7ee5bea8f5a97794103d82b818681bd1f61314f20d0a1253f90643e13b82b6c8756c4ccbb84bd0fc0344a63edc232ee07b5aab4c75a04c65b8dd97c6f19c71c1b8def5bac9491c0b70b8a62f0b54bc3cb151776085533bada0fac5ddca22409dc24629c90b15d60906f444c2cfdd42408275185c9c2618e431c2e8e714f47ac587069b0afb0dd87647b8720d1886b16d9f7368a476475e6d32c4e8b0ac406423c9a924c3ddcc22e226d48854d25c315424d261f6c478940ff3925726b048d8d4e0f313c98df2f16348de01e20821fc9d334881d20f16c8734c96b60ff4cdbef3535ddf524b63f03fe288a784b63dbfde88b43faea5c2175d336fe64d2d446cef545f13f362e7dc9b5f9e67c2e19e4f61499453271c95ec57b636200a94df348636d0ce5b58d6a256338797ec3503a0b9d2e00c7a3c80e3820083c3557125f410af391787f2afa66102f2bd087cc7594170ee8cab252d0638737d628b915d9b03c50282b9f5417ec754ec7ed8d9c3d2d8a6ef6fd14ab755824ff9f53efce054f468f3bafe6c41d6baaae7e347cfad13fa197287a36bf851171aca841c0915a88fe357a2d8ade5c0da268642b7a0481e4da7dfe6fa046bbb834f727e341fca5c4324b5749b7769a598665f25b4e303410bf2cfff2ab5485b85f34f86c2c6584fda2bb8b3558818eee301882ba2e76e3127f9532d6113c859e67c017c97880eca48a808fd874f6660d5314d79e05e11c669609a598e99c12ce4c0327972cc2a4dbef6e2401e47f42f4139e924c2d6880cb4642ea61e935b802b4cbeebc7561c8f73284ccaa3e03b608301cbd0be4b445bb0957950ef999b3a2bd41d6867740465b98d94e5247e84cd2e2cd45d1fabbb422516ebf4c6a3b78e1845d6e586b67649ac625365a371000c52545787780e2ac72314586c867562db270a0e7ecf63338f272d8527fa4cec2db0ded8b866bba1dfecee38b686d242c8ac0cb9827dad72e0fb669365df0d8f8025253168d84428ea8a8f5729adb6a84f3fe717b7456448723c36bb902740df9524403950813fb99e4194665aff7e678ef438cadb8f129d44dfb4a7696d927921ac87fe9dd0e0f6902aed29248eb51fe2871aff2d276467e4f976d4c0b56f485b90e51d561d84742ce1ebea8d394b740f7d1182eac55d542936191dee4b457064b252a83f1b87ffa7e18305e173ba31f30c98cedd7c498ad833adb140c688e3c209de1fc1aaecd78f41cd7edcf7535abca76eddcc4469ca431610998b30d59c60ad957b35541b33c462053915bdd8eac517f824d7d7483df4aba9e5a4c1e693377c96cfb4a6e2bd7a1b8480b77531b1c265f26b7f72ff269608faa0d8ab444885721d68caed9976e79fb3d220af731ab91f3f034f79f5d227d8005a777a104bfdd4dfe02a7da2f3b0262ab1d04152e3aa92382027c975f3d0ca279e59b3ec44206bb135ec618c30c034fdc4a48a89d60ffd2c203c44a78c20f0151c52db05674f22e178392c057c2f20f547baa3a62e82688cd3cdb73040da707330a5989d928134607ba9d906ad466736d84fb38a9510571b359bc48104de57b0ebb92040928235a3e2f2f415dc9d14ed4be250c714df5aefd2801e59906f8120ba4fd41ceaff15db7717b08eec1918d49875989e842b9141e192309c8909dd222d3de3d5ceffc7735f66c3d69ed4ea3dbc0498b56cc3dc07dc54b519495ebba101c2271548ddc653994fc5aa413aa7b5e4d78c65f392c3a7b64b5456a976572b796ee4dd8207cf246091ae6b70b3b417799922a710b4d0575559be6466763eeff1c4b0a21b525093c7524f8db44df95010fde62cd7abac7f09aba95f6afc75175cdd26a334e5c2f62dbf26fc1405816eda2b4473cf0e2770a59627f296a067c908d797f895e866f72a46c0b40133a43f3461153a38b5b379a5c14e538667b02bb826084184f68fefa1bb2eb37e82929af742c6ade9e82c5ea92b5eba1c9108e8e97ba58edfc6e2575f1d445137c6c62b1aa288e0830f2b36d8c4ecf6c8935d7bafcc03db637ca3be1bb20426ba1c44b24e9ce45047bc2c695015c9ef1f223ba49a4b7cff44457b8ed6ff34bf1bda18675365bd27b6e9c2ae34aafdead24781daec5016b3f5c5ba685eb2554e4489e2243195981c12c9c6a38e6debd289316a5275c466fed2b0e07226e04c807514e087c2090adf08b0350c2f746af3585626b8aa6a412c653f4e9601dd73e48fa5d7f3c5d00417096bc1518c499993f98c43a67a8f8b6cde70946347ffa1ff8f8ffe970e4eec97f0cac99bc3500f6a8398101e6a92ff319f0bcdd710288c3d414ac0fb24f0275c8ded375d45aca82b72ddf7961b3acc2a8ecb7b7ac748ecfd2ac2d911f3a6f7e03b4452bb8e5af6bf40c9e40f815bd8c934a7cf6078adad30632026036c634eca769e5c804aba00964c1bcd3d4e31cf69aefcc18225c4f66ddac0753c21a69a3398bfbb7f026259c7a0c9033e3748baef4b4e8ec4ee7ce413c327b3213dd952a44dc9798f5f64e9e3d00292008e36fac78e594c0158ab229147447d58ebe24ab43d3c357535b399993850b2db3908d88c7c3f7975089d3936132a32993eddb03bf1c85e98bbd19965ed73425d29cc8ebc7034375588d235b98c1ff425c9f6afe9d14b050ba25e0919f057279c170fa40e54e2efb6122d5fcfc8d47c74b8d05fa564e8ade92c167948b7306b3d236d61ccebf41f48c3814227c916c558075139de7103dd4ed63374d2d58a224675edd0d0d68f08830a34e7827e046bf2498e95facd617d0f803d257e841a9536a1b64c6bacd822e9d9b0c1a9d20c330403a980213cea2b08e399789f58cc8d32ce4a5d2b467d198e43d590a450a619e1926c73fd45b81d7c0c433ebb9eedd8e3df3e94c3822cf383707bb847eec01157227a24ed99324f64f05a23facee2db3e4c9b7417cdfe3110e60bc238d2707c5f290d50532c14dcead84ba3a5767eac150a81bb6ebf316f0a60e042054b0c0e22cb59ab188e36090246a54c9e80a09785b18fb81eba6094950befd29b4932bb67270d4ee502c87c1eb06f60ca9d9698b09637970acb5c151a17f12a0ae6c0074a29d3b1d8784a1d3454915eda5ad4d768d186c5866d143130247712347ec11bab49e9b3a36030bd93c49e85fdab21ccba28bdf1e7d1efe87d66d67cd7a5afbc881d71e39227a2bfe37c1c5cc1ae67cca8c54abd57cb5020c372d49878a0f1fd5b933ab22e5ead9b26e90152a1a9db835e0cc16688e2212aa5f28ea4644f9f4087e9d4e9b850a8fad3136d1b8ed00759785938d8702e6750fe7e1a531ed19a9126188bb940dc567321d5a947f8f89b87c0e0d64cad4f6aa305d40f8e7ec050a57d768d544f0baf7478b463de7018841588de0ab2e953adce82813a67b6066c72348374db11ebbebc307691d1be1a12c0a9d771873fa0f2d1e5b8875d2497b007b02f14d62824e7c591bd4b90e614ceb452a82f3f77bc6d334b5b57677269522525118390e362fb0137ebe1b4bf1548a50de74211ab62204db4f11dc1c5799175ecc3073503ccc6ee5a400b1e5015948d1bf04363a08dea97726f76250e781c4c6cb4440bda4c76239a99abc42af4e7caebbac98e1cf25f3c54a2a4c24f3dbd75b9660b0e40778acabbc2c57856cfbcb304d2db9b7e018ab67ab4ce4ce1e48e8247b149c1603696457b67effce1e7bb2e6690954395d4c647827659c8252fee26688f7b0f9e4d8ed61caf8bab07dbf56022b08c763e049736b2063b2003347ca78fb228e470c3819ae272ac66ff70ab22b6bb475c6fc0cb9beda9469a89d00c401d6b1f03f92b016e10a46d5ffc9740601b5dc3dac71853d4cc52dd304c51b787a3e46f0a4ba9a3823d1a1e4d47b67a5bf6b14fc4e1b1a9a442ec6261b691dbf0b73864b524b058646b83699ee612506cf0c3420478f23341c04dcaafb0ca0a0241f99c4c15d341d3d452231bf6a3f2c28c6d551a98a6c47f5ff4e2d57f9d2a161d5ae8d0e751d6609bd2904d0f71f5ed362d72484d3b6c050fee10b1b52f5639f4875c549a3eb1492b73094452a802bf6bbdeddaff335e80f5abccc5583dd9252a0a30332517dfc0397c12da5a8f0c32b72d046223f13dc10d5ec46e6cf75237fed72f59fcbe4b0ab998a187e8e559d21b0589338ececdaeff8e15ab7da3ae2e8561e0a3a12e9f9704fde57d8e8656ab21c6755a9a0505eb7e1f03a8a99be51570c692f418384155e7732fb8adc2c61f9efad8110ba45058913cf43913e27d90672179e88e866cadcaca1fedb558ad11754248447c5c24e89531b655d4cad42a13e73b6ea19704a93d769bb0bebb30ba7d78664fb0b3524987bd519e0351f8a5777c9eccce13ae50a046ce8ad6dad9610bdd2fa32dcfe33a0e7e1f083a25ffbf64ee9c584108d8a8a26b02af280d5b6465fcb33b731f21b876a86a59dace1a013eeabe3afb3e91ccf4cdf353e6d5a4497b979658fb5d96308b0f1c7b7363002a2136521d13600948beec87cbb53c1d1925da6b3039cef470590b1f57ac26a329a4e76c0c4ca39efda5fdc71bad65f2242c76184d7c56753131f3ca2340abf2e7e4abfa4ddd12ef80de4b2570d46e2f0230d7f04aeade3ca5337696f3efcf58cdd4925a1bd362ed57e8283a1bc60c905ad5e15bcca16fee6ddcbf415c89de779307311d43a84bc6b548aaee3b6c7e79d44a1ff32a026c2de4598feddc5c80108a405ef13e44c0e935fa535545e4fe420f7c05da5de8e32c20aa58aa705afc6cdb1e4b26bf6f08f167c753fdb1578bc2759f710c8f4b1c224f5a80183ac8a4bd49c2a4fa7d5195d881ffb94b32f783ed35460419d3438d997b086afd99eeab9d52d9b3df05952cbe3ff6e249bdf6b8d72dbb1db580e6056f5290544269597cecb48e1fb7984fbe0fffbcb80931272a379b5d00c551370087a7c68533ddf245cce357b8a3e6d7dd7d1af015f324eb7c9c7ea49c816b31535b077c0d62518dec941b71aefca7bfc9d7f5eab1b82f9b1213e7d6d4662e427142a0899a8814ce98e554707b31b3d0b56421c323172b11d1ca66fe4815f2c39530c0d3809865523b8d216c2638968c9d9186274c5d78a9504e85221b8ceb5a0916864bb1e846a726a3aa7c40fc5e5a02f4a75681bfe63077391d3f7ee4c6a26e56738396f012b0959341ab4cfe4e55918b84cb21fc7a79cdaab01fd6aa83f4a5545d77b6860a35a4f4d90cc3980618f8601ded0de5b241ffce24c0f39452b336018a011d8180e4ea8053199eddc8da51f75fc590b6dd75270fb6e8aa7916dae756fce3074805397d82fb6460a2b1b44bfd333b77b03d2372299be38ca8a274c79ba2e5e55238af7e29e94ffb5d14dfef4e248f9a9e095a9d255a408f7506c92458505dd76acf98ee2241cca99cb444380cf49a3336f8e5b93272cea4acc40742682b3ad375e625885e128526213ffe8db5f58c15b4387c44e17edfd23613bb65c64e047dd1a8b5b8ce03fe14120f2a4aff6973a862b42253d47c16ba4b4b5ae9b8a364c0ffd57234d0831896b72438d5a65e910c1d08e78704908cd3481c2db8d79f9205a80eb893158982e9a2ff74d6f8e5e2c37e785c54bc66d13fe7a591d4d2601ccaf3994fb3777d8b18acfa51535d88f63bceec9fe06736e3a73446bfeed10e463e01f89e7709268ee7dd88a5d266f3dad4583ef532c5815dfc472cf5bf12e5a212664b633818b8fa9b8abfe987258e6ca6e3d6f9c1c68ab0e69a23ee4d2a522719eda1c2f2477e6d20462ad887a543f47f322c34d8b65533a9c9bca607d55f665c7f285aca76b3caa2eb81c665591b35637a79140001acc42de868671d132519105408ea56b9fb577870b535c4e2d5903c03b086357dcd2fc7231516e24721c992292480466d73f846466b1ca63890311b870c7583f67e063dd61f367bf8183d7c89dfbf7a225b6e99f9c529fc86b5d316ea502f3bcff39ee6d3c04da5dd47df10735bc87bcf74da3147881ae62f23473d348b55da5eb901aaeb7457ab07bd797d50fe6eb6575270025f5174d4d556353fea90fd92738aa5cf6206bb6dc92c2958a24b595e52e1b3b378fd99b5779fa78a8587dd840d0c803dab07bddfa783be7609081b2931b1f84339d1ae28252a2f1b115e76a45e3d392b72f43a697dbc9d0f90f60665ee8dc3805be460e861650b6995312e25c9b73472aaa82c0329168d9d80729f047965363205518f34c3fc15b074740c903249e3a9835d362c1439e16e61c2867e4689ed6f9169320745d641546876e5d87004f9aa7c46c532deb1072ef5cf6c8df243b6b88a51348d0ba999cc33edbe38eb262f9c30b43bed1171e6f23f7409c759e69edca3c06f3e7cc752190ebae6d8eb0d0979a752a47ff0c427e95847e83f8977e49416f16f473776f25e5afedd153acbdd2a027f72a7bab571bbfe0d4b84df0436372f2e962e31ea403993212e97d2920a18c16c8eefe2bfbcafc91b1926f21c0ce667bb822da8a9bf5ad0ff45fff63f11ed92af010b4a9998a0dc2d6deea0eff512aab52ecae98b596c2d8dbc9a18624ae46752f6bbe7cf76d95c6de176124b6b04f0b6a94e9bdab439da5e6f37f31de2157732e7ab16437f49d39783708c4ddc36a1a2ccfcc5ad036aa341bde8950a6bdd1636d8a1683ac1511a2dc2d2a059a4895688202c7dcf5ec769bd22801428e8f42ab19dfe825012b40ac43d5a4c20c23ecc389d002b1273234875637004d85d176487b4319627c9560f2548e68f9ea0a117512e4d8069f30390dd7c2f067558b0359ec1b0d7e707f0755da90fc76efb8a98b3b3156629dff810b1a1b134f02a4bead8cf71c2c1c23b3e33462f8d784b5dd3a7b4cc1fe167b271986dcfbea84ee446f23d8159588c5445556d18cd640dada45a6b20d0157a0f0066b7510071d8373d2e0e1b6322efa7d10414ef7e80a71517cc8dc667a0747c1efa96e0e58b3e3eddcf1e8357a6ad386c450711130089df746e0c2ab3a47d125d91e0e84d205ff9c39185fba56105b6c91cd0cc2b5a6620644cf00ee72b758c8e36d9355519823281db877e2739d0da0c08b3188fb6135bbf31129f527abf1fe0b16023b8ca358833a0ef53e58de19740d9a25f5d81a6bd67410f1bc74e2d83d7aeb253f5e7c605ec77ff5d24f0bd6a17d406a2faa1c561d511acbf19c7bc39e635b41425c2dddb19036449626a832c4c9d1946fce2910d9595f3277ef0314607a1b9f78bb3cad371f7b24f8b2b0f2dc5511ec8276293257947765e478d26a65ee2613e887d89befeb7e4b5830dc17ceb92f724bc350cd68364c8c028616e3b4fd2a51ed2ae3ec9ca488c08b690141e1d99f413f34e1fbe1b2734e51f64351f514c5e0b8419a224680b4a759b3e5af438f46e9e765d6481cd652af845ec702f87f3462cbc3d197b7a3ba8fffb6004b82e0c6c262201dff76f2949d00fb2bd22eaa61c87f79fd2eff956db7ae0cff3613caec13e0b52d2acf1ccd0360721dde2eef5c277fc28263f1c4e2e30aa60d93ce96782a28b123b30d795250f367efd432fbb6b84bac0c80a41977ccab08387a6fc8cc8713d4ac8e9996a95a3cde949197bb54c1b658dc99f29c21d69f5863ab179040a00e666961dfdc0c45716931ba61dfa01669b44f36fc2bc6d3e632b020cad618a89cd29759d307e678fd31ae2bb4e73c1b5e7d182da43c7ac5f5574d6eefd56966d297253e67b44a25ffc6fc405cc8932d6599dd6e11b2ed1c342605f8d33f630cda847fdc16fdcdb6c9c0f16f4618f0aca2bc40d52fc169e180e40fec26f8c89d7048bb0f5d2639986133e14805d2f7eb0d6082062ce5172aaadcf4787c5c9a8d684ff4943c5bfd2b03f166a14ea4afa1f0073ec4fce382c9f54584e3cd1c2ad026f3f5c1b97970569d9c04967cd267ac6ddaf8b1d7e283b19cff33f9f5a328ca24f88cfc5def2621518c7f190ca53444f6857cbdb68a0d8b4a1b69da35106332705c1a82b5a5fcf7f67b28fc226ad40cd37738d8d93c8739a037783fb0bb38322b7641a8d2fe9ec0980f77b0030625d19f62239e4357aa85b2aa662aef5409cf0b62cb40c9e1a995f425a39599138b14cb14d7db3c8913f88a7cb66e5e871dedd9c1193434d7a93efdfa253cf294ec101a9fe0a2ce37faffa431c797cc33cc0af4cac2b6b03595965a1a4debc133212a23cb7ec049f2bfde7065957def38de28cda430b85d5e8ef2e52149aadc11fa59d3e148f8c0f64975d434e346decb723369175e49610901432d546232bc29439ae8c177598ac656fca77813af9560e6a4e2890ac465a26c19f5fa3c7b003f60dc7746cb62c1ca41e537d0412574227e0ae650ff6b16b56df5b3995705ea5e67b066fd456ec608e79cc47b61c1c0fcd988364d401da569d83b12f02ca2e0f0da57f32d390bbbe698ae02076d1b21336f7c29da415b4811f60270cca33cec5665a22b2f5b8207005ad19bc3f0c7228a8dd8260c7ebeb7c2376f60aeb60f3d1e389d740ee2bcd609cdbdab137a9cb5ffb0f52d3f034faf06f0b32a397dcca4bff0cf0486dc2c97c78c474284b5e5ac1322164ff5d5d37394e5eb4676016c18f0247c674343227c0fde18e6b7456841a0260631054080461ed1e5e5e78acc3281f816fc7d7c2dfddeed9b0e219d5c8f4245e38e1867b1f22d18b1686b49c5b2d15efe79dd4bcd557f0d11a88c649516535d44b27ac49f4411572fe6eb890ef8cde93d63b068ab04ba9e8d947c38a73b6e95b2ff3658018dd68b2fabe4de378b804811977234184b1da2a32652c737c58c62a16c87b19a2259f49fb3b3e6e89632d7b4c4a34b4bb35019bea8489a9162ac29da019326a6dd5df13333bc99d4661ce3feeeedea2b8679afd2d53f133920083e9e5c7cd5c99bbf807311594a1aeda5832eed9b620954af59e560566986f4e03d982fc0480ebcab208a679fc04a42372b57ec5f12b97080e1fe6b54ae3736d60f14bfe3d8e8a6ee2d5304f11beb1f9951d2ea69a70471868ba310e6268523ce02db677325f642500f12ea5e641a62e5d92a3cce9630b20a4c8bdca57f815a6ed27f13513f727e00c0fcd1dbf5f18c071608093c0ea8d1ba3b594ff7a876602492dcc5525ed5c9138b3fa33e2f5445cd89b8cd03d588336d3e545db1637f1cbec00214313c3d990f0a69fe140f20d686cf1ed66dd7de7ff50dafef98c8d45b9206e4a8c56e74e886b83db545a82bad3740edca6056dc1f091bc263ab54264d396088bf995b7ab3c6aeca4f8398fadd56414f1f58f540c233f6b5083944da06d5b7bcabc49e677a92552f878eeae09b1f5a59a2aa206fdddb3281a3cf4643fee92ec3521aff6bc3f024feca480e26c27172dbf12086642557f6c8eef4d5af91c79ab4ada9496c9807c044bc96d0c65042dd7a01dc99e7160fa52713b1b8b68080f5f0498bae7704090044b3127da8e79b104c988b61c16fb55f9935e97d4b6f73c532c9ff78e5992fc0a03a8f936a4d2f2d7ed3f4ffc7b4884252e789f7f46563bd9762de3c6dedca7c5e9069bb87ec73b70ca2c8bad3aba8980eb28100f74f2017375d53d3f4185c174527acde21535824d647ca7475df7a7501948b17607cbf6aac98eec02037c2516b250197a8b3821be8db45d66a211f66e27cc998b2226404540602dfeced76d27fe67456846221914cc9d69d5901f42c3fcf2ea050d897fad32a5062b4dddac3127808f6135b4b1925517ed350592bb922e6badee81a3387f3a00a9919319260921d149495bdf0166c060ad8ebc36ecc568e83ece1c9d564b09520fa2e16f1fee4cd79ec06485ba84551ca8ab81e940002868fe128a8ef32f84add5f1c3d786d8bb1a794a4e33e7364ec98ffae0d621f2804813fd7e058226a94d6873c5c61b2fea96ac572185ab2a8672f7f1e7764fe9e311076db7c7a6c0b5f2b3258ab3b808cc7909c2596a626caa6cdcb7008d1505ea8558c2eee0657e726127a356898f14dd25b00d2ae19ce8f6030e489af7b21adfbe4b8288942c6297db7412b53c75df4c4c38e0bd7f481d2a2d7be571edbe6932eb7f23504dc9f61886ccbc932a358104c8942772ba6de494b9db75a4e1d63263ae5c482fd54803e8125daf24e6e2f274d18b865e73817ed8d9ba98cf84bc2ac8b32ef3874fa844b3548f3ecf5be74635d3a3cbbef5596837263ef111c81a86f83679d8a4c6d2cdf87ca9b16f67b6ded47990e4747d48edb5583c38c7e2b22eff57b3f1acdba8fb6eca0aadf28e97000891182ae9bd9ddfe655dbbc02463a898aa914c4425057678ee7c0a98e3c38da2d7d4e43bb88ae0a8254e5671d94daba4dfbe7a6fe2bb04abaadb8474856f067c965c5a34114c1f32ef22db0bae9354a0c5a835cf79640e7d516470e3ee3176ac622c11d33b92f0206ce0fdb974e3734c00ee5df3c3f24122aa965cec0480b1a388647eab714275901dd907f04287c7e629619b177ab1bc678fc914df305ab3f48d2489ff10a390a9d6137c66f50813a74c13cc63c1bac0946b799407e0b829d1a5bdcf891cdcbd7b3d0272b4abe6b5356b2e5a36990092a1c3e6c6750309735c3cb57057ba07e59d5087206d4757b425f99f82206de5bb4caa042c2990b81e4d71970190b4d29121dc4d53b8f11e64085f93d6738764419d4ab7bc19ffd2426496999d75f8ac2d8d066fc4da93732f857abc811f98ca79ee6262a8a8cead381ab20c367a198a1fc4c66894085cf11ffc1b721f2334fe9bb8c3c7c5fcfda49280ff9f8e02cc31f3fd67645a29419f239e8698280c53583ae7d235d1af92e75cc16c738f526d20ea2f09cd86ea77033e92f35b44cad20c31b50a06d2fa1654fbd31bfad62978f797961f36129afb4717b311bb05a6f022c9b3776b4141176536f8e4acb5ca107e6c5ff291b2c80a6f9bac7ee1df4cd1fd11d93b91cc73a42d4948d18cfd807b314dcc1bb810a0a9979bc550525bb4ff74b32f0c09cc44d465023ba0754f41a365a08d0d3cb82e1e52a36d8fe2d50de47cba08b489ca913f874a3f4440d0a497f56b798993bba8740474bbb8835723505f225e90fdb4b683f9a0b264b56f5808846938278d46c1fc5ed8643cde453df9831c6b12e18db8c04e6254db4f2b12cc4b32fcd41699cec7e0c15cfebb0020f6c8585d40f1bd561d90e9ff36cff6415f80e4d34e54245f2c6ce230d942b1c7446bd068322a5c1b419adee7399a34ff5d3ee4beaa05c44348eb337418ffd547417fd57597150774da8943c55af1e726090c9a2fcf3d4ed879042000fcbd559b34f96817316929b61a38136d45f10a3acae9504af968f380e3de399a3a382341c345197654f5c3b234c782075665b24ea8f295ce36a328e8ebf6bb987a8cbb387a72eb616be31627e43e38b4226ae951d38cbb43ec5e1686be023c74d98909514be610cc7344c4e8e43808bfeedf6eeb1d2a62b3515bc55fcbe646d168ca77c309aa6b7f7fef4525789d0ca936adbe8f7b9828f7f2ea83b945bad670aa9d3bc4ec40230d32b0d06de36f263228d110b087e2e5602d8a3dada2dbd4a21ac322081011cc8848c5fe91efaa3c3f2646388301c00e4fb6c5be321e151a4aa3f46d3ff55be3dd0dafdb7c6a2dcaf148b48b954996281116711f2d39d19e3d2641822c00c7a13ee44d2b61a3b68c85d8f34129e7086c5a272dcd7d355fcdd6f8367b4cf973666ac1500683f1f26691d45fec73041af962993ef0f2994728c961dee7fe8ca93c50aff325d62c98c7186ff8f8f0eeda3ec271b42424b0b0b6f31d843cb9c80b3ee04c0e7979329227739055665498ac78ff85dec1f50bd3e8b8df53c319a264d3b44872dcd1643f716f51691324171063cf01142a88fb7de68dcac2159d73fc159bea9910a726bd6241811255a126078af8e4c9dccd18ac79def6c968507682d3e78ba6462f62443db7237fbb77a304d3e184f944e0bd270717f1f0351a4b85f6f418afde66069653eeed5e3199106d24e106d77d70893f47a23b280b1a777b5519945e316b8177493dcae5deca13a74c7ae7d7875edf8ab0ecc8738b2fe25b2aeb94e27ed04a3f1653589e7aa9f6bb8ae07609a89667bec60b8265eaef57c6b4a3c1295d1459711c9a6b0cf25627885a3757b7ebd18b90bf7bc5676c3007bcc80859723f5fac6be8c6881f9496b97b664101620abcfbad2f82e1d7b5d306e84b57af28f1c0c422681a6b7527d8e2eac0664105204e29beb1289cf0f2b6cd77e347a7151ef525eead47816c96957beec63db5aef9e2ce77b96ead842273b683546d3bdd4186d964901d6e061b7283d44e0c5264eea663c5044642890d26840759daf8cc98d6ee49b90c899a14bd9c200409df5a7e8aa9f95c297b70b59dd86aeb3281faeb2ff388f5625b58f1558c1c137f777c32cc21149aa1ec534310bd994a0b0bb2527c7f42d89c249ad571bef885580b3f768395151ad91fefc1011dad38bde03443b3aae8027f5607eb6ebf7cf5fddeca65538d641e72106a2c18492336aadcc78c57926ba4c0188781b4c1476fec0771ca91db41c130aff39b6575a8bb37f311159cd87501f1c4026c9a1ba1b3dcf271bfbb104d75ad622c9e1f396fb4b0a9ca72e620b917ea69f84275c6d82cd9df13b906041941318060fed11119bb9d98b8bf6f954aae9249dd7630e237422a6209e83952d02811d7928bdade2edb13eeff3bb5620f65ea5c505c522f81e892e12733c1d9e9775a2657a5626429d9efecc09c433a39955acc1c9ce1950192f11a6e41183ceddc65a47c991aca0943f268062029d1d2140f770cb1669c30e0fb9a5a4e41634789f377881cb21c82cb364c04c003605c2faa718a5d2ff4e0b8754692c2f8f82ec7c63e006768ccadb18f14a61f32257865ff7f15430def00a1f6d6d6cabbeb98b7538884c1152d5a37e4546d0a27e1a6c5a09c82050402eb7e0a554d6785ef3c2af65bbb89bff7de67cf30a0a1405814f0f2780fa4be4846263da314ad5afaa9c154ae0afa1ec686b162e3c790cdd473172cf444f22efe764f6af32b345cc96ad507ee223e829b87131e397fe31ba3ec901aa7a95a6d089fdc7d4da9eb17593ac4577d599e16598be2e5149156869416c5cf5c4455ca6b2e8eaa0d40ce436f48a8ea2ed3cbf949c865fcea663e767e06945492ee3b06d10389ff621731df128e9f85cb7e976797a9cecb45c75c39ba6a7e5cfa7666cf081d502fd0f0a6f50b321a9a8fdf9df8d2074d9b42e43f5ca4b72585fd93b8f983d7134dae9eb1e36cfde033ada7b12d70f1412013ba04f31d64f50f34a60b5ed7c0783fa9cabb0a06e0c500c7220f734703d33a7dbd96db0c36072cee4a1ef340f737aa3f0c1557f18430977770a25d155160135adac68dd89e94d6adbef37c191a3b1a454fead708f7f8d4c98eea23fadd9e3c19c2d37ef0278710a90fcd2267ca1552628a74ee6a55422cbf34433bf9a45974398a3d7743eff9a74b2026574fbbfeae92c5d746fb9747f8cc7c9f917b311b1bd19afe7ac833be1cb37960c09c52aac0a3706ce2e0634c805a5fff12cbc741810bed830df8f1343733ee053c3ad9a858bb096df807f0232344fd29099a1d40b6a599feab4f900fc1d20bcda9bd3b2a88d01342579df9ff415cba766b7da20c9d6fb7e851ce9bc96fcb5ec9e6db5a493d2e5de63d95c879e5e627af636a5801a7cf89d7bc7c94ed780b847144eeeb4073f5951d5a284407c41bbf53243f3caebc40fff4ede0c97678b60b65d273e92b33993677b550174e45a86bcdab3b3e608ace7fba188947e249a22b1c058d9333f560b657e04be5065a2ce6553783ca5e9c9b0bc7c786d1c034da41eb9e82004d4ce71182971e8e6284bddea0f79ee121755ea9ea81eef0db551c2704443d3de8289ea1db751083233964f78f10fac0020edf24c1a25a10407e5c515fcdcbfd3269474064012a2bddd59c8e7b0c651b29017c1d766b66a8bdd93fc6b641deddd0df7bc19c87be570bc5d759dab294e1b6f1a8648c89347cb38ea1ddfc564d312b7425b8d5caddc8f30cf9cf51a19f9a74a566acc272e8e533310fd4f8819264ba81058d2077dfc18372db63791d834c80a9d2856ffe2d33d7534e2df3e44aedea252ee5dcb2dfad9b8dc98eda549ff4c04998afee95ae11cdb8d2e69be1b9ca7fbe88581ce43dd47aa805abf7a7379020197bb4f92e9e0bffa5477a94ad439694744f7856f11a1d3d08429e63acf4b4ce46d0d90504311456a70cb0470cf423a152922527d9dfe59c482954344962b90d83005e01a82024759ab341f93bf9b2200eb537117ab6e56ac9d7085ab0716d4c440a070aa429e67a37834c373725aebe5fef727fc80f226ec85d63a5fef5628ed3fe00f7468d739c6af69317a76dfc2a7fcdce7d7e1df39da63f6086fb26c664a5830cd0af9120abba3b94ea456ce1f719ad0ce5855718e803f60bcec821c6f92a52fd8b65fd58d7a8b5644efde06d23e7449ef2faf7dcf4d06e0dfd51658df074b888b0ffa08c426e7a6acbbd2b802ecb18dc86aa7e4c9b328800e9f156ca1bb81864ad7cca2b32bcd4da64e9d354e35a078c835c2e77f71699a0c214bdc74c0267b30ce4d0b3f52bc40dc72d02a72d6dbfb704108ec654a8e9c2c6934615bd33aec7d2bb8bcbd1db7aa0fdd50661a65643d36d8cea615e5e3621242700c0d49f8c2da7a9d96f824ede67dbeed2dcb45b6c33854fd1a2474a2ef4df91e11a4f8eb10ba1511b3026030b337e147cb467e066d417ee9599de5ef85dc31a4017003464d1d025b67aa463ce5d9862bd2267df2f70df71cea1bae1aca49b7c592dbca0fe34e16292f9e0972b336acc74f3a23b1be5a41cd806f9e6d63c57b7cdd4248e6d8269e79efe4d84d91f951423049e9252ecd83d50b839b5f7a3c9121f8d5bf1b239cbec4900b0bac1b432b87054794f51201d759a0ece33040b20333776ddaf63fdb4e90b26246c8279d963a6a620e1655377d15e9f4b11e5d05056e37809de2ad1a40fdae4bb7bf08e79f431b03a20333629ba0722f524f7cc0fb151ff127c44a803e6b5ab3fa991213b9926dabe23334e66734364aba98b691169973d63bc0244b47e1da0ea6b1facc866b89152fd303c625e864e5855658ea6d92c0aab7c4b622fa1976a317d080aaf8fc428d018c95271c986f805fc3d5bfba66b4627c1183c87122b13e643f159bd8046469944f47c3542c0cd136241b282a317d7d9aff753ecd1e8ed4a482fb08e53e2e696ba767411e1f2c13b1d919258b2d22cb9bf8a948dba5e97e6994c99a7645ced08dc6b485cf29f9559e8c242a5a0a45c188e05bfed7c22012b98886cd15d204387b4c4330fb78e2a269a5c4b4b677bc8c912b229084b4d8e41df556e9db0bb88d6c2c4c3e7b34be858035c416a65a557beb970cedee3fd3f8e32dac239505f5672f8834e382ba530e154b36080eb573f233f30a94be4d3f1bb1e72300275630cef5a6bb9e0ea2ee42953c4f634de2a5b400977662f6474a663b52ab27657c1339534be8f298dbff69887ea9c154f98159921e06157f009e4a03446da811b976ed84b0d697ba8f113bdd5f042d0a883e011dd97f4b4e2be2025a5bc043998a6f88b2bc29f2c2fa453db559709b473af3d1cb9de13c0f3463f9c79b7598043d6b7f61f9857df6d7cfece1a13ed82c643572bf28c3f1fa1551b740215a03c4cb0dc282f1dd429ac5f626d958e3fde2e4c28f3dd88c0eeae25265919eadffcd8e21235fd371f8370f8b6df9ba4f3d73b3a3534225337419af212fabffbd44574bf412f3f9cffadcd3712a5b7e6b672dc62d415777c7ab34c7e93e48d4431e9eabddc121a583f1cedcf6c2e4157dc1a737a0651c229c52dc28e248db173af1244f5c3f28c4b42043fb7b646fcf21662d61fdfadfe94352c9b6aead3f86af5f405a6b414d0a8ec2256aafbb85c21048876527d95918c9b28c7619d98cdc14640adb249da6478d9637aa797e65647869986f793ba66f096ff8b43862f534107cd181f8c996c15e1e96a717b3fa438ef305755821a6838066b30e58ac9d96a0d24ae9713c7beafef319d0f81ceafbcfa200899fcd8aeecc4eb78a14a21adeec4ce26e8b61321ca2b4a844dd04bf3109994555244b8172ababcf7d34affdb3421994985cc5ff6be6c57103a53676964896d8cf6f02fbc2437a9e95d3367f6d65f2f4e04fba5b33601e3a3a83a3dde5dc4eba05c48642fa0a5e0fa231b80e8239bc14c9e993f6cb2c5aa31b092265395b6e7f940278044768621d890e489089d2c97e6b3a024d1058bed122be7575f164b29c2c379339216c0d5e110aa71267cdfbb47432a0911d7cc6d6b39f8ff72e3c5a578e84358ddff3cfaaf943ad7eb2af330bd75827a2124b8a49dbe7ed826706eae07183a001349daeb5611a69523c5ed4b5e14c85d1bba81df66e0005b4e240a5ae29fe96c801ca6738600da2090a13e2db30c1d727fbf0c41b88bb60b57de26b3862d71b485376eacade04d4ad0c3b078d5f266b8692ae1e146ed7d8c9b6d35754a55c914166a9e9b47b0bf3e7267adb9437a9fe2f44572881afadf69b517746287119d37f71c6f97557500cfbc7a4e1d83feb42c5132b5b317e924d48413a97c133cb2e8d6c563d4d5bad055e720416cb6fefa405c6207f29eb478b6990fadaa7016e200fd7519b4b50bcdcc702f786e849a2a0ada1f65bee09c1fdee5aac59446c4a187954c65af58796ae206b3ae22031af394c803f05d72a4ba2324fbcfc188ce1a4d4d00c3f54d190323f668ba73e0671a63ab7fc57705119cc82c083b3f22a0d37e415a131c3885f2866c43ae55ac8f2dd214562561e1f02b7a8350d25d1f09e8f810b8aa743b59c2f7efeacc74fb44c177261fe857e2905cadc742584d15bed155348dafea80b7669e4a374be0145e42953bc6452550042f4454c4f0a0f6d8c0fe9fddc87a7cc48a0cd7b9e25a00555605730bece2d2a247af47ad5b069b5284be19c21ca3af28ed928632343b16c7cb44580165dc298692fd614affb9ff8c029999e99e649192cc56341afa05a5f81a797d90cdc60d10f88ba2ddc281adcb41e98315afaf1e3264f8d71a0b2cdc4d769672f5dbc8d46121475319b938c0b60008899b0756573d78dcf2932c96eed06a07283d360d04e34cb13ba89a35c3dadefc7ce5fbdb946df26a2315b5e84ab0107875cd18d9f7be321e0aa51016f52815fc87f006c3397e8ed421e8fea8dabdcba62fdd4c613063f9d69d22cfb88c72beb2a6cda927b1b296318a86aaae74f09b5cf2f86ed79e053a18c1a37f7048f1afa38f239acc174eb00bc01eb18a12e1fdee857d8569831b151c0ea17bb9e7c2e116b9ab40ed301bb8a4e71347cee34f5bed9121e72d0ae056a22e0957fc2e64675d69b387717ae6ae8c697b8e5b0d9c0bdc206b7135dad3aba861ba3a27bc3bf86b719cf95c4d00b658b5a1192abe4ee41e53370f3e3737e544370b0f284211080e705c2f93f8be1b8d00843d294690597581348fbf2b944dd3be427691b8906f3342fd8e4badfa770c8f56342a07ae2eaaf966ca4c6e340debf71e97f4abc9a41a931c5acee590d89daafd0ffc6a9db65872a41a835aa79eca324eb7b922af8359556b0c55a8e2fd5bcf957c238570a4e94c1b21026340532e31f7a581799da6064c2f0a28a955a71fbbeb52d8a9e46b29bfc9dc25d795e7c24432f65931cc4e85b1c29e53d8d2ef36fe04fb320fd5311a0802117db40228a65c8b094ee9dedcb577124b8e5846bafb63949eb380c74ce3e5effb358127a5a7ef83ea1ea456d98c9320642a36222e1b0a882b8d485e55009d0a5dfbd966783bf50ff72b0a1d8d524483012d76db43a0457d265eb5e6c61103a4cbfb72661851ab185bd68eff290d4de33be43e6b611385464d410ecc2ff129605d15c9933d80bbf95ae93f2c83d7a47ebb96ecce0641376909605a22f2ea79b59c5fa59bd63d6e046ed18cb7552639a69626de868a795ea2b2701c1f943f446fcf8de2f20c0bfffd28ac821a213efb4080c1a618e65be060a1ca059da04e192e8de3984f59d0d09df87ad1b18f5b984646f81a8d927dd24311faaf99170d78e5a5b5f22da8d63510ac026e3a6f50ea46a0d760f27481fca4d3fd9eb76ea9be5c58b1704b8e10bb78cf21cb5b399764e24ddcc3d8da6f880dd29829bc217f9eafd863522c8da56a68d6a7741c2c1f804e85dc8ed4866162bc60616812d3bbb7ce26bc2c9867f1456916f74c69f2526ed5b1409700cdcf18256178f747fc576bfb3481751986694b7891fbcd91dc1b2a5582257679bf1b276d34122a8e2e45644e5ef6ef7f6b1ab986904075caa8e353be4741a5df6a1e74f07d3b4a3ce3f3d2342d28745d39afe0f70d2ff2aadbd62396a3a6d6d822d476bbb583a24cdc92d8ec719b7f894435ce24f0bec4afa8e9237886bee78cde74e3128b775adc14aa2909a9585ba0b90d37d91325bab96a6151907e13c12aa58bfbec1615a2ae41f381f3b18d687f51bfa2d726481c8bace4bb2156c84d620adf9b72dea343a8e1911d65d53f52cb159a83535206784dc153b6ff01d476eaba3ceb84a59a7654de0c0ef01bc8776a355f0175b595950cedeb3315e05cb7fa187a1d33117db961bcabeb77f413e108e95e8cdaaf899d391d77fae145cd70cfe83b16481adb8b205c1916b22ae4729467beeb13fc466c26318ae8f35e7b9e2b0d57d7bc4fdc1c074a6e71ab2d84e6c0ead75d249af0c48dd213ad725bfee9d353dc8e3ee90066329f044f43a6b33d84c3e68d058a176c08debdf396ee8a6a105221c9b0a902b5dd71b7fbae5dbc089b7e71962456b731995be3372f1df18a2f5158c3aa91ff5aebd56f3ff373eed904192404e26d499924071d261d5c15ab014b891bf6615812626d21f46de6fcae82440cd11150f91df068a6b2d5fefe125bf6fd2212eeecafed8898bc4c66f4ed1dbc699c7d8543082b7e1dd1e3f5d5b697e372e8b13ea0df58d8bbcd157fc6d09fa884f7606b896963f15e0862dd691c12a99fa73a844eff18ab23af1e0da3bf18153c7cebcd63190de380f3855b1c6cac1fe8ab48d99ea6c1c028d213049a275b733e86c452be7f01422e1f12cf48584baf48dc28d55a0d8da9cce074853fd07e301ed482b3058efcb3e498e24d830f58abcf165eee354ddcb61db014474c905e59b40933c8f2881c0ed7f363f348df40bf353a20ad2e6fae7bf8d39c497486194f8309d861bc2b685d767d167ffb85f46a673cd9adf34f2bdd48ec05dfeda8928b0b5fe3f4b93c467fe3d911434274698f11f5a873f6a91cb32ce622016393f0754480bf13c1e2034acb467d622a67190b8353de0a16ff6ff8999514f846f81f47ab8048b9c7e94f456f511960a0d58166758f847b0bafb68b6a3ed350caff4dfe99ec4f6395acbef2dce2b5fc1ca5a1908e84d20b0243a87fefddac23e72b6e65d8e717fd8c8848a69523b8659f7a7fabadd0b95205da9ffb6d48beaa3f0eb9259956db99d997c9ee28de9bb34ec6a4e8547d5b1a2fad19ac27787c28c93929ec54cc46ff87ed828e83b66cb85c599d75c2f48d12bfd538c3d0bd2e1e7d5ffe9d3538f9ff56b69603f5c14c1e04ef7b788ac35c5386da428995dc6fd28a72399d03cb08a648708ea02dcaf1d5bb92541cc42f85af500d217d117eb027c305231dc75e7d2d3ee2d634b7cb25d5f936c0ad1bfffbd6356ce304dad4b4c238d1c6868fbcd4ce289c3d45aa0e45251f215cc75bdd6449fc8d3bae7eb612814e7472ed12797d59998f79d4a18ec24167084a8e3fb59d18f81bfefe20f0b73fae153a9317c55e9eb8bfa1bb2f45a3c6f4e6affe9ff5327b0f7fa8d5051b61f1e177757dd97a4eaaf21eb1925350026f558534484e2de62ecfb0d559c2c0250589763d19dee59bd0de6f0929b6dc8b6317ba863a2da031abb894c87ce630e91c64a5f3efe73e85852e66ee8dab3100d94930d7c15b78bd2334d9e7094704ea13b1f7b96bfc99c108ad5308a93d3bb7fe02495a7382fee95ad0223c4749ec385591ebf6abad10f6df9964e262c1741a3d4555ca2996d44644ba2ff625d216358274b2d6691a474321e8cd6e5db82426c4ddf6e4b1a1861c7796b4e602bb211a69c134c8ec5506b88d2c577e3c0171ed6916f0e88668e5e67026ef03f7ed52734b379cfe0e2a8bd87b44594c7e98f014d9540b1c9ff486d1a7634ee6b78b8c9d74c145f05165541d92ffa1f3e36b06550f010d49486179426dfa1a4e08bd3e4f20b798d90227b0745156acf369027ffe2b4dd33c1475ac4da04ebe9eb8116b0eb1c146386fdb03bd6ff743b1d0faa0718eb8e046d5dcd63e3074215a378fa7b736e3e45129dace4c0236faf4b4a21ea244688fbdaa19a4146fc5a0aeb1d0f1f94457a3aa5cd8b36b78a2c96a38281d9cc9ae14791d74c80134013ce7c3da0cd81948278e32a169d665d8e4213a28d4fc135d4d574c8630eccd1afef7b984162c14922e8d46c64f3d1d4bf40e1f9b1e74f4b604ba282fe2efc52513f55f99fb207a0fb3fa2a3a88c51a1bf6892a62b44ac4240905c3004dd87107a69b621174b38f26b86cfd06e3873e3e8acf66f7a9d663fcea22a77bb8ac56d86ac63f093b3afd93ca3d0b939d10d784b47f1d02420789fbb2fe48a936205b1faefac65448dc85ab7f0e8625f3e07b45051ee0d112df5d4d370a81e7011fca50dcdc29d2eb140e89ee41489dc0ebb7b9a893200200f26e35f7bc18f77447253bb8b59cdecc33f2eb327ea98b091b845514ab59c88eebe9b98e0c679fdc6bc74be2f6868efadcacb6862f632501cb91a3e896c7aea9082ce7e4f7fc783a1257d5e5ae438b6b86cd4c640385bb554d65702568b0bdfe99a086300062b1b0f608c2bc1672b886fe3e49716e79aee166404efd993c55c184ef62d0aae0d9b687b25b9d06d60290e2dd46a6281a0d91cddcbb6c86df39bfc47b73bdff62136866ac13f17dc8fa1e275fb545aad4513faff67738ed4f9566e631890e0c5f2933ea8474861c381c179386f4b8b4deef8c2ea7cb1d7510ee908aa6569e62d36df59e82a76bab39e6f343ad2f58ca7aa230dd8ed5ce248857a5e884ed6597536811c1f637629428249d2798b376b24cb01446d01fcce7aa5cea484d0b87c324aa62c45ffe8763570a62819eb8caf7bd94a464da0a4c0d3267ae8963cf52046a5908d05b5da44c50082c6a20db6c6972c10b2903d727cc64a5439b6db4d2fa6045e03e6b3a84a5a572744d4dbc389bcc69caf9f15635bb70b0aa0502e77a4bae95341c835cf26752660a6a3a854d64828af12dda948b5652752d60a653b620ba668eaf6f1a25b1aa8740544946ca5f419f8b9285f4ef7e4d221ad91d06eea61ce5d7eb0683ed45dc7eac74de6ca76a63b833e72e9c10f6f51a44b307b4868f1abaf8fd2a698f09ff533c8367c9bb2bb3e2a0622c2e40e7c734efc3cd8c108e31dbdfc29cfdec88b50c0814b2df90864013f82c6a1d1e5c50be4ff2e2a88edeb40e7e4d9ee09b6f5d2df008927ba72845090be0b426f6c7e512d8bf51b24cbc79b78c6565d58c10d0ffcb17d8c3320019d84610d4b8a87bf0bc22ba9aa032e893b91c045e812ae2b2c1a44e98451dc0360bf9c074559d2fc368660ae3a1e729228ad1d93ce136fe571c3d8bc0b160605096bee9e3349781032a07e8728b5ec62abc5cc7e15d3aa42e88ee03ff46569c730364f898b64371a2d50622846b970d889c46640aab0ab4c37db8bdf821ab713e913a4c906801e26472cc9960167bcfe4ae507bd4d9ca3652963715d0ed10a42333eabb75afad1cfc01f9c3d0c8b6e2c81dc78a1049c9d3e3fd1c3afbae983bbfa5140d9f593e4dae24c629da39679eb56fe645645dcb5901d9a8af6aa2e2013b09b280d6a68b038f59b9eacdb53361521313113d2baa3af37f9cceff6af306c3b3eb42f58ef6b347dd4c37a71c330ba9940089927c9e0d92b1134053078c1d0a2e5efa4d51863670698dd5b9dd9582728d0efd78dc3d0ca71fb686cb49575dde8b1740e796af477756929eb04a993073a211ee8392f595dcf6bc7403cd1ca1cd925b2186b136061be22300dcdbb980e71f7794f8b7c3aa3e445ab0809e6e08da60339c88c18577719cd97cd03f736400073258d0d009704b5a2a37ba19f4753e85122790cc5e04813d792855501ed26f9e285a8b9297b3939779d96ead891043bd672afc0e09f76865642ea246a64205d8e9ecd2c27761eb3053b84b85eac321c7c3823412f8011a09724befc8df325a1d4a14ec579c0b2ae17fcde2517ebdfafc5c00c45172b69e8da65152ab45a28e55270efa4442677ba0d563f1a832f3d8a91ae84279ec0ef4d3dba5ed7dc0991536fcc8109cc8d03fc57b9af6b7fc9ac64aff731185a5e671b790c16e42e79e91301b6517f0c1c47c3011e51943bdaef12dbd4de24f8f7dc3c0c5b3dce2d83fc18f61bb7a203a65dd67f48c612ac66fe0217d171557b6f76f0f039cb643678d7b95f3d5aff885f942bf472b39ef2ddfb52663e6e0bf2adef2bb6133620bce9ebcab1a71864d756ae5f3ad3148f47245865329c24ee7e39c6434b940ea78980ac2faae824b826bc703db25629871adacbb613d2804073701b355df210de4aa6f37f68dafbb9fb5c12406de560c57b4648a902989ddb840c3694340489bc09dee72b37fd2c566702fe77e53f82597268075d2b5c9586310f90a40f1ba253fb9abc11a957b1d09748a62fc90071d943f57e3761ac0cfd87ba0f707c891fce4e950c445796b9d7106721734ee9845a9ba04c2c1d1bc82b34017e870ee7c7db5f78adb9c68197a46882770284192c60acfe63b2312fd723880a2f44fe03ab2c6228ba4858030440fec10d1960d30a0757a207c01bf380dcbb1ea2de8bf233f5b098785b4e20fbb288a3839e7e083026ae61a8346aa15a43bdf7ac563739fa1db64374a73b7486f70cfcc723fb3eef3e9b0fe0a2455b1ba7a5d44c6190cacbe48bc59d06e722135d2579ed39bd8a847f6463c7cbffa1d1f7b3b1b5da28e5cc101a42dc4dddd16672141a58d0fc73de4434c06f2b793ddd44c5037b1fb505449f783f96c125855f8e7e57b8f8eb90e5ae340d54eb8ad69cfba28b44c41ca4fe9a5268789c95f405715bbddf4e200ccc9d432e2608766af7cf5131215b8dd99f57184a23cc803ef1fb7be2f07b0a6011bc24eae1648968f1f1436b6d3306195a23e589c099b0aab9e25c1f6cda4e0878259907ac3db385efa76d6684e03dd38735a0bcbe087af74224ed55b2f40b40e5902a8d073987264495417d4ef234a8bf71a70083c05a27c1f0560afa0c8159b41e668f851c5205e0dfae2090016e12cdbc1932e4b488daa218a91e16659bf03a088b7831a8fc2fca58e22fc6cbce2cd4385a9a130bccd188fa78f0a6727f7745f66fec5a066ab643c5a4106234ba2b47fd5b1c44d7422963a183ae2865f7eed0858a35263fbdbadfde29662f5dafd3a043a0a829feb1824c61c3e479d40ecc129b0d58830449365256691b01662e14cbc5f83c62aa3a97cd56a21bdf252cb190a505205db47a50cd8776175211366eda632f4027971fc8510e007e951dfe86eb32c682dfe97e997cdd37699b0649eb2c51c82ac249593e1f5a23a15a807691347fe9ca5d2af9fedcba855e7874325445bc4ffbd75dc2c607d9be2b035235ca9a413cfdb12a97b6df1e82a904c3115e279e3d4300e74808b8a6dfbcb4e40c4a86084967beff82967cf680da8cd5122dce112db89a62ea51a2f5f3f9cabed33dd0a3bf5fb13277d9e54d708a8dca8301930a27c4bda574a7ebdd4afff48ad71e6c4911a10bbb024cd87d8e6ebb50ae6925cd72b8104642758ab4c69f0d8b2d5b8287b1c37d389c01e12cd2931f98065d5882ffa362c0ffa004405a512c3cf691a7f710d2d33ee60b49910d41e322698831e7bb0fd00bd2bff2ab6252bb5ae2d2746a6c377de740623ecb865bcf0b925d23def4969e72bbf95ae07d0a5c3c043d0072cfbdb599782f2f81ff2f5716f850b7c861d9615cd7734eab1da0f1a7e355880143ae50f1f2d209cc24d1ad8b85d0df24a529fbf534402b96dd59a3bdcefd614bd0264c52a3f9c383e1c5ff310c0c89a637425544dd65b7821c19dd31b93b699c36dea1dbe48cc2277f55c9a05acc301ff21cfc8d4f84d9af396121650b338695d3a4f300d2207db31f08d9204ab974175d0c4f6b2a81b082de716b04131f0c90ac12e2bf6ed1b18a99fd308ad4472523b9b32077e28bb5415ac6d488f6544a5e0f966095b3fc8a1eaf8f299a78195a881e7cbef894b58bf3208fb8f2df2f18de2f49a564d3742fb04a411eb46b1d622986843ffbbfad005986a4ce2a830871627b8b2033e7eb3dd4ff43cd2722c1f4971bad379938636072a7f0d76cadde877c074584ba34eb6825922e50ea0deeddade58b945f9b151360764901d8355cd87a3687ca6c663ddbe42695f92d6f3d2ad6133b6a7a8811cdc7ad84c973d6c41ff0691d1d0ac832dec935862580829f3dba67e8e0f43c4442a267d5b6efab42411f5854ddd49879da4d4028acf3ae28a420cae8cf460f7ad1d49c8fb6ad7cda9500975ad5a73389b4c70b0d8d144586550c6b0fbc131a6ee3055040e93e41ed8e79436ee874219866db1652f2d23e6652481a7aed37c9ed0de338a99ba68510d1ea3e5d598d82c34e0ddd9d8bb25bc00fc964879821561d2f4ea6b48a4f7a7772e9838680ab7256ec7bd74ff0c7705c0f13512b5401403a8b588efe9b1fb499a6e641573071ef2705a1787339dc0dac20b0f3bc0c6664db8cb818ded249587cdc4858105dd227b6a7fe939ea9eed32389a680b7b4f89489b0beba0eaeef014bd6e511bf07e708f01366f9ffa524e61e7e5ade9cae47a8aa206399b1b12793ee81740bf4c1ce45eced135e822f19d96aa2ed6ee17bc3e8d4f6d6f58de918021234036d9f4c377a0de04d0fd7f20ad48edf93c48d0a27c0cd741ea2335f34c0715f2022707192d7830baefab1700b35a32b1c505e57a12e9a7da2a19464d9f1ab9c98e5e6817ea763ac0f00f52bf865e909064344bc7a859dcb452cfdbe91ed2e04a753f3fe8799a65431e3e7bc6434d2fe5664e7b489c3fc91636a9e3754794ad87021577c623088c183deb436f1aa4cd9b141cf3a8ce4f758230b7efc1bc4b1717cf923df3895881d724703f4d4fe83c1f8518b439305f1af824d3b61226dd6a5b744387bac2af88c571ac6506ab33e186c14fc2be148ba80854829101f3b1c61813768b87dd88da8f992493bbdc9037158e74a84ba5253fb8f133ffecabd59f5ba6b44309461024d6ec360801919d4a06759df12f0147b830a5a623f9af753baf5c52f066b72405854f6ae9663f1e3daeecb1b0f3dfa31d445c9a41a082ed37a4718e9484b19a9300b2a8bd91f0edc4e7b211f963c6d22dbf1c7744d30aec03a7411d7657a22ad71e95aef2e27efaaad2b76965af2079d98bbd3c3baa65a8612692a6a24a35864cf2221856b113cc4de231fb9292d3f1caa3b1e2d8a42e8fea0948ed67b37a6d6464a63b9e11e36c1d3cb5d2a19416dfd8d24e4af07a5f4b897806e2d755d94003a06b70e22e68642166688eb653a9c194493a09fd7c2990fdee6fd74af9fb78024c53781f33a4df7145b05b7ce1b51fbfffe49c9f846a935ca6036cdb0c2da2ad95a281b4bf210ebd6cedc59e2ff2fdd1e6410b16759fba8b4ad182e95bd2f4460bda9de5f5be31c4ba24c94f8cd26d73ec1f90ca4b7696c6007dd198d2fa6880469d995c0f80ddde48ad5cc32edfbb05cdd1b9c4c061eb1ebe4d1f4e52302f0467f5d8a286ec6573a93d53b4d37e5919b60d433277d02ff6ed3f4e3696ffccef5c783aaacfb8938276f2fede69c8f5f6b82e0be7bde99a866856acc027e8b752031f0b47a0be3f1b30288182ce2d59160d42c9d8dff19858b9a3d81f63a62db10ad4c3b1c8859de56a420fe7991180a8228a79a004b83cceb5c5bcc98b093585b305a1059cdf9f994ebabed4fb99200e856110fda0af0f9a63cdb8fbf0c726ba58c423c2e8561184640e9c18a85240608da7b050779774432fcd24332203da31ca37334c8176b009b66de903d36fbee8e4207f2128d0aaa77287b8b4336e943f7775e46c5428de1d3b3863ea3dc4bfa4d7752f9952c462744bf73e0513482a2d6901e6ce15af32ca98ae51a653bcb9c876b892074504beadc1ad3872eb9b4eb60d842b8176fc9bac2f6b001555f071398b9cc25c3df7872b3e3db58a9a79f08bd17ebd7bed657e777a7eed98951fa81258cbffae39446e19512db99f3418a6d28a09801310faae6fbc48a394c7a648232dfdfcb858540277c830fb49991493a3b3e25a857af804eeff6ab9f158c3f56dc9c21b59ca9057991698a0e3173eeb8a745c6c72482eaee16469ea9edf356ea78d281311503e24a5083ae60d24a32f087ff0d75d1d39684cbfd8840b9615d8bc7e9d93874d186518cd4c50281ad08712b884502ebdf23ec28531c0ade7e63e4b18c8be05690da6424ae910dd13722590b2aab5b3348776ed0fa2a67d0d47a426ef32b5fabbbf3cc5c432d296cccf74dff963fa1a92f7d50c257a5679babedad323fb0e7793aaf31ad65cf60496caf8502c3513792d0b9d70da095722d88d020ea5eacfb3c00fdf0cb309ad975c5915a7e591d84781f10efec10d9efd5282e84542a84a87790e573ac2baf209bcafb79c79eba1e09216a1b06802ac12f72bb71b8ee771f3c8855c99824dacd42383bf5d7eecdc04ebeb8b1425f9d6705cff62e590c249978fa400f1c1be95b70b20490a27ab0b581ea8b1cb35c874a7e339fa304ba7863b1449c15b23aea83538417c386edc63e3e53e8d0b30b0164cc29889390883ea4724922ec9f55bf4150fdb4f6f1052c093c713221ebed071791f35977380159c4bc443987e5a1b9ee3fb4cc7ac564db5b64e29b3e1ad06e14a40174d05cc95877970e1f392bb72e66ee4aa89e0b0705f81d4ce5e464f0da661c4524d492513d326ed9fa66f92649c48ad10586e205af48dd80e9ad222fd3062f2bdd14f7b3b944da79060577e9a5d49ce31d4b172303354e95fed1fd881be7814962957d471400ba5a8c0dbaa6c5f0df7963c744bad92b81c5a425b9c618ecee4a2df5b805ec32406850b6586ff4171c33b4078ff6d717d187388c8b82fcd170aabd3831b63c37d140fd9afc8f19b19807ecff13e959ccaaa02753a81440d07a44b5aae609c5ea0e4613f4ac95482edfe93dc09900738acf211a99c9254d4d8e78406f0cb5b963b8693ab1926e94d987bf1515c99cc729418b7956b614154c6cc8d180e0d43b2a1c4434bd3b9d94308905e217b3c5f79d496ff0d3918fdde93c8c0ad044a6b1f477712a484e26e95f138a1326980f6c62512ab932bc69b06049cb3b57f3142b348625fb80c18745f4aeaf524214c114e23c238127cddeba3612fcc6064dd06c5e2a6f5e29ed249efceb3c54a0ef1ceefcf6909eaf801302ff97ee43447851044f7c3846543c1dd987b754c039085de600de097e38227d4ef9c97cf34f50049cc8d260980555003d61724219a7e0f0fea24280ae18e0038891fa3d18fea1a85bd4e4a86c90480e63ca61dd2209f7eca69411a9deaa7bce853dc045d1edbb2a485096ab46cd40a9318f58d074b3077059bf39bac80ea16e4c32f86a6892eb0a4a02fc083dd1ddcc91313e3dd3161ec6dedb0685af489b4bed5fa92e25b7dc40c4d575797968ad69e73d2516a07d88ae2294f6a15e64ad3c71d22863d5f17fe6296ba6a19709bea98d44a6a9b2f2cf37cb58da183ef0648849d0f06e1a17f2a8f22b7568b2b237d4e3a57bce7e76bc4b884889e90ec2acd1af53071982deb085822501973e2ca1db886168c7ca3947681b74689a24d39a18bdf755ae601c64c64e0ac6208208b8db31b6c96de851e0531662fba375b4775cd29d3159d272e7069ad933543903715717e7fe52ef27069c95e8fe26e5980ab297ec4544cc577567253f517ee58f12bc5513ab585f966e5f27016c53b089fe5716ec4d215f4a6be67cd63d39d63b16d98e1ce67158fd31d896e577e4a1377e3e820d511bbb4f68544bb94c5b019c1e1efc62c8a07cdf904c1354c5dd3a26eb1f8e4fc26f6cc57ba9feee2c0b755439147e18be84541129531f1d04be164fd2610bec1966f85ea7c7676ca7cea97a86d39ffe8b2a12dcb5a493924c7cc1431b541a4b341e33886b45fc4709689dd3a87aa1581b10ae3c4cffae96b68edbc2d857dd3e2604665369093e0182150d59393f8d15989c8e31185a94e2dfdc3aca6e6800363920078b9d97025aec6568d24c4e1a8b810e844bc1da2bdd82f1f64650ed5cbd0f589de01186aa63f780a21afec2041a8b34edb4019a7db3ac0fc81c92477c8c55800fdb48184397eae1860cef9f73d79e8251d0f6e5c87084c291c42a4034d6473858caebfd215403a73e16ab722fb3db490440ef49bdb5ba7e0c2d7077f95d234788b7d7f951c00a5cd7744e7ebc04d3fdd2c149ffcce2ec5f0d9a1c9156db81fdb59e4d5eb2d5c2136876fa75e54c279a4976e8916b6e12f21df4eb16d34c2b679d458713d5d960bac4dd328ce8cfccf89035ece4d55b911e1ab9f72620a23f99e41869cc87414fad5caacb52dc51fef8c0297342e3e5dcd7dbeea9b479b10ef6eaacb10fefae05d39950a08f39491991f0ac3a8a1eb5b26641d98d409c4404635ccba9894d728b395954ff07c397e8b710bfd878b6fa1f92d75a86bc9c773fe3a259a827ec9bf414553b44b387e546fa4be57ba928b04867ea82b36c84fe825f5c0e6e22a1a9a6dc536c34afdbe47e2d96f569d24bebc44ef26c6bdc4cee5a59e4fcba6bc5d5597c8e9de075fd5ce884d4971befa23e6518f0633bf1c2a321f8fc5ad76219bac8c73c6b76de75e2433ed899565ad0d0165b709c0f850bc9ed6e036a26832ea0289a819d66d79cfc81121d4a4ef1cd071593471ce48c4dd79b137e4f5824871ddc581d617875330fdf9b5c4f1f8bba500470ab9531cd0211842bb75a50eefae679b5d3b299c6c414bba1b4ec557046e582a5224592d885f55e49531e3b99d27ef301ed3101a25f0fc7e69e8dee6a0b78a1df44a7c91c76e0dea8a93988aa4e266bd7e2fa36e86bba046da82eb1f16c98a2040b27018613ba0d7750bdca0b39ce357a0b30ecf8aab8966b3471186f34ab071a7d779fa8c7173b0c4d080c9a8391f5830c8524e27f6501fc7af69e0d7cd387618fbf2d6ed8f71533fa985e08ccafa46cadcc043124a4e4105177f44d2a5c332bf64c702c79c86e7ad39a303eb6ff45e77ac820180fc24e1cbffd5f0e97bd4532cd8fa263e15235830f7c394eb7bb49c6d5512db4f04341cea765ef7d68554c62465212fc2eebde15818850cdd7a855f70f6c17b63c225ed869603b8358b0fe09bcce687f1ab4eae5bf5bb9c1434d49974ae328d1a1462105efa212bbfbe35189a3e86ad9997d381e51eeca25048b4916a0ddcad2c129cf8041409fc4ff9d94f124c530aaa31cc766b13d2ea06ce5a314f3f8bb75b2b44d329b27f73c81375aae785322534bbbeca05e3dcc0482fa0e7e67cdf55b8ff129dfeb93c320ff465f6a5681e20d397b4ba2742add426988618c497cbec727e814642066cbbc06067a5aee2a38614ecba6fc6839bebbe77ad1d7bc917cf724d50e8999b31cf55d62155dcf8636cbc7961fbc0b331635df1dad62548dfc42d6f02082ce61e95ca679be7decb95dbfe3b3f649b92ad835c9e79ca988413e279705fecaf80bc96102cc12bd286819308af6bc2de8383a2abac17d6eb60f5ac5325f1016319088ad5d8e215d18d051771ff056cb098d8142839e76e38209d94d220884f9665f3eb68f234888799130b7097ac3172c007f231c03f72af4a78b7c5a1b7fac5b8e16aca674dab044b30e5efa006ab7dd120a626a218866843c5f9b2a254dc6cc02b212b89abd64f29f7e9d71c3c934c8c6454ab0491098dd7176c3219fb24061a9d9f6b062e0982e8947b27217b35a0f3ca09f1cc6b95c0a0d601e0358c11eff4f8c7600a99f165504ab8bca874e979547ebf5c0a8e0ce9aebd975da3a9af1ab67177e9961487e016ee68e020dc9ff6205c2d3dec843cb88f5d4a1f5839b2c99f30011ffdad31a488693ff189ed7e5f51796c7848f90d9974991cfc8be855b8d3d2782aacd282f0e83965c891e38e01579b695bcc4145e2e928eebcc7a45574a2e8cc8898d87d6007f059b18780769eccbc27f52bd2d2704c17c223d221efccfe76b1c72c787009a9b4210f6b894788f88bd2a707c5b30bed4455257356f78e18755a050c4c5b6c08bec3089f475bbae4eaa0d9ca5962339be4044fa3fefefe955106bded56eafbdddb18d7fe073f81497187ef7970d63e23fd0493c21987c39f6b58aa817afd3819eee98d279ab083c7eabafb401116e825ede6f4de684531f79883cd99ffc0a7b06c5e7acdd6aa3ef6d302ca97e455aa91e16fd0e8f4782b9ba044dacf13561fb5deba70dc1382469cdfdb33fbb9a993f05fbfb4ef874e0a14c0ac9b7a440b3623626fa3f3ae10dffe756ae68e01456cafbdc50d283155395b28bc160f0725ccc32b76dd8689f3bc962f3d0476534b557da70a1687c50280777ecc75f83436f7cafd013a9089d601a05ddf4c54e93041e59dc3ca37594826535acb06898808d0cab27cb34617d1c5eb803bb43420abe74c723adc08ca366705c844d6e52115e5fdb7d523bfa0d2bf11cfcd9305fc301797ce83d43835b3e3c4c93db1b5068d53e38f2090b6151fdfa0b5a6dff5a10b86c1ad85eeb27f3b07fdd1de97eb9df1c8a44f83d9056cdbe735503d0942dbf684f8df4d57e4cfba908c4aeeea3b333defc420752d681daa646ff4117a6a975135c586b8d3ce0e6eb107101bdeaa789b0523c14ccf4ea5577f8ea620d06068de242d9a6604e36ed873f4f416f92900b2a776031f157606979234a22346f4031471d46804c279e0c75c5c3a81b169c37805054bedb1d045ce8615d6a5f1a8c3fdd3750fe04b799c6978ba1aa167db9da20d771324a727ebf24ba764e5c03026ac3c4e02d042d09d6e454142f04f5fcf954c666869777e857602cf248662f04d35d56b8969aaf5224030b0527513417cf4816c6dbb74e42443a54c1f1481558045982a3f876a8a2f4490745eee30f52db52e40d8de43dddec7462e1556fc46a83fd88a951f0b8e0a32599e70cb68804ecb9dae701deff34b1533e4f86f0aa3d4ed59784e6ba455be76f24404f9bd91ae5f29129554225d080a89a76fd56a92b4c1e48a015c3d999ba9e6548b7ad51e0399be39b8536ac6388f1cc5540c157321a56a439b621279b4105d63e8d4bec164f4e194de8a9191fee4b306363f0d40935a294bda857e515f358f10f6486f2ecd2db6dd210974c404fff1e4d89f48a7a96d67c4d2c88091b988acb6ffdd79d59eb8c7682fcbe4e6f7f07f64b099cb71a5b3ae4e6ce1178d2018de9e463cce301cc89eb8c9597ee1086b478169d46b7ded5ba6fae23eee71b7515cba7f578846efe759f145b878b16c46d0d26106e04a8c90ee0b4560101ae5d8c8e952e91aa5a324d34e0da3de6edd2113a52c97070eaea69f11f77aa775d66a3e31dbbb5e7b27c411ce1e1ebcb3180e53190f12944127df4e903171f2a9f8d2c8d32dc45076508e0ad18a5320ec5d4ad00286687efaedb6ba327e18f7d080ef3635ca0c89bd57a5f0a1f6c10c78f210661bbe04f29a9ac780383ed0a57ae3c5788d2c70b4be57ee98611dbbabd1a07365dc1bac970feb377fa4256869ad5da7fbec40239b77d009b21a4b32681b34483fc0b4316a7543bcc37eb9565d296d65b6cde60f7e9527dcd269e2dac092ff24cff1d2f87ee129272a58d73fa41e5796d77072ffd40f23a6a168d896f065576d597675476c07c5890c202ecb985ca1e947952e95b7db72ad95503735c653146e8eafcf6837a667e4a646c2cad23c968c72a7d6187bf4227515989d80454e148a24abc69ff4f6006710196bb13a32c69e05671a114f3d2886f322ba9deb11b776db1576e982d3a841ec3d5359a5f184b69c231faee2aedcc78b7dd4b9b0446388facfad8f0def1605343c7c1ab29e6775871dff035ddb7b68030045092139010f9c116e8b3d452b93bdff3831e544c92c1e4c44153212a4556d25fc1527e37ec257c56fb744d8679f5e61af74382a4b9256c771ad9e54dc44d558f85d61e54b3f1e409ad22cf172bfcfd25c5d9c354f848a56790bd5da0a4c73f8d1411ddfde9257c58f521459950bb170905b23b97cdea232465c2421fb098a552f43514c2fd896562106436d3e4f52e7ee7dd16c3e5e18de3305a553df5eb1055093305a3ce47426d587408380c920c9ed674a4c44977c1192be3376cab48ff086f1310c850264a6668056cd907ddc2f5a98d75600f87c1f287ec5d534d84323b7d9a3ee90c18e8f43b928d34913f7c3d3ff80e62ade91dfac315e277a600199dc02285d66cf13770fff4c9da947be8f4ce731703ebbcb224b4934385aa8a1d6822db01414e6307621d40ce652ed33568e262404f94870f22712cb397b562b6d4c42d6612cc82e2f02f3bafc0a7db57fb3aa0bd3e0cd595cd3e00d84e37592356ec0a9bd414d2000f1a0468c3b36d510ac4cbc51b9714a5dd90bb61e7f1e335e347c4c146e7ec68462d0f62074cf068abbf743520fa2a58d34b685829eadc83079adf841d0c22ba17a13771ce6b60101f91fb38eb2864191d66921ca768ee3cd304e4a8c071cc82e955ea0c2e7e2fa3ed1880daf358642ef238292f99e921ff9dfc8e5feb972400ec19aa72c72321831835b1dc96fda32e37466bc1a92da9c771ff7d59b0ff312d040089c3ba65dbf82a28d22b6fa34c8ec96944eac334e7d701d703b413779c25e0a715f164376a2cb9697985fb7730960487bfd4744a568b51c2727ffe00d5315482b825a30f8ab551b7b8c514865c6fbc1240c74eeff58d7f159ba59c1722975daebaceaf7692c21c1193d76959d939827b1704b3d0f327286cfe59c12bf9f3ed3688230478deb776adbffdb485abc5618a11d07a0cde427576662f8100ce107f7cb22bb721fff11cea4a3cb5177dc4d25f0397a6dc7215af8f2bc937e31de8d44f5ba5eec298989fa1dcc42627314a552ff51425af3dbcf8d6e8f2b1f926de3668dc95cd2e2bf9ccc48ff1a73840927984fcbc3051b1e1a507541123df8e75241e803a8601de18779675fc33fbc23d9640c250a6ed3f4b90e15ea9f2582d43e6bb7040a7a4af39208334b78c63cbcd91566cf4a78056fbfaaeb2c36a99e758eae8c2ecc240976c9d5615e51c97c2dcd81bca3186b06f7d799952cfe9c19493b8b2c6c880a4764b40f7e8c53519cf76d7099474d75408688656cec6f5938cd64b2b0b8f1f9f029d9390c50f229c96a68207b044d246b759e2b95bb833de61ce88c7a99b764336fb2ad0128105fb38986c06ede90ed53ebb71c5f832729f134d9b1f5f322e04adbd1148bdd9bc7111655f57af351a9362c23fff112330156f463722ae9ada8e430dcef224c5d7836f9d657da6dc813a64b3aad4cc29f2f9d298b5020a1a3190f661b12f8a5614db37a90f50593af4b0403cf9493063920473ff4821030c837ba997423a46ebc650ef72fcd8fb9a7558bae3035afd154c648596e7468ff2327c808aa1f32a6ffa386085e55cd2f9e9be5b2d4a73ad7631498f52b429c6451b3ad64f3d674dee22ee853cbf5515d9a6756cdaf11c2105385c861b641c94f16c9a22d216aad340ef2706b668a39a92e6a7210dd33511bc996b7977a77283ca7fc62f2b1d48169e31ec579c0e542ef5238688f45de5148434849536f1e51ccab027e977a5f43916ca4f3a60b4aba8d9dc9d8f99977ba7bf79f3473bc254bbc00343808c52b85164dbd8a69caf23356a7fa3faa15798c312925e0f67baf71133e11fbf212ab0209af62bc353b8916ebe50aede830f0a24451674e2ba59125c03bbb55730427d6f2abd4923cc8b0f5536f1e8b659efed05011771ad9f2d84f072a788dcb3c3bffad9d14352d477cbcd2e8bd3929ae5950ca6c6884851d41b4715632be8f815639f4186b3b2aa1f5a7435a54358376cb7f242bd68d1813c0132161f88ae4ba3c22a310e413658f981192beb30fb2f1b1f1a1975b267aedfa1eb7797b5eb3ed85b0eec5cd761175d6090cf18d784b957dcaa70c1b68f849ca383836913bf6c21cfafbb63aeba20393c29e06fc95a4c6346faed939e4884bc00894b9b61d7db1c04a9eb2825b8642a7c94539fcecbcf5f183291c5fff36029dddbd2a86e9ce69868a3095c0b9c9c76013374becd96d16603a01153b5e512ad8df7ef044ed07b655f4c4f753b4636bffd495ae1099e0a544f0765dfc6128361c146cc157f1d799681c25485e7a0d83362fb6cd11df8c68f11d8f1fd9b46f5dc72daa5ac7d80121d0465c554990e0c0b0a83b877b014293d2945a1f8ae694fd6d31699bc4d1fef4f00dc6593eb42a2389789c503daffc1fe40db9f3cd189dee54e741d62016a784ff58dbf0add22900d2a0d3782d398ba539086f46e2bb5b90f51ddf64d03b024389a23734c80aa21c0fd94bb4826a422777f7a854105b143c81bc9ced6e15a144ef8e907007c37fe8b8484d7258f144f856c245321e79d9765aa50656ba22234de2d29980a6cdf770bb11787b2f571ffc26918283da7c3ab9956861101591c930ec690fe1229dd753f8aa15006c89ba4446ece17996ad12e17fc6a64d04cc3948e71c60fec088f703c40a4b8cd7f1e64bae2a68e2a63f8b6a1502a0a0b39dd1968358b211062101fb67a1754f1c1f02cd663087fce370a25d8a0308ca6fdf2e2ec5533d204094fb089e233dc34afd78910d7d53a22bb5c975c54adfb82bbacc4b82863055fc2250ce19252406579e2859538adc03def26c69e0b15b45fc76d8a7e86fa3fb8ea43891fe82a12c9992df657f7ac2d863cf745faaff1dd09ddf9f6ef6ac47d38d1bca0b649e0c634ed18117e9166374a10b1691264a97baec2e3b68ff5ed757545a0d84d966e6f915319174811e389a86f07fce0a29c8a06b9154e42ce279d882b7d77bdd34495d73701c7147e4404984cb3b1d41b8c357c0352f1af6d398e97ad2558a6574898750ce5644d03d91f60f7b4fef6a6aa0f735ed4fcfaf69dfd0e4677a7d591f51b677325a23c8c15fd8200b758256abc0a2385c6941fa165e082a36c3b51508c00819e6d5456a562df4b561f9ce8d529d4fdcba6d824f840cdbfcf105cbecf35a344adcab2f0a10e09b4efb130ecae57b955725e8af79d5236acd4a37eda085d3ad838abed88c5febe672b7c9477babba5f827cffb017400b2053ff5d20ecf7f2791f517172e990df7d28b5ac88428d9c765cd6c4701ef2d0b20b022467faa7315ade739d38b199fabf7e3f0b5876cabeff877eafdc5548695db2adb72bed6fc52f64a2fdf1843794e306ca5fc7a37aa273ca866849d7542ee4cd09efba59d1303fbb105282985e7f3354fd13fc05e0f3088de7474295b5594e221fdf71c6ef9c75cd1fbf3636f8baf481d3e864118a794160302532d2ba72fb3d5c5952305b88f0eb9528433df10bd1abc495e4ed47d51774c85dc6a5ddeae0ec09010f8aaa94cf49678b3d9e985adc7303711bf3ea804820bf32677a866249c3cfea4336e67cc77f0e9842de4ded6b7dc932a232d9b0535d2ce0a2912350649948f87c8ec27e0409750fd5977fdafff3b32578ed6f06214b2110f37e8f035209a761df5faac0a9c86ba477f7f94b700330561f1a363ca1aa288bd6a7c73f1df2691fc869997ea280b363773f856d695cf792e1e3de3565625748d3c9f2e440f8202675e0c607895895e45a45d42002b59c5081291c1ee5fbec3e9774b764ed0141a6dbee1fd71e5d0bc4f0f2c2d0e24728c229fc407c1d25849b188ae2fa3eb808c2212e925030fe782c06c5e4fd024dc4b8c924b46b3b32d33a48c45de4fa0d756bce3326edc591f36b644f635e7d8b791c259b325f4c97fc8ba32d760e37b2455ca6ffe9df33cd1adbd2b52cab5bc4fb0fd111e219496f6f3cb5a572f884a0115a598cab7df04e81968031727484438611ff6733c85ef8574f5e5f7ac1d5906b38974783f11815a5cc679176972653c8aa733495620c13a0829363cb9c5283164be08f2e08330578a2f2b7ac2f17c7e1814543f6c385c87f23150d4126d23b4a3a693b3a1c0a6778f06717261d98736fdd0913181ed1c09db4898c2a5168bf076bb611fd6c7c67595a6c3c517ae6b0a7ede356b1b53ec9bf074e6471ebcbdb7d6d2750626aad943b833243089bc1dc866c847260102e560bad3fec0feff19d7d23872784bf58647560cb5eef6ed4d80b6787036efe8efcd5d9c0d1d71b4cdafe90d93b1626f1aeebec655223618c888441c6575f2a30f70529379188938da7b4880c25a04ccd2efabe33f9370f7257ea4824f05818b8a302d750013672b5e0b1a6e4f28759e404ec4216c1867189b04e63140651bf1802355b6ec8fe9c64a41d4b7ca1ecd48235049c2e2ccd4e988657b196031226693d1881a8e1124131d6f786eea85003f029166ee84e1b1573cdcb32b5050dae531bda620d1d0abdbf9eed2c547014fb322bae111e52127299fe2fc0965ffcf5b28b8be7d89f8aeee5e63d780dd4c0fe05ecc9f482f572447d9772eb1718567e8a20e1a69f5e3f1e03deadfb6ea621e68d01212a9709fcc0c799a899796a8e79439083549da61e0404798dca4c2b30a09a60fd6805f498e4d108da671d442a72f935f0149a97009e3feecb0d8b9acd170de7a3ff722ee08d4e6fde2c78c9a1b0ad8ce95d24a585d276371c77cfa04d057ed54c7a77c7e1d7d559492a5bcf128b6bb877442f164d1ac6952944abded076684fac00a8de45909ad966be7461c308c3ff785a7f877ba9450adcc3196a6f19eadc0aac602bbbe2130348a9713e7483824cc27db26891d369ddac8ffb4a338da2eaed573c76b593ce70df367857833043accf3a197b91a3f21a0beb4afce24d5a4750aff91d7c64eabe2de0ce54debb2fd104a50a5977e25e0fd0fa21f19bfae0a86a78e292887a010e7e356010c55e67927dc6d5edfd0564d1c3c64f0d3d0602250c61a8db34e45885b22376195c1c83696e09f6f6b5c1e1b531372529a11a86bb82cd1011ba9442cba0e676310f0e0ef3143dba896c3425d78c805791a9b8f6c9136cb7e17e718a8f7e3aa6cfc3e934743818208ee1eb149624af518718df4093048fa50eb64aa1005e9eed9fdb2b8c503a5b403ece380c16e94413be3bc262c3328f7aed4cd9f955bab976fe068f8f93b6f349ab3b8dc1bc3f1bc6df66de07e33cb967e7291cb5471437737fe7bb686ab4c3b43829df90b6e7fa89073eef55e33a8750fabaae4c929ea5c568825a9ea866ee061d8349e871ee9b9047d09534990629f639d4f26278fa335f3583ef87427ccc41e468656221b4ff882382b7083c149d3347de27423d04560e144e2fc6d300eacdefc3154f3c00578514c8df33e9dadbf5e054c9dcacafa72a68e2b08a19cdaf87f02dbf08ff25e6fa06b12ea71fcdd7c95195ce5290f49e02478d2a2d76879a606e272679e8389937da409e8042e15390fbfca5183ccbde2ffc6ba267703421e3479e6d9e3a513aade59aa8f81baad225d45705de04393dff85be3c963157adc928c4efb57ce07bbe70fc98dd56ff1f93e59ee93bc26ccee9150a928207a246c31735ebeffa15494e36871179023637a9cd06600252eb86b4940bb795e536d472ea6d3e3442530e2ee9db8f0315e987c13c5ef2b716cc462c1a7a60c7e17715b0cd92ab8da9b0ebabac84fab8e651dbb979bcd07d7205609c7799cc43b467b413c0855e46c49103ee9a2f8138b1305c29dd7f121551c9e90daf9c5c8d3d9a13e2174daf9def49577c3eb959191745833a569ca8329ef1721676d807d2feb4b97af8c95a44c9d0e356190724859b56ea8be539dba8cc7ce57cb8c512489d7f7c8ce0beab79b686f03920b2fe3725cd47f820a36c2e4f1aad4314d4b3a86584cd701f264eb95c09c23e3b81967d83d9142cb183bbb421c772b75b0c904ac240ca3a57d8c666261823dbc7b3baa1e32da07dd4767e4f3e7afff9168339f1c9e5f1380183c9c8c488755e151c40d25b468f92dde5f2a928e11721fe9a1922ada8a2e2e8eee6f3a94b3d6fe9093d9f624110fcb03699e6632c6369821771b24ba3c06cab964df98c8057b8fb04e81d54483e19474ad88ffaebae2d44ff574d9f44288b3f8d96cbe89a4fe97957a331f1877a3d304b22f1f8fb214b9c4ee7e34d51ce366bb4d8d07b9684698468ffa5deb8bb4e0ccc74c9f080305b147af6541974afaa4b437c06ca3b10a2aee6bd93223816ce12364ec976f462b4eac0161d6f5ef12bce9c88f09c74a28e82c21f02abaffe82898772b7a4414273914fb68adc78d79b3876664b7bb0c259fcf807d5c74e09d05162196996f1fae4303295c592236d44a14d509c365929250d2ebddfab92270e5b6a5ff3ee67898d2117f6f3e88607cb7330eb49625723c319175463f09ea6292cf4149d502f81ab73e134ebd8f300b6efd1c1dbd4a6311278b50c57102670225f034421e755c18b690bad2480d44f7da9f19b5c28fb56e0f8602c98ede14fff209907c4dfd9a737f9d81923a22cdbaf0812eca03e74c5b759a21e864b9c3f3ab1528e94e92596084e5ada0f23aaae51c77ecd5fb762debad0dde69e51c7fba9e85762f8ba9dd873473ec31a8f45703977a34ca27c1cb6c185cd2c670da66273af9950458b3a43f2f57468129472b9ddfbb1f30938e18d3f14cc6d48ed04609b836089c09b37153f21a208be82e035b50a99d5d4d9cef51210ef1c1746826768f62ad4d2a8cef549c35f84bdd2caa906b04a915213e688477cf1bba1d066bfe02edcf0a27a041c208c500b179cd941c8cd5207b3dd1e75fc50ee3601270e1e59633a80905985f3c05d0269251f92cef794bdbbb4f18c4117faea0c624cdf5b3564bd0d3b9191d04acea01b4d3d57cda70e4e1ebe50948426da310fa523d53bb313ad14daf5f9842ca8779eb9fcf960d79504335abc2d7cdcc47cc185f3968cd5e48f1aac592ce8106b45926706da9b0d59f554e63d3bbad582efa4ebe920244c63e9382c1750a409c95dadeb2996bd9ade6e0d7c9dec56f450e2f7aa94fc7783ab48b08e8b72da16299c9db9d84c46547c7039c7ec335b745e7cb4406a09d4dcefa65ebe97c36f8925264629a96c019bde70f785fc495502521ed80442d5716ef41533b620e215e60cfe021cd5146a7c847417e5e5424989c39c3de5d984f29095bef89a8f3860df6165dceebc050bcb417407c983b26f21bf4a94fa4d4cfded3e2f136b506978b55a0fd4595e21bc1bbd137658f360748546d43d30a47704ba72fa057356cb43ca6123b6f7e27bdfaff3a725cb1a0f27b8cce81cc74603734146a5e1f695f60b81970f187513fcff76b48da9941e4bd010bbb59eb27fc4c4f7e3e5efa98760fc904c2b6fd0de8b737c23d00780ea549cb8ee3089aeff214bc50732399fa80807ca882969a8d5d8e247381f7936ae12cebf38335873595ca066859dbd56fa3402ec865bf050afa4d8f13d16c1f85d15ac55db62339e87660b4fc0087b6c823e119833c3854ac5a5baef53d2d8072ead595a11eec6b8644e56a5349f9a37c96daa94b3f5dac297f7cde4eed8e5561c0e0e768715894c3135d9a0eea55f595be7cb94ddcdd5f8451b2918554eb7a566845b1ddd86361411d8bbc20f9ab1d44ba83173baee67b91788b589237c43100fb9786e27878f2d8ca8af254c9f5bc8ae929e5a0a16e4adf6cba202c9a7df745f06be9f6fed9fa41075a464713e5b4f1b8a8aa4be3ebbdff03bede709392cd060dcc8cb30ed1bd16ba13967d973d85b32a0c74f7f93cba8b834da077c30efd26235f743ddb09bc552efedb8f80da19a1251f0d02631ab4223eb8b150eee5683771a2d3658c4bf7fded64feed25b418ee0cfb0a642b9984aaccc0e087d475fb0f737165f7b4f889f0a6fb001812b141a47633d8c95b4fbdaf06f821cddee525bfe8155b69320692b36e61a7fb218e4a6f3d1875c97c59e4e331540cd1629a300e9e8547edf86e44da78a92cd282bf8e315df05b9f2aa0d5ddab620aa64d48fd6dd1da7e515fdb6080463d9e138c5a5e8e2d61a4f0412c102efa944a0d7be59ad40672d74dea3dd90db56412d4ce2c123142b762760390293a1cefee9d14cf9193e8573d2558c01661ae749a960a58b17671ff9c24d63b064c050c5918a6f93f945a6f3158dd2113f96760c778837ea591d86f5e8451852c645f8492d8feb2629896b34a1088816958722b9a768f617b27b8cd7f278391c49c8091c383fef2b8281fdf2d2406e86ec0a2ba669baf214764a978c1147e3d8fd08b7753f4df91fca6830cb332181a9fc9eebb303ccbe7a7b562f3981c91fd8f1671f17e3410f3848bdb80f8e8d51d27ba76307bfff8c8b08f2fd0fe0496954156be05089f743b321c36fc45fd72f78a6ef4e5d1d499e963373d95be5c5fcf4b73f36a0861e8e877202a8ec6248267c8e20ce7780b4000c08b0e10e8671fc57f32fac7e63b9ee6255c4919f7c9ec322df4b9f68b5dd9dd99989ac682c3262ceae305d47dda2e73ab399af943f88b58c0964e6b9ac7699ebe85d82850824c2b36255c453390242e4bfd35a1a532b33b8bcc385b706c4ffe91792aae8a715dd0b655b1db283db246d7e0b58a87ba0375523a4065b0121c48d0210c853f2070350541e55175d7e7b33859a7b80b6738cf6a0a8119cc37b0f27b1c6457d62b2459628228aee0d15acf17e215e0fd626a469af527727f8d3de2e8024d377d1ff7a7c8e0b1da8ae1a9e3b930121ff50ac443f0c8bc8be27c0f1fd13a0f0dc738e0f81722551aa57de1026f6e4422e82ee01cf9d1f7fc249e908035a318c0cb831a9b30edd7c85750342125c3284fc6b49883f563eb6a88f8e7412ead7ad138d6f99e75f45ca4d9002e4d7f39ddb9f2d0eb75de2fb72628600f3a81311340c3a0220d2a294873c0fa764c7d6967a73bd018b4c21d07cf14625df3bc465a00756597dbe5ca407fbc390833e93d5e17227dbd8573919c6b095f5aef03cdcf3d6a017d5c17e73123953b138c993d5055383c9d7739d9464117effc1553f829b417592e09865a2e570e2d2ea08aa5583eb11ea7b337ee719ce2ee57ff6f1ea6c7d4d547199d3f9c4facc0ff6dbf1d8e3e175d4a03ff01a6cd798dbc6e43ea9b2f95a9ec36185e11ad28457827f9626f2c8c70f049989194e7a992caa91d7d748cf82e0a02fade828ae2defa9a5c0c91e265a980f2f5633588346b5808f5a91c9672842520974414850f3ecefb91991f40e5e607495cb9e9060496843175179c92d101f63229b41ba2996bc06cedd109d503dcb94e2d2f0c38314cb3b6bdb3424584c8433267be308bb2b9ee6e86a1f75536b32bf0017a76d8724760271eceb582296b65a52ea45f74e9a2534b29957b12ca26138fc84a330d86c99cd1ce6cbf603aea9d98a052902f3e9b9f6b3f0991290fd19161853a7dfe485730f88418519b95d891dd2737570cf1e159facf087aa93298fe9b3f2db151731dc64cdaecef52d7f35d2ce7eb3f340f3ca5dab4d08b077e7eb394c084d5f164dbcd303c2e0759ffbbf84494692d85572bbc9f0e5c863e47ecbce1fe46bf117639159f3d3f8e5820eed15cc6763c790259fd6cdacb504504ebdca43fd8af33c8ceec95c36d6b00638bbfcccae9c141343831bfb8c83d47e91c89530a06357418cf6fcee3c402c3e33d75810c559a1900b4569227b292c4fa1e49711599041fda4e54d43e57f754af424d52866d64baf511ab1948e62a043647dc361a113027bd488697b19df5d122b385a424cf6efb3f6083b66fb2d367d63f4ef9effd09ca3e5bf6c5aa234675b07dd90a0e7bff79e026d2c6b364ea717fc1e041e170fe2c3f90253f3de50d0550393347bf5dc7b1ae0765ece60cbb61971c3f0491dfb166cf7d9b446418eb1ed490d3622361af4db2ea9843c566f956b36207bd7c8252e6c9963d669604a2973e6b0ad93d5eb775b915ca3dd5d4a5685a965d7b7160190eeaed005112a66986b4b179eed94e68e02d53bd6968b2e73c7903813d42f6773f37be749975ec7ee9de691866566449134d6c6664e543461af263150db5114c6ae0f8160dd0bd607ac68a1c5aff86598d28bd0322cb535355a2a5cceaddc27a58ad40c0d9a2c0017cb1e7dcb00a249ff1cb8016310935258076bbac62e8da465d09308b7f5ea36246d3d901c1236187314d75571baa46d4c8d88c015877df42c3aa58d588b466e98ed42f923d5959b93bc049c7f5a4fad80f22ed6b522ba6319ef08c4bc280720da92a90ad6bd32c023e2bff8fd865afe359ce7d909f319a1faabb86a0ee8f6c9f976f8c922cf5219ca46a061a1d0458f73c5b699f7bf8f429a1a9350b67c576c6e29e37238d39d5d61545124aa6e57520b30205cd291593e9499e2dd89cd670ce21b90f295695fe6d8b964607abd307fae41da59157e4a71bff6a68a493698320e2c4e6eedd4f432a593da887c89d21112ff6a3eee60ea1c26de77656f0abd6da8dcf9bad6b21063c0018fe459608047239726ab974d4e628eff0b8f4d3328ce5e0f13e35107dabf3a4d170f8162df254c708bb583bf5bcc922c2fbe7c031468e4510ca619466f305bfffa7afc4e02f0c7e9c36456d69fc64af137bc9a9932d60d10adf6c54301c44f8c9fe898c3d1b607432a34b026031f8369dbe5586c86b5fd3c787abe388d2e6e73aff05beb64c4265b0798c8e9698d865494addad9e1256145e90cfd3f384304f73f7f4a156c2e6f3a6972d895bf2776a9b01864d48c4cbc5c013ba0fb717fb8cd7a537fedc34aee97da9d542904e9312e7f40580699d3c6770fca4d494f7e7a6f1b809152a53519cdf864f8b2b033d1d204d387075e67d885d52f6530018303e0a1ef4a01ab4c81e96107a0e02f4aabd31793cf7d703965bb2d150274e7f4e618b7daae9013b498d8383df39e36d6efe3bcd40643287f8aff1adace7281db3275e15250783bd486cb89addf138063cfe228013eea72f1aacebf11a73e6b67a0c051b9f81a48d60c592d74e37dcfe033ddd7174d3e414c1b240f020a16a86954cc43489e0f62297a0565a227c22122095ec027b29357d2de3c2b255da9b6d82fab278aaa22aa01b12450bc6ab3a762154fc8d9bf07aac873454eabfed54e4db0f78adf90c949d63a48843cbb5b79bb61ec46e41b07b7f7af44c9f527c1338760c583fab4029de16cab880c02d3f1ad328c8d978db5832cadd51d1aa07c38e9d81f3164a1db78a29c4fb00f5d6c4a9d903d27531c11f7b9c58277663e9f70f74f39bff78d17ff5d64bad29949445b52607fbd0f7eea51f1a0d3d1d53c7b89ddbaaa3f6336b04497f787aff19e795e7a0b9256d3d50c6baf4f60e89c5adc73e87d6790ac002b4e9e87435dd6589b3223b925f03dc22e28d0787ba6a1ce77d90aad467eaa73fc89ffb73700f73115e04216674fffbb8665b495452cfe0978545adc434a87fd73fe0e23292a7a0ea5142faeac3d5ec41c1fc13e3ba7824ace029280d9ba450aead561ee2cb0763623df27d3464fb5633338e087902c2ffd33da8fdf16ed366a2ad1556f0d7878602735c91634c0f0f761aefe6ceb7bbdf00515d590532b8208556d88dfeeba028c54b39a52bce812533a5f8d4e4f111658632b098ea229a4f1ae375d21267f07ac55988140344aafa993c8007e4b35d89c3a0f75d3662aeda91ddf7b9473977121d5314ba36b3a72d1d45452dabecad6012ecd8790abb700d446104efa134a9c05f9d128ff87c299cfd7d5807cc27197157a4751e821d054278e0e856a59ded8442eeb2ce24d5c74b740ca0a748d37d6f4477b0b42e6a0b6b66b499257beb3ea884c1fcfbc1ad7e9d861ea76936373005d15a48d296f27c486d4e22da3a4318bf35ce66e4a11d4f33e0743cd4ce1a0b98e1c9cd6bf47617274af38d1c232d3e8a88df0c7893af71e7ec3d51c9e36005700e60b88bb7701896b90083ef400cf202a1c8e81459d210dd3974ff50d238565e06d5668f9bafd23ed33b2f581885ec97f4037a22c8ec6f59011e8ebb7c425226887b2e39ceaa731e67472bf1787756c3463c5177bbab41fe036e41a698cea00fe678d84c03972f5d5b62d2727c8cd041f280e2f32af7969ccdc899ccce838252884257fb627ef8844fe85fb5b068883fd175820e1dedcc6a3408914a87ab2ed4e28482ad9491855893186cf20d7464edff28f81fd67cdbaa4fe032828e4aa664f773f7eeb4e699ce13b217933d294bc5ff53ccecb1d84defcbf61ff3c85a6d2ddb8499a09dee6f0d60c219649679b9ab09af1e8d7958962173a14c706b78c29b82166402933bbb9f5ade604c513acaa74a55d92fd3bc6863b59453152583894a87fde572a9bacb3d3e8896678eae11f6a7935f500afc0207bb02bf324bdd9f35773b8677731546d66377ca47b9f2d22e50fda1db7e7b419f1886a455a532d58f02124203681a5cca9f8cf68108a72511a110c79beec3cf04f2a74654f8ee28a8f8811d307ec09859623aaa1964ef73a39dcfb5fc714da35c0365e13a0ebae8389db50f759f80ca668f23104912251e55688b7856c19cc0f0f34f915f32271f27a9b05a646e9580d36408786b9dc1c4728284f899b7c49b72c9c45b4d6d278ba2b4abf1d05428defd492e5e325434dd08cda066b8d025bfbfa0e923ead3c7f7141e93d3fea164b53120b1f1b7c4992dee871950e4f4252bc6b7fa782a9e11de2c1acc313f94dad9538b507ef3631614750bcbdbad98e1170ef756957db12988b658bd842033145e3e5f33e68fabd71d480b6879dbbba21a033c239154cc69c20ba968f9a59f39dc332ff0151f8ef18c0ac33fe455078e06b313640192b433e061545b18d0c0d3c8b28b257b864f6c53d15c49c278958e8028c4470460a77bdd95517a9b2bc8d07e88720f371fa4b0aef74e4881c46aa312a3f9cc77f2a06efe67844b843fbc81258dfae9f938f2f026f3ac048df3dbc51bd9d1bca2ed868f0b2f954ba9e3afeb8b0f1a6e6f8b9eaa6c99210e9907643ac29a0b4b0c0d7a79b7105d8bbc54ede22966c82e3c1839890fe43e26a334ee860ef821c1a27e289a88f7d9cbedd7d105907ef65e9d12f5ef183574ce132133c3d25b5604d573144b22bca174ab220192fd35f86b14d0e4820c09461ded72c9901f516bb47c91c0069977ce4d132d3437b1c94724722613cde93cbe6add3d3afd51c883fe0fac5c70edac1828fee347342db457bcd7f50b69bcaee9763ba5ac1df6bc63c45edd4abff2ea5c4279c39f8b85b5ab38056ef3a6aacfe05f28506cc8f4a9c6af8a544346d822290579709d33bbc784219e04fbaf071c357560e772956305f3f38ac3f6ea5f808e1ee5d72ffaf71f003c116a84eaec5577764979f612b2cbe0676900c293668ad349410e7ae07c2efab5f38860b13498376e6444f34855fe09311600a34fddc6cc925f61092074b0aede84a15cf7a12e533919c491b1380d3a81433bdafbe12ff5b11faef93c87b0f58ae927147e228ee8ac70cefc6e2564a6d11a1eac32afd984ca6288ba8dc1631f0731c0d9e4208ac98446475575b42ab8e9848c64c5444df55393431916fb479ad2b36247bdc2363df8c57b054d4b26ee3f4482e517ac2a83fecf448b836409367c9f441535f5df95275ff69a66bafcdabfbc7f753ae0491370fe1b1868579dde295add430c68f309826584b0f2450c0c9c96f4bd251ce5ab95c9bb4d46574d4f9c47cd26bf705b100c2c154ec43444c8a37eb11819d962231c46283582618c71cd8c06d01b100e40d357ee63a624d23daa56d701b650861c1129d4a346ba0dda1839cd97d0f349e84d73859278ebf91ff882b55d41280bdd68c57d1056f1d709f62781eaa094c9a5b277b26a68305bd33bedd13bd6593b07376bda919cdf2ac4ac27efe6f8f62c30e5536a1d9ed1d32b54a4112b3d686f65d9ba1f1a3df568f14331deaa596874f215a3f3e464e17c42d9c9884a6a7d5d19723faa22077d525ff5a8a04b54441aad802cd6c173e99ba85c3263a4c89ae1dcf6362743d72cf28e5b93a384b90072f7aabfcfef6645e507e6cb5798c737330ace49749ef87f8e0adad6a5b8b2ac7b395704c2239afb281ad8513ee40c53c8e2a8ffa339567d65da70997646d3b61e3263922e85e03f82ab5a58fa21300536b65c713034b2d47fc800106af40812a689750465e31f52477cf3b800f917db6fe81420b65cd0af83ca0fd3d4f82af6ae6eb3d6437f7ba429e0a83be36bf4a98a4a18f309791efeeeac92b8877797ddec6a5248b0387f7edf3cd0027d0cbefe0d0059f74a6f2ec0192594475ec4bb136d12343b1f837c2d84582101b86a349a8d1cf0def3f960d5c45810958897c9898968b112c4bf3b3498a779f014284c3bf6106a059116b59ffb54b7bc8d405cb1bac851b3a16e8a699de61c5c088dc2e280bcb1d91b9e2c93d995a9820a582ca4db556ee7ad4a344b5d5075746e709309959e9bb184949043e5f9bc8ffd4160bae3e1f5c71689174a016fce9056fc8b6fddc295396525cca7e396cbcc8070a3833684ce407b5203bef4a7c0171426541f2fb12ed548b83334c71eb9f237e4612c45f834807c618a04b5dcf45833106ba4c960198c1fb4ceb4c0e6bff7afa2d1bbeab9134a288d6c0f307bdb8396698959077c307eebf0ee4f6cc429f7db5765a71452c67ec137a4937b3f8d21421387c7a991d431158d02615657ad69e6202f2a28387f85e81442efea399579885232b7736e8810689ddab482006b19644e1de0bd511335355a8a4417afa73cf768a702bacaa6ac9cca47184c08f3bde51f33ad74adbf18b77ce098dff9973c783cd19ed2de111fd52c35990b605e03769d98e26f3739faabb919a8545d7e80fe4fd6c46475678689160ae87a86aa7239628488f034bbfbaf9329f5e14a3ac3e84b04e762e3ac974643b945a489f8a6965113499d3d862a5b647f362a980806c227685efe6e143b0bf0a184c7a20b99549edf240a71d0bbc5ca5a06ec56f6fb77a8aa4d83358904eee13f874cbf3e1750f64b577493f3e33044b9a730b9a43c0838c078b5a2a39a26318c53e383c189d621b38a0764f88a2cb8b82f8aedd872bbb51f117b51a28a91bfd77ea4231e2e46122df151785b585c0fbcd96728f9523822650be14a34e7f8bcd230c5a725ee5438b06a34972d3bd57e1827bf60d20d3890de278f47016e821fcfd0a8ff0307f0be5190a3e01ee0e762d4be8560089ee4fd0736f7b45d1c8570291a19ce815564c87c87edf418c9f083c8db31a5a0927abf2bd814fe322ab50c28f613da78e4fffe1b8294f52a87d2ddfc5c6717e64ba67dbf2c237f44a3e0b4c6a2cd2111918674371a72eec3c17ec766c9ec31c6ce2f3c369f78e1048d321e876bb582dc89d04c6c888ba608ac37d1740cc8da014601c41f21b865208e21a8a3c19b21de1949b5817d1b40de4382600fb78924e3bfbd87644de361f3f82490c2e26395755f34612887b1f952e129ce40fd9566988fa2849b221860f03f43dd7ef15a9fc8f749d4465f3c661365201cb42bef1f608acff1bb67bd6220a19c6d613ee53a31118e6fdf1989c42addb6b80a5082a0235e040f43bb78aa535f67dde110da9f7c2a15ced6841e126edf6fde5bd2de570186dcd0b8a5458752237f0df24a10bfcbb1686db04b41f4595cf8e9862b7e5c93dac9f2a7e036a8d9daa46949f2ef9db7a4395288b30f736b6f5e2b428c3d983cbf8f7566d2d520430c08a7b3d0b808d2a36df02ade4b5d388de74ba1383b9b7fd3599ae536bcde5700f7653efe505bba6c35f47b875c3d39a61cdce96bc7550c747157b2a0c55926ed2d267a43a5eaf5f014e3e7d7cdb86f33a6ce3dc49f611ef9629d32a92818e4c676c5e9cdf303e1ecbc0a502061827f2894080bb9668116e902b5b7b353dec25d08f60df7bb0e2ec4163bc9d12cc928e53b134aa25de782e2785f6475ec6b75f331cc49409a18e1844393e48172e77340036f1960d3bb08a4f417c8a2d8212da5a2396125aaee350fd73859a7bd235a8db7ecb757674451682a8c0dbf49ee5d9341aa9aa9112d16c565641a41df60e44952deff81e1f2e4b3ced857cba8656185299086ca58ccf3d7f2975facc985a63c31dbdf3d74d3caf7ee82566ba2167206badf449e2a635296b41b1b5cd67da005b3d5b8a06c0e0e64fe6069be1e86b06d8b7c65b684d5ef45011b8c759786e643bf53675266094f336822d1f53c8419018df6133abb49b4d2b5001041cd2b63ba2213c4e4312838dc2937df9e6d16d184e0f119af18f30213a2dcd72b8c96ba0b59ac21380d25121022b7c5ea5bf90d1be8af45dd797c9b68094b90a402b775efb4c74cb91231a7c0d9da4ad4e46d892530a613ccd6031e944830bb9bd341843e2e1ad7541cdf4987ca0a23ad53758011c6ed25f95813887926c1eb5ac609c5d38f81b50eeeaad54eb7903f4df7575bdcbfd535ac8090c12b8adab777e0077e1b2ec96bc084a7c057b3830d948b4cc36353980ff5148749aca12dc5217a7c1c868327fff9518d6155302c3d99d0b3fecd4387a03efe1b573206b559450636f6d573b1c6fb0e3bcca1a718928a35b0e29489e82ceb7370fd0d32db64e76cabc0edef0bf9b06e61a4f7ffec544ce7d33c3d1140a87901d0c20432e3164c8d2a69f41bcb06e57a60bf7b28082fcca4758fad76163eeb6e0293b93603b30fc7d724a2a1f1c3cfbe5296fe8b60573f65d1f5a6305774e389e85ed2bae7d3aba538fcc23dc934a5adf3c35dae5bdc6e4d5a36da36a1a617ae98e8336da7cb120ac5e2d1cafd76073d4de484684324adba85a256aa8eccbb4c2f8512276a9073ccaa959eb95ed8056edf67b6df7ce6355f6bf0badd1da8570dd620522e6c9f195c6d0dcc7a8ca15aa66202c945f981081167ac807d6ad3d103775baaf75f031a349fc47cd820e7f28105977837420b6c27cdcfc36f243a345fd677c037c6f0e5216dcd67c3a93141d1b912f097247682e6af4379bb0574799c431cd9c907d108464bc8838ead371ec38f6e975149f070f70899bbe79f69fe70ed647bfcf7baa8c0bfc33cac86b178a0914881ea580a566c2bbcec8b408a2dd218e42f32e10b2b37c2d11ded12f3700da2382dd16286b635a2a0608788d4a812dc69382e1852eb68d6cda83fea4cdedb2250b8e3266d9eee8ca3c6fc96b64a9c22842fbcc25d84613b3e2af0dd50102b79ce093d3bb962299dd33136ffbd1819932f5b30d79c9874b3678b9dcc32284d108395034f029cca2a673b04fa7a309a808713f8ba74f9118177cdd4f0780cdb477cdb04a74eff0acd75122634b4f95888a45fb9c647bf20aef58bcca43c9ca28c76b9f3425504500d3f5ec32306e4b30db1d86be1b102b3c0469d9388f967ea972d88db43fc0b489326eb4eac581a8f5d9ca44544fb32ef92d6c1da6fc397e550608f1bd9655dcac3c2ec4f88061fce64538db7f5bcae73cb4e45367d200742c91e1c4115fd491e630b58b3e7a1ee97085f9b6040f49b0fab311add22c999d9db0cc02eb21ea593f96b41ad1b45be8544c00853ccccfda38d2c43d880f674a660f472dbba8eeee8df5c5a8492b54c4ef995cbb1b24dc2bfb47807d4a273263c0719ec9f6f3eabe89a9a30fa6060a1cd0c99a0f461d7b5bfd9021c866bebbdfe0a8b5e1f18ed66eadaee34cb9a064e59cb071fb3299e0963d47dcdeada57a4dc6076c81ccd2f353e99c66022c3455e64bfff740628983fd56f56f64fc13f14e5733d8396feaf3f7253508f80c5c743ba8668560a0e6e224ace9526153bece18d16708a197a9139a962ca296f1c4ecd32835b9235b9ce396615403c380aa57f5858d63cff488b2aedb1f1d6ca6b1f1f21669dd1306dacb4c283acfd8577e56c2ebb617e25359fd5af5d71eac6f3572af047102ff8e7c3c3ad8052bd5794d3770fae13b7bdc7f26f9054be0abd94534779314bd7ce2812dc3dac21d53ae27c687da166c3f5dcd4d98e402d964190605888a3f655f80b8de3f654a61cccbe9729ee33db056a842aa7b7fd338f4fced35773da91144201de27c83ed93223013eae4ea466fefff53c0980e0b9c1f6cae30ab4292510a6698e13af2654019c9a1489ae17b09ba927d6f1a168601ca78f585df7912d355a60e86aec91790d8ac362f97c318766c083b6adf3851cd7fff737da462b1b90bbbf3f100f8ed326d42057fc3d582e93f1eb43bfbdac28decd7c6d7dcc24266d8e7d495cd8b5b6746fa4e999c34b91a6f53b0563394364c64952525419d41d6aace8ac1a5ce4b14b8966d90b4b2d837bea5a3c98372d46d5cd7f8cddc77238e357405398e2f0b967b04aed73007cdfaf05de61b990c0e8cef29baac8ef25d376f54e43f7ffd72362bc37da54b4c899850ec69885764bb375b76bfe28aad18b815874c03e6f1e147c9ddac69d1cd61762ad57c425599014d8203d463d97fc58f25f4ae05238bcb813973c66fa42761aa4fad6fb15c6b6d596a06c18ed5fd18b1629870340a37e88cc2cec1033bb4b24c94262d98ec8ceb98bdc2270bae4f1de7d4d9a69b654d50a491108e351e4b7c89522c17eeb7c588394a3b4f0fe857591045ec594070da0bd035663aa66b4fc133e80fbbc624e523e98272c722db294620c445ff855b39e18424d3bc9f540e295334c52e06cd847b2bfc3a046d32d08ce426231ea8cc7e6c64358999169f6dc2c71e2f29c8019b419af19751a16c63c600801c503d5ab3c96f25d1ec1a25ea1ea80e7c275042dd1efcc0adc3a35e70b870aec90f6d13de5b3e128399ac53e65e6f71923111c8f2cf126b420415b0ae4726d076077ef7de7ab1030f9edcac48096a378d0fdcfd76c61b19ce1f0d5b079b05c7e8d1a67a19122d5d15d2a3446ac8115848028bffcbf741921bb46f31eb2897bc315f9706ef79946f8f8edd465566314afd509222bdc3aac678226e55f9a8449a956f057709162ae88702637053a2bb8def3db56bf11c5b4677a7febef523db8f7ed6a29d7582f75b63365a92ccb9381f2934bf152e5dedc93c7a49b90f9c598f817748bd8d5993c2b8ff691375be8f0847408910696ff3a963554f647807c9d1722fcd11b4dcf0f8b967aa6ccc13bad05526c47dab39ec636b0b57344997f7508a1bf443dd09653e2c46d7aaebada004bea6f733c470e61bb9080270ba84764b98f019f6eae733b7f01281f0a3ebfbb540c4e73eca3f461628e541b3a9de26c54954cd3dd613c8eb1c30b6f3ec2590f8031d195a6f6da63d2a67cb6e7011f7067d6a4a22aad82d48a32ee57ca34e8a67afa87d7c22e978a0789a0d630a233018a608e6214e5c8a9c8bcf86ea9738119e986d6b4a02eaddf153dc252b8cddd64a4341d1aa20ab0e9cbbc374adec6259bffffede9e9f09240555ffc3b2e96132b1613942a261ac55614f6cb0ccc461aaef5bd6b30790048757cde873b50cdd7ea2317afbe26c4933e6811dc360423eced6b7d9ec47d00a0e85b7494c4b3b59303aab305fb7c451ba8b25a6cf17d56754231ea15fd6f6c9ddd137559459cee5eed6420db860ece5a595ac1de3b2d810eb06164d155d369beda1ac968c1c388fa29badb52594127362abc13a11878310d3b42f007c3c307fd2ff4e4929a45ae17aefb5faa6f98b89a95b70b46eff24a41be7a04d140697d13d1963d336532eeedafe1f4410ae1d180393dd6f0a19b4a9e45bf12e9e00a1dee0c2f8461361b81278369ee458c217d68528907c9ce5ad2d5f52b752e9a54ac4a1ef3b0ae25b51f4c6cbd5478eba3fe6df524921c00a4466a51164d654246949713c5509e1a03b700734732ce80f8bfc072e6d7b3442db75cc6120bdbae08c949c65da1351e38977ddac4e5cedada990f63bfb72cdd8d98ec30fb9b5fbefb3ec28cdce4735ac55116ab2a094547660e76ddd16057531c652ad6c9b01a09ccceda2fa33ac07d745fd4489469051bdb3fc26de1f27db40b58661cde18e0ae607dbcd162a5d631365b08cb816664acce198b0e85ac4380f0977ae0c70978bfefbf8ca70a0eb8e6348a67f8c45ad855e2d1aed0c2a98d83d7fa4c205205738cd9619a4f995d2c3a18540b791d9193e2578bd623ed5e6ee7b8f94e01afeaacd6ce0c39fc8e9230af679ae291d3083ac45ad6f81d6e256a70e1adf1fb095ab0ba98da16896bbce816460978dc5918605d7fb719810006d365066d387b04d94e889621cdd435c21fd3cb88097e6d6371c67e15a758d796c2a2f714e4107d589b1c064554f4fce68e2a8fb2ace1d1c925777043e8dd0439e2dad8b9cf6269f11b03bdedf1862d6cf6422a65e60cf869aecfade0420c29340ea5e4980b982704c33972feaa8c49bdf46fb8ae37ba21967dbd93842fd2f07a1c6edbeb8f015fb45eca772be9ee5d84383d57b9c2202997b0172720a71475d23be9710a1dfdb8aeb64f1ecc415d79bb46a293f01609d7f2eb0149f9a661ebf36b2ae50c35356c27bf931527203cf962700c2d6700ee702089a846fd8fd2b987b2c17ae78e50b678124d6d6cb6aa700ab9e4016161197274d967aecf4a7cdfe9bb1cdf2f001033eab1d80126b345f058c3e9789580428e628ae2501bc5ec1ac98725c523ba64bf812c488b22bad98c6aa018dab13ec595f2523a3d55ab1ad878c6066882a4c742fc58c78fcec0817ec1d093f6c0e54ae20e7a28af9a63099b9286522472e0b13729cb68e2011ca48c487f89c076dacec785ca8625e303c71596bc8d8f57b584260c1543e5ca499b9f4bef5e92b1769a1dcd21e2922a85084a3529a66bf20231dd861d9adec55ef9abaac653b704c90995aa4b7cd2966bf08c28e4dbef0d641463271aa37d1ace344bb8221001be1f16a206f07b58b17269325748e65a7b849628e83f2e95d22aaaf64aa617738dd35ea0e096c39cadf14a36db0c7f6cf29ee9a2f1650079e0c7cfadd0f263301784eb35ea1f025de761018e183b49d7493fb1be9d63d88868230e687aa759c90a99ea654c2e13a110e85b57681d69d5bcad7969abc0e95f8a3585b0d65696debcc5365062587ada8054ea26d17a3caf53a34c1bc02210e94ef7ae303c79837560c06d72e8985a75fbd2ded7562c3109d3447d3fd597b045a90f32a1c0229ddfb91b0a71203bfc3b109f004690dcfea22ee720ceedf5f401fcd1284e2447116e4b677c674712492f517f93c923f81ebae1dba2bbcaf80bbce034e670f75e1ef39aa80e59a0dcf1a47cbb14e87db8439ed3dc3f6011e6a247cdabaec67b39a46e24a53fc6147e55342dc99d490909b0c8dda74b6a0f1665d469097522e4bf350622ddcc6625f42a98d45c7d1a28011340f7e66b8ad2b9bfe0998567b22eff11316082a422671947d34c74126e57c2591e41a7bcd6e3052d1e3e67e6e1266a6edb6ff6e346adfa8a4d18af81ecc1a4c98dc09fbca6663855483a0b5d3fa08280b328ea3a17554ebe6893207e3c023fad5e3f76c097288703a4d0b717ab7b4ecf3cefd65577dc8af80d6dc9e065a21f163125d3ee7f27ba1ea4df627d443111dfba5b256631840bca31fe72efb2308df760a5705440e1451fffbfa4b788b5085cf66bc3e98c434abf22679589af94280d1a600c706f83cfbc6ca4400a0cac6c3ef6e6ac30f7bd92b084223cfa0eca05950f9a036964fa21cc38cc849a97efe602e30dc46a154add9f06419882cbee78d60994b53618c77b42ca6156997e6298f34e7c7da6f3e0e61abfcd48042e70c498242cc22587a31a96c0f2b298e131469fda1f1d75bbebdeaae9927f54b3157b9ccc2f78970c64277a227fa315a89f3aa58960cc28cc78954616a081493deea946739bc6b239b2da11f5781d8e86ec0096ac8009dee9e8b91a185a621ca6282b812a58a49ee4c7c30ec81a879cb4ef07f2801cfbdafcfaea83e058a7c84ab55829dc2f398d1167337414a4928b867b920e0148d6ec42f722c7ef0cd2ab9f8712a6f3b92e3d2e68cab0f230d5a0a8d3f45b179347262f414b398f6bc6b4545048001249c8f7a3a152178320b4a3f974c310d2e3d9285d6a1ca3af95a49693f582161cab5e0560b71e8510450fb7864769f3eef3ee56c478a200467a54c48d18d7ab0d4df5977cbe8cda70cb920fd68d4fedfbf126b1ab5c3180b6694466b394795a4af9a2af271054537facdb2b7cfa68e5fbe2ef0d7de98dc57ce26973eb3d109074d99ba6197d218f4d881a7b52a91ee824b36e7ae39a1fd65f4027b90af8a3036329db861a297d284040613a7b34a2cdf80f80ced649025a54376af179d8308a2d6554a1204dae8c4ea18f4661ce6d162f75638a7aecfeffda8dd2bea40a62653525d1c9a84ba70409e7a116aef12faccddceac35a813f644cdc0c6059fdb66605cac1aa29fff7bbb3871995280faf92e5f9ea3b1ca5f4dc81f2a5cc872f70678991f8bd7f05e86ad0d87a7606c9ac27259c084792b2a2dc9b0057278376a495c3ae81c6ab0d754c0acec6ffaaabeb5d2633876b240913efbdb9066bdc0fbbb62ea0141913f307253b428932b2efd4c5f25697dc3b5d51d08c324ec236310c5f40d08c904c5e803f773ff071f13559b7bfb6e6bd54f8aec0c98e5f499ac3a280f51045b80d9340bf45ebc1caa6253645ff0b8325ae22b6f17b82038f4ac1bc9c58510c24844ce45c54e474cc261df3d96015a1183531315ae95632a6dced311bbd2e5849fc7b2ca9795af06017210f480b6cc30c8b0f3754b7395981f3e8608ab31b3744ffd1e2fcfe016182482af30d00623f964535644d8ed9d158ae4b04de33dd5172543587881eb250c8e0e463a0f91dc5ad714c7703857621113ee5af3c55249ed72b7175ff90075c7c6b1dc781721ddbf6293a23dbfe023bf81e35b5b45faf5868c45a871364f9293f444cb5098863d298e86b84fb49588e882523d116eab22624bc209726a09900568903cce96bbf03ca623345cd625d969240679e2ddd8b8368c18abe57c5a447a148c478ee85a77ab38927cf0d47f3d5b5ccf154e444f282fb1858d2c8527a55e0d30c04cbb661b639770fff4d43b02da82dde4c2e9e3081c20e6e29d56a2e91d0dd521800e5f6e7b5c6817f8edd530fcd3a6e1092473d33fc0117918f1ab5b5af424357734a803a1e1d28002acb804b8ee6076a8e52e4cc07f48842d0c070309429b537e5541a10ec56d0eb3931707705809a7fc2b3d7824ceae9a8c925a94239f956aacecca60ce6b1f90a39599db63f8fd64538ea6388723daf29f21044ee754f41f1a4add7a127acb1da59cd3077d9b258d3fb694e44f766d37588cbaac02cf4aba6f12afb6f25e37383604933fce71a85206e1e07c53c4c581ff5a0022a723a0aee8bb0bb8c0c6fe71b11df8ffa28e38180c61f2523a8fb64d8b4566362f85bff525119aa57224989217ac60832c6aeaf9ca1ced3ce75d56784dbd9dc1ecd0188b6ab572e158306965046a2258b0629d89020a30b16635db9b14635b22be0231b7279806ce7065eba6518415249c34f47f7ebb23639d25875ac48e09a03cbda207118455d92b83e0c12719ef5e0987dd6308ce583b87bea46a2ec94a60b1c7ae164a9374486f0b974ec0c06b0d0b61ac6ad67bf6c4589693757d534c9a818a5c84a2b6647de6c63e86eaff49c796afc012100a796a3ec5e41bd39de8f16d952ac33e2f39b17e3f4d1c76d51492f9c0bf3acf5ac01bc66887b0d2d09924d4194f9a7e178e5c0844f22f0531be5a90ca5cb75a5b6e373922057db2443c721d6c887f6cd94ec887699c476a780918eb64b1a9359495d14d96cea0150aa16ba78a7d2a83b5cc80b3848d88a303c6df980a2618059eb7b19fee97dd6064f010c08fae03213e25a57c327f9cb89ed9789a9dea8b3ba613a25257c5e27447dc69c13ef55093dcf84c425157f73c0b1b34e0e0feb4f0ef44ea1883e7e9b8e0a201f47d95413d4b717e7e84ec6efc7dfc1547fcca56494e310f9a2548b6280ce1f0a2d7dd3b011a986e50b2da56641d069b40fd47ff59ac4732df788649a9de345fb7f8570ebd2dfd05458767928f8920a1af52b84a7d880eaafbb943df3f1db0a6443589e65b3cade323f2764e7850af3f8c51f0b5ac7202aea1a8df01e7c31a83a901432fbb52785854a58f55b6777b988fb02e418991c42fb40b45caa57f05f74d7983b8614e8814a399ef2f5df76deb7f0d8565671e993b302cc69c3d34acd090d9e5cad2654781ce87b081013c1a77b468d01ee0e7357af95609f53a78a8f82a05a308199e9601456ffc58a9a718f00fa4410c1fcde0ad2e5b0513761674f42901223eff555492ed15525e6f0d3199ff0976e96346de44ac110e9b188cbb46a67918844fb83285a87fd918ed37554604c51fe2f3dc2f5b4cd0f07a0d8e8097853a3b555b4dde4f7379c8b814606bd4e9663e8205aba2c544f620a658810cceebb77e79016a74a9bf11d719ffbae8df1861e74408e72d00bd63f47a3400b3867985e7e860bc49709b1bc4ef56e93bc45d8f9e030754a11957fdefe2fa5b648e19dfea076ac10012bcade94e7686072e17ab3ec8cacca3f6ef2d2480d013104eea225fdf894df06f5da4e102009d2ccafdd571c3d1bd01864c619979c060d74fc352fc31bd09da79291e3a65ba2fa5db9d12ba6924a84bc0c288ccb877ab0f48f2946c9173eff0f80afe39a6b5b12ec22ac909f990a3c48c2e993baa1614154c0eb2ecd4ccd02f45e36cb5b9538cc4bb8b47ece8dbd8a0e5ab0c02d3a0edec202b9a7c93e5ceffde9752f2599c9bea6a603c3e07020494d5a05f85cd693cb8cb49df9f8319e22e27d2e09cd263afc7eb423c7643bff9af289b92317f7f3df6cd9e37aee25c5736af1808cc852f0e1082bc407d6a2b1c93ea66ab459979de96b729fbb345104dd1db9e02165d6ff0bf293922175564e7e60b8c34b0b64642ddf824aae275fc37e3d344cab4989701a694c524db4aeb682ec912b8fba8873f121e0866913a765daef5c69dbaaee2e2bd5e8a6abc9b91c1e4ac07494bc6c9df06df3175cd32045b5a4c0980562c07a85a83c67b22b28ea6eb46b9fd664a79e366acd2c17a2043a0cabfc0b928cbf95b215d82c4911fa0e249f3126cd81cb53bdba45b5904472ff0c4f87854a72ce879d3ba5315e465e2d2394ac934178e458ffc1b89ee9cbf6be367331b9f92edf470e9d25221117f67e887134675c5ddd7b9151d1b570fe59a63f179a7ae7903e227fd1fcf0387656e2941d76256fc9b4849b693710d1f395d32d501c7d84e96c27604706ab4121f85b0b1650a7ea837370015048daf7865166223a53b370cc801a95bb0ff96580ccd29b3f0ca9bf64b555542fd6780323a2adb3eb2f52c681c8801a04022ecdc7e0f564b903bdfcf7ee4f32aaf38e4dccbfdd8e38bc6da99728d335ad6115f9cd74e8e9a4cd97d66029e396a4eede62213ab6a7ed33ba62dc3b1e7783bb67b34b006391a07a931d20bcfb9ec2f21b5faaffff4d0172cbde9134b3a9b71952f9cd05b552bdd7cb5bcd0cdb962c6db2366b211adea41e38ec253733c2b04be516cf312f4f4dd344d1ede0ab582eba525c38a6f216e3aaa4cdf10457348934e18b89a43bc922db43c0adaeadb1b1fe555ac83b2b027819a6dae3ae25782e19aa07577626593ef8c4d8b02458df8a5f7736967050ef4b04b2d0a6254d362eeed6976256d3fc792964b90fbdae390b23fe0ef3203c1f629ee0c6d2912cbc8e78fd8ef3db7a95e58bb88e8bd5e268d01272173f82ba7205cd34c36d7f99012fc05b59302179b58304b5a50b9a356189427628553106d066c3974fe3bdd6d185779ac3823f61d41450b998d7b68a5027211f0c7103e18072c6dd0fb5e4f1ef7d3d1cc126019cd3fd10a239c6ebefab39d18be2bebea80c2a3faee76a24054aa2d580b7c0ac85e7616ff59ea7f756feea3b1e1c18054d0df9fb1224f521a3277b8a2bf4ca65a13af94899fa5c219d46071e6141ce1ce082404b9038fce76d326ee2626c42d1e485bd654df165f0129095898353d57857bd8d9c8ec10c447c2105709df00bae7eae16e65070f61a128676e17c6195103518154e87c3325387ff599ac6f0992aaf93d0456866337e0b87eb2926da886b506e446ba169ed45b01a9bc0fbe64e2e00ded7d76d37af6647baa9a277482c2b5e95dc277621534cb2f8ddf4297429f9dcf2db3efe6e8aff2413efec24914ee5d9e8ada35ca5f099d66dcfd182b3453ac7b8e321ebd1b71b793f97f98ff5d43519d3ac7f8fe396bcdf6c37cc48f74dc3964cbfc4fd917bb16294ae4b0cc43c6e4b0b9de63705ba804a54e933b39c15a1f70fd4cf2be4485df745efdf2896e67127965228bd98a5add2a1fd51887c2cf0e9818c80576491d0e1508171635bc726cea935788b2c2173db3fa692b3804348f6abaad600ff97532646e0c2072402bd9cbc9e6fabc65738f6023bc11f07d02ec8748e4df184fb753ea90716c07d5b6383741fb8679834137c582a708b9ab7cfa255ffa28287c21b2e7997abd5c3abb791fc09cbdb02c4e566ca473907d3629dd8d8f770858029518cd008b8201c84e0bc5bebd94edd7fa1f518022a88d2c4fbc9e6e16c9c4e15187c27c965327ad1e0d43de77bbfed573476415de261dca6fc049f3c1190dd5bfe122c7bd9b25c1ec1802aff0a377d66fbe0ad48e2ac5d1007a13257039d99d51f1fb2dd190f4e3c60243c7a0112f7cabe59dd8e4a90175e947961a34295261d57f90f6a2e0b4ee99779a29f757c1019384e7f55df7b2cc833cff472196a314c483d78f53f0253402f46dfb923a0ceecb59ab8f126a9ce12477921dda057ff96159fb9401252f917b27798b8d8db3d890da1c455370e6446de622f6e3919a2ac2cbda9f87705a0d537a4ea88e499e3e11c3646b61079d38e4ed99551a272d38ff4087eb3148560bfc16ce46a5c47766476e1f58ccf230689f777677dbcf76d43ab5c9c6953e7509ab89b2781e262e55f687dd7b3d15f530f9904a2dc808369036509bd6f4b42cf257c305b3d4f876d2c18fa34cbdfba37a97cf3a0d318131a79749aa28d67b96fc890fa664b1f4457d92d06a00bb03d61f456280f08af1b1dc2780da15bfc5f11c8f56cbdc5ab558f0b7e39f1761838fe65fdfeac184e30468a5a0c2f435821e0501d879814819adf67a93a2b70003b108dd98599c9860f9f0f3f82b9c781225b5b9630d56b77106d011f547d59de5854c267c4439327d679cc01c94b5904caf9b99f9b6d138816d8528de582fe6d537ad514a32afc49fa728eb50b1dfafec8a46c1a2f805d683ab4d6f6e10191dec5693754343806934151a464be8a0fde729a320492a150121cf01e141a114c6c8589d1b36a8f8e23692f77f34d229418f22cf7d4cf9f8ce34ada1b304af3d18cf14f8134227dd1b9e05974702c0e71013ae785596e39833d35ce8248ed483844146472b8498697e3dd579fd2f34e771c62ccf36f8bd303ac5b7f0945b1ab5d8410e1e854e6a9fbc2171398494630611709e037db22e077405dde9a0418458c99d71079d871fe4e3c7c8030294baf77f152a59881b3174176eb2db2f6d8558ecdfd71e3048cbefd5ced127a534561420ef9ac5d881973789e05c7ba35a867d6e548b3891d6990b81ec05b2bdad8afea49edc21ac8d831f4aabc60f9f3d65b80d903e9a29ac46a07101e018bee05d14595584ea0199ecfe82d820661670f13c228f85432848a414971e63f9f4cb09b28d52459026af1ef4a85c5dd696e36f6cc0b156c6a13019fc553295e3116f7d44e1057c58282739fff3d1b357fc3b18903db18fafa2a91d9541dbfd36c7c9dc2b452ca5cdd716b0e8a18a1fa5042f9863a12a6f7ff657bf9716902a0f1b95fc6ded71e3bf352ecc773f49de717200916fce801b32a53b2154d1e52c403918e838947e7cd570e527f971dbf5adb27616346ba81b58692cf820f93d1863d8015f35bbd45babd4493115fb28abda35703023d6e6dabea0480d1a7b9087f2837f52a9d4978d854c20aff6f005096fef555d6baeac29a97995be2eae5517775de46a6a7e20c48f5b8636c1643c614cad030c92bb7bbc975e657d805acee9c326117fa03841d7adacb4b457f1cec442396322de3d37aba1e2f75011de082143a7772258424140dc9b08e872ec6a8aa576e37792f154f35cb02c50c2c80b6a52be0314e585de9c205b04e507345eceefed285af84e24f3563d112aa2897f6fafb46ccd14bf1a2f0a958793fed129f07878d1093ad1c8ef1c4487a18b070a63f49e71f63045335ec2ae1c2e38f0f71139fee83a0d4e9391d4464009143f507a24e34befd122e632ad0bd9c5e5d6d09a9d77b9952da81d63649cd0cec93f3b6e4833334a816512dc99f4f8bc2eef67b56da5f438a766eb552ccaaaebc222affb1a8f264e2ccfd42b8304124b2704bfd2be30d232f1fa583d4e2c6a737bd45b62c51e4e7566537d17e03c71fc163cab24f924a108d8bf5252862ef20c04ccb0eaabf831ee7b0a1d3a8423fc310f847c22ecf5773238fba3b193978d6f8009465a4a24b21b5484f752108cb69bd167a506f383229f886cadd930a967eaf5f53d81206c241424a5d5c1f2eee0c40690465129d0292d3532fa2e9c166fde69fe3cafaed03c23f175130df86f7d87c460ee45af52d532c90f7979b013f1405004953982ae6d46e39245606bf6eb926472b26afe2452f6e95e17668dfe001c4afd2bf851e93cb167217e08c7f837ebaade05094e72c03621351a04d0650f0e345c76ca2aaea34923788cf8f4dda4683c9c54b407e0c3a37788d9495b6de9c7841d9710ac9eee29b5e20d461f160035656279bc4be05761df5c708cb0d3b78efb90582f5477bc21492bc9ab104d42522fcf98b9852015886e448c09d8197bbc9e3a3a0fdd82a932fad3990625581313c9c9c9071186c9a769bcc561d98ff03f0a65419fa86cee13052a23d9c9c1d69e3b5b3843ed6a403c1e31d217c447c2180e3f934f3d44b9afca9c9eca8e14017071771dd1820c5d3d8db26f14483162dd9c9e2094d2c34fa5a2025c24c64798d98c70fb59775e3592e5a32123dedff6370ac3d467ed2b1ac77db5f554b5efeb7b8e0e0c4692b3af98ceefb47680bd4e6599b0c9c60c468e9b58b1cd6c5513c4cf4b85b246b1ee419f828b091ff3abe4b85bfffd32666092dd7d1e24a3a3c97f9fb5c210cdcc2dd56db952ce989c569f155f37e930b25458fb98f1fad28100df8d6ecf94910c217dba6286b33ceeb61a762c1415c808ece098988b05f8260f7d8bb13b700fec7fa6b2307817cb5c8df96996499309ce315009618316b81ff6536188d270056f4e9c76f22c58eae8d0f28fd7a3c083ae87fbdb4e03d9d6de6efa2b520d9ff665e4c79bbeffc3a037570d1e019d47cbab8ca24b896426bedd2cb1d899015ca9c2e8dba9ed8f9adb3a37c260b9c1bdfa382994cc24f2f3fd4cf2bdac3cc375aafcb22e9de483aee969a88c324a7f882f6752998515fea7c5545a05bee074cec885c4e467afeaffff8960c486ff34ef0822565fd0f1b1a06ee57a4e7bbb80bf954e4c306d6b4616b606b27de1d5a2612d7cc2c3bd8445daef17c01d21a8b357ea5ae6d6068289f888daec90dd780f03c60b3ad48c3085ed691ea39e458e34f06066096300b390605707c4d8a891bf7bff56c78c3721d2129dc41ea64e189259d798d4e21befe32ee79eb92d846598eb8b50815fe64e067170800372f7b9600ff34a2fda8c02c8325f5bd3a245c4079a1ee492587850e6c26e128d6bd10623769ada6c1a7b0feb11cdc7190ed6468ba8f292f74101fe0a4945b6dbddbe587624778fe68585d8357a9ff8a3f5b4dd709e43207f8246e36c1145e3324377c6bd9d7a8f3d623adb8bcf2ad4319071afaa1dd34dea934382fbd8e79c1f86086ac5b156e336c0a03a843626eb96a63347d07167a832d4a565ea2e4353e8554ff717ea028b63acae7965342fe177c93213a7f347644f2651039e0c9853e87780a2000b39a20650d205ee1b46651c7d3d33cc6cc249094fdb6e62c8c8c8b8d1a35673b3fa94ebe56c91b3254fba57b3369759c0a8b1af3a10dc5524d94b49c2153c559408641e6b513e236291cfc929916da01ece91c0606cf1303e75044a42038fdf8c6af9b73f48986caa39e9fa08d9e152f38e99d54aa4ead64f6a59892ef2c51637ec8c3080905fe154d7d8136f2c2bb78e445e68dc1e8bd7832c3127113a0890149d18eabb582394b8dec53467baeabd43d2973f5974e04c9c4ec2bfb886f4fe9850dde4d146ac3f7b2886ac2c49da15561c6d9750f5d4becd0df4efee55b745c51bf7cf28f136c13b7186927fb4ca969c8dd056832492f6fac54ed5a97c7101e3da01e82b677eaf6ad742853e67f29d2d91ece39337b3eb71797c6b26a2eecc35adcd55f2a896d809614f8f6fe58b35c419a069ce994735654f59e973c3abb3247523ff3a2897b09a74f0746043c421ce1a0ba0a068a5a8a012947f1aae2d8f735b99fb725115fbba5f43ec8caaf92c3c0e2b6a68f80b1063afde1ab287a748a14a771f51ff6e39ced1f68187d8494d3f7187da184e1623dab8ae0b7045f1386570ab4ead02e5a7995d932c389f707d1645ee70d5a5fd2a79e48db5ec35ce2093c1ce899e9f85d3e7fd53d06165f662f28f40a30bedabfc458dfaa7a4758373627439e79610e712208c8e3586a3ae1bbdd74e03c3479e324330d8c2027abeed328427ea28ffb16b3d4bac33ee6786cc45acc593d48a97d051f06f48138bcbb26d30ede95d0ffcaeb75db212d2d1a2cbe81e2a1e7ac122bb3f1401ff59431c6a0f7b3b7b095372d6c04a5a655c99cf7f4e42e69b2eabe5ac3b85e1c3a7131e17bdac740d52d553ecaf80badd87883d4f44b26504293ac39392512e3236bd60a502cf102ebb113c0892cd7edea6fa9037040a4212d314ce7f6d2b0c3fc2da0c637f3312245a77bd2aa1e6b0cab96340e9786c7fd17d150b8e42e877edd855aae351eb89d581eccb01d0e4105697c642802dfdd8083ecb0379ce03a77b0bee36050a4d2c291f49f7dfb0c2fd57503f0e34a1661dd04af928b9b71af8ab4ab98c11c575f55533db7570bde0ede2267be698a8539be57014055f6f6e730b3b9c1836ddc3ddd255e1fef16b8377a2e63b7b4c5ff79d942dc93e117f67db57eed4e0cbc2599ed8eb1275028e52e9c16ad5d627ee87f93ecc756bd8360e4d671070db292b9e85a7cf1461452cdb72dda3b39c5013baa7db71abb1a29892703340d594fbbdbd5b0376063c6f710cddbf7ed197c3ea5074fc59b23ba972c439eaff382656cf2757973cf7897f3ebad2eea2439932ef88b92ca9057a21d59a382661277c05820d2134706cc433b11db9471eada64f8ca72cbb20d135e472af79b05401edcbe2e6e919c6de14fd3c52182fb9c978dfe478ba40b07a73f407c1f66d4f791f8e2aef8dc0773adf02f6d89314dde5492da0c77376591625109432975ac81741a55aa6c9cfec5f1cfc5413734dad62f4b9abe5892c1bf0acb41288c0b3edb78cd1d34f7e39e3a384e909cdb98730366140df275b74a00730415dee76b4d10721875d6f06a8514f8afa6ab0d0572f6b46695a678f4f418cb8200fb10d85390d278f50539ab2d41e2427accdbda2ba9e35c8448144767a68282697c367402ba048373d8ac48953c267485318ede62280fafb51d74a0662b3fb831c3ac83052ea76897267e60dad5ff4b94be988a58759490c0dce712dc73edb0981d232a652ec00464180cc81aa0e2dce937c626e0c80bd5e774fe4209b0aff9195675c0831faf999b232534b295c439fbd726a502fe427ddf84795f3f9cf60c8887d2b06023bf0cbaf1a1b7469c81107644eb9b0b2862d27f827bc1daa76beb5b3b8c804342af358459d4ddcb248c6c743f927ca0afc35e9b26461c7319f6cb82a643f30e418ea3bc16171510fc45c2fe03f785745f0a9b217f8fa27b11cf9d4e4eeadcfdba73a59e9d24efbab9ae9bf79500d2af09f81e573df188d89749d88de6806bf0450bf486c9ee4d09019b4a6a44034af995b2399c19b21da7861818758095f305ede0df8fb396c07c106210cfc86fca5240a928a42b11e933952cd1036abd216bdf10ddf365a6ead831a6d864681a0874ea4eb73de2a99c4e7ea8cc2894cf1dced7ddfc0a17ce7e387813739dfee7d6476b837656c13865a637f6117938dc0481f481133795e7c67d45cdc6b5e739e37e8e885f8a7fd42b8a89c04f8c9364cafd86f27650f83be5bf6409fa04b18d0f2ae685c7b147da2a3a07f9a0a19b0c6d91fe171e2bfb3808aafb5a5761ac94dc53583766779ad08d5389cd4a91289393edde2324840783b8978b9c1e0d2d5f75ecf16d3c4f4aa97beae18e4adbff4c56dff8a152a3aa28176873a0c7b8c721c329013134fd9146c5cd64e3c71a24675da5844f49ea7c48441b09f4f095436d0f5c6002878af91e91fcf4e25bbab7a9956b54fef2f61b4a9ad5f404268299fd6eac47552a2b949174809591e7a2aaebdef2e40d323a90f2d8426e9907b838d1aa595a2702b4d6b0c39b666107832a426075c7ecf6045b2d7a5c65cb9e22ec3b65bbcc69c232ba76ca4bea050729142e3c98ac57c5ee642c3ee77cbb47e6b698e010bb91bc9c4b3f49421e6723f2d126d6ae0a433e22ea62e1e27627212e48d75a82d639b2301c716af2f4aecec90c3d8bddcffb27fad876234c5bb21887a9de9f09242c158aa20a7386e9385fe81a6961e758d16187ed7a5f859674da5eaee5988f0e90894228098b90dbb9d39b231c3b6b35b1dd116474299706cc537f43900f8c07bf29b61acc847c8713ca6058007948a47c03ef9cf9897a1c2590515184946be34816e85eddccfab97f4af6fcf0927548618b99d2a467271d56408da8ecc2c8be0097f71902eedccc596901d016e104d1e9618f45757bf770626c3767cd6e47262516f1166c7221fc4b36e7f1c665d2d6c865242198ea8c62aecb3a02d7fcc652ffb5dd5456e87b715efd9c4cbd295e9a0eaaffe78b5fbd6091034a4cb53661fd04724e784c3368f68218f8cdbf33d8e3d9e98803e0641d1e0be4b47e78e75b064231d69836d1973254baedabea8ad1a9acd2c087b9b89e8e0944456f5e0387e1b844fc82155d62ee656cce30b415f3a63bc26aa02f7e79fad0705a5cdc80526bc1816cd44f2fe28fbab8adefbdc17be18dcbe22ea95c43fdfa07ee72c7cc69a20479e9e55a8c896e4909ed8ee5d8bc08c328c6f0d9580748408b90231601c40b47ad85ec132e525db5d727fe4e65d7467109b558c65180c9cdf435fe01129bdfbc2b35d79214c7b487fcae705eda4b3a51734a64991b80c9c6a1955a2fe3fbf0ac2be237365072e4a4818a31ad8498b15920d2a6b8f76eaec0b3c00c38c02eb0beb87bd26ed54f5359564dc1133f026db17e197dea89f76698e98acf3d3a8c8ba1057c21251af990e3efcc97c6c41b4ef859fe0d0ec4f3fe33ff78ec6e5788eeb431a8a36908fd81159487c1227c00e9c44bd683535437aa0db05b034a6ae4a0202a0e798dcf9d22c4d7cf52d1a854701de507b443b1242d744c4c51934561479b37885c17727cf81b403814b82876693e4fd60f9bb4de13611de36b6e1da985e7a19b53e9fdf0de80eda748e2153159929e60991ac29235de3baaa2ebd4c92d2501a19208951346a4436e23cd04d3daf431b27107faa2561954f580aa99e708b77a9147d708153c7f7333e3f9dee0544654ae5be7686f54a33fabcb6045fc652348e53edb19ae6f1a864b6a57e88091c839c37a50c2d5095c5f28301e5acd786e0540f0df8b8398fa772b821928a09ceca04c71564a644b2eb1a2ea1dc6b0098477eefff77fa8a7bd53f2f88ed57e54669772721cf3c1087463679ad54f8848d55cc83e83deddf44392a1b56ff181945a1c2e920632280ebb2d59c2175dec67f1506617189a9f9ad606076277f2894dc31047e2c9d84552c547f325d9d55c51c00cdd9473a2b0a2c936fc93eeefd48f50cf59fa616c0a58a6edd05a66c8247259a5d269c4cbccd6cd4756f01a8b772ca5d8533b049a6f4b911fe18a45ac10cf162558fa3658273cbb6a14c7a82a62e6cdf820db16507d36393eddfe3df7be5e712d8d817708150ddfde9a4d8fe7cb23d834321d533f21fa4d93516522e4aa5072aaebcb548a5b0e71027d4ec09041a76678ef18b0b5ca78c750c98c679637562ce36bbbd7aa439653df8e3ad4c7781a21d3df005d722bda18d395878d09e2c9dfa46ec750cce3b84c91e5fb40cebe321414fadbb279b9f5a9801e3838386f873fc4fc2a65b14fda8d6384dc09c5dffa65d6a53e85a1ce1a5e69bdd671f40d1304367e31d0ae782e81306f5345d5652ba2500f50cce3cd461feff9889f44ae8367e09552bfaad9f8d40a0de944c342136f9949a6823b0fae5c4131eb02f57807c0bb338265bf710977e51920c288e53cdbbe0d78596f9c2787984108a82b7620ab6a740e6c5aa4b3875f2bbe91b46e480fbc3eaad606475d67fd464255c2f757ec483d54869d32b5643faad1d04339127674b0c702df40cb1fa672d76b11fc98a57709eaf46d31d0d42aababf3c8171ef943ba9219f3fdd2e369ab1d55554db731815bf7e7e117f2b97ff7c89022d1cd718dfac57e3665264e225997fe3f3a19437a1a79fac75e4b39754f65863381232eb10e66d5798cce11d6a3513345474d9ba85c4ff5442ad5bfadb58b0be7e32281fbdd3013dd594245056d91669b5ce441cbbb40f6020c90dda5f7236d6471734e951d3787ee82c24d406c06f8425726c38acee45a76de06988eeed346efc5fa7f5dac07983c1c8c7725c39eb900e67f98c20e59991201e42305f0e187e9e13240fc1956e15a5936cad18b3ba5a31f729c7bfce08c0d2b21d48d816f5f0e67a221568780654e67f62d848bcf0b70eca4fa2082c15cac4c8b5d4c15100f62a0b6d4225fcb6b919c46e050a50056101ed4e16d508430aed08797bcd8914e16a3da6c347063330f4d449beef8b56598ab622d6c5bf9c7a63010c65fed32f9b2c77be9d2deaf934489f208f9775a1e79122571e2fb72da1bcb5c5efdabcf3a2037d7fe49ed3c70dd3011261339a8d1e9f7b90d36028878c25622d323246269de8400341e983210dcc0ab6a4142220f547e302f1638340e05202834d1fa63275c2403ac875bbcde66749924c826947ef5b92f646876a70f1947d3b903463a50dc3136921d3665614c297a597634f51568b774a89559235f3a2717a68f83cb2807937a6fc6dcb8c49de1ddeab893174018d31f1adce0b2f33ef759c261e4baff0bba75dd9717d02f9b3f2a200a2fd47ae04406e9bfe9f04669659af8f24e195e8ca4ece1c8cdd8fe875ac4a991bd546e9abac5d274beddd033c4ef53f440f834c50e58c788b3aced58765a20f898152867f5ceb6413e8e7b4652a66ddd70c3bda1b6cffa015789e2ad4376c6e495e2ea9f3ae59437a39d4cd27ee2b1aa873a439bf03e353ed48a2c173f4dbdb816b035e700f7c7c76b857dc347d2487c5f6469d6b88c7ae82a0c1bad9e91814b2f5ddc198a340d381e2ac43a2116336da2ad1f2b2028fd5c7fca75ff5dec1b36d9c2bbb1e4f20a281ca0de9f342af2d1d0996a30eb0f3e8838e4318fc056552048a434225dcb0b9c26d3ef0409d02a951110ce54d20fe4c9e13476fcd8d096d225ddb397335148f22c0028883ac0c2d7c524d994da78f3f1c6cab2623a5a620b59c91d7f84586babf09a3c66510ad69372d96bf9b2cdbbeca8f2b5cff36a8b49a8d659c693fd3c5cb616e961da57fecd255ca74e834e9bfce8fc4bd0a6471f5e9e83addecbfde4a582b34b2290e49a3a577f08366db14b595bc3bced4c0d45eda4058db268d1c62397acbb101f88d2e3edeb1867d538d64e0dd963928ad9a1697d9ed6c1c611761572f8b260b36fb035bb4db956f75d70ee2a7a039e5ac00b7865a8735b393ece8096dd2c7657afc60d4bbe089d4ca49e5ad3d690a148737e9d1039b6ed041cc4456bd80af60c5280de2dc57cb0c8a90d06c9ec46e2114e3cf3203024058f17e182be57ca6aad2d0ec668e7ab30df22a871550c84477109d41571a77a88f97dc5ef3e82d818fba75632ce4a77c2982ebf3a077502ae3fc71d35f081af6a25551b81a38018cd4b54e863703e0c2b49b7cecf4d37b317d1260b3450ff0ce523562095d4ee9070673c71ea2d74a94ab35d737ffbd2ca50094df52317d60c909ae2269fb5adbb647b4fc7ca12ab211b86ccde4ba658bddc85257e10b59b794dcc0bc5f30a74f78fafc421aa5a2039f3ce480f019018224e411a396d530a5b13608ec747d86c3f5c8ee9f0bb7cad1a3431fe93c0d8740aaee8d95cd8a8fbeba352e860eac94375fed954d4488f9d1db763253d724deba89a75471eea1cffb3cf5daee9e9be6b237c24c3ba8d2d35e378072de8e821b25dd71436f296cd636204d529f23379cbb31f00e8ceefa30f64b760cfdda188c7de233783d01e3c3b19fc4a6a5f32bf3e01bcb0c15541c5cbb5436c8f81170c7023046bc7ca5acc990d2bb9d22de3b9333ddaf0fe31de806f3c2cd8e6bef6bf8b6f864f53e1d612b5ac40d1fcc98444ec78175c8b3eb02c7895e55b1c56acbdde060d5f48f415ae17c1dad506d7e56f73757437179dac9a189f6df56cadd5cc18be23011e9879876c65bfd4c629d744520195e44da76a9fda7a15eea127b20ca08c28853bd9c8681eb9aeab81d16d8efa32dbe29b17f704bb98e9cdb8714d39a6892d3a4f1cda58606ed015da4c9d052e4f180a58d7848dd3965b488eb319b2302cad6545d456d2b10430c4b0f589df58d168781320c3eacc435a1af5077d2eaf366fe874d13e65e6be5ed070d6fd43a4b0cd2e4143f83409dfacc599e5b25d699a3d4950209ce845a7ccca76068395e5080728bdf71d58b2aa8becd102f83aa17bb0b2631634bbf86a8bdc85c3816a4d0e8199af133b14876cd49b5b771980ed5bd4be682447b2a7b2b80de6cac74478421a118dee53d5caec4e150f679cdd8fd7536071200653c28a001508df9d0452a181677ec2b1bcca473f242046b03d7ff5b534bf1331c8363c3b27dd29a1fa0028922a194307a144f9c60386d7b890b0d9bd556a5b31baa634cece5de7f400a53cbdd0b07b72c0e49bd9375918b0490a0256e1ba64223074455e6426d8b394be4ad5bdaa7fd931f5082ab19240c43ecf1d99bafe01e22ee865304accb61d2c183638aad89709926c5c4c2bbac3437b481b62b9d345bf8b28ea0777a5b876b9a827f31f4fa2b1b65301c62e0068a91ad921edbb6f609198f24927aef11cf2a4434022498f74e76bcbafe83a7e2b4b592ab2e4ed170375798f422a660f818d79c7575f7b5b31d19b0b171ccfd42a803c61721cc4f5eb467950d2b24fdae60fd1b2019d2a415f446fa074ad68dff17afed67c2735171b0e1c36528c014e31b39ff961f22f4370878f9d4fcb7a8443f9f7decf5d96fcc24c89252971828dee8b91a3dfa4f2de8fcfedfd0ff215f11f710aa3e4a446c8a0ee6eb12db72eff88c607affb5bd172b44de5adab9b80eb91cf51ab79df1dc367987e544b6f3f31e430d71c767a5f5b651f75773038cb9644845fdf9d222e85159599d6d533e4d535af90c08a9a8b0749dfdae4337ce978ed3c8bc6495d55ecf367a8c75ddbb932c243629352423350476d7b393d22c76862f04c6a02d63159aa705dc27a80d1e5233ab7d4a31924b37a35624d2a56c9df08b4c2d1a66752c0e9aa420b4e86b2e03ea2d204282a31795d8727611952b3244cd39fd7e7f03197b6fec6a31fef2ca92588ce29edfbc04d9f76f4786e8e9354cd3f03b4235499ea7e696c9144a219ae36ba5dae4f40e5071239a8f0d2dbd94aa0f006c1cd2e99849d6dc31bb980743f06be82a1e2d8590ffa08149a2a44ef5506cc86a8654b16e8fb77d41e519ee7e46cad5d2579f2495da8be06ee84607530582ac1341a3a53299003e7536e96f4088405be8220bacb28e579488a5518bc4e71e80fcced15911fb4ee63db8264f12eb3e251c13e58621572255924469e732e41cf2f4f774b5653f620dd5559f8316b9aa3fd44373655daad7149e514911303f88eaaf4407a2ea61e636d25e0546dcceec9f79d0f90b90ad22307601059e8d12161723875d50da510e114807b9199a1e5072ce5af72af1ba30db78a7d7cfcec6ea1fb6512b087074fedaa0e82017372db04444887152ade043740a40855d139cb03e507a97b32d24073e887d92f8f495776852815152566215a647e84a95a227fe31b09de0987a2baf23f0a7caab7a84ee25be74d0991736088413635fbdd0d00cc73f9911f4ac4c8e52a52af669753bd99a9f10f467e9862b0a399503d49251bf73c111c66254bbf7dbf72d4a980490665eaf0c1bdfc5330dab1a0a2311b73af8bacbedfe53a79f74a4b2bd2cf3aa6d6e4412a0994d734d5cd5556f84cb6270405503d706ee49970e91fc49edc58d4f00da690a663dcf9c5b9bd3168aa328a9bd576abf661c41326a23c5270d3161c74175690bd51ca61a24e6fa778215c4f178d3e758eab7c875b18e0d0e18c17efc9cf2906766920b77b7de1ba988d54927f5a66098b4faef5a4e8fb69a0cd849283f79f769a1cdd794e276b7edf4966680157c573c64b2534b758f7acc54ab3317e7e0415c01676608f03bf9245d211804542c0f4148e209ab7fe262874ed866ab0393f913f2a0f39e2add945425d5260c4805986ca4c7d64d1621561464d1605a22017a62dc1bfdd52f103c27a00188cb7ca705c405720ffb2bf0549fb4a585aead0a94a2424fdb5f12bd0c6bbfaebbc197794812a76122f0c7bc99b74ce508c4fbebd731ed5961a24c9caa9354bc2a49cfe9ca68e5dd9a5ea03617d2eea35cceac902ff026fbb03a83b03234e178840db1f7ff97c4f597ea8493c0c76bdcb591596314c309c798751746da89f7111d8c38c085b7835c1c2b99e59d528bb61be791f43415dbe7c2d58962d6f02a80589b35065ca34194502e5f0eee938471e53f2b13d05178feb292accd1b6b90d03fe102f1f37ab118cdf591187f8f06f58018df2f646ad3f31116a61ea320cfed78598c7b8b20df7b46f3cf02f5aed04ada89392693547fcd0e7fc3761fd9c04afbd4a54d5cba03a781911545ee3bdb82c2bcd7c443884cd7ab201bd48185a2100674b1f9a2366ab14aad079bd4e70fc4426ff6ae1b84f5b3a700ff2536b5d4b20e3396d868c163ff44160eddaf47928bde7250716549db2652593f8dc2202c0a995a06fe474e4c9bcf113ef27f51985c662b4de457dbd1a8041a3d72541fd2592c0a16ff15169ffae4d714257ae3d26222157f357dc5fc192766cc5ad231b5dfe2b621857f121ba1d1140265053c66c9ca3c7232a992bb22a113e7a93c7989d263a704e72383f753d96ac23e788172c8f9c2caae8755a615592c2fb3823b59ef71779f42ad6b28cf66ec89956a3a2cab815eb31f4d229a64e96f41cc7463a5f89a96aed0b611b32e2ea3fe66e4d2845057d89bc67c92d5fa05d0d74527fd15c9fec9f06c1081127ebe0d0324d21a63e88f8e47050943250e23f4bb76edbebadb96a59d8c130aac1f5b995068eec66bef46f32bb54b562039cfb789420f7adb6be1182c1d4bbe53fe992ce21ac0ee59ab1f0a1f9c75f074f0daa741c67eab588e55e16805a5f5e0ba2f9f2e41638fe7a97bef55581db944a5d786ab141ff19be68f13dd42c1cad247873e330f920846046e4eb35d87609126b1cb882ca08c18d9b99684ddb79c04a53e4a4efeca9d2669e9ea65de1914b913242297928fe45b5d47a6d42bdc8f72ad6678e9f47ff8522fa518d7b8300c03729ce862390002aed1c952122199090e297071f4c8f1a3d5f2bb41e9c42e013cb797b0e9a01714427240fef89f7f35a29404502fa7ba8fb27e1464861a3baf62dbfdc00c58e1edf65501e1b00b0583c851a5274529118f2f053c917e2b925864430594d3490582a712108815913d26ed30d07ab6247ddeace8766fb6cab340e9961d5a7e80606e0b6b79514ce21295638794c1937c0e950d9773b7a57a003231d30d7568480b6f27a815f1aa5e150a8b43f8eb07802536b03939b6259d89f9ff2ceafbbadc0ae64d80e5efede00a0603b148d6b29f8324f73ba2cf8f5ef1e89993c637ef07c85bafad1726bfadcbcbefde76d8d383aa2861eaf0f72b763853d0e61227216267f77a96a7478c3cd3e04edaeb3944cd86ee31acd237ef1541141e325efe31174b098fa86f55add427915b2ed5b6410b0385aa99742e8aa39f07d47ed6a4ba5e5982b94a7c27db38e16d035dc60009b066e3d170228cc7140b8d550f3b31ce0f1e78888566e9f5daa3c66a41b03b400e545fcd2a47983a09600d65151f758cfa80a7aac57f9b1b52db34818e9b8031a9cf35c9b38cab3dfbb26e80354b7484f195ebdf59a2910e0d5c12a6db475bd561fa06718746b340225f9f4d69c4e2e6acfec7798e8cf1eb7a59005df1cc4dad4a0f55f83349b167e0581017137fab88f171e16b88c63832244b5f1248a04b6e2cc50bb305cf3b79d54b3658540d6eb5a53e83ec4135b5176e70d8efeaec3d7b056bf33d5d10fb1cf1350a5af9a7fcd1bd0c1ca54aa70d310220d6c03000802f0ef63f3772c42e6a1e428bdf8bc9dece2ab1bd722ddab56714f507e7fca965f90bbf018784d525c6629e37e25e33cd6a34a59db69db17b40013adf5e7ad3af44fddbb337be31c7128aea965ea59c3845e9949636ce9bfe71fea414d4823b193568dab0de47c80d2dbaa5b030e67bc1c08e83a58d936831cbd79823c6233cce30d61db894517085bb87b291005f53c0b53a386d2c342bdc69f2a0cabcf3b8ef3a464d707e12aed14c66a2cc3e28a9bef40000b5e907191b4110cd8c8c29da111ea009dfe4000825c68dfaf5302c5cfc985e56e52249b9ddef8de630aba704bc66729ef3ddc4e4cc21af0d260e4357ea2acdaf8d6cb92466e7143642946d93ed2d857dfa84a7b8a27d12577b2b06bcb092a775dfd2fb85cde1fbb5913d213394b30b1d29c3809f9b79f87c96382c7fa8daca3d30aac6857fa8cf1aaf9ba26417c97e3f19a8655e3ce658411b8c8018e1c19c6b7bef4ed0ba2abe107436db97ce0b6ac34452992e1dc358b13580c7589e1e62b3de388f6b13e4dd697ccd3b8484efb5d88d6782a16d8d11d510df21b0d5100f6c1a364c28f1928bbea40c9ae0fc9838e0b51da7636dde83fa5c5fc12fb104fb3617c1f8110f3f582e915060606a889749e7d2f1a2f459cf77d130005a118522485e7edb63fe8f4185297b41e8f613c47a2d36c062e9ec096aa5982d6406dee0849d0d1834a0732e0617d8e2403db29c2bf8ff7e16cd5b5087179ea1e5598f4bc227ca7db7ae14ea804b112e2acf147da79c3ad4712f21ea93e8c6e90f028f99a7711b3ebb3421172778333d96b212c715d11a9a7b359c9a6bdde32074b25b401c9655ecb31061d5c895c212ffdd62ae4133682c97198f79d93fedc3094adfb0b4d429698b769c13bf5dde8f3ebe26d158c375ca65aaedeca95aef95a36221de430da79b296ed2c7cecf765a0cb54467bf65aa0f18c7fb9d7b0107653fc3c9f79247ca198e54bf87bdae90a549979212686099c405e8bb83d5086ec2a5ed7202442c9f223358b33b25019a0d8f2cd09914e1aa8a2895ad5cf1c997ff9e92cc370f8bf08b5cfcb8e55194cefa04b071188478542464ecdb317ba05d029b198e58ded58885e7990bb79976ac3b6b563a6dda98e15b5d1f3cbd3f6f3bc2091c395ac4a102542adaddedac7978c958c0a6f17b1bcccafef45bcd641b9c80caeaab1a73282965753e7035d0b6d2e8288827c42fbda403b1436000500c360e080684039cc9e85fd19a7782d1065b18bfbb2b2f9a9c8be0b97c5370d1b177af90a650c79b86cf11a895d3a5cc89657f4759fbf607bf38f82c1ec42a81fa0372383495a2ec861d5c202b950f8223bfce5dd66198128b947b5541b38d7fdc3e051dd19bca1d916582172b557c17fa81c5909c28c2dc4fe0fd870dd3e3f1d1e967b2cd17f47997bd7cccb9da8697faf9cb0c87619385ba6ee9d84115daa555d0fc5730981b1a297f2f84cc11586a51995654678168f85feca24aad89a83f6a84d8d535caf9dcfe97aaa7b151ef4ef3fc0251824a416e38389da4b88c0838152b5a8ac98bcd9e706ad21f86f3bc111701a1b40f8709cd20ccdf4ada4552b8de58614010ce6518fd3d14fcc038895ab7e59995bb934e9058b5c11b23765b1454feb29ee14795ffc63f08c4a681e1701483676e28ba2b0e031ddb8fb396f13a87645fe145f8795e1313232ed3d385c3318e0d2c6a5b77baa9606f16404709f78c393b16fc78429accf1d857b8b0905453edc6c388ea7a81b8bad1ee930cfd44fdacbd65f7205b4d025dd405173c53e9871c59dc01b7bf72fe7a868d0b5f7550769cd509dff62cec645d22e589b21f021ca2bf734487babb31cf22f21809d4e819d087748d73d826ca537640f92f7c2b2493210e36036061671b2d31c1d53c5b0b4768d09014961dae59e71e27c6772ff82743e7b0eeeb3e9ee27fdb1f8f95aaf5934075aabea6c8ae31c94b27e31b0bb160e5d3ff33658f353ff1dadf4c170f8449752353f0fd670cc88259df073451b0b9c5fc63bea8ae71eb40d2c4124b80e976fcd835c40f6a2e43844b8ccee5d016f02f61902405cef9d98e0c23bf8bcd5934f7daaec36cfc1ea4be353d41d3eb4cd6531b2f23b10f5b5edc8e664967728e3f401f518915640af73eca5780c1047d38d1b45ee7a6db85e559ec8a5079e544a881996533b04ec513cf7f0fb9fdd417d12b762c29ae474c3e8314a0f99899bd8ca30f64a6098945eebdb6f36bfa434e4d19801e169f1be8714c704f1e744a3ee6a5017e9f8cea237731036203df919961dba9ad0b2852762ce14950cbf1768f6537e1149798d01e0ca48e0fba034333ee1794c621a0f575b5b8a8f10ef61c7f5f9b4d3d73e23798786f5482d1933f9b33e11b4885b0df4a780082931761e35ec9b048440a495d178687d79618d0071417e05d89a2de31bc1c9f5b2ca263e082452c622775c7d2c51cc6d1fcc1abb22677d2c5d21f4154782f5246c6b88213c23f57a61a326f20f1f36a47b78abda91b90cf3adea7e9e68e5aa861fec0e47bfe19e6b50217945c8cd2b05b9f30bfba837004555f84cd59f22ddaf286dac16c9568b7ccfb1394a1ad5f9a3dde381524b17ddaad790837cefc77c375a38d1163ed3e8ea5d3c5e4ea0e835886750619b73b08bac745cb097ce82d7ff5afc9cf28ee8b19198cd850ae8c55ec6cb8401f087df0dabe50b2631457e46768983373838786da0edd398f79aaa1e644ce8974e9175bd5f019cc6482ccd77ec160c46e04282abcd6b21b9ef70ff466d83285ca1b6b75e40c96fa27fa30857be79bb7d8d347c36d4aa8c68b04033cbc4f352ecf33204a0d8bb06d367d4fd205c8f4c99076db8bd225923c97e1f6fb4883797ee831a2a59b5cc2edffda59c6dc4ba8c77fa2e45718def7aad22efa098dc677644e2e9f0aa7c41ef621bb62d2eb06096bca2ce15147df91adb10a44e07675fa09fdc88bb691ab889f876ee1a9901dfc8a11ff58c75c80cf602d9bae7d5ecfa26a39c21db6b36cb95aac1b35ab93fe7b9919ca5105432e5444684f38d64bf5633aa23dd009a411dd7a8b591bd8943f147273dddb44384676edfb5b83d36a33031c07b763dad12a15900674395eef1f6978002586a776d8bf895a4f54e5ce179f27809d59bd5ff9f691cc6397af55f4ae066ccee8432f147031ee1e1722e83a26c17fde7a09736a09da0bfb212ba8032e2cf48119422a6ef909e0b85af74b08dcbed867503b697849ee78e72655c82bc7bb1b6b36089eab8238b1f94d6ab348d9dff2ccab69a5e2a81b74f1dc9f6afb69aa1f87e1760fdb66a40fe049e850a88892a7c81ecae7d08ae0574fd9c328cc9abd49d0bf354dedb28990fc46a7dff6280b814a7f4561e347273afb9ba856cef5897ae6f90fd810abdb3a6663960e694eaa551b6b1cf564ad50aab802dd5be6a6c184c6bc604a2a45770bf062de28b561b379eabf9b5ad17d0e36dfd19f93b1f0d233fbb98f90c4ac25ddf628f21d7f1d5301c220e110a5ea0dbf0d3078f506a7d61774a59d049cbf6e5ee2422f4b2a11f6cc7574af56791d72eba12d5e08ceb6ce70d7bac0be77903bff5e5b0ea9d121ef599e675398c2b31e3b2e3673e2149b34d3b53411ad5ce548006ac7e33dd9046e9115e79705243dd28b30a04a37e4e6d75f7fd6454446ba690e84fc2ff845c7c50fb9a9ca412fbf1016fa24c2b66ebe0ca97b6280db78bd9913c2138052cb48039e6aa2d05f9331de2c115c6a3edf5b2a9f4e242a0532d1df27ff4bde6248bbd3d7e48e4a9c3201494a544b7f9f378d591ec668e076f38b00cc2587d2374029bb37ff6cc987528fc432cdd270fb6734b3f7c4ff7052e5b800d861cbf2a4b3ec9a036aff12931eb05339723cfbf804c5ae8f21bfe6e1d4d577c70fc203e1a43588d3bf4f762f012c83ee0ab3cf53c9cce06b3700a6182596b24d693ba9977786f2ac072630f5eb4034c40cc8cc885d64094abc1f996b9e60a55b42a7a65052381aec6794df81831d37708befc6a0b6c0729a22fe6cd26bceae01a59daf4ea0f7d675d76c0a014867b5174800e15bbba69f777482dd03bb2f2ad7bd57c847d540aeeb0fc4b1903fb66c8d81b8743fc5ef49751b14123f6606d2d1553236999eea39dce079f6f35b18b92c67368b480109b1e07a210a34c689f2b6093200d9bf9ade2949a8cd45d18d6f1bf77ee544aa75384c9b9a19dd4a236c908a7bffe6f24dd2216936c59dd78a88fc9ff99414954956806775755bc2f385cf75d97fdf45d272fd744ad8d8dd779a5d35f323568daed12b242ad028454b9007bf3970919b4decc74cce53f807312469a51c4e3f8f6351eddc3606309731576a382e235a25b62fe243f1cac8ef88a7a7650849a401383a907a9bda9e6de16470826d9f88e758399fefa71bc302c293d9bbaf9c6fb194dd96175ec382714814578e5180aa9b52a7b28927835984170034dfed8b0c76f0f76bf108c682078b735eea5866648e19a06b906cc2223033368a6d030d86145a7fd505266448dd7ef6f041a3f7b768f408f6d3b65295b3b60c2ed714525c2df3c18205c99769fd2ef91ed77a70d92e7f0c1c0d06aa44bbb7119133a9e152bf71d4cfc507e0e5b25812183ec6c3f62029f1416fa58fd21b3d85f0672e3fb90f9e5018c5785d88d5ef358c4e964b9294b63f96649d8006b3c52396a87223f096d76333a6b9fec0309aa71e129b09534fbd39b0c83e24bdf9bfc077242b452de68d2df3c0edbcc69633bd5472ab776c662aa016839bd0a1e311b13f1a70b1bf59c76dc10637e814da4971aa8b41e8ff27bec968580a1fe495920508ad3db456d19f83b383418495579fc5b6d6fb76191e8a092426a8905bb29095528ef2500d96c1bbafb5b8b40af4abf589cb1b892acd78653f82d342cb704bd907fad44a3c0cefee7dcccd39896f1879af3e07de236ac29c17e5aeb33784779486908bbd54cd7f70dda6b5fc15ba44d67d7aca2f9166797e6519a09680d6be500e52a345454cdb4cfa092aacb884c2449e029063585bff8f38abd5b8b0783ca80e5e0bb92b3500d8db21e96895a2da1ff6022d4afe8c8d033074bcf5b5c201602520986f554f008ca6d23282dfed04295ca697f092feaefe6b30873b73819352d543831bd0c68037cbc34b42b74c719ac3f46880a7cac230f13cae9f5e3e692a401fe7310d693a7c7d57fdca44228209c7635db0ef437cb9783d6c831d2071ec6c4444e3598e7c9d0bf21502a2f04e19bdf7d9c47031645fe66c40c8d09f8b52e58fffa32d20a89ef10de58d653021fdc0ae632060545616dfc86e1403530bf6b35adf44916ab2b1c19ac0e1e06af7ca58f22364134802d6391e7c276b563b4a0d6d929b202da5f53b0e815a6374059ea3f76920a4b66ac04439b53ef479d6662dee26bb68ae1e852f60056b143c31893949271529cf66981822a989be2a8fa234d590bca46acfd4fee2acd83607955927317202a7e42388745aabae093c88fd0c4e29171b55fe61e18bdc07e7150029b05c04091b1fa037dc87525f3b1cdb5ba21c2b899d8903b13cc77e58a69f74c0bedebd9a40322f33f2d1f8fc73b71590f7473890edb9cd9bae667f9245cea9ca30a91efbf41ffaa148823e4d6345b535e23dd47107995ef0a28f506200de89d665b0cc4f5a267c4c2220863e4f84b25b772fe6d395044a5f8ed267e5dbd1b229bc2f13411c1c04f3dd5778bc7e6ff2fe729d3be50fb33cba28bcbc469a3bf762e5f0602a78a736f4057b7e947a53d45424eb031644bb728240434d6bd56edfec3c0bc6daeaee89433e4b476ad63ea7e5a855526051603cc7016f9aae121725408a4b7ae5a59cc9af8a0f47bc7332307780dca020512b8154ca7229afe19036f6d85757822e509679a7a836f8702029c7c37f4a7e33823931e545032b5896b6ab50ae5bfec7e3e4396e768d9f36bdbc1588b70f649099f46dc76e35ec7cc7fbb236d128bc8b3d7a1881650c7c54620c80392f93086fd55143a85251c573579096834d84c450be7352b66937e420c7ac2af69edf06466b88808edbea9d7cafb46bb6ccd9e6c4c2bf10fefed40f4c1f253c3414df06b65de1492db01b8f1729d9f4cf0db6695915a38ebc076e7cd94375a73c1ae2f5c0b83b272a8a0110e01825949f744c4be5a13590d284d56131e78bc644fa1ecf7f4b8662a6703c32f143f40dccd9f1111f36e128ce309c363c79ccc430ba2af498fa49b625be72eee481541b4269a12c509ce7d1fdfc9a44ba4c91d948988215f92c1d4c2ce2cd80c0bd87ccf2a778e3e3e7dad05fcc6a4d49c3a7526b8107ab90c22f0b2ec078d55fc085bb0b2d39d8b35d22eea78dea3ecac1cd6e85667cfc177bc236a9662505322f770e1336ca1634fc7b7bd502c0f7187339085d650aba1bb1ab5c869a8ae158f23d4a9100b6b5e04974aa131ad01b486b140ff56fbd24d4d3d393175cdf917dc5e9f432bfa9068fbaf132deb8c7f8d291f9d3167d04c78818b90a511c623fec0e42088c13f85684aeaa49a43f947a77d57a22ca5335bd8272ede514d2d3d1c8384234e730174074c8aae663d9e92faa909b2bc6b2068ecffe966eac80f8bb6eb098f1ca2f2088c819d05bf7dfbe5ed6b1554025ec159356b7ed90c8091ad84d6027641ea55392d46e513b0f3bcf28dc2e145ce50c62f1026fc0aaa3568654d6f0850d1843905fd6d6348e12a519c07e073a7fff4ed02104cff0a91efd0eb0455d7d4f6025de1ee75dd45a5f2e61abb41e9ad91fe4a709674bf37af38685c666718dbe116de84d3dd1627ba52cad1a0c7ffdc4481e15a389cb52c7566a47ed9695694481fc7b69625061c45501c84b9532a08fea9aa8352b112c04a394ae1fa2e67612f8750a2e3e60287b5fc7c2fe04b3b4163a5cd51e1bbfb2d0e6209e3b48f75064c91b2a68192f641cb6056efa001bdd30d0ab752ac83ea9a47075fa4d7dc144126ed31655faba937259f9e3a0c8adb4e8db38437b32aaebceb18c2cefb63dd7f38f582c93fc9589fcd9e6fc93abfe458771235f03024ee6c3129fa1afd8ce3d122fa06da28616efa39328d86900fe926ec08dce8cc34d1bbc92bc4b949131e2aa4a8701f57edbbfc3185c5a718d750ec439dbf7518e72a0a24c261da33ce6e501b82bb18fe2aec97e8726a986950a22ebf1fc272694329f533b61937f961c980411b96b3a5ffb3266c384b1f7faafabcfc6090e2e5e8ed52ad70c2717da0002bce406c240d33bf06fcd81a1782a8f7a0015e84028b87614e26681dd5d16ea5d8f93206cc2d4054f3db47a6c28c0d2d39905feb6458c0cc1bf1d1bb81acf51985681b2c293a2926fb1d6cc48a5186aeeffbeb44a923132561561e042c43aadd53c876343ae20f4c3d772e8313140d17a69021a3eedee93e10dcfe2086daf38ec72cf541131c275931abb4667e6f124153a0013b691b48383cce0531cc01086e7b1845d72f182037bc9ebafebfb984ed52c6d62392f4ec2f3da41c7920d5127848dff1a509b52d3eaef1a93071a86e0c24e223b34928f96f9e736860367571eb6965b99ba6193f7a47bbceec3beca4e59c9d13777dc3d61f3d5ad280dccdcd3244e9e2b613f8ef341b3146e70b26c8d0b7d9a57b64db7325319d1e1d0661237a9e6d9051cc7fee4abfc12ed218ce3c0bb6b840e099c9bc51e67380f72d82250d2d7f54e64841858a4f34e892d46129a44f32f906cdcf6a76eb310a39c95e0ff634007abd8eba7653ed021c4afe22e2bf1d7413a40fbb04af27fd5f2fc5233dfd21863b2bbdb304d601d16ff06204a7f031f566bc8c44325697a754dc1811631cb35d46471ac2c5748bf27c9553d69022fb98322ad7df9192b6bfc7c22dc3aa2aa1a9f6b06d1c96d044a8e0804cf63d41dfdba7a7b0b36cda0731c01d7019d21049c3de8a607cf84f7a70b0a3da3f774eaf1887421ad8cb0c69c30619e24a3751e52fca0261a849b5b10f9e370b6c4d3a76909887543a418afb5926db8c4935174dbe3977a2ec2ddb94d8c68cf3723b3d7eb1128ae292cd300825ea9697d779734ef977b3da78d2b72540f18d39d0579f56fdfb6e89d63587438fc5e7be1b722c03f16ed2c94db183a290421b5ca58fdece7d06ba3b9f5e157510c13bb670df0302d7f48abb2644997176f81f64094a19d9af85045fa2b670ca58e227b678eb7ce47527a3efea7e66638c1c9d7676c015d4e8ece9359b9bc88da5e5a0f25f11598a2c86d11d17ed057481dd7e1dfd8d873438c313cf69fdcd425603f50ee5232c1f536cc7194e4126ccef0175fe7e04f9efe003a4e4cf3a88e56f28f1c4716663091a1185101d41d7e921b93dfcedfb88ee3df04bffd785268368a40d325aaccff1eecadc6f05b36b8631ff7b57d33f2679f5a94e52a6aeaa83787d6dc3f4cc9fd354fc98bbc4d9a1a2f126c7806870841630dd1fe5ad78ca773a08d1e6618812dbcfd957e2f27daf7654cc0834b2b6baaee871da9f470ff52f9822587f1f6ff4519242221061aff77b40dcd75b32f00226afd7c6b46b696ac6b7b8e893f3c3f3039ab401aff522d1608929db2ed2caa9d1125dd2c1fcdb14af044ed983e0b8d8c5e699eb37be29423e650f8dfc6f35d05af954ab7f68323d56d5797ad0acde32dc5aabc5ab0e8ad42126167690d92bab6e425b63da6406d8c1a4fbac6994f9998143c162265e7eeeb843ac2ff855f3200481b79d3b0ddc6bf5a475a63785d6d89a2606f41465b66e8b1508814f00438a94b32f5ef1bb88c55ef42340b96e0676d855e3490c4fee2db1e3f115e1aaf8e68fac884efd76fd34774fbdac521e226e8768ad50e8658a0b64982b45a07e0d06b81b66e92b81c8f232fb2159f76f9345186fd425d6677bf40dff68fc521907dd28a99b87cfdf9f18a2ddc212b18fcc0319b5e054407fe2d974199812481915f3168a781b76aca64b2b3c3f9fdbe0098c8c769f42bf1dfffa95e3f3e3d3e67ef120d46072df176c1e4fa782b2e750793886b1f37a24372aab9d6462c9cd7026471d9fa932fe7a946ff3fac1cdcc2d8c19825c50cdaf5b101e07271ce0fa619833e347860f1d06811f3214bd1a8eaed7c529722d92aa7e1528aeb69182b6104e6dff5d3dd0bb9eec74750fb6b36367430c5f6a3118bffe079f5feaafbc4b35a54aba230f7f91849879489cca8b052bd2233714cf41da0df58b5d7c2d878e0bc09707563989c51791308eabb8344bdaeb0945da264a0a34dac33c32c4626767d38ed39612eb8b31cc0e489e215a13f027b123fffe5fcae2bcf29383bcb6f141ddf59f77be57418dd85fe6b69757e7c69c78b97ed6db9911ca6272dccc23c40ca12da6abb20dd092c3f40bc9c0d148ce6e8138a7eb48876da9112bfc196374857350f52da04627b0a15275eb8759fa8ebda6f4dc1bbb8a3f1fba02779ea503958298785b2f85912dfba45cb4746e0ea135b9a6ec682c1cbe2cadd03ba1739e35a7b48e321ac79fe9c36bf4133ce9e1687b543e3d83bbded0ecda8ead796ebec6aa34909b28d5e62bd98cf42d4d120775a284eecd6e8eac50ef4365300881ff953f6f7df8c96094ccd354361abafb4cb803a4fc8d4f329ce570c8fcbee98d6da539ab4f487fb5d3d92a9fc5f915f2c441ba31236733582ce50770c7f81efd2d92ed753a450a1a344072a70a07dc25c8d3d6616c793dd9efd3750df0ce8961a07d8659e15032907a5b47629e13ba29ded769c0c0255de4bb17c4e8bae662a7aa11ff8d003b609180f24ff444cab914d71b2f25d5580ccfc9e6eaa68aee71d008a190d1c59c5724c6973b1f3d560974d274050a2d9d3a347ac6443212ed51181c82d4b2499e5a17a284840fbeac62d816d19392ae4d180654fbd48353df51412200505821b4aef5e38a595376f14ad544db2727769002db57f5ab1793f42948fb3c3424216681118746596130cb5a431e8e929c12fc24d39367bdf94a3f9fd17ba43a566782001adae5c5011cffc020bf4eb5871d13321177e14e981e95aca8d4342bd61945a76854b612b4818412bd6471574a78fb6f719150c1f11f9d0b1190db0fc9d9a592ceb66c0bbe0d8b0430b782d75b5f412042e9cf69766c87f55a565983cf5e356fc908ede629721861528838734a2465dafe7573bb579527084612250ee3b0c2b64090a07013f016bd32e8edb9fa9c90559fa80bfd396ddd49440a3de72b3dc0f3e4cb3ab993db32bfb22b1ebc6b7d2be4ec3247b9bdb911ffe79e7d2bf9606c545375f97f10c1e10518cd345e6f0a922d3be9599abbc5fe57d06b2f66c91ada18609d6d4dcb8a176a4fa98b4902a3d433d0e6c07b38236c79628be918243c25cf5e75b4c2864368aa67e5d31d870a28d96f915905fc78adb25e1032fe4c22c964759c959c9c4da2d9d2c4269df806aab9f6af8eceffb2c5220780c160017c76a92ca33dd43a35277259e49278d4ec34bd06e1f689fe36f4c48f956ea7fbd279d580b2688055f35538a708435337f6afeb8b77ef493149f23cdb3cc2213263c1d78d06869cb684c2c6dc34d87daef6f8a291cc2dd717cc59758b8454b1036b3f8d5315bf904c541b09fbe97be8e2bc86aa117ae713adac3a0ff601d4296c637febe2bdb288e8e9e0b1708485e73f8ae5adb451045a541b7dbeac6d6e30a227b9db21dbe3408731937d250a43ba5cad91bb8ea3ff6b599afce4f49d1d6508b0fceb44bd93f8f33353066c6ce00eb4d7ae0676b2e8fea1eb67c810d0d69d2b61207535f9af588262f37a49f52d2ffe0100375d107e900df23047478ffb18b4ca8913fe32fb7ceb43d6c7794c069d3150ff63d4d63b3fb4048410cb5776a926844c0c5c8411584dc1e66a8635b3773334a957fae0301c2785faff934932c361cc6d460e1399880aef69bae4dd45c70b43d43ccec277c6e14d901a628c20db8ec619f6e691c1952d17dbc189617937ec71d7c2fa16ba42572ee2ffb07dcc4c4515c204e79f02c83fe7f4c5e09294db8cfb9c8c88b37b8144789ec5d0e44ce503794b63993b864ff83aa261e7110aa6ce22e3bdc0cc22b0d1a7ac43fbb1d40327fdda4d31afb6325c0aab6e621d6079c4a6adfb1aa9fcf0ac6fe5c19519140d87e2bf8aad7da0f55ad9c09a66d8f4950087cc9a08fe308d5fc988c72572050cc7c8b18f676bf588e53c90dc92f7b22ce4cb9abcd09d0bcd5bf3448db190ada3d36ef8e5f068e60034eb59be2432ef834feae1e780b17d232e69e9e5d26c0bcb45dc7c9087d71ff56527f226c0bd02d8339e4042dabaa69319d4b3cfed06abc2b156eead53233e99ea38e11d3eb66ea1cca6cb4d7a21d31ece46c3156af7d11407761e5ac6123f5269b91598fce34ace3b54bd076cf9370700e59f42d1e5c85d70f4e7f91ab914a6128cc9e709f233ba5b0a5fb2cb442b6674441da46bc0dcf9a5ee9f06e93d573654bb6f6a8d141cc28a7c3d080f781418e0038802ded0222e6599c3bef02e799de9aea4a5dd84e686936e5c5e2e36b8f589287de0457e9205ee8fd78f7c3866a4fbe64bbacae57e79c32e3e9fae50dab549f5800b76590a62b681daf3f08f76a20f60f9a314f63137f21a2a2d30f2923069ca899ddc7dd16fd2a9df303e343b90393a5d9f73d2fc4f8bd54d7b19882c7355790f501f0d12950f19ce7fbce1b7ed77adb09c6fcfb05a3748e304e59c48ff06fdaf688979c62337874d69c24389156a5e23a5f97699dd6eb25582e52ed4dbbd7e924bd37c1a4a2ea3d012aa5551295a235621519647af077e7621023520ed357f0feed8f4b99de6830e13df6bcf87c12b71a9d1520ec33a217ceb5932d47ac0b750f892214d6a287ca6a461e5bdb3c2b20da941f27a83bacc5bade0dc13945e22a7a66b714f9eacfcc9be50b6a73e137bff59a5174f63a07ee50f11e05274a2017fe3fdacc290b3d04de460ba99b201386101fc7a09468da6c749cf8e9397cdc07a66e5ab6b23cc1e408415325ceb2b168cc54232022cd80c035c0f3274946835aa198c9c9a463c1f30b8c7c926276960bd9ce0a8d2757069ca80906a0d2ec5312ffedff12b7be95028c6800330ffe5cc2b952a4050b87b0490afb524cd250e13e45f09755d4660939fdd6c2506e1a31dedc662098833d74dd618c98c056cf94b21e8671c10800deef03e383458a64574cdef52ebf5d377d37042cbd3af561270999492eb7c1c1485b26976e13b2cda2840f2383eea289a9d6a5a94d437fc62bfeac94b79c9108710519e48d8d18bffdc79e15582f76010c7be481f6dd9b1e82130bcdb7c1e9f7f518302651100062e5aef710eccc37a36b987213084a262ae58766d51c547c4e657bbffa0eca743fec0737aafe10c2a4c2984e82fc5274f95f9db8579a643874c4b773c67c93d7843706cc4b5310d126bfeeaf70ea30e6b6d02f36d128fb11f50db9eda43758bbe001c0a0813687e7a144f8934011f961f16c9bf1e5803b0810aa542b79400fd71916fd63b9f2c54273e8b01444539e9ca339f36287a3991bbefea4867d7b430e385955ce3b5aadaf367734f31db681520e948750e6531e2699dd3356012f2cd2553e9ffc2443bb52a26e110097e492d15dadbcd1fd98bbc7560ff577f989555df650ae390b0427b569806b4b58ac0077fd063166c23cb1d81fd01051a819d98b0bac61d1d4fc0da94513ee464d7f79026ef8335ba54f0114e9537e0ce9522652ac8502c7f60cb0d69ec48e43ecf3fbe06d2d8cf929a3f4eb153a6e22990e5b14db9ef288f719bc0481df1ff5464437d144278e35bf50afba1a20857232092c60a1d3aafb998cac6d6de7b2e58fce7b830eb882dbed32d5c0870fe67ae7615dcb3490097686d133b45a14cb02b5943b17f2885d7230663ea4e20a0d767a1dcbf8ce58f188a0dbb848b1d05faecabc1a984e93c34e77d1bb60f885796997a20106613f37ac799fe3515b39affd451190dc06a861907099ebdcdde7286fb03f66e35071e12a7a94396a0fa3e00f7080156841eb920329a91d95a90fe1c33aa3ef58fda9b5e86a39cac4d51377a60f9be832235357218032480e0dcc4a64b2616eb9dbba17db038feb8a67c4936901195b79462d9aa736250c035964dc42f9736586a00a384f049b068570a608825a54b3f4f097c88314b9c97c230e94607eb472860a12925723e67360ebda3a73bcc99c1f5706b809c0ebc44abb7882521865471096dfbafad7fd6724c937d55eb49c28688cc0dcb065f95989d04125fea5a9308c94947ffd91f0efa7d4c94a1c5b115e711a63d0d13ce6412b3e8091965708306ee2e653627dd7fd1a4b4c29ceee145bc69b5c281e4bfae6b6ac3b6e24f9f0a32abc9e10f8534885f4f2b53bdfc9b204a120719ccc853fc9a9daf1be22b72f80e7001b029211e3a7d792aa7c91ee9e47a696387db39405f333b3117efa9c7b16ec87cd46c398c7f1418a05d98859ade8b9e69d7acb085e7d3d008007677cea6e110cbb7d377719a614f654c2fb705ae54bfe60bad4cca324e87018530d047a30b596fec40202841b4b3b5c9173314364c183953e18f4edecfee123ffcf8a8a19f141440883f3b428700a92b8462ca935db87229c7fd09cd60552e42aaa7c5f0819a04e9fac8ddaa0a4eea0c63607f4e33b2044017d66d4a2dbae0e211b65a093c114723cdc042be04843e638dcef2d546f790a8c7deafba71fb74bd26c4adb32d1f1192b88a061689bfbf71dca6083f61599d8f0dff03db6cd7db61f5f6cfef65d3942de6a90388ddeff188893a9c78615bbe670a95e080cc2ba61f50180ded2597bfece00eef230d703c4cf1ce6ef5cf1eebf2073f6905a17f7d034c831b3734f64f2aa73c3d490b6a22aa6e274964dac5cc37e49924cda90d07c6f1d0e9aa9b138d8d24c3aa721c13cadf720877a1ad662a55978b8776f8203527108f012607fa6fe288945387c448b639e0319fd72a691ed067d3e90dee8a6319ba4bc80263e0dc52fe833d859ae1f97e44a7ba684476176e9981ada10a40a700d7c81ab488d9a23789098dca0d60a48d70d9b9d1bb263f147be59dd6805f455a20c034077d35f226063e11e81ceb9a768845f3253bd9c6173d16ce32624899eb801684f00c9d35e219ac37aa0c6ad9d6203c956d6439d9d3d78a57cdda917fccdecf4cc97e0088b2f86605257de14432994f720b080f8d2bff1c7faf5080894e986bb0fb0d03fede68ea50bfded71674dd2e249ac05adfe70b00cf6444fba7dd6c4b75462bf63df8ac6f38e449e710eeff857b047ed24768cb0c9c9ae06be442e48143ce7d26b4d94b08cc7a85ec3ecef49c6d8302a8361c8c44014dcd5d26a33f7364a9f28943950139b29e90c4deef5387d6558160e3a5c53bd38fed263e47bc5c567ab74de39ceeeef29965f58b03d0443a391a3a952573d41dfa3babb9b6bf70a5f15cc50f71ef3b4bfad6569083da595ffc2cf7d4b47ea7d719d7c04ea7e6aff62885bf7b0e20f67e847ad457915437b8ba63e189e2eb2bba0f1d0402365acc884990cc4b627f7642653e353c0d690827e1a1b9216cb1f9fdde1c6d20aebeaa73da05b05ee98ad3efe60fee34c91c176b201a285532cc570e0fe7fce58b5062ee91ee05353fc81bc79824620bd38fc5525b4f8e8489a9ca9244d894c39cb520848bb498471010645a434cc5f6c56794c78ff3036becb2f0b6879842bcef0cae0ffc6d361ea5fe2e2105d2053e38bb4d173b79ca2cf6cff772f1d1335acd1ca9b165871b3f545a0ac52565f0c60e55b887fd6d2896bf5e415411336665cfb8fb479f13354da16c2b9840ce13357fce62c2a2e089bd6cf680128dc922fd9a7109977bbaef57779c521c22920d3ede9ffb1a7a79dc928cf46feb41251de1558f1ac464c5879beb6e8baae52aaff7e0928a54b14067cccf59a1e77f08102743ea30a7c002dac3568cd6fed722b58178b4219118e65f6018c704f4ae243944e79f53097e313967476520ca819e6b5fcd5ee9f17688c885c86ad16c62c14cd721da38a7728c87caa673f530ce62aad24bbdc4d1faf2f99443c9493cca000279e10a824df31493019fe9a07ca03a177b87784610f3a8142756e5500fe5fabb708b466f7f72a13359626c75597b771ab9887ece6714a89d67e9d6c8843b15229d85ee8ddcd2fa2e60a37bcb1adfba8b2d547679ef4bce34b43b0c04447e54ee8aba8c2b5cf0502bbf37cfdd0492c5d4e3869727fe9c9c2457beac293f84ab8b712846b2952646c66e31b21e02bc46f91ba32226cc6555924323306d10a3427c4112906560fcd37bc003c05751929f9a60a94c20ca7d10e4d49ab08a57409c077a0cff2d4a0f498d083880c085c88b1680a089856c8ab1ea4f19329c3f16ffdc62d3aabb008bbf80c39fefbef41c3e8415247eaf30c508503348505f1817cea691910b67328b4e09e050a54f5996bdf1baccac29e79b85c556cf4b29fe5f8be793608bbcf4b40c0e75cf73e9339d09218961d0983ba8d0adaca0a993426b80f374fe301529b340c5ac7ae6ee57b194eb1c300e7e79cd7e10cd0cbda5c0efb0451a136e639a9137b7e65c48313bb7592669a5c9eb3913d1a8cd78b906bade448e25a060acde9d55fb266d6d7c3dc55288fb6033bd830d73e638ab649d0d6fe9f7c213051743342658e913bc5c0c1b96bfc6445ca5ab28c761969e590289fce5d088da5ef8344d62bcbbf01c684d38c251a28500272770748ef48466c4ce57827f1ac7614d03b3f8ce75d3c04d3811284e83864832c7f32bbc9cd5114fbc576b6157eacfb161c6280caeea235dbbc6204afffd51c2af24afa62f5d15a7a245a8d3478f370d850f4f418877fdca877f65e8f9ce0bf369980d47a8f387c9029a2d01b02160d6a23a405fe51ed47c72d44c92f60480a016226c4ebbf4555bdbd9fb5b6f946b8f645d165b20b67ed145a6c1e8c54cd92b9df725abb7dfe367d126a392f2e3c3b9f4ad5f72586a5f5b901f6c09db06d6123c8d0327714f3d2ac19e311bfe418e9202adcd4cc27ce1617259b47f265783d8174bfcf71a3d5f9da0acc0a775628ac3ec14c47b768f1154b50254779946fbbd6644303bd9f602672e0e940382f68ffa750c179ca56d9899e0f5acbc915bb3427b9e6c4114f8d0e29da39ed5610e39e40fa8fdc251528b9be73f750e0f22a13b8b949972f4f1ab516fc35b2e20ddbf87a48e3837f58c6ad3191c052dee8491adf4e43df9f0e62b51b8c299d5c30c4a9eea6620088e9a1d7d6039abba4ed7f98908691ce334f81c30f95954db7f50e8d73e36a743427bcd89866b6cf3aa404aab4141ac405accd9a4767a5f4d9ccc22cd1b5d6e723838854aedad25ed3eaa1f745ceba43410e9cd49415b31e839be8998133571c33029bdce8858351ea4e469b5f2daae776365761d6f5db785439c5f71d595c64b8bea6549a1090e364906714abd067edcb38e69d8d24a50405f4e343ca878d3ecf65cc678a28601dd729357612f93c40e7fb623fb100b06b330cf1245d02d2b791b838e94efe775e11c39a39360e4d2318ba208f24ac7e65163664ca0f72e9d51b0d133a1bc8040be1bd125de91936ddd48502b1ce8f48615519fb263963948cbbcebb0ec43e79ae7fa848bce14941075ac121ee4ad5dee5a7d40310f7c44cffbdf85a2d461d3a2584cc8bc9dd6f2362e5a4c43d90eca0597676770baf6a8e11e19dbeff97a75a9f49a41113bc824d52c1baa486bb0981249b85e4d6ff8eaf878e628912ef22698ea85d083e641bcd65186385525da1185e8f7829f1134b493aac02b1dbeb554bd08d5c7961ecf9bc8552521aee48f0cc79c23dffb04421301efbc94c624f0e2ba974b5fbea187f45b58f0f3e2fe87503a398b453b2a475fc22b519b4a1f79e725e08b4367730312d80ae76785b847466bb8f3174a4570f232a58e8ecc1e05ad9843a583448203bf97a2e36d5e8c973392d57fe07c3949a9d9852406a7fd21c8053ebd3834319ea9d7629540a130abdbd033bd7da83d027234594bf1a5c32c11d8ed90b2ca22030bf4990a5ee7e62e2a6fb1e6c7743d1aaf0c4dc15c7732ca93bd8ef1c6ebc8a248151d257406600359f7d6ae291fa617c2159fe88c00d063a82832dd4579bf980e80b1968bb052a4cdcb4b2524246edd797fe3272df45f65d152b5936263a4422cb6d4b2d80479684c333a4490f4d8a5d75620fc2d16652ff00ae63f877a19e8b50d61ecdc9e3df7b9ed8a947c84aec9223bd9577b9cf3492b55ae2045046766302c295c4f4718e945fe4124030cd345decd568291b7f0689945d4ffbe756b9f36c9f6e61d52345767675061e78ebdf8b22b125801c9d7cdf8cc4cfad52dfaaa94f672f485e25248db4d8663c8902e14cdaaa78ba129fac91c7a916a2eeeff8985ddaacf096da4e884162e3ec1fc08db43100992961ded21f64579d94a82f85f58d862625e275d6d99fc0dbf3b586243b290974b3a7bc480f4576d0f30d84339bfcf5528794a0fd38c1fb63083d74923e0ca5f75141aff06aec9902602fb91d885aa9010adb2fe7212b92ac58a9959c7c699b999012cc0f3e68bbec325353be5eeebf4a75f11f47512b664e054c11b7999bf36f13a8b1251a4f7545f477f4ffe3246f9ee3a84f9a4c1c6d7ea2fd51a49ee184ec0ea5e4d495cc1280e5a6ffa181b1ab68443eb6bedab952f9b9187d6d77074194cd81fc56c7bdc3147616640ec63ea667dd800d838685828b4544bd64749efbd82b9a3949cddd87cbd01cba8fe5aefd45c4482aea1e3b4976380e2ca9c8c5af921b8c5ed74a02a3634bf21bd234ecc883653d7d6b36550097f65564130d83867323e6e66be167ac99f84364bcac49da3b00ec756fa5a17521d8860789beaa1f38dc25f515bc0e8bfe1996bcfa6c73dedc282ec2a305e600f3aba2bf74bc58df43740692c60827f149a376a50636ef388045e0a3883794f9ff2e1c8887caf841cf2b1f1760768d28d3c37fe213f12cc02213e8d6c5dd8e7e21978147f711df78ccd9d1de53bc5742a3562af40c2527bba5218bc16adffdc1950ff703269d70d12c678993331271fb236f7009b58293c2285315e93ae7324bd931813cfcdddba83f5148b82cb646e8c6d53f931859a367ff61cfe48ce49de01b8f1f31482761ee792b8744de6884b92082bce3b02154c23f5545490f8bd10b782db72323312b761319636d59eee0abdc25538302f44f49a911dd45fcd197694004cddbb499b79e8d551cf66791fa749ca19b25090f5e956dc7bceee17216382a8010f7ac5fcf0a65ace4a1639f433f518c0b68775563f2367f016d2a6e03d5d803b6d070660f72e601fea003e7fe86dab178c4abcdf2dfa294458ffc86e91d5260a1094cf600ca5cc9281386404ceabf8e6b613f206ee348377774e2c37ce42f6060fbe83dc249958e62f98402453eabd741aa3e1cb64d50ebfe4ae1f0fee8f641f59ff5c93e0a046df430978b287be0f120d96e336bd68907365e521bb40cd83171b8200ff844aa97d15197bb98515177b8dc7efcbd2efc372decda1867ae44d75e3c8ae85d733dd3458a0b78e67a12b9d443a5b1cfedd4fcc27d55fefd622bcbfc5b590fb7d0f4faf3d1b22b6e16e938c118f8b0a278b9270abb5ca81e7c6619489f69a49900d17a240ead4204a65e2c7bd6befb9ac7856200f66c34e30ee2c3d6ebe7acf3db27d463010dac717b4afeb3e119b88e2ba1a794e53e889e6c433c827b478ea3a6bc1f7120e46000a907cea32f9eb1667433c6fd4a13c8b03f68ede10d2e97a02fb3827ca601d617c79eeeab04efd44e1bafe4607b24e16bbee7b395ded577b39d3abdb582af8ce9200364c9f4f2b4765257f7c707580208a6dc5f602aebc2beeae2a12af9b0822d1a236cd78ffc06621ca34b68fd971da8efa235124d1a71974f2e93f510a8beeedff3f4a1632225c9cca0ff3878f06b6e71e06e43c25a5e6d22160ebc29d0c967b6d01fc83d0d8f0995c789d981abe5a0dd23b6de9282cbc3e9e81e7d52ad31ef757ec36ed7b66626fef62ec8762accddd1a1ae7bf9d4dcf9a51de5af3be905f408e4eac254eef05872be8be86b292160e81b6b89470e1863937619b2de175c0afd10554c42fb183138690f5a4e6e2d54fdc9f54855e6ecefe61384863487ce07797bf40ffa62ea4581b57e9eb7a2fb3b1a32c9970622286647e583e3958ef92f2a776f829aa71a766e8f6f10b03cd963b937588aae138029053f88919e0bfd70fac6a04af9d27eb82ba3cfa9d9e7db66534f86d65bd90c9452369819aedb01b0a1d317d43bc3907c851b5d1abdd558c368af2b0e58bfc8defecdcec35f2aac25648195b1ff79ed9a996c2b2e33b96b7f798c95a963ec159a75ebd6e5935eacca8fd791cf3c22d8d5859c238424f673dd9ce904e278e436b604827381e44833d48aacb6764b1cb7e93516809419bc9320ab4b2d5c1f7ed41bab60f9329ff774408551631eb822952db3b45107555733612ba9b8a29a9d7bd4f194d36f9e3d2b731fc9290fcf859fc3975ff95a72017d717745c2707d681ac39163fe149c8a12e2976c51d5098fa7598743b2dac2dfe1d1c7c15ccc6bab87ece76d8c45d72c6dd151035483c858a479cf6b05e5e2aa91b5199309f115dbf94f7ab9239927757f20c73861c400ca306a9144538241b005172138440ab6708c4f0ff57b9ad77f1226370ddabeccf0099f1757504b947b79dcb8fef8bd9a61c0a81985e495e095f49ca455d7c603aa90b93864829f717b6a0c83e406878818fbfc7a97bdb7613374a0f49fa1e0465f4d19eadac62b8b611d12ab22c3dffba602eadebcfe7a6cc1e9b840d838132ba869fc638bccc042d41812fc40773c96db84b2304caf6780fa2bf8addcce8a6bc63230796196799344a74ebd20dfd53f8a8f76ed226f2150c218265bc54a8b4d489b5104e3fd318960589c064cab43c89919fc542beec5a9f211fd3706c632a097b99d8c292c4dc0a77fe67efa01e70f5a7807bb6f739b9c407a76d7b8120c02df4752841023cca71cb3c3b6a8f824043dea437b68560f36e63d278f4c2e71567a239ec25b35b47fea4f1a91d31e71f84b0fbc51a08704702e48ac7593d3bd941ace211bac8ac54d1df2d46b65f327269a69e219c106722a5a0a2712a3eb515be0f0ff34329e814236ffa6faa66b395d84e329369968514a96fac9ce471564f0f3d37d0332c081487c1ee1051270a32fc5472e22b059dd57e4107580da22a49a8ce3338293941db865b9557f385ebc2144c66cf18e142036e84a62951f9bad7bec34ce96ef9261695d804d9f0e864da90d758cbcf7edd1cd8629e2bc77384a5691fc5c3ac284559e72e68bfb4aab7d0511ca363fe5c887c52231281a126a84eabd14354cad0c937f38a163ca3b878b3918238028529e31a10d6c275400d289d18a7b60b0011b2c25372edbc3644758b4ed3fe0df75ffe8e274e87e1405c85d03e1d39e9b167be165d54ae152750bc26ecac2bac05a8b0f07ac3476c7b5d55b701be2f52e5147a9e68f7a9108ab68ce8af6b6770e7078bd7535e709af10398a589013d2c4206e8524a784888380e5a4bdfd052c23000f80c35519089bf866bc4aeef2b6919e33aa722bf4483d9d81590ef800d29a412f68db4de83cd81f8285f52bb47f7af1aff4267398afef562b87b32edb117d10c968ec91f5ae28cce9fa33c5ac2f42114eb16e94047884b949ba19d42e9aa73a62053474e4ebd685a9460023d75271064eb285710fd1c0f632ab5c9d7508fbb0945000c4e0643634050a365751ee984e43b6494354011f53b448bdca91610cdd8d3a83d214db2262f38f4ec8de00d39e961e6453b21b88218e92de93461a5dd18e2f512833dc50659ecf80046293a2d801f683c4cdc3df23f743d3fbbbaf5b086d06a5f7f14e81ebe43eefb6695995a7144762dc8a0294b2164e46c8fdcfaeec133fc300870fea00d874cda4a0e148e8b4c28a40972aa361872248b67b128d73ff90162f339c65fb419ca7ab5a56b5ab96b622fce1ccc975dccd8a0e8b4023a8c2c9dfaeb5d13bd61ab635f50ccedf63c85328f21bbdca601ae2166ae42d4b2581fb929cd4b7957210ac64f8d12b56892945e4943e2603a83831c3cf2221152176fb3bb8d75deee007337f6ae68f16d3ec95875803afbc0ca357f95146cce5db6f3084b80dc71250957da0f62f58c4ec19e82f5c6baeef89bd1691fb33d52afb4eb133f245e7827e86beda6cb1b04c710cfbcb31387067bf597fcc2932eee79587b3470a56af4593567bbb1d16b45cd2f4819a8271897aae41ecbe686f7e9e7fa549f85199298213baae17422c1c4bbf554a3d8be23cc940b1cca88679da51acc571473d6aa66f4217bb49a26682579087b29a0f99efb3edd93e12dac60caa5e1974f31daaf86e99092d4b2b59306135347007746aad7bf75e7aaea52d2e772f6691e6ed40c25e2ede4d54c340807729dea6721e6cbd3e25d90a521c6a4e17e486017e7d93d07cce1986eb7a79cde5f6574e8e1f7a46439356da85c69dec8077e74142cb1289664cef8f8e2a06f59ce946e92d69b403422fd70b81f2cbfff3af0bb4eaa3ac650a00cd795fa80d661ca8a98b5584fb08a3bacfa593665c8f9319068cc6ea58819cbfd0787f0458c23c8d4e31b3ce7897deb8a80c4cc59bdb6944030fe5138f34e0a84b8b01a6d60e7ec758647cc4150274843d4de1f13a1699b2bf21976acdc158ea45eb9eb51874bb74c033eac002a228e16037ac4acbaabaf90c2724b81312335cf85097fed58e662bd279cdec32db80c65548b9be4717af38502eccbf6881fa20530567516650aca4ac72f5c7db30a5c95565bd9a8b546029037271ce53bb6ab679c43c7f4a6f2585c2a262d7fa6925820d66f768d6ce38c43526834d63a7f0d640705938a467f4935d0d8087cdc54b811c6fc8664dee50a1059703e2a765ac4cb392c372b80b730a17bbdc3e5740f2f7981c0de2782f95012b97c321365b065f91b0f88172a4d10860901ff3dfe60bf38a7c8147c2cb66b06f3e2d52a94e29d4cb6b86b3dea149a6fc732f4f713c542b6dd9b9cafcf178bc2ff837f59c94f3970a76b517b1dbc58583c5c99e5baed6c0b3547a57da8eec5cdde15f22314c31fa2653b018bf612252e0230141b21840df405177eb74a5ec357f79baca8cab311eb0ebcfa582dc6507d3835e58cb5a2c34edadc88ec7374d962e9c8210585c09a669eff7039a7d96786f969eccc2fbe15406d099e032bfee3597d4b5cb40e813dcc9072dc748800c149c7f4577f6de2dadcd7de094f934e8727df99c2e7735869d79dace14f139648296dc82818a085155f588244fc6aab909351c5a3e31132411d9db1f11a1ba715e6c1a208fe67132392749a2fd237309cb28c7d57c27d66ac57bf1044685fdd7ee821c734f35ee464f80e6513701daaddf548ca5b21705c329a6e426e470a9257c0f338f72e51ee13911749d26346d05c2cce3c54042158b76d4a4dffa57619998a0612ece2978db915edacf39f4d4df31335a41c3ed360d00345a9d26d5a4ef7093f50cb37a55ce45e09186295d3c790e450f1f17e031b2a02848a5c0a840dc079d6cb110121e44ed832db0e4f0494a304f843207ea51035fc87f604e324f111045abda0a6f799dab28b5e19810a8ae12b2baa6fc5a634db45e629cc9f8c8f5f266830e11d793974224d00c5d861da45b64a25e1188bff6e0e8f3685e27a56d74b18a025ece72a640bfbfe0fbfe3524166ed884cb4a69da8b9afd7e660a8a554e2941d901a15995cbb72960fa877adac16fb5e49a7f393a82590058bd950d9410a5876d3fde3d1f64bab2753e173a393117ace6e9881b1ace40f76103dd85e28c51662612da4b7123ef6891a805e22e8dadf74935ca5916811feaf8099e69af172d230d272a7bc95f6efe988a8de6fdbb8a9af5262dfa0682f74f106db440bcf18ca81f712a33a359c3d3b425503bf9d69cac7a21a02a02647f41b652a2245940973b19c679ff238f6fd2c33fd15b2751e4f9210392bd8fcda27bda630ed15f14c8822b9e7b54ba9767178070f9e30deff8f09e287bb61f3fff310355424450226fdc6126d66320f6936d9efd93b827b682e1c1e051e6151868b1d9c0adef30f83005a952f5003523509872fcd1bfc788be8ac3931398fc9163d2b8a9607814b0830eb58188955c30ef6de2f6c5296a3900fa03da424db009ac3ba7b29207675833a53f9202265cc434c2b180e948b67e2cb9569f638a9656b17467031d2b658de0a758fe1a66e0e1d720710198fab2573c4d36397eb3312015c887d6fe455e097d0dc3ae4add22db06589976929fef1dbe047907a2f8a31a2df69be3d890a443d21b98bd531b5f12e1d29d187ca4a3b9531661d05f52f3d286b70a3372aa4c90fbedaa4cb7fc09abfdc3ff9c5d9a062a320f228a4a8e203c5d0f196c35b81e95e74a66e93efffc1be21fac4623df62daa29135ad7c6b637e256e1d59af165b52dacb1eb572a607a78d672e151cd6a40a8363197c13c71da205a40431129a3470eb5213ae22f09816ef42822a7db068e8c6cc50e6b0d8579057a39230b55e22fc87d19502e3d872c66beb8deedfc5c8d3f045c3cdf87ed78a2b13093192296b43ec5e164d8af099e85c668f8ebc7c6eb19c76d27e139c24aec1b11d35c7588c02af9e0af5b3fef22b8d8f0636f7c2a719f683c11c30820c4813876a5815645eb33677ebb53eb74066bff3e5c5511683aa40af479dff6f76cd49e7c12864ed185e3f18c37acc7e73a7267b14def51c34c1504468af351d9b02424510343d6198f358510552463f7d28ece389c4edcd426510d8e9920c57f17812d5b5804e2787e16438ac3a574c1bdcad0c9014aa29473efdd60677c0ac61de7efe81b9ea624c431c20d3f0ed574804fa0ef32780823303a9633170132c93b9829fba118643e2cc8bde49adbc764813d6292adb27556ff03a850476c92d6317cb1ed9483de5f54e9163da00ba34814b3c7cc3a43bb14478e8a5bc232d32da5d3e4ee7c04dc1f27d629f3a91a4b98f05978f9cf7bd31628f8261d1268bcd2ff16f1da64d98aedb7704b9e48278fd4e4047b2b18e918573adeaa38a60b4a4af972b1ce83d2472135fd4944fc8f90cc02223228e90fe8712d89417abc07d799191eeccc9239bdf764202ab41642f5e0664f206a76f31e992d40ce489c83f47162a6dc7b10bcc896a75102e38eae434ea21f13c2b0cba666aeb6dbc3577596f7c1f0eab42252803be6c57811c2d2717938a50ef11e30c94377eea3d7b18aaf59c9f6be1a85c46ae862f81ffc119cd516ce2b40272050133a90f489ee81117cd43bfd330ee055f1e546d1011e62feb8c65dbb74f6c2a551cc84262aa28520b349542c91e3d87d2076055d692ace95d7001e764ad326d26b865c5a4144f78f220124583223ee2a2c09b5c7b8cd2a64358e428bbcbf52f7b06b10f9113f021bdbe0dd06ca7f817f350bd3afb36115e7f19d5f333dec32bba3734613e501d1061f9a5b6a2dfe1a59013ae8825536b6c38d661473316a2ec2fd5bc69d424a2fc571a911e786603c668e6fc941dd05e5759e29a9897ed6ad88c79f09a112b190a1e7552f5f6b263af0deb3535dac1343c12b8954c31413b6663199035c81ab5b2b523a831545a1acf33d74195a9a7e9f356fca9af463b785baedbabc35cf8d6fa21d343298322bad537d52e48a80268a85c939ae00d0eb8ba488249d74993cb75ed9f2073a4e4fa7f96f404284c3c0fb51fc51c1b347e179072623f939c544a5ca50208c78e3fcd34712a88e4dbdcc031de716f095a3dc6ed4fed45ba765d8f8d5acc170b4c1a42ee10e2097bf311ee749c56f4489614d43a67c881be8cf52ad521335b489df6ef655b1dac3301855f2ea161fd19efde886d28760892aa49e03894eec88f7313c0286325b82acb81b179f7164047e153d1e9608e21c72b7a2d634f6438f1745f4d09d7caeadee76cbe6ced04a1addea18a83c58646e583f9567874e41f867c3b3f638f36d8b7418a713398484971cbd8b6936d0b23b6b63a10c528f62d3a190d4ac5054ac9f99913bcbf4d2238d97f24e42656e717b4deaf1bbf13b40f6c0ea1bfe2d78fb426029fa671299ac2fe47d7500adf7c02b2a8187cc1e438f6b8d05dd92047bc345e65d5b8e08934b3fa654496e44dce4a4ad72011c7cb1bad450c4626afbbbd9ee8fc78311d92b6fbfd8c6ae49547167aa1c04eb927fdfc53a01fcbc6dd3d5d99bbd7bbc854aafa2ad0666e18d35bf0db8ecd41530534220de69c6f604ffb6ed8705ae6f6c3fdd418820ee5374e7711ec4bfa4038a72c233330ca39f3b7c892ddd9bd4df941f9077abf96ee1ac6709092615b190a7c27a6e76c24f6fa149a84e0158b9a0f83d2484e0e83204f067ebe70a8944ceeda6a2c0dafd74986ae0afd40d1235fab61ff535a774c407d37be8fc0d75f8f90e6beeefdb147952dbcd72124203bfe8b1cbb112087decddbdfaf93884c0a988625f0c991c58aa6133c63861f3858e1007d85ca06531b5e789ab67d2669f63cef7c513b4597eb3b5a6534bc132756ffcb45a06ba53256c561db9a3d722b19e3663b366d93556956b42274739887e6b25e2094db6029d811fd0d08a8fb5d7d3cabcb7953d57a355c002d722b9c1d0be16a7bab5ed0905f560ffa10af2417bf568877f6d73725370b14b11f7319389c6f0273750b9a709a4446a3a62a1a0f91f9e85c0f179b418a3b24e792b903afc60bbfe7444fb914ae9749c62231edb33855245829ac6cf7fc7172a585aecd568740ac5fb08261dfb44e9fadc0ff4ec90e01e32f2d0ecfb38f422ac3d5322bcd34dded28158eee0738b7ec572173b1cf014a35c008fc9feafb82981305d9f094f4ab5c7b109e95f4bb475ed0c80fce6412d1b43b2bf92f24294d26ddbcf532914278930306e8c720334a40299e9ad54dd879cbda0bdabc36b9d1c1f2424006126e6526579d7e790e865612c06f41cae1faa8797aa260019b7dfa9e01070384cf1d95fe4e4136be94129d9f516b53c618b9d235bdece86ba3fcdc79381ddcf361c51d142aa0996efa2801e6eba689319b6359bf396b25cefdf0fcc428b90d3d00325100a82feec6af8c03d6fa98df26cae1bbfe24a4eb974fc85e6da5b65e019004532200a2483226f77c35849dfb8ce02a144dada010efec276a1e6e118b035d2eff4fb777b1b33995282f267527a3facde5bcee6c5536a3639c2fa96e44bb1f79204ddb6c599fdb88fe5893c5d804086c3c3e019963d54f070ba68991c23855fff6821805de9532635e3b1695c9656a3b1ab822bcd9538451b6f301e6e3b94cb00eb273089ef32faf09a31dd1a0884985367168ef6719c9b4ab5e0ffbdd92b9d065982e001e26af69ee47f2c82a3273270c62b44efc642858f839fd007e4c0a77e3c583bd7c998f82c1927db0211bf413384ae47cff4c8b956b5afa4ef91940101e1973d1f72fde5e698b7820862275cf27a3511ba1da1a7c29717edd4d0884da719ecd1580750f56383a71938742cef417cac2573492474e0d3648cc3289416a67cb0c225e018036f705d4ecfc092faf62fbde5c9cfa5102dc8b30dd983b20276a5046d9e6b7ecbfbfd88ded6c9cb2421ef90fdbc8f52ec34608aaf6ba13d1cdcefabadc3fde5826a715ebbea67a33840b777d8a42fc6a70bd8987a1be4445eb296114123432e49338a90e6dea95b95dd4a577a1c78d3f1b11c58f8ce48d8f65f6536227187867a3bfbebb68a16feb4c9a77375df868668be6f4760a49cd62f28b4c4e09bf304ae762e43304a74781e1d4775480135c56baf814139134fada9e6554c86c7e69e8630ea89afa209bd7428050b1cfc2c07d562b53023afce8ff4ab81ea64743d80b0f2ef7a6e4e77564aa9b56e993f7f4be446da08644727a3b27594e4a55b6b56f5a38cb69c57f5801e6f7b77a19d762eb196b8b0c92e618cf3ff4216f95700703a208ed987ea0b4b1d655240232b7e9399f11cfae28b7a42eec92009dcb3f4ca1bd09d91b5a4e42ccf2d40bdeb32ababd57e03e0bb17032095f72a0aafc7abc4573300e908382af33c2b1cc78f61df7b2f10bfbe8fc7e3cb21a2ac2e1f666905101c651198a636c9965546a4a5803ae0ed57016837a6d2a907622ba08c6aafe599702b219e30d969b0bafa75bb90ff81f9d5518c6c2b74f2f1e5b429e3fd4e416db77515c66ec41ed7bec9eb5ff86563899fd03720e2ac49a92814e0a7aec4b77654b45d5d0a0ab9e8e6e30b293189c41490bd0ddbbd1b7a6a657dc63501c3b9541411058407c0709b21ce392e24bf5dfe7b2770ccd7d24ea006afab0e2608a3e7096848dba87fbd76802101dddfce13edbbc0fdf68cffe3f9d167f331250a70c66ab1601a71c0129c53d733b79e831f04458897258da48ca4ce3296a07ed7d918d7eea54530d31bff53d7cce3049565476bd0c238a55a89b312429ebad8cf7f3c1f6258b6e5d3cd8b451f7e57f839adb76a01542915b625e44f23d2233cac172d3fd51da8c8a9345d385ea9766e215108073bb4722bbde89d071f8498b8b4fa8066bd4b1a564fe0ab9d3bf89eb6368c08279cf2a98d714faf468c6aced15461795bdcc6a957626eadf9f160a979594d39ea8ba96711984062526ce575432c87a2ba7dda09dfed5f05388d64af7808846ac5c45e9ceee9988aab6cfeeff6151926966ad55e076ed5536835de41ca82794b5d9b23df75ba79b1f6d863df22213a563f126d1e7ad51af3e4de34b1c12e850799eda4dd51bc842f3b74478724406c523f0c5a71e6f54d135286c508f675413ea86299d77505d8be947c4da8d4b22ee2587776f54bb597677e9e402121f05dbafbeb4348ec3fd349b86647990e76c7adaf1d9723f91bb23785842a7c7b9e207a283c832f0b6fd61f25c51a68e76d30725ede421f6452e9f3cddbd6dd30fc39b52b89c931845f055af494c41e09900d9e1f14416756d27aedd7e89bcdfacb3f0824619e4a451c4d1e6c711a6a0da9fee583ff3401c5309c7093295c3983c8346a851d402d6095f2f7e0595b22c5ec192cdb5d43d310215d282773fed2f075c8a6f39b4ae14f5d5f8b2e98b8ba9aa4fd4f48069d959de64169c4a0b80da7d8183356cdf656995aa59926b055b7e7bc97c7592d78b23cc71f5c25fb56e51d782208e09e4020198a97283380442d5a5b15e6cecd90b7de9e425f1b242e552bc74f8bf544199b1954f4bbbaa571b1d0d6777ecbb5e233dd6b7b43a66e29a1d04043444f7bc4d6c63d5d5c60f2d7b8aa756437743de9e998ce53145f0bc51f88073fa4a132e4acff2453d043f138c9392b9cf8795b487afc92d14c99a0a37acdcd62e3526a87796c23f7f28806a0774375189091f08d9fe05ad8d15510b0706851cc21cbb2f5d24df4325bac17a8caa7fd383dd010786ebfd4ac18bbeb9f157a8b81e48ed625c0073b4cb961faa067919f9f9573f85f73eca41871fbd533ef541033bb9babf8852e7e4066bb98da869cc5f12c1b2451ea2883fb5dc131295b8369bafa12672816a94dd203dd9ce3ec5ddb289d7db77d62894e42c5f85a9a77d8160c7e62bd4083a02b51ce4691e431b85cbbe497934a0c44da0c95a2e6faaa76fd7dea47f0990d7b8a0668bbdb024bf70bbc13cf302a0cf742ea512343ab199ed0691a9236190fba01f9a31a4fbb0475af372c995b171830f3710e2c25c8c3de32320f8c8665786f4dfd12bd2b06410abf7737d9b0a9782e3d20ab65c4e3380a09b404602ceddf9be4207a0962eb2b83055a7d8073033507ef6fe9177e123d3594fed8046a15cf9ed9e210ce2e0f7a2e1c741ce51a852d4cd05fd076c1e5eacb4123443c35e97d2f1a577be9c4cf675b1c5fa49de6537db4812c1c3b31dce0364bff963ffec3cf1ed8baf594dbf129d75dfbea44a53ff95a7855503787b06d5d46f8d654d91546979d51c570fdd98c9d9a96231872e83162c3b3e17703e27a5eab282040e52676fefecf481d9867a6b642039b5c1bc7ad67a49b5e50f4caef6cbcab2afc26ef9de4fe1f57814d3c23b8bb41ce71fa1ca3203ffa86806c4b7d2be487509f0d7f2b4aff0643081120eb4d77a6ef449605fe9f7d2d82c0cdde54615981869d0d0c89339c09c6f6f1bde961b28cbfec45a209fd74ca5d4011dc1e3294a6358d6249641be63bd5344558f62b5d0b9981dc8545d8524e5955e06e33f6c356f15ff9ad228d59672c9503e08e1e49b644ce2fc4b0ff11c58b8ee94a6727db97f14f59005d78cc92e17f865fa9e2fdd7f156e853905505b1e1be2236b9a5cba8c7a02e8a27fabe2ab532615b167d545e0e582dffc72e53cf1b12a97af57a3241ca3d3ad3c767fd9fce9161ff7d05420e520b4dcfbf05aedb8fe2ae26c4fd20cac9d092b57b83f89fd186b9492afffc7c71fa1f74dfaa83f809bb44520abadbb5faa9c417861fc5f7876905232a19fce15afff2536718f8bb6b856dfe698a939dac20e457e341fcbeb6877a96e842a82178f76f14f189e912595fc63e5c8662b310e6eb6e5177c8373ab9991abfb86c4a8f547e1e318cda7ff08dc1ff8ee3e11ab6e278e6895f11afcce502c40ee6067160acc7e8e7da5b0f0fab3955045e13b8cf4a8fd4c5a996d91b57c8844070e7ee669bb7ec4b6f99e2aea5a57370aff078e67d4d2ccbb88d84a187ae5cb3582570ea449d9c5192e88fc689df1a1fd0733bcc141e7392c2158120169ee1e2d5412fdbf0fdb405c1187a19b6c05aee5f65a5cb25145e7c7f0ef4552c3a7bee4d1fc0db3c6783d1d45f19abc5ce85b092efb331a10ed69cc22fefc3d4309961625336aedd16fe85c36a11799736614b76378f992e662771b805c8dca197ec5c2872d1dcc99fd7cfca556a013477f9ec09e0dfde41e7283bcff70c65475c5e0ac88302426b637db45c16f7fa06b382bfa42ac1e8f35cd4157e78f3a0c58ed4cda5fd18cc3e84e5065ca7c20c932df06bd2d21f644fc755bbc7b51d975be61a91853004be1e746b5ea5070f2adb9535067e210ab6b8c17fb5d41bd0fe6154ad4742a4b4baff8ec4f49fa6d2d7d4737d0d8c69c5a9f09bc4ecfcc6c9d0b03af27c2b4496ad25917d15bda793bfefb17abf66fc3102e3488c04d23085064782202195c6666e27d7762db5b8a690acef3322bfecd4b9acb667335abbde0c51ce48a53ca7495ee1589f5e9b8bef40fdaac8de2895cb81ac1cd8388ac9741d501bce6919dc823f4eb67ec8a03bc7d8e00493f0da0e3541a3a07a86e61d1c28faa05c0b52cbee66a8d96c425be726a9dd416e8a2ceac73b662a80eb0968d9ac361a519e75be758b8c5ffa20704cfc466da11b01941ac22431020c53cdc908396e0e1e111814e2abbe8bc7fe04115b3a61520eaf06cbd58c7338783a545e159fe445c9f635881eb44ed6a37447eedbc2ee8027327ce18e87c1c1d76a1ba6dd64758a0dfcf0856be975718f72c325fae66401531c5b3149e518a198089d71ecd902507c48e389ca3edf3154f72b13f10c51731e3511c83286990be7edc5df39a4fe0e52699312cf1f26034b85823d5db5a41561e59a23e519947d446bc340ac4c91a4358301606b8476a387e020bb0454688ecf2ee78b8e0ee50f8716ff9bb1b9b4c8c5e57257366013390d1f75ffd39401ebb332678990025286b94df1f263334a905fd540f5bbe28309339a436d36a0f5aefc19939c8473246451f1ba3c9345846ee7e335a3f4c39f3d6bfd9f8399f14c6cc92e54466b1ba133e06d4451fc69e92926b42d68ee7a5c462f44a2ef447bd7ee05c2b4c96a098ab6e3be1624302f31bc7d495224369500ecc590fd5463d13e1d1fb8f781dbb5b6dba36bb4d1b2316a685e68341fab1129685df244a44ef2d892aa3bbc631d5c65fc709014396f81991a6bb273dfe4c3988ebcfeac15b40baa0afe95c7307615063b0f4f6e8ebdfe68ff040e0dbec790552d6fea4502fb87c7d2690a477efd4a234db0afe5ffa86b8aef81cd164f12a2b4cbe14fb82f2bac78f9ea7c71519431b3f9c3a25e3256a9ea98c286174c2915335ba897b86d3f706a19a647e7548ee4f3f92f597f85ba5fb92a100bde0d5299a7ce24213e2304f3762b37d875014ff84b5e3ca29321c6308ca00a051ae7cca115ce3cb99be9d076a4a8d6d22af7c9d3328c87fcf7da8ee51412dbc5314d92f3cc3c7d544bff64645c53b5195b4ec9a8d3607962406bf3034153bd63891e095931147fb306a096b83b16b65aa7bf988f47a57bbe5a27f286572938d3d0fdc7404a11fcade20900b702fef552c0370917d3dc74f76d95ec46dccdec7df18182b6f2048b8b1a884256fbf84ac6d2a84a475f6980c5b6d485926648fae631db76329be01fb71430b2e74b0f3acc3bd329ad9a03dd8c08053d8411ec6574fc5d7567a22152dcc5778918bded7d5079328b4dcdc56fff244aacdc0a98b2def5681931f3ac450d0a932714fc1b60e14b6c08565e2ea5de43a87257cf697cbd12a08e0c8d03a017323744973ca37454ea5eba78e43347fab036aaea0fb21194930dce19bfb87960b2d2b863d149adc189e11c7267fb75d02c1e5512cce71d9ee81f3a9af536a96d6957ef40660c1db5cf9418930638838c705ab0773072fcb1b0a43f79200790b740cb66cbb64743708984183623fe9e57c56af989d7ba5b36f37f7fcc4927343672789065f6da6ef8b5f4af3a7e7ad26c739946226407a604dc15ebe3aaec2049afd16a88747e6f75cc68d409d860cc1f2d8af6d5d028bbf5d7cb99edc847382d74e08c6dc814c0c7470cc4e1840c6946c305952e6adf1a9093f5d97062138354f3c9eb99dfa82a5cedb948d9da3d16d45d0599c386366e401d6e2a20b8036471791af271abebf37ee1cfb4ae8eef015b62ca79520be7924b7084d50ad7cb06fa59ad6913a35cdc957abdb396720de08977ec5a33d6c619fe4ad5b1da789cef257915151f6a379ba143efb4bbcd9f639e73376ad811351c401d07c2b233c17f9ec9057e9dbf7073c30b895f83e12928d49f09350b6889949cfe10d1f44a65d990821e4d48ce67ba63e252ec879996903811d3e0af75508a1d002df7c9e8130bfb54d3bb23e5cdb42d1c5b186a969c112fa0bb6d53291413dcb532aa6b929148fdd4fa8f43b3abf9a052c40cd43ca366443a38f30ad020ecf4c5b71a791661109d1c538136065cda8f5672aad6d4261e88da217e57e9bd7c6217af26a19076371c57b76819e24f67f4244fb25815baf452f711176123ccef3de6fa883b34b4c7651c4619d7ccf8e2093929ab88e3329bb237f2e89a7ca6e0f5aef05b2b9206221f1602e2493cca33b0f88ddd9d7df02e18635e137d19966613043df77f828d16186fa84ad11e01b96e429163f529f28231b776dc0f91e0d6d3f02348d30986a64d4294b2337ca8696c4c973ff29dd2e6dc9b058abd9f8edc62bd4cacb95dd81fd0210342adb35b1496392464d3d035042197a9b1b01461dc6d945d133511ee51f1d7f9bf5e7f657d3fa23781a9e1c6267b9c536aa564b50c2f7adf1ffff7f7abb94b26d0fd89894d1c740cb531448ee57fba10ee08d6af4f47121915b32434c65bd971d333f3dddb28b89b47e99fad3fa56892c1bb468bee0fd772732ecad0dda4fa6eb7844cab15f0a4ade6ddd11226ee442cb6eaa046c589160e3ba27c662c3e648ffb41e6950e28f55a970c1b60f4de352ced7a2ddb1dae7850cd850dc742783d5141c9c540be865f33cdadc0f3f8634fb86f1a4a98ffe00c3d51dc6e59d910916c2f59ff719115fdbf7fcf9c3b3b3dfcbe8300cbc84189e67915860a73452c16093629d5bff04514254bf974c27e98dc38f8e09dc5e16c88c79b6e4afc32ad740830220e7df2a94f690bf6818a5180c003a721f6b9dcc4a797e4d9122355bdaae8e96456c60b6868cb193d27d9880cffe96a4a6dba2953216cd919651bd4b40d9678e3e87e872089ba713717db6116c6d8e0648772e305473ff7598288efee07c89d1d04c6258fe07b7c393546d5e1c8a60cf8775d83fc75b295a30679d0b76cd2cf9d648d17dd2646765badfc3703e14421d35628aaf66fa32a36bab072822eee39ebccc5a6ff25a946d1ecdd2d6d4cc55b6f9d32d7b508e33d0484cda21e9f9da59048e99464e286f9e299f4151048725f2d1720b13692fbe273d044ec8339c0183c5945625db2b834cf97e71d298c8fce58b4e94a0d7a252a3b36bbc6f4b399fde277a01dc12820fe6e1de3fe87ffac6184a858ff1853f64938543da9fe3a613d8e8f6819671b1472ce8ec8a3d4a295335073ae6b3a3e2a892858f00028d74c612dac13c63f9664d2e48d5e19baf551f6c0edb87f924f4a1c3f8808ed442c486b162be6549ae42f57df0d40ab90a550d787db820b13e7b91ff1531aeffdfb2dddbfb7af96c1bb4a846031c4927d741a383c8ea9cddee424d92892b0667a35015b7b1fff76fcbe6f6e657808cf2397cb97e3889b1db710ea25af5c8213bb329f63ea7ecbad9d1bea66df7fff4cf773ab8ce6730e6f1ccdd38ab6e599adc975e7d2891e880ce41e55be3a113544879a9c6a5c5d8d8bc46423014fd1e4b5aba4c0d3f3a5f88cab4e4209a49d195f14f9d8db716fdb5c6e9c2db511d181ab3edc6da7a00905365c85568d494de3b9eaad16f74f2101fbe04515bf9409a1fcbe4dd986553ecef5a9e1b57f55e33546561ba596e4447f94dabccfc1f4abc3673b738a54039c65a3a5ab0691435ac9588eee38a0ccca8de8c35999926149140f963fd36c6cd4e5d21a781c63edb6c8c89efe3fa3d9d7a2b58be416206ea31a4764749524dbce479df305dcfe8c7120032a5d93b6c9ff4e1b3a32dcaf80e99d579a839828ec6b2c4b228edc312a5b7fdee787efc8a0e48de7508658518334cedb62d849b45439ec192c344876bd2c32fa170c68bc2f9f514185565caa502d79a22639f09739b85a1a6bb7cda4ce1906df0be1000dec475d58ab4054aec9815fc393a7b680dcdce7815cc5f9ec418dcac4331e8e357a62b4b45956b8f65064f234186c96c8ae94549d83727eefef308bfb9c2538a9a2cafb69f2b0fba96d01f56f17fd65cc4964bf9964347254da03384e208b76ccbb46119b8edcfc3546f344f6741f19b678d5392e2b74b22b682137e83c4423443f3544dbf1619c58ecfd30c214d640a421bb3605062c45874afadec6557f550a67081c3912416e979d139f68106fe3b84a3bfce129441840672d7de07472b406c064d62ec5cf703ffcac161a33529c7421a3d15aea2600e80c988e00cbebfe48566613e634546fd9503e1c52e86952e4c8a1c1b5065e87996e7fe30760bbd92bd92d2277d294a804f37f11e9e097027b68f8a1e24bbf56481b3aeaafd1e9db05d649545fc977ca4a917cb5386b12b3e5bdd4d01b40538f4224807c769101a10a505463969e30d80f0c930a37ed8d91be0b875520aa83db91673046854998e6092763e856ba579d657650864cfb912eebd7a586fd18cd06535389151a998e65c9a0afd2e57362b55af7766a251f56db33d10e2551da062ded34eba7c148f1f97eeeadad79c3632108f806863d00f8b6e467d3202e7548a7d849eb0aeb3255903159012c6760907311e75df99cbf0a9815e568c71811d8f9a69c89bfda1a275a4b24c169842555f09223eca15b463d3b4464593a479f405a5389d3c2d5f764afc95c2369c748512fcd738a0f8969a91a82387da3a64d77d67e5a65f0da8b26021406a9906f7490eee38b46b78b6a738b7406dc38114473c438d9c1f44108d459c650f7f7f14145b31a976b4fbbc04bf8615dfab109ac90977a2eef72d91e06a6e2251dac3c29d301cc4363ad80e0c26cd5dd46c4c2b650ec3873ea7bd4cab97e4e62336523f5e1abee6227f3e3e7f7209c1db286cd42abefbc4e4e185f68ee816754dec5d75182c65595a221ccc023533be956ad95ba8d55dbd69d456b0506038a1ebab82914d46e57b730aff2f9da2a24d3893054e7466b5580e7619ab5c0818e9ec4ff27cc56ad324f55f43983b3db3f10e990e8ca8f3a96043abd2873fa17561940517b70a212778dd5716f32d0ce3bcf415cd09609ec16b3038f8472ce30beafac2e329ebeaf3d51cce1798a764702adba525a13e62ed0f2f838197784e72138b0d4d22fdc82c2615b0a4594242b8844b95b701e661b0be4f275e5e1d8c38a48510a48b15cfa3b2233714dc782fd7fadbdf42cd8343341dd3563cd23b5edd347d03cee9cfc8b7f411f371d02cbe4e75ba7e5fe2409ddce2b10dc9b4932083ecd9e091530aee6138a0a47e171f90b1af290760b0d0712b491414d4050ad98302576c76db6aa795ba05e801e17cef971bff987930e7bc08e0dbd001342cd8464b8489ea6ad56224f568afb6924df75e97241d8bc9bf0fbf2917ecf4c1a7e9f9c046e2b110f677971e658d5ca1034c741116d41df5943d3fba91c11969cb1410ab53ddcf28be1cb2808fcfb78df26330c7673479f528187db541a37dfe11eda7c1b7e46a91dd698d2ce8688ae6d25f81ec3c19e44d403cf770d8eb5bc191723b6c52fc61554d6f80bf6baccf873f73e82fd0406df724eebbac37e14a468a823b0558a88ed2c858466083d7c44e3add8bbcef1ad57d23067d50f66632e5ded778decf23ed664da214d8916c8821a7705f127be772490ded84d9de80766b939b7c9c14e7241d9f5c93af695d5a78cdaca54aeb242f5cb7a89eae6fa5ffd653853261567e2ba6c681e983d505c78dd9654b25c74eedb07bf8425f5be00a0aed8b86281ab0fb2a8c594f5c11f646fa5bfddf892decfe3db5819c6b09c5ebbad225d8abb5f39a2600eed8a44d8d1dc7c62a2cfd4fee7954470c359313312a5e9819651bd537e785f78f6a972f6480f3f453a9eaf35e8cb716cf5dd0c8dea56c7bde0dfff9f8e6bf866b09484e8751fea1755b87f25e27508acca416abc7a932d78c159af4a79576892cfa3db881f645eb9bcf81b9749bd2123fe9a2f2561948af5ebf3f6e60667520b35f7f6c3716f7d9ea40a9cb2a00059e15e12b076c21ed29c0eb2063eff68f2cd84b39e18f47d2d13626343cfe80962380218a0b2d17ca10f0163da229adf8d64174ba7ef0fa471f2daa54379de9a01b8cfc7e4ea96efc51305b4b4f9238240948fd4a1f872849750cd0577a750bff02d1c519d84bf3ed7e8658a261513234f3e80c8897648db265ed46a2d592d69bda2c50dbe41dac2e4e0c2460257a553088cd174e28678167e99a2d7cafcd3fbfa890b61f5fd9156d1bd0a055b9a1090bff5d1ae90cf5af08dcfa48c381494e27f4dcc1866dcb9cb36245e48292c5398b53e62f36f0863db27f066f495843ea6c4dce7d0be586804547458844f681b1bac3ca399e74022454f55228db573047cdc3f9ce3bd0668bd00e9f0cac83987a6552cc8855ace4cf06c629caa8332c03f26bd91b89eee0472ca338aadfa6c6f48b475dba18a23c483560318b12b5b755bbdfe85afb30a89d8a13bf39c825eca166af053cb3d1756b9591a554a63cc7e760bbd117a83f9f00d111e70fc69681e0bfd6d726f8abf20aae0f20527438212f7721a8412ff49a9bcc723df19fe55e0ef5d2f4647a1577ef19f0f081bdb00c67883637d427def42017b1877f61d2d1cde5f820533de66210ce3207c865bd4f80f9a35daed6bfed2acd6cb4c26870046775646850cb6bbc8768346945810d7ea2e4147a27c20fe055aae45baf74a8b37f0776d3ed9be60a0df53b3df6ca6197186cbce735b578427eba81d0cc20b435a38e502bb0770a0101a3ee61d8d00ff6c2c9d08a388d587acc924cbf5cdca4d0545859ce959381f753a0db961c28808d6808076db5bd427e78f07460a615dc60a6bfbc94d2726637d1abf034240ab37881e5216a9fcd7d486faeca374704944f8d54eac47339cb1499f802774d51b8d854d35decf4318319443e4465ab3757d96fd31418defe35d9d3ab4952d0ea3603847401b9c9d1848a17347d850fd184a4a47db2ce57db1b7ee794e2de2d79e7005d33d5cc0d30e06f5e003322ae1ad0a7de00fed410e06a37babf4c50f410165c8ec8a848a3afb18bb2a5c8b2faffc260bf2079f75ae504cecb27ec7dd9af283f169eca6d95a63f101714c32c0cc5365a09c36627041f3cca2f2289fb6d4c10e386fc90aa82fd89f25ad64c24993ddb022dd44acf04b35b6eb20bd0c1ea22d84dfad9d4b68be8c30c83e9b37c27aeb5d329b77337f4221f81b267d166db311f614ff373c059dfd21066e9e9a851749bc6fd986dfaf43437e879e380e6a6af96388a91cda70d5ad24ae438057c438dba1c1d0d8e890b2dc8121fa135fb38a082d871fe474c2a019133656fc089d0131075accd6bc11094eb3339c42c064e983d2cc534cce8cbee11d38420f916c6d9f2327757618eb27d2c4df1790688232ab554a1c94880be5709f31a06339a5a528634dc5e0da1343b0d093a9d46298f6dec46f3652c5a4573652106b012ccdc1d4ad92ac8d432e3ac816538a7d552be9376ba0e68ed8ea5c0c2826420e24704a98b582ae35cda69f0712e27d37f56207dfe67c46e85a4c5d9f374242610bc857cef67c526117080fe3a483f3c74273dd6c19791a0f13a74da7f0117dbaeaacc0bec31148fa102a0e62dca6e43c8a27a561100c37ab1c827042020ee65f3b9fc0b4e9c3e0d80dbb1bb0ee9e8b9f367125ad3f3a4d54a6749ae45c9d003b9949c9eb5def02d6593eaf096b1d8245141ba3602e11a94c7af5cc391d86e68fe5a8ce514695c38cb3643daf192c0eda21cc1582a1f382634a796035abfbeb663a229e8341aff8c717a424041b9507a8b93a26ced0db49f22bbb5052a07cfafb006c30b2fc6aaf8dbff077b1938bef514045397828353a427ce2c7742a455384e4abdc3f50c8705cea9cb540205e50c2939c605318ba1d55a54f36c1218e700cb060c88ca800711d8004308f9c1befd19a372ead87391bedb7f8caec263ffef5aeddf92c61c1013c5a79e0bef57f8211a20d355692ee472497d17c5adca46e85097ac60540bc28f2be011fd4861b08bc354293569fc6a394ac07a40e064bca8a8e6e76fb3bcaa22df1e16f25d64a86290940229736e81a10760fc14a081b0cf80f62448784d4f6f7eb0dc9efadd726f615a41d3b3b25855ac83d92be1d9b87c9a9b6c620a3d4e08e66da047e01b68a9fb50adb26c33eed3eddeae41cf9208a9dc74f5262574910bb980c93144e76bab85eb4ba07285c7fe7c3ec4f54910d610d08b9dd6589b4ac7e13715574effcdaa0d8e0389b1a6cd1094248d7d6197b8732585c7e086c1b3b806ec33719b63cfea01464b0ca48ce1247175f0c7ddc027052c617dd86952ce9a1af48e10bc6e96aeb612e93ede0204ecd53329fcb9bb86215bccfaf50a5d9a08cea92855b5c09b5ae5bd00ef85d92a94854d5228a35f65bfceff00d44b2a806b1a7ec80c7ff9d9cd2944f56cd2631d2aca77efa37e0fe19fc13196e25d23e68bb91de56d86434afa82cdde0a9246f2f1f11b0523df6b4ff4179612db4a082d1faaa5fe622bae776bd435973aa896084bcb5391b693d59c0ad6ee9c5b6c768c1bb0e75a5e435833b969259f70884796b52ef677ff17c00895a9ac78b2f4be896fd3be55fa966ab3db6bb95db8bee9257972b333a91ed4294d5d9fc7cb640d03f8de73b73e61e2a6f56bbc7c3465b99d3cf441ded90fe263056436a12615de0835de31c33fd42b0870dd6e639cb1fca999969a61a585a439b75551a1b0b2c4ff4aa98aefef958cb83299df112665b2a4563d45e4b9cd5224c06aa05069bb82c452550b7b693c5e2e5c5cd4de315d90547b52b5c26b6b03db49009508b9036eccd8bce04ea9d518c0194542da7b06521de642b6a7ff95de33ce1ae2347933277cb0ff8be1b0612d56295856d68ce1567b60fee79591b62009c2df8c14c645a02eee00a70b4954b08d1cfe0d59a30491e4727c4bf43fedeccbb5188d5cd40973a6efe6b8002c19d495ac835ff85298c3686134dfef518cefaea5b3fd5d2fa387e3d79d1ade308933524d97f2e2a65c11abcba34bc4e899d092c642dd91f60b0b97c853eb812f78ec8bb5ce6897aa20db0e64cb9fbd6b50761ed87d5eaceb8cb5af70fd149cb7298a3b4120360cda4bee3113b11d05479e17ade7bcc899644561b83cd0602b62d4bf35ea6909ca2056030ea6de168bc5a81efc7a7de8067fabf00293c89bd87827f3c412eac4babd4f8c5bd6dfd89fc642dbc24ce40f57450585d90a24cbe1eac296f984c606af9757d30f16c5a90dd079059e2036a729cfef04307be770870bba54bbd88641dc4c24691008a6d4c5850a10f9b65d4dd1c9d7f28f1259e02d621609e5e99664d58d80e375f91ac672e0e84adf9467885e3f8393386785a2a4e8558cf526c514c022c8ebf7ffbe388194bad5de26070620e58a64ad93b8ea4570e74d1f48c974c84f6e9d5c9bb57172fb5a6267c1136cbab4d6e22c01081be08aafbec06db97d152c773405d9228d897957c74e2404b9391528a1c976cb589b40888b8fbc91e7bfe4fd0bf201afda25ca746265727934be6394ae1f611b314d10bca7004db2a18dd3aeecd7cc094a5cd5274b4401b4efa63d004de00b594dec338e27b7aa5fdb73c74bab20e761e7a1b11b55bf001bd65b88aaf7adb3a73716e7b2ea0330409c21db2a17f168ec67993caee2a4bcb84d19d59fb902ec6d2fd979d016c040e3ec14bcb5388e7164c655467387b526ba675f6945d41ad2d40d344e04620cc7368ffc52e9dfbbba86efa3a2b27afd69f2a0e6e6d2b51deb4e3afe7a612dbf5b0f476854d882ee6a927e2d94e3d9f98357323c48d23fff580caf29b3696f8b33a4b2095f276c6acfce8986ed37bb334382f167a9a55dd346860d913c976e2a4113b307f39039aaf0037f78f40f103b9633c13d1efeea8d0af7c2c335d54b12fcdb6426bc62aaa624fe0f1c8c82572bc9ca913caa65ea687fdf3c8226065d83e261a8c55efcbdd9db102f946adc20242bcef11c48b60b6b897f2ddcda7d57f61c6d3af835552217e78f1b7c27195e5f986a2e71d1a082c88760e022d5844a35a0aa5c353777f2935d537e5ac06e86cf90eb03f980272d18b9cc9e2137d769a9ca290e677effc4b71b3a96abc8c1886fd643de8abc230a973954244edf26a8a7c0ded356db9f0a918ca47454db2c8eae0989a9b4cdbffff3504823e39a9621c6ba2211bb179dbc0611f749910b7e8ca15d77327632faf15d3a42d916ba415684102ff06693515b21e11cc2b003b9a8e448eb16b7392929ce6e9cb3df07b134d008a7da5e42ab3c05b500712e389569560b66465ab17308c9bef403f92269f431610e82d30eaa2a78dc144ffe15fcb916fc9012118654140f36afc4197a5cc0a80b4b78451fe6510cadce451b5b8cbb73d6b2cf4f571b49f8d8746d8fb9743182da2b58538707804a5826ccaad81869aea73a05062c6bc173c8add7ae4c0c99b6b0de7df4774bb2754c1a9347b62709c1923b2efca6beace53e0933cdb1771b9454784f221a04f4c13b2a4245ee7470915aea09f953dd955d25fd09b3c3779ac231711532dd188d18c7dc43ff226c143986227c10e969f9deb53e56bbc7c66fea2e266361287f80c39239a2841db3ed4cfee1fdbda1562cb6bc48a5100491f7873a560f570dc95a9a3c4ef3323e9f2a4f35c99dac2b6a921390da4cbaddf7eab559a5bc9acf96508a44ac5512e8bbb1b448a0904ef7c32467c278af6b028e8af8d21cf244d31bad9379e97c04784674280bd051a6204e4836e9e89047eedf985386a7c369cba39096e61dce18a9b290f693e753e38e51f4658fb57a0932e52435a3960a00cf0cff888b668c975f2545c9c21841b45be128338fb030473a9224ffb31c2e4751463ef068641596b4fbb12122b9cb700d6db5539d6935bcfc4bdf3966d37bedd8d884b784bd2d26c4426c36b6c30e7db1314ff9c3ba5ed1dc6728b98d371079b75bf8bd989a5d72303ce02191557e886ec4f7b0e93d7ad24cb3693ea0264fb5f0fcfbb50c295d5984e1838a7831688ab88bb35845d101842df07d614e66ec26f8fece2fb619915aa05ad92e843e049eea4390a5cd19e00ab2545bcaed1f84c8e8367be99a2197e5248741ff5f041520ad7bfbf347fc44589a058e05205dc391618d13be9a79e25e5d7a9eafc73318b03817695c97268a8beaa1827d808f208b3f8242ce775e686b87fac5eae41c07f738cf4946528627fce1b9a0622b0b247004a528bc2c935c557201c4917436a755ccad51f371ceb7ddd852358c9e884022d71d8b14e2dbfd9b5a3eedb0fa9b6adcdf930ebd24f70cb0d7622d9ccca23b6eb123523f1d8072009694c114d888e02ef1b3cefe68ba54ed2f59a0ef395926e67c855791f4cfb4a11c999ea8c7e1b5341215d7e51b174da819952a26a292e5d1962485592d9a8ff93b18420925aa45bae414eaa194d2880c5eec174af4944a78717643032ab4aaccc88f1cf5608fb96226e11db0b9f1c3f262275ee36a8dbb42cf0538a87778a75ff5b27384335dba8d4fff023abb3f48fb7f81677f240b6c7d62ed53ab9b434d8389e654536f86b012bac51ac342cd61e0612cad77e88325b6726232377bf6c5499ac75707d4a294f3bedf9d9ef56ce3f264cc2101b3ce9ffb8628c7b95775ea7607a230dbe1e84f693ccd92e79c33bbf23bfa6bce3aa7697ffa195db7e42a9ffdf4fc121a7bb9acebff6334f522ff96b5ecc2f0cee12e615ccfa3e48e6c82401c2f09e4b41316d716a248a885dbee984d2825aed46968bc8309479209536e1feae7353d5b4a256d907c77051939e31ba24898e52a55bca1125a1bcdcf85e40d68859f3ec209b01f4e84c0aa36270688acc983966712775092e9496d1d945cfb6547993103bca5e2dffc48e596be4137cbe8c3c801f249d9e49d8e4a4f3854a1cf642afb3bad97ad9f2b04e76aedc469dc3029a7766bc666e04ebc1a2417cd3f32e08c5edb753bcce86b420d3dfb814a131ef9690767e715dbfa38a0ca59cb698dbbae0f4328ecbeb84721772385b003b9b06c115a18865ea9327c281791d8e1c063b295a90828ab5b8215ec3eac4de34bba2ef08675e50bd1a2965a7a018186292470fd65c9115c06556412c0b5958faeece0055d7d28c5f2d5a8559310d84e3f33f25b0fa1edd27f77abf5ec488d4b59379729e74ed625ac0a661f770ef0564671f6201a13a7673cf159dde0cc7b4bbfca5b047c8b5c66743d9b6207fe65fc64426f39ddee4b798c19327300256a195a2ea9dbe29b8a943555a47df250d10ab105040229dc8daec09fcd395c30ab090d32f22b5738145ca4b7f3e036c558f8058b9009dac743c665ee17537bfd4fbfd2271a137502125f98688dbd43b31d32b691a0a311a6e7f7f9bece964899adc0e6bef98a5817801ee73d8d031125ca7869caf84afe4a16e4bd3d07f91bbde21bdd0dde73793fbf72839f9fb0c8ff0d4dba0e0ed45d8e131583afa9401a654c1b5ad5076f0ec91294e3c1856edb62156c64818d6f2389450f9a25f00d65850f0a5cc92989002922b3ef4696819a20195c1612d47ceb7fb4f1416eea30d5a9900849bbeeb4b9357b21fbb73a07b1ddd1083870752c27f890a63b1afd4f3949fcf032d37215582e0c0a8a596f8416f6fb6f38d0b6f22989aaa362225fde52fac24b03a3c61810c8abb9e56f47c454bfd75d340713ca8235f93a6d729d620b86155481c26e62c72a8f77c12968063b21ac390869ba454b7c177b3660150d9c076b0c64cfe285321dd4ed710c8a7d58c741e21e850d7456ddc29f33e17b9ea1e80063e2201091ff9ffb2179ebfd1dd85e649a8f562491693e5b12f721589e568c5466733ad866d7de67fd682b20bc976d67055dbc4889e87a6afae2fd86e16deaa989b00d8fe93fade0655e4eeb7a94509e33e716794ba06a185e6db7b660472f86f98b677df5a8bc14e6968e668a06d9e2bee2b7eaeb98d7b3d2973bea5e79b436004d795f2b2e5811e6e2992f36c6d011f7666a7f96192e2ebd7c2dfbdfe7494a7a044ae58ad7b9cd73f656f943d4678b1ee5b85651482d9e2214f1146fe4d4135b6b0135dd62fc9e9bdafb07a21f2eb7b61abf3b8f0f82be0892ee353510c029415d6966efdf43c25001a3b565e2c57cdc5046329233016c660052b15ffa93e71a61b7069da9f6d9e5bdfaf01930ecc8b47aa2f19dc1282aa4f69cb0d6b455ecdaf1ab95aa85c7651524a1b85d8fce0de9044763fa42ac9dac907aae43d9f59b3c79590870f5e0519a8f3ca5d2b8e5bf33685226c65d12128d0768fa67b82f9c982e71475301b967585667605bd5b6d7fcd05f0e99cdd5f4a58dee38c3adb559c94bc8af1209f4d814671325aad5ed53066ec6a0f6dd0e576b505ddf89d16c821f4ae490df6244b9bed620481fbd3cb328380e9890d06571b5c12cbceb82c7896619c1af48d36380479e80acf7f94c7e1f45ca6359d9f11ba18a766daa840327f982b0c6f4271b8b0b0b634dcb24d9bb65f738a5669ab35400ca37e7ffa52dd5e52a26002d7fcb99caa39fb85bc1b678229d02b5a3498dbe5a8065f1d431525423e17f7d3706144e3084ba8eb2da304725502f1c54eaf51f7e4b35a7479e2e25d5345ed48138feb4ec70a905909495bcf228f51a664428e29ed35ef781360e12a07bed8c9be991b55c26c166290c42f0e016502195833993088c8427e0b838a30ebf93a100a4d1a2c2a301903722c90144ef6c585ca856675ea9644d67237faa0542d406b426e7af0e754e7455080b8faa85d119b93463b26b6fedd58b2800b84890dd1daa0bb774373dfe97aeab34412adfd373bdbe566e8438d200480633a50e4a234003e1296e22039393fd56a73ebcd262a8f25202ba75d8c85f82b9a40ca61d993c163f387b1c035b95da25bab5a9a85ab08bd05959063d295cc4c798cc29a1a0d14aa52e62e20630e159232055088ba0b567a9f82f076e43b14019ec8845fe7f33c427ad493986894afa2d7fd546d90795e4af5cc8f34e62ee299d2d280aa2438cdb379e3d17129cbae3fa6c6ec9b0946481dc3cd122c41bf758b2dd56d26241786a11bfae5bcc4eb075d2985b963c07e75035759d861d4184438e2a0237ce0f87e5965bef17ee65bd25e06160129ebb193c413ca1fde87ca0421c4ddf1391a8be46a68eba679e5f06ae2f7b40cd80d2a914b1b9f8328e6d2b290fdfe39b2b9916c830afabd99b26c58bb187465eab467b7728a1df0e56d6582a1f20cb7d6399fc6d9f91c0677aecc8cde0c9bd501f0c237f50273ab7bf522f10ae259418269bcf614eecdfff7733f032e41b78209a956d469e820e2045d20cc24b5d03c0cc6b661c297d509c294eb49844664b468925d83a772c052cf1041e1bd59f1f11f54a8760b1853fec82619cb992b48f54c31f153f9d42ed5c69cbe9102750b1565f6f7105fbd13b8cfa43c63b96d8a22398298d9d0cbc39144dafc529a0a5cbfd844e539166c6bacecc6a630fe045650e0a46d9cab59f7e630c635c43ea4f3e1ad99fd2a324df93149f743b1dda70bc3e424447f8bc0ef76c984a30a9c61622fbe4808730cca382b505c72545ae85120a92c65c7629bf02548f18127bd6f552cfb2d37f898d50a778ae2290ac9ebcd25d93e04de72e77a1bdc59dac639979ed5938edb939cc5d079d3108fe5ca9eaef3b3acb84417a34fae04f03f99e1cd0d7b6b3edacaf299e0a72cb458332912e5d47e97521a22ceed8276cc9c7501415352f2ca9beb74ae2fb7f800c4a1aa6c39560dbcb76ef6d4b275ff10f3c2b59def51d89dacec6e1f08c406e7910a1e6141552745d8a4bc13b7b7722df4e6504f344e4f077ab14c8284f674a96a7d15424de8c4abd985685198ad509624901a46415ee61639a862f523dba52727563983bf4f4fb488d414ae2ad32be454e6341f7a1c6b75ed46937fb337a2f1bf23848a4e2bd1f468db0e71b640d33bbce3734e2e23c8e1e05fe6d3b705b8aeb2d2e75d73357e7336e6d7c30cfa976eb12aafb781698b493cfcf08e1190e5cdb4837502dfa6840f23beac16635a27f08b7ea973842dc220745e3ddd9b656323cf8ce05974be089e7b2935d1f8107ec862a061e0bad1ea37070ae6721b2b6f09106b52856bf0b2e9ec7f319abc0115477300b805060eaa084cde35d9cdea4cd06d0fc45f6f4c7b36b1fa431e1a46012686181c360adb4d051cd0cad11ee558e4fc86b7c060bbc18939610169804cca3b2a82f20c9a561a1eb54f4d6dffa1443b3f427313229a686fcb9095c465ac4009ac532c17aa0d8a98a3be10525ff2b06506db63b61f6b7b50c4d27b85c43439229cb63227fb9a884c0cfa05ccf5c5c7fa4e049237921038e5ec6fa345d034ca456a20e448b50bdcbd84f614d7256e72ddc10614732d9f5d921d0110d4ffefb778086f82ef886222645715c01cd9426bb5a51b50d3555e71baacac8d2f1402b570d86b6823cc4d999fedd511ba5a3b4d7880f796f5c4eb4d84846edcffdf69c4b8d0654080034be931ab1d15ef8732565f345e67f8c806be9e68b30c7d2f3bf5b7d3d4983474679576efb56068fd84eee63071dc6042d0aa6f0136a81312cff6e80b8c13a042d87c9ff4232d2a70a21b0b7f85184779948fb100daad0ff3ca23ba5d532f587604bc52efe431ace250fb5e0d44c46788f76bde7dc1bf3a1e13de01a494260fb193571f61b876ce9aa07c5aae8365105da67ca5f96b87f277db40a889bfc1efad9f342627b6b823dfcfc2b9495b9ce08cd70cc8985c9466595c6ce12a65bf8e4e2bba55671009760e4fd9848d06ccdafbc72b0e8aa3ad01856338e091b1de04fbb9a741946ef67250ede9712a595705e81f820ed35bd615d0b699407fce8d32eb0dbba9ab7456b158a6e67e6b034e9d9f86298f50ebab60da8c5476222c8c609507c6c5a7510045f4b462e7fa26412fa8225dc885014d428436712a6b9ea148dedb008eca4c5bf0aab1ad065c208cbd58612f3a8c8bba1f3958c64ecbfbe39411f7958855c7fe6e1e5a7e59e69cb66e6ecb7e80c7a0f345c7d8572de8856c2114244bbb92b06e8af9a29992b856cd00fa0cbefc71c10ef167d33904a3d1fb690f3a5b37f91ab6f6f4d63697f176037d415a8b5649a62ed083b1a4c4c58e7ef90961aa6e283f42883e738158bb5bc623bbfd8f8c3902255d60100ac29293521c7d3dbfb4ee9137f5133d73103087a031f98b6b41dd38484d63e1e2d3254ed799e15c51b3b2135e179636c2d174fff9f9e9c14745ce949404303e2691e51492e530a48eb0b799655618970c0e3db01f3764dfc9caa8b004e33873c87a9eb1d55b22671c977b87365031f7e0f8a91b3d7d92f7ac7712a1824d4a483cb5fc271d8931ffc355796c0abcb80bafffa6b411d2d4d7a713c68c3996157e200e8c9637240727896c63fb390bb6cce7f34f7a1dbc7b2b4a1e29baac08d4359855fc861f07add7dcbb8d41efc46886ec7e4d6b3235ff1a94b2a4d6e52662f4f2abbdbae36d1e3f0879ee99d0822dc73cf253eac24549eaf868cbef95b4884b14581f139be2e4b579c92088d01b15384844979d5207fd30cea2060a5101ed0a4969b4dc48667a13ca88f2dd535eb3e4b767d649dcb63ac26a0c85a29eff545c5df710958b797b4a6e38f49866948d1410563f1f3eaf4cbbc02930760a2fd3af758f88e0e67c1169af21bc041f0bfa5075197a5f9552ed435d2fd74d8470ea9c75adf1e274807a0aef4b9ea74baf7354b698c1afeaad5f2fb5923e5380643b05ce59b4b6d2f40ebb342e29563df80614283037fce56a351e9132150711d8610f6e4927cefb164d7658c9b81026e66edb235ee1354c7eea2c49c01e0bdda9bb1fd554b6f055385083148a4e3a18e62038bfd7aad82e3b99acd0b3d73791af61ca8aa2db1a6fc8c6407a71be3673fc5ad098d97379722a17259ff721dc04186ff2414012811bc1096447ef01e9b35775c77a7412ea6dcc6687ff059a3e1d9d6ad5f91098abffcd28ea2d9f824bdad8a646e8b95247aae493dd59fff01a437f19b4fe563e3afbb6dff3d2779fb74347b7db32da73fc20a37b63bad5ee555d8f6e4d8d6fe13fa6ccce0aa2f0e9a49b294449ec6d9b79052341cbbacfd31b15ee1c63c5c5b4eb68dbbec184c616f2c44f9b71174975b290f4abb6f4ac47c8d598f231a940f9a331cd922888ccadad3aa64bd04f2000d20275666864f7392623e1f01feade2547e709e450dc008afe55a1b9c9aab6b41c728abf1489a34f09a419d0b84243aab362f115c269183b8f1776a81cba64a82ee034cb63a5b8849b6f6330d07eb7a24b750e6331f2820313c44bdfc9c0c6deef0cc041145296d033ce2627be170f3148b7687d985058d4a58cf9381ea4f53b513635ae4f3be00bb7d6739eb3d9cdd2935097820af060ea992ed95e7bd34ba9d3414ec14c272ffbd29bc3796771e0ae245d80c214bc63de52bc294ed373a6181c8976b0a76bc788cadcb42db0ac4d012c23646b509cbed0c63668cb0082980cd29fbc0328e59c76068340bbd15a2f361d9cde1fc4e364b1e50779e3778c855043759497fbde25ba3adc8626068433dcbec9f66daf7e4b18f8e948de8fefbb73b417760e577e43073973d3f8f2537c41fe5f502752e3424c9b719790f6ecb939b4aa18ede8ecccf24a9f19339f3a2e881d93091b94edc31a8ad9c775ea817dae2945fc5e6dd3ea6bb41f5bff0baba52e805bafdd4da9334fcb4fa3567eafd6be37fdf0eff06a30b73debe0869fa3f73a0118b95ba7f6c2d0a60feef24a32b3801b829f52e3ffdbe3c2d357dfea36a49caa5087aa2291c3a0b49e8ee70dca4e0b8b47faffc2a64d537eff8a72f8fdd7bd75329948628a48dac9c64398c33bfee15877ad5f5caa5093bab18ab1c79882411cc22e6a76408148d74b7479b6153d138f8c4f02c78ed1d543098ba0d9599091364170808a3086dc2012a5e2554679fd9f78ac7b6f07c883ee8756eebace05f4bed7df1eed90db6558702a798d5d2dfc15af8a22a74caf4eef91710c4d1459d7fdb3dee6695bdafc1249144c2c5a0644ce9602628f0953a0a3c4bda4a9c355445bbb9c3bf6be52779701b5b59e22e9feebdeb84ce3cc74c6cf73d1e54fd248b89f841970c82b0345fe2b081731f4eb0aaf3db044469274aa27920635c9e8e850bf5a91ca32059ba4d0e32200e90e5dd9ca4d0c83218474a717755e100d20b7ede6ef9f0a057c8e890ae140089ded905713896c845ec23b94e3f5c2d82146b63eb3674ca63b3d5da677eaebc29553b1cea0263bcae045f14e3bbde81481ce6446c3772540d01194588e410cf9676fcc05d32997ea28916a590468ddb5c7ad9bb71cac1220823802e9c6dbfa85b26b37f340e6811db48b461e849b204ecca9f4b5e608e257cf51a01bf16cbaf6961265a6b85e6061562437b30b4a7c1cb7572626b76056cda42cfdd01681cf69486aad4160d818392031f3ae339988aeffe716023dd33d155c8e601e75ef634142f8ed9d9ced47397360cb6306836a2f1e637cce54ed563644aa939ea28fcec0697196f6e2752d8edbb10a67a8753e4901b94a6665610f742b974cff6ad438ae995e2692375403a60f898fcd74d805a2ef857a12d85584f6e650523edea3e13222777fb5936fd7643f1be449261218051d650d716faf0cb2c44e018221c86387882a03b0678900feb58c4bdaaaba122232ed485d037c942014411dedfb7cc9298c4c0903494f0132fab1102507aacf5f3467f325f4bae013ab1af10df388b7b92270d2a80408f92ef594c9f6d739946b2770c9a9a420a8d66aada39d4b827345acba6949bec092e8a0956651a5774b577f75fbfaef2abc1d8a41faae25aa7fe480ed4d2cd70171c66dd465a25924a7dfc3d2e74990e517426017d35228632629875dc426d0c0d5a6bd4b43193a0a8a01ef4ddbeb08dec86acaf720020f0f514eb2549116ab494548835dadd18407142607487931962e3b00ae5d28b5e772aecc4eb8be8c5b16e992d0c6d51a172788e69db3370527fb9e4a2de4471cfcd4dc20cd44e0e1490586bd0b439d1ca508cd881a8bd8ea830e9521bb7abce5cf3d57a8f54ee24015c73396879d24468acd50318eef488c1bfde86e14ae3326380e9297d04e055c931c30cf53de6cd0183bad74012e97d136b5200a22c85fa32c0e6edeae407c0be1ba2f7f63c108e4f40aca22e1f7a016aac7af8d2a9a76f909bc3374e393ea3c6404074f1d332ebc2d08b6ebda3936166cfd0b728dfc8ab3553901605f087e8d9628b68ef5fafd2fa838d15ea23b316fad761fe1fdd572f4e0aa799cf9ac35486ad1737fc290d7450bfc6b959199c87efb8e58576dc8d5efa20528452f7cce96fd4e3ddab63e1ab4e80cf7ccf835ba25fda1692b0828997cf5ef35c930759b8c88112a591330ae032af21d8b509fd2e3af003d99536de6155edf55881ba0cabdc14f348c6d18e5e704120a29ca8932ac42056caaf84094c892215c66a2490a188b0f3db67b4b6682d2cf09eb3f577eb157bc561ce9380675c1bc2588447a088be9956d616cc29f4c4268d7753eedd4997bd353e85a947f83226b236666c61fa04e6c4ea78d02bd4453dc4147458248a8c6c35acaabe45d964fddfab8c0a7458f2791840b69c446df132fea635b37f508638d9afda23c64abed18937d6408e3fb857f7a1fd9be74dc0b4031758b7e277edb42ddff235da5c0125f60509de9baa953d1a13fe45ec06db5b2537c36746407d5eb90b97228deb627409fb4cf9a619619458ed6eabe966228071cf00b2b3eac5f1c84eafbc1b2f09b3f628ad1a0b9704aed3648712c7cba6dae18abd9eb083a8118009e660a236949494ed9af3b483fc53dbd486a3139630f8aade4d12f34ee03de8ce2beaf23f91a721f868a770a9dca565b62b25f7e9b97b1740261d7b01761978fb30b684c307408128d0a38830c74734813cc9cdd1f030996061dc76b94b01cdf2edb9b037ee313b906d0937bcf9e000020109c186b7eef9b23eea916d93f290991da6ab02b25bc8dc3fa4ab1f3eea4ae1c991ef1ba649d62f9d5e925f55c1c6a6bf1bf0ceb400f6192a74a8d379cca02f6541f6088716cc2a855f65f8ec9ef6d496f00a7ac9f3690a78c5f6921f4f7ecda832ec18d8bc060da041fd5589f0f4d0aa83fb21b991914b53d9364ab9561a6eedd923134c5913f5bd38a3bdae753d01c5219a69c18b85194c1eccd566f3bdc59031430b4ab0268f4e989e17b4be1ce6f779b6e81282acced7f8e7de56bf7e2d73f684a66cf03ef4e7a3539346f321e01322e0e04f6e262acc1bf586508d76a77bf434cc0245cb01c5ef3b95e4e8929f2f2b0bbc13de4affe870e5762d67d2b71163b9278d38c36645515a1a6189dc5c28c6828e69fdc32f4a9124565adc52f8a251bb9a44e75796685f0ccf6689393f1cf8dbd1527110b9f6cd30a35aa017a51f24403e9201a9eb56835b31ed6e0904ee5edad24302762d55c81c664279d0a27e1fc6d9969e278dd7982f39c6e7910ec50579d8a416af27b39a7b3b3c7eada73706b6c7a1de9009db1e052b157024858d4989de52fddc27c09079c404a6a841c7c4bb16bc5daa3bf4f7086cd248e20574cd99da1d0889cf1070239f6ea5026e312ed8571f762abdd7babb6847be98ca6e7f17e64b76bea19b501ea8de1d0d5777c83df1bb527614df927ee196be6fc8b2acda54132f87433d05526dce1b9c9625a94afeb1d11fd48ab0ab3a31c064753b2692b3234c55b8371448674ce5b80cc76131bdd9364d16fa491cc060f8cb624975bee51b74233dac3f41c5791870f36ffc224b3cae7419742b3e26bfe151c9dd1f2f1f10055634259e43560b1ad55930080cf89a9e1547e4d71af5bc12377840fd33410a0fa70b0e43a35fcbd39499a5b536cbe5cb59985839f2f31d64c0567c9af437851ea7243677c7ff18c3b1ab6b0364eac449c81f81e14a1e786715cce1ae9f50f4d69c8f53812e126357437aa2fa2d75113e747a35da9925ba2d07ef82a06425395dcdd77cfef167b1a0526e70fbc40e5c73510eef05e404a15d7954b61869a82f927737adca4d8e1c4e2e827e195ac065bb98464d10fbb5429a67b097a82c0b211d0c494779eb4a52fccf117988c816a521667291ee37aa8339c142867d0cbc4f466cb28d5df46b14d42c7c9218505ec6edfa8421f0d442a24a9536a525d97770a1395627232c88b9788b69ffc272a727764dba085f4927acec48af5b64b0792b88804ea3f695d1a8463934784647d059c2d00d72b0480207f5d13cd4168d279d644753ef3d662be1e13882bad3d225a4fd9d84344547e0e9e52fd57f283f36d6cbcc36e1e0424a7514c49707ca3b5183b9698741baa624de349d3e8e97bd235b687ed0af2114c409fdba4ba483e72c2300efeb36c9ebcc46e1320b79890413a6b4f2067705e89a588d5ad05a32d5cde936bad8cfb89f83d45af8e37b6ff188a1856fa8b84caafcae58d4b3f6cbc785e9d07d616f5dbfd610b899e6133bcf452f65c768d7fbb2a76db2a195ca0611e36fd15a959da9d9bfd63c3e4685a2847ba4bc97aa9c736da28c1cac0e29660fbb7a1ec7bb81ce3f8ed5303935577596ec47cf31b1b2199aba1306a533ee56b11c3ca3fba76bece82d11068f5ad4007014d784b8772a91ec8ea0d926eaf65b8fa09b42145e4d53ebb762cf88bb8c84a35503043db1f88208bce55b7902a14a6fecb3994bc03c53ad33f306d00ed2b6144ff11ce46475f61e24275a13a9559742685292fc9df39c2f72c3a4cce33d593fe5b8835e30db39ae2ec1a8334cfbb1f1127bc553494f3213f727853fe627dd0b41e5da3d7acc5a264c9f712b838072861de4addacbd4e63cf5461f53cb3118e401fa8df0c4cc2e74ffc4d233de5695877377aa46ed2670387f9c8b9c22bd08fa24ea7b6ee2c2ebb42dc4cce8c6f047979fd5d035839106bd2d77dac65a73aaf2af9f71e0ff7b50947a4a81c3c249c5a68bce8fc3eb8295f5a87dbae2c6bdda66017574cc5f275d170693c12d7a5e025174ea211f280c7c6eb3256f94564a4decc5bcdc9020da9bd5f6f2ec08e0af6a2e07e3cf8dc764ddca8f39179a008f9098f43940389c0cf9e2d94a1fc2b6c2ac330c290383b66581a3dc5a436494412230e2a52cf0c51a2cec0797af4d79a0966d2a5d28b8100d45314c7cdcbac4dc93736e2db2ac68c3af47ed65fea35f5602ac50d6616e48fe1aa5ef655aa8c21fbf3c8bf0bdc251ab4afd48579499cf76d2ed0a1f0a4450fe9b4f28334a25ad8e0a5ee184448341db270635a2902c0c93fe9f95770648f87727fab2d3243e6fefbd7523723c21f33f7f47108f67a15ec8af01d04fe9345af89313ac8a75ad63cd6627b3b6686cac27ce0931fcf00846326d3f47d0e4fd03b26f92dd7050243af84c6d9940f32a8dc69fee9cdcc6097371581774528d178bfbd0ae21f018bb2703f7f37675d71b45b6e5a6e1b2f306772c7a18ede66b2656cfb6d5274a984461c5beb1fdae1cecee73e0eb8f1af1fd168a1ecfbfce60fdb54af9777311647d3bd9752cb9b7e0a88ddb977cc841f6b523b941705bffd515da2fca96feae9451121e1a1f6752327811b4e321c168961a926a0cd677a6c1ebc764c52f84dbcbb245379a71e6b2bba2d72604fb2564afdb4f5360df2ba078e73f7491ea18288bb82f0baab4ce003d38513dca94c121a8acf9ac7484f60051bf650b10aa6279da04f546a79316dad6d8da68508de41affbc29b38232d68d147b157e1ee371853ea775d78deecbcf246dd7fd42c69be328448e288240aa4143830941e6daf959fff77170fc8dc4e427d7ceb3b867e2a0be3a59d1f58e02cb2566596ebd2e67d4be252c0949a35a1201e6a8269b35a38bfc9ae3f7c7a4310eb03c644597471e295f6f6c5ea586bcc57b161c569ff98a7190c28fe736dbeda033d9eca6049bfd5f3944d36c5365135e68ea0e28ce036436b8cf0f73d16a0e4ce2290999c4db19d4a3c4d1f8e9d1c8b2c6e0f9e39c03f14cb013366f836bf990207989c6e47b8cb6c85c7608a9687f8ac0584fb595bb034072f45e34b2192820a875a7fd71221789cc737867def9e62174e98d2c9051da2ec3d7541f69f2be617a2c20b0b8f650a4446993255aec70a98ef8e8be793da44792f14713967897eea25e577415e30cb3fd5a4e15f3c90dc6b6996241ae186e52a70f15f355b54117cadcc5845531aa36126dc34e1b288911c700c973e0cf9929a1bc9f2951c5735d97d2bf3ea7220b01518ed6ab845ecd96d810497392f9763744547522280516f8e32b93a31a65ffbaf3f2904bd5bd54561dd22e461e53850119e347d0efae9a51bd7d19dbb1880a5fa5bf03116c3852c68ad8fb534ea6699a5aeb1027befa9788371d1caf01d690bdd89e292535afa74e54e532e78599a32d3569d5a04614acef0f4e540e62289ff96e3abc718e5494cc354d17b2792ca17654b015b886778a8c1fb36488aeadb40baed3d7243cd7210e8eed254878e3e249c2fcec728286b29b9d6ae4d696ad2f3e877394336d47bb5b49ba3ca242e3810a15d1c5d1106ab70a328077507fba40b22d6d71d3cfe704eb9b2e3d9a747f8f34ee7b515fb88f31fcd79efb75f1ed91dafc2c8d00b65c006a8c2a75727dfd73d3c85e22a99b566a47902c03679c1222ffae8d28fa49ebc4794e07414e288ea80918d0e1c175bd92f5e339346ce5dd2dbae32de2c3d2ba972d6dec28b5b4bfe68cb5b29bbba623dec736efa36e089b637ef67f6ba2084afc8ec5af32147fea2d26a01c0330506f2aade961f27cc8e9070c258e36a2798a691a51ca403b395acd340aa7e4be812af74f4dfbbd47b07224fc05adc013fe53ac3fc02b1edeb235f828b841348575694d8764db00a6e2b2533b4f96ab083d22a4e4e4f6451532674608afa345abdc8be2e576e10d127b413f87eca5cbd8404ef3e1ec708ddc5b07ecec32b3c7da3b2b302a73442e2a7e3070f56533af9e1b3670826cad9594ac0c5f83157f0cbd57c873cd21e553315a6ba36c9641e8b99b04a10839c151808041998f54a30086b109897927c4ef8bf7346e28b2fe8e4c100b50281386fd49acc222640833f66b139d598dd745bf445927a1379dce08bf1ddf528a2139987ba588976da28110242d0e2e9ad62d4e89cd5682ff91d91c3ca2aef24b3b7e55053bbd68a77b65af6f402483e98c7cfe2cae7aa9b61759c433aa7b007b02927ebddddf3025b3cdb18ddd9827f36898a224b13d03e9481df2d6743284a0ceb4ecda78fa0f8a5cc5c8c2af394ee7f16c190bc91743f66904c29e88cb213167189d78da682b92fe3d5dd859c7f027aa69e79e9553d591cf5e1ec4d7ebc31c8edadd18acf49a89613bbc9d622358cbc18a7a41642135431579eec9f4b4d7415ad63a1dfb47c3d2ad3a5660319fde1c99d5a278c0d964e6a3c64eee56b769f56156a04f51f85b61daeedf781a7e091a13f3cb6f94d1282a886628bdae38c080b5f1205c5dac25416bac0bbd7bfce6f7b7d1af73d9618f1499fcba7e4a40a39fa91d6b522b1ea310801e640de96d369aa7798d77d804437aee1851c28a1b5f02723e4227edfbfd7e321f8ac86844401d5c7c6a90faaa1d88a7a764dd664cb2cf8b403e3153e99ed244cdb855c0126c503caa887929a9763d0123ee630114441ef804acae7423e6652039fc9bd0db9233fef70410c0e2aeefbc8176b24c0bf57a462aa83e4889e0242443f8880241c47fd9bd87d70a1191c3d61bc968bf7b57666ffc7463ac0acb124385768ec361b51e8aba0974584a36368cffcfe9186ae1d67e959b0800c0b4c4f2613321127e58af2284f4319a2a4197b2703ada3585f6b20e799ff74a2c96e369928b3a1aae2c03af50507d943f6c8a5d8c0aa9f46abc579134eb61f66bc2ae2ecebcd7e140ada3a64044699f9a9a86d54a0c022af5c7156cce235b1552ad75f56565780594e8472f95e92bf7a9d358de59855ba58016b2e10d405b3db69f1fcfebcfa48476ae602f7c559e9cbbd59e4d892269456072e5cce597bfee7419a5a74261629e68f68f305cc8c1c5cb344df1c344a91cee55dc2a8c9f468de44e9414af30c1bd4a162c12ca2434de804d2cc6ce54d8a5ec9cb775082995e8c0658f73c36a50764d22c08b922bbe1777ae567e48b27b082ad80acf42d6b354cfd3cb5841a1a69034578b7f817dc98a3dfcbc57a327586d97e35ffadddc8d52bd87924d4a93db263fc0ff1cd10ee4e6a6bea142138afb624673b227665c73c8fb52c0de794a0dd1466242d36a8b40b34ff81c58aa513352fea7f38d9e4e99ca986149fbc2a2dde1e715b0136426341f7ce399a01d8392025c6087d5f78897f3596bb1a22a74efb2c4e257e46072ba62afb1582aec39f02eade7c852795dea4c99af92e3b99e6e01361e7a42c62befae9eb5ed6fe27ee829fad78010a72870c7a6bb1a2a412a855afac70f55e65096ae61f1be0e34dc5992ef8072aa2e81f043b0718adec684e797b69f416f907f9696029d89cda54de6179ae9d1f764cd902b72c4b853bbab476c5936eee2ae5278c6cfdbdbf281c0774f268fc785deb95d9832228e054cb5e1ffb3ce29a3dc65eaf8108199eb5054b6971657f0e1ac6bc70dc997892770c0f09cd938b9b61cb83e0402777b4190f2930da1c7dcb40a5021c1b44a3a8388cb356c18f4997a1d62eb2a35158ce1e1a0c190277d90ac801a25728307c8a6ac5277419dcb76b4b1f70bfcbe75acb26d2636d8fbff0537cdd96fd30a486d63ffdffd7714d234756977dcc3cda20e7c6f3aaf96e191a80c190bfd823643f59ba4e916dfd91869cb745e3f8c8e48ba1b2b7729af0047d98a423ab5926c4e4263327291b689bfe1453a523cad81710c0dc1b9697939c26cde490ddfa0ca16ca6ab7e145bb040118464bd47ceda0b5333f9d6c75160d392bfe2790a780bdfe17c1b0768b4339b3c322a0a0ce32f92eb33b7a7719d58bf751759a359c72b53a46e0887fbe6b4347471a46a9a2c29978e39c323564a6fb7810fead4834edf81d890c7a46c252b6b74015e91d9112fbf670d4dadc28a2284e0cec117a46f5d766a502ee3a7b6620fbfc38e390d3283fabd941dd407d9b9176de667ecb8e06c23f74f6b46c51c01c81fe49bc16c78ceddcf09812a43ec5e2859374b75a2c8c001965e1addeb29183f87bde42306fc70cf85f9810aa8a6670eb2bd4f67425e91775f720ba8f90a08b1de060a96af173bb1721102915449fa3f51aa8c6eae11011404165165adfd3ee964ae250e417e0aad70438d319943c8bb7c9f096d3abaf2d506def72f218d063f90cbd2b50d03c1d312e56798c659d02cb16d797cf35e3c83c39206561b9a3fee02d07e2a4ad5e495a95b5e413e4a62006d0c6a25d118366ce75560c4bc3834ab0e7d42160640e46d985ecc1d707c9e09e3c593c0a38f932e9871d043a3b982eed294bc52951e9de3d1e73f7d7041338e4930ff91387aa75f9eaabfdeba9d8ef631682b8adf0d1f43fd489c836d55708a881ddcea03eefb797aab19a4f9cf8e1308437c9b664f04b52ed6ffe44bb62a3b1a8831dc77f9ba250e976637c236499917e51caeff442e91306ea910cb83bd0141bba777cd517d43a5e4af26e554cb0e6c330b53388be616c8f188f6b137c8415e32a77f3aa09314bd13faebccbc3709f44d3b20030ffbc894a9e2d8ed8b2c3547e3c2511cf8b7126a03eafc321ebf5e0aac636759d88cd68d01657bc56d9565f5aacc269f8f6ec843e60a514782d969acdea9539a696200b0cdd15fc9fd74d5b5ff9f7a33d3ae61bae9eddf5f78ca8613e04c3dbc57de7ffbe21a6ff0b197d7d629eb8389bc3da650cd3bde745fff6debe1e1b6e989b7c6ff9512333b5306924b31c634571f895910404520411da6fd0c5bf6bad60d7656ba5cd0b83fc8d52f290d6e78c043e0b565904c5ec8b4fe8a1fce89c8d85b2f6defeed14a204415304afb900d4fb9138676061deb8e8fa0168c3eaa8cf10e9f31e135c092a33cfc070b8b9c37be3b293ce82a1df05e17c8598ac06cc2e2fa2dac048b7abf0b417448bc91a1a9dacd8c377bed25ad33428c433fee115c6b430ad14d48bd74ef7475909f08be6ee2afda9d82469dc5522bed23233c8c68a9763675644995ae52fe02906b411e46f95b4f9b95b6d8248f03aaff67abd221b70667c6ef66840a0d2c7f2108dc087240996e4cb1cfbda8f66b2a3243561a4acfd3100e39f348a561d7268e567476f3807349ae0b40fa431533c78d47ca0b997a28c5e6dc61c8d698e12cb29244a267af2a49e5c86a846be06f14535993874dae49ac18246af703468e19c92178c4c77939b39ab8731274ad6f5fcd58a09d8eeedff89ffd0bd87f132702c1889ea6676960f804bc04325fe9c99ef8e8338b17c0c8e7a1066847df8380e657e3727e52a0b76ba58d0b3e4173481f4a169221cc232877966e11f91dd093d974bd2822647e589294767f0b9eb00e4f106571e2909756d09bc6d545907f7342b6f7e2787ff7ea46becccb0531b64d8e3021d1046249063dbb508a4cac59a796f455363c02811a604d158f37bbd4bb0af17bcca57b6611d1d3206b579d24d7ef559dfb225db3f6eca36f94b8aa4a0655613eb42adfe6a60642c90085467b05a2e46a39b886b8be43736b082614ad6165885959136fc52145a76200149c6248f394e9156cd19de90e8d21382122a61935a2959c6a9fe61e386a706399d2152d917ea954a7a0c03c4beedcc957e783bf864e6098a7f27076be3d0e628e251a518b43d0957cc0f2c50768918f9923e605c42da2b91f1ef55fc0db3381eccabcb42749e3eee19166bd1a5ec48b5f7d0528ddd887bde648482ec4770c7816095376844a9faff8ea63a8670ca43d04b8295dba7af67d5e9a867759cf5336e362fa2c84d18f5b38b3ef4b76ac103cb483634f75c6d911cbce50426d3a06f96c38386f7cb7b5bf42f2959b3722e1370672d3bdcb5665150ecedf9e20ffb437cef33a210b2354dc8dd770e51808718f2dff93acfdc5031859d8d0d7742bacaf6668579fc119c607ebc951b0ead30455a1f10c969b4d26f9a80f0abb3c79df5086a0cd2c477f21ca786676bb4f603e5460ccefeb643fe7e5c77bc6021de2407080ee839f9aafe7edf2c084f937e92d5f9b425f85fd9bb8577894f5f40d08f18122ead7d238859766b17fafb47477c06b7405158e8b760de39956bfd58f61692d483a9304ce4406aa010140816b31900733e17c3fa5c53992666bd34dcf1c4b7a2a21d2a8fac9bb11f2288f1cf44185ad1aa2f61c5b50ff6571bf82454c4eb18dcce6907c0b31519e1ee21964f659a4373474b6166d215efb107b18ee4a3be1fa3ebeea41ee0b4620d5441bb7e2fe0fc951d187368ea4dace475c3585baf3487e3f891a61bab0dc1a85a258aef847d5c01465f4c4fc4340c3ffac60bd1e3fadea8db65f32c25495e0dc4d20d05eda74b4650012634d2b323513c0e58d9f5e50ac56afc36b2ef82d635bb40b5ab0035474de3273d7295e0b65e62b78f43f006c1c6f9445fe9dea1b9d7747dd6a16478e234717c53631bffc1a18892266bba3f0f40dcab21f335b20d4ec82b2850944e418018952c2ca50bf15cee053818e8f6d45c9b6373e7aef4c9530b124832ff479e950c121399ccbf2bbec2a203f0745443c9d75d10fac0495b8eba7134cf3a16c88c1f17540ab87f0391bbd069754d4365e8117ff6aed65c23e8b886d3414b139e4d47e6c0702fdc46c1dfd17099c74d945ad205eb1e66f7f5ba2fdc6b5144f998fe37612c5aa45e70ad2f63c2db6c4d00d4ecf2f34b1d309bca591c291ac5a63ec36d21f10d7f243649156a2efbb7d02d43d77ddb8594be510fc39f9d45101baeca3fa76eb94267fe0fc6712536a80b73474f45b2de38984750c7473bd3c2aa1aaed6d981ac5a6f62c700373d1b4c227df7c7f94aaf601f238e591fdb706bcc481f20b312a6a297b111d123b2e9a59ecbf759b4bb2bbc997c3d5ed4396384c210e7197c8930fcf76ed04268e0818bed30e12f0ae10794576051225b75fe91d6e2330e6f530e8305cf562f50cae563d054f7a831d92b88f1cf15b9f495ae67cf3d389bee60b632f73f6c8e919649e4cb332fac3b8878c0463dda4a60ff8fd5ca3919a0c1a8e00e06dc1ef5910fb42ebe9c85e578149cc171146c9e36ff9740a9fe2c69eda12221b0f9652c0d222ff4f0b2a5e79f69f657be3061674e474de7c74b89b5d8cb9bddfd9e94091a61887c2e6fdf6b2eb58d4ac76132238f6910d5dcf0e16f5b24b2c069039cf24583a1b59a1c6e2acdec12c846ec258fc75ff4c56554b73440b4de3772191eb862e250ac53db0e053344f6bfd00b0a01f404277d41efd4ff85038a270e0150afadfbd110271de77d21ba8b99a268bf2ce099e94fb9d11f9b619ef89f3492ac352af2c5a8fc2cbbb4998c3ffbefa69320374119e7761ab5a89796479368d77608650bc4d0efa2746456bdda9398d86b82e3844779a08058624900799ec18f0c1a59327a6f74f0f89aec95d717ff08bf5719d062ff9bcc3268b77690373bac08cfd9745dfc4dd94f25b21ec6e4cdb260e281f3ee25c85de038cf94bfd22bd435cdb984ea7b91f419eaada8c0fcd1461b5cc9a3cdfccfa3cf2c917ca2d0a5e350c6e0377693652d57ac6345f04bb9a91a9b3df696a71ca5ef0e7e538c472c679be8a5088e16b6447df0414e216a6db426e943ea81904e7caeac44c1e3f995233edf0f95e8af9a4cdefdd5dc674af8b4ad972bdedcdf95d547f7d8758f0b318c7b8c0e1fe687c22e5f36af50d48a5ce89e1a4a17163a38736390f79f72483a4fb2e75d0ea10ad1247e3e08cb37568f0715b45c3d540690ab03dcd974f90d83c92fa9846b8e2f3a3ea9afe1b6f809ceb7d0fae2db9ebf57e7c3f187aeb529b18dd2ad4c65aee4d6e0e44e373cf711de1783c584e2961222246707c7090b3fdce27c3c26cd4c7f1c42c2015ecb81ac6136e8449d26bfc97573b62e1cc7eb856c435797229951549cefa5fb659759885099b156b4df54ca227baf80bc2da5f406dde282956421da32465edd9117c76ecfb9405b062ab8a30bf502108d04bc260314dcacf8ec0df617fc09c19086be6b168331183a866473cd2fe33c8619d9925ffeec1c5f945657d4984e6c2e631426d1d6b4710b58791f668a2244e7bdc5e168e62f19a2e0b801faf6de229af1c1596908bb040167d22937fca123a845787851ca812874fb906960c551d339b839a6f762eeeb3960b09d898f0f2e818b3087c6dea41cb2348ac38e0948983c02cc222b9f7d390053f1d905e0f4e7b06ba42f2807334e9d7cdf69f199e3c7c45f1b6b5471b6ef1334d93968a1150862473c946a61607425ea2b7971a28d0b8f21a115e5fc6f82915b6ade19171eb534845fe2cdba8dc20b37cb0608220d3a71e141c62059452bee044e1a3b9ca15af70bd1a98b14ab357443ca92f06eedede8f8f14e7115a09ac3d04c421b1e69af0cc91b1350276a3b6d8e679730ac341237076a90cbaf92cf0b4257e40f9f11c7552f0fc7d5dc401d11bf2358445a6adf3270eb0cd71d8320fd431ea71bb3fa48b8b24b9943d33bd927216252e3c5ed0214da145f1647a5beed9f3b54db058526824cdf47fbdea0529b2199f1f8939ceaf0b0c606238b453e8586eacebdd2a06afdf9f1e160846104a3d11269203ac96e93a3173e2b38e3ed090c50f9a16cacfc7f3b82a7c27f5d9f47683dd52c868154932459c844131b06c7a953ca93b8a27024973174f13e753ec2c08b06891725625beb2bedd3d561fc5fb9071688b0993e221621074a646c1a46d7e59784e04b00db73a4113aaa8e8264fca1caa4e390fb6cc5ddb9e7479ce7f64ea932f6a9fca02b7b7fa13bb335fd9f1804a4d9f08f6ddb355d787972764729ed3922f58e33675e86663a1185d27a6e12d4974b0e159598fb090cba23d7f78d1d2299ce7fb8c8fb5c444be4a8c275d8d9247c5b87d3050a31e00bddcd27aa936cc349c5be45247c87a9998b1a10eb55bbaeaade39c228a8f399035a9851ac1e0d97349c64fe8525d7405fb8c90b90e0ee97a276147a417ee3eba35fdc7fcdb055fecd67db341448df53f1681cb8306c09cdead29ee45029a6d10de1aab2283f3fa3dda26581dec7755f24626b0381f388e9b60e723a2f3665ea8a9f4321bf3ee968b90e9428094035b8dda482d2ea064bb0104abc5177b04de544cb9e6c0ce415ecbd78d0d18ed0ff3e855123db223217148814bf3c1d8d0ffecdd5e6a1fe2ca9932619d58d12d57525492f804e8e9c13d0ab3d4f38ca5c61898cd9fa0cfc0f2f31a7e1312d7c587ec26519c553c3ff4d90cc2557ea575b7a915b89ecdae015563169bccae65816c676e3e88c52ae6e33aaccb755f004839a82f2f3838c1eb86f5c4e6e574e3a403ba17c0d660d266f1a65fecad9bd3cc380e7e586b9386717f1269b89e29a8d0a91a39dec598cf896bbd252ca0acb0cdcf23553a53c9f8e02f5916aa04c3da539bff6b0495dd7ba34b1375b242013a1a839ab89d6f10a8bd0ba9b8db0c9c6ee84804f296fde80e58bfc03df35ebe261d4a23842096d04c0432240b894601f8fabd4d2fb8b3d0008d3805b08174bf78c0ffe7f38a87ad4fc8733091e216c0cdf827c5a7cbd4fdc1c72872e69f1b5eb63d922e0364599d6d85f982fe0731e07821c81c9cd89dca548f63be25a4bb5f849df6891e76f7a9b57c11e4befebf862115fad70582321c28dcf2d897a0366026bc12dd2fce585dbfe743793422b53c495111083f8a94f053f34d1ab438dfbf6c5c6512382aa5439c8c57aaf8683dae648677d9ad6c2091d3b75ffa00b5e3a7db4abba9468ba36d498f32118a62e0db4598e0a4c1c4ceaca3aa57476df5ffcf2493fd121a004aeaa28e58906cdbebfa9aca194ccf6a5fdeebbb44f6906aeafbb23f5031e5004f3cc8389b6f5ca439990d2a238a599064362530b94ee2ad5d4de84ea41b100dc6e5f8f74ccb2f3bd9582afcedb77339331a16f36ac4b6c4f81f6d61e8064c7183e6d3c8597fde19883418cb4a4d306842f46d67ce3bedafadf6deac83abec854b78a52cf04b9bd1287dd8bf47c19196e1a546605e93720d7ad0f90c3eceea0c8de47fc95a6abe7a699abbf6f957029e9c250e9c652a0576dbbe46505968d857bef727fdf32d02ccd038c5301e0cae12c6d2ffda516b454e37062f1f83e64322ad82acb0d0336e3a0e7808c8d95f973ec520b61fd116adee145e960536d4cf32cbbc1c5f29671924db7949350afd114ac1fb22e4c84ec9d2348938eb9b01b5d9d706f840a0f9d0971bb1047dc6d60070874fecaec9221c4b89a521e1c18a087bc00d4d6e0b3e804fd8e038c21d32f2ae966029786c4c3a7c9f15fd134baacda222b4ad02a6cbbc484a117da36279b386ffd01ac63860adee817f968f83036c092e30939c84863384db7b9fb4a7433326db63d2cf3a8e28fd3696fb221177fcd5fcf1a11b4fa559ee8678f3c580a349ab0018df287ddb60dd5588696338f54353cc9168fe65801bca09e3d80b9fc0681f0c4c8aad23fc8e3e0eb214671be5a95e660bc444edb2b0f751a7ffbb7a0d9892dd6059dadc916f1dc3c45de544d6970a25751535122e59afcf08a898513415e80859fb58fdcd94283f7601dfee9f7e79d24d5d9ba6f06320d06cbd7dcb3ee41d011129463bb88b6b9def103ecc39a866772030794284361a49ae2e1ada374b8af2ea5aa8e0e73a43b476f7a15118f2d5f9f26792b57c95a30b90478d24a1a6fa986e6b8ab63e914f89c89561e8b57779d3fbad5782b728501c99ac9c3d4c0dc9b35f42adba8f54195dab859f7ee68212597ddc21d7582915fff3a2eafafd7495e4b972793b3a36720131b03b17de64e522296ac802cfb3477eaeea615106132ce4e2e5788bad9240feca24eaa7b6eb66310e2ffe0e979f117e6c9d1566c063490b567ad9fdbc0ee5d1f96bb8db2f60caac29ac5cf6ca98503aacf4925ff3cfa436eccbfd895bd58c5fa5b34c0efb83f625027c72a1542ec62bb2aade7487adaa6581a73c74df832b6df9bb1fe832f4f7f03ffa6936b9a0acff6b2c3768b781225ca6e0983cb75c10ac2abb2e8c421ddb0dbfb965f99c7703d0ac47f7e4e8bdaa50a41dbe7babf8d21ae4ee51e8ac0bfc30a7d9627ec4dcd0bfb63d304dc03bef2d72c45a82b1d956440c3966eb2d22b12765962745661f656a1b9933ec5a5ebf6e08c94f0125bd5152a22c83b9ef147193ba2807ceeb5aac427d3e4e75c2b70374be5fc50c8247a98b20c00fdb3d53a722735128e6ee06be98cbce7ca38da8c512f1ee03787ec2c5430ab3325dbb2065d3d1f5489b446147e25e6a4fcb3279c001a8ef385f16349be93fb604901a5c3c332cffac341a00aab19db6c9d6e6d36298bd40bad8a84f80add6fb4a8972c0b1df317d1c8bd0635c9e4472997", + "0x02f65546365f449dbedb4d15903f8d2af483cbcc493fa0a9a6d1d982e0a353b81d20fe781245e513126d1f941ef3f17dcf3ee84b5a026981c833b726fd4ec0e179f891e14fcaab8c96e1f21a9f2a86efcfeb8ef4aab91c7baa37d5905d09b3eb4a8f3bdd149d533021ede698c7e59d0ed3a5f9b1c55998e6dd94111de984a50bbaca72956ebce5e79b8ce29ed039ecf4ec48e31459d20f6d434925144cdd0dff65b1de59cd3094b88294e5f9f6fdd6b8e3e42234b6ce1cea958fdfcd748cf0d5db8425688554243d688f6cb8fb87e390b0ff52395506b5e2df2559da156f0c8d22acb5424fac294a72ec018ca4784eac04a82e814e1d6af9ffe3d9da26d9d26a326ed10ec54f9370db7d56c139982075c0578ec2e014958929a26a5061ba9d86767c6771e9e14d406f477b3a09c352687ca62e62ed4b4f65656f4dabc7d2d59d514d82099e19fce2109d16f0e4e5d2f001ccaaf47b0f5b8c1018d6531af7fa5e974658f62dda07e53591ae7f9f0a7cbacff254f334bb5d9457fc5c3a6265c09e10b846cec2db8dc966b36236947453c2985ad6d3e7690d65bf3646b96929af7ff8a5410bede3e553c11eafd81fcd9c01c34ac105053634dda01257393f91007182638238228ec94778d81221226097f1ead47ed4240aabefa5d2d315b6b1a20d50fd7e1c39a45bbf517eb3908168f64d5c6742cf8001aec94dc71fb3e6fa9850fd7374b1ee06921c244558b6a76c666c9c2fed2375582c9e6db5d997abdc2a4893c60dfe6226c4096147568100abb137e04c0b4d06edf5c3ac8cae9d227b926d15cdf1c6980a60f38723488f7d96555d93d2548e594fe8ee066e5cfc30731d0bf7e241a1f9eb07e3aeeaaaa413639b84d39a5cfe39627d6e4a02a006fbaef1a6a0615325d15b9aaafe5ebaa93ca28576f3e85647938b5d869c2006ee6e4ae83cefea2de0cffce6db3682269674ef24f6fadb21dcf974d727f3c4dbc7b987302eb383982989cb112026747cafbdac25a923b1f919225c5f8d9c56b65acfd3ac31327ebf33f6f6e61f35a15c5f1bcfa8d85bd682b268f3777bb53e4ef1e7da3b3ca334bd80f248a154dc40d8af19bbb902c7cc13c548d2a634b3cea58cfcac5f4cb4938f69bd1ee5c62824902d4331f32c3bdb6841e6755680dd76b6544df2f440047544897cf1f1f73cd46e88aa4a25a9c3902b8986d1c77ece4c1e14dd2fec66aac966aeb76e4cefcd0018cd63850e851e17f8c8146f7566f7e187e0f41b3736ac94f66bd92063ada43e677a08e1792e3e55ca2c9d1f8ab11a6ac6ce9c025cca89b57582b4a7ef1120169807350b54edc9e1fce6d43b4db4d031e0b6253a61ffb082d320fa80169bb161f1a80c9c89b59bc543fc8e74a60f04658199a1a702c00634416cc56087405efc0d42b262c07a420e4dea46331bf57625912d685363fe651d39d5101a201440c01c7ecfc13da08030f1899a8ae7bb3af1e279960dad0417b9427f3b17d43f05d5b1f7121c8c57cd3a1d01cbb614d936593e24882250475f823d688b62da6e6e4e0333ab50b1c0d3d7e033412eafe6a707374c631fd5a6f09f3c0ba73e64aed11aabeed0470867f0204ae705427e089c168f5d8da6721b745e3df21c4f5e58974148f8388f0f46b740f9b3464edfa67ab61d433254d918067b4209da50fea8bf719943a306bfd96fe595f9d57aa62a762474c8c0b2e794b83d9e8cb6621f3659e0ea7b509c36de9283903fa80b271f1ef1bac56b3f38800e64751be6ddae9d0c77f1a88419d84a5068d9d25a41c5e1d19681e6aa7ebbab81dbc4ce88beab6692526dc90aff1dc50a9c77fba9c9b3d042607a79b820d08afe4b74341b9c7a3e36912d77ae71c13fd79429d8f7bfbebcf99e5cbc14368bfd64723fb5033290725c714fc1c13601bb02b979c9cb3d463cd2316784017422530a4b803b0978b4c4fabfd26a98c01b2389b1f0584d7bca5f7b5b3df90789aa00360c24e8d94a607e1797dda40d4b4e1aa08c4fb4cd7fab32fae8175570819b1ca6f0544283a4f7f5536c492dfc07eb132cb0fb273c62fe6426a88442cc3bcd8b0bd2a295fb64e28e5f6f5373c75b5886499c067fb1199a75292e2e7d6dedddf08a93b42199aac59b80388a05d3290b22c57d7bd2e5ddbdb504ee65d0ecb634db395ccc559aba5f7010c752150931ceeba290dc1cb717f3890b9f6a6ba2481267a8a1a8919d79c85efdcf9e4d5678e8d09852fad9aae10c5e65f3a4c83097617c55028ccc26741852495cae932bcbf4cb90858e16621867dc8d9e5412f79f3a1e36f075121e77b83688b7f689fd457cf92a0245962bfbc61ad4ab6704a13d49c9342bd6fe51b8db6665ae88d6c6f2a50b385a1c22725c7f99dc2476c8960c8ab3aa0b453bee8ee6df1d1d903f82758d64414b48a44962ba231e081c2e885f0fdcea9c0a900bbcc31b02cec6a9b3c812bfff000072e7d60ada658f2befe843c03db8877e431f436a07f9a7f4e5de0935b6e127e2062609a7f251c671646e964324cdcc8a5c86d215b6fc2cd7030c564aab8acfd880043def04d670072d94278996554fdbdb01bcf31e9a480a924ab6a683501da75e22ac2108ba4168cf1cf0a206712f8426337d4669726ecccb291c8476bece8a5e48165e871a61ca488655e0fab6f428ac25d84109bb08b8363e6e3dac128c9bdddfe15aefe54270d49b7e5d30ad88ee49c27b2136bf36cc9ba3a42ec0bf0ad2c375cc6d445fcdeef1e5b778cb5101c20a5c3c3c105cdb5e9875f5cb4eecffe0db3d2bca01a0cfa1d634e8df86943bbeac25dc152482fbd13c5411c299f4e249718cbb165d13c8c8031a152876da45bac2b763b1d5b76c2650e66f31f4e57f57325d03bdabf8fa05b070f720dd7b9a4a608d0aa6a596d3c5d853ac5619015ae89ece419431e2d83910cf9f56d1462abffd87afb82f4bf21d7ccaf131c83fde32c0a1efc93239b5f450182b73d7f936e8a86ae1fb381947e71ffb77fffeca65ed80bccf29bdb8ccf83eed867272cafdaba65e77b821d4fa30f99c0f93f9810884c0a98f273ff09b86323546daa6e131b7606eb9a095671f8cdee5bee8a5763f462717f84badc4856dce9c8567c8db46d2d90c191063503ef043136e7c9a6f57b6d457ade7a8ebc91a8910e0e484498ba5ea8a7959f81f3733c0e8a33aba68b3643cdf7f2dd572cb20c345731a032f13f637a1086624fb6d2e5d29521c9a0fdf00e9cb4c164a37a7f06332f409198572a52aeea6265e1c4aeb3c1fb2bf6c47718a68576eb0de6f1ac09292d3e810b947fe3070e099045204714f173190b0a6becb5766bcbcd620b9d52664728a302c9617380c7568bf7dc50deee26c4f1df65b885efe1cbb59a874b5d76c662c3bb0f0589b09715a661215353255401156b77009f1caa4c8fb3472e70ab0ced671107469bf94d5269c9d974dc7cadffcb49cd9f1d69747f18a4a31535afbb7c22a8891132d3dd15f97391d08c89e05651e0a1b84cad718d745400269935d9178f449a9e74779887d6a1a001af1b12e09299c23c4fe211cd19ac2cc93fca8b0985df774a7ab1e6e497a03d37414e9e69111a1de1efeafa5e3905026ad23f5e67fe62a42c4d2e92b2cb8d05f5541af259adf9c96811ede4a3406bdb86d551d253a56f0fc79e7fb1a20a4eef5c38670bad7dac3270bbbb162db01b1f81323413075a8490a5188584c4a10de08608f1dc934ef8202c17e4f163571282cbb084366650eaaf210d867217c1eb61e9196ab56ece6f5fdf14e810114cbf1c01c5c4a92ce087bdc6d6875741ff69f0e776094e5fb7171fa30cf3563773d30f3b52842d1a27599d6fa6d32514f3f588f33ef55227ccafb53110cfddda63cddc38b835a86e987d5f22a33313d1f86b11567a9ee9fb265cf240f9591c8d584433f072e845fe00472306bef6c1053471103fb8665a4ee89db574d31490eb0e18113a414f86988cdab369ffebf5d098ef12393a2430583d1418b1366a39f72590c776b53b13611b02bdf8af4696b1ab85f7e403f15146f9bd9c23539c37271ab2b5f75efee0ed4b89390f22e8ebb2d2d7c704febec9a882aaceacff4ee132d6c7a06ea61b338d1bef7687c58b724c892fe1e4beadee838bc7a29ff340ec6596b68c33d66454be1b361389cc54f7ad44daf33907983ee1e303503833331337a7ab92ea13ab2930c554d4b14b428c568f0eceb08d4786a28f2844b70180aadef1c049adfa64789ba332b05d53cf50bca882677ec12df25f4b841e85f126ffda12435d625ab1752abb4e14a4537cdabf0a465a59b2add408f52fb63c31bd9c6a0c00d4a6bad7b57ed8d46bd3d64af400f44c0e5f44b1b8fdf297550499ee774600d9d5877598dea4081a8c340f6f81ddedde694b9e346044d6725797b98dbbc74c8cf17bd2cabf89b8c4766b9f3ee56ad1d989bde4a90307c8fb6e500851baeea63dd5687d4facfbf8ed8f84aff39577fed2c5de2fb2ccd2b4b86ac2d06b152a457d8f42e1ae1f3126a02957bc9640baef30cf681cad55887932995ca43ccdf5739228755168a013104e46443ce6199dcb335ca672c48c480d6e48a3efc3d7614d6f44f5ec964a4e21c8dbd4a0802a9371ab963ad1ac52e03c732df8385fb726e42d9849f04a39a6fdb8309e1f2813c46563da14a7592b21075435c935d9f4fb59831e505c5bfc97c1d3d83f68af918cd907b34cc1a78411dfa78272f75e912d5e6afa024bdf162e806a9bfa2feeabe8636c170eb174491387ee87337133951c59fdc8debd1b917560ea7080262b9f2b1477169e16b4718d99adf04f30916bda7be92b07dba5a5e5dc68b87730f2dd5b85a7f608fdfd7195a285980f5faab47f8ab8110e2c85cc68bef9f3f8250f38b72c6f684d656ccc27e538b918d9145d170dfaddf881e0a5dadf39ed8028c1c7ac1b67301b9d403568c705bdbe4eed669822bedf0de34f2210dc73b39307d9a0890c4a85a1e24df68cd61e3ba3bfe752186996e7e69af688b9f5098f1d0e6c6fe6d08db1d55b8c32f908ff2d9ea0adc6807c02f4024e2021b49e6cf75afccdd6a508564dfabe199daf15f8a9114bde901ca8683d21b541d02b31e6d28ef7c7e1a36373289bbe34e0109d5631c30951d806d5e926c7ecb57d65f36f234089a2da3b20747f93cd4532041786799d8192059d00bd7e69c1d1356f289523a74e5d4faa16838f0836a1e25f90134de892e3b859449a3119612f83cd83377c555c23da0865bae4ff910a70ab73c9d193575dcaf67ac995ba6297228cbafbc9ba4469953543ae7a82e9beb85827b2946d72f16f8f06830c855f0308cd98273d5a838fc5ea9ac351b65fc6dc2389b936c7bd21e4186d43436feeba4b6e94a61c8ce85de6eb8d27e82a13bb02eebee48b65259cf120bbc46f663ca86e5e8443dc21d979bfa64d5baf5a7abbe589ba7ec4fcc81270a9bf657b15aab516a184d3493db66f43c54b97995781ea4dae53fd51bd738c8d9e1eb319fb0dac5de2a9968e826628dbcf4885aaa2765f3566e348e34b7eb78da4220ee0cda3e636923f06c7692f06d64bea795132bee41851eda563f19eca12b323b7f331716f41129f0caf30af3802c2d67720577bda64e8a739f8e4dc3d1636166265e0e590326c0067de391aa185238c4d017044b40fa0abf8f14d5233bd1a156fc60143f5ead1b1c772f973e6820488a9fa4980daf6963178225aa23354a9ec96c5f9ded99ee78961c93fb890849ecf66676ef989965ffe8860aef8cb88dcec5b6e28f518a03b746c5d505ed74ccd45fbec6953f27fa1faedd63ec5de33346746d40747ece7d9c033fd5d4a18d72cf4ad48c1a1a86e386dc7f5b8904792e41fef950bab4431b7d354960187816d3cbddeb1b692e680a732f95a7a77c5ed98f7216768f5d8c8a315819e11aec38ee278bd811693380100081ff5c0d3c1d9b445953f1fedf913f9385d8d76544fe54c76484953d1609ed3af6cf91c6c165154546948a5630fc57ee6e21258bc0dae1b68e6ee5bdf740997d99cccf28b287e5a06d91860960bc8f1bc88624ddea1e015fe0263601d2e5cce39ef056e2a3faf4cff655ed8b418645340b0b971fce848986e1d3e01757bfcaea76ea2fbf25d8593a8ebf20e0684f8f12a8a95d7b27a724a8f6aee14be3153d8e839d0e0e105ec7ab7e04c3d06ed35e0f27cc033fac87475cbe85a6828e352274bc9f04cfe7708e946e2bed106212b6b082d619362209bbd957392d9a81f0c8f9cebb0316f5122e3ab78fb5bcbecdeb39009a5fa15875b4ce884072dbb51cdd334f70304bb1f073392e6106f4190d00501be1be1907f67d147f242fdc2d1184335f6f04335dd72cfc2324c489ec9d0024ade915e8361eafff3801e969882d8922ca2041e8e13965044c2f44018d8b7dd553e0d19b225ff54e750b4f5887509a08f11eb2319bae392f3e2f135476ab0dff426d59ea66936cfa6906e94cc560944b0fb6bfdd4c6d375142a20b3a6e14e39e12284721f774876567cc15e25ec7df3c4d6dd10d50d74cce215cbcedfaa06fcdd51d74b5862488b5fbcb59bbc4f0dc45cf77809bf8ed490fcd061fa7dd7019f4be4ed2b800a7884e2084fd6445cd608570409a014ed5f0f6bc9a9e46f466ff75db2e1741356513b9790dfc181f5441f01fe7f272765996b81ae96deaf9aacdfcfc2636091ca94b72b89041c312fdf146e7be07099e6752b2e2152e681b26a2dbba13abd7ea24a668b7ca39df824630727bcc7134b792c02c6917e5e4390a013a92c69473c56a31270b8dae08222fc018d64b28d92c8f5022e23a44050348d9f88f839f32fc736ef1523ef65916bf3880c02a93c081b92670cf9e3e70bb1999839b83bf69a51cb951c35772f13f7de00a688b6d4be48e8c1283b6ef9db57652ff6d72bb4adda440dc0fe65d3802f799e40c46788df030f14e35cad12cf49fef897df186f81e2f9028100decc4883ee0b09b65fc3c36e579ed887644376498777ba8156ddcf846a7433a80b6f10168d34b8ba61d209b9822e4b929636371a762db38e60a86d555a21c530a7c84b20d55f0a7fcfce15d556e151da72ba772d8fe7bece119a0b12cf3ad83082ffe16cb34558d0eab7950d1a7040a88f4fa9379e46d0a770ac45e7f29e557ec536e80c36c9371b7ea8cdcdfb1a1c1b633746e9e7abd328c6e3662664b8b0abbafe3bb196ee78a84c37887fc678e67f39482759e8bac81f833d695debdafe79046d45c777d9fca39e4e9f6c48e7fad516049bd94e9d9d309afc87045bd577d17aa16348a1fc9df4dd52eea7a549b62b8304f63df220975ff74ac44e26574c81298465684956f7469fbad378561f7b263fafd0fa2467c478f065dcb5b4c618ad8e8aed599697d60ec6929a1ed7898856361ad9c44b9117e614a91183ca66d79d1cd12fd820b931d6a85ba3ce2a895111b6031e7f218985792d7de617702320dfb5ff069fd7c641f2876af43350b4175c23d274118320ae63310ec16df91b43d687e16de4a0e70d4a26ab453dd1578d4e4d47ab6ec03a5d0c70bdb72abff9daabefca701af2a20fb06aaf291747b7d45e129de9be3d4092cc9513707fad90046b521e697f634aaa7b6760fabb89bfe9d6d512d733a57def72464f0bf498a75cc9d755cdaea733ccfcac0345e0a8426040ea7f8386edd9c8db9192b87fedd8c0ad5e047c7de0e4d6d8ca88d1cf27fe001a153af9bc49e8650ddc8f3fee11edb2d551a5331251a1c60fad0e0499939acbad6232472c20bea3ad8411bbe9dbb1d26256602489bb3bae9478232d64d6aa5ceafae6604b4322f796799c81c44803d69e3a368211a2f295b5a9c983b011ba16705cc2a5f28345c1f3ac389e4c85e2f4342adff8606535ecf4d59aa66ca7482e7035b38f772c7032a77fcec2683c7f5388504bee8c2a44904efdf35b3632129b1a9589d5729cfcf673506ed14b09144ec08d3c3e239c5225043a625f2aa3b9b8f4a469c72a8fd199d0230baf0ef73895bb837393356dd9769ffa3bf6021d04c510ee090728e89442f5e32aa1ac50c5b5095e537578b1aad390e55a8946deda647712345953ef2c4e93dd958c9197b904c3712da464e3b5f360e8c53a3db44307dc2a570b160d412fb897e4334b986834c46b4c8f1982b5bd5d314cd36d65af99ea53a5c835eceec1b9e5469d7d3583f430112e32e64b15c7ee22603d572472ec892eae3c2e874a5efcd80bafd7cc49d4bb89fd9ca36290605f7a7fc59e506f0985339515270576a10d90560ef2d1f9527522ed6429152431a7f3ea588085ad7438abcc78aaf14b7e67c7e26f840a938cdc8698b81802c89551f3419a1da36c38729023ec81e7f665fe3a795f977862d6fa8a745a60ee2846e2b289b1efdc8d4ddf7c63cdc7ed113d02ebc7e63764696a49305d776cec60b002f929d1a3702bb7d127ddefb51f3bdddf29c0b3d44fdb612bfd7789e53635eb56a148a55f3baaf3c6822c9125ecdde05b6cd985fceebd3407567fc44b99110134e9e3091bd62c8b53c671c2231ae687e793ee42364b80c0d9401e5da1baa2825025f08bcca407c9ca8248e7798be5b7d2ae65a893a37368f0c5545301abf473ce087ac676e44829415232f162786e59c2f2d8f4ee9c2f41464217a0d5deaec8bf7de3e28a365686cc430929fb57f3cfddf272289eb24994836351c8e0ba925ec89219ac58995862248884f69ddbda9f908a1a90a220e8282adbcc36f52483d398e367e9ae03e2fae0a871e307e9f72c269f45c47511f04bb0de0765fe4613dcc303120198f563f21c4b3ff063c9494f139b99282a1811a912cb2dd117568514f4d23c82f21fc6f58071531b6fcf0843c9f3c59bc1e0f6260f16e959b3e445fc1f9bf663343aa0b1bb5d7e6ba6cd466b937ccb33a380b216fdc093d107dff66d4f9cd4c0948f7e83c8745027e781b69ca93d04690436b5dd37e0c15e8f3827bf2486a6e84a5e5cc0f880b4125d6653ea6b8b77cb1f7ae43ccfcc44c0d6462661d961adc4d75c4963397d09e977c2ae1a09daf6d00f04860f390c456bb1bb9488dc4af5b3bf59fd79eea1be3ea24dc15ccaf3014372f976dd708aede8b6316cb6a69f84aaa0942b78b868b9575cf1d5d43505898be976bb84845543a260f7aae4150433650b6c248cfc75ad22d3f07487b5313bc5171245dddbe287007f360d0d0f8b1ccf5a6a8b003df38b9d27b7960388218b2bfe854dff9faf92cc268e1f3ac125b1cbca799bed74f6f709b4f83176619b3e9438efdddf8190243e7ccd7e1c3073d40df2c9bdcc86f58f6cbc9d56be2485d992ed654e6e24c458c800023b22d7000ea64cae27586ec253b9dbd483a77b42a1289971fa78559404aa9e8f04fe29c8a71c8bc36374044f73c5b426f6aa6f60226f88f9906a018e75c58ee1a8bd90d60548160deca2a4c402079333c69a21aac2a5edeeddc46f8f2eae1809248d4fbd64e34b822f298ab7f7ea0b0b6a3c822a563a5873f559c7b81550f8edda38dcf19797aea5e1e215c45656e9abef33781d0dcaaf2413772b50291ed0da3135ba9f9116dc1a0eb693089bfa51ae130a9a1eeff786d619b75d1773d9b7647e352dc90e18f29d91e624951231c1a3d57845de86ee0a67bcb108c011871479993e86cb55d47b69c09dba1a83d8bca77f64887e9ec0432285246b8be9fd8818df48e973bfac21e7475b681e556be1dc1dac4634b60a30a917a66bbfa0706280c0a5849084f27babc781b0a40a94849e821402a4f37ad09dbc2a60dacd193c7cc0dbba6f3fdce0a19d76fafb8830e4b802eba89a8b9546f1e0351bd42a6afe94220a1847b82ac2e71cf25b94e737061142b8f1fd810cd61ef4a76edc64d21a19a7a99ee4555326d8379c8c286ecd48d6c0f62025611d06676b7cf5147daf503c5339ea2730daab20415133a412fa219e259f33b8c0e73eb18c4bdb5976202a894ea2294c2698e0a51ec49e6e05e770ec4eea045a143f3c1b1d724745fe6c22eeae63e69806b4f27acac7d5bc10899bbcbcfa792129be99a59103c01783553b6f083a4fd4cede2e01156dc87fd921234a19de4061fdfc48fbf8f41629bf460646af5bfddac5fa7af9624b529864d03d06f15bc7a019d809d11ca6daf6219ffe30cbac7ce6b95693158155f54881febab8afc083afb444e2375996d98947734deed4cc144cfc9d1aafde8c3f0230b9022212c69882e514d650f1821ddc339f888ffe77cec984a177ec8c5eb397201435903af0717497d7e0c9e825bd33d5f10159d695322d96f9db934db873edcc0dfb876230e90fe58d5a49fa5e6e64899ef3f27af017b91cb078829a92463c1b7e06a1ad33b1053bfaa1d0c971a11b32141c2b0f6543d27bb66beb9cc5ee06d2545dddb32bda8b5fcd94b9dbef067b0644adfba197ce2a5c4585074742f3f61f3d444fbbc42dceaad8166a76e978e0998abdd01b3b999d16960d944de27e1e400831820578225c7a1b88b818f313f9a9951845981e3c5095b3917e4803d7af2da4b937db6c26fb94786387e1f9cc81faf9ca09999937cfb33ab6cd8c29a916a1af4330774cc9b257515d47389c98a5701d9849a393009242c335e0661c2019be2763db5c2a0fe8e8b6725d513817a6dec2684414ef76a2365e117d1e6357b153aca38d9f9a1e09249c5d759ea16a4ba7fda799dfe0ad2dec0f1e5cad9b902d637dc6e82656effb2d0c9fc3684ffa3d3c62a4113ce14287369fbbbf57a446db93e516ef20e8a09f0a92b87e768f72be7b5c23d9a277587f7740daf933f9ee843c1988c216f182534d356d08495d6806cd366d208641dbc0f4fb27a8763bd73b7476360533d536b8d1f8213af040dfc21f96be8709d22cb4ed29efb4437f0627ab26143bbcb1f67387429f0051b348d5bc62c6e8ce1cf6b693bc5b4510bfcdbcdf27ad530a4209a7aacbdec30fa1634a19d04d439957e8538609f4b55db705bd4b3527af456e5f94c2eeaef77fc11879d47988f081bc4b88bd4c60aba1a9431e8ad10d883ad666cd67907c5ebdaaf2f5c955d98d50e94d8cbe65c60dd446f02429ed55a7eb3d150b63d319d1e40f96bd89b64ee77a8ce6b6d9e575ed012c143ef1c30b09947c0f61ebafd8d6cc9018cdb625e0f7d17532b3326843ba878cac218cb304da6266222c07c030bd4b8db772b21be83f5e91586404cf2d15ecc321e999372e8a3a2c58c81bf31755ed9412609609b5151d0eb21fc01881d43b8884ae3f788fbe57763620df47e8b1858f527ff9fac884c50b151c205afc2f9da370e39a3cb4748724dc42a4698f09a93031b00594bb8eb3838a067206a870d37258631be634e73d4e347e81e0cac2224e638d56ff37688e9eb4e8ba0a2d50fd486a18fbcd4d830b3c17396f2e0ac399eb5c8dc7a19dcedbd6dceb9fd293a4933f5a3689ff76fd0b6a44592e3a841efd175a818708406853183445fcdbee8f97927a39ae584e29bf470aedf03ea9da088d8ca8c969096918b8f0e8a735f362a73450e93a4d6c65bd21511943f22595103b2b3edd4e2307e267b387d39581e0bcb3c22658381f0eb2505c9103ac5f293bbc0fd9eb71cff38a45a0613b4c5bee62511743092c0fcdf0222a10da85147022958d601c8122ea0a1606eefa3b7d7a0f4b06bd73775c937e8885a73f0021d468df480130fe070febaa49b82b9bb51c72873c205b0a9fb23405728061eb39bb108bccf5bddf27997f3126bdbe65ab5322a040a87d31978da63a435e06b38ce677977ae2b32d88344d266f24929ffb136b03225ed2443ec7a95321dbcf6e82615e79b9a2b5c1cca20c56df5d1f4ca986260bfcc865be24503a2fa710f5df6f7377d93253aad1010469eec706dab26dfd1540c0ba6e69137541d9934f55702faf85593759a5ba71a993b6c111fca2ba10cec4bc0362372b8456ad061e896a4c99397f1c272eadf30a6abe1bad4b5a01c7884981fa53d6185cb00c7624e6899664fa61ddb9ab36fa18d619e031a52eb325705313014fa4d9c29a4659ad1f8f7b4066d12a2ba6c6b3d004a35b59acb3be95a57f04fe4dc9dc0387b3ddd8b331efd40fe588bb8c1b7d94bd30950754034ecc22ef8ac896d74f9ba3caaf3008df76ada0f7821785ef0cf773a0e865d307d070ec971c9b28de611c0e17819e942e38e3c13fb82e801467b71afcebe8ede09ae3a8039ffbe1eca171a90377fcbdac5dc26ec11de62748dbf482247928e0f4b77975544f9846fdfe0e1ae77ca68e9c02c078828fb587b5a807ccb2951bfcc319b23d69036692c87810b57b794f56ca33ae2d7bbb453248b2657c12c7ec217af797ffa7e8bc4cb14d60a925be724446427ccee1f75410119205b2cad4eabb750146de47c9f9ab012ff871821c6028cdff6f046e1c114305f5ebfec762e018ab690e09b106ea07d7add2383ada59eee9e102d6fe9adb24745d5fbc2c73c9201dfb8a02d69c79252f9994c1f77ec852cacc135a395623184e8ff654db5c915bdb47b77cdcbcedcedd41e22da0d770e6b4cb851107c9e66cc6d58dd6cf5dd9e5fda6bf2dd637a8eeceb9a6af3eb1871110a8ba1c8b233c66aa0e287e2a8b3de146d3db3ff3618a3a29801976a5914b43ea231f8a609879093e2a29e383038376b594b508a40c69745f38ad75799a26522428643a5ce135112be204a4843909d6de915c51002f951630d3040a38c7026c2ffca846762e4acb814eb8eee7b924c2766bb72d328f855df4532fdcb311d04f6a02259fd181d816889134ac2444747fb0185b041425e4df0c19397b1edc0a3a59216121ca17351d33bad3ddda46eab79c45cececdb9cddd76c9b499155603c9069115e5372af06495a532d0ab2fbd39cdb4e5b8fd574ce4e9d5463a94679612965e580fe9030fd2f5ea10aea8a944b98890d3a081e7f80dfa40dbf34747d9d5434441cf44c66630001b931e29a138fa3e1719d6f8ea8b3a81adb45b03851dc09ab4888367e58e8dc18c0b5e59107a06aa9f1d2a318af9d42a813849c63cca52c2fecbb26291fba22955fbd6bea32670e002e51f208a850c07cd24d2df13b28206290c5fb6169d48ac443ef24100ce7dede6938beac7971074f75739915e012e2f379d380bdf79eb6e79cee413a3e3e39230863464a5f3ef8052186fcc96e40b69b4ecc5b9b1fdc41d4a2e75cd4297a33941506edf769e51fb23cacfc148f31ade99c775e1c4ae7b3150c2c58e15d390042bee1a28bfc2aef81f185a69d5e578f035336a4a57743ea8a97dfc31b221e34b0d601588d4d60afbeb12131b3ed2df766484b7e67b779d6f785b49cb7f2105777530e94d1eaa9afadad009cd8c126a479b1b3707daf47a9641bb87591fc526b6dce2b9823329664665d2b590f51635008ac8fc1e2191ec56c212f5f47a36054f0066cac30d803744bfc5575908a3f93d3b81a5da543ef11d166821c30fda347a05dce7ab86458e7d90915f05f4eac9af1393410778e4d8cba3a3b7b6555f7b0b359d099e0b106feeec721362af059c51af8775bfbf0d9291bf20fdd1eaaf73411258ea86b70655a7abdaeef27b9b267eea1e660f673026d84680047692e27bb870d739e7ea4d582cf38cc945867a545dc441eaecfb410429c798287e2c7dfa9cf057a30912539f16ec4dc7940a93f8ba6d522e5b16488ff1185be457d9115be7b23fe6d201db92a2cb719467ba4184e5facb685eecbd5a396f1db0b7c59e928a3211bf7bc8ddc990ba62706e0718be15b06435933404caae4a85d9ec1240bddd9dc9d6e18c9ee2410eeba4ca89cc187d78250438db2741155968e324da6ec35ffd78409c8f8b5ba752c4c1308a68d49e6a48f782a22ac6cd82cfe5539ccc36286b9105e8c95794f83c5dc4ce88515ffe755715e4c26121b6cdf0c99dc335d3f1fca64d410f15804345fcb5c021f4dd3e2614f95df68c7fd4ca9884ebbaebe84117ab75a3faef1727466b8e36ed240cc0bf724efbe257c473a8759f2d1c3997b2fdb123f7745565796887a94d6ef2f224b2dd754bcaf4e3f14f93d09602f8e9a0022a55030815412ea392303d83a776fb97a0ddc28ebf9100484978bc35e3cbaa72aa1aad5020cbe223013a0e16c4b03ea3a9a8fbbd453042333472d25f327c913f0aecaedbcd4ce46e81e51b3b143e1552e73ac64f61bb648129a14ae466a293d18ecd4f775757a7420c35af72bb43762f93955d1f3192c41b245d2bfe134228d677c27c04aaa5fae5c698be66dd8564ca454fe21028cde2ca974ac2f03240f1046aa9f502afb273a61bcdab700ce72bc1a96149c6be510360ee38ed61d6137be4697320b59e21dd8bd0cefafe15ebadfad76a0ed0cdd1318010b32df579576fa967cbbefef42f13f3cc53a01019c8cb18fdce7efd7cb4a2e21614b1c0cac21618f7b2188572f24dc74efa351c447d78a5a7450b4525b0ee214a1d8584965d12429fe3678d0ffd9b23bc8e7a68310e8258999040d1584c657032ad80452b8fc8183a7f438efb802c82b642caf0a9b3a04fcce1cb150dcd52c1b6b00d91e068d455fd4f1181bc21c0a256472d71a5d0d8b78c74f92423630f10d60480cd61bd6fda3ab3c3610ec0608cab9d865e847c73a25fe6af8c38eb6c88e1d537e5a059c30d9bef3c75dc79c43047ce4d99c42781c0edf157dbb4bb249d86d10cabbaf10dcaf3a43b8e64a17f27bcb3e29d374fedfa57fa110a8ca093f277d248cc25bf39b78a7a74162ca6b6021c79a0b1e619a2c3ce7e6c61c3f086e3d96e84868e03b07aa3998fcde3c23ffa790b56c81cffb548ce775493de1d2e0dfee16465cbdfb3d5eb2fa8c38d3634e0561a247f48711f732859672446ce57f5684735c80fd5e2ad4cf02e9a4de2680f6acd4a2e6dc250f2df0dec2feec2ff6ef07043e6ce9f6aaec4d5f052b07d5ab79599a20b50512ad620c60194ee0aff47bdba8edea89b8b7ad76d68c27d2c2db5200f89b364992c9188aaa54a9a19eebd01d292d78fa5896c142b42bc97847128644199634f804b17c8e2e4998298f3846c70377c98bf15df709ace1930e68a1e336c7cce9371e181eecb7c73a1c159a3ad697b144b6155dc1c30fbfdef750d575ca962e869c5a3673eb0845bf27cf728e8b752984dcc470b3d77e6c56b017ff1259c185b1933a3151a3d511eeb2ee0627b7ea88d6dde1fd0a7e6ede78e17e62d037d99e029f90ba75e1a1f8a0db96686e141c73be781a0a23b02da01bc9b666895bcc64855e6c0300a3438542c5ac38d0b63d21727d68e4ffa84634e4ef53af5e0de7673b6b6c0cf61c0c305737f3ba3e86bce05dd096e8c6f55f22d02ff66f31afc889980181ebbe54d924f48b8bfdaecb6a999e3c742c4016ff6cae0a5a6229907c14067c69d6a548926443ee35fd98cd019386169e505dadce53a250ce4332d12857619d76a05ba8cf8d00e9eac0797c8a891eae0c42af414a79a41648a47a5905ff7aab5be1731db3afff44a860532f7fc09e91cb74eb8df1bcfffc8e1ef6da8cc79459182ae8232f28a4378bcc2b70b82cf79f87036c61655dd2c53bc6dbe619c9ea824584937241b569e191f28ad876fd4bebdc2ab0101040923b83b5251262a127b54ef7b6f3e18e5c1c9e92fdfd1bc56f6b8ecad9753b8e8667072a132a81edec8a62f6744da8959e9a93a9956e6442708011f22c81b6314a18298da87886114dd6236956fa6960e554abdd68bd34530b45170195596c1d4db893192c19b615549b6578c7f15239fa4856bf0e9f4bea33b1fd8f220d8fb85374fd8caa5cf0757dda7b6799e03ae93c88490324166bf98e8c522784d13735f3b1557a703ef11b392beb897ff138861c968d13cdafca21f930d2c891d49e1519d6db5d91e859616b2681d49025b8589f16ab762cd0e4a4001d8c6fc49c4ca5865bd8896648b6e2eda01fa0cb3c8e50dfcc4e95eb0ef17f675617f8bbf9e6b54b39f25f08b3f0200cb6c4f38d2ed7718ae9fe57b7a39dd4a49c0055b8847b8152995a10d899e56a08a299121c32971761a9bbefc1e2d9c1616bdc8e21b1692ed5de4845f84e094d966c121a205765e8bb43a5dd3ec9c397ffcca6d2016d4e13e5fc80b6d0d951d15e63683324aea0dfff2801f7e8990ae20efd5abc84519383e41cde9d89dbd62d7c64f93a1a01f2db2d9138b47c89581cd6daec1e7f63839f0b951b6b9583d91c03f955c7d41b1cba565aaa923a7b9504d22b0ec6e563075de52e56e2259426fd753f08298ca45c211f376ab268cd146730ae691153b06bc0d2bdff05b17604064ca65d535d84dfcc432d4722cf3500f152fb3dd485b3d10685053fca74601f4e7576bd9dc7df064c0e64b37d3cae910d4f3a8297dee52e5686f0f594ee862521d02d56f42f9f89e9e24267990071ee1272a2fe37e55dfb60b116e8fa60640524b1a92b5e5c87aaa7b6dfd9fc7105b50bbacd02ddc2f0f14db693bbff530c00146221d0b5fbe1090692bde8cf675c903a59dba36fc5e2831e972dce5b129001819ff051111db6d39314db48b5c0fc610d3662ac0de027e2c02ccb18f02b73f1bf1832289db4904c27ee109bc3dc3fd5956b33a86e2834bef4a23a9b9df12fed75f229289d19ddfef165c03d70219e6dc5c7ecb5d4585c242cf8470a2bfdcb9e894680cddd89cd0a8fd4d135c8780b629b4c5b08ee4dc6119c8123bac0a97c21fca14b5f1fa3d35a972703c9c4ce63d72ab2ad41ff8be9a7c26418ffc7945b262783ebbbebeba8be3d6086a3e294e74be0e37612cab69f1fc31f937ea8212b4b22e0b2d5d64be72ef316f0a26340c845b57d80c6e61ac5dd1900782af3f72ad59da2622a618d31bb19f175a0cccac49611536da9b224694b55abc9e00782fc41552474bf92e2ebe45a2f7dd44130d6c6f1ec2b6d88e78e53b2979fe92770976058b8336dec5e84684c2279ad5df2eb778a0239fcb2997da8b5906ccd34364ee4cd23ab827c794bb7acb01934ff96b8d40805b2616e13a1321d36953d1089e2a37e1c5c0cbb8fdca3a6d2c95656258e5c409637b15553fa4acf7d5609afe5a9f66cd0ca47516116033a157eb625ac4a9e0e0ca018d0fd1fa3bf2cfc58760ac2e1f761d80d1793a3431d1cd3cecabd54b4fdf279856ad6cefc1b5e67a9677955078e62ed3d602c133e2a1b7c931eeba79336875e888e480a137503e541f5fbef89c05df4732b1881bfae5e01dda951f17f243c1460b2e2cc560260541e161be3559a4d2493e2a9ce90c7c0ce3efa0cbc36433a8156f1d54861918b9d8755a7ba827c249bef24126bfc423592201dbcada371da6dd9f677b83d2cf077d42732c1be6446c82082ebab146640ea346807d32fcb2a17f949c4beec03cf800cc39594f66e0ca7c623b0b53c567d64a7bf16fcfd796f913652d857c3b6bba167176acaaa9743c9cb2342f4b5d619cc9b7b1729a62c9dfacbe17659879c1cc7e34890a4a540aa31eeb36423348054c8d8e7b90642dae17cd8ac84836b5caee66a38aad502be77fe984a3fe7b99606cbb719b37adc4718211ad88d204db3005643409f55bb3dd3e358c0def43f28184fb4813d40965255711fb53e36d5faf670c4441b4627b0597675a8b3cae82c0667342f9494115a5feb1ad5e9455fb44890899f0de727f49b45793610f9c2f7649b64367bf3f6463043c2d6059dc71401509d38279beb6d9dc6b2b1affa5b6556194109b5e3a4917775e3b6ab3583500026575662fc7d5b580ef8ce2b9da5db163126de8cd35c5d17aa99f61b27a3317a48e549770096ae395c374884f9ef5c7124826f4d057f34a6e64b9d35a6a55376e4bc23662d54ef9f749eb09ffcf9a54a458279ca8ba732ef90dff70196363b4fa46a08f3dde2af60cb62d3c47f5a8d1664d55bd656be7170c1c8f927a8416236867d9324962a65447e74e21ef1c3a05f8edd2ecc4f4c5fdd65e24f770df83aae0286f3c5670c0d891fa6593f8ce44a421deb6c0986a7379b33388863b6ab1e0e83630fe466d4e65e5013c29922e5a2f0135b096e6bc844466a2c2d8023a21703285a12552ed6a6682bd0700674c86430ceb270df20daa62b66a35509c640770be0aa312e7465fa3f7f2bf340172d78dcfe1276c6d2d75cce021ff75cf03434facda75b4cae9ce5f2d80d1a6af233d95ffe9ba39025c9fb66cdf3397a56791e79ff7ec5cdc6a3807f5e3f7d85438dad3e699dbc2fb26f035c07022b8b1e5b11827335fa94e068de5c799edefc38eecd8c0eab8196927707d0789c695881e06de6708c22c92bfd72f150910c191a7112732ef1ef40fe7cf4141387dbd0fa3252c72ccbba56ca07241b153cc28dffa13eb2086246aaf678902e633704830aef341ec1a6d06bc4004aab18468bec1b3a801abb9614d50367f65ad4c0572a847bc53673c230fa0c264de5bb37e02e94cb1110707d78c500363586c216c51d70ca342f4a82a03b965c350227bb8730e8dfb80fdd2e7904f8556ad55c8ebedb7b25547cf5295e2a766f78aed449c831eb4a852311851e1f1075a81d58ca3a86fae749650382a6041b5f8e8aec101d554cb46d6e934d7e28883dbb69717a83647548f686677decce8fb257ab6d16f025af9923a6d1307932c4266177c0982a5fcc93844e5199c4ced0fc2d1929e9520d544bbf95dea84ad969abe43ada0e2a86e67b0f8152f1421030088b518c65cedd50a5b29880a160b78c761659c3ec048af25bb1b7d541b0e2c9598fc43b5929495987c721909b28f0ea598aafb29bbc423794d3dae452075809ff54567d0f7569174dcd36a66da1a7391fa1c9a3b68f27745f12ac3f85a1c93cd7e7df7210c63a14c9feef1afc89868186596bb972c3d8d1c3943fc27bd64f3acbf0ad249dbe1a308418fb5382f63b8b031b0b70c12b9862814a7b1b1b184b14a59d005cb27750ab438d1c6347eff55b0cad54a096c1cb32201c9bd35941e0dd79138d4d9c6482be1745a6f4d77cebc10a56a551fc597de97fbbb0a29a63737fd7c5fc1365843cc374d9048e1f2fd5f042ad905cde7bdbf88a6d1c178b5b319b28616afaa79370ec184f331cfbbd712e41035bddb765b75eefd7198cc0db89810093e89693f8f18ec0e445d21edbff8ea06482768c8f08f5fe9730708d68ae3541dffab424d2f6f9eaabe05769aec6c13c233363d7586852192ac2dbc8f516824ddd1810e4ea9edf3147bd47febe8ded2082d0595a1d943a417383778274fd1cb9ac30deb04e664df55729fec13c229dc598713ef69ef09ebf10f9b2dca3e3dc282d222a62eab4345edb87b710b7d7bb6fc25fa5f78d002ff66b014b87e50afd548943fe48eb5083f9f4cbfeca4e00a2c2f69a2581fcf078c3724b2094abf9715ff1db5edd8be5cb6d6b006c115b7631d738547bfdb40d9a1abfd95da052fb4df0f4a714209a857e0d6ac4b2494917026ae2747ac3be4a7fb0ea84ef8be0a135cac957477b4b22b147f0c700473a439ef2f015d155d7bcb5e0c57748392d3ce4c8ef11e82be1167839b650acaf7f61cfb5a2049ae8491ecb2b2bb2790f7064c07b0feceb7d379ccee133b732faa558fa24a245bf165a4e3ef1328898380a7480cea476566599540fbae6ec869b28168c1cb68e2cf169ceff469d2175d6aa0bdf71032f143e19c3fcb4e7efaf40470d76d36dcad1d11e44821062f9a0a7978c5ff6860ca5bc3ed159e66156b72db4b1ba8d8797759c0bfa5ab7795fc5d6f99f22cb4cf496591149125580cae71bfdfb0964e1c85757d25f72271bf749ee8baeca92aa46d0c1655cf3b9f7895b31a1e96db29be5a3454284c4f0dd394b2aeb697080af52aa15dc1ef42c67e6daebbffb0600b5a6b3edb29fb1b069efe0a21b42a7ae63dbdb002c080e0369c50a192eb8d871cf7c21b5bf8bde249ebbb40884f291a2249c33f53274a55e5320eb358727a61a0008abfc9247a589698fe8edc2f2066d72bf2212b82482345684a5cf8256deb980a2e3e522731526d5324dd54403c51bbd67178300bc57c7da94abbf6ed798bbdcd3b62c1dd684272ac2e8816fa7b76c4628a75e1e43dedbc685255d303ea28bbadbbabec2daaf2e732dcd408ca54bf5f78989505ba67a278ca1b0fd97a4988db22c53fa9e0e6a3009b63e275888d32f228962983f3577bbbac46d5f2327184cbdeca2bfd9a3de8b4c762a7f4621fc2075175d277d24cc6e23e25fd68468f7b0a2774fbddef0607825d9ecdb0e015187279995e6750c7888757f1a57660b94587cdc12a337efcc2c691d68911500d1c62d6654702b67682ca935c0b8e83a2f52cd5b1e24c2bd7762cbd66a879ab99202964c18c62517f24c763251c850235adfe9ed4cf3dd1db015966d66a35f0b79169b0b71cd45dfd9228eb749072d7572046abc2523caf6cea5fb9c7542a599f762c4d7a99d87e8ec6d4b9a902f00e72efc29a6ae932cd1d7b679f3b27df04be79c74da43e86f3e290014c5b5d625b23be0ebbe0e58a95ca9766d57df320ccb6a139eaf40063f517655b4b480ca3711e71806cb003e83e9bd27ac7e580b1b09e31defe93c740b75ed3994fbce00b4c8dd65aac815e179ef7b13ad745ffb5db8f3a3ad8a5ac79462b2c0c1bec234049bf7913962c7f37c8816469418aff387ce97f1a48cfb64f7b45b0d7638418b51d21324c87d5aa857f2fdb5379f62bf14084649fd5c4c87686cebb1e534c1d8bfbb059f70b091632a0ee0b80a112c481e6425e690599e58c96d57a3e4976962c528912250c42f2364e438e8b5c7daba98a45160565a922f2f00a20624d47f3455ed767f12384a42f01d73d703f33146b3d22fa5c425133676508258967626687b639110c3c06b857888983db5180f6e58b6d2f5a8f91f0593ef9cb1d49a6bf2dbe800eb2fc28698ee959274c18ee02c6e626f9dc30567ff9e504c293672a7d63d5d68378dd7b7680bddfa6f82006c5d83a7e151a4eeaf748a4af998a8c32ad6eda639c62e50d80316987b8d4dede4260d9d4070ab4d16d8f69b034240673df74c2e12311eafe0e70e25c0e0042a5365341f8387c92f1493fa633a18e2cd6c7d5060271b0c291bec4f86f5dc3e5e4948784c34e392935c3f77a5e4b262742a2d122fc3629b2b262ecce1da7dbc84eba11808380881ef85513ac95926f273baf4d08fd0554dd2c6ac5e006252086d45a04f799f55c8ac847e571d2a48b3f47154ebf9773b66718b7a01d2df0a433bf1eadf8a8d3bfca5f5650b4fd71febb445206eebcbc4f90f3eb25ae8cc6c54e70d5f616b2bbad8ac384bfcf41c864b85a874cb668536efe62697c7f815cef1bd85e3030ead1aec065be7dd05c9347acdb9f82e6ed05d35e61e8bf15efc792ddba40f35ac651488e9d19d545d24c91b05c4c7ad8e28a28e2f72c4039686a18cb5ff9db23feccf5505059e733ceb7a583a0b9c415145c6559b92edcbc380b9f394a9e51805507a24f8a8bb58c7d589068eeb1418ca162a5c319a186b2c0d681312bbd3e9035d5a0ed8e9073885b0a364b84732400dd29f8ab39db0bfb9c463629f281f5e80f099dcae6575a0e304c59480475f29b30d263e11cf525c7a67e61a00e9b00f855d35a6f5f610e2b25156d64466a6b85bee1872f46fb9b2201d9524ca6b7ab164e1c2021f4f9945a4d387d477d1e8f12363aca9349422158245004eeb5f34962e2804ce10617f34d2dd2d3c1c1733543372c13262b4dc531ad91cbb22cabfbc3be17365a19b998739c29f324f248911329568cc3f10e307865959f8826b2376a663417d1ef413f2384a5b35bc93c33bcf25a3f343e1b30e075230b4f3775f7ecf626c26c9c066e513bf6e60264c58d939da3519175dca5605685abbb19c918ed7b2f26355635e5a7382eb17e26e2896a7519ecb1b8866df89fb0176cb562304271d42b96bc37da2e436e3965996ad6dd2b07d70e1d78cb9c1579acea599fc35e9446070289945c45678b1f48a64203d764e0a81b0a567eb7f733c1d76c5f4758d9b7af29d872aec9d2494c7856172a5d56f5a5d02717452bb41ab6ccbedfb894665d0714e07442bf133d4a9f129350633159ab206f226040d9261300270b69d8bcd2850b420fe136f21018d86edc8a35bd67d201ffceb3733814b4dd0d9844a960b4721bbf657c495e300f5943d6c3c18cf84426230b67891790d29bc1f3259e8960ee544217994ca74f6ea7b2b0769bd9bdb811c807eb7acc3fa4da123c24dc36b4919a4d7a7efd4eb40b631b7cb279e65f21c4a7f62dbaea61d14308b1aa3af5f428f24ebe9d45f241530bf8d05d895ff17a220874a97e618f3a96ce67fd9f585a5857f91da1b7df773d4c417b3bf7e12acb283a841a04500bcc92c26212027a4586366ff7ee121047f89f0d7c1ecbb59ba448e6ee9dae10286629c622b6f96b63d94ffd22370a3076e748a1908e5b0ef10c11171b3b975e74d7ebcf11f5dda841175624e8d8c3fc6a619ebee552148aa234c0db7cad0df85ddb8dfcd66d74f46d8ef1b6204529583b973018037c16e874e4039e9d697a14747ad2e4c572b92568a66ab870aae2b0b44a3cda8423e952949608054036d623821da2323317a07faf2cd076cbe1be648fd57e5e709273164dd9081bcf32f6aa6e19e0ec1bfc75632f366176a3b7695716b19f39c0e133cd832f90efe90362953ff1e94f2a150eaa29a5838d57d9866bb062434974c12b2a04141ad81d7f0b033b7092ad96fba7185c889bb1396086fa6caa5f9f338d4150f3e461a7e114c36c1997f9e3139fd5fae467d6489341b26d577c3294d4ea3e9770f05c30a27c994d941918fea159b6aa1909feb51d8d3e97408f6bd37801b390f24ab4b02ee44ca2fd71cf00ac3d70fb6b8697ecb2a45783619fe4312303310d533b607b5a3a4784c3e2289e885270c4c1df93df1515c76d648e15d237dc70192c4cb846bfaf3651e180076aecff9e40fe03fbd8543d1eb35d0233f080a5ea0e38079ffb86405fc1af36da6335b595e4f51be860d636dc402d5b6337391370759b45feb9d8850caee4f725d21bf98065ec1c99599f4f852f038e2183ae41f529f7e5f6f7a049e02be5b05b269ae67ab096ac1db612ee7c77fe7c6dfb42aa123be8f46e5d0ef0af9f4818b120e613adf1e6236bb2ff347bc58e4f40d6c83611f647f1a5dd8c111aaa837d5bb35dfe17bfdccf790987f9dae319cf63d17597b6e43119618df87913287a2db42942891183db828250894f37c483aa19beb09923f7ef8a20d7d953f5558fd030e207250966159013b9be5fceb6a0470693aba3d4223ec9a6796188bf80ddc4dda18f40c999f9da107cadf0a228fff2e7e5f6c2a2cba1ee3042e3bbda464b172375e020907b13d67b0e2006b2efc5ebfc1ffb7ef36e06a05f807bd0b0a1438a70716696d8bb9c78dd5535b147f0280ceb397ba379ff4c6c2081c2f677a8fa16103a34722153b517b06c70597694474eee3591b4525d5d1ba30d83a096a56ac4137ebe3e2581ac300460b84eea58e5c9d775d3c4990aa8a2c1d339f2af5d403fa81ee2fb54bb3f10090cf722fcd40166fa91cf34428c58504b48ecdd359d48be415adfb8aa9fdf2654f2d0008e345fdba4843625f398930e5896a506e787b79bdfb5d0dd871c16408e402fbb1ca9cc4e533cdceb7966bf61569e6659858df5bdb8ff5995566db9430231e8344cc70a79de2748ab813fe584ed11478bfa323761c01fcd7008f91bda5d636a44a12c27425dd714dda0a0c4d22741d5d31282b0dacd3b3a69fb8f7c7d339b965232f9e371942879998d7c66e6db82f89a758d88ab45e9083bbf063466c7c6019f796e87ded436200115c02df7a39459ccac9dd980d4dfc471009f3980b45a1f2fc1fb37fc8a64867687e81dbcf45b4f5cfb71e95f71f7069e11c1d6ed72be430638626a93a4317a29aa652646f5f92371e7e9f0100a9d8b585025a11c03c90666becfa48ca8a90ffc9403c8025bde6e3d82106d23c924dc6bedbd5390a77e5a6335480653cfafaa07d3f39f2e8caac7d4ec6aab826d617a21e8b354b0b53a7a4342737fa02ab0fb77e970572aaa4a6d7873838d57c44084cd3386b3a8e37970bb4b1f81f3fc538fe2dc2bab9f89fff7aa264dc66c6001e34adce9a882bffbe9e49a1afe1530720143c3c7cfab8c0be4f33dc086439017dc71a7b0e06fb7e8be51c8da0bf1c418d80a807348ad34209f1a957c3190794b49820333b4f6af6b671b06c422379da948bcc285fdc1c153557902f863452d755da0a2dd535afa10308e71aa745044a163b0028ea17f35aabc18de1b0d45b3fda25b264f487412cc6356ed7734a7fa18a1119931ddc00e89a0a47918890c712dac8b21749e70337401de1c86991a9ff22689b7c9a0656ca7ace9183c88530ee9212e34960a247d6ca82c5757e80011a377ef8f8668c8fbf5c11f3a3c2dcab40be5baa41f8c1a313d164fc4984482ebb03989c9e0ab817b90f4c0dfe0f5f3fceb7c2970b65bcab699aa85e166366a140b9c6e10ebb5ea05e120b7547d103c52ef4d5bcf60481ee4ae5a5058ee0e2541cda33356798ded88a55895e537f932e4cc7a6dd15c5cd4a9b519b2ecbf8926953e909decef9f709cbcef0b99d4bc59ee87afe7cbeb50092339b55bfc8c6daceff6854deeec9d3b1e4da2a9fc310785716b5af280dafd7a65fa49331e5fcb40bcd28715773f3c8724b706a5d07d3e80ebc2e3e2f6205d0c16150f11167ed00b780e4ecb48eddb2a7aa21da1dced008d817ba5615df4d1849ec2d634ef522592b6d32e5a174f8eab861f017cc2423556c3699d1b6eb3246b6aaf18c471c89f488fec14976df5937dd02ef68e237eed14f7d2439fcb1584258b6c07cf7cc24542630ea965a8b69404ad4b3cecad8210bfa24c10e73a2511c5c224b9587da5cbf261488e3d9ba9d5ff8529b68c1fdc93ce9b62748e4efa2b86b73b6b05e7cd2d00b512d5cfbb147d905a9daca8741ef044793fabe390fd98a5d2058c607d0c995bda09e85453970d3753d6235c4630741906eac8ca03faccde416409d50552202b34fa2e03e1ec49b7f2490d49ac3f5f883cfb68cdbfd34ebed379355a76fdfba9abf1ec918b3900ee3a9b275eae89b797791207f268d300757d6b5d20ce7407922e688aa324dd030bfcb5a5999fcf90010655485df7455dd003c4650e9696b8841cea2e30cc4464f38bb7e0d8a4edf9d4c4e47f369ffb765c827e7abaf05a11fb9148af313f5ad34d3626c7923cf2a25bd23efae62bd3ef1d546da2d83af099b536a16ca6542f248cbd88b85d2969b5ebd1109984b0127b0d2be6ada02bf0bd5c915885554107fabd1eef1088f5c31cb8d1630b2486199d401a82796f47234221c6f86a7f1479b9a93a5c2e638011da72d87430b673a4ec3ee90eea6c967b0b19a666e4b63d6d5b91eb5638595054109ec8b1d982a2942045ef8c55bdd225454cffbf0a7132d8209ba077f09d10f4242c09d9981cd937ae572d387e5dd8c34ecf8c5018619c244a1123bd5fea96a27dd9b0eeb9bb01eda01880a5caa0671cf06cf6c1517578daf7fab23e058d9838be312804302fa36051e0dfa029eb201c463d22eb014e38bee00584645f5db6c5c47e96cc9104489560dd9f4ef68544f1b6a855d44d3473e84ce285e180afe5c2c944e9dde368c8be390c2bc336811d520ce85de6062052b165a9bdaed296c2d124ad3b3b65b46f39062ff0b37d013eecae9a6ab2f148d5b49350c5dbdc718dd19846da23dcf963c37debc0d457c275bb389da5244069edaaed8643d9464780d45cc34304e013a25d7faa1e4e5345cbf9f30ec75ba85833cc0abbd0518d171851b3fd77a38798e31de856e23097737239a13d148a4683713ec5f35f3d82c63aecb602c6f98c78a287bd2b7530006777299509516c9b6d37ab2f08e7b748dc716db45b4537c6c2694024fd77149d284feb921bdbdb33b108dd1da3fc28777dcf066f1433edbebe14563b27b6e29ff83f9050f472d11dcc1ee815c78237293a191f40a9a9b5b8aa7ceaab3f1ae16114efdcd605aec5ec87242c3d057aee747b0f4d14d19a9696c33059a7d258af38ece8591541395e9e633b2b877efa45324b437065470fd9d118f87495092ce18a0ea7177d6cc541b0fb96b153eeefc0a45c01cd29e88fe7366f131de02d23b3071898656c1bd6c1af0aa1e9955d0e24e1b5989c0feb06850e681a84d574206df6961ec4de7bdb1b7bcda809cb035321f43cd0847bd99cad78712d232524257407de5aeed648d0eadf6accbadb29201dd506348f6296308956de15bb208decb2f1f0d3eef0007012cf3a13c3da8c615bdc0f59a3a6db1d9ef94d8326f965bf363a8b8ee7d9a3c1abcf25b9359d743680a72d175acc2724973fd8e098f2d00d3583323770fe89a8069e6e3967c3b5da938580ef2f07cc739640284d8ce7290640a3c2a76cc08d86b433c378e673efebac64b25502a7545daa7e0aa5aa79783127f8c32ea88aa9eab2a4d5ac70f008933f1243971f8c7a236faa2618e81e49c3e224019b84cc69d1ff04544159bffd7de348a645c0902aea774ee5b37fba4a3bdeee7ee276c35e33fc3a5fa4a6c376839a11c61b9391e5c5e6469df5d3ba83d576919326430a12d94f0ab1bc13ffe80f7faeb075845f79edd70b6ecca56c784496bf2ddff0f8f303af04ee8d6573fc77fae5c7eaa070fa97d123e958ec423ccc3bc5be86d778b9b64c496976cb9db096b92e95d464ccd3de95840cb7ce20f2e6b7f14bb8421b513d8a7745e6578463d0b7a6bc8662f98afa101e96eaa89d3e7d968d0c901002b356f0c72202d14ae8ce097d025670e683779de5f38f5b2be3c19cdf2a605b41e2097e9d02e30e4441f21b06d3b4d08b963178c0f647b2b3c962c79b0df94968d0bd15af7d460947ab0391b53683c0efc7678789cb31f59d6da865da2771551e2d5338e40b2b0b1386246984f150084e9af6b39466b080f608291081313d5050192e6028d0a9b4674409cef8ad2867057a01433ad702272b3c129f190be8408809da9172c489d87a6c54065e22f613e75e96b8e36959bedb8441f918fc9b6260fe34ce9f8e2b98ffe4f6efb7018460c8feebb7f88636737a851b74f215963804f8a3681c4c1f22c5edf1485ed5c908dba5123ddd87cbd64b5dc293c142f67f09d7ce05367f4d1bc73a45488c823bc7a0f58180508b0990e9c072398fba0030592d4580f1456e51883e106f13329ee914da5e114c2793886bac44532f0e15a883384bfb9c5403f93af5d33937e146b2712191a6f208a9e19afd9a4901191f598283ccb1fe3fbf202d9339b7d6dab1d46fff9329285411368a94947eb11f63f525ee4469371f999e05d16301c7d5712607605ec3eadd3a1c6e143adf656740a05eec48df97046d1725439992a3444fd8ec86ce2ee2ae598b4e80e467e7984090041d4112a3bccba0a0df5b076f258b464fe42fd9ad0040b60c00df5ce2df354e8b47dd99c00227a50efda0473e573b04b9960fed1b757513af2e795f1de3be7a1429aff68bcb6ba9f046758990c979077f04cf91ee72b849c121270b5869422c8e9422e93390d2774c1b0229d772b96650b4fd5bfcdea057c6470c98a8ca74ab6e29a2bac039df2e5df7d0d6e281a28ed1b62cdab0f12f62e8f91542db5070720d9ad49bf5cac51365de2770a433d50e0f96bf1e95b6ebe40980bb91e6d21e439b104f3909220fc6bec28f42175973d3c42bea63747d1895693d914f1f7cbd37199a1262d4dd3b0ff6f17c987bfd2c0e9fb9c22ff64e0c623ba3478614ea4a6b76aaaf4c5b074af984cc372750bc3d00de43ff19d1869a76ede476742b50a9755992602e26c633ed9a6111c9d350c06eac38573fbd8d9a42468485c3657f3c15838dc0adb122d263bdeaf2b0c7996224d725b5b6fe01ef87e51f4413a6bb9a489d1855aac4d9a35fcd6c8b6dd632f849362aa31f882252337d330f9ffb1cba5f413515411d543ba1ae5fb06bdbf90b337e37cd1c1a4b666cbb289d71854588b029bd4ecf335ae0b626a221b38180adaf26de8ebfb0a2e4ad3649d25f06a15032150712d2bcad30287794127e2c834466dab38810081d1196475169f95bee21efb2862b48979d57c54109d1046bd6de97e0cc86bca0b306385e8aef5578248ce414493333c1e44d9e7ba42f2a84c4bdaff1aedd6bba5fe7bb584de4c2f1ac66c04a7b7f077a6157ffdb1899b9cdbe8d328e465c1b43c5df87d3941bef7327b35991cfb43794de2574dc6f60e622dadb2831eb57e79ec4b34181477d57bb7f4c815fb1b1bd285774ef7aaaa011c8f23f86bedf63769af5dd021743b144f6cceaa57ceae7a086f27d6ff70015ed1469b4d1f64cd6784ff622e6172b56e783c69c29c2bccf484f07c62dc4552c53ff083fa5d2a275dc321dcf699ab8fcdec802dddab2f6f34d1d325ed0fc7ce097eb1e86d9be4ccbdbc15809271e1398cd9ccaf2b8d6959782678f574d77c59af6e71ffb9be41d4fe9b630ab16323d3febe0896c0d23367104cf9db77e64dcb72027a7c1373d051ec6742cfc8c6719fe55ae6491471bedde2c5e38e7c33fe87c14a303e5608fee42799d04a8ce00c98fb62f75c83274b62e952d0698cd40a723f5cccef80e3e003a30059fd790ae2996c0ff101ce785ef8b2bb80beb5eb744643013b75337fb03e27fedd6b4ee6c8f15a75e6259933e79addf0576586a34d29563c934d35fc0c0dce0665098fa2828a58b18383eb8a9ec2a27947e0953b15b4b79ac99cf0417819887bbc22024fadccf0e19381b0be227249328ccbfd243f27da568b38f2aea2699acfb5a332411d551df25bcd3a548e2eb15ad4a8d82e6d78e44a6be76e596d341aff0db2ef884e02d1339468bcde8da1caf4a84acac233d731b3cafcbadfc3b074557ea7cc74e07d71ca0a52ce5736801b733447763179eacfc0279fcfc8afaae883afe9a0264d5354e53807ec071eb83cb7c0e2060fc27800fcbb51cc7447360908097c06384fd947ca54dcf7fe79d25d6086d3a79ffc65bc7694cd749d5a6a3fe296ecdd6ea7af0bb0aa8fb21c42f3be69a7190a549df12dcf8dd1ab66fea6469c7f6ac8813457d668468c46a99dd835196fe7e5551ee83002de53fcfe5a8ead9fc469aeec8e76cedc3707be7d1ac5ab3d313f7024340bdb0d166b16d05c8058dc46353bd59ab19154fc818cbc704d9fbd627de940494cf163c5574a3f2b1cffbe49355effc196b093d643021ad598a175c57e10eb1295702c29530ffe8604ac77ee7dc9d1c7082fc31f0bdab41bc1d866c173abed50c20458912a7fea71e64190616e746a69b8072cdb8eaf7e2da67d3545bb037b0a259182653ad77fc28bf0d2b4c61bc33bb5a5c11668823492b65ef7c7506619da56ada5f30efbd68495c1809f9fbbe579d9687ce2a135e710e55c524672a39f1a6e229b72ccef364b540fd89e1c1931b5d82684e87d1314a941edea5424914107a7716fe2825f35d0160beb30863bad9905a82af0f2464d66729a22a22388ac20674a84b4bd18678c3138c623b7ec6f387729b6d5096072d096822681a4e5336918168365f28ca021f4ede6326d3c118a12dbfbc084d378faf6d64d58fa8b0d4aba6d1f73ec53c6bdbbd6016d1afe2f1b2162caa42b79c4713d5bc80ce25d9e332ea0a957f8a52dd75374191c4a4906158a562451b00c1090e1eb9cc5b3c5d64a363071755ae08ce4e098e42989f80d1477c64aa25bafe5f1d5f4f79f31309fb5d454f71b92087cf2a2ec843a072ab57e2ab097969c63a71385f7c92e029054583a78f11004428538f86a8df7d2c2224e118a285521932757a40ab6df26d95416bcb91b47eb58c50f2ae25845a9e80a7ba6bc586f5989d1f36b57509fe7849be75569dbacd9381cedb879b05ccc86938092230ce71ff66193509bac56be0e6e551b91b13ca675ed400e25c2023dcb48a78d90c9c3d26e2f9d71a83c1cc67a1830956a7db960c4705eb5326759fdac210af047a5404de902728de3fe3113cbb98f74e38ec0c68192cc7ec0ba01ba5e94878681fbdc1044801a73c6fc2a228b2072331f891bc12864a23b42008b53ddba1038eafad968be1e2a975f19d23d48b78733f4147ca3db1cd11000da67476987084323ffee7a7bb1d8a7cf2fac54118101ac6c630b44e3a97dbc96cfe3e40409a55e41bb3e07058094bacd812f38fd25723f4780778327cfcb897324d38ff5bf84d84c34d710c5ee8ef321760aa9a40f146378746889b6d7bc195bfef60f4702eadac18b46c78eb7055629a713e5a49506d9a43887cc44d6039ae6db4f114b704e64119a0ed113b24ac25741bda41d3a545fa67780f8a475f17cfe5ad8861179401d205901866c2ccc04b0b1259735f6d35d0e21ade75359d947654f6296f3eebc25c61ed0bf96d39f3f4ea41f75969637cd9dcb4a31ed0d93972d2990110bac762751a757a6ef2b52e6e052cbb4eb27d9c9cae76d40b589f80c3dab2445b846be7602f07244be99fcf925239bc06673194540c21783123d846dd3f122151dd6fbcf8be15ec1a9f9e3317595dd553d8b61105e561a040cb370e6fdc878f1a2c6ec4b97caf8d13cc92143388326582867190db5f0b3add3c1fb0a1e532d2c71be177942aa615469df19886cad31f8e59025a58ea10c86394bafd870ff4d9ffa9128259d4ad00f03b5bede239b1886b5e0bdcf627fff71338dd1c67cd0135e6f4826452c2b9c41413de6b202c8f5a7dc49afce5fb9d96d5b025fa8a3f2fa614930b597673bcbf7424e31d0c4224ff724b75a80ea79f9b671d22ff299a2c6c1c103d7103c65ac38839947c5b5dbe1385bf7029b17997614d5d22ac9e463ab05581ddbda8be7489e6a346a583883a97bd0b93b66331f3f480f17a816618719994fbc70bca980b65bbfb09ecb42783c6dda9a8b8f3b9751b5481165c3c001e22f30590d00de6894992dc5f474dca6d71a514093876231ff72ce42ac230392af31430a198de71c3db6c685a87da496b32713864b6d8fb55f58947c929103380ee41af892bf74f8763d7c2c23714cc97c3a81ba2ceddc456106afaf6b2cebfa7a1806e21fafaba0ad5aa9711ca31a690905ffea50a218f11d9ada4dd9b6bbff35999fb2b402a33efe1f88745e5a6747a6d27740e3774615617cf3391497c6efd06c3f244f22ea89a03bb933ee1b202b95fad66b6e411c9286b67c48540f34afb34d87756e9400a3769cc1959a68486f96ed8e22dc4085cb1d501b5077de81631160da2d3e99dabdcd15880134bd74f197d613ab3799207cfa7b1aca499bfcc90746ddf1a4a1609c9949d986eeab4d50e3ef5e7985bdbe579dc6e702134749dee22efe67a914eed8b4ffe596b073127a65bf6ddb41c3e77d1e0b95da46c6e0d0be63e92cdff1d700f097c04c5090138be965c1b5582056bc03af5a157f288b4d022114d8cd43dd7ef973e345015d37fc600ede4fa8c479a1ac880f3c1eebec116b4134108401bb55680da80a750877219353ce3061aff25e3edfb30c3eacf4d3a65cc6afc8f29caa73ebd10670c861f8cd239f0bd518187c3926e87acb156d78b28088f99b66a01f21d30212d57096467243e0bb8609775823727440f2227299799afcdcfa0f5efef35b428869504c08751028528dbf4b7eed26c2fd3944f25c70f7ec4a16295d32678a7ef2d37bcc2e30928f309c9309c5040c5feaf650309b2107e09970119913bc30063f977df5ae1c3233374227d74332c57d15f0a64555eba8aafa92f70501e89d0e8a0cb8b7df4fb3b50032860f14b8aa73365d539d7b63dfdbfc4cc303cbaa912f769da49928d61fb92ea58cc0e3531e3a0d9ea276041fb84b23b061eded1784e314c1813400456c6ac62c552d5811c6f2524dfe6452d593958839c8909c1c0e0c5f7defb63a1e83f39c80a84c4016895b3a9193d0ea19c09893db80ac9acca76d3d6f7060a8de4207d41f6a4797d2c55c80cbd5747c2681f7bbd95475e77f002f219bc30804d2ba5966d4c4ff563efc800c0b94e0356f3f9a5ea8b815380bec5e2c88919831069c25c46b6a841a0f127421e101f96bfb892ba242ef27429d3f6aea67f58dccf764a67f36929e900f6a8b1d7cc67490bc039a6ba8773ed60a00a7984c017906d2479d09218248be02433acb29df5f785d1f9a62763b5cca93f2cdfeaf7a81d55b2cd17d77562f11bd359c41a3e499f243c22106ca217bb46af878d7ccb2df72ec77897fa66c37425d35ee54c40c55aebe84ecd0e31d0875899ca9c88c8c6129017714268b4df607cf27149790149b71994af86d398d62919ce243ec0c78e8734e5d41f923343799010813e8a718c79f915c0afde9bc605e0fb58fe8fa69ea6b66d2e7fdb45579ff7b8695968c44081065002867c6bac8fa8247b8984c9bf1874eea5fd2b0e06e39394868105d2be23375ca1ec35f2ad9193a625045142c1aaa9e3a05dbf83f7c2df636ff22e38ead8d3889fbc9cdb2c29d43d2ca6c739a977e0376ba7e46903f6c5bd1efcb1a541377f4b7915b1fbe28026e29fd1bee5c2d2a3e996573cf5d05c3ac0c73999266963779dbf812a7afa4964d90a7d6a0d5b748fb3d6d1a77b0509ee824e99a4756086bda080beb956a4389dfabe80f1b42a13b1b1940ed1e25583c81ab53e1de8d10b85d1be9f295fe04c1937fc332e0416dc84503d0f9e75287af1940d78f5e19acd619cc761257945e88c7c3a03ad10b3207e32b116f7703fbb0f0a1407cc817aae6fff2d7de3f40b707fb5fcddb007118a1d33f7d3990d50743e3337a5f381c2d1649b6fa7eb435ed8f4b97f83bb459dd5e825e90af93b9b22331a0199667f52e9882520ca0a5f1d1b4fcfcb73a927f530729b14b4ebb57360f6d04d370b88cf9eab172007a5957a8371a76004a43c6df8d6259b5851dd882d242f101152bd0ac6e4bc50fe4a066a9c17c64b1d603bafc9064355595cfb4b92dfd9423eddde4bb4bf5973279ea26816ebb960941eb69b6287aa9ba78b636b186f59a59a9fb316fa950c9aacce59ed126d4bf2d65e90930059a37f3e3d8fd756b57a5eacf382e6234434d79aea834afca9408a4b3bc861edd312f1750447ec4e4e1c9c1dd423c04f57ad5e67f889e212c0fc4dbd9627c4b2c8128bf17d7aa8f989025ebf6c24c197626edfd9719a1a5d9a16fa3fac5cd15421d5087a3811f7ebc566e1a27d66e393b1bfc0db80633acb85feeae76a872ec9f78c090a6d0fc6cd8556525321df24f87e4322890b2431a70e05e154511efd7a78748016bd24ee7583a2f86f4c53f1b737456a653d54dc8a2c301d5dbba4dee9adc07812ea949b1f1a7e3da53301ab05371bfa25d881303fa70664da84665e1e7d439bf8e5cde42d0df1765bf1085f67059a67be5715d0a00df7ac11737a66fc9b162eb05bc2a439e0ac48b403232290cf70255c3025b93ca6a2ada2ff2adf034b6d23a77640f1454d0a5581b3af158b6deda9644f84d46750aef24b74e61cc18a41c65cb3ac747db272ef9fe0e4be7f6f1d76910947f416c64178fed6d5f02eb32ae2a9dedb32281881b41c6c5230d4220653e1c3c1a9286958befd4e333a2875932caf54fb32139e71c25c835f8573fe05c48b07466c0f0af897c0970cd535f85c68a199f3973af293d40b8960e23601b8afd7b661643e73c2a532ac964cef518553264051d782bf9615017cabb26c685d99aba62bf07414b7cf2d13c2d60b0cb989135ec7649421fdcb73332b1e7799c1e9d67175deec9d4afc01e26df6cf4c465f6edee3f3059d6e2fbb9382141f1c3bc498365be4a6d841483cb7c6ae7958cd6b8fa80532bf8b7d646d5e66ae5e5405a25670b08673027aae7d7fee5db952ae4b0f298586dec3254e6df30e7d67b05007d2a950dfffc519ffec0b61de43010c2bac2f2a4de3ab370cea3d764ebb78caee016451dc43b0662bb49e0f9b63da40f38eaba9096e2e5f8142b01da50463e7da02ce6ffd93e5fd576d36d5595db8c928ec7b4d8666fc2297120ebd4059114cf55b7ba59597c92d66b46b0c1db7010b6a7f42d9d4f5c4429c4bf583f5d267f045af2f84dcf98cc7a3a8ae32275f9277d6fb350440846fe768f569e1a816fbb574fbd8742bc41b556698ea10767a51cee566aa7067cedf0a778546cf4ebb61d3e9560ede515d8a3afdde27d1b44c7ca3fd330e3344a0a5004caebbbf6eb7e04bed561a225c2eacead65e04b1bb612e439df6b375644ed1e09f1417f9f252870a67a683a97218100862f61d13ffc2acb4a767adc16f0f2ce620130f75e11e8787a323215f3803599185109e8296781e2ce1a728b9e0ac649b13093d0957a0f1d30709789a3a61fecb2411f4ff9dc8368e64feb044f00721149582d6bae00a12197ed9fbc174b8f3d775df4af5d551b3b0020def41a744560307615ec569637ff5923a7967d9b96ee6e65dd961f607a1cf1998ec59dbe8472ca2eb8fd33043d1510d19088c2b7649f71fcba62d59e3b53084a8933dd68ec63fe44685fbe66709dc57a0d133f337052db2a126d3645d0bf13cbafb425b0034b2a247fa65fabbc19b3e5ee413d9971da82dcb4ecc49f3ec1ae325504c3093f7cde5b0dd34c175f369b9e8c8d9ee52d1d8163fa5455893083889e6a666e9af21e301b1b9a0fc15d5a6b7438d4410811f520f1873350f5518f87b0bb732cbd147e6dbb788729164e6048f9c25d6e6698bbbe1fa9ce6968ffbbd10d3b81fc81d0be21351f59be546b312605101b75578dc6756a3806f17c44d2c8dd5ef42b29e8e6a0a72036bd10fd3c6634bb93eda90f6239b11739c55f2a85fd4f8d1658abe75cc8d228a392b00d06be63cc33701c70115eb9383179535694f31399392932274c3b9e8d5607f27041d4377ceb73e5da20a7a93558272cf83353de4d3f9a9d9d962594ef4d92641a3e98960853012cd2d1a38e79b601d50814cdea0cd62ffd823e7b626ac70ee9c391542b99c4418e78ac86d8f87eb6cbd8a0877379fcda1bc371bd5b5500793ae443e3e6331e8d9babbfa8db792958a0ee56653b359e62ef3fa189f493db0e62f5f0367ac11d7d59eed999506d5d96793544d506ad5b182ae44d9a4976d1f3410ba0a1de2189b9bf2305f6d1562fbb917b10281ff5ce4cad85756c9529cb410bba44dfcd5094a43b19cf3760c5720eb4402795d2b5df6f1098c96fbdb8cb42c64c27ef459a37cb2de12866e0db22f7c5d4dc34f027f8091caf1983c69c8869cf4bad340cdf670169fde6cb9b69237138c6a8354e212dc351d19b815bdd538156533c2d26e9625eb9592cdeba92dc3398a0cf7b4531ab7d619afcd048c1f977dd39314660d081e159164a16d008733402fb15ac34cdfa20b32d6133010f7416bd862503c96e43647922deca50d39e04a8d6565bf98ced13e1f8c49b1cdd94f7a038fdb133e580a2bfa63a0312a862ed504d17be7c77468b3a465d66d2f20a0e08dc765fb72ffe8dc23f60d7d2d3258bd38f71bc255f6fc3419fec2183b86115c7f1379c2ecac8d69008152eb1b2f21e9e34f1bf614ecdf32cff2f0a2fb8de5b85a58fe7b864168e2975e291b2b8dbbe34d63aea2004864a66d5cf6efdad5e6d3ed4694239a8950d01fd03653e0ac90da90199a45a80c8870dd87e85b7289449c1622c82d70a63d9829590f3a1a430292975c8a185a0eadf74a630914cba49fa32e478787eb4130788fc68c28a167b096fae9d7c21cceda3a23b92db4eb8899088900cea5c7388d0e3d2b4008fc816a84ec95d172db13cd0d2302eb9728ccdc9108b389c65c07a5dd886f830a7d57bdc2caee4c0ae10b409f1cfe6b3129596e0e878ac75d0d3f57aa00e0ef6ae73a2078290f2ed2f9b48c123f6af02ae95125685678dcc97c92dece8728a6fe4ebad535dbd3a063cdddb2e3fc6b2a866b7add42d031381fbd5663c50295ab86e23ce83e0b90d5ee63b12944e2b45f18219b4a57e1d2571ff89de7dec3e9ee9d4b3990ec0b1b8f642013cc0102b5f81ebf16496e583b326e827e92dc652147b81936283c635f408ea78a31e770878e2af3d19932826c25fc307b58a596093f9474e4709514afcad7a1cd2b02936f53d800160b1dd8c6334df0b6603185a67d3d8cd021dd1c52b3514d09e36021995fb361a32dcf09f1b2c4e257b0fe59395694eb2bc904dff34d5dd2e176e909a7f18499d9fd721bd648969e8afa69afd53aca43a5c37decc51717de795c5958be65757c998db831e516f4931ccc6842d3d483abd1f9332d2041ca328981289d65fe1a486b497ff90824a4fd813f1e23a0bd155b07a550a1f46da7f1d24e01682637c9577160ccf7af2139c76484d6a68e3659c427c7cbc1d35eb467ad2af9a83975b3499d64503324499993a6f2cc59e7c029c834060b1d1a981b218cd18a861d355af738cb7ffa29bf371ccccf90fb7aa0f451c2e11e8653f6e7fa4540887a6057ed9dadf98fb4632bb9242c944589518cd6c9702fe720bb2b1ef579f87b1226546a83e4172826a24533026ae7225133bdd473aeff6f427aa5047c8225356ff97beb58b2bbcf4c330dec28770d3efb9c693f46c484928d44e0b50c29a3fd7a0ba07bf9b9143045a640a8323f948a24d32a6f2b289dd5caa39ccd7365fe14b5970cc283659d73abaece6f2959c6c20271085a533b0f7f1e4a5bb2d37db2afdea676676a0059d717f8a6452a0b522bc5e48f4d6d22d78ddccf4e4a70137bfebdafd5dd4bef34c5a285ef62b7d93d8c0c67d6f31d9f6412a78e1451f1e87864993e61b8ec4c980f83d0906c7442e3de7b52787c62c6cb874d8fdef718a12a9fc550af89874fc3022ca5d93b6615321e3a12aaa8919241e6f19539efff6817720fffc4b08f28b78051e16654a153c50d889f9bed2a9d3fb5f4f3fc22e130aee8397bbd298205ab89fe84ea51c0cc09ddf308a86de8eda9c9f75ea93e7e9e27027b7996a2595bc3d459dbda18502961b8428a6024c99331d1bbdec23174e9e18c4b7884132162ca21e2addac2679546349ab6200a0c1cb7ad52a00c52f572f6543b7228f66ac3334a5fe8aca617924272147c976c3c0819a6386d765a4edb476446a2343094301dc2a62cee7dd6958c7f557fba0813850376f98749c706759fb99be387a8bd83918521ac4da06f3587f23525a9a0a6c644036b997358f34d9d9c94d551efe3ef3e19361e84c8af399d8f9dc7eca718823410aaf2214839b82408e9feed2976cf580b92d39ffdd8489763ebd089e307d600cd0dc880dd185c028573cd130315ca59b64c6ea8cb60fabfaaa8f91e0a264440a83c0a639825c828fc78f7460c97d3b1887aba8ee907050b46a534c8b887cab36afc19adda3f4129b349bf85403b727b7ebcb9c852a2ca30b9dc41b0385aef813f64f79b2c58b30a729783745a4f3c4a8aa0bb76207b4ef1bd9862990a2a8a1948f51f6c97dd477b8e4aa94831646bec2b41aefd3efba64bda61f4850ca85f543c2e15dbce5127428d8447480e797c7634d9b7afe6c99b85201c1a9044f06e0c46d5f761c1949e6732cd783964aea8b868d9831724ec2660bdbe3b5e26358ab1382cb2567bb7315f53b353f3b9426f3fedf4c9b2f284777ef98b207ffa07002d68677f4c570d639fc12075b51c07e215f82385d8fd06c02f69143df0081f2b56a1404c70461585528f62bffa5ec5dd28b0b8806d7e34fe29b92a38f8be7a8055958af690cbbf00a1bdbecfa14dae8f099e1ca710c3e9944ec5cb0b332948e703595f3c60c2f2347a2edfe5c6b700e9029c0f936c686420eb124c333ddb3664d10a075e342738ccb3a0b5619e33828a41437cde74ca16a438d122b66324ee5ad086243f9efbe7eef5e47c7a6fde02a20f22a64105e3b3ae517c477d40bd7674eac59624ca850ae276d677bbe96bb6658a0503a364742d8f7a9c8936feda03d946317ae9299e8ed26126731a7433fd8ccc3b56e4fdc6b6ea27625af3c356280dc46c20609ca4cfba90af550b6768508bde93a5a6c02ab3d9bb0d3f9c40aba7c9d6093cf8f9ac55b40c1f4ccf069cd7d27c810768d24bec251f43e2ed215a7aa1c8e57bd6807a048a4c4fad5f586f7bb16e74192dfeda3ea88eac7eb41ab0e36bbe6f1f46f3caeab7353d15c9ddd0ad55dd9275cd8111d57531b43e1f96d36171bd0d679ea12c42b5c42f964f43db189260df334edbf34b3a3357ac746594cbb9eab8fec43f83c490c52252781b5b8f9f2262758de9db217e3a3a92b30c9e13c05583a99558e738a7ba2ba03f98294e4f4cb1c52d0c8a77f3f22010a8b5c672c25980ad6100f49b85b515345d20ed979dcba7dc6ad6ae64ca42f2538d57bb7e807cec3b1a61ea42ac5793fb35b1ac1b98014ca868be685dc8e9eb09f23e78d87e75f3ff28640ed2470bb01f44322ac6503c0d7f8087c612b313fad48adec0a4ed18aeb62d09491420d28cfbfbae49a8052e84acde686978a94981d34bdd032b9ee5c4a730cdd81f38ef514e39516b35f29ab20064e2d0c64aeea7506157f6c16b70f71255008b208769cef102496bf4af333284d8164e70e993f1d820ad505ac8b00894c1cb09e507319b28597d5aeac31a7869af2b012b46226f2d1e9b2ad718014511b9700c243f0e1637932ca12d44775322bf7ebbc4224cec4a3668af858536a9a02f97f1ec150bb3e629f68a043cee577c793a6d974529cd912264fde25d4dbc9df460ab8daff0c31071f9ab392cfee74591b76a0e37a056862ab853bd73ef6587bb31f19b299755e6276a1c9dd90b59ed399940c2cdf631f8831ac509f4abf54574255ce64c4639d53c61904c7c7683c6745c45c23a0c39e863b60406cefd2e0cd8550e8088a33f722b714a906607eea0a7052941b6b20fa97e57294002424b27f92387cb945d92cd3a160a48b32c11751b36bfa37db5c3b284195b79b16f1911282ef24b375732e44a1aa032c5005868e50b099d10050dd9f45657b32a249dd3f1fb97d800435a425b50377e5c1cbd150ff1cc1ebc0a153fe1f6b933702dd0733952ca736dbf968b9604bd6ade098e124a4e985b8fed27f44eb0517f406a214383c70c8c1ce7f09666f259bd3a64277ada9f43b2dc1ba3caf1b5e03704c531ebaddc789413aae4a19c96b64ee9c06a709f6ae00a7c6f5d5c12633b7ea35a7d391096f9775d88ea17a8080735f44c9588bb641329f38428a2032c178e3afa1f4a35692233aae9ab9ed847f2f62217bc5bd7bd4f46f7185123bd30aeeb1fa5bd7cfa8fb631418c6f064a212a0acc641febb5f6fad28064614c7298aa4aeff24e62dd6ae0fcf4c47da03b995f69f84ad68d730f2897286b8ad0adfab8cebf2ea1e9e4545e426e76abc91564c02099ef6398edafef684a419edf6d37d787c437591a66050258748ea11bc1ba5ba7024f7fdd18682292ab7f4591288aaa24f1c14e4a1f26b15d6e61f092997eabafcdd58149e31be97d3c7216b3383312596f710d23dcff27e51d725055a804cbedfd63831dea84c7cbe9eba0d0b4c4c81bc065aa7495a792d7b28631c5e7cdf295a8054dca432a957287f02227fb5961bf37098c5d4ca4a7315dd4c9a54d60c824a7faef1b153276c938540fed48ce0ba46aa1f229d4327a62f9a277bbfd5eef14d8c7b1f497021411bdad8e8abf2050b4965eac8cd1a6a9e425a67f4a59c41c67007126b58416121d928859fc7e8ca1f49e127550deb90385db7e2eb86b7e3f36e2189aaee576a9c581269d2aadefde81b97b278dc47d5d6609e6f7a1bc95c8d84bcae0a02295c051c86e3a7014714bf7486277a442f2cde4d7da770e9fb834fce66fd89865b96f330396a35dc7f0be1cda53bb2d5928737a03e81cfa5232b163a10467cd45227c0d4aa7009b99797ede0365b10f691a7cfbba3274f67b8a666075ed30a5f2f520d296958a55fb99068af0195937f3f221769d0f2daa81526e3d7bde6afbabf263cf887acfc8a481f391bb851d3ae0c8a856119b40e1ca712d94f9a91baf31b3bf5897b76f863f95d2d0f045e786133c411ec6793be4bed17b6465317ce34e513a187c94ef5cb6c087437025cc0a4b9b1b889c495710e84098a87db3665bd63adf2f041e843771b54224a2bc7fd93e846fdb1da84e2c894978e211ef54828fde45920b238a7d79940afdfed531587500e639f87577e805ea59a488dc31802bd378fdf430edad67e8377db7a9a0191b4ddf42bc66be9bdbd20acc57c28c9afe9670d8cfad4096177b33b6486aa4e4e7734bdbd89da793fde6c68f7296121a5df20934b008c53bf507d9f6cff5b9f0363544f435aeeb97b80cd936293cf3eebac9da550b56e4ec2037daacbffee280ce7a64040c34de8f37cc397d281680df726ac092fb3a183bc0acc48e576d33598246aa8e9e7ba78566ff6030a65c0d4cf74234a403648ed4c8c75cbe2503fa1bb64f2a452ce618f71b31a0803e6c7a985470a38189fc27ef924c8667b1c905fccd105d7a8338f89f51d3efdbf50c3f8f73a366609fe7a9b9959ecb14c7153f5108ef9e480fb5174071b09dbab378a00ec1823abb9da909b90fc3d28c39837fcbe8140f5328cf992a31ccdc18af2a65773f81da2c6a9e94bd80fa6ac923b14a1497a0d3747aa9bdbcf82ac71fada7f62a273a5297aa2a76ddbed9900bf15b1270075835cf2a4cc789e67c3d182684ede966d0de58ee6cc3420c3734d34f3ee63fc2eb017a2e57c4900f9fb6c368e4a5ace220abd042eddc9c2a28f9eef767d3f615436a399347f60674a24efe2fb1abacc7dc35b0569a4cabfbff765b76e5637e9e81d3d9e44938439c8eeacd1244db612ea76afd809e5c60e9571f463b5cddfc4c3baa5b357f0af12b7c11a182e5258641f7b6be9e894c28c066d05b8e5225bc938faa2e80e3490d7689d52782640825f9fae87d9f47bb7b6c4ad33c95f28e5ee48b27b33b7490a9811ec94d129616662dff6bea6207c11347d867ff862c14a1ff4bd7e5ea556b34166c1c020526c0cc2587b10df41863131a224cb7a3eaf6d5486cb7c0473f856226febde10981ecf50f9b43fe5d043ec89d2ba6271da63c306fac24b9d2e2a723a3839961b05cce034ae3f5245bdc90bc42c4f6e921b56d6ebc993439ad0f5b85f4987b839d96bc20e03991419c83cc9d916928161e3a2c304cc0ac29287af902f1075b6238694cc6f0f9c957c162c58d444690df8ae9bbbfcef09a880add895d1a5212522a2d6aaa02c98a812ee8a5c3608caec5d164285d7fa1cdb0c78f0148a9af1406e34e8ddb72d556499cd9e6e363215d871ae95faef99efc4ebb568921cb12a6522fd1b36001435a48e53eb9ac91266f4610f088846679ad1492bad43feb32595ba9ab25faf79e887e4a421e17d5e2d41b40161b01fb915f1475fac9358cef1f824afad52ec2cd8f0c5455db82405002adf13db89f256621b88ec98a1db1288576266efdf25b57b066b9684874d43b9f9711a473aa76d21c7c9a6aabf601a19a1b6009b2bb9bc51b5fd65772c9078ee5fcd5c9383255d667396277ff45ce491666942dd2ce898142c8e4dd275a78c3af06b7029353339861ffe93597a2363305f16eb7d2e206a125e17c571a95bed15a4ba0434b5a2178ad163ade940f85de3e48d96dd50908e458193248c003d6fc7588121047dd185b2135a7f7268f2923c7445a94d081061e79120032e262e9b794bdb997b9b76bf2b708f3c21caae42ef31582a029b557ebcce34a620bcbe32a7a1bfb59831c180abfaca1c2570d28f306117ad37a67c0a4739e372c6d755f5e0e41954fdf3c68d32c7f84da1185d5cd2ee2aac8998dcb0601b3093457f2cf0657d720792ac4249956f464ae2b5cb8e9ce741f8df352f587b7f75416d3118e3263f27ef33b9a2f4bf904f2558ee0ae93bfd521ccc1407c5ecb3d76b1e5e258494dd334fb28c6773e44a5aa2b79e39db18076dd9a92296a436cbc9a1a4ea01ac076f8a283f2ad2abe0c4a3254c523bfc8b7e171c581ec4b9311ea27d58ae37b5a9f2fb53dcaee2de35a5bcd2f4ce1a123102430dea1a952660c73efc18f6369882c4b0e13cc4a691da9bf5697f893cd48cd3c9204200e00b7025ba74a503318eb92c31bf082ed8e109d8dbb6132c61d1d4588043230b55f9245b2f22a68ac24424d0fde56e43cb5ff48fc5a12a1678236c9cd58ae64ad4e773d18e713d336eecf73cb894786badc7df7c6e361cdb41db92cc0308ae2014b89ab18285501be7abce62db549ea41334d45aa431a8c0c24dd9bad0a09fc7976f616b63a251522b423b1504cfb500d9a36e6a03e8fc4185ad235dde0f6dc8f5ad80313c743b5e6ee1d38dc9af6d254dedd1f2c297a88cac996d4f8b6e30846e145e7cdf6098b6d38cf4e6251f33cbb278f8bc91779103d78c084d63ea6eaed299ec850b58e548f98278a06e8c8a420e5cda93821489bed055c3bb1f88e5cfb90484cc9ed35bf4517f5120ddd09be943b2f4c908d14f071604441d38169ec10806f095dcf9320f50dc322ea7eaefb88647c0b40497e5dc25f2e09f02b1ac35c8adcc66c113b4e15fe07d75a7d224b716f58e2ce00ed570a4d7708f647ae02d4b34838b67c91227b2bf3b07962eaa854f46180fbbedbeaa4d0ddddd1267a482a551df927bd6d591d61c39d6d0e16fd20641b7bea72ccba4b76cbca16243475f729d42cfc028c1452612463cb4becde53a6bfc9df73ace2de575e095a951e4c4eab0f0d9a59a9e5bfe0d357483dad1161168c096977de048a8a489972e2430044c05cc0be9bbf65eca0b721ee145915524c654977caddeabd41feb29aa947f478ec820044d5ac7d1def3f2bfd72b0da223d9c90f20e7c941422cc1f156fb78096b22c8285dbc89a8232cd13f7299bc92c0b881750c7d46a89f0d013992070299b3a3031c42c066cb8ea31369e46fd1d1edbe71c179df88b4143f14700cdc269bf7d9ed4da6504b976ee20f6e4343dd9a6d1f85f1f92ad8eab42da4a78950e9867b41426aaae1ab5c84e94f62ce279141b0728c8635306e06c2deb614327b21277f0f8ce6e9e729e0eee919bec6aff1a9024e0704b806e575be2bc09272e3da1dd48e80778f7bfadae41f8edcd89b7ece0c43de76cc7c92dc4f7e56206d00e45ac408679a7999e1783f5ace7e14007c3da0e0d4e769f6298ff1356d5ef9e497a84874f50c6fb4d1d9d4f8c94875dfc097d68e14e92f8dbd1a77215213353b44228f65f6526388c394a26b1841fb7f2d128060b2127383bfbc5eb62ea9a4f1efb6d1f76132cb612630c87cc35653f931f7e1337b7b595cf5e7f3ef78afe33bb1aa7cab5038014b5daa51ef01d70fc09b25c5bca240072b66c241009356e5c83314a5725432bad119f2d13caaf8702f378dd4512b02dbea2da7d53cd4f5c4508a61cf6551b48956096dcd7b9452bd53b0b44b97fd68baf2c7a551f1588626dce8cf05dbe49576183674f4b8395f2a778434f560b0996ed5d2fece01422627676ff23ed9c6709f6eb1d42d4d9e015533c43b7965f2c3104188aa10878098ddc1be3314225725efe1984d71fafbfb4909dc0afc9c609886af23d385cee4c36ad0ab4cc84bb455e1184c1372d9af771ec297770c6555cc0efa3a571c68eb309a8c07cd9da550e956c7b5501962a77e181a1b6be2c3e598dd219c4ae32bae8d126b1c9b7de0f58b7a14dea0d018e78367789865ed64d33ac9df9b717d61722c1606346bedb58d2bb52899939caaccd96cb524f6b228b37306cde0c763738884d32f324b5607d37bb2d5082e07825d3894312543fd61e907f5369ffcf7d794af45ce141a9b2f4474758ad46ada1e4a3cbcbe7b86591a6640fcefe9f1661ae5eba422f20bff804ccf7c056fb4aaba4de62e1ec28de6f73c6c77af343d5b2d271a675ee1265c29a08df7767d6c310439192a159d3a739e4d5bb2d264ab7f71b441d0a713c7a9f632700905786677fb451ef8596d01eda532e1f590d5bad119a50c13f0451dd3b5077f1fe4e76bcf384a2098db6a6d1e80965aa4f4841bc4d70b49013d9eacdd25538654753bb9a028fcb1f625859bbde7de21662b373731f90c684c48f9cc5fb91293e51c057f0106c744b6e439bdcab2d81766ffbda71d62ff025696a72747a0447bb6c29d62219e98b087c6f0983e22af239e8bbaba4a0c694f90669b3fefd36353e62e90fb8326abb312435206090903ac337d1ff298f673ae6e1f13e6871fa8f773b4e6570bb08c6d6e057d755f646721e47372873aae6b21e617dec3cb5ecf86f2db7075d2008de129fdf3675b3fe27181534be2b5dbeece7de073d4066de2e34d005bccd7de4977e4579df0e8fb51937e98d823b87dc37fef6d38e76c7e7d369f0ffec27715497d76e5303b055bc0008c01409cb7bba72358c7711fc0dda06911e2a136b7bf6ea1a9a802054ddebd3444208b54667a0c4bf819a6754748f4acd5d808f75da1a57981962c20db5cd930e8a26f86f41b62ae845453351562b4f227b7ff4ae1983efb13c6b8f276e528fb2b69ab1f231683a506ac337d9dfc367263e7d8681e746305f29293f31248a21c13b6dc432648d3af4cac8cc19c291026279eaefde4b178d61f74bb339be0b222dd10b7c8573adeeeeab5584a4e54674f8a8d83ab51fa70939d895ad1137d1f1d02a735b9b9b199a9cb0b75b2f2daf8ef601ade85f857e4c37f2234850779b6223f41f4d44841f5c84fd26069a6e2954d90454694df7b34d397bd16174668c7cab21d280d1fc30a5bffa18333885fb17573bb225649962694ac46d1e5f2eaa4b30941ca0966e31614ca8f64a82f8baeb54fbbcd394f8e22b842928061e384aefeba1065a419275cc7d7ccb4b373433222d9c85e254ca2b658f559e8914d9281cf54489f6b9a1836f1e83f9314810bae11c75992ef16bb15715e3bf18ec6b3f9d1d89b0e231084ed2f47baf8de40a9b89e78f16ce70cfc05628f7b5305914b9aaf289914409ced51c245aacef90e998d28a95cb34bec591c6f1991ecb93be6d39c829a886f5cabb712526dcca1c0d139d334ff15d17e423141a6b63bff8fa859cc0ddcb90c3d4dbd2894a3d9e5fa929105ed65f921149fb16420080840d01c64f97606e5ac9b3c26321f275e29d93708e97c8e1a59ccbbcec86bec407a46f94fdf9cc09095b9bd2b02b2889aa4e347e8ef5d97e987b2dd9641aecdbfc022ba80bf4c1a6541febce0900734dee35540374adcc95932a791af072862b0b5a928d0e00ee2f9df0912a874b79d3244b5cfc5702b3012d21afec1379c070b15b3291d090338c8d29722486ca61cdd7cb77d8a9e8a295e5398c1a84f49f3ba2d786dbd09cdefe330310fdadc0651eb1279f9695279aef9971f2816b67138c05eb2daae3091936144afd3ad49e93ad8e10388fdcffb36d9f14fc1b83274e7db9e09cf66d3001a560c8e0540dd5c623a9a254dbd9cef7459aa62a1db6f74c71af6d28e06cb76a12dbb0e1a89e71fb3553f966831057054d77ff5d61e7f936ce1051f7e8df623c2ae382a5e4158e0ed5daa6e2172994af48c21a5df2b55b8acf27b18fd5ab54b49609e530a30460cd13004ef994caa8388b4b477253949e8b4479fb201f36d906f2fba0a1c3f6c325b514e95c5d6d0ea585e5017cfc6972f4177caa7c8810650dc24903edfd8a8f2c8f7db839b1a66bf4d1b83dc6c3edf19b9d7eac7370c6f1008afd77f51077d7e301cd437bfc50b65bc99cea84c06a7ba327e0097cb9318fccf887803c9e88fa9dc7bb38f19782328669623917e28d4459ebaa23b2ab6766e4c8b12758950298ac9bbc8211c615412db0f6e58d4e435389cb77abdb57982903cca799930d5baa9e4f4b7e2a85809cfb27e09ba6564f80fc072c493b7093a05993233c1242253c5f228f81bd885f29f4df14584634c33954158d483ff1d1fa61f83fa0a6f1c2b1e3d5956b216f382610f4ee882431d5cb25e6b8ecf0fabb64feade3c76ab4e1b5a683a71bc5624709f46abaa398f22d1dcef0aecb3304107be626a9ec5f81a23f416cb3c694ce137b931a0b76edf36520df10f7c3705322179255b75311265e33c39657f36f1ea9516d4ae3085cec68248013adf487b2d94d1a5a34beafcc123eb2c3c5677c740106c8d6aaaa7eb4c69b71a9c4c2d3188f5eca4eb606bf3bd4b3c0e9cb02a98ef6c0fa5cbadc2f8f7f44f05020a3faac65de2cdd6279d7874eba4dca8d121a520365c3b34364ffd4b740d4615f9fbec59ebe608b3c4c7bc89351155ced07689453d28530735edf7551bb98c5e0a6464b33d8a57889555be8f7eb5a38b1a5342ca1348e55610ce38798242e21ec2a71ef7fb024c2ca665d004c16e4fc8ed051aac9023301a1eefaef426a81962bc26c39c4d8b6d6b3b2e71641bb3006ade6a6fb14f5ab5912d24b2fde66f459a24bed9405fcd1b934a2f9a365012067553a093c3307897fafdf113b587af338a3c673dc1e45fc3a6fe34f4a44546b89b0a0e3819d4b94977c338814a30a53243da25d48090527553352a99e084d31fc390bb267524e1c31fa7ae7e59eedf9f80e846e6579dca334503bb4d8ebb397eadcbf63ebacb19ac7f462a8aea31f803bae3eeae4747af85d92dc75c823db49cad714af07ab7ed286530bd2a8a4dd8bcda5df8ff805066234bafa47e507f8a02008ec4adf79c494dc76b9ef996fb9478ac7c2213af7da0ce5a373276979cf07429028d1335719150b7eee4ed3ed5d502a8788fe2c01636a729a7b94d7bd277628401ccb86ff0c404c4271275a3ddcd260e2093a29c6a138f7197a25d74030f1cf991e0e7381ab43cf3766c2243f7c3a7e056d1364249356f88d0f486743593fdb60fe7b6f4b1431479af29ff166a2b92918eacbce288b56fa3d2aa4b6712f0e7a6aa8f3a47bdc14ca19c69c5c8624c67055304855c81e7749f4fd4ae3c69d0ae39e744cd3b084a2ff379009006717ce5d2c343175c9084732cae880602abde5b271ba2a496a23aa7747611c93f0ae76e810ec0171c97e86d9989a929076e9569aef4392fce5db886153979610605e650e5fa662b5f7a5e2ca72f75a3b1ee9f57e4f1acf49e514327b859089be61eea6d9f62bd32c8a47c02b822e9d66a87ca3ab3e50ff2095a5bd800e48defc676f30b34b22d76268191336b9af43b093c832a3278a2acd29534ce11dab1dec8109ac9226da69da40220c832017b203034eaad20a6d5743fe77b829daf9fac3255a6fbe7a8888d0a1c6ce6ba7626976437728a6f3ea293f3762bb945cd805b219139f5d58ce6826b4917000a4a0a7e01351196eb642f5c382d6f9b1110c769a17386fc42d71109ab05cd66198515c7c7bf006f510fc95bef3d999ae148471f549119ee9e5c7aa23c52ff194662556c838c0e3b4b8c2622b596260d2cba2373f6e2b1d0a17edc3e6335b3df61ce07ba20f67cd01bf9005c7172d3b7f9a086d4f542a9dbeab9bfd8fe365dfa5ced7dd8987a73ea04cbf939aecbbfb40da42c60bef1ecb1151a45d4a7e4cd0d7995cebf4f3cff4ac848d15d96e0a36a6069bf4c951486d381c245f9704f2e05b6d258ffd880a3ecfd0eedc765b4148699020098a133b287c666c1222a8c0c0cb26016039c327aa55b8a2e7f6f8fd8260179c13e3cb98bc113d29cfd663578ec8534bec07b5fe4dd748219ed967b4bb3744ab389c07842c18e61b070dee62e643ff4b6f678baca3ceb8c4a2841c8d30348e5fb38dc22e4730f872688f0c1d8427b7ad96641186e6b83943da74f8866d89f2fa398ced1b4d381482afe41eb5463495503b7c1f4c752135a6415ab141ccabe01cdc71c8017cb94bee5ba650d16d2f44779e11aec7a74c9f18c444285d42af2a8c3bc008f065c4e96d0e57dd38eb282c8195fcf425341df429874263bec844863d2cf3f431c0e93934e629770aeb5ba815f75975b578f6287806b9b5a00adffe9efd624432be5ac0a9ed143196d3354d333520f43689164d0af178748c397a4e0381c111c6762646516749f856839734e91df5c2872f28681a6b6a931e16533673ab976bf1c524ca0b68381749020f93af678fedb2cf691d2f1b96c83f457228d0c2116fefa6777cf03e20e25e37b4c11a7ec2e526cc1784e72e4e3728a9c26d73ce30712ebebec96373348dd39722402c172ae29012cf354f259d175372aaebe88f1721879f9d7afbec0756725d593701c844b1c29be9e990c9b1ac7bb177e2e68f2ce8fcc139b6807bd848fda860871ffba398e8fbb6aa462a721e73724a109686a39db3010a822a0c282a62e013450a0272005de5ded5123c0e2187161d6a254c6b3c52d993ad3a5a86501a40fda0c78c2cbabdca0224fe1848ce22532fc43349017fa2fccd9858206377a860e53d764e69dcf2242ffa2b964858f720e88a711592d87c1b3d3d5fb008ced174127979cfc216257d63421ca9d76af45c0f78096219a6352a0bb75913aebbccc1089686fc4b07b01167ef9f7440294e4094df2754b46e690a152aa2b01644c98479c17dae0aad3e8c3cc2806103fd77fe81016a75d784a52a227ce19132386499768a9e8959f4a06cfbc03fcdbf1d1d7e40f786f251d310be9aacf60954257f7ff0dd2e8dfa7600492c2b0db29c223f123fd9a3dfe9d1ed8fe66ae59156c307de7517f6c4e59bc4f52a4ada80b542ed9296e6f534a35fa153f8f02a0af248607f4e34d1c4df7a9b760f147be3b479c7a802de04066e8918a911a7250b6c453b0fbc90f5ac4f4949e7d5324765898d581b4b64b2ea12d131d112f3e97702d932b9b3a4bb33b6b8fba62c9ba1e7ec68b515acafff603cc931ea1b9b78ecd48c88345cebe23e8e7d1659413d541b96c2f070d6dc113f1b18b22b3aac36d244077e6de56d42750d2347fdcde153b0bb4798f99504955e7565667bf775a065c20a98034de309f6fbbb6da10826d1efb1fe4cac79ac66ef1bbb5ce312f0b9413536b6be3432a7f8517f8410777a6eeecbc2fc2733956508c454b66cda278daa6ed4ea880b34c55f53fc204d910da23b9a4ddeae8778f510e792180c8ead5932758e72d14b4d499e61d7d19d853f9813e23b67bb155f92bd91e235b23ca6d2fa637500439e236d28b89b7cdd73d473fe88144d14b3392c5e069a05bfb4a1de063d8a671747e97833b3da306ab3fdc7a62a657e277c548cb508cced3dc3fd7fac78d893696d953f5c4369611fa222303f73d81c40ee4821b5b90435c553521a5329f9fda335177c3aa848b04d2195b6c4c249b4096b5980079637dbc48c593d30662100991fe47412dc8a0ae8f3f197781113e7702ed563ba9c15c63ca2b5d9885120bfd8672baab4e2897180865c4c6de604b95574b7ddd7415a26f7d73bec154d640fe3cd9f92b3b0d5695109c18e898ee64981d5b42f4c4707a48bd8d8ec8ca1465edc3a8e4a9bebe6762c898a4a75ca07023d867ce02d379eec51031b50e5afab2e0e68d8c6eb2eb79d845a94cb89f291b63f407bc4cbe8670e9a966b16db58d64d0c2a2ba968c33dd2b89b6c7a9ef015302df2b9df08f295226f445151588363d53f71a67557b060abdd67b212fb950cc2e348977d2b71d4d3a737b04b9daf6026b82794206b69319f9dae33bb541c77dad3b6542564cdffe9574deba1080e1fc6099142d10ee0849ca39454649cdfe21ff22366aea96336455558704a5228978b21024c09709197c986b0a4ccf2af6b794a74e5062b79164c85e8ec2eecd3c470d25d7c501929bb9d9092ba78820b7031423ccc92068a9458b7bd96cc50ce83f5cb7f6ba458019a832edbe88ea72010bac2b4b9d122d3d352f47258a1df755b7e34d69521051471927bfdd71c47f169a793a7b09797724c2723ac43b17c9670f6e6c86f4b58abf7d5ae1efbbb6a765c0fb09863e848891610af664af5cdd88268815873bf51ecc6b60cc8f11f9ffe64f989e63dfbd1ca6eaf8ed8eadd0244be2cd8689748952b01d1d481df370066760302ba087432af91978f76a0e8d75a0ac46828e238d14b0f0b51f2e341852e3cdc443cd41d13bef0f717bdb40314b96f1d1b68e7eacef04e811331a7db3795db42a10d40e9c32aed0844fdec380d2d2a2a31947f027ff0b29ea07fbc8d8aa36facf70a263fc7804c3a477b0af515a53b5d042a398a6913b7f6a3c99e545ab3bc58f4739a8e8efd2353b52322dcb8315a1eb1ebdc7d863dad7617decf8863e06019756f6ba3f2168d6e3f098f9f3cb65e6b0874186ea9c05c402e204f9ec293edd58671069e380c23ab49f8fe790488783c395a90dc6f64dfb33cf6e33d450914b93aba0fba2c6de5914dd8a5b53b2497e79bd204d26bc17d770c464c53aa3ef83638a40a7f5aa0e0f274434cf5716ec60b80820687986f4d539b46c24a7d8b4806a4b371b8590d39dc22b8551f4c85bb6e1ffbe3393e5601915ca50975e31ef8101526ff787e4df26f9fb5b02d7737891cf137bbb2f5babe81ec0bdbaebb7df8a7edaee50ec3fb133317c169874598707e19abebd45544d2c2a2633fcf4bc25e1886b5c2e5293ac30ce9b01ddc62769b016b3c02c290aaaf3703c5c206387c4917d6d2b0ed6e7c4ec68773d2d5bf476293f9b6fae7d75faf0d4435ac0d77257eae3996960ab7e7c1d989c0afcb03b24943355f720f9bc28f9af6503c573f655fff134ca0a87597fda48ce534ee8fda41624a31e0ef6c9808734959bf0ed4d3e26214378e3d9752d1fa7cbad3dc052e058f4b1243bd6ec66395e0c1755f9beda7cd22c6d39db442a4c96dbf477e50ee907a802021f35bbb851724688dafbb49a5f0382854c632a6ea6b91e26be90540f55df64ef64ea911735109af5bd142d26f211d051d0950c66d50cea106675295f756314de69dc641fefd1d4740b732ce79c91bbad6f5c3e64640cac02daff6b0922c34b1cbfa2c677ae7c7a152afc3a42892fd07b45b14e05456e1e9e17e4c1c519ffddb9aef851c043c189d450421c9c27a7b88062b986324a6ac6a42efc59b59a46a960b1ffde94a58ce88e09cb4018abc6d03c4caf201bad920598c7769bafebc3f43cf6512e496de8d9a9b5a5a9308a8343cf7a9d81d4893c3dbd99551c2bd5780b42dfe4f3865b6b1ff3075238e5001f2762dae8ff505e78c63ef33b7926252ba68f83bb6baccf39a80c87f6a4458c5a495b4bab0004919ac0d9368de88d2c61f6fc2d69e2a45096ef9111e7948672bc9d9124de75d9e953f8c659dba29b406e64d6dc63dbf709026d07547b8ba737e47f13ab54071e145a695364a57a9a398f52abc226bff647edb78e5435afec29ef3b9e9f86709420a01cebf5653d43f41677a1c6243b44fcf7404ce9379d14d5ec8ec3af2add3b021f652fbef1b7a6d4aa9f23028bbd6b3fc2c2653e0dc53f8f6311de01a14e3a122ebd0f042678373c8fefe945d3b6e2ca4ccc8252bd06f4ede4bd61ac2d54f58d6bc6c222e7a50f1604eb4991268b987be906c37a348d844cb205ca3e03a0a212352eeb046f8d004fb1e1749e8f5d2dd3bb1930ddf91e6b4a712563361d438126b0782aadebb45258238acb56fd1e037ac94ccbf7355fcd4af0ab708bea997bb062f4e1b16d975ea757e0b557158b9fb99a4d791709b97df3fa64bf23c833297d5b58e8bb265f4f3459997e74d6fc40fe6ab738e031ef44b13e1a855d4b3f07bdeace8809f83872fcecbd89340b451b5ce94042cc038a26333fdc8c885c454584ea6e36eb501b6e824e3ede518cec6c0889b1eba4ad9d9feb5ac51269213db34a9765fd475d1aa149fc90623b538c80dd61006909d0a29491df685eb9b742356bf852e11884a3a95b94ae5c935c25b9d9a03ed1ef635bc0a12e601fa5bf7aa0a8d89a06ea353ad3c5c0fcbdb05aa2fb9e882f1f1cf1fdfad8f1a7cb4cb6ec0ba54eacba600b90b71834fa831d38ed22f201b03fae14219eba5fbfc345205e6f69d5812daf3312e6eab5bdfe196a42af3fbc4fa29257219f0f90bbcc168478e1e1f4dbf4203346cd533f9a1e1513ac8c13debd2a0e55fbb662e0c084be34c4e55c7af83f91f18f7271277a023af5ce9fa145ebd33731d413816894d22cec41021041c8f8f5183bbee45fc3e0e13473c33f5904d07c5faa9d007f37f5c535ad43948ae5edcfc3e14252c1d60c18eb7204e667a47219b9e8ccb64dbfc4e2a8b16e64e7cc86bb7b8a70e4677c4b2488f834b699e4bca5e3d56e3d76dae94ff39c5b61af1a72e6871715c71fcfe0f90537636f7028f585071a7976c6b64dceb357614e0acf33918be1e4ade178c2c4ea055bf8d7c94e76d6d43a03fd38c89224afc35488da7792749787495f5221621b0b1ddbc6064807e2fdcecc9db81ec49539d07e4a7593d2b9bd4ed79fb70de67d5c21c76ed20e1c4209b17bd6b1b902b85fb43ebb02aed0e9664c91ac2352176cc34e0dfd6bef6d8b0abaff721f14dbb6541ee6d683a01c89fff93b4de5bfeff50bcb24ebdc890416d0990de26ecb5423076a3004dab8dd40470098d4fe111df4092c26dfc04dc393b0149a49406366ae5472b77c5c344c5dd1faf2fc823a84ea3d1c501cf985dcf604ec62ab64447db30a1e7c458273379ca64296d40067baba433986832d1057a8885c6519cc3afa927d6762b7a29e7f4be2e455bad0488a2675cdcc233db68f0e1a8b64fa55bab2dcc0ecb1970eb29ab764eb056a543672226a09ce5a0002b563950d685eb57e6e4aca0d97c003ae11eaf406fe187c8a26f8408d5985fe4d4cdcc3fa3c63dbae698a093da2593df503b86b7b9ea222400b39d864e03ff9c7ab1d9991eea89988d5d93e6e47a022bba120c2e7c5c41227bd806415f8366f147e04399552d66ebd566f9a7e5f40d6c0b0fb1c255a6cc73889070cfedc87784445bb7ff07f2daf1585b56e08a43ca8860af82f01c4113983f3047218e9b09ed9d420061150307ba36e55ff533967ac851dea910971254ad832e25b19231292a5d27edcaee35436cb121137fe1f6a77fb6a6adcf6528ca4f0af3cda0caffdde6d3a9075631eca6fabe66d4e7dc15f445007c4b0875d2c1af98ab89fcc5758045edcd77b87254c6ffa532fade269fb04261e33fcc40a89da9115a36f1a09ca8d7cdd468b4ce508d84334a19018c8411ead6c7315bad76f0f1f5665cebb587e138a323309ed8d94138d5bb2406172d1d3f1c29e8da4c4b4b2ea89c65daff97441eb2a9e94190fee76cb0bdfdd0c5fbba373885bce80d8feaeff9cfe8e7748624881e1cac880a49353437feb11326ceb147e355bdfa19aa49dd6b2989481c11f5a9ece244c6b45a766db626e2db5d820ba68d828edb39898b3e4a125bee287ac1396367665eb322358ac552b7c10c7766b1a92476b22e465afdd74bea701e0bdf6c3b66e910c6f1e3c986d3dda1fc37cf8e91aa1eb5b913cda01e956e743b6df5444bd79d2c442214882b311d4a836dfd43c374405d73b0e6e21f3df218418254e060fe5b426b7892ed3a231db77f09f81124973e40c7cbaf216393ab2e7b768c54f435741781c00d252abdd59b2a7deb401c1025ed7784b645a95f84ba6691d6c464696576085fb4204b477af6c7231820aa507a0c1524234f797f24379aaae4793d69d2b514956399d95bd5faa4e8d05070dd6d9e3b4f3779f00a768b3167152c00806dfb383f27b669ad3fead99be5272a84f75d34cf4d5ce476e9475f0221a82c3b9701e926ee8ce041fa4e59a71abb33882bb0a499504f0177d630f9ffc7db943fd7c0a99e90cbf88f0edcff7ca3d1a1196feebe270eb3fcfb6b75e2b51ee9b97c4871800d885c7cefedfec3c90ed3b9e0ca32dcf06bab90150f4ebc4becf1a225acbe8f1e79198f3b0262d5be0e977dd4ea20dce6885aff3401b943cefe3541d55c5f7dbf58dcd07398959277c11f4de8b60241ff73ed3218836cd88e8d99614e0fbb9f3104bfb907e949bd89e678a47e7ef0f092d165cb93cb7f442ed6732654fb567ae8f701c06d9c8a78a661bc2d3f71a7a537d97a41d71b4a22aed903dc4079c8649345ceb559ad408bdcce31dce95d02ccb3e1a1665e533b0a085f71dbab48844416132755e69a5b2d62eb2bf9bf9ca01c3a84f76da89e6792c92609e21cfec23db5d1036756c5a539d66fd9f2e2a8c7b8edf04b47cd102ecf74cc72eaa73974f9daa925ae44361cfbe72275d93bb09bf08116a207dd4260f4fffa4d95789ce28d365215767d447f548afbff565dda1760ca1709ac4426c2127424e6b0138f6470bc0b4e1afe10cbd309ea39657b933e0fb6512926b2618c294ce8742d3ae40359980037fdf78f955cf3f4004af2175e93bf593f14276905951deb443cd3a2094149a4d40122b4ddd60fb750cc68fdfc6b6ff13eb4a7881b23c1c417242ad7559d7ce3403d31747d78317e1dc8972cee257bef9603af45cacd72428c65a12b5e981655581a2c7556bbdc2880ffbcca85b916e1420fc359d0ac896bced91b77aa975ed90c176d677f3f6ab36beb1243089d7de7d6a31e075a759b310ce36824aa05b133d09366e17a6f92af9f254c04e2a250b9262a98edcbbf88ea2beed95734a9d85a83f3f91ea00f7f8915a2336ffed76c98dbded481382b8d12daf2d4b529cebe8a7d2e134a2220479d3336e4a27034b86a6c5b5c41e33cf07c5a0c3756a86b8dc1c8fe22b727099902e151c1e803c2a11ad1b7278d2421682941d4dfb13ffba0fa98cf9e0bbbb1010f34726ade51e1d798dd8c57d5cc98cc6f0a4c0b9b3b36d64ff3f54e1659b2cab0427199da7e12ff93da706447b3cd3909253e3bdba08912585031337aad38e810625985bb501f3f4ee2fbe12c7f5b162226ad2c9e5fca84a35eaca93657640373fdcd88cbf89fd048eb52d5cb98691a475b67b2b77d979ccf77c034b31dd2f9db7d023caa89a6613ee16c5df5b8600561f4e24e364569009df16ba1cd2bda9e9555b56b0df104c88267dac9cc957304e367be319b5febb3afdf0dfcfc560e380f78a623e7c5c4f86fbe03e94eb63780c733625e8822e8ef7c392d79cf970754dcba6ce833ac316376139895c1b64d118070c286c65f9e0ca1f48fc67f3f2dba86e63339fac4cc8276c95d08295a65bf4cfd2803033a54cd7c17218ccf7b0f6d38ecabf0c3e8a94b5409c09bee5a8d699c72f96e25b2ab18b4908eef4f6d089ff104bb344e245298ad3ed5ff1b6ff2a8ed47924595258b3674053b1494a58bee40266e5a988e33e288da7b0feb046df805b34baeac0d137d019198be78c189eedd5f23fc8afea0b8822e00f694ebea57c34013c148211ebf3a89b18ec18e09ceda6033ee3b1becec3344643c7d350cea7e59c626f970ebcbfbe88e88ff3cf0b6a940873d4a40548d4892d4706d3f2cf94453237f998e25de3e1ce00113268a37265ef063ae79e3d5df03ec87be4b6c322e7149ba8560bc7e5527a596d2133000a03a32ef5b453f88920afaac87f77e7edf0bbc154a67db349ce3160edbaf6231e867cbaf85c9dc4f92b59848b1ead1f5042a9b1eb97c422c2bea6757e2ffbef10dced8b67f2f574bc4e591fe312e270f107c3c7f889d5d676d1506cdd9344add043ec17039329dc5e33cdfac0bb3884e82188327bd816d6581e190f91f79489802567e8e99c075507fc2ec90b01a4296bfd71760c2054ee86562d99b470ab12b106661ba66da43da2a258f29141c5d20ec4c8eb564f002cc2aa0f3c92e67bbe289d3ee28b8415751e829d0ecc1cde149902293bdc003364f25b1c9d0da50a633c42b202682233e1b91a906e6fc2e72a6029fce80bd743adba272a53de022ebfb748a8567ec073ec5d63fa94d0b1ac723b882fc3a9d4c3e21d039f6b9aa4b7f255f7a84ad8f866010c3a47b51513b5ee03a8877684ebd92333d54ee790266effc9293360e3b9ae135ac51b3e3914f1c4a42308fc7b3bb551ea23be3a7437cf4e57da84af5fdf9616ffd8274cdcf34fbfbb620a23d8bbdc95e0e4eecdd46dc92dfa15755f9e8a94836faf4432e9a3ddcbc9d7c711ef48a1d944e4b17e6b627c4a201d8c2e10d407d8898ad1f7052e947cf3a34ebc1b50dc4dcc73931c34d9943bf1b29cee23b09316530dded5d643c98851c21171049472e4b653deec57030af626ddbf0475214141c3601abc10a50348d11c884e31c3c7d4e307dc27e823d8597696baeb49126ce4a175b5cc5b450f3ca52c98c7f2da6c1af60a6e796821d4a3873583af626f298a72f549de055c5a844508e0249890d8f48891578429cedaf97e8ad273175e6f4671b4bafc84c7006700014402f63ae66574cf135b73f16de214f56aebc6a7c92c9fb667e5c96e6ed01a3290ce3cf62cb421f1e007805b48cc3ef505e294b4cdd5de19758a628a2ccc80a3634d1ffcfdedef3abc06468e918567f8a6b678afd2df2077f5946cff400d06e20d17496afe5ea80068c712c520c2376568d79badab6ba08ca9db5736826a362f821725f1dd1b0367382ff564ae9bee27b64b08f3429e2f43aff07817655db6aa050df424a17c3b215017f81fea0d4a414f2da7aefe209460ea946b1716833317c80c336b539ab49c2acb2c552b77ff1956298fc7c8a0f378293f457d2120e51c29fc51beb9d5ad4ccd8c8577d81dc49c2d02a3956c4d50f1099a974c8a989c2b0619bac1cc500708be0f8085b1a8e558df0d809fbe5e15256605437df2f7655e0f7224e0557316abe8fd9fdbe0a4722f4db3bcb7ab8cb300a912196b626ab802cc6b406e08698a6ff271b9eb1401f34c7ff37613de934da3ba084fa750c436a5a93baa0bd5a060ac157d0ba3ec93b071f5dd323420b574d95961c095c6faffc52a6f31bc024be9ef84a52a89af928fca001809bf0636f5829e4c0180e1a78f960c656f73cee3dba58061bbe1a11b77dcd15d259bb3e1b235112b41087b892e6305d2ad0cefa27bbbbea0fc5a44ac494414f994f1b58195af3c16fd257702f3898f3d1de96006ccf37f40221376ac6d4da84f65e8236985e9dd578216119851210f815bae4954d5ddb2977ffebee1e5a0485412330ced77dddfec40eb83753db0824f4adf9913f99ed0ed81f8fff8f98eb01145d246e78b512009ee9f96e7d899d9a935494f8d5603b4ff7a0965006fb52525e29c7d33363a939376e2e6e1b51efd684a7fe0513f86877e3babbdef4f041e41686cfe327e85baa5c1f64879a61593b85cde66b4bb440b8e7d164e1c466319aa9e068a4b4a61900f436036681dbe8397fed2914b1f0ce0471fe3c3c38179acba931edc66bc4ef2d25d3b108d1e4e5659e65b4b72adf638382d853784325a285eeb061a6f9e9453a59670ed6abf1d8a27a5023bc84d4851dfbc700be58f1741997defaed9dee2fd73962bc8a537922c7badc401b1507d483297ee08cb717e930045c85d181d396fdbfc3f2189812a0ea5a9a61ed343bd9219b3eb5105797cf03d9d237a26466274af02669b828a4f234922ece899d62300f17f4d9ec1c7f2e28dd1b14aff40977775ec78a3a5f3c9cfdf742df2b3ce91790a0095c2154af7fa41fb2f9124ab1a1be94c21f62562ff15321ac66f940cf8f52ab3daac778ec6074030e4141ca5df9f791795b6df5f59e5e23c5500f39f4ed709516ddc452ee88f840101d6efae8dc8c88257d5cfcb770de29f4a3f4aeca9d2d3539dd73fc6478599498a41a99473e12bbb22b999da10aefad4b91d5add1fc3a9527f4a087f4469214b9556dd6a3b562f65657701a7a05546c3ede4a52b6f4b202caf48a825f9d2521ffe2e1f9b71c611f0fd6c73524a63b57d761cf3b09af6c0005ea30dd43e907674ecc6890031da44b81db37cb58caa8a69ab4aceccea9b86fd346485292c686a9cc12f37148630eff97dbf4ea0acc9dfb4dbab05d9062762f6d644451313dc1feb4994cb295ba16c93507a40abf61d1d1da7892dae1889bad00a6ae5243f221d654b95e9bbffb4cb9796374c973ac3860539d11b382c84e5bdd8c0e280f6fbfbbdcb8ebcc89ca34db1c64c903e2296acdd5fe46b1a3d36b145241b1b517ff6e8a6a747703e2867e953ed6ecd1446c3f6d7ba66fd64a4c5de208d9055cf2b1d256d5566b577a96acabfb0a0eb37210722f077f57258d854a1e3a0b7b7ddae2089e8ecc643c8e029ced3e23a73104765bd415c4db33ab06f2278a7024e2f3b7efcb9ce775019a4a409b08a8513827cc7adae10606b3b9e78fe6894ea8a002f3ffcd984b31b9682e14028906a1eac96a7a8d5ec3e88689138c5fbe699bf5f4e801b77b6a7656881db6f0673060a3a41a1ba58ba8ebeb271987d1b8378a605ce0d7e24493af384031f431db83ef0430e8bc3732a6d030268b71d13cd50d9bdb007605809470e882e0aa12af6100fbf7180f7e2f74d145a6405131892c55a5f39b08d3a740102a25e1d1d8aac00487e8a185c19ef5aef0e94c5bfa487770d55733ce7c27c3fa2937b0884b74de5a3c2dadf4fc7564f5709ba60f6a26b8839b613bde5276673c2ba402a53a1275dca5b520dffb0729c541b9b3b7f660f210bef34fc0f9d0d04bc2eca063dcb135589584c55f1d41ae2b064f0599977d73e12f9ae7a83613d84ececf8d2a8401968544762af7ae2a06b7ac791f2742d7a54c4230e8e731ee3023415809230576a55c10637de48007e6e876cca3db3180739f86c6afea595434f7936ad6e2341686e09269b8adae2823dec570933f03d81776a69a169f19f859523ab3ddc047096a98cd5accd03338480850d609f382096503bbdb41fc77b2e29a105d3de09c7a7fa4a67d5176b44bdc5724581fa8b9b3ba76e244f22a76b69ace38cd8389d9d0fab6a5fc67c0e1c636f95b031a45d8f3ea06c0bb26fa6a43404dec8eb9ede91c0b1b714d88ebbc6211515cd5cc018590cf481b78dc7ef8ccdb20c1f1a16202b03741de16b1e96ff7deeddca3fbc981e41d15cff85a6404af642e97e857c684c8eec31e23364962655c01d805ca3ade8c4b59393654b69a0ee67771e42dcf1764bf1a74982570787f514c86d26cf9d8d81d31dd74137d11f3a57bb467f90abdc7033d93d02340aee883b15d49b289f6bfb6cd64711c0f1a38daa3e304d75b742dba0474a7c7c1091cba8ffd63c2760f35615fe7676fbd6217ec98cef9152ecb3d1001160881a634449d8c5b212f5820295e6ba91c17da3c6ca73b871ff7255039d017f664f959e019bba6a00b9a3180e109092796a270d665c86d6881ce0b11e9d6f7a5bbebb2fbe5e12360a9b2a2c1d8496f26c8581dd38547e8008b30cf230c6f91004cd88dc91e3de3330d7fa3a932b3ea93ff4f772ebc38e52f234cfbe94afbaf32cba7a3b2dc418b05c7a51b2caba5e6c2356963cfce8566eb2ea6df1969eb8fb7a5f1038a0e991c2880515797f44d05400f8ca426a0568f96bfc26190937b2a0cbfea19370b0bfbe506ff7680951375c5d47199db32fd39c55a80ef9a3bbd880252b555f002a93c19813cacc66b2b5e4d88993fb23b4e804263856063a088cdf38af7d8544b4482841436de416df6c3131db691d73e12b6290870eedb9afc7227093573fcb614518eb658967c4ddcdeadcb3da59b35a3febd02d410b01e8b35390a5a89d12ecadf7ccdf4bfbbf0b6a9c337a571890483759499ccbf37d2db8a0e92382032f2a60f1962db6bf4a48573826e0bd59dc0350682dc4bfeca2c880dc176e0da9c1455d7467e8a9c2b04e4190870f1d2c7113815a3f152e71289fa3fd52dd081a3f2880b4cfa3c0893349f1dde4e69b385c97c5749ce724af1ffbf39c4f265cb585da9028e8d72a8dc4e66b3ceec8bb375e7b3c7e99a2610ad5312078afe6f52fc4d0620b754945bb8f7dc52c6fc06174b90a7447af32a8988254e7f30140f60fb05cb1dc1aa250f255047311d7fac55450bf4d1f77a0f5a4d254109354a204310cc0dadea22abb8897ec2db551dba7ca1366e85cb7daca2d32474f83532891447f996f994fd9b8c68e2778c26f28ebe0c1f2e7d57f059d64f3ac700ffa26ac4cbaa5c95741267a67fadf6c485f161135f49c436a56e0103240f0752cd3d21020ef0e82a8ea572e1db8b2d13db42fd67a7e207c7a731507afdc7bc9edc91cfaed96c4acde9439220c2f704bf9c05e9cf41c3bbd6b0e84a7acb918540f8a285bb188953391f46db84d8ab030b67e992efd72c1f625bad7892a577b086e70fe1ec15f06891dcecfac6dc3c4b31606f2d98359e56a97d1fed1e1f62a6d8d0b5b2543321e301faa9210eb7cce049c970dce887d878831f45197ba9e2cc8132cbeccb597a343fc9915b1bdac089c31344435a04eae2969927e3555eb1bd348851bfc64ff833c5a0c9a27cc168b13a1c5ea7a763d7c77368a863684b29b499cddcec8f6565fb4a5b150a4739712d71cd789c4474a3fc698d3665dce75483721cfb507e10072c68b706ea3043e9877b5dd02b965e373b50e3d37f9eda496a50c189152f11a57fe806a3b1f4337c19fe610e64eb513d5c01e38d51050b0462d387b0f4dc6145d793b104e7ee987717d0ad37a813201d438d0b56b279aeb58faa230243f539666fc3746647122970bf4e2a93c7a68bb104a33136a522140ab04eee58a6c61b6914533998c300f89261211c7cef2f959ae54d715bc1970afaa9ae14e9beb0a811fceb382910b4569c514a020a8511c6b9c5552f85423c5a5c2dee545ce1f3ece55867dbdd80d4d2559b97b19fa4919b22f8dbc865ffb941c7483887c9666416855d21caa288a225717bff1b99395ce35a4df324ba562028d3ee5fdbb6ef72b821e3460c305bfb6df6f3f3878c3b52d9f62a556cafe6c6ab2c49c99b53f72667e3d9cdb229a686c51abf4e6907986bbe722c2cdcfde61dc1cd7c657637f193405da4f661559019f2afc9c79ef2cd5135846e3c0ca4ac199934e8b55f8ab3f276b22b09abfd0a61ae08c67d1a6441b61d602b75c3ad2079847e0de55610402a7674df458d25b149fb754c0b0f907f2e88439c7522a57cc05d655173d55a004701bac14424fa5e96172bdde41f356d47cb0126457bfb99abc1ad3ac97f54986116786ba3f5d307f89c763328e8fad48090fb9b3a5d3b87ed2d2136e12ffbacc6d91bb05fb2c56dfb4ae7c280974339c0a4ece8d78a3998a0d0fcb80ff891f9c3e3e615e64ed6b16737aa9cb0438daed12f17242938968c567768ec2d45a00278db4da552ed002f1c9c2446f383dcc664780fbcdb9cbe4d48f58f781acc2f6a53b7522d0501e746bb11f72ee4218ae23e106ad43337769676790e312c60fcc907c21404b855c2b8a96b37a0621897480b0e11a6b504d65da87360074028ee64457b12420cc7f600ed98540fbba03d12e94ddffa4e0bf33dab9230817671726bf27fa6605e931347f4fadd20354c876bd02a6ac2db9fd68c07b4360e0a03492f11d859af1e125604bc04a6cf41d8cbafc868365bc330fe34580b6fb9d79cd7b27bbb53ab8827ced5b6953683aa3b14efb3b6a4950ab0232b62fc5b1886769f4dc5a406461d938a34c7b2bf4855b111e2c55589cb40329293222a26fdefeffbc68a5f0d649b9c41ea39a108b6c1d5287a497048fe72062abb7a9fcef4678590eda1cc0f98d3b85c8c95e5484e6a5d17a48dddcdd176b7904954563e27f35ffdc75923cdb1f387f1648d5663ec9141d3d289454e15e519261a62d76acc035bc7a51b03e682dd10bcfadffb0b0466ef9cf493d83e9b5c3a43a3ccce92e61a0adb7a270f05229e89c3deb513f6e0a1afc4396ee12ffe6b709bfd1405938923ee3e47fa22364dea4918b5c333c63c365b374a9d07e6362a51797cadde88f6100905af46af83072f11aafa2823ad7c8ff5ef1d0a2a16af30acf8c47a8b8c1d675ca6380c0d36e21fe2fa2800e507e107c38149d34948748e896edc1dd2617b155ddb155eea55fcdbd92d3571d00a3dad44b8a05eddba6234409b7856ae26432fa27b9e31681102766e4038be7f5b250e3dfcd4846e92fd1a7cfe05271cd986de28e9991aa7f6462f4c90003178fb8d1ea6e555c4de647359e8f5566caaf31c32f7c74d5f2fa25e0a620f04c50368bcf0c2f79f923d52f583be76ceb7eb90a91277052338a11982b80421d4ea68dc0eed22a51117efed7db9179f85e4dd5249eb421fa0fe07d42fdc75a7a552169a892a8e90db828b0022e3b0b36bd29cb5776e42e5baebabcf1b189ca47673e99dd1d5da88d667e4b909bd5ae386cb93215bd6a5d6e20af8325ca139d93fb6d8535f7a72130c7f1a3cea282019bb4d735a7791b6bad6ea9876793780c830c949618d29de62a2189ade50365778c4212239582726e84bb699344121116983d8a718dd03b47e0db5d7bbb1728b88b992dd017790dc75eb203eee1a0f81e65199d0181d4e1cafa811c8ee9e6780b609d9eccc7382e9e31245d11697b8ba860df0d5315bdd4384f2287729d5386d523531064ef3a3cf7a54db5b0c3a0ef14cb1f8e3d015cbc30c7eaf4af7e6a872372c5e1702a303f5044e5180f62038b7bd86fcade4aa62453d65fcd06f49735480987a5fe3dfe67d243baeca50503898d90d4dde4e602fef93ba10fff61104d8874a7a1bc51638512df5e671bca8d588a161fd7a806a11c8113c3ccc63c330fd78e0d5140f5ba8f6150131589e6132c444b593e191f6fb81e7560a9600712c1a2f013e2179bc421add7e85612e1ae7c34fb8d8974f2a2ed4b293360229a8d2cb19af3b8ac73d6f7ef6bdeddca2e7a84a00aaca6d326c23bbd30aa3f834aad1d0c7001eaf5d19a7532fa8a32ed7920c1cd5100748433c207eb222fa83aceece6fd5003c1fa83511f1b54c33161080e77461bc64a34af25182aa5088faef33eda1de9e93d25c991210f308c8992fc8d2e2e769a6fea48f41c547c8effb1896cd46c820c9064d0b4c7e2dc923e976a5531a6ce329fd2f5092100fbb195931048b1816f9ca01fe863061a8b5928a67ba40e427e938cd71d811c4bceb3037c0ee8d1c5de6589f7c940f2b84d3e72dd1933188c46275b0dd1ea65306b3e8f1c21bb9ac1281c195aac4146a434861b59de93e899e78423ec4f9f39729e0291ad26d2f578eb5f53e40326df9122a078993b95d8b04464725a70b037120162f83c182ecfd78465ed941e5c418940e5b0391e6e87fac840c787a9eee45953a9c64c6f389a2ebea2d1ce02cb10f430373ff67d305849fe6a1997d000277300db90c130cec9beba329f2b3c37983e64fe74039911f2ec87d74e19d0c5cd904c10ff20f76e57577baf2a1e806447083135f2b3d394c196f3cdc557e41606a7ef055120963241018918f76454a92de4915e336f768b744e12b6cd6e2688e6b31e7fd882312107bc98fec14c216583a9aa8100f8c3287d76cba62b3870f4e59745c87a48e16a2f4a3a94f7c259ac21547785fa02221f94e09b059805e3785f7ef3c82f2c3dc5c20de4733c38a38906754692151d4ed834f2327a412b9b0315d6bbc2877269e6cdf4ede3e7522766d332e17017e2d85f1dd9dfb5465a5ac0abd90d1121087faee2754d218171798650da82391e836184d0cfc0123bcb327d28a844fc35f06811949c24c249fdb90ce6fe0107179d4b091672e6daa9387d9879ed71f80b03913cfe257691b38ce19b242bcdcc475fe97f7a21dd1b8ea9a328ed1aa57682fcf5c43dad905de4d55d8b3b219de0c6015484ca794e47d90b8bd5ba2fb1c58ada84e3f1e7021338716a9582abfe42ff8b6ca79ad5ac85ef9ea54a7711b35daa8bcfe6c1f22a26bd6bcf0df2fc153432ebbe44c0e21a8c292ef83fa074da577bed7a0ad4adb2bdb5a9eff9aaa13d2cf35841e0d94601fb531b9cd7165537c22a1bfed558298b48181951d66cff62e2a8112a6dc35304c72f3988749cfe8df5fa0b8dfdfe21392a0fb408711e6642a40e5b550c21cc4bf2f075aa3e5ba57311c08148817c8d84f07a53b4034bb0e4e6b4daf565dbb74ee8c0559c3f5e8e354965470d700a37dd156c51eca2a07300a07e3c89bf9b4895223a3d7c6217c84cba68bf7c44e66b06aca9fb562c6fc120ab23294b5450ce2259f08bb5a8d872601b59c2184cd0b7db6a2fd6c7172f77b337b08ca043afbb7965e686c1945b9918b15fcd8ce98eb14087aaad14f3f91e61ff042d359eadba6b2b15132b233b99439cb3807ecc69d78d66fe798adb0d6050ce5290c5b706d1274fe93f5fa9791b10c3236e7f6aae7b0cbbc1102cfb4bff36b9a133cfe8b994383cc4a11499f89c5d4d9037fa1d2fc153d6bda724ebbb6f5a374f11a1588a706405797c5376008765ea70fd3451bfa79806732718e005f3e1388a77863d7ff8a1f1d1bd6845bfd73edc4d1dc304ba2843a4934d3bb0fa491c3cd62e063e644e921e09c84d55c35afe13434000d27a635a0d869f5d1609f59a568af06f434796337d520c4f928171757f86b96e43e3d9992ce42c4f10ca044521522d321bfc7abd915075fb7bd26bd107da3413fed8bc4152fe214cda777ac378ae23b2b99ac2d9cb9ca1a67070709da619b527c0c348f414552a58d46e38e90d7246a0cefbf2aa0042ee07407ef5e864b1e2bfaa113232a920a3b391b182f8d344f302a04006538c4351c0ddfdc8940e23aa38a5b421489ecb9dd46d650fe874227971ce4b2fece41404d19b58a908e2852a8dea9f41bf3772b28d4556a70916d96e39ba44ae25f51efe4c8cd96dd38a01f4eaf94ed9a2aa6aa24c5e7256b4e18f5968be15b5f6683c3fcf8831bff74354961f353bfa2c5eb9ca9a184a2cd4fc39a3f35bee5b193340ea7fe5f45fe714507fb9706a3cacef996649c6948c81c925e178bcc1a53ff66e2fb2041a056fba5a29f69ade8ab421f9a1f3dfab0f029a726a50a9c69434a9fe0665d780be14f3ec99d7672100ed0efc7bc0e00df3d441933eec30f94e5bc19ebb30d665efaa941430fba1c0d20cf177798e42dc19ad44d13bbdb997523e6bef446b25edd61907f4c20b59cd51d98c7727f36f5e9d7abdc6a5182fa5ba20dd04728d66a2a8a17e4010e9a75cf136dcb96db8047dede579e2fbd7496993c39be6e32230ee341796c37ade3506679fdf31b1c1604881de30e91fadb3ef3ed19d12d8ce44a121ddb7da1883e769d68e9884c6826470171f2d72cc64e985e9a096f8c22f6971b29b1af7121d6da50dba0e8db47229cc86c93e6a5b914d3f0e44557ebaab277521f9f41f52a27de0d11feadc4624acd51e7c498fdc57d2740b10117cb06fe8aa87d4f16d7eb096c43b479c3270eea82b98824ef67b59fe3fc715b13e7d2b836e55c5dc8d4d160bfc233d4b067d4e5f0e9504658638f3d5ff63399805ba54d7085be1f44121c802ba9f22b103166e8be5b153ac7bea4d5fd704dc43866bfa061e610b52e0f559d0348d5eeb881277a8bb25bbe6e399f80c2ea24917697c73a73c514c4fd2a058a92230c4c4261b9f79bdf272152425075831ee5c02cb07729a54eef8fa155f1c6042de405e261c15ebbda698207437ef374c490b4ebc734549391da623bbb3ee36d5bbe23901883a97b2ab4f50608f9df3b5c6cabdc25b55ab23bd2db76a969d451f884a94e569d29f36286b1e46957dfce1400461554b1fd82e1046cfdaf1d533ea79daa837481016067043b2da416d210d7e03e4614841e4dab36df55b72df3b032c34f50bd7b0df8604992aa554d76cb66417ecc72d5b708c292ede4ca49382bc99d7d0ae7a86e23b25a7b381da6d6e2140d40edbd5d09f0ceff619a562aad2692bf5b51d9a23434ef0c7491e043f86d414aa40e714b724062713006e95b5b2e3d2c4688bc18cae10134cf3814c1e041b05412ba78375ad89d17b664540669e0838f4c2df941cfa700a682e80ef9b9384c54db8cc19e7478a94888fdde0f4e438f5fd48339203e087f3584a47b0047a6321d0417998033d6214c114791dc74fdae37bd756a40d420dec2265d5ef23a14f8fed44c9c45b7f4cdc507c75c3ac3dd578c6a64b859727e0028bd18013c246a3d5d9284772f205e8d6df94be154e501731739bc8f0dd9e84b82ebb6d3b196efebe7fa7745d3c54bb56d1a9546ba522120e845ab8a610c59e0fdbf81949baddc3dedba944d650ffadae2b20cf1d9ec03a225ae0ba3dd37b782d851fd3359c899a653bf6a13a9537895aaa12d7c732c1882dbd699fc515be818a86123fb94fc6ed05d1e2e7406d3d80b7bc11abd3a4f5fa498a56ef396f19cab2fe7fd43f91876ce8515b6612ba2ea64c73429b59a79910a8db4d65c4638c89967cf25f31b33989b08cece43532ca74a39db58e4e97d1515bbb536fcf40ed9a6a51637e879a7afd902c35184adc9c44b09af67d021b0dc436b3b0afe87808f9182f8326b4471441701a0f3090368dd9ca9d7ff6eec29577b9cb837c73a9d84941f4401ed82520161d2e014c46d5ded4366af79ad5852afc0acc97622bb49550c9c77082499a27fe92210d00d281983f3cc7da9f2e320ae707cd9c9d7696db78fde5d7406a8e6bc04ef8b9d6ba24ae07d02e7a4ee72e38515e7137a288e8d45041c14b9eceed39e8b24c4fca74046f7acc78028670251858ba546f97542e2809505805b2b3525d447c3592ccfa2280cdb9849d371d6fb69d0284e6d64f6462fa0ce4c3e8c55a406846b5f84239c41998262496e8d05f34c4a410ec6e0472bc1de43edc81375e532b20e634834867565790c7d033fec7d8f7f110eca2736c648fbaa7dc0e2783a02830532d5c77bc20ebdbafd843f54736648b9ff76848d2e6146fc2fef855673f3e6932f48f2562b5175ea6375c824eb2badeab1fead92bef90eaf73bfc2eda86104f7013506e72bc05747dcc54dcdc78b0b2ad2509feb85a8fc0977aa71c617086cabf8fc6a22bb6beabdb5a12e369927fc38d95d5ab1683be5f5df4de2f809e4a0e205990943dd5b57c139d16ae7e62636f55b4166e06ba6fd23aa9591601dc4c8b8a7b3db085683d9009b7f16ae64e1d7377cfc6a5c12a190f8b6b2361b2b73ff5ba46d2e743a50e9a6b07c88b8bb074b6c360959c82b8d6d80dd51c1b5915195743d0496d12fac4c0b9fad5455c78af28582b64672dfde42f4f3e77afce2997375ea70c3d2a126096e4b1e65fd0231cad20eeca98423e25525ca43c20855db7cd304e7e78be57c5a08104dc50eab58d17b88892c385099e4be842c78cebfd3c456f10729078133c72d8a42eaecd6ad638bc773bcd012efb16428b47086d7b2d13951bb23f5f3ef1514af263ea44c550fbe65d771055f10a4ebe0a40c0032f565a23517955b2ba7374d6549b63d066598f7ee7ac4f6fb43b6a76c50a739a47c55f9727f94f85ef38c4bcd207c218dcd2a7eeb576772bb627957f844f36b68c4e0f0b13d7c622b2163a81ef6da6de289fc69c2923316f450609fb98918d22190890b15aaaa582ffcbc5d1c9a5a8c1672b9949d03545ba7f3701a29fa1d0990dcee8a1f47f365d4777c610dc1ea67843e16491f6e4cd4facbc3aafe229e2a380bfb4a1fd58fca4f11d1386b95a605568b4835d5b9a39635fbb0448122436259ebfe7e1a6a85d7156269378a06d6b2d4e98f0584c751df3d3fee0c62d602858fef4a2dfffd91ea497dd66b2bf826c02e406e4b982c8d73b5674b489a203a32ab94919dbd6c6acd3aaf39f319c56a803b87c80f2ef9a02ec2bae8725d703153aa0ee83960641374469fd89071abbe1c22ffb8e1a4a25b6842263d72194acb8e756d6264fec8e9bf9aaf182a8491788b645884b2490589b8fcfec749dfd1e2a3fb53765226de61e2c49ad632e41e235630aab412eee56ce9499c8f67e1bcd4da9ff0ee650e6f5f8a96370784ff72b7fc6d8f2388462f590fad319b91240ff86a50298c811a05daeef6b5f090c4c1410ddc66f31214440cd3893266e38f7523e030fdae8e7de313b014801735429521b5e5c3670c453f6670a62d73e828a33b855281b34ab7b7a0d4e56c4ce29ecae180603e19beb50086386ab3c7be790673b9c74650db8feb6cf293b762bfb1486d30af50ce943241ed04a8107dbec728687582107c2f6965403a427cc5541944cc992a7d8566491139323600d4e64467b9b8d7f150eade9396bc8b8de309be606d849d06cfbe20975f4d6b8c85c26e706cc600de6b04ba43e4692a5a99eec99cc3c6d2e6f6017ac0604024ed81867bc3a2a57819511aaedaf591c318cf841c34ee2e83090ef1bb03dcb2eeb7d9d882cff3969b082f36150cdcbd7bdcb177a634cff5f6cff6ee085c64f8e941f208d5b91f86655ce3a3d7c4dced3ed0feef8b61b053b95f18d5faffe650012c7908a72ff326655e2c0e748d8186073e4ade4f227de145b1f8149f2785353a3a3cac158ad2c351ae83857b8893394143a83af006b7c211447afb5d47a41e5be85543b79d2950b0150249b537291856be5dbef5efab767a0aa6dad78807f11f765b10beafbd1f3a84dd70621177b369c1d40c96c7a7de84d8ccca1d2b8951386db40a10c868ea621568de79ef1c88790ffba670ba44c0dd0b8731ee785274a8ba6afbd8828a9d298a58d38a2ec6db74909d34fafc606f88df98e4b34fda503b827f8fc5568660b29bb5f07b5e9d1357ea21285b1410d8ea4a2ca10ac6bd23e05e6f20b6221f8d6dada0f7a943dfcdb099020c9ee0ab058fa0760ebabcd10090f0c77f043045497bd8a83a9ba308eccad806875892dec94ac0232c92f568a64dde80a0557135a473b15dec1747f8d893c8153b1f0467a0cee6ff97a15ee1fe0356b248a8a274b466f0af51ae2dbfe089689100726062d9229b0818fa6ad2c4b0cabf9ee2c6c8fab55bdd43a5d6850d2c6efec9898b49f3bdb29f5a9c664182f4c63e133fce0ccdc1dc654f43b3f946e34ef3c79d3a934b21cc539a51414baf8ff724308cfd74d60c87ebc1388ec8ab5002ad4e6aad36335526f5d1605748afbcd5819863c7ab7257d85774b4ef07dc1b4230e708a335928bf9a12007d6fa6b8debcfeacc24310bfb43fda526540ea93d3c2663e045fe3440aba3cc9bba4a11383e8d1fe0d8216446452f6681bc4fab42bd5a20cc800b2cde2c98cc873e5285f5c4be4df2edbe6d9d8297fad0cd9d2579e8a8889b655e45909c32df7c8b8746b5bf6ba9cbbc6f218d574be0181d0a8cd99f72729dcafe713f82a819c8dd98b00a7205f37180e47cbcfa69863146cb051b493b3a6bcf3a5854782eb047db6556e5da23e5e5f5322bde876a1f41868d577abb9e8b87e1b044cb6d6b09564f17c1c307c9c2eb288db99455e401f16ef45c88b2c08bb35b5b04b6b32e1cf23e221440b4e91a40675180f0e1fe58b0422cd51eb8e5e4cbd624241a32655142c135d3d57e09bdae63554b02b3b4cd86a96fd3cf1e75c285958a6c67b49ba3ab1c2910ae49ac17af5b9b554477ad3424bd32baa5b2541b991e1de27f7b4af4d0c62900b3b0c3f03764436e93a66debbe6d63864d4964e2794da11a1a583f2fde91a8902e668c8c089ee17f153ce4a0fb68f2c32ac6f96e6b235e7df99589a9ebe44ced435035aa04c21ac2e5046f5179e64a0d183485005827737e26fd865bca1ef66b136d8983a7f1f6a2ef3a64d2f50adf9e3809ec2bc703a0a8c362b17a2235e7187ca04c3baf57955ae7087fb4afc3674586c50bb06b0ace48efd80e05be78755f6554b30839599b41badc9927af6c0fc1c7f239839ac0f687ca287e00bcc95c721079262b1453a17a1821058b7b57fdb1fb13edfec5d37401e39f5aea138679a138163a6e3d8eaac7ece4215389e9d2eec15ae67a83c0f626d1404f946ad0e6295a16c43e2a08feba6070afeba5db6346b31e31120ac149ac206f02d131653e6ab2a003d0e0fdf85d98459a4773c5a6794363210fe52d86a1ae97b3bd87a2e651e5494a2b77ee6b1b665dffcaaa98f6516d151bf7de8813b86da695a1a9050a5b3ac4370bd0884bf84479673ef764cae4272dd0e59ac47d624f205eb845d9ad80e3e4bff180aedfea18b3810d3a9ff2ac618d779caeaf9363c4f9b616ea6a44e56998e0637d927f7dcfac4aa5d87088af831238fa5a479a94e8cfb423d0137f70d4e122b40008fec2cfefd2f79813c69cc82080ac8b13b38459bfd30c092d3b4cf4f8120b33454b7847aebf56dfa6350aafdb37a657aca6a09faf706cb322a7fcbfaaa59f22efbe9b99a5820e566b97bc009b37eefb1445428004806ab57a35539bafe48a776d947ba7753152333717691077e899c54d9f158bfd1124486d80127cf14311d339c8b899cb1016cf42d85cbcdeb3ccf864fd9ff9177ffe82c18aa4b592585f510c37dc1d8876dc4db88e0b270b651e0db81370afca3ea40bfe633cb8e90d9d758215b8eb1b1e07f138cbfa8e500100df8db1ebaf3c1aacba1787613035764ff645e8b61064f974fad3c3299fbcc578c77e0253e01c44ad7f3393d3df8a10dc8bd76a7d42b4246c30a0ccc59b083390c83a5552ee5a196f88e471a9bf936109d4738d076d4b3ef6d36631e4322711e1a805368489fcfb758a3f5086069062aeb16c7547e9c8dc7207820038f3c468137daa85705c0cde169304ae0873ea25cf8b01da998f2fe27ee8a12b745c495369df7763be2e89c0ed53981956bebc13dc3ba83ac5265fa95e63f7fc4c39a5845ef0a2378764041cbb200874eab48bdd74b591b40d311b8d5c1049ebd22e26a4f6399283db168451461b98044586b131ae8d0562de20d330fe6b91dc70e2f0b8a1b3b9253d8363542882e43768880e7d985437e5c752caa027f7f9bf2d21a6046b851843c220621062182d92abe237d62fcc72d5b3e69204d97a52f69a657f109622fb39f05ff21768dc50244cd28c195cf76d432f29cdcbc65b7df6584e02a37ce6ee9099816cb291772b060287dc09c0673368f45d9ebb540ae2a0019fdda45000b82fb95dabf6664e389cfbf972d28f867ea34d7f099a6e9b47fc68c99b68bc91bf246ee571c5db6d56951dce9dd402e6fdcc7823cfc8b2288c32839e1d79449fa3cbfea8a07740292deab9fe64ba8c3d3cce1d5a46986bf6dcfb28f22380cf1f67c3650d12ba638e2aa0b158215c9dcb2cd78a153fc7da6eff016bec13934c9b85fcc0fc834ee48204537fb7b7d371e0bc895e13615d76e046608d9661fef01d4a68c63d753c3b9b25991b265e8c14267f75a75abd6369313e5e597a391570824a75d7071bda5e11144ebf815631133f26a5a613ba657674f1734eb031ce9a7fbcb3ec7b02cbb150199275d2819da406d853c9658b0ed433317e8f7dbb138f84b11d75f955c7b5fff9fac9439de9b673380b67562659b9a90f781412d223d19798a53e6978f6c8b13d0a61ccda7f2b42ee6d08f11f6f5e3793bf70caca82700b2db9576ac0af0a2ff5c1bd12b10773a67167e529adb9999865c6d464560ccd646beb21e17961e2398a4ca6316d52e2b9dc580a5744e4fae5f47c47384c99aafa781c0c2a500b58273bfe2dcd9598d06327aa2acbbd03e3640dbf07de04726906b85f53bfc9910d966f8818f2f2204f37e113a2a86a435311a6e275b45a43e14fec016cda0b63bb84c4d092c555a23aa9839023c6d4ffaa85b49d6e3278a982b583c364660310a8c63f23edaf4504a986bf63f6cb41fb195e427705c100906b47696c17172e6451029cc4085c8f5e7110d1f39512ba0503a9aba067ecf173ff2177fe0a48037ebaff8f746c35e604bc018e1fa34ee2826eb2826b507810c3a2ba73f238d518975dfda4136030b4a04a8f33a707fa04c6a70f184da22162214e0232d819566c53bc4e3ac02ead593d36ad87fc8dc9869e576d361242461fb896e4038a77c48d7dcba37f0e10936bb2ba7a2d62d5abc1ca4c0823c6973831a0018ea6196f69932bc8e4cf64d5d7469419769bdcbf272cabb07590b53a42d681bb1ea3e9273484b8e74465ed72fe3e8ab511c81254735191fc522b7d90959b1e97b5a795f665c1af51960fac75e79a5954d7cc8bc78b075824d399b8d4e01259aee264fd2a3fb9c2c5c2551951bf7b27c0c05080864628c50f65809b2dbebd7c5680912adb52953c777e81d239a7447830b8a0db9b2ddd2ae3406c52719ba414819e7a7ce3ab3c47ac341cdd5541e3b505e967753809afe91e8008827d05abea796b909b1ae7af8fb479a0475d0ed8f7f95e339138b558be245397ecc3a6e0f0eeccdc437320efcebc6b918de0961e4a2d28f1b232b8538b10df6c86e8a57d7d01c5e7bce2f0761d402119386f78dffd12b1539238a58897b0960fbcdee851f8a604762d7f435bc335a01b6cec8724ccbc06683ffd40a4380fa72a00b68f6d3c099e5c4699a04279a07b3f123cd0e58a423023b166211f4236f68b275ed0e4221c9ea7e60d7cdbed598236cf32ca3560af7357aae05d16865300d2321b3baa2457f5f82b8951d232f6ff6826cde759b12e458aabe0e14356239165754981e890e8fd7563f65f2fbb55a3940138094239b492e0d03a66f30eb6a76a6c10854758b824c929125206f9da2bfeb220360093b474035648924f6286deadf91da57467394fd666981e5aca80cee77c04f1d12c305898aad5dcc6550716cc03ef3c1bf2c302b113d159f63a7b5d210fd4c62234e5f5fc89310521f67c5057f3dbde908673a826b2d5b444902cd2b95a8f6f9c7e1483d7e0b05490e186c804479b8d22e42a4915c44b6039857859018f46ac5aa9e9fa08fef03b4da972acfac9daf9ba2070bb3620337e48d27cc475fe4193320813bf9b5f72ab27599be9e48315c32b67266650f42f3cce8909a78669480209fb16951f9fe535590522e671c8083bc23890737895c0bb36f1df147db471a5e406530203c9aae1a239064802056d67e86036a0209b2b6f86b9ed028a14d7198424efe7eb2fe851be9da8a31c2891d09de459a6f5c73f1382919c21a4eb2791c879ca7ce62386d11e1abd36e62567d1610e8316265c1a5d47ac3bfd3acc29fc8168ed2b1a7b04bb6ceb0a6fdd586d9df63ce2c3a991b6a97331091da3b5e347f978f3525b20404deb8206103e36fa49505d21894811e2fb3aecbeb66ae19219adaec4868052cafe469201c97c9baa25584f961833c9276234848ec746a310e3350114e5bf9eea5b1f1362bcbb8ff6d385541bd17fac8ed41e19ab6d90a4c648e9058cef139add29c23d244c75430c00150f4f35c824d85f75fe7524fdd0cd49ad46ef35a457405f916db86f835d2d195319491eaade15f7e2bbd165e66764d4279415b8bf06544e3a45ac9106909559519523687e8cc321ab1832dc2db1c913c837f49e6e36e523cee2df18af072d7680c179059b67af185e5f6116ca728c52e16aa58de184de65ed6ca34ae3fcf9493711c3c9f2c69de16b9b30a83e928b826feb40c885fe64b3a83148596be7c045d951413e874675bbea8d4fbe0f3b5bbeb2837e942dcee69f6e13f8c9c4ac2abbf28e3a1624a2413252f9e1f57cbe34032272bedcf87df652b1ec8f493b4e9fe12bee5d0dc820c56134e3b78abad84a07ab03f9666aa3c60042e73eaba3f2a5b154fccfbb98079c43b0b8a0ca7873bb9461eb8cd9b672c035a496607e2266363d2b701fc45be2fa046eff741bd7b5e4d5deedc6038305dddee684a1f4814a6496137a4e77a4a2d5fad876ee5cc60a94a0544fce66e4d3cc37ccb809ae1aa91cf9df20d878545c8598fe44fb53b42c0657e65fa363b597cb02f75675347fc7b07ce71edc212651dae291b837e35de81b37f3b72ce17c5ebe37faead2755146d209e20ee8cb673ceb205c6901e28272a2a30d465cc9f549b2f1a80b8af946ee9c6facef0048bce10934282cffcadc44434e0e37e61269d54b7aa3b17ceec7a8ce41931d4dc7ce70bee976fa0ccf88f6fbfc63edfd7c68d6097ebf20709b31e73c87060cd3c98c38793d0b3bbaa7617ed70275e8194f2e29d2d4efc0be0273176026e5750aa0f7cebb785f78ce7db1f07ea92e228b40cb1e7fef2738c8f9b01357b8c7688b3a4c08b39d4e89f10f41d4146650ce32535e0cb7269b88ef4f4ceef92bc026161905049d19eb71c0b9dbc5a3d42421765ffad91dfdded7882184c32512fa31db207837f48b19a5451175a2293118e2735732590a0f179e67cb9254eef46e4829efec0420ec2495ea5668a17bfe91fa10060aed43076888ce77375a547cfb78e6bda07efc5e081c2cad694ddf569c6fcbdbd7e1984a9892edea94cc5f3a7eec04a5a6906a959853819d8f07dfe3f7aef7b90210c185faea24683305023b9c3f38a1b8b5fd6769872fa4fcf7a7df9d44af785f6e377b66fe60e9b98b8756351c4dbc428a4e8d184faa42992b19fcb946ddc4eb3482c9d0743695972cb609a188b65128c1f6e19161ea66b500d4faf1a449687dd88515ff681b8b69e0aee7f7de4b7b219dd1b479feb0c5755095b0bedd8ccde51204ef77d311e2770d7d8a747c9d022c616d644743e481d9d033f293875f509be8e63a225f9dcba326d571f2437be7d9bf3e7e76fdb098a5d5f70dc48519602287e137d38fe00149fab18f622699c82369604fb6d9dc0967b775e170fd51ff96739938f465800ae6ab1404c36a0f2e9497bebc8ceb17b3d11618ea4a4687d64a672c7bfa2954518b5466ed8b87bb0811928ca3af8e44809ee7d7cddc1d4bf97e4598293e34fd6309a171370e5e14d6d0129b526d4fe5fd214df2d04443383517603fe8a64d08720a6bea85b5c78cf55ed5fd2db502fadcc3b779bd7ae6ff2ca831ecd20c3c473d6599f8c27a2acb14bdfa20e53db8a8c8f4d1d6116a7578ae687fbbb2965039f04a7908c319e4cfc9a6eaa78aceb96c805e85e5ae6783bfe40d0e25b64f15f042c79576e6a1daf00d842509bca7ae62d45df2217838f1ee01004bb3285d18f751a2df1fba14f6c84f9991d71ee85c64525b91b5228ff77eef399ffc8f1b41e045912ae5e3b48a65a6bc529cb2f8cfa090d310ad3e8fd8229035c0710aa0f73e46ded1bd35680e1ada2ac48458f1589a3d7b4cf6605641f12c9eb9ada9497e2fc8078c0ff54536d7ce3478921282a9886e0e650d7623242b4ff3bdb6181c8d692e6dda37817825c09952304a5b9d6597d3f1d280df109f65e4e127810b56101c84f3fab3989b10d44b9e3f9cf58ab0874fde427c530afeb2b998d360ecae6a0d9e431c321c9e74368d9bc418b9c3ff417937aad83888e9ab8d69cc745f81dd553593cdab8c711cf5800f707a5ffaa9d9b5251c3afc435f1b2ca81eede9f9103ab1e5eabca487ec4762972dc368509e431768f1300f2d5951b7655f76611134ced358658a0006447f7e020114fe5ff40126d90aaa3bcc4b65f88837d211d330d7ec519d5e2f35ae1f9b08468f7a82f1518a96289d0a1fd6aac9e4b823be8cb780d8470207058dc6ae15c3a14f3a5c3044f9f4708a28c9fa21da940d3dae375383e3e5850adf4cb83b1da6f03ce3be863fee5370971ea6aa7aa5fcbc043871022ab38906b1f62ea9b72706481178d4fb3055b5bfa0fde452df24aa6248f9b3ffc3ef44e1455a7628bde59ee23e2b0ae2c9c0593a894fcbaf2478761b8aa7ce95210e7bb026b543ebbd7e0f909e3813d5fc5f6f1e199e978f1a512e0bb9db0ba5b3310724fb5acf0dd6ce1006aca413adc0cc43ce8223cd01e6328daeb4b9ba1ea33e9058e576fcb376b489770afc065f35a586eb38a5039bcd1e75cc830e25076291c78b7d57f8677c139e26ea919847ff4be3604290fcd372745452bcd48c02c9791c4e4e706bf1e35321b59f05ee0c2f73c7746973ac99c4f0ec72ec16baa178add55d91aa3767a2ca60f951ec1c753e885c743bf8b11948e9fec63ccc50e51a7cf8d5d07e88e2b8f55a1186ed608191c18f1a51dbda9f40fbe0f592ed7b0471cee3f692aba4f3fffca46d80aa87a561bd67349e2a93de4c9f05f70211d9613a3ef341ea80ce7d7ec428885d41475c945c20160d8d09a87529a5f066ac48bda0cdda9928325e4644685849d29ea57d54e5a006340de33438b0869e833a7a044045fcf6b15d4bb6bc7126bc795cc00c062700cd6055b9d8b43a9261bb833a600fae04a48cbf445e0276504837dab56fe068872d9fa421346359517f1644eb4586d9eb3fa79343c0daee729272104c29007adb78c030ff2b8fcac1071821fa7d602641694cc44c30ce5bb453091a9b26f03730f415bb33e0cee95b70c8d019df81aca753e9a9adbd07954ddde6d2015086a4ce67b5d2d1c5aeafe0aa7c07279f5daf243e72c5eefbb806e04268cdee2c7fbaf5bc97c7f564f96b7d6ea8d016391d961e9b9c26c49c9a5f7e4e9d9e791ba1f94c05e5165da5b944e40f1f3a84502e257446ad4299a4509fe3c8e1b53a035a09f1c8de99c3b73a41d4038f8f64ee47e39254fea657617cbdcddd45c3a0f95a00fa903c65d2e5dcbe421e9b6a4733e3febd04c0ad0d59786762c0c2f7ce407deba56e22b790f96e357036fc5fce996e7ba7d8f083e94fa4075a48d0e7ca86c8dca459cb6aa5abf394c595de189ad170161db154597f2468c35518c89c1e93d68b94eaa53d332a016866ca6250dfcc278e2880ba05413e0e038553302efb68ebae97b0d1234ddb55880d52140a8dbb7409e9af3ae57819d6fb96614260a261784ab8aa16f4145547fea0763617d9086259f19a37c52a673ee3f4ee67479d150fedb6e3f0e537956c903c3dfe0c32695495e820b5e1852ac21ea6a93706b55a31960ceaffa462a5f496ca166cf75ee93f87e46d5a5f73baf23672c985095d2a0c39b856def2a2ea9117f8ee5f147f901c5b048ca40ab785aad8c9ab152586f5208b020383d210168d9ca4880de929ec121d16310858a06ebe0ceccdb0266d39460ba637643023fb8bdc8e4f63531fabce999e233be5c437559d271a014edac84bf87c468a2ae2b200083495c331c6b9a87a60602409d76ed80c64bb5a7312cfb302eef2b91a12ca0e477b31c0cbd1581af5d84330a0c45c06e34aeea1135861a1bc8408b01164a5311a73054da7e5deddc5904e7461e3cfbd074056a88ba76ea741c4ca37bfcb59f116226750b2a7095063fa3eb2d414d05a20d4d444287b60484575854db123ff7de2acb3e8df7bd5d3a8872db16e94be7acce9950ee358a51f317e08459aadd2791a5ac033317775d13bcf405c4156e2422a28c5a965635d454fc12348b0b293c986427400d9a14f33ba3a42a304cd222bface2a049dd8187608d505c40f3e3eb2121f080ad4ed0e86d906d036905f7234a87e7a328133c4a82d9b2a56c566b9c8cc3909990222ba9a285309f403942cd6411fe43ac56b5db885682e8837649f1097ae12a290967836506428cdffa7b40f79b1b3042f943e887a6be7ff452a6ecd2fd9379443e0b007ab3ebd281144ec4b5ef49a49871be253fad996ba9afd09f8f11ab94c3f662454860e7bfe82ecafc8202267833eb048098fbfa43be3bba6bd435ffcbe237fd8bc12ee97e4b58e4b3b004627d24f576550ff7fbfacede79d1d68abb76899a2da3ae621485d0adf53161cd442e01b378c3124b6b6f8dd6c8d2bbd8de095c358a859a0980cbd98138268b9325ac6f7cf402b5224dcf861985e221c2be7e8ac56ffdca48bbd9ad984d1f624ff20de548d8d4396157ca42673265c836800995737b59f91e45a047fcb9932516aefe6e9e93fe55907494268975c17656a11f813e1131bdab12235777647a9840eeaba2fb9cd6318342b8c58a9800851670ce382dd938db9a0cf4bcfe1973a3325b040bdeebe080bd95b98a1b09ffa72691610ee33d27ea258f7d0a30097fe3283346b0977e7b4086f287e1dedb2ce3c37b599e19eda8ff3aeb1cd19248492787c9dd921fd69aef2d15c14d2b44dec162fbb189cf5b6557bbe60cca794fff1cc1019433ea779651786bc3169c1d2c3a5caf78c2b0401326713720213878b9b21cd50c83a06b050e4a989073e46564db128cb3645a159d0a500c4c6cde8673eb3bd295d23cc0aabfb2f37f6086be0a2a58599755a19b55cfcf85021ada1a952a929b44a0ae0572442c05c1886aee684b34310e23f0533c6db5365d60a13f0a38a7656558a7d17b60700eaeedd960af6294058edd250752836aa917f70cdfeb7e507a39669b3c3a069680ee3505a1a541ce183fe61c3ffdb317da5926204bb848d7b6052e54649dd53f8269ce18e3ea4e5a8172eb25cd7e9a12b952f4c6b71bf7580d71caa8ea4fa4856e0847d87dc6c39eac688d5042764ad4aca27b81bb487e8c0333a714720321eb534995de6888a329d967655076768b990a96b40ad3e0a17e321253ec27cde32573a126ecc4790e419c22692a04aa4202a12f3bc8e06cb6c4c83223e234927dadc6afec1e515dd2435b6ee49bcb87bc813003dc37a665e91b06b581654c845810763fcd8bf77f5aeed44983596e97c835eedff19e4ccc5169c2a3012923ae7bd0611a20743e59613a943326dad545d9c6014bdef6de524b95e63292c4f28f831b9bab243dd6bb053a80d07a5eaac9994708ca2671ce14decaee4d6bfaf7cb6109e97199621196250150e2924bdd17aca692fd00f56fdf343a6e768d9ef3e2b52d4642dfd86442206a0f8ef3bb21e88029a58b57a7790a649b8af2ee81aa00d12f625a52b6ea6762459df2d65f6cc97b9338da91e588e002557d4bb00b66d8b6cd1e43c386e06a5d4d2d0f9a627b46d510b899a81a9d975958131cf25b7591ad261183395f2a6dcc0ac7f990104b1aedb8871f517d9bd9257b2e2f26eda6c32e6a06216aa3cdde68afc765bb65a174fe7f78904915cbdc375544eef5a9d0834b107cf68b71739e70cf5c7a1383844e68bc55db0f5d590c6a6edf1f18574c80d59024d273d4eaa99fcc0af97045bdcefbf759838d74d440b5d71cf6af01762ddf26676a222fa55e7fb728b43ade5ebe02a2b73a8220b28863202d6d0fdc2f02658ede1f2ed0394a2d666355605b380df05a114db7c1c980a3f6d7f9f6935ec431d2d88fb23ee28afb81397456816366ecfe01da4506d73cfea8f487acb66ae54f30d7f6af9dfbbf8c577ffc0e37bad4b04893df7956fcbf712cf3c88328c2ee99d313630476898a4d47dce427095c7761e2c9141ce63b05324153d2b10e55fe3ba1f5b66852b19d6dce4c35caf62d465afe16942ce2fd9752ce2b0c86cb1a5338a19d7b1bdc3e5fba429d5df3cf52e61f1ee455586a8dbcda92a56f62d68ae940995d8323921c18fd85f5db22eab98ee6810e7bb3e49c2806d97f150d4a212878493c5c54c8dfb4be274a33a6d58ffc60d7666782c1bf4bb4ee891435fde09bea5a75927e563d1693a6e831fd0ac777c92230ac1bf4ec2748c429b044dacec4d377f5c2754390f14dc4ef87103d9ae75689a5c22c3d01ba7a39dad6daf472f2ff35e07dd6c25541c32ad3ad341a02f78f987296ebe13df2e14da8f0858c5b30dd730cf9b50faf45f5f0da1a33cb3d492ee236e0fe92c53c2ea1b5fd99c598420d898492a509e414d2eaa1cbd36c50be834807502715209a606db8043c6240b28a330623b4fcdfbbe20f9818a11582c79323ee87f3b4bc477b6b79d1fc2eece9b27a862057a8adee8daf81dcdfb6dccb527b66e608ae67f86ee156039d273862c7d9a990656c0049d09bf5eaf54cb09cbdefe120cb75d69c466ec26bd49146deb7e34bcb8e7eaf1e8ceddfd6b8600ffaba8b43ae6c4821bcd307c0bc366d3ab8473af90cf72d34dcd287ff085fd05127f9ab6501b26e455c5d036c878fa0bf3de02278d9e3852cf7c90968260d34918f39579393f171a17a13f1728a4f3e801ca23b3c2ea213db6e0d7102c739f72f7abce10fbf1adb791449889550e512b0de87d3f184102fa5dcb148097c616d4ccfbe798c69cd2876bfb6e02a1f1b718377ab30f6a576e8961448e38c26c5bd51ec3b47b37ecc5f24d247bb9a34d4d9b2df00a0dd4a95a9db5584c8ef9d2c7f6888651da13a55f8731c34abe456c3adfbc11782ed9017ab470b6b3169a6e74101a98358674425f23730688618b2f4909f37b6a8a03bd09acf1b2528873787134fa62e6789983988a8397ea2dd064589e3945e4125c76c320ecbdda2a712093dc93f15aa80439054e367c909ec28202a8f451239df4a8809c2294cbb7ea96f19a9c0c0c938ec76b367e5350292cd205172b9e37de42b48a14d16caf6925400e87034095e922e30dd9860fff532aa6b10dc6029c37e9fec8235cd1a6dc1d9a1ea60ab2bc7e3c5f97b3f24800cc1e2df6422b96375aefdfe4da409437eb94215f6008fb4647387bd7b08c09a8748c8763f1d69285ba4e307bee8b514b27d0303d79c06b0ea002df76f0241804866e76c3aab6da4f84826f702f42b504ee6701694c36bd27138ef983323fad4b4cb660e0c2d56872bb594a742de057d2a2087a1a2c7ce8a0342f0f855c2dc7593beb5406a0891699db88a28bd5f7edc4a29008398408b31cf3676117f1b61605e988a239b24c8ff9a5553b7d8566117d655ba48c38aecc4e9a0f59d34cffe7ef547316360704dad96435b924d458c890bcc6ec85142e2e57501ecde5061355c94cc2916445b97471d6b3310c5d2fe4cfa0bb8a86accc406564e8a0e0bb924fe6abd16408f5dcd1c4c6c63a482487b66db5f68949fd029fe166f2fd0a8a5b56c40c4fb535b6c648fe71a0cbc1813b7b51b6d3012aab9c86f95c1b224cf5352a4131ecc4f4187cbd809fb599cbe481b8b54ad953a44356fbdfc957eadf0d92ef7c51c494b222f28c501c9c7ac971a1505acea38c63cb8057222af7a4886ae211f78a5309466e9227a61f230d71f66f69658c36c2e9bf8a358edc7c64e962d0c8269b2bbb1d9bdc39a6d1bb4e7fb28665b4d2e1cdac572b5b16b0b45008e19d36ad7d16ce9faba5e5a15996516a004611467f0009121e42d38789bf4e59714e73890a42e1f337090505cf6d1249abec9facb252aaf8ed1cde8510c1c3569265dc8ac5fc22ae2744a20a77250b9cfc289bf92bed2d27d0077bd56e6437df73d9794284c7efc9edfef43ac7f25e2ac9d41602ffe87fe12fd90ce2526012ba7a77c57df4a5c2b57cf8190e24475ea118189b196fd9f69f3977d8cc9bd8fa94a994227cd4a58c633e5db41271c06ebcac5c1c083250079e7601d032f0e3d2db9acc4544cd11e834ac600a2fd14d3c07e63736fccb8339a6f3164591b74a270db5a6d8c727a0ba42b9b769d3a706e534e7940ea3c47d2fac7a3fdfe04baafeecb85aefb9c71772f4e90b3d626263455d0c864dd033c36569c96013ab2a185630ff1097db1f8575235589a0a22614ce7b038c68853528353daaeb806435d209ef9c5a90c99e62c08eba706d89aff7dcbff5295157e17fd2da6d1707b5818d2ec090e8907fe223f6215b7693cbe14d10d23c47dcf7d71ada172aa6122606e8dae693c2cf7662d2f087dc476579a65015077e166238c165b56a229a1fba5f0ffd2bea4e9eb5c96d3cb5490df4790eec020e21fc4852412d042e6012819b4a17c5333fcc1a76a83676af3e02033d95dca08fe9775a2924570c2c129e606b37cb6eee9e1c81b682e09d5f9fc5eca9294c33713883878f5e21f573a5ce770f2eb4ab117541dfab366889a113352de3f2bf0fac2d4a74173f27951be9987b97d511c15a139725eb30a854c885543d4e9ebb3672781cc4d34cf56d9baa3b771a4827cc168d726cf2d92ddf90d37180e1854e5e32b393e2a9da9a2102f8151e5aa462736755bef18e2866d18c6337097a218f0750ecad3c02a04844ac7ff7c2d6bda0cebb1540dc7fe041c78aba5d0a9fd9ec7064da7e34a4538d290b02c247b8b6eecae5738183aff3e3a19016fe1d9fb80a9ffbc66143c59f0dbf161da778b12a7be4ef7de559fccfa31002b75b9ff2c0db0ed2e40bd8687ac7d500e2284788f1ff0cfb802a34ae8108460d3223b2cf0c73415cb95d6db483f88b04eddd457bee06bc7a0c5eb34d3f016b9b1e2803d07e6021f47657ac871517739da2b2a598fed7597942a34a1dc19d5bba2a659e4fad4594930d7f4d21fde7769cef03c57baba559e659a302a00a39b1a0163d52ce6afbfc6c8b664f939b4be321f52930c95aed09f62616eba81b678935892e1db50cba33462eeeb3359f92efd433d655eb6a874f3cd2f0c3184113ad69db2f533982dd153b21470dc1fa450c61bdf906f0d77b2411e9702b5ed844b1d0fc2cff20511b16c5adcea1d41ff96d94f2c9f6d7761c8d91e93fcf88a76e593c2c7409a1d645d09bda04acdbb2cf7da315bd8498b9d7ceadbfebff1885f8be3b04c0956d84a83ef48e0e24d169cce1d2f6668d046d9a727c61826c10a4fda82bbddc5108099158493bc6c63bb991982788e93cf84b48fa6a006a4d7d766a79fc78beb899a5dcf02f87c9713f2bdf9516bd6fa40a84511fb9a50638edc5a6ebe876bd47edd528633f40929f94c798cd99c83f0a6b4929bdf7062eabb7df40f69f717dc38756d4d872671aeaad79011b327a2dc0f201afaf1870b55058e92e086dd2b8c12ff5467c7a466bc16bb996101ff82b171074cef4ecb001dee09a70638e3c9d8c579e108c05dc0bff78b80b4129936704f120e9f16745a72e89d37294eee166d9515a3eb905bf75dc1f805b8253814bdda3e37c923051424e85f5c6ebc77ba07a33e5cb08d07a965a9163bf64a753884030414d47f7f8e183a14c3c9988764e704748411d8031a4fae1f0a8c9c7602ae27b3e7a65d3c0d56a2cb2f9b88d944476c7ec4e51dcaaf4cbd0daf2f466793e354c76354a5e8389b02a7f59cb26d8feb6e617df2240272eb59213787175d55634edc32955ad59c870b137f229073ffbdc5f23f8e0e6e9243690c07cf9ad470e5c85b6f12682f2a54badccaa6370d507a125b52137d5ddfb8022c57d0e95155908e8b2c8099b8b41ba515e7aafae2c46afee3302205d4524b68f6b227bb8137fd7c8bed87ce4a73b357dd7de470e0a034c45f08b494f28377888477db616b8d4c8ffe2b83b0c5841343cb45bc4abdadb476263dfdb9be31a7abe85b42b9e1924a668ed3057506664f01e38d1c8525b8eb961de51ff415be312fd6e5393766c5a30035c43877307d1ef0b2b68fd86d12fbca7e4bae7776b0ec6ff8f1ac9e1e6929953c5504b2dc93f4637bb6ae7dc21031c81a6efd104a324c46392e6a0c530626c131cc0a65bd52aaf50297dfa0a78c25c2a580470e8b9013b621a04a5827e6c17c98e8726ee2cbb5ac0af6631f7462e6f032679e5beebf95b3711ea804e89977871058822312f1f2072b85b76728f43300653fae3a39d2852006d523365072983eba4108b2991ffc2641893e97a4a7cd7901d54f400c86576226c3bc6da307e10f19bc97548f8e1296795c442fca64ce7c852eeb8138b72f345d3c36ff52b41dfa645592e3bfe0967e74ec49fb8618195412fea91ca7e964961269ce7d2c19dfcd388d028d6898113ef53aa4022034d5bd88327a80f6c08ffd36c44499bb983e20cf5946bd6c9fcba50ddd6a9f542dfbf5f167e02834882b23729e30259fd8b2218ca28982efc1f664bb7db6141bfdf0d565709aad84aec619729aa7440e45f4ca66c310f5162e665f7c582f3ec9a0369b75d311551f44c386292f34f4af8df111e00e536e47f9d6f274c0eb3275982227c34c9e92bd81a72306291c6c3424d4189b47e598539cc86c619a9ef53a6aaec9d44a981a823ffee86a28f714d5c11489552734a3f573e532b2e0158cdd1f53e9656d3b76667bc784031f9508fddf9f8cf3da0e1f653cfb5fe0200918ebc4f5196d0e594171d978fed8d63459e13d0a178f820158049d83d73efc37cb24eae374d0b7da7b521e8eaa69690a99bd5ed570feb27f2aef9ebc114aa8d8d06c26e04349a6149986b4a9cf68c8155cbe0ac43612f3dea5ac2b5122bf6f5686e5923e51484fe836cc29459f343549ae60cb3e3fdf422103649391bb902f609d3e4b116fc4d7b6a68bb0f16383c8ffb73271c817c5908fbabc0c3c3027d8460166f16407bd9a23b2ca9e280743eec30a6f8f820c864124c2002cd5b536f0ab99f32a8dc7e2a5a6456aeeab5028e66550e1fbc1ebb1aec53e2f719069dd128044b01e81b8483cefeab6be7681f5436256e052b3f7d8a350326dbbc8d9a86a51a189fc47563856163dc8d03d2c126d98afee710fb878e172f0a8cd0816993bea871d747578431ca1c0c60a806da81f5166c0fddf9d589d556454cfa38735593f44c93cb61d776e53c9f2f626e51dea9478f9dc53ab18ff1771d1cedd144eafaef1d18c6c6c225dd2573243b71369b1d218f6baa39108a419f78a3ba45011bb8d8fcca15c7afdb21619ff4211fd752cd6ec528606f7f91d1548bc68d6b8b60d08a9e53d69ad9b66aff1c869c13287650ec5b8f2b5d6a46e0a14980f1e451acc4daa092560c7fd28d4be44d4e0a7423d2486a4f6022d618ff918d7ca57c84c30123d38a2d6eec7da4737aabf85f0e3e8e03e814d7a616dee6c1fb69b8be64a095a467e01164718140b16970dc4cedf6d64a46ff61821b5ecd30d126675a1c2379a5f2b1318e93aa0def828c43d2f1f27ac6e83b4909a105bad1ca0729dbd0d2f26e5d8ad934f80fc959ce28f43f7d946694f148f9c4e4007827537ed00824d7deef3c12919884bdb39611c3a8546044f277dfd5165e67d2aafc6c0654a94e23c8ff0bce43ebb05a4fa3f133a520e3398c20c4c0af6c156f50096a74f9af3519fae71e0bedddd04f2f29c24236a20d7cd2e93e98dc030a90e1d5c9883df53066caba77e9d5d9d9b12ba9e682f5d17b06e8dc945f03186090cbdb2edbebf5b437c9b9babea11d97888c6f5a7be7cba624e942ddf10577c88fdb81f6e1e10870e3d9adff312a63a358aa03d9dd05bbf301644d8cf0b9196d0e2e146e3aaddafc730678a42069abf6d83e4618d8ddf0aeabfee0431c45976d42dac8ca2c80580a96b549836bbce45129215b185bedfd3511c8e023d621854d449aa7356c55e4d7017850b51ab226d9f084087f95157495c4e6a8994d1050e5512d73e37517022f4f37b6576531e60d3ee6bba0cd8249edb4d10aff13f217fbf59b0a26800bcf598cff95337b3b0550d7cdf32930a5b9c6d6698f2dfa03410c361218f61ca955116122cab35d1fbddefa33159b1412122bdb83c1bc62be9b442653d5c1a8b8cee3d352b07c436314c0e852c4414fb232a75b63fe3abdbebc68710cae33c8462021746c9ae8f6f7ecf65f77fd0eb5a954195a822a9aaf02171b2039a51b9d89545da66b091bd8d090d2306440c2ca4bd8d31292ca1e56bed9ce352b7b4f11079f1184bd17b64a6fd4cbd6f4ba01ec31bc30aaa3e413b95819368075e9b2598db389fbf21d8b752a78cc0254621f8c515b0d4eefee09e7847c5449ec643e63f42fd701fab9c872ea107b8ceb372f85d393d748c4ac82e645269d287c02b23bbafc295dce839f35c100a8b47a6a598600c05f871fe25a86ce4e6d6a81c09ce23fd2347fd76a74e01f11d461c54fd6b4a6de5905b0da9cfe7023b54d8e7742c73c2497b9c10e841c672e5ba107b03a5b7832c5a5fe6b5c2ef1acc946575d3ac0bcf25b365de9e1c586534999b92d6a2ea404353632b72eae5b55d6b8f39437b3032756a1a159030e9b43aa467ce1b864970f786a4b72077eb3d16650b749c228ad3ca8511e426c7acf6d16ed3f03e90de57c7fe32f687df68d2c8b780aacb3ca49b24a1b4b35aef5c05409a70ede9fad8e8d0ca6f885cdd882cf50a0df31095702ccd2f00b48df2b6ad00eb865bde0808804619943ceac4ba932fd6c20eee25c0298cf407bb3eb8fa6a68a790b89a4c65368b122d5475e330e2e2f32254cd0bce1167776e73a8c16e33329cbb7a758488c158f1971a0ec562999e33a769abdcb5a574c4efdaa7afdb544ad36cf317f730e4909889cbd0df8b06632b3ed04dd4f5e184edd81084760e616881b70183eec06e9cba88c9cb272a779d43c73dd0ebf3869f7e8b74717c582a4aefe89407cbbccf79807124067c837dc6fd96c7924276319b53fc13eae00fd0a12bfefedc2a5034dd80f36f60b21c45d4c1f5dcd2352c034f03366a35140bdb08232b173fcec93804c212ea494540f7f212a011792323db2063d66db9b7296a8a53562c3e3319291f73a6f1834b7f2f35e847b8e51b501ef27b8eefee78cc6e96b199c7aa5f57d17104dacc6d6f2c802e0a0f4dc6b50b10ada7a448133a57f96f7cc23ec7f23dde8d47adbf9210de06aac211b03dce91baf4747059f164b49568b0d616a963a8cd484b74727497ef10efdfda2fe93e8167b95ce1d75bb5d0b77a7d8a3674441c6f4fb956a8cb4800d04509ea638c7a60a8b34bf9ed32221c3815a9c9e8d97d3ef47895ce45b992731eaea635d76d9015ef07804c280fcd0ee0290a31af85b957913b612da7a1e3f053fa29a582ae4d6db6944185b4eb099e06d15e95e4619dd8ade4cf1647ac97e129c05b95172613983aad89e2ef69a1c93c14937c2fde0cd0a4766a00b5216ff5afd16a571a8e7daac142c5b3458869120ab230a0c4a16078154ebcb8db214da05030e1b0cc052d1b74be7ade5de631fcb8ec1771795368a8c3f0e3dc976cb39ae5ab4d57e838d048c50dc35e9bf0c99133b6d190a661155f08a8ad619e368d5cdc9f657929b316ef6ba333c0ea8c98deefcac354daf3e03ed2c8af0db34460a66a809e38a92a55b7ea6e0da4e022d674ec8d4f485b705a0d36cb3afd2ec7e8fcd229c32708cb75a6a80c43422819fbe9bcb76cab7a3fcf368f935121d7af7924b923d5d068cb45a999b02ee241225e55a62aa1eeb6b6a745308f48bb027c38a9864a9e2e3ad9500f778d9e6391f24ed6cb7d4f3aae55e86ea3861ce411ad705bdf90b333d221420e88ba34b5bc39330c6b1136e8e0be41077b470c073469c8cd25cb4d43d804323dfad9f55f5af94c9d28bea00644163d09b28782647efe14d60fb749b77fb95e18ca0148faef92dab26c713fd9a3af5d939ca4e78e5242eb114bb1d45c92708d803ba991b340273278cf48cc55d6368467681f85ee1407cd5c31cbc7f14abdb838e29c1ecdeb2053a195feaba7bdbb7a6b2df93e3d3322025d8d3277acff4ec0693a3bef1d5b042ae03cb97bac1a4c542a8e50890e7bbcc0f86e1dc8b69c45851ed17b9c8c01df6b7018900f772f053651e8e2aa42c0e645da0facb3aaeeaa3dc9fc828999e9ef7f8efd56bdcf31c7323215530f91d3ace4f2c772f91abddad0bd25c431d4936367faff82efae8df41d44ba572608c920dff2119ea80ab5e3bdb19ef48064253df47b3e3ae4c3f7e69ca029330f858e1812d29fe25273232b64430d51c882e6c6e958bfe02cf14f044a86d2161a3dd297194e7fab30c27fdd857362f712fc1024d2df5cb4face539d6fd64154fb37392099634e383a56c6f58224635751b3eedd6de1c14985252100bc98b27d66cfe561c0d67f9d3d05a3e51a9ec0fb111d4886a33476fcdf74886853752ed8a9344e06faadafd845976b287a0fc12d44c322c9be30fba3636f2fb8cf3b3ec1cce9628fefb3076b3b4aea4af8057835cfc4cf879f33f81f6a7b8320115c2aeaa5480585b2f8b32b834cf83132f58e389f514ad7321d778d79337c283e6fcb8a58facd6ae84f67448444e8a91bb89df9262fe6fb30d4303725e72db8f4aeeaeda98023384ccfef896acac0883a0913fa3b384ebca4c2e992da182c14797732f9aaaea04cb553dba22eeb46ed7c08adc0a0dad2a53152dedd88febbf2a2ccae92432acb1a19fa2baee9a6d86403b981468796081c68763f2a9202d71464d2dd0548f11903aaa71c5cbe711702c78697ccd382b64db724bfefbc44fd0c075550cae2d34b194b82f5aa2db462ae3ab90d9ceec81469b6d42c71ed16d81db043da4d47f20dce0d75f0b9814c2240e603d57281255ba98f042289467eac5a3d2d53a4d447f2b653af2d64150ae11f81f8f79e936b9f1751b4beaff1b89d735ec9e63e091db6ee7b25b895a33237864190730a16ff0319c8eb754b36b2bfd79f72f50ceb94d8c7b80c9a8c75fd849ceca89fb9165b36245630ea9eb88ff91630a684a8d11f81cbc76001783b177d0ab37f277e818d3d38de11dae5b025b8ad59873f70d206b63ecb61742797217fba0c3992e089b698ee839f1c73ab7f70a4065b07b168e5e2a7711116bce430c2de95605b82988dad4276f0ade1ea5bf2ac260c1441562baf0eedb7fa8d994c4f81665e9b7adcda8668699ccbaad5ac8aa77ba9a42e239c24f0f85e8cb7a5f2cb287d03406f6ffbe24cb44121b3f019f6b923e33f6415d025215356fff8a093145c9c05d56c516292983f0005a1c87c236233918464f3b2341999b2d6e52f13a70e6a7bdcbe5f14265195fdc30dd465c62ed52c8a7f6701895f70c9788efa4add3fb762b74ad02bee7069e2fee3c895b907b054d12363d276143eb6d317c286f75695191e2fa9564810e55c167d17833130c849c42c740c25d176d811f39e07f70546e428aa22543efad69da74f3edabe6caa72c75098ea9357bd525ea7358248bd216ce887df7d74c6add9184171f920f773dad910bd7df3cc9b8cb95fbc9f3efa473c8e9b6e3968d2c8c935ec9f72e82935aec5cbc4284a78a0b0ddaeff7b5cfa4b4625059686feb33e2bdc6e3e8be90d40c0e0d69b226b3f0c2e333b3127709d175dda457f7662ffb03fb89054c07e332f075dbea2f73c5c0e38d5442f277d80edb9d464f9ae337a264b11553f3f9b81d41d290f75085004be47a63720f3769bca769ea6ace904162e19a649416aade4cabf604cde06c5fc9f9474bbb179cbeb66141d9949732a4cbe7499247659510719514df2a07b83548ba02ef40699bdf5bbf8197673afd8b45dae6e83fe55d37e2e58f6a88d41c0be2dac27e465a88f2647ea5a1e649292f3221d16dd405e821588fd41084b08d44745426c2200ee7d6135964a2f0e25e852039a09f9eca6d21c7391a58f18d5615ee2aa2657c7288941440b31f5cf0685a9b800797d071450f1ba0366b3c97dcd6aaa7513301a0611da6c3efc3ba0e78e6240b38666a3c2601a876c6821302e026f20f705bf3aae3e005b889840fc0e54c3961694781780d7af5384929f2ee788686ec47c74eb373f674b24d944c4d449c8da149eff6d4e56efb829bb25b8fbee6e073a4628442f4e192ab2f087a2265b337898a96d85e6802baadf2a1511937cc8bff734e2cc169017b2b779a58e0787a54e1440aad82fff7eef4bacafc2283b6fa55fe45430e1bc2ade1b0f9d7d0ccfdd0dfefb242ecb4fede0b72c30d30d4cc0f8178d3c64779a2e32a9740455de7577284f25fd7c8a6adbd492ec26ffe38e4f228de913fa37476243924f26c6bc8dc1cf025ed02ff5320a47ed3ffbe2229819686d2ad1667154876dea6e0fccf6d689649b5e028dc4ba7c78fedeb43d97f78d712dfb9c74e8b0d9d12aa4cc2573eef4a99dc28f746854f42ba1c66eb8e0ce2b5f8296b5bd57632a94ad2b5b4c2cccbdd013e5bdd38275ec2dd2a815e8f2b7aa57e9eaef03e814a7c933a50d12af91762208cd39276a69408a34ed539194fbe9f11fcf8874be6b18b4609c674f9da8a4ad0f2a7824a9d3e4ac8d41cd90e11720d0a946386c6d35a1b33ea1b1bf2c31d2d4bb60682b7f025f2e47ba0b2cca9604164dd6b81b7c6148d0b7f0c775a5c0ee0b28a7cc715e11e4b7f182c0f99234ee2097e83481eacbd7db1cade51fe76f99607131c9f16cdb493ebc1e3a0250561f0e56424c87a6d7d9f3a1a66ea7e2392ea3376e7c0505be33ceff38323370d0ba281c87a3be16d9bf9adeb3f9971daab0272153b241372b2547b40555c432fd1a4ec1cd2f1391507bb64f9a1d1f31dbed1e56b90492450c64aef83124b42a2385b4e044b012e5f41382d586c2644cc56f7904cafad025f4d4358f641717be2b734558e707d6d28d04e73416fa71afdc1b1fdd7af91602223bae5d4e1c8daba9ede9cc4069638c9e68c293ed9fda30009707951a17c3ba5386dfee4ad8d3812fb0bc2442866b3de04451fee244e4b9b7c86865ed23d16068182def904d1622f611130a263698808c745ee7b526f3c7c217c28bd97968bbd22cffb2f2c54c47d3ecb26e65433fe77705d4a157369cecf63904c82365afc6dbcba5ae2e25bafb7ffc5803bc533077fc0c01e4c36ed94d6eb176e03b38d72eb5f3ccfdcf04561e2f70e8bf3c1c8127b43f3c4c69fe83240651451e995c05d75be124dd9e3bbde373a8395f7653af6503d68ada2105663f2d62d1cda6f235584aa39430a1b21452785b83e0a7132c9073879a71bbe8eb7f0246fbc0c0d2747afb5f28fbaaa924c78399c607059f687edda6ac5a1082bb5ac3ab9acb3f01d2bc3cfaefea7ecdd471d16b7bda0ab8c8f863a907c1afa43d5a8ab6444796e746d250fd2dcb7ec11bd4b607f925e4ff723a3ea2233516c3749c5dac50927ce45922e2fa890fecfe66471ad0b9f7dd0cd474527d0d2c76b151528d08c58d2d05ae45c5c4744cb82b7a77399fa822ec2acd4ba0026c7c10c91541620b781cb3f9d48c8b2c90bde54ac7e2bf121abe3df8f3587bec28e41cee37441c2138a94296a979e532b7c077684b5d2dd4f1a6e14ffca8959aff81423ab0c740ba41a2a9733141d5d03657f3a20d8f8c17b9f97a34623ada2b1a59a04d844c396fa1f7c9808451b1c4e2a86fb4787379ca189a05adad84170975d46588ecea4189629d269781c6f60cf57d365de9da772d3fb1aac536ef792af83dfbae70c9a74a930d806427f3ebfa11c5f451f6e799d13529a5262456d6a11445babae8a7579039c5803b41df12075e117b8f28917634122f36f37a8bc4333c8136d96456bca64bc6799db7c46bd14d180e361524707438b9a9e27ad28909b8e715dc9d3bed6ba2142f8f3c9287f7bb33474e0cc04ad79cfd6ac52d64d3c53a55799bb5d12c19a33ab40a3c696aaadbe18419dad9121d0ef528e805ee4086090af50cbd24b74d10c35820f1223e2ed245ebcf6ab553d917e20a07a30fbf9bbe2b1911ac57e0340bc2a49840c7d4ad1ca3f4ed7af19d4cf9c6f4c259ddb103783f8a39351e83e1ce4b65298217fb0b6be69173e0fd5d7882e8dbcae561efebbab4a9092644bf3819f7c88fb1039b9c431ddbb6639b026766542b2bc3168acb7458ce73d227080686648c219934aeef96fa4fac906473e2b6593875076e6bda49e00c95603783125ab336a7678200186652a8c66343d712cb09c7b0374dbef1cf6490f1a77bb6595d086691cb7ec217c19f34d037f7aabfc7bc9e49848c291f6ce182b3bd0b87b56c0e2cdb1de9eb5cae81ce5fe496272d5d8d2e6b0877da7448b685ae3597879b5c707a2b5f3b6e77ff3859cb8e05f9cf13db417c26505fe03e27ba2996de96c59f619f07ca1d3773b22cd2b949804451aecac4acdfca5112a5de59b27a38cedfe515d22885ef02804266f1b64118ff9cbcc098c7108ed1c09c64df78680dc0958f46cf469143ffd035145a6adf3094f478e878bad2b9ceceeaacbefa645c069966b085e965603dde49095b54fa00dc3f6db2ee85d95c24225f89adfaf535217b8194d213d1c0f471da3a3f32f11262162c51568790fb823286337c09503fa5749c394ed99592952b83422e6c3fc8fb3a9e3bf34edf0f2b9bb4c77d211f33ba7379662831f638ab6286df9c2ef1d4ae8302ad1474f68477397cc48016835ee90b0bea1498ccca8e9337724d112abde767c3254a19403b38a2418e57dc8f233c21471548531a92e9bf8283e06dcc6100afb2e6a7129489dcf7f7eef0e5df77aa687f3c8366f78e076dad3bf5c7316e16f910771be01bb76d6b0090001f8d64d9170738318fa1f2f92999e9d9e8cee7311c0424d0ede68059f2c98337423386295ebee792d6ffa389c7227ecc9090a5bb8fc47ca3cc0b950cfb14bd0c8e74911581d5aafb8c50bcf9abb410cbdfb7d34360d7d1a954571c5d2aae95151ad8c9e0b5bae61dc0df0d9aecc55af4d7ff7198651fbbc2e3f62dc56b0a47ee4ebf889512af83677e94972917cb3b789bdfd32bb56d953d2a3f546dde6d74b2429ebb5330f0706e79db1109d510331848cf1fcb8a7eff8d37ad1207692e9f05fc9866ef58bd1d6dd9f5663dd213e937928fd2a421fd5a10b9835c77fe31b0abdd251cdf59c0ffce53fb3542922ca77d81963c9f373e4fde9cf21a51ddff75b1bc5b877a568b0fcdd6ee50ac1cd1dc02f1edfffe34de48b38a8ba91f549b1c256320e68833ee4b1a5c1d3d9cab419914b502945d3255f6e0e4e15a81d4e5bb5e81828a1f76df34a0b49eb800c6301584881dc6ef56e0c9534399f1115f75c9d84f2858d0af954f4b5f382fa96fda29872381341c49d57ba79ad1262592a3a29863e24a28d237a4e7bc1245285909d5281e73d361ab91864b81d42751e51806277720ee7d033c420d33a94f8639bcb94980c76b8edfbda9b7442314c9db3e9a182a3ce50fcf25b91c101edac3bb789d3021e115458a8767b0c089828737d36526f94b6573cad59e4b42a3232caadce9aa387bc3d490cd879b2aa6f948774d55d6f076b8520a060bc133f99d7741a92dbdc3fab85e8bf495e4426a765629e7b8b3dc8fbb7b00e01cc25d1d6fbed5579be39e780c4de53f60719e76ea1fdddec317f514603e9dd173ee6422f33a334288e2772f291926197a26fad4b8a6bdfc0f824d8f2c1bcee8b48cd0d339dc648cef26f97a51621ca4bb7bca823bb81e77168185b3b9c1b3050ae7ae3781a8ca48edb6d01f1554e55bbf2079713ef88614ba2a7e93355f2925a0b7b838c5efa9c246b27426df5c0a3a63b1021e82bb00d0bf2416a7e23c77de29a5c5c32d4ea176df62c72c69342f164b7ae6a53bb2bb534c3d2e7094ae4af059cfa36b987eaa0342ddfcb444320a825f4d9a4b936249556e93780436514d626a6ba4361afd934a1d3164a253f4a0624a66f4b02673fe3d964fd4d54599f55198706f9178791c05c329f6c64d5503edfa5e3daa85c5429116ec37a853b16afaa554f082ae191a59a99ecb1e3eb3fe792334dc70b360da31a70d6cc285a895e856d86d25698c574fea53dd18068683d9bc59ce28ab2b71fee5eb180d16f1b995f3e31e198eeb10a1c46aaf16d845b76b80df5d20d877f33cd149e801d22e2fd4cb73ce1cb16e3a021962ca1ebda1ec4a6da5c7ed9a5b7df34ffebd029c551693ae9460399fedfae9efa623980f06fc3e49a0c392c8dcea9ca60c49efe817247f71704af5d43204def0b4d7c6fe72b607182e211a29eb529e034d6f9541a5daef6e6a4fd5051eb370ebc6d7ac0ea36cc9a77ae9b7fa2af781f5a455e7c4b8cc61014c15089896217551176de39781c40b05f4b9506b8f7243f2cf06b8a3f7c3770c81617a274e9467b9b0b3fc44f156c804cf487122c530e8d1b7fa1da49fe41d746411ba0153eeab5cce6efe95e2cf7bbc9b452bb66c78364f5d0081a08528f3a19c1ffea972140f99ccd8915dba8a0909ea07013525929c8a504cc70464cb8e02884862556c6aeb72a950964408e58608febd059e66d64088b9ad0b5379829087b91fe570f3d36b0e1507df458dc1b09e940d9c682cacc2b1f02bc5a17699ab2585a8ff1882e3ab35120d063192f5e2f1b758c9fa6fc26b51a78e4e1abe4e06569cc3bda1fb20dfd72666692b8e9ae6eca318e830730e7018a0924a79f1085896ba0317101f923c851c00992b1d7ed1c0ba00a0ddda586299f7cc7791d03f2ae761bbe7a0c9ee26f650b2b67b462a7e5e89db6e43996332cefc7e25c86732814ea7555241092bed8496a68b3d1340d9fddb53b99ca8f2e09299dca0978ec4fa530f4c8114ff408aaca4cd60e2741e5e9ae21b4f95954195264b87a00bb61d23857a4bbaf09164fe921841fab47b0fa27365248aced9afe6adaa3fea4707e357f4215a73e0f00a377a05b56f4ddd75ba8b09d6b45b06aefcaf850f2d00d22614b5a310a3a3e56ffe50155bfe1ecbb49f2aa57e2f46be359e9a866e50ff4a67e8621f38d52bf782162139d95ae918cc6b5aa464e10a8156693c6d2347a39a36b397625fa51e5c6676a0e9357c48b3e2786b7d32de1945a1324ad7e3ca5c3b66e87625392158bde99ca2f7db52246639f16f35accc58e27cfbdd98f44331a8cfd52457d53c67c8aa0da2ec17613ef33f57bff4e0879e4cad05f0a44c863b5b14de4a7a07f30e92c5593efbb0b4a978c6e974ab4aa8389e9749e385fcfb281cef9294118ce4c2c83e88b87f7f534d27858deec58d1e68f20cfcfb65dc4ab99ef071351cbf4830b7914d761023c76649741251f1cacde10fa6dfdfa7c2814471c1c762a2f5cab5160c45821e3a160499ae4003f0b41f4de3f9d41d0fc55f323b43e7d251cc7fe4b1e1490a26bd2389e6d715307edce0c7c9387ca3784656824b2b73452afd7504d72121e16e5f1f2e0f42014646e44f61abf6c14623d37c4577f0f1fa398e86909af8e0fc5c176c7d434aba79e58e2ea0e52de03e880dcc20482645376a6bf0b5e9e5e4f7503024d89da8814000d9cffb05c5b3a8c32d9bcd7a9fe6c45bbdfbd76cd4a98e18882cf108ac3bd66691925f542146038dd5899acdf1fe70538f590c3a3aa024efd99a50769cd6ba4921f4ae2d9011b3bf3ab6e81e35828b3696349f57addd3f0e390dd164bddd2f7e766b3b2e91d68273ea5daddb17816a972af08f0e969a09ce1c7323b7aaeebdd241884f2c4bcf1aa5a6cdf3bda2c5e7d1c7620d0de993d155a0b24ada0904ae73fb66a802b6ad8c6e20d356db45a4df37a2f1025913bc88dcd7861d3cc92d925f5f66f52a4318cccf90b98a0309a3b24d26538612822145795deec811685cbbeb532f5b280f4832077238d36ef939c51673e66a067094c18377834c6e005ac2586c8cf3c1e502fa79dba18cbc2e790372217eaf10e360dc847a21faa80de900777942490da36ac52c420ca14101d25886ea340d4f036516b7484dfc132946165bda17df48bb0216cc9f2914a74b9a353fff626d2336e7161711f1cc0237f766227f7ca886f3dbd64442fc7bd8d1210fd922136f06a7d22704b01dbb20bee797c7cfd08d26950dd1ecc59f8042275be07dda66e529286cb67053ae6c17634f1407e91deb20a682373bfcea6061ae2aa5f1433156eb9424d6a244dd5685c2c48e53e12d1321f0a81b11c1c56d9f8b67de4e65b07c1620e9bc84f9124544232c76da0757c96fe0bef79100ac8c83a57b10d307b5c6f737354285cf7ad9ffbae684984ff9c6ad8a54278c6ffdb82f0c5946bb6fb9d73eea3468081233051c7fc4337e58a1365e58136971b8677d2f622c8c30835f05b1f179cf672e4091ebbbbf42a4c8003b412f0763df1eef7d9620cd7344328fdbabd7203c8337c59936ec763490e76f687e18731db8dbd7ef6ed06d91fd31f69777d3c61be11a660d118baed188ad78469fb2b283cab3f81b789377fd735cfaad69515cf95e29222f01dae1a3fab8ffd259f8c8e40a8bcddf3496cdd7fd474842d74bb30972d5671776d50e7aecdbfbfd2a2604765bf6f62d4a45eebe6be707b1d7dfa3a1f7c89c328ed176e98333512bc1c88dcfe40db28a2d6089585545690ad7c7c4ba95b4d7bf2d7902c699fb50b5363ed56dfe013a9123432bce75acab8ef8a50073ab7a1351652955ad5e9093671c348230a734f36e8e028f4d18cff9344948c48dd197b55028e3607e0f505e0254ec03db8dd9b5648c31028694bf7528c2501df0eaeadb77534d79dbb94e8bbbba52e196a95e8c48e66d062edbcb97461bebe326c53e8857038179ab100ef5baa32da56f621fc0034e0b067f128e93a36d7af5db48376ad33a9a8d9a50abbc9c22f3a0d449241d13ed7782b542c4ce05a66899633a84baa2d946969634355df2250dc81a63f1eb0a43349c9212c19566c78164348a7b54d1e2cde953fa1b63c0619694fafba43e0e547835db93872175fd845267357dfd3e13496bc876edcaff09da3d0e15e9d45827e039d91fe4b3147fd5583bb6c2931ec80a8eb03acf7e1b5d2088585a7908b595b9c6d9431406db40756892047cb077356ae00bc7682675fe911cbcab3fea0868cd08acbdcf869477b3b073265c23a7ec6f269ad12f81e2203ca7813549f6c6c5bda52888c4ecbdea38f78650f78fdbb21ce2669948cf2a817ff0d518168b78f35370a5f7d77209175c059b96945f99a74464394b6c618a3074c646a4059f3c6157f880e6beabdf20e77d232c552c37bb382623768744322f0cd2491ce1044509c83f9bf1be3ad996b9e9b534d3c46175b839f78f0222c8d6fe62b613c7ee571e9680dbc4aae74704f06c8b249ae9970be611cb89e6d9e414c7d44a54f9444c0a3177a9776b74aa537b6102b11af0acc736c57c744f1092753e6e23574fd491bc871772f9a852390152071e51fc8848be992d2735dfe3d3fd9e84484d4f4ea94854eb278e63d85f1da595034eee0167d54ef9b14922471bd6f5391fb82f93a9d4cc99be5a90da3a1fc33b7d635a7dd91a28d4419d1803d4c45066f59143c4bad71342af010ba51e87920b79f09ac4c06a2f4ec06c543dda78301a7a06932b9ba80163774f6e1f1051ce5a8ab7968b1466ea09603b6178fea309b042bba21b1d5c210418f7a58e4c376ee3652fe43622b9b60912d7646984e5de9145a8ab88a5f3fab4975e4bcbc0c4e4ce6563d67709b2f8a80e6d2caaa4843daf5f80c542addb04c17d7b1ff58e371de30864155c3c2716eb4fae17430cfb261fd1a9c56642bad6a757bf33a48e33633b6f47a4c003ae774f140494445c4fb190bec6d4d1878d778236149458c9449e52e2b97672f9200a4761d4192ca83f68fcafcdfc21321ae17f30e98371ff318ba74a1ef8a88f76fabc7cd6dd9cfa3bb97f10b231140aaa120cdd4ea045221fddeeb63e26f188e7a5e17077a808ce30f46ab09c96de6f1a4d86da23790dd97f709ad68c21127b65f88b8d4e85419521ab5145b4017cd23a52a44a517332fed9f97783f254ee5561b312e6a13c9132937a5ce67500bc387bc1c15017063c2058da4c353297e6d4e15674d1fac8df80c684328f9dde50bbeaeb639669a505022c04a08bd7e7ce0ceaa6016bca3aa6c9c22990a09e71030986b92bc95beb1f1ac11856c7b7a916e62f0784121ebce75030c6075eacaaaae3d579481a9ed23f13bf2a5f4f027d609c222706e963a62ec9028378715231839fddb93fbe0914674bdccd782ee11a683f41b8fa573fdc97dcf37f7e659d8809a75979876f3df90056805ef290a9d4be31c1287a886dd94aa5cde27e29d38087f84d5901ea4936877936ab74499c9899ab849cb5eab92a59378595f992bbf71ba4e49dde6f6e9c6230f069094f369ea538619e8ab20240e41425bd79d9782922509c1dd644e5b7a3a81723023c111c9b38b64358554dca94b68733d519f01384b7c677de32c0aadf45727ce9cd53a90f5f53bcd30feb17e30ae28d6ad2c1aeb125572cd006d5d6f51ed30d5d65b22cdc33af889f5fad206cf01d7ab469d2f9acfc006f6c11ba28c37c9d29898bff7a44916dd0d5892a3493bc047dd8a56224d932a6cf46a9d215d05f174303674c07f12836938b13127cfcb8395bce34b84e01d11512f9a66b9fd6f98bdcea499946b5fcdaad8f4891c400a004b75c2456a859771acfd9e6e7ec95303e278c2216a90fe5ceed4db8c73c1724ecac6e6ac5ec13d4d8b827c9fc4ec9202bbf3a0af34a4a0decaccbb64b2156692079355eed807e2e7e9c3cb5febd40979c2cbeb8c0be25768aaf28d9be829789b56f203dfcb28bdf3e7be4933d2509988b15750d61930172e63eec7b729a830eaed1f4a6dfde0cd6a4546650710d4bd9d248478987778829d7b9ab3d1c5fbe7bd548361e4d79e3122e7c255d36780644310d9ad4c91c0016d51545819a4bbac36a14a08c5a43e82b3b9403309afe1a791c5ebd37403c7f8a500afdeec8893ed09a30a6bda6284fc94d88d4c1b7841b4b6300b420b65e762858e04df064f382fdca02d5e1118adc2a9720470e6414453fa098cba26a4a2a678f201936029be09cb3546d0c06f756a0d6089e97eab090107c2d35f26038f91475993b320fcf79724aa8c9b64f973e11886476e2d935402dc0bfb1eb403386cdf977389ce9c8e8367d2ef13c86c7f976624aa2f8df92763939e2718bc7413086666ccdf0027af815bcea3b5c04aa545c26c1cee6b6f6638b697b7a74c73e8d089315c7eb1429a73154cd12bd70ae6766bc17463e21bb4eac0b1b3c6cb980fa6d6c2c5a1266d1361d9acea565d651b7c8a3b2a093f6234adb648d8ddddcb2b7a6cb299b2b1e76db63e454e9414d99a5ceb0a89f004043bc8c6796e556e8816af59b606bc1aadbabfe556f4ba032091c531bc9bda26494ece4a5fe82084afe5b7351c657a43359d5e078af58b8f11aab4adde43c196620b53f145c2d49f8d53a8bafe372671fb4b76da8abf7205c733a396175960b2d3d18ab9b405c14d2c7af7ddfa728e1a7377afe4b74f954925bcbb980fa3fa1e539ed6a7cb8dd888ff29bdcd61768ac7e7adf60e1857c357c3ebdf7d2a9a4096c8a0e748042886542e16a100e1444a981849952d7010786d12c7a364b490ff2c84374f2fdab1f9266777cd586ae597a7f46240b38384c70b2a96f4b274f0013befb6dc4a97a5799821e4dbb22cbdf070c9638b123cc48ffcf41be202ea115a4625dbffd39cec82958d7aca4490441fa641f3ee21afdbfa224af18313e8d3ae2cf04bb61d8e3c494a4100848e00d864366ffbe2f19df2baf3c8be1122cd54f90dd7397ee64a5284e71657fb48e10a4948ef7c39c7f8be1dc0ed2b4e7f0e7dc71ee31225088eeb874f4a44dc656b7f7e5136e2c22cf9481c764b730ea28a2a4cfcc68a56b96711a4201c6c5b37ae9d2f107ac892e3347cc70d390ffe8e12f29f796904cd540662b9c08a80482b36a08b88c0bc11fdc7f98ba43d6dac4b9e943bbbbfc9458196c6086a9c34c8fb7dbcdfb1808bdcb2925fbed0a7b7df34c47f7ee065c5f75e44ac9acd12ce40911d521c3cc62c1faa589a437932142fff4408aebbd7d07dcbb7a8ddb6d883773441621dbd5cc8aeace43182694eb7705d7bacd0fcced7ff6009e0386aad7f62747035b51e4c93ecab144ab2fdbe84e3642d3253bff39cf5b1f570242c43adbce45ea42f9aebc543f5537232ba4669b595e2e925354f2745c1f24ac4a680dc7e9bacb50ea874f0de1f37269d581a195472a9979c153b62c7a082ac3fba4fefb4cd59e41ff00abc1bf060a034dd69b296eca9d6ef27de13dec131a85596a06359d2e4c2c57a02c50d71fc0e697db1a614f27e37bd8c7a8061eaf9a2a899a5a8cd9d1d8cdd5a48f309f94f0d81d3c0cf001dc71c86627bbb92c4ede6855aac537d0917b84a0dab9457ff8afac293bd6f1ab74388d1730b7556b0e52bfabd10050a4af96eea47f9e575467b2a86c6d54740dfd686668bf07b6e1288eee1eccf3094ed1cf071038e93bef9fc0d57a018383f8de89045ab9f93cc834f2b06429fc021948c0ebd612631894eec52b4b981a07d1105422f1d41cff0f3a97b0d62d9e8325a7f71a2f9e43d67ce7c069bcad9ee91394b86db7784188d99381c1f34241e6e5a94a3c140ce0d153f120e40c91a0aeca43a7c339a7a54afba23c9addf7d9a1a16aa8d9c6666a0eba9f5abc60ed38d418f370b789fb228982504aa0da91a3d2f5e8ef8446d5b2b9c6ddbcc33fe2f919b3dbdedfbab56f152b6010e1d42c4b7d50e07f26ddef1c987fe8d0c216acdb0d655c59cd68d7c48bea922dfbda6b2e3376ee7af496243b056219cffdb5dce50d8b07b8dd2d507bcd6499608f9db98f30ff09fab6bf2bc291e080f295cf2397439701955b2d3a725c74d66acbf318e287d648a78a6c8cc6ebdd50b5d67ea74dfc8eaf3d788b2650e1aaf198c458858e6fbaf67a48f43076aa31174095beec31288bb59ab8f179f196c739dba268e3d451c0fb9416720bc0ca2ac89587ee4f66b73a45a95e0dd9958d42d797106681aad0cf926c6b45ca9b26099946e0520d7d035ebc5f320ea59eb8c6cea0feb927b8892250d0f9909ce3f480aab38a93d976714b9317ce2b88f081b1d3f78e69b9d908ca777091bb06f26b3a832d1b3d0accfe6c9bd63b1c124a2e97ea49e4a664c1012aa4edfcf0c675f5535a77e53f4e427abe8d11429f6421b6bedb4ca74263a09b79bca54b9fc92dfedc3179b36ff690bf53e9c137f4efdad69f75684e324bf753433bb9c2fa2d7f5059c12a4504ce156bd121e998623f6b086b9f559710efefbfe9c402e6795a17154230011a1a831c21f01ddbddb0d5b5b3843b9d2d9ccee23d1c0efba658210c0985a06903319f7ab20006ea48ac193b7effd9202c3717ea7a6612c3cc14f52b3502891aa7ae0f821e60624d77a852e7bf293b17036634a48aa19ace15f22c70760ee04567593e8cb0088a5e83f8b41440ffa1264f55f087317d13e9687859c373f115f61ddeb99f3d0061846f757e1227b4f6865951246cecffb38ea8f2a88d3168df1fb84c6ef2d4e7666862fd22c3a92fb9554c4df92432fcf3d360ee5bb94f23d03204996d4a0c6d154ff6f08823558ac385a15eb85866a2525595c049212348c532f71b487f6fd98ead7eb555cd0794dc14f63f2beef6f06ce969ff749b47ee1fa44210f59d80839c56b0334ac697501a7136ce8cb62739640f3e06b011fca3cfd454174b71245bfdd88958af2edb7414380c8d093522a694531874515a96e72c4cc4b508714d6104e9b296d2a04aebe6b99022d0a5f9b09b24ecacf8c2a0afa36bb6d26c59352a87efca619253bc5404ea8ad7b1a675a9aed25956627fbfe32d8a08395fed7b621c1848b2fa51c780d8a7ea1a5323a03441b305dc4c6e50df9d14e21b29a50f44aa789987f15936f73a89c6feeb6645c9fba288ee6ce6d3f6b87cdd8cbd4bdb24452c3860f3339274b190dcb99875cf33026049ff717d91ea2101250592ccd1e65d7b34c4df953365827979243a0f28118a7643c51afb97761398b7e106b41783406b95bad5e27c6c9783b53ee6fd9658c1b9ddbd59ea2bc4ea8689e05f24b88be24e9250205ad4e02fe928a9e891e4cf048377a4897af4f781705ba64c41899e013347183387b74d6368952c536d6291663141ffb1a2baa35ae4f13d0154a2f2913f06a6b604c9ef738a852f1e01df8f84a34994dbb85a5098b8ce8fde290cd07c68d113a5e4093bf1928d42d95df20cafa567ef74ef9cfacab8acedaa6f2217af07d97d764f8857aa40ad96eb39851f5f8ecbdec66a05948973c58b5a0b73b8773a15855d2cad9d70ca4c82644fed34fd8292f578e05080dc30580168b6c638361c31cf93e4fa1caac172ff5b737c8bf71eaa0b26f33e18785b00cbbc5a643159380885b6937f17b4c41b2de308eab82877b0bb00bc7f29c7e628ca29f48ed1accde7d532377584152b10cc84b190218eb341e487341673c57b51c26ff8b359f9bc9e6ec2ae8a8d81152fc4555d14834eb9512a4b72452aaa76e9dad787be9ff13c2807f89f1813aa8be99d951ca76e109fc573bfe62a7862ff3b1f5ce8898c71ad66d9db8e1526e2919307df54cdc4a0e57d6a23157cf8dbc64700600d7c9f0c24f51f98bdf48e90604454e83b343ee9ae67ff73707a3d1f3364d3f82de769ec8b8f9d35a5bb4572273af9d3b9e7e7366df8e4705314493a04454fc6abef0fff72f216681982fbac0619111115f79fd0c4ac12b1445616fbbb44105bcc59cb75de5cd56a694191b127e8dacb096299dd99c042c7f8c3117a52dd173507d16b93c00f25ed0f4f9eee1f6335ee2efadd9b845b7576c4ec997401de4746eaf0d1cae93fd90ec41fed5207112ab0cabec7e625da6df670938577303ce90cd795712d8ff0c56cfdf7fd9fec9562b8781b860d16b23148a40d9bd9cb54293c1ac2d629c015423d3dff808c91deabcc435c9ef967ab8d9a4f131a86901296f41fb21d9a652fae7caec3dcb698197812159c66a5facf8fbed512319716b5a68cc6907822a446ea29ef9bad678fec5edf9a6c8be2127e0cacdb4285c0a4e330e9119bacdfbbd8da92147d41247df6991909798b70f7801916f516af89164ef065c1689365bfc3e9b03ccb1a11e37c8528556f3b6389ef920f9f70bc585f5d064e8a7d9b0dbcba82953e63702455132475cf8d42d912d696bf3ae2ab4c745c77e4f83c46952d2098e64b9cad2817299f7a3c4d9b02c65d0826fa9df2e7a611abfc39d9a80cd7661f6b9548ef8e67abbd66cfc11777a63910f0f036fa8abaf7ed224fdbec145b4290a744cc891162566d4aa877d9dcd69d985cbb2e9ebe3e25ee546f71cf6e2d02698a5c3a8226a4e142dab7c1d8de84ebd0306d66b04ef877434a96c623d9b76aab28530714421df1f2be2aac6073ed88abbcbaed753463c9e24c84444e3fcc415a8a76492ee9b495d775be059172331260ef8d57245197c8a9a1b0c7c837be8c01876eaff393b0346ec1a13ddf7c022de97b79af6af81995d780f07aa1d2bd2f2bb26d4d396003e0daa9c225903138ce870dbc67e84a665d919ed446f8b74d37eb57e3210b94f184610dac0341b50dae3c8cc51bb46036135e43ff7e8596ee955589c0ba28f0b1d9eec054bc62887bfc4f7170cfd443d7beacf4f4bd10e259890239a2b481d2f69d8e408251b5add124cc2b6167c6ba111a49ad29aef7e1e52b906772e5be288995f3efa059d320be9401953d73fbe271e2eaa54cd5ac0fedef206052e4ba325f9ff4ea3395a79c3b080375ae06579bf7c1a7ad145535c552e4d704e0480315d96e0b663e47f0b122d127175d4ab3be79c47d120ffbab3b7faa5d2b286c5b3b0db8d59e4880c32d57ee89ee5ea25b2e460fcb1933e7bbd96cf76109d8ad398b4e13965ce21d08d0cb8b884ac1c391acc8f7d5083c8728d2a05212b17f4049665677b200c5daf851d6b1481b27d7088742a545bd0ba347122987a79df747e87cbcec3527f76da5bc8d7f2ec6aad26911dd20a5d597bc8180f9e3d94f3ba5a970a6084cd79361720f2d49680a7689d1efa016e5692314d48a42fa64fa4a23d246d9cfca4317fc9736b45863f5c18b51311c91db53c73753059b018a3ee6d8dfaa96dea41b53519e5141dc53e730d66d3ac1a8be078b23a158176b8ff8317bfe00f014756a6c52e949dcc2aea7b47b9e7f4877abfc8f9d7a00a8753e1c9b0d92487992fb08857e2ab9aee5b18972e9d00f9f9e21a511a82b5a59c762a188d3b1ce857f989df2a7e81fe2e0daa05720e4ee2b5a84f73b9915c34e284e80aea8a6b058fdd22c251c016c9e6c6c054f442f4076609d861aa72e07937d56be13ed6f2ef399d3399f5e22cfe2dbee284c2dfa4076d2182a227c7f1f180b548a1d023fcd6acfe976a19151e532a4ac3a9b3a00131b15043717b7a74080d5246931eefe49f16907066c99642b5276349c2985f356cfb85748520f56398ab52872c01cc45bf82a4349370187c5877ddb65b8b1f69606826897a534d3203b50c49bcd5861461ba3564346abba9524d036fb2a1024811d3d73e4646877551fb0e3174110d93cb8071f88b45f51a245f9a1af636908f2164719ef513b30cb3cad70c09aa6e09363bc20bde15f72cc0cc9bb7a60d923cfff9bdd7e6fd2ffa990aade93d51d62c49e63ffa99c3e9ad6c945e8bc89576ab103cba7fbfc927a3c3271a1418ea4fe3d7d8d07d96f5f19bbcdadce13651bc55f7c6745961c1c4b2e751ab3c6bea885092186a4c7b1a99152e2f6d83e1ee09119866de500e602ae1aa50b101aa1e6803b3959eba63a2e7b4aa01db61398251fb1e2979db7e7dbf76a34ff3ae98a8ba836ecda0face1b8a26b1de4db82f7f1337635d4e4d858bb0a8578f8b564d4ec6cbed769edf02389a530ad54feabda4285f0e1d9168e7d7be1494dc88c1c1c836ed9102981e496b779acad7a9a02ae51436a1767f30300c70ae4397acaec79d206844da46f4b0820e5c09a486d82d10a8e4ad3ce20f33f1b26e6f09a02fa72a8be32a22b7bd06d0205a5e18ffcf37f9bf83fe451a4b8dab46cb945cac8bdc0a0d4247db7112506efc8bb2e440e41aac60c3b38346dfeed9e235cf17336233d32bb86c9d0beb14dfc72ba2f012dd938c5c638ff9ec9f3d6eb2b70c0db68b3859d9a6464ccb4d6a8b71b1f04ef282665d217dd6c27ed157074759904e300d227f7cb6c4da44abce5bb2df7d5ae94101d2963dd224172880f59862c630ea209682f5d823ddc7ab3f75ae9f554ee4694a223023b8efad2fdc7e5f92c5b5c7968f669931f8d2a62268e52e3da0d9eda64d962c24dc120ef2fae69fa9b1c6eb1ec213063889411c41869158228d88b30a2f45e639e944f8de82407cb168b5dfb005d08f8ccef3085388dcd812ad44fe99c76871a911882d399718142c5855c0c0925c6319c50d9317eb9dd714cb30feeaab4240fe0a16ecf861b924998cee21dfe9e751fe6c758765dc05235c04499ea0b5181dee5fa58ef7bd75e5dd82ac16d1b7b1e8b4eb188a485a667847480bacbdd5c7e1ab8830c8817023f100497e9ba9af1b96d6faa613432a9f96a5b8a8a45211499c6114b5f52a2ea1d88fea71dcc80ea9f76eb3fbd3e0b8e8bc700688c4fce6595da0d6af6e977706dfd8d73fdeb79a25f87503af80196de41ce706231a3f8b974c4b12c034effb4ca3e2a9a2263c65e7038cab4db5f35f113886e4e464204a81ce447d1576533e42c2d1b4c0c0737026752a4670e5ebae1474ffa3444eee98e150e8ae88175bb55b43ee763a2ab399565559dd052a884db3153281652af8b41150c9ca08fab9388f6fd11f0fea9f5124af30823020b3357191847c0024f19399e1ad684c49645bbf1852ac6fe5d780dba93c22987fae32d19f655f57ede84ffd7685f7cc9acb022a9092af9d2a9f1fa88cfef84170b06a4c998cb58d92e07c4e99c9811d3c46201c94e224d6e72003e1ff692ed8c77b8cd857eacdfbe57b44b8c4d564cd09b8021982f3c0233210f3b788bed680b9ebbee277bf1bc933520b03c89eba8f34f3e73ea180691b622c00c06c4b2951480f1b72a373e0452e5129e755004f6cee6e7d1be8c1232ca686aa9490b0a7dc3446e8437ade77c2c4c4d0699165023cac87931b0a0e64a38e7a58b368161912fb518f84bae4a5f0d905d72c045fc4af441c9b6687d381ad019e82f897610c560c0daa1cb5d72f6859c836f7eb8fe7f0d013d7cd3e17d3d6a7a30f90ff2c9e2d1f7618304b20e60a9a0a5c1b742302b2f9b1505e09fcae9890cc54e8630df91391170a0e7f7bae4998f54501f253701a80946a1481afff11fd4fe040a1d52b03567bbf7f84d94a245a0e0ff8b9b41db7726dc43f3ce46f4bd5b266363ddb7ec7f795f87c4282084ecce7de8535190fc5633f98d32c8e648392d60585047ebc98567dd3e78cf82bd8e58789d14e7d08e5b535a1063295c8c565da9b1c3648f769979ac009ddd054a50417976d471485f1f0e71051fa6cade9700e46291f4612274985a154bc3ee2333d1da0c35f9cd26bfd20b06890bbb32b1adf33451e85dbb6dd23cb2a043a53047120d5f83fa94e62b6d8e7afcb329457704ea6a59e9ad3ca1daaf75b3f6291b94540a4ccee7c7230e94bacac812e5185724433093d06ef92f85e8faafc8dc968ea9db58d0a2f20bea60088e7a2c3c0f853232e2922c428df94e54e75c7793c4df692df265053dcc4acc8e3e9c1bfdf71bd9fd85cebfb05c69d28913c11700b4a2b0f39b7d5d75a57a387c30c68cc3b255c56cfe04015dcf6d55c9b13e90673b01db1ec1ebe9ea86b4e91ed04b42973be02742d2e89c05ae483c0d940f1ea89f460f6015505f183acb867d68d292da3c1334ca95e9ee574eab91aaf3b0d18fc613b2fdba46681e69f99d7ff4a3e6888073a67649878a92767c83815c770b83ed5df0b79e731f0e0aed1ca6bc9e3ac5da82398b3ff3b7f722b9e2bd9d3504731e4637bdbb929703f927d853c338a2b867542fda5ae2ef0f971ca727e29b4924dda4bbae399c5210cb7e09a6412cc2c036becd90b85c62bc649f6a0352b639c5c65af3b49637caf523d6ccdcb60854eebc4adc13170771195368ea82e0bc87d41d141aa44f2debaf183ea0534c12a6d3a83d28ec8bda33314f7d89c52638bb577c32af30b84297cf6832e909908f19a3f11804c35a7ff37dd05dcd686e59b16126fdf533f5ef21a5981571bbc7e3a39d3b10c56eff87af3c5bb3e1a84d4618e9b60d74004bacd23a36f4e2885e9a4ed1ebc1420fbd999b8f0a7011117702f3ee202c76c63121681fd33c4d302fd6b727855e5b3a44289c704c0652bc9e941cf53e728b08e27092007d60a6d5ac6d90c428206f3842cace7339e0b72597fdbcc46a9c05204be17515bf3e455b2c5b1eb45395e450eb54ff5932e0fd88079bd584d7e17dd1a5a82a5976d7664ad00ebbe933cba226d2dc3173ad7f00d35d99b820a88c4cf1144d3d9502fcaa4bd99d558e2ed598249e721cd15d144422de2a8ffefbce13180605303c9ea0942f5dc1ed9e718836fa72f2a9491edf6dd7f153d4056cff336744caf613e7fd0d87a6141adbaa83f2271b8578494acbc735183fd8f5b17c565def5d78b0e1e9e1cbbe0983033ec4c39b47825b766e30bf931a353d0c74f5e4bac74f13be01af4019e5986868941ba95d763bd9217b7b671b66887cfb6eb68f768437181c012f3d74f3c51ac85fd0234c52d7ac8be25ff61aadfc613178eec8c121b34bc78f4e52a4f4b47f7dea98b7e89dcd43f44c1446e531768a6d128d471d5c696594267edb9b6c2d8ffecee46e34fbc3417fcc2955425d06eba78e7d877dc94393ba86b39670151ad9aab01d549c2284fce5babfc46f82bd4c47f385477f4250f42db04e29e412c9ffe9cf1ffcf55a84fef9aa315bb1f203c9a723fe0aac8d3d1eca58349c7cde6e359a93acfb8b440388f717e08371c29e51f101e998ce7e33994c2edfdb2c6eb4c6ce6102693a49080aa8bc5fcaf1e1ee293e85b67b57fcda621f6d48358d57e78fde6116639b43b2ac54bc2e638b6b6b6611fe1a83d19cc66af3954fe0a3f1b882c201268b432f1ec988070aa37f49d2761d03f54266ce10152b4cb8723db75725c45877860ef4d76ea4a6208558950c985ac0309172baf0bc14a7ec69d56b14107cc1287d7b9e37e03ed4ad27d9524e5f6da2f4092b573b2bf57f71a50ec5b2732045e19d199745135911f64b7e688b335d98288b50594223e28661e9bb9afb8d23b20c9704abc033609d3ed78ef7f5cf9a6596b9f4f746d96c28535d78df243622780f2071f7a81f00fc1955bc75dcc456be767a4eb4c2751c8ec40fd0e3295622a38772490a43e9c5724f74532ae8f527283c7a9e971c95b843886df8a53c6b219041cad9c9de5792a8b685fcf06e1902d9d1a72399fdc7634bb4cc18300f08f33400e88cf5cd65dcd09bfe0b64453d7c0e52b51f1e5b1286aa44e52247d2506f159a92b851dec1c30ca4fb62d0403f67976c9bebc57a6e87b9f9523bec6c7ff13f35117ad05b4ef3ebb4b8df946254b48953141cf4a6475ac0f915b2729e6226eb9db1a24917a2533715185ecf7882ab5e091fb6ca07fed5a964128b2c73d92a8fcc46b4932e878d6fd8214879da2772ef588073861868e1d7579196efb15cfa93b1a2ed0f5b7d5ca9a97eb655c770e10b953d176f7d4d6d62d7bd19f5ae732def452067fb5b37b1b135fc2053dee3aca57a21d2cd92ea3e4bb12707d63e3d084bb11c3f17aa1aa4a3c70d9f420fd6d8c9353cb79be96f8a70b643c7a55aead8900f78d67902c1375a2648b80667f580e2966040da0a825d4894e9906d6441a6f000191d9b7e7beb6764e6c49b17c0eefafaa6e2c746bbd9ae31d6518ae11b2ec0b868eeeddfcb1d7e1f47de9b270a000047e7b26209263f51b02927afeee633cbb0d27d986de73e6e9f6b5f20477bdd369b441aeb29c4c67f1be6658ea7221fef7f48d31d433ad32e607af522620f0164119f9a58ef0a4d705c76336b3ae7e91b94c0570a37e3458ed53d40c0aa968c5ced1fa3f20f60cc3b4325ae15665e5f14b9b271f590348b7da2a202feff32f0fb24b0747fc6a3a72053a3a513af44aa87669b316a9e33931c113be3f6c7dbe0b7098116bb33a3c4d38784e3f7ae6a335ec97e0e89d61c8cf253bfbc8d8ede9e4c2b845a08a7a676ea78c0032a7f37d0535d5eb274a4dcf4fbfb887e0afc5a8c3b40f1f18d15e338a71733dda066244139b5c4d6db20987f781a149d4201c21316fec39131fb0839b3c21e7a51a03f0077c13f3132fb24c4a2b885122f695edece503927231db5b18e92a4a05446a95fab7de06f6a938dc2bbaa21ef115ac95a8b4d571cea29ff14c2904eeb042c18f87d6fba4543cd90351447d2798db27493af9262ac26ffee061a03887197b7566702ca6887797620b5fd34a6e04e9922551e8468487971fe2778132100f199bf5e445a87577131e4a8cd5a50792e086aa5e7f7b60b42cfa2af02e4cfe1b999c701d79a376328b6b60a5ceda591e7953989df7460402afbbcd6bc8ea937f2847294816d9e2e83e325f9a7c621d0c9434d1bd719bcf3a9e72712d2a6abe188c2da7963036571478bf4198c746024069fbaf271a1e79afb702e1d1e9135f7b6ebad82296d3983551b99ccace3a547791769d9d1bb3ec72f0f11d4bb708ccf214bad8b2e264bd8f246bf2c0a2656cd150894d29224e6ea529e87dea473589a051e2e6ca1aed18d379bc4e4df977dc34f8f4c71d170462dd786372aac022588eaf99b340af28306f1793bd0bc9049e32b00f37e358e884fb4e43e355db7e282a6c7f1bcc8c81e978b4e6c6efce18b51d466c2f13a511ba1efe7ac288a016476ad5a4183665ce442d5f0cf240c9f3aefd4554433333e33047e8d06c39215e428f2c933dad5971a88ab119551260fef3961f3d9b6b8ed4802b2fbc612ae137da3d9557e67f815893ce63d1f2e6d3369bc450834e08e0a93f0a741d600c157af2a03d571f20632fe79117c84818fff0b0f67a4de3928ec942462f519ab8b88dfc6e6576d82b4f6cb9ac8c91023613e5968f0c6b1fb4c3e8f388730e38e374cd45c8cf169cd26aa4346c4c5bf4c111f7fbd935a5de19bfb0960f4b77b83907f3c56dd596df61d9e418deda3c6bde892ca727dc0e650df3d50cc95aea084726c25da526c179ce5bca21608210badb9f62c9cdd1624d1700cf1203710014d36c38495025c1937e904c65bc58ba88b6bfebccd286241d0245e40f83d55c4c0260ab1134cd4b8c805c613f552216c974c7c347c72c23fba78f9d377800c002849cde9a6a8234fd9f2fc72f6b5eb593d136971ed82e8705ffdba07f5a9ec42390218cbe05ffccac65c9ad05b8508274cb984f7b88a10fcaa370f7aa9dfda0cf461a9dc9a224d2c638adc9f85d5bec0f69a036bd895e25ea9711a8f7797a8514b20e3038fce3109e3a72352c56613c2a683fe174820bbe7de351eedbed2d6fb9f94aa0d80dc020c1c11d2e4f9689a009f92c769376e083aee6e2900412f81660b32522af23a18731335db523c661e016e21d973c9899bce8e6505771580afe27952296e7397ea8edcec9c1c9c2654803016cf6d65080670d3169fc4aee0b034955a7f517458dc43c75f80c8eb9e3beaa34bbe2f97f95fbec09ce19fee73cf157f80be30b0c9198ddecea85f9d3cfee308f948b87fa11bac33a313834a41a0b25bbfc1c9253daef8b6e1a7eeae2013c1d54302aad5e0de0318234f3000e26e2aacc1b0c39f2222278d4ec807a71b320f39650eca756cb4ddeedd97275af0c81379cc7b24cd57b44fb4f7003da17c260c6c0d70858336492ba5536a31046bf9f64cf588d9e93287b954d80bac6a05e32ad5ee1e6619ab542fba2c5ad96f7e58cefe2c4331f709e8437a5a6d6eae95508ffa9ad6a189a2bc02b6527ced4866b08d4ce9026284382ee072f07126325f3197441b888c2e2b800ff030e601fa589c984577370307e68c147d0b497a22b51a5090ef7b20cb8cf696a5d780eb40afb2468540cf90c30e9978c6c96d916fc8f7fc915c7d7c7b277a2a60fbcb48d3b97f643d8d9cea4591333cbaf57e9939e3bf930734db6235102933ac0af2f612f7d2b4108ddbd46942fda09f3081434df50a3ebb80a5b9d88cff6d1fd4bb98d29aa469bdb00d77f349797a88624745b083f7dd55c05209d0d13267af7687162a9ae5ac979e15dfb74988b38fc966d73d4d65820195e20241a35c065896631a5bade01bd44bde7b5511f5ca6742ad375336e0f4db18a7f5ccbbbaff110fd593c5f96e44a204dfa17ce0614f39a489258c4db72d393d1959e11a7f6019a09a36ec55272f176d7d07c8790369d14937678ffba3dcb5df7f48989cf0078449f7f88859dbd1e7c4a54b25883d512022c746ebaf15e4197fbcff287de5292856a995b1ab299af3f7f06dcd1862d507e25110029daedb0aba4361e8a9f3cdd24bb90d0c41a9e89e455750cd2b8cd67931b8940655be8c8e012375d9018d4fce3bb921137c3591fd88bd3c1e9dcbcae6ed56a9085a8f755d29f8e4cde71fddb82de2da6a612f5ecd6ba25f4ee89e3afcdbfea711f32c4a05c0ea7c16c83efdaa9eba0345521c8a400ed047b9880545b36250eb50d8de70db580aafc373c305ae4e96aad5fee64798ed3d6950f84b1caf2955585888f883bf31f0147673dda282d64ca3d7822b398f133e9ef38e1084ebb4d2d16858c2d0adde25e5beb3fc52b7bff90521de63f993d8a7a159c4e657bb575ac0ce9132dc21e59d80102d94ea0e1976aa473b7e93d3c2f19288966c0317198c924e2ee5db48717ee73e69c21037c180b355b66208144c1375de169c093b635b39a1054139048f993f900808c1cee137038e9532cd5e9896b4a95fa17f969865a9007e0115bc9031545da856cdbc549bbf4026974a7b6779995174838f09e8935bc4116cc1018e131442cdec56d6ed4cd4afaf4a5d39cb5bd50ece7cf673fa52cc0d3c51440224a510deb2a555d5e2a871032e22d48b6c02fc3397f6859353a4ff849e98d8c8e13dfe24239e159fcb9d884ec742f67269610706d7b7a432802ef72472806c510a08393fb751b6daf46052a32cdafbb6153cd0241000caa66b3a3e1895e8226b96af3ffa239eabd7fe38c83759a58f7228e5998313f3069f763d62a5c7f9d26aa05932c9736c3cc4021e2a9a61cd536d20d286f109f279422929722bea3986ada3b95855501a0534b8db7cf544265c46e9831e32f63bda9e9a3a852e4ea6fcea399d9c9ebd1f75f654b70466f2a7b26e0bbecea53176f066e76c33746cbd275840f20aace8d7503d2158ce5df40dd2f3f0246682a58b1c0152031a309279ae998e1e56ccebc52e13fad6281974e62d1a0923999bc2a7cce5e5d85a40571e6c86a97b5666aa28fa213c66262387fda7c7d46381bb79f0094eb844197aef62eeb91bec8359263373c9d0f81feaf8fd19be254b1a8bb608ea31206b0106a9f3f8f65dcb7deef0c8ae8557ac2e640255cfa51a8ec30a1f531e977fc5bdcc297d005a79ec8457993092a5a57fb2c3a1e20ae8a17ac09a1963672f78837ff33d74b25bcdf6ffc03ac85a51160cce3b84c47e598d89ba935b081947a5297d6849956aa3a333f9f18b6a17e1648dead4b395d6b4808e3d6f82e79f03357b6f7faea6bda97bca9f7c12dd2c830b8130517bd12ce54438388079a0f7f1fa4c139ebb61f02a387dc37e5b52d032608b0f2132a491204a9b813bae1931e5d559aaf8f1857f6998305cf25bc58ffee91dbc67e2588bd2622f4f1055a5f3248391785eb7029840a7f0048e5ab5c99ea88fac0ffbbe91560101bed0405cf8eb38a44716c5d39d060aac79350594325c48f51cef7f57918282d54eaa0e388c36a2bee5cae5a4a63f59941cfa930950467c0c89fc69d56b014fa964aea82c12e11583a187d491fd1fedec75ab1b0d01baf8fa38932981747ddd3dc8ea60bf7e16234ed2c44e5fa0dec714adf771b1f237c876afc77c5bf49adf6426122760dc0ecdbd5084ab5ac2d787c3121c4571288bf42a3acc0b70a8c223558db49a17c71d1044f97d89a54a7f8bc4962549b77b3fbed067657da440bcf59cf307fcf2f2108a462d5c66135223b1f651c19c591668dc828a6ef574e2180835ae403df5a3de5fee530831e7a97e5cfafb9cc7c1f9b57e453a6e2f7ba56d30cefc79b63a33a4ba54520729af521bacc27357f48477de0b9bd23aa751175e80b37c2e3e6b8ff4752918e69c35038508323a014842b851d642f1ae8160b8768581b340a88cba76d94a17b659fda74b7705f82c79b7384141ecfa6d27667dd7b9828993edc549d47706c399dd08dcd55b95f68f081e46f60fbe95b8c3194eae6fb8c9327ea9e5f78ce415619fbb7603905da332bd0d8678d90e2c51191a8881c176a40b802bcd9b75f00b36fd7cfa9ffed1103146537084da906f705f777b4a51012e35fc7e51281a6a2659a46424a529c0730b2464cfd19f80d0c9188bec5fe0c5e0c83cb358e266adeaed83a0614d4661a8863b5b42aa421b08a0167d95300aa9154bdd10db692be661d79c7455f6d84bab1cb4b3becf31be90e919c9a1cdab588da34fe46788fbd799a440ad57d3faa61ffd034a0ab3c0972985c4543045c2beeca5d7999f4feb9a218d911cf06fb35cca9d4b8541faf6bc557ecc29d9ccc97e3c2a3fcdb88740af907d55446002108c16db62ed54575acedb61a3b423bce7de67b5c435fc6d7333fe336e9d198ee22692a839dc86aeac1247a2037c0a57699dbeb1062548c31859896c880642d6527a70516e6bee8cd813670c16a2816861fa7537eda58d2a8f6ed21dd4c33520ab5c04493b39f8ee8557cf4b2124eaac6eac2465d42652d789f47dc5d72101c60ade4b8b1e22e45611c2567ff5b99f0cf58e47487900308cd23fb5c4b03de898e8a4618ddc964633df8f97dd856a6da65397bf556b1955e9dc18a5cc52ade2138f920abec0c8849545967169626714aae1055072045c020b05a4005b98c2195efce62a963d805b3886aa88b60385c802bcd6218b29b30d78939e794636ec6b1dd0de4d394e145bd692a2c1bd1ab2b3d1ad2d3fbe55c86060e0a54c5be447ec1831b120a63ba366d09560cac1562471b8bdd71913b2cb782b30cfb4074dd161abd4e6f576a75f352479bf8f43538d92f3290405c33b25e6562350721896b9c505923e4432fe7ed3b2e503c606a08e1b45dd05ba113b0cd2a4d3584d85945bc8412bb7242bb31820d774aa652615d005afa645d4b58ca8739af8898c4dfdf04b4436e1d6f1e70f4f4c0e092639e58fbdfdbd8c54d17f8f984eada27e6425a5e56f4f4f3b5461f36864ac3e0a861f40a2225f761d7a4a242288b11af2ad22e2612700d658eeeb99c78e005ad34894c98b5e862678d256a2872c405fbf0a60bd3e200350d94a92239b2eb27488064d583e3c175b91b1ea5d51fed4513e75f6382d85d0c68c9346f268c131bef5f10a2afa5af88bf7dbeb159dab7b79ca2d5da797e89b32e2d1e11e85555a1628607db3ee08ee1520ccc2079d2c821047f742df15072e8071bf9ae99f505be5f54c2295bfad3d5be30a9ed41672a8b99963a215f659442e742656a73486a45373ef02450605645cfc17982de363273128306324bc79609f49d272b7199ecee17d5ebe06d028688a8be281aa702f29bf62b21abc9f503130f20ff31ff5cab9a5334594c71c6c957b95d153253fe68c8a3954bd7f081d003e95be2588c3d05c1f76a761b86105a6ba825c8772676c0f2ca12053511744cb8bfcef306c545bfeac6fb6c10b0589a81f9d33db5410b7330b146001271ef4f8df1619208ecba4d22308b5c412e7332a0197f84319f85a841f0e45fb972497cb4774d257db1f6c37f771ecee0ed605701305870b5ef16a08aa90a82bf164150229cd2891379c3b08a69db0717417acc8faddcc602660a6055ca1d6a909cbe74d2d7a7dbee062ffc4dac274d003e33b416dfd32da81c0f76929c86a4b3f7dfa881efaf67b69e5eb84c8ddef6316e6bc463fa495acbd1d4376b6943ce5fb505fd5fd7081ed996bb4efd32c516db5c283feddf7cc984b9a8484e9145c0de44fd010fb205f2ce19111b784b284ab978a5c5f897dc5d148eb3e03ab5f1e705838024675f548a663c7974a11b687a4ed47855517a4285dd5db3900470e3a0a43ffc605d8fe1e101dcfddbf9344cd14f976787b283a95b03ac890dc34bdf3d9414900d2fced28cefe42f3281caab236c88887317ef4678d36221104438d5ad920f26104b397e6f36d0b27d361fc03d41161451e91ea135d9defe8c145a594533d8704db3376703d06e91d28ca9290531bdac0619e190b90ed4aa58c71ac3be7dccdc794932a68a411f1382bd985cf34c6408f0521e036c15be080637a51c9c7ba3885c7b3f37872b60a4ccde43594ab5ed2a673148300a0557102176bc413100e74125ad63968f37770a49011c5d24d894609fe6bace9e27755eb96e83ada3714e013ccb305b62848325f37349d7405ba443ec1e2e5b4c479f4759f3e6c61feba0e9fb5e285cd2013b40f7631e83cb8f2ea9d6ba61e1ece9e4de45f2418205c5d45ada8718cc5d35e2eb6e4d914bd5724466bb3662d23eed5705ef4a07f7b4da7ff5ddecf0fb1a7542a06a80d54594b71dfbe850249dc22cb0421cdd8e693889c6b095a84a97ffe4b0afd8c28215d66bc2d4138638fe434d7c2fb5cd61521706eec226cbe186e6fb77fc89054b51fdc631cb547157e5247e7f71fa991db5ed54598ebbe7dbd068e2813fd0e668e38e4c38e526dd57a403e2c063f949387095b65b9f456eb20b260f8a11c1052f1c30021d6f014984ce53da0e4f8fe92706a8b11507231806ad7e804d76c722465b718e63d017e88a03cc4369a9a17536f74f37b8d5d6ac1ea8c5edebb1de7983446d8b68059111c853f1fdac72c73db60f0d486586714ad91d801b123c0fd1eed5509b350ceb59df1ac412f1cd2c9dba5b94197ccba2c6e7580a3323b0cb81ee502d66bd19d2d843b623877de7570aea20ab2d3b68f5491526b47dd03f85fc8b13427781baac67d9f43c2cb67cae9f542d9671d1a8d3abf049182cacf1d9a97ad429149bc83e75abeb4cc62a4972843714331cbaffbddf40e7b7695c572eef678a880df354443e81ba1d67a98595d8b9f0b5cac5ec8154d16558cc3624d411e76ca983a7838be589f147c10d82e69754325ec22c65605b2668d5156f6bbf65b4dca76fe715b4d161564ac830e1750b056516734bb2369386d051853232bba75686b4a847aa05ab0afe54ce177814495d4cac748c337e5793cd23b3f625c24b37707f7bce40d78257f394a9c642b26513f0368ef9869bffe0a8d30ca7eacb971ed92aea575a76bf5ff215a1fbd4e8eb21b6ff969a870afaab133b82016aafad681b138bee528de3f8aecefc67920c3827362d8ed98c7ae2b2e99e5ae1ffc8052adda57e4609036b3e0692581279f2c0153fd4e84bd5ef29c2466cc6860986227328efe3307796c36a6769a8768b124b24b289932a11e78eb5aa9000cf5495521929846106e45db07e3138d6572943c33f3a0bb9a843ad20c38f8472ecd874cef95675c45201a6082850facc28f9a513061168096d8521ac44e1f1e582c9b8b5ac56ed04716a84cd9da3c66399c390be6b4552866c4673684ce62efdb291666b6f19b00f244c7f8e2173db8d58a699cd78d86aaeca39bd9f90d4f2a95319a2872aedb8bc40de1fc78d5d7bab7e152e27e9177881b82c5eaea06198b3c82eee3abd1ad019bc92a5f0c8ee373bb384d3ac7e8fa9320a5d33a64d68e4289b1661400f6c93ffa46b03dcb24beabf5be2da914c152322002feb4a14198dae825995f97fcd32f9a442ebf1c5b55c94bb4e52d72ccadf046c4c872b82c47fa319965e2a08720d790f8bc54475abff66af1705943beb37bc5c9d65dcd21786b589e4bc9fc7d89ea908a4a96cc2f6310e95d14867ed1214cda258c498ece0204d316112dd88a52580297e5436548b1206876ec470641779a649d80aeb6867a5416bbb86d609c1d7a57afd7358ffa6b6a2bcecbf031d0b16b9c2dc271a4be7e3e4196c8858167efe0e5d88f454efd7f43ab8a6941f6421ac97383e76164919bd4da88e00fd8e143edb5095d7918ed6c425be5dfa168e22075d581f253293dba254bc4a0f89cc732a530b0f8fce4cb3d8004ab7a7b88fc49af6dbf020ad4a421d68a53e0165617a47a4f2de1b0fc7b11f1cbbed58d53612ad9e906d84d0dcc06a85f8f3324849494f3f554845a7a4433153b954b592be6730ea4d624e9765fad555ea8c2cf5b466a6669ef39bf5f53c38467b8b3f87ae4110280e1b065a32c185fd42270e5d4f7583c6f3a0e34c437ef17a44571045eba55b2568e4bbfd7a449adae554fc3ffb6d66b76655c6ce866baadfc6ed158c24633c6ae778e71155e142d6cec6a979e58201d55163991eab756d31bf9b9d91f708da5a7eb6f8b8e937bc32d66db1f75f2cdaa8fe4aceb6ce70cce1fbfa78d6aa0929eed6ca5b270a2a33dff982de79e607770d2ddbeabc014b5c9522dfda9544329aa4532d640e78d521e872a193781c2681944014f960d45bf2db0c6a06a4f496ca1bfa79de44f7b006b6515873b9bf966619ac4c0a37edfcb5a9f9eebcefaaa37f6e5e95d70e03478daab2be80f8c2e8479679075d9b231d45252e0e795dddcc440524ce2c067a80707048fdbb0234c0483ea4117e890eae20dc54adf13505f5734e6d5d1e5666840864a38250c398151d2c9a7b258239d5c7d70ac39bb7d31f9cc88bff1f57a2b4808a073f4a84cc100ec8107a2525244d87f626dab72425a47c8affa3739f34bb9e0335e7aa2b443e66d009b474427ba87479206b41272624ebb2da7ad927a45139b556ed0ee2b023a56d60d98f8c54030f5f6846ca4c9d67657b59d2154ee3dbb7cadea2e2c243dcc5aa90075e36df9b2691c0aa63b63c781b042e8aae5d7788c16d66d736e26f749421087d7aea56d2590b04d5886064a95952344fbea81dff847f368f7c6e4789171d2acca522a0a7aa2c916606b19f9584fa8a681d04c82b9554d9db6805bca161f97eb35425a9eb82a74c48d52457022559eb45ceab9130ff668a5c54a863c58de6cb477769cdec6c26dc703f01ed131cb96481d8f9f6792748f6c18cbbae3627536eccf63b2e3c0d4cf26e5ac3f41fedba2f158d81bf9944f3caf9853af14672ef66c9a20fba8e1ddd3fa53074968923ea0710cf3266711f16f858cb391ec5c17258159496d8dfbf5c8f1bf833bf5f87b6840ce2919f32b6579d34c5f57c8b8e1bf6a906b74d7809dc8cc84096418b9c53507d1121403433063d64b689dcd2f5477de6d01ee2d1c14b7e1d8c4e306636f5826b68b01a18fa6d19e6bff03618c807e834648391dd9b9a1990be87f792c5de830306dc6fb5567cb8da47beeb0922fc578df7bac95dc3c9cf313e6f72d9df9756a75205ae4a5dd96dbfb1ef628f53409cc8840c96aad95d3ff6e009a644b84de4f8280af51abe89115ca132bfd589d0d04084639d40c14ac644e422f63a8cb4f0e2cb1bede8e0dab9a515c74a66ae87299526df3f05efe65dc1643a1f3dca3370a03d68a47e6d4ed1da5aefc5e02c11f7718fbe83da385f2b22e4aede1b5ac535905d3b1efb4356626de769fa458e5e5801ea1411ffd0f594b1cae117ea03856462181ef5cfc2f7991a379b6bb4a31130769687c60cc1b4b9af488a31fb7669dd0870001b8dcf8b20d00d17d2aaffcea5636c6c2aa553d4ba9191ca49eddc14928cf128052455af59d883d813eba3f9828c9655a0efbf81917497dfed7edf69937e5a6a11b3528e31bd3052b83722f052f03716980047cf195fa66cf2cf473d116d2003e2a8bed5fb03cde994f3544298fcf613058f87577680e463a027c0218934a272c386732fd5e009358374bdcca615da673d2839432eacbde1742ecaeb0b31281c5251afe38769d6e6f988cec65312aa20e8ff363bf0930233cd9f38e9e2a30cc5971a67683228e968c0f1671e581dcd590123c96f6c78b146a3806394ee5ecd876c4d0bf1bdc4dd8ad010d902144ee37554492f2b4b872ca4dd4e7fe2281a9b22a66c07bf6f5afa0cb1474a0a0632708bbf1936ffb87f9f8fda74a3dd7d17f20d2c72f8f0a0f861782b40f87ed3ce8a70649003aac71449097ad7a52775bb5a798f92c0b93a396999a8f5a1bf21e4441f86000aa3fc8654f7f681a0e5fdbfd798a316a5e0f7ce30aa5198a8628ceeb4655adff686a718c64b65defab09c08df9fb491e300d3a40bb8509a3ce2204e816798f144ad46782747895beabb4aafcbc1541758611d138d7f9da9dffdbef234a80c3f896ad367ba30a1d3918cef2f73c87ba901a4907489f994b9ba482adc77ac9ef91d3268032793c86f80ee722c595bd7918fc01f95ddfcce02883f0d4628b551b0a3a8d7c5aba9c658b9b6b7894067fea5ae65296b6607b5e95cacfece6b80833787114725a91cdd49137b168a318779bfde8be2300500053552982f37101ed86184124405da0b4efe98105172f9812bc3d4616b5d1d10c8b777a3ad7e8a95d4a154257d8afd67c58ecfe46e136c905a6c0a84fba713fb39c29fd5dff61ec7215dfd135bf6f2381b4b8f339d30e82fa51f4129771ecc5c95c4c482ec35f191c6515c71e90895f402c92ae3b31c2152fdcff295a6d7a613065186cf1efdab5151affaabd7707096ced4bce2ef24538420844beab16376f4b98d2f349441d6050f79279e4b7afa9fca8c55a7b3f7b4603bd6bb3f227274f319790b934f76b856c24102a9d24f302f81378c0c5f8019ce1850caa7a318fd09e490dbe2e318232a6af2682cdaa2b593e651101902edbe0800cd70c27179a62c3598d76598ddb88eb06b0f5d5c42a7845de21ab50aadb780ba657633b904f435bb8d342109ccea2df7ef7942a05184b213dd86aab65ee7e17c9460ce6a9da265b1726fd456477f03ad0924b03939f219b48ce455f0e27f6558e69c1fc402011a66e61d62ddd71575196caf1e6a670fc6148e5d32e87a41acf340287248aa55be3781ef02673649f85d392f2020e0c7b8f8a32077f6843fc219dd0e8708dc6219034e6669e875af518681388f7abe244d6dffb54a97b20cd18d0a2a660a73c8dd46676be9feeee8f14a0c0d0fef2c307b01cc451063eeb8de67575320005f5bc7a1316e2177046be02a5033f1b6f9c65ca9b6712866408028e5c24a2e42d3740a209fa2a634adaebcb087325483d846bc3b948e44354841545f6aaf6a3751b607055b91e9bad1263533d9b617d901d6cff568c2ee3a9d51e23daf4da698951b10acad1d73c3cb1d85e1c5767b52b43570358668eabb06fa60b423e3c4ae936a89e813c4a2d920b0aeb62b82e0bea06e9472876804aed249e928b045efd683d29165312d6d4ba15f84e2e80c6733a004aeb333329d99659328ab9864bc3aea14f5e6140da07b53c897684278d8d9ceafaff6a690e4516069f05f0d5c846b771e4d28d4c39b6f8109c0ccd77527d26942579c2c5d3828c89b2dffc75257a52e33f76fe2902e8ebc0d4a355b3e3d7011cadddb5724c02494ce83eca8d9292a4fa8e1aa01daf616b63afcccc4dc424ec8097fcc0c473b356324524eda7de78a280b786a1b2ac664812a18ec634159db77faad6e3f61e8cebdd5fcd1a03b9409a4954eef6be1a75c8d451e93ba8ec67c9c155d224f779e6f9c13e95ac72de79abcb83c9d477f981225a39da07a3a0bb9b5b44180c43a140a204f60a21cfd1784705833637963431048428e26bd3c5f93b9b2fa828d4eaddbb312f289af60107b8b34e945e8b3ec10ec1892d8a23e511ca26cd4e891cb08a51bd04ed5f5d7f4499d9c4f24cc52de655376251edd12935fe6af2264413ab4b2156db29592ea3e75995004a49038e9ce1be5d06001a8a2ba15947b9f35038121e0823eb97fb4971bc47ea2760ba57102fac6f6a926c2c691078221f333c10a7ee2e2acec9fe835e590a36a8df89bf10af6ad21859380b59bc3d68c6244649dd6e386c81c8e9dcda1c764a18d9bfcf2d47e76fd76c421930adc28795ec36b5c72a3706d60c479df8c6b9c99da7edfd88cecafcafc78e6802fabdee37348aeb1ae5443b13346aa7fe6800b793638c2e969284500acad815c252d48e4ca9db921e17b532b082f0d1edec2772176bb1d886d324c4c4ba9bfa4576364e097c63bb906a175a335cd1e1f98cc7036ce4d23bdd4507a2563fab6774bc8f7da7e3825ca63d0a15bacdfe85545986736f359cd9b1924df0bfe55b6a348e44ad96966047e421dda4960196f652b5c1225b87d2a589d62920699b3b5ed6e9007c04529520e45e037285cc9f19a9d983656d4c499e3721f96b1c365acd3adf9638c15ae832396f56213624614f2f50cad3e7b5e6bc28f82deef1ef21e11c152d71eaf11b2d9181281f48a33b486a7a1c0d033ab875a5d50abb5ee1bfe58b45bdc90de1c91cddf9268a65061e86d60a72e81516173308a22c87968c1ca2cdbde2b3a7f74f38c7eb0ca8dab0846bcb89694a33c9dc81a442e5a41655648699dff8e1fa84cc49faa3254ee3280afaa3d1ce1bef94a7df1e096662800320f3da9f898f3ede2acdc7209fe7ea9687a2bd92711ad0002f5d413eba12e044dd1aef080cf90add3f138a94ac03274ac5c8c7d04b7e3158a886eda0914b1d266740a1b7f29cbc5ef6fbb7e678954736bbdcd062f8acfc2a3b44a8deda21989e8e53fe5e0a2040c38b19002fe94f736f612b78757975b0c985a4601e2e6fe604832e774328ef5972dc4ee9402fc769af10c9ad084f8ea0ce31c37e77076a3b95baf5aebe28f80552c03a671b2c4270d67237746edd4f3593983dfc76d11a43f06a5cc1bf3d14fd5177028976a265a16403a929cf23e538b777e7439dbf77229a91cfc2458dfdc6e0254de93c392353012004f9a6c26cec9db5b1dadf7831dc7a8cc9bae81fea00756182ce0b4e9689f6a807354452c4b4ec35f55f26927a915d42d05e501f26aa08cd9dfab697b8d8b131338a4c09f8ab10be9347ced853f573dbdf62bb64475996c52902c49818aa45c1542635b39049b8e9a0cc276d27d0d009444a7b57d435a11e33a2efe1fb96e722de2ecbf639a1562f85fff6acbca0ece12142761b7873afee47f5a724976a72c66321afec7a6ca2f4cc7ef4edce3e244334b5a40f1ed5c76bd3978d15466be430e703d2057b3117b3155e4e08d1e236d07cf6959c8e6ff7d768c4f81eedbcdffcce9cfe410d5e752ccbfa23b1a71dc977eb96e852677cd07dcf3073e3ee09296bae444db67b1b3dafa6020aa5641ae38c3eb8d559888fe8bce1fc3d905f232c833e46b063cdf4386b22bc89a24cfb716f9df5a42d51ea57269154c7ff5ff477c32a2b695d8026f1d552b59f34b242c2c4af4834ae46f93aa9a17e3aaccaf73b6293c6913ff293361fd8593b4d6fff0c4033a8757dfc4134cfedf1ee719c5ace1d674893f5f0eb9bb5d994c2af07e4e6fa51fbeead5b28e80846b3f421c3182c9df626afd02d7bf6da3d908d2bbe86cc5d3b6338c1a0fb800a3dae8ee43bad7160633678ee8c88e4488fd668a626c89f98c1ca80f6aaac293873f3b16bab616041ccd756ef8adc43e5429915f7fec422abfd2109e97668952233c78af5d9e4df8359c405fd3242b6864fa1c78f58c77efd3baaa87ede1277137133f61ebd9279768a9a14215f6524c9497ca7f85c62bf88b33c4626f8460aaa7f600886f9c3daa266fe67eb3c6f39f275cc531a3743548fc9846266af138b870b50873c068e578e74cfb6685027e4e5813e5a58eb4893e5e3bc8cbb7024ba0b30b66d0a5c98630a98b10c696f2cd72ad98bc17b282432ca0b9bebc602675d21b79469805a0e1b153ae848166f0e0bffc41c816d5b17cf4ee3c0b8cce688be1ad6ec5edacc40bb495c4d9fda7dae397cca5106c18f6e6a50af30c182dad7289ef953e2b1383d27e179001897635161ccf837b10ee7ede6ff77ffe72e552a6da27278c080607c634258430f2a223c476e1970571eb1c48bfa81baa0151a76637b16ab76f3a3cc1b2329ddb245b088f189f45cc1e16e8a87f2a1bc76383aa462f62353b80b28c81c38a0468796c81d2b551b412a3f4a6a68e72cfe85641f03c886ffc9eb12f179d975ded3e439075a0388ead0c4abcce8a3ee86c001917a707582987caa5c5850e7e0540b7684cf0f4de1b6e13396de9e118c92d4ae8d2ff64f6e895845d9871e81ee005bbb18b4e41fbb554b10a159dc6d9a82216601981ebf5a457b3d78e5b90475a467874d5b0456af73c567adb763d7c3d07f97b8b7b53350e4d1ca5a98b3742cdb4383e4195c104c6b8639b5a857548a5af2c2433c069acb60d855d691c9f6be2ff7a910be4130d88dadfb7599024be0e6c5fde561e2eb4a58effe46c4ed546992dfcacc447dde27100f16eb74570951962572d317f29ee9a0cf17b2712d7c2bd3a10882732a04810dcc65982aea3eb9ff40debffdd0310d467ba638bc55018901905cfe8fccd28f523db9a4c3a57e8ffb3613bd1480a421beabe759e2ed99d9d3a611bbb03b3a6be21b58c410b5c2bc5f9676693d90fd656b25c805d1029d29788547735fc874a9677e7af33aeae4042e6c816edd33c6c8b9886c7ff54a8caa700d710a880f7c840337cb00c17026fff684424f46178ad46b31a90f795c88b35daad7c2ed7d8f0e2d59ece7abbcac9e73bddb86b7785bace8748987500bd751d79b15c4a06fb2769233f2fb0379fd4a97fc00f7157a4f189d18cd92c9876369b8fd9af12d2d2b5d2ed6e5e1d0ae86889cb77ca6b20ffea1c12965da7f813b657db52a1183c506380351435b2e7d1731ceaeaccfba4006c11778f9f6e365107898dd5d41c1e891c72e347ae03f82633c0fe8023f2ba7871770d56333beccb96cddc11dc07775e09a477e710b0d84851863ca8301613ea8be0be4331f5748af0667022c01015f4aa4361200d290ff7692f8a34a63a19810a32aae2af12f1a91f297fc9c14fcf0e9ddfe0173908503984e79d2033e33856df15879bfb974c0a246192c555d1c391efe24780be4b7232ed19f3b7097e309f1924d489d6592eb4693f8cf9297c98d0c3ca9cd7d55ea60e11656c2e88f0f54cfb96b4623909a2e888347c2642f4abd1824c56671d393983dbddeead3a08deec37d39e8e3255fa8970ddf1a2ee7716e6f7cdf4404fd026f31bbcaee2f2b101b87885de423d76ff6453328e827ce0ea1803968d8463cb0ad93a9bd170e56dba65fd2f5485f5a63fe87520c03db868e097e828e81bdb0c8be9a9b4256163de8f38e6e59d9c57e167df7056fc5aadd9538dfc5025be1e93b46628733b0ff6ecf38df679790b70ecbd65595d33448af841cdfdd365e9d71d6d76b3e755019bc142b1dad449d4d82505602f60f053b1f2070fe44ceacd52633711af609b8c354ae609a0d6b6bd081a0e4835b2fb1611edd167e5a30cfda678dad3760bccef537e1b6ac45ab59403899450458e6ca6741853ce6b66e04f70cbea06e53e557b7f1ccf52b1be486cf75bf11d28c3a8b52e72f4b8290f153e832ede5ce030e9ea7a940b9f589f0bd64a232f8e0ea3fa1faafc96fe02f9ced5ed5c2b54dcb70fe7881b3606b004fe519803c4f43830d368a42a47254745b897c3920c741829a5b6d437a69f1abc380bebd269db6e74b1f0264c81e756850e35d28ac54e867ae64e260941f71d547c35359408e171bff43b55d04509ee608268cf9bbe0e19a0e0dc440aa02d94dd86792d23cc0e8116e49cbb3f0046e4d7810896d6338b1216b8613de169698eaf407622d57e6cfc249b8c02b657f4844a2e94b58b5c54083798d67b616942512e3ee65c4e20c16c775ece3221893d48f29e0b91b7f7859efd6df690876a5785805796beb332e2b8b144cd83462bf7cf6344830f2086c2df7d63f556258d08f2bdae6fd610ade210fb97417326096f0345c460009a5f7d1d540817e80f3c9eb8f732bd395e78b2e37e0476a66ed40a2028fdaef6a1707bb483db8ca7b573810ed79a65eb5fabf2bac1302732f30a44b2628eab4ba206f49f8f6c932489eba08ea0bea3f928cc1174c58d224e3b2ca649a9edc7dbdb5713a70af4c44831c3fe1590da5ce531549942acab9450643b8aec1869a6ab5adcc32a84adba1926dc82a38b78a94f9653b692188d5f1d210bdababd5420f8cf17c3b1c93be7f1275437ab57a98d1ad8feefef05097190fc9b1226998b6f6cc75d73f75b8142794af79ea53896bf7e77224e3f073dbff32a3439f70912f1b7089b88fc1ca6d78ac6c7c9613946f2c5f20ba4950f73cbddf9d9cf0126e726e7443515f3d342a6352cc1e1faf9390cccc750687e61583bca56341a9ff85d1544a198a47ab73c66d8d99352be8abc1e57ea005969376853d1b92f3a1d95621270ee808c33c99a530745c5de4e37b1bbaba6fba9630bf6ed4425dc473db2df4b192faa7b40a48dad97a3df875976d8c41efa0a1471065d7e741c948fe8bb1eeb53bd692de1d3ee4ac1194ee9144d615a5b78fae910fddcc3367f40de5823dcb66a8d84c6807a5567c933a7eec05fa58c4adf30bfc358d7b48812b01103d42aeee2df09c5f09ade13384010ebf6b44c7b10c96c638e621dc0885c27c29011bc2e921f9b832cf3448501fdc8b482848213323299b979e28772c84eb0f20d40bade7f4891237b67f606436a05548cc57104596ab5b8e49120cbff305e5a87d5958ed1c38d625a63c5d945f730d8393c98e947301c4381effaaa04220dfb79cadabf4cf9f8598795f421a743f04434138830414ad20d310f69a05c0a5240acc3854698eb81391f68e97c45ec815d60c536b2cced1dd40d36938f3d172d29fd6446bac7d4092f3562920733a3deb0b9e0e33d578eaef87652dd2c77bc9ff38fc28d4919248ce0761219f9ec05e9ab919495d7ebddd0a51363a6db034e010df45d275e28b2b31f90f3673cc079580393e3373db3a5ac76cd3e941320e05935dea5108dabc79da58cc46261d928e0ae78f10485277a4294b2a85b7a42a8f82c1c2230baba7a32e9a34c6e0c2ab42d2a49520ff7ca3407884584b9db38318e8dfce1e9df9676d0596758d108119711e5725c3e9aa2c22f4500c5262dd00ba2fcec9415b5eed743a083392783217f95767c029445e1f4bcf0e75e117f7dd437a69cecd1fe40555a11000414d44a6a17a4300288fcd5905b2c0c32d1ca861ac6dcf0b61778e382f46b3677ef7392c2de0da12f5c5648e1f3a8c3b9065ebe32eb7e48903e6cf6fa672598590962561d2052347f0f64016d8223cd2a1889124d586cefd57a2107494264d2d735f338e741597a9bad6b4935f2fbe60d9bdbdf164c978ae62412f36049340a55886201c350db2b037bdc7641d85a6638f5d661eecca126998e9fbe93aadc7ec5875be71385975f9461cb3e51fdea74b8983d8c864398f852708b9f0d91ed89591b17322b894e71349e8678362df1e5e6ecd33f12b3425fbac2fa29363af512d38f6b76cbcf08f5fc19a069ed3e98725c871ea5f4432d184c7bb628eacc2713361bb99081770fcf7a66f663b44f00572703f46dc9f0ed0d53a119b6904af5da47d943b4679c13eb1363e9289ab37dee98e6fe1b2e87627de94d660a51e7d9d10d190527cbf016a2458d64931686afd2988962b8c854e1d1f874dbab3061b9c45620ea7c6cb1919cce71b7c7869126f76806ae992d154bb0f660927c3a82a2b86283e98148abce9307831d4346a61e6fa5388b0eac2825391809b1659b95bfe5277ee9787f742fb255ce4298ea729399b26da6e767921f67341726cbc05b02dc3ea0eaa2147c573150c340c91bd0ce253edc4e2ee6f90fc0a4d1401307720b56c56c7eac37dd9fc5c383f3e9193317e2a93cc1f49490f80d10c1524fd52d8f5dc78e9047d1f5141ba1a19375c824551ae9bf00d6d74a4e21e5b9c134e81a331a175fbbb27c82875c7d809a03b1e28c008659de83b206743eb401f84d8e43b13df57176359c99dcc870985d9c74e64d49d6bb0bfe639080ca4f7f31f580dd9257d1f6268a027070004b0b1748a9e84be3c31b8f6946f736710a1bf02d9cec457db1aebc51291a0cdf63cb7b870ec634de0a94ac55a71c6c44567583cd287be7f1b8f5a8d2c27ef748969231f0ee9d679ff4f07b67feaa956acf69a521020a6d4f9f0f466fe35c93c20fda4d8ae096edc6d429c2b15ed4c941384debc6f0a3f7335301e09ac3253ec36d007453adb9a34cc0df0d5dcc9e0b8d6d0266967d3dadb88d7b6c43a9b75534d9ed67ee5de36e38803643e7f8e784311dfef3763066270320363f8af9168c1e37847cdb55a456f7040fd4112a49c77e347737cee7381fb0c70099a7f4cf38b87ed1f30d3c7cc02cec4248cef47b8dcc6659380ae22b92838259fb64ab6e68aef300edbaac8cfea1b409925dbd8c3bbf2c42c002d75a906517aa2e8edd62b9c28e18cb3e1d0c01a44721fe2793234a6d08b6aad724e428b3a7c7ee1dfdf7722d230c7d316e946a8704478ef179144ee80cddeab713f670e76f26de8dff558816a8d1b0b7638cd4d6cfb254cbfb7252b6ff88b12400733cb0b875b56f411d8a1ab12cb5c1a3e22e89225944d9e527ab9f6d2c07122f0436303d3aa19b9935d71f75c1c7d40e45efb51264818becfcd3517b8a44666d361596c51cc32fe5edf61d48cb85949d7682c3981da2a09286003390696870cce5d96f67afc37b69ea0e6798d518f8ccaa6c69a469bd3a152b6cb01f2081c44f042e51a8c94d13487f4f96cf0b0f1fa94e836bc43eeb5885cdcf8382f6962b471ce78d3b7e13fbdb186982cf02605914f188e96d89d49935e2b38bc219da99734ad61e4c88dd260eba444ee6bf18799df040527959d59b2cbb2ff83882db7a5a12b1ab473426f2d91e7826aee9ae5bf9679744f00f88788d11903b8d4c044ce26dcfeb3da5610acd35e5ab91182c2f2d2e1da462aedc550c5eac1d39e8d7cc3e237cd58070543af7b1cdb3ed2b17316c8eada99ec99db14d7bff7daeba3805447642ca359dba9710a8b95a7a2f38587ddf038bbf9d9e53385b5289e3471e597bc17223830dc78044f841df5528c356d498960241e79d2388adc1b0f61af33e68e0e9d094b04fa0dcb828c9a1c65f6dbd323df055532e6003f225ca5290367a4b1a0eb8eaabe0cd8809a01a9657aefc7eb93e787926d3832ab4bbad290ea71de20d0418ded22a0ae041f1a0c0d4a7ac7774bd09a65273502be2cc7876640b7b1eb9638706fb93b8eebfd7fd651a3a7a50c359157d3ef1b4c693a5cc80786908731534a32a9e67722f1dd589ea7aab6c473664bf00d787ff798f31250cc58ca1f9cee59d5960d82146f04d1e9091ca150ab57bf30e9b8c8ae4062c946d4f4256b20c6296b23ef9ea9ffdb9daba0d69041cae5d28e2e56b1e5f9222505286bd6351066e1adddca9fb165b870cfc784622e722c10cb3285cb2fecf60ce95b3d05a2c6e58f28774b70c5131d84d6cbc32befb82b27214f67f8e6f9e0293a2a654f72790da1efcf578ed5ec5c1584ed86b00fb4436708207bf1216b346c1eb56a4424f9776ce990778b0818e3e5997e91ed1110ca4984ab81c2fa90c8889e6210eada6991a8a696988de901d6b9a429cc8f805d61e504d1f649251bba74ba844738193fabf1caaea8cce6e40ed9d8b6e97bd1fd447ad7a406bad519c0eb8d3f959c4c045d48056aa51720739194fedf474518da6fea2699bb1df7e51fec845fcb7627bc109198047a50857bc8ba6e0539ba884d5f3b8c96fbcfb169b83aa011fd9bcbe0e81374a741eb44a4cd201fd6eb56c9ed36172f66ccfd418372dcc9afe3d2c44e25fbdb834a738a94eb20bf3cf6ce151b354c760f422c1e7ca19e39137c5ad3a4cbd9a18b84068d275b16e42321883182bb4e480b6cb46dce838fe91e816286e29e20edc7dcd4ed82f5e445e3721e2afaa9b0db6e9040cfb221821a748c90a64f61aa939064a3662a366e0b689edfe9676daf1770064f6f303c8de882127b70f6f23302260a4ec86a711f276aed4e9a91efa784e50bb66ea9dc8cef6823319f3a1ed9b46f164149b69463c34074a1d60b889bcca3031c991d5a9fff4fd6b24657cba33fe199ff23cc1f2bbf27de43aeaa29b1cbdaa47d6b9d56a7e13e89727ecde2f6e6c7709d85c5466c3a08695277204bb430d4c5a86aa74ccd2b8eabdbdb0d5e21c8828d44cc6156a03216b82271b47491adb596c1c969c1fc25739dc9bce6e4d39167c5b2152c85432fd5fcb8363bf0dab72853bf60221662be524b0c6281dd9fcc5573b91d545557fe55964f01bbd346d909aceff21640f38dce8fe9d9f7037fb33ae1bf6c548ce180bfaed7ba65822f90816c6fc5df63e6ecbd139abacd754e9c07903dd6bf8e6987748f71e0d2ca12c02828b485fe6d36178557c9acd59c4df0dc234147d09f7ebe685cf434a3fc12b21a120580fb4722617ccd19c64d8c9fb46bf0ebe4901d30ab76a76b43f8aa76a51677fd258336ad7b59719db33c32cca2cfdff37abd5394b7c8d495b1695427f012b70de53d421ec9cc145fb4593642d163b4223ab1e8444fa799646262d433afe304f74c5c4a81c1c4addb63097fcfeb5374d4c6fe38dc0b3ef77e680f554d07d7a4548611852567094f8154391c28fceb237d978b2f7ef129f3bfc84a744af568dd0f1976bf1dcb2118367a24c766c2e8d120a348494fbbe2f7b50c2c71a5ae704fe8028da3bfa1b555d3644a3d849d4a5fd95fe27cf837513723a52883fc9169f5f31d65a827e7dc3fa54a237ce2036d5a551102b025b624a27e1ceeee90a7b99b16d79015b5930f40ebe25a4ac58b64bb5567fa3c0981b90673196008c9b1173e8e346eb08b60a76c5c109c8ad483e54d2f6cf9ccd96ca2b25f316414b0cd72586a2cf93e109c25f49e5b378b9d1b351b4dc319744c732782d58a65e874a3fde30f4b22096f0eaf86d03d2ee50e1ce734ab37ed8d22604ba11c50ba38e6263f6bb2a9e3e619ee6f68013b6d84fc2f6ad75d9a5a529a8d2a62aff154c2fce74a5ae1348e363fe4d9bbb6cc3e229fbca4f907f1e87bf9b0c474bb386bdf51f38272fb42094c5821eebe681c41d2144a240563f4d1a10ab7837ca429fda1a3428513b37afe86a181052b048e6841da7ba1a0bfde751999b0117880b6654254bd26dd91092c4398c1c8a2691ad9ed5599da2c7c8a0a4cf7ce4fb09a415f8beac89d08712a574381c24a1eed79a0ed4fa606d290e09f6e797080ebf1ef25f090693eb901fc980ce1de7691d91e9bd1720b63c20597d373f93cf671b6cba12493f2696f47a7ffe4054f459de8ff0dd1cfce9da4783fcedf5352da09d2b6c262e54694ba1ad6bdcd7c9d67f8cc32bfb15a5c1eef9aa563e0e980db6f5d2d78039ca98041a47962de992b5f60a95697cf6bde6e5bb37d70ac2098d8fa28d8eeb4741e183ae6e0d2dbf2c52f5098ce153e3e26487f1a63cfb6e1c2d70834effd62495a7b74341f01c3e448206e26cc213d74240207be267fb219f4dc8b396ceed99f43322fb5c298440c553b9ed229022290f16a03a06dd4be3963718d200d06471a039b04e4da1bdccf1382eb921586647b66463b569fd053b618eec7892680fd06a4fa63124f2a42d30b03064e8ba8b70145f8768a24f8af8a8adb844646de51d044d132e184ed76840547e8649f38f452f01a4b79f5419ab148f8c7dea5baf08ad75365ca56e28690ffc5522399502382b504fd7578fa43adb9b86e0b6d86d16b722d97985a7b796b33563050dda52508a47dba64b0b3f703e751543cc4ddc84d30eaefeb77558ecc29c7a2a4a8fb4b43f627843ebb9c0bbc59a1ba14b75bc92ea1ade8b7cef80a2edf1a6b4b9a42b4f0095dd892a0da3ee5068430e9e61715afca16dbc2ed5f6050f80e9d660e2f66b5e880620270bc420f4c6eee460d38fd98b8739b2959bf5cb506e8118a4850f99a600eb1c2afe4b1cffb562a694e3f50529da6c2db60477325ddb0da3f6ef2058bacdd3a1d1bc2203f7a4734c65b05436b825eb61c47dae02af45f06835155c1d7ac67caf0b0f1437ce9224582667f73168985f004b7f09994de946c440b02edb4af07bc2d126462266676c9f8e1c49fa8ba0681fe8a267bf6cddfd1e96549b0b8c97d5a5a30606ae353649a3816face1c694d4749e3292b2627c5a6ca17350a61be330b0f4cbd09dbb9fc0683820af5901f20eb7a8c067ac126efd6b3cd75498f7806ea7c43ee1a3daf94c8d00f5d8dc622b92ef8b507cfa4953f9a6605185f051396eae030b891b9d7eefc4a13ec43a4813ece7ff8a963748db3fd15b809f0eb705e931359aed305f04609d0206b87b4b5fbc29eac579f184d4be6ecd4bac04f661aedfd69cd11596a92d974ad64caa5d3fe6a3991e9e4391d68a4858b62759f70334f1c09d0c9f21a8847fd81794cc84bfbc707c22588c94452ca7166b3a830ff3f4803b2160f92f4409565fd2b80933a94c215feb66e790dd9dcb635080abb4bd2ffd5e43c9cfed483cf5b27e18422497021413e561541d83ea14cc9538bdac21915cea4b5f77f610e9cc19201b8b11db9adc09b204fdc41e33f9f7b5da690fc182cba46092762f36c702f106413235ce8d09886531a49575d2f108c1468be4472117c8f8e857894336e6e306cea7e3604d2264ce9524bdaf7df74490440afb30c9b8922b954970baa29ff96869a6d8dadba9aedcfe0ea95c16b930c33898dd613326a40578516f93c70921cedeebda0a1d67746b43cf0c2a323aa02f660e9e713413ed5580a550346bc8fc1dc4ae04f91b214839bcb6d7c30aeeac783a73798349735d7f9be3313fd639070a7286dea6f791de7c49e34441b91f7d14ff54f66d42f16f5698b96a0a4b9e5904b1f9d909b9112e48d9a5c978d6a69aa78e7ee8706b4ba944bfce70e43430e697b6bd0238165c67f52e4bf92c9d34ef9d2643362b5798e21a4f293197be845513eec06c79d55e10a84bc7ea7cce2a65f5b6422926bba15ab176b8b505575f2b5959e67efffeb5f2770977b5fe484e621194d2485053a64d3899cc5a40c1934eacfe6bc04aa8b0f1f725cdd31677876a2bb3e85a1cd9ba50d7ed7b80430985fca7261f3917800158a88309067038033ac7c71f5fec432942cd1a0e408abc1782ee8889e056e8669458916c20f5686ed8c116308af1a300541a67b48b08756bb2c56387402861956b96dfc6704bccceaffb4b5b69513b15cc8a0b7ea2c7bfc162c4df7cf3f7221fb6f7182b6fe8eec61e8937ddbd1e453132bc66153c08f03abc635052dfae2d6cdfbfce5abbb406600dc2638b8b542a9388ba02710a87dbf527ca84eb0f33c12132e97ff833006b6677d42d0704fa60eece27c95321a85f5143519d29e04df8d699d563042cf046aaba6e8e08c818b3be572de99cf51db67b193807ce13b59083e7c8d7030db3382d46324e078ab2912ec8081a17fabfcd71b18ed31878f371d56bfa96e57cd63765fbd7afa03e26812606687f0dfd175f1f9112689431d421d489483d207c91d9bbc52ba2ee3b71524b2eea51611faf56e2563cabceafa54a90028944653204d42d1c433a92f96954be705747d3a30bc732e129577f89631553fbdcedd92e8e4e075f0a474e3a49d4219b72d1903b4b183d7acb16c09a9eb21161316cade9ef3b6f6f860565f43aedcf67a89351965c3bc967a4a2060b2d3316f1b881c98dcd6f394227f12e81055953fd67831ae3f4cf4167fbadf630e01b284011a76e21b8114037d1a64268577a44b48eebdf5e8a223b54c0dac1c93dd9766803e24238c0346ed5decaca518287b818902dda94b1c1f07a7b6c4bac1547b7789902287f6cdea6eabcbbe54fdc799e1191370874415eb51f5ab930e878888f03abcdf7db256fd96f6da28086777467c1fb49ccf5ed5220f8549f70f8c2d3e5c26207137aa1cefeb656f21fa6316c9f7948fb1c7a05ccd6e9cad495616f16f1be7e0152d6f35cfe46ffa7c454558780dc88b7d38686eacd25c7310a2788acee00869879a5ed9f76f6580216997ab110a28d33cef566b8a5275f7f256135a09343e8f9afed59f3e6bcc650dcbaaf88b506497583d4fcc4b37a59070f6e4b777f0e6dc219a775da72f8a9d5732ac78d3d6daa93778805091810e66d3aeaa531ac7e6aed6f77ed6e502de81864c4d27a3a4564347788330886258cd07cb9048afbacb2a4c5f25b78ea02be23927fd90fe581e95341a87e81dc0a15a533f73c685a1444294621684b4bb950f6cb8b0ffa4a452fd08c18c6b2db7430c6221ae72b8a9e73e4c53f474d17868f27c573b4835cd9cf87bd0b4d16315643cc32b7ee277d148903bc9ec6a4bee5372d14137ba9f2e2d2b57319bd38add5742bb3af1d0186c60d68c1f5d7593ab76bb10157ef4f1b3091b3ad1c3a49fc5d5ed41d266f2aba24162eef38696de2e382af05831a07e5eac75642117ff9cb7f8452198a087ffee20a794aa54bab96ef3e70df15254e1c6f1fa6e976e71275312366bd662120da1aa552eeb2d114751718291aded2365935767042b31435b6c4d12e8faa4cdff5ea91b5720dc40c736330829bccd98e2038bf7bcdaff7ed387201eb31752cb329cfc41fbf87e1d2d6c8d738032c91c4069475f382772f6a15f907ef56299d9bf27dfa26be890dcdeb8916e808798135ea8844d7395e2505863424293b6ce917aa07db296a5fbf373d3c9b978183f275ebcf5d71e2e4b7772365f69a911db327df8dc93f8ab3c1733eac1bfd9a30389e331d76771ff31ef6a2f4517ef153d29bff9107459b99904501c631f48cff82820aa0d028299a5f681d70a586788996687bdc2a55e5365146d001e37a4a21526415c9404c0924973c86dd12354d4dbeaee340737483f53bcb01ce5fa1609def812903bb3820273065065e7890687e62012a385fbf108dd78d36ff79e54539b1a8424b72dfd0755d879e4ba2dfbd4d3f00120ee44547eb6cee6e87ae10cb6242b030bfda81c413dec3d469c7fad11c6a9ff17c0c34d3452563aece6fcefc937d793c8f305f856e00fed99505baf37482511c8604a75017603b0d43e8dc6086101dcf7701f816fb6b75f1f74f6dd653ec684c6816c0f80df1a056c1cf2d95474ef58c5876919b9675abcd0ac48005d66358f79d7340990f88711768af75170957e627327bc84e6481d00d5ac57b60668fdc69d1f6b06d49b84c325afcf3b85d09fa0d6096376a9e7e33c0e051164e87568e4c177242733e9c4a9a246a7a59f429f1ddaf1cc9d3ea714108dc79badb37d41d6c9039825592a99328bed5e992dd2f72dfa3974a9df6ca42d19fa4b2eb8e85aee6de471d235c7b7626f3b33c88577b5fccab2da2f505c3bfbacd8a14e6eecfca2b87d1ec3794aa1aa53ad5d685d15a8a96ed1b2cf54a4841ff6e7fe80ef6a9d24890dc83a1d76d0ad3060f81c53e1e88c202e9021355bfb99d7d7fab7786383d1159200f4dd672843729baebf675c7461ad52b946406bc66fe935829cecf2376363005276b6cd52b27b2b048b7cdbdacef8d8f4f9468f753af3ef28e552e4e68bceca2e106d2a00361e8c3d73da9f490876d96b081d5fb1ed77a65a3353d1109c87b7fc62082a3c1724e33273af7f6efdb1a9fb011d6c30f925cf5206bdd230b3110734ac5206484acaca9731891ef8e7c6ea90c1a46d838466a706a702c137f0c3eacc9b5bfbac5141ec81aaddb5b4d6e6e76527927d8ae2d2f66a6bb904ff104a4b7595f6cb78502d6a3878846d9135d8443e00ce64a582baa1bf521cf714f224df48af3a56d6a0271b96ed3944fc3776fcf99dbff7f0959f0bcbc789d2846a2591059e023874f83b9488731c886a792baf1917d3822357b8492f4902337c11f636f6036d836b206a03768232df051e7c410e7cfb46da63712543d3ac26f09591970d455e83988a29da931fe2dfc13b7cca6d922d066adee6ee182a54cea372c7c1eb17fd8f979ae14778fd79395c5a56d267cfe19f841f6c1f9d8de58d32f3bab2c78834f3d74c6d84703ea76c0967c6e0125c95bd459709ccf6f4f3ccffb0634c770832dd76029fea655e0014d08ea05b6de7498f781df7e793a933472ee90d9c0f6fec68d49cbbe25bf97dbcd41048b52beb0498285925578bfd00ed004fd870d78e97b014c0f99cd0faf84d184039ebadd14d8acf17b6d03ee4d8534748374286112ff2fe07079c8a41b3036b9a7f54b61cb234b2647f916667ddb6b7d3726609dff4c3ec36860f9dead2f495103cc0bb45457e3ef18ddef04d558758b32599493ae858bbea88feac45dc2cfd5926e4f09119737ce79d575fcd2b8d5bd7bfd1aa1552d5f02f1942c1eb3e543c74071b5b7dc960e48fa3198cc96b970c70046a40de3db3875fb34f2791c8e87f3d3c7392b1f2022c4c44b100fac9bcb57f8c94ef21fa361210c7d336f22d069d6e370d05b6b5bfdc485bdd48471b2c9b3f4123fa019af327873b1cfea988be2918fec9d7a836f4c4ef7721ebd5db8c702de59dab58745f4f04e75221d9d202182ca949be581f5196955c28f17fa6efe9208aa822d6a578d572178876426d1b958be73964091d4743157ef629f1bf4e4a5b18ba701d8b79458c0c8d28ea9cb02f877af441056283ed0b89ec8f358c9e111dca228a18499d72397b9e6a53086386bdb66df6e0227c7730db997c4c186e2cf0b162c04e47f4450c0cdf06303df400cb067380fd160d0bd2085f943e9017477f30d0c006af48c200dca151b42aff554b6739f167fc2327e156e09347c68026857e8e5162f112f04ffb844bc9a540df43ec3b72ae147d06073e4869e0b16b281927d4466f3f7ea303ef5bfc05e56ffe2b386ab8a3a56f7137f15943d9eb564d608b816a5e127d4e2630ea50b006a7146f07a73e5376ca4cd9d153803e32ee6d745e0750aea3ed50deaa6d0505885bce71a596e19955c0771af3a1a676e70a7e25269d4e1d73ce78803ef966add0e6c5da75bdb6ef94e4ca43a460d1e29244ff12c0c71ba3c482a4a9409ff598a69ebe1c6bee38f186374aeae1ae3a4e5c11057edc2fc0871d27b9bbfa6b3168b67dfa069209241f0743dcaaddd0cda493766c1e7cc8e0eac9f55eae28301c350f5c6c6e880a9a1df24618b67f22ebbb29492938794596b359bb35007b1b3acda7b7c8d8fd666b74a875fdd1e1d9c77336feca27fee14cee1e5b73b916271b60d40cb77038bd9c738f40a59fd299131b720b9b9f0b776613b0631edd1450b73cd4bea57092d2836891b442e355d4cdc9bcd7f6d8f3e1988e69b3565a00a22777469002a0f8e115c199e6004520fd745b953bc70fdeba4224eb2c5e8b5b118637afabd9746d3a41141a7092811e8cf9cba59137b8485b307f967b53941926fe01f73b1dea862d6c4787fb8349eecf1efe35570e0180348b4612e8d07f2476587fe9941721ec4d7332dce0a31e6190335db45c495f2a76ed98cc3ce1cbd8ef8a2cb6ebc972ddfdc03414d21057ff804c5f3386df11be04d4ae70bafc3585f417df739f39acac4d5827b097c10d83836aa8e81bcac606c0e8b3741c00f9f142463b9611eece3d2aedf836dd97305bba3672afaab7cca419df9b8ead4f5cd3b17b107d0e21d58adb630ab00d500c296b3ee784740a878afbdcd4386c986759ba440fe7c563a720d351132940e0ae44b1d8530a71042c7ffea93e333fe1caa3d2d2737853baa7a2ca59ef343418393800206a07de422fa1f01ebb003ade8e4598fb0e3ad76ff445327d36655e94c04176a959e65feb1cdeab8f0169f1b7edc9ca028f171e25cb53efbcebd50456b3d4fee32633b22c14793c291cf6dfb8c82b16b90860dadb42a86aa3dea26b92c61745498123e8f4818c577e1b79da928b5badb988496c00ea38ef91956c118b5a6476ca52093dff368021bc1983942ef2beb4d0e36a3ab4b38758ebb7dafb80e5cad42266e2749b769644419cec343712ae7cd4143f9ada052f1176f8131415688c19facccaccd025615791bf4ffad33df58b7b35a948aaa75e618f714693a725a0a70022857bbed44a93de5e8bef41d1567af9866c72c5c6550d0a3e227f88db308e6f5ef7c15bf60bdba39543b03fc1059b6c0eaf4c1a47ea43d2da5e360b7a1d5b96bdac8bf93c3411098f5f3d7dcc297766007f3d0e1807ddb086320dcff277bd6014519f27bcaabe0b9489e18186611819964b94b55729e8c766dcf9ce0706f8fd15385fdf222309a6aeb125ba0e3c23f3ed69d219a3e18aa2af1d510a27c423143ad919161babf96d058ad59f2abfc1b4489083d010562ff273b992d8466142295c4bea189e211367480a142ea6e45d474b5ca664f9c2025303fb453a67be202cb7cf2854d7ba380025ee7f1352152ce2eccea454dff1c3b1f42ee6b8d472094793466b68017ee477bc336854b3b5854560c9dca67ec5e12c1125dfa789484766d7b615af83c6ad20859e104f7c9713179696b8564ab4e98a55b499d812bf771cb3c97a9078c51f40d43606543385c8a8ed61571c644846a0293498132d89adcec04d8c4daffbdf818bc48344ffbaabb448b9c550699e4d3ebe03a3e8e80c635253b51b1f2ec324390a5ae6e86e6873d7fd14c6f045e89f853b0205a882e43c671d96aacc33c77bea8fc931f13334efd3144929009debd5b50a15d896445f9cb6042bcb1cba86e0d7b229a5d136b542e9ce14b7cf3b817fd40fa761b0b9ff0143bdd210c184d522896a555fed1cf8efc5bc95a6e77b1972c518237f862ffc3f71bd8d909fda5b9d8a736c13c156ffb1e18ad1a6986d3267ae207c221306c07c153682f19b21133cdc7e52cdff0f3d27483c30777523e3eabf47a6de8c9469052efd7b0d42b7ced2cab42cc6d3e71b4c1ec3fd0f377d569abd881a84907a4af035c56721f48aaec32d90e848b52b77c56cc5e95acd5e49b2df4656cd310d6a8f398ed78d7e30adf542fcb3a6896b20fbf8e3897b9e568cede7c75b1bc52f03b316f98227335c141ba3ec803bfca15b023708d3a7365485b3838f2d42745004bc9208c117eefb0448085c888243d861589e15a590ea36af96555a5765f070907e30e7134da66af0d8e0bbc43ac420de6cebd93e5a2eaa1623402864e4d21b7df4ef7b9b7b6b8e21a9e863759b440074fc173fc324a3fbdcfccb5e67577fe7d6bf61f39dadf30a3199427e9d98a1e1363b1491bc241d55b84ec38d749b98af597db8e505641a159065cc41833738fc2dcf8a20944b240b72885cc924ef5afefae6c16ddf46f3dd03cda60933f37429d79a39ab1c80b17e686d8ede151f6d375ec6f157e06552fe1f072cfefc303b82a357a9b908672a670d7367df68c2faf561b7e88bdc08ecc5d28ace90f0c4164176004e9170bbdd37646f82a6428729b891ba20f64d106ed3db249a0167866952290c5a71513782ba8997f2f94b8f3b62b097a982d3e534e54d5e51827cf406300878ce8f0a0c7ae628ce40e732dcf05b35101f2daefc7d64103361508eeaef2154a291b3dfeadc72044254cb26ccf90acce142c546e239c76018254cc16420c2c2f496577a9d8a9f725c603a5ea68c35d298e4caa4dedf864c5335297b54a1adfb5e61fa652ec837dbff31a593377068da3201aff624e514389fb950e78450a11aa16a9c91a129df3e16762a817e0dd42a9144db0f94b9e75b24faf3758f10dd31663977d13cca4fab6fd37b6a685a343ebb561ce4066c7542bea89a58e0528cc42e30a66060154fc9f0f11f929daf3f44f19e6e103558b34b929cad07cb2d1f4b0b5fd157efa1c45111c9a3c45ddbc89f8e66b85123807c2bf6f91bbcae70f3b526e2e93848e28c90aacf7ecb6c033965bc85af0824731269a6003ef82a6869e02097ae66cdaa57e915e786fa0e2846e1f30304bd67e4c6e04cfa85fd634484223933ffaafdd020519b1bd2a5155ad3115156ec991d53be4157036552575382c34804fbb01c6597d12f94cda6fbf5b728b5255beb2366a68f1da8064340816d808de687876b481608844b22d91176c30eb9c679a448dd2ca158902b5f0cd1800a44392525f121a7a6626cb99fbbadb3db6fcd7dda193afea3e8b278f8dfbe638512dcdde1d2f3e6f25e6bd35fbb7ffb5ff966934946821595ebcb05a6aabea80a437fc3f73cd38945d337ae008f61289ee46261cd8dbd30cb230fd3c4cb48b025ced09c08db84a98d2f1ea871dc3d6d4c62169fe94111506bae5013f2c6260e5735505797e0ff00cb97352622ee87595547834f43569b3ff2091ee59108f2d2952dd35c8da119b595d272c6883f920b58df6c7825016f4eaf6c812a4abaf6a7c7190524b5badb509587ba8e9c197a3d268f4497feeb547f476b69ac88a7ec7f4a556b3241ca462a08ce8cdb5d3f3a64484718a9dff330b22fefee9bf93138bb6f4eb84d43b8837a3f0b24ca49aab6b877c6ec55ff792f7f357df3d01156a502f97077c9358fc512212121bbe856d36a22ac2db338441cbff8cbd1da86bfcec7a3e05bb572e45dbda7ec1e544221e86eeb5a1d1c87ed84066baa1a15d5eda24e9803bc2fbad0c5085f14c71763b1234e2aab6ed28fe688ab56369877bc68b95ff9dc0347b2789d70eb264245de77af22686d727417067948d56211c6be046a475b3728a46125e4967f091d3147baa670e6bc82d987a9a80fd7ce8719a237d891469f64afb5ecea8566b6fdb2b8af32dd142296906f6512afa0ebe979f47c6408b72dcefffce9c3c17c4bc1944dad5ddd1a8524100146b2f44773736483ca35d19e2285ad6b063046b568dd28a8626f5652f0c7a1929fb7de392f36a8e114cd35614f8f8d9b514d6c96de1e4f6d26e4d1cb2243371d6ff044b40e85f7e6e3d4815851a57506ea8719b7ac1f38c7525157c8f2d7a1c04a10d34d8d3bea2ef79e9f4e9c7c658f758f8747500e29e2b1c8363f8017183ce2b49d6b691bf296fa0194065558daf729536b8762a05a6efa8c0e5b379691790f4a36c9aabaefc34a89bfb4fbeaa06965463f4e874acf235c291ffba22d4300772fc4f8f8bbab9bc928d780e6d230efd66ffb83ab17a6371c3e91300fb6717fb8c153da414b75c9c2e6da078c3bfcfa360594a793b900e94194a8c3fb61e4492f293e28b0188c3de02dedd99d6d25de8f952d49baac0cfa524a00ac5e257bd3421047eef14bc9aa2eb9d1fcf257bb531604148f7e89202f202cd49cb6d2d03847a3cf0acf293007324c0767425bf5f591d527b3a2dc27d1a1870b74edd75bb6ed7b48b00f66ac0f0aa9e388ade2e5c55592a3841a21c92ce41032cc0ac5332f455adee8b25b49c1a676d5bf1a93c2a7c83ed1e129b5ca1304a7cb6db6067da94acd370e75a59ae00c09f4e15f1b30e27d2c8642d3e43c5a3b0c78d78a7e7fce092dfc52a6d0e373aa3d51b63ceff6a3dda5012f9663d85bfde22bbc37e3976d4d88c6365124ca46bbdd157a2577257a5d3619c67dcfd17223825c83741287f7df671913b1b60068bd384d60dd7eebda489173397f171c8129725cc6c2be1d035c89e294f84a6cabf5e8680ae1ec699d1959f14e28dfb46d7aa54ed40023e6ca8cf31f3868b1b12804f4f112a10c497f604949dd9d391f9eccbd0630cca538ab5e0642d4b4a3feb888b990858cf5269e3d854b56ea55a2838ef0e410b4961ba85f68f80fbe57227bd7619163ebd8d601690c36389cf63a0c635c3cde3b6f69e8cff331e59442b855bdbe4e208940f90dcb98029bb4ce6f2eaee11abbad41fc3342053a25d2c53c6c54d079262f88ac11a5669ca7e51d626331d059f7bc3f0879cccd07f33cc160ace85f0851ef1bf4bc49a97a1b21268527b8fbb69af882624bc88a0646c142d643ec62b1713e45fca165ae32c77654607cd40956df0d812c6023c5d76bb6ce1d25fc1742ccde908fbad7f132124337a167ab0a72b3dad53f1240fad28075fa9089f40fc3999a17eae219a4fe74ad9b8b70d1ae373a504dc1df655050fa3f53046915955885ce33965a3965effd766c872637acb84b255775e8c1381e2076cbdf0637220632c46d25455f36b9cd182c25992524a9ef584ecb75f720dc8d1d287a630edc00b4dca8672be9e3aa9a322473de4a1c20e6843e186e409656b2b728d9c5813e09128bdb397a116aeb2d49a4e68fd65ce421001125e41d7c6b516863b5390d7058cb1edc24002816c3e5d4e96d48a645e749d14b078698386f036c0fc60e37ed094e5e0ccc735a665532a08b782b826c6f3771cc362c11f885b3de37e656147e8e80f1ed9ae90cea0e1b7682e55d69161d7a5d28f650a16ae621d2109a6adda7a13a9ce93760c2a470b92029cf87eedd62d47a9d6e900b9d8561b468d863920c6fc948d3013795b5d0b9b7cd1e56a41845bd47bc532e3ccf3d590670c1a2af6a116de2f444b33f451ede3eaeaafb99cd32dfde357e90596a1c4662511948f22e59daffa9e37bb4fcb47d947a62abe74e9398c977b0c064782537d253f2be2ccad4b95dd6e51d4786d200b0b5b7204bc8337ba2ffa2ec693f85917681ef2f2b3d692829c1c18764db4e6430900016d45418cf879089e740e2da897c0cee09a88c65361a1f388edb60ceba3a160dcfa06d540e5eb47da7dd2801ad64ecb080500fe0685e554c6ab513c3a9a8ca8790aac37668e2329ec530d27c5c996d5f0bd9c75837533f39389e4838ea86090421a2d6c43e8d683e009811824955ad44e5213d109010014277ddbf92cbe3cbcd51dcdafaa744a733bade1955fcd93b438d6b823e52c3b0e58cde0f25adeda6a7704ec084eede0a2a79ced7a350f65edd469b615ad3d7e04b3e49a8b6866120a5d49a6c2d11756bed674f3e59f6dcae87988fd9ec5cf454b73aaaefe16049b238542d7a11448557bed318c654f14a0739cd846201a8c36b6b90ab3d7cd80a185ed0670e3b6ce53f1eaef1026319fe06d07589aa1f698f07b834ddb310a0c5be82a7de98aca5853ff90f8170ce987b97f3e302bcdfc3aaffce7e0d37d5fd01736f3fa58dc8bd0229b7b0aed8e16f263789ad41c095cfac649daa310b6749afa5ff80aa6cf4b608c4886e93f5bff2a5ffb82f26d0461a7b212259ded30a7272e2e35925a80d47856439ccf93006489ca2bc09d584142324c3a20e50fb217a4451063a113cc75caa45e8716ea3caecacd6639d7b3a91e08971aeb203c205f5605d6999ba084f92c05250a5e0b4a72fd3ee4d922437fb3adc621611df787e8e84db816d5b42aabcc947b0d8d200b2b3089655549c27318ce353e25be9a79b827b491fb6c7871061f353f81c1b6067f13be9909165a44e281bcfcea49323c8230001eef329722d3bd9a79da6333ae0b4966995bdbdb043d29b4c126391529356e97780aacfaf98b9979957501b80ce9c1481648fb1656643d674fdf74026cf15a9e795e305fc047eae48151ac6f21f9d69938282413bf2a71d108a1da48750ee1af605ad05869ee0b2ebada51d976b7d38d53f5596a1a41f026d137be83ad683a2395298f098d169d23129b69179ac599963278b45dc2a407b474219807b58089ab25f3add963a5a256200b938232e20f055deeca551e193e27aade3c9d249c8109443abf398d023d122643c8062f91613c4790234c07813be08d0284aeb1fa1d9f55f089a4674ecfa11666f6d498253c1fa779d060c72b25a3ebc1e7362d183e94946f3b0b5ec108a9ae0ab6d83d24269581650539605d43603635bfddad3f405aff611e065049cbaae1ae8b664ed223f8cb2f10251f7d13c9a5d5dd0d18b8fc37a1c8bf2a8e8d57f5270453855b588a331431d56000d77cd5fe7047bf70d80d494d98e430a26afb61fbc841a792cdbd901b9b1995c58879a4e1c133c10880aa77d8bcb3a879c56282ed98ad0b884d70e164752eb054b345155a0b29a9ca501541ab6f7d8aa8ea95c0958e4b78a150baff325e60d7c96a714c78aef8eccca50dd9fe94c54de7eba3c9e6c3d4920f85b0d5d62194e8c2e7dc870d0383a7f0e75bc370a06c580e64f854a2ee9d8d8bc7e5920aed976e760472b1d6ee22f517200c137d9e8e197f26409787e5ee71b6781e65ef6dbd5d1d809c19144a64dfbf5183f0701b4cc2b5aa7c46d4db501fd9e42c106b814501f92bb8d4eee1e2484c9f58d0b2eb6ee9f12fbbd40802d324bd2f59678a84086ed32cb9f9ad64def051067d635f03ae59a1ef5b90e6ea900eed0a3eb934d5e09ceff996aa780141f0b5b4e310c3a117e4ff462bdecc52d03b24aa6a0a38d319f52a2faf0d43cbe6fc3441f16485311c43800bf5f33b264fee6762fcbe414c1962d46b6bf608175929355661964fe921b9b99c0ed12391d967118c0daa1abd82c58250ab809bbca65c1af3efbb261f16e5c56ca5b992dc98d3203b20f1c3d8600f17727aa72b131be3ed2da05dafd106b050c7808947fff98e541b141bd5c9e97c4e0b1bf4d8a82bed42100bcc89cd4cbfdf3194ff75bf9bbd9fd3af64b8c36f3b1db40b69a0d7ac031ce89d787ada6b8555930eab55a143c255424c71b632b345d67e2e9810c38cd9b16e39779f2f330aeeef32532ea54203756141974fb9a4fe21f972f96b3c0a549e88f60e5c0ac88126bcde2b243dd41e88d0722a7b868d37944d47f87207b5ba44ea3a7e851c7f4d454dd6786777bec6d7fcc3f938dbcba41ae017190cab578f333483427cebc27c0f17505bd8a1b0fd0cd879e886880529c92fb81282c1eb9357f3dadd4ce08fe2f2c9b87a53350fcc4d8302fcd4ee32dd7079234c5a34a5228b25277f107ad3ae3dc8b78757dcfba14e512ee38ffd92a0ca70cf8b3b031ccbec8eee3d4b0b05398513233c77ef3e5e5224c79a4a899866e52a1e35688af698d418aaf5e099a4ec718b5c5d7593a1e962f53f7235e1e02761bfd404e7f0521e8e434d0690bf8ac0a13e8a3aef0c50900036e4d4878a8169a80c0e658e95624b8160d945af1db68098bd8299912dce4509239a6e0ff383a8fbe0163f5e12bfa493dcb0fe2bb5901f49c42eea36b68a2cfd42348f693173438bdc7f50de7f025960d38dd504a0a97e68619e5fb29789c3741f0bbfcf94f81bd348f5b394e7460c65bb12913ea8b18c29304526120bdd4884c374370ac30c97c03c9675a646d60f964a714307bff7e4e32dd8a16280dc56fede49e5c49cd61c2515b6fa876f2328765215ee668891ab872338af4a7e3bfa6a9b82586b77ce47e0c1c836a1bff2348b53965c0bed3eeb994c9518f71dde0f23cc42a2f365ad26a745a7aefcff436a0919b76b9938a1f0789151d94983d8d9e7bf2b3b350c5484afb55cd8c68162f5133096b4ededf6cc548c263cb83698493ac7c8075dce0c5426dc13faede0d2855ccd995938507c02aae2eac683a6c807639735fd2bc12fd7470485b40c065be43907503aa2cbcc78f09ec2d92db7266663d39d61e2687bb4cb906baffe20dc803f8da072ec7bba4890644444a414f07412d0717df7daedc38ee0b217705da9ccb071a1d797e44a6dc94aeb0240bf96f8f8e6847b8c3b94ebd19dd6ab6b605efb17cda11d1d09d165a715bad71b00aca7b74bc16d4a3202711b6f3410c35a933516dd487de1c8f17fb9aaccfc8c43fcc7244b6a4b0f01ec7bad13bab4cf3469b3f1756c204fde78eca78b8ba1d4dfbba5216deb796473210dc8895606e1b419a5d49c2c474eff72270b5cba1c8dec5f849de10443010a0a8201355fb88b461013d190cc115c912476edde19a2c45c526c770fc40f9dcee4f80f2c5ee7d0954a622583fd69c5a1358659d2fc1e5954bd51c5ba4d0846f67434763a052d68c289c648af81e6e80d7c8ed159b27a9ee49c4ba7de0b5d0489bb2160a997d9fbdd2fb26fae90f218fbe5edb1a3f9b4093d4b31e4fdd1a21bbdd43cf00d26f5080ab3cb9dc5826c2af2e7efb5bea354cc5a6c4deb09aa71ee8c4a897cf650d02f6ed1c16689de62b481087a0659ec0b37a9f686f4a69e830f3aa427193df28841b3a1a4824a72a11fd51418c1f13e6f10a40e3866f74044ff530d70c90bf5d1961167ab4ba78c0923462590bf13335a3062e5a40b236c4c0ecb854d1aefcbae3fa68e28e03a4587a41b9ec53f99cf302b0b5756063fee789f8eaa646f97c3d4ce1fd81f717d6c474884e2679db21c03ff642915d6d70ce79ac309b56f19e1aef5705c985bd4c86e5011feb85754905d268e87b0d29036b193039d515c6b1dad65894b1419656ac2d74ac96907acf3b3e53dcc81a05838cf12779d306c87a43107122984d1edb0280a37bc7d94f20fdec14f9afa31b9073e31da803092cb312e1720ca4c2a6d3909c7d953b48bde0e502d43d7ea41b1eb98d3a3fe7652086882be111c0812bce660df907bdd3f9654862dd4a960f3ef484f7a6fe47ae7316c2c81ed522fb176bbdbef8631eb15c3aaf405fe600b5582d14fcda697c5991f6e3e33b61672ecde2630c063c4751849e2ffaae7b8d5b83b98f307246bc5864af14a0b2a13565017b7e9e1cad508514038c0cf69882ad2ddd323ede208510c43f479383e47a6ae01595af14d3b159458f2664f56ededaf6afc1ea72c70e6a6c95d5dfe960324029a0f195714e7c7a5c9ec36489532713129b4f49d5cecfee2516ebf64dacbd9564a34eaa7bc4a832d33e1c58bc43cc3885e155cdcc0c1220af1bbf4d3544cd80b5b7d5e5955f73585bb1402c805a157019141a3ad21c977c2c719f8fac09d93ab4096ed1b04ac8b82defcaab9b5ba46b679c64a87ddc4ce660d7ca1611be28e538dc5aa09537c0d30c21e199f22c85980335871c22f2115ab4831bb62d8c6c95fa052a9085dc2cfc2e27085c1358ce8b706eb3667a428a2b1b9e811d567fe52c6d6df2e75271352cd313c61be08bd153282ba1474879033744c34d638b061ebc5693e230aa3403219cac148a3c1adc8ebf2485132c8669bb10844b7cbb7732752b071f82bbe57d8fedeca3aee4798769df64574dc81b4bce3ce5abacdc88a96e5df0f0f9d44a18846f82ec6cf4c299e695ca69f47930ee9b4bdfbf3bfdd7dcb8738744bec8acac3f8c5112a932357612468b4e7e8b8174e53ede82f45e64f187ea9a771e2a58692335ef9636e6b21d0454ae0eb7cd0b106f5d44f53c5d126074940a78b08620cd7d7b27dcfad540bfcd828eb001ef93475050e446ce2b290e14734d3283c1d7b34a927776ed188ad8bedc5c0eb3be1f4b582b87d15773d7f56dc3ec4fc09fd972389e934fe0855de699e89bfc80c77a58f8886ae39670aa5e0a490646576780058451e09839e62ca59fe0a2c03f51b42f66bebe59ad8117a6a1b8ccb38b29b0497eb1fa8d098a8ce1919a1ed767e7a097e850270bc1fcf797ab81031181f44c4ccc8b2e07267fb8d80fd28d0a1ef755f27f413e022ec20557511c85ac1db0bea5b41101dc35780e29ee90c3d9b7f4aee15c780f88d53b61d5836fc0fadedb73e60bc8a715d6638f526c83692ef6bdcafbd6959cfe536210dd38d9353479bc5d13927a8cf142cf63c769207963709b8c8fd5b2588b27f079a810e1fa435cc96f32d329cfb32e73538cfcafc39be9581b79dc26ac911122e90ae6a33906785325e7dcfac249b0b44d690b656c688a6963062f3e75fd3c4310290b95afd6d96ff91e5b086cbc7377e4a9cdf06abf38f293ebbae6845df3ca82c134482e6ffd29efcded9407739659ce6d5231094288e19e47bdbe1dceea00380556951b16ebe20abbc9868245d954648971de69d3fcf1bab8539c78b376f40c00ef8df01c7d8bd45cf644ff5e12cc25f6c762fd7e9990e3806b994444251240918f69bbae6619dac5ba0656f0083f33d3a1600daff52659bac0eb1fe493caf8f390c59deed52f2ea10b6691b2243ad4f5f3bc35b352351d9cdf541f4e848cbbd747524d66cb75e43e0c8e6e399b9af209c76ce4966bfe79ce59c24c8f7ccbf608314e93c4807d95b0f4aee01505eb9c42b6abde47f94375cfa1ca23d17beb79a9dafdcdeb7871dff5ee788ec8846f839a63b4bb0c25b862673e0f15f48db1f8f88ba56d5013f5e238bd3f5384e9737ea4038e654b6355532d483105fa47488baded6778a7bcc7c41a3b11bcc0779106ec62049e9f70c39f1b63f1ce4077fe2edc34d308e516c32e100c798d9c41edbae5066a78416b4d6134a648bb8c8da5427192d4cc8ab2bdcecd08e43c1039e3dd6f4c56dabb42b2f83523c40de393dc0a39e93f834633b5d3c43d9675f0652dd3e2a52b02f3f745875f00317934aea32f780c1885e0f96374af8cee94c0e959a8b15ad4fe7a676f764556b3a7d7794b3d14094a3a7aad0f692d43432e55bb4d889a6ace313e988befb543b6b4d3d032234c3b9ca01c3eef707038fb884644a548677651d573c8a462ade9bfb1fabbccb7003328c9963a00caf843a71e334affdc3dd01373e6b238015b411821d49d17308da8d45aac9384bb611fc81ed2cda1df8015f66c8ac67e4535fe5d7f57e005aa2f04eb0e9426ab0d3e059dead5c9730e40f4a674644a3c671eee98b676af57a5013a1231c6a8168d049fcf9a9efbf9cd38fe2211c0a739e8988915a7788a0c8780fcae261bcf0f8d0c141278bc1fe0a066abce20b654d9090ca659a723b6e215a687e7e239ca30619a4bcc82424c9bb323eeca5103192653187ccefdb7d951fe90864f6e567241e2fbb3c5ebe852dd53d9fa0ea62ea7eb11fc735068ba500d50bdd58e6840bccceeb420519aff54e4734025c4f8ffc311d1076ab1988efb6101cd232c82c151b1e5bb91e0a930f32c2832f55a7246767fe7225d5eb1e198b267e0b202024c67902ec6f50ee712c3b02d08d5d214eff840ea5fb9c5cbe4f1ecc07ebcd041f92887b0a4391e578cf4a5608dfbb7316b698835a1b0cf74576311ab0e3aba2cd8581059b036a0af0451a8437e736df1666c66674d53b62c628dcdadde1392c68bf8449b465281da67fe4e7c996273d0cf42c5e4135bcfe74034baaebdf839a43918f4ea55e0f376f8af755540f27b1d2b094651c1d9658fbd9b037923606f6fc824333ffa9acb57f22eeb3ca77b4b7c3c1b1d1b243e96807ae7223fe978ea666e4f199829c1b002fd64ca4496d99265fcd5eff100613b0a0d4ad6159206cad98fe8517570ae32336e527ea3b9012da2de310346178c5ff3e70cb571236fe5afedc7125dbefd29575c9a543282476bd568efbfd035ad50f215bb93b18d7bc4e1231ccd5742890a12818e8df095ea65f01850ae0c5f276b35c4f86b94a48caafd773ba07157d9bdbbebe40b7fd0d298ba9b9590b7fdf3eadc9cd1a2bea74659a4f74f2f3d81d45edb838121a6d39b6e5153c130562906977bf18757395bf5ec0ce7f8fb4f78c2b7b25bfd79cd2752bea32d4ecbaffa21e79cb52edcefaf2a7b7e7f3bd1c046f4b3b2d2d5ce84ec83aaf3cadebd4ef099583b49989831fc59ead9fd5c1bae74a30e02886de4fc1887c25af419460163a4024813645f33c471cf0d018042ba44da68fc1c494a8c4c17c144622faa5d0a3b1f29ec34ac8d12b6fca1381f3f88007798afc7317c2d2fadc5efd2be193691b62935585a59bb605dd32e63bfa842559c725db5274dff613170ef701bf32a3a98683a92761a9e0fb257e29c727016c0208cfe3c4ef8c2ffecd8ad8925de18943334f765eb70fa6fba7dfefd0652b30acf6abce13bcf5eadd9f8e393345ba13e2a10a3da17def65aa9225889fac7d0d7896a752558405b3ab3b82186cbf9aebeebb964adb0ce9f5a99adda6a8ef7a63fa4293d2b31db6ad16c874c7d1168e962aba2d99bbd19646254600186939b717c01a8d929f30bdab8eb0a1ab348f142387ee7917e05f59b172af75f54ca6df2a6cd6444ae6b8223a3293897c4bdce6b0e93be9233f3effba916551914f0eff082e1ae2dae429c5f8f20e2a248e9e35d8cb67cd3583ddd203cbc9f6946d3beb25b230c786a53b5cc39229970b6bd1bd15495cac1d6da920bdcf05c1d7e09cb86f07614b9214ff44b1c7d86099c5ba2c83a6e5dbe3a0e0f9f0be3d9167e20ec3e710e5dbc921305e4fe90cac624a6a30486268b9de191e025d91662caa76444ae8a2e19004f5f354018b5c5d9ef710c8c47f25d28f22ea7c987bd92c3b996d42f83b7e536ddcd932dbe919ec53648092cbe02609a2749211ac829651ede2a701f6705cdc7ab45041ea6cf4ae243f8a2f2caec33266c29828e8062610d09ebfb5f45f9f04cd341b8a9b53e59db3871e6b375b9326e4311bcfc2516c855a71682d37b3d7114a9a11c0763d6be2f259e7a8481d2b40c05610020a47069d19c5930e6131714a121e81997a531f2b36c3e6441113d5f0ce75af71ad6954ced9234c5032f56f02b0315775b7668b30e7ef4fc095cd4ca70d84c18ef8ec2412b97b04b1d8337d71be8814a79e068f83bd904d0bf71761fab2b2b1a073256f7a209784528e7488591116da7bba131980b667f248b0f55c92711e6abaddb46307adbae8c9defa2b1df091c22105b9079a01acd795784dc42bfe103839219c248711d2448fa9a09eb0c17c0570951453cf3f1db2053a5e20945394a564b33fc4b59deb645400ec6d2537d86625cbcae8d5032636972d20f3bfde07f89ce02707c975908f074614bada1917e0565aa5d9cd503fa8feb0ab4fa208a9126f95c1156a675d5dd1e7cf8701a9c3f67a06d3668f656fab6b8117ac65b58a33f0b0a34c0929291aacc018973948a7865309efefefc1a6ab91aa2aa074d3cd9fc294e295b7ea81c61904e07971a73d3e65baa7a0f81c4649413b4f1c10c1ee067db01d6931eb6ae427e83515f6ae6d6130cf77c9ff523bf78ead0d706a1d7817e8c3ac36d3d7f521d30a383a97812af0a5090881b1d8cdf53ab7761ea87ffcd340d836bc2399b89b642bed8d6e9b40875d969e9688e4804c4a59186113083a1d612a4c60a82d3f307d52fd51c99dd67627e2f641d366472f9eaf67397801197a7b3fc55a61fd2132d10eacb541581a4ecb9a5df81d4bf46fbd202c9f25055aab7ed6a33f928208bea9ad2101522db7677279aa98f7b78e323783843b8ecff17a21fc4e4a84d7467a8222f6a1634a13dcf0c6439aa139e336e3bf7899495a344538dddf5b54d515b92d82193e8f7046806cdf49171d8393f5a3f3f0c9b005eb401e1249b2e80f4fb51f135e1c0ca862db47378a5abd9a4c9c4ea852214d6525d3da5c8debc4e945e8026fc5ebe3f987d222f865ced7a2ef40a679ae64832f6de57ca701a61b6eeae7d35b7ed569d0e510cd0e0225ef2121f38269a73672627686f2387bf3fc82799d65f1840c15e65c7c84ec71babcec182c95af57f7e361a5615eb0fb0872bf8a0c0e80bc017b1d0b92243d55f016c743bc8798383bbdb13d6e03b12aa1c982bc07f9b95b1a0f91faea76d73e6b08114c197c0a7db8a01f3133d959087df5d6fe6b843bd24204c7053ec2ed8fceb947205dcad859ff5898bbf695c115524da7034ce338b8858f4aef21f0c986cf180ccb2478345169dc8d0f2f359b78024074c0c63bf14f1e6f2eb7c4b31c6b3d1f6a344f8c968010006d0c2e438eaa301ed49510fc1986278767c21c4eba4f0e9f9e4f442cb2e2d4a007b0582088fa93b28ef701a15acb3ed68ed95ac2de66221605cb77a1809f9ca674216c5bfd052536c5a0fd01d76d863e3c579db0d7ca4f0577ebd440220ca535f80a39ab4785cb0fdf270a13dfda83eb419802044f9fb3bde7c3c8621e7992b01b3ce9523d7c6c83567fbcf60837444dfeb48adb1816a1448ae6fd3d0c112f9d9862900ad3b02f502fb67ce71f2f3901a61145ad64a5785be43118daeb7ec0068b15917d5fd0153652681dfe3586da651c2b99959acfaaeba4fc3861f397c5aa39b6dd884157898f48385ba2a761a2c204f8c3385c0ea8f8c1c2326c9f3a44872dc2bf08543bbba580f8a26405724f95ce01745c7946b0ad9d2806717b7a2b93283e7460aca19e1d0b3758f2103c6e38b5adfa031ea64e41670751ab9685a0c3432a32525b59a2cad2a70904f37686c67f0865afa851fbb110dd1f52209259e3b098d2150b36f7ed429de504e34c8c45e351434fb112c2669749bd709c8465002601dd2e67d998c3fe2445a299a7be315002eab348d158f110921a3e9288428b45062d5a7d180427cceae3eeb54634ce11c8698454cc195d1fc45b48137876c721242cd38f785a12cd16b002799dff64cd0d6aef5899e33c5d699cc54cc061cd123becfa0dbc81385a346ad71f0d64296291eaaaf870732dc49e5b329e1e1795945813bcdb8ab69d1938908e355e23d312501ab003e76f25a5b2c838cf5a068074442010d4ed288ed936c7099623092449f800d1a9d6ef956d95eb64c830fbbcb93c53995a89f29cb97c664358af1582a166a05555d40273d2131aefb82df3d0bba874ffe7b74def0431c365c675fb2f03c2e6ea85f020c4d36d7407100892b1f885a1ac20a3006f6eb656d3618b175da5d0787349e694e1b289c5549bfd7efd3257f0ac49eb5390be1266ef2aa8e83de8c99c7baac5daf0ec98f4c63efd89ce8eb06e8c591783a7110b0ad409ad54527aa76941fc96ccee1b4c42060f11a37920e85baf0e55066fcf1a79bd559c0af9334305eef7b817525a7d8c8292b710bfb175b244f6e1a3b97c63101eaf2c2a136ece0a0d8c87bdcbc21c15669ecad94bf322adc5387e082bf264e2dbeb0aeecd544584d2aef8f075f6316bd0e6304146f4433f6505f985706e14ebe10ddee4f6ca851605eba8c1d19ae56edcc9f04e30ed8af5efeceab4b91287839a58cf0b6a98961cf8c626b55cadddb379aaa63b297d86d3df9c1d6aa9b1329ebc87b07aa6e46827ef3fccae4a64e7d7332a7015d741b38fa422f19f5f06925bbc4fa615f52da6aa4757c392bb31318789509e0b208bbd540bda1bf6b73c3dab96ceadd18216119df18426c304e7d77e485daf9a32741aab2b150c4c698f6ba2c95c8d08358693b3d863dca6da7ef57fd0a0c307f99a140eb4bc80aefead605c996cc14a0aa165eac8e9de9c540097eb0eeddbb8d9a044b1c1b2238e886439c9dce13ed4b7d14108fa110e37e72191c6c4152d92f5d61e1cc94cd29eb9f85b6e51ede92f26e585fb955959c0ee7e6ff87d5b19bc384e8083790e84c10f8fe979f6bda7d03c9b45cb5e6da6d8a21c64273c2201e0baa3ece55cb2758cf6d289a4b1e83b9c8113b8ffcb031c095f2ff75b6e442827bd9867cf5634f2a086ae028a9a38ad9ea7e6e81c6b60b8cbd0288851f58f06eda143dbbfe5f3bcf3e72098aa0ed575f717a46d2271e0dd6484d03cb1903fa00d4cfe09cc42478ed3299788ac9f192a25623017480b3ac8da8a21e0b4a0bfe5fbf716fe854016b1e010b346a2826c18ed6cdc502a362646fdb253557035b4c699cd9ae27a9a50af38a8301a2cb0bf2c7777d175db2bd71cc4ccd460d0f24db2271d647441ea327a7f8d4445ceea17b086f6e17e86d7b265aefe73e708f574be891aeb0bdc7f544c5c5642ebb24edc6c96490972988f6c86a97918a92792bfd830b98e7c10a76003df0ac3946e0782c8ad504fda1aeab0432e240ff8c409d34a65a42fdb26c670bae8fb9fb184ccfe0413da1f20f1dbeeaf6493a113cd1eb4d6cd84b6fe3a7ebb2e950ae41ad1902f1d8fe73eb87f1738255611d5afdea1802eac7ca5293e88af8ec0f407f5a58294fb080367509fab6e9f191566f27376cbbe6bcc54e788bb23ad510388de4dadaee8f47df5a7c5f94053f25ab08363ef1f94028bb665ad6316d9126f5b7b3ffb5f18bf114973f65c0c23ad0b276e47ef7c7a9321b958feabde1516ce71d90e9d9e3b2d2af16b46f0fe641755769b078903eaab2ca3560a06ca0f814155efa576b08979d3e4b6da7fc6c5d515a067f70151a25f7a2409e113c500c3a98967b5716b604f2868df1d9257eab54cf4f5e139f5ec653ed53f9588cafef811eb386f386c377e4fc4f34accbe9c5f79cda9ce08e0c13d9ee8ed972a19c5feb680bc5ecec0322914a2134ce563a487afed4b17106e50a66583ccb3b22ae790acc51e8377dd39495d07e66a2cf54d718045daf4b6d3e8e4dd54cc53f9d5bcd89b3d15bb2f3b35fdc2177dbb665a94c73122739e3efe8f91d80a1d46c00b639d01cfe6e0b0af9357e821c4381e9f3e60d607439e1fa22abb56b26f6c220b099421850d35904856d9c6ec73e0a518ca2927959ce83c29d5db31abd29ca35f780b64c7587362695e8001429a89738471b3abd54292cbe91957d06f707ef5c5b8b5172ce897f399ebcffd72db8f05ce6998ddf345bc729e387901ca064e514c8003fd83dec150a39288fcdaf378a1f192f86674f46c58256327e3b19c8d7c2cccf5bdf452304ea1eaaca41f923c4080dfee6300731be0cd59510ba82c9792db520377d77aa7a2e364b1e321771653f8e1893eba2b2bc4fc1444adfb6930a0232038cbc3058fab0ae6d27d1fbd3ad14b88e899b73f45e955bb79568141ff45191f8a638abfad44c2eb3f00771bea878359424174b81a76e3618500619eafa0e875c00a55a18e6640dcc8eeddaf6e78211dd328c421d632cbb7a00decb3ae19185eeb2479bed065da3414c51ca756feb179484f8d05f7e68beadf807f832f816a6fd5b79b0014a20a38d82385f736792c58c8fb0310a837b241cd10e3741583e21f9602713ed7b998710f7567bce1cfac892e0db1a54ba06966d2d74cbb8618c57678c53102bc03b10b91298c437f3c712f929f4c3a81e6a44d97b2e4b9ab5e969857293b710627bcd6e939a77ca2f4576cae14c3c8e5c51be5ced251ad70d216211149119431b51bd9166320afdede1d93d8c8511b19f23d448b9b4b4993b64eb00c48ad64622baf72034e39d1324adf74f0118464ece928cd6da2dca5c19c69a266bd0fc024d386b5ac26a427e57e0ada436d09775220f29b6db5427db6dbfc707e34837517450a9e5c13608cd8454df11594d16dec5523acaeae2702294abf46447ed4bf50e0bc3dbc2e7e223ca07e4754b82094732d6c4807203ae523c4ac736cc4bea95ab76353e0bd65b58969a89bbf238289f9d5a757c9ed8a2d4bf419121dc04ca908a22e6aec78d14237ad5a32d11891e6ca661e57fc4f6fa10539868a1014f19c419a42f7b974a190f3c212d7cd565642ccab3efcc70e643f2d53bd07063743ba77d16fe4bc58103117b0cf714ac1064adecda146aeaa3b7bb2379f0eb6a51d74ca494fb0c9657eceffec9eab153a2f08f5ca6efff5f1fd7fe89885f7281d8352898c0ccdcf7282fead0add93eb0860c754ea9b94092bed4b97dfe7909b08ff0afe93f5d188301fc3f5ab3dd7859fbff8cbdbcdf0bbdd8cee8bc594bc1520ef037103a3cd32f26ba8d11f949e96c96bf82fd78a6bfb43cda13ca79069eff84ba9c93de084f5a8e3a20b3412b1ebdbea2fd0ebede6aa9a8dca316210e083733129aa9dcee43b162baac9b715842122f6a33f530aad0c552370840798d0472f0e3e6b2e9320c7182b516a0131377d2789644e0b54f70ec6241f77a8fa0b8a8a48570ad3fcf04dfff882da8d63791127d0e5dfdf91f0329759253a7d10cf979cd444f421b20b550a2e58b650bff1bc2f515d322ea6922091c1d808e9489e8b2fd444e8f3da08f2a641203bb284dc35fec93be5b3c7f07f35b192d7d9198e6135aae202d6bb55d2af4fe3bcc4993876543a9c28be6c897bd2abfe7c062ee50d61d2c9e3cee8ca80134267838aa3f5d662b970301a3eb2e41f7d0f6900a6bd9a413bba0761308b1bcbc409cb62ebe19a9aef582cf73fcd85423f64d916aa2726e1fc85d53abb8c8b256c7ee23db08d0e6263a5c3e17c5eeaf80e5a16dcdf414bab69e545f8bed1dc58045341a5cc8feb4c48d9b6498184674d95fe7015d37dee761272cbd0dcf4c81ed7b134d7e04320e0af4a850c03768b96bfac624abec4d1a3ff619a58d8b47550453eb41b364fa5d51c181ba9f45804d64b9cf6f2b0da05880a9ac6bee936762609d847092005c6f44613a4e08ccf3046b7a7250b55f88d9eb97133b13e8b9a54eaa497e54c0169f636d82111150d75d172f10440662d04b59cf3d336573d81b52a8ed10594d6abd8213254497f6b0f076e7a4603dc1996037636a165379e23ea2d7ada8a192371d47ccbf60b7383b2488acd9325e6247d1080b0401ce1166bda98c960d54cda168af61299056a819dec22a8789d2fa4e99e110e2ecc9b54c918602761e3b2d91f5894543f79bc4b1768c2cf3fde5387522eb8f48e9bfdb1cae8afd663b4405b97ef9372fc46fde990ac3e452e7477c36b0e50242022ca42256be3d1d19018c0358f73d23c5040d506038095cef8c1e5e6da0222ccb139651c65ac15d852a2c856fcee755a04b322bfd2ebdeeacac4b0e1d81149261776bf1504fd74c88166559ae9de7bc797c0fb8b0e04b2281836aba9602e9ad86e2ed672fbe017c59463b0b97d9f797f09269f4d1f9b23e725215d6e2306a2b1fe1e2b14b7fa8e1d2db386b51c91102e4cc3d1aa61afd6ce73ca23a042f3a060285085d029c9b24671bfef4ad09f4025b2e06edec576c28f7ca3b8538b2419d80e3211566d265e523f061260d08f9da41fe0dbb5aba74ba716889efbf836e557b951316de176feff368226a81893d836b47d684dcbf864bf0e5e7640b01c26527381015110eef7b28362578f426179c6b598afcded6a952f8f731d6859dafa6e3ecd472ee94aff04b30484d93c8da436a47844f75e5e66db2b5180e0c5ccb7e9bd7f5c84f389fc463cfc11c4630f38f0867e1eb28c382edca1b0c888c58c84640a23a241dba337412b211dd837247a2c9d626b46fbe089cd189b30b373fc7bed2fa0a7e16939caf7d1b81526375f19439f2f5524216258dd544f60e1ad2f46e4f10eb46656dc52c787033b9657444b638ded0a010804ffd08f493200a67780d921a0814e1a728c731bbc670197f23cf6601ef4d5ea3458cf0254ddd3568b243edd0d4c182d271d79b2b844b5dfba76da7872142a69e555c00c69b31d7d2ca6cc5efb59dd936f0ecc2912063bf1e186e1ddec764bf8078e090acfbe908b78f27f6b9be68764ed9529ae40c952c742d3cc93bd4bee1cf3c63c410c3d3e5bca3d52b747d4528475b0b19bd5608e85dab862a13e028970281904d0d8bf0bc9cfc61a3e7d7e297867f2a13db185f8c8c455fe3a250f75607fe8b0623287e54a3b1e8f3e0f775451fddbaeda17b75aa89d60060678b5648bea15eefb732d5eb331a1a9fb047552e5e1b96269345d07330e6b5f3a63a49ab7bb9c479911f60ea423c7326ac7e46674244dbacddfb1cc1308099b0e5a17ab488eca6ff5ce82cf0da8aa54caebdd1c8fde6ec31cc9265af8e5a2c7d6f02573ca106c8e02944db4a99f4c7fb93bb2b63750a21ee52aed9001f4cf88fd40f1c7e7692710bec6fe9a72f422b02bb0189cfc6ef8ccf86724f681113bc866774d3472c4429a3fe86a13be2c4eb788c38ec9cbea496ac22e4dde8626bd9c3be656968dc33b90f996b297a0c559a30ef83c106606636df04d9327d6775ff99364951dd13e814fe5f3f77ee9ca096f1d1efd8db62d311a1ad78864c476c4b136d686a3d5130e5c3d46b2cb191c9f4b6a4ec91fcaeeeda9bc54c4ecd7eac59cec6b516238acfc425df3a997f8354084cdbdb491fe5f19c6495e111585b0a0181e8a0b5e3a8f677b74dff6a791a67eedd71ac5f9ad7efe0038bf602d78278b22d3ffbf4b6068fa8ec4ecdc6199456b12363875ecb0c47d43fba3e3b716afeb6fd7aeca98cf654f177f6c2d2164386dfb8318c21533ee4da1857b1c14adffec5ff0bf723343dc241c5bde0ef700d96af27619d02c7dd5437cc3d6ab9b481ceadbfaa0c2c2492c8e43300722621ebe00be9fc3c66a78aa9b2bb6a1a5c73449a08c9d3b22127225cb4337e0587846a4b1f52107936649c286ecc8008a211ef9d37ac4337e86a0fce4390dbf581d82d623d002ce81ef89ed0482a45a1b9949daa1e0a7ef495f8ecf60a04208277da68c83fd5e7b59b2bcfaa82e02398b0433efd59804ca617644331dca4397602e367f6b2ff59bf2de1a0ed8763a897f0a11765e80c38ce39980f242fda7663bfa305486cdb9fbf45e43aef0dfb0782712d3eba83a51028caff425d0a550a699204355b63b05c8cb894f5e7ebf69641c3eb1fa4214c682ec3f040bc95f08f8cad7b7dbee8763362ce70e28459bc4e295153faaf56df17afb32a62ac9f7980a2d9a176ef93d14e413ff0434a7d044ee580a862b79542b76fd46d752f9f1abec6c3b24ea9825eda59ae5a0dc6741858fb8e78bf96853f29e27dac38b8fc900c65511f4583c35a888876446d92407253db4a76cd33e7ae0fe9ef1ce1d4ab5f93d13c5633df05540ee3d92440283eedc77f149f1bd4c50c51ac9d7d99a95fea5f717c6d0128e94da454e6089981199c649ebd388dc3eb98997d6f32fb3ae4c3df7236652b608551884aa1be3f8c606d7b6830ebdb4ad589d6ccac7d9988668169164353450007d77a704cf42c6c220383dbfdf20ff69ba5bd2c80fb7777b513b3867fe4732578da407dd5af0f8e448596a1352c0b2b94c9436747b38e8cc5fe5b417347ef0f11b6230fc332cb8977c1f181297f0110978624a221864a7701c7610f0ac286f1a90d719830d7f6d4f59e7761fe0af9c132fd60936d7e0d6c3193a88d64ea1b0c2830f95babb25b4576c72fd32c444edb3a92b8c52988aa4e0351784501b923200055927902d47863fc69c238531f314a73e935ed6866eaac7da1ff54c070282b2805940a5cc1018d7027fe72fb4a25774fd1a24b4c4e0b89e771cba783a7477612d05d4e21745be7298c5522366d81bbff6f0d25366c3bf4ee6c51bf6d90b1f48b26cde693702122d4f45e772d54f127470f4a4426bc2179185f6a0b01072df297d6ca241ebfa3095b605393110bf69ad359708f720a5556c140d1d2a1c09411a32cbd64b07d62e9c57b927800cf612712ba5aac4da6e3883ed7a6ab3c78549ba72f147bbd7796be2c281d8bcbf1dccab9cf26b5cd4bcda6e2c5ee8313deee1b1dc7be30a8b3a83a31d61aa1bcd26174869ebafc640f8689f476103af3937952cddab2cfb32cb895a55553a3bc37c05ade2d3ae3fea077c8e07b59c553841c6fe8a568bfc90018314b23b6bd7d7b1ea35bce93ba32117d0330e379ee247197a1f2875e31a631ce09d3d1d61f8b377157741ff4ba3e5f69fd0b8a049849adbbf7649794dd3db916fb89e6684d604b05adba3c4f07bd7a7f865d9ef3960392ed8b1b1b10cf6e19ded05a65c7fee963f99a6f2fddc14410f836cd5d201bd267a803ebd85b404ebf492a105371911271c3c061de9730696c80f9309dcda78428f85df7d80388a58a2d2c00a888083cc9a89c523bbef1c8fcb86530cb1e9c84b6ff11a6d61715708a94038c88529dc91445125c5a53401f7bb5ea29f09a4b97e3737d4519ae7b6c873f381d1cbadf1a7e094110759f48899a7fc9a2a4aea69ae71ea3c3d7609112461ecf8a06cc669a0cb8aa4d98ad8c712393dfcb162a73feb55d390e9ccb998081d93c105b3c11c283e9a901e1cb58d3c66241e5fec214fcf6a208f6530f8331814a2840dbe0d53699893853b90d48c895d0a48ad18ee5ce47f299afde53328ed301fd9c7732245ed75706f07ccad891f6b59b32968a1e6fcb68354bef3ee0ab27bf4dc152cfd40e0c65df75481d1191245f9e6a8717509103b030be0d7e85c978fb0642fbfaa93fb59d62327d6533dec40ee69909786aec5f8d8d575945575ebe6071b42b1960d5773a08b3afc58272dd77175594565608f053e8b970c653cb1b4d048223374ef24e4b78df4ca517168942bd8ce13d1d172a6db6b48cbdde011b53087496819669cc3331983e2fc483168c9220151ca29ac7d8d4966ce46db1d5bb092144c9e637752c7e133ed30875dd669da196c9e9d84ea666d42b7f45ce10fe1aa68306c923ffbfbd724fc31888f853194d067bf360fe7d031a7ad14483364be75573d283e7f64df8491777ee313fce318a0d4e212276153627f8a4c2e0ca04954707eb8a86208ac613582b702e4fc28c74cac230d8a7be4a0aadc679da6f4178efe4b27fb0b5fc87cbea5ca4203110a53d3d3dc3cd4ed76d97a0868566cd4b952bd5afc1538080e927f34ff654280df56e6d8476376d581a35a93b6ecfba22f36d990b8fc1b1c6bb2fe58a8ad78901f156f4468da91349d85764bd458bd6f8bdee1b14b50541d019232f59a3500ba9d12a3991276a05494b4722ead32952b4391046bdd0538d77dff2ff4a1559d6b52ea7f25b0ba2a20891064723d32b1870845e431b1facfbe66fc0afb1cb38d14b693971fafcaddfcdef7943cc3cd599fc28d59ae9dd19491dcc1fc5255d41fa82e6fbcbaca712f7f0d423d3cfa54c8358815453053c2d556ff9156f01b03667e8190f4a1116d5f16123139c1aab994c3de9704bf0d9923a04b80d91e4ae7776fd5f1949abba391820d2dca71c6e541e95c0050852daeaa558893c2b310dd903b5a8f77065082cdbc2daba6d4c2118c9ff3d36807582417dba0632ff901b64fffaf1e83b099bd0ccf3772a4fa2a40a9f4c11c6d8c56acb14ce878bcd6bac6b982892beb9c8ef03cdeeb3a3791c320bd705d6f393563fc75f0c19066f7208a94b9052dbfbb7adc7a4074744193b1a5ac1e2553f765e10a7c63ec2685818f35287f5590bc74c7ee0e922c687a98390cb7d549bc543b632e38d061d01ce13bf604411e77effe575262a382167fafe87d713fcd31c855db01803553bac28e0726be811db71c2410c4a0cd9717931ba9f18c53203dab5f54855f8f5dda5133cfddeff15144a4804a50f4aa519f0a7461f0c337f842a9a4402b36f01fb9797ac796de4b297367938a84326d230880739032579235e2bfcb548a5bb6894a41cf684f62f6f8d9995c72ae946a944cb71ab1984ac9063e8bcd49f99c26dde634aa6a154f04b09c772022765aa096639ceba2ee74aec272df8d6e2cd8629b610d28aacc2ec35a6e2931d45a8c4e38736950749a10293c091f50e157e8d08685dbc3661cbf193f0e5d5b03399afbc2dd58e36f6ade593576dc479c2cb4248c6aac981eef404bca0197d379041c02e6ad80572a7318a2f8e98ab33f000027d8f9bd0069b9a957ea58b31935f7fc0672d87e0e61df9d25daf2909009d10fc10253ecca479a63c98fe4bdf88163d83a8e32aea45e7c91a48b294d9c4d176d0bb914678ff2d1d6141677a7e3d327287c763535943ea9545ce0cd9e00b42da4e0ee012effcc0ad23a0d06e7ebf606ee4ad2d3a481903e4ca0256a75b827c1182eec073ba4985b74751ac86ee7d3931c8d9f8de6505b0ff24abb8a8317cab6dd71082732dd30b786ce6066186cd85d066dc92b79fc7cdc130c43552dd6ee56cef825495aa4d2853cd6472935e66192f58db0d0de5266404f2fab6eda0730d366723e346afb00567ecc2c02182e43a8607103f606e698213e131f1c22bc84380b426397e1ab54adefe6d8e4280489c8306498d6f24df2bad5dff168a8551e6c7ff93f8bd295d4eb2aec79c3acd75e3fdcb680fb8db57546224305b92f11321f3c2c6e0f9146a5ccfc9a3fc5810b4c281a4e1fa8b1aa8ec6aab4043467eb80ec8d4eea41507e309cdc2cb085e7431a139613f6218092bff3e1ce4c9f7200e69d6738f12f86d9499ac7b7b30d7ae7bd3f19f9f43f4fb3cdc863781511e9188c9b6d501886c428b704fafe39139ba08643b5d33e712c3bc5634d1b3667091bb79c1b9eeba4cf59c9a9772a864c52daf6befdfc08d33889210d7bac85283f8e2d39e80d8ceac24de5e64b263347cb52cfa94f3206f289125d77de2437eda955b33535491bb03192ce4dc4720ebb36b9f8e6bd5c1088fabe40fb72459a390032875a8fec0038a4fa6e5ba38e1ab10bd0d201c2e25bcd360be3482d077d004906f08172663bb48042d7787fd197def0edeb552f060bd9a52aa604424ba3a35aefa8e90cb48de92c3ead9fb3332c38b975d90c2fa9d51e84821ec111b75e0b1c6b80dce0d92f6e287c760f8f7078b69b63ce156ea995da28c9f19dfb9affb50d63aad03693a1357cef464c3396aa4cea20d14929f2644452225d269aca2440f03370a1ce48c0e4559644a82cc9f8c5475c9a65d98aa14e659ba71ee693d04c6320816dddea624a10d4d941e94df28dd684d92cc659d09dcf2e5a3f949a3f6a0ba2c87987efcd93075ac09092ed75074aed84292330f57abc23550e9e9aafd7d71c6d94909d731c4f4bfe98cac2629e8568f20308d1f490b68b996ee035da3a0ca1ae043d9d134efb28930a580e24d22a4faa71b4b85b2211488dca2607b6c632114e3cff55ac7fd8051eb857a14cd8b8b84125fd809ab4ddd3be881dcf5fad009c05260c736d01bd5239d4bdd37f10552fe8e76cf099e1b606e0edb9274004f4dd30639d0fdaeeb094db382debddb41f11c0a6c43f7a83cac436e0b20d000c535210fafcc9a0205a5e409798e8aef8065f68673e8d9499b9cde3d13959ae4e8ec24146220cdbf155b3d808b12770b081a89078ab5c85de7c2ea26d826935b9b007c471100a9979fe5749de14ed094cf693405d986716f330012b3a6db330f7e906ae4ed5916ae8b83e8444999d7513a913b79e0be97557dbd89c8c47923a52d4453408d1850a00e2bbc7a24d33f14dd7c4875a9e28f213c78833627c2c391c9ec436bdcfe66db960858389b54b133a198e54b83b3c25d4d00b9519c92a5bab39f6760b705bc42bfe3e75083674ad8cb2103490d572e9cdb55e9a0fde210e9b12b92c605d689268068d765b0ac1b15b48576fa8eb4e654188f54993ab17e0cdb04b9407fb45a8a18205beb9daaa8d231067608e14c8d14e38e3f6b4ed81e4dfa26774e79f68dbb691aec3ca5f06a890f341f9e6878dffab79e72de727e52ee51f98abc60e1d737bfe5c4c131ae4dcc08cff261e72429897f2fbc3e223f3201e8f154a5c0a8bfe33c786121a55932a31f4252fe21e3ccc0191e6c58ba7508e7c6915a01f91820916d1b0988dd066eb55242083a9f52be91bed9da84d215d2a3db56c9c7065fabd5ab3f40fb8f594944fe0cc0a001c008998db3dcc6964ec4005c6bec9eff4763315f5a53bee89381f5716289bbbd18492fe76f51f7b9cec37ede2db71c23451f854797d0c6231ec46d85a059d92e2d31c768eb9a01d1deea188e283f97a37b0bd950320c410f0839bb355087674c98079ca6461c3029b009d723b1408588292773a9c49c24aa71f88f95104fda818a24b0fc94bf886b2e21309036966e4cb3c63d14addcd8507c8d4c9a0852256b23761b117c72399f5ae93c7e34c46c18c0117eb1006be9296279da8ff013c477fcfea9e18aa4145db64cba1ae0703bbfe482dab71eadcac495b1563d537b52b60452ca7650cd1d468ee9dbc8e4e4d8d97f69b1d71648ae1c581d8c04de55b54ad41ccc9563e3250f0392eeaef28fb6a7936abf428fa76771071a3e8676d3d2502c986e0c9ee577b388cdca44748279949cfd1592bc7a60a885f942955307db2d6e1abf6fc75495a03356174e7bf44a859ded61044b349d27797e6e82866b209273864768ccb502ed939b5bead8bfb84fddda81cecd8cd15cd7614c0b395a80ad56d68ce5681024ec0e3fe2a45fe025fc1ab76c7866fc84621cd0aa7563945b586898ddd2dc7429b19f976bae81facab5504c6880db454775cfebf4a1e5be1e33c86d7027dc710b53a730b0aad8d4468a77b58fbe42e9f42a78475d1ebddf5afed08cd26b6c9c9703fe47b3bba7d7be5a20e1a942b9b00b9ef46cd88489e56dadd13ca60ecb0e8d4bc64fe5b413918fa0201450a65f240fff3457e7adaf1ebbf5595db122c9e5c8fd9b6f16a0a0348de70365640df714fd3dbdf9318233bf735cb7e03b6042c282b3980139fe7e17d41f6d41d84e0815d2bdf1b5f174cf61ef041e4abe83764a99e34f15f46d5634292915e6c2ff73fc1d4420e62bf1e77e94c15e36e06315a5eee654eb05a286a9ea399ee9c75aa765a8966a57bc43b8f95029fad0c658bf02d57b157d76d14a37900306b0cd3d7730257934c92fcc7d93a2b3d65ab3ce94118b9ad3f3990bc7c6bbb61af903b8cffef8fc7a706e7e75772f1ddeaaf11d3187c8ac512ce319cadfd948f9523ae2fbb80d55877636ff36afee964caa1602169e5a7a543c86d9f930529d459e86fb4609b79fc37766e557ace0818ad78e4a1e92d05c76e8ea36330c48747f963b041ddfa658140418ea48c257b9ffc37c9e0725388ce72cef3422e8ea4091452f519eeef164fd208a110ea9d0ad6d94e76d841bea969fb5f9a979df5649788b51d1ce2c24eb05c6db16cafd5ad20382396a90bf66563468dc9cbd2f05b2af9c92ff26566569426196a414bf911e905c0e20f35d42f302d9866b46bacc56da7e19bb516aadbba8510824bad323a7e304528cf5c621ca97d58825fe867293018eca7f4f2b0904d66d6f2dd380ec8ec1eeaec650cfc6434ad864c45c3dca5da1fc1db90ca1eea63a7cf3e218f39bd274a64c1b45d12cf2d197b22b53ae6653a44a4629b696a1cd34bb70c0fabcefb07747de2d9a2bb5843278111b284ada9c64d1a69ebb19a8207e5a12aa414e7bb16d04010002bc6365bc15eb7bc5a887c8c03b9a717eff4eac75febc43fb83008c0fa2eaf4f9692b1108bd05b5970102ff550a89841e5d3e213b4149dbff1758728efc672cce9d4a7dc2f3e6edebb4fd32fb1050c0b50f1ee3442e8e6fa428ea7e627e2bcfd4c4b71bd9ed056cadc4d02eabf5f64697354a9716c53b9e11bdb6496eab6b2650cf9d501416ce737d5583a125b5b6d6d4b19725027d8582473ceee5df98d198a7b3e86a778c71576432708db11f501762aa285d69bd9cce0df119ca3d6eb7e6d0e9e171cda28b9dc54a75ba9557b2cbaa0b51afca61fba9ee8ed4649cebb63fd4f0dc59a2609369d42fb40d0e54f12156048bb2ff3b7e1ee2a512600fe2870b4fc7f37188fe1d908095e2e8be638c9b3e887b5f78904f1e7f30fbd407b62e80ba73d31cf26df100b8d92af3e9a204485bce063aea97a16c5e0a50f276e37a5f047f982618cee670e3789cedf186c34b74d174d8defe38f3da7466d73a76d575b977bb495df89c6db8932c750d5551ed01d0a57ac964c74e8291afa591905fb49a6c0db55ff6fa44d67246d462addba282ce56a3cfe0159c57e9d00a0de66000f773c4a47187826a26fdeb4529fb0bdae91376e53c79ffcf81ea4cc5c64406128d269860829d7244a445664cd6052e7486a98757aeab3b241e62bbe5640570fc0921ee3099deb98a03f985fdcf61a630e5df195f5ee8f862b60792ced29d10397286161de426b9a1a7f1736697fbb87fc0ca49c69d15471b4aef7c3472105b50e47a98840403d69a81a71169e0939f7704bf574d73095208f11847a1ed78c1792da58ee5b338ddc4b5b9e9b4963cf0e54adb4b2a8f116c35dce1523bc48203cd99b61362133a35f65c69b0bd61df53b7f87baa283c6fe8a8e28fa2d31cf1ccde42ddbed6f8b6e0fa501d54d1d3b68c2f53c4385bbcd6c59fd5c9707c6c1aa4e2e04f3094540951d0b6df9daf12d1ccab781cd1918bf028a48f1d592a036728accbc6ad0d5bc60899e4dd614572945ce925af470556d8a608117910229fd4a0296afece0e76340e7254ea3f6d2c37910a96eb5eeb0da05f9203b2ad34be75da31c8393a4a21ce2d9490fcf3d71a4513d49804cce46ecde85bae00820c82ee56bf6bbc7053bec10c6b68ac367e1a1d75dc2f714b776ad6073bba80810ca3f9caf2cb50ab551c710b8c49b92d3e8a7519a8a06dc5056da83c3326b13b841be4ec76fdc2c619e8f4f7b64a856c8628d269ebee7782f826251cbf72f8633aeb10931f4163402d7995904a529684306e105d6d1fd26f078aa07afa591cea8f917322de2288423c7953d6d6c41626ed66e04d44790674d8f66266f761caa2bda2174d65c00bc1f0b25f2fb75354d0e3f1452167385dd3632b29f2c7351280ee2a992016a0c8a5e8eda159ded64112684716bdccc967a4d05ea4cf06f9e8593868ab64103a210d951d342d3e98f45ae69a80ce93b67654bb1bf8b9e8b8a446b5c2924980f67b921451e62e751a275a6ab281e0ecd8223c18d63eb020b582833fd0a86683edbfac5ac2b9f2ab2fb7f060576ec2c052c74324ee0200217a23ed919fdb083f26da1a361b654ecc2827b177966e3e4d03029815cec51f83ad0a08cf7c2cd1016c3d600887d35b7c001ef0bbdefc1f32e6386e7e147d59a0fc2099b0df32a38a115d514070a34b87a8e4645b32688aa8db0fd993491045a5d431cee13994e3ce2334b0e9d8a7079e0be959a8c5579fded6f3acca71dc12aa6a6df645ea9306da9ebed8e31566a599e83f6d439b3f75b15492747cec32a69921e8ca2db07d6ea0307d7d91549aa8a9671be18ce6ec5d3f4a61758671d67ff18a1a47bd973b9adff6f67313bbb215182d587cbf3ffe7c0c7014c414ad8178a4165f11047fc4a3656e3291602351548db8f3fa56ff68aeb3eb29690bed5f4baa0577738a01a70e5a7b3e96cc69cde1fd12900ea468f3bc5ddf5e95bf8f92f0055a07e354ce86e6610bab2cd007b1d3ab28f3eeafa5b9e8785337e6f267adc74c4e171aa02a952db9530ef3233c3b2ae6af887ad1f8aabd6a447aba42163992f85593bfd7a91f9b9b1681998051def26f28dde695f20a3a365bb2967d6c333e0ec7ca9f89f101aa96ac200e96adc23ab9522201dfecf14450fdaf99904b8c80e314f27457b62df79ec78eb90b323fd15379b0fe5886ca741ced0301ff10a83f0df3a23f29fd29f002076dcb9b2166da4d0a7fdda95bd425cca987bd1595e0cdc0ce552f22128ed1947ce9969b2b78315c49ae54fcc5a4e0991ad4174def00f431ccee1a1a9589f5a5342eff82786c9bfe56ff54c8f8a1109bd6cb648ab2c9cbb7dc2f899d715c72adabedf344926dc907645819fb72870aa2870eca3317706ac2914049b696de08b4dddcfd8acb5a2b33ac43c7e059e562ea7b841248951d5beb072f9bfec8f762df4433db25594592b2bd6e9f71fe9f948977d992ecc46de9aaa46ae8c0f726a2b6ad2f2c45a9f5a2dda62cbee47f6cf7dd3bfb1d23f8f13b7c68460c2614fb3dfa40922f48a464186ddef36baa38580676089e099ae4ad3e7a467c2cb4879c322984218f396b40d6eb1ddcfd2f6544f6298eb942c8e0995dbf49a621a00d447f0d5b253c48d86ecb47f126460f3e619c616a0772c7ab240f1250c76fb3e0c0f4e945eb5bcf7d83a4ac71b4948b91b9a4c04587309e73ac2ea8c8c0cec8e5f05323314444bf20494e127d8a477ec2a618b31efd4becd107270b35dc4221b94cbc7e2c058879b3414829bf53eb14f55935941d6e1b2bc3fdec662145c5134b5c6a4f49881372a61bc78e0bdeeb021c5492698da8e3f330cbc9cde88c7cd9063fc62db02a5927fc3fa772dc9cd4088bf0976c39b84bfe83a1f53ae12585785425c211b8cb8d43ee472f19442421f3add845dc7c71e1c8d625025e7ae8490fa5d588ea6951f5f81983a2e242b09d72858c49d1c7ecad1dceef147971926c021f287c0d65253feb1973a3c23e9d577095e0640e3902dae4d00bf2db7b423ecf6d8c83168ab4f2372c5166514cef1dbf027a240732d462f7547ad6c5b0fcc7842f82aa132befeb6f0385b3e014ca914cb857e6967744dee33ab022b88a296325f81f0f16c1cbe793292eba3e68fac6338e46302287794fd7be17d5838f15e272e98f208250c220666ca0b210f46c7453976b561c455f0b1c598bd49b8d7048e76b8e2db9b651fba2a2e050ef2db3b449ecbe712b0f25ade004dd0a76e4ce13dcabed42f61478c2f2b92a07af388456f7848aa66489bd1a39c8504f057d2714221c135a786d3d74a6656c187e703abdecf3eeba5a335f998b041f2196ee57d48b6579d75351299e91f6c87ac254535162215ffdf8ee06f2db0af53198cb9f922cd92d59852ec94993dc168ae1b9f0809e75247b6428f1a5a6ab73c01e3922c94db150d51f672ef99f125f8a5b885950eb3cd9865d3b24333efeadc221c369465d2b9808b0db6eb35e3e63fae4d1777a7d71ed8edb07e468dc67ade0c9d6e0d555cbcf342ffc2121ab9c14b667b05921ef812344dd643fccd9feef3e516b567864e7512f1fc4e4b88eec19e91536b00e301d1510a745820cbdc2e4184329812cccf092bfa93fd9fb826a4cd1f8b052840d87acdbe9f2c08714c66f2b24cf78474acd964ddd5825c20e963c51a5a7ba9cb37aa9258cae52df4b536befcda9375d7dfa77e060b5719710ecac520040863bca2a20690f76529cef4922a406b61eb91023e36c395e6a2748f812f93c34f88d0f81f8d3cb5c1ee4106ed72920687366ae439c737ac441baf02019a47e15761b92596c4d7c24db3cbb273eaca725dbc8f97bf6effb762cc17e571fc2c85e0b66ec178cccd44ff061ae3cff1c7034e5c4142e5c966f86e372d269b87226c6e31a249fbdfe1ce88728ce62367e81417f78711dcb626f262478710729f9334dd3d20e67353e09940f74fa25f6fcb6a97f83f2d354775f932fa899aeeefe73cdce625e2480d84b6bbc3a4180c1db155d1be09bb29f4a3da64ad53e9d34a61a2071bcb63afea49827059a9caf112d278d714b56b96326b6c83ea945925f6c388c785e6ffa62eb14f126fbae48d35dde55003e873feff51e2dd8918da386dc6ed94655e27d349a6d099c472f42e78fd6372d747f8da564274769bd9badf211994062cb6ad450cd0d06ab2df7b8a1c4f089c0060285794c62834727f9e9a30a1277f429750b65a42f1fdb74e5784bd79cff6413664d7674fd244ab49509cbc9823c4cc942907769c156776206eba14757002af51446399f42024f5fc2c8504a62265c3143575e0759df0d2eb4e553d425d4060d675874e9bb91b97594524e4191df39ea243045d0af38f185a1ff86e51c98511a21206c78155bebe3c3f193b0bbb59ddcffaf2b9460ecb923007353c73785452314487c781668cf91567d22496a1968423b256507e2b2c270355247b40d5384eda1e6906b4bc352cfaaa7b09deda81b27111b1a79f70daa3acfcbe2af2d679206289cabc73b6be5d0b2d62a258d795b78d10cc6d91113d477aa7f18312b11565c93b361e54462fe3b73742d0da49574a6460bb8115b35e71b7e73d39ca54a9d659e8b5d3e74ac95c316b78ddc9511d3d4dd4093a7655c4ffc3b096e90d45197da7b1dddfbfa1da7d428b8cfe5c4ac8b9a7473d1b6ba79bbc4f9753bfc62fc58fdef8b31d514d6b752c952ae89f4aed152eedc3b36c01c9dfb539cff0da3cf58721a443f3e7c234864eba89949c19580fdf2f5728eb139ad167dd971eb64c2f4a8725f02e6c558644ff15f33aa183196af79186a80a475669f6a48be3cfa0bebd3b8a406853dc81866379dd3e5da00b5930032e95bd4ce8867d23a0887308be171ddbbeefb1db8f502608b026f1001a37a94170d86ad6594cde92be2564c1fdf6521e7efc13ea1919572b9ff425d95cafb0970c34f53805311193dd63a4fc4d19ff0d952a3907304bf1ff53e0c9cefb9250a93511c9a9f50b81461df8d126307553914f5cf03ed6c7ebc59e414cb20a1bed42dcdd7afa159020fb6ef11010db4c8417fcb39b148696dc62d4d09b5fed814daf8a3bdec7b026ef3336a5a79ca72a43ee7584361ada10c03d1878aff2b5a5f8e4b126f860a214ddebfa906233abce02b5335bec9cb3d208c6dd49089db43ae18e6b0591fd2536942ea79ccc0fe733daa2a92391d0e6a1c5b562c9e435b566bbfdae26d6c5476b86e19995249605a4ae38fafa0c593daa125feb8c0eb0d796a341b65256bc62d2166a63fdb50949affb551622964f5400a9d395865573e378a22d0c8d9e18b604f3b7e94be0dd93fe6ad6094927076d70463101efa34223ce49e4bef6a24d9b998622e33b581edb8d086bfc4b211dbdc4245b8d1606f75dd8d5f199235574127f1abdeaef291785b233f7e825609920f3492766b319d528ee8d969bb59aac45fefd69f091018a0deacfa6cf56ecd4337d3980b9ccc25506982aad74c51472756e1f2a13dc63568df0e38da569028219b82a5fc443e0675ae86e85077d6eaf6c8f0fc59b77875725eb61ade73c0fb7c89f80d89fcef5f4b3dbe46c0441a65aab4576e5ad68f815b3e64cb6a2d95fb55d23b1e578e2b3b321e2024ec0e4b7ab3dea4aca670a37c45c7453198faa282764cb0f8ed796d2713f9f1ede3066bdd304c108e954d754414279d8567633bd3b94f33bbe16e87a3cb9e78753eaf763f2bcadf63ebabbb2980ecf98389877b62d739487b2fd59277ed7f381b5e60dbaced66db3cb0b9bbe66a8b01398897aa06ceea54eba649b36af431c6f1e9c53db316f4d1516b1cb4ded1ddc7b11358e822aa48eeba6718a9feb2ef263aad5e9009758b2dced86c17f04f9db70d17a42b2aebbd340469c4331b8317c1db18ff79b49f059866e3b8966360eb0ab5a9e990133eb44058b98444d3baaadcb9b44f0ce17e83af6fa7fefbc17bccd3b5e6a8f8999b1f9f3ca6c400ae00d0b308e949caefa7e7ca6689b4d49ab6a7948932f7f5601af4dd2b42a0941d5e521304aabdfe698459ce1ef642ec85c1c968c57d000d59eeab286bd06dd50d5a1e8ba9bad062dbb8c30f03378596e908e2bc76a18041fd1fc2f4467631b4b4f8c72e586d7814ca25554b22e14eca4f3a86972e0848f5437f39be883126800e3903e6770301dd462a01a8f3c9e10b54a4ae71fd74c0165d3717d4377c3bf9af8b2b4d8a0f8ac7cf8400cc0719772774bd349fe1df5f9f9731e334f7359332d8c9be25478789077f4c4b011802bcbb4d9d5a476a0d346208272b7b92630345ec66de56a685432fc001226a25ef5194125b44ed90bd602accd900da8b1598d1c6f1d17df91655b605a389459a664bd43d1379880b0c9a29ff6f7829bd4e0f54857e810e77cb2ed03807c6439fc5b2f0d3cd662d99e2a9b6c3532b035e145c45bd3cfd03d9369292dd7ce5ea16fb037bb79ddb450b2cee5bf24cb7ee00e9240e4351f620f1f5186c25d2340bf1cbafbbdc188c590dcdd7354dc23d9e59d442c9ec0543c0544dadea6977c743c8cd9a1c66b89166ed456da15031e13adec145d6fa845d3582f610d2c962f596fb309c63f3c6e6c9e646c73afbf44dc19570f03b10a1e3bc213b5382e2b8d90eb6a703bdad42ecb7b16e942b27652e6ea566badae49d18fd431060aedf03d27196330f96da7fe64459e196c94e31b63a6f5b4c6f1b896016c07d72625bef0307e9677547ff677dfd99632185d69a196953530565e575c7431340985ac814d36aa5badd8fdfe83d0f4b2da02736dc1021673879785ed9790b643d35a960616f73a2d264dee085150194b311629b9b591cb213ee29ca584bff8a1882add2034325b25d1b6d9c05dbfbf04184abdfc03463c52addff1c96310d43e70b5a269d85b797dd862baae4c6a247579f6feb67e718bd2d77997beac65fe3d22ecb94a5aaa809071d79ee8df27b8e621d8de0f13c58ff511e919989c7ce44359f2d4c93efe231c2ceaff457e0e8c8a84a24a668fe1f4aaee72e223c98dfb495e7f45956d1f05d98797e20eef3ae59d489b5af817f4fe26c1feb94babd5518c4e061352a9541d15e7313c01bf30feeebce8f198e15b3f570c3c03fb562539f323b59a492c17deb3a041749e68e728335258f748f992082dc065041c1d409ad98fa89f496a1eb14b0e9754a83d29a49d8292bdb79e6a3537ccfd0bcb506fad4dbf6e3c2f3c3e32244d2fbdcfdb57263e68dd5296560bbeb7f38d5a97f0dc50f365a5ecb087b55266be5bd9c4e8d62c8d597a874106aa4630b10dce915a48c8992260e7bbd605bd6d7395575409839c855a06514a4eeb79b215ab38d02a9e3ab24ad8c3e74cddf08025ce9cabb76a6f3dc95c3e40fdad6491dccaa74e99e4e454f17aec6696151ebb0ce0acaf8a93f6b41790d8ebc9de6b86f5196af8f2954f00be087bd8a7f67ed9a845de8a81c1cd72be110f487ae5d4ba487a0512a941d1c2557c7a5dfcff68fb96613e05e99fb883b765c242e06e012b842ed98264ea758bf2058de2bbbd589c3d036b05b51ff8a4077ce5d51a0eb0ead070c99306781c8e0b25a0442f3d0f45b15c56b6e59f29c0634730b4d0095e4e0923ad1f81820dadfda6a2ddde9af74e9f798e1c3272262ca94b3cce0a95321175177581c39bcaae43736b48356498ab43125675a19c7419890d3e489a6de5a57e663899ec9c3b4f2bb629115b3a784e0edfe4f4deefcbb82b5c0ab120219beb7a8f757966bdaab4230c57a2dc13dc20e4e38dc524a4b35d4a630da78500edfec2302bb0ce369a80eb1e74269022b3400e88aa79637be7a1e980fcbcc23ffdbff937dd38c9cc204552ce032033d9055554352e3919f8e8050d53e0c15977d25dc6db1bb9125cc8d80e77658e3fef308a15b56e5a1d35a1dc93aa3d892c7997d7ed72428d1af45e956f89c027513b70d5f2366d5e407efc3b3b88355fd541e006f2b61445d91965308cc32e6191099ff02fdc18353d39d7ddad637ad6ae5dc45d8788475bbc52e17bea11ea509cc4c12414356b226b328a77e2d2661a7a10af5fd01a4ec5868775f8f0bb3b1c9e21cfbe5c2c55a55883832b8eb126dadb6ac500dbcfe32393d5349567365c82e31a0ba0f3a44bb6016666d5151be15c6d6149942d3ff19562b2f537993d479065d7e385ddf4034b284d2941335d37ca2b56d4f262711b9ebbba28e5ffb1e7f1c4b44e3b6dbe04086df4fadfe812554608c57ae35c83d63d69ba035f09089d24ca948c6a6c94914bf96196cf5b2404a019994e9a17ea4be3b1d3785300776c6b863a0c7d23cbca500ff1c2dfc59460a559dc506f243ba67f3b8e0ffcc6ea994022f230010367e3527d1d139489e1ce9b65c36613bc75cca868664791da4e21fa803805fb2b1959480a8a2e202b8ec994921ba2a55ebb41a2bc5468efddcc0e13299610e301a53b92f85e52cd276f1838c37987be346e997cb56c968a51efa3ef8f2a240ecd0ab6ac94b6417efb995933f7188c356a3a08215417cf588c6e1bb92d0936901aa640c884375b7cff7e2a08ba3bfad048154717a2f5ee925033fcb113a4d042f6e0cd66b99a3b031ba3fc54e260cca4f9273ec48ee8c3b935973311bfc1562a35bc6fe3bdce7c89f1f7e3a3d58028d6b3c547c4ef185f49620f135de24d73036a0e4a7a482709b63583a9d401a3979aa1bf792f1cef6740102021dc686a0abcce252909c62faab322a89ac205096836c7d99fb54be1d960f81dda34e393da70cbad0dad438b95ccc70f6e00964ab04b4e417bae120ba459f6f0f793a18d8ec3735fc703424d0882c96d374f7c421c91f88208487f68c7f14732eebb042b09405522ccd472b5ac5ec1ed6b75f60371389d3353e1f6669c6e68be247759bdd5293871b351db5028bec1f06c8c22d4b9fcce380269e3ad57ef1853ba57f4925e8143d62af3c0d2eca5ec1fc09e5a479fd550b7497336139cdcb84570fbc37de28bc4fc13d4ae5b1abe9c272fa8f4349d2dc523d8cfe6ca2d99e8159549a95e54b708f3c2668cf1d809bf41e33ad0b67d063f20851c311119b2bc8afe86556a3734f4205559ec4931f16bce4bc7000737df1da1309edac5a8cf377aa9d12b01ea3a19f342163a1303c7895520911addc13ab2d8ef431b999ecc102622448a02291d85356fee0a504693a8b702d3c9dcf13f2c14da0645b2e6d25b2ed96fb63720b74ffc2e4bbf59bd76bc1de3713e32f55e5a1506957d94e6fc421ea81d3fe0ddc26b8ca7ae819170e79eb43bcf593a6ac2e8b0ffe3a1b2833d8bf4f28e8b886626487af489e7cd317edd40beed046be755673a0c78b318e9a855099fb2e9b635393e76f818defa3f26bda75e4f69a0f94eefea86475cc3c613c6c3a8205f6954f7e4a612a4826993a7b6df3e1bbb07dbdc60821a08ec3a7ecbffe6526ddddfd453f949aab3d395a568c93d6b838ac821f041fe58df3905b15ffc624a7fea7fed0ce9e2e13bf250da6216750a79a398cb1660519b70ed1ed8b6ad7bb25b970230295b436954149cf76d696bf445a0268c63e315a80d5c77dbb0b1963091695d34dd518ad127ceabdbc87e04e5a8c3ac0ae954fc233d7dac44b38c84b33583a1789937d17b10baf8ed5d99de3c04015a87ed4bcb9584112b7a460f3f63c22c76b2b9c8c01cd0225b8d5dd355c9e8c4d3848c40b9a43e7a0b31522fedbba1c66a846ae6247d1243c2a22a7a71e9c6e9e3b5d1b8220076e53458277205fbd5a87f2e6611030bd98c896583803f7f03449eb69eb9db031f92473b69de6170a885dc2cc491a58638b014ac84cf045586e95bb7a2c8a660018aaa0c402ae67c7215ff7b2fbf96bab910393fd29277f50b849383f51acf9f13da6fe0e622d609497c8fc921e99b2609a4fbc21d3f5f73aee34f11b49196fe3c4798bde00eaf9463816fe985adb6757e6489431aebd053756a676dd941c9c2052a9a3a9d9c09aca3a8e2bba0a14e7f2ccb7854ce9746cd269f4651e1bb378127b60226c6660ecd808b70e1fdc8da5560a48409eb4241de9c1f785b239114275b1ed11b3a4cc02872edbeed31b01fdcbf30bf1a4b369444e7e8df3a8291d6d40d240ec3de0ded2e0f68945714f21c62636f30ad6def7a8183b175eb72bf268aa2d726b57cbbff80ccb1543aed913c332b15a9fe36c125aac46fa53201b5d31f2813bea476e70ceb2de17630fd8efd9739a7b46244114aedb541e9f66f562b1d82d7a54838144d29c91e810231b411fc350f797dfcaea90b95c72b15f9db8f5f3d2b1a774d8645dd133285cfe168ab09231513381379722f7a7662177a0482f46bb8703099d4aaa9b863bbdebedbf5ee24f7258f457b0a5e65b6f36350db285c298444a5c3e462b3f6ac7e97d43c8282f242510aa9fdfbd7ded86855a7ac7b9a9a05851291ffc304fa537b9785a0286e72b9ce40b3261fef002a99d22361098e897d4a1df42e4e0e4973b19421cbe802ef6e9295d0987c8c23e59c47f35463be220efc88072c97b2dfa4612cd0cc0a0f74a86d64ce0397a5f511bc261c3d81e507e8238a7944bf40a7b0fdc30dac0a5c5f0ceebb9ad6eeca077f7be59206801220a8db7583e5dd5c03010025e2bec119614816e6c30b541d33dfc2e2d3b4e9787d2b06286d4c778e7520a98a38d6484c37e44efc43eaf0415f8bace296b130d8e2ab23c5cf0a58d1fa27f7ef6e4bde3e88e1fa3a44c92962ce2c6af4c9df859fb7efe4ec21ae6ee3f3737b72c8f7f580f70fd0b10e0a8ed2c423a558eb56d62516b215ab15dcec9f730bcc99e7ea717b1152f314e7bcea3833a32e0e5fd9aea22de4e163d9c74141fdcdd37e1ec26fd5a59e96786d9f5544a31504cd55cd9582417da03761c45542f802f0288ea5ff6f6ffc4ab1e39a54df5d338bc90b53948a26cbfcb84307fb49eee873c26fdad3c09853a875cd57589b9c715d61244fdea47111d30a176b76c175181b2fb30db5f6a492e8c0a9f940144081230b0ff1b3d5f86b58cc6b95377c577fc9b0280aa20482a615c24ba434b9ccfe2ccfb0ebe06f5016ce74717119834169c614f344f1b7794fe41cb4459864ca339a80e20c5ae8ad3ce90a5af7eb278f24771f4f7f2415fdf0f580572be9b28cc5153840841dd3fbd895446d380709a07a822dc982f270d1a05430911f0cb4e0f66a1be68fbed9d4aed39f64dcd388201b0ab4a239918327c34791830818d3bf83a64422eeb326f6973d44c2e7175db450f25fad932091d5c541b2aa896bb0a6592383fb9c2064cec33245d284c2aaaf2bf9e02bff54bf6e1015de8046a14404fb662941961afc7296c06517d92db8cd87a4400d54d1ec8af3c7dc26ac907b1fcf5bae44f6010679e0036d22349c4e47b3f9229fc9b021e5de94e15d395d569dd1faa8bbf882dcb52f5db62c7ce5c5e95d1984753b3ea44f44f51ac3445fca75c09368506597db9caf5af07175031945f3852c2505f3276969b581df561f743d40d1e9b40850bec6ccfa8e5c55408c63c3e06335cdb69770b5dc6c04d074e24a387076953736bd3a6f43cb5922f59dee4f2be2e8d57f078480852482569f1932059ba0941bd7ab48afa322da58f12405929cd3a58795e3de97661363d4deb95c7686d7fa7b2f3cb491d02c792f3b01651f85c1d5fd8c0d32d63f1b7788c5c907e1c232983d5cf61b7b9c27e662ea522ae3b1afc4d82a26e4eed0da37093cbe850e415d7025c7af6f4d1ae7019e80a3ccf12e5faaa76e721de1bdb9b7ee5c26b49b03450bcb1d2f3828b3276041daf05435e964cc22b779184532da2e796bf995d75af5ad8f5fe8b34b28c24f59c668a7248d4e76408b7da8de1b189d4d16f3383ad9399dd780eb0f033ffceba89b4be58bbf65104e9d442af77a71e5554419f1ad478d199426c48bda08f6e32dbc02041e5fb31d2a1e173e6a726f9c0ef3f02d2ec3c66498e21194db0579112df9ef0d4ba8c9dee72bb52886bfa406709442606fad0238549e8fb2bbd65b3fab3e3ba737111525c96c8b76b9e08e4a41b71876f8615a4ae970d5ab0442da393cc8c2ff105d64b66ba81949b814a01273204239b1fc7e38b4f24100c6987d3e070367f57b53e6d5e7ecc4f2337558a557172e147d57ad8827a8725327043bd3c3da2b83a840c2821f625635748725da08dd7b542bdaa196ed8ac01ca4547b2dca08de07eb9b15a962c9d827322485aaf4fb4ccc471d2ee535a470914f53fc4225fd8bd2f61b6d37b9b9dd9869312334416fd63a88d9b5461a939cd7633e2a07610fb932ec82c2d22b589266e516bfcf252782602331acb6a9e583567d4ba85d89fcd45070436f2685f25bf0a72a2bdb40a6d24ce8819ffdcc8fd5081538fade3cc9d9a336a96403370d0c7fcf4a683bd57a1c3683578a077e969b7f24e4ed97faa959f70165a58c2359127e6367fb8ede7a8407de694f76479f7a1ca0690d61322725f8f6889cbdff0ee02a37d51c1ac7b839becceca0b41221d2a5fe3a625a56e896a5782ed3f85549cc7f370fc24f9698b09f122fe6c6b424055baee3f21f39e21e9a6cbe4f4bb0bf212cc9d3fbd001ab4466b9938f28e6c57d8ec56934946161732f96e477fc23039fdd8f273b4a18d1860d8f355ffa2e75cbd37ec24955e0ed31fe2dc5b6d23d5c593d844d451cbd2d9d1e76fc023ca2d915439a614e9a511929dd946dbc44b7fe18b0bcb55d6d3904d120b533d245a6e8d1bad1fff1a8e7efa26e824068d5ca5857861a410ec7e817ce4a067c9c1090a2684d9156e1ecc0a033462b0c8d66634e60cff4e386a9ef0f00b907a85cfb81b1dc579ead83ff43c29cbe56beff4fd0ecc35652ea46fed42d53b3edcb26987e9a41ecd25358fd5f0f7b33a986bd60f86bf13cf0be815046a625bd1e2bf5ff973b23c78ee16dcd4d5dd038bbca7b43fe502205492fc3e08729e7992666423b3ed1fa1109561e571ef53ffa625ec8793e95c06fbd3773f0ef96a0a1b45cecef53c9f3f7d0b889e13155489ac5fd3f32041b3fd30c25567f2b0e346aedfdd13607c7cb5d2675dac32741f9b77c0ce9d8a1275a908b750abd2dc0ccbc1997226a27b30c7f462757bfb0a557eb6ddba1f8b75d5cd3aeec9f035d7d1ca415ec7f3c23bc30d12db14928b2c58c3591384087ff6d560220842be5c8f53788e1adf384d73fefd0155b2ffff00072e5dffda9cdb1721c2d48861522d068775893e014a3b0f70b3a874060ca504c1129406f949c4cbb42306579163abd0236b4b3f469dc0ac3c29c784ac87b985bddd38ce74fc7cfb5c6da141230af298e21e4317346a201dc2ca09f252606229b2be7cc326cd4b04fe24da760a97349b0ba390c36af098e90986bad07b5a9d66c9b239931db67837af25060a2459612b557968c360370bca0bca3655cd123c08e96636b2a2417e58a52fbc750f939f2d12c32b9c2f596f2fc01a2d5bf2a832af48ac20d74e652a20ed9a8b139723089cb0d8ab5970aa55bb0225b1e00ab6cf4e5879807d2efb62bbf5b620a4a8a2a60488e2c0062851adc4447c6885ac70c5aef6b06a63f68a7d4beba0d0cdddf40607f84cf434c41cc9d40f6c6d12732046e9f729a80d48559e63e19a5696949751dcd631817927b1232c588708f02043d8effbb05a4006d35e8ccd2d04eb97273fcb2f1156ecc556b43c9fdf0cad4f05f10495fee68ab91a10c351a0c41b58e4f9b2517314add101be2ce60d767cb0f0d540bedb0fb704de49f9568c1b5cb3315a832d4e445b7762e2577077e2b2dcf1c00ea2eebb5d29f11a92779db5454e5ac9c30448129c2a10ebca5578a74ab617c4adb0e9d4519c8e1ce739c239527c147c0d6831f99902222bcae55d886258ae74b206170c30aac8ddc41a5ac863b88ba48d8550a87e26c6934bd95a8cbc9797f784237a15d82bdb98ea672afd3dadf0b186c75751ff49aa967955df0a3e1303a3dfef0118eb4a4fe88eea235807ced1b1ccc2214ace3947b933befec872d4e70b521485a65356233ed86143a8cf7ebe6d4b758c972678614c8b58cded0780e1ffc09f8292b8a6683365cd167303cdf6ed7ed40d8843e9501347bddfa64e16539ee3fde04e0c930963c687b15af8b729a0f8abdbfde78fe1c6631b5691bd43f17dc43d25660075a966ff3019336709847fdfcbc069d759df478d4a1d5f7041168e45a8dcbc8cbdd0b8096975cfebbd91416c87f9c05cfc9e05a8ad4fbba345812d97a632f66b19d7b3505a8c8e84fdb3b96c83b1e9c3e0159549e5df23398463c2c4f8ec559ca53da13514565516a42d5bc2d4fc32dd2053b53d52f74938bfdcf9263c48e8e2336bd18db5b0f5eb590800e26e666e80936b060168b28d4b6749b7eec16e8d459ffcff20677ff62d3c54e158e26d2a04e92a8848cf24553f4c04a69eb583c390301bdd2b26be516d1584fb3f6b8e5ec6d71b8e7958cf5186dd7d528f937cafd0128b70de5e54041f26e8efcb4fa992a858b9362fbef142b7facaa96cef42f2dbd7632fdf56b03a1b7d89d2bf8eed2c8ff3da9bb73762660c540dc1b58ad84cc70ca509c667757c1ee0e739f7dd961ae41baee295dbd494e25a57d03dbb77f36ede18699f09c77847445c54e0f81d79149dce09ffd1bcf93cc2ed5ead21eab4f1cd36176badfafb9ad621bdfb3eb43e101750d460573172418f08b9ffaf8fc83275f8439e67ba26809447495ea22422ce8aca78d78e80e1bab975e90300d02a585bd273a36ae23545740c0b32e6732bc6f6bbcbb6245a35955cbf9bddf9efec4fd942ef5351a309991d6858362dda677503d17403c1bb666476b77d85ca85c2450ea96a8239b3211032c2b73ad8ef34ddbfe65efa490980df398bf1462a05642fe4550173ae97f3a2251a34a5b42778036ed7fa88f6fa935eeebf233ff31d134224094b5e6352572ba721c0f07af0e0705f641dd2304b9c5f60bbe2e507e7aa7a9b4c47f1bdfa45ec980bfe299d1705b1e1ce38ac484e6a06e2b9e77f890f2b164f5f16cc300e4d089911f8716547c0d73af27223f6dd2e98db539ba95e909a19c1a2fb046681e8081af2137e64bac0f8b5f0a0f4ab42a2ffebf4c1d1099873cb44bcf1a039dc6c580be9d11a307e94acbfc58112ba04804999e6e6bdcfaa873763dc2c1f84ea49c711e5b5a271dfdb90124fa92440cfdd2991d0ce042e3170aa4fde43f1b4cb350b50fb0f8844d97ec7f39e6d04f0cedf7579d0b490a1ee2c3a6c315df93c6b3f3bbf5b37d1e4a1e4747fa9d041a03670a6508b9722bd1a873ddebea812c9abde5317483197adae3541059fd09eaed3ea5b5eda65ce8f162dcd323da4864ccfd7b447cfab8867c9a1db7485c19132dc20d6b3f56c7a5bf83f4b13a42398dbe52ea17f4faa65e7107d73dae252c5ff60b47d3c3e04649b6739d909b2dbfc554d77c2c6004084fcfec73eeb8aac98780d8e5a5e0915995a83a5df55b6385ae18b82a5250a3b4fafcd5ff6a1e19d9d301f1b9c2a10c77fdacc2986d010a0ce330fd1385ee3b0c3cfd5a558eb24331c5fbf14141e644c4c8950b740e119d76bae9a2e513405f3f2d3c0e5a4628f248d2128cdb9710b828c4887933e82642eb3476e9326462a918106a823201e667b218e3f6224fba6dc9f03aa18f8548c3c214670bad574a2b42a057b44958b4379399692c0159dc3e2389671aba9c601689fcae3dbdddc7a4e3c8f47b4d05c3146ecb8d914ec47b948df027d69d144863b102b76a3a35e7c4816a43cc72284632a86857125308a399c70f9d780b1814a85c71cadc7efb64227aff18213e140a62003ee70100cb1ef4f9aad5bf6d2c8e08c0eafff9f6c27ee51119344ebe53bd15e98694716cd78d4e161fde3dd7e637540a11524b62baf3182d91e7eef0cb4d1092be70c6c654d17c99de792ac460dff1530435c9620d3bfb5b905736db6ba1dabd68fed8beb1abfd279529c5a7a785981e053cb11a4f65758f740dfd94980a22568595b1d19ae6496f421547fb4e27b4ccbc71dbdf143f643eb504046aeb07fd8e368ef59cda4a8b6639e786f4eb93dd37b8d0eb5a924e8a2858bcf1dd2df2156ff4425c788ee46b3ed2af3aae64d5b2073dc9299504ac7b5c4ba07d126068e96a6d85938f2dce92c0e4c8994e19aac2da6dfb63fcd469dfd400bd057200df0d37645b84f54c41e9d15fe3783e617c015fe2f75d1edb4b150a14aa69bb86bbe504286fe1f1c2c0eafa55b33ba5f9e4bd9d61e13f2e0f0c4ee257662ececd2041f91e143245d8fd9973894c4b9fb5d257781d0cb04ba60b9bf1e996d9b3ceaa7a01e2c2b7e4cadc007973280a82fe1b679c126d4e2f34ced8572fb85ba2e1cb4e056db2a4ec469708f63b38e49b0211cc9507b0125e848c7f319a06ac4cb720916dde7d404c33d1d9f906b0112faac60855b2a9da4582b3742a31308a72084f697098048bfeb374b97e4be6d74ccd88ce801ed2efee7962d1cb08a0040be6e944d658a371c028d65bd7da64867aa0775b4d80348b09e124c717550a9dd3be6f52830f8297a72b887484887bc7f5afd7c7c693199e769b24f083d85d7bfaf4f7b8fdce7e83ac92c1a258b58f3b76743c12faf84dd28984ff877e62c16e538eedda88f973b7b3a9424805b1a0f1da29d58a49cf363d05e516e83608d1faa761fc46ea52760a91ba177a5279c4a2e9b8e9f8895c541ce550569b532ddb3e20fa8f0fe2c2dea87656e103e2b93fcab2cecbf0bf1cd771df987977bf541271c2c105f226614f17537705786fe0077f2ef83e6c27d769433283d0ef2d61e41abfb0fdf334b53b84853f41ca605eafcc1c3cfd8ccfa999c0da8d8ba0418b346002b0c0191046c3b9ea03275eefd5b48824bbadcf99e2e458ea1f6208b90084b7d73a2658871bf4753a6edd56375c45aa56e7324ca8fc0c7981f44e18827321eb40b46c248a42f0eb315a317a5519791cad85430696bbcdbb29137cdcb5cda758230ec2cac649256093e4c3cf2494539a878d6d868c3899eff4d5989b6bf2129fca5c880dbabf3be7b98ae1dd06782188f0093f2e29c7574140a1c002577cd99742d1aeead28a8b0713d3c65888ddcad90695cbed4ec6c2c80644527febdc5a44112070759be2ff55d6a846f8feda119ee6c6097fb2387f0db5be6d9345fe4b303a189db7d03e814700334fdab8f17ee7a095d91369f60cde4d4e3c8af3e13cb57ac6cf6dfc28ee98e0ca6d396ceff5f0c04e5f8743645da6b160fc4ced0baaad906584d1b79940e013104afaadb7091e263b4e785b12a4ce24fcedd099f8061450aed757edc3e19533ff7272739fbf036f1145fb14b7bfde50d552b75c755e75815f3b1c6509bc25ea8e76e7b3f20e7bfbf529adf36b0347ac56c23ca7cd59bcf0894a4db71416dd104cefe0799184c079e408b3716bcb38750cdddf582f3c172c7a8c2d08ce5b0338a93a9c8c7ea5fe6a5ccb28984455ad66905b511b3fa52c3bc15d06226bbd53e9b02a0629dd13e57b1a4c7908cb1e4f130f30c1a7ddbc2325437fcdf73a7694038475724c2f20b11e0eadc0d2ffe9152aacc3fad61ca8f39805e6fe9df43596787ff6d9f31654c1115fafa09e26cbab13eb8f39a752eb7db365d5bc589b0361952dcf2a6ba872c4a783a5c130dfda0a939f55a12e3df6954ee22e108c33698d987d1aea682a7a92af305c0208db6099f4b9420cc68b699b326695d3994bbb8e0b9d6547a7ef6d99ab69c85e133c45e7a08c003a3d6673a31df6feea43602c4399d37b925fcd1cc53b32981a5435e6ee5699563ac92b64fdb1dca441a98be78248e7472111b59bd2f22d7bcb3f6840b9a488c3d0816f0220d6a3a1158dc770a810ab385b94f53912cfff297dbf88a1bcde76f604e70bb39cf539fa104da3a6d4033be000ede66de5f8723f647ea6fdae86ae7d5b4c237e8d8eaef7ebe9c1c752e4f97a31f659fef08bfab7020e10a6098588ec4c9c06a986d42481e5fe08c73ee4996fb1453448542edbfbb50e504b09d1e9d4ce135ff20b9f705f7d899783cae2d1a92ce6cff48931ceab1e273a3de0a8c2121267e53c59fa3f48f326e3cbde6afc91013475330c19d7eb7b3fc62143e56c7df910dd8b82f6a8a55003a678f7ca5637d96d16147d9812068f264617a6f943069f0e7bd3f036f344b678a4c31b6891fefb1c8029e521f56c0bd839859b742debb7727f5c6eb5cb3e9222267cec8f89d5f2b412a5190942d3573a8e8f631c1a8136c797b8d2fdf87bc40788bc12f356979ff239feacb3ef16bb511f3f54d54c84fbe9ffab87c276f904437ea3a9ea70586b9aa01919e41ec83f973c44c61a46de190f0b6ef756bef4430bee2b31d5692dd87e421c2f4023f2475784f12583deac415d4cdd16563f4927a9fa51ad772f979e537a69135aec3bf9b3cb7b1af0e69474649c4eb37cd7b5a5820a7df17ccb08f63d901a6cbb402c1f5d0694cf8ed369b8b6165fc4ee95149dcbde14e5f5b0a4ed857bb6d0b47379000b80a55c5119b7c8dc2f0a731feddec58a4e8dea3b91429fa0f0347a7dd63a5f26c2dad4d963f69022499f24fd3fe802137ca5f8ba40b4f39b599937fb27618b3dadfcffafd292c8bd7521c5536f70d3e8ec233047d582b7bd206f3a1467e6110e204d3cda943c0593af2b792796aa7e7f2bdfb88cc221936401f1db8dbed3a46d97e49d06272cba1459a1713f068dea963ab615bba70a74db0db16fcf8f1d72e072a50bed6403497007b68ca748cb8d6149fea2d95d710fa247fbb04e8d4e00f29a74fb61317940d09e0172fe324be92e9c4fa0750bcc8f7750dd4623c73e7cfeff53c020f0388a1138f5b3b9d74f11e002375aa00244036ce11371445c045857fdf62fd201122b36176f77a09fdc02e252ca15e6014443f2fb5aa479b5a98bbf030feb08434fd5e4fab9a510edb46085c2240e44e84979aeb2483c999304781d0c53601dbbfb511cab86d179a3367e55b49fc264cdcaa832a4937b6de34ce4a9f623f2ba76dc847d23dac021fb09f8c0de99b7eff06936168cb65bdcd22b8fd525fa6e4d3f8198affdb6316110b9a601020a280b411a293f46c04550e537d01d12121a32945a9bdfa75b27769acd335388647d5d65c434f72adb3b90ba0b80879685c73da172e6bffbd1d9c2556ec150a9ff414795cfd7d59c1707e745a64619a649b4cfb5fa6b96214debcc5e06db8421ca86ed3e8bac476d81fbbbb4d11fff9a42ffe020f147506b636dcd0071fe14df0f2babd1ebe1f67b4a89e99d4491e50d013ab4d81eda0e73a35734d463304cf3074aa36d0dec8218f9f4687fd9254ca2f33479b7602c49264728f4ac3e9881fc9fef1e084f66f6b51b44346bfbd1c870928b1909ad751a83caec1594e6dc3c6fcd2b1810a9c276119621f573d7a731ecb7ad2369dba535f8361bf0e6c074704ba95d8849590caf110998c841c5fe41604aca777db10ba006e9e028272f8814bbcefed7571800861945caa55e7d67b6b309330a497a28c6ab5da04d3b586acc27efe838941f9bac7a88fe49c82a56e1053dc10f1c1e4868ef47ceaa1c416f5c3fe008a14d1b79d8fc2698ceab1f7eb6760ae17f650838bf156479693b45e7b5d4eeadd1074af07fadb4d3717ac2e7bca78c4fc302aaec02d97f924d07e061dd2f6c3c59cf76ccc99dbfd4fbebfd97a06f383607d9aea146f4dc4c2876c474e1a2b0a6d7b22b7ffd64a640bbe0790d2db36d983a45e6b62fb8d67a567935c395fca6b1d91c58eef6b5c6e1fba2f9cad7d67e53bcb3b3165a4d716b72762d6277f3298ad6a5cf04ae842b02f9a48ac2016dec65cff27763e54527c27003d23c98ee2048cb33df91531d7cde008adf7f042740636b002254e8a5d75a92d2adf4151edd4debf5b52befe8ee1e8f4f58c4f919e73c231dd5fc1d76e629d728ebc0fc33b4c6d0395025d5ac35b4011ffb93f085779dc3cd35653604024c992f917b6939f786a9a940af5254714cc55fbbf8ba0d7351f6d73f1635f4f2088d80289d7a5b5fac3c1426c48924d88767d99459fc624df1bc2b70cb6a2aae68e8f3502d98d98184b5cc57fafa9a07eb38638395bd9673e32218e4fdd0a1153778a0d526b176384e97010b838c6278cd6352c15fbb0194caad2f0d7a10e60434b9d031760c2828016a706393918be327a9111b86f11fd36a4018f426636523d2d21aa78ff3fda4beccf29e16023599472633343283be95f133d05cfeaa08d9d0f74d937acf7b3ff905bdba8563f7ff46bbdfeb01d5d641440fca5a29e7d022a2477ece70383844921e02c79dc160e82627087151a1c0e123b15d26b0e9599214f0e0d63d1317daaee9940dc7b2a512396941cbba011da1c4544e1e7e5bf322372a490cb1786ee26aee43929c74c683e7a04ed8c90491a326ca99a0d686af385d4a464ac34b77a8f27c3bd0d4d26feb766dfbb8196c3592287493dde3718e5fc47018b0a982e18ce105c039776b34ea27c09a5f8c9f6069c478c181fcadde39fe9afa679d90be4e0037a741caac17d5646a7f1395948eef051bdb47ddee4dcb38827988501a0c46ce909dead37763df217a7fc8d00988420298e8be0ecea5ccccde72903b7f4db11c59d30e7c5c8c4731a36279c22b501f1449150e689c16e2036f0cc19a042caeb8becd04b300316ee3847dd03bde44a21d7bfc9d563cfc92cd8466518af77c0e7904f788b0a48958fdc13aa61205eadfd9bf537809f8c50fdaf74266743b762da1d46a5524608ef7481945c3247cf68e191724fd80a07dfb7e2058028ffd87a7f03f19b88cb8c4e82b3083c46e3d9096f9a5bc03fd1626942020c1a5bf2e57acd4597f61c2d71e4bcef744cb6bd8f9489d7384fcd1b526a1edb9de18e449ccf468d23c6c60624bdde3b1fa38dd1fa7e580d747d0d4ea0a1d3bf51257fd6f10233b1a24257fa6ae71e0312cb989d977be071e0c1ff5daa228496c6c1236d89aee981c60b82b5dbea67ec9f390d86d713fb193051521ce2b283261d5e0bd8403e99f566f93ce3628e76ebd7d2fac29e12b7a27c761e204e780c457bb8102da38233fdfc7b196ebfee9ac3127eb944c5be6bcdc17ba76f07f86a898802bda377136a92258d390305e515906bcac42b99e508845e22deedba643b22f34de9d23082e4022530c2571cbd4cab42a3b7ed59b56d2298abaa0a2a3d923eeb0871137a5c1a186082ed4c403c4d7bb8145a05bb67d0f016713f32ab3a2a3fa78a0793b4fe7a7ee25b1eb180f75b3f3620f31767bc8072650df6fda98ff18ce0af82327036cdb9d87f970640fa86f7e6a050ce7b438f8b751479371f76908352872ca3f5b4f007155db86ab7bc76e43840373c057823871a5c3c55210ec3573f0eee56bd516bce8e5ee172726af7ea5f7a2c958caa8ab78cd48535528ca042ebfc64bff71c6c92decb6196cf78f45bd2b2cc1988bb49c0e7f088836eb8298421a3360806422e06c3391187838de03ecb581f9de5a5bb99ac9f5660c2bbb800acd431f100bae5699f8a76ac15b5c341cb1b9bbd85d906053ed3a39faf3f2c56dfe511ad2fce9f59f77e9ecf60e969df1430ccf1bb657376669aa8262adce7460eb8f4b1946ac124f8d503e815e86b212da3ced4d0f36b73d0c899c13fd6034213d6d5385f400df7edfd2ae436590ca162c00eb38191b3008c2f7f128a2e46a1caa0a0c178b85b6eca54d33a9c45230f428501347f4b9a048d656812bcffbeee948bab51fab56eb3a5f8df0b73dd91981f26c721ee973a702d2042fc1c2d2225d868ae4ab2288bcf37285a9ab98ef8f191a2e9bbe690099aa71bce5e036138677ec685a8a46fc2c35f332ff3c26ba9b2f469a9b6f5fe43739c937f815f5b011c725a552c868b15da9ffb8ba6b7e110ece50f8a049b3302298f4b3e3e319061b6277fdb7b4421dcc39d04f89312bf0e98c81011cccdb3fc50692752f00f1675b011c007847a4c195ca31492eb238af98d45a6e87773b24bf9f553f91ea2e4e16b2a76267efd41a84f206510b18e27462bc7abd8a3eb5aabd165ff6a182963c3b96e7433cf53c26a802563663fcbd00dc2fc9247c583eb0e2ccba148c8f54609c65fc42599355ce3b3e9ff3186a55aec2c586835d202a08cc1a1d5bfb2ebc163038172463e147fe500469152fcbccbf09c91e7e2d5206cecff42c0de230501177edf6ae446925d457b39424b8d03439ad324a09656098663236e0add50d1fa4fad8465f71105a0b1cf65135319422e1b80cf2932acdec04687ca685b5ff08dd47303e38379f7e620dd916b347a95d05c64156989eb33b7bd675eb4db0498ef2882f038d21ba81d7ddc26385e61eb187d3bbde3add692c5c0c51593f3b6136a84b565aeca4a8a9c7652b29dc8cd87c8c0185325a056f7d4eb3d40b0fb323e6b2f607ea808bbc41ba9da67388f4a83e9331ba633195f53f5ef6913853d7a0be324a1dde676ecb1757cd69cec62a1489572df48135ec10ac8add327b1e13dfff1101226d086ee5e396b2d4b47352e180b540e125c4f5f", + "0xc8926746567ca6cede12189315a54fc3e17ace1626e5257b1d4e0f2a51812d1856c1ab5c2322444a3c24568fc99bc6ca09729b8fc86baadd38df41495970072b7f3056ad71b6c9e27227261ec25697007a6bb196310786adfb99eee89c95ee8be7a6fc6be3c1813212ffc4258b30c677faffcefc7f44874feae405b2b0e5f9fb974fe6eaae63a089afa29d06630e8887f38eeb2d9f9c5099cb0704fd1e57e2497b62063d1b10606f643bad05bb827d4ff4ee636dd69af24c29902a6fe2acbd79e35c73a0089f87294e509ecfbcbf3ffa2eaedc5b3c5334d6d4c5d1eaec1058ac02ca5cee68aa33100d036d2ebe59a968f7e2fb913c2904535f2fc477a17e366d729bc12bbe3cfd94485ca6b3d2d984134b8c5c9d16e6cae5a126d6b45afd8b25af1169bca6cfd7ed26a894893a208b3c46825d375d1f9bad357d2b98e3aaab319734e0a74d9a4045d5e2ead5eb96dbfaabf6ad1f7aed7685fa30ddbffe95c17df0db7dd6f42f992a0635c1181234584a6085b99e27f225d99330f158de68dc9de247af2a706ec7be6f80f4ba8c4c8f08f0d45556f4ae5573e72fd6aeace3910c79490fe1adbc74c248fc3a8f6c361db507c753b1c52bfe25a28cd5c90627c89a24fb09b02699863ccfe17f6179bbafdefa38d6f451ed4493b3422d1f7bce6d2239090fb66f78aae8c42858d0ad5b15613d5490b0a53b582accf0c33910db2a3d6f8a9463acf30effed53a294b75f02fcea6e4d0da0b8fca0e5eca86ebe6d541762686c341747a42f934da30b7abb7555417c64437546c7cfba68d224f151ad7612582e3a7d207edc035432508cc0e72d220df9542b3e3ddc48a6cbf30a58bdb36462b82fc2bd30b80ff6c56fb8a0ac6795e02b0220f65409543c45e1de7fc9b39ffc070c585b43ee8b1f74507cc0348642049dcf8298105ce46ab95136f3b6e8f1b0edd0ccf211e5d03537ad8cd91475f984e1e1d5492d7fc37f96d44dd062fbe8565da03a49b8793b440a264dedffb92cafce62709f20f6014ba1d055c4380cfadb5cf9d34de04faf38aec15a071db070dfbc1fff65debc71a38139f2751265fd9bd35b5ec88d700f302a6703d0620e00e3231202b820e72afbaae3bdbfa90eaf49bc78b55741fcc5d258c5c9eee2c53ae8328e4d642caf070413c0c2ba27fb2f677b8243c00c263ec114d7e43c2f381fff45e586a44ba92764684502999a5e824e5c278d8a72066c10d6b2bdc742e1d7295b64ab23797e6d7abb90f24f5c5d0fca763ea6f12a1643d6d29c74a398d32bfde8b88954f5a50133cb53fa12b46f233d7f35b921284a3cc6f4625b8d5ad00ad1b8f04518c012cdeb677bf89d3cb96e5c43dc82c673dbd4dd35e2785ed1580481a67bd7b430af00699e94ba4fd9198476d540d5e9bfbe0e213635074e81d1d2bc67d08a1b26ce8fd99c5b871444ed5e4ca8ed1622c5b0ed661c74f6039cb2cce8bc977e7f896eafeb838b97207e45d6791d01c010c885fb35141e687bb2cc718ead8b263c1d4b5cf195fa967aadeb2e6e4844df30e01bc5b0fa3c33b5d0dbe35cb28acb0bd235d614764a2556319a8af4e79c95f5d9e85d920c14613a6dfe68b9eeb8068e1c2b1f9d69f8593ef7b1714cd8f49838ce9dd73aa7b2b36ed628eadfdbeb4a1e05df7e42cd653a105b2450d27ff7b2f8c8c3cccb6e1419b307597893070758faeb42fe92308546c51b6af737f8d340681986da546b903b581022c35ec862c8b83ba8ef66c934eb0d2f271a4df688b44b25182110ef38f3607621a26409d0870f84b1646531f310bc7d8ad157b21d14a8d945c7ae5776d1143f148ec08f4e53eab638b4989f878dfdd28f18fd529178c112c776b5fc969662878c26775b1541d181aefa12106bae66880950b99c388f6995dfd9e8dc46b912d6bbadf6051f389ffd3b95a20b3cb4ccb8bebce8e7b71b9e73ae22cadce1e5c991618727400674882e1da896014b54f003fa05609fc57077f6508723a85b79db44b0c00cd2a003710e409b93655936f82c9cb794c967f96667a6c0a4880806ec98e785f4bd714b931b31987703fa77bb1d25c1555e6db3c552138b8fc3ead5633474a83869bd8276a5c30f4f3b9d27dc182df9136b7ab1b21d1c297450485fb1e3a1208fecc4353552b132591738ccb1247796ba471c96410910defdfa34d35bb84f87eaed6fc21396a17a1c6ea1dd03f91cb4175e011ef9fc4674cf416d93e507a19aeaa576dd6617a7208b82344894f953d4d4459e95a1b2a5b96f8456b77e7459bddcf2ef0fca3846a537d404ed7907f259ff36405e631d35fc4552398887696d744c9b0132a643854a9911f3214b33280b2115cb6d35269b94a6ecd206e3b553eb232253f607ed5b99605e3f2c189ae098e89427cd9b172c59ef4d2b63192ed06f5ccecd60c62e15dadb5fc9cb35f7cb0e623eb41cb6521d29b44735864a8042f33ec82646f9aedb9e6bc10aaed7b47263bf4de20a9e271b64fb891e89f0a3ff8c346eaad4bf2fb6390723fdfb7a858cedb0b485de15eb24718aa55d3c728fdff52643c20957c1ae3fd1a388ca20d078ea4dbe45f186a31b37425b7c9f851df40c7118b93b80b0bc0ebc7acca65879f1fa8c170a3050e7e0a48bca546b624c51535f55538f376b4e443e4f8f121bd3f89f4c3e369e64c63c2ad450f88ac440ea70407eeb82bad5fd451744690274bd92c4eb9803d039d9023d1a2cbf9bbeb6c9ad055de563dec90eb623e6c55efd41103372b8506f06cf17d68932106f5cca5779736d74d6b6bad4054271b0832934941d4987caba50150af32831488f1542f2e5e16ee4528cb601de461d79c15da0fe9783666a01cd72e91494c3c8b30fc5d7278d3dcda422412eb70165a6dedc139c17b77be22b8cafeac0cab69e4c31a7491a7655dd6a4fc09e45517951918107cdfb63b1b7317aa42dfe0b4960fb0335d3bdd2a03099e07468054852010849f75802ee2b77a02c4cadddc2d8db1867a9d8b00e747bf8d2399db460105463adf047d12435ab1b01affaec82d4ef2c1237ebba5bd9aba2d88312d7c29f4a36d0a1ec6f5ce0f1d78bc4e4c214fe6c77e7cfe245d28d05882f5bad3497cfd60b753340c915e9dd1e56a498779252346b169469e0215227edc749da576c4f60decb77d02f378e18ccec9f16299429da2e0e1378bcd170dae8ba77fd0fab44519f0b3848d5d46b91d53e2012796c5df81c40c83c30119c07e5107034ee1a6a5fb3dcaa0853899567bd4b60730b758e0143b27d0c361885ae24d847b8cc76eb3274935d62265e739d1e225fbb0a6bd3d7e6617e44eb17cf47398b218c44116f40ac3a1abb2c442397262ea37ba1db68a1fb75c27a12bb3f8b8ac746e93589ff271e6e94552c1c61d916d8a8ec83a03156ad417ff392364f2ed5535207428ec7aefd04e77e4c4f377dc472166f636c1a49da16c516f4e979d1a776247453b5d175738c2c9d99f7f9521a7a0f6d7d67b28095e8148ce68ff5fce59c9b2c125d3ee41c92bcf983984ebd952141a20cdc8a0aa5bd17b5bafeabbf47504b0c6fa2a15788bed7285d6742e3c632824ad1f22f9505f3e17be7789d3dd87dabf71d657b91bcbfcc9fe123b1f6d43b2018937fcc84624e6ccc878d0c3d780c7a59125cfb84b103e061ab807ef2f90d341c99ddca66a0e02c9cd888158c5ac348290b3a831cd44280abb91b6462018c97fc32dc042155b8f915bb7493ea868071b605e2984a85da912af106567ccec856ec2dbb54794d649f5b38a974fe58bfeadfc5ab3abe98f7daa19be0bf11d675b6dc6137999a0446d551f8ece0baff6eb63651b8c7ded790dacce37b1ca5a3a1294627a77e0c2fb47916ca25d38cff18e5c57556ee477d3194f85819aa3e52c6d0b9da269f2b33ed3f141e990892af5767e0407752dabc931a0d702f3d7115285c255ed5cb8facd939228dbc6719bc9c27628432de99380be3b202c3735eb1836b54972091f6e89ee7c04f9640aea5472647595beefe8abf2bd6ca4fcb6f000dc5c3ed2148386a01b751c3ad08fa3c0c92589a24cd13bfb6fe09e8405be871bdfd4bce0a478667971c19eb8b74da2ba916f566d52cb4d7af9b3361f9356983f26c822ca102b14ccbb0f6edcb10246deedba6a08d948846cd52769d6cb2004d5c85f0fbcb327d36aefa0193bbbcabd013ef4e701af1e3750f1a8fe7462063f93bed6ab42f4c1f789ad2a5cc8ba85b7a5f102bc1dabb7d429f67aef1a5a87945f2efe2d5dae0cc19a686672911b94a611c1fe0c0b3691f7ce81a664d615d8a01de22065f02baf353e52a4260147307d1e09d00631514c068847e70f4e2b8da938a57e157cebc0e157dbf61cd32d089ea24093ce00e8e353ff4acecc38f10d4762e35854536ec4082851615ec4e9f892029fa8031735796ad2be22bfabfbb5fb679135cb8ed19d770bca300e0905249b92c50e1970d20a454eb8352bb47f16675b4f079bf601891ea07a0f7f0f65c3f52f4d9f414e6cc1a47ebeade918f9d206a2d9db071c07f1bafc82a640476816a5ba039ccef95318c8fd5369fe63cb31d5df8759b671f5873b0fc52d22caab58796d3fc4234acef84aa10b7be8b6ab8d2acfc48273d9e3a059631320519177ad29c2923a532222e13065ab25a347192b3ca533c5414a8bb39394783f8a2f8c97258fd8c29fbdf1a6c8b30977df93fd2d4baf7d210133f30c92a025f5441a3043e8a7f0cb8e75068590e0fdf76d744036c98c16816e15820a12a6e0824947472fa451d13cf1108394cdf762e452de5be7610b8bfa02d4bf85db110f313dc5347e771363522d8742b6f3cca7b2f40868646e5ad78b32748cb5b68eb6c1681c244e54a24feb760a777d5dbf646b9b725a6ad6c30916104eb3829af4e96118c7c5d3edf8fcee20f2551f164f02bd51f82a10f0ec640347dd4c7b7187c91242ba9fcb49418bf6d10cdfecff5fa599868d3eda5ca7ccf5f505747fdea181425309bd235a04ac1bbd3cc5a369cc5b9b86613fadfb0c83feebe340ada9f70c4319321494190e578648ba4ac9ce054ccce51d6c7e367b2e5680c690c0066870c99ec6701e4c272870fae3b0f3539bd8cab45b396daa85545d302085647a1fc4cdff966fddfeb2b44ec7905d59b93adde11c33c64e3c0afd2fa6f292d5468bd99621ee5567a92311a296a359c8dd0c953ca2e89423b12be6c38a2e5e8b305876af5e006a63b9211073bc403050343d551574f4bc76993ecadc1f261779d7639e9cc696f79d39c9df39a0e023c5e35ade386d27a15064cd46b9138ede852eff9c74a08f18139b211e1db947fcaea6313bfbec78c43f7dc4900c0502c92b95525c97daecd5319ad8a24a2e5fd5ecc7e484926213c20e9f3bb35dd9c56971ec31263af7187df8fb9cc2a1153b57f9daa76a4c13ae2970cd8e1f07e8082f24509a629f80c410444d4597eba7629596bffeb0f284d5f3c21e4b9f1c0e70147d228b2e79f5daedded52d809f6a9cd1a700b2525bffb92b13305d845e3bcce13ccd72b9201e694af725cc9d0d08cb993e94fa7bb4bc76400733c04468e7207178f012c7fc64edc90d56c8f986c806d01aebdab7d389a5c12fd1f2939847d7bf4ac45c28a8fdd2e385fd2c43bc02ea742ad419977293fcbd7885892f6b1d74771647597138e032a8c8932e2a1250146e060354f2c53e882da62247b21a17c83d6241760f921d11ed96d04359507a73f9e49ea3ff892a71f3f47d4ecd747eefb4c35e71e074d7e62ceae1326f14e93a486fd265bcd75f6df76424fedee12b1014400533773afe32ea519ffcfe2e37eb4a0f5a1c89131300d24e88ffd15d1d04435b3fd4f5fcc00131384bbe535b5e202c63e8772ab1415f4f2dd1fe87bd657c157db3d05828875f3e9be0fe9e73c7eab476df95f82164a6d69eea4dfce49d6bb13689d6b6430099b87cf16b17b66d59655b78cdf0303d7f5ee9551edb10ce5cd49045b62ddd627db7604c140c710aece59e6c8817032a7578f4271af011b9a02bf07eab5b4875c3ce4e353ed352295e2b9e3aae3fedd0be2394de167828d1403405a7112989ddb3ec864e4d4b84b595cb00122491de937327f09925ad1a5f4524d824ac6cb85f92ae95ddea4df238c4430c596075c66c48b0f270c7cb36adf9c62c18554415fb071169883b0d33806b704e25dc04a362dc17b06e66f1b65fd0e2b9062d7fd2d209d3f7b64572f1563879e4e456bd2dd52acfa904fd780ff7dc73405db32face0ad148e0ebbbebf880f541d10e31d618f736359988ef62e20f51f5b01817e77354dbbe2bd3c9de340272862ced1525bd46f35ac96880106a682f3142f8d27e3187d4cc77aa8c83accf725a1d0a740639494401a9d71a0ffbc27b18d68ff64e165450153e56d606ff9257fdb00246eb5771168f5353a7bb8b5991aa2fa2c523530b1e51a48d35d23d3b5ea11565410eff1228370e6e44fe32efc932322d7a7f392299d5485b3c0fe47da7a7ec39c10c43e4e1c20a4d752bed484af0e2dd56c737b489642ea016ddf74f4ba8517580c28e84bfaf4a2aa06c11afde3ae697891086ff94e7308f7032db6c7db83d8724f292f04761c4d4dc492370e7b6e4efddb6e9e53df93e31ada557d2c1a0aacf97845d0f9669a22a132fc55c556a85b23f27d16c755d6ee06c95dd4731f5dd2134694627712ab3a469069248b6c4b15c0d880c3ebbcbe3cc636bc4cfcd419047bd605765f550e5ca03428d8d51eca8a23a29932aceac707980f39637e7bc387d2b3d7359ccedfbba10efa98a54e2ffea42e618a1ecadbb3f62011c8e8f31a2f34560c877f52b7ba629aca21d0f500cceebe3b139a54bc3c91fded8a61f14124f0d8309971ee82c54009dfd2e400f609dd753662e37b68b975d384097cbf2b628f60f7f758caa829c5db5a02572bfebdae72763dc82b1d37cb4909d3d47b4c78cf399423193c588ee6ff5cb6f67fa16bb6fdf67468a52be20685c12b57a56b97b513addd19e9a14c96971a8fc96f99cab36d82c9281bc797f6d58a7e4461f35695fdf10bbcb475645703edcc4b8be44c84acdc08b6f3f0d68c1c689f0597105c0ead5cb3b0f40fc8ad99ebc3d62119c65a36d471e5e7aa3fe0e9009c513b7035c89172503f08fa557bb07c9e7b2e3b48a933416dd1a63d73ba683d2917a152e0db427c7a5ced0757cc9d912c010f0846f0ceee77f8755c568c22f28483fd96f18b1895e1bbe0c3c6084e716d0f4a1ef05b090c25e7a8ce3a7200ca120d2cf53b74e197840ec14c47bb722579fc79bb26db35736f72ea6ef69e6f0fa1687fecb946dd0ba559a0c98dd470bb4bacd6b657e9146d06e461691f8d7132868ca6976525bc38f7da52aaea652b91e3224427d438d80f50758a7aaeede05a11965de4a04fd5d1a409ff33c8c9b9cbd1ccdb9cd7b041ee0ae116eb7bce06a5d71d1ee69b4c92bda0c766e36584b4b0712cc06501892692170e8cff925e565927a9f96d9de94b46eafad15b969fef9a7b0521b12c000afe000597fb5c08cf37a84e93558f22838bddf27871b2f23773f18fd950f4f0d060933b88f2779d7acfba1d8d612d5b15227b27c3416b1a8c3266f1e8b5e53f9c2bb84930272103bace82a39eff760f7d39826e395f408fda2755d1d7b8a8fed76a891a1703a98098f11381f1094e06753f29aa9a1a5e15bbc7191e00730782caa5e9b42b04dfa27cdfc2c9b35e294f24abd533e8af9ff6c276a3b4b3becbb14ba480a919b347014e168277ea83d33b2c225f9c70459b7327ec390c9707ab5f384c2e70158480a3dfa3e922ea4af6367d7ec174e9ac87348cea14aed336cf9a7cda96195c17e2ca633a0988c322743c3a5669e71c5183071032f251aa63ece1381d94997dbd90ee1881ba7e6efc5e281649d62b5deb9ff75a5f563423db1af5f473c95ef681f3b5203e8f3fda850c554b7629b5619c98754032949b3ed29c90c0b86e0020e4012c8d933f31a05ff659d846f66b5129281bd25fda0f110a380d75f2fe8229e9f48617c36e231ae59aff7d7b1424db6ee3be3226235a69b17ea69f300108f764264c3c6b83f17a99282949b8f943d78a51698ad8f599a74a252de7158dc0409be42a1d2334dc4cfc7346432342362282408bdf9ce61c4fe8db611885377e0f7ac9191247c94ab9feb0e113df69cfbdfbb1b0050da276428614ac6ed3830cd655155352d2c5e1dcea4cbc913820fe8cbd0eceaeafa872f918ff395a1caf8055b0265ae58a63bbc54511ddcbebc706bd5462d41f7c6e38e99d2cdb4c0a7e62562fbee6526947d01e87d281f784217886bd223afd102a0e96c59a683a487b388be27ee22033dbdd1098f052efffa40e7eeba28c8dbb1a70259ee80f22fe33f3bde8cba70dfec54212a0d41724a7d8c51820a2a5582d4e56404e813b376940a7ce9097855bce7e3a887015bfe5ee37eb7411d2bf34eaacbdf553d483b2810bbcb913ca658a814cca9c2154938593effc92100bf011f90ce131f5bbf97681f9d8d827d91d9e69fb6c253b4f353f011db22fa1591e1d9bbe80edc6a4a0e016c1d381511dfb53b510cd4583cb79dfe1d42fd7b07de82402815f91992709012c44d152bdb064095387ff46977e494d843487e1719f843b0fcd7d05652ebfdb3b564934e1fd2858ea0807568e43fd67c84658d11a0c41ff39db3376c992a3726063c257e18e3e683ebc7f7791681d6e6ebf53c4c763c2c775eb24ed742d0ff8793d3b2427e2cfb331dcf8fa15bd66c0ebdb8c283faef688775e1a26fc233b13363ca99f35e75c9265857faa81a5f2d5e59540002617cdd5f7ed1295f71debc30fae93d4a11da4d5583e2e04bdcb193aa2dce9b0ad71a083741174e6d7e0fff62a09929a7614b50cba1382ed7bf54fdf36515a88141139c96f1cd0befd239e161da68beaa890a8b3d23e372ae2f46747d4877dd8e2d45909d5e0f1dee55844c2139897503f33021ce99b3596906754902e02a623fe0a07d05cb7f3659d7486cd69951b09340276579ce3b2c7bf9487f140cc5226850aa4d0544c2534f959640c213bb18519b31efe4225167960a1704ee25c4ba4a3cfe386b570114d8bdaf00cc1ce5917fcae0038b8c915f3ef5aebc3e2707edbe7ac81588fa69269b878a4d15e191b829319c4a7c3adbf5380acf5ec1a753ace21d4bf6c54cabc6687c5234f264a5f3f86421d43124d15bd2aeac1ba115cfb392fb5b1704a27d49a558e600efcbab14cfb4fd7029555ae824c2711afa4389af2db6e31e12ea16b9e97258e0cd0a5288c39f165846c622fcd67eb8c2fec9eff4636e61aae41bb6816bf76f53a65deb1666ef231d30fb17f6000c12d78bb456cb15dd652d5dc41c2efd6225719016ed3469e22ef72967ed372dd4855f35bb774482b21620bf390e34ba9128f985bc71e3159718571cd29b3aa4e509641681eda448beac7d2c3ed5d0af655d3663fdb6202baf15ceca93dcb276130a77ed68b85cfe91f792c30cbef5148259b131a99ee80af92c447080b0c5f74ae90f502bbc8f5b06d71c38e69a44e3d7e6b226c82fc556c4b87e3bcfd84c99957bb5feac432e4049c1b601333e1ce3c88596ffdf14ef5d6aeaf665185d2b5c8b88f8a38a779d13e14199793a04b57c76e6eca5a81afefe7c4400dfc509b2468e4d3e886ee9ef406072a8813f494de069716e45c3b329df001f3fc5f6ec139303fb5a048c0daed15987d28e8ced655723c0bd3d8276191912266f28e3d9ea87e335fcbc8bbb2e698646be309ad60ed14622fa99739d45c554d979cd42e6cb2c6596e3f0cab07f22ef88c970046d43fb0b1a22f82a85e7fd9c0bddee16f0eb4c3f29f1630f0bde1262bb57a2741f577b50df450abb327a404c6561337c14d479f4effdb0b8d0be726a60707efedd71172bda891b6ac8ca4efce12055d7372600e45d860c076867af848dada4b09c1ce3262af942701399f1314fdd32c480710066db24c2461f16e74c6b7adb41d6ddc05d23282ef900c83efcd3a645acd8161e0d46dcf68ea5ba91f4b9a1a9d508e6ca81caa6ad36221e459765d2b4ce713d76446e327a498e3e5862472c23cc32cc74855b436d0c2e963f634f4082d13cd7d0e4991ab0e8d25d5cfd7c8f03725a5a78fac41c82c07f3fb2c3b3f288a871b53d08feafdd074d0f734bd12b6f2f096adf6f2785b82792ae12c403f447bc0bad8f574bc062b1407d1338541bf684ccd0bc0f5cb4cbf78bfdddb1878db3bf49cb67492026aaadce8dfc0f2650b2bfb45c667d6c4af144af5c3e36dacd86912f9ac24e92f3da8c80fbd2fbfd029bced6e0417d17a262b3e832a2db6d5fcfda037539b5a96c9494c2fd390aa371670ccc51773f4ff3cd9044cee65503afadd9d0ec691be2d13eda648128a875ed9a2233f2193fbb45d9dc76a4f855336283ece63c35b0adfaba9919f17cbce43994632b8f9a873533214354230b2cea1d0aff58cfc919f0bf7a47fb8d117af73aba1adacc94da4c7a5d2c5711cafde69c0cf07cd1a8cd82364cf40558d361c8f31f5be98249a0c36095571e7e26e03c16bc636fd819d7b1b9615898869ddc03d539c6052958c510e68ddfeb42a1b6d2f3db3b8f95be85bdc56042f790db4a6a5b7e9d5f5389a8dec5db2b24133554e6d83d1cff9a38425aa28136cac6336653fe0b332d3fbc038b4a4310d31c42fc85f847f7263013d332dd09c19f78bc57286eae76276f494babef4f4827391d0c15bc7f9b303663b06194ab5e64b07df3e622dded0a586c5783d44d90f1ac2448cbb952a08b1ccfa0f79093e4ef7941209f3a8dde191d864b8efe0ed828797c0136fb97dd6ce5f0be7a31300176bbf490f8a7f0d5975c4b97fc6b266f653bd40bb29383ce483a44326124fbc5179e1a9babb07cfd4e0c2f9e2ef68295689ed844f68606de5b90125b9af2cf295186142406bcd1e10b669c093c04948e915a324187ffd49f245d0fed045a991a899c40556b715e681fe4d10a6f0d623067c6348d42d58c66e75a9678f6775f0487e53005ce26d8b1e04d6fd9c7eb44eb15f79dd1d663b67c2addbd2eb6c300abf6ea7c8a3a9fe29026d4088c76fe2172e8700a1747b199833835af4003d91fd3e7f3effa4c19810dce3d5100621c5c7ed267fe546de42120a126f7168c12107e4ecd15b0b6ad2a273a24ade8a756dfa5ea8fa673730b492bb86bc0c177f4ca6b84226848befd9ba8cf3f413d138bf2dcea7db2e95832c610144a2a6fdb66382dc3659e42bc31c06977c4cd3ea9c6b808b097ea2971c9f7e30f372d6946c05350ad48e2be9f474bcd1dcee8f11e788cfabd946326e55b44f84a8cbf1837a0f716c6c4eae769b1dfa033dd69795f729e47b98e714930966b77274c2cd0a5995ab8f5b33f04ae43d9c72e6318ff09bf82b3eda1bc66a09c81854df6cdaa76ad866407f927361a741742095fefe9f040954fc71d1951dbb18eff286c9fa4099555202c38047fe8e76031be0988f9992660045a4505f4572d0dc767e55428addcbb17781f18b16b523a79d0927d7ebf2c6ef5db9fee09e1c1bfd97cf4eeb627ce6c33633f049989a34a76c5ecdb4fd1b0321325d9a0ca17149a2a1f9bf9f7302b21964a7372ce3a86a613a4a9eb4d7293f13936328037eea0b54dcc6ee975f5b70a25ecd9b6490e2f9d357be7ec3af9ead06fb08171fd2cf48c8e40cd488695953e66ed5d6712a47ae00adb4c9372ef857e2f59c4913eee2ef7f40021a761a76c20cf56ce2b19345c22565a155591933d13309b3d1ff824de9d12d2357c3bb167181413874895069c812b102edf6c59181ec6042836231021e72f419d713eb2fd1d2a74a9a50cf9e55fee1a6240d7663c01cdc7f54221cb1f8e941d23c4ad998ce171ace45483fd277b951b979d8616b20a033a214c7fc0d16335f951af10cbc39ef355ced72d9940645cb619812377f6f2e5568d759d2f14f205ac071539a1dee1a9ebcaa86766fdac1215fa16f0cb5dab683a765f52ab10fb89d019d32ae7aec9984c86c89d9169672a6578e8b20a46a64ea9f142349df30e08460a79655f7790d63efc51535d6cd0805781e88f5d19039487ffedcbbff2b1ebb0cb4fd63c9665b9e91057649fb73f9da13ae342a420480d5f2a0198a1a3cc7af695e5c4a7ffe11559b987314006b7cb7b9fa2bef1259454e0b7107127a260ffc2ca8f603e88a1d8fdb3656dbfaaaa09232d5a8c0be7712d5b698b910887bbeb04ea943190ffca4c2bd106daac6ddd34599f2b67ec57b7c347cc883e512ea24c6e96f094a21a91109acba7642ebc694de3bcd67744b51a8dbe1ae1d0e14d2e12f8a9e3956d2ef60fe6b091b27e2652e50b34e644f3666720fdab30a8ea5b58555d5ac2ec5dba5cdd0fda13616a2e33091c87ebe392b27c08e8f4a86376c567c59d6db2a6d3c2ae66fa7394f0d365f006e8089c38eb3d80748318d196e074c3d5797e4bfea5fb2555ef97f9902fdd767845e9e0167d61eea97a08981257a8dc19fa504b3999c2fe5c19f4eccb07e2eee18b512cedf94a72489a355ac55e182e7aeb36d0f3ede99f610904bc577a0df7031891a534c7efafc255d0bc264f6e89925a84cb1dd252019a34d9d633b9a2c2bbcc59fe4482cf69ea4399801ed30a2d971b149e13ec575bd070732f8e893d35ec8d0c03527886ac119b41ae576b1c5c9345dc10a7d407696f7ba9fbd6c4d05574c41538492b30ea0dbe5bbefbeb0573b1b3921ba2962fc74e74a19bd6d8f4b2a8df5916fed2992f5daddb9ee3f914b28184612b4933353a1760d9a68f4686921ecdb1b893d944ddc88e27b866938838e29babdba620c2e4a6a6bf6135249406d985770c5b5c398e242bb8531286e7e93f1fe152f7c63db91493db1d859c9e41117f22d76cb0a81633724906bef7a63765fc63b55d0018b0d1d785465f6b25c4e439f4221fdb5fc44ef69affa3de2009f1617c602aa0e38ced06311c9363863d2db3b4e415170a4b2d6cc0615e86da3bdd415ddf5ce9403cb41942606ee92b3aa7f37eec16534306fb2f0202ed0f1b7631d238ccb8169814b0ea7873c8770bf955839d73f9b27a7b14bd4d3531ecd1451c10650fb9d2a3839cbbe8a8ee1b7402c4ee76d90109a545d838368a9f66cdc5313b902ee9bfcbf2fbb080cf0df72c5a59468a61ba65bfd466e78492411641437c54059eb0ef4eecd250243473bfe36681a17b04e28321aba8b2591e846f9c9d60a40046686e3ecb8108549e453eebe8c39730a65a57a0029fa8db8ab832b15a153614aea6b64780d5a8650925d1499a45c6fc4218868003d67d7906a2f729a990589c800b384f352fe44c1c76ea17525e4edee5f2eb38f7ca04baece1ab50cb5e1e445877dadad911d4f3a1fc8e2ec51356ca79e51505213cba9c9b980c25a4c7df990989744ce27b742384ced8253e518509c8b3c74726a33b8a641a2fc36007b6b3da6d52ecc33225fc0a9774a3e6a589a4352a78bd308ecad47a2afb19782302e45a8eb5c3f78c2afe629824f97b2c94e0112ad17e3427cec801c8acf17a12e67dcc6552478e562ca2abd73f138900d9cb877d31d303fc4f4d9c3b50426e82caa952ded1d19d23b78110662db77f4e14da84fe2cd31a057d1420be4ddaa986d84955e04fee15c3ba0fafc7ec114b9dff9026f408db4cfc295c4ec3d95475db80eecc5fdc72c18b0be14a0f8e963569de4481aa3ecdbd4f4a3eb4ad8160dd3af4da6816fe6a81ece1841264b92c3c89f4e4d130ff24d1607a911473a3557b73ad19c1452dd20a0058edf64c25af28210bd86cdaadd8f8497759fd82f31c298fe4a00651551eb1e3f167574b21ba0d14f1e8fb965d0c8e19a2c76a13fa65db5c1987e3b9579a07380f2604050fcafd03f542dd765c941d4b83cb99d1922d1c1e90477d10879063817a55d97be4a917ed6e7eb5b8a747d24b43336cd76b94dfedcf16cbb22f458915e0c87497a931425334bd868d7122e701305c00b08a05adb32247b2cb0bc10de34f30c893fc5431cb25d7de58a1384ba23d735e28c5ac561b17bd9adecc6b37a6bde189bd90818e60a296ee925178e19a7f455da3483db91602746d509576670e8031c643a84d5efc0f059c9a503c06fbb1a020aa12083ee47a122fcb811656eed65a13cca076fd7756c7e1b5a1ae448fb143d37c78621972da8ea80d1b8fabd05ff829e5642f4f7a658a0d37fafa65d8015f7e79a25c7f3bc1e3cfb4e40cc0319d0ce469f7bef695ab7faf3d4651442147a520490ac8486a93d4e2d0d04f8c2e7b9ae464ee6eb6609fe94cd223b80b3acdeb66e5008ec21cf5c165a4c92515b0c3cd690bf2c94d6539b8272c65afd2ca015ba8b32856a12c548e78bf2bb5dbf9a7b30bf4422a71e27735adc891a2b4c2f62e0824f97c53b95f9233c646971c09398369c42e98b442dac15d9c632bd823e207df7d405a2b0589a1fe94e0c2e761f275072f9df8831ae6a03f0d48240b509ecacdc49bd71bea881e1422b0465bbe2f30df40888b8242a5d52e97e58ade0429111cecff560148d91fa26fe4d38a93afb964ac7dbaeb55250f9cf28e326c69252b44e033e9b05339a43b1e9c18de86170602f61d37cf75f5a48c56d04630eb58aece4852d4479b2dd78bb36ceaefbd6e0d4b249e6942b3aca3edf6e79da02a2d97df464d6a75e97b657d75de40386aa1746cdc492fe1eb63e98b3048db6be331f916df672fb9eeafe147ceeeff0a1100c696a1fde83735355243ec19628a8f963fa72fb750cfbc9738158a8c92b5d7bf396844aad9f02cc6f436a3b4178b7fb3fdc20da96ac5adc73531e31d55c58a760e976dd7d4dea4b96e241628f6c545814fc4277d9f71451618f53dfbcfc02ea2715e951d3d3f2b3941243ab86e5e9d20caaf53c7fd45f91f36e1a9f0c1dda721f86fa7aa52cde0713d69155a9c3f6950fcf443ed36ba8fc1b296b9bffa7d6dbaa66b09bfd180e71401d14638467c02f87e8e76ada5c5f5a041a3079b057d4d938a20b832e11176d68257bb32b2bcd0a395e3d494a423fea2fb50caaea398fab9e117b6ed509c45f0aebfa45b47a412fe5e0d2587345c7b7243ec2c94167e809cd32c146d28fc9fa013031d780059cf5c95611f3ef3ca8a00ba31c1dd3a46bf8fb932734485bdcea79d5a0284ae962532df64b5c4611eb4fe42d63f8e726abf4cf7ebfb97c9b90bc964f27f2f0bf88f9baf86d9f97a09b665195bfba15f7c066f63d370a01abc5d50889a675a9b5f41d4b648e1109a2176eef39fdc806e2a14f63f7a2b2d2fc7fc8a1b07f99c61aa6fc1e2b36d11b1228f9a39e57c8e305bd6c7c27c8d1f6ed6f2462271f3c060163e67ef3ca058cf13662b4630f59e8669322a2e4fabed5c34af5b9daad645ee06fc70877a4414f80584a8be43477a9bcbb84b7965bd1e5ec02b22a7f708ddd41098aaf44e81c948672fddf59dd85daeae37b9887732d2bfbd14f79f3e2fee46787a88606796ce6f24e5d8602f5479ad5128eaf6e3133a1a061dbb6a616514a18a759fa43225d072125f6e1bbb6b73a028e2b56c73cb1cfeb84955b9d12c9dfc7d1d2aabb1864dc55a4ab47c135ee2e21216d689fe3f50f3c2892c69b2d70b92c0a4875fc3b91aafe3ad86bba4dbd32e2e536d5db8ac45c7d55eafef17ef96ebe14cb82ece87de02ef4503a3ffde4877103e7f6e1f8d7c2bacb6cdd63993a7e77f97e317e997952469c70e575653b49272b27454d7750ca4b2547d49a71c5f8be1a5d34ce64a0d60a212cf281def80b5953e97dfecb81dc66f5538b0d0550ea529a17462e1646c8f6cda307b417d8abced469ad146426dc645667a5d787cbc3e4b985a1133bba811d72961b7a8eba147daa70f26452fce576745444adcdaa3e029fc3b86ec570d1103805551e9d90aa478daf0ead042a5d919ff9de2aa30b2a38fc570423cc6bb19caee43dc6f0ffe86d87817a95e7d6dd69e260ce214540c14e35b798c5e85260031c6252f823429981d7dc75ca5ce32d25efa20408e6b87e3c6867670fbf19417e1db3c99d2652dcc57be21fe0b0d17692ffce92c10e12e6c0d10ae501450a2b8216b8a2695be1d8f1cfdb0990f1dd0bdce077c1deeb7bf02aa3e0c06e301c0170cdf56f448c102bf2a49def823792938ee5a72e88f3e2e198afe9d904c62b06bf395ac95a79b5a76a3a87cdad0187d93665369f2a22d2031805c1358c92b0b643bd2da876c9e94a6a1b03ebb0d0c3f3d6fe1826a9426719eaaf845fce4cebcef169af5b6e6e595823a2e3c2e1efe7503f3cce196662baf190035adb5b79d8253e93c5212861c36b9301673c5703937135cf63131331a9c22ec30e845fb3b739043920d31d774c37fe4b0428a42b4354771ac1dd3ec6eaf3225163a789d55741ab8cb85069f747d6c4a5fee0509242fc61e0ad872318e94bf26d60732f237c1defedfdea608ef1921f3641edae4137af1431096ef3fa4a80df93a5b13e78b6c9a232b7d1b179840c56dda5fe99e8082a3e0d810ae62b37ed2301963a7da19d580b8dc9047cdef0d518f4aa10ff28a42be3bd2054561c55ca75084f224f9313732473284dcbddf92a76884b86a2367cd09dd69b339cb53be4bf621fdbe400e1c027a498d5ef5495381f5dadc322bcfc96274f062cc2de3d2b77d1b1f858f45e38db78a213970f4c826ce622923f0e2ef3808c9d9d4867dfbfe03b916d45c3141a32a4a7de38eb0e0fa65bd207257908d5d0527e7ae86304f02f463445600fabc7670421f153a5a79d5a0a8245a2b5303220ab8dc3673f419f386aa2f94a8d7322a67f94a0aa94ee92dc9d8fe311a5b49c686970dd6bd6857a5e2e0011563f851a3d6f485d8fb467815319a5a1550ec68378dd3539f9ea33cb2bf27080fd8651cb2ede11cd31b17e3010857481d6d1dfc1d6a9b8c7b46eaaf6ac1f337a89b376c87cd779dff93addb672f65bb28daebb93ce1e919667a87cb99e9aba4c636596d7b9dea5d9a53d58425186f0d35befde31e271e5fb9a91e5d17d2980871492d1d24e139f1aa8ca6f7bcf2617946164fd416f27f468bd1c9692a962942bf6861d0bb0a82b5a82048c05ebc0aa0e0b1757a8c3c1cbd19bf08a6bb9586d45a9a58aed783be482f4d9f60c4f272050f161ed69b92c134478308fd577c85648f8fac336ea6160ec38acfccdaf89c91fd88e17e030524202729120e0336553deb0168af2d60e5ada5cff8ec3c76770f21c89b1b631b5a7a9a0100aad9bba3cb6fd3c6c4227a2890baa8761d7e3bbeb1ef2af5ecc95ff540fc15715a84e2922252d47aebaebee9677bdafeaf447506892934ec42955df2f3dd9312d779948c784b50aeefce7781a5fc7b626834386311b1d3c7029f2d9d18d443bf901122eaa779c53f6fb1ff460102be6000a9afe6a4f3da0126bce950b7525d652766916daccf66fc619d5d61f622d0eea34079c302e265673c8ba1a9df99499bf40718bf2b164cf18a2829ef42ff95947236f7f8d0783ae3e592aa5920b2278c807f287ce87b714506be2daa6b831e02028da34416d9602457b065540f79236d0ca0bde84fb6e870c6748880353d0fcedb08ae89bff07599dcd5d369c5bdf1fc08aacdfeedb1dd0f0d363a5a2dc07561fafa6eff1cb37a07511994bf616d03a79c3d0f6bf4d25002f3336867221ab1714fdb783e61e12159a81225cd81cf41c4221d7a01bbc5a803e2afc4e0a657650d40b352b32763de21668a83a2cdd2651ba9bf2d573cdf7d671c11da189118ab2d24582515e92e34b6257880496d693c3374b3a77a950d4133324b321a7e34edf0c975e53d87c20da9135168038df5694179d073368758a05e8e9494d34d6f2621ef68c428c52b18f472a6d5fde0c57e80e33ac0e5faf1ca9eea6cd3009f3d716bcbe9f1eacda0670f1614c9da1aa26e8091357fa577d6f6c2d7f3e4935d991bbb8586f831a9a8e6c2ea7e60117567bd9494c40098acfdc952388f3f5f32e6b07ebaed3e32cad3518a6ba3c7bd2db5f2dbb51f2e04ec1a89d1c4e1b4270ce6ab39fa0878f78404c2fa2bf43bf004a9267cecf4d054aced2dc3871145119fbdc2a94be70bb88f4707b74fc83decbfabb998ea7a905f0822c752615ea48fe208fff2a477c323883c562612da4812a64d893590538ee63bc1c34385086da08fff13ba731341a56d0e0a4f4015ae5f083334b4763ecdfa2a320caafc86371aa7a9a4d018d90f3525fc7cedbcb56889b5103fd8659bcbc0dac90abf200e1349ec236c1b68d653acf670391dfab508b882b82c47ddbcfb1bf6eb050c216618e666f479a62a03657c0dad05b1858d0cd4c935db49900a04f14abb6d0c831111b5df6ef46f9d0bdf4ffafd8ba47a3f4423e6f9b72ce5f3f0014a5aff5c9ec36cb86729134ef1eaef603187a1e80cb917b1bb189dfc76b2c2e28cbbdf861d27fff8d0804379c955ef3f8a9a6d29fe7fca9c2c95698692dc00284902107880f43f54322da9afbff4885cc1a0f3132cb116f2a4bda66fbcc73dbce072ddc49a5807a169e66c9be06e03e3f791c10e024fb9218f98ccf62abbb33c54f32ee013ab00c092188b212c446e662ffec44f03e0c988de60f76946f26558c91bd292e6744dda92a814831778c05fd2a588b7435df7b6861220ab316f6f700ad7291ce4c612268fc813c70b0c32c12ba25ce0ee70044d01072a293b9d69230693e09030e0ea0574dc86b7e4495abcec1d2b5ebf041d5ecba1578d6cc314014f01803ec224753d716e23d872dedc60a89dfb418920df37e60cf8fcff46ac5e9a671015e4637e427933d321fbc3afe856d86692b218315656056037e1bd90274180215ab86e7b67c31f1dfab6fc435ed41f7d90b30c3f11a6b77f0836d13191c4eade32affe4fb94a8becd1501d1bc86259e14e99b5394562aca780d5ef61cc432c12e513ec9bef4d6668136ba7932c23861a578784b0cc9bc44e22c7d07d29064034097eb408bccf7dcc8a1a34f68f9fdb5dd73211a1276646ebbeccc511a8f6b7f0496151511a18d07642676e0d86446c531963d895125df9300cd5dde695216dbcb77f5efeff32f19adeceddd20fe05f97d0794a6e221c5346138bd7a1b439c061296f9010f06d7f4de1bf80fa4429bcf925e429aab2c5b3c27bc7e35d58166aa49c1d7b1384dba7d9e31f3767b835bdbe42ab3952957db2875c1838ed142fdc5e0c49a852f1d4ba92bec7fcd19d02be6185e73bd8fced79c7ac4071a9da2531bbbb06fe2aee74d093cc04f42d76efb09c7746408809c134caa7b7c5fdd639ad69883c75b220187d1ff51640936f4128b6138942653d2c8a447627081508d1cef66f2720306de59591e8b1afbab4a0ee57e506198bda632a5138ee795536f7eea216d7801e104105150b7e37549f972f701826b36fd91d6b5f1b9f6d94f1d9715dc8ae2fb26c58af8fdb9b3cc21f1730df96e8a79db51af4a87f81b92b434a87c51ee5d11ede9866764117af03b4f496f3eb5d14c2c8997b00510efa5a01407b5231076014a735f07a1077f4d6f66645f7c22aca274ddf920b9f76a49e13549605f773bc2e50a618463d34a25f278abf4e7c09cef969b782393119e9e682458e474bde99516326d8afb23b08d908df24ed824826e7dced37094b1166d8e37586d3d9cfb12a77348727736b8b1f21cab81ec248f901eed23f7015a6a980846aa0d10f224b54eb13233eb61ad01aac12fbebd9fffbf35bbbd4742ad78428ca4f1c83128610d28a4ba284fe91b45291645097767730e2d782fa4c90d82d2e57700922a6ff36e287265930b88b1b3948d03af77d4cf4997903ab94098e3211e4c186d6e164f45ce9346e37cdba86f2de4a22af9b325fe14da0126d00153b1a325893e387e2451c8fc75ed7bf4281a7462aad88136df104c2bedc967a3b9c4821ef6e6ddb770626687893b7483cdaa89faca86fa75892fc384690d97402ba6fbe638a7bd777559252a0041a2a35aff07e7181d2ccdfdec18725fc49bc213aae11370818bd0b4d6862e0eecbe5ac46ca0dfd4b696304c8b16fccb341dc8406a99012cdae08ad08ebf99997c84797baaa73375da59d5d81136fb09b1900c81f345b3c200e01aefb10337521c043df728431eb724bd194bf1e69cb85f9b7c03f53d425dcaa3cb1971f97dc70f477df6f1ff54b6cfa74e6461bb819de4e68f34bbcbcdf2e0aac2d43a50680201ec4e96440f26a92a0a5a5c973351c67bccb1b9845af9fea72f2ee9f4b01d2854bc7c1a2a8fec070212db616d6a459069557a7f8e9c24066481894213c328ac5ebc320d23885a93dae291498bab8d9a033833aa54c21bfedb0ec12f4104323f8775d327ec0e3e5d292234b21ed97a907c2ea2aebe693c0c269be30328c7c5c5e6cdf186f44ee1a367995fd0df1645af4400601b0496508adea6d0a6c8fa9b8a5834167d4c5214db165a961b05ac98115e3b500c41c77011b3b3d907d0d06ff3c66e9a83fd4876d7bed32bf0f78f0382b0d359704c61839d21a2c04b5f0c0bbb83f3ed66e746bc8f069bdf5f6e2ad9c338d1dee4ee2fde32f60217e492fbdbc47ec7ee3e625c7945b2adbf552d6c54da7da046042faae54f9ad9c6b2188cb9437b0ef335e11c3684ce6c045e1606ef1c571e5fad21cf287bce22d0ae9a18b1c89ab601ef7a9b1c082f29e7d2ecf29b0f29bf600ac49f49ac0e379ee788680ed947b42724a4bb87c65fa17cce4e60bb92037cd6962d56f4f86a5267f8cb4a9e8bfbcfaf0419eb8610b40ab746acd54bc4f4ea05e7731a78cd893a278c8411faf3f5eeecbc2ce1e96d3a4e64ad0b30d6f189554bf2ac2cedb6cbb5d6a11c7c429eff9c32c28dcef298efcba3710a2fc0a4918829e1dac6bea1357b5383211240233a2b4b08d8ed288346d5bb99bfbd5ca91b5ffc1c4c3400c7aa2849ad2cfe528eed75de8e9dad40832dda6623a970b71412ca024ab089eb77714089abdbc2b4f869a6bd7f8bf5e623cb238583884fac411d9b47584564a04f262821978f5446ef8c39d78f6e51a31bc62e4d4e4d6810c046f9a970f36ca334bf2dc4b2781d240fd222036298b9c75c59b8da360163e964d3f0c1fc9f7792463924f37c73c77c43d05e9723c873112a0fd04a8bc25be3354e23ada6d82ccde27abf538b1a79bbe9723d6016b6f9e52e0b0cf5868c207b9ba53ab454d7f030bb63a197e724aa33472228cab79257a5f0f56863cf0f1aa7f7dd3b3136ccee07a0947e68ef2b12ef12118b1ad815b7dcae311c6730cf974e51e1e04ab766c249d3da52bbee938aa055ecbf6388bd661070ab8842dffb58ccae3cd06a8833425095e38c8baa7197742c49b8df0f779dcee7c56f7314378631420f71157a62776f8c60966022a8271c16d46056dbd65d43c6ea320588aaf6e2c93514d3c512455ca15dd2e6982a4735c93f854bd6fb13810bf0f8b0f0c0c107fd480ec8d8837937fa92138978dfdba314262c0e01b8ebd6e0880a8d923ea6afecf4ddcb5e4f1c13fb3637e88f94bc22520bb934bf2d858bf33eecfcb3f23279e52e349d3646ab4d2d69e6a0c9cf1375e40eb3c66c1688d4fa375d70f1f9e4ad9a65f7b3911d9cd285b14064519b935c8074a1c0e40a073ceea8bd7616038642c414d49ed6df32ad3ea86332bda39c49221a58313280ff5d01768ba9560e33b977cd4282bbd746e88e4fd7e0b535401ae8381bebb202ce04d8adad80f690e1d2067b81ee0117cdca23b7257049a80f65483c8aa3e797150215d170c492eb899509e70233132aa7b9fe806d0894de9487ff9525d47b366668d5e354a509ec155b43bf278f2492926a1e9ae58e2ca8c726e77048a79dd6072b498631948ff5b035dd1f932306d08d0edd26238aab4de20258b68ebe8bd03841f6a17e4e45dac3a6176e8baa8ea94cb6fef47f552c9a3aaea1304b29ccccdc73a2eb57eee4bfe3f58e385684d6e9b7f35f16a419d09024cc8a6cc1712fe383bd57575fdc5ee1f1ddf9e3961c6f3bad6f031f074222ffffc0f037890ba5d3a07a3cf884fda5dc1ab183a8dcfed8833aa7683db18ce72e743d29695b37a782a40be20bcf23251f14f289d092d51e0da8d4290d1875fa3565a6713a4e9299760e1218d1f79e71f112bb863c1c8b5b320aef2cb7434ea8bdd58eb11951915c90a9a2df07188a70eda8075491aed8ff64ce4c8f33fb755aa7de2bbc770107ebe0c6825e5527133ee4de191a6a7078ad861c02a1f0060dd3575f6fcca0b211873ef0cb15f7d7ae109ad6b3ffc27fe04984b0b236050a99275152415e700868da82b205fd48c821b66cb273a91f76b9024482fdff3b896d6669d5930016164f93059e11df10ea9de4e5f043f1e8adb7691b007330354b8e2b352ecbc0ccbe96c090df4c1e5e3453c3623828e8abd2f2e588ed412f3194941fa5245ed0fdee46c4470de813c2f94dae2e4746db81759e96aa6711945379f5361d7d33b38376370c4d97a7b425b1c73eedb8ca56141230817e47b04080ef0cc80e482dffe6d5466c6f48b2e00f1165394e18b0304505fa2b74dc336d8c43b3297a0f5595dc0ed2d3c3e4affc146b8dccf6323d8ddb0ef0338ed423670850e6210ca3aed11618e1cf7e210b630479305cb2d797afac642276656db2cc9cca70b5c087d20f499307aa24847fef9d207d59c5f3ac14e8e994315b53768cb6e023114117340593408038ecb43e8087fffed572ff58ae5d50f3d108d98dc8e2f2aac73dbf7da88d9ca6a487b2b684eb111fc684d2b381ce3bb2fdc95ba9d2b1446a61c5c4042415d43d109e0c1d7195e86484506302eef8f63e84a5cb3661acdc0212f83990e4c243d52ee12b36f01e8942c697b6e565636356add93681425dc026faf76769b2219897a00b321d25ae4aa94a68d259db1faaa6df6413a2be75744b83c43dc87a2e0d9c81381298443c67c82c352007445473fdbdc2c934fde6e1677177de535d24079336fac966c39b2208d68303351c78ae1528e3856cc0a0c67fd778b2d4cb5eb64a1471a495743fc795d5ff6ee2cfa8b2aa5619b8a10203febed34987038312035710a329a75a912ca3021920c025be4275b79143c2b454a0fbeb95d92a801d34bf277f8a2da3dd75158b535cd56dd73362f068e3f566577c53d4d4d8b0ebd512fe98d836ffe34a98cbbdf0b6cabb7dfcb8e59d56f691017cf08a8c77022e9919f0f4211043e8ea1b4529fd3070b406e3f1cc8520162eb4a6513db61ea5f1f9ee9910c4b97590cc4edaafcfc1b83d8d19a2f5cebbee5b07d79278670eb8541d3388f42808cf3bd26ac6628215aa4ebb43b5258765db7c1aa1f5e5e537515bedf299d40e187151652a7bae9ef3504f91897c48970964245d716a9043b7cd8e4b6af4465056eab945bf3f25cecdebbb1dabff76ad76515da5ece4a2c63c5594bea6e82db453f05ff7ca6e90193b4e724ed691116569a61d6f5b85a11fbba66411b104635b78656282ac8921ac37a28fc1d046e072ee27c188338443f36bf935576aef5d5cb83384ae724735985b524c8742a1bb085a2626733f048a73f7db6e96a73e82ce94c27ed610825e0899c045d7f235dd806322f6368d4f90609146cd710a5ebbf79e801618ecdd68df707f53e1d5329d2f682a60565e2c09e30bc9324eee8c00546c18cc5cbaac69d6691a91e9c8da97b32e4adb2d903563877b7cec70e419a101eeaf0a2501ecd9520e5d36537febd11b843cfd8b1444e7d80ed057da055a3081e5c391262e5d484ffe8afd34ce477d2a848b921c52b899dd796e2a984f1767617bad6751777579186ef7729d8c29e6fecadbd324eb9bf4572bc54528a34a55de92a1dc2ac91ead70da7efe607be2c51e08152fd4848fde52b1f101d42e23427d18bc555a587b1991bd6da16fdcad0a7bc52919f1a522148f34f0b689e601c5cfe926a6241a0e6ba443f822b08066d4f99dabad424de6076a45e016dd16dc92ff3790ce5070d56912e3834ebf4fb99813c71adf52639c1f1c88af2751b519dda7b6e902e67ace4028c98c16c37f31f581d6572898e6aa038b8ce9f217b4e6bc446583efcad0f05f42fa7ff230c4a7d1f4460b16519c02c9dd2f211b87171fc7e67784120df0043068f9446fedcce6779f2283a5f6bb2e86bd013138f4d578d904e072aba2113bba64ae3f48e7d90424f3d617f8a79572e625f2cb37eac7d4f0e003d6effcf9e9e6c9fd8e94b1004aa940264150ced91a774883fc56528bee606931ee39366e8b3c7d0af0cdaa686ecd9e4003779df2ed4e5973660be5f0cebbc43034772d617d3feebd4c469ef308cae36a443c8922d89ac81625e42cc3f6ab1a202b964fb136c7e7cdc7f2381abc1d3ff6a3ad1067f6c2afcd5e09f19af657eaa643e0d394cff760b472ea49932f43e86be445e8ea57a32cb7ac93deea64e81c6bb3d7e80f8a3cb8460c7895d4045ec04562accc5be835ff5d93e105852915514880363405e7f50dbb4c20fee6406817ae8db3a8daca9badd0b2c7d4f7f081f6a2240b80137535986a49dbbe5ab3ebeb96be74de843e5b17b2ac25002c685a4eb348914b36bf097b29c58190e8f27c32579077de5a2825e2bedf2c1d8fd4c3a3836d480e4f5bb4a4058fa8760deb01fc45393f4ee10a01bd0caf5866697957c7b33fee075de2fbbe8570a16a435fbb68e160a062717b26c431cc4f9b9660edaeab448ec79ff580c2571166e3a90e0712fc58e28b2d000344a3e9f4cbba558ee79afd6b54f655859b0ec30d3ed4b69c18f54658910cd26398a9f8ace8d7a86accf452fc534e9e523bf2e6b2dd27354f1e543792ce94093ff39fccb3f251aa159c691c0bed1e5c912464c62268b7c944a2a0ad99ce8ab0bed84c66e3681b3265700cf599c83b46100ea41b25589b3d0051e6f362d958c26c0dddfc19240ac85bd5b06ae7563f81f5973ba7c7d1083e30d4ee267c83a35cf56b954d8037f5ba4c64ec9d7d84e9a08cade73e4d618555a92bb05e5515057c5c46bc10a9c2e5c5b0877a3d0b272bf373f655b946e5d4ff96914ed5096f8641dba216472755fc4f67ee5a7fac71af25832156a3991295b3645a505e8cb807abe3930a56f66270bb667f1e698bcc72a2e49d7240548b7ebbcb06f3614a3fe1be39f340c24c61b2b50eb9ba853adcd650d44f8632ce530beeae70d8bdfe66fb59df8be2df9408f9b6c98cefeb757fdf7603c92af67a0a75e52774ea776adfd754fa6801a18bd050f27aefea1b3d219e324336f0f744391953aafb154ab1845d13058393ef04e90819236ff111dd71c016bef3ea693e69e011ee632b675a6c7abcc50dc69b63d030630f10ba42c988bfbdb2c3ad10bbdfe092c8b07126e11e5f984fca7f9df1738ed7c0d577efc2b5eaa2d1a8dcea3f15a05c6083eac53c1006309d829a5a8d7cd5661b5a3800e843ba4ae27231e299327ea047766e088cbb44ce5a6688c8e1719f7c067b7c0c5f50b80c025aee9ef90111d2f1eaf839183348cf2f9ae82d65636e2ed22ac90e95224865ab302c248c7a0fa47c91e9c9a9b40dee005b06c064e7078325f6dfc28928b5584fc23e9101c5f897fe8d6a4f1d44e30b4c900c56a536c244bd9e94a90071d50ddc8983121ab165abb8387ea8640c7b743851fff90cfce77e92cc456172d897615dae334df02f9fb19fd7e06710f79cebb7f838eccc149572f3f8c8113fb76bb739a3944ad70c19265a3ff216cf3a88d1b1e6fccb55447533879cb9bc2d047bb4f1bcdff765d240da314c576550f5b2bb6497ed4a682a2fe8fd26d5bc4ec3f3499634ef225ba1d328970e374ae77ba2fb5262bb53eca1f11b5ab51e19c751591510e74e72c7cf03b025b6a111d43c0b2911ac3fee0f297679e78085e321228560c39aaf5012ae9ffacce7504ec2a7cf49d2286d034e10680343b121d5312e34776c2405c9d7735b25bbf96288abba0cc7a7aea00a47bf0e3d3cd1d1d30270cafcad8b268fbf2622d948cbdc0081535a0a0923ee3e09ecd0fcbfd17e3dbab00365cd8e18e9fc05645134410259c3b8ec6dc56237a5b2273cae2751365cd7d2378107a5dc10c68d01545b4563a21f8f188ccc4989bcbeca48bcf7853c16365fd82df5113e04db0c96cce4ee6229648853265d296a8ac184785c06b03f55c0ed236599dffc46d8c456905db37cb9b6068f86ea46cffbe28df1ed53065ed5d90abaa1e62b90fff17602773f8904ff73922dc0215603d834c5737a251801d6d871e7664dcf35197a3b1da58716bbb14b5bd0c128a47b9c2b4354db1f99b3979bc4809753d4fa84ed15608265d844e81493ab5e11b185e07f8b9c1fec00dd9d15dcc092dba121c42c12faa0413bd466f463299860ba231208792c779462786a9c7c90180e9a963134e28e54cec372935a3d85a6d89f560a1311c32889a4c3399dc198cf272ffb868599ba40dd75aa8cd5fb0c7d6cb29a161ba5d4682797d231eee4a8f1d0d0f86682823dd89b8a18f54759f1355758010fb7b31e33556db13163522072fcc489941d06871b89f6a918d563f7c504b1f894e1d4fd26034f6da48daa35269c09f6ca5b2c4b3c4c7256e5f008d68843cda83fe5527d83a53eac1da8ee3faa1e45dcb480ac2478b6a93af539a5abb81b7c73ef0c2c324e9a79892d9b41f6dc05c17cc6387d7b62063f91d17a724b9295199d8d2ca1c1c0c2884b5b517e930450457a534fce6634ba07a28fdc42c9435bbf2769192970832e41dc1c13459b9c14cde5c7c1956a90467fab47cfefb6bb00a395be0019e2e61f2898bb713990e596c92b2ff3ad2d5fb64352faeaaae4f7a4e94feb8d782e49028272733af3a3347dc70f10844116c1393fa39d1ddab9cc6751debd2ce23c62ca7633133ed265759272582e28b2182e3e7ad18c769aae59c86720d2fd2fbd79733a8829d2722a071081a3460da1a5d34da7ec2956e256858242ba791419771a462649db944298e03d91f335674426e86b3fc93e77aa2f82966e7dfff459c131d938531b35f29c89a4f02891d38f4a68ab2f2be8b3c6b3893fdf22f4536d9e13db8e2a81b01d46b538ea7db13cae2b0a9fdb5ebf1c09cd9edacb684710b0b5636f466f864e791d1608192d119d180f87c654ffab245aeb0e40d720c57e54de4ad0205e1685fd613868de2271343a59f51f72a750699d154f6a7f70b0e9f69b63973bd62e22c558f9f8e2a0e6cc1bc5ead5f37124c0acf1af85665fe71736c57e7b34163f202ddff1926b9cd8f051a13c51c9f9286ea3e4891011384a0b14525b9ebfd709d8cd8d376592c1b6f5d37390381856cda9c4277bc9f31537c8152a222a5931a4b05b8ceca806ab20038fbd9878571ed12371f454a91d4712eb80e4d8c480f8a4761c51840855a06bbc15182a36c50ef1db25b905e445f7ea0bc5b78d26662f243062569956ff5de1e91adb45e343acd8caa44bdef2b91b0027c0fbbc6d3ece4d113050d9b468bb92a6341e4f2d8610015b1f7b14906aa8a476ebdf1ac901ed4eb3b3d2db83d55a0e3e704724f67dbb0142b587d8c7360e7a5aaeb79bd867cdf6b2be1d96433aff7d49ed65396df219105c38fe62cdca42e190c2642a611928494828711af7f927088c34c069ee7868e0b69fc746fa76a00e165a186065a99f7875d4730b8122ce9124a072a724df63b6de3addaf2c1f19100c86096f37fe4b5cf6caef037e3a78586eb94b5d059b75f13efd40d25744a4fbdd30ec97695515bd69d316ff4ac8bb47d423df5acf215b80df0c5c7ca880d102420fde10a6953e36d53da6e4dff3a2395f741aaab8d1dde0c3271927ac3825383aefb7821205945482e3274b49b7ee0effd687ba9f2cf28e7b8720720a7af85ee6efaa59fa19ecb8065af292f24290cb0dfe19033ce819618a11b667b8c0844bdd4a6185dd0af9a0faf23e7d719337c801ad8a50e14470d3d101730a108bef5097b77f9a795289f57b8ef23592be8b00e8c4412ae3199b697b58c0e77a3e0d032d9d76dbebb7b7e9c2efd1178d3ff4a89eecf4fbf10a1d58edae2db39ded4925b07665d5798ca368557c19d8947bbf72865d844a0e9ce3a2b038250f889d1c7ec9274221b8717d19f39ca95f5b56270a418ec30e3e5a9629c1e3c7b176e627a1063422425345de8da5498cabad4bbbbb9e34a6ecf920161b34739e0ce3e298935ad9af587b654cf0aebc68debbf5359a90f415cde23ebf468158cd3a7e356ae8ef9ce76c57af4cd67d8c4152c28b65fb8206dae3f853485537bcf66040e977994373da658fdf1460dfc9ff136d1ebdfb1b2420d553e3750323a700b971f681a81e2d33e2c55d0947d30a5e65960da115f655c6c362435cd69e083dde76019ded3354600228e45151ad4d647f57a5fe615d96ebb2cdca8187d5a4f65d287e9b1cf71e2808fd30029ade17b150035419d27bbee9e382e34489813df7f058effcefc2f3cb5bb6a1be5e29849f983cf4de66ee2bbad8a2716ae09a6520986d737f3a4c71cee637dbed2c9b6e9811dc744e6c97b63490a0d5367c11bbed52ba9ff2e56c26be938b4c760553edfd67e3263319646cb86d31df80ad6bec27f20efb85d676001b75ea1769ae0d00b7ced70ad6e3de157c5b22525f4037a4196655360d36c2d959eeefa6c4da59657a2c32850e0a525e082abdfc56b26c9c8bc4ea46fa7c1a43ae874a58b0845b73df1ee95b27ebd95ffb2742825eac239a064018b364a05e61d65718e764443623fab6f2814adf5d79960f900c4c37b7b93defb9123bf9c7972dada56c99588677f8ddc72cfcfc243a1a8d6601ed89c00dfa78c7bb7eb2c25c6fc97cd4600df5f08d1df689c351d7e722de0d84744942ee0fe56e81ce820d0297e053a8d617a657f42b4ed6bd6052657fa9d058aae741e6bfed24d9e232878e2cd757619716b5c457bafb2b663f890016fc6d16e7b73ede7b8cb3c747cb735948caadaa2022ccb48e5b46559077e971333cc88e01f6a9d990ee0f7a51f845019645ff6190f18430a59bd2f58f79f71026251b949cf5985b044065af622096477e6bf1bd487ef5895d3588323b667a3e917abe7def7e0510ab5050d17500794a453ebb9ad1e562d70f8263b387069f91e4864107c5ac695c148f60f9c8500d10eaa78872dfd5585c3d15e0835693995994ebcfabf0e76eaeed1cb8d6967bc2c1732ee7cf2dbd7723d874731bfd3f1097efd255b4f6f7da03dc3c70396d5c53ef3c84a9ff60a2d8d7092c19fd0c0ad886100c6c569bd0e00363602b8fac5ea98a68b7c9a70c28bb9b14dbd3f490c0f1d164ffa703a467e195fabe67feca9c04b0627ea2b5e838a83b698c0addd4dbbf91112cec78ef7c8259a71b5d6d67e1c7bf8fdec5c0166a50576b46535bddedcd4c3ca86ccdc9c0977592c0044b3059a02628b4e8ddaf3bc610e66d81f89f59e5466ca184bc37005f9948231129762192a74e1d14de99193c9b0e65b5277b3b18b2402afdb6d4aa1419e9a0255d1923d6a4ceca90a3e8f5417d624c43cbabecd85a1ff29b58671673136a9044053bdec40182a008626a309f63d61fd1788af28e434799a4fa00e052486841acd5c5ed2152fdf72227f05239a7a4083745b26018a6e25c7d64041ceb0deddfbb2a7b4dd2ed4688ffdf252f6090b00e81847db1959b3b9ac6cf91f37fb5d7fb3ab8aa3c1b492355dda341e3af6459c5230775735fe04d4f73b334a5b93dfac220bcf7274c76516d3db7a668c22975af9c839539dcd46448a5a9c3e78e6d7917ba53272b3a21e105f0fc72aeb5dd159aca228e4a0af91a1fc7b5e5c703ffd77c705d08b7cd2ba9061c7c6f83b0b97804d4d4ec00e1d6958197489504957e05c60f4e63d92779cf0aec552a5c5391b60519760dcbc2be3665e895bb4ad75d65e764dbf49fd9bd6730e36da53b54dbd67414c6a9404ab15cc7e9751cc6b21d7638d27a0a28797ff93bd7842919b3841143b437e5f42505a48df0129abf4602f4ffd4915cd3f843b37eebc058eeb41a69b71bd4dc858f33b6c1e763d77de8a2c1571f3fcebfac2709d436b9a727d5fdef4a914bc052bdb1e1c877eec3365a620fe69f0172ecd8fd83857606d600d1ee800bbb9c917231af69e9de4e83be55b6274b801162c94a65d5b34f7f8f0bc190d09178370beaffa970698e3a78c61752acb0693580c6ff77a9edde3c2eb8d0647bc3c4b4bf9bf7b8340e22a521effee70864ec1e5ee3f6b8c2fc6dd4a7be9480d5442df220048dd286699b0e2c68a972bce61b145392eb8c3b6561a34601b1e0d8f513dbacdc43c07f411545d92ef4090e1623644d7244633636c973381d5548ebe27237467af4131674f50470dc0803c9149c8d06a5223a1c2d7358dbdaa95863997ecab050bda0a618e7ecbb9b400650160ca76b2ab081470dda32917913b9d2604c2db21dd0652d9be6834cb255f6e37c8212823666e4c50b5178f2068bca1b4ea16ea38adb8c416002ca64e909f9140f51b54cf7eb09b070dda461a6fa13687567838c10abcf51e2b2b421b192b6e112ea5843a3243cb9084a07952c90fb35369ab4d6d04b6220e4b911e3f0461ab980ecffba585f7056131b8cc28ffe07c68d81b3555b0301d501ca4bb213db70be106a70bb8bf4ff5501a00ca8f7c4b5d1f6f9aed09a8b7980393e6e03fd16a9389d85c221deae38497beb35c04111b9209896b81e7880470e9560b0c3873c0a44c1db9c4e655d6fd7e8c052dbb73799dfa9aa5a133723bb3213fb7dbd9f8d433c9c1e3f0f915586c216989e432b84616f5a6dfdeb78b3791a0dc13200edbfd7343827aa3d37f3d81652f6fa571de01fb62c72fd98f7ce76db5f2317bb8bab9a09c74f77847b0a261a9288d3ef3444149f1aa7901d5f2b9b736f63bbb26d730c4537f67a5a105a01605973ae6b42fbbdbdc120dc6aa1e1a4ee59278583d97459dfbdf70bcc2a30e8fd22ffa85da47ded07c549444ef35fc8a62261dc15306350734a4a90361f05c65359af4e02017fafb5cda52db7df17941a445f05c9e52c784df303e49981873dbb0f3421faf90f72249a1b333820e7f432a34bc72174c10d1ffbce7785689a7be764c0988e186a10a40ba27a0d3ce8540596e915913eabf975ed232690077c325fe29617456327d9363cc54e7b176630f4722d99f0fc702b7e9d4159bdf59173b9d0314c5ddae3269a19093d685ce24b5f4b33712d8a2f2ac7474d7e5866a9f8455c72565ea7c8506fe54be3579a5faba6a373fcccfdb9612633a45496129385cbe542fa3cc00dd0f22794ff6d24b36a56cf9f1bc07f974469a023a600bd9e289fd01896b4b015d4608f5cfb70516569d80f81449cf26b1a8fa7b742ded021a320a1445ad292c8e9570d295fb47dd21a1d86552f596b1be0a8ba9bd3cc7ee358a0a4bfa73c49196fd0aadd2a15e80d7c842292c42508ba03473635f528b2ce10479575e803d24025c2338f289fb5e6776a65cbe23f1cbb9a1dcd5ea22e6119de8e15db069953d1b55f5b84870b3dcc07fbccf51bf642a2ed7d2004fcd543256827673f391af18d3dfb587116317e52ea6a084be58fe88d2f546353f117eec08666729f97679563a36ce93bd68ef65c4ec92309e997665ad696c9ee97bccdc756ff3fd3b2a567b892cbadd9131edcdd89fbfc04e9c966807d9beb5fd04f467e6745de589f97d6eb9307afc95ee6e92941f2dd0c464f7dc0bb523cb02d6223301de86ca7e9239fbab748f97d2a713ae8dbffe352eb1a72ef90dc482fe351aacae90c107cf2abf54e40407efdfabf31e744d1475644c1d70e18c6d536bd351800de687ee6177ff8ccfcd2e52c4f24862ce10ae4a2f4c92d9fab4830a7fe6942377992d433c7cdf1b9dd12da9228e3400c655252357e5d14380cecc45c1e53d4c94e348bf3a7f335da710dfebb880170004d5f9a387bf83ac211db0f8f1c652768133878e9ca74e126ce6fca72e97a6719d8a6c2002f337b50444cdeb3f0649600338ddd15d1422e014dde07f331c7ae30fcea025201ad12655f92e3acfed258ecb2a861d6273b5cc8f39daa7ed815bec4dbdc4f0a5206d68656bbdd58fd704c5cc8f12fb6e633ac537c2636ab85afca4db4c12f5e4ba98095ff9fefe6363ca939fdada66f62a1b190d824fa5323b1328fb8e9259aeae6c3c8321a8cd96dbf0c5f6ab8650b18d2cfe7d8a554a9d5f141ae9036d7715582f56fbc6f5afa241e7ee2399fd1d0acb990bbff550df892edd1f2905355f0214385239314fe347bd71e7abaf0225570f39bcb3abdcfdd8f2b260e29d1752947a1d4ee86637fcf267d749eb26f037e5e1b5f166abefd10867e60a4c6204485493aa0c6dc6276273ae6ef5caf18411d259666f13db8e9dd3eb46ce2918ec6a376db272f6fd87d001c3468d84227ae9b623af5dbca0a8381e8451615842f89771c49c0a1ec599d796d941f87652a2e722a291c955c5b48a36f0b0fd69e12ee317a0718318fad85a9128f1e20a80a9a8e5b25e217d64c112628235de52fb4d1493113d2e76040310ade7e839a71428bd29e38fbac1ea2b60bc86e4c725bcca24e27fdf82739fb20649c70fb1b504a02a5f1c784d7d64639a6558207ae041c8c2ac28c298d96d3f1afe99a241b73b27e7f513d4753c9fb7fb007e334348658ad025c172af6ef95a81852a42a468c6f662e8074232b7df66508367ba6ed61161e6bd60dca9f6ffb641ef7766d9f66cd2fb15924f68592ed27951a780ccb4fe48cea51faf8dc32fdbb828d2ffa443af40876d9c1b615b7cfeeeaec06733cada860621138b03d6b53213d390e30a3a55d7cee7bf81476a234f377ce5d6fbd63d5241a891aedb8d3f44d8695edfd93205750d529863abe081b473453d0481a1f03de6dbe83a86ea51f95db951f31e69921c75e8d6eb018fb55fd2a08f21a7325e6b8f46ef9d9b5b18d44ea54f40ac7ef54aaac01d962114b76a1bdd6b17522240bf8cef1b5254210df52b3f6fad9c10210d4404ee5dc8c557ca27002803ebf3d73d5ebd0df20e3d1ddcc72c5a24c75b24cf51fb32b61529e44d6415511ddf82476d3ca8ac8fcdf129e3ca5ee3894ef14ddad1e633d20cfb6c6653cc66071f7fda1c91bc4e5ab5d4098a30174e45137b40bc39abf65716c9f8ed0967fcc0a1f952387ced8ae2926d6bcec93fff3d3d902b5df14a5dcb7f19202db2f898addd008b5e4eb7a3b551673bf4b71093b4b8999a5fd63088e0f723d6eb0af4f025504dfdca1092b39d85507055f2069141b2c68b80b94a476b121a6070e2095308fcfd06c2fa33058fe3eb5d0ac72a38912011c112ddf3a3d0c8ffbceda157629de664f417fda3412ec610f27d55a61d2937527d5c7dafcdb6f5130009c0e577ef97e32a9b3a1c5ee6ab1b7d4b0fac97a1f3661f9344b3f32edac85fcb4d7645649cd7012289bc73b8b6eee7153dad2e4293644d6cd341d5bb9a4cfb8c69a3930106971cbdf30ceb4a2c8279627ae08edd1adda1c03ed51267bea19822ca4d3547eb7c57173850a540f7048ee33718b41ed0330d888f198a8eb247ddde3a5b8af1e3059a5c4aa60d8c258de10937e94936c0015d8c42b746324673c3c515c52b498bfc1f19d0fe3b456958502511217afc388a9b8ac7edd1522dd74da7cff69add06b60b63a4db9385999c2ed8b28ca3284b3f392004feea5e81fcbbb46c7c0eaa775e534856e388ee2ee89922d80eb335525632cdd064f2c63d2bc1890601b6ac88555beba64373ccc71266d5970619e7676ca28879e5918bc2e27f914b9d0feae69acff00de49d39a6bd87ced8059527e83a78e13f646b0453e24b25fd7528afc24a8ee13568f84031641efbd5d75128fa5b3b69d690d82a98c174c170aae2a6512ab5eb7d0217c372fc7fbd9fd70b3c041f1633e860056c1f199b320f939aff4d4424fe76166acb9827e8ff98963be72f6d9585915aef64d63a52acd74fc56f7395079268abd71674f2aceef9d27e03edbdd079e1ae13f2937a1050d9a6626103c93996ceae20c8fd251b0f4dbeb9a16f1bec265e24d6ab8c06b0c9bd325ced430592d8d506bca9cc275c2af493aa8b2d3726257fd1ea3fdf4f024d3ae12b99fcc76ef9e27411e8a16a074ea27fe9e2638ee4a732a74c170b03386e9fc163fafbd20f6e09483ee2dc6e41f6ddd38e608e9e6f2a57cb8a5f75901f054e23f17c9228915696dfcd8a04538a4f8290f925f22951af42c376dde5447c893b04358a141899f488fd0fd544f49d60403970e4178c86de3d6e7de606f2f71c71cf4b385c5a0b6011e9f6d6e99e07d71bfc955e481ef9e203d0347de92671c58d6b1e7a473e53af1761a79ae54e4b23eb27eeeb13aceec347abe8d482f8a7304199168235e51629b65e24164f80c68bdaf2e7b3cbf7631b2bec2f6f2a5a8bb8d2a190aa8c8f653dbca7c062e18faadfea902ccb094f8376c9e2d49d1b06a9459b5564c035f9b2f42c31401979abb27d6d9a293b272fa961ae4d9a72f7f5811b885a1ffd1dc6313bbc51d3aa985277748bc21141c4f9a81d5a34a70d426bc5909ccaca57b5fe5eef56c455aae666819cbfddcdbe43b94340c191a3cae387b4336b225614739cd0e29b7a7b3caccc7eae5a3898ed4bf5020ecdcecf03a77630e1a07f01a34f26990c5b3fd550589b3a82ff3c3cdf4897e92fd90ca101be2335e3792f61f2475dd2041e29d7d8fddd3ad5256b3440e9deac833740ac343c85c241468dd44fdbf820819edc4aedd0e32532999d201aa0666729ac1aea069973760fed308ad3917343f24b9fd7b5ac2051d4f9a04e0b2538f89defc59d68321259a1696d6b1e72e7fd92c6398af18f9d1bad391a4f85f3f07fa52d6e68bcc6c79d4f461f89e18bfaf43066aa86321bf9f50222bdd029caf6ad05889c53edf9c65a9327cbe33f6edb49b8b6a74d3a16f8397cced23b4a2bbccf939361dc48d4267913410ca99cae4d0913f4f23f67eaa533ca2e10c8e3df14d4e6d74f492e438b5f79dd5240d166c6bf3d947a49cf2505fe9284bc062f719ab4115246d5c3965d19b4daf2c017b398c48abc4cde76fa4f15abe9271bffaf20f726f30a79a90095fca62882ab2f35320eeec559b30ebfc8c029c8711bba2d3a39ea1fb55d101b0f101f4e8700649267a1d3c006ddc56d1ab665619f53a9c1ccf7002fe841b56378b450e4770e23f4d0ed72ef8f3d0923499871470265bd08b60428f0dd5bfbb6c4510d1a0791c98636a9c9473b6d7ca4323442e2ee7ba7e07f5c6f214182ccda370b5730c4fb1bfa0cfc68f55a8613d49e9c42eec21556ec244e42f8d7a5f2f7fdbbf6fc080aaa06021108d61f7ff83ee087bcfb3b117913e5260e9efee5551954be3e6738ee01e298595ffd3bfbd191049125eb1d03ae012ad4adaef1c9e9af403f33f04cba29cbd619283155bf141e953e147629095ba57b2d5dbae8681b0fdc20e727b7db4e84ff0c3c6c4730445ce7f059a962950bb184d8dac6008b41f028adfa338cc4fcd06135b95d37886965fd198162a7eb571e27f98bcbf60ce7ee7c9bcf4d041c75f93329bee774ab9476f660b9d6954bfda5a01fe935b210c709792a34434910f54c806ecba02dc7ec730f930d0cc300d246bf2638669fc4f9269250fdf694a3cc9b21b81653ef23b2603384996041d3adc525f49a31dacb1f8d294546dc9f0e2eb9cf15257efad595e91b41580177923428a04cc75f2891516935e4d17e5f9284023c69d1d56435f7db01350d7244b4ad3b882e502dc40e374b79ae58fb1453f3d03db27cbd0b48eaa9dd24bd0c7b42b90c3a6445ccf6d4f3a84e686484ab1656070f0486d1568765e83722267ba390bf6f984012e082598256fd98b8de6600bf8a98355061caab98d389d7a73d14746e7aa1b7f002dfd9b013a46c2de3e1a3f5c3ce9e0bee696839c72dd0172758f8730a1345fa3e405a31feb0ba50015d09ed1f1e7532b0ea3f86c8df9d0fdfe4c9eb3d1f53dc96748b151cea3217b95c7d7f90e7982610b6dddafbcdfd5c6221d1a1f630137a7d8da19ed405f36521984500090de6a72ebc9cf42a395f5e80bcb7615dc0fa515c5a658073d306436337955c068e59ea5c16267143a56d405b5352085c37565110b30a96a9f394093c625a9601349eeba07951a4d9998043ec6728f123e6a3dc6a92958e0b21ba147d1ebf5cfe4ed2473679b19da1f2126a7ea794a7a407a937ae00d8458f0855f28e7e7767008298350c997519f7bfa3333181377817d6722414ce525612b24455e61f3703919fc58145308c2357b7a251780cb69c78afb5844b1d83efd578dbac94f9e7ee3e963d5bb71b2e67e4334a969b3fff40044a3c05f1bd6623fc93887db97a7c42196dd17f6c403e80e4c688b73676918ec0f8585f1c5741ad0e2ffa540cf97699365030e325de262741585ce2b8477a3ff2ff8a88d461ecaa78123a7a546f80242ead3d39d2b11ebb0ad74085e5ad0af8a6f9c93c96f33be10adc8648f28ba8969f5f5ee51be8ff81f079942a557b79cb2a4a29acd35842eb78c7eb79540f291ca9ed8eb0dadf1af0c98f13b6f321eedc92a4c5b86e7f7c23da06d984837ac6a972d454509fbcae6d11e0cdda7ec9ad03359f2e1e4231312d2cab3e96960d28fda3e4dc382bc9f15a649b37290bb664b62d58be0f9a1e8dc3cf1cec9f3c16c197eaaed86cf5a9d38605dc37a781fec546db299157b7b845db06243669378e25d77600edfda85fe3e75bb6567e1b93fba3626f0fc44edccc327a81258edb09e40e7e6fc3b8a319032a6ed96ceeea93a06f27593bbe074c5f24b716b0df93f63e31baf7100877d8d38e6ebf765d51f73f2e57d13437fffa77ecad9ebea55d295f25e8a623726de002b22d6e6d0f878091c16170a5b74727729e2ff600da49bdd9624959c934fefbe2fda0c746cb1806ef2778810640624464b077f4d290fd41a3cb2186a16b598efbff616a7f746408bcb11217f3d4cbb57d5ea0d3b36b343aca063a1c2cdde07577583022d06a1f98b97a6b2ff8066d5971252b29121f3aea92cf616e2703abbe9db26de8f053d08c80fa03e9948129e2b63a7b6e6ecb7276cec5e82f0f230325be0fa0748bcd520b9cec1cc75cb15402ad3858191628d151874d2381ce53e8673bb1f25cbf67555cfea53d066edd3666e62b7044f94360fc5cf5eb0bf71d8c6b9d19b1c6d932dd12ca2ab200aea48c7e2bced1e75cefbd1129ac1e300ffcd62bd5efd0a6221dc282a9fc09a37dab061bfb0271a16bb79aa7c7c71c40c960e07e1c0b6492e1572f872ea796f0d76acad49398a60de7ba3dfc1c804ccd35117aa71b91281ffcfc2499f484f0970c7eef48d0e7aeaf7b85ff74b20a95044391a4b73edbfad3cf38f4357f15729788800323602c296a798dcdec84f4e51a1b1917c364cb5ca9294ec7950e81bbf15e8986f727569a87f2e5aa52deb0aec9330abde15253f4197de419b2e4942e7283966ceed1a3e95283352b98549564db2023350295350cc3bc32399cb4977381e9c59f3dd98de33f4408f9ef47a400c87bc1508cb671129576c3cb2336d3f409f90e7b739a68b9a3a821535c7a988061725997d3fc60199415c147cd1795616c0b4b519132ab7dfd4b89898d9a9d6490ceeac2590d4457286bf37818c9b62c84e2bfe4f536f8a8ceefab8210dc02332089a342e129e5a5fee1d9fd16d7700ebc4b0bee1790dc97032c1037cdf6fdf49b3910b84fecfd0279fc97cb52d55b803261439c1001b809ec93cc36d52746b53af5327b60ac4210af00bca9040d0643ee1a5b0ef6256aa3c351231f820de808dc6e991727f95095fef341b29a6c72d922225fd805f32d6cca7a652ae4783481146a13c961d041fc2b4897d78e712a098518eb849ffe8451ed9d86a0808e15394ad3fa049c7d4bd212dccd5b8d064a5fafc54b0e0f2033a2fe4e975e60d0664ee10e17ee204bb249e6319f55eb8f11a996dc1e66272d12937eb0b3556eeb2561785105e3bd6e42b801fd5a316da0177b0e4be5f2ace0f4bcf33dd10c266273163513b8f154dcb01849695e2f5d1029ac5d45e9099033e79ad3583d1c926e639720f00f5b3fe88b8919be3be3f17043d7e27f0d79f7b2d90cfb598cb39ab590129487c81780e3d7cbc93e4cb30416dbdbc84897011b9d2cd6b6292f12a4a53b36b52cf450c61b0fc5ba6a005c1830cb5bcb73c9d8edce9e215ca0e30f7d9a82ba027a09e43fe9ff02f8fee46eafb0e33f0b4a322599ccdbf97031ba949d20e8d7f01916e63bb4ee2f685bfdcbf2f20531f3efe284c66e43ce64a3791eb5f1edc99556021d9d1c759f8d2dc62ca86226212cf36287bafe8cf3d8d5bf3e898404516642f1841cadd2c7d682ed9c789b56c2a1f216333fcb962279d85c1c244a7036028cb1c85bc4c6c27ea48ffb86ba300a9792fd7f5e800af763d40bef52f20ebf104fe3cdc79d96cdfd5e927c56dc99b6ca2e1ad8eccb7d70238adb867451183a2d74ef294ba495cc09978a270101d7c4abfca0a0e3185e7335664ec297c10f79e3712da8d07861c4264e7258bed05cf69d8ffcaa8b6b4548246e7819ea181c50bc809cc69556065fc778573eb9fa97564ef110c077a84d1b2f882715768fe5185a9465384dbf6b6bfd47165d372829ad17c0b41e4fd0967c82df70d3312eea2fa5abf3631199bc5bbac8230c0fbeb40a770535f467fa7bde0067d4855da1f276084ad0e32628f9c49ffa67f86de6734190b6dce73118e21b9bbc85f03188f2d1bd2b9a068f8e84e15fc0289fef9c2969c210e59070cba2ee38ef4fefde9b28ab2a875c4f6abb4a10ae4b11d603b7fb5d4c44e8fb45d9547731e9f7eed947c46f4c6d45f32af40e53bfe67344a522f53c011fec2a0d049bbb5381f76f7c8daf10351b3a5f97618ed05a3dfee45fd5a3ea0ca95e900456b1227f74e989f24c5d82974e10b09c4a65527a873a87a7255a8dc8e5ea97c82628f7cbc90464794da53e64ef4339f1e610c57a3762507e8818109f2ae01a9e659bec436394beed9ec8c275a0d80187f3fabddc0d39366bed09a301be02eb8cf2bb932abd6d69aa2eb20f4d09b742ce7237f094b4e185c032ca396cb0004e4a1030e6d51d08cab6a96829deea3debc74280b7ec43df5d326c63087a21727cf338a7bf16b8fb5c4506709b6c51ef1fe8720592f252c132bdf50b0d0a63402298dffc6131825e2b824e8af077751ab4c883dca17a754a4adc8c348573ac8bdf94e86ced65c3aa5ab186e03bb81d23b5abfa332baf493b4210ea6275ca4fabc9bde2abee089a999d9dc81d902a948fe1cdf2f31b31774e8ab594aa2434a3b0e9584b2cce2bfca1bf56ee6f892d80562989961f7ec8415ce42aeb529c4b10e9bae866f95ed5f49a1e4066b2c2ad37fe3647aa1e06a5910ee947995e2c96fb37aec6785752ca1f562a6f0a415c6259ffe04393118a2e93088423f735e80776c5a98d63c8c3e5a5e5e95915127e19c284b81f8475846550e7742a0aab2798ea6a8454fc2aab013ca776d58dbfcf142f137f42b9a991d3e50ace8522eb04e6397b8bb89a6a6c6fe61b7e64c419fe751fdbad0def59f50b35aa7ad14eb7dfecf5ff00b8af9b4a00830ac1d5bbb53bbbc677ebde7b6d14bc364db122206ad9c8af49965c6d71ec9d5b69973297abbb4b22a699e2b7ddfa4b4e6c855e78e65b8b89bdf635c9afdf72431168fd66623714840f49b69cc1d40e419d59e05c888f1f7e1e3da4639c13a3004b33c0efd76d33249b42dbc6ef7503b36865700796e53e112d7cf21d785c9404de08eb434c9eb68bdafef842d3d2244b9d338aaf7c9075595c374169baf2c6b4658e024b9a0e66ea0cacefd072864ae1b725f3c55907379687e740981ef13dc6587e1e90cf88a1a9e5aeba86354f9957c2eca09cee8402c40778bcbd92da776d5c25b8f1c6d74cceba1c23fda28f8301dd12f0b4218897e044cbf3e1be10f76433e6c80ca34eccfbff40427038cc59ba80722a2e9e553ad1e235c6982a5c5a0cd7b6387d0641112afb18d47d6f306b0d6aba5d0ef773081df6feac42fe6a05220f9f9c4dd18ab66070d8596b3e09b61108f0815ff12c5ded40e48582fc4a59d92a3d4530fc052d099a650c1ead4a28db3beaef5a3d0f460655952db297ef7c4f54449d5be314f8a923da9e2e950970a32fd4271df47007a99b38ea5ff6b3b5a055f8d723f41bfa1c0507d1c246ff5b0c0faee79ba4e6b092b0e5a51e51d14f208db3efab3905d1920cedd116970bcc1d74cc91d897cdc1883128f93253ea16753c62f447b6bd42f59d4372e0d0af31e16e54e38839c2dd25208205e70e815e9c5408aa6ad0b6b97aaef426f61991a0bc27c3faaf3f2a91d837e81f8fa57f9a155f3a77385b64d17c4b9fdbe324fc6eef3e69aee140aa254626424b89faaf87b82aa2a319ecc1f2e30b169557705c66d235e8322ae6b0868368ed82c1a743e4f7707de6e53fc900baa3dfe38fe9c683bd60b911d4cae935d6ab3ad584f14db892be1c45836bfe14b671b62636826d48b51aa76f8669c94feff4ed4dada6472ef68867411275e44bd346099d4e2d2e9a413651a3752b06a0d27cbeb070b18cfbd17f555801bc86a144d87a4928c2053410f1ac1ba0cb1dc6db26db035c9cdc58a1d875d0a147efdd574461a4767796a644027f9651c5cc6993af64ea4576dc8a2a8868d817adb29119d3481eff03a5e897b5e6a66672967f4638eece414f94fa361c64f5bfbe6322cca36d7284f59e77a967d08b0ad3439d919f01deddffefdd052eb3c163a01ce7834843c9d9790e0824228156e9b55c5e522b9ad0350b3e703b3432fbd72cf9547a69f1aa47a927c697881161101db3d8b064aa86a433b6ba4ed1d3e1ddd29c3bea69d1c1ac5c40262cc1ea14f748d92033ab94711ec9edecb7991be66130aa1187b0f26c04bd53458b864d016ac8a7de0cf0b3ce7ecf614561b3a4a771bc4b51e1a597223d057ed9a81ace415249b6f11c3fd2b151daf1891c9e9c4383c1aee449b3b6a2886282b24664d43493abe6254b37b2dfe4e261101feb45f3e7c283a2068d7af98f7a47ca581b1a827804dbf737588778a96cdb56c6a773fa83297fdae9dac25135e256e5aa8a31716ed67b6970177b723003692c27c611e625bddbf19ee2a097cdba5dc36917fc8ffebd71e697032ae44b7c7c6929dc9c1a1701d60f3e2fdaeafbbeafdf717132a94a3aad383ad8251f1f7068383228a6b2bf032edaf8516ce19843c1c18509df0a8004e28c37496f9a2708e5ed9ee854ad7792ab41f2bf039a4f14afddcd2ce31cfd9e0787fc7803ad889d907192b9e16cdf0b955e9381849eda9eb50444ef71472362d766f8804b18249e6836d7da1985593c385defdf83960a93b565ece092290f52513c0330aa6249d751c3d7f5ded97fc9677a087dccc900f9b71dfe63a01fb175382ca626f401069494cbef39a70daeb2f70f084cde7247c265585d5ccb19003d93c477c5f15560f45dd7976bfc3ffb553fb1bbae6be1b1058b0009db97c240c12e61fef5de7207823c7c2dd1fb1b3d3a9e57e995da6c2e699d005e5a5cf59a4f18a0cab2ebbb414ea5255abed636ee97f59e4ce2c536f4b73113521ac58477bb24e6bb57bd4d24d4706d5add53be113c29124f6c7bbdb6468023082e5151606b68f3a02fee385d715904a83b4b776ee9a387cd087f3ec992ea3d60d6d6af5cf0c087a668888c1a87812ac88d2b0cbbcdcf8d7c9907e95b7c6f1065d7f91f043d4c1746958e30d83bebb7401476ab95f9a0e7bdb77ee03c9736fbb890b652c13eed8ea62374901e6600b5f50940f6600b0a19f9d0020fc7500ab164c3de80ffb0cc28a1c1a1157c5f0b83718ab43e60668703c99be6c7e814d767a91994113c7fd450dc77f471435ebe94d96c9016ad60939290a5323a6c2f3299b8b7d09036f03399ae623cbad87bacb691a6a42de0cb307848581eb3ebe1cf527356dcf5b821ddbebb53bf5097bccce7cf665780871d63f997409bb01b0a081793abd939b21109be7d53b49f9a45fcc1a24222d6c345b5ca8a8ccac354bf5d4dde2c3b3e9d8eb2f62beec9a3f36b7c722c771290a7f3b2fc75b382438781ee424a8e49036eee1761b2739d4615706f42147e4ac730a06df8ddf7cece02ef03bb2cb59e2e7f583bd2aad6478981875eaf70ee7fbbf839fb8b6ffc6d9fbb79850fdf3cabe139c465508aa2cd7e014eb413acea7a91f2b4f3065ef551acf73f82e1741332e0718ba1777495ae16f2d642df252a9a61d312f566b817209c8dffac596827cc06b0943eee66c659b76f5ebd5f92034f96fdb1209487c8b6871f16dbf85d996511e5a64fe9aee4b4a86a093b195bbba09a09d299adc7b5a18cfba387f86167bbb13e6d2ac1da09964eee3abaae81bfa6d845460b668e73a42f8c324e3b4111e2f5180feb9599cb4c3325c4995ac7680f08c83f2270f06f348f82b274cddf47c2fe4505f2033bb718e2e39b1df71a4f9ccce9f10ffb7710fe6524415ef5ae539706260361e8c024ad91c4d9ee968f3da3a44a95073f3e945fdd67e716d4a48071b7495f9f35b55bb59e1d6897ad5d588d27b1f6c419fae5ea2fc770ca955788b2d19864d7d735584bd65c3f09c8b0155994655002bb95e1e61bf68a4d321ea59222375a7aa9e81a8190910418d5434017b0dfa503611db1ce25e39a95bd58b39ecaa1ddb977c952db9a2f94fdfd0d596ff4e13a0c2519cdcfaaae163b48428835d4be5f0b17045cd3f25459d20e8253180e5c08e6d7a3dc4dc381bffe4fee6f0a1ad932ad874c0353501c51196f22d660abae425eeed0295ef56ec940c05396a57dc29c1d2a67393d80c64036aa6bdfab9a2a1ec57d339f4db7c6da878287f9e26d96cd9f03d3e6e78ec4f4f08757edec38e5ff7048984b18c289cffe9e886570bdd670b812c85b97c2ec55f4b4fa8b2d303c3239da4439f333e358f1ec3fe452c9dccbb5b3fb6c0c6664c152fbfe7d0d86a205fcb44dfec382d4e3545395fe62efd8012515dd29f5620857fe0afc873dfa90ff1b8dd5cba43e7dad3d99bc25c954da225bbc3b3d77ac5ee150d2f04502b5b35afb9547ea64a4a88e66c61b9e89fc9820ed198a75ab795a9184665f58b645afa485dede8005008bd3ac136d4ff32dfca0382e2ea61d507d073b7ccda447f116b7a5bd0c3f3fdfd867926bfeef312b97ebd93d920f4ede1e0bf96fab5bb7506ea2ce4e90fefb13a2babf7a301bbd3796dc3596e7bf33a6e5dfa5dee3f39a3f506375fe50bdd9869a007b509705e8eed5dcf261cdeab577ba600bce95529b1a156392264e5eabd9bae6368f5eab54ea1e5c7c8d4d0a2fbbc0e65d65bbe3f74d92d622bb3579f8d9625a022dd3877ab8bf2f81bbe1b7f38b1d8aae35bf7e0034cd06a70674207ac367c714c4341f2623ff8475497290c5a29779761242909b43bb70a676ceeda052b80f477330e6f5c520cc0f6481225e105afd117a9328c38e69722878dbd50da7808b984ea75cdef4f51dca2bf4d9eac76338408e9e3c049125ed3a64e93a17f6f793ab5fa283a6f2342365e92b198bf96de3a69c4d9d004e81dd6d7c2678490d4276453696306a77107264526133d43c530b4b37a6e7eebf4c6b56f71ba6e1a40e2fd00858221987c9ab8cdd73c84e8b41541ddd1ff61696de5c0f1dcea95282e0fada646626f89735616a279f16f60a41626a32f7295643462ab47313b8c46a269a966f670f1c0973eacd66c832bda8d9ce68c97f39a05c4126e7fbf4568fe58f2359b6feb7f3e845eb48f155bc0783e182ae7ab60e79470e544d7d298fc4ce47621e8f5ccfbc0bd732b1cfc28d2d24be62b84d96a77c38768a0fe3fd6fa4b9fe08030929b70a72cf02a562601ffb8ca2fa66f1f1d7d581a8755aa83c402623ef75ca6cac4c45ff098f0117f8cd320f943f7dc4d342c731c1e2df54e6b67574455f594d5711288055b46a2a3ffb07f83f89256ea6df260115815309cd5e70d595823a280cc94401017ac77f4e0aa20aec9f6906a8e5de919ceef01b65d829cf495d1b96cc4e7c752cefc183908ea0ca0b19bace69066afd1876f3c45c0567be2f07500bac1287ac175a4a21d79f929644446c7a5e765db3cb5e1cdbcc49231696834c282a6e7299e97c13c68b2a7c92ea993807b960dda7db0e31a014f70e729c402b9a56be1be9a9e814772b3f566240f3b9251e0a23d2c18a7b9db2a40a79a4072c8b60fdb7e866f408f580d88fb403d4ef31ea13fcfa560d4790acb3ad8f0c552fa373674cbcc1f3eef04e4c859c10b4bfbb0d084bdb5c8d66665879c15a9ee83b98049138e55ab589505c9e0dbd2587709fc293858a9c06ad4a9896c7115b63fb4eef36a818d926e182143af24213b82fae9b9d333df44576c1dbd06fa18ff23b8b08fb22668439c0e42d2b6eafde6b8ce6b0b17353eec81dd5775a219e5a5b70300532fcadafc7363508cab272a528fb3cea1478b7bbfa855228d877060e352e12d9e1e2676a48161ab5f4645648eb54f4aa2e068cabb99115cc99c0d516c4af54ef1154b9349477b4dc591cb8294e54865fdef62a7a99aa65ae6c7f6654b2535dde9825dcafda3345f00ee69388a21a1cb0c0b87311c83f62ef25eba409d51a5379a5fdd4842e6be15ca7c35e42c5aa96595ecc6994d3417fdd836d11d24b2c2f615bd879fbb90137b04627b105076d27efbc4823d0d1a311524d24934487515d77fd85c8fbc31c61e1b37cc13fb7af7806d055076c92e0eb62a6641a2e317aecd34a298d732aa8cc2f489eae4ec0206690d7b25c7396740afb6932138e83364f21e5b9585adcd32c4ab05e9ac24a544560ce3028128162502cf8caa7be563dac7fd183c7cd2a917fafdaff93b78c43be23aa335b9f96ad534c511ad37212e9be5167a617007e19227c1abc5292c1c9334d5438524ea8df392e86444374b8b847954a950ff31767f5147a40c0a9c527bcb2f149a3217c85a40b7e200c4b73cc0ca96198343914b89262752c53a7f880a9e3448a3cf959b0adeed2b729396e6a6aa2104a5137c110908ed79439a8d85da276b5b0d2d5e775f4ae0dc9d2333f7f7394661c4ca0c4b7d474448253693f2a4ad2cc859fabe86eb9d3da489bc4d616a26a53d14d253ab7fd3a0a72fd074ab77932c766705ec2380bede9db66fcbce317396f0038942060d2bf33d5aa21bbb707ec2dc504c1e8f30236095c2be25dbb6e2456966bdef6c5c8d4788e505c164421314ea7bcb16cc51092b75a83074b1919431e51dfc15f3d9a7395779fa1cb5932d8c52697aef7575837d798102da39b521af745860e00e2e761c5dd0e9787575ee74df0807a6d561d98638cae204483a098945b06c29015eff49d00b71c268188e660c6f2ad46f33f5d0de1743f0638e2afa1cdbe734bf84de74395fbdcd27fec3959fedf4c7864c98367f5894504c2f1f018ac1ecb6cf2d772074306379bdf46072a02f5bb656188efe05cc555dd51d4ca0b5a4bfa852f7a20c529110e148f8d67e3cf25afeba7bd041e5b2263f2b67a4f13101777bb1e300006578147bd6538e7c8778ceb0b78d81a666d0266dbe711a05f59476cdcf1073bbe50d1017c971997df9f97f6221a43dac0c23f07b480e3621d952b9d73203731b58e4bcedb43c62f7f01890cda543fd70fbb0fab6a3dc6e4b27783b58fe63e9616fe9477c6e88e09a0ec43f838f4d2fbe870b505f0821ec82888b53f06c3203d6880071f09eb07eb55bf6ba6544bc492362a04a400d36e63eca255bb61f8a2862468dcba4c1422f02571d28d18aea605aae9b111455b7831fc75fb8d800ea5a38500273f1f0ed30bac0c374792f7f69fdede7987b069ebf4780569c8274f841da2049ffb49ea4de6522d54eef70348e9a1f20e4b59efa771882a01fa714b9056d7243bf8f89ccb19b7863e265b327f68373ede2a81028edd700e8e8c0f558ff4a2859b5a267de30fad5d13db9bea20e29591a1bf275dde6ad6b35762c30453677840441e54c77301c70af71ab714ad638ceec15d4bdd2a8e0e6b8ab063b35cfdd3e2a7a9dd1c1adba67d63a0ff9d0bae750a8ae0f006d7e18e5eed4fec009238c9eb010a12003c085eb5c6e726f708d1a0d228b9257c28c99707e9fddc5001558e4f01e0d65a9f669b4a71ea3e95e209dee383eb728be7345db7dd47334ab63313f84247cbf792e46de4d4d80572e336af11dae2a2a18f2b1a11ca1acd589e1b86419c42c107a78bf0c1126ede8b107273e135484fce0ff7ad8c4131e6297d02c57c3577eb9ef5f94a33dab6d060e5a4850eb044674b1b1a9cf5b2d9af32f14f1e6e74404c34fb8b0f209765d0772027ae0782d9c1f0096f8aeafeceb728884c70ceb666ca26ffb82680f00d4fd99fba776fe837dbbb4812a35f5e1df087e3aeaac9dc02cf330c6425e396e1d1944d76f09cd5420f505afa911d994daf0eedf8f181a35877ff782322e962c8db371c721f1a74a4fe74675f303e8c50ed411b972889cfb1349300c1dbc7c3edfd591346002579214f915f5452b300e556e6c5f36d6b27842bdb6a7449c87d1d4a126cae25324714a336a93395bed1718e888af037223e6cc227c59a7bcab889b37fbde63c66e039779462c17f78638e16f7c07707a00dc798ab2aec09bd5ed42343398e8b1da93a91023225bf4c69b3efc6ff175d4961f48bfe1c722a28ca752b01f8262a65fa98cc79a61dce7afccde7ccb0db7e76108c899f6cc0f2a4c4da3de355822d8084ef5e18280fde9502aff7a4b5ced4f40810ac6bb132335ed5d35a165fac296681a91fa178d06b05e490cf2d1ce41d8229e586285330d299df2fe04b4c287940b79efafac3568486922de10ae32d8356ec9c95fe21b98b2a119cff380f907bee4a3d78ae40a35fa7df1ecb22ce989b99e1d979f97ebc7ffa2023fe15efe88e82622b316a6094a24c238306214b9ec6e6f958128814fd0788dde5f320353fdfc3978a1680907c4a2d32201df6659ee0cfa0e97c011f83e4650be73b19e95a48ab3a47b3678aa0ff55a47e7b53cdd33758a75ec41b45dfebb5930425c69d9f6dea631dee3834ff4da36bb72731e713d57afec1527200c012b40278be704d69dc60d73d5f3311050e4cbaed4249f5cc9fa241553f06969bcc2f5678cb65467885a6b6bcff38420d195739af409b49f4a02f112937bc9e707d071cd70274273e1a860334d44f16d23f208fb42ceb8ad6acf73c550edc1fdff2b2e0b2c074ec1de37ff24337202b2f5bd535bc2c3f09fc07c2be1bff91331ca1baed9839bd0af173420ddb937c1dd739fca179a96222932fce84803b6c4182ae3b58b00fad9d633c372570b2d2c9de1febb8d22e65b612ca490c20bde2c6bfae695fc8e324a3f951f9159837ba1c40874f97e52018ac06e9dacb4e2ec9afe64c081b641d0848cff9d657a1956e73b6d2a6a790d895853831196ecb5edf3ede09f2791daec244666850621f7e4c8c96aec4087797b604a63213dc8df54386f9a29590f905bf4912e69ede8fd3550784ed5244bb089adff735c7177df8fa6fb4aa723788c7f17bd6062caa8336b17626c94a55eab024856a09abe615526b56d95b9ff9e80b4c01c6ec16a9f58c29ff3f917dfed0c47cf15ae3274c4cb4e32c91b546530f30499d399cb168b94dac88c7fd0d71355c8c92e94418d431171238207d2440e035665d6c4103922bedca7ee88af342afda833c65e34fad2a998d5651d80b1a03bda35551e7462c8e833c210a807ab517b6562e70031094bbb54ad9d1d160c77f78066db48769afbaa85a644085c24b4c773a26115d948c3a9f26ecff3e9d3984cf183af88c8ee6138ca361c8f43eb13def2c862294876dec06628eed2cd03beb0867ef02d68da2e1823958726836f0841f6988d18c8a3a59c6221b9a301b915efa02582c0d703c80a2623d1b5d46f8f842f6831f68b24ee1abed61a4b432632eb500e43eabf5e70d7f08dd9728dd74feb7194197c00757dd23304ff7a4e0003814f9c4dd4f10d67fd23a8ab3e8bff38b4bdd5da8d3061dd396bb2433a782ec755f8b1ae230662749a3a95f2484845b1c8993c25aa02021891c4242d5648a3a1373d62e8142d2aefd7c2c10975017b209414c264ca839050393dd7d604afd3f1cf901c34d62e3839a703c47347337330a6c5fa329ec29c7b03f880c0885f690264eb36b663f5c655edd7999419bf9b6c9efe95b17f13ecb5ae0a4fa9ef6214f8a9a9afd62f2b4eb5b762305c0484468d98d482eb818b8b694787434ce4d40c80683e709d337948b2f94a1022a6b53cb6f739f79c7594c1ac137a11ed36eaa64ec94d06a5f085b6883a5fe24b3c63714b37556f27673a2ecef8ab7be48dfc7e5253b0de0e0d99df64a7c674aab3853cd87039786020ad7d421cda673bdf595f4ba9a5cbbfd2ca06ee048ae5ce7a5decd1d3bd2522cb7fc44ba0f413e17242600a62efe9c202bdd0e6e4fcaa151186480b55e39a692fd95642a24c29908d2206c175c3740da00852e4dc7559c0353457957194517123a1acb1e6744e417e33b0f8081d1570051fa1f45df0c7c8bee355d78a12fa8a522790abacc4857fb31c701fd339a7a1b9551e3d394531e3fe1ba17c3cc78fb761e9209a65431904b0123bcfe77e11ff67fd7a8eae7af9ebe31b2618395629810c7ba2e065cc8a8ce9f478545c3fdab5e7f8923c8f749770874ca976a67743fe42e395a943ab8dfdd443b318d7fc68c6e4a9aabdac07231c19b07e1a8c6f94e971dccb0723712d1a7779e2f82961a66e801f130d48619a690a041a594898237c74e23367c29cb3e512a20ead9485a4e7fc8a8fd597157ceb66ba3535aea600038e464371e063a6936100773a833ea1a19e18e48fa84e4233a882d796e2b2bdc9ea8a68504399af7ce9cae834df0b4bc5d51a69751ed9e9151193227bc663dcd7a74778022de8e70f68602cb922ca6ac25bfa6f2898009f4ebacdaa9c964385aad0257f0e2de98429ba2038cd5712f6899bf79e59d7fca29779aa18e4d067c52c5c63bb18882a05c1661498c5513c6fd1317bd5209da2bb448c0d6faeddfb2a22de30a2d0a397356ad4e7d5203e563a91a794616d2a69be7499c1d5224254439b23123a6f14642290172dbb4676d0481fb2f997712182bacc9eeee2c7fe4e2fa0c6dd6510c801f786b88b7b77e3e2a31e5b3726c6fe911ce9550149fbce4fec66ceee642f26d83688cb8f4bb9f0259c989a13eab242d29debd672ece7627518c281e0e24b116cb0a8b7a8efdcc939b989eb0a28d90666fa2a1b031d85c33546d10ab78c22317b652ca2312620425fe19cb42f2c2691486162d23e40932cdc8f40ed84768c0ebe99f14ba21976b1e11f1d8e3bad2082834fc635662650db42e5a0cb40f07e8116bd67f70f18071ce6bf6369c396f6f6ae3fb9e269c78934a50d645dc5732002329078c76cbf83e7b24542147e197f77a22551c4dd58324d4b6078b7d1eeae12973a83e908edb10b15ab20036d98bd4e6221fc6c924f03812326713a55335673a7d5e3c442b6855e3ae73d24a7b8ccfd33a19507af515669b55ccdd955c8c21c2df53234b27eea697c401ac5bd66feadb640b0fbc8853c53af701ccc3901383201622a8511cccfd5ac729ab212d03d202bdb62b807173b703b36aec49bda504d4014a370d37beb3b2e288e52d753d4a21095613cc16633e8b68b5a32da3ae12f1643c1d19bc7c3214c808295fdb41febd2cae473a343967e5b9a1a88476d5caa668f276107eaa67af2d6c9f1b3c325e0eb2aef0b15b8c7e9a8ed403a06077d44c19166ddf671358814aeba621acd174c548a2d1356d1909c591bc85b2fcf1ddd4e7ba7b54f63a6cb55de0711bf0f6de6940ef835d23babaeeb2866405dcbd888125a6c890bc3a50d526843f4103cf4e27116819c688abe50fa422f4b10559ce738d27ca14def080a86cba3f3e95ef4473d52b88897c241c4a5d57aa036e0128f7bb81c0cc967ee0ed76ee733c8739e967ca168296323cfe939ae7e019853f0374ade2c3aeb216ec4a93ff1e74708b2d6bd2c29994b2206e9158c6071da9404d974aec6832131c6de5923d96db1b44a493f217d7da589da4405c5b395fb1011f8dd7cc3d283090bf1d4a75859c0795b43fd66c1de153f1dff9add7620c6349d42383e7a13d91d107c9140df8c3e6a4167f4c37057f27f6a67c149a72a2fe72174cdd0cbac754aaf11b4c31b93a1e82c141c44c0b3d2b96da6aa3a33e46b108acb158438346aaaed22fd310dd734be5b4bad7b237f70c930f9f2b1c152e212e0218ce1f466f5beb49ad90298567bbc34808bdff9d12489cea40c4e628c7e7dadcbcfaadec733ee4b6b0eaa43160f0b1ecfed54a5991b4b5785749464cef10e59442fce8fcaac2e2216e50c431d9221681e621ade562f7edbdded991ab989bdbc28ad9c339b269946f73b15d052dba2ab415c751f9680c65f41258f97971feb05979f9c12ca447f9f9a80468c11ad8d00c9a91163fcbc4a235b9eb59c2b5a2357ccfa71f1aff87a2e859c297c939cf328d866ebc945e423d88aa8022ce256262972c958a216ae640e29e670b714ba4361716efa7ae167dcf8bcb4448d43710738bcb556a8d9b3683f17ef40754fa92c0fc89cb3143b3c13f3de82a4be2fff0d0edc0e1b89241dd44b7fb70c57cff88c565905b871f1c2e568da06b4a31f53bcdad56136b03f5530c4407624ba5d5a92d76091e1bc82938a3c3af002959b09e2ba6a02e69b5eba7d93213595d281bcb865d3536a586ea25b6e75d2ac213fab87ce58c5317a056fb44df8164777383f986bab0eab307ce92a3aad7eb2d82069f48b7810d6ef21504edd0c39ada0bc1f15efc2722cce983eedb8a7e8a1526855c09b812c6a2a3b38b35b65494a97821a7dcab55ee19e0c3fe512c00131801426af57d754f604063ee55881cee14a4acc05dc6b200b14aa858f11e29d53e8c703b9aa0255c8ff61b9fb7b2f2ca9785791892943b2c5d66bee7648df4e281795db346299706af21c0a4a457224c4427923d0ea7ceef0276716d2d8e4f925c7130ab45b6ed47bdd9ab16460cd81f205831f1ade2f6e68f8700fc07116400723e9b6fe8da6d81af46f2a2f2a552ee909d5cabc6c664527bb6c07ca4a2048b4119d0416186c5f87aba070bcdf289ecd835dd172a57f69bd60d0829ac80ff57eb05ddd46d7b5753add394a5b277bf4da33d6392f853f0caed6bbf1218b8b4ca047696d1d1226d1f952ab5dc798d16caa04a2eaf43a9f60d7809449bd747480f7da08f55a142914cfa4af2ab8077e221340defb4804065365886f3fcc6812e9691413b715b645dae66fce1268b4dd2932ecbb51dcb9de53ded9d77bff5239e92d2b433a9d4f3b27dfe1a6df0f1d283659cc5a918f7f280baf2e4a8463de4a87a379bd576f160b0d5e8826ac520954f5fa1dbf5087492f96bf132aa4227685888437fccc430ceb13748d067f264eb515065fcce03ffebe9b43f99b03d24e3323d3a29ed7406165406c3f52fd80bb2cd87103ab954257d021a9209c61212d5f7db6395bddb0531c00b9cebdd6dd1da065cd88f38f9965fc3c71b0eb76f12a33ae961be5642dc467cf25af90fba9e2c9ca51badea25495f390a3f35465ab104beb393ade0641bf49ecb045c1e5e98cc38418f579fbf68c299d4cd12b2a95b7f18c88a83c5f2d38e8889e44a0e097d6a2f917a3665e21c2d133bdaf89488256a377a8f6adc1200743586e39c5802542a32f90319a95b194bcdfa16ca27f7e033cb6135a539dcbda7d3fd719081a26ba5e3648d09762e0129dcefc787fb4a84e584d8ff2a05dc5952858fff77edd7a79c6ebe20c09c129967df9d427d4fa7e01a527f1685b59329e420bf034d54a22036ab77ec4509f0c9b220a8fe2a448ba8eb71b709dd50f635ea4e76966bb49910e09906d0dbd5687326485b36534d46c67e5229a76fe2edb5dd9c7f98f8aa6513332564f875ba4b0e8b282517ca6f7a0242a440ded526d55878fb0c6cb4a645b46d2d8d8c5e50221f94b81782eb09a0fafff4aab4d58dff6057a62f3d3c808a4c63d9036ad141a6788a09685cd81f82674e72db4aad142f8ef7a162dafba01932f8094bf1a2e5464e0ceff16fdd66c2b30e2889f009281dd853d4001d5208ec3585966de243f7a416cd16b2dba59552e2fa2c31491db1f7f8b03bc9e1a92c9172bca97849b413183e7f824b141bd1fac478b4918082adddc75fee629189eca96ae92ffc7a37642ba951b184741468d6822dea2c8fe5356463805dd338db816a77a6c88e20db671d07ab49c55d3872d56e0bd1c98e9ea3142c10cc0732efaf1e8761174755231d61f40cbf9ee8b0503b2ed41cf41eb399ea8ecc0a4f5cfb32a22b4a9f45d26de51ced4843412596811f2f49227cd9ef11d79fb450e0e418cee8f88290292bde5ba90f714d03ec2fb1ee6e8487f3d60b333e843377509f02337533b00d981ae50117af2e24df3d7176e6903353314308a17aad3df81dee1565e4ce3d7abadeb413a9b56824f2344fb29c44af56d2013e2d56e3eacb263b582761bcf652bea5340f55d763f00085d51b77fc28b4b362cb47931e57aa2f00837b2e89c7eb540a45784694c64eee8b1a1d32f4686f79e653586533d445625f5836214dc62e31a0672d5b0b2b4446f274c75e87d68c0a134430f64bb6c8c94bc23324e9d9218f901b30a59c28ddb6db944fddd7c43f11580b1de2324541d5417ec3b4959a89aa46811ced5bff3191a7623469c43d0e7e03febcba6d9cadda8f577d63c14579442c17ac2b534f684c41c5ed0b2fc59d0446d19d81278408902e32ca573fdf002176a187109585da0201b2c2a493ce119a47e3d732eb8c0f94296815c8c5d9738c008f5c7d1fe917f11b283067eede81fb4bc14d382ef879e5973bc885bce0f3d13b6da20a8e7123fba4f91c5df2941226e79df3f4aa37ff67245fe7705b9d04c1283dbd809cd132261d84f0e08f11aade41a9863a8b0ddb6326d768fd1891ee3165bb315f795f321c94ba8420cb7a0d2a6e7d68d4629774054ab51eb7685fa07a48ed7059e8c47dac5823d6a1e29272d6cb10e7fef9cd6cddc87061bcc9208ffb0f8558d534a1904739ab46bbc59d35f17ce015e8e743a05f32dd7a3c2599cf931befe56df486ed8354704219db0e714dea448138fd2c9763c40131fd7c6b43273a1ac27099ff1c9c79e6173a17b9a903582271857ef875a55353b6dae9a43e22064d3c61d57e71ee18f7def3627b9fec896724dd2e08c046c412b33fea387bf0519a0276cb6f307cc4fe5ceb51a39728780c6b3f2a4e254912d211af00498982a4c6661913c6db6d40caed1e2980239b1383482290db2217ea61b73fa2512ccdc5b0466b8abc9a8923f59b5b35e07a6b1accd4edfda975fbd0a9541875963e4a5b8fbfbcf8ab2bc0074cbdc67172ff84fca1667cd9293ea7dd2c0ff8de67c5789495ab1481235ca34a149a567e466314d06b2da26b5f3aae003dd3b2e31bda56e7d089aee4acbfe95d5be058e6e4390f56eac5a1ca98ab07dd1ec1a953d4ece9dc51d87795e640eca7afe6eab6b970ac0ed100b39406549030a04c594a6cafbcedf1189398dd3329f4e40b8165cb48e55dbd06857ac17789cce254cffc26a85b6e48b1d938d1c3c473c6d36406f8f0fbbf3d41b79906f4151e5eb02bd8f904d78ba0965289caf1014ed8ba2ed332cdf10ddbf45da7b44ebd46596725f08bc94558023fbeb7b1dcccc08a1d50017ccc0cd2554481ea5317ecc45f1d86bd44db3fe7a0a00e2fcbb632d180f98ce88cec59ac89699e06331273ac72f8aa2c04c0617a3f21eb89c69fe68bccc17b79722f27c7a84c2696626d076ff8aa05fc5d1dcdbd5f372e55c995bdd542f9080490d4885bc146fe9499aebe34ad239a6a7227a8144b2766a21fd332cc48c8f34dc49bd545bfc8fd9a4c2096c415cd8536be379af548b6556a7c39e3b5bc4d50f9aa3627aa5bd470e68143eefc363473eb7bb5525794e673bff3de1283dcfc053b34d1dfa8acb099362c330bdc936425817052002de2ce6ad0186c24de4bf44fe10cc81e2347082b7616f59518b445f1493d60d9f28a6898bae9bd26cc9bdc3daa90384d8f24abd035aa6b174ab5cc413191ab974aa9bf902c732943ddf58634ea401397ddbe82a3f61afb82a1a8e2114ad3dbf6a7bf4899d855d24fedcc366982f9be6a6c14e3b644c0fbaa31bf7675ad20cf380db73f2db797c03f74b53b6a275e28fa0c86478ea1a8c2c8c7865111a9b7cba2d748dc7b196bc5af66c74296f7394ebe17c1b6a23eaf60f653b9e49f3d2aa9fd9b25d8e68bd5c95ba62b91a061cbf8f190277ddf879e37b6e160816dedf14416136b3b858860d5a602b72b105b364f125d68a9277e292c6c205214dcda3eaf3e163ba4a1f93df616c9b4c9c2e6966b648539bbcde1c58adf7b3fc7e2361c7ecaab8546398c8a37d5e5425365eb6de36f8c66401a2db1acbcc4e6aa89ff439e942358b181d297fd3294e195fc5962777dd2a4b0cc5eaa0913691bdd6e0e3cca784343ff5e3668731e9f18cc61a490c21e0ae0b492942aaad83caf7342779689d883aa77ecbbc62fb031548fbd83e2cea5bcf02a917526dd63d27bd34d366f3b195c0ecff993a4dba1375bcd110f29e9a8deeea2e26ca2abf0620e01e62e8138249fa324877ea66ed14d0165b121f3ec837492c711b4a3c32047b8e6fc796c8ae6e7c9934dfd0b8ac042f61fc4115a85d646541fa02d487b77ff05829004080fd01533b037565a951527d5d9c5b63e8d03a740d8820f0f1cdcccde68387ed81f57d9cd8be26575831beed4c605c0b0ceb143aedca05d9cdd1bd9ce1c9e9706ff7550c5f5214210923f9ebcf6265b7ade4c0d4b43573481d666ef3d31ff906e5c26b3277a7bac9fe89311fd62a12a0ab6822a3149f8e2d2b0d0c4945fad18a33eec0f064aaa5438b74e461211418c35fbc7fcf56847d69a1fd1d092428e79fd7c4c181f9c1deb02594a3f8e14a62f8d9ad234e5cdfd5269e9c5b556989a1915c14ffd66467703300985746f86c4fc3d761ef7d956460095db6d39db98604838b7025cfe480dc795eca0d3a4d9614ab8706a1068984442f1206ccdea24825dc0aef6396ac36c77618d6350e14e9a649707393a47d28a640546caa7cb4f34275b6cc0111f55d2c08669370521ac5e638308536f3298a1940eac756b260cc1a8a3597aefb03ab0dcd6dfaae381c6f15007a74250ad0286ac564bbc60e9920629a48e409d3a912e84e99aeff451df6ba0955fd69761982acda96cd23d2a71f5901b6bb5dfcd09a7b241945b2a754f37f434a1a29f06c5f1c8f470517f4808141aa0967bc2fefe283858edeabd847e95348f2c7cf4049f345e56d5b450d2b1fb4cf947bef4db4ef51b7627b7224aad18f65c7401fb47f1bf412d61db04eea6da4f4ba5aa35e69305cf88b6878577ad283067100ea4effa53f9ecd28b1e4a41f084ede7f0d0d857812e5a863fddbf3a804399814831d41a2586c36fece8d529157906b0462b55a34956d6cc698bb04bb150dd1a95090ea95ddf599109a0c48f3122479de45ec3dd6f43496fb48cee5a9edebcdfa19df394983c39ac53299d90c26d5fd307e8f948b946be537139b95bfed0ff8e5a5c3ffa67309f501e5c58905b1f068a71617e842347eb321796d4c6deaec3dc75b74fc4ce92ca5623dacf5e1fffad29e750716c5bd451e2bf333def1c39c514e737b3a2c63b0bbffd77ffad4a5842bfb203775844098099a8a04798ed50d6fa6ca27206bb8d1ecdac35db8aa8c784c21f7b2f37733e9b68b4680d99572ebac4032ccb9b0ed0a28d15c7bb401c5ae643ff680f43b58c9ef1eaa54933b8e6e1756fbe4ab89459ab437faca34d1bfbf597273cac15871ff778f22007a63d43c3bab84c8081158bbf3317dbded32e33be7ff13ccdae9c57688d9c01c26e6ce7c39ea837b224ce99cee06df5be437436ac9ebab9d39c5bbd61da590fdf9d9bc7f21c4fc24c54ef29e216f51376ce1d43dac762434cd45fc33033c0819a9d76ef09998096fa631eb9990e871d5291f04fd74dcff9baecf558b8880b61d0cc7d9872c3515999c8f3d8b88be0afda4ec60a46096ae8f468a14c984697764059839045489f4f7c757a3952181f9893f90c27ed3ba0729869997eee8768cd2fd730f081ee8812af8cb483596548db654a45fc12cf62d076a848e31bafa2c2892e8021f479ee532a1c1504a668c44ef11a86743eada59a00e4cd55372f11a6e297423687b7fbb22c2e0725b007dfc04842f94ab720e36707f2793a18c1a2eafd8d9b8efa9898a0294766b993fd49b1da405a9a5f319978668955f122d1e8e6b9ca80cf352af4530088031721329699881e7dbbc0f5c77364729a1841ae982583a03f29b57703cf6c0f220107e7bec52e7cc67365ac7333e035369fafe50d46b143f7edc732fcf2e4e1fb625ff79dbc1e00af73db3b26a19a934ea78c42c46c6fe11a789bfddaa453933cda28e574384ef34625f6686da22f00b6384f1be14312b4f2604ccedd01642a8511779766af3c1bacca2cac5915902b7bc392f2a98bfd9e1a0778c506a44e39eaea637bfc6bd19a97ec2d1000dd0e195a72e0f3063b7b3e0165082a9ef65af4757a0b31a235b4ead01802edf9fd52a2464d6080063026c26b3734f9af9a8622a2d01c0d2889e2c7b6f057a4e4cac056e62b9cd25c70ca5aef73ed9e89db0421e294c97e4161834dba87d3bce0202c891478bebbdef9dc7e790f38f83f3388d618701ed9078f3b4de1117bdb13b4e5055fc0f69f0523edcaca1423b627df875f1f470e1675a2845f45e29a23266c755b8a1aee22708bb1cdf30a5e955e84f3704145bae8ec62c81394b9ba76c6d093d80b567568619c92a1deaba4a342e406ebc1b6c0dbafd7421e8f647ee7248634628dfed6683e99d4cfc5ea7af9f6a02fda53b39c4766e0ec5f8daa8b7376d9b30c6e2e779b1140c39bb94af3e3e11137309f9860a49f5df12af58bcfc1745d79f34131ab2509fa807e1c8579772f2822d4c154551948e96e34c7d0bc33dc96a1224ef6f2cef79b5b4e2780dbe94f637943cc804834371f883a14e75d11eeb880860d53fe36d2b6c84665950adf73d5eae3424b9361a2750484821154f9f07110bdaf15282d33786be836284f09133878509d322415a7a50305c9e51d07abc79a5595e75094da1ac6724d8ce81a6a10a361ca8f1594c5a38522381b3f53ec033483d6ff43f127e7788b333c530cf7e3486ca9f09af56128c9c430a9238a04b1d586bea50f9da1c33081c25faf27fe7c21378e424f4143c8c2a6a835d85749a62c1e4983fb977355a77aaaa2011f053f1173c3cc2d88169d2e97a8d3f14f93246c14acc70625eab056ccef5a48b0578bc11604fbbf74eb7dfeadce113fcabf02b8aacd1918a9f899c2a168ff9eff843531da01f84916b6c7264fcc581ce630eaf7edc65a49c4b454792142eee9dcdf072f33df17009ad0b50b32e799858749a325386638f93ed8052e357c83c49fff57f09fb8128f3c734a118b7a4d3faaf471680baf8f8c2f42a38e29697fab213eab35c1160f81fd42c70fe371c1b0d81e828f2d599f09b17374b76b31bd9da33d6bafc17c7c4985beb5ae1ecfb749ed3864bd6a4e0af79d132366c44f39ad195eaa94ccddbd013ed17fe8b528558d86b89956ae2caa28066b5b4e9314683a6c49f89de123a420d647983822275f1cbf96318531c6316481e9fc31b723dcd3bb6846d628a9b8b6435033361809cb58cccf74e356a39f0714a0da9e01f33cf4996adcf304c257f9e5008f9d37219c7c1fe6a21f6b7e801b16c50b744f508d1876c35c2b87309b2692d0cb097b52123e865ebeaaeac4017b7033cc90a1dbc1e8332bd9ae93ad140c301a55e1d698285b914169c41c19d4fb8ee8ec4edb85a76cfc1bf74afa6558ba09a0d936257f63a6389cd175ccd3ddbf9986d4aa1e181a87e15324d4027a572f1905d4a0b2aaef6e4d00ae4da87dbd1ae3d30f3b18ae8a31d857db55717f8a016e52a3497e4e105ecd034aef59561cb5fa397259ef38d631e3edf735d2feeb553c7333ba85b4dd2391bda2c6b6cfd0d78147c61ff9f86b4405a01bbef2f2c2aa45b8352143ba538d234c93738311d108b02d0e1abf07c4f4b64022bdc64d3d411355e918db53b0ddc65011be2375f563724454d064d0259e2960a632a074da2fe9e1732d55022285cf6f792539098b5933840b8af993be4e96d795368abea56770dbc9a5a063c68e84d2eb5ca212b6bca30d00edcde307873440d68eccf84036d520275115a3f85fa7a6b8468684a44b519fd75977287e0f3a79f9a419e3be0e7f76175b9603f0a29d9ddc40158c901b72212228c51ea75e722802ceacb54da395050f687b58ae76f96a8dd4730793920f1dfa238e54684991313816ab94b1993ed9927cea8e3e3ec548d61ad20846d9a64235efe6aeadf761410d036d1e8f64de61f1705b2043a9897444680b5637ee67e1242804e45f57584711fdf3e4850baef38af393a2d4cf7daea3114aeb2ac57771e677c501ab87d8f5f653b2ea1aeca646aa5b8938b07bb2bdca5b13762d1cfd0c44eaa8e494f6bc43a80ef92973bd1cf6ecce3b1cb6f852e877e8cfda76f04aef2431b0c2e32a41ed6af9d20ede605d033c7bcc1cb806477d3d325dad1cbd2efe8db593a254747cf014a4d0f82f49555254e7c61998c69a4d7ee974ba94ed433d329879e021fc041151424dbdec82862bdf9bd389b6bc122e7a44bf7f072e3158930349aad9ef2856f39f002642a797b91aa7d0f5b0423b786a9435b07283df1cb2719c8684c0688a5d9b466ed2435f8d12bd9a7c70021489aeb112b29b550efc4ec747ca1bb082bdf3d760c74e81971c68f6a74e885431410811ef21d2d4228dba66612350276dc2a09a1bd5e112553cab6ff333e49bce86e893ce4a8265b40a369cbf0fa08d12b06a02ab306ab8f3ab424b9f02c7f8d5c2cb65d6b197fb22d0e305e662be9d7e62170f4ae784dd6988e4d7202a19ed5260a678198daf8f77e347d970c5487072f7e02721f8671fdcd89eddc02c07cc1e5261726a471b18ea6858282632ceb601523a143ed98cc3d8027053b81ef00ed78e661d6affb2afab291e88f77a25e1f09aa398f3f22a69da536fff372aa4e9568c3dae190778d4fe14e5ba68bf132709bc8e29cb20827f907c85c3370df3b7feca3770106607e83abcfc3f02fa42b07ce453664f34f54af30fb59800988a1e0d482dab1456dc5b13d608ebb0768854c208364e5a72f4825805f37a023225f92e0c49d43fc662335ebee1e435537bae055d77613e13b8d2943a8fc7ad55087034a0e55b06d8d9c5a0f004b814045b7a65df7d2016c3cac6b5ef2cd0b50dd3ce8a8f79aa736406eadc8f954abfd1457bbfce079bc12364f106484ba4587c9cf6b3eb931eab74b5f573e1ece71956bf60b62b70019e48934fe4cc5d530658628575cae81d47c60e3b78d0babbd3028766f340036acf3a393953e87429086bc70ce3c46d8b7f4db7ed706bb6607a99bea86215633c0976d3657a6c76a8961222f2b777863419b0c3996763de64a1b360664efbfbf41d6d16d0d80ce63f23bfdad1ae04410700ca7a96118e49e5f03a07acca058932430358828ae03d0579781a80a58fa2231628e81e0b6887a370f00121d88aa83fe310ca9501e4d6eebd55c90066c2031a328e3efa648d9036efe7bcf001a5808a09e284ee587961534c05dd10de4a7de87e720ade38404739f707770a00b573bcf3ba617ecde2edafd24af71a68596489707f34f493e887985e8b483114dde463154aa518fac884f6257854b18923d7244814d42eca8dc9621e8479966d850c62e83d7a2029b74fe7b8fa09e734615937b3c3d153305f4ebbcb5528f8dbd7dc8e38af3b9c6e9f5136b9ce94222bd1803f69d259ea4d30e4d2bc35407e8043f64435b18f774453af7f6904b84399b3b1c4cbbd1e74d3f534089fb0bfcff7fbabc777c751fe110d884c6d42ab36664debc874b26b9c0448a79105264f1aae7818b559694dda5ee85daa6243994ef669a4f74f130747d1e9ce52424b2706abf341f66a85c81d71650e1753536e0157d2b72353f8e4a88b386dbfaca547d028ed4edf92fbdd24bde75ac33bd5f6dedfda60e62aaaa9d404bd01ee5412fd04b7a7ca716c20a857dd37016e2bbd4ddd56d747713829fc64dca1ea3b033fb8947eaaf9f2b93c3b17bf0064593a179b548fa29ee50da8a82efb3215254f31343d7a413e48600c705f5153c31def7e22444c164dc22e0b932484633e318ac0ec801bfa8ccb36407ee74825055a79a5a1bae7972d3b3a7079d70149c3183617e5a6e129f1891cfe66cb7ccd0d8589d2fe7be288598bcda3863b3a9f0183bf36be7cdd65211e305d2f08f686a861735e473e08d385945ca8b49ddd43480041701dd5f9092499bbebea540bf3ffd6b636fe1746666f5df735fff238b7572124ed62fc25b4032b62289622ca96a62f015dbaf9a9b05741733566eb2ea172ce9029b09d2cca937d6109c1cc7c572f013768154d432891e2b646c072fe4bfe3fbd733ed216f044f3447609455503563e1d00ea12c6c61b32f83c5d89c823b33a5b6f05557893093c3dcb65c322cbb735c664e21ae388511e949c789e5a3c5d719195b114e7624af26a5b3f4580c11b7ffde4562e41efa2bac7217cd67dcc2c2e2aafea9d2dd0ea31cfe85ce5185e4b198c677c48e47f63f2fa3b12e7eeac96a5e25fea177d935d5b412d9d5676ff7a3a54e6e2359943a6187d8b08732ddbc494109762cd0028c974bd54810b4d634295f2ee4335ad462ae78b69021085fb960d261fb47bba4c3cdb9a8087d4602f2514c922a173d21b57be3d5efb5f0dd23292f51275e27b84f235bf4555ffeb6aab4d15b7b27d9355493870aa99e8e1cb24e2fa61474d2796a8ddad2bb240ea010a33fbf7a5002110ef602cbf50927d73101b574eff111e0e012a682e52f3c7445bbb3abe2b74966734250ac453f9f8fcf00ea1f3193de9baf8566f417075bd67678d9d00d7870bfb3fcbfc1358fae5bde9f124b983e6b52f6bf4dcc638af8d02fde90741cb6de973bf859abb2725a6afa6c1b0e1aee83342a7117317040c7692d9587e1bbb5c04f6437461fe03ff64f24c0895fef9f3c28f1397b9016170ddf621da5fbc36e3eab2aea2b4d4d73e5246fbdc137966389ff5e27fba44eff6b6f26a9e8a654ae6b559add94b673a6d5393da43120c9f1fec17d9e5b2140a7e9caf51871fec6c65659f4652999541922761be4f82484ed110dd1e111b9b42505c39a4f21e3bbe5d7fbd769e387124dbe26055a7a60fc57bd7f126febb74aa7114001a9227cf956637f1db58d2c3ad61bbe2e94f021af19a2543a20b2532ee5bfd579c51363961e1defc726d00837e7f5b5cb2df8174a3b7f08584c2b8d73f33b5f81e8e64a0d2d6bea2630da761205751e9b1792dfc265948b018eab35d11be337f081f483e5fdbc52edd9fe640e87cbec628357de82623eb7e255a06319fa98eea2af4c6df0d95a5eb024243b7a8e91dd794d23b3de559e2ed213d91b24ae55c204c4ae66595bc14ace8a7de8f34a1d12142e0bd58c1460cc279b462b7c41ed7663eb85b46cbb3eb459f70a948b1b62c4e6bb015680e375303e210d30608a9caeb88966c0c620bbb0f513f4193b998d92ceac2d6f1390f8c7cbd10fcde2358133ea083f6d4f7914c686e2bc9d94fcfcf2e7884ed4a42ac9c3c91d6de6ed61b98d2ae0652d074c63831ea596ab3a09587e97e850a207d8d97158989b15bf762b581ed921ec5b9c75b4e86d1526f95f9bc98788a22f1ad80ef1f0cd2393eb29197068c6ded8e9e1b7e2930dcf892366bdf99e0178f926c4ac33561a4cd249114478129382f9740e7f6306d872151dee53deeb35b6daadb848676630b900c57da0ef7dc21be62a1726653d715a9163b1d1bbd8196f334af2efac546e5c36daa3e75d0cd00dd059511e986a9735401225818d10b66970183a47c4a6cc49aad8faf36575cd689aa00cc4b455c00036431e3d0167793093381fe35ef4666baaab397903eda7f900f695fdd0b523f7046434513200c473ec4580c8be44f72cf358657b217d395e004d1736fda934155e1af9fe0a587c3f2fd83698e1c0b73e893245759dce4bb47efe71dfdb69dda212560e43dfefa0a64ffde63dcce1b3b00fb137b746728e3d74b880835293bf2b533b0cbedab3c0f343d8eae6bf46828131acc852afb2941ef2486dfd6c173857be221b45dcce84fcd00351b62cf51f756911130c6b971fd0d9ccdd56c8e8728023ddfd56aa8f107efe27bd3e961f217b1762002da2c9cd7636ad1606ba5fb1bc5020d74282ac04c6e53e7cc58f177b753cfa63765be0248465649832a9fb6461525edf57a5fe4c0a218fe70b98b85ef7d1a8f38e240f4dc8dbe40417d1a2da7384bd1112ff955bc67c6bfb3e87ea8cdb7c89a70ee667dd62f157517e5379e0db150dd732fcf440c154b6b120bdcdc2487bdcc8faa49c142475e0490801a603144c1998a9e5b79ac546695340ffd215b86d2a37d09e3e11c27b56b4edd6e3c73cf625663e53a451c452a8f2952fc1ea5fa54258903967830fdc6d52cc7dedcde29aa5cc03bb00331ea7f1c7c3e38d7618382b79f0aa69ec30354b944079d473d5742f2d2c8212a8888a17a96ecd56e884012cc942bba85493eb4c7fcc6df6b4a178a2b433f99e8fa299fb6306039ff59daac5ac4ff5fa09f434f2b76f45ebe5f6c148e6fc2455ab533dd53c3fb8f7bc9286d2b9af1855a97a62416f396d6e5250d27830ef6f845d3a89342382847a54bd566f1c75d0062ce2343a0107b88771fd53d9a9b54a76ea46e4b2654fc941001361b3534ca087f17da53f6edffbbc31e30859b3a4ced73faa967ec91e4ec386ccd050fecc2b9fcf5780dd89a1736b2f82c626afa2c8842221798b26ae98ca5254e10b2a1ec94a1ed7ebe6667bec8ae065ceab7a1a6da146b1068fd4337f21d40be1ec68183fc37a957c943ef45c1a549de67856f6f69035dd1b13e7ef861ee4e5a819269ccbaa6396823fff9d176104012da7679b05f25016724ac5d67603c402485f8c7f57a99efddd5d58a4ec011c11b73f591ff0a41dda7c465c73a3b6b7d9ee43db3844cb991627ec0b9f77da26e1c1a22e0015d0c858068ec0c368190031050a7fdb12375f1aeced12f450ece9052ea97934d6efde2db3ce83fb184f865d2ece2520a595a20530ce560acd8fe6b7cb0fe5dc4f6aa9a70403fc864dcbaec96d342a83b29fdc7f1919cdc35c35a64ce706d9c6bd4bc26c7c87b36a0e45e414490c789393471669a4bb05053be2f8082e09c5aba8a6c94defa828c593c905b0aa4fa0dc9fd5171e43b8c16bd39701b88ece99970be95feef539b762f45e39f8e04997a146d5ba1ebf73e665fa93fde223028864ebb562af322c32e8ea8a9629e980de41d4f92e85329b88888078f48588144826ded40e7b00c5704a4cfd640aabdbb51c7d5fcd4090e57a39a51c964e365b73690691915628608c2b76bf40069c41931ae11eb618af7c8f67c0890730695c70b7a622971145e246cc0ec26ee64719b21477dcf791bcb37abe9b187a2fa829cb941b51e8d50332911d30c42dfe27c6c637e74a7aa8484c8837e543420eece20d89d5e7c91c6f8ada61845ed5b8614fb72a0b6f3ce85ad69132800e61e79ceb4985d019bad1975982c8356d8915257529b75e840ad7febf14c1845b598320fb1139b6239573cc6a39066c2ff0b2cda44894a1240d080718e88fab88fe695ceb8d3b7ed9cbb31da360c6f50015ecb276729171f6f192f8a81588073547cba7edc88df2f420473f58af62b8c8035253ada5a146051d0d41331c7b392005c77468c0da05a1d51a92e22458b459b83a804e640d80a38302efd84d8b4b7eb116c815a2721c56a8ae7f28d342f0d6eb057e9633d80b39ab672d09568a986144c113c8eada96a0f6c117f85d37cbca80aae41f9dd86d9ffb37b23abc1af2a7d5e63bb85ff6a67896ca76a4c6a9fed32e576da2146a35b75e1d7258a8395ce9746f1f4e8f4fe7d7061c11a69f88180e01438740ae076fe98fc111714b6ed25c3ff1a12acb19f9486039c4aab42ed1636c095443b5edde930ac6ed03421e2e3d63a12f3e107e43558b4bf8b822b8e983db3217212586a29542fec382144c542c0cac0ab5e51b60e6d2771bfa44fa5b16aa95c9a0e0bff2e23995ccde585fb7e2e5810ff29eb4e7208d1ce9f0421864f8f3f4c4fe90a6a4c109b092145794b594f2e2febc1bc36d7793cb83718fad826e07fec9481eab13bb81f6f59e64d06989b32561d2d75b956fdab5e656fe3c82d093af061962703984a3840b0d3c8c283b3594477dd67ba2e2ca4285d9a05e31e5299b72451e33862821e18f2485e96694b2b1c9062339240fd446427600173fad2aa203da0319f7d2e4def01d246d11a28279034ec9b769455921e1f45a89483b8c5d9806109dd324af1aa54b9a9436b2b1d53e09c43f1d4280e587561cf08c198072ab75c1febada535e373c636fbb670ca9147ac2a15cc2946b9ab8736187ed756b81e0e369c7e1e2b4b7c4cc93957794dd3cf592176f00a37dc1abbbd74ca1a9db5e540ac8219684ffba188ee1e306943fe15af9560d64ea7396df6621677cf2bf3b27954ee5664f43da850691f2653a06865126773b7a8dbcb2342c2869dbd7cda1c31df54f10b0a6369110defa19594c842a9a988f3ec4682111b12eb18adc0ef31de61b60be70c8f541d8af210471195e48a83cd8a9117b4de28d661051aee84f1d0c476a7151b6fe84a05a863b2bde4b5c28d04a3bec4d98644c2f649f94187d0dc21b42ee8713a3de394b68fe36f22d322633109effcf7d8ce87840a8d64dd38d35d59eb07d66f7be0fc7d0e447afe92e64657a8209850f85687593349a4a005ce860b902fa84b617c44115c4760dcf7240d8815956f20dd90a059f5c7f897074ac197b073a809bf0eff7f7b27c49c3d13af3b04223d6bd49b9aa441cebfbf8311ceb6421baaa3fc3b623370b19f0b541735cccf11e418fb98de7d4e606655b2f672d22408bae4907383edc3211a6b5daae0fcf693c5f1c7917e4f19e66fd2415e50f896af79568bbe56aa03118d8b2f0bc0a699bd025a7faec227e05f8d7ed099ed4cbba2b0c40dde483b40708aa1d6c01500001ace05bebcb6fda6aab6c4731206211ca756d1ccb98ef78f95f5920eed3d7714cb2e43f505725eb3d4774334436142245f9859911e84448a5881c4cc6efbc4e339d7dfe67513e21182e4a48e83bf40a482983abbccb30acd3e2589b6d456ad1f57f1232a11acec1061e3a6f4a1a52651a7ef5abad662657ab85b35a51f79e1a06b02d5acbb91ccc2aec360484e119541992cbc954fb9fbb66c3b802a552c98de7848b62c4fd43c80cb4ebf645460487243d7bd6549e27b2a96bd4c07e2ebbd77293386be01cfaf63dfc76495a6f4cb4328b8a9d823bda1826fc32db2ccae10af51da0a481c108bcb8e8b961a385f89f9696617af2afa0bf1afacf7d5b7d516ebff9359070111abdcbe41a6a9a71b6f3c635eb33f84bce3ac17917ad0b4e6a3351d0c280a82781afc69d350ebb9262297cf227cf46f1b046a0c6f1036e60089bb9d7f9fb687e1e5578496e1fca3f90cfb832a96cad41ce0eb45e1024cf231225041fddc4007605a5bf06184ec25b4a53cb79c6dd21f03df6e8a2dec8d4517adeae3cd0336493eca3c837b1540757ff493da1dfbb3720848397bbe1f282575b8225e6689f77fac28711992ea71f773ba1a022fa72622e11f14715ad68091ad87b7f5842c36ae5c6a35bb35846bcc8b9853dde17579849f8bce68a952abf840f80b5e5cdb7bdd449e07d17fd310296c3da23fe3da0d10d365b7ffdb72f4b8c252a448eea6a1a4011f2a68ddc3b3810ff0ce381ed4d9c9fcb32480852c5a73eb73ad85f7c359fe921226872d059d849ac484bd79afe403b393effdfa3f0e2eb3e572b40f84a66f6dab4592a5a68ce4e567d4df722ece6b0e08f482c908f9469dd3e883de23607e194317c02def2ff386b5b297959048693ac9954b15b13336a04022838845b177db73ee9d2704ab0b613b761b166c97cc42d93713f4358d205388dd81b5f09a861dcc63a4d05b19cd09655cc80c2215cd782ac370149b083a4b00f580d2fb6f1a9693cfdbb2ac05258a48059b162ab0570915264344645cf8d281ed3271d4579d645fd390d507f12946f5f5375c676aad9eb2d12da8eb721565bf6c0ce7b6cd7a9edfd118a00fd0c515b513844137d75127783925b673ea61958cbbe48d872276066670a6a0c98b30d8e62bcd3ff0a2491c8f580b45e4966751aa482648aaf850e8221b2ea95d803a0cf96f82ac1508a9e0802a5c43fafddba23c258f2a67c8c152fa835af430fd663792f27c6e9b5b7214c032eae651d9e25dca89816da55dba292119914430c9d625242cd8e33280c4f47cf2aa671b9920658a4ee4070857feca6695062fc89c024dfe795a7ac0715923fb7693977ae09c6dcd719395c1aa093f2d72e304ffa345db729a6dbcc7bd546f50ca84e98904756c8696606bc71c4730976f780c60fd373ec932a7d4d10362790d7f48b9b9905e184f82a3fa65ca9622600f83fceb40d9298849e1c9907a234dd22b9de6ccc2f928c99f5ae69aa324a5281a82eb0ef48a6a18cde2f5c76cf0493ae55215040ef43de87bdb6b03eb8e78bd1a1a25b016db0be10d9878d0b7e3f4dbcd77242199fa9783491301a0ba5ce305df8997cc971e9ec43cdba9e64b3a8e528294aeccbe7c0d8a5e574a287bc4aed2fb2ecbb0dbdba456f4cccb4bae018468aaf8a48f8d3ee555b5c5c92c6dc285bc471a96d33b057837b0bc7fad7b161c836e17580347bb80e96c35eacd257fb09d5cb4fd86830322c450a1bf32de72ef60faf37e12e357005145b747620a0666f81b72f830749004af99215e041acd1016029e0f268d654b0026a65700d84b2ec82699018243614e25b32c4f250386f8f138befae021f425c89947d2811e850ed26414b12b18a18bdca9223bf584e78fa4d7321c9eb4743ee84dfc7f41c0cc79848158c9ed913bdbc2ec8c1ec61bb3f5881bbcf23b0c2c5dd793004c86751a40dd6b586d6c3cf79213d166f8835800d675c6b8f0e123751f96e1bcbe484a89f598d689702620605c410ef6c88b626b6fd49df27753a8d3e8c353a641c21dee8b24b9f9f20e3582147e4133637571939f08e97ad2147dd6f33825afceff22be1867cf70bbc1e773f8a769c2d2c155e99065f796ba1e3acaac9b3a47ed836245017f18a8010697b0e80a6b7b5816eecde30398bc431da93bc04298ec1ede372d07fb558d9a571a43cdb38e823feab1006dcfa29e363f484a87b8ea4b1d00d252efec8f97b87a38c0640bfff00c542a5ee30b6d49326bcacabb5ffcf08b03b5edbc70902bb2b22e11080d4e0dccf074ee1661564f244896399e0c4387ff043906bbe8681080102d0e2db5ef1379b6c3438b383f05eae6467df7e053aa7cb30a3cce3beaf3e571d8e8b132ba8fcce0da288fd70dcf2c032a79a05c6646d035a6dcc8d82cff7636ca663bfd6c42e90d959f2b2a297ccbc1c36f795fdc886311e149bb1e0b7be8630eec2f32249dae0e612f84a400b4628b4835fbccb5606dd063b07a0fa48464efa5551981e6c8b1e4bf8382f98372c6212432cc9c198fa33f280ed8dedcd1ce2504a4777f1c3f1fe6c55ae7a6a8947e5775350367d047cd3dff884106da852db993754e730ff206069cc31a80e77498e08f1702e6cb61d9410c15c8018715a8cd2f51f7827205d5cd03ad5572bd975f8c782c127b99175aee476bc3c0153cce7ca8c002c0d816f9aacac3feb52c68cfd769862c7ef2578843fb4f8e2175ff18aa443b32b23916fed158a154823904d0305308980430a6304347291585dfc4d7af3ae0d4de71ae941e264abf216d199072574847d5d18a2b24a0e530a44e75fb5f38011148c13d520642fc62f655d18d1b4d422075f79343854d32085601b27110de7ce4064c5e26eacd4dce9702ce207e3eda9790e8e5aa69ea01f1e3fc1802ef41e9e5f19bfec8d07d9bddb38a3697b4ea2e4b8b8e5b622be6628cdc8599dfa4698e10ba1a0aa3da1cc72dc685d3377243bc80a9f73634fa05a61615a7d85f66d230250699a1f38d0746b80a903bbbe2f04dbb1ad66124f0ded425adb2a58ae7efab69dccbe33370af7f7249cd0f0eaacbc1c827003e783e5d785076b97e7352a25cd119ca45fb3f1b7c0a3a62486ebe649af6e9f005b87843af761612258f48c65bd8cc917be68865e21a48f59035477b61563c45bd4b8da194a798da41772ca6889b0981f042393947707137b5e2e289da3b0b3fb1958d61f6dce56f1ace6d8263f733ddcf805759cb39d1561d34b738055fc14589ac01bd5b07ccf454345511b8b7cb4d9dadf31b0a3f2c885a6576e7ef4b5561e71626c65b24cfd0cc82dafa17227e5f5d79f7e957757b87c3e114275a0a65c2982a1cde4359fd2f77ba635a25659f014e8885c0508e031021fe42402727e13956f1c73e0e4c647f575ce741adb635092f132fb2b65901636a8bdeada08903bd14b5d071a83493f5831bd134922a6fad1a186564a01454c69154789b88beb1e7e595fbd78960ca063a1b34ad868cb20bee9d3090f7ffd70261d9b96efca2f57668cbe1239a2216ee022b4a9697c67aa341cc6b8447d854e465d8ef3d2799eacdc873d6de6769982ce8b2fbd2869ed3d7f1d96ba2db08fdbdee793e51c4b058705112aae1ae75b104b84130b5f5d39d7237144ade2db47be3162e0caa716d3a8b8b1fdcdf2e6b8dfc59eff3865fe9b71e5080c043a5eb782ee38f007ad214956bef4cb5d9d1b5d95f33051204e421c8ecb6d9dc6ea4b04c7c6edf8ca781ae5e02255eb7a7227d0abd9b9ea1dee17dabd0eceea211e898522d26e5534dd41fa867d4b9c97613a0a5696133253a61c07c23d19e15723530f1a71650ef3a6c0de55406148c4514f37df95d3e4a2f4ec7bd1f8af803e95871f1d347e180719a6cf6a614d4426779baa6ca1a720a4a83c06c67fd3f666574f0339e29f635a891ee8fe12a18e303329b2c7a852dec0da405b67cd8d80ce89d902a79104464c968afabaa5678de97ce7b4e6cb422646bc7a88248295ae106cedebedac1d62e75edd2024a28eb7071d70f0647bb61e64ef2fb5a97864c006b1e6c76b910a4b27c46f9ec32e36d5d3573072d778f390912629df399c854805258c1b7148a46926666b59b713e52385a5d1d71abfca03807a7d2426251cdd10ed3c50b6b31b158ed4d6f6240b55398ac2c7d9655a919ddf28e3c2b6be50f4085a2b318444dee92811e5c9e7767d6c9cce93b3d2d2b3f858cdf2da00e14f243af15f3dca8433bb1c3fc75dd158af1e9abf5dc7baf2b749502e12ea70d3036051c857761a48613b80ac39d16bb6727a113401d26989c5f3d73b877c10bd8f29e6b7177b4c990fc89e183502031f1ec0f1ece7e846dfc2bf775926b17110f3379d4f1997eadf1241b86dc9a16e1dd62e1bc904e96f3aabaa0919d5e370be550509f72f3ed686a28306d17340c575ce2e2328b1eb5b84d3d53c2d4305849afcc50abc36b03181a8b61bc1eeb35c7523ff19649ee958944e779fa9987d7ffd0a204e87667885dbabdfdcc3ecfba872fe28654a77b31fa2da94c9e20b01ac51362addd8ece13ddebbc0baeb8be7690491bb8ace57512e27b28c005a874101790840c237dca8ec1929d20a424454801d151f531128de5db176530fc856e51d525cd89e770d59a374398f2a3a4f3f59c4ff07c4bbd97ecc617bf8745019f43c584ab1d6cf5f413eebd6594d8e69c5247b93001b600492345824e6813fc58b50cc5e86387e039ab9d7cfe0b20f81e0b8d0c2aa801d630794023bfe98f6ec51ab98f1ec12191df3e7c4e0f888ee6a4731b83c13610bd0082617022d257b18cf83ad7ba93b97da426c804b5cfe9338abd435261e99bb24e62977d69ccfa976e0de51f92ffdf123624442f51a82b184a3a7cfb9637ad76508c970179037d5bd37b71584201bae1c908b3e889d5039424b3df2cfb8125234915566a09b5d9549f8b7a42e81c831e3e6a5fb3c60754536368ac3105743812a3099001c5c37a87d39b006be929086f5bf39565bc85b45f68fec3f2abb5ed14f02a4521560cc1fbc482e8b2d4732a0912f42726da9deea2f0792c87f6629ff949f03678574583e9f4ea7a679ba65f21ccd7e878a9f4803934708f54dea17f62cd766c5e587e89b2d331e1eaa4c230a92f11335b73951d95cebabdbf249910ec284db23967e60eadf8ecaeec7ea3bc5de9db6570bc422d6f9852256dfefca9a37aaa16f2d35e44be988156322c7a34265bee5e3e6ae4488bdd6f5f11b660f7cdf5ad6c761c83cfc44529afef53fa5dc247d6057aa319bf4998b1a5d1a87e78fd0abacb50353b48d3405677afd3df11c9d544c163bde4130a9dd855343eb200790cdb0e4ba0a1bb3ae9a8cdcb75e0bef683ff0034c81f7c5ddf9671a1bdf138f2886e542303032965128fb676ce13e5cbe884b3978ce863093b0e1e7323b01a8cd6ed8050300107804a35995281599c7b57b5d03c0c7be8d96add28965731773188d3b9d6d36fbdf65ba9c39a714c0d2ac4f8cf6ed7015d4417057dba6705713bc710eb2b365529bd93ece5db9edff57a816c2ec3c9bbc8d92682ae13a7910168cb6c452cc795196a963b913cb0d72670b19ceed5ff766589ba3571a9d5c87220eb75b91e6335d421ce00c05570f20598832e131618c922b37f962138b175e40ffe6080c983c59250bbbd4e9bbbb30c8c9aa927a2109d220a42b23ca191c5ca090c519396cf8bff34b2b67c54a37d49bf3240b73454a73b47e739e4ebf2126c40820633c8b828bc3acf536e24c7cfde9ce40ed520c81077ab3ead5fd50e4a66cb68e261bd1e0ade242cf9ab2227487ff61bce945eed3197524e3f97f1e7a3277e527f664623c26d08a08fa083f045f7c29e5890a766878b5508b79b5b68de730e01df4d09a66ee61694161dd106dda32cbdbb63a37521fbbc91631cf6758ae28af75064f617baba38b75ed6b24b1ff5ef04bf312441b0c1438536f13b1e835e2175c3bfcc98a2cd779a7ce346e79ef20992f21d73f6f66de9db3993a03b23a9359225b5ae9020f8398099400a1373b5b6565cd1ac17e0c05465e2a2803659d5c779de61c637fa874be8874e5129f7eabff4cdfb2d89a53106fa325ea2c34aca2af92222fabd8dbbb9a2e85050fbf1531b02c6ca0f307f6b5ad13f2e46c2d4c30ae01f1bb10420497d73bcefb3afd147d9d28075b43313cd5ca5641dc79bd5d1c3ea84b4a71c4ad9f490f5b7c9ab2e2e632286b4633473e8698e6b58cbc6da570831f917d4f973882f87fb983849d6060a369245f708ca05a2c0f5b104507c8cd75267b45a0fe766074a1b65495a34e1e452326897d5fd9d2b95b21f818a6bfcc3dddcbd92c5e7f90b808c58bfbe1065ffa0cd64878d72de4589543c8b49fc078aa4edaa1afc70b83c500c8c408b3c4ad8d51c000232c92d2b1dbfc51a46ba61f60229b7fc09a191933c0d824e85f8df2f40440a2660f09fc3bc9b1ed5916e901c483461e3eda3645fd3229dcef59486260fddd4f2ff1a7e271c5fcc9d39d371ddc08aed5da0ea866e419fa622140934abee3bb254263acaf1b1cbf8b67915b4bd1cb9e134bacb3f090f5048d18b06f239532c7d417c67b5623929f37125315b0c272789cee03d4cbc91e695bede5b5eea0e2913e5bc45265266bcac6f24223f590e2873a3aa385df3dcdf7ff4a54e2bce09d4d4dd1cbd37f234853c7127e38b3bb416f3c2ed6c98633baf60fbf2f49c9f37102689aca1b7617fed5bb8f6323f68bfb8a067aa7115467b8572c2537b0dc024aaf35f07c2a90ec3dce7f7fb23ae186a00d59b03375f62974e58183bb36a86b4ec2663e294c3e83f9964d4e98b00c1468a31eef78cf9e8866694b3cf3bb6ddead832984b3cf063dbf977f4a283b11675e11736cccfd71d3e150ecb63158633dbf88a95acddcf4a71af6aa1c249106701aa2f685a58e1d22919933e177683b616ef2a1fe25d31617cd7acf76804c13d684ee37ab62274b2af66544f6644ece433f50dd3fa689fd6409d4ea72c113c5b78b2e35adb39e0597dca63e8a6b2116b4975b4e56e4dd188e269864454cc4bfb0cbba2ef51dbeb43b04b3977b614d95176cba6eee29a381611073028b9fa906b5a2fd62f04f24c83200233545a2f3d7dd105eac4c7a475c0332348e0f54bfdf1c695fc45ae7b314d589410bb14efcb7a5a2a8e6b6901df1e3fd97130c2bc59038a33d1c49fa8b95302b8755370aa24a0c523240e3fde02a19e3971a29efbc2c98b43daebbe097bf0d8de694904d27e793df7400d8e8a1be1db54b2a6315426fb3eceddfbffecfe1e60b1d9f5b2362288734efb1ab2e99dc6edf3c344f80fc8ff6e49669bc21c3e47f4171517e5dcef509ab273679c96ae7859fdd55b2cadc2683c4c434bc7922ed8f7595199c3a9d5ba220e48dd5b62aa208f813f7302c77db6c13008ebae5330b2294a25efb1155bbd562c216ec07f9f7c2c8cfb1aa10c3a6f1a728c4d36949e616e8e0efa8a751a5f2bf7256f6b1ed0410f2326dc732e8c85c6f26add9f7d452996d0eb82625a4004e4248305df6f334f614f84b9bb3bdc0ea41c8151fd62e5dce90c8042cdfd0e0d61e0eaa25e11f3af08a8f93f7f84e449f9f875714bfdb28b8842f679f1ae5ac433b81192b29dee6d259811273cb634f548f42cea9150d6fadf80591be2ba0e9ed1c9309320ba373487877981fc93b1f5eafe51327930edefc9ac19820659a7c580af85882b4a95c1441e837db15c114da320d47e08f7874b185f8abb90bab7fcd730d132ec95032bdf17a6b5f5ac6060b16267c77de4a9f399ed635f447a63c9eb16d8fd14172eee9a7dfc10996b7d8e112903db71cb4c8ee20643f80f50e5f482cee5dcf250fad3f8aac333981a9d16ebb06184ba20dd0b5f4827fc3a1a0b5aecb34337fd8ffda27832dd7f61b8c84e646f82bebc42bc0181ddf6542a04b60350fdc5e4c6ad03a20f944fa58937572a577928f920d0bdd40a86f578fdd05d9b95393f3a62fe88eafcb9c5c251757c10a0f15a6d1b32a9b3c6585313861687273a430a268a5c418be55b0d16a181ba0201b9e481ba12be6132379f3c5c83541aaf57845c22e2937a62bb983c54fd6913d33fd43fed532bd1e92d4c431121f5af1cbd8e94e03a1a596aa8fc03044e342c0067fed63340958ddaec3404c3e1309da1010cd430a72404415f74caa5689a24ffd279322c1a95f6891912d391aedd0d6a6869cca6b534f8d69c5e6fa7fe7028ccf0219d6ce4384af87c06f3ba9a6bf3378a10478e717f83c239bcd368eb5d6e173213765e377d7feaf5159f59d55ba33688f4a16c4572c83cb7b4ea34da5c3e24b333f50a3fdbf0a4a7a7a21072c4c53371095c85182a90cc6c105a1c3f3e481292a9ff0b87b8d6601407821e27ce9397a2c8b1b33efaec8870bfaa53e7254a8bbc5f0c130ff39106b2e7329ead3766b6ffaf492baae9ac1de75209f7970b070fde8518b83e5bc6f60ed964f686d19355d3bff0f16e319cfb238096556c398d57660eac82b33545eccbd759b98801a07d10fc662410c1975ee5a24726e7d0cc8f5430ee5e90bac74087bb4e77b642b9f370f13b583fbc6f1303375748f4437e5691e8c9f0e996791e55c873459fa087f4a029bbacaef899271a6145f16adb58c726742277276b5368871f75fbaa3e4b0a41b7e85c5680b4ec1a67686afa32990493d71731b44c4563574b936981d04a1808af8de41613d8f921310dc0cdb8d7fac6585b772942316a7ab64b09fc2292f5b8aa540af1a2ba14b0cf27049d322f59200394fb2dcab536ca3191eae08f0031f046f66025d6a12c28f393065535b3f7d226d3dfa255c888f07094dffb8aa7d807a475116d8725d17572e5a4f8af3626c3d618985bc71f37758c1c290919795e70e96c002646c2cee1c6c813e15f629dc768e8c789f96ef2a47f6f254b5446f4e6bd69a0bcd43bdb658ff3c30c581b0ca7f8ec8d3a386f4586abcac392eb0df9e2cf5903d6a9cf7b430da5c4be82397beae5adefbec3ba9b79546bbef89e9a516d4e07fdbc6e378f3da8b6c54a198e01cb5253579d507759302127dd83c271c65571a5685d837b2597693c1b8c2c3a8216a77a55b687d04d5e9f94c27ec311c163f16ce3a87a958fe57eb564301f556fe40f1b199b86420ae8bec3054e9c8002b18a488e989ae2d0d6baccb9b029e3ca58f8794fb05bb4e85752869a2d602a2dd67e91a81f5d66dc4812a97e8ed71be080952f5e9c8d62ca129348ca5ab50f3cf211dc154bf2dc477121ce412b87006f8a5f3b29ac9499d91c9d793fd6544441df0ed4207abb9d5e60a58c455dee4244339028d74d5c40d83df183e5178bbd051840290d15d04dbeddff0297b4937b7754a742457dc732c5fbf2559fc4ba7064ebfa8b4a667b62e777b7add43e51b0c9d9e7d91d02286ce231697a16b4d9c17a9b90b95a43ba736ba3f687067ad92ade4ad797c2abc801660102c1245bf14108f0dc98bc02c15ea3f10bbc29112e9f4749c3e37c4b64ed5f78cd769afd9ebd9794ba666ed4753817bae7e351ef27a2a30b3957a609ada79e92bd2e63e0949b4b548bf2d8f2f10f020da0d98130f06f3eeb8e42bbd6c7929c272c1a4b13178b67e6b6ea354a05819b68f1179e798902f98e57418925ca34c0ef55f1e64f8182f1872339c324b2161176b9aa1a4b46786b1bf0deebcf4442790ad96b60d9c00d0410be6f5522af7d590678af46f44dca7d15f84ac903b67804563b49293fd5ecab85fa441b42e7864ba2d56557e71bd3f051d31d415a1249e07864e9d66256026b7f4b20a40df9f9a2441ad09450ffa49161272d3fc744523cb41f75a827ec91babdabb67b04b737dd3fb6e349fd9e3011675f70e4e3a6abed759e9679c0d6ce268316b7ec3fa7ac17e5ba495ad16d3bba282bf5773289ffb127f3c123a765badd250d87bce685135a3c5daf9f443aa67f7dfee3d15eb375cbe8980d90e67e52cb37170ff270bf87f60178a670a3a4031dea8f94722adc6d3fb6e89afb861b109d6b3c97f9ebf767e9270b16f3179e7e436058b2b7a7300a4205a38e309acab5460e88b3b7678508634db63a1cd4f0100d971a71e1a3d08998fa6e99b59b2c6ee2858e405d75f335e5f94137800eb609306157d1d9a35073fc3851103697773a06c8e26f0e297f879eec143553e6dfe3acbad7f4efa33b8fc9b73795a4cdf5b0e8229ee4ae5f9c81ed7bbf143eadaf6cf0042483f9de8bb28032714fda5f830bef05dedf6422718835d474aee8873d3aa40d0d1e8c3d3159e98834b4b4db13867eaf447da5e158a26fe088a25bd0f671a70927e640b29310dcd616dff3662a0d2bc774ffdbe9600a21caf6b99b2718dfe9a2470f34b408b2ff21957a5ba9623c9df4992cfee3cc92a149dbd620ae385923950985323d5e6d033b9038d885e9acc974dfba9f6c92d7db72fb740a6dbd7aa11a4d9f472d55a31fd7ccdaab2801945388f7cc56ccdd40f1453bba339462a7a597b4e69cb92290e7f570cbe1ee7eb13457967e83a48cd56b0e251789d3b8620d8827e9dd98edc5b55e89458e314b8e048ff580ccf3b1dde786677741c0a1f63eb0511e92f353773d60870d9a0de50a799252c7e22d12555fca5402dde8d66994f720dc1ebbe4910a04beb91cd7de3dfa896e435e42ab2d8157616b0bf563c6be1f485b63eea6a8fa96e68a87055ba263060eb2c5562962becda9d2dbf026b0dbc1bfcb207f90aef8be9cd4220c97964c307b7713a871d8f6966a35d8ac534b37974279a0ff10818555dff59fc05e2a72af018c49801714f063866eeeeef272f418cfff49fc8642d7e593e1c1a7933d1c8f7378e66ce7b8ff3c03c7480a5f3f15ef29901be9c68499fc01375ebeaaee9765a5624deb60dd93eb8b167856cadc9d7c584436d79a43986e55ea381b2e5921eef1297390342d83aced7391e8b5b1cb132684f0ba3eafdf5a1f7d7c143ca4d615b3936249cadb4e6e9a7521e379d59a02a27920e7e2c61af4d3c6d06907618e35cd8769b2bc66c059290217acc1d613b5a19590862cc33a0c494d52525239abd3245d01ab59288d06d3b0075a0cd21ba03824d048b350b1f43d2dec33f9ed46d22036c43c24bae988f7b96fb42fd8c08443f1d12b859ac784d092d63768a54e5f306d01a4532737789777cf34d1a43ce1e2fc0a48a224dcfe05c23be6228a6a554411c3c851ef332ada75c890eea42712f73f03c97e76911c45af45713bb9cafd517256bf3cd85aa188139c77554d96bba9808ac8839537c1db27165edf80334cd1bda9f76791591891b2ad572ac11a8fe33603978d4ffab0798a6bc8c9eee2bf40ab109bda25c9a78678ea3264c8e468d58075176c559e32b20ff493ccae290da0384238cd3e923e1e9f38c350167a0b72275c3a6525d7b07da2917c4e39d194f676a1453136a708b35450720ce0c076f1b25d4eb2c57f47b848101dc851a977cb66233227f9fd6ac22ca0f20dc356f44d8f63d2fd4e40a8a31b11b247d5d6c5abe463b586baf3ee6f201f999afb6d78c540c1b0e9466ae961d02b95eed8bde2a9a5bbcf597584d2fe1e2ef24eebaae35ca85d4f89ca15a17bd0882a7218a1b7da4369735f3f00765b2eeb6d9aefbb075a5810ade788c9255ce275419cb450b8d55a1f208a6b288b931b986a4088a50dc9f8a4d87f8d37edd561b7b6cb41820e39b489d2807cdebc59bbf655d9cdfc01f9bb366ac1dad8c89b08987d6f26ac7927849b891de7ce8182babc1850388ad8fce2d54b92d4712fc446f9128f497e92c4b5b84befa4c1ef89fe808165b50e2e2a52a90acb7ac9d94e2be6c34411522ab9470c06b9967ab00c96c4ee2c0f256c9f35fe1db9731db899dc6a1f3cb12b70b3b89dd8f0b653ac4d39f9098ba279b8b8b5f70d9be61cade7a0b26138c9265ee383f761411cfb99b25aa7ffbf65d2459abbd0272826748ae376aea48e5368b37ead706509ccfe6545c71543d73ea132abc5e179062b3382173ec628a7e3ef673e5f6bb7db5c105034d7149637aa1a1e17ccdc2554de989f746f56168234e218df941ab3fe682aaf522ecfbf17b10a024c35f1b321340de1ce65fcae30072765a3d8a09decd00189940cc2170230e2ac7edac9f5f215543c5e36f30356517493cf0f9a42d5cd6c8c962e3fcc586db66c241c9734401d432d3e1903edaebb20242c5762c61ad4a989143e1a96ccff2c19790697d9f71d846ef061c5298670572286efab22d245b03671d2635de6048eaffc85cd7cf9802e23d8073f4d3f3a8721303a360248f5f4e83301542d81a77621f0abde49996e4107bdbe1352cff126d57fc5b7b87a774cf1847ec6b74ef6e5cbdd023df721c948344c9fd37b403d291a4a694de49c46d571b34dea92500a9e490df31d204cf7b6a6955f25782f9eb91a717300de93b413d9b101074e5f7d13f91037e6adcc7ebdf78c1bcf884dd01cee53e4357f7bada9a8958d7974a530659b38600022c56eaeae89addfdde177ceb756bb18ea224a54d118a54a98236316e71e6b4ffd509a3024c9967a2d452036d2625351f38a3219b91aad00882d1885c61b64af36f9a2d030ea770805658a8d0266cf9b836bd0cdf31b3c8fe5eacd563fcf1b36ae42d3b8c77319ce45434bd20cd2960fc8ae5162d1c22a866ed58355ad9eeb25cf1ec9992d4a042cbd75badc3f1ce22950f37a9a285a34e2673f1177102e8ac41e76f00db33baa08cfa530f6ba3b57ed480c4a1e30502721cacacb08abebef874aa8cd01b9781e27b71096883f2fb6a8dc80680ccbb7a57bfcef7d3912834b4b640318eb4c145e6cfc0841c15a7795365f096e7869c475662879ad7b206b067e5f4ca4d8d98728554f72244194992ec85616f37e805162bd7008327aee57d97e8e3b1fa5422d681e33494e34189d3a8da14a73d9a85eab39a2901b9914c5f094d3ff97d638c72a627f19b66a0492decaf0fbff1ba68c061645d7e83cfc74213975b6daf4caf8292bfe845b4c1908a83392b4c206f4a02f0252fa0d52f5e52ca109f69a60f4c9e3c028c1b4c21095999208b34f95fa0609c82ee8cace19e115bfb9476ef56f2543ae4b186d714651471b456bc8b5b44b4c4401e55129c6f2842630a796002e5ed8c4286773d8ad5903f16a04ced168a2ca94d9093efc92e83c8ae4049d5695a6a11e84a058394c4f1ab7e6d643930d613d9eaebf595349559fc318c5bb9126976360e749fe598dd81f3c4cf2e18e1881a64baa46b55a40124196c84219c32fac91be4cfa947ed31d4b92dc9997bebf204129cd330d6af0b88ea10147d220fec5c68651e2ea34944be326cfc2bdf52902023d83ed80a64c2881329595d47a62a7cd2f06430acb2c13bcaa789819b9a50ca83e5e3099b4a10462e7d96189806c7a393270f2278b5a2ac2dd32faae24c1c95c91cb8b9e344d33a0573fd44f21f8498e2b58d8e116ecca978f78fa62c908e5e4a046e23f039f61b431ca89c7910785f90d0d73cd7bd2304167015f6eac46b460843aec88789a7c15812b11ebbfeb839a5e5b5556db311ce143c922a0d255ac9c0880b6281f1b383d0e0a72fa3fecf95ac415a4ecbf72548548d7f46f0102e6f183271e089e158cbc0a41a435fc76855769329983799e2003e548b7e09ff6a1b615085830ce4a33607b4b136731df26d8f0ae01601b82cfe36d9d0133e172bf3e33606d0137c82c6512d0203e825ac1d80323bf36f52c3261157f9c67a354476ca4adb7b86afe3bbd6b45a0792b3a9d21b627489ba1601c72574e0892ab0ee1cf51c56747fd0a6563ddf25be2a255e7ef458025be0372e8e62a85f8fa294a5d59861dff780f1178c04d268e152b3b2f2ef83e757bceebf295899fd112b0462c98862fd869a820811fc2536a1f2602e93c13f768b96efc1c9821972e340287e58b9fcf9e4d573a533297f792e5308aed4a3a6bc516735a4b9541285e366ffcc2040f5dce85d77107a69580a1615189f83dab0d65e9cad3e8205206e4cf97ad209467b53f08b10f76c7543ba2abc10a292b2116b58c762d60266edef7c8cfc8030d52e996150fd7c1379d3496d421e7845f5de738008352a465ec8600fe822d8f94cecad03f4742cab0bd4cf2901a4e73f898fc03d66a12aaffeb021e3248bb9042578fbcc0ca9db8d903421eb3bab03f0c619d407136d8ea123611a5b18b20f35186ea7e207c66772bcb4cf775193b9b629f24ab94f5d4e16706d69ac4fb754be121380e2ca33536e5d3034d9707931abdd1bd18416c11912d8dcf39f120af4d43af86b73bf9d1e710d4a36642d9c0b4afb119ebe30cbcffc53bad700ecccb54dfef9598c987b2c297748179ca92fe4609cfc19ed599d1b4a22ed2612644c1dea1e9262658535dc2662c61343502a90eccde603e2808f03d314643e4285e450cfd5c4da8a80c9126a3abac37958fb532b6c08befc57dbcacd7c081026ee8002679caccba414216f2eec8019734cede3a5a7d5564df84c61401685b7b08143215d569edcb45cc696bbd22635c8f183192c7be3e67aace3b103aa20941e8c572e8b6b49f9f996c2f9fb7e666031ec1bf0ac385df57701f113d5dfc10fbccf9294fec6637cd5add80db30711cfcefa112558f1d00a5ec3d7ebbcffb328308a12a233b168141a6c7ba32abb6052d16154b8d4590b456fbffcbb0cd4b6c6811a725dcc1c377bbae5c5efd6ba96d6ddd9f16adbd1d748497ce7cc5c697696de505e019e8086a4f238bfb56200d990ad9da4416077714dd293bc9a7caa415083c14911cdfc1f0e4e50add9b916acb44bd603d0b71c0062227804387057ce3e48877684bb257b3b511b95cf16915decf09cea134239c32a9fe06369b4cb83f5fce63feb0e70b98d351fe5bbf08763355841b1f1f46bf51dc584dfa9bba48240d40135c7ab0e7a8a08739592f670925f282ddd0babbd3bcb8a5c316445c3a2233b59f5d7aa930a855c16800b00cc9a6b60632a0db67a8304ffb7e6bd8ec5a554ceba769a72b85097d808ae27613edbe26a667b7b808f2304644d8169ca2c69d88986ade9a2c02c778507134f93c3a9dbc47a77a6f9f1e5458be5204590bb32b484e411f13af1454f9ac031372164e9162ac2a758068fdf1d1c86349dcf808e2a42ba5e072c3d8c1883822d0612d9bdbfbc9c9514d643d651303f68c777d9f54e55f272c3e1828030143ae3809540759dbf5e844a16f044e15bbc1b77df8292f0b7d0799a21aba2014a06a99f2f55d5549df114526ec200adeabd414c9322ba2479a5161eba6f717c3cdb085677c0865045ac10eedf897e50f0ce3da388b7f0b8246ae4e0b496411e66a3408f6c2be02bbf83337ea3a925c57ec3bd02a335070d54a4ef5190dbf95aafd4ef3f39b21d294773b817635e925fce57a5c057b81860f3d9c56cfdf3c6b0e0a8e7bf46471d4a6f6663ecc32d7a3591951e4b22eeefb33e29dd00b7f7ece64787d2456abd2907e0408c68cbc8bc65a7cffbc1e020262f6602f324efa23cdd64be84cb7e0d22d9e78def23aa4a66201795c5ebb0d85a4454482e740c31fa2dfa809557a1f1fbefa1d7527bf9bdb7be5db7ebbfc5aaa3abd4d8a752a4e2b16ce2b686e46ff9e8e792d7990e75d400aae1268d3dc80b351311842e67a42ff10478f55a2877965187a98963be266074f9aba479c5850bb08298af15a433b31bac1a24c81ecdd29554c23a320c43ca9e3fb7e3265f09079755d18e0b4ba17d9c20891a73ae7d63a99b44f226a0648be4cb74766ab2acd11923dd81c28badb5fb3bc766891307e1dc26b176c21023c0b00c7b775290f2f3f646c62469741201a63d1480e4042814a7d9e7600e27a0f827bb8fbf497ac6c6fa640857ccaf11390110e0bb0e2dd55bba66cc6d15e118539412de8813093c49efb45c7e5ee900b95f38e56d86b827e39436ce78f53d0439d4a5a684185570a073fb7b9724f88a290684130db7dfadea166243c3ef3a37f58cb8b3c2ca813c3f3d00b1bc9e2686b9b766c2fa0bfd0208e6a93739e04da31bdea9b08c5eee4514dda66c9801d6130519e25f41a69d2271636a8233aa4a9e1a9707db211d86a34ad6024851c73c9c37a91d8edebd094969bfbc8331513a8fc2f41b710f2bb4c4f0dad538368139b60f1d9c571e3b9ec62d1bd4c17531053bf7ce8e2e82df4b14a64f735d028bdf69a5d087f21617c777a712100d858fb8aadc6662c3ed420c7fec081c28141f29ae0b3946ea1c9ec1377528da6f03563139b41e2d5efc5023ff0b64d23bac2746e8990344e9f8c0d6363cf5e71f75db713445be3b5a78528cfdc2d5f387a82b7fc77d50dae2875304f8fb3048a18fd849975c245b518a752af57e60f13442ed8f3492bd672513e2881741c278f60710b13c6fa16518d77061d76454f7b8dfecba41848a2522aa690e8aa039f0fd7b2f9d7dd7e311dc6b93ed98b39ca6a0276a386c91de25907790039ed62e40f69b4d59c4fb3813d288f8ba9f749df9097d62cb3ee51c966164f2e692d24c688a307e6fe002c88eb3be83bd6ff23f3cd6c36c86837a12dae45f6ad34b94fb3e63d4d75fd2206dbf47a165cadbe3632ba7f5ef3897010b7387ac2f19a6e2a998a743cee7eba581e3b6f596e001f300c212eddee1a150d185f163ea85c00365e49334b9ec9b8fd29352181c3a3e86cbe8188f6e0c76edfe554d0f463834a454eec0f41e409a435d96cd6ff42efdcad128b745c065d4610949ad852b8dab61660ae143f2fcfcfe74efd1f054341e3a30fa79fd8d34f24a4078850d29b6fb12619c15a067a9025814f19397cca7c4525b97041526732214e31ca10f1ec162dacf8c97487dd227db3af87b5073883fc1d2634aed9494146fc1fe1bfa86ce637f1be5fa9046d438597bd208054d2c00c8d2275b9a34fd97d5f079e38635eb99f799a8ffd50cd123cf3f752295e37a0f2204c6ae81e56fe1351c8ab40a542b0a6a9405a0ff6df94f7a65d9f857ef9151f45187f748cbbd5c637a3028fe9ceadc7de3b35c04a6a30fe821d1b9c62fa1284b27ad01dc7ae2867cede7322665ad88a2c4589afc4d733af0775f0e43e3d1331d5f3b2cd21e1e508ee5723e8b5741b6a2f5431850e164e3bd21addd7dcfa92ff98a62b0988b79fc33d2108b2a040a6c5a72bfe0bad1013edb7a7b3ca5bbb934f6fb575334ad30c03ea936e7d7b7a6be8ce8d361c3d817b01d20fd71fbf1a19d49f8e7fa03fae8567c5747509dbc6a31c98ef115694a06310fc62c4c4a3a6ae6f36006b7728118936751b90bd920347d04f763bac4ec4090587ba8600b7f4df2020e41165795e3a5b8bdb07e039da97c94a4755be921b94a622703f92c8aabefe48f57b1efb06def6af49761cb1c0976b97b57403178d8ab03f78a51f92b25f45cde667b3e7005f813c594c5a62e98d0ae3a5a1c4b12f587b6c0082f38d3c5b728f26c9b06fc5cc79eab84de334628550059557e7fdf5ce346e40330c77865071c5cc4613d12bd6a6774711da6fc6cdb1e3090788deeca0a818c32a7a4c935ed84e1ab9096a7453e761f38200057579f19edf9764ebdbe698264a6c0ef223ab34e68fb18771f9bf921cdb62cefd31e0b53cc1df16102e9ca694d61459c848e1667f18f1a73f46b669610dc3d704771d2d3f642b1fe8c723ca404dcef7d5d5ab0f65f9f0de4fc97b167fdb8c83457c8fc1dc8bbcbea1d8be5bd0a55d345cdc3b0ce73a57fd66f0753dc749fb111c3059dec9a247a271c116ac1e9015f3f00dc702ac0485028741ac1d7ecc1ef34fe9e2c3c6c5745ce1e6b72cb60261f1779607fff7f80ebf9aee50c1ed29586dd29c576c636d60b0829e912816333e54958bb91e7af23847037533be7e0ce3933bc52480ab811bacd172770cc70ebe8673891e4e73a87c3571154a86f889488d7ff77f5aac862b934fa6a33f7f6a8768f6757a1448a50bbdb3532f484ba7e8299655dd1d07bd08992036308cdac252ccb5ac9770cfab478c6739a25f85aa77ca0ead7bd800869e6bb69b9f1766986c46590742c5f01f457fafc90356d6de7b96ca14d6b8c216ce8d513453eb0227384b2f4fcdd56247522261efda72c148d102574a3352bc8aec816384150de176aa9d19a68cd29d3f6b044f3250dce1aa29a8a2e418f159b142c41b849027958bcd0d295e58755256c3d99aabb347e225856906afd1ff80878c95a9c1d6c20ac43f8782880f2ef809416e3904f6398ab0beeadc24ec7a84297b95fc6cd90c5554b06f673d115f4458ff6712c42ed8029fff562213bd75832e322d0e50f331a02067557b40c5a99c28ccd965db1648b5724877d6dadbae63caccc9fd4d5f45c526bceda02d124bd690aba5611b8ca06436ec181baca134dac7d4e68942bdb942129f6308cce687d46a52af1046126a65bc13c44857ae193468cae8af0292699b8c10f6487eb329d831acde0d794eaf142f39c273fe6539d17aa5c77ccec52f5e5aa4e69f07ed0a926657f2a4f98a9df085ad741b076e0c838a4c8958bb2310585b07b8ae078db34ac927224bd434b5f49b13fbfd28338d41d31c8c567dddefb21274bc529f9105b191a19199545f8a1bd6e3294a5c642ce8ce65a1547d05de02723ff46faa79f9216c8192331641152883e7d0a9b673d5ec8bedf7f25814ec83404c3cc9dbcc6a7b6c34b74252b3921860c151defb190343ad6bd6aec067960a9e95cc3fd191f4cb565fb57218b4f4e4f66286e9c3cfe3dce60d26aa27bdbc68cfa70614e8d7dd719656189755e6e26adf94f7fc9d568e7c06f3cce9dfbb2a49b8259401322d167bfca5c364e5104ba9447263a9843046c71cb1d8140d68b0c32444d5506d2a4258e68b45e96f9a81ad72eb93084d24d0cc26d178fe4eb1ca2b4b4e9f374be6d734be7af9a97e14f2d39b4285db77bed674ac4fc98424e6dbdbbc1f4b23a17f4b86de99fa9408af5f3e7690dcd6f0cc5e84241b6d8ece3bf4fe52ab13c65a964ba4c242e62dafc2b5a1cc41ae97d5e24b2d939af830ea482a9b8276c40124cf0d7c16846ea00a4668cd9f9394fa52d7f459c4262c4a108a835ee91ab809cb54abb0a7a2bca2ad5b648e001a16cf0446c826b789fe1588e06cf0d2c526564c538dba7291a351fdc190cf5b3f5c21090e013c4c86778b810ec3c9ecb8c442537be9d7067ea2709460de198dbc399425d36af90c505a8a5b3d6bd55cc9b072bb834ee04346b7b7acc0e8d5ad218185f27a36a6ed11a02331797b5bf5e2b25348a4404d05fd0019f49126f14153abf6fcb1de164165c2864832f3f84e7fca5a591ae609a66832284725aac81408ce7335641c7bb0dcd55d05bc03a627340dd4daa6c3db6882d40d05f1717bd34be272cf49eb45ee7b74a2afcfe80c8425d55f140f8976b9fb58b01410490634fe5ae5e9569e61073b7835b70751b3b68c3f773f9ced8ceab4fcfc3dc037cb42530bf6f6450422aa8985c31b6456b89e37fb91019c9c708d447a7a2de2836642535d2dde179ca676c565c047cc0629260867c7fede3113c0768c8f537e41f36357d875418ed99e70c33183fc847c2d46730005bb39467ad6c94027d43d73218091f7ba22b179a2f64d4ccde4bb86909d032234e9058cf894ef199de6edbabfe384501c654ce78f379e2c460200e263f4d511e918a0fbbdc84e021b59019a9a348809ef496dafa2fae8f8b571c600c3dd1b60756ceb0f916c820ed3650e42d36d47a00717e80534b3cff008f1e763f6069a9577a2cb12c3afd90fbfab50f50ff543000689d4595745eda765291e8379a92c324247a879b125d5f6cfe723f727d44ee99d910cfac4944c10e0fe8b45a5033ffbb353f051661cae05b7fe890c2d350fa61527afc9c4f3ef54930e330a01b2559a5bd895bd2999cdd2b202ab8cf45884127597a1040bcc49842c137e407c41828b00958b7f16c2521b0a24500182627bf21ee70814b967c30a301fb7901259f15beb854b98038c90651ee66757f57b1798ce3fcf72f4943bfd837b90949c675f38878153f2545c8c734086839fde0b51da335a26a2c5fa803309809b1fcfd89ecb36faa41e85ee8185b03c5a5e19ec755ba719002e315ad7324debd217ab72146d76d943217a355e6c74e3466d91d5a11fb14693c1bca279e89e1510dedfa2399fa532b84df720466ced99c46a937e49735b72dc4bd2b5123410db9546e2311dde113d9233be270fef572ff7ba8a3bb6218c911934b3f044422e3f8521ba07dfbd1c9ee09a3037c4069f7925184f4c82fbddcc4c9eed1822b77a9c6a53c86c3759978db990853123c02d4139b363621dadb456bfbf8513b5a8efa8ae7d0777ed0fadc7b683e3732045a81540e4c9564be584d67b4345e37b6918b8223789225f95f7907370f1f560cfb632ec6a4978a4cb8a1dcfbee2c6e322896a7ad431eaff4e964a111eb174bf6a4c97143f505513c76866cf35f3f3d23fbf69cfc0f493d3026335b76ab4c2cb87139532f1cb6658946856d2afd75721a7b4e61b66134af4d59d0c0ca8ffc7465eea68e39a9e8b86ac5854f4db18fc1cc6af50c0a520090f9baa11bf072bf4a71f99e06b5f91d685fb3f8e92c5e227046b1a2102e1cae0e770b9fb001895e59af92bad2e7ce6ca91e66134d098921c8e6f69a88891ae83d1b074ff0450b8d07ce89ac438e9ecc5b9a24c051677885763335f7fdf71b328362d0ecc84acf5c2df59a920b68937fe61dbeb438f5baf979ee6329ff735b6ce14c045ec3e5c66340c9f273c7bec5933c0a8d995a90f6d8151a4662aa4d380897e294373737c867c7c2f00eb7c9c4ce363d66715972fec9f005d569f1e5b539d183e5d3e67e5caa55ebbba8c5401db9ca8791b18d23ef2ae2391c984815f7fd49b65285ee50674cc150e5f24c1cfbcd044d894c794ccb38ca9db11a04eefd7a85769666ab9d42fadb7c0e193250a3d55be9e1db05ba858ef704c806be81cf890ac92b19d33c35c488fbc8414069190aaf16657d56c2622fece923bd31817a2ff9019fd96aad3ff869b8dd5088e433ef08e8ec4b24e74653a0bf8c0358ad1b8690ce34488f7b0bf9e0e8533700bb03a66985d25cb4bfdcbb8e4299a444e3d96f5bf8f066bf6db768acfab079770549946e67ce30ef2de8b870ad511a95811c04c59da5d8c09e82e4df984181ad36ef5bea4bc056f976d8a42a10ff13fff223d672146de6394c796dd59a0a3f6ed5df4d2d22a6667d2c89a42c1938f56824e0d0e701d843182284688f3fc262c9d9183fbc3792428fc7f4a89f9c9c0927eef854034c05650bee05f4f7e3b0468650bb468a0b68e4bb546ee86c7a3671679e9949e6e429684bb6a654ee3a0674eeb6e55e6e34ffab261b9e01c2146bbfe5b402c78b45a8ecded714d71c2e81c377aa2b285dc6b473aa63125caef838696ef405828b0a0686c4e6f2fdeece73ba07eff1159308f086fefaae0c48e28ec716739c2f09e1b98e2da551649eafed62b0c13dbbf5493885decb65adf4e127a31d5c1a1a0d220b8a3134fcc09755c15b957ee83fc16ed28d31082787bf51c95d9b3945ef03082f8177d87b133fc0f630c3c07a80f1543d22a12e8e37b3bdc87825cf764a1b20c7155230bf01f21eca085b7a8ea1d445471d56c9850164c26bea490b2ee1fe656f6a711b29ed23c397e966cf386f86b2eba55df4a91a6496ef76bf49ac29a6ddf4998d71ca563d63766061f6eafbaa6b4ab53ed036f26c7ee794b90a92c437e7bbfa40dc1721c2f73ab943c261fd0e4758dc15e6974ba4ea490844fa4b0ad6015b246c905db4bbae3da3450607e2369d361c9bc261fd8db17de6f8256391af3ba61312a70a8e99ce160f48dd87ca54c77065fd66129e65ef94d215e59c6c028fc14f0d1dfb80330e7e9934a93c3d7fa1a7de0413fdddb3d8aaf6d796cda1d8499972a63dbb49685232902813d2089b19d1623d276a450cfd74270515e2ca0a28270e008edb3e4dedcee30501d8c7a066b7aa925f845a1e2c5c26dc5845c07ae2469dcef0e609431a3b8307992f0366031c483199f834c36e9b5599ac5b039ea08407bc8276ae3a952251ae126cb017ae8318852f8096d00321052f72e19552cc3a0a1489761ff25e6f60f142f1363e5271c28b615e44268666f1ce91fff455e30bb66a9d24028b6198c8fbffa028183cd3222f072e5120b6d7c0fe000a13cfd04148a2711419825ddfb583595a62a0df437b8f1e9bb3e79673bda308cfcef9bab68448408c74c6a963c73ec1552308e39b3db69b79b5cb89c544a91a689bb5e73c06484b97ab436340134fd806169e65557fa528fb741bf33a089a0c7474b7e0e05f4724cdcf66a1036bea737e490490114b066c1f666fcbd7e4a5cf2dfb7cb60bcca9afde7019ea2471dccf815f5bd2a0eaaa46d9bcbcf91c801a93dddaa249ebd9dcc199bca9b029dfe7271c7cf9f7ef872cfc8ca7d0df55d9cd0ec3d6101b9fb07e00a6c35e13af00d435d18001f3d86b6ef70293d7d17a215fd17df28ea20bf002c7407ec226b6e240d3725c8bf60f2c6ced1fd3f5edd6af3c0e48443fdd0e8fe105fe4fdc5bac9cd43798a23d814d5d47b998affe0792ff38d4e81f06cae18c36a778189641ba7217b6edf45147cc156cb3c9314a6d97f233c7f3bbcfd36d16322585dd44edb1193ee918ad2f5c66593d38b3c994add0e3c89b7191b887ff2bfa0e7fb270608df22fc7f91694d9a271e6f56bb39d963d94595c78fc37d8226ed50c48a82c2a02a55a5764637c4c5765bbf2083195325348c631754315bbe189125c1f6a9ec9858651066f54e564a50cfa4e7e6f62c5dca5e5c3ffd393a24935514728478a5aa43770891f2bad2b0ab0d47f55d83ce44d763cb308aa14256dad094c83d4a3df983ef7abdac565cb0cca193c5deba155e241962ee962b3236e34c25c0c64abc83f7aff8f4a4b9eb24b326b6fa0121d18d96a9b4d43fbcdac33bd1c51a6b035d67f6b039d56db4cc552318a461df2e4706546cb872f5b9a04bc1b47c2d77f10df2dc52967014231d8c00999406d7e8b101cd394df2c207ffe47dc5d2bc2d1df084d5ce8fbe942253f9f3888159b887b94c3142b010c99d044147c654e9eca1dd460c61449c3b09b4ed99c8aa62f95c02a11c3807a7effbd0c8f89a132c54d8dda6b621fd5c18dcde5eaf781207f09d9fcf8371dac20f71180c63fd24637d5bb0ae9805a3eadf5d3ebef955005d3f8e9abb2c18944e1877a87f4afe21ee9a724725f2294476e33d9a1fe3108110eb956f243ba2064aef32db8b0fe7a6da8c804b81fd6293b8fc5f88af04a5e1d7c22b8e409c92e592117d25ebd949d5203ffb95ab6aff65c291b0f479194236f81721dc275bf0473d33b68a58612fd2efe214b4917fd6355d127a9e80134dd5d9eec7320e28fb2a7c6211248ead5a480a55b16a88c801a0fb90bb9a214d5ddaac1ea1dd4d9c62ee196feba093678ce332437a2f7e8216ea395992cecd10dfa51d11bc1c4205add580983dc15c9688d4a8e2e4adfd284e78eea562770ff131581914b6a6f1bf898a53c437dcb7e06250b449c44200d2d054cad80da4e0aaae5aa26f5321896f829795bf945b8cae3e1143be938190413fad89d52eb9518cfdd6b4b100aca598dded634c493b69c341d3948bfcb13cdfad53b46207ee7f998b3d3be226566f6b8c603dfec48d632cf1d8f7303b4c59f77c3feeb183cedbe9b9c0129121a483c6ac29db261af8449b916595fbef8113f2dd09d8717bb9bff797d71ff0d10fb0bc7f62995508350a896d434e5d97b3536a60707f0b226256dc96bc726b3e847c27b48d6f2b1392b1b9143fa7925ef96f4e95d65fed6951d1b1a8f17b716ae285108c0e7985857059fbc1aac569499cae74b1c1f205f961ef95acb6505d967fa8fbb2ac0d407fc5ae3a15d97b3ca69b984d1c5cd0cf2e43d306dd93ffb463a4fa5b92146a14f29bab4639a6656f9d2a1c9e02f35f91a6fa299433d5f42dee0c97bd9056e852c08fa5dd5ded1408422e7f6b587b18b2925da11e5a086f29c669376eef66c87b0653acdd27104e2ce9c32183300751474899ae1fcf82039bdddf9eaee99c88f8f62c38b25a74549cb6b61048f354a13a54aca4b357d8328be487d4b64f35ce77957428598702477a3c0c68b0c93ed2ab7deb1a60b7670da846ee2d1717cfddad0d191299fea78cf0c479859c84495e702b7da3d0eacce795f793294041f1a37b571cde429dd450895cea0af2631982d2bcddd103d06c1ff27f6c193b08814dbe5814b8984afe0f49fcfcb02464fadcf1875c91a23bedee3949629ddd784c7049bba94c342a1f34de4282e9162459a1675a9ccb7bf8bb5207fbd0ed018181c3cd3b1958069433c1770403527c084855108b165f5e1384fd55d808f68dff3668ae4cb58449debc11159939f627fdfe221de69565cb22bc5cc26fce3e5393e2c10686659982e63fa360399362f01755b9cefeb9ca3aef1aadf49ddba811bde1de628220f8e70fc5f267eab386136c4abc7bbc7532ecfd191faad55bf72668f470ec75756cca1e5b69c270f167449081c5c44a922f7e05780b0edd6f2ab514be550e04064ad9f19258f983d7a3ccb4bff417ef2acac540bb3755b4aca949ad48afd09507db5b9bff064303a4c26baa6e10e6a72d56a0e9a72acd259a3e4f897d8c6fb9c31ebac5bccce23cc959dee51c362be4df99b9e2ca90d19337dfd43caf21eee117d8ee9fe53fc0716efe365ffc1a2d14584480bcf0b059f57148739d1091a833f5ebbcc71c71079fee07732763dc904e03b4c2ceaff00f96af685bd33a4326e9e30fc2c80638e43f5622f5b14c602ac71f0dae15dc68251b499ad764a8cfae417ac8c0d0cc8faa29eab0cf1ad545275f41a029de148a53820baec9e93a7563d9e7b7bb2a9b03fedca1000926c0657728d0a0c81235d1bd4cb7c5ef7bb522dfc06c3cbceb242bcaa6a44a434ff3e29450882bcc27e18ba5cb80fef907410f9fa8e05e5efd1d371eb4d3867204f8ca0d89f89cef3902ad21918febba5ae9e2b5fa2b117c5bbd8d3dcc400e8a117e4671ae0438f9f040b14c5b81e0fc241e6f8bcbccbc91eb447777bcb10d4c56d6598220631c491c8d939a6ce70bc63735f7aa205321b6cd71da97a122c8a41a7635d2f8218de0cc9ad14828c46115eae408e22ae6823f680a09032341a93bb97a16240f1f879be55f801af6135662f0c9e431b7c02870b8589cce63f12724e31eb73c858ea796b79770d2e43f6769ede3765548ae2bc4a3a86169e6c778d872454fff657862fb4541631d3fa9780fab17dfdd009094ba1ecb56a4df9010e89ff524fabd3789ac39204ede4a26fd6539ac8927c4deca33ff96b62e7ec9f60368d9acc475fc208d623cb00eb77ef11929cfd7a9ba2053bf396315d77b25e8522dbe3ad12049895be160f6a4d0eea6d7b5105863b475dd721a8f8d23e60b4937dd164294e577f25aba99ef3273a75d6dfce38e64ba0da424c3fafb126c16e8f06d7826239e3124459ebd512ece4dafb647214fbb7eaf1923da8a4c19a79390c4241d9cac52f7933e2ce24d158478c99a1684a2404034e8c3dda8d6a8c5066d93e165986c399dcbc6cce234e15c3678a7bc2e420b260a3f6402c1c9dab5a5390ca050d2fd79c91fdf8ade2b79c187001366229f880cb271b4d9c6a9086fdb46e07906d32a0c78b6e1fdb8f0167ae0ca2ed7ca7a7e3c41e66843acdb6841c74ba6b85096a02c79ddc26b97aecfb5a9dd9476700f778ae353aa50ed410023ba0855f11cbb240cf0b0b6c867e2b235bf279a10c4c859eb5451dfd406e97ac9bdb97fb6fc433190d511751e564f3192f29acf495c8c32a16533a957f7c3bd000959be29a7e7173673ec95325903bef588169ce52f9269c17d3b2efdc67843168cb1eb9777f10e6ce9cebff8a56bdb53b82139dd1acdedfb15160bc3fc3c96616b412357eab1c9fdaccfa27a3679061830769cc25be313393ba9852126c278ea7aeca850227f7e8403c4f9644bd53184905a181219b72bda1033dbb9553290edc67e24fc65457c248ac60b56e725c37aedccbce4d97e0e274ab8c33b9e3ca1880cffda149da7b144b00d685f5262443c4f7dc3ec0a6e27b9b3c284159b31b2273fd1cffcd8afc7563812d6e997373bb5339890c47bedb882a86f2dd3e92fa46406a9f794c90fb238bc05b44f047dd85409611260df6360679aced54aa86015eb3b4ce74c45f1d63225993d0facb87109b79c89df508e1a39908ffbd4fe439e9a6d25a84fc85630183413756be8b3f6eb14cc041ac9684a53a40156d9940dbc915fa69cfeee0b0998fdb6a8afd11fd5576e3618f5aba684fb8161bbe91711fa03877a9e5efa253763677ace0ec849fca805c49c0639bb2126ec77f17db83e2cbe8f89c0b65214f660ad0c3045efdff29d8da87f0c1c72d83a38888324adafcc03d8c95e630041c2d1df2c21b8aec53068b0ddec7ddf17e3fbd08ef7a5ae42ce00f2e265cb3341d8e86250bacc2ef82ec98a6d5ed8733271c0b1cffc287848766326a0fc78bc9539176c99d193e182df362b8d5a52adc967c9ecb46ddf4e400fd2ec32f99192fb58fd891dacb6f8837fe61987ea4cc33fb29529fd3e2573a486d87545cc4f4e4cd0ba197c21c5eb40f5c8cb751434d3b9a5c11f3ab643b1c6479a22ddcba1afeec11dcfc42ba3f54a2cf82fcee17d5d18392b1d9f813cd5bce50c0a0d08d818d7c70533ae1dd996b321d124babc1ec37f13cb851f8b19305d66c0787813100d189228211cf9f60f5192fa01432e19d070b3f04bdda03f184b40426ba56920ba02974848f69f10e9127de40d4c47c62e7130567ae74c2b65135ef8151f5dea6cd776d8ad4ed9956f66ebe0045d3e13ee4359ceaf4876d0f458b8e95d68b74d1506f5f725d8646e2fabb1d2983c0c3805b230269c65a58e2711594a5dbe7474ccfea8b1deac964f7cb71993ee5a115ac9e20a3186ab054d63d0d9c8e4aa45d04b92c862d66435b6ef6ca99b1d0c0e257844cddcc88e7eda9126af8bf466c0ee6fe2ad40627c94cce25c7735b392f7a3b104139a4ed97d1f9f0bd384450d6c3cbce2fa01a90a25caf37cbf6b2ffa738af818385a1b494d08fc5ba042c19c0fead7687ccb27c8f60688eba94388c106af36d78ce3c37e0d501e65f1ac06cbee6a09cd2ea32b65e31245c47547a45538ad381e3442f13bb07d0082d32de7a6de6dc31a06d658305e9d97047a47e25b42862b0e6eaae3f18b759cc7619deb0a5cc614d15bef280d22e02c80ae4f91cc0a9e26515137e99f62fb75c198e8cddf0d763533241b64ba378c79e5ae3476dd77a1a1f3348fe901f661113e35d3fa2e5deafe284d0ead680eee33d269c74abc66baf6cc4c9dde0e836e772bf06416050d8d6eafe8daf7a0a01ad6f7edb23a19cff4e7773a3e54c7be27b583a98a7724fcf926d90468097bdf7c215007446581dddf17db94f3ee532ee15c495434a8877a87ee5e539ffe23de0798619ede62890e458f41a870e173f4540294b5c0e8b3dc5130c002c5c6b477a701940bb1b7c794463b03f118763b6e07bfac48d8a8db36a678f36ad8a6586946e894d049639f93556bbd12578c223981b03adaf011d1697bfaa66f4eb4c31ae61bcc691055daf837531b4e0913637c25787fac937cc8eba30c11baf05cf98ed12de02946f213ffc48b2eb71e92a78f8bbaa33628f7eaf685a7502c2fdd6237eaf74a512093f3a2168f57aee6a109594ca013d175c7b80773ea5d30bbcd35a36a13fed3c0043795ad3fbe5d827060fc2457ebe046e03bd52a978ac4d6912a454060177f4f078d736c615a3d5e3fdfb529907354986f0a2db19492675be682c94a81a57039cf3f525e1a8cdf97e403fa8401ae828851195d616c3c461f5b60b6645d7c13a986afe0f3794488ba48d534e8e2f1bfc8995e1515cc894c09d46a5016a019119dc79cb2c1edbd504bea71c264719839ad0e44eb470678fcd609c7fd383999eba0244378d1c9c4d9335aeefadc6eb9ea16aae9e85b91502c51045da19edab9310ea1432f47c78fce38bf836b9e9ff7bb5b1c38d28686890e6fa76ea8057cf17ee9375f96728228ba4f520e97ff4e5d200147c3097b253625b1247ec43fd891b9e252016e64fa63f1d5e1dbd70cc648c195c17c3f924e0703d083848b76eefc40bc549a4fc6146b93604dca3c69d9680b375536531b09dcfbb41f7878e682e9fd6010ca250318d3e21b0cb67b895dc9ae5781f41470ffe126952923063e9ab7863d4f5a8fc531467976a7385358aaef632cf910cda2fe4554f1244ade0b01d5c9044e09b770f0bb17233db7f5241e0788bc222db6e67874d82f6722574cc831f0e43e246a7fca411552ffc05775991d62f498f4d25104ea4e7f9e18b933c0c46955c3f177a49553ae61b2bd7bf70170233fa8afc939dc93b6b34ae706c80020561376eca31e0fc4b62a30ec1456bfc6f41ed6a5af385ec089d93cfd41ba6515bb9563cdb4f15735707de7b01b2641e2a2f15950eed98c9fb34c1e3465340d6b3b3f8b666a9d7221875858342d7c76f7bb909a5cac0a8b53853bead68ffedb9f3fd7634d647ac77278e29951d0f9553c30c4b97e64ac27910ca070f81a73f7bfc2605455431ca4ace133d4d4f94b5684c78e081494134ed06de4d51993364b49353939da8ff7b7a37d8fc6096a25f7ecfd338e95abcf910c24990f21d08d07202886e4da2e1195c6cfba409abdb8389a197785daaad4a61548de6a9fa5791d93b15c99e36fac36f6bfc8aabc4b971f838bfbdb2a1302e86f41630568e574c570beb990c8fdc377eea8cd7bb22ba3364eeddeb521190ed5c4822a5676aecefb2ac15677303c99973e9ba2c296fb73083e2e9de85f400f8fe33391a2244220fc0b71a2efeedbccbad1d613a07c4227a72dc10f7f0ecb395c51eb7486b2d94acd7a8ba90a2fb0426907bd94ccdd8716299ddde03831a7e9276ad9b3711b36bfb44fc987d46d0e8a105cbdd90e597a5626ce251c06c9c3bcfc1007ae273de48dbc387a0dc74443a37fa1fe86c4c0bf333cf0439e90c6f7548ff089e03f4e6fe4362e78a25404e6c16ac7c6786079481b8b5d5005b1cce453b64bd02da6a4fb2833f76413611e151be933e308e727407d3ae7126cf6c27f46ea5d66e81bcc03db0bbe63e2c660e5e5f8ab931a73b0f542f03171aa23382981cb4bd73fb0ec31bdd8b4c0e8cfff8d73f8cbb9a4b38454615b229c0dae947f6099a38b414f818f91fbc93893bd701bac2c104fe86642c9eaad59ce7a421d55febb6dc739335e85de976cd3c64514b34b3d6d637fe3a1abc419c2adb73ec5732d3ccd29e36b0766c8116180880fb1b1f3b77826f795b487cd5b2ba22334d1187a4930507d5a577c0896a5ebd538be2e828a21bdb57773e0d22df7b2856a495200b4107f953a75d86f956639bad07dae2989f8e5829c9d452ed3d5bdb25c3ca82474447206941b553141039c8d5de70c72ee08ae28a9e6d642909218b838d1bb9e23deb676c92e8f631022f67a5762eba2d440b84759758e5d2ef0efe6602ac6d07e9d30678da3c9c83ed5fadaaa502b17bc69d9a8f8b1ecab7b95f594ec17211ae9efacb566b5f7ef4bcf7db037693fa009b10a0ce964df15c6092fa7259a43aee980a551316d672f79a7e59552e25d6f84c0f4b22125fec866c1f7030b34dc7ca75a94c39e77c6ce4f2ef2b7456cddf1d86695aba916762c333a88d9d10df3e274967b11af4b7bf318d2480eccfb46ad17d0c12d1ff93ec60b28943e5be73d303f9d827d3da18c87651379de9864e66e334e8734358673534fb1d112c7da0f8721f8ca957337916087096bbaccc3e31186b1acda3120e7f663bb7b2de1ee8e40d2b0de0e51eb616116f7699783ba2fb64b31d6e76cd052ea314721d8ad7919ca30425aec2a1e882e6dee3c4f4878cc8122e40d6ad395b38fa7dd534ce15205e4bf18b48d266ca2522b86ffd89c953ded90c8b22d6903b419340c076b68d6224524a3434fc1b2395db39daccb73be282b7c5d1064c32e3b434ff1b22ce0b6ade9a9f2e9914a67c09bad318d48b72c7172b4ca20cf8aee7ab7f0d88b591da095bfbdebfd25653db6898340fd3fc4f257d166993b57fd6817dd15e960f1a4a948f571065e48891d2afae5be381fea156bb7a7fcb2056cf241b03fdef34a309969ebfb9ec99a836b144a459c225aef784d93efa9a1fdbe3be138f2d7db5a31f51bad37d6e3c2f29c43a05cd737f08a96a1b89b416b32ecd020f3383545c248e7cfdd210282a5c81fd55ca3a22000e90ba1416a47b14984e701321f81203ecdeeb73e5cae2786cf90745fdb9891b92cf32ac701abbe4c277dc71c366f92cf49635249ae2cd2ac2242dbb886016f81e70d539967e0ab8b0ac6576914e8b67efcc6b0df81b57596af114ab16b2564e8a4bfbb998988bd5a79ebec5ed22509e958e966be6418ce1ebc8ff7ca15b360285fd844f8b7a9bf20501aaffd8be002e584d94b2f88fc64845f75ac8c5533ae39082fd9d925785f8380e11161e38ac464daa8767744b1efa1056b086ebc8d8f34050c65606baec55c90e00e947d9ed86969fd209e928e663aec1e2934229d9ca0ad633fa20676f38b19c6971784f8634c737459758fe577bfa8abad6a22d44b87cde08fded5dfa39f499ed94c234655d0f0d4af40ff80388ca24e506a9bf15b9b27bf7ba39cecb3d161712bce0d8165830a1245f1c6b53328946e908b30c50f8bef7523aa842553c73732c282f67bfba69f1de9b170033dc90ef226b9c9036e9f4c32bbe399c47e10b5fc83e2177f4479c28a3069aa44a5f4f5e53e93102cf71edd2148924b6d896f58a49470aef413093a00aceac66fb5d2fe73acb9f57a8386318dcc4eee74b187b19275ec7c255ce0027babcb3ce7908137299ca02bf03a8f4dc2ec8d3abb07b0e8f5d21a450552b9c7603733235ae1767f8c7488a862d9242bcf568bcb12294e343f5850530f8e226d622988bc34eec90905e4ce29a5b0e3350c7783a1398c4a64f1251af432bc6e8b2e8f93e8a00112dd1055d4abba1a72ce7643caa26166e659bfc278f7cfac8ceaf3c088ac163d5f57cb421ef31a4e0dc9db279d1449687989faa12333c3d86c09b4d567b47c3fb6a6c327340807c6edf0d15c8523e3d5637e5199340183aa699c655f5aced83e614e2301f2b3edb0bb7e8433bf6190bacf55dedf6bbd4b1ec009e798fd6b90775ba724a0b006e01628a54d206240e73bb2408570f6485c8b86eac06f08213913165bd943b1d215aae30a218ef49a0c4ddc04a3e9418942a8b78db8135f2bf9e8d7ec4035af2f82739844c6c4ad2a9c44d07c0b44f2e7371cd87732f670e777b9032caf5f57f877cd3f60e36be7102117801458fb7ed18d2f75dd6463b1575ec8a2c2821fab4c5e5e2a60d77427511e380e4e868156362a6d3b295a1f16a167f5abac2bc1000f750554b76475ba55a7632941e617a80d1447ac7bc3b0ca8f01b7a1b8816a6966a9eb29ce2bbd0d6888d2a11559671dcf0f108a259b43b2107d984b096b68c13f7a2abd83f5afd739ff9a6488df71def84bdce92e974de5b5ce1d8298d21a95c7ecba78a5cd2ea45d0340206c78b733891d1b7bd06b5e1335df2e3eb1eef851f1909ed579ed198acd1eb173264fa8fb89ccfbfcfbddc594e96b6c5f72d767f0f6957434387635a664d63caf313abef17f70ef09d0a5f902507710e74f6d5d60d0eeecf78efbfa7662a237dd9989d776fadcd9592621e5618d493cb7918f0988bd86cb371dde215cec7659fe8125ad230a9ec35b08d68c3fe400d640d2a2ff90c2856de8f875e84b89dc13249dfc7defc4041f9034c5afb240b257ec82679a9526a5021f280d6847a6986259b8c2491ec143f25c9e8c50ccb01932746520947df293ec2e2baa7d3613e6d81830ff347b9f9b782deb5950e3e6daa4d913090dfe786bf6b870aa119b843ded64756bf09c7f970c8ff7ac851cb7512e17771c7a3ec9335669dc2cc8fa12aec5758ea13d1385596da54feaf8b49df2f435512b36993d78aa0d484c64f5b7c50656931aeb655cf7b0c0b7bd30df383bccf5b442af4befeb65e0002a68bdd50967b6347de1beafe67517a64cb877c832b7c988626aaf3f1e5b6345c8bb0fb0ff08b6303c1cf2b17925a8c5384970b57a0a85098457c24e3f5ae7ccb464d6efc4dd5bdf84a757966b590c7472439408ef8fb746f02f5a85f412eb3e8398591f389203a97dfd94177db69945db5c34efd64d61a3e6d85b0e3daccfb617b44130b1c80e8dd45c04f220ce837fb8b25a3da5d358579304b55966c4fd46c1e1b3f649a1c19b9df2e16838d9d29cf5a663e7482e79ef558ba39910cb7972247882a9b6d24f7a81f1c7bedf5debcb36333b880de66ec957370b4543e712b3f55bc165aed5c5e33bf04bbc4a12136fbb9b09de0ba8c59a72fc379791dbcbf583ee0dabe3e4a7236a29c131b18ed79e10accd4a2a7daae966d66f104f9ad919135381de8cd3d69da9763c6d4ba07ba293e73d54adb0b09162c724f2d37b9774061593c77cfc88460621f8c55e4f987cc4574d2558c8c943d7b06cc5d1481d4edb782912cbcbeb28b9e01e125aeaee5c68e2db0c1d308b02a100a2d2b78ab764f301b4cf0ca550df36a6d63202a8012a7c516dfa5d7bcea57c6cb5ab27d45e672ff773f21c289e1f8e061d86aeb26801f7763d05bd5db358ce35c6a179f36e7b59f005d274161d2c1665a87395ae01ae5c16abe97cbd0c1bb8af0b4c51414bb95fb6d6ae145b9e606d348ae1280d0835207ebe8271814c418001f808427d51ad5e006d23fcf665a8c7e8bfbf82bfdc4cd6fa835380fc13f3475fc17283ea78d87bd758b732d43c078d75397de119c4df378e0d02b118a9ab11332ceeb59e3f2f90ab285260c1891248701d9034fa288af49332d9cda3b2b917f08524b734149aa262fbc0f5175873e4323cf1b8830422553e8f47945fc8c1728a3d7f86553e7632ed2530e5cec0673d97b49ea501e22cae14d95d75b7953b10cd6bad39c964145229eab7eafb4040fc25c618e8c29664a2dd5852e63d88f2f807eb2201023437911e6cce640527e3c6d2ade4f0002e38359f3d0041534586e7d052943c53549ab7dce9d0bc06664abe9f330a9023b94bad9e876434986cea2ed049809f46d3684f87b97d5f29cd034dc24099e1f3acf2468a7d21c50d7fe6f0d324a465c15fc2ff57b87a45f4d6af45236f214a9034bab636f9fedd041d96a4a3b78397eb3c3db7a1a4cf0bd402845154043783336be07b9a5c63703f2fe9ec4d91e45e0b9c61a61e54679c5df1ccae5433f4b720bed702f1aae024e5f923bfea9a536bc6212b0a13d793660d4a643fbfd177b146d0c6972f15a79b2d8a5bd90b359f667bb78bc60e60882785c73ee73be65e136c19072936440d3de269fe88557d5a79a56de7d05737dc428aa5df3a4e9751a8f622aad965ce0d9a19064ac1f95a5ddf7b20976a47180dab4612e17ddb0a78be9fb4f0638791c45ccec0d4810f4e418c3fc4662b2416fa598e3272f101b8ff93a77bd04b2b1df6c83337028d00c3e6dfe8ba17dc428d68592bbfd4721b8699d359b775e1edf488cce9e0926e87d8f06a2759de2078b47e5b723fdb6905d5fa20f53dbd13493504a072ce11d2f71b45c3e5cce3f3241a49e3a16b720708345cb547bdbc12de1018f78bf76529cbbc9068c3ebc3ef67b739fdcd4f16d4f61dfb0b937237c260af17c14d3c44a3ab1dc1b8360c0e6a3d4ba2875a5e598e648a999e88b52afc8e32767930f6ba7177768bf448f0ca5d985e3c0b46bf60590485fbb1719a43a3dd0850085db8a760f66fe5531ef5ee25bea9a423c7cf663b92456932d49f6485c540e332e8a83fbc3b3f8a2abc2ee8076f92d977fef337ecdc7332a026d4240eda42119cdbae8887eecb791cbfd3188ea521bf42bf92b5f3ca5c260c65204fc91334e0542e8bdf02f2d97562f36053b2f61e9f6bb051571875de1a24996c62b5f844fafc0ed574822804851e012961d8dcf6a52e486ea51db0ba684fa72310668c5d2e7321bcc9944a9375c09e987e9877b06155645ebdd29fd06cdbf233bff631e9ed15926536790ce1547afb53dd598a7e47ff80b9d1702d770838ab0a0bcde900ce9320b368e60b05f4c4537620bdc3662ffacfc9a7497bd32044d42f432b95d50a4c8445de2040fe6ef4e1a8e2d69711d5aab20a18c6af8f1faa5b19e7922907003fcc956b61e6689bdc9c7a2d3a37145a85584891b4b1c7714ccd8330f7fd88b28e9c13b78b24169b85765e04d36cedc115840a95e7af5a07c2781f88bf9bce478f6b50be34dc8752f00cfadb906c7d7398b87238248e11d6e219a90d9abd3f876720624ff96768e6eafefa19e1dcf7bc2252bca560913358645695131e665d6241b5d18e243d9343f5567d9df9a42e4b5b4a1b9a52e5330986a24e9f3e3895690abf9c72a6ab289735be2936f3499bb6c2abcce74dd51bebcd5ea5ec8c7b7b53c4fc0a485a3674d67c69962ab4e4bbf48bf5c9f372d23602d5407aea4a76077a65505b2e9d3d22375bf221b0aafa2fe104f2b6372da14ed92359dbba4d07795b49c3959934f65eb5448e737657c380bd8ec14fc0014877fc1e48c433b0a9c11a317822cf84e6fd8ec555081ba8a4a7ad261cd3b1ad99037c03747260554ca6fbd3ac1f6e1764b6c8c68db9b621f034397e0ba3bf9474bc6ef351c6003ba752eaff2cd3e371cbd6a7e224f44ddb2a70cca39f9cb37f11de6c12147b059cf8c1f449d9fdf43b6c8d38c9d66d5f486aea383b6075ecaafbaf12b24e1616e35334cc4e234a37b6630bcab4a7805bd38fc22f467cc3da248cc5828e66510c6dece24783a1889880df5270eea9f926486d4aca7cfa33847c0216e11ada66781b0649e0941cf0d7b0827780623f14990e1cd306366cd803c09424d7ddb71d1cb775a2355ab8200739e7741645498f0135112643e0e46305cb106213ded3a56e22dbb388531a3c119e758492c6f7459e4ab897c30938a54be5e8cac51e8e57185cff8b3fbbaffe2ffe0c0915d82b7a240a9faf31f9bf8a2bb1c585232c3c327a5100b164267568716735bc09009d0a3cd47b1917d62e820e6af7efe4b787842781341725b5e12d3b7ed6c5963e352304fa98f166612c15f3726016c8455482636df05255d3d7dbc573accc2d0255928bd76e86f23dc239eb34b3120ee8fdabacde97b1e988bd539a4cf5da012cf1d156be7658f4c8d8eb9b4d1d26fb0b03d32ef6a4497d5a1e07197710288924bdffdeaf80788682464bbd0dbab35a566b384d108f9ccdb97824f7b10a750000d37310e815642a0634a89e47666ef78f7db91f77bb183c0619b9bc4250afe5b28b61cb37b2264493d69da26dcf2623a2963fefe4e1a4501d24a6417cfff97c5679f2652fded59b25c399bc00d8a733a333b0bcd68e61337b3329389595134a7db59727197475dc1d5cf4f64eabf801f3806ab7aeadf834eb24a3a4ceef4a9c97f5e1ccc399f0177a1b0def811a2d696700f8c9a6442644c8ff395ceadadb0168170d061d391b409ebbb358fd1ca6cd8818f60a93cca07acd11ed8df1aa98cc871790f99b019fafac8085760d8e4592de9e664b74ce2a8f76a5b4354b953b93fba36ebe7b3c4ea16e24cca4e581a1a14baf858ddab06263f0f350a922c797b3d7bcbde2c5fd95b4cc26dacdeecbb4e77a62fb8817dfd87699347e0f1e7227c9f414c9e42c7cb06fd784d6f66590e3d55b35c02541b40f6f12ec5de56449213ab4248bbab699c7b85f1868b24afb6be0ae33530404d44b99dedc0778f62855acd420b64d37e76e5c1f22b7ac9d768402a237f1f745db8661943b5f6e50e18c8b564760f89aacbb8a71c0c921eff979377dd05485989269da9d087b3d656113857034820d01c0c8589b5456633d4d1a015fa226687b0cee3989b12ab1e2b8510e9431da50a635a33da418c557235997e50851ae0f6f592d58e95b626ac8ac26dd81b0737a9f327495be6740f856ded9ecbb47841dd7bbe737c67ba45b4ed8ba6d6e6406b7636c3b21407b61d2772eeb2325f0fce8ac8589779d97d04d1b94187d36ab9c28271f95842a9e3d872dc0b61b5a2ac6fb010acaddf25b195acb1dbc90a33875620585d5c74319564e96b8e569e517b894524c85d570604672c6b9a56ec035e0eefb173bd5be59336f05c4ff27e38b2a27a8571cec9840d0d966c934a13d46ecc7b4281800741442c811d84d722db238d98b677b5504ead7a76f0f38f9e52514df20949b7aa967df4bf4b834ea98bf3c05c94ce06634427447d39c2c0923d0c19ae2a14fdd6b3d5f7d365cde3541bd75bbffb79e18f38553f8c91f9aa79163685088557da476703ef9b082127be5c0393c07546b8a4304384f388fd870a6332ad096bc61afac75a0ebd92310eb54244f7f20da297de2166ab3656c504162ba7cd863038ac3208cae9663841235eb8d07b0f889d5d9567ad3e0021574bf165c009ec05aba08aeb56cce2a12ee0f1ddc7fab7bafde2892671a6580df45d03a2fce4a74f87a8920fa1e7f755fdab11446f885762043162111bd26b5fb3b204f3ad27986bcc5b7edb6672481d70f585e4390040adcbaf7eb65e0dad451b89ed2d964bc594556e77cfddd50610659c6a40cd222ed358d41873b3f8db6d917fc46403a17967ccdcfff41f9292e8e18c07dc7618e7f37060d144269206b2492324542eb82e3e6300ddbdcd5e882238e8f46afd42aac200f9ab0634bc42312bffba1e0ce6b74404da09e20845a4c2b568010cd2c8e9b3220ca7871cd8368ee9d56a242983260302b6d8e064a62e7d338649d10b684362e9da416402bb79e6c6606401231accd1c14bbbab37d758fc35e116cdc098a7830b1d0e2959191df3e41137e6c94a1ed699cb7a858651c1db6eaded456ce5392d6e91e958c71931e414347cdd7024ec5adc7f18a2dd77514a4c82b36125f46dcd324ff8448ef16a072abb280f2c3e4c8a2a2dd098d2ab3034d3cd730deecfd9863de0a7a27cbc5bf37712752cbce0746e39d549c6f699a313f5ac8f4d3cac8874092790cc92620079ea5bcf6151e4f9eb78b1070c997039cb61f679def8e28470caca9959291fb939c074ec3ad29ca51816233e28c545e46ed4e219ec864548750779eb090dafcce8a70fb6018fb78d98cccc087530e2bd8b68ee73e3b71b70c849a7c4ad83f2072476ba691fa96ce51541d21c6ef83808b818dae28156e6f82bdeb0f43c9b536dfc95d7604b10134f57c7ba0fb684f866b1611f00117b5d01cfed8449dd42a62c6172a573a7ff9876619eeed3724c8fce2b2ed2a1bddc9df0b3e31ae3fa8de9c1cd910777a069d98cbfa829e843b9fb39a55d85c2b8112d8bda4d60245e21d2f6204edcad6f698aab71af3aabd453710a858e98c1c07d7a9f196c59bdcadf53a395d9587402c24f8e56701eef910df8d0bb36d43e8e6cf749984e7f7baebbc324cbf4da9aca9052dc47f4fa88311c5377f7b560e844584118da05b371ac8a25e846fb77048241ce9cc1e8bff6087af3195862ffeddae78890cec3aa34ae0cc5a90ed9cddbd106343b251a6786c9c4330263a0729e962b79c12406024d359f195baff4a3988643d4258b14382fdfcebfe0ff01a27ba878b3c773e68c9218dc3d20ff3e58e587de2639f339fec20ad3df843826c95b3d26010e254f042cc25fcabd5494f2c8ae02516ff5a0369611c109025da9e95c27a99f28c3b176860da3f095152bd26a7c47641f0ce491320ba5bcb389d984cab85d472d69964b3c41daaaddc5f1bd3fc96e0bb27a7fde57c8c58c32051756365c28e50a4ba88c2286c4bab4fa0a64d40ef09d2a0f37440cf8b4426ee903e8788024105967ad8d785157deab3c700f542a3abc6774b9e67aec4afb5bd2dc0eac8641e3b07da0458afa786a54c0c1fedb6ecbd4b946c4e038a822ac6a6548bbf83c25d50e2dc5050f359b3ecec2c119c03d3a50b2436919fd204b8c3f913e6c15b9289d842a273eb4a1ca0249e7b992e2a4b0122e587e02cb28076a9ced9f5ade5d1a918e8dd67fd1a2c3d839626f412babf4ca040d02a7f5471838ae3c5ecc364c83b8c771da57c8450b8957f39f97ad5f2800b355342cebf78410bcbe8624997b4d3618f83a202452047ba0c11fade456cf4da1074a5373d53cbe76aca4d0893b7f4fba8e20d4c27f392a5e13a5879a0e53ffbfc8b8f3a519f8d6acad139cdb18e2371cb61d5bd03615adec8fbd8ca7a66a14e5717e939447cb7f6306882e98dee780c0e15fddc5070b6413af62515af025e27dd43fdff3a41708194f146b20e9100ccea333dd143d6537d31abc0e0b06ceed0a529d236dfce861558f4c300854802e360d790ec80eada9654cfeb76f1cd5604ed38a0ef973d9d4f5a0a89b0d7a9ea37e769301f5c30b3646aaeb2675497e676ada62c1f52eaa9e15375bd25c01fe9e42e33ee7fa997491221174406b43bc1480be2b91cd9230511867046c2167981b8b5a98ec61dd7029f24894bea7506fd948e5cd824bffa2037b9992b712f443fb6287481d43e820d60859fd06d2f80d9e72d2fa1d6d5f576438b0b071f4689719496445329e4bc597c6ef169305a138bc02866cbb636ad2d340e03a83dfbb5553c72f74b6d47ae166f2ce33d9518e35d16b2fd9baddb8d76a2b62a5041e0cb604f65a0efe9a4153888832161440a067ecf6ad9e788c747aa359ae41c231424669df26e840b6ca2b06a56c19fa73097874aac403e74bea8b82bfe2d3fe0ef5933aee89452e6fff13f8f9c3da36de34e1dd6a2a9d9888ee596d635f69dfbc22ed93ca4980eaf0755edc0a8cdb40bd595283838dd233ce893f51cd10260f79f7841b722bdc1414fbe8a9ebfcd10362744122acebd71eac6d6adf51abba3de386ee2c0e4698f9a377de51dfe33dd6a8f7e37d6c83a1a54697f03f1e7745cbdcbe157aea0bce95cb7a59c03904b5a668b631a5fe93a331dda2410b0b41ce6251f3d6b0cc5ae224deb47ef6e3630d2aea57a525878870e4e08746967145361ac8e509b18cb78cad736d9364b1ec42008ca170d4a400208d36f3a5b626f59536a27478546591df789f4702ce0061a6bffa924023358b055fc51eddb7c1168567dd451a8bc35466494b6ba8942b88dc26331021e02be6351fd7dafb8a88847e0859bdbddd308dd554e17c010e0c904fdc70a74c51cc10d236ea917546c53474628e958889cef094bb319ec87f6b811010234c884da3c04cacb5839b961dfeb2e8fed03eb58de81dadf19eac11b4ff321afa2ac2f09a3c342f457b2b2b4d7ed92e7081855ffd24e84954d425bb458aaecadf864f368d6f7edafc2be0ba8c36448e2475ecbbbd77be0bbd4d5717eab9ff49f4852a12dd5d56c219d951f12f536d433f01ca36ad54e55db599c3c087d94c36ceafe83813310de59fc8f61dbc628e7151dbc111f36fa6aa44245143609d70dc05f2065ff65f0c5c6bedc96822b257dc56bb10ca057f0e568709e2fc088f5b08a48410739dc5ef3bbd4c210988b990e04b884f5eacd420c9b90e210b07769d07c67053a33ebe362f218b45441f4fea496e8ff75a975b7dd5afd5063e82bf5988eb639dce687eb7706b9b245b995eaecc5cbdba0c1567d91e12db1d29abbadd07c8b2293bed1d5e3f72dcb10cd913f91de037ce3c856ab5f14b7a338ce33eb5e43ccb9ba1d6d9e39aac4a4d45e1a5c44b2038c9589bbf277f7dbe255df1e9964a833cf16d6ad247c67b66a3ae2df5bdd171b8ffb827d2f0a36aed42ffe5aa152b1a53c19b2915eec59d18ffce3cfc9d86593b561666ac0709ebe1015ae406ba92994a025ee8a00fc11b12ea67d235b5dfadb888c9d17d1dfa25dbb3d4619a9b120735017bb1a6490048708ace4bd8d9eb6c6401dbfa4ff77d76bd8f672e5ed8b693d7572bd3bb7b00873645edcda431880d4d3af1d4e083e78baf749b273c5691b0984158d9cbe51db6b51193f0db7a7bf91146938cf6044e2fbdc1cdac648a011ac84f437aab4309cb70c877b8d5cf7e1026e634895ed46194405d791cc68896a70d863bd6a0f9650f48ebe11d8940cd72011e9b6c13a1442192cb5d26369d609d972bc922737685eb08186179c40079765a5b2a2fce262271432156db3460b1676b6af1fe8772d14931f0bb7f9944c9968ce715e170e1db610072f87d0fe577bc9677541bcb77b2015c1e3ae10c9675b8b18c7f07e31bf82ee79e116b5f9e9673b681ac9d6bbdb17c9175bcede76e4ddb51e63947e7c2241e10f746686091dcf1e2b9bfb770655f1335a8b7c6ec9472623fb7a38529aee4c514571962bbda8e8c516210fa897ae8b35e2053255d216bd3d55e8ff08b4f9224cda061c34ff03aea643aeb4c11af02401006cfe81a089308c9e45bf37dc10e5840cac3d0e3bbe618f4bbf88cc4ad6e0a50395025cf22390ad5017827b4efedbe4e027968d827a03eb1aefa1a797bc4827bf9bf2309dedf3653e9b09cc2c26eeabde7396c16d8edb15f674070456f5c825037499f3036ef1ba4927449ea4bd2d21de61011caf03f4c12469372f04a93017d876544a37df28201119dbd6a57349d3cc5d6ee795e09e6bf518a2ad6d1c340f76aa95ed9846b9b36538a88c955d1969891eca0df928ecdd0a572ba5b7acec173d6961561c42c88a9c163b9ba61d1602399bd42e44fe35c725a1ad17a0e7541a3071d3bc7e62ff0d0d655505c283df26b8249e06a1a2945ddc2873ed79e5cd56b453976610dc0b664e756d27295db6490915122477e86813f248becfaf719a6d97b36f45e9301ef805162eba3bc202d7e2206befbbc4d45b41b543d3d79d64f79dbdb2e5a2386cf258c7f7a40bf5cbd5bef9b800cd4f407f69bfaaf2a112b7ad1ccec8acf192aee852d259a0a8ce41180e995cc6ce7dd67fb25e10592bd183235e44af67b723a280d3269da84dcc36fc703f907bc93c060ed945867c801e9b0dd71a792969b0882ed5033c40da089fbb17ede06efe73028db4358f085802391b6bf9cc79e217a6011f56648241d2164dacdaaa982f954327e9e7a6985019785e441d60d3ffe6c680b3697a05d9155bd46744a281d30d02f31761b6423b7ad944ff9f85729a3db3968e02938db191cfa235ab51796febc0263f36a0f13c15bf1f2d5e9a73bf10c08e8431f98e6394f7c7058a911c9273be5d3c55b98fd042f33c6ffb97413cd840215442ac80f917ff31b15f132c284586eca22c4901f42f208fac488454da9e0f903df0defee12f345e11d8d9b225d6604558a30cef097458e6239f0040e43d07d3b0a676bd131589992dd1bc7cbdc5de6ca82cb5603a648db85c99bb11ce458cd4e4f38e4acd9613d19ff3e7dca088517ec46967275ca7197a38f1fbff1ab701be697bf5a09a598df292975ac4016a5040dd353a18b1243786a6301b68da37515408a7ae8a8a19d5dcfcb9682851b938c94baebc16ffa68797bc50081d56e36764800c6fd3bd176de0f5d739b9f341a7337ac46defcf748ed03559c305cc2ab53ff8fe234bbaf6fbcf4fa049e866d701637e2b4102e2ad33549a90e10b4d7fb1482f0b69982b8cc9a0ce8de73e90d5ebd798ff22bd1375446e91d30e5a1ba6548fc52d12dbfb99459ba4a6b70431f2d394095a6ce653cdef4b203885ea21aa997d2a6ba61eeef3821b14d03036b8a16512ed1f6fb760974944d7379a655f5604940411e09c2452b6e1585f1fcbec9e174413bff1c65f4dcab02f3a30505e06183624512ed03cf4baf23ad3224d2ada9eac0238a9c398f0cf559c7e438a1463e08653163256eb438d08edeb2ebe2932778299c8c5fedc1c175b0e14601dc453675595eb43a241d9d19218a90acf90dd5fe4fec665c6655c47d4f0c1285bb7034019a58eed7f079e4d473910d265c159db1dd6c01d9033a666d9dc84d14bf25efffec94e6d65d2506942aaff7474a308b2fbe5be77f33768612f8887a46c33d1bd044fa93696c453b5b706bd361f63646d30a6a16f74d49d8880b04e80bedd63982632ad6e151e866232c05f2e335dd5dec864e7f51d783a0f2505255624a690309bdc8f716809e3c7650cb3c9ecb3c396b0f5d06fec659f8e7b51b2ab111e402c20f6844d294ec3dd8d8cac450e46736d461ec63408eeea82d1690f19897574b356a55b4569d3eac45f501f36460296fe002f0f12d0a3aecadb9c96cd6a0e12f32fcf9b4fe31bfe3c8a16e505e6d04528237d75c8b35a012abfab260b13bb109e6927de96fe25972dc6ec516ce88d448e80ae208ddef3f0cba88a8ca648c221681a24e2f8a059f41f779168fb47cdf51852091387b1460fb9f66b4e887b02808a4e267588d16d27c2db38f096a56383701a3afb550eae3464f0d7203053ce3042b469960d2b70bd68ce973ef53eed02869a41ae8671049a200fd3e42f8d5c7551588d63821e5814861556432335cd3f0dd67c8020dd181ba5d6542caa2be58d7b72c7419405d0f537444a2400235f02fb27f9e01a93e6c98f3d91e8dbf3c5380b42166827051e9ab92a2184bf03554a0d67860ee19f19fadea5d613903c48894cfaff66d1bf56e9edd6525f68697bf7401a397ad734aa93786502dfab0ce2ca11bfb38a5dd843acdb24874557035ec959bd4e6fcfd298caa3decd28a0890c272eb19dfc4a44a8612cdfcb97bb7486735e15a6e4934415518b2876cbfab509adfc0ac0594a6ecc97ae6f3e5e187b4fc11b953df05e699ab8c247809bd67f332cd94c630bc3287cfdd41f0b3ac66486699fd1693163cfc8fdbaf69bc8651fae0aa679ef0f5170e0d833e9e3f26fd7543fbc06b6aa441e0a2a4dfee6af6fc597e34763000a42fede3507d6502195e62ce38aaba0f09b51478d361e1315cb990f412607075c18abe9e8acf17b81097ab1f3e416a64674c33b5196853026e809ae37b1fa09cf0ba1677625c95a8c7504d503e9334b40d1062f0f6fdb1ea448674802d8e756c3855e220a987b570fd489a8487c461ac025921fa02cd7e607ffd519fe90193732a48860edcf5adb9cf4f59406c5bfc3bada39a89618697e83388bab905218f9d7bb8d9855b81b5ddafbc2f842af22d5f8cb7a2ab1e272b94ab05b16929c56e1b5d117e5f8e796d4e2dfef632468f8b72dca94071a1f1069a7399a77cf6fedd3bb204fa5900f19b62eed46ecb8e3d4ea1e1b75f27ac86eebf93946b31acf68c9d197ecf2558d43d7b443f4538f596ba642f770a4bfb837aeed288add2547a460a9591cd88edd7cdf41556cfcacc3b260310bd07ee32f8765d7168ae51962b71fb83c306f7622f125566ca2dfef621ae081f626e34c5275f96822825b7133f2357b4b225625a2221f34228f09d938ced02bce814c08a82e6ca504356c21cee9d0ad45e71fa3480abc2be7064c118c0b0e599c5e73ac9e9c3a4584aa6b84cc94566b1b91adf421c85c997fe026b76a8511a2db7706d0049ef989003e89cacb77164f764199cedfe33881826b1eaa21d93a0efd5ec2c08ecf31d6eafc86eeece143832eec1c8e591d5f2adb36fa94c312e1d4e6e6f19a55e4bb3c48558e4d53394b59d4e91e3e09cdae9e4a27a66da84160c86f5ea1f7538e1fa133147c0aab57d475295a4eb98cd46c7fe2ddaf7eeb1c9588e49a0e27eaf6b6f058b43d569ff603d3a556796d261f56308b6e9ad3ebb7781686d21f545ec798727afc1990622ccedbf1f486df3bb251f58166820ecc46ce260b47ebfc56c18a2aededfef128f86bab6d19bfd2d74d2441d322cc42f4f2149e19c099e35fe77ed11d032f26abde450cab194ae1279dc71de576d66d8ebf2ff4ced52dfa69355df405bee7b4a796e529f12e1267fef64649eea2eb8b0a7e75da3b0bfad248e91b60b986dbb15ec5c009bcb870db51ae435c7b9aea149bd21a63e4b8cfce345b6820dcd9987214cbeec6384f5119bbf28211ea9a62e1b748281542c73099496662fc2ac73860949f1b3dc8a5b4a0fa402790f0111b169b776ecc41390e8208612c8bf0bfee27a9be4947843dbd8f7063776c14d441b9c5362a01c286ddebd4a551b08fb553a7a62435f7b6e7afeca30255ed31a3b90178e24a171ac70e5476ab458efd8786f2df5a69325c1892ddbdc5c406f80443463bb08ca191ab2d739aad7dc343c47bbb2d945cf2aa0850950c032a646b6979af5a13d918e449379150e5e61400b316336fd921fd85a99411830018cf64a1de7464319f64c4b6ee718c51bb7ee4b6e5350346844c0866bd3f38c4da390ca56e7aab6616b555703a2ca50ff70236fb9b3751549d8103b693c2e47419b764aa7599c7da9c9cb098d4d6da43f0724f72a2e9403a38b37780b65d664a34b2bf8ba2bc1325a4096100d833c891d3df1d245a0abf55949d1b4eddfe400e40ce467e8f3c2f01debee900f46bf5240754a1cce9233ea958bada4b5f78182cc1eb73183b977c139b2b3d2751794949b6f571cab0423268ca0f531da843395288f796a82bb2a3bd8d1245ae7019909307b9365db9d494939896587f840d10a2524f53db36540f0363415ec990fcf999bf562f34c4f463a6ceed6fba7061af700fbb22b227696e7de3b7d9be5f709a3c5252ad4cc75c1d52c0b454e552844d97ed33cec9bcee33618e017ad207f3e97da4789520fa1c4a4b004b75f74a72c35392f4f7f0b81f1792e030f9ffddf244eb0067e124c9fdf225b4e674ab82fe10b91b98900e008f94c7b9df84853d7e6a9500581f984a242142d7e9a9312747d7afd05f6158fa6969c191d43b3e5ace00996aaaf0a00e2a6ac83e1f9eb2f60adc86a01186d9b706198c6f70b3cc13670e374c548abc645a61b6701091a10bf18b13d443ee488e376bd5d4d5749513fd7f7dcbba377d703020fb9ff5f5decf7e71629254dd2f2b9beb500fcd7b89bf72a47f7635d498a782c3a35fd9f1aa414bc0f71abe6a605445682ca2c6b9c0cb03b21e11da53479301ec17df69df67f4f9cf9fd7f202bcd0a97494b90091e474263f62230c39f1eed03f66c199ce2c77ab98cfa76ee34933a8e748dac05e6aadc0c960cab1212e7e0be7a0e1a201280bdc39950735a29d82f45d413fc7eb9dc70e2fb88ddd371334f3104a96356ed1d31c7418f485a58df6ddb361979df97b660036963b33bdd185686ad0459f40edeaae2eabaf2daa3946a28e3e1527bc5cbfdf05510d4c89a50205ad1b5e7b565e02cbf369c7753e614011d4f102e45e6e76cea98f96e485138bde0f290112c1c87d4b716cfc67470aa84130ff4baf7bff9f02920241ad2e78c189cfb7f8df4a042e82f885f2c57b778f7d9248af58a499b0b514ac562c16e68d6bae05c3e3ea5e183e0196c6d2e66eab59ad128b62dceb6566e7b8dc3e6354cfca719bca334faff368a468eecd68d05820781975561e85f265a8e8c06b4d1d945c60291b125d37452f202704c9357c4e56aeb41098d45ef6a756861b6ba3cc7336ca73252aab56475957585f54538935244d0cd55961370e74d5f087f9473ee42b7f4f64e5020d04564f719d581fcca1dd1b5db55b99bc03e76eb3d54dad0ca49c54aef4cbe24c4d7db2f57b55c8ac24b31c4ddd674486e8284d2e944d604f94a3a3bb72b6fd1d7d384e28a628d34d74da1d50f3159ee0a5dc02cf3aeb7ea99b66c808ae2eba8f2715964b58719502e11c2d1c9339da66cb9401d9efee37a86c01a5c906bdb37b28402072fa9fbc1593c91e2ef2849a6da60822be2fc9517149261f2186083718b78a26df14c3c7df4a7e095ee054793dec5b2107d7f4a7c11e199e7d03a0c95a69e605f73f2d892d9d16c783964f811d810a1fcc50dca53b901a9105e9fa9f2a5138c0bff121aaf6e556782b057cb52d26f11fbdeb2bce05d0b1e81369c024639d7e7df14ad126646b95005a95bb8911187b8aba97f937b95b8598c436ac76a668870797450dcc266bb985618d1c646ae833acfd8d3009a0f89b1b911378e8ff9fe24b3ee74cc01d0c65f3c58b4f25221cdc34d1a53d024489f0edfcc30981562b4cdbb858c4f94c6e047831caa69b8558a6b8d9570ff54c963c10523dc57cafc1866e6c0593c42353c908791a6a0c2f29722feeb11a45afa4be896d1e4bc64013835d33244b3f131850d9b0cff6afc0a8b07580bd3c6e2ab38ae09bc51b845333ba28cd4b60df74fdc7e8500517326f961eca951afe7d1779a4a485958f8af66bd5efdef45ceac0f3fd7369f637345ca2a6534fd1f4928740bce52b3b55e480e518fa830b19fe1469967de756abccc0fa8d98029cbe65b275e8b8f4062f51e4cb89326ef28d880ad1174ee9e0eb00e8638404e22b54bfb4451fb7c7aaf8c3cfdb73a596994e4edde024f02288f14ff9645069352a44fc9ee6847e3aef16e0a181c5067e8a1ce6e1b96ab35205fe289353977922f8ba90d362dc2fcd3153842bf4b42afd0b8d3c4c7c54a9c5abee703548b04e056f1a7fb5018aef36becc3d42f5438ca5bf331046fc8a2becba0c017c4588e258234be2a6a79f67c2541ace222283cab15a52755593a452fe9d8925291c5d982fecde6957c75c44ba6feeaca3fde825865c9f5413482e7fb0cb501f00d67bb13bb192d462be64b7e5199184371eac05c1e44fe731c664d3f7379da26fb13ed867c1bb793fb7aff514684ab3bf29d373db0a333ed3e088b7de89cc580cf83d97ff33b3c27c6ae3b8bde768cc2e89989e595957bd2f99b85669873e5cdb3906df671660ab515952bca794e716fbfdd2578b4e659c8ce39a1e8a69abc06cb7ad84676897487b5b5943a927d70b61834f94dc04946682a4f943260a4008c60452bfff28273d6b9a349273d096db75256cf0b564df7a93a09a3c2a1efbad1c2fdeaad4f50744c653ae716fac98e709b8ce29ed81f18d12584544aeed3a9c60ef78c725ff5eab32fd3aafa98ce6465b97c5a1c50603265909e9da2a3c27b496b3a17a5652b0d376a32f9ccfdcdb4398dcbbde80ced0214e534341bd52a74c0389528a06bddfb2e79ec08e3bbd91dc31b02d0b7f11a72d3c323d017c5ee0aa243174a4baca645227f75f5c11a24a45fea3b474efc46c4ef8507164db94cc8d7deb90d8149f64503310e4e66a09c3632b3f170e11108c5b58e8f3fa21d057a32fbef91a9dae3a5dc37a988b941aad520126c2ec02f98e81f9a68115ed959214664781c2199857c1f701fcb05940c5e07487b4cb24ab49be565bb04ec5b9f8f68f61860d78a043d3575078406110de0f8abab48707f975672f5a99fec20d7dd66a2448994493008220c6d0279a11fa97863595a4edfbb5a23ddbbac642d30735dd0c64edb309fdcfe25a5fd6b7330a61f4486dc6dbf20ded3cc67a08aadd5908a155eeef3a5a495072a477c2be09300d7448ec3939c3079540aaca6b3b99d238becacb6cb7b2c4af235d71e5a019736d5f0b596a00bddc405ad9e95bfb676b20d5a1d393281f87295b03ed3cead2b0083cef626b7f84346490e22786a40657123921c77af77ee3106b6cde477dfe2e98fdc5a473a84342cd24e4d660aceb17d2da1f5c98cfaafa4ac264ca8c5fb9a08c185a9d5cf2844b1b2b7052a057d28c1903a86e49074dffcf6ab76d13964c9e876472ec24c959ee416ffd1cc1dee36613dd46ed4e982ef82ed836b5eb117488dfce7fd66c8eaece08ac1e9b82a230b9e2d0d23a4aa8fa040906a187a4ace68f1fdd5e6cfc29eeac8a11fae066706bd519aeb28f46a1bae794e67863d434312285ffd6373d2a574ab71bbb5b35d7187641a6ef5b2dda8cdb1a212f3c928a364d84b3c1f8bd74a4e9d3b8f8dd798ba44a57179cca51cf578f78203453fecbe6c2447603d2af86ebacf6bf49bb02dc0e564c26594ee4ea7b71a071cd02b791ff061d87c0406845d28b8ab7812c633624358429058e80ddc5571872c891633be7f8207a775be35e7e1fd1eb4f2b72bb704d58e3dc1fa08623f5784e64302b4cf55b8e9aeb213e3ae00b5dd53a51cce3611a948c9940246ddd7cf0500d303cd7b9385e1d091a3b783b6096cf310b4e34484af9ae551bd1c75649bf7fc36047fc15f2bb232d11c0030fe3381f2fa09d022b21bccf4246cf15965abd8b4640017437b1848d7b9c57b2bedfd248a41e9f49a0a305ea79cf29471807d20e6150a42cc95bcb9b2cdeaf74a0b647b7aa41008e1a6071b970945075b0477c1aed7a6cf6ea9f5663fc2819174f2251b232c4aed25e4991d4dda5992b769d4e166ce31b40c2c1210f26560b9264dff9a4aa655d9d14f969971529ba3f04af6bee4be776e3b5bedaf29405a1eafd2520b4d818050ba2ddf1dd297f513a8a600f923357c601a70a646d358b17a3aa2efaa4e0725ff4c54a978e56795d4f725806c2f02458f0b8a3559b8fff50bba9ce8e13b0756b22a220bcf48409c3e69d98332fe1dafd347a7977d915c55241961137f94a3eec9227c132ebef2ccab47a120be9f0328b92802c4a17d1d6c871e5982683b2f4eacc1658c4d632c69f6272e2171c880c5a25cafb81f954607f68d873dd3860982f45060eaf704dbbd2c6762d762002d2c78f754d81cc2572e960c314b5728fe9cbd2209b216166f3d7adac7158d88717b436a3a0e546fa209d86cc025920cfbc91338ed2c1a956bf87327779845e67de068e91defc1b8301d45584e949df957b97a0b72b26e047cf9ca66506d3044371267546f1495ea2bdee8bf9b15861d271ba72da025e38ef16380bc6b7b2a2b13e81a3573e03b23c73eba72a632f23b2cd17d79a46695f2fe95f19dea6a4332a710825a424934f0ea8f3faf6a1c87218e49393888cbc252b2378da0cb1bec55444b1e610e418d62de1cf48f1caf3c57f6155dbc712bff91276d0d0566e2ab81a41f4529a66e6ed26586df8b5cad4603f8c463350094f3237be16b01e61a449109b4efe4c3a02bbd6da5fd4a60b634c6fa2986673993d2929dde0a50c02007711e3c163f7aba81f749e5c5b2e0aea9ce4aa3c8b9e86cc25f5bb253266e9a2292c2452b1a65ac6ce6db1bea0ec628b0800c66a1687ef3717bff1c28f587d04b631498aa440cc7e2e08c303bd6f78b8cd48281d0136ab291f4c0af5acf73a34aa895af676cc83a80ae52a4dce5920b9e90d6e94fca2f943ec428fe5b3f3e553ec1fbda7da3cda4d17df75e28816222a9f87e4d3b6d1c399e42cc6172347a91729881cb306cd622d43e340ac5782b3794c33ba202fa3733520828cfa755f794992b013b2d342f43adab1d5b90c258a6c9263c5861acd7f93334ada5d5d82d648edbdf841e8a7881b78b1d0bc21e2899aca3eb55558a92423ca1b3bf387716485f1ea6983f54b05aaca3d128a884094edcda50ea076cf66cb1085fcd6fa8eaa05f7845a9b0322a576241c619f0bac7d260bbd4bbd46aa6862f026e801fa03b6e2f45f6833ceca2f42dfff6e973e52b859ed11d2c9817b5036180d1fd580ac45cacf5b33f830de5f848e4863b5fe7cd66c929638227d7f7887d80c13954ac99d7ef8d4491ba445dbe70164ab5f838ca09dd1ed83ebee22670acd34aaea6aba1f555a1afed1c8b9e8c9177e939ffef21cf991c1948bc27c196657974f5f764448b6994222d405b59dbe5f6815a4cdd392e6701d012efd7d7ebae9f913e53a22c5a1a2fa38e1336d980b8de35e3f3928429ab807f742b2899d152133085108e5e827872723385aa6792bb9b4cb67c68b46a1a6d293fc0767c7fdaf41aad98865e2eead75b31f7b703a4e763073b51612dc5b02e050d14bbf5ce91866959b2947c3ae502fda5f70222ad5b125f4e858c8077b03d1c3fd169a29c738c9a41713508fb64af44cc5d723d9d86652dd6349c47789885cf5ff82891177a1795fafb1974467372da7a30f5875a020ccebaac2e248619d45ff1b6e78cc4dc4c9d32ececd0ab8e053014c433c252d4d065ce9dd9742b2512c77d7cf4cc093ec58ff3e361c7eb1fd6ae69b870abfb05f60b56da3720380df32697e1dd097050a5180f0f46458f0403f606d0774d112c365cb284b368ba321b14aa0be8f13534ba393391bdf9127b74b8c2240c4536c9c292b310dab89465a705a9091a7b5a2884d536f1854709b755bcc204e7f7b8d5d68ce428288db68492959e57fa8550b7ef2bed0a27fe2a798422f5049cd25782759b938941ba95e933e62f9220d5e1bd64e58fb2f54f33792481f9fb144fbe2fc581b97fe89ac4f77edf16d78ee705204550474fd25174ec81dbd7eebe5f4b8c4d9a5045fd53fb7d56ed3a3a6ea75a4eff97025a9fe928083768f63cc5931971c3f10c9d5fff4e586c2c643d16f9ffb6cfc76d8599b44782da5584637c51952fb922a5436f4a47c011f2bb6fddcc9b28931cebe77d79f73dfcdf425c9c3ad70233c74b7c71314f6503fe0ae072bb31ba61ff2ebf485ccc4408d1c80955b6eac6520e72a958b851c5c09de9ca50feefb5ff243d725fb6d4eb52cc9ddf2fbc773b3dc8a854ed3d88f7b46b7397dcc1f094d114ede29c9c30ddcbdc04557d90b6901fd6ec7b8f71643606859fe471c0c7285e38cc1e370818d5db781c5443801e4f95dde92ae92a7fe4994e0ab07f02e58fe8947238209f1710aed5eef4579d7707f22f9abb092bfde8d6e44c44aee274eb49ad20d9820b3ee49fd1d56faf7c949ffe6657f0634fed06c60f70f81e607dea5260e6bc554b44dd88dd315330f17e4931c76996ecd96193a524f1760aaa4039e940f8def6cbf6cd5f109491fd40366f7b5ec2d5f52d8d1d113b4ac57ff73afce1aafa709ee683e23137892885a862b46909191d6ac5d635fed1c61169a12463be11f516d71ef4614b9af961f94d8419141dfbebb50b40f74125c0d1e568821f316d107c33d12206a86337fd81ca6ea403764d3ceaad0696df1134a681b8f0d1c8495a97ae4cdf9a34856785786bf1e474ee392294d3ad72b99f7f91a249ec9cc6276fdd3e564129d721e336df43d06224fdbe24ffb731619af24bc4c943f8bb788a528779d18407bdc2966a31cca82aef7df4bd0f7c5b57eaffa7bd995427ca42bba399df97c6fed223749d9fa49a4ca7c1a7d74353b982c72d0e0466ab037bccac29fc8be5f1bba3f8b19f0cc9033c8ad5ac9014e54766f2d4edbb824074ea206bead0d5ad2d59d35e3998727cd29af235da68960ad5c5771ff1ef6fd20c55f72bb1deb8303c479e9028cca35593650264e2e4a3996294ed5e5a17c745b951da73c8ab2353c21d2823b3c4b76413a27311c9e1e656610fe51721fa6aa052aaf246ef480b381ba9ced74f6ef864ece0d42e0d97f12291988815098dcb4d9e6ecc87640c7ac14705f575f8cefd19ebcbd5b7de614e2169f0a40dccedec9489cdee76bb662b543b99ec172d1dd2de58323e69b6ed30836d37766efc81487ae15b64e6f814599cd1e9c034c21c8c231d480d6503fb0656338bc99f251f4ba138f99bb1b32af4c5ebe64d5c7d661c6c2175fc913cbdf6cf9253568c179756705383e94ab3ef57a87c92fbef5d440e1bae7517822a9a60a4446772fff1397ee28b752e5347bdbf5f3070d009efe294fc39289351313badff21b6584ef36f39aa2a4b9f4eca77c877b4fe3da9ebe6d0c909a355723673079c5789517c2bd63f6170b94f0a4e1c2e82a10bfc0d68154a2f436b7bcc1a70166bf030a5087c7b6a013ee1b85982e70de49cb7055aa399b64b8d1a3d7f0f8174c4cba3516b0377398d4c04e6336f5b6bee7967b5376d9ff31a18a97e25e26f05ede6a53891034ad271fea6702c28462e17c9b53b066dcdd093cb3d72f7e1fcad9bb390c99daaaeae679492b268d898fbcbd97ec993dbfda08c353c5b97a74695fe21c6ebdeac817885daefff30e99f4afd25b98278e83a29e20a41f5fa5db6561216132470e818b5b425dd9a04dacbac0c54f35d8cf2cb40e78951675d0af0bf1ce275402a00b1cc1228ff401e79fe5c71deaac3779443e8ecb482d99246ecc9bc4e1f624f56243f7fdf05f8a83b14cd54c3bc24501580b915095ecec273a3f35a4d89cc499c653fa2221577fa60623c9cd633078407a7e17c38665250d59b1b0bea6ad4b4938bc658f376d6d9d2710668b1819722bbe9f0f91d98318e3b6466c59bb4ca9e4015d897a3a8728c880d85d7124c3ca4abd381b078130b2e85daa8f78db7f35652cec2439a7a6e091e1951ad6e4a87da414014dc026447b1c024f60c79da583f0076a7b02ef83153bfe7f46c2cad6dd04e6daae7aa0491c1a7b3fadb1ee3b9dbea6a5b0c3f6f87203ef4454f9dc9926b6561fa31a7f10867b417fb4438cf65e7960d1a21a943be059b0f1890c327e03bf0efb7217860faa3ef4fa23f08c25f2185027b2c517e84b78a26a50b07b9da9b1bcda9bc32c97ec23d40818eed56b9c06d59d2852bfdbfe370874c901793d5cee8fe7ade31ad4ba944879397ba3c55f7c12ac339741df7ffa8b4aee6880be76fdbe93cdceafa1ee645b375df004df24ad6f1ea2974521523ab7cbb849fbd9554e01372ae47f2ceaac3a7947415eba693e16fbd7b8e88018b67c2e19c5e830ba3916bbfb78cf64950db7807432e7a6ae017776aad93ba8e72fad4bba60572a7e9f3d58d9821b41a7eac9eb084a2c871ba9c4f715b8c2f6d0698476d68aee21b9d8bd617b2a91d0e48a0a954b438b671768762d0041f53bf05f1ce59e9568e6a9005d223a23941d409938044b96b864cc0dc63178d9c24186bff6a8f7f3118802c8ebc8db1b39e00035b46e90773ce2d12c34bf266d0927ea4175378a374c776f1fb96483ddcd00619a0648028ef11077500475e0111f8a5be16282708e0df373071bf2d2b54dea46705762587f87c56715bc2b8c5c4c83ffd468a0fa4460c7f5bcea769299ecac07f3f59ec35d039fa538a859cf174d6f92e09905511ee05b124b042f6e0591f05a87d22eabf33b7d0f55568732e9d28998cbe74bf52c40121744c9c89d0256b7eabb0663a1e45b47f1141ad4af95015817c3ac8b6332c6f4b604a0b186dd0af02863490df29c620256128b8add02f1e2210023445673cbb4d76d7072ab0cb0d8543a7a706c13a637167e04c526c630c2c14cecd36e5c3cf98f72271c7a7efe30da851ac14a734cabdcea2422c40f3ef606e88c8144491cfd303137c4cb04df3c7426d13559ded1629b464f896603109348d9ea131c3e007e758f141127ddf196beede8a7be9984fb2a222affc51c8d3ae0f9d4fac96a91fa2f7bb7d6176508d31d64cec3082209510ee4228a86121467eadb780781db0e4112021ec32de2a9f029c594c95dd5d7739468e62625c6f585d53bebb48fd2c74d686cc91a74e5909d04b370ddf51cbbefd2dee9ccde33f3e1c9d9a5004ee4a379e0673f85743a2a4845043ee83d4153623267e182c301c85d346f03d3bd149bf8ba1887e916821c02651bfa07465e946187154b836741a1fefdf3c4f79fe43ca8fa98af5af091ba32d46947905d4045b2f17de470e4339e463a8e8da6ff71292e71064914d3709019241ceb9afe4a82cefbe0319b1c64545f5656659b768e9766c0c1e986b151dd20ee6f51286bee39bcb460f85272374a14139139bfabf3d022abe9a874263e130063df05d09d9ab033be65c54e65297f9dd31f5960ce8cb0374f6fa41d343a59aeab213c017090fd158980661fc842e2390baff9fa0f222bdc22597e7c0c8b092586fa49d3176c8c333aa06fb47f01d999d399b1915e91c557cfebda92f47232f2c7f629665fc69e62f16db7f0fed1bb19f690fe95e12518014379e2c59424179bb07ef8d237d4c4e56cf8d94ef06f56ccf1d2bf60fb8d528c9487c44a48e8adce351a7aac897e682243a1b595bfff6955c829b83ad165b4a991da2fa33d6e2168b35e930f650644a72c6aec9cf5762b949bf212f59b4a14f412acda297a105041a9c0cf43f3ebe8821856672198f5c31d662ad91143f15c2f6f08feae12584ed5706fdbebcb7838ea048fd0a9ff06cd8758da7d7c04c909d7a7d5d7242b71e0b2147409c68f00ec2ed666177bd55cdb82a54552d22a49acfc2885265c8f5901bfb387d1fceaa40f06a616ee9c2b7bf2c4c6e9103b14276c7636d1b2d0f67d61471a794a07612c811e45554eeee0f809c484b953d10b58835d6030c285452ae1e47a84b51984457507e97af049c36b8e404bfa1c9bb7f0bddc98daa4f25ba9182e71b3f3257a62f36640edd5ba21d4e09f94d24e121daafc4ec5542aff4731d139b8360a6cf132578067fcbfc0c05fd51676e7323d7e12b6ade4782810e9c08bf13eaea49ae6a4d00a772eb5a462a836a4965ef3569136754f25daf72359e4f833847f8f7fde3ee257a73483dd55263fdb1a392308d5dd56f68335f5feaced7ec764ad3e487598e5c9416a3784bb6b207e4f43342f034b8b2ece580368dd8fb91cc51f465265b0839adacaa6d877e17ee81cc40039e4cfd9fc218b0575ebf1f7e0c0ece28b67e13ef18cc2e5d5fe2af2498dae4209056a1bdd440b66e79140ba604a0070648f41e7493318d0d66e0a89b0ef561b73110cbd106ca99198157d3aba6372f24c044a282bd676864aab9a42e361948e41d52d413d50db79f606c8e0df5bf78ec83abffc2ccbc8ea7869f9930ccbc603d025bbbd5aa6ea129006afcc6ab9180e0d0ff4314f3eac24576107e5349170c83236805bf25707d5b1de14513dbd50613363aced9f1fc61e6c14b9138d93f28bef17c0d9ac14184012842373f5a6b518f822162632af9d08c5dc8eef883380e1456ab80731171d548ecf57702f259dea0bcf89286421f8d5f9352fbdc97690c3077a734b5237da15f6021f34989b8330f4f10513761561bc4172cab6d88be80c025470208fa3460ee96aaee3cf288e697b20a35b70d8a9b7974de387b13bdbfcf48b5692dfdbf1cac2afb5531c9631b8b16790465aaeae07ef1054cf1c1280b81cba21c4d3c7265c97a74c8feb9ae3617d4a8272c09b9eae7737eca4da4674c749f1ee6a020217d83fbb0555261e3f4fbbb0e04c8b6957f3f2c7ce0f9db12e9689afdc4fc7b2c1d876305e99525faf91ef696a9925dd24e217d4cd8bd2520ff55e0b3cd151949af804ebdd00863189d9852577f1f25e57c907d05b8a403b1a988a1fa86003fa2e59fd76186628b274fca1027b3f1689b3bdd2b34ff06ddcbc9863f776021ef527220a6e695886252d748019f1438858b1130c19a596dd0b14efbf7d5dd2c2f011fac889b69b33e3e7e166a05c107efadee76ec695c81843e8ff6c300e7c405f439037f5b9a33d7c2683248ea28e1f708098925be6c889e6fc0c389a10c3b152151330af571d2e8553c222dc97f98d82b24aaf0e0449269d5ebd86d50dfceb1a62bbf50f4965ddad4ca705ca42603ac1ec6272ae9df4e902149f7f995490bd42e73ed1c3f9101511e860dcc4f7278c84bb0ee359b6e62040f3a2c293657e7c86b95bbdccc96402e695c0e1d32c85d72ef0bb56a0cc30824f669ab110efd6e49d7253235d08db78fd7abcccac9807a425539d75fb94561afd96bf4834bd3f47f3216aa79de3a404b5c3efb0d1f40b433d182a4fd5f2d105e8d22d8745ca7207a2526b05b03922cd497a176f5a8446b690f39f7e8c4f8dfb10f76567cec8bc6a56aa21fd80af6b47b5de95b54b533fe6ffb17a5f282b6ba7bf59ca67923780b6e8bddf4e3bb2cab87d19f1909dfcd128cea5fe51afc6c0d4c8f825a39d4db39ecdb9f9c76d103d892426548c53a7ad171b0db20f5114d4687fa92279eed25e04b665495f36a8f7651cfd0d6248d5d5b62fd5e20fd7ad652ddaa6d1c67b482004f8dbab610440df3371580d3c8f9022ebd9c21dfc0c6e216b982126af9998aa549b0681aec3ff10d28be96a848c7ec0405015b534136e2f546f6578f3fee640f522952f04832857acbb79e0452862ad01582e4265cd93a73e8abd06dcecfd3e2c6ea7a05ce798b81d703a4b1cbca03d9ca7a71f29df9215afe7816db03b4491d54adbbf59fe64eaa24b7d2eb59e6f9959bf82ebbfe83dfa325d9e33c04d1e3a0193c3ffc14148d6dc7a272fe06e6a3b64b2cd0ad2f5494b0b4c7340fb2a1acfe1ef10d40cde001c63f976982f8074731e9a2c22455032f0a65027601a474dfa0a9cdd38ff8db38d66ae1bd8280bf2e5c8ad349e2029bf46ed7660c257b4d8f8ffbe9e27589d4fb2238b39000503980979386b2e82c9cd9e58bde27cb7c49e1a123c37238de48a442515a44701b34baa5fe70745a23d5dbce0f0c004e05bd3478f0e89b096cf75b2560687873f85cd685f2a4f9ae8ab8e58b52ba4b882733679408dabd9ccc1d79ee6ecbabd36953436f3a076a810ca3ca0c8802d575494763b382f9ea9d3687c60f9f4378cb3ef92dc64cd8a2d5e220ab4299e9c8695456f32f1abe8b397d05a812b4674bb68a274765388baafe11a4a292f70b54d2bb5b591bc901a8b5a4a0741e49efeb20ffd4df389eec1f2ccf0f487710f5697471a2ca380a5854bcf7831137817510119a6579625c3eb83d719ebcb95834db5a1942245c7badf0f4713081c1b37abdaec64c9790c804531b3bd28e6e724cbdc3e8ae2681cbbb179ed313cb7a3c4bd92bbc3de05b48e2f8e90392e3bc5a62da2cac55f94bc199b2e153506f31cfd1524deea927c37636872b3dfce25d71410857fd7306093f879569499fe13291a81adc6578b6fbe730e781765cb6f1d4d32649f7adefb899f7920314cd50d345214f180513b483346da8024af19dac8c041047c0110a6251fe23c1e4ef20c76bc20d5c23ce4c2490eff2b73f37f9ae585968c0f0a19387638455f87bcd2efc5c21de38c31b96bd595b562a15b35d9d503b00925fdf29954e44dc22d8d85c73b0b80c95a741629706972d0369f8e339cc49beb101abb47f11309a41492035ca30386dae3b46fb270832d6399455939f6347886f91064d4b284f7c33d963ea9be783e8b6b34521231efeecf11826cee465df492af6d686564c199e775a5ab5c58e370f7a1359a29a51e090be0db224d51dd04ac1655f135b4aa705831d1bc5726559a5c1458c52b41ec06d15f14e4c1c2b405d31d57131002219e62780437327c2fe59c2dc11d1e308358223dfda2aa8da227eb475779d87da96ad8e3b890b6cd0dddbdc634545fdaa737c0b83037df1325573dc4cd13049628f68fa99e8e63018ea369477f011dbc1a11b3fcddc6272165c2f516e3281cb60b43deb88923eb92e0956f56d371dd8b0ffec5801b09bfb595c2a35128703e557c9c24e73531b5854aa6401afd0ef4b0f27d067f7105d7a09234bbdbedba9c547611422cb4275b27032873098db8100af7ad48788e1915ebc73b15cb7a08fcaddb5f1def92a92ca2176f414b5c5bb00326b1a3c8577a1011ac016dcca6cb3672df331e62134bab5f3e7109a80c24a7feebd8f34bc819d60d5743e49b9895ba176211b1effd3a0e3bc487cd0966ba9d065b6355124fd7663500667d0dab4f07191996c9b6e723bf83fd8db48cb30d8ed89d51ae24a02437df6c5aa1a5baac35e39b045a17fbdcdfcfe4da861f825c493955ee245929d5b0e099ce9cc15d806c14b031de4e9591be9ed1ff33b4624cf19bd918a2379da2add7290c1d50c9386b0a6ffed1244bdf64cb70c94c00921880189b4f59ee450d01456269ba1964ce02c11e8335a7260a0ccf68bb88cda7183fb219c1395612a3ee76c1616a994a1a9800d8ef0ff72fcfa3d3532241daaf2250ee2f607c078f64ae437742096545aba6dc53f1e824938d4d96f9e2f5494e9624baa9151c7e3df3ee934ad6d725f4de39827a194c1df576e119f360c5a5d13005a261ae584efb704ebdb5a3f9202f3b74568d644ea5c93768292232f96c54248e575e1233696b7ce2ac431ff74fe1c10c6506750367bc10a1aaa6d77935504e2d88aaa6f5709382b4e177ab3c09dd3fca1e8789020e7faa80c03b60555c44d4a803e178a81d1fb23f37cb5e9a386d650d687081eb738e05abbd26ab3f4652df9532a7f89cb1fb38f57f874fc327a5cd45f7fd7ddddcc0c7fce621fe0c30f1a9e0dc8f90e37d3d19bbef8b94d1d6b0f77903ffcefd43afd10206edc3378f1b9549402065d57681ce68564441bee4a79bc24286e3f6b74b767fcb6d945e029884e376f1dd8ed83c31492a5d62ed07a5b2ce382be874c736e7eb018a1ac3d13f54972d28626bdbac81a062fe679f1624005ed5b695a8fda568f08f2507ccff64d29faabcde91785848202297797f9fe8e8c7625574c76eeda7ec4aee0383e9b94d0b244d42663e56c6733184e61712efe975c4a7808b54fe1f7299df8316775c6f3f6674171635c803b4491b4658772a1064054eb1b0ba6ccfc9e5a76258dce6cb73cadecb0fd33f27f52ee5e016ba1068a536c554783bcea36be0597f3fe9a750327d97ff8501fca4bb9a10ac8a7f377adf9db2a028cc83e6879213e264ea6474db14486def3033017df66777ce8f8390cb33f614899940a780408587861947dd23786499887ddb5428e653ed64ceacadb7721e8667f4df986d1c82a0079ed6ff91147d7bcfe3a2809ea2b4abb0c218d7047517bc154e5c1597c804ef6d1d2515016531c2078509fe32249c0b79b04d8fa9632f93e844f905fda951ede2db89a822c87c27b8fbcf8a2d1d33256c408025ad34ca76b8c0f23cd30a2197b56c91e7f8a657882cc02b7f4dc4523c99b8fdccb0b95ede621f4366fe0cfbffd7f202d15aebe617f39c737b416f9d09f4c4744563fe962e487152159a6c2f5d5ff11c5a75c6b3135f33363e2efd1f43d5cf5e3b0bf7ad01cfc5a09d741213cd06ac6ba347c7a5d30990ecdf2d11c65e79ea0b6e027f6463e087bd5491766df0ac17db602541b9ed4acfba65ca1c2bc87e45131736a727fe67ea1d94a5d23f5ed15ae6aa3502ac6ac3d1f098863a92aa6b392a05a9544290d764a4519d2450151dde0689f5591ab6d5003d5557d80eff26dfa35aef2e3441a53feb6d16012252d8ecc4a7b26fc6092a23c30b233228c67c381be6b3de8798c930a4e7e335479b72e50bd712e903912a41890d489c81339ce8099a329cc2e840089ffb8a3c3269fdf9a31f8be081668799ec4b179e51199c7c4dbebe0d47fa8c6c49d9c87cf489ae80f378e92beddbb2a510a254dcb110f343dd143c7645a332a7b9fb095f92445fd4696accf22430632e7a66b8d311b3fdb83251a63313c33b819667f02ed74a10c5352e2795fbf5157048f86f6356b87b7926f08b8d83c8b32f6e06d5cdd2bb6298293dc3e1bdf2874fbe379b2770f410cf43b48ad31b842e504e1842356bd41a9aee85b99cfa283c9e0d5ecfa372fec5c7d4c8dacb3c883ef5ae3c76c9ab6ea43ceaf3fc554419fc6e9674943d76c285de28d4c5719bc2fec202e4e27bbc1b8ec97654cd8fe7ff517a0cc0e706cf5ea233d80f2904a34b8a1b7e13aebdaa7708a2511b4535cffb0b9334d0b95862744e5505d4f6639aa1845be74435426e516b0f6101ce601198bc2a2c896e3d25812398dfe0b2c2a6a6912682d48491d364afa333fbaa72de263de66c675fab0df39cffe717f8a005c2dac367dfdf6a36aff329db8e6b77ccb92742fe73588f006199b6ba44f41c18768c8adeac3df735dbf826052379deb8485b4787da1aa786bedf175f0be9901996585e82bdc7cbccdaa6e9727b9080bac57b4f32d7da2b526e96466010ab819b07f33b50635dbc768a872b33393ff6dd716ed994bec04cdfcec95630f525dd20a597d5e655117e4e2347413fdf693ea6c3e06d0d366979b93be90598d1d5887268813f8e0ea9194d553adb5d8ec8b48b95bf93494f667c2f854b0335694b40877c71acd8d7212e151ed6556d656558f31fbfd4e51dbb65808fa5c8487aaec318382d3aee642703f4d3349a773521625877d7d1598a6145cb2195025a293656404bfecdd5749e6b0268938e3103302ba2e4c267a299c4b54bec1a896abbb38cb49b31014d7e1b788f95d616c8a19963e0727fe35b1d4536ad7419e8c386056c8264971d01a16bf93e9001a51c8db798e77ad2463ec4b9557fe6d9779c40a1d75b2f052a3b210bd385c5bf59d30bbb0b88cac19c2dcfe8ac14bd870517941350d526d5065183ae1d6e71dfb4d48b27d85842175e50430fa956dbb30b5f3d76012d12639a6df4bb19cd19d2d5241e546a516ae4e5dd4d5e2658edd17ae3b9fe217504920d820ecdf1547e2f4c32f1ed45ab8afaf596b27bdab0deba11f2fc6ea03b6a4518722d314d2c2f3078feaa721cc64b724b1a8afe8eebc72846357ea22209aae55dcd7b6bb2f5c6327bc18eb63308bd26438749f32b91f43dbdd665075451fde1d9a795b1b970b839b8eb6b621cf5e7348e20095b929a8afd5348901e84ae802a5c63206e0f1fbb69e4a66e70b8f4c181f6e043aa4653ebcfb7f5a1fd9482bbb3157cfec14697258ea7380cb0918464333334d64aebf61c008f6069cd395708f734aad6fb7b6fef95cce86f4680cdf036cd45d6178b936b3f31695c4d8597587292ea7d25c7e9a711024dff2aa1d768b91398fce2b3faf622f0c5134dc87cc7276d4074787ecc69b72a1cc7a69cd615ae20d5b7ee60cb12a0efea4534c048511937420ce24810b8e23debe3dc3c48c84ded0bb376b5de34968ee4e87b1527cdd271c30588004e3a10b875443e54df5b9176cb892587a1ad425fe6d0302a50f9df9a2d5c3e651683629b537514f4746eb9f1cda19cb8248dcbaf90577438470251285ac9119f9d6520003f80f9f27926c91026a6ef63eee6b7a22e56fdc04d6f3d95ff05be9064e333354b4b5ec3a23a075720ec28d5d51d72d76e03954966c73d7e032138fac965aa70af4e069ac7297e7d4a1ec3547400cea25813996b8093eecd435f266badca351007ea88e432b77ee752e631c2f4457dd77fce7a32a89b70f9a8f562058ec6ad69291cd10fd84c1a27b2f255fe4b6a991eb9b340ca525ee94c93977b0fcf418a2bfbe29f9e2cdaa89150a10a2624001de0d09d027e22ca0248f54334570ca26b4ddb1207909d2345e499cc9a9c044e6abb06556f06bc33680aadf30364a86392908d07ef15db3b4ff8b0b448e68073c38f4fea4828875a4cd0eecb9279fe026590c42a959b740de987b5c2c8527862d114a038e3a27410e47ed23f426ae2f7ef62adee061c7f707a024ef0c277b0af1f03c26eaa6e23c2e840561ca33958715cc91e85a8c83f452e71e7f1527b549d9ecc75929a4bffad153368d2fd8ead9280f04d4eb1ff1472736b5dde8b2e23c923e5e283c59f3212ad20c972cbf75e2e51c12ab4ad9217707e1bfcf2eff75597e59a9826d0a585faf54fdab73bfa725e69c1c5e9fc5c2e47c4520e3ff88d8acaff7ea1fb75eb84a0b65ea829aff734e5858361d0512a8e7781ae6976938139b8f45d6ba602208981be2ec5e03edf79f408a8111634eddf5334ccaae6a098833025c8858cd9327a675ce2c2ac33b0d8d4796d097c814587bc218e138f73f85f7f5d2a79feeec167a2e6e8616b8dcc80e900d1fb14e756c301cd6f3da7562075e44676381e4cd8509a361bc42d7e1b98b8ed3e2f366aefa3ef86ea117505b4267ef15aef0590fcb4b129e83661edfb4af332d326c8e2fd0cacd9e9ba2e3016a2eb530d2f886c8fc82a1f916691f406f8f3e429039e7a58421c1a507dc9fcd2f3d8c2a0bb40267a66627e760c8262a221ccbdbffc7c31d3b5fcdf8aaf0283da6f3f7cef7b93162d193d2f746a4e39630fc79de299875ca611b385373ea44f8bf66320134ea52beed4131f4e25f531404939053282d22225b927aad77002e38ce083326dc25067773dc7c02c5037349456909aaf1103ffc339a1b195e0f4327a9bb09c3fff965ee590e18529bbf9e0f06ad9a85f0dfa416f66b14119d318265c419128d54e13bcf591d869ebd66708c1ea609c791bb78e3117c1c66b6bff1af4b4a0073a1a86bc950b926953bfef33bbf19f8928e1d35c2ac7acefec620660d60c064d8452a2b1c0c74605393fcf1c244568a4dbe72f78d48a312e573cfebd54575472ac8ae681ae13c1c336df5130e15b22c826aca8809c189f3bd4226de8380156d2f5437124522bbdac865110135b66fcf332780369c7dd609221e7310e4f69872ee72e6e2a2826e3ceeecc791b30801cc7beeb80f9a85975f0c4cc8651c06a0b29d362f032553f6bb8bd28b0d3b675430aaf53ec4d2a39d8d95019e8443de8b3ccf0cdcb741493fe01d7cb477a50c7d0262f335b55a0ec3815b9972e71f8a12f030460463876abcfc1cfc0cc818bd4c3aa61a03b53f2b1142fb78142d370e08d1e96b1475d6e7637151b810611165929c7a056c260104d70f53e81275c0cbe0f51be2904d3327f5ca04649d48380a55fd34ea043e7b9e8fafb02bcc6708219ae347ae4fe21ea848b05470824e5cf3dbfca367a842894d95818091bc868167bd24396dba3e0a9c8f16ed43bf67ce0c780c87c929bb6903db2e64e400011a276805f2614aa3dc5ac5a08d74b993c98732c901e058cfaa3b166467edc742a7054944b8ed2e37b6b7f6b84e3364752e9467a0804f85daecb97f4dab156bdeae60acb2f1a17216f968a9998c7a1189ba4f74dbb9f781b6265a7b78a49f8917702d3fe1927e54e0249c3bf7c269cd02a1c3d64551f3dc2fad4c11f00cf0eb06f9fe16278db160cb31db2ca6e25ac5cc695c35a2b2c2bed2d7b45662beab5d563950f909f6fbf8212256f6a2e28f304698d2bf7b03bc6b208fc5895c0653b7c57a17ae348065e734614cb1b829d7d30c2c7bef40170e7f76ad5e8e9b4434f24442069070e15630588c3ff22b3db0f52b434c52b5b08614086455136c3e1717b9799fa7df15cca1ea6fc81430f0d020ad5a1a3989f616fd96381eef0ed2d525eaf196facd672cbba8199ce19652cfdc9f03c2ea4d48619145f3b0d07f3ea0dc0625c0f3505d8e2f58ff24cfd8c11ab4f83e6d811a551e327a879f561de0486ca78c7ff64a9a2b54b5a9da039dc8dab1b4254af23df1a7340c2bc094979f538202f35881a54b691d1fe7a0440b29860a292033fd7f5fa0c2b04763471d2385504b68e9acf788c8c0eaf16892af18b63540ffcdc997c9a05131ace1d97bdd1f551b236a263ee8c82703154508c7c70b5c40662f175af928ebe84bbe3f651deba97bb43e6d673f678435e6e2013bd5afc22fbd83286ec5d7ec716694ed1683c3061e08a08692657247fa445e8ef21d75ff825b6fb6e34d8f55d76ecba73233eb4b31f7a6b730c9595b484fe0e559a66d695ed0223b9af4f053da24c36e5656ed008eec288e78c864fe414f0a89a1c0bf6ea734f032d2625b39b67d882705365369cb5d48290f41a470b7ee2ebc120e4998c095599b787fc050feacc01c0daacd2b751277b16f21290c37f9d7c2223dbee8ab568e4f6657df483234cbb2529b5a7c4935577491b49b86be9c66f052860b956b3bdf24576a35cb25da3fef632d9624bbf07df68678a13e6211118d33236e65df1774304139f64acb8e154982e73ddbb0eaedcf3b3fe7927a1b9fb41cb4fb837928e68dfbb45e777a7bebff31601fcc62c0b2b0e3e213b7b77578ba681bb25316c7e12199012cef173d07e982a599d52ba8e19ac2c494798c5f9731c63a035ca8accef1ed8b67a95b512d5b06eee8b93cd7fd18706c2d1613f96a6c3884a713daa580a4d7d3aa224e0bc884f2825a3a56df725593874ed73b0c76eb48847ba7abf7f8c5e8eac3b96b568175464b79a0e17ab78e8921de66a75dc329f01931717700e18e4bc636425cc88d84970292af43c877d5cc819582a0035b74513d34b9398031912dece5bd3122f8833604e7672c019e791f2ba484756f2fe1ce4a44603c422be5c6dd5f8314523f4298bdcfa6b7bcc45630c32c11e92f423701ef9c290b85681a208c83ad67a49c5110c126260bbefa3867707ae106029c04d6c80a48beae36919f2e0d76498589f714269fc53c194a80d762305cd822ac2620028e6ba056b72ce8f54ebc4dbe0109f505dca953f384ba4b266749f4f2cc7a610a62b6968bbbc49eaf124a751a20d0e9e3e4a3ee03c6261b7d21a2c2f3c546754164838a5757dd532531c3a6033ed8b56177c95c035965b75420e1e20cf88d08aa64b1f027ec9f8399ea9963ef72794e79fcd2af000843cbfb2afde34a0248bf352ea16fb3eaff2f4d4652978644cba8643e04df4b117bbcf1a108b11dffa68d3b24de0bebb4565feb5b4206c9be659a8345bc3444c6a3dc0d4e7026fae2c62f4d4a302ad729beb142dfab0ce4c545a8a913b05ce4dace11396e21a9ef2c456242cfd93e00faf089a53ddd227f0bed9a998541a7209e7d42bf841b2fd6f8f21b28b4ba2a0efdbb81401bbf9514ab6ff4aedf11485d19e2dd19018aa8439458af5339419ed7064f2aeeba922fc43250df3ebcd944ff29f77b09a9f823b6f688ec5eea6d4f917048db558b2862d109bfcf00ece3c8d7c80bdda2d69b1c04c6949003cec1dab80b35b1c5d1b2dbaa222abcf6237e9efdfa02341087199c687ee7d078e1c461e2108bff8adef94cf76228fe40a4d979b55b5173fe64d6c90fe5a633e96f21e1fdcd99904011caf6ba5fe77c6d58a5ba81a22af0f6b05227ab6eae38fa12a18b263185d1efdc86ce44b77aed0e1ed77a47ab40d51994423712a01e9e70461758d6bfad2c8bad2375f42fd12a151fd9f0faa82958adbfe3775e982acb899a1939babf06ca8d47fc5592277849c1085bcde70fc2fa19cb5ca1e855447764aba7d7ab2061b0808dad5219d30ef69a7340df9a476376470ea9614d058de1aafa21efe879b1e56654a9c5b22eee07220945abc74bb6701cc7d67966c88e0a2b98a39ac1f9cdda5105bc07ed65e6467fc00077a8169c38d4efc9ff4aafcc18f7262ef3f9ba9762b92c01f57d96633bb36a531f5c92b8b80991cea15b8078165c5ec01275dd5b9c1b60cbd84dcfb04245a9acae864143b37b9ef86f21bb40b2e5daf3405ebdc346600ad90fa098ed81ea5aa6b7d0ba401711d86711988454df890512431a00f35bca61644803a37a6693e6205d773484bd3210bb72bf6944452603cad343048fc8a274239317c2ac8877962f48a7b5bcc642699265e166205d37f8d824ef9a3e93867d8a2fee81dc73f2b29df1e22edea113848c1fb0df4ef9375afe6f126e2015661b3db2acda8f01d0ebed08f53e2882a493921e185a3bbb0c5288f44a494161569949ecc1dd043ef36f860d08232f6e3f99f640009282acb2e749da1de8cc6ccf93139503f3bcd49994d5f43144e42d4f00c08dfb2c25a88f6f33e17582eb57417ff57f61bcb81029c5e614298f73a7ac37a81182ea0bd124652f6e80991a12d3f4e92528a8d03b5bdafca9ad51926b46edf5bd6020c999496e0c80c979d79b7e7b170ca0347824149435f0ba464ab465f44095d354febc12dc88aad4e8d20fa91bc411cab0c164a1a0537c996ba71590aa79f823454354daa1d4da9fe77637e6982b3d5a2a887b5713af4fe76b9abf915243b2f186a6371a029811396d981f3747ed2dab3c27730da6773458ee72d96112fcee12fc19a6b4678bcb29739c3ab56bdc0e343073ba81c5fc731c14fb084bed8be2ae17a2bfb308229815c5ece1b9d6f32fb9bc68ed0446738c479968c7be865ce2fd66648e81f00992d26b6d95ea3457f027fc67ea1b5b029f861d1a017ceb86e2a7cc76e79da3bd89a01e057b20137e22b104072d44d873c3aeeabfe59194fd7e9d1b799fd1bf0685f797e76f88d97537e09445b6a9cf4c4e9b7a2b52468d6e14d860c76439089f74518bea038ec9b435742ff702525c4a7dca75f56c16499f4cd66cacc22e0daf4cbbb393a1bafaf5de58599b20cb51b06d9f080c45b6e4707f01d8c43f3cd9588a5b626f26f083f67acb9a8adebc619af1fda548b84d1d81cd641716312621baa39c3f261a709d63e035472a8d0f72b2cdd595431ae909163b0b270906027758d21c6bd255974b7fa9722755d8f8b0f61b87f66f5b3bc648a4449283cc47789baab605940be1a4d28e660f5ea3f01ae2449af36f84e5d3ac16ad58328a5d8dc145c53b86735d01338c51e8576bbb747ec9daa2713a0e9d947916cd5ff726772d268b0f7c9c0e9e433dbf6c24923a29e9eb36cad85ac507b653a0839e11a569de03cde6bf6854ebff72415c9da580c13e901d41731da9140217c745dc19477d57df5695bd94e1872476e8d0648836fe4fcf01c185278e5191a7f8e0ca959dce0dfe6a951240ac4ca45df017d4c8e56086f5b2c8b863475d66a01d30cece57ee495163033104af228046d999c96a952491114aa5275a3a4639dd43c366c39002ef6bf0c7e21c4b7991b644638b9c7ff9fff60eb469dbee97c4e5e73d4dd5c74c84fd1e05f7ad47ddc82e45c4ca31e19f8c876ad8ba760354e491749b0cbd53e2ec86cc08b51f672f31e617991a8ab9dd38e03a0d118c9ebca900e8a5aca33ffa9c56ae5f9574d8b21de21b715aaac047e33a8bf4e641e6dbb02651a92e3858d3887d331fb321f117887c13656db2482c1327b807732e62dc3fed064dfc3e206fe1266824ab357c555cbb1f492f55a5b508d82c8c2248e5fe1c11b19bf9de3e99ff417d1051d0290798bb3ef56685a4b54433bba027fe6282ef5a13af6062443165d8b27b9a7d2c08ac3609f6e3b72f7d536174f1ce6a26ed644d57ee94dc7e9c5159e61e5589edf38f5a3bac6e3b673eef2fac127d3db2b98b2bdfb11e6f0cbf560ddbfac7ee00c557d3c4eed417ed7f4c0bdc943718b5a41bd7126e9934a4bf1510c4a8f5b35f286c13e232f5ee3e119a9aca3a55b146cf364a121e6f180a9695fa2016107e1427fb891758b3b45ae237809eeaf18ba512d8a0d5c66c1c584e8f248e4e32449ccc9e871faf747c7783ba887521a3e2415de230a7f9b3b4d6465805ebeafce7616a19ced36af85d172ff16cf0074e1df00024f04add83fd154504176cd5109999465b3692683868ea74ac7fef88a57db588c48f60fd9cd0f95a306d732ce1b81659a2b1c316eb76cf064892526824ceca29ff8f3b7d9b34852ceb5fb35ed6a26a4893a9372dc479ef98c48c848a0ed4a7f56d4a1c9a0b9c1748aec1157fed62248f2882c50672d9d560ee960b1213511119f81b9fccbda427ceff77c31fb26339661f69c5ffd61a3a65516d9ca9667c2f6ead6896a00549a6c54c3512e34bfbb201a176a9db07f2ec9b41c14759979c1d2b58672acd55f18cad2a3dd06f1bc4058aa7a71f3a44a8322c9ee662fe363d4632405694a968114a67ced1e17af93ecab94ab620fd98e29f0b5c218130e63aa2d3efc7a792f2564bb970f4580e7730d3aabc23f89c3f46aada447e59d8abf52b183f1402aea2ce79a6f8d3a1b87169610015be159fe14d5873d507f4c9401c035e3956f67c7befee79089173b82039dfd92ad74a17a20bfe309f309052f644b204e974b049a440da57fc1ac3f2e0ddbef099ef6bdf6e7bdf0f28d9e5177f132dd70b12e9b371bff8f3ac8faf74a852fe7388cbbb1b0ea2b4e4ecec96acff112584f2906dc5adec08e1d06b8d4e5a31b7538d0ebd98e59a8bf2adb0b12b33e7104c8d5d42a1198c02bf584d2ea80b345cd41e103f538a998f1ce03593c3c9937763f552e8ecd5b762255d7e4c527d9f865ab495079db62a14d9ce09b8ca25b308af616bded7afedbfb837ac30a5cbaa128a9b4773b8f602edfc7a82e9e3fbc8b1ecd6cc0a027aeebba8deaf4e903d65232b294f0649f87ef479b9b631fe25f5e5b73f0884c242528994f403362c4204224ae1b86ba276057c42fc0febb79281f8b4b25fa12b01517d38e99ee5271584a044c80d932c59e1d40d5eab7d765042c837e6610118c34c0846cbbc85e7d8d69ad24d6dcdc52d2bb7a97ebbc18f101449c04df582d10fa3296c857169e939442d08a105716edecf23b93052ec2c3110c3ba57f73369bcafdb7651e6521c56d99832a226512b54c44980d539fde56b28ce82ea5975178b8b66fe04af243f431da64da8df7af0e3e79457f869a3ab235affa69670eb9937a7634cbb030ce67c29248402750a052ae1bff058d1b2fff71c6cc8757b5ca98845b9b815f46e8af49f37a2b3488dd2eebf9faedf2133cba74068810cb7e665366069484d78edc46985590c69909712fd8a86d458fe6728d3f057c91aeee9c6eb91cb5717318aa978aafc50243158a29f9fd1eace7ecb01dad41078e419fadeaedc598e716256754f122f1de773de4820d940ed1f1f3a9545b990f750bbf55e4363049e96dac7346e86f026c6feb7d8fbd4d285054bbc2f1dfd20a9dcf906e87b20dbd9207d87b02237b13b100da9e7f08c908e20c79bb6b9b13978844e6db46a91164305f874a2a7ad208d1f8982e98b6f1d10f6e552a6d3569a3f5d8accab36976c30b77cd6b26ef22c213470b5baf10700fddbaebc5752d442879df5f3f8ed778227f006f9f816fbbdab4e1e98e278334ab1943ce7f6af1f86fa90f91f4e83dd946222d691b50dc16fa99003eb8e29ff1f14dc7006f1e9b3def186a67897a555d41222d699e4c3d4bb4520deadee7279da772177c8a1ecdb0ada3321c0076b94f4a160f5152959299fa0372200bb562f52be753ad334a26503ed1e27c8c8436fbade32db87e326be21b2143e97b770ef7ae57f4f490026b01484dac6ab2ba7832c982996a0bd1412c55149a9f2da4a1667585bc25b8fad10c9eb8615ab4a29ec915b7efe4d25aa421f2385972b0aa6b4a2d23130aa9f2d99de85462d751b62019470cead9c456568ffdc8fbe64ebc5f6d5237c3df17e7ac44dd4c73ffd5e14d8176aa7eafd83af1ea81a0065384e1f9dea2b60cd407805c75079b470276ea56e05fd3d102d01901c559f8a864c3d7bb72a3480d8f35c8320821d1d5a6ffd1831bae1a5e21c9563f5d907a1e998c71343e3468f6a75177e9b9fa4181c6d791b79d57aba98ca148580e52526ec5d472611e35523a2a0b59d9a9f44f8ace48c7d7d20a2c977c28f79bdb6c193590bb2381323a74d518ea9a1adb06e22f41212b07abaa14e15b215c15ea60c541f69113165b504d1ee5f90a1eb859416a33a2eee21ddb86964716d2c60601f6efc630c6f4c3d1f211fb43917e8c6ee12dd0bd571ca19dfb8094fa9a351ca34754239f45b0524aabe7351a6ea906d8d4b2d3a536d9b6fd5732479da801bee08a810709d29f396c51d266310783bc82f0530faa0e3f5bcd3a1b9beb1002a3e70368bb052a056b14713ad08b4d5da58ddf36ea660c6e957195718003d841255a1312612e25901f5f5068ad33066c9db2a914dd4323faefbee1df1716fa43c1bfea4b6a049b9950cc5689aac57f62e43e6e28f541eca1f5e586ed371adf289b852e162028d0f43d74843867cb7e0d9f9b5580551a209cb86f3fd1eb4ea2aaf78ea79d1ddfe323e94beb35f8e56a8b5666fbaab2acc6554d4a92e6f28dd768c15566d4d2eaf7109c795cc567c8063c7419d301d5bd75e44ee5b04f3e6eb8a7069bf93202af0c2b60b9bb402f023da0cb44499f1d0639c1575e4c657636e37979a79a9a44a8cbea84d1aac6c299cb290d56a365fa8ffd998abd3376739f1547ef1b71cb8432ba501d177f920577d86954f1df5973669a280c42cd00c6668dc5e3515064829f8ee38002b376cf9db8249ad919fca193d00785bebc0031b1f8c6f34b90eb519da112cad345276d38749042692f35326fdc6fa40549232a3d20ad6036e4f2daecb5a55847bb7d2172d16a8d9ab0e7e73c729d996652b55b65b5f592775002576890104f5aada49e21f0a226a05530161b40679939ece524f3ed0f9250a298d8591a16151f22258e43c009970d80e828414f2f5e7ceb8818c1d7998f0d0b3ac1210824d6a117240c45dddbd18f880b1c8edeeea47efcdc7b2d8e365ac6c0374a2d3e3500ddf7ba2b1e98fea835db3503679094ad9e11f9cb5cbb69e9aec695fe3c6ed6c7bde6396d3c3a795548249382e5054ebe153d6d344c0f48d7f73e363cfba61da2381c4f4c3dcb0af2b30f375356419fa0d447531ab49657e23ee83bb9e2cf02cc6dbc82b478e3bb01005d0ac4076a5b2070978393ba1bae6c8fa867fc744b8cc4dddf32875b55f3e6d7492c3668cbab8f1d35e3ea75fa36fcf2470fe1c039b0cdadbd3f1892b7e3682395e69f74295342bf07c81e3f130dba91bc2d173915a06ffc29e4b0021a1f34af9c180977c4441301934060d4c400f662aaf7a2daa371f445daca0d986fbd5a65574c1115a677de84cda4994b18b5a16df85059a376bdebd8214ddedb76c9ce152e7e68ae1198051fe035e1d4883ad2989d7a695871d8a95a18ec48612b97e8cef4fe550b32daed22e0ba094d11b1420c0752d09c14c3c35b5c8164ff093ee5c586bd325b5eba7fbfd6f812a06946d020ba85e35784c696fce358bedbb1b063cfc6b3eb8290e8a86ba79cb4fb9dd8ffe01335c86b84fcbfa18d61d844acd2e967062982bbe6f5d962a7add8d169a07319488bfdbbe5aca3b862e6a55c657c5d4c15fa8d804a9c8731f8e71eab008a78f90108cf831d80e88bbece0e939f948ca27b1db6ce96a1ac51f76d58c92e4e7b434852e4fc0004fa27cb3770f0eb45a5b1a0283ab2d76844d754180d9afbf08e0d87a4b255dfe4874f06561c30f1ddbe2ae0b06b257d3dd12ca34cf7f83706e811e11a05f8738a0380c0f1d6aa8b134e01d0012e3f9b45d8df71aa8542a2ff638f2a6f7d1f6b7d2506c87d57111048b1d338c87eb191d1627d450f5a368ad3fdb92ff80dc072176822b2bbcbf63ad7a8e382ffe797b4707c7efe69cca91e7e57bb28147dbc11858b3d741d542b97b0d69e99a50b96d0cbb7448196660acf3a39437d80e96cbf0d122d3f9885e6644444b787772146a4c7a826b10266b06ad60ca839834175f5ebc287ce68e7c14b45ddcb4d3f71f7a8da698c102e4001e8255e97d734c7eb35bc290a9e5d778361dff3a0b509d9bcc4d2161c982d1962fd8062563cab93cf3faf140bb79726b84fccb8e823f14bcbbf8052f6963d4cfaf51a6d920e4112cfeb3816000857581ea21bc69baa084d2897e0bf02ae13e9456c377ac1c5b6835e6bea0812785366e0879d98e1dd5877a8065f894c38133178d483a7121575791ee48383c128581c9f919d0e892dcef83de4cddc6eb2be1bae0052b6ee93ca5c92a10e689b97523b4c3602ed10c56e129726726911f3c0d3f0080b8d08c698e82657fe59fd91cbf8d428f55d40342c9a0cb157e67446b1350841f5b6fde486ab882ced3dea2ccc7b9cc8ef694f622b79e03ec08b0fbf45561d2653e0860d7b8b4a8e83c0ee328561c63666829f8d6b2dcc071495394dfffc2c6ef45c38b2cc3fdcfc81d015baab3b51da52fd035a4b48dff733c6e96f7b214aa38da0d2755dd1d053b021edd3610d015d93909a2f89f0ad946ee381907f74b0f48dc822cf87227543abaa9989aed0196b5fd9336c025ecfe9a135ab5b82d7a627b61073189d66b6f62526fc95fcf0e9bf20d74b29a35fac16460943a9efe231d2665b8bec7ea4581f3b94e58fd3ce24499b6f9298aed69d57353057c5a35f964977af41f3b9377de2d5b85b76033f0d6ba3e80339c6385ba4077f322c23ccabee69b79a7f6a4f795f1097edd0c60b70af976f9166dc0eb93dc150790be4dcfec1fd407aa11d71fccaa2ff17d6f36f6e69729459068d77b7c46400561a97f6c36970bce38cd3f3865823fdb949319b18188fcb70512da3e0b4b26fb59abdb499133fc2ca784281306ce46499054835d8912eed39004259f75b0183939502661bdcd78b73577b9bbeceb34df75d16d5aa425cb44e58f172f5a8a1a557a4bd8d43a67877630a1c140bde9a9134d45e872c071642f8de745b5a6cb64241d9bd609e8c6b86e1f34c95baf3045186c9a74c726e7f9b37b28497c9e3bc4be498fb4a4c56ece00608e218437c5e6fba23a699b46c78265eca343bf9aa46b5b5761869d499454e5fbf196d427854120c1639d6c9c8263036a6c271f06b8efaa766a411c7771fbe198d9eb8246259260880d1df70cee068bb2360f595e8a197d7d5f74730178dc2c8baa1f11ab2f9d981943b876b0f6f6463871e9b8e37d58c477c1247da4d2112b3cb2062617ad72097ba2511693dca1bf6f3bac76b4e14dfadf956ff5f1e3605b4c9a82dd6d5d930c5da6bb5c066516af6d433f329337119508f2b910ff69d1cac1d35c4df223a050d8a2221fc1ff48f9afdbc2dff6efec7ef8880d59cd4287881d5196fa3449ede27c599f53164f3b1547ede96799c9efac626fdd4a3c7c25fb07943c98b645cbecb2d13463036ab56eb7248e4ed2af3c8941a1c4efb6374bb6bd478431fee59edfffbb31c774c4eea214b2ce035b1fdc8b9e9d035d726399a4d4cb5a026bfb47681154ff302529c3ff14fbae9be69589a64c66730bbe872af97b4247723c68aa737fdff3ee78562085067b870e8b1235dceb131193dccbccf03b5c3b51689c193b88c33dfb8c3055c8b58057ab2a6e73787f9367f97520376242b2a18974ea493dda9a7b1c83e6c392f134221bc38b2d1d2619a250c80124055278fb537e38cc1676a1fff2d7a5cff7ebac8139251abd8148f8f81163a3e703b67a8723e35907bb4570509a147cef17d778f114de4317d4d80c73e6e49646cd66fa18daa4055e681c4f98625d7b9b887539371800356f6a52cfebad9a94a3e20a908138b05d269c366571d8521a8df789ded9d78562dfb0c96e489d01148153e1d3b69a582a72e86a70cea9937a758679bc492c9871049e3e2faf0eddb37c240bd89c76bee3aa4e55ac40069404cf5ea8ade622d874923b8500e6b33bcf53c754d0db943a877ff0fd23ce10c301cf0f531bcb2b2b81bcc1512f7271beb001c455be09c1c9c5ab65a79d80870810b633d82c63d3b6b580e5e69e2887ab07121a7de4027561205056774e75fd77cc4d13111494f4a30e3b6b692eda534781fae1f69eddff6251a6956eae5c93cd50a9c8766a94a23efa215064f16c7bcdab0475104eca1325b97260ff4ee9979a6e28c4f63892538cd5d81ff218eee684352181d22cb1c41102ec4905ef019411e184e9f4349e8e745e7d23f954d4c941efb6e5340575484c2608e58b3bf05eb5964f2c9fcab318d0bd9e579125dc791b97c3bf421b221ff614c12d6380d0d0e43b36d28fa36b2dc8bc81db326a97b6e3e1196ffbfb2ae1b2d13a3efdc5556ea74fd15727a44b093318cdd8f4060368475c439d65377fac1ce53da963b61faa374c028a50fa68676bdac0fb03bc8fbdb36db012a1d1d5abeb8f4116d338d834dc65e457f0323209f5090a01b4b328060b551727ec5a3f577f4d0e777ba2474c2a898f085a214801b024601bf1434afe00da43139831c47f7e380bfe5e443c05182dd139fafe03ddc191aa8f70f9528e2c35788425e679e3cad8e40e24f575138486d78398218fff24a448d30796fbe431628e53538eba0e649e3d67a621982eb6a205005919104218712ad8e6cdcf6af554a5b227ae7c328751e3093160ca6331134af3c6be29eb545ec8badf9228bdfa6fa1fdb8938d411f2d8c0e93bd27f16aca70d7c624db3bc576baa6b42caedabda640cd868aa7122e4853e2c6777c7912d90c62a67483c7da39014c7f61ebdf1450820a61e3f8f3334c5251cffa9ab256c449b73d97fc64761ccd6c9bfb45243c3e8fde7d020f4ac3b7e35c319274a2f7d6d2fcd5068f494b32a81866b2c376b483a69e6aa51bd0b3007efb71b1c3a1310d58b129c31fa73b476ab24ec0faabeb9b7ceb0f68ddab808f31c724b0e043814439b2b7c332449528f6cfd7be51f40e580bacd093f8d2fd9dc47afcaeca3d033dbaf45dbba4ddc957ae2c778b3bc91cf2e607be7cfef73d9ac3ee7a74d0977ed31fb9b827468b72bfdadd5c70edab7bcc81680ba2e6bd9966095d0f97a9b9656c017d09090fbd44a9d735fd5758aab9e67d58a88c84119075522f536e1b0a6d0747fd232209f9e52015de1802a0dbdd3a0bc23c1d604b9776e82563ba415353bde145b611d823bba8b988788f55bc65e448d2c8a681dc1933f9322ae9c8cc06cd699f1a402e42e2befd6aa453e9e2d03962ff1eb2b46c3f97df877b9c34863fc9f378622d79d46e136ca5ccca9b4b7eeeb2ac83e9d0f311ca8993a461f724da622f999721996d9a968af04c004b02adb882e437ced5c0266bd20f82d95a80fd55051f704024b561c77c20b6f9358c0d19a8cef55a2e4abdd4e7cdc14a878b519c891fa122c5021e6b3c3990704a968fa82bba633adb465c0fb62b6dd04eaaf9c6d736a62d2c9c343537961f7264fdc20eed56e7b78abc1cfa2c70beaf3f38fd11e92e05a73f06901db2b7dc8412e7fd9d017ebc434fb914b2e673e98350391f78deec12fde92b19c88275b0d49dc12700d645cda81ae1fd2e541c0b18d78f330096cc7206192c861d33eba2d8e24390a65c331a9691fb1a09e1958bb4528273b3a5416130f65db9d3046b6267684c6a758dd2884857d60eef7f575593adcc511e4d1e804d995d3402997e48f9eafe4eac980fe58104b425b0ea1973a9ccf5d064375c61d863f6688a18f80776e0d05d27e1eafbb9ae3dbadb62bbd3969330c17fbb24c5d6b94728eec0ea8e77036a3cd264e47e90feee9585d67edaac6ace78d6f61872a225bb0d4e6faa726ff7bd7db224a4424bded76831d6bca03d2d33a33f63fd945636eae27dcbd5804b15db9931d70840c17b4418d7f14365231b48e9c976b74df993821736ec28ac6c113924a73c2c7d40ae9734994800633a9508562f5ea62d4b83e81610cfb82861809dfbc8566c077c389a869cf92ca3a421c84477e231f545a93f9e0c75e8711eb5c24e55926b34eed6442d318729e0214802e994f64bc703861a6e785637b9e025e8fea49f0a7abac9c12d9090a104ba05ab056025b9f5b9b67231192888cea8118695128572a59ae2a4f93308a13e7c478d8e5299dc65070766aef99cdee8eacc358d7ec109a21f359d9cf80e40761af2103617922a3725af30129f538a9a1974e76a5e6760bc03949d454cf50cb8be98dd4c75bc7801835597bbee85372f3dbdc2cc27a07b8dc346d8b6f51cadf718a68c39c4acb7e512db4411145a99c7c5a43edeca8e5fef60c0ea909a08f9f54d35373b95552189ece26b885574c13cbe38db04dec56f55e08c5bcbeaaa481ad0463df631ee53c221d65a8daa95266831b7a4aa2904587a0950512ac5c4f6e6303a054eefef0f8d11d3b01907253e74641fd8bd33fbe27025f8fd6f4719c23a67a873c6c3743ae5afb05e5f6eaedd590a0bb351c5f7511f97ffb903422d9a9218389b745bf92dcca4c3508c5f8409c5c498fba2bce4017b56f36e759d11ad87b7c8a07b4caf5793ae1d15f45ba731ba75b09d2eebd990426b6feb4a3edb6e84db263ca702a68dbf5d9f11f808d2d081da0eadae79f1d8e1c0b6872ba7ec81d0c9a6004226b4c2dedca440af41b1c578860a90d41a20fd268115bea1fafae758df3c2fa4c01e47b6a0f8c0cbbcd72b9ce72f17e02c8d568187a12416fc68e6f25da3dded9ddd94b507f1d2f34c86329933121f215707a0536fe9e4a27a0ccdf81e07c45727eb7c2623762d38c45a886ccadca7b02092ba6ac476231f9a795d4bea5997744ec6e5f5d355842c3a3ff42e3bc35f489c2ba543094956cd5c9588a62eea586f522d142d71e118bfc02a81e28a7db3992491e774e97c406319148703330263acc081a0838a833b147ace9f4b522ea4304fef1af07e34d343de8db3c1aac93c95e78642d3fb7772b28c38c9810f7c7048b9df14e95e8e4390b854e1282a5da664ddb300ce08a2ab281f55cc0121e861c5c117f513c7512a3d6171eb3e802db98d37ce16174e8af5dbff6ab03fd76745b74e823f34f69b1c8efba90c690a7eb653a0a4068878cfa145094cfe6b7288e14f20a06cec54971a700fa2a2d8822524e75aef87dbbe3164cd21aa0f79aa00740775e768bfd365706a603386574e3cd1674d51b5f8c5ea1128994fcf94ab3c66dbd6666249ec539ed963d48ffd6010c63f3ea9bedef884b72f422442481c5e587c568ebb1aa30436bd480ae22bcc73520d657d289176d5b1da756dc6bcd0a33654d3ac0cd305e74ad9bb80122059d5fbf5198fbfad3ae296db3f1aee1a5d8b32b75b2c382323a2165147c9c1fc1a418407784b6e75d3ba5b049f2a81e55c41b83bea375cdadfd727ef57f1ec2455ae00ae3cb88de845fcfca611c39c099c25697cf627eace311e0269a6aeaf8f9bfac9b9d3458ee86943c218a7ad8f408c803eba32027c14062be2341aaa8d0043e64fc7664f4ce125a98da35777d188679f3f914cadf7f8919ad78706ac2575223650f67db8a9936021e6d244126616154aeabe4b1b7f02bf9255eb7aae892a0d7ffa9bc4c2f113d6a227dbc26549bef55ef95b305e5ffd8b3f38748c68c818631f77e25b45b7bbb39880b74758bf6ac92240f8df1455ec7f6b5bb26716732a70f07d9d85a6b0852674af49f33d6e13c5def10f360d3f1411760b7dd4cf2e782485a256f801ecce070f5bc44bc40f8d895a7ea937f32d663acbb6701bcee4c9840104e3082194633eb2cb3c2dd5bfd007bd8c3137728ed23b7e16eed88ddb8c7fac0e4e22a637a64cb245b779dbde97ddcbfee936a20ff115dc3fa7e4986842a43f11c664ce9997d12272eae2b7f070ae2ce0ae25ba66b67a4a4ebc226756ed0a89f96a0e3fb3a115211a97ae4bd1e30af2ef77879ef694d129b4ad2d4780f1557bdf88dcecd21d5d6d6aa557318b2330e3895bd4f4ed97a8614105714235f7f83ad5b758bf7987c24fa229850374b14f4fb5a217bc0a18b314f3a730c4d485d11c983928ff65955d417102dd941d7fd1fbab514c461a4b30de0330429914d8d40deebbb82a90569d65bce14326413b8506b3cf300f53bafd32d8a7ceece3d28b9ac9fcf14d42c258b07b693025209e78a38b253b5604d1300f3f3cd61a7f8fc0967e6f030a0e8cb29f10926d1bf9b2eb302d965292ee85e1fc2a71d38044310bc39bde00919032f6e03369378e4228b4fd913489f0c7770417c023dff8fab9271be21fbd9afaf7796b95dbabbff18719b85d97e5f4d804027da7d20d5387ffe22862ca338b6d3fc4fa73af277d1d6853a01f7f79066f60378e7f6ce11b2cd4f7196fb2796e6de6950f14a16571e6003befaa143347118180d8344837cf37d8830e76c6cc6db33b8fed24f9b2b304019e1545bed24aee2592ee11dfa41b872f2c1e6a8db819620bdbd151c45525576dcd8a5a11eb7fe0ecb6a095126e7ffbed191f27c746bfa664e209fb2578e5d729854b873f56267a5a6935749c5e08bea7810e285f57950553f8de3b45dd61d2193d30ca338f2931c4742fae58d4d6346f1ca7c2a7499c36eb89f6c21de70ee0896c553f653d0500a803b76a0f38d5351a9dbff65e8f9e5a3abde57629b912e76ce83f31bc66f11644df52203b819692cdbc79a6277c6281b673cd6ab3561bdb7d68f886c6a336b4ffa7dab6fc400791f9d02f2e386f06689882daeaa4afa826bfaae607d48ed998221068f3506fa9a2dcebaa081e3505a1ad30cb9826c70e4da0768fd82d3cff9342959a3f846c0a7b9504db1b183a025e9a9ef651d8a66526740229783c3a18d9f1ca28e673bc2bf3a45b124a3b1b1ca08310534c8a213bb063aa49859f21f7b0d05f54b4242d8c600377870e8a5e1b11c57183a23dfd516d0c3f91e86e6bb8d7c2437abb08dc7e2086d88fbf1dcf1288149d3a25f699ddc971fd87cd3f550b2cdb32ad1e8b0d7fee1d08ba458b157dd0315f129ce9e89899c2270b9c729fd7b850695b425cca44aa11d2a3af80498652c75a0a1bd740c1f430f3e0fe74f069f1c36b0a0edd0a5b9e6488902da0274b91414f970a92ac9a2e339cf6dc6df9677e0b65bb5a8989381f1573b35ef4383b4d1bc8a0eb8a32c9ca5caa5f6eda029826378c96787c7fa9fc412b57f9be056966b42bc8b89016f9b6c2e5b808b3aaee37d73b7fcb8b5c7505b47a5820f396884661de606565a47afd408e216f516ccdeddc79f11f2d88899ed8e0851737ee505db01d3375ca41bed3eb95077fb442c5f28cbab16436879c144c7a1f5e046e5861ef096e69f30e0eeedc4ed940c415e72a9aba0cd3e3423d21fb293eb2eb6a9d7fb817b71f84e2b5032b84f1526d0becc94886ecf70ed8b1ba86c34a48a0563ad7b76164b6ff53a34a75042d59756c341d621850724536fb0f5b0d704e373501e3dbe7d77ee84cbbe7e02cb6296542f4b728193347904fde8a31339e422e935275e8af2113f05a899de2a177e9df2048a7640e26ccdededde75af63913bd6db29f41f4bc55772cd704c8156a1a2c7743e7a490a94708c8af20af1704aff1bb6681472d956fbf4d3762a9a84741743accfae3a64e8ab826845a3743cc5cb02de8b6cc48a19a72012df438cec57bc64254680c92e7a18363b40f42737aa048d421f6bd88277d1909765690bc2dc42ac05d1c5c914aa4572100d0d22d8175eae5114f866836e787fadc41d8a8349c06a2d4382ba6db3af49b71c4be3c51af731643ebde80611002f053d5234f91bf0dfd39134fa4d1e06afdca05eefb63a4459e5d5feee130461411d1733d58c7e46cdef56b8043e4dc2809e105ff334efc97d86f5038f7400a756b01904fa66d5d2683750b65c3af20d01f3a6efe9e125a73fce1f0fa22b55bf8c30120de43538f2d935e1a4027094f9f347e373ef9abeef0afab7e6dbb76397ba6c52961bc3f1d1a9cf8e589b031103de290954b8d80dd7fd7784edf9f2208b807d2ef5b584fec1d1928424a81317ec1c99a051dbf95baa793632cb8c21952388017fa8a0279357515a0e8b7210a9e0d4eff2eb61b7659be8a5d3a41e1661258d81238583a8955f7620207e8d76a0edebe08ed450e0dc5a82905ae5b72034ef098e7bf20bf11fa14056cf2f0ef327c78d25c8731a9de48219db1f9604e25528a1c9ec36b31701708bb9d772defa3fdff1e3387d2de895d13bd95e479cff1dbf9e9c5ed451503c0fe76e14abcae839cc5db73794119d7d332f1eb7882e257a372abfc0f4115487e34b17094e2dc83eff9d866500c47b1d9e959baff195b46d49042182e69287cd7511b55cf3590ccaca6e03267246c267bac16d2eba13058ccfe9f619a94f6ead45d37657f529972db98fc21fd7918a475f06ed00e335188105f6de7e899a0af96b2dea69a14c9b09337b59be3e5fef17dc8a7a54ee293988169e1eafcebfa1370d7baba3f83c19d775fcd3b0ce781628136e0640287e11f5fb1ff62d7621fc239c00633c00ffef62da1d2169c784a34064427c3a7f935cacab7ee67d005ea12bec2bc30ea206bd496b29cc9f987cc217672c1aa0ec4189a7966590a74dd4c0f113d446161dea1081cbb573cf0542edd9752e36326d714774778d83ba89166fcd1fa3a1f705c2d0d26cf9f5b75a04cca7076b1c9289a935b4707cef46291ea14994133078d758f65516de36daaf671415db6780cb6ed9a09e7bbba7e0f552d6a3c0ab3701138c43fcba8eb9003fa017adf09b72c796da8e7926db56a22ab7b24ee1607322f180e70aa07904b3c7f3c36b55d2ead800701a25a3e10ca8a0cae271124c3b0da28e8697d300ecc203533a40bd2bbf30fac37d9325fc8e930bf78266121b92171e00900df3526dc12bfdbc90edc84e6876a60648928def0a4697ec3cd4e6853b860f4fae4126b8888b5fa8b3f7673efdf70d96df7cf4fe35aeeb3a36e2599d9714bdae0b0f5063b026a35b77437e64ce089d3a8476a21640928d124a90507dec9c633a8e6d728d196d9a729c699969a0422eec79ac5e99deac3336a3fe5c8e229d2c7ff1383ad867ff007757de10b19ae7a86c94d6cd44c3b1d93b20ecd82cc2ddc594c56ce7c180833f3bd06b52d5c90aa0d8bf75991929ea9c45d2586fd97aa2fa3dedca19de0f892565a47c53629d487e807862d0304ce1dff982f847f39d6a12c420d21bd4057e4b4b6336f17f6a0f40394eab5a4eee20871628753ec0a041176a6a0426d612b30e2c136449ede877fe716ac39a61d4fd60e37581cfea9e9f6517ab7d547a307059f1ab305605b4adcc010301966e46740a784abba528d5d927a316da487b1919a92899b15684cde7a9cfe96b3e8b9314e3413f5ef06f27239ffcb46cb2ebcc6104933d41ce6c17f1892cfbdbb7b58bffe1761dc6edfc9a1c5c46dfc536d50c93d3b46ba924badb40b6f5b167b24903f35d2a64c1536cd8f5c8dcc7897410e0decc19ed1d318645a3095c932234c455661a89c6b37f5ab01da72af0961a6115c56695ff063ae6e571c87abf2b6c56ddb62b5aaa88984a93826220b27c4d86b78782a4d19b330b2f5c17bf670c69817d648442aa750c1418635c1db841d5fc9caf4039094d4720fbbf527f5166cc951a5e3d71158d14b878ae8f1c827acda5d9a031a63effedf90592c80755f2d57b1c5eeb4a6e20284c12f53000e3afd1614a3f54127e1527e76ed696d0e3ce5f99f2569362ebf28999e9e82bea8315e0f50fa394dbc94b96dd39a9b0867a1ea6048cef0f8ff73b592d216ea0a95d906c3c09ddbc91936192c8cfd64b1032f6f373df0ffa33b079d0d7853bc167420d5eba61cb09c046946efa7c0439bb339c8f83657d66e569139c04040bb6e85527f02c02fed58fbee9889eef68e8513c1680fc9a870a6629cc72e92f5a63e78e1eb38a1aab0c6bcb4ae791be141dea1d0806c080c4999f2b055a43bdba394d371e243f9db35629b26d6d37e0ca90de3de2e1dc1cdd6e9d5cd03f3e08b36e4972d3971dc2b733ffac90f5b331690a8b1460c11cf669d1c1e1d2d42d8e2e4195b05371a5843b715a6604d67df1e0a810b2566e099ddf6a668ef7cff1707e2b853b53dfb622dbb11380869d5245bf649e37d39802218bbcd86ff1053bf6e924e1adab99c49f8ff6e00e6c1075b5450a785889567e979ea82b438efe6908cf54e0773259e442035cc11a9cb08cac122e3ce191b1f7994d60a7fcd8f16ab752d90e5bdf03dd17f67d2e1f5a5a9ffc59deb72d79e05fc3f948b9400c57c6b2a18356f342c7766db2323c90e0bf6457ad12edb09d0120376faa25eb546f18d1c0abdd284d9bde579190734fcbcda2d7541ccf6ede73da1a3138e58b6476458eed7df1bb63e7e32b8f6f22365242597637999e8199262415d6c788e2d3620b878e63bbbfc8433405f0d80c925301429753abbc96fa7a5fd474c63568556005feb369131c51917e45f416eaa22eef927bc77643709990bb8a203f4ec7b76dd05928c75b0e6be1930d9d56db1d6e5cfdcd6928b06468171c6c75849f5db8c8c3a210e4f3a574e831c4800d16a9424c9e17f20671dcf200573135cf82bda5119b071d857b4362f41f95af955065cd1ff24ab15038d5ebaac699f363b32ed250835b49fcd021b5a1acf1a7b11b603a70e53adae78a600c5da8e3d211be2ad64737942d816fc9c1c867095bea371fab21cc205a0f202442342054501cd6e1a2b83a4bde12959d465d295541f9211bf1f85e1641ba4dda2dd504b720e28bb4648ccf3f5d85614f523a130f7fb08540183edf9eba2febd0f17fc6d81cd359ba3504f3d2999cf2677a1441b818130370c135271c9605ca67505fde083e873c3ea05d8c8a01575bc1610c4793378fb5fe4c7bbd575fb323951a2d349caa08933ef194f991a0c9360c8f9b74257e8c3934d585f8fc06402064ee85d16ed2a254ee5a2f5236d22f814c93d50ebb6cc080cdf8e1de1b1bcce87145860b5a9bc84133e7360b6a8110545880375ae4d5faa17b75eab7a88ffa8e6ed38a04c29de315293ad22244f99a1c5caf7f59f3625cf562920930fb167a70a0342e090b711ee89e24229d7e459de559d7479c7e28293a9b5acd8a510a31a461ecddd41e087cd994064fe7f522b658a0735b55e24aa937b2a7589c49e2cd6c9fb3a03be81dcee6c301f0a82c80a42c5b7a0436bcb2c94629fcfa2a673fbea25b17e80fdab15c3514fc35a7ca8dd6d00463c83871d16e76f32df9e89482ce852c67875c69945079277284a0175f9a48ec7c4f9ba775ab88f9e0d06d9cf5f36cbaf329348f033325ce196272831a9252b69570c4caaf4ddb99d18075ae830359439de268485714ea9054eb6e20ba4d2bd9ef9ab888c6736a21ef9f33e001578518b2ae7717be2bb027723082235c2c742189180c553b1b8059464db7a907a3af211d06d57e09029802c329ab6723e7092eb1e2f7e8dedb4ff6bb423465577ff655e4d290898a79c4c47a2b57e9a767e0f3ef0253bcf540b228979484d5d663dc43f769f944fe44a6c36203624df7cb4b383cbab7906c726f0ddce75d9c171c338d4d5f7e408a9f418a5c2ad85725ba781982e808e81c200d3b762984c36ff37167554f9512c9576f57b4b31b736c653886796ee18921e1df3a3310bb35a21b3f1cb2f7cbd4e67f6a9d43e4b72fdee6aec1cc8334003b7934078df356441710c3894a3984a3cd541483639b02bba3cbe4e28e3b8b1c44b6c19344c11422a5f7b2a1a7dd0f1f622e3864aff7a570cefab65602b1d870b6d73742cc1b5069e846dde7a23903eecf8ac14e97e14f46b854225caf96d3d23eb2ae6d82ebc5942c256af764079f39e6864683c265105cf4ad7287ca2121df6101e8e0bbecd083e455effdb311232c845581fa41096374cf076f3feb8b62743099d75c9e0475fbb2a8ed3c928ab47b158853de92817a746028373f12a563360c6aa716cb669d2403324c882c2744d81e3ab60e717a29e628f4281800303e0c7c887936d9d5a80931ceebcc185b897eda718a9c7953ae78452bceaddb02439f10ab7e5aa088be1b42b17b86e44cb9a9e447954e9dffba7d2e6c85b52826dfe158d09310537e6daf2d054e46f35d191bf8a7132063704d6b089e533d0e6c8083e6fe7d5f694bc77bb5d80932ad5fee99babc39c0fa36505b84240d23ed39b27d6251073f5ba97e1dcee0bd85fdcf926c9958a2111f45868c507fd09c467e488ab1c0b41c2b53919497ce050c21b7afe1b5ed2aa9c8f7f7e118379eaff20c74a9285e8857c0f8abc5e53baaa7c400adc9e1e6f852b0d5f25e173ab4b7a6db089dd1ef47c51153c6f7587061ce736a6ffaab736d8ca1abb0ae340a35e4cbd8136ebf200c2e20a36c5706811d09576163cc7c199d0a9df0e5a0b85e8dbba5561be672b770cfc025cb75b08ca2774269a59cc29b7831cb9bcaa58a1bfd92c8440a154f849ad93746d7c58f16f64814e7d14c2e0d359c3ed6ab5402c0a215e0b1d3ce1dfa6befa299e120abc196436368a7c1ff1ba99a8632b8e747af6ac4c54f5128a4a2adac33ed7240c0ee51417dc22f6462eb45ae115483bb44f44d72e7f3bcfd46e1a31b3af19547bcfefab0b5a295a2d90b0a0e6030b1d423635ec7fd4d6a6ebfb5873dff4a9639c43b3e11046a256cbd644d2606545456623a38bf124f135ddf709c876f17cd7dcdaa4779f26d39b8c6208d127fd5cd0d70a5932ad8fa1ef1658d286195284a60c647fc14dcf8fafeabef6e27cfdf68e6dfc2da2a4e9dc716e41e6ca8e38708914e6e129e7ba3f2bbcd2e0b6af6fe7e742810dbb7b99eeafab088cb2c5007e4a6ff706ce8c9e15bf1f2ca2d173398ad6cf45ce31eeb6f9991ee6ec9333eebb49645a1b6592cdd10a515eda51c1438882903a8e17ed44838139e1317f438f7cd3ec749706af3f5ac603fc4ec9b5ba03e2999875e4a70b31479c491f61d7e6798dc5e5d3529298635af75fe636cb1bfe08d80ff85caf71ce3039fa8664e58a13097a2dc54b7afbf31a3b6c22c9825fd459d99e6c79969e77fb4e708149c49a4b5f5fc337ecaafbf9b52053e20df82812042fb3dfc2860b5a5d42956d80f068674625514962c57317e548615c3337168708ba31b623a38ea076d264ea3243e8338b04888913ae7196346ac4f253b68035e29b80a4266879865cf48c8064b396fcf92f1478c6513a8f14a748680d171987df256037799e258b60d2b7f4269408c411f418d2db4af203a85b2740e84bc46a261f65ba391f4c2877e2ad69858d8165355e7ead441af4238a06e300217fefab01456566163e482ff3c0c0dea63cc0da594cbe7f6b772bc054850a4c600a69d574dff2951f50b45bba8b1930fcb0801321f156187db668c0faf1b1aa5eadfe4277255ae8084fef1f4e4dc6f354445f1f29fc3f44d00f36662083ee8be336674588e36064b20dff4e65705e77b787f8a2f9fd7f68691b77bcb0e6a94d56f24355acd2bef782b0786692d3cde7f8345435c110bb3418b1c341c7e44fdb4e3a90e83032a961cdefc3327d520a20475d02a70c719fd82ff2fc55898205d330a6c6c4a26e2135ec4b9249481e508ded3ee6f4bfb99515195d4aefaa2cc37a314d938f7d0a1f22f3d41c908a963206617bfea1ec7640976044082b9656e8543623a382abec35fadfd86fdfd8840da3d2b3a33c4ae8e61ed9bc9897dae6facb20b67ed6253b0eab58aa5ce6d9e2168d4f28d0e9d12f059b5bc082c39ce7a1ca95b467278166ef334c16461c92cf13935c0473de0bb3dace95b4324671b879c484f22ee022fc22a655110b3c9bb32d0e8dc4ef43056b15de1832cead46df59d1d19ca93ddeee0c54a3e9e2e9e9567d44805af8afdf341ad50d1f2e231a2bc2688a284513c45ae4791602550a14a832984ea322669876c6048f79e35951aa624a203d39c4b498e01f4e1a3d0c82d70e6b3b1ce7073688cb0493ac25ccd3b9a3be10b0304f4b4c5ad5ac315147cd5a36cce71daa0a8d4c35a8cf574cfd5eefc60a2bd916f26666ac5dd58dbd3589dc30cfab71c5ee36a74940214a55b40201ad685ce5d3d09e0e373f8c86f3fb32359ebbc05a54d91ae47e69c9ab40bb942a253022baa9f79c7fb49488e6f0d4ccc9617cc4e764e7a8ac72fce1b68b10cca3678de71f0e997677e125dfbee36cc3f2c06c87c01b141c886555642257043b006cc4f7383b5802d6b6a45b2205713e62ae208eb6ff3b799d95be84d81e071f27aeb56b80108e82cb5feb62a4ce94a70fa65b9ebbdcc9a111ef0568c1fa7dc10f3aa90fb97e506999391eb3014dffd525d2ee341a59090a894a290e5df98eb9091451ca913f92e4f62298e620d49294185b9bba6573603bac852db535dc6327b18e96666c53b634c120b5eb4a40b58b937847547098cfe0889906c62bc0889ded530a58833c787322a627fef55da607902f714434b615c3570f3b2b5c9e9bc4aa061839a9c3a16c756b8cb2d32f34a0580154d3136b2584afdaa62816801fa55e3781ddb495ec7758b9ed65fb6543323ac213497641d1f333cc99d0f51225a17bc60a0bdb1ee4dcbb229c5c7f167c95e48a5b474bd2e0240fe095f3e1ff06eae25db0d666ab911faee24897efc581f875093fbb70e49d4a5a218a4feb0b8c9ba35f67c32ec75d5586a1b8befbd97172e7f73c8c5773849fa6e96b2d6d4aaa8e1681bd92f240455e1b79b505a033bae2de2c970f7a3b75ebb7763395e48c4f94cff0b929fd6fa34b1c3563652e63fba1e7f2c9c19d57189c918ecfdc60611d529695ce77ad1af0f8b53fce74083df87e007b93aedbd4bcbe7fd7c3b4ee7156927c3407ae9ee23075517f7d9ddff74da169fdcfba62cfde63ebbdfd8cc8b8015fd62bc98cce77c069a496aabbce1ad79a7ac9f976d85459cd9f5c11e299f7619e373864535f6f6c806e01201beb4fe6a3fc2e790e00c45372a1ca9a7e4631ecc16a33558eb4778cfee4bee1b9b01965dcd8f61b38e02c5c483ae74d88d923acf59dc8431e84030a9c6cac8286094479c03e804747c8b78ec9e17b14e4b88f30c6f16c367db8dec56a8461508eb122a0edad46487a36c80c916153d5857c5279ba22fc07fa7060e1cd4c6b01771e3e06b0bbc3d756f95bb18ebaf03b67fbbddcf3fdac83ee26047c32a70735af962ccd49693f3ac417aaebb02c5cca1a4ecb0eb1899836257b28f38b115b133df6b9a5c3f26f2a2ee3e0bdea31d664d3c5954c000ccc09385c3f25c14590bcf522cf1fe0c6821cb3fb12403f917a7d7d03e84a252cc8f391d322924205b3737d54c2ea4c8dadfd86f13d6df96df10027f2601c86b192b6a8763225f48fc9810c266748784023589b0b6a92cec350dc87a436eeb2b958d975e47ea1121add5e6c2ca805b10ea2d60a665488bd4ca0d5786212db179d0c2bdf0e994d6e6cec0fe5697030186b7952eea9e7b310b250ecd7da390d1bc6744c9bfd6199af5a343a8521f747ec0507ce9889f4c4bb01a3a91cd51017e626ff6a3024b49f34fd0221e5ca09b2edd0f3d59813d0aedc8d9ba10f7f8eccf5cf094d72438456f1c6ac31b714950c8c087f7694a923ffdba80ec2711989b51a074a4fc44162872259a517361911af79158ac734b75e5b5d4467e86459f43daa6a3373db486c3b558ccea184eddbeb93a1470a462c6583bc4343feb507ef707ecee1b0b7bc6a0034870ad493177e5a0ea3266d35d88df4e1f6d992a0483469b724e3fc9d3f0ac82ab49d0af55d45a559617766783cbc651dd04fe90c607abd93f0d6190ab113bd4da5023a7da2ba2827324eca80c6863a5db6bc35810f21fe5daa55f672508464754239c0f335dd45f7edf78c9a4887ff358653899f08077a8d1aeb53f19391c9c3b04d06da8260596f426402aec04ff117890ed4a876b4d9136d7f7c69111df2dd56c7d73d5aba830da75eaebf98bc403c48077bb8c4faed11cf365a64b5980da0c2d876c294cb3997638eaa0d39e2110a8662b11c76fce4c1f18e1193a5527adef1b037768c96d60d330670ef85a5b09f447984d96c269a3d9c9d8df05ba27222f583edf2abe37af42eb8144d6140ea25cc8be936b50a70d6e360164876ef4d6a318d9725a64b2e1d442e1fa54c27920f88149554be299d10183e4ae4d1eb89bc40c5c20b7ab0da2e0f5bb0a4a3501d6c4ed47705000b82e3c28a1141b9c7d27314de9c256a07151834ad0130426668021dc2d352940e587cd5e67d5681412232ddcea8b1e21be441bc3fbd5c30d8c21527d19c395e3e66ee39b87e2dd0f0bda1cb6e0164ae61a8ccce2648d3cd1cbe900faa126ebc65df5b51d24c3d9459aa40a72b0d5ebd71191fb0169ab173b2288b79bb02d969f9f50fb87d723f03e19082372182e64b42dd4d532c09a7146c392678526f1918a096f7390e2f467c7769f3ca42853ec065778c93589d95a39dcc1e3fb50abefeaa5965dbbb21aba31f01749d2e29f0f6e69170a7e2f98588f8e65653e6e9055983f860028d49c1769c0f1e58264fa2e32bb900e465d38e3b36dd708efc4047e5d3cdb236da0efe0d3ae3fcd693c91fa2b911f11b46b7be68c09a74d0b10bab6c6d8af94853c6d2d06a8536568cd16fdfab80c930e03ec44d54fe8977441f460409f7ea5ccb7524844ca21311ee178118cc3bbd600dd125147ce59af08dd7371853459a90a5e9e2fd58f265d09ccf4e6ef99a961efda5255971f10404a6e4af25dd3697c918efc152501c83637c5528181662f7f5ce2dc0d3e0df35c99da2b81ad1188f968aa88e1b7187daf845305b75c0c82c15c31082a1330a0f5fb91a5d0d1c862818beb87adebc281dd6ef2e3b624a773781b1d80cfb719366576e00225513b627a32376c488b23817b73503a7d1acdf13c6f6c2417d15022e7f3e18bd9d8d1eece323d5db5300b6b6701c9ef5f838d18687ec02d8c12aa4b1bbfda3ad98b093a6869763eaa77c69c23f9fb9c855f65f79b73bd23b118c8d9868af6f928a16d00bb37d4a81200b1a055bda47f6870a4d23842e5767a13cc690f09b0f95b52b6fc3a1033978b40360b47d3125f5a8ffcc0e77a561ccf4081b7841663b61b1a67ede112e294e9282a676713e69dfe5335021230e15d0d378da11370cbd1a742861fabb9d115b194a3b6c869f0e7cc0a3e5169ea232d84ff6ef6d1fc71fb4fc4476a19953b409f8dc2c8a0265f258ffb17c15eada2acfa0057a737a64ac1fa73c568b218d5d7205e0c88c8de8d9ee6ff5269aa0b0a4e26ba21d59fc00448a1811e887d77df2ad97347703fdc2486c6691644c64b10d9364cffaacb03d098d24698318890a6d91e12018ea81e6571f639f024739ca6ea4ad591215f1398682e659af165eb40117bd426c5c7ebc3a091a6e49c32596c00f69a8c946297f8faea34a0fda8c4a25a2f015e9f07f0375d88f177f5cd5e96f0c4041e8cc1e46b09528379e46a2a566facab028ef7eed9181e8fac29cc6fbcc2b066ae3acc35766542a17485c9286a9d19a7f85ec803bb736a9c2fe901a93e3aaa9bbdf6b772cf62abc14ba465066b24d048b89ed17112c0d8a52d3ffd0535071770e9671a8acdf414a8ef90e590759de0fa40c50c052523a8bd896b98f51a7f51dc6635725991d016a789637079b7f08c9edb56960288fa6ee270da6dfea8f2220f78c39e25b8d3dfee4e3e35c1ee92c9bed69432a9a1bf90b583eb5b738e324d48a9f462a39365b02bffdfe335bac5c492a6f5c741893dcb8110670538fd980583def2e78f2a875f74289331fecc5d5ad0125fddbfa88faf911715539539fa74f07bbb39d983ccd6888a2f573657229f4e5c0825f2c1091ed613e7ef1da03236423389c856fe8792603374939c3531587884fdee4239dcd1dcc18ac9a2d3a4dbc43f3de811b70625092f7aa64dbaf3808e2078b008c801d3165f09943705df684a1b99511e40dbb4d4e46054912018c7ba62a58566f8c5046f1b4c464788cad6e4f5709f022ada79d87b9ee8b6fdb30ef242fcabbc0cfe9730b7fb9cb8243d92707afed3b0219a42bbe08fad01412ceca6f1f903a934e0943d87369322d97ffceea922d00ea5fff0d346fd76a594bf2c4cfef59597313f57955905f010ff62e8b0d7b4df0e909af9973e4917d331984da7dbc20ae3ccd20f2bf44cba5803c4205110f42b580462e759bbe9e9d4791a01f3abfa3085c11f400c2837ba7c24fddf7e75cf467f6da9d757a29b4a3be6bdaed17e2b7a57fb8341d7b2b30222e99357985801a2cea3fffb19bd7a1b19221ef00f6b917ee34de6bf8168be6394409f2c151ee8199f6f07182129c940505e1a15372eb075c3048b386f5f8df55a7fcaf8c0339f6640ef3e09e59eba24ee32c99fef3be9be92ef9881d718a793dca98ec5c5a319aa71a1193a232a0932989fbfc633671e5b6ecbec417ddf255c14bf3796860ee7e86916c72d7d2d725d08fda9f3518f8c72052cf373b4d61a3456f58fde4915db8870897ef966cb7b9999f17d46bffa4ccd394663e8b8731840231b9706b47f06d805e52dc6650e0c5fe4ba9c12ba49575b503edfc3545b696e0e8e80ec11a650869bf3f8529e6a6c2d6b5e155bbc2a71adb1dbb0fbd6dd5debb0794e5f73ea8627ddbe0b6fb3724d045793d65fbe3a34793ac413dc598b67aaae50c5a4954ae7b4885fe182f4d93fe84377080a49bb351b1ca1c086599a6fe4cab11ef49d540208d7bf4606dc1de1641d60f6805808670f4dcfb66d9a1af2920c2bd7fba308506374120f07de70ab030b5de9970ef8f878897d94d75f2eedf5f28c2e5b0c71faea0800a6a886c0f1d86c38145a358e679de3592761f2c3a00fbabf7627b3fb2f2451cd699de8f011f7e70c3a8791add666e430427b76897027af4c1968e6ddc67ec6fbfdb15ba750f982bf081205b193e33b204ee71215f749950d509c300d1ac8d72695428b3e237cd2f038a0811663c5013f803e677b7ec419b4e931f396cfb7b11f87c0d4bde5a13537650dcba53ce385dd166b52ce9faa581b170fd160a76197896632f6ed1b8d22b432e609bd3bb7b0be832d093ec05371952a0be99b88c3ca782fb00ce565e88256d5f02dadd4def3ecf2997cd67fda2aa76675e074c33e05d616eae2a34161205c329f2050d39cca0c30971013f39ea8e3758bbdcae3168088f89f8f9e8c2721e4e3a0c7424256ca4e8660a2c2adc32edae90392f680f28ca86027644a797194a4284fd76c1d154363d906dff53aaff6472b85f5ed2d5fbe3cb2ea2a0b56f80e155b4175c09d0a7011e0ece9f19a8d13009a2f504a0c4da043fce7b519147857a0e3bcaa5bff0438541b4a5361c5cd663b3710f5fe8b90000ca42ebd3df63323afb93aa775defb7d1edfaa5e3dfba2a44219ad0cc89060c71d2a660d75306de29d6fead2c1aa890129846e9929e98368a4137e4f9c8dd95f35f54806e28af19cef752fb1323c6ccf6ba448c13b38aa5969737290ab257cb0133d21699b4b8ade4fba1f93464706422516bffa6930985ff86a6717b489ada324e5547737c48bb33507051a484add919033b157197d8fe69ccdb3cbb81733403e55d6602ce148b53991df892c901bf6addfcbad86f91634e1069e2e62baba51fa24b10260029b2671efe0ebf9100e55bea213bd03a879cb2ecee525942454a16cbc81f5803560206054ef00df4aa984542b5fa6429c47e266f33996024df4bd37e3faeb02a4f8cd543d270467aa021b1e7bdbb129aed2e464c5becdce7cf25442956061d8a7cab93df6553d73bbd2cec5088765e93fb20a9dff8cbe77db8a1a8f5a0d984383be294d407d63e427f867912ab7eb4e3f42fb48e03209a7a15c42f9cdeee75829c08bfb2156cf1d7cf63f9d2f91c98ccf2282d4042ed7a403ed87d7f4065d0cde43f23a67c97dccc47352d7a792e5f3b5b3537cee76857c7325c7c787eba5e4b5bba0eda075e29b5cb7dd1b7d0ade56b99ee1509df21e1c12d02425534452ad2622a8f1822e8ac2ab329315aa9baf11a14e3f0f84ffa6f8051dc7ea635161c2eb749353587a8d902ef557c38dbeabef6571168233ed3301f5221e05cc6320cf7932247ae513d369d33795c5143ebf69747bab5c8082d9ea0e55bc53675f591a1fe31e5d786822d6a3d118d533ba08f79422f2c19276631fec14bfdd303fd1b9b68f2719171b0691b7c385057927bf692ce3b1e942f5dfd8041fc7fa659116478642ae72b5847ec3a3ad54b5cb4c68920b7cba956220fa33ab188172ebf69fef768feb191a2c84d1f356644dcd455fa3f2702849178c2443420abed426a43afa5b0aedc1a4535a65bc291a32af01ab0e4286b97335c1936ce3df1b8cc4e5c81b62cdb15c766cb1a204b31288bcc424d80f4a3103a1bc089dc2e93d6db196503514f4560e959b99ab942762ae48a6ee95fd8bcd0c146d6b19695a95c4e4a959559b2154a9853e45e1b3da64902d113a99b8dbca80503a35f94dcbb92476a39c1601f8c7c57c619b8a84c61f3187465ef90212f919ae7aab936ab95177e01e01b644a4d4c5b9489acaf50b3112e4d93e7b81cc5ffb29fbe96928038b124248ec7904510c59d6e98910b86a5058b431028f4fe6f2ad997dbd576d6e23d5df63df4456afed50d56ffe6b3bc85fcf5b0918de8705577067354e159a21018b2f43666d2b7670d883b9aa6e82b10b30edf28f23850fb60a4a4b9a5306295b1c34d3553545dca16050d802867fd3fb483fcfbf489cafa398be5cc0fde4f6714904905a7a502051d41294aef6c57e93edbe573a0076d511fba6f8196982dcd7f4ea0cd7793803cce461e8cbe3922b42cc1a961559fb3455e45325267e7d93493eae6c12c2214aab81f982010c96f2638ea86c8104fec339b06dda4324f4b816f030ebb6aac73eafcd664461266d12b2e32c0cae47623d277aa3853c7a9a4a1a01d055a0ee272bac22a6c61a09786d435b827f02d495a15523c4869ea55b2d432d948cfa4081e486f69fd1fd0387091d2c751fa3ff8bb2113be9b1e74272aaace68d07b0f7aa3d41b379e5cc18e890524f0c1c48184d7711fba7d07fc0dded4621784e2825b59016d47fb45ffb82d1b68d62fa63ca63bcd8c9d01f832eb9860fbb0c7f56bb9139a8d906a59503073d1c6324119ad618902df521ce5c4d3fe9d9824bcc1792401a3ae70052187ba96a25d9c10c858f7ac59c96768331e536eea71f53fbe16a9918ff1a2e0aeef09594a5bb656bcdd9a2740ed466d519b01951925a51e5c14b589b75f3bd50dc7cfd1791c8cd0190a88b766aee02d22c618733418d7ef7a9cb8112d453f0599a1ca5f67dbd3176143007eb4cd04e7a5a927d97f4360eb4102a8e6d85f9c492d394ee57b46481c5d3481eb7ca0e684116a35ce61cfa7c30df4b0ba1b5741019fa7f9a05cf0364bfcebc2c00468ecc91d1d1f86c8384aa97aff78e28eef55d3fe974ededebcd8d87347990b2523d0c46461ad6d80224bca45bebe37ec282dd0c586f75a16c3b321559dea5fbaa974c3091a234c0cf09db2adba455a58c633ebb1be467d8466994b3fba718cf33e368941cc1c21b517e7f8f72f8dfa239dcbd393a2b74ece4e1f882dd274665115926ac5ae5a0c58887204c31ced0fe2582e2aacc29f15a967186f6a7cc8ab7cbace72250ede2fe0bc4cd6ec0a01b450ac154e5b165804690e8f556232fda0683a38799eeb1e1eb8b7c6f188197378af76005f310ed9bf47dec4a3dbd1fee5534ad86243fd47e14ee2d27fffa55e2e1631f5b93abbb0750a13b321c5f6eaee90db283cd5c15f4e4f40d91ec9ada8ae446ad70b90088ca6783030cb5946630cfd3850c103fc3e62d784c753ec106792f46a4840b3f2225ec342d1ba1023ad25654b32e5d54043fa12d13ce6520aaffe4f1449d6307cffab41ec1cccc2cd38390ec91d599ec0bb25a0186e5686b2b282811100a50ff47403a62c48cf48cca43d61cd7ee9d73810552fe45b560542850a4fe8cdd94334c521cca31282df97734412d1683b67ba4d1ecc6389ffbdaa6220515cfb1a74aea879b4af04d5f5a5a7232e2df6b2398f7ee6a9d960dfaeab12f7c2b8c0a3387eeef1f12e95ac6b24f02ca4074159b077ccb74fc8086b34a7b263e22d66f969a1eecb1299f3f727457c3736338c6c42ec89a97bfa3458fd95c5f057fc9ec63472d4880a5eaf7c527d94c555e623abde282b3c3dba27c8d1e53f48d19c3f5e1d38f7d5d65b9bff861a907e1338dfe95830d74cda756f1be26cb1f18d8eed98a4c9f103e65f7e9950b479d4ad926d8d1e666b7ebb418cfc7b3ddfaeb7b41cc8d96af56be9d0001fef60a0e074beab6ea11913a3a37a32662ba51fdcf7d2f404d5206809b743ea2e5c6435c53b1d71ecdc403523cfe44c6dd3000d390fab2cee08ddb7337bdd258d22478bfad945cb659d4f5f552fd6bca992d733381af72189147cee719497295a14749c058229ea8e454877b4664c8848c55da69f7061c225fc0761f6908d1c301caaf72dc8017d8b7941648c4478a1ebf9aae24c93442787c9e00ec77ba4168f6d08c418334fe718de6496bdcd97ba8d14a9ff5d7625400cedff6d6342e6b225782c963dd931e4f183c98538232fa21736da2a380ed7cbc719cabdeb712356c50cb7e203d4c22b37c905ac00ea80e5eea7242122ab07bf03299e5cdb9574eeee276df7c39f67267d222b0abbdb72a949132830abd61cd0516aabd03191eef4d5e94decb2dba2ae3a780bf252e7e48d85439f8a22801b245d1e4d5735a38b869ee2dccdcb904c52d7a601e02e5bf71ac3568e65ddb51e4ff50a354c2203bd2150c4f62333f4b816e414c6ac7cb81ef5bcae28a554c6814fd30564da2b71dae89095bfcc866e0a9a6e41b5c88ac31a4d6bd4de1f77246772c442781088c6a09dc87b3f2539ad830e9c13fe02cb75e52514b5d83e44d88fd53126ca157b1ff171cffae54f789fe547e27dbfd380202d205c6b37b785c20032b57e87d665d5ff5d03ddf7a8aa7d740c6dbae964e0457760c1310267525248aaf7fe0c8236a90bfeadfa72b5dabb8d55996d3497e1944266e2dcc76f8b0a852b62dfc5aa6d68efd7ad9244c7a10ea14dd844403fb0253e93ca0ab43ae0caf61aeb9f820ac424c33dcf36057f095dcd832c63902eb6239ebb60efa67bbc920c950ad2b1de57640c54a49dc1594bd6dd045f15260e042f13736aef9dd647ddcc27d48d526ebdb898d53ca624f07503cee668d9163fa8d61b2f5c8a127de40d270d8fb425172ff9dc4e6bb32718ad80cbe55982325d0959607823aada0fb2f30d4caeec12411158a1f5031736245253e526300fe560c8c8aa003f6f893beec9ecd7b7c6113fb72c345cf9afa0041ca4dbbc42c4732110c7ed46c81322ed21c8e38e9b285d32a1188000e356500409d6c3b167491d81290e0ddfd76d6a719e89073c8d4498ac510cfc53b957b25033b23a844a4e5b1d5f8c8537e017f40617dcae707d9b2eff231c9802822e9174a8106ac8e7e9d91a509fe29026582e51c8c6a61cceab1d6015af1b9529742440f147cda13340eac29eb8e790e77e19de0ca394b8de7f6c27315ad807f855c8812da8ec773f202a770a9fb9378208615e871361f83e2927675117db81ccff1a3c37fd3955352074fefb4ed2268ded1e193be409ef3a16aa15d9fbdab602c9aa702f15cac3ce581bb336180567b437c593c71d7a00720791c0635f705d4a910dcf9e5c0862bb19eebbd6619642a75c1191b50e492be0de25a37efbe97b524cadb89502cd151ae0926c661d1d72dade09255a398ec434bd4fae809278671d2dbd85dee8742034879a5b8516c7ad9b8ea3564b9593a636f3ca0cd66bfc737b93149c3beace680e0085cd51be2cd1379e01d2b62bd85174647837b0c261198371573cd83a8ca5a4b63d7b1067762d065214e1a7496313b4db45c86a62793eb7903942245123d6c51bd8f523f6486b9052ae09447119b2d37f8990a01702c3f05d49b0dce6e140b2fa02b305610120477a2baaf38e011dc6b2f037d8fcaf062312fb6142ea5adde168482c4bfd7523eeebcab112978f9fb84e03c0de7f227bea9541c62388394f7aa3a682a536556492ee40060ff5c256ccf8ecf8c43f52589ed31e9c10252082d83298bf2cc9a189210baf52b237ec2a3d01c9f97001f9f18d0c8e9d4697ace79af54ef8e4c09560e046694c602a35fcdbdfefbad217f59f8fae5a35d8b39050e2e39d09dd7f904778a33e1b98de7e6ac013db80bcdf65dad67270d3a4a65e80f7577f3ebd405b7b8b8806be7ba489ab7bb46ea4acdd90a1ae752acb1d040ba91ec4db63d903f6598b7fc9d75014165d53c94474c0f1faaa89cfc1e3d0661421770e35fcdbbea6819463668c6df74151b8d19417225216d937e7d3dd11ba19421d16182f4e8c4a247367a1bab566f4c6de7884bf7c7eeefdada3957050327129c55e074a511de12a7ec0195ea6b6e3c643865fd0a4c2ba6becf374121f577d6b1331e3031120163b0e2710ff8a73f82f8a5e4ec6c357fd3d4d005313dec9c0287190d185529ac257025a8356a972cae7902a3776fa398f13125f19d222857988da72b7cb37d99cb94d8da505b4df74d0f5c24dea7dcbba569698ca28aaa64d7b1f2afd8a894d791f5b006ac5cdce6898d70275d14cae3a7950d8698abbbd44e66028222e7da71eae277ad8610dfe3a6b631c82e2c7b723df9d4cee8c4656c14ac5406a85f21a9215f8ae430cff3a4ff1a45729d20a271294a55104a7df81ad48f58b850cb1cbc41b45bb32af538eb46a989a39291156334227d73e774877ea938f4944590e23f77baefc16099d4ce24a9897e4b1b4da1ad9e0ab729626978f591ff544cdb710878886057e073701b814a092d1d6ee94f88bd10961c6db8d1a1cdc7775f8229a1ae355ca89caeb9bc0c2c7f1273142bdcf599787eaa42d5ef84788c1d4dad4d552ccca4751f33e03adc3b95ce70a6790da0447c972886e298d79e02b2665086c8a3868efa3ec91b47251dac0fe2eddda5e4952d18eddc46c8ee8ad3668b3c5f1feefc842b3304215871ce543562688692b402edede9cc2d93abfc1b7e17e7cab7dcef8344a48cb256d7a3d5c2e5a845acf82ef5b2850c061d5354ea648213997159fb9da78ccf0d5a0ec9aaa10f5511089eb2d0f42caf039cc00fc69db53706871794770b087b78746b670134fcdd83d7ab48deca55cf9c6d2325267b66cb2bf5565cccf9697bbc8f1c3c3c376c9f5bd9046ad2bceff30c3bbb3af8a9fcb18b747c09e89d355ca65932e3727679c3f959b62735f97974d22d44771b8ccf95880180ca2de3d00988404b5cee4c3f24e4c3f6f2e1db398c323405abe662c45aeaf4735d91e30cf2b57ff155aff8206847c035e386c44ba2b255b2dda04997c55eaca6c81ea6dd6a083cfe9ce7bc97c06fe7dff4283d88899d1795e105005914f4c220fa712ddb175eb093a57dd4b2064e01b8ad9f70772083f1ac68c784eb8ba1d981663cd665c0176a80838b34b36bfbd5e78d15f1ccc6b7d1b93c0b8087edbbef7d1ec50588a999951dd0e01e6d97308e2ab78cce2593d0b162a7e87d945e804b7db86428ef0fcd5afaeb7e8459d9cba3b23d56fd0211283beacbecf85d8c8ff220da090096cfa049e6c21d3881044d62ada89b0c3a94607b23b096346fbc6cb2ad23b342fa9f84d62cb9a7f0aba95ef78542d62c56dcdaa898f6dde79f0901b99fbdfa88f78cece613b1ba1b7da647134afb5886a3d73ef715d8a7b71b4518bde8ce868ca17dd36def272980686b7619d2c9c4dfded2f67b0abf5381eed1e2b69ab095b6b7ab36185c427bb0a8edfee08eaa9194c347b12271033075df58732801ca79fe8be79509733f6a4da1f514051f958cdbf1c9e3b133aa0301a56143f66a9e1818776576a808336618575d93c50d04535de74644df39b7858abbb5aecf26bc6bf2339be27a481710d6e7dd79775df4da1a04eb4d749695e3f968f0752774eaff85bc64e612403ebf002c3e6885bf94eaa3d582be8284553c14b7c63bbc6a2a77f38141140b2becfe4aec0f26009c369d9d221d1ba9260427a66e6109b11add07f219fcff12926b0cf254ac1dbf4a75e49870072a673a2d2a7e5d9acb3567a7fb8dbb77c20b8f3c5ae090cbdb1020f20139fefb768231ab4437710dd1bf5d7a2e3725b07a34c81811a0b6e693fb2e760daa6b7dcf7a634664d370b54fd20b7d931fc631c766f4658a1d718e9b0de3c473678be9c80e4948ef255f3bdd561573b0e944715063fa58d3390e04ecbdd3ec735215c238d0f3133e0ed036f7858da11ea7bd723c2efd7b312dddada55c736ea0183607bac833091d82ba5c7e5fd4210a275122b97be78198b9067388937b2262ea34452c2e1d744e68910135b37a08b794df98782c4852352d49a67c7639647581a9233427e00e0443ad6245b96ec4fa6508492fda9100e53442ea09241ba66877fcd9b69f24a868aa50e2b93af3a0bd99c9b916740ff2bb7e3065dff5204120ec2bea5f2d5cd41897d1c0034a23637c4658056beb1fce7e2c57ad4f411402527c0ee81e04bc2ca37cb1e4758b0492cb780ccceeef8af428166d12d0a7a5b10c888ee0a5fad0820e34aef2c90d6a16cd617aac65bc001e68dcc14b7cf7d4962cc99729ec9edf9b52b6154e9ab22986bed5129b19f3167b21cb021e909b44bde739b100af5a827bdba6e698e826669c6b1ae5a4578a541ee98bc93ef09c5a9b444b7d63eba737010aae87f2986bef16b5055cc2f1c81ebe8ba85e97a032518e9f6b9afa6555d2a0b5a31f83f2edfb6e126c1060ba5299e385dd590b4ce2988427dd9dc423dbfd49a289d8d82130bca90cdf0a2d0e45cb6b8b3c0a13c1302e195fdc226cf0be48270f56973bb7018bcbc0bb0e8f47639bd8021fd0cc71e2c454a01628d9dc0867b92d8ef2622648bc4e5f89c8d64953754f86e8d2a3f4cbea439670359bbac79ef7a0b071e947574c5db0a7f9eef7e9a94b6499bc4d81328493bf1c043fa1a5908a01705f6fd7d9f1728c4dfbcabb87dcfa203165ac79bc436ff001a37f6c8cceea5cbdb89ef549547b61d7324a02850ff2f1e09713ddf1ffefcf7151883a5af228b2a20229a6f96876b065519fbeae216a400e5c8ed34c0882592f8a29eea5266978ed106752ab382b90cb788be2d2ce7a2d256c0225dadbcd5ec5f8f8af9353a817a9077a44ba8f7728cd9fe6ea5c85db0a3bc47bc169e3d7002d53d16ab961356a6921ac2dd35a5938aecfff5002a389dd80727d3a4f113e38c4510c4b13456543650457a13cb2e491101559187fea53e28513f045b288b451943f1e4808c26ce560b0c498afd5f798223e24456244b3074aa4293d6fae246be8dcef967e1ef78b684f57efbf9aa4c71dc0ae61ea1c896f209495a087451cf9338e7031003105e05a73c3e5d40ff52c155e9cf9f1f053f06140b79022798c4349116059ef7fdc86438a4f9eb155e7e9136b691fecdb2a95ef439c531df632e5df323c0fcb62528f8593daa38df13ab28bc12ee7f038591c854457d42b76694e6b3e949d83578b07d65fe360bd19f05213ca0aead9a8c378db27c71f895e82424122c10bdffd5a6806e6e8a5eabe2726752be4c66e0f58509bdac1e837544b59108226aaed6acd239f764326dd5369a00dfe739ba159aa7f1f13b505d3e7c87ea631ae8d8ec6061e4ad805fbd29531c5799ca68fdb1e889207baf2f0edbac07007d2240b046592310d978c2069d713b0956b6b4c596fbd4d9ae2294605c13144d38a7b3f98ce6ea8541021f61390a50dcb33fd7d97617d26f87c004aff7d6ce1fc19b8885167a0c4cd057dc12732e29eafe58554cf30e1c81d2c5d633c641782d0b38909b7a8d83a11c10a277189b3baf3e3c10783feb892b6e9b39937b40d384a6d0e2aa51fccb21d1275b75d24d1c9a02cf04e1a897916bf61931cb77fb166bc2a521532a02549a2b27960b48937c9a7fbede78e696a9af72fc4bd8cb2fb43c64c753aa261a10f19d8f7f6dd3c0eccbfc0d51329aa589a26698673e6424f5b9a9536cb6cf4be8ab1fee3b0bdd2f1789482da164cc8f9442b1addd82eebd60e9500d1415044a5320b3721ac19993d85440962ba5273dbfadfa662aa7d0fff102386bbd5761848f3bf803f6a93921e43306a91cc7b9a34d4cc32d44a98b06fe7f705de08abc39aaebefbc54d30c9ef1118cf989ee69b2c1baa7d5d40828ec47194d13b1b9cf69fb775fafe1e72399ee78a920c849fa635cfb2ddb1b59ddc235b1d91e99832e67258cd3e3388ffd798cda40b8357bca1e722c7412af75b29beaa817c61c7f437fa4df2ebe09ddc731f621da37ff5882a61fb5e6573f97d5b3436f122ee397b66d147f0f6c14f33779956a60b6dbec37b94754ca0d2d0e4e6da2aa33af141f58f19691c2065f8abc8fbef99b70919ea4f0e5d4efcaa37f29ad386ec324176bde04ece4fbfb3d3554f2b88f9e532ed9410b5b7727ab70c79ac019da682b533fe0bf401f2ecfd801fdbb70ebce06b28e5e4b63949b262d03ddded97e5ec3e176684e183d3d10d84df7341826c46d83c00715dcee534bf2b07e3caf0fe359686ec664a48d82752c6ec5058791879a19d9c58c614b35de7673e70ecf7df02a125a649153a7235671447fbad9f8e8ce8449ed68fdf147bf6f01f802d50b4dc2962a960fbb5ebcd249c4f5cfc2fed4d772fc3fb60b4da7860da7bc8f473dc926de902abfc098220df7311bb1d7d803e5cde5f66d54e8276285b0673c02b34754d30ba191cfc4f60b7121aea6e6cf19b7ed82b85bc1d4af3594c38806417a920abece5e20245088fb0d3e127bbf8c3cf00241eb7ccc2137a33acbf75712c21d88f9ad0721e1280f4bb78c4739fae25e0f8d059dae29516f7a41d803a8b31b1a346f72cad0883090d18a58959892f0cbc9f6e2a1ca71f62211f652342d24123b07d885a708e2c9ef82b617d7533b1a37c9992101cf8a030a234ef396ae34dcda8d813ba8c7497d9b480991833c87d0df66155deb3cd8a09e43847eb2a5d98b7051b2412a22fc0c3ab989d3988a1726e313ad5e3f65c03b4b3dba236fd4a391388368903951f976b612da1ecaef2814daa2cb32b3a2768f91cbc53c318529c005f17d78d8e8381514aca3ec41f872f4269df93c73746c5372d105741ebfc01a6aefce3a3b747d8a114d3eec14e2816f355f49f2c9fb75dc485caca59eb0cfc95738949d02202663feec293ceec2964645aa905a0a4a2281ee819702fa94cf385fc7ee8e995f0ee9d91d9f0c2af125a96314374b3619250f025ba2d6f3ef6a354743f63d8258da46c237a2e00e355ce73fb8ea3d11868b3e41e518df07f649c6036cca268d65baf102b3759984298a910f06fcbdaad586446b6fd3de6926fc02ee7f04f31b0e7aeef2fe6e106e3086a38ccff28d1e5a02a74ea51909ec787c8608bb15a87fe81308ac51c1a7927eda24cd1417b953fbc0023782cfbd3db5bbffb16df7682a73a3a661028bca6089d767372c98bb377d29370b349998d069a85fe2eeb9911d0b4c6c90de7633a2ed3201609ff9f3e09c0c7c580eea78f6f254d4817b1801f3eef3e4528ef10ca9c626eaf2ade05be3d96338997c3095cf4eb1fcf06ef28c72ad4050ee309a65ffa1942ea79228f299eafa0a178d2c4c25c6257265c9856987668ee28a6696e91abda10100dd911f6d67d8dc8c2988202618f24556cfe10ec71bec364f5ea932a4bb063c7c335e4316106aeacce51117923780afde50a2249ab64bf249c56a7633e035822265d66b1829b69e4bce9e4e3ffb260d0026c9bd875e514fb97e01cab67d720fda68c784b77bf57b05f889030d2dfd35801a04dea19106713cc0eccfd396683ac63acff25d547c98daa4550dd16c7e10da1425089e1304f6dc7c972cfae4958fcbade63127ec74199916482e986eb5fbb9adc7f207311d9e627992f83e0db0e7e551312faaffdf4c082642856116cf4374fbaf92e2c97071764f406744b65272779fcfe5a06894fc7e2546836542e9b6b26fca10c6e194cf805205f8df731b73fc2061bd47e656f1538190c50f76b25a658289fbe0e161163a04688730cace9a09b1ce2c1d2cca75dedb7034c8ae7b5451c03dddb5fbe3458095c2f3c92287a431010d1eab7e8fe0dd660de76c83f42ad71578b817df3841ba3e0e9b660293c1ed07ee93bda66ae92de9354116412188b07a89c57d7ac461ebec9af457f75955482e52f95a066a76892b3be30bbe1576ff17447a52570b3b95dab5c45778ffdb4be602ba60e690900625a9c2f18fb73b22ae086753c7677b9e9be30065bbf8487484b6cda55e3ae6ed2fc0eae5fedb2ab1f009acb6e5434b696895054831c49ac64820156e7d49ef200be5b224e7ab137b71c85e77386fd3f8fb4439045c1040a659a0102194a984424df6ef9a64ee08e96688e9a0001dbd82720765724997d4cc3b605a9af0490baf5dd5347f737016c9985c1ab86094cbfa75ab9bc3c0812f3640aa923e09b2b3a2c29bf07ce00ad82b8486d4cccebbf88706ac110f20035afe23d0e95994544fb724d86ee8b96cf45d8bea49c4dca198c8e4aa43a1afbec12ed1a5bb72a236b1a86a022c82c9e26fe3969be3f9ab2331cfc8f5fa02ca6508f28e53738945b61fb5ebb336aac27c7308905d60021535992216d539f351e0ec31aba51251a869e7b9a87fa33e9c19a55bffa4b871b2ccc285cb0c49490e1e918032bd968e6e7cbf4823fdc1e26cbd8dd57b1411b8cd941a595695976aac336b6b8040456cecf480f6883e55e8e7c938a8eb21e7a7f2061d3369a9ffa4e9f5eb9e7e28b458deba7642e9242935cd92e13a2670dbb04be47cffeb1865142995fc847bd2c4206ca2ff240c6c686875ce11b55b77e438d92052089a2e26c295a4cefa51628c55ede5a5b4eb3668016fa367c278da4cba6a81fa28c02ebd802c5c8cedbd6c382044057fc7ba4bd237fcb8fd5018bf57241c20d421d11bd24b2558f1a0e22c846f01389ccf8c589e1ae889d794dc3aee4f38bbe867a68d9da5f81ee67ccb003e1b70305111af82cf8a1c1eaa0b25e4d8cef5110ec34d7a309b028464cec45c421416718df6b252b04aaa651f1f67d15da9616590db425e25b116a8dcb39e062e627cebf6e5ff8b320c60f8054b67d8d97e736e19f678542c1a6e8cc16572fb63529662e3d81f80f98ae5d7d1ef0fe014c2b5d653d2d06d5a68deaa29a65a49c6c25544aff606a332476c11e84a2bc00b19f5e96feb4b58ebf8287bf5d5230767a8b752e6495c834bfe2718f61ee43dc3609c598e5eefbc55c277f6aafdf62a82d3f28aaa7854fce03e057d0507d192d9961318418cb5eb6566934fc25c6261d904ca7bff4e2e0dd1dadc5351024b44e831479e6ebd6160185cfb963ed86c8c053fa422498fb76e44aa8dee438fbf9df447c5b3fbd80c52bc7acd0a065c94e044f0d3bc402527b89ead96f5a45689a419690f1849d0c2d1c9d7b3b49115e6c5d094f4a3e9c2197161fa11be7e7d0b41d6df9859dcb8301a04fe4c908d4407dc557a9026465bbfffafd23e52db1f2b8dde0f757e7fe28c9e6a82f1319813411380969f1bc6ae4d34650655aa5061953321fd7e7b3813b4a043d28ead0b9d17f38a379230207a0da31e321d61a69ab838c70d7cfc41b13337042ac33111c23e3492eac09a4f50fd79568d7942b0bceb6a54cc5d8d5ccde8088fa71efd6c0289f76125bed453554b06fe796a2cdb70ecef77eaeed115790a80caac0f0ad0add4dcb03fd1d3aba94df62bc84f9c7085893415b67ce9999beac9e2120fb37c49480d8fe78c010f19ef1352a288335eda4f90602d2e402bb881a49d640b5aa8ed44834554db10411c16c517aec1006802ee50db5196dd423c45ef7899e2a50a0f5e3f8c9db3a893ecd1644ad75ca7e2e0ef2e23b54350c49ff03fa839f6206d3333640be6c79c67d6e6a40bbaa02b42e8ed554583b959a462331845932eabe02fffaae6dbb26157539069c6497de1546a283f54af0e2e449be2f2e462c0bfdbba9b1e73a1d2f86ff2203529287bbdfdf42379d67fb9541cc40d87514ead25e3acf56130c96e25a8f466b8046fecba773a4d9e7b9f97d7f9db7813896f5f70db70aec61b76bcc8860267de71c6af5d43b8509b3b9aaee5ebecc793cadb1244c07daa8817f0a3c3b7bcf026f5bb992213c0b31a20f5087130b1919a8e34e2bf18ac57028a04c5251868bc7a1922f621f98ecad9d699147c6b5103f89948a2de66a27d490ea76f6de690a222bce1e8fb039dc0c4f5f56f8149114604fa4fad0a8272c72f5717c6ea7c12d9c6055667a8ec774bea666488b8d2a72574ec9e72ec977e60b19485b76a81fe0fcb5fbd89ec2eb1b7956d8eef737b55cde3e64f84c6f7690f9c049a49a8e1ea25b4501edb02dea97b05604974909c428e0bce82d92d22154fc35fb7f4a3e44b7704e8357e30287512960567a0571d454e3c7d5f6d9c1293598c474c28d4cb41c08b27c750c4a3d7cb2758ad4cccfa82866433e577d1e0ef63a3d5fe08b85b2b3587756a4425fc59e7f58f1db22f872f55c79e169e85d8d12767800d71866f549044808ec6771eb356f0ec5cd8ab3ce40f795d3bb180963297bcb57594da2c869b0f1c89c0704b66bc9648d80c63f8c647027b644af40566fdb954ad4c79fff1b7be64ec2da70dc1ca769942edacc4a6df7a380fd1632980544b7e01b94f9b7050abda08e42608da63eef6a6a9efde241a9e1d8579fa5724d921691d3dffeeb8b95af751e0a538536c90e7d6f156ca15d2f9dfb1750744693241b9ee39131d5e61c1b2639cb1e759790a2b6406d2651a7d4f83453aa0bdaaabc32828d93c81e4fe3042cee6369b8b3fac83747942b162fc9f5e89480edf756a34e6cf1192ee8ae718e3332052d5c48156519638aef17dddcfd2b6c8e2f5d96fc64cc16878197809b84bbdd843c7582399f41a024dcfb5a305cebe37dfaf72f66ebefc989157cc570d545afc7b9c680dc614801cece2fc23ac1a5a7970c76180b62aee0fbef403e9a1318334a9cb8f386dc6b12ec9504d909c2b3d67038238b4fca25b89e4a2f4f58f28bb2092f9e553b019536f27798e8d15620c887e117f01a2887fd3d16413a40cfef8c50934c7547076ce0daab9175b9591141e783b7e98d05f313f1740399de27f79b333c014d9beb7c29b2dea8654c0bc0df952b7f23a4ee65a92b3b4940991bbb85e071985f44eb6b7919b2035c299101bdcdf923bcdaf4b44c0e76adf785f34a1e37cd13169a0a3a2f303b5f564b735f86b6a50165752c9a16f0e4e5ae6e97cc3a8ac170d7fc90997e19800ad5c81cc092a2f8d890652fd1b76a77e51ae7182d98ce0fcfd4c68752f36b00b117015e9fb39d4ede4b289c437e4ad5cee42a2561b7f050e7c3323fb74c332af538f7ebd6c4721b189728924523a4dab6d4769635d18470d1018aca28a3d1e3da320addf63c2b630d615536e274fa1437a2b2e5af43862d1bd8e081ab09f9040216502e2e40723fc475a333382cce46d0548cb0fe1a669b2ede047d8b1d2bdab0fd9941c3f7325f10002535e6822ae61c5e9939fa973aa208b1061e1136a8a5ae8a8d581c3040833176396d8759c19ed3d7ace634d67b7e3f7bf58845267c19eeee4f1b587fd101c20b1a104001f2ce998f55c19bf35b3f5907f821c7c262df07d4f51776762843f502b0d859faa508a6ca61f8a65b73477256ec15ae9d921585a64a3c0f9fbe4526773381f039479332eb595e1a182cce33f51bd280aa18caf90f895f9e47f31bb67a8a4daec833eabf611ee9554911611a89608c38bc5383efa94db658604e693aa2c18198ccfa3a279438323628ea5f0c5049ba550f4bb99f33645f96ea13e9fb5640e6eb4f5fe77ca4f9f88433527b408c6f9704520f597ed40ed9cabc11e9c48a8c4909579507c341359df96a523d74162da251dc114294350e880d9d47caffa68afb71176ee56bec41a7c9b959817290551e6e0a62caa97b003532f4478225d12751d4613080ac58eb40c9f2d4f6e9f1679304eb0c3a416ca48c719bf51b7cde45252891aa099fd82eb71b00919f9369eb4b9db36f4d61472d9da186913225919153db90a36935f8ecfd73280456a9cc4fd612ad29b52f201b5cfe4ce1797cf8a43d0ecc30b8fbb43629e58b9544ac0eb786168a7e965bbefa2182d29535c60e7948e0179fc7aafb7ff5423afc6b7b7b82f4c459660958520729ce93ffc02deeb25dccea8c978a55cc3e1285d91cbaad5b794a883c9b6686e713a3568c081437ca6815738ce0a4efdd87096fc481867bb6b6979ffbcb71b6a663e940800eae815fdd425e248bc7658a77215b16148053760d26ba378fb7589a024a98da69f3f45a2ead634e3857fb9b56355deb261ec47625ccd995d043e11abc56ac5cc0dc5c94561ae4a2b9f12b119433cef25956273469a29452e93aaad6c042ad3753f259d7516a303995e0bd1f43de05df2693acb68af7c9862cf4aa0c242b71fc732a840fa15349e4865bc01b981b5c7d59fa3a2ff954513d5de4072c5fef690606189b49cb2f2adcfb9a1f466ed6d3c18f03e66a6e93d5183558c52ccd994dc104691d00d8d7f01397bab891c26e115cbf5eee5e64ff4d3de0fe26752f5833d7fcb4e1dad5907475b06b17a138ba7ebdae2a89949a8dc76c7f4486462804278b909b8aa253081efbd177479a9594bed2797be728931f70cba77ca97bc13b7542f432f0a9e7601229381364f14200d2140f31386b17d8158be1dce5d9e509328573c6d858ab4e03b759ffcef5d0d69000b51d9edfb07f8cd228479655e61ebc8ceae49ad4bb433654597d39c16e095875807c54932ef9aa916ee4b071f6983ecd4bbf82fcb9ac944f9310e92275710ff6deb77b3b23c6d296178f8551af5c73c51cd714114a3dd7951711e244dd30e9490e80488d689b33277b0def2a8cfd27c6f5fc8766974c1ee8260ee213c5a27c84a3318f9b96053d8f681c81866d364751069f1074cd418965b70054e6efdb1e0f058ce5ca8e1df09c9f497d2217f268268e67d76a9d109f82f64da87941bb9ae7efb7d41af24c03ba539e985cb2e32a11652bb540bdc59951bf99ba20458aaaeaf29dd517a9220a68ad19dcbd49afd31373280ec46423e78e27692fe9a92dd5aaf18c11c75f3713354afb29a34da20297369466dfd24d703df494f390c0e59006a330214202226edbbbdd310413fc6ddd417a8aacc6877abe208c4760009fcd6a15d84386467c8b2303a1dd0951c6f118b7ea625806ff32395a66006082d24871250cc92f22f7284b1d25817ca53d7124d478d221dba837d684c6e8ee85f64c540876a677517f3b2974d456110eca4c14640933ef922eafcb368d6b6cec7ebe83c41574ced371490269fe124671876e854af14e0ffce9c1763a5bf289bb6d9881b7c848dd69e02605d10198c8155e2fd1fb63efbbeef185c70ee4a1d79d733a0e0e20318a1ce645b47447156027ab961200325addc236b01465105e4c61a02a974f873adbb60b0d148f0c1bec3779b63778d7585fd5ae9c04a6f03fdc79a32ccdd0ba4c3847bce55253fd6c55b948263093daa22107937f996b7fe7ab799cd0403d8e4b99a2c9f4c3649f9d3b8668dea7187ac52e3eabd196043453129e7bdbe616033ba3dd00af715a8cbcc158def5a3e0abe26de3aa4966f264276645f22a702eaf5f94d5cebb41437ca11b51df04c5586be174639df45a6c7a8f866ff3f6722d739524a7f4d79f1f209e6475d82de90358e979af623fb1ddf0222b43c4927d0f81562c384caae963cca0d72b070f66f6a343a4bc3b03f3632b78498c9c0f4da3b22cfaaf9cbc6177f311b8c0a11e195b52fb250467e77652164f4a37d7628c0e3087bbf57e0a443870f619e48f331beec5d69804cda98aaf997d5bd7b2f1b245662e433c52d8b276a0203f2ab33cfa839f8412bcbc2078b6db07e721a2a4d3964dd0c47540c496774f7a6e8cbf68fa7eec154532b807fd55530e1b702ce46f20005fd2d85243397370b101e6a3400659a51fcaef50e9fdaeaa7b79425e21ac56a03b056096fc5415a9d1e4768276a3227c1d688014b83499719c99b8c9cb957f8f67424c50b49300ac94ea63396b78fafaefbaf688e85b1fa00aa11a17d78439f43576a042b9f548637327337bacac97f28f2966391edf00e9967c51253205f29037f9a200066bf5eac1fc5277edb4c338517c6ad2bd6a2edc198d6cbad11e6eea5a8d5d5388fa845b609c92123ce9dab64eb89f4ef6cb50d9564f1cc4304544be7a0721ae40306564ca94a6af749a50c8d91d2533137340d25a81372868b161c9d44601b32b2f7eb68f64a587363a29e9064922dc29928ddd006b3825406c83de221153c727b0a63e7f2b8e92da8e7fb4b17c3fd97342fa98863abd42ddd7be4c50c734b8486b2b300f4fbeff2edb00339211295ae852fd5b5ad908d2ea1afb9505ac026f4be54ddfcb4e7b3ef9576e793ddc11abe662413a8d387ffe6469747584a2e0b51b5fc06bd7146d96805b1d972b1e2dc103b424d692d72d6e64c93a368ee1350c9eb12e3bc4c51f50a31177d41c3f35d74cae3a0339333e728d9caf594e132d8b2f34b3435472836d38b57b41781de619916ac83801de87c704e90c8e83c036da8d685f26e7146bf2bfd13a947d3d836484b64ad4453efbe60b17dcf460b28533190bb819a1f311bda3325a5764804f0dcdeeed2bd55137e6a69a7fb9e12b8f78a25235a494d790ee8acb9368c25514c24ebb1571ec61f7e7edcaa8f788789056379fc426798868e3811334c7d38a9f744432d962bc459e1cecfae0f1c753077b9e934537b8a3febbf8029eb27df44157fb2682d0e1acb3522ec20198841938d875990ccbdb341975da22c81827324fe9407110ec7bee5e176345bb5d7a85a9f9241c6331a76c66903ee1ba54c0b0a313d6cab56cca04ef66ae3912616f04a568155b05de6473f64c77ae123d94e61a55797857817db058ed924fdee0773fbc20e38fa503339abb6f7e3b8282bc7914ff59541293213aaed692ac4903c2964114774965fe581e0e9c02914f5e53a4f78106f8b4d750ebab2fea1c55eca3b6cac03d495f8eef482c3c979cd490bcb2acc927b440b494242fd604b15424e64eb4d3ebe320e265f4b4f9c83ffdaf9fe921aa9bbc6cef20e8bbf9918c6e4e84399dde82e32771ad682ac618e3cdc56d7ac55bc06f22b4d2ccf42b57c71e2f5e0be81b882c6ba6160e78731f0dd83e8c6e0e0803e802641d9026012562b502931e3c439ff4d25a28ae68dc5b84c9287f9af6650317df39cfe8be408f7cd62381a3056efb2cbb1ffcd82b9d6d10dec0acbb7a66de813ebcd7cfcfa54a2af801a42af20b58df7559e98cd55bbe05675294dc1af17156daff792f8e2f5281e867ca6675e76ba0c529896ddea0db644a6592fc5db0abf923ba94ccd60136bc44125f9c463a08e7642a5daea23f037d823c8cc14aee345fb923ea48a5d535960096bd4fe1d1550b7ff7a254e24ea4af9ba41cabef800d73f6aa91509df90859e596cd490344e2ed368a1e9b41b1d62838121cd8ddc6e79d6276fd5f84e2756e0d4e5ef731336fca1d63e511c92d0b1f8e109ef0aab357f53cb73d13c44b1baa6960fc7c31a3b586bd84748b63187672e6ffbd2f6eec26f9f8cb6b9aece70cea3b053c968e5d8fe1143e9b07628af6521e24d5d946f45fd7bb3267c22da1251f9c7cb17c1866384311c50494f92a7ce92903f4a4d568e210e14b4efcdd693148f7d511a0627f9a9319a16a89c0872de08a13b9babe4e920078ec5cf1f89c506d8c0636ee43bfd46785e5b9a333fdd00addbade032b6e7437c2c01a7c9aee3633ee4ffac65533710c223cb532332f3a5f4f9c1a5f49bf49d8b77e035386ec273085f6337d7995fa6dafbfdd078311bee32137283ec9e67b1d81e8124ca20ed3c60d4837735110e4a562a6acd54c80ef3729d518e561c26cfcfe9edee3795771ed15f2a776c513f5fd64bc676b996826e250c9423149057b6941c4279eb784c6f181a88dfc7f39ab9050ae1a98dc80939a15fe695ebfe44d18106e0ee9b1cfe7fc091ce7436e394449b8237f866791e26208d4fbb983d439b468e85067db3dead3b840353247ee61eaa0a9dd12f44cad57505078955b53d074f5c740e94f81da146de4b8f2ff697aee016d31f31eb940cf269b621291c7eca29bcc57e74d69a0f95d955cfe521a868947c51889e526778758ce5293706bd01af0939604b5e2af7c8fd8843740fd9dcfd48e5cdc2ebba85ac71303b7ca491f18bf1b17fa8f88a9955fb040328ae57b087b55188c4187f431e91372c3754ad0a086147d5083c44c26fb72949639cf0e84054fcd7b493164b147b47450c94e62b4f8032e77617f5d1ae9f0d8c7184495d8af25eaa0d82cac68002651d2245ee8fc7d377b1c9b615f2f7feb68a135d0ef4eaa92919c60838a2945443d5e66e2be1fad862725c6a348d36adb162664861d669ac8a9bcba2c0683db42daa375f4fbf3d9e5f2441d6f8e8b28072575bc9414c318ae7e96a3f710479cac07a0bab8ecd482c81505fecd2c608de9b93418e9689630e880ac3a024e6ef6b1a7fea3cb31ffdf53d6f86a2c8cd842e80ae797e5727de4b4eb7784c2fea36ac72e7a1fbe4c675c61a1fb89686632415ab74c1c25e828a7955bbee99e58420e9418c925a2b0c01651519724730d9d5bde0d0cce4f189fe2c99f52b416c58d0c309cd22da7a77c5fac8c1c2980b56db201365299ff3fc47299503f967ace8b21b339f5b5c69f604098668a2bc7a4733f367808acb4a3ef286ff4e02335bbe81e13fb22bd80b0f3f217ab1de0d36acd4d191e85f9d964b848c3bda453a319fd6b5282784ba86b6b641f8143a16681e2fc09a554b9d942d10ad62bf8037dbe2a7ffe3ebde83f4bf0b9754cb6ede4f86ebf0f3dd5e541babe1d3a187572cdf77669fe64ec22664e0ac767f9bee65912e1de10cee3bef8336f1f2ffb7cc47bf67d4ab17e7f085297c6984a1cf0d206e9a2f558fdc64581364126cc70458263b099d85cb4b4b15f1cafeccd8e339b838d4c736fedd9c34fcbcf3afa48cf18fdbc5cddeb2274b52cbefdb61e75ae506f34251c3eb235432e8af1d83eac605696ee4fb6fcdbc8b2c4548c9bd9d4d2a2b05acc8887b3bd13b1fcb271561fe2f01aaa37d53f691bc8dd85e376cd27f16846015ea1ad778047bb4bb9e89e6fedfe6c3f044026ed7c1e257672d78d94bf1ba862e729c89053361369661852d2747d4dc4f60fe03a5b5b9ba7697fd5b6975ab6c38b320ba6eefb06274c4c90c0a7cbd43372f1aa7fe72d0197ebe5b8219f683b424ba47dd38ef520f0f7c53a5a222f7bd466a8705752c653ea45b4a805aaa9fbc2f7baffd95847ec10e5389e59834fb1264488b566c1595942ae4b44a46a2956618685a1d94559c9c56f4dede13bb708dee3fcd6d38ba23d018e3bfc7b6b157502966849906355d27ef7218bb2cb59eca6ee029a39dc5b3e98c0cd8455653f0eeeb59aaa5696abcf0bfbc52589a308e9bad1aa09ed4fc8672e487a189dbd9eb38eb1a78b55d88d3ca2ddbca0bc96fb85857a9aa5b08c2c61b2e4708ab15cccb3bbe8ef5cad26735bef2f81cf5a1c51addbb38de02e0f5149a9a914291397868a2e86261f8aea995aa8ccffff529f87a4872ecfeed5a505a34c277a709c9730e10538d2995db17c884ad4175577c403952bf5c3e4ee249751c9fbef8c2e944e1f78e8d1e1b9746198fd971df15edc8da4bc495d250ae25ea5b1a970ad7b190c8b17d7d02f8687cef6c9cf5bf072aed09d18b1a9201b6e3278f4603026d9e5b7f9495dd406887b0f2e950c8d33b069de28783f4262ddd6f159ebff1663431e4210d69ab5aa7af7b25a963264fae7cea993bf0edbef5c71fccc51f23caafd23c213a8419ee62e830bb034ed034e89978b2af025baf7bbd0b79237bc71ae77f4f24930ba8f236dc4b10c8279853b3db3bf203cff38cf8f150c0840efb8f162c8b0e9fce3dbce9384ff9ec3d875dedf35e5087f4842416f33e991c000c7f7219a7e9b71c8aa102c1c9499ba78543ba0b682dd1c70db2c8c23bd1990f78948fb56028abeaf78d2ee8ed3f79ea316ea50707d99890e9873723cff9999309d42bac18602792a9415f4b76452fe95a59033aaa460fb4222384610a7ba8389d4bda77879a577cca2990663b1c3f0ec5d2dc9cf253809a8b86c1b44b37dff18b67d0424ec26d4871ad355156adc553b8e317125154f389baab140cca4fb8f3cfe736f8d159f34d1c631009502a80bf9fe6be136edd6b930df8397dafe2fdd2b1ad3e143cf6abef848b72ff42fc151ab64c3c0f3076cdb5250bb5395cbd5e371acf02a7b189c546d92ddc2016e76ca19eec0eeed250eec3a8a59bc5d195494a40bf8150993fa03f26ccdbb867cfecb9fbcea4154eba897a730a8c70777bab273c36ca3bd0494be27f1e4efa4debcf32d62eec613602cfbf277a7ace47ccd09b0117d00d7d6dcc82f128eb1005a962d5c6a9bca007135f370a9ccc3eb4123433c672426fd98607a9511656e1c7c55a100d0ad38086e46674ca310519ee14ff6f0ee1d4a047b02342008af7b72121f381c846819318b8f9370564e117c0022c15dffa68bb0d6cdada860208b66b0f6ab91ecff37a5614793e949f1a4ff41ef7af9a91186d8a356fe8e5af3811d2d5353085fd43b0f6a93ad8d15f43123cff0d4c32f27b38fffa9fdf88a4eaca724c31a90ab7cbe5b880027afe82ed75ed5aff992875ac774adcee59256fb86ae74a15e188fa028527e8b990c03f6caeb0682fd47dbca71db94d552267b6c9904c1d9968f42a35f89753915343c083fd8161632ed0c162a4c3d7a04fe89141a0bf1bc068eea1d8ef379408b137dcd63213e10af512afbf5bf565303b7620c57deafe5e2c1262a919bfabf457f43e5249abcb6a10dfdcc501131930bd2bf091d9feb2c9fef857cd4354c096e0d1f0579de51ae35fb80b49e5645585f12aba596fc57ae563d0d4fa7d52778e3c338275ff4c1c6281860c3d53dac8d627905f35d57ecdc7facb51b546f27dbe4bbc808e38456d75b7481d6460ca45ba2780365ba7363a75e19ea2685ce4d6c4e0d9bf8c2c85eabf2497948b0980e282ac6aa0545b6bdace6d30edabf4f7c596e0993f5905da8fed49b13740471f226481957fc6c53bc80ffe9f4ed00fbfddcb10b261d69390b8aa2bfce068e60f97a23f8396496af67005d876665c394fbe5acecde6997dce01f6c085c235cb6f1e5c5a8d472cd6a8ab65d639f57fcd908513e72d8c1c6b183d8c35f235420ff4d097b4a7fee47383350a111d18ad56296b0d2ed46559346d54ef6fabf4de860a336a716e7f42eaf3621492ea1de30977fa50798ed4c9aa7bdec7e827e815d6a2cd077ca8a116bb7abb814cba6863eb77ec7311fa8c860b4a24709f2e27f74f247390f453da46c126b85cc36ed14b039b41d874ce32dacb0f38c912f232bb698f6560e78a7972ac5968aac34785452a82427f09920c625b29ffe75d8abb98c915fa09de2c367d1d50f24c1fdbaf317b33673c11076ad63ca9d7f8b0b98883ead4cbf57f16278dce4feda67f21dffde6838cadfcf0c11b1f6663087073dbe80f3acc0b7c7a7bb93a64d4a66b67c2b7b64d8e51026a3bd2ff0761b4f4da1bccbc010d5ec2989a827272c13498ea9f0ce43abb97a430afe2cf0cef10396fe63db0d2ea135785481e5108ee1fc38e873fdedaa4b9323a7c9c35d75d7d5544325056d621e25ef28ea3de1a980d32c7242ff04b01c0377f5422623f23ff6ac93e44d54280b73aa78cf97167aff6613f4db235efd203c030086281ad4da38bcc4ab697ea3eb393a8d9c29e63fe50c9c0d0d4a84b648c723ebc6e6982a9035dbe12c0f881a9ac4f401c252f6fb75cb40d319d91562988ad76ac0a0a80b8dfdfba914497275674d91448c2feff50603664fb8c4476ed1890a487224da1060b5a00d2daf5dc4cb50021b4a617039633d51fcda25f6aaaae39ae32f62fcd525a6fbb54fb1a5b8a655f81cc344201540d5cf4c4b3272cb980deeabfe03337cc597aa7c285e7e28104df032fe10169ec1670a23149dace72690c9a644220c293d8627f0c74f5a8eb8eb321f5898d5290f42ee5abca972fcdec588efc66f3d87fe0379d305a8a988d99eb4f5e9a570d2f73cca3d517c3369c25eb732f876a2415bdbe49db346f657b6fe579c3f3127f8a6b8380d41702a7252aa8e3297c2ee8a01c167f79ea3fc63ace0ae505ee20cbf68aa347f0580dac028ead1449d0b489688297d4164f623b4d36af8201ba0cf8c7eee433c9e077edf1f2f0cd17cc6a51e0d94520d1196a37b2fcbc470c122b88d0350f55fdb6b6dbf0b8340d8afa964e0dddbd9a196bab6876e74597809c5622fe1f88cfa777086340261b3699607f61d38634e790c0a7bd13b02abc25e0d7ca6d33b9e9104474d7633be922ba515f41a1429a9c4c29b79f11e2784b076a901687eea7d9da1a0d7a25225e8d7e37a2d9f011c30e2245b65a5ec453bf336d625b290a9ec0a8a4c91368ea66ebabbbf6b7b143cc5ec6bf44c51c7982a15ec6df802faf414b96d2d9199189e9c371679d1fee05dda2c21b5597aaf07f9f1cf16669b2ec6fcff9b8f849140936f43cb48ae7d88a0f6a0700a384aa410a435e04bf3047c0ed724fe292eca19b24ee75f0d90d1d5e88a7c4b877110546325e7043ad6896d7735e5e1531556b5a1a6c214db29d869f36aa55a9c53bc5c1281dd86abb7b8401bf7f393394928eab8b785449862f3f7cfa036c16b79671c7c0343d67b70e66927f572ca190b98add36d7412577e8792d778ffae62b2c9114d7819a14d8ea8289bda7bdfd5c9e2fb4affec68c6de7c07709401c382cac1cc3d2eb3397d475a2c94489adb5e18a650d17ed7475448c14c2e8af33d85acd16e6ead374d89cb9b48db645050c92f69af35823963dbf2c5fc291ac0044271a0bb812022ea6b8acf39a3349202121d133c4f7ea711f6ed00e393450773043376b9d992c4d69d229c79abb14865ddf17063937ecb8a508a6898e1a89afdb7e6c3e19750bf37be226d23395ccfe3bb2eaf93186de275948afc2f2050ffa4161098e142e78c8618b1f2e8972878fcbc24e68407363dc8c7d73df33fddf23743e12cea3380f5d782789e16150b062b5b3b8b11bdafc3f33856b02e6b40e165793958912d909c724eef28a8a61134a30adffc9e1e576e6552415d0eba726ea1bd011c42be2173b5442a0b6db0ee2ddbf45bf915e39dca53ef25538ad59bf1d2b699183d5052424eeaf2053d991412e6aa0f256bd2be79dd0b2c22635bcbf4da1b62132909f425c082c59b3c2206789ed82b88b73dcab177eae15f2e15f7b5e45ef57833dba80b3a8eb09431b24be7a042bb0fe131e3bcac08242373543fa788804ad4c0693538bdbbcc7ae706925c1699b90bd32674772a7d0e8cd60593f1be34d15aada33cc39389291ca4fed2c74ee9d5ae462d78d320991d3b584dadeda1c3915f1d350f19170e980fac6b0d8e2bb8e6911bddd358f0e6c4d59ebd0eaa00507edddd32bc78c6a2b228d723fd095a0f2e3140861f9d28e0cc83547c046bc16d6ef454a11a75ad6bdd0335be78045e074b6d2a6632d1d6f4b87193e507261432b16502b915771af5c080c1b096406c981d0ae0e3343524be50526280c1067527bd15900a2039a561ed4029c07ff114bcf02f8f14fea0447628da4056c2ea7ecf489072e4534c85e2e92c9ef3e041be29f6e9b60a07fab40fae43c4ff96e38d9c0184199c71923874f1efbb7e43ccee377ea8dfb14cc1c985d1c943f82fba318d2a41b09c9ec4791903777c532d2268ac5dc0e3380f878d40d82e950abb6770d3a6406e5d82ee860eb9783c4ed1491185a2eac74c7c71efa54c37d9e8f19bd831589977a120eeb7ae8fe9cf2d4239b10310c023a6f7ba4132442c5841923764f8438b4da39af86406e284a6c98f5d7986d9441aabe32e08b2675c6ee22bd32acba4f8ce0dd3141d4be74a0038f21860f7ba59e22782af1677429788bfb138e49ceae6c8e4ca9f2cb469fd31d62a3e4bdcdc48df5fc3b4ffa25eb230e942e63a87adff16bf6fc6736dc4a5f9648f970a52e93d49f99fc5d2e09d072aca708fee6ac31254f47d0e8d9ef30ce3aac75f227c56c86585e8002b280ff29d3be09ac681fb901aa00bcf43c02642bc4e22c96533325d50a74b978d633b55584283a1544c7e0fd59c4bb45aba52191adc897761fda9d4521bb250181484141487d1f3868573cb1ed8193ca283b6a9ec238f04969621e9cd20f603804cb89ad7db55130b065b20b4a2ec3c5f3e22ce236bb27a8299e9bdb1086a205f9d755361609f3780c17811f3ddd85b010b16a5631911dc7e0c8f5386ea9726d4cc4330a41725ca7947cfc4eb287195290b7b13c9d9e19e66e04b1404c2222d70739b265400f3ea51726704016f6ab9004fce3ebe5fb52713aa574c3c77b75d75d830af820208eacb2d0fbe187a1aebdda61211df414656a620b7aa51938a7565a7ed474b4424d1867f4c845c6a17223d93c3bced9cbefaa42ab0c4c0a3f545e058fdf08fb767da3f3bfd0d8a3579ab05cd5032d770be59e1833791388e6534d26831aec5f288f2e40cffb3d38f80a420205faac7e919aa354684ed0257f1bbf2b3cb0cd1a69c3e77c246f350e0b0825f92281f4f073b9b0edf7418fd1b9fe792966e96f2435e92bdff00f1fe22bd8cb210dbd095534ecbc53b9837204693dbbba68b5dc39faafac6c5b1f150da015daf1cc2c0a09ce651cc367dd29933244c9d232b7641ae65353d78cbdf5072a86667345d37a6e18f33a58f615474dc12034c744f7bec9f5435874ae1c84fb7fa698eee413f72e6ddf0aff7788fcf33f75fd04f8908f2f68da0bb3e6c5f2642dffff004ce28db1edff7c2fdcb35a94745d084688a3f6a6501526320157905fcf1133bc73a0446e4802d96e21d6035612e5dc4b4a545a48641d90b259991d61b2e650eb0982b3b275e6cfd9f5f0bc7a7071fe9ae35c282c529f7a91caa452c3fa909691697b90a0fa6fef2acf5964808cec49a26d265e8013324cc5b9ed6c28071e55b35c10b8139442672487d464463d50d6d7d185e34c7490a9dc95fac90ae3a3611040746ab8c38972155cdc27c43af50ce688ae3ce25c107b6bbccd06601290b2398fdd0abcc18fbcd0fa697159fdbf64593b0abc5818daec189a87121f8b1c9410c40d59e670a6db42ae2b54b65e4fe02b73f7678e84a46ee024d6068383ea52a25bfc38e291fff9c1703f1bdda1a78ba0b788355bfb249302f8993ff96f12dee2e9bce78cae335c58aa18145064c0bd6215817a6dd0ce754067da5a7a9c0c086cc586d61881b889a80a2835eb06771f28485fd6a63d881e406cd548e84c511bfb3dedb783f18e54450107620b743f5adbffe0149df602ed5d63b024f8597a8688faf974fb2da2b01951ebec6b85bfbc69ac374859534390d589336834d4461e28140e41af42ab14bf82e24c956ab798ab1a1ab12fa78a0b5dac918e34e6aeaee01224a092725bdda26a4548493877692b53c80acafea975c577bf8f58adf49db0bee13a7004b0d697aef5e720caa92d4fb3acf049eee03e8da21c752684155f5e093cf52c6065250228d36f312777e002d38fafff07900588ef39c70bfc43852cfa6d0c1b3b0b1f3d49134a5e5e57f2e33c1660113bf5c5904f03007819ff3e4bbcaaf94fd9340fa5304954d8c58efddbe25fc47f47d19a8b67162ff976fdae46836c5fbe1248f594d7cf850181fbc43fd5ca95a318eef41dd8bb5f3e8141484b288b36b79951c306367e1bb4b58e8e85994de84eab9c7680998cd40918e1cf63bdbda61393bdd6f64e439dbe85f0799654010635e4841752e9af6a5c78d43c64612e4385bc3bb58005ccc642c01c4a03cb1397f99a72f79028d9d75009b2b7eaee6390d990811c37eddc92f34325c5c063d55fdcc7c18b2e03bd45537dc4d9c420c8bb1f278313a47cd467d54332116680ce6571e03b6cb970ad29080c574daf8234bb36c5edfe640a2bad09d8bf8340576712c020978f2cdee71f5433f40c4b1de316ffb09d449554681581582dbba669fff17740c01b6e4e9af47c317a59d89d2b7350cd43cc69f2d5ce661615913e4ca9da39deea7bb86852d41cee76999ef099f7f5e2238fc135fee77ef0911326753dc40be77f5404930b321c6eca95ffd4069321f275df3a478404fcb143a0126d85156666c296e0bdbaacf52bc54e4c81adef477d9341537303d9bba0f1e20ab83165c5745b678fde2a0886b20ae8daa55889304bcb8f7e6f137b04d299bf1c7aa48089bb3c3957927c82195dccfaab12a3775e061dbf76e0360d0f1f9a1fa4939878ba3faabbc182677d87797223ac1917d1f3e4701a4b503528443f5b6908d8379dd86d27c39ad1aa8b22ea6e7ff0e1933cbba7e82f6ceb48883237575d8471d4619a7f4780f0d6c796ff200b1ecfe5bf208e0e82d60fabde22c503e0a1422471dea59ad962bd621ac07023be8d394ea9b758527c0a2677a258f85d4b841005eae0761cd016796ba27beeaf14772f69fd07e0443717bccf8790166f2530a0d78afc2451e9859017d74c091ca5fc4b7fb78377003681d1507e94badffc6ffe40458a1e90c6dfc1d4a4257a1bc13adeb0e3f3c4354427cb984e75f706e8f2b7bd7e60bde95461c9609e2a63b1f1aec32f313a835a59066813dc5a06b7e3eed90791b09559f1f9c9104caff14a48164438fa8182d1f5670c13d3cbca103fa28db09bc0abdd4a687c7e616bf573026b3a1a1f5c278b08cad5ae8e912cd73fbc52e2f12ca59c8bef5aea802bff34c3e1587a7b597cb67a03c0716cbb065ac117d4edc6a346c97fdbaf95871573bbacf9e2d3be777a651f3a0bd2cc7d53d991cf733b99567bb8d2decc29669eeef8c37c1fcf14f79241057ed346d240ef721913bee0768be904dce301b919518201da3215098f33a5bb197bed3ab0fdbd18afc6e6fc43ded78d193e5dc8bc24979f999bfd2e59e49c1dcef05944918eb99c378e1e38f712e5c35e10ef23c6215ef036f6ba86a60944c4c90a3a588b4e2b0f5396d6cb1e47ebf94531b76d00cffd9d6d18cdf820bf13aaa1ed1d947b9b47900022556177cea407438765d05fadaef933f39e592b8b0b658315c21c7e48aa679af5229cda2e8a01c13ea8c9f89beb7488c9af5ac4044c95cd7b0a756563e2b35adc529ccc3c8ea051ad38a5fbc805b2660a5c204c4f04da210b454b91360d64e7d712265d02e8ef1b92134cbbacaf8e4b71fcb432694d612516ebf9282d1d22d355c96c3be9f7b9a0c2d1f564cb8d3cc60f71be68d79b4850286db6ff0ec9300fedcb033071e96f2685596e360080d0a7fe87544e53d9763008aebd80d3eeebd972a8fe528d60bbdd276542f88ddbd210c7411d65dc473f41c0c82626cca5eced039bde121db67f5862b6d657c0e9b9952267b81e73aa5b2998b9be207eac21e10ecffc3f8f26edb72de0a1594068225702d4289bb2e7aaab22f1bc6baaf0284d08dc69a367319acb8adecb44e3691f8db3f73bed4b09fe112523402c4e16f051ea5ddfa682d3c08301dce23ce13ae29dad21928718a1cfe5ad98a444982dbd91b103df09f6bb2c9e39822ea59ab9a7509a1413c9681cee89e6314d4d2e7a3a17d730bf6f1fc1a9091c7ce85d9bffc0ad780321c88ad9bf3e840040cca653dae0ef93089f6517a9e2cadc9b35c7bf876088be00255dbc91fb43d4c790385f7f52b5e133a4ba953bb5b9dcf7e95af403b3391ca394a022e7d723d7c6a30cc00a94552555b124c0ba5f8fd90d55aa6be1044e4c0757ac8253f08a50a316818eb3a6425b38c70daa35492d9068e2482335cfc6a4e723e178d104d954f6aaa85321a9fc6566a0ea828b9ec41d706922e75e46c08beffb0bf21648ff5bc6553e7883da5123d9a992857ce7c82f30ae6e0286c7e52f67c2e2f07fb0e4e1d25a9d0e7243772864a436c59f1ed22da3686281d6b6c98a5e3dd335c9f7f72e382542dabeaabc8ccf43faca31e9db926e27c8fa5c54739782224d1141d89fcd4c1df6936876bb2d8e348e74654208e597bf7ca990a714a537e2d248ad74b9699283c2ce6777413508a1b8e4aacbb0b0157c87bda72238ecd18675872f6d414f9523d9c5090d8f53732f83fdfe2e903af2ee67e7d97e8b9608706ac3209aa62d2911c3c16db3cb863ee25977ce4dac063efeacd0396200d0d9c8284bd2b443a150af450c5155a8c2b006b053cb0efe7580294ef3a247e37691d14936e2c90b0484245db91818045041597c002533f2c56ee44f8abe78b8f58313c0997ee6e8f6875741fe4781077d2d8fabe4c0016d1f90a811aba3e2199e1aa3dddab493280235148beff77fee2125beac3aa5570fc9e0276c7d28bf0dbde409f1e48f12606c4bc6e5d450d553832ae3f7c45a682d9cb0a705f51fdfc0984f0ad5a758605494ee5f7dfd073b221aef9d6aaf7c3328b510e6172f8be1c76f173f510ecce82af9c12d52e7671c7a3d9f01265d11b9aee877f6090227c7dda4fc2cb373e33bf4985b861915e6fdacb5e41565f1624892d4f2c27aa0c1c1e6f2e04c5d01d11d60b52ced895c8aa43aed7158c49090a0121c1389401dcab52501d44408d312354d815b6d989acc9f1b4183aa13b1646ba83bc5828aa417c4135be68da82293cb95aa8e4e8824715e63d06c806322e3d9ef4b37b8b99dd926676c5b2f6ef05d7f9b1520aeff6ce1ab7890f85319a655e4bc96a610648c3b11264a50e3b10c28afeea76b3b8e4ce780dfaa8411aef273c94b089f907e1c161e8ecdd061501d543234bbc37748cf42d26a05f9dbe6592f800253503a103529e5f942a0933b63a42ba6a8a5537b847d4541b608ba0a9c7fc4aaf0f1d09134bfc43b908fe07fef63e881fdd06", + "0xdbb36146f6c78513d4557fbee82d6490e87dcda8dcad4e354acf52f22ce2e4a2ede071bb1d832438843c993b90632ab1a10bb523f89d9469bd50be3de50f45bd2773bfbe661215c62910151d0c483c50ec40fbb55aed6247e023e620dd668556b349bc91496072dc17f97aa14ac2b854ede1878eeba037d7901f5f80c31a33014d2315794381b753539bb48edc1c54019c779325dd033b359e1d0f5a2dd9f030c97c4ef1567071321959155779569b724396a3af21ac002c4de5663912a2ceed8bbfae8d87dbbbda5765381d7b0221d704745950ef8eb42fd8e5fe8f4f30944c0dc0cf5f5f00db782fa69e4d60b9357f51cf0c3742252635eac020ee22f2bfc15d8c71776b988433796736b84a190e3472256d5459a0631c24a5073eb2913c9b9c8a68a3bcd5a95e3edd366f7f5678a00339a345382ed7ea9a78e1f3840d0fab80e7c01d686fd4793e76f933e95b83f772e8ac66254e18dd56d3da9b07617f73d254713607be68136bfebae5967bb96f8554edba2b35e36cd4c9bf4e0abd7df3f117376136e85ec26c916e3939afd09bd3562b809a42e8c38487fb5c405046884e687544181f45481b5d0cfda768f223464878cd858465b84cb900efc39f8537ee1d3288d0ea9c950734064c5cf2fce49f17b994424cbc5c03c864718e6f7f1bebaf892d0887e5daf3efcb65f45f6005f2afcbbaeed2745ff7e23762023bfa98f38234286d4fe50855a4894ab20e792125af82bfe7ed61f568da637c623df17cc787f7cc303c0423d8a089ddfcb5894b766cf19b50d3d6cb0bca1b4d570a4f1ebe291a69866ec98eda43e40fdc07b73df24ec21290ee208d8793a6f66cb632263f8d3b0029cdcd1bef9c678181e1a6c6ff7391abd3c4b7d5fb280e43928f81af4a1e21bfd6b0b5d75cdfe018bc0ba52bd3a585f787e9d41476a77d309e65c704f06e582bcda003e29ca43150848b6ff5faa1a18ae10266b77e4158d0c662a761d765c678541fd65bdffeda5372820c5fd4af874a56de8a288af952a928745fc3b7bc7db73486e23f865be8a0459f4b681487a950229511a7882c1bcc44422002dfce76bd3af33e67a935647f601ed55f42861ea3c4c0a2ab58ec53717cb93b23b0b702c9b844cd3f9198c092475ae8923a399a7480bf8f9f4e2af4469b226c1221c113da012659c13e72ddbc26ec2bb3ab2f3d71dc0875f0b4b14f8a4bcbb5b63a22b5a9f02bbbfee1b596bb4a5c316d99233adb2392222146f254ab9d3ea5a5990d4cf862019348634e043ca5628e9cdc6f89dfe5427c54b49ac97c860dec8df00f7ca4b7a36a37dde0d5994eb7ad849fd62498757944f3230390e45c279ed084bec89d55af541b1e5f7424ff72b977e19785a66a9f027aac673f965dc291a6b0b54e4f25bc573f296ad38e95ff405ff7d75e2e1ece7730dcf298a128d4a39d60e72d9014ca3827b3841c2294987cac0856ce3d328353883398a385411ae32f97397f8093bd766ea9159e66a15b505090727d5d08651a25a5be780892b2e3b4e974effa18ec8837a83aa83906e9707dde856c184817711b1cbb0b4be543bdf30183596c9bb8b22a836a41b231944b21958662c85b1f3dcaf31a766f6bb6752a1cfdf9f31a40fedbc1e7dcc9342494322f003bd9f3d84dcc7cbe92af387cda758d0a16a8151630101d037d7947249a2e75598c02817a7fe57cc3f1f0c4690a23378f2fbc1211c6c0042eebde42c4c760086b60acbe298a7aaa3f6fba6b1e329a16aa200f1a2753ef1addef082449ecd9dc65f9d02320ef1633cbf6eeeefc3c40b683b8583a5aca50b53ab43c8f0d344fb709dd3270dfb5c039db3dd8f0b37ce3ba6cb3c704b58a9961a9b7e14812f072b72ba0ab2976eb5d4fec7edb7a568905574c28620b573ebb5a1603c5bc1e8fbbc98c2cad14d4153cff7c7fa97804dc9ad65ec5e36a91deb5151c840f76716af732007bccbc2e0dde44d86ada3a23e6a6154476263e136fb5b7f4b91eaa00487e0ae2fb51f175ed9010b04badf425a771075e4d5b272642169c3c1e6aae4ab44bbcdd275946d811edc7872e123ee602f22f7fca7acbfad791d284f3c27bb695cf8804f3fd92574c54c2ee363d948c5a6e29e9d85c5405ab469bb5638730849bcc02341c746f6dcbb2ce8a31c0d6082a43229b1edaed697b85ef4018d58f4d6a2e90cc92a9bebf5f44aaf26c8fca1aac355bf076314879eb4ef724b6627f16a85befb76c4221e513e48c58e36595eac6b6a98eb2ad1b3d7f3493bee76a88ed492aaebf2652803948789d04ffb34631c300f8a4f6309e1451e0d56bdefe5a1cc546b133293385c2c461789f83a34cf18f08c47955dc0e610ddf84fe752946e80591afe0ca4220247370af4c66c2fabe94d19e497a832e4207689afe6387c3e24dacb5564c1503a5b2c446959e950a9954d1ad7582fdc16278c7c7bc1c5cebc95bc1a27f85ea2643783036223aac175163b62a025ead11d53dbfeb3458b6fbf87e3ca9853fc944d8ac1feb463dca21846f14e36451cd6bffa3aa9fc060ead6687823d20975ac5d4e7bcbc75b1a6a0d23632db9a37222a1981372ad99958383404b7978aaf29a33e480809de8c922238bdc4d22c33bbe86b4b163942ccbd1abf55e08ccd91157cd81110c369fcd778e2e82f9a7848c5d76e044d6053b73621cfd94d551048891f61c02f9d025a837dfccf2716775b5c5cb4ff11368ceb608480b34715e07842fbe2dab2099b193d48b3b54f9924c663969189e6a58faeb92c6e4ca549ff79341f83215393871811268bec28ff09999c0337f1568236f11efd0be6c7f94370dbebb46817545c7abfc34f022d158c4d787935432384bdc394bc42fe98b11def0eee2c2bf02cc5445540e3b180739586b0cf660acd3072311b2a4afe18ebc6c86c88cf50625cfd30e91fbe0217914a660244ee1552ec258e5be95a8de2493d6260b9ce53b01c1c1dd1b62942083ffb06a328e13dcdb9b99dd476317c63a63d6f1273927dfa70bda5da291a0c600246d07ff31d35cb2e4aa4848fcbb55455295675d4fc00fcc8a60974236a2b42a404e7dc1b44563caa46d2de8f1d982ce55a120660d1d56ad0f3c04d4e6cf441824268cdc18971ddc15218739f888e179ba331e616614291fdee03dc399d246b73853ebb361c6dd612675d7266c9575e3a0c76c5090fc5e45300b8ecc2c2e2e31f33eefc819823718f96cf819cbf08e067a0013a887cffc90b149ec60de397563642cf0fdcd144d6c6611581537b2932c91e086ec8b5f15c5025832a8d3a83647ac564c798f611d2977f30755f6a6d9bd7f4f234d9d9baa4f384991e294a23fe2815f1f2273f0e43cea7e4a10f372f1b0b4f0577c06e4c20e5b8291628d6b1ca2ad0d091a120be4bfb21c889f3a4105bff4498dc4d16e24aee88427788e9de1cf8d5b9de809e91b7e7725d61d7f042df6d639f77d4cbc68265089a76c4bf0b32193d557467becd42511a479989847dabc47becf968b1b5a8a77e9a11edc91504dc5482c968beeffe410e80f02fe8dbddb050bb4d4e53ecd3b355bf2e33d0f18e53bc10e26e39bc4af37e8466a5144c7ad25f01dd375e068d5d8fa8b17cfcc5db7a4d80c4031e1cea2fd744f6ed14026288e9033889a760d93a025cc1fd50efe5dc254d2eea4672df40b3b7371e5d365067c68674677f8cec642245ec9f8917caae915b3197321d3adc09578f098680d09fda3a2c674b2b2f466a5f989c4b32d218455944556e60dfdb031be2d17b563df77c5f3c3bb2aa3832908869d292b2cc491344fd90b20843a207f3887347b3707209cfb16bc154c8e9c766cf7fa501d05209a663dd2868bee8cf4ba02e6d8cfa7858a920ca95ad04243d022b171f805d3d7612a90f2edeafd22213700c728662f041d60e8fb278c6c966439f6a9d7b15f71daa1f0322059db458fdb8c9572cb4451f05e21eb175537837d756d23806f663a94d79360cc4a120a773c85b16b1b71f5e786ebf964eaf7eab9c2c542e72274957f60f1ce81e1bfbe40f08fa3079fbfcab4170f692e87c92038055dcf7ef0ee765b3855d0bc0d975ed749fd9498407480ab3de3c1ccc81c6d9016ee75dd0262e9734d0e3f0336dd1dcb1ac4d27f33e31ceb0a7f4d365be88e9f77d246f72ce089b05542f910f564e243a7264f6eb16674d3fed89b731d08332181ab34e66a2609f3c6285e14c1ecc7c335062335ef69b4cb959aff23b07b821a1d3699428385afc50c10d5fa8d6f9bb9e48e0626ab82db589be21012a0a1921453a3b00b4b80d459551945cdbce561e3afb0d703f79c3f84380e29d89e40f126310f19204e7a65d68f089c1ceaaccf80cfcd17831f4f0592f8e5e9947b2c1fd2db965946dec865f675df4c7e6d4dd055db216e5ad385aa073e39b4afcd9811aace1d57c5caf669f7ba3bc9189c9c027d5ba825e3ebda7d02e2072fad83b7aed09709e18c42111ad8b9990c40204b390ab1b4ab49791322def7d6c713c8155540981a25eea262b7e63cae1322f8c6fa7c8000114ef473102befb22b60ee4556e6920f38e43416909f38035e83edf8010308b18d94b7d314f58daece095ac9748d14f192ec1ade8cdb93e4748b98cdbb8a0bb7fb85229bcc597d63669791d96998feb8906ff1daa44e57735ca13faacda540f857c007222d6f621670c3efa3628cbe89f1b8e3b26556de66245826e68b3b64e444174936fe79bda5a9b0a4c77f6bfccf5a8037fc7218e39c5e6b1d21810b64738824c3ec5b740958962ef96955dfc978d20191dd00f17f1a9ecb65d8eeff450d8e68ea4032e4d5f2fd0d06016b339cdd46a6710c59318089fdba38eb4450b787e2fabb71c901d5416a855109c01f9b26063cb320592e9a8e99f986d8aa736d38b9cae37c362e185aaba5043743630eab46bf018af49e6c8e1302c15f7ae3c216666f3a93e5b9f47254deaa575a2ef4469eb29552ae4a59980f56bad6c3ad390ae688fce317fb4a233c92ad055c5d0ab48b07b14021089737b7daf9f6c8d7cdce55b05da65db4292ffebbfd821783d4b3ec96a0d67b0b15dc3945091d7e90414b77f858db21cb07d77aa29d8c4ac3683f85294427fd840966449795f41233cdd030fee0db1d4e0ec7519dfcbc2c7d0d017f105f737d8f45208fab72546119dd7e0c89d169e1cb2c5a6ce9561fe4c5f112e64d330ae56ea81e53d2d39d7f3ec7f0b8bb44a451f9f1e1758d8bea0eb38a5d2a4d29f6b21e4c87cc7d4b4a31b1a26e86d42df225a862095c4e1af63c755ff79f2b8694753045c6bbfe637472d6aa15ee7d5bb0680d4936d3b33b6073424e97fd90725555fa0f0de750e30ef27bd8cf07af4332fa57b601d31c4508aa109481e017d4878c1505c897f70b2f92ba9a7d121c3b6f0e97b07d15e4caf44f2021574946bb42e62c6fe519ea6c46e9a8d967f036fa87acf046039a943279c15604d61b166834451b1ce33f901269c2ddaceba7bf912a302886b1242ea7f2d668f7e89f0d275d1f5a8398ddce2ac59cc26f54e1e430bdc974079bba79a14057d5555b00e88882febfdb9c4c246e4129b61d046cf45e22fba713dd286e76b180af0826d0cdb675ff8ebaf9ead4dfcfcffe1f5dbb9b8adb1ea494807ca49df781393191811de51d54d315949827b7622a8df75b63b81049dc224f128bdca1e0ff4e9c55edc32696c211c4563ab28399888e6c729fb81cc9b7cb1e556a91edf2939f4880cf2423942446d3b23bb6de2c6bcf2d01cd8b0481809a2e4ef59de5cb4ab98919489370bbe631517b068d3bd70bee09c0ef2202afe19567304bf1031423e391785b5a95778afa5e7b8e24a9f9d15c2c802b816c7cd5d58f594f53e42294c76cbb7055f1742618aa66c78b9683dd3408f74b5cd26a2adad3a8293975f906efb412d51812d7e493a4ed2a8fecb482d8daab3e4d98a00631b4f3c3a9be0c540a8e6f38aa33d9829616d035650e2ac465f0b49590fc8b5f6d91434d32f177500daea92ec9ef9bd046e3c1e96a9341e1f813ad0757a28d816d50d3baeaae903e197f62b0c75d8134f81ad74af0cb53c5bed52ceda5069e8cf1d079418ac0845737a4c199f2249f29a9b4f5e314636494d7901ec6c7802bf481304bdc8ba89c48e36aa6298a437cbbd1887c3fb4afee24095b77b54cb0c0ffa513c0cc62c6fab065f310854a8c860d8267e87162862d8041483afe9a7a5d4b6a6f9f13bffb32a5fe195534841c6ad3d063c18d789ec766e9ab2e8c0fface45378d3cf8e105e330e06a20a3c44cbbd899ae832d31dc19ca06425d6eae00bdb2f742588702fd87ccf8aa7ba20ede317a8c9a88edd41171512f6a3b566310962a8f99190ec2ab29eb8dbfb7e5a2650a298aa32deef60965d74ade6619d2eafc98a05b1fa2b0b01871a6fea485583901eb54939857c1ec2ee9258ff731b71addbca446a198e19be83745328b7c855ec0db8d1d81cf5152454cd490b83ed818d6a950d8f40c907a038973d8172c773d88a5038d59052694c074e3400c8084ee3e474cf28e5dd382b0a91b6adfd97a1b510c515c0928982f0a0e5d10db5fa5779ed238cec8af63d12b4ab3b21d2a769da165cbd32d706b4b2276999bafe45ea6165907fc43676e6b7915b68218ac0fd5dc19c1067e9368b25641e2f90d3d406aeb409f64c6b37af6f127f046e74f679ad82708ca80500ad59eb5e46e273d041d00bed48acc005ed82391984e69e75e34239fdc7d3ce839a4f04cf4e746d9e196e060af84dd8240b187d73bcae3ac72917d280fc5e99f1b57ca351defb5ac6c4cad840067e1afb161b37276cd17ba2193b57b8383fb40eb6dddd306fe647405180cdf491d58c4cc0e2b4e7fdd9f92e62d3ae5febdff96e8833f3ca65a5592da9011f8f3e7533f6dd6ab4c82d60b97bf5f79c94635f6f453c2c5bbc0e79d8e7811f1aad4fa87637325d0c1ca318192473f561c8fd6baae7a06384e3e93e791eacf23a605f690b718e239f5bdf69c2f5ea5cbe7385b0b9ed30cd9284c4c69ea6aa9a1ee0a33da8754dc02a6a5e0f37e60331ec9e0b180a02b3359304fabbe8aa383b85b49202862503610824a83d473f1b7d673bd0a8e16e2a3a981a6b56f877e650919cd24dd9aecb609b05e78de6552341c294ea1386435fc4de83d67a39d86a9342660c683c754382248b8df98934b04eb47599dc4759fbfba69f0eb41a8d7ebc8d6f00b0644a4a492d65bbc719aa4ea14ba3aa50434422a07bbbab2be2b9f951a5248563fb09a32a5db56f876002d04ec8382fb52146434b9c7bdc4ddcc2c28c4141129436f60d4724c6a19a9ad54e3f838e3417c89fcd8ba2d110a0bd592a9b16c2d9ec8275b0a011185f0fe6d54562283703b0d8d50f197be656645b5d6d4c3fe5d7da743128c42870ece106fe6993ba12d28861c9f37fc0378d7327db1ef494238323973237999ff0005e9c98efa03e3eb93efb8dd4209b552ffad64e067cb036d1abd2a4704de3dd4c6a6f17326413079b22de5848d844361c40044059adce15ee6941f65ca98f937a27745c7b1c3821ea338ae6cd90d4f52f10a1a176404cf08064bcdb84714619e2eeb84bd8fd3646e35111eb9828631cafec68962650a95345cdaf2051d259596aecb531782b87b6309e3c8d6939272e570fa581a0e604f01b29b14dd160d2af7b275ba39c1d0face24464087aca4528b7262ef77e0b8ecb9a492f7ef28a9a8d80820a4d65eee2c1758fba0fd0d5644909858de6b8550affb07912876cf2e0c607ca462252582ee450cd0040b5ee46da8f6be57de96cfb22cf6cc76a1881947593a2129abf4703167548f0e5bf38e282af0fdaf7f413a5e4209137322588dbca1da398f93e24e7d375c0763c0bc3584a06e01e12820d6f5d775b3f7bc865fc6625dd61299992169228e332b91150cc42d686e0accf27e089502a69dec0f2b301ca5fd917dbfb924910a8d9513196adebddfbceef4127401e4152645996f52bb7e37d0d1126129ef884a5c51fa46c7fd08c97d72d9c7429bf8533590dbc1949b164fb7f9d2a6dba19907a814f18ab100667ad720fadb136426870867d166e8fac5879316095458221cc3061739f923f86c962ea652164d4287cc5f75829ca1740fb0159889d2cbf0c086299955d2f8ad699704571a7929ebf13e30a8d4c0879a308973d3facc029d6eb86f58c89f521a9e6650a81468a56b409ad2b4902d606f0c80597fad99a64e701b351cde7bc0ed54a9f8b47118dea2e6901f9076e0a1eee5a8513905f82d3ef458d42d8bd69108c4ada2b93eeccdc4d8cd7ff661617982ea87d70071e22339daa989d757494603bf21bc99669b21d7c1dcfae77e98008b8c70f7b8f3761c21d27b7aed5c4c46a739fd805a424cbc388a72bd258e8692e0ad85a7aa3c38ee6dca2b284450de19749a4ac2a6b9fd62162ed064b839116f489aa4ff0250298ca5ae2f7d33a171221cddb65d4cf3e4f1f6e3399a6a79557700d2c41450bf852be775497519a5b075068513a9bd95a0702d93bc2e4b0732a738a496830872183665819d1ad7d3ead6cc5f349090976354699abbf42de4fb1496996aa502fe72e8e54ac63252143df5bd17d3c6fe9f794129e6000a28ec8eacb1aeab01fa8f87613f633f80f318c7045c96623b66f7c6a740574922187b2c8f975e76cd11646757e3c0c1ed26cc7f81df36fceaca0726a8567987a71a21dafd477d16324ace279b505e6b52decc7a6ab0c8d051516dc4ca67895632136732f838e275a20ed32f149e28ccbe0ffbb08cf061c7f6c396e13042cc57f229a3d945d1e2c5bea94f70e1f53d326c33149e84ef0134fc10f690160a35741b47dd0875ee9ced24cab248dd147ccf78c65f45f6b503d032c9c061abb95b3c529ec3e0746211871307451ad7cb5e9294ca6b6f1b7d605ee7a5400e8398c3e05e1eaf76d66f0e75f45701cc73812ecca344d9323034c2a586feb39421c9717c2301b8cd6b4fea5bbb96fdc0ccaf7efe25bd381a76fe65aa3e52be5b70bdd3abef41da2df0af0d87830463039362fc69e0c1f6787eb2ce51f7c268443cbef5a9d01d2a8ba12f4e0500c6f6a5b2bd8c38e56358c12c5947da5796b2cb3667096e6a9818ef36e318062064329e3075bb5c91b887ed69b235d011b6b19d56263c833bfac7156cd56cc1c049ec98435379808457b04dd2b13c6b5532433cdec1dd94ea4d70b16e80a5746547908b76b62a9de7e02b4dbffc2e7d26bc4b9bc1ced6e861e1d305d656153eb510e803fa0e06179072be00ef6dd15c442988d49d396f420ac8c3cd713c70e1edbe73782762c275ae32e38fb3936d767af4ed54f8c264e76b5ab49c290906bf914b521ba0cb9514c1cb28cb0430346c7abb9b25057c51c1d9b3612e5a0acd87561abaf15ef7836374e99d8106bc6ff0d3c05932c65062d58f3084569a813c78c16c01328ca7fc93f3bd4d6796e186c33969aaafef785d8cdbf694829521f723edec362ade30cacaed7ccc9e3cfdce7f06c06a02a004f984796ba2ffb594451cac244a31dafe4f313de0d3376aa32e1ddff302cba35881ea51bb3476adf560fb9a05c464560d1980aea5ef34491a905664d526f6b0accf892154424e86568d9ebb630f35336eb6dce00d3aea81dc235b1f5c26f5bd8b901e6b6a34edcc3c0499e277510262c8ed24975d28c7411873753921ce7f5c54da924174fbff8b1eaf29975bd24bf4d437011d5e67dd7f31429219e3d781c9bc132b19ad33434be9b13d0591f5331de08e5893dcc7b6f33e43d1b504eb15364a2ad8d294597bfc7fc549487dc25ac54d8dff102a3b4c73889889420a2db0a7da182aa26c0e8fc6336204a5e6fc508f12dcbc859ddf2f750e276ceb1f62daaf1bbe9c43bd6cf5ea4eba4a3f79cd25f136f1fc360d1d3c4404b9ad6e929d232611033936d16cea958e84ba7846fad055591ecf7e57d1590a4ff062c5548225019351c45038591b46a296ca6b41af7b0f2cef052fdd8c2f380b09787f7c13c165ce5af8174453bd9caf4f6ce6c2d6e941f4d7949b04dfcbf7056cee1cc314f505c02d7db08ee73fd3ced27fde060286d20b3485d8b5b29c4842114a7909fbeff2be9d9f246fb20dc88b11a599abe1d1d95f941c29dcba451b76b25851ce6c3f18eef8fdfa88140d9067a633a9384e3d08f25d0ef7ecee27448ecdbc06ba523fb0ce0ea5c83af7d2be587f636a93e0a5ee58b8d2e95a17ac632777e60715782a24ab86577e2fa1b9234458f0f1891a01213ccc7cdf1e6aa2f314fd63ae4fbb6ef42b86f9adcf9a4d8e8905c229491ff3b7db51aa9935374981db58b4f87ace2678c4a75aeacca2c248788e636ee9fb53cc876f66ea21a5ccbb39720540cb87db7c4241d8b097b2625bd5175329e07fe52525e8190e677d51679a3188ed1cc2ee1145fa9101e8122958599e74bc8aa5bb7caf99e2a81009dd74a162443e6dcd5115c0b22ae83a80fb6130813192a88a195bb44bec8e28fdab77a66696575f6f69697cb94fbc4c5f335f7cdc0e4dddf8c4e3d3cda4184377ca7033b7c049b7734116925280cea10169cbd0b3c4e0327e127f4366e544f309ff7187383b21e1cc71faf58dcf8a01fab268b5ec1fd692152cb74e906b5453d95ae9135caad26b44571ae66d9ad8f680cb242819391a4f5f545ad20a3bdb7fc7007fff12a8a085bb810e7e5d6ca350e9cde21a12ca809b692850bf36c37d19b1f54ea690c89588fb798c27f78b06a1247e7eef61ac901009226d9bc5e1b0c6b90bf115dd84d06c164187231bea89c2574c4a007fca4829c1dcf501b81cddafa83a319037f5a950572bef04566d3c4c7f867d19d60d4bc63cdf711dacad360155f7920e498533f5c2f8aa3297d33c20246a84fba41342ac56ebe3327c38756d225cbab8260c2343284dfe6937a46fe01f08e8dba4b26503b2167c142d4757a88d349e6e24f207c4c0e933384fecb573712c90e1849bb9d6e22d5eae2ce586ecc83df642774e8f24614a0c825dbff58521bc75aa349e00962624257ee0f30576682eb1faa726b0b7398823013eb6aa04373b78c7fe5d6698ac9162148412c2061f575e92d539d4f326a43bbe6fe681a4bb6ced3c737e90926e827797573351628aee5eb8c70175f1919a1a9aab0bba5cd03eae0222931f229917ca3f1e3821d30f5a634fd1d32ff0e0e275c9cadd9de7d174d885255ca74784bd89dcec2f96a6c80531ec824b07d3773c3752fdcc73448dc138267d19cde63bf8e94e4810acac7e9ded5c2d69639e48eb4090509eab37844355ba37ff89469808fa0a9403b2bab8b8341c340e65fcf3c5b9b485a2e7c641955c096e148794e6eb059cd0a69e2ad74b0ddf2fc14cbc79b7d3403881bcbcbee3d1500d0727602178bb1faad04d5840706c0ce1e3074f7996f18d54d2a729d6bcaabf71be191eb99624c7d6bbb1279d55533ef2c4724c02740b46deffcadfc987b7fcd0b644a7ecdfe557c5aea27a256ebec28a3781edf4c332eb062a6df7d6d99b9f746f62b5b11817ab9b7a81bafc278c1cb19a4a8ff200224f9407244bda1850b4c475fa6a2d557930856b52569ec539827d7ae936deadd51b97fcc8f9041e223c22d73acabcc1c46751844f3f5a27d55f1c353a06edd6464971e10ce6a0ca6eab9103cb3c8d544666621f3268e197cad2a04dc7cb467481a92c349238e5c0da6b356be70dc5e90b56eb4e9d4ce2ed452ca7569d7236507b5f21aef2dbdab2a4589860f4ec3b8c6bf67e962367b594b676c79e538eea524263ec77fafe50f9c743c8093e6fc3ecc816eed75bbc194ea6e9d70852d4c55553ffb575b093e1640a6f406aca8dff491a1d768d5a4e01bf7a73ffb93f9f3fe02c55c86578d2057bbc17a4cff923cf4ad4843fabada76d19ea399887916d54707bd775cbb8b63a91e7e6482b316f448d92592cc2aa545c75e30fe24e625f86308fcd4fe0f37e3578e17d9122f1982dec08bdf63d7866c3aa6b0285a01abd6d3d25d2ac05302e28a9c1f017e08b242dbd87669fd8bbf29dbe77cfe369f070d9dcf0577f70e10c16270049a8ef227f6289a31e2c9d419208351e693e86f2877f48bb1f7c09442338869a040bafb57ba2025f42b61340e36dda9077a46127b23dee62c190bb39c371cb77929f1dd0ca3f378c43c9701705c3d530d3b71741cae9477d2aaaaa4effd41568d6c614d9866346f82911e28a1ed415b70c3fb88c47b2ace018cb0c7a2d374409ab1d3316aaf5165b0b59527cd7a06bdbe5879b0dc80ebee5a0729f8f6ad5080e5b87043b9715d3f298d93e24ddc8e31cd499f0288f4052c2a852f31a14091de1290831c090222a2991d777986108314e8338efe00263fef96e56088b4e0c8762c96fbc4e3e549b9e4c92e63599c4395153b657622c0ca282fff8f3297fce2389e3d3a0422ce34a7e3382b22a3da81afdd4962a92397d96e5c1eb8b59d3d8e60693da4da74bc1230b43e75fef0a5030824e01c25cfd626358ea0c4ff3b84282aaecd4d61770e247ed8ea7c1f64207fabf3c03b7c26e261b8206ae067763b6681d70a9d99bd21411e5b97dd83d2a94e7e8cca23c0326cdc064752adae849855bc9998e68f18c69242f7e77f9ad8b14648060c1dacee26959aceacdcedca6ccf624549580b3212d5a132bc4d57433eaaf370fceb220051d8b77ed0aee32f9a9ed628103d773f26f7cce22d33d8f71b75b6e2448b83716a5eb875a018c74867fe883747e072eca1e1e4557c2b9c49b6b76239e11872c3d7f60aae0546898d248371777056d7153ab0cb4d51c513b8b5fc0f4af91c1cbca9732128353a3302bffc98a46bc2f3e9e441ee139e91b9c1e8275613ea720b0af8ab7531b6cc1aa1e0e21c7918551d9a09f5e253508777ab49480e6656b9f120174b2a5d3f43657ffd727f87d6dc3caaf4fdc070fe3f550b37729b2f3c36c6a7a50ce12aa413663644a2bd024e4cdcf09af98061f6a6bf00487909deac58cc1faedd34ef50abaccaa825e4610c855cb4d575c995463a4ae940689d202e85396026c7df5db23069e6f829fcec440c8a4ff297270b008adfbd59ea4042505263d374c0913d880186b16f46d4c3369b79509e98a6fc7f6bb453ae9816cf12e23f9e512eff83a8ec42046ff458f47ca719d355f4beb456b1c3dbe0cb0c43950ac6d7977578ba7d672b26b2dd1fa5ba51eb1b418473e65d3b19a5e6ab95f849fe99d06253a6695f9be18345e9f19c10e29c69aab69e07aaaee849a59270f8de1bc6ac10a4373d1f16d6013cc593d3ed803045f9010ca6aa85890f8f490fbc17bc962853ce1cbf9ab763ec020a2fb894b90415f8a57122d40f42181f606bec4567cc35063210d02ed16bbb7990f4bcfb4b1715ba05966536e31ab43a46e03ec903dbdc4bd3595b2882e0bb53cfc3f32bdd7c9f6a4682d7bd733d0cdcc9dc2c4003668a7b0cd7c26e85a9c3e1c14ed4595893c394f7decdd36900ab6d349968b87525a63e79e804ee08cad1aacd8b792ef3b5910e361c1c11cd9c316ce1b1cb2336f7a8704c2796cd8128bd4258a8514cbfbc1cb69599c06fd94340aaf7b526233d47f44e2c475994051aa3afd2881bd0db82e9e7a45359c8d778d3584e4cef4966e88f06294f94058a36ee06481dff1ee336521938c970a75f8113ac2d34e76e36e5387d19f7ca1441e569de272f20932eca3d0ff4286e948a1d443a1a5952d7537f925d2d7b34f7730aa0bf4e510d23079bd8c5458e866dcacb67d89f0c10db2c46c8de26ad6b36457950bc321550bb637891875cbe2c4ded125998f3145430cf9ada56a61a0878a65ac3fea73f7eba7425d9c2d2745d8c952d44d01dc70acd47657f85c7b795bc6128f8f495c17988207fd265bc9728b20ad50d1011e1c5bddf11d3267f1d013fcd040a5eaae19b0a2ffc625a4b6015cfd81f36336ec3d17ec22eaa8b2fb70660c1f4070f55d5ec45f58f3ecc0fcdddbf09113c3822677dafcc671cd344047611bd42fa5b4ddf4d8f693643554e5de2f30e6d0b7d5e77053545497be8f8ae1e3261d1b39aa5422e5446de29b537b6191138111880553a365624f63b8826fa81fed26fae8b30901585188961e0025aacfe42f7b84bc6e91a674691d9ceabdb31c23ae22b23fc23c90a8b949a36e5485cafd574f7a75e2c6e138d3e67152dfee38fbefbc589002f46386ee2f72a090ddf836d90e4188a6ec940f6d3ae2138a25a1fbb42ae311621299d0ff07b62b59c3e3a55fb53146f919732ebfe2bc07677bdb24708b1ebe650c70e1f9f30174a6b1a7abbe2ca7262b1fe392e34872c68cc33d68ac2d179192c11722a3b5c57208b078532f52860314e880c4cb7a9978f226736e42cba20daa6d33754beadb0fa6511a018c88b165433c97678cea6c373c8bfdad10e3d6d142fe5c712e78000a9f76676fe35b92e13d13ac9f98b349fd8235afd12f608d3b2fd6a16bf29e536f9223cdfefc2b9683596bf64117263126fa362f6fdd03e81c640400520e04d9a54bb9cd53a82caf4c0b12ded7bb734c80944b7b0d97b4ca805138ef5520a3f903d8547d45f24bd1beb7148471cd9c63ec0af5607b1fea587fdf49d6667fc101f98626071c99b7757958a13a484527648ee6c6037668eb7f2281ff927c91e39fc5961c281f5acc18e688f606312fbde28d700a5c9f9a786e5a0fd9f4b1b04968c48f54b274f232bdf4cba224dfb58a9366a91bb6c4b5c817025e0a402fa9a9544290640a4fedcf67e81cbb82f68417d0c8a92231758377b3f3bc7cafe419b140e70ab4aa6b99f4a0331de143ee6a62180a0f1740e8d51d3b2dd7a2ed14425c6baeb9c9a0e1bff0f66471e93dc364398d25554d2c344dd3ef04a2269baf0554f96ec7aa0e40f6bd78231fb37b7a7d23754c40288ed41cc6d36d4efdce7b325573f47125a8fca5fe3d3bfe48bb732bb5ba06b8ead9808b6a2d4c6e398e12501a45a7a627393223f4ddb98eb6f08b15d36be3b510ce52278109dabf0758a984603fc55b101eaf6c60f61ac611c10f6a3a39b92908053de857b51b519f9dac5867152aa840c9536f81a884a51b097e31a1fb76f59c6bd1ba374564ed91412a63badfa7db0f3fc1e6741914ab81551a47e42a8462edbe572de510ea06d61c0c292b99ef19ac9b57355df339703a694fe10365b1b24613343978316b8e177c22b9a0a4093a5f8984cd90e12607b0bbe1d322efb8aedb519d629407e26a59a2fecec9435eec25cb6106f71548e96af6f1f5572c4f54e1b4a3a837b54983b5409d86cd1f4e6985b8a37576c5d388b879cf55e427c305404a87ffeba3728c1501e1eacdc45a2a12b8d72802a965d758d69a244c0f2fddb1795e4f24fbe60c1301dde86e22df6f28c9f257647fab539653b883e3b63805d9770c31f32cdf48c951ef719b0c5895edfd2f6b5e8821704c6c129e9b11623993d187e3166b46084875abd671bc3c76cffa3e6e1708df64484f2cb73fbbe9cf91e570338b2dcf6882e594a4974d67655d78c24a1bc972be205e041add713bef0767f84e6faf172e098fa99034400d7984c71e645e99cf3b18b1c611c497f0d012e015c0126ede419c53bc387bf8472def46986ed2c748cde0914f566bb160345a2a0e076aaf4656a3869fc5f53e2d9f86edc19b1aaa9ec61bfe7d9682ebc16249f5498f00f82cdce9701fb8c3bd77e2d9c43b76d61a1b96442a560aac92d9662b467cf8ba958bbf8ececc6a9587bf337e69c106ccf5bd924bfcf336a8993c5a67f318ee6114ef9bf4509712798e4209518f881cf39c79b3868f4d4e3a1520ea13281b07fbc9fa5aa31c38487c2c3d44e379efd204737f41c6b0c5d4aec1b9751be41b686a4bfd6e78496c64bc9cd2043b837baebb649cd74b638e76b97b3068347db821b5f5941b3765ff38bf7e85e2879a27eb615ca5401a5edb3652c51cb0031849858166647e86f0a5f0d457408b5bbe02d6a4cdf306958ce46255459976d932e7e91f01d749afdfa71fd30eee0a77871e4ce52bf2c6ae8bb8f2ec45e3779a1ac49b7b6ef563f71a5b4fb071a23d439dcdb8666fb896f52fdf4135338b9f9274cfefd0174adb4dfd6d8e66ae522e993f322dcf97b814a5fdcb49222235ca1fb7adb5eaacd5e315db01d00ada1d6495bd1c6b64247bef85b020c86548e9ce5db0fe81f6a013ce43769523366d2560cffe39fd529a6bf8cab8bffaf97ef4313ffdf38ab4a90e2aab89bf0fb5c4f5cd74fb91b61503b5134cb6aedbffc35823c8933711e5438588513eb999f09e7e2876425633c56d2e977702c906d3b9cdaa7339228f5a2e1e8cd5b8b8c3aba09bd528740035b06757ea122542b390275123250a422805ecac3c7e8b1b8c7fd12cfa80c7c0f31e8864796b5ff86ad27547686af73013a14486ce523f61b7f61ebf884b843cbf8ce85b4de922976908332c563d43bbf76ec2e44fafd0f5ee49d7c44c9f8a9c88f4a541db0c9589cdb292d280e505567b82345dee2631ccfe83305ef411c9eb2f066054dcc112bd04b4e9354115a9e575c02e63c628c4c83b45c1b15a1cc8c5ae3bbd594199a8331f1a31da7cdf6fd4889b87dd6ec8e3fb5c7407d5947f21557acee7fa92ec9966f1078abcc8adeb7812fbdacab23f5bac51eae144836affa1b67e09315125dd7830dab4d3c9f083ccb77d06f62a3bec31de8d13eee995a63015f7d6c123639e39f23f9720f5def571fe75afbaa9c7ca9f0963c6c5508bebef785902cced83baf63ac1bb4e1138ce0bb194bad9aac21f3fa6c906f22ed1b877b929c6631621441f8319d0e41baef3e20732d55d390486d97e85438222c58a971f5d603f986d03b65edf280574461cddcf8bed8ffd1492d3f231d1b73683f33475ce9073aa00f293b02d38be6cc054c3091cb5fb642745170b7268de7a57187ac2b71d401481be7a13661beba8d07bd8bb602684163799ce5185a4b46bdd3354121c4eec7dd54bf762af0fa4e2cac4bfef0af98724a6fbedf6e88664f11e1242d83c72b350f630148e86f53e002637b316902f16af6bca8e0b54f10bf4ba9672d14f58c1f7bd36dc1d93d5df9820300a4e868a32e8ebdd19deac2ed5c85936337babd73e941cdcac19f458994aaede0f3e09112aacddfa41c18c689ff97b79ae7889486e76e4d65833654c1d84c0c5298da290f71f3660cec786313729fe7ffa814f07d8edfc8a1a65ef24fda3ef3c4e21d615b807ef3e353fadfb1e16837977b608f586422992566b53767a8f83f0caa97f742fc7a03906f3c0a0e7fd522d7e6c5af954e9b93c2ec4ff7be722dd5f5b2ba4c45c3e55ea24830cdb18e325735ed8c87a47456e0de21e2f92971d4c5e8f8837e01ef4ac5ed3562dcda977bcbaad2491e7fb8785390465bfbd5f6b6f9481409be8e8406c948cf6f27909ae2183e5d5b72f24837d2d7bc76c22a7ed57fddddd48bd866bca02afd60c47b732ede551932b49137d460654795f8b0726c86738d02f88f1e96811f7dc75856b50e50850af05ae595ac317650266e77d6415f8b2a9cb333438ad9cc92a6ce1cf00edaadc0803da71ae4567c053c9c72a5b61a6f4fadcee5ff753754ef64af0c72b419d722049ce7c855530f60763e1a2391dbd6f47fcac904678e15a7ccbab4957a647397a6c910ef97c6227798191cfb1095df8cbf3a30188f6172c5509edc5494e2083a776aa0ae2ff1de89630535f8831faaa11ead0310406c4f1b525f62061eb379c915ba89039603bf2a5b14ac692aeda2287ec71181d218928698ceb3aa09daee8dfe69af8fa4fc4a75347bcce44639a009a56896903d87cc487ac5308b523395393ab97df98397765c7fe94b92f35aac00ae75fea1ff6a32b3d6e9b3a7900a40b31e9384457d848a59bc9dfee14bfcce17412ffd5a2767c0020ce9378af134a9516ab19b31c72dcf0e80f4f3e6ee3995b4547b751eb2078bce9cdef26ff7a9e25d19f5c838c240fa4ccdcbbaf8d22fc6499649bf1b8497b1a9759c8c0706ea652924725237c5f6e7f15eb9de3b619b58abf9a034d59225e513bd718c0ec317a111c221f741517bd0a00239203d41ad715554908a343336d1e10d741167f23ca04be75f537387073c72c8dde42a85e4ac239340a8fd41bea9f8cc087346164561b3e22da8ceca939333a5ae6eea1ed4ac5d3952ccd1b7588ff8c6891a40c99737ec6b3027af8ce6f9aac61b30faefde6235e2ad60eeec1f0ecd433ec30d8c28dd03293268cea4aa7ba0d667698af2d82593b4d33dfacaa3fe876c8889de1439fbb56c204822bd628356e7ffe277cb9554e86a6b197765f865cea5739f045b4bccf170cdd08e94c6cd1b2484359807bec9d5bb48364b0df498ada3a3749ea4d8ab174f1f688ebeca28f57cfdfa36d53a52d95b022591c120142f8ee9e4b575ac298d3e51702a9262d8b92d090cc93533513f2f0c894ed0c9a6e5886ef15693cb21e329e0ff826a622ad0082b8e5c7e823cbe4e4f3768ca9f56f293f8ecad565bb5c10502d6f7d78ce2e46ffdddffa0a4abf8141e8e3fc836745c94941a8ccc6d25a31bec9f80c3b2fec4c7929aae1665b1d48c12e9918d2398886bab7b22f0c03ce8adab9cfb91176860a6feae2505b58fdbe1a0f920f1326369643ffea294fe926fe95dc04beb98b56f88a13182e971ad820761a7ce073e04b089b0d1824af38f0b42f93bbe46e882fa73bba97181fcd4d8fb7a43bbbe98a2fc55f381f5aad347d3af7427640813df118c198d02b846f3c896842807f6f3febdde7bfec920737e8acfdd472ae69abeac9338c427d1f54269de85069c9878a37b9a13fecbc3d2f619fa33517b9e3890c94fd18ff3738a4e891d26d3a3e21ec55e7983e1171e41dcc874ad56dab13c3ebd557e2b97714dcc17f30fd1f0b3f5abba63ea46f9e6497afd1b12bb2e707f59387a53569451749a8932ea603c853bc8a63cd3d64e0ce4673f0b030edd2f4f42927eb7e76573890f07679d37030116fdfbb7d384d41f769ee0a11e0a1e762455ea739cf7e77542944955a3489648bc4e7d24aabd26b2451461a42bd89c126a4afc99c5fa3af0fdfe7baf13c09a4f27fcffc320cbf8c3be31c96884c6134637f7d8e00076aa1445252c5a0a25cb5d2587a0db9b9676778190f080a95c4bf0579eaa48cc62da846751260dbe0c26abb7d0ed4e971a55e6f818320d0a71bf225e78e04283f1fa98e10060812b783f7710f4f8d50d95c744dbcc8267312978c7056fb1a3236d5b2c43ee0ce5ca933074fa0c65614f99681080084de9d6b3c7a4f030b3702176dce7af0ff98df7e08c939bbc1ecefbc292978976f3c06cb02eccf61061c696f3ba4576996cf9ec03d61c45c193dd473f0461e5e6984c750ff2b609795e643700cd6e1c11dc1a03e89724a74cd98cd5394ddbb47d1aa439ba1f95eff82ad2a72f43097621f2ac58d9fb196676f8e32f2e4c4add73713d35100811ea94d88686cb0187d8e4aa0b182c8b4808d5cb73acec09a72a85c06939a353f6dd68be5b57f96cee1d6dad98eb9837128b4c801dbc68db8a9e87c7994a5cb65ef7d1d5ba16c167698a44e0b18123d1af19c98412c9f412f51d9f1008622398f93c92e5a2e18caf893b36dd5aa2e114e217a0c12b080fa0b074f1f08b5c66dd635980a71f40f162c67919f7d9bf6a1cc1a763a527f7627679835b2a8ebcb6ea314febc04f5ff59dada24926a0e15fb1f702c59c6ccf1400037082fbb416d03bf12c085ac7038b1917c22301ffd7986eeba2fdaa72d451168445ad0fa706e717fe2da1a994033435ac397e72ddad610e7f981542ec92a8dfbbf50b5569d9249201efabab19b0824b6296340de7c22de78691d3f5be73d3c310b2560cacb24449701021051baf6c48c66b9c27e9a1acec93e6e7b92567d31fbe5a5845773702d78f289e1cb7edff4e3c0a22d9d18bc909c68d5afc9c6ce933f3bb326fbac47e2b9425b972b24c970885478fd9ef0cbea187e2672588879b6a993c308b8887e5c6ea3f58bc6f75e0408006b4274324f0aa84f2b42b313aac155cb606a10f76ecfbf8c0a2fa04d6c3a9f9effc65ef112eb562220549b5ef1ea18f5a816898776d4c47800f8ba32679dfc228c86078b23cb707a352b8d4ac23d682ccbc20ff675a7fd2e7328c6dbe287fb21bd735cc657af437e10047867f5f31f758fbc5e2250738c86b25ed1711a85b85e128ff0bcc3f74066480f08dd465eadaecfe8b79572ae7af53df8efa96b41a1f35e4dd85e4304ec23eb7b0d8cd65c5d0ef711912c47879dfb4d44f687d80a62c6494e3ca6f7e84865f951ca60a867d18a8a860bd3c060ebf74c86bac787e1d20ecf621c3dc032bd5ee61c315e2527dd209c075184d25e543f58c883ab431846dbbfe3fc6cc8bb94511c665e21999c4ee0590730e6f602705cc57d9059f984daa63c5878adf78f9c9976ffd67bb3da623d7c3791ebabd8913798f5de853b41b348406cef0b7ee18528c71d554a094ee939d867a0e1f03117870c9da1e0c0fa36bd1437d1f3500d03ba51432edd92955797d3b4c22ccaf3ff4f111209a5e2d3b88cdad13594a4afd0b74efa9b1e2aeb4f69e605b4c3c472246fc8054eaf1ed42cdd033ec53c75c81cb96b5f7122111c5c0e1edc65286a5f9a1b08ef24b498e8c98ed99b249102f0fdc4487c07f26c11dfca9e707937cdc21a13dc8c058f9474bb1df6b0635f4e9bec03f9716a36c3e87e001b236fa8020b7ba90339f01ffe714465cbbe243ba1707058887311da819c89425e38e581a3278b446f0a9bdce321f6ca1ba978bc05ac736b7090abda783c1656c6e87f164cb6eae5c7c7300cf64cdcca7d6ca966c993ee14234fcb4a5ab6e482c3be54581f3fa744e4a90ba00c14c157dde46cc802fddcad86177bf2412e3e785c45f3714181b5a057ee15bfa050ea04fbe3395c05e0afc4706d041527e7576faa06659d5acf97eae239ba645085f278ea97b90ceffcace12efb73a16fbbfa225bdabe22197cc311fbca8de75d5e9f3b93418f061d90ee84026ca47a5a2571aa30841d41ae56974c4c7c1ed72fc2d78a303bf0adb416f54b9f16da9293d7fd437fa227864e37f5f435978e63cf711b85d14ec6231a23fd38af77394ea4e55ca1b1ec6ec1b39bd0244976e86c6c391ea2da5c56c37b418b6a4d7ca2fe7e7c1157c5c14a5299534496ccf7536bd7b068248352a56645ecdf2d8c9cba52f52a82a5cc060608423d016b3cc0979c068c20e95770150dac90453beec52f4142ba25f16b557a2df3112867c54c9046947b5abdb5e0f5b427a36a17ed157e507f9642e55c7a72a27542e0dbcbd586693f9d972a529efed5f1c339097564c21a2ec7026bed436e1695e33df6640192f0697c507eb5aaf2ef89f3e1cf689e6394b377de547fa0a191a4aa4867db656a4999a2afaaba94e20d32d7004919f09cebd50f9fdc080d497af7f935622fdc5c50f7b7dd80104fc9f3740d2183d1bf32ce41dc7cd89253ad2d68fd27be91a244a8d33381afbb567de99992fe4c4e78dc81074719daba997015d3d603a1ea4eb7e91e9d53e2922930bb3035432e3f232d831ba0574031bffeda9ada30795291cc8fef5aee59c20cf6948e1aaddac9d3044ed57556a33e0c3bfc22dc52349ac62b2cff143155492310d44853d19c05e1d489727d0be83b30c58d548a5191c35a49372da4e3af7cd4f2c5bb7fece97ff04013900b44b714906f681ddc3e2485fbfdc4fc92752c818242928484734cb9d0e643b61c0c0acbe4c058ee8cee22c99ae180102efdf8d690403a084f5617a6235768caedbdfbf6299b283ca950592f411499b524d821c8ba62adeda926e02fd9888b99243c183fdc6184012be1b489b05ea958b98fcefdb90e709f219592b179519e528818ebe38739ce39a6beae5ed6d44b0b82e257eb3cb436ccf8f50b7d40ac880b4aa9aa34a73aeb66053a7c680e64af05b915805e2dbf24e82cc0915706dae13bdd4e7817d1b1f70d56f1551635f777201df058f6461c14aa8a3822f8fba3e33e606cd58737c79837a5c7550b8a1a375a6200ada6fd49678dd2ba928c344bacd594d49a10762753f1eb4b649d6249ff5432111436b42f6d50ed52ab3500ef09a368adf654b087e7cc0b616e57ac4fefd6bcec34c242354b773098f3861674d9b10d0cb38a001f375ddb38a4773f691649d8d1183acd54b7c7b2fcb00891367aeaa2cb4dfa356f9bbe42f4d2710109bd3bb23cdfe0e92089ceb002abb8b510f7a06c603882e3f6ed0b687a026ad771f1df0fe592cc17f94d59010aa68791804c059da9ec14bea6b5e7eb5861bd688b328a1e145b6b85e699fb99a729d962f6a2b3ac0362364b3411f435bf307ab19c3637d4b3c6fc26dbc38d23b91307d4956b25431dd480dfa3fe5ed1e6d2e264d61604e0b978121d4d19a89ea6addd05f40c3baf50bb21eda39151d97a56ec1fd79bb32ad00f156b685a2d1884751c6a9c34baef834c5ba293837e75d0d9c46b93022ae75cbdc1fd507dbe6d0591f96d66f1ca4bd1d403d84e499b6602e946904b54f3324ca2a4012f4c422276ec9cf4e571767b7acb02501984e0a2418a87367957bd463db2a489ff6e6542275ca2a180a12f60e882d64343348a02ed034ddbde32d936f58f788563d7155905b39cf3f1e54a4db9f71143618d5bfc418892112317bd4339902a08e751067448a58e2e48ee7de01f5bd96131ad1872b8da0595a1a685ba72d29bde7a352f38707a7116a4db666a149c67b787bf0a8d5bb3882c5c5e6d65be28ff751ac74b06fe05b179450b04e71a61882cdc4a7eaab11cb35c35f6588c495b5d12d8ec592f9f1aaf8bae703c869f9a1f9a537a4558054950eade894c851e2d1055c9381d39b9af400fe8bd55c42b14a1375e3b34612164dd2c265ff4d4c26a48138e299c328a3d2c51308f7c12f630975945eea5e9d1b60d3188491ddf48358a7c6bbba4184f68b0f29e6e410f8e4e2080423af59bbc0947ab37fe3927b7ae2c91350a424a22effc8387cb184fa71e6cb5f94e04e5619525bafe26df20e726dae880d1490d84f7b6eea4f0dab444a7423c717eb84059f5f778a6a548903dea14c9d60dd222bf3a76b0579b415ac67e7b8ee0a37a961a853e62ce44d47adeddad8be5deb66b9b4e48e580156f089c4784abf03cb7a5e64431825d0683a73e274e55e70f169d103f2d22c49a68409e65e0b647746082a0e53b79f75a7daf3437f11bb958d404ebf29a1f3a6193d34f65a4e6799d6a21aae27a4e1fd18b9eebb266fd5b7f175e9461f733ded43d0c8a93fac1b9cb4ff515a14212f2359b2359dfd1e5dafecbb57274209e4074156655d29eafe13d8c9abf639850a3b43f5119662a86cebd1e5f8f8ae89f4744b1d6f0cd64d4b05321941d84b853253d2feed184bb9af9ab05f877f99268090008a64953b04155a11418dec79036a75dc2557ffaa681b7d3b57d8b9256cf0801f7d665affc739d7feeeba0db42c7d2c579e84c505d2137892a712528e2dd5e5bbc1f83ad56216b283c5160f3a639f4dd750cdb6d281fbce6a30b594ad62a9bd07e72ecffdf5741080f025b51c5a97537fcbd14c3a26560b223832ef74704650bc315c89d4dec076f7d3d91fc5f6e581ff8aff6b33cfb0f1ff25e94c63d6a270df74c60e669385e331de42640663b964677fce95cb928b9971bdc762e34d951d6ec90a8289229172d8fa43ca5811494472c659438b0efeae8ec61afd79fe4f71855580184399fb8a4f23712f98a0f11cbec2340aa0ed15baa7806bea060a1d93449707cf5631918f76cae839910e73a32334b3df291e312bf18237fd752e01ed3c6e423cb2ab76eb5a6cb33b2d65cd2f69db6de9b4e3a2d20e6f84e67c0384f372c7905a53c857e7b4d73f54c526c89656d8bf4062b9b79eb40654d35eae250c2beb004a25a1ca38e922546182f4d05f20949e648668564dc4ba6b3a8876278332567b554da8fe719ab8beb8ecb452e277b69ce430c88eeea6e2f6e693e01f3eaecf8c0a226ac7b84501406bcba4db721f291397c82e8a6c9d38d6cb32b1916d005fc97bf3b8522f13ea02a2f418007963f536be80099e460e95c5939612f5d85428872092b55746eb83e55d4dc5eef9d597a4aae127fb732e44aac7562de2043dd0fe1ad9baa0dc101fac64bb8e3d3edd9f05687150a4cc83b2d4875a9905009f0c76fa146e705fae3b3200e3964399c7e2d4b4cc019bbe62a25179b200bb9d7fea01ea4780e473d2b124d217643d859ab344bfc9834804e2ed45698aac7a14369cfafc293e3a0342a7b0b63b874a5d3e428c36d7a0e10368ba086d99a1fcb10f9e30e038e58b1ad36222e76ffcd78fb556b57b9155f4985c9092af43a46176b5b7452b0714cfcc92724dd2f7d2a3b1f4b4c88596d08ba14330dd135461368fd9f531a09da99ccf9dab370fa185dc609b84bebeb5a8df2d8579a18516e9d7b69ba5a4ce97b75b8b3b256b403ecf2e0e3b3e91b7b07d861ef88179549d7a4d19302c17166991ce37b1231a534c7c5ff2ef606c63a735073f75ff6d82b9bcde3cdb504373c8fd35557e462fde0ac5eb7fe5ed56ba9f342e9ff365809d344aa3a287263d05449340a3915741ed5512807896f58c91dae96ad95acc2b2f95596291dbde244afc9cc7f4f16d12ce9a071e840ce75f7df20d4922e24e4cf17c1603b5480e8e163a60df75a5d576e883940cbf1c595b010977bbf3f4568341c72c699758563598d8888ab5de2f13daceff2eabdc2d358cbb9abbdcc7bdccde3c3bcf9e3fd834c6bad7ea708a24526a247b4a474d8beab21fc17692175a46c6d078cd6bafc03452967bf0a41206ef594fcbc39713caa31ca2d4f35b6a5fe062d00ba059efaff5e539cd6defadfc9db387e66a715c98dde9cea5186f3c318a88d68c4edbe535f2528458bd26fe9d6e72a6e0d7f007d767c43287915a64a347da56cabe9fac8cc62a5efad76694b1f718c23c4e74ffa86c3d5adac9c7bfadab25b2b4ca31dfc3ee9633d37d6ef9635442328d5339f0688417396e941cc542314c43b8b6e21f810921463b6832e60c1a1cfbb15b4ef0b09734fd3187d4a21059e40254fefbea8aaf8b6ad0f76cbc19b62795008b3589710b00ea63572f0ecbd780de44a94bc5cb9b170f68a4e3cd7fbd2ad0dcfc12ddd5ccec428c4f9a6834509386a98b03548f800423132e2df42b316084beec04533349b60c497d1af7ad20ca61c233e8004894fb3e47f20c3a87a28261bdf4e3092c58ed1bae9afd1a76ef0bd51e2926f0cdce4fca85db101324ec65cbe71867219195bbf9dbf32a2a79bd675d6e392714129a418ab72e4a30ddadc942c0037578a90383dd6a1e50e5807fd0a6d26296b6678d0a32dc2cbb4ebf643bd8f70007accf7117d1fa2d7735d50746749441148a4391975069a9b0c7f36de03c507fdf76725f22808b27b239eda5b4893ed3be9066e71511fd1a9f404806d99e10be31b0b2b55b37549cd40c5b3138be932587cfe5f7338f455a65bb7bcae1ba936c86e09163fa11d5df331c18716a4d99f4b4edeeb5257190de7c958948ee11af8f051d83f3a8b0da5dbbe47a56d266b25a3d96058a0cfb2ffe0a6ae39894de08855a9922e9f54243388244c12f16e94d446291fbf5d25f9d928aa004787fadfccc6a97405c8e2945909038cb0c5fac468faa61b052956bbb994839caac90fad05dd906185117067e15d110672cbac59a2741439637c51db4c59df53a3b64815551ae8609dcb70f890b3ef7e9ded49297117bdc17e47c8ce3f3cecfbcc9945950febf71a8b7be27602c245fa2287c0fdee92e5de1163101efc3573ec3ca98ae0de6d3a5d8b11c864ca399846004d63102afd1d2224a126e8b61c6184aee12a5eb42df19b1af4871cee81e570b5701c94bf2862ffd27bb05dcf325ca3bf8b7ca78b377c6bc502db47aa3d274cc9ecc12d4644e34eaaa43c447db2a02f3d7c5d0cfd35b40789f2fd6689544bf05d2d2074880cedcc8cf6e777cfb0e8927f617d0ea07c54cdc3a5e04dca761439d58604758f1b98982c8cfa61faf19437d7afdce43d2d75bfb56121a216589745852c8d317d1ee2b713fd0687f688a51009ff2efad3e030039103bc62891ab7f77c99481d37fc53903c0394fc6e5c5213dbea176d667ed4631a97775d05a41877589d3aa1e03695713a0b5feaffea3cb8b0c8498fa22963cdd9f046b5dbd781af257fb19b25122b08f270d410c5e8457d37c465695173cbd4da2d0363c2ee7ecf58e8f1d9544829eae16a703f38900a6223351d349a35e62dfd3a21b21a6775c9d08924a24a58c90ffbe559dc5fc0ee6dfb3f7cdf14c63a33d5c545c2874701d5ebac9c2e2bb6b45409d4ae624d426228f613768dac678f641c39e506d5ad96efab228329ed684df8abaea7ddebcfc01ee657c314522680e2b1a66fc72ce4e654eb422d34b4de671fde30ee6f1eb6c5613698e37e7e86b1f32ac1e29e9e767509a1edeb64fb01b8520f8941ce2e2c0d07f7c79a8b85b2b782f346fefef5021f5435c0eac18fd9aafdcb85c8c48bba86a8f926942eb80f769bfe80c1a8e0bc1041e6f0cbc85a3d85f0f57e40aed74a0de2fd1eec0c57658ef206b74a3465e0d41e3c8209eafc6967df8cfd8dfe46bb92d5ede9420055ff715d5fbbab8fa98ca5ff8dc0c80b387d44e2066412ba4e0f6ea82a13a29ae976ca5653f0c87709c12c3b963bb9042a25f4f5381990faa2976402e925ef9bf30a3b7a1769e2017d7635ed16aecc21570c4479cff7546d85abf7919d1ade7a2bb2ee0c4a08f9144f0f97738e8511a384cc55b15604d9d563cd5987795556e22551027203bedbeb2397d1f3fbfbbd3e6372a546d3abfd86c6542f18f747053226be9db776474b974f8d66d1b3f5859d09dccbc4ea0ca0eb8ef7e7fd75076afbc07c790822124d7b7c33f73a4415aada3e7c6f1b9c0d3f0186cc0ff4e76afd864e5ba2378f2478cea19a969d69b7ca06954cdd1e883f0cda3aa16f3d8d813a4c2d5c873ba42ec11d4ae88a2d13c96da753f87207cad4dc1c31bd351ec174337bd494c1ae83230dc6298eee6077a95234328a5af15f2716805f6ca961d6260f78b6ec904efdfe9b7d056e3f73388a239be226175d2395df53feea1cd103214457f3e5bb7c8e982fcbe823efe398ffcfbc6b9e09ae51b299f8a58ceac060a2a565dbd95bc0f2a5ac8aacf074f5bfb2e0ec53de62ada414d963bd384b84f1e15f9f41532243444fd66acdfe362f0e6860739b8ef105fb38e99f3896bdf5c3d5d0389e70cf53acf6ae7092fbdddd81cb8a0e8763d7c890452a4aa78086f11b11c3170178e4e3a315fb72833e4b8d2bb54d6d3aee79e8c7aa721493a08cd9af8bf056d4061908c4515d9c2ff97693b2d7cdb622f6f1bf80e4fb442e417211f563dbc46e87bc7d262b85ed4329f186e90a8c0031a5d38802de473252bd59837ceefa6476d6f82056e6f3baf1469dc172a47cd9e41069e373badacecd1d321d5fa4f3ec1242de72cf93ed2ba5e985e374905ec126ea5f55e3039b1804c3c24ebac21047f04c3c1b115746b90bdd524f5f1ce4adf25d7ac5df8228a5da33ee8d3cad7e1411df8d643c4fdeb76a6001adbea5cb85d2700a01a1408021f86bcdd2c165d52471ceaabc45c3c8c6458afb67219fdaa6285fde37c075d2c75243561b00ab5aff77e98334b5734d5e550a912d0c9dc9604acccb7c806785eb0ec938e9439003603bede902f7332d4ccdc32071fe5c94786aca3648a775fe71adab80c03ca0a5b5911143023c2dd52ef3f9f7ec86f84ca85305c9f8e4daf0538a0851abd9dcf7a0f4141e30ea6c76f90409091768b6851bf3990c4bcde19f1eab3cc2b5352efc7833f2c42f9da049746fe520b3cc2ba1f1b264c5e65f90b875dd90827094122ac9f5a94cc5b621a1ba54db2f428c9fdcc1a4d0b2d0200c258d25db5b726ea13bd00dca225d7fb2cdbc62488f8b7fe1b4127c71dbf6c03882b07c6f29d48d33ceff9a9cc483d68e44bdf949eb1ae5075ae058f2a2a85653aebadff91ab23a42207ffc281f6c73b2e7d4a2999cbdd5c4421e6223b21a268c3d9fad1b5aad774f16a99370126bb576cb6dd611cc08c945942e303028e4f9e07fe355e6496c4ee9588c5691b57d04ea56c81295aed229cfff6a0749a3830bba2920578da0162c1ace6b32b844bec1822679425185b6fa85eb9fe2486ed67b0b9f848de98cd94dd8e83c3e0d15f2c70fabe67299d3938a19388d4d2288a15bfd5650d1a7f2673d464929bd0386fd7b0819ccdacf680c393fb9680f1d490d445ccc5ae53c89745dd6f013f1b7aa6b6d9edebb301a72094b32835aa52e21267f54f58cb5f8523986a3dd0abd4451e98632819551dac434cfa983ff8cf7495cc0394b62e5d272f4b19038d6173b21cace0f75133725f87d92f678e75e2f4e036d5d0170aecae066b90162724ea5c583b78d3c403eb2b097243b3e17b989f7d3743528da0ef4dd53203f118b16407a2e00fcddfcbdfcb778ecef8f88f95d8b68ba5520db478c5205f2d66a0571d3de0b25fa897aed9114dd4c25e0a7c89b3dc30bfeee3eacaf71caad8c6a765cd5a6fb5f1c1ec21ac55ec4d8358ed373d668c7aa3ebce8be8a177243aa3da957c0960439000a303144faf097dad9e3177169bd65f5004ca12058d21fc4321db4c743d0a632fff38f46b2685bd3359d9b35f1d03f25b1f5d1009e434942b484b8d3352dbf89be8f305073f8219532407ae04792a96afd003b8689238c405b4493ef5e8ef7d3475b1dc382ae8cb015fb5d6b3475498e1c9f90797a52b79788f91c935688f5feaa0438b9a15e63e256738a203a535478ec97ff304fb7e8211af16a726a56ef17bc0850e0fd1f2900a84117c16be7750620c22b876db9e98bc2ae31bd61569cc7f53c8952b0ccc032e172fa47565249861d8e7e439bc79b454268f7f7c28ab52be84712a5cf8421312705e3136c9761d6a77dc5cd84d07463408916d987180630ac242ba7c72b1b6de571e381e81ee26feaa3204712cb0b83ca2f90d36dca0bc9f5a47b8bbee72a64c21cec425b35a7da862b4162d431b50493adae397d8f27b289eab9754ca35f8688e515f6e98afe4dd0d2f794e37e2f2cdd0a7821f4f85d910deda0a6af8f4e651a9bbcd1ddb2ef7f786a137d85b45ffaa680f0747dbca7a263f936c0f49e171ded83696542a614e58e598f92cdd71dd208fe2cd87f34d24c052e64dc3f067a2930d68dbe314102e3d91712813771113af3a7354f5bdfef411a00d96f80c4f818be400d7ae9c340b73fb4bbc2ea109e4d6b51b8cd9fe0580d5cb544335f150fd02d63988ceb51d4142b4f4456f0c4dfae26078b1aa27b3b3130eadb8c22fe744ee052d7cb3c7255ba95a06aaa24a2b70bf088feb0579cbc35c50f2f349bc67328b31664824a939982a96fb2181943e8878dc5008a0d4fa84b69e6500ae8774a26142c95981f84ebb1b61a73896945429efa660ff76049b264c3084d600560a2bb8e05181c59fad3819414361b44c9e04aa746faf8dc5e46e31160ee25a995134990855b30b90b722d5f6065e701f3759016f375bcc108e94314add5bae26db9590c85cab14eb46300ed1a4a3eb96ea7aaa62f7e26c7e72762cf05e05b5203d74ede52d615e7563e2a42ee5af4a2e57a7f8572889a1e3b1a3bee4ddd6691b78b2b422bd151e7359758c19fda9a058bd221d4658664936c714f1bc196ee91aa977282c698d2b7f89b59d582c6bd1a94f976c468b8706c831907517325595145304805cb10cfa62c3b49560015810bba40510c0d503b9dae69b8c9c3980237b2e44937586d7f83c1dc0afb174437b3b9aa91619ae221e7c0e434eaecec1ddd6192ce6e7b4d033c8baa11beda37cb4fd2a822d38cab80c7ae89fd3b77514ecf856980c6bba50077c268b93aed6817a94ce7ddba0f9f457213b4804ec6bfb2ff9501831a907a457982deb1ae09638481ee29afb4864ce3a3ad8c03218be15d50cb7d97c7e66af6a64cce3e797e9388538738867f0991cdc8de0919894d477494a8c1f0879f0a1497847e4ea8ac67e37867dbe9ece219ead32b80c8e3eaee6ad96eb5a9cd0e0d61fff1d1a86189bbadd9e3e73d0c0fb79e20c1c2c541101a209ea59a0f477c3ff3b53ff0b8bc1e98992ad45c0e8fc47d67e8ebd35c29c274c8da977032cda653f9a4807eb3ef0a42fb92188ff1fbe6ba1e279d25f3fad98bea61d3686dd93d7a7fd4a7671b89fd97754c1066d3a590b56044ec6940ff8093e22fad6bd9c265cd3c9d0c35e7cc3ec1636f21a8bb859241b57b94f3a028b87da8b3bdacdb70368bb3aeebf6c832262c5aa833576105ed2169c871a6239bd260d2f85c4f42e43e202ed2e4bc5a71a3dc5804351d1d81583b410d06783521f72d0de02a1ba1f4fe01633b7c9e3178b60a895a97c80cc8be96714bf97f0ccda3b785408b40e0e36859c9c69b531939f510a01bced87929be3382ff949834292608fce1242d2ff6687de8bc0d5dfa260aab4178d31ad5ae2aab0b26468fdf8422087bbc6370cd10583d2c9101bd2cdf3184fbe0a455d9f988a175fd20e5da1a1075eecff5af5b7e89fb079a8d3f3988be15b4dbc206a7de94092155591f4d0cbb2711334eaca65bc19772ef27534b0f95d5a60bb22eeb39bc36a81dcba79c6ac2aa6dae24551edcb82905742d71d593b0b447127c2d63b3a2bf1ef9733d22d61a216b55f4ed6a899a8b468c5f162aff9deda7a02faf4f159e307bbdf4f488898b7ca0147c42d2dd88b4ed2e5f4b0bfcfd2236aa5ba8a8a13a8e943615c9fd032e04e8193feb5e1d16e324c838bd724007cef32a95622456b4a75df83ebb90e6f52aed4f05a2fb1dce9717e1d465146202fd795cf79863607f3948bdff83690323b62ee458a6f4c2ac5f559c85c45d3cce6167869da4d41bc2dff99f8ad3b10fd033aff30732914ca16ed3de7da6f3445cb011d028b91fd3d7d8bc7a342257e366c1cd07a6fdb640110a976c557ff009314d949a3f312e27cd9756daf81006b4272201020dd5c99d54c352578a51657be84b96f30aeb1e6ee7262e3df4590143a4256f72d53b393d388280dcfb26df8fadbd61a2b5b4b9941b5aeccae950b687475e9a1ade216ec77d5fc2376d19f349c24f262af3c8330d94d1ff4bbff330fbca27a08acca70a5f584f94fd07eb1223fd3981dd785b571e31ccaeebff8ad14abefdc05c85f3ad35f19b9849d62e2c66487da4c87e35607603caa03a57dae5e206222d90b414ae90e52f096b4a01d4122172b7c841621f3dd3fe09fb1ae1077459934fe94af97960c4b017c1b750017817a74aa083eb37019994e27abd2a6450c353110bf771957194694628d5b597d3530ff93909a686c406bed3a35baf494024ffce31b546616a4c0504b141dc44ea0c8190931b0e071cfb98c4733244a537afb1fa153e5b213d5a191457fa7a72b912845bfd0834c7cf10e13044249c4a286d3ea48191e3f2711e808e18e4dc4e1b44706672a0b8bca70e72b32137d82c07b8b5619171a8a4b06c837f1a48f92d731adcd9cfb8d98c1a759a6e7815a8e8fcc03b526ee55ba33e0ed77280521cc53e1c5bc49aaa8e9963f73d3c858dfa41a4092f358cbafd6bb94063733b921f03b7688cedd4d2b4e51dfbc7cf4e103e772beb9ecf1bfc4f363232df495c7c32878130798c1a124ca2e11bee336535318c2711121a6f815bc9f38a3b0464e832f8d13a43fbe34fc3768aa6424e493543eeeafb9cf0815e04aca7dfdc0fa59295be405e23c24ff154d6bc1f9752296f84143b7c483fb76fae23443fa670069bdee20a0cb8934a6773f4f8bc2e5092e626fd523cc8e41fd4f1b228aad3de6106aa1265c3a31444a1452a0ae8c042d2be8eaa3a3681c54d6e5f0a1394a4d5443c440e0a9b7b88e09433dfe9c14b5109c2f2019e3be0c8ca66559d2267d6dc1389d20033bc05be40ba82463d9ab62454e18cad776e00bbc8a7e34cf5ffee966e9c0b85b6e5c7d48a8f02846d7a44800cac5ae416c7a14c845fc0da032c575e3a0b805821e6e5b55715c909fa9cd685d8da6d3941906fab22824c16c933457be8cd72ff3926505a8a51ff400dedfe4f24c5ccd473eb966c8647a8f5ea4d773c64be41db861d4238dfcbbdcf8b92e2cbacebe2b79149adc3b5a9d70c9127be7c941e5e751cdb10723312f90dcf5fecfcf56d81ef9ef4e63ff1e7f6145061575f8312d500308049a01c367e7bfb604f14e2936fd582869d8987047f75960f184d0e226854a8c11f51eb4cff486c54590622458bc32d7026dac7479a01523b677c77b935df2d6a2c979bee2f46fd2d9587e39479dae874f92732bc885b9b60088e51a9f15908d67b4188b8f1c61491bd9bf32fe7bd082c274129b214b08ff1b50805a4ad366f79ec96eecc90512f5c7f2088ee5868b6811f4ef83c17bc25d08bbd9ec43111d057ddae714f1028571c0cfe054b8c780334c876f2b00c4eb7d7415fad03e5a1f48a2cc1d5ea86fe61937ce764e4679a0958e3a3d02ab9b52c5336d6b3c445f5dfbf85071d498b70073903d544fb7bed66d5c596360addd33383481b1d48f2e9b0b9000a099fb007e3b8eea164f6128b03e75dd17572f9bbb01e83a3ad3a4137d6cd0f71c42113e53c6e7c78ecdfd18dae9e89083ac9241aa2ca96a625246a7e6665beb62286f45f04ee7af5e9e4e83ccb5cbd1ac83aefce07a624ca26f73d287d7e3f51748e682bc07fbc2d6fd8d33cf95afac4dd365773f6c1d8fb76876f111329cc30677811d5579b59ff00b1aae75c2215900deecdb6e6a05484690d6c47e80dd2aacc89ecae8272c3586408022fef164cb0a7da4bc97bbce99c8ea3c357bae3712c678c2e765865a65f659c5ba906e82dd1dd34754370012412c9cb21f430f94d4e134d3049f88b9ca1e6cf26ad1d20d007d57dce3e155124bd90e9d5eca0b0a823b91d6bbe7a2fb0b86127519bb39a5565c6f80090d3ffcadd77c4ebc303fed2de7351852e6c4fae0d06ce66bb0905c5e3232a2f556b55b29f0009d45a48edea2447c36e83dc1f49a2cd13434b66652fa7f460594a420ef9536fc89c7c6f1aeaaa8a4f8d1eaa840a0d33e750a47a9126cd4029d295eddcdc298df5b946bd3704f6ed57f9a70d9a1611af615b9883b5834472d8c2fe47e324703ee85db2a68955599740cad8942fbe7bc73bee67bdd27d670503c0bfd13c5ca966de61c0086ae18a6af37292aa45e131445246f4ce391052c1076e67cb73dcfcd376be09a5c8e069f45d2ed5829421971229d20ee214b12ef5813579790aa8ced23494b6d5a460d0d2ef7b67c105e5b87a67420839dd57f3e4d607c042f414889901c41de995308ab01eac407a3828e78c542ae133e5d348a5ac3385e71a47dbf3a9178f9b4321cb16e47c083bff20a5196030bee1cf7296236f491de4da7a0b745bfa09b4ec92be663dc63da5e1b01b199dce816d12f76bfccd0f7d2d821f04f82dc1e2dee1530a47ac36d6c098a7772240a3adee7adec30f3a88c8dadac1487f9683987f0acf5eb2b31f699793d5dd762451ed69a7f8d7776d030efb97c60726f2835d595e8a6e9d5e5237d875eede2e46f0ec168c4d82a4e1459fcae9f4d9980228149c6cf5e6dbb90ba23d943b954c4a0e5d53f15364e255bcbab7eed0f87b6981c219d687448555f1e22c7b1ed6cff43e4605f2774e824dc0762a3cc6f50f3066be26d02f9c9bc71d17916863216db03c0e917ff1a12a8eec20d05b223cd5421914eda510b41f293def42ce6338330c99d0f1daeaa699a581833e48dfe70ef182e9c93291050f98b99666d4f8863e38fdecf41bf7104561dac21ff43dbbcc6ff9dfa16aba8201b4f7a309d53dc8948dfaec13afd82bd055f0c4bbc3303d935699b6f7d0e5383e23a323f3df229166036b23ead5976a4757f054a00e964ad0212eaff600bc2a270e0b110834cfaa3fb961a7cd20e9526d04df745da142a409b0aa77902683fbcda18ecddecbd3662271ab8ca5f8e3fe29394d8fc73ddc431ac8319a4485bd455c9019691ccf2d572511df7bb11809af5b9b1c7bf5178481e291aeb525f117b7bb8db0cdfe1f1914ee23fe0b99119926dc1154833c5751548616fd003755a84b93d30d2007cdb2f94e55a57fc3c63acc8b4404e5c09b9b37b4c8a2da4a2f7c42409e4de70f9f6b0761faccc7aaeef1c898263c75cd71157f76fc1667210f77a5eab0aacd3a914a4bae8819ee9696659f05680d6109e0b623c0689b7fa41b817e36ce4a0c0a51ff826418bc48f19c76f5a702a139cfe077533daaa473c48e05145c411bd4a9c2c4dc12e9e2192935268a75af5bbe5cddda4defc1d25ea735c1c6a256bd45e67a130229deb97cf568cc91fa6e12174f384757c292791593f0e06a53de82ca8a4324d648fbfac19a909ef241024f70e3c633cd9b64b9e93737703638af7ae0ef9d42927feb0e9ebbdd851b4d73a42bc04f21a5556427cbc892179fa9218dab4c3bef29a67dbdca28d4456f768b13169f1065e0bb2206839b202bc1f891a8ddf982d2207c226efe13cbf27dbe5a7f560d3ac3bee7120e0fe211092ac1e1fdc7330d7f3c8b71f85a056eb88611b331069a70d9b9430dc65c6c2cc81f4df64ca7112b04bc85a404b6f43df0fb07ad6fa5384d59931acd6be7474a36c0c039417d585f50ff9b18fc5cf20b880382221ede50dc1200d3746cfa80d926913117de0888df63c839d18936dd80b82dc3337646f11ecfb9e0066d9a3f5a115c2981fbaf00175380b6f3aa63be980bdc60c2c915df88fa0103eae256f8e2ff6e546dd26b6923192ac74a4fc28423b3126bf657fdc8821fdf9f6d3c866f9dcd9c4453990a8d583aedebc389f304432faeb4bb3197b7e9309fea3e99aedb47b59643b03058bebb3662a6f150c754f04437053f2e1df28da4680bf3121d8ab12f792886dfff7288cc0a0189cf2fd37744cf4b76ef59f2b45de4ac8395ed064222a605da1f392dad0aa0d3e6441e70f79fee9f98f605af95674a2ccb4705f0735d464d357b91fc4c33203b8675eb11e3d1eff99ec80278de7f5b270984c148526b0cbc247765d63d6ec6ef8aab2d488393a012c82226dc2f71114b64605d5a00ae12f3b891dac6894b567e3a471ed6726353c6193f87949d3d101562c74feb33ceee2a074e6c83f01565ed7fdff000215c2badd928803d301922b16f2024deb57954d3a9505e3864f58a0268f2bdf8535a9c571221d5b96534483b5d888f16e371e1433b8ca5828ce1a52ea625e3249f7359c31413b478ac562a76df99c4d92eeaecdbdf7d1a68426498230f17fb96f2bc2b2af2187e7bea48ef740cc647bd9d367410ba7906c8152c2e391ebdce690a616b4103108de4f90fc8cee23cc69d4aca7ef075075e2ec86e10127157e25bfc06155e613d670c24f7b7b1c165b105e0859399bd4e3a2cd11bf4644aef7f87ae88b5b66d021397ac6a6391ece7a0e1245619efc4936358dbde6b690f6861b45df9a52949a17cc745a2ef3d0c43bd5e6922bda8bdc3fee244f2072bcb1f5c6119fc51835c11205b991b3de6acf7b4551a0b37756311b037a0c1adf0aa1fb04e446a823dd2e3688cc4e406e8be3ffeb234f8088073a1c481345c51f980dcdc03174ae6151a387a76d6b6b057145767e3c87710222d4735067bb77a0a43871d861d1554a766c050f954e0cdd8e853376a7eec05e6d750942fa5c140b08dedee36b64e7d662ed67069b8ffaab7548f616c0d0c43533a6438d81344a4991bea409c966a0e00ad9e92caec8d6433db9d8d2ac4ad6a22236b36d7dc95742f506535a64303751b633ffe10d338548fdfd7f51905e9cb98e38ffc144c1e285fb3e58ee09a60c6f291228ae9c10ddfd128725e8ac4839ac8d049a07460a752966cb030e04a4e8005c04b6dd4fd73ee0d6326a78d0cb1565dc27931af4a80a316cb79522757421e693abc57f346f79db3a06bb9237a1ffe6c9796a4d6f36f951dc2a549ad99d3bcdf8fe782c74be2e7abd43ed583c057e07fafe9259674773ad666180a313a8045ea1238ac4032a95af2557b7eba236b30a270dbe76d9c64cdae7196c07f3cc4dc805aa32bea122421f761c38cb9fef1addbc34fbe186e34f376c3b528e3f17f8cf9c24e98b77899e75297f81f663d5affda951219029f45d69edd5d80fd81ae64eae843adeee698673d7b447b26e38597fb57542f331c5b850a64d83a73676c8c81313560f04fa5a4c6f7b008f084b9400e7f366e66826e4030a471d5e4f44dfde244525c2f9daf230ad55007dccbdaa67505687c00a4529da30aa96fe5cb05e3988b2c53762c61a77246f8a5d7f6fe7a39e7d164860926aec2a9f108cd635bd908b5abd5bc4c363bac5e858c1a55490aaca553bac86c9593f5b602867f8971822d3712a72dc268971195b815adce19621fc58fc6633aee24d40cb8df83db5c2f89c611bcad47aa2739479dbb6d5c8b5bf050c8156517019890a9821d114d0a9563deef572708af3ec5358278b38b4228df53cbf1de59d452392f69fd08a875c7e93ebaf918248840c202821ee1fe8b3a465fef9df28b2651bf64986b320630f5b46a8b0b6c32cecdacb79be7fbeacaa2410a206662ecc0c731b2832b6858369d9128df8563b89b39b1405bc09d98373c426cfad20cee99ef4aa89554dae017391e03f7f886b557d4d4ed110f6ae7ed42d9a3f994cab7c7223d777084f3b76c95fdcc4eaeca1850d580f29ef981c74b2dc24fb3f808a342b5aa75bee8ec489c52e61321d4d94624ed55e7c76b53bf9fe2511624f622c07733d69e92829ed3f347ceb2fbe45398ffca46482160846727a97b210c2deb50abf0630e5945a3eb0cc3cd4364bd02daa31eb7f6862daaef5d658d9e5b60114b2b0f798857f37af983dd1ba58c118bce43e1c3b424dbf2979a049e3caf420eda516c9ff2bdd9edb6fe62b27b1735dda72defe8ab0ebde435ff2c6ab2dca508dd571a99d746ce98b58201bdacec66b88e453cefe669dbdeb2b68c04388f5fb766f75139e3671032d71bbef4e41d13e721502d6ed724e6128d8362500bf4749b3cde056c6b12f0c9d4d2e76d12dbbc76ef0ce031d03fb747569e19b6ee765f0e59f081d0e3035c04b9f3022ce8768212fd206c878ba5a5d134e412e3a48e7c886c5ac0ae65a6b90a64a466045f7b6dd344d166c7a3932ad46055f5ae7799fa3358745e9a3181a8bf0acb86f530ce004e308d337618939b0ea8e31f72b4c9d458b3735bc927399390b244241e5be5b6602249ebf8cf00fb2bed9016322d22b06e48ee0a004e21301bb86bddeca40b624befa8e42c102621cca5dd040ab582aba9962ce5f6515b53bf4beed8f511b5a0e360fa262706e1bf425987af1ea7c474a74e4c1f4afd87b41feef484196de3d74eb0ff510043dd025728976f3e60e7347ad8323556c5078a86fb98a44cc99a6586118ac4d8395cce2443c01007c04c25afcf4fcfdf3ecb1b1d1bab255ff565fd0e27e40b30c18dde9e6f0ead0cae05e016812fae08a3b3afe7cfc978940beb60b88b0ce6419878491786e4df05912ebd0570dd85de52837181ebc765bde58fe6ee49c0605add7225a2f64aea72d75bcf7ad316f3c34c5e38a6156396c8a22e80246255dff9952a561c408ea28e7116511c154df40eb9da4bb24a4a516c25da331b4b651131273ec21e7a2d4999556895405578907b62a18a625a741fa196b238676c4724d4e164732cce189db6fb78cd4ae5b9957c359e944967c65522dfc92953a35bb903712763f8f93fc9a9e139357bccce9907c5c0daa06a0abd0e2f18016dbe246b116c28f6b5cd7005b3072379f24452a634c84cb656ae35d2107b80cc660433ebf4cafc6705af8504b474ff66103cd03aed97bae97c53ff582bf8e44ea2adde025e6894a93319e48989afc93b86d6a78ef1b1272d85ccc63a64a34bffb265d200ef85327433194bc0394698206deabd3cae3857a80b61caeb0cb912185ecd655d5245f692ebd0f12b304b9aa87182ffc2b772427c49aeadd0543f35a824fac79fad31f3a434f5f55141d12362ad5cb47f444939beab22505e277b9fd82ff4f9cd6ab5d9d926501a6f9974cacc176ba116a9cc92867581f3ed147893d78b3999f170a12f6b263fd5d70ace91469056fb67aeacedf4c563b27f2a871d1cfa377a7baba918d47334afdb690328c262f8288393c0004cd5b346e529b998f347d512902fe5ae09e334f145c5363258d1de553fb181fb86be30200f8965438b02ebb4866551eb35c359a3d55311a9059dccd463008e760ab5efca75fca8e3e795c598255c4e1eb7ee52db46e0424529c039528a362af45218d7a5d915e07b7d60a4b764d21ff86571de5ac756f8fb918dced624c9b9f0c27123e9d2ad310f59093d76c1936d216431547ef0d76a8b302fea9951e94783f20ae4fceb6300760e73381f6d7ac463f58c1f7ba05e5017be0f21a46676008e22757d1f407e7a42dcf9b22de0c9146225ee3aee4c9768d5e912b8415ff8b97eb50c255cd8d60eb5b747bb679c9b30e13bebb8baa800f2c9df9f2b4595ee669fcf3d68d14052efc032edd9c827c752a041a93e38b7ce35943a6aa8197022a2f68011a747109093206e1a843c8a0595c117dc87b1a652f84ab29591a5f3382ab81a5593175c23367a8947a728d80f7ac2e3eddf320cdb09691a49fefc58716245927fb66052a65894435825c8931f6404d28da9a85a19bac9800539e41a5acebd1353ea8f74693b9abcca5255ef861ce57024da4daf1a5eb57f1e402220499a1f261bdf352c5466708ccd76043a0e4d6726727b6a4dcbd1fd148146a3ed8e13f802529a2db4c924199fad4ece0163096b82ea2a6263cdee2a908e326b0ab02ca4036af012900a062989e88b0ab42c42766f359912f32416b769311e58ff6afa2046720f090c985d4b465450dac649520d849d0e82f7dbaf5b157ad9b49cf4386ceb4ff6d07e94c1d69339b862b54f749bf618e2dd214ba36d2102669b6f9fc474914ff82f48f88d7159f24dd758a748ebf50802c9c724dd49350c7b279116209beae43ea6c5b860c6d19992546886532f68c171fadcb8d0d1c0d70379396ff2c194884175b7ab9d4865a07b8a29967c9a5269c42b122aeff76ee79c86c09784ee91c653f6cf06ec0869a1f0369c4e91886bcaa4577375365cad091ac0f615447904ba174167d8b79933ad4e70aaecc036993450481f3fa0f8daca0281ff9945ce106505228dbbae033a56e5bf27711e0c5fb01876f24faeddef98105317a6bdbd068ee860f35643ca26347b0ca94524727b59e3353f91e7feaf48b100f06e855c340d5f576aeb2f001d3cc7547ffb2c3d38e1aa37ed1c520fbbdc8a778c239c7404c15fd7e953eb6b9941f7395f18f8a42fe6fb549aa9fd6d0b67ef7ac6fea5854ab0af61605e38bca32f2b5a7f0b2ccd870577af96337a22b69d6c26e8df6455de3c6aacc25197cc410ef77a3735cfdde647531fd6445de9fd43404003ab4410e9aa817915cbd2f95eb4e5836a62ceaba1d2dbf130a7bf500bd9dd5bf05cd4f985ab37bd6bd87186991af148453c79f1e693ebf78d9dbee4db156acc1f9245ad980ba314135e460fa89f0b251cf40417e9f674e4cff9fa6b3aa44167a63aeeedfa21318c685fe20f4933986471e2078b488bfdfa9f861a34d22071163059c907641a21b60fba1d77ee48f27f6ee7ffaa40f11f0e7045456eafea3d3bc2f5f3bfabc40711863f924b97a7e3255a1acb3b594a08ce4df2aa9bbe7a9ae077e02fd54a2249be4cde206089a82e16d5bc2f729ee4f9666118f8091dfeb5bda17b64103b86a48822b96a18dd3a06cce775548ba1d4c86f31c3e65f4cb66b08f4871ae598bda83a08a0583d0d0e95f82a9046f5c3b85f280682ac399b32d017acd802a2a8613745095c94e1fc9977cd945575078fee3b08060488d554cea9d6d7e86b3121260ab602a40e5625573c17b5aa354b1a19ee9ce50c3bd089fff1052986cd69deb02c7ee25d792ede5de9276aba3e54c2f59db844e389f183ea584ffe2842ee5c4a7d081905cb55f1cf779158da2c29b22282f012a3bd08375ebf278c1c089fa180302037acc132ede353b0afcf003c01a96b6b950f22d940d6bd814f4d009a6ea84d27f21458dce625dd0505439df267d23900e8998b164a5f1d50346f32cbe702309d08c7555e9e85e96250814cbfcc1062a41352cc71da425ed81930470d093008f5c0e3bf0d371641e2529f38c92b84702a14623eb5f12f32d59e560dda8f8059bcfcb05fedf5f720b3f2b3f3249bf9805067833ff1f72dff685f00f78a3aac7a111a7c4722b8c0b8b35525ef9c6d14c41eff98b0b8d60761e00eae9b297f6b186a1d82487813dcaddbc4f3060ab6b00196b138756d4d05a644176f32d01b76b1a9ddff7af652c89976a284f33bad7412ae7f78f99cd2b850bea8491b9a22721a882c6ab883c1c9862efdaed771bcf463a44dc5a76c946097c762ef58246371fa473513219bf4a977e689b2b5622ec4769ae6e172166ad9e42e01ea0f9e53b54cbd8b2f9910095ddf640e51f5d5c84a6284656e4e75c86a57e9b6ae0a69db93e1a3a54245e503f327ce8679e5cbd03d4f675d81b4a10bc343b52072384aa181dc45b877132cc90f2def8fd333363b29fbe75aed229ea753ac8cf9292a2abf783472345130fe5a40c057e00074400c8c382999c6991312ddd0e7fae49665fd2c35c35a668f7f52e82545da99a12827a96bfa039e1d1e77629bcf9284d8adf7c0ff34a29b69f3c42e955c80c195a710540f56e1af39298bed31c059ef6c79cdf9060ceb5fb7e00646bc3557ac90e965af3030bcf578dc0b83685b720675044041900bb8fdba46ffa53cb5fd9cb7160a09f1946aa4ed17c2684beb3c033ae15f203afce7fc74e1fc54283786a8916b4cbe06174920ac00176698b40866a3182c3f7482a9e62c7e3f278989da0b8be188583a8e05db4e1d8ef84319ad49c0dac45f0045a37aee5fa7f1ddb6b4fa756705e1eb2593df7182b68df18a34c342bf133e77638a8909b43c0892a0f69704aa0dc189bb210a360f65b47e4d03f000960bb7c43ca1368f16810590696a364e6c8f611b8d320bc2b949df7709247874c7e11ca685d856d826bdc3acb035185070b923b937245ebdeb31c3a12ea4953b45e32732af8c01ff2bbca5369b89a26bef5e3a1306d04cd6ee899370262a25990ac785509d192c63c9a7c86caf5962e3a22162e88e12f33c69ef5f91562fdff32ca0a339adbe5628c3f57c047f234e5f5ca47490a359f626eae69d60f3879c527cd1f0ff0b8de6b4d29970a62111686c2e4859738e914e4d86067a72a22274e7b3a483055d5ac5328bed48707f0043fa2436e490a10b0f6d8427e40ded2993813a67ba83b0f145124e0007716b39f4dd8db7caf7143897c819716aab82f1eb18732e2e03cafc17874f41752e8edcaa4dd11ef24f354df4a2364edf7b4b593b469da50ee7b65f4c08abb5091f20557d66dac20451e23586c662a076e04a906fc94587c8e1b40008cf872c1c337457fca90fcf664a5d612bffa9c17ef051612e0347a4aa786836885d4d230c485236c27adbe95a9d674e50a098271af68173147a599a178a635689f4e74bf6b4219984a0c4f3643fb1eb40fd47b966f09e284a58349cb4c4fb1df51b1de7e5bfe3dc25c71661bf3a972703f07a2a5011320336eb3dedef2c71effb1ef0640226fea9e2011bf0052a3249d355caede2407cbe6726ccf22b98641d618c16fd159ad588ff41e0bd0ec3b4ec138de18f55983882521ff5fcd5349ebecfb77c31ee3f387f49df93fb48491abd24ffca8d26e62edc0f8fef28b20024c48237da6c832d980054176ac6de1625451c934cf89c2e9669305503ffaf50a04b6867562f89f315bb9d8916e44517ad71d2355476b227475a92f309aead4a18682de73c7b040f5b0badbad465e14f3e9f02587478edbabe3751107f06aa6bf2da4c18c273ca774421c4920074d454074d8d7070affa86f09925f4209707034d7750a3d75f55135d1f04dd3ec42ccd17cf0a77d917e55fe9b3f60f218dadb4a429f2f31083324028bfb5ca357c19faee99f169ba2ca4cb41e2f272e43905f7caddaeb6977e674e3c44f56fd582f92c5a018cc75413588460a53f5454600d972cbdaa60302c92032dc82e423082aa48a384da18edd1f3f98cb1348ebeabfe33687f7ba74e2532174629afa1e31ba8480f024964a7e345ccd1fe202046f246c034c78a083a687fb615260d4c101239baac6bceb773bb4755af02ccaae324f30598c5474142cd6d01c76f55e5e2661e3f72d7a7a40a085d1d9e7d40f3f50efa1e6d9d4cd5033e018d4cbdb377acb4f60dad0461bff9cab3646186f16662473cfa3a41f18bbce0e2e25a29caec8a40ce6ebfb04522c094469d29bdf59045f577dd5ac582efafa93bfd32650796a189223f2f55a8e9fa771aec86d0e7a4334ae1df6e607bd09b0435ce3c8a13a7e156f6720429a4b6a18532af2bbef6f708d48a6a2894a4c03c8824bb7194dab86285718c777f212d53e45af27e79d3834a084bbf5e380297e2e5531b97cfd2464b19ee27f0ddec79b1d45df9fee1746816ab56727562c2f114878abc48c1dc30495342715363a2c6ce346dba73331e67a4f359ea126333ab478bfa5ed359813b9acc8daca25a08c4a9548b60f159af65569074e22654ee6a9f17f736df75628ea4dbcdace912352bba2d86caaad309ee58ec1eeb40f1f914c62ae66ceafa68361fc3035c7d5685318d4fa809940a40b0d358a9e836b4a654cf66349d93189ba3ca6dc5398a1bfa1572139be5d44f58fba9fbb7901b704a1a2d83ad59b4788c29b9b8a7d5f2470d9836e915590be3a748cba5d8ef84e4ce19b45880a64b680980278e0f557ea26e7ff3cede135eaf2daf13f311e522033c48b0b9617b3843f545e5529df4564b6313e94550f55ea8df6fbc5515a5a5e103620988b546c4ac53774d68947ed855b3a06b561197bdf0906a5cef8f38f491db6677bb6167fd5e1bfacec456d5ae5d2af9df74ecc2c934f2a67859f0f8b25a5917c749f3b2e19ac01705e54a704431b1f2c759baf6c5e230cda4bfd9151a0a667c2e2309f158835cfa5f9748d780ebefe5de1e26e5092be5ae33ed66131c5dcc61b1b48d60ffecf5335d64f728d716392e4633a8f6f4f151ba7730524adcb4d6d595a2232fc06cb73650955f95a4b337afc1f875c3b01d7587933511657594f8aae8ac4e0440afcddbba1b4de4de3b7b4d041c4c9bc3e90951da3af6e40fa1f6f911f04d76176340de35db09ee12fe85700cfae901732a6a74c040729a481edd9b79f35093dd3f5760e9176320b369738790a4cc2af6a92ef35b17a62fe7205ab03b38ad5b02f40364950be4fdb526a5827b57388378098af4746b8a9ee4f1bd1ced39fe42790359532ae3ad99841227567971e72aeccf9c42263519b8c15bf9057013a6b233e14c79f1a65b20397ca37d9341c670ac906cca0d2a0da02ddc6e57d839f9876bcde78545cfee4d2d3ad273dd3bfb5df053bb1e0d15fe4efcf3504060ff7b91bd42820ddb87d7f3d872463a31671b2c0dabb7f59935db0c6d0f95b46cd0fc1514fce80899e3c978003360d7fb15d3ca881a61a99e0807fbc0c037eaa15c024d61dd125201833755332bf0d3193c7b5bfcc387b7ea1ca28f2147acdc071ef9e32949942b296ff3979a2ecdbac3f30bb6c679814333d5e40fd79bd6cb3ef0c77adfac22b8412bbc61174d349f8a039de48ea60991a339c216cf7fdcbac3a9f7250b4e4a81b03e2668b1a24d9664772da496b2448dfd3a701573436fee44e965ee47a2eff1b7b9a77555369939c99ebbeadcd08a444a09dccece42ed7406898f510dbc54daaf7653e7e3815824de01cf5c105e71691a6083da0650df9b566adbbe499622eecd19292e8f7d4279b31f76d4513b85d156eaa5251f86e375128bf21acd4865477e11bd518a48f15d900762e1c6ce4bf7a01f446d113e0c5b3a971e3e836f81df4b19626907c981794f1f3a45fc936b79433debc6332017669668dc777e4ee8195901ec2486ddce7acba87a7818665098b23ce018ef8ba5f76a264c04d27cb73768bc994372f98a915bd83024deed3abc9ce9d59fc5cfcc2f3df7ec9c3c2080e173f6b21c12473cf35f8eafa77edd6dee8a79fc6ba9ebe978a7761ee5a20329a4d7b5eb18c5a8c85ade05e8943ce4165d1147e3dea2d7a1fa3d6136fe59123e7008c9ae369233d0822e0a6a32de83a4da8f925731c7885c26832895f64102071add02068706fd8dadb6852ffbef31755b826a25ee7e2e562fec600852b0366ed86687f5b063565820b87b3f1ed76e2f7b611d62771c62978cf53bf68b2a2618c759abc56b1ecf22a42bbfe4feb3bc9df812d7b17ec242c2784780418ef0cc0a690528e506ad989505aef8acb114a09c34ea4bcc8b9ab7a772eab1913a57f6eb1fdda5c3e2a52567967ccda482771484b638935e7a5b5205bd8b5cafe5f2662cb390df42f52d1ea6ac81394e709d1e79a66e934afa1f8ca1e1d1b1f0d891316dd1b4df2248b7038b1e716e9eadac663f54cba12e0f8d563928c1ed46ce06c10b89fb1a1c7a0f1e3accf4c9e81f230476b19d371290483b572230335979c36008cffc68303cbe8b9715e9b4fce298e5a5d414df0ea9bf8339224cd23dfd424e6afb8e1d1ad3b38ff05fa97de4c3527e2b76a0b9ce5b3d2362be2d2bcf73449ddb4aafc4a69a4776c6926c7fa3c7a4a3d076e141c4f7505d48527d9e4d68d578765bfa42397d86ab789db1280aa224c4de572a2b11a78462e97e273efc5b2c8ba4b2b45ca57ed1dce4f0bbb23641ace28cbd8f802ce5635da2a42130aa425396803863e51433cc3f5501209ca1412cffeff488657a02d2a9d36b3ef5a605a28761b9f319ad469b583ec75f38a5754ed7ff69201a32a0b0304a3f120674020990156475e738f472d95e4297e64763e828d52eb4242138d62151cee777a2882b0bdb4f6120338f7575cdf138c1b0c83de0017a46c3149654869b8cc49baf5c4a3f54f172e229fce1c0615adad8161013dcc6275e06f5580f65ea307dc95f37fe3f8aa610af9a369278ae85104c2bde8f31f6337737e772a2737135dac80a45c27d922f44f814c9c9ca74815ccef68af119843f036d1fac988d815acc8a89a74ecc912f4324a757547b11de2770e39e0df42313fa6d6322f26bed22b124f9f2c2e9a6af87495817f4fce532d1b93359a403d218fa46a3c3fa56f255a73f53aea0d0bd9a7825b75120da2895c86b782c83d8d5dcf83276d470cc2b7df36df0d9955e6c42a20f55e31307da24bc75ae3f77879c9283b9bc6afb533e6a74186561171ac0d97eeb59bf2bf7d081d4f68eed0f1fc58f8f2423f3f0fb72af27f6cdadcb2054f9ce5a3c6a958ffb51015943433102ddcedaafc1ae6d387222be3f8d15c5881d1d82b20f7f4d51eebd55d91f857612956ddc13a22eba1eaa604011ae658cbe1b252f74c72a6e54d7f2740f3faa64d4ab2e454e84db0137b146c3ab9f5ffba981d61c4e46aecdeebea10e46d9db6cf763f70fcad670595e24792c89be35e7a3fb58dae30ce0ec1fc27f6bb6faf8beeb21522249787e157313df06742d139b866db667e1e2a9351c9cc609f9cb13ec6fb6ee7c3184e870c50d246715d5932263e361ee1ae387899165b3493df8f25840ef1cfc1f1c6583864436e0aafc4664a576ae09bbe90c207fe9062a1add9180524252a8e2db0288af06ca87d6d2320cb198539fc1815eb5ba5085140a189e0646cbac963c679d731b0fd50abb694f46418bee475515b6087d2e78bae3b5fc99f55d6659154b6bdbccba13d2d51d094915ce7e47a952e1aa8f292e01e2c040a751246300f63d722b9a428336491bc1afb3f0e8157a6dc21cf69677fe0c2a37dbee18a9a9f5a5102dba80e8c588b94ca54e8673776223ce3d2c5c290516135e75f2b2e3a1772c72ddea9f4a9799b172de12f14c258b2f8e0a54589cc1f84d686a4643de145d121e942c4f73af58c770646b590306772820abec642d66f37fbc563fd60c4e8ce96a794bba7375795a772f046d0cf6ed98b7d1ecb7bee7a7b5f5401ee80489ef52024db1941d372e782b9195704020488317695a12344a785e602c18de00524d62667c39f987bdac72246fc2c659e69b641993b9aff8fc6f95817bcd005d769c53698901bf8ef100b8704d934d7959903b2df7ec5b77474c568e225ba81e85b54fb3c06f285090df9d0f2958dba442d60cd360616ea2c575bdf2a96f656adf83184040ea7eafef6a1c7622fbb241bb89dd21ae9eaa6ff4fcb9cc000e360a591897e04df842d5d21bfe0df80dff9d55fe21400e982f56ceeba86d1fe83fec683f70b5fdc715ab4e40dfb1501c4268d5b72def8f55b0d4777e29de797b1da2e97cf6b728526660bec27332d60c3235789147ffffd029ebfb141a58425986e4698f0a33b39639e8c72aeed61f9ba3fecd55a3d517202ba018f015c97b44fe090dddbd4823ab1a7a700a0fd46c34029f2149a8ebfb458e7c1b0bfc56dc0f4292fb6bd46987955c11414958da2ec14f5671689a4e0a46310ccea4ffd37f655ca0634896deac2d5ded7aff1b886425cf4af75ef221f951d8627249834d6ae2a779097aba42a67e650f5cd3a2f3c3814b0142746e19452de391cf6f8781da2f870768eb9706a26219c0730a7223b57f65e7dcf42c00f01fe9344efbc5626c04475861e432ed1053250a07c1cd951c326fce88d7ee338f12a0e82435ac960b37711f7ffa2f8e1ca7fe3d85f9efb9f554266904a1f724aaadaccd940e45fab54dd332c3982fd66dba176c0c761175bdf50bcf64c8ddd868961a0936becd1a0e329e0a0881978343b6deeefd8d4da0acce2ffefd1d056992224545540a1fbabdf54f46f1e859a9d8f63adda2719e88c2de0456dbf66a85db1dea2e5bd24d50a8d08b286c14dc311b47029ae08dab6d9f083c1ac81ee2ed847af9f552a9e586edc29f16c08fb855b26c0c47fd01e8032fc2b0f3e7d2daf7490776d06c93e8bdbb843a1a2f6bbb2655be204b74598bf4221f2b6cdf46590d9f8464769f384f85f2adbf63261a210671bef6d2dafb425c3dc019778c76cb2c40b357a7531e1d26953fbbc2fed7d22e20f4e74bd404174b6b716de64e4605660f36a1a220ba3c1b0df9302e4db41529707cbee81676e147af806ff3e033c860436190ad986f3f923c23e740c3a8e357f80d412180f5e2c7db17c3b8bf19e2d5e550719125cbcded60bb57b89f5af06bc068ba31398974b91d23c1b823c71c11a2e02f1bf58b0c43c527a6f6ae692dee766cbf97eb0392fc568e0555896eee76e35e9b9df54e7bdf44e0d281db6e7cbaf74ee4970513fde748e35357c92c19fa4315496ae2ecd9c09db469844e0c1f7f22ade6b70e2105c18e92f06bc12a2ea74a00fd5d60dd7118939a124c20b15f4101700f420c7e944668712ba18c1b371a7a5051532a31b9cedf2dc0cb98f2dfd83ec034c8f57fff2854361fee4b199f05af8e0eac4df5a4fcf84bb218009df36eed81d19c398d368c7afe98a87e22d2aece7d47ce76112971a07526edfedd71059d121d5551436889e725b20debb9f06dc513d5a24df3532f47e05a288f2a70efc143eb4d662bd5ad95fce5bc166b6332d5234015e2982cee3f617c4a7cc26c546bcb612506af9277482254394f3510fc33947f9928ccf998c19c32fb73f388af49a53d3fe73e3fde36936f6e421f7263fa3833a186a1e1cbb922c184a67d9551051e7843bddd35c885af91252775d90f62ae2c286f8be05a6f631f53f7bbdddde482989b1d81a39492c7c78f7573a93e54cc282b0f95efccf4a5fc7bbd71d0cac3afe4f673fafc910df7b8c02f607e42488d952a0a96d1db6a6a60311460dfe558f5efc8065ab884e458b130ba54c501728221ab467167f712e27a50bb0431cccc11bdc90bfed826fdddb63b443a7574402f9bb7cab09bc1316744d687240a73a035c572ccbfd1a4bf500ba2c0ba46282ce6575ba810ee90c11ebe65640327a3e34ebb83daf07c1d714fa6086e28ffc0d500f329faca67eff42d01c3e16b9676bb14d080541a6e285e470176ef9d2070748db7b4efb6491d892dcd5a57e80add388d902f3ab0ad4bd5ba06d8f4d8978494cb6f17ea8c158be8c4f1b893cf001a7f07361bd12a0385f15b157e7391ced72512a76fa8e1ab621d97c2101d078a463ac4631419384ec534c6ce9c6e4fdf5cdaf8a35c84aa18fb93ebbfb8019d0acc65c6dbad50f71370f2e0d8ca4f018699d4de8185be5c5064adbcc1a9389bb3ec6286a9bd897051df8934d084cfd4ce27a628da11dbf98fe221163e0292b613395f819edf4dbad8de70bc68ab6d1473339ecf5e2e0e9b4a6933edb68537bba71b0bdfc1f1527ffa2f0e0022027a0b4a00681ca18db84d8f26b0dcf619bdd8ee4ea0a781993fd60105647c02b2ac323263f9a600e4f3529af6c46e8746c12f2961384409bb7f9d14898aa885c64e275d46d1f5676b2f14d5ec9fdeb6bc1d43913973431e0429cd5e59fa1e47b0f22ef72586560d60dc5ee0cfe27b96cca72e938b6d9c4963ef700b04a7b5fcc2bc49b994a4c9e7832ab96499e51996ed80c53e6507eae08a293c728fe98e00b63b1513b6dd1be99ad4e14cf9c834c439f7f9f3a57a58b871e5e90cf33a6d0327d10140c7858657eefcccbed258b645edf5301380413fe3d40cdb3b9cbed37e15aa9cc9946271d2cc19b09fbabe844bed05634dfd4ca1eeb099a49deb9cbd256547f0aefec92fa706f2eeaf7c0445a73dde2c0a788b0d6ecada7fc1b62df6e15f963da77b10d31b6fa9fb539666fb238984313c20bf998828c8ce48c3f25be32e998fbc95476c3f63dd7befbc7673f29efd6fe678a4f17095672620506298e5649febc8694c57a03cd14450530e9accee8d6e87d968b458214191548e811618730e203728266902deaa0007f71033ee118a5d99ef709a7c9fe3fb2d214f420334ba73c699b41bd02cbf8eb3f5fe94a43eb79358386f1d5c2679fda3a2fd5a5d64cdb7f695ae108b90ee703bd1575402d63b060c89ca9c0c916b6ef61dfe610022427e308af085f17711d898c2cc0837da1f9e1d885438ddff187f2f93daf01973ea76b3f91a95e7d374217131439626705d8d6a3250db2d5398409979e0ff3cbf0835d3f98058749766d7e93ea7a31e6281055657c83171b48dd1bc389be7345178df10b1664f4c3fd286433b8e29f49edbf152193682ce0f0fa155ab1e2758da658d2ee18f9b7345edfb992ea94266b73f97cb7177a5bd909879bfa421b9a0ee97516f5a1ef27badf3b7c95307a85e62553b88aa1597442d1146ca66e801ff854736d581c059c37af4b1e29828838bfa7835f8e4db57331bdfc28a2cff9f337c88ab54d02f10e236aeb4c020e07fd9fd2b0b0b92bd1cd8560c8db3a1c4a9fb12422aa355ff30276e7beb59c10648888d157a99fc0c042b1e7b413e67c421826bb70d7d32baf79c344f701486fdd2eef09291b8be01cb5d742a9eb090e1abd810a0e5fc1b52b78e9cc1ecfb2d00338811d83db3478f3d11a28ad7152851cdb06dd0c2e4dbdde0f33f2ca000a947ca8cfc9fe6d05b8b5a2fb0e193d8a96441ae52724088cfa7b374bbd65c81a1fc112f656d03829224668eefbf3e0684242d7273cd4b5c698c70f630334e42f0f95c8e225bc705d7a8640e7284a6289fba3beee89fec0faea82abec42a9a9a235f4095ad7c461ee99bb7d790f115cfd2aceda5ad069077b9588f42217a2f13fef28b44a3ceb6f2dd1dd7be64d15b1469e7a44323f6978236863fb6f21d53e9f755fc5e47b7aed19aa161964daa72eba597374e8e4231e9e746942d69cfbee7b90411050017831f5bf3fb656e83bac03bd613db9438b23e23cbe803bc9062d1a32ab093d6e8265f318fbb112fb9f609d3213ed0c4c5039b529cc3cda3491b2947448203f9722eee7f4715fbbae181b38aa9b4a80d31d71b722b79b6dc73f079eb912f1a3a07d8be7c3b8a897fc169f5706701b54363aa1495af21a1a8d7aa630b5ae9f990533c15b41d8d56b04f65ff0b0b05819dbfdce26154fcc54b58d697d5fbe8fe9542080f87ca59edc6cad616d3b3445f398c56018eb899ce8fd080a3abd1ce65076c6287a92eb9acfadc4b36b47b441997ea84256cbc67a441ff47daa5e30ae94715debaa07deb5dcdd02dfa8fd1b86b1a60ace55aa0783eb38388f70c6ab95eddc19de94ab8328180d593aab8a398448beed3a650739fbc39eabf12e01f9d63f25307185483b7259d53697e795a5ab095bcca5656d13b07acc873545365214bd4bcabf8c34dc25f6c515ac88ea2e5024a4e0ac50bf24efceaea2f714c328edf763d44fc6fc782157ee7379aa80704109c4d77431f07b4eb538f6d50e6d8d7f8ed36e77e83a7dfe726c5c68fea5e5a36e5e24296d8ea95c54eb3756dee97b493f48ad60bffc20872fbc429de6f013597609d6e20911e7ce7c26f907068fde1dd698c89bb3673c5f758915a79c2d6b014adebb4a8371989e59d6513370a19c49fcd7fd4c1504cb9dfdc58621d642f0b975124d808cbe5c306513a2101bf7ec886c8ab4f5cc9231904eb92444d496f22a9331e9a97e211876c52242cc425193717a4f95f73f0668af92ad4cde55b8871b32159de2328ec6e0699878db110cc5a77cd25836a69c126e907b3b8b6f64410fc49b6b8e5d812618524a2c4d805e72bd95780c1ceac13de7f2ebcdab06a628219c0c06ae04652877973482e6dbf67e602783d67cc84b9b0c215774b9c7d7b5fb5ff8591ce55d357a80db2479fae0c365a0956679790207c4c717ab7f5e6c21d5360fe05d8019a0471f955ce297337e2e009f8093cc5ae5397bf905186d38d894ea50532ffd753ecc645d74eab669f23c51a87c89feaf89f78bcec138664aeb36c72e3db697876e6e28301f5a410d40d83022d79d41a497ee4ed6d439c2d9e6029ce63aa671aae844d47d5ae7fb18fb6172cfa2b4246751a6218f566deb8784262a67fe35e069ca34daaa4f448bbd9047224965b96b105fd57c9c8240201c687204a9527961be5e417ca3fc8f054f951201f8053d972ab877cce09b852f8148908ee302b284a90ec544831bdb2d937463570dfed84f5061a44bc37f09e02669f662b65b14c18b57bb5c80a1cfc56739b8114e40afa7abe981b68c5ec4079656de77bb348881f7ac25474c172910e81af8b27b7633c95e4509b6ebd0695277625c9c0848c428d63839a7a1a24eef95f10216dfb9a6eacae71a3ad769ab1cf8b96babd31edb8a3f1e1278927c8d8413b6cf9caddac227c7b9680c858a3f5a5d509ac9b9b4042378ff61a58d36fefc43c8fa5cab5203595291bcca7b05b10d0383b8d66549d5d32d0819e207e1d7f952f59f01a369e93d9bd34b9f4945278ef9af6528e5742151300594c1daa04527bf2d4ea0d2dc801015a08e59fdaa9e491fc23a667528dd46b00666210b8624071badb1718d57ea918833a8d5b196e3fbb634c4da97c41ee5f77542bc0b302382425ee8e56b5eb05feb7b0451ec03ab46796e1b8f000a1b6294e46457430be1e781b2d790412f982e6577fe3a5399cf2ffa4d2193df51a43977f29a27a358d6c04849cfe06ed16fdd8d83d58ed20e277e644371173e38f978b368936a43af79991c5199561966f27304e3ba6bb8553b8effa1b57dbe16e47793cf44cc634f7879e19b0a5bfccedc01d3f4deb1541f74be415b9ada03b2d57ecb7525d39b2a4d6dfae34a8ee6db66a23cd32bdc75962d700799e1554a9da78013bc5185b0734b8ba9b542861b7f7e4992ac6b7e0783e4575369e7e6919d494e921e7130d8b1f2ec8a07ea2ad1630712c61762a326e7a09e8f97f20b908d7ed6c418e1a34e38bc65abb52ca0d8a4e1b5a68c347d5c45693f042c73dff6af71561e561c1386139e0f2878197df904eb5f88bb616a467c0c79a6f16525c233a58371fe33a876e9433c574456925ac3163ad2291abbe55ab59e896f894d30cd6307064c0ce1309b7df40c4dfab056f78af74942bda06675f1a4d331c49cc925dec207d8e93d04f6d82805fc3ae491f7d421eb1bea9a420e9e7329d488795d9528c72c24034371f8ff2d87857c5e0e55181ce56114f829920b475559813dc76e89d23adfa9bc6bd400c4ffe7b5f5b8f048b7b684457d06ef83ae51fc25236baf0c505b4145c7e98ec9e1fdc398271dc69457114b7fa81c80663c7ed7aa49c853d637e7a6e81640f08f5380f49ec7b62d26cd06abd44cc6d7aef54983a3fe9b5f2ce064f68570052f59dba87563df9fb4ae40c4423daabe9ed1e386bed285d1b8d70adf91d48e14b941a7fdb33aa0bc94ad66b77b5ad5fbfca0e157f5c0f1d02a01192dabca216a154cd8fc85a23f8bff08f8a614bdfeaae2e3ffee35692b04a8b9b6d580f92b6bada16a9876e56abcd3263d9ba0a579309855ffc9be5088312acaf069f97f65ae389d8c1eea49e3086a0461abedf6b661646a08d6514ea66ecc958bbadd3289e7385ae7c6341cb3c659b5be69e6309b2868e22205619c90ea9c26afeb584e1a30efb12b59d8b9ea39e26fe2850ab5689fa80c29a44e54391afb603d5c913a790eec744fc39ec0adf7eb0839f9ab8d44395a365d403675aece5370859da6d280c41cb3b121c197f905b775860838748fba1ab2a1a6d0b6480293d623706f1dec693772d6fa17b05f7136cbd5302f28910486954ad3a44409157dc403238452aee507524bca33a967921b402b108e47da64fc58d42b21f6ec6e50c959f153adab94b68f6594b92be22382dbd8cd7991723f60231821f3b6eac0af58de73c04c4e05c2a73d8b163ab1f77941f47a6e239b2d2b790881e9a31337683e508d47391210f0d01805426b8432933521a99a1b6c3ca2bdd66b62c5f2f9a57641567fe71bd5bf4f9cb56a5de8315335e8f07077889161325a0430ee9d8823a22b116b6b6f8765c05e89432c77a5ffc0308133c147a55d41cae32c7c14a3faaae981688ab9dac9c5b3a8639c4e6f73e9e368d7aa9d3b2cccb7f8a1b8106da397b177c5c31784cf956d6ef5bb7299d8905a32ecbe5121a44fbf146306f70e1c7978f5cf1b5d9a656f7096782b9c86b90422a1de48a7a7b03475a8311bc4f80cd0ef63b8b2717199f05d0a38a62f0fe84bf79c2e1939220bffb0275e3a04f2648f655cbd46b0b2a2e545fa37db8ec20229396f2d35fa610c783a63548c782c0ff974bf787b291b6d2319b9a7721b00b4d72576259e94585affef75dc49adb812bea8846bab50b2e3a859fb8ab2e51396ecfe86dc320c16ee3c419702c17b23bb7ef5388e69addded62e3bb92dba8bc4e3b0492f7cf3b20853042512653e4346ab7d05d30db1f252933f70476b9c3a592fd2cee4a868737eb057a718009f2ef978518cd289b935bce44af52f7f31e1b4c1b59da74280a49fec352061803cf8b32d5ae9666ac219710e9bb563c80126b7856733721f2fa6a4e55b857c4eb98976ce94b29278da1279a8564fca6e2453028dd2e076a5e722037adebe29a8d9ad095ee291b938101a29bbb695e4bf5dd72b80b646c6229c8252716728a0145693b74fccc22e863e2dd001450d3f8d8ec37cb47bde45030d7740ed3b14aa277b519468429913a222cd7326ba73b4f6c44e42095f73f65e827195540f458f9d435d5651fbfa85cf187e9c087c35804a2252aeeeb0a48a9ac52a49ea5176cf197115bf5a47df1ed7a54b3261ecf620e5d4cc47382d664d144d1ca7829ed2ac12a7399336d3d6c00ba5406955b00b0b3b985feb9cc380581711068308277a86b3b26b23a70e80b6aa8bedbdcad9012b7688d25b06830e1b8f6e6b7dc4830303c0f9b66467a91321b1b3e9018e631538519a8e6212bcff2f35d112589815f50ac2810499cdded9b680094d789fc1bad61ab3218067d99784339c875aa03f4d930c20a787ea16afd1edc83502365f178b0a30bd2cbfdeedce74ed99c6ec18fb375d2ad14527ba87cd902f435b4bc4867b51a7b9a8c7f96e541d65da5c45db65a6266f1b8fa3f2e6b6742b1c66c3c4170391d00f5d3f125800e60f22f12840e2d7cd5302aed67c67497d16e888808b0b14a1cdddcbebd040ca53f00c0f7b31401c64b665f43497363e1e80d619f78b596ad07fe4104e278d6c056878ae91af3ff4a79709c4db9695ea3de096db11652c8e08310cf236fcfa6a91ef07f8949214bc56a1152786a55a2e5dcfdd89798862a67f9bde7f9c431869ae20a21963d9e725195496f84bb36fb25e09e57591090f1be24508465372c9d09f13f42a6a8c55849407fc9cedb451778711ea32bb4ff8071e3ddd0b8df0c7c82076eb212ad7eee46aee9b4aaedd92b392c7ae52b387197f3a70d2243fe81b7b478f3bd750dfb8fa33ff2be2fea15802f39ef53119981f9be4550251d28ea6ab1a99db1aa20caad8b8fa49577bf6dbe19a720ad5730def619c0eab2dbed39b9ed37585d81de9327cfcc6f4a8fc6cea81e62039d445ea1d77abe9af35f22f034f06cc3a4c167db027dbfd106ac18767e2803452580288769e4f0e14522e2c38f52902bd46280ff98c4adde6d9eed8c6415ee02d27f5bd770ec30d85faac166add3b671382477cd4c784bea28cec4a92db257e20c06f53d3920c4ecee5c04a1d8e7613090651f08028a8d8d4a35c3ce9f6a48f8a88cd5af07ec190634a485fa93e57b1ae9cd5a32dce955af096b2f0fb4425fd4c0821736a702354daae178bb99d6b6cd4560e687e1119d7ce8baa348e8fc0eb4b369c168fe143706c4abe90cce7a1b893202d360dbfa1952a3f23fc7db70b10f0d4050ce28b171d78f5458db74d1582c7657babe7211b99257d1c2d3403b3d2a7decdc9999aa38101aad01722ab909a8dc6f8570cdea915c229dcc136bde1f5630293191fadae072b94353a068d41e7cadb6b09f09a5a9d6ad97bea98228fab19302b9392a99ff2c1b2ffec358855e6a40b17c9fd7d0b8369f960dc83a10a3640358196465f7423b20770ebd2df7ba1066e83160f751ad26e88618cb567613d5769d94340f9f986905865e6d57b850721c11306f650a2c00f5f97a6014177fd5f6a4f92bb40b1660f7f4b57882f9df4e66d514ef8af50b1430824b5cac5ec515de99e0ca7af08b88c4974760c50d2e58c9c25fb4cb81eb1e629678d8cd92c6eda8689ec2553d69084eb7b22d59aef71105970729fa276dc387d69c954793bc163bf6b450c7e3b1b18fe9ad82a6cd826b0c7afb19314903e5e577e4942da1f1e09e8d2ae674b5cbe90100838a645e6576f69a9303c4b0d8de0c15d780ed803c3e13a2668f5f094b4d4c8caecbaa400bf957047a1a11523992923395281b3624284f3b43ea8e116f3f593a2482829698f2c251cd9419fd56e0b778cfdf720e1a2917bbb9726c0171aa2e6e242890b76be84593d8d8b0a14e23817ae1ae4a6a84327a731e04b21fc1fb30d6712c9e3b4d3afee692d64dbbcb8ca135fcd4c4c60346b01744ca51e288da28eff16a6bf2f870669ab17a531d5b7bb1bdee948971cb908291a42f7b85f690d18fb513489ced1a294e5919bd37c996ef53e9d88dbe0a3aa3c8cfeb70ae16e3602ad3f5bbd0ed9e3390673860869582587085fccd88b068257290d8f4aa2b2835f137e57728b4cede1c6291a43f04c886f5bf86aa94981c51d11e8df9d5db4fe9cfe4e38ae0f6126ab32db009cf04e242e23f3cc00e51a2d59e2ae39bb54b4d5b25cae600d2d92ba2d62a7561c1b6fe9db13d2eeb9912176a50037e45cf63fdbe4896707b990b817701fbf2bd86de1ac737608e4b50a0ce22c33d95b83cf210613c94ebaad90d071eb63d904d9e661a3aa05c7520a1db4b674ae48cb877244ef994586d851ab013fa0e2c35ad8b9b3ec585d59f27ffa8cbb39db6f98fe3da355c34080145cf314bc3a103e1aca92da0672befd1261eda8be5c6cc7d8692d179ac64c42f609a28d67475b0a2337af54558d29d71398477b10df95dcd6bb1da94459b7475aa6490483778625cb67d8eba2fe11d8eb1da74406ef76c391a92f167dcf8543ef5f623a98f556605b5e88aa997e2b4aa4b8e9007a0409033acd315e94cca4ecb86f2b99f0c9082c8ea1c3214a6314e6db096a7f480d2620ba983c877a832df18f8f1a741b4f3b4616d77173a968de4342ed5f07d2a9774d2918ea3c4687e2279dc053746bb64715172e3f840e09b8cb1e277e8b7d7961ee5884d394b22b4619e461e307799c33f2aa99504fb6653834c96227f93277388b48a53e0d9b75ec03b596b48c9eadb1515cdb549540bf0f0a3181d4a0dd65598db10425ce849bea913afd7d347b5ae2b9ac5dbc07307e1eb35737860ef24cf0997cf0fe4f1416868fedb41e4c729cc6b690de21a06fcb34ddd2fc5beae30483aa494dfcce934085151fb525a62aca968bf1e92d0bc9b8fc4e494aaaa2abd39012ea38955c7189c3c372737d650e7c6f332a247fed6df9d09ffc272ab24619d979e67c9cf4c032ebda5fda754acf8006608d646150712a82713c0c1c4e360c1b73f7d03db6b5a2763eb28fa6f1dee15989de9f5db34cab4c65ef097829008660bf8ced91442b445baa088b6329f3f78acdd6a2ec165a06812b0d4f85c3addf257e486eb25d1ff7ffb158fcbd9f898f5754a19cd6d35ce9a0bb25f372694adef082818477ea3511617067824bb05f1de3256079093af5adf2f8d915ccab68af28c9c279492432ee832b52b12d06f802c2e8a80cf0c02e72cdc55d4de1899cf540874902b0f17f109c8f08e9131c1ce378c7020c940af2c01fcefc6481fe00e589b28a5f8945add18390ce7b31615506e2d169d9141a93caf21f936b9beab06f37ddaa521320eba26a72b92462ef73cf2a8bcf1d3de5432decfe1412a4934e82713804df2fcc92dddaf437cef64b08405bf9983341d89c4d103e055ad80c7f507f2ca8dc8f169a23791d87a8e4a1ed8c99771c61f0f9193f47d1fe93b7eb6cb15f69d75aad8722501faa3c905041bbc29bc029e3e21d9a3c66362fae4e99428c608a88d2bf1cecf734c4bec4b0f5537af92280c76ef9e4b0bfcbd7d22e6bb2548767e7281497de796729c8eefef0579d4f9554976dff1fcf7b28ce5629707297dcf7d081723c829f23a0eb76b49fae3a686cced11c9e56bb3b11fcf72a86b996ec3758e27bce86cd72380a2c8bb6046bd8c98b36a3d9fa42c9b1df6bd0dfc7f60ee045a329923dc41d8cdc393c304745c6751ce004456025d55a0a3e8e995b7a47d691b3d87b1df036eb6e6fb7be2be3c8ba842e900a3eec0521a0fe855f3bcfd12febaa8af73f4a6e249ed58c68a7751407be810d0c3254d960ddc0626eb06aaa4635ac4650e2c8d062a19582a87669648a35c43b223b451a598de9d66a0776a6df0718c46ce95fd56c7d2f916a989b55c44ac5632a3e5bedc3934d95a411cbec9d2b0fc9725891d96a9000c0aece9d22fbd2630ce082feb59464a0df5aa300e2081fc5e6e5da8d6f3d071a9c6f210bf4de95881978340c56c7893204821787d93996a27d013ee51f56686743a75bec3632d0f0df91e40e8a7b2100655acad41ddff7373361f6c680f709253ef38c2cab2bb4c8f7590607646d5c0fe2e29ca221a2dcff438696d2c4bb96a6a064871d1c6be515d8a973c3263a011fc1d17338ec2695f15a6b5b7823438f6d2f7f620cf5c5fbf18486e5c903c7e9a46c48b8c912cba3e3d823a2e9bcf5c78f7f47fae523e50495da9f7ecf7d8d811ca4e7d8e1d0023dbeb5766c99dbd6e66d4d856cebfba900303f5942c171874ca5f742c4e011b3ce7d6580e04cb581e8b9830c9d760a946497c573985c08f35ff1a8f371877d2f74056baac9bb0d8a9ccdacf4b4ce0fee98bd0aa9cd57122de4834bb45994d99383c182b214c15ca52751c8239a0c8e5c79fd5765911a916e973fbefff96f5208001a8f0e541b5a337e31bf76810fa084d734d45677066e504c4558a751e97c2027b5b0b53ebd10f7efe6ef1e5a810ae6f8aecdb6794fa296672263b5670223ede689343a2daedb13990b8d815debb8af14df6609736451ea624f3cbac4cc2d895fc2412b9f7aeeabef41c80285da184ad6ea2f8fa3e797d84bfeb753f5553ee26a6e71e8b5344bd0386b03ac1114058fe10477cb303711a243399f570ba4c73d1006ba6cb70448cc122e828905da322b49975951a08555250051638b1bc2bb8311bc58198e490639ebcc55f1a73f5371163ee0805f82f2744c9b603cbfdc1da85fa0a23449497daf874c7da2028e5afbc591affc3f92a07783814a5d946e0ba5a192e7a39971fa617dea73d066b89fd2c6c11768f397b64719df9a06ba7c0e57b104d16254283960bae3a7bce6e0c57bfffe8c6c924c1ee512b01e5957e3ca351e8de65df52b74cbfc8a9374d8eca12f47b6d21c1b284b33880ffaca14b25853ab4922a11a8412ca57af72a859298ebeec9a638bebd9f52a2986bdd89e98dd44ce11bf3e0502d29cb452ce53c7ffdd172e81e0d048519e9db7a866ed266337973279aaed1c5191d14db0581e45ba6333c10890ceda5516e786066615e286c93a35a244226a971b323393d3f03a583a274f1739b02cb0966f006804ba8abebfe16be0574f1ba697b7c8fcfa36d2724588f422e28f30e220ef245dc133dbb657a4192b721004ba7c7d451baeac7b3119d0c04c3fa5b86f2ff9031c857b18cb035fbb5f0a3a18cc2e693590d0616a4e3c67394bd919feb6f67543afbfa384d178267e541b2ff471a4fdf8069ed5142bf61ed62437f21d59b8549c74cf0be9f7f8ddc6ba1e67544eb89c411b6aa7b5f41a5a85ba947b9532ebf05deb487114b06d74aad191c29b11084a998f0660ccd887e02622f054cbe3395ae7d2f91b56ac228d73e86d27500a83dddad349449d49415d0dd1777986e999ed3199c16204ec336121b13ee29b450a76b4db6ff6ae5265d38496a3a97345fd73431999b0f8d70077e662c073cc3fc4e62b454fe94afd63ea4666822fa3b66049bba963020f6f3665a8ac2fc6d52406cc17cf9c4d01c52fce06f30642088238e54b7b638fa98242378377b540cba0f4eea21fb72e261c5884e6185d3afbca7d7b38476bef2c034231457998d268403ea1cedab4e94f00400300189265b97bde53dd4d279b815cbca1f1961edb8c6191c4ed08af06d99ee20ce19e197ce1bdd1e226a5171496e2bd273d1748c6b8b3af4327cd81c16209d8ca08a5f9aff70293a616d7155bda4d235413a5ce51914841ddf76b7d3c4dfa8b6d6c15a7d1e59c454841d07f9dc34728d5132212b16334c942aea1c16c41a9d89cf348dd4275e6c287521e622a4b078b6b1049dd319bbe5db8ef483d4daaaf775cfc50fa4dd8fbd406877e3bd26ffdd6c08f202c974c22069431518cca37fdfa22d611aaff2203e01e30bc33cdaf91a8d64b3d5e1aabdedf3541052e275adc3f46462deacfcb043c8a33dfdf2492eefb2eb4d47ee693976d54bda1cd4ccb068e8c05bdb03e2f54c1d08baaed671fded8fd6a9f8cec0286b1c2993b979c06cad4a540ddbf070f884915c46a501f64b6edacc78beb229a78f5279ef6d255c83bb88c170770b80e0327188114c915f255ebb953406a9d2164627be68b4097967e60531e3b7b41360cd500f7b2e3035f30b4804d6e856e0184c9776220ed5436163dacdefb1296707762c76f26c49bc36ab0d229f4d2edc90a41a6546b7d59334c2e935518cb880fde58e4c7325c413b08d9540cd0bed2aa627610d52c268f5da4c6d7724623de46672244f2dde4f46a264c7e52e2038efafdd72550f4cc59476196ed9a8db9fbad203059731eb516f3497cb909808a6fb5b7f8e005370bc1c818b35326816fb2c0e6628ee6d9cfb400bb4c9a73d59671f7c3cec487b60d867a58ed18e34a0c6160dd78497833c303bef1ac53881871f58330b0db3e378a063e5a667e90852514507881236a2ab37dde128597728bf1583ff52e7ce68645fbb6c8777e63e75857b9139afb9288a9e3167c05d40f4f9a0fb694363a0ed3e3b5ca931f0a85bc2023a61c750ed92085069e60ab51720529d5944c0d159a4ffd7e24d561239131cdb189c96d4bbe5d22ceb4758c0d6144caa22ed61aa5422db11ab3c45297196e6c0db4622ab6d11f976e18afbb4bd9d7584bf8b696c611e030472cbdbafe217fabd7e11a0fc239ec9b1c900bd9c586d452060c218000e6b5fd3d845086d8a211fa23ab77033b2f6b7cdb66711e0a4c7a6ebcaa6381b1f6bcd2dd776c740508fd7a3b124a4c7d81362930e59a7b17c1e6f89bb2eba0de48fa7428058fb4a8b59d8bc9fb367c7410f8449edf129383b09768562cd4e15938f0e32cef0a67757cffeb3eaecfbc1752d846d52a41aa7f97bdcd6bc00636d9f474a44b3e5c31bd26d8d130563af2dfd03c0c5d1e87dee1295e0a143eec638002d91f00bd8c5828f0517018856a7b02a9d67362196c31f0ce46fca818adc152b85d51ff7aa813dc0ba6be1eade990110e01dcfdfbd93d0b1ecf02f0e301e8fbc3fb3b89494208f81b87878fa72f8401c46f9eeeaa69a87e6a6b8a44da93be60a179e23f410823c0b95b0b26308b6178a52de34f8fbf9cad330f88705bed837426d2bbb33d683e7cf148bfa4679ab6bb1feb643c18f8e989b05f0ef367fab2dffbeadd1a5c444913c50cf31051537f86b39c00b0342490c44db666902619e8201a9b585581b7dfaba8a8677a569c7b8f77692a37dad5d06e27f3574a61ba27f254017b76d3e9872803dc206ec1746f8e95e9a12582bc14d3901f854a069228e7cb2afd873ef5042ab36efb1243ad0f1dcab4ff1eaa51382591e00ddca857836b78094821f1d9715e894bd27570309de6e740f6b45295114a63b9da4cfd16ea81a6ba55bade821648c96a3cba40db7037541060c080da405ef51d3f725e10c9e7751de4563eda2853ab8c2dbc90e5f923883075e3bda39ed46a55db974a29f38a58b9f3430aeeeb05dec3032e9fdaf02c9208c254978fd8fc982ce8d2e3ec3b9197f4cc268324df5200d0cb659121c17c9377b9ab1d550f838978560f6f1c218cce9a058aaa80ef982748c6dbef156b984143fce866d08701fd686cafd8cfe5d46cb3406ac8f6dca95b9577d325b060a466d6af5d0a1fc10de7aaca412d26c17735a8a201e8d0454319bdccc703be1e2c5f4f7e66a7cc8142ec5a03a51f860287c1bb333658230ac3d2fb1efa3dab84b19ede19285d0faea8e7c72ceb856e4d29facfaa9c2c51f983692f20f3ebd92c2729755d9c5314f98868051a73d8d64e38a27c5af6bba0fb3bb911fadb0a8b47df18c36448305cc320304e23f8b71f8ecfcb753a6e20e029e90d432a55f856ba661a8635e5a227b8ecb636a8cc65933bbd5d42479eba198557a624e5d7fc35863af127d41ddbf3fb3ba5afb50e46761e619342b293ac58400d398309bebc18b643f1acdd460e07fe865cd8796966a704287e069c9d5e7dce776e11efc3c410588c85f2009df70c3f956ca16fe1f2d0557c81f452affa21268862b29936060943aeab3df12850c39ed51e3f6c3cbc28acb6d33f5084f08eed8826941b08550eab127319ace05db6026deb6bf8d1bbc09453002f6d8172bf80dd3d1a30b3e827c63783852cff610d6867017b9ff38967d97568b20a84f87503852298592edebf03d89674e5d42667b227c53a1ea8e318f686bf4a256dbe60f1b0c0db0b2eb49b98fcf89a9d847ac6c9aa4ba79b272dfe9b998b3f8f3b414ede7af887ad9cd06461bb0c8d8639ac8ed972e06c5562ebfe630caa25cbf5c67158c91e3f7a7efac05d9ec62da9641390c2f7813a6ade49e112cdc9b54079d3b71ec07c9d8f6eddfa4579326d01798724124a61e4ab6494fa1087edf2c581b42a1dacce03af818b3afdbfeb56e36ee65b102e6756a347bf6ff7f9eea0b6e1f766e137c5317ea2f64de246a47083109138b754ad56308bdf0555aff70a14f0f01f79d984b0506a780141b4a368bcb2ecfba48002186fd6af820c49081a67a736b4ecd6260dc4104c0866d041146c86e1825b55699ccde40d9deeab74bb5ecd24d2c7f236e3b84b127517506bbe01205eb25e4798e77a1e7b7d715c639764c0592c62ce35b772e04fc273ab24c6172cd2f303a47a019a1b9fcea77d5117a235383eda5317a1e835ea6a7911018d3289b4c104f0aec8e218c35dd9048dbc2f476920f405c6c6906fb112b98eabb5fe27fc4326ec05959acf564b5fdebbc668af566d4ee89ea63077d23ef40b61b2a824a8fc876707aa0eb669cba5f2532a9df3af359fceef317ce3629eaadf73a3278539846ba76f79fa68327675341fd79b8de704eb457fb78dd8dae2d74bc88595e933568794abb583e18c28e623c14ecfd8b4f5e7f6059e80d69428646759b1ee44a0ad360e5d34b62675749d7b2b8be6a493d6fe54afeeb8e952ef08a1b3a7d2658e7118bcdca0a95c90a13a10253544d5415e9ca99dafa1d7b8a2ac3f793220b08c31ef76b4feba6ea13d1244ca2aae614370c40f630eecb1cdb27602e0d186e93132d4e922fc8315133d9bd30b56f7615f7119c08b5a99b17e3c1e49327b676496890f5d98147aa475ab2f292ad39d8b21acc92111d0595a1b4235fb4ca79e25d64b27b43f835fdef8eb02d9416797ad57c51471e5310aaed87372bb1fb111db95c7f7887005f00af3896f60b946c64395405b706d345aa74e883bd23284199a76d2e6f53a6d73ab6099fec5d32bd030b214ea8400b8e549f724f2a01e9b2466a4258411e00320775ca7ca4123bd510a4950f4d46cd34a55b556c55d114e2a714aca285658bc76bbaa3a20a80f44a82839ce6c7870ae06104b9a094e4c71c9e01b966730cc3503d831e47dea54b3cbd826fab192432c23aee27459b3a5432ca4cbb760b71d8e29507adf55a582fdf2a3f6a43d370b66ff8e869c002606ad0b9093534a225b04ecd83343335b7bbbfc9d54e9ca4f67f5bceca7b07325eccc6b87b12fc0e64e6bd2dbaec124b0f822d6103020a456e60e1c9f9982d63de8d8ebf0e670ac8bf16b5d2362f98eb2044d5aa83ce50a9c8e6cd04214eed23f214bc319f666db24f197afc86955c8007ecc6377712becf95608996db44142aed160c6702b698c1b324c5605017e20659c940acc8861524daba6a4967a376bb3c4e80bb5d3c291604a635c3f0b593554632f48ce82a647c9ef300d02497dd6a5dc610e4dbdafd16404b810818f9ab79330447c51210e1a3bf5df734d6acdfb628f6962fcc0683a3ddf772a9136e50032326e8b166cf533a4873608330897498c677a5c1735407b278d45350bce7a1de1ed6292f92f67fa21e0cb83b7b536490181fa3f2578ce143d742b6f2bca7c2bbab868672b789063f832e6e43ee3bee1c70f9ad19a6a2e9282305e827cc0bc3168401d64a41b4537b822e5f1f26c50fbf1d60167f8f249fda80fcfc438e91cd0bb038c317330942be6477ccf7d0b0305f6b1d1cd1f7736e0c7938ee7fba4806bb3d6949067906c4f3caebd335ae15d1f5e0cefa32768a1650ef4fe3f55f34cb71560a258de5b51759b59f4ffe1f15feda76923fb4ab44c6aea9cd614e6fc78bed69cb02621741e9006bb4e4bd3a3184eaddf0a62d5529b916ca9f298fa892ecea15ba376e103dd338e3e59283b45d080f49552ac14bb2dafc06ef97df789fae30cc0ec20d4f2a7ace6bd48af9485c075d44c47146b6b8e176af2cc48898d8d812cc283765771a05d7f0a151772f85c4d70d3b38f9563eea9936fcdd13d4b0c0879ad2a755b73f259566963e734972b482b900f721baaf1a42bd4eb9a131ff0fc38a105ce782ee9696f13418d313d2da95cfefcb5a5c78b98b3448ce5958577daed1181b8409f13eec9b5addc192ad64cb9291888ad49ec06a59538b24fa0a64d934688cb54047952edeef548b18396f61e3415ed8a3f7b860bd22214bbb7d703dbda0b57c360dd03a8d4dddd9ccff2962bd32e9d6dc0e5767dba778255b2db69f13dd8f779fa151969709b43987b2c0c51d1e46e33653a9bec3e81112da1aafec134bc5f5dde6d22b13da15778577a1fe48c0aeb60ca152be00699bd0d35a41b2455ff8bba5a1ad172ad38242b18d1c0fb7425e4b911df2c8aedea3171456054d38b28e45283bf68e0a4ec4054d43bc3d38f1b2b195e142bd28107b5764b0fd0989814fb39ae042d0ffbc3e53b89c49bccf831bb2f5ca796df84462574e56a3e958e5cec18f7383d0efe4b3b8696ece40f5b5bf7c4b66968e66ef92e2454364a2d550c9030bd07908aee72b18f3fb5a8577bd6d2ea9f89d3f8e86d2611004fabb429a9fea0243d01de8032675a2d38b354ad1cff594b1e1b6952c02f9ff14c3a9619881f12919aa3735d0aedafeccf6fb65a2079d373c4dcd63e7e9e0358b3a76189743bd632bbc8bfa04aec796cd012e581db0ff6d54a625bf218b78a04b1b8d9b1a6cd04740871a65b2e7d5b81cf1115322ebe6fb26ecc68ea273cc8ee702bd81b0a0dd98bbe150f12c63544637d2c79140df2d34fa828d8557b71b2aefaa49e29d4e7d4ed00ff903eb23b0d2f0d88fee0ff1aa97407c45293fe7e3202a34af68c6a6bc6d7fe9797cbade22f632d9f2ce3ef1971f01f4dbbbd6a5d684e0ce951ce99d2d2c727731a9ae8a14c6690087980466c891306977b1dc9b6bb17b7ca00ca1bb4170070f00800326a88fe04569dac5b2cc1325b0fa4b1c564d68722a0622e6e0b4809a5b7d545f3a6bdd71e8e437034416c266a399aadd176d0ed7c1bf700f915e82ed2782226fa731d036f02ac6b91578ccd53c0abf615ea2839e4211616853e70fdb4a4685413d224754c84c54e4d7e61884bf23ba7357da18436b4179c0291accb410fa0f374e4b8852c3a8f5d0b8055bce3b66990e049b78672f1b4929f70232d38ae501cf980d46f8b9781f53554be516a52fcb2350e3d1ea8d4754c2e8a2b7fc7e5305b289d70d364392a004d41653655881dc4f54f8fce789011f0db3c9e6043156e31146238363ca91c82848a19dabeeee7b185c3f53d28aac1fb36f3c034e855019301f12880b548d810b3c2d6b5f2841818c1a008b33c36aabd852615a1af9dfe69e322747dbde74954901e30bd09df42cb9ccf5ba0afd8a3d86c063c1235b8a010a5ccdc5c42c71d8b4360c3f19678bf5099164515ae6ae6c5e5feff37aac7f0d944524a337c0a2d0642366fd263002c6305b54d49e9674d4e8596e383db3f4c87be928078c5d8efac7d27eae53cafbd721013c31577853115125f4aad448db8d5c576c08903b20377e3662032cefbd51fad71e57942141d0c6bf26d3035dae7ee50ac94269fb783f3292870c88f3d42c243c466150c11f3fbbd35d6ca04a40ef3f25835f20cec26c2ef4f7537c2104fe5341e47b0fa037bfe0d5df90058122e7906cdbcf5e5aad61a2a9996147b8d60c62b5e9fb5bb11a6040a69fd9974424308a881de1c90dbb545e389ef78c1a310d8400196b133e04b513319521fa6f8df9d80ebf0b876a05f2049d18381ba2eed42ec478dd7be3090fc538cff61b2690d2860ece1fbd2847a9c0be9e1d0e590cf5ec816957c01529c72450913f45d0efe0fa8ed1c7e046b9b410b147c0a6aeb6f3b243d4e9a48cbd9f106aa88ad00b3ffaa85ed80be79bdd9a6571408587142461c660bb8517ae3650e24e36d282a3553c5fc08449a28a464fa7d3227e6952004f73d63d46296e507306b21be4556a10b21c24c09d79640df7e277071675e8bf1f7a7aba9b2c6448e12f4f7a7a5b1a2daf2e5d67c9c723248090800c08fca5a40fbbe52edcdff01194576987e31ee76bc624e9381f6bae6b6831c5d3c98ef45f9145fc78c6131f581abef8f989427d8c90d021d5b557873476a399b4abea4367e0b98145ebe06dcc5fd9a01c2bcd78e1283428e450d05022450e9cadec33fb6bdd8ef887c5d37500b4736dab55ddb9d47ca76499cd7e509b95a9b8a2e6c61851b2c751339566707a76799b5466e863a28dae504084d32dec7c3211ff901d2b0c2e8a14011e897fe46919c707da9c802191e41a32b718d4f395780add1d16db58da40d01d3f5277340cd4ea1f80f622309f9fea2ee26ae6448f80a70f0ac2185f129f0a3ee8364cbd6787c6f45622760cd3f852ed3b5776bdb1dd4001167f77e60f773affb3ca9d033bf8587bfaa563065b82317bd4aa2e4a74e6b13cd5c32ac6ac0d880a0ef10ddb3278521c3b1fb6032a0de442e75f30b0ca9eb37b4e77bd478eb65de5f0db6de1a08c656a18764ef072a096544aa06ff5e605a811aea1f3b60122de54a2c8352410d8b3fd4fea50d19f8afe1b2c1a5c4d63955293949591735849cfc38889398cab52493652e30833da5d36b8b76b1b6090c118bc56fae19b2c4e1b9f27d234480d557c457f372dbb43b73a2e6ea99107f49a80f94c85d9043081cddaf0e1149001414d4266a92148ebd66a0652067a4b86fb9e53545dafc44bb5ed26361ec28866e7a5423782bc01d9f097b148151f89d96559ec1db572c48fb836097419881b9b233567f4328c87848b5fb6c59ea4e37e63e09200468254d1bcf6ff99b7a9f9604173a62b6a449be970b1e1857d45b351e77ea473ca67caa225f1264013df5b75b20a13d01e337175b111d94110ca7d80e1e63cc8574e2054b7138ce2a1d9b8104b7f4ea1750b9b6da1819147ec0e0691da02703e3c7fb248373ba8570cd37f21d4441ce2f9870d24b7ca0c57abba79ac434ddd0e104d88eefe6a21850e5f4261b195d5844cb237e5c28a527455a84d410ad38db0bec95ee6312e287eee160f245a695c795917392acf6a84504161ab22492b879729609e8eb84d5b88eb6604036015df32570944a52d82a793f9cd19cb593143f2b82759746684d9e1ced92635fbbb1443c1d3c1154d09eca61777dcf8c46bc5ed0aea84566a3f93ca556c6d282083bbae4e4340931be7a2a3c47bbcc0833ff82fdc913f2f1cc6882dc4b664f383553fc6d1d493a58f82182828913ae9933b8e1d46ba734c3ed02e1967dfee76c6d7a12e9ab78efaeb6b90b4df2198f4623967e7a638da16a13aac64e5538ccded2eb40b098aabf0d4d3077985410be28dc5b9397130f49a8b2ea4ea2e5f371a2e34ef2deb34ceebf350122c31ace49ed85b107dade3a26f5d9e504d36a5e1d9e30bf56d049934d07ec7f0e134feefa563461bb73a41a4ffb335f24495b28780f64a48eabe74a909896b3562f3486c4b9d51827984c8d8118da988c0d083d86049814cdd52f6e051c820d8ea46de63e7f710b8100651538dff6e6824ecd9df0e2fcbada7abef10bae6b84e462b828cda7b60b246bcd2eca97382576ddd24251decf7cc7081e7829609bdee43e338ca441daf9701874fd3bba13782fb05c23e586a15666b3cbdf92b6ce34576e37e20af4c59ec34c22674978d5034062abc7cb39ec2b64f24bdd2129f3f72710c18dc77a964e5dd258eae832868306b16c06c6aafa8267004f1327a6b00333a367d7f01e6aec58763cc4faff9be95affbbcf37611e67ac5ce55a440cc487798be697f5447f29d5899237192a7d74c9d3b2270b3a36ebfc49c42d7fb229d29891357b01e2a2198360cd0687b1d2e0495589b2f4e38406bc4f9a6407de17444f61315ea0ffee76b0d5287309c8aaa38ad546748462d7c5f5b873bbc24ec9fb7b0bd488d33bd92eb6c4d65213546b563b4402a65f8efb0a0d142fce89b317fd4c83fdc6a14791126d8f3b10077194be3cb9b2c2fa918654acb5017f2732e6e23e21cca18968afc4eb9b3aa47ded521b40ed8f2d2d6ceb4714340cf997e15b632822853b23f8323e5ad192dd70cae2a22abf02140273e1f7bfeafec0b850ee30cb250d90ade5d084181e4b87dfc0c15985b2256d3ccd1a219c78ce8597fd3b024baef01b3931926ccff32e4002b8b1ad5c6ad5381ef54ad7bb3f78a3d1deb6ca7aa6fc2ba070c27e43c55a1570528b7e36335160253c7d5c8ae9d68902dc1e6e27d96657834d2e60eb8ed831a260e07e307a6bda9a44bb1cf7de86791352cc78667686e60e05b2505c4a4c351e696e16ec514af502860308fed0da485b92caa676931c2864ea179e987bb0032f276130a8efb7e7b7cd8fc43b30e022e160c243efa72cf71fe146242da622207c09659fcc2e030c3ab96b73f2b67372c175b4add20e65f39de4c034d4d4bfe4ffb28901360c70660b3e5b0101dc656ba8fd83849789172e4682717f05129129d578f44dc42a38593e22113ed464afe39119515063bbc14d695accd673f1872c15e6627609501ba83982b53346ceb56e825ea3a880ad256aeda33be9fa068bcc863a7dc678e77f2d964dbc78b5e39fecb9556426924af22254a7de49e86b926930e7f8ea227d23e364c70b765b2dbafff3f9a9aa22e4fbb270449862dc3dd4fbf5148bcadd455b209e0873db0d7ceb19a73c51c4faad04027b6a6d29b91c01344d1cab9ab294e42ff57b70bc24623914d782683e123f15f70a9f33b335ae90b6b90d25da8f65459fcd60480f34b85c82fc236a210c15658ded7e8ffdb61b1ec433297c1b88d6bce9994a6b88a4176634b6ee46b1ea0fd36db333438aff92d4e0d3671dc959a9c3607da12c0cfd60729876a1403210f2ed0e4f01cda520c3eb4c1ef2614d97c41c74a520c930db356fee2272947eb0e68c9d16bc5573d964346011a961488ab175bb7058bd8a2e7def7fa689f5b68ef6f72f044fef1739adb41aaa9e95bdd71f9763242c6cbd47e40f4ed083d7974194a0051d38239feadb547cea974a63fe5f25e1a253158ab1586be76df1883d40126ad57e07d1720ab09b758d90e37d03e7f00a51da1b57978d1f587ad71d61a829826cb0e35c80c6f17a837c37ecf005d3d6fd189f9ce9b17ae165642d2a580676c91f79042e6553e72b48cb6ffb6ffa5f316c44d7544b50da218ae3614c6166f8cbd1b03a7d3cf2df1bb375ce65f9866ed83aba88d81618ac415c8fd487079e94498f306573e8dbaae8895d1ec004cf06b28d051019a485b4d65d71586fa60b914e044afa97f0e71d6d640cdf310f05d2d2a56e9c3bcf09f8ff5a15b81f59011cdc4bf2858f4fae92dd6d8fc4976fc19f2e3358b2bf53e043cad030300adeafc520dc1a212acab466f47c5a32769c71dfd8fb05a8f5f55ea5a40bd6f18e39ad0141918902c2a9f1792e5580c4bb4dae29d5faeb2ac5f48af0e4ef4b9f672122a6af18dfebe9f38eb11723b6c95324eab77758a7b8c37d373d5c9e0fd2e17a4071163f61b86b796277a78588c488c1b5e655decc259b1dcd65fb663998e975e483cee28cd696560038adb6e0eb3678c9b9c6c8ca19c0661f8987bb7af1e30e29e0e88c69c6debea6e54ca478aace012057f31736907848638b5e142f52590148efc6f2169ec92d83738b0d251d27e1b08977c2fd5932d06d924bf98523707554fd42e212872e57fa5cebf3ec99205dc43d926b2898294fe08a6ba0a04137f23eba685a4440c470ad1d19f4bd23173d6e05e67ef3455f1ecca221d5997dc05e18b9bdd2ee99ffaef0b6a7572df724b17799c9d364abdf7aa5cc1b19d31a0b1cb9f419f34ef9410f482dddf11d033510e451283aa2e95834124067318e53be81c847103ec8d957c9480b8f195369e55547abf292ac7401283ef99491ced3b347a0f1e66f39474702efdd0e52f1013a8a58cb1e566e93cec1e436ee56ba3b52a6ae16209443646e9a10b42675add41e7d85f638a867e2fafd2bfbb8c5369fb737c93f92130ee6f13017a62570f3a2ba7fd0168461a4d0dca4c28d8c7a4809b4e359d7103d58977bb6944bfce59d5d9105ec39aaa812210dbb70fab5c1d3f593606eb0a40a77d4482997406948f0ac76575b12fd02c36cdd5f6e8facc6b5d3ba127a7d5425340e8954d9a7353a656950c25a7746fc149d1e94625f968dd3890d5509557d69614d0cad0fa5814c8b23a9eb74e128c8557537a3e0c3dce8a7ee2c74bc37bb6d5aa841a599e320699a9d1236f6ef0f7fe0058b2898d5d0dc0d5080e69f8061ce9bce8512d10e077ca44d585fe2e3b0d861372feb30f35f2381ef0f8b5e76833f0e80c17d0a58c42d44de81c2ab231b867b45f309f942d8c1d2802ff9d9c18ca7a11458791af411c174aea5e7aeb9588da540b6312129bde25baaf82a6cec69c45af46556dd9d6e65ce518b4b60d49e48d68a0dd83fd2ab650d8c950c75e9401d041d4fd3cf10cb90ba0c1e892d450eeb2b5c3bb439ac4fd756355bbadd8ab94249a19d9d408d4632545aaf4e4e0304ad8c4175f07aeb66c3c32bb477ea09d69f212530c1035afbcf8f6b09c924a7f901f5997acda107d7925ae5daa80b815b5d1663b85eda40dbe1f7a0516e58f1f579f5177bb25839d1673c5164595d72ca191da98943f20c9cfbc110bb5289418d30b4444de3220107aac14f9a192c41e7777759b73cfa0fb49741070971551e72eb9ffaf4564ca2ee345333a63c25b5d2c54567833f499f6695c581e1906cb3954ae5e9796802a4175a8c478bc1cf7bb23e41de1cc17f94e0bbbdb3efb49a4dd8aba0150e5cd8528f29c646f1708aa4e9a8605baed7dbcb64d49d83d63a04de49a4b95584f29f3a55b208e3bef99222e1520090bcfe31a7882d540bf3164a7dfa304fd616858bb0df2c83408416894e60b084c3d4981d8b8099511aefd5efe45a019e977d63044ab0411877b5057865751a554c8b8885617c3911b2234e28f12c7d54eb546e7d65f8dd3f15b5deaf06ee737a1aca7a021614a8c68bcb2a212504685afad327cf9f4d487c9aae8d9fb55fb4232f6fbc0d1bc454598f05bb002856442c3fd3b4575b6e67e4fa40806f5cc09bd0203bb520e679221c5ca7ae0c431bd80c0b23882e40166dd11ff94c54c58e10e9960f62166f309bc0c5dfaadbe4fe74790132b238bae25692649cdf6f218bea15cf7d6831b39c4add51a9e0061e20e67f98030fd07847f7231b43f49e84ff2bc61da59d2235ea11ffbb0c0f8c266225cf9c76ccfcec9278500943ebbf6698ebe966611a4d788786a570339bf3d74c3a9eaedb02f6ce028c45e5e93fd723cd7012a2c9364e8602aeba144aa8592f7de4cebfdb59bb99e8b6a4dc072cf57cd844d561fe06816cf5a80efd3259acd0a5f30399aef31e0dde6f4d104a42e715413a86424833cebb021f20b608a6cc801f6fbd56a11884ab09fea414650990f5f1ac1a7d86459a09e27d027e706fc2a909efeee7ec5cec3c734cec720fe23508e37c4e5aedc50d6e7c5d83c7bcb9dfd9fac8ee8edc3aaa4b68234825ccc139a05185f1b814c14308199bc8b7df39824341f20e64445b35a6f0797c1f858c6df088929a875691247799fd80aa2d9e1d3db3b9aad447062ae152d1ffc4f516b1903a18db4e7d05d461c67469aeef3c5cc00fbbf61e707672d2a8ccf76de51b94fc662a75a6c23ea3efab455905c6126febeead6ad51208f6168476e4e731ae7a15d67a03bc1de0674e06b63fa7da3a198142f22e61087fef8ba2e63bf1a9f1289e1f5df9d3e168f330be087ebde34a9e6666fc917eb2dc38d4b239fcc1b724aac04313dfc0acd4264875ddd027f63c7e25c1022cbb528070d9280d4680db443e86d3e4346ca5dac7d122458cf727d1d46df48e01fcb08bd84422f165c9f5d75862a9c275560a66ce08c01d46f40291458f9dd4a7f911c636045b824f2e62a4c2a63179480e10225aad04872a18c7de9802a6ef27bd7d77c8ce311e71b3e1619f0c43b30cbb0f33e18733821e127dba91e0236c202756f69297bc62f35155ad6f2f874f9796057772ddf60e85c5d8260f66cab96e6c3de1f61bedeceb7448c9260f73ca1f6d5fe716fd4c57f3c7eb573f78ea6c7c934c3f715ac506c77e4bf51291cfbe16211bf676b884bc60e3a715861a036f26f79900e3159c3730421e66a6fdd1bedb283500eae449d7679831fcbaf8e18016c90f998c5571e80d89aa28267ec4070f0c672fffd9c1bcfd9702848fdf53b0518c92af28e5528eb891ce79e3a63ed289e9356560f5b71a9d48dcfb3f4165a3b097771b36d3d00c7288f75cebe7ed40def35009a918dafc42468ade2db632dbf0974baa8ef3814246158c7b071bee2f9eee3fd56b28054dc3de742ea5754950100ae967dd5c98f1e9d0269782fcb1668eb461f72b8fa160eb9503c1d9df970aafc4de6264e88576e1c5a01862ac7bee59b33a277fb80f25a19fcfa31cf5ed96446e2627c7b8b0fe34f6eb85ad2f658f4f6c1385e79524bdad68a60565dd0d7c11022b693cae37313cd6bde8ebedf8b531f5e65e351cb6a12a0f5c4d8b614c11d7511f9b9ef2c67b97ce097036315a432778a1346ac5379798e66d48006fc1588a7da466506e7c7541bb4bd61eacfd096ab2ae95270e670a80f4749b5d9a08bf687fc044cf52dc09bf6ea2562ff2f1f86575d8b1adf707a61a7368dee79791e20fa224ae1b90d55dd92bba3af9fbb7379a2675b74e87b133ee52b00efec180c47b06c49dd361d6a0f82b874b7ea4abb4b33fe6580545aa1971b307417d961f05191eba5ff9bef03b2b1ad0ae402cfce706ce66138ebfd407c96e2fbd5238dd0d6b3281e6e5e70e11219988fb6bb734cdc4f52911fc06aca5748d70edd1edde4a20de7820d3e037bce6bdfb8e59ce54550568c9c04330505339ceeecbe6a020d6d091bc07c0efe308f98ec66c29dd78d307f2037c9ed5a24ffe24cbb7e85d25360e0f4a662d20610d5d89a23348b41226d8f0cbd7fb9373d5563616dca4d93712ddf0778857c1479ec51f00f18107b29eddd4a577ee8bbc015ddf929232e73afe2b1ebc571ee6fe0b733471ddb0ee5ceab6a3567ea3e1ee9427ac486c47040ac05c5bc297c2e6505c66a0e34b2e66787c2c78e2f57c3f4fe19461e6c90bcc69b07fb9d23ffcdc0f72b5b1ab55ebcd403ef1ffdac8d85262785d75f42de48288197320882ab327cad449a75e0d7e6ad2845ffafd26674c69696191d7b23e8d0eb5b2cbd695d0ea8e0a18377d427fe3c18f5ec0236f3461ee22eb14a34e37f5beab45cb622d358cc2b5e909ee1f4cc4441223b97df8334a61493392bbced0eaa7b8e3832699dc3a03e9283a482f9effe9888be32455aac5c314c95049b5933de3511c2a69ca9c601d63b7dbed8a7367e25d6f50f8e74e126607a3ca7a629fe5e6f8044c0581bc3410a5c06ff6487033d91d56a6cbe75d77b30f842e97339d7c6514b649ffc2d12b2214a271e96839825c3fb29de5291dbe0e6711dee08190c0bef5a7d56b40f682059a78cc48ce48d1d53ee985ce4d87b2bebf6df247ab311200ecd376a6dd64b60c759f61eb116186121129bd6e24eaa6ea936eb4ec8e5dfa74865709d8dd000c6f2a7085273417695c2e493d7d6c46eda6a78822722726a1c7683a3ecd671c0a9dccdf80cd79df2522b8bb0d3e3e28631110616f202d3c55b152e1171d5f11fca4072a0ff2fda9cc2f7be1cb90c080e27d518882d7e9bc093b3dab6d9fcbe470a7a596e288c2625077d0e92a4f01c3ceb2664575d1a8ead28daf2f6b33493aba5b7d8a1fcf49980b699ec56dfb0a278a35c37e17356cf96b53ad9711d6395271a4fc80dd85022338dcfc9af0be917f01a7a2bf6b78d2e4b2a6e094b208b4aaf033c13faafc10e777873d95a0b8d17f1e303710279355372994e18c76876720d640f19106ec3eb14d095be37d9b78a853fe88d736014ec6752abda8d94ff219864a461de51f1cbfa18010351f9db45316d01846369563a9e31a1e9b2af75f5da8edfb6e31f299b941b51b0d2eb4c281609197d8fb1a561fdee9b8190d51cdaca6c814334695abc85bd06bcde92696182c08455a0aca47a57aafdd38fa656a2c3070a7a4752eb5ed04a53e78a0697342fe90c76e1f88f340ed675112bbb954e1b87325aa81c0d301b5886ebf3a4d987859eb8e13a7fb78e110d4d062f2e1034ef771cebc24e6478cc8bb7221b07d4b90481614b9476ea8c5e2e9de13916c424e663dc1ae8b5c8d24ff61d4819050edd1d63c888c537ff80905d5c0f95f16edd9c6105d9fd65de93afe0a1ae17be3e3ba96b2c44a57a68fdb3f87c9677a51f24299d3e4f19acb79f1ccca6b96a78a7c8c1b008e7d92850b51fbd8569fd01b4cd8a66e96e65e290f2756e271b35d8f1c3381ff7b54760cf094c5392288a425ee947930a88a21675bf4ecf72f097c3e5b62e30819632a6ae8e0d2f0c6921048e2a6e041de0fd27b3fa3c2dfde9af446dffbe22e0a6e08d043c476ed9f207d4b0d286f2aaa40d7cf419771f4062a4c6819f8258b52191f045853ab275f4e2cfe5557fd6406b2877777b573ff5ced1e713611d39a03bab1c3b32891900089b09a28fe25048088b03d6a99aab12372958de2611aabecc5b6f54a94e892fae6727e9073c6662022117ec54bd9ab131ef5e5b702ac551b5c58ad06f09723ced92c3062db84fc28bbe1cfd33e29170cc6148d72723d0d3f2975fc62d42962586e6fb62fd5441ad32f4780170ca6cd0d54d9be433e06ba417b219604d34bc987fc1d3e01ccb4de8551dfdc87cdc0124385c46edef04566a7af2141707050ef56d9ef100c7dc02634e23b4e3df4cbdb155f662617c8bbfa8648701a4e51add62e58f0dbe1181e92d42c6042962d7fa89618e43331122c0b2edcbea7e2f27dce122bff45d297c497255e45e71e3f78ebb5db7828335de3b2c1c3ecb9a7d1fde237fb52d678776caa2f3557b5c5c0b70212f0f0a6dcd32b816ee5911f2f9411dee9e5ee2ab11c176d375ff8c926441fc05b972d82173dd775f9367827b9abbed7df632f7f6b8287f711d7fb11f8c6f9819321a62bfe13bb0dc49d20f328dfae56620347821bb3c32a0dec2a44e04570dba085e271d117305f95a13a994060af00e547b77dbbc79715de28c1ab42e416cd0619018f77849446baff2f184f5e34dbf5f3d7cb9dcc1169472ff0c2c9645e8db6d734875eddc8a24e8c9818ba84d21ba4fc549e86f905fd69c15c9dba9d1fe1420b41d7dbd5b0a1c1f7c47f0d77c488c067ac14c81f8a64f19d9e225b2b1704f6060073636bb61ce7fe35d27a2768699960b4a25a0e7b928e88c218f5e166218c1ce01330b7480528442366f2d7c00614e113c72bf1f88d72d4cafe3f680f5c94e363d7365656e1a390f76540b1f2bb4567c4111d5ee236bb0a29b73bf27a67ba6b9d2d8087d5575584d1a2d71ec996ee51987a6dd7621a04d34902c64bf5af7af8b917404a3ecd8bcc04373489318877a8b107870862578d1805c974412e13037374b647d60f104cd094f8ff9bbe24564509c46ae71293aa822f377ffdba2842d5a028aac249156a62bfbb620026f5f793e905353265fd6bbb0ba6bf1d921a676fa3b9ae0ff0c46d7171652857c2569755720574759165b3abd256181f910d540ff55f6a128fd694ddcecda64912ec9b2a17c34ae5935e27c831fdc439f719c5bfa58b9af1b1bd8395ac728dbb369d68f0213e9ad8a973b6c6c71963f1e9d32d0bd5449bfc69a677da16fa08837528b95d2afbaaa2d56c9c98aa24bb6aee638f6c399a92a6cb810b15ca84e48fba42f1a9a2da10dd61a31b51e3879410732fc9de9d5f2b597022e2f3bcd092151248ff754e3fc3f056665cb5ed691e30491126495c3c79a3f668c7a5912b491f2f7cb49fc384a3d2036f248e3a48b7fc222228dee909e0827e801ae1253596f0e8dab422efc5eb747c655878ae611dda1711d55f4a8218a52c2b931205721eb8b77860ac91f33f64187579dd22f151e3250c05a3973eac8bab1eb47df6ad686539735812bc3a5b64f3f090f1e237b963ab3876998005836aa6707c516c2ee4e5b271816d58bb93a56a083c103058415fedbba6a0c5695b7450132ab414b592a886b5a535a18eae59a18bc996bfff99559453b7d1bbb84809dd611f914a52000bc1ba185ca61dbe0300c09b6538e2c6232c7ed894ce3890e407bd3d84a307733d9068fe0dcbc704dcb2444087b8039746a53304c9f9b77ff88a374796653a7c3fc6d1177948d915062507f01750d3cac7d32d06674f6a1720a752199e0af655d1588537a8a7d1ae248c47696c8415f3ceeec014a57618a12fa5cad202c1feb599e16ebf4e49fa020c60ad55a3cd9e522613447c46279e8e364c73364bedb3004b1f47ca24e24c73f0db6bae4017de4c03c0091ff1b0b839f66824dd5ea4c205467494e247f9a9ec747b76d02e43372b095ce8cb1872255faa4cb6089e31a8b013663b69ee695f666985c53285a62d43ccad52ad4e62106f414c0e2afd920457121f9f0d9ee3fe3adf80aaf0c0885ec7125f0053898cd20c0c413b6c21fabc8edeed51f9ff6a845576b6349aafa74bcdaf842618488b0058bc09a2d61350eeb552c355915fd5cc6c6bb6a5fc28b1f5511c0f40e84a13c9d846053ad880afaf9673b7eceeda505cc7fcd4f5d4d8cd4647e15866a4f568a329d89ad94da2e4a4d04382f9714edb744130a8689ec5134df47c9b39ab5ce44db89bb09255e2f360f24203f00e0fca7c8fe28b31eff50f4532ad78594566751c3881361f81fd93986c50bc553a9943b5f64c1d281592427450ef746df8621c979f879c5d39ebad24c9c553d29374c340f6dbc28ce423a1d3a89577bd02fd6f68cb5557dd641be0d4cfde12d0b2ae99799a4620ddea22148a2f0a4d5a8165179c2012607ba3a8001283f168acb6796a987453a2b877cff83687b425d60234532dc87bb60eb1f693501e8b66787cadabaa709df8d42d7b9e0c6481158d888374e55d41d724c1d45353804243499c242ad903f895020ec2caba4738937d38765f8a2c724bcee5a3ae3dabf3d918903086fe6cc730412ee33429e0a3fdb0416f0e5d51b0197bd331497644232536a6aab28d01bf43e48e5c0a0293101334b5000fe8607b50e793f079593e7cca45a17976c8c0fc8fc7bf296c0c00cc789f55c1031e67848017faf3c8bb15b58fd227beee45a76696934789ef56841f34309ffc20c85c7d3e65e9a5763c4daddd6d653a09c97c832012fff81b3208b734708a75b0446c3fa49bc172f667103f42607ff30b6716c6b792d22dedfaa184c96ecb4290959f74ce2382c76caa2814f0e9be7d0bfe46672a5f9b2756b5d7f825898f21b2bed12a5e41769b3612aec83e1393de76fbf7770e400326b97689d6e1c2fb799b74fdd6f85e7c6760e21dc9260dcc718a7224ca3811a42f71a0ce007aaeedb6e51a4359c76a3add2ef5c0a4c621b2c9dc82b0ac4466d51049ea4f60cfe5c080be124083f642d1e896ee8b00df34da13d30e573b113fda33023de864a5121be16859917b3832e187c33ee3f159d4d9262ac2273143cc6078d05c96b723870054b7769b1a417cf1c893f4ec4bbdd83cff72684fc1c043863cdd6309685666b35096bbf1054bfa8cd61a605a55b9955e1c8d9324f734c5d01dc50c5240ae5c1fe382d0f6e092c7a5491d85d36fa09a08e03492b2838d4ed19419cd82f07fe8d3840d949062d8fd111f985d6e75e702f9cd73b63cac7fc05f72dcbf48738232cf825d490981e281339439ecdbf3a956b24a28ec734200f3a2710960c76351769be3aa16782ef8df1cdfe21e35f824fb3643879f582ccdd956860a1341fceefa80efc3d34a516938c52e2b8191d13a3392f998f30207e4b8024b4283561c3c9bce328a28cbbd053c1da0ddbed10bf1af500cb748cbdc086911f785cae60485de7a1073fbb8f6a13817dd78f647e7f4b04ab114138dbc41acfd909b6cda6ef2a09fc1093054649735f4eaaedb27bd0fb561063101fe3c599204a5c1216341164c92ec6ab56f8243206845e6a9e813b6ba134d6772539c5fed0fa527717a73649f9ad4c6e4673f870867c4bae602a27f1006e0613db03928d6ca3a721ba993b4088a81e32f1667486dadf279f4b320a3b5e9b39ec6149bc94012413c556108c28cb5249c1f1c7eee98556ba674b19b814a5b3ff366cb0f1ea133ce8fd1755aaf3f146f5da21fe3e80d0c8d767af6dd1c91a0b707228b44479fabb46e9c77c27e4d8482a9aad2642603b551568d14b7987d65aad6accacb25dc56244dc504c1989278a6951de0bc9df09461647bb217c0d6da1e2fc4fdb1e1c546a294d951c149c490ee4a111889c72b4e89f1fb226f8366d89236d3b6b2667cac611f2f78a44029de8f865b756d2094459205223d4773bae45ae2e9e688e2c58b24c0fe529b13e2d6b71b70d602aa4f401ddb9ee0d6457444268003b6214913282fbc4ef5e3b9c139566f8f83176a974c8760d4cf26532a73aa2e9dad2ed2945d854aad02d70eb66471fb44dc8fe8934711b8b7c96f1dd8a7c3619c2fb1785e589d18bb743052c0df4acc35c6e6b349927aba830d8cc3de46aa6085739e7a9c5befc58597a6aa7d1ed0053fb7e6db95c7ff6f3bb2b18d956337c60184a8dbd78a4e68b246b19e3fba915be474b5753a853696fc7b2e646ab39404b7f68de34ae7c20878b5da99b4a6c1970ee3b51bfb998f232219895692941edc6c580f9c45f3b0216a4b126d202387181a7c1469c92a61bc36f13e154a0ab1e78387ce55a2ad7725136041cc246a4d4e354c0c8101a13a3bb7ef5079a6d01210bc76e9234ad751f95edfd0d0196290400f8a1388b673ec2fa5f4f4f9f4e9b3174b12175bc9b43374d520e674f6cf1007d62628270f1e1e5ae9d40c36ac477f1043416a1af4bd92e3a47bdc18c9ce475185ef650bb2d4843486147771ec7011e1483da4bd9aed80887c61e801c08d67df8419e96442cccd669ac4e810904840c79aba2c694ea34916370ae0d6c19635079754c16aec221751332fc31dcc5482d1669a5b843549ca3755fadc24961f913217bc62d401bf6285ef3a43c6602a6e647121bd39f02f150648eec8db9d27865f8841935fa6b4c64a71b07bde59dd3cb50bed5ef98c5289958bf4efd01b64649f736a4c4d8c043f1aa1cbc65b5f99f4525a2001f58cf46d6991c060390d3d6f97967b6ae3c0c5ec24c0c2bed695c3a29aeb833ca5f84b4df97a803b34925c6201626b4be9880c3fcb4a2d580e0f48d7409e914b4484a9bd32a4bf0e40e692342bc835b12e4d20fa25ab746c65caf464ccd7a62951c4d004f6fd1f09c1e81039765b6b540297d2517dbbb8dd61450445190bd7280f7272059838f41580353bfdd8bc1595ba1c0954d218d2802d9c395ed88e18f405c0fa3261be04f229cd97075b5a4ba130deccb056455c25153a30da0cc4c53080be25dc0f7e09e5cc4d98ea9c7d0c3a41517085ef9af1660d1ac1a58d8cac970cd00bf95185a2135dbb42f44caa43f84d9e9e30b90d036e2b979fb38511266bff2d98cd4c6bd94c34d8fa21b34c0395b9ec655d81bef56929cd8f9af5d9f0a4ee7c9b1d198b75cd8e0deee528b85a4170bf8e634c5d7059e488d8323131c7133671ec63440eadb20ae4e3b99a755c8b5e61d2d3ce5b02a9dfc8d2e860ddebe57483487a4ec7fcbc2c0c75710ae22fa7f461c286f4ef8e4bc1cdb894fd2527cb0db5e6632ddc3093ddf6eabb0e1d4834a72173cd5be62533d2ba16ca592aeeeda764ee78c740e8ece9fd494c50471ac0716e3b73d644347c82c67ebb1688ae80ae3244057a011deb7f1c48ac0d11ed584f301b18ebbc3630e3fa6201ad517881d0f55e89975d7b6cb53732d597989b7cc1259b0b57ee57402a8636cde95480a381bf1630e2b1915a02f70148d39865904cb037388679a43b329b38546ab1340378f09fb8143323c4c22c2684bce726d8fbb0a8df1be2be4ff8e18a8724bfdd66305d240859782718b6cebf6ade449094da7498e06e413d5620787581dd4405536882acd2d3d540fc817e5552db773b897ab19bfe09c91a0c6f81fa69b2fe1d27a4c94a4f1587b3082ca23f4deabeb4ac71917c2d2b15e7134e481bf7927425cca9ddbab7a8a9272ba20c4f6b538dd32dd6d02a31454f9d0e4eee7017c1203a3c050fe7678907c0903536708df499fc4ac9e9e2fb7f204dea9eacfac757e65f4f84c805cea9b14fbf17054db8bf3d27b1e9505e143474ff8097a44390bfd7ecc6bc1341006c6ab8f4e2252fb13a22c039dcc11ef6710a81c5314042a2384d5886832d1ab92be0bbfa11f4a416fd3fc3e7cb9b26ce7adafc068b229325574b6645732afbafb2b7c95c84f2aa14382da7f5e34db02e4645904767a8f1c78339e9cc6daba8bfc266945400d45b4a2abcf39ed5d3b654fe17433dabf80f4778e893fc12a2851090de76d1ad136975abe99d1156426162825e0d58e1a4304ac5e8956d4c25db884406f5b5961ddefda31b839ca063a381e305d512b7d9238c4e31fc82c35596197b05e1c52d07f08a90af9dc1ef63a53aea4e8de8801f8a08ca15101e69522e1ac65eefc6c4d7db5f04d9cc4b058ec4699010e281b2aa7e99468d2efaef3ca4ca29dac3041461155e25d049e9a7173f2984ca1813663c0b35a0c8d1e84d4ecf3e9c3fc1c0baa748302c5024151efedcb2a887116ddc9207c40c19c7c33efb666a8ee12515b5dbef4fe665604bb7f227b6949091f7f469465e9326cbf0c1287dc15df73e7aeae07f4d368e8f9c435704e012ee41a6b50b32928f7606bf9a705ae5dec7bc6ba0676d019124ffb6984abd58a0bb0bfdc9703a40314224bcce75ee21dca371a304958c128021d6640ec5d5cdf149bc63fff0b67cfb9cfd5b2b49461491b005fea63b8d8c2229bc4f02c530356c111b5cc9831ddd46eb12f3bdddbaae2e826965fba39517a7e9e393568b62d7ac74dba8bb90b18fbea84d115a8dc9f35986110cd9e43dc0d6c9924defe73c57fe52141712500c9fe07ec4bf18adc82caa3e44dbfdcb6d2588e77fd53696e85ce66a27672bbb20cd83ab7b01d131ea152d4b05368856df4f2a66a4d198a91d439a8c42c5070d9d834cb75b3ca6643e75e34467197eb9476d3f0d5799060a4da5859ce45cced2cb71387cd8dc79a7a8d640684e3246fa6827dc36cdac7600cdf5c66510d6488c5692167c029c7149f8b2ae0feeb72d178e552b0e5b2960d35a53ae3c17f665dc8b7d0a87fc4c7a6b971c09fe8ab9e3bf3355e81d0d35417383ad46712531b7490b1f0cb20ffcc2f4812822794c15fb9ddf6ce72e75551b37c5e7c691fab4f38ef81f679dd7763e9776ae3c34267d702d683a8c76c486f3a87c131f7d7758747b18993a0b410a23e493a7920a25c61b252f5451158db15262ee087345ece6b86379eafac554606d70d366cf89a83d3e6f10f344e5c4cec5f8ff9f97e24f71e12189e8eed608ed5b091523944c53e7fcb107b18698e3a25dfa718998b4cbaa34a6bae8b20c9246f0f8abcef524bc55de67ce26cd27367a30faac5133d644d99d171d9ab5d1ef1a745aa004fc162a474f88f478e290c1b9d6ac73665b3fcd8d2a848600bb52ac31f27e16e82523e54e21c035b324e54e69ec140c11b6b7262c8c21345b5bf50a0eb8618e2ee1e0e59a073a0d2704a87a1495bfb1362199c143991d023a811e1f53d92ced3113e9ed5418f7c9e0877de181f41063592862e1dfccfe9c86ee488500aecd82d39510533553b7a5acc728c4c8b3a05bc38f18d13fc3944ed1b36bb8fb50997d2db472079d1572a01372dabc3e7fa6cdffcc7b51dbc07848c3bab03d1f20017e8cb04ba8f3a45e222e49cf5f908976acc38907ab32291e8e323d7b203640573cef3ea39d15a88ca628a33ee118060e9a3127c60dad0973e0f54dbe78df18a3725606c79455ac0cf0dce7981a36b0af49f436f328b38c104d414ca3f552d1857c832495dff3a2a88bf0151689e74490e902fe6d244787fb42067380a664dd2e5f60ab9682f55c2ca07f3e941f8002936503fafb6596edf44e8c4d1f7cf36d602b301deafbf3143e4f7907c6059430169526585bcc645b5ae1393a533c23f983ebd2f4fd0cd6e5c628792bb19e9497cfa50a7a254abc8d96bf4eeddfe15fbcce8fdc1d1b11614feb7217f67c70be04b955a877810affe6210324eeafa22d36768afa78bfaa39b7934860ca90c715c80cce8f9aa68955ed12c85f195b1636a8f40d2859c8d139e484d05f9e022f30395231c2e22e4b75ca3eed6c1efd36d89b5d1f7d0a6d8cf983080f787a5518722f7a2e45813918e8cde98771ff5b36be5ac2eef84709dd06a5251483fc874c39880b2b265e5def4ee807edf0945e61a173a62784c0b7ae903c69889ad6720026a45fd602936b1097300d72400ad38b7139842b8c9abcca37a13edabb4d77a655e9ee3755ef01ceba604e47f86085be8a45616804eebf205011d88d66bc7dd7eb40ad8ab174ed0e7355f10d94e9a52181f1723d4f49d8eb1b2ba771c00f44edb6967677dcda5ca931936d0b89cc7f5d50dcd21f8c2b657e717365b9c148fc27175c8b80200be301d8be9c1c32877feb686943f10c88b9becbd3ac4169fe3a7990081db091a54998e0225bca136889112b3f04bb404a969efc15207effd9354e9892eadbfe7b336c1d2cb8212513a081dccab63e36cc7417986a23d4fc1752f341f8ec0f28148f63c0efb631fcffdad70ab8520ff560a175b5e624643e0a036b65ba13f2712ad91c1ea19e50f7f8ac709a7e2a2450cb25fcd3017583d298f8d1bd5e1131b62d2fd77e1bdb8abe9e7a5176d1ff1781c4832b8717af68ccba9daa45ed375001be315a5c5b6dddc2e5801df32d2886cf783f350ee9b1cc3cfde6a9c87465620634b7079f05ec1db3940b517c52c137c4093a66211b2882a30471df3b850086d11a4e81c7de13b238c6fb3c10c1f512ec0adc910fb4a045ec03ef52eeb30434caaf8f8b7550e878b06b9e7c644351fefa0510c8bca037484f46e9700d191fb46664421968ea6387fec8d2df4963252a33f50ce03231ce363ca8cbe049d4da470a624ca8e5ddb89a0df380030ceffd7151ccf0a13b9ad3bfcc1d449ea284ddde6702765a777f216205586012167a25c8e3ee2a99eb739dd91928f16f7dcf33666b52fc7304cc4002c5370e681bdd39dddab4b6d91b38504b356560153ddead041c97f329a7e01274b923741060b2d0755ceb254290ca573a77015dc676df4bd621c579ea067e6da1b9847e5d82d82b2058527b04efec6fbe453c8eddc181baf89909b9889f8c10612c16230d54f2fd3b241fd57fbdc73cbe7aee65c8dd7bdffaab40baf61f9546b45e68b7b9e6e73e86757be7b44d66739612005f9693057601e47d0777f64615e89a5e978eec63109b570147dfe63b924ddcee8bc1495cbb32ad871e7033f1fd7b43b01b7bf355b21f694383fd7a9829567a4c750aba432b3b6858b34b270d4ef0ee69e05dce6f878682451152ea37b421213e48819a7d4cfd819fc20b83b3ffdd43685be2b4aa299f1a0006272db3ff0527fe541654548dbe9e3f747f4e232afa1ee2c20a40bf8e6430e1a05ebb0c2537a759dd4b1215306366cecd41ba3d02e75ede43a06eae3cbb3d47a69a302711d82f3233e39092478bbe1735ecae096bf48bb788034a3b8e11bb088a047b4c9d63b1fe269f0d9ec3a24798c226fe2f1632749e8f17996c071408ec6900daa637f0ab47c675ad948d36c2056480457f3475be16d1404c0dbae72131d85491c71b10e52a6acb75d1b4209ac3ce38e66bb6336976b6b2f22cba9c6b0676917c211b50c7d81591b336ab5d356e4266f0881c57246b6085969da2caf1105ebe9d8ef596ea1825604ba7919ccc531b218311d8687773bd4dd2762989fee75e9e59c841e72ac44aedf68e94dc83f6349fee643bbaaf62f031d094c436879a050e53f2e5452147df6ce55858a9318e1c69d882fa69a4e106b427155ebff9277849be0d20c7c8267fc28df775c8c3841313bd933b6978eaffac3cdc18553304202394841e049874f995c25e076a78f8e1236e6037e2a44e2232d71125cdf699247544a1287b5d5b8ea74108442e333c791396d869a2c02fa35e299ea4120dc3b5576615579cbb9a7dfd08722d920d56668bdf8b526aab869c3b5db39f61565326e66b74dc843702e5c4b59d4b95e28214531832c544fe9e53401242093c778dd69c8eb6ddaa6bf8eeff118d79aafdaedf918b25ca47e497cf24e783d34a78aaee9900b8dafb15f7505bbfccc14545fdf650dae30e61c9e4bf004a72149da456e94aeeb9a62f670b1ac59ee74a9931450f67cc8ee60f9fcdb2f04d4c3af72d32ee5003ddf0512f56d19e2df05353a091e537ef6cda2ed1ee9bbb32165024a353fca5f4ad5cc4418ee4a492fa406f1e9f91f15a67ca2e67b6aa32a016527b10c1e44c09952a3bb17d66e57da1b76b9162a831a28e9d6538e970455458920ab7f91416ba65707652801d60507fcb7741812e3cc39282528c1f5904282a2d1ba36c314348d1e1b94a09e22939b83a6926d75a2eed4ac0f9f9426d0bdda08dfe0efe7f139af128454d1e4d2d176fba8d01f128d70e2f16badb146d0f1a1102586b872283c3c2ce4e91d7b6e2f74e53a93e93bb1f70e0ac3d37a734875a9760541a5521c760a2b34378e38499fc03ceb3ce338f2d0aa096688be372ab5a93bb8167a845504fd8174d5204c92c49bd2f272f7c7ca8edd3df669003b046b62826390a35c45e610a345fad8e2f3d60b346f198cd8acec9852f3c9818a40f06bb88cc8ca4b7705fc4615221ec3d4afa9d465ae2b8923f92e3f776e884dd87c47985ea46126b150af8d3c8991be144f6397572f783b0aa54bf36e91781b798a8d16cea359074efd579dfe2b42d4c757bc7e6d8ecaa86c78a10c6883598a068f1f641f2e1a29fefca7ed303ecc826cec58e4aed985b504598703cd93f2ab122545ecf28abc0a71247266229e2a50b075f55c7be4ff8c399af9c5d813eeb91aad945cb654ed8c22b64ee989761115718b8eae749d699c5d90bf81aee2161b276ff2b0c122dcafb85673c69db486f45f22f9f97d7e187e905490824256769cf0adc52cd29e8eb5c66f1d8c065e5b3618995c82e8f80c2c674a7f8062960b3c9ccdc4103932a83eab8996d324100e843921c3e8f8d987c19453215e190eb41cc2df043c039134f6d72460d2ea42fac9f868ddf5013439cb50114529f3558ecc26194e9a8a48bff0c71cfaac961d6afa2cd320bfe9b293d49e1dfc4ce162cdf201f508478f3fbb9bae5729e197b9838a321a62960f0322cef4b3926fdd8871af72090ac957939946b9034241953f29f1e8d2a20dc85be6d91900e56a97feaf05a65c1bcb666411e235981dc22470ed40799b0dedebc64b61bf48ed6c3442b891c62c553962f4dd7cd0f584bf9adead76586fbd559d0b2f27d841f4cbfaf9961cda98ad4b7a812b4eb5cc7595f7f603e42ad9f794f88a1bf7e59d502314e56c716bba9e73b058e9c0a2dc8d14026a1b2e75abbc36f0196f05d2d676701b0205f60f462f6c42b88ee10215be46a3f507170c95cb1c41b940d47771b8c2c8909a1c6e53fb16b1328fa57cd56a6d44674cea40a81c36e62eace9371f3a7121bb257617be78ac31a428396d18390777517ad29007980717e07a4deb5369358470423dab9693aef8ac4449b137bfcb7519808ffba4aef8f865930e5588e4f58ee98f75207653ac5b89467d7a639ac5db4576c4edc561e39be0fca3ab0117b217b549a9c3aec4b04766c0fb92a85441c44a87c89d1229f849557fbca2b02de09bf1b2abdea01ef97c4cbd0d5a90acbaba9a16dd805aa063ffc35032ced76e2cd7ee595c6b8d2edecfdde31e543992e71febf89d862016c065a6e54c106e4164153d71efd8d95d055e04d318b2cf9bdb63706acaaba69ef76bd0014ae8c3cab8ebf8ede4d081e697f3444bff2c8a6ac7490b0ca51f526306714a99f97e169f8099f3141158fba49f5fca84138f62894a9336267611b93d3347f710438e9f5f78e4c638535caec48b661650ea4c2d0ef42a91f1dfc97ed022111da83c00a11c57225c63e7d75e801d9c9d0f4b423709f95c7551a224c58ebbc8f50150c2d9025044a43d55dca895340d5d3b3fa72fc67662ba39f4f4d4d3d6603b3e4a1161afe9bbdec04f2f9a1e15f28187fc0bb2070827818826b6999afd32a60ce87db7ed93d48f05b54710d93103ca78287237bc6e7e429ad05ca907ab123e9e6e4421f64c8bbbbbf45e2041375a3ae5751f79fd97dd09a9ce550c4d94ddacff3734e5df1b57e25e6234a7f51ee79bc91ba2704fd5d6b42e3e887f7905512def0c54d4af76c7e26dc2f71480020ebaa32e53da0eaabaca6a6313e7863a01a898a54272a9020eb7480249ca41605079e343313743cfe1b1120a52c429a0d7e86a564c1eefa405f19071d6af7501454eb04d1d512f4562fef1cba3b8a8370432ed8b8b481167c54ea79cb18e9ac74d17e01102406f5ab3f067f974466f08c8e87ec13b38dec4d08b42fffa8f2ec415b550291482688ff5541bc826747b523b4e4608b4b7c252132b55b7b9d0e1ae1a2f0cd3ee1fcd80853a55e9e51e62b0f13c4e8a9f68790ff2c03801d4e89fe642d3da1187be6776c334682f80b12b06f4443ea6194159dd2765af6530991aa020a3fadcceceed88472ee5ae92d8b25e874d2ffcfc503e533a7da68e47d33ef9532fe96227a53d2bacd87abc18cb66eeaf8fd78cdcc41a0cd3f2f550227ebe535c897f5350a2d236eea3a4fc9c27bf6136e14d752dbca2d4bf8b092b5b4bc67d99d0dd780fa03eb6da0a9b58d2715289afb2751aafc158ed9671dc690aa29940bc3693bb658f62d01eb9d5c8013f0f7c6836953720226e9372e9decb7aeea50b00010976c8da8517fc2055be588fd5785d824fa6f1fa80858fef2d5364379c1d879a35498c16fa578601adc119cfcc1fd44b599311afbda8e2cd8a3a7e3edd2a7e2ba4dd68804d76eb01f9cfa3459b342fea13781418cf054a2bd4f29c19cb346ffb954869a937c1def3e6d1204332e0d4db20ea78cb20097596225a6962856e95c8baeb5a3318d52ba9db578c401368982310e7c91136696c1f2436a4f78f4e276a191d97b8ee55613f9ed77251556320acb574c3aa99e59afae1d0a7a1987cab99aad594643c4e615ba2254f5df19c02a5fc38965b2cbacbb65fc98c11e4daf1620a0ea4a3e4fba65b076696797922248f1594ed93334b230747a2fe7764b5d181a80b88e9e0d9e945ca09a8f30d58eb858dbae3432c102e94c07c2f50dc8b1ac24566178c86b1b03fb680f6d2f7b9b7ead39ddc878825ec2066847aac7cdff133e9dbf089c3ab1fd4d2c431e0c236d7a821c1b849428ed85d6322f4a87ac84a809c784727c2c9c187c5f63182cebf2e3de5c7c58a58a0e68d85328620676ec6fa3b8a31a485a2f0c3604fe7b8efb3220918a79c8cb22bb810e8a37273183e6a8ed498b4b77c1bc93bd3700e153faa643e5675283438e74e503ea1d741ceec9c675c6302557c00d1155a404343b97a8d3016b403baf0fc631165b0f9d6e174a8d8a71ea93bd9b6bf6150ef27e0601ee982d3f791fb50d55c30119b993411f3b3ee1fd1958a2fb37392acae9b67b6f1695094301a4ce9181e8ee3398151a6f660b3413a768c06c154feb4186e95e9a466d5a094e8119c996b8e80da0de8c316f3e98d0493ac2de9f7777726963543ed5db54d8b8150b878b7058de301a90d5c6c8e645a5b58225b554e46d1baa129d07fb802ac19222c35277da335e8c448eb12d76f631e69b794d1354d93863adfbdd7a302e1fa01915bc6b846a852d37d35af8905cf8abd3f7e3a6d86ef1820b23f0133447a65e9e3be4dd7d383432b9def92f88631bfaf51d6fd93e7cd65bcce059c9f48af7f4549935969f245fb9f130067cfdec326c5352e9319163f969f885b7cb55440410bab4f88ba709e89ab90b7cea044c763c6a5c69f360195af3db66320fcc72600183b674ed7198741027f7308a0accb6e436e7cab6a9a7a5d7525d9de6e848656543ee9fdb91d49432ec3d384bfc272af44805e76072ac44299e46a1352dab237b734d60bb96943984506f57d7140e05e4ffa95c7724d8b9699583f90b5bb626986de95b3e45047b069bde8a54c8a7e5f4422be915f1725083a678c0bba33906629c7d59850d24af8e37229a43c00a0e5f9ec7500681d31adaa010ccbc0035c9b7dee730fe1147d058bf97bcec87c36e5fef1dd7bc9be9400eb9361aefbd61187519a94bdf2496331052da4d0c875381ebafb3473b67b59e498c5d4d0ebca840790a6ab5623c8b8fc8594f92b12caff215826e8e1c61cdb2322bf938683aa9059cb372bc22007652a1e99e8b81b8bf1d6ed21de04a37dbdcde5d047e280736447a1f31223a3cfc480d6432ddcfe4e055e447ee7222351cec5d637a37cbcdd56444d5b8db09399294f8fab9c03fd06301fd3ef7c60210e1fdb868ddb688db429ef80b3e62c63006f246e9a70adfe90c845cbdae7e907c11ac7ed4b150cc19eb07b3909c932e5ef74f64fab23eed4e93f9f52171c7291ca58b364d0139082f737cfd5ed2220e6a58b5e11157b4c0fd26c0665500524f002bfb5512d86f78ae2f4c491d80986d4ff17758ea54cb7b7de5d24865feda0338454190d8c9bda6ffacbffc0a6de39128dec20d302c30841e65f485447343649927fb9bdb68c0c12e276abe7004792db90e6d1071a630eec32ea9f5e14c39fa3f1bdbc740cf061927134ce84ed20565f4c51fcb194e204e3a3d02d0e5da6f8b0600b7f8361a3e50f197c54cd90aae892f1acd44daf3cca17c8337bf2d4f686799c7e6ea79eb6d1b6f0d59b74a01deaa2c7a76895d270344ec63129a8e44ca759cf5f2d0ffe74496b6853dd3bdb2aa61aa2343f531c3221c6d3828117a364c87c62593a9a13675889f40c161043ac277b0aae65b1e60c37b8bcde4d8e5042cabc183fce67f0721294d357ceae85dec4b63765746e5de685c4de3641a3973378b16518041be0a57337f8f524fe2001b16c242d5c0a4e147ef14af203514aa641067667acff2f49e5d3d2c47ee03ac0a6d569f3f73964f1ab10658661b7eb6fad1c2a98fbc4dfe958600201e3be01273af856fbcfdf0d30374b97da4d361074a11ee9b3c3a10679b28d530cffa2682c732e76baed3105d861193ae84e84df1f4430acbb38362ed8ce61258c88a03728759bc9ffb0edca086b618eed5d1162dc86e2d5f0c0ffa5893432d4500dea2fd1ef369e9a3f5899360fba53847a0545523d31b91c0454af0fed7d1dcd819d46157879c7da72b94f10b3a72f7f175b36bf1b085307c5e2b01349500b1d1fc6980576f93633dcb9cb950d4878cb495b552311fe11b3b32fc5ea7ea0a910a79de6034dee8f759dd81ae0b5c55cb5c13d5540e3d36cab72645dbeadd6ef9952cbdab113b0f6985ecabd782cfcc7ea26eea9a883dfac52988cbd2c967539c9ba18430d26ea63b02ace200ca5b99e1f1a25cb7ad0f642a54ecd59f75a803e04a8001605807bec643ed97383757d0240676e61e61a57b2be4781b24c2c426619d1ca2d1565213b5b45da651e765a6ed530faca7b41a838e1f277946727e9a6de909e4bfb0d15c87cdc6f66452fa1dd34322f30ed13f3f2be35e116e94d9c687449ec8866aabbe117bca5b4af0a358e43c350f746e471372f182eb08ef60f9e5b58f30292af795fad4553923eddd301f7fcffadcdc9bd9e2904882077ddbd6f238151ace470be33e24443ad3ed4f06fbcd97a5af9c1ce2937af4f05ffa843acc8f3500406e2bbdac39ec6b80e4b232dfeaad3639874684ad18d7988a801beac7e52d056ccb3a646814929416f5cb71a7dfc86129870842ef14a2290433545ee8411a25e4d053b769d8f67ec3692fa32619e47415e1468e293771f0cffb887f6ac949695f846711fc1481427bb7bdb09e5185f3f40b4fe8c293a032f057b19e3dd2e8f7376046cf3f5bb74475920c11494be56ba219be23320aca22f033f82282c5eae6e9c3b40ca72407ceac122e51d45a85b15faf9b62891384af5bd8805c10d25dec99f46c787a0912915fe8874ddfc1fbcf508eab7de7e0bb0444e62cadf26e92618bad30795647fb7091a0ac457ed900d8fdab375502cac419c06375c0e7adc091ab404c40a8976f2889f968c3bb0c0720d1dad4caa30b770f66d8a8dbe15d15f806472dd0365661305347776111a3e7b09e02e4f228d6f772d679206886fd50e44fe1ee6f96f7b26a3ee88adaf25a6e5e16e9d16204ac04b32f683eb9b27d62f85b88fd7eb4cf49a25dc9a56d43d4cd7a538a575f3b10dc3696fa46b8f3d3a714a56d341e502843e706fbe990dbca462b50013d14e7841d8fb61b67900c5dbe93cb6b16ae7ea7452b5555592007218c236d0061edb5d93a2a3bb679ad730f0d2a0f8704b424062947aa2c35b209baadf4efd9069f68ca54cf56315e60d27d7258d6fd93527f166ec02716f07e9424942b7d18ad6955ed9ce33cfdf14389a9c0242ce965239e1a413a33bce35652155732a4a7eeabe6f19627a72fff0d2aa5f0b53f6d22ebe56a007bf9c23c745eb1f846548c30e3182fd32a5330b2cffc063885e07979528c6c8154eabcce93caa84fe1622d1ed2fc81fc2d827568c97a2b6a10051b4b891ed88d8a372fc2a31b212a91042c36a2397c538c7950eaddd1474f5d4959597bfb4f530857a64e83c86ff3b458cce97b88e2f00e01ca6161654cdb286baa2508d646bf5287daf2c2bea46668dded103f377b69bde68ea0784c976e50cbf1db813736012b45e4dc10dfe417b2f793b4bba72cadd87bec867dd1768adef0106d91f924adc1d58074017e94de456ffe7109ce6b3bae15dd9de5f37ba32704083b80cd7d38b0bc663930e4516a29f151f861b6fa06db8c2436f8e39cfb8e56a6f8d1b635cb2b47aa6749cfbf8c278dd06231fcf6a266bd7c9e398a27aeded7ca9e0b8b429f8905321469ee1f024637a271e5523893d80ad242d1008457999e34997e7961683a493bb36066bdc260472de362fdfed90ad88fc65816c7024f64e38cf17e2d7ed7a9ee3ae0502727a5fafe6fee57f21c060ffd6b72cd1447ca09085a0aef85c2b982045434383b69e6ef432bc54e6ffba49ea85a3dddd2bedd0d853b6ff3447ed771794a47a0ff4bacaad04996e3267015f5e5963e2fab42b517ff25af0546ae53db52b0d67b4ef46b14ba918ead0c58908a59bc9d635e92d1727dc82376bc7a3e6673e45bb24f3c92f97df4ab549578c85595cda44b6655408b9ad029e8d9d2837e7feff9a2c30be689bb159e16459fa353c5aa4a6e689d357444543ed4c466ead1d168df9c1d7f50d77bc08e458eb4c9066c0130867854e7640d83ca05df7952d37f55ef646ee7475d0a8dcbc6ffdb76f32ec7de022b416e350c01a91b5c47193b6e3330b31eedf1765d397093c3fbc623b3914c85778a7be54c8dba0a28f3a28475a274b5795f90e30e76df3a6d4562a2895d98656be5e415d1d531981d41926d965ded8c077bf347e4290e5d189a0b042c96bc2dacd6648d209b98e28c8c22793e76d8cbb7b07babe76d6330d7e312db0871761bcab16fb66985f2d711ba6d709c034efbdb37acfa0fc435fe70be1642a0edf3a36240a91e324dccbbba1d25dc04b83e19f2f46e86794abca57009d255b00cf2ea123b5af8961978a67e8f698d660e15163f7ff1812eeda015833debb67110d54b3afe3f991d3632030428fc16cf010e56394f72857fd83ed4259fdc0ae4d7ecd68c2434fc13826b11b75ff64dff804a32c35f6c0decadfe7da5a8157a2aa787cc75f1743f813b0165308a95cf0f10cf7635cc4ef99a3d303c6c456733f8eead244ab5ca24a607bc66ebe76a79254a23e33935550e63c63754a0b8a5e60ce5610a4b9561910d5b0ad04cc86ef0353507ae75f6247463fee29912492c48c1ff055a7861f2102da38c32f9750a1adc99c0ff03778a362c6640f67c0c9893a3a61d293362c05095d3b3707be729a33cd1d673c01e11c676a861e9106ca00424aaf33db04705a2b23865413b6ecb7afabaaf9b61ba37766e080802563c6d5b5154d2903aa59f7d1db250b1c3dd50513bcd647b6358b2ff8820586858822b5ea52461d145a23bfa7ab668a159e50a20bc70530cc2e881feee7358532740eb56e1886ce250cbb858edc2b542e29514a2f51a60ba8329a97274942c93a3e2018ffa24d45b982c43791418919e194e9ad650d89fe613aaed4021dfb4079e2a46dd167c9c06992071649ee62c0f1987147f6b3820656def62af4911792746ab7b12990c2961627cbac1674d32c62d3bd4a56cced1ff140375ec36388a7ce8372d893d31741fb903c9602ccb2745ffe07b1269b72df1e3f6c6875fbd5622fdda069e4659b2a7094f75b2c70545e50535a5d6d7d80a6ba22781f52f91414c86307934b9692e932a8dbe4e05095351514b01c416c93b1372489a0c63b62bc0be3d112da9595533efcaae6e015f3a099fa3b5f2fe93fa8108813d89eaaf0557182079f5955bd7088aaae86f19a4eae1c039963d89cddbc1b928af8d6793ec7f8a2d87f8d6257d49bfb48e556c78597f53cc21c382a4fed452e8f81c33c24cb930601a28182cd061e7ad4f44ebf070e0c4d3d26751e7732ec44c359df68a021b3927c478e6dbfc6ec198a608fae9e7d3aae36c50c82c62399c148a5dd43577ce22f768634c2e66c41551c88e9fdd287c69706b6a0c9341d151c2bf0c203d47914c3312657e203a6828e84b69461f9ed329339ce388c6a5c75e3dec3ea7b41434d34a258197e5f696fb2c564e0d9ff42320a63caff342715f2a8cd5eb8921c71ec02215ba65e3383c620af498a796288b2253a7056200f9d1c3f088efa244a0c887276c9946cc597ce2a45ac4cdc179808feebae16cfe93cb6cf2218b80993b40d89fbead1368612e6862f7f63d04b7498478aa80655f4eedf31de4e2ec8bc4a7b71aae071fde885bc74595734c9fab8263ded2e69905fc4cdf86997d06a66db3f212a8ba3f9219c30e4860250459da9aabd6875ba9e4b2ef66539fc7e838792edb217361eee6c058aa993a1ad7361d541df186e9e878c9553fdd2892e441f275565bef9971768ac155f5aa05dfad324a3215e5e0d716d2ee33310991488e8af93bada7821a9592d8de6ea6bcad6abb65e3e8d753a404b09d91f7c1dcb95ff1c1035cf342912e2b2cb8679bb8ad12ae66bfd9b199bf8fcf3d610fae6f1c135ce7c4f66f8231509d805b936e9812a1d06151c2c4cc8290be187266ddaa0b8ce816845c8def76f2e94a7c358e9e5941593dd765a44de30ddf7134d89ed2e266f713d2acbeba79d3ec350a04db305ac97235483c6f3e37f3b1fc631dc48f55339a31ba3da4197b740c9f0357e958e6340359ab4859060a0a44618216636c9839b8db00f12bc4818c321c18900845fbc4bc0ebef3b1d100aa9bbc21fb365b198c9a0eb2823678068220f11ae491c881a4348aea24030ecfd0a120ff37cb2ec86726dcffaac977b0bd539a45f03ad89e3474598e13b5ef3a94e50fed05491fef242bea702d380622e895444ac58b0e94623cdb908ad7ec3120c5048e0318499b3acff25e2ff2eed46405533652232a30a9fcc349984e40edb2fbe9de5b812c95165642c56fe1fd069cdade2459288ccf9f5199b7e4a56b264950a191432c2de9cb2e3c5f3a4e82b6e56e2ec15720bbec38b93906283bae5bec247f37d7991300da79d416304bd3ae271243990d69e240120d53657b459224d5f2cd3ba4bd8b478efa15c33e8fcaa4780c4f408abc4e74783de92e7e7c6196d35347ae666fa66ac2b69c36627644635ac13841ed7af15e00bad35d89c7abb8af159dddc5b9561af95d1b9e089ba1075d4a1ae141f0e2d8d7ee3e546b6ac30974f8f4c119f9f4651befd82e341b474e3d07c3b12070db1a304029f2659a4013d42466378354bda358fa2b25b4251fefcf9136f400ecbaae63f7e6fb68437c0e211c7d08e15a50e9ea4a03130fdd160a4c3c29cb639c00f0b9a79fd0c20a18997edfbcc86b743214c2ba627ef8f69ea3c6c0863d4370551ceaaacf70c14976794950167f02694a625770dccf6bc02a31f110ed086f3902f4bf77c5d4fdcf3e73e25775207272659a2bcd1c91c657b5356d453144c1f775ea83bf25934bbada2b4f3934da4131b3c4b1e160fb7bff3cee4684d7d15438c1e6087166d78690f91e638ba62cce614873a851f8d53b653f0e69569aa227391b9481fa54a8ba2910a362be8dd5bc5e9c9a2332caa4a69a448c1b4ce9c7d2645e427f658f7e598bd4fd51bca38a13550bfac890d126e945547edf00675642c58856bc320b2b8215c188622714847b8d561401029a24d9417d063a876b18973f3b4b942d8f0d8bd396e52ff602d77b5521b81ecac58e6d7e4e4f40057e109cc63d414bc9369b4db5d742bfb100a0b4e27318bff38aecab735d98f6d2dfcb7934f81f87fcf034ecca4ab0726598fd64013875e4eb311a65e2c552d4bb02859127fa459cf9024e0c5a7a836265c5dac57ec2538d0a99575befa04dff1c0c16aa1176c98f9482e2bec837ccce6b798903074447cac4b2a6abde92f20f7a59bbd8a3c248f1a1dc3d91e714d99a32192de09d56499423037a94d63e9270caf7a5cfe4d74aee1b50118019e8cb049afcf448f074a2e58024b3f319cec0a931285e7c8ad42f416571dac6354e3e0ba2ef26687c7f62d77a45f1151c6fc22d0de4f51fa37cb1dd93a799c5c425f632f8b3f9fdf43a69c582a62fb1a8d2077542550b4b35b3f37c47aed8766610aa9e9f7e3f0a54cefeba6c1db4241cadba7d80589b674104256b32150130c6f6d5aa4576e010c846fca9e9934d5851385a00b803a4ba7a1eaf3825c002a67c839f7f293925830614842ee587e2d47bb167eb651997072152f73020674a70a6a6ca4a1958d117958a4ae155894ff09dd822f86b989c3f9f17afb8a7140884c211be13ecd70d1c4b626e7a2dc09526ac73566a1b2ca5e6f687b4f55aa9c561a1bc975b0baf2307a337e146bc6559fab7cb344dc6b94c188bdf826296584defca6351fb134d06db730a60b20946b0f6ad2e44bfa3d58c569103332fbe29e037c603f5f15110ae1b51bdfbe7594440ac4b6b5b1f144a3f8c49f70b92a677bc8c1b61e114dfce42671f9b31cb56d5adc3f359ae2c5a9970ed2167a3697273f4bfbe831ed4785016f962ce93cb18825a7fef50ea6bae72829f16208ed22aa09473cc34c284b5d16ea16ce801559a6a73467ead62632a3e1e53f094a09244551ab72a8464e31d8321fcd05b71def6be4f13cd534d806995f739805bbf7b423e3a6daa46a4c0d30afdef840146d934431fdf90250fb7e5c85e029bad3f28a6dcf633bc91bb09dbfe03c191943a0340d3e864888d98300658a3c25fe8d7b26a0007c9a840249fce6e773f9237d9dc27dcd8d59af8d1968e7c46fe4a10204c57548c2482724cabc658b1dd11eb8346acdfdf58a25818d29da0fd2eb14aa2cf91d219c4af0a5b6b7a32cfb6751b0d86a0f2a06f32a1c949b3e1847b7f607bbafb4a0ae00d30049c33642cd04e11e036b33fb09ad34ce1f9419141868c408b250ee1268514ce6dfcfdcbac1fd47eb9e6b78321d73ed6a4ef30b9b47d567d35a51b8d9dcc601324999938d720caf6ef60a59066cf1c4260ff4892bdd8c6ccb130199a47ac47f41dd11aefbf024d714cea19cb7dd9ad9332c5f70bac687789ec7251284019cfa6d146cf29c3b8c9cc72ef5cae701c8953ea42004723abff30f726b0aaca768725592ff3920f78f146dae7834722775210f2aca91ccc8504e30862a568898b44b1a6b1fecb006c9a03566f96b76d02e0d94c38bd94d7d51feb0eedfafe0377a24cc947d7e949ab4f8d2dd84bb59448c9c5a2fb2b6f517d382fcd0f58db7d61983d4154fdf4efb7c94dc5b74209fe8bc36c5d3586a042d88ebe8e6f9ac31ce0178f645de2691414a816d72f611144b77f6cd48885cca3c3944c66e39c4e5f47dd93d3a0f0b98fb58b9b3af6623f93d0f7e58904ccce1fa0a3acfe5f7f66e3652259fdf070c85b6221f43d5d7898580a3bfd7603a236a6fac55bfb5c05cd7c61da3bb40e686ece3fc21e8ede3f3640cbd05e683bedc5cdc415f5e8552a959bb07a53d2f0b8f9a31e1077afea51c88347bcb36a8ad3f20647a3bdbd489ea5026a1a00eeab55aad94d5a4606ff0c0d8985032e47557c689e36741aea53763bce64de651eec0c3358fea6316f444e5dd0e75d0510892b868f99ed14f9d5ff65cae23deacf328e3f6e81f4c467384920339657f0bc9181dd2662e6dbc0b04e8619bfa8b9a84a93ea1aeca4f1c622bf547260c8add7d703b674ecb3412392d1d82a5b7d427da3b94528e90d8b055a6d0b15f4f57d3897318a8fc7bc3b5e64f1e400c409b754887ad415c4d5c91698a7ea967f1aa4d2205187a6748163ec47830bc8c988917d61dd0fd3f61dcad0e1b9ace61c52ec90d9d112e4059679f5b89e01bd03a909b274f3e449c47a0be5c2db9d349d22234288973f20c7badd4ec23b4c63fa30a04cd5e833b9a95ef268e034201190ea9895c4c35b635a1d170c60d7c90bf2c0978c767a51dfb0ef47ee23b12adb9f85a227999a6338f2ce509f733e28ab0f8878ea91ed86f4ec33b52b0129c47e9d5d199eaaef8acf93a7d689eb896b00d2ff8b7cd3388f75ac214e3598b08c83d5f0dbd47521b7f08a219c9c00496b0b1966626bfeeb1cbe29670445b6b6346b888f491a770804be7933b7c8aad053d335bb4e76fb865373c4ac3113f7fa0260a0b3c77b4c684046aed2e27fafa9237dbc7ee787835d4bbe0dac10bf88484f33fede3f2225616ee7a792fba4eb202eb21243875ad8d8925631b54147545108acf75d9ebe0f184481f6c9840cbb0f9c56f474cf2c3de5a85c852349928cfb3025e1a45606fa4cad77ddbf238d9f0ce98f68612286219d82044bd11007e6f15c7cbc40db3f73dd488564a922a08956641be199250b30d00810ead161b5f84c3550677c26df8343e65dc0a7ef9164f7b1f47d534662b3d8961931996d0e8fbafa8ee2ec35322cf80f213d8d9d42c8cc484caf433128034e7fae643d482de39dfb548d10891d5c417e9c14e96276f25ff3cdafc95cf4ea86853927b16baf0c421f1b6d0ea6e8755ba15edabd17b669b8543791e97c6d3d8b63bd83a9301d215e5f35dd6b961aae1e1a996751bbbfeb9e5c3ed5ba0e6e0508445fa56359e2c8d849a13f406766da3840d370b8f0868918d5c7cc71d038071648c105a58ad64aef7e248907a8a781d49f6c2f1b7cc5123cda6d371844bd8326062d1c20ca5550a234bbc2b5f0ee3e0e73efc833ca1b33e65a56dd5e34ec6f36058ed7de06e9e390b456da16579ec9e931335e3267c1e23a98591daf281c927c413c6d738e7e6c38ddeb5cd7fb953490ff4eec0585c50c55ad78a9c8f27d3723ad9646779632a7e69fd1f3cb7d703681375c69047bdf8cff05a4ebc423a17342ab6d174fb7a7e188816fbf2e81cf8c09e808c70f42cfe6d4ded1cc4e93081c3c953d67426beff6e91c3ce99232b8ccc055fac4a0fa4d59adcc64d83addcef1ce383917b49402d1de9e0b0740bbff310974ffbc93638e2ed538e2f570e05aabb25424afb0f5c9705748ae2980cfc73f8c6f13d32e644d6c1fdcf832463f24d0521dfe7a16b7b6be48f0deb02c210b44772730339c8872458b48d757fae287984abd7bc352e6eaa5e980813e6fed3910cbacf046fe7c40efdc61d23f0a73ac4398cf52ab0ef2f13bcc7531633d6ee6786ac6030d579315bc3cdc5b306de276951ae6537b2d2f09f7f16120de8e65816eb3706efcb642bc9da9c748a8a0e28e6ecf0455672d55f8341869448aaf9926c156579e1d8ba44b71ce0168619b6973b07623ec1553007a9420c7d652575179e1d25f4c436df697b693bd687e5d349fdfb0b0f974073134e3a64922c963dc90306e1e2f8d8c1c33959903111fd940bd356d0a03a576cb40a28cd0a1352809f5b0cd5f7d9e9f1bfd50a02fc4d45b52ed157f085d05ce17466380d26e3e4aafaa2a4da14032559d4490c77059b1767018157f7026ab6e401f804dd9ff7c0a2750140e9677f762707715774a42ea9f665508b08112cd08d814ef0e02379da9cd49d34aa408dfa50763ceb515014a6e435dcb7c6a03eedb52a535367fc0df5382fe24dc67844542f7045bae7befe95bd90fb147d074d04685ddbbb515c1199e2d24c3062db8a2557beb6d22fe54ee724008d0b04cb67c692f4102849fd48b28351c95977810a996f125a89870cd3e2453419d2cebf5e3da70437c1b895c2a6d0860000d80cbfe335bc5d22278ff74cd31ca86c0ac1aea5a4b4f1191551e311898fd290caffbfa5cdfec97b414a37b20be8a80ff066fe0f8286086591a321c8bd9233ba9235a102348721d2512d897b41f18b5ec5f1bbb5d552a52dc0041605345bffa192fe9cfcd820e232095ccd6854299cc3e95708bc880d39d80c5137c6f58264e42da66ad4e211e867d96b3190d54bb7b9a790209d33f3b74f73b713d3613d6722a5e8fef3cdbf14cb0610b3ae848b64cbf5092334388d36124c74c53957d3e03d7aa2f76a509af9b40143400bf5761d44d51c957063909072ce44487251d9f182be10740052bc0348e2356e62e7a57c5c229c300f1913c5fde9e71384482f31b75d97ddaf861d5666bd798e10cf22b937e7968a006b549bee81883f1fabbef17079d1f2586f2748a7acaa8ab39c1ae97355799f8da2ca1c6f9063034ffdf0c9ec3ecf51269c91b719a6c8e469a2e41ecf0c9278f1663f0d94733f4d37d87a590d8b7a65377f3ed671881d4b483453a69dc4da2b6462b5ac6b8fd1e7ab64f2264f9a6670e0222f7afd0a1fe1f0e555b7d7a54eef5e8363fb23fd4312da55836a94a94c018182dfb8de0b74fe7507054cf7ac2b2d8109d9688e4bf8ef518c92bf2d80f1e53ae8ed6530f83e0507eee58db5c7092721e5dd6674ed676f99f494065e5d93315ffe26e059e1806d732eac3fe3bab361fbbd56bd598c958aaa287118e8a6a2fd4e46d337bbf5e084c11c3cca39eb22949b949c4b7b1576fdde0b319403c6bba6c8f932d249591284ef29d4b7fe63b81418362e5587cd8afe944023c9c6d3ccdbab660a1c92ec0f7c582de8d120cee58727cac95f37bb40825aa2d618b386f516958013ef6b54ffd682ab13ae3a3e91c761717158dd6eaef5ac5f223403a4a94232249dee29f75ad7a7886471bc83aa4dd6a77651d178a4116d7928d91f8498992e42dd90a7bbfaf452290fc8265681bafbd042348343b6ed83052e2400c9bdccfce48e2c9af8b7507d445090797ebbee7dbdbec2707b6f997dffa7d7cfca0d538bd587aa5558e2048b2e2a83c2faf658a027a5dee8b484920ff59c031307109cb99bfef23114fb9d86ee5d6954b96db04da48935afc54c22c53be09009a58dd74a703ef52c8a9b5f141919337d1f20bf6440b494812cf3859c480c7decb53d903954ea35fde4dcf2bed6d38a4ff0ffc9ec06f7ed986c3ad41487890c8ef95ca9a5fee66e2903e2a4d2bc5dcabd9a79588b386b0fc30cc5d6b8d8251fdba06b6d95fd603c00353cb249528ca54016c41284e43a251fc9e1fd17c008aadd1be9a21581c84c282b85eee10e800aec781518d90feb4ae4f7d122d44569820398e049efd79924b826d4ef8569dccbd9d013c619ff3d0c860c39c59256f16a866776efe40cc6ac2f2c52886f3a268fec777a5c4d1c2ddbf605dba63b83746f2313075098f975a9f8ce956297397b41a32643bd3c8f1ca91634f9b28a71e8e8d71a4d9735c80d136d553230a14ddf8dc84bd5ed8706528b6622c92982a9b05af507253a593d201a6be5310db6b1dbb812c6a9e7e03ed4e64c19e52f9baa7118e7d6c3355e6f91083ef8d7e70efc2a2e0d1c9018401b7184647e47fc1753e11e72718d6289809d832f179a3362e7a6d1de52823bda1d929999c4f8be7b4e219776732e6bd12383406bee2cfffe0b8f3d23c4e1a7162c9c800f1c4e2bd3417c4820a286fca7660e7806a6806e5a0353dea78f3365841e5468a9c3d6fb6eee807bafc9cbf3c697e086ceffee132386ba58fcc438bc79dedf8a5384863a78061290b6fe61b858e3604966c6ccc9c041910f80e5f46d3ef84bf16e586596b9112b536a9904073814c2d6296ce8430cfc22de876dbde714eb21f1a2b2dc3f624938c36f6d8b451962cdd896213f6c3d32dd02f31410dea3564eb4a3787a63c3bfa02ca6c31ed28666324b1727f5dd76ee64e8b168d96151feb7900f171ad7c666609b96dc23d54f1230bb12d29c1250ebcfb9c21b0e6423f79702cccdd83d43e786ba091e59cd223c361b9f27eb65d8d41a7f0e90e7bbf37a71af91050862ebad51b5968a935fda83d21ac53bc78bc1d4d353b55ff1c5593f252aaba64c0e778a5904cdc51ca8d47af5b54ce784f85347c4148e451ec43af39fb82fd473bc70817304844d3e61e72dabc5a0e18458fc1abd3477dc43983144105b1f93b9c20f9dbcca12e5ae38f53a69a195c5a2d631c7f246e598d315355310b821f14133c5ca632bfb8c5b6f6619c95b27eccfba3abde7117c8d455693a1678624fbd985dfbb2c252d62599096e6ac90702516abb4773e3e1cd36c9416a604069ceb37d05143b20df4343762a38638d7a83a2ef04bf2e7f6f4243695fbc632a72be884844ee03ed530017307ecffcc49162ca05f1aec22dc2f301b98419d8a608e761e43bfdce95d51152b1b96251c0e9f4a9c0da1a26cf6382679b2f215939a542791f2884e72e020ad5cf8eb59dac0f2773b489c6155fcc1de3dde1cbe870fff19c7988eb9a60453638ffe220c5942a462e2c9a5f8d29b804d59200e9687076edad42450bb8630da944d339dfcef1938837b045ee540f60b1113c54a62307d20a2009eaaf160ef3507952fd6963cbc1cdbedc45db6edac5e561c573464259deb380584f8a0def262389188ed7506824f84588cb15a8a28660014fa4ca5818a4f8eac74d8afc7bb5f6db48457d098fd935253ac4891142e5de21c8f79bd84b3f7e9058545ec14c740e0951d2932456578708f1e7237bd9fe346759b42e9aa996293824fc724468aa77627b9e3fda8470d570394916ff645bb16a9f4e325a7e754bbb5bf356eda0c5536951202a8b8354f22f9461ed76604cb538b5801f3926ca818695d9d82901afdb54ce48cc37dc6cf3ed2cd44a007ccb67d10e48dd3a150b781c6ce78de847906b8e6174a5054b3a6ca6e060c88160cbaca923d4c4c66f042f916c7bb122751c2e35c189ddbf5e93342994c19a1f842c172ae9af832933907a1155e6764d66ad0e9c8c303c54a9e68e9ada6b09c60ec85f301db03a12eefaf157a310f8e982c871cabe49f2568062b5f0eb70b5a4ce42088b6070bf170917a63673d3e4f578dcd3faf0136e7a4d240f78ebf5f6ad3c9a34802169152f9f408e14ad1ef876094ad6196da5551a6fd190507efe4d18919d724856e80a36e6d3c36a844601f7e409734b10a6ceb6a83b16edb18300dfe7c41a900777656c27d851454612010498810767fd726d6e23f3d49532118543751832f8aa7530f647e194c8776673ae8759a7761f16818afee761e6d1624647ca1939944df98f5ce169e5a844a45f0afe65b0387cbbf4f36f7d264d5dbca13029e11f6e8e33f109ea278dae3d1833b246f5e89f568eaab774b08b90c4f5be0beae0ab0169ef90cfed1dd6396712ba42db148a51212807881134944590750627ef00f8c0cfec1760d66a58b99781c5dc9f9f772a41fb5f3e23a51858a893869629045c8d16257cd6431a8a35262c2ca52f2790b89f632251bf375b896a1e8fb12d6af4422d426d2c7577fac6e8dfdf45390a6fbd0d47d45f248032eb10fc2691d73e382caad251c2c0a4901a8333c06beb4933b1756f82ac3a399d676822c597ff89868aa40442dd9c799bf204b3ad4771f0dd3ede08cc9da42a2b37d75ee3e43e5159125ff17b2438e97ea4d891210e7f1aa3c23ced7d3c5f90496bb3a896e1c35dd86dc2c38424a2735199013c377aeef518d017a89bb7f2a52b67e9f755b93638dab7a74389cd8363cad0aa60a6476b4788aff95bc7e13237ba63f2d97ddaad0cfe00f38f97f467da775a0550a5b72f49c2d9b2f334b08f58afea1a3fec78b2686dcd7d11fbcf93ed51dc76c60c0fd1f4c77e6c49b8bdf5a8c55c193a450a55050197d1f05a7c6f556610187f5f181c0a3fff8a2d09c73ebfac6cf4ab0ecb510ff84ab2983a7a7e7186448327899f0165297360770b3032a546a23916d63a459f2dc8780f232de8a297d9f28e41f592749325af89c47e15828cd9830d019af053bc643d310b5e903f64c5af2a026f0ee5f613fcf4aadcccd65ac25106be738e404c68d2148cb9bf9f9112d04965e7fbcede71b12128968bed4f602c76c80f37a1db8f8e250e4e5c08ae5c4592973959fdf224112c77a0145fd98a1d8358fe5407af8be7bb6211b2731f573ba13dc7d61cf048f75b87108bcf876d76bba39229f03980dc3e2d5acb7a1a47c6e8d0f623e63aab6ce22ba0d244c207e68fc96461f73c873018166659e1ae87e12400af4b95ac4f09c7ad2d80b8fcaddf89e3cdb8170b2c750501d42c866503be0111df2040efec262fc83a5ac7a7865178366eb0abe3f1e48f67283ebae1bd60cd99f7badd406be368326e69a0290dab0c2fa9512093c90db5874b4640764b914e2b6c0211bc6cf3631e119995529233a2e925038c189d4b0a4e09e776a457181bac384d0856c144827d93e7efe9bab029824e6d9be2cb12e5c192636f0a1e4e0738570b0499f170ea700627e921fb5c734ed26e8652a10a5241f9e8f25af2f8884f4b8356c3b6ffc5059f4dedfb212e51722521ff97e6f7e409b866b898b87b2704999eee5a7f791541395685e8cc6b4bf2feec4ca55277ab622af74cf46b5453984ac6bf75ef49048ad1b08d38ef95e186d8ae05ef1288cc3a10d8705a97ea3eba6bcf98ef5c72e6b40b439a47539b91f772eb16e745e69e370df3eaf6dead921a8df73b86510c4a4cacf8a9a112601fb24f1411a7813540fc2af614ae778416a145f1c95c0c9cc6381ee48bc81c94d6a737dce6094efbf6eb52fca1d5aa89aaeaad00d2b700337493efee97a7b5d9c037b49b9289a969e9c7d7c56143551c290de12799db54623442521a9d36f53b0a1296c5539183f9f24feb80021f6a3d0cd783636ad663fd36f89c4f274747f50d8e706b769940d5a27d282213c26e3ef0e138f701a93aac6458c8c07ef9ea85c5e118d2d64d3913ad07094dc857fcbf4dd829ca65af1e4e9942f4d802e1731a94062b1693343ac0589b6fcc45dc4000054083d3bc64032cd8c7e2bcc2714942a8dc86e09cc604bab4a01c9b6e917d7994f4f796f79c15fbe3dc785b75eb28f66d4bce2a1db0cc599d6d3b7c7dfd88d0143d3bb15b1733afe4a5400e33989feecab2e913dcfabaeedc82d623e80d4a135413867444dd6f1d0521e8c992df924a1ffe83c41e396c08f1cd5fef4e074147aac21895aa388f6e3209c3de0c61b885440f8a63ad6370913ef1282e7b81ff47617eb0e5442e8f6167054749c5021dbf0405b31af301cdb9be43eaf9adccaaf5c9f01424544f1d5e2d9c8d921fa4a24fc415f32a6a5f7bb16e90429fc1c37bb3580d8dd56b671c573deed540beed78b057540611c605e6320c9d2f96df3c3f3663a16833ca02227d6aeeffd7cf8aa9b13fbaebb98d6f6fdde826960acd00d9a259387627110af9c040a8126acbf18f00c63f65c717ebeb5fde53bef40f6fbefc94e98c5872b82126012ab9b7fec45bfeb39f7ce41af22273ad8cd4c16ebb77e4148f0447a0014de5e5d1c0e08fbd8fe69da1fa2944ce51a45155698c8cff22a6c6b53b791615e25ed8119ca4d4058445fc6aef92853fa9ef13ffefe4a331f2972f5111b88a0c7bdd0238e13221e2e5be8d642e810efdcd2a66ff3f2aa26fabc894dd6c5b99fb6728e86dc98b70893224bbb6cd512056583fd14d157225f427fef924b5a6fe8629e6eaeab47088193fdbf73ca90131ec5535806a92011f79d303924c5935efe1f7ce6e4aa2e47aa4b2945815dfe10d7cc50d3296ba551cc232497a29497761903caffd10bb3ca76f8852da9e545cf0ef1d6d9c53f4bb788659d0db1c7a3d5a95173a1aafc7c09c9e90be13ce2fc8b680c51589818d7af9f9716ccbe066568ec4daabaabbb6db80aeeed04a3d5a4eb3809a32383c358996c0395083c08a3aebc68b3c25b31adcda589ac6284204dec2866c71d13b80d9713082eccfafe6c8d8016662e843a844e7aedf6786a021319e1481eded94662f3f63b11eca96801346f959e46813bbacd480dc9e0a27e8e0967f10ea8497c3899ebe40af38f0e13bd3f486bc1ff3d1308c6e065e959f548a32d7c75cc507d81a2b493c20338a965faaa8c5ca61af0c73e751a4d6b002a40256c14648a613c8d04058c8cbdfd1b094d9621f578bfdb12b760c52ff82cadc9bf2c7a2e637371c6ebae09a52679444f63fc654642992ac4935257f6af99642796760e3a3ffb83f322afb795a7788ecc05f6c56d20a130ba3d90cee6c2912e1f3080985e8e88603124ffac59cee44457fa7dfcc50636c7f35905139941e29090f8035fbb394031b80c8c8ef448c826f46044090216a0bdef65585496d913acdfcf366270712c39fc54a21fc9ebca79002cf8b31ab1ea4a335491cdf9a40d283b22fb9e41e494d8bead59a0616dda651d366f772db1c736c8996120f3ce6e4488d35627d7ea3bb3f2eb170bb8291285f780af6c959ab5f7b53e3bbc0a203467a06f31d32caba6e00102d64dcc904d5ebcdc296e1896dfd37cf57b82d5afd3d3c780644ba71182876e76d14bfca2e502b5970a0185e6330a8b2aaad667d41bcf5f1c851bc2a508b2c0dc1aece9d7926d7e44d6802fa2021fe5ed00cd05d729ed11c0e07553bff6814933ee806236078ac2d7ab6e42468420aa12fdfa179cfea3e304cd095947a3d008db9c779e0dfaced9e5a2c398c8d64c2017e5065c256a971f61d1d01bd35fc2ae940e5cc30d8d3dd1ee98831d65336c2a6a56c7c33583cdfe0506e138b2c98add8b26abac1b0aa46eb3ed72d84261ec6c2565399b875b6c42cf15ab5afd9b809c8244f8f62e166f585ee0b44a5de09319626f5446449b19f170688ca1084b2a3e721fdad2235833bb1fed5c2587bae8aff5d4859f62b95b423f092a6f3ec27424402d20ac0e2cd6e7c9870a32078b4f99bd9c587b2d517896c9b3a90f7a8b2936fdcaab065d4de6660ba121c04ab78ce779de8d386d3f4690bf8a747e0ad8ea7b8d3013dbab8ee006c82321382d45cfb4efe5c12820a88e48b6a927a30df8c70f4c4f4603eb7c09e80e131a2534b1e955d8286729ac3ff4d7026214f94a37f47d693ec62fbe1f1a69ec93298fe6d4c57c0db05f1c3f9503bc6a4d6dd1bcdeb69d89a829a81be8aff4129c1f737c4c31e659ef2e456e4f508cba887b1455e0775b4ffaff836802097ce45b97716fa056e8b938e72c6f7c355a0845b4dd9f5f6f06bee487bf5cd2cdf0c475102151f62ebd4cc5217a7d6d384109017a491ebc9c1e0fc43bbf92c844db6057536e5d223e1e5d8582205ed8a3d630384a09767ecb5fd385460216bfcd9116fb3e6114a6bbe95bb4c360bb053e941a88c9dccfea5fc6ea3eaa879a26580a00fd5997154e392af8b46cdf8bb763aac12dcebe49dc2aaea18cae51db0f1c5d996d30a69cf459642d824b0684ad4a1fc53144f52cdb23709ecf6fd6538072bf86552a6fd2d82a282374380e7baf2d7fc597482fe9747ffadb1f1e9649246bcd57be811b80065b438a1b231da27f4550a6cadb1d59eadc3ff01db36b7343885d84f84a156a7d270c3766b89b4418adb4a78e8fb20237227f12f5487a17db517ef6df2e14f96029ba75a4ba67feaecedf0227ff6b0112c325939af107ff09d089de5171025daab9fb0391375b04b2d5190c9b82bd858dad09b71461d8042d47017dec1a084c2be0ba127043c4e60fc9282ecef9535132853e2a8a289b8d0cf6c71e103b73cdf1a1073f12b11692d21805bb0e0264f518eeee3d16c477e59489fd8b0feb1fdb8ab052987ec60e02268ae6d698543fc8bba393e6806dd1713a3ace1b3919cecef79e32d9fcb68795ecaf35e63d243a009b8b05d190ae4ba79d1bde454e9ba05aa89c9453522bf45cbe8eacc56d6f334c01934f671e489da6e43ff69dc14034f7bd2790ec7d5ca5957bc71013f4115257ec9880b922a0fc6836724a69dcea0da3138d90f70df46d3b9892db78117dcf66330d58929534b9789f5df06866971992f2f745c4707c22f83bc05ee9a6371c6f823266e3ffc2771c0e86bcf616788fd3ba2f7c1a0e422f3714aa3cfbe0c72906362ed7e85f61f0e40a005c56793ac6cf7c2b48913e61e9e45a5f7a323956e4c936f7c943ae5c79e73156debdd9cd7825aa922c968dec0f4890eb3d5e5666ad75f548d71dd5f43f8c2796a51e915b824eb095a42d355ea941456cf06b8825faeed17bb2b3229cd12c3d543edda6a326291d59cd412a9cedc2ea90635d1d7b978deca07245c3d32d8877546898bdedb283649c87c65d27421a61d58eeca48d96218a3538f0e2f5542f10644c098d87ec695cee6e5679237353c118795616594482ef6ea8e158aabc90d50130a95da9a3bf0129e894791483e324b9ab6482db3afb2d7f6d8b9b7be23ec4c0bd87c41e05d81e3c060e8fa2adde70a5c6b85c47192ffbf09f1c02fab5176558ac10291b8caeab2be23e00a34a3c8d3ddcf00de00fa3ce795f00b97a3fe2fa570c08466bda9f9252d1b69f712d901d4f08644c50469b0ef74df16cb6d2ef23fa37dbc593c3f72a94880aeac4595ba38ac4e935c16169f11609cdabfe23bfeb78cad7c01ba4ecbdd6d6d14d49e22c89feca4cf1842f64c3a7c55d383702702cb997c0d0b6b4d03999d5e5db5c7b6181ccf7be2008997e276c9902db49835e824b90bfad2bb64f9590042cf99ba784eef38fe93fa60cb4393b2c45b2971dd8bd8e3fc6036c944f44b5f18ba7b47d744304e64083b2f21210c818096aa2207ae478f0f1a64e7c64064a92502f7932f7a13fdd75285d430ce52e72409056b9ac2443bcd424d1c6012b76eb18fa194c3976f7469d0fd1db5a6e8782cadf91d5d7132e74504f5a2630fdc6757c62c96009265a6133dbd51760c072c0416139d21e4c599dca3476815331eece765f3b8151bc9c9d0b4faa8044860e073af9a65453cdadb233151908cef3d7cd876e170da6103d9be1298ce42d604d3963093837fc97438ca62a4f265b9bf394424f6030557af1654601864c0ec9f296445d419ffdbb2c29674829846671c697ca5f90eb1f21b81a3468c7fe43e0d6cc7b021dbd94bdb8f7518dd402e0facf62899630036343663b1b3cc27e84dc10549695e94ca0f373794cc9bdd994bcfeff873d89d4dd619c7d72570d9a0cd9cc74672caa13f7da5588e28a6167612ae05e3e4167c8af1acfb3a4f43061be88a65bc739074b90b1a12aaf314c6e187de0ff650a88a1e0738134e03b292046ab9f79b52c61279b5528c2416947ac0766986b9c82986f12de16667a07956e721517ab64b6a967e4f1f6d8eb76ff61c59ed0a1e198d82075c4e0f6567329e33fc534c3453d4acd7728363381cffb15b1a14dbfdd943683706786d6173b9ab1aa6adb49dba89163ed1d5a0af1320543dfd2a602d9ce0733190e2a37743493239c19258735f5f2b060fc1574a0a3e3eb14f6fa41b995cb2d5460a1998081bdb11f201c456e45c535d7cb344c40ff00378d68dd40286da88dadecaf96c29bfc3575399eac2b6e18cd847dc22eb6491e8951ae6c2a86c712fc3b1f0b34eaef7fa0818fa9d54e322e852044e325b62586995025e65afab44302633ef794887c3065966a315a3fa360d1c9c3fba4bca57b49961f5577580f0ec4358edc42cde755e6bb5846ea8888bb3760bae846bd7862b4166d45586bc1c16edebf5cdb9e628f0dd378728bae0cd2a677cd25bcd9a64e6571343c39b88d937b9081f14cede979c231df5a8114007d1d19df991e47a0b2f5a2cd3252d5744298d33e9ddac3070b7aeb3f4b6e488eaa0e94f4a7c91e59104c73f09a79068d59d71d0ebae52e97589ebb544fd0d18189feefff2f43d87659842b9fc97ab82a095b9eb21d3d9f46bcf0a4c068f45776a6d3c4d06d70999e6d28825bae532bec5ea7891cfdaeed28c399c8ca85ee9ed34baa8d108860718e9cc2f12aea97b8b49c74a2d051755b584edf885f8c45532bbcd3127d36588f7e9553a33029ddb508d2c68ac3b217b3a4a037e1af0fccdbd0ffefc84f45e79a0b6707ab8a19f9944ac6c0e5c61531f36e70697391da6f484f43da58d335fcf4ffdd3c3fc8c316e6412af35bef44c043a3f79983f6247d416508ad92824d70326bd69eef83ff993acbd7197ce7770b5d025506a865fc77764477a4b820a3da1f9d4d0a824324168f0bb0105729b645b9ca27302710df112b312b9ed876c89df3e00dc1aafe1789bf6a1030e0a0095a0cb153faf7bedf6ba7a32828281c4b95096691258396faff1baeaeef6664db2a5960b04321bc0eaae33bf297a9bc04e9dd49a2ea27c8a1c93f7678fff91b12e06b6f188a974dc4630542d91217f5ccc5095fa9d7b86539aec572f85f9298bbfec058e824c381e64eb0005b62052eb3eb6aa37048a74df2820f7b9c22e4c21e237c70920f428dd06f031bb2549b7d9afc4fcfab748da4266050c3e109843d054ae30a181761a89d0394e107fb4aa88b11ba9f8428b3a5f1bbae4a48a6378ff9a43428b3cd17054c9c87f16fa325323da0f7601e4cf3e34b1c293e11ecb598a7a6c0c7ad8236acede494248df0923bb43c7ea050f629620b7baf0d6123b3c038083dd27527abd6d5f4feee50d02e24608669e14ea4ca7515e95ce6d7cc8655c7a3d07c29a6758d38019432775c67a5aca4a903dcf1d7b9cfd6d89f6c9f7c210fc2d2ea6157045fcdaee30ac9c92a58e305b9beccd76911d8ee84d7337d3fddadd5b55d31c4405b1e70466fe1c31ca98616056bd267182482e22bcf25a51f166b8e517a47ccae43f89f85fe3234ab3048b73f302d2cf9a83a031c8b49b0bb32e6db6c2e3f5fa19f783d603b5f201ed5a607af03efb01dc06cb37fa6db444ade19d494014bb88b1e2ffb3fef45fe7e83f94b3aa897ff509793800709f353f8349318008c7f85c970906d770d5533241c16053278072b9b0b0953142a403e4b99dd384863f48e143c40b6fa57f4d52b5970230a3a299f04b12340e2fc7d3b85e9c73c0a6313b1ad8ce61ddd877deccb99d3b7ebb2fef13fa3f8cc4ac6db326278bc3de7e53d691b267c08d4f9b2b6cb51bcf9d417024856532b74fc5278210c279bce241a51212c722c45e3fdc6ebd45d408f60b181971cd5df3e75d3e73b955bb174bf2c65c2f43196e9a4d0d75df24ec34e255d8658258392203cc2b8efb6392d546846f14a349c4a17ea3c422a18ae223ae8080d3631b5a49e5d9442fce8e77b8f9611d0e76ce20a655db9ce9ef22d0a9a24712e2127d5614c19cba851cf738c7d0836413fbddb1a81e48e05596f30b2222b9fe4302e3d15168be0714ec2f6dcee68ed26199d89539c659f9834acb26e9d486595f0ccf63708c1cce34d3ff59db78ab3d27676d2accee1fd9a50c14e7dfe57e30cf35d9880a8fdf238fbf6a7cc36a05770a945daa38492de380d52290eb4e405de23f2f6f57e26a51a70cbe549bdb28c6a3a352c73b7d5dd4ee945e4974357c171a0b843bb6f9c80b4eea98f63fcaac46ff775181f5a13f885d80d8eae9565646afc9985629ca74492b132b22cec9dd3d1d2c9464694627774fb12fce3985b60f0a02ca6ed6daa2e93cd323592bc65ac274bed4e5ff092645d813da835b339d6c4b614a1c87e56b884f5e0b777ed8d59b6a8b52cc05c56fc023a52c76c811cd99c45df5812b077b04877600d2b12b6b15de971c782941eb3bed01bd94fcba5b147ca9e3d75380216ddd6214cef4f03f999fab6a5a0182f1480845f61bf86ffb71ae742b88b605f2499d35bf1a3a645b50f23b0f25839d7d71da35fb6dc3e40fcd47807669ada0456fe5622687bae0ebad10264c0d8d244fbadbc62fbbe41ce0ac6b0058aeb71f4cdd29a72f776e056ac1a53994fd5e1bc1621be403eaea57774af04e8c53f6168a79b23d9a8897e94b67539303b91b82578eb991d9c6e50d07d3e16d8c32b170e6cc1a6798e437613af42dc798c24b6d45426d5a2006eafbdbd0fc591f61d08da952d13fa30f9551fac23cdb78515bae6d67ff0d000c92403834352dd33163f60f4f9be682c6bd157c21fe11c8ba1c0ca04fcdcf2cbe7b88a48d311188fc1c9a529610f3c49cfdf2c275e184e180400b15934975beddc64a8aebcc0177d1cfa046271b3c1b9e6a9d9617cd8ef7a6e0466af97934258897152975935f5e5cf9caf6fe7cee5c2959cc3048970667fff958a18776a2958799ea384d4b52be883762d81446f32399e6de58e58f4947eaea52e3baed01860c77abcb7e68fb4eebcab97d0161a6401370909ff1f3150161f7c50a6ea1e1164364963fb797781a901a3fe86b09dd7d051bbdaccf7935f63ac95b36e6e70a81f894d2545834b6e48f301adcfb4d3c6f6b4d36d11ac9f7834eecfee50828c0e22dc10cb8fdd411cbba3a5ed73991df43f631a74e5b017dea70509364cc624b0607a72394e9bdcc45b90aca8e770c4fd794378907712fd0e25ec93e8089a8dcfbfc87e4fceb694ef53f981812964bc67aa792288973dad1ed468f41d3f39db8a09da8d744410737e5557ce1f940acca3060b8b8a1f27af2a505bf5e1f24fdb66d6ad11c9093fa412f3874094100e411556de678f4f6fbbc9d23d7d47d4e1511279ad15736c458f82719e4c2ab547ab8ea119ae83dde3f31954b3ee665744680479af8acc5616c337fd4511edeec49c80a3c170c3a3399ee0f3fbaf1cba086ac402e9bcdb8b7346ffeb4e52a84e3020f2dffe4c05eed522e9646f71adb02deeaeaf393143235e3ecce93efa62de1a74445154d22dc18278e2aba07830b8aed4bbee5beb24d8060a571ec6040bfee1282eeaee1fd94c3c9aabe85dd10977c63faae2c7debdcebc60bd3fb4e659bbf6c071fe8f25701305c8ab07cd1c98edf87e9c63435619c2de29f24a474a4e43cb6521eac18002dbbf8d69ae61fba126eb2d3d680ce713723b850669ab09d7b254386b7b0ae3544972be901ef676d6e4bd288d82a37a3aa2cffaec95585829aa83c1fe275535c607876a2a7882ff71b92e88cdc57e01fd722a0ef5854972630fb1bfc5ae46bc08695cb1790e45c8bef5f8a069d273e4359393abe8b8b31a05c0a30b3e73a9c6b0bec160c01d4bda6ed0562fd0fd14a36f42aa1dfb346c278b1971f393e775109ca87b13a064c80c78d90ace892ae029c24e85ba46b485b6d173e60d7ca4c3adbe6aeed7144c8bbb56bf3bc8d89f5e74dac9f222b70bf33bf7b18be72ce08cabd0934907d257ae45ba9c1762e8ab67e282961647391822314a705d9218f78b83c45de52e1a608592f8382d407718ccfe708cac63fa2122be7dfcea41395037fb71bca5f635524da28d95f6420f511e9136c259dc89114eb883ac9e7c52db1dd9554e3d8663f5a0a4dae22c76698ce5cfdc927733e19512bb0b8e3be8bafbd588c931b5216e85ff1c4e02f34200dcdbdc967f7881ca7ca539a9a76186437b9b4f0e3cd555e85897c869c7df2a66a762590f4824f4b7225f3bb83923920dbe67e1eaad3deb7123bfc8c4a48e178cb9eb385dc3fec12df703d01550038da89b885ebac2bddc202eca3a1fea3f2952ee9053a254abddd9f5c869ede9c82bb14d15b2c29b8b8b099c40ab4a5e5aa2eb6c9c3e3e487ceca3b07c970cb3d55131aebd8482185c67e3af3aec27645a4a29d7615bda6e26310e5de23ee67d746bdcc6097e05a3cd50031976e53680a0ccf800927704ee1722ec98058a6262dbbd7d1d5787fbce8a5bbc2850f7cac0424adceebac934ced26f1441e4d5304f172caaeb11c62fdee6b8f903db87a751bc240816a583736565d43a6b28c792dd8f89c81ae6c4ad92d4f32931376de8438d0d674f6658011b72bd1653fc39887d5339dfdbc13643a8cee7a3c04b93f47eacb93f8270f56e9b8557a025845ecff5cd955e6e3ff380bd8d87a879ad5887eab45527215181e7a4ed794e88187bbc14cf6d4828ee4b5a2bc1369010e83cebcdd64d12fee4589096d5fff0e50a43ab6db6a42c3f2b93efcc3965c15105db8312a6033bf13de6fbbf6cf0334addafaefb669c612d538d32dcacfd624c065798c2a08cc681d32bef502bf09e47a0bebe349f9bf0ff56243ce061e1e37e57f58f4f13e3fa44a1171a5f1f818b4863de89107774ba4dbf9733dd4576849dbf2c8594c76efa2ea50a276befa2b5ada1adefe6c1219399805b300a944d58999ea12a2503bbc492849a551d977528d967177a25f4f93fc37501ca54b213907d6f98b6f30ab10347b5833af61d6a3d7dbb35eaa7c83557867ea0dda251eb79f92925f8806f6419ab75fa89502b101c4bf760e35e85cf2eebba5acb5bfe12b384e8de71dc3e23d3558424f51d557aa11f0f631e62d590a3c97997855d8016886aca694763b4a8979266cbe39a14a9bd7708f9576ce4db23076a2f14c458c3af8a5fe66bcd09a8ec3d649441687c2c3c1d544a72128e029a6bedd4b94be824b813898f6f117553c4f87ca63f3a62907d2713c8712820ee2c0cf2f34e90057c65921dd0b506b90f31452e4607b979e0f4f3c3fa83225a6d31d2cbea4d33c75d4f75e19c88d5374c6e54a11dd239672f0ca943d00fc96cc25e41275c9c09cb8e7cd19fb5dd545bf066154cd83c22fad986ba3c7c8303d7724f5c185f4e5c8f0d49719195a674944249d2f1ac75ac18a15dfcd94cf9aebf486b4e8dea2ddb362be401c6a7b2eb666db9d0bfdab3699f6a4a59cfe56341f61062388ba9030a748ceab3aca1bc663a1b3f1a2fea69cb015989b7782865cf43344459a13de3c7b4cc1e9067928b54e02ce10a7ac88b4eebd05edd3446bf937b000116028432d221141a5369caadfefaa0357d2177a6da5fa4cddc88888a94d76a15a22fc54f231aa0ed07bbbdf70404e54b37a5409778188670c843af86607f2077d87d7d96fe521fddaa441e2bfaabaa466e8fd459f765c0c24c1671b3ef5eab7b55cc32d5021f2bb023d00e2f0f649cd6b05aeed274a1ca2163cc2daf925f44d6fd710b72f658d717bacaaec54986ff8623389a8e43ca2015a102077e7cbfc45f4dfd06a1236d72585475946ca9e30511a37b35534ff7d08c81afce913bbc21144ec5c61557ba9fcb2d208529ff5a6010e32d56727896ffb0ebff4d5a440597f044fcd7a8e7b5040efc1170aba877e8179939b5165a9f0b8dbe44a072f65aa6fc9a383130ca30b3c06dfcb0806577b34d4c33802a31da9bb279c63842c46efdc2c2fa2c8e60191e6c113cb206b93f258d30ee171bccffbec549b4b2ef4d43831719e904cd77b885ce0caa485ce434d464bf94d3ec362764701b530f1d4f3e9eca78f794b42f80f2b6fba4784e02188fb89c13c5794936249bc76e384369c3a9d96b0cb5f2c7d356a55f186cbb8dfb7fd0442edbac6103937085d5abde172b622d40fba1608047fa716b19a44832c7e8674cfa54205562a2e516c316bd2f1bc47d870bd04900366a018f4a07bbf739702b6f42f7f25c79806c48924cc341901a7f7100fea1e1ed6ccf57f1798d48050e00f2057a58dbf99062fa2968b706b0ce285502fe73720b1b9a60a63e5fbe60aaeb06e6e8abb8a786456880d5363d2b927982060c1307f4a338c484debc34bbb8883c4c9b0fe4234996677b3ea2ceeb70a22eb2a3730d4eb3fa4b08216ae786ddab3474264b763ff826e51d7e92e380aa866e8d764f2634fea73630ff1a866bd687a28b5e6ac74bf570b056af72157891df879f73805a028dc6fe8ebea684c5db30d5784ac4c949067b000839a62fb6150bf30dcf86eb29ac8ed646eb2e11692a2cf6a14a9e4ce3faf343ddb9ad79c9003c6981fd5f090bea6e886d21c6299b68512874eab2a21d13a903452f1137e6b3ebdc2198e57c920bc219db99e1431b7610f7b1fcaa2bcfa57f30c6848966a18037ac86b288c344277683da654e68d968fe7b3f8e0b6a4a798a15bc40c48c01555e23676b15602171a1369829b16d1eaaacbd84e1c910375a53a26b10d9e76af8f045de413051c8834f2561939f1375ad0a1121b960ba637e05a349cadfcff8c0c53fd1dfc67b0f3ee48e99b147517262cc5115b0247e673d6bd5697a24114221a3ec3d3ccd7d7a724945d1b7fe9039fd8b8dd906bbaece6834c04d94695ad3d42a62c77a333a3694e2af3130ca49dab0ce85b3fffcd97fc64c1903c79e5c27de0e04bc16c0c95f13cfe1cdef980a2429acd4371ea528a5859cc4bbe0dac95d50849e42c096e786ea30e523d2ad091f3bc1ce833466ad95256e00a00cee2ba0ebe96e87781f8c4fe714cb7d3aab8666038c5d51614ad9274e914fbca0947614278764f254b3b44370002ada9cd54abbdc6eccaaf4aa7dbfc8ac51b85b74eb961fb1a88fe9c8478a10705c1abd1086d55d737f118f2f7bb5ec0d86dbf2471cdaf7dc3958cd396593a6e3da6281bd668059dfb976e50a8bbbf0ed9b6ab36a58b441e70fe9fe5f557f0e04a9956fcac1cbf6c33e451268c5f7bbd49b29e3a373b8bab3e46c9e8be3b2a3e5309cb0dff48096c530d67fbbc359f68e1ae9346581cc3b929a6e3a53b6040d04373051714d47b8f52c7d87a82946f6394e0a82909798109240a863da401fe570f1de486e3ee45e9856bd3df3966e2ea98239fec42012c3eca2793dcc0ce25e7b2c52a7c74d1a647274b08720e5d2128cf875ee27ee680e424acac805db4ea8a0b6e025e06637623a1572d1295b10c0337bf6f4800cd0cc93414b8ccc1e476c6c615760484a89ddef9f57ad69c1fb4c45d7581778153b49e43c163ed9e7164ddf7a6f87003e29952f8632cb7c62ce289eda8e5a326a42ff5323f9b8d256b45ee1b52da1654d6fdaedb8e054bb6e48f85c85b122ed83b897f438014db355b1fdd964bd5b3dde9eca7c09cca93ed1e6a135a51218366d7a3aa0e07c59adb1fea0df33286b85144a2f40db3c4daa512559a071e518d1940ae83ac94694d889c12ef6d6bec40f176ec1d82b5409d3775e83eeb7d84b48d83b4ee3ff6ff63bd75f8539b54ec9c69cbaa9cbcd20f89e39fed6542c4c16e00fd0f2d63fa4b84180f719f29a1cd6889a154485cb407890e42e2063a38b0606e78f0b32e6c53ddf34f45be1001bd35500872150d127fe142f57ace025f210e25a2d952d42ee28b0c47b1f1b5f34ac21a0d23241f38d75c88a01c115786851aaae723aa083a080fe1a1e669cedde9c2ed11971e81cbee87e5f8638ddc5d73191ae979f1b44497ccb91087b00a6e723a21da95e737b6aafe1b959cfe0b1125ef609c5b0eab60a8a58d1c2fe3d4f2a162eee2f698adb074c8f1fa4b7f881ef8c0ed4d9cfa55a7159b34a8e9bdab829724a20b28d2714db9c499c4a6bb101df075c4bce57aa05cfc819a52b675e4bf58217687ab5645c66a270d7d18f473b931c70eaa30258c9a42c8e3330b63dd8f4b4a529197fc8a0a7d05681ac0cf347c87e08e564db732ad0d49b6fb507ceb54bd09f95f15eb77b869f19a0deffec350df90959260bd2bc44931184b62a08c195efb5f67e1289dbbaea703b7aead7c5bcc0a5e376188908325f4964011b1a8a2c234370acf7aa4444bcbbeaf35c6cc660335f11a9b74184c934fa891a37deb8de11de17c43925aaf46b2c4bf75033313df8af2d12d8007c7cb6077384f7d817897d95cc1b78b60b52842238990d3fc00dd8cf8dc8c31e95fc8c88fb1c359c1a9253ee55139bd1efd7edce6e85b0aee5d21c15231ffcd51dbc9e018019f498ce4ae5d4646ead4d2ad595b84cee3633c9cf0435f6722e01f27d2fe923bf83a6fd1bb9e2b7e8047d332cf1dd6d2e5d6889b34e8d13a640ef8d529ca481ad6cdceeab864e8a0c50e62c17824fe2754b7c037fbe78e738841f574d99fe637b61ea8f374487d9115b8a885f13dbf93d6a81005f824fbbf281bc70f3207eaed0861b0c8a5e0db4be4c2b7945c431f06486153fb01f9e3832dbcb8c44736db6fb249ddca621aabfe364fa3e2de646406363ba6f68f96602158db593f6ea682ad8b49a039a7210e9b251c17852086bfa063980d3e41f94ecbbd2bc44dc4b88cb9e1975e92d4d92f025fd6fb7bcfaa35b7471453b459664e834213b789a76a4deef40cf0712ee6946ea6b607131d739a988c8687f23d7d597f25b1033c3a1a96ce78cc2e845d4276b54e7054b03da8ad8891d5d24ef7d761d573340336e45acfac17c0e1c4ec6aa682c26f548dead8ad74e7987bbdb63b8ff59282115ad1d9c876ede18bb4cd15c3bfff68c168e105f267d68b508d4b59042eb82d46f16f52f1a00a57ea2ad27ab5ed16365eb9625e5c74d9cfdd3bad1d4b2d71bbe5b9f392e80ff4592b20352cc355af05a64ab30cb8aa1eff17017592ca3a1d3b45cfd2909d0b22f5271d117fb19d81d9c2759d12546f070f673d634ee8a66f2c1a29488d6abb828d2a02e683bd78db54655aed356defab023ba8d775b7c6efb57075d449e166f33c0c7b198f6ae51edb5794f4fc38bc556d94f8584b57a9792bc27dba4c39bbccfcb2c6715169a641fee6eb08bba39804c52ac411506397bce4e51c7f3592a153a03a6f9c80196b4c3d796801ad1357ea841a7d4ff41657bc63d60871217cc6479f522fa80f686add12f0fdbc25c33cee1f45c904d8062251cb84581d2078cf57b09a888af70b09a653acc69cca83c02ac3cce9479b9133a6a534bbd7b7625fa933087e9a8f6382ecdc4f5d04e0fca26de8558cd23e6ad9bafa19cc357afa76546d9e7c157674710a939672dea5b64eb9b8f82a8314def9e2b633ca94a8f472e68f03bc9a08d085ecafe02c17c48426c63e0c13db3fb81545619c4192e851e5de96bc47ae6c5ea69561483820c721e97e69354682c6e4e55f22cbe09208e5cb33f119713828524299b85caf6fac0d997fde63acc13035d77f1a7fc93bd43d32cbfb1ea1054ac696a3e6db2dfc7e01689c9ca67806bae8d048084f2af9f86921054cee604522c93df1cc0670c4038afd5c6e02366411dae4343f17d37bfa3ddc30ca84f60c8bd571d3da67da4a769b10792cb4ac10aa74c20ceebfc3333718cb119ccd22d2c0fc0e2f3c2727115530b463d088b3e59bd30771b5156ad9fc4f2661df5865f3ca42810058463f233e45e7bb56350ce113acd6578eae60e9acc2624d343fa93074ef7dd29e5cf78ddbc3f0d871d89ca654e5648400150620f130a0f417fc652dd3d59b48a9af00e0df2ed0450c10b4fa46009b16a9b33002005edded0e490ef162d49c97a6c0e0b2122194419b4c88479ab034fa103b9957f12282be9f431e69ab0f81081ba92a1b6df1b73d414cce1b75494276d37b52aa22e8e3661d6839e479a94a79eee08639460ec262c0e715a9b5df5b9f14efcac9ab36c5d4412b9098a9f6aeddca474fac8fe13c093d9b9747c24351e447676148e353756d983c341c7c75d0b7ca8ba61a2250cc40d07440eee934a48146a38bfef218218ab8bb19ec810683a37747fbac1926924cea5215be5470a40db6bdea857c781af74fea42e9122a8ace1871d88f42024c21859c7977847d97edbeb26ebe4d645876fd24fbd65644b77951f5bd75959295ec26dd8000655af0de1276d74b2505353afb2c15dcdd29cc7a0f977d11c433828ab4ee35e3ec683d6f4353771487767c6c990cd806c9768cbac96e419fd545510e149badcf4d401d84689217c3a07832aa8820a5c6827276b80ea3f259d3c7583f9fdfcd15b5433dd5169b45473eca1183f40f696e0782320463343003850c6217663cee2c9c201f6ca60f1c55ce1cacfc6dbd98b8bd6ae6c56ff666603d9a9c4541b9d82ea996242bc99ad0e276d43d0ea67ad23fdfe73f348110e5bab687fbacb48a3e581f2b2b447169ecaa3906bd25f8083b047154381f559ff45effe749e2a180668edfa9d3bf078b1aad286667a2c43055eacb6b49673952221d761783b2caa8b6d4f8956bf7f2b1e4acaa17175a9bf96139b56209827a1dd6cdd6fb039a23cfbdd6c8eb501d6d0e8cb0cf91f21636cd4e1f07dbeaf9215c4dc65689fa4ef6c58c61acd692b4aa3d6984b509a011430fd62ae9732beb04fbd666d11e1133d49f82e83f3c84135187e336fc14017dfff3bdcf98f8d1892287eb8d048bb3e558452a00303fefe63ce31c9a4a769ffea19f10e7c16ffb9852395c22ddcc73b1bc106be4991b9bad9881e5c7e245602d95d8bf2c678d9cf243595d8cd3e0041b375919f1fbfedf3c43cf669846e8c61682d665c15a494b05cb91a139582dfa5a3118e72bb6bd163a86303b2bec840dba2af8bba7469c9a528010151a5060fad74812d0b71a88cca21cec546602ef9c8e146aef4945a510efae8a0825a1cf5cb2212e605f0e01c54489002c6d4532fafb020833f109bac5069381c5d2ceae383d09e39d113958ff45bddd272de33514dc4103cd5099234954e85f969fa6abc57e68e9f560c649259a0e3d1fd56f27f803c01766fa91897eaac84a468cfcc38db106974001b62505927e911557ea9f57b3f9598fe7044ec570dabffda0776658c41b91dc50bc40fa4950ca12ecd0b4f727b3e74af4dd5be11dcf5a2a626e30e7da32bee5c9b2707136ef610f8d4567140a8305e360dc29cbc0315cd160d3da94c9dca1c28f9876099e25f3737a422300fd2c73824f1bf4c27a85cb45ac3128a79c328c9de82278291ea3ce98b7de40cb15cc00d04b2a6ec102b44ebc59b9e5ac112847e2beddea4925d34a078aa2b98b5bcdae46beb56fa61fcc10a0035c51911bae2b8420dc92967703c8fbffeb83f14abae22278bf5d54311052dd44f9762661a5c8a3bff87602abdaa2cc6463463053d37a842f67523da9547b8f409b56c8bda0852671a6ec60ae1e8f67cd7f55eb5c7acad4fa4245c58daecea11ac3e562bf77ebf5b2501d993ecb140c911b2dbd3d6dc996d647b642f5710ffb7cc53d9528a97ce71e4ca793707829c7cb18d82742d0ff8621429d559080bbbd143789e46f8d47c1f8563c142b1120f9da15f837ac08f95722de9fc220e8afff116982f13f599c6aa7a95f4babd9685ce1315fe8306747677f40d0fef9d0521daaf5946bf7ef901b3397a58effc5db9848e16d6076a2627ec42e761e86bc9c75975cf40c29863c49ccbd16508a20876c39d2a67b9b21eb11e3c7a4e7c5139bed96af39431b14d51f44c7981f85803cd823e12aa5af161c79afcc9e5fc6054613e74e5a484998189790b97e3b7c10568b3b1d0ff63869764660784b482fb6c318d1b50958e129ac904ad7a2f7cd246efff6dcbeb1ae70ee4112e93da9bbbb722a1b57d85d45db5afb3210ac0c2c22035291e2dbaffd7e2684451811aeb6ee55d39389a1f08d6c5ea9a80161b322b441ef89904eff063b80d95e631ada8387bb3c8b841ab002ce1b6334872a4a89536f8e232e78121dcb0ee325a4b4cf168d3917566c9421a472fdc2ffda2725121dafd5e53bb9108ccfb36246d9a5af7b9359e4d06e43f9a572559257467613bff71a381bd8bd7d0f2df1bed05e61634dca8d29d4ef9c55ec7d71b22f628e16690b6b465333424357a73912b8b628fb3f5b49cec3c59ed2939e4a189ce7d8c23b87a5b7e114414e874bca0857e14ca797185688038611836acb7a045910ddc235b890e45c6fbe5cbaaa5667e84512baae7bc1c27ee117ce724a626c4487aa00aa6fe14d1f05a04d7be411540b2bf98d71f3fadc1f119de762e3a67cdfe8600bc2b95f0ac91c46404a81de6245bf6c22e382fdf85952741a24e27638d0d3f668f9e37ba7bd45d6151e1daff47eb11abf99af9ed09f733b6359e9397c6189a2a69ed30d1ca32c6a72dee161b1815975f43cc05c33ed7052ebd1949915001e862455ac38eae57f9430e7d1a0c27f7022de0b4b46df3e207acb15ec0b36c03981cb95c6ac7233e4ed5589e290fd8c5958a25614d56013eeeb1ddda44940d7684a162bf6c1c800f99bfb8ae6595821fa6bc7043dd686f2a9fccf9a355ad41efc3119b520240c026d044aa148d1df9822111f0ec1b9c0e5629cd3edb71f099479307e28240c6ab5221e9bfc95d1e0b4860fb50146e36ef75345492e9b8cf5db9c22bd4b0d3f6dd9641213bbd8082016466e658039d6c5bbe02bfbe626ed06b9e754323a9e4d31f02a208372c247cac804587cc03f5766c5a1c10a55cdee2499c2c017e324ce62c16df336aba69b3eb79339080bf2dc352e81dd01ed4d4f4f082d9dcf8ca18ab3d88be2606245bdf23129dd543eede95314e71a91d4a75d3438fe24614b3ddd8e03bec33587659e796b29845c4a302a4217f6412566dcb63a80b5b4828d10b567d69b4c6d7f3f2023fd7e41dab6ca6d76ded7ca25b181e89bd9daa10e9039fdee28b02dc8a4b73cc36383160f1bdbda969019ce1ef824e37863ef6d4ae84260de941d5c71c0682cee7e779439a7ddf0915c18f450317d6644deed36fafed9a1c8f9523b8c967e535e118c04369b4a379df17d3522876dd17a325b87d48cd5088efbcf98055960ff47467a58bbcd84b1e606cd7eb2d8d7ff61e7e6e78c228c93a87ff9abc9332b3f1626ac652f2718726ed3fd8867373f2077ad9bd455a47af08033fe8bd5c0fc606b24f52c1b2648e70e962a799b6b3aab43d69ff76cca3a756204cbcd36900dde4693da30de5beeba33104c19ba6fb6e68dd785cbfe9fc98d71a50f3cf0a89bbfe12b6c1c5eeea85f200506bc00f0089f3ccb2c0771031e5e3d0f53dbe601a5c62988ac3c161659a5f0c0831dc5d2d2ffd0ef3075ed290f9022fb17ac6e0872e0c2ab898e18a2f1eeae8c64d39facb2b60c27ec18d9198b87ba6a11ddca1df0b11d776563487395e3f43cb81d1747c7c9357806c3bd2f1d77ff1e675ff914dc4381352ede54ff05b58ca40b2b6f2202cc6c8c96770e9ac40ea31e0a0f6eb7bc19dd1107cbbfd06155721d852115f14959b531d24719de1abf523619e1f541ad3dd89a80938b0333366505117fb21a6d04a4da4e816b53caca497455cad6e4f70ad946615101cacd6af43d9ea25636e420201cd254e7a354a09eaca64f654580c1b0ebfd415eeafe4790a96a904c9664124b32b256cc5029362ef5aff2b4fbfd2b2d47221c1e3e0adbb5b45f4323bc420c6a7ac67afe2b0c63e52a74ecbc1307e3117a890a0632f9d1b9c97e1d27dda46aa2f6e76de9decb6c6d6b0ae8468feaf6e187e64c0a4839af11db5d490b66850f74cc016f78644847ee9962af41e25a0a72d67cc1a6978a623bdeb31eca74856d20c7b109bd8bc93daedd19fc9d75e82772b548d948473ea18c4bf5dbd35a8f2a98d378540979a500d4215fdeaf264cdcfdd2b7b8f716c59744a000477b1f49841c847b94742437517595e76b2bc4815fc8c3f1867dd68dce33deda0630fd56e07c90d268fbd924c6692cf3a83794b2d6a97eb02df3ec335c2f097cc87ee46d32bc506bdfaeb6f6610e1c61ddbecfeff829e1a80bb6d3fdbe4dacab80fff43522f5447815b02ffdf54362d4c71721bda0232b835b7d97abf79c52ed5c5206fd1a878c7145088c878b773ce8605f2c6b14c48163517b5b95bf9a0e7d350c2439aff16fa564c76a6a4d71ad74205f03420ff86a023134d319f438f45b92fb0ddbf946d858b23536d6abfbfce2f6a7af7bd5cf5455defbca5c91a19d6c957fb270e7c8d477da4eb57db43135926c9eae0edd820dc7aad89e55d63ea79f5bc2bc17911815d68d2f7f0cd968a64b99906f48d5824a0061e0bf2d6cc53330a7880340135a72ffb1987fed9d3763c7e592d737177d2340d10233efaa1f66f0e4f0183e8ad265988a2d7561eb0fc440c9ccbfe7c8409544609b15835522e8a5deebbcad1ed18b4e7e9c74e5fa40e21af51273693d3fffc25a11110067e46876ac7167a44b272859597464e91afa1d95a02834af5bc3a5700f45ea48cb6c1564b775c2b3c80fa0892f0281d6c214988fe6c5b736160c309bf185f5fa1c2a26dade642dbcc126ffeb3f36da65b101bb5f678da5833d2d2c5146549bacc251544913893a8f460172f77b38d3460f32b1b4a06f196a37f9891a1e3fdb7b05d55bd4f70530621c05cc4e9407a315d0bae88bad962529653d1b419dc5c5ecfa137d0c5d4289105b5d0211ad37d7a1cbbd933560d94d55424a1aa9d44000185cd7febda67a742e804bafb91ba8cd8449592b69e8e009938617a339ad814529a463a9cc6ee853ebe19f9191d0d13a08f97bea6977a04821d45334d5a7fce12d10a94920f7633ec4abd70aaf4d22a55c8f004e3b947ae833bd5634e2731337335aad31a13ca47f06cf39a0864db1e91f86e19ce511743f1e2a3b69639e4a3cb5494db544bd4a1422914f7d0b7b81b733b42a5bcad920954d6a5f80a0dbfff95c735daf2943b831cca140ef5fdd6611e4ba8bd508fc8aa7137a27885ead830d0fc202fbc44640bbf1e2ede915d99fd05d811399f2b7302641472577a8674f294aa3d4fa1dbab0cd794c2181ffe827207538aafc8f6e5a3690feb9a427d66e92d5f0fb131b4f4c37d895cc708f70cdffbba0549334b175efdeabda4b0c041ba2bff10a2ede8a45fa6f8f1b95c9491ec1e88c28ba23ded6e039b7e10c86e8f146ac0cbc37313881cdc5551272c3f0508f8cda1f1045fd3e87b6083e6dccf92c8173051ea1020be79b82c88aadb46e6ae3195ba4f9e8cec7da1ddd5f53b7e8b6e80fe0f5e0f186cf0346efa7919766030d3b67c41b9d3e64c166957a8de7060725ddc247eeeb7a2ed74836418a59e538b178167de110acf799000b92497f193775267209c7d7a3f19dcfac5aad9bd7874730556cfb09bc22b2ed32d19d6a9ade29053ffaec5248ab116daf7a2d03478c9ada528adc68a348d2ad1957ff37aadc288f837de47ddf08a114a890e719c1df4aa2023f3b3d1efcb1f8817ecd8034606c55061eb7d814c6f0fccd2bd7be899c4a4aa84592ea84f77b48b023c7e1082c8132df11712fbbc453520ff4a1267b5d6264ab55a25cb1ff51342d939083ea4a0969b7afa59680b257b98eb2096cb5ecaed72a75ed4ba695c89a889b3033d8253a127f47e777752d39a15eba7bb07f351db70a2f3b922a27689c67b3950a0f355edcf13951aeb8a86c66642d84ccfc77f26776a3168fca822e6667440da989525219857bffb2da6a17458d6c5690952f4718118f4d9cf1af0acc9ef2cdfbfd0a071d99e893d9c9df941bbffd48943a9785854ef275920df062b3c8276d969b2805ec07f2b19c5920f3fc2e555499df38ee12aef7635dee998d4d61406a9b0c19e3396b3284fab6017593073b9879d27f1430d214b3a0d3b459224078a3347bbed0b7b36d38e15b37115389f9d5a8cfd75e0fae27456cdab486ea781bdd9b9db10db3eb557dab5312f27b0e1bf344f67c8aac437eba00bd7e493a8d8f3fb30af971033f310bade230f6ec9c427bb6fdc22523ac4cfba316e5cafb3880d62d59c0e449a22618cfe20131c6ef941be14e4415556412b3859d25a6b963da1248cba7e47eb387e33c675768db223b26e4e21b10e117d5d0b304896db90047471089db03d1ade72d20796497f669c3126b0907226964e4061f782c25e6e7862e3fab3f66d38a30bb6dff696bea7d87f88d780e2b294f0f4bafe427c58af16761a098a448fcaa30d6c12307c974a9cb174248205fdd66d15c687eb8bbdcde0ae20a782575739f4cca4cc69945f19ffc505abbd6c4f8cb02379e36d36756d9d895e9b888cf30ef196acfd25bacdb874dab17f881b72b99039f3914879ee192d6c153f4b8cd6af1a88aa788f27b22e3fad249126d673a66309c0ca0e327d250fa93b5a832f754172d84ec07f565493fa291ff08415923dfaaf836d7ab41b06bc99a0892916b2e3f84b49bb587d05bd7715cc7995ae295a926c29a55fa1cd30dc94c9ca03e5ba0ead6fcd4488a58af916ec97f0be2b0b81278cf60aa1f5bcb3a3d806ed09d8d6c722c412793fe4b7603b211b8527642403f17348d0870989d6948f2136301d96b9157ebec553e2c22644d94a031476bd5d7a7cda3c569e0cc3bbdc3303e16afdce01069b8b64e31969a71528b358cd3cb6bdaba5c589a33351bdbf68070738f01206eabd02420c529ce9772fcb360762804aadd68c9eb05b6c8bdf4701f758e0f6126a6bdc1d1067b25a9bf4a292f23f8a00d5d46c890c0ac257f09465f91d76c753cd4e49e1f48119d8f25d09a00fef59ab22525d699403fc2e9e4d6b7e3283f33bab13562fb90cf1f2d39aade36fe81233a65db385a5576fa211bd457c2514a6e203fe623ef19374b71af0aeb726fe75cc110eaa7274528acdaa5a038ceb91ebe10833f9752d3798929e1178faa72f3c4305d91e5ab47b3cf815ebab415d9976b7f067ad08adf5c6b324f5d37bb78dbebec47f5b5f308887d5086b2528fbeaa1f6d54aa398514eb6be419cc9f19cb73b1070d52e6a22a842a5142b6c6688b842dc180bd885e7df787f1874b959806b682feb2405639c01c253e1aa76c64f5f8915e9e85c8aed96f536c82d928a3979751677e0b3521d4589d917ac3bcc5c54002f748d6c6431a7f765c183bf6b0443041ab7b12e552e29bc13f31df7c1b5a08a4701ab1792be67fbc17fb3c602da3304013f83f37b75a40ba5af42bb08c24ce48ec36822dd019bf1e920384e484a0a80bf80a8df01421028e4fdc91872b2a91469bc16c8e90410e75faa8ede88dfb1d54dc0696cb4210393982e497d43785cf479d64a7dead2126b6448880a40cc7f2fe94093f688b74e381ce6cdcc028e3d4ac0fcce8eba22ed9f1b5e7ec05a4ed1bbe687068dbac8c8052dab91dcccb055958512ae495f615166f212a9db91fa727783d60b3d0a10fbba53572d252c5416e013fb3d5f76433ba97495b56b1a505943a7f3f56706ea3e34cfb24521f4500c064d5211f87ca1b349cc2a868cf076b75b06939017b7f673b1b05c08dc7cf4121ef3730f4b89414f6f8c7e46f9720116d57c2bcd24dc66a0e40cd1858d993146bbb932217019c99b847b105a406e082efecdefc5bc0a0319ed9c5653e17e020abfdb73ca53b33d78c0616a4b9f56f1ddbcd0870b50ec835dc0a47c4f047f61fa2358646f3d3e832bf3e3b8052a6a1975e42eb53a341f663f41d33b43a5aa45c92c28d0f7a3aeec0893519fbfd5da8772ff0bf24cac6ad9aa77d17998bdfc33c5eb23fe7d27b5acc9690229bc930ff9910ed5926f32a9330768fe03d0f1ffeb2f6e52824c40a85555398f98b615d3aaca82b05e16028156e9ab82d4a5643f9c819e5899d5d0f868c11826b17c1dc6eb4a83c6d9f337bb30fd317f2d08e64611d61fb743225cd815afbeb5c347307cd88429e63f0dd2d11c5fdbd55c54c711662a078544253f2c4d7d4f4cdf562720555ef136b26a94f23b4816fba81e23726dc932e5c331fe2dfd48e99bf173c65111986c062d9494739f589385e3e491220e5de85f2ed1b4cdf52a9428f765b8c0229a2fc886584335015105e559e99f6bd6b5ac48e5fa4a2780966ab50954fc88fab59235367e10b1f93b6757c2414eed470b35ee3f9574281e2ca8cc91be93c2f1d44cf444472738d6573ae92b9b934fd88596f6c31a75c4f7d74b6f550db01b0ccd04106a2a56fd3740a94e3297483685ebdaca3fe6ff7b3ac387f65a4ec16705eedee76ed2b75541b58d7c6a4ce46eb2fdf782c60aa9315f698b75b29b77d7d49fc665ed3eb7c64ac6be5c33d3ec4534d2de443d6244dd31505884b14f99a2b591b19abc806138aeb7157566efa6fc89db2bda1e650858078ede439407541e82ebaa7e383ed917c916f85279265f50c1a950ac1981f6bb9c2a58291aa630866bb80c98c7f84fb11cacbc5106a05b43b50e47e37fbedf1484917732bf671cf83c985f0ca7b58228cb7aa2361990bb3b7e1b7d15c9f8109199843d7a9e95392b372d53174fbe21439ed1796b0286e4dd9049e06041a1529eeed964ec5ede3ed04a647271cc5defc26f50002020390181e015a067284747f3fbc0a0ed990d3f861a9a6c56064ace4bfcaff90147979c772b6f2200efa295a952a18c9cc05ec51ff932561e4a8c6147e5ef5268cc0a00c84151153821eba95b7927ad676a1de857ace265aee2347fb8d147400086e42bce1a3ae682295f0289e04c23ab45fa52ea49c522ca1ae7acf1e47fac355014ab125fb13577a883c1d86c1b582bf5d736e7d8ffdd911e2856357c2fc8fae59ca363e492768d5241d86c5c08697c25d35a8820fdfed51a019d66047c1cf523806f871d00a11691a9e49f92dd2f63a45a297f7d8178daa8a3716bd0909e1e8c908b9b1640b8e8f1fe4cbefe473f88a9fdb2a8b798853dc87066b2b318bd4b916ce5952f1de9d276dc9cf43fa280cfe1a9ebf53d577f43443b771b15c3fd34691fbe557f232f6bf408a1ef3350219990702a6d6a689d9b0ac7843fb1b78f2b88c28b310fa8a4bae5b81c85c8fa6684bdccb0a88f5043a2c767cb52971cd805cc0b6cfdd2f6f069381f410fbb765c877b44cabf2a36a64dc980be55159d715b0ca3a44acc9eaff13fbf056dd8f1aca58ced2f480e45b34e7cdaa81653eb8ee8ea974e9d0985adfc918388d5eafdd4e760aaa71b3bfd0eef3144f87f7817761a542d8d4ae7c8bf374a83b13d5e187c53d6faca56a8f9efefd31a25a55f72b71addca59dceea28a18f812a0101a304c7d1a862bccc854e4b87295779b868f6cce8a592fcd26e7bc03dfb0c39cea874fa5081b4aa3923442485ca8e30e911ccc3ec2b0188052377846973f1ce9757206b276f29a6b2c233fa07214c0b872311f71be3c98e0c3d1ac597cb289a7a4a3aba7806b913140de960ab01f9ea4f4203d618a59353b97f1bc79ee892016dd171d654802b5083845d135183fafb2a06f42b132dbc2ac4c5e8daf333fb54c26d5523343d0af47bfa1ef4868055f8707d534b129cd03cba7cf56cb51985457855853a2b3d2075fa1806443d19636ae7a78a9f44f695ef56255961f08b284f2df4b5b061a88a475cd83c891f3095e128f9a5afeca2a13701d6bdd4e07f3e25e76882889a4659e0af0a95e0f7ec4a4bc0dbcfdbbaed81542bb89e9c176d1d74e0050f3d0808bf3b59d22eb30139b5e1112a9b5f428776b9e18ad6207fd2c5896dd07b8e397dd2c821286f0af646cb6248b61d63bf04b924ec1c7e6833b09eb7a705277aa75ddedc045646fce8054f81e1c5da24935c552782d51a74020c427ff792bf08500242104c7ec6e9c4aee1c1208f7d86b26b929fba2e1d3f336f59dcc59927dcd4eae126d9120a8a4d3c2836a4bf6386c272eae78b35af02e3668a3d95f226a7c7372866cd5a6afb19eeffc792f8f76fc59493bc680bd393e10373fe82a6edf8292f957a18f20555e2c8c206604edccc0a5a98194466d1f67659b674ba756606a9bcdf4edb489772d20f9ca8edc9e4608b3080930c10f881e50319e2b251595bc9eca576f5229bf450d1ec31e7e6e1baf9e587ec7d66a829cd9daddd29e15d9d0972ad0e8617c7aece5bc07490153b24972f6ae87dd9b5cfcd4a1106acff9dcafe23b434a311d0febfc050dae33c59f94b25b8a0177114b0e72db80e263a689e8f7ad0780dd180c5d6599ba8c932e1b499c3c1db8e45d74422f0497a68559205c01562ea2e6b20fcf04005b66545be37bc690e28f3047f3bf3400e94c0c6abccf03692a247c52820f5d30f3df5b5fc17b75c65be106f9855b84e697ac93800f2124464ee431d4def02371dc27a3674001b44666c9bdcaa4e584f684c60096a451147567a5a80d02df4d3443d8272426b06acb109f6b57621c8fd5dcc36cdf43f9e6f91213b542c7126d137fa9b8515414486a13907f78346c3158f09d8c94f3da78daa4249cf0629eca035e0c87f462772a4917b22b400c67ed7eee212791081e997f2bb167d7960d0741014f7e6c386c740b8cb2a91ef368089eb74a60ac5b1882957f116bea7f10dc44126da31cc956d758e56ba48a6050bf44ac4bce0d6b311ffd27d4b45a52538cc0e3fde4e78ee57c3c80049279c9bc7e5163838123d0e087d6e727e9aacfa1709bdfab11c167c348fdfc50190884261ae99b418e9fe42f727d0447899a58a2ebfd6e7e6f252c958a0272f3577d1dcd8a26a69456586c504295dcf81f1fb4b22767fd9741736f989a47a651de749cd339c8aa4d8b8c2782acfe9046da6c5269a79d87f8047ebf41ba96f9ff67d40a8ff79903ca3c81adf940efa3951903998ae5675f8a1345d982ba423ee44ebdd87dc99e563fdb12f661bfa912522da755e2660e0480c03a0e7a6ed91aa7e77d31de16212f722416f786c4e96fb4a83966629302ff562cb2b976dc17c05397959dc34bd1a98497b763e52e7bc4281e01bf7f120a724bf1ae77013bfe57b62e07dd0ad97ea285715443a68490d481518a15049cf7106626f0160b56c16320daec2079962d2769ff93a26b518f15120a7e23e4aa06168d6c19d2de1af3877c9780c9b1591132958c7f4c1dfa0d4f412dc1454f93ac6b1cff64c38c7557ff396e7e0b8931f7d448252e476204f572b505a8ac8bf0951b4e86d58b0cc8ede420139f5481a0918d6e01fc8fea4350c14b49baa38bbbc09058175dc221c6e54fe12c00c03efcfe39634e9ec75d68bca761f6838bb21c552cf5bd3b25d016dc175686227131ef7a29a5c1f4083d5298e736362e809afdcfd534f402df6b4e7509cd11700a5278ab75b2c6432808b0ee8fc327d47b62c7c708648e99ffcba9d71e9a06fdbf0ca950fb6bf0f6acae2dbfeff117ff1a4ac65d87922eebba61f335e30fb09a6a37faa21a3d5a945a913581f5c94861749fa18709055e3b9faabb035b03a1d63bcaf5cf9c842712e7176eedc0ba17f565a1c5ed39e4e5154c5a301a4debdf3ea382dc6532edddbbacef62cc221d8afddfe7dc2637552369264bd751aaf486af92bb005cca55a0ca1631743917aac2ee5a37b12bd812e816131cb42985875728c1663b917c27b60791f708a14473c6774fe9ce2397a9b970192fdff02dc8f92929ea489536585e550feb4fa7ecf759a78eeba08884523d13dffbb280fcd9d63e9fc2e9c5f3d7bdd0b179eb25c12a05b2b3ead214d908ffb7786d29eb81f4212acbcc6204cbfc54098237d741321f110c977e10bdbc262d7829218244bfca2e2d1a56bc6d573ee37f0ece726f35b7676974b6969f448a1984c05c5e3fadb75a81cedc744f2a6e5a2ec44a253d6ef341c3c40a423a15d3d6859ec5ae60c70dc4d570343d26cccd494e777dda8523713e662a7a5e312cdcbe20d5a799f8f15cb50e49daeae922bd9d12e60f67779e1cd8bb410dd98995ec498c92de060a3d747419cd2fd98efa32257468516372800f6181db554f7a7d8748ed1d4aae35242ef47fc60d7561a9ddad2faf07f01e95fb76c62940ef5e7d0f9bd0a4e19c3fb87d29ba4821d319173e72644a4d61563cbf0ba0a3fa64e5fba049184fa3e0147bbf00b27ddb676a6f418e9f7d56d535b1cfa0993866201a4e3f26cd3049680b11f4378256ffdf77cbb8ae54b657ac3443c4eb7f58d4fd22057bd213b69c588a4d29258c09239871481119b282a0f0d617631f280f4cec769cf9579a9e8de471e4f1435556f788266b158bb4b0df30271bd563efd1449aca03199b18070f94bea8d132b8d74de4292d7edae3a12b411f5c678f223934f8fe93fdcfa31c153096ac4d16ebbb84fab19b3d70c05bdd5d2fd1dd6ba65b18e44ef753bf8a75d1a5aed0314c28b54e9a02d087f26d77d9c7f8c8f8116012960e27741c344810d83f89a3bc8010116508b0a7d9f7d5c0cc376839282da687eaf4309093aea1a7c2f06e95e9499c3244ad96416af48f2dc59b9268dd3acfa0b25889db251eb6abeaf85a5b2190bc071727ce524abf3a9192c6d2c1a668a053d3a93679c4abcaac98ce08e82346d150c1667b6b5819a1bc9485e5daf774120b3ee8ca7395ec6d1247a617cc186e953b574161fd85e92080dba7ac547abf7cf4f535d8fc51be4df5e2db916562a3c0b4faf03314afde1cda2075274f38ea17e5c053637befde8f713e17c20167e38a9fba732845ebac1a60fdd9ccd6e6e8dc14a0109a219e3164a8bb8a24eb29e42a80cf9a6032d9521bf220fb3692396daefc6e90ed266c3a6ce371008b11443d40d18f1e9c960712416b74715863474fb0817fd41ed4ce946d0a546edaaf361fc38cf33880d35ee9f30dfd1e405795739ebff77df711a3b97469fb0757b9b3cdc007138951d73e29f9be45b660285e62edaaa12ed7a569dac00913a2a5630292823f15f246e8316e13ec50785eb24cb4a554599b11486478e9f7ab0760bebbcab022fc6ceb4e325597f18ce5038ec78513e555f37a197f7ba60f3c4294112c5c2b5d54231159489ac31860a78a7b967da4ffb71cd4ca64ca0b80db7f93ab2d3df64bf476d5d4dadb55c3904d40f5395d2e39dfa8792073626bd23e6fd32550307f9f56ba852929904ccf867ddc07aa3f709b638bcd0d44f2460d6b932423efb551aab7b8c0dee2c5a72cff4337320725eeeb8d687ed623ae679c903f6d8e82b757ec1d6c466f1162e9c6e0f16c98fa7ee8f5723470b5a76ada3e66790c7ceb12987c1c08273c1c72bf2b38bed5ebe32e3c68ee51f4d5f132ee23067a6d6b64ac8305306fc11494fb04bfdbec36b1b764b9b411776ab828b11207360c4ef0d50ba509705ea855fb74e5134d9c5f182738ceb57cf79d8e27973785339dcd50cb7fd23fab70a2576bc4eefbb95c57e3604dc629b099434397764519569c16dacada32d59d59d139fe82998a990ba7cfde1c8bfccc7fdd23f4b6a4694d1ab96aa8952659689e710fffc0d57f4ef3e12cf08ae6aab3c298e23cefde2411cb6922165c2b5f27eb253fc455fb2839b0e93a7c2425ce94e552c7449092d306c62ff73f243cbc930cb76bcee335e48f28e806b810d5445c7fe9344e46fff72ba145e8fc7343289938475c3a8d6bec8c5431afa84e95e45ea69106daa8334629d942cc79e8dc5fc1f31b8c504453bcb68567ed12d86ad4b131ca6210b8fa086248e8dcad1566d4a39ab30ffa9b35f08c9185ae6c6e9baff2363774e3f4fdc3b16118176a12d2d37b6d086a13107d00edf782a9183e8c24540cc386ce474dfd02212ad86b3c5828f0f00552bcc5b0ac33a8f0cb368af883e5cabb5be3c216b3190eab5668d6114cd56a274bafe7ef92416151e74da3d6d099797642ff271446278d426a6b95daf53a19d5aabb673574523e86d3d92e8d5423aeb0b36edef3e5af470ead0b3a696df05df8317aaf0df943d8c7cd0d2d5e2787b467681cd1c1702744353aeac3c21ffa2daf1047ce052f741a64c9eca817510ca0b3752d6ec1c651335b428b7b7a8b16602b75863e24644948003c0363b875489e27eb9ac49ae5cf411895ff4bfc785785093de23c7cb1f4489193383a7cfa99335002e1a8f814083082fa6e393e8d038c2a0f70017dd5456d21a3bd73cbb20c9b4e328220ec065142e2d71118323dac0d80fc2f18da41b7391f70ab7c7b1df38d1ccbc1d8cf07677fc0c74fe766d12b119f4cbc6978cf51ca2e41726e6ac1f2a45ee583cc0b1eef4ccc2713e6516b4e38c20a321d722099f01ccb77f8e1eb566892e2abdd8443fa961a6817cde97634b3f14d416a4ca2715514ded8d86275fae5e5ccc70f4e770585cfbca4882b3abdec4f629138a3fe74a584e83c0ea1d572746733d97a80041a4c709f95187e16ef2afa44125c5e778b2801bdac8a863daf508f044fa7e160c068fc6e9f2360fa8ce19ccc11ccaf6285f58180849068da8e13035c138729d0c0d020c59cb6ead149a2019ca08bf5fafc2110030b71ad7af158cff8c937490b82855628a701f0fa2f265726b7ffe97bce702b62e1050ee6193b0eaee30eadb47b620583321d017b8a98c453bc096296c0725a60277e9046be87305c5b72b98ad1fdf6a28ce1b3abb24bfe35334ca1587a297b58e687639c5127076de5704148e99737f8eb72bc65fd32cee53069007c0ba1cc39abd604d6244863035d137affb749fea92544488a80682d22e8d1256536398b7334f64abe56458b7f9cff88404098d09ec393cb7aa347857e00c31d7b4a39726cdb30fbe28c5cef3a2ff6ee65aef466aa439fa32715e473955e0fd813592c67ec635469683759218748b38a5a2ae3d84f204fe1299de2bd61a783ee1ca9f77ca35d6c1e1131594962a5fe52d2df4c5001f2fd9848160e5eaa7b9ee55624921001ae98b317cbd8721c65e7a722e2e9693bb8eb0fa28213c5f5033bd296ac6dee2569a8490d5e361c49cf8f1a4b4ae4c63aca0bda911e4772236498c717ad7ec721c75df69cda4df052de9b4c1ec7ee801c6bece58c737e417c9f7f2bf478b2dee9bd9a4bf29f7ff1c60c426ea7db14df501b2c47ee0be5513a808baa749aba6602c272fb12dad84352edc1a8f0552c4cf8b6616b194339ee5f49e630ebf8403c54043af51980275c4d6685a6bfe0679d8284e4b6242c518796dd09f4efaed12b5d10fa8ce37b29eec1e6b214e9c1afb43bc4b83f07d4021fedb98d42a1fbb43aa1c5672e64a330df3479da1b566e6c0fce9d8ef03842b9a27b0d59e8fbc502fcedaa4b7ae2acc96c3afeb7f399c8c9efb1975553d29a26777d31f4b26eca50e5b51a3f9aaf69c50854d5a52c5a88153305e538d34a145f39a0a4a5db7e1d23f8cdd6409333da2163f7cf027a338a7fff9fcaa06c7b605a9d775020c5d143cc41ede5a9129daf4078cc5400056b2a1a52fa20442b64fe27c870296c2856b85c3611c9d8c02863907609e66504421a0aeb8785c5596550560a5df1c9dc619bc06d71663c819cf473cdc47e08132db0565b5aef76a0c5ebece694767f07d0f917c63cfb26b59778d9133467f6e8d6a447b37265a3e5dacfa44f72fdac2452f11b60fff7b6b307098369f1fc6e98487bb858a54dfa34b66cdc316b50b4d36ae036b58d19014d9ee7e1e63556e36f629a4790c9217ff46167d50044d5780f849faf40e892f86ef52927fe2c87d8e26fee235965c31cae9d454734b1ad27ea83e2ad0c9b01a3558d9e656c4fe469d4dc61df8734e6413c8b328bab3ecff1d88265821e5b88f677655bfe027f2eb05f07296e7edcb89fc8d4316373dc36968812d7c2e1325c6bab26ad922e9697fd909fc1d8960a9cd3a6e4f8bfe2ce1be1e794247df7cab039b5100ec63f501ad220945e84ce54ba796e02706a929c8793071305d4472e7bbcf99e966adaf5ae45e989529fe8a061a6eb01654d467a91a467bc9ea0fab81a4ee4afca74f652060fc38712d541eb691345bd64ba0e61fe93b7b8d3a1517f020e3630f675dd2dc05e1add7056682dd8eeebe262334bc45d79db9760dd03e2feb6e399c0f2eb6c407e63538093199c4bbb418d987377276902e46d6c8e0331769a2dcfb1bdd77f3655796a11414bc5bf23653ed95587250f6652a6afd85112eb067d17a4bcadac6e875f5f8ee53c4e53034a59a9dc782c74eee6b1767270d1ad4f914bdb916c34cf2f584413997a3aa7903805d6db9525a2e26dff147cf1615be67742c732a0af59080fc3e0f6c8c34200fce647de716bdb9a0c97becab09047615336b1f3063f99131e4fcdac2aad9145381f8ea0f368b32a254473a8d6c13783a0105c0984f2dee1aaf04e56d6c9455e271b3ab7205d2e2a8cf63656dc2fb6b6342d84e952328d0bfa54cdaa5596cc9628caac154958663e0c2404ce36a4f55eea3f13c9e1afb9e99a029d8877df1718c50db82808d38eaadd1f084ae12741e9003d46fed7be5ec9492cd8d915e8c0cae9f7b37c11994c2256df6d92fb42932d0a5666003cfb8e591e31caa2a87a4f329db046c6ae68458935604d0ee27c1b189bc036c2220dfdce59ae41b189edf4df2521455cf2c0c40f5f15bd1144564b86c3d613dd25435e7d859bba1080ffb5f15047b8ccacf1b787e68b3c6f09111067b084e705d902b01272617c6094302242ea71640378808be169bcd3873842d5f8f5e7d3852a8dd1d830462ab1169e31eee0e4ea478216527d5e42d91b352cbe7d4a7dae005a915a0106317fb77cea4cb9cd64a1df1c558608cad91b36b530fc4488a1f6e0e6a6a2ae75334e277c7bcd991604a1b8d5bc2dc3ccc19f57aee4c513f50a68cc632ec6794978444b2274eeabb24a01737f0ba029cb94d69601dc25de29eb236cd6e116b98779637ab4a4b6e1b4f4379623649d597926298c47b12dfab7caa2d8772d584e8705f654aacc1c547ae0169821158eeccea6ff5f0e7e3c9eaa7f9759a4f3b026caedb2d5d11d0c6e8f1b1c6913242a70d6f7cd653b33ed7433d998271b9a6128153323e124009613d39ff818bc48427e0578c43fe6293362eae75a2bcf9bc35789628db7f48452897f1a792f2286bb101ac1bad2800886576072d8feef4bff314abed4b1b5d2330db044aad4ac4c5ecde52ae7daaf8eea8bb87dfb1be3e954f107d89a9413bbec70358169b9edafd1f19f75f85848f89ecf0850cd0a63eeb55973a78d6b42355539d9905ccfa7b18400ab99d7156dd7721dda7b55767642e69caae3c891663ebb74a606854ee807a803bb173dee860788d9d68426f836c406e3e6cf3236f6a208b4099ec0711977f93ea421812a21f59df21efdd42c2b423ca7bc7308aad77c27fc94672cd7c5d361d8a3e9f1e14563c47ac3449c6aea00c357ea1b3451ecedd55c28e49984b91d3f142d4fef870b89243567b5b47160e8bc33702b711f77e4aeb1d19b4ac204aae996c56d00f0b43ed4d8914abba8ed9bd2a0c83ec53d0c1fae75fbec3f6a046d73c17cc760fe09a0815877718a1ee72c2305589692126dd8be72286f043f3489d88865395cc0cfeb37be1a735c2cf81d26ede50112dd89edbef94f5ff2048839059af54ffc053c4752601ecc3bc119ac10668c64564ab64a47af7ad17f74f14d7f4bd838c229a6f0ffca2d3c19b5800cdb12732e90dc6b461561f5b15c4bd93e4638fb37a5e6b4c439f528ec3338a7eef9a45b2faf63666ff28f7f18573ccaee615367847af74a27d92f7918f0952482bcb5e8557976b59156dfc3ed66eb8d478427b992b9608754368479139e8a1ef7b8a02256b20bac0b158c0c4967443f370a95655a23c9cd3881d4ec2351a276962fc3730d816d9f8f33a69eaec273143d7337872a6254bba507dec741e6ede203d6bf425646f65f1f9832f7a8b12cd245baac2228f215382383755f925cd801ede29a7efaf265f25e2d8e16fcc04630cd72dccb5b62a96e2d0248fd66e2e0c3a11afb03b87f2ab23e44b6117c6d8c37eb55e5f1b55ac1a80e613f750c41f45600493e4a7d0fa90a7c10e237b759ec51d4928fb3538b8890e1c4ebc406df133e7c3620bbc687f3b4112bcb2225820bfc469f552fd43dbb2007800633813d0a0f23cd261b471ef3b8e2ba22c210f8110b5e8abcb70e49306c9c79741fbf7bc9be877b1191ce23d0602a850c173e56b99d2ad2c005adbe81caafa200444f361f9f5fc2dd5375c2e733ece0737b053f33ff08f3e40df13422d17d6be2bdbf233cfa29455304098ec3efc5a8f6903dbc16b2c3aba0ee6657098a4a55089fdf633f976d683346ceb7f88836f68c37fd1b2895db085a04573c45f88c877c612c5e397ae3760e4cbb59354b4a644c8bbf9418c8e446e61c90830a9aa3e44deb3cab08afe8b56b4f2c09c0b9f922a8dc0ff81698b0f386f03adb03e4697f2a001eb2cfb682a000b72d99af9ac24b63b483573977d3e4a1def46ad0e19e34f2f4b30ead52128c8c8232d95ce58c271904c27a59598c73772630684aa248c8a85049cb346835b31ba4438771d77085b5ee5e60664d65704a955f840c9fe3471eb0c8f2a42121989275f4b23e00e7f440b771fab09c48b6dafebf058c5b10163834584850093dc7d4605f466f2c1bfeb1031540e0d5ec5b0a85eb54f1b2dec7ebe77174a7b2d5005c55bd2fc93c5d0497adcde1efdfc303e6bad8f63ef4506f2e68b9261f2a163394374a5eee86ab6d96cfa89dfe951cb89011fb6b38547cb9e950f7bd4688d6558d777987979377d4f9b32e0fee9727ab32a9530dac913e3b93c0cdace24be50e087a11a0eb28d3e80d1118b2693f78b0fd8ae259dc8d3f8629e2d384c3398bfd1d208cc2362e5e1096a185b1787252ab1b1bab92e353887b2523888efe1893783273c49613e949c9fda18d3dfe42c9af89179e96de549bc2f44d079184490be116babdf065f2672be24e6509ccf7455cf06b10abe53cad623348fee3cb1cbec6777e274a2c04637f364522d39f3f74facd28ddc551d249fca356b8bea4424ec0898932ad2c137d9c9477d6da0fcb0fdb26dd6515a85ebddf1306da0995dfe17490e728942a7dbebf38e72df951b17e93f81ed7eb4f0eef1335fb7e0a71eff2e628ddc3c24194dc0328f18bc4585aaecfd6ca455556bd7e79bd2dba466eee048ddbf57a90ca4078617b36e2833f490612fc1dd18852159b52bed82b125f8570221bfd8e79339a038baf91b30c52442d52ec7ffb1efe6f3796fe861bc88ad06918e9fdfef09aa0d5c1e724d132a5744184bf836525aaf43e7024e8129433e82b17ce361fa4b3081c91ac3e401aad2f8b70a8488095218e132b07ed3ba8a2367a18b0485671ae8ce0e40a6f69dcb5e783593ccb43daeddd1339a2d1b2c2f967d9741ef28b14e516622676999dfddc87f8b68e7e92a7561898db5e221f54918ee6b9b834234f8cfda6d486d033494616cd5f92046d88b2a790aaf793eace6ec8562411606dbb52cfc70b9a8f9f1627e482978752a2a9e6231883fa12bc3d9970b495cf1e1f199127f7ff5248e7d33f9e7f6441a5dfcd6581117d85e2e983867a35b9bcf48b18491355ba47e2eb5d8ae147eddf4fb6d53fd872f83878c158be843a1d7624c46299fd7ac2767028265ffca2d891f3fc9b768e41ed2495359dc703ab2e5ce0764e0945b9d16279aa5285186fe38690bb1ef52b60db0a26d1f4594bf1a932cdaa702aade11b515ed1e9a8d9d19f6d4547eee9bbe41fee70ae867b19bcb8009715ac4831d4ca220a8c0f79faf5ff61851f737c36f7def3e55149c64db4a88e4a25773a27cf1f049ccd2a7fa1fa0ed1e7aca1471fe9e32257873321294969db3192787f0a0ba58269dd9b913a3937a86607799f001e11ee9f6f95261b8ebab5fcd8f2a39984d3861dfdb06e2daeb9e224e8f11ada45e3e30539d70bdfce2bf434e30c5ad9104ac3767c28364030a0a79b877f4ba64bdc570038e35d4cb95edb1dfe5925f26a314faf6aa511baf2e9e458318444f641ec275b949171a4bbdc56d620c86c9313c078f6d48f98c933400f5122019434ab908dff83f77466ffdd8300fe188463acac5f144aa07c06528322c2fc72b97b2c23da1fd0252d320cebc260192b197693c0eac6005f4c4c64f3140b53e5bec2e809a83f23e048070b4417090c4235f15fa43632c58cf29407150bb1a319107d7ab74a177f199d1dbbd0ea37c9c29a7d71eb64a0a04c084506f8fdebf01e2546989ebeb789b718ba16fa248e78d855b37f10aac11b6b4ef8788811912b47560fb4e89a35467ba3c269ccd5a1e841dcae055a7661d390b86b4ce6b947ea4985e3ac319e2517d79b068d018cb3627e72a6e413f6a2a0b21eb1ea725aa347d4ea33b3371126700507d864b29ff764a6c11c06a9a3e06d0e4c3d665ed68b810e52bdd216175506d307850b2264e91cd55fde5bffe7a4dfb88370f56d31345045011b652a29df6558f3eeff05687ae7a2ace965fa04eba4b69748bc1959fff73891a97120ef224b360ad97fca16848abd6473919edf9c2f10d2b1bc9c838f9face2b9bdf1a30904660674f677327d4bda0907cb58753887bf8112720edbd01c955cfc7d232e62cc7b856c1f77bec3ca6e5b680894d4414e08f604dfda8404ab0fbb23d6d24f7d5d11a2222b729542e23582a8f16cf4ae84312550ed2ae87d7548e28f9aaa01d43d8b9bd242749f02e62843e63b83af7db50ecb0889bfd8ec4e77ca7227d73614f8872d8fe9126c48a1c09ab02a4d6714b3b373746de0e0355182c48ef0de6a48f65936b7da6b2c80d774e0e26b9cdf195ce6733189f36c9d724af4a1170841a398f5d3129d2a16a8e2e826631e84044ec1a6af103ebf17659355c8fb89b52ca57ec58297b0b3a0a48db4798bc2e454d6f9e7e423fc020d4266a8d1e23db560f5538041621fe867d0555dbebab6cb4819e032ffb3c6a30631f48e39fbd08421acea93e0052cbf88b1b825a8dd8937d6916cf9976c9a20bd6d76c88e2d340e86dba2d06b132d00571331b8b0c49f46e249f962510370a3e928cb44958d1e82e61e270ca394a244460e52db8ddf9a64be28a9b65a99ac81832e43bd198112e0fa1a531a26b06c293fc226832d835595b6a64e29a27186ace0582e7f5dc405e4ead1194255e508b5edd717695b97efa8995ed21c6f33e486c8e685bdc814cbb975848728dec309ca711f6fe33a1050f9bd06d23b079761250032c8c998be3acb54b36e3fc36859d9f984c03f394b3a8ea9e506ea7ad7a4738cff453221e8771c2809971871ec309b8e735b36cf9c148b4141459f381e8b1561152b596062bb14ac757bd9bcbcd95bb6610fa691de32bde5c87d92570da39dc1bdcb56230669386442581f729da2f46f22251a1b0fac2d53259ae86f7949d4df3a6fa412f333b00ef7a362f666346135cb7a03046665a206af6bbcb1643e390d58490eeb840ca3812ddd120762f49fde7043a77d7d531e168b8b633d3c2950baf188a2626d24d1fcf71515e91639635ceea33cc3fb486bca66374e1b7811e5aa3b85dbff62f377798e717bab0a84530bc7ab40cbf1f532d32f67e074f69ce2088202db14ca8419eb5ab4da4136083fb5253f1247a72c3992dc6c20cacdb67376af4605f6d1fe87bc170c2f5bde76d3ea4caf085f95aa4304df07154e3bf3bf8061342e74330ccc62d05091af6eea6e7bce855f1a8844be05b1677bc8e9e2bcc4fb87ae8dcdcb036bc79c747c8da0aa81632c12356d0bc85b66d11374ace2225ec6fa90eebceeaab0598759b833a40b2224290adb91c0ec9cf1d741d37b0d8f8b7d76f9e462868cff5a803763a4c11dcc63506b9e89e4bfaabee82fa7bfced753f32a76b66e3b1304a8b23764491c12ad9e52694dfca5ea864470696bf1eb71d47c9a4e9eac38871191a2ec0bb72d107a9f1ce93fecbb999a87cf0f9b0a245a54520b87914d7ffa048e3de0d00f6e1d77699d24c8a8dc944386f8e047fb08200e4f64cb74a843682152e602c3581aa71f4682d2f2b5370e46b7abddb62996cc2821b5b44962d141d8d516124c1af32ffcdb18c466ce10acba8b2803e1174c98db20d0e842760a7a1165b3145d036c2271dd6be423f36c2a4ef738f4349c9e0a9bc70cec4ce940a59e60418b1d1d938fdf462d1f176d12bf05140b78c4d500eef184e17968280f01889fc66d6f66ec00bd8fae7044b8d7a1273ee2a5860bb3f27f727c169dcf439715e79fd75b7f30a1740101650d906c212102819224c94afaebadbac2b9c5037951b2338754fb18e841a70c5b4a0960e36743824bade286f997854f82d228077d4454887be3e71722e469c738d05d9536c012b95c9678791e27d0d27a3f58d4651b96425e1c5c11b5f18f6cfc0cfc673bcae3964c83c8b0932c564e8e240c33d8526f8a7f56d4a9101dab88499ac5de0a3838b704837f98c9685bd65e15058870e90ac648a803023a747c4341faad899ac1e43814f35ac0e29a372429417b5b732cfcce4ff8e8b0bdf123778f4be788b5231dde93196d1a1ef3999b77bac415e7e0e0be1caeae9f8805dd9e1ac40dd88af01dfeb00c035d87d16937529c9c6afea4c977f862be5b4f7425757256dec6d4be9d42f299ca0edc03c71356a4c5eecfcde85ce9eacc6584d4e4b46a8e44b23dcd5a0ef4e1842521e632624aab6f36265eb85b4a00b3cc2b60119808e2a6989b7c718accea32e668b75899147af5434beefe7d1e9ad1b3aa04f97c69c26128c3756f5878ab3eb778d10288dca80d1372c38f40b8839397fc9218b5395a59de0562a10a2d5420c582107e95a63976da3ce6c91bc95194aa7d3d5f1e453d7a3305b81f208604ddd1362e17ee9a407a0591c013bc044fcd987bfba1b1852d046b377adb321ff5422a96659aab42b05a4fe87c447dc17574f993f95961da1080b77f194279c0fdde1c436dc4cbdc46c5937065380377fdfff856c20e80f3ddb3fde742f5d4ef7f241dfe60e4b81b33ab5b35ba305df291055d75f8518771d0af80ffa0b6d91fe9e7446e4453f1de911c2e66a7a8791e3a9007374e70cc38d39925fcccb97f95173b4ea390cfc015ab7308e13f5ca4ac32e41da70d9b1c6276fd1ec06a4b4837e0751fd1ea2dee72296786b98048149c465365dabe4f57d419985fe1edfef912372cbb47079f1e9d83d88d0e9e96c89a0d945b44c0694a8be06c4d9e25ad951e7d102c8d0b7def233dd05e2a5bddaebe85b8fb1312eae03feecaf17aa08c365f3c7707202b8b2e53dcc1fb119eb6588e47b71fc90c1372c09e2d2bb526c6feb60f77513c88a6e2c5405ed8e10b30fe0b5131e09761830744564058d0c22103a048bb6baf36f6a9694a75d3bc9a8a5eca1bd3ebe5600ad34a353e772e25794f1f9b08633955f88b0c172bbd1fa3378461a58a97a8538b566b072e8d9674c47353017676130833601464dba946d0e61da5887246d05f6ea8c02eae05feed6be2be87691ffaebb41d2c0c218fc4dc919eaf0313c705363063823c6394b2ee1191ed5059515511978727280d0a50a48e250b60226dc091a20b08978a58e5ae88ed00f0203b337641b19f1d8d60c40427746c1e9b500e2adcb8c3353685b2f7f4aee8d2d2bc4459623d5ca416d27efc4581a229862397a2002461d0e3184a8ca9da22e4ce811fb5e51321cd5014ffead60a10d085acd736cdc0733478132b3037db9b6a87cbe9d9f107eaed19f13ce2fa94fe8f2a50df0fd1d5351fea5b05cf74de1478f7ed17eef2ad6e319f0dc7d54c3389b56606330358f349416404ab68906e8f7d0d4a466194a6b92b1c97a56773d700bf8f73f21e7271d83d75c85e42e9b0d2e42c3443e9b4aa1f3455207b3c7798461de8421e4dc09a59e6f1e369670bdc5553d0715db295ef7f6a2aebcaac7d40d0cd32c1d01514bc3746cf42e6e6cea82471f044d6a28fee19b3b43a0b0d11b8c0de897a1c4779144a743648fc053c96481c8ff1c5a34ae0071a58425588e530c33ee746372f27a8a3fcd61f362ecd9e3ea1e6f8ec69a8e59fa1b582a707fce5046fc0da6625bdadd41c43705351173d4678a527160dfbe848bfa03efaf7893752befec51d3bec0ddb14b0034752d115bf07aa2e87c3790f11546b0eb431f144b1fe58f8b321d58d52063ad90ebc5f4ab3cddcb677c0e88af862477a5a27233e1f8c12dbceceb8d026e77a11373ec10b054aa3c3300833265925e05e5333e9cfc65ab8a3e54918d1798d1d7cc6fcc49e97c5900b675e8c45e39e2caf07ea86770978ddc210dec0a815e229dc04e2403300b686c3e574490dee043bbacc6a81396b796bfb483cd5c3bf8fed77242c5fe23a7d7dcf321d143199a369ec13489c95dd2bb3aca58786740555de1620d148b6a5bac8017697eff871217f02df76bf4b08b31d4ea5a2557d8361cedf9d18c0114a67036e29e6d367ab46252e2fdc127211ef5b5e397832a57ea7a02ae8d3995c267b1789123766111b23a8c4b58d4551da144e2654e300d11999b845b1b3d716c2a7e5a75eba3811010e51aec8c3d5627832378a70b42828fef094b17574e27d3b9ee931195b27229494d5267a76fbcc379d807390dc15e51552e4afb43366e0a71999ea318960db2cd810da0232bfe1de66ef780132a949f0ddacbafe25230a8f11de29f52f61aeb7632efcc4e09ea9ad236f78e2deeca4061c337b3bd14ea77329af0f78aad1543003632a431f66dd33a418639abf0cc1560006ca20e8258cbf437d33bc348bd3ebc090a0199b0adb144e686b74e0bc0e8e08ea503c6b477c2b89b66e8058b78f1054793a45c4c69aa6e42e3270b8a30f924cbf855ad59d1243a74c77429ec872f633354f495b1b34c7cb341b919aeeb0eecfe596751331ba658f4cef0791708e4e6344dd8121bf9a1175dc963f32caa1dd5cd3533619625b00f4e9f468468c4342652991af3985518b3a5f666c9ac8ac39ec499cbb3ed190ccb3e4071ce74d95dfebd9eea088e3bf134b87ffd6a4b5c2c3ad5ec0e36350905f77e4b3aa080276f7c47cf6547336a6e5a0549f9221ab923aad3372c9781cadd2352a9502008955573e5f847441434378ebf6939fc9cf05f57f6fd37a97429b475fd5ccaf13a21daaf312625948f15b0225c402c084cc24fda5aa55311ca642b634961632e78c68045eb0ecf92589b3e7e1897cfb615e8f4397f6f2911cffc77f604950b12da2c71227318c8fbf898b3cc73d8e00bd8709546ca01bfe9e6d1a6dd7db795ecaa2cd3f351e6e59049af5536af532f81eaea4d06037ee095039339980b7599f6e6204967ae7a85effb224672539142b2935ece20d62aa660317c72f98683da76c1097201d8e6f29e13033ac7aab7c6818f18ccd652acd62a0e65e907cccec63d227f9d14c28be654679fc13245ff70459144f2586ccc27084a1f44fc3eb5dddc23731bde81ea3967234f987c75374ea9bc575b417dd39f3b2c252cc24054122893c4d173d00436644687b670d25aad67284bdd89c07099800d98dbe7bce47a7f75a101f78d4d1dd526412058b73318a763a6b298d5322cfcda8edb59a027df177fb966743a29d340e8b0a90dc3100ccced594ae44190fb2896b4cda15be2f7f89c401af57dfec29e094c2cb9598964d0ba69483eec7fae8dd6365ba0646b71b06ac1e386a0d6688cd81fe6502152aabeb467010da1a191144304a3e3b34603c9bdbfe16d118e1dc2f977fd7d8521b8c337befa9991f625691b5bc1cc46d22eed1a2bb444e3940876e3d4626635a4676593ca3923d0299ed6b1a74ab09e02773d3da1928b4c3f599663328b2ba38138d18ec76b8cd7688cc0e9b2d3fe3f2f23ca9380f80925a62906179ebca2887023e2df87306400cc42f5bd20e14b33efde50c0cad0716d17ad52f41de7e85d5b0b71b40012710e4fa8c7ba3ed8ba8805c9561bd74be6c6168ca8c1e643f9e3947ebf2da4f220a25984148322cbf2cd5dc3772dd5c863f6ed8f2b99e2345b9b1cba50de8bfc04c7d782154d183a3b9918164c361f7d8968cdff346d871e514ff3205151735bfb67e2722a626124cd04a8b795a85cc3f0a97c516780fd35af877f99c082824bc7d3f7818f9e4202b52cfccb7eaa743c11eb9a0ff8e9957da6150283f061e8469f3fc4754df56282dbb2bf2c9396502cac856f170b1491695d8a1a358a54455ca8437a268feb7924ec3aa40cc77b6ebcdc704a907c4135e724be5b3b3fb2e5f76c5bbbbbed1a4e0bdaefbe074d9b430e36cc743e010435c0754cf0be7849cca91c68106e33b003a0b4fcf43236ee6e47cb59b11317c36594a7134fd0d7d88cb2c92ef2ce8aeebae0561478fcd69ebb0199ff4c1fda3cc6e37fb6ff821c96f660e8d461d90eaa7e743deb52efb389f3c88a46bf3f74fcd4e24c1d6f0d16a98e8a0b66114d36ce82de78ba05ac49c3819042deda3788e836133df2d35e92b0daa838561c16a3d6b26a42bf32a85b11e54adb198e09abb8adda092523dddf3a7b6535f74fc3745690ad33bb5a87956ef20c1b6c33b8b8775e92d869143d584d169fdf01044d5b7261b18172a91e338ae766ecf271d4930568c86ab436a697e01131f81083ae4d65af2ae62ed27513464ddd81e8ad73a995c9ad53c3149577601e08c8250314f6fb144e123dfc561339aaab39320975652f99eaed93692da12f914dae232e9f9b165d21a06ebf3fcc2e053b33d5f3359d2f8a523ae964ee8e208fb3f5533a04902cf161789830c5dca437f68a7b4c18d9c4c333a5ccfffa21fd062c46e19281edc7975a8c14febcaf4c10665cf2107c4f72073aed05616883017c94a75c10f4bf048342943e9cbd4f8f45bffdad9e0e569027200ca65144e65fa020513ac1098a15afff3bf781c73406384c6341839108cbcda90e80c145e3b9bf8d705142d575bf9066c92675292200855c3ceadc7ae6a1919f3eab5b5993a9f968ab5fa74366dc1351d032e7f11aff68a426034b1133e75ec7de022b7c423b4cf25b84f3368ddbe926fa8a617f2b3bf23548916ee5f5442c13fea44e9690716e6672c32147203b28b13f1d0202471d037ebbb9faca93b401809475be471abe7ab97285bd6b4413375335e20700c0c524ef7b4655b31a054f5f319a1fd94f8c690c3e150b104f8d0f0333526f2ff3852944ed24c70b855d92040001a9c2f4b65b673624c0530967ca9a32e99e3694649f84aae73c816bb24e11cdd7177bde0eb582d2474c7ab8717e5d38a82326ac9d12350545974bd65052d9030fb480edd806a9e674b1ca4c116fc9fa967dbdc11d205d80988b6221574d9950e264cee74dcafbbe89ec613ec28a11483afcccd308584d9e5d143e313bb879b14ad52ed01aeba4a6c5edb94d9039d85823ab46c634f04e8bb7710488420a984585a81f92de21bf9e4d21e7939d7b05d9604ed0a2ac46a78aecb947250940901698be365eaf1effd6a887ce0ca057d2f0086fe8952e34998ee7f9b47c00b2406eca883bdf968367f1445ed60b61996301b477f0e1ae2e4e0fb5e5563ae93ac207246e66840eaf9139ef57d3d93ee08d1900e1ad19d13bd10708194efd5daece8ff83f7879895655bf5e653411aafd9c600e6e14d473b385fbb7e720ac479f0f7657be9b89ebf0d8b3a90daf2ba8a338d602796bb321d2c3093cbe048867760f06992c43160df1547fcd56ee1a5463c0cf874f200aa01b85603412c3aed0d8c61bd9f5737f3bd013c5293e06b45afbb88c489fd79f648d4ad2e3e21b4d6a5e008d776132d7b7e878f201c1ad2b7df6241578f28f1919a1a6eeadc9c75d71980c8e9457ff7d34201805fe7481df129ae2554b3ce74f1e1f15c09e9a7b73f46780ed99359a525b6228ebacb0d02e822469187a75d56e05c10a3de3948fb657a4f7ffb0b2787349ebda40fb43b733cc5b7f04c3486e1215a4668d4f232cf1d111167a49d4a62c0f626134bfc085c3006cc55367cf7bb4c88baf80d72c1e3fefa7404497f2009131c3ac093053ba3bc5152c40ab5d04a74df4c6f416f5b4b80f28c98811cdf969281b2f0e6b2a0c47d42cb37f575f0d8807f5fb77ca8c4b3ae60386daf1ae5e9de0102accef704bf47a6609513a442d930cf3a72455d25f3cfa931057b8a3cbe43a4054f420d5172f1a78e7b5a47cbe75a623bf8f3d02598a299e2315a8bbc1b68b64dfc3c7a1afe8a9854079ea85c552d6defea6acd75f88212cd4044860918d1b5329a49066590530e0a188e506dc73ccc1a386f03ceaa2e5b19ea4e4b88a4ca8c5a1608a302a714e145cf973fcb2bc70a1d1a1fc8bdc744e8482930b1f2660e0f4ae96ab522a95b3484fcbf5f5fd56dd4c1714e65e622b889fa5150fa3165aea029bf24abe1ac4a6ec741cd061d934e01fb89567f0e0b091bd3a1688a07836de35d463a3eb5c1c80b68009ece9fdf77d65a5575e0ca532bdbca30ed2628e2b48020ab25752bfca2ff232e938e052846b8a51ff4d902ea734560a808ad9bce1a9e5f0c3e9713090b41f36e923bbb104931fc715da7b3b157324e959145dba35f610b777416a9aeaa5e1a15425a2ec7094acad805091f47dc7f93ebd1883213317e373242d246947ac3b7df5340a6ab4425226071b86dd76d58666090103dac969331cbbdb097d340621da134f62e76c233daa7750c36ab21551cc047daa09dd3d6cc504614f8c9a0453648ef7cf34d9f1e754bf22b65ef052f9fc4000627fae577541ab36cb34aa8d8f7d69b1fbfbf71a2e44266eb050112bd2c58e4041ca556f6e5d90b55e404b9a0f41fb85ede306432ef8ef3059ff5296c66174bab36ee6b3394d77a1eedd8bb955088c82f9a38ac1fcdcd10cad500d5890ec1c2cadeb2443d60d2b9cebd0c38c4c4bdc38bcd7c81e26680dc68e21a28d3e962519ee812eb48ac81bae6ad9dd47b5f5813c27a6249a01747ecae746b4260c51024858ef438edf80e4c5cdd67f34e68b78a79d8d1fa7d3c299a55862246686f370455390fbce6997492ffc669832d9b8909720e7d76cc0d32a89796cc465030997df40997b6565eb07212b042f328a1fa5ad8bf2be448e739bcdaa162d8d68caf3a8015a01b61fa53b3436e331b9a5899b8ee17de83c38b3b26b7566a22041f9447989bde61c32f33ce28714636287cd4263a879c698502e04817b2c7faf2497daeb83778b628c44900d92a9745988050f58560c5b4e33cbbbd0f83831a46db39ade089203494fc9ee79d6e0d9e09df28e20cef6eb89085f0d40d36f6aba3fc923f6604d310577447b4d7f9ad1ce47a4366feb5b0a2797df525a3b1ecd7fde671119da83fcc05578ee968797b40acfbfc47f1f3d523ce70ccfccdc3304d9531f64f2ab03ae16deb7e5c47345a015d400198c1d3e9d8db4bc1de99e41ea7e66eb7271ec901198bd66852c9a182d7e2dcdcb5897818416b1319627f55f1c7ae09699499481e54947725084fbb6fd6b16f637a809b1f5859728479fbf5e18ad25d10c7193254b242e0d6d69ab759a16ad00f1c498814fbc0d85bf90bbe0cf4a1af0d9a4f56c5f930f388edcc8ea3a4ec18fd1fbfc47f25357c889dc83446c5a59981de1167edff9cde060c10696d5f2f2c8e61d7f6d7113d8bb1b89217dd937bbc5e9ebe72dc12abba2aa5fc4e10b7a20cf7eff04d89a7c66f9fe412c3c90112cee28c9428cf3ee92713fe3b5fe4e6e25ac89fb2d9759406e3b22d27a0f026cd23809474ff60f8245b992dc1c5ce8ece8434d6d7f6811c6e29e96af6354fca085032074f760a01692bcefc090be6626bc2a2637a1e470a80141776e8d225158943083226ccdc34f713c546657374fe20879b03daa67e035e5e25c484f901714dbf68a6ab91966c74fb27f8a4d7ed7f84ff63cea7c06a4efe67c8a9da1f2dea72a2ecc256b9ff48818a7084d5f70ddd87735e8aa33237f0ed2ebf26d9efa42b9fe512073415275950ff130b290b445016b7c026e9d7228fce52153df91d2684684b43d38f5502a627ce2c02296c9698b0691b82bca8425d7a885dfbe9a9c0f1cf09b779a0c1a785624b368e9fcfd439e58c5165aa722b5f389686ef6daf408612544bb85bfd6985095ae06b7e31496f92edd907aac12485554bf9c1c3859200cacfec327ec6dc31f40f1b71f43995d6cf5a6328a9716a839718625e4ab98b267f7eacd741b51d10963bec81bc621875ee4617e8f3934558cfa7b87a824ac7894fc00c4a395351a45c4b870863207f8477f4bc714539bd1729d1920e8f59a5304196803ae862b31813c88c6a0614fb43763ee87a580ba8cc14cf815c4d84c3901495453d632c56a5c11b67d8ec8ce1c4e650ccd533755de85c307c8847c6bbc25aee39d1e3b4098ed1fcad0d890c2ff42013e4f33d1ac0a7ad743fa11a7b50be165b64bcbf1e22f3ad7f270ea40657cdc17a13edfa90e99959bd1a379e565aff8af3ae1eabeff2ec202c27393f43f887afd3015f34a595e7c52ae156ecc8ebd0165e7a1ca94505ef464c8fe88253a3b8fd8a1fd91a84a7d09315a2cc8c88eb8e8bcde8a7e749c45b6211ae0e203aae51f50d97dde6da946cbf02862ff7ffdcc6d65b3eb5c02d907dff8055a9c5ee759448a5e1d82599b53843222e3b1c0b4aea3e84941802a3a95bc508927161c23c1ab7a5bb12caaba6cacb09b362203d7e6726310bc4ad5e11c8f104b26954285c9178109d10c9bbcd0ec41f7adb779f5fe178c0608dbab216c0b4b2722c090d3f9dd57a3b657f0ba35a5ab2e8b7ab1b7979f0850829dec80f5dab895f524a6227d6752367ac7937270674417bd9ac2a6236f154b05b84ff88d17037591b2bb53c7b2ebec24184109057a668722e710feb0bf7b65d99dfb158bd4dd04863cec6009cfa4ac948c422c0558b2c7805a9ca3e71ad829267f89fbd095f21856fb0cba8a65332189683d9a873021fabc8be1a922df303f74d519688bd39ace340c1634a32d008f7c750e6ab565e76073394afd56c3dc546eda7840c17b6a4fcdee1a4d3f75f5061c80b6a0e10d27afbac62d1f4b4db934140d5347ae6c8a6a5b05d3c68e9e9dd54bda56e85f7372cdbcb861107e59b17500b179f7d2fde20eab1bb2d9bb9e9147a6d83d7ad7961ebcd13a5acdfd969388364e37b2f67416f08bda90824f7f371d4c54038e9fa8657df498dafd570839192c2eb4b3ec904be0e553e5ac35ded047af2ab5df4a8f5931bdc735bac186fbfd65e16a7fc800c8a8e1798b3b2a6dd9c9b9bc131fe867a6cd86da1e888d3d7c2f0ebaacb652e95a6b89a71d32b671b5d4536fde59a5fd241b0a8e09f1082bba825d4f368bfb6497d6da16dd80ca44b07dd52c30b374563de382bf1a54e5a4781f91fcd33f3cfddeb684682a3574d44aa461e0ebf90826197767f1a8d561d1f5ec6861166955353cae70208e101c22dae380fc38f0005aa6fad5c84c8e862cf16ed9e016e09b010d1dc92751c841c575aa94f50f56608f691d1e90815be30602cdb0204c99124a7d856249a56fa96536cfe3c5d6088698202b39b6d5f36e023efe6b8d6ed1e36bd1f34eb65dce7f40c44113680dcaa6fb349e954cab2055972f535ed56c4268b68035e98137a610a835add6600a7f7474fe9d5689883fbd911cd89a6c7052cfef1fe9d424b22848823d288632c7fb0172d5120b47f86cd4909c49c409f26e27cf1bb147fb771f5fc8a94c0fe7bcaa2395f539eb83fafab0877f950527de057a8243136fc45689bf083250698cd0a3853630e3dee10415f73e0422fa85c9ceea2a23cfed25c8ad65e495f84cb24f0470df6ec2e92693b380d15e553aa635564e5a2eb53a260ae9bf900b8572eefc99bace057f1ebc4741ad308f179652e5fc779bba4822b3c7b25557fee6005a2c33c177d66ae4319c93679d8748c41341dd93eac9b6cb1b51a14c171de42a13f02542ff410b2fb821196330a36473b9cb483d38a5eb6894646b38c0b8fb2fb954e0f0c2ebdd41a6515f8b566cd134d7a6cfa6e946d128b4862a81d8722918f2ad932ecd4b03bef6ed51234eb38cb1432704155695001af9ea5f11fa3bdf8ae6f24ccb6411b902c6f1d59babf437f49a796c214b6d6f6b43ec7deb52a2d012c42a0cea7e55ce5cd811a2bbd50fba59b95654b7897ce5df5515f8bc237069f93ce9ac22449d7b1c12cd764c874df1e645c8708045ec415857b91b83419a09a604dbb1c496ac486cfe0c182452b62f5724fd8783a7dbdb0f561c33dc977e6016546245ae8528eaae4b56aa0919b97b34022e8f0b4caa8785c32bb5ada372819669430183da09413d4a8955aa9421cfafce91f089c5120b13f0c6835ef5a18b5805614f2e8edfe59871324f8acd5ecebc3a62eb0a16150ae497977a02b43cffeced88758550e1e98adc6aaea1a519b2293ef03fff37b1b654527ad07a18f619e66a509e8d02d2b731c748ab1e501b5d0995c899929671cdbf23770dbdf1d2d421c90071623cb23eb415e02b99d583d8ca3ee8698294c5a86aee4997281f485d4fdb930afac842d02bccd2c0dd8f50b0c6fc00236d032c758dfa7a161117a9234675c0690b24575d5997717358ae32eadfd7cd09deaf2dd06c7507366a65e6d8adf116a02c03f8f9e5426c0712b7b5901399770beed2275c19ed997fcf249cf547ac2d5ad6cc55d3414212922400b60c7752094c2e9de612b1d75256f98770a4e486dd905a1a8b01b02b2389863527c732d5f45eb5b60f61ed0b21520e54c229ae658e75043a2fdfb0372fab0dd62acd7b38a75b94b45c546046aa7d2664a722ffb293eb87b0b8d0c7c6876395b676706c582d40ada5a56602a6c338c4253b3569da98209fb2afa58cd8bf8b467e0b1ee153e853e08abbaf99327ac1fc183d0cebce1d1635abb0fd1395bcac18273be52b0c527ccad512881250aba58853ffb79583032ec4ba3e5bfdc65521c784ff6886aad1b5daf13de6184d2d9ffaffa4ce0a73280ca03066cee05986bc9eb6a035a719a02259ba370121d9879ce9dbb0e54d1b155fba162f6169e02cd5bab5abb4c487bc6116017e0195883cf8f0b7e33e5d7bb86112a4dfaf24125cd982ce38399de8f01fde09fcca0c529f2008fa6ac2e699342867cb0e57f3493bcb7b2082ded073e614740dc5294c133f32d91d5fa037feba09f5ad862111037749cb1eca32f7234aded6b89eeb420cde466c2e9233363779b9fe1ff71fdf6241051c1092e85f38016bc0ab5bb07160fa7ab34eaeffce5595e0a22e7814f5ace2c7ed9120085bb36de8dffa057be598e6eb4133a4e4be6e3a4b0797dcdb82cbd969bd12585b3addc26315afd94d73207230bea769e10d1ab5fa324dd4beb5cd8c5ddb56dd0dfbc069910b460f5bfcc7210e6f070800dff69fae08f6ded4a86589af39f48dbbabac756ce82f76944a43f86c97c4fa44732420b7b36f0ee36268559ef4d9466730b428a07150dfa384abcecb34e5ddbb5ec93122814499608752cf2bdbc3fa13fb2f88eded8057964ffb3cb719846cfbf78e04968f383d8babbf1e4ac7c718faac3701ff400d32c4739312054c4dcfbafb20686af8c371b5b3f2348627cb4293592d1d5c3b37e3bf41b85ed604023b5237b148d3148f6a383851dd51b60c54f65133466fdcb3aa55031209a2aef9de40ce743b2e4afbe9b3b4e65d4ffd9ab73df4b09bcf50280ee67b2cfac9c39c231258241bc55898e3852fe0a740edd70ef2f7d0d640cbb523a5daf8d37c7ee8383ca57eb49780aeeea31a10187c85fc27b315023f1bf36aac8888483ae6e0eff4d172c282feefb888406a6dc70840954499b578ae0d87cafeeeea56abefba560222b6367c38d8e327e640906bc4b9ffaf0885aaa66bff4fc1488b3de813f9d75e9d72a3ee3534941df21b38c734d8f1a5f171d374796fe6744f137ded06b6c0299f3dd66b32c6df48991ec8aae680f088b68e726668a16fcf92347b7b343f73c2efac20c6ef101099e0f4c4847cd0d96832cfcb0df56c3ee666e1fe2e577ae4361deed71ca419266033cb5882cea15bd999646496d9949d287d34b429aae01e0203aed3f8ec8f53758102d13fbe1f7a1830bb8829860b482ab203ab4a7792be1a1b49f17859917e270f9c2109a00e0e850ac2c762d15bef3dda61d8f603dc765172f6948e5d9ec1ff60d35faa5b7442655c3274d49216b7df964293711ee38cff59401f4ac07eea53edff45d0a64815fd0401269c5992b9ef7e0a19c5cd1a580531a77c37d7c3fea87da3b0f8fae0dcf459023707b1fe82bc2315093be688c918debb98ca204fb2e5697d24f328debe0f680d4847a5c892ddbc21e86484dfe163d558e4db0fc4f154179646f1ab7b36322499bb367a92dddd84269db4b0ea3473c3e1d6341a14597865795f271e4395b846e3382dc68c4db61042f5a4add86d74379b662c5c64bdaaf241e0fc70507e1dcb2d29e462d33d182c612072b271cac4e63c91536364a49262aad8ccca8568f04d853d6be68cff8704b73262146a9bcf63dada31f2cdc864101580362c48201cc3cfe82c96ef5847ad54a39d2098c63c621fc411cf2d99f6d65db0fd3ea0447d3e98e20206fbff0f4604d09728fd466fe2a559ddef45b8a0d854677bf0e4c9c8c829a45ad5a9219e4e0b7707833fa853dedda60a95517cf170f4469eb96775c27a10ee693c9be00af19e3f6f83698c7e51973c982534702fbabf157bb6f465c3580544735bb8cff64ca42e36aa7f2a9bb6c0b119de23d3ab503a3e6def5a8990a89e6c1a7e2578840dce31508fc6ca2954551dd4a4b116e53d154dc7759b2381bbdbf1c8c4e3d622d4479776495f4b8ef2c79eea942762793580761336d04cf566c8a322e6e3db2742e796f053379d6ed56fd49a121810e98d090fe4a1556f1ca501158afaeeeb3aab49c5eb34274761129f65897a9f2e299f9a11349344cc0b18da1eb583b65f8fba5ca0646681e2eb9e127a1ebe4a010671699b570bd4f624693a5951229104ef948f089f43419bd1af5d40f27ecd7d55e32b6f7cafcc56ccbe1ea4b8abe599944151c02efd7fb5b143cb69497bb2cff9b97373ba24d2a56fc2bfa5b5910a54d66390f18fd5d305f6f2f1a8a15df9d4b336de32b4ade876dcf00a4058ce6b5ea08fa7a64f28c474115fdf384e41259fc52aad59c7ab47aae62e0b22dac51d52bfc28051c4fd8a810edb5156247e97f764aa723acde53bf95edc473a93d09fc2faccc145562df3bc6d27f0c2378d32d6fdcbb34c6bb6967059dfed3afe5e75b2ffb082395850404c545bd043a71829eb441dcaa8f383e9edc361cb1acde9681b1b4866cb6f07b46a0a55e82079888d191ab8d68ed52397a54c3bc4960d20c06ac4b2ecfb8d5472e4c94b33a7879eaef63a214dde9d0b979f98416aab5d0565fef75f7eac770b3d9bdc5c71a97df38d4dc55a77a08771a037caf8d11e30f20bad61b5fd26de9abc050b2e67fce266c59c89d4577d9cbe559c575e91f520a8aa3f57a2a49707b0d2ab5aff6cf838d400972d24794365f4f25131c813fb59ec28f2a2a7928d0777c1ac1cc6edfb269fc9a31eaf8e642ae8f3b038121340075a0ff41d1eb77d8779c8394c2b30e5b6e8c15b54b04477c475216206941397db5e1dec1ac6b2401f5e36173d87649ca17f950fe34341b6fc0b77e800993517a5931b72a0e9e2913d0ad5209a347c8aabddd6405e62237f7d345c16c3548c9bf1e2f393739b0790a0e803c2b3d4bf1a11c4b6260bf63fd452f9bf92d28d6f42c32f154ef2dcdd415e56ca7e1e5f733e0349052ae373f8dafa49be59a678eaef546e6c19beb4950e7d78aa6aa11618ec3368336c66a2c95d06c2993bfd7c7fcaee60c95c368043411cfc02b074bd059c72681c3e3e789c4b4973fe5a84dff5bdca6a59f4c2094b8b2c835c0dd0a225cc58a836a6af3c76359b95b4afcd89cbf7082bffb2ee2d4a80b8bf1553c963937c06a46be0dd5360d1273e2485966a326db4d1b1da51193818bd7f7fe78279c8b3ee453fdadc60437a4f804dfc5d283654d760bba54c694530922ba043aaeec0f8b3d41eb793a77cae179a22874b20c4a89f4ba1bf91b98807e378847546d638d91410a84d6fd8278f2b0e846e65ebd4a99325bfc98068aac13654399ed65dbb67e84e79a7e4af72636ccd784d17e4e359d6531fd8509c91e808434975c094bdb82ab0a383c313d31412d29e93086636ff7bf2e9f40ad38be671c0ddc20e43686419b128d45898a3b15bce3a0443c231a6ee5fd69a5487878b5f5673e37f69050960ba044161977debcfd0bf38a921249e6220683b0ab4c18d5d75654ae4443fc8547628a4cb42a3990d00221abdcf71fa5a0b64bba940b503ee4c75fcccee7fc544026b8d4b5def342cd0c969b6a70d113ef5d6f28ca032ea7126d5138af5c9aad04cefbdbb820b5cac53873ae99d80fef9463b2ef42e45a1a104303e798553245933afab502a2151f88977747c9f8920b935c7afe011f36c95899b3ca4fd06657b30df029bccd47a74cd675270428c9aa68cb12abfadf3f45d656065af09cda19dada5215ad71de21fc3e5e5f4ff99d4c23a4747e2f32fc42ccf0b21189b2d918b49319a1e5979b6c46dd49010f3def8c7160023cd153fce0ccb4a6ec35b66f322a691b3bc8e08c8b846118a9655a0761e8b5dcf4d6719e52a3ea65edc738e07108fd6e88ebc670f2e7e6e5f6d35c880e11b42cf6779ea41ae13559602bdc0139a8be16788fd6c2513c50970251c2f8ff3f89c9b0eb842fe20f4ffd1c8bc8ee17f2d069217f289c78342d16edfa271dc220eb921b014e89c6851805b8300303ce4ae0d81d8783e59c996dae3822c25e85d433b418f872c804ec95a9766b4fa764ab1727d17dbe560eb0d0aa94440acf4f7dedf50ee7100729820f37af58fb3e5a22fb28623172b05d0636a707d3ec08afd3b5396092bee1eb1583e0dc0712c6267f55ece70329c99ecbb7f3dd06903f2984616d0e141cb93e0a105ee71447ac8c72c3d3c8bbd270b86aed2e5a07e93bd86703baed63d33c6142ca3cf3007c47be6d50bead8f3ca74818dea96da52a23f9a0fed5611e8ce103a1880f64a134ede2439caa82c215a8cc442f04f06388f0c52581adfbe6702ac230c81bc35f9eddc7fa6377628371831266a3d63b119d9827c665cd71abbdb3a042bfd0edc8e8460fc13040e70bcc5e7ee882dfb2392863fec0521be4957023f7674d1ef3c0975dc236da857ab7fea53e984a190676f4ea73c2d6d8903f9f7a314cca0f4593b51c690a525f358b860bf02bdc7759d62e05fa65c151f0ef03131a32b57c675541c178be0f9b2707f939a7b65e54ba5d32ad5e3521edf876f711ac7c194a4a2b796cab43f731dd6c975f5a709108a131360b525ca141902ad48724fffbbdea0c6fe63c62a28ec9a4ef206405500ff7764ca75172f8f906bd8e9b20dd5fb5b0dba93655b22c590110378a940876948f49a33caf383b8ffca3634353ea4d514e0e0f0dbce6f90aaaf1652da5b308b5a2242c231a9e1b790c9e972bb80a34c973ae108d02744fc92c098ad3cf91e05fc4a8db3670e4904660d2e68e860ba228586d421d7151860d1e7318a95c69a4f49ec8646f126b63815641a0fc66e154514e458b483fd5e7aa7739b564fd8519c32903a829577a7c824bd29f53fe7f4d08de8f178f014dfab867fbea4f959994efaf2d23ddf6a8b0992f4192ca4ec77e7cfac5240399040f694e6a434c4cee3abb879e6f69ec5c5614e6de99b294f66ddca2b6b6cffdda5a72d06a69007e28edfd8f86b8f642b3f12be7bfdeb66e53a3205f15201e9f35e455f507998bcc76aef9aca110209b3b0fb39a0bb51d774f01f19176b4e1eab09b86dae18a4002d9dc89235f178288b1df58d911f525d2a538334965121cc2cb1f34db39c5a97b8c11e2623d8f7a0ae2cc57a1718ebbca2d85297e27f4da56ebe562a9e7cf4651b6a711326a3f814a9549434b5b4a81b8340d818dbae145dbfcbc2e22cdc63f6b05f2ee9d061ed6c6b0bbae5236ee186a17f67a1075aa52d63ad02883ed1c8f7af48918a5c3f9952306c1b289d13b46fbdb75baf27fc7553404169e345cbaabaea9293af9e6996b67005ee8ff5266929c83db9d410dfbc909bd7b4ee8b86abb61fc6f96350702c4be8c0951f87b1886cbdf0f135dd98a5a8e4462b564235cb05da9f4d86a4d6cf07aa1781cfebdb4cd40b63ef0c6a902ee692fc92ff65c8e0e5e19a5e4b2ed140a744045b0d88d218628d98b4272623ca95119d258071829c383dc4b4ba176a4428f764a638e5c042f90f5b9f673046f888bc04d9a2df3d4603c0ff3b2fa885604ff5bfda26dcedcee26d678f42c6bc0e93ecbb63e47d116cf22c1e50d91a81d822bc9b66a08f42b14936f5ff42023e4f0f143032fa8e3ce1d3e5663c3cc565656d76dd8fe236c6c9bde55a6e84ea233c5aeb431a4abd84c0172c7733af8deac93f71df061cb8d817b4aed03e3acf7dd555ad08fb6ddd6fa054f198bedfb1bd6f6aa03125f312368f04d293ae29f99f09e463b29eb48003cbc537f3a54addd0b00633363d009b0c916c87ec482ca88a2d71441925a157f415c802365dc58fa14cee370c145002b04a0976d8c2af61c2c26a1c5af569646feb5fd7a312f7d3b7ce41527a9be233b322e1bc5b17348f7329bfcd67b579fde62eb0cc9a98db45d558e27dcb452cfe72ec5c8bba3cd26cfb1e65db9f0eee9f8dec852cff8342698e58f9e3cfd9978d5bd1c5491dd1b1473012d505b4161b92682dcda329044f50482d71bf7381feb672becd5161ab8f0c03688df77a0c075624dd19033b2bf991d4a877519ee93312f1ab093718533e2654c48e017ab8eceb146a208ff7978c9025a201e64aae7ae4f3436f9ff70023ac154cdce73929bae40bab3be18bb42810d58645e80dfa0cdb9144ddab3befb9e0149f02beb8b39144eea1e957dd07411d77f53d0778349695dc7892f0bd6f0c0005f98bd38a184a3534e54d1748691d43f3ef2a6a09d7b700994bb3fdc2733f5ea5828ab07c6eef88bcd5ab99ec4059125e220ef5a6048580b8c5c777c0ef06d61c5d1322c8fb3f0c9e49eecfee6065f70c10309dc34b09ebdc413cc09dcb2c87e45abf562e772ba9e0ff25d2486e0361deb59ccdaf0fbe52713de02d31de0fe5dbaa2c0b89425c59480402201342cc36f055a1dbc07116a1217768d5fbc81f1560f37bc6a410aae89b255a716426ab9f3eae518b4237f500bbf9ece16567639d807cd0267610a68711c4a7162b545f18e5d004a464153419bfc9697dfdeaf362ab11d63dfc27112ecb8889e9a1a1fed9fb31d59496001f1734ab3e497aac7ff8693438fd610163cd8c0a40cd42e36d904b4423290399f8887bdcaf66872fc63c0a1329b330ad455316ff34bf581be860512b124d1e9272083ab2660f96d520494c77dd96a564177ccb5b6e77933680404d9e08e276ff36b599b7ecbd3a42f5af6f8a0e657c876b7593b31c993ebe989a541530a33ec5617f715534e6d681440b3add780cc14888501a331173fe9a6847a3befa193a0704421b0a113e91991ddbd09b5c6a7a9ee844ded7425034bd7ad2a48799a20a55a3ad02ebbb95de4527b48036011740f0bac2b2e14a586c42301170ba8380047fb70237804f401d531bbecb112e420db16055a309e7ff76793c09af4df50203732c9c89094c0c052a46825901b29fe288f25560bc7a0910f925272d0a6db9ec3ce34903e416cceddf0b0aa26add6309f3ba6d9f718b1535d7c9c485162eb8d94a317bba15766e2e595f4d6eed0450093eb6e8193d43c38df1d6ffac4ebfec0d615f3954fd18a716d24cf1875900cfa3aa1ad812e1f16087214fe04c0a6c82393e28f2b9c10b2745716e56328aaf2166ffcb048ffd862c06290dcf309ac456b1cc3d12ce6545655c5c79f74679729ba446e4b1a8721824ce1e3b5c39d2197e91e1c46f29531df75726b1170f7daeeef094352fa9af62660524d955926a03d8fbf6d5842bc6cf78045570c1342d4b895da6bf3bd273432372363b2e25e0ddb3e402fc79e7c4fc055c29a31465dc380120d9393801793b1c560587b281c147851f88ba00b8312742c9cc4ee57dede590648c8e29969bf1b409c93a11b702a2a89d4304fe831938f1928304aa608cc7a364325d8b4856af93b83fa430d70797371164c204fe94fd1ff28a6fbac47bd772127578f2d3d3e4d1e11b67551e9390ed650e51a06873a4dc94d7cedda2ba13b1eba4657fa66ba1bc7d63fc18f9a83e1cc20d026fa96c437f8fff722914bdfc47c549e020fb191d25eb782eb062c911b001f2990cb5c75182fe38402fbed51724a21557a60967314106c99c815593c344dd8bcecc9d392aebda7c327c26366c11e7a96da2363cdd1b0b643b0c4804ce492faacf45cf408e42c38bd666879d0aa87d97771d6d59c1952519d31df00af1360938bcaa4067221dbbc8cd2d00678148b8c202180c78a5f5d0067d59c611afd08a5f2af6a7a5ed33239c4d663a29662809dc4bdd11acf10869f42b0e047bcf7cad21a1e4f798dd0c6c57a0bade82d36edeeec5256f3f35d48e33205d15c5dda675e71ebfb25a40334560a3f87200e46035209709ac16a3d3423a74b0b933a8343ced92f5db934b004bc048707b413b9eb6961bc348a990cbd6a091814c67c20a020d608992d197f3741414a2f9a37c6d6d2e614184bbf72819b1b96ff04003a1ff58e3479e399e9bc63da13da2c6d2186c0aa98a7252f5f15b3e7da696cf07a7e22be6d4797c420e05231d706423685aef4eedee8cce4e46391047941cc7abb86bd02a85a34947f17249ca821cddf1d8d24e550a26b4e76f37c4d1f0f92f93225ea6e3083f9ad412d5087cc98b9c21b4683fc0976b6c4a83aeacac133993a7b6f3b63be651ddf69141a51ee1ef01322106164213e034259091ddbb9ab3e392b046ffcec324701e977ba72d3ed3c16017d78aa02c7686cb61fd49b560cdca42aa63532d8393d49e9cdd623b0bf1fc6d0ccb5cd609b878b1cfae8fa6c327cc6ba0f5a05b2b56c62f4714b66d5746c41ec1acda9159a408f29dc2cf6e3b07e90407be8453a38ca76dce2bbafe94aa03bb1db765b6352bb6cced60be40406509c8ed4a9a803c17bc59f5b141ba67893e931e391ad9d5749e213e36e52581e875b5349da9420d8652d792eebf84c397a376d01a0bc7115c14f7fbdbee776a3d1b91d0b0da701ba9482eaa746ed05a9efd395d5585fcb3c6bbf8a292b366fc8824601f1963d1560b518b138e4d295db3f03628b0a02d9cc557f36defa976f1efb7ef4c23b6a263e2fd7db443eaac857dc4c9fa54fbc0b1a6ce59975f50ff346c454dc7301c13353ddd7a4804ab8b795ab5d4400dde4fa66262c129a31eaca96ae54cc33bbaca777be159b92bc28c7682673c553a2f298810bf6460a190fd3febb904d1b77e5ecc57e8d707edcb885183a069deda8ad124494ca19738e6c55c1d225180401dddd10e7212c4608becc4acdcca3a2f8e7d3ba4217acdeb45ac8fb2d55015c83e46006d811016ba303b0f48af4ffdcee5987fb91916b28f0aad9961aae64c38501053cd2c3956e41089e1b41ded7941f5406b4fc23d48592699c353db3931b7e5a2c3529fd9350bbd029ec54e1e626bffc9e1a153df15f0af9384762734fe017dd893e628a077cff661e6f4f85e71638f38a2ea6b8de465e09378eb00081690858568c58221382a14797a4ef3af298081c8899507fe113603e3a61055a60570f9eb33a59d56c64004b066252e16a0b07469a6ca118c70ae1ba518db294599107e44f0bd251a0cab4c7f82f1211b59729c3c1938f4b4b7634d4abf7d6ae20068f83d2a3f68ae86ee04f33eee734d35f6e318c945c09a8493671cab96c2bb042bbc765bfc6c35cf2f0c2fc55429bc6d461308e51ce782ea954db5915c54d349060203155ae637b35c73e8644b437da07f2fcb362df95893c05886a4866b72a60b1deef9c51022dd505ce752e4062aed6e9f53451a9129705d3a51b7e80ba286c5fbb28943bac40cb75c8bb7c5855f2127b646473a61a8f99656b0b6fd5fb360a2ddc1bad771d2dfa8c9440d55353ef55e2580e51056aa007c0b8c6eda98b739aac90065dd4d652a4f2f19cf7f83ec57aa818fcd6fe3aa0e7dd9a6a042c6073ab03f467c8ccf78df049e23777b6112cce072361427dd465605ed116bda8abc5172d1e01a3e296b89be6410cd16ae5cd44263ea676fafc033111bb5fead5536ed58cd105c37948352b846a1847642fd6f3080581378667e3de4fccea589f799b9c8e889060572679dac382c2c57252aa782a7ddcfc2b78ae440796c1adcff4b7938e4f506b2aca52d15381a6b2e129a27da6c0c68372b12a5c3b3f12c1d4a78e87c776fba62282be038dd6a90c5120df174ba2c2a1995e9c6430d96baf2898eb1fc7009091f20cef307df2d712763c2115db1b82a484d04ae5b9ae5f38d71c171bed64850d5f6c6e108de0897fb38ff720255dd5678f3ffba7a3740f3fa4288cd8204a31de05c30c6d771b5bea8508cb5913eff56481b96bb222c59a35c3a1e955c3607b998a98b58faa282a6d853381e9a0c344162ee2ceb3221b8f54e4402f978ab567fc0ef3b740ab1d02c37465392d483c71b10ae478362083969e9e077ce0991e30ccba20a31794395be862632a41d5eb72fee0011dc4c758be01be905e48331f737539aa28b6ce9db1564dbafaff494352ba524d91cb1d2b2c85f29f665a37850db44e0149e791b3e485354a706128d2a14d66e907cc7d0858ff769da52e8b89d7085fd54683dc87225f0807a2de6e8ae0aa2034d12ce63306a368a03007dc3037b2568ba2816d3bbe55b618d2714f092db774bc9352facb46b8ac90aaeb8cf9bc1644d82447fd2742842fccbd3386ad762117de46fe32b62eb4236482db063f15913314dc0d1c989420f782059918335beca831efbf0be643b4d7f5e92866b878219c39e486b90fcdc31eefda252d2954fbda51ed42ae734af6113aefa6ff1504d30db5eca7d1663e381d0d7edc3db978f48902f5a911d23f25a8ddf609874351a15c2599b09be68c226e2a8636e880db0f2dcbe7ff605d4adb1ea5c8160b193e1c1cebf32c48c48f696d66dc8f3ce7e0ecbb3de8ac793be8056eed6cea2c9bb4e74e5a371ed1155e98aa2a6365e7da476b8ebc4651e69ad44645fbe76f21f71aa8d957f7b55797422fd6bd8ebfa70ee345dec4a7f7cfb41a56488cc7506e56e95956aaf1e156ba0c391cf0e2512bdfff87aa0703bd1536d0621797bbcc24ade92e983f1ccba056558ffe2540b0e392d8800fbd7f3ad91f9ba39128a63918ce362e3adeb23ee7665f452f53bb0e2ae03402bec4488c9b3018bfdce7cf0fd80102d8006a505cc74d7a1298f591ac96abf686627237f358a758a3b9719aac434ee7ad2ae0b417d200320399ec5619f3dd557d2c501b6e620973f09a0ebfcc7237a02c9296ccac9a8c7f1c1089fdc7f1b6a629da411a273637f19b787c2ef9d00a54014d0fe83aa5915bcc41e865b6160d99f9859a9202a359a366d6631a8a79fd3e3343057961ba472f414802076d26c327cb2bbc2d7deba277b2a820effe4865d06fd48f558b10f79dfa21796e721bdb61a41487b26181eb9f71fb2f524f6d70f390e4cb8cab1f556df96bd15fb85d55c88462195a576a3b89fa242c656fdc5aa5d1efd639ab45b4c1218eb4e08155e50be18fcf8377d88df4f2d5823a2528d63510dd21ebf0b423041d8abf6ffa0916e74171b2eab1abfbf242d65f3b93bef626715aff7a07640eb1dbfa24708c8b2cbc35958e3e796473b219243e2da198844b3a0795cd1e159fbd14e887d29cc922d997d5a6bb2c59b0a255ee8debfbff29a238dc3a2533586f2dc9b025a0a04568ef702483cfba0583933ac749ba6e18f686ce97f8275738ff642f217a3bcf6899d0addb06fbfac15a608ea9c1064d1f4a7c174099637aa85400b82c6a19974513c0923f14379c62386023efcf888f878c3616bc2e045793b9d0ead7ca12e3fe303e80a039a2042bfdf5453ef5396c2151df0693c44802ef3f015d046743912d8bcdb97917bbb761b0f9106ffe241e9d08a9f71260913bba2ae48a188f0b41fcde5aba6208e7e1c90437cacb8aeca5435d22c57365d1f03fb60eb7d016df550b031d5414aa37d1e1b0136ed0e815d02f332a926e2cef349ad246e41ac48d5dea3077c67642becc15b9fae6d036b89a29ada144605d1d4bc3f2dcb7fc463f112c7012fab5dbded4426c96dc1663fc4e18d70c9607c3e555e203f353ddca3f5435a6f795d4293f656d1ffa85ef113ff8ca98cb4655ad23ed48b34167d7671f95ea4d24523a70abc0c6914aa8ed5c44a04e33a622298ab0ada4b795d420c3aec8fb86110272926b53105b085942f6f8cad0e7bd74407d0e95947911edbbaef11dbba87e94d4f0b2b199bcf218466f9415949c33ccee0a75d6e5c917f911b868fb98a62481a5b85d950c5418c83a58956cb0a7c58407e7d60ce02a2f71bee77070bcb46ad2603811fd72528a170120807dabb82d90fac021e66c383dd66503f46ee16381462a492bfb6397c01254ca8d6d4c6a671258bca3b1ea805469137e0fe52d3743778326d302aaf8a59d2075a93257d2cc07726cdb113658d3237bf5f975675e8a10f136d7da89171f7305a566a5dd94c0c08b9e732c222950f63ad4505be45b691c71a10b77de9a4b17a56970c2019b4cfcb1f5925e37e2a83c03a1fba1ea2b6aa1f1677f3d0be6b1d6c325ce39e6604114d1a462b03906f8beac7fe9f887cf178b3a3eade39ca6115c60ba954964d508e0bcc373b10761aedeea9f825c36227c373a852dc477ff78f09c1c417ff83a2b7e86798486248f2f160a1a55c6fa64aadc751beb59c87f0c5670cb899e5a27679280e387c0000577795e0a222a15701abbf6cdedc7c37e3a82035d57119c83dd7d0accdfc2453ba4ce2be1261c1a32642c4d48b3bf7febda9c9382ee6a6bdda5572216e47415520e2fa571858cbd2489d6adf3d94065d3ccf364319804c302836a3f217180515a346c45f5efb368d2aee58f693724e64741c00a9b3b05eb2717fb7b628e22960f1763a64915e224d42a06403cfab55734e47dd5d5a85cbc4f8d97fa4e6d8044bcbfb4090e2318cdd3b5b54ee576f605c04bf510d316c30e4713919daf987211887d878c3864eb19273d5ef2e36e74bdba70263919f0834a48457179dedfb66a28fc9757c3753df767e76476198680de299475380d01796374dfe9336b17a897ae0d2eca3b2504effa1c95ddd5134b7f613709aef3265a75fdf22ed141accca7e8c1eb6c03786d3fc58c09c8e57c72498a0519757face1ba2bccf3b8c61124bd2382bbc7d0c2e7f64d0c4c0aa44bbb060a04bb3b89d5a68d05edfcde5a1326cbf9f4a32b4fa59773c6d9c2373d5369668c72df2bf57591f60b2862c6e5acd093f0d70ac5dcedfa171461a91de6deedf3b9b6e28aea79cfccf98af79d8f1c68794e44ef2ead955ef9aa4a10fe593b40692f9b15132d1ba935964232e9d2d60f9ac1ac9a77d711f59b78778462a6f9aa1d7909fc13c5b63d27b608582f1bcdee2b5b9ad246c6e89e4c321ea6bee51a0c9846409290e90c3c87e481d0d94acc557ae5fc71548aef63c9f5839e5802af6122d4d62a96a00fb69edcc715ef2f29d778bbc3ac159911cb710486302eb12cc3d30758470e6fe9f362611b3a61ae64e8be7163508237d4fcff0bfb17f2cc0b200f5dec796b62154039031f5ad83c5064519c7ea7f065bdf7461c01db72e158c8ea1da68394ec3684db4b63aa9f42eb3e4febee53ba01884b4bc0182ab86910bba57913e0b558593cf7c234fb6bda60943bffaa323b725da93606c9d5739dcc6d8147ec1d531c9b248166b710801142005411386edeef8ee2fc7a1e5eaf83fd6c777f261a47836a2a68678ce0f0445957a1eb10d198c89dd706a7329debc2805b4d9902e9409381f07d9a5cb255f6949e86a126c82acd67ae4ca67030a2aaa928758cfca81927ebd40de4421886994a641b4886069505f129291381c29fbfa811fac7cb50f737aebe5e41ac5ac6e3e79924af9660571aa32d92c553d707df37aaae135dfbeb7e406f477dea43811c4589bfc5e36012bc089ad7861332640933ad362ee9013fe3881a027bd3023bfe49f6227448f77b4aed1c1fab38065497c93980070a200993314f69bd9b5d04145f5bb2c4e5a4b6f06cd73fbd4df717d74fef413d500133a5a0634b5c5882d44ed630823b016f5e95b538b4c03964b69e5bab7280e8517b9737f214a0b001420c903b1d6b6981f0ac86d1edfb4956a4c5e7f31115d1a355109edc628a63e876328321e043b18aeed6a832c620c71cb1010ba96b3db34b5cfec763f5a88ce8c45405a2d07328f0548e195c203671cb8db5161395cf397f4bdaf83944e150bafb1a84d671b2168b322d38dba16d380f6041c54fce1e56c3685294dd581a65b72a8dc2c79aea17ccbf1699767cf92de468d904aa27444a953e8f484dc5f083e4772bddfb134df6397ddd18ec1819cff5ba06d56da7e78c580f4f10876a8fa20c3890e1e86651e1171fcba7ce1cb1a3ab7499af32ba03dc3a3b7c2a7d659b30e2a31f8075dc433c2e2f8db22e1dfec421247a1a824652384f49f4ff597335927935e874e27e0083e66496c986fb025d040ce3137690e0c70e165422faa388aeb31092aec82c219635db0aaf6ac1b890bb42f9c5c8c69b06b72c68b31ee32d7568ee9376d6d9dfa051e3458151f5016d5097a5622cd781c1fa421dc7a691f44cab56d64c8c6e4cf1f2b203957d18f78d551a67cbe1e692e8c75452d414696cac6aef94fc726a7d24cf5e99786f1259360f25f4a041c201bf5a14b399611b6d677b98bf8fec627d09abc04bfc17bdbfd27572ea464c87dea124175009ce9d5c70d278342588371aca76dc98377c77780bdd3a18e7e4048f79bc75c43c98d4673e8d197752833d9db0f9498b67307e29de56328b43fbc99711a22ac0b3e83b6a2918007bfd9dc2be72cbc45b3fb0e4904ba335ae3948493db12e4c12328bf619287bd9dae238693ed23deacd7faed4e1e9c19e18eaabe0a8f7ac5559937891172d7ed81b7d3a2131e44ac0b033f369683f76b994abd2ede367ee83941238815e787b0a6b32564dc41b5de591bc5fb3684d4dc2d527a54a65198a1cb323d2acb89d3d04c5dac6a9a2f76d6648915e291a23a453b03f0827bb4f7bb834717dcfc6733554bd5c99c5656ab31e4bab0c8af14638afc610ed69f0536745b9f37bf5e7f3975b51fb82370373d2b16a08be8dc46bb069a91b727f5415ea3681dddd2b2473b8006a521d1b8e9c6dfb32e9c747654b7207b5d6066493843d428e8d3c0aa27ccfe32b1496fc293d4d136df750ff29374f963b340efad0c263d70ec59c071fc0799ddf4c4bdf9f571477a30f6a7fe092c5dbc2614ce40b6acd7d6581341e597ad8b7502c21c42e0085bbc22018f3ef0745f186c6a0409812811cb1e0f50e73c09b633d3e12863b98fd9e3b94dd88237574dfede873ac98d2ccd2677dbe8e124af8ac244a0c9bffb0748b97f4258a0012edff0fbd57bf64d74b4405caaa486fb056ddc944c747cb24caa7201e2d0ee235ad4f7e5e3e052091a0af90e86791262a14553e891a5700031e58a51c71f43aac4623ce2f648065d1d812e8e957be16e6c57c3c78fd3fd9beed55e82327fbd533124d2dc2a8571b839cc5c2571d2ea27a49faa9e825a2c4de4787330252c1512616b70e2229762de0ce2e3de8654d10aa24abd3dfc253d73a4b999f58e03238c042bb3a549e5c2678d2f9c078f7a918876071757ac18357f53c65df589e84c9c7ed875fba186523ed132e9b4109d798553445806b974c57656005153a7051cd276f4fd60270886222438713cf6ad05d9c69dd546a7c65a7351e4c6b94b3bb8ef3b23f670be4d26286e33feba31e06bd2c40abf76d3140a2276838ed51b4d3b6af6fead6eb570e437eaefd08d71ef23b1828f8bda79558a4622680bd678a0ceeeaa0daec1d4bdad8a2c10ddd8e4f976282181051b4f6d6633ceffd1f30c9e4ed90c857271ff342e327998f903101e32e226a40ac5a8381a544be494e46708bfbf20c60aae632c9a926afd0e38b14eeafbcaaf72c73561dba6529ec167abd933e6aeba6e4a3bf989e1e7f0b0e7b40edc840f0096f74602653b63bba4bc477af2c7857e963a1cc06cab6b675f423a075601ac809d8ca75d3bb9f0504e2ac86277938cfec318d9ced9519a8fdfc1a7a9c9eac71a1ca2052383d8e146b978af7abcaca577f9a4f121d28428b6baa0cf4f112d852f71b9ea0bb6e85e03e97464c6942761ff4a3f93f7d5ce1150f65c248c37aa5ae91a3644ce3448f051ca702e3632517f80946e29928c091fa5853afd9b0fb63e6e6ee17ba7f4f0ec9fa5c041a8f22743d5205d7e8c9ee5bcd4cac0ea2d3b99a13c236620024de838e8d93ddc6f61dc94e9f9596b614d67222fba3a1beecd10383dbed41df837cf53e868c571f3f257f40eed5519094564c71cd836cf8a9bcb9553302186b32e55b77896b8e83360b23becc966d1cd1e0a2b0e5708de2261f09777eba3e9ef28c185227e7de64eb0bc31b305475dba0e58ea2d10474a5067969fa148983f1e2d6b884c0bfb2b4eee78ec85b7d6f7433fa126cfee4ee640ee4b9c13589f5eed4c437e99312002d6419c0336d695cd11710e3cd2abbc088fb18fe6c81c3d0539e049ba519c5eb684a11393c7ba2a0d048f18c87963f450cc1557ea16c35a72a14e1212f24c2927159e7c0d622edf87dc0811006aa59e7bf01d8ba1c899c18d4dbe4a1c3aca7a6096d5a8de98b522e22af19c57cc1b24471e1b87de3e74a3a0998c2cbf53924f484a761fde355e06545e0d3177d1cb366870259e665fa3149eb48b0c0fee7b285bfdd89c91ef0fc1f91e419b820b3f478ec0d092dc5ce28dfb6d9ece7c65938c78e9a28d3fb5432cb4500079af5a9a0d789a3c1e7ba16b6919b6716b5453ca82bf750f94d17a10469961bdc02b66c40518cd926c9f66e9683b93c1738b1e81187b65fa0887aeafb1f4c59b3754db42ecc84b449f23c31c2e118dcd86df678be01e48037577c2f634d8c308f93aed62479251d84b893ae5c5ced05eda446bd16e533cab17e573c6373cf03ef77dce96dc7cf8edf8f316ca17d58f08b8a4b019db12589e635fba1b4ab0ff22746d1faf37f7b624a2f3174675ea5a19ffeba5d745d547727fb588419e9bcc5a87828abc264a75fc3c1f40dd13037c0aa069fc144dcdf603c5b8c99d8a0db5f99c2509f33d1d2d62287fcb7389999018207de3ac9734524644cf42b7071eb29ff3c48add530b458ac0c798745397e61619957a194da879c43f56465d35deca72203bf88d03471aeed1638f1452cd5d7db97d14059d95ee51acd45f4dd4d8c4ec8985cd3a2c4f6abe1b4fcc674afccf2641ff25aa36b69463b5fd634ecc223411ebcac3e872b38ee0d2c09f0c626d413487ccf9cdcf9c95543b838e7ba5fb4c42d6b14554bbe8bc9820a6a5e7a71a5c0f74c183cba151796a4eb897650ffe18952c07a84bb22dbc57a0ec82cb8867f7948771edb4e7fe05c4b603ecc25ce0f137a6b46010477fc3bee59c11ee5b69ae065106b60b65adb87e6d226fa301c563384f07b6222c9d71d0f1c405bcd7bfc680f76d7ff0de10e946233a757f191bd9b70746a0105a1e1172be3255f398fde957b3d9e2f49d64ea36b9bbdb04e20eb2680198d77d8a959ad4b9feebeb9fa073f0538ce6eaed57bb61c6156c383d8aa9ff453b48a0bdc5261941e6779dcf9a5557b9f8ee26a10a17a61537f25c32c5a91f2f0b67d9b5e6c2882d765440716ad522593045aa8d19f96e25e1b0146a667228ee5620ea79f9d8034305e25eb1c2a3e7bea18c950abbe6d6a8ca1d5db333b23a06085b7cd52c9ee1c27ed1cb1ec410dd0527c21376eb8e3b04920f58805276b6ce184a62d7513954d9fc2e392ec55e2160649ea7b2a993afd57fc75066181173f35a06f95460938a2d33351bb8aa756d94767566a2438ee06919810ea16bdaf1f38d2a91610b043557a9331978d078ed7bf1ed34b1b2a0f7428371518db36bd7a3c56b9dda654cc664c5118e8e810162832e298b4a0826b398b3604a2c593909aa2068acde9691c653a63881ff0000a42eeb369f60ea5378d57446f8a7d7abe703cf25e0509e49d29aceed0f332285239037ee15e71fdf631738959ac55c1a3f7f68fcaa58294c6ba29e68767571f6ffd4b48583582df570b1b71cd275f948b44193e216e0767996469f2cc776ec6ee6b723851631011da6aa69ae9d4a624ca340fa59c1184ca95c589c72e6cb4a4ef90b43eac073b0d0d73cc2ed1afa3ff5a1c8937303f3f8d3a91d8faa8e6ad638a236fe9a142243e2f85646f6d6df0f2519f937a672a86ca7b1cc5860fa31d40956b0eb7ed1c990fd201b6ec1857694aeb247877104315afaf4124d0d4f5f7c7a00891bdad4f32cd9696157762ae2d5a3abf82007a4cf6ccf3f908ca00b19837f03e035c3b2b363e88333480d1669b23375a92974f6848cda7b5c2fc88ce6309f746de9cec31d46a06b5001f1a4f6fe7870ca21055f9732baff7c3f4530340bc288f8a94adacac6a1f8a9e0874f9637ddfb1d0cde1214ce56176e83d4bfd10c40eddfbea02358e65a18e6d3ce74fbbff07a3be4003049381adea3187693726e2c2394a1bff3e8eff065e21a7041fcb3da7b0f653c594b39f127ffdd1d4a2fff21d01dac9e599fc585792bdaff381348c29f581fbd4d6f1c49225bae160f050d125e93173a65253d2ab9837d4832ddb9d3752be03a50d1547b8a036ba22153ddd731a34aa0f8298c0fae61ead00a9ed0c20a7067fcf6d03159d339d6a0bb5db592361078ead6dac4c9e0718206f1baedec88606e2b2b90a3c957b03d4783cd72087a2f8d3a656f62b50710f6b4e73dad7ce70dfe32b3760fabc411f5326b2db4921c6970183ba1e5d1e2d1e6b51054163151da1522a1b0346b3879a060436d9158e5bc8fc8302c81a378fa590260d25baa9dffa14c63ab200733f94ed24463e4d6613bbf751352d6ed8707fb8f93ac2c5ef206c2a4029b3365551565ee904621f9958967488857c159ea262ea4af7d949562515f864ff6343b1b4657e1f433bf44e86204c5f006365854baf286ca036c16309213ef5af977f22e78348c40a930d92313f30b542a2cd456d995bfa5a0595a20505f5c9f22103cb38c00ca270c6c4620fd90d469169c85c7ce34456eda6175346930caa9b41547e2d7de15f425047cdd16aa3de51e8bf7bc970f4d00db070ef48ab88be836facaaea20cdc43a0d052a86737cd061c28931b67aba036f1fd0866b993f882f4ec57a7a8abffb38c26732a8f6d394eecf7414926c5a5200f66cac3cc3e28c27c4f9f389b5c5f97dfa0991e3e1bd5ddf01179fdec1382754ba22eeeefdd35a0233aa68f9ea962cff0787cc0bb57b9c28c6cbf4b89db043e5eb59cad2253c6887e1014c9cc40da6ffb6ed3f55f8106deab3901f7014f407a2733d4d0b9a4ca32e9250fcfb0febc17a142449c188cd69c385342d408c3fc7a28c15850dab3b8c003725943cbc88bcf65bb355ee79fba05a6b781838ab06fc207279db60243b40130559f17123866cd2f41cbee6207dee36916e00d2687e0820fef4f2f814c62c3166d2a026d131ab6cd048b93336e28017b6c5b08ad4f253dac966bcaf9a860a120796ad1399ab7d16db87070966ff971d8b0b1b2a81e2194f34eecb1e3059ca4fe4e06bdc79e743125d86e21df7457ee02913c2ad056ae25174d4d4b0a2cfe5123df6637db70e8f36c82a0caf2e3ab157d3dd83094bb9e1cf5aa2f800d962e7d4649ee6e2d98eaab9ee0adeec99d6643544627389653bb3a89d7ccb3e1565f51e2004da2eb5e9e6d7b1f2509f2cc224c9287c5592e1bee4c7797163d4d506087b501a7a7362c752ca8f7c9200e042714ca253ca5e686ff568395a6976db972ad44147b8aa0ae31e42cc61d4454ac5a71909ac8b4fcd591471983dfdf30f596ba56227ef0b4d6357ef534a2280bc40a34fed048cae33444b0c6c8e198dab84ee4759bdc096ea1a583517398f313ed17833052decdc2af27d1bcc6352d83820dd370e9932dbfb2287475fe3e895dcb67f1c8811a68f3f4ef4152a54d15955fd1dedcf4d5e60bc05408faf9cf9d6eb3b3d36aeac51985e789a682b5401151039ef28eb9a824aaca0abe5a18c229e1a80e67419a94a3bb0102286a61626d4b2dd41222eb33716a2a51cc77130ed1e2acbc49798f59488b87e4ddccac96dbea5f9f4778a96e920b68740315b57a43b35c35a1c3348b74208981ef8d458605e9e6f3d931451fbac2e7782d5b6f319a2ae06b09d4ed2a1e59b5bef73924149ed92dd76636145f77b763273a57851d3d3128b612e5b361c047fc60217ebcb6629d66ec49325614f086363ee177c3d7e8457deda435c2632eb301f884acbd962fec7f7f4513291485c275916c10c82004f85da21782526d99955fd58c3c639503d26b881b8d8ddee76edc230bdadb2b9270ad7d309469ea0d9eb8b98646559c932fb66000977b26d582858265715a3cb5e5312982b3b31b5caf9a21160919d9d6366b256deb06981b6c76ed2ad6aa57e3266359d72b71cad860315ced6711c6c7f04dffdc8a938e528cf916f6edc70da51589d26ecf72dda27ac8d50e660f2370b75ecb6d361aada8b6c88337fd589af4262a83ce7326e1227d1e40dbb0723f38bbb1dd31f77c8a7eb407d6ca335ae019e5c90ddd71b3d4491b87825c13da375c8095d83d97ebe315c20e8d7b1e55022e6df75bc22527ceacbbdd9b900264095c5e09d2222658077a1005040534299947f1ab14c971b147fbf747e0f2137f9c350084419276fb67ea444bb9084c64cbae36f90f1c3af127761ec83c257f4a293ae609705e9fe98e7cf5b5280d232bc75e170822c4e950d7fdb39f6a66a686975ae39364e77db6d95e3198c2d6d7b160880067d7bbea72f405ec813c758815bcd89fc586492d2ab921f89dc9536e44d7bf74a8fc4730ae793d33966f9c4c0b966515f47150940562b1be7621e350df02fe88510b05af9a6502a94aaae5bd4eedd6167cb245d8d62136ed4f58f5c9576ca36518d642e1ad38c89ef692ddc8c9f4c8c5686730e4ddc9e5601f75e68914123ac9720e5942e7d9701a4d28e6ff29d2b21a6a0200e800e2eceabd54762356dbc887747d98d48cb437589fc5cf19312d2f5f1ba069d7d095facdd19f74910ffc2902fe095e9cf7203745ef7c546f95287cb599b2f4e89d8da64389a30cae4ecbfbb63ae69523706ac005d2b01c81726680906af8d0169c25dcf924979cbb34ce71b06f7eaef51a04b76f2218276f49faf437b2f994a017b5b28f52182bdb7ef981111a039425f5bedf8c8395c981916aae45ba85f189b9d79e1957e85c969e6ba88e5da8cec8e0129d1cb38c03a0d823612bc8eabb19dceab4a10934445a6221c2f3c2f44675c1cce110ac9f85da73ffa7ab43e26d5aef30c9a29df081f52d674d9b46b984cca8b33b1199fda5e2bfbf855e2d6b5f9ced4c968f3d17f91cc308b5fab68c76ec12f7b7f896ad738df1a31430e50c8cf1df07b74a75c9c2e89981291463e4f0fa32780b54477f3e56767599df403caab172922cad6ca82954c9aff10319241da14f40d9e7328b34dae4b0b97ff2dcb8f899b45e05f2e831c07fcb0a74743f028d2fb62929fc6c295d7dac26f83e19ec23469dff9154ee9a710ba5652a7dc629ef956425c461a136443adea986040a1057284401070f76560e736b0d7a957725fcce63ee1611b2a79970a3203911e90cfa868fd610429e28259e7d0aceb8b0626e4cb803b24819908b002ca073c9c7353822b08ec7fe5083a40d08e2220a5a4a015238f2df4a077cea156bac6c1e04707f2865f53f61deb6602471298ab22325f7b1ca3617a073e8af782f27b1d4f50e033b1ac7fa7acf4091ffd5c2aa0f319d9599101e8a292492726dc55ea11a8e743b821134720d3c5954df19fe3c328bffa46dcc1d99039436f225c46def6ee32462d20b6293142dde281f4a088eacf490f0b6979c5b38e41491c1e8ef23d7e3fff7df20583f21d66371be58c901b1f862cc1eba5c1b424058d5dd20ea1966a7c13d84b9c4c983af7ff9786f8e8b804f178d7b33c7d75d6098e9b626a680121dbfbc11de597a46bb5b6a6f5da53629f2e80aed4a24c3ad13c819d8502c5bdd0b12beb84a1010f87e3ed55fe15b9f94772323093567c42bfc3c5a5c77f88448a20cd3fbfb7d3a467cfb2e6ed2ab78e694ea3718a392f66be6f6bfbe1081241d0eda4d3425911d68322fcd7c693b062bdbd4ac614de4272f67f0053be8293d82d6a6c526c36cd258f2c0ee142d3fa3550c666a88cae559c5a80d08be0f462063f28894a73cd8e5e10f6432df41393d8fa1e660f74539444092314c66efdef725d5a45b4fc3afd87539b91cac2188d5d45c6ffe5de778d175b21c759494103cb2ebb97b3f66079eda0040950cfb3402e6ff40ba3cfdc7a0d298fccf8ba2ed40c743569ef6083f20a4de7f697a3b786b8382a98b813cc583fc85fdc7a28607a5a2576e2c35b019bb7e3aafc81006f950fd61c97134a76501459ec36f03d2e9e4f637fbd7f1d606c04942a6c5d498e20212e484eb33ecdfd4eb076cfefbda11c9318e8e105ebd30f3019a1ada8de288671c67ce7f0152386b319f994edf072ef21231818ffae38e0d7c2ef8632ecb7b77921940369e7e2d69392a1c5d7565ba5392457ecfbb24303befb42a1eccf096c1d3b2ac1c77ae3e24bd36f4ccfb6a62b41626b28f3e1c2c9c4fa152b128dbd1e74707e8c4612c44268e0bd163b60dea31fc89d1520cd52fc6789daf24cae7521dcd9189c3a81c9bb0e857a98b0f86c2b96aa782e0efe6654128cb0163a3708dae764cd43128ed3532968abad24868d9917c496fc3597c8e0ac85a42bd4cef01779b72402b7afcfad4dffa0d6bbbf2a2ceb4146ccbd4ef77120941db68cc1e8d6a34065d53334abbf1504d9eaba8b3dadec573ae8a8af3acbd4d1575faee5d110d8b32e04e2f42b39649be5a8d9ae8f700a8e6ffd9d7741964e46289f12fd4abf837e6c645edf4f708613c912f5439ddc7ffad3a51f1ad9bd311f7a62d321b955b713e5565fc4e6b3b987cbb5352b0dd9bd40c21d39717f3cbebf5bc71c86e4375a99da25f7821d25b5c7246dfdb12cb37979acd01dd2c438103c0d0e58da5621e7d871de8950d6f4759d5ae5da2fa632c785f90c2f7326c1de0f239970e74bc3ef29b1c3a3fa515111c9f387cf252225d0eb509c22877d03d490edff57fbc3953064c2392c052017f85aa9a8d741b1d814d25b9efaeb4b86f6188f45409edbbf08c21fab084d9db8d0cdf32067d926aa5ccc103fdcb946eba905a6f6d9caeab385eb41b5ae18147e9d091ba03ed2832a75cadeae3d87a50163f51b3da5d66c067d5a640d9f341f1767d06fec0a2e167bceed1475c6a0e96ef5ea8049d9d4bb24a9f4306798d75a7cafa39cd207afefceacafc6b67853539a6c7beeb9a5f143fc1d896c40e30f731aff1603729dd1c2c8f16db66c8e3707b1060ea0819747a27447d1caa6a1aacb0a51dc42586e42369d8aa90168548cccbf518b7cd45201b925b255e1ce864d5155f6fe4950408a6674b3be35969e4d46592b71a30af56738e25151a2ee42db8e942ff1006155f989c3ecc336584ca47de177067b3cb7ffa48d29acdb440d66ee5e9cfd8225071819a5d79c047a8746af62a50071271d29ddf29bdbc28e14df51aa3600267ee9681a9288ce823ee573f7b63794a6a5e3c1eac033ad1033070c250f30ff32a4fe9d60672e26c7a2f8908aace2bd20fb1da1248ced4eac49a7080ef0f4eb09373c3be49e3a4e62d8c71ca8f6ca0620a6e0292840af57a161057b660629fe4ec82d2d685774dee90e792c01db2b325dafed8c20dcf9485d8888c74050b6f923c45b65fe5fefdace6675cf6380860a850ad7cd978467f61f77a7756fc5cb15e4aaa3103a09a26d23af80e76df4b081d2d2bbd3f092cdfd10963286bc65b569de743ebff64437c275bc9b1bf994b92acb10c64ec8f521d53aa4616d77a448c8900c7bddc89463f3d0acc167ad34e51e096480d2b661f0fb56026eb40a104d253e290980591c2d1e83739ef8f628bc06e99bb8f56ab0c755cba8c605bfbc0d9ef2c1cf0f3e52a9e8f290bf02a78b00df55da6f5479b27c9c5e0072c1e7e4c3bcc1a8dbec4fec64d780181063f735d73678d2c057c09915d2397a8fb7f7bb5f6dd2329145e6d314f9c019f9c9790a76342dcd65831cb00cb30098282c385b8c6a984da3786ccdcacb33baaed98409682c625100801213eaf953e3095a9e5484335ddae578edf8a33751db06a27ffa670c9e3a9dfb3fea7bb71574f561a950cd409ef58c972add2e8446dfe2e67e64a65e512572a5666af13ecefff721790de72b37cadda92daa1d1cad8a88445d9649911023109cce95afbdf29666f09f64d3e657029326206b5082c2c0479fe0ecf81eda3335c68ccc2d500e52d03bae51cdcadba68bfb57c2225e0a52f8110fdd6d948b7bd3a482c95730f9f01868d36c1ab65cdad3b8e1cd1f05ca0862e5019b97db28314fc741195b1fa4e136ccd31e7c840325e3a82f0fc6e12f82ef30db22f1518f6e0cf0e3f1667054f99d21537ecddae7f85c92997b43271298ef67f26df8dc0a0ade6012983a44b134b1c38c763c6f2d951a22d445b05f51fd0f9e11de6652b816a2a087fd94141fbe69d24c994019c4193e9dbd42add6d14634cfdf754c69e75ec86f95329bd0306ac5aadfcf7f4cb2b4280642dac2301a67bd00a96ae6d6efb6cc2ac061b699992e2d03377bdfef043f7e31ed6414c9d8e900f21c76e6a452605e6eab766eb779e51d693b64758e1c1719f7b9a9cbad9f0db5ea0177ea5fcbf37363747590bec25c684dd4eacc87f72134b83bd46f97c42dc134f7fc13cc82767bb6d8655d03c639336b0773827546c611d053219402344d7c8176e8badc5d65c5a7a9251f0a3aa0b9348c6e7adc16c870bd726c54abf4b51b19b0323cf3467c47caa05558e758a09ab9331ee1bc505d279c9214e7fef6498fe0ad2489de59aad495b06ff4811a86a25d91533a86417347c30d68c64616f3954f568a9d2a4240c6e060b0199768b8e7bce4dd0c33b8bc4a624dea968bd70884c04096c53b1e73975ef8aa07f962cdb45259f94accceb3c6edd7fa7f7d4c41b0dd24da86784f771b1f3b83785bc9e3a98e6a881cf813c7918c7b2d8e10cb44feb4d4feac576e153b43ed4b207a9a7986e2d3a4ffb886aff3c36aa64123e3dc22061b8b46d0cb16457e59014d9366967291278e862f2c973d5da45c695868dd78fc594f951f1ae8b54a998f12da6851a1ad981ea6fbd551fde54ea4ff0c4b535984024a3d3f011956e672af4dbe64fac1fb6522865bdd471868c6ea2c4b7aa48fbb3d50e0c72b8b229f26c5be87baa1a53b77829d17f987bf1affc36cafb81bfd0b6a88ae74288f6135b207666d230e4c3a8d8a8d09e467586f8ffd813622b0c8ba898dc0fbc41d99decf62ba625289044031f1221290037d1997a26a6589be70b7060bda6876ab882560575b24a7e274738ae0b030a46c0f27b69145e5f78cbc858da5ad0947351c1ce67e01ffdcdb6c9ecd2e9ec9a2cb2a1a32d6b27c3e278ffbf7bd20d02654b2429700f2b87f9cf52f5c6370dc9cbd2ba694d458319db6ffa83f0bb67082aac5a276f3727df6d05fe2494349d785c8d61e441935e3621796567a69e68310e61a08371a13c9489749841385203101f6eb0236f9738962221b2da2c76e7611cb9f677172b7724f436cdae83b7c554faa9f923d86a9976b4358cdda935a283d7eaecc303c82496ebee61a20cbf4c04bd9497979977d816e3495eea4840a8d7338bf8723dfc836eaf4283f3387875d20f284deab8fe32db1433e61d75ee943bcf185ee54560c25f395921d7d024f4b7708436205f92324c1d90d90ce40c9aeb2572a9dd92244b4865615c1bc5bb86ba036a4972299b632ca13e9af9f25c5a8be85cb6949288655d830b01b4d366f798a0c165cad3d55b1e5ae0fa5b9c11947fa7ff48165e62239b100d15aa7d05ef044811f68023cf10955d5e13ed57549be2be673668c49b9fd3fa9f73c051aa9754160a20fea26e7e08886225a98bc3a49dcd031d3e67b28cf766ff795fe71c0fd6dcfd842071679da892db9079d0ecdf700929ad3b3837137269edc3990555a92ec661928b21c8a908277ed87831d761f4708f8107c45100b2812ff85b5a040370cd50623f6d6fb97c7940b602b979dfdb33d387b05e39443af30ea519d60ce4cc5a072c1c3d91a22390dd3f0213423807a9f5f82773bdc0d347d82c893803f2170c6944336a3532d761551b30c890d029d1d8e1d1edbe67ba5f5cc2409bb432768a7dae076ab7b27c6569c3329a39bc12b4c43b6ef8b2a9df75717546cf9d5eef51ec3b20ff45c26fff22dcd2d406b9dfdde794dc0322349c676f4fe5327203c67a843d8df0657901784b97b5fc32f9a4e0cf487c6a2d006b60b37f593d9876c1e7b7c343bd6de145cbf2284f20efbd5306f1482bcc04b187c32098255eab97d3b71c6f703a0abba9afeb4bff33e1c1e94d267525a36c428ace99d922f6f862c47cedd0230eba940aa64dd6894ea1733366298446773f075af988909e200454cd83885bfa0152314bc3f25d5d4f3b00ab971a7c7083ebf711895a8116bb03984e70efe2a13b783e9e28fbec5974b02d3e76fdba1897f150b0240165669a6110088447ad5e83295b01cd4bc609a9750505c33c8f3d7c6781ab7b717578243d2580335c13f2e2356ea24f073a7ee5f24e331d216046307769c637230acb95e96782101cb18411be4c29081c8a42c705dace005d6690ccdee8bd8494445d126c05e0a718267653bdb01f6fb9de16ab7c99f41884f4a9116dbda971c7ccd4410009dcaa066634af7d7ff145d04a65f29e8db61a8f4f7e268cb12a51bf9dee9e946eed9f41997c9a1e603f9b9ae0a2cba37edc345817f442b21ac00606e28cd24a05c161478da78d13a27de510d60ec9378711a0213fc0abeea7dee02ae0f36afa21a5e63ab5e33ca47319f372b981cdfb6e48020e966f9b6180a2383af70700ae21c92560ba7e916d689e5cc4b53e5b04d56027a6dfe872c2b136914dab9e5d24bcfa72a49ca0dfdd4f967a4ce7f81c5a2a5708567ce9d1d8ee4b5afbc1349d4f26cb5412631a3fb85b1d9e16c07e957a7c8939eea13e06049e38cae26e9b30d60446ac5e5c2a6096966470707cbd3ed50fdb9f2124bd96b4379c7d22906ebf942ea4005eef57af62aa9cea6ea70e054fcac0bb09cd398df1f49fabe1fa6561163fa4e48bfbc81ddbf6024d67af01f8c16d80f0a2450489d2cd2ec7c9d7d32f20f972b685c9b26d16f80ad9768a133e77a22ced4b8ea69106c8be56850fe26028794d6e8c8bc874fafcddd7fa6a06d5b2d127c44807eb174f9585a547c7601fda3747cb076ec960c22daba31684cb6c26d0374d42096b91018232b245ed371a92dcddf0013890ac7fe281ff32de30b77e587425c50d28a187b3876837d5cd56e5df4473a77b461e9449b006783bc5dad4559affc067f1cddfb66cc4dbe4f42918fe92e3cb569dd9385ee061570ca45339fe8dfe098c985d195f54f67250325ba7793b2864c32d4bf72e6d3d04741b7133bd1583d7e9350adbf30f0240e76f5ec02d7d510c7862743174aab1f45c5ecb39ee172d465300ede0af699a0ff06a40c570b12481588de99a7618eb649db4803967e5cfd6f57828748f202dad15725acec6a44c24760aa6b845be65d12bdbc513d35ac0ece2ed91fa6e1f2c69634422256463f87da092b4693e24fc806386591cdce232502895d8667909a29a512373c87f23b5b5851f8c5ae1a85ff75838b79c26a356ae78c26ec4e6750918e2697dea75377b1a6303ec90f929cd823edd79501b5e7a1564f9c7af0a752fc1cc3a2272ba31399e4516f4e3123c76afd8df3ae881d3ce7b20de54dab238a3f5bb17e17a9ba4a359da1a307e406a24d202a85e8aeba94936e246048bd5f9d51b9973a5d1d327b303cfbc4f613338118243b5ab4ded2ac384c4eff61b9075971ae991b27aed8d057bc2ca4edfa0e0ca1a71c73dbf2a5ca80442938177759b0ce03845a42b74734a42c58de320f909433966c76260303f823b3d698fa22c4797df995efbcff791fe006a6023a06debd142c66133251e422211994ef5315f1f678b2ee0f404df80fcfe65e76fae479c0dddd18545f6212b7b5161174ccdf7f394ddc6447b9e09ced4abc18de9ee8e87d2744b3aab30c2080d2c83cd76b5b035bbd38c6ed922439872189926d6d8ff3dbfb76b7a8c23f8f051b615de0f39f260f7eec00e774c85154d7b6cd6a4375220b318e60c0f941a99c86832779640017621b286984e890aaf49b000a67aaacf9b9450fd86eb3d9810119d5d985bc37dd8cf29c110fd7d309d7db3cf607d263af3c0d8a7ed024982280f157f97dc4f31306f61ff4c447f2a2d312709a1647202ce0c71c4a684d8e6512d746a1c6f872d254fe978739818841ae2d2222b33a9ce072a9d5eacb881fbfca9c4f7d4e0a03a1106581aced98873a6851ef9fa5cbc507a9c2303344ecb17c350efab63f3e49500f7c6a142ac41fc56f69a7fa408ee6cbb248f243c23b27fe51f46f14a6b30009c1651cb01f66ae1874c7801ea8c56b009adaf8fb1d529feea21fddfd6be751cd6449a8d3fef5d6837dc0cf2a9c56017e15117f01e13924f6632ac9647503a1e76b2456606d529ebb8b5534d865d4c24f2149e641888475c2f7ccf22be8418c8d9d27db677c1103b37d26988e7b3ae457526df23d5841543993e47f9adf73dba884b6d2f0b640ad3308812123d99ec8c1476b930a9e8bc336fced8fed480ea10732cc84e9f5441da577f32639db5c3b4e569d01e51aa7019c2d6a920fcc0f552f57c41eb6c8493f67f1e559f2710c3772e2f09e7415f5b15d194c77c027048b0fbd214d12fe014ef835928c5c8d7ce36ed1512cc6e7819c99629a11af5b46090de3a7c6e168f891e4dd8fd6e46409def5fcdd74e37873a71c5228d333567ce70d22f3a904a5aedb566ab4c23b1003b8303250e336fc1c3cf3b0c420bef35ba1305c6152e25b1f0cec6252c35a0c2884cc52aad93b227ade63c325c5863595bfec17054475f6e734eb7fede34d99bb706611c6e0778256582f4bbdc3cc59f8047380046cfd1fa0d97089243f0447ed00325a752d5923e4a9412eda5ceae5d0ab6bb8bbaa996aa890bf8ef600354642fb3965e1b391762335d87ac00306e086f2f9bfe87b79c3966617471e1f834e20378b127d0b7d2c6e667aa651938ad063976e6e606f3001d55c3a9b094fa7daed0cfb9933d84cac9a25356f87fab35928538bdf6929cbef6bfc3ff18ea112ca7edc8deca70f37123966ec3b3a804d45b856e01620f7788d93d1ff3bc79f819d207c923b43d018bec67202b476bcc9a00fe0887e36114dd321e4f75c37c7850da9ca34c7dbbe4e257ae247e2a84820846cbef1abef031a821e4ebbb89515dd2958100c682c5b45cba7895b7401316d2805850fb7e2a2503b8c7dfa989faf3c5315d12c4dc7b1cfc76c4c5965c1dee5380273c9ba00158e62630693c309d1b1ebd2b9d1184be1fe2a809ecc9df0a82ebd64f97cb6d69d5dd1a3feda51204e624ecbc4c4916b7ef6df1ad9cd3e32582bb5df856a3aedce512a1469a005c1ec88919335b73be50cff3a48f14353b1f909c60e00fc1b9d6bb3cc44cdac2e07c5ad5bb878741acb907bcac7e53a7208d873cf5d9d4bf7d58304ab18c955f00d5a964c0045c63d1e5ec3bd9bf066d996556ae9e4865f9f7698fd69bf344bc6082174e7fcac4ac510af2ba0b8b4307678565ec84a8abef569074bbcaa5d4669a02cad1454df6083025ced5928e11d7e32c910f36058cf7b75cb7512d7856b51f78ad37c7d3a3734774b091516ac5754d7fb13c1d8202ff08dc67339a7784390428043d1ef985728cfa84f1cc322bcece05b38a99d391881827db9060601332cdfd86736b2f31c9e8fe483f08ef8040132c3f63e5c3013647d6c76a2527d5e31e06163487373c61c08c6f7b2c1e415b4bc2f41fcdb06d7c9f8572431e71ab04eef5f806b0aab6a053f255a45330bdf2527c30e6890aa35b5155ea189b1a4aa2d79fafa39873efa8c044c8c7740988a117726503f4d7cf32b16d55ba79afc92e657e52eaba518b375ada95105a82b0fb75a1054ca632810ce2744dca8cf5099d4d3283785f59eb2368cd3542bee8cbfe8268fa3e9ac8f1fb44194c003960e4b637fbecbb5b72e3b22a7d7b542b7ad0889e0badef3a59a865a08c277b8b9c2e171d4155a422d8c03a270d5b21f8eebfdfba349ff8ea3d664db3029f36d4088d71300d3c57669aa0d159e5bd56cfec2194fc6d93f87fdc65039234f7f55f361512158d0c87331c1600e530671e7e924e4835a6455c4435e9cabae0a635456dc0be4894dd4f219621b23d5ce82d65ee8826c3b5b376a65818544a4713f65727ae64dc17c2bbea9276e09e9ca530cb87e90f0ed1f529daec2f2319ae5c714093363bfbb1a950897212acc569eabd7bd518ce3217a7a258aaff3ed4dd3a0e6114cd464b20d149b2e722e693fd0d4d92c4d9d16b06dee757dfb8c054a3e921b0c0b265e5c5c25e6a7b3c3e3cd6a7d90c3664486e02b5410aee0c1f934f2553eae178507e28e7393e09e1900839d429c67e8f9141d462b8b3cc9b4e943837b08a7853385d72a500903f5610a0ad88e8c3e5cc600e28e32d6a82b211983712cac5b53bede7f2138f5423cc41f07cf8055928f212020d2fd4a2af5911a1287f665d80e2b5df9938498d8bd3088135091079f8d302aa7905028604b499286d599b82f47243e57dd9a3c5a3243b092dd774bd79b0e619c343a860c6ac13716adb6424de246b7d5addc6dd6bb5768ef949e109c36980c727cee9704ff695730afb08f9429f8f9b0c3ceb7537203438f5b82d7164902a45460898b98c5827d639d6d948d72ae4a9167f56602d5a4f43c09f8af8dd3d0ceca3dd957e804f8cb1672f290186b4f3221ed2159acab98030be62df1a20bffd15275a638ac0f9b92e0bfa7edeee9f15136ea3da6c5e4d805d95238d7a190f68be9dd25363f656482d1ef7648de369ba4375d49a868b81cdb5b0a507042221a940379d30255fd67d359c615979eb1aba65447ad605ca17550dbf42f6df8cfbc671075a4aca4c35cef107abbaa1c0890e4b122ea5b3e66c6f0435efcef71da27b8287cb3a4da5ade64ce347be34d06da323b9edece67e0ff109c94e1d7c8dd0e3ed123fd9326174a11a3b8cc4e0c04126bc368c64d687a6472df5d8e7cf08855a38688523ba0f887ae31b989bc4e5f5fff02cb24371c827ddf77a0de578af5a4b692e7b1d2650cf5f03135483a7c972e2e2626ec2305d5e3b72dab8723816b405fa6b21e9535a87f6cdbb7d04aaaceb93fd4056cab635c1a9cedd48813dc8b5da6a0d4699157702b0d329c4ecf00001e28c56367b7894993ff00d31e573be1010cf62bc809884b647b47cf401e4ecb2e66ed65265259179a42a395fc051ec9c71679f250074729b842455363e7acb23096e15389bf69902f923f6bff527b5c38bd25d4914dcc9d957ee5958a7b5aa2a64f00e1bfd92eafba1b719d3d8e671bad87016fe26d920c9b2bbb02c13e1cdb57cf5dec95fc019b9ef153e508b7cee8c6a5aaca1e454a63eae6d89f56a5a2afd71ce492c71ab8dd0db2144dbba6eecf7dbaae32118429c2bdd9a94e13fb4ec84119834547c2a0122573bcfc8b015a01392f7e294cf23d98be4908698c2c1f1ef7841291e6f01062de239c5f2e5ea32ce987bb7614bbe45a4b2de99d76fb04da22fd5d661c3d77eb76958d29c8cb13f36a4e3d0f879ca5e91effd091e04abc533e2cd8eb22d4323c4a138e468c2db579500ac821c021bb625812b986988a155b2297bc6af3304fed858f1af5b5c73805a7bb185b91dc072183ce00a038abaabb408de99e50b54f0957d5029f17ef9b1d48eed754fc75dcd831ca4aa5acfa1a93c08f0453d69ed2c9bd0160f41742458bd5a5553e9fb1593b39f27c4f41b61e7691efbacfd134cbbbf7cf85f33721fd592337a03a6131fa64319a82966d5af2efcc883d45b7279f7970f9bdcc442f4fcc2d2d9ccd0725c7d8e1da5ae609baefea5054a679b629e104c8c9e8e5b001397a571c3db891516a06b5bd6accf24d4092f121134bf087d8abe92fc3f2b5880e2465956bffeb7392d3e7f228204f468b6661e31acc971e7bd02d5adfea9040f0d02b165ee329d665653f9100ef3b34f9fe65971668d2e4254235593a014722dbeeb95fc3f583663e190c1d1387e500013a5074c9b0d4824ce3825163a03bf3c8c0cc5d46fb72c82a773727f68d41b8c94578189aa6e2f3000d0a3cda80d8b1a856b62519c2890ea155e55b10bdc92395aa5541295768b5392a06ec10a804583a9e8a676cd1b2cadae363acc11b092c6cf29e4f3839d05b67d938589411fee366ce77ee66731450f865634c2722c11a8114736d63cae78c1931958a476fd795638c96321b9624179c8c7961aa48aaaae74c8db8cb0f622d8f7d1b6d7945e4e44e937fa2972bafc0532d4c92c270e964ffd5418007008be7fa080e356c9ac836e4f403f31259dccc594e3d371f9c0d371e7b1b66633099e02db5439b5097de2cdaf3c4e20cca1736655aaafb12240a50722d532ac53933acac67f27628ba3cc90438f09ac42fa8717eea7c99a2a98a3eccfc723ea4d26c300d61a78884a58845db52c301ec86b0e316cf53e039e310479c5580f0f4527a159525e1db0856b83d3a8f6a92681d74b58f263b7ac8fcddefa109f11288071093bd527ff6e3f8ad4772fe614d7f5520f9d35ebf4e4129286ce6c4c0246e776ffe4d0d082cac092a0045406dd6192d0f64ffe6772c6c126481fcecf01a28af06b9c0555c7a812f96128933e695526587020acaaab2d38e11e72dc4798781b1f29530dc9cfd5843b701d5ced26d366cf7967afd5e8b0990133fc7045d00d6f9b26c0d42016ae2b67d52694527eb16b5261620e0ca70909ff326f195ef76f01b7065d174640755cac9feb14caf98e301c0887e26ff86730e4d955998eeed96f6cd748ed7ef1bc340321de29d6299c15ff6909d9707519bdbb3453686d3409fbdfc8a13b24f20410e0ce5812fa0f495f6d6b20b46a99c6e00c79972f2d13770b7003823ea827eb15f8b3de86641a12b5113096c993a44ace677ea54e6f9c27a955ff6d06ed16d7a915a6f92b6afa5fa5f77bb6813b5dd341022d1458e65cac03d5ffacf5eaea09f8fcb18420d0dfcc1d44e1bbdb584a87f563734f92c8f10becfd93b643a7396170606fcd74e6e228f27dbc72e768416a2c23957c7712ea7a59fc3e9a7d7a01e845e52edbac72a7465c6641e74c9d61992bb1e48d36999d35e6f8a90802a79886ee373457416a82f078611a9ac45ad640bb363a4232ede3554f890170853f89bfa6306e051f7dac65c56e5ce59a07fbdea980b944810cd532f7b0606f8e5d936cec075f7928704b66a7b1d1f1332aba8146fcb8e16ee5fdb364716bbff9a74fdc039b26b7af475c24e889dcda82d741ace7c3dbcdf8a8b204c0ea7a9075292c8672c0e0bcfe41c866323c75659171677c66bbb04c50ed683f5a0cfd480577bdc786acc984d0a12ecb962a04fdffb554789fbc689c5fa043fc23d5e98083269ec3cb65daecd7482d5a089d1a7f7d1c5826f4d375ec3eca3a2932247011189556879749cf1437223291e0194cbd5085f231ca8c254dbb1f893540193c12c6fd06137fa0ca2f095d1f9c5a4eaa82d2377c6a0a4e88f6db6449652d05f9a7dedfcdbae042057bd9764cb81787a558f130fb58a1c637fd529f6d1579eaf0998ab5249f574d3f072916aea19ab8533dafc10484006ace0b0d197ad3cc8debbe44faaca649e5e246ecb42e7acc1760fba07dc4b99cfc2100a932ae6f6e16af735d8127795c0d0bdf0b1b82d2794225da6f7982e16f30935bf905859bcf3ec477771c9078fc89e00de4a8fd5ad1f7b3ea59d942e77551044e83d8b739011560bf0b92979ad7d5fe14c6713f4ae860c84cb0af584d300249c3035e2c40394b9503e4e3f5516126d37a7626aeb635e9ef64592b06d125082143e8ca78ef51182f1ca2e54e6c518027a2accf1bf717a761234f1684585d2810a4d2b6e72e49a8d7783923a3e622dc4b2b9758159e4b544b291ea40a12e513a5891acf250fc21c6c616f17873f935a8fce55e9a8ca77d694d06890b5444e6401674a5903d1811da0ff61b29abb2889fbe37c11ad58a3575cd8648d5dd52da8b446a085f350f2f85296fe2ffb65a6b6839894c2d2f1bbeeacbe5a02c1ea9c7f3ce990913363a35438b58b3ea9539b571ae59b1a0c200ed8319e281a966db7c8bbe33fbac37fc46db6a91d751dd6d37a5eb87ffe1149d23de8bcc021605a20dcba4809ff9b18aee91be8221a85d6e44dd367a78412ea9d9011d7a73622fc7cd9020dfbb3c61759368faad9396188a4b1d3696b2fd281ed6fe89778454930f403e6ca59e44a4ee47a598dd50c82ffaddeb38d97f7c956a222da9f5f5867c5b52e87be1a85101010186f827eae98fae019c363ec260cae7f9f46ee9f359adf7039f2d5677728d4c5b857108f23d960df781f4b9f02fa16ac2509830c4eb70edb9c1778205b22748df2d77299b0668691b68da7d945142737654b9292fb966b2d07fd3556315a901476fedd7f808448a117c715356c70608e3765b3ac0f19a3a608b5f1d2ce67b2aecf76d6f89ac477005fef1044cc9c0406e8ca09edb1bc4e05d0ef268d1e1a02d1b7434c112bafd35fd224600c82fd44580c4c857b8ee55b10f736e93634a8c496f342e7a8159c10b64e5ccf8529ec981eed24fd8e54288c105f26dcaf2e02693cc51cbff2dfb8fdc06cfb2a1b6924015b7ea417f684384a521d34e290ea6b97a5ec808af5e574e67cb5e2312f4c47a7f0e768a693905128a777d97ea384cb95d837d32b0fe1cdb7aee6d935966d7f97289e745dda46355ee4f02ef166ac55557da3a9636dbe36475b47906e18f28f492d0a9e915794198663654ddc8cc681a9640bbe5b95c51256510ca397f252d84d90c21bf925911fa9813706eb7cdf6f7bfe6a35afdd0eff919dcc5b4e55f816bac5532f3f78df2d651e8cc43cd16d2a48e2ad5e8ff14964df120619c8e4a3f4e0a498309a135a48972097a991d8e46ddb4a104ba651d40ab1c9b192e63aaba276eaa27b79d212bf7ef0f7351c1517e003930fe262d01fab0c9be86c6362021684b63303cf", + "0x3b5944461642e26b9ea483970adaca91078dc8826c991ad82f55a4db6fc67958e37e5095016886dde8b5e898744a1d31950b3508ec98272558882c04a12d799872c0cd152cde8d36ba9bbf177cfe74de246c6c52246cb34859d5bb381e7d774bad777a4e4578252e30db080c039b75a5ac4b24670c6fa97dd0441d882224511bdd45ff3f2f152b46867627373d655062e602dbfb1208cf40bc8a462b796339b44f00b7768051c8019fed1dee31793022d2dae1fa97024787028f942c066c2332d4acd72f020ac15081ce3aa13a5087273351c9166db935efe985e0c93ecdc06d428e0e9735ae1f84d7d596e98997f3ef116d61705f11d09f9e98ef3daa336f68f140e1f1cc62294c6e9f06cfa056bcd63623c0e7aa435f2db11dffeb6977afe73ee765262cf4c392b8e661ebd8651a94b2caff8c7c78031d96616fbeabfaff090b66246bf098b7804c57420adc34cae658a1a7c97c313f9326ffcee7375834403db132166784769f63ed9be62ce19f2a3e60f0474184954f1bc8c81be661a49f3d28de71144954d45de6d0b19b9c177c41e05651d924c556973db6c3256fccf2780274352e0b57e53a412322d2631c4e7ece2e5a44406a949e98d8a877fb3847dfcbfac01e830c5322cfa5e0cb047f04da7027b4f726114c97627a0cf194d7f868f1ee8203d00c96ded30e515675d73a7c7af4ed5ac70369cf9d7b2cbd1a07648b5d54ff311a153a5c360ed89779cadc4df08c3a4af85b9bf57d0ac1974b0179c524afc7ad05e4e32e4109f7869aed197f1db256989324b89fb08a1653a477641842b553b3f4410a0bf35dce6d6cc38c0398b0c787609301c435ed04558e7d628963cb12311adf0d4ddf8fd96e258aa111558dfa52cea5d341c8fa2b17de199aa1c69e3e495cf166729e0003fb83d666a4cd10bfa47eaab054d6528aa7a11991ed246eefd306bcd29cce157f5c053577fb3262d61ea081d0240a21bb263ffe607eb0d3b2d84d6bc611a4ee382d6c4b981ab324d1d4189e243662cbe44ae320576a20226e18a0edefbb090bfddc96340147cd4845d080113af9d91aa9dc3f651349cda6a585c9b438a85186f82fa610f78db603788eec2c823ca2a0353b9a158ab8dd625ac6e588918b75c795bd7303943cce9ef47e878051b2e959e9d829c286da820d90b522d7c939e7c83970581b1a6722112d86fe43547535d4e2b8c63d6fd2447135e15226d82ef159e70943da286404952d7dba714e80495430f5e7110f4a5f76990d509b4406a7fb579c1e5b8950adaba0b1ea1ebd34a1c1493df20325ef2d6ccfaf2db7d904663bac0f894d0a89f240dd625fda55d47758f251d68545f2a86365723bb95a8ee5ac6fa0d94112320ae17c45341c700961649e88ff2b6688f1ac97b4d74ec2aed7e54e5c77ff23b25f3204014b101c5e7185ff4992820f6beec9bc09127b7793191d88a97fdf8d3578257cb5954509c4f6416894fadbc358f867fdb61de0f90e744fd1bdbc65e229e78c7670310c6710c1e64d7acaf2a28f96328c3694d4c116ec0b2924ec91a5c3520fddb8508c9778faf74da1e878b3564b9179b987ee7344a349c93e55a3cf7888a51504f6dfe51a90b4c2c10eee847670a2efa065ee125748e93dbeaf486384a1167c427eb96e762a6e202998570dbc23051b03a9338eb217c4722c5a765a663724ec52fb6012eeb5b70b3aa0b3bf7a4344452b5d25e6d96b6a6764e05c9a62a8581c885e12964d7bac56eb7041d9037bf4ad18703823f8ddf31815d23974fe6ba9d52e7306123dc8d1d94441f9cc325fd77ffbd47d875cf6821c43e9fc7585775fa800a9b068cf27556be343cd85e49a95d7bd76e2b5f76c5e57c680fbf287b2f79aaeaefbcaf82aa90d7a058ef1792be23177fa8a05e0f9c13bc95a2cba577bed735ddc8e3c0ec1c2cc4e1b8ce757ad18bff851f5dad1b5c8f34bb7a5e48c3ba1ab266e66a24f2079a7ba21510767b8a80a431ecaaba70a13eea1ba5784800ccdc7968e48255a3eca50aa0a0a9d964ce01c0de28745e6330a52f2233d40d46b39de2d31e198b3d8058b21bc7cf2554ee7bd4304720a334fe3fbba537c98eaffa340dfbc8e27440d215db3fea2b41a13fec882a26d1bd8fcc3c248a232a26a6c0ae0968629bad782b4680bbc443fddfd508f9d33b6d04390aaf53f06e487bd36cbc9ad1b50729d216735668d2bb19c2bf3211bfa937686d0fb2d190bc90095ba4e3d765c0215aa5bc75c179ac9a4d72fd2fab7467efed948d8d09f17753e632e2a3db66695727605d51f01c66d4a14e1b4e4de8a533814299bda72048f85e0b7ee2a24504ab05dbebd1520305f6a5c359732343b913236b624da860296c3859016f1edb011d720e98d5100017a86bc2ef54e0f82b593e14ad253a1d1ecf8123ac27a33fe45326234d892448927ecc6d7d66bfbc1341adae7451ee146a53b0bc337bd89b466d82cb395d321b0cb080d50afa434e8acf38e545fad3323c66c361b566379521e2f6a85c0cbe0b101bcace860332f8f404788cf08aadc3905771e786e3ffe221d5b6c106bd15f2e42b4c050f87111f14322fc4eb9a7f4e62f1393c935040ad8925366c755d29187cc1be9d1f04236aaa5f14051ce42e6d5bb9b283ec06901f550c0f0834502f98fedfccd9c1322ac4bbdd54d3d1f75f2173a6eb4d7b8cf3c09e0e0866e9c3f3389fdcd96254490b5bd696942536c78ac8aa6b6d10f47a288ba117a0877f71d6c72af866f90cbc44972a908e12c8b207a8ecd45608c5443a49fd92e3c5dd2fce5a68b790a2ef58e9167163e11ce7231190d424103e424fec6ea76b84749748e73ccafed1d080e1b6dfaefc15a4589d718d09d10a272719717e4382938f4a6b902122e1ee07d19deef889c606cdcd4125b2706e9e73d7b60323468c47e60face0ebea5d590f0cc43dee4cc3198d8f29799df2ebdc2e9c44fa9fe1efd6c2297a0280def55f07fa4da3496abc455cbf563df885525e5bc668680cc19ddbc38e1297760f49cc3d622a2a1edc148bd728d020c0def0748b52ed5b046cb6b09756d1a34bc126153078ecf05e77c460d2a1a5053960169a6acfe48a5c03cad53740bc62d969b50ed77bbd5f9db7b2d28ea8d53bcc564cbff8c1a82c19285777f27e6b143f4513963dfbcbc470613da15da3ca6a23962fc1595589ed744e3acd5ebfc34ecdafcbd885180de6ed2ab367d6fffc1366470f7efac65cab088bc5f80337768b10b6929b85bb5ed1f02ed482e1f4878fbb101cd58ca8f228a04190511be94f2b11374bf4d3189c4c29ed44d9a9d0ec74800a21c6065c86793ed5721fd603c0d1caafaa52be80bd9f2bb2d0358afb23ac963dcbfdafcd03172722fca1a606b87ba5ec42035c5505dfd090ce0a289380efe3ea3b8ddaac3b3bff53ef0265607676298c664d5989b01653837c9d6c28045bba8345344c969dc8618bea140add43e83e358b8782b2d076128b0c1f6d25d0fa622b5b02ea61298c994125f6da793429e9034ef10ba80d25cefb9322724a9d7bd9ffa9c7e48dc3dfbe7562914f785a1c9a2599290820c7475a910aa35b3b993cdda41a75b44a0be85cd1b2a83e7deb52e0e332d7360d7aefe1b38580e40defdfcfcc7f2b19ff6ff4489eeb26815e0258a46944a367975dcfe270c2c430ebda63f948219afc600ea09026eda58b7a429ae1d6aa5daf83daeaf0cfd238a35bbfde4d96fc84890ee1218acf82b4b76ddc602f238f263decb33007aa1503e82cdb30a493972b2526f9faa433db61ed6fef9fd2cc26f5bd81bbf1373880fdde5542624852292e90781e36b573844102ea472ae116b1e4f31d936c00075388977e8d17b907e7e2d824f8bfca268b3453129bf36db3e1751ccab2711b46d5288042f27a95225b77fb01598723944294607bc814b2ba6fc7531996dc4f84969c5302a7e1e6fa3f128f33249d57f38617ff4698fb7c82de854aaca9ecc37a7c74c27954e9e6b1ee23380e61da2f7be6bc092e8a7d7adf6898b6e4a79d1c96facd1da3846c02627e5eed762784ad950febd991dcb1d67a9673de08975abb95d0e2ad65750719ef43b6d492b0fb17e43e38e37a70f8fc1064a8dd8c247ea5623a3d09c93236f06c1810787ed45af9dd72f2ff9e64345c96ff12504868a519823ab639bed75cf2e435ed74a49bb925205a601435191ee17ff1ab34f0805574ee47523a8c588783a7e3e3c0b38d59aface0e475903d04c730db966640100a525a42e7713f858a6a5610a59bf06da7cde2469aaf8e136b3bb3b0375342de49a79be436a487d61679cf36296b31330e0aca380b67ec29a8e2a5cab9897c2edcaf6c6a629fd2c8921a1fff11d6ec2b2e3c4b7de5ba2607ddbe0d4158df770187a0d873686f386860a8383b95ea357a79650ef0f6cbc22c3aac555ed940cb787263447df7849a3beafa4541e8b3aafc07d2f85e623a0ee04a1b4fbcaf4a9a497fcf90d619959ac666e92b79e1d62fecc10b16eba9b0391197bfc3af5749a59725fe9be36a72b8479fbe8e3c24db4131d3d1f76a6557879a0842d2b69e28cd37e643a43cc037577e5df8baeda9b6bc770e4182c69b4f3cc0d1f380e7b9010dd3d5855260d35292030f42bd4884ba78d385abcb9df81e710f640db2c5cd2a12f3238255058669ad9b0ea1d9ef1e3bf5c48e7a1dd0767eaf01df36262bd81c61a41373ac710e429686cc680db9fafab59ac48a69d1578f0e020d3b6f1967b3a42913cbca456a188b68e5eb468d83d73fc2b2d857770a6139e5793b87dd7202c454d612da4eeb587ca79de1fbf21e1b59e2cbc431a5b4beccf0579f23e5dd78860d875fcf801d87853634548473a323ea6100c6bf29fa2794cbcde95d02587595ef37be7532be91e7484e93667958ba6bde4ab1213dc4b9ac04bafc92e121e2f6408292e4239692eaaf1ef2f87bc8b0dcd2819bb45e9cb14bf99ef48c0f50e9f72546a945029005ef54ad4b8869e96daa4c64bf84a7709307828335185e8cbcfa7eddc349c22f706a096e7ee5bed51928cd428ec951bd3db9b2724e1c5fd4e1597b55323bba1bd554bc3cc2dd72629bb27960f910cfe576928730147d991959d471f54df269b630a2180fa05c5cacdd1624a50d496d0aad327fb1affe05a202dac509b9692141fc94c543e83e88db04d5ab9ae8086ee44989dad56e2904976eba58f9537d798cdfa1e2136c3870e88b56d21e3f82158821f2722aea45e109e3fe41ae7535ff5693d7b84d7db84acd2c3f0161cc2dbbd23b510f5afa3b2d8a6bc3387e5d23ce3966474e3e8113dac4b9b2c2679de00f6cc10e1f5fc04f446201e0e7a1b7452991a0a383f855fa8b8780ba38b8ff7e706846e9d0bca248a6fa0547d22c8213bc860aeab589c4a732e1fe5c522e558eb66383748f763542dc83fa2a3215e13d92bf4685d11730b0d57cc5e94bf7abab73238395ceba3e820721bc77aac04c0b6b10b29aa6a2003e4df4d89d0833ddbb9e1b87046457e983073d53d9c9014a1a32ef8853bfe0f824a6736d4be6494ebb46f50602094782b8b941188246e9dc436c1b81f3f4d81debded5ea2a102d6c7cb097df92c7e2b78d4a7f98a03e9e22f214a678ff9cd07db895760ee6227d102870c1e15da04c5b208e4bbfb4bccd8117ad6c9e796310b5d02f01cff1dbe44c0a187f77b481d870b0be506dc531aacc56e73c2c55af64773cd0c332c7bd9665fa78b317f9c91479df9999106b8cc3ba500a6def091fc4bacf7848eb20f6b5ef5ab3cd82099a5efaba01795cb949799abbaacca8be77efbbcccacd79833a2c897a9045ccc4707fc32a7d54e9d855b8be788c4d8d4ff800f77aeecfea3ff8436774c47119fae2affc34e567dcc3d120cbe1be580767a81920f64d6b55b653aadc937a8af40d74d1fb5e099e954cce9ccfc80ccd967befe64b59bd1f51e93a824850d4cd24ba808969f2208d9b9dcf2acbcdcbc245d3128b87798157748167f09eac27b7b46537a302e6cab9bf2863e43146c0242c8bce7967c46ab3c636d80bbdd0bb98d2a59dccf3b38b2016780885c9a3b333969c2495a872fa0066ffce21015e7a1517e6781e9414b2ddffbbf9276b83b1db36ee22b33cf0968dc3495edd10e95f8f2fc8f0c0817c9e98e2fe72743cd9c827e263505a525dba78aab05883ade83c402cf9cfb49fdd3176c460252291f9d170d3eda8c086dea4a1e6c5e547bc5f9c7f3528375de008f275a8771b3c49e32b0f592fffd065ff9ce6d36e30939a088759f7537ac8ca69de73c880d1862793a2f7193c1ba21a3802a8c85d7360d1e9427c19a61072eea7a797d8ad844857b1894df2e87192a35e88c5734994204cd749b7a15b9bb308d412188e7cec46543f0764156bb3acb1bf67ded31bb851df40199cd30056914b5bf4f508da8f16b43e25ebd0c06dfff6eed8e31461292ce3d8c3e22c806d7f0d9ef86c98a9dbfb794f6a01d08675894ae17e54be6e550803293a0c76fccefee0431e26cac7fe39c999fe150e1d3dab068b2622519b7710e83bf4b6a2d33a4cc5ed81cb728bbc21e70fee5e7d43ba349307b18ef6b4fc04a23ecbea0c0957d5a0ef6eaab5c103d7b34531d991313a6abe353f79cf6095d78344822627bec3dfe6667594c9818c89f13432ebfa2c7b8f642b96e6370887ed1bfdb578baadf15336790b325fbe784ae2ddeded8ccc1739ed605c23e5446580241f9005b8e8ea60587561ec1605ef07e488fe10722d25ce925bb636e15bcfdaa00663bf7e20c3b97d636b1335df98e1a525f6c90082f44753d4b93f563049edf3e43a8e6f8d8639d6c91578f49397d40b336035edd6320af851ccf1a813540aa2d02c6955dcc64e224842d6f60eb1de471068980a4d31f5ce9c169e9a3e03c86bbecc5d41349b4c4aeee5c6feaea37ab23037fa849b118144ca1b6b06d690de52d0dcd575ca520b3eb79b8b07a2bb571b05b54ab708ffac25082cf846e27aeab8b7eff370e180fb59dbc73593b1eddc3e415cc03d6e9662670bfe9bab983bcb1d76fcc6e7fa7ade565d760114ac45466d4fac9503f4a20535f138f6e8a84ae431b64b05efddcdfef12220d87240067ce0cbd4ad2fbea9131c63cd3fff778fda340790a4bd53e24963fc4efea24f817a897c2e6f1f4f84bfc45f2cc91bab6e184bdbfb0dcecd2ae2f41539e720e9c4e50cd3c02b64ed7f2c3cfe02d89ff9b498f0deda69eea2b7b2366cfa4d5a99fef5bf777b84f9806caea4aaed2154e470ae1fcf2b981eec22671849a2fd2717c1d0fc38ca38f8c91b5a88b3a89a27bb7e48bc245ca59da9ffa29d8412faa4f4cf1e683dddc6b6221478a99981864b045de11ebda3d5e2a92a9f23135ffa1678fe80f4609f67ead1b2eee457acbd17bab97ec122b6aac5d7cee8575c5e182f52ef4edb03e3586ce6b2c8912085b26f906c20871c0c5c4ee73642f6804d518394f8d96b91813e4f3d983e2675f1de1038f8d46311c5809dcb7a853cf5f5db672c27455256fd320aa11aad41b31c8457ce9f1fb9efc2d44c0bf14e6de11e4b0ef2eca28dcc41563fcb9f310483aedd99b55fc6f1f4e8f217be524f1f7c030e0263af8420b3e65fc2441d198709193e9591ce460fc5053b0696bee13b7e85622e54a8b8a174823dccd3d2a45fa01f604e0f8817cfebdf6e52ee1ddfd52e628d889b4681b605da319e1875e43f1ef7b7c0e6bebead7f306170c2955f34ac2e366535d04c2d08ef16fe96a76901f7e77e910265fc25e770c85c99fa651651150b7bb31238344bd88ba0294158073f010a6020d649097505ecc2e295904fe8605b6e4f67015b8ac307d5a9dd63cb6840c52a36ff8d58f0e2f720b23970da512d8d6144eb0614c5b575e4059cf3e923bc5511b79f386087cb35fcf8028020da3b68b43fb930719467ca7c63e20d6e94bcc49d002478bf04e7a5fb3915e8d49e86ccfb5c060d8ce85afc7f2999ba87d3a1aa5493da441af5ceba17133e6eb5dafca9eaa614f5d2aedb9cf7d61c32ce3cfa31525e121f93e1d6c3b8e738b6d1bb1ac7a179e464f36933ef624d4962dcb66720c1bdae6771787d6a32fe197fa4fee43e77439ed1d5e7309168a3feb4b984c1441139e8873e88dc63787119b8c44f3c1f09a5e4469500dca2ca4925579452e572f49a2c01b24cec1b6c9181bae8b9c41a0adf2f28bb12eacdbbf9dfc7f9ccbc39480a0588f592f64c5b7f9e00520375d8a19a92a0c9e509cea0f220679bc6a3ff6499eb1645f878b6cb64d53c4d2156442a0ea972cfd3288c1cd12b356f0c58c1957e815224e88f39677a797360af68ae274e11d5ea39f97f0e9a9a959d56d238adf731ac64a83d29432720138d0cdc386683c38c7447f2ca94c325e9cd1d9f9181558b04121cace9b6c4fabbb30dd22d0267bbcc237aa7441a6a90588daa06b55a8512bf6aeb913415135f647e81cd86582d55c5e071f7bb3cf9bff5f8b945a195d826e401db764049bcf0f736264cd6dd10fbfded588f11cbbd92eb28bb806ffaedea4eaeba9cbc30be58f6e08e1ea175ace31388f3f5e40f4ed4aeb4550dee785fb66b5cbbce74375c3b279dfb8dc13cf390b97eb2bf604b170cec5ed7cb472fa2df4d5486ff0ab51f4b46b77f2f516dc0684da41392df2719dc8ced62562892a2f317445423808ecbb5a2c29fc7559c23272122a3ff3b832cc82ec1a25d2d71db6722e448959ca1825bc3aa56c071b05079f07f08ca6a92ab09cd590f2de4abab9b694822a3f457e9b0427d2d6c71a263694b4d580003a1d7efc9512473596c84cd3a9e357ea316d56f318fbca891e7223a4c725d5a3863a5cb20c1472a4b208464e68aa8a2d2b491690484e5f4b6fdda7a122168d7fcb8fbdb86e895be2585626053c044c943281f6b583abd90c59f0e5335d7aabeceb078b4dc11d6cce89ddee88856394562a1856ccabc2544cafc3fef241461d48ecfb3b7a62b9d5ab075fd9151aaacb855cbd184437827a6c460dba824ee081cd785340438058f6a0da84245bc223b498f474c235afd5ad35753c73b03644bba25e355ee1a031cf06cc4666dbba50ca1a82d02fcb31b43d729ba6dd3160f56f570f48e559172ccab8ed5e168a3280e38a7ab7ecf5ef7e7b5f99c3710266c1e8962282d9c493a647a20fce426fd03a1564b4bf6b51afafce4e547a95859752f46dd08a7792938dae3c4a70a0862b7d2fe3ec15a0f649d71f5b357dd1837692ba5178aab42beac1f88d7aa169c351c2535a43f6bb742dec3488a8b6a5d139dca9071c4b9c5b40cff57cbcf1bc1e41de72cbbcb41519dae8d8faa0c5ceee4affe7a9e308ad0991f2bdfdf5e96dda72a8bb11c055752e68bae839118a0e35ca11f146955297efac700fae4be079ae4b7644199bb64ce2ff7e9f9175c1c93d09134e06229aff1eb43c90f6a9dc926ba8657983fc459c0c5e14bcc348b30cfe0f5e8d4f1b15265ea3ee2dab408d72b95c77199e794c862d55f659288cedc8b817ece62b370d969cc2091672004be7fba979ccc109c5d2914b6d974446115e4f0e6736fed0c03e03339300ee232ecd15c9c29b0488c5e5b5b90c63a5ffaebfa8180c35b864d3976d67f8c6c5a33265b569bbd7ab3677eaacac810a7e4333cadf0c5e1de7144eb36ba8458128bf6cbc11293934f0389f348847b1642325e398a9f3a7224d28305f4791aca35a7a4d15851da9257616b71a793f27b1fdbae8eeec8c4f6640888fb8e8905ad62d1cf7843c4f0ac9533b95caad5dd486f4996f05d4cbf754b34449d2e06b9f8102afa136493ab8e09c79a5dab7001d6ca962d150ba5673959d0e425153b8634817830f07bc5005b03482b199a19837f20e34d20e380787f377bb3620f263efea77aa116a1876a5bf1470395fb52cdb6d0b34edaf356d7cf0a0c61c9dc02c004cd27c1ccc5783e8d44e3d5c5e60d53da7df0db16d614a84e3cacd12e2dd263092d515ece1eac4c4a5cf4c50bd8841631bfb6b2ca09916e9d30712e10b283aac9f84d23898a27bb1134fde6bf32431bba8c07f6aa4de7b1177a2fb09a024a23a5a12d87b952e5b51f7e99ebdafe0fa0fc17f7eff6527d752fcb6926a743c6e917d738dc37feb0eedc6981635ca2108c57a8f22a5dd03bd939069056bba0302fdf1ce1d98780fafbda115375b01ce57651b0a27e7165174bec3ab27bf0ff99656e15af6ef80df50078acbd59a86c8f881f520cfdf8e6276033abdeeb6b6e0b54a04024c34b77c7603d81729199b3c92e0b3615f04feecf2eb52f7f31e58a3beefe1619655a104989b2f7e4d1ebf70def96b8fa001dfae4b3cb0fef5b0f06166acfb4f0ff0f433a3f3826ec30d360c2ac811e35ea8444b98a6c6285614cc42346e1f1936808f7779c4ebe3efeee06ed7e526a0ece9d00b224de2be9c6eaf5504305a1b4ea7905b6d8665729885b1f9dcfbbeeb9fe4de46e81449cbf18395cf85d04430df7fc894c86bb2506bfa37ec408033bd4f0032f71ec86448a4679ec8bb38a59a3302ec74482bf58a78130dcaa3c42091d91abcaaa9081fdda6bc14997dd29dcfda7841769c9ac9d1b3fc1a11b65486409fc44c4ea512d9cc0e86aaecf84ee5802605b7afe918e64874a00668bea424ff068d3b84df4ea96495874fa52abdc0c2b033956e48c98f4ff88f3b521510720df75e5f245cb5c8fa1b3643b168f0b905d1a03fe7459d6b7cdd7b5ce5a927c11b5eede43bd0ff59882038440ad8364ce12aadb5ea612f76edaa3c1af27c5072b5ae2fd66328acf4004c76ff2df85f015a1c42c5d2926d2c9c456bb39022b24a4c5cee648d01cf9dcee7bb20821513b96251a62163be132f9d7b899e0746754aa5605f4a732eb6184461e7a640d57514d63162d03143f6ea117bba209125529c79b7d2cdb7355bb96accaa5dbbae22400a6e349e45721c101a5b0bd39a116f7817e36e4457d3a5224c5ddc9eff6c6f966e79168efd0fabe141924b58b8ef8e14b069fd1b7f747e9abbee56bd25af03d4570a517400d39ea8c17c75c5a8b98ffbc852c7c209bbb0ddad7f6abbe16abfd83c9ca02fe8ea56d361daa67e7cfe3866f8aa81fed7009e9d61b1dc2e3d66f12e2bee69329876ef8bfe4fa98a1f5d5a6fad054a8400cdbf11f6497974bcbcddd22783fe4db30a6ccf74e40a9f4a0d3a3d46f5b2e35661fa4690b33295935f94f48523f1f1702fb24f3a84c6662358537a1f95e0161b2dbf16db7dd27ef99017aefa587a5126e253aa00817cc5a21c65b79901b549bb59ffef80d739721a68d2e759f2ec2034142abe8b0d3b192e49d0904adb0caa7140eedb391a32c9a4515fe575833addad29bf2952c2d6bcae6546b1b0c80b5330ef93682b3ecd756d8d9e3490e487cffb7a893c961bd34cd90bc80bcbf178a5bdaa2f63a36256dd33ae1cf927aed13eedd3f5e464f8da704467f3e6e4832b9f1b686a8ca947d2f01e1cc9cdb6c2a0812cf541654f1ec92b65bca293c12f8703555259b07fd50fa52793fcb61ac2cee1ca1527d9c3b540f484dedae813aa0867934850ccea96482c47a2cfde00955a84a65b54d69fc8d5174cb809dfd62ee26ff15c842c0b365193e92cc115a2e74cc7c064b9b1f7c8c52a89c894e4adf8a7ddd4547eab9c095aa4d7ebac5187a6acc737c1a033140a4086749eb7c5ecc80c2abc2c5d7db3853f3185e811a5d98683017a769ac457443e17cd61b2414864aed45392e8306dc36a277304a968f67ef23b777c365d1314edffd14948a77915f2ab576973d09802420f1f734b919d495633063f8fc25279a4cd4a268e125128f1a43c468e4c0c2529d9cb3c296c15e67bb37220a4d94e58704586d80826cb6e7514e0f6899a3830121a4aba4f3b0c19e5132cf4831b84f8280976d41b59c0bc055b81f6c93091ce9d19c81e806cd5e81c48d883477462861b97d3a6c735ad6c02561bf9e6ca86cecb539cea5564dd1e1cf6a30adc162b9242668969b81fe4dad127cb66a19f28a13b50ef77bd17d4cbbd4484b99d0fd8900e217151a47e32e91c2952d8a372fadefcf02370baed1bc143544336c29fd859be40d621fa65a47c1b15e99c152c31bfef9adf557ea37f19eb929c1993ab04a7478b12b5df139bfcf0c28a36fddf52a1b5d99df9ce2c0fad905f626e78c5689ccf35087a80e1dbd818fe94dc726f2a883161cd05bdca489b65aca236d39f733cb3ad33f1ab7e9601e34f1ef9a22d1a98988e8e73aad260c8b39304e5a7ef9cee1f4a8d30c492a26a00cca7aca0321c9d12cb4d13a1df8f5ab21025e5180ad5ff3b687960fc1c5e8e1f32e24608462a84ea719e09f967cc3d6a4e8d12b1c6eb1edfb39340e72da7e998f615d0718b5ae04e1ced4d4ff139a0aa3ef93d7e70a4e1da9e38a055d4647e2b045e83b35ab966a274da29cc5ce5750d6b09a9fbcf5b3fd3484ee78457f450c9484d4df4edcb715cf351bfb9051bf40b322791cc97fc15a759f48e9d1899e9735fc7538ecfb27f7927ba816aacc01823e256a046be7da1689070a381b5bed628e9cc69c13116b17b6ceeb76f67a2200865ef77cc8d4d0ae608e447eb467628de66bc9c359a614ffb2f0cfc1f158f10ed6cb32af875dbd6c1791330dbd318f48ea610a94d8b5742c72880c16d07762ed55594c395e7e9711bedd228575462d45715f6834915b19995212ac90de47485f92c7bbe6dc570adc7b5738c78dda965a38828d1387950044439e0abedf2e9653d90d08cdf33a03c19a3e9cdcad014c766506b6dbd47895ca8ba1454fa542ce1b25720104cd1023839b53af3f928c4206ea495e69da52319f1ede38236dd804f2f3b222550a1d59c0fd43215d13d0419b9be9dff27a00bda9585594a21863fccefe5a415cf346bc9bb4a43e28899785fe734452e63bb10e1d7884f926cbde2b64d2a5523cdd8d6029d09ec1b66b91623b562091d1324b594d2dde2980300e73083471f031ad62bf0eaf00a16a8d3839b87f7c22d8a2fcffe1bd51b696180f6a17f73f45dcb0b541edea5f33dc7fc127f09f9efee4b13ab4bf558136b37d1d935cc1a134d876ee07d68b4408d0346328cd7ccfba87ffe6d4f0ba28fd463ce0b5a80888ce69e363de27dffe41843af8e043d1bf9d632ffb600c793cd30383e9c4546e8a6aaf8c66284ecc122834006982c009d29a66b5dddf82d22eedf0fe5416b6fd4e613cb96737ec5a1b388090d57cd3e26607a0b56b7f45263499436051a0819e2ff0e27a8b65355989b75cd81b9b55a80c169815f8757562ebbd71e85989b60dda77b52550564acb0d6acfbe19033f6e4a8be4c6289a8f669d784e8359968a8a74caef27e127cb7de4f21b202829d002c7d784f8f9c0fb16cd64a37f457f4ebe9f8f10665e845e87055df7bd80ccdd2fe13c9f0bdb1dc7110f42d599d528d240d4800b3b499d06dde0d835f08a5a05ba2d8980f7cf901d55bee05bd12bdc0bd2a268bd9946912fdf345bf3d1c8d765c2a4cffc4394893f6e24afdb8c53ce119e73cb786bb9d6129a14fd97f74c7b5b5279dcdf63aca4cd3410c14a185168626685a9e2ad6c4fb4ce88e291651f946c3230504ba38ec0c39528b9f2d8ad60c01dad3caa3ce7a7f01b3c09ec68b8d16c97a525c85dc505447ff39c531f4bf11ab33e1be19b79b71288dfd3acbddbd976f6785bf337fc6c97fd82f02a23efef8ce2d346da76665bb8388f891c0ca6a3c5051afcbd6d573b766c682a4ea59a868949d98c1d5103f27deca004fe48ad30092b053535976dd8bb3829851966b22cd84a54015e661bde6c388daafa38e50e0951862def15df95811b6cf7f446c50d67f6e7bbbece9000ccb6e9a047a752c5cb33b812765e340536fdd19fbef1d59f5bf5af978bbe0bb116cbb4c341f9298fa04faca9b18bf9457e158616385146ee2eee46c039c8c03516a8b5737065683c344cd49def412d2621046e1acc9ca2a194a9d4b89dad5908dcc1a369d2b3ec8c5b8238046189c2a163b08e79c90fda157d7f6ae2c20d13a6865fc6005341bca8f2f7c025e5978ad39c69fcf5043c71d20a9d6d87f9d4a45ebeb89f5a7dace09b80c55b5659929f1355d3375b8b635ec3c3317ac0c059c9402a40ef5cbafd8b458654090cce6c07a99a26cab1652544f36af717dce5557f7fd966ec250274c788c2cafdfbc6f5b5196708adb8385e4ccdc907ffdb775907d105c4cdb26f7091ef76f45df8e445b2882a94a4b6a903ea7c20ac6a02b9ccf44d370efa7d4c5569b3ca4c92e50ea05ae59980d1c0b98143ebfa2fdd6838cf636c2216da3f32829418501011447bd72d737e1d499f90d12736dd607978ca0a2f9be02d60bb0f3c8afffef0ab46723f375df0100049d6691f3adcf444105a3d5b28af769c04ed599085b840d6fdd8e5efd3762e893b11fe27521293b9e257aef564ecc14f2a2472b9a4f0c45518650ec25caf4be27c516d98db1c2c3cb12a242eb185eb5d095cde7eb13abc81c753a85ff44674da2bd2fa5b907a62b3f6a77cd875753f16da681fd9fe50596c77112b71ffae27cc2504b22ad12fbfd9ebe51e2e95e6497a465f4591b8500b66974d4b3ce5f5dc4ef8b8d24af870c681b126ec818e733d2f1f95ad344b9898c7f2dc5067b9078e03a4df475115b5c69185fa99ff48db7add39b0dd9f5ca77a5147f54e946caf3769cc93d80694ac84171120b11875030b16e195645e8067590e300d06135eeab874d061fdd3454becf588a1f969415b38ff2548e2a063cfc9db77be59558032ccdef62ca46023a81d0de9d22613c24413174c28eb50143658f656ef5fa65b4cd6e1e0bc6a20c057d346e13fa2f6ca87096b9ed6c7f0473018c808d354e40ce69a6e98512217380abf92c2a00948c33a558c2f189e8162948ed883da37e5ac4983bb227a1a9deb9083e02119e781137d8c8ad02f156994813b4b21ac6f2512b83f6d39d1a127284177c2b6db6f2898df1eefde40572cab3ebb8897142d4c13e426c9067f5d557f87523b6d6dfa261f2afeb1c7183b5ded465e9a9c63b4b1c5bd0c6b559dc4a1def81ffe65b6f34c585217f7817caf59e188e247a5087d34983896a8f19658b508a0d1e95fa52c3024bacb57d577eafdc7165885878ae15eade3b9bc8a5169283ac2328c229bc324eaba6fd3c47773c4cd36d42ef5ec1ed5435c8820bcabf3eec7adc5e46509abe08f37f278511fd477eb746357954f989e576523b51ad1d4056e141ae3a4ce5518ad17812d272571cc39a590596602bcbac3402bf0946d21b01104488e7eeb76bf2daeb07823caca3bb7f965eedbe0a51632553df7ce0aace51f9bd79637a3a9db506260763d42d363d694085495c3bdc56a2f5a5079b36bff4d589abb8295dea7332cf83cfb4998ff6e2c983015d34f0192a3fc123eaacfc299da5c15ca76297239de25840ea0686f578c1878397f2deefdf2ade781624047b9167ca02953a2dc36b37f26f98045cc63ace3f90157ba84a07ea1192b8178606b5c22f5308acbe942599eee87208c8663fbc4c40952d58338c04b533433fe6e34f9bdce10850b85b3770bc20432d0bb01f99173d0ae7c9207d0952b878b46fdd6b2b08cf125cc53571faf20c6841b12c78e09eae1bf400948bcf894def6977e5577759db973c936e87136a785325d4876ab80c40a3d37acc8d450f6495f1e63727d2545c7bff7d1d918d523b097afce41b3e28452fc9270afcd21c282893e90e3272456a968e6f738b19d1dfa59ff97835e2f37a833ff31d77480562bdb2b52e931515d536ba7b5ed6bfdd2ad3034bad63d50a1615fb057d4160c2b03b87ac51a9b6c3e99c130390b5e8697755c0f4f0d7848fd1901c2ca6becea2aade204aab975071d67a976601d1f40ed08289d91ac726bd7953f3086cf9e27912b4bf9f4dc5b32b877b2896cab665c739c2ecf3eaeb566efdf09f02a221b7f2f9237a523a5d6af229bbd9037d549674b013df08c901c32a6aad860fbd08f1e85b6133584dceaca2244b09c63c7e0333ec879bad584ae78d560692cf34a312e973fbe1ecfc4d66bd2baf4af2806e24bf24c4d1badb0adb182729459bd48d5a3ada4f267a1f4f4939555f217bbb3fd36cae822487a50b2dc149789e72b78334143611316b8511f4d276498b1a287245737a11f882121bd0cefc0bcaf55ce939e129caf9263a10258ddb4d5b13a96a948f3ad0900f918917db752ba4d12043c2b1f754c5aaac91ff5260c063d3e7f0d53f26b781ab49acc30246d80b4a61bd03403e5ffc7ed51a60ee53ea70c0e6afc41826ce6acedd5c1e9da84405cccca4c32719f05100adf740c40a8813bad0b9f8f777b3070e8677270a0256acb1a1eb9633e1dd3937eab62e09f34a3b1a1a00b014b5198e66915ed1693429f7a126a7b2e1c352afb70fabcc5f1a56a13ef6de263181435cc0e8754d4e988a483645934c826b4e4b43416d691382c302e5bb8e806e108df70cc3a668bb577dd2cffb8d8b91fb27ab273a57a360531f2be411b03f851fe45a9527def704a2b8c8c64e17082fb702279301081d7e01eace0ba5c94e64f0489553358f545eaf26635d7cd7dcd4c15cd859a7e34157ab193635b7c098785b51b871672de92cd365b0207a1747b08c84f0e468901a2b9b94b6ce0e63311f0ca7164838b1cd6fec4938a12d45d73dad1e5f461b79318196b7fe6bade00d048d89d274951974ce5b576ead6574310b0ca1c8aa9c4e8726cdd52f253b4c4d6fdf47bce690e66420474af47754da5dc094dacca35c8297249ab0c8ce431f11c3f6c880f59b9c0b805a92ac532e50a9d2d2679d04c0cb6ce4f50360543ab6e5ab970528e16245933a67d09cef9bd51583303de44a42a5c5ef6cf82ec0b5d0bac5c88ce35210efd22e395ca03ce20b5b0ae023facdbbd04802abb26bb982126cb738fe2cb959294a6dbbbfea66fdb97614d1346d2e21cec95c2ec57383f383d906bc913499368a2d2b0d395a8d6f47cded7661d7bf65669d8c83b9c6c74f1090274b8e9f2f8e2a835a783c9a202f45da038eed04e7e724fe187e8ad0b464090286b7d496fa77274f7953ef1514f4e4709b81ef6aa6f3d680c83e2b843bfda24f91a4532507e522d069b8acba4a1e7b8cde8cd3edd2741099707cfec57579739f053092e61ba9bfcb65a2828ae99203b1a334d9f7aae7a92d81705da67fd3f906f91a2b051be429eb5e75b3fe79399cdb904195dfc9f33c3dbefc156c4d1f13036d33498935bd8b275e29373a063506037cf46d9eb1e2a892d91be66e48fa8580663430f7c93a9846b454380c999029282bc91fd764509189de7204c2bc6e7874ce50b53d08c304670d1894c2cbd98df6d5bd382ccb09dce2a1e599ae6186f8049d23c2f4b47a089db97f5ecc4b0fe2f40ac09de6d90937a9a76440fe8626754111ced4eba548e29ebc455d2c825c7a45da9106ecbaeb8f2531c78c15b1d7436bf7a27d08d2bd528176008cbbc656caf667347e056cf597e364687fdeadc91ace3fdce2740e831f84f7b1983bc9d3ede347a7e575901348c6c26a13836cbc9628687e3d1ed33690ee505c65391afc212545966ee06ebc5b2c56f9b5f72175b8a479bb5c83a0d6f4fb74b78abffdef47107761217f55b5d124589ac455840e63609ddd20d3e0e81ad87765d0d8f12f67c9c5c55aa9de226cb333ab170627c2e08589ff005b5e9dd9ab430ab6e292fd2a63404e48aacf2133251e6a74bb41c05af4489f8345a9038ab9117cf0afc7145e8fe6a06fe78b63f274b5851a3d6c4a63781f66c9a8064889893adae47a5f7076dfc7ab265756eeb7bf56073801198d6d948c5603e5c2a0b7262fb82ca88b4808959ab11a47db2e56c91e917397d8a252d9aeeff7520137fb6aadb21659df1c4d022c37c972bcfde690c65464e3afc3cdce89bb7d4263dfbc5b81b527cebe66a47a4cdd086a191942f5cddc18270be2ff6bf02b044920e8699665f0939968840fd318457e474ed78a69a6bd8edd17deeb1f16a00de0699bf1ccd4f9c7a10288b472c33627b762859fb9cf883c658f07f96908ebaf5334564b52dee6e0f354d95df33e65d14ce3f8aade18e88b7a3cdd770293b91201bf3cf0b64f2f31661c04f9516c53a22a1f5a95e3769b5682c5d8139350c4f4e475a75c75c50dc10a1fa019afae1190f7031190d923306fa4859c62ffe9d0277a065c90ae74abca716cfb739f06c5e725120c8edcf7ab1bb67e085d3dc62311e8c18793f6bfcf3cbc7312630c172bc789234ec5272e1491f4ad92dfbdac292a81a639ec30e9fb377ed96c65a4b598a43ffecc323a08ab7e8f4dbe28651ccf8191aacb2a7d72d3957137a99cdbe842c4e2ed2f130b01fc8303cdb45d135931387d22445c3300725ef82fdd4e7c75fcc413ddea6b4e8252b6448ad205bd7113032f5c3999f0cdd7516f7f7266c75df4144fa98781c94d031db995708d13c1c7aed6c92a7ab308e66250f5d4f124f46b7613abac61b70c0536030b54c5bdaa0c94f755949b08a07c36257f18a16463cd8358ac94593db7b0729cc8f2612097b128c7ba391e47602ba949afb94d8ece052655c7397defc526b53f902c7ab66fb770dbf64827dd6790487e69be6f426a881f96e76925655fc2d823da2e0afa1d06842939fc61ac49eed74a9fc7a4aa31ea8164e7586addf3372706e5f873dccebe1454de5477766ebccd30461830fa1898347c8309acf3f878e404cd5cf9cefca8e04959629c5987f4d3adf130787edfc374129f130e64b73ac249b369435b82363d342149045d23a8490ebb62853fe345502c92e3f8df5c0a6a8440e2de4b372197b5fee6680dbaf9c10f61a7883098dc2c457c8b95f2c32cf9340cc2ba64dab2e97752838629bdec8253c91f50f084e43f45d5a453f5a32480c6b2dbabab495e460b2f739f5e83a006a14dd5d519e75d16c8b68d65141b9e8379a448e9404b6f541460faf8141e727cf87ebdb12461d70fb397824463c4aa7b1ef7ba90c7683ccccab8fb594c6c314775488ba2d5539fdf1b74b22a01ccad54a0c4c0215e9f74fcc7433c9188fc0d7c009c8b0a3fc56f0d7f9b70954db313ef5ee0af0027e6d845252e16efcd8f2068d312a76f51f7a274469f14ca2cb7f5a159ed3ff360cdef9cea8779cbad4f7e09ca2ba5fbfb0fe1c59f1bee505c0a15b3291fd0a90fb8070dcd3302fb620993908511f9fcdc742102a354ef71d7552ee0cc2ff53134722a333da0bb5efeff17e55e12b36582bccc04c9e156bc4b3182da3f54337f95257bc2c523e455a3275d222934ad4c3a57c6f7b1e1ad869d8593c4e839b7ea18efd5feb916a344d4dbc217c48dac6a735127d93b70e5647c0b89b9d15678b1aa966e4134042e16cf6232c57e50fc9eadd17dfee8583bb207585344b3166e71b62b9a79648c4ab7f9cf1be349abfa6afa33778e963fd30f8329b5e6ceae68b02f88e5a72ed273975e17005dbaf12a740de5f40683b99edf1ae68f9499a2ad562afc1861198e2b2d3964d6cfdbb0a307dd5eaeb3a41044c8b87e62363643af2f03a4cf508c2028729204ac0ed39b1a90d2e8ac3a50ab3035e827bd29c0b3156a182bd7b35e3d2262ed7bb69f507a63218bfd1f132f52e9d6ca9a88be653cd71d12fda2dbb50afe7f038faf3ed382f2f12778430986cef71e1dd063b952f64cbeba27bcad33cdec4e915abb59bacad5d92eeb52bccb9a8ac44a6707d26a1a08ab676f3d23757bedd732c7489328b6a4d8fac2cf1f8f9ff842932b9237d47caba3f15719cbe0d2c32950ec5441b6911791bc15b2faad36e0593e69de0952ff334b3d241e46c5c716d419343af0f3bf54c80a437668dbee858be00484da6e04eaab530e6acac76ae86d9552bcddbc2484e902c55b5a76c96ca0af86f735772dadae0a3a48a1a29d020dba61527b59b8e481f9d49313b0ecde22e78b4a1644ed6aa53d243da8333145d29cb4c8f1716c73c2bac590ab020443e03c506e6ed5b957c595905fd1da46fb5dad333499d0cc2d045b35218cf7c8a76f65417da1bce6f1a4e237f9a1280f7f530254d983f4051e3e977884f83d6ee4a4a8ce7c075772ecc002b9d0b2dc3f7cdcb5fb18f0733ba991c5e12f8011e7091b86e63c6ed84fdff85b8e6c3234db122752e5add72e580cbe55c58e8ef044a6b469d4769625f80111e40915638822f5e44d54856351c28eaae15da1dda2a58810707011b47e4b4432b99959193dce5cc8982c4672269db5e1cdf100fb8f6b49183bd37cf0f90dd1684ad7633fffe45c0d38bf2918ba82ad117adc79ce65bad777d6ff6be6cd8864231023715253cca6eff2dd211a4cdf338a015d1e0c0f72b21bac35cf296c1ae9b7d4ce61e4736c52300f086874925884c58b4c6fc1f92140b888dcd5bb6bbf7adc8c186b1a80819a941dc279d4cbea31da2c1efacdadaeee44b03ceb9743de492fc0779f2ffa73c766d66a361ca2a55e0856ca9563b3a3607c02751528d5dfd4af81ff2eef9552b4f2051f4be3dc327831d6873a8cc96bf35e2f61dacfc65e9740f8d6f73d57c77209897e59f5e3907a5b6a744aa26ce956adfb61d260aef79c2b770a3d8d0022948059644ecf11abbd30de8e03d5ac29c47195395da50b045d9c2637206ad1d186b0aae32d24d6b97d7ebca4bda9542b9e74f86d81da12cae3233cd3c8f294e848f8151c325aa894a1b98f1589765ff4ecc562e3da2f47eb9434c314fa5500816937d7b67a0dca5fbd74b28dbde7bf6f3039d9a0a14ae51bc2a7f5b836596122f452191fb38cd93ff3ecaf1a0a7c76cd7de5bbf03dc21d6de838242e78d99c7b6ab452c7055734fd1e7d343ba208f85eb7a56a4f93a51fb4a5082fe2ec417d0f62c9b10d6ba729c1ac2a8ecc3533e429f499f9d927f3f2d75e1a8eb7271451acb4829991e2e6fc569619bdf77bf90babd9a2f52e922023101fd7e9e2a866d9c873d42d0c6e32b89a451514803b29c883bfea38f32396395e6f8b43b3ae638820f838f0fdb4dfceff850b6915e5e69f0bf259cf6c9b3008ccc4e5ad06cbc60f29782d6cc310f28f59428dd58b062a3f004e20ebe5c2c1c338ab7b956dd0623f3b89b2f3e260a6684f8752071b183ebdcdbc32e9c9488beebe0144993e489d3389d0cc6ba56febf62626b4200767443329cec665aec7c812fd741cf31cc9f0d33bf206294cdfe2ebcd5e3029552bada2f7c8d760bae9254dcbe24370b33368a1517eecdb759062be4d2bea0d6d28c32bbb12a4721dcf42a7277adef9a51128d518348f8d8432762d13222632cb92209400ba301089633342633975adfb10e5ce5e7604ac1637dd92b367d08f2357351d8745c3dfdd1a0251dae3738583dc68d3ae33e526e5b189051ad4f5679849c5aa1ca7671d7fa12ae3c0a7aa91f55f101b3ad7ce9b98c6214c46424883e635673968566b0ffe681d7fce73ccbfd2dc4d304310e19267267e9f07fd9e02a94307a51c25e48a0f9ec08cd26bf3334513269e265f43cb8fc7313d5d5e72bf16a465bf4d532788fd00ea8f7b0219318328b4ee5a609c97fc70fcc96602623cdb0894b6e1c751c7064ee832dbfda19176e2a5f901bf9b4aacec55840e62af25edf57dcb5816bf845e5ffc207113cccfaa46ba82e59170b3a6b3e646d744c161849a5a586528963dbef6d9b0c6d7459ec3a84928f9a650aa96ae0f5b783ca1b1917f3b270ef73c84bb28295fe5749610febabba1bbeaf5ac5836631b31487ee15904841855bcdde453b8071932fab0537e410f4e11aa1b8b10d82666fed0298916546d199c6be7d9604d8656771f67f66b9f561272e604239880d6df1b6b985cbe39816a420c8ed0e55428052804f4c11e9335888455f52d599b9f057b2c660c57f91f3634c7493d6a86674225cb7122de1c667c80eeb71ce460e50f1af351b67220fc76661553c0d17d2fe690f2601ff5b937bdf2181704d609bea464a9bbe5ba119f2e79822b5a649562dd76ee25e41cd40939bca96699dfda755a08722b24abe9e4ebf9e314b0f82f535457dc87d87f83d26c66dcf93eff06090ae7a7c919dd3c7aa100bb966072ef4bb1db1c3349d7879c222760aa204035abf110cae53d881a65cc20b3fb6706e8085f404039a065ab04802d615560900f44a7f0be701717b07ceae8d6d294f7bc39673df98d2dcf98bb6412305c5280a0ecda1255810df4e4ec406a1f700cbdb703dd77b9877f138b081986ca24cafc6d74e9338bd1c7ef47b3f282796adfc4567f17c631644b2925454c95119676562fdd3e7df43f1fe3b12667e4381dae448539bcd02fc2e5fe2c5e631feb9f4e28b5df881c814e9e6e136b001036265dcaa9b399da39284be1db551758e5b00def1963b99e0ea291f9fd0022c481ead97efde051b9d87cb88bf4c0636e343ec0639a09d9b86687a8529a328793ad0fef4c2aa9d448b78bd361d549c5b20b4360eb84a3a968be6a2594e9a7e9a02601295e026baae39d8463964b2dc8d664bb81ad87b818975a5d9e2d5fd5f7b8046eca9f3f770eaad77d994002bee61f41280f24450282a6ba974d351d889b44fdcad0419e91d9a1beede8a106e1b7a7510f16367ff0c1968cf2f1625e6090cddecc086251723cf90230701e01916d03bd79a32f592518a9b96c3f56e3504a0f17ef3255c5464af6c007f1a9705aa3ec6973b02829f7d9ad0da6df0a8b202cce4af23740df2f535da01559ab6cde7cc5cf8e1ead11f1f4655668029c98ec0deff3596df36dc00e580763da982f541412cf5fc4b7245141a25b1b7eb98aa413894fe9e9394c829627e2dc93cef20439417d008a52218ba40abc4d8070d38ad3eba230ea0ec972302ba0d2c96172cc7d5e208d956df5c403b78d31ce2931b6ccd303fb446b4681e905ce77aef2c59e9787d0a987bf0d5706049d1c95ffe3952d475dddef9ca31300ed2365babe19000c3f56f6c7c02554a84d4709cbcc7c66ead45faf935af4811e69f6179575398a2ff6e5a0e113bafc9c793a161f988dbc2330690a31053a976514b76d8d92cc6b74684ad3efec7746817bd5057a3c15ffdc6134cfd4c95016471f9a2ca23c9ae508a2e8401a4a045ede3c81bc0e711aeb020b51a05c95063330a6847c1aef28cdc5cbc99d210f3e20fc921cc5fa928c0ec270f5644b0c5e1604221f68ae6c940c6d168022fc55aea1832c81cf76d22a4e2d4dbcc7adf8535c667d46613fbf8220385f4d0c828632a7f1a03a2b97a5e462349e44b70ee01996d5981dbc2046b79bb6676b1d2a070c2cd90bc44f9ca2e054eaec76e87bb39cc89547b02ff014e1a3fcbab61ad69869dff5dd0357d32319051cc768519acb5aeb6a0f7058fe24e871219a464cafaf2ea20ece487f065748a9366574adcaa2006b2335d236471b2bd20d8aad00135b350da813beaa7d9aaf477eb61ffb5dffffa9f2dffdaefaa4d5a99a5cb7078f8e87ea865528de8e49203a944ddbffd97f597a9b5dc80795acb56bffce7a36eedd14b702f6bfc6be5a8eb24de776be4dbb1ca66ad1346e87e9bba190177ee754fe392728a7282f71715f34da856606b667b76a01d84b73708ca26acefc7e776d9e07a1ab70d98b29459b163a5a98e4713808f6efe9668ae4090bf6c24f28c6a46796bfab91c3715b801c0405f6a82bc7664ef01f87fa8cc645c20cb1e39fba763aded143e8a91acb78e37e807fb8f476167bf00e75813330a1c085125d61bccaf77658eec865e67d63b65706e2001862081e02d9996aa1eaace9cee6714b396069618bb76f49d53ae64c38bb3492b83d4d2327133ed2da7682856a51751e224b1b77d53f75eb0f9b285f1b95d147b657eadbd475bf5e45a605ec6e8848ec6c803868548ef1e95daac612d0b1d61d396ba2577157fecf2fc390e004130b239172bc3e5cb3369fad17476a7bfd0b8c2d8554eadaf60fb04749cdaae85724ed0ebe8b36f23a4d5591f5f68d14296770c0f8a2d3e295ff1a232ebb0fee7b809ae3e5455a526f9c40c10a4dffe5f0a760e763d463cc63a8c2bab928ec7a901aa81620e2bc6a6b686d94b2360a10b3c6efd7c320a5d037f22ae9ee1c5806122ec4303269585cfd0fd78b4df01107562f918c99dc849c1bfb99ee83f6e8a0b6a9debe5d5e9200593413c7414ba9127f0249451e34b4d0a5f75ef06a41de698cbdeed15ca9265f9a34568e8b83c0cc18d745058868fc8124d4e175ea84c317689e977f6e13c23918a719cadd0695a629b6d5145ec18eb797e064e9458c5773a3d83f5f73a9e58086ba588952cf7963fa4ae57ddda3ecee7b11811ef6eb57dc2bcc7f111a95c4dbe8a8297eab33019a8c815d8e6d826099649f2cc771c525c3e02b05b41b3fae2455a6767e224f8b38610d415a2496a49a660f8bfb850b172d429a2a6e88cc3eea85f5bb05ca62befb8e92603a5b9440cc52eedcb83ec9ad346fbd8be8234900f03c0cfcaf7dd2f8f8286bd94853d25b7ac0c8a45e5f2ddd867464cfcfd1105fac75f18dbf629f5e15f54258e2e9883de4e7297e306b5cfae4ea97ba54124ad4c9673f059bf881be907203462d5d2a79c14cab32d73d4bf5a4e5af60ad8e83f1a55973364db9052d7630ca9a9020fcd0b8385f50de3324fc3031c9ed92b5c688d4427545044a48de2c74e30f35c1662de50520e437e3f8b985e1331ac067b1849b3e81bf913b3e79ea2f03cf8bdaada35b398e01b463c2f7b530b5ce7ab4682476cedcfceb5a9fd93c49368ac61a026b9c6dc7718f27f28465adb6e203a6763792ec016aab91dcf77f2f461d5d571fcb230d2039e26315f350b9bc26251ee5a553ee29e39056c1786ac288768cb1e883dadc69a330094ddec257be1eadc22709d0366200fdada2388288568ad0cab4e9a456912ddb4b9c321d4c38e9ecf9a65a52b9940b76ba3d00a435a1816d093cf6d4d39bf2abbc4f1c588815d138f7fdc4d94b2e5d27dda7737f816429ebec5adab48750394df1fe177bebc6f169d73d7597c94c075d66f235174eebe595721a31004a165fd1bceae4245024265ccdc7e172059f0a0ad6632e441e2312f989b0d06831d0a32cf8b9f205ebf033745e905c868c60cb45ac68d631dc77c06a996a5a11fec249b4dad64163f91cc714afddeea1381b20c8c99d79ddeff1478112b4161554cd13a7e2ee9399bf1e5926dfd26cc692181f7060965b9da590e59816ab5efec57c6ba44d573893d7fc9197765a67ab05adc2c1733fc998e41aff4e2bf5d04fafc95f2f2158b653cfe309d8e141233ae0c69760e902364a35e04106ffc5d3fbde833c32c39f15701761935ffe970413286bed97290ca7011824ed673d4a72ec11bab17722618b92419d5f24b7a0ed093c0a67d44f50d963ab2d15dd73e8777d3da6612f6fdee0f78e2f5f24b1efe8a146d6662aeb3bc1e6a2359117060ac801aae8326e6362fef1ce643be2077c1696808580ce4e283d578dac9387325e553add1bf4ac1beaa3668d1325e119bf3b58432a089b72fa15546b93a1e526c9c7e2540bb5457f017f4f91577f2b65308788eb0adc8f638db3d295e0baac2471d4261117b9fa38947b39abce1dcd73b00f7d8ba3bb4c44ca3c97f42a0b9cb59b8725ef8d0d6e3fb563c7d3306758d8b458c26d3bd998dd8f35c084156736f04c4475d3089eaaed9ea02d9a5d2e623a47ac9567b8d6ddbecb0e3d2f353043ccda099fa410189aab6d35b7e2387d0373296c6afb9909a9ee668750ef6af64e87e6a39e15990e8e2657da40f5f0dd59b9b093674b46b52f2be82e1249ec5225196ec564401a95ba196075bbdb87e804df2984e5db12e6c5baedd4ee0f74065cb8e7b3561053f9b6a6d20bae10bafbaa9cd8ddf525b3ba64cce032247d5559c96e9913cb7cfe59fe3df7adb27d9c1174eee397d8f9f6342b6884a747966b1909be9e9a909305987317d2ccf5c98b918f80c1c186b1021edcef416ec0e31e57fa534eec6753f886d83ae7dfb7f846daad2bf25829336b255e2f55564977fb2f3fcff1a28356d7505618473fd0574f00818121669fc3df2539fd39a07242918ac093019a0d4d78b8f8b0659c29bee7e54669fa24fba84b651d6bfd511fbd98a427af56dfa3470f45304f7e923e1a4d6339cc4252039d99b95b86540507dc95b963cd044ed3d1a66850cf855da35002af1a5210dcb40f83b66aa89aec375773d5293dceb9a5dc90621278ede47c6a4997b02d2818ba39156c6457198e8e40d01b6e0464be0e791af61163b8ed0314246742f9db54f9fed5c886b63b7f3eeaf969ee04e4b97e620c0d4d75a575056b75821ea3f51007a1b265b3868f3b511dcc3ea83047365359c204abe76fef651d1fde156a8467af41225df2b6b50d22a0f14060ceb109634de3b3735f685698d7337afde99c446f3526d2ec84a4e2e00c3f911cced7c17758042ed096e8d5280399ed2e385ec8fa2512f76f2dddc90ef82154a82de782ca88c0e95495630f32d5b1e30610ced5b80446b7ed2c77d706675e82126daa5e8e7b0f35717814e0e7aced25650f5e2b41cd43a2fd0f23177196941e2e13d54c67c7e4d200cc8de50ec2536c31032c8be617cb59d9d38641d01049621242ac59ee366234be72abe6812366b9d4434f69287ce48fdfd695eff71469529b5b7d542fd326ffca1ea9b4ab05f676b921c54e3ec306951159c6198c4c8570e7b594432bbe8479295a5f0e1161c3e2d261ce9f94eabf91958c46cb8cd23cebd95fa62757dda704421fe98dc6e0019b15cacfbc47f68bca35369313c78992c599f5da241b54f703630134aff4201d44fabd0785a993c3b7dfdd116b5fc326ea1185f2fb55ce3b703ae53c8c5a3d5652ffeaaa1ac38bcc4e268f90f14d358f0471822fdad39a54dc5c49fb01c9af14fb24053a68ce05f694bf29cd27dc404748abccfbeadc9585e0c11e3d8fa67e04336f93224fb999aa77054266072c89f201f7c179c2a8e3a7b84631f5646cbb5b676accfc97a732e2f07691d7a6b0d9ebec516473ace37ac7602a20becd2751e151a082f8b46ec1fdb134f763e9b15c5accf68d59272e7ff7a291e69348f9228fe023214b2718bf76ea85080f15c82147b4eb3545579e6b675804f40571987ae9aa09b8b0e0657f0c435431088b68f46cc476c42c093b0d0397efd46315cec665d8ea18524a485359d1ad6429495282bcd3a377bff2824d27a4226ba6a9f8a97aac6403a2b2667bf99a445d6b4d1ed2ceb0c0d79837e4cc354c51b6179c88583326976103c49aeaad3aef6d716eb909c028e13bbee0454d11ae942cfbee84476042aa944a4e74d8245d28e28ebee1842cfb5d5e98df7eeccca0e7a2b8e0042bbf7844d16b1db52352168ceee718ab3b4a3f4f01db69db2e1899abc54b5ab744b4fd138ce8cfd48481835e31900afe78588315a30cf89dd9315b2321fa515f026f2b49f6cd9f7c908cc904c3c8e315e1df1cd542a0f4789d6bd5f8b9914e50ec93361a8a56d90c8ade4189d6bf5f01c87cb5f334d33517918836b635b2bdf5e3c5fb3fa7804a150630941aea73fb25d82d1d9c07c1b0947b80b24d93e2dd4bb2a844763f2c4fe05c248e89879cc6b80861d03f775f7000ef716f9073759364e6365cff92913de6ec32c5cd94ba3347e4386d0f7354bfe132cdc3b9f17d9de603852b20fd22df552d86728034b22e301fc4888231d89faefe0146e30b57468a014c61a3d02b529290ba836036908b277e21f2d554152155043a2d8f9b7fd99d17d5575344be28b136a78ece175db1b50cca76851fb9ddb64aea2920deccde82de2086826fc2d9ff6f9a3152941f3fb4a37ba8d7b8a5f32658452c5f8d35592dbd634a865638a1790fb46c15c6704bd4bf7dfa5181f810ed2cd885f787b70da9a731c53707ffbc528d47ac65d643c91aa83ac93f77d6c6c80ddc72fa091a25942df34d73c5b28b71f96f8f353ec38e5ce466842fabb02e671e075f5a758e519ed87dc29b477473f0bd3ff19a966575c603314175c4f212f0cbe52871aa71ff0edbe9941303ab9e9e31365e4ff99b0c57b3336fa8954d387a07073e7af0affe3c0eff03c588148d7efae4ea32f1bb626424244823c10f19935085a9156e8d801841d35b9ff1b22f4640ef53c4fa067a15c376d7856d3e60bb8fb615c731d53ba2d67375105b6cc6e1aecc6aad94f119e33c7424310a60b6e7c00c5177cab0076fb4b4ed8f736dfeee48fa1536e00bcf21d7781ecf232bfeff6d711df36faa432b817eb41417a1e03e0a8396ced12d1670155868c9488bf360f9a5f069bb9bf1113336a79dfbcef7595a0a5886f1c8e148b01e05cffdad3b5ab872d3eeef8a7c75ee17e2ab6d33b6fa4ec24b94ab81e276dbac3553c20959b2ddaebcfad2b8c53b349f55c21ca28a8fbef7b1d430723e98dce28b0e2591a222346b9cea1461375d6056f6edf78545ba221e4142e7b8aca3f1595579e88351d5a8c9ca7d49ef4a6878a78e371a5066d24a85cc816a343d5e87e304553790f5eba54bb55870aa26ff4988d332c727aa63de22e8571c8f6ee4bf482f24e93523fb3ca174820d19b557d91bde7477edbcaaaf198a2f45fc9626490405add69dfc8c21436ce8d19fdeba1fa39516f5e23d19dee85595c4480e6783f0ef7c3e57499a736134dad31c5c041a57e634888a61d9c86c10be5121fabef723215f39ad2d185af1d58c5781ef292706db6f338f5a43d11bb7fd4bb017971e7668ea3e8636686de3cf9627acadadb68ed06e00c85b66ed28d84f1bf55f327666a4f4b9ff5ae4f1cc73757d066b2a479103585ca875850a7614d02077ee23e95f7618ad37c959e28de7087aa54aceb4f3a95b84afc9963f802744373624d08492ac3567f6cf87cabd80132ef2e5dad70fa32902a98ec3cfaf6c8fc3fa9af67fddffee472afba271e93dbf321a812473a78a7638d028edfcb59c3d55671f259183592b946785d454ebd818d2ca469672f7a37bff282924aae268fbd66d923f95a3d1965ade94b9f1e84c8ebff893ac7984a376519f5f30ce9bad1c4f0a45fd85affc1f687856e1e0beb17560b6f2fac17ad72807c04b0cb660301530651b6ac05beb794c11ee51c0e5fd85a45a81a449bb8f55a41c20651703410039bf86669bc0759a6efa5e02ee19975a6e7a29e551f0ef4734ac3c1ff3ff201de6c82f244ea8073f313d0461125099f58b7638882d43874c36bb7cd04722c74d7147fdac26432966274deccd7ac062393fa0a1725f8d22349a3cf54394d970966229fd5a10bc6cd2581c701d4413436f56367016091f4fd4cc8dc8f729ee75a2b06c985d6a673e8a96c3a91755f722c2d4bcb5ffa874ed85d4ff849e4f7dfe3f717864392e86525adf3003fa28ae98c42a718f4a297604a57db71b9e33678ee019ccd64566d71050d48df1f5695625e7fedcb3293e19bf1497b6dd93ae98d41a50261a2ef4716b403d5016ad5bff450586c9576114811fb93e2015cbd5dacf284a854672a7a003419d266bbb15cf9ad96b1520cc4ff57bfb3d0ac1c85d122668bfa247e6a3ba5c2ed732d22c8ec5a5844b2f44d8594a4b49766db2c2cc187edc68cdcf3118322226e24460ff73e68909b836fb0700951f925d07c9237d99c7aa1142cf4e4453330d8e07fbabd9d3c2d0d405cc6d6243efcd8a3e5709709c9f9c37660a0ed06d3c0958517196af2304277ea55e3532f5f573525cc4c7efa86ba13b869394716222054f0b089f0efa4ebc01eefb1c40ad870073ad5c6402aa584a22f91ed7e3ce6a310860929552b2d3246756fef45a362a76d15bdf1aacfe254ee4cb62232d521880a32490bd04a16458483415237ed529d94513c2d8016088064f56f59835a32728e0ad7950963816333aee612150a3a7b377c352c10b87fbf1745b68aaad73f726418354faea1a28f5c4e224fef026d192ca10d8ab77bc0c32ae97b09f44596ab741a2e85db3e179c3ec05e6d9180c8a865a4691a11bbc830d29de43142f377fe09943728c97a79d244a77c36a860e52a408dbfe624896526e0a28ba79fde171e892547890319c1185b292d679bd749a8597db2cdfeb78e0611e372890c2f732d96b1684e6d72c49b6703d6e6415b40fc7d7cbd0c0838a169b18aedcf289262b02ce95d2ff378cf56c0d72339e1718958be4d0ece0df4091f064c0a28a1e5bcb7751ecbcbfc0a26cbda74c2b2a2e87d1f56f3652cdb4dd7bda87db2f172192608f117e80ffdcb124a6dd19f024a2be35b01fa1cd49fefae6f90eecebaf6e45ff6551a5440cfe33fa88442a6938ea9f5567f97fffcc3151de8d1120d637d7af1f59307eb72576c35ca7716cbf294969474ddf8ee3ff40211dfe4049e2eb2361b18c6ec45f0023128faa920f4b4cbcf37c961c7cd2426cec03558940cddd6ddc016741f5cd45e83bdd1e96b0bc0a3a5034fc01035927e5635dc041ed106dc43acf1438272b12fafd0bf3e3d3d261405e2e3b920d98f440ba9312edd152d6230c4503304a4075f79c4afda5ad8264b335d3943eaf0126bbc032408a4062a1bbf06e6759c1f4f5d483a074a07a99b70b7e4d4eb30a2fe9477af6e574989d3085a4e1b74b896f0a97e526749aeb8113d50c6f30b4743ba0760e31bfd52f60352a77f82d2a5c7aa0dceb5d7e566507c87c6562090966896324460630a3caec373b6a0a4ad8858299393c94f61a17a73670f445297a0e167cfefbd5bd31c12214b66f67503e5a974861dea6a3ca293d538b1fcfe5dc9a88e9d42a329354382e7adc82c3c79d7f12f620cd56318d89a228d785fc163080fadebc83e8fd0d0d4e6c5a95f2f9f57e2a602abc10b2070c1e549808b09ac85d0e4003b6faefcf55bcc3bc8a7d75784c8c37aedc4a1925f56187ad77c2d28d484b2aefd2db7e4c9bc0aa37bca58f0dba3c9fc6aa8bbe6e1c2d083efbc3234691da6c5477ec66d62af522bdbee1dfe8056fb0b10dc4ddf4348d30b8942575f357b607f6a4fa835124d37c6365bbbe2df7b1f8db54e616c7f92ded1f51f9b73f7e0fb2b8757d58b325abe11b3a3ccca33ad1f8badb8aeefc401740ad06d059f9ca3158a512608b13b64acdb8e6c26d7bf10ca2775e024d4e37babfbab77cd09f507598bb9872664cd2b0904448314622a4d5e268496dff3b46341404f5ae150069dc4494d502582b3d5ecca726e0c5270b0f125e8d4e33c8663c7b34d96626e1d7d5e2d305b272317500fa9fcaaa973160f883b9c297ffbee24548c5773e84c0e63a2e6dff57ebe37170e505ecb13000293dfb5aa55bd98ec6015f2cd965b49e8b0996b371a79dac8a402c64b22a4683ae5d325a332b1fb1858eba5adef7bedbec8abc3d2552854a295fc4ddc1ab56fe91925491f8a091a29353e78aa5ffb123d48ef897659f46d229a675648eef1e3d328b82f750c5d16bf3bc875f4a1f1d6be224d4c6fec1a73e0a89583f6ff021d8d2ea50cbabc5eab9ffc8d1511b4a97fb96c48e9978be10914b765fe12c982789b734488d19f0c686eda00c709e6d39907b2599cc795d1182a6eacd0f03faba8fa5eb66caae03b751cb42186cff351f8207211cfc7c79dcc1f5a6ba585133a9257d059bb685adefe7fe99e6f9c053ea040cd8716641f2c6c8f7f390d9739c8803dd774b97687907bd8341fb7dcbc94173bbfda77ea1b3ca374a6191557ee82ff5018fcefd6e947cd36b91f20b33d44cab9d9a014fb98806c940f74e9cd32f377e54f4f2d1177f2d356587f7b44ee9377b03d275ab86e73bd079653140d3a6808e56c6772caa33dffb45904c26fb2fb51dcb342e346d7c514b5252f49c17efae46e3e79201e754b9e9e036c79722877ac687f40b284800d1829b91282efe86a7ccf2b86b9b55b0c891a442520ae4e3c03e5eda1d07f4ce693a34b3b03574d8163054bf9fe4b4be7c10c7de6bd6f35cc391283d2d057ac76c71670c43b241cdec5e0f62be825bd4295400f9a18a0fb345c9b252334c473a4fb33219eda54c9cd92961becec0906287f514251d1a9f870bba2220e00e1a0d2df8d5d48eac8eb8d75883c9c649280233a0b3f8165bddbb5de0dcfd156b8ec744154f7359e2b667a0cfb26614b3eafe2c0b67015cd521a48a4c781b6a1c75ee76bda2b7571ab28b33c225d518d794c256819e2ccee025d4629f93b0a8fe5defc91115fde264939753f9e3dda6ff77cdfaf90eb8e4135f4aba169d8f4f6000e1e7c1b3eb2ae6967d0727b37588e004e244c1ee862602c9a9eca9df9f11256b889fbcd3bab3fc38a11c4b891bfa61cba7c4b0cd06b24ab8025436675c55b82666627064d6d5b79b7d9e2737182c3bb951eef70ba5baf69064d4bb8dd5b5cfb209c79b3ab63b9eb4bd63c53ce8c45ca1c29a74313404287a1351a943db80fd098d07aeb4b865c4fcf88008fa84592b5642849ba786681769c6333965e6391315e581b75adc26339d24d154adf6f989e014cdf097f256631dc3e9ddae0f165438a738ea5b46269e510e7642f294a4b49d2c7810f1684daee80663be22e3827764ff50aa0b9e606a7be35062b29fceea4dbfee46d447658d5bec9642f1269b7b55d5942ec067a5041fdc8812ba66e1e95dbd7bb9ed16c6c631e7fcaf36bdb447e98af3b0b4b31888c59e0963630ab937f509ce1e79ea2fe0170111d61fa0d41eb850fe2ed1a7b1b47cd7010a09fc263d93d97d07f53f70fd23bbd7ca479836e258c96cba79a5ba356fc9646833c96d3045cc7fb6c6c5f00e1cd953b760b5c723fb969759c70e5538cf57699eb168c7cfbe2fb08950a52750e3640db479c1ac08417afd77ccf8f3510d200bb01035e1ebdf5450f23c952516a9e994b573dfb9fb82dcbfe6c66adeb695c489b922fc5bc2700b84fdff2f0aeeb27ff8887745fa2fe7fa256d6124b0c08d74e633880f49281f26d46cd1c88b0bdcc24ee07e8c2ef3f66a17e96647dac44b1269496d0eb5840660ab5ea13f74072437306f425e47d09b5ca6ff88ab1e3b83171e3aed341a9b4c1cdb86c92220eee6ef3a171f63eb81aed0815d1c1516345f7b54d0cd59eb259d3f16f77cc3039e98878e24c431f6b481f68087ec01ab1f056c1ee584670a418ed2767738c021761d97519abcaaf69a12061d3b89419ee339a2d2f4b90951a43733f56eb5ee94541ae52c8f259aad4cc937f65eaf18024223738cc3b57c0dae865bf65b217d09e5d576cb9923b293fcf2ed4d83af41bf8f5f89ac1172e87d3d1929badc9b98433f8585614de9f052f95fbf88f2f3b511bbed5b54603b75585da9a2ec473de597d51d1c23c6604d4880cfd5b15108cf08a29f0eebc5165444be53ee16d5279a6fb306cbc845ca15086013fef6d0c4f706b910659cd25d496001430b29556522c80b437010e0e1c3d96a15db2aec7ed844015bd6d88442e4bbd28968f97a93b9b317f08b3a375e2a35b928e843bb61a34c4f049dd04d2d72dad33522bfb3a099d74430fa8b48dac74cbc505adad24fe880e1ddd3fc2527e93656e504958f1bf5edb3dd34ce487cbb7f20687baeb4f0219246d04d96b1c178bbe56977fdb9d62743079e70cf90eb4fe57f51cd21d0cbff0a94cddb1f752f2d4ba341115b82e33d3a813102df996751c9e49b1eb912934bc4ec6321da197e14396ff1f376f4242fc872177a530a126c291c45bda008ff296f57aaed4cc224a2cfe389f4fb80fdf3f7f9e1cd05d2bd9f39d8831f258dde610fe5814bc26e58a1c81fe141fa35d9e56410d3b7d156d56edea2c3ad390b3c467b276521cb71d8e2d6604b7b678796b4c1e99c2e19b129ce34a03cd4f34dbadadff73f46baf424f71d6edc1a9aa70f9853a25f7842f8bc030921d1250de18acb3c8d0966258c51b2b6d27badd06f464b743d3ee5359fd9925f051b256401a0dce3e21aee69dce5ea2de85592a8d8f4cc12f424afdfe0080ceeeed23b7b1dfc85fe6e7b7e234e7ee104b173e2a60284d72ed39ad5b13cba179f43fb83f9e5408d07299e0ab8d21e032e8383b0b3ceab805faab80d2003ae5a1200794926eedf8e4fe048e9ceb8694494821c089b063d774d4a9f0726f274e3195a049672dc8e9379e29f90d1902c2894eb06f38d15d8e33613075cbfe196a83b339bacef2ae100fcf18fa06f21f59f7c2d53529f5092076bd3c26d6e80323f325bdf14d277296ea48c102b1c6ca05914d5498848cfcb51d4f54f6cb51f285a6da20abaf66504291182f8de8fc115b911477ec7e4d3b7cc6800ce6da09021d28fbc62ac580d2f7f36da5ed743e69fb1a34a8e5a34c4596eb662f7473b1009efeef256479cfb8a35db0bc256f74696eee863585fdbb1f8116094f5681744c16b15a7b1d986c471ee1c836fa22f3d483f76feb23fe2724b9c9a832a72c946303542a587708222baa3e977e587b0635c06d567eea8344adf12af5349c06bc4ef35e846cf101ea710c3841429d307fb1581029aabe223207b3d7c6b585d1a2734982e65c97e8afb85ed05ec4a22035e3217eed5d12ce14a81bef4d3761276d3bcc76f1ba6ad1fb174d5d9c0930f37865088fd0dad3b08e7916d9ae67e702575df25b9590f15d5a120383f9b13a179a014b888207f0013c0ef250a4ce0af505b00d24e478375cbe0b17aca2f8d4966b1790e5be20dace2c86928704a4b3923e509212575a807c33a6d04e295f78bdb4903de37f9f73f3a24cba60f64078252feb45e69e005aea3464c0a424e10807d4bc1055186da1243bd130dbb450fa88fabb43bf9c4c883f50557227b99b70b33bd5711d1a091620870fb225f054ce315a716dce73f820e6715619f701e11a2a6af7c6d55a01d6ffac1812e79b08972200d6bd1f9c1066c4c6d0c68d8e0a2bec8319ee36b37f79f6e2a8cd6992aff237218856c2b52d9101ab233b6c087ec1f4a55a2731a5edce41aebd4a2e55b83fad0eee6ba2ba0cc0eea141eee06f430fa2443f3ce5a0c60da9c78ac9c98afc9b9837d2a34dce6c366fbc31e87df266cf81160492c97c4c639f3724fc27fe23f55d865f993d49ebd9b30eb81d15278afe61081e5e732eef9c2042ed3b47a216756a0f9659ddd0092988d44e93fba1d5e4ee42f2d6800009c1e16caea460178c250b147b78c77580ffdbd387abc4700042295ffda0ac97a872d56dc06599c8eb4626338facc55265e128f8f7f7c7ee3c0d3edf03473cab342da54a791bd6ab9e69313bae91edc12d7f974b060b7b5db81d6fce6fa6d346f32c884e349b69b56139ba3fdffbea7b0b424037310a098148397952bffc3aa4a952bbf17fef9f67c4d36f8c2c240050f4bc6767f5502a7e7d372cf039bc0c7f791acbf812a1854fa1fca7bb59cc5791cafbd2a3f8eefb542d702845471e59646e276a68e3b7e23a21d6d99d8d5ed39d9f766235dd2f86a5efa6fd55631411800e57e78e37658e4ebbcde43047d62b15983df85d6938ec2c41b13a45c4b23c29020949cf5cc06ace198296f71541ffd98e98b1c9b21408da75cd218a5c972fc8280105f3315e4a75e71da955613b4721b8719d5bdadbfed86561d1d41bfc2a3c9d7d270bc76ac919d84c632948e8c1561c9c84335b9c1da27ef52e107ff5a87da71ba65aaffe53b171c5548719aef2228a7881b2c0709a1da44a8589b0cd0ee98bc0835e9ac4c0cb16621dc67b7cc877fee4eb8e1793261116d5dba7c79710f1055e5bd9f64697d3bfa927701dca066a95224981a7b1e8d46ff29003120ca98fd00c03b28a5299c4096bca6c3edb297cd638edc20d2276d33a6506a75efa9292c5f73d698ea838a22026a7a2cbba8237cda5ccc5409b29c5631b6fb8337b5d79d58da14dc0cf3fd8920c709bf88fdcaffe062514dc5fb8bcae0adfb67ab41aa869c01615918d9bf249273eb1f83337e8044507a88af8bfd6be5e97462885d1f17b13d8f2d63a82db48127bd41a8b1e6f5b7b1f8abd60089504f24b65e9539a616633551f3e007b86b7347a1a1f91fdce9921aa155a6891c8de4a1d476ecd2244e9e5fbe1bf705679f31e6bc9309bcef0ab69df07bd8c6744c9aa52588c0a573c2f88ad4d653d354c230bdb79f3590e28e7f06835e026aa635aa48c3d79066debe7ac4f38b896d2ab504953fed1fb02b65f9b59c069f7198227ef00fc77c3ba6af6d5a5ee27017ae64c17086c0399d7539aba3a157b97e8726ecc82b98a9b37fcc3bc7be59937b33b86090bf0671be1e46bac49daf976283e47c3e7e42ecc61393aa079e7220db24d08707a5f25266baf64007bc170badee35b6713457297c7e11fa3ef0662fba7e944537f5a8353b8e5a0823d20444b60121a401bcf51c71d000b39286724f105293a4f2effc3af515670dbcd5a74e59471f1a5948d07c628eaf2dd79aaba822482f2a77d93c3e4e7f0a7cb65fce985620b466df5040a6ff32bc1bfd466b2fd3171e9dab7c0effaf2d0e0a272d5323204053730a0f6b4ac9a69f9e2f0d46ac5e0e37ad48a55b1ba536c9dbfda21e41a32d978a550576ca76cd07b53951949a398f9156a8a54eaa51e6a25c6545b7057ec4c73e8d73cb3562fb010919da8a1ffa8ef319fad25e8a403a65b5d13e62c5f0b4b02ab6e26e1cc777f5689b55e39b0316906483046db4a2645fcae8ddd348c601c886119c61a734006e7583d2149af6c415c16419f025b64d58ebbd1470965f83a4cc673117a96f45b64df8461c1bbe4a0dac157131346a0e519f57f81a730a64c4e2cef4f997256c4245f307d58371ed87256a72995a7f761736194399fccba6a38a967cffa43d8ceaebf553e1ac28081e5a7e050cd65088a80975d580ffd29b220be3244d604932f5f291c922d74d873dfd5517559f2ef962993f2fb9ead76b3c51c38aec9d92e0f1b833edc286ef6dc82e5619a596aeb609e916f68b82ca910d013d13908c888963862fa9cb86124e030602811df2a35c96cd947645b54f5e2a31de666730da173bc548c74f970ad5d31b8b476d417cbedb116e1c6533bc7545cae1ed03b460e621bdc97823886e404faed8697d989963f89c33fb5dad6a4d26c5d8574d411846949ec9d024c252df9837a1672db3e10699042648e7d886b3efc017198654cafccbe66d4714811398109213c71f2422140b356fdedc9fa845b6abdde85fbbb8c17a66cb39fd3f1e66d103569296e019311f1921bbaf1ae5f76677454020b28cc254758a672e1ad8d57fcbd2d55fbbf0b3db6b8b8166384d92fd149ae0d4d0091e6b1c9974c222f5886808e321d2a0a525ff1dd6f62d362c300b30914c98ba886c56410569b8f452b4ee17ea0cd9a584c652f950847948bac28c64464ae6c00932311c90329cfdaea24ac25cae113c0608cd6b94bab317628a11e98d6500edc36f6282ab1fbf445f3198d08025f71c911184a462c97ef229a131e75a6e6221711238d0586400b18a5135e6ea111fbe783d706c330785d74b7254fc82f546453c80517bd099250f3c8970b7e11886603a9afe647870d9b8893dc79c1dd43bac2212da97f03ac35a117187f7d663ec0c6b6a7396f220e89a559523531ba5c62bce9493da2f28b50b3739f5971720420f01a51c78e5daf67077e305167647199169c8b0e13926276ad5211133aefe23c3a37454dc8e8435d974e0132e895dd668b5e17fce685d2d2b14fffcbb33b467c374b7536a0ea95e1aa11f5366b4cee54aaf08e57907d8ecd75ebce3cdf37ab8ce5580d48fd2f5e7046681cf806b46591c72dba4cda60954c1a2d787345b8d43f306968414b4bdc29908be912938b460f991e97e0cd8426382d5e0218820b074d398f347b92475ac98e6e3e5e101ca4eb91a3718134d3d055331fe8ef6f7a6c21597464b8d38370f58eccef19d2481ad3e84beb5dbb69577ad3a6acf93ecb98b51ff72e6e2dc437288ccb49b0e7c92620564eac6ceb94a4308d1f2d4cbaa36020b910d4f0e43797ac5559cc0d18efde3a05f1c40aaf641c5a64277a1cf20ef289043e21a5860e07a161ce2ba0272867c1ce829c50976c246c2996fb517dbb7dfc8b67092cd672395c08eb538e5d233a06f92daa3d9bbf8a58d1f63ce556ce9ff4b4468d3d84d0f6a0c7d9862a4d1cf5078756a9e3e67758ed55f72f56f01e2884bee32c3cab8175ae1fee55160fd6b922dd20b86bc8aab413fcecddd5efb82dc29ca69d1c03cd05558b045d703cfd7effb6e61a5a5d773ef678c3993090ab00bcaac5b8a9064753ea83139919c752d0f7e7b05fb1c4f8a9e66b6907878ccd332edce8af9a2d464d60de795522fa4475603860344356a0fa572094096f96b59e62ed82ddce9c79e419106ffd84256449f96085cd6f69107b1b0aeca38100133af723fafa358424b16cb1b74d39a2d07fd7657854b564fd960687244df49d25797d4372f488b9734fd0a4cc438dd20b88f3447e6fa65d2d36b24b6d87952a63dc66e71ffea844f47e281cf11ee1bb04169e3b45d444c4fa35a7ffa43f8e173632d86cd2649b00617b5514654bd7cb9d1811637b8aac836decf9ef357285db3c944f0c5defd8ba15ab9a4cad89b79555dbc94a23ebe517f7c609fb979e4437776d7c3af1695ac0f69672ee3bd4073d71afbf9b927d7150b5afc72cc2392c639f1dfa631f06dfee4c3dcb7c3760b902c0544b6531fa068b6b7e6f35063f01cffc8744b3e446d71438adc999b4b3a21585bf51c7ec77067c1b73e2e235a3678050dc5eda31c8078ea0460460cd87008ba210a76ad3478de16e3172218bf81aabcd324e5c936ee06c51bb743448c8ed7209d6e43cc6eb7b869a722800f5a95dd28b6299a85857cf5f9de383ba52bd5a466da642c1af3cb8441d3e4224489e7f22450d77308b05ff955fe83fd4d4d5fcd7c29f94022318ad8d51b8246a0be006732c5db8dc892fe96e1524f9e5bdde61f589b8687b50f689d079714c1b8fe29d2a538dc49eeb884ba9853ca09379adb2924874b06c365b78fde4395bd78636b600853d10d41e644e084a08db5ce99c9a0810a0ebb1a7fb07ab08054bb759cdada77c473c1c593ebf6ed7c1b4f2ec10f225982d032a59e4cfb7e9102d45968391ca8bab8dc41688165f14bf089804de6c2f81396b35d77f0d3271f488ad01ee40aea6c5e199ec43ddf9119236f294eb52ac822372a69b2e61abbb6eea2e829107245928819b43b29ef3d1296d05127bb31dcdc454ef86caacda94699caeb845a5444ea6c956a129065de0bb7c1ee0f033e18b002ae3fb5019386a20c0a4342a69187b40fe223c54411b9f8cf370a92abd858d16094b413e8b5c104084b1d084bfa9d3710e36a82b26ed774e733d4117d3558b51afbe9fe48a32087ad6f33919329e03a85b97aabbf362c3c3118ce3dd0a69a98d6fadc618a74b0ac7abe33298cc1448be9c1b55880f765b40e0b34a0c437b6fa5a6b3c1fe7509ad6d0a4143321e2397c18b360d3b82038609f89a214c7e6b51dd3a53b8c99af8fce0d12cda48df591605af0fe1a302ee76ce18bd849683a2e88239bccf0d5c47b3f34edb685192c7b1381607d60d2d90f2562dc6044832ad6864eb0b10895a3c63b24672e7428414a70145cf18ca37ff47e7e85dfdab3971ca8e812b4852edebdb4632bd72398639ad88e8411b8811d178c3376ba391dcb3f3f9d776f8ac3afa50477b14ed86e5be5b1a996b6b3b798890a7fc0d66080b8e1e3c274903279f88c66c930f9ecd94640e5b989a2805f3329d64f132ea2a2fcf0efffea160783963d7a25f9044c7c885a5f1c8e84d5945bed720652122804d20302ff2d2a8cfde589c5bd31b6fb0cc13592b2bcb09d773e8d84856b0f6be675ef7f33df50b59871c72ec5408b8e45ee4ef16e894a76fec80256d2d27dbda2b77b0eaeac6a6a121e7e83975dd0ae20091a78f14ab1349900dd56453b02c150ac8f1901669e08815a32f2710fc79a68bdc2223469d65ca3dde6974a7a69efbcc0195035198bdf6d1fb890bb9a9ca295141e704705c5aaa611634fb2b08912afa34225ce296fb5bfc6abd6dd9e08adfc2d9ae91e2c0b8b6d630057911d14c980c22f51de93a4417506851ead6693b44d5ec2946de6e4a4e58ab5aeb13c8d090452b74d2ccdc5b12f98372a61ad314562509f7f92b70149d2b6e6f79212f399b91dedda66f60a258d577c9e1dda19015c01d43c955d7d064f2692f6fac7f39457975c79694ef33153e1ac810af4741d13b2d95f32e42c1a2280c41616f7f8eb9fe019f490191b5f69fd92c0fcd0d3e5d4272601f85cb1f7ded140e6274cb6e186c990d31f6f32aba35dacabae401f3572d6584072ced9c4d8601b97cb5b5c8da9fc1de8b29e65055d7b2a76883610fe9dcdc4bc672cbedbe4b60180c4d00a5b14d40bc4c51f2cd2e19d65b9f8331bc79b83ce1c266ba54bed940d9b5e539f8b5990813f473d5f6caa5391f15c7520293ed79d87deff385753b54b055fcc88b1f7eb50f43defad9d65e83ffd79a3205235e3952c1260c0f42188928184e5d833104553c27c94ff28d3a1a9a1840bac83ad7cddba0e521f4f1053e0f697e967ce6dd7344c677e1b406ecdbb06ba9fc0923d7704e87a201a45545f3bec0c668112dbc0217ac680f70fe8e8aa388842516925087beef202f3ea441ffa1432303ae1c8c9c5f6acf76331726f22a7461ebf85dce2210ab54dcc03cd756cbdf1af42f4442c75b06bf56736d91534a77e0b2478f0e8b2fd5d3a5b8bad891a5f2292c25640d3215b968a84236f7fd7f0c3476b673387238bb55b5f3290ce301467448de725ccf5ed175a42f1c5b5221e1dffdb8c3a1a6bff8a0e03d9e92d3c1aa0dcc8dac0e4082357ebe00d3aed6232fc69e7b52cf448a4a179c117ad790c52eb4df33773afacfa6a6cbbd74c60e40fc781c2c3e0ddbe4dadeeaeb7cc926ec4340d0c5abc6737375fd6fa23cf4b87feef8d912c4c2df6ce5ebe08388eed721957878a720f710be188a579bbdb55372a9e0bb27a41cb2e8080d1c14cac5d201fcc0ab403fa69d6c1ea9751daa1e9f925e6b1fdca7ec228c1229959594954c649ed06d6649a0da8e9a92368b2ff518f619294b74e0c323272d827abfbb1f99c2dc4c2e342665d8e2a929772e7ec9c91b87ba732cbeabca47703868a80efcc04046bedf81b41cdd99caa175713b59193e57124271c12d1263b3193f66a2ab3822dfda94cc4e26b091adae7834002440109b4951aadbf5f762987065ef1dca088aa17f932e48d41a4c39bb6d271b70d6b27f986340015e1db343f60f67ed54636a1e9a1e476165ff27bc3d9d1199bf972a7081f582c06bda55034de6b31096d80dcd4fce74b38579d6752afd9a1d1e8cbd7e2236159987335f67ec5415d36e5984a9e411f863d1cbd755b9428e727fd9865792bf145701e39a421931206573f047c2e3bb31ef57bbbd2f7235cba2d1203e6f7fa4fc2b025a55bc5e57f6ae3a98528e2824b5ff9b3c5714bb0025f204f09539c5680352942e31f86320a75e4a7ecaa6aa5476946d8388b9927ac0fa51b69871fc4d019d426757bcf96384bd686db7e3ed3f6b02006931969d7d5765301f9c2ad01de7aa56bfafa485971c25abed0c799fe1d7a4b9df85cb9bf48361044f9296f33337ba99322afd2eba3e5bba318cc0e8976648ff9495646680662373bac43a00972d0724895ae91806d723e1bd075a6e231de90661b4edd69ac0397b5ff7d3a613344d92444900c84b15d4431ccd290bcf8aaf6479e50c11d4b9739f22fa72c219f3508a9eaf3578eb74b3fc50d9465b14e61e0afafab1f25088c00f8137623561013dd31baf8529dc01873b06392f484bdeeacddcd7194ba89ca0e563200e2cef8e5950d51c4f3a9ad5188120146a65dad10115fabfabeff13260397d4422abb9dc3cf0725ffa3eac1bbeead184d6c9959dc7dcd7361e6b875f002f10e9d350f355dd5067b58ad54c3ca0f7e01eb4120e43ad7619b05ae285e6694fc1855bdad61723d94defeb52ebc2b51f103853c5623637ad83f0adafd793e497c6311939a0a5ad96acd284dc6683ae770b2242c0f6969945fb6d62385c120397f8e5ec9b70f7df363f48f879aec8c77209bf9cb252bafc889df941e91b62a4c68c22c6ccf6cdadd5decefab8dc2678bff33d38298286d277f3fb42bcaec6b55a4f54fc9ebf181d0f5de8aefeffb45d2d61daab34d602d74e6a5697f581b68fd1858ff4840d619182fdca44275ca55349b3d189ee1f051bc40662a351a23997c967458d624115b9461f3082d6801fab430b7dbce1fc38b3db1be3174d7e8ed25d697dbd7e5929486095381baabb24a25b78755200ab3629c6b10ffa3269f42c1cfb3ecb76a2d27b052cc62775e4c90a6ca580c4b8fc5b46a42fad6b0f21feeb56f4552fdf43a09c17818ff7c30a4cafc61292a0653db2efe0f3b3d60d5413905f8b9b9f379d744165727328ebe2d2bb13494fdb7293bd696f37e80b5b7a9e014967033e458cf74c8c18fd74384319a04d3ce78b6294182d59cdf2e666a759449f7bbb3dd6f3c4d0a82f34f49373a32b2d9f7b11774795e821fed995e28407971e636910dd12813d70fca01a99d16c081ebed611217706aa3098a5956356ea7fe3b5609a89a7420f1628ed52831be48aa5ab467eeab89fae2b5c2c9740a61ad11ab61bb60b3aa613075bdb7b6211f8104ac5d4585924a3446140d8905c331095435e42c736d66d920506c1ae5885c540d5e8fa252ec8c9533630bfa3cbbd3b1a24f34443b526a1ef1bf7d7277e04b60b89df5c614b9476dc99201c50c930d8d8801ebcf5d988ed7b005a9b9fe0d117912d36821fdb6b35e844caa5508078bfa888900fc80063c44df2294eb85959025b42f1ac470e8cce135d9fd58595166483a50cce194443eb649983d894ec50f1e04a9d7e658e169c14a5fca42c404ec3d303455f4abdd56123ab2d21a9decc2d349085b60033e649d6133b2c9bc930891b678369363742052f5bbd8a695ef39e68ffaa23293e5976a3135426a8af5c2705be1dc7edceb7f048ab4403928ca93af564a88fc00fad0efbf7257e37c1b64fb49c40657438717c9ee5e96660dd421b716ad1c85ab971a48e88bf8b730286fc7741d4129e941eed770c7fcc1d2d7ab3e93cee33878c6426431901cade39a5a5c90ec92deebe1c37872981364f74ed6b7fc83a2a2833ed287f4509651d9e00eb7dd67a7c86e87588979d8316b18554446e35053f661e228c9d3618072cffe8ac8c4cd8e1963ba44fc8deb9b782d24ef49f9a7ca89ef10ea94804113a28244b4f53edf9c6ae038dd56e8f17b2fd52bd5cca591b855b1306629d264c4b9423c4295114d03380d080431f0dd6cbbb115931367a2007ac516391c2c1eea539748ec76d8a185629789b6bb8adb5948d548b114056bd4b9632be7d4349be54df4a17a58e0720badbc979e36b9e24c863ebe70fa93cc97f7ed6ddd0cdc72014c7ea62070d1e1e440e3e9ea76878f882d6538aaa446da59c090bada55b17dc836dfad92e629b94c28c24339664a99f273d62fe323113398c273f372928af295b62ad39d5788ad12d519316b832e836597e106143f1bfd154d7aef0e7a7a0185bcd266a453c68d5f9bfc4fd45f1660f95a5456bbf302edcada935086191767b3fbabfa45e0e26b3432a76b4f1fc9c3b4814765c2edee0252819ca3324f10b2ff6a023aa6f5bc089d37e9e96dfe703b6055fb1d670f71e7ca81cd6b254f163509c4bdff39009e0c8da91d4d23c869e76722c411d8f13812d4bcbdfbfc2210df3c08965cbe6194d6066cb3cc045f5f10d0bb065e6f5c96241f38f23dae22a27327f9577f01ec9dec79c94546733abcd142f4448481d0cb21249ffece7b7f04de1a9e39b1716ba2563eec4409cce1673326273a8785ff306fa3c0350b3dbd299871c33ed8fa1a3e6eb1652e3f0b72d54c7bb007dff35025c6f90ceaf1093435606077ad3197295cedbfa855f2201f624b007171169a5dd281c4193e005b8f41b6538c92361c3ea145988d3cf597ae0376b04f2a234975bef2f7238565ae4e77dc4b1b56dc38f0a58ad7d07b2c14f8468846b230cbb41b2fa254863333ce44735387fd5fa34e4d0179c2923bfd9b6a9efed6093ba912845baf1b455f6ae519fd0c1152cc25cb55236403d63be29687002ef14434a2871d6fb0fd86d008acc80dcf74fe2f18ec7cff14f5056d69e963d640f758c8ddba045cc18214a27714222681f1276dee632c87e3b96b181c9d2a3a7386bf0094f58a7daa95dc71fd0e4af55dfeb997962941f4943db7981311978528daf5f0410fb70a496f7021162a384f43dde2e9fbd98be3c8c77fa23cc67d30b40dfc721706c658a3da8726d21036739a4196c843764f3ffff3ba1c8b7842ffef01d9f3af8ba4ed52ad7b6b9f2a65a292c80cd8f6f5c7f980bb4489a05c5f81f974155068fe75622e5bc9bf1dea3906a81c3e2088189d97b5bc5dfda607e1dfb08b3cc0e33f10165dbf95d8e0aaf9e6b0236d41ec1d748aaf122aaa62bdebfbd2a561d591997eaf3e9023e141584032eb839cb832925f5bf9de33f5bb9e32ddc8d6988547687e70d0765f9ba2797f51c4211034532468a5ed1ee32044797f7086c67b483d9804587a6d5610c4aa785055f5d6f7a0940be023850c8576c63196120fa6430413b6146eddbbd012f9c453cdbb3d529623b8f9bbd66057b8bfb88092643b8744216ec701ed63c50a194f5f44965720ea8d54c292bbf903594a1b63f2f65f5a566abb95b094c98f14e9d76cb09c7d62218fb825a907d11515e5736f8585bb9708ac5f0cab5b8b7a7e4170d2f6c8c8e00e18313648434bafddae6e25378efc19267dd2512110eaf972a302f9536399dff2e2fe06ac9ea992e614cdf027db53388c6dbe28b16a4ebc0ef3c962934611e42cd3d6563f8d93ba3cb4e617cf72f552e49e81c2a14fc04af80ad501d2e79a88b19a5f0ab2fb9682678122fafb979c6f5281ae61d74b6f391ba288dec40a5c61b673b8767473a25fd656809e501804e6aab78ccca8fe2ce868ae1b0ebe70c8f04559f07b61858c281da111920fa16f1c0147958f005dedd2c02918f9e99d11acad0d8c6fa1848aee40fe7a1657332254a11df80f741d4d7262e0e1f17e05ae0ff86905d70ff2b965974b75a0231ae685c7ad186e3a280aac8aba281bd98adac3e4e548f2adf79bddfacb50a6b3f5874ea5d00b382d9986d31ec5759ebc4a14d110043416ecfa91c954c66cbe268958eb88661cec3cbd483a8717a432380d9fe440521fd7d39b65d9c03abf0d72f8ae4637314a4b037878501b9764f2e19503a5fff952035d6ec3a1ca125206040e6014cb35c77b5da96655c182b98268458a160272886d775abbd4877fc475b1f04efeaa8b79fb377e0398a3a37a89b224c40f04bd738793d6410a910ec6e3c56bd7e068de7c62f61266471dfad373067f04be0ec737ccb31fad181b5d9d40518c61179c109df5207148d340c0c58cf4a5e0395bdeedfa50293cfdb236a4e30ce0d4d8085ee10842bd88dc99a5a163fd56b42b43f922219b3e8d545e5bc7d971131fa4a613fc311d5da9b50c3a91822e802080f1765575e1352463221f0884da05b2bc5774db4aaaf94f73f5970f752fce862cc54c7c012ba6eaad3393fd85c9ab03b763a91b447e83c68ce87f6c1e79838d03981e7f1d4ac6ab2250ef5004b040091507ae8fc78bcb7b0cb7424a60b195a1995b94bcb9f47b96d005803e33cd5ac4f2a9fdbdaa65d580509808221165f37039be5b8279aba8c130e8741935016db3c28f6c62316dc30c5b9b3ec0429a216ee8c9a8969d79f1a3fef587c648ad235c1a12fbea1f9620f9b2c135c2d8f415527bafb4b1bed71598a0b19d4048fbd2c78eb8a3f89daa5645d465491c6f674f97ba2faeff573b696120ae2b137726de03a1bf1ce4e838539130cf349690aab4fc9654cba1211d2aa1b39269e1a09f98a0bae04538d694b8a5bf159a4c3df4ac046e6cb02c3b804061d4d60ee18726a3343a6d833326977bea1fb71e2dc1a93c775e792c282644658ce9b8a55ba33230d78f0e9846a6047aee467fec7eda05addfac865f9390cbd2747f314a2d2e45eca669bda69923c768e4c1a6d75430ed6a0c3896bb5befc1664b10e5014985fe7f43f0c1e6872d6274218648e51d196b5691fd17f5e7e8098cab5c56b834d610c35313cf3b1da84d11a051916f18b190b144ae1de48f8f1e5b0f54db50891d6ac0ffe58a549f2e20c57f9b4aafd840b03ac252bc8b1f6c711e578d162e74752f9d740b162a0446b3248014a304c5f32ec3e8ff4df959588fcf484ff70438b4634d633364bb755fabde89b756f39ade66c15b9b85716f2916310a2982cfaa5a53c281a677a7d2aa0d6d246a9868e85553f101b0866d8d2ac5e0a81ae439b3d21fe808e3d1d92db9cdf3002d5f8b929401158652733e4d67321c934d92f2d1fd03593549abd44cef7ce56edcf8094fb2ff4ad81522ca40c6eef9205d78dc96132c26c8d7c3442bc88542e48004922cea433eac0feeb76cf32288052f774028d03a7787f8de7278e79caa7e2f36e2073146a8f7ecd290c91aef98e05bb6c1c0f2d50aba5c3cd716fc5103787a86af151c463b751647cac3721704b0278a062b0cd4d3b0e99f8b9a72ea29b571af695c17f70f25e5856fbb96c7cc5a0af0bd4c9de50739b5ba98d1f7ef013b3319c53aec0c1fcae63b2186b176e925c8e3e79885d3f52b12072438cb1c35b50b98d2dc9762246c32c76fec7736633e1a0f0d98c1ace2deac695382e18f24f0269e57c871b586d5cc7d282af3f62035e795606a797dfeafb7295416d772de5ed0c20b54a22e84151dac0a711b89fa7e0b019d415f693a802712538fb27b669643c15a2ce934f1ff703d7d65426a9ef2b189cbe15d436b3600ce5b3a77f442d20c514cd0b3404ca991404a9e4da26c4b3c470b2397fcac3ab1d1059b87320b6ff9793d1384acc6f067ba192ac13ea8abbb01dc77b2846cf981638de8d7a7a7709845299da6bb27f2b07861099a344816f9aa665d7bf5d6640e95778cf0f70efc4af0586a39511c91c2d6c3b0f8b23ff30dc0bbebcf23ae71d33f28a6c0ba8edce4fb754a82119bf75fa663879b304d8f8c15064adfefab98cb56e18740d719fedcc5225f95e7810d9eae876b29be3e9a38d03e39b8eeae561b1f7b38e49fa9f40d8370a14b297702d872042c4c6721a74f8c05892747e4adcd21c5f2dd1a7a7606c3c35d89d365cab33347109bac00b061f5dd9fe6db03a2a0e8e7a33020cddbe9dcfab2d498a19c365c894e5560b291b9503af5191d7dbee1d74f709237eba4e0e7f3133cbcdc73e9cca794ec6faa8855bc68981f1b248e5ab7a12d1f604cf21821e2c88cf29e8f0db755825f64f9bc6f24afabadb487244dbcf9e7da2b2e0b57e13c6cd9c3d9f1e0f9e62d64a367b39631a0e340fa9a9380263e5b04d95fd91584747050278ce2f233ba9d62bb16d955b1f90adb20c5765dc29e7c3753b86a37e203976253246c88fa5e4f3f4431006e3b2b7d119ebc6a1ae272f05f467d714542e77839fc73df10e9f0b3f51ef9db9d15faae6b47cb8ff89f87947badfdc441e0fb007e7a984eaa7ac4af021ef381fa9795a2118f3a0b907b98f42c87c5dc066f4ded6e942d10b6df6e1a9f6006f0d793d573ca37b0872ca41cd41d9a1b583835e15347e37e3f7d416642caea2488417f4acf4a1a35b03982cbaa3173ed7ac3a7201bf50e313ce525f46724447a8c02673d77d3d578b7bf513b208807e9a8efa39f7f1f5a092934e5f73d99272ca53ee9bbc11f86a6d2efdfc4974fa446ecfeaa9c907d380f6de563036eda8d705e9aba5217a4d8c7b8c0bd679f6716b1755ec143b07ce940348e82b016aa9c1ba9f37727761c1b45299b79c280d333cd1467d36e18375179edd1f5a945f544cf58aac6b8f06a1d8a6416b252b5fc301dc0adc15853ba89f2ca6678c681be99a5a57805aa2ac60039afc413196cc56b5f12e4767ac19de605432a89c141d82986aadb0fa6df374e9dd30f946d076b9613ca48a99315e9646793452791736fe655ea0bd6925b6bee429d257b489d386c8448a829b3d84ac11f39623e14f66560d8c785cb0500ccdcad5ff40e8579095a8f13ede1ece49eaef579eeb4d9217d666809226e27c4f3af306c37f1aa9a9bc4665640e54de9c4e6cbd9714e0c3b504ea55dbe67fab16951c99f93829b32b2d6b65eba3389ebc60fb7a4f1d323001f72d1d3750c4964b07ebcd5c3dc18280801e81da313cac24faf336a6534d82268ade5606937528fa4ed616ed5357c961296b5aa4222139871a6f17e3b8ff7c653e24c5a18c8ac782b2e34d074be194b932bf2bf417e936fbcef1f77ed5a2c03eed1d1ff4842bf7731a3c0e4494dc049fbab1e3a9aad6599a49900afa419756731d188ee8052977cf82c859764697b489d416c9c17213e3e3937d2c7ee4d0b71e12466ab0d39e386b65e225bb9853e32b085dc8d6777a9d92a41c92182a1bb18350ec1209d5d4d2d84598aa3ad7f68a5219d7656bae19cbb2121e96512703d4251d23a17668d80199ba6fd6ab4b21e74382df365f34b458764e109fd3428ec4e934660c1e0a5a988e4aab8adfa3257260752d4cd692a34b4ceba3c985534618bababe3320fae61ccd78d2dec23010a75ae009ac3380f430f17fb0eaaba5dd1be87e17be255a089cba8ad87ad164969d16f7fa6222069c93666fddfeb99dbbca00d3e4d2de466c77ec6fafef9d8fd30db8fdd71e8f40d0a1d3d2f9cd43c80755ea5903fd4accc0172a9d432dd7c6416ea0895deb7a172108dab5bb42535b63a17941ccc7aee646f4af2415deb1c6020890dc0dc55b7b28fa0d6b61562a13f2f6226949d284cab8a3ad89db0b6e89039f75a8c0c2c8dc9b747cf633c5181e938c5aa5ed3ca75de838ee7149b5941989da55bd6bbcaf19e5fc4b86e377d1aa5ee3f3cb3d8b060579721108bfcf1e513dbbc19166e626bc954303f759ab66cb915bf5c52870e105f05e603c5941e302204950108194a08281cf65d77e68fb6fed2aa5fe8bc7cedc44663e5ee108760814f3e74bb637bbfb5f056768ae8df0956a159a462a176b1b77f3146da2853fb9bdcfc29f18014613858e3b568ea41f0ce5298a0c19bdddba2207d758d2db0341485c364f3b0d716ad3705cd1656931f2dde29bb315a74bc121b8a1efe434f6da0a6c0f25112ab7494eb78f5199b7b3ec07e3ff67461640be10e2d371148e6be4a98d0002c2c1819808acb48f8b8ddb8bfb8036ae74eb8112c5a503e3afdad98650e06bdf187cedd8322e366fdcf66a49c28138fa857e261da046fca53c3e26bc70829c9c7c31e986c74756c7d7e05b5fb9ffe58b3963420ad161e688b7f45681f07337df6c17f69de698f39109e6c4149f7c920ef6a68db220580c87aca9c487527d3f90efd0ba0bc450f087f29935719276d5f837d19f5ac8cd13fc8bd302f2683ec0ab093ff267d582a525eb136e1c5b05638f807479af976de93e8ec4e92f09614da14523f8749d4e7088eca52d8fc19e5d3ed98d74b5486881adc2dc838e1c21671d7dacf770f37a21a1a4fac8b3043f08974e511f75efc452801d8714633f7700c91135bfee2a28a49351f4af31bad3ddc4f2c209ea5f89fce5508a5587573d63d4225b01f54672252484df714cd550a41ae4f9690ce39b3eac24bbeb28515addeacb340209af0c3614f45c378e7b188bd1f11e53369a2b2834ac9a07a371691d2096aa354b64b19ddff8c81ad106b5b50d5cae65b9d40637933a72e05b339cf99c49e1082f070a276702f48ddb8f81c2c739856333d7e9f828cefd232e369ebb3269be8ce4e9033953dc4f371b1dcd7c1ff2054b4fb8cd47ba0a9f9db81691cd21c072c43ebad720a6447a1c943498d9bb91ae5b0c91883053637954d95cecbd97f1402d948f65c194ca435fbb93ab306de30716b9bc8c372b44599d570bb18b78b48341d0a55c1ccbeebd6aa8b9ab28eaa2a43bf181cbb0788cc815f8add55ff6d2db05fab02c39dbfa971eea0d6654723120cd9f9c22b885fa3c720b711886316c9097422f05b6a84b532425d739ee767a0607f12a1e4151d346f55a1adedf2b271f4018631d4bb05230f8d6483a0b3a16437eb4d504b5f94ad7c0c89d6722d827bcc651ecb4e5de1b23d354c9ca637d4f16e301d18da1d70e57804a27d3ae6e4460f21828e3c42893ab844aad35bd21adf44361a009fe4d8c8f097a0921bf6d968dfda9f07e6bcf803c09d348c610f1d8ddd3fe1d9bc3eb7d4f6b947bd20be4d0382f0d7d3e8046a11563fe25ecad1c372c20463dce51dab8f9e020a77077ae7e5e395871fb10dc686c4994038a24e792a5f5931b1e598126981cb0faec3623ebb0e86a77005adc83712f36ed663d77d98846788a219fab9b13d5c3433fba0a059b74360577c11137f91db71307e741b4ae57616eff31d0f9cf226cc148a0fd649b4e9b5170189a60f54b2d0f3d94fc29c9a45c4267821f252c61446b0fdcd88b97f8bade153978167b239af314cef57539ff0ffd9c3607d3f63e2f9b418a33d5ab5258eb7875c59e7c63bd588233f43ff556c4cd380c55e87748cb58a512f0621991e1fb4844ba958ef3e56969f6cff09008d178971659ca62bccdb8e53ef5676925606fd853093d8504acb3a75903f3b469f1874ed70dec8bea325637d0eab28a8c8a74f9b8749b351ba504e4d29ed4eb690b97c5c71982fe5fa58196109e05f0bbb28c12923feb81c25bab144668b8d3fa84cc0bcd7ab835e4b865f452073e28c7f78fc66228ffa214fae476a41c960b5ce10851fdb5d6a6a5d9ff0a5990a3922c48003de376ca9922f9d44456a4c8d4f6746522ba7ba164d147975afd4f49f6773df3af13f6e0be804c2704d00ff112bb8d6c798dabfd9d14a8ab2c52b87411925cc5153279b105c79a36b6e1d6aacc9e24fffb655e8e4c3bff956ffa686e7991e0b6a8a21101e6fd7c3bc8930e7a88c6c37f6e458f38b7512cd01a67e042d6fe30fbe742f8c0e624e7381f227b2f43d57f5bf1af300543bcf4a1aba6d583dc455b1e5bef5543ebf46f6d3f36b265f87c9d90360c05d07ee8be1e86dd42258e66611c46de36fb5cec6719c48a9b0967c47ff9955f897d66c1426f6a6aa80a5c8579a1b59a8692820e74f58a26b3fb50e7b0bf0a9ccb74815a7ba158042db607f8933bfadfb259508570e8924883c1f978c103da217b55d504131abc8dafd03c6dd0f5a69b271b61df1a8e7e957590f520b11729b5a84cf04fc3aa782015be77ba7b7d1e0255166ba5f122e7cc2b768df65e842810c55cf1f78b67364c6abbf1f2b30583aea444c7ed16c445e183a50c3f299995538dbf5135b6f8559bd527c5aaf625ef3d4fee1cdbdf4e383bd039de5884844ac6bbe5e54dba092ffd02c4d761d25b95a5341ee4cb9cf4dd5a3746713a858b432f58710db5c8d7d2ae5b901df3186751311e312695a3188b09529dd7b317f332273aae3a61dbdda5f49c786a93c3f0b96ee30f0d02d88b06450cb0732b0be09d0b17c1435f2b59a59fb05030a726dd6ae4728adf7baa455b76eb663b13195ad1fda418d0f123ec788b936f6dbcaf403fa89436993980c796023c6fa52aedc3d0bf098be3bf47b748de5d5c91b752e666f1bd3392191ebca8dc3cb36d701203321a1ed8dc73b85fec03671756cd4c4f9d4901cda5ed754f05e217dc6e473666c0263c47a45b42e6caa3c11349412df3c4434ba22cf4ac62767b6e3be80d0b779e4e1fb9c495e2f588bb160cbfe3ffedcb0dbf4b13acc1f6c329e969a9810db4c10bf5d87ec8be811d59c7b9036042eaa5b0f12ec2ba2804abb6049d77c921147659f186b4c0d65bfae45902971de6a305c80d09f70edbcfbf28c79b960e2d0f0d489fd110a6d612a73f5bb0602f65fd21fcf8c289e2d5df63c23452ddd12bd86e2959a66ca3c6f8a308acdafe67adec2e4a1c8dc8ad5591af3cfb3d26da565ed29ea8c4ab671850e28d9d74f3996b0c43f0b0ef5d0ef04cce1f5fc02f202878bd70aa46cfcd08f2053e1bd5abfeaa92a964069dc4fd3d3cfc98894032f84d2002d78b0a94b6ccf5ddbcd22c45ca5172ca6a0f208aae7fa7cdfb708ab4d0a7fad019d17445a2e1e079ec867029c1df243ff092310c9790de94a68fa72582724853c0d87e76277673caf9ca1032c0672fb8381eca756a01303a97fba51c0d6a1b55d1461ff9fc9e7aed528b04d5f2deb32eb28d1aa4130c8308bfe55bdd9c51641f593bc5fd28505960ba2e1bdaacd0eb6428572023dc1f0e4f5ea1ae95b2c27c8293212a2c2b7d49afea5cbbf286ef7aa6815539140c201d2e10ae0a5e234166833d8f0dfb6f2971e921d445e1653a0359038c4d1079e80d0b96e994c6ff573bee18053a7fc3dd0b85eefa344587eaa7bc2643ae58fefd54ce0cb03c2e5f761da1557721d6611ae092b82bda1f33f910e5aad813c9dc6811429a770f18d52b02143242946c861f505780f31e19156b0a487998cd637fce3a65e4ffd13925055f6f60e4d4f7bbda6b1f9c5085b00a0bdf3cd4ad75029970ac2baa7beb886aa01374ba98b90dd78ffd614bcc66cb359987183f398a9824038c06fc2abc9db4ed38b734fada9cfeaa2a762b24eea3ff18fba569d3da114c8147f224b51b86bba68ce36d654ca36b9fe5d34a65578df64845ec43fe21df7b8b9f56ac19794f1e0d6c26b8996b77a353ce50c34412df13382e0a226cdd006fe0c535483260f8ea543c5817a009509c950461fcaa0c877dfbbc697a81ca360961b7ae2a72d5045e32606fa1eeecfd571ff18daaaaaec97fa02b39e2d261ce85966f687a9a01a7e05746dea3e41cdd24edd7f5abf66081bcb229e88853f09c6cd520eace02beb87302e437c33da22793cab46f239710cf279be7a788eec2be408326e2fce6ea10efa284a6d75693748819692a9087f97add394b6652bab9872a88f02df3545c9a8b1f70f8f7b741c408a3234b9170e0303994b4b9b8ad7bd63d4bafc010929c94e394dd348e9a75766b73d131264eb9b4d5f24523abc62bfee53bba8ce20f711db6d4e88100dd1194238835cd4dd785d0b013d58b69855f10db224b0f2c8a0eb8f1f9930f7ae181363f86b12d91addb95d9e3d0355f759c0017279a10f1a94a18f9a01f31c2f59add89b106129d986548a2d96f0b434c444cc5310183824e5a062bf481d37f4a9f6b88bde9e8351ae177d9bad1b4309d711b5a8adac76e9819175ab4c80102a7aef9c122233db59beb8427ca481c4af3b90c8b742eb4728fb9298f1756505d0d440208907b4d657cf928e4b8d2bd05be857543285e61af6ab8c806263b28817a8986592e56d4f039eb9353d3c425200ef8a6bb850a6d4294af0436516ae9f122a0b9268e22dd6f8a74ab19d10510966ee27656d049a4e962965dedf214163b2b4e14e39469a2c1c584da2c259670a921fa85d9c4e6cd414bc91b2af9d788115b33048920c9bc9ca6ce6498b395a3d7c3902b26c1812a75f18a003b2e089bc267a67b0dd865556de013e0b712603db15a55888a683b27cbc9129785c4393698b26cebbee2106337fe83af4276ff9f69fbb2e45872c12fc76aaec9ee56cdcf1e1d98e229ea093f2c6362131cf61eff15109fe14a62180422beb0f65fdec665250f178a3765d0fda32393595b1f88d0450ce6965e843df60e068bba11524369f620f267f71657665e62fbf15962e64b9f1371c6b86004bdaf203828a3abcd37b39138afac27defc2bd812f4ca05c4172580c8e9c1f970228cfa96a3c7b343ca2085740dfb6667254304faef8c0431ce055c29635df5dba397c236938e2408d61e5cf19fa9ced3c30038f147bb6a37a8da23fa8b4b0b52eebf53abde2fd008619e5e8889bc59fbaa3cb1e285a9d81275464b7065c84a0d8945741fe01f94e27c08b3389198e308caa4171f7c21080e8e3046322b4a32bf07cd63f904143a9885f8a478a4d7de42b7962c45cfedaeacc40580f760816207d608c5ddfb4c9784495cd6bb613709344f5620904023658a34113b8f2e714ab12f11144054dbfb5b412dce2a6cdd513313972e8c9e39b011d1292ab0da390f0f653e98c6b64f52c971d85f438dffc2042154c8aed5d273628b3eef0fbd4c4b9e39fb8819535c4e7960fdf0ec0346f0e598a9b115a4c8488157867ea82d5dcb1416154b97a608378a6d6959842b75eda1d4f2dee3f33709a2d87156e0b46a8e2bb1a9a5bc36a922d0d73894ec8db2171974ff27351b8caa7775df3ce51885f634dbf1a16c63bf16c877cbc460214c0333529d25f39253633934a33902244786b7738950b5f9f68bae09b92f2bd5c8e1369af4d344de94776b1f0e5bc10e4893b22e2404896c5422afc0c5fbaa5afdbd4c967f19710154977edc8f01df819428ec70ee88493c393425623430ccb8fad4a550d981fdae086e67b9d54c86a536983e97fd2428c0f128da9c45cf856808c9dd20f7d2ecd2433256e0ec4bdde4cf73685f07f8a30077f5b85e944b4878d60ef84101fd667ded4170e108a998d7e3776248c32d7996b9f805420de9fd2c25dee5665f2df16b148a62a6ac0837da8fd446e7449f9e6ddc3ff870a73a59baf0029689be36a9d64510b0738d6e4174dea249a3d6bf97e68e1f457dd240f74eb1a356defa9c6a060b855016966930734bf50f66f80466cf63937d3e3a92b3c8feffba3d4e9765433febc6e415e76d5e9c35dc5077eb860d99478c4f95b5cd4b75fbd35712788150f9bab9ed773d5df3b3af513f5ff31ba4307e3491197664305279cc02089a0bf4bcfa06f98ecd1d5bce297cb9fb3ea4ecd4c77dab06722591e28c56af16976a9e1034c63c2b3c1d544919d335c92acdff4afadda7189e0dd2ac9835125bc9681efba83a9eac066aa6ed1e245faeb8dcd97821bd080b521505860d55eb33ba5b73610fa2b77ce3c681a9bd6b83941f2177b261fba1f41790b58b04d90c67080b99ec9d03e246057d9e916da644eeedbb6c7a5d413240cb574df745e823c82f30eb0f76e3c82198abbc47224b761a5d81c88dbd48979bfa47027ff53a329d8df491a263afd7364d5d156c69c380fb9120b2e2c817c9b5b1afc6ce298c9528e08d42f1c15ceb167512f8d075ccbe83651e90dceddfd1c17fe3470b01209b3b6e9de642dc642454d11ef1d0fc925f2d1f082dda13c18228d8f85f7c5a98bf96b451dd419a70310d9b8c1fdac803e249d1f613b9b3ad1e53b2eec4c274ee109b45079bd7e4080454fbe56e7cc7bd0ec95e5f926b9d18a3453438bbb6c0bb47732aaad01d7b242edaa92acdcaa25dbaafec392828e811af1d226c614bffd0c10ab8482a60b0f7a62242ac09f1754063389f504985ad02c90f919312fe4395f5154af7357940034d4079fe935cd531e4e51998894b1a6519c02b183625bfa5dedf965afe0276ba8c7dbe8706bd37a703aa7524b06b5475c3335468e0c8aa33b4aef12b1b5fcddeb93d7e18a50f4f2ac27aa27de62dce797854250ec0ef8704f04d26c366c99fe57e3a914fcb640ae16b8b2a875804d24b058f4b5ce4d9cdd47691c9af03e354dfb368f0c14b5a4b736878daa8e1cc5dc12872b79c232391900fc87441e8aa8e46b61b82191298c51fca1851dc9570f32ff7e2e53c929c91cc7f33fc62e53ed176b0c01fc412f97942f063fcbb13410ab6bc0471c7325fb2f67b9e3daa9bd2f0fe230f645e7ac5e80602a6105c31c5cc26b62b418e81bbff1846c597eda936ec6e19f2c4aedc648b00877118f1b5b605ec38de284fd82e235fd6070e326c4ab0f7b7ce77412686d266ac93d4b4aa01bf6e4fffffa7ed9bc49c19a53ac92e2ac7a75bf0ef4f4c38aded1f0b67914816664ad8bd88bd021ec715155cccea3a14b4426b275efcec8091b49321b8d4bf5cbabce9404a5ee5f21b35d8154cec55e56afea7671135eae129e6cc690e39ed8f12c0196671e9a1cfd37453ff93552960069137fbf671072b140155950ecd46a9111c19efe0830e5fbe524660d7c986ae3da6014bcac15520a9ab98dff83fed0ffed93ccfe1846cb72f3e501acb99a228e8c8ad0e8b8e1519ea8f476db91069246db90d843c5a5e39b9045cf0ae0b7a6a6f6ad24c39001b79faf691bb32f771bcc8b2b8b0e76a9c6b2f51ec29c5527079a69ebd2ea32e28e56ba51fbb1e66c3d8c1c1141135d5013216859800425fdf4dce9e97398524d2695775b85faca77aae0a43b6ed8d096e9ba08bce5d6276945bc2375f3637aed913c5f2a9e1080997cd9c63f166545c26d0b7d917f2dd70674bdd8ea105b512028d153ae1f1470a6ad25c23d523f3c594ab1c5751109ac5e1f8f68b7de67fcba041f32c155cbbf0fa08bcbcdd2bac5702ccbd3e01184392d888957b34507d62985ee00f4807dc98297f1aab556976dd24474af0029d56a9f15bff4cd814ff681cfc8b239549d28da3af6e13334efac3ec750413eb9218f76d09c8113a24645b048ccab297a43a0931619dd32d6753bb96f2a115853201df2e71a7dc70a8911ef1c917de81079665d1b73f1c43806da5df89c8b563e8b58702d7df4fdf13f6510b91d8b6125529e541eff28e06e8170b5a4d2a0bdf56243f298a3fbd8e46793f853eb86603ed80a3e55721f6f1cfd98e4b850ce47a5008512c1eaae514267b7d961fafc45d4c44459dea47172fc41f255fdd3e526b2f8308a679c603ebef4205e1ef75a86d40bfd6d388a811c5c9ad3b3403d233f32cd9711ecefd319e04de6f4096e28df1d36165ac7b990879df03b1ed28d631170708b46d69aa7e984bd16e165106132058c9eb6548773e4b53d168b08f48e116b97c1444ff1518459724781ba082344d50ff5208bab5ec6ae472d28bce787f654dc3dc8a696506162a57482525f232b4848a3547c7c917e25b06867ca56312914b1ed04ccbd6d1079107156bd6e9a2010dbb5891bb6de50cc522d1794e15dd8c321e0d9d8f93c6fc7b45d534d689a8051f79d7ac0d255a8e8f3fa897f27ba5f3267c3a9849e31b64ef1e3569be801382490e50ba8f38e59d33ea159742304a0624992edadb0f0805fe92ba5009c7c91166740cf72595b6e7b14a6c35f98219f0b529b89d666c007243bc9001df3434fa6e6c382a26cdcece129b7f5b48de74616cf4b08a63937da170618a654e79143cacc4f3c2156438a9cf640e2e5dba46123a5682165848c8d8941c4e94ccff7256ba57128bb27bb3f53f3845eedc8c10304f29e5f83b52cfb1c6375b770430b38e4144da39f943f464628c95cc8b4066a407f9649120f73de4955d81271121b6887f252f9e3396214c60b7b0ef8d55bf49104f02e47f7aadadcbd810ac045de041833d14cfe764097b9b05f9b0206144d663ad99cfdd8ba347294624115364fc150a3a5f44cd62b0617452be4ef9d14fd62bc208931941ad60209c950ebaf24bc5b729d278e05c75e6fe01978cc626ca5dbbbf375877ef78051ba27ca01289b7a5a8c4bef675e99cd63a2637e2a822bd75c82af2bc4f3a7777c3c1d8ddaff7f4ae2c45f2ce0fe5a052721a6d59e9e8e0a23c470295176d03b72ef757b3edab04b7cd1c8ede4717bcd06289d1442ecce86a4c24a98bf5fdc7378252252b7ff807523142b7bc5e7a4deddc5c468325d2924043f50603d21ac77a3995a9315d3b648c935763ab5fe3d7a9eabbe8810deeeb19e3cd8f924149b7f61366dfbea551383d290a3074e1b2c08cfda941181a2af728293a8b86cda3ef3f12becee0fbd9515966be7ac0b51586c08a433afae81d390f152f099344f82dfe65639ae1d15edd2e302dfe8ccdab8b379f5b461c46231a6e2f33b113e07fe2da8f6a7dff5f6c9c77a6485d75623e12e61f9560a74b97771815bcdeb7061b0d1f2b3ae2e394c02f38e19f9a1d15d5a0e9804382c7412789caaad0125542777bf55f7e353d023b91f48a15c1048ae461b06d53176fbafa70672efae7198bdec32b48fbed66696fcf745bb5bf82ce2103529206e3c4936675f9f79a35b8fe48a72c6a8543fe9ba8b0216821f8ad2b82ad394718e811d68e3fb2b3bb101af0835009811933b0dabb622be55bb2cf0bb1be86a5981903df3a0bcc5cbeef311238ce508d3a670c9978a5d38965cf224a86229e7ea5e71f24c05874f4e182ff429ae954b16934ed8edbb1bef2dc7ab6d65ebedd78ae6b4899e6e4f61233aed3b1143b0675b2d413a8a00dc44ece849b08f1b8b1d0e782bd3c1acf0c56b0fddea5af9cbbafff906b0fecb4d0cb08d8b348fb7562e28a21da54ded15f95abe54ac37d4507114a3cb43e69f180f627eec2641223a9329a08559b26c4cb059dc3f5037ed54128503e1bd4962288abf946a1630b9116b0e619a4c667eea51f8e3db48898b60f38d00972e146c33aef48dfc785c4fe9e6dcf1b55e22bed976b186d128cdb2f8c082abbf699741531f07a68525950885cb536542752e7c7a6f7c84dc2d738bd1f9e465e2842027f5751046a8d75f178cf3e892e1fabdb6c6bd2ff3feb4ac469471ca01fe5c9c031cbe484f19b0711f19cb1747755a5c329397b31f30beec5f36d09318ff0e4c43e9fae0ccfcb4b73e6ad6ffbe068669834d6804739272f85dfa12f311bd7f89aca69ead16644aeffee8295389cd73a61ade4e05057f9b87755406429565d69b581712a1ae3cbfceb1c8ee9426bf9bd1a6659d22c7202675af17d1285fbbfc9b42aa331663dec3bdf907e1a702227b535d655ac470eca67f74826894b57223691e45d1ea7feee91d81b8d6aca19713fbfb81c19097fdd099a0fb19fdf3423cad69c2326a187d2b23220e31311af369ca9579c07e9d44ffca7f9303fde9f97ff1e8e98e07b418653c01dd6cad36fa06d37c1479b85e7cb19f56a6993606fbe7c2029f90e8e713d50b5cdc9553d8e07722dbd1c44dc911072a5850228b8719b3e6aa3cdb3fa75fa2ef0e3acd2d75e7cdbeccd0aab6c88249922bbd3ca12eaae79ecf9a8377542c521a13c9ca8ccb061db30cffeb252f3d603763bf55bb29fec9fe7a05902bddfa513b775b56c624fc012c87e679ab86b15b5f878631de3436644f1a827ff46ae671b794a6cd43c15a16a4628bfb26f420eb7796bc6747288208849d1bc00173b665718366a3e047807c2052ac4b0a96a8e6e61ccee4336f6ec8be609239842eb844220e54dc98526b597d425ff8eb0830c76a46a266f620d6fae411b9c1e8c5750d42a9e69287727c56cab474c5e9fb2b2c0b8b92015eb66dbb4304fca6e2b8201d802eca7335451b20b7574428dbfe985799d9039e6c959f6944a40c28464decbacb5e6641377512e80fb285cc53f42daec0619d775deda02731fd6efbb20ea48cec6cd4501cc036e449f09f0f76d1883ca75fbb9dfb9c3a5c0983b3c90ea9811eab12250aad5b96cc1f276c859595032d1e8b6672481dbf3466927baecfa7a46289f2e76e7954ff5d3e9dbd73a9a3f256620ccb2f72aa0b1d6f5803ba16e4952a0b487b8db7bf24da00ee23558fe748aa6c18e45f1a25404cde14d0739aabefb08e28c90d72da0b863d1743581d7101c6d296d362ec650e3615e84d5061ea9a0fb5d6bda60670b32b22c4cde0046f3966377327eb83fd1e17419f9c3f4ce110c75aeaf0a7f42119962067a60485b398ed4a7c2083a39a0e6e8f3087207133b83d204fb171fb6ad918ebf4eb0ded2c82e25bf2e804bb90f47f72d9a5474554c338825be2fb8877a8068152bffbeefb886d77278b1ebe3838d0f510f7fe97a0ed658282de4d782dcb3a4bc85e00c211d2de19d362d54a26b8ac22c0cf005dac13d5df61e20520fd8891480ccd0215805d276ffbb501206beba37472df00478fea7adf2e59d5b055486b4ab5991dd1e4ad5d23961ccce362b2085e702920323a09ada4c3c102e4d6a82e4129891fac9be73ac34260383ac10171dcf53f7a5e1f0eab19cfc9e7f99977c39858ca0b8b9f4c9eacc087972bdc6f3b1df7c29b7ab7ea1368e9aa70082ccb18a5d82097b445ed0a8f02d411db6cf104322520027ead4569018fcba09913ee9c1e2feaadd33c81237c018f218d40c02fd524d6a653bb73973744240b9afbffc5ae602dedc9799f3588b1ae18fe937b633e29096d5481be676563ef5c97dd5e8d8c14f42a52fcf6adfab9789908130f0c07650bb691e28f0aa757b8d14ec5faf128df04e97295bd9e0ed3851b9cb6d2d91e0398d0efaf9f942246f5ba8b07b071eb85b6e5c019453d43ebbd6b03fba23cd099e38010ac707de067f4fd5506a594fe4dfc8e71a98a653c7628277b2866edd449517f0d32412134960c9570dc71612ca8fb843df89e143387b64318a890687afb8ffa02091341b4cbae0e288a89e6cacb732113bff9ecf5987e88fe9ebf6ad66b1f116a2e9580c39b2c0b717df5b4b81200ed98c125b379253c10e7496e780bfcc05843a189e8a8e2c5c1568ff5616928c6278011b6d3f96e47ccf6d21f589d7424581178b8623830d679b9d07f05025e7143a77920dba81ca4fee49b1495d52e350fa3cba0410bafc8115dc0ecbd85b574660c3becfcf08c37bf7136c7ff3756c86cae40dfb8488acf7c47c4552c12766dec8f859f8c44ffb17a2c85fa29073411d43a3ab15ffe133a3d6f004df52b5b28e38656f9877ef7376f8abe17ead8b62ca0dbfe12b2082eabf0b9e49e421bb13b8d1da75009d37c63314d4cf8dc3aa8499dba5ab6928bb75fc24a0cbf4058f060e2891465d54f16c72839c1fce066426f8a728876c2fa002bf420485ba007aab80c0e6c88d1eca6b6101c5f7f980718a89db96afd6bb288cd5c06ef501887d7ebe9cac4cb882c8bbc7823e745ec0c8063ffdb6005981f82d0e3cdcce9e009dfad8c6211c6a64c9acb4483ae938690f7334b064002bb78e91e08e24ad73645df7abb6a539d8006edf02c6c31e255ca2bad13603b032606262b5b23acdbda2c148e73afda368adf8b023b529e130e159e085bf6c44e93fa7c8e0317767292bf66f460453ad6de09678a50831328a60214641c76b1909ddbd6b539656112a8e3794f666cddfdbcd439f7a00d891bd98045e1c2b62872447a995dcba76bd46753c6551b42661704ad3bef32f6a097a70d7baaaf142d1a6d7b98549a88e464a199975c4a444045beadc07a62bfd791d1fb0de4b69bc36460705e3c1c3090242c1efc4071a310c292c02b9f5e3fcfc360c7fcdea0010796487f50c3da0339496042fad44365ee5d504ed4ecacc6ad281f7a0575aa70afedb79b6e23f3b44a9e9b8d9c8e28578cfc6a7fc174a296cb4f1c20f8520522d9c61f4fb286989e503fbde9a696b8d0be72750c5d95eda728622b4c331a55c813df59114e508e747147acef067d444607c5ac9e7f0f0bc1642d63ac7cae33ca04f722314f30af4142fad14351c94dab0f946dc078dfd0dc33649faea7b9ab4c263e994c645569b68a5b9a02de550aa53f77b95df467e5e08889fe34bc6abf0d6de2c359ca063dc7d484f63c56e4e78cd520b8d4df9644a4f0a8635a8fbae20edfab083fa26e419be148dc84c4a201432d6a3396b0cebe45d713f546000c7d0f65c3b3fb30639fca5ddec4897a68aad01ed21856ae8875d2b1d8a0144bd26dd760a37560cc8b14ed6e5c2cc55d4aebda9e8afacb22d7623c468e93c323048351d2b7e25776547178f4cc14376dc6fde40aee8f039128d0a08b5ac03e8b8603761563f2be68c11eef95798232922ecf62cb17303d56efdfdedcd160709066250583f382cd135a925ef8e1ff390e2b849b35675c5e561b027e77686c666fad98117e95d10e5111dc2db57a19ec1725f25bd7e635f295a581e480b52587c0d6fa5ab87403eacc461d3ceceddfff782a237996ed01bae3c7f8dd0bb48cd5a9746178b70ea1bae8bb0b4f8b1768513f63d7224ed2aacdf3dcd671d883ea45445ad5d2e42f1779979c70d1a4604cfed2820106d4353f4c8e4fdf09c8e84a22a7b8d36fb23335f3f68aa9e16f6e299203b6463f8f3a719cb371abe83fedfa7e4bf7cc8b9ee7af94a7f228b0cb521f43de6f811d0bfc173dd88e24f0f3980ebfb9b4a30420e09dbf24c7f32d608d553e5f1f42b42fbcaa259a0e0cb8d3a2dd28b3483394c525fcb49f36220bb635720450484a3e0a87c9b6910775f41362828a4955c7da11e02a0d1fc96405e09724d6e4b110504f81b73a2034472c8e075cee9670a039de0a6ec0e4d97b868f669d30eb5d3fda00b1d8f55dd5bdbff0558e5f07b5737d4e526ebf5c57bb92ae66105a9bc336fce1d238c789b2e83e79a480be6612e8589fe8b61b163c8f07d92139fe5e5986a6a2ba04599c0d2b1033f55ca5248e1caf598838c08841f5294fbed2da1ed1780dedce0ee1e017bd66f44c925c803d20aeb4dcc7b9a9e3fd843b941f7ce98a85ebbe6d4d71b52b2a89934854df8ea877b930399a0f90ea4d186679630905aadb93b8685bd8d4d2d2670e201af04c719c24b5e0d02bac55a0d6ae056821bee8dfd44b54f511cc6a69839ee5203d2f8e7abdba1be6d353b24274e943fcc685bfa5aaf4177f477d0b7523f3d3e394e223f2264d0442b1a49d9685f45b6e5d30b47ac1e5087d60d22dd4dc0beca82a2e0e5803ed3dac69ff6f90ed25c415b567ae5bc8d2db1b23017333686df8f5ea2974f6ee9cc6cf479dd63c9c6671c927a2fe7b93c2e5a6e402d797c8aa4816e03a58884aa3adbd73026e359d974e68c5305dc10e137711ca218bd8c17c1d99a687f0bfd5cac368bb4e462e761afd53903687470019977198bdaf219fe1cad2f1d6b8be192c482aebae986dd59681eec99a47dc9a050a8115aa267249ff0a58200a9ba0a3c92b3eb670db4b905709234f48aa83e0fb551ff8c8c11eaec1d986e0a53ff00e89c5442f7bd0b5f1d865e0044cd0f2d47f6fcd68c1234d756f76fbe41a942fe052b7c1d02d20ae5862359454a45b1480a9d03112f7c27b08afd51aa9c0d8512f63549c15e890cb26c5f0b6b8d3b188c0c50195c122a1f7e8b5e38b45b41440221510a3a1bbf1b5fe9a3f3e5988641fee4e0568972e7465569c73b8540da25837b35b04fa0a5dab529d052ab8eae7614c67acbbc7372f3d450f9e51e71aa1e95f16e1d4cd168efd42f094fb6d655e094d3f94c4ead71449a5da9ec9889a85b9ea1d378ccebba292cc7a5235f6f7a985a211705edd17be2bf805f6d6531b9d7f3e4a048618e3c86347a6e2e28b662377229f4e8731aecbd5377daef516ff6169640403842b6705fd341fa61016d94f367854bde22e6b490f0d8031e388cbaa97625c822a736f78035f71e74e24bbad4ea783063363f425f45551fb258dbd499d6648cd7f5f8441aa45999b33fbee39fc5d5b4be5c2318375fce0da8188d07c05c0ae59700dde6b3cdee400d8b0a59eb21786e587590e0ed41c6a2383c5aba2cbaac4bf4d7faf1996a1bdb858596e15990f9b4f4a8a6efe2b7c3f5cf9e82705dfe98b414a65707ba9ea353257434ee60a03cbce85e07ddae34e408877765e2ea7317919007667fefca4735c7844f41514c4723b3270b69a3d4faf13d46475297a628ddee956f783284b52a1e6155945fa9b7d916ec64356cd2366d4abc2984426936b0be71470615b35d619ccc05efdb27dc164fc69a331f9159f4ddb6ad4656aeb351dbd2c675ed6374bc7dd1a41a16608bff0c3eba4e37e18cf9508c9bfc87d4e3bce9423d8e56f91285dcd52e90af7596f3e4c872bc7ec1d4ad218ae2d0785d5bfa778af8f24102a14d1d58c766475b109c64553531a25bfab39b63452a3211a6a85d96fa3dd36219f77338f8d2aa8e1ea050002dcbde2313ef3d2b510e6e0501fac0b36f85372ac95eda87e41638b9308c3f431fb812e8fd9f61ecd63c8c83358c5c6dd18c6eb45fc6ef8aaa7fdcb589a0a3b4ef8cfe869f545936d11cbd0bc3867a6b5df9fdb2a14866d6b68fe4c8ee29713ff334a46b5e673ea051d1465b0f4d0ac77b4b30e2a012e550bdf95a40e41f45d2a7dce4dfb837824b5a9e5e9f74a2abbd1608366c2ea9d7fc69a7c9eb4f9822184d5205ae3a935038f3e862fcc21e41c7ebdde5991b2f2c2d552fbb9ad58ad08af07679c085aed8ef09efe01b08dcffaebb9e471119ad6778b9fd3a79c1e8fe0ecb08797206e2391e4a8a59a3acd1fe77780c1cba87117fa7f0ad7ce8b5ed61c5fa071a271190b1a98eb4e2cb203d35534b95a99072bd52cce475acaaf370552d7ad4a6a99b2adfddee7145c76bcec1e422d79a0d6e893f45faadae9f914e7bb376a876da37f6d52c82c24c13a8184fdb84ce5bbb5e505b94a251cad7a5cd6b6634bf7806f7e64f242c2a068110dea1320595a568accd2ea3b6cbe4e94b86245c035e34a686364fdd193bb5345e6076376362af31d5cfb76f504c836fd64038e448576c689480a5651cd51f50469bc55cb24eaa90c70b954da5bee839229c45b1af8ccc5b7c66d25ca5bfcb8dc8c183767e4869f03c9e5fd8a2d7288faec469bce1c2a6a6473705457044a7701ef52b78306ad964f2efeed91d73f4c170907df112611ac86fc97131ac3fa046bebc46a946c885dbbc2df252062a30949cb86dd08462ed7e05caa553e6477a3bece76491f387c5abea62aacd95448ae80caf2f12cf3440b97e2f8500f896c8d096b972f25ad9a08fb410d09b2a86d5e22fdd197bcb8a0bb150264011c8b646f4b99ba5c1ac952730dcee6cbd8682eefb7b88cf2bb74d830482fa7a66bef77e8d071e1f56e90ffbea9fcc901b6d47f6c7305f04985250e041f376942c25bb00e5e451e81a754c39d0ad369c2f6140e9481ef5584e9a837a766d3e21cf53f86ea28a11d6d05755fdbaf1464a7a9d570582cc0c6b3e00e67deed72aa404fa5f5f7a3e7fc89bf5b87d66cd72d4c6b574960cd483a87ca617b3ffc6f59fc05d602a718489e8acab983fec61a20d3a2c9bb8790a91bd73e061db5182f4c65bdce2bde111f19863143d959a47c4360ceff5d5b063e551d6e146b0220e0b3d01cac2f759609fd7bfe6d0c024a65839edfd3259e869975f7114d4938abdb8d597386c9b83335ddc8b2f589a5aa44e238a8c719c862bdf1a6ed8bd03fc6d6d95f6c6d78e8d7b600b14f25320505bb216156b78682e8f22392ded9fd53f6669506d47532ba7cf223dfee290377d2c6124d01af452c34f369c37c805e83909098b36b0bedd7a15deedeeaefe46405526bb545352d58d346b06a4bc1213360596c94cef8385a97261f9e974ca7cb97b88f57f29c214c3707cc567912ab9b9d99991666d7cc55988a7af38a76d9bc69223874c42f5884f76b3f8031037a453485bb6d6ed9bc4cb5e43015750e40de6fca3a513444492fe4cd68807b29ff9359a7d60f0b204bb88ebfcf21893a55ea318d0db651907dade809a714acbbbf36734a12396b0fb085df73cc9575966c2d9958c272b04bdb17be6db1a065b7fbb84d86f769fe52f694d71d5fd8ecf9ca0a0f575bd564f257b76d983ca928b8e4f4a26ec6e2b8830a3a46f3b3b0bd574076ebef543410bbfb8ba3f8085974df5598f01b472b68a26abf944470c97b37987a33f72c68fd11f4c7d0d2a2ff7670e7aa9e88b99017d875e090b22735b88b83b5a7a67f4f4dab0a501ef96e8b4e012b00767c2c9f842e394e0763a5e7c9e674d8223a0c4a33fe36412f9f1a16d963d7c6660091ada332ba2d2e3edc3726504627484994be413b286ab3f3275815a8adfc9e14554f34b32c96df7ee861493c66ff81381293c60f96ccc9691c3013daeaf6f0a22de1650d3515a41fcc052f69b74a505b34b837c8de1e33dcc820745d2cda89e7fc028cb9542b8dee76a85aa1450ce7a1639cafa3f94b54f43ecf7b08c725f8c96f16e309e3cddf513a3270a76fda1cecddb7796a0cf2087f4a85b060b32782e001c3644d80e38e07006f5ccc2c5ea95b95ffae9903e54599b0b20b9b5b82cc179574acc8c5ca85697a8e0df2a2d5b33f9773e2b564aa8bde0967ba41caafd038afd9eb3611d3c2000ca5bbfc5790b173b694dd9632fd2803c8db6da1f27823c7bc65efc4aec14171532ac1f4e776944b16e76cbe234c4d84dae73b600e7f8bf16dcf32b8504fb608207b035b4f814967fc743c0c9b39eb57718b0fe055b6e78e5f920534b8a8167a1258eb71873d8707014ac460cb1c6bc68f67a94eabe56561c76cbfceaeedf58f5464ed7c684cecbd4ef944012f7f2dd87c4230852a28091ac8e204e9f4b3aedfa1a7a23884e46d922316d4ce03a0dd00a2875119f26e80d666bb1bf994825dc7520e710df14f16f82eba78a2cdf293f213c3f141e4fb4c13d9814f3c2057ab403aeac3becc6a132bb9035860f89cc8c2d4296d7190e6384c07036680b5226852ee6dd498932615d2b992f19393f815cbd90e68c7f09c1dc5add623f75649f52a8230025f470bfcfc240c6ca7c915cbef026c2fbc285bfa347acfe0450024802dd0b0bb7cc7b0d7dabe9af10725364e367c63a9a7fcb85a4de28a2c43227f0c7c31ccf63aaa4435c1b7681cc9ed514fd575b4d5054c1a0d5834e78214a61b4fc8e74939fc5c08be5e2b297399ea91ca28ba44de9a723c29659087109e5d2c58758d4e31c14fd325335f91f51998d5da336c9fb7d816af66c30d538776d3dc0d5497e8dd77768d69a645dab8ea792e5c9a247351289655c3bc4df602d1c0c77684528747d778b45d595c4094fe80655e3cb61057f8f1e779d1215efd0e0c7dd445d07fc8c97fda8c897585dd07a37267dd1eef7fb3da7148ebb83f53ec16048ebfe089e5a7ad2466a25d6e3510a70686818b28700038d10643fc9058774f54ea0c953fb6c5f4cdbb559743648ddb02346ae3fa28ed573b8df2610bfd466bd89a15c0a3dd142ea191d599534685e2fe08ddff4709e8c0b7ea6c80b100a170f315fd949812dd07823b09166ec89200c33c1e92155ea87ca2eb561b443882b579c132d16738cda2e7cbd7c869f4dd63d1f948bc0e83689429f07937cce1ba4832ed6cd73c07e77958d2e1499e0d59a8da7fef8c01931361d112cb00130991cd5a9d18c0a7440780f369441769bdd4764516ade05fa84844f29ec0f229fc9aae242508ab1c8c0c34ea973fd8ac4fbd7cacce13a8bead555937d76fc0e0cfc3b032916a8d73a7deca03fad9714bff92225e17a0335abe8baf1f0c2def50f4ab5b1fe2554e6877d87416c5db11b1526f57de1d9cf28f168fa97f02a8f355d9d760f5166e431c6c56329313bbc54a88298062011d056094842ffea9bee60ca35e27b7077306928d6ba1f983538c0713ec1855d5831cf3c73e7c982380945aee0ae6d90fbf2b3314ffac60278312dd264de0d5732c691394cc6f1c181abd65a51f42c28800994b91d40bf0bf067446553c73352034bfad5e0b7cae5eaadc18e4323d5114b81a89a7400c684f2f6bbe3957197cf981af53d11e7245f32eb4a3ecd05855b7455e83538c3f98f54a5347367721e53c7b0dbc29f0b12e3d0e1bf92bd93a14c48ea530c44836e71edb42e53f8a965d580d3d421a177f87a5f155514ec7c9c59486606cc315a5ce02f24b23bb084509cdf7af623ace88c57dec4ca6635aac1616245877ae9cf75a7251a28d689a01bde17f2c4007d5042f36298037144c54a6218e3d76fec18daef624003461bce18525f8d22074611760e4968707e509408ca8883ff1604f9d7f3f71232d237a9f20c2c55aee0a83a4c919513f5e8ca2ebcead6cbf536098f896e192a712ae8bb1809ecdaab79c99112c0abc7f465659fdeb10355e6e9cdbc8526566cf7faf6ab94b5173c42e82c1ef22028f650f99919652286a61f49262a123a5f30d96bf30c95de393f3286c5702962d47bbcb390456e82bf6defff7a12e107cb63c7cad50ab4462265920c4f59648aebc0ad2407184876f2c368a9edc2a32c4de77d9db7cc6c2426c31b49c8dae4c02d43a407e3f19796d8d1bf5f00a3037a5218a5cad4c704f93dba925327d0988ba8562723ebcc001a111e485f90875e032f6aa3501738195fe2cb6dbfac5c23981b6a78d0eedd1d23005cce1fa4c82835b57139abf97c6f29d3717df47c4c86e709995f790252e9669beac9698a8708926659642762679f99b84b160750a2c8cb89653dc61d3586808b9f3948fd652f1427ffced04a443f1a6c4642fab41efc896f08aaa0b32b25a55e0b4b0fed600cbe5b258da595d75543391d0422d32bdb09ba096950bd9a3f00d1261203f5c9abef895f14e3e81f1528e23d6343c55aca34127ce14e655baa31f2401024dcabb8498e99f1433f7154cc0eb31c385920154d34759624b441b6032f7d4d5bf8a8f68e39db6f85c854e593f313b51250bb64ba2eafffe4b9683060360ddfd52b79bce1711a14b811749c47127b36534145e648d9fd62b9dfefdec8df12643fe5c6aac02a465621239c88b00209027ebc2f14dd77a7d71edaecd5809f2a2539ed9f009befd23174c14e1e2f9c4dce750ace10c4d46e41a49dc9d08b004fb3d2d16e985bf98774660880aaec38416967cbad478bc402cb68ebbe2ad5b5213f58a9f25d136736051b328c30bde99f14b653966bbbae54c97f3e77c6cef3aded3d5df4732bcfcf49d2837bcc775580cbf427d3dd6ba77965698651c5b92d9bb1453fa25024f9ba9137feb67e4c6abe6d17dc4e21d74460a4c2db2940abae5de57e70b9c2fa4616ba0bd99811a4fed65043137c7b798ebc51aa7954ff704bb17201fd27abbc4d024b5af89a652d07f48fc3826101fdcf76b2103a55018e591f558c7fac33afcbe84c771915e2c23d82f05d5ebd7a649ca890b1ca9c7561a3365cb159e6a5717be08d00dc5037ad9dd528cd70fc1eeea8b77408e5b040cfdafd3a861a55c4ff29a5dcc27cdd0c3b0cd7da36691ea70be891472ac2bba8c98e962056c20b07457d0213dbab6fdc1d407c0814c788ef7fd660f1284fde69a95f0ec5938cb6dab2d07f7a8e24d3be3f1730b00d80fd623b5e11ed8f1145ceff4876a00754698eef6fd9816be550dcc1765141e4d6db9e8a723ad3ec69edcb79954d0bb73c4bdcc9e716194552f7cd26b27f47ce523120c89d9fc06fa890113a4839d2db22c98e498e139b39ac15680aba16be2604863ac808abcb0f2a296989bf1255ff2f7fd6d4f497d0874b4c5147fb426b925263bb702ea5105d722f1cf691c193ce346acb1e128b5add95041019c410c8ff1477d71f51de48ff324d4b3246ae61659f5408e32776ebf0198136eb7047a9719b655f22733511e2fb4d336a98e661f16ac11f446579cde9c6370b648a846265b8c10a5183ac8448f62cbbc051aa1f122336b69f4aa1fb022a1d5e71bc087373c4993ca0bc6b6dacc9ce99db4799c07b7862a88dfdc135d2efad543b49364e8fb78bff471c81579f82b05a8a6f6e541b1708f7dca7b7214eb7ba8c17ee2b1fb129e988b9e02e7022f976e9b1d7ae664a0a89e8b33817885900fd88cd40bae564479a14ace87e1175e5733ac562328985bbc6786435df966efd53583cd44f8833d1387c27d09e19f180fd50305f867e82a4309590c2275ef0db8c1b8e2c5c831c729dad60fe8a8467b38cb3d9c39aec67f1d5c821768585dd4be94f1601a83b185e2493dc441f1fa20fbc1eb6a29af843dc3c49144c64572c903f92aabfbf67949e58c04fe79816f271c6d11854565db91e2c7adf7f6a9f3de4cc3114d6207a5ef3fe809daf2509c433af2a77e482d685dd1a50e980425294ea5b289ddb6fa71d2b50d8115f3433ce6c7611bf675ab2a2c936e845e17846184851228b14c6ac0c95cdd7244f21f4e707572ceeefd6806be75b6ef73be206c1f5c1cb85c90a298bba9703a58c5bf9677fdb692fb8067431f8651c45fce7b1ffa899db9079448a4bc4eb7067665651a1b85d23239ffdf0e5160428fc62ed3d4482337de8ee344b1c08cd85c1d4b44a56702c4ea18bc01f7811b576b783143e8c507258c76ca4631dbda7d929e970447cc5a3debfae0cc73d654c58ccf4cbd3bee23da5ead75aebb0f052654e1860cd29e2b1fd998e81358c19a74b55e53bfb34dede7a31e9b4f89b224a2227be3d25fb06e9e4c401d4663ecba8cc2ef823fb9db6b97de149149f85814e8cf15775ac7f16c4d52ddb3e4b5b0b44b20d204b3ba676252456cff240b5a41780326b13b2b28b13debd44d6b521f521d5079b96da715687b44959482e9defcaebaf1fd4e6db1ecb48cafeb03a199a96c686b69db75ea049cf76668e95b83ae7bc3e6871fb458007b9d939a95eff909ae917fb53b9e6823e0b3c1f6ae4f868a2242415dcbec3a9b9bfb8f669cec4b13ae8a6c609b9f3c69ae7d01dc85578aaddf2f0234db44bb219277b65bc02b15fe4823a7cbbe78f948cd9140bdfb2be6bf7cd53546e9ae87ce3a5406a050a62d534bc390c1922fe5deecdd6906122385822c538a00a462ad3f90cd26f09e39289663e3f5e6814dd5ea9d831b6828bd57e7491e367dd65bbde1308df108b7234ba4ba91dc6dbe5f1b79b65b593fa31d5497ea7d2e05a6d800ebe335cdc7148818cafeeea2e32876810ce56e0f51138806088f0cae1121ddbdd8d9d9d70bcbf166d16bb06d34fea8565bbb7c648327e8b1829c3a0b8891af8ba03083e1a104c9098aa0a1e63de08d8bf1c977dc7e5c4b00bfb7cbde29c15cb70758af36c5e7e2098fe01e4b8b1dc2de497e064b61316443f388567a738431b8d24ecd3affabef6d4ab798ca1456691930550396eca309457cecc7ae626d41b4be55c3d26f21079379cf17351cbca75b7e9bfd47dbd9b3a77e15dfe2df7ce51477a1689fc8ff2915b438b2f9803925798767b7f2442801d723b2af79c306372bf9c80a088512b247b742187525b39065c0ada7613c1d358854b32189b1c195e4172ae91429bfe83d788c0a903f7d1ab17a53789c11cbb5ca12f46fe04529248f1142ba19917173633ee3deadaed4f614c2ea88b9e1578ba8d59eaa5e4aee4bae690424309c31dea44814feeab0dadf0faf526b805ebfe65688d93499f12d34df788e4682bb041b28bfe167ab91219292c0cf66dcf7c797f60ef346d24f8e4ecd64322f6530c5fc94f3e12b792b524fbc0e50f41ed16795e472076b3f8c2bcd3672b8654303c8bbed312eef3257d35ca7687745122c39799a18d203a084762901e3e15f57fd0173f7a36c6d8aa2a58245afbfbadb3329031fa12fc123ddc29b5dd2ac0b362f5ba43209eff3d2e7d68e4cff716aae513f930659a32ea1b647a3fdc0944929ce87b3634556e31fa10ad1327c7da14d7536b003570e241c85c38457c30f6d5a720c67ab076931b31095a13bce385b5ffba48507aca8539cc0c8c6fa83d4c1ccff0a6d2f0c92e8bb9890d693a5ebcd8e1b9b5ff24637bf536af6b4f48b090028c414d652bac8a564dc254d7ed495dd7e08f330d46d6b3f15a004dc44835add529385947e217d1a3284f86990d2c9a58c2b090fbdee52001bb89a92615b147addecda007a967e8db1bf4b8dfeba98f4612636b61d6ac2011d9f596ccc95d5f13b7411575373ba5677defaa3f8177ecc57842f03b858ad95b77262c7b61814cfd0455238d8bb1e646d9ad398160df2e5a84567771faf71e42192e641b643b694c7f220279ea8e2b971ed38ddd4b2c82974ae9dbac9403769349ffb3d89364134bf2dca0e9b5af5ea448c36e820b5cd368f031c15af44a575bf290362eb7baa9944720ab74d3959a0c86056b1f5861bdf281f7af67a9d5aab31ff721c7a8aaf1e1d31c35376bdc0198e9d9a3508bd85ab3b0764704cc7c7828e58b01aa9cdb115614b1cf65eaad7a7b444f8f783610e55d0ef8fb8068d43c6b460fdcec6287a4366e69e18b4f74130183c8f7ad752c64a1053f8a931e77518f5cc2df01026f35f7ae2ad15eded7faccf48a6c890ffa82e280979416aa67e69f881f4fbd843dd966d7e3fae443795abfb8b22ee4911fc57fa89212263cb8f83f67e21afb811bd0aedf1e28741e786cce45acb7da5d87b50a1c2e91275ae0d803c89148dd60fc74ead08eca7ceba82476a8c2c0b5b8c2558c228fa7bbf58a9510352fe5e3a8259ec640816fae312c864c09552b053adc0e1aff562ebd8b05338961047ad31aaa8df966b0ed2be6b39027f10ed8ad62161115cb3f1950f5d5a4ec9ca9648c4179e192d3b1f62aa52d31100849d39c5d9fb441b85cfcf397d79febfc588c3380590fee210a042581c24180e8c5963e80dd08836d6b592169e2f8803d908f4a8ee61e77f0ceceec8dd45b0e2b6d0314c6cd71f4e58d2fd3d882b7fe99db678a6d7d3a1e1455a47c469ca0675b4b7d0acc3a7018c7be6d3a1cc3d4b4ab56f2deff041ebd6851d10e2547f5d18b1b3f2f2ff3057a6cac9f89d30d2a8879d4fb63190dafbc94fff722242ee8a6af5614ac0898a01b2d439f7985b9725e3d208fbe1ab5cfa3a86a17816fa03769225a1130c5b9311c58ecd7f3468a5a6243478a61d4dc5830a345194980e57a0ceb9d28acf5a804e6957f5e10d3b26e390e5b8a6a0a9ee2894447c18150d1d98538a446fc2d194b2de052c940ec13ce72f2cccb0c9d707ed98348bbe6281fb857a885389270a29ec2dafe0b24c77aa9163fb1db9ae4ef8cbf90537212b4b88a03fff211fa96cd3df0a0b2c787bde7c16ce2ecc7d41a4362e42007341e3077bb710f5ec7f45ac002187a217caebbbde7d88aa9bfc833b56780208a903549347abeb88257a4bd3877d943218ac1c4a0321a9dbf3f7ccd4937cfa9656afb2e017f2cc6474e66643cf7257ec5fcadbba03331a530e771c32f503149f0f7049aee1166e9fb61bbdfae7b1497dd8f1f5ac7136c074c5478041244b2de28bd8afd5a23354a7d47719b09ca22c09e89377775381f0741275887f0a82b388aa59933aa57d2e110dda2998d2e0cb7f9f487d6c39c1371e58d5cb83554f0d0147cd0f9a09b88463ee2acbe5c1b88ff8934794751d7470190d7e7ce9794ad57151ee97bcbebeb539c4d165577cafdffd6ff1aaabc86e29b2354a0c067e7fe448dcde6dcc78fd4558ad3a5a63f0f954f23c4791cc8c585c51625ae11fd2f02cb1b7a1abd232f67d8ce9577dd51702bdf97f6f09b0392c742895901a17c01064f9c29fdb9c42bf58712f1ea5ef48e9eb0f8933681e59bba3c6861464b288487d355323218d0d82c2730307455fb1005f37be81c5aae5278c923ed0db011975f4a4eddef016fbfc26b01a901a9ada4eafe93fecbc72e3693362d9f4058a5e68e8a71b6459ea57ff4f83cdb9e973b70dd433ff29bee57bcc4aaba572d128a565054d4daddb0f7bf093e87e8949ff222c35284193edf57f70c5057283ace615a53fc29696d376a44954ffa687800be9cd8d9096a894547ec8befa0720a92562d45d32945e70b8ba18cc51e04171d168c89e09828a229ced1cb1595289b1e0e29353d9e6293d11447f2eb7f0c896a1a227b1f2617fbc894408fc8d9bc2ccecf7f76b598d8039d3b43215eb473211a509a8e8dab6725ea83cfbbaaea511736e3f08449bd0cf81d273fc3e34d717c203c33e66568a6f8b0fe6b9eb421b82f2f4514395c29de6878ec33a9eb47615790114903a658d2b8e17a5dae4f3fc63e3ed0b19d001ed79db19155eb73c464d30e4a07928d680794925ad481ca83dc8ac62116e865644a08202286d4fbc98e358b5c686374f9dd698ef0dc53dc0b3081932251aa6787c58e2bcc0826aaa02813730ca7b16e6fbde40e0f2639170e33efa37216b8386adff3653ad499afe14d4506fcecf4d7273d46f72460ab270ebc9de14d9a1b33790dc9c5b46849c95270ee62a862b4203fa1fceb085f5937b0accd587f571b7a0af95a876988a491b5763819a5aee06245dc71e353235db59c9ae438ce28375d17eb68fd8e8c3d2d3838c924b53ac00d70efc6f4bfb2d8270d29cc6ad3ef484d8c431e19e552d51deaf471b7f62aa5773d88fdb1a6914d00de5022b44d6d547f5d8d9cdf4e8daa3ca94d46be0d9643ace7f77d7f58e769fee1f16708919a9d502d8e5004894709e9ca979efa6b308f059ce4e16340cb3f4b5134ddcbb28ebb565537408102fa787961b0009750cf8ba24f5d2f7376d7fe450abe421be05866a06f9034eeac2cfe7646d34ff85a24c8be1fb648981d060ca80fd5893e7365bca225bf89e0c2547a7858968f9fc6e4e8164c48c16f18d33cf0588ee67f62abf2b004e1b45501b077d0416ef0b6776fc3f3d2f73499b80a8bf232a2c1056fafa5ec84817af571117ade6c0a554c2bd890f591967dbd07dc1327b715e9a2bb6c9781bd6fea890b01517e00d64279ce9dccfd63d5bd53b76570071711227da51dc6c2068c2241584b4942be7904a186d0fbb7682646034b895079e6a9c6df15759781ed3bd92ac2f37a8a0d48c43f356f1f74fd83d26afcc7b4501fd9350b807575ce9482aca6fa7fa7a604543b3d1ba85fcb5a5c44167725c3bee7c5282c52c6468aaeea981d143ea2bb4c9a0c26e6d81c077a17bbf254d60a5f147783958fe0055d00dbf570d84076ef673159f7b4ad0bfe22207ae48f9038126a468f562981fee2f70536b3fcfe976a2d81807428310cd332db5beeb559463b5c9ca527a2cab8d9fae3384a68a383de24ea2e65b8515b45fe8f0755402b720783308f019dd006697188dcbd26933073624ae0312e164ac5dcccceb833de4c0fb38d261f1516f9ca0627614c3f32a490f6fc0ba3337b99b5d7f7f1c1091e5c75a419a372b78bb339d7867b432d604d4780d5bcb799e8128944ae2c8a6f25ccba9931910e08d9ec632a8baeb99c6ba5326268a34c620619c8614f4e6db513b59f0e6c8bd278c4512e2d631dea25eda1d85335821d3e8ad96000357a225da492ee858687b7a3fd050959e701b15980550a83958e52279f18e1d42d1ec278ba4bcfc5f7b3054e2d463affa7eb7794a713e2a491d0943cd6c2710f1cd9eb12b3a0245a2c8c54bdad8cee5a648f3f95267325ddac366b496904f91e0d7270d064eaf7158db89104cdb816f701e753addc67865dd65560adf843621a224cf864efa9ce90882a5ff96cc7352813411359a7ec01695a4ea1239a20d846208844a8fa7938ef451a0436d110dda1c2322539016c9ae73273d1a53f99a242d7d3efbf69661e4831ff5af290162805b65714a962861c73915cb9a2ccb9b4681a3efa5f15a41946087b6ca386a3dd433dcaf7e78dfb419899ce1ec6910f732953a02f2055c9086ac6843b6e60bfb25854b7ee93e7fececf56e1ac740f2bfc73e296bb18a56d50cf5660beda71b3205e8db05cb07de1a4a633fe8a1404f08163cfb49326bd916d615666301ffc12fd9bf9820a571e37b4f1f483350ca3b83f7815d19f4dac781a73c166ad37599411e68f211439d0e033dc6c7055f627bf7c549a26fa28bd95f13a462fceebc35d0115f3dcfcf66f039146c7d480e2a0a829ed23f4f77b21a5ea86800ba03e89a49d7fe31d83c93ae6ee5ed2e8ff4b298a8da2d4f0767ec69235311e619a9eabfdb5fad6a9f7b558232249525f59f11063ca9f90fa4b7dafc36ec00ce8ee0ec11ff9e6ae9824bbd3a289d68ad09c68beb0af19f63efe523d8362c0cb9bb07cbf2d0d54b91549e57b722e79f99ccd47e1264e78a5001fa5e595e80dc69b82c19353effc1ab72d586709369afbdbaf623fa6804c48060ad51b15c799de565f64da4fda680627059dfec48524c72eadba654303f9dc1b204d4617bceaff9d2924d7b5ab579484e4e234b7d14991638da9c89b8bb5786fd3e9ec1142fc2b3b05d69eacef9a9d042664ebe344b648a82364a32aa543664763c407e5a5cbde7d6300d966e7e61d11215810bec1805b2f7a84b9eeaaa0d96e3be83166c4566acd890bf1821ee4909faa5800a975ee9f8706e2a4ffea42e7a8c25855ebd1f76dda827ce7cac97ac9823f6ef2aef635bcadf78197d3b887b12ba86e0fdccb52d9a4e3ffcc48fd76081b2d55aed11cb5d18ca909a91cc159384c7486bee2a6616c4a92ecd63adf25a2c5a51ac676fe9bdd7d67912ab8255409bc29c1402cf8cb88447ea90c3c5ab0ae78666aec308e0a5806a6c631e78f8c8439c7cb15bbf508cc4462b2dbfc11d986016e4bfbefe0c099153767dee827d4710e90eabf306104fb44cdeb929cda4942ca079032a70b03e0b879474597781f9b83192c013fce3344789cc6b4541e0e4444e37e96da8defff2ec97144b3ae54d94d33150dcd6f722b3cbb0f44c5f17808345001aff9d19c7d13c271be8a3b389247166e4c197ab3cf5a62a74ebda8a20299eb17aefc02b4133ea6f380632f10d88f2c3150b3ebd924ba64151c1347d275becff325f191e182b2158b7b08abfa30716572b544ef2b0b7916ad8e4e4fbc6a0584d6203b663e2cdd24336a4ce7eb78c90f4450ca9fb1b83c240465d55b3fa6548fa72a76a9469b2d1be29d6bbd61624be1b4df8b08d8eb88765fba7ac57f87b96f2caa6de50cd78fe9dfaeb9fd19881e24e46adc1e6e9a59a37f234686c87945b79ee73eb294040846971bf1a73127af9023a19f63d5b5ea35433e8c6741fc9467508144ba53d2e2522c9dfb0741d8917894bfb3ed42c3acd16f29c03d7c21786bf31a196b921ed96b333102e12824b5a933366c9a116556b802e9c5ffc4bdd3e37bfca945bfb28efa5d2c6d70f88046937df42b5d9a70cad47362afd77495f969b544fd8f64c1220e026ae6f640e1885908fcb1bbe8f8362f422f9893e95464a6e7885aeeb2edf848dc22406310c932a637810667e2122d1417fb2b9388a1ed960ebd85d6cf1497e7898bd9cf008a240648675f3196c149836927290ba1ad73a0e1443b453ec0c1f6c9cbf98092d18da05a8321081a4c7a4a46a4a7da91145290366d9e5cea469e86e88a4052bc7ea85ebadd13b6e6d6e3703aabe445b77a0f856c940bbf4d1a796e8829ba71f86b32f689ab3bfb1bd82f7d43947bb776a050057ae3110a4128efd041207de00323190a7018c95e9c23d180c8bd14f67bcf29106a7faa14358eaf4e540fe55f362c62d65eee39ddf231d8d1ebb3d661848ce847516fc2d3d230e55761bcb8cd78ef8ec529993260873674ebcfee08125495f4b2fc42ce04daf4e03f0ad6c2298caf13091234dc1da76a2ad59fe0240a6f0519d44e896110617830e678514fcffc6ff8bda6e146aff2a18baff6461223514b6afb192d55612478bdbeb46aa3642e415004520bffd890258b514beab29f41a81fd22279dde2753c761165349e99db249cfbad47a00be00b6970ee307409a3b0aa05a043220ae5f9c770c94beb7c7d954dc8c9045b414b3caa441a68d73d3b58d37b854eed97fdcf22e55840d35032c159bc07d747f7ff4ed0f3d1cc9007ef0aa63a573bf5f5d3eb8410b35ed15169d0e91fb1e2da320a7bfb067e13c2d8e4de6cbe849a639eabd5e8e409a47337ff0e5652e37ed41f43ea4c7cefddbf1a21329b82181391250e459a4a4acba5c9b35e48361c803b6230d42d258958e7595043f39ee7421f5e0d6a260c0ff1afba1937a4845b61438fdb80470ce66b2578d1757e17d569ddd5264389a5844ed82a37ab8c467cb95d5c9389a566b3898ca6354870c930dfe946ecf99dec9ceedb6f309d50d321a54b7fbe97756e9b4047e5ffd45b9340029e14b344d3e6fa188baa95fab1d0ff5f0b76e1d526f37e8ae59930beff092101803752e5b2966ab63f41f9037435e035c4ab589a5f44e7fc4076a8145c0dfce59858b17d25b41e4d3c09d371c23134b60b0ab9a31c2d82a664f283eeabf1e138d5a48cf42da7cad62f494f3214825611881cb8278809408293f70cce62c2df1ea4bf17e40fec46a502e1d94af433155737ff94742f9b3c395270f1d2691843fbab79d33e692629210fb9681545eed56b5c0c7c2197c9c30a765a03efbfb79b7da9fe47b50015e8fc6c6a0a542d85386f52266accc52c08450fdcee997cafb0b3c08ce6e208d2bafd09fc721d0b9a4d9a013bb64f04582eff30340299300103265a521a3faa0f2fc3ac99d41f833a186f4a55e0f5a315545ebda6f7b6c30957cefda6ca7092bc25c481d2161d890a2e686f97103a6a889a2033a0c8c01f4071b080a5a7c78094471f03f9bf331b46e5fbdf08c4fb3ab7b67fc09950917f54e01f22f336cfa86c1d65da16572eb2bec7454373c40256b12b40a0f4e2bd585cf3c81d4a95b43e78a066d503bbe8fd017cadc98c96ce21cc4945763cb3248c94c41a0483e598d0314c6349d0269cbf5dd8137a748cb96e08f677fc1a293e06b53c6cc34e0c114f7575d778b3871f22ab9221eb121b22fb49f9b139f0b73f1eb33649777a2ca9adb55f032156833798b38da9d08957a617884d2161778e03472cd3d27549ca0e495b83f133d57b97b9fcfbf9299f0ac22053e9683a4707f433aabaab4f051993ab2fbc4fcf0d31936cc918031d0713c2f4e814bc4ac3c5a208b36030d253e1feb509f9685bc4a4f8c54bbaf82cf0d5e8697eec33cda213cae3fff661499571fc7223dc1774b91c683e929d2e1f799f2eab929d8bf46444137df5c933d33abbda37590ca52bc8eeac6ca261d7ebd0e52637706be15767141e445eaa613d76500d950c3e3c8c2ab1c217724cbdbcede82bbdf3a637b20605a48dd9dfcb473e7f1c5a192e8409a34dd08ed51db518b9c8d01c549f121cd2e25d664801f5062b97349781ba954c81662117b250b8bc967aa0a4097c3ac3c2b12664a4436ad14829d4a53632453afa47d752041db08eedd7aeb44d984b6a32cfdb4923f2ca613500c307ded49c0f04882937d527b9d518660804756dd49b50a4ce1518a4ba74dd6f76a78ef90d09f53c36e54d08af1f7f444e9efa317687dfbcff0b343f233b5733ce87bf633f0434b6e2a99b7b600961dd607dfd765870be2314a953f8b5f2f20ca9fff0f283eab6bbb9212aa5e99e8904e03835cfd0eedd7e83bab9ef854d298110959c7f60b8d3cdf958a1096e05a9e5ec8fbdb13d9777b99723c132dd073651aa2678a7a5ffc69bac58e2208ccfc93b0840ff3e3bae4cc438569d4c6a58791e56c51471d75aa4800d7c0f57faac996cf2b2f9e44f639a4d46b05821d394e32a26c4f55a13af9af6f25b7f617983ecdedf48a920ac4050a8700fe7a5a055314022a8afaacd2dd13c52f6d6d5e0b41d623da36f55ed2e8fc00845468e1163b2aae35062149149308401544ef0e4a55c6481c5f2273bff06d3e1ca6fe848fe396739da00c44091c9af11f93e05af024256fbd8c767da2c27d2c504438c225d06c43771b24f17096218c36c8671d6e55a56805fa4bb78295444e8bdd8982a1e97c885d3a1f0f3d5d8218681874c186ae906ffef69d28dbfcaee39fb5d3b3628ccea7ebee2bb616fbf8c767c0b912d190223af75d046a1f8339d23e6e115bd8e69ab94395dc0fd5ece5140bd5c5ac3abc4a490518f929331495fe825f0aa50aa8e5a98a40f14209343e88cba38b3d816692397db1992eee377edd668084de11fe0cf969174e6d74b98bc448a30d5bbaa11d3a7cfe56c19d1c51c14adfbb2b9be4ea458dc0b0be8e7fa7eac3f3033ecb1203935fcf44ee827124d173aa204d69c361a426dff6c600a59707a26fa24df1f773514bb5fbc4501175a588c89dbdd15c6e846c9f07d32b373bfeef4be00a3b7f6ec5a6d63ed5b17cac3d1601eafc3c0c19971653b2c39fd4ad4ad848e3930e6df4799bd3d775c0240c610db5a5e6a954e0afe11d1422a41f8d10307270aa9f1200b69bba5a008f85c7844227478d29bf761a0fb25655b4008a20ed6f84e27c94b161d70cc410a3105700eb54172e6109ee3de51cdac5feb8ef04a866756004816e60c7d2220473e74db0265ec1790ba4a9af2ba31b6ae5c40ab020684058eab6ed0da6c0c065ec653c27727e369b7581b209b0adebb17f8e991ab773e451b69b6991f36a7ab6f07c69333395e81c003446f1c4c5c40417f0b0fbf306ed1043a27227f18a39fed2dc6ccf323e9d0aa25cbbbbbca15510ac86bec6ff3d8edf42211c582753c3e3dbeff38a1b7a5b7465691509724190f470d492472784f4e7b6797d4ce2d34c9bc9a43b18fee635c5e6a3e17cc31ad0f249339d875fd4a938778dc11bae6f87d84b0909f2cf88f336d68f37770f56e9a55397c322bd89320baf853ef5e15f171586b42afde621d9097d99f650bb1a33f15b2180d5fbbf43e65fe94f821049a6e89301cd9f801b150e32149b27b2ebdec466812ed9f643353fdb03edb798df03e4fe192b083cfe8f7ae48844b6e0132f8e2829b396311491504a9b3595169c065d48d066439e7a23039454c712b6225eaa8e4ee6525371e2f527f76ef9ef7f1edd674a91548f017a9ed896e366a978497b35be6cbba47e267fc3362bd1c9e9cb70417c2eb3dbec18725a70fbe6b3e330cdf07de8a594728098c0f79457107a6cea3472bd77b13757e95791e258d14b1d15453fabe635571395974c190e72071047916b0f0427c742122118a176836fc0aff1a154dfbc5a23a61303ea5963a347c81cc57724b442b6f99dbf435a4eb0dfb06046064904b0e0c9d43a126c9aae20028eb31e7eb47c21e6c65d13e93def9b0335b017c90aff7d87ce4b173692fdbd1013ce009ee86ac6fe28b2cde55c792894c8f87312726574e0c7fc5fb20a0d4165cd686523f3ae6c236584b9ea3c04c3fba3510bb101071739dc09dcb48646f51d4fbfd54fdeaecd76b412b00d73bafeaf05570220202ed85cfcfaa5cdcb54efa922efdebd943d3b645dd075591858b4065f32897660fce12c6b4a99846788928c43c2281f67d342b73e74fc984b572978d98c84caf0aae4f941db165a264cae71a349aba989564fb24957682aab2c4069ce517263295b3c04e9bf71869ea92567a6470d4b94738bef0423f3b0de93c36f4b4134fb0377d01fa250be66a5dd52fda56a75d00386863d07d005860dec1e739452aa959da14e030192fde2d5fc98436c5758f0b6105e9782f423bb65a41544a0e646ebb937a35c6debdede0fa8d512bc830d8b72c66dceb462825797b84b4698ca06fe3d60d15ea22d92f3f4d0a4dbcae034865f22c8797517633d583db18e5c0a7733b3ac8c1f2fe963466e8ea83abe55375e8890f945ad7890cce2fc226afd92b239c94936c5f8141e4d250147e9350a6ce85f26d8cddae391e87123d29744a58110d2bf1f38b40467b60b48903dc080acc736eb61bb8e8c7382c7fb44a32a1805cb444335c470af9879d1843e50638161c4c6b0eb0defaa3b27a9bb02b25e6b9701389571da0a46ca466ff0010c16d45290ac7b220936fa665d60603cc9c2a9cd76ee73bdebb619062da0ff8add48cbc37de77ba17e308706cd399b0408ee1bc225469b1c297dd2e55163970478579ea6585c951edac0ce584705cee892acca12cb47554acfb9f50e037c51f0251894f0df52786f965b2cf8c39a17fdf57ad13dfd9b9a27869bbc493ff0d0966a56fd5854f649e9878a98f8525070ad920b81451411c39c46a53a2c128d267e4c4bff0c31d8dcdcb66cb78ed484d6e546c651c6731bc6d02b30d493c25f45987d282e226a6d79315b31371a00188b63db46a6e8454d0bd88ee80467e13c871bba93f7d17b8b3660e8a07eade5f15d41efd85dd858e4ca3cce4a7659bb3a41372324ddc72cefe151ff92ab6c9e780a11070037ac9b3dfe022d2d66ac8d3368160fe77e0c25ba78e18974e15d511aa4131ef401e7aa59e00947365d25234845e2c3dd755762f02f053ac9e7840bc81263981fa3fcf760feecb26235b52b5b3ab7d77afed121f80ce024a618642b789f1ebda0e5845a1ad8c68b807089b69396bd7b2873940e1f0e3e38359f3c49a290ecefc81d0645771077c7b4de81b3dc7ad8ccc396686315e33cd73206a896c3d662b9a09b816a092e4e70f694444664ce9c601caf9a356d352301711665a9ddc8284e60ed2b5d85eb401391336a02204382a9766fe34d2281a80356057286f5f0e3acf9f1fa91461805f6a47c7cdd456a80790cb3b4cb0d7d2fe05bf3cd8b94e8419b8dbbf33fca08baf2a43ac1c0cfd889de8907734e7013b5398eba7b884745b1c2f14162c53397fe28d8760b2afd5b97d08e0766876eea75d7100da0eb1f959bed32e56498c6b3960edcff0c38d23d35ad2f8569e6907c8c8697e3d474326b32ee0dc0754b6f8502cc1f40e2d39699c4487684a98a41c1096bec3b0c39187c210875cadbd93c1aa93b6564d26654c0e271df05f3bf53654a9f6e279c206ecab7ce10cc2d43dea7785445d27db05aada81fdba0631879938a568e294e3c57e35949bb1e51782b5c1e43abeef4debb8ab4274dee81a1ca4cfa9551e68b70f62a4fd802419ebf9ebd37f7583471ffd0452f450fc308cb4551d4fdd12003fff5383cc4a9381501d59b1f745d9aaa3bb233406e6e3aef544798390abc095b680145dc9a26c5cbde129038c7a44a031dc2c5a0f1aa9077011659d3a9d3ddd4f84ba3cb7b2362ff18bb0dd71f67a8033c224e429a78cd4ed75aa37d066dd4f11308517540011a7580db022d27b7a6e0573ad43723803e07779e877ce2f15d78fcf29075fa502811a59e08d960f66e06cf33f9559adec17766d4cffdfa5fb27267c697039c586cd081d923fb0e5d57e1d67fec3aeca5e0c93bce47e976c8af00a2c44834be94ab8da27f15f1ce77295f9e4f70b0b857b94041c6954187d10817733202286132a43ca32d3b1ce6a4b8e2bb1bee99ba6eba0282d7a2970435c3852bd979753294ef84739fff520097c8a3e41e9be082d72c702f819352034006e08786a9635ed1b4e67c38dbdff3d843b5f0d8ac0f02728ed0f52950ce0e54391f218acbc430342bd3a47fe42ff943c22b9c8a9d926093bc6026969d92f968721b2a3b6784d2bcec62279cf092a6885f1e4bbd80c7f184ee0b9475c524f784343321716d3a419b189472df43afeaa9e17b53bc6757a20180599fd7ce3502467ebcee0a655536b8453a7d3ad28a327e2feef415d6861eba8b5935ae462f68602819a266a7ad132d450a90c20f4ce2341746341b467011d4559a74539860b1179488a0ebac9313c9b46b1a3251144aca64294567bd5a4a6886704203f64e03c6a910a28269abea8e61faf767bc954a9348fd0953719e4903341c5a5dd1e9885927184a18b926c2347ae17ee5c846efb60d47777e7bc9b225be9446e5e3a562d23e8c821edc30f1a5917aca5050555eb120fd544b9ef665c277054785c7c01ec884ab010a049d247f71daf8f42ebba0d26582ed6119888ec4214555071f2fc0e32ed08bd4ef29b495bc357d3e7416efbddf45b72c8eb8c98635d2649c4ef7e861a2d3937a98ecbc6e61473c41232762e9a540eb5af4b3a35aff1d7858c4fad29452e5d57cedb338c4dc22e333831420222bcc47609e2a0e05893059b3d06f6062efee6960a177b2074c1cccedffdb6108d48af4f34d901f3e54ef99090f8eb3c4e3df932f062468d84fb0d06d9a8bf68fdd5c998f58795e32e590ff1b5e2f6b47247a49f6f954a28ebe959a57e9293c7e939b3ff4dbc718031d07a48d6867d88e4d7afe47e3d1cab426636170a96de0f0d61482a3029bca44646ae766bd533fcd1235c9b5bddc528921728522dea61dd5f480e5655832657fa5afc29278a67b50fc035b5b36a6ca7e75ea23fc817b9272cc6cf0c52e375aaf17332c637bad2ff2751b9956d878a3bc081f932fc75945dd45d2be91111eacc6d8e1050c35d8faa72da4db46496df69ca3a6b111e8c1de8218d95a5c4b92e828580c7c25fbfd12f2c131fad195b9512c83da159e87c9a7a1e17919ff791dde2e912bd32af2e6016fc0f055208eedfeb1bba476f2a17a64cd8afd9614337d12a5152362fc85d9364bf425036132ae6c1f6bc819d00cf0b36e0093b47ab8587b4ce8c9dd5e722e92c604d90c432fc266a3bb0daf1e88513a40387525d4bc48bf5927c429795b2d0fb863c48e7d6a818f1ab6fbc2675e117bd2875baf09386351f586f79958f6b3360a8ce40a479ff91d97e409df58950df4084b2e3fc54bbd0dbb9b24ef6dc16913389040f1de0a5a3ce1c4738043ae76bc9ada3958f73795993df56e600a4d82f6d6f8c5c905297882f20a184a9ff69da493d25931515f16ae7f08deb2e913507a08f351d17f807ff079b30d3985680d96d2a8d608cc5be9a07aea20b7a5e329d608cf4124967f1e7e59e6d82e351b8bbd8c93efd4212302f29bda1e853ed564c5a3ce24c29768c2ca28a969d78f43eadac8bf4a7c503b5e62419d1e7499d564f9bc4369cf544eb4bbb1614ecc9bc4cbece1d7c52e1dffa41b42a68e1dfebd054dc8fe1e7ba02029dd7228c4d90150b05008da604c8ef2dbbc6613b8af98fcdeb5510d29d8d6c8962b1feb8e759116fe59c03e3d856f27a1b4eb76e674f9cc233e74c878ca5356e0821d5fc3cabd08dc54606feb82ceb19d2d0072ceba9300222862332ce2f83a2b5108c4ec381aa704e4958c80787f2c22f64a1f3d354057a1bae2a9a99fa9976f532d7638c8e362f2aadd842e6c984d1f38614d5a8eba67a51bcede1225d0981512105191df768e07400c7b58eaf68aec8a548907162418540d912aa9cadae2318ce8e1d47cd4dd9374cb7c5d17b7ce8ee421f925697fa60257b029fd64b90e33001e6a8c4a2577d91a148993c2be3b71343e06cd783641ab223eab034d60361209d2b1d33132937394b8e62c323302c2fd13d8bb90932f4d9d65ef69634a91585756aa5772eaadc09dd9ca01dd0044e51b7d9e8fdb478af9b6e435c359f4208c25b0e096dddd4632fd704f782c5509b0f74dac886ae6838ef58c9c69855f6dd5271cc0cd8dc431a4f7c8b904ae24455dd8c761e8f5684163ebc24d2c618f51f01e88a43854f7761dad0111fcd0a5e96ea724e73162aa42660901ff24ac0ed8b96617bd9525f5c39ccb8e04b36ad40ced7210b7d795eb5a703255bf4ec56927edd09fbe10ffe06bd257b72223c0ee1cb5352cf91f524f39ceabe015b87cb27ee1dc2b660219fef7e9a5185f90c1f824cbf18dac49915f8142c558706a14fc415be579cb2dc03948c5fe20e9e8793821dff43ba23c63877302d987e16094e316c22d7c8365d9a0434bd89352d970ba637833b3474e6197256f12ca2f28e601114ed0db92c2e6e418acf90906cfe3cc0879036641e598434b8dc0933302667aeefd6e7130d760dc0ebd5e6c0d6347827beb2238d5053ca38e7dd7e885a6b871646831cb57875901e5cd2f7e28e777330a4ce40125117eb47877aae17efabd907bba09ad2b71a9f2c399ad51330f5df98ac08d0f3941c2d4e908d62d845a6a85fc74738d280f5cf2bd3583cddcf0893510f074a2daaba84a229cc88ea74e297fecbade1627fea965df1e8a2dadd38f0aad6c256f3ed695bc5a86555895c42db51943c3a72e119457cfc9ae825c8b4fdd49e1eb1e7f2308b6ec2045f6d228bddfb73ee6d2171d1df5ff554e2e795692db887574cce7a76d2a0bafe2654df913bb0cc7b6ddfea533116f46186b5e7b9873ba19c78a0e2b34eb0a121fb737abfb892ca4c44486d897a2f66139c27a1d19d8e1acd0dcbe627c303b8efd9239fe8a90c67e3d35e9786d422d1d5794e6046480c92ed43ab4b030184e22a6afed16d39701cf0c12deb1b4aed62fad954a52f3a72770939224ed3e205133a75bb0fa6c6c681ab3f348ed974ae437714b1659c0cdd2f2bac41a085cae358fa6f9bd46f461e6522921be20589a058c7a93061a1c3406ec2025a18b078ae907007da13c7dcad3682d9cd437a4cac89f0e1dfc17a163b69ab3fdbb487c5fff2896f2f27dfd8012622596488653274b9b9ceb218111a5f563870934b9da3fe7c967f6651170613a885ef6ed6bcea4790825d663e6998b686751f930e0201cb77e5339288b36cdd57fced77294eb56e1b7040935fbfd66ca7dbff3a3b372508329d0029072da2bae5aa406f27cabf80f3fdc84a617aace81d38a0e8258cd16472e48a91a3fdb6228f7e7875529076884b2579acd76811e4591d6d8cebb7e0e5d0b331ebb86a660b13e1e108933fa282f7dac737a6b86f5ce4468d17652a2bd8758ff61783731973a15698c7c9e0bde8277bd8b3e0527b6a2fb8beef909730b8a6e5d085cf6e97bc60be299f616dcd414a0f731c3df0d09e1410216e6b379c34f3981bcb0fde5050528ff0a378cab79cd1724097016d4582c772aa821767e16a6f67fbb90143b330053a967694a5bdea8439e8b6196d6539d2bb8f4050aab1884e30458c4797285d8404c68e7002d3907369781af48be6cc776a6bd49d47a42e3193677f0dbe18291e38f7e4b5e62658dc1518d03cfff5ccd7ac8bebb1fedee2721c91215b98031eeba9b4a532cec6195d78ca17fccb49c85854a21cd04edde19f3f4b65bbf81a05d93bc2492158bcd2e14a484f4f4b5edae81b309ecc709b66c77250636099161f7850595f37e1f70af994854685ccad134aa7a0aaeb8697dd8b71237cc4e1908884b0ddd0d1f69b4d39d16ffecc0150f84b111abcadb5820c24e2493bb665baead34396e443d22286f4ab6c8c6c8ac32efce57ebe5e9f3ef73d2d7f624b0747104591f6ebac235fdacd3a8c8e26e5b0b2364c6b92a6d371ee63e37540b40aaf262cf69391587ca8ae0e55c6b9d17372bab2c4c7bb5072a4617a04a3102ec6fd526014dde0e8301c9e5cca7efd8078b6a8629b888ce2cf0e1f47ed6272c8cab44916a139dd8d28fd711f74ae863380b63cbbac9aef4d656d1d3d2a664890ea66d335a796f4db2d077b3b5bfbfafbffef55c9977adb704cad978791c299635f5ff6a81937ef4dc8690235d1d2ed74b40c3aea2c3b96206bb22b177b14c391c6ab1ee67c3a8d3fb47ab652690c5f46688b599a87dfc76e631b87a84aeb702d9b9bc6a14cd00120b787658748169c97f727540b7ab11f676a40bbda05ae6b9da265b2d7c794d6ae1cd43765e44d0b2f012f30383ea8b7ccd346f91bd836d3cd8ea52e38b518a6d43958925a3d306f27ec1e287f0fc6c2c38289c1bb35d70ac6d826564dbe564952c46629963f0ea410cf138c7e8edae67f5be2ef2095b2aefc044dc8f5ec7bf2638940c424bbbb1bd748ab238eb9bbe5a3894261759d1667bc7e20539a5cd32e453cc68cd04b46317d3454e031042fb56445567803af109780783b2237c87869026327eb71ee5591ea5eace426c963cfda8ed3a3018d8862aee2fb71001bb3a41d411f76ac1e4c5958a343c5c0a624738e93dcadd534868b515386dda7baa02810a66a2f1d83c2a5b98576062e80a5b071711a92d8be2cc2614f132a18e6b44427e45ef3494bfe0dc79c44c8aae64a7182e4d4a7afa90e4d6ad06e7078ffe99a145c677ce5b4792e0dad9d1af0f41d0333749842c40347516852170801afc5278b7a87268a263bf99d3a507ea05a56f747ecb15a40287592da13938a8379ff1bebae63fae307e3c1051b7c92f5d3c915466711db03a9cffa8665aaab496aaabbfaf37e0ccce16b0d6b344360c3ea13587a1299f972452e6fadaf6b9efc227ed185db47b836dcd16111f9a3263aa51d1a2ddf803b2199225674d2e59445747d48f8a09dac330153fcb31d7e3451eb9ce9b2878978fd43be642bf8a03db87b9b3b23313ece2fd944d9f248134d7c688070f9b5b09b2e128e682a5d335c692ae914b7c4d42596f6c39ac8553554001b54e5c11d7eed43ecbf799dd88f0bee94ea8a2d043921350ce4fdc0c0738b513d3e890fde53fc66a887fa7ef7a38f126e3e890db09385300a4ad7b427b1689523e0b229c52d7ce6718f7f5f7be98d81e1471623cd5b01e6637c71ef2cce9522360677715d8f6aa72de6cc9d1ed9b2ca1a31d8926021d424b33e6d8a368ef2190b29a4556e2c1127067007e5d3754ddbabef31e5528c6df4aa4a4c295152dc25c99bab8a83dbfd252f86af6fb53d71f8b92b538fc689390b00671d0ef4aea10d0f9d06e587f5d74fc5c725a99c7bd8afd1c5308a2c99414ebd712f92bde2f61a38d5742eb0f6c765af67625e13aa542fb4a76cf09437a9374941cacec3e4ef0c949c1e4b8869e15c25ce98475e8ad36e555f6a19a261c6d52857d98bb01586a02d6f248eb750ca5ccc9ce06443dfd6c69fa64f8eb9ff4998e42f4c26a70a57e64fec3dd31ddb37636e3419851d43c5f059381126263a09b4c5a94ec113450845c3c8098b138f253826eeed397e71967c758c529040e61fd5b1e4549e2f1b92ec7f06bcffb880d8663eb98a0cd28c33a210dd973f6559f646a3443864ae101521fad37e415c0ad6e3011941f35b67179dd171df541ee633137279d2025f791b7eff58dbedbb65eb0dfb14bebc888dc478ab42323d4ebdbae6ae1b70beb3e9302fb3c8a16472d10e75193bca5624ac0fcea223257e08cd9d3f2acc8a7246077a4cb6d3f8f655f97f0e965f7d6b4fb5fdd42eec4100d7f5593070c5d08931b70e19d4b30a107682bc5b51da31b3233fde98a4708081724e7bc3883d48acbc0f5e4d50bd6547201e9dfa99978a33b0765bae41e6110d4df4d6d2736e2bc3f3a40e6730c1dcd9d334f37b1b2c6ff30e7626adc20e4cabf2deb0ecd0a0e93eb52d25c3842e6a1ca26c4c59382ed413bc047964bfcde287c1746ea71e133ef2346ed446afe860a78a00ea2f5f0e369edcb6867ef5d4cbeefa88846b55102773f7f197471f846d804a8d9a7f05ab12414509fb003df62e4eb29001a49477eba13ac9ffdb61be140856f37b00a78f6da4e68c81a75bc05ac84389f4a43cb7eaa80ea11a77d76087997e41b5a8a75620f4cab45617c8c50a0845a7b7e26412e5f84e6c06ca4cae11e413cdd626c9f3c0dc31e7a9eb4501359a63f4f7c04618e2e9133441685ad84741f64b98e7bd4dde6847652a8fe324fdd7db9f91b5c42f1122009f9da60d87d6a74824f214d7133c43e0cb87cc3f3bbd53b61fbc694dd8061b9cf7c160d474d7ada9525e623543f81c7561fbe6790428fb4fefc883984b5d0ed98310dd206e950a9d420c9fb19979c12e9fb3f02f183cd540744b055f2e0cef9b1c0c0ad23394955a30fff3fbbe575222a46a3a77c506deef643fe94c5a6280dfe94d46cf69ab653d820beed3c66dc9308fc02dd4b2fd786d70a6809597cff70aa5b824b325dff4d8b698625416bed9ce59fb00351dc419108d066b83e3010061c899e10754687addc60fa6ce0db4299d4b300d036c5c43e396ed851d26149d5aad4acd4c80d6acaf96347235baf717d1543271de58d3ace94e46fb2aa02b2acddb904e77ae0054721321eeae075d8cb615a24b09489f30553d2b51302db9f025df60583e7df556292703b05e2cfbde43c8bc0bb1a4638413aff980b87083e99c10e5d475e9f1c4b212580f21cf1becbf96a99379d019cbb23d68ebd6a78639cb8c857a10fa8debda13e9abce0258ebc91113e5c312d1f043ee443dfea6fb933b4b0499e07f7ac77780c3dcaca4a0129b89c5bd6fdf121c29c5cdc72080432c3849500d5967dbf476bc1e92b9d5170fad1adf9825aa72636a093c45896a4ce53c40949592e9ddfc936f647aaa8bf633097e9c6c60f5f6420e284111b4d8db6def2e582eb9fb2a21388280e17ac2f93362f7875d2475a29f7a04c71941b549d747fc245d6e78774deb7367aa2f8cd338c89892766fc8f0d9715afab547e60797bbf80152c22dd71f80be5593721db96968dccebe5ab29f5d6ba92b2e4416c8a7c02c3265711e91206535ca31f793018b97df649d1e806e3a9517e424cb609b03c8671332da8d2a5de65a89d732cb35c0c9340dfefe63a9bb85724137b041910190c355ff95d37990d79399915cbe5e04e68e90ac5818a159db9d4977708550de235ff2b2eafa896423063383cb555d7e843afaa1c58f2bf29c5045075cdc98dae9d827eb111286dba14df47cdf629571db25ae7c2801f9166c3cfa7348b539161d1b5b2f4cfb2cbea6647270bc59bdac2293211b90cf6ea2d2d73684ece2718dcf753c04ab2b1cbfa429dc156007a0d1da7838c79030b4d9320d2b84c474d5915eb5b6f2e1a864bd2b6c41508d2a5ebb14120ce1cc62bd77d98f2adb396214993ff909c6a370519cab7064f9fbc942f34c3dd6771ced39b20eb7d6b5b4ed36ffd86f98d564bf8eb46dd8c6dd03acf10dd2e1425598fb6c23a3f42d4bd4ae50fc458625798829b30c964e97e2b587452cff92137fdd33a7b49fbb2ca1979b09c1551da4e1fca1ea23b4b90666384b5a15d6ee671ab5bfbbe15ad63018e19df809cc33391482827b58a365936754058444e5548986e9847e4478b915b8d8ef134bf5486965f8f4dd2ce810017322b35177689b0b8b366a100eb7d98dd4ed5bba55c89acd6ecd29e6093fda6c0ed60bcdc448b8a998e4c3f1b0a8e7b2d1bd5e4ea3ea2c57d846519a004dd4e8353186cdb1c83c9356f4f8c2fd1b760a399cd684dbe05b53007c935540ed861dfa3e45dcc8f6261495ab7a6ffdb5d12ea7e4e169e4e8fa2e18627593eb5c12baedc0bb719dbfdccedf626e1b69c077e2f3f4d12dcf09978b4415f616835b15bda8ded396d3d0886460348425c04a836e5a51f532bc37f65f364e8203faf6387a85c8db38effd6913d02ec0415d764f110755c261b29965d138a5fd87c6daba68f77f28c924ab0f24f34e9173756ba092d6ee5a93c466397c81f2cc3e30d9994a17c333c582534326a2d2c9c2b2ae2fb9866a85109c5e60e2b31ae8ec8168a918394b4d358331fddd4996e6a21b697eb9949f76419245501eb3c9bd96cc36fc2f6c35371c50e40063104c48c8f3faf1deb29b180aa039273950eb6b8291170aff0b5fdccf557f9c284aeb5c18793787ddec4d812762d0babe8cbd9356a577ac343806bad26d413a857d0f6fbd81391180d199fe0d75053b538a864cb75f487d0d72498728835f558dfcbd2e001569ca197f25a8044ad00e0e3ef6aec0ad9088872d1d28e9d6689f13b2c574cf3bd55edf68e60de0f25e13fd75dbf7dc9fc6a0510203105e9724d98c47ee3cda2be90775cba2eba83728a2823edc9556d05c342cbd98af1ec66f4f8635939266daa08dda208f1284679aab79f985ac1d8aa5b9f56fe16ff78c10fbd04205fcd483d5461ce0be90e10ee404ca1ba2103efa15861041238f24850fe180e5ba86cc84aec681daaeaa9b3ce1809bdfe3bce3e18a92f5ff4031ff391253ef0b0fe63ed39f8fea8f5b90873646d559d174ccc7c0a3d9652c199f026f722e9c0d41644ca387e519527c38fa6caa35be6aaf018ceffcf86e37e66623b9d33d5e7fb9456f551a832d2a05776b333678c2a2501c4e2f3a2d478990f860d5c8a44dbac4414cbcd0a976b12554852664319ef67e055e0792eb6b370d8032f41ad7becf86fab80893b1b6a2fde65252d0e79c08360421c622d4ad876fe9264d23c432473127f062e957d438a96809fb20de956f02678a66c5f0fc6a4b58174b1b8682f761ca6ba70b41ddb7fa5213a03cfe7caf43cd9a3d20a6980442531457bee3d5b8b3b6bebc7188212529e23fc2f0db7d9317cb878b09221475403984bfcc017a204a5cd293d55d6e9d34d3750cbdede3980d35ec39a6fe33e0433c04914dfcec71b30fd6b476968304958602bba9ca9ff94f48926e876bfa91019465de3d23f8628a5e4ffd62c29c55b847583939aa7111ed7e8e379a4a9affa2edc5d1a8bccc9bf879a4dfd353067488aa31508d62bad48a2a0460d8af9b661bcc78b8821dafdcdc9f069da413616a540e87c0c38cbfae3f9cadd5f1eec4cff83618e402b5169fec5e778baf51b03630a9998bfdfe4b29160f286b0e5219e07a098c2ee4f209b019837e08cc05f10ee7bdd42473413d2b65c9a4867541c7ff0bf6dd93a3fb7e68469c9491fc0a9e28b472f571d28bd5d1e52b5fceddbc604e17777c64e5c8cf0ec923d76c6d044815ca3e008872d8838808e2ccb0349ebac4b585efedca0974a257f65df5e599d869e85928930d9e0065edb5c7415fabb1675126005404ad520171ac82acff8c6e01846beff26157323e803966b64fb494be904cf4d8ddcc8f59831206c76f5f621cc6d2fcdaa13b5a3dc219ec106460f9621299066b5e8f56ee998dc37303207614dc0852594e65d6c92302ddf093668eddc819d790bcc6531070f9f85d877f7a96cd4b4f443bde655a2596f0f42cb15ebecd7841ace5024ce77e0bf62791567fe08e482155b500f61e0aa86da906fb95479c9e7648bb0c6be4ffdc7748c341fe633d50cd8b1ef5bfb96690530accc5d34fcedfa6a7afadd718dc4f54bfac1888f06e141d849fc925336037561b0b2ec80781708f4234984671916bd85c1773080caa6652434553ebee9afd3ec0630b856ad87ef8af483d75dfd5444bf6f664ad557ec90b3a5632f2ac53710176cc2f3bf47469fdc91a2788da4e3e557d6582b14cbc62d2cb4fff8a47cef90561df8370d55a39e660d890cf6364cb003a58fce8af4687bfa745c6fefd7edac8d7aefffbd775787754e9dbcba61b7e62dd49d5140235f0fb77887312254af3015a4e22bf9a0a186734d27b58e1e8c7e2b09a276752d9250dddccc1b62a5d9dd96df5380955038de86fa66a8314c13a43d5eb423b5d805fad16d7ed2a40a95e8b7cd7e26b29de26380e90b4afc29c234643823e27403e99c3993313c85a5fd7993ba6928df8913001a1d64d57c085f43001505624532381a9f0085052848832d059351f8d560f033858b288623c18b974679b8f49262e52b6a64e41c306baa95c34832e8c126c18c4936471dffc6612a826d260ff64432db258f8d33c33d85b54aafdcb11857e83273ef6b6089e2b3ab262effcc1341ac0b17cd4f429e016886961b62f00276255d1126529883ea39fcb2fcb36a0ee503ec226c1b043a25d074ad509da4543614dd04541b11e30b63b5633aa4cb85a2cb8805a87c78ffcd31e0fa8247b2153690911ee7fe9fcd72cba0b536cff627fb0339d8768a618cc4639f797c57619a93e3f18dbfa914a6665a3bb85b5f93d17e3d30e8efa6c707f5ad79ae2b60de2bdd6c869f9d8ccb282bde3930a28e723e3d03efdc46ac7486f512ab722743b9401db76ccb182a20983893018a77b7044a8d32cf2e95c6787f4449658ef1d2674505d5d613fa2df6f89c642d9c7fe0e0bf4bdf7bedeb47a65031fd4d2302f0bef4782e8ab313b92f5f98db0d3adcb440bcf36573d6673914d3a060fbe6e5427b40fcd5611cf0d5374ac6a42296e4a5819c32578bbb41499fff1fc27b2df9f4bfc9c5e9c945f27b7a116649a37476e6a77fd9fa693915fb65a3f6e0cec389b08ee9777a434bc1dfea60943bfb2d4b0bd6564e420abed7ac49242cf8689a69c04f49c2efe55a19117ac5879c4881fa5eda85de243ddf39187255b006b33f3c5e4f0b6ee9d8f35b0fa5492234de369563a013958a26016d75cc5b1aaf8b2a091e3e839629db74798fe7216ae9c292018fbb6a761cbd4c874985a2af25c1d4dcecb07e102bbefa0da74369bbab3097830ae0a9438b4df6ff3791dfa40799a582479d1d42a5e88ecb71bcedc42416171b216a842720f5d3fde32728cba24baca125e13aed64d2a58b8fdb0ca2bb9698a113d6b2eeb42a44720b43151b29852ac694bd64ae8f8aeda10a2fa0a3698807d23c48f3ad8333643a8b22f8cf87e7ee21265465329e316c4acfc9f999a1f537a4ca059af797ac96c0e8c81e051e867f0d212f5b64177dee4c5ebcf0b1129d38a6d5f7b1020e045ad8527d28075b691494e3b961165d38c62fcea3fd366072753d4a2cad65b6fe6ecec84b6acb600f6294f9c4c9e6a8bfd8937f1b67ccff1baaf9ea57a54627344fe73b82633f23e833403a03e263ae83fd9322447eef4f72a463ae4e2c23be8ff3c50c35426221d7d604ab8e4fb0358bac41cc44ebd4a006d7f1dd8aac9197d0ea743bbb775ac1b75326fe61f62968f1fc98e4c409f3599abb0ca7aa599e0c0bc00bfe2e5df98cd2799742dc71d57660f385a67155cb9ea4054d42f0b0a5d727b12a37efe75e086bb9d8c1441d90b89d20d5c47ce6c4d5cfa45d70c289ce9c5fb5c672206eafa036cee71741ac4a5cfb8f29881bfe293c79972bcf2ab68534c3d3ffa4287b0d3ddb398a485e53ce51e505526306a39a42368d4d7557339dc0b8c9fbe333b44950768e7cf48d80ce19588e978cfa4d86c54b59cd541aeaf0467401ffbab0ccfae51a8950d8a02349c4665bdfa339a67e553435bd216affb24683d83d82d18aef0949fc036ed1867782b4f3b9ce084e75ab1ed342dce0b4c17f4536205c0edc2c157e8a9ae13bb7d1d7fcb0b9fc30bf36156d4002a93cd9a8ed6d72f115a2f9e9dfa33044885e7de6a38c8eaa377f37b41e38981256dec830ca838b362f0d9d3c949ba0dab09fe509f5c64785fc44b5eefcc885e6c54dfe9c4563ad24b8904467e1b96bbff3c5581cd29ec6379bd50395471d97d27cb432fc84bd07f28cb487fb9b47fd641f7d44ecef1fe29c840cd8a65e695f1bb9600e2c6193f4fab0c37b426b01650c7ed853f494e66c3d3fc6fcae719269b5d043697253bd6ef5314d289d0097f18178c83778c4a593b474638f667eb4fa200b741bcef668d8ac08a50bcf792e9be288a6ff4128a28bd12a494cd3c49da40bd1ad5d6187931100e262af64fbe03db407af0182163591d0c461eb321f50a8a1d6ccb997d390de1b98de4ca84437a4da9c8253937f4d3645da988c45648328b9d8528be924899e2b69ba81d6fab6613305a4d2a685ec00904a6034c97a202c41a0e70f5fc0f951faa5581485ad507de26cfcbc96fea659f9342c58380dc7709e42d40735c12ff13da860c86d22efeb99d557d9642626cacba6f77a1ddd4b0de00087e6443acf12875d3c430f4beeda65dfe52f2557aa8b07e2bed98d8d31e4f5ba139312bd50e20e999b00d662a0cac7d1ba5257b18265891801289d5c34e652a7adb8a19f7e66ddabf256bf18c7782af24e36f03d94dbbe58465cdcabc324a5e230a7749cf9170278f68ba8531d9bf80bfd999639dbac4132968c356881b48d769ac356b2b5c7d85023f9bb14ce69e08d8800d4e6e4a1f449ffdab659c55f82a98d88d47b79d5947f3840ae37fcf90dc793383c7b4fab7bae10721e24182943c5cf16839060b68c30b98fbd543a68669e2575cd795450293f5f913949b99d8d04ca5579e45acbffe26cf7a4d412d30d952af60a133b6dbbe007aa68ce1cf8f7030ca49c84ac875032dcccf55a7f25c204f44094f1e341818c228bda3e66121ee5c817a3806ce7ecf4d91f890773b1d451b6e83a303cd0c47f549e50a4f3288a4e544fed4d06365f3af63efbb3539acc3708e7d814cd8a91f240347eb8d16c0396a9d19970ba2441a70a4c633e760ffc6e668469912e5332c610e1540142662caee6fe73c21b310b0bb0e0b826a95692a8b1d0267b8fc8008df1e8cfc23e279be3ce90a041915bfad0c7c29940ada6f445acabaddd30e65f2694bc10b1ef4dd51045ab29ebd82d861af2a861ffb8d1673f805d6acee7f1fbeaaf85de1532d7d9b3d67cccc77f1121e7180fc6eef0bf546538bfcfaa9dbaa90e7ac3daac1dc1223b306faafb6af63caae51a683ef3b9b18646f31abad1267f6e33f7fcd1737d48f3a4e7bf5b5149ce1548900ee352835a0efcada5c11313ff7a9a6027be3234b139a99742c63e3ac7acf3d579b411456158140e09398a80724f75cae67506d6f5fb595d493d135345e6de09041b2948a257290593716f13c9500d67afbed3fee616f1b35f8d025e6b47c5257f54078024233c50d03290e19adfb0bc28e72fa85bdb55b4e61b139c21dfa53303140ae510aa2f002d04ce9025c22da25a6fe4ab33da89a56553a14b36fc43929e44089f4a1c4d92ed999fc55eec5b4bcda57316381c391d2c06dd7e98cba5491a03cafff18cc09802a28ce175359265ee1e8c49c31532b0e7094a42a7c9966f44778b4d5cf31af3787bb4115f5b2f444d8498ee5af9e6320f413f13cf96269c72117d5d4af6cd96883948ad416e151d80992fb9a587ed89454168a6efcc286e2ed544fe67dcb3e783b10de4e35e2755c47ca2f9661e7f0a16c846fe43e8b31f3ec678325e9486a02939ddbc6df4cfdcab1972ff6993fa6aac39aad1c633a22a7b41283b0206694b1b2926641ddf7a9c697cd64b875b62436a773e424dee14fd280752726bc55d4a7a2d69cac6f61af18e343a942d99dc1d7c76fce2d18aecbdbd006cf5f9cfcd6fedecbc9238f5a3384c3ebb9418f13217d020b40eaa0352214f58de1f9832032791944951e0258e6e86f9abb21f6f520f10358b8e9fb5304d154c85d5c057b02c9465cd19489558d8538e136f4658cf69810c7790281db5cdb544329d144368d782771a5e474404c2b1be2ca978825e5eec67c4ed371dd6994819298b872f23f08280951c01c4954a858de5b09cad5bd9eca692c15f2cc8274918a3fb71dcbe1a029bb85e0969954039536129e56442ec4e17544f40e28791e5604c1d0e5578ce98ae91074cf5920e8bd076bb8c2235ce585c52397de453c95d54c54b2c2575de235841f28e319bb758902e9865cb7d6c24482807b31f2ede646b233a28bd3f9256eb7f60a970c7e3817149cbe61a018b6ae345fc268e5f50b6876eed683e3f4e476e13b9ca5faefc2d82ba5da143d07461ca6d3e2b8bf17551ee2387f50848ccb83d5b966ad8ee59096e264847db9e3c9177384c71d735ef0c73b3dfe8290de4215fc924bca1a77d4ba16835ae243e8dbf8f90c3c4ff3b2b740202f1cd39a6e3b56362d1be30ff6098ea101578ed2d0a55c43778e8cc5dfc20a3e8102f511078ef254048467fa0d00ed6df7d4b800740de6b3fda8fc0b53c033cb3fbe178a925609912c3930335d915344ce0c59f0f258a828facae68a28248e9a4aeda62b850c65a97a75aabf043bb3e02899119ac29c85e650b997f47e5d56d6d128f47e3d5abac27764a7e0723b59860734944e6d86708cfc2ad640cd1855bb975357bb6320f132a087835326e58f1f7eb14a6ed08dcca30f584761bec9be0a4d767ad233ed9ce9e1e40a62faf167110032515939b834dc211dd3ce40a21c53f02f6ccfd70211095407d583fbe543224cf7ddecdce19370e1bc01d993419070e75f0387bbe82d4b4e92a01a68eacf2617fb5e2351db023753d9b8eb3b7c5b0891f363fbcfc020db608d0e32e0becd82c3e93238baed37eabb5424f6b4e65f89eeb0ee83ddd4ed5e7cd4a4ea50263a499e3b7f02f58c0a536071c42425324752d189db564754c3caac9d77b5a2452daf577babca92dc38ff382e8e179052f398b632f4df956465cf45a6e2da40c8d8e3d8662a722a12e1d921dea2a9add17ed0006bef7a7383147ce6dcc2e5b61a134a43eeaf4e833821715965c0aedf1039d497c1c86802ece99d689cbd05dfe147f116972fdeeb6a7df55ec7c0c046b4fc41622aa6c7672ab5ebe30d91a0b328db29e27129b491b68c17d27990e30089c488d9c8bd9e3bc4548cc8cac16c909f1fa1a892cc0b4d279e58d6ce22f09b47b81c514b71f022dcc2f596f932281aed84088ebf5aa0dc0cae5d864fb18e928291e4c425d1073c14834529ff0a720d1dbb59e2e531ed6b7e71986f47cf771a500b7a24579c3bb602fccba77c5ec182791ce47b67c23b590a3cb1341eb3704b1aa1cbc5291dfc271959926d660f8ddf650a9223d0f1bf4c35fa6ce07d51d47f02a03822bf2a7530494d73f598dac68b40cf10077744f019e98dd5b4417d7a809457b506aeff79f8996c544efd845b7adcd236983cdcdeffe96b932277f8cd399e9c8799cf2d8ba1c988b85b4cf6e4bc7acc41830c905f4aa69731d5c443f3e389d89bf2c63901d5b91b0e92144f3a84855697b0b1094e92a888bbea015f89e8b0bcadd1db1d922cd9862698bfee9d8b864c3344730a6cd3cc11006abb1e9706e389efe940c808bde777e93ee6ddce9ca39be9a6a339a42d4569fbf5f46ae7223010c423494b2fc66b67a0811340d6a5a048a39d547d70eab693a045910b4269adf9b4045043d7cc25e18feeea67ff27728f54d1128609c611684c4bcf44256c321b07fb33046f879fc01be79a1cb998546c54bf6294b792fe64242630f428af506d7fbd6d354c07b974f27a63d1a7d637ad9599b1f1fd7237595974d6f09946175a8a70e7c2208e4ad3c29cb51e13faca3bfd119740f0df66faf2f6c7b1905973964e52aa23369556e3b4b50cb148301c90ec21f2e3514664b7d48b5b986b51802720fa832435de1b4f626ac408e7468e8486f52c22d0c2d5716768bf2453f018918f2b8134fc6808cc2e8b2545c3db6c63ece80dffbb57d0e772274ea4982b79d3d4e21727a671c3771d234c584910c90f009a69ea1f614c897061e2c9121b300c557e0de096925fe80baec3e8523665bae01bcc0ae5ada2796b2b79cd70451433037ab8774d8bd4d1d8abe50882f33e3cbc65de4e88e10f4510b96d49cd5b71d76893714e52471dc7bbf4518d5f0050593203add46e5153090c62a769584cceca3e055f28ba17ce1b4ebb38179274fda400a5697b3d4b49e71f14afd6ac4364ac03edc1ad407a89b5333ff34909b2a7cc1311f307076040ecc6bc5c0e28b75f0919d6099e2f2adaa82d1608acc933bc48e794e2f7808d90ec06749202296035d626ac360c86334fde5932320285e999c8e789a09fe6ec4f9b6ed9c18cbe28be28f048a36753d5555ea5ac2eba6cbcbb00df93957f1ada663cf5923b819342e1dc74209bfc9c9b6a5909c56e027b1d791fb7b3668836fce63a0dab32d0092d3fa07ea5ff41d3234c981e3568421695b9f5db08e20ca82a94d26f4bf6b7cc892c92e3b4192300a1657854ca510fb4fbb4786fe2846f45905c09dffc99907e524fe95648f40bbc4da954c09eef26b445e71fe0196aafd89df2b0ca52bce0cbb69a4890ac686d6378fcee0df55cdec2ffa1e3707a3da744dc63437682ccac962fcabb1c634d2ef21b782eaa9784dce77f0a00992bc3daf03c98cd61a68b2d9b5d7824ca5091953a2c54675d3b774fb8abae5c4da20cfbbadf82dde6285fdeed30ab00fa62be430bd2543cadfd82bc65a66bb0649e2da7f717813d93e3c13efa07d60c840e5c998dad29d79e4f33b5edb2214e8fdb968ac1a1ed46e7cac55b741c51762d95ea31747814eb10ab206bc87dc9f1349aa3ea694a2c0583f048f50a408f7cd4fe90688b2561f8e0fdc97d9dae94c363471a50d7362673d8076fd3af6f44b617318d12ab132dc29c538ea0dd5c781d9f8ca584e6dae9f238b8177ca2ac259a68aadc64c3a87f2c791bb793f7fe6211f84844d83dbab7e707e85623f79478e46cb5199952bc103a8ee027d6c5f85af07fb5d37053dc5d7adcdaa7566dc1f95a9e320d99bc3402cb4e82660b804a01ce333bdf82db3aa2aa9c118830e94defa2073039d8027e20077a2d75ac77dea1c4d3730663684e220d5f47bc190a35352fc91d9eb24de158583d0cb3bb2e1dd0a9ec6bf07979be9fc39d6dc4ffd50e00dae4375300255899bbf3d7fc345c9d4b109d111c2ff05e49cab2bc6ed3aa7db7e3d076542ce5d5fb3cf47412892d1378fbd005c91cd74ddf26d8bbb218ef706ad9e4e8ecddaa8f8b3385e939d081aba5c302e26c0e0bf9914ebe1ff47895212f82cfc97228f4f4c69ab89d7f885cba5f57ce9dc43d960f544a0edab435c1031b571ea24ba724fd0f252e04ecdb28b38e912f333290af4d598f1c214ccd74cbe3a9465def4fd07f2f6ed1368991209104c3fc4583ae8bfaa19264882903d65f10b4dac4ee2cdbb1e9df0e15ddff475a69a1005f54853257d8768bb35ac237fa216fa758b18e7145c90eba225433c04dfbee01601c6dc32911c4b2ac02447001f357e68b0e66a9e708cfabead07996fa28a60896691191396f4f6f9a86c26130e66eaa3296c81499c370b346c8565748b3958a4722b209b66f9e15f6424a228656c8b34ce5e42e9e04a63143d74cc54a3cb70e318b28fbf5977a0e99993af726cc9daa2ca8915b6da4aeb05912242542e4b42750554df1a23bb29f5ba945d67d342fe655b4f5bcd285369c0ebf3a23c884f93ba7f23416a435bb138e9ec0944d566f56957b72cac65b60592b2c07adb104f2ecb1c731611090f09392d4aaa876dc050908ad4a9baaf7429de4af111802892f1f24126cf95203559d3fc6179739cad522ce08a9cbdc1ca0499886ede823cd9c62d779f1020b56be0b711ea2d8fbb09a6895d002d619b5bd2cd6cc1dfbae30700af89362c0021dc54e88f651e27e21d6b61ec4204b8b9b6391634fc3e040b672e607e6040282e1c743d7c005aca59893766f5ec80b5df3c0a28b54644c23150ea5854f3daaee6c648e282f3cbca2214cabbcad290b06ea5e5470f285558b6532968972f964bf52eafd70d2af4bf889d9f7be2025ae54ea657cda8e737b1322cb191c279f5de95ccac6fab249d04c7984a31e1a21cf4678046a77d9f49b9e810ee8a72edb9e9154940d3c4513c39bdc96a5e74739e63a9729ed9bdd9ade03e39f33e68340212e5496a7da45657bfb33367f7fc040017a35598f6bbd3bf9d4ca3b44c5b4bcca4355d51bdcc025e3f306c98e409e712dfade101a82bc036e9766f99869c1edb0b2daa8d379ee7e524dac36583a25c27e9a3617c2eb0a27fc01c635e728828955ba446db634ece191c6ff7f322615fcf4b29d4bcd9ba9ec8a45364e0ccc97b2cca7854ac0c2e867c9ac75a68885dfb437b84bd768eb9d31a19b400cf026ce343326c4856d23fc5d357ebaf6f6de74df1d7062cc1479520a92a365177b6bd02509095fcdfa81e152dcd351cacfd10b12c1f05b1739280682be31dcdcf40039f26886170c856340674bb8aede95909de3ff65f502f101633b7d4f7ddad2af97c89de225878f83f23fea49a217f154710c3649ca885f7c6c10795a54696b2267cfdfe32de727d2c5fc64f37e105bb8273b7568cd5f69199f4903c7aafe94b00dae975a237c42937f7ce48b861b6478166f21d87cf4cbb379809e866e9461cdac6ce7579ee9e136603465e6fde00aaae5c31eb314931674df7523a37badc7faab65d55880393a84e2f96232d9cac4888689d59d84db91a37c9c4d7dd430d839c17610fc8494c262c55826fd528ad79d7b89ce45422086e00d8ede7d058356b7258acc14a9d4f2246f5c7de0349130bbc928f6b892a1991b2f7ca99764fa22db868c02cbcd7c002a7c3894dc045fbbe86927db367d536c5f2284f9da126c1f4c51c6c3872a4d58422c6f061438c1ec7633dc7e389d1a2def000d9a81d0d5a9f921f736e0d963b36acbc0700cbd1ba4ed52da7085b0c7ac7a5b0daf44b9e3b3f565c317ca91f62fbfdcdd1d57e2dd5f0fd64ad92cf3dedfd61458bbdcf65119dfc0944b59d534b8c8eb202d064da7b3dbb8a66d5ad027d12acfcf0c54a7c41b167c27c8ecd8940f4d7d78ba465938d3b9026108a66c7062b6fc5f5d0294f952c824fc623894f8a13ee35674861bbb9e15f1b924b7d0516837948802981e521ef21182eaffd42151d65d1a57753c3e09df7eff41a81951be64a12bd1cf9335c92ba56f81736bcbf188823cd2f8880b8cf69ae33da9417e33733b8dc7aca5186dedf838060ab65e661dfe2fb36e0649c4b386497d587b4dceac0128d18cba0aa53989eaa356526a82807e6239025cbbddb4e8dc1347eb9978a7fe75c4f8a3a2aa37f3cd562aaff43efd51ae40a70c97cbbcdf3298a29d01834069c0a7e7d347c35b98b8f5b41c0e50fd3cb32b3993b8e1ba4ce1b4a91d58c1a56cc77833c8d1ba3b2b0d1b640af3032fdad155dc3f7b7a1fa282d4c6b91370289de9c46ced4c93cb62919ac6f90d9dae0701a21e95e58e46ddcc24c04d063c5cfed602f05e23c834d22969d36a4abd9feca1fd886bba2f218a8726bb8a088d0c0a6ababeb2606ae73e089891f8566d7823c44a24c2076cb6f2efcacfbbacda6f6ee5faa4076022898b51197e604fdd049027d63e3b8f8e3e9e32078f24b975bfe712f24044ce90f711ddd911a6bdf9338f36c41c1beada47c38da1b9aaec71b966d608f13eba2b69df4b8664db72544e24190280e8490eae5854c4481d0f3a13b57b06bd6e1e42419f16ca8d4c8a0da7e5cb7469846db85c68c5c891045ddc00a3577b7fac734947cc6230c1a8e13a23165188fd8bc84ba8c8afce1624923deebc310784147d9f311a079ec7b9d17ba9ffcf33a078f2bc22e321d28ae3a427412c559395bc17165b6da57c8bdd97a97d658e741402e1b4ab511ae9e3b41a78fcb0cc186d424e5c18c28f8c00804367f82e28ae5b7bb51f2952e4068f031d4529c2c057012c318108088c41c7c5d761075d2e929fff1f2cedde2ac0e66e84d72b0d2380c5f39681296bb4cc54dba96b77b89b452584260e82b459afb929b55b8983811f405bf27b9112235c97aa84e3a869ccc6d1b9842bb7ba5d50103ef3b83593bd3c4806a92ab652ad6da078cd02f1dcfeec92a742ebabfe843d29fc27243c9f66c9eb33f66c4f6bb3ed0d1d209822876cc7877522fc74bcd9688090361ff3efe6aa739191892ae476f23eea1baf305fddad3958b73bc0f620d1e7ffc61d0908c8187c1bef9d75d68ee719b9ea495ef867df3612486e6a13a45f456f24764624553ed79bae40bef3c4bfec1b4a251b2e6f139b43d0084192a894f07fd2f7cc361f8098ebffcd868e6bc2f04fd1561b46697c62516604cb98e19d6be70736e1e628a10b2b3e49cc0d3d10e5f24b6d54b1bbb03e5cfbfe76978a1168d4e09a3769fa1bcbfad51ea7cc50cc95af77d1165b9121b9a6c7a7104346bff1a82b81af75543c9627b3f0928b36033cbf21e4d792b747c5bb169fa6c05ee66f3ed11e4d0023879d57f2a7392fcb74220fc2014d55e255ab2e44b077d1afe815b8847a6692f2311adfd9a58e590168f46a395c62e03552caf980c11be003f6ebb0a9c1ada03ff5ab61dfe1985f571d9179010168d36ea2d0ef31f04f42778ac96f5548ebc3acf21e24441cdc3560d825bfd688c7d57dedc6b25dcc2773b129f14ebce634b5078b7418be4bf630c03105763a2039b77c17c8907c19e615c531019a2928fcf06a971136641ede93ba8aeeeb33c2c6428df95a105eae28386e7abecf30e1c5f9aad29dfd6928bc082a2a855ca160a629cb671ccd47a4935aae18075c6eaa6eb3dd5bba2b1e47e29d2daf24ef0ff749e561ea0749fb385eb44a983ffd4b7e1a0bbcb890ecc6fe200e7f3a2fd9a0f976ae27874db9b7dbaa582370c95992d119352eaf8d12711854f078e7245c1dc71754dd586ad3ead0127329e58e7d8f991bd2b0cf1f7697a69adef6c3fbb6db857325eb32fa77bebe600161206c792a24d5100e46153317246741a888c256e21708fc0681049c633eb6d5c999a2c59eb4753cb29b9fb1dfb05c2ca28008d42c137fca2d18b9cc41803fc470efdd04fae158ba0386ed99b80464b857ce3dcad64fcbf7d0c4708e68d1707535dfb55561f61c102de7a42c238dbfde06da5138a8c64a0fe7db03450c8850358c5c4fe1efe684e532dd9a6dac24b73d9285803c265e5d7523f7400d4e59b9888676bf833527cf834230d4d60aa50330d6b31a292314b5c49660785dc6c208b3da46a322dea8222fcc59b1e8bde59c691a30beb75693675074c202b8a64cc77e9981cc798fd754a86398c84b75e099847f1e34d593499a249143acf6bb8cc5db89242f457ffe1d712eeed533d54b6a9d7415db001153dd36a3c14f687d73ff9a5707fa372e4683af7aa4fca8792eb14c52e3efebe133cebabe63111a802bbed14bfdc82a3e1415848b7479a80fee65d3cb9f049d107869a75eb59d3178ac8c030ce44ad1ee8b44cd3cbef07a0ae1a968ab0017d210f5f838e7716954a4f63a4a42309e354f89f76ffca631534adae4e6662a4982fb5dfb07f2338c9183b7d11716f5d52b5b7f4d6737445bfb026fd5a742f2e8658c4715da1fd528187fd7a32ea9adaefaf9438bf996b3a491b761463b2c19a77d53e54098af53a024c58b31d29a0fb5e7a2a06d056f16b9ae2f13846b1ed06d816871de1d9748d687d69f4df7997a16a59848a4798a205aab6935d4dc9ba34cc5c5133749cb6285d26e8fe5690cf8e0d715607a08966b9fb3096af2db2a90a43af9252bbba9bb0d9a80806dc8dd4ed0a5d40527e90783d2c60eb0ddb281412969743096f37500bfd25cb34be2101c81614b454f06723c88d88ff892a8d6bfab93d773cae2f12e5ef5bca268d4e94918ed7298bfbf4539ad4ab93e944a12f15ffcaf9a2f4d9d02cd9ab3d6a339e4d9ac131e0897baea372d3a99b29e9d4b1d96134634761fd2695e239c507e1ce409cc944857450b2db16480cf4f77ec61c5f6bce4d0c4d9b69154d59c3f5c542e934f3ebcc85dde13acfb7cf7336f9e3c2e7a14c2a2231c5206895b67aa09cbc8461b6712589d79ffaea5bbb567c88556a51890efd93ddd8458da8f1e469043364083fdc72636309a7381e1a3d931d9c27a433dc2ab9ff9c0f47289a3925acc430708512f78884c4e08ea5e605fbbb8d5b8b61745dc5f8f7e99ebfbf699c4c171ac6f65b5381dbbd074672bc98679c9994d2328e7239043b745c8788680b73ab829badfcdd6cb46f1fbd0a204d3c1f7e66ee66305a6eae3b06917a7ff5a31bef05613af05c7c658cf6d337f0fc158fdac6732d80c30f9bb54910fb8cc1071c19a3f1fb049575fd253d6e5112f841b346209b8669799c9baeeaef65cb33d25d176f0708da023142adbdf79aabff4332da18c633c35ae915d73e0bb8a9c70fe9196fc4a381811dff615edbaf792751c44dfcf437d0eb9cba200981420efabfbe84242c4cca98bca30eea0b001cfcd63520d54de84099b28b052c366f6bff578352e2a64e70ab233229e07c5c6095f1396983998c15e7fa3239325195f8083ff9313b7ff1b9437b7db3b5a893e44bf40c448bc88f04f098a8be12bcdd80b3544be8b6672c404b83b874010c1e9fa1e5e6fbe76c4046cc84299c7aa6377a566627c284f2f0e5100c546607a8da208d003e64ec3a21e8b0097ea733035d564ebba81d101803409e7b2d6ef882dba1bf33d9061c8dc909db469024f50ae73f098a125733b561ef034a0dc00423422baea0b211f4e355a5a4b0523008b672b591815aa2440a3fb0f286758010182c701e1faa2ece5e68c5728ef631af46d5b48e40839b5f3a891f2d52c0827372af27b8b907af6243b94a877c72cc2cbe606835dcc6971dce02791c648e3cae46e7f9a32eceb4f27e37a322e9580a9c643888745d91016631ebcf18838548672e10529170dd43ce1db914cc98febd8843b5e1b53f4b491f353784c30f5f1256c7b4a79426e564bdd13b7d0923f14f5cabdab6eef5f334508d59f628794686f831ea10302a27c4ce70b5aa4973bd7540afdae75b618c98b0519bbb3cc687dd12929c2f800b0a76317574ac4649068b0ea5aa18335e51c1bf7d04d5a9108ee20193ebcbf78c7bcb0a7e10c0afb9ea863faaa744c637c61d3671d4aade053246d9e196ad4c232360accdeabb7caabcc7951c4b72132c8fec0e728aceb26658e020ad7a86387b64cc29c93e19e757072f671eef787ef41bfc75287ec50289e0f5c42d1c0079f231a5107ac2ffa6d0e5470317a30a7f3622c59c1e085e24d8e2dd7619463e0a1cafb3f010d7f4bc7aa971ae331074610fe869d9463a5124503fa04c2eb568ef3ea38e755c4910c38bd04810e06dc4d48f5e647972283354037c67e7afd40dfdd3bbff0d54a2d87a8f4cc8c053864fe53b0ced60dcc0f3cd96f3dfc9df8a70010b9fde809407290fe618ddd401cbbb2e8dc764e79f347238c453ded08815135747ce4b5ad8abc24b432166e826790e856f414b603bf0e446d96be7f177f610669e5875cf83cf6bde2e78da2841ce6710c45f8c6715241823374b737cfdef19d95c5d4f921c51be8f83dd0f51964c61dbe0672e57f4dcc430d4af051c701120537d5eea11cbcd0744f194db5bab0f40200af9aa4385ac825ebac475c2a8d30a43366351cfe051dd7e7d8c87f0cb306d3501d77c7bd9e115878730ff728245010b6dea19c24d994416fcd25531863be6d57484accde2511c3cea73f69f60481d113cad0f4327e094bc9c5e8ca12fb297a689ad65caf9af5ab12c983a6ea8dc99777231a6962943710a5b23c34d5da2d3455762dfc75b762c66a42dbeba417ece2a112c1afc30b07ebc8e796e3e6a4956e66b2121b5a75ed898429ac12f199189abd1b36c19c066b7ea5cd4df81f7c88a7347b26eab626acb8505b89810a1dd9b7c9c43a2b77d087e1941c836c866eb0181decf64be737bfcf285c315a44f1da762108def05b339d2268c61fca05ff84cd31aa310c2a77cfa8d6a9af34e1b9781b5001bbe05d0d14840e0ca62e74b99ae24570d8c9d2e1a6731f249d98002ccc0daf3c3b254e49ba940b74363cfdccd53e4e5c2e8471c0ae03c6fedd08f87333da1a4ec1f4528a7540eda66345383f00613893574bce9e498c8c7dc4b7f2d08a19d809a8d187427d1d5eac0d275f9ca8e0cfc4e9e0af18d27a4f32a0e79fe2354d82b56413bc6e52746dbb695ecb7ba2b016bfb0c25f52b45be80749b6f07ed5615fbddef92c240eb4673bc0a477de5e41ef583a63a99b185c911fefefad951debe7ba8024e2dbd0efad0da9099cf7d97ee30b99c33e4f547b0da2209020ad6c203ea361b247126f03ddf866e047317fa34a5edc263c25c60b027135c2bb2ae140bba37bea31d3f344ee6c75b2ef40b06bc4fc0b8a2850f40c5d3e2e162eeee6636117950fc62015994fbadbaee22ef78c520b7b3c160c59a5dd1e785f961c4a34c4babcfae976f1f338a18f8f09013608b7da9f1c5eb1bcd37a7684b06aec37b0f76f3f0b2b5f42e5ad2ccce0f151fe01fbdfa1d66a27f85a6ee9a1bb9ff44c22dd44d8fe9db5494f969dc66844cafaa31ada4330866a4716dd3f1e44081d048bd5dc09328cb2dfefeb45b8bca130ed4b60f12a6e4fa8df2db99bce5bfe69a0b673a5dc1c76b07d9e0706870480ff6fa4316c9da02872819ca15153c8ae111c1384b150f5946f4acdd2c80c35d2767f4e1ebe53d7a18716da2311e1594ad781e9fa25a792209c25e00cc26007b058b6d882c657bc21f2e42b169921586879463640693750206ba36ac08dd424799a93500683ea7e4ee37978851a2d5672f69ffae715a71a3b4f1ce2dea6614a8952d22d4a44e5e0e3f51cc650d238a316c0560e4929507462c2b4b905462e7b3f1b8be23d9122a5fad8fa62cd70c35df855f3f044c54d5f4ae457cc0782d423568493b9f7332b1c739546ab97c49f7d0c841ff88358418a81a3ed1d95e1dcf69fa6c4ab0d3d97e79c5d30b02dfd25d5d0647e619187382ba78bf37536104cd156986e1d7cee46ab59c2fb8bc7521c47b15e74f647421e81370434ea4b2089ad9bc210d952dd9ecbde81d3908c8ea25564d932141fa64ba99d2c289e5d4ca52f4be584bbd2bb1e3513b22f5e0f52ffa620ce316e412db6fc810f630e01edcbf437f471e0bfa759c5b07568e032d9cf16032d0b63257ab4ad4bf254ffd3c850b5fd290c8cb3eaa216f26c1613c3733b22fa5030489161a24531a8b0085afdcf91ecef2650190841d4a52426909ec4fea09ce313a22d4ea273c7f40baa9482d9dc34eebd102fcf9d8c6ae0742e2baf254161b872a14c592a9fdefc16fedb1acc02c716c0e9f8398219b3b9759702260899e7b24094c553b7d8492fdb788e48183471aa11c0e9a3120cb6467837f3b0fb07be5abbd43a3947e5331f4539eb11bdee870c17985a9546aef730779752ce87672d1dc083701782f35bbe9b82f3dd70bca5ff7b11a8e99d84c19d806adb5d2de48bd401178765a98a4c02580f97ef612411653bbba17bbeb43ea53e727a794bc59a9e728233c8fd4c5f943de98c0e6e49c88cf0a618b81caccdee78ea86700074b9b34ded9425af4a9be14849d22d7d0c1eb669565227d228cd25b6a6b6f734c551dbaa95daad21ea58e0d8b751a9f42c03b372fad8890758c05cb5165cda4e93bba26cbda4c951db18b494f73edf407a5b8b6fac35e4b9ece9b2c3223a3c3dbae844127743247bc31fb19598738f495af63f8d96db91495b31e6c2f25a5e5475091f638291ae8a5f3c826b8aa6af4087085001405a125c0b8f711c1d59ec511017973677ff7f4a9e9011f726047afd80b2929a0139353581ff97b8b0bebd11b69da535370705a93ff57f9e62666b77a0d9d96c9ef00abacded7a5f75afe8a0ae9d4ddecfe6037fb54a1c44c2cb43e6db0f5bb1cc9ccd94eb0a981cb5adc31a5448e4e657d546fc1555808a51bf02c649088efd07ed069721c6ce04465a0c62d5eaf364dfe100d15711cb5cd612c8692ff710f20cd58cb082c7eea784df6564a4ce5e671a30b7536a32da58fdc52214a0d0f363edba52f64cd2628faf6a09c59ed62ec4b7dee675da1f2accc7f9dae6b73857ee3f76c336b070a1a07bcf5eb4cdc599d107618d56c3a763b2f1f1c0e61363bd9995e5559a7ceb661c3145d72615486b5b8531d7d5e6ae68afd3432f69bc05bf040347d54b8ae1c7a3d00d6c45222a4028e34426490b11461f23019ead2a7551c7a85f422f6810f00434672bee03af420120a03155e7cf75f3d945a8076175b68eef540f84b20c78a45c7d7aec2efbc47507e8eb2afca29e60ce256f91811e6a6a0fbd8f795456014d2b5bdd86105c625ec5f45db68d2677f4336c025c2502f96bdf5aabf0bef5af25cc37440f51cddcd7f29405be10a15e53a26219d69a8b6149c2a96c281161a5e64005bcad8ff53b31a79c9aed1eab78eb66953441113bf65dfbcf1728b01688d2b6e6aa9395a7eb6f354de545da579d267ac07243a95d085edf3033dc851ef5a9006a91d725c3641a0eab2f1245ea995a5d23f8fad3d358f2bc88951e5a2c17ebd4cb782ae8b5973620e2c418a9f378d39eed499d43e7c2eb27f33401ecad056bb4f44aeb5c3485f602066d98f593b0e651af1de1726f9266c4c276246ba763f2166979eee0c6756d6252fbdfe526f6e7f78969701ac43e7d0487d14a5a6ee7b69d00879fd72a04596d48abebbc1b1f4cf9016011c75b52dade4c0c22e3ed8aea9dd87d89179e12166072db176b28359856d9913c660eebcabcf73c1e4bfb9e2b124146c402699640f92036d1d038bd7ecdf9b8878b0522090b38af865387922d4e144e581d73f9831b4aaa0bcf613cc4a826b3135678680559ced5dfa6fe3a1d68fc336314acbf4297af673b8d48ae7f632ad9d1abef787a3c0f93fa3ef2876d260cc2223403b0ca2336cfa869801ee9df7d811567054574b79fe5ffa0a5cde0052b319b133108797c7c8755672ae07cb71b9cdeded108abe9ac2dce90bf81bb9335b685165cef0ee15776849bc6ca11a50efa21d3ae14ab20ffcec867456db2025c0b696598094e3c61e7832133addb8716cdb3f5744786088da6999ca382c51b16fd6308f3169e6e01120fa74b8920dc4fa6f7ca7f6d8184e7b299a87420af2f109e1c8cd730ebe3ddc3318a2addfb73cb48eb8967c6014cf762932977b758ed9c4a6d2efdcd8f97fbe31cb8283483bb4887180379c83bc4252898445d01a230ee96cad7285ee097a2965f7fbc96800d0bc84e539e29cd8da0c55cd9d918ca98a57fcad698a738e1044d9d772b0338b9c66dd8ac81c615352941f1f01f20aa294ffffeba98cc6af81691beb398fc408f3f3ff5965de638a4e4f6d492c8cdcdd7066b3ec2532cd91a3a7cdc54460bf9647a1f699d4ffab59f496ee31fbd9360ca926e18479a350341c4009b5cb4041e60704b862821a585546368a2af7bbb6cba16d318c970d6a52cd2c915afbf2601c4485dda6930f53e35def370e25f56842b77cc83b6422ff12af95d4ac675d3f12f6dea94d017f182755f5aa2e97b1627e14293552c8964e9c1c59c104bd0aa856dd9f5f17b15389f1c372cc5cfef8e920005daf5672a28cdc258c662315a7419390ade7457d35d02606020696d43d2e166797a6950c848f19d2f3665969864e3717bdc7438115564c1e355c20c3d3905b0468a0b027fd8b195f893b3ad61efd8918dd68c3cea5c630eb10591f95727d16a3f566db7ad1e1f670fe4585c88948866fecad10e4de24e0938cc6eb5eb6d27d9e788720644af8f0d633b32eb6056922bd1dda8ed979ef55811639b881a0da57f1bf2047c4b62acc01bf2db2b974d4e46478c79c4177559ff90e6a4cda13d30eddac01346be5c492886d601941dbcee839596d59239a7a5f744862e1b858069e6eb317e04aab0fc920bc486005e68ab404efb6024ee9cbe70c8d7468379a73d9ed5f2d3e90646d663f5d5921aa63da82f4bea9e87f3064560a1b08c7226b07d291cdf8a9926b862530b96cb3b8c26ee2001edc2e817d806c522133d1f23e6458ab2f7aba43a185fdd0698723259ca9cc3ab93bd65fa5040fc044250d3cea3ae0d44aaa916aed64d647bc6ab42e29fd950e1124c96fbd0fa3c21d62899d2d33469df878037fb649caf834f7cd38c8dc5982f8c4e38ea1a0b85fb9cb4f6c27643a91a71b2e6a6bf185bb095f862c7b3dc48e15d93272704ab5ac177d3f45db5c517dd9ab5dcbfb2d9acea4282f0e68a65aca66ace26e0df9701aae74573db1bcfd40a21555a15d72d04f250190b559d1a6c1b9729846a0c5f678e40ebc9ff75bf4902d5656610a6fd410de5eb9023ddbe48031ee2ffc13dbdb6d985001085b04bd95370a84967ebec477d6f3987ca5041706c765179b966ade339901842e73b97169924c761dbaa17cbb48f0b9014802a18cc7ebc3281cb0bede2c97dbeb3591ee15a4e41cf1c5cca8332115db167fddcce54ff4f7acdc06840a8aeeaecf7f1cf4dae5c448472643f9a48596446ac964db5bd33bd65ad00da0d15fd77526905ffe3165d9766c6c44026a4ace0756482c82ef9cfdfa6939dca1214d6ef1708d5ad23b4326b667a7489e197bbe9286431ef919447a151c19466b0a6747651ffd2104023736c3f0ec0ce3d3d663416ea29bf99f3bcebbc0b7301a70b668dbd94d87f73c09d9b2abd4affbae4fd8d6d9752c516c451873461ff7179cb814fdbd4e511d1d1732c6eefddd79d58b4508cd6ec0e9dafaef250d9fde0086db644ac2b2046fecd3164290880ef0c766a783c9617f6957452c833b4c9b555107b4badd923c6b3b43bd635b99cfe6db6d5e1cc6cb29ccb4e6f9fecd7be4286911d90faaeb9214b380baccd4db227f82659207674909982df04170f348193bd7493166f61c19b593375100e8f9e95319c264527b1c71908e4b60841012f535f0ed7acb266960685e2b10ccf026636c0831f3fb5eacce07a8332a83f0fd53fa32b37fe64c7b12ae25b1c0b55496b551b80e2a5da4024a33c4b7441d3f6f073245438ff99cde19878732a5c889038e997bee66c8524cf6218b3bcb3e6493ba974bbbc9c941825adf61ac075cf929cb77df17eb8a1b5c92396ff6452040d9e6a678293a35993bfa45e83218ada6493a29f7031eba212ad95a7775f00f1374d8a59014c18192413936e0671b66e2aa63491ee19f76544e620ffe1650ad11dac23b4ef4ceae3eb1da726f07e96c9d1367655e142c8fe6861263c78e1a91c348e50407b5ee53a2091d36165fba921e53e85d1cb24bad21361c4ba1646c9b4f3cbfd6ab3920d67fb0423825d048fff7ba0b6af206d875aee38fbc9c734f6246f954a644d302fe1f6caace3d503c711a9d82cda30e4d476eb77cd4cf6c917a5006844254cccf3816e977a530e8e9adcdd5a793e7fdeb7f2e01a1b37b51ea9463af675424e1240e9d39ccd5dd3762ba2640ace15fbaad75d0b2aaef62fc72a9c683cd57d6c39e946e4f8e5a8fedcfb74d3fd3b17360058afce007bc17966bab3ad4b97d3a9643efeb83c325a551267d8637bf09e9bc72031a46472c0b20527f123afcaad972bd1dfe11785850bc1f487810cefd0dd2e49610c2083231ed482de210d40454e564a95999375f891c8c1fa2b98513f759ecca4bd77d381f26cd89b2f5a4bd31701bf9b5a115f56272efc042a210d5d93abe9e93297a7fa545bdce534dbb138805f655180e464f5a5470333c40caa7d214061f91031498059aafde7ebe20b46090b7ea89af45f34a6c165aa48cdb3775bb88d240d4d4a412c9982cf2b380f3a56b1b486fb292f93af6581fc584e70a5fb5962828ad793fba4ac2819cdc1c8f72e7ef373f2df5be4a46fd1348a9c70ba4bc4e53dec54326afe8101c35acd1e707ca00e985965746b140459b2a805821553eb0375cf5d81231439bde55da2ae959ccd1bdf84b2fcdd4de6dfee011562291e07d5d923db45c374e908e49e1870e14192948de0c75543dae7d01c06b48b888f7ef08f73d264996d16d56457f503837d2693b357c2d20555163d35d1e80039e0d37e819bde52a11e88609b23a3943f48cbe5fd4a3816fa9fe63731cbf22125162cefecd2530b3ad82dae17ed6979333cf13d0346e67efa3fcd9e57867477cfa699eb825057a1607e339b234e0c7064e98e20cb72edaa9832b43d20b3523b76d46ef4e508fafe6d122bfc6a5279ffcd7d7caadfa15a373b27c9f6461c745f17c572be9621805c53bac93eda33df26a03f2fdbb4fbcb11a72741f8cefc5e58900a871233b9b574d54bf06621bfa282d0a4079ff5fa004d742ae22f17a573d75747df8e4f3351ddd36f0f3934ef9e201468f10c9eda021c05256863c2ca9f61f76cc3fb0d8aae5173fa57905b41aace8179f4803ed811e49bcae438a706ea8a36dc013d75edf6a4b2c9cffb824fec0d184a501944a6a3905588c5e21815a625e75375f3c6f5e3115ba628de99e8ee3d179c9f1586d6801376cda23cb17a7493f2345ce8d36d5b8ebdedd7007de753f4cfea8ef48dbeb0eec9215b8636691455a2faf401fc5973c6d93c334336ea15ec436d20c8474474ca7c5cff57de1dabb9413710cd202190496bf20e7b0aec62d4aff4d805c6535cedb9b2e9c34cf475d7da83910b2de764340add4af0d6cdb10b2101061a2474f3cba6f6acd82d42002a173e995322dec8b8f2913b7f1579a070b188930bcea97c9124b52ddbdecb496eed31905355b5dcc2951e35bd8a904e204e4183556e1f1bc4d34c86f0a50d317fc78926543f7cfe15fdda1ba28a1db8438d091a4b242a489bcb140e7e6ce529f3e9ad4b1a815ecb7a7aa7c836876273e84e2be9ee404dc77c51f452325128b80873391f950bf83f9091bf9208386b229eea2dbf77ff42bddabc4f58eedffda74582430549bee055165e96d2e5f288ca5be9218d3879504e5f662807fa53f21d8e06f4ba387180839a9fc863e3caa87d6c44b1b0da6283fe9b869ace2d27744f5b5033125eae3c85c6accc3f19269bb3cf7bc7b76f5a6985a39c8543d576aae62985b64d78e7ba18872f2f75c71d50458e2ad46dee8c53039c3d8e4f99b84cb6ed8101ca976db962a2e97cabf8d707f5c97ae7cec18fc0a1d9accdf068ad28c9c2be4c37d9894ce621981388b899511f70cde91cc020f8fce57815ac56684e62f051978ffcfc511a48eb110b81ed5e021247defa701e90b6f34ae7e47f06053cac3098c41e4734fe498a3766d3143d708c31872f00c562d31fbe509df528e4f1746b40733d0fd195dab7361f7ffec27feb731ea7a05cd8ba1ad00cefbd115dc88b89e24e1b62526dc60711e0debffc07e56ad9c699b9a1c7f171e305a3e67ff23aedcd0892d0ad0a3a4decb6790dddc460006c2e6169abc23d598ab8193ea405dd62c2f7ec57694dbe6e9dda8317775760c2706af8d27ab7c8eef4c93565f2e05e21f17d5ff2596903e439a90a1cfcac5be1b0b6c4f1e0e9368e034689062d94469f994ed14ea1a469b06a0843170dec9403de4de92856da4efb018007df556aae48362c139350c1668175c6659f2f948cf579bdaad0433cbfbe2c43f4a483f450b6176074d257961427494b9137d259f8d53ac0e62573237526593ff7f5d30d327787626160a1411a67bde1a283ab232b14987a108c21cf604a5f969eb534bfc36043cf77f58b265b1942606de54b2f8f692119ba6f40b4cd3c2faa92746b59fe06b57577920ce5862312cedd1087e099548231f34e3fa9b0c96b0e91db817309e7d898b6566068defa9039ee6a42f451ae50a78a0d849e0b714c8a0167c1d20a0e24a7246349cce1e0394f98c2b2508ee2e05f15c713db3012f053336d2fa5e449b43860ad2f523bb4b19fadb6684ef615acb8078397de7322abcde7e46e3e42f20d5b0a8571d6e8cdfa20933dcb2ad875d0244966196b0b10d57fbb17a8f4f5d5390ecf3b64299728893a86008dbee3cc4c9c7485d795bcfc2d287aa9abe8eb2c4bcb7506e355d8628246487b26d4d1fef2f249c44f896641e41090bb3afa0efedd356b650ec8d6152e01c3bf19c565a8cb9e6d8814c4c7e2948b95883a75e08f204e7a53203fcf0f6269d90b2df9e8145e0ccc9ab92079da4a104dead71593b1cb24001d736e5711aab7f193571e6e811904e0e6c49f048ef9a59ee58d9c577d3f3a9eb29e8f47c54f66506e5d14d2c59abf843f8d551fc339446656e3079e4f612591eb39fd440b9e37ee97d429ada15849710f4ffb3a6f685e87aa7cbf599a00ec75a2c854c4eac215dd3264c8a73746531578974834aea77a9477c8487e11b19d2e453e9f39707b41dc47b393a2cff09d12123414a7740074f91df37708b7419b02e66bc7187f373deaa1c99982b4322200a7f5d78a27be758bb6846242e652ab12025154d4ac78b846d67beea3000d4d12ab820bca02b5caff42e1697609219d2a6f6ad4db84afad2b2774161d65f38dde385c4eac1e1c0a1fc21909741f1eb1e6e6f646c75bd15d168647bbce165da87fb27eb7851180135191ea13cdeef54e5fb91ba533119028141f80d0155c73c40e66018837dbf20c21852ba61497641b788255670261f3fe69fcf583c319a51483f6e3466e69fb4e478cf5033761f4f3d49cb83913ae3195cafdb06591ddc0230bc260be858c964b90c465dcb271951d90ee4ae1963b1363c9fc77f0363a2ad1f2544cdef74d2706cbcfddddd87f2cd186aebe9be2e5c0cd53ca2759ef3e1a1f21b678dce42c42918381a5275364180f7b8a86bdb963d67b0657b59476722a321bc91c517f92a75f3b71541bfe46cd6f1ca790e4e7a75e7290c5ae3ea271b6b7d5dadd00975eb4cd02329b3e8cc2172e70406d0ea633b7f55c80c8e693a2e28b9032f6f86272b3dea3b09b50a99e2accd2edc527b7e6bf8352fdc19cc57f0f8c44415459b78ceea049df9d8268bf20e3255d85c4fd8d06c436a130788487271f8af495b9ae3cf87dab9b7b133f858d68c68b2575d5811cb41c9a820d4b3cb1b0d00e79dc24df85fda23295a39680f786384c1d1f2068a5967480dee0cd57bf4e8a1045a78594f4f37bd09f07ded83193b08d3fdf48bdc2ed3444f4129c990ea385a6fc80db8f04946ae0f13c28479155becef30b10469b553d949ab3e662a64db13267d1bbcd1d32c381c698d90f8795ffc0d653d93712d7d9d8f0516cfd9ba1a2189f768ae6885dfbe191a8bc171899be1f5ba68492f2b10c11ce8cf3493b8b779e91665a7158f70a41855f6fd6d3c4c271af13b51b216b0bda1359978631fc4bf8c9c2eefa230aecf15ca161a26bb9aa2b6f0097501aae918658e6f9fdf244d154ab42c26314011f8962fcd7325e66ee8524110698f7689f04fdaf54950f0d50c9b6837b869a7fb10f2bc2fc3aace11bbad93a778c65e424bb6c558a2ef1ea23e5b2a505ce0e3466ea6ae36b2d23ca0992a3704791d19a467d13d43722c3fd04c784ceaa22287227ca7c7780db8294ddb15a48623e3b36183aff6e252c95944608387c3d412b64224daccf79f9d44740077f39b39af0de8d491e7fc28db6462686c784ca4d1ac5e3a4f06fd0be66f7c23b4632e14335844b14ecb115f1ecc98a7ae1ea173a836ff89f6c2053316428ab3fcd6a580f59e5a1853a1928fd6f2ba56dd5e11311c349d5f9fd1bffe5e8702e34c53780d60396c214c2d259170ab2b69ce7f390c8f1e10a71c09169d33bcdc73de824a28665aee015675f8166bbfd7bb98afaa859d7c4cf94bc14c814194c5cb0633a0aff883b0a8cb4429579e6b00393a7c239bb16d723390592ebcb776117ad5d71cda6a0d532777aa3669d7e0d5ba015b58121d212c7109b0477d2bfd7e9941055495e7a30d64f079864ee0c1e1b6c7244c246a5f5c8475ac34cf8f76c9b757f729be18c5c5cd6ccaf9d679a941fc9793380b78001d442db6fce0a6650b2da50ac4d42b46750c207791d380a3b10eaec9063567720d4d243b7f6e0b00f10c1142090e72cfe0e7929e224974b066e88cca571c4f35f10c2a2cf01971b2ba1b6ec3b2e4f35a9ede02241b95d645b92c8afd1c0a36619e33ec7f64c8029a0f715459ec8b72b76b27f22f56b66fca9f155cafc041c91f3ce363ab6e53d609a0b23cf184e57b0ad5168dab002c4b1cf9a51890de59e22bd1396830cb21450898106a1eafdd674b2b236fc78d1c680ba7ea9b348cc3fc59220e1a0d1d7999cfe16deb95514e50c5ca009f75bbb676dd78547a9331c25c0de1f9bd48ba9ae84f385edfb1e7cb5697b1904eeda6fea9c9e5747b89f155cfc1290b636a88fd21aa09e431eff1fdd536669b082af178997d97a71857a2da988352b76500e93654b529183e73f6646ee92d927b6bf3656a99c472a220565d5e7409e9771bb664e87d5425198211b0384c93d0fdb4037ffc325ba87e6d73ea934ac34358d14e2a1dbf8041cf061604cace3c183d4bc967a250fb9168aa5d5640cf79f6cbbab3925a6e028f860d3ed620321341483ba1450270c1b1bba6ad42b55fbab7bf73b36910307d0f4f4a6b3c0312b85747d4122f1702e1e19817fa61306e04c5ad1e27deb0e2a6126293f7d4d1574ca4c3295465f0ec0edd2414303c390078ff87e03e7f0110dacab66115a854c286535690de89b705bc7936997bf5f42fd47f6e62dee66c7d78f11c53c0a491671abcf1261342bb9b1f228a06c0d997a9c53b6c5109a337a11da581ab3d9b4e2c6d7abe49effab7ee1153f7a0a0ae923085964cdf5f307b26a1eb9dcf2cd77a4f9edcb21cd1be5cb2b62b340f190e1818c6f65d3fab17926be98111c927bb5edddc58a0064c4f1691f7576adea54b1cccf4bb9e2c7a8030018ee3d7c8f3ff193c0e0870330df57ea7cedf3ffffca50049c52c6363cdcabc304ab4189d4179aba2c45eac11d0b76d0461a5fd4456c7b0a01139fc24d4019c733ff58f3ffe81779b859e43d562f0832ee99b2ce743d61779082948b5b8390ef807b02d473372048760b9a3f4ba66449c71015a031b99788bab935fdf7c2ae7219901187577c06e19d5a1edaa196e333c5f25b218ec6d62259e36c26fe699e705f6aeed29efb0e8d90941037640b13bedcb85c88b0b19b3a8438980b67b66bcefb1ad02eadcb373a3528da09cb5a09706b14d33232aac530b2e25e00a9045b0de424a53e3c1d5e326077b85a118b5cbcde17d978efd072556dc5de2436086ed0424d615610ee32766a9c1f3d386f7d101d64a62da78bade27c9a1e53e3f6cc548c80726566221c33b5caf68bf0f8273514479b3fc943b7930c97e535ed2f1d2c45c7600d95dc05fd0a98488b939eaf0e38cc3eb4ca9ca1ab6b963ee065e07f7475bdba7a4016463249a12a65796c786cef391e907546e64147f79db20229e1cd3ec0399959f6a798c19952ef666c80fa0ab8f3dccf2d86a36532df699c6126b201c9ce52d5bd0182faf038734510602d8afe68720ab339d1f644654e2d7c80d18d83da9143ad2258983529574238d496d6f2cbeea02125a63c2a0227153090059c66d4f93c4b2f1e9b65d455da9450e45474951f70810f9ad9fe72b3e44765cb6e56f8c18364205f20779d65b90b647bfcce409770ddd9d3bdde86b466fa587b6001e7eb63d0c551ecadda31d5c4d1d2ae820f97eeab43f5dea5b0b0c10b42d13f02925a24e4db8362c7167156b21764bbfad0a84dc89eef9f2350113a5e5723dad754ab78011bedbce9cabfb0a63c7db6f809ce5ea60850a5ee55f65cc9fe7d5346beff3001f4601ab333e4b9de824079ab6ff62e0a2a71c9c0e060f3055c832397e9bf8118e956e489dfbc2cb8bd3eeba70ed9fd3631dd245a403a28231d2dfa441348c9c30f94044c136e4cc48212757adc9a33fe360618a7485b48b987d1bedba9019502b6a64276d5779b8511338f56e055bacc67512ee85825d44cabf5734dda32d536213208d2e060cec878e20e8b61016e7d0f0c358ddb7bb033e8dbc3c56edfb839b088999db616b7f0dfbcee91e140acb176d677487b86ebb8636a32a17dbd94878fa0ec043482ac9e007a7851b19ce99fa89815bfff81c44d2611a1743e9c0f0a834ebd9c2b020f3b31f0453315fdee35af3ad974cc6eeb955d366726d99d0a3fbbdb78cb074e79e7254b1ffa65b1b01dae31870720a11e9386f7b3652cdc9e32804d700e6a6609a2703702a7e4848191d0703880a9937cad2df86e971ac929c7f1708e8d3c82da43436740dbd368ebc59a044cd2480130f491364703bffb5c4d21cd9d3e2c036400ed8e6f8524ff80bad5fc4b6c682e1bee45328b1add5e18d4a462edc1773259ced1c649d214df871ff5e02d3a373dbe2ad1699059b626725fb55bf953742e9832a267d26f541e0ea76558ea6e99fc54220bcb17df82fbe0463679658e18c37662fc6362575676addb92e8fda38db62310b671ff2e23300d2327f95d65c6f04693978884a5814318384d93ebb2507fc68eebdc6e643d96ad0002bee0114b00c8e5613dff164ed36e1524f6906da21e0f765e33c3d40c2e0e0c94ca943f3c14fe7537c9c7b08115c50218df109b200df3c77324cb7dae56612620821022a358edb8d9e94778f4beb9585734c12efdccff3d053744974ada8c236ab877705c4d27ad43f909f4859118ca24a0329d9c108525011683d14e2734e04515ed8df66e6e2d5d7cba11cdb5c5ab8f43523eabce8325de58d24a28c3a5261fafdc95d7fd8b3c06f77bb64e9413e53b01300dc694f54efa37f9a7b67927a41c4102974387c9410b338230a2099e35aa96297b41524a34ec38bd70f23b6e4d1f11720f0ade9c6b6c6a74338961e4d847efc97283dce97e0ba35136b8a030f5184e68d7b4bfacc1030d0c52b73f34ce84e4fd6ef9bbba294a6b4b6db877d59c42e24bc5718cd1c5f11b46be8b8198dc0d9dceae45bdca8c1dd715f1b254916ad8dcc65485248e5ad45c8badf6cfb278db8b9200a34279086748cb1a5e5312a1fadae0d69cf8fe261727576d27de3d024c210b4cd7014dcffae57fa2645233ddb11efa4e61b8f42dbf896ea76a5828c71339e6027f0215ae445d8a22cb7b27a4eac8481d72d7799e0cefd05ae0b6cf9db50344069154ede5afc4b72814093e29956bca4abd639e6c3a8ed4451a09928a7d13af9dd99a20f1b6f9ea0dfa5222903c1b351efce0ea7738ca16be3f7e605bf8c273d8ee8a4442b35f4b8e236db2771fae0f35956effde9d8c410aef69250bb8c0a97c764e26fcd62234c636fe1ddd514885563e71ce5ab09f7f715bdc12319e7048a3e946e1c6d3f3673a6047a00a8bf4826d96a99734a024f3c3017fd0eed70ccffe5a65b7aa087eb210b77901bce148fd12eadac31187ad54ae228b0be8fb12907d63f457b8ee435491fec32429d3e21a58194617d843404ad162faa3407427be2dbb3c6fe4b5abbc946e8114fcd0f95478bbb06ffce0e4da3d0f5a1902e1e33668d2b020f024f57365e7a03b58420d87efca2af2d0590968f2812ac68de4a57a7f9371c2def749966038f84dfdd85a846fa9fb3e37b94b72f7b06c8b1979afff95072bead955142d96d6c302388c31a37b70b2d0337e2fca7553653387348da3f1eb09625a954c9e600cb4a3e6629153b63fd7c2af1efa65de8f694a85797aa86eb2ed3e58c71d9c3019a39694c69d596eb04c378b5ec6aa10a183127b8a1c3f66bdbac8875f6d1531b4305f73fd3693e45f26a623d22f02919f9b6795d0c90118581d98d7fec43cb992ade85da50347c3bb29b958420555e399c15bffb5c0f40d14318074da47522883d96bfb2ea6fe7fcaec5ee44bda970cb3121b8964b50b17532a954fc32e357199a22aaec5ca6aae0ef1d7d4cd67248154512a0f683f988653ad3f1898bbb8207c21c885302371a1e691897dff1283d700a0495aff2c55d6cef5d51ef905fb5d25144499f27d69a7089f3fe984cb7a0834e77907de700089ae415ca90f5e7af09ebfa8ac7aa0cd8e1182b177aa0001a562dd0eff60c0dc0e95f4d93ccfc9c6206dbc62886a4b34a34e905271df557cf3f07d78cd773e08c3e3758d1bc3b7e40c80ad15c6bbc7c0fa8ad07af3b1506610721386666b685020f8e12b27e46bf61d6ef697025b2690d148d7dcdfad9c9b3b3fb02d8b78697505afc569990cf4676538981fcdd98536c8da6f5b2af58518bdcb72a64ced0c9a0c060855d191f2d88adef2ebace3b655b17cec3260e24c1f483c7090bdcf761c5d84005942af0448e93a02be36f259f27153c7e1bf33d3481c2c8da33269cb8371d24c0ed4fb28cce1a7c5622e2cc54a278c781533d0b3550d0a23d254ec5bb660ac7a1a3fde5bc103e5b3114767facd7e6876b15669744ea34e6b70d00436d55485d1bf3afcabea02043625773b623154d6a9ff0cbb958eb2700309c4a946389f95aa1aacddd3321bf7b332d81ab0840a057c591e13a587d6c08732821ac464989662fc69fb9eb2df83b12aa5228ff7bc00a47a7b2eba1a231d0b16bca77552b9325c01bf0bb6fce1630127678c07f21bb97d5d570be8350c15ffec83d22e0f3bd90d517217c77b848db691d7ade5504e5f3e2bcfa52c4590840d325b1adcec3a35bf489d0807462aab7f0f0984f1f0a8783240b8f161b2941c48a52d9a2189721c7278157d507e6d203a676de43d21017cf17a31d0ab64b4b07e6029f434b13a8e57938b91788b209602d6a580a352537077bcfe87eb5cb797788564ae50aa667f27d13d357800f90b84b4da42b6409f5ebd287689dac5ae29a7af166d48af371ddc7aadfa82f6fa87d6b882ce74d0b0401e3c4a156254c772da9a4e26a15952a9870e89e96079145d51a1bb981362bebb53ae563741c6076d963a628cf8827a1fe9634b5c72e748b458adc35463592614ea5211ed9815df691dd5a3b29d4a9ae73d9b113f7001a8c52124cd093b75853e4b8113fa4b97c9d06afac0ef9802bf066e0897b168b18eaacabf1ced6fa9c48d24a4050dc1ea2cabe55f5a49f25cbf804d2496edc12fd4ada754ec4d392e92832f6cf3f747a68bb29b075b01af1045543de4e1d388b7ec3b3305dff3ee8eb94e19b2f8afd90fb7858835ebb6825513953b3422a262180a7b1c4a25b34b67a50aaddde351d93c29525f868180a9712f64608a84a29b2e367bfb9ced2c58cec76c2a142d3e5adda054618ff1d9931d58a5f1577203a512c683dbfeb71814ebe73d59589f28c7a619c1d56f46d8270dcf20818cad959c5f0f5e928209481b489f92ba6a0c18e8a8ff73805ce4b7ce5010505d2996913091ecca569fe8454c94b71568737c436e2a2e5fddd9b437ab8e300a6078a6b1fca09cc6b9d65ecca6dfb9bf231d5d7b07b998c7a7a60a3802063234302c6040fec54d65e01f2a586d36f60c25dfcf539c2bbde3add0989e9ec72dc420eed535a069eed8379fde5f50397ff4e0c6066c417f725b3e9f98663fd35802ffe0e426fe1030d9a0a30ce4059fc28c1002853674e08b01de71e2130c96d8d4ca6b8c665fc775c845ea0d391049fa96b4045f13d3176e5a0039ca4eeda38e30b5f10f1ce0be1ace64384980b8818afc398d6aeeefb5b5532cc011c8e4d218093870248ac740d66e72c711bb13d13d926169d19efde0380f2b81662d7547ba43dff7d53fdd0755085ae2c5e7fcd1093dc8e806fbd7f516aac9d2f955eb413729eabc0607970cfe492040de6f9ba80703517240bb575fc43bb39186d91482e6323f6b3d3fbd66e0b348ce9b775d52685888c8a1ed7cd9aaad7ac8b35067cd432d24b5997e1377a75ae489bb180c8d1f3130dcb6ddd897b5335f93c6f25d27310069d467f1600ecf9775e0d63dd8e612d737bd5fb301c5126e9886f59c661cc384be032acd94e65a0b199ddc8adf51d9a72ff46dbeaefab12c7a71fe65c512f4ea28d92455074d043a9e58c8a91235da785834e95d9e0442ac604bbdae5600d0a8622441ad679d3f68ed63f9eae0e7a730937a1d8a1be17ca8035691fd460d52107a04cfa9b97129446220f74d5031b92cb0e7f6275ce4ddc9530e47ee0b62279330ba4db8bbe42242122e80a3420c8a2013ec7538749f87c87d3e058c3dd3bfbc6ee111c9b0e0c045556fd9055d9d1b3fbc41c6459db9a8b325d07098ee1e0b5d5d41972ab60bcf33edec6717e7687ab60de1aa5392686f321f37b0490e5690fb8d0f75edbbec97ad10193f3ce94bd31b18f99c7cc3d02b5cf1cf7ef719d353203f6ac33afe724491baaa6c6f8a0a4d3221e02154d2949f95c466e3077d46707c1df1bfbcbcc5b8078e6ed27be5fef5ba297b38e3a6851bb693f4cb8a4e8f75a6c2935db15168c0ed6673c79e3694999f14877e5946968cf7bbc3913e2490f036ff533bfe39d258569041e71b6a91d0d6245053b5c119d53d4d575f207fdb7240168ea5ca2f27c1563373744d0dfac3ca3e698df0139fad2a987bebb351fdbef512a1ee7b0d62d9d6a9d356a421e749e7844957da62d91a57c31c9dcb55b8f6cd3eaf4fe79c14dec2b7a50e0ef4ee35df0bf39657f2e5457a2174be52e74b7335cd770b6cb5c6eafd132590b6fab636fe17a66ea80f1c01f34e291a9ddbff02c9328fdb5390770a711d15b9b7244aeae0cdd7006781f5bb4431eacef1aa5d1abc2960ad7e45424195884cf12627d72013a1308b011d3f6ff98bb21697d257886c1ddbbc55b8ac09eb31e57d37c8d4cb80f8a299bea1fd388428d3cfb7e4f68ff193fa27b682320c55d9411d29c010ca82f752553a687848ff1cce097aacaba9cf7008aa5864ed71e20817a5570374ab55a4db3e03883af307295f528fe4f9b46aeeb56466f6d15b760a3da5ecce450ccf84c166e020293138f665d505a2b1747decbf0289e98570e545c48a18b8f507f68f0519b18e2626f57a67efe8fc13b0552f33ff3f519eb0aae3238284813e7c4e67e6e741d7972710d1b5c21da068595b3b739ecafee3f872e4f9d0f2021f690b47dcd3b500f2f4efa723dee57039c7921f1fcc6944b0b6891019aef9fbbc9415d378e7a1861ea8604bae7876a5765297b7dfe0414153a64bd3bc0dddfba8e1ba63b02092820752e2ce96503afb35f3ff7bc45c12f67b3e88713e225da4a194cbcde3101757089360056610dac5c52623615b9f65a11ebc10742721c0569fb30acb570cdb8690510b73d0ab230ac4b468f707a93581444753ba774ac436bebd9091c02c5d59af527d43e9009d090ef5ec1b953ebe1274374bbc4fe8252797a01f8b2cd0881816f0b2bdf2acbdb0b161d9563335b5b3591934b3f48faf10d1bf667db2392d2143c3ca005b208beb2b9d131e2b82f26ddcd6f62634b262f77772d823d92a5e93b52003f7fc694982f36901a30d1202ff131aa289cf5a4585b187ca443c81ba85321b61a7b8ad59ebfd6a9d44963f430f7012705ffe7135e315b2b489d8b32a3acab77f90fea05b5b3b49c33ae0c1ac3abd0b786bfc74d93c4b8676fbebcd7cc0c7116f5b173277ef2e58f27e6ed51b47b91db5eb91ed112b45bc1ee5d6ba0042b29ba16bfc0262876fbb6b4f986b0610a7b7e2ce9cbf244f406b904f4faddb3354eac70f96df4f3cbcf366bf3a391b2adb9e308f303be634c4c9336445783d44b771a6102a494ad93a5655067594c22f1f122249be1a32dd812ec56cf38cc460283d977e22f6706049680abe910bac81393e3414d865c5b876dc4ef5d79d825e29173f0872b2a0a684f309193a5e2a286f93f9296ca9bd79cc104077878addfe8d00ad13f3679b59c23775a81905f757161fa35a87e7b29313dad59ef8f4f310414db853f3dcb0a9166e26c552548822ea96db8da3abdfcaf9d2eb75798e5cb9c4064401fd430e1cf1c19dbb3deb8f4cde3e3ec26c045355846a51b857d1854078887785c1d550eedf9216ec6ba47548fbb3ce8aae87385bea6f08415e320a1137221add542837b1aaffa98baa7f78a6ba40d432728351148f1e043e7d8349d80b7eae84f7eb22b97895ab13f007d088cdea56b859cf941b421f5b79c9f47ed83eca99ff1b1da363b61ba890d18e555d048a0924daee9918f5363f91d7d4d9244fbff2ec8901345eed6fb315ad8f2fc4b03eda72d41ffbebf6865f215a1750a606e59ad445740222ee34935656cc2fec2e17cf17874e488faff03ce72190c15678bceb8b9134a998db40c25effd853531aef8ffa4f3b9d64cbbd96fe8d6f51f5f3dfca6e07e2ae430de0aa2bd816de5453b2e29cad626e495d688dd6dc1f8913fcf1fce536449a452d6115e18940b71e3461d3b291354df090edd1fbedc41997576ff9e149bee84bfc4bfc14c65c99d9f2ccecda27bb533aed4d326d97cdbe161ad69ee078eca5f59a148fb2cb63b1546685c753d51c297e1da04a9818a059cd85d551c7354d7f997a2503c8ce46ad855e8de18a463ffd5d1e424ccbed7a186a1dbecbd855a143501fc35d6c607602a7f3018dea3c1fc3303f19ca15a842646fbae0d0fcc99dee1b5ec63b5361d890f2a4c186daef9284cccae6f276472c82c162f07b7be61e730e51d8975be44c6dff2903aca5bea9b29da44e78ab1cacfbc95eca15b32b00b255751cbe9430d3291253129a8e3223b77ac67c5df5691489a12ecb914e4198e4ae35f527d2dd1f651469ed0dea6d3d99d15c0ef5b2f4a81559ab0f511f5427567f987c441eb22c3bf8bbb6ca7a44e36bfbda1d26c5cad09742d1664ab68e710cf190c8eda6d49af8b5fe019590418f795a011f4a8bf6b23623ffc0aa5a673e78058210eb5a8cca5a1e0aa93a4918609658d1c71b57f03d7823ac0b0a4fb2c8e41e12d03271612a1fa62a20bb937f4034ba87d5fb487a41e69fa876ab816ea2d6a7257d01d33095019eaa9414f8b7e6d80e8944db60725d9604f5cb9538d5bb641db61760201e8f3d0b342485341570d4299ad5af6f20577d27f13405857e4015183dd595785f7885ead9e9ec8b3a4a36adc94a15d7f8793b8c10b5c9650026c49e3a5305e48708c0cf9828a8f61f2ad092280efe7a9cdeb52c2b52ab1b8469cc308b0b0c5d666f1916efadbe56b311997b5430109af14667e24efc578b4de87521529daf742c8161d17d884d8194903be30d9c01e94f51a9efa2cc19cccabeb24bfe4f622a066d083b309ae5e5437ee1a01363d52a0ba92cd4e7631106cecc0b5cf1ba9808a15d56134ba34822ac106b4ee715606ddc3a8289c2eca9763746edaa47aa3af9cd623074044b9cc4db360648d3d58189afbc65154b0d8c16675b8d3ae7fe42df81532f8b3f4a92b95b24aedcaa8fcc3ec5a6b035bb728f78ed7b0e4f4298f22c3f6f4691b9df3a07a9c1be3653991f1287e29668a9b1b6bd6212a598ff7baafa6af17943bf641619a771b35715138126b499a182e5b7c709ef26ed32d34d5f54ef7f0eb88d2f97339f469a2d7e58073129deb528675da1f2b08402f8f976dcbec80095baf205784bc7c0408d184ce20421a02544995754b24d95a460b3488edb588454c0dbe58562dd64d166fac4bfe61f75e521d0b047416bd0a690ab5ce15637003fb3519643dba50b9a6157160c69be43b7f2118ded0f2a4866b8bed3af5b26bc1c76ea4ca0536887b9cfb73e7f75e008f46640858858a631dbf9eb6148be43c1c7633189bfd97b462f5ac299b90dedbe8da6b1d55cc1786722cea1d5db13e013920b185682c768a3872877075a4928f5e48af485d3ab6bc4d6a29e40001880dec5b4c39f15492ab4f084177fb7fb5dff1bd1db6bf35e6d2befaa64b6c6191da2e861a6dcf0e4da71e2061f3af08c670297994268c6b0b38986ec6365ab0a901b76966cb9d212d8b0a7fc3a7257c080ccbc36a1a6d57ef17826d7c96f8ef2649c07d2fc1394e5d03c39c163b6c8303f4e9bfe8cbaceb3c0328a7d228bc52dfc05bcaa6a00dde290bd20e5e5ed1cd0149bb52c9f9ee050228432067877d4db4eed517b4938ca3862d41a77243300b927de25abf8169a4371a8324ec85b991040b066f715e4a92875576dd7f63492b08db2783eecaa5be332c9784a6e00e73354d9818aef158b8e92eaa1a8395dc3cfb15cb6e6f00153c3057daadef3a53c42f48a5396ccdd52d88169a8dd3747f24c7f2e3b0cf1b01c2d0b36397b56dd9a9e15628e46333d182e79a573b95176aa809fa82fc8dbfa4f996827d76fa25c337bb1827f27c29f94ead8c571d4715b4fb263d843f9fe1737e6bc4c4aa52d377f433fe9b4a574cb2c9229f223f36ddbb08c42a46e6ee45dfdb1b63735868e69a8040e5753fc67188bcb69849f8085db2374f73b65ad5c81ce1d6e996b5795f1bb7e2c53e8c501b21b57b137f9133f7845375fd66eda679be18afcd3525d7ac3691986e3b1dafb81917a6cdf8dd83c99f7caaea9cbb258522612046a5d967d988fbe850162f52ba7b91128a7a94984342cea5ab8bd10bf0057a84b591dd240b8492da5d6787dc73b086bc80ac7d650d6078e1242ebc8421c4da9ca17b119a51e9ed7df2aa7ea3ce1e29485f9fdfb33d48951de36ffab13d0d4c0b3cabe16bc41cbc61d4795432ccdc697bd99fe89ce08cefdd5f984127501d8fda7adc36cef16e6f1c3e14cfc7d81e5abfc9bb3d10cee441e7552a556f46bed3f5c0256a0b9db5a8c6fb9177d6ed4e4ba2e19a3b53d00138c625a94684ba9eddab16dbd200cdcddb7c9749dc8484f5cc57ea8cea7d1a959c4a4af64d588dc78032f26fdb9f2ae1e3e09540232c58dea23395ef20f80efcad05dd380f4e513a8c209099686daf885e97c2b6dedef822f131dc4dd106564f88d02a810fc1840251f3db33c405a426aeca8c1e86db2d05276ff2da0b3944cef044589a4d7c9c43b38be8aa2b93ee1175a673142e1a28c3a4afc42acdf990e0934216bc7041de0d1aaaf8ea975ab16c34dc82271ac784cfb3d7094a4e025d28f46c660ec3430b04a27b1719532e39c07a21df848bbe1f172c71e3972ce3885edea96f313aabda1bae08419676fb3bb8b7af62d8bf14b63e0c2c0e036a7f5bf332a5623b2416440351c31a0f7a3c67975bc249f46b8f58025e59a28cf89078ad3b4e6edeab159af410fe3b9a92843e3f621def111e29ae20fb6e64323e1f27c19058c4a84aab740337720627bff949e5ca8398bddb91067c2a86a5a2c00de819c6baad906cd36b2c32bc0ebf05d394cfc63d53bfffa93c5b98e0b35bf28e5cd0b62faf3efcf8a1b195db145c93e27bb29a9ae092d40969f4df5cdb18eda97c064ab6bdc74b7b1e8ee1b48c542606cc89476ab240a87b64abb701f6aebfb91da4f91383c9d131f809938eb6a069b430071183f7a91e7d1aaed47a8cbad7efc8ad384bb21a7fe24fb9f297477aad78f2efe03db89957c2abd8c59386c1f9cde12f142c6c8105cb1a70b45da218b86d050458f5022d16b1600b59c16baa2cac1cf80ec3b321441dbdf4c4559f8b3fc76748168d286477e46b5c999833abf737459745e3f295327c747b9057e5f6fb49d0ce65ea08efedab7ccf1752a61154ee54655da58ee30f809234a41fd2af27cfac54fc756f862987217dfb4f4d87bea4d9819ee28bbd4e378777cccef2ffb0c67053f99b7f6448affa53498ff3b2e502ac0adebb43c7b4a1bb54b8680c8e57af335c9f4d31ae318ebcddee3ab6598e02f6028b1228c966333c98ba54b4af6da09fd88881dddf3f4202b25e18a561677489a4450e98092855338777df7825fcc22f8b41afda8e721ff080f81af357b27c8615e69bc43be7e433e22db9990395d4be683f542912372aa6df09cfb65cd71252bcbce8a4b6cfb053f6d07650c938a665a52e7230e4779f8240f0ef3a963580dcab23e7fae579ff15c7580ea9e84e9fa90e660e8acf0a6c34c1c7d4de8dc3e837e22dd067278209269b845dea40d938fb0c22b1df38c6b39db81dfc86185dbc7e535e9e9085c179e175cba48e4db87f84e6d5e8d6177e4c862e51899dacee440afbd5905203a0f2b2475d06cc0b0c95471d7cc50d71e9401ea7a6c1a247081cf96c55aa07697c883cdfe60cadd87b308d02505b2763f94f50ec978e4d45c4b205a2c331dbc5f14352e54122b9c9751aa3d9c345e8187b6be4be93fe3bca58ccacf7a8332e17d7a0c46d59172d4244b0ea23d81f6332f63b729934c433a41c01a49e32fd0bc8310ffbe652a1c3c62e6337f0310c3577999923eff0b5f2c1423ba0f1dfa2aefaf7765e727ad70d52b93b7d476f2fd2e3af1447906a4c8fa4113b6c6ef07b13ce6bac93ef88b55bab7b4fcf104232e263886fb21ece27696ce6154f4b06a29f110dff8544999b3482f84eae06cbc2accbf220f5bb2688a963e5afc2e23675d4189baf41ac89ce5f5052f9a697871096e274d25a5b25d65328d4477a6fef1914a164709e1695f67c44baa640cce651ab9022e3bd619e19e6d73beab8d2a9f575fb2fecb9e2a79e2cb7fbbf3b8c423f3f8194e7297deb8189de9bfef75e6a33abec593f427e52b8c8ec944120dd8b9796ccd0234ede72dfd24b28b9dde06442f3f4657990b34316ad25643e1cf47199a47a1913c03dd02913cf48a78360f45620f21e2093b0e3f20f3f0e5b32352d8bd7f07ce40d577ffb37bdcf280d5546e6ab4d93ab881000676a66ea52b8796036f59cb4faa0c372113cc2aaef8d44b72edb28ac088a7278f570a16c712538b467076f566c705fb5cf2720a184400ae4abf338db16e56682019c2cbf1a3167e87058f49d8383a10fb9a19d8dc30c3de0a17f455f2c47bd6a5240f2784141361ba47f251a3f4492adfb0e86645b5e70d798a27aeb91b77db196379c25f128f5ebde7d395dd2a149ede1435d40504b499cdb7d0112016216fddb1802a2c736c5f2fbe90f6422031fd160c428a27a0aa24df8a490ae2e3188a81601f6257593edbe5b2d04cb4b09f50b8c94700c04ba354742a2e6b13d399c9f9febb13241f0ec2e64d03b0e1b224b4120995922ed758e08528b601b45f26bd3b39a67838385a27effd6c10395eafeddf9877b7e8abe2f9a82a51ea2d442c6d0f10fb58b2a6128d9192d01766f61e7e19b685487022f373e711a698b695a3be9de94ff05380539952423704593e9b30daaa47ba1d183ede682bc4670fb5bd9ee6153f79142563a8493fa7ec0a11cb92b72a8f64146f101035cdb774070d8e3b9477ec569f1d947e561821bf16c6d95956113518d04ca69ac6b2847a52719108fc009a7c28345d69e8bc35b77799ad7ab87785a6285751e2c5eabe2026f3a1004e0f3f5834a5cca5a91bd212983f010b01dafabe992b63312a7c62ebb0d16772f1f1de39d2c1e1d02f932ca16f95cfd54fbb25505cc4100d7fe4b4501bafd3ec8d9b0626f214667decc8538c57e50ab6320155c4627a45217dea01281a3457d58cf1d0d59b918ee5817a4d1656971cd072dfcdc5f6979ec0207f3c25ae89e0ccea59ef6d093820be86c043895431ea0b0eab4086ab0f2bd81fa7cf1751d4238836252bf09e7860b3d5eb2dab14bc00cf7c0d24aa9e9ac9be980dacbfccbe9b150f3e45d85fdfdd82d086ba92bf5edf4a43ee046f859d768db246d9be3f09c5c59a7c766bab4a3132787c97f46665dcfcc959f8a6518aaef03b4d066bd7b49b607b4f9d148fc75692c7b8319a9faa600dc1cdb1710912ce209c45f9dc2d12eea23b16081195c634d8e8bb5a1babfd799b5ccc527d0044cbde72ac8feda4b18d6001ab1092a6d496585de3f2f41f7d3662ec4ebc9c30542884d83af30b0b5678c7dd0e67fb45c4349d5a232c0eb9a8976b6c6b24069fa4aaa6bad67b44ad1ef1c00964d4dd96c486e71884a8672d1f28697b86a3d8ba0ac50b54bb32e7fd29eae9d95194cef721a56e0467d96c07ce8fef225ee5de5860c1fbe459a337ee2f8335bd88fae2457845ec214964d2aaec45f95bad28d1190162454454e082d9c6244d1d1be72299ae8c97230e2fb0b2bd558c8c9292d0175734c5c3a1f0d8a923be484d2c66432cb1fdb325aeda94cf19de687c9d01eff420fcec4d97fc143c8c845f695b2f1c111a71eb0584e0829aceb27e2d35120fad6af4516171a94d537efccbdb5df4c4aa51e3b007383dc5a40b6d2d427540da164db80c9b0f3f0f14bbedf0e33f7a9ea5518e35df8de7c2943d372aea59cf0acf30e2e8da3a23fbd66ca4d9ff2758d3f0236c20bb9832d307f78dcd4559e048fe144ed13b491c3615b5758413ac5757c22987fc3897170af758e7cd5df9a059b5ccb7ad8e95490d0f352a57539e35ecb3f9c2f00c4a19a0ed5d270cf145377b0e86aee820e0e04186b1fa7d97d9be23c75ebce44c43340cb08cb919a6347c057dcdc483f31e17994f42d439e7b4ff769f8d8a0386da94974a686d88964883c42e491c962267926643269c1210c4f8f468c108b14a233c4760032ca4a5117aa1e80c8c632049c50f3be6f4e5feac09a8a0b95c865cd0ebf729778d32e88d690bd84f3017da5cf572aa49e9a25381b2e85e30e8e9b5befc786a2b7bd1e0b0a88939670b2f62a0e3bc3e5eb5fedf72bcf23956a792e3e7ed8808d00a893ff677bc1b48ec004758a9190f690d8b792b12a7637c7e67169e5c62b74eb2d3430b951edabe4eaa4ae84270c408570945383b4fcf3b48448586c8b00ac39a61f8c09975fa1f7cfacbf2eb1579ec83b4ceb49f49e86c3c1068524ed5a3b48a384a4680c0d8b311679d8a045f6e27dfb38eec7803cc260edc6f4a567f15b521fdb2e3a3f6db7272c74ebdd93e950d5bb7c54b2eb690c072654a8db5bb8fb83fefd85168a4144315b9130e8038a20c754a6fa182011debb6e9a2be0dd883edcd06a273b21baa54d26f6a3e53565009e574e1f5ff55a46de853b0aeab1dbf9dffd21368b0cb9235b2f91815491aa9151335fe7c3f87d6645578157484aa9391cc4fcf81f314d589d1c4bcf4fd631e6b0998adc7aafccf2ae2368266fd807bb78b6d15769cce1b49338d3d3e3e2f3085d6fe56854d3a3b57db7e31014c370735aa16b62de0209fb1fc6c699721ee27493d0c25bf64ba70cc84ad4b35a13af0696012aca3d643ac4fc42176f283d659ac8f4ad6ba4e61269b6e4582f11ab584f32771d665e8758fc83122169804d706012fbd1af980ec2d1315c4eaafc555cdefadd95af8f1f5361c54ad9ded841019e62e93524ec07f85fe24fd3ce35089f74e2f562458a2dc508ed9dd6e917681ca09168f2280f6fe0bf7daf9a4695dbda8835c57b68f02d01d8f999bee95f81cca73807ee02d2fe35b365b0af44309ef2c59c1e5c7f5e67970dc4b8cd01d46b75685c0dbc58fdde7b9296470ffee403b58aeff42a950bba04b553fac5986c90d38be72af1b67afdbbc4e582242cf7cc9a68d666a7d7f992e23687038ddbdb86562df58aa00e0d34cb47905bc68cbc7363a83daced17b7e4a2c609fb273682a1215eeb15bb33993caa2d19dcce5f593394c3974f604cad479df2999e90df7253e1a465ecb95dfeb5b81c78b3c4e98c79c5e7ef5c651003a4f418a04a144b88a2d077ef6454a87ebb15cc978f59f48d155b79cc7032200c07a7ec14ee8ab78817bec38e160194b7d0b78d24d9b04df7b5bb8de1d095e04986ebf7b724b9a05ade9b691ebaa8862a247cbeaaaa7b46c4875c7093f885d5fb51dc1396f19d4b49082bbd78ec4046556aab57051df8335d08fe1f4943442840594df0dfd3413e59229e09721bfc805ad338601c43cbedb35c47cd8e9e0a2ac4219a931030dac5ac91a309a3275b433add4d77f36e7e5270bf8561086e8fca04b527d26347b96ef867246e0385b4849a048c4f089a21c22cd8b5f5330b26211fc551d99c37908d07a2285b54e4b39c1f96cb2b010b36a4c20d2558fc8ae5e7306b7ca71cbdfdb95002beeb5aafecc654220567ab928ddfa625e98d1bb30afa48210e9248b1414d9af972a9eae1d8a2245681f049fa3b6156c2244a4d49bddee7d927bf407f32e8ae4ff316c00985b5e13961c6337d119cd2928f7a51267c3810570babe6083fed217e98262b77b9e7de180f81c26756042e4501bcbeb6b652e72242a533b65c0424ef4bc389e8a70398932ec99035a992288ecee1a4d3859be5cbc151dfa83e976792ed49923a043a6a9e30dd08c9f144dcd79f71ff1c092497467c26564e1856157a8d086ee7f5a0dc6ec60d4396559a79690927f83fa923ec9605f1ffc97ab3d0712bc6a35e7fae78990c4034dbf91b141a9571f9d2627419233a50d6f19167ccc15b3ad27fcfbe32e26d6f2c3f2ace7ee01df190b1481309521b384bd722ebee8f24923ac270936281eb28a5732bc138d255fe2102a0a35a576a707f1633000791a3ee1ad370ce4bdfae0c60b09a8669630f24684f53eaf34ee314c9652d2810fc8fe2d8b46a7936088751d524bcb1edf96a9fc95ffd52210a5d128a1fad2a87f178f8fba8d481175b3a40f2b8835b73255ae479b4776a46307cb056c0d792cec8b42cf86e1234c93463b827b774a2a60e02196cdaab631e951a046c93502ea3f5516ec8a193c7d399e4a9c839ae276eef669815f761948ce6fd7a76076092a077fe24593eb5d2c520e29ab8759b8e37a67270003beaf7fc13fb53a865dd95d505c7a5c29c34d11c9f8c256a3cc80154b6d8e42d24caa954112e2020e5c6d26868c3be5366c1a5bd5a03752d4f4bae644792ea48ba096e72d77f4a9f5439284db241316c52a311fdc1ffcece5d1144d7f5acaca82e582a3fc44e8e90d4a53a064dc63227b4773f38ecff0685ca147a7286ef0b238a02694ebcaf795e5bb9f07c0843e8d522c238fd642a04308d3789f2ce6717af52a2d80eb068f019fe66f4e3a03bf249c76a6fc3033448e7cf05adb5654d98d7527dc98a6677ab7037eb36ac6c2adfef174c3734d22663d81e21a778eac488fdeccab3b8afb1b5f3a66b6989245cb4b90da1480343077a7545753e23faf7976aa476b05b60ceeead020c8386f7a56bd91b7c3e573bfbc7f332a1b9a41fa6a633c682fe73b9f0890a35ee412a5dcd6e4b746e1ac2b0c4181a802f66e053cb4ceb5be17f3f1da28e0be198a1ab57352031632ebfc9dd174e5f705317aade385424d27438ca330059d0c6ac6636186954fbca5a76004f93e05888e0a0d2aa053dc4fcecd50ee1c7196cc2a6973f3768d4640b716bad4ae65579131c5a445f8bb925636024a7aecf520c5fa900eaf22cdb3cdda92d055500cd1e33d9a32fcf3d2e0bfed4950c8b765c6f38eeaf7a25c19b01edb832f2d2fa79f150095c47930a3861d166c1680086e1aaa48c78dde55ab94a3e5a506d0dcc1f920e8c690dde1625d10b5ee0f54409634260b872390466cc03a22f456617b997980c93352fdda17723965151efc6a4b38d36787895d413e176c9af313c58ea50e2225f2bf2398a66723c661612160c7b6fe019a98cf906fa26c0cf17c6bc7ccc30e4753eb08a755c2cdbd555ad4c4eb65b9355e91221f58a7ad69e60ebd0e71f1887af6264c7e077e6392dd8425ad332aefa285e49e5a4fb35474457cc4397743d8ea6104713710aff7d1a8eb7d10e155195eef362438228c621adad7a982488e5c923c67a6db41c105f3908141d1f55b3b11bd8985a20e35a43c0f74105b42dd38c1a85c81a22e7318705fdd438ca3e0f825c002f656370d1681d2b80c395c9752eaa526cda925a0dc9fec6cb588bf000037ba1881dba086fa343270e5273d4673463b5f1379998be1516e28e18afdf6cae9ab84c01c2576bba7a2a386cfe5d3dbdbf3c208c1a77875cad737a19ce51b634d8829a24eeff4a43025946b74d86a20658f9f77e490252becfc0403050e445b649044e874c130a7bd83b9568d104ca28dd00be1cabf802bfcab10a8404056037b185541e529c162ae23e3e6610a02b614deb18d01f4a9c5efc56284145794b48f00f1103aa181b1d5c3050a42cb8928626563dd301a02f447d6151c18fd8c71b71f1d07a60f698fc45c697c083be7c8094622aea4ad5a06449a7754bf40dd485463f50c8661b538de518f81e9fb8c7dbba36f6775b7738cfaca21dcd42d8c49cb9504ef9586088a3982353080dbeb0d641792a416d48068a05f25a2f644cabf6583f3222a311fe52eb46028eaa80227e40da306df4bf13a85ed74829e2510bbd626cbfb99f6fda254fc5de335cbe53b67689cf983188660304b91cb23923e21090f8d9060d2f4f64df49daa231cdb5488bbbb50b0000d344f1a1c67436d1fc78dd4c5bd243fa13b7555e27e676193351ab2918637bba9e23eabd21e73fbf9e54e992f6ceedebb0aeb1f4f1f4439dbda479915d4370fcf2061ddfb4e63224788ce63a2d69961499f91cdfa78ab16c2d0bb634dbe2ab421f736cff02fd1c8decfbee7753f154f914534557d18ff82c6f666556a17f26baabecdeb56badf058a94cb6c0a451fb13fd74bc797995679602218dc25712b5c73b3b40c09b6e143a8c3e3b4f68c2a84e4496edc3262548f8c87dc5432ad0667f4036b2818d3180bad9951aa5252e5c8b5240df9c63e783b323a3ff2cc54df32d7b85c6801998f7b3c3299404e937261f2f8547cad6e217bc627bddd16155a6cf4fffbde6163dd1d63fcd27f49715e7527be06ffaeb552a1f83c4e20ce3c10698e78eb5020cb0a5252e0cedbf55b018e13c4d053b0cede5783de997b901f10d7023ccdbc56e063379cff66df4f7bc017d785a388366571378647d703a899e256f5eaf45457524bcfe8b75dae78abed24a9c488029487cc8669377e8f3a33a4a66000b9c3d761f2db209dfde30e6249a61ba79eb6905d36a9b2c82d4cf370da056e0b4a68cd95b58e992ca452851f9b04e93be26e4719fb005a8fd52b952b881f67689adb29848b2cccc58d26f37cb3d92704a4c1de91443a5318e2424a7eb8e31e1b2c2564fda0bd5bd6c6d69edceaf22cf571afce6a12111984e7484185b8aa6b2dd4cc2db27ee54248fd5bc8460a0e6d9c7684f30e6ecf28a0241d3574ae627984593658fca63ed1c767ed3b05c5d3bb44694448b15ce8729e2a90d903fb73acac3a050efe32e18196b325ebb017b7294be1cf107c9c521e1d85ab422af649b4f498eba04eba4a0250955d0884a304eae23e4cdd880cba59b51354c74b2d7b80f6f287c3da3ab25810d5ce0acf5ec8aede25133bb584d0d3eea1be0c81b1833b505ef96dcde9c9a823430088faa8c51807d1ee6efb04de776a8787c3079406460cfa0a8faee28c7cf5cad099feec6c4311bb288c3cd92d4dc89aeb083d871d529cde07a16e3a9c7e36a666599dcff78941dd021a7af1a0a5d892813705ef8c474ca057435fabb8be5a626e4dbcf69f5fcfdc09fd8a54bd3f97321be940222a41110d02694e75956ce8e6710ca757c384c004b509b5d280cd92691cdae02619c306994c2e6cc2d40e05617b841f721318a849169007024a7a210e5e2d5de330624e4669d290c42b36c9299701f2c9f46500162823fb014292f104ba2c8f0f4f1f2f8f2b20153bff1eabee010d30a28cf03f18c189fbc1c2c860a5f3549f023a0bbfff91ead81ef8b5eabdc3104c64598e03ba80aed9369de2cd2fcca89f6f309e620e4a5834f4feb0df63eb3464ab062d3e8ff1d8731ff81c439d111a9d2e85726296b2c07cf12cc881ac43adf0d0161241f8978f371dde9f86b06bf3ec116694feb293d843323bcfec9c4ac9764b1bff1c2622809c24601bfe2100ef8d82750f519c686427a46a1e587d0b4a3c92a187a36ce9da85a0146e397333a44bea2d5dfc27d5a45d9d331f0c4774395d14bfc360a922c040b024ae848cb0511700ef04cd61c2e9c15127854f2380961b6a871c7a5678b78d30d3335e8d133973f77520364c21d43231f566247b90073affa6eaa336c57f5d285399495540f374589dc3478686593b00aff69330fe2d287a561c9598c91f548bf2b01b8c7e564e4ec2631c2d4e8437f9f79f2b5e9ae5824f7aad288891d08aeffebc7123e85a530d2f9e76e73acf9ac31214017cd27f1ebc81e64ec8642e82473edf2ef88c79a45a0d53be1a05b684daa262bbb7255f24377850546032d26c639bc09ba300120e48d6c243212c402f8f20d460897028092b71bf33cc46d5f88f6761f9f069276e68025a1a25f583b2bd62b549d253d0079b113b8ec7e7807c7204b3117c95b825df29a7b692fae54a7632e104fc1db9f38e40f99bcf825c0a9b701d567f6411669bd1ada8622ffc122ea9542a81af1e672cdaacec9f23042eedc73377f71ad501daf28a28770aa17faa13328e6645b5db8faee8f6e71bad5d64a0d6bc00e0b080766faaa6212b18bbd36b028ab7e393f972bdeecafd8c65a3f8f52069b774e472190fbbfd9773b06be7708dde1106c411c6eee789ce5bde11a74571208156bda4dde4973080610c2fb990a668afb1d66f7ab85c5e5c3ebd3db03454946dad9eaa21437c00a09207d18a0d9126ce537e1b6f282ac3e5e00ac8826daa46fda17ac1f77cc7de555fc382faf6f57e5a8e80ccaddb46a488f8f3e7feae83cc28c26189a7243a11a955b8bb351151354a5246e3eed618a18089292282ad575b6840bbcf7c989509311977ebaebed26d0b122c96840c09da198e4491f661a7f3c2c4f9403c0c2c4c9f22d024fee685c328bdd45ec1f7fc98805c5998a59c421bbbf7ff972aec5fc5cfc41ebb3a9d09ba11c94a4d1fe3d1f32be5ad3af04f6dea964ab9ceb3a9b3f78481785b5f8bf7220ef4a82a01e11c80d952b7cfca7655ee0b4eb931ce3046fb8f59bb16c61a6ead46146adacce01ff6f13a4f60a70db2cf581d5763ce9f229796cda9915b248af040a958909538cdb7d2194ba6361b4ca45e5098b7ec20bbfb3b287eedb923c85ffbe8385d5db21ecf881b01dfd68640a82eaa60051092befd94077b8beff6e107263269ecf99a5a0f31011acbb54eebed443d13e769de07f56ed25b9ed1f9eeada72d3f368e9f184b8cbb21075dd6eba038035404b0cec9d9dcf2f5b427adf091cb7a66ec4c1524b6e67f38d37da911c212c7effcc93c70ff76ed732b6181a77624fff72561108a742a31906d82a18f1a723ddf32e131b386c2c820ef9c68954de5e00a61676c7f62592cb9308e6591e1e13879d140446e8839a3d97883a3c34054f10c275cb39bf61cf96b279ddbda395da3622c027db02b6603381eb9c97be588e5a7b895c79f593f06bf7c7984328a70ea6f9c7eb21eec05b384cf2a2d2a8eb194f7420259919d98e1c59387efcd8bf4f19aa25aa92d64ae741941f1678fb1eed2042b0701d212ff0e20885fe8d97dc90d494afd05ec178a0eaf19977e8a851a845814f527e315bb1dada3c3fb0780cb0a0d24face66e657cef6a492ed7737c5cf8f92de5a92adccf833e77edb39254f44a208a0c410da2c0b3720284cc25f46ebad43c017d01b41a41c7de98f71bcf1d23db2234baba2a47bc7ae08fa315ccf5cedef81350ea1160de44543572d91fb6800df9934fd8787a3413320e0bfe92c2b9de88196b5327a5046cac272edd97383b8b659d342c9da16a9b98100824648ec9f8a14689afb154c30e4a90c894a27a301eb1914ed48b674f823d6371cd865f8a23e4cf5c10039811e5965cf1275676c1c27394b9080404fa163f7e7307164e52aca05f089193fd46e59c06f126413a53f4ee6e43aebd0f24e9b6dc0cbd6a42b6cb3c37a69065279c2c42d01f89cf4acf09b562eeb8c6d8adb9fb9c911d4225134aa2adc3bcc67ab577e9b56afbe03221a22f22725e3aff15fb00602853da3e063470b8deeb37b2142b794ad37e6a5abc20d785b818bc3d03e2f5774f897f2ff49edd71edc785c1a2eb0a2df0563d7b153a2ddd60786084c205869853434301837d8019d9485cb32bc7c5ce6b484d352490ccca3cc7edf7bf905d65da02d84f1f846ae2fdfede06dfeca4cd81271055e65e1f73d37a9efa0c01d36d5a3ecb68761d4efdab2d109bd1f52c3f84b6d057dd388f65df76cf1ee178d85e9fa79793fc6e9db1a7b510657bbd51e459d40e9b8ed33f10cf1f44c7159f967649c24966686dd504aacf820538ca0e66fbfa466d02e4a6be463dea43a90f538f4bcab02835016763e09699d0c9457468f60dbbe7460b931b9aac476d3e5c84696dea55cd223bf0fa6a639f03d1852a78ed781612ebd273ef55e3fb1b999c3537cbc2b3f4b398b7f9ddf4fcb15924ae94149e075286b9f45bb841ff5c268f1bcd553f68c4ad589bb3c26c0b6b4da8c65fb6942892314f3d2633358aee7249fd474dbe5a199edfe6c014193bb9fcbdf9c8b037d1dc086268b9ee2ace64b0785267cc8610c1522cc087c50e59629cfffc61f483ac60ad3a046b4452ea50353239583c8fa9f35f5c1f453994fdbfc34d686708472bf6c5e8ad33422fc6e7fd53252edf933f3d9a408296c85b6d9eefb72aef841d2e46799f197e2dfdbbf12375ebd0477da162a001ceb9418e77cf00f5839c98c180a3f6211ae7f9e03c3f6c6609badc16a5924fd4103562a51a06b96b84af83a90082ed3f79c9d2ebd879bd424e755a15896249be155c6116fa9e42cb55441df688371362b33897ed54eca10f447b506d21a9786afc3566cceeb0a833ce1c4eb1fd5ba226e89d5a17b8c7c4edfca5a1f9c749840d47990e733c205cee0f5d945c10afd70d9282e16d7b7e7ad9253307724b655f5a10f1ea903576b0b6373a81cf97e37236d734280c450a39fb80008bb15634ba865b02fe7158ee5d925bb83b669511392a85d9dd35d9531a8829720e4d0a048d5fb03442e22e81003a5c3bfb7f41d975ba0930e3392b805c32433cc479c26a936d755524b87ab498114bdc8e4db97273ecfac4d024b898e129f71bb44343d0cb29ba89042f799f0ab1662bd7ef27ff04f6ff8f6e4395e0b0ace0653914c5d1f8416326b71147e19dfcef444be68471fd492d023d75dc2a71274b3284889bdf22edea7205b5af3e7fcd59e573cd414eb8b4255af04e60b2f4e5e3d9179870af135027ef2bc2f03b3e2a95776e6d8152928892abec0cd245aa53c1674b0b4ec3dbf1c8905ad13c4e4f0f7cee6c18b2cc6bdac467cc55c3162acce19fcb41ef524d40839136d406308ac79c983459a51129ce915ddfcc2d1daefb833b1749155a802411d35750607aabd4e7039ff17e0235f3bb16a8746acc93cffa060243d76b4ea78792cb69f4e4d36702751a291509fbb07b315de1c2c9ddf6de9e351c2930d8a5a82092bd6975066a3f6c286b9c496fc3f8d4693b0670b0f2bfa4aa92121e00962799210c3576ab148130de35b80983c7c6a7eb11cc2ed8b6b665318c501aed5a121fe0b326440f1a855e66584b76b2d7b6bf35fd4e3f42da7b17eebc5a1f8b29d0f8acfb3ce1e25d5d097c81a102793890da4d1109bc8157e302d99d07f9087d6802562d85c2b83d170ff41dcc94d81482cf6f207ce34adddf2c3cb3486b581b04512180157e8969d3e232874c94d54a609189cdcf31f8ae6f513923b9d0b329da8e48d369d5314cd033b08165b9f947fd49bd6e2f080815154e429cf85a1251fb8a7638ad17f10329877c0bae2cd1f5320fe2bf11cc9e5dbc6b9f8b0ca4b5f2acb44c4ebafeecea4a10b77abf1f6eb66c720465d4c3ff6c3152eba3412d9f6c46bede6adcf8abaf63d217ec1889e570c4b3e03c557915de86d197b347bd186ec26f36969b489afd495b65019216d0ad04b269837316eeb2101866cb814c2a5c76c5d0541d8388b5a23600f0f6baccc321c946c4a2023d95d45defb4c45325c6a1d31c42e4bc2bb6448e59dfa774f913fcb0519df903d8a691881fb9fdde1ceac78b007bf8239a341d4b7597550c7d567d161951664938e2c1cdb4b67bba6649056d53d8c2ddd1a416706e7f359401f762196129f30efc0a37e2c388d46e1d4dd35c63f924be3032c456f2eb4661328147119fa94400662e35d932bda084a2faeb61701e98d4fcc7d3ebc2bd8311411dbdfc7e91bb18dcb32c6f3f9b87b617b83fbf2ed35cdbdda98807355016f3641c8bc55cafe48368fd751ef779554de3202ff94769054c5e9cc084b2b7eec953956015cc8220ec3998b006c06616df32ea7aa3d742e53b719d45c739505182cb108ece16afacb820fda761d01b6f0f73d79b72eeec2e2ae82c6ef8db9b38d80f46985cb23d79f714e1dffab346aebcd8be74ef120acb98fd244e5f3d71a45c62e7b5f8d1b07312ae152ae1c81e503ad99d9058ba0c32a0cb22fadf1a7a308b8e7e8aaed4e531fbaef9e753c54beed6b1bd5eb0d4c1d2add27e9fdbbe018cd36059b065d2c7262b7479d9bf2f1cd6f0e0e71eb440abcf4377d572618b13ad932986e37417d2cab1879f9b79e30bbf49a7aa6f7b522a1de0811fb7de78e9d8003ee0df4b9f62628d12b538c6909a5b1f8fadb0cc547a4a289e5a5f428daadbe6792c44919fdc4bb662f26bac3a72becbe215abc6017b7f16dcc10cd7687909f6b7450caafd9aff9769bf7afbb9ddcd5530fb315c0c4b792b30966becbbd2e21158597400d3b22b2e3e84c5ee388f3f67ccebac4297b28f98f27630c7cb3b76b3c2335788f085959f9b0972d7b6b6d6924d81be60bc5d0dec5f4a3835f340d9fbde9c59ef5625abfb5e69d13f8868deb20e05797e08e7640916b68c911fc452849ac4749fbd83eeb2088f630ed5531a6dad24d3f4fbb10c1e9c274ffa519b105365bfb13a0f78a47d41489a4819c9a7968fb64e5e89950bd3d86cccf8207f829cb512287fea8f71a752e5bd37a21089475b8e03d79b56803297dc3ae23449b4228451919221b2ce21a96995dc1611d5ea7b61802e8ff2ad97090fe5c5cb824115cfc8038d3b917f52594cb4d0eb45c57d9ebb338ab4b956874226c3d33743bc4d163ca6baf3ed744e97c88feeee051c7d39034f5bcf39707dbaa6c4c45e5ea1a5dfb16e74b6a9c4143ebebd5bbd199db5018e55379af87994cddf4cf439e333ec34503ea028a9a1684c22ffda4da2924972c5c9163ffe006a3ce4a38855ead9b32049ece09f867d1c63fff79d644f98c24b5baab9e12f1acbab125e3e55b4d4c735d7113fa614befb4906b7281fe626f4108eb175137add82212efc286e186e9c094aa99b7cb0b00368ae6e3b6e179ac8877d887e5ecb2b1c8b064601e942f574b422d28d9364a5474fe6012193a6aacf3b8f60ccc0de498738b12168a4c3244c53404c6511db5baf2f544633a7df968afde2a42128d6195b5e51e9da92eccbc4891c7ceb52202cba5e261ee0155e73ff5dd7b554fba4fdd8947081f43680d589f9170a2564359594d773cbfc1d235e12359ee0ee924aacf156e7b1fc2cb0058ecdd66ec689721b19b92c1fbf52fc8d801fe10466badc8348855583b5a16b098d32adfe45b9b9a0c8c49a65461d3a781efa759ab23262229ae42aa3ccd6fdb008d91b46761d79a061df71323838b68627692309c8307d4ffa9c3f1055a0fc6fbe785cc95b957df98094706e97332a180353758481dde58014b8fc9133eb867c3a47fe788133952fa2929048a6f2d5c4df64a1dde9d4b483f9aa14bc7632d327bf84926d67be014fe82ac7ec552c7621eb8b7bfd60a77d140cc5cb8029090e4a30ef68bcc730bbdb53d3552281ee8a7ab97a7af8055a39704dc0d0934d9488db134e5c77553882766da7aa33f117ee41a62acceef8e60028a239a51f510d371502eaae294ab9c221f8e3d0c1f6d9b92893547a2a7cb797c1a630968f81417fb21011f7638e494650f16b7165323e7f1f71f89e2db82fc6ee52884470b313572ede921b298ab3b6270043633f03a1ccb66bdaa8a2ea218465f989bda895f8b215e344604eb275f0a07817ccdaf331049a6400b0601456f3a22961238eec7a44c9987f8220b843257042b4d0026871821eaa35daf5ce0b2a23989ee5933fb68848d6a1e5dfd882cede468dd56dc0bb1421798acf69ce71cdd778b5899a5add26e07c8acfe52ace6f0184374f6023b8bfabe7d03e2ab82c7ce7a67f031f62b69ed52f20b584ee7429f386ed22a91be9d51d4b1e725364d508008cb69dcc1f1b476a5bcc96f5d8f91a01da0c979949225ed00951f3c6527884c5f87d72339b779ccf40fc6ce4079195efe698d3da7309ca700d8740c21917192807d573a5084fdfe6159fa46dcca81ec3e8b6f242609cfc8bb8a390e7d725b4aaae29047c96b602e688acab9ec45d42b7cb30a10bffa8a00357cda7ea3f0b81e4e9c31e48a7d6ea3b219b8dcbca02364d45f44e0c9d52cf677eefbb53a8a633c72b5410af956efb4d08ea9f4b1a9e4a9c0195efd90392066fb838690aa6c722746a70bff5344ff6e8bd993e6fa96b2f4e7ec84aeea8b36f061f9db69a1cb232aa340f857cdfde297f1dae98c0205804f10ee9dc384fd575b446532a665b9f8f161e0e95ad0a96ef8de2b28ce107873c89917447bbc86bac47f157ee32d33d38124eacf61f06837ac48b339598b8d0508d8d8c5113d8be050c88e604cb2b2a5896230d0df1c1c7f5c51540c5de683d42b5d27778148c6759004a058d9d057c7271b0bbaf963618f3a087f0d400258cec47301f10d3d1d93ac66ffa16947f3b5c074520d3ab4e402956b4db3d25e3b028d08893f3c263d51f4644d0088eade40626650cc179019c8208e69f67c9f150bf635984c5cbaef3d64156d8123488e81ab94535e13fa39e7bb0605ce407e3472be6c6c8c074c0204e4f7423b415832a626662b2117c4e4cd16ccb39bdb9be222cf166db188ad31aa9f51908cf42e285025dd1808fb5afbe7fca98ddcec4b5a5284d4559eadd9af6a7e651a44dd31c4488e1bafd6e8c6ba3109e77f63529c94661231a85bb06fc9b5d8ed655d60e16a8c060c170a40fcdbd3948afb6cb9fd7b1f25340c68c3d86453673673f9026bb666413367f9c9b6860cb7f0b50b2db4c42a899be2479bd93024e20dfc7f7b29f26927cadb664c3e5f7eefaa480f1c03d8e9e65a1cfe646ae381794921ac3678705194de6076406317fb5916500232215dab59cf69947a8811d516de8a7d6af67149375fc45a354ec0bf6b39f142fd714a2d4a0f777696e613e4e50e3a1492350d64f7191a8a5a3133e7c4c72ff183fd714fa4f5103571e29f98a3e907e7a09d5c60e14ea4cd11571d4866bfb8bdb7ead9220e304fdc79a080294dae67a33590bcf896401b16776aa1996528d86550f2f34f0d60fc52197a0e23cd2ae15dfe8e1d2cf4d373c0e0c68708abb323f466c8f444148e4e3073aad7326e96a91ccc0a7246f3191b5e60353cd1275d00d5af656c06e6ebe807c515f65955d1f7584c1db0d70a479c837f76f3b6bae1bc8465aecdb781d0fea90ba6ebd98a1060c2d10f6491fe18b84a54da8586b8c6d4ef80ef47cf7798614a6dee25180a2ece7fefab78ba8b73edef97d2bd4e4e13500cdbcebbddc48c5133d68884da318f657c947b3f68007322f7d6faff651257042e29f8f6d07855ea257910db076990ef4861e26a2a10b79b2de7d7d17d4fd06fe7037888fa5249e9f68adc8d0f36515190202fd1d92037b07ade1a724820184223ad496d966387d8cd4d03ed24e2f26658988c8e74203ebb35e7fb920077fc21d03d8f7367fce460f02b89a33fd4b083bb4c6b8f4b7f3e69eea5eb0a0906c9d6622b8f9447943b472fa4f66420c17e443379e3c2e830e8593f04d194d0dd6b9f51b15d8d7d8eab2239a8203a3c773dbe7c862b7f10e5ef6c3716eb165bb64a0c84d79c2748d399835512893cdafaf07d71587db8db80cec4219b4083b07da5160ac9096d734dc44de7341338dc03cac85c5439dc8ba8c1c8914923eb3b99763418feb3d6d2d639af71ad9bf8107fe22aa8e6a5c59e8e29cf27b5b18c7768f7a758d9ecfda786eb27f94338c9e8a2024bf5bd7d86e369e41404b185f048c33ac0a6a518e756e837918642adcab7eba90857f31c12717466214ead0a80d0f43e68f108f9bc73df6aa88d3d73fc3cdaad47df9ee2f18a449297944926f174c8bff9ba168c1104191ae3a13f455d7ed724971cacb36cb98b9115973ac9e6c84f87c468fbd03c21fe483bbea85e32a0705c1e95827ad3c1d575305f5ed8ce8fc8f67aec9bac204c164ba3df9c8a1d36ac084b7e5f9d15b60c1c4b175ddb07f5c2dc974fb6218300ecc7017866b9d3e5916a26c1054f68e02cc2af527343ab55a1d873cd631c35585587942e18584ab189153e06b9a512c5048034dad1a2224beef5a316f2c60b59be00bde53edcaae5b37b2ae22ef54034ccb989a8eea31faaa1a9b7eabf0ee48f0dee1aba0c41eadf785a0b5ab7b4fd2893a94a04476f67841495ed6bc959a384ee23391146c4166eb790d988e8cf9d0d8295086d01994748c6f45edad6f8a637f0bd3182733fb66b564433f38b18823be53e958e415f6d8bffde1fcfe070eddee8284f0aa6d8a92fa84f354df51436abfb666889bf7e120c7cc3e4152ddcf6b1b10d86b8ecea0a27c9d14c7786d26347d215b69c30e0ee0239e8b7d28bcda08da3ceefe2b2abca16004784bbc7114879d3711b3b334783c1c494c74adc2256468ae05c42a026a6fc5e42dd6385f305a8639aa02b765e06f39efb57094610b604f9e32faee7ccf3faaac6e2579ab7c1ae818975703ef784516d215bf04ec8793159d56849aaaa11925e1c4353893912918a47a95423394a07da4363096885cc8c1084a679d399459e9d29fcba5ce425a3bd2d205ab4756f6d870ba9a5d953b7e2de12b4dd6fc262e1eed4ceebad95877407abed3a7eb36d1ee6e485609d1f36627e4f70443e5a41c859892679e4216bbaafed38e119d6e4ef1623fc00ddb27e9651bd6ff4051197af0eccc4819b01d592cb844acf6ca3f9fdc5f56b9e1dc7fa0494612d35dd3faf509ab79621b9271f310297803f4686b89250737284b6e6bda6fc94cbcb7d24c0b693896cd4faeb2237843e1511d6506e6b79fa574bb067a19150e4215eea60391f9970f64c1fa76f55f4c0fb675c25325459e3c0cbc8d0895477b78e3a111892eb298c9468f788e6b7f25e335f8593dc5e2781adf6adc82b7e972404b863759de9ab46f57b10050f8f0076137308483ddf8df21e40642c09f84fcb418017bd26f235a57bccc349406adf9cd07622dc29780b695948c5d129fea07d7365bda7c07ca9938631806d970d487a7564316f8b19263eb6b62de75bea971703981b33f9c1172677951842408cb8f8bb9434353fb4557a76a15fef4374e3327d7530f377ac83385f1bfe6a1122221552665dca3dbdddcf89825c5b3f774690c6a88d61bc19eb856044b01a0c752c28a7ba4fffccc4894937ce26c4e22ae19fe6f19927ce50c6689ac9d978cd448a2b9f7f147b9daee2cf6a557702a8e2fe265094799562c8a36b6275b40c4d8bc8080bfb90a4f27d03be722491e1b4657fd397e27cff9331343df7a63ca92e95e57dc5afc8d1e6af346720a40be4208fe42a9b9c751836a0087f9ec27568c10d10dc036f7b8aa6b246018f6a69a69c8991186c7dbbca5932cd8d1860f957bc871c21f215d017b8802e93882f6811c2b3049575affe1e7476b4dc19aebe07d83f6715fd01e973b345f5af0d0f190c40d19c2f1498618fd714f8d32397c1d8a25d607845bc3108f72ec28cc04f35792fb90e99f0edd865cd141bfeebb04968b8783219dbf501a6b5e3b21bcc947ad86ba1b6e28467907c77ae718863bf0486ef5770e9d5bc4e8c7a40ad59aca9dbe1bbeb62578355a8bfd54d841ed198653f6b10dd73b731b74e007e5f37f3a7f3311b3db974e3f191c849ba5079676ae6f006e2a5491b0ebb93fdc0fa9d04ddf72a6f852d50f708adfef5e301cdfbbc6b5d5d5b9a1c99e8b8a5d8cc958abbcb65d1e1fd687c9f5ecbee80150d8b31286149103f875b62dcba29b16d856dd45b010c06f82638ca1ab93b9bbc83c9aebf13031098c2707313c140a8a67700a29e57ea8621b647669adfb031992ab3a7962a0d56b726ca0e20a3e788f38630fada9f7a8271d802de83537ef796d13a23397aed2a2b71be45d66d8fdde1e9cf19969e91e219fbb15dc55b2f390cc871c53db21bb9a027cb82179d455c4cfd6dfbc9473296606c540a7eb1b37e4077f8b5a3aaf3b34efe8c592f1121ba40079e0669b99e1408885f0cf332c4753e530888ac410a8c538d9b0791a333573d5c2cbecfa2842b07c4f897ee97ce38b6ecf776ae3ef6595b48f0d8283fc893a9f2e19275aa43ce68094fb02f714718f1794f446be15f6621c016abc39255698ea99d8f5b5c510ca694d004eb689a43835db93adae9338daa8b8111d9076663dde11e9b79d695c77067efe78c1d7e9b2c3c71ef1c4d5ac247cc51efc7792c870e95c20d27ff581bab27e1339535513fb7c29c8aa5cd1da58dcfa019569db708ac29b9f2e068bf397b9f582703760e3673f9fc734c1c1c6023e0dec89dc40c179b59b02ba829aa9c587aac69f4ba9161ec42f072ce2244da31e56685b50f2d23e42b470e56ba68b2dae9c916c8f3faf9da5d23df617ea8830af4809f3e43ae36f0b4ad727e949da6eb4085d22c5bc6231b6a3e63af804f2914ee13d1f83074ab61451bf766fd4b95cbb44812da235387fa6ba01633ad6b623d499460d95d9ee50516840d16d0cd57def9e6fa28fcf94fffbe0701fac1cef37aaacc7d34e28478e82688db909ebaf8bcba75db4fa1d307c57a00fe23560ab91b8b0a5e886728757668077b3eb62aaf42a92954035a9ab950b635b62ef0890e91ed8b0a71e83d6a435380ec71b84e35d2c93aa42e640d34003a19d1c44949f6dbf5b22d3faa9000373f63304ee8e251be46b035e0afcdd42f8520fce279a133d99dd160e8ceb5e1609e097fafec7c3b8de868858840862b7f9255afb5a94a8eef2cbff60e7686411b92d073e401fdb747353c69c3dac0f904229316abf998c08550f7db76e828a3ed95071e914fcb6c1e6c87fb7d619b21060f077a7bc7f3588548d2f610977227c63814b197ec033c65c3b80dbe7fa664fa8639481b413bf5f2d4adc93ec81e9bc538f396f57d5d8de9bec765fd1d177b700b9148a875e16f02c33a7e6f3b81a8356110390a3510c169f02ca3d1c95c28af44ec89b29242396ecdb43d4892d206cc74ae5a5e88e32b2f8cd99936a2629591b64c74d4611551c5cb8b93f2012f3a3ff6243da9c3cc4a8048aa022f886118ecfe4aa80f54876439c9dc0eb38e6b06af4c78fe2a2c46523eb0036d2aaeb9ae434c962d87f44693fa993c9fffdeae99825d60a71d612d30173bd812cb312cee98ebdae3b3337843ad5417f886a62b314dc1f9cc1a8110356a4b4d1debc7cb983e70e3a54476890d01280e8f6025b965fb8ed9c0ecd6d3ee73a911e3baf6b1c680516c113d23410920fd75e9e1d0a0a0891d2e31af57205b0e80a02b9fdc8fda4b29a732bccab52831ef93936bbf64635a16cc2aa9d13895f68f3c67188554e1753e9fc9325f6079ef27d685bef76e62007aeef06eb6d2bd65fe3c5a20cc57ff4ca943706eafc7d4d296b2d0ed941f09892468a7d955ff4ad12b1f42e25a7cc44b51e988375ff68f3a453e1332b18ae7ce30878dfe5fa26ade41a6a1bdb3fc761eaffc6cdb80b2064b717e51145c5db44d8646801c2ee2c56ac4f9a13c6b1a77b56cbb7eb8d8a81681c90ebd5dafa8f784c51a93dc933dd5ad53e3ce4bc1bbc162065c8a91c52483cc4ad5e0e2ec98836273fcfef8090bb2053da1a01168c4f8a1e8818164ff075106ed8eb32d6b55cb0b9efe9f990c62e4263b4900078eb5682a0135704561f9b891296321819b36fac6d48a13f107bd30f20a30f1a3a41357e82dbb78c3d9633411ec5277cd3797102c47d1e2ce12b0209e353e1af54f3f25195f4a18791a7fe427cf3fe7ff1079922a32f172c1ec4566877f840bfe1e355a354b7eb1512603a8f709c52247745c78bf550a93096a188961c7809712d8e6270edf2261a7817eb9c4257d3d41812395598f4f72d591d2ab158ce76905685f086940a95bc49a5e5d0b740fddb633d77a89959a29c54e9f60d9b81e4087ff6260b2df7d7e7beab260a5e2932e9762bc143c7d03ffcffd430afae5b066e8c10e8f63e675ac9b5aa1d19a6521e914a2845f68c55044c19cb2ad3fccdd37678736c913d77b656b7ccf643cec47ccd89ab172823f49291711a8a669fab417a310992fe1dbc17c50ba09abf9c872778fa0e01510d57cc56c95bf68c4323f1fa0aeaabae3d9ab210df2d0f3bea47dfd27579e781e8151927bd86e81bdc222e16be2ef3eb9822f07875212256fc335d007100d1d8899f4815c2070a1f248ff216fad1124f51f0da0070f1c727b018118a1542380c6dd99e3532e91c54f1f826e38403ab4b84c0aeed203d68b4740965dce9f9b3e672ce13216961b6af56ba048beb8e12a271be294cf0cf637c151d7fc50952c0c4ef061a75f0572dd696a550c0c2370febf1bd636cd0fc7cee540941faeef2ce190a647953bcb3fea3e6af205a772db8123dde7c60c2436ff056a7b494c913a1e96898ede0778491a5ff4102d1aef837d7004f6a7e6a73ef59dbaa2b8e680d554e329840c4e158b59e8218a2c33784ad4dc73185e2b4b8817648161848b2317ff5599a8aae38546d062ade89748a23fe5cadd144ec894e0f8985350a07ade91ba13f851aceb7d49a86cce92249d9b8044169abbabd92bfe945a5295072175c27a79de04a5923bde27f2fcaf04cb15c2c09a1fffbbf0decf554604f6a16911e2d71c7a6300965b3b881a989e1ac2a292f1991e9a11ab3450dd15f0ae7e452b330fc378fa29a38e6d3d494d3a439a90a64a90234ee3fa9f33fce57bf3fae77d5e55970ac904ee82b71f2916536ec2cb8c0449266f06189d086cff10600add4d54d2f2677056a198cae0a9a762b5d3235774946c53bf77374a04d8763d7fe618a7537c2a072b7a886fc7fe1fddd4b237fe06d753c5c3c35bd4835ac03352033923dbf2e471d0297a919678a03441857483837fd723daf7986b666895bb477ffefcc28f663969c05484d0d27651c4aa3e28783c87c249312844f37079ff0cd3a3d8c68b1902dda42649e700cb81d0c7cbb0000a6e7b1704a70ceeec7664cccbdf74d89c67a3596e61e94c27433ffaaa40bf1b26e1c9f904900ac4af209da85feab962877a0c2acfe3ca5e971cc8619709c6f707c4e8f838a5077facb76d8ebd8fdcdf73e31467e4b97dc01b0ed426c91c4d5677073599c5ebbee2324942759e7d17f3b822b08718c8460d7077539607cfe209549fda571824b16de8d75ae086b19bb4e8c110d6edc907b70e1e0a0d155ba5f4ecb50985ec23c3db76aecec9ac4020a1edecf64621e147d8066d7ab43744d5fbb33328103af3ce02fc53fd9927c9075acccae39be797948f484718a5a7021eb5642a244c2615d9a3bfb14bad9dbd8848f6f6937f7e649b269c1f30762c5840f708ee5324251ece2c438d3e33b14702e6fdfc30b07cc4bdab2d9de96c801bffcac2db091ef359f2a25c20b20e8f8be408ac43ad3eaa8498a553782309e874a5981aaaff777fec806b00eb10cf34648dc3235a63d22d451410e327a281bdd550cbb4aede94ed4887d29b326f0d67d1e394ce4e917344781fb4c22c4f7198deecbfaa5c2df2b302532491c7456ed470c17d29f0cb1297babf6af43520e95977704318c5aef89fe04253c19244bf67231e6521f51420e5571ac906749ed33724d01283cf8e927d4f8f624369b2a977816ec6e222a1b742299fa79775227b898b998fbe97e9c8832c62394e6eed4d89678675adf23d3f0a5b9faa8c7a9678ead97ff9a95f33d74dc267415808783a57850fb61c11c2d9c338a5a9139d64b432a4ed34731f3d2753aaefba40417a24d6ed577617767a895dd691e592e32af0aa0fcda1a1857725bcf465332bdaed206367f6e4a52b0f57bb0ef975c49b0023888017b80d481e4b9bc396523a4fdb3665448dca2f3bfa6f4ff9502a702866ec8a43958b8360e0c6557f20bd09f0118ebfcb29b044c757928c3d2a87e09a6c6d8f09a3255bbdae3fccbeff8058db518758a523e9ce9908f46012facd87634ce2a210d91bf41aba35bd396d5831986dfc787db63ad962bbefe4d2f8bdecf5ee1a4b4a172b112dbc92777d5537f6e97030948fca20b48f2e006561f4870d841e0d0948ddbbc36d95d46e6caf021ab251a480f809ea15b81c6967b12a49f35c7205d4686bec31c69bc6459e57f062f8a73f5ca7eefed2679dceb82ab3934e0a4409ca964757e90e1a370072831bfb4af06625a9b237fd5253bc74e7d632867e8eb034b2fb6f700e4031c2a8ba9503cff3b4967922c7e97d411efac16c22a02b80fae43eeb30f1746496012a8f0b1c50fa044ce9b44222030beac320be61c74337cd9a9eae4fa9b277cf74c236b50dba285559760793b743e0a4b298b1a96bd9eab67913bbabfaf6e8be0d686d58eecb745607e87c5a908da259d8a5c8d629f40405e9cc26eb94f248ede617e373d78c01bac0b1adfe130c0f1770d4719feec9ecd691bfaf5182d6b98f9a8a71329073f93673c44a76fdd8e1b334245c81daf02ad54be36fd61d30afffbd468ac8cf65a1b1fbb30766eaa4b5b2ebf0cbb26166ef094d43ee4ea1ec989f4f07e129712339c49a80354113e4edc485dbf83b43c6e02bd1d598c5f030c22b76e36d6f000f9d8bdf2358e1ef7a77c6784d72914ba7224092a35df40a27d005abb7fa02e7b1f013840d3fe6eeb6217f487a1fdca0495c8d84a4ff960b1ac39bae351ad5f592512d8655cc96f36327f5c13d4190ca5f9b62a13b2f56831e3cef5480d1d846cc792a4705047a2976d2890a619f24537350a276837735174ad15ee64d0560f29a3bf023e9e5c1d6172c285229d95943e5f519821ab0dee73cb5dcc9ef0416b2194783fa4807209b6c329b565eb5c4ac7bc916b3a712f6078863a7b2f09f17450561d0b2b87e52519842d9df8bb9270d92c75329191d29f0ea5b929165275fb33370ffa53cdc9414b229c3dca72473ebbc0ada4384b02f84e771fca1c31f543b7dfbc0473a286c47953ec9bfc6ce7a5032a7a1b5891308a73b57495ec36cd87ed80f4051724f127bdb4a040c16a5cc77ce841159c13bdc8be2a508532fa76729cedb73e028d3b78e7ad35b945a87a79d66173b436b45dfab166cbdad3822da5966af5d2b23a45d8a26f0217b0773ac8284d293e708d72bb93ee7e953237cb34e63f574a7bab95fddf26f7702b6ec771461ca09dc7e8b17c46a9b7ff817d2929c754d3122bf792b194bf8b5c0476be67df4c2fdfa2c902006f7fd4222b835e007260c3f946845251cad08378d5570c5073cb4db78fedcedeea69e04e41dc9129b67915b5d1fbb84efc8b65e6c38cbe0914d223fa13648f0397680a9606edc48a640f945da4bd7cafc6c9a2cbcb6bc01ef8ec4f240e20d92d661b9251804fd8fa89935bed5657048ee48d7cd01c04ef52dd0ed0d1a524b971c7f71c991ba74bc7796353c5b8bf08977e9c9aa28636261d3bdf7244cc2fc2b55c542dcf6194b131a8b6e62ad958598cc9fa2973f5dfe92945acd0e34c04c83601c5a115bdba95ed549e49c49ffa1dc3f4741676fe2616d5bdaa8eb86db5e6042081b8d24c0a9fa205604d1ef58779a668839c667c3e92b2986d9af21f961e815ace0f32cabf0c6fd0b4262a7bd07d32552902003c2f59086dbf1e62c0ad7fe67ea981a47ccc486476b78fbad5c0f77990a6be84b87a4c52b8472eff67d499bfce27865a3e982e044e8b5e088323b920c516ba38e8a82cbdf0a58362ccd8a869954afdcc904fd1c9fd05012f4474abe1f05797e51813c4ae67ec414ab051be9b0e3fde35c12f01a006e64caf1588250a33d22b58dc7dc839fca4531ae4fcfcda9c444f141d838b691e60bbedb70bb4fdeafa61e2045438aa9dc9e156d6cdd30350b316ad363f35785a0d76b0c71ac3ae26adc4d9b19400009e5a5f2ab40d09c5bbdc2a863977bc172a8492a666715d2861b1da156cc6886dd47cd1e3192f50241ec163ea4e14c102212679dd73fa8308910e4b7352815ad88f494f73533717f8d5d2f669128651e991ecba4a54bc760087fe7b5656627a5b59ba2ff12cdf326c29427256165dfcf1f83d89454b66a6569c9fff21887930c4865aff1753cd127f5c8b62487801b43336169a0b6300ec62b1bdaabe7385ee189da822c2438c31861741aa9985f7853c980b823be57f12137c4ca31a8d8dba0c8351fd76ce1d86a81d4dd9ea6f64238cb6fa745a6342b46b266d0da6acad048b83af91d8244ed76053217e9d11c57c171c63ed4f4fb1ecfe3c193fd89b2417332037cf317b28f3ff1493805ac2083fc7c1bef1e723906477edcc8ba8b1f75fd7b3bb31f2382ff728dd5a138b3b82d4f7585e8e521db7cd1495caca137fbdabfee4b5e62ab93908523b72aedf8c60a8f96594a1a4813cf9259fd1b39c8b610962e8f568129b19134a1acad1ca20a2cf922a394755794e5190b3620fc621f37673936b6682a26971ae56130504d1b3e67960d107c2773fa65035eb809b2bd1a7d23eeece7928289873a593a6060b2ee7dbc3e16ea93387ecf2107262281fc52cd6782e1e981bff475fca40a0900462f5da6d39d3b12fbabf16db9fc2fefade060a883b4ea7905b118f1e9c072600a9a909ff3cebe0d2b93cf43e3c17b3522436adbd466310e3b660f36608028ea1a725f2997c3e23119f0bd4bc7a9f5f6b642530988e2c5f65b3b1cdfa93045352f75990ad1ea5c9a3214095b8b0c22068c3ecbcb59ba9c8a1eef9363a71ab45b6e73cd58fe9cc08d27d0d27d84ef19686ce44aa96397ea12aabd6995497f2f72f4a5725e8f52a77c91a2911b237af676b2bac0830d502e3fab38a365f458e407579f8d9e953d89286731deccbcd77bc7e34b21b4e2bcaad661b64a0bb617fbb330f97be5e2d973a4d04bde5e8521dc2581491d7c670e8c19bb7b340ceefc446c5f95f93812ea532b13e5b3fa8721e2b3e3242697c5ee305b27e1acf04163987f4e3b98ea83f0fa32ec66fcf73122eaaac0100ae2fcbf5044c2493e02c6e3d62d1208fd8bfd9f1985277ce7ebec0d27af786b8b922bd3c6bc79a48541a9ad784958d840c947f708373fbaccb925d94d8f3224c518b1d778cfd59fce39d5644dc981be0bcec2536b7f9ea444671d6a784b5779470d5773cde938d799acb86d41c56f4c5ec7694ffeb37c0ff167f0f6a455b7817c5b56ef27adc8c545791f11c3c7f699f957f0908bdd31cc07404544462ebf5fa330cd153a0463e004f9dab1ef82123f3247eaa2f2dbe230a2e3be8c529403b455096780f305f4815899467134ddc3db2f86e8b5a1ebce982256d96d76b048ab7e7715ce032613281619926f600214b02e7fd56d6d87e3e7dcf6251effebf8a97766f81834f56d635062203b6178c65d8b980e18b894c5010b52146133af4018db134b21b55c7c6dbfb1e103e5d47cb4dacc13061bf38ec82f6faf64c7d485c51fd2e29e6b6fc89fc9a718622e27eb072ee99c277efec5cacc3e939e6a7c6e34ef555969e09cfcc138cb2bad079e53b88265c1ce2f2002a4ae141346b9e27b075e9bd2a948807eff8524895943949dff6ec0eed0283e339302aaeadf5cc2fa47c5afa933c91508b1cc0cd86a3fd377e0a4d774c07c25218a70c7f54b79c1b0a7d8050110526b6dc277cc832a2e4b3147a48f3e0d4b36463420849cd11001ca157c4b90c3d6cb623a683af4ac7d1f7cf045324f653c01fa1f734d3a7cceee22d9a46b6e1382fe26c82a54153d3ec4bcbfad669ce3433a3ff43ba559322de3fe0ac58efbb365d0d5b4e042c4e921feae25bae2bb92ebddfc1bd57086c704ecc1fe700aab722870fd7789900828199f24e53acf4b73ef2df5a84dd00fc493ea891cb7a09ae126314c7d5af7cda804f70f83a145dbc9acaa079a0b1618999b5466913b42157354c7c2f1a661f9b2c766dbafd1fc5c8e5227a878b4dd88b383a4a5661d1d9abfbc04c5f3a31105e990a1801a479df7db039175bc4bf6b23215b71a16ca79eb176e1300aea585599b14bf67812c30bdf7833ff218d289b2af129934a3541e5193ff50972d8775a24613b2bc0861281572b9aadc2ac3fccfdf8baab395a5d7d5fbfe60f02a5fdc6771021cb4b2a6e484a9ed83a3954cc095279a6f8d4faeeb34b64c381fdf2aea4a1ae0840f3275407b7a0bd94b0162d12b5048b258ea59b450d0b3de6237522d627ae40bed30c359abdfbff465a39d4b590328a8838b53e214bff2bdc6c4444dd52e6dcc87de1f57e0a36b5d3467ec685cbf2c76e3a2767fadcfe067b3d57d3f19a3f33c69e546c0f76ffdc9bc0f31dd260daec78eb64d7ab13046e43b978e467316f60a49884e88b60ead357eb3f88f889b2a607b2b2056abb0aa39f10b25e66e0cac28db971a9f5947fde1faa56c602536d27b8b1f79cc5419f0cf4eeb17cedba6b7cad05e764b9bcc8a6040e862f95b463a3f01c59fb7da9cab43f6a604f2d576bf603c5b3c129ae24b637cf4b2b2d8d6ad37c7bb4b42336d9c84c16783a2c8d045a4b4764ddc91f9800c49274b8af13dd753a785c0d8bf98c1a711daf74bdf3c518ec8f44c9678ad457d6fe9be8479d34c9d5079c820ead88a1de80b589c795d16201dc5b090744def395df426095d0261596fa6b41a18022f783e20fdada995ab16d343c159b1d92f08cde56db2aa08c233a4b77acb1c959d97c7aa01818d62e3eff7df5db910d4acea08e35a55ca685bee4bc02dbdbbb5dab121a82cd668a1f8aa4b9373b2eb187f29aceea215fbc6438199a8c176c95eef24c5eb3d3fbba89d6b066b48ab2aeda2441c4a844b5e6f3e7c7a60160b1e9e5d71174f2da2fe513ac30391b105b423010fef13d17eff086a46a9734e81ff35dabd60f14e7a508f4544e96a28a288058c519299c38b852254a319fdd964317435de07a12cfc13eb65fc688e8a87a14d538825a59593638cd3d3ee7c7848206960614d80bc06e5a89216c1f1d907a8df4c2238871c0b7c772e0f200fb82af21485e570269b9354a8c2ebe67d3595577d49ed15877c6b1fee71e4ca59e906c0f674381a6700da43674e48a768a9146d5236cbe10cf580fc04ae24e530f685dab3f39da7a9ce5019728e1a430fcb872c166b184f08579cfedef9e849f1af129b93be52cb620ba58b69f89a7c583c3913d0b55bf3cd6bef3a703c88746a2cd50058191662838dfc9625b81cb0e7a99697ed62332706ed0be0a4059a054f5ccc9ddc3acc796f1f534c16237cb433a99183c114c825a20ee42062d4c70f40677780c5247a43d6d742e7f7b57d7b79d1330d160e47e2db36840295525b0b64a866ebd1698b499b32946ddb1579b9021ca9e326a64f9ba31255479bc67fb64666afefa3a7bf5da90b29d4bf4ec51a995796b0a33272e65341e76b2af1dadb119c49da911ec18a32a04cf92a493e913284a3f7fb4edbc8354e1c787b352cc56b4ec972d318e86f157e622c3850939eadc60c0723a5a313f2d0fb3bff4990876336b9024f827ec5e1d7317645bd34361064fbc40f9781b250cde57451b85c64ba781d5dc3d215e0a129c369ee3b78e501d9e2249bb31b8f6b9974b89cb323c87d2a082749a0b08dadba43c599341849f6e4ccfcea6d629749219a7cb72bb9dd90cee72ca85166df163a28e88a040e94a6e4825f5e39b40267854652934c1598e52c703ab8799387fde020120744661f424f878e65918d3680fcf1187edeb653e1339a7e2d68e9e444304ee6a922b032e19b34a6dd1c9a6371223c7b254609bf0c187462010124c785e3c9cbf658afdf34947518a8a8fe87f7c7e7d571e4e233961a774d120e9e7e63310f5c81c424b064c7454d1b92e35f8c621a99bf967f32946c470621df72273083d8be0faf67714606ed79671cd31c164e22885ec5f5a2615bcf88b7dc858570853f1320e8e74ed635f93383278b4503eab847c466f9ceb8ba2eb982409c0ca2a3460a83cb47b25d5e2c10abca17c69f2f97b89efd59f60043dbccdae0c2beca599adcbfd5806e4b78937b4c49b7b213c5ee4225452a9febb88b35bb8485814008d9229e52dd0cb18594e03e11ead38fbffd7ab8eaa28e5d330038a35d7d2f18df041e25529ec2e0d49a0854bc67f42021634f8b82895eaad19a8fe7ef76210f7f54e675509e90089c7916c2f94cd63fc71677281175a3cc3da1c51688a0eae2ca4e39f78ca05391e32ac88c66b64a772f190bc384ad35f513cdc509295a9ff185947ed53317696bd60c865e8941e2b370ceee68d9559a642beb3a92dc4f6462f43b5c9ab44b7f8dc1a09d29f3b8ba7424c999518515f668714e6cf8de5575cefe682fbe0cff3bdfb9ca559fbef26145fce98afa1dc9c8bada41d5e3f690e8e61999696b8e178d9591684819426246ad0c43c71d4174d50e4072f4fd0e60bf789092e46ad4c3a94da2da4ca38b6c3c78af3cdfba2e67931c28eabbd1b9752afd4b4f4986c286729787a59c8b65e3d766b368cbc32b3587013bb4313b6dae577866f6a4900500eb1610a56d3103b389458f9fc4496ecb6b2afc3f9d109b14ac44fe199bc68e3d20ad9dc84233e53d36621be896ef3817694d5132461d04298433a051f311bc4b0ba2a66b45a320e3e93779c6ee3f5671a3cd3c83f88d557184b4bac7d58eb1bd1e9a51111ca1ab7e0c25fbbf86697176344d33593815fdf77c45ff9c75465d36efd4eb86ffc9fff147406d91477580ffb8c7d61a0ce286b8781f8e394548219cb75232d684f817b6ef9fbc82d21fd5033c4bb86673894b28b17e8b64647efe331072ab43fa50f2193e978ed5a24c3decfbb599479a5a60d1ea41592a163d2670e1f3686a379e3cfa38172c3debacf44e4da69abdaaf5dfb9c1dd2ebb17a199f0f473a5033e3a9c434bcf456f5a4440dc03e4ea4b4242d9f2c1190070351e0cc5c1841b1db4b0b25d61e6ec9f24e054ceb5c0789d9d7c83d47f0278325786bf0d9b0a8bf00ea7d792c8057d0b12cb6153338f1191675e3c0dd4f35cf856289527cdc088378444d2e9948e83652a4e901c67a68455439363708bb83ad92abe8feae644078554b3f1273ef55594722bfae6007e9b68dbdf85446fbf3b633ce1743c737821081cf06daceb673a9b630723d8ad317448e3debec4ff8bcd58fc36f33895adf2f2663229ed7e7652d26ac78d2e01cd2808604397975916dc923442026bcd5b6aeebecdd5bb71182fd7a6fd818764bcc2b6ee9c39b90129fa828a5f137cf11a9d9fe77ec700f0d64c947114eba3b1383bd3605dd928426da574a8c15c58d5228f2ed0a772101c6b5506b8cb7eb7fa641dfcd0c0ac64e69ca12aef38cf4e34484ac528f8c18c60e26eafeedf6df790bc8f1eff83940a7fb7eea48383f2ab3d05ab04c1496ded8fc90ff94622a50e6e6ac85cae5b62e31ba2042862cdb92b6a0ac1bccf5d166ad926a8ec73ca8fab34deee26e5436633bfa38523e69009c771270feabb2df83f9b712a716cfa61ec06f45821438a4d410ee5da4fc56fc7b528061dd9c7b156d8dc2d7f11633d903a32db9942b79a81cd912dc9a96a99ba58a17fc31dfc4af41bc111325f05793708ceb9b7a3fd871f9084abee611482e576facfae6cd64ea7e547ef9902bf238343033994ca95a04cc6280680fdbdae00f903e7cdd3809ba8828a16f95d226d49fc2f6b75412ab241d8704d3f34b7afc10011fec6b8f0d2c2827327029dd0bb20605873e90c617fd1515ef5640823772e1afea19d9dafb690a04025956f057cc42628e3534d718c4035b3ee6f9857955cec7ca81e28842fd3d7050c1b86cdb98311ba3df250d88ffd896877cf7bf688d6626ada13706e936b7e2805203cd9c90348342db7eabf47aaac65f8f65c0e212fbdf665cfe284d8ecff06f7a7b54b261b04c47cd0f02bdaa3409de474355b08525d4f2d74f6b3361c136ebb47a0d33488de52c62d9cfd700558ed958e5f0f7c03f523ef8b6f5b3be2ed00d98ed17d97bbae3b12c937577ab8d17c5577160265ce9cd3594b479cecd996083c5d8472ff9a781ab6828f8f05083084a9864d2c7b284a303c73edcaeefeaabf360ce13642ec92a1cf137d3909f810705ad0e2d0b23b9ecb24b3cb0ecf4efbe18b279d31b3d1918dfc8929b47f3f62d06da11b5e9aff264a8a50b814f9cd6a74127184edc9395fc7a6dbf7158e6f3c8f6f7e6032d19e05da3f4fcece118b5be4303fc98eb9abec1edcb7a44735dafa90681584ecdc8f3c338b7d38f5d8c037e1ca00a46bc111954831731e3e482030603c306fb61aae532fa6a48bd393a1cebc5553ce24083ae7f09f387e0c62fefe8387ce5889e1e301abbed890be7b6c08effc220c4c0e88cdcf254d14459751333057bbdc515c293f1a5bfb6ad017e94fd0d6c572a082c43cb3a4f9c10f053372b3432a754bdab917d13ca649e84299ff0b26117aa0dbb68811c6c258f1e30c39e92969584eb1cf123561b1b9a47fbcfeddfe8aaed66c81526efa0df780a4247925204ca76c9593f50eb1bd8e951897280e5e9edc2262566feb8f0f1e5100ef581255d5e9573864ae8c41d8cfdcb24bd012144d279fed9fda94bb8b51027f122322e0abb5942f2a4d09cca9ad6990249f16a01de92bcc67e6ffb453be8a0eec90f2c0f2363f52f258184e25d42e84390ddc7caabbd8298149943cfc3724738072182e627ddbab669a922f0a0e436bc74dc1dee67274d58eae0e90e4700e95ca085fb6f31364d8d4de550142412a9b9b993f0ba5419a5acb3ed72d6ef2ccda479876fd6fb25a1ad75810bcf1d7ba72386d165fa46e798aa23dff9a59ab3b6e61c3ba7f21604de64c94fe5b7b5a51cfbe8b414cd282e53bb74eabced5c105d0b37b0265c656e9af0f48b716c8838d6a6506661477762ebace206f1f4faf287881db2bb0a9f3f97ffe4cf55972715d57d106067bbc5ae497e2faaae81708136584318f425d0d572894d18f6d6954296b0e146b4bd372238d7209509466b6a7c53c4a6dd61d8a80ea626d9ec76cda79e095f525598082ffb66fdafa5c6d0c7fe63de7eb112ea30a1aa2a22c1633a96d3fc8b45f90d04790b9515f75ae733d13ab2731f4df30f1daed757d38c7c3c246a2449f728050ef4ca083877ba8a615e00d289f59a74a1d95e5073e1846aaa577799e06ad8f19a524f8e3b5a86b9d639caf1ca7c4c4ed066f5e882aa95724b206b8d7d78d29933c49bc778036f974743de3c05f087f3207f5397515a85495c220029af05c11ef603e4ea4b3ca7021a625ff3ab896b80e90dd0f5ef5e4ecf0d516afceccdd30e15b7b2879670211ce947bb36535488afd6f5d4552eeda3ba0459ce3b0bbb479b561b0dee3efb871e03031e2c368bb6686727ff542695d2a9d8da4b9ac9cd50fa9205ee5bab8242daeb60d5e1b38ae5846f07bbc4b3e66ec2977524d5449628683630b2864c651ae5d720ce57cc50c974962597f9f225840540a1c9e7823c4331c5d94f6f1136500c32f69426a88d8792d742c744c80f35c24a59db70eb18edad53b373b1ef4834e01a5b85830f44c60803a8916f5bae001d1c976107cbdcd21d0c1fdda6604f9440e33210ccf1f9bd633dcca08d963d1d76929cca1ed24a36e0abbe93c9e00490a9923c4455df7831137d4b7360aa1f9b957f0e789f937fd19b0352d0b871eba6a0625502f8901e6d5e0d2d64d388e141e825dfe48808caaa877ae5b2251818110a438b87b55ebdaf8d0f7a05cd674f59c4be08aec90c145b2c895020b65d0fb55e56ff36dbc60c9f56f423c7af4499d0a1f71708f9e0da88a33d04619dcfb14cb37298cd3feca9a9eb063b24695d87756d70866bc4a7b79991b9295b437e388b41a285698f14a87868df74d0dbb5be2da33de581b3e977dcd3b21082d47f4156aca5900f1f2ab1d2b7f002a0c6941564a768d79d5b14c6ad23f1edd4fd6cec63886d40986b3bb69279fbb8230704f81bec6cdc473bf66159bdd5e98669e106d0caa0cb2e3bfa2f94e19a83333c55dc5ccabbeaa93d44e9b96fce7e2aca00497a9f1adbcb533cefb602b62ee15999c7e79c3adae3541730d957e3277a63eea13fd1691c56dc7c7d5c7b107c8db529e26895c09e92b16a2913f22d5f18095494605e50a452c9580d0103bb89196e1e1c97f99a5214dd9d5f7d185aece07cdea2a60b44214f2912fbd1ea9f886ed9d8e1f3f10a115363f5fc94fc2b83a5efbfcc1ac9f2dd6fc010dd633df8c2d5cd7be01cd8c3a020c819647528f6b16f282c1a5f83b793cb255c24eacbd6f2da326ddae1fe6fee6c3b9758191a2420a27fdc38fd8c260d7f80244d92219be8b242da8b90422957e1de5db76819b41c936c8f283c238698a2153b9fe4078081604a309f284c03c3aa7640bf1480b77c7add84f74eb2524a8b13967e4c010fee1184a3b16956828f7c0e78e984c8d2c9ccf2018fee64b70f026ad14b2ae1aa4870dcaa67ed6f1d4a16732252565fbfc05d00ce8fb03b19915a0aa8d41073037cdb108091bfa9c13ad65fbdb02f61cc1fe4e7ba3ead608ee4939d7e5410f5a279cc99a45f265e50be22e7ade0eb245ac5b8f9158146ac6110ed99d904310363c0d74159a78cbf1d71b4ebbcf95cb05f1eeb8934e92158915d97a4e33d7f74f5320a1f2737c02b71290b7894f829fce5e40451f1d2a7ad4f7a7057eb264b945c3e9ae1583bf6530ac2976046f78839882e178129909915846ceed5e2f67d146f5027107cb2472697b464e4c6f5d722fccaea303ca5904e4854a717dfc426105a9e01d7e5f197893d8447ef6c3256be85f26d608f1579b86cfe1e729be8a0771e3b34852c3a176915f8e437741280e07e44b9620dc05893f146c4b6f6eaf5490c7e4bafaa5bd340ab2512b37f9acf29d31546eba2cbf5c78f4b482d70065d114eb91135006b0859814b5cbd1077e331860f3055bf232e512f6eb9cdb037fa325e40bc14908523228a7bc1ea10954e102d1d9cfcd90412a571270c6101de3ec48dbe420b01a6a9afaf15e4a34b4a927972ab9eabea98138d27a9fb99d0eb8dc27eddda7ebe8874244d124397f10d053592363b2defa3ddb4d8506ccb30a705bca83bd21578a0f7feb51c418c15c1a7c6df2857126840a3d73eeab99c56fa9032d7b240a9a01a7f98ab7d045531872bc63e09ba95daabfadbc8c19bff1c54a244abee4cf8eef39ad6e8d57973a12eaa82aaf974555023955e198788b682183a711753fd9ddd1c280298a803852329d340af854b49d6cf652487ffc3ed29a11a9fe332cf502caea9f3ddb5a0af5d148f97efc0f7f6fdc209ad9d8880c4d6cd4be92b568e605e2de4484a25931a57d25b2da1b563665b0383a6996abe26f5245015dfd026bc3be1ec236880d2f3fd31e35e0d2332c107a99853effad2031384ad0141296b864d361f08347dd2a29e278e25118c30da210a6e0ec48ec1c06360abcd69ce08666433aac59f986890709516eb9f958c1248f722f1733dd0c03b9768f5c4de244a13fea7080d81da5a09a459d53cb5e63322088f560c73020294ceaa1f913e5b52306ff10cd7505f64e7aaec7b832f9cdfd8f76955d05263168d6509e563fe19e657b71f2cc9989d69eaa836e7a066e22497117390b6e94936e7f4556aa21193cc68136e77a43af034d54c102fd6788da810ad69b6ea3001c38a5f64420955be4305916d539d137c92d08d2c0dfa2e9c8af8bae8d448e07d54007394ad29e525aa15e3bc17dc766060e9d3cb3df53ae3de89617731e5100c58f517bff7e5c4764c44463609fe778cf58eb07b9745c6711fffa860b487af1e59bd126967f4d30f4d807545a1940503211427e5587c5089781c38241128bfaa48ce535deb631509697dae57f9a2d397b23485eb49c0dd422fa52092c0776bb87a41d8107610466d9332c6975d21166fd588cb9df34a753bade3bbe39056eb139d551a72c030c39ffc5a4d687e7d0bca8312a6bc60e7efe1ec239763085d33489dec110600c9c02821f5c44d741757ea02b6f4d68e7a16401b3670761756784d4f0dc574f639d061e8c4e23acec42b16a5bbe33ef678105945f241179fbf8195a96068e7a2adb6bcb0d0e5702e4c4607074f9459556a2277d0af6018214bcc5f96b50fdac7ab939e64e3fa658eecb74e9d00550b3a6ebc024ecaa6bb87617c7fad7dee426a895709580db1631ed48077ad436a429ab7d8bcf425b173529b20fda44f283169f3898dbc217ecfd9aafaf1bdf066e22a09aa76aaa52be09d49443eea6531454f69603eee35534f550613121fc414920a3e9aa012b32d576decd19ca01cbfa489be24a2b926413c00f455aa6eddec2dc4c3984a87bca68d54bb45983578484c429aebd8ff112d150f75c80ddf4220e1a21bb96f3bb1da302021b00ad69d16e035f99a73cbdb94e388fd928299593027d05b21a70688ee82643c880b5357e55effab40b5fdab63c47df67b6fcb6f1738baac489483b9844ce9604e6a709313587ed2b838396ad606413c32cecc3401a1cfcd85b03bc169b5c292feea29e463872e66a434944a70939da067ac553c930bb38fed4794a250d6860e53ae37ff4cf881b4afd7e93cff8c5f66bbc5e77fc575a85781c311619f1578c2d66ffd3fda1291db28775778b05d3ac6748068d94a5c239fad9a4f874ba1acd0c7831b221c34be4ee6898ff934a2066e0dd7668b89990b741886bca1c6973310cabe0bc928b43c557da931fef5a48ffe8bf8afb823fb84f9bfcdc3c0fab1f88b69b18f7cac7bc58bc813448b595bac8aaea9a4e90fd0c3e468cc8dfa5680af016de138240a8b2561be6640e616172c1ce5b0388a41f1befc5c02ebe7eb8c5f64f8eafed00b15bd9a9790e21a9b5d33301cd7a46ae1065ea179514e2498f4425b7fb3aa30230f78cd452e0e777d97013757479b3f160c19448e3cf4d4444989c08718d91d3a5943e739d2ab10048abc141b573d205d53dcea0a44761a32cf38223cc47a0f13df83a67aed543bb8cccaa2a8012909728d6aadfeb912a05367d844ce1102a539559f1e0b5502150bad7a2b07a0b35ac894643b66a7e213bdb8c49ca92be32183733838a19db6fc09322ff2dea7ce5893ff9455ca9c10a41e6b13d575cda5e91ecf5a2eacc74a13233211ab237b22ab5eba1b512e88e4885184af4de9538b0837b67411abf518c1f9ac4efe8e92a2df362d9c994eea2179f43aea986b04b7aa20afa743d3263e324bdb4607eb8c3de361ad9e2a2f05c73418d013fb87b6d9a31c7daafd063091d4e2a69dd92ced528ca73dec16faddb4f9fb41d0f22f499de9a7cc31ca1b6d3adc9e7c15f65e9147132adfc9022e2c290edae9c3aacd8d6f165ce9960a71e40cbf84aa3ad85b2ce993cef49ea91c903c3cc456e4872693d7e75f1f3e71d6d65eb9e5bb5f6c584c508c357bc057b9aac85090f731a00d7a33bf67aa1085c2f52449938526923eb897634317d16eb7f0329bd465df3ee63d982546543823d9b980b323d4d59ed72d0fdf383d64e4f8529a73f463f361f61a90410c252dfac193c77d46ee07dac6ca86ae5bf258c34c16cfb03ce0423b897c9f63bac60f0e4ff145f2285dd20254aaefde2eebaea97d744d30108f38b2e19ccb7c807e3d37f350a6a2eaac63c60582d5643b086f46b0e02c5324ee3fe2fc40d9a48edd049f88ddf1e02117384b0c47249868739ee01109977fcdc2d199243a9d92758b6448674c9543704972ab7b2644b7e4df19d1d6efe29d5b6510da5197832717ccc784cbf7b12527ba9970565ad5609daea40889b5e19a866b9a5b5fb065e326a3c67b8c6f4827fc3cfc1d68a53c1848f96d84a6ee43e7ea83ba060c75e26e3ab709a822fa76abcdc934a5ef7fc0c6fac5cbdd8f9e3ffa9594637bcda9af116a56945cfebf1b5877a7e5f2193f2e3754e5f2bbc631c8cba26e788d72fcc53a813ee13a2e9ba79ab66c885f4cc1dd9b343d005c7c11bb58e6a8b6c1951addfcbe0a71b955c5d3201f89523e3f6971060682be1270aa5c21ac733cd2df33688c2669a3a6f3dd395c1f489154e871dff094a031c31d0163ac8277092f1a9226c55f79f69ff802830615808c5835e528b6785a17683c2d940218110b7b113167a527f71198adf5ff9a715ff37796bfa1160cd73a8e8c56b030267c3c0d488051ce5012565aea8501d5ee0913d3580ad5b7f52aafd8f60cf8c86fbf236e78b8e006541600ff9bbd353cd3f79affd0f6de9f4018c37afa15215dcc6b7cdde76ec2b7704359789b86a39546497f8555448ebb0489c6c06b09f50a458031ce8850f4705d7bce07d4c49b6bb67f9d60097bbd5a9f868885825726ec4005e066ed2ed06288a341c5b91e1c8e4a4f248276c51bb27bafcabc389221a3c130fc010ac930e3e7de5f1d10eeac91697a634ff8720c5a6b6dc5ebf813c2d5af255badc7f97cee5a014a4f0013b94b4de99420f66c5bce8e6e3eab9c5ddaab37a053ac6636b2a299de66ee7fa3bb56a76f64c2ed2844efcd22a129bbc571533521e0f6b086fabfb556c96207b1649355f277f44de1af80e03fffa84753727cb16a2db4fc60f52c2b422e67989e03a426dffded201f9faae68dddfd7fdd42dd6d5fc8c6fe139e73809f388d14c11a71ae2854d386de6979917e37122bcb72ae81972e3f6da8a54377a43cb6e343fda42a382e4400d8e05cdb503263270b2e2c063cdde3716429eecc949c9aea8bbd2d77873cd188b861a950c38e844920a91ad3fb19b0ec5aeae88a807446d1927fbe12d53c7e81529f16e89606998a5a163b4b2b9a5286b08d4ee74b149899f4774f332486446b1136416b6469dc8697fed93861dcad9280f85cb5a291c585a97d9beafa9790713a242a6f867a1a4c240941ba228157c38b8df665b98dd44ea619a25a90f0c1c4c3e4b4dc194836789a57453e702f1aaa1aee2098fd2421abdc6c25fadc71adc4cc3a270957f1a5a7d29bb890459a770bbee2863918e1db24561a2de9bee91cfb00b3b15ec598f13346f7f5f65e0c1e01d73bf536e36f854063a08555a4e54ce66f7fe0940b8d37427a84595cd57778ec10cde0bc34d479f318313bef6dd66c93a39929795e89a8214e24c58e63671d393722dc07a2bf606a9627236d7bad210900066547d04c0bfa46ca1d8b66575eef102f24c59bc6bb1fcdac542114880382b5aa4f9202ae39ca320ccbd9eaecbc162c071503862a5e42c5fba99d9db22177cf6b07bcfcbea0b6bc2a3cfb58396ee8c29db3b1ad07ef6b98fa41685249797a2a2591fe288bc1a7cc2162e492b9e0d124a923b33dcf6ba79c8affbf6a0081e15aaa5704ba77b338cc90308b94072e474d082f7c9517a2c779070a71e929a13fce2ba310fb549df52a742183e945ad659274c544a3f7b60d23ea4eb97ee3b6b0b13f26b84cbd3feabbbab2a98924636695dc78c82354a01fef69fa3c337391f366547429d0746a80c6bae4e2eefe8ae0de80fe96e9bfab4e4843000bcd3d765492818505031b83aee46bbbe575fb11dcd0cdb0f48dd2f72daf8099b1206e9e670b8436c8cda505760814c1185c441bb4d8f90d4b2d23f7780940be62c058b5933a30c6c0c6cbfcb142c7837eec6a7dc90aa237291167f34977f3b028bbe35c6cadcd5a9aabb98a3525b313b2adc5440592fa74d4698e87a0288a702a5ebea8dceb9d7974532d653adaaf84f3a2222d2b9dabae68791b2238ed4247002a01a121d847908b9b56571f4bfa7244f2762cfcb31ef488d25a88ae78a740186ee2c49423006f7110adbd76f04b7794814de6289ed3f79f8c9551fa9454a92a3c888246a20ec9d5553f096525beb7fd5c963614464f8db08fd06831bdc096bea5a4bf6887bfb8de8edf404f18085511f820ac65415a32b6592e8c9fda275ebe75755389d4e6381149f67dd9b2affb339c7b096ce98f8295df92d22c1e201c1cd8f48c9c85dba8c9abb36c3513b7570a962ac44f2db2c09c6bbb211430212f86a184abd743374c44eeccd0c0702998f5f329881588d153949b96b4e92f74ba2b2922625ba9b6cd3556f2fdf385abf59fe774b370c41b435fe04a9cf13e982591e63c5cae5f4db7f340b05ea0d9dc26991cded965780fc02b21043cc68e249a74459eb507a3e0f92cf97bf07e81e8e90296dc40bd62e59c336453cb4e2e9689c2616d7e69f42169325b43c50e381d7e4de5106145143ccc0c9fa5d5050f45249a9d3d3b8b04b33ecf89f483c3dfc52c04cc2e6de58e75ea891019bb8ffcf0e36143436494211394b13519e283cdc4baa99aa7c67fc4c1b62ac6c22ea180f402eca53de7a6b1d5eb6239cf327874a5f6a4dee981a41f84911c2f48b835ed30feaa7062a4398448a8d08b1ed2284df1323d314beb13809d00cbde8a331607341cf6199af04204009364cbeabaec1196c2a639b9011155272f00e1064faf0aede25da9a9133395b658ade384f2a7aa147f1f341ff683bf576b95416e113805849c10447acabea48b06978f2f19da6101471b9005b1ece599a7b3a9fe4e28bc8bd84e318bc5793bf69333babfdffc3c177a8077514c25e460f8a3340834ff9cd3eaef48bf2a4116ae551300e08b3292c17ff4503296f400df1930de1ec2596f9469f6fd22107692658a2dd364754435883d388f3b92701396e8922c7a4b59c38fb03477fc0508f76dd158038d8df1d53ba2945f61f63042a9e7f8f718f85956ff5e016873894fe446af53ad00d38c69192057090fad5186f3bc90715942f9e7ded6fb9a6291b8f4a80c5dd2dedcebb95c2b5e10d656459c29b12bccd77b6c3930c0e06071053dd8d2b35c1a3054a573e3bcb56c45c2774cb9346e289046273156866e556741af74bfd59b82a3769f4d93d143695079c035ab5890a6721bd25c89d8592cc998d4d472860dfb8f96ee232fea84fb4c36a5838753aebfd2c5904bb529527831cc4ff0ba3f2734d4980320288e58a6f9676c3a21fea8485de3987ac32f169e84985b96985b491f54752a48c1c4dd392baeff02375896c08a6a18ce7567986513265505049ab7e381bd58108d9a5f02bb629ea00b03c2ccd5216cd0778e33dbfb9916f9e7a0214a96104cc6e5a251380e0f607a73c63d045823a6313b29ef729c85213afd77bbe0daa4f8f282705cc317f186e25709026dd161644189fed39fb97299f7a709e659aec2470bb71d7aa2057da2055c5c9e4c891ef75c709950510a5c0e7617a767e7b949260a32c7228be3d981ab22f0792ee971d78b59c8ad083c3617ddaf853494242ae3cd5e0f89915c5ff633af1ca4412dc66dc49f1f93782362bc2d353bc7de6feadd529299e6eb6d1e66797fd93470075d2893f7759be0ba3ab2ab454509160f2385254d8fd8224d592e8347473dd29ccae11d5365f996c38b63437184cb3ab903a5a5c01fcc40fc06d631ab26485ed77397bdb3ce2b725c15ccb6a2bcce67ebcb05f5a2f87ad2064f104fed5e6af99f1570a88754c204a30c239b9e145c0210515aab1dd177caaa158fab4e77e34837401266c7dd31dd819a557113996d35457e7ea94ce3ca994068a534c3214ee78dd64a080414b93b225a516315ba6679cbd105a653699e0f0e10ba2bb6ae60df2e900362fce954f013df1e70e7cd5c2abbdb194d8a27fbd1cf078ae9d1933d8e097989b61c0ec552222bcc10a389ef6ebec1a80da0e094812dfd3ad722eb534f2a71239b817ca086f93827a0a68ab1f132bde3ede1dfa6dafcd33d8778f4cf933babf804b4ec797d3373480fb2d1202f459d0d01fe6fe064b02001189b8f9b477b2f47bd595f1469203bedb040412f5a4d439958b96361848eaf734ac6c4eea5aa59eab58297a78fa267a225fe235b19f423988a0e8fc6fd55ff56f6de3c70df605831f8109b34b4c1bdbeb22ba3579e6bc87827144c463fc5c261c602c5e53313b00528f637ea842e7c2d8e6a5045da574f15b9dbf8dc00125e326665d2746117b861d5a67999c1cad308e9a6a07ad0d6ea11253374890dbf6f118ce9f8728bdf1d171631363a0c6f6704c3ce6adc49785e8b8cd3a49947664384888773c6fab05de521d9837f9593d1a7d0966ac66ada85150312f3063afd5caf455e9fd659214de0eafb3c7c17351e59fecec083ed0ecd09b797cce2c8d2f288e03e7e0c4eb89426ec3c8057d04b4d375aaf715703e3b825650022d3d2046fdb459e39e3902d2de8a8b132116f6ed4c46e15e5141ea25a79317fe99ed574f1177d1b9788eadde9bc95d27a5624c71c6258e1674824f2dea53fd39acae752cbf88a34870db03beb4a66764266495500981f81a8efd1f5016ca4e6b344992e04f415579c26a7312a3df901ba054f92523222403dc247f8958a8a6b35228d1dd67d36358c7c71a9f2895c44d584e6f4572a951f1c0a0b8300eda4ac246bdeef301b1d2ab18ce1a86309a42bcad29679466169d4230cf8e5ba29488f0bf7a19a354478858819dbc3f15b8c9c93a22f4ccc2a1d069100e9e6d350c576755917f9bb16c4c7342ba1f2e220243c719fcce98aa744118b9b13856a0ae05175de5ac5cdd8ed34fb9fb336d37cf5e766b15a9796efd25f98255f7a37057a9c1f97aa312a4bf5a5c84c9eda34f069eeb951d1d4f60c6ee02624356b02b5cd880c7690dbc3cb752da8ad5b83c77d62d676ef918928c6574503928e832961d2d4da7b83ea404841f64d262dbc25213eaaeb639f029d38b57ae4a73f961e83a309aaf3d10b7c0077be8ed20a203995c8472d779f7f39433f33e134c4b1e7740504a1bfe6a50519c074e5e60cc6c26acb2b9174d8f7d5c0a581f7860e849d6f61ae67b53b0d9dfd9bc8efa07020d56e3b8d33cf9cf4bd922f3485e31ad5edd9d2c5ab0a8bbdbb93e6f1f0c71a105a613c6172d6d6da337b610fcf8f49d69ae61f5d9cd1119a0b3d028f4cbdb9888afb740e727aa6c1eac7b5137f69c102f982b7917185f5ffeaa94f3c0f1de9c377466d2b982043008bccaeb11f0f5dd373950e90e3a61e06eb7bdd7266eef8ab8441f1a0128893f1332dce2e9f98e496068cf695ae681a9e54b8794f24643ad9e9d8b1ee4dbe2d08f3f83a85d5df9555c53ac71a146cd569a10a8f1e3e2df436302c9e1d7d23b1314f9420b7f8583dc5530a76a6598d410200d777ec4f556027bb24af20187facb4c07310e6257b61f96c76f42948c0381bd41c31e515b555c83c5c1f025b24822832a6f07ddbb842a95ddc6fdcacfc2e6933299701f2f27ecc3a534940c426fce2862f416a7e08b29b87994cbad83a856d6819965b6c13413793f7a52a969e823b1133c29bd7fcff06e079f6c320808f56712df885ad99b32bf47aa5e458fd25501ceec41b926d86797176e0035efb9ff081eabb6f03384ce963795cf15672ef8c6282b189beaf8e2dd9c34d346e31a93d800d1cae61102003b66f3fd01e5f291295908b26515e9681c830be96b23949a9864db383dd84dcd81982664005dc913ad8a27f81a2b234ac85d417308e0a50f763ee659e3098d95a8c921335a04ca9ee4667c36fed6c22a9690de825edd512fb1b23fb5039dee72c63a774634b048f266aba5239d34c26cb62cf556aba751ede624090007afcbb4dc4a1dc96a5fa1df8c58153cbd719e85471429f3d68e81a3d24bf4f9999ba19832c44eca512903bd34c562a50e13becf82cb13c4d6bddf1a9000f1621e1a220edeb8865f838628a1ae7fe89c4bfe339273dc70262bd518a32c738eee9be325c4da348a30a8230f31af3ba07009fc36d9de01fde9f5a3cab6302519079459b79c0cd30ef40a0d0b580c15cfe2e97573bc469240253c44ad7df6aba4bf6a911c5e3340a30aa0533f4cc1534caea1ebe9e03bc3aa5277fad330a6e3807cdc7afd0a1774faa066877e9faa7c8a7f49020415dd343a47296f4cb75b0d1404f9be4e62b8b13cd8444113f78a564bf16adabd14a3c6aa7e214fcc4c18882373bc9742af83738452b57fc31d0306f27d61a1855149840a28a8ce8504b80bfa87b150b86f697f4d0d426017aedda96e76fdec2ad901e30c9b7923376a6d6c7cbefeb58cd909aab8df7780925a32ecc4612e755de881537566e40c8fb1efdc774b7d8c6b1748412ba2ed784d840280cee628300c9c45df7b6b9b22f0c9b1ccc89520eb56c986da726a312dd2a53b9faa929e73f6d1ee714fe358acd61198d8233dee44b4165bf77cefbbefa0655454dd566ac37e6d638e4b1596c2c0ead5fce73dd54dc3775bb365275b0d94b032405b6334c9aabceeb685210835a2e49d5290c467cd0b4dbf5a34f1c842d1a38247a578aa921d7302ca43027fb551ee7e5d8ddfd1e2ccd82d441cfeb1a1682af0535ab79879770973d3371e78589fd91baeb2d901f9d7ac1135c42be13e482dbfc99fa590d6e02adf43d54f9d65896aa331177a50b1c11f1435ecb9458ed8ef93163f34c49e8f8d53bb51c5627bdfa466139b3b3901c9872477acab5947105f040ebd8b3a9d28d7a8fe1309fb7f167e90d084770fe4de946d69ee888b58e5416bc47a44d82cb422082414eaa443043ea2f17f9c7ceebb616fcbd1ae46f45b5eea8331d5e8c1b2ca03ab8ea73967d41d978099f84189edb49996357b2b98db304fcc93596631e8e6def0b1df2f5850ccac96c6a531bea9597e09bf8794d7bf49726103375083b8f0e70b4a673ad89f6f8ba6cff91b932914bda29044e2c72ec7686506c815f6c009f9ff9f84f91598f741455bf23f848de55e10dd422186b7771f044ab06af597e73f0614fae75632c8157e4f093828c3d1e255cd953194885172e1177ff25ff6cb9ef703913b3ceb53b356eb0f4259c5cfd2a637365f9384c0c7c0dd46d50e68f3eb7b52d35a7a84a9915ced13d5496e930482215b3c82fb3120a6142afa6ee40617b29005233218e4191291e6aa5e99d192a1033c75865e61b7e6c0547fea5878800de55e03cd7afe9f882973451b5a2945031b38fc1ed470d6f04fe301531936921fc6f012b3581c6cd1bac22b8b9f04b8d7ed97edf5c2ea7eb7ba10e09c458ce4a12e8886cdd296446a7837bdad88deb899beaedcf7a23f2f27ed766e0aa5887feb237c9f2264db2cd4cd0e7de26ca433fddfec3760895dcf8bcc8c002e2cbb052632595b1a9b25b837acdb88f8ade8280a0bf78fa93293f6763e898bb3ebc796fd9700f23dbc390b8875640daed8eda6ff00808465d2b521a68c20ebb27c929138b58f3c4ba704474273f3751feb118047da9508a4abbbae4a358b195dd9a38118cd2f9968e4d7bf2aa57eaab7dc0f389e1baa5b9ecbdba07bd18ff435346e8ccbc92e09eaffbb41f14c7c94122ce0e1f3b4c0f0a94b4babde1b405a09623fac048386165662fa81ff8a40193078e023a0f59d47874f458b352690dedc8d8c3fa743c1877d7e481c931fdf5c1ae440b2182466d42daed6589bd78624da79b209bbe7cf4e7ff95982664a7d7138fc9556fdd60eb6b6e75b95367e91e48a3eb7858497a49cac1830cf64c9c0a7236fa47956613373b8b41991b27cd4d4c8b4661fd9da807b700641e2ae7b2c1ecf9408b5585d443bca00d7d5c309ee027c3991ee5b865ef4ece061e6b5def0634361112483a007e3ea9155989ad7ab68e0c72b5846875ccaea6c4b292cccd621f207bcb5ae51a44d3addb3b842a49649adf2b07defb19e9fcbcc7e72ed632782825393a495c3632d35a69f827cf0f844653a6e60d4124f1e35782d60103ec35ecdbd8ae295173635aa47fcabf690811f2953afcbed3946e0f3ee40183f5e9b1af84e176e208d992c57a665e8b493bbde3f5f9c6b4bba8e2b13221755e6c9e5dd6191aedb061fd31398f4e6a41e9aa3cc0797407445b6b3ffe811a81f01428066bf050f9a32937211c2877138a695a3917098a66d8ad272fb09dbd83cc2d36fe9de846381dc554b29a058aad81dbb802d62408396cd6522883c9e97c39f9cde23c2ea0b6562511042156dffe395b3b12d22f16d714fec9c5b9d7ae54b1ff5ba74189fce3db0ec191e5ba9b1834fa2f2e4347b21c74827d3c97f5f69e6422bbf8443e99250bb0f2075d5cdafdec79134b46abc04e4674e310e687ed58b37d1b92047f1e3a9987f90bc40e55c94dd6f34a5ab76fced865cb5f7217b594b51bf3d1e36a7a720d9ba0a999863cbd39a0a961e36af2ba8b896d278e4d3e48b57662b8679feb9d43fd7c871f9d32ad0328f233ab81d3df5520cffe8f00527cb1cbb67bbb589d69eaa49ad7dea4987ef477b4be5c1c63144038d6924c5020e9dd3cf40a2b2277de05937d3720cea30fca1efbb207f9007fe9baa611a5d2e6a51ec49129ac16029a6e49b157759be9b134ca6c3aa03b450502cc2266f9cf7ff190f5d04a51b185594e9160502f66568957b14d077fc64990d077a8c6ae8fec4101925bf6d72dbe70a791affde7f2bf8c4ccf532ae02296b2adb166a3acb42cb973e9104b1a79cecfca35d29bf61586999fedd76764f96fab87a2e371e2a9f4d59e0d2d289eb14f4ee1e31820fd67f307d27e2dad8e1a92b95f478e2cc01e15b76bd433a00738a00b66836d795d0a5072d8482bd647178c2dcc5f759ebc93a5907aaa499ca14fd4d6aad3faf7c07bd8ec9adf2e2a5b694cb275ac7dbccdf643029d35e401d94eeaba4f12f8988e7c0ac175ef24d7fa2b97d09a7db15ef34ffbd55bc7fc3fc15f24fecef1d2d87903fadaba57603837646bc88c9183a5ad7da34f6e9f2ee490d0a91df3df31fbf241a07b2d154ae68cd9987931431f388101cc9c45fe6abb20f4d1905c9c886db1b8566f87fc3363557e083b8108205278dc832583072d0d6f92ba69fd1e3906315cf0fbf544d8b85068792e0b414a489e7b90767e7457b31ee90b3b9ece7a6731c922f696e24f812359b4d471541fc586b4e53dc016262cf53b0c055b0782ba348931f200b189a5d6d67764e720677fc5d1705a8a2add465df5644e23f1a14c02670d50bb6d8c9255d49eacb8b9089673af88504c7920b7e4563bf73ba6625525d359f7c4820dc6efe94318c175cc0dade7948c2e4c1caebdb97ec7b8a9c5516d580af40ca1265ada1de3c1f44de126150fbebd8b2eea933d5f8e3308ae32ee6c208ac8f72a34a7ac3cbc60d78b3f615001b93a7080db1e5fd198546aabc66dfb879f36de6e262ae3c1f74102c84210873dffd222d9935141d3569c7146ffdab3c37d748db1cf9c5f50506da538154fe75206a795391d5ca5e1035e8586fc127594b63fc508f994e3ba428bff4fc600215d48a2f50e60f77143b6e061dcd2e9e30bfe03bb05480e979c0621e8aa2648ea902ffa2105a9952faa78519678a73be460f257972f3ffa8981d13c484fc38c7cd836a52ba926ae8e62c79507f290bb24d45966f74de350279f26bb9d3a9ab31480d115d9db887cdf1453b16b3c76b691a488766983cf23c61c35e47a4062ab72f2eba427142cc998152b2ccfee65cddf13e1aaf437c2e41fec863e023980cd5c851700c3717ab1d545b1a811da1fe0057b9f3890d3ec67cc31821a717f03de1b56b39f909f6cf3d283f9a266efcafdbe6e64d0a9489029cf3d7f8894c043a6fb35a4c1248654f272ab7625d476113709f42eaba06eb0050c1475214b19fa3ed0a66da549ce5b86bb261719b9951d9aaac4b8b34a2ce8dfcb847e480e85ef1f6ce7bdce7f3360ab580e33b942253076a7a366906f72a8b037d5b951659c9af42a10bfe379a6174f16daed9df5d8cb41cbc13ee64c066c0ce1f744496fa34606663fbf549c3fa6d167a1edc128b5ae2326329709111caa803d5558eb5ce89dc502d6015b83011047e2eb89e287d5132c8a6e6e7564c191112324c2bcf371b19ee3c3cb047d6b302bc011d49b9283f7c010ec9fcedd17d8ba505244190dfed7cb72e4fcf40ddc2105612c1bac1c9d579d91bf66ec885f2315e3fc967b1850fe4c1c6bc83469c33e6ac596cddccd4aaa082e52e05b66d1dc28e078113994cf4282d25f5ef6fca526ec14fed928a1060599c9258118ec497306b0eb3b699976f6298a2b986fe5ee70c01702f2da68f2ade789a9adbf82c358f39f73cbb750105dabbc34fa037692f75bbc655088447e111d5a1ee95905a144da5de0ca6d76c7c6a8e58b9ccdb580e3ce95cfe4fe2d5f561e6b8b4cf045c884347efbf114dc04ddcc08a8cc34dee7e469591a077870d50974aec23789888c67d1fa606db6e99d3ca828337aaede464118623514a32c439eb65b756ed3056908b8ade798dc1653b73dcee6c0e9da4fa1e52e959665d412b66a6d5813bb6a8b09dfd8996e2d719ed68c897821ada69ac859df33dc80b0ed74bc23593360572e049d9e3daca91bd279036a963b644f27a1afbb211ca75b42517681e1d26ae1c3b983886df15aca86a94084f31ae792b04470aca58dec461b20e5cc2caf8410f04fcf02415881485afafb7264695462ceeda5c0ed12eb3445551812ac25d5605321b2db844a1ff1fd1836d10b18f066e8faadaa4f5961bcc5b112a07af3b74425ed8cc983951839955910c19651d878f86cac3f199190cba1da0c8ae2be8b9e9e6f92e35efef7246464ca6889c70a271d8cc6fbf01e1e1ff491e026f19c614934ad6c25f6d8d4cccd596e6f9baca436fc9b957ac6e8c8cc538c10911b058b90a17a39ef6063c0dfa207a58324ee7f1bf5c9b5ff5220d4bb8a1ca628f3e47fb3c20b9b86f6e7981fc00905d5987e508123bff0f029ada3269c2f4b10eac55a693f93a892e6e71ee0fceff09b15c32cc6318046575998a81e1b539cb027373559053d429f61d0ae8d69c3c18dfd75fc7dfb8402639a1b6605d1bfab326ded02a0920dab9c51fc0f23de848c68a590a1eeff311ee511360a14b4a213050a4b264e1070525ea20460b3d87e4a6e100ecf91a41d6dd4a0e8ced62d1ec35de041dde83c7d661e1aa13fe5ab848de4bc98699747cb72c9c47b1babb1bde6b279c1d1e826451ff7c19b0c70fd7832938075fe6122c64c8308712746a355ea3d2b238d38b7a5b269de9822a394b5b548753d5506fc45cf650402b3308d89977e4a464abb0b7887d977b5d2df782ee655f53861d2abc7cdf3ee4e4343a772c1b9714ea6c5a11e8e0e733e001b606ab50da86ddfc16b438c59bd9e322fad20c373d435fc9d50be9bb63902175f6daacb4b9eb1be08fbea80e4d352cff804ef53faa3a5cb0214ac44dff2fe5d493fdb58ec7e55078d9099e1864670b67635e8d9db83c667a3a6d9f97e4b6f7f8b4e295450c337586a9d5ff356a9e090d3acb16f6a0efb4ea6ec4a1cebce777d6a9c52fddd0353376e5fd4b50e71cc5c11d7b9483d69b6f8222ede5063cff63041b10ffc7c5419649b43174f8be3b0768284a2fbb1e9e09aa421f19d85de38defcea2deb1ab12e12a918ab90519813a84ea0218064c97c64aec6acc3d6d593619e1b3576297a5473821195080589f59bf036d25ab9ea7cef331002cf3d6f2af4bb77b2711c01983fc4976955f1b1673bb9ccaf8657adff371d5fa11e876d5a8ffed4827fee2416fb42ee30df8342e39e4c043629aad25f3bc8cc76f0e4549783a538b6e19cfee59083a34daacd5d477320955e036172cd7d8445751568b3b3ed00b6e617a69dfc7a42d4ceb4076b9eeb0292f7deeefe60191673ba988bf9da53f59c1cc492d41b17ec3dd83109f60c9b90ff0bed095adaa5377755feaae2bdd97ff8991d69151ef925210a02d21f8cdcbeba58272df97d3c14763a3d836db3292a5d27e9385e310343f412fb049f51c055af074c1a1ac217ccf02cbfbd64d0669907bc879135d3ccd1e5d4eb645007d16f5e2bf85107bed2f5efaa805e77373a014b9b2d07b79f690e2fc9cd5f573465fdb4b4ba9b6c8d1818fe22e253e12354ab4f41bdb6af45f16c368b3f80ce799b4132ddb683bb19a830f2fedaeba370877521b912b8ca31421182b537fb078592545e3f92d79ffbec2f8a4d065c4e9efc520e36c5b0cdc258597a7ada265ed9e7a19017f82b8466127ad514703d5699d7c6540a8644e5183d52fca27ffa93d30a680667f055265061686f97210a00c3116a22554d9b01d2f93ebcdc4196c5887b3c49f3a6f23b46efc689162aa4d7fe376ee20176e3424546157882e3bce8629f85e55b03e026a41f56c7da48ceb8c63212dcf2c3cd750f8f00fa477053dd9c6fff70c0a0c2b91a3d4be68d6cb167873c2c2171100fa002d0dfea73c6e30d00e839e1b048800cbc7dce3a2ff359b9c7b0a5cc3b02e19cca42c474911d1ca085c618326212c460fd177df92cf5354cdc6cfc90d0c781c9d83d76b5c3b34f35bdde515c61ac7d1661abe6516ced9bd02911c196c743afc168bfef002506f33a1bfef29b3e2460b0ba2311594abf41e137901bab5c7c312cb008def3db5b22cb9020d906ebb462e83e6af3c3df72c56b161f43be7f6850978b5d2656d0f6191d0f7f3b73c2c13fd4d1abfc7111ff27a9d7c807b206665a653a755dcd29f0bb85d8d31fae7b29f71945b88ac737204aa6209d4878dabd1ec9fb684e5f02a20f08c10ae10179894b34780273d86689765c12b07c81399c73d29ef577c4f682be75c075af0c33df44c78c158062a1b5d9590de82c7b69ccb18a57b58c8a7e83961f78880fe7b732ad04a1e7ec97803d01fa11e4775e725835216b8ff206365009168e0f579a789a9420c24ee9b91add632ebf1b8ecebce6e22785fb45198457aef9ffd234e7def5cdd508011b833245d8d631b836c7ad509bdfc7ded2bd4514bf5bcf94245c65316ffa11f51b62f9691baa468b499b9976ca94e9b81e7069ea9aaea967fcbb2bc4542445acf583ee404cae00f93543a8c6dc0bf18f5d5da4d541c66d6b62b4415c9d5d9becaaaea4c66f41169d7bfb8445c3fd6289fb66ab45d9e8b01753e4215c2de9d7b3afeb78b4eeb1e6f43133f32873a4f26717f599c62e6fa55e9f3217e1291765ba6c02848513675a5c81caa23d655707350399707f2ef5041d687486877e2947b0bfc250498f996f3a28a1dd621638a935c67fd5236a1ae07da76356075b48d77a761f214af69b7550f774e85f89eea6ea9ab480b198d27533a7e5ef0fb286381ed818ccbb41b338bd56103138c17506446e33fe34134674a888a19080bcf6b8a91d777e7f4a7fa06bbcc8a3ec48f8126064cbafdc59424597bde6e93672ce9072f154e88753f38252384dc249acbc992654d138d48c3a48c78ee34533149cb124f579a19080dead21ebc455fbfc2128d148a2bdbdf2d71b0a972badbea68a97b53e85ceaa580469b68c3dd69f4fac5cf9fef5a021761a59f5478ec6946eb64e11d4e7509848c5f2f7e269e1fe3d219d166901a9d82409623f623d6bd078911e6e34af0b0e2057b98a4eb05ad764b4c36c3069b647b0f225188043297f12588d8fcf1f07bd938d521f3e890ef3e443954d2e04773ff03dfd508c4a2e4d5095ade5891f7d71bb327400bb2df34ee3a41237f06dbe755dcafea845b254b089b7e7613b7018ae94ef6ee9dc9560300b00f7c83a696ed997e0701dc0f64c56d8b4b10e31baf0e87dc4ed1c50c7d9f0073ef5c382121975deb237b0e4661d5f9cbfe6f3ac660df7ba11fc29d97341230984864574e2c62f996d63b0ec2a721af80ab195604a7942f42f94cbcbe7937647c05b3b6c808a7ed3d73f33e99a7793549f3768f81f311eb79838d5914880637946c499ff64cc04b98387163ee53834da3e82e68ed276eaf29e592d29237b435d7c9b38724c78341d8f9c962205bd2ef9594597339853c37bb7896ca34a24e934968f5a4179763af6f3e83d21095c27e613882e6ddc52228951c2d6a5061a334263d3ca9ac61ae7de68c8b49ba906d116575627b3fabf33383f3b0aea91935b512a8d2ddf8a73cd93d19dc3442f7ac9c6f9f0a4f3c8f09e08ae96edbee85cf82f969497284aa287763ff6aaa2a99a0873f22d270df266285eaf631d84e70db82bb251c2bf38a8e90f82dbcf93756da3629cfaa15620d2e30251395730b996ea9cf6ce38a28d50ef8747b89cc4136e78190c32d416f83ca3a045ec26ce957bcc5a6550ab04a5225d2ccd6f613a4f3798e473394e0ae2eeef471da168f9d0595d43b6012fccf2855ff01f8befcdb3bae251981475e2a5cc20ed0dbd0864389043b7938d8f14c581eeebec9da9a854805eb454e4f2c4d44111e84bf7c855c224e01de7af00abd6c25fd5e144bfcbe2a844a42f0172c703fd9276f20cb8258c413f5c35156e94b1d05b8d9d5f598913ac997cff233479d608f4367cd977c128e302620b196085e19c5e9430688c0a570d70db9e4e135ad90bdaadcbd5632c3f92bea17a35ec69f6d506922d0a01cade809f24b166be5f2cb942c3c33f28fb78427c8da53570de56a8bad0495b6518f43ad0ff76b48f70fdbbb043706c60d7c0b04b1f5c7de7b8e2d693bd8d57e3989e6337d6b2b72fead2a76b5ebe0661ffd0dace55c8f7817c6555186a15830bc29ae846599d04531da6b74028c53c69c3116aafb02a7fc4e6d8ceff0d61d3dc61a027e0fae91a46cecd65611a9e1d140ac82bcab4a6cfe26377c129823542d514f92a4e72db68a6b7b826d48fcda909cd93f0a66b1f5733979e1af3c50cac40d06672693a68ec9b0378d06a473b589d993e6d84e3237495d9817c4d7916dc4d5c5a82cc136f2423d2197959e6ba113e11daf6d8abebf562b2ac975564c8e7cbd379b3ed7ffb437bbbd3d5577624e5596a2e34aa5a63ef0d625542a9f0fe3bd42677fc47459ad99845fd64aee1fcf59dee781e8708492fdc5b7f3769acadfd0f9836b079f1bd5c916cdaecaf78ae67497a7aeb40d358ef49c4eda7a5ca1fa0b940456a6551335350233619e76f5147a0ffd5bab85c898c7df7e506f09ec8d2f58a9fa3eef9a5008bcccc41af5e04b66904bf203947585ade03c2bcef25a428a1b6c7a9e0c034d2d3c186a306c1d4d5ca22f8e7dbbf26e3502a53a9227b271b3a582cf2eb4116f8e2cf82962779373bbe8721a56defa527d36414a06564c14a21d6de036b5b4ddfa5b6f08add4a11e5dd7457f5198a53af33db2c487cc4ea1e04ed9971cdb26d7d6baabbd6995b4ffd33bf2082ec43067c666d420a9327c727e82d189e1c2b70a08fd5049e03b90fe44c52ad24dc568a328b2e1cf6a03a55e3f778ba440b7497b45bd36d601dd35947d3aa64c2a6fe4d0a10e314caa24f2fc8e3877e00667964b26f3433f521ff66499558c4bc3dfc1d567d875d86e3dedbb76465454b88f09a26eafd1600eaf47af7ef848e0ee417f2b75dca0f36eafead3a2ff269afaecf5586b2271b29024e4c93446548706896c951678d10d82ff035277161a7259cd02b41bd1f0ca1990efd7049ca081e17c897858267c29173954197c5ba4fd90df46343dd44dbbc1717a36bbe949618187c40168b2388955ef26c4c6559d2cce5fd39daba6dc9b176b260324b39d7fbef89a4bbb04017672cb342e63b6d9218caf2322cd46061bc780b0df013438dc4c248be7b2c6f9a6737a6ec8b747a0dbe339f81b7ff5c423c6cb16c0fdfcf661fc914ce5a9819a4d39c3c74eb02d751498d127b88c590ba8e7a1afa1d7d0f5c1b22d1963497d7f09ca60b93b0a731c5ba0e1f1b1a08a131b26c1d3e0f82c85d59cc63aad0a2f8f9c94c4e13d5f1063b7379dd9812e22863fc6776b86245d553131b32c683c6fe5745eb63c06cc82b5b1cb4270b4e5232696d644558ee8ca26b946cac3ff0c421f5463c4ce7ce1a4758c78b1d1de94bbe9669058f844f3cb1b6fc40c380b7a7ca0fc1c22f673f6f55f6bb8ca0d23d044322e40cbcb444e119196a116b942e00190d7b13d651792a26e1b1fad95c04e527a044d8179971fb0288e0701ec36730601bc4d6301cbd94dd526e6db2fe095d494d913551d34f6c2a988b11583f23eca6a4e7efce5e44d3710a007c5b0130e67829a866ff3e4e92635c33421ae278c12691cdf267263d472e92132ec7b8a4fbf9e1905717ca60301294fe586bf74ce1cd5970f354d4ae0534d619a02c988867058c31e477dd8269b229dc49d21ae28fbfea12c6148fea65f70a3b6487567143482ff0885e55eec54f012e58de231a9ed25560faca4269f6bde34faf16237d4364200b01f109096e0c178f6c9e22380c1155df36ba31398223195b4edce9e7676c2bb224b7e74a859dedce18296c357f3a9d631dcf145d33993f3db620a854fd698e2ad01e989ed5cd4c7cbd18b7fb814100678c18ccbe48e1ed9c3ceed03ce8d8c387bcf4b9fec9fa4f9995074816a4cb5f74e4479f974894333dae94c137942a1dc3f9eea9510d94c452a6172eac67b46f0ef4310e70129d5f3c0426460c84432d3c2924dbc500a1d8d4b16f8fd5988948bc4f503119b6bb16f5eefc2dbe6bfc02ecae93bf30a33c199755b6059e180fca252744aa417f03ba7b4a2ff009f2a233d5ce9a40327112c1b96d9b0a465ebacd691b4d2488375c1df2551f6000b374b57a137dc71e3ce3564eb04e7495f136291836d3642d3b028e2bb4ef71b4e1288a6769e6d5f1f3079ca534040251e9e28079e3dfebc79e04295bd1070f2df3663911135f2ecbe6e6cafc4376f8240950ea0ebe9f249b4ec681c64692fa0c114c1b9ff7d88cb8067f25246262ce9672c75e730ce62574c28098b63afec5a2aee87260d627efcd5ce2d3f8f509e9cffcc1fd080ea9022e9bbc2021887ed5527fc158fb97836dceeeb612cc5ab068532f6d1f1c9683aa3f41dc17c4ae8b748d394f759e4d09a3e702b4b1116d1f05f18b2e376600325af56591abad295ffac2057e8bbf6d38a641db29e2efd525fa864c1a861a3d179c371b65706acf78fe073530d33085749165b978558a72110465f97b9de68dbad8011033e8534c1b9d5bdfb82397e2869bbc3796ab22353a6c624552b190904477ea61a958b99ccfcbc1555fee8ab91ac0a9cd8c3168c77925f96ccfba1d5f048e5e5ecdf1dca9debda3e8e208eed93ff8ffa0f9ef9006aaf8f7edda6aa9e0eb2273807544ffd1d758285ff247405feb02d79d8e09162b2fc19dcd8eec59e10ffc6df2cd08f3300fb976a0b3e9fcaa75bd002c90692d0f6cb92fcbb877192b2c0068dcd534f3f31bc6147c3dd04a94190ca1bf59c25a904cd75ccd5cb3ffa31e27abd3e162b5e057d7d3321e8c89f67852aaf0d6dbb179bb38009131e8946a68faadd01788f27c6268fd5dd73685af157c40bb0a32a4bd29a0142020035903b0a5ce2bf4fadff0a0ddb1165a1d5badd99444098ae373070d01ebdfc86738ee40972f43c8c952d4b758abcb933a59e38ff18aab00f0a5d5601cf615fd92d86587b0579635618793129dd607dc8162dc69e87d77a9c60d601e2dbd9a458de69d96067856b482c7fd6104748886f9a12879192f54d6244c85c9a4c7125a2dd190a43279a4108b68dd1783b26557a59613394719a06f44dbdce5f7936daa2a99508b3232f8e808dc2debbcf6bc0741c2e604bf147f6b5a02d47d7aeb9adaffa0d948d96a7631a3cca157294040c2ca847c9a51404e59654a6d9d4c255f3f9da6997ecf8b4db24f81b01c485e4aa9ddee0da0dbe0b1da4b4ed3d5562aef63eb5038f4231e8b87d9004fbce5e79b50dc94f51d5e796f244b0071bd564c85861dfbb1126c7c3e9fb7afceff6f26b142ebac98ffa69d8c81b5beaa6bfb41701ad4a780687457273e3362186f5a67b578bb01c7948941f9ce00d2a4fe11da35460f46622881f0a07bde1ca0db926574e62484a911a78662fc242ebd17c2374365f1b146a71e2bf5c35afdfad805bd4eef9085c60fc74aa9934a917f5bdaa94c84511b13e081d8c4546f05f63b339a22eb34e5b908c0f8dd2ac959e4f22c6fefe71dbc33f078debcc36fc269a0d2174ea81cbafedeef5d91f075ad9b0bfcf95f848e08689beb1b6277f20acce687fc6ce604448f554486c02642ccff567684ef8627c3d0c6eb2c582bd74caeb1a7ca37da052d2f94d3e09fa329a80a884308fccb8b9e0afb557029709d25ece70b54f6ac0d66eba9042f104f711c54db20eb6d671f570be801f140280b3f4b34f8434cf92a28ba02480096a8355eaf8b8df23e1f7a6e8ae08214790d23aab2860e51c251a7e42cf45fbc42404980775a8750a6efa9f2f95878315c286b32ed91530953baf12dd537397e1c3c6324fc0c57db6d8545fb766b6e6ff65a83631f4b436a6e2b59e35467534138d79db3c8ec6cc2a4c34ec6a4574e92e2d60b3bb771f5b65b1297291185b923e8dd44b8b1464d525c41e59e18fe5e930da5dbc0a001523e9dcf29fa26758abe1530f432adeb8c995bc8c8f7d766d529872187fff7be5503fe367f538f7e11d71e4706057cb0dd00bfd8ab636d39f5a4977a361746b066793d11ef5358cd6eea50aa52ca13ee2a28492356554446c1b93d34cc6494a1b8c6e19c85c977f1cf556e773cbc8904c69ac21097d14efe3b2629a75bf745a0c13e95079e000360381d7ee01078f8d0a22c2639087d73f8374c417eefcdb482be0698f84cdb86f1d99285abb5c27b3aa41280ed9fafe56db825c938a097055c47163b069b7bd261fd60b1b1a7a3e6aaf80756ae137854bce1343caafaef810af4050e3f8f0ac6ce7ab8e15f4971498d861227b40ab9d0e77951127cb6510eac105e65a309669e3fc2a5833881a8b6d368b8116920ca6515f975b2a7bc39fe23625723a66dbfc51974ce1f50a8a9f6747bb8f7ebb646a30e2aeefefd7d349e98fa3f39b21c7568ab89190dd2c8b403e6f797868e99f4c1c25a890fa199cf48f61df62ba3c0b0eca40d04447c2cbf38a9219764576feca0c21cb2e08ad3a9c06b362b02496694f29764a4651e3bfc16bb02df6181fd6d93c5958df8055b1bd7ebd86067e96700b27e259ea71fa933672438faf5fc390adb256084453061301cadd9d17abd273c623482887cf8f53e456cceea81e92d0db55ffbd6c380ffef71ac70b9b56f9a0bd7fa3f897eb63a4855202e6fc71fa8511597cc1fca3c6e29e2276eaa90a2a1fba5f33f26587c48a4fb511848c6aabfe88312afe436ff8a4103217fe8136936eff5a7978f25ff1662f114b391b846263f16b9149a1b3aafba8de281f54ace6337928439e40e0883e9f803a68137e84aaa279cb6b9ebafd6708174eac4a74d11c0f9582d33aaf65c43c7ba461caa364c87486dd5cea8f715c45e263747be569d1bead8583b0a39c7e46f5bd5b2ff0abb55d6010a9afefe602b850d753f65ce4777551dd82b3dd8e417c20bc93c60f32c78d2d3a5aec481a1e9bd7ed494358e6cc2c922e6e664ecd75b10722cdeecb39e84d881a32be5971ddf56964d9295e38d920e47558980231056cb3f0a2de3c2a64e884d27723a252eb1f6b254c6f90c2f8e26d19738753ee92e33a2e90776c97715539d8ffb8f6845c280f79e74c9c07e68f0675879e293997323d05a0f7728b37f5e7b15b1947045b4f4cbf6cb60a5d1b75a97a290d48b70d7a68393147c720b4f1b15fd66379f266f325a2052ffdaec307d4f9bb17525656e91771b0f84ecb6f5403e565d982deee5f012ce370d6e2011f164c9f97471f43ad9ee886b3f11b2771aeb4ce874a7f4130327a58606e631c1710eee7df8165029c62d4dc50710d24174b809a2b46c7cec3b10525b87bb16fb256a6de995cedcd15bfd905d434ca7e0056122c8892f9836df08ad9d68d97efcf0f74672fbe4009d902b21e168db2fc1e5499aa66878618f928eeee898222f90d2199e23a9bd4222ff086b4f18085a6570f67232f4237f0c2fe5f39561e92bf8ab9ad2c0584cb7dcbfe98814c6d256b60f92cc35e0dffb38a99493191478b302b72429c3789bc08e02a85ea8456abc5e7a6c96afb3af6c6682e80129b08a08d49bc803346d491cefcf21c64419b978565675cf48486d678cdb6d4556efd10c2f597aaa651f07427915b6cb84ccd8930aa5c45601de4249304f79bb164771ab462292a3ccc31a127bbeccfafec795c2ca02124c769c304d0f2da1ac65de831362ec4c9c7ba3dcd3b9264cba2cfcf5c8668e3f00646588f2848f42f1742893c2dda549e103253b8448a423b9307aacac2541cb7545ee74b3e707f9a51dd2235f53f70c67bc463974693fc26a4e91a7b7809a5e7133316e0b564c2bf002f42663f2fe7e62b13a6a3795f09e932450834a4cc6401a6567c7cdad667ed29807859653ad6b71beda79e200e6b1e5fc58137f38cfe12af4e921cca7615e1181f19e59514a03539539a3993d63f7acc2d0dd9ad30253b1c687f5cc51567927f08fc0bfae2f5a30b3ab3a6fcbc6f28b72d09d517867cb5fc0190ed26009434a0ca0b07997f6e77486412392b92227481529c2d7d107236d9d600caf15fd737e78792690422c093747d259ccad9e9fa6977aecc4dfe25b051982e3efadf984bc7d1351ee41217d3044656851ed8a6758119674c6a382144a41cd590f9b93352584034fbc488ee946a6fdf2dc40a510f74ce4e421e39613e31ac88bfdf9230a46cea8b689729855a4ec8a2e21ce912f11a3117a07a674c41ef6ea68f604fdc86da8850e485536ad5fa306648540f3de467a90aab45e06b5a217d835a87961fd107eda5515681640b516967234dbde3976fe9b9966e28b16ac965007aa2deb753e87f379d688ee44cf04dd4a7b4ea2e2f7e044a31c9e8440e092a14c424b9ac623003ee1a1aa8b4f1e908c71776af27eeb33bad52ab1412bad23c7437df0bbc6a11c26e5f9f60fdf41f49f821509a33694b270739cd7e8f639a30c7f932a340ff129f351d7eb8cd480bfa6a95fc9f937c5080374664e2462e7368468a0877c82569053e683408ef1d192f2291c7686325eeba5016a1b575760b749b9a8b8d5c1e7a60ed9449b395e74aa7cd6bb312dddd713d3fa4663f05f3a5a2703f1fdbfb35f8b5e53d5615e2918b1dd9c98c1b7", + "0x4e7a3e46b68dc1b093e7eac2de62df5e0d90c714236243925dd6e7a34a2731e37b9e16f4fcc866cb2fce2b453b1281172da54e9c1dcb11b1ddf9a8f82dcdb62a1b033727213ad9197184ae16c6ef192e9641b6714c5290e23e5fb3705f4e0e16791a3a74ab1616d835d5be87c22c68829e2dddf879cb5905767f765635598a2094192ecec43242102a6f3ebfb7731cdc8eeb82f3506fb9dc8fa0518889e5479b9d1aff2abbb1d9c4530b863fef4c4e452182213de113556626e4d0f6376134a67d0f131d8146f5018ae3d4eefa9268040917460b20f5b548eda50d6fa1ecfc0d4c8481082d04c7ecf878c8082af77f066a597215650df281292a4cb42ca7f8bcdb31913d79beb0ea9faa96d3189645f75dbcd09eedfdf763349c3075c10b605d2b60650d42fa9503d01b04d11d9c07f86f81459b57873f5afc5c251a4c5d6383f41805e10b6e4bb5b5ea5068daf971e31f93a6102792e0ea82a1ccc34123f2351f2a26767b124688c8b695b3b1280150632f246446c752e35d61971112b645f54cf865a8dac2ebd75af74a3049ff580f24622c7b80b857a73495db71badb806e4d21da98986d276b0da2f48f0d96f1bcbd4f53760499d12647c503ce3574f6e3a9ee2299c7d422ac5a212ccbae3bcc0a804f0a54e8858815e7e7b15e0536e9f11a9869fa9cde47880d9b82e69d7922df31d62ff8a35e209efa8fef54af7ad6bf0f56f4c3f275eb43c386f58d922841028930c2ec912dc1ef786bc5ce3c1b9ede2b443a60c6fa43d77394efc808950110b40d3faf732034b4f011d43eb95c190cc413a182bc428dbce2e20f8ebeb3929cd3d97985ec1077b20423c807b7ecf2d4658e4ee399297c712d8631eb376684007be8f2a3059d08a0e8b4c38dcbedd1954ce8b7f1c6b16350435e6dcb3bcf460c356ff9e6a9cf6e69e71217690f142aadede2d849d4b4adcf693d102254b78ff7fc4f227f2a59ba08decbe2b69fd142c76dbf3c8bf22389a8b45ebf665201583dc2b3ddb8ba570857bf107dbd1d93470e2701432c79d8efdf922c45dcc72e63b9eb743576f3af44241063b43b2e0c73b02b004a0761f4652f4257c0108cf48248cf59fe0850f5ae46699349c3fb93a79eba4ba9aac9d214d5573b2f633adf08613c1f06dbb1e2e341fa0f3b70b191069ecbdca5e7738823653998911fb2071895f35208b9db626d9b0283bb2701f958c78a18cab745f46ed0a3961af096d7c8b427fe73a4f6281bf159c1ed4aa1d65a57d3a24b53c95f0377261f2df7cddd505201204cc70dd9a56be708c072c8ec3b43bb00693eadaff9c6a5801ce303b3a0be1ef8ac8491c05e362a8f805bb65fe75c080be92644249a9ad766ebb126ee29310f21c0a7d71eee3ab55f05a02a72e4f2b43026a604aae642c92083a8ea28bfb1d77a296295fd617eab8a8145ea51e2bf6e894f5f06baeeed59371d364614c08771e5362269990f2348a361623ff440ae18b8c97c89ca8ee2bc53d919f59c036648cb5c48525a0941588ec95b7602296c4a9dd942704f7dddf875b925f71f3247bd7bc96a355c2b7dbea08d4e60d6040dced90249bf4ac7b56b7b7e670daf81f2a555192559870085ef0dc139d2866cfd2221c4ee216d1e5142f51e554065066dc8c17569eb38025c74a6336a2604d75ef95b9bcb65c69ada034fd2d75acb083063fda8e77b7bf4b46ce67877b944a278ba9a7b2dfd05d2200445eab56b4c14d9a7b4f0657dcf6068075452dc6b81444cffd71e347d4b66faf1aaf4e846baaf2c386d99d6ca8371770c2e97d52282b882188bddba22876e924a82dfe201e2f1b0aec0ac8c1c9eaff0546af3bb47fa76d9860af60d496a5a88e26019a2793064d917673c319553657a4c04187e47f58eed80be6d5bf3e733e16127e8b9cb66e5b9731114023911a73c779b363a1353afc37123f6ea474560e2c3077021dc5e7e7a3714dc716f144563ea61e236a05433b4779c7f6b10ba4210d7db24b1d3df5a52cbe1f67884932776cf5ab0a468388472e61564103ba162b5c2cb9fb3998258a40c55a3c52876d754e2e830a3e8e661bfc37753cb5b39f788794413d460a6ddf3cacb2d81ee9d35b8f7ac1cfd20afe4f54ae86bab25f5fa454a3ed7011975eacc4b113a8fd0bea2bb72b4cef016134a0b69de274df45b284654d3c795fcf79566c7187003aac71915cdf7652353a4dec942040c52467a827e0a267023043c69bbe9871509badafe511629288e64f09607ade93e0a3ce24a8db3973be570864a0f54115e9f27d6a4a46ed2ffce5a7d2959b38674d51e3c87e3ed4e27a04499ea5e1c9f7c5c776ccb8c8bc42fc64ad6bb4a148ed743d5667876260eae30c607e600494dbfe016cd97eb37d595d4cea77477c28fdaaa7028a5cf225ae8af019b0cd5583440c2d6dcc9e1ceed165f83ec84f164eb1ab5a06e5ac478f01a4545c680bab903f5806afe2f2dc4690e7589297a4cd492bf6f3b1fc397158e2d45a52ba1a9526c2782e96a9b981dc5da9806bbeb43a19cfd7abc78f9ccb705c4367730eebafa5aa029521ad777f39ae1b2a330d5688ea6ac4ec102b47872a6f3aed8a15d98ff0210e6023c6317f4f3a4280dba2f78110815f78c0e70742ff2cebf2669ce52a1b87c6d3f3ff77de2e4c3ea75a39cfdd5d4614983c73b6f28a441df84508e59949bc275b16b0cdc117d000e11e232ad38af6052b1d3817a6e07f7c159d7235e82116eece309f38beb04a52c99b0c16fce6a79ad4284785b639d44a3d116ce4287107b10c71b34936f8ce25eca3b1a75dc7e07850b96169c401453d85ab66cceb339c3d72fa5412caec90212e75e32c0de487f38ff81af10908dff5929f0c1c48cc324b95584b7fd4e47876733703289011f0908bb5d9949b3342f26b3a5402e8934ac4b54daae4a07e38f0e781dc081a9327cb0fb4b7e325c258ff63484d80e98ed4a2aac03e695289c22bb83581880ed42e395227d3bf314a2facf2b3972879984e432c220bfe712b22e78a553ca55161ff5f5b7bf6f00b59a015bdcb60d62e0eebc865d2e5725bc126512338e259f24f92a9fe2a01b2cef8249cbcd88b454b77b91a92aae37ad2e1940c307f1ac2849885ed4f31cf570c678c2584938b2dbd99ee6bb3adf64bc069cd414fefa20206bfb1958dcdf502512bbeaf2e0c0c467f98a54147f86caf4f64b46b078fdf2a6a6bb0316b215c33cfd6f9ae3e51437c1399cdc6a524749bc4362f969db683384c8fe0f842fcbd94189bb118ceeb117edb3929160f08be611489fdb6710294da4d42962a033de92bb082643445845fd95f49c1c6df8fde0e4f1985eaf051220cd800308643f7e6fc4a25294a9c1600bf67b32e922ee8eabef4159fdc1295c4c6db6b6f89df83c47b3d2058f578c3e29843fbe014abc101197cc4c6730f230c1b516a5016daaae3cd8e97b3c1a60969c322619e7882c5e02543d81aa355a47e03c73098bfac29a757a8a0f2527a9817ae18fd4ec316f13d1bcd233f77c5e90c842526a5eab53bc78752c302ecf1670a0c3c954e45299d6d858dbafd62d7ef3994e6edcd8b69212530f9ca8d068192c27d999bb20542230d9073e7def3b411bc444371533f85ac1e6e2783561e76aef814eb8a21d4b66f381ecf6deb0c0ae51b2464d4dc9d8a9810504b46b65b18587bb8353a652a42637f4778fa17fd6d36c66a40af38c6521a238d519ef2ecd278a83bb8abffdee05de396aac393e0641cbd4e8f62c0afd88975861c1f83668d599fdf5f16eee640daff55982324ad98e601392502cab86481d566d9d2df41255ba844711b79b3f27fecd9b5aec488bd2d1ad568c4f23cff0e5d6e0efc424c832b5d40fe8e60e0ba6e4533012ab5d282aa2b0f1cf142c79b1db8796d0fec6fb3c8e4bd265346deebd0969b59df4a29d396f3d4f75dcfdece1f0461fabea397b06083514ed262a5104fb65367e3f0163a23dba9b8c7b2ed47c808685c07d40dd67385292d9d12c5bf714831c51f1bc6e8fd5ed27569edffa9e3e8ca8a2f9e09df92c0f53f6de718d77fb456f43ad55142d2f9b4ccbfa66e20ab96d59b9a25ac79d9f18970369f41747a2f50a95f290492def6d781553daeca667ecfdc1c6ab36f5ba436e36a6e7a090e556711d0bca8d45f3495b124829ccfd4c931f4913621fe9eef9c2b8628be85db2335fc449e158adee4fb2d5fbaecabb26b8f7353caf6f23d59a02244b251420bf6e5f09996488a316299024846596352e42bb3df2fb1a922586250c07e9712bd4a52a7c59cbbae7de6b1dfc2c2573df6858236c29731eebbabfbd7423d93638a4a4c04490dfe93fc62bb5098b991bd3885972a1af3f4823a75fdf55cdea0ee2342acf9a65aedef53206f22f5ed623515dbffe11137667f657402a1b5cf65629d7c2274cf3994a545f3eb80444b66339d3cf1fc3d8e48f64cb9cf828ac3e7ff2afb8bc3b63666a2e56ba89533a6dca93853d321303458a2ed490ba4f49996485d05cdbdd5d5c1959fff2789af1f8ff07de194d2fe8845e5d6eadd2596981650ddf2a20bbc8da232d3c29e08cef586465c5ba299d582723bc2313dc83b69f971c4f89eff4d4f1790814729a9181b84f1fe475b3b315f1e15980c41efee990c9242a2814b95de19bcaf06bdc417ff4f1ca7253ae1e985e6f0897221b6e36f5ebfe674082cf96943b59ebaef2eddc26d3a19a1ae65c269c87e095c5816c82121467d73525100b75971e284a1c160e22c202665961413bfa60bc6a23a1047393897e965d0beaea2e848743e06ff33706f1ee404a26763c1829bb77b64e38462d38481beb39deaa407483ce343af0335a1b8d09b939f5803f8fc05796957b7d366d2dcc45f102f26f0d09db3c8d2a6252d4a8b049a28fa7a893f2b2b400365878007828493080d87d05919804c7f34b2f872d6ac264663da5503d23302b461ec5e6da8031d31576b4109900fcaf5416de46af6d3ba073b4e757d0286f5d7c3a1db4e73f37c192c027a621937c7086c44445e446562b01aa638b9d2ef5611c256dc297c21a3a5fbac33e2f239a05784ae4ad25b6de55307d800edd9e23695e1e2e89c7c0227bf3f0817d4cb3900d4d6fbaaaf12077bc73359809890759c7f1b87331b6454fa15d4b6060066261bcdb7f8d8d6a92326e12b9fc7ee24e2095733430998838c3e4be28f3326c6670892cd10b73d64b3efea953fd5de9f761bdfaa7b9c7c674a607ccceac7c951c36af001369381fe5fc7da78ca655e776c9d18efcd94cdc7202195128348e192255e64a72634754fd34c6d04d36a6e795d011acb7f3229a805b7aaad364a29682a7ddaf8bda8f267b35e8bc597e5537e9226dc5950574b489086d4981d2c02cf414d10a2e62016c5d111a5512afb7eb534beebcf4961042708b4a34a2e9b002244449ebec7afa9f1b55f35d8f44335a9cdde66c0ed77e41f56bf183660756bf12797e13835a6e5e96d759e60410849f108e6a200379470f3157dee50b23be11813211f9046ef5ec978810d8799786193be92219b4168df39b85df1c7ce2052a6c58cb48e3ff97ade45e746ece45c2eba69d490c6e240a93a6a94e7c3b34f63d9a0de55fbdabe5addbc795b912257e7db489a3a163bf487be2e84370a7c8e8063776d8cf038ad719a73a871c2d1d29f97dffaaf5f7e0469dbaa142f68404123f800528e16a3d0ec3fcd06bced0f043cfcbf0b319d9c0c0ccbbff761edf46c82c82249b0e2d4c38a26e078b5bc472c83119f5b890ea6f0a3f6da0b98e359cc110e4435d841d6fd0504b07712378ad3e97a85bacd5fff5b815b9ca3401fb388ab5c4aa1ba88ac0ee8a0e1ceddaecf64d3da8bb9cd3667c5acbe4fab4c36355a7e9a694b68ef0f49ab461369206ea2a9da066b4b86b424f24c719c564378444f3fb6d705a837b07e952ac9e37858485420597cf41f1b4bfccd17d50f251bfe0c0426a52de845a042d903439da04f5d7d8f2a5b7caafda30be94dbece21d85a73d9675eb14c4e1dabdbbcffd2888be118db31d34b16194d96f22db842736611e5bd51f97552a7d6112c62285f9e924581cd61a9ea0b82105f86dcaeeda4f595b4160eb52e3d072f57ec672cddb52f325c8afd0be0dd78bdcdacff55d71ae9bcaed9b99b0ff8575607d76059906c3922dbbd51d4a09d9df02b083907686ac7d8b2a708715684c07ee33b41108e08f70f736a330677a49398e78292dc6e536cafe7bcd19d9b3dbabdae302405078deb47627b83bf9cea89c276646c6a25f4f6060fb213a148a1deb860206bbb3662c490e67773a9a73eaa15b63c156b27a8c218656e3e233eeb12318040ad0199bc82ec01288c579f1f9ee65e468029d1896301e560bbca0f2682d71497d1febe0562581cb55f791643182016769ceabb2ac7f065d97c70df9cacbac36705d13024ea1eaa68e60e418e2cc078fd9e955e91eaf974c081e404892f0833219a24ab37a12c5dea60cb181d29de8fc3186febfd33bfd1ae2ba61272ece4932534a08b57c7a24045396d969b8db44d2cb3f6504c4fdf4312f5931df40ba67811c68c1de46531198124ce230c20f365869168b0f7ef68f5dfd5fa1f91fe082a617c3541ca0c5f770a064432410c00c62aff50d44a46fceabdbdeb7d857c3b5a30869c6bfa52f57418243fc88369a8fd6a4cd3c6c6b69311f609ac145259287525aceaceb46fb6be97ecd9ab5be6d0541353b66601d599b7fa5282aeafb478b479c7ef144c5c4cdfa20cd28b1a4f6936ab2c0232c97371ae6c51d8bbb02a0d07cff5cc78c3cd13bfa3667b127d877bdc34f8ea33fcadf74d96448c44493d790fdda74f83d14d51179549f5029c02507d5a5da32183dbd95f225fe2e5ebd40c1f0275aedca8e0a1f1551ecfe14b36012052ecb8a3189ca2c0933783e57c3a475ab031a10a43e98d9cac8dc8a447fbfb2c1cceca1ffdcdf22dab93f1fcc9b763ce731bb6cc08a4728cb98cb728be3e9ca80423c04277751b8f26aaa27626fd5ded3984eb1fc2f8b3c3365a4905e1643fa1cb9bef32730de686cfa662b6e205f2e7fc18fef46bdd5369a15b8c9863e6465c93daad336f1edeeaea2190418bed2caf85a15c23716408f6553a13495fa6623373e1ea00a372000ffa008e1e6118309abb511b76bf37f7c3a0f3967ebd9ff198e106c7400932a9d19b5d82fc21499689d49a322aa5f2ed3affb9ade0ee168528a6bef61112c070f7da559305b742638b830b5baa8395e1799103ab32a091c1166eb7619be3c73eb49ba6285a3150863aca86f9e05b782bae007050b17be5d3a38913c29428fbdbad742bf546d8d9881d59238abe3dea5bfece19afbf96297cd15406ed11607e518320c2bc891a732a047f643416f0bef3ff6608fce99c88181944146b10b1a076cb4ef5e0103e283633d7db4d9736d7989918bbfd9c4ba1fcb43bfb3ce01521e8ae3442dd3fef0ae7446f54b1015887ad2e12eb65dc77388d9504c93baa3cc10e87567aed12f373e5fe9d1ab02b0b3b8ba9857201cc4258250d15a77d34bba0e2c34397d8bea53e64ae7a72527e49b5115efda5198e875eccb1fc300e9a7e1403dfda103fedc92183bf3b01bfdc4bed0b439cfd933e2fafa754c42c7c18f1cc72ac206d796767665be794bf13840f195339a0f2799adc13f3ae3f8d145f2d70684bfd724540737af37097a8b4dd6db8bf290ba3c26d6cc855f30e89f4fb39449fc92032fd6143f2c2b06636175dd772ec8e2b376497f8e7b92bb7ac065d26aab730d81d873acac39399ad01c9da996e1195a225e021e712dabe8fcfbde388059bfcaca41a489d1fdb037b0cad11d5b975968f18df89c5050b78c1c0c331c9720cba95a754fc0b5dae49e949b145ebdc6219250a7dac1fd5b13cd6fe479f77e4bee383224d83a92b0aa0d3234b69208b269dd3256f70ebc759ccdee8a5bbd9bd18d0b5972f0c357f0b124e68d9bf05cfd8b2ecd654208c62a458a7480f20969d565b756d38b84277e99192c670e842c95199e1ee537b7c8fa96b741b962caf47214e9b8f67fd6d863efff2744fb8dc1e4b256635b4f8561b2eaac7a2527065fdebf988ec4a60c7553844e1effbe9db55c61779f0cf108a795612aa6c957345ed2f1e8ef699359bdf9bc49f9e8e5f378492bcc194e1f2da35ae94332676acdbc4e02a374752c4ea120cba6c8797e24cff9dbebddea4530d0f3d4d9eeb42f98d7a6ab95b903bd81c9a1f88e3c91e16150353a6f3998e152a02ad4ce8f270f871fe0a153e0fb4ed510296e252c471253e6022783427af1b2f709549a2b4ac3d89a6047f10d5c606c04c71fd5124c17db53bf5e0c4db864bdae1892edc0a6189663edd869eb9545e56753c9f78cd9efc0a983d6f07621f6d21164ece0ad3e717426f9aa4525fbca93b19f24dadb3206bad0dbefdf1ce1273a615a388636930e9ba64252f4ee39e7808b79c3bc67b541f304cdfc1f6343513c53752acc043e64c738c3d10e7ae990ba557d373438791ad7542cce7cb089f05790b41856a319f5d245ed275f8226090fa1b871367f8150792445467031cfb2c633e8a14a03fa7cabcc3ad51bc43f2da7b51c84360b7d28c3accf290353fde3314ecb0323f8f46864dd0b363f8172a1130dc12eebd51650357637a9b14ad0385465ee2934ba3ae0261fd5c943feb6e648d8f5e2bf75d6cbd6e4315cd48ceb2474f171bf01667edf6b4b9ec1d7039dadb67626267ba99090b2a7a4a9ab56fe2e16de90cd6a7aee281aaed06f4b5f38f81e008c7e58d567aa1749dcd53026f8f4020dfbb0665dbd0ad8ab557397621ddd11c0af53af7e5c13aaa512313d3f4dd2c0d3ff6f58d5393e1f3705b8d8616dfdfab4bd6c43ce6d9b346945206d284b5aed7888bbf58e7761675b64a60935f3ff7d10a7f686144a84169b5cfa612d7d1877b9e2245e9a87cd09b6b31c91bc4fa377b9143c69408fb21911a1f3aadc204994475b5246ec40cb57f94d0bf957363959ca2979c86b9b9678f78291aa8aaa7b7746a83c0adc9868ba6856cebf6bb99cbc131675404ded2edd4db06043cc59512fcf23bf10a68b709960b79ec0e0a6f5fe9578cbdac514c62c677be7f3feddc9d26ed6042aea944735cb70b420a5f4da6807920f1955334e066b910e4fbf0ad017a4519c792db8ae95ad36f407293da6ea544733eca40c7cf3d6007a6b739cf8b5665a3c0c5719af2d9b5f42ade44b0abc1bf4db6ffaa6036ff88f8cf9c00ca5839c638370342530db3f23d567ccb93e3e2e0d8fabc77b980c73630f2d1177fc0fa3d83b89f349fa76d6282088e09952581393e02e1c389341c0f4b78c168d6c98cc37ef56aa3f2840b16533b4a135782586540d19300d5f87a9580607429ba49cdafcd1a5cfe0480cb74ba76494d95b35f500abffdc9010d3d0d535614c9d3c00885b5264c092b34be24770e8c1b1d7ce020b5833202ec8a727cb3932af627a9d01cad3e53d3ed19fbe90330737b6969d055b95149c25c25b76e6002129c3e668665b617ce9d75bf7ed44f7f286a778f388d13386171e3682d9aa780a3fe3a4c94cea60a3cc78d6e2a5d947bb431bc94ec999ff0dfc4468ce3f470b09b888bd963b13916cd306c01930d92cdd87989b263b4c93dfd8fe8d2eecbc91141e7fd03d30ffdbff4f6d42f76bf186dc70c4de1605e17ce0de27684ff755f416400cdef31bfec8c57265600b4752b10c9f9ef86581721eb063e4b433cd6bf3deb3741a7562f19643d5cee3bb4c5c80cfb9cdfd85becff4e06101db0cac7dd24f4c90fdc45d8649c7f5978e56119ff79ae7fbd5a3ffde2ddcf8e4700c2997df89a76e0094d84033c1b13650e4c52751075543df8e3ad0b85be90e8178ab06118da40bbb6c9455c60fceb08183a91f3000b6aae2439a1f3a021929aee6ed633304e413548ec554b69173346a0d94ba18f5beb16b2efe678d5b14a8982480e6617c50b9746695a4b409ad408e516e75878ea7edd4c37705bf7b88fb27fe460cc349939732f1a0cb51beec5d8b3fb5a441feadb59b73ce87a785c54e99c4f88fc3bf9ba8a1e1768bcd47846682eefb52b97a92dfcc08fbf4929d44d97533a2af49301c49005a1dcbdfac2e5f528f656f9ed61b8c9c80afdb9d2f1dbfd21222c39a5a0d4daf268d51c44684df25fd2e4cf76e90037b0acb35b2fc8f817cc0ac22ed8f282468e3315013e4880a15ce226d5adb40a2385ee71a4e147cffef9b485de0d86e0e632e6cbd30491d17de7b23a623e5fbd40ad5cc427ebcea05432b53bf55d4a1605f11127f5c7c8c68f67aa889be4b962584bafa57b64c83705eb1fa2863ddc9d8bf14eb64ad42013776dc392760c56b57d11a231a712b16da2bd8c2345a43b0022d0533f380d20cc8a065f419ca7cd693cdebae50c27114dd980303ae1d0466ac6f501dfd290721370bde0be7f005b9a6bfce358d443313e491dc68573f86bd6a75024b0fe85018cea3b344ac9f64f84ad2d007be0c0c4f8a56a57001a045cd2db1d758aa7133aded1bfa771e7349fe869980a7908d61248cc9f2f0f08b4272e5498e4e4d9b640186763914d8c51a371937674ba494b695479e788f958d48c935c99b3050e583171fbd759af767b894f4ef735e8ccb8dc8cc85b0499070cfb73b3cb1728efaf258711d58210e3c2a0acd4431fea26699887ebd46ed092f4e6261f8037be1698e108ef167d15d139313b4dfaa7eabeb61c242a1609f59c354b54276252a6b24e5ee9774d0696863d22bc5e8c3e5443a210843230456fb17a7e0a1f4504eb08a14880b2646b9cdae3854e2935d6e2c404a113d4b215fd68fe0d66bd5792d83129ed5971d3d287abb939280f9150650031937631f01d8d3e0dccecce611febdcf62b186d1c72f25f0a070848c97d2b0eb91f7cc982736c53a40c3540a736fcd69705cb51124db1f73a57a2ebf69a615778a75778508c09af4fdf42bec131f0b4872fb1c39324f73e484c117a9f38e8dc0b0f5d5794911ea39aa6457bc3325e8fe6816ebd7d0404fcd305a3ec0e949c2850a63f233ad9ac472b85b0d1c7587e747c1182a585d77c81eb4df21f7afc91a940fcc1d122f1dde5f85e319b1f4c4680e03d3f95e6853e7596fecefd151b4adc756e3307f47330325314c5311c44b425b18f957ec0244063b53a3c04492e60306c87d5c76ccc7dfbbdaa81ef855012c299ba4787be75180020929e36c3dedaade68158a8063991589c34f04f854c0f96bb0cfaea52893afb400263a77568b97bb24494ccd04bda20d3f5d541a92d2a5d4b5dae409fdb83beb4e49a845f43858cb645a5f49a11998ee172fdb1e357a2b1c6f0aa57ab681b8111dc28ca59f9e170fe7b0b9d497ea1fcd40eaa54d1c6b31df6e06b2b4f044942730c74f29ce1b6f3607542cfa473fd4a83cf4d60c664f84542e5b2f208a6a5661b30ffff6a4420933977593caba7d65c6a7798aac72416168a6f9595e07f22d43055afa1d875a14ae78e496bd0cd99054afe7ca1a4953900644b5d0a598eccf0ebfe7af4513dd84c96397fab9fde16649137295712d094f9dc0c56c2f16ffa59e8ffb68c71cfb27d7aa297fa7cef4e1318391ee9064dc0a23bf47aa35efe54c08cc612685dc1586ef5558522c5ec5ccedc37f063794b9eb280dbaa04835e962a0c9e58c0f0e429592a4860f7848dcf89111bb6d48eb7f2ec40e828bf8a36fa6392ed8e1ecedcd3bbcde3a503ea815c5ea9d88593a42854f582b68e218c36d64b9648f171316b4a216629ccc42f91ef458e16ef8d0af11058c0818021e08ea365b4de4e9e6052b583403fc0b1987fdd202b1b7d6a3a2e109f3ffa264572986133e12b30a52bb1742fc2d4ba5f9c489af93b2f3521a6ca6b73683fa6908acf2a914c25e5ec2229460b1aba00fcfe5ec9e03d37422d24d8571c71178b0a114731213f44a48244c70604098b402dc0d279421dbd3e5a18694de60fa59fd9c0663cc734160072a43adfdbcdb66679d818ec6d91969cda99063f4ea613cb5bd0fb00c2ed28d2272210336397039d8c94748687261d74d24be70d181f0a5e4b7d05c5cb79342e55e715b4b60d7d1b190ced0ac38427ee4e8a6b167ae147dd87fb3fb86eaf1f4ebb04055967f667ab37a46771f588208ecd2640ff719049046c46538d96d139dc03652c328e77aa12f8e8fdf49d64fdd807e71e55746800d0655dc50af32ac398723b62c40cc3b58cc98c781aaec8eaf750d14851515ed0a5878ba9553e8714abadeb04a88174ad6d3c0c228fb3af4ef57e6b1b3582776febf7096ec2c7c1f55f75e408c2dc9a1f514c0f974c78b4f55849f0128a260d7456cb5ba4f3d01be63db61c095bfdcfbb3536ac3595325895b4b8813105516dca02e9fb14df0989a81ef1226bbe3d632b14961019dd1e058c325825f8c11b6cfb2048c1f853937ea40a5f30b89d76687b73618c25dea81ab0df91b8c31dfece98430bb2d2e035c9d3563164f3dc3c5252e0189bc88910800026c216f8827993701e1630e92ec1b4f7aa1fe4e4adcbdf7a4e63cf4622df7c32c4b10dc8c8011a17b6ac8f08f58128c2c16b8f9d75783a24cbc8a46030dc7da5bfd25312f478a75240f481215cc16e7ebf1f6ad3f2dc98a7bbf2c1cd62e050a2108f737d509a4529657b177aa9ccf725d2c53a590a8bbdc2cf68ffc1b57d1f857a4c2dad6c26c564cfb5640e9ee7b40aae0f0080ccdcae07d1f7f4a6576b9ce9662f46301e35d492659a972fe048f7501ba270baa876e5930340b041c602b43bfdf8579142c21d5e97f56982cddf6621270fb6095b14e412b77d3f9fbd0f61b748932ca455b26ecbdc6327e472028ca9353773eace27804f8150f9493c599ae9c72af6ebca3533dadf56bf23a604925bcea3e8901148e3a4659fae5c72051f5e337595516f95aee2bfec86983a61759ca9de54c5a1212fb666589824ea2272e37f409abe4297ede8943f80ab2525eb07f73df9cb3c04620ce8a823f352d7dc74c4509182acacb6280732ebdee481c62a0dd1cf8ba2a3d309a2662d65a5ec092196048d4e0ed1ec4adee977d6f70b02c7695a3f25267062f0613aa1cf27254d359355c0a74b36bc60fc15e6d0582a7c14e88b661114b2e50f5a77e5f037fddc40ba6e7bc479e22288b2a47c0902605d7f9d35e87c1eae9586d4bb348ebf36ca1f3c767662bc1b45768b724f2856522b44cd367c2e2eda3871992a895d7764805173a94d7ebb88294d3e8a96f70637bf9a13a201827b1d000c6ef9dd24d0745cb4289c56cc376c04f5c6d542d6c70063455447285f5383414e6f7583fa375f02184a4138fe4da17e978e9777dad66ee8548ed2465e7f30329102e44fc852903a7af611e9af21e14d2fd4fa9d4f658ca4f604158614c4d8ec27e6667a17338d4cbdc11b2ab8510a0baa8ca0c122391ac4e06b88e56a70f52da8db6db6a40ccc9a2e425ba96ab1b21a89a32484fa1dea214a7a0d5462e97afbf40f59c3894d9ff7ae8e2332f6425f9bfd7181c32f134821a349fdefb4dd49dc8becbdab96b269f5cca2613692536791dc65ee537299a17eba2381c3f201e0d62d0552b3e94a09e8db13c4b5056f48e42b45e8979726518116b6f339ffcd4e179645241d13304e9c389c16db4d4eeb69151a48ef48bcd6b820c705492e6d4b0cf0ce4077840d2208f8198917e70b7fdc63035647c44c7a73c854d4c651ab8a77480e145a006977cd18bef730c6dcd19954b6919150434dba7dccd61cf86e94aa618b62a16a48075d4df5305980658e8627e53089f4460ff1d9a464f334c87f33a52d2661d8f4542a378d6d4a6e6b0d6a408ba346912d2aaa64c89eb8d4415370a52acb19d0e5b58da95400bb9aebe02750d9f61768f67df8f03e053d377ffa2165d50dfacbd7b6d083a58e8f3721f1cdc16591fff71c50d0ed519a903a5ec75c15d81e7220b7eb312ac34f44f3c2350b48e3b54018215a8765aa7b190c0e040fc6069804ebc7a48cbf9a256e78896ca2e47cf017c1f15def92fc7f2c56f2f9a3f19da2e536743150e6e9a065dc65c95cbf49a484cb9735cf976c212c58c3e4c095e1dee33f82894451ec1c3f9dcdae002ac7bec7e5881293b54399650a618aac7a855d10f30123a2e62000c08a131fff56e8ddb4f132df940727f4a0f80cff362966e40a020e27b0c54297f2c63489c3d97a379ff995392fd7d08ef2a90aef4086a9db29ab22eaa4e52a962f462a7fc516d51b21bab5d1ffba7e4ef2c813d457a8a71083220471dc1814e379853224d19988213d99f2e84c6234d43c4b112dbdb0075e7957b8a6b10481c93fcdd524ddfa3a3729edf62131dac40bcafb475d0fafb5cb9f8250ea452d12fb14f1fe3de58805adef368de3cebff2f6460cfd18d034cca30575794c7b58bb4693e28a8435d01cfde9b4cab0fa45cbaad077df8bee8ea9975f69cd2f93eaae8839f7e8c14ae608346bc3028a9da097a92adee33be196ec55a50540825bba63194a0984a3b7eb8bc15a2ce86eb4fcfe0ed9a83295fb398d33fef32e5099fb840d8f364f77867897b32da749a15d87b24a7dc538c4309c8d87f8dbfbff5996047c33ac25c43253804f70e84f615955e3b7ce4aa9f2341850790a6d51b990be13b2ced062403bb8cf7d858f25cb303cee87f548489b4bcfad02f8a2481b862c32d50497ad0fca232fbaa76c97ce442a3d99cd21675163a74954cecb0a1b1a751aa1a6dd9896e423bf23ab0a600f1cdbad0af594685f4e5e5e47ade50d00e1b19316695d6b6ac2699c54efc3bed359b76e30ade2e97c015644f271a31c7a2dd6fb826a49367477ea5bc4161ce4fa7323ac673439dd4b403abc5e08452bee60ce941b07a2a9082d89c65c46db73c69d8f028ef92951685b198895ee206d2949be47e8b692813ab741d0e8115e51d1a598523eb16ce17ea09acae23ba75b9b873fe848af30d9c1252accba6335a51a85e6ab29a84327770748f2ae2901acdb01c9a920f66cd49bcc033149d73ab17cd75154394a15f8a35528a75ffb7465dd9345fe3b7545229046a7ce6616681d286157e5005e528007c450bbbdc1f9c58dc8bb994dcdaf77fcba7b88254191a932c0ba20f0d6c145342b9259ac4cb9342df8f579a9ba10ee6f387fbb26e99c8f8f4a6042c1039de0b45d90d76a0c0f779090dabc25a0d5c313309bda32e6c715f0ae62794171ef3d3160e9e56d78969cf1cf46dcbf6a1982f8af55a4cb32d0d5e86a015568ce2f757381cd658f8b9da6b1afa188610a1ef30e83d9367cd312c95ee72db8be22c40fa593857af121f14072e686c0c2a228362c5e10cfc063c6dcd0cb40a580579595531bee732ddbc316e5960ea048668e7f8bd3ccc74e32008663c4938f295ec818e8cbaf0820f01225a9a305bf7fa06a52a780bbf49da68451387947dc34f2a2a788d2400b68e102996840b4ab12c76b8fa5e983738cedb03ed2a09f792235e7a8436754a9a4f7e5f768aa285badd1d12d3fb47670b033232cd632c46c2db9bcd87b347248610372f9e6daba0d94a7617eff82be7f4d30559fe91e9109a5b52314b08d087b84cefd916924f71a8c2d22096165b3375ac87113a182a7ea6cb05e8ee0e4192490bebf0b52de19538eb9afa259d8b2cd4056487f78a92bd2345bbea1cf0ad08ab6b89dcd38df7eac7673464ed15d595296bc1fe090b207f7ace80600b7f8ecdb811985952ed401385d0a294d6548d97f5c53a4b8fe52177ccba442a4f23d16c59d314f6f294edf8632ef0b3e11cec3d497540572ed3b4e090bebf5a7e3a5094ae49ae97fd3f9543026dc45c6fe97ff97ef158a1a57076f7404b8db7a21b9496d52706f436ffdce39b742e215ba6851d83fe4fb9a9caa07c1404ae3b7c2606e9377972182714f18d0fde8506e660e463acae81c613171f36ce5d989593881ca76b29bde2af7e1b36f3727804713be56624b8140160f5756c98bbaba81ca2910da4772b87f3365d9ab8ebca87072ebf26e0de25387cd08a6cf19a520aa9346dffb137e90e8b4df5b9e19d10f1b95db58828759c4ce63b6f07a8a06086aac580819402ced20c6c2e54450ca215c814d6d4b2349eb31a665613e898419bc5defb3f99b85404e36fa074638b66bc9ba55f3549f25ef752fac3e856bc5efaf315e8060df78727721951e4c96b992493c26f3d03ee5634940bd5e43fccb70b7707b0487c6398928f09c4b2885c8f7b9b14e95e0ec2c09e0de33ce7d0d70d699aab4f9d83eecbf2478717b2b6f7a4689b1a6a7206329ef9c6cb30d766bc256146b26f3c307077c5f5c7c0fb05abeb83ad9bc733de5c691f9f35071eeab2987862ce7886f03fbedfa7b35767686eded82a36bcc35713067e9ac9bf273b7c61e2071b9f7c14aae5e9d75f2717c4fa636985d565260d557d97814903e4aefed40b84040144de6424dd70bae5edb772a8a9f218b9c408368b80cf546b4b9b66fd122b5f38a82267f88c251f0a1170afe401e6f449e8edae0d63f06c0bd4f31b5f49fa95279679c2371817d1b76d8aa3fd4e5b19a843b119f1fdcfd245fdf51e07b70a1b60a1fe62437acb9216310b860261f1e61469e15c4d20b817f0c6e59d6296d3833a7ea1d6fcfd73d6404f61b7f47ed4fc87527f0705317f7bac36dad5c7d53cfb9b88067e62c18340a4007b92f0de78a9cedb66df5daa067226d49990c89681f36f3df7c8ff399676ce3dea9bc22d25c8114347a4b89909ea912e87d15eb1e24110bf6260b1ada574254619c1300c4dd534ae2b09c4203b2f66559d83c430290e3154ee5f97b991e2f71f8f99c390bb4350a5932645f3b481ce5f7c3a4fd1f83f69e7150172ccf523a70e44dca7c18d5c00941be7d5ddb5bcb3e48558f987f2531b84dc590faa4f1c6a1f067b541cfd33614bb530c83bb0a69382092c5af9a6c255e00c11e3eb75e14ca0ed15fe12fa7c577e70ccb27fa8c4935a81d5ae0259633dce092a5b795ed69ea5e1b8848796453545d34e0baee3ca5e90de083e2f9074b7cb2e4a071635e8f5852c15755340e6e09dc28296e3e50465cee5fbd0447b345473c01932d4c1e74a5b20a9eac4cbad63e4fa1867cac04e09c19b1334b82233ee096da21e9b1f397886cb879c1a4e142d61189e9825b2791d9bc122b2346bc80df45ccdb5a6c2539129bdb2220ac87e66ba2ff9f24b1236d290614b4517e857e33cd3621206cfcc1eabd9378e3ca0dd6a7bf6f428a492dce7596bd5c8f57d4c96115e2d041ebfe547393f85c2cdedafd4967b95722eccb07eb4608ccf13d5f5b944972255255ad9573f3aa59ace92359cde6f3cdafb1d775ee11176e2ed9bb1f4cc74b355a7fa60daf34954c9c226da6e8afeddb1b1db77ee266af4d3b1990a494329a6f704252cc0ca34238f24b122c0b935c84b08cc49604d4ca483c190b7fb67941b89f06d4499012d17d6df33a813e8febe4050f7fdc0217f8be735f1a3c49943a2f3f1b097f815057afed405e9a67da76e43e8c586bdf5a9676f575b6cd46102793de49622814b74ccac58fdfaf040f976bfc86e74e81c6130df25f2f83ae8fa62ed796c75f2296b0c35b36a6865dce29048f8b5603872421e8ed27d1f677c66afdbb2488dc7fb77c1d3a2e2c18663b0902c16fba347d121c98f455e77ca10ce56ed68833ba04f3b81c1d5d8ae9cc7d34651d5972d979d452fad984dc927b9da4f30c67b95ba79ecdd51720a8750623d81e5788e99b739b3b73b9af2c4b532b67dd2ccae263710eef0ba90b8be0a6f44af525b88ddc4908b81d04e43e60a59fbd976cd1ddfbf6f72f3d6bdb2af2a8e1fea4a6b2427128d7792866ab7b4bab036bc7ef104f86e3530972d7931891944ed63c5a895c53ca224b60ed94ac6a7dcf660f7b4e14880c52611d7b88070c8784c7f39aa91381e45d12008395030512a6d12fe65c9c66cc7720857647a1c61f884116f198fbe3e6fe926315e1350cd059e9497a80f288da532db61d9d075cff23f91c83454fc7a1bb39bd7cd4b15b78121b729f53ce6450f7beb9a682906527bd033024bd59788cd0aa990425f380ed4732e001655180c775be6bed406406e0c0c3bff4563e0e6083032a82a7406eed7d51688ad6ddf4796f23659d783e97cffb2f5641b2ade91d7a113e82a54ad0989bdc237ac945f36e59217189edd3382166934715bff627f450bd24f961e31108cd6b66ada067f7225f7f20e49ce492cf53d35b0a680f686e53f8a15faca7575a692f5d355b6e5b8d88607bb6db75ea2a3c547f43282b7d64a4834d1957b06a1424afc8a0b21f7d0c5aa7e6a919c88450dc1ab3748cd8c80907e8b03d99f842eecec13223f77c04178316abab4edeea383566cdfc72e3ffcd2ba2d42ede6e8bed941d7a60b12159fbfc3593cc52118a639da392c9fd556b4b18fc3322b0200d55db810e8d83953c82e697af82a21606dc82684845701d6d4d4964327a237cd5a72c851dee73c8b679c1c726d3a80e171aa8557a989002b9c62cda29d94c4bcb838e3e59ecbd5025da47069e3c3895b2dc127bed5607ff35f8900841df90fd0da6ff302d3ede14e882544f5638419df07d02da83e20266b50fb49b8eefbac2d1bfe6d594707687d8dc386d26cb4464c4a00419c679f879fc66c9ca2eb782dbfcc70f265caaaee09ca630da67f7adeea915dbbb246c45fc3921560d04284c4c60b727b263ab82296aab376320572aea79f57609d400f223b51341f5953e4b8968d571f1554eacda0f79f1fb6962e9fc06442a5bd9b11d83c468a42d7ef93a7d46394608a944b1db57cdd2763a4b39ee9ddd6898b27ef4f1da1dbdd0b3c4196f20a440ee934ba37cca26386239cf85a34a5af00cf7be39aa451728c7f09cfd5c7a6a4b435226d24db33eb2d1b286acc4422cee76d61bbdb03cb9a5db20fd4b47303989dfb976901c78276419ad86b909ce71691d0ac5865462926d1ac9c1b02f4cb2561a1e50a8a39a0c6587191ce13071bd0da1e103129582feae30363235f196bf5058fc682ed0f1ae2d4d95e5d8d70be27d8d731cd75fb7c3f2ca2da9d62c336d6b1c79f52f55d00964464ea54c8b14dad0986a24c05482d8306e841f28a8ed83bead8e7d27b3f90f0d89ea4e3be1a6dd5259222df5b8dc797d1f4acbb005e62b96441f8af32f2f1c4e965dcaf04c653767176074c76b20d5f3b2bb947296b208b67b18967b9f1ec298a10695101ff334ea8d4756bc86cbc459d426b1809c5050fbac626cf031052fa2ceb40d5fa44237d753094ab8be8c2b768777666766983472526f38e10c4205759b2513df0b4ea067c50d08e5dbcd0a5a3acab9a1b62b55984143f9fef281a216fff34fc43e4b751ef87cf282e425a04759097d4498f141065f181d3186789817bd9e67c3676ddacbb6aa8a47eaf5c4dc11567679b0a47583835804c128286611ddc789830f6b1c53eae92bfef863cfed6d40157664b3cc512d5930467c4ddf179a6d822dec022319038504b203d12182b25eae2fe767d0dfd2d4844ed4313244184245e1806c0e959a030aedb2a9a9f2502dbf4c9867d89d4d9bc2d5d38af30c282b585a02ddec8409fb6609826c61efe0c4cb11f2ec0b9bb0f8d32371e1d121064fa44aa28e80edd389570465fa020a83dfceffda9e1bd1a724b9cfadfec0836227b3a367a25e04298f0006e52c8b8cf1464b98ae4e4dc2f6cfc05ac7f32147cf4e07d3c0006c51ae68cc49df753fae56078cd6696b00130815bddabfa1580bb08ab16a7c77c2a4a99db88297b487f3de8761fd04f4f39f72e22e9dc616255c3624c801c7512e02b04a6a738222fe5368a8e54949359364946f9be1a6008e2cc93cb2d9a0c1f9958206a942432844d7da91448d36deccfa1da374a00a9153b003ca101df210a6effda5c5527f5dedb52f1a1889130b27e952b154cfe0998b708887ed5a5bb875cce636b025a36bb3aedc7e0d91a40cee0c1297dd7c1174072b91cd9f5af7387c26a40834b03cfbd15e2ff0faf3419f0394e7949d3eab15cc9c12296a39f9df2e47926dff0351f279fa39a3cb720fb6cedfb133b7c12d7f5e07164f292a27e656b39de1446bf8be70c0daefd4d6fdf0208c7ecb2e12183621f8fafd16becdfc6e3a7af26b9655b7316ffbe0d06a2a9d2b71637d266f891b2b138edf34b0186003c3d1ce944778d04790c2375289eb832cd7d335d4362e0aa04dca12a43d056224a33e7a3faa7837276363b192def43363f0ba475025f25df4b39c78dd79d38e9455eaef38140992854b9996c44d92e29a82a4a0404b83daaff7732db80bef3f94a959597929c010edbe864acd03b3bcbc6141073fde6e3625a4bf89f2a21a11fd7aac6047bf98762d71c898fe743c6c8fbcfbf2b744c0e30da268187b6a96f8453f5c74f9d940aad9bad8b8cd4ee78cacdc0692944b66d4dc4823f30795bca2a8467eb39ed19cbd97b0011e3955c967866cadccc1e36c6659f303a32bb5329e4163958f77762ee8f50a467665df2d1f914ffd10e05481ce6b5bfdc973a9417a21b1f7190d682c596f87daa9e134dd7c8cae0ad1cd048f0d195f1bfe5a49d374586149997be29badcd4044c36d203ee369e31f966ab3c02ae933e5cf220da50fdafb2984a734ef852498f1cd2673a63954954f32a96e5578c476ad83ac6d7afe4d219261d4f2f2f5a3faf1d62d603a3caaa3ce08ae5297f210a286616225363c08f69511840a003eea59eb4b1d6942b0b43f0f35abeca46107ccfde25b51120b66bc9d77047a90d16ebbb0d7e5046c489ba96fde29e6a6746012192a1748cd5574e019f34fa747b648616c3a1e367a235591a34f7d4e3d6593f1a79b3476a3d9c04a2dbf5028fb3736f0b18f563e265088f58c6f405efbf53a1da3ee08bcaef3abcbda3e89e729065a5f15b5a56aa17f96de21061a619583bd797d19d915fc6698c30f0fd1f690f60a6d6450e760294642a4d9b24850c0e0054a26d9a1d599828ea784e256ab88ce4fa4a5bbc318e0a9fa0123f9d4122ca17cf7954e3e71e991f3420c5047921e7a7a83eb4072c347e6dcc011a0dcd4d3b43c2f1a10e1ddbe3932ab3ac24daae2443bfedad30bcd06e59513f2e3ef1506a6fee65f1c7dfd4fd1c6f4a7fc32ed372adcfdc5e406bb8162cf6d5d18cc9420d99d5fec4a3c29a59950ba3e043abd79bf16de5ddaa790ae66124d74fed446655eb3f06e1e94efd2437ebc6606d9b9a4bfab352aea959d32512690b5deba6503111b64b0d1b80d9ebf56045bb86db9dbda1bd0de3a72fffec99f732421406603dd50999ee5249b3d9ec9cfb94a65d65ae6a2ddacaf9591cd15425d6ddb6d181dcb9cd36ea4a0c20a428386dfa75a625aa69a7a237c2e3edfcd0eda5df6645493328d78045af2401682bb1ac200650c212ef56d5b25711ce96376d6cdf3af755ff31c38af3ab5c8e0348e6d32a49891c777365d030b4d9e0a015668d314f4e0a85a770d4c2127530b7599c0cf63393b11521875e157a6616bd4cc0169bb105920d70820edd40a32b176cfa282e8d4289a41670439be196fd7eb60461477cad38afa8dfeecaf5101a989e0dcc2cf48174b8285ad8f0717d6635f0e03fa19028105a0a33156ea2583640ee452265b8cd9b657881b89bc1e0d455d8a7c2f1142fe7627d6cffa2520c764797f6295eb0b85df3aea77df599bbc2f381ce84e691ce8f068e3e0e7d382f74b06fd98b7d5d687dbd0f918cd3c1bcb2edc5708e614fe3759faa9f994e0cbc2b24f38803255015a19cda87f1ab63c512ba24cbc4345aa28587b14c15efe81d829ab70558e4ed8e2070aad84cc97b6eeefd5ec1eaaa6e1362e0594345f107b5a199a933e4c171b523a39454cf5ffb80715706583100de92ebbb6f4782bbc5582416be5cafdb3cfe10c7cfd04695557b3a064b3b582c674f165fb1600eb4a1ce0d3ebfa915e353f44b9d90a63acefb117d5b76365ea0e5cc1099585879f3825496b878ad003534b5432a9e3218d2e6a9f41bd5bdc1d9aa62ba68003e152f661ac524cfdbaf900171d1abd6566f98aadda63d506651ed51bc696aa4e77acdbdc5dae03d0b11af6beee68c80f73ed1bafc75ab956a8c6bde5903c8ec681e5739ef8b64cdf9a83c91078db0cb7d517a768983f87d289340020e60a5d69df3b45da20bb8d3c60bf8932832ae5857a91349b9622d4fa3a771788203430ea622ef53e1e5d1b775e5f687d448d9f475fd44b0f91a1998ff3dda7cb12251fd64cc5d9820aae57f6f9253e620362efbcc45063d67facfa2079d4a8b6afa2ca500df7dc0c765ed290048c5b135907ef3d6579db7543842e8aa0eaabad17502da65fadb61b2eef7acd7cce409d1ac761a0f930266c86714827aa0fe3add240c59c164c740b3fd05098ac11f00c67f5676799d7e14feb923532c747cb7db826b81080fbf510f1980fa10799c1f7ac977fd193093e8e31060821aa0fe9fe98c532c71a9cac4fd4e8fbd4561903f6695fb1c77f380369be1e5eec49f8ba77ca87f3ef7c731462bc0e2cc69fbcae59708399f226cfc89fde681774a54c717dbd93012d91643dc38faabaea16477b53080c78a2af7e3d212a4084bf49474f3a14a2bc61a9f1d4e3b22dcb1756e5624e6ff3d14a4d6082f99b62bfaab4f68443f206ed3021baecb3befebf45047f3f682f001262a4e5d1a86f9b6ae7d39905b77a29f089b5a52a3b474b82e04b394d2632ebf5258cf19e77f775fbf1c0fef3be2b1672f34b8d42d18bd3e7943d3ec89f96763405036ab3f5e2d8ed26065b0e36b8e322de29cb1bd4c3440cd2780c9a74bccb6ba37167c1cb29cd0e5c009b6a8d2ed1566fa14d94a27e219f5ab3047217209eca5b615eb073d2ed9daddf240682b62d28599745ec8f674587c2f7348071c9bc1fa7a5b00c37764399ef8c097db5c102b981c0cc88dfb1bd388f8f533850a690ecfb30ab45d09de3f9777ceccfda2b60d87a8ecf001e9315799ad1f3b7992b5d32e99cfd79d5428a4d364d005110c0345aaa3bcaec16ab72edddb37ab781d5c2e33e37bf51fe861ea4ced06e77bff39af11389cadd0999d0b37721f0b21aa5fc1554eb3b4f50dada8b8e5fd036ab02c3398d81934ff88e021054799072d4ac973781ca899a53d72189042dd77d4ad7fed9ab436c193bc717a77902270e2a2d69b7a92e72e58a7729d5e9d49075a55415065447bb673acf2c8946b5bc6146c78f17d7836ecaeaeaa2cf2b5d46d185bd02e00c31b807a453f4e0d57ff2126f620e22e9d7d6c396804bdbbecfdb88a4712f016b02ced6a69c891a2b86d6b26a1e21f7d51c6c4bd20da2b89c8c2d24af4f960134ee7a9ea6bbefb3957c22e6f63de8532e9460e91d5483fc574bf9d76135ee16524fe0d44940b9aa7e07d89e04602acbf3f7f750db952b0953cdf4463a71fe52c7f01b13ea21e9add63bef431e717c466306560cbb2d16682149da03b88a00314ebd3763b44854174d407ee9ff7229aa61ca17da3dc3951cc12d4d320e0890f50be2e06e59f566f6d8b9cc09dbe0fd26868dacea7042c823df01f8266b0e2f0128d36db31cc6df0adc565f11893b1bcffff1300322fd87d078bcd418e4c763bafb51f6829577430e6216c0f4a65115e71cd189edd1130e137665b2bb8db8abbe8d3e2f5d9c1bc118b23e0ea04350c7fe643f8fdc497e9cc66288aa858d8e7729c4c01373100edf50eb4b274f89941e455d692e79f5e51be8519fde425942cc0ffc659bef5fa7841c2a0bdc8543b5204ad8036557339edbf20a96a8259b176aa33ad0cccf30dede3a1167c24dc586ed7c83e4bda59aeee1bf7ea5c7295a8588bceaf70228c8a08afe12c53cc7942349a8a900f838c7a75fa8b118217f54420914b4017d53735a8862f596a2118dede9d35fb643f3c09a29532f98c1016256dd30417e14340c780b383f9136a9527c47f0c8aac2afcfe77ed249fa54e2e3f17f479af22b4de6ca9e2d1cdc50e65a92362d549b34275b1902567a76959975865862ac7d8393346f69b1578a14da106450086c9ae5fdcac9df694d67ce2908d93b638e3ece206e8223904038da60f75e6b7d9a0497f2b2ebbdd3995a90a5fcda9eb5dc8895619dbcca72559db81e03efbe1fce5bfb46fa892f3ff7591fa525ca25d7804805ace1c3e8034cc84d3c03fba14cab80b5095424d95d4a5edb0be52e0d91d63baf06b9c073b6d8eefbc2a6afc284fb8210efc5756491d7e5f284f1af62f2d7bc2febdbf6b8fe339486fc045eb1c718b3d64c5f4ed893af8d036caf3bb004d2255b1e0de98440c486ad0e268ff2d8f5a3e383f5d8b5fe13265c8b772b6e9a3f2060e27c5b3ff689b58a4a3034fc4f652139805890ff547eef85710fecc46dbccf8648f35b2d8aaf7453da9552c09d324384276a1c78fbc1233c7a4535004ab519c94fb6305c0af842df49736144304854111d9853f95012825f89500513bc26b88516f7714ff754dfbeb1b8eec50f4af799c3046e488b4de7bcadce94592ddc25de4ea0e875d80c444e1bbdb92de0ede8c9ffead762b19873f5e95c5029c4148bb0f15b95fb52c3b910834afba2cfdd445fb67b34d26dd9924be7aa1feae9cae4210cb7ce6ff2d6b323d36301c8626565a610c0769eccb2d6c53c25beaee88ecace8d94f6325b2f1ac021397f2bb3fad47fd958b53bbf58354c55027978284bdee6b98a1a819bbccb01afdb1ca43e5263fac7dd7d5e57f7b1926140e2d303b206db7d5d06d0fdae1a1b14f61a1d054922296c0b578d22f1c858f296ab1d969d9410f94b179ccca77b0637d1c52815cc790394ca3d757c5101091566cdd9379ed8f4e540f9d6864bb819c146b55fe7e1d023db654c36064269211499644512d2ae85d4a247d01f43d6813946dcf201df1f4966d2f3402a1d082860241cb5b629cbd61af212e2d5d722c66a052eefc2e252adff2cf0c6d3ca2c9a2cd196d16f119ea928aac9d354b3065148ae19869b79ef1dacd81ac6544d91edf1f9b53c130b742f3b55dcd665534605df9f36c5fa6c58696e6c9512b12d2fb7dd29e3c3a7e503c509840ddf9379f9ac203f50dc94f077d9da0dd4cf9988e1bed30c730f36a05a0450a56e6662a75c930e56ac39ef5553c249728028c8f358ba674138a99e6b84f322013a527eb1d72111567676725a58d3421c9bc53438f4af368514a27cb901a511fe1f33450e412c77516a578d26f372fd511513f4f8c7c311ba5c158b079a167b89c15c90a7adb55eb3387902730aa341b098f4803be2780ae0785c0d0a14bbdbe15d030d472f53abc9256a203eabc467ee9842c05da86f2a3c2b4f317fd4a4cf68f56b568c75cb4bd97c8f0f6a27935d4a291f9953be9ac2af5928826c2b05e404504e98c5248fb72bc7dcf5ee1f9a88456475df35f238d55156ae135ec910962e2e6e0d8552233f50fd0a5ef3453da2fda1ddc7e688f406669c3fd4aba3b38dc0719252cf3100fb0b1f10c96ac93cdb53bf55cb09b9de9b78dedcb142f7839d1c8ec617cb50e70bd585b23195fce1e273668b25ce4f4b635f0d2b42793e200c02fe6232806937df0cd8a6f51e537b478beee0b8451230eb456205c05f14b8ef1b8852816b8cafa6e6f11ec18db52e7eb79d078af93de2bf556bbce84972f2dd1d4e20db17e60da0daff21652642cf7fc44e7e6df80d45b9cdc8899bc98377e0c66166b3e6fd5528492521e85a3a8d551ab314734930b2ad5a98382854dd17c4448759b278a69f5ee3274849b42dfa1937235c2b76ad32ffece22de09cfd1f24cc79ac6892c94890a3d08d533ee8761550f32263c47455e393510bb9a7f2a0c742343efc99b0caf0474cb45e0d876cb2a2c23f9bf9054e85d182f5e317fadfc0f11f612f97f6288be2e755c64352935da2a93d8a2506f2e6a88f2c89837e2e99c3981a48b6326f0e3d2f5f3aebf61f524993d11d6b3ae4d3ee7034438d0e98a09b742eb4639a2fa4760053bdf33d5cdf9c181984a8e97341a6e3928ddbc73306d9e43114ed321c68de901861cd1e62d051da5d118d46a5f14a8dc5faf2cc226467022eae76bcbdb42121e0e6adf74607bdbe5c84122069e80f5405ab198bea38ba7cdbced1c08a33696dff7e826b5f6a85d5dce743454850808aa6bc93b1eb352300e9ad2667ca908c1ed3a2c7321024ebab29af76d4d6e096982d3579596d281ebe109daae90c19df52f455b1774ef083d9d67aa548824a6f4e1e2c9e72130132ca61964bb89396a293c73e168b4141ee536a624115aa6dc5964fd6fba53bcb13d12152c3a31ad456515b8513e5344b9e41e3d12f48698da9a4f6e1959bd8211da0174f63c0e34cb473a0ef77757f75e216c784cef824fbd8f0a4c9e5262fa3fb30fc771b32dee1e81038c43739ae0a2b66f15a5174290e465e3e38cf83c404dedffacfdf87a3150585235f19814fb61724714fd27996a011b2668a5e4d26d1ba1fa1aa248a8d975278fe430cf3965ae5740390cfc2dcf140483daab70d97dd55c9681c042a77c10daf7e4b405669b531d0968311af8c2a347c56c5d3bea708b9eb298ef6ab18534733e18beab59e359aeb442bf2551528162d9d103a847a4b55b22dc01aae0787c8977c19337c6fa37a88cb67b6995a5b0a32339365eb18ced7d26036ecc57e1c9c4584ff7a1ea5a72deb360745354d90bae26eed4c94847fe5fb8fc2f01fbab6962c7bf36e73fa33fd798f4dcf6107c8efa79d6319785b28b53a43ac05db8f046b5b676798935fd694d380e688892d35c531048a53d3a01f31e7455ee58606c75a356a2c40dfe8a0db02f1a6ee2c44be359cef18370a8f9b3772953434e0e2d83259286fd7c6b3304a19f3d410229b1b30071d087aca552a68bc81a0f002133afc8dd49e1e3db5cc777de67408cd518180fc46943b1cfe07a7cb2de6b12c308592f561d83d4356950bdfaf796450798ada128c82300d1858cddcf87518b0392bb8e2eda62e2f40409b20da01997412dbba66bf0da62b513d1388b6b4a577e974b316f6e9728469b2cc75d705c11ff7c6363eccbc9624e96ce889bd679c894cde0f303b3d9c3348114255134f1e4f14342ee12c125cea7b4d5bf9e366c11365a26c81a857553e6a9c825308bb866d4a080b3167423398c1c664184ec97ca371bae33d23c487ee7f5d6d5b7665393c997edf2146a657c192a8e67c7118d6f3e2f68d037dbfc6d886fe37a7cd90d874d71323e77884a31653d4bfe79ba91e135832ecc9689a74e49069c081c5f0f05b6d6ccffa9aa7d3731706cc51e7ecfe359668a671644bbd0569bbaac400838f342ce12f122c85431b09d3df25351469ece66d879a8c915aa167188437334d5dcbef826a3b76423065aee4cae4dfa6f1dc9f874eb472b8714c44fe6e0bdc3436dafb26df94345a162d059f19420aaded247aaaa398794cb4b1cf1344a1eeaa8f815fbc5aba0a2eb34d3d0d436dc84280f5be5b0f76e2767121b85997bc80e26f4bf4183c4e954742e4501a9987522218efd822849ac05352cc761022239614f7a277fe72315b1674940e659b38152b9ea7cb029690fe1c3e30e300022180e38cae337a7fdd812af3e3a9685f4bfacdc2372e924245aadcb84b4270011eb3d1ac4a94dd359e24cbb0d3901bdba74b84b1e4a088f5d5e4d21e14a2cb4ba97477c70dcbf5e925b79af7a179115db93b4c0235eaf8e896c558ecd41dd7d9bb6c0b776adbd58d9c2e4598bd9dddf1fbb4aa45d9c8ca732123ddca302eb8168b555f2a6cdabddb1100da60c11e8ebc4fcb6365ec039ae75289a33c01c43a186c993eb72adffb3712eefd70b528b9ff9792e59981bbb2583323fa90582e5f591b20e7e6f4d1284c6bc1cee5cb71a4863cd8e12e5edde85230c577456d37499d64c8c55d89e4c9c2e2a54fd1577597c9a45a081ff4dffcf2fe8d7d11dbdd36bd9f31f270b744f3d7d19953513874118adef742e09a2e845129fe70ac7636148d1b45fab0901f97b5c18eb8574514a589a71ae9304a8e60c514d0b6d46e0a69827511db6faeb69e1c5a568811b7921ded7b4b4475b0e3a05ff413c448dcc877bfb104d0aa7ed6b1389880c3d30ae07f5cc602765589c7824463d3c1017e047c89f6504f4ff01dcf9ca758b5b9d924340562514b1acea992fe5fec23f619cf70c195cba459228fa078107386192ae5c1a46d5bb84ebabb2c7ad245fb56c091a48a5df331119b5c08af90283b701751050e050f0af0d85a05a0359243b3c82958531ccc557ec2fa51f52efcd7c2258338e5d405560ef7528af62d180d35b9141b7e0d0d6f88ac664c1fffb895af1edefcd699e0d99d0d14972d61cd48656dda3198822cb58154cbe2a4837dd20ab241647a512a0edd4c7c7618142a1e63f25ae3534fec395d3c93ba9c91448d455876cf4261c1c02847b2b6e19307600294d8f18a2fbdca2ae9f6ddcf143052f35923582f40bcac94cadc0746878e2e3b07ae9aac52fd14db534394884d61d5557175b938ccfef9cfcf24e00cb6117306e41ff28441f320699371d131ab76b9f09b3f1a55f8b7405488091d5b4440b5787dfa99dfa809a38316f8dc39d6f04ef5f50068451056d91487fafee293a3a651e8a2aea74d08633f61ac851cf3fc6efb0bde7193adfda11f9f836ef421a5e26ddc9285576b0bdd687e3c66dc283010e16515ebf68a1286bb94d5c08aecab77072e76fd3761d72c1275b2d6b5e6a78a8f29c837d1b952c84cf3d80bb2fddc3390c683d3d1f70894e3a0e57dfdefb2e3567342c9f086fbcefe1813ee7197e74d8e299326bd02faf71cc23e79f5370c5a4da7f15e6d7c91ba47bf38611d7b24a82ac303bc61bb520730a8e7b7a1fd6564d78a14913a570cf728f4583ef66e8e8a128f2fa2d469c5a9bc6ca65b07c08160bb0696b0d83799ffaf04c4bc2d8d1f81e96729439cd07121bf7338bfbf3f52212b55bdcd3f52fd27cd5d8a93dd3967e103de1dabedeb223df37e0cea3e5365222fdc1ee9973cfe9555d1b74541052f39be4e4403cdbd3628b4313a7f606f4e06ac4d295d9eb0d6fd905a23574dcdfc0f45988163adcce718a7f3ec044dc1c4f718ae445e93d7692f733de32709afcf888ee36e8f72ab80efc6f91cf6344eed9bb91b2f6a4be92ae62af3d049a3eb36169f7c810c3c5a67d4e3f1af794eec850d560b17906b6e7f4e124d34b4cd31b31e44da0d023dfd6fa7a3c765d9adc573e7d4273961de2bdcf1da48e477af769121bced47ba65f9c5e305912dbb8e706a07cc81c9fb4f2bcc279210642ad5a4b4e16da70916660255db2abfbde5c3ac9a5a443e96e120c56d47ef5cd233743963078d8bdcda9af0c0cd7ed3fed1bd52f34f24bbf04b747fec9f05b61a7470a48057dafa089c950bc9757fddd58d60bd022ae3bd52ba43139c1e7f39af1ff9fd346654d06f960f99f529c5d461bcf04fa70a7b265e4bf4a73ef2e42bd909602c0d7c024601a3795278847b36beba93cbfea5113747e2287ac92b8300b241cc9966153a83069a3c299bd054963f6610249f8a806a198aecff25c2e88f02d779d223373d2a7a53c53b64a958e95db75fa7e9133f50e752581ace4847bbad2bbbcfd37d5a04f4379d028748a937eceb79cfd8f6b90565606edb2e3ff1de0851a7970e3b192c85089f1ca71108efeff6ab25cd917498bd6ebd63c4f44e7dae73eb89f28102f96ea1927b70acb5a3ab199dec51bded94f6ac6f79892ec338f561e730bdacc7efb8ae2132bb107f60b92d912db166eb9fa81477ab87692c344f2e3375d0aa68de7c8d40d3a48a002034d0615edaa2daacafa0c828980693b2f19dea786482beef157879e4ffd4c45f562d40582283a2e2bd2a0a321d053a2869b0ff82fd1f435675bfd0682dfa5291fb880d02b9ae80c094d2d64b8cad2e52f2a4d74760fed7b655e3bb7b41ec03dd4744bb9ae02accf3605dac471195454f5c19df7fa06c9de088333d78a1c26b2bf1bdfd977c96d48e18e22b2f8c622234f15eb75408105ffa7ba72c229b9e4dfb4f73e9c63cff10814a81b94e985b3ebbb36ed725a18e0822019a187cb858bbe0f435a40d4e5d4e74d2488c10c6a1a26a905a388eb78cc913395576621c7486ca5aaeb5918a211802506d307619e37b6eb1f97e57375d75af2c705588671bdac440edf5021c7bcb2fd788026f6e18f5ec859a7caefc4428c3a7da2870189c065c6a011df89bfd720ca9c6b5297d5d4478cfe020dc68665de4227aad1188f0c20aec9e296ece1acb2e35533b54564d87db55b9a9806e6868937877e4973e8bc8b5a6ab65a8a792612ed928cea82d00570ab5848e7f875f9c8e61c93b64b6494f8c5683be140cdf630c7bacc846b308274071d958efa21375f7d2ff213b34f41ded6a10337d19e34bf9534e385a162c5416d070fb1adca1e1253818e0da3be365740a5bc3b76dc44b5d33b25e706c6d373f376dd8b77eabd29c7008688e0f43da1f2dc2222cb7e87cf7772c317483e400b1c295fe74edb41f22c08f21bae18969d1b029bf401cd420b29e37c74364fc5ec5c2e5caada97c53fc8fe218f4e995353b701380a6a81b52b836527d5f258935f38b79147e011b2e4d96c256357f3b36cb0b2d59646880d396b96f100e83e698fe53b24490278503abcd45a4bd3bc45b790ffda1bf5523efd73d6d63495032c0e89c0d2cdce04ff9f0fe350ad342318a4c16528f163f9568952009aa02823f94ffd379c051e3132f4f6c7a7221845a0cc5cecb1c3d8a305ae62c9bfe9e9b69e292b47e6b6c0630d1d64cbc8fbd611a6678cf4451007f76a843bfe6da874abfb5af2ea1aba7e78e785746e3abae99855d47b850cad767c3de6530dc9eac2930902a2c2208065b88097ddab0f941af38415d8f55c413a4182f3b69165ae07e3382401010887661d0946692971f6872f5a50e014a2c7f524cd8fc8cfa76a59975728e745c4e645fb5686826c87fd76eebf4f06352710359310e0195677872c9f715c64e2d1c7d867d7d0d1631dfcf59382011fbad23e12a181d14d3481e09d83f96e7a4933e793fcd2a2e9d72afa4e3c83f7220d054a2cc9fa920d7a5f478d210ff364af49186acb9afd029516314adc28e77e170d80edbf94150df06001887be9e47119aac0faa012e5c95fe89140371b2df4a7e5fe211ae2931f3d584483ee3f1c6a60365810eed6e53907d33afe945e4509633938debf57065ce9cdc066530edb89e76fed6ef2ed888a25770675611a520a21fd77b565f1ac51f12c1367d73646090a30a1f2028de12b62fffc3e20b09b99db4a5540860e8a4cdb0553309553e43481b02bfe04fc04d346bfdef05d4b08d08c8942f395d9e7a9805089e03881221645145339790a8a96f94d9c3c89bea9eda15803456b48cc3cfda830d2380bd1aba96f779fafda121b6e2edfe3dd532f9ae3272d2515ea8bc276e0ba366da9a3b2baa40adefe00bacfdff67f7acb3471b5f5deaec299433567aede0b81106eb1fd17470f031916aa3aa7910df9812de9b7d07945a25772225a8ebdfc9f729af85ed420a27bd7e48955bca14a1f8edd35a3d609050503286d72253cd908e94fd71f19e06f62184d06fa774daea6afd99682651dd69e79d976e3c222e491c579920990eb391e87ce505e66b2e24453de747b092af49ce6265e0124f6d01c5e5cd2fdd55955506a6f9ea13c0d467e5af5d86db0376efcf0188e15e66346116fec231f788e2c13d15ca96843316c481b5df02481b5a830eecb3043ae2663a7627175893d0dbd88b9322d8ac8429b7cc1118e173813d9195387b47bb9bc380247fc9c9abfaa18b90a546ccb69c84d1a7c15aab82b748e4bdd0c4d83c62f491a7decd0ca925fe4c07b1baaac4a0fb15920f7dc575a9325a32e2072058c590f786a122e1582a9d94fc2f7b245878e2a8e2ca2e29123ba532ed5e45db92c8476beb7ff34f09e944777a2b64f32766ecdd8543620518f7d9f61f9b58f965b025f05e6bb49d6273c8ec8b95bd48e8b98e7aa03801b5e44d0e49e2c884a19225f1f044563335e87d1a4c31fe19504efbc751878aefd7f90d9d30b12bb16977a11ff0b942d9ee3edfd929535296ce6168babfa6b0f152d24ec6fb8db7d3ca33034bad2d7f89cbf47c1f7263f3a355dfaf26ee26beb54cb63e98f15d68e4e83b99e010d2fbc201192c7837a9f9552a4aca4d9da4a19d08070585fbb7b2b9db3f6dffad8af358215d08b7d5bd21d2756732cbcfb5b8244944a7adf7fcb7bc17b1408bdf897bdfe1023863e5c7d879fc8a9f918cc5b9c8e5dafae62dddaa01693f6e2d6dc596834c7c610b42432c3a5790357a47433d130c6948f11a9ded339d5e440c67e5088aa83f4a5e010bc26ac8bffda4bc2ffe7d1596443661924b08e066a2f820b242f45b2ee96581f135e28529f1facf805c6b9e657a8b11cb4d7bda89690f25d2986d407b762c62f4e5513eeb1a09974804958ae992597ff9a9f31df1953734946b4853a316167912e5e69fa4678981e6d93bf250a218d630e569863e2a956b4248f6e4ab48d8ce11ecdac481a5165adc7d02546cd526185eb01668a39065f82be84055a4cda1c3abf2a60ad0a4f6eb8d976636d0172b2d3473051578a43464f8c01a8162f9b10b058e090dceddd569a8af179ce410073d50d82d6a1466839f9e01617b12448f621d2f64756534f7223d9f50772d64b6c60e030b3499c9b58fb3b4cf565e70770560019186308f04f1ce905d4c6b31ab91fbeaf6b7bec7338989c554a96bb37b26a6b8b97206fc62a984e374bc2abd2496a1fe1c504378e61d41fe00370c2670691e334de9dfa7a761781f7f990725d606988194db9eb72d04073c57126c9124b1f7f24090862045a7aa05d11d75879158fc94ad2e6d3287695e6bdc6ba96ae72eddb3abae65c9130c3f593e880dda1d55c6841e6d9057bb61b26189b54fa8f0004bebd9668fad108a9d9067923793dde79ead2627214e3ebe8e7146d2a1c84909a65a6c5bfe53223faea51e1ec4448c519fd38dfc7ec3ce0e815441bfad2ee4e66366c768e29d578cebe57e4245f45f1b2b29a3dde13e656b83ea86a1100b47c388ae65963440d328a748b673d2fdb1d0551f2206a36ae824f577481e63330f1ecc8a12346a0fc2fb0d736f372eb20da6f69136ea53c0b8b7c17ef6d401d0b94a81fad0d54bf688384f97239fd014e0a993592d2335457102e7b669eef84bce6677177566caf4bf37e6c9c89cf472e666372b23c17a27ba18d32256816d83276dd5acbbcec96b97b8d8b4759e90e78fa3433515fb48e4e41ea0a0b840183286aa0635b077e6c9fc826771cc43686e3a48d67f232e7dd18eb729ac08c909e5bfcaab6987ff02b8fbf2cb28d080105ad98ed0cb8702705290ac1b87d822eb209fb28fcbf70281a46f49e880f07ef23fede0b470e18bd7118ff328e01495a8cc746962e21ad1aead9341daa51c795c593d25cd844ed04b16a9e1644aa2bbf730b552d85a80ad9d481fc39a2fff29870d9a4e8b423f6c4ac7ab1a39f9151dd3286b0a5cd97e1aef6c0ff9c18b8575b9d9cd671a9c5ff906d3e74c611334e42c0b57542cf308e4d834fa3f5023e673fd96cc1eb50a9173f154617ba0567955185f2d63091caf308a38084bd3262b877e1b71041d2f5106c037f4073786efe9c859699369e6cf5230b0bf0cae8c6866717b3426a2066031056b086da226145cde8c396b09f94fd2ca30a6ab3586a2d93f02d2cd4b62ac922385af7d6c08f8b1aa9be3de1e93b776ac9c928fe45d8b020447b75160c578250b09d92283f53d35468c30d8fd38b56570861952625fe35e897b919fa341d12bee116ce12da50867cadc31ef3f2f08e2f4f84cf6e6ae08714cfe4e7cf712f9fddf01f12d77672f0ea0c7698f79966998cffe42a82f0da9353dc450317a01c1553fec63affc1b1c00afdb63ac62be5f3116268abe7a0a9eb9659076473ca61a2e8e9dd1978dc5b8ca0594dd4a625d79e2954128d44c831466427f057f450383a93cfeef17ba1a24ba3d7c3cd2df5599fd040ecc06ec0e7feb57587faaa63dd1487708cfc4ccf27d9a4eb2e9dbaf5d87f73b660654fdab7906bd82fc290c92c2b5cfa69e7bf9cad76cae46454462f42cada2b7c5395b18c204a4919f5bd2deebe42dee15296853f47553e641282b0ad9327c643953754e8f28c394431f06c21d047aa1751a957f5d4ba69628d459ed1efdf31dbeac7e788f2051532e3609deba8a916adeee3cae9884d93438e4d5206750be1824495b6bc2dced849d1ebca83523cb916a40d2e1d3575230a734a23efc55f4090499ecedc56869f699185a1a31dde10f9e564f2c38d77fe22af3eb015fe7cb561d5539c60422745980f02808d1cfcda9a960920f0aad0c451462dc9e6453a78f8762b2b206c62844c0b2badaea526e5658e37fd9b871b966652184f8945029952ef01f6a572922f499926a941d4b5cca31a5172db848a18d5804fa5f8aa3fc6d7b64d71e4963b67a09f2dd519097e5e207cb9f460e6efc6ba930e8ea5a5d9a22b7521b93e3d1cf0095a92ebee6694881f677f02925456c7e0e06b8ca16bc0bf808cfe0c9773cd0a5bd91602145223102185d7781e5b29cccbd1962502b6898a178d77030166f36e9880931083f84e7d40f1664f6debedc1fa63669bba421dc3ecbfa29fc8e7fd4bcd87ed358bc929ef9bbd5d8238d98a4b0ba737faa351714abb9d5cb2baec78718c795d353df6b8c9106e6135615b214f99441c94cc28575c5d545a31fe10ed00c3b605e6e6f60870c97b47595c8f751555f358437190578649480c6e5912504b4ef1d88e8b06527c8bd19f5e97f4e6bdf902340e34559fed5f8f5056715205bc98b2d0684ca42c2872520fbfdbeef80884d213063dcafbb57c74f5286c576ef35bd473c12114d6d6c4517a6707466bbb4759ed7bf344e79b4cf60b48644b0b738808ad771adb84f3e517ff4c67a8e21b48a102e4e69ba513b1460a13437d2b7d3d51f1cc9446cd95ea62c0b6a024214d8647f10250ac707f994dbef2eede2d0aae86b6c488e4159e47e17f065daece86cefd103e4cd9b44e97231001338551f5c9d4398c09081c3c25b9080adb9ed16eeb08222996875d189b9994f6692b16c3843996a49848881156036a1f203137150dc24bab079e310239b0ef47c1b02ca39d0a2bc9c2019362a34b01b6c206ac549f196b55a30d40078b20079ddc94f78fde6e52ccc3d0b8061c1355f62ea18499c10eb1c33b445cef47d2040cbd7e9bade2e067e49b1a7f0b584ebf9ad5eb55511038912411b9aa09ee6629c212b99f4a96b11e231685483b2fe5e742ecb01d85763f003fe6643dfcf0ae6e048bb21e24cd832811bd7d39fa34350fcc4520fb5f4c6102921f42c03ab231fab13f7b86cf7dcf2ba89fb02c2b688f2878504e77a41df0896778d535f6aba95fb2284be96b6b600a251692b70eeab7c4ed76b45d5211d1a5f4baa2c3979e85b3f952fcddfc48d6776c6bda3e4e3b66cc5af8ad24ff11feffe0b1b28e18c1686d0cac8cf010ac25e0fb6c031ba572c80a44cbfae5a28405accf3a11a8c8eca81a2d649ca29576139ea068ccccd91cff87cb453ee7db918845c3fa5309577dd0e09d44f4fbfab9bd816f0cb841f9f99eb3771582b2eac3bb5e77b60aa12c261ed09fdafdaa087812a7b6f28f2806982e5fc587b1bee801e93e09ba516f6c4e06061a0345b50610569ce360db558edfac880e441da8fbbef0f0890c44b22a9dad9f1236ffb71b99a1d897e56c38d80209f58f5ef8f8868ac0a153658522ad3f6e7c63ec80b802e55e82650fd55d9ae4a99a971bdc819e0cdf4e3cfab93fc61b59d0549dc3847a68cc85ee6aec066ff7e5db25d144423be0e8c4ff4609ad9d90af86071de6a310d180fb5f544ecc75cb89918b1410e1f4aa07ee7adfa29d77a06774d997abd629a2e1de83edd852d5fb56e5cec805b541487f70923735514d5ead5a2d02f8276acdab14e3b62f100ff281fce0b14b5d7fdc249dde0c77a048425db94097578ddedc6dc1b1df391f57013272eee7ede9452ae1ad76c7a29974988c71f9ec77178aef0bf07f5da22462b006a254e55d94c792345475b8f32c35950038d535a9b2387b3c88e84159435ba48ec205f1ed073fc0ad9710962ae957bbb3d764856477b9800c95b8911021f483cecf6556563aae1773045ff60dc8cf275444fd4ec18ae2a15cdb4816bffac055bf45ea3235d46fb5be2924d3e50a6e07c57c88e1ff8e00535dc0033f21c95251cdaa06a189295de65e683e52fe262af39e3da05600a493331980512e3575c1d659ea2faf37c28ac5321190272cc2ca2fa9835c46cbf77b74eab3647abe1c9844387f00e18672dde4b2d37de641bf01d664de7f9408e7f7130129a1ffc46655b0326ec7efa303faac677c5c82985a4db88292ebd687ad15a2e006975f11e8f11984100c1f1e6c516f6d03680e8d5630746a8c8528b9a67a32e045cc6cb5971e8f5eaed0c06c984bfbf7ea1d870338937cb622fab6351ea21aac75ced083532dd766e99d7463c3d2e5cbed1410dc926013b6a803fd35b0f51dc4d346af9174d5ac34f7a043c05ec198c2fdab9a8466ae18ebd02166163a61b3fcb10ae6bc73463fd4ab66fba48bf4ad4a922a5b678a064e8cdfea0bdc5a4422fa2c62cf229e3ab04754fd0f13230510e4462ccb772aa02c04ad6058ab83e34ebb32ff18a6d9fb88016187dd744ee9d8a6c97139a7539cb57178f39b4f98ba300ed95e576f798cac6ce0885814b000edb9197110729097b3278a1c11b51f531717048f7a6922662164c9791ba31b4ddfdc153f0e549522bd2ba6ba5a70048014ce5c922ec2bf8029ba156747b5ded9c1df5aaca150fdf3e7b94e9a4535e5201d7e97dc7e6e879383b2acacdc429993232972af816916e584bfd6d3785ff5ceb3460aa1c9a40ec25c841d120826a612a33350765d28be0b6d5f44e9cb6b6d153b9b93ed2c606e276ede29d45fa2131a2c0b23b9341c4e83607103ce2c7d8b175fc4d0cb1cdf77f1fd60206533d92bcd2bd27028815698b6b7fe67425bda23c6605da4e2be25f9fdff1f07eedf548dddc53e8610dbe9f33c30c6002d426cc1066fd50c52fd7a112c5e2296da927ed3335b19358c2c70599ceebbb9db6241566ea4ef4ac3ffe895d384e801fa0229cfd480c0e2e0d7888f82e684ce56990c7c71b24558e7debf8514ace195fe6f084f05dca4e6dd6e516747bbfb8c2f7ca3442cbdc0adddf3128ff0faf01e66a73378ee36cc3859baf108cad2afe774bd7f9a236d215a3d1a38a3608df02515e5a6ae4487527023da1150fbc463d8b73d3f31a2c67c68ba984b9bd89a2bfa2e25c10db38ee1110d375e38a78a8d9249f5250693e8b896a129acecea76e48bf4e3c9700d333e2ed7d9095a4fced8851d739770fb6e105ca4c97d6dfee9cf16b457660b8baabc50297b4876288aa230f9739fc276d7943faf882529486c949c13e823928b1ec6bde649d3138dae7fc2dbff6c7955f0a97ec495d0447b214f2f4005f2f2a87559017df6672b77e4b48ec78ecffd410d85031524edf3e00f130ccc88a59d178c87cd050b46e4d29fbd4e57f1bff48c76b4abd194ae7ccaf162854579765c973ff52856f9b560bc9dc734c91cd51f834a96de6e868b4c8f2cb7bdd06080bc765a5ded54917d9afa9a36ce6985d1cd6ed2de735407bf1c89ecfc314e6643066b970d9632c36c4f498721b6886513db261f14ea332fca26c0211414d8ff24c63eae675e5caad1fd43bad117612a22424d9b14ed7ecfed68391d5275a064eae498975fb044df02f103b74601a043293c9f238e2cb8c0b1fa18db00417adb42505efc00e35af7d95dc3dbb28572bd75f1f81f8482988f60710a9ada0697a23d337013e748cceb338f17f3fbaf4560f8b9ee09ce6942f28a54a13c90954374cdbec806c68ee8d8702294fc3d45a28cc9ed1dc899c4fd7a82a2a3154765ad9b4b823857e3694329f653e9aa4657ceaca2459747e4f23573df64702c19d2fa23f453469c9696edc8ae5bcf0519a71ee161cb04c70139b4a6fb54f4ba902640eb67c9f36bce265f6e85d950566cd7217f875a6d591a76502c7790dea22f761b4a2940682c8d20ed5fed514604296f0f17bcb0b740aa2a92e6b55d07dce94701902176c40f676ce45d59ba1454f0ab24f6490e4fe200cffb8b5d003b6aa81084cb1cb2a0800714a482c41501049424d9879c668b42c079fa83d99dda3cc77d20354a7cf7d3abd050fb2b21aba09a3b158bc820bf2561d6b3cad8310577998f581abfe67e2ba3e9fb740e108108bd61d4cb02680c30af6b2c5bcf923a03e0832756f365b211d56257fbf3583efe6c28ddf4250c649f4a3280547386aa015690183b42390f7f3c7b51cfe391c7da4a2479182ff24f85267b272c40e6a194276d8a526d6345a6657b316dec5cf566ae9f56c2c2146bb80a2682c4f5d3c7ca75afe97b18335f1bf0d30f939d6420a6211dfebfa414a90f1128232c16fe1cebd3f3ebc54a5b21a8158cc3998c6880e2e2a985503f59cfdb2b62961f69f4ee32cbd815d3ef9b25661c009fdbd459b09c65006c1721c1c1fd9dc79a24798c312a58c915ba59fa7185e4ef95358f87e917cf7ac5017de2846a7dd40a3b1656f00e6c97bd19bb898e7c5ddda6e861dbc71c7cd52448a9db17683754edacd31fca7c6ce6a487adc35b3d0ebba142ed25a9347ac1e9da9eb387500b78687c878ba861af65be97ab702b708feaa57e5d7bf90f0b47dfd17b4ade328c3d914bcdb2258502db697a9620dea4108bf13ede9ffe0127f853eb03dace3b2225515f84db516426fdcc95313307e0d117dcda2184f47cf8f215c21a06426a8938dc8b4f3ccbe7511e7d8ea57059e8a856167ddcd18c415bb4fc244b7d23b65061716e15d15986a9a6c3eafd31de3e7e9689b74788238566baeae54529137a5b0f5f55823f81bacc5e07dbab19b9bad23d70c3a0a83aaadcf6708959efdba2622f869c85cbba4d4b8a24b9015c7a5734a9811da7f20e47bb117e7bfe00d2e16f71d511d05b49e02ad2bd7fb99741e3cb594b8f22b1571eaf7bc3d04ebc7ae164df762a5b8ed94062ffcfd16e3e33e0d07311005a96835e9c50ba27861c204673c3a96ee2dc5f9b6085122a218d021b118dd0989da804f4180a72ef8aba3116a4de828762d1e64283dcee70b414922e6fcb3ae0ba3e7dfbed0193355e5d950052ef0cc7a04a3fdea1ac188772d2ec6a6053ca74880ce0689cc43e20ae1a49d9ae8783d8a2d0c40b83c7104a85d8195c6d0643f45f3fd5c8d533b8634707f98e3b34a28333f9a72464f31c377f868c7bb5913d719caaf6990179fd569b776ace50f2411363dc70a476857e18d251336d69cc95902204b51bb8c7bdc542d0de8299f6befc0599abdd5dccf117581e67874e66d609d430f8984bf0544174e6cf6497c3e0da30e9f010b14ac028cb263d4b3ee6fbce1ca1cc243bc2b67d8ff0a7d21b903eacbfc6bcaf81c1effa4e75fde0a7f8289167bdaf77bf3e743a97065741cffd598ad11fc590cb0a5890e2ebbfa20a0e26b1a7624d1c439b4453b132e8acad1feabb499bc21f05c4a91bf2dc713d7d49c6ebd06ec062e413bcd6a711789385d0101a4f6ddd1e97c8af08c833c6f62abf8b3b5b5da8a1f48d1a6d67032f2f7c59743dcd3b30645e7c55ec152dd234ce02257ac5f3a5247c0a5cec84eb20d6886877cdf212131a2be63ba26d9f587a3b069e4511fe10c8b5e8f4b1b38134a1f5560999b369206d429ae70cc8d305a9d6475e8e421bf9a98ef8e33d503274bde3bfc8d54536263fdc74d1c403ee1d8119514efce299c3882a5d0496d78e6a15c56672ffa412756aa524e4815de55f041285be0a7f64f85f5f3fc92b6a4e6c52e36dd65610713f5d3e853032fa0c1f98e23ee95328fe0f943750cd5952def18fd9dccdec8be0fa58bcc9e27f642cd58040402a06f48e5486721be0117682627d1677ea7a5c61f56d2777c2ff0428af97f46f45e67b0028ba032a7bffe505f3145ee2da088ec9905ffc2ec760ad39d6e85ce856935b2a41cd8ff4c83553fb7980491dbd827239d6f9ac498cbc12b9773fea5546fab40eb264f1a5a77b938d5b3fc145d9f118a053051b41ad974b74cd82a3a5d707ac26c9d8b9ad516b22e0ee2288af7efeda4f75f221eb54385598a82da103b3b1edbe1fdaa82296e69cfffe40b04afdbed2a2cd890c8489b88e2941189329fe5f2264678235f5cad34462498e205af59c5faffc6a1d89ffa03d0c4c4238fd609a7d5fc8430bf2e2b281f81b6d167a7747a40c2ae806637de8089d9949e87e8f9c3443e3f18994515d5bcd741ea0f6ae3d09a742d872e019eb7bd9bebf0b08b31fff86c7af40a9a62e023745ae2172107bb8a46c4e7d80df4b88188b9f9fd94c379c3471e679c00be74897baa5d3db4633215a63c1388d9eba02534cb9b6fa6b994ca49f87ad700dd422acae883fb65859764ead112706f84620fc230bf566500b534917c90a695a2f2a70a1e5c6adbfe23050de09c25aeb40016aeea0178dd5f47b8ea034f553622e208bde891c7f6c5488995768f7f470a622ce7ec5681d3e4e92c255618289fef06452b03dc72df12cff04383ea693ebc4e9bd31054b283b35e71412ebfe918e587e59c246a48a4b2cd6516e7324757a041e4b18c0b58c4877d1a11345667832d4979215d1630a0a4f97781f8cb95176ca6cac3dd0afb6b848288f22d5edec0c5afdfe274906ecc48f8a0fd35f2226a3ffe575c916d7ad0931ca38cf5c7a37b718a3ef31a466af252741bf174f0fcee00d7b610099df735dee186d991627fa50e79ed59a8daedbf60f0dc791a8a66e641888a765340db32fb376b91215c3c3d51da9a20773de15f6098691a55afeb0c4c847e77ed7babca2aacec64d625172a24aa2b9a47249876233065930c3a5cc624a589ffc9ad3d7fd200dc62c168765542d0b6f8d41179481962edc006b1b62faf44036490d5bdf3607a5ec601a50816c7a8a19733ac4e193b5612202bf552562b6e792c080e730a1c90a012d9b4b00602e69b2e5e69fadf43444504a653b58c7821845123320eb1b9b35f73c34491601a21606e07f4c735d40458c7fa02915eef1043e90b2457c5967249d24c1d2626925a474791443e3872d10f34450726940b7bf186cfca6801a9858575759a133d0a14942df3f4e29a82b1b9ca181d83fb6d1c2f2246d2af175ba55edaa672497f6a5de77f7990f8379841bae932e161be02767d4a7c2caa188da2566b7fdfd3e134c62534f587726d7108d8341c057a09ec370a9e41d1410261dd6f4a57b8332689b774837e750781b082fdf7a23bbf1500881c9d927a98164b8f7f440654251ec62e3902e9db592bf3e83307cc3d9d8830da110583cbf721eed1ff756c576a5b20d114d000d951bf53d53e8258b38c16bbfbd8701c39f54c30c66ddc2d09486f99c8e3434e5336b345b27dd1921d482b385259d44ad289c11e8ea07ab92c28b0bc78cd6b4bda802f91bd1bf70efa0fc69f80ded55664a20943c4c91c94b5a4e5c35626acdae605226bfe29ff92bfe7e189a0e9a6a608cc8fcd7309bcfd66bfc8aff0930e10e99d0ceba3280350248064ca5a235b5d0878bb631c1aa35d438bb34cca1607e3ee75f575a5cfb80344b451bbbab38e71969bd482c2a150b98b7d9c073eaaeaefcb305316e3ff81d06c77f73a7ec0b39db73ae65891e7c96d412d3909ccb57a757b7f0a22b7e6e0f04f034367f8ea03a987b99be5c505ad9c42a213e8bcfc23af083cf5ef0013bf94ef09971139d98ee736be2f672fc9f482a0fdfcf4ca3b2adf0fc76d99a7204765c62e43d1489fff187c0a450335d5f4cc9893b12749a05d2c9d7d8a18dc12f95c2d9640945a692b2f60c92ecfb3489583093bb79de29068983224a3041a1e4728457715dd3ac99f5f57420b75948b9b07dda4c3c586b4b0f30bc19e87c08221c83d61f6638374f31b532095dc6e012298842288a829d29b4dbd87645edb3e2302ac3d0c60c48d97a311417e1c74b2d764761841012a3b2de247ea771d29f51f62b7d8985ddc2d10abffb44ad665810de9802183057824682820a8fb7ef910ecb24db1e1760ee5e9a4e5d2c39f0de405c85a46c9104e4b36421ab8492b98f822f4aa32fd65af7db1a3bc4c39fe536dd8afef900015497e8d72ae57951fd6544d4dd14ef6e366f118aba4d6dbec6bcc9e29f673bbdfc0e32c939107188e2228d60f95dbf0974c9fde4e22a55b72351ed24628a2ca0e9de0d48bdd643ca3398bce26b239c3e33dc2d7b922020f1ffdc7dfe56b021cf40428ae609b9b96451dfed1cceff541b8a66a524710aeaed1ac45c3a735b07da19983695e58bee180ed29b1fa7fe97c6b087571cae5494932477831126c39b7432e2a3dc6bf3080afb9055e4761fcc89e9422f81148064bf3be77f6cfc5271330d46759642ef405c55fd82dac0d9bb4b9dffa7bf8ea5f23e57080128d726c1f6288f0088394d363edd3e3998bc920fc65b0cf66537eb6788625473ae4b920ded6aa97e80993097565b411f21272898ff4d17bf24a4100dcce847ad789e9d94576828ccdc999116d07e336275cb6c69d530b662fe2de6283922e2ab476781927af8c2b992adbcb27d0b07ba5abda3c49c1cdfd2e697d22e90182c5f29572d54635ad0ec259bcf4bd104f67d91ed04d3273670fc559b4f3d5c61ac869ac8c4196e45d24f289d3e8a9e9ff9c8e7b23c30b7e4a8bf8e9069ec6d9df19d57ba1cc9b56ee812281b5215e44951aedc1fec44a24fac789c9e436c71860ad9ae954070d768593c2de5a5191505007ec5802a71c0b50318499d91f3b9d40e3165a9ef97b34610c9283ea71f9da44d19a72afc06dda71acb8d191e7e9cb0968080921a6617151a5df76b1c32983f445735d7e014c04ec23440bb48dbf3b33eb088e4699077122984d9f59c54f9493479aa26470096acad35fea07f0ca8b927f31143b71e278714828334124a99562faf688415f0bf38f4449a25caf352da7813a2c692fdb34355b326593eabe7788dac97972307574c94588ae841525cfed8ce42f7bc605316897d169b334d389a694c309dbe6eec94ec5d1be19416275ff64253dfadf587fbf4cfeacdd9f7e6db224628852531502a40426bba82fb292a026a6ab90ee66b69fa33423c6c6ccb4cdcf1af700ee468f3398b6bb463760d3a31a75c843faa48d8a76d8545fbbbb7cdfd1cb43b212366bd637f6ecc9ff528833c63b658d2ab669628ac4ee7eaedfafdb0ee15107cdad7c7aede00fe356ff961e1b83db30db83e08504a560d70f6216e65dc4a9d2d61748fee2a1203353f6b7361314d086c4277b1141f073d1afd70244fae5673bb6397505b80ad1846561100019119dc1e7757c60f5e1cf446f3ceb3e493512c9e9ec31112fec4f321b8a34c89b3344c831d9a90ff07ebdba97a1dc36148ec83c268b10591bed13f134a5f53c878df6eb44acaa546eb38c5ca1b37e84447a438090eb4bb3f604ab77ff120830dc1fc2cfbe393c86a34c33a84cc0d27d0109a96c5f97fe4e21d32245a025622af79b74356f1b151958ed65a88c6a33a8c7e3bd842b19b682677425daefd1bdd87b92debf8bf642815d49a92d9add80ac427341d3a9e052d1d6971a217a029d771edb237c9d499a5dd4ef4c74e07455707d655945fa9d829ba36d69149405b53cf147babe1ae2f3803891c7913ff9daca7096b99d4a4f96555c12e4c887dfca3050ec196115aff4340ad545b287f5b2f3c8e25f4b48617022a7187462e3e29a0fef2b9d45ad195807377530ce0959aa3211f9b198a7388bcd9adc7b428fedf4ba685e72b7331c70f1eb5507c642c765ff61b024ed798cd3ee8e6246f7a6d9fb96dac9b1847bb859fe755d0d02e0d50821c4da0c890d7c7143c2cbeb2b75ea96dcafebe1075a6a62d190c8fa28e3ac4e03cb81d889d3ee764a456e223890545b4b6612c60cfc37e6f207d32a328954092c184ad595c55df5f4ec0c2062f859a6d2db43395dbef807210029fe974d27af259f0beb11b36aae5508d94b9face01cbb18b1515555548c61ff8145e3dc33e3677532859a178e40c20846219cfd0de5ac6008ad8ab7fb86327a1770123ea4e68d435fe9da6eccb101c7611a1a8f36489778ba4807f3d1d9025945f15196251c0ea7288ab56246ba9043859c013eadb6dd0efa6ec2953742ebdbdda7ce71403cb786e07e9d2cebbf87b2ab41eb1ce3f55613a953933fd4a4cb3f0fb07a9412bc801593bc3aee2c9068952873cb89256fcc2cc9c9cdb42d93a73069cbe4e5309f84c84df107498213e1b02052b72bc94d4097aa0d9941845308a8feea81a07374fe5c78b562035127982108ce1bc756b0055b37b2f855237402a14cc0624e3382d9bf5ad8aa3a48ff7f0a2850d88ead9ec47c4ce7308672c76aae4d360d9fc363f005e8d9e61e4bc04fe8403185bf75b8f841f66c02c012bff047ac760770f98adec648afdb23d692a2911a182cf27905834bb8e843463ca9b5666c1e893e27810fb250c6864500a9050a968ab12052fdd867de9041699b20661d5297393003a6c0a29ce0b37edfc8938bfbf7d66b42d102ab98f54fd7a00970d9d8a5f35bd9da4be26807f60c0166d086d9b949fe525aad5b99a9ac87f3729e3dda472078c306afddce95307ccd271cd9d7fd8a8115d03c1606007885fab4491336a7aeca6f5a272f30441c9b2a2d1f7c50ab2fe0805372ad1f63406868b866a75bbb89d0492b40df0be9136d22e50da2b108033d28fdfd22cd1ce3a55fa96e3060f72259f6fe3813b5555542d8f112fc0821e6cd8301d7d608744d537da4f18b860bf640a932fc5357d091a27c7f59086b2f1e469e5e076001bfcb8833a4844360d8d8e5a1db5945acae4f60c0eb1ff8d9e1767869ea709354bf07b2c8eaa4c0c7b82a95ab49bec7504a54871ae7f5f795d17d8fd65ea07b7c9e7e74516173533b36812134b0d93e85fc9e45586a3fa97dea4abde988945dc627a7c562a57aa324b88f99f04828dfcc96c942672d0f98d85d56b3491621cb46ae9ec7948d177d14261e0572beca749bb8894832c4cef8c627035165910eb3301699e5317011056b711204276f4f029424514dc6ccd4f1c09db3b0541919073ffd72cd1c3b10b578eba63dd16843a3e371fbad84e15f1714782439b732cf3f99f0ce5bc645ca11b7a332b36494f9e02ce191d964cd5915a40842689e07b7c1934cc4c204ed7328cf9694a4d60f0f572f3e44baf55b350b2a9cf51e518f0985c783c97767e76beb235d968ce88685fbf2cde4418cd24316d31e247caf67c37025a1d31af8fd86ccbdea28116bc88c010e8157cc877689d2f4bce1c452a5f518a3f623800d6de06e56af3648a9dda3e5d710f5d35a61ee076e836fc9305145c5226d2ff8896ba7b115886353d3c1ec54cfdc5c39c22dea951dd7da2b422aed841272e8dc47f8c5d265451ebe6f256832d7c9d7e1faeab8ea8f377e142bcaac48634fe1dcccdce610d6c97d32ae0ae6cf8264ad3ab16698616ef971fa7d34c2562228c9c69c4a5e1a4a4e70b2eb12db765f865fbb72f286d5103a8d5947e4c86044dc52efa683d5d309fd4087eb85c5e11845fa3cc37cd83227fd710d9f559737a6db3aa20a68ef5582b8510478b77a2afdda96bdf7493edeead18f3783f8dfda86ffd19484341f1bde897c1da9eb586518299677d11d633d0318933208e5c395a5b693bf659e33a155a368886a08e4fb97526a1c584f6c03c58e599dfaf1cc159a2a802ee325adedb0b9e2bba81980abf05e094330f5966402bd5843b266031a165d01422b5438f96b0d8407e72c306c5e5bab3391637d7444138648ac1c2ab9483bf4d77d0fa25a254d6b33a4445553c9406e0ab68762d6a8d7340a3d9d0544f815c3b578e1418940b9f44cdee7a50393cc3f5f9b5cb636fb22a31dc7dc2d4ffa005a012b276062bb9db06f03164101885c53f3ac22dd92a9abce55836b4da54b7c5f413139c33cfd787e2ef8c22f6300292fd032106d49253511da930e096f991e0e1e11a3604a35e3812b30612239d349ee519819bfb5579452fb7f11b3d220112c5f1101e83232906a60f80a7000b51b1a0e4d2e8db03a3458406e7878928d66a334a1e74de5882d402728a3db8a23b734abdd37364c5a27a1b4271ef3638690f72f532dde896b55e5ed3fc5db9fa6bd4f307c8bc6ba591bd051b42d1860b783bfc43370c97cdc6314500c1e3371cabdd201e6e902669ece8e7762769beb76fd701df32268469b479172f9385a997dda24a0974dcb3f842027bee9d5da789739be2aa531c6ec4e45387e6adf74aa94b885d0dfaa591573c260f9cc4e40ef2b234b679fec9b725a12a1d349cd7996d19c63b03ec68242df1d6043a8c4d4482e021c88d5380e552c077b432ac02d925e11937833b7635ddde8a50913bdb9ef8db0316ecd0ab23b0e22efde0bbcc928ca1e29bdf44de7030f520fd37a3caf65ce1efd47efc6bbdf0e1f9fb475aca0e3a727722efe813e58c802ca79f9a29282dcfe8e7074048a757566485f17686dd18b0657ea725bc88bef2e10274a0e2969955056be360a8f787530dc8ae198951ea9367d387370db14fcccb5249b8ffa5d120f12e9a3d5a67e5bef8c2aedc8903db64503ad38db79d712855f29adfb03e6050673244bb39d484e123c8e422864c27b9df3f9b1b92eb74ada5ce19b4134e98cdfc2fbb0c03c1ac179301bf44b8cdcf7669649acf2a1fd2e340e84a2513461153110e9dbd72d5e5bf28e82c2d1ae85d86849cde3ceb22c23559d6754bf79b3337066f1e2b1a589bcbb7cdf5203344b8697ed043beb8c06619cd42e3bd6647d54bea24ad54baba4b93ee555faa6d4d0729265ebe9ed629832753696b02ac46e664a2b4622e8a0d49d0e8f623e317b1a9479d9475105870c420709d54f00a1a2d5836d946df888609de717cb9967de438b34139aefc9e0f9a2370c38120d348138852026295df0008a54287e7f6409d9dde6f0585f63b619e94c2d6f0c4a5d9814b3ed29fd9617834d1d00aaedc3357347bd02579da02278f7bc662898116dacdc47f9f818d6e92f43597ce7bcf78d1018221b8c6e44e04d6564b093b2068dcb4f925f4a0fcce13b48119edb44ca08ef77eee5491484001a1a7c8026c3aa774693e3a0f02acb46505a347578909cc5648507881de9134098bb89495b731cebcaf452a6336d1a11652814f501b299fb3cccb203c605cda6ed46031a0fc11efd0096814174f9bdb591beb5df0f5a0e77577fc0a760f2908622bc61b15bc369952f4f3bf869fb70083cadb49a2d3457a2fdae94493965ced7f045f6a79c7cdd1e73299b3bd4fbc818f117ba7a5b43ab0b7b91bbcec8bb04b4083b7ea673f91ffb82c414c01bf62049bdb774a8e45bc51aab24b724d7ca12686f2ba5e0be2521bf258e6ee46b6bb2d69cda0d1c495827fe5edf6e377c5a3bd13cd83efa8a9325046bb3c70b86ac7eadf55dc6f031e33590de5c1569f4029b51256f4e913bb9af76a703d9536501b12874ee2c8da169db40837e0d1edbcc1098dc1995f35a45a86954ae71fd2bb7f240f2c59622d1fba36828cf2d6ff49e0c7f6ec9b548cea7b91077ec6335256af05cabe38dcb332ad84698c0c8e63520f8a9fa7bbb9aae9a98a7f5d15feb25ea2c12e8394dd78f0391072e0d4fb20869d6e418ba18fb5014735c3268875a0bc0fd654822f655d316e389249f1042e950d8d7964ff36e615891e1cdf15b6ffe20d037cc27bf793ee771485c43076f9b9d2f2462b461f0a5b3794d73f50f56582fd588647e7f52478e1434abe2505e21324d68d8bf2bb0476e3aec5b21c4c9c0b281579a398456afbad8ca4582241bed1f0fc95fdb1e649eab705bb5ee09a2402bce10017fd4d965910e59bbec8b8552c3f4d8b6ee29a62d8358b1344719db01e1139e741ca412a4eb6c3f988a12ce430801b00792e456d0c7ce32a695edca5415effa36355977fe5e136ce326a839c5ba212662d48b89d5cf13de01661899e354be1c82b628f4043cb4fed9d0d592002ed80966a0436b6576c5d1b25097dea4108a9901acbabedb804e56ca7786d0b8eee6b4cc658e2924332034457f67b0c8dd5865b71a5015a2cdb8b28ccbcec6887070da905fe639e6b6762c8c830a23a4f243d29b3c2642dceeced3edd3286386f5c3fb125b96c5dbfca9a98697253dfd4bb3b22b5b1846320704d93c48f8cf06938f7cbf38c61e4c0d67aa98a73571a518cf80e3fa135cb4ce51f4e591de5f8b92a12443656615cc3a1f2757a8cd93d801940dd3bc64989cb2b24594489602d0a69aecc649476847917b279313edb4e1aa7ca217a27929559363ee3f4fb335f8840bff7f060d72dd46566b50e74498915911e8ffcf0d73a3fd7afe0a469add4cf9fc3bd1ed7b4bc30b7eb2fa4904cdcb879ab82dab0e197e65efb876d4feac3a3035bfa6c6e41abd793917093979b697e371578b01fe221c206dad36b4e4cda7950f4ef8d094407cb8441057a069308c6acd893a056001f83623503f556a3b9d462f9bfefbbc3f3e4d1f0ffed2e90c257f3cf18e394032da051001bdb5589756e60a9f3d4871625467547738a239a57b6859ef3e6f68eba2b2b2161c195371633144bf6fc96e364149ecffb0b8ab1b94150b93202c1c389fa1d5ce0804632180bdf7f9adcaf7710895c52347de4388f29d49186b21f93341aff51e89cdc82ee7507479266e9209a4f513f3e7323c7b32fc666c56d7f82a49700358cc73ade7af471b0f663df2407347a1e3f5a935eb43ad35f6a02de279a950aca2276d7ff97430c55c25ce94a71217614e0d1767255b874e51388b72d2ab3b0aac78550b79066756a561016e28670da72ce19e05d0cd0fe9802e070403bc2fd80d9ef1ea2a581acaef77deda0078673273a8e9bee846552ec9ec561e108ce8f237b8e5c4f8d84d0774d7d3bbb4ac18a9e5a343d6f1bebdc1bef6ee0bda171be0d14f1cd97efa43aebe3e66410b9ba8b55e656a32b6504d03825bdf0d26b7ec5acd040a248e8a87dbeab4c096351d2a2ec9b3280c3a7f8ba0411fd78589cf22d601d359bdb880114ec7742f320240e2fffbcb2bcbe5cf5ef9aa9371e29c03fefd830188fdb54b5c67481369960d748216c8c3dc6bfb4205f4789122a1e37e102b87edb76c0c61a179ee4d9b05f25b0a200d5901960107cd1756d401ca1b44264ea433c7a82c862351d201997fc5a939ca864ae9c3b8796ad57b881c986bff6b645fef7abdf3df34d459aa48e5ad881fb618ad899ef650fb0b9f1342a22343d0d56f31068547991379f1909171f95b9c7309d9e6ddaa6e8418640773a5fc2d98822a8228612c35ccc474a58de7c9be56c3b75f939397fa9569cf5d48da06e3ad0eb68c6d1d7da9877113e610f8f882ccb07ef7730d9d650fcf5028a780c0dee918cc3077b606d48c2ace778fe5d0b8feb8a6d7b45f2c51707957c52f0f0cd6a90310ce97056a297e80a9ed276446d96715e55845ee91b04834f1ecb86e7ac24f093daf7d70a9016c2c4a0682a53055324f88e8e4da8da4ad560c5611f6dfff3c1bd87f10efbc4c3868f8c7406bec3aa2831067e2bf2ba82b797f5d542b3edcb03a6b477f31ec0e63ab0e7776e55a6f7c6c32e9be39aa5a676145249328bf2c0919ec3d4584277bacbed98d49f8b46f6d5a77c1f02d139e81fce28e01b6d5d5fc1a35cd0e237d3e726b96cf5bf8c4b04255fe8d117b949528580e5f112c8d151a11ae893b68730d0d6219306577ef3ae7f546fb344725c3b443899c9adf9c8571770199fb358dea7edb4213e39119091246994bbbb3b2d88376d7df66a860b8c565860cc26b7a26049938eb4202f0884c9addaa451db29beff7e692c406e3bfb67237665290835647ae336cd79b35419870d4bc96895f4e58a725bb4f4c24c8abfb8d4471e6dc41ed742da2e24cd016e4562f40eccfee43dc602f76c29f8042d17513a19ff166e5986001e4c2addb246840366e44ab184bce371025b30bf816c0af32c8c6b0dc9648abc097cb1649b7e9861374d28741363dd0be6c915a3b03d2c0c70b4acb95e13177c87a2a4da08c6b8a87ffeaeb9036020f632fc7c03d727913d916b1e9a2884bc63ea68db0fd4b073b85b8b7c6b7a018abb176c327f0cbb07985fc5b0de19bd300f6506c01ef21469f56ea155dfd47720ffec9b9559bb5679116d9473539615c2ed9098b5c1e8b8609c5b5595761f6831e3aa763ce823402df292fe5deaf670bc21e70bc1514f5218474c7f89da9d4ec0fd704072a0da08e8556921c46906494b204b94369d54d462446e274e0046b16e26001774ee454521a2d0c62c418888a2b67fb56d3c3a0e733e7302fa1e4322480540028d9a2193c9ff6c29794aaf357828acdbbd08d6996b6b0efe2d8b74121c0dbb947322fdef5a7c24c99049a4ec18d3dd8345e0121a8e2d7add59fbeb734f771e1c8b17bd5f2d73a24f0351052aa11f84f43def6ac9a399f4e547106f2c50eabb61ea4419e34945d68452ce61652596f385dd4d725879d33c9bc11dfa5714af09fb491a1bbe35337253d6e4bdfbd292e47a0ae04e1c8891198c5f173b5b4fbd212a3c9ba50e70616edd6cea12ea5375f268600a388d2662d22ed63515c64671434e50dce9b29bad85a0684dcc57ff211e314afefd14da7db5cd51611e0671714fe403eaef7f8fffb7aa6ee74cf1a0534a883215802da40b9383b3ad21e947254d17a3cf12c8c62ec6de36c56712e18bc10f0df136cf64bd4248c13d9deff821e5e07a568331ec69b94860b7e6c09767adfdb9dea92fac931a0d9bb2436fdd1ce7b9feffc5dc784b5b82cb94047794bba0550645f6cf956979e906e57b85e446c5dac3af2fdba16bbc272df3f3bda4250cb14ac14edb86a23f576606e0d9586f140c74746df50d4daf5bca3e5798e3accb97eaf078d5e9f4527f666fbf30acef0f071ae100c20df74b5c9186c9bc9ba3976836cd4d9941d61b96bd529dcd322d14666972b90b506d6b27000655a0463c93d171ed3ba72d7e08488742aea5f8702425e48d42884c7a2e2f8b72fc50722ac0d800f9c3c339cf083612f75e621af167b2ffc295dedeee771e7656332098378974fd11fce592b51282300ecc334c2aa68eab1882fdcb8e6dad504f621d2eeb38b4b7060d76fbb49e6b5d8a4a737813d07ddb5b2ec22b5ffc8589da67607d447e78e2a6b6db98702afc49b1df15a0487547f7958feef0f05338c9761024070cefbb6eafc85c74f0b6c3a289c5ee66054e07520cf16f098f653f0745a4b08271836b575ea84bc94948a520a0ebc1f5aab30d0b6c73f5d0ec68158b005b16be8217cfdfe5d0857a186ab336ec73261c982350fa0f8bd6cf0e58584b19e1b7eb86ea8106a54e4249e9a71cefa43539dc4dc0698aa07e4900ad75fe5cf8d7a4267120fb2e414430a74d1128c9963b1fca35d02ba2a7e9e9133bc09a64fa52c4376c43a6437b66e53dd3be41aa134358e9e23dbeff143b8f731882b13b785acfe5f8bc8bd2e07f9c8582461734e640e1f1501650a7193873f326c61c3c4a6c1b5a375e89e647ec4305d947c411cad92627790c58473377a8752cda80e38ef93464bbdc1a9f5a1fdc156de10e0ecbe9c72a8ff664b4bae5e0f4f0d2d0c021e549a6ba4eb2c8551d26438a3bb40495fd27755b4d7edeca4184b1ff05e3dd1b0964f47ab1a0f78301a2a31efcc4002fd9d15d74b114e2df9d167b4f8e1517ebb17370a6638ee7ec77ddc142d2111ad4f4a9dd8962821620e3ee4fdbcc02130a1e2a2d92ab8321274112f17eefa7e39cf7f07493c71b3cdb4e3dcd61e245cc2605a461932f812a38b61427b2865d7d744116df72ebcf2b6eed612917384fdf910ee477367ba8bcf53e92b527536e9a64665a7e89fb58aa632393b212f8480e25561d808a81f4cc68d79f7cfa11280f9cab41a9d1c9fc405d2ad40ba6920bad6bedcdd2ba14825f499398705d01a7b7b38cd643484cdd3d098b3ba2993822e7bb59a9ebdf6c686cc8184c8dc269a2c99d37bc4ed61ed93d2da789147f63df111c1153c747a52157831e7d90221349e35b0e115675fcfbe196310f87e74c817c4303e94d753f83baaaf5af15d9ca2d69102921eafc4a7f9296b2e31d51736670c20f5e94bd9f468b1cfc48eda1e0430540d2e88be28c5a7182046c170c1c5253618aa4feb88d21d36f2bfbc845abeb58200767b738ee63dea1d830412dcdc01d13bca88cb5b46e86b68a86976d030f34a1fbbff564be002fcc3005c1e0d24c976b621bdcf626663608b8c629e5c64de375952f2158ec657bf7e57c6c15b9220b662c0ca9d7d5e5a1be6511fb4e553a67c4efcb448f9068a3ee22b32886d685666d4054d7cf1bca66abd8e436ec14a6a648d817c2c664deec67e7600c9cc064f302b6d04ef933d6557469e655a5edfdeda95365a614468eddbf87433e81d2fd2015196d34edbd2c2bb20831ecf0ceb64d7916085a12b8b032ae2ad3c901ab930c14ecfd49ba3e58ad63b5f3828f26caa9cf0c5813d9600018654c49e484af31bc1523eb7e449ee374c5056097546c428ccad383b7d7885a00ad3cf75b7e83803de8a6aafb94a882dea4a4e8185e98d70c373f3313f49fefc1b99eec2b3594aa1ac4d20a32818dcae9d2cdcf002da89b5f92d5f994fcb603d8a7e9ed6da19150d76df74cbc96617a0672d405dd0a1db7dc275199f32a033feccaeaba2471ed8d67f9db0f15699d5312789c5768097b35937c20146a5b618e093940a598f85e0dd30e350a72359b8209e421ed89b2cde1b868e78f73a7cf931a48dd7640f0612d768333954b501d972bd5f01756301e338937fa073146eda695058ba87067b3349357f4065bf7c70c97e7aa71ea4d004965e6e5cfe2ef8265780a65e84a40d99625ac0fdd19f2a0639df8854a3f3309f84624e7e51f85f8d3f46f59f0a7de994829110bb70be295c851bbca67482752e6d8027215b565de0d7213adacf5707f24c8a0e5205d43f64d14545812fff4f7b7c562ade955b66586c2ca77b2435f595f1fb88d2da1e5f7b31b8820752fc9994b1005f26f89cfe4d8b1a32406f8f9bb0c8fc268e1b71331c13feca74b2380df0687d350ca7c3355294cccf231e6767cb3c578cf6c27b91e2b86e487e08363f032a4620992a5b3d514814b75acc2a837f2f9288f367292a00e3434ee5b0d4afa686de7150a5ee227320444168f2ca2cc33041a68b633dd7af865541d62ede3af0e24dc9e21e58732228d158f9cc7a2dc734adf8e1f0e0cd67d70c5ea01e7bfc3e2d85682466c957f30d952709720425013b07f2bdbb2b9bd648b153ef3953e6f9934a5d5071dfcbc83102d9ee855c9d2bcfba5dbd28f75a25c896598256b3af18807195c8840e13bde70a7ce95be11525965ad2e8beb0bd8469eca899e3ca40a66721112c1f2e373ee5fa00e88090c82143e41290e7a9a170f760a36a882b57e10ba34a7930b8c7e2f477f3d228f485b71e472c5a5b419fb131ed5d94f9ca2976f187ffcac27859a59db208e27cf76966e769d6f667e02851f83ce4034b5e8a35e1c43a837fbfba962b16d09f254d734bbf32a8789df5e98ef856f4da4266c72a96a78765e584fb00e43e10af97b08f7fac152e197e1e37d4ee804740d6e9dd818f2bde59e93495b10c529c0a7ce6be61ac5354664d6a95fbb94d840ba12c4318fe444a6eb2f4278b970f3af83f99ecdb57d50f4d593b7d0a202e0cee01460d8340772229ffcda773b23e42fa38c28ba88df171a836edc4327b9205001c04baeb42b63f23d0f87f17774c6ea73058682f7d1b95d1bfd438f79325a8b94fae89a88e4ae650943ad1e61a7e562d1da3d3aa18c6656a2eec572c1a16a590a6d2e0356c6a4fd6128035dea15a6696b8575be04423c127a7d330c965d5228181ada585ac80cf2f98db0b088fa77a67cbed02d35caea903d49cb6006f1af7a57426888e795e4add70de73d43b95c17d16e0c6a9e3f69476ba18bd631150d6334adae8af0e2e14e2848dcce530a598a1c08dd9dd9bfa39ddf8a52bc70155b0e2cb125d7a5159127e2b5805257a85822a14215b091c2db711f0a9ac00c608b385b95f9eb21d7bf3f373de05a0e643ad82579ffd377b89192727c2678894547b35c26f8c7255d83d1d7f1d49dadbff5f83c1d21f947e43245ce092cda7c2868e577984f72e57e92ca04ab9774be730da0dafd5459dd9f72c38f7947c4f79ff7461f11dd73e4e6db4e7259c55e8f7fcc443b5a46ed567f2ab806f425757e4e2de6be717a59e2f33833fa46a37d34a71d2d1afbdbf64b04d9c6cf7ade12916f16e4da3d5434d71ade841eaac718188127f537cc0f7610d35a00ff21cf22c45d51f87db6d11900dcb1ff5b37cf171b75390c31b004b4099c466f1a54471269938deaf78402a1fb9c03984c9a738a454f0036a488e9bc122b6891e4aa67b3c6e74e18ec8ed66af6f933f499002a2307486b0ba9ac5ddcf04e33d4f62667b7e10ac9f4afcd9d95e75fc0efbf206cb607a4247696479829d88aab202cd0dc37d5818684f9426f46dd01cc169f66f1c0874d0337195a89f8ffc3294adb08c430bba5f4e1dd641f28597bb02edf2f69de500965619a578865475d9da2e11db1012567dcb81f9b5fe6bcb158ab2142ba513629f3dcf599e9cfe97262667ddd12ee23d845cccda779b3c6c6283a04e5668125deede48025015a43288b4cf83e6da0e1be42723115dbc31d2efe37f3497877c68bbc886077ae6ca53986fc216530a3c8b2a2130d034ed0ee376337cc2b3f61acbf2b2c30588a303b4461949a852ee73c86a1ad2aed4d9698a2698050d04a1116ae7307f8ec3416fe758122ed7eba40e4fe36533a4560566805c08c67d5327f3e56dca673800f51ba97912d7a2728e67e1ecda800fab95766267e8a317433433db09667a8bee25723a3902d329fbef64f7ec868d545c460328dd4dde923271b77862cffcb5c8f65f856600e202e2cee157f7ce0715e4440f0e4439b99c61b6b9edcbaf57a67ecf9387befb2c3793235934fdb710fe0024744ff400f9ac99cb8430605243fb1635669c71f6c3c1b9191a60b7011d60dd1ca5f8a3237e7e3ce2cf6ce503d661bb203e79cd38543e02baef375f7c99a41b3a21dcc8546425ca516f455e64228b36e4c4d0724baf640099e1b0e3a38ee24c9ad2ef42f232401cc676b7f000d1edda0c0e9b49bbc72d40c548585a00e7b8d454c56d751e97f3c5c354a1df5c70709bbb140d977af3dce4028b6d45992b41669e4b625dc6555ed163b9f315e71e3a7c4b7a12b5cab81ce18563a73d01dd5d2fb5d2e6e029b13f1a7578aec175e535e5b2dcc739b3e178f577e1d749a9d2cad33a6c2800342cb866b0cbd47f9b754ad78b2a35632e95f372826f3880613bf574e2f1e024e4331f648fe8a6147f6458b96aaf454d69ef0608b336f2de61533de666d1c42503d712479788af9056b3da7e2bb482e07490c176f748e7d3b4d1038385966a75204d0007be9c4b071baaf50ad50cb19e544ee5aa8174f78fff74d748ff11e42941e1ef30a6277ef225b663d26193e87aae0e4f68b32f9b04b67315829b69f578145fab5ad1a63929219c6a7c689fd590ce33baa133bf7b0d0817c8b982d45f943e7e34642eaadc1fb94657f7d5715d06f05f7f753903e8ca83fecab9a5e4bf81ea91dd619d25293e0bff3a5cffe6487d9725c2286f1476a432f07e2f358bac8fbe05fe04772225bc9626e72a33cd452b54b4f1d1101980562f23bd181ab622554165bdc379253ca3099a8f45b9797d11a257a81cbc8d763d0bf4ffdb7ece986288b0a26199aa340f15321b33dd384fafe8849ca27337d48d9dd1cff2034e7bf04b2d6115d1a07f1f1d429ddd37d770dd771b6681b930324392ca122d1a20f502caf87515644eabb44335c2b3264c59c8dd0e074581ab481ad9d5c48f0d47240e8e00715046d01e15fdd61e87c1ac3a04e0b7a08e161fe351cb5ff23a272c79a9851f6903690a9eaa0100adc157758c79b79ff8b12e560cfb30f6a329da4c7cd9b4609d585cad874d061b0122a16a5714ee8c4800685e10b55d7f800b2969d9056b5401c07df9eb1f036f3ba21d7b411a918cf918d0616550b4f25a05dfb5f17a7c9e80048b435cd3a4dba93a05b44da5d3e7ef5188fbc84584d735b43879eaad6606c3edad3a193d1338da45a8b95f27c82086a9d2de4739ebbaf101374fef3ac8ef7eaa5eae2f959ce393afe1254a09081c456da50a516ff167fc0f2fee691a018ea524b4cb46c5cd4ca61d9de8919cacb43dc764c6a26a2f03b32fbe73dc440fa19e0186edd060c51ce5baea3a3f005663ddd15dac79c6d6f25c5b8f43344dce2e5b67c6b1211d325ecc15f58854c9b49484ad994e580e4cbddc8ea6d219919b217f36481646dce84cc58bab7ae5e5de2653acc7c76c90dd338f7eca1727cad0297aeb49242d033744ec8a7c16fc9f2915c9a52764155fb695ae94f60a41e9c9beb3bcfa409e978520eb482382de8aa2ae27c0cc9393cc70125a2267f505f7afd8f3e3e6125dcf34d3cee1924b52b4577965592a127fba326f88778584a4af4da138ba298c0b097eac2be2d4fa3fcb2b4cda80e90e03beaf6be671847cb6b76990ef972ba0594617ebd78d7c9d5d5b8112bfa0009103ce5a14e5bda2eafcd37d4e190875def1306b73ed85864f18877340b0465e48f147ded14adc3f1c0af0ada4bbf12bda8b36f1467e24538f6de52b4be8110dd5063c4b5161359fb164d4a2dca7875367e7baa68cb41d921e4065f9f94165915d319dd653edba0b87f40f405cc764ecb5d66ea5b2b59883c6f847af5b41bfb8f2e729e80fae2c719fe597cccb4f83fa3e7ce74e97786996ec4907e2acb5ec9b4ab4ce41b2c74991356f731a1aeb22a860e3e57e1295094dd5d1f7ca8801be5d0eb77765f65612320a9311ed54cd40764483d0067e876e074e7f8cf4bc7b91c92a1a5040a78fbf0bc22721a70fe501fce4e0e01727f25ce64339ef4e3f31a9790d90dcaef53ba40e9b43f7fad50d4127b6f6a794f26b98e9d3ee55cb5a87f20c1d2020a7135b379ace4573379010c19c56cabf01c16dc5a5945824efb8f50450167f7bc0c2436ef8da66413f8e131d029eeffa94e70ec1f92e7eea75fe653e69003ba73cdc02cb21b4be1a20089ff41cb808dd32b75e993875d61b984d519199331e6acd56414c9667b00b79dd5750eef27a24a510a617c3bbcc5dc7d9ea9f692aece96d98fada88345a5548b412236817d57112d91174af649eb445494b971f814627ea5a6ba300c39c14abf03cca78e6249fc850d64e8c2e2579085e6fb6c9714ccf9940168c19d93a92adf02b388c93f4291ef9b7ac4ef6c7308803b4a11213bd5331a4b3737587d3520c597ca2907d6fe8957381f9e8f5dfd192a1bbad2b04c439b3b2e88bc6255b7d300209abfc39e6bf07dd47aa8fb4cfe7f5c29e4aa3f2cbc9f11551869640e23f05260ad3d9bbcfd5374be0cdf4c9ba7ce6330e8cd2e54ed1349b714990a9bf31f33b7be29d17b092a2557f237e224d3877efbf786c2def942a63896be876aa1534c1f05d6ca623805ca18ff89e10615a7640173f8a21e71c57d97a33110f5bbecfe01503592d280f273ed5e92af73919fbbdedc325bc74fa838ab122c5c58f8f8d9d9da66573741f484d5bc827897081aa2a03875dea5cd86d3f2e2af2b04c70025a5022beac8604635de27e6aa8cca5d28df9270fde8f9cd6273eb8fbc76420d5c2847ad41db97d01168307879608533d2a7c417f1f9677f89e6f53354098971ad004273f8be41ee77bdf7be5c271f3d1938b9dbd7e46e6e0239a1fabeccd3937b867dcbcb315a7d1cf92bd68e210e32e987c0332e51bd211b59a54cc675dc6adc7f55ca1d5f88f8873c2ade8eefe02b24a4b8f85a0a44393555528ebd5964a41ba34bbe7470593a9436c1ef9fd6e8321dd917692418b97646ca641df87aee7137e97908faad0c6af2f94d4a491538871ead21a33967354d58a2897251a5fec862b00c71fe2e937ca5232dafd64766b6e2aad001a601af2a08232b4fa49a6f7c82aeee62711aa5a68451ba82d6dccc6a1bfc3e1062d75184084c6199534fb2f4b3b310f56a770e17bce857589b992d05edd397b6c516f90c9d851f29c3360875c23cf74aa28d95524b2c3904be2ef57d71a9dbda09154b63219ff952dd9f0accb4d577a1f9d51c9586a3e82a98dc8bbf334201efd0c639f3821d1a6e8e2111063d4cd04fef7ae2ad93d0c48bca2766a7b58c3dcd9dc8e9bcc1d943ec471749384ab281202b69ffe6f036edf0b59dc71fea4a7cd259f7413175eff8db7d2d90c3783099a8f8ef87aaeab159c403a96950bb8c535ed098a55a45fb20d62afe637e9aa850afc3f1efc1271b16c71c7678b886fafbbe32149b1671a9c8694abd780d3628314b9ea4943e1d41dc4cb2e797209aef1717923a613b4a94d4115ff5c852092b2115c0e28d54982d86ab369be2b7bc6453fa6a1fb522b672c1a1ee5330437fad08b5030b29b338bc124360fd145ba4aa265515814a39ad96cbdf0086e3a23b0ff5166571af30f08036a0ab6e56f981f445b354c1b8e0bebb17b4a224572195c5e6ca875f5af189feb2c0d677524671b2871fca6dde278b25b7ed65b1670d17deb26c31a5968b1d2dee6d640e946d0abc4ba78058fd9b480ea11fdea2d462ff50a274ccb8f90d9c5084f71de95447d44aad02624011bb4065fb8027816042c123b97ce6678a354a1fce548be432a3cdc40902bf09235e50dd4c0d5d1228fe825bcfd9b2173f953f3895d97e777d99e356a628cd869ac86a4b725a209702c49ebfe5628595d3e9e6e9703788370d787d5f7e4b22d0d0e7145571bb1617fd97226c60645a7758577e48857a826dd7cbf3a884223c2d65b4e66e825067bd42c1523411084f0c1ed89c949e0d05baaf3c1174e179fb8c1695102bec954245040425d53bee26dddcb6a7f1e296f2c9e96c9852f717218e2319d1d789dc57763003c4f7fd4ec5bc3d885b6c94abeb1acdd2bdd1387cd917735e016e17d85cb10fed0f04c5beb66823ba47519deed7cf0c8ea9f418522d8207fe88cf9c18898c142617c3bb9ba8b957794fd3e02a6295b58ff77ea0d28f4e7e67e45592d51b8073fda5d1593dec637e602a028a5f7a964307380f725651709e2aa8b098ead4a25397b2e27e3af9476f1de410d381d380d2eb720947092c2537ccf713de467976aa20edd1c37de8525afc5eecfeec649999a49d512f07bd5dd1690db78a5953c414113886eb6af8ee5612c9217f16e8e0254825d61d2b03b6f59db7a2ce36af893eb72ba49d0b0b0441932f1580215e4804a66bea8b7de3fd08cdd5cf6a4a5ef4ab8c9010d514288805b9ea87555a8af5cd5244713d81a4510141df95cf6d366ff5d5e542ac99f79fc0842b6f81777297c83a78d76f9374c275405d692a218ebec8e4dd67716b484f4f8c741a4fbbe1ca8cd344defd33e18eca9b6eeafc77c62c41e9df532c7a8cb936f91eaa3cb6e78e64e1d935425160eb7b0142431703bdc668a0864500045af202d8d4d5ac7756c953e9dae7c2a2c95ac9c8a0d60fa359a8f4551f781305ec5d7fd916039b6f47dbfcd4e291efb4d89643c8613e92b703598e9f2e86e6249fa16ab1b7ab4b219445d301fc6f7c87ae08ff3bf3991f9128383cf0e99b4551772488506014330c5b5d4ef1293724874fd16cb5d62c1a64b9f9baa2bb793d52981f31520b538cdd81100e14debfda3a22621c8d224d363dac32da61c346bee5ce3ec71788a55a122cba23b68380ba3374a5e75400a2aaa078f52de65233d65c06d1aa36fb17cfae4807f1e6f5d736aef5b64b572cb2b98e9d7ea7d871ebad47d388960f5c7b4c9504eb4e5304285dda392cf0467ac26ea11af1e64958d9b078eacc82a0f6ab835452a3ee6cf6bf2ef038ed9edf4e04a8d8f5225896f8378b8aa69872e4e82762f96acd26e602975d0cce9c2e602214c872b7796cbf73f5e71f84eccb5ea7f5cc8e478a9e7dd6d6f5503c91217304c8a8e1edd6833a9e651847a8ce1dc27ada617a28b388511236beeca55cfb51154ea984a89456f686c40fc757db75fcfde0b8d2111e6176cb22597b92e58ead0b9bf151fe91f2dfe8885c9e7b65a7559f2fe02048f25d5909bd70a76f0fc72bb0284502874f9d80b78609a8222726b6232f0cbcd80c078b49a177170bf3ab196004ffa3e01b2d6699e1902dff81569f2301b6131175a5eafb82c8741ca7a6468f2d11b32b50abe76bcf4a28e84f75d88846a2c906e17ccf05972eccb99845dc414421f58d9c5180b92a02185643795513368a720d4a01b93ece209ede73036c90871c62af64346b46d5989fe8d78f67d802613143917a43f4df39b4eb9bd25a2a24dd523e2c2c628aeae58be0d217d9bd926f260634c89a6724b73825346f48d1d2ba086c13d0622fc23784a4533b310085c0d8791037694b3f089c34b8b90ed9c620626c63932494c223673e748bfdae889655033a9b4c4a9ab98ba3249c7badec8239f92a587b4a038e41dd793faa2d03e7bed0dd1f3080af439d64af3bf64a784c7dd0ea083a99bf12e15295f923b30613674e377f85fd238956491079d6c1c3a18831520b49fc983b3e94333338cc985865b294943c47b20ded8c590154ba7d0fa6620b9e8ca1a92a5e3cdeb26bd848b6c3716b7a84d5e42f6c48607198ec2781ee2c9873e7ea66a5d60aacadc88a163b04c77ca6d595a0eff1fdb44daea6e518e85c3e1c1eee53a9d25e4176f86aa8fcc0330ab680667f0b59102cd1bc499ac261430411a0f883f450bf60dbd654d22d97f919dc019ffa7ef648f6d33ecc579c0937bd714307ed2b59580b988ff76b0f639ecb23a58665ab0753494da9371d8e251026c8d04d8a890f763177405777b50f70bcf89bdab7b50d3f98314428e5aaa6ab1162d4b14e3ce20bf30c0d4c97dae2fc7ba7804a28e399015cafce510435896ba5148b4de7e3862e70278b01d63b3a9610c868fc96fefdf16b0ce6f7d75f14b3a57ae8f04dd2219929597175bb3625d48bc41307c810eb4ce6a50c75c428166dd2ffa49c2bfdbb2af13e7bfdb3a32213afed76f96df547b1a8d49cb783e1a886534bfa090bc91f626a6389c0c62690f19fcfe451049770a558b8e9c0c345696f35db34215b1850e91ae21c3a9c7005d1acb851067adb9d0ffc2a4e241536459ef5e28982414810080b2c71bad429eb5a21a4c3feab8b6dbc215ff08e2972340b1fbfb0ff3c055f2df68fa0e3ae821af82afbcf98afbf60dc99ea8e3c62ec3db3f68f971f9821596b0b68722ffea0375acddd2523ed99ae83be3fc27eae90251938cd2a9cabd7b4f73d0fac677166c6f2e6e587640a5bf8294cd7bb3aba98ffc0e1e48fe6f021e9ac2500002c2949ae7845964414a518432aca8cb26b6cc7afb21137639ee41220886fbf00729e38ff68cae73060dda01a4783efd99db5250cfcf100821bb956462dde73cfffd8c84e7f9fa66467b054e8240e8af873ae1af42fb508a9e8d848e561da4d98f1f51df2417b917cc0220358c865626f2206f92de1a21cb9443947f88e93205135fe51ae76f56cf2f13a0f1c209234cbf3c05b462a34b7c2a07c2d9942b0ce98110d4f36a9eb7c2ff9cb6a817be029c6c446ecfd28405a1225e52133b08e6c089ac657f2a8f5155ac70f300b0fac0ef788c16b0b7b3873572c171ee62e153ac13f1eb81a07ea3883c011e4bc73b64849c2cb1919c975daa7c3abdde8b512d6843c6d58249d726ac53de9abd1231010bf0e6fd2ed3b943f922f931c02652f4d2f28d92cdb04b1381a0ac4fe5d0091aced99727da3fedf14aa64474fa5fe6ce6fc680abb4b1df32028e9c09ec0cde0b919a4f9a8a5c4d1cbf78fce3eda6737cf9fb93230ca8a77c70e0d9ae2d6b30fb4d7057269f4409b74808d8d32da2a0509ccaa63c1fa3342b3439f1f9a9fbdbe4e9ba5d2d8d0aec312a871ea9138f6873a8a1f3550bcc20000e63d8217575dd858ae032acf8948d4388a02bf27801c6d4654d0bb8d3b26ffb78b766d271ee5d82e9eaf7cae98d214bd843a9b716913aec9b8c7cf1542142cc86f4ff201ed0fa7fd4cd0f35b9f0f589918c8d7a431f570e304e6a23c0a812dc013c1417eea76fc577a9f5bc02149d847f58f785325ff78e83d5fa7887d2985d0dc3837133f1b5ee0c4eaf16906cd232f7b25dfda241527e4863ac612c90cc5b8ef15b36e22e1a409dd928429036c19ef41554d06c43b0a09e8d2e546a0ebd397932dc5ad31101630df0de0c41bfcf4a0379d378fa91d00735058c0be5bcf41d0af49a77f13d60b8d91e48d1842d56b5cbeb16765fe88e5dc944f0a315f83ac728da487bd0ec12dc79036e342f855d993c5f6eee80fefd62b200ee9aed61534e0e07023417f4639214c345fb28e5c7b193d08e97fc3e700f20441b9a9e859ff9644513104043e5a8910a3593139d1bedf67340e321dab004b2168257bef66d05abae09bd2d863130b485d0149bf1b9cc684fe1534e698d4b310578c692a17a92b7c298c190dd8b66581d0aa95fda80308fc9de98c73b25cc0b9b5b7629b8a7fbc622d449d309e6ec9c97d6ee6c6695a15c07aa63ea81e6bd05f7de2e673a5025c6b61c91f9e20d5fc607a1742f55406f8d8b5709d91a66426437f0fde888c6e81732e5f42c3a81d6dd6f1612ba4e10a8721a015be6738710104e0af51c22c716f146fd12ba4e7ccea2b9f89be9e8eb50316417e264f673c9d2f95994461b41e9fa5f68ebd60710115b1552882055b5aef33d4f129f4e8453998ed4d234316f6e4d0069461b03e4cb5e87b6405114f202cd347289bfb17c2895b049086ff8bf581cfda24bb202b198eef886fa59ff1ddba90bd2cbe4f700a34c5514b42da0cbf925b1d58c46277a75d8a8b5414eecf05a85b0c10a483169e388d19cafa08d9cc8e9d7071221946921737a5167b73fba2f9f43f6b5ae24fb26c4cf93bbab8f6b5c9e1e80bbb6922e9965b8d1f515b8865b03b14b2984205536563608c4095a98228ae8e14d40b75d84af20afe428012bf2dee7e55d562471376fa12890751fe107de4dd9448ab0fe29fe37c74c21c330f91a224b6ec64c64da533a65835d2438939fa464d9c40a6a5279154d7199f0fe0dd97e0e6c3fb58f5b7210941f7358ce26df2af1ff86c5139c1f598bb1c30c932fda9423f910079f5b699f9bdfed0307741b3f04959000d12442460f5cf840bdceb220bbeb470c522907e8be71ab14aa95a8455707d8f387c6fdc5be6a28483f0a75bb23b4a487fbbb4b8a62828e93997e6ff1f78556619a420644b1c14276041af1fe26cdf480e78d7a58645d01d20e0328403320933562e11d1843fdbacd9e8208efab4f77e7a2b2c6f3ab2d45e67780b40a9d4d57c7b60a0757151f201a6e6d3c38cc84744f3f3ca5e2539dd55388e4e482e4751597ad96831103b18a785ccf4f1de1fd38f4bfb18ff80f10439027e68c1a23bdcd926daa4fc71aba6fab67afca46c3955a077c75889d7859fbcfad6a90b8b194d5ab71da3233a46d51980ec11e864aca070111bc4ea88caf074956fa90d61b81d314942ce4d2622c4dcaa1429a1280bdef0d965d17147a4d0b5108a242c10eaa5405cc1089a8197e7a002ca70fad095d4b22fc586079d3e7503e8080f3b79d52c9055785fd0ae5eafaedac3e1eda5bca6929b94fcb26492dd9462b3c5b7f020db62fcc054e7a1fe820885a60010a772ace8468e71074d3c963d048a94e8bfecd739fd1946e1668b6d5adf1f2587085055fc7e7b92075aa3d2511a2b0312a29d1ace675fae5498b41293c313d8b4af843cc33675d7fa646f14bd324799ce4a77bb552f9346c8ea23c76792d81a77b69ad87283b418ac964fdb90a0250dbada06cd57ae35476aa22be6a6b283a90fed08710e20f3bc8af01017c6fb380e0d6d5d08e91f2e4c9019c5bec40d468aaf559543e6eb5b2332c50456c99ec31d7b8e1ad66a22439ddb3cdfb1808ed87b5da58703f0660b2bed3db7e9ae288c27a0bd467ecd3c23ddd30efd5bd9a8f8146ec7ab1cfc3720fae5d4f57b99fca1cc8ff1fd88e555fd60482424e4c7cef4a60c5c24640ea85b66d4d925cef2c23192a411ea999b38a9b2ce271bca63fc483564340d218c2752a127f0ea9c93e46966817a8d509d1660ff4256f8cd212d4b14d0d8ed9684c72b0ada901de2dc126f2d547c5df7bc030575450100cbd9e2e7001c00fc7b14bef446588611ef11bf6048ccddac0b5d78fdcf4d0fd39f20a16ec3431d2e05c8e57d0727702c19f8a16d48e45466e81bcf999b1479ed7d4c746eaf52d01d72ea3bcd133d43ccf2dd34f83f920f971d73cb0de7bfcc743a2b66a292fb71ba42e5621e8859c67d4ab138cb63ae2ec93e250df97077ab567a0b0aeee44189cb802c207360f815836ab82f5eeee3452e32249f7f8bc24bb7d33af4694b155843c7b8e0b3b5e91eaa52d8e029774cde994a116ef23a58f6af3e843d80c0105061f1ba2f604efa2773e60ed70c306af54bb697c80751d8895d6f8b0319f3a697a49b083fcf648e468749ede2bfba917a8b0ca9e2a3863af53ef31ae6d6aee5898ee0bb6700c589e87ee46b955a8878d21004135431d69ec1e32b9c8d635fa23435fba3a0fba3624bf8cb66c7e7f48857409cfc9a89989086ea80f91fcc0052dba5b96f0ac2d2c603fe836e130a91d1d3344398956d26bc724f631ccbed0e077417e9ed65ce2ecd79bd595e58b04be1099ac2bf088e008dc60afc1140f245102aed255b99257247678dcd563ada6da62c57fd3d1d24c02858ff9fa235dc457bdb88b9772ef7c46a5d44c74f9e6c9a726609c841dd1952c1123963d1e2236b4e9aed6f0bd4cdb2af3fdf8e733216449a534e66d4bbc23e47717b654a85636ea52e328f90dd4f657cc577c3d8e3434bc283de76350a24001b0620b23fdf139dfc92c35afabe8f46e6fa8acafe6425b6d2fb7758ad82cda87af944cd95b458bdde7377ccee92ec6c9abe8f71a5aec1b4b1b49851bebf415d0f814b488a4fddeed9b56e6d56968272c644ddbb357a1b635e1b09059cc2ee612c6da6f72ffbc01a18efc778d8ae2b9aad94e116f7c965fbbe9036fd776eb6bf079ef8a3358b93c437ea21b2b4df0f64700aa86eb95d486a7ae75d58810c07c1728a83506dd3614e0a25ee996fd3c5f36ed5afdc713d347781ea85df6cc883c95ebbe570732cd201ad5493e9f05803ea987912eb8435c8f27fd44912fa313d4ac94e29a8a6f450700add5f8107e1dd93ef4efaa51e53459d4ad773f130bd79d47f7522eb590c4dfc31594c32c1039b9179fe68f5056b13b78298679203420e8d8bf51d20cc58849d1b198e0da8f91057e90b4ef9cd94556d14ae5cc5957e4682f9a9df95f94360325e9ff923c22197274246ed6125a98e94e9266958ac915da623fdf0ebcc3862f0162035df237d866fd95995fe48ca556326025cc1ac7e867094733f468e2aa0c5c009bb5e00334a9d2c3fa6fc4bd81a1f8ab5673825ad84661d220be6b00d51bd0277ac82660e00dc25c6e790fdfcfaec19a89c8d0c6cd410bf322582485a69b98cbd738e44faa85194143005b120a53810b93343c869631b8f617ef8808f4713f2e2368ddf8be9c2ce1f5a6412744e6327b7a8b68e3ad9a4df8105336cad70f511201ae2a6775abeb1348c3e7febb6acbae7a462ead56ffe88f7d5595bb85c80056752ae2f1769b16c71ce3f10bb3d88e482b983fa185c5e5d3eb6acc13b530cbcd707f72eebc788db4af1929de105d0b534eaa98c42c6467c62e69d50c1571a664908b57c136fbe7c07c44a8d9b2a88dd9f0701527852a371863e08965d26c68fc7493885d62cf76d459b4b28ec03249dd6d959424139dfca5e9d9ae62340cb53103d89111fc6913b71276f871b7b7fb1e21a3eb60bf07512b5a6d2c7ac076f6015f0b1fafba6c9b9509bdce7346ffeec414199e0a461c0f0e9d1205e96ede19f7f00192f1c234f907a22cf5a8529849b621ac017c1b600876ac80f9d02ade935265e586c5946779bdaa7445222e2346d2a35e1cc7aaeeef73e1489181598e62c9bdd39332c3565c830ec4e8163543391721c2828cc864677801e915f77f4859c9f9ac3c6321dcf9b8fec00e46163ccdd86611dff16751c28dc7d14bad767b34caa2a7e7aafb54025df9832887ccec25fa7760d429caef6871595a0fc64749bd7659f5e2f0750fdba5cda94ddd7f5ac6e8a59800c0701f022808121e65505d1153059fea14678e37c15eacfe8daae9670d80d0c3ce3fa64d38659ff24630be82f9da90a189925f4466ef7a5b2b02859cbace70bd020a4eddd26bb34b24a291709f345160ed37a5f6e9e1e54b1c7e05a1e18a6065c92c6a5d070aa38aa4c70b2d6ac8936c2e916395e32afabb752a7a9c3a05dcd8571c6052b0bc0d52cad2c91a0f78816db76f535eb88c29d2acab3a0c3bc329ddfda0ace79b0a7481638c2b01636f369f638df1500552233db69c98cda5be4cd6d4bf6c6c0acee3f95b898a6a081c5e99c916a9a16207f2ae8ad6b00ec5b26d7ce2b6f57c2622297ba8018b3cb22cd44f5078c2dcbc4f6b677db22ca4312ccb64b40f833f3c73ee720e4b6874417faad92c4b699bbf2ea18ef7ad0be50c8c2010e3759a8aee46c46b3be12125a9481f2e6168d75cbac270b8bd413ca193adc29581fd73d8e5811d16bea20de9e7ed04133f02025dbcb593ee178bef6891969c2e3eefcbf9dd42ad69bc968e19ef04d114e68c492f87bd55ce0bb5861d489a3cd78fbf3e1829d00c1f0c250c1c7baedc537376a0113baac505932b6469da2e95c68826c06960d211af2bd7ae691dd920d433c969a45dc15c6f9399aa049f3c70dd42316ec5711b03926a630efb010421289f9dd99de0a2224e56f6c02d3fad32d9364a840a6ac058564f0e052923e24f17c14f93763bec375c638fda7c1ad568f152a7b5c8f739c511d0fab48b906591fb5d861b7f24825fd4a3a5ae87af4c658db44afa8ab1050c788fdfb42973a99a66cb18534954c4f6b72e0b27ee62c1459f8e0e67171c0eb5bbfb63a925860a963d1b4851b35421ff606da4c5b89a5c0aaa0148e290ed408c2b7bb8400bd349cb0ef1487653cf58dc6dc9b88ee9825ccafeb56b357ee333d6507937a787c24e524efae93ff100546792ddaf51f36646eb0d10470bf43d799cd0b461c09e8d33a555f7e0afdf5658aab81117863f38ea1a6e7dee077874c7984d4e0b5d86f9649bd8628a07729dd6cce1f017b9e05c47c008487aefb2b349e54bef4dbd876fa353d0170ef3e718954bae42c37cf039b5e63c607267171c5a1ff3116784d653cefd47ec299b9aa58d4bcbf5a06a8e59be7b9734ce1ac9449b2c26160e5783bcf51871eabf7995c8dd11ac915c89005c1c416b7a4ffb05f9da14432ee1cfffdda198fb45d5948bb42fa400f2c56c046fd49369f44eeaa78b243c7b462f2d135b7a54f462fd7240be08b1cc434096024b5dca89fc4c0b1aa101db6b96060b8657688ab291bb202cea9695669024deb5a402ef073a119c7c94e61ec0b13e5c2c758ecaa803f447fb32f836af732453d116c461982baa2dcc19b414cd6a7ee3edd54c59b3d5c8116d6d98ad5c0a481fee2f95d9d41d415e0d6388b818ecc57fb5b95d315775a07176965fcd2fff9c264f21c89933a16d50f1afc9509813af4efcbf9758c96c2bed79d607365921acf7633fd317de88d131a9fcf82dac3272d9ab8944c58d7420bd130b051a365b25546773963372ba98dc8092fca43e6d2ada0b12bab629f2d8c7bc10bb68176afe4d15960e2daf7bed13aa3ae1ae22dfc1f9076badbdc75f96c16d27dc2971bc5ec8019781a95aa8518f1437187c0916af8c291ee30adbfbf45b70ee6329480ead56b8b78d6c3b198ad2906b30601ee6553c656ace87bf4be8b45457a435fd9db23e2d3cecbdd49f9e752e24040a61b39e1cdb088de89b2d791434a3fe722d896aae046daf4f1a88cb2930dfaab58b1b9e2086e4f0ebbf2121987e0924eb35eded269d871bbc74798a4ac3058004133b935eabc7ee67ea11971439ca2bd1139bbeef1d05af3e9ed4aaab353e2f051619371b560c86a800cb82807a4f4b203ecf79d510ed4a426c5313d6ca9b63c9b24a313e3ba932648e8634e8f24dd5df847a142f0f50fa74d00c32c3e3b060d8055cbbb2d277bef392cb04092460b65b67d8e851861ae0a3890d7f60cd598a3ea35f0785a50ce7798a6d80ee477fdfc8be7d3eaa8384b5462f929b071764459d7037a250e140fb178f53b6996e3864efb964c769229f386a39bda7c19fd7aecd079d8d3414474fece84d921f6064e2d1dfc1960d7d7a6fecaa4ed984ab2ba1f386cfa4a28156837004dd93c886b511e34a91cd9fb39d81a2f76cbf0d1e319a870f3d592964e097aa050069168b05eae294a7cdf1a53f3b8767cc049dbb6c26b4dbce3904168abcd49434cf8ab379918f06424231156d37e27587bfa75f173105629a0b462905395b4564010a8fef93c025d44fa6f5848f5c2bc9233c88dfcd9bfe80eb4953c3cd27be6968a4262cae67b81cf652a2098727c9bfcd73288c4d833843258014d5636379ea80daad22d6384a2fc252e43fad4d10595e5e77f4468bc3895591dfac206d5c0f6a41ac4936705c8c6de5ac41b0d91b39d6db56f89fd7316c34ca7bd57ce5d6ba0c18f7c4648e8286c4c89959d78143f391d07fbb645cf00cf9e982720e08b08eeca85b8e17e536ff18794ea930cc0f9f155608980949ca9cda12f18dca9e0adc93e2d83d280a2ab9d5b9715075009b231d6d0b0b0a2120a57a95d287dd621c63f62b108dfe511157aa7cfb8752694e3c8f1253ea59c882e09372c22a94068400282749b9ede59dcd7d5d9764d6a2e916b5ada7fcf80b1620537eb4a3cb52a76eac2639ffbfab0e1c95f36ee7457b4773378065735ce74ed704c3ae9c485ee1d6f82c490b640f114a5614bb9c3c527601b52d3f7f082be94f32d3fe104eb87eb2f471de6e291d9a3883f54608733841683063231ae6ae0123b129b79713714f26e411c1f6863a5dfcf59f1a6ff9f19f2b0d3d98930bd5e80792cf15bb8d91777915b9dec82c374f09fd14963e23578eb49b0ce7ecc0c4276e23810ac362f6aa9a2da310040b03e025e5df118d6c536f3db73f2b5eb844856301911a17e26d999cf8ecbbb06be4794382d04e6fa101e9c578f62058c7890b71f81fc63d7b1aee6eb936dac0c0e57f99bdf2aed5de382328f55a4c6bf40966ff1b2c917bc0982c6eca10475dd9423e4bb85784b84fed809bcd3e10a2b6b9f10eb4bc8d65abffe816bedc890d8b0b3100fb854d5e8d3c820fb39b9eb8a38edffd520c721159f8bf72798cb1eb210a9b8d2bae349760f523bcbd36062276b50777e2a8ab50363fb7682b191baf2e9b28583b29e680df2c439909021c56765f8de368261fb6f35b11e02c7de3f747fa02265e80d59037c9cc2141c6a493d9897ed536ef3515803e3e6d204113ae7f7cd60001fd720a167834c0187fcaeb34137e6ac7e8b3bef9ee3b23ee6b0a94f84e5249ef69178a2f30d35677ff886687b541c21b980171db29e133b7616bd83d62ef3cf61142cb87df2d73c19c45f0d9920a011d6846cfa80b0e1dc1f4613b0e7e600e529295707edca89d826157de7d6fe95e28ceef1577cc378de0e6722d40e5a257883e23ba8eca8f075219da9505899457cf0507635a41d291d2075654467bae2e4b2fa2328f60674b5a1191e3676275ecedbf1794cba87671c6210072687ec03c6c0f4ba062ce0641b68cb6f9b5dbf46486ef1d38544f85e82258cd9f885c4f9833eef923804f90d90f595f613fecc9260983401805facca979d9f8e07536d37c11a5b12a7c2a213e0b34921494808dc0db864cc0f61986acb105a4bf95bf44aec8508ddaec383693baedabc7abc84544f4596d6b94a5af730993ce744833354b2e63be79f962eacb4d98549f848b45ca58e6828380c1836fb749b5fb46693c987debcc53ee891dbc5ed2617a878774a9585b05bfb95f3af07e7a84ae9f55f2f225e117a443d8b4ac9cc400885f19457279b001ea5bbfe9b51a7cb5fd658a983fec956eedd7c2617817c7a891b43325f6aac9fc48ce6d8bd7de3227d4426eba5da2e6b902a4b54a690ae92810c0528abeefec06a3b98605650cf59ec4deaf3ee3a865800c033216dffd80bbc8f454b93494d0f9bf0bc22c734c52c0be1fcc682e40a349228a4b7c8bade1297ec47061a93e3dcd51fce7134b7f641e644a872a3639de3775db6b6c51048628b0193da02e9cb8a5dedc44e450cad37c78e9f147187387bc351cba77e370b247bc04fa618ed0af992b5dc8d1b88190a3129c58610e275241767f59c28c5e41393aef7c67a44ec11d48725e1c126b6324857416e274d22c2c3fa3242fc384064ef665373d1175fc23ea4e6b2980436232eaae8a6f961e2c14bd578ebe870b0272414c9e63a9362f1f203d1f9bde405fe698af24439ffe6cdbbba8c69662ff8403ffbfa379c6982486ed0017107ac5cae12b3ffa6c7c9b1500fdcafafc9a0a21bd8efb5f4c14e63df64e7d4dde9e6dbc110b470523ba6e9fce264199437cd2baf47dc2fdd657c5f1c0a5d874d9341c0a578700c94fb423fcb0bef4035b028b98e313d9658c02f335c15f8a974910ea229b0a1f61e288b6120450ef9cdb40362071da5ec7cc52ab932eeb2639a98c3c569cc50f6235035020d0dc45902b917088ffb3a3bc48e30b756543a84b9627bfc82575e0c9b3137ead9f10c7befe701c00520340dc9bb8aba8a877266c1297514b277ff59b9564c1e520851ff87c4c0c98b58633fa4c58704156cf2a220f391d9c0433a57cd6c73137dfef46d07d43919ee92a71ec659f7869868849203bed6a5e2ea6a59fb9c70f3ba42ca5d86d0b36eebb175d664d2b0f060c2a6a0f0a8ef816238c069940448f174039b6ff9d85cffd3ff592fdacb0aca730d0b6eac4ea8d5c4e5be6b01a8c9add35fa41825b3c2ad45f96e9d8aa762a1f8dd1ac38fed76a83e20bd937ce000ac2dfe163d507b5ad20601e89e2f869a47ca486d52b967ed71a4a0682d1352c0d51f61959abf0cfc9341ec8a6a9fe4971c43e9544bc5cd477a32b73fb2a9ec221082c0b902440564d0a13c30ee6b8fc26b961250bcf4f0e4cad0b61530fc57ffdfa9df90656585b394174c471df31288d8488b98c5ee6cc4aeb43d93ffd46f781ead561aacf4b5ed2540a4508fba26dada99b1979b85b40fc381f3b3caf3226fbd9608cc620eab7999b739616e30d4ae4bf02f6b5929f08d974c7745e35e1c0b9cbf0c0e34d873a4fdd449a3b52b427c019c7868a3f2e72fdf20626de9181c386bbd25bd3283051e129327d5bfc51fc17c7e1893196fc68430ed7423c274c925a299fca9f45c377b90a75ac72567a27fa46c90289a993c4456f642b1dd8116c48242bb187df934b3040b12e0ec21ecbb925bcd1554a872c92f34ec39ce4a014d2e684d42f7bfa2a23573119905b378fe70aa877ca99a3c91213ac52d2ee09cbbc93783d2406430891d82ef001ac5e0d5641bca35e2b03cbe158d1cd5d669d14db2a68d6b44177c8b72abb036ac4edc528c4da149ae37f9960c89a7cd66b82f07c23fd0212478f831bf1289f18425ee880aca7c7878516e033d38838318118a2ea4a4d0fc3390fee70ae4d5fb71218c1224f61ab488a74f13c5bd1fbde82dc1d039352079c463547c12e92cb15468e88c6b7cf1a4f62c0179ea35df120dac593a0e8f7808bde137a6105db78480bdb919fefee3226c5d490aeb2dab6cba62fb7fdbd6e78f063c6d7c1641eb7c69ee81dccf24c3bdb7a1e2415d15468c3b5cf1f81efed5e5c5f2e6faf3b21cb0a2b6da7f08547e382fc45cbc204ba886576b1ebfbd76e058661c5d80b0084fcf2cb542af6fab2a09e29e32bddea74a4008979f32b906062874b4905393b2239a144dbd9de90c02db9b6d93ab1aa8daf880d68276f3ad600947fb061bbc25c367618b597e034b450cb76d228ed29776bb84d78df203d0b7a57c30c0634b5122a0536c5d0c90cb7c30bfb5da96af613aef0cc90dd01b1489184332cc1d1b601542f31964045431eb8ce36e5894c6e397ca3f640e7ffaacc27273cba61b07c9365feefd36a6c2de259c39da037ee8ebafd8b6ad2333f2fa4d397cbaf497c5efc79cc7c08a38ca63af8dcfcbfdf0823da37915292763fcb9b5e41bbb91ac4fd856b354901283b02820c38e8538a610439d60ef78e64bde2da761eb1cdfdad9ae22f28c478d54ffe7e155ee1bdb041a4d2c15ffa4c6685dfec98fb8b0e9865c26efbba75189fd80c9c28c75cee88ec5805574ac80ccfe83b56ec5b0164d77acef34028b629dd14c30ad680efe2870f8d7b42ce3eb4f95f511e04a5bb7b15b23cb63d2895ebdabe38da11b28ab77f606d5e34139e8dc78539fb7da63f16140d8f638c8720b24685ccca78ba9a5f915f5cb538b65bc6a35b14672273546ba1b68fb0296ee640368a021ced4b3d82ae146e3c23506a01e1f19c9a556638f27444e190a822eaece11b85d73c4345c6015612e753eb7a944cf2056a47ee686fdf8ccd83ae4ea9a7a4c27060b5e4936238e798365fb78f9069f8db00f2d252cafd6657e9eabb12981065ad0415870f6bbd017efb3936659b02e0993d9e2cecfd963e26523d98409d0b1204de99c8c94627f25e7b182bccef4dfe546739486d02286ec85b503c9a409c03cd759cab73dc9e78e9f0e172fd5cf59f39e7a295d521f0c379eadd2832baa2efd160ab5e4f823767322d0f5903e050863c806001c7b5c2536d22b84ea36b3f8eaacf3e2514d623ce60df896c9f0369bbca3d3685ffd25e567b2086b40e0799e85d5fc0ccc540b723e19edc31bfcce84e297ee2681fcd7c42cf6a56d056514a60f1807a2c0e30ff0f7c3041dbcc3b27b261134f35293601e30680e8274b2ad196b52734720b1f1b523d0d298b732d1fb6d1ee1fca88714b460c7823a5272b60406b4e35211a8d162686a36fa293723c466deb861b4f4212a799ec7340b7384f9d679c44c72cd52bf92217761c4fda257cbaec1b62df6ba87185446a82285728b697dac742c63c235b60f26baa3a7137db74f6a844f9e89b86af559def027fcd5fae8f63e5633a153ddd6e14a777430c10c6dfbc9a0c01d0c617deeb5b19fa1f4a5a20fcf252d7d4a4a538e29f79afff1e63f96748f5bccb97a9aef1de34e9a88a040cc83b3bd057147250bc2aa4992a1203aa5eadaaae7561d35e29df36c7c388798d3688c8e68c18774f655ff8970a7e7ed8f84ce2c4e5f7d386ace40740a2bba3b86c014944f59178f9376aeff4ca061a3b70e4c240eb516606cdd65e1478fc9721283ba954cfbdb457f8b74be616a604e3e4aa661421bb50bf20dda1dd015f2895edaf799198da528765117b004a826d6dd6b4b5c5cba0c5cf333dfaf2b73a9803ca525e0d89ace031357bc4497423ce1219b3fe7c69de219b238c00989e13a6eeaf71d526acf6c4116818f67f2e25297aa75670a2c36c5295e9b5f92cf9d732d3b94ae97ff7e11107986b9f1d4773a0bbb8ba2caafd7548e52ec15c17c675f21e37adb35531e1a714973a615a8b6e53e3ae1b5ea203a1c3b5852e0661c0515254d55f1634ac890900e279c7c22947ef3797006ef77faf8390206df7e76c092f80b09688054bc9c083fd5a010f0cd8ab78aa423eefb1814e564d62320bee5aabc742c954f8eda82f22484b1ac896020e5a0df21f80b776a3720a3d06a264600502f882e6e8a2a36e76592482dd5112a8212f4c41edb5fe575f3e3858a43b6129f919e9ca1a3547851472d349bfbe6bb34c2ac7a6864fe02b3d620212887915b396b1e1df0e8298ab3b1d9bc6a20ab77bd5f4425387be20eefe476cbe4f8317abd7e71b5aa06186cc2e7ed1b094a6e01aac2edb5f32380ead6371958b8047a70ee462ff5d20ab9ae78e0154232d9038431c84b97f34fb1656334cdf24cda4fef83cda988868646d38235d1edc86181456d89f7e704af2f27dbad6c1eb2611ab3074a609b5a591d3ca7a1f5112b95c24b5f73fd8408881d25f9b26403013b48f051f78b0ad16640ad0b1d278c3c33e71079c65ee478717cad39cf360ecc97cbcf760e96675191d45c7abf652ba2a4d24794478fbfe051b7fe8f08f8dd73fe96fb361e9dca4f99a59308b37c06e7f5abb08f78f98d8c47187006e8d482bb30253b4506f5748beaa1ddc0ab922286685cfd018377cf00f6502a0b6a870c3680f21ff3b5a4438ff459ca328b9c6912b415c6b41bdb26ff3ef36f6bc9e36867d401c2166ee4f1dd66833d0a11e8f0f65ec88dd9096944249cf9753fb64d92b287558c3baea42b748c7a4f10bc958f894badd62aa959a068253fcc48b03f0e6f097819702507708a0dbcbd374916c569b3c0466bb259050ed0045685eac7bbbfe4f71f43f7e2c3c0916beb9690b4ef65503edcf4d10aebc3986cd2f85307f20465e46ec16542341e18cd7171da09d3605f2c324a187fa00c1b01f5ee1fb3ee039253fa8679e4288e5dcc40b328856ef17ed0d4db1cc1462d8f2d0e386e96941da7ddf73491bc86c555774f7f5bec23b72836a673bf4d9b3247c04322820d7a2e7a200bdfd96fa2b98d7fdcb389d52d9ca9ac52f8d09392d48a7059314d8a47f27f3c824192d802134abb3e86602d66800a46d57a9079c242215409d7f01266043d57a2d2a287f34557a44598dfb25c06505b0cc0d5d79c23ef69ecad40c0fdd7fb1b0401853de73accda29295179bd7cd5065eb8f6f97950ce0df3f83c40444191330031ac71aab0739d0d44f069071e4ca66c97f12073182c876d69f3541b6ad2d12b4ba3ce65c22b540d0e49be9220155edb7d29010d140a7da46d3253ff4b202be5edd9b3703b4e0ae0950186e750429522e70f44b2d3b47b018a01a5450916f9ef93acb1f3a21fec07c7632764308678744d6906fef2e273c77edf48abbff8f921428b115b2956cc9262b3d733d2c173b1b57757d65af6385b3c5d4e33ae006c1f8e424c99e104a16a1f152395f0abbc6c153abd56bcc8021ce8ca5d55c8f4962710539039f09a0536548e6970f441c800c51bb08a8ec3edcb73522d7c10db41f191f342429a31b5c8cc6e5d3ee950d4b36fe31cf81803798889090ed453b13a978cd276e75d171524ad48883e97695dec336de2f954eb0b53ce3a5f69213bd394c7eb790d7f61aa078474c4fd3d00a875e5bf56eaafe46b29bd64189716f360d22acf489bb1509d11ef01c12ca94d3bd4a359c21df8ed45ae9c3241c5da16bac11586169dcb803f6f72df84c699c462aa3624e2acfe4fa861510278776496bf8acddcca36a92e7f1d66f6e386bd93ab2ce25d670fb80689690e6070ab6168cf47d4357e66ac5a76b91af20ab1aeb96aa6a5e77486e56241ea263f6c87dd6651523b3501978231dce0976bf825b6a5360e16d6245791fe0bef819dc8587d602c9f428256021af08f22963d03cb493d6aaa46d602d5e75d87e272ad71e2ee7b4e2bd79533e4f06a137f96d650408163a5c571f48f3c377d3a97f89767fb61642978c20c837c287c0d7939795ce7facc4a735396bf5d201c0ce0a467427d27f731189d3ce5e105dfc7b5377d7639ebff016468077c1642cdc8b8aeb2aa82cf535f4bd6da2aa4ca6ab02d9ecd426e50dd34ca82c9229de9b09ffef028def56041b1ab625dda3e0f32d9ec2f13377284f5934e67f8019b9148a5b8d7402e6f84d4a7e9e35cb05b09c778630f34222da73790146473df163a0053f07ddc8163bc23c8985ba81ae567c869461114a1189b40e4ce132c732fe3e1031a7ee6d0a204a01b0cbbeabae8aee5a8ff5acba9268eab08e4beedeba5b466780d3794a9267359ae42e2bae7493dbdd8ae2edb01f8484bbda20c2d67389c80538e8731ad30b41013e4dfae2d446651bfb90643c562be208586f6f37bcc6cc69e64421812b97b77de4c8493c8bd4855c7ec62bae3489538278c2fcab169c8234605ddbb212d466b28ab99392d6a4e3d7f2be9bda1bea6562f96718e05045f8d99ca1a80b97d02470f2b536282bc7cd218b1bb901581aa7b6be1629167164c01ccbcb667ca7d7fa13433c53421aa0103e9e026cdabbc8bde6f8905e73d0d9d8a77ea4d86db90b6ef3bb1784e193da6cdeca608a2a42320e8121de3cfde804a1616510c8786a94d8b4e766bf1adf610713e68936491543b1def42664f17402ea78a55de87f697ea8e9ba30f0ad301027ba3834eb0db9058a8e56d1481aa2ac0dd96cc28ff6fa831d3d1261cc8b535f3eeff6176e93fc3546197a19902cbdba3d764934960c7918918a746404d34e8c57ede161e984ad6f2c6ed46d8d4a1245122fdb762b9e5b3fe12563f0c85609068bbed90b4bce15a245b91106f6acb5661dbd431329349a6df9e1aefa09101399e367e5acff0bc7e503873ef6636d85e4b203c2af8f18416edddb492f85811c351ca08ea5ce1e65213834617fbf1cdae989eedd4ad74bbf6365eeb91daa640f81e9da582a0713f622f910013adfca4f8dc6c83d80e3628fc00b5065ccc076f6dfb0693a499a0fa97ab3b5ee916aec7b8fa53ff463741996d4829535491f93535292cb40db91c1f7657d75e512d2d99907e574426d821ef41c522a4ce0b4e5d62ddff0d4a054c0a9c2fbcc3f6e364ed701b9b9b884456a18e8013cd1b91a5665a44634ad41071ea9c5c1994ce65fa8d9491ba3035d92f36465a7b27a602b602f8cd4039c6637f4326c6109d7b53bdb44a8a4892e080fcce461876101e3eac977debd64a193b246d7674baecc2b9e69491327037f5562a9ab8d8fd69b6b655c157a9e01677bf8212233abd5510b29fd2809ea4f5ebaa7460bc01ad167149e8ceafceedd5991525b42f609fef0adfb405843fe08a34e60ff8690854827b9e2e40ce6c07e63ceaad24744ecf953937103a65f73516ae1638d11ea928189ba9974f4d08b14b9d5be80c536aa966b7cf8e7327925c9caf1f7c6d1c6badcba91b28651bc6712a8a62ee67c0a56d46f8980c23b1b06c85a0d39de07689b18f22d794a04d46544d051d400398782c5b9d3f0cb4466e401c2178e555539bf2ddbdb9dd53c21637a3739cd006443e309059a33501d54ac312c37655897695fa331e4d988593e75abd5d193f66b3314d15e69501dc0b2408fc513c414e23ffcd928c30ba7059eb5652c0aead6fa081cfdd06d44d8948472ad0ab88680a4974dfffc44d1b033d0d7fbbecfee8412737741e9f6a404150e6d56c29b1de3502cf8602d32a1861dae6d277f963de50ace8f6d5d5f9d5b0da78d30f9797b3de6292eb29feeab460f39fbfa8c28db0e21273433f4a88b278ecd418debc578a279770eb86c6d0610bf2215a957aaf14954333486158d850ac0108b26077ed07c55106072df1520a213b493a26ca9e04d6027aba826d717855083b4b0360554a818a25c8b8a416689350feca6b81863c6a1734dcac6ccff6f12a2b449505ea66b98c4966c39560ab09c460b616d80e6de9c000772e236af4ef6a01fdcbb4ff44df550ea76f43cf6a5ef96d10fc3d1d853e7e30ce1ccd86e2340b937bbdd00008f943c519e343707420b9cd0597bb8df82924663ecda905eb99ca549f68bb8ca21f1481d6c6a0828a1193ae1f87e28773bd43d49e5ca09dff6aee8ad92b4e5b1a013133dac743784ea810dca00c4e51fce2e0503d29f43722e81c80c64ae2e67a5f51b4f21673089d91b7781b8eb3bf1fd478b97b55095e44c807cd136ee91e738e66d2eee85d656629dc05221683ac66a25861aa4939eb27b3e6fad62316a520fadabd6ff6b8e69d0344a3e1d2170cfdb04384b82fb774ffc4c10ad7591457999e20704afe6abb346598b08694788a25356af7b8778419290d8cab52e4d1265a8d8fe5e041497433cba83a8854a8cfcebeaf92065475ac42120e297cfc5683e06d94443c03e479ee637dde59aa86cd61a9410c093d456a024ca05d3bbe2ed459f72e4cfa0f63bf0190390c8f5540b9aaab7d40386cbbadb3a7b530c5a85fc98279c0a3513072443868ced32db64f92904b28200162df53f304366c3f21f48186542ae689b93d38c4367da5ca550d592964f3be9c613dc24bb8a8f2f6ef12cbeb7d3c8245fe7ecf34f829b0095bd0569ba7543cbff13ac19c0b2fa0a5bfa7f9640074cae4d9981f67e17dc74d179f192616ac80415c7b9ccfba4e60e4a09b20a57909ce1a26c49047d9d9fbaf7a6f05a08aba088e31543b34768c422d889da533994fd585474cb999f8184ed69af79caf2f6839a6c451230863d697c0ce7a7695a7619bbea0dbb3240f2329e3320ee40903dbf50aadcb96149abe6257ae076109fc219fda1cd842921f4f8b82219b7d095add71b045894105a785a4ccc9974f83868825cfa6cf5207df95090de71767045d947a6a2c7625150bf550cea2066c884641c77bb1f4adfc3a9416d42ba073e08686afebc666b9f3bb09f33521506b0cd29aa364b1aaf226cf5d37ee3792e88825f26587b9ec6b509f6e4ce014b98376d3c4924da0221f4d701f10457abfdd11de733063703bfc4e14c779baa987cf82885ef1f87a0744c5a391723a052d438829fd44aa9b1c5b436bc96542f64b1ecb4255df45c13a30ef243bd8f40f64aea7d11a3ba2adf40578672995e772b87660e6120ccbf9a0276d6183f246715251f1768bdc355dd70d6ec3529590780acb046efc69d42dfef60afc943a312bbbbce90b2602a825ac3cfaaaf39708cb02a2426840635b69e2f63b4d10ab2fdd3650955810b7a5c6620adf3d5705400d6eb6d675f5692a3da6cfd8de8d0de14fc479a578451cdcc237540711900f1a463dcf9dcb88fddd4077104eedf08518e9e8262b5c6cc68be1080852ae7290f8642e527fb47c7fde8b74ebbced8945153b61090d47fe8f50adb935f31160bc56b504539b0d7771bf3adba8a70509906f776191f251bd197af5a738cb2ae0738a6e512159c89ff6a9ef42a3a38f407c45f265bfcee47a73de4d30ebb85f0c3e3327cc96d16a4fb2994feade329ab71a55a7932fb8422ea7058d4216d808ca35f55d3ba8768d0d5e3c82138e57690cecfcb3a80046fc5a20ea4e068fd1f1d473ddefecfac75fdfb035b77014acf226d18eda7c783b7cc7294f708fb4dedb99bf34a2be805a22e671629ea05bca603bdffc011288e67d83fbdb97a23fe6fae090949db65c77aa4dd076ecba8a95929cc1aab23491378d3e13bfa98996247848acc9ed2b921ce28a5afddbec7289995e93199bac0f4392eed09a51f81626f18ee46e027f403847ea2e4da725438b3ec95a370ffd079042c691e180000876f5adca3131626d8d6b6e3f8712d354d7799a905683b55d50a97bc394e61626498ac4566230b29fcf74fec20be0ad2390fb185d3512527362a7dea98f7d27fb96a7d1d3c59cdecc289ae42d225c96c222a5f67407faabb5c570bfd023ffb97489ba3e98a476e25a8bac9c4bbfd2805f2d0f03c0281dfaf4fd0a2564d26b266ae6233a55b1a2cc38e88cf2536e1272a8d402ae33fa8161adbbd2d3e85a84d9041bb7e106b867d84f9fae701563f48b237dfe598b6dd015a101f7230f2d52a93cdd3e3dcff9f215cf469d1e8fa4ce29ccadb57ec8efd90966eafe279a889f39daebf40846bad2a21334778f9310ff0c87798e9ba4b50d30c9223c23953b7a70b1510c5007ca7d722f076c404fb268993f2d23fa5ee8034b29285f5051fcb8fa05b528d78ac9caa650d84247cc86ee21c028c34090d4f44d2b5ce6f7e5d16ee04ba8e3568e7675788b8cd450cd53fa4497b8f1d4ed073f4d6a09a4d62cdb7829b6a547869c959fafc8458eef99a6f8589c7fe30d273ee6fe048741d47409f691455b57f57af04bacdad7f3399669dbe8e47e0437461810cb2ac3b9096511c94e493187b78871e2fefaaa18b9bfc098403d1372623fdd856c0a9fdb17cae91ae283813ede579bb090327a26a76906a609764f800b97ed3521c4b0cacd47add4ff65c95bc30b7b655c6eeadb7dd2d284f718f335894a27b16a4132801f29992582113ead2346bb94b6420d09d56cf2338456ddcc506432b05e141e466cc830016e168d7a09adac37269f801691f50fb8bc3e443208e6918c87c0bd3e154a429f071c41f98653f029cdf4027b61b1a09c1d97288b68f25fc2540f37d963a3a6faf6e735d8408fefaa609101458f6b526c7fdf76aef060cf761b52f861c0271c517c75c3b6c80474dfb130dd971b10d438135806a46725e8eca6b33d70381688a7b40eccaac7f48150c6065f262efb52186f1a2f2d2f35771059fb4b7755e14043ee99a5baf8130e6980c41ebcd35770a2aa97003b66d4d5efda636739432bc0320d8dea65f37747f9d75868b50c28c3768b0d3a74db74ff3c5d67ff4d46b040c0ff389b1ac662f5b5a27086852bd034b3c1c406b4cf9068cc68a3029f82995903435f9cbe60f7d7b6ecf6342f833fa77e342a2889882b2c1a3f36d0ef11f29d5077438c2acf2012f7e01765cf65105d825e15a8b5b2e170c4ca37c6506a38a4c304ab1bab433662d841886a1273398d6bbacd65b094b3590c2030ffab14469fbccf7c9481f125569e711320b9362a656a3fa1d02411f371578dad6a3ab307df5dfdf2fb60b730b7f00ab28f1a176d7db4ed1deb6f79ff46b23b5c0f0d58bf240dc8904af29980205b09ab309e93286e036b40422430b9cd485f41ef882bcbb3f7634e88520e2413d08181dc44d319c213af29dc8a1bd744edf7fbb8e3622a6d8cf3ac37921438e121ebb0311d83e2ff26c02d421be8878096212d2ba9863a11fd8ba45e36224b7987f67939ce04c4e2817f4db2071b09efdff469d1390967f8c2499ea8b7dc42721ff841cc11ed2125ed856d34aff41d3184f7588c482dc5301575ec9002a44eb768df465e34d265703710dcc72a2390d4e81cdd285d3cd6f377b67241f6ecb0dac6bfa994986a1e1fb0fbf71dc344249a91567024540dead42b5b70d5e96b696503e9114133fb737fadd20a5f783aacb3a9b40f9fdcdadbddb6a99efc240f0a71c98f6a280f164c2d08e9a7467d4a21927f165b65f969230d6646158f62c9407828067d47c9a8b6ec9d88227db712f02e046bcaef8280744dc7a7a67e552ce0911684691e125b7e26ce2ded73424be0364f811a2ea4ab660c2f9ba6b621d37039eb7f40ea323df6c900d4f332ec584220196953f85d56df0a33d94ce7df9c955fe1963e9a80c65ee01c524375b7af4c0142630a09023038df30aa25ee1cb7ccbb9a056dbceb237c8f0ec78f2b5b05d3ee4a62c176b9e25be6c39a42895778574099b0a89374d637a249166cfbc153c1c6d81a86bc001a530e51401d47860a5320c7bc5107b1a167ef4274449a89ab048d37a4328424d9fbf9800d5e3192e54b0ff0b725234cca1320f1026ef385d6cbecd4a8f18ecb21e57abc36f984d619d6404451066c82a4d667537edde03cca4903c126e84a6bea8843b3a653e6a46af435d6a1ae64a5722fbbeaf856de68ea635436c026dfd0645e01d90262e4c03858952005993b9a93e2f03ba82887781bf6ac0a9c44b99a947ec3e5bff349e33cc4227d8197c15c01c1044fc1c2de0fa596c13ed645f2bc35d5af52469cb039121c69aec0e076771f71633365be5c83e4038c7380af32fef2178edf26ec04e390ead1569893b28ed912c0789d25755ecfa5c46e32eb177cecfd9c105fec2f76f868b47e22f3a6d511d975b3680edee145cd589b2a5c7f268e717baaad0de67bea505d1266dd4a975ff2e0fed6da237c359b6987fec7853eb6b6ac3bf7fdafed340330618f3effb11d5b6b7536b035578bb93265dbf47bdd2bbf638fba159ebe6ccdc8a1b8821d15c97243ba4ff773cdf64f338a569f8b6d6527cf3c954fbb525858776842487a49af6ed372b2f772eb7bde16f2cd294a309f951417d8fb40012a897f34bcd44de5ec031ac611e013f6d5e726b858a700b8417587bd2ba2c09a8a5f4ee55c0ee219bce2f5e3b0cdcee2a99581a14724036d98486c0c45c3f5db739a373e0bfcdb2413dd4e7adfa408db88c0ec92354e0b0bd80ac7a6a96cb5fada2d6067f60df5de92d2c84086cc17c0c205e016a8dd2c21755c487584d07d1f2bd3306dbeb07e2fc5bb556fc31e2ba308d54bd93f63a492ca736a218a537ce78f3e0bc12ced1895ab6e8d4497a09e4adf9fb62f795a7318100c349cedc27ce30fc303b57c169ba29df62a7fa0d269b1e194848efca376bca0cce49764a41817776f100234c94b7c779970e6e8ac3b86d390a10f7fc9665f91e2030a3cd2a97b11ee75458bbc2b5c18e47cc2c19788ac832f50f132adfb3597c6e6b07cd5f77d35b1397d6628450f3158cc60b0f346b97e269416c8863f453e69cb881fb0537d9e36088fddc1a77862953c916a02577791538985fc4ff7ea6f3f0e555209da50976b4dc25490f70cac17e72ae3429b661b29fce6bc02e95549e9d91fcceddfbef47b3444251d3b542ae51285669296393162c309d54ab208426debb031962204e095e3a3d5bfe36f25c54dffc6a4fd558f28ae5f308dd45ca241ab188ae52e53716c8f54e208e18d6fda767899a509555c16557faa6695fc499ee82ac391994f1a83f12f168dee7513bb25d681148288bbbdbfa36f045568c6d0f9fd45280d90e08b43f072933100535f62828f2e64712fa09b28edf70573b98ce16b9b60e724686221b8a967aa9bf58113e8a976c646ccbfb412526884c68f725e95206f1b0bce6d9a8b2353f3c9e64be2fc0c2f17723a347b859fc3a45b8746775dcb4953ba52734ad0997e459f246593b0d5d51c14896da44d4951f40206922beafe10d699d42389d43e3ec247fec4fe7f9ef62f7ed00e6257664850df3fa96d28700e8e851aee9e47768a8d7da2dbe0e62be3fdb6a48a3b36714baaea2d4f70451afca44feedf74bd1da75c15feeeb8e52825c4f857eb529f986b8b6dd4719f354385913a07a0642e653bba73eac4c982f3ba5c320d71c0ed9f15298ad9b8503090331d81c4caa476375c6711acf41a467971a3869aefbb9d4f8a29b36be0552f2a3adecfb73b4dd6324beffdc0790abe23edb4cb3b167ed375c48730781a2072f2d0dcc5ff0d167131ecb958ff6197fbd433480d150b1fd476ee609c31f010fcc611a077725dc3d06133a7d803b10f12f4c9eb0985043b8a6dc9d768e65dea15d789aaef9712a75fef0d8446f0d2349d89b43fb247cad003dca7a45727230dc707f182a97443c1ed3a8777017a383b396cf25daf6848a1f2ebdd5a003e81596268b9c11524f3ce30a32cdd7a48f642067d3e83da059e522d3fc9e650f3e113f9b6684019433a063fddf1dfb6a381082af42cb2c2e151bc2d50d24905a62024e3f4ed738c2a225616dd178fcf72e4954ebdf57a2ac6960d9162092434b16f633a0b652fbcf9bcbf154ed814738a02ae1fe47d4a88b6c9f19b03412dc32214725f7ffa88e97044c5819bd72c634bca84ce1072a387f29372b11ac859f0c171bb7437e15ec79b49fb02899ff6f6906a189114846c85c85a1add892509c86521e4e04e8c06004c3f7f235ba4c693efe72820861d0f1538e7c44e5e7747b19b0bdbcffa9e04b063e975d68f96a63a43ab5c386e197a7f646f9fd59057dce19dc12bb07e4448e7ef7abbed2603ccfc8de3991c04573c3bd76b146956689ce4998efdb530e2482b136d9ea27a846a7e26d5fd0f7a37d37a92e2c2a300ea341947fb5f568e5591f3bf58d510a805ed7b367024dbd958f99df3112c436efc7236cdbd22ce6030b82d435ddfb787dacf3f89c8a34df11f3abb65a575a90b6edac0fa4f7c9df1a480b99edda5fc35ae0b2caa48b8b64ee34e20e4dd795c633a3a94cba52f044f14e4ebb39e85a62b8a3f3953ba1f6b4dc9d2c84c5862873e1acf613fbeb68ca070100d3e90dc63e6778e6e2b7e0a4632abaae8825b357755c76e2b8008357f8be5fbda9ccad841217f7369d58cdb24588f166661d8101e90d528ca58d7996da7780a056f8b8c359d02a5dc4d1b29656c8cc25c7d854993d643c469fb5c68a9029466b0fc3a3a9779bd7e0c9afc106fbb275599b8c047907126830718e90fcab6ac19f571c462a41ce34f54c61a7d2b8d80e91fa420c7f3fa0ca0f942639c2b8d77a661e9ca5ffbab2359a034a1658791da9ba6b2df103dde050b66ab3bcc6ab35de27446853a2115973cf23ab277f25c59cf183b8be416696106ca214c46ec7f231022e04afffda5d01fe111c2c8e2f4fe1b134ba005c76b9665736e63bf5846f3c954fb1a055c359dc61513f167516c3fe46a4900d0be69ea5a07f8745c183c3e1d6815a97f6edb2d7bcc47ffaf3c90bb69a46867c80e5abff2fcb9a683db6c2557adfeb739473ab1ae5847b33523a4f4d87ce94ed9ecf7a8951f8bb79b16bf5c64e8c4cd845f569ddb9f65ce0f8c2e0b2c5f2de5cf33a3ab2c0eb477ee7e08ba53d36d8a4212ff2b599a31e8fe81d5daf4f19805b8e1d046cdbed54d008f32e27e98812b6b21c7cb7dd643cbac0d4b051788465ae9980b2d25f51f0234086fc6185a65069c308d87a4f65c2dd4c249be3aaf8811f31e84cb37d0d7497f6d7ce365ac8503084694a6672fd4dca236a16a49a53cd116dd3103623f2ecd4984fa74ae1751649b502c07a9ca55bd1181526495dcecd1ae6483b5028466a14dd8ce0e0f99025e439deaf5cea5f12d3fc0bc75667ac34baee49e0699b84c71753a994ea8213c5311637283f2b379b21196d9dd84db4c9f66b33277a346fccd413a3897521471b66039cd9a9a7730fa89a689ef040d0ae4deccd5370d6ef66134b25d08e7cb20df3d9b535a058dc79d341af19d0552d3c6564ef85781c388001d3c33246313e15b0b6a2571ef22ae2e1d1fe4874ca20ae200f963b28dae83cbe9b70ed5a8ab388bca6932833f77af717d666354aa269ef99bb44cb919e940e9c8c636c560c949857bc1d2d5f961e1de24a52872dabedac45509f1835704fa84ff50b73a91964ca0bf7defc666cce2c03d14438c217c0e304da7cabfffe36e13d70146e9cfadd919490fbbd064336a8da6f1c3454627fb3f1ddf4e675b3ddc1567c8366c91a004afa9caf91b752a24518ffc7a0ea0b9180115283f60581f42d5ce57805afd73462dc165dae22fd5e1486cfbc222e0e1a72c249c8963a868facfa7a7d026da1f3846647e5e26746e170298375e08e982946d0f78b9d0b34a9fd31671b13d98101d30d3155378d4c2aa9c30fe621a8132286f32a0f74efccf41fde6b5bc1340a83ddd3e0dd9db78b41108d51f38f6ecbc8c1ff1189b5d6552f0198737e1150bba11d4eaae7dfeebb9c055e871a1db869e1ed0fc8c4936bb028d2197fdb6adbb0f3bf27026e34b105be97aea4cdc51388c8f1dbdc9a7a2ba62f4c5f0d2e3cb5ce44fa44b03f99dc7b7881b470ecca353ebd8c97f429aa7cecc7350bbc78faaed6a755c12bac48baefec538b4973605ab57fef18d8c1528b3e98f4728ade9b9a245ca51c324ba98aaf7a0dcdbcd1073eb1da049e8e27ee12d3a1b97eb9bbbe8d00ea1d20cfba3c6f07cf01c9519dba031c25d4637a19c6319939c345f6e0fbb4cd18ab3c7621c4c98f8b00f62e90d85877a08656fcd16e60f9a057a8744e3e0029031a5bb5a9571c3f0a28a412c965679b1a5f2c48b871d1e4db9b0da00ee3ed4be027b554ef1d6e67739c824d9610d39864103cea51b720879e286c3ca739b4bc4a9ac2e88aba3bdb7d84b8268fcb7d74b91801c09c339d7431a69538c2a61977f5a9c24b99063076f649f90573b38f407667a2d4af1d790a35efa7e752e2a4ec0eb6b4575079242701ec4aca6fa38dff4ee22461deee442e458248c7a0605e9cbc16a07b4e815351fd570515be96e9c01cc20badeb5bebd26f4790ed0b8a58ad888661753e82f3af76177cdff65765950f02022096a25b0dc43e6eb74eff49e96bf6889918d9dfb0478eb98206be0eab954d23cc151c5224fbae168a32caf1aa311ab5e92bbf27168c2e4c1cd8b40a0467ab58f4c6ad0ad18afa728620f06a71582cc22e0c96bc6d952f66a1d004e48b5bc696094870925aa352663f7a775d1f46591d9e52cbaf62160b5bea8c1698ef974624aa804e3e0c643a24f6ddc3f6cbd2eb89571ae8de99d54e90c0cb81bf3b9eb2d883904933d04284ae815dd3fa8e104add83a36dcf8bf2c3fff69f55881d01bb8021d413f63515030b800a907154332264a57222ad58d259af4e602a50acb44335cd06ea2ec6b60685a85a279a0be5cf36dc52f550b1fbb5b9b2a3d60246e4d9077ee29cd8b679840aec13350e39d9089bde2f2a36424f73cd4e340d5582ff6b070ba78e45e2c8bd18912834584211b16f2f5df1bcf5e0f93c04367d7febadbbd949bdbff40f6245ee19c37cd3fff34225ba4e35f7a215419a07d5204f36b494aad99ed8805d3013eefc44d922edf7c11d57b8b995bd86e9acb4d8afafdd7db2fdce494be3629144ce5b7fb2a39de4105526cbe2e5980f012ab6d28170b43f34b594ec33da22e9b1316e4a5b4430d9eeeee4a0546f52c3027ff21958c732bf6889eccc6b1b86f6935517ee34980ef60d93d4d635b6c7f790637ac53e489bd63ddf1f8290e884a7bbf63fb928483ffc9b9c591be67e3358b15d5d8de3d425bb62ac89224f4e173dd704a97fe7d2a281347b796d85c6f9a65fa157395dc4b1d16262ffa9b251273e323a9d210ff1d4bcbac7dc1d6f7751169e326ccb6d6304ddbb447b8b3276324aed887ee98d2c2bd001d21da5a2c268ec423393a6ff718e9e066ddf5ed769136021a2b729f6bb3c63b8d688d2baa8c1c347faa95f4259d24a7f852ffdbee37ae6eb61aa9ca517322492847e96c3f17590fbf4abbb2e3b0e545076fc95e473262c3070f24d305e984d43e69e3681930f5a76a800d88b307462f600f6877c9ec7ed7428a3408504f0fd3c0a3d4e725f837f8bcafef117c8416c2966c97a79d9a01a0895871e42abbdbbd89a0f718170e78a131d04b09373158acc96234e255564196b90e36b2bb07769c0961ec0accbda53a438e0faf7ff5c21dc227c10b9542636e30e522400bf660df141838b41feac1ee34b0aa48d2c23fcad6f1e40af6dae41d01f998a570928d0ae56ac38b6081616b01b693ac8e356dbc3c56e76894c7133253134017e07de72f946058b1f2522e1fc9d5c2de0fba20f8af903882d8af9476e69384cb8f8dca399d2628a6deaa66c8598735bd6a1dddec9d79ea4669bbdeebf40014efa44f86052b5847954e2e5c53a9ca6dbca51160b83bab338b65aabe0ded0b62a9da67e14d40a52e2c3c12f4085e36eeb37b9516393239ece746b0d269be8f273155639265028e3703d1eb280dbea4c2bafb5fa3f0c969142b10870f86b22adcf01297c7c1b06525963b08852da006f71398685eb6c0124d58a9823c170c9b42bbadd8a05413f899ccfa6faeff377d1c2b7664d03933975d398bc67487e6f2da0f5e65b1b769fb9e12e277d84fd75cc8a0119a39554407af7e1c22a8cc0f0d6e6f7217842625f01e0158084ddffe23136784bc0b306c8dd06f62821b8fd66986c0ac1e1549f72e6a969191e97258c31bee05986d319928f22be759e49f06c0f4c337cc54ceffacb6fecbf9a03174cc81607339b9c28cad6c7af7d96fbf8d1b499926a7a7d6226d9aecc6b0f652633ee9eff2e2fee11d2d372b9a5afcb382585d53b0ea652ed2ac9281017a851d8ab07e3104907e844b287307e3d81fb08826cb9c99c35c58d3997fc67b6d7b35438d6b8a8f0331c9486ee05183053e09c985726c7e1e4b68ccc525b4fe24193b2ee763acc65a41fbec1b66d7b9f7173efddbf5c9ed9c69ada19babcb2c0a35b943351a22e8e78c6431f78d8f043b374d43553ca28953dc2ceed11d3fdd3fb96308ebc9eb37a826f0a64c05cd3598835bb641f1ab9c4743ec2035eda983af21a67973ae2bbf00d49c0d8820feceacb3aa0586045cd83e2d0c092b6e59a65901828d8e8ae2a48d91bf77fc53fdc21dd2df830228ea2c58a0b2da005825a5267dbd5f7221bc31b80d16a3b3b9f101f5c09968095365ed1093c5f66b47d8521bd061665abdebd07729a971a78fbf7083b0573e9a42d8b1cd7375ffa43c282303c6894760ac18a01a7c7fac7bb9082ef3aaafb61df27da9baa297032c1a3fef5741802a93bd5a6032d11f7aa93cbd46900ad55eca28064fdbf3d0ca932ad3926db72e9e43c746dacaa7e33211c23b3cb0ff6eeeafebe9b06d30908ca998cfe3adb2db6e63230b07dfaf197d121902fe0a0dbf2aa404d0bf5994d89bedf38cc6ff4f3905aa2d9c909a52f8da9db4ed384a8b1798f18501554152dcd198b199604ac0c328e7c6f07a552960142e280c1e8e26a273b53feee2e90c67c159a812ac63ca6f3f8fd54e0860836e263bb1fb02a95c76af4f4ac101255c18fd8b968bed9f47a96415c1a72aa5e2dfa283aadb7ddd0200eb2481054a114e6efaea9b87cea5a6a1f118f90414e27e42a97c18cddefcbfb5a137035a2f89e49f5ba9ba811e2166ee50c56c04b8b1c0f8e353200329de8f1f0acbb436cdd99147aa645c857c6c9e773704116550f3c80b33328d63ed47402d5f57b9c0d767bfddcca4cc566b5078b69c4b61a33623e8cdeed84bb7a891f8dc8d9400af22bd4903c175bb2b9284b2430ce2d8a5a415274dec46ee6a8773ad318145b63e7095019c6431bef32bb61cb62a6d77792e23c095adcd2cdfb0b5ab7986bbce377ae52bb957becb30e7741cd1877f451e073fa0c467e25f497cb212e583be8101678300544160c05fb88d2d0318a4c963629febe9c801042431e9566cfba3c9c61c0c2dd800b5dcf060095b34ef1692d5859877bba7303e2f3531bd0614e4e4aa24dd517e96a144d0ac3ac8e416f4afb75a0b4f1707ff5301ca77e4302369d70d107f8276ccc07f7ea8062b9b992637139350315617762e27bc543bc3702be9e091a8c9e2ea5cfbb851d74ca31dcbc3d2b3d9116e1f05dcd4a52c84182f68230bbe16a1a1001d86b28477891ca90aefee95d994e477540f26a7095884e1e7d7dd20d37ce88a55d5db276d555869abddaa3026969101e19eeeb5cda219ab551699a0243eae855b003cd844b38897b6b1e0be2da431c265031be7e322c13f9e38005b54c0e52e50045998a8bfbed49b165e914983c89064dba05320eb9f71aa58fef0a34e88069b40b043092539972bb75020f1a7d3fb916aff7a10e5cd948ed65af24e2a70d5aef8bec818a802839bc7c22d50bc4cd383145045984c5c3375d37d5b350703c5c5d59a6b519de0c7887a270b8b217c00c5e5e6065a2faccb20b84457d98eacd1f7631a934c6d91de9589f7538c689b955c0a832712f21493ddafe6b6aedc28226e928de2b9175b3fd2b25daf8fd8473fe9560f4fc1ccda762128e9d156029f0d7d3606a25dabe9eb9336f36abdebc481adbef2393a4a75d5e55624c047848bda1d8730b79bd07de6cb5a8c0013d00e6c4cddf0966aca25aafbb0d71f8adb7a8098a2bbb0ba3f6bf027e614d984eabcaa81719a908001de243870ced9acf393f62c0652a63845e72985a97cdebd4fb424d3dc4de4e07576e85c179495caadf2d8321722ef4145276d50f3b3ae2149aa8b15a4c7a8bb0435690ce7b8cf805ed26e759ef6f09734cf7e7219b881bed9768aa0f34226f05ca325f06726c4044e885b8947df89fc1bb06d4ff4af14ac2f377b3a172a62da80b5b373e3839e163b4e84782169d68499d6bb3162182ced3340cf16035740974940dc1ceaaaa26fd3dcf4672267560c5ee92a33c4007f4900e192bdcde35b46e3bf3e96ce2b3f6c3dd6cccaa14ab25fb1d745567f571dbe63f5b6552e8bf9d24c6e37f727e23b1f9100804cda0ba39cebd7010d7b46a31260480a970599b5d7d8a901b1519976af5b50f3db6ea2beb2fab510daa79fcbd9aec60c9cd46acf42afab50cee9c0dfdd1cc34028e00d2be7df71be13725933a4368106e74180347b4e8ed8df5331a9d5c9092c6f18ee79bb302e7410541b6074977f0c31971bade802a481053700d9f44a0392b4e4ab2e9e976e3a2e43da5b93a562dd044272cceb701d40010065b20ffc065d597231b15951a6d4373e8577bde6d6bfba576d86841000ca255cada6cd30ffc78fd832af4caf1650a3c6c1063f14d7cc2509fa8c20ad6ca540bf41c022aa53fa598d062e1598fd1f0760b826019dbe4f2635ead64ce6354954dfb9b99422a44697ec0dcf7d051421ec14f1e1b6262c2660d764f24fb1c64914390133efc6529623b8ad082b845c1ed4f13f435304b4498793e60405d358cc9a8b8bb646b6decb3393d655bcb741b1e587c129b1c162ed0f2dd29aa9687bbabb589980ae870e26e9851d9ed3d204972f6be7efdd9d0fd9921191a8b261e96faf678c3ad1c1eaed8c7c6458bb1f7cd5deb69437c80a7fece1cc435f2701b0dc8b444c1cb16188f904c6122a327d214914864a6d2c2f55f49b9002b77260a55528beba253058a3cdd898dd0439dd70763f7c64d47867d83a0ab4add016e82e8d95673862a50909688e8b20059fc496b8053d652e0bbf837e35324e912fdb576e48183968b0cfd2fc3c19c6926ccd6e27c6f2524f9a7b69386b2806193cca37d4736ae886b0757030f324c0863d24d2cebbc72331d691655cdf5791f7381fa957d23dde53c1bc8298f5701057100b3611996f3a58492c20fdb1a75540af954fad4e35e38ae2d8858de924618b0e599a4f389ef29a4e2ae07d63a103e0febaee4d8e38c571fdf34b97b74d2dfc58f5c730a78e3d9e7e9f2d3cadf3c6d5d47410635ff13b32cea947fe4f5b799ef060df21637b4e99505044dbc7f006327079fb317050dddb538ba64b83a31bde6a2937ea16275732ca39569b630eb7fc12d5f97e830822004e9c3bc2cfdb94c83e768a6c8a57548602089e66fa663765be68efa28a107a1a7bd7391a5ca0788a1e8177efbe53eaadec9f417eae37c5dd2365404dab237136bfa6be0957f36501ff194e87636a5151569604f19b637b0487d5072c3c40e385166c2c649ab88f64251d2e7be66c521d47b6ca455ef0e27b26129ef4302a41d93bfd54dabf36d545d10576bf692e532bf67fea038f881315a44c6f8643e8e42b372174a5cc9a6a6ddf5981dfc90a73ae5aa34f032df963edce072222654676b69c15faa6387311521037b7f0b75cb777f5896dae2fb6aa61249b0defa7535f39210926c75c37e12f73d1e868a0064823d1cb01a004550ef956b30049dee150714ca2709c43bd9fffd4edfff1b9ecbb00dfb8a646590f66a92ccf5790a209d7e77e7ac6a56ec1a9d0f863fd9420797508c7d235785d442a1710c2637657a4fd91349b92a161646b47cda347d652190f70f951fa1e9ff4f4b2c2342000f6d204ef690899cbaca96842c92c499dbfbdd7af509fb36aba4692d6b7213ab92b7725994d35a10bbef9d5e717165f01555a5f0bdbda672f5d05a143c35766d160b9657af489f05ef8a0c09d42891756296913ef7256065c871dc3a5effc071ebb847d179be39406704ec7ae9544c0106969ebb4a518dab285235efa8307273a1806cba21a127f443196629d92174561ad5925a2085ccc2ddfcbebff78c2b63e463357c99c5c6db12672bd6761695e98c03e1230840f77b8506fda0ee24f2ccd7742ea6b45f8a5758bbd1d3e58b20fb59ea3f2f14d55072afe8ffdfd161f65660d2d30b67d9481ee54b7dc6d5f0276b33114e3a94104f0a8324b8ef4be7cdd475335ed45c8cfc58a2685ef822d79e676e2a2d85e0a286ce265ebbb4b36003749c05d42548ac0cfe731afffe115cd5c699862ad85147dd1bfbe58cce12b1c0f7497ea0113026d8e79dca1135d6ac7392a2bee3c8f92f8b283f7a0cc80bc9325508be913b0b6554d47232ac7843ec551e69ae2906df53fd3785a75d13ac5fcd21d27a9eab00ae74e877cff13b8b13a4b339d601de21a2ce79c89afc7dd9f43cf784f3d07983d0937236639aa34c32a4d882d8d0da71b4e28f1e6c6d4e0fe28481d21fb8d061692456fe7d3d8a919affdadd911a0c51367b75abe58476d28be47c9d1ffeacba1cf609e0b2d06101676d0bf739b93ab77efce3cc5a9176562ed6a74fca98695f502f0bcc18cb8c6ff42a598ac5ba3d1888fc5361f1ef888fbf2e757ef1a8a309ade853c9e972e3b1668b6c4da86130545a8e0afdac1f51f00dae48027bcb38f610d5b5ab1db8799da52d752dbd64da6bbcaf61ac3c1a8c2520a1ee722b73b07b2aa98ea04497d4af2fd021f8b078e6e0c3de21b7aeef42b94badc41177cc870f2c772525bb3a93f997a3a70d05b9e8e737bc3f803415a31ff753d15e93e7329a6e812bb78526250b970b3038e17a438afb313015752d544209ac6b1f374dc1bf48652c796431f29629856df2104fce6ba4887d408e04f221ade4e20d0595048c88e4556a205748f8b408e8543ef26f25450c0b3e74da18afbc833344e6cfb7c7bdf941c8afc97fcc1c964642e29c6470316d144291f1f2e8434e03d40f02e30f1d0a81e34f27ed09b29f3990607a85454998e75db81bd2899d1a2178f6db5ae67a7a355a791819f9b6a1f684f63e473e90bb3656fbfbfb193a3d486492d3710cb232c0996ea955c7229abf11b1909757052d08289cef8e086814f2b07c0aea337f307a8bcf017626a18921a5c8b560b128a1240bdc19bab939834770479edc57c3c862978fe219b227cb8a5481e0c380380d2137e559c7a64e60269d2ee2f54dd17ba418e4d754fa7afe9e97abbc401d839f8a45a669ffcf3bffd01527bc22cff1085f2607ff253649f26b8ad4fe30aee692d528a787b15d54ce3b2f8c0b56ff7a87143ae17a2a1624d444d7e4b0fd9c5fddf7cf02f490d4c07f338081fa371a5d45d2a8cfe4c95c150da68c524c1df69921442fcd70361ab4144a5793f81921a7df5ee8700a559625081e349d4de9f12fb088b36ddb9d6909d6c88d88c886aa1fefc92af4dfd3d4a8b615e9f57686e0fbea69fe3534db7d192767c30b427ff12a96b09d3f892fb565311e6fc2f34b49b97c5a4d870c44f1fec27877c2b08f28c4256467a7b652b7e8dc3a2b8e1bbb8b0f53db0880e2a1caf4b980ebda822dc4782a971e4329f6ef733c6efde76f8491478cb5c582afe3d7ca2175af6a6e3464195b4c6e3db8d0b5fd350740cfb4ed3dc79bf077a6836200ab964d9dee45ff5a89d83ea901c2b01150fa3174c018db563828322f08dce6aeaac33acf1e5986f852d0ac39ffd34d3da1b73ea3a1df5f126d1eb41d603e9a7aa6b0424ef71d101d0ce1d19976ad690f842ac5f1d695b7a6bda59d5bc587f3c3838493a9212f2a15c7d408f4bb2dfd7ff627d6ee20252b889c2aeafb6bfa2963b2bdd346798fd6c3e2b3bb7c50b8fd6996bb7774a88651daee50dccb28d4cb365b1caf23c9695aefd3c88502a0be98dabe37b0889a169ce7f506ff8dfbdbe5d2d09629b9fe28ea4e0098ef95230a1d681653bd4c175d5bb8f470250236d74ca03c69fa928199670bc5ea9dd845a92eaa41d0480b23330b9aac15faf1d5fa26f9a50e38d3518e4e93ffc072a1a4cc774694e2019b48b8d6529e78c8cd779473d6e62f55fc38402416e185353022e136a53cc045100331af72099cddced45cd966e8d5e5bc343a0a70bda2976b40d3a2ce5828fd8cf63b83be8e846f2057238b040b40d203901766e12df6b5c8e5aa9b983ee95747858ac60bc9d717b6151e930528f4ef1d8ad3a4be3b853f1a167c0ebaea0c3a52ad4585371b15c0ea758ec3da828106da9f9a7b8c769612ea2eea805ebbfc8fd4f9c0bcd01d3bfe956a3da4d1a607b7561dd8ea289ea14cbf789bf155f83d87bd4f9d95b83e5ddd5ee6e4a68726bd946d814fccf57a97839053a8ceb59bc778ad6388dfa7a7f374f739ccfb2be50caf3e29d6cbdea077cb948e54aa4a54a9b78522a9f09cf6b0d65ef338c6dfa6acbc1673b12d9e1d61d8d5ad10310d0a216885fa446bb9b27b3f57fde50c116e90d2045f627539de26697bc2c347154505aeb7d009444ff66b132aa694d0156529d32e79856f46c6534f00f840659e16f824c469b9d658b8fb89610495142defbd52b0c3129acc890d2368c4e1ba2cb32b5b78455bc1a6a3d63b714129c6962902bee449491c96b0967ad8362e1cb1d5fd1026a14d8886bbdc89c97fe3d15c3913fb034d77c0f98672b67567d7e3899cf6c0c0841c4762393df88d56d080093d1479d6fd777177ab8771376bd470f6df0226cbe49ace5f4f5af584d5f0ec37cf9c4ab1db263b4a4fd9c2f0329cac55c43336e961d909a6a4e56e9befcb416a2028924344b3a47dda88fa91b2763918ede6f74ceb2d0aa83bdd52a8f0d54f52ebf0d942dc9e237ff24623d2a04694340ea7b16fe82cc5dab93baca4b80664185511b20a5181604914d8f176570e3512f265a9b4d0a8cf5ebd98ca09be74ad197b0be7b1f665396c1f4148631ffd30e97624ba6344a7e308cc71246a4f99302462990f398a7e4d6e85c5ec251a90e504605fd3015484596af4e6385d010e936cbdb494c2512f3a852c0fe1d994aa2097488072dd18d92e1c190c886eeaa76dc9f39ae6d0ba2abc50fcb3b1c6223d19ca8f9bc662aa613196e6272e8cfe9eee37b8bbe134c977327c41e6842295799dd4779478355a46e29a2d1f829f1131ac6846c410070f22cf7eecd0da97e6fcd1006be1734aa9d4e12a89aae153112f77a134d9966cffc8a2df4e2e897f7d7bc64d892a3f9c32980f8adb0c3114cf46b04e9f1ea8b41bf765a44d9b1b6e85e6ca6bf52740fb8e51daf2eb93783a26c866e1aef93d5488b83445b22b89c78ba5e35226f855b3ef3cc898c929caccc4f4c677734f1bf5c737352f2a34cc90902ed7748f0f27acc78098ad8c7a8b2a1191cd0b07e7577e8cecbf0af33fc4e12322f52f5eff745ab1d8339301b9ab0a2669dea0ee20f0ef2b67965d1209abb36aa746102183d65008f89c3540668062e7941031946e286238c86c3c8aa1a07e5af4cfe5d2d77d29e00891f1e32c64a7ab853bb2ae747321c72dcf08c863d93bbe91e47c784555e32a3965e35fef68a1b2d9a5495d52b1486cf1af0655b0886bfe353b52a87c09503330d6e11fb6dc2c00786a09572af4e68cf7ae053481109c58f0dff8f3368a0226d39e1897142b4ea17f47419f720cb94e1c365cb5d993773bf6f47209aa2f24091169473db719098547dc809f0419bdc37506a661d77c5fcad78dfe9619aece2e51a39a366f20e4a5757d890baddcceb49216d5402d1a8fd746919ad42cdc0db321424627795ea41dfc4f99d0cb0a94a5204cec9f9a750ed94bef02b8bda3b374514e4d922bae5a64f16f9ba6b9b9d07d1c6c969e231323c72b8882c9ea147ce6f6d7e3bb3cfc2fc2b3a2821b42f3dfa0a7b18ab1104b782d573c39c6fb043c406bf5c6f29a8da719fdd7ede9680266583cc5f83d00dd61e6b92730b09028d14e21140ebb69a3aa9f81c6ec5154cb6f98764eb39db62e13c4273eaf9090dcf28e004cbe3417674fc28c449d40971cbe5a65e5d1ee2d5528f4ffbe45e2122f8296309756fe4438aab461f69bb9db512a133cd48040a63a1e8eaed1812971aeb5eceaff8586dd99f140c5b612bd0dd94a4c54de8d06c6a698150d5e4bdc35648750b048f4fe13b5cd85775fb9ef7118114b6ad621c95ba71f4207be462940ce80107fa89dbf5d124c3abbdc76639956da9a79e4fe4056b57e1dff06b6f0ce6dfdf33ea1ffe94669c6eade570d611cc88d3fa7a6e91b086eab574282bebbfef2d56051e7aab5cfb0fd2a6a13096d0927427571ac11e80868555ac1c7c3d58d76215756c585e206bbb6307d9074519e4c5a128b67c04d09be934b7891da3157ae52f80e6dbdc67dc0f00df669cca63cf62331cde82a5f2ca6908a9355c7e46c3a928a9934ae6eb036687676adef17bbf3856a77c5462abd56e51fac8ec4ad1da7415733edee91c37c6057727d727ff10051f81ebb020b2f59def0737f824b1a3089be850f0169b4eb0430e774384e4f8295e2318530b34672c598eb61c81738ad03a15c1140fbf580dd2cdc7db93f0bac9e64db87e8953c32945364a65e9b7a3e9028b0df642131cb5fe7cae6bb64030a200838e4ff2a22acb6105d97951b51aa032e049048bd66931a285061b45c49d625e8bbefc4bab3f0128e8d689dab5efbbce2c3b49dd7940a96274a28a1fbeda75aff031827b69f1e2fc2e7db3ad960637728d84f31925be1ddb7d8ca6b047c77a09820c62a5ce15b7980d93e9e9488536e1a3e36ac833e36211f6d64ff6ca12e5f2d43070243ed4a61a1cc6998052826105147dff46b1247ec8d8fc3f99875280cdbdd4d96712e06247d79295424d03ef030939865fe4ce548842d2c7ac1168cfbcd825db3d178345301fbdff4c664b050faf2f746bc037d4a6f6044c40d13782e903fed48c0c78bbe7b758407ce079446db8254b3272c1fd39da2ca18680af7b30e4a7b4402795fdf6c8614189907896f3d7186975d7ac809d796ca9f9b11c22e15fb3df3e914665005de575fb5f3a9ed647dc8cac02bccb2180a1d58a45d3f32b21da1587e5d8e558e8b96d28cc49604a45c5a1cebaa4c08d41256ca3f4239a4719f4fa43b593746abcc7f70f67a7fedf9167a422f9527357331db771cba2f41ff9fb3a7205a4696090e1140257f8a1f2f261b2fc6efb9edb6f5b7cc2a8bdd697b9237af1ced623f6022d3da2d504eabdaf3a97fbfcfdba6635cf6070c0a2710315f982467d23793f121bba09af867fe9164c68d33998d995658519451a77a4860a9a64127106bee9a3f01681c647a16ef8c001f2f067ba7007398c0212ddac6f5df9724680ab6dc3fddee9869090c6bd2ba176529fbdbaa1c473412cd7caf17b14335b6972e8bc4f4eac77a096e6b0f307eec5a4fabe8d5b6a3eca13ecb0e231faf0bdd58507a2ca24ecf3bef71a87beeace66876659e6cf6b61fb9cabf024201fdf01b7e7611b49f4c75fdae4a8d34cb4cd7df07e047d955e352029bda289df563050ad3fcabe90975749c1226480414b23cd0c92541bff7d03871aa3ad852ab632ed6d25c7dbd8c889ed028b7729311914b2ca235d973026f6086c312c263a1af45e69a69dbae6a79c7e478db3619e895cc1ff69e3e8b15b996fea0d24bbdda1f6137dc12bc2dd38269160a92cc2c38dadd497cd60c25b41ebd9b7348cb26f2ef57bfaec928eabe5acf1d9f529dfbb1b399b846fd557bca4fc82e376a35ddfe9b7c4d98fb2422ff8cf64d99b637cc0ab4eff34a16a3d7e72218c0af5969a84bcf8acc287729e1a220014aa58919a4bbb07f33369e587ee3cb1ac28aa789c57d6571fb2a5dda312f7c7a866fe4838de4b04762e03e9987ab857e9f9e0854b742c6087672d0cd5c46fa458d3f22ce0116237e6085d0941e141f5b490b7bdf785f39b127158de547d676d639fae6a5e6387c3eddb9aad21de550f1d0ea2c757d527b94fa2d28674491e4ec6f3408937d648e79fa990c2784916d1e3bbe9290e3808beddfc3ce577d9b84d256bc987ba29b6f9965b4a3dc001ca9ba92228d02e0e984d1d97abb09a23bf672d4d004cc8d9e7762523866dcb775b278818cee17ecf1efc15d92772a0419d34f12dad60aa8e731ceca437204c61d832c12e9fe86867a5b3017c2d4f7921222202e02e0493f0f81567710492e9e8f2c462573347dfc37d2830152ea4c568043c48fef586a00c9739442cc73153ae80fc021675ffa688b95d34990e6f425a5a84da3007fa7d9a7454946c1033f90bfb70f51024c9c4cdb0398e30a58968a321dc59b67e2dfb7a398729d0a0f0546303239c625578062d7d2a42eb41b4c8b7b87b90a909ff35b993b2b4f4ee1eeba3d8fcb59cefb3e2277fda105d2270eec663fb57f167f82e31b4f37309a5ce71dce1e2cc092dfc281cd9f440f0fda9d368cbeb07c7f03de3bfd0308474243fc4682954255b20013c93f3f92cc97a342fd47bfeee450ccd458aa0b52797fd808e3add9ad19b2b49d0b4f7230769b61228d165be9884b90ab279e2df931476e8dacdcf8ccaf38527690b555b85dac29237a25cd8e14e09a2b185d6db171f0b50eb95f6db2f80ba020e963f3b6717223844cc98f31cb6a1b22fc4c270ae37ea2a0812ecf611482bebf1572e2608824e763ffe351aca523c4f738270dd4c7c75672f456e79671f898107345b6a6fc2343bd057b3b1a241264c7bdaabc48019c421cdfee02c101c5e2dbbe747769012b449d4f57703fc9bc25d9551c5292fb42026e83dc798071b84a34d65331dad092364c2fa4955c26905874a0e147d86a889436cfb4c2329b6abbc88a3a9eb0b43c9463740d5918ed1f8d7fa1c71b875cb316e7cd3c0c127f5d89bc835f18b74d06372377e2a819899397cc20bb78b3af4ffb1f65812399bf6e02493a49c3a2445a1c6effb3d9187e27a1982df4a99d8f30df593595bee44c8f1c2378cfe4a2c4aa9ecfecc672e6463017e24058dc28bc82b8a4dfc5347eea70a7f31fcabbb6c1992919135e3ab2b54279f7b6b6b8487cb5993f26ed89a82f07e66456f01db9cf0ea70db0e51bcc8a2d9e74e63cf63954f513417cb6eb14609764197f99efb138a312fb7ec367a72041ad7743c2b6a64a7fa94c7f5bad54fc76b992ef7e63844ed5c0477547a00b4f37fee11d8f5b19bd2f6b3a88006759cd3b00fa69a7e4b19755236308ce8929eb1b1f0569126030221150971fec14f70d2e603ff38d46dadbe72630b69b156e8eeef6f58efb97f4cf3e0f7e2cffc39d63a858ad3149450064f0c9d630ae99af9d789acd98b326066610f12b329ed6b69075ab360b8341fcc22e351be9e09b12add66c3247c14c043f6132a04f77062c8ab032023a369942c07b208e6266c55b4b67f2c4a526a7a91e18d356347814f530475eaff2cb01e5c8fa3eab1aad2a714d26289617e3f16d4f7d5ff6c2ac31a184877db3306c61467b6d91d447adfb3ea8cb0c3a57026c3c79974ac8736fcf10d5f24f182a830fa44c1e8efc8e59d898a5f9f7b865eb2651324aa095a7b966902616d356263b4d35fc157d0004df6e5cb5f78c608f6ffb3a0d8e9b2ea4b202dda6b95e4156ade8b012c251b1f873b6bd5521a3d119c28622b4b5703911fcb3f0772b3e3fd6f7d67595741b3c76aa069e6da755a710bce5ed93a50d821c4eecc561c33878aec238a0b52116d35adbd37612c102ad24b981fee6ae223023f8388785c55a99315a88a7c76ec48d3660e1b981b8446d600adfdea7c504f0906a79fe1d7ad100cfca7174b4fa07dd24a74c01e43ff270d033ba2ae06906d5dac1e39ede4a1264bfcffaba9deed528706b344a278c2c2910df482651fcd3db3bacc855c6eeefd66e053538a1e07cc964cf2cc89c4a3756e0c8c6e5d66e5fd9b2d3d6198b324a958a88b7ece9b18223fc73dafe1968c4820413c290e17eb0ccbff1e82568625e1e4e851e8ec62bb0e458c062b5302fa7ad3034219e915a65d7d39c13a8458aafb82179589bf1082e64fb4a0b12a5c7f6233615f03c20111b96c399dc99827be31bce60a9e6bbe7283be66c3beaebe4099e73557d7e23dd9d0f84ecc39b1144136bd0ba6b895ab82ff3e020b414991777c18b2758c1c99e22170488cd31743661c146326e853fe203fb30979924568f2fa9460040e67aec3a6a24bbf1c1969358ed46f87eb8facab4b2c24f000254492b373e6d737e25b455a282a6a6948590a539c9d8e76cba6f97d06ceb9e6cb76cd6349b1c2e249b5e789056639fc95ac14263283418678a8d37870500053093b2da64eb31e012fa75df89646fab6d89fd7dcb8a06cc557a675f3e63354423b59cf000f1e49cb87180dd0efb01e5bad29aaddb0b91e018faf0f546fa92b67110ae5437bc524fc68b8906513f23b5acd473ae641f829ad693a461a9b555b82b0a634387976931dfacd37cab44c8c363f850522877ca578f541b3199e7fa34bb89b979d4a1500e5f650842e66e76f7302c5e090d7d76df2ec4d638401e620eaed827a7965c9d99f4f49ac1462abe615196f72bd4439a03da27a55c5bd61d8fc8c3d5fb597d50eb0baf41c5358bf17b51038b6c3c9bd21d6dbdaff2ac50f333381675d0d90fc94184979f1e6e88ccc1a6ddd7da7e46b1865d519ca6149f07c750a829c4e267be41950fc7e96b6aaf473965beafa93df70a5d61791be45ca649d8dc2dae5fcb27cde39cdca633b9820112d54f4d4f29056581258265918a980be9388e9bd55995d370ff40fcfc8f307b7e495e717edecc049bf7acdf63379c6fe391c2e6e34df8b68ccdb3de95db6027f49f9e307c62ce4649daabfc4342014ff937c24b927919105d30074363d0c904710105c316bf6bcd858d9a9e2e1eba9d3c2b3d75a549efadd0a848d606c94d4b4d476989fcd54894c7de22abde55aaa8cc25c6a279b4fd9f9834392b9872c12c166f33463bb844d24eb30583847119e4e30c59179f43842a6aba1428e93f135dd09eca068f3674fd5004f3caaed41f3fa8a5b17f15a98ce9166748e48b5c94ca1472e9e9e6d2d9b4aeadd51a5b9f57768b0e85a81df661bf9a1ad1f62fe9d090d386ec76c11e38059c8cc0993fc5fdf2b9969cacfc0994ae32d2fcd26b36641586161067a54321046a24c481e59df43f0943c6ee29f327f6ef2e32947b74f6e5391da1ac37b7ea35753eae76d5661a05f89bb5e1e2cc7652cd2a8f43a0a86305852d6190179f8547de66b322f309e559bf54a4a96e019a78ecbc7a6737db2c7c9ddf9e85f9e018202128b6b70ad09a644bc5bf1a8ac3678632bc8e85e0ec19b25aea0c384a2635153c56a454b08653d15f6dbabefa1470c62e21e1a398e57b5a31237bbe4ae7927d1fab1695f3095a3074f19e07c01ff1dc74fdaceaf81494367664a336b72632fb73f8af41cf2bfcb0fb0258f6a4205670113bd4b54626a183fcd69637072c0d90ea45cf7deccb988633765c8b8eb522b6eb65b0bdeab5a29f697acd5ff133f58b4040cf6d5817d1253c10a327c5bbfb02545b93d3d5f4f1134b275eb6e1780226be1976ac2a5bd86b183ee865cd556bdd71d8f437de55e8eedbbd55743806c740231873f7fbf9f63cd7d581163723b21b894e435777c910165b0bfa0692321cc89e536565cbd570df9be0e3619cced2c7b36db5d5497cef2ba3c1ea4bb55006d95122c0449cba94da3c535eaf67cdb3362be9cb9e0dcc38a0e28ba11d7744fde92e7d592ced34fcfff78573721d0fa0f5811287dadad0d182e6fccea4344036b2df0bfbbda35dfa23f7f33b9783a0c9e1dd0528e035c3c8dd7f50808eb5803a3c24c11305a7912bc59f2d124f876d3418652b507a67fccff88efe896dc0c3ad8e6d45917a30c4a7463b5afbc62603b5dc41d5fb8640fcc29e161fe9466b53ba2f9551a88af54ae0679ecc1db42e2e0dac52722a27e2ab1ea8f6224567b152d5cca5f290f289a9c1336597c6e389bf2a7a079fb7cd4bbdac2d6f271026846d6a64c51122d3e9def1ebe9dfc79970aac340f03a031eb604e58999aef15db907ce15c97d0d756da430f55a8fa8f5663f4f6fcb07c60be3e8af6fd2432df3af032b6944fd5f584c98eb487c9245a4d5ed2e6221989db62aeac0b9e2027024c3ace8f2fc119e4d3a23f3be4361c19c3a57702b44c242879ebc6a8460592f727258f1dff5d1df56171a7ba42fc5c1d4db49fcb19a4d303702eeb044921f38983a5e1d06f3d12ec4a7f95a89d9dfa4bfd40dfc6c09523da96dc69f85ab0d357455f46629d4327816264ec617aeb409de0924afbf4e91a5000b8bc8407bebc566c22984d7766d3e2be4173a5e1cbf6a1cd558a79cedda8ba3439d248afb5704e46ae6450f5c2412f13f44d19e8f936f882ca0fd02d0737a5b47cc60c19c25958f634fdee5b7482fdd94656c4c6fd90d8156c9a95c80b104e4b6e9a38925e81664b5938ee905ff0d44f72079483df6a8bb064aae2457d9c28311c255c9fbbcfbbe6a09cdc7f6450b13d6eccd729566aeea06bccd36a6c8f5afe5b4eaa3cd9c36fb294cf878ea78a8593e348c2927502f3b6e6e40a5785fc3e6d2b9d77ae784feca709b38121e582b3d2c6a3eebd1c211ff368c12bd1c6f9e4ec7647bee1470474e64b8fa23001819648e5f1d5b9a65d0c85e84061a326df8c03303c9c5ce8499819260686eb44cff918ef9d591ca0f8e8194654d707b56e3081dd13d5beb3e6c22fff4f0a6efcaf9d18c8123e0b8372f57afff140251130f8810f6f4ed25fbfac608871d2846690b67729fcabd4bb7d077c27d9509b4012c340610d912be453e783b5adc681286b6e3cde28ad177896093afda8411f3cf7a5b9f2d24c5a432a56b7f9749120b8a0618d2479b57c029978a9bc634f28c324631c8405d2a9190ab0550278217b6d2820ccfd4a15feac45e67482ec3cac48b6f90e9d45987113a6013d6a512a0e2fe1ae7f778586c08bbf782b5d71cdeb0a1414c0692bb9f5ac1229651f6fa3cde9f4060f37bba47b82b969bfe5fb4a4fa82399c937fa73d7dd335bc67481474947b6934bd2db707266338554f9930253c35e1ce3bc90a815921da08f1abb14e1531cb5cbbe92cefb365faf5e6e79c583873c6a6491975e9d123d52ad769ad00907044315e2c1059bae845b10dffa688b2163ff9788f23f6abf03a19f17ca7fa1dfab04980c7d42a8ae7f1419e358454d7ce690ddd0a41a37bdb511a13be3ee5306723578e98a148947c4f7b352f6b812d571839c05ab60be78f1fa1ca6822c0fa8b906292db7f1785fa936066dcfa3c7f89972069dc9a88a217f07763d2d0b887a001dd70c31b0e1391997cdfbd2eb463cbeaca95bf12b577ef9b81c2bf7a3ce9c9911a348c80e4461adf35ece41f8b681ceb4d3b7a64800bdebe0f577bdd0f24537f0ab521a29b0b5a9b7f425aa39f6dc04c0c356cc0104201227115f07afb8f368b9e95ca807cea140664ded6d9e17a9213bad0d4c7d92ab8588afd051255d0b78e3d7575e1076b808149ad5031cef2001438a105d842e34bdd499df9c586a1e99d5ef2b4a90d93c92edbcb24c2daecc712cbe389106de70782ec71290339c453c6bf3b721373b5799acd7b0674d90560bfb878d6694eaf2db8e53d56fe7d4436378075ebd9837f867242a3d697e979865eb4478d5e531253f3ec67e6b652163483e9e29dcad9dac98bb40bc39c558f577ec824e375306b56f60a8ad80e4cd3d4df731d85d51d7e391ea7267aaaad84d191fe31bec5b9f0678656bee4d618ae51c50cf4e9ec5e16abfbeb1eb7fbc7726915bccd559211a9748979fe8b31a9f1a29e96f46c52cd61dc65aa6a3cb0befcceaabed623ae9096efe907a8c111231852ed62439ac0e0212ac7320876dac5c9143ce9020b19f9800e3c1adfa3c919622382111da73d98fba35d2d429023960649db6bccf4b503728acec8c2018a1bb58ae4534a2015bbfc986d66b63d14e476cd7092814e6afde0ef5ab8442c59296615ab4043c6549aed06befdf7a8b0d4a634ea3fbee6191df3263e7e0ee0c76ac00eb53dad794bcb0df8f242cefc39bd7d04e1265df4a7143e46c61e3127ca6a5b473f928b306af39a9478e4a3722a1f26ff319f992c4edbcdd402c2a2c1e3bf2d693f38a5c6d8253e989db821332cb9d54422de64f994728dbe03066d07c957e5b6f839b7e437aa81323cc084a964c58a25bfbf682d7e59b4f1ba96105bbd87722675ca13be33e1b8a30b7eae82159aae554e0641b31d1089db2a75623386a200e8b2809649c5cefdd7505506705a9c162ec6f7a9e3a396b6faa8c953b2377b44e1402b0119cc281dd2cb50740cefc1deb97ef051dbbf08a1d66917b3dcd6d5e96d2fcfd717f45917087d866df70914d0c93db9b7479eb4b31fd40b95355803b275b9bd0c81a1d1785381377fef5aeb9a97860a98656c68e79edfbe833802770edf45635f65467af8eff2075c5ad1b8353a4e2564f0f3da1471c74755a289d4c17b11af408f7a2915a604d9f4ffca76eec0f773a06b5b33ebaea33d06cba6181dddbc9e9a7f632193a67fb536aeca2e170a26adab2c4ae2038fb14f83b9eb6636df5b6325c11e1ddc5972080a9b661eef0ecbaffdeca581f7c28c64f2142244227af2a250686595cbbeac65d2b54be700f2398d850ab00e2d4184dc4afbbf5c8a2fde31b0759ab2eb70d8982a505963a98b4edeaf6f7971f7aca8043f395b9762b2c9010ead6cbd4cded1d3e95704950ff4dd1d66f3d346f19708b82b872c220a702560695f8110d45f4c648ad953c35db2d15e9d7ce90a8fcf66f149799a987187b4e444de3b9bcef42dfc1da6c5a48acadba7dc6658bd46b9a7dd0b76cc7fb2f38046018fe6468eeab547e7b648f3083947832a5dea5ad2cfadf889100bd119ceafa1744fd953cd61627a79f5a4c59584a38e9ca7485b041440f1116c1ed660c1723fe1ed435a68083eea770e8067f264b9a9a042576bc4a245e940924fe75183b68f22bb4107b05e1536d1701b74b1a4970f87548e54329556f3c7ee55b7b7c23266d5a2056b2a17d93f3bbf65c03694541e0fb0ce50ccae3b927ae30b5695e62ae990da21aad8cea002578f17540a087c79d7a2bab81366c08b0ad647dee8c38c440fcdcd60efecc7f0858c587c080c371fdc11f11914fdcfc00b0d96b86eaf021833396e625e63b0b40c1dd9d40b6ede22ef130171fd49188fed728faa176a1f163c6c108e41af830d7dba5c369fe37707784cc5e0595fb747bcffde9d9a6815623f4d1e266fb029061d66e8acd906da6b47611aba3f83fdcbf9e66bb33028ae368cf517c10ccd562691f5688f2d970c2ae20ec6a0030cdb05f7eeb387630dd213eb04cc22f4dc2ee2dee16d470dbeb383bc0ce2879bf2132619d75ea8def8e0dd9fa2203394ed312b2b4038e1ec35c2d2fd1e518033d8e7ab31531a101a1b998360534758e3fdac01a559d554c8b88fc21a2a290fb652bf5f48823f076617726852534aed804357d5d345fcf11b605b5ffce998988eec1e2891f26ad46dc3f105f331d2cef893de43e846025aa7501996b8bfe2289acebd402e44e74214d6022d50567cf50dc4221a15e5c84e0d3999ff2e6761c16004833d3b49a25c461bf1d49b89c5a2ccb6177228c8b9d8caa27f30d75a05f929b37ba5746d662bcede23618c072f5f84f91bb0b107c251f7f9b71f50260754b0d36fa2cef59123da23995151d39ae9e41bdd68ed3bb563e93a02e4245020aaaac91d6d53829e1023cffd7d42ee4f32e14d846550abd6c72bc91f060a74672f2ccf405b26e6cbd48d9ad8dc4f8ed192da7629d5e2ad429e2d46bb1d4a6a8239557ed9444a5075acc69d3bb18df00d9666407012f9190521fd7d12049649f360f306261caf347afe26a4e5a8526b4cd5c318cab4d30fa3003f7e61f755416ea5a03b0a120da3c779c6169d6c8c0a1f73af58c6813db6f109b493b46cd3a1521f064f95afb0c59b2fac408900630c43b61b5261bc90ffbc324ce475f06d868e2545b10ea6b226321334a235df18a5ae07b8af9391656ef1f1beafee867f620d53dbe417eb7d893cd04c50805c6eb87142cf0ad4bbf8c947c52aac694eebde3ca3e08359c7df1fc801c0e90c515d482654031786fb4c06c37255bcaca3e7a69320b7e059a2edbf84a89a120cd604f70487df2ead86f675f32b049f124673cefa446cdb324d2a270fe40e7b0c380def595f51dc84aa416b5521fc0f0f27202125ae58411ba1de83ab2b4573e3fe3752409f3b0659f3b1358000a8fdfb5cc4e4fb11c09522fdbcdb34375eef84d94189ec26e2eaa44a5513fa9dfb569a470595bade3e47e2b9f20f3cee79c57ee18dabec719b89abc74c1423e64fc422aef449872039b27aacf2db3380aaf8f961951217ef50ff31c50fed8b53c8fbf653f013dccb758c77cfa0410a8475475afdcc40d347c04468d2ec067868bf189a961c625a8df2b85c37b1dc4075dbe9f15919f42995909b3cee6a4e12e9dd545fbd150db99bd9e2577749a6c874d88c79968ef0b41b3fe53b00d2d65afa4ae8f97ca49195448db3ee510a7ac196757ba7f8200cf24016924982406720e880d316b5685ff340bb8022c1fa5bcf556e8eaffa559061e769b490018fc12d4bc1a9299330025b796503cbff5270f164efa98c7cca52970f89651f50d2c0c8e34bf68f985c7f6fe800b71e6a9f53abb35cac8777d54243daa9f349a8452b64d594e669459342851f62f6f3c968846e8f30fc623f6facc0e02cba3a5c04eb1271ac32c2af5247d99d96cf63231cbc6e3bfafbad526c0464f730875dd8b3501b407e224adfc1de2e574f3908b330800b78691f5097c5d55cfa666cba2438d7a9180d2e6c4637d99e5b90726de0e495db45f50da30797e73444397f065378d9be1ed00c7493029407212284918b49c1fed10b4162d2389eac545f3b22b577a11c70f5cc1cb0c648f04c12ecbf7a9001cb8a326a7db3a19424eea81810e327b32ed593f6d0dabb10c3ad10e9d8f73e6bb320998678447b81c3f24c46dbc447da500609cdc85f6f44b56980ea6c9468f39b9ce816a6b719cfedda646b1f697054b31523549de163203bec5a1c9df12b83e70e2fc13442c788ad07d3c5312af063bb589fa3a76429ef27d0345fbe2d64fa1be671b03b7b1a477a435a4107ac615554625dd62e160e78ebf26fde8344832f7cf9bf827e04b31e44894b9b72b629971a1b5a8bd647ddd6e58f05b770ec9201f11ca3001d26fa1ac91e1b5bd372ccbbb06fab5b27b09e8b83e5d2c04fbae73aab950b3df0fa86322b8bf20f44323a71dbbac88ca53eff02f0b8728275bd93d483cb5203c114f4bd1d89333e90a1922f0895faa495074af0a7c145b72e297dcefd6c8269dc5199703717e11add88041533d68547489eb7c73f4390e8616e12d8e06dd8c4a0b724e5be8e3d56b0f8eeeaa28ddba7f47381d6afa496aa6d4d8e6651008e20c37a1ff260485bb8aa5a29ebea0a10a3e8a2025c4b6d525e3cba6c4287a79ff8593ca280f7327debca40d2be37d826c62846fe833785de9cbff9c910c8fded042dbb5d55843ce58d2aa1972679d629fd21be819913191489e48ae38c4dfd61483bf693c416982c2da676b9b356077fbdb6b078719f92073d4d0346152bd7807d8649662e53dab4b9221b0193c2c95f04942979903871dfffd99084d20c0e52827e4cf15c0fcf6fdf6329cc3baea8b514ca3108987bce86ed6f5e5f2a042ef9152c998c00745d3e05189399e018793fed344ce657718b6549f0c248f0de4ca88c4963ce61c9d7504f62586328874c8c08c0f0f6899439b35de59bb247608d747603e7a4fc9eb73b5759e62888527b868e3a4c82c3b86308ec02d9ca875556f28e6abfe3147fcec5a149cd0205a98fd8197d649cadf4fc19a922b55d15637d1a3ad38afdce60041c1c95d81892ec5ed2d302aade67db10cc5e7ca09c55b5d10dcb337c4b2b00b5ad34133b463222e54f74b5b1b3a7ee195d94dd7b81f28391b9f616db37f90958404e20465f848593fb12bd8dd268eba8466a6f0d20b0283cf151891ea6d6efbd7ec03c9cab3794fddb208444151653a16e68b092167bcb71e9187d0592a19fb2eda420f2622ac1d6802bff64761d0039d967aebfa2da1924227104ccefe0b3cb057f079df473055224114772c58aedb1122cfb0cda6a0990113f0981cedeac4e6ed813bf66e958a636a6c06b423112c34770f49f2075f920307d03e1b1506806a9d10a1bec37ad7b4b70d1751595d853a765cf8d391770836e751396def54bf18d6d086f05ad659fd3b2dcf1543181713535dd6665771cb409aa27b1c2721b7dcecbfdd057b78b0be07de8a76a80e3834cf6f4eee2e6f6e0ae5b368041c08ff0752a22ce942b28261e8a456dcfca1e3fcac6aa0138599c84c82af590c5811133b0ad40cf40710f89114e37507de5437a5fec95f4c0c9e7339e8681b328157d4dd2b5baa3d050940ac5782df410c23f4be32aff3908266502e6e0f6d649228052863224939365f09398e4dbd6146cc014600b918630755017ac426862d6591cfb9be3fbea476ab0a7a8528ef9bb3fce84094595e24bce96e30f0d78c2dd6ff3ec446b2f3c6413b7b0690ea8826c52858f1a2fba7bca8b2410f3d011d650e06c1c1200f64feaaf6997761f74cabb905a3943ef9ab901ecc6a72d707ca4fbb50aebe412da59f697e272503d2398a2cc33db4952177c813059b58005297ce3f91bb31f1fcda231213e8f1f3cdfbeb5a8d4306fb4ce9e530f0cc770d7d7de2277486649e5e3da7d61f2628c5b276a4086bf1ddd84836ab8ac7b861a7d6e93669bb0f6ccafa9bb768742e66c69e40e52e3d2b2c72376551420e5fb8f75c3a7c3a3b39b108d3d772d652d29a92b523c0de81f50f9359d20e86488272b98d46928bc74c09588266f57c77e511902fa079017ffbf6921aacedabf72a305d98d5826817765e56e9d2186a2ac290b52f67abe0a40a4e4a2176f26045229fb31b254cd14245e810513882c73ac682265de136a04b95c1dd1a8a92266e78efcf73657bd0c62ef472e5c900297ed235789ea607146a310e81ee917a9808005814c13a97daea0a3e95c64c3cd80eca26b27c07a69b871961930b0ca534bcd1aa9a3d3c5ac0f994d86fd69ab3770d185e5ba48599edf5aa48b78dcfc09fd7c6f96a2a7abdbdffeca5b0d6210b971b29dc26b3579bfc52e834c80480e79f7bfe4a329af2d26fa61660b86062ab121eef151101e998606ef887cfc81ca447bd5c5d6ba31a70bb567c3100c074af58175d81005c5786edf0a4365be473490b37077d2b105aa8eeff68dd69bd7e23ed12ee313bbdf6006290daf8d7c9a798bafdeb6705768f17a7c28b783cf84093c72c1f8543d8ccc1572c2d0ad13ab1b798d33742b4bc8afc464579b1cf7f8be863b8f1deed0213e0dfec537a3702dc770cc1dd9a807e8f2303a72aa927ffc499a06c6876c15ebae3745ea50d136548eca2ef16809159d7a0d3dd7b5b03f26628c4420e32f65be4a72c92a2ad3e7768505ec1dba39b3d0e5bd1caab971f097def43687094a1a6660d547c6c6912d4843e8ba36d90a0fdd565ca77df88b0192b42263ca0b8e44e4d7dde2649061d9538369609cdecaff1412c17c09ece53b226da19d2b15e2d85563b53d023204fc3f3729b5144d1dc405a6bfa1d5525fdb538969cde3f08dc93758822bb09da39e97912ab11dd2bd97f9dfc1575d49e9f2bbe88cb40e424e1d74f958c44ac1e43df628bfb71e634e9ac7b70be79ce6a95c72a56b697c44e235abf4484d5e270f164997384c573f32036d87837c45d2f089281e34f720297c05355be3763274cb19cdd96bb87dbd11da38c2323b67df1db73de5456b248e27c57d2d028801715b609435d6e433942aeafe5e4ad178d8dde61ed5bccab4455ef12ad24ff71f599d841b281f1abec721921247241b9d1bf3d5471d6dd6325d1409a913e7e5b2823951f6518215f1713f963fb6bc875f2bc8536bebc491322808df9dc51494db8138be26de5ea5b2227d70c15d9cca87c5aaa823f60abb9f3713b5722e35efbd51920572d035d3637ed01aa8e70fb8a5ec7dc47f1f93c205648d84aa93a76e851ef28d0dcd87277c6d147f177b4d5ee6ed42ff4e688ed238bf34f2ceaa6a81321aab97706611a6401748d3854dc9c86e3cc4c56c400e47fd97e8e07168f1098df9c7f3e0cc02b9c60ba6f549d8fbf33d9debaf243c8c99a07edde908f5548394bc7467b9f2a4d9f1ff7636c407054dfd0137bf6b387760ae32499ee6a0af38ac6d68c1e491cfd4abb1c08101d756b022dd9fac67347d79abfedf06cf4edb83cd5b64338e4dd3cd2790295dd89144054b8189f6d7bde2aa6effbf7382ac36117a4b12570205c9584dfb8a455cc3e960b1de169e3d3b0ed754c0d25103ff2f66280203dfb024e70f739eebe0ca328ccbf6b9e7c8f1abe0e35b415f2691a7b17c15cac818b5fabffc915635d47bee56a3d98e27821000048b5877b6301d5b7e7014d1eadb065732d49c76e5a3143d33f91fabd014fcc18b4ea2c648acc3fef461d0ec0a92313c34daee693fb4d49d24824cfa7dfe1d651fb898a1054605bb734457d4c3c80bc3b8d90cd240a725e52fd01b6f688f20eeab1a68f493877df2790f91c70cb0289b955661bf8ab95022cbe4934e9102174b4c188addc98d1b6dc9a2091d966faf35923a1332dee0f2a4b765b313ebf1c9d06f9305828e4ee7fc8e96a26da6fc14cd28303bd00345abe29b686785dd2d035f7182e89b8cc2e0bd7adb44996853937163a4e23b1fb4d1a1ad4e23a102e1b77ecfc743ef327c2e25f7ea90dc696f92c4ec0461573abeb9161db7d8bc9f807b77ab5e7f7d44573bf680faba8053b97f61da2660676581de522543fe47e692bd992b0183bbdd3b510b87ddef3b5b5b6343b6938acf8b994d1182eb3a01048d9d60049a0114b9c9e77b71a4fed6c44d7db531684846dbad77f2058707f42e2a73e3a570c8749b65b4b26e24838f69a23b24460f24baf58cb1294cef5254477e2b17c9d0a2facf485189c03689be3aee8d49f33bb8645cb901e752aa89cc95b4d653c29f09d9ba92c1adb295e7ead34b732832c49fbb817552b67fb10ceb358e4a3e20329ea910ecdc6f269197163709e0fbf047936f88fc7357a76a00c49060a4adccc6c3487e37e423204cca5ec3b61824c304105cce7472fc543f98afd25f54bf816ce1c2e1780e8ea604f71d86400f713221bfc5bd4807bd0743de0cb3c072b16a3db46408af1c702f37fcebec377ae03f37cf2c2671073d0edea8a1df01d8424d213dcda3f072257ea7adc30af153b76650f82b39a13e4afcb946943e7de846fe8db0ceb8c26efeedf195b39ac6604e97e118b2cb6e68eea902e417e33746c3ffc0585aa186d58fde5a3336d7e49c6023288b13d8f30a53723ad3997802d12c7a9b1fe2bc0e33eb4a56eec8bf96111ead26ddadbc65a5304e4785e0890005f62e6fcb0f7ae30b1e6741536b036cbc7eb4f12b1c57fed33be6d8b1fb5c0f1d2248d8bd6b73ef4797b8dff63100f9ca171684226783ce1d8edbf1ad232a503fcb77e6534f56f1c90afd029e84efe8aaa485c99eb32d7dd4421e4622ea1ea6a028a6e0c8de30d63a628c08be05acec0c237cd95f90cc68971a65576cf12126a1e4cb7f32c3ecfda9cd796fa89e0aeb31ce6cca709191d81cc15b6fcb685be661ec1d0b55c3406e809abab20c4499ab6c01151731c9a0048b4ac986ec66b9980e4db407cf065b141b81188fa994e2ac30a1688eff447799000786eac48c30f30e42d2210bcefff9f284d5c4eb1153ee629c2c7e098a3dc77764eddc568bf6939a9a599f219889a8d0b94bbbddae413a2a17f1068d45b3bf4559b0b66b500ff8e509dd5ad65ab4369c704ca648761b88ac9c85e08b6c18786ccf8aaa0a55d89930b39704881d8a005f86746754d61ed5b4eef448f134d666a809acbca0f3bd88b9f154f6651dd3e7decc219df684aeac9ae3287c30031dae80a88c2a1af7466f5e6465a2b403323c125ba56e334049858be26b4995900402777a7ac41a5d594e54ea6a465b96b7c20dbc3d261b3772a97256af3f33d6248c8c6975854f6208b8b5971dfddafac4388782ac3cc0ea03938deac849f8fd6e4f86d5ba1700aaa016d1b3833ee163de1811adf07f10c2bbca0ba06a957778a580fd5d283d92c7d75fcbf1bd8a867212608141c0e2d9ca985b2dc9df012df3cdfb6d90679ab0d1889b5025d07e920c82c226dd7744351502ac93b9d26c5f7329cbe4b43df0d42b29302b63a20a242c6f2d35f05ddb1e1476a1a237b550db23cc30670017c2dc115a1cc41201aa2d1a3bd5cd9aa8f57a68d86edb48f9dfc47c92db37fa2609c680764bd1b249ec558b89cebfebfe3421d64216762fbd73fb00bcebe25fabb32763fdde854d6614d62179aeaa4e28daf69538cf973dd3f7b2e2fb24703a962b310f2b8ca0b5f9d9d028d6cc1d6d8439bd0b9a5e384da9b94c39b896f2f471846bde7a441f8ecb6314caabc7853e35dd93deca78a05f3a1fdb64ade78af5ee350eb252179e3737df7d9e14ef70ce05f39bde68be5b8a98fcd132b74dd0136f65868278d802abb8c9647b4a4aaa93c9427028de1a2367a309e28968076966af65ae9a473a43fbcb461b7ece64c05b9222ae37a3f2c6a9fccad0ad4ab73525bad7986ed567d28517ed14eed2a22aef94cc0da64ac2c132ababc0eb00eca0e636bf93ccf7f0dfe322770b40b657766eaba748408a4c946678a7a501d9ef816e3a73d6a0f91356e48af1098fd9965a4f0006725ad9950eb960d1c2febb67bac1da8e55473e13d3b44d103295521dc14eec92b21341ab53bf2a6e0cf89bb0d83e03634a458de30ba9300bf9e0d0bbd13134fa684b9efdd4802abe295def5de44ffb6a5e4ddf848549dc612b027fa66348107697bc4e8697546c28baf282f430c9e1af7049bdfc2074f199f1b560660bdbdb93ed9072547fa2a8a6b8af5afefec4b89e7dae906fbe6fc84ad21ba76f52af458b893b20932614feefb5a259ac868edbead9dbec1db948f43fa06b0678ca90858ff44503ff30c1df41395ffce68f9766d716a106d47cd029b3e95abad0f9d7a5cb7aa395bfeadadf2667857d3038b772b18c0d16f58de331d809924875f1c177b6d279516e5cb01717381c063fdff72b95c037911072800a3416593efe7717b68ee41e734ed448724b2f3d2aa96aa0ca876fc186903a1b31cb44d7da58a9a6747e022337cf9c5efc9aa55804b5dd501a98f5709e75752c791ee2b9135dacae0fe2718ab60e05457d2d1f377b19c3bf414e3231f3bb7daefe905dbd39c3be92342f516f1453dc7ba1eb75b9b59ee8e0470ab5675992ee97b5996bfdc53e40f68b4cb32e777c34abe431be282042af13cf7f047c59f53c6028bf13b22d5d20c71d28225103d1cddc30ff61d1205637fcb80e3324f5debca62e0ad3a56f0cfe4f18b01ce7fa463d4514d56681c1d54c30c39a9b8523f76e30f65c4a7d27c3f4bbfb66daf5bf16955c9fb4762199a973e6606735c17e40212b24bc4f5153d072dd2c5a26eebc5f9dd6c789b6fe9a34de5f09d3606851628ed1311e4984f051b291a6e0656397085bcb6517d35aaef5ea0f392a5844c740c1e619ee18afc764d1020233dd342fac794ffbe4b1f9b485ecc2debd704a080f0e1b404b4c793e3dc6b7895d3fab8df18de74f6fbdd11a127baf101a89c7b25c68af8ab0ad14228d4f3059dadfe508b6b655fdbaee27e9dbf2e0fc4ecc37de5fefd110f772cba94bf170c39eebca4fd35c8b9bec9e581cba2e08d8e96d54f40e034625fe7e3092f667911901730a33fc4fc162c05610ef7a7fe373a32929e0b5cbd93a9c9018ee62f71921955fe9082d0c8d8fc6814a04fd5a9f41d7d9fa2c2a039b955c819eb87a189835b3dea980f9248b62b1a837f4f0c73f2118403390e54dfbb1c92bf1a84dfffa3e5db60ec68d76b9222347516973ce7a1bd3eac8b07b0f619cd880d88dc7846a0747fed733e2a75a27ca474542ee20180bab7e849f7895ef578831f3cc6d38504679bc30f186e7ee476254f23deefb2b05599ec70939f0872e709971ad67516ffed063968d7e4f0e588009beb93ea5e69fa6551a4fd6579646390192ec80908f3a307494e73060cdadf372d2901e75d2b8fba911604fc4c504144d00434759eda72e011ac8e236600b612a10fe94e7dce4fb88e0167cfadb6b6eae81cc088ce79f4105305cd5c655bc0cdd73ececf7e5bee1a0caf24fbdeb4dc2c1261a6d5c360b60cf4870613c4b62c5e7087f29895b6048f32110e63b5f2f76c03b59bfb5cbe0bf580acbd9614fee9ca55bfda1aea1921940eeb25171ce15feaf4916c52aa0257cba566788738e3349d31a6c8ce1960f7940e898c9790489f8a24b3e02a7651f5a4b3e5de05e7d4a24ef2d9dc28b51e81e78709fa27a327a81751d2b702b8c435a523e5c1952d4525684cdbd2bbc1901616313509807be134244374d1ef217f06e50d8d6a4fea3fbf3a362289c13551ca29a8e7d4cb50bcb01042c5d136928e41fbb0e2d5c95151e7b76a42c7af7fe591aded07aa1ef1af41dc9a85d579a39ec38beec8bdf96bbccff4e91ff43cff1705c9e410d02f4084cd861e06072c1d7bb61ecd90911b92010f517533ae3c8922be20d429aa77b13f14caa23426ff8062b984f719c0a0f6b4620e16df7708e7a8a421eaceb289d0e539d980b855d07e28d1373a83f5021ba5866496d2e9bc5583adfbb50914d6b88559a7141fbf317e284a7c096b2e5259515ac105801d700359d9d7ab39ded39c98fbee4018e00e1a08f67ffabfc24c5bb0cef235a041aa970a7cc4a36c1ff341b089d5e9c29211a1496f594621cad2a146566d3ec78ad5a8ec166a5a475d9c8275198f7809235e96ae4c944dcf7b90fe8cd1befc08f20e44d24fdaee7d33f1cbf628d8590e03f52f6a6eea0f2c6ccd1aa731838cad73bd6be7ceb165dc18f89f4626747fa8f088d623cfe5b3cbc968f0694bddd3f5bf99915b0d5527df8c5b136adc20deef9de0acc982690415fc2c51b2948bf7ef8f5c20dc5e4780db2feb50971f98f0d92eeb0133cd8bef7145cf600bc62de35b101ef3debf7a20b8879b14c4524a31e61d87dd927abe06104b2215a59a35c79f148dddbc32fe9a3573d73284a075a3da599b7bbae3fd0031a43cba9a284a96cc0389209cb59fe8c68d940d38011f4b90ae8ac82b48a2360bd39670898b9a87b2b155f62a1beee5f905c2218b683bb2cfca39e8fb677a283a496eab76dbb9950596940c2a5086d26fa8577b42b408643d75d8b2858709f6be590db206aa23ff91136b02c7d7bed26521813c5b362f7456c25e2fec461ee8903af220038075c880c1c1ecc688936dcdb61f1979f4c5f77c5d371f6df77ae7bd7731663115bf38ace854d480d52a11f5fc22dea4f6bc841437e0738358f3011b7ada46793c085904a76235a8286d8cc04707e65a3f82bbae2963d4d9e636e9840397595bbe507b036b1f82e720ee9371da1ea5e946efbb4768681b0d277a74b0c2388bb79bdbb032b9bd9d4ab5d63f0018291f2014aea992c74cd73e96541d8b606a9ae3728c50be6dc260798c968b0336216e4c4c4e30563416ca772a74812ba9439a11017b771aec9218c210e2d729341c3f8ad433fcd8e8586cda8c3ae451b2127306faa582b7eea604f40aea68411a845561de613e5e332067a577f3ab7821466120b0db96c6e88bda09cec8e5d0befc05b479e62bb2dfb51906e216e074f30674ad4684190e2cf443a43dd8dc3f98c4b9fd05547dc695b315bbe3f4b2a667ba0e9268f637ce44605a5439033b8f5a726de11c47f05ebf21a2867a3cf1b9f056673fbd645eb53d8d32b6362cd7a163863508d070c6cdc6873a719b0996f64c310cfa953fc2e4bdb64d5b1472e8143865b54f54fe44c0c0b90ddc398a392128a95c708d1bda0433e825856f738ba892f6a7487480331bd3df7c632ed599ebe8e60aa113cbe169790ca6af06b03f38c852590564a65fe7eaab9e91274118f58bae9e11205e5648b427b2ebf2ce6843829e2c38d0381b4e93f2be600e653c5bae25f45484287cf9472b9c09c2dfd005127316a242c3bca5ffe3da8d88ee30da294dbbe198c4db4f2820ad93bba32120def721d13543198e9af226bb82a6407de4d8f6383e45bdfbecf7a398da8b6cd0ac1fea2e7205121dac0c8762ec4e61dfb5027f5c6c6fb2ff5d312d46465fa5bacc52235f8e93061be92e19980f80a6fb83ef7f95cae00c356aa17053536d24415e2d11eeac345b4ffd7daa9c2e4fcc8df93ff88a097e64e0b91d853b58c5256d3fdf0e4fd10df9dc62053c405153af0278703ba8f96013564f7af847de2d49675c29082b665fcfae18f287146c90d3f826be72d397c3baaee7474b6bf97b138066ea00ffceb64df409a0746f4becdc50436117748a12ba8b0d0571ebd07a6cc833ab8d0a1f2ce9ad3819a33dec1316ce0f0f7bc9c866bdeb0f0053dca2ca203a49a1568e4fed9a49fdb5e6a42c23ee4609e0409166232b0f4ffc4e6accfd5f70512c9b5a8f69604fed65c476fef3766540e9dffdbd59b66c91c9b3f4a0c13cf081e9adad8568ba1d3bc9f77285b5e5f7fa1124fd71e3cfb5526046f81910310131167262a23a2eb6a0aaee59cb4e15d1fef0adce02d72eeb3ec2c0c9a93e9a151e21e26ed5f8c599279a4ccff31b043928c76eeaee184e814bd24e20bb3d35c32ef88cb2477b8bb55f61670c1ac853ed2dff2f379a50ee9420940f70a783a84ba2d61215ef47135fd7c9c9624261cab1b4f40c917575912fc4c699142eedfbb4fd15a8f4173bf260e6b6b38e0947d2701427f49f207eff9bb99a744bb6541a7232ca99e43d1540171ee495d9fb3ff9eb70662cfe7f78c2ca06589dfee5c0549bc1bfc2bbcd6a1a9cf0b1970cbed472fc07fcc9ae0177aac6d124055f57d2dfb6ddc815f3aaab2204614a1433720b9263d74839e4894c493988c1104f77875111cd2418549219fdaace0f192d02c1542bfcd7bb16c20578ffc2fb179dd68428a60e3363f7b38dd48f2db8eb113a29d6966d6ce26ac46bd0cd57cde60d78cf4498039226931edfd4c13daf7e62dc71daa2f52316685da132e54a993e37e54d683a1f3fa019d694aedc935afe0b1a204616896312ff5d1940d792bc542a1474bca7df4ca9a7af4f179584a24a3a1883a42261e367e0b7b9e15ae0b450ee67354eec104929c34c01495545b374fa6d81a39478dbf8225efcc130dc73d0ca55b78cbd1c7c9ee9cf9681e9d34142adc31a94944e037c3a2444ce178d1162627946cbc268c09b6e24377f3c77c0b049fe31edf610d2003e1569bcd1d7f40d9d21bfc46d05cf43aaf3950924ebd66c6fa097ca1c902e627efdb482374bb5c962a0f111632f85d277a125683d892259494bd767649e88d76c2026db5daa6d0226e789b47265d41504ea23e8d900bb0d4089fea729bd2765d154d3c6c9e6f2193e3aa9912015c5ecebfa955dfb6f38527c4c6e905639556a5101ba07b57c67e31105b0f0bc1f32cfaa214a9960efffa839cbcbcd8319ea1346b313a46263ef281219adfc0cbaa9465969def7a1e36bc2e8a3502ba97fb3e6e2498e688303dd2584e1864683682e70bbc19cd35da5fd0522730d1c5e601239acef6663aae58b0a1c563a42081a697d9f89b60f7552260c68452d37aab135b83d5c7567d10a427d67b67ac852a33b348c960a9057da5c26ba8eebb5657350e36018aa8ded20dd1608589495d01c896ebf132abf609727d6f691b9f62933378d73be5fae9305c5e1bd11b4c81ee577997cd2c109440778520e6203fad1ede25e1e7124ebac4899df410d9c65124a6735abe5e65f8974370505e71fe98a7071525b024e263ba15385f0095ed5501a515ac5a206b719a32b0ec6903a8c749b5d39cc84c0862d86253b445aea6478a1553116626389dbd16abfc5a170d1d127d4356141ccf7445d2bde1f2622c2d8d0be77489818525fa36e1e743bef4ac9d33b3e4f4beda808f22b3ee9bba283bb96ddfd44239a159cbf75677f969aaeb51542a1562c848bca26ffa173faae9f3ca6c22a61e483d5bb404c87e610aa5706b9ff7d596354d8bb11e33eba1d73f2b231fa77dd01581bf83cc3a3dbfbafc3af06134542afb28a11f8fac36a785ebda85920f2b3697b7686ff178f7653b7142c5bdf413a60d2e038d96fd03fe4752364525abcb66f59f794c24b5837ca7c900b4c7c0c30298ede1b7c2e7a2bf350adff817e8bfea018b156fcf4bb58d24b2115bf4017ae2b5ec975300bc9512bebc71219fc29a926b43f209163abf28eb3d5f69440250138eaaf37b62739d3d79140eae760f2e7519e3e947c09cfecd61a5f86c985cdae7bccddfcfcd33d6738fece5072b25a5e2b4acedfc3f901c1b33594912b48fc3b18a6678fadc6b7c6191b88e783ad65d01f1b1507c3f7d00d0682f03e0ee970435c9ca37caf7682e6200c6a0ec7652d212443bc412701fff8393c0ffe95023ddc98b2aeb91c93e90153ccd45c20ad60a1ea0870672875046235b03408836c4c50cd39e55755132c75a4200baad020c0ad03c9626cd3fb8ae4e965c5709bb2d722a3bc6d49251d026898aab7a59fb8a19d03c6c8ed7718efaa346cccc5161bef667463ad352e0b12483b9e6400913a6e0108855ace8ae2c610f6ef7840ad05f66556c9cf5d0732791302fe0124e60324313605d5e28fb857158b609a852c1e259662a04291c59e47735846637c6e2ed42a0d9a7baedce01a9e129e29f6b39707e1b7503a32dded01a6e721c34f683726c1a491912f46f440892811be8ffa67fc39eef22f4a9085213ae0163c2774f3d1193419e0bb0b9f2a900017185d4044b784f6a35aae5af39198d01c4ec75cc9247c790335ed90bceff90ae09a76cdf3c1cba0353b340ee8345fd2b15eb8b5e3806fdd2de29db812db1d8dbac8922066f4c642ac16f690525e8b1855335f9247dc296b423af5f2f9eab5d7c5ce262fdd00b238cf70a76f65567428447ba5d784404ef87d1884500f51010536f9165966e9723a4f97f9b5e7db9547f74432ea024afb15f359712ca6f6b668a33bf7f1ce8710bfaa1810bf0d9c2ae8208332bbc2ac29a57b5db63f0ff3c71b5cabdb813b0479e8054705f03abf961ee390b175cdab5a282c8a6b2ff317f24d5103b91f8b6298b1a0ba7e8e795ba26985a8814e6da2962ca5c924e8ee64224705205587baf3be5873ce51252afd8357346ab438bc7dbb6310075e585892a742d286c7cc8cdf5740be2138296827bbd13b5ba3800a3f1b4af0b6f75b928b348efdda89cfd9a1efbf071694cfe5ccba19bc62888f1d7c6a712a49c3ea9eedb2964d6618cf048a8a9f175445498dd663c0104ca6594ddffecaddbb1fdcae8be5cc449822c3473d4b37fd478dd309a14f220049013915a65d8ba709a6d146ecda8bb6824b59b231696d129e0351777dea32516da736c3211a81f2b3e51a31cb2f6b265c7abaf533770c3bcb9a5cdb2f5ea0943089048f3604f9cd3f31a4dc9521a745feba7958e1f92b5586b408b7704c9ac5efe12988e0a68992b67a42f9ee7088ed67ae4e782f4ea5ec4a46bcf46d59c5e568302479ab16604c2540ee192c14f628398b7dd1e6dfcec8d70de0b1458625df42bf7e133a10e87b1e88bfe5dab99a3a39ae0e5e20b0f7d8aed54de88e5b09c683bd2277c266e93e34eebce8371b4810d4ba3701ce2b5d5998c9b3c7d1e33f0c18e7616d8cc2745d83bfcf65b51e823f954b98dd325295c720db5da30976235650bd7d7e76af390725276fa37aca5b7ab0322c27652ba762143617b528504369614fad5e73fb1f47bd6ad40ce20610677b4a157cd28e4b8008c5159a9301b61be292e30d07653e54f136ca29fb3000e8efd59e51b93910f6d2c5215ba1a55e424f4cd86bcb9988f0e8fb68df077d022d2b711c8dad3557320f6e6b051feeae5b898715f0ef84cef6d05952a4fe282a5af19186f2168f6c669d9fc055cffdaf1b53a00bacb3ede6125a9d3d53097f732b2898f6acb05b2c501fad14bce4125c0dd6da6dbbed651f603c4ce70e08a8fdbf586e64d70a11f3c67d2e8c09870193341e8c59cd86884b53aec1b53a0d4ebca231ba4796092bd22c61e57e6f567e33fb9ad2097ffd870de7eedaa4e3df0ecb39049dfe046222434abab12112df3823bba0de19d7e20c327abcb34a1578becc0048041cf423b3d2e73d96ca552ac64fe6e6ca974e5c643931de72077f87790056178aff372a737eaedfcc003a2c5bf2240a056a7ba4fe67f59d26b27def87f62caee55811acb8be745cebca895557a0c10c46c99d883df85c47b15416460f0fadf0eb780bb0d07623b417ed64039ff261cf1ad108e99247e1abc5c8ae57952c9de41f9286928545cba84c09aa0cc6cd599bfc689c3def18c9a0f34759a052448133d34a0680f5ef5741aed315390a95de9ef9074d0d8046167ec44058d554b679abd6424700b9e08c4aeecc7fc51dd2fe66ed140478be7c97a2e702185b719747beba6e106859f59ad1c03479e2c11b8a6849e5f9afcdd8f7ef6e143cce07575403a06aaf651714adaa6026b7343145047d6d9c0877298447481b42867b946a3eb49726117501443eec23111d545a205660906d5daaa4a70117b9bc4de712e9372f948e726d5a41e97120fff04eea5c2d3138025cb6b74f05c98cd5f44630407776e90fb7f34fc8a65ae05bbf23274ee4f442077e1c1f1c5050cf2b4c044e6d15ae5d1e8d0401101d8a262db8489aa159137f2277f2c9d48aa03a5d1a405464f8a3c91aab70d42fb826c3efdb258b5057d8d3d2eb62183ea132a68b0f4c548ed343493d99591f69c01b788a2298495607f4f9fc97296ac6af83b349442ffb89db1ffc64afb81b8f8898ed08e36f48f57bfbc326d818fde68a968ac00323d49785ed55ef27d82e071c8fb61027f1079580e6f6a226971b52056ea62009175b5c8e08fff86ad97f1b893965424156d082bf8fb22f441d9b48e395b1af882ddfe18eee44aaff2ede99018faff8f14a3c1fc8386ac971b9aab01a997205553d35049ac11a71e31ff8f890d1a317a26e9342a8056db4578cf1c79889c84931513ab0b7c7a94a6148e17d1403edddbfd7f4e19a7dfefef34dfd8a477cb785e92726a196eb717ee518e91b776b27ea158d513fc50dfffd30c3002c760a85591ab2ad857839fa6cb453c108f01545e6080d372e1b852486924fe23219d1e4a9a999f5b62f651154dd91f43e284f028b04c869374a98c2e3be5f9a2090f13416d2b754eb00459e2a3cbdac68b82d6aed04a24fa5fa6023d386fce1afbf90ca494b99e68e5e5200f6df96c9ec65066b4815742ac3ccd96ffb753d310d59584e7a8903eeabbe2c003bb5314718e3f57ab4d18a22d9376228aee3d10da017f428a5466b078d3f13506ce675f49d9b594c7f752521afd73f2dedf17aa93f9896ff5d887d2b836a6e9c78fe9d79e643559215c4f97aa0c41957f9e68cd0ec2d7440401d95817927482cda7bbaaeea7651d5b026b16a8a497c9febd372286bc146bf551d480241dfce11ca2c2f4292ab77573bad675b1faa57d91a892abe535aca610451dbe9bdddd2ea785f33afd02f36091c3d2c0369b380f94f6fc4e47a6941dc5482cafa60404b316fab5284faa4c38ddc1c864d837f2eef0afbe663c34def7da4a443909620d31b77dbecf90cae934fdb37ec15da2c7d0c5a154bf6b8d59e0d146fa8801535280eb249b5d8e11de3a47be94cb27348edfe05043f188cb11cb6457e11d037d8ab99bbd133b089f8300486db864d1252e3571411252649e2b8023c52c832c73ce40dfc56445d4608bf48aa87ef11361027a5e26ff1ca6434c9eb6b85cb5fe79dfc988cbf95e0df9b16075638cf234a6165195ca4afbef7bc27f3536a4d33086241f84e2e2b854d4181f150f9e36b86d6acc40bfffad44322b0502ad535a1097ca5b81a39de56edf48e4cd1c4db3150acf25c0d97855b5c31c42e74379d77fbd0400722d2d9e8c34a9173fa5ddd8623a38d961e8996c80be4caf6975b54f1220cca11f09d1c6c7e8c216df7b500804fd3bb0c532986b95083a9adbcfe5d18301622f7a279fa1531a4998f236dd2400fd51bba2c4342410c044f60883f6ef8cc57c94743079bd60bf19835f3fdd3d5c97d32011b7acd86bb142ea08f5872a1f00a67165b307b5f7fd081828e63f8de8202e844a25abcb35694ba0f886507fa9f2145982eb1e9798cbbfc36509a290ac6860811aeb2b832af53ecfe8f02016206b4d25538e989ad375573959a2cc35d97fec3d2cf55003ee713c2171d6de524107b1febca5fd3365bac9656b41a165332d12d216c88e4bddcadbd1a646e6fbcf0976258faa5924d5140d7ad9fd0e7c0a1d9bf9518eb4b77a12f61ab4bbf0ce33ecc77e22e8165bb300def5d1d89f0957a39d434ace52e8a5a86b82c3cc6607690515a83039441c2950157dd4d715c6343f12c66c43f1a4021fcd0ad5e87c229c0b2aeea510ded5231c5d08aa21c4bb752596b7dc0cab22abf6a38e61c60bb084764390e8e3f849398a4dcf1105d54472e659bd275bf2b925f858742f4ae8bc9535c654ad364f7b50ecc421fba5ffeeab412a66a1eb8cf339004d500eed8a4ef8996c112453e891e43b88e05780245669d85dd2f44fd7b502bd1405d4e362dbe92427f32a5af51da3de98ef102b31c04141774baaa32200b058469ce4c5080fae957f39c41f2bb65f470d60ea1cce500811003a9794f451776b1f451e781ac7e906c1ace9b7c07c340ec3dfc9155fac4c1df0689293383b71d810cc9227ef39b8ef710bb6b46c9e034d25e70a83128ef5e525e4ff516080c7503dc644a764d4d709b9952e0a2675004cb18eec35b2f2f89cccf60d29115b10d901723009be43925b0998d3f859e4cfeec0f891c7c43f0e67f802a31e380ad9538705a307b9687ee069c0f48a6fe0f525328ba923d8ed37c5d7e4a08bf33b1fa0523573a54777d44ce4f57f6aa697b977f11447518acfa3add3848ece3aba346466b07e0be4cf6dd8e047f8f1f980c565cb6276fe52d22f9bc04dd355a79820fab09b8ce4410a34376338d13d496240484cda88f6f168ceb8799cc7859c58f9459c4e0d252731d9986f35479e9439e38a54c629e6860bada0e934dcd77c6d0e256e30009ac56ca85ce85e655a9d2b4087aed6a2d9778f9a7f8f301aef44bdc9aebb58b9dfa508c677fca8fd1134b3acccdb1891bd2bdbae8399c7f6ca735f931b409e5ed5a2c463993c76c0cea0a1ec2795a7a786106bfa291d7687e57fa8cc813b66d1cc6692dd7b6288854dd3e434f16ef41fda819117320d014250b24daefa815a06911b8ec8a58bb8bcf756ba7d15b3c938a9435d0a9ce16c83127d00ef934813ce4cf8296090ef1007a35e8d841d34f435f1b89ca247d1f7de81030a3a71fde8542c460674d0060219e7662bd1c84fccdf852bae7f2ebc23c436109086162108ef6b8a158f5ae4337248757a84fc25aeacff661630ad9bb06189f36a5332f7f92cf84c7821428f88d5e8c9cc1201c442f63fe8bd79b182a4ae3e323284f199968baba0a509bc481f232cdd8bb4daddac741d73717cc4f14ee38c55222c8dd50fa7203d37ec49404c4c31a06dbdac9fd37081ddcd8de89e1e91d5bdaf7c02c98d2386842f42feb4b94fa31f74a4c08d6308135e0301c17dc6dcc41e31d52fcebb9d8e5a95e95e04558961acec543304f755c0b22dcfa03b69ba4032ba9cbffc5629d770fa8383d83289fba828abc7798ce2d3e715a59fe04cf4b6e842c2ad72726f969af388af0bc91610f5fa35fc6a410a68212d9cfadbc753cf453e7d86b18d0fa2c76099d22497553bf857caa6ba92e389a3eed645bbc78486213441bb91f7cdf0e88865cf6a979840268cae1d1a45f9c3da11e2f444334d0ded0a6b7efcb81533fbb41ac46ff0a7c314ec00a3dd352e391dd41ad197600b05ead8bbd7d2b71343c1a75db038feba6a4d496649239740b4405a3df01dc49267a5ef58004561fe6506355165a4454b6f06a621c7a1d414a3322006ce0e33934d2ae2b25b0e5c28c218a34bf742da592f6d23935ea8bac7ba6b15356d159ef3a05fbc950b57420be533474d985fca5c3afa5acde4ed1936965236f1885f346d787b51de5f224c77b463d48f0b38656701ace89b3110343ddb25c65229dc9333e95e2d4d2d61c5d8873324923b4454f582a0cf69a367909ad1035c50d3fd8a79bd09dfc65ae03fc6984d8d64221d9b1682e74d245224cde37ebfba30dd47f0c361f934fa37b889dab5da34a261482a9ceaced728263dc1401c6ed776551024b58b984d49042db972f633ffaa51ca87ba951b3a4e0854c215e47c1c2f0750b65446ec8cc8382312aa5000b0ae37d5428be2ed5046089046d688d1f8c0520249db09dc7f2cd3843197311990fc77bb49ace34b7a622982f3ba58a25ac3b3e3d2f91778008645bcf5ba91b3084e59a9b697681910a5ef83b9d15c5e1e5e2e42c9930a903b6573316d7cb714a0729effe27afd6ed6304065b77a0b6dad131c12873d8bcf7b73e605d2b88371671f6f878455e532d30e0340895083a8898777a4ed88c17155ee1966c90a8f5f7b4af1bc77e8e4e021d1cb97ccde0e3d77cda901d5f9caeaa59ca5e12c2d5e10394c06b4cde3609f63e7179353830e3a9366df0f9a1064519dc912b9efcf93e841f9f6d8f4cb1c4e497755b7871b809511da5beab57fb3e5705fe2f670957437b0b6a62b9b042ae7aedc4cfccee0fe818227bdfdffbf3df6da25232465ba1c118d10eea19a156fabeeffdc07b63027ebb9ac14ea4072a16fa3b6a7a173bb26a43a12116a0a3507c86afcdad1435e9dbebdb78b1f0b96bccaf7472ab3c04a3dd1727d18364fe1402fe6483c3ecffed35cca32c721a709119d1b765fc197163e4611aa0b62118abbc2686e643982b69567654a4525e8e158bba379ccb99f71c2b25a2ceb8b3689b09522d495e748fce1077fe6f9c5df89036573c0efba835f5781a879df99df9ea02a8cf10e91f27da52503b1c019a191e34abc121dcb66d01f12936d57c8576d655a5432f16fdd6eeb5f3d716cafe7de4a14b661db33a137d2af1923ab2b5cdae0299174652b440d9fe4c4f8e2f54fa4e57e1a99a032d6795ff469adbb69c6079d226386efbafa768ceb514d68cce64aefcaa7b91e88b245ccaaed45d554bc43581c5e6dd819ee58fe17fae19b07edd4a52f718d7b3d63cb367e398b8d5f911ebd54100e7d1f46e00a470a068b2dea62510b03b2af292a443c0531e059080c7de233993079c686771844026659c498eededcc9826baca2fd1c7a35f4e41dd3797faa2c6062d74c6046e1bbe1f9b7fe4e710daaeb9dd8a7e7ddb28cd8a54b38b8b1c4310580dd98b7c062283e9af2506d0537be4f22e62f9cb276ccf29adc951a32e38bb3e8c190432d5e95727954274ef9ae5f6488aeadd7847af19df03879fe7f470be6bb0fc1c0143fbe06f09c47cf0ac62b8aec1385b759c63cc95917dc1075b2fe30fc50cca9977514f7ed1f9722dd7cf1e11d56bbe9afcaf67b597dd7b93f98c3b9cdf1879e974dffac38816787efa1da2181e24afe62bee8d2250fcda0c43f4e8aa47b5968e7508cda2c7b4d3c77bd4ea4736087c52462d96a5f2d5933306a532ca9fb822887f247b9a3d4ddccaf98bd0d1673f7797abb0eea0c885f42b7d34ec230bbd5493500191f21cc36ffb9771a8c06af86272376d4f41bbd06463b3082c3b51a350e9455f4bab9cdafb5b24c7e34809e3ed37918fbc91639b7654a6dc513a2e0eeb4ea57342bf64b916a25c64fe6007b53fcc25f4581d6770868c27415d8b93e47da8b965e4ff6f6ea7251d30bdf852a8954fefb00809d7fdeb94301994b499d1cc8389d2bf164e679e5c52a9bc6913f8ee118688e3ce5a95baa10b1e79b349c3f9498a4a9e75b7f93de51b614ffba767c99f167877052bad11286e591250316e890b97d36e3f14dcf260ae7dac9306b9edf9c02edbdc4360fdbd64ab7f22ebc877189e640074eeacbca127386ef034394c4a958c903bc2ece6e5b947e144608e5cd6ec6b8ce8466a26ecb65e6000c833e9a7da2a37a5113395a753368eeb8ebe9f86bd4811d76bface4f31d19e386e78d9bb8cd10e556c3bbd18ded29a5d0e1bbeeeaecf7c0e3fa38158680804ff8add4e5905014a3632ae2237fb4baf075ead9d141acaa60dd192de995f8be783d2bbb45a976c30a4c65b48b61a252ea34a3ef280ce751b93d55693d7cb782ca5a671dc557879111cf8b3b0a20eb8aaab59ddb1b99900b66bbd6523cc1c01a0b4aedd39f9b6c2064b704daefc6bafaf9c385f99e622110b8a309640d0b0eca73bc5e72f24249686214e62c4acc889d5b1a2d9c0d10f3fa3b03aa6b3e4b7124116e0f76c0c0577c6d6d6519773f21b29230d2740b61c980539bcb3d4e0b9e04d7f087a57021d9ded051e1c6db74c0de217af69e38ecc1c92c197c493c7a9d934e8d1608aa61d72174fa0ea3d519d5869c92780efd69b3f2ccca43e1185ee11cfb5ffa161a2d41426260f8354bbb2ceaf901a95f6ee2b6bb597a670c696cfb3a63c33b396357ed764b9f7d77e437892d4d79593bc97b17c57be65093e60427d85968c16ed2a7cc0fa198277ce223f9b1b2affa82b350d429f62929c5c2e2b3f532b22c8ee05510a2d10411ae99c3d3634dc8bc858cb570267f54323392bc360440714d1b87b27a57145ee1ae9888781cf06032a98e75bf690dec27985c4fa595858c9b9d7885eb251aef9f4cde50df186cda2c9a1e765c89192c7df86465e3728ad970d34b68a081c5e06cc7c5c85cd122c88e4c550131bcbde81789ead381d05cfacde0e5f1db3672ecae750d16db0d0c3e57e31294d02b6768acc61f06ec0665195410e0a6b6f66e4482e3c67d70b9a63abdf42856587dd0b58494344d4e9a93023d059271a3107be0eb17796eba0ea43fd11eeba6426a97af0bdca1e86f71e1ac927c7c51b9fe890e122c438b3085731ff6331edee4ff7d555dd5df5345a6837b868161130931be55a563aad0c2f531f05ea99e1cee7875b9ec298fd1c1929972fb83eaba09cb5b500c8ab7547d248dd2ffbd7511fc7369bbd673670d84d038d75bfca324b7c33c1bd1693ef6408fee7d9b3632b403c065bc42c891023a4e6a2e42c45884eabab930d82940a90b64b91fd6f316f4185f901c45683fa1cdfaef54e2fb5a4add2d0b4cb728e1ef81924f8ea5476a33159bf93918c4ff998541217bcfd2a130351c4a358f03943dd41e98a39c87c09ca5e2c875b5c79e8886ce0ce2e505c5ff0bbb88ab22a5bcb4690130edef7880947b3850165b4a5e1a8269055b1e4500b4d5564d432f381c58e3e2861b34fcd86d7679b404069db3820921ee25ffb1ede389a430ddd405aa4a7d8ff7b91046f0df2ffb23d91b35b89ed573da58adab79d1db9abba8ead8c70c3bd5c5e438d9a0c0bf441d3b8af0a55992fd18b514ac4855c15ad11ebf62e26cea0d1eb4925a88e9b3278efc7dc67f8d865c0624d18910ddcc4c5b7907ec41fff09f8ed5e4b5021249b9a9dc19e16f5815e1136f3950bcfea1164f702cbceb09fd4f6b61842f0dfdb822df081bff6d46b0d59056016cea0f4fb3812b307ee5107b0581ee491ded10731ef1597e9cc27a57c792724753c3557b35a9bc1819100b8a032d2c785cf0e8b63a223f92d7b5dae4ab0f7768eb0d03b223703632a38b4777e9a3609aa495b1ccaa85cd47fc97e4328f5a5f4c3b6e8bb6156bf4d19410b3e736d4dd8562a2fb28a6d048937be069c5ba844a9795abebe3eedb73b074c91cf8166609d1e3a5822bc9f029b91865eee3d916db5998245eebe3fe553d42941eaf98467605fd1aaa6ec3ce48a2eefbd72bc2c184a105eebd995d34644005d24f905c36507b68c72f49c6b0379916c7217da4b7b124fe00ddeb0729eef332a325f1f1c36d6881195d8bf25e002a3b3ce962b021464cb4d36afacfd98d5b538d08b98e382af7be298d63eb3f30130e244a55ae42bb67ed868785c0e4fc7f6c29635126be113fb43021d77f488b268376d7ca49678f3644c1b54466a470d08573a4a06f94bc1b630b83db97c63505f5cfb1d5babae31ffcba487264565df2027bd5c3f0f7422205e637dc97c3f668c3ce44764d1213cd49c38516b536cf218ea499d5d01a772f050f9385f7d74e44e6e3639ba52cc27ec03be48b5ac04eaf04b5ab054db3e98a181e5d4aae94492622b6715e9e257d85432174c5d7e68b149ee0a0dea97d93cf29082e5c869a4946ed915ea93bd01f79d41a9afed8d2518e8f8bee43ca7d097678cd5c44f0d7f947a228819ef14745d5c4037f4a38b9c93393a75f839c5aab4c542bd95c745cb85729d603245d0ee5fab4e6293f33428b1cad7702a262082bc9aa807c92eb1f02fa506520b739a59b3a6ca608c02471698cb8e170d18cf98eeb24c1f9572b44d5f4908d14f6b4019e5ef8cbe3a2c41dcf59584272a7d989581a3dc4275fae5e516f4920689b25fc27b2b3538a97ef731d220a7a63f9408239c43b978b11e48833024c68414e36403e1838603033cf5fb138b9d2d3af0d7eaf02c9bb024aa53d498b96880682ada5f2624d416fe5daf2ff397487046f9a1274f3f47c5f25fd250bc76f1907bca05978fbf7d41190a871b2f2cd325ee6aeb46a61e5350a47289efc8831f392497d8cf8e0a7c2751239cbca3d452b2d6d4785590b0f9812a0cb4f61fee22baca7d2ce4873cfd717fb96f0cc43bf833621af52f74a0ff6ea1c84d71b22555f3d5f75265419511c7ef95567092b5cfd525f3e7b1b5dfa78643372d130a7d8150d298f33363d4675ad6b0bbb4ebb8118ae26cfc5c371eb822e55fee956fafbd0870863ac5c3bf19293cb9323e5c5d038e6f639732a6558d637b38add8f655d22f1cf9566f8e9f8832a5925a5a42e36659d00dbeb9a53f40caa52e904c3872335c26c149577ec149402dd38fdab32c7cdb81704c6bf7dbd942eea2227826e788e31abe03da82f6220f18466f62783f9127e5ea7bfe25ed979077697f9bbdffc6ef3765d48a231317ebd96928146dc422f38fa8b94f127a414e1e4b4bbf42e4d6eea9422821e37282106eef9f84d18b8c873530cddbfc508bf4a4857fb86627cf1e8a7097efb1704764683f622151054a09cdd84e094c7c8c985f4804ebe83cbc38702344be39ed0a5590f4657217c9c636944c6eba5cd14254f8371bd544fbf87bc61e89226ecf80f7fa5b9ee1e011bf00900c09e11f68278b51ed99ad8c21179cf53df8ad557fc8af8af85df2c43a309e36eb100f251ad37c3f75f49ed2cd5753eceda88e716ad9f9720189126a48d9fd0091423df708b3d7ced017696903b49b7cafd67a8281ff22dfe1976f6e5f4bb7bbfa2b425e14cd3d12731474d42c75d08699cf01abb9670623b76979144b8add91f582b32c6594edfcc6989d76945d3af1d4329c188cbc1eedd4e6fcacf93c55f6a7cb2bbfe7cd00a5a63b4beeeb60c8f81f7f156e77d27ec9417300ccfc6d90c2054f2e37c884f363e3968b94c5ecf67d4af128237a6483e53631cc1009dcd11b5d6123c9fd0e65b0c33150c41ac1278fbcb26bee9be04f6ca413c82c7bda59f2cef8262abb2145387d3b0a66c658ec97ee57de1763446804adc019e0d0c11e38ca93a347fef5deb6bf1534bb0ae2044beeaebf435f09faee26442cd629f0f23e9b6ff3f7057d743e29af918c09c71593dddd7adea021a6091c928ba7ce593a08dc0e8240d3a45b31d0ad31ad4cc6559471d1cad33b04de7b4cd9bdc9a8a991b2fc0f2823b0accff2bc69793b3f9bb60f74fb6ca4cac92529a9a504e1c6f1089cbf53bba1a789e86b6ab7c528b1364a464361fd3eea58cd19d9d22fbbd8ebd341bc730dcc065b6add4a826a575887e6d14ffad539bba2f2ebb94eec35b7c99160df88d239e0ee5e1b42371b0e4bd249c6a05e0b2d63efde06d5ab3876db958e5ae9412a478e56ab3b29ff0597869b41d44dc5e0f48b3a11bbf083e921e323a073eb49c5c72a8b13f54dc92ba0691e961605534d96e09f87b182aa67bf11918004cffee0a912225e68ee25bf593956bca689b86c5893d7190d352f12fbcb54c861cf77932f6b118ad1c0f0935e9e9690152f21f566dac2f6686830ee541ce1e9d4fcdb21fa9c8448ab6dcbe92924b49b6a61710cfb6d08976fac7d8ea430d3d0afb8085b20cec02c2311681b3dbabca45a1cd5169909c1b61d490a5df4dbb306363c8830ee73194459bca3fc1e354091fc729e586bf13328e5ba2fb07013487fd013d807b9bcf407caf370f10dce28d6610874852268a391cb2cc0558a72716ec39dff7d6921e0db6d30920795a023fb1d98cf960e3829685104e97df7b59ec9678d7697f8ddb4898d5d249d332b99f2f670cc83532ea3b96556e52ff13fcc56bc6c5b962370cc6d075df95deed43548aef245b4369baf97eb6e80b2e697146bfc14faf0061b4545c584c2a1ef6202681112464983d5b9355e4b6892e3e5d0bacc35a222266756d06e190b7554830c8045dbc394ecb4160cf11f5030107949dd78d3cd50a39fb5baf9db02d7e2459fbe91eab15a2715319221d1e2000845f665aec597fe0e510a7c937918f6ac9d0befc0f15cb52b5ac661107a85e83b5e4fb51c38824845d072228619647594e300b791361ab7b2e932d51febe95c3a7e2de3622b8d6243b5183925d2e104385475f6921146238ca9ce72462671368285ba64bff19c52bd5ad53c84317cd6148f1e0c387292d8d98859b73be15d5b78f3f14f07b23021815ee650b4b8e6b98c197a00e758a5c697f777112607d7ae3370b15e85e968fa6124b2258b5a48e910d965d9405b0789186c3f20b936baed1545591383e75df97a539c438101b6d0e89c4898ea23620148dfd286c3413e6393e0fca0684fc6971657ea2b0a097d5aeb92caa4abee0e8b964d0fe703af659f1e5423799298edfb6cdfb701e5c23d8a08cf1da6cc0ef5a1683848d5bc3a4199e8d617a1358efa9eb85dfbac48f1d570b0cbd60c4069b816c82614d7e75202e70841ca30eed28505d6899aa97a4f1bc3fbe354cf43f7372add1e29bf1798ddf5ac933f9ddd558084c0de8ef45309669df9d5ba1ada485c2a672e49f81263bd6b206e92b090e1694cc31c1ac9733eeb3dad4877faacfb356a05e73e91ee3ec41cdc9883513f90d73423c40a206485e7bf15425d38af486cafa2dfe91bfb689f3e4c7b9a7c5a534a025b9f1023c064992111b04cf71277fb6ebe2e5bb12452a9c3a9a6d510c76c5520c138210681da0b1f0be16acafc674373a0f101ad7f25dc07164aeb5196f4140a935decf8f1d6b0ab2f0beb4ab00866c5bccbe7f09b39943923bd19428756f4daefa2602270bdcb1448c5666ed1e1f5f3ae5ffdc4e09f222817fb87351ed2c4c140dd3fd807e8ab16818bc61fbc8bf4103dd776a3a3992f6281203641aafb2350ebabc3843423b76e173ebadce1332101c4603884e41cedcd30ef7d67223932e0eeea51ec843044b44fa1c159931c97f647ac52799a551925304e23a45e48998a3b3d41c5a94245822dddc46e9a1bbc30256e8fae4321d1fe33c8f439d3b7e266268badd38082c23b15fe3cce8e197f5b06e10d1efc933251d009fce39e6a1e105c805cfb028e24f5e273ec48de95e6275742ef8bb672cf94de663ecc6e19d9a7170bb2f997f54e4c089227a0171feff7e251139b53b8eff3b8520d6a75cf62d131deb4b936bc8a39f211ad2825deb9b7b0d4e40c3b14a42f52eae6a9736b655fd0f22274e5dc40234f8e0ec0ca0b0b3e7615367ecb69a824bd6ae6009e22cbad1c00960da1c184becc09a9d6e87418ce2e5f2d336d4d161a6ab6c44df9fbf4e16b08b8646fcc6e868c652d90bcfaa794798441c4548be7433bd268a9a552418bb1ce878264d246d4dceab83c93137e3a665a46be0aa14823956a08896f55e25dea58addeae9c7ee2bbc67dac2d491ce63e3989879d43bbaeba4bd8d3e98a04026a72de2953657c444987fb1f5eb8cf46b07ffd1bfbd6086c18e84cce454745319c2a53501c5f359d91a2c7d641940f83690c797250f504e69cd6eafc1739799cd6544aa6682e989e0ff0e57ed5a12b24efc6009d74f01f28e050a7603bdec2534e069e70e96bc79bd42cb1068ab94a59e51625f65548c929a7b3d8ae0e0af9aa201d683b1e2224388a765393ed4ab92b876a6eed1735a2534303b76659665dd4a4b7b6b0515428fd65d3ce9d72d5877e59b1d9441020808869656ce640eca2abe8b750e1217611e1b6aa9578dd7079f369e264d11a293f5c5fa3b5e1d76d446b50458a312af15a08ec48b3bfe645420f9375ab10cba26462c8ab12dcfc0b2b46ce4b295c39a0084cd35d84752f11163750e89225db9191bef01087886ebfa41f0cf9593d9a54c14e557dffcdb9a68661a53b070ed832c5602d88ea3037d4aadb2e41b3575a53b92a24a18deab769b2947f74c72373736f97cd6cc986d26a7801905b4b4525d56c02a9a37208a8d4c28bbc1d423a117753e1243bd57fbbf470aae743dc8640862afefbc5c5e363f5ba1db9c181eb27143a296717e51f62ba56f7e536f8626f076e80d92bfa50ffee953fdf7229e6b95474d56c468652e358d18528394ec70a6d0a9b565cf74e1073b5bb2d46814ecbf82d55f7b21c363f3d44a0cd92fe5d65c0240f8ec5c113414fa0f81cd59284f7f08f15ba6a937a342df521a44dff48a87efe619e36b3d5dadf106995bd55e169e4b2083f1f9db559c082491cb89035b11590d0186243534e95537fe51eec3c5bae6128b9a884ce87e0aaf3aae7c1b91e6cf32b7064605b9d76f53dc61fef4fdedeab9efa7e8de32a4f61f84531052ea45b9ee80d3557d8ee9dc2bf8667cb413535487e0f40e44a991f36a4fdb0d474f22e6dea72374c1f85b6145168a42df6222ac73471311f9122380c887cc56662ff267dd730ad4386c48371f40d087febaa68952062b54e9722d51f19649372b639f8d6fb9740ba82f65b796ca3c671bc7a4ecef4c3d79d3207075ddb117f04da434ce907ad7ccdd2fba62525099a9d96c86eded4a6c682efe031061056b662d3233fd3335950f4722e625796e33e2c38ca0ef651e2547fdac98aaa220aa7012273e17e91ce9247624aa1b5f9e5f6954608aa4bb444767170279e6c4e42858874fdb88b97c9795a775209dc6d11056e10ba702e3a48c673188fcd98350bc6e56a693c092fb021a3c70c52d9e0ea363f0c06c2e836c9044ec9decb8b6541a673d6fa5801ce8d0a7363e0ccfd5bdb5478a67bb8723beb9175bced1ee90016a52c2a3af0d26893997f6894d6f98a07b168305b9bf4b236f29d5013a4210a4105f00c51555c441196faacae684c98eca34c02496b199dfb53d97da40a4a08b74dd63f38d2f5f2d7ad3a85f68a01b9f9026a22d95a31503101497d72554100f5c9954a67233c068dedf365eedac0012fac3c03f94f246d5eef5d86475d27fc9a07f79f92f9aa3fc74c0065ed0b2c5f8302b32a9d64346f8f32a9c3584d239b1a5b592c2977074ab520b8dadf608dcb74687ad44069908105853ce1a6257a63b45c4780aeb89a45a9a7daa59c35d61bafc85be1b55eb68412c69ad65038f5d0db651b09c3473cb1228006d42a77edfd2610a8a57bfda56d8a7738ceeeae98595f15b409a8a42c7ad730c2b049264e0260afb468532de3684d3e8c4c2503aae25ecf384551c6bf3ccc9f147d0bdaf5cad51c68a71190486bb165aff8c2860660303bee8da294d7ffc298ad51593ca3b9a94fd66bbbf6a91afd5a8ea8e5dbc997cfc31aaa4b6b2ef5264c9eedc48864b7c746ed4bd7e84638b930a992d57a44445b17fb40d19b710823d0a173231176efad8231e1791e0df7581d64c77f2d420e6fa9c6c1b5ea2b47c09af5570abd7097e4878acbfd09abe79cfae753bb96a019df32c476610f806bc008c2006e85c81efc5f1f91874a72641fc692b0cea7351e772b6e365d38b31368d912db4ff79a5f991843ed6d390aa7ac23f85cfd280647e455a764af85877093b15fe69fb4cdaab04171605f5ff2f163d871cb3f34cc51de32ff35af8a66743f9aa4f833f27cc991715a13a6fcd477224d40fea9bccda8f98906676ed15bcd287e0a3dfdfab94dd0c1005f3b82a9ea63123b786f02037149e6b3d9ed56df3341ae1faf72ab99cc644de48b7417a7dc97581163e5208dc61d17d8caad0970d8825ea0947df692db9cb63f9af217075de6761a0d5e7f7ca1b7b0a291ce4ffef91826cf3713602deb90a254252790977a8165b6203b60e71cc188361be38226efeb825d640d83ff58e03bc8b330c51d96ec453e371e57501ab63a4e94ca6c3b2c5e53e468c18cfd5265ac0f0709ac88ae15d684a9b1ca5c7b2ea5f0f262d020106f5dec9e4bbf17666ba8ec3b0070f310b800e7bf1d76db6b286c3552aae1f58187c786bb83ef28d2b4e3f9cd47ef7716434beca3e0eb1a7606771952f1c98fa9eb9e756a140635fd439647d0e03cd1d96a6777b5690b905bf27063ed1424c44c2c51e4f53e83f79f6fff07ed981ece0e9ca686258b8fccebba4798775282839bf936b0fc69f7c18541df4bfee1909365c77d84f88e82c55310afffb42ce8c37468044179b887aaf980face51383faf235c0728d27ec3699f379eb83e054f3b6e1257f19a8c6d0a3b139ad4e97b0ffadcd482e52cf8888867ebd1dda48124ea287830073408774c938d0d144d19974a76eccfeedeb8d607e62446ba0090c775bcb4723cbe52860be7ed22b5b71ea0f7db6cf6c30eea0a6beaf5bf0de9e20c5343e066d737ab1181dc6fb05cbf62a92a168ca053f91153a968714661fa08bdc0d17638535b129f43f15d1049bcb16602a5f79bab2b7f35549cdda46b65d8159261b87798f3a75055198f9e7e898f3d854e015a3912f2070efa0fe88535c346c97c3d99c54eac5582c1fa3b046e7bc763c8db739aff43765069e0e62f41cdf401b1eb75871175740f4f6ece2f41cc558be7781ffd0ccd00838016b5a4f648b9ab150cc701ed8a85b876f8be021c2b69883f66bd1076547a61bd10307f76349f146f85af47f993f7fe04107a96296b38b95bf84f8652698bb2f3aa766eae0ca943b8223264b6a44cc8f1d4f19868fd2f50fc2ffb20cf1b2e4e6c966bfa65304aa31d5eb8f2f50f984cd90b1ad96f876b2601088b56483134746e6b35586f79eb7bb25f8c472fd40655349d6ee387343f5eec45ed7fe817c0722d39bf4e6e866a3e6bbe5f28005353cae97269aeab30b2d5267ab599ab10c99c543e392be74b969e2619c614dc15519313880c57425dfe6870989694ea409b90abc196c587e7b47dcfccb71e2c0166c310e05eeda3b712052674ed35d09e56ce8cb70c95dc5cfda4e1e31053617d0a193fe3e650bb19118a4777368859f66d9e28fe98d4e3d61d50dbda10b2bbcb4cccf550331d57f5d17d671e94dbc3962948ce7f77b73046b68765fcdcb7c7f24ead9b8f55a6fb6a5d8eee1e4d568a922498b577aead90b7db4b3de7fc74d46cc592f2a4610548a574e45ca04c1555deceb6026b84b8648b958e2747db36e4087a18f289f03440b20746739c9edc7b05ec4efe2402cf20ca62fe79e94ac0d93ccbadcbdea03d0e2cbf086e4df557fe9c1304bc2a7a52a32eb1a0021dfd11e47d2af4f13c92720ce374d4bb8c28eb13183139a9a7fd925623673c58bc0cc36a129d6d3d86eabd2a63b735da27b112b5230527bec9e3634edb5c94dd5874e9fc363d7b889953fd009f4900427c2d54c038a2424be147c0d3e4df7101bc9492045eb7ab5cc6786e2043a2818d1ee0be9ca6f0f39c5d897f100f2e7f855bb0cb40c8ce598b328c2b76346b8342ec2ffc7bf22b9cefecca19cd40fff1d56c723a48b2d69acb25c3b7d084041eeaaa23f09d0962ec6d9b737c72eafa05bcfa644596d93b7db7d8d79bdab8ff5a6042ede9376ff98b33caaeeec1113d47f5bf76cce429f896c2f584121c93a3a785b35c64e140280f8e3ceb05f591d7ac79907e71d4f920e403740bc5d5b76a17bc276856a8a6793df6465daa370f4d837acab370255c59f5ecd4b397c6658376dad8ab132f064ea87b607b2bae481727649f320903b15c6e481743862e30502c7f1ce3bc751a58919cf47f6479e8248f6c047a7523d177d419e38a90a01ee9edec90724031e42121c458eaf06aad52a778c1ef73bee20bad388bd8b675d79840db44deead14084ede835fe705bcef77a62645a5f9c260decc0828206f3815bcce4b651879bd82fd0058c43de54c35b2fead567d7bfd189b2b2cd61b674dd667e7db4191071fe280d67b202f002353bcedbec25f96b561b5d5bc5535330a39e7b9a7329ef350e45c9055dcd8f1baf48e033a38a27895574e26142b9fc5fa81ee375bd97cee6d0b2d06bbcf55db1d6a6d74c80ed63aacfdb8190dff8b0e85eb66018a41cf9cb6f6fadd9421246a2516d4a5f628a363513a9c1b591f8a9cd42678f9207974a678ad00da976802394402cfdde1002276e53ccbd3642a8c9027be82b10238ab0ff14fb7a257fdc75312961bd7ee8d8c46bca45c62c737816707424172f759b3aecbf6d5f55c68a259872020ce580f53f32c6aa4d2835dd473886ba28449a15bb00ca765d6d1f32582c22f7975b6324917907a427f3dfd06294be7cd1771a65f7bd4ab8f5e75e3f55415b9d8803c99732e0667217ec104f66d6cff08de4c09d682733ac7d7b365f7a4a40449858de60688ccb65aed56adb0765b5d22821ccf48b607e1c66687406408638b2fe0c39f9187e1c627a3274f97fc21090cde02b43c3734daad1d97aea4d55499f2b8804bd3513fc638488bab166f06ecdea920a89c5e4f3487b52e1889faf26375192e86cb380cbf61e261212a0c29edee42c15699ff04cbeec5fb79eb869da9bbef6d4ab1242aabc044263ac58f3005098874ea7439d0b28050ecdafe93b66600a27ac8178c1e3ebc690f614120a4360acfabeafabfa1975cfd4ba82a4bd900e0d293edc56ba83cd8ba99c63bf674681b51ffc0e883786e9a8fa1fa3e0c621a2ab59240aa518983f1dd45cb8f1090dda27e757f6806bee9bb7a4b3e18fe92e0c72ced540a856fd33471a91b114d765c5196981bf0639d6f8b00f52ce22f5bcb2fd5fbb174c9b702e86b676f6ba85ba52d61b8560b2a8d33ef0aa24431db6e7eb37a721090b1b09ca053a43affa70d1c13f5a65fa35e00a02dd0f61d9ba63f5856077a6f8667d2835ef03c008daeb8d0c0264f74edd9602aba10fe070a36d3740e89e26a8f14868b107e446b4cbe5b95b95414c419e6975f43151fbacaf9b5e511bf93f40e59708129f02bc673bf2ab8d1036b05fb970666ea139b573bdb1f4e09b1a33ce4c97ea43ce67ca5b2a052db6cba83656eab869fbc9182c709409028aac224fc0bc922fc105bc39ccdb76599bd2b0db762882c35442d4be93dad481df4a7b196b9b8e2b1eec1bad7c9120593827ac7f38f765bb85a48a168f18f92be519921287f9b278808c197c3058a4b23ad48c64b446c7426c24e97d5bceb747931cd44fb0fa089f1fd544a030e431ae86cfc55f29e42dd83d762d8cb29794ae57407622e7cd4cf2ca65d5e2cb7d5ab4b0ac01a7797a6f6300050e2f93602be391b7d4a91036d6fd63ae4f8fd1fdc5d5851f0df9aa22c8a01279028cc1a9e8231624737f72a2d9145e5d3ff117dadab0814e9fe766844493a08ea60643ddd5adad91e7a13ad78363461e61ccf741abba59f5e9317b861f612f3c31f7e5b2ebf795403a63f825b22b39a8d5cfcd4ab98873571b735d8ff5ee17293a41b6a49c8bfd3f84661f3649ae671c38be7b2c641969023ce39f55ef8803744708897389438bd8d6a7895d6ca096b4b1a5e58d10418a60128c7e4046eb72c9dd3474bb9125d6c6b520f28817f2a1c1640c76e15d52591bf61e5658c40539ca0c5a5398b2c1ec45aeda78b4dd19f4f9c8669ad1facf0c4ebd8b2ac721e8ffc1b1d0465a65fbcde9d42822f4cd0f1218d38642bdea760e882d9420e9615fc0adea8a2e4a7067ed493450550cc19f10c901f463444e387d9f9ada03ed91ee4b927337347e5bf4b67b761e609a91c117eba94577e400caad539d55c0048bf7c422e8c943befb67045d53cdf2cc0034e51b1caafaa49d4da3bf0ba6e9259a1a22b723628978c558a7ae8d189eac49ad4c977dbeeed3bc2d9a9c9d87355a2f0eb29239dafac5d9ade4fe889b5ef4a492b2656ebc58d27cb98254e677fe9ff671927abff7cd7eff5cf563c2620d7a3f4e90dad6cbc0f0a7367ce48ebac15afc6a379c645afd5efa118406b61cec266509f46276f8b55b091b5f8ff914a153bf28e8c30ec7c93af2a6347cfb7c1e80e2c6fea30de44718c3dd3660b9f6e54952cd40e3f75b3443dcd918f2a2332bbfde9766e93dcf8b10b759c07c87477613ef94b0e7858f855a18773a271d52817ab0ebf5e377fc1b30550aef47a0be624d9d83fae0d698c878b44516373816eedd6ec907b893c1939060846954b27a5c9cce51b7773b064c20085e1c34fbda27734118105cecd515b67d6c0a27c98c397d12cbd2b319d324e2993731926a5e457ab0f91347188cc6db9bd560c9dd4b74a543540b13f243a6f280a72e617fa243d2779f2c6f99af4f508b612e2cf791abf3d0d876ef802ceecdb43c6057db6e81719ef408981eb05ce252b6e95904771ff003f1f93536095cecfce306ac03e0446ed4e768f12f9d205d16db3e79dab838dd66add16c7d8212877281d7c12c8033975923a2056136d014a0d78a9f00c3ff57ac150d0a9085776cc63979a1e01cdc9bee8420f861fd2383df8160733334a388ba13121acc1bb6e4bc790b440aec2dc592b6de138ac8d9f3eebc079fcad2f5e2bb351536c98e40a691669cad2f9afb3d10dff0a9b5cd3141728dfa126a1ceb76576ca4caa53446da3546b1d7e48a7eeb987ffa3f917e70a0604f6618a90020d172ac1eae46753f319a9ac36bc1ebd3d5f539b60eacd8617e8b09af3399e1526b1f26360783366807771fbf4d633979200b6972d0ebfcd06b7453ebd656a8e3ac9594748376e23f99449684f6477dd492b22b8fdf3bfb0e1a448265e40d97597b5f05b4dd73a808485550689e86daaeb02ec003a591c07067f4d91c011c85df5a1457a4b4516e48ee43b3b437b5f6b162b8d4d856a0fed07bff4f41b73a5dc21e499a4ab10b254c4428882339826bee2ee9bfab06d6b50af52505bd68db08f42995717dfdf1d8a35443c26738cdb45901046a2d007cc380231efca8111f6f8b3fcf87670ae1e2a000168ea45448fe4a845e0ea677147797563ebbd3da13d143e3e33509a73b15d99413e6f370eccafd086de26d884fbb383974773f7c2298f849e77bb766a19cab6d629ee13ecaaf1300331e718331d0503e1b1fa46fd59e2eda448398579b91b3ab5cd5ed1802430f021ad8b38d44ed501d841bebf26317893c2efa2709b9e556f8c2fa0dadeceeda6771a4c98eef63ad5e3fe8b4daaa7655fcabbab5e2d76b3a5ad32b2977be90407318ef5d6f4c0361f87cafd1347d35ffb7f159e4c98e38cb19b6769f0b30a971071594aca7179068fa12f3c9ba76cd99e1d76e2d19f87cb7b5f2b3be31f56c81f11852081e931c444bfde95614ba115a0f9d985be6534b72e7de084bce0c32e7c03750575576ed7a7468a2e7e944e71cdc50910e993c6ab3b739d2ff9d338e02304f1691eb4562137f99281fc7c36bdd578ae13ad16778f5a264aa06c003fa8f1ce4054568ac081ce044eb54cd0fcd3e084c1da59d2d28f7cdec7a81108bf334107697155bae9b267526561136c06e077937ec6c0250473c4a560d0553626af9588b5e35cad330c690ec2394a5797ea15c72817ecfbc9c8c6a5b5b1a2d8fb6cab1f71cf0f0a03e1617c838514de5c29a3cdf911fc74363712712f3bef0ba7af67a1ffc234ef87833aa33ef6dde794425ba8b4967147b4dbb93a91fdf368899b3823959c00240b9bde6c3a0434c806a975e763bc1114c8cfd60b12be44911d5975dd16f4d8064495ab012dde35efe49ebfb0dc96c5fe2460d741dfe2560d9c6204f0c94628712f2328e17318e15712f3f9d0c09fd49f74f888977876ea6ba9d2ec2729c2f76c21d74177f993bd980df550790c7db80b3a94beaf0f0811a9b7684514091f3e66e3bd06fd3ba157f19a613c991d3c21ca196fb2f46439035f2334a607cb5869e104dfcd387c2fb1a900e03dc207041f6678b7f19a747c766696f8e425d84d0ca393730363964ffa1c00ad4d4fe693c4c4e52806f14b9c05d2180bef5b74b4f916af8a9eab5bee85c4d62d7a382046abab716f0f8e5780c2566972f697ea296edf86729649e14b02a6a7e82e5e2aad87f1cdc807f6a5db10cdca49a568e18c8dfa57d7500b12c0693dd09f1c249156415331928e4d35da7646f0a99aa522321eb396cd6e412decca821686062545b431446cda343e1525a0791272f7df9786de4c20a99ea27c59abcceb9b2e7df3f7b6cf06af02af93f2bb4896a3d9a40c28f104d218f9bcb5d39dfb9ffed0446dc69ebb960d2dba51cef39eee50e9a1ac9fc92312f8e3efdc72a3471f1bc1a6bb33d124edd51a1a5626e717e5fcc89ae103d2c542aedf3504c1d140047ece83f1f7a3c47aa37340139e507f96c082474117148ea870ce2b74d7aff2489efce98fd7716c89d942fdaf08519ae7a36996e2ac85da598ca7171b6db6063f65c9c7c7be0635d303b95e3acf29bda862ee8c7b6099b5ae30d9b3716901f9bae6cf14ce03516e2394362b678c49816f4adc64e9d0de681b23e41f897190210227f2f6a4449b35fb5863374c909386014d219991d412a267aca9fadadb0e00ab495f93431c40b25b125fa695dc19a8df5a1fecc9428f72015a2c627d1bda77e9cd6448f42a2418d3d02c0a4b461852f8783625272d76ebb19bc26d9005f2a5b570bf93e04b21e3142447caae851da2e69c42bef9a78840eaf8f2ef8afeac4775b2221d46f18bb7c9ed7f7c87d6ee4ae9114f20f07c78abc5d9bf687b963cf3f66adabf4a1cc73e3dfe9c1ace48871fe7f07473f7f9812de4fdffd198606e08a6463bb2f9819312c256e3432c7e5bca1e1958e0df84f193c5561f65afcc1dd4ae49e87ba0a1efd8f7b9d88a2e7bc29bf659a67eb34668731caaaa1bc04b6e2f905dcccb8bf50eaa41f72fbce4dbbcd78fa57a4b807ebfecd3047bdce60bdeef1173fcdf207f6494f912a02bcb982cbfcd6efd209b9fff913e549ff1857df6918610de11a6fac323357c98eced7267d5684eb5566e358396cd6c622883cdc7687233097040ce15660a39764ad7eaf6e4a8eb70c0152bf82a8995604c034a6151f8bb6656f47592b32c89e7c48539a28c7a4228cad4193af2f7896cee49ae415280f52ea4662ab5d9e912e7ab88b57cab4bde2e613b9450b2d5aa836ad6470d972c9d9ba7a7ec39a6b245a2fe82dcc742d360e06658bda01dd8ab1c8cf79d9e69b68c7c5cf6f62a50afa79313a13d0846809a29111ff6c1e515f5a441d6ae24b60aeb8424d2499bc0beda57d9c2eb19de2f2fe684500a95945b95009da2401d02bdeef32270652526a0f3f2dbc0eaf838cb867ab293d52b8e038c5932854e1f64a1bd2714853c7112931693a4b5a7ec60ae985502f88be397bb1ec0897c7e0d26a796b55de080936f8928a548a10c83b5011e450e4625416c31e80d321e992a7506de9de87ab7a30e03dcec488aca9491dcc735e15a2144edbe83e503d903c5cf35e1d7b0ae7539f2adea462cce531012e15072d3eb20f874dbf668ab8a65abe6059fe52aeba1f9403cd3e9853ade60821f9d94a8a21ea3be9b33e088bfb19941838252ca4a93e2a8d29147723323f5761120489e8ba603aea878fa7df4fdd7ec73c51d91631636d5f7f61dcd32c2abd9c4208f4f2abbd71004f268aee22bdad8babe53aca971790ae7da5a5cb6d864091bf4a5cade5631113a55412780102602de765cf6905337291af21f51eaeaa463bd9916e5c2649f7d8b46feff225ac37f589fdd3e8b16a7722fb5e8641efdd8eaed68b5cf7e0776ea0364f3abf06ed5b0a23faf495e7bdad74eaa612ff49dbfc23e64615f6848b3de05fd1a1f007ab6b82934e8ec4840444976689c56be956330664b70d7e7f37056c7558a781e602408d81107c2da46c50219a5ac1be1273fe06ac36992fadc0ee655347eb019bc07e66fbfa7a6915f4e6ff25b0b34887498e873e00d215da81aa47c788891162e8fcf62ee9182759ef7f80b0e679f8416681dd43b4117b5b66be9c0908863b5130f14f0e6135fee685aed11b9ad51f8e49bf3e5ed7f9a3c5712448fe3849015f82f669d40712039d3127745e31316ab9e9225e4a500cb33d39396f238e2c290d7eded1a025f37a5b4416560d5274372f2cf50206ecd336ee66fa63400217a2f4f7532dcc295054f961c6922467e8cc9f71372513db9c24b3369528f791298e4a724dc12a269444f0ff9610811f2d0ef207be58f531bd4128fc446654be7b4616aa4f642d516ead59ea4277caef3cb022b31a9136666d3de39b81f15a0ce869380e8086b485b2ab17c37638428c8118e02e578817d730fdc80f7e355185e8489341873974c0c9f14f7bb7a40972f859a6a57f528f42cedd1be4f620483683409d9a4362fba4b24fb0dc9846f66067025b37fde7644ed8ea16bd506eecb046d665a24b7ecbf7910a4f0044fef8daa0a9ec7bc0b0fc01c64ea8cf0661348956a79e9840a77123d3655bd74d9771a6d87446f73b5aeb489b7d23636952e5d9877c89f0f0bd3cb6d8ff3ca6ddd2854f0800fcaa2e827e7221dc9157aca73dbe8d15c5cf4ae7ffe33ce432832320b8a5635f6e833e0033b5afe59e9e450b49d8357dd2911ec54b00a275fdda1e7d873bdd2acfe762d87fa88312fbbb9b0386cdb4f8d444b114ac061391a0ebb439d7e8bac5522f1f2074c7a900774a04418dc602e47e2a1f9dc214f48cd54917973a473a5417278d6065f375a10678123d5cf0470d563b8e978bec82f5565c7a7d05374511c291373f53ef8b6d52863505befd58617aa030fbb275e728cae01bc2305b36f698a0c477b4e477e17a49a74a0ea043fbe1391757a537d434ad6499b7b59aade6ea7d707018ded6c438adaa113c15ebe88d18d423f2e2b69759cc960202a074d2ecc657f3674c0ffe922d1a9a8296b4369304edb6a8c778c7ded0b4ec895c737fce0a92d6968499f4f85d465bc8e74314f4f71d42945dcf9f317bd7af4c80b4edad4e1c9d473cd8c3ae61242df5cb47242da16b889ebe1c1af0acbc7353047a873c8b935a391281c01e73ccf8d98c56490be205332c27e0f0c298e2f7d0a4618f5d2dbf6357069512d260488a7577da81d654faeff87bb6103946be238d5d997ec196eb95e9fbe865880bb25d7b5d0ea51ebeb6c4d4c1eaf8d21142f7b4f423458699143fb3393ef324e9a18102140a137fa25b3ea7a2966dd62ab495fc6f2d9e30ffdff0c5eeea63ed84ede82bf4dea97eb0de6948ec521d6d14d5643e996feae60568c86ca81252e5f9b5c5605bc4914951fdbd1211781c8326567a6782a642b2dcd5f4dbdc6e67e779c6c7822954b2621dff608ca8ee57d40da0d18efd14b4ae28cc863f63a75c7bcb42580945d7e29265487429eb8f619a47e9038a2119d97f82a1d25bf83a5b4ec9a52c9016a2274caabc4ff438163856a89c7c2fc9d03f13f66aef30bbf783a1de0fcbcc0a818e6f23f1d6db919dec43d90f64bb14ce50b685d61cfab1039cf88fe5d93912357ce43c2f52831bb44720d489ba79e5dba7c9a4d51971417522d1efbd540824007db8114775b2a3facf0a6a995ded64d210e8bc17b674b87b503029a10010b841ea8ef7317eef1455d478bdbbf1287b7b9a2ba8542811c617c664f996b9894c23f7fff484956002ab5b60c652eaf3598771573a67f36fff63e56e33857357e054f62642b3dacc22381cfcd0eb29a3f3907511b63764645c6d1e213b5e087f7bd9ea07d020c678cf6cdccbfbd5f4417e32ba025476f220b79bad2f8c9f2d46a4e3b5a4c104cba4875edfbeba0830c5f62966aac2250e2152aa8e1532202b0fe9c17392ea1b63a86cc83ec8555a26889b8da2eaa1f5237a5130a6ea4f2f2daf5cdbd99f582beefec49b547768064e3f6f108cdb036de2953bb9630599024c7810bca7a5c8520f1f7a2096906284c8e2b956583cf4e409cf7d6d5e88da74a29aa0317dea2e2f72a09aa5820d07ae96cf845a21efee525189e74aaeca6f140ed1a977a79b2fcd2107d8c1875cef35bb8321e0084862e329242ced03e0ca8172874c74b7bca66bdb860a24fd33046ec5e6a1faa59c36646b9767e6c063f11d9ac9ad04f397220e0734aaf399cd085e7e055ba0ee6c427f33a091a79210fc080e537659f32967df3f6355c105ea0d2ab2846c4f0fb3d2c481230cf9519c9a707f095463023be963966b4e07678efbc84fd432c2e26327865ad31b0329c68d2e9c04794f09d9547cf69afb3911080d0b5959d0b3fbedf67f7a3267e6418329b76807191422ad06385bef6768b46454f05c5aaeb47291e754e5c97ce47fbcd95779f8ed0c1e389377ba12bf6cb037334f7677f60eeabe17d8d8c24918051e9ac5a477b3a79359415fd22ad5ac6d37e1ca08dc18bb79489627ef1ea4be860f7ffb0929ab2045a589994249a06addf7ea19b62546647513ea967977c40eb20a2b6983ae1c4ff2f29c699babbaa483c9ae9c4531f97c3e268b695e84c5a2232b5a71e191cd81e744dc8d4c86e186ac8ee143789b6a639461655d03aa2770b301583886938c6bdb995ef29dc8766aaf2a09c702c91a9614f159050f754f50176b88c23ceaab1fee7e6f331c2301676109032b28b64bf8dc82bbf30a3a05191e68de6265027d1edb3e0cf0229dab72191f7f98aea3842682a2d5b43006f54405bc6579d133de71b05b68ec6e31c212e8ab7f8228f410dbcb276399ebad2e2cab63bb81e8b6a9d99c986a04e23c389ce4fedc1ccc318062e9851651d90ca6cc9fce9071f0da3f08a7392ceee2052504b270c1225342252010ec1155537ab32256212b67932006ef5f477dcc024641409dce2eed9c439722b6946f22cb0c9311f8ade5a7fc64e81ae2946091d26a6b37f77976d90c6930c8da54bb448385e5db9e3fabee26bbd020b0fe8b30123624428c91c1ffde7692730f7976306fa52e2cf2c9800a36ea311a44d9e9a1a380143b5b958b39ed251d50324294ed433b56ad6f8df9ccf5c87e3162ce19b4eb26841fee1623789ecf79260de0ff9103722833ddc6bf48d8d7b33e8078ecae8a90e33ff6322d6bfa3e13414a9c138c8dc6d572a78e10600d8ccb73d4e3eac596d842000ec321771b699760710420bdfd91724b2fa33fa38db74719ddbcce5ac256d728c270c9fb781c7bc0de45ec63e445759e4777307f325bad5a735c0610182d7ec64415c7eac36b752be69a2ed7a04e3cb86504ddbb35f90723bb1134ab3689339b6b1b0dae4fb6ff1f949c1410690f8648468ed34ab22f60098202afc7367b991edceb625e41b5da04bf88be04c892f7ea08bcb56500fc4b4ddfba0359a49f760e87c5e449ffe1876d5a10c0d29c59993f0429b8fc06895ce3260d6cfd355d358fd5c681ca9adfd06e3e0ea4b9e4295693d4d52675dcd3ac9181335f202c2262dc29567c6c2e4e3d03d59a66e5d9dd7f1867b0dbb750c3591cbc3c02ed81e03289958aef646a94a07f5f4df60831fb48af03c0cb8f3a8803821faeaf105a03f850e7af4358c9b88a17c61fb9c87f49493e97607a58a23d514864ec754d513bb1777283b9702759d371235609f515b6fe9ac05e82fc23c96ad8126e97dca0ca79ba3151e4c4b52c164d7effb094d392480262b4114422ed7debe2f10ba13a6d14d027ab2d0e84413234632171bfc5a4eb20b91b6873a5573907ecf3fb29499466791f0f4eaf1a54ca425064804894860eac3fad5d39ff39550ab9644885bd6ffb212d71d70adf34c6f9242304390a9abe89d642daed8d9e09c9903502e2d42b8010944bad293c2cd02308149c1a43236a89fd685c20394393b985a5f102c0db4727f18686b1c9b3d8c9755dd711472f68ac193d74768138b4b01e5b0f81d6c5c834cd476e2beba7913767cebac81f976ffe0bb649da3de630aeaa3e0cdeff281ad4f870449aa14af10fc71c3f29b0c71bfe9a7a15f95f6052b991b9c9663c1e7edd53743d61890db571a381d0e7d8f56d957097a4115a2765cd3477dde577ecd566e2dd617a3e1eda2bd0c6d0ddb30d48a2ae1cd81200893cd62e0413261000255451df09fda01d2502ebdd1234f0faf50e5ce9270afed7abbc08b1ea44b9ba18784c0468f4b33f9d01f464605d99dfa07a2cb11be23d990b83b2ed14d5a97b7c444822fe85104f0be5eb10f5e0d26dd8716497d170d697ba7153ebf7d03893c40aa188266827b481892ad303f552e01337dc8f7bd65d89995343b22f5d575085cc31708aa8caadd0725fb22fe9a5fc281b6315de2bb98d8cc23e020a5b90f9fa9bc4aba9c2b95d10606ebc10618421d36505abd480c35efe8328430acb774e818cfea458062a291cf0992ab35ec6a234cef60bcc2a66755af5e98467ffb3211c33a9c33e4e85321356aecd1a1dbd9b508323e44563fcc29388440d8b9e0ab7f1b67b775606d95ed91d1e1cb8bafdef8fc4a96956361cdf9d50a63a94751bd4ca71c53e7182af6e930043c8f6b3e6693c0abe3529c11eb3f19d5393d51ab3dd96209c2eb1a44d2f2fc93499b22d6ac508bebb497cc001be0dab77b05560dfeee6a36fb310d48eaeda48e85cbb0fe7fc888364431f6f7c04f258ee544e962f927150257bd742d9a8875b882e56ef1a5db210906178b461a2a4fbd867af9dcaa890cf1cbc2785e41d6ffc3af8bcc976bc6496ce2002a3a9bbae3650bb9bca4416c28fc05673774c168b6ac40b998e60b1ddb8bfe5c946bc3c9be9c47fe8965ffb2ac583a104752a291c5dbae98f7a2bca42182061efc3d7727e2ce204a1241da50cfa6f0974de2e3e244839d3b141d1981b69cf172bc5ab066b5c02f18490d1d8542fa41333f0f45deab04d8e080ab6dbd31c51bf453a844cfb37896885141cd10e8d67b606e98a1f7a9283d91236012c3b9a89ed9b669d2ecc0bb5b649faf112efa2b1728280686723d24d673eff54610706baf0a03f7b2fffeeb8e9ac5d253dcb384a1195ad4db9f7c337de71e0ee494f9bfc82571b5e23b90f327c3cbf11181cafe268febcc3534ebf124784d07a6d1094c372dcae2e49a20f4a96bb66587682efca1cd0b73aa943c39186c34c2350a9a11c48db5c7b5c697018a9a095d6ea3ded23d6f319fd8f352b05fc6f33a8125ef5ba6417d460133d10152797893ff3b5b5b113a3d873af487328233d6e865bd9d8091be5fd773c55b6ade4fd4e04faf310af4eefb87446e20c3423d66c7a2ca4d6c9beae3c235a6aaf503c6563737d25b244dd3bf694632e43a589556fe7a6b072fabf71fad429387a7e6915283abd1ef885adbe38ba0d9c2f6e0bcca0edc8d07212773e8729ff0184b4ae8924b28ad33d15ae05dc63a85fbe7f0bbf0139dc3fb7c867bc47ee3b09f542c2ef18a43bdfbad17b6e856614eec2dfd1a622d3a616a3ef65a43370771b8d5faeaae06a4a00f430b6ae0a14ab831cbdd270ae816dd714253643a4ab18029007c9d024a0e197bb252e4ca809379fea3321fbc47b7ee5ee58fafc72374011c282a8acdebc6c2cc2b6fd23881e7b84d1b32d9d25804a09306cf8c46705e09c7499013caa574ae8b6a678e4972cadb94e3a3c9e299609ef9b6a0fa4f751c87da2cf2cb3e8eae71af8cfd092afad878a1dd392bb8e0388a6f3207e3b535d42901c37a8f9b24ce2b3d3153b0408673a86ab103da51141ff24be117439c5c78a36c6aa4b269c4241c9570d5c66019d8fff9c6e6580d8f7cdc0a00a44e560ab1ed6e1840d0a44db8718b3bfc5b83989108d61d0b165ad5179b647dcf59800cd57576d2226a9b9771e7c25285a4ef30cd18bd88dc4e00826a1a7def66240947e45a88ec518b7adae8e78804f784ecbd9cf9905c0ff72eccd771619edffdebf0c093910a9a820757324b23727f435c08a8518d5bfec108da8ddecca1ff308cad13d7fed560983db2acb740186fb52886752b1f00836a2cd9a77f410141f68da471e73ef93a9b1c597682d07e8344a38ccf7cfa3f2f5858913f7600936553b88b428145972d033a4c98aeea5d49692396f2f20d0f0380aaf5e51421c0afcd2b847ffe0a35de4c2b576f9eebe0bb1f890ffbf18f24ef6f42951d314d40e1214cec7205f4c319ccd196c9e0798dc621b75d5236d35976efe9d97d53146d19cfa2425e099aeac8af6b2fd43364c4844ee34aff39c9917d353f13155590bf64112e48eb29af2d56c95d99fdb1eccd159396eb4cc6326375614a7e5da31c838fefe19e384f5081e6433de145a866e1d051894395645308d48d609b1ebc045a4acf22b944a3eb757cd115cd8b9d610c2867ac5fd6009adecb2212689b3f419855639945d618fb4d3b59f5bb25f9ec7edcfa3f3dcd63b98d5f1f294ecba1be0d812aff061b604d6330805459cf0101fc0d4aa583057aa67fe323916153f6a013c9248618cd23f4bc76a9da261a381eb7b0afc3d57e9e88fe7595cfbd1337a0d985289364f15e4ea817176b3a63beca9f23ed7122224cd18abbcb361550dc5a214dc0af0196e1e8fe035d3cd3e276f70cb80d0d21986f5417a5e093d7e2f2ee70c57fa8a20d619824c9faa91fca9cb6e87624ebcdd7f3d377bc92132694776900b419a204ea585facfa626eb659fe8fe657c0c5711df4ad5f86d2f4152e3c87c0f05c1d47c9e1aa82da926e5f51c4f458ab39bca94dd027e16795b4011542edb9ac156144d380e50ad6abb4bd62aae610477dd84011610fd79694226bb4219e44e95da233639a0792fc8ae1e3bdc582fa0d58b30a503647c9d447424326cdd211661dcfda936912a5a31f7d3c94bc2959b09b1fb7481b188bb33f791aea332491f0d828166e8a6b3f0ef476ab6630769a6d92d2eb3f0ee25877bc2a58a94b4a12a0406f14d8a288da8f07f4b80e465dacdf83310414dd6f321364301dbba64feebc637c060b863430d3a37ff78d0be783561cb20d77a686202f3da0a9eb12646832ff4b2b2492a73457e38ad7e3d18c1bf7f519c9d8367f6bb645c188c44418c4d3bb54b75b051d6ca3c027094911d3f08e9f552df55da9ddb909169d2aae2b890f7028a714e326067b94777425a9c3d513a39cfd0cb8d144a8ab5f242ef99c1c37bf9f88afe296a09a66efae741060747bb76cca56d8f58e69afbf6c2d1d97175b2cc0d26cd18f040bd11fb6821f2b5ba4f57fd6e6bb22e4ae50573025d7cc3131041d68b7ae4dc77b37fd7e1cf9995b64a5b227ac10fb7eaf36d57c6023ec7153d30f7a4ebf56637d53bad4a1d5a128ebe57702e577f11075f40934f503d1d4a2709fba51eba7c0c617b8b3458373acbf7f2469f2d221217af7eeea83380fd4be44bf086922341dd2ba9750ada57cd1beb28374f60dc05ace59bb4e5596cd0604d0e5860512598c166e635805882de9f80c859ddcfd386f5a2012f9b65505740437a6407f73ac3b06d82ff1826a8033cd1f6f596cbf3605cb28cef1e9cdb6489164e87831ede0d965e85e1ef1e5a16d19ca97727f46a86e5e40ceb532fa025e5a75a50379a138a9ed82a092cba4f847b7a2eb6e0de2c144f84c763107999f81a71059cd6bbdedcd1ab5ed4ca9be12f3c86a38a55b670661956f4a36654a1d796cec71184bac71a487145b4a90d8ee0ac997db64032303dee1940885a40f94f248fb0f2aff65db48efcb6dff9f97743a26f031af2c5adf017ab4ddacd1ec40ae005e0379274b0720e57bad5875ce47bdd6cd03abcd1eab5fa702f7bad318ae5a1980d015a67d583847e11b080a3bd432f2a551a1cf92cf3c196ed5da96fb99a610b00536c106697e06fac459f23139cae46545c957c80a4b396065201691ffa579718264c87ff0a1a20341deb96950de57a66bd7c9b35d0db01e99d30bc72b1de32c5c40538c226cee4822f73981b79126076d92a8f5d0b02117b698289c8a4504d0e7a3707d469b976257aae321f78eae0444251a6510e1b7895f8d86b1fd76ca80c901114dee65d28df616ce13f4d6dd3e4e56b642a59a82984b5313cd6e2fde66c9ee7018db0682328e57edbbd64becd3cc5884e49e8b733880bb04c3202c8def1282d8c1256a87faa9e8813ff641ae289fadf3bcff875a4551139d7daa7ffb9f08df7e8a26fa6cec39798220fcf4e90da0ff69525dd82709403ea125ca7ca7ad3445f27f73a364706eb7d3a1b2f55e594a542f176e17ea9638ff3c2a6ed8d81976c5a48cd478a14ba36fd50f6dcf373ec6895cc30407eefd1eca3188dc9094d4daaea496634a36c59df51f0964c868b705ab312872657ec63c9a97149c486c99c57b8bd077a29fa1322a57c94ee4ed47f64e62ef2c8fbd39202dad2f709952a3d0175cd784904d649f76449afa0f442cc417922ac8752594b3002ff166220797e359fc088773fc512c5a48c49ae0d27dfb3590e34233e436dff91b00bb8dab5c0a28130877912b0b9e1f119e860daf293095b11cd00c8d14e5c25cc9d333faef9858718cb711a4f3ce645d1b620913c99f5d230ff7e9e6f376d395979e1af68336940da2b4c19dccfd000da0225de63f4b48a3e145a59c0e35c96adafeb6f5a0b32ad1d87eacb2b57f71415bdb478387c853e549c2036f804f5377f33627c703380b02f3e61a9f6f0c9ceacfef6eff85b6c258aeab73e8ebe08bf7f5d938552f05bbc21b6439d3e6865e24b7f531103924c3b0394f00bc62aafb5bb69f48a2d9c341777d7000fb0c1f5a8501d638a99754d4747f62a9642d54d3037f899dbc1252f529d904fc894b2e8b7445b70a8342b91d827b00bc6cf3e7395288d407d668dc4cac651ab8c6f27f03bfce08757ee2f3bb31a2440b7d45b8196c111e53b3268b051ff90e0739fbdd4c103f418c3bbd2c66709f952df6c1528a3ad50ede380612f517c44a9597a4718576e07263a51b6ad0e139b908afac7af614c7ae06899b58d0c3b6d59f4254c682ca92b0539bf545e62a2b8fb6021c313f635a3affa4fb605d3f88a9b641786e023b595b0ba117782b187c451e57bcdec21c6428e4b1d49ee3f72213d5089641df5091fa7337dbf95637b761f200b9e2b8742b65a884a6839e29f3a0bda68891ed171c95cd8ee20cc098b49e5e85362a397afbc96c57fa142e557e4be08324bf9af5f343b112860483678fc4b7f593a64fb8efaefe23896ed9455aff96ef4345bb29d25323ee79ca293fd12696629bbe57791785827637b14d7283152264185dc40b408d82b02c3bef6435313b4786e01a2bd22af17ac9b46f4f882706f13ae22d3156b1adcc019f3648e494746e74ebde4ab47f849d8d4d64957bf3a89ddd7d288ee7e7e8439b67e4849c49b90d94de6a63f1d2637cf163abf978a1191c35b54fe719af1e3e805504d3657c6f37dcf7a99b43a714de7e7b51846881c7eb6476307a5b7295244451ba063d82fd17e2ce578ee1c41c563e25e8158e2a68991e07239ecf4952a8d0bc189fae498cc163206cbb8a3a4fa033367e6b0c58b96941ae06f1b13df74bfbe04a1b658ceedb8a20f640b925a4dfa1dbdfd57e2b2699621f4b35df9f7ec0f1a930c04d96d9442af2ebc77116ac99e74f9119eee9cc511d4b6321033becc0fae588f584dba6fb98206609a2e4b1ab8239eedf62300bbc045912a966c2af9365e2859586080ecebb8fa05cb579f8a43a8a47ff7bd74c0d13ac0fa3ef8107547e1b1d5bc000bcbe6e249124de179123b935c13557f3163e2af96be924d723bb744c8f3c0e227cf1604f893f18538b6f60b9a35272bd8a2d352901ebd845be30f65f89e0bfb3bbc1916890473ddebb76c4834a1f60d524a3c06344159dc56affd786f65ae07680fb6868b54d2ec4f5dc21ad4cc5471bcd7b560c60595386cea99863184d305bd292db4f20ea493544c556112f4d02865c5802dccf27c9cb1b456e99fd323b880dc1f75419d8b1d36c0a392e6b52008d74505ea5c8245b36ba1d4d24f4ec2288289899184f619b42519403965a23b69f6c4854b45b6914cbec8d4c3302cf81f7e49ea451d43e4e981884a71ce51faa82dc0f0b5f91d0ad8ec2e6c1503cc51ad93ca94c25b3fee309fdbc16decde82a7a9c71fc358b812ee2aa397741ee5f9a5c8d838ace966736120a75af3c1de6d4ba6baf9c43d5b11c8fc77515d88bb951d9ec22f9b0433b139df5472dc882f18fdca90de3be38a81c327b754a75a50c2f2b40bc49d88f593d764d621960039072a97427b5e15eb05e332b3cbf779c89741821faab2ca1a0f3ff2fd69a20c789ec3dea2a49834b4c24c7718424a9c8345ef13f6234f43dc78da18c0f116a36fa6be563b200808d68fcac0df546f9f9dee23e5dcd5dc08ae78f4e2dfd41b0b594e93317e520060b2fc4a7ec4c48a2fd46bc7c2d526361af1f63d8cc78f706b2d63bfcbdea1868899b25f8220c293bd0a7d0ac03d232d79b40349ca8f2be5a8e26f4468a3fed68b727ebe534f83d5c5e641e03aae3c07158fd910a5776be194f55b27fd8167dd44392dc20dfb786f663e8680f049eefc84dcf86edf4ee3dd6b9be6f10f5a73c0413c72e9d0f4bdd645538ce521e840b892e6d6a4ef948ce7a3340e2fa29de05376444154c37ab251c913844fc8cf66db94c5c3d5874ea6200bdb0cf22d3beba3be10624ba10d0d7c9bdccbbfd9f42a7c9901798aaed3693e36251450b21ab26d31cf85b7dd370dc682746c7e9de9bba2603e3a2f6718650b3f795be1cf7f45a4427ed2a752e8e6f3873cff9610f66eca267c9093ea3119e4d2886542f5e20fefb55fabcc8142ef9a6cce52575a0774643fb76f6c6f1ad23a91d09a969b132b2861e778fc64068ea77183afd4506917567ff005d182f58a14ba34780093b5dbdebecf55b2cef178db6d9d92630d7c1a7777e889bef056188c2c159a2a5f6bddd4503ed28c5abd4847340c142191d7e0157f171f933c4ec04eb572ddc1a33f6280d22171cced9609d54a09f06c798fab708eac4b95a938de1cadffa9f6a01fa88d3b341fd8c73b03bff0035b67c488e03ce99c8c6cd39b2e4ce73539febf78cf59924aa6bb2214971675975b79a5136823990e4ba4d68ae548f0cb57932f4b2e778edc0aa163f2bc3cdd8563ce693b7f41b8a7d52c0958c00d9c23b0729043b32f0beed45edb57596adbf045d56c7ef9a68b8c07d94295d9ade48b25dbb1ad0cf949c480e81661622b154b76c01ce0d0d86d16f6e4b5a424cd187029145e522f060511b7d9bfbb8adfb9bbb0070f870f4e898d5568575c1c275ace3ce6369289b7517d77ee0c48f43969eec9e5245992f6626f44e5d77d5e096c8f011ea24fa72353be138ac2473ec1698969d9bf47e0b0340cd4c02b05a4d5d199580ec6794b96bc9db434c33c1d532fc4df27063e56d01785f4c0a38fc47f3dba0a09964a0c0c24a0251430d98c9f31d81b5537e333a0ff746193955d39124ebb63eaee894fba2433cf7a19a396a7124606ae10a3a9db83cecb4794b0e22b9e46f88ec3671c86518d1a58bf2d9a43152927c241aee4347bb8c4d13888a87c2269885559bf988af7a9f5c3610afea0e3128ee4f0e439cd6573dc8a7affed4bd8d491a594d52f95b00ad175a1d232bda52966ab4fddfcc0a791ffac97ccb4f0c339ae6755e450a9c5283c4e70eefbec67827e713f78449a930c5cd98da5bc5a3f504b88e3046c7e61c038cf91f70357d1f153d705b6dada4400ff95228be08b986ea3796b4b54fe925f789dabdcdc792acdd63f11bdd9774a18ebc77b3c721700c41eb08a2576c71fe3fa04e625aea1b3553c51cd44045721f79e3c48555aa9c7926e25ec4d61ac26cbef711cfdfd734bc8a87787d6bbd97e22e22478d8517ff003c5d6f4e6fd3492914ff79ddb3366654b64606396934c6b3e36938529a0e9096e8543808e641a5b6c5dcb7dffad4650359a805f86e2752ca179014db666ce5f29aaf2ac7cb9cb9a2525c8730a85b3cc64578f6975640e008a1fcb75d3a926794be6ecb8ff9aeb6df313ec4c6c63a1f3a59906830ced41a684e1b06a8df481e6e33a3eeee6abd0a679fed9eb7a28d76c5dc7a5f5ab6c31bcc3f454e26fab7e6094507a9fae8205505f4155d9596970f5f3d3f0970a0b71e67b9dc0f785e055369e6733347fcec9fe212dca6413445c36bcaaad21c9e78acb8971e0d214c14e0cbf19844551d38ef51099c7548563e0ea4c3767906b257adeecba03e1d28348ea767a8acac8767a169a4c7d27038512578987ee9b6a3f30f9e0315f9d9d14339a915be55499f7e9a552e942e3cf4a5e0ed210d53a4f5011c7a0b58be9ef9896560d9d3b5d8511e9dc65231277d1a8040a1817f3360ad976ff1ac203f69a4e0ac9b878b69f4ac0bc4b536109ab1fc3970fcc91e3d1f9ce2c702420a8ba8334bc5822ab81880d0c5a0c274feaa050a87f67e4af83794f32f2d7f0b43dff6663efc8b2344eb0154aecc4958c9be4a4eb78e37249798cc732fe90dc64ebf3e5fa78270d2fd368ed04527aa660a70c75c511358522a92ee5f4790bd1b4be595d0d400b0edc4859364f9e32d448baea820a2e9449e0c02d245efe17ce34253b4903c62204a5eb2ac59c9767d14c294c10fd87b5b1f6adf5d2ea1f0262c5763437859a12fc397c45d65d3749573b684addb427110ea222958674e07a1a79674c8919e3a33962c19b6d802dd0aa57912b709ded785b3517d25afc3a53382a965c8b49da423858038833ac5ca0c18ae4d248540eff3ca3484e7000990630dc030a9d4f4dcdccbc8fb860855abb30de41c1e102912cdc2cb2bb5aa05f15c1a7914d72061db14246372c8b83f2024fe2afa5a02ad187298f1a2171d85f2fae3f888cac0fc05a8e51ce3e66f1a28b35a4d97d18bbff6a37dc862e3268622e601316414eeebff3ee64b0c5c77a1ebf87038c463f359e2aa96bc1a12e8ca5e0fdb3c932cb1f39719984373c8446cb4e2d8b3b3c7990058c70f2dbba2b9059a3c267163fb7145ff246f34700f4f945f6676b7bab9b90e18b53dfa7c06f6222cd9dc6d6b15548f66ec099c39e332cd90defd68751493eb074f48e3c956abd99e864d2c42d8b9cd8b5c1d9153071bf0cedfacfbd4c4a3d464556c7755a2c31cabe223c0025f48d73bbcd01aac4d84e121d6a651e9dc1ce4c67173071265c52b7314d6f8fe121ca4838cef074e1f15f575b6a7bd2346267bcb5dc2913c8a098d3e6eb8ad81d40306d9798b9660c804efa6b4f7ea29805e466d3a67c829bad0287c1f9a7282da54a0c35b23ffc6838fa4dbc81c97c1046916fd10bd2aa6e656ab02d8bab2fb40edee2ecedd7b064de1557d5ae1ff367fe6ccd258fd5ba75c58f1f3a836a81f18c41c1f8bcf086739997529ea54cbd3ed142ccf19122a54f8a451883e11317965ed00e1f4da781dc95322d6f88ec33e919878c9895dca11ac1d6d3ecf2adcb2d3fed4331cef72b9642f20af33e5fd4e0e81d80a5caebaa98b6b0ff2deff1df17eabc6eda78e81133be07c1da5122c2c4ed8df002265d0064f6983a2acdf8770fd4f3b0bd30a845de449a5c5f9a2643ea707978807652a4334c3b9a1c58fb1a445dd1c0e4db1adb67b1f399946f3a417dbe9987a93444e02ff9a72792cfde3502fea8667ec9b66c6163b26b8b3b4ccb30a5e3e1eb0614bc568f6e5e349c6698eb2f2800edc1e7964a1cc27944a21c927feaed1e0e349489f0245eb063e3aaf7bf15de00259a6579cda5bd9e72a4f26d7cd62c28f67db55a14d29700a203e36ab523686b5b640d3b0b5303670d6807d5323918c1bf1e82863caa8c29cd43aaed604a0d5b0498d585f8ae3698b390aa69978bdbfb22e26928eba3b476293fa4e12e667f7f21cb6605cae921a7dd51936c080ec2bd2a95289f5e2048283cd8cd896bf5f096e0d6bbea70d7e940e0a46d425e062b453b46bd0e56050af475bcd68edb56abf88981ed6b27914fbfbe4c76f78b7f74a1680f7edde59a3c82adc2967ce412d80dbf07f7400d0c4bb9cd91e3b7cf2cf5341d6551365c9f2fef69ae114245f13dd3081fd227d436a27325dfeb577352d03810237b893543724cfd2183b65edd485cb64bc2617c704069e4ab76cb1cd628368cd1380821ff971c6fc99b0f0cdbd14d0ba40832216afac9415ae7aeaed8fa8f05dd9d2c1576abda360870690b8ec261be5a8264d5c51af56ff6fcbdb87badf700babd2e74d5de71c6b39744f615dee4c7aae5c48f048c054fff745c78b440f4492f378f4065c5c2e4a4a506ca40af3980fe69a42795b443efa2fa0f694ed5637940a190613a6622d8296d740056da550e6ca958611622ade318ef02657f2ff4cb722fbaf73cc4d860a3823d38fcd64126e172b90a1ef1766404c38255afbea948662058c1f40ba383d6036f6dfb649b179815a5271777854108ec827355a75b37fd2ef88ecd733324bdfb00c2dde4152cb0677c2e0914f4a4f6fc17180d4635e78b4beec7c5ffac6fdfa446d6b01bf555036ba5545a3a92a5460afc1c44a537c5ca57d1feb8c5261780647fb169cf942e93fc07ebdeaa62a9b94f0fcd2469b4c2847dfc95b8032f5a25984a3aad17df44276c90cac79b1a985affd2649dc7d40b3cfd0e74245647e148362c3fff34d9bbf632b2d04101a5dd403deb22a73c130e3fff6bc8759f626838d20d0f9a3e17397741e16bd876a13cc18ea4e82ecdc0cee706b8dfedbf6a3971cab8a170fd4223ab851638ed58e270f66e6b6a41d57f91ff2462089b0fbb7600485e501dd99930895c4fabd675eda1cb4d53f05c90c8ce80eb188765a9a535b23c141ebfd16c45579a0cd2775e7ea5f2f992a60ac5657a31724d9b16faee6819bd50900720a2a212b7d41b63c602127059017e213ff899cf70b7938bb24d9bbaea7017fb3a34643f75ae37da931d21a75f9f9c540e732bca90d3f28630f079e321330726b1b04fb90aa8003d3826620f630e5eefd09d5bc09d5ea3d1adf72ef9453d1f4879b7f25f6c547ab9a9a63cfe4f15e4e0ac940c4129dd3c9e09f68b47d698a3b81c7f11b8de46dd4edfdd422eb91c3779fb46ac848b165860cc77049bec2e0505645165dc5697b375003d54ee71b3f67916f65a1be895f3891a76782f66501a8cfc0cab57886505ff91ed8f22310b9a5c27bd61c90228e8e0a6e3cebd3e32e717e4a001c2b55195fcc9471781b77b40f05307f90b3e646d5e592460b2946cf6b74594983b7bff2cc4dc5aa0b416fc11b125125f00121daeca4b9030d6e47a415ed981ae1ed399f95f8568d84e02ae2f7b93723ea7a7f16c86f1f5faf4ca3da900c695df82864df8fd436996b48651347ba79064be09bfb834bc120b4afc79fe407c11c46b14ca7230cd87dd6d1dcd447e5526c8aa8928b136531ee8bd3f559addfdcbdebcdbc78b11eda0af83d9aab003b8c4df2c8c155b2b803fcf3edfde866c8caddb4cfd7ddb9bb1c8afd5519922b2944f48d9ee3085e54614febd6c833723c8341eb2fc281cca07c4949102e96012bb7dbb8f9c69bc893b2ccd9bbc9ad1acddf29fa29f89e64f178f6b361a129eb18a5a566ab47250c60d8d9a8ca6da0451800c1f01ed677efd90d8a9cd092e590db0c52fdfdb4468576c2e844075df73ed13bc9cf17509af20d4831044bb7bceeaf1f33e0ef2982649d87cf257ecaaac8398d02b8f44bdb77447245e0c04daf7fbbaec91755f6fdea9bbd9f26e731eb15d9f290f1de55548738287d175c5531df4e509d485aa8b579e1b18624944840f0bd03d28cdffa58d18ec2b7c602f8ff56d347c24d1cef3220a8a03e76971088bb84996b575e2064e6c44c16439c55c5645c3c83cce1173ff3d8fd5bc9d393954a47b5161d02ad6156226b27968182d7546c145e769b5194e5ea0c14d47648dd1b0e5a09f1c7bf673e2ef97539aa698b754a79ec5e0f5ba9673db699d7151dbf75790485d3fc44a460fa6bfc78fedd6136b3352679b356b1c572e6783f6ffdf3281f124feb9393d16155cac4a5d914601187236b006170882ed41c7b5418bb9ddfb61a0ab12753a851b5b96224465eaf85634f18ea289b07e617f8ba37a896e4ba03d3ef387a734c926cae6698f42e885e9697e03c17c46a250c9261f1f42665f594615b529fa1f39fcdcbce11edc0ae691faae75affff2291c0f02d958ececb598e84d62b16574e95ba16a9489283f3ad1e2a35b44149ee4cfb4faa99703b15cf78da48bb35cb158215af747029018470b8b56300b5e7a2751e6e0ad3a484a1b0541ecbf049cd72b1df89ec067c64bc5318a13ba882579d2c750f82d5231ad4b88838aba6b56ebfab9a84cd32a1d34425947f8a051dcd26473697b5bc46bb842b05ef9e1fab9752dbea22548f4234f90d9377955ed6b7f215e5d16da5e82aa48fc624516ab7e03e7bc51ff8c34a2bfc7dbc9df46bf1ec143a001681a9ff1a821d98391cf11c7a70308c1e537074fcad67765c46970df9a4325a087843bb93a263779918c4c1d752435af955914305ba2c350980e93e0512a25497c72b7f4cbeb9a9710917bbf07cc870303a059337fb675ad20087b7bf2f6c365c2fa8b232c7d6add6cf465c0f98ad276d448056be886fd38f121843acc1289a4cb8aaf901123794a150021ba6c3ca121e4e3cc4d6d3f33f2f9e64090f1d5a0fc7b5186b892bc137512ded4f18752be49c0e569818824014af7b74bb2b91b1a71ab7985a3aca70fb67b97f8d4f13265392d0a2600d683a80efe31b46b3fe79171a73413ebbe399e3300639fa959a3b3229f86a1dd9b3484d3f6e44280e217ff31b0946d850cc8e6886043b124ef452c12c20c3d8a3ca86a311b5a0d67c62d90177b37a2844040a9c6f3f5285ae8255cbbf59cd137c28a11de7c6a14b8511ecd64b1c0e0abe4506b0f2131b124fd53f57aca28a0ed5ef314437de5e6a5ae386fa36d24b21de921f21fe9323bb3ec92f0418805a3ecdf2484ef558782414d1aa1e6c1c1de6c229d0aab5b9f6864f613883da92eab403dde15f9913fed1361b398e4314d0d09ca46e28d1eafe2785f431df85c58f3bd123b66248fc740ce605bbd12368b6457faa57288ebadf86ef2a45b5f04d212361c24e0750489226e87f5cb63bcdab9c6343dc15310c91f0b7ac02a94b7387a62bd4f349f77d4e1395425ab03a48f16d6db12f6a5ed2d2e2a4a1e41a9bff9e3dd7bd27f97c367b6640a93e170431d9e53b8c98af27a786b7bb6536a7d1da56289803f848e9944d9003040e09fe1101f117749147bc071d029981fd2ae0110f7e41a599355fcd6712212ec92683bdcd8ea27f768935b1e104dcc96e63c5347d8363c51104bc36b91bb3f88e85a02704044be7d25d2ff1c44b4b460a3ce2e52d7d7fc99a8cf1af7b6c609bd453b5aa6cd0d9326d244f054563db40358bb5fc4889e1346a64e012b95ca087e13d45c7d1bfee2c12aa588f48175b7413be4ea201e2e60f9fdeccbdd149f97aedb7d9421e5e74c1f4bfbb5bf85b0a8845d25850c19e16569fa04a1c0cda055d6a5bb83c8a9fd5416c20e78ae611dfa5acca41c504223c86da7aefd656f2da6e5858d1e5b0163e31ecd8667dbb9a02104f98e4bab8e51d4a05eb72f98d458300a8fa74df0eba2c4793ea02bc23866170db4dfe776dba1f68f1795dcffba475e939c8f6d17a68129e9cfed03ce8a2bd8fc4faf7617ad27407c5d14791a5982e0e6a2c0cff2cb2724f9e3ad4038cd40e610bd1bb23f59c6e9aa0cbad4804cde29857a563622d5d32fd8f7dec7368a1bc509b04d090347c4ca4539148c7d9a54f01d57715d7d3316a5bf4762927a9c228007264a20b82ebee3cbe17f94f3bc35b0b45c746f9e9e1b46ec672a2ffe930a2276d7384cab83ecd4114f3bb494f5b228d5047f8d3c56b0b726d4a93f2476b33e0a6c8817a1710864d243f7086861a1dbd745054c566576ffdbb773f825f3f968cd81e1c12818a1fece5d7b7fa086b09036ae36342c30400cc67047a4d16a57ba3ad929bcbeed5c2f804a5c5dc3560bd3f0e5f8420bd79f2c248e8d20995a7d506b38f12fbf74762956b134b91edf7f7300489666e7378394834ea35ef00e52cc52d7817528acbe4489f54b009021d702de85e506c69823dd17de2fe3fbb1d5d30b67769b2de692777a3118709acffb5815879b7af844a781a3d724498f11808d340628e598ee7ee3a30d939ecde1eb10eaf6ac8e26a79263f0c9f9be7bb698295bb47e49feaab7491955ebf17b45360a0c32210329aa8d44d8c328842e27e4577a16aff2bd9e358e9869b724c11af3e75b867c0db46a114fdd28f06f9f6fc2cc859e38bed6fcf93e2af96ec8d83cba90bff6f3d6d183498e5250e46a8f4884c1066807c18831f40752979cbfc40e19b006f5f0fa2c80d37214b1e9f216784d75c85bf5c0c70d1139cf1beac243c66d35dfc3070a2b3a0e4fd19bc699844554a7946c06b77dfe374dede8e4dc17afdbd3d9726709d7345adde1c599848b1aaf1c00ffa3549df95d5b647b19ed9c2041817ea6f6f29b3703b8b12629eec1ab2a1f47cecb79040b61a2c9e5ef29af1fb5f9709ec42fcfb68ae1b7e92aa36f42d4fb39e09ebd2eab120490198596e1e6173ca52b32230bd3b13cff766086ac01fd83395afdecb749b287981f979104cfae0ca4883aa259f9f0103fd4990bcf407c8c4349e483aeb51cd552a27c4afc519971df4590742e6e028a83e07dbd2a55e06d0faf1235b64d20bd6d6b0a43e7212a3517bcd6d5314dc43a662c42b91e650e853a661368fa21b9b017b73bd5948ed468cdb61cf8dac7fd93d6705332741e8bb584af29b9f0717344cf7e6caa4bb36bdcca48e17fdaac826f72e64deb0c6a47e21c7ac674eb2fd6b5c31df744e026e6a9b3fc57055582c78a6eff8ac0e1765575fdb81c1c7c74825fc5f010751b28b6ababd35594edbc37020f46f81d51b65bda585723e9a50ba845c6d3d3e570800bff0ac44c2fa0dd86deaf61e185bda3f404169ed345e0858a8dea9e7c900597018a22aaff4a6c80c4835d84d50c7c716be85c1cbb4ee976150229050945066ed17210dd244ccfa53240fdc2d6de12f56efd3265085868cce9917b7689284e849ca2a4d901140fc1bcc4051a90b6c76c65c2273412686066e1cc9fe7ad305dd54a4b55b52671545575a2c72065677ef8043811cbf8b9725bc16a67a14eaa9e71435e434bd4a9952bafd445adcc57e7dfb564d89a693bf192b6c59879f4b4ff687c124f5544f3506b1e359eea8dfffdff0ccf5589bd0fc19e435a5f17aec3d5017c643ce3fefd1620ed0602a4256cd7f95d063e66a20c0dff794d4c25d21d15766a92e7e1a466e5f5d56a3ec6cfc1c0fcfd191e61403ec839b4e2e692a860d7b0409f89a41b45513627e9d4596fb3ad4551206892546100708905cd4757f931c675d30ca2d1a0815007f1a377d50bf7ad26b18fe9096a005b5ec363ead8ae5c1f4a3871d8e8f6f97573501ffab52869e3356c361272ff42dbcacf179c36152895f41e41886fb6341638bc18edee7aa223ce70682260fa348306fe2dcdb71ac4f28297153a74c50d43924b18fea508c294e4e2e8230fe9c7c7b1cb238a3d7dd69a34fc2a40aefdfc4740fb446f25eb6595ba6d8eca6e91d4c09cd49fe48852e14873660526a8a820fe862bdd4e50d1f99d45bdafe928674da39f5af259be7ff928533525c0d50918a718203ff5fb7b558d5b03a07a7215415f34c525591241cdbfb08dcbcdc3d3ad58d981810b7b3fab7a67743b4683fbac0b441e9f4a2da7fa5c98d4ce5e9bb0524334dc9b9c2c86c66614ca83831fac1f0a86944ebb7f15b611a0367f6f87bb675d141f1ff3ef4f9a66ecc14cfdf66d2b0ce2f86f8d71c3c06542219b6c2706593d9a1f7e45f4ab1f21649bf890bdb9a8648140db50113caf4415c953911d15882c5814e672793f84ba2b9d4418c9bfc84e9f07e524abe07fddeda56151f46106bd341ba752bdc5a886e7902510b1e2f714b30bcfc57862816e9ff028410ad71f6c13b32c587f8bef1ca441b48ee438904142aec8a76e4a89370829ee2df056b51b0a41868d3af25aa772012a5a6b0c5c4384777f4104737a0c8d931a58a935676c398c7f2674f0fb869b25ed320f5de82f048e3fe8b78e1b42f9b690018aba8f425541492e438fb0a7be87ada2fa5ca78d9843a4dff89e3deff5dc10c204a30d008a70b111846b321d0a0391e272f2e24f5c87d87e147a32bcf095ad5393a1de3cb20dec07013875e368fb6faab2387f6ecf71678dbd4f93ba573350c90bd98908c070eb9b363a55dc2cd421fb13fc8cc3e8ba9c39c71b57ff844f4d611f625afed3d548d841cc95644077d935a743ac18ae41754ab73339f99142096674c969b6bbddbcd7f3da2f1a5dd091120ec13e8eda891f6fe5be6fbd8fadaccec88f7a5d780b28bcfc66f0ad1e528a47f1636ac636360ccef737b2c44ef1e891cfa9a27dfd482b4e9e0667da0972d3f3afc5eb7d89948e35afef8fd2f5b8ccdc0600c6418f6050c75c6424dac828eb1ef8bdb87c72100d901f881601256aa89f99efe0bd0683c288b2bd48f7ef7169dfcfce720815bcc17da37bc82a47b902237bc82206cac596c0e163620e96cfbcfa36b5a94232cf0a361493e32c01169d964f4fd81e759ea43f9d3b9c1eeec7f60ff1e1ed1c37234b121170f7bb633988cc603d260f086aee0168403c41d862a89f38f2b2ccccb65a646c05ccc4a19d4892d2be93a0ede9992b39fe71a211adce82134102e9ad29877a251b989392010b5a86f3649555c0787c281775554439cfa2c158fd9bdd4424f3b1cc873b34e8e825a271c55f2cf7207ca5c2f31db99b840447753092e170acc1ba0893f8b71a3de77ac1c2a3717a95e00147d188d6ed5a78620cb5914a3b7187db13a4855f2108c4b6de160ece987ef1e58434eee94b7c815a4224e3aad8db2165050ea197cd64f4d7bac2491087f2e99b6be636f0570d46ea7359f6149c3d909e49533949b00c2a05b9781ea8ddcd9afd82007f35b6799a40ac04ed5f823093811e3cfc4fa3ecb3d033d7014e189ccf3561ebefab91d07973310df5baa887a77a193d42623fc9cff3f772a5c41810387537ad6bcb15317d02f9c39c8bd0cf3e46a12d907b65f3db6fc3b14b09a00cd8304688e3a4f34624032de68a2ee05f579f724e2908b70c5b4bcd74ed56d83c407e63e97395e0d6005aad6f44f562f9d5151ba06ba51cdcfb2c3d937a17ce3c11a877a69fae165b17f48a3deaa605f9420d8089f0474032176bb024bf3df0518b23008d447ad2af064c8d8018dd1a17cd9658ceabfd11de55c2b79bb78993b32ca69040233ad4cfc8a6afff51d117b8b393afd5824f43b170ca56b05de87063a0384d691424e2a01e5c9f2aa19218cd7a4f6640167bcd943c6c851a387721967fca7032456545d0f82e3ffc582659448a8baecfb75a6aad7410b21c37b3a9aba7f8c61815e84abf6f3227ad1fcabd091bc8919bc6d61a90f4fa3edea701e9b7266e32096ff1c27f1cf82136ad684a9793706999eb289e86544afb9548112c9b008629cfb7ab82e0e4ccaba2e755ab15b6736772f00effe31960b484c7889caa4e9a34d3ab9ee4898c9978334792ad0c42ba0daa2a480769ed09a6bf3617cae87bbb7229c6e4442a9d94ef50ac28c2a3ebe0b414b55dc6b889a0ffca3e422ace9f6013f00aa885b27753ab4d11b58172ca94079ef1c20fdd537566041a3d94a13900defd4e118aa2a0f0f9f8c1c523e1a1f3865f0dd1f8dacf5372dda2aac560ce66ace0565ebc6599ed5d0103940819a55b050781fd5e57639031e6fe6bdc382b0fea2b67448abfd82e0d275384308598282a8dc7f05e4b181aa3a7b084dd8e4eb61b17201ee547b4f0743eb0f9c3e272f6f23bc5cfddc851493d4e1aac319839e3546cbea4c0f74cdcb1028a4a8ae1df232c05991f02cfa4b16724bb5b24832c21bec61b1e96c5d07315b84c1173544679fc28d228b62e4711fedcb108662f0f39182108fae351a3e5a99eada510f2330b5a2c44a42b7fc694d3ad4dbe8b7608cd33b4d6d2aaa33ff6a534234719a550a9911ff3c85222f909293ab87e8b048657742538a6eef4e418fa483364e56c3b6dc034d28763595b493b4d02a642c036b55505bce4398f60ffc9dd8075f5cdf2465ca64edf59694a11b4641d0bf1c3b90fe39d93a718b886e1eadac3166ad2aab6acede0b573cfcfca350b8cc1bbe50335421170f59cad2c7d679014638a9a323e4c491e98b585ee33d202d32d29d0bd2525c89580dab2b557fd08351d3f7d4b76ab93040c6557a4b7953ff595a7aa1ceb56307fb16c2c851aa22cc2d797b8931e8c697ae88e451150fab184760452f79234cba822efcce7fbf9b2762445b2e6f089a03d4580fb762b71e111acf6201a87308c60eb83d14506dfe5e9cc1fc8547b8b0dba244e5302f1e05604f094481b534f87b2384e4eb0b7e333743a9eb014c6539b82ee4eea906e1ed7253fdab83152abefccbcf98a1be4c592237e616b1015f5b0662e9dc5e4ac796d6a7f2899d0acf265756e316fd8fcfeb1e9dcaac1efa658e85dd19906f8e33146bf21c3500984e59669eb27ff1ee038fd6d5fdf56c2edb714c44665af628dfb58ea8b531ff626da29c59111e8bb1bd26e2da80a49ab5f22999f81687704df7ee3c4cd6445afb43bffc60da71c331e5d32d23d5a6130a8fe0eecd2ceaf644cd9b35a84e5bc8c9b05bf8faaa681e9292117ed8aa0d40eb5813c23fb05387a491b43b8d4ab81b6fc4ab7b32d50aa27fe99d27a0fd393b7d3375b7e9e4282cd6dca9f7117ef694519af0aba66eba40712f212dfa38c2cd5d680aea97cfaa726435d282c25cc8e7694ef2ee3e43ed79fed91613f388a397d050f6ae469698e397fc215b533c244b38456bbd07617ebfca58ad5672e3063ef676ce8c60c0e1b0224d9d56eda36a46f034687e830c7cabcc02996a34702f003e0733129d12d78c206f6351f24f0a1212ab5188db8a3ad5ccc6d2d33232ce5ab5dd3d0e3554c69d589635d688b9bb7d230ad62857b85348cca88aa4a75fbb6246a91fc64d8b6afc6e9dc97765e481c0eb1ccd32d4c4a9617226094c1716189c136820b54c6fb7e635a11f0ac4deb8c2de6c2b44c9452dc3a2e11acde6075006c56d43bbdaa6e01b554279a5ad8dda44622d5d6a3f1032f70a9697fe9f7f1a03e4b85c97f21a5ec16e3372ec3e158c63a955f92999846320b226bcb6bdab3c0da1bea54f858fd25dc6cceb203f8fe92abf14f15934a0872335fcdae4c9c3c075c362a9921ef1477337f6c779ebd53f4d571a401da06bbde0f1d79ac2fb8347e0b01c172a5a44d523e5505bfb7753eb4953cf65b27ded25935cf107ec130e431349bfe3598754fa78b6d833a4dea8ca51331edc92d7a4852aa2862b6dcfeba61bb7a8555d82486c7684f4153f2c26d5ce0adc720bdfb1a711101f733b001c9405ec5cd584c2ca15ababe9145dbe9f5767dfed64359cbc855cdce896351e14646b77ea222795112634f01380b41cc9c7597b800535ed9d8622f56885264370c0e6de6a4872ad39152e084ed15681abf2372783e290c94539a035e9591c35c19c92cacc73428429a2e2c29ddd9d32a1d90491a1d2b138b478a0b3207e7516e0f3e52f1d2e5309ceac4e5ad2a28714b5a95a9c440657c5143493a7c69d15f76b4595f6ae0ebb52d05f062486759c11a7ff2fdd5dbfa06b0de82c385fad94e2b724fa554e1031114b3eb3f311e48507a78f3dc0d3ae454a330944f412bb75c5fd749c15e1a7d2ef77fb9680e4a1bffca95a9ce1838fd80f256b8e697253fc01016abce14a1afe5b637953a7adde0edea09b492fbc863f863f3446552402a820485dd70dbe2c279556f79af8c3bf80ddc6e9826b97026b1b7aaf68aa18da5bbf91db416071dc4fc5dfeb3c537bd4ca7113fab0ef5c9421897a54df7b64eb524cefd5a1927e50c8f627e8a957c30605a225d88a34101f4509c11faa41978671c60e7d7982ea2f9b4f3d0eec6fa532569038b1b664058519f6b9f58b66038d69495c21a38bf10f03c9f964359205caa5001f2389cb8a63c189b05ffa4c76bfa8cb2169e1a7cbeb56f1ab830ef4b7493fd609ec5b74ed4a0f0cd7b58269f244e02159397c5f5901685b8e0871088366525f4fe6f4a955e0006fa3f5257f62a3f847f8ab8c6713edb96b3fd381422349f8ef268f887c6d8537a47111801f87771d356727e428bd20f8c9bc456a44372a651199209999366387d5bb7e00860bad1369a6513cc6b2e9ab6732a2b0ee2e97f5c681aa1401d426e9c287aca5c1dd67770e9a0be282684201da5eb5bd0ca055bc3d50008965739a73590a8c7efac61597c9e06e5e08edc3fabf0071f195128eca7f5275bd5d02ea5e339109b96fa26cc82dc9e99c0c89112c2f93f7f26242597c1e4d7a3881196a8000789e4d79ca3d8a87811bea99dd406e3d69cb0ba22c569d0ba3e808b92fb2e98716b3d01118c5ca8cc2db359a628056f53e974169446e68469ea5bab937a0162f71465133546fd59d664990436e4e6b33234902b0bd69da6335038e6f34493a06a647d579d6cea9a824d21e8f8b43cc2d1514df95c1c9b83d749058a8a20b0fca34157af8b4e7038a522ec37371965c5fa5712457fb09cf21e9089b666e77ab89914cff23e6d5acbea417c05b8e4f2d799210521d99e1f72c645db03c907bcd3514b39ec080126ad04acb50552bf638e48cdbff28ae8392e946d684fa10180fb7dd5dec5197304716a89ee5552a426b2524115ec770145f7066f8ff1d8ec055fd1a989fa37e3ad8a4fa28fa20363f2e6eba1e527675258733c98c7ddb7effdc3493f211baca3030dd7e54451ca216c34cbda02dd66b893148d98596f41ca1774b61557fb7fb982aa22e5bd907cd41dae461b2559b8043a9ee303a8e47b4ee1ddc02b6317d16186619557fe6fd7c8bcb35656efb5ef7a9b4205d207cb33e0f4029c87d0445e895a7e85963e5f341cc0839dc4037a9e53d0a3d6df28ddf2fb770d49b25900a9541edda4205cbcec46471aad5e2898d43b4341296c0e1690abe9a6103ad5eafa9876959917da4c2b8b50964a657b7effd30b1cc49d97faf41241ea692e3247605f107a9cc171c745883f9f5bdab7273330199c29f9975b72e65b0b09a5848b306af315760933cf1aacb3847f068a60b55a2c0014ed7f1245f1bc0d393722570ea9a411defb34025bbbae1213f4f3b2b7cea2e2c049957ab9909a24f582ce5f60c4182a144bd6fd154c0b5483f2c1a988fd109debc1bba8b2353d966fa6f7272595762385cf8d7a5e4c43bd60140f5e29cbac94c56dcda338e5ad3cd5ca0290abaca96171014be15a7a867999b1d980201088b95249831f17bbb4fd2595a8942acac410d67e66fca1e820d49ee4a752981a9bc24fb6ed7b846327d4ebb561cc6a6634074d8922a6558031f8fe0c3c3b51299ff02ef77c0b3fa08744735ce375b42bc1cb3288bb96077db080294c59f3b6f2b861c7b599e18cc6f156e9bdab29fd786269258608b416eec592aa0c9872721df33f0a7ccdab10405b706c949e80e0dee0fad9b0ab84dd36707c25764a1327c78854703b7b57740b21a5ae9bb14147a648185ad8d2a8bc8f7a11bdfa709ea50100cad9c827868039e65e4116a9e8c0492c90f5f5877ac682c34065cabe31c44e1427495a52125670c26f0348e4977bf6b61698a191379370d39bce5eae31362971cc390ddd262568c0ec73fb39c7760f8fd4bd9ae3568f0dc3ca39f2a5b9337d3c7f516105abeb71ac69ddfde44105ac88fff4419febe7df712686032c3c7c2b71cad3bcec047bea3270669d8045f31628e7b51ea43713c30cf33bd62b45448809418de3b07443cb4e4c153215d4ad4df41e5e5ab0cfd569e4f427f14990eadcf9eae385148a291c0888be94348b988399b0464311f38ed393595ba048e5e4e4fa6659b0b776f87c82b0a6a12692579fdb7f40cce3f888da762f08717c6c3150248b125ae03eda9b5b3e59ba257133bb584a3d0ae5f404a970e5bfb8506dbd46578ee7d9d20a9dc059bbd743abe3e4a71bed8eb8d2f5ba40028d0e0cdca89edd7804176bba1a73436a7fcd26ccf70663fed9f1b45b7f92f2b0d84ac884c2b0a37c37f5b0211f4914f09ee551a50c26a8dce68a7fa02169e7bc10b88bb56824183fa7d82afbf7c43362e4b933d881e26096e01bc14350d79b2778c4b8a12fd23030ba13c4391c7d353aef1243172ae62ae28bf5c40adb055d0adc43f71950afd5cde80248f92bffc632d25a79c2d27bd7effd98f40daad0d13c4703b270bc9663eeed15e7366fca21d6ca34d3937270f0da768d65799fa56f4b14f8996e3db52bdbc541b61943799a5cec25d25bd1852ded27ab4dddc0c801bed7991f57894bf03a86782bcbb7f215dbd71bfacdba26ffb08ffe850e0ae929aedcabfafc86256ccc589ba4dfe0a38bc1db67555d0e3d07d455730c978b3bd8ad2dd8a7e62e1accf022dae04e9a6e8ca91476f1283e029dd9d0a884b6b6a4d8fd6303e382bc233006a49b83fcc331b87469215df80e634a9d9fadb3f2f8d14414b72d336d21242d9214d897d0358d45bb7c063048ab174ea500e3043809880b73060b5dc2ec354a3c90470660eec97c8aeda082665be11b45d1f3038a88d470ced738ed84187e8698d4e421253e9d3c73814f719f7477d78f5e9ee543d8438c83831eb1116fcfd0c11e0c1c48f1d376e811959e79518dde1a720bfde847b6cb5e09113da47a148ec431ed8ff7b9d0afed560dad0265033e9044904885fcf16bb2474968eb306117d9cf1ef6505d2f8115e995c92bbbc53a114004e29d339900bd8e98cdadccc1396e30e132d964cc1ad0141d1d367812c868bc468fb1c3bef35fca8c4b7e8758b3033d04078556e7bb0959615c2f29e3130e1f2c3349fcecfe25bce286802520bcd49e759c51b5133a19abad3a7ef7fbf9f608cd5a984715b199ffb9633d85b57b52e731fe6c4c3380fed947f07e11b48d3a7c1db1ad2f89f1ebd2fb9087a5de8c6e5db39cee86c20cf1aad7bc2fdae2968323c58b33a9cf73eaddcafa6fd32181b53900cc1fd6556f3e89865eedb17d0f53256d5dc0c5e34546719f544af2a35f395b2945546845ce78e3f89d3f6a5aa5122d1b42b72f2c462af8e897c10fb11d4cbf61a352b22a63f58f8bc0b5b63a3cf793bc77b81145a92196aa7cfcb5c6280a46d6e74c8d01fc9ad27016d32cbd6ab3d3b7e0a14b88764e2b8e04d2adb3e2b48d14f468eb747b00de616e0ba510fbf9ac35821f171a09f03856f10d23651eddee1e13d9641d54dbe99a9fcf0e4f6bd0abd607cc7d229139606c4ac55c45a65de34270841f3e12be38c102aa09356fb1f3b43de142c692787587dbba7ba4b62562669a3fd3dad226a723f36ad5836c7f7de597782264648b6109b2d3f07f7ed3f9c70795ecd7c6dd9d7f53656bbbfe463127aa5b8895b1a74bc2a39b9d21a31eb41c8e1d1034b3a3811509bbd20273d18511b1642074fb70c53bc5d9d07bbe120c8eeb6880507330fa607cb901054e0790df0a6fe2af145ff38bf33491dbdb1981593e7628ac7481aa3a1b46de40c422ace7b7d77b13a374ebf54de8e786fcd690ba8cbc4c6b38783482d55a2fcb42b22aebde8d382fa645c449b4871d2194d021573dc32484d3c8a1b0a19291c9e56aabac49b3cd04eb4d0e0c51d41a3b0deba89d9c4adf6e70388cdcf8c5c0fd00cb0fa7e7cca7b89597b1e90ea15f4a42b393635b04d3c5cc2b9fca56b7c8909a8c2f5249839e7f9db169e21bc7415d0579c1990cdcdd58b9854c9ebccfeeedede7b81d26f32f3a4ff659e16b2a66479a39151ca8cf34d59dd5ce9f31eb66e5e8a5e62dd78da570c921743034cea5ad3a5a6a780c582649f0d5d2553c35257fae02f6f0db89c4ad7f38ab5073f9d04c9232760877619179c23a62e26c155fde156086d755e3eb87babd2c46666b0213416760e10ed4123532d0e92bd02b8d5628c84cd589ecc102143a1a5510a074275d141ceb59ac2b8ff8e874dc7f5d005ba63fc5d2636ed355fd117d80b8240bc9efc7cbe8c3a3e133dc1c78aa12f15b4280e8cbe3ef58c68e39ac6eda6afc0100724cba5a1d699cd23c57c5af25bb86ef5ff447eae20302f860e8aed97414757b5843b2e91b6941f58a3583ccda5ae5511b67524710ffeea65de52276ebc8b197858fbe7ad526d076ccb541355586ef5645a98260f3723017f017f6c224798476d28f9d21482401331b358654416772579eea4a0a2b1179422cb1571a3b2cf4468b2971e7d35aa97624be6819490712439e548e5bf994dd36f9540eb48f451e56f2a275c2ba43e42eaaa71ca6a0ccdbccee0cdb09c2d3c6c793205cad43492447ba4dc92aa77046d302837e127a06fca3ee07f230925de5970901ed1dbfb05ddc8c018f6f24b49a8d955a01a09089e85330ab865396adc864bf59c9d22ecf3f108566f54e22daeb2f6140954da05c92bffb3f6076a1eafb2eecfa86adfec5add8b60fed5a75f0dc1f792c6133eb74704bc9354772a837ca931d6832736289a2d3a3659763551f927c802b6a6fb68275b2c93468fc46940c70b06eaa0bd3f46648c560b877de11ac6a32dd81b5c9cd42325d001770394da3ad5a0c68cf8befc55c0814b50a91ee17a0dc4216c6f3212a339d291b18e3fc7cefa2a5ec8608a1f0194d07e976d1dfb5ffdfddbc2883cbd0d0d391f090c91b4daa638c502c90b504e1e9615c62672c1853311e9388d1a385b0fdbca5e01821541a4ed6ab54a7b2663b24e52483ffdfdcf6db20cef9b32d9c624ff4410c1b33db70668353649a5b6287bcb6fbdfa803649c7cbe134108c25e24ae38dd45c667458682f42456f725c3dd5ffbd1f05866e419c4e976ee31cc69383505d4492e95d857ceb159eb13be56b134416ef266f520a0fa5d31bf93168233b4e1c0240fb29f9a4a819d8e839b8b1553ba5c570ea54093779d74421627388c2cc5256745c608b749cd6012a3a59d4d4847bc7ff1e88ab22940ec2ea9abea735448efbe536b2093f45aa1b712e802429451b2c892bc0a311192cb2fbbf6f97f17a83b0adfdc8cabc550a39734570abe2c768f93da3b5adfc5818031c48b3ef214980f3a3399aa1d0c8d54a0afa4dee3f8ffee1b94cb188defde655fbabb14801de5e2c6be916c6f6d4c54d0ee235f1955325bd3f2d1cd56cbe80e159c518f4fb8e72e0c91ebe1136020d944a1be80cc9463408006ff39abad2c06ffeb4ea382a1c6689be34f83e5b035eff83bf928d279e7388d4a25597179b419882cb85e104689117a8ecca911fdeac8ca7307b5cebcc9fbcc19a296de29858e7967717cdc4afac5498f44d13a3ab71b79c3f09e0b8b5878763356f63a4b6dd565ab2ae7f5025a788c897088e92f60c3cfecc4f259067fe8433d2e340780239b0e885cfda4fbe03d92436f30bef880252870e08525c2efe36e3e3b1cb7ffb44d789354a87a72125a2126e6ed3784600fb7174122a9471fbeba245b9d780f4471c6e55198e1dade7194c0b16d4f171808df6bea1748920eb9dd3d71584e90165e4d9cb137cb5a9610fe43265f96c80951e33b5ae66d94e5d660be2eae1a73f4417f592b27f24cabe8db06e0c50604a70ee51c0df0f8b05d547d406b8d163dd67e7bc11d55d4c0447a070324852f09875309e3126a2141fc15963d0d849589e3c010fcea01f7f6a009dd58d0c6f56ccd07042cb3f901121d92aa9882d4e683c165f33965433fe8470f05c6dc1fb593e0e608d721b263e4cc018812c991996d310fc3284bd929be0d8ce7356b94223c700d5185436433eb73e28cd60604681dff7a3b7ed4647557e5ea932e68ddf8f5cbd1f81f8272125150128aeeb2d7947d3ffa95754e5562c7825ad35fbb911ea189e0f650b19ac9b2c011accb4dd9920adf21b249c81b04d3cdc82e1b0815a9f97bd752060368009f5e335ec1a93f6656808e15bccf773f7724eaecd7fd6dd908f9d88ef50b3f801be9c4c888c3c64c87aad533923deff9606df66fae3866f2ae70d16c13d8357621ff7ae2bc2a1de0d547feb81612c3ae73fa05e6deb195911f5369d51d0f2a9b1caaa90c5efa65140f741ac29461f315443b38f249c03b076147ddab1129c7e56cb813d95261d12a179bdc08dd5024caa03f0ed0f5a80703d1b136c7b2b26e6ee8e75ae7dfba8dee61e74108c62176e2030aa3758cbf32ce9f8a9e1e08a2347957e05abf323793587900ac09a84fa24522b2ab64dd168e354d84c473ddba612ef6fdf82cdb130c057a1904dbe2bbef136357692d59c165383482946b40032e66f5eb32e94d645bbb974fc1a753eacfe560e3f62197a15b8bfe5eb4120648a510f90e764b626a04a89558ec0fe04d37c5689c9c5bd0ca9b002d03844044b1e72e9cbf8955d67ef4cd4f817a21f4a402b8fe8713ff63710cf193cb9928d6663807e95496abc789f1a231fc9949fb65fb69589de29f536b5bd4d83ff5afdc448c39e0fe12f13c0b2fc1be7fc9ace63b4d05e1c73fbec4400b50f81862c838a08a9ef870a4929bb34b160b35d595aa927e90b7b91e9e81cce127c297c529111b3267985c363c308c39fe41f612d5c0333e392d8e5721796c5aa45a2b503e528993c79cbbd919adafd2461edd77faa7f297cb4b3c0fe23ec2fd35b767cdfb2be55493d6ea3189a4921c2f7521614e5e69623549d9cb858403c156264c8cb18f53ee968b947a100fdc7b13a9472a4eeac4f75d18abde24a8daceecc5d99987b538d324f26a7047c9cd5a9e369fea3ad6a18bcad90a0ead27d75bbc09fa4789985cf941b9b2a6dd133d04032911f4f9aef8af7f6317a959226e68c838b53a9a771f70197f9d1311101bb5fea33eed1f831adb50c1376fb6e18a92dcf0b875a255bef9e25b74ddb6488d261a59efa0806abd0057b26df5254caf58dc9e2e24937aa7d8345492b26f299612ec17d0dc06fd1890972878738f74a470de08e214a3f0de42cde62e36c0814d75eb3881f9e8d81269fdc9c522ab08bb138dc4b7244706732d3c83f84b8d06a98cb630f5e5871d7b9aa57137995fe09b62bebe7311f8d100627a107f4cebced4d891031fd067f158fb29aeb2c9c576a842bab6cf6ecca6481067646e6c46d71b9f48cbf0c4bafc46f103438494b468eb562dbfe1b74aa2d24d59cc98e0a98060b18635aae1e6eddff559a5921128f898f65ac2d2b69c22a3356f8ad188520e257c390477f04af43aad8a8160fe738c1f43baf9e4bc7a4bff990851972bc928249d848d5d8a4546789f9034dff9f32ec8bfcc74ca64ba83417ae7cb8e8c775c79845c3a7d182c9d5de7e9511178d70ce70ca7974bd969f6bdaec413cde70a9859e2e7079d4e70b50268071f7d97baf99ba8569a3ddac512b77cc33bf29bfdb15be35e080af9abd08d5b67196f42f8eb22d70908c9f9250b620413c8130d51df507d3de1c537ac33004d676c0c46057bb414a14000cc2f58fbba3831770ad83fad4e444c0581dea712cf897c3549af68f6b21bf8c5023f34eb62f3631c41715080d2f197fe04b3f92182645f38cdcd14fc8323b503b0f51efa33624018853877fdead323084da17a2b3bab6053a2ce05d7b4d553302855599525201bbffb047b940450e606307d7fd95dd57e077a8a65b739c983263f956d238d4f3d9f7081099a5346ea2c76b3e29fbbaaea3a81f9839c6d3d484bd92ca4688226644b5fcb3180ee42cc07c6d67fe8899d8c2b2cb35095c74d79040b248efbbb683ff57bcce79ec6c53edfb49eb84f41377f319e9fe390c701437f40d57dc9d55ff3d7c471838cc1888563141cf2f07706915157e4f6be7c12a4c627b809ab334f9972667a41067591fbabd76e16c3086cc49f11e166804749f12957ae8e08f214bd92fcd7c268474a8e8529bb11051a5ed071f804b6e7b86d51f3e98ea98e96a5e02efa8089b8f6d43f118e7454bad4b79e61a35f8dc9b1d23f6e8d5bbff27254f81042257f3ac846a5b229575437dff4ce1f7f14335d23b50b3eb89e76c7eb66eb503a6c709ce284674e87900bbeec4732168e42186d13c95a0406f03a611545179fe4428cad9405c6d877aa752af4d351daaa854e17c683a257f180b9ca58b6cd5ec547e7a68ad11034e5c314afdf6fe56fb6f10a1e2fecaf0966e168c912fdd190a391f90334be2e5fb2846da1c7c45d5b5c4b27c80cfd21bee5e0fbf15e50dc8d6be51eebdb0017f4020389560ac75c84564da2514eeeebd0388ef0cc80271a91beee162636e85af68381750fd38238e85afc1feca70dd68ce5dc050b9d06ad12f93586aa62c099f18f87c2f5e1f47c1c1d67624f7628fcb1e764bec9b40028f2b95d76b2a9a3086848550528a73066a10db3d7d953eb4d4c6206e1e714ef147134a9d2647240f290fe1e58d602656904c1010c4101060dda45f8f969ab726efdd6ebe90d366b346785ccd76e3c69add2288e31d2835454c224eed6eef42f27cc10caf1e771a9c007473225da025c8a5b085c9f429bc88d1bb08e0a34745aa34340a28173d9c01c6037dbe4c7878611434ff74e10f150f7c196696eaae5903b36148c14604bbce12cfe83400b082683e4430c5d72a38527bec0f89b1aa13fbbece99b8d044bc63c48f258650753f6d784a7148ed90d7484fb20fe7259db3ae400f2feae6700af6f48c0e1042c235838553ef1c700f17dca4e97bc950cba06eb0726949fd800f2516ed646d38159b68545650a928d5ce288cc9c1feb7e6b4ff80c595d6e176296cae3ef450a476e5dd0a69f7d9d40fc30a26fb4e22085b467a8dbec82890dda51594a59bce69ba850e09d46f13bb6aa9acf0fda2e2272a6408c1af6ab4516eded8e99c826293fefc8af65c4e2e2b66bcc1ba869f1a51b6f31a835d91b5bd76c0c8f4de2d7985a44f1eb6105a7ab1730c467ed3865a0ee7412f418aa5d65a9c90e97e5c5ef7c5f3e25790109e0d52a05d9e434dde3ce1331a3dfbad8446690f81173b23b5022f30f6eee70bcdd43c091029caa571a2ea479eec776f4b13fc4efa603f55de25bebf03a141d893bf9b50246e9d7a12984ed2d65823790d93bc9fb2dbf4cd783fc5afa596c05410fa218c910fc79d410d5c676b3d87191c284186f812f7610db5faec706a6de52290dd4cb3357a8e2fbeff40ce906ef7350ab586eea7259e722e1d76e7c2a057039abf3ee23534b23b7df9e37693c674c752426db30b868c9b7628ca1d8923f0e261373121f9be2229578d2743b20ec9316c76b9ff5c84e4bd1c88f09462e516f887f9eead6af9b7789d318fec14a2306c7514bdb6c7bed975c7c1132547e5c180a4c03544d63b89118c91a9b8fc6501cb7e195b7fb3fac505deb18901bbc15e3537ef004a05d45c2017b5574129531ef247bd4de339516b99306027c4c50c5125a3987be9b9a20f235cbded70d2ba6892388e0de2492ca4768c2092e90591a1714495b5f11e94fc3c2e0392269f22cf6c8540cf50162b7f64599ea0fb32bcde6199ba379116ea716d7a63b3daec62c91b18fdb06a9c1abec9d0889f5e7cb111c34c2fa4e6521c02feb4cff66ae780f6a4ecd4bc9ad80345ac80fb00e1475da3ca773af53d64d3ef163c4ea32284b2cbda306ad582a06cba3d7b4dda37b17ead8e509a59b171168ebbd46c3f6f57a82d0f3160ac3bccc53333c801ff057d3b6676002c4d26ee20b376acdd11540b043bd513e2147c7e0ec8ac800ffa9d6811c105d7ffaa28c07b7560c9817dc6a8e2ef03ea1ec493f630c733e457e0dc42adfc31cc8cca95e1c3c98b5ab92dbfb28b96a45c8ba44150bef5d0f652479a88efd5816c6755f079089b00f4b92fd7e880b0ff81fd72d86a2565a63f819f0729fd38abb8897919226d08b25861bba872aca80e175c21d7584982fcb9b5513e2040d0d0fbf7b536f78f98b9ea95d27477fb064b180fb324225fc7c3b70d863bd97671a4e41e485326f6eafcdc736d3d36afb08675757f6718969f60f9cfadf98e7452913896b58a7cc2d5aeb39c8982cc6a3c04ff6e9c1deca6718dfc8c74d4db711b0a2357566bda332bb2d191be433dd687b6ebd7eec1b966bedd7a16bc4877d6e238687ae5176db2a0839c5d4155df2aa6449f2a0bb28af75be3c58ae46d3e43b9834e51efc8eaf7d098e62fbf889b91593293a345e8f6901c94e238180474a68b34b5ac8c3422fa2b03257ca7ca2da1a1390249d71922f4354a8ba9af9974393d1c612d86131c0c5b2cdce9624c5713cd6029e79d319feb6bf93db234f97148090b5e2664f2298c261d336c4df8a9127515b7ee9c1a5e7fe6467c67346623958242ebdc9d11a43663d2fc3c83bbdbc9ed26ffa668cad9211674fc1dcca4edfbd229b407210fe2108f70aec41220a6c34dd47302f5775b6b8c8379588286b6aaead0f275fd6b8e56fe1f0ed1895b48ed50d0b9f3ab394a25f64ba0f6516d2f1342800d51ce1cc170c078d43b71afe02245981acc50c1eb8319f0d80206158bdecde98d155dfe9937860bd324bcc081ca1a94a1f693295ec88f1f13e364921ce534eef43f380240855e576421c383e26a828eba3c276a949ac9e85210be67656edf0757bcd3a467a6b7142beef89dbdc38bc6849ad2ef66cde35b7061a20dc3b34bf6d6bec9fa2c126b8b9347dab1fee91837d050a8ee207bcb6c8503014ae995dcb8b285872d90859c079f8f24ebc819b5c52301825185fea72f662baf1d23eeba2ac6c79cdee4e52a275a08a1597ae21bc4b045e80edcf1507de2620a6e42d0e603a170a0c2de8468271892d449c02df62b22321ad90434005b38931e7fd1bd994ddaa954b56fd0501b35129b860fd56b9e8116fa4b3be5f2aa8fca26ed0f5427a2cca89afc509009da15bf40d959380dc6cb5b5defad44c3935f59978f358f90c4fc3d6c5425b9dbd264e022cd8ae40a51edceb91743001d50a6c49d769180302fa0220af7396e4621a96a8a34ba9b43420b6495ced1026f4965e9e2d37ba32bdb59a7cec0c3471b3eee2129a68d64ccf2e57915d0dc4f2c7f54efc227cf968b321c0c7f417feb9e219a4472bf8fab6108137e700c7325b300cbf09a2f944a7e2c74f81f3eb95a72973943c79becc98c20eb33af9c6558e1752bb8c740b3ef2491f453e53beed7acbd42dfbd85b791ae0a58a3e3243b9c44e844f57ce223e048b8f44a9f502cc0361da2fd5cf232341905760f1b7bc015fc60e0c449989cdcf1fa312133b2e5027e47f1ba9d22d5d1921973eb6d60662543b81884294bf2ad2cd1819933bcd66b635bbba36f9afb1b14ddc10fdf52b25f1b3c9db739712c9354130e8b7d352549417e7978317c81ae558b9267bef9628e5654123578f2bcfc4f960b0c7666a302dd5fb804fef338af5c61cb3f3e43d5ea2dfd10006012a98abf3a5c790781b663c141f09996b1d65f6bfe55190d6694b0b8f9918812990320bb6ab29ca808b35e387090832180c040765097bc97b1c8871ff7f940c0ab2df5bb179f2039ab5330f801e1a644741345da24612df200445e4681ba19cf391979f17a3e527ee01c5308fd61da59740b41f48cdd9e08a63c2ce6a22f1516315836498a6e8890241a841c04bb45bcb0aba10744cf9462452d5e60b66370642458397aae7868845316b1b174bc7b3249d6f0896937e1af43e676b59f9aee8d8dca9264e976bbd7f5ff21d554c0083b79b6e3f9950d7ad21aff7b23fbd932a0dc3bc736ff5ecbd0ae5f5253c164e3d63a94969fc7c5ae506c7150a7600a6bbb429b696568f7d6bef407ed3c9a266f966d4049fe2babd0f134be8e19744ae1616f74770cc8238d44d4b6f20250c3d85c1aa9819673a9e4e006ca94ec582f21de5cd4f8cdf585da3b00cfa4638e88f8acffd72bcbdbefd8e1de026d6647bc0074f8067d472becc212e1527f8307e5bc3d918f16fea01bd11af81408ee0b5e95ae7fa5912003c8dc678c951e260ae653e8532eb4b19052684a7e86d8b78d643fb87bca4423811485741fea987383ab3b3572d2892e1d266a83b3c369f84d9264676c0f9b66b84cd988c24b264565711e9c14fe678fdd70b8e12c7ba66bf94f03e5f58c008e4488e8fde3bc366e41d8d26627854c5403e8a5a14af2aa9749881cbfcd394db991a20505db988b2bd6ffbba70771736d8a4bca119904b06ad2bbf0076fcc36ff050be5f4d9581ba166b729088a2c7bd1b285c4efd9ef7f4b0a7147fcc59cf0461f5c6a489ba82a5a158ccd03d6c738d7dea8a1ad3689c117de8ebdee8f0ef0b40de39e7d8253205694a2a9a34c519ef5f374b984438bbbc01e1362d18a98f2a06693fe1421d8cdcda4d6ec3a9502ff0dbe706ca56a96a0948a3eb770cd0cb0cc7b2a1dfc60960f6bd28c0b09f021ddcc2e8084b1afad3fbd555826ab243f807c0984df215a8d38b0b160a382192c08664a001080835b317eca079fa6da11c8d285ed6ac3277db3ae7dc7c954c46e966e47985870c68db3e7617d023907a716bae8ff2761886c44c2fe908701809dc80270b8dc283b9b3dfc9008eb517f6e6e247a0fa6ccc03ad4c5fc2e7ed0457d220a521f38ca752b2738bb13a2e0f789e8645c66dd0793f0ceebe5a12d92a977765a481f98d32c5e74d555362a819df6eefcdd26d087c1826431736c9d35aa36c9ab04ac3c839c873b9f99317d700a9633e2d194032783898436854109d3eccc6624ec3d8b47ee60d687a366f1256d73a6fa2fed041e8d3d1a258222d65ae718db33bc5a5e6bbfe7c300fe9027478bde77a94762cb2b91795f6596e2c32ac5b3e9ec422fa47ae44211dd6146e0392f90f4a598205c6e1dc7b2dbb865b54b75c4aebf6248be0dcc76aca0695d4f25dba8d77f8c6325809b570552332ceea696a9584beb1702e61636015c36458ebc91bf0e2936e2c3cb2e533b22e29dc779245f7af34c0a50e32601a1adf5ba469c4d4fb1260d6922e7871d6232815a0853bffbe19ac808b35b30147823a04652acaa8256856fda7554fe143dd18dd795a53242aaf430565378baaa923856acda60410171f0b43cf51e219b56aa8378abde51df0480a47dc20024694ee888e10a10b51302351c916de712b3b08870d3acb1960b825fd1a7c9f6a28732c53c0e7c09bd704b195b6a800d8b438485c35b6d965569f346b0934ba57a7440ed7c81040d4ebd9c81daa5acb9024e50974776a6dab97b62f8701da19a140178be335cba6cd0d28718fee20aceadccebfa3948c3d2dd181863292a5e17745928e86825e989b2122c9705a954dc002510622419148910378184ba8b1170ea57077371e93af0b4829eb865976075e88228a4aa1b6f8602189bf05d27f9d92a0fde56286356bb3b8529f3e4d27df74d8ca3e88db7858b9da94aa1fae72b883e89cda31bf962a1f32eadd884d2c183d5f23e5dfbf1c571d66ee87f07c522a9ae14124a6790c3a349dee21d556b1542a12dee1d45a281d9c62df7fa7c0cdd9ce95f81e661e70ef1751918b131d0346d300fd63a286e870bd8324ff3c79f10a3d245cc2d1c59dd62dfdbad2e80e15edeeeb59db0233ea2ae6936d51e3cfb427e35820003bdff7edfe9e83097e8ffc6a89d91dbfff2882ba267ee00b00f56c1884738a725beae1f21b12bb2e96107361d29f49a4838547baa57c9447f88a572c2b0bf35a612f45be4cb86590d38158e3266a30a4a8029494183d17ac59371592146a48f02dd311b19e7037fe567d2df5384efa12fd6c0838fcc8e9492adb2860fcb38cfd9efeb43024941ccc22b5989d76212386384f06dc7f43ff4469827b2d16a754d0fd10a53377f7b2a4eb67e38512e1fa2a1bf436d5531b414f0a52d8392fce4977edfedddd5000cd2b410f7d2a5029236d715b027ace220bf3f59a7026bd88aa507210572dc8b6f270380c769bf56a15ed75a41a17191db0add8bf583edb63c7e8ec2997b6095add3102d307cd04c89dc60bbdf0f356b3f2d9caca064f78dd872822ad20719a68fcec16f908781ec35a278bda3d67f8708c6a1b67d81037d1e3d3aac8fd93773cf1c3e294788a30373e351a5e7afbab5aa874c7728d1fc37c685864bd3982a553132e1b91fa27525f1345cc4b68a39fef698a6882c9829c3fb9ebbc3a67c7ff1dee7a28f1523aef10f460016989fe03e963e5a38196c69bf80bfaf4731a245cb1be244d87eb91a5accf1ec06ba4ad03d81e616411dea3b029a8e4aff96eaa5215f8f27448549675b4eac6036245b7a0d696456964f2389dd86d106eb47eea3cf0c2ecd53cbe8628685bca389d3afc29dcbee1f32106d2af794b44ca95eb2e3e3f761bcd07804a0e438f8961fb17bc3aeaf8f59d45b241bd0fc95794b75cc9666b231da12494d174b8c46a9d5cb32976339eeea20a72c9dd12803123a9f86e447e0c87144117057b168e400c71a90f71917dee25b02792ae9d9e15789ceda471702718f291cc472109560048d0d8847b1b55a93e4b95b419d764440dfeed3cf68c9ebbfc989a86b9d1d6c8ee78e4b03c745a0ed7eae3d1e68ca8e869c3ace18aac525bed960ad918e99e38f76bb2a05270b6c2a3081e3c96795456d56563b3119c538268cfcab12c6d9314c914f02a680c046cc1a1b5ae48bee598c30f50f4d55969cf15d82c9fd56c6a3e54948ae47245d7cac058fe96b5afec51d5fc34c564f58e374367a79b29df31fb9fd236250b4a31a52bb2b0ec713391e7846dd3f110c67218be7955ee7fd5c7898c6fea1b10a80c81ccd3679a09910b03dbd878cd735cf61acc32749be8415f09c14860f3098ed52e432e2476adc8295fc4376e1f7d0bb1e56d8ce564f17d01b0ff4f9906fcf3eb23b01fcac97737cce6e25e881fe4256e9f55c9b05ada9709515ada5725998325a580eda26b898f6a23f45c9a820b15ac413b9d7efb9b4ea6330166a1e80b6449c1a56ad86681f08dfb26bdfd96aa3e1dbb782b1de5608f5c39a6114317c5a1961bc03efb33113b52c1fa5d0f71cd4627e2174f001555398354aea54b1a02c73b860a0a8181af90eb908146b127fe9b6637bc1abdb8ece6c54eab1c8d81fd5ddd6c0d91418cab4e1dff1f85c720a963287812228d8e047ea4dfd70d2098fb81150f65b2f70723bac31724acbb6d0ecdef00b0e9cfd57d52f2129039df08a558f08a2428c3979c0049accdf1fb375289f3ff8bcd85cf37b956ffffbce99261496db79ffdaad6482731f2a152773d7ea79e777cc9d5ce8803cecc821f22cea40c02cfa53114f02b0192712456245d865b0e1161d289d998fd280b6c81b0ff5e3918ea76344cc8b14a94434f3f7b33a24796bee5d990d83f34875835b17efe03cb8a49fecf04b56e97f5a06483fac68db73d2e072a7b584979e4574ad1bc27da362a711b90cec50ed587c0f35aa24483dd3d0cc38000da3f578bf7ec855d63830b3d1204f0a39cb5c4af052b2277ccff8885159e377bb221689a07ec579738f2c1fac5086960d650f2e87ed106044ea5ff38fae9cd687ca1cc8520261667f23c5b0e9846fe44039f5f3eb48133d474cb982c10f55fea17d45395d912850ad400a31a610f08742fed4ed4c5ff40faa4917c6cd58df0483b6e3d644fcc98855d477233f112d178fbcc575edac4378a07846fb64284ed6a93f3e262fa52cb1fa01f1b620a930ebb444536a7dd19d51da725e4feed1203607479fe53d505dee2a25d39222b2c5c0e5e3f930d8f5b18519cf1a3e9fc5925db19dfb7cfd3887a1dd73181e528fdaa25d8325b00e04156474aa54153e755b2b2779d1bc1a893b4e49c8ac88f9a370318da511686a2443123abe52eca09fcb15f9a9020e9dc62638ed77174f912630ee409b81bba8777df90ac91bf1008678580975cec5a35c5a63792d8a76f2bdd9fe8045e67496e7717399c539d9cff3cc9560e5098fc69ffb03cb4820d335e60d86968d350f30043d751a4432e1a8ab9ca4938e6520b2c001cc1c504dbf8b09b900e6a015f10a518f90c58ad39e78f05b261894a5c967c9ea52ec405b7672f256e640078fb08b9b33324504aa696eac66fcfe07f060153dc2bad0637819d3551655b9b07d6da2283b455d783856dd7118f62490d9483936727ae32b496ab8ab871c76ca95f962eb3fbe0a68dbfe8392648134a528aa955d3af6440bd11154b77fee040f8e1e3bc24030cb36b9c35aea29379c6e4ced17a434a468ffcaf54a36ecec2e6bb5e7ac1ab02a0073516b76b1789556f9ab1b09484608f0acb7e545a1334ee284991a8112f556bb4255984f7220708c31fd7cd1bca43bd5d2429f62b930fc755b821d082831bbdc95116e7a6827e189e3ed203f68c0b15393dc78ff35a5916583458e7581c3beb640b56def1c0bcaf5b361c034d44761ea6ed5b68a647f6875fe464f704eb3fcecc4d479c956bbe1c86c706cfb4f22e226c61c03c1e0c322a19329f9c33087a449ebf210887fbe34f17d53441a2c17fb084c09abcb39583f2776ef58a2b0069ae081e903db5d85f6149bd20823125871ca0c1200ea9792e390d1724057cdc27711a2341089c23570af7cb39933c427afeb958d34a64b5eb3af13d3267fb4416751d392d6da62efa298c682cc7c1905cafbdf314fc794b03963bd61e9d15526ca9038dd72361d1cc4086e1fa479af4d9cf3af777a5878727d00be7a0aa6aeabf7de35151137dff71f684f7a68d80c69dc2296de73adef2f1d121e75a23bdc5c36684470edda14d9193ea894ee96687962ec01758a3fc43196406c3e7b2306fb15dfbd5a952104ed8870c07c8ff1d38137e555a843ddad256bbc34fb694d8e0e060575094fb14eface3f381fd474b8f8c6257aa5159015c79e82d2cbe1a969209f05d3040914a45e1dead8f7f8caf87394d4e7ae2bb791c5265bb52b72c47168a92575dcf83ac6b9c512c4e0b6ebd0044f6f1d0031b8390008deddda3c1449bdc4eeccf70737963b73cb63609e07f6b8fd74dfe99a71f5fa02049c1296831f30f33102597b9e51d003fe89d5caad0bd88b1f520ec7f6e3c84c3de7870c217f2b5d1fff1f0de9d193021450336e8de2564064a6d3238d6ccf77e63f1f405d94339bd4ceb9323193ee74d5692fc890538829ecc68975affd2f93cd92a0c7beb10f611fa301cf8bbdea6505c77cdd1f1907303858bf0e29e327f4ec7579b01690cc2e9a8519985ca0f9c5d8fe981d71926370475f9cec1109296e8027be2886dc5c9e7d4d602242bb703c9ef0ca70883bedc361d462d5ac2a433a307c61498c555caaf206c96e4f802168ea60d55a2d84daa6e1174eb086d6880f9df39e0c8ecc7b76cb2f3f108e62fb2ccf5165d3ad22b40489da27e9620df51cd9d4cf4475cced149a019f4866ec97644b907d836ea61fda3781bb6c51d10c5e062950d5629a601f96c386e89dacd8ddb7606ba54648912238cb23bca8059185df9c00accf33e1d3094a07af01060371dff56b121a4f346aec5a981cdbb5c8c4efc501591240255282795dacc39f108b89d134183d31671effc8a246ae10f772490e7f6237cd3a21d798f17e6300ceafcd9abba30d97808d7e7a96334bfbdba33ab214a14f1248ad1db9b4336c82c1362c74a73349f9204161f40372dc8fe8133ee415489de37da096ce11c6dda4cb602e686546fa96571a63255b750cff478c00c2efbbd82e56c0deea6086c2d11841b93fdb115fcbdbf41cee4fa089253bbdbc580797ccd880d2cba66d2cb24c0f38f09bc1f2c525adce6edf452b6120056686cb228a87ee3cc36b9c35b53446c0f64f297df11a4748658228ec92ec3508aaeff99f7b8941808007171728482fc884485d95df3fd64339fe5c7183a7f38f8dad3c8e9340b1652e42061d1106bfc07fe38d91f57a6580a85ff5ae21657e6737cca824a3ae907403eeec5ea5e115ef3030473799294572819fa6bccf229a492071b5514fc9faed2f020c27808d39775e92c71585237126a30a67f4c7410fee955ab8d6c40b9b2d7df6fcffa5deac71cecaa5077168b316edfafcb5533977c9322f814f8dfd54f27735d3436e0d0c74368160153b1802360024355d43dc97bc68c8d6c3d46fcf0131ba41888c771596460298251cbb39d60b9bf8fda910ae9409a0fd43df83698bac7b20a587c2cd88dfacf80a16071500ee57e6daba6c2f1c6b2d2d6ed09832b246c39084220a7177f01c9557d3f0e84c6afa61457e3d6ec382004c43ba40e015184c55b9f03715a4d62d607a68c8d9ab2020faa7424f5089e9662d3e087c744598b6ee1ed2d758a15af7d331d3e97af9c0c36e49f3cae8909a686f84f823911c683928435d93c1df09f58fa5ea2bed0d2c14458c56d609d6f4abba6b3fcbc552871a208f4f4014e438cf55b9fd61888155823b3f4f1f115565d6607126ef5e3bbddfe6e47a291979af3479ad84f23b3abcc9d5064755b8ecc2001655de59f3e9656e48b07bafe975df8a88bca53fadf3a5c98e28d9902c73eb6a0cc6c84b1037aec679c3f4524c81bdf67fc6480dfaaf00b541ad071e44283a70e289700c60be9b483ef0003f8b0a594ea81794310d6de20c385cd07906fff617152f122de98784833f4d7e5ac88d7245e61fb62ec1529a8ed12d5d6f0e1d9b284e9fd496e2ebc44a03e4594a561cc42f76b86736ccbc8ef65ebfc50e971fa5062ddf3e5bcec54ca5e567ce936552cc3c2f25f62e826380bcd993c5abd3e0751da009ffd9089d4ffb95f52733a546b220634a7ef2d6d4b5167abbfcb4ce6a4b35b1c44aa30402c8c10f2b6f4708719fd2fe4f42de758dcddc03fdef01d79ffd56c45e09aaf52511d41ad49e4b469d99558b43b0551d2b00f6238a50b38f508fcb37c918e8df699e526609fedfc052b5252f855b14177330994fa9bcfcd51e9cf8fd4f4dca4c6161926d2916d2e03ff3d4ace4e417fad293235f581e6b765d3dc3fa2cced6814d670c88185f7bf67ef85f8691f19663990b59d5c126bbf32d1119d7b4fc074b28faa69eae8d22b3f0ffb60654b71df922c0394ce7870b85f2143620317656912b106f4225178328b7d95233981d4a7722e4d51d0057a6ceb6eaa04c6c3831cd022caace77f", + "0x15175046d6aa23e2b31eb54063c8a1f7fa86ca5eff07c963d4521d4bbb040b43b43fc4d70da6c50159856240e5ba556467d801e08a34530d4da5331b89eefd73213bfbf24326f76f4dcae119e91b2b3f41c1d813d39ff9148fc1ccc89eda49b61632fb027a3b44da26e79c14867790ebc687b24332b6486e83cf6aebfcb9de10719ea12304dafcb13e85f9264a48b86e95318b0c9739fa08165f30715b5f1ce6b3cb260e0991a57b36b24d4bb4d1f4db328c627601e02ac9bae41b98a581014a84e76055049158ee70a40606bbcac46d87c5cf2d0842353ce245867f788e482d2da228b44602d1b2948f33ab45d8dac25e943f2654198cdb89753651a74c5cbf1c5f815a72ab1a0f0c89e6c5b1d7a995e8f09e7923cf2dc0ac209cd9b94e4efc64f56658ffe71fb1877c1d204ef93fcc395d7470c75a8ba2cb6a0307683539173a00637fbaee8f177930254ee1aa7aedc9bda93b2670fce36cbad32f24c2b85479bf4b564168d7cd9a5aa84c2352dddff4c1880f39fe1a2898952b308eb961f41f88ce04885525cd63c4dcb441d794557bdcabfd8dfd9fb55c8e6b67fd9563fbcec4a76e5846b6d9947f80465aff717001cce521c58e9b6f4a3f825efc09be0d4c86aa10cbdfdfa0b12a990b0597e4f78fb36174156922b9f5570b68ca52b40603a4f993d2b296b180452726c86c41f211c37dd9c998cafe78b993dbd85a68ac816c1476af6268268c953f6ca21bdd91d76f22d6bc8d91f2f0a294a54facc7adf9e598967b1b24fda59a3c5382a5c52d153d98a5e17905c0fdedf7c588333415c19eddf5a158aba55e13fa4ecddd246d63141e4cbeffcb9f465b37ff91d1927dd20dc57161fba4468e914cb6dca395e33d2ec2a7ec30e03af2ee6868afbea9a24b836cd84eb10c94d01e27727bedf51b848a3f6f98dc213f2f5dcaccd6bcf858eea8983ad0aad8d802f120396ca17f76fbf8e184052e1060ae869dc3331a7594a2920102a3a12f02ca2e4ddde241324ecbb1b201089bc9bf25056833a383d3e8ef5ee0f1562fe90f0cc4963e0667d790ff7d6fe38b22ab65ccc7e78339a749d9856760e2ce73524b754612c876092c5409700e560adb28f9e1bf4e1abca6f160b501d6b9c00b710af4e9f7fac19cf8f93b2cd02719d1b970249d97db265a3958f6cedce03a573e933b85376eecf921244fc12215db35f1c55b9a0559266207bf629dbf301a1095e742a6d8d5f019fd10e010d73f8cdd1e09cf5921fb9f0a807e36d8cb259530cbdfc5b6981939a06ff7eec76a53f90d1160cdd1c4f727fd93e8568872f1b22932ffc130793e2835a7a15ee7688e039dd1942749082089c3c216c6e458e2cd69f7dafbe22feb93b071d478dc2227205f78dab063229b431abb4c3273ba7a15331fc17945ab9b4014800867294448dae56c57c43e8d730913c3ae67b8be770dc2938a06de1c2c6d561e9abd9d02304e8eb1d5bd9d0274400712efd778a4fe0ec48228b2b43b404bfc29dbec1eedd2addf11b37f262132845a86101a89e41ec41d838a50d8b02f7e845162cd009bc1be394eccedadcc4c220d6100672eaedaad013df0f7f2df8c9fa1e6891deebdf65ad39ea771949bd49e1ef1931f0f5ff19e568e9682ee7d0fba44cd4ffb6058a1ef0828947832e38c2fc0586a43b3d8b93d6e65f510a9a7a8d07751af6cab1af5fefa39cdf45435343e57d64df994d574870bcc7084b96aca5608ee1cd88f28899e7c75f1d8c9604beb4f3bf30bc19fa14cb9dc740544f278b5014e038a69c9d3f6513047a0fc46e288bf7a616707cb09ae709c7180dec98fc8f7120033e5c4dfc6beb258c6a218ca1bd779dea0bbd46aa68ff2102185e8c161212a2667496e6edf64286c4e78cb2ce0258cf96b05cbde7f1f394ede9e753fc342baba1e4fa057a6725e3c3b0cdbf1c5ab452f23c15d67596b1fccec117a982968f4b8358a2b1f9521a920179da688edbb8cad46f0fa48a7e6d8e24768ef673e7051e8eb617965ba848a836f05fea82eaf15f2f6b9d835b163d2652f04df8ea46606786499650f37a7f42055b8af5a9366b25879fb0ea3139a670da564834b6daeb9e1296890bfc0fa4006ddcd291dda9d1f32ba6822043cfd52c6f3799d44a5fcc24ca622ab81201637b7a01f8058f60d3aa7c53ca313f0e2d1e5210a70b5c62280caab728156b4c3bc2c3c7569598e5fc57f4e7ac1c1c7f9b6668025134341a9888bec1fc1a5ee5f099bd1c005fa7ded2edf2bbcf8dbac0fe5e023ab11a8fc39ca9c8168c278d387760e856b7fc15057f62cd69535035e28ece161dd824fcfdad7d266e9d2c77e1748f702b2d9b4cbe3a5a9ec831610f2e3c2aa5506122d06f8f548fc16c5119b7805aef3107e4b64b384a4b06c2a974f35d61b5e2ca69be23ead408745c6ebec403ed38ac15afac6c26ce189b04ed9b068e9c59fd69bd01848ee3dad41bd35c820d42efd45a49050bd6e817fca8e0e267a80ab80e1c27d501210f3fd78b3259721245c04068c31949f2dacc28027a414bcce3b2b639290a74c33ef66b20a6b5734a9215dfb7d0ed8291c4b23a58fb8b1cd637510a044992d71d408bc5681401a10f2cb496eb725982206639965a8da89e110ec610fcd4868af962d36494762866004450cc2483102698ffbbe2c77d3fc53c0a2976fdaa0d0a69197f24fa583534487ea7051d4a278d7920f50120b0cbe913947ebea56e551f1ab67700cf90dd11b4f56425b9c0012f68ab4b0db6ff3554e0b63de4b181bcc7dcc4b138407a95fa72466d4feb138197d6e82668cd0a29f0a1682b141b2e395baec26a438e84af575e1d07a4857878da7aa489b862be049eb7024eeb49cd2f68f55a8ced00a549ba33b800d4ee65da05525489d3b3a8a58dfa28edd2b20ecab2a915ea350198af0e7dab76b5bcf4f39ff707d5f6c6e6aa4166a300f3fbada6596db1915e2b89aa4f490cbf42e806b73769c01f6f9266458c88b67d71dec8b47281c617e2d6b2dfd23cfc70f46468d1b7a482b1d467efa744966d9cc22a5516cb9b153194212725677b3f8a3397e2a3518ede4b22354304b733f7b4978bb595fb19b91860ed9879ce546ad9e2aa2cb77e078a0365775d8055a89a6edcc2449a1e0c9aa4a69820ed0f9c6ed723e09eccce6b36b51a702861e5397431c18e10c262b9d254ca960b287c1141d932b6a3ed29510ec4d7d796fe54b7d2a7b6ec97ed802e3635ace77896d0ba3a6fad572655d51d473961500c1fe6f135778e6b45013b2d58ca2398ca6bdf57deba5fb0608f2e8c1f54040d70ce11f5872bf8ca5cc2776eb2939f61f5dcbcc459a14f1f7c84cdaaf5781b113c35937aa80c668ef5cda697e539891a04f7a39377fce6d4712db63b48732e200dc05a4953942918b7be33f972119844787c6bf9aa2da6847d44067d1c25280cf2ada4b2cabb050099c70cd64947e296f833c8d353d46052951d31b4aaf836f71209f432550cd59cfdfa1642a4f6b495e647d9795a3a48ecccd1d910c488b59c5206f553cad1e0c9fe80affae4fe72fcc13bf0a53ca8885e4885e01d919d5ce73ee3bd78bdf69c88be935387743df559f934b08a16e0bbcbda908f410feedf61f1c46d1da423a55d82a1e18543ba399a86900b5c73f4b823ef04130585208d1cde3a774197c5f536c91b5ad104567075d75cf97619fe9e2eecf667f71a77904a03fcae185c16dc2d35e5f7948e2c431d05a3d4876af89ef1b48833f01053d414fa1ef3e332f3995fa4a76a7b06a341a7114e46ccc6e551d683bdbc51f2b7030fd2faa1eed535f56164dc41a5e2799a94b2bf2090d957bb15a416691e5add6f444066136b1e7bedc6fe50c47d25bb6b8d08ba81f92b9aa3dc0ec4e4d5b62533bab84d16439caf90fff7d82dbd880b4a866ebdc98fa10992cee4971a3775773dbcf6e8a0850fdf8bc0a844d3d80ac9f8b44397789ddb6815e3be8e2de1481e30703346ea6e84b657a3e310cd2b681e7dc59a3f8bc360a9ed53f1a685e084ef60e207636e036b4309de8964e1a5709e0c9444ef094661cb172ad38fed6c59d21abcf9bedba3d780c3d5262189cac85420a99fd8437df9381c1d39b516638ed7fe393fd733591edef4863fd649dbba8a948f98fee0dd9ac55d520b04575bb1d4d7c3f07fb2e44c296ab04239caed594161bc560fc92a8337b353102716a5dec6ff7ba798d9d3c72fe7ff2ba230545b66c8b5d5790718f6dc5d9405f9e2cd60aea2439d385146815ec55f0d4cca518d4f42f42aa1ef322e607370f2f4b75dbce68433dc6129b8a84668691e7615f5badd9d3882231bea1009a5b88fc2cf3bc97b7b01492b8d2a10f3898070b1d953f17adaf71fae6e4d2fddc1bc5baa73c725d4a2aa601ce6d16a671b4a8c432d909d8e2311a486e4348e0ae4e34b455928457b69db8cf01f6355ee32a201c4557c46952579043912e1e3af519ff3987717e4d36891332cfe2aebea6067b1fed0e0567b893c89d26729278194ffa19bff6caed28ec1a570d00090a95b282af37de50a3354a388c9c9f0cb388d7b69932102f7b8ec7c8b362245411cfad176a255ce5d7ccd5162375ac715c343183354d80463c8e2e261ac93787c037507ecc2a83f35ce5218716c5e0dc7611fb6faa2db0ae5bf2e6a5b2138a49acf59ecf33af2b959eced22b01b71518139891a9e22552c952a999021d63792066f3300036925607dc35fee7dc08446df647bbb8333cd4408c4493822fb0683b4161232feaa247f346af73ce708a62ab3a1f657cfeaca2b8a67a14c3054606587f321e2f1b2470d0c735958115a394789d256fee28653a53a3a4326d5245e278929d687b0b5129a983a2bf8557cba84bfde188051a870bf856424876312155683d9c0d0b66d53eccbe364348ad12e7a633e21d46d8ec2b83a874f5cd0a20b641e27010b433524935df16ecdcac972f6e153752d4ab9cd9488181b09b6fdfe17a3b1bb11031dbd8b520c91ab4eb126972e3f70e192d56cd96d854e66d3ece102811e4c018ad796f2904bc6ccbf84b3f8cdebb1e4cf90e5d1deef9aafcc4affd7339d706e12caa4b3ea2bff41ab0a031e0031f5a755e696e6a9a25fa61081b5c865843b4326ddd029dd18703417c83f1252f44e4b6304239e097ac87e9d6fd9e52613ae9ecfef7eb787f2a80aef9fa100d025177f2a229dad1c90820dac8140f09ce144962a7d159d3b0a5d0d5d41e0119f9edc01b6ddfb4afd2d998dadf753124e4ec9e24e2b7a5fb6159521eab9c608e07c7cec9c2dca66dbd6051d406087e4c1d2192f05dea0916e18a629e2c379a4bed0f8bd99cc9098d190243754e06668cfbd76aab121f4cb34fdff6ddba44d3a63afa4833a1068674accba1b36481aa8e2474e6a49aff37c3aee5c523472c2aab9f4161058425b5ffc5e80cf56fdc02e19c231c8fcda5e96b378cff0e41ed444fb5a2de05166d9470592c4fbb284f1375615471de3723e88fcaa8957ffc9a2f7fe85e3a8d5358c72c378caff8c664b3d96a3a9e83edfd0f0df071140f14d68a1390b9289cb015aaf026a3d16d1a7d84e65a4bc23163ab4dfe35030b9cf35d0a10807e751e8e0734622d2f26b3ef4bd8d3b2c488a26d1c288abfdf03aae47c43c39d79f0fc3c43aa2dfb92ebcfb558e7f874235d8a422e1b087a690d98ac94cba111fa69d0331622165f51be80327f57aa82abaf2e5b37c286be68d2ef0a9ba6f6b458bf47247dd3a39799b98ff56e12f3dbe349d0647fd2fc1c88424f2c9a05c3426cf7926dac3b5a8cb527e0252b6c212417b35bffc3e5aeaddbcaae74305567a4126f6501880fa04999c20f358c996273d6a411e7b414948c541e06da0d9cef6bac1561312cfec2955a84cf00bd76e68a728f194a7661c3114b8e916678291d2f9eb9fc026843c118b40756ebbe9d45f6832e307722f233f1fcf23960ca9387ffd36437983d0ac35b83788d7ee3cc2382642de4c6441b5aab0724e100f1066fad36c9aaf3629f6dd84a14df3f529d48b5b5db129d5d3a6b9ff10095a1eee219dc3abdcedec2737a6baf3abe748889a8a6d7f196a46260529fa209ebb857aad72f53c87f01fcee3bc1fc0d55bad54318a073655bf33bcc9f1ce6860613d64003077bbf1a4ae211fabda0a3f47cdb5ca47af34d44994535fde4ec420b38a7799e40ae71bf9dfae85077acc42a8e133ac78608d99f38d1e5f0ebcad1fe0b1ef6608c6e648c6800cffa0e573e9f52485cf71f224f11aba2a5f9cef6695a511f5454a13fa0e50d627fb0a27bc21a4319f647c0fb27286273744d98ce4ccfdda4ac57812c8d1869c3f80890155859c67bd215860d2f15276f14c5c312bffffe3b6224a141dfee86782f837ec85b8abb358bfaa217b82f19b764beb064912ec3853fae650e9302810e9023fd5b10a067630f80189ce33c4fe08bff7acf382798b8e5f8e82afae4ebc2514f0437bfd0d9f4794e7c63f3aa4b72f2e4ab3d77e0f81e8bbc61aed76a990799cf57ea68eb452c38ce3af8ae32886a0d645400949bb0940974dab68caf88046a2698a6056245228078f42ad890b9b8f8ace74a2482900c3dae1de454a1bd136b9fcdc2552b6a4317501f8baf4910c2e1749db46304530bb2bcdedd9228624477c65a3842de10cd683c0bf388a8a7df41333abb1c7ace2ca4192fc92c3c03d8002e8f26cda8e955ec40c5fd6f6d88dde8dbda3e21c8869b4c1f42d7f874f4c643af864d92044242dcca1a89dcda207cd7dfc802530c249a80ea59b739f2e439488e9c95d74ab34f3c8f2b387715d8f1e97e6a2e3c9252ff9f82791e2ba1780fb52b7d872d8a7c0d30b38df3ed076f6452b41acf379216b4d3a021469e39495c722eccd19f3f785ea1380565d83c3572e34713552a7dac369cb0ee6ba6810ae51b4f68c675d550fc36e9347cac60b4ab2ace9a14cad6a417b0e3674f55aaada6432f91db820951f09a397cecc25d59155ba157c477e0087d2a73b0b687d7474c84e6962b079def1b11df6aac6b44cea7071d0002a796fba0096815ebc12430bc632f46f41ff0ffb05d11d07612712ccfada69fcdd6c2784ffd84a33a1cb9418a055ef718c86a43b8fbb2704b73a2eaed0f4d4f091a248a6c852b0a733fbc6e83ad8a019d68d5f18da3d9dceedef16ed65f0890ff2ff0886b6056116e713ed924129a562ef902b15f2171b2648fdf785139e56bdb2c2fc8d74903d281b16577207f0d3897b06e5eb27bf2d77a0ce52b9d6ca4222db2b352ce08a6b10be571e0ddc7c4474c45afffde6969df3fa03f5fea98996d69b7b13d80ce7edaed136a40f7091cb3e3bde1288e1a42cf85dbe4fbdb96d25567e2356fb3e4ed8b0cb58498bc3f0fda95d16d2a414a9903642ad39d0ab3d12ee36fff9d42ac1e27d10a9d62afa24d9fc1d8c561cca908b8b878306284b86487feab7ebe99eba34da88f476606de66816a4d041bd794290f9ee6e8c749cb62c9bbfaf9063b6ddfc08472570e2c117cb8b4db888b5b18481afb8cbfcccd125bd083701b333dee4ef25a23e7d53fa21ed76a02f78f2a490079f55103fd7a347ef6a2fa68b5c85c185ea1ef357493e046d87b43380267eabfa577cd59002c9e4cf6c71769139a666fdad8aeec462d778c1779e463ae0a6466e9b23d524ab3a0d386882076bf8657aeff007f9b1a48af0a6c183fae275d097d3d978bb2f9555a83c7dc1f8261ef473cae1e9182d9d4829a81b5a1c10081afc1195d5fb09d4971e7679f3b4da6519b9a80bb05f8d8f27e4c97cdbf2235ea93fd460145888c3c9eccf611add05ab9ce33a964d9fc7579764cfd81b282e3df926256c1e024b3d0069deb5749e0cf4797c5542ae1d27174049907198920d3fbade849a033c8491968fdcbf9994440b350802b22d7a507a2de38ae7d699ca0afe2654fe6efe8a51e11f5466285cf39c6bb35f4e5769904f5f7d7bebe40ded8bd505a2d9dddb5755ead2a3e64872dd8dc0c31ae12aace431373f6568b03f2babeb0aa25154ff10d48dfff7cb17975f6694a92afc8c431d0d8641359bc7efbd39e1ac39f60a51617c1aa954c63ecb85a71fb46772cd22396d2667db2cbb7a32a1b1cdce0d7e4fbd2a2af032b740e17450d26faeae9f050ffc4f9b29256dda139491f5c769359616838344cab472614baed9d95aaabbf450b24b87c289fc7418b10218fbbf44b211ec3ffd6ea1e9a3756d1a22efca3d995779c582b140c090a62acb72e111ec5f133f7047d18a18832770fcf77940663a5528c80a381a78ee37c2d6974f27763ea127ddc6e405df1100d115612298ea567e4866621c89ed064aff551b0102b3f40e4730f80ef426d3774d392584bf7bca430d144de80c49222b93c1b9e03a8dee938e831a14725772f4f69e67b8383539876e89b01410f3528818f41f2e9223b1d5161cd92ce3c44847577e60f05776efbf9f84488861894f99c4dabd98a10d5d9be571b1b97a52c32b3b7db5c9f9c4acb1165540bf39e79c0d4298f6526add8f092b78f4864dfa36a42779013bdbf485ff145cc90a2039d8728abaa1d2878523d0060338b0d4ec1ae9f186f3c6031ea9fe0e31ed047cd33a5b4afc8325cb473fe64a8ceaeb9bb58829690f07b0847dd70a03e8194ba2612b7b5e4970b1de9e685f6d8e3ff7dd2a2392be95a065bdb19a088870d27d05d5bd2d64dd1252c6134acdfab79258ea375a354c0cfdc34c90dec84a7b5eaa863c2c8e6c4ae858eac36bd7ed3b57970220d924ec7aa2d8973d9f276b60594194f5aa50b72b12dd21c9fce937447eb99a76384ac4330f20e3e9c1cab85b6a679dbf6c28d59b858974a8ab29ca7a1b16b6f1af2398e8b234a13d1d2fe151023ece41c1e5eca6670158f24f84ff9055ecc19f2fb23961d21eedeba960e1e1c8d2aed82c48defdaf9988c5eac24e95e137d29d382de5c1b22f013e1c84289a8b7f59d21840642b4f2a4a3b1cc186deaeeda8866e7b4777ccce1249c33daf619fd923cd43bf7146a58777bf49d746eb4ebf3023ef4fc8e394b550cb2aa21370ed0273a896f9007f2d32d7f3f591d47e1cab5c68cb470e1da7d1dc70252e0d3cecd58a90202e094b6c3ac60e1e0254ac8ca84ea6f394ac1561b36d7445da08493bc4cbe2636d587dd1db88f636fb03bde36b7e5c68f5a1440e200c1d15ae4b9941f1754e059b87ddee462c49e72e0d36f1a4a139c687bd244304e8e825b8915ee4a99688fbcab6d6928177adf04903e2ca0a2351d36698afc9a584b9c898eee50211c9e09d31d1c9dccfd701ab6b89d7fe856ee23bf49de06647489cc003bcf86e53fbb2aab6ea78d917a2931970385bd60c8474e6be1027ae2b4dd35f922f6c3c96228f5106dfd1a15c66d46b9c07f1be5d02ba7c9bf41a13b33618c97ddd7c9264a764207ba6317c96cc622939a867b37e3ecde137a780b05f33142f45497d984add4037693eebd179f04a9feb58c0695c6bc13b06099e9a99aefc32b7a9176e03d9b1230010c7930ccb95ac093f5967484352af3fa2abdad5640c589cfd5f8d4e6c390b2e1fcf836f6beeccaf419f3b736d2b5a5fac35626484d9d21aba4ef96526bd93fde519ace8bacebb036c6d7d92373710d47942407d043b3654cf553e82c550138e0731c3c586470f619bdd2e2fddd477d35dcd017e2d3fa8fdff48a703c67e7d03b1da8974888e434a831ed2e2838ecad037330b04bb380ed517d38222d2bd58f66e025c959ffd642fc4b264e9f8f02612e418193831a075f6aa5e198d14faf26ba9fe4480075e0d102a8bd897d53d8104dc4f8842948b2a0f1325f98b426b696761190debfd89734e6d94dd81dd9acaeb18fa26fd5fcc42ad61e20180f26d6baf04377d876dc963ebce1b64a8ed789b129c58e3b37fc6cbd1f183c849a68889b9c13237515788e7039bbd83b5aebabf7e3a250aad1919fe93602561e422b432e6db63c7917676be2a0d21dcdb3147b3cadf2ccd4cb0806297d744ea869527a62d532c42b1ba98a9de487d579ab3713256b9858246e32fa567238c6c25ae12f9e90e596325efffd58eeaf5ecb739b5c25fc0927e1e0e4929caccc70a96d83140c3bfc4509be72e0c954122278a66db4bf68ce08b0ab78c021b8e33637ad07385dacfd3c0c17ccbaf955ed5c771f3d25e1a0067a99464b79158ce4285c09df49e0f93e3852821df854cb71bbd3497f2f5cd6e10074c63df6dea269416fa69f6910ff6b0bceff386a63f042c346a90c22c4e326dccb4f34ff89ebc2f7057b8487fd4d04b8728f33de5c41f80de7029e022b15ae01a2849947c0ba70a23b39eb543073dcd35399ebc00b6ba15373c657068416e66c9c92d9dae199aaa99273d5c4eb8a9b3ffcc97dd3af413d4504413b9aacc151bd81e0e5980e53db89d908691cee3f3d2d7535ceefd2f841372fb1b1fb5d0404251a9bb2c232e121a6bd257293136e9176b7a805dd4162159ce38b0661891c29a7cf8aba9668fbd0eaf595dd847ccdbc43818e0b349bce964e8d20eab1e0f77ca6a7ac7afd40cbed3f2fb23d2f193db301cab11254264694ac4552f0cf8d99d1c36f02f245c5fdb4cb24f34705bd7dc4a84e750b67e43455811d4b126f5a078c0c38ef28f243c713058e15568e1b710e53f0cc2e760d5111c0c9e52c7eca652779743ea5933aa22c96ccc5e8d6503a0423df62768e6b77730e3d097c1feb98b0bb5fa5f6b7ee89d70e84fd1e71d7efed79cbd722f545751e1ff8582931d8f5485e79272ce587311d67859840050ee9677e97fa366cce3b26dc1a6cb9653a4fa53139485ca6bc40be51b8293772ae13e0f24229f88642c59361803498ec3fed910b525d20a864efac5eecc3127ed8271c5c0bca730e3308e2c76f5e98aad1cf68d51da615e581718eedbb3d82169203b277faf0f775a3b183beab386c0207f09eea0c065be292853ef0ea725d21dff08f025dd3975ff3025cf6ea232b2d1a1437c7326118fc3f1f4b7deb281eddd21b71cfdb9fa930c41c445c03a0d4225f2f4d064aa3f5c1b5987832728763d13c086c2d31af4ab64c34892352ccc412ff358eb0c96a9f633e0d3b6744896e4fd368699eb4c6d8d9ccac6ba02a98416c7ac2bcdae52a472dec7f3f2faa64a582fd53a2dd3653766513d39ef255eff37633e92b94955823146739e22c2eae13119f742836e8178bd84705cc7fede5657b831c4525f8dfeb522f58b83395e3e44b877f5d2943ca434c6a65113e1a46897b1c12099eb3b05c16e7e606bb3720edef65e87a6535790c683bd17dce82e9317bb93088b426a9b93975ec482027f72176678b0a0c016b1b667ebe966772f797585f2b68f38789451313d2abb9c8d21df4dac26d489052e527c7c6d38f0278d634b01561384ce1ca50972b93b8d0c49d8c832a5636355aa65a462222a8d1ab6e6c136bc2826e1a15e48f6617dcc664047077244e181087ddab450d6346103fc41fb438ec1173df77fffc2480f37e36d96cae0d2fde9565ce0d4618ea5fefbd9f4b98d8d6d33f1a4522bf10ce302f154410a2f2a9fbf0c4ff0bf2ae0144b9a7ac715272882324b359350ac5334b0e4b9556a17ec08e3684bb2f56b663661f1dfcd00fc4a0d7a90890b76f039571a350beebb9d24cd6a919927411ffc3f9866d812e058dd0a009d24afa51ca100d32aad4fb58eb77f88789d7cc6f6c435a5eb6942d7c505db85cbfed6dd20a7253ebfc9193053e431916f720b6a01dfd47c55e7238030fa2dee5b362fe8cacbea9cf40d590d64202c1ebd7cadd7b9a7ef11179baf881018ba90be8977fb245aad669e7212386afdc92b31673d5850145cefcfaf05f34581b23de99fb29546e2005ceea1adc44444c53dc1f7ed7267949497d4cfe3fce7de6b741340427f2ddc09686fb0c50ae2ca33ef4e7929b45b2703ba1e4ae734965977519feac2d9f925dc6586f6446812184afa8781b3bb81e1936e98a319720f76c990a74f02e4b197c1a0b26357afda96615a476c8253d9a939df35a9b50f8c8b56eb368501207afd8a79754b4ea0816163bc45f0b26eea8a39380d76428f9e8587d6fe85382535be123740abcbb7e0c32dd62f69c755f1a02b21831e8f15bac500803a700c9cc5337c7d94f4ba649d3ae90aa6bf7e1dcd4dd94e063e8c3ea1e29dcc76e65bcc5f1340037ef03f92bc953f93160d90077c8543563f7078178e7866d35a213bba34260f53457aa2857e33b5057bfc774d28dfb135dfa4ff090339c47de61a0b80dc4fad7fa85aaf03463573a16cf8741eb005b33d24ba965e382b4ca3c52245a402d7606999992030463e9ee518ba4303e3c72e2f86168fa29f9ac3ae94dbc22193ff9fec574934b2a4a0aaecd88ee450ab52f57c386bf558f33771d138a0bb0aa74df2157e203bb5eb425874d29f8439cddf71812f14605d57c98e957d4b4066c1636441fc5deac0cd97a6f99df9940d69e233bd9387965bca1ab04519ae1ee54a240121d2d40d5920a9ca85c9f6b49652e8067c263391a7495dd11735cbf6079b3f541239eecc13f77f3761b5a4f185743cdb8152f49170c8c6f901807ff00f6937f95646fc8ea2df03b28b997e7d7016f4065f34ad238322f37cad16d57ad3f6cbcad8dee5f52611c036a48ce1bf86f6c023928f2df6bb9171e1254ceff182893bfac56dc5db6c8282ff01f1a9512c28caee026a9e266adc4a352a2d1357929da4ea8b6eb175004b8776b6d5c44df3803d603f0f52df2f4de56ec48fbb941cbd166ec22280125148fe6cfc093dd38d9b77e2ff3917ac0c4b65ee4c6d751f131eab30d848a35e74f3e5beb49775531dc739f9032ee64d7648ef4627e8447ee2b0419ccca8ff3654ad00b4cc2fa68365dafa57e33e1eb870a74e681c65ce6724d7f2ec54e571b8e825afd763d661646f803f2d585fdf4f6c822156bf8b0008aed11bdf660aab5fa03268d6e591a20334a4c5922ec5ec735daa0f7c6916d6b1b16c04411bc5169155908e98889ee8ff984c4a3996eb38feac217157bc6817f08b916769abc4807c7706f979675542e238a140de6e2e4de8812b18eb81ba69a58bc68bbdf8ab101b85995ed58a7100b3c3d08c8c0b20e261ac218935ae6dc9c75af2babb8a0e8ec20f54a98480066fa5600df785ceb5a409673a4e994c6a76b783bba971955b9032b03cb16acb10612a28c87b69fdff8e9cb13056af27a767085a0b200765780a4e02a113bfeb0fa2e0b99d18e2fe79e40d9a0d684a3a4441939d2df1df344fcd0addf42b0a4e2f06df4009b024a04f04a341758b81c57b55524051c5a6ac1a7af7046d26ff6741db2f85c4285707aad6f43c7131c058d3c1b59bfe3d43bbebb0a1a7c25499225dd24c03f3580e29fd3fa859546da74dc0fe306be60ddf0d863cfdddfb660056bd2afe48844d0e773a09c4ce762af8304a92b27428c7eaefb4191f342d5adc1bc1682e67f8546ebc309e9013e226c272e9ef33996a8f077a91906e71f657b6473678f30a9ea2665e957d902c3367962fa744112dfb92241a05e87783b46ea4cfbea0f2d876ba8956a71490746d44dc2b7de9eb289d637d1ba6d930d514b6d825348fb69b9867b0f08e3781a70f6f72d597d9839e81f05753c6a4cb1ac034ceb125094cd2b263d1201d78a232d80980408ea3edecff39681f014f8a4d4f023d36d63dbda477104b598fd08fe8d0ee68b6b37a7fc4970aaa6c7758180a42461c1f51a19065ae5d8e025e05e22a59fabaeff926b32aab23411dddbf6e27baeca9f0d6c59199d20361b38375cde1ffc440b15fa288b9b53d95d0d8b08b362b0f6304cb1e9a89d288f209ba3b61d9e2823525430febcf681745b89698eef446fcfd64687dd97e798c64e439984c20a024ef4de46147573c6959d0e230110a83317a97e648cac2f13b6df6c62c38d768edd21670c11b486eafddeaf8200f57b5ae0db693011356b7eaaf377e0d197377a7f18d9afa33a00b523345737ce68e9871276d3e2cbbb871ee36b4b17f5584faff6c16fb8fc05392fb20d6cd2cf2f4088e8570b62ddcbb4521695489fd54159f396a24e374fdce4ed090b47930fa9660d7391a06bafc571d4eba119d1fde383feca17fbbf58e9d868b99c5d7dbbfe6c211609a0506bc3d1a57ff5e4dd5faa568c90e64e46d16a59c50b774f4aa5e625d9087291b3818da779e33daf0dce21467df819be79fe6cc09678d43f04c4f2e68bd592ac43239f8b449a5ef60c81d1583ea8310a9722978f012e882478b271d297dddb00a6c93aeed11f2bcf8997a35e525ba0bcf207083f5d92e0f43a2cdf4c84d44d895aaf8ea7ac5df10f608ddd7c065d9a02b07b425be9b859e2af96e47f2640b0667052e9b76635d4513bc9a810121134c430cd29c46aed1f055974e90c46ff17ba49f7fd2950fbf5d2e4132b2a206bd010cd540e1f8e2e6226bff2335122bebdd984243949f9f972836a162f220777df3a49e8c9cdbcae7492685d99dd228224da5d25259e70eb2bc7ebe45c0cc1d0ec3c5367ecfca954c31caaa8be03f02390a58088de62098260b61f6f02080e29fe410932f89a3d3a94bf98e8e89a2acccb1b51a198619be119e797116cb107c8416b2cadae4aab2f9a8105d85d5efc7d40f42307326f992365095a05cd35d3060d2d2cc26ca27336578b38565487c4895b5cc015d9f30fd35de0a9ebb7cb0dd02adda75f974ac6054f9613e474843618458cc76ac03399720862c448279285297a4c5df317cd3b8709205f28eaf05aa6e6cb4c69e34999f4fc07dc0316184fa6dc85bcf5e827265be50a496c012d058241a2fdbada06a043e19addeaa70e4ef0740c825db274c752ba96861f5b3a7a501529b7c7c025a3bbb302642be2e7d5463533ca29763796f44bdb1e52abbd3788d6be4a402689dface5e5c8dbf3631df8bd6709da4c2657fc8b2e9e3b0a4804f4f4908198167294dc45216f730e4fdeed8b8a36f4317c3cd8ac2056b5d449b43672b823852ce37702bb623b4dcef1a01e77ae3d81e0286b2a04f858be1c515940c8e2e484b6a1b74cce70ae2b33f6e01881d9828fbf6f3e49bdd612f9a975e3da1fc19d52eb8696da05e93bb128c36f7ef3a0d5addec762c15bf4bd2a8a14971fd7b726742e133a400f7f47e69e903685cebab772020f69cf0d9572bc313d1b0058887db064750808ba06aab732b6c07787de41f7c061c3e5cea83e3e2c724fbf3eef9c9258780b2ec2d2be7466f6c431178f4357ae2a352c5a3c84e15c9f8976d07092e82e0829a26a32c1516ac83aa458a87336993aa0fdec25d9fcce67578ec1cdeb46eb41a6cae717b1e774e26657b7c9a837d7fbc067d997c589162d60484cda8a83043f56fd99310db0ab86b0e32df81985a112dcade8820aa540728f3897b14b3a090f0a091800708e9b54ff769411994b81fc97c58df28b13547c41c46b7fae4a549153ad09b3844441a1d7513feb913ccc803dd9e7cc96ba6152c6a93c5ae357d1207120d2d6d7fba197694aed355a0c310462ca94a0fc23257f31777ce72b47d14344880a1dbfbff3a34d4b068107f453118fa8536a6bfc3436171044c483c5eed18984ccc9f20056ebb6d129f791327ba8d23b777c7a97c3be892d49ece5c1024226a3cc8f7a121ad27a6d0dae83874b28447e28f2206bef4564d9249952ed28123deb44e53ead9bd26a46aba3d5b794e1711e7958ad92a37ab2f3e953ee42d47bf653af1be76da9262496c0c2e40c2ea85bff4577e14a0895ceb10b333079f3e54a4850c4ab537d05a7299c889ad4e2f216b7e963887483aba118947e1a9325c7e72c912b6c424578bde13c26fede6e5c7911bf47b81849774c85aa34e652fee945d22af5a4833b077834c03664018b972e8c7384f4df7bea60276a285fbd5a4555042023dd414fc1ccac20655c9609286fda29209097dd39bf8208b56ba0c5dab6fd8711be0e5d60b366449b4df9027325616ca303b30f3c1bed4b3fe009ec4c59ef2831525cf78bef945b946a0b12f8aebdefd264c96340291552ffcbcc2120717fe28ad505bf7c18fb8eec49b3a0c58f3c25efd1123cbf7378a6cce101f6d63144e8551ac44b825376fe07f658447a5e609d636dedfb85e5eba8e67c81d75c614bcc2ac3baa42da5710f6bba692a65e7613a107a5c8840261544f3066cc970db96599d7bea4822b36e0b5e4dd5949705a932964385588201f1f3ad31a527025f983e47e7bcc7cf4e840ef6359366f9f856e352c13216b132501c018c547bb18bbb878d367ee99527da45dd771cc0b210bb72f24d52ce721a55af8377635fe7c9dae9aa2fde671591317e749fecab7c59df42c46076b18114f7239568027533f4c7dcc8017136af605802284204dbaa9ffc333bf15464075f82bc91a82468e5fcc6853167305b7483b5c911e86b71007d01b7431048e0e1c6161dd986ff0312771072e472f6560814c3f6421da8e2a15a11b0594ecee373962632a102905776de522118e5031e38668ea54e1a4adeb547022988b809f3e296fb66cf7c15eaeab52b6072097ca047b4390af00c604c8745dfd3bc9140e8e44d2f2c52ee91ff5818b17201f1e8e237d878dfe58a015a3a32675d19715b147f0432ceb4744bed6324ed0e4051b4a687c116255d22c69566cb8b8f2c196aef588dc99be7c34f7e38bf5a27ae70b0a23026712e854c4b1c285af3433d2f1e5984338a5c7631eb6734876a85c850914be343f9002740b2d4797a7a2611f54e69ddb46017a79a34ce5773013469b46d2cc364b4025a431fbdea17ae47d94a74d063ad0d293b5c7fd8b288f8b9dab842cf2541bdf8af243d47002a517f2e8a2ec82f63a3aaccefe85541439b2428776f351646c0557275b7c4d7f2db9e473ebd93e4740a280288ce71e6cb2be2738a38e09e3e80d8caf7c0e3d882f573d3588990c2867ea6123255787ad95d6c5f6746691cdc527af1748c3b8b0cff9a20469ad6baac0efb5398e2aa1c27dac2cd2725ab1a209fadb9d8d4e8e0238b217d2e216926fa1e71cd7ea3243bbebdb58acdc5797eb866ec1801563a885cdff8f7c5edf60252e6c0087805cf02ef1800a105faeafdf4b7968029536d16db7738ee46f72ad74cf0559b1d3c6629b66f326925fc2e291b3921253b107a1d5582300e97d78ca0cb9ee5214dbe8d437b3b6d9b71e8f88584a5938c9455f07eac604cba214bf16c99a155a887c8f4188768ebedbe3c777f204857fe0bf1e38dca2ac5f5a5b77a814f83f2b796d88aa84dd75c0a235fdc2caa8555ae0934e9d19f2a244511a029318a1ff6850731c4ceabdd10e4bb177730205166bd9773217d355e952c8430fdc45e235efce15aeebf84c2f0b88a105b31d3b50e692f8757e78dfa0936c8b6a317ed9512973e9f94c8bf434a47ff5c99b1ad508f04dc4e2ca0a9e32aa9d222bbc6d94b5c4f038ef40583116a0217ee08432ed34295052953ea66341b5f6a8da11b7871ab0f1d7c8208ac500650e31e9f5ceb824c2cd67ddeb119bd0a5caaafd50d6d07ae6900fe7d92f3197918e12858525eba9657b6329c4faa7f9818e667e7009f61b688197096e4ddf8ca33cbacaf3121652144ce3782abc13105a56737f81f58a5719a18719f4a956e8d7d782fa984c187a06bd2fb2a9009be35109bc6cb789b50ee27b56555da10708599e599683dc8b56ae7a3f66141d0c585bc7d5c6838cfb2f21898f2319675e625b3c1b65a4c9d99b7c2751ec0a76e186a8c936947ab086da35b99835066742ddac1b4b5eda27b702ee6397258a3a83de31037fe15e378fa796a63c862998396201c1dacd9a4c08bc47611737457dff0bf23d5520524b3238b2adc34b5df36e474633111f94980d1ebc15da66081559faf97873eab7bc88a1ddc677e43f2a4d20a134b42b1726d3c1111d813492cf6ec24e88dc272237e2190173821dd57be8b583b9dffea30d4586bfec7c92554062f0813567e9c9036b090105edb59fab4307134c2eb9a079ac718250958b749eaf239062339cf537f53a2994431de7d18562f515a0eda62f6bf8e46125593e9af73e54ae15e382a98f9f3a18bea2f8c17852fdd6c558ecadb8a573f99d940f85e25a3d8657a3ce2b1e68627fc901a866aba9aef5b11a391d8052165c0026535292f6b3a26c0b7f51531a5d770f2e34cc8e5c0dc0274d1038c211b28f371fff773eb576f7485cefbe147a8d71ca5d0156a6c83500617f953ab66a611b9cbb6655d6838316cc34d5484660f708f7eb8790fa78f5b747708cdf76b527acf393597cfe9f28a0a9a9baeb123e6933019ab32286269fd91737507765f2c91cbe7943b6c64b7e85bcb374e1de57a7eb756a439455e45f51ad04525ac835d8e5f88dc8c9b04020c483bcc2ed86765e149d65036b7cfb3e347b5a756abae192b1fd08ba7d1a86d8d4676cd69dd3add5c8782e2724cdf1a07a62f1a292fc8ddb848f93797ad6156d6312aab7ffc40603cc205f5c5742a011d2bae25632b4ffe71a93f38aaedf84bbc81a790660432a9b10b4d8224ae402832f786a46eb7d585dd2c6462de546554287266b580cc1cf607870ee7cd0027776be5709b93647f6360082dd7788559fe73fd7f3ddc7adc9e89ac3ff7437ed7b4116406a285b288e955bde2de1a85b543661d31aa5e31a6fb11c29a22812abb126a0b4adb0584bc9b495dd2d5e516113cfa785edabd1d829b85d420a91e73368725121f7e9b2bfd4d2c95cd288058369f59800c9b68c2cdcaaaea93df5c5c1cf8700dceeda4e6c2929e05a8610d17a417b5fbe5c7c030b4691cfffb833fd83535f061836243639379aa57bd436b210d65e43cb8fb48d7bc12518c22223050bdc22d6ace21e33b8e9d864e68f84575d84ef876f6d0a7783d91f01a1888d845e773499e23476229e5833cd08b4bd5849f66283a35b2a2dae2a7f14faf4a271455d5eff75a1c180b5e4a4c800af854fbb19ac6b5b13a72be2a273a6dff59b045a267e4642f023fcad1a5a71050048a569198222dc62612beea53bb14e4a5dba9d8a9a859c3e8828cae309edec92ee76375ff86ff77d46ebcc99d44637bd2934efaf3097d1958b69f740995ca666a2230c862babeea5392b0c3a58625a9fc66c87c21a0f49a08f0063bc1a37a1c6b4d40a81cae12ea0733b6a79400ff948e4bbfc50b8711920b93972b9a70616542c3fb68f0449464d6457899c1d1d727247b8ab4d4dcfbb08303230316e6f3bd0b7d060f7d5b5ceae8753c90a8a9cb927f15c21801cf828aed094093d49b7126a99febd87f7cbf33fda310d9305021c88d7d113763406617f826e542c20c85a48f54e0b0e6ea919945cfdd92438087007ba24148d5514633ed592b8996f4c9c2a33f97bcb2eb5a99d9096e30b20ef135d7a666f9c357e41eaa1b3f75a26ef90c262415d0aa791157b65ac5fa6c97efa6ca9758e9880688fd2790bb29efaf1493af8a37f8ddcc57174faf878b092b59565a26232f95df2a5894306a5aac76686c3e7a26f3f55faec5ad3e885499b65a8dbc94e4d16b29839af96fa7d1ee88ac3152963ab3595dc26e23000917d01fd655bd49a84e6cfc2695771c7bedbedcd37e1834f9de1f9ecec58817a36d7a4f10fe32bc25156d2ec7fb0b7fc91e77435b75a938a850d1a4019f0e594b4144a4409a82a8f00b2627f1e6ea7be06b72b2053b54d2a397fb3dfe779e466853cf87888134c2930a6be7dd5167350aed0a83fe78fb5e107593b0d7ebca2879b7192037cf9853435c36cd939c6bf3bc52e8434bdb8111bb6227a85d3c50256053345702e17b7d514483de070c8251765b9ef54f944628fc08e24227d22475fb6449b30bdcea085275f8a4fa486df54d5e9bcce9d9b1c635c55ced8fb6191c5cf9f2b81c2608fde79962e403dd5050d2c466d24d61d1c31a2c42f6c3170bc49277e1d183ebef6a8bcbfeb59fbb692cd08c2f006aec04004184c0030ec6a09dbd13d2f15f99ac21321d95d216b756093cc6aaac00b9ba13a347ccd4d1b99e68bc5bd573f6643b3caa136315cb07f18892194267170d3c699da532f8038bc505b2aee5e9e3c3a0bba126d681c8c9b46eab3f929a9bb38913a3ff7b6379fa423445bfcdd895f10c9fca4316567a7cb9f328833990507748f45e6c9e131d68b25c64165f9a806d102c474960f40a843a716349f6af33aabd0236378021f55cad8b2a8ff8dff17ae0588e8f30ad44aaafa3ef87151485a1dbc5275e4af4e3feebfd65d85c8f35a0ab8a445b3db4c09a7508a44431cd8b365e53da158b7b3d9ef5df2af7d8f3ff29fe19196b41cad064061850203f6ffe45f7653741289b9b2d6123cfc3ba7db5a5364f95709665d7fcc15e2ecceec1b1308b5c60fe2133d8c2a58ba666178a35660ac9ed8f9f63b1ba46b6788d58aed05c7d34e71a256db6167b54d8e1e1ec42051a7f53de038d6bdb59216cbdfbc369b20cd12a97ed399008ca13b288513782db95d2f5edb876bdfe5f0c784a0def8f1fc0216d2d7928501b2db9ed8298f44a89f25ee33add89aaa765f44a36163aa514e3f9b9c509011bf300cd7a4aea563670ad7c3bbb623c39bfb7b6ec15e2b4a70612abfdfff7cd4fdc04517d31d20e6b3a21a8ae5989c467120c0b1d92bdda81efd6b4baad553cf0438be45ed9d946234f6a3e206f29d164cf39eabaea041271cb551ba656607e163a3a0e01bb7ffdce615b42584fce109a0c82e30f6f021f8e1c093712b4c319d9f85bcd59a27d3782e1811b18bda091454068a278061da464678e0f7836ac4be057bfd4052e5fc413873a819172214436c71a270aa9560950b582939f7fa9ecfb552811a653688f6ecdd503339ab32abf626b7381e71a6505136f3fdfe560fe3b93505d30d7cbb61c75cce5f956f7ff1bb457ae015f5d404b12c505acf30f4d69d97785b5d731e300ff0337fd3bf45d51c62100e34808506147eb893ae7dece3e9084fc80428e9987342364b2d213b00983f8a81aecba7d03cc5900433403ab6f46b4e4e05c4781579ef6ab7f16ec790f3d30149329d8d944bec6451101b212592edc4d573dacd8ac0de52c8df9d9bccc260bea20efe450b8bd62ffeaa9e2553a9d39cb6f50bb911913747c69df6b86a6d81162a0c4363e7e6f25d67d3ae1ddf08ed2c2f6d538d15889dcfa02209cf122cefb572c43f235d7fc291f78f6b0f7801f6618da5f15ca4108af54ab8bdb2487e827e54e9859a0cd931b83a6d43e982712ed158d56242fab7188e456deeb1602eba48081066b0061e4b176f1ff63844c4daab3637522b53d66d6e60d4f8a2488ffc9e75061cfff5ea53d965d56b8866f5acba1fb4d0c5fc9ceabb19106eac03a2f5f51ff94189abf0e4536c2eb349d16e898b573c1c48eae55a5628ca0feca96ed55ad8d1d5001eb5c30bb4184a648d648379ce4880b1451e9ddb43dae9651ab8b11f3aa8cd515c951068aaf1df067c8f0f6f447afc3b3583ef3f07b3446d049c23fc026088d8bdbb238a4f7641d4929fc3435bd148ae1b74b1a290c2a212f782f41ca2ac95d16edc880404c3c45da5da8cbf7e5ec9ba50ecb4333c9fe450f6cd121e4ac9f003811e0cbf2553b3c2459d7129ae53d0de904bd5013cd11382efe8d219b416a1e89c9cb3735e32b1779328f70486a654fa2a4e556c7d4350aead3aaccabb59fbe97265e1f649c8c7d00c17b79dc0791079c9149f5a7623559307455a4d19aca05b5a3f3367f1111cc8b3c68a12e174735d039b4b8ceb74d16621c1e57b34206444c4ee7b8410f1f07dc36c87bbd3edda891be36903499ae21f6707a89ed7887539d821aa26389519dc3bb328cccc3ffc9fd63a1517af9fcb4e4143f2e7eab1047f42872fe1590f6f9cd09e0a65cc52dae70c90e4e8d0ccf9d25ca2a6f12177d68b8e758450cb791e756202fe19f8c3a7ff50a56f699fe3548cbfc5c25f9fa3b87ec2f39c6a40c58c23b532212cb30ce31ed309a8ffe832e998481d9e1bbcecb96fa6206250240b77a902fe0e266e6e58b6500bcf72fbc2f998fdf0886a0f1439de491b4e627ddca670240326f82744e7bda53e379c26da0ee66b5366c9552ccf1347fbd0d6c96e6e9d2aa067669742dbc5ba1fbb208765e28b4a613204a1d25cb479e9ec6cf6a10dd9336ee19c0327acf50383386fa623ad850c932a7768f1e1ec8c35724111984db0ffea23126438041550e7d215692777d60b68d5993b71ecc791ceeec87b7305008ff7a28c4195e40e7a711122ddd503fcd3b004a83049e21abc8ec751f793659b3baf46e63488982e2c6ea684fcb7077b129ca3ef33baca4e72bde90ff9f6e7a2352347bf44e487d010e47ef4686780c78de0f3a6fa36933c699d587b65ee11f03e47f59a44937ebdeb52c6bd4477c9cbd03589270e68b72ec89e729f6f04ff04d74bfcce328c5a231c5def320cc86773c65109be689dc8ba1e6ace73585aaeff15102ff018ab6bc3cfb6b561564126a4dea09ddfb8bb93c8a5ac1ffcba8997182c1fbc13cb9a10aaec0208a89a09057c781f6de1925933468bb48bb4fc8f6db66af805f68e072dd640010353e33e6a4473fee7d6d7d72c3f6d066ba56fe50392f4f0afa90e7ea1bdbbe9440d28eeb722d00f0d56d906dd83ec0c450dfda6a9bf8d8387d37171aa92aa4c67d2603eda8d1ad59ba27663350fc540ff2f905ba4d0b094c1e0c1eec1ae971045ae18f2ccfc5996fbe4f408593ee3b79ae83a0ebd71ca1ac6c48b69ac0538b73a3046b5db92380dacd5c57b9852e0235bf030e5bd0dfed62f20ac935f9854b7a5dc7452701387325552d4a39c3e356fe22fe629e7ecb3e9d6456981fdab3e243a525aea950115342faf8700230f39d914a4d0bf94d45512e64962a9125a3d83da6d887f27cbe7a03e590da26d6805b2ed5545ce70f96eb0ccecbec1691dc1f9c9ea87b887045fca29730d94a145f611b5d1faf980e5547d09bc2420e5c4fdad8f34a68e2e59c1b3a5761aa281cc5f02154b94e6def32763a54f3862c36618d2a573e54eef132b84b24b2f30ec1e6330df05aff7d654e9faa0bf2cdf975a48812fa561c8c5ecafb3a4346845e96478c3027332314b47ccea7f48c9b4f9faeafd3d2ec1e10d5b8f4ce547c090c5ee333e0bce5892e0130125c80fc99de39c9acf5f0dd6fc4d8cfb8b4fe2f2b23c78598f55d0ec80078e5cf160fc74daaf776cfc3e1d6b563917a4dfd2358d2407ceba94ccd5a8c703b458ac7303ab38a2b077fcb2493ada065dad89bad03331582860c48200ec898285ecf86759bacab8fb13661b007749d65ec8ee7e2f690e8e5ffc34c0bffa84769a7a80dce722a0c5cf4751b86a924748501651e526b9c11bcd071423e63537fd6b1b13a7c900100ad2eed5657420db2a713d5df48b4b27f6e8cb517d1f901f82ab3ed8e93b074af39b173b03905b5d777c1e1aedcc944345bb6953cc066b39c05558fb109de91945abf018c6bd538d714fb1a7583fc23c5c23c192779d1d309bc7129ec56f7a500603afe9128f10a9c8ba99afe3b537bdb06f362d076186212fda82aada6f6329638f1ac2b8e72f88121dbcf7a4656cab438a5b134ee2be83e43f6180798df07cd67ce6f09905873d86e3e76fd6c484ca2f79ea0d68a613e4817b3bd2f8e7453714c5eda9dfc09846649f646ffdb10d58b9fbfe5393bd3799d22af55009115cd23b7674c9f918471e27e10c7dc8a575367c77593670d1b96e11148e478bd6a59d4d090e58a20aa23795f2917553496d5c60f3c966d1bfe626a47abfb3946bce24e514a291ec35d7f4d1806cf0edf1f26474171bedc87d8fec35daba709041a77ab057b97dc1f6380f1dd2fbf0ef660d022bba5284a8adcae2b7ad3ab5296b420dca6a5d38dbe31a1efe6d9e941f1d9a79f31b83fcf8b7636146fa2f0a2130a57230083b1bc6c2e3542369c23f98d96b79dbc5be5895368e7a4ae17cf2c4ac85999654aa337b2fcb5dc35cd93699723d70c36e18618436d84370dfce446908640a97a22939255daa8212184bb293f450073e85d0522a379b8db53903fe924b90c93487426a3f036ad6a3f8ec1b505f0e66b8d8961d0ffe654d2a28bf534208095eaa41ac70795f97984eee080ee324643219ced0c4f951fc114a493bceaf333b716e8a7939c80260b2e7d523e97de9bb3d8e73f9b51cc9a06ca8d98a1ef7bd1cad3f33b8505e2d6059ed5a3f9d988c31a658e025089c63cacd4f4becece9ea70bb089a4ae2aadb464fdf72405bf4225e5b136c3ad32fb6a24446fc134367ee83b91f1c175b57f6cd3e6447eeebb6662ad3b9f93bd89e367e9e106f4007837008b2ef0690d9595c7bbeb9768ca1fe1874f937c953e4eb7c783a57b53040b34d37a920d43437fcd5feb10325ea4a5081198e0a7b34e4839109f3f564a93090a46439c2b52ea68bd1fe54e748e2ae8063d625b9de266be93d50092ca15f1afecb0fd816c34c80cd70066116a9eade8d07827d24a82b6fe44e6ae346af40ce1ac20b448693ff06b9cb960bb2300338aafdfb7262ebb02d91b58d1f0a68832a349874a4cb801e546e44db81fe1eaa716581412cdc3f02f254488e545251952a1103e1abec3ddada62eb34d060c3e3ab794f4165145a3843a6360a7e4de98b0a84e7b0221f0b84b5609fb88ae02d97bff7ce923ceb75a8676c472ae3515a1222a909da2cc12f99c6484b56245b2313c603ed674784a750ab995bf1cd313c770bf716e6d6c384acea4b67d16720134f3b474e78c1305f3b5e93335e50bc3f7269e00bf467fbbe6ea2d52e213cd0ab42fb512c5cb79c698b070873d20620ac3db28abff66d9aa5bfcd9481c776227fdba85dae8c2189304c1b970ea9c0c03c1ef5ec1b5522380036fc980454f33c9470a28661bd571338d60b644935d75fa7ae06685f0cd5726b11ddf98013cb325202606c059289a2207975d59f5f6bc44828d0acc1fd64650457c43bdca784bb007676a8ba5f8bdccc89726a229d933df9e39382deed6121f28d6df8b5440d864db4505bd81e8971d882a8f5c0162e1e23fa583c40081b418e17ae308b78e2be2c8056be31d02fa5eebe398cc9b3800c7975aa081bee3776e470041a353ad8854dc2c94ff71ba4b67e712480947da7f730e27ea0881ad7b9304773249a69f283071975dedcc6d0418451126d9fd708023f3c8df23d1bf3323638baf8c747cb7bb0f72055c977b332ce856c09e1404db17980ba1c19097e717a411f8d70cfbd66a818cb0564d5dfa56b1482755e7d39a1942e7768734633351546a11b287009a082648e75cf0d20db2153d719c9a397bcc95bd49f16e03866a5c8040133dc50bb2d3da160b7485377cc59936d641b471d16c762602ef9ca4e1c4df91c9df3ea6a0cbbe0d53e74dd527fc3e1452fce423b93c14c28414d4258d688952edf0d7dcc48def80445ca659b953ae2c8adb1b6cc67952f0dbbb45f3620fb597657d21913095028765d0a7c875357ca26fa4bfd9809f032d638352d08eaba8b77c57189d5147421f9b975e3de141a420c7bd4a2e17c92f155f2cdcced8b228cd843ecb4efc9fb0a6a10b2d640d4a4a5395ddcfe2910368eb7df926d55bceca388ca6abe445643e6315826aff37b44a6d9b47f99ed5c35d16e82cab208c5aa11b221297142fe692fc0acb6a65b965bea2e3ae3dc1752a919ee00745c08d714bdd2a30b3861ea377fd37baa0fe428c3fab5d0c96df56ffd3b3f5eddb18db7972abc42f8b572b475a58ab7c9cc86de04d468bfc573d218f7226c18d4b5f3b7323f13bfc789837df5ee015bd3cd5983baab33c76f85783d40eee38311421097c3fe50f5349ccda432bcca2d887cb179be2385dec625b44979da58f9719bec84874fc06e6356e1c07ec3b60a64862b1ea909fcf2c41ab266b8009a5fa81ea0e88ca7353fbc469fe6e12aa3793b8ea6d3000b35a8e085f9ab86a7b0622992bb76cddc7c73dda9ed746f27f761437c2b5f304c7a53fe1c13f399b837fa5755e6ad83b3d1baf48627e91b582e6b24ce2bff9d62e45c984cf3992f64a3ac1003375e0485b3eee81fd4266135e7630fe5250b1a3c4d61401bc50f6ba1e705debaceea62e6dbf43932cba82d625728ac2b0c6e761632e8be56fe4f9d7f2a92b0da22ec21b013f267d9f575b87c94bda44af7ca1286f921bc002af0271db90fba44094ac106bf428167cd8b47ca4f3567992742fec4b083ef84457fdb3944ea9f3869cf6f742428616da7d102df1c0f872b557dc0de2b0420638d342f9fb7d47b5c74835a1e15ab89d471775da50ea81d505c5ca9b1f3580bd949ad71492ab660e2bd5e67be7f4d17f43dd5e99468eedb582efde77744233e043a96edcfe659c9d2ebfc79cb70f89ecc21be042ba4b8739c48ccddd5717217ce351da288cdeab831f1c52adf9c7258eaeac3c197a6a2d4a7313aae9c11f4f9f48e0d404a719f25ea23f61e2173cc71263428ac5b4937f44ce498ed1ada161ccf70b4b4e63aff7682fb233fcc180b02e32821fdc7d1afc9a2524357e9f797336ac3a92caf61b4a1f9077459f69a58f8adeeedb444ed44d075ff3a20f1ae77834d492349139a0fe2267a5bc0ac8c8f0bc21a392bb81814c0975e334a429697f8c14de3cbc2bb28044a649624e573d4f6228dc211cd8c57121f5c9b169d7aa5c2fc03b2c806efd8d0314a161a7d7bd76a313540155f7b0c46a80443699b77f9ebd64a30329c8f38125cf9d4798cab126fe776c51aae5d67df64c2716805cf0cdb63f370bfda4ed5266c5bdfca5f78129f0db28b56a8ff8e591a23b0d21e2565784c36641b18edae2b23931b360eafc51393ef98056453c316d614e594a648ba9a917e19beebb8185cd4551038571cb10c58f5408c13bf65870798e973683205e43955784627f52deb75266b08e20f593f0342314e30a0136e9713b7fefe6af7ca74c103bf8d4c477bfa1becf0bce74a2ce84f9cbec2ca65da4e3a3d3b2b4362b697e480924da49b694c5144c5c16dda53e4d229c2483168370fa73278b1b825d3a23676d9c51cc08662746ff4ed70c94284e79e2c7d2725f82fa534b27cdab552665ffaa7820c178938159dc3ab5f3aaf3be156c714264622db9d681bc7ea6076822a3686fd2c7fb3064d5e3c79566305ac4c40d81df44adeb1eb8d26867dab1af6e8545db14db2838b266dc982504a810fc53e15e19d81abea96b171cc6d13c030eed903e391133fc24d7096c51293153f8abf17b44935583ebfa9a875cf53385fd768d3ab6ec4b2dc5535c16cff5fe4fbdba5fa118763e03093467f5ed586956eb28ea51a63ccf7a7403d2f195601c92422e4a76317326123d289931c4979676b9535b59468ddaad67ed04f55d5cee03f4fe012490689c5d55fa56e12cc18c00fe457d2c7a2832e8a32f1faf280c26dd35ca55a718a8d12a32fd40bcf854c55e85ce6a1847a6958d8485afd0b80715d4d8fcfdac1210d78c4b22781efc4f661dcd8eb170570de63f3c1e18bf14b09536a7cd73cea9b3345f27b8935291480bcf871d8eee7883bf404cc391ed0894f922de07bda36f139e9fe67820c4159be5111cf999cd1d8e687d0c4ffd5ba2e4aff5ada5f665d7e5c497b9e8820469a60523254a5514dbe238842973fda8b6f99524b93aa8cdb86f8ca66604572d7118df95f175361aedc7d9a421cf129a5be6232d9b2e2a6fd06c1f5ec53fa7b4974a5ab602812928b1040287c956b4d96c1de7ee5fc7a8163f88aa1a45d4943849ae04d49041a90329628f95c8089ef00926fdc707048e8c0865bd2b685f4b21774932350462dc4f7bbb1fb619f5cf2c1360800d06475cba9336942842d15939164322b97e3360f3729e8be78d93f73db3d81806c6d0435f2ee9cb0dfeaaca859f7f78405150ab1cfa7be48b466a3dccd32e2361220afd6287da4251598d95b8904d9ecb810e3212a768d8543e04b133a3871f41ec9eb15c3322282f25174491ea21dcde4cc2b6b62f6d9d03be37cddb16935a546868fe122b6a7b11c813e460b1643e249ed06f8deb66c66fe7bcce5762a00223cf2758914a577f19baf9a0af704d97739b91ed145b78a3922c14d79984c21aaece105deed081e0800ab99eb3b2cf2f611903ea829f0910a7d6bc1508ba04feb60424dd05e2fd92bedad9efe18a97f933234b6c46fe58d0c77fbb713006af648b8759a3380774a819deeac0630c1654ac770aea38639be0d897706d2cb29a1dfe609b49bbacc9a09ae23f13a3d19db654097f5012dbac57f2e3be3e84c796ed480a90a11ca259f7194100a173778fd12d7e761f871851bff5f881558594dc46f0f7347c739bbcee806e85c4951f96f867b2100073f1030471c454ca8d2d94ca650b49da12b021dd2f6f097d72edf3e78332528195e0595e7406a86fc3e968c6121f87cfbade367be35ca5eaf88cde36a5c386e4b182f0d78ad1287f0ae42d20a87fb0a2fb84a1f760e59fdb76a7eb0819d97323561bef4d970d771dd57b92610d6d67f4e7e606d1a6ca0b451f718dd013215b9a280f1713f2f62b2e92d2e6d50c9cd9f641ada4b85e60b6c0b21e9f3471f7ccff5e6a6493c59b30321751f0ebe6b53a00076579ffd213666a6768016bd1f04a94ec593e9b5260642a5e23ce4d4bd50e029cfefc4fb8de68b6be0b479ac752bab308af3724777d93b855b6ed60d20d45afe44c69b6b2d4721b71487114ed97a632ea615fc98c7cbdf84e3d0f20f6e1215b3e8792399b9bcca9f866bc7c95ee5331f70a214576beabccc9315a81b5caf9daaecc4f8631ecd1e98c2d7c2a90baa14e3468b59a7df7d793fdcc81da81b4bbf49699736f1315c09b9369085bdb11bd6471dd22cd76aea289818cf9f4d1804b24df5554448a77d432a36db9046e3ea3398defcd4575bed943e5b639c4ba83acc1e4c6e43ffc07bb25358df45c453f74cd2cc8994c44d88e0bdfd113f03905fcd164985c9296d14c6e0fa24863b34795306eb69833bdff3d0af32717a572c43b0d41dd70c712709ed23d8a9a03843da30b72ac4c18080a44851b47055df96eece242881c8b50985ed12ca661a1ee3c354312c0775cce25a5a1078556916f2a7887eff1f80edb8d844b195bf41d72116f61bfab7c386850236afb79ce891c106d541754269257a94e459191e4aba9c063af494c4f0919dfa411397c20b9e4ac87050a51c4cd48da905833376c01e10048284e25f53b80f8eaab202ea459fd7f8d9c406dfa47892153b233bde9bbaeba74b01adc95f87e1898d6e0f3193cfe7ef7f5dc9090cf5c14c0b56e986c06248d393a20bb1beff48e860ca8717ffa7f916c58968617a2ff5c639efac151d5304d7fc2743164e7e0ff6e9dc313f40049150c89897ea1fe2738b8bb3a37f048b4803a4f7a4f00f7a3e0de83fe89ad1e285b882eea8e0a2705f907207078550951e0ad597b4c857e60ff7e93df46fc90ff27118dc22cd111e58498dca40c12ad85db7c4ef0026d50b0fba9b91b0160ba2f310ee5c5b67e4ed0d32a2598fa157db9168e0d2d6e86a337c7524aae34acf784a7a9feb8ec9fde1974c9f402519d27e6e6bd936833f6b2ec2b3b938ea03c4508a92aac1b714d051708e70d26a12c3447d560386c18c72d46437a2fe7c739a696cc1f4d8d4d444ff1c5cc6f137f9d4a00239628bb860ad8e4fe52d50871ed7fef98599cdd6d8e55cbf5589b8e053b9ffb436a0aae0b89ffb6a05a980f28275bfe0ab552da22bbfc3e750d41b04fee155a59c9f1d1d902a60640efd956bbb0bd8013b668b19ea73292376e32b3ff7aeeaec34111d54700835d4bfe6165bfd20dcd16f2002f7ad76cddc0afb071b9cb0be98d96d06e4f323facff1a5af009e9b16b6e4a4535335d69c5aab57223a84e283cfb2133fc0f638bacf1e424f13507de67e6f6c08ba852f4572361fcddf76189940308b8fc48f6f40788be4b8f22adc1b93f60018b9ee1b3116d2f213259d00320d0381e37e2f999677fd3fccc748b07f0adca87383cdc3c115c28cc02825d633f4043b61066c61e33676fd3791158d94a5ad0551e8fe5f101db1c675aac6287c367f72b8d822f876f22a4e4eca5b2d9cee2ab9e88072a6f5767357b95137bc6b10ad9f17f8944d5e069404a6c1e19c672d65267dbf8a7840892d064b279406beb2562b8b3f0a08f4b4816a6f530ecb26e39601f611b08011782b134f7a3175cfc66159b2fd24c91759d915750d18313e006cf7c4a0a06cfd76f7e1868d90c4005af60ed4c6d2dc54f9c9e5defbe53006aa7842497c768271d288fe4b96ac0b22d984fd103a305af844de01e2ef51f6d357fabe945358bd91a8f0b99852663594bea0d02b07a06e4810c3792e0394141b962ddad7a9e74ec1a185afc82e2c2ea72253a7c929defd4f40997810492f983fe181e2c3f2b811adf4edea479f8667cf8fb07ee7fd8bf8b9dc62ee19ecad80ea9dea538236f9ae9d94f070c69c4bca6fcd332197f9ff53e4c9cdd7475f03078e9e47b3f48ddff61404bae84212854520447c09095885fdcd836fa3d62d99a27a1cfe00b534d9fa55308c52e29092c4041a6927ca4cc7cede513696b739a8ac66d398922567bfde92761544251cf0e9f2173cb4c02ca6d774a0803c6e70ff47e052ca8380688ae969cc2ca4bd1e9fe3f75e3fd86718574b810bc4bd35c58ffb949abc99171775e8a2fae9a331747b33bf7633117302105e5112b78283156cd50ba2a7d4e02b169c8d33a292bbcde231b5311b4ce1d6966465924c5a732324c617f11d0f5ca820511fa8f0cd9372826d5cc3ebdfa634ce25ca3cb1da22dd71b39143c98c3fb99f825886b9a5efca119338bf2df3c9b5c86e77f171217d7738208ba7d8e85e68ce3bd91a0c6109f4ba46e24684d0f284e74f3d7551d8dd9fa704f3d19391126521968449451fe922b7f1a758de79e697cc254dba33c3c81a397364547a69c55c707e39dc0469dc3c952a8f98523e56166ec2aa376d584a1698a4658b5f683432b30a73231cb390fb4a31ddb27bc2bb12cd3522915ececd28bf52efe02b845b2a3afa8800a3c003afccec99f7c34641a164ee88e1baa1d160ce28fea450fc089b7579108009dbc73b6160ff9432afd480d4b390ef9349b3d340af7e885b3f8d1d256f5addc56a9f37cbe907770781f3c1f7fcc5e71d4303d0d3e83563eb8f9efc67044adfd45e77eea375807a9297d8efea65dc41c694ba3e6d7df51e2278d6445c779ccd31879e7225fc3f5c83a1ccd8257f17be532bc0dd4408a6e566ee1bb6932cc4965fedbb249c74deb5c2dc732225e62bc8ce79d602c8593a4719360742d29e171cca49720081787b3276a0d697fb10a0a251956e30bf94f6a80454462f13944b5b6875fba0c75c8e5a173fd62daf1692f96ecec2cceeca661c5b3b07cfa12258be48e9f7085047b8173e802019979ebc61c2035f69a71f4c6f3386010ef1a9e6dacfc8d07ab710159fe5592f0c6fd2de4c6617e7dd52dafdbb4d5290b5d9905c277ac1c42358e96b6d2da8c258fbe6e15f9f5cb24aa4144db237bec72346f0b8e44a163c9e0fdb2fe3799855ec747faa7eaadc9588a3bdba45225a921495fa57024e45e48eef2cb33a7f9526064c1c4d4272ef99ba61cf428c6c5d58fd2e60b74bcb21995a4fa7c2751bd95f8ffcf8b3c0f85d1c6766d11d6f6fd32cdeda549f4c6fda009cad96ed598e01f62570524e55511cb2a3562e0b3cfa9aec719581f04903757602f798ddc924d6559cee0d3bb81b8914b620f9198333a1da7ba5c3e707b72838023e25e4b8a5e600aea5fde7a6e6dd74e40ae50e875dfd35399cf1bbf7dcf35a9fb4a8dfc7f309404d61e9fb2cd06811856f1179bde836d356231de51a03cdb519133f690a3c5168dde08daa0a1652746f1683fd92c9644d625a0271981831ae9c291d0acdcf7ccf9f6982073c2eb26e29df78b5b0ea46b5fd69fbe26d1a7d453ee0dbc7d463b423c34aa6e8b5a42b7b3b056a5dfa9c42ed0cd7257c3d89562af7a4fcbb7ae30c66552d860606a70c586bfaa286e16d3676b47020096ed206a635159db271908bab92d70a69c46418aa32728c9e3e1782f14e356f0d8ff51e4005ff6c9b13bb337d648f0903315fb16f385c7302b8b08b53a25a1c18d0f062fc515365d1101e87c964a19e33a526552fb3e0a93d90a284789f6d14d21b3dc43d9e8f8edfc08f3c3957b8e417c4e1f20f2f8ce236c444bd7b822c3b9f595766e8ed28c2759235a74a44b06e7daab46aca41f36e43897fe81d3d8ef6bd7f2031cebd0596e05d84ed514cc0a7edce26d15d5619677415401e6b22ebdf1771c239ed3629ebf68e4f0ab7f334a42debee2eefd3281f27a3f3054b79b5215a8f80efbfb0d3c1c4fb3606f845b77cbc1df44552049d7d5c91140228c7b02a630811d2599dc93d0d7e8a1fc1341ba2327396c8f5e21eda7e5f647aa4c8f42b5d7438e3379db722b2ddb4df40789b00b9c929f75aa79bfdd93101cc1847a344a56e0a876c39b0e767e16162c24f8fd8d82071b19bcd537062ef277ad5645becdc08f2b8122b2113f3dd816de22f76c44d387e665dafa80693325f9e987db32b12a9809818337b84aef92f97f17179ff04956fcb8bc766b8ebaa6e93b558e8a111cd97981e74afcb9fe6ce76b47874d4afd8cbfa4f115e257f366dae8b5902b59c6445570fc8ad23ad2c14bc592a01925dd94c25dc46d6eac8ec90d15257b4222c35fc500559d76531f9e6643ab5aed4f14addd898f54cdd9cc28b2941fcaaadb8ec242c51facc71ad947afcba1d4ebcfd56c956bc9649326284fecb9435d67f2de9de31a2fe4b4ef55b30606c7d0f158af38d1a3da7ee1430dffb1e967f9aa81692ffabffcf6b901470bba547634a62515cde103fe432991d76d74010cc670cbb250033015976bbce42f55da258a1a917dbad729fd9d016453c19ad740cfa4fbfae8e41e00011468433045770180fb130de329e19a340bc65c98cc608086dcf774757cad4c705f911bd74ae96969518785ffab81e1fae45acd830c44f83d9f3d85897d31e1a6180a721dbd76ecbbd0cee51bd5c658a03060d086a2e777ad3e11e64aa0aa0f68f59473b19bcfaa8fba4ce91556d95b1ea7f9df99d6408a733f7f34f11f3f39ff728e8875710eb6254dc160210085652f3d3b232b7bf0428e51f2974b8959fcb8c2241d010703935dc4773048fbd42dd257a3a09a4776ede3d85fec3bd9410264c6f0da1fe530f93eeae299e44c90e1cb10f7bcbb02851cb9054d1536eb4b82d91c02194da72be172370b5926ae50911f8bb2ca597dc18e3d7d2ee6c537f5796f3eb0173e1e3b22c883700890b22d339c577f02ae5c76fdff91e45a07e38b6a83a9c23559427132b24641307b3e36374ee96219ebb40631740c56b12c1b3926f71ec2ac39f69b17c4670960934d32bc0b1a97cdb67329a672836b53fbc688d7b0ee848a2b99bc3a3b9f3ab4550967e7e9be3e2fa79a37a6b644ed664d84c8f71754488eb369ef9a74663033982f57bfc24c681eca4917f461cd05478ff6d75999e2e84707b8eccf7078917f01c9b92eb78c1074209a8d1677d26a21446544c827020c5892e88d6757e230788d2f2182aa6017901d4801d85fd96e6f81aac9f6b77b4cf87346006df1a3d07f0b650cc8c29758922b2ef8ca66607d09707192b0c115bc02fba58f532ee067519fb95cf8ebd25a59268fd9813c97c321cdc4d13dc2404c8833d73212a09dce7741c269ad5379467ddf30bfaf74a707896ced8ff4bcd3efa553e843f8fc16f1b93c9f2d86efbc16e299465f97098df03eb1a0c4c9b4d887b04c380ea79d9bec0eaf9243fef4ae36288f2b5904d47e4075167f18813369edff40591ca70100b8f70fe7b2a55e64fc366ced6e8a17e7c3dba9e2e7cac69aaa9904c36f434a9e396ea325c0276c2ab458d1a675edf5ebf6408bfd60397e7b34bca5550cb0bde6ecf3079d3e7d21cb2de4d2a90664f787a3517248d776711eb8d3e0ab8104468079acaa371cfcc5e1fd3b797a3bde8832fa872741a69037b8ccb1a83d5c3ef3f8ddda50a221b3633fe5ff4299fe987a18e72809793d7b6dcb9cf9a352a8527506108a90c220a6495f10a99e1dbb0d80e4a58489f32f2d36655892aec4f050a25634a4567d0b0c8aeb206e702075bdb117d68dacd460d0b569029a559263bdf5efcf3d63cdaca57f51333892f6946d0cf291408c5fa79194f0eac25c4106930c229564c829fea0416652a6513bef2beeea4941d744848880b1683e391124d22906ae536f3c5342311b0b99edaad3d69db966914e41c209aa80a35796fd5f1ab28fa68992e8d5b9714212841bcd2cf5c1edf335480c1c7947db81a9d4901493b22c58de42a10c2169632ed0836ffa61e517d5322c96415711840b6b8386eb4f55f67861e10f6599429fd7eb41f0b0adfb81474bfa96d6dac52fd3a5eb3dd7727071b07ca80afde96ea53f456858471fd577b28ec36c44dca341394a87fcd787f6de538e22db23c81eb8b34c7a46feedad1f08d72c4a793df19799fd850037fa841c2cf4afd44d2bcac08acaf1a829a49ee23804f0b4ee3f7868b62e4763210ed614e747023b74aaad741148ba48879a28657bee5b54916c052df274e4cbcc7c4fc01661a3781be647892607b523ec22b00f6bbfcf0f64cae99f2a7fa7f18fac76b5df8a6ea5796fd9f8780836975248fd263fa0437df8217ac846df8fee98817349b93d135d7772ec569aec875a9301bc749c71bf9f16f59017cacfce612bef9640e19794e584a5cb34571064495353fe7fc38fe1f52da30994fea84b6290c4d10e65c1c9a57da7049607217dfeef24b5551d7c5bd869ec4517881b204122ac39a8e262dfeb1301ea74c989f73d757b3ae168a3722883a6aa99726e1c1c1ef689e16258d5037f741657d786eb2fe564cad40a5e814ea9ff218f0def414025949e60efd3fe9d6523e2f16c60e66a5d1d042242b674881c1d97532679475c989dfc1cc63581853e58eddeeb4a68cee2de6c0243764d88533c7da7737e188336d047704cfadca6a16d9a6032ae652dde5bec8f7a7ea362c6be493c443c52fea9c3cbb623405d66436390365622c7c8931b4eed7c6a1ecdb8b1f350c2dec8f0ecf1f57f0193a846942d3b823544e9991fcfc3fe5f19fcac9d74795e5e2901c9af49d84e2dda34df3eb249bb8fa01d6dc03c5fb284c48ff5ed195bd432dcb7832bbbaaeac583cd22feb02fb4985828cc7b8e9ad810eebdd68cff1fe572765abe0913443f304813f6858da2ae37cfc1b864a8d08c9b967f3b13e5ce6236268b994c82a4cd512bfa15780c1e8064a215370faac22dced762989c7775ab34aea16b60656eac78b3494e9f9a63c6547046a8fae514e6fb37090aefe3a6a540ca2743c137671813a81b00eba2f22b6b6ce7f4fc68cdc4f1c8a8c31881f4cc97235c39de24f994980c60f8e4cc94bc1a948287f8a2d965816a8bcddc0e7a4e5636b1942452b39c46765d969bbad4493068121767e18a2a88578d1389545535a2a14fbb5cd1c6e1924d28423a0280df336b894183131302757aa2c30f2625a75f3c8ff5c225881e75062d33caac2b48d4494bf61abf0cc28ee44dfc7df6903080f07f008669f575eadcac86d578aea18e7eb1b05424f10e7d292acb2928bf213fcf6470956c2964542d38a6e67ca30104768882f14da3d4d54e667b313ce0fadc0832e3e998e73e951239fe1d8be929afb58feed532e54eb175413426dca2e8ab721603b10315460c8e6b0458e4234dec4afc92e31ce0a1866293e7fb79bc507f0eed5807d63e44d31f5d8e9d5e38e384d4f8a36d409f02d38d459098eb666ed096caee29230fbfdf5ff377d81fd48d31cd1e36d2ce946f4d76d3c09cf8ddfe296b74c24955dab7e9dae5990673e60cc459005902d611f9a883d1813f4ae4fdac58e5076b9516fc39303e10650b2043ebc1a20103eed09927e76380578e3e72c0a2cc3bfaf5dc05c22fddd04d3e7b4ac3e6fdc4b00c6c9f7f8dc38cebe7354a3e600c0601b36c6c1f82f791c159b098a37e7e6250d7e5a2d563be68e4f81648afb93bec248ea6e46c369300d842bf33dd99841eb6702011cde737e6b9e9b3fe67d524d4d92792d1026c0c4790f46cf65af8e5ec0d126543f138a35535d5dfdd98464556723ad864893093e3bb4cbde45504696b8eb3df27f9a78c44a3e7f54ea3a452e0f7c6484ffe94abcefdd17e908fda4eaca0a9207aa70e0f8c0e5252e14588b0a7f496540190eeabf117c3bd8dc4a4c3d046629a8b49115daf5eebd786718cfb6b99f1917b703240ed00cd4ef748af6d73cb5d279c16c93d8a73fa68e0d9188009e9053aaf015ee82f7c3a4703010fe4e2031581c2f13c894f982d6f9a92acc3dbd356ad6efde6775c2e4d85a72761372cafbecb64507cacd7e73459d94b17fbef6c69ebed7a41960068b5264e952a64f5bbcc064147262b3f7cce18b6ff8f9107a3101cd3f3a33f9b20cb0d9a78a0e1277f899d0500a519d583549fca22e0a56a27f509d7aa5343f3db3f623bb330166b2574da79196ca059950669cea9ea898a6c63a1f515eec4bd737e0fd44cf4e06ee9da6e36b4167f8cdd58f34276ae4374e6fc742e2e56bb94ffd244ecad521006d9b8eded2d58870b008d3e30fc830f13f7a43bd5c626733d55c2f3f69480ea10330c4f45cd501d81c5b94ef132bedb4230e54e724ecd0c3fdbad5466f731a737a8b1713ce0fdbc22f12fad102307cab2d50f2c339bbaf9c8a7fd63d040caf374085092260f2b707fd7dbe834a3c8b297c89af7eaa46982e925905d23a2926f702707d632e6805b9e90dc111d16b29e2e4788f5a24e564314bb1b47ea620230a90164c684d70a336ddf0a3bad3bf44c0f2a3610bba160abf8268467a166f13e706c93cedc37d5c27e2893020b671caf4e8997579a1c837ea897e2c91a58a116b3daebbed0f7116519121700caab906e71f3af7beff634540eac24bbf22ce6299600ae4a941b898e95a7045928d48e642ea02253817d4b17b4deb35114f35a5bdf5f4b8a5133f8430c1af2305b32381e0149cb588fe7af89d9128ce24d1a7c843007997b11566a9c5578d62feb9ea4608c91a129c247c9bcda3d8588f5abb4f2110e147b3461804857f8e80421362fa0cc299b09ac7a0c98e66659a49d22e8e5cc97c4d17a7e1709a3abc9de81a62f891a14dc5cd934be5805771d59d9d3c61216675b239d32ba3365b957f45b221b7afdb8472e7192950d6f93780c111e4721884cddfd7476ce31a37742fe62469805ceb270ac65ca971932fce2ea66ccf12feef98e51b59c8100cafdf3ba5c876970287bf8a834e737b629a99a62ab624c4d5e04dbf2320609b28c0aed68ddf831372f64ab1938a77f6d441fc9a7614390ff231f9b17bde6eced12570b4f147f00889d87089986e6c89f1a388b2fd4e109bd7ad984df859cb86a77b17c36a8bd3dc5a99570e563345900d5d528363972ef75186979c71a5c9a76967852eba3551106b8ade9614176031663bdcf3ce7c93a07884b1f35ed3232742c53c2c072449394dcaa41914ebacdbe01119283996116c853c87bf16aa20e58443c2209ed75266f2e8e5ba1999b7ba811253e92c4abb900009e39a6a6551b2df63e979f74db29c9e9f09fdebfd9c7d63da9e2b4fa30256cd563e96690b39491757b3f60219ac58962a8db3b2e060a21f25f777a60240bbc7b6acf23be4fe934704f59acfd21facac60553cdf168ffb421de2f35316255166425c237c47b505dbcbb8aea52403f59b15b734f187f708f5d0d737d530a2691036733dd1d7bc3645761f501067ff13a8cb3579fa0b476053b6a4fadfd28e4bbddf9bdb5a51b7539b4af34df03638423c3dc483ffb3b383e0a3989646a1fe2145f6078449eb4d9dc591ebdf6bd5bf0ffc53f7cd51a250ab6dc2a0d059dbe6f9187c5dc724acecfe3d18b54bab6751b6cdb1e98ab14160bbcdb2ca7383646b61965684d0a16f47ff7e61b85241e220c3dc32eef30514773f4ee5b5a6758b9900b5e0c1c3d4e731856332ffd327ea58dfa28b1f8754ca508d6b2569c429c3bafb74b38821f6a08a053ff4dc86477ff8d5be67a45b0e639602cbf67033b1568b8e0644e2729e3bcb8d26f202e418d5de5d1159015bc443fd8983d42ac0b66d4c741f8c6a8b59d7752cd04cecdd0026b67fdf43fbd98407e800cd04ab92be5319d04f7171885e101fbd1675e3d1fc70f173797ea3be469da784fc7a6d25cd1be0b4c4f13893de282af818af50dc07170150868dac167962da87fa98b7b2096f9bdad16c69ae4d7b3d112150597474f416db07ddb658b02d50f8a0889663e20c82dae84225c67a74e29ce24cd53cd7dbe2ba1bb7af6df01926ab3a8c6af414285c54ebdfe0c161b79a8915ac6ef7019db5001c516a6943fa03713f77009fa28a67a7c6b320325ab2e004f39cf57d17879002cbf2c4c018f23cd16d0cd73fadfe9d69e2bdd6a2dd6eaef8cd436479479be0631e48a19204c4f8ffa95b30f19e644510bc61fb0a80916a2e2cefed0e3dcd13150e552e80e4ce9f353975cf7f2d1fa0b9139d21f781af7547fa8ee56ecb39d3b821df6c38e5d0a8c8ac5d0ce64069889f09500b4604d2b06a45d52395edc5efef19395e087593ee859bb5fea1277bdae5ca6381089efe6d427557e4bf08c18777bce6ffc82c365cd5013e57ee47cf072ff6bf268ff7e8055f29e72c2dbf13ca9337446112dfafada540ed14c84bae0f674689d703263081f818237e45ad91ccfe0bfe54edaf79c751b8a2f9ce210d6524eb81c6c7635ef71685dcd373170f0627dc2379300a30183b147272db1a338548ffdbb3f8399fcf4cbd1c956240e8b74b7758df7b9aeb146f581abf5e7ed648d311ae79cf5a5182ce544fcca7b120c70729e0796430b30791cd4592241e63d8fa1ba2e78cddca97a81adb39384d01ef2457f495d7fe66e852e70bed5bd332fe03eb06396eeb3893984b27f07118c9b86f95adfa3753cb4b284a5788e1d729148df1bd34ea1add1a6611987c8f6859b360dc70230cef74fe350b7f9f16b86a2584a68ed971101033ca384cd6a8c18529b35cea69359a2c57a1503d8f66f0384a0be14e212d0d24a456782023d31e43cc3d7e2f50f86a54bf02b77f00e3b9ef1ee6a4ffa1151fde46adfeab35dc60b7d978ca1abaeee1ac28c3d59d0fea0b2a10ff35fbc846b69df3bd08efde72f816b97a563f4e2c92c83d5ca5c2185b6d781eef2e1214cdcf6bfaf1436108cd761bab0a4a1bcce7606af2fa70912d2588441b974cf6ab8c4f4ce021aee29592963b5b2be259a3cf754d5597b72f413a5c3dc94785b57d9262a084761a8d9d7184f735b600eb97972571e74413b8d0b81f918c1749cd2d86a6ef4810029a8d498900a46a7a0767eb17f5571caefccaf12b72590d10658cfded1ed352145806422d01a11e6ea933fa3a277f538aaed65439fd36c6ab79d60305690c3817170bd34a03ded24372a95d9b8a6d884092f38445b1346118e4df6f5365926f2a09f77cf3930639b4dcbdf092fa5bffa77aac2079fae1a0b18d79d26c2b62dda728fabf748c8893b8777778fc63a7db8c1f942c53d6d0c8e4aa4659ec00a7ab2b1052c37c9051424b053fbe705253a32fba954784e18564a0d3b959d6e6133872137cb1af2d39730ba48cc343975b3b1b7b4695e600dbcdd9415434804dfa57b9e0d34b3334b2e663ff757bd027e39cf8f79fb7cbf53935d8d3b9a26ce25ae458ba3611643861688d4a85c6a7bb27bfcf7f1c519c96547d314e698a4d53626ad8f4e28dc365c54862b29fa4be31898fd66191c3e50205bba85b83093198f5111a7d394a4b3915c0906b13611e2325767ccc3893d128a3d84115878a556839de47e9e1f8c2853c0e9f74c9a93577df728575c84273b65ef152b6c0df35f1ce9292516d3bc1b0a72b7f969a64bbce96dff8b46e154fabc6246c151dd7a07f6edfc06698ddb86dfad34cb713ad711f38affabdb25df26e1b163490b4a9996e251093f6a7798437dc8d825a16978633006106b3e8a28f481c7ae99370894d6545f13345aa32288e0264cbf81e196d6860c6ef67eb550b6ddd5da93192214a9d2606f87b487b0734f6af01bb2c33a4b5d8f284bc9cec0b63207909ffa42a530f22186535db3fbaac36b5631e5c0928c733da2dc977ca218e725edf471cd3789a32657bac7a9bf045cfac5d8435670113fc0138b24d066cd189702b75a469e10c9bff2c3ef4e3e46a770b7119a49cc4cef9208ea91e83f9987e653de824d123f6042fe8c41acbcefd91c5b14fae33e8e7b8adfd6864ea4270b4f59f35cb4b00fbd4c33c5c720041941281434bff584725cf04d5f36a6cf2f071f00993e42f6f89933e17d3b40e15d8422f7911a6202e4d2e3d9f70d5b41a98f9429e7f55c4b75fe666848cfbda6da8895519f93cb3dabde8f5e0284553c102fd12995bf1b751b3eddbea4cfc0a738070f1f7026fe5f8f46a68da4c0a048ba80d149f4e74120479258ecbf72eabeca26dd95dde9deb706547a69ee1a23ae3a11e944baa03d5e5110aa91827125c7b9af53987867fc36772408c950a43100d7361fcb9bd58e2259feea5def43112441a6cf434c0f56f206b22fd9633cd48f0bd4ed04b709e9c49bc80397d11a7c39fb60d766707194a6fcf56c99fde604f31f364f07ce87fa805d19be98bbf0e7f13d6ca5026c27b730b0c6605c985e1288cb81bc60516f02f661d50d4e554c883787cc24ce679730120b53904b091d93ebe95fba903a6846acf4fe32bafa8d7f7ef971e5b530fb82f3985ddbe0865403803fdcd58cb607088781c1d472aae2633ae8eed7560a55b51b28994b6bff923def4da87f3ca02fd156bd273c2044363d6574c3af83513c62faf9c80991bf097ba3383408fdcaf2cd475e3e630117bf3efb38d0a3c2eeabb5a1838677c768b36d4ab94f1b201dc8717064a5a366c0fc777e07c2e4cf983c6a47becea6db37d2535824457e697a16d547f2d16d365a449a72b4888918e774b9c507b9aa6c9b8099837da07f907e630f2ab582986af933b9e2f32ae24034193e1b93f9866d1a4eba489c147cc307af51d9dd2886907ca79dd94589199c50a5fae96811d6a68a229a656030182291c5abf7a847944aaa08dceaf2e1ceb9045a11f6f74d983397e1795df6d552425d93368c770c07cc9f1460a91828d8d463883ead35faff03978801f72ba660ab70c2d48577a1e9608f708930c67fae60ee04d19b4e63795ab3c096bfd4d1545a5c2dda33dcfc29e5cea7459b28711e8484ecaff3e6929f4f5e1f5c843e03f840d8f0b1c8a62e8d4c366dcd8cc7a4b59a2825f80aebe0484f198fc2d8b551d2c02d260addfe6ef71ace39cca8d13a10b29144dfdbefbe58988b9a8b941a715935729023ef1a6fe9eacda2c217790f980d8ec6d483235f8ebfe8937851848f686a91c6a2ddb8ae02e8ea006508607e80a235bd4dc6cd181a2ba7d2a7eff692a32028a4a76c26d8ce56f642912b1577c99cec64428960ac5d978681ce1227a92b8c2e0bffc3d964220bcc053835a0f4dcd93546285518c9dd94e6b612a04e5b17d57240faef990cd1ee904b3e5f1e2aea6d55cf1edb2c7615046dd146441198749ae36cd66037c19680416ceee86ef6791dc38f176b91418ea0fc52acee7065376baa0da66ad438a2509019088eef70d8e56c7ffe7b45565a74fbb33151d22c5c4b165d5dc6bd484e841490e01949a1d772c9fb492635dccf5ee9e8536411d3b03556fef90ed3923d56c84f4dd14bb41fa9ba64e5aaa9432f92469469e2a50e2c940376bd447f473a95d7f54402dc3fb91e40831ce9495eb018ca1e23cad7ad76c97c39194b41fef120be113b7fee67be9ef92309e9aa674c4ce82f78df03bf4ea80f5f3a6dc4e6e36fb60f3d1c95f627a6798f0754705f7d5ea9401028f0ccb8fbf3381ad388d49d0a7892bf331bb97be967cae1f9fc5615d0cf42717130a187fe156598101ce7b20f46d6dc2032b4b9cd73c7b449b39442fb4e96e4c99a3e9fe1b01b6a97e1d0acb04df77dc52d0146ee16f50ddac5aecf8a11c70f02cc057c4ab9c699406bfe96b354358a075166b59a27d162e897ffb0fc0fcdb335bc35f3d0172ce9c76120a9f0b78ec04f2afc52543b6ccfcfad15fb26b7c8e23b633ad681b3b4a74dfdd904d7b94c51090072ed52d906fc922d0170af9e7541346d7b1e5c4c9a75d50d9670e7205ba6284dc3faff7c322557efa0eb938fcd9604ff9c8bd82506fcc893c4773826850aa04d706979682085e91d5119a1da9501d18a642a5c816ad972e8025ff2b3f108eb9a8b86144708c835679d07fdfed0a887b4b30ec4e8a0e08276f0e8d4f3786f85d82e38d59fd0c8cdbcd8609ea04ea154464ba7e34897508e02b2feae2dadd77070286cf717638e68a4bc49d1ced30f2c354876fbdb95d98d8365ede7f5b07bb15ff4026a85566560187229b49a954446b58ca546e4671c5b8b0810f7ab34e5d11252af4fd1d8fc32f8a5e8bcfdffa99d5e87e27136f1ce383f936bee4835b65c52093b7daa02a102098b872f1003e670610a291c94fad849e049f9ec7d5664653fb061ff07ff071486eb44ab8f607ac2ca24a95bd63e8b16e48619a722f240016084fa947bb0aa5441acf29db5b385dad82fc038e8028a0a9d7fefe8f33691c7bba87a2e54be4ccf53637ecb5d2d04c45f82112e91c223f772c5340da2f0ca57085bf17390332b385ee426cb7c3e14cf3d7c27af0fbc938fab8569892fd343d0e5f17f3fa119446459e45189e6aa500ee0dba9a083641fecc2c924609f63c2572bb6f720fcb84ccef61677c564be46d7d68f22d8280f1509543aaeacf3d7689743e9b7d97d693714916720931d9e6c467a767ea4615171469126f91a7c88633c998a1ee09c1c9d78ac2f91d949f0c0bb9ebdf34691ed57e84cd28e6d74cc9d7713aededf6b0bfa5f078d40d43b546a5859d4bb71c64e9c96914cf4faf25b817da27557366c3270d53a39f593b5644284d4201bcf35df4cddca509e2b27916d08dcff96773085ad08eb84fb7a8f3e356a34ec847b84c393ad7df493fde72225d4a7dd0ce9ce03a7c98758a0c1aec5c37b8b364687e2c446db902377819232ea23fce00f07241c150e9d5cd6f34b22c4e8de640678f5732f9d252dc85e38c7613aaa5643fee4000172b3abac708930b1283bfb98c592ce6b1100e3df4d1e10a1e23afd973282e03db4c0af08eb59dc7678d8d40f5b4af246b67f0d4a9c8a08f8e7da4a1db9d9255c34280de7ecb6a3ae564f8cb91cc1a590f02736e0ace356269c57d417deb92c80794bbd414e27b9ac06dd05bc5bdbc2c988b80a43731e81a8562be7d9a0331489adaaba9bc29580930db84d4761b7cb722ad6da16fb7cd0b4ed99a8ab30bd981f1f95e01c4b7760e0b8743cf1ec773469e642f2b5e19c7e503edd4ba877242098c069e01ac041218a967993a6abde2b87b0a6d1e1d7d5059fab6131d68d51610ea7676ee64e3255d6fa8383c2c3b6eca8e0e7875a22e8ae2e991201e843d951c48d0e08b6f36382807a3ccf494d0fe2d1b313ae291cfbb58ef0b611059a5f4399520ff691043609ab73dbfbfad545286bc8d6c7dcb3eba0ec9f5dafaf4aca5a6176cc6b37a802015782dd41e1dde0347ca3850ae1e8eaa0cf16da12603c43cb00a06ae6025a2585cd0cc82f5c583aaf4d2db5ccb0526c194acb501cb3100b7f711b712d146b512c7ab7fd301a2ffac31d326320899964a622b6d3221c981b184554fa96087d38a433efa26a58bf607d6ce2ae59ecfbd73b87d40e6be15b9a72c85d7471da0981abd46292a0d65961eaed5021844ccab838d6a70417cb131b13a96df1b4aeda0ce45484611452c18c1e5ff68508d7eb1587eab4daa0542fb22ae05e085e9c908f37460c759006b0cb54522f5305815899232104b6326152d71ab22e4514c31f75c8b8752511a952e9be85bca21b229f56a6ffa3a76d6bd217a3c47e29fe584d18a90c7ef3bd8bc9edcb7f40bab2a162e9a6fc25a971e93a9922a916bde4b13749d325aacc241fa848effac423f4f8d5e3156c1ca93826c86b97bb5fae08a4cc231accc15fe9d078cb322233560212438de5faa3a79621f0ac45e2e7024b19503610be4d815a5c36741dbfdfed2b5b8af09b76d6e27020d779308de1578b0ddbf71b231ea09ffdd307b940fa741d3b9a3aa8d65713fe76d8b1ce4fa2b25db5d88e3496c749709cb37cc0f21ebc5371f968959ecbb821bf0389a59225e1790a86e700f81ebf87ef2f3541d3c6c250d4424874b95b76341d99eab225886a86857a1a5394c09846ce130a3934d22f55cda1c216e0347fcb6d91abd1ef8d0f215f1b233aec8a7b34622025fbbd075aa067597ef67407135137178d81921adb464c25e623a321dd53ae8bab65768de078c73ecce081890a8002070fbd9cb9c27d4c2788c9a26bd879ee7c3832286fd37f633be6c12cf473144d7612c7d219d761ca0514e08614121ca59027ebe41f6c1069ce7d298a853f43a22a4c1a248b0478017671c7c60bad46ca58af4f63ef55ae4a879a622dfcfbca841d87e4238663685686abb1e0024fac72d8cb30ab9886c4958dc838371fa3afbefeb6b73b231902111687fcfef134027209f910d7b7a636d31897c4ed3776f35aafda5a5ba1c7aab15769b72d93571af057bd10b34b0a8764f866d91890eade05c8aee49be28e1bee538e8f3be79f6da42304f2a7393993050c89ee77fea5a9d013308a27ed9c8d3b648f9cceb02b087042483cb0c80729d9ccac9da7538b965d0eeecaba6a4eb8aebb39c70af6a1095a7c8ecb0c253ff6acc19e10b6ead6d4496c2de53e29df42e4dab4c46483972b870e30540de0d5946f0757f8761f4bb84294dabb509baa8b961af9dfe1670300a12875a5886eb8b5a9d157e760d56c1a94204c980257fce67f26960b1275c3d94570ffb48fa521ac29e55b295feecff62560d571ca9770b72a7ec9f586c33091867e04bd7d4283dbf61c55728cd67394cfd528a559b8e4015bf6e418682ec4962b5e58f7c666fec910e4bafe3bf92fce9eb68a450ebef75ecf34050209d4ca05771148bfce156cd973be28ff0f49304c326ed371c9cd1a6c3135184814982aa95d0b44249db6f5e85bc04c691db981c08d1b425739b1311e30c833edf2a13624bdb65a3783963d61c313268846c4ae78df111fcc1057c397e8113c2495db93b1e9ee829d9c65176dab7693e506e66bd686552eac3952ba64f408dab4a6742d2a0a84b630a4b7d060d0b93167e42254814b23f260ca57b53daef8c177866039461dbcdcb9c08409920b438ab89a7bb5631d69bd3f6ac1e7b480004aa50dd64c4a2fce840dc6a81c22ca8d915cdf7a6dc4e54996a7db0d8a6e5c9550f050d280923b687015e664187daea575004eaed50fea9be808965fdac6c5fe72a70a91a6ad712aee90f4db468fa8acbce9a528c02101680841b5fcac0744d793564a178cfa192904962f9646f38e58b39902fb8322647084f306ce8c8f5e8fb1a25bac50f9216c6a1df600b39a89732b0023c2194934a548cba9e36b8cbee90c5a935ac9c26c725523f5eb5cb36c5a8ad7231a4814e7ae90cd85eee32b7e7f9ff2d671f55760ab10271b0a13cb787e27044b23e0ccaa65aa28e0c50663283ae2f03f0483bbccfa68131175fa73d3e6fa10a3030a637d59882870e1beaf6edbe3f0316a6307363ae7d90e2877eb71ac9b232f63a1f81f4d243ba6e1bf752476af4b97bd6ff0beb5da4aa183a4851d7b8e0171f0a1aa49b7b12e490707d9a1f20293bd5e1d6a6dae33f45dcb5ddfaf18e400d4dba36b7c42a01329b9eb374a8a555d786f425c47d92d1191a8d618a3d627fe505a6801a74c6e6c6a01c0a6944e2e1cc657ea9cd1decad4a8a5c39a98209eb1482576774f694b95d70e010f9fa3caf62f423aa0cfd91c9980b4122887f3d2fd22f9c59859de8a8db9b117d406bf14e3829f6590bedd60bdb5a7333ed7617811bb187f429d27e68cf4e1a81f7c2eea764da0b2bf6a6ce93cdfb8f005d30f957601c7c3a168718f0e883776374750b22bc3bd8ea62a01d948d802d75675b7026986cf8daeba20143c1d73ce7ec1d8440e4331b3dfbe86ac6e4d052f8fd1a73c0ed0fe9a757a4b0fe201f58d05964e2015c57c59d492de95156326854204417e6879a36903303bac58c944afc6778ef096dedf7f0a1e5ca65c9b2cc200db79311f18144502ccf0f809d08b6bf8dd48659be3e33d47724ac9a318c4d3b7275aad76d02b625ddb9c08800917eb0f417e5800e8d228f796648e49f9ffe4710281441150c50b7b1c25e624d4da855a450845ad083cc88e2e5ac467d0cf267212a0a353a142dfdfcba7561e09eb934e3a130d4f72741ad50651e3982e8d28f255fd7f86ea08194d26f06bef2104cef5579e10561011294aa1634710c576c001c6f0950fb500f1ab8e03e7c918033e132efb9330ac6dad1b751a3b8fec29844ba268f75bca1707587e966ab99b69bfe6ca5476fb8929c559a8f9d100412bd1bf2667aa550dbfdf9ae6937d1246de0fb0392438233da7b65d42f392c691636568eb81977ef86b706af29a5dcfd6ab6f531bba51af848fc59465f2f2ff9d9e87e63461c80a9216bcbc277ea1c4c53ed2c145bad9317c4b1721f3519f56f30cc05d0a45f693b8bd7f02c0c4abd72caa9e06899b7b95538aa70217639819cdc120cdfb7d6840a4e0ee9aaf27eda0b524001df329be430dc14cba9fea1bb100351e1922ef2277590580523c16f7231f87c6ee2d049a5d77a5cc98b0a05fb5dbc4f7470896647b9335c93e33345e87fad1d61edd206000b2b2002c52b11b32572fb0b2dbff75895e7e6c89c6d86cf670a42b813344f0d019a70a7ca03fe5e02a1a962c77cac74e326f14fcdb8ba51640c66562528b3f475b08990adbdd58641a8c5c639b2f61d7de9e805f1d8c15bb9da1ec0067e52e74c89b3bc6661515ce4d71c3f9ec769e4a0726a2ff6b4f77bf5ec39ed9e497b13bc8ebc763e6e284f9a51bd01e1f7e3f113721c8e670f92435905f12aaadb7433d5bc8cdcfe9367a85c4bd95a30737c63ed733dca1e3e6da4badcb654a72b1b0e43fc51baa59769876eeef8dd1372825586bffae9fc9244aa0bf00a0c019c5295d34b953fdaff98ecc072d81831be9bdd185af547d60f57ada021da12f8686ac60323f8fa4438c2394a558ff428eaaafded57091d19d51ffc517e5a283a15cb91d4636141168f00c409b33686c4cab756b89f355492f62f54d6e3c49fe35035aadce411962e75b9d5277e7839ba4c2d55dffee4b27ae05da0651ad4204b90a78d38b479a0069f33ca21a7fabe253d81e746f99727849502b30e8e778ced8558303daf43c31ab56b4c2f46d818e856cb75dbe32cb8f8206db579d3bd1e04f9c68e3e237454e1215475d77033a78850efce62d79159bb725910984207d683be9d7c655c2999bf4349e8101fb7328d2e56d52fa349c622059be33cfb0dae3f31edbdc708dd8e635ac8239dbf0a04ce22a31393fac118691867e2ce628e5b5316dbc09c1547b653aea67e9d8e3fd401fabdb8caf2f7cc8d2424b805f6c358719de3ca703140c83f44dc647e5b61bb14c499394c58c323d95577ef402809296a6cc1aa502926991d5ab45f5ffb4f790d37a7cff109ae8671e46a467f710125bcb68e8c318d41b8db5cdb7ff3507a4f02cc7786632b1cba18dbf9e796ce9c8198b3532e448a5b8675aeee2d9b841806cf74f35d7e42eaf55392b9725637d0b51418af5a37815588a23401c927fd4013c184389422ff448e50122c1b7b3643e1b461367c46bf718828267b251cd9a0c21a76824e878e67d49a0f5ecc812d636eb205109129362b50856fb276f8f4ddbb94a988d19c56ebebfe625ea29a2312b44851513c99e3127dbf00b3e9dc41078f7184171eecbf97216a2e9b9e88d79334f670926b009835c109295ce0006e4c4ba05e43fc4fe79786a4aad91d950d35970902755637f3bfce1580f7737da3414da67971ca3c8e2ac67fa8ead4d7f093b3d3e3f7b8915813a194ae11299b14a511123841be283ad8b5e34def2e1610937778076e1edcc3fbd91d1e8053e4ad7b89e9368d0a4af57dac0d4a6628f3d6631eb3cc235b8b4a4908446f55694c16f218e6e152d0ce9e364d7311f5c67e1d5e158fa6fd13c57a52b8d5d4c9a8dc80ad4f467f0af340d54cac2d038afa5f5b2b4c3d59d4f1fcd77849a1f26acaf4685f49f9673e25bb234591948147f0293793bcf4fbf73c1f016353ef12f3b92371f7af73aac27c7d711fcb3e089f46ddc4c2d09f21d6038b1c2af0b72082393b5fcb717c5bcda4545fa357c45a1c09fb074f74226531c42717d83f97fc696cbf3a67563b45abd6894062f4d1b1c6f240cd8dd5cfcd06bf5b38eb0f676711b9060869710314eb6c846cdd039aaed88d25f87ab240558f42516000d26d9865205496f57710ef6dff69dedf2c9d9b986d1f235f329db83b4b6b824b971e87694931d140dfc3ac4e6ef22869700a25b939c62b5dfa96c3bca54cd0aa4685e255b43e68d865381bdb72cecbe373dbb631eab768494f49b428954ec0c20985b6b7c4c8dd7f0d1e3fb7eaaba3f204ac7923ea9c83e1eee55aae1aa374487d3db96346265505058ca2df683f7b4dd29665fe4693526f38cd05a163d1411f01b79e70086b83f8964b01203f6744fb975a975dcfca5a303783d90c3007096f1190b104a6b3b4af8afff02a6e99646455f2133a29283bd5a26df5a35a6203b785bbdbcdeb5f8fd9ad84965385d3051f9a64e2a021814a44e22191b0ec7e32aaac78a073e9da64ac8d62139fb46f42edf199da38cb3102a4152c60d3dd3eed3dbfaa802b2be600479416c90f5cad11e4f682a17d88e0244f068dab94436ca68947c52313a286f6220a31b0f23def465bc6785b49395558c56df1580d16e6862a2018b0c46e61a831461f471f2b06dcd911142df69149cc21b1a5e16a01207fa3f2ced813f9e8fe486f72102147bb2241ed1b6acb2613146959c1d01b4f86cb1477c4d70e5ff70eb0c8c1d25988248b990f27768f6f944a0566bea1ede0386c87861022e76171a60b818a4cf5d78e2e305452e1040ba5af95100931d934732c9cba1ed03aaca73eebfb14009d1832b7aa34136d73f22789f88729c0012815bfcd685f7ac7d0aefa7b7a73d71f997475cc5490da43dc889854bb32ea0da1e09f3427d88d9cc83767d5988a5b9d8ebcaea39cef291db6807c00b036628745038ff4e2db2b0bcd81acadd3f5b2719b08b888e714b6da83c800bbbff029883d8b2b8651b2548f6acd3c9e3dc36140c5c3a206c77443b827d8444bcee7c43329bfc78c165c42fb10eef1aeab8826df82b1e9f0313eeb1c84554ed63248c51e422b5e0203ca5e58d06b04257072b35b9aaac778a6683ba5f33d7ac08ab5c3e3f9577538b0a8c5f40582c29120d7001ac60f41cc745dff58178a3cba38bbb5980d25876258885850abeb09aaa82f17aef01fc87ad0d2d33634446b8015abb4623b9a0b7151c0eb30629d2c611e377dff1b548b60b23bdfca2ad928682e67e7dd8c740c2784a563c42d0d9c1e2a8f6804f52b72a46ea840b8f88776b6a3713c8cb97d70d661b97e2a71869043bbce04401a3b567244a3ace35d3bf40c22b84c93ae9c54d04ae1560ba9f09e922930e24db19b277ad0b2be748a12c04c869a1715b3cf7ffad6969e11ef3dc3286c623ae5a7f496814a9e8adcfb18a59ef7a3b8a923085e1257fd485f7bec683bc1d9883c57e53c9b45da1aca918c1057237fb2ffa234a75dbab02e30d7d3be3a15246d9972770311f898720e1a5597370e3574f38cdcc853f714e82cdee543f3f10a9f942be21b835b7f87ecdf4ae30a29f9a2da5c9ab992832c15e0eecece702eebcc23b76cf7c58df2dec054dbf6e960f50e2c159d58347e85e6aaf50460f8969d42459ef461ea2ac1ec423bf9e84845703dafec564d4ab63f20801133b50f42089a68290734234e1e9155527a66bacd39f53d225f46458467b92ffccfd24d6cf5be1ae190c1394268522bfffc743472b61e11e838ecee72d93d55d423c6da7d082033207e8bc16ddaee1b02ce7cc07a1cbede99333f140bd9b915fadd7eed024dd4d5ca087f05dbc1c7ca52ca7ed2ac3c03162840b705b784bfa83dc76d04345fe9568cb1a62e456aad41656f03118dd663d368bfe3314a43b3a006bed1fa23dcdc5ba00fc4e9ad2daf91f0d4e4592cc43f63a4261e4119c6dec099ed24bf7d33f5a6ef725ef916859b3ef1a607c771c9e1162fdcb73b9505aa3f1b0a9a800bf50e634e5a306bc7d44fd0a91d34b1287f19c009a009332df02610d9aacee052d6e8e846b5d5ab466f7845fe2bacdf94106766580f73a7c75a5207392a1b9411d448c168ce8329e28b72c261ca83f82b504d2bfd1c92591f42d4d83ea220ada4df4aeb53e3ddd10c91e8b95689f85bd81b1b855fc33519c02364743f567c468c083d55c823f2a14ff676c6445d3a40bf3d7840a30d9833d7f6ce58714ed3014178477a50316f02c57b54e1c181f463b48cb65356d45c1dd8b88edef2f5079374cc51e86b22c88791c53e33b0a60393a6cd1dfc727e9d7139a809eae2056319b862ae760e1934ede987c9129571ff055053c4ac4b8eed418329a2726dc54cb3d0c930462c72523427e93f4f5757c000cfcee500418d78a4c630b2d52672d1eac95263a2e807deeda8adf5aeec8e8a46adb15734f984011ca10534902dd97e8e9833a64e1e253168abadc45ffbc113a01add385c19f17440c8c2188e410c349eaba73ee5cca47094997d6ede68249c46032cb2d8196b642a22fa7e95f9930449822bf5ae6a870b9a57a0fbc37ccd9682c9e7769c68527eff3eb62e33e4a45416f1039bf15815b1a4fd2fad02a36eff1b92e70073121cf7016f816dc296a3d8ea31b2245149e3ba6b1b9217c424c374b424cdb2a6f3446b3b0185eb2f12c13d9da1d8eaa2aa529d9a37a21c7bc4cde0aa20c88cb33af0be5ef2e7836aa3c6db8746290c09fda44b422c7d3ebd51855e4a93e5f367dc906f98b0149ad945bda21634646ece6b36b3e1ebe18d7dafa2a32ff5e1f892bfa8528dc71304eda6876f292ca47a91e110afe550debae0b2c52748c18a138e7b9846bfb8e57c61652946ae4dab303dfb72c8345c25e464e4459ca8132348c574c8703fd384ab6b2bb2faeb34b441d58e9a2dc209cebaab0fd7e7be50dff1fa90949f2304639340e6ab845f1cf93abc02d7820e1f0eb99bbf50872b414ad6164e2ce7f785c0d467bb5409cca69067814af79e8607789049556f1bc92bc221694172db6aaf0866a08933784e21793e222bdcbd088886993f291d20b0cff5fd63b6174e6081e04111bfc9daf19c10359ed54cdf98ba94a21dc97f3366469348c1efdc721c347291fdabe1636e7a01ee455c5a88a34716d3c3e337ab7f725eaf8d45f93bf8cb6956d6801471641b6929b1dcbf92a401a13a64c76142b2ca1972d348233db40a40148ef01bdae14f76e2e33bee288cc5494d7b460ddd6f0ab591304052dd496679fef78ddf9424f4a625c51aac3d4d3289378a029dc1ccf3d52e605a535cee6b15d189b674a7b768a007ded6c8743b9fb92e987d740098b38eab54ab9ec2ffe10b56bf15cd2e5d012cff97532248ee50ad2bcd40f6cca53cf7ee4d9b51b220427ff06687a8c701e99e9cfe0ec7d7373ed97375448e332847355aaa7ecbc176e4af2f7554309f0e055a60f8a9d5233ecee4cd679c48d36f3686b94db06d4410480c0c56780659d34bdbe60628c3913145596c87108fa71d463780067f05816f60085e859c14894384a287b6dc607dbc6e2636d03acf6a128d245a3eb2f13d3febe1f4c836bbb53071ff7ad907d1d5ae42953de43b77c28beb24e04f2e448f699985ad32f1f4b413f7b5a59b12339df4c7e0d6518f3c48cc11b76fe6fe691c2472f38cfca7d43241b4b0174235b6ec1ed9b4d0089d764f7ddd284429fbbf4bee191988cd99ab8a81a51fb086816c8d9dd510ae2e2017bb7ed9808d32369b036ff2cf4c4c5a1bfdf3aac79b13b81ee038ac4dbf3aa5c46bf3a0b2288824cbbb969b3c929787a79bcbebca723f58ce2a1f118114b6063fe254f3cc88de77f0c99a1f07fdec276829787a933a2333a8217f39a14bb0e2c66a255660be23c803a6e72b7e8fe9b52f1acfd070488ddf91150a8b0ac44b1205f150a59eada900fd793975e461428114f9b886806c26ebf7838d32c609d6492b3003a85609ecc8d35a8707db1a19480d8ea97c9f854979e353f5ad2c4b169906c09d5c76ca8ba41f60ec6da009ac26ee97e3b338ed1290e57dcd41ac71ff8ac497b8d56f3485d4cc66e9dbfe1e7c0d8a8264cfd54e3592ae50828920ab9e0995cc208708722954041331e20a3e6169fec10248253c94a9041bf32595a0500c75df29fb15bae1799c60b864c52e5de88d252e73f66d4edacf8838aa1c1bf806c0a41b034d2b7b58662692d1c2cabb09fbb625caa08e9309961d847344c55eeaabf897bd567ddf1d09e069cc411f05b2e2e9e542f58027ddd32c9e2559f6917ab91c798450013e7c22d5cadcea4e072eca1c6a42fcfad84b6e3621f999353c0e7509ff4cbea217f5ee62ac5dbe99ca420617dadee6b8b62b54a330a73b89d250b4bd561d45123f94f76f3132dd6b8e7c378cb73bab5d207d56bd404a232854e0a18d5b9b02908c05b837eeb1ef8be74ef289d49ce58ccfa5ed15be2b9b67e2f686f2c8d2d1d149140b357230a7faa901f664406b2df5665391ce7136779af9ccad40c64dc685ef247364d8d3d436d2715c3f2ce1767627378b119e53acf720c4be6cc8e351053f9fefdf27901136b36608a406f7a0775014d8c96c812ded6292d3a6686f3593161d1be1e4dd775fc06dde5ab41fe15299baa4486b46c321e37e504f8dc490b8df180386d22674bee38aeb112a8564cacc93e4c188f3a434040983343bed96bcd34b306bc81cd27019d7dff3a14b25d40b2933cfcaa06ef671d80422f0086b6af7e0f68b0233b136adf0d5e4aa0ee7cb90478d2e7537bc57245ddd945c3883dc142a7ff2fc6185f510267b04f3799de023a06dc136b9f807270602733a36c32e6baa291e410219753a827bfb94d794f9822e5efbc135a69300a36fd4c77cbb4d7dd6b21bf892231002fc5b5dc29ab8e0dc59b3da46f0f83a4741dfb05a3f4849fa5d1a473995b825e99c46c71bc8a38868c12288f6b68427f1a36697af6dc791ea6ddb4f79fa2ad644a36b91209f1b53ec79ba4c89b9743a2516cf7e61efaa388f355420619ccb1808ffef8c11e86d101751d8a9b28adeca50db0472ea7ebd8e35825599ed0007c12fbb4ba61a0294bb2653615d9cacb2851625f045788133e8cde236b8527f6e5ee8e24af3cddb3ffc5a778e757d8507126d68e470c4a804ab3a0f96fbf673ad4deb6b6097b799101c54613b16e60412ad684194319b3caa2daf515651929073d1e135314b1a6fb4ccf5985857d588eefc811a36cf209c9235ae5f45da2c54bbcde127e0251ecce981562349562d801d1966af5eb2de5396bdded2c622cdee17dc45ec0fe338042235df9ffa60567e7a28f5964ad038cc82fe51bffcbd0ee1db36713a104132f024080d02c36ce56c17936e82045d4e60cc4447063b767f32d7dd5cbbc5812d56cdbebfd408a2a329d1fc191a6c3a0ff6832a296cb56111cf8310e7cc3573366f91c219cab770938d9d19b45acb68e12e679fbeb15b0b2916b25861b67e4df8604d136b851b963e86cdee23943d5682e73961ed56a59704a75ada71f85f362b4884856905afcaea006c8e98d0d411d6527292f65fe4a37ee0aeb4dc614956bfd82eb3c22d5c86a489070b7bcb6d93f8c69c72554f0bf35cbfdfe4830a45f904a06d1bb09116b960ded6987df17db838d1f324d45c46d5eda87b5dd4b6e53c8363f4e39afc4e2373102f546c0b1e1434747f8c55d2c0fe9d3c45f458f5321ef77ea932fc65aa6d8e35c6718bc667cfffc9a52022b205cd05389862d833f4145d7ff1faa1b01ba053207a8d4759ea5d75723584ad9790e540e4a5e351dc56aefb993ffcdb45233cf005e3483583dd913f7d8053bba937f7814056871eafbd17539319b4d3db7c34b1afaa5e5e919009c90b7f5421ba0c081285f77eb09e80142cc2e0ef3c5d14c134afe02ececd91480a1e40b256cb5cc7c22676a1ef7f64c287ebfd71ed398d3c3895c3a3e54613971aecbd27ab5c898b864b13b7d245b93d9b8c20a3ebbf15f7d3de40db7043def471452b92d5f10534760bdbbea65508e6f9c94ff5a55e97766802b54e567b3487a6884e8fe4689188229d72a3f2b93e6e5e760f18bf7e3ee2681a5ec8ace6433a8695ff0002798c4821ce720c98a941b9b71bade7fc55eb26cee77f81ea3a5701580961d1c4c0144a891e1acc71b35a8d62f797bf74e1c176873e1ea4b6cfc6a26ce79e48c9cb00115a2c859efa010e13dd12000497ed6ea4f4443cc6f9f6ddbe5d05d6f60ee0b9932fc71d3ea82a4bf5de55129ded6cf37dbba1f9b1d437f1c80902609fcadc9f62ac88239d41adb2c269507c8b503de38c802a00e9c611e1cca60d8ce98d485766b9c53cbbdccc5646deba3d9dfb5c77558d6721e664bd018b93150cdbf2e8f582982ae7b2af28fbc68ad0c3d01d30f61d04a169caba9d9b9e66f8572d1f2a620db0999279494f46a35c35ac0d5f38719f9acded9cc60459d1075f70381a7ac0bbc6f9c9fe7f7c0f25330de70a9324423a06d4cd4e042f5299988289e575a70cf4bd03d6f05f52d76269c78cdde49ca04161e83923292264f0770481b2e262545cb6c985241241a89776a90b96a0296b6b07cf37ac05314de858f7021b7092e74c4ff4b96e5d76e0ff2631ed557f24cbc48918a29be71a1555f9a1383f50d3fb080213132ace63954a7ee972c418b3b90bad9f7ec11ae344b89d3820ebfbc0c238fbc854b484646cd8ad6b709dc78f5c26886dc70d564301719deaae342e70327439283efdd753deef3a5670c6c4f33d2b7c6f542d81eb00ec91d6a697cbcc34d35cf924384b89b051f8e4b994c8a4743902594d11cf4755f76a72206c22f54cabeaf8a1cc91f015daddfb21968dac4fee0f5f13959be3196a3c169d13baf523c7f34b2ea2e66a9bd2113ef7ec2c42f4418cf3abd781b8cf2f7f4f68e622a8f86dae6722ca6991409646153f9f090d5cdad1956fb19409fefbaac34658768d37076adef251a962acd42ec5ed99c8722e699abc6220e9ac7d25c6714ec4fafce51bfb0f16fe84f639aeb76d31f03811141d874311dde42f6a5ef76086330b95fe3634fdd0c5eeebd6972aeba5777c38e65ec3b5d604342efbda8514517f6fbb6b0d622a11643b6908f51029cf3dd31e8535a6abd73aca01dd06272ac45413f0b43cf13d1c44fc47b8fe30c658d30caa4df2be9d96abc49e7a61ac9020e0483da4ec97e5f7eaf9708a5e98bc616fc735de46c0d268dc9beaab674bb545f0836f1a88368a6e6826cc0fb06e9073ee31e7116ae9418245e99d03035b5a91f67bcb1b780c2b2595e66c360435293091c31aeb186b196f0b9dd9ab5c74869331146566a88bf0318cb8a2aaf8b62bcf2ef454bb10e2804194d1d9c70b8df13734af5267d25383076c68bbe57305a83963a3cc98d627a8a794169003f3bfb30102a55def6271f24c14062cd2b64e75669ef9498b624256920f014127aa50495641c20b6582106e82b9db82802c17e16b993219c1ef9eb60686748a423f1ad60a95f56d6efe9b12408362597e4c243d7aec102e33b0a368c93eb624d7d3de25b9d88a420141cbfd4bed734423348812df0a5f633cc847a3601702d9b864b468eb4fe1992e59756d67a4145eb9215b2fcf582f7438918bd841922ddaa79014937057d2fb546fff14e3ba92ff1895419102d2d2ab2b87c1a01d2e0e5ce20e9c387c8941dde673a30131037c370670febfd7a8f1c232de7645b3ebc9c2ccbb12bbfef27832b34f4b98496890f0a6fb80417d0265415df99d0f0f87caa7bb9ac508e00ed5b85561b3698692d7f144ba1356505842c49bd51b0ec4e1c4e511750afe125f246145a644ef51b2ac24b768317fa63cf05d6b5d54114044a6fa1f8b6507524171deb9ec4c3627f78883fa5fb7610d940c346426e8a8f32e9805f5e1e3bd4ac8dd7dc78f792f070830c1037084cc208a49957f2694341438f3369f86872a5565ec6b8d3fc28921dac6d415c8f425527de2d2f8a97d67f3b06f824369b88686be416672596a71ab7c8daaff1d7d25fbf63032d4acd6a41a5ce517e3a62be038950aa9f4bcd39cddd9f8cee040dea4851bc3aa7df65000d279af9297389b3c50e243c35306b78f3966e909b96c222e40607a0314fbc9d4279cfcf5be685a7bc39b9d82eb480de2b8566627276688d2c8c770948e2b28b8cc6089f58c5ea4985cfbaa3296fdf4d623b2a582704d808607cd00576c32da28bad94ae8d75f21af338a7eebc459ea3a4ef55db5537ce2afdb8ecda557d96a4100af624180dfd5b34f8549fdab69a5c4587f2730b906bb8656e38d400025aae7464643ae6320b90537867e66505f049fef102a3b978b3ae278037e1ca396aafe265493bdc6d448c384edd457a108555050efa8c98310ddb2e95fe836359bbf8a3f8c45aa73170188b2585e71cc2805645db4274c494c6036102b60fb668c7d8c1cb275528637f1f19be83435279cbf52c98b703a0e18ea066601e3723750b488ec978e29fa10370a290cf16d2b995a2c57e29694545f922a2af07ebede287a5e5b0f3f8065db10c2cecb4a9d3b8d296043dde3f1005ffce978bd688f53241833b6986df3ca5e40c3d9f5166ac13b9eb87ef0d4b8a077c2348150559175bc282c4d95310f5a81a0da78a1bbf3a1a45be315a640045f7b1d23eeaa15dd18097414f0432eb8e0e752fbccd5965579cb563535683e26962c14a58b4cd70007fd1559ee42c3841ac3aac1496a7cfc6160dae5af27fab0b0935ce7f9c3fb3d320855a551d017a43a855f245ff741065719340338b60478203781ce830be4a4f654d0ccbcba310dfb4d4572dd983fc853d52f4cd3ba29e5b895caa801daa70f86fc67552f4b92b92ef685ab09d6ea1c3889a4c805bb830abe8946aa96b74d08404102ccdd81d8daee5e76f14591e0cb5e57efb2d68847ec2ac382667dc2136a78c519b98335e1b1e64cc6650ca545f474154766ea5e1449c0a44659a56cb8c53b0326328c13f443703b556f98a243ab378399a20ee1a87846818e7fa50202d147a60c3dfba362fcbd2e420ada0756e48698b601eb26f69c73df9aad995e17b4ada0c18fce5eebfd725c0801c7482078a606da302de97db70968f88ebbc64d8741d6c66a2a1c568874051ac16cc5ba0546846f232773913673e65589e3d13dbd39238f961ef4fcd6896c7843815650a09e842769f0a72d669f66dacba0aebe308322d0dbec9d134085af35621f1d643f578cfe6eaa85296c01c7918543efef887878e8d903cc6cc545acb2b4fc23abe7599228eec0e5e59a1e2c30a4a7bf1f4f6909ee0579b5ebb7b8deba804acf1f4881fb05dbec510769a7e6634db4f7f05d47b27c4c1e1fa0123340f81da47ae53cfe8b512c979521d89cbe2810d13f479fd69f63905c3b12f2e339a74de24f96c314bb06a808407b5e66a9ca3ec6cb2e1f4785c84dd2ccfe3761d13e261feae80a636e567c1a8830277d05b26e1f7af7af749af32380b5020236aa2e6d97a7c52d5cddaa5044e0d25a194cc1ba22ff5ef4532c73de8e9696c837f970e732d68508978dabdd61a6460fd09005383302268350c8134f0a900c7a28de4953a874709361875bb48ab37b7e159e92022a0e5e3e35a3f7835e02f69f2ae9e38ff5e47f30214fea04a44ac55f75ae0b8b27687eca9136789ae9bc558bb6880934bb9668219670cfc21d1dacb22ec221570465f92a3e9e0635e41c4ca3f7067141c84f98e2fb9f9896e2c4e1849dd4e6ff00c5dbbea6898ebaee4e455b68cd77a320c270c88ce66ec6eb28a82bb56e948609080c15c880069fc020ff5888974e8280c6c0ee449b56d775e8145543fda03e6c86061059a8e1564d1e3d9816f8a81a65717221ed08ed5cc411d0a8e58ee0ab0dca5f888ab3ab8275c330fd0a6879d574fcbf1691a5a4d55f6ba3120a7558a6fc38d1428790152388f86eb0d377b878b7c023d7269cb54d1cba8f0e94523b841bc6a50360f66dab9df9753b3159fce99ed851ecf1852c68ed2ac3836f0d0ac495f22841e17ec0b92b6d3cc9d56cb26712ef5a28ec7a8ebc7927f73a267b8cb7c3aae424e969d4054ecde5f981dfdd8f10246afc9a746a220344e0d32599cbb63979ba8a296865e1c9f0e4b0d63d9c3f55a3e377f0cec8ff31438cf588c20efd13d8c7a30c938d42a6bee844bf924ec2752fbc32f3a1e676155d30906f64bbdd5c5b59381b549a55397bd0e0ac3489d0d706a4af3d3a23b54a6a88ffac0090a635162a4a170d1869216ed1613b7d419e3c6d15103fc03e7e8c0b27ff37bac7e7a546e409428ed0b5658a4eb4020f9db2d02466af363117df046e3df73656752cf68cc3d0e0a40e253c13ebd36840e6626f035f311165fd07b71a007373cd2a22d0802638c276d1ef84ec9307fbe0ca35b93dd31abb6c406a3de40da9512695c236fa96521129e98c15787c2fa2812d73154d4b72859db3dfb0390d168620db3add7ee3895c500591d9370f8c71de21f1f7c7f1947ca823f6c4752d83006812aedb114acaf6245149393ad640fba6285c7be9bf4db5d5e465884b9f490cbee2e227ff058c8f320b854a61e785d8c1d9a5a37b746e6e356d247cfeec2620a5f3d74796ce2f520cc07839bd52474c4c0abd4eab713e365148d8b9e8fbfef0a469c45410483764a8648b9529950be8d9d830592535ca0b2883e861a2b62190df5a3155f4ceb2bf90efeb1076417cf782bb77e289564088c64d1903cc7077a7126973387687044f62bb71643e5dd963b8388cb7f5f4a9f7fa067aa8f5cadc8dc740bc432928a6ba424eacc03ff33389be55694e0e3ebac0ff77e66da567a092de0e1da4f97a31b6647e1512d4887a605319f8f95291e4dd86925cbb5161b55bf4ccfab805a35ebf565b7f7878ba5783c6f8c62168c33e0c8b83d111971eb40d4037513a05038ef96546415a8470f99754718d36a3dd2955febd3782e30f131d82f09fb0703e28cec6cd97be12d1abe8189bbed48bf1a0c12cd81a3598ea624f4628f586490b3541a0b2ec204a5e3d3dba7ae0063691e3db36ee32634bd94b3920ea1cdb328d8c08511dc3a044a13c2ff36ba8e54e7a534b4a11b496961be66740dc6267592d3f034640ca4c6696d370a71979b9fba4748927d6819c613da9585195d3de7a780bc4e6df3e45d8735656eb6e0f335b3cecba2ddc75687df5c67e75514feaed55fb8b19a3d6a90d860d4810692521c7cf07bb1e0abd6eac654b684c2f1952d9d3505f1da8bf323c898beb9891986cf0f54199469bf5d4e3d13e91acbeb074f16f904472400e4a0760d95b808f8f6353ce8edea9fba1cb2aca702d6ba11ad9f67124f37f0d9675534189fb572f13112288a36c36e474349f129797e4044610550e97daabc22013809aeda5b57cd571dc9fbaab505f65adfdad49abef17d5e8fa2c3af47886a4de92fa288f870a7942a6b2a9e6857415c3daef08b34c5ab086ec2f3d4b05a94167d95b80eb515d000f72dc570129aa3af65a58d27dd99152c4a2a572510bcb200e35d8819a3c53c8d93852350b6caba8c726b0e4de3ac5670e1e824571639f466bf5f2e2895a288dda8b87b7b5a277d691ea182640622e601041e0c7122e39f3945a5cfeb18f284312f63698964b27d6b825cd1239a852fb4cd80a251cdd021ef29edeb246c9f59c096f5c3679db4400d63a4b3de983e3b1e3bd922467c9827da1c2a80e8efb83527c732c50f1c38a06977f67eeb6020e77309867b4aefd9cc764303f97671ee8fcdceb17f287b8c40df73c3bfe67cdeae1d26f9acccf8b3d7801c53f50e9b18f760955fa5114bc414fe44efa3df45900451d137780dae4d05e5d3a7d86502af72ca66fb9d10a737f3f0d35335b74533392bfd5b5d78684e66df81c32db09553733fb697ed9931003ad5e13b643cff25f5106111ea8ce164cbd8071ed9639b4453500b1debf0807e83b203e8e1ce28ad40542f1b58338cc141d53d611b1e14e96616a5c8c69732d46a048d0fcb9275711c6359d07b960f989f85ebeb6357114d9de301a7e049716a60084358227fc0fda900d59802dd70a5204e9850f3ce7e9db015241d6f7ab66a8e4107e01ad1cb43e44a6371015c0aa312d495d54dd8efabe6ee1e647591f544cde443b732aece16e88ef06dd31ce8d391e4c8f67df43c6e619630050a612c2aa81ec9631dffb9aecc2dc23248d0827b55c69ce126612180ffa17061ed8c89957165f65b7ecd74270c144e7822891b658c483df86687939ecccbe42b70def6be67497f8d73ae4f017c85c58fe6d72b5cc920ac538a74462c02b59feca9beda25e974d7d9ef0396a1d53f13d6f82177b2ff69863c8dc69dae97d8677eff50510eb9ce5594e51e73cfce354b450c4e4bbd8f5657b16eb66050630f4792f9e7f2ff53f06a06418c5836c26450e4e01f6855636725e5522aa460ca474d2a6bce7a445462dbecb216b2e8e786c35252ddd5581aba7fbf75f9b6ce0153c31fe89e466be650caf64a47fbd71da4233fb616ad274740b159edcb56b2dee9049c8ba3b3c84daa854ae26e395d40c367f28aac7226bbf1e7823c4017c6364b3ba10ef8d4f278d97000568274b5123e3fc3756c343fe34b0e3db540b0e8d0153c812e68da44a68e1fa39153087fb77994a291df036034b0cd40abb2db9ae53fe2646344c55d1848aeb669f18e40b905e48f0d24c6f8a773b07676e985822f4e51c6e6a6b5a1da8caa2d4638b4e0a263781f1bec907e48b1a27d458757ea8b2cb5f609e32fb5950b69f09cdd792a28f9a0fe2cfcf5eacd312129c0b50a412b4a3b98dc183706740f7c5c3c80524fdeee886785c2af3a4afa3dff79e0909851db33232327ff4316fd18c16587016384fd68ae14e21aefe55342bb345bc925a76284649d7545df97c99fe5b7da5cdfdb6b6db6a7cac98dac5e1ecaf29d6cc318e4d6fa9c511590a39d237fe9bce41d11bfcf7b66b8481f698106d1d900db7148633bd7ebd6d9d39716c8bd5353a5dfb3df518aa2b4d9b092489724e521b1cf8d8f43c5029f2465bbd702be4ca4fcc93fb57e84f57189d24886984f685e5fa486bffadf8fb07dcb815d55195216afe2347ad29faf1d7f1b60c50091610a855a379e7e134d69e6cbdf44df5503ba2b17c04a33249680d2a47e612a5c9c4f7b80bb2b67a7265c76f1af783d6fece800b8f3aff0f2f108858948d643d7a3de4e4786f39eb1b15d9e0b27f78657200349f98f29d7faed97736b9c17e55c85db6206339ac69ef2382bad5821dc72a35546735bf8c2c1452c38f1df045cfa62b01ab7e524c1ac73c616aecbc6e919a6737ca00bab83e143c4fb425c49b2f3d5af33773b9c906fab5f93a91e5ff5198f8c5462bd2fd08810112a8caa3ba73f21b1ea09cbec3c50b3e8827ebc238432d688c17cfd6b81f74fd5d181308ed8083410a554352719094eeab7cea0fb7298aef76718619d470411093ed5ace21c2c7cbb97e1c5815d2a3e76f4822c6b61758117853fae0495980b1dfdc1d392a3bf8839d25ea3bdb698eccf97440afaa56538832f64949d86322ff71c83fb3fc5867cd0261d90d11d085f13510423c19ef8574e93daf4e429638182dbdcd8fb907c5039a4953afc04887e54fa74a2121533ea997a59bbef9c504cec6c904b1c0a51e688b8e01da0a9f7adf0f48d0b6e970f39ecca7d46542c339de8c1e93a0cbbe6ea38a03cf28a2488b00cfd085d3221f958d59e4760a8c0da1298693582abb9d2887a778bad8aa443e0786fe645c0235183aa4a9ac695a327fce8c344ed0f7ae0ea3c1fd213721984b4756ae969fe08eb4062eabf43c7e28ec68dbaea44b9d48f8e912abdd7ee777a98120718b671939064db0de156305d9abce21f836b8a75906658341a4bd3a8a91121263fc55b147ed518b8926c71d568145da46a8919814ccd5d50599fb5286936f6f06c54914ce4293c2d45a75a3a2a4e5d0c8049299e5c4754c613b606576474743b74c7faf0671149fad137cfb4a5e27ef1ac255db90f1654e8808102761ca7176a6cbdf037a08ffb38f4458bf0b341bfe355c37ac9e799caa1fff41b67637efd5b30b5e6889c063b51ce688e83c2201630ea5fca921c85034f9285c641e034241edfc115645a11f46062af2c4e541959eb5a4d68e817deb5885f3abffc919659da5c4f19dc512e63021839082c7d9784219c7e9932f8d13ed2304d378444579489cff6af87e7391a603e5e75546818c4322924751111577484f45a82c11cb9b16e226312a6fbb84a6582680b57d2b8d3787d5875cb699f39e23c242a4b1283d1438545924c5cf31e607adb63b78d13954899dcc0d73b5b3fffbfdd89ae7247ca51eb5973d84fde2b9b1c4d4ac9ff6ff14484e43f3c74cb9904d61053865afa6f5e8b7b308c0dd7454a46cede94a04063c1c5f3cda738a4166a000c9edb3ed8a67b5fc99e33422d42a637e36c3880f1c0a3ebc91a295dbf7cee5fe367a1679c7c46a8daa0e6907d6f3a140cf973be0623ce065f0c23ee9e1f743a01a0746f07c21268035c860adcce3564ddc6c8128bff9a2bf0b3a7a9bf706a7946272dc6b5ded4e6a8215db9ce570994a859dd44ced45ef31b28b382bb78182cbb62363046d9582ea67e5d1b18d1bb75b4b1a4b273fd33fc0ed6d71e3c62ef05cf431845d0cd7a8ec022d99e510823b905c81dced0878e67c01bce59bd8007d829e813f0aa4ca21b2c922c2a5672a179b78a5e9e9b2a37583e3d01c01f7d0d220c3339f1825bb72a20d3c8947c7e1eb2e3db033be9b0557a0a07a4180b9230803f02e55bc11225d77b89382ca226afc31b550e527c77247886af0fd52002163397e02916421143817a323a300586cbf070d1a9a663d5bf8570c92fa4fe3171a300583f5e5a40ac4c7872cd56ef80fde20c005c8ce88945d56f5986e11010a3d92345b6422fa29e9ec6a61d4630c7ab255a819c6dcd892122b160e32135b4ae0394ceda265c247da2902d881e68bb03a9bc50e747dcc5f628936e43aa2c61e4f38fe15e41e9b0f1c8cf1599ec21090c42da7cf02dc5c40b28630b69f6de51dfa15256222092f7fa435029bd37bef398287370bec24c2a8469290ead346cfcd5a5f31db0215ca96689c58294772da83278ca4d16c2ca85f9b2852f32c70fb5c7bdd71bd2f97c20d6d7ee2145987a1bfdb09e1ed47af80137d29b6b20c5d2dac54db18c6f2f91ae70abcb2fe97c25405837b2da7e4b0fd0f4191005cd790ef871da101dc49e220bd448e0e438764d9c3ed3e386a62b376871dc133bbce1be80cd8e8511e0f77e9ca8358a43dccfab8a5f30d7ee602345f9aff481043a30a518a3b84d224c3cde947cbe641865445eb091602dbb87d2c9a1f43f0b62df4d3a8b244997ec9d47d91d2e72bdf2cd86817181564de630e86f4cd01e7319ba5371dfd357501bc441300c3aa318077fb99b6e6e6abcd138acaa49aff6dbebf40f4a31719d87a9d32be1d5b9e9c52d46f5d65462d8067e9b77b40067af2399ce85333b72f95ce029588ec4b89f846f63c80b8b8a4038a7c837dd51b0385042666c3eb97bee81f2c8f1349ecd6438d2c7b39b854528e4c714ed2884d5010cfd63ad1f1070204a57ef70333e939cad57e8a81bcb0375be44e72f3ed81b7f32aacce702e2e9da4b470c25a0d8afed6d601393cef353f6c3424ca7a41a9aab6c6160ee2c7b648b90fc5db4efe197c2a4e40aceef2d50d9f2e91e9153cf3e83dd03bb486e40e7445598b895ebd41ecb1335c2aacd102b349316174190d0c188dec70eaf6589c43c5bd02e93f850357b173682edb3c8c87d0fbba39b1c7b1e3fcccfb8919290df4cc8c5974ead4ae989bb46634fa6e528125d74a199b5c1fcb0e21d20933763f87497a737b9b848da70df4500fcea56e4b3f412abc9e1c120ea2977470a0dfbaf549902239c18e7d8ee6a678215655d2a035b1af8cc0fb4917d72073b80c3eb51b404e14e13a01a568992cba92fbf7e760a39797bd90451aafe61d80a35564ef4fc961ba20dceee9b052c0a43d265c3b0b504fc3a379b06ae868f6d539c2dd429bc447ec6cef3b786ef12248efb51c98855393ca6c6d095cf34b0176ed9112c55267aa2ea6dabf39a169d8c779aa375a31c200e0a7725f4cea6d3d0424aed22a88feba01f579e51e10c1f3d28150c4fa2a328af1bcf498a7584b0b35dfb5e2afcf2f5fc7fca9b9ee7a980045ec308cb2267d136fd691d2a41f600605a301d2ffd6c8f6bd75bff8ba288e1843172ed179347200c0b71fd557f28efddefdf27e992c1c7571570678db1894d916be2be2d2108ab61382963b3f3cd91d2e733cb0f10d6d8466ec7bb46b34d81dd4f48dd2f18d12ffabe67d2c2e5997817140a721b7235c77db2ed8344eebdbe31cfcc7e69b7afbdb76c1518371bc64807e678487fe78c928a0ac88df88e84b194670bfa6eed126db7e7b0d885d5906911a342ae84e52ef692fc0ee4342190631d9595e02d694ea8fbd7ca6e8b62b9c066526479325290b98a57cb149fb895415f9a70e9f5211c04e70389195c31067fd1678c08eaa9cd90b363dfc7d5708a2fa29393abc4ce16a80913257b9ca5bffc09e09c25a493238d08827ea5428b29ad583c6c285ec43e4703d96d67fb1433a61afb2cb8f709741d7736ae8cd275730a868a5b26fc5878a87bc04302a77332f8a4010548541ac69e0773cc190e732aac0648345b9e3b0bbf732c1b2ed735918c198aa74f1a3fc37c57dc077d4c715660ec1dc16645242353716c804ac7d5aa363583c45e7b843ae206aae4a0fadbc1c2601a3e9da2e1523a472e9042b93ed92f55e1c30c4cfb9cf9fbb7b8a030d77bb1bf95dba106100b207c2e7bebdb160054742c3ebb31787fbd9d57318f0f6356d1db7f3ed198b426de914607b32e83036ee3548428d6401f596872ce8ca1596a229f8afe7b218f5f65afde0f9ebc894d940e2517d20a14d8187d99622e361793a4795b29f1f033d7356f36ff96c8a74a95e15e2f2706edadea0fb0953375e2ee0b50e9bf58ade69167d4ee5a0cc58aeb739d13368b24fdc56ed4f8638da1d66085dc70345e11bef642a8bd35df301c25f4300d4b28d79ae897cc709bb4c6270f8bb3f5f2aae5cf5269c238b9a1b33972376630bf91aa4f06dc1a8c6150ca15e6c85e1ad530bf03548dfd35a42513844e6977979a368fc2b0f4b99bac2c9cc816114036ad444cb292bbda52c95adca8bb7bdcc417a4cdf69d2f3c5dc980fe9c8f602ef4bf883a66033315d58b7dd96bbef363b62398503b274ff477d685a01e8bf3fe7045a7ffea83cda83b6695af7edfc5e8d0e2e32e31cbfa29f5485d8509046a6cc5e9dc0e5552f80c8667433de6ad4237952a1e9f83adbf3b136547f13139fc0d234e5345d6953ca66dafe094463813f3ce0726bf4611a1d02dcb29571f2dbf5030874b9700d457b08bf3ecabef954590763575d975e3387bd7e765007c28f9a41b9e1848907ae422acffcc19ee5e69b1cfa94212b5306870ab7fff6838348651f20fea36f65992525c2ed97fb42fbc7c650975a64dab9733d029138a66a14c9f234a660aa223ef501af4bb742b2a66ba662f65265729885a9ed19c8c5e81c14ebd3415457bf2be4c6855200d1774c6cd8baa70562325b3ca60378e9eb32d7d89daa69a8c0fc1e4746d6bb05bcab6cfdb203c5c9f4d3d3b12ae6e35e4dcbedfc1f2edc0adbbf0da1fbce36382129c74b0065d863842b36cbe6c5ff3bf3b94c532324853277cc4bb394b801e2f1c5924357db6e975aceccdd12e4442ea55d34bf1c96ec84521e4d93aaf979e9dd722578a52a8efe3fef4bfbb322d0c14afe1a4c23105bd195adde8282592bb7808ae2a16a2c3121b33f9ae73027e510dabeafc27aa2c3ed368a0b564106df434c0bd0e1aa74f5175f2ccd2995b6f1faa465c6e52e9f2e34b5aff6e46223c4ebe7a8e81a146c66f0f94637fbfc58bd6df426b06f1c1dcbbc949337eca80a382937666dcdbdc570bc0bf5a0539fe31c1d4928ed90abf6303459159efd0e75c7ea82a1030338a657cee106d221b2b16fadb7a0028572473b2bac5f069b1eeb52faaed5831b2b4068973c7ff014699c1a297d34092c57eeed555065cb925520fa57dfb8f358bb285e7ed6f96cd9fa30e6abb51915d28f527ba797466e5cc60607b14070a3fd29ae19034705ccde043ac6229887bc832d568e5f6a1bbdac86eb29cf06fa319bc094ce3d08fa01893b79f296397486f3d6d6ce2f46168a33883a24ef1033687f43dac94aae753d62796be5c892288c0821fe5da5ab0642f9148e29043ef257cdd541d754f1f8c0d44af3661632f8d81c5bff701c15207ad16a7b7cb8f1dd56bc9936c0181810406a70a057a290cf06293b8bbce346d8b71f8567bcebed82fa5829c9ec5f13c9b384c6d802e0b330aa59529bd065a849271d1251c1ef0e220bfb123678f5c19d1cfaad9cd00ac687ccca12c7f98b24d9f498fa19b937ba21915f53fb4705f044db8349b6a741000a7667cb3f445173e9bd601598f4a18388f53bbb02292c41c5a41778fa464b54335de7ffc051fabfd525e95e89fdf82807c14338c84d5224e654d7f8921abcb808e5f997010ccd3c7f447f9970bff3c14dc8be19b60480022801263de5716d21664cd4dd964a800459464b563244340513144b24f7366e026e26a136412b0073b28c5b841c6ac4a9bacc7efebd062be5b00eb9197292ce83065b5d66df25370d492b3b781ee29374a972fe5e707b048cc522de62325f901c307460f9cea9565f21df9b2660b5327e516fed56b58e6f87234a47485bf42ab2269662fa7c3f8ede4881eb7a93b983ee7ccc069856549753037d18a658116d6f353e6fca7977454eb5619d06614d1c9aac249cb706213ea66f02a7997a96c88bd2e3c86c1564dbac24fa0d8951e377105e457ffee9a3352ee7939b314ab4a236388356b7b44399d1bfd8f2f195730bf2981cf3714ea5ca9c8efc2260dacb57b7194375b8d79d78b22305f0553ade9c535cf82253b4464e10bf2079c1508752f1aa70feb56607682d57aa333d687c1ed45648a8aa82eefb49828103126cca4dfdabc5324c1382aaad4b4a5d0b33d8236fabe2d8fd04072b13eb906428b3c183b19f15270d1963374ba7706f11a9b6c751bbd5b9b1daa7f12dfd4a650234f8c02700896c0c7e1b54bcca472497c62125a7523b3b68eab6548f929b8bc442eaa7004e7ef163cd5bd5702dd67a227c70044091b1bb1811b1d44cd6e9b5f6eb9d9affe181ecf51019807fa09095065f33a3375afeb9583e287e2e8dbe65c7601e4472b4af94bc149776364d402206281845dc951a62b107eff1087ad12ba42cf65addece35ea2a646b5be62c806fe0027c320e533e82bf823385a0a6358f371c125d6f1bb45ae05ea78e2ec52e5b857c85d86b6ef1d17e115822ef8bd1e26e97c42cfe4a61c6131818453996533bc5e7846c3b3fb02c1867a4656ea5af827e2264bccf9aa75d26c34a95585aefdde6af688e49c516c47a5121741441cd6b085595302ded6e35a269a3f09b10f3305135840439e5f4c5ebafc7a39830589392fa3ca19d4aad934564e38f9f7c844e5b4eba7f43e6661186f9ee991d48bb222b8fd2e54c59870d68e5ff79a1a4521d23c277ca8df67d4635b70b597ee0ba782ec782a99fea0019ec6e481ff753faf682ce7dece3a378f2a608bed7ce58a1811c0922f1476e3df4e158ddc2a3997a061ba37c0df9628bda821c30fb598f7b38cbf0ee7ca87c5004fb4e762cdd48b95087e47d20360b39a799bac40e086b65636cc924b0f84e9e0defd0785cc1791799472c1fa2b95a3b729fbb1513a255e6dccc185ee86541cce7feb15e3c5d06169492869cf36970fbf8758d427ed7ba5dfceb13c76e6259418fd29a6c85690d0a1a4af3aa1ce3519a7500b08e47458b7fef8925206d6dba36b60a85b857d073e14b8ae822fe97648960f93c5058febee016946d9090e23058370042803b235ef7dbd9cd7a3fb6f6b29c485a2ebc3eca93b7663c4844cba8f40b56f5cf86a6baf8ecd57f11813bb732d0e6c6af2a042fd593b39bf3ad3eb5bea7349678617cb6d83850ce489d313b9eeb705419c43fecc73c7dc2fcd5980c1ddc3f7056e1c644d5713a007002377add212d689c1b3607422fffa29ea5b4080ba59aa2e7f84d9c8b0f664c7e6f4f5093d2687cd5e86b09a90d8b5dc7a45f26898196a1323253b91cfa13609d9d78fe1529c59e9afa2e7fde885bc8caa1718a9d39feb4fc6fc2da61c58bdc83a0a5a7f7713eef1945647a3cca1df0e4ac4d79e4334677502fdc03316e76d59f0793d41e6978254825c510a2707a928c1115ddb0bc4e595403cb7ab1cb8453110a5df16e02200a9f331fd98f7237a1953780c4bce0ce1d7145534ac026fed37447e0cd006f01fa2b407b725477a4c3239624e169bdf05dc833f1c364a92fc57de7b41eeb60c769ee5149fd4879e3d56c22ea0a92682202fbf746f85498590f612203fb9acf365b86c3d09f1dc347634be495b8e7d1a0cd3f50b13f8a88a3880f7c8760bcbe20ea32d72c01369a7530a19a9a8ae63fccd2c9d436b5e502d57e403cdcadb2c931c4205c0fd0152825b48999d3c2534ae8f77e13cbb8e4470c314ced8427a1753dab083f5c3edd746b995c4c69c64e74837afefb0b6b65257155d6eb4776038ca1f31d20727ed584343e8005e2a0f1c76468f75535357b10ee9448511925d6ffe3074d489d4b0deb29340c064d7f81158827cf3b034253f54d0a1dc339264f1fbce4c997c362056399c33be788342fb863ed97d3a100296fb9c7f8f0324b26144e9bee47d1036d430f66b0cfe1b667026d4657c095a44a5a725196cb0ace6df47dd4699acf74eedb404b841ea79eb4b392929c05bea32df2d81f80be5dcafae5e546bdcfd77e0b1093d42c76e3ac2c1a2f8467572d3993ed391f9b760fbf5d1629400cff45ee09c101182d51154074c1c5a45e109ee5bc4aa13081ffe8126b8913233aa9a815f0d86c62988aa1e14dd1bace5548b1ebb0bdf1a9ab41ca8a530035e65821eb49910858b16484bcbaba7d14b124c5fed08ef2ccd06d2b0cd54c7b6b9167242262aa8afa378dd5b118ab2a4151cdbf38e2f3156d64bf0e5001ca1720c2603a333d0e7e14db04aac5ed3e25cf86f2b74bae6f556c14d7fd3f03444dcf2b99ba483de2a85fb7783e66509614fd7b9ecf6f88084a9b069530b33392cad3116e8da5c5eab6999ae22107fb31840c2f59699606d07e7351bdbc40ced27551cf4305f5bfe7441686eb26cbcce3294af78e027c8587856783022b8a73e3508c51d468a418014b7f331e2f15444fc9d1fa4684eba3544b4e1be0b26ea76944ed9acd082d4143b8ea8be939330bfad62db429846dc3859f6b104527e7516b13753ec0fa76b02b51b42c73619a6aec3c1574d72fb38c661e24480ede813e77f963e85dd3a55d45239be939af95cfe1e2b3dd8edc896a24f23e22511c559e5db56ad607fab145d51f7a4988f2dc4d09dc1c692375090cc31bb4ed75d1c5857802d058ad6f2aeb96af9306b7024419565cbfe14340fde420366a6e22abaf6b84c29354fa225cd28851d0903f17960e60d7f9e610b93baa0be5f25ef4cb52ac085abfc5d52be504c99680889e1fbc2ad4ea306c0374bfda646249ea0bafea095001c13730886b8e810d2b450645800f75f62139234ad83156dbd2316602f926f10be64d2234c801e5ecae52e1ff9b83ab83836b8d44b933968f64ca07821e0ae768c63c5bb778f33a948cee246b41f0a6de67ef4a02fda8bce4df3bf71dd3a239ddb94ddf81927cfc2e758a73bffbe40d83400b7792771ba7df088307f56d3d36bb3d5e16b2c4ba00105b4f0f2096923e3ed3d4b5fcd15aedb5979172eeb411381888622a1e2e4db9951c969c23b3501f29ecb9faf1f8f965692aca43fc9ab500c363dcb5baeedb7ea98b6db4c2e2177fdb19f69e5f5dcfba9fa7879250eba5a07cd668c2b8648ded2b041947964f07067b4b22c8de62760d28d8948c0f5fc2ef35013317f5f69051e0fb8ece8f8fe0b587baa21e3a1dcfabe078b3504802cf9553207ed792279623a9f6f95095bf89fa872433d483ab7cd4eeca17993edcf5a23a901f71db6a529527123733abd48c4af6fa64fa7514658b7ab4e9354f863fb8a740ffdabde7002e10ec5bdb95f8985712da19291785347e60d8c757f9bb1fc0920f9d2387d8da76c6fe2c231ddbfece77490a75dd37d8f88ba740aad6f5e736a11a894faebba4b711b0a49a5b1c35aa9c8341b6c91706eaea52593e8cd051036934ea87cde521c3fc35729ac357570f99c3a01e3568b3f72db10b45fe57f8de0551f998224f9bd332267926c4e2a1c1da6259204b579ba3c69fc299504edd4ec3eb84c030a85f776bfc4fa03705f721a6e274a46966be7fd522df1c7e2de32bdd1d6ccc5dda3e8db724bf49064d5dbf86d74c91e100dd72fa8b37de90f152bb985c2789a41a0e51c11e4797a6a17f77118f12a1d16e010d393c9317c5b05857389b3e80b69d2778511f9b5265e72a279a324988158ff5eb62292ef720a683a78bdbd00627cee75dab2d208d9f55d1eabe1b486c8368c72fba2b3a3a4b9a48691e0e0e9c799e2e40921a7262581e09efea09bba9f1af4bffbd3c5b97aa8580c84781bd972d32e38b09d7de8ad4a80dd132ea22ebbed5981c533c2af917dee5479c04b72821a26d3922a1e8bd256c3a8f2ced518fd60a8989ba85b388ad419a3984546aa3e5113a396735c7e4cf699409a5b8ef5f6bf23c3c089af7877c17a0c7f8575720dfa43bf0bab3e41cf2634012559df797e26297e30b6a6bfc334e628ca938946a492366c4b72e5f8a9d2d080ef8da393aa9adbebbdd55782902982abb0c644b3e7c4833b9e5ec8afa43dfda246627dab7ed629e7281ccf9da3a62a9d81b1239d708c5201c573b6b56684c490294dfcfe6776b661c5192c07f8c4e7303bf042fcf8af82d417e513ee5fad20a269a83674819a0083822191014ce2280cc28d1954c4648614f4e2ef15e0b8079c42561be9f6fbbbdc3560124dcaffbad9fa42ae280edc0431df986a7ceba901237f5994bd8f39f7e614ccfa7eed80d39bc995425772763611ddcd736459789f8fc4106533c8f718b8bdb1c3a8f3b6848bdc4177f32b213cd5a6e68a95bcb79714b3acd73fb30efe8d8d812f258aaf964b2e954a71c3aa99a85419bbe85cb82672eecef1a011ecedb51cac2d838f892f7c7809564c440fb640f683368346b68e938446d0c1bf59570d4420d67382dbed17f1fc916ecac26c557d2504ec883c0a8c50118e06fa1a1f588951d10189a0aa879a0b42ee8dd75e1e874c54a5497547ac7c2b18345b5767e66d327b9b9d4dc93cb4b76b24d5c7bdbc3490dec2f196bdb298960b317e79962c744023a5be7e88fea81e8baf081f75dbd7ea3f55946f967c15b1e85feaa64bc0dd167dfa03c3cfa22ab9af532b31215ea62a7dcaab73161cce454e0642225eb57062de96f12241ba16d8e25a2034f321be5c34cd7177f30033071000fdcfe1245b3750d997d4c98096ce59ee65f55eb6ab514a442a7bddc38eaddf4701e9899c94405f352482bfda10e32cb01976bf8d85b5476a17771958bc47c1f55b69caa135a18b88435293c09192caadcdcf117f7d5f6086c89ca2d25dd69bad28384b47f40d26ce0720328800e204b26a0bf88a58df4d6203583998b4f8e51943fd9ec9c492d95cd438ef9c1a68e5482cd9892dfbaf10e578a0873814e49426e326cc7412d89ab232f59cb6cd5178007da3dfc97821e12a18ee77b7669414145d98982b0e9669ab439b41efa25fb1b0e2fca94a564a4fa3e862d1188df41d744af3e9acbd39d43a7f73c57476e2d884ed12dacbfcab50fa1b044bd1122e2de65982d545ac959faa17e693eae1942bb4f5d90978aca5c51ba22daa8cde8970745a64d365db77e09c5827e7fad8e2cc025b35431b46cf6f222a984208579be544931228c72e6a12c7528fd2921712c3280eb4555200be0d90adc37185105109e1a80a5e44abfa514f654dc310bc30dc408702f6425983c20fcce09a56a3d081068772b922df928e4d487d0f0eb2544bc1151c3c4d8e0df976d0675828b81a9aafe0bf72d8d6466b722877ca1aabe4e7394323b5f6b1c5e3f259d0b8dde4928bf2f711a10acc3d6187f68a4e40d7e40d67f6a9120965af6cf6ac3834880ae1277873d7fda5063e287f2c0633ec4cf3ee8562a897a16a38e310a0221598f2ea44ed3ffa0ee8a6534fb9805f797fcf1463e1fcefde03ad8400626ebc00acd18189378fe99f486f0cd5b1c67dfba8e7790819faa1a4e7fae071eda223dc9cd37f7ea1a1b9f5673b3cb04ffb107d8b3b671f0edf42dbf394bf302aee967a9b9a38fca9214edc47473ec46b6fd17054f26c1db4e9dc2b4565ced6ad792a3e09cdbff0034a176b1aa924be7943455bac5eb4c2963378eb325bb7cc74c90f8474888802a641b58d343c36e9e85be4051681b28d3a64989c635ec28baa7fe98ddc18ae23d81ba32a6a258ba9995d8ab8d6a6d3b663f9e39f8410e169bd7daf34445388900189216ea91e89bf84e63190f6c69bd851a6fcfdc2d0a32f3a34bd542d4e5828f6ad18f21892e3f4fe33118e1904af4655c8737061216d402ffa894425725c4d846fdc01201636d282624b7f0291eea501eb4ad8f58ddff3a282bfcd14d56f4212d1e3149d8784b7f5795538aedde89237d1eac95e9df95c19e6b69210f6cac80c61c1a94c7f20744bee9c9e4bf8ef2cff7684db867da9af3e321a1899a0b8362abc69087e6422ddc12457f960b91abdb1daa589f7c4968de0dc6f302f862c3057a35d5f93fe639a1b9b3d21caac7cbe08d9e3771355a08c529039cac285c36fd3c92778576ae535dcd5043575c34130c44ac085d6fd9379e6e23b347a70df8b3216fc20a79eb67d3f932000ad3206da03891d71254f488943fe0b2bb788aede17e31092c4767ce36262aa65f470f4f724ed7c847e6dbe985fe3f3f90cc7311172b460ed0c56591b0ef97a65fa3f5ee6c9167ad349e9d6284ae6bde762dee7739231ab2a4a31ad1ddf3ec317d3a85590bc5d6041716c3355866a657bf41dc9cff801181954d47554deb94870c128107e04245eeb1c68aaffc92d0ade01b814974c1f68356f3f24305945b3cc4b964af1329ece8c6d3cbd71d0a210df41aec20785b9cebe09b6e20fe6b945f41b4ddb6dbd8b18ea1e8d6ea9fecfd8e385bd0ac3ea6aacdec4917aaa53b8f66846fd9d507c55fa48d24e6f519591f6a90b6a996ce0fd42d7b3088ee5a70236d70cd2933789053f45d17ee3354ee65000155519384a3e9fb4ff72ee7f1465ca94e3c0281a47cc569e5cde1cfcf1d0f3f35cd63698fe089846f0f744634c68fe74a5fcf651528fecb7eeebb813e4e31f1fad41a6573e0630fa717e9ac5e896a83f3462bcce89c154a86e5de1307cea9f7c3817c7e88cd480b05512f5ba15aba99bf39f08a4faf15c1de219e3ec395e6d42519027178a985355d238899a29d011e840cac340fac99476a610270c3da359e5b711806c5633f9fc6b1417af8891d16000bf6c303574513950d1b068971852fc3e11bde4040cb501b7f7150b035897d537069489739ad3dcaa76e3a4a00bc715fc3b115938d3d907c22af30cc6f0739806f46ae4d418a47fc455c7d7301169f5581a13fb9aba87dca0bc115bf6abd12efcbfb383cae527a1f1f8048219630b470398f4d8062c6cc2e586dcff23608eeee011b4f8c519271ac276d7fa728aca79cec392c0e8805e192b6e0b5430d97412bff78c4fb1b9c2621be4d4e0cdf90956d3f1f0a59f73576265c5d388169946d3c6b7de55bfc6ed27f673d168adddec699caa679aed64c4ddd0824c2f1f4e7b21780e224110ee8daca9b6d5f1159f46079fb36e22b2efb09ed1bc91ccc40db679a72677398179cc98da267f9c179b3938d84d5fd44ce108b53b8676bbe50ab85046b37f7fc58f2fb537ffd69730d9250f55d35734186e58c4df9641669f5d0d17a0d070f60aa5a552feebb8b310afdeff85554f6bfaa4252de36b583e0f609b583922a4b78eab8bd3570efc4bae0b9ad81310abc2bec86654d5ad5432c0f6d498d6f264d0fbd5f9ffe678e90ff9e2f909d5c2b774a7dfe40a642ea6fcbb41248668f7c4c839934e928469a2aa9e2c121fe2a2188b489a9d23739b8512cb51c46c31ab8554429d752d4c5c911909ba75e7ba8198254fcea5c14766412349f2620bcd0f93658f6e5c127398eb8459ee75c8ef930abea95d92a95b43219bcfd688a4eef8673da69bab8c9e5c52f8906657fd44b36a789532decd3d7b0f71062197bd8ab1c86761a36a86971adcdd46925789156ee0e192503522e9f023d713ed18b9e3b0a30ef6a7bd7365ee2d3cfd93af9296bf54fd6f3f0b2c96a3f4e9490057e496c53919a78ab55679788dfdab6fbb6a815a3d3cff823120c10146e225cd9c565cc5d4ce0590313b50de57e875272493b4d9115686383e222be1a7236f5d45de263ea05c0acf2cfdc63ff9f1d622e8eb534a904d84f114479f29a40e21a4c2d94fc5d284a75050a1eab1cac1641e2660b6bd7c3ac0d0447447da315aae17cfab3fa99ef254cbb6fbf2f250ca1037614d8ebc9a142b651f5fc95b0ba066eb1385cc5e7680adda5ad8a55478220597af9da7f59e94f13a880dbff4f50e57eee010dbfb84046b568984a84693dab3e254273bd80fe5ad50af85f3e750525c8f8322dce3cee3c6274d052243dcb8c8142cb299902163e1a9255cdd96f1c1c1dbbef8275110be1df96fdf6aa0416c111c2a4268622b8ac43038aacb3b5e9126b57cdb97c8b6b3e57bba910b75e6b7e24ceb7b8261029a61d3e69466bf30cc4836c7ee1285ddaf22c73937c3da821a826936bd28ce8c30555b8ff2ad21401e3b75a25f0049b30ae5f220a9bc5c7d15a7f239f8a0a6f4ff53d81e6ad7037449341915f3d3a61e1b736e986d4b57343642221f29992df5574ea87a0641ab9c4ec7e2eb404799bf66740a53e0fb0451ac7f21621dea87c93d6901de9ab92d4f47dfc7c4fe570b1eaaba0a3da38fe2c0a3af5ab2ddbe2baa14442ee2021417ee2c44f17dc66d919c186afdedec20e12daa8521a2636f82b1f38f1e9b32af672f5b7c1bcd96c0a163e8de7e0852101bdc3b02a94a23a638bb602c8d7676cbfaa813ec92009c62418246a24a7034f4251d02436807a53918e9146cf8d0052cca130b6553f63a2ca95eb5a311c324839f0a88a39b8c696a35af67ce4068c8c6229606fe9ff9916684980aea707a38d0355f39e47330136bfc1086f00d1f58de2b2f92f84314f980b242d4d1d8af4a5417bbaced3c5f510eea9eabfcd8d360cdc46f1ae5d290686ce710631a3800e98f3a293bd94e142208f3fc15f8f7f9183329a8f18708e53a0cdf2cfe69369a072654328c0367f5c0a57d57617575cd7b351f3e68ed21bf689b1ea920eb2a4d0c62bbf8d64de9b5e92e0936b038ce1921e72d156a5e3635249c768d6df96288f2830eb5be67af47f24cd5aa912c1e1588ced87cee543de42cea84ab2a3700767b2cdbac3b9e8e8a04d75759987dbc63287a33f934ba0ca4c6675bbc337115dfb80fda2ff04e4b0453f2905ad7c89c23fde6d10aac74cb211469a31608c4c80953493865721cb4c46510143e35a08273626a524abbfae9244062b2d422aa7914b72893d9a2031dca17d3efb9a633ba26334b518af8a77fa8023ca3851a854c14f655e095f4240442ee13ae4a629125528a4c1083cf6aea3217c21ef143586e6e9398088997eec4f503eeab22e133f01ae565afe93c38d549bd6ea06d9120942769ec9fa0afff5b3837cea0e81df3dc7c9eb3fb08a262811f05888a786163586854c0ee9e3a3bba03d2424c89c1aaa2e8c4c38c61447e8e7850f2d88bd292b7ee379b781797eddcb9fe4faefe1aae5720024f31217c3d8e20b6b959bc5c963eeda64703c4a55af1b850f0eb80d450f4e0161fe75982abfe71ec04f4a88888d8886cee296ad247b5eac1b89385ef748bcd6b7ca575d8206910fc7947dde8bbb0c607c83fc729893b7282104807da04e71851cc0f11fc27949811ab0fc260de4f187b76e2b649636acca60f48e9d745cfa554d62d40c58ce349abbf8de46daae2f71cb54a817b23ffae7b9ac20017965c61e48855de7a4feae228e5914ecd49303b68b7613c0b9aaa2c334ee63070c9a8e49d091103e7b746c42da6946287249cbdbcbb170ad28e6d1da7b0805b35c3ed961edd90263a4038580cc1594403c834eb5e59db405b2f58f865a8a2b8feed0903769fdcd705eb4f34af3d6e9dc500012e435b828d2bd6462b545824dc71781e945535eba80d95d5591c57cf897e0e98db29da078dfe5084afbd24efa4085f50e1c80a5135bb810f0ed19850c4fb281612202667a167894c6d93afffe88b76254fa0557d95695514d6fab0448779e20de92cce203e4f9f8c9ecdd43866f80f1e0b3be763dd27d23f1539c1f012c148583d56a295ffe9e99c59cbbee15418875122acb3ca3a970e2f7f0ef1147a0947147dfcc003057d24d3b11fb038ca4cb7310640eda0f57e2eda48b0dc8cf1b339bc286e770dc50b3337c62685a7d481879495aae4c3ff03d232c254207d0b11ce89ce8355fca5e95527f74eecb97b493c0d40a9644cf0d5d2840173d26806e0dfed21c323b04107d0dfa7722f6e9c5332af250f61732c212862fe794554fced620afe0e0ba1624a66524cab88a329744812247c1c75b2ba2929ae43e7807f0de608fba44a739b2000dd3ce0a3099d8e71292b02e145bd6442c0c00178c63199e19d3e5e7b8159bac48d16b98f172e48d94cf0338a15020a543ffc45fa2dad323c089065584b97581a3a4ff8240f430805a09361e2b76fc67361b8a3b68a11d9001bd3da1768fe88a7024091084f2185bde4a53e3ca270b9df9b0b9333f24e99a3170b8dfe166e7861d8f382b3a17588c957445cf4a21ba5114c38bb3e57b6b0a09af3ca919e29f6755074ee1a72601d917e8e8ec8a613aff6922aa8aaf9e883fb445899b9fdbf5d3f2a2fce4193c27d89522b389f5657417d569fe6d4e5002a931fc95d75f9451a6c275040cb51ded759fbfbcbb03b0c77e91e258752a12ed4f006fe382fdbc296e1642d9d1d60930703a9ef5d7d1c64e0d779bb69d4a96544a1edf12452fac23ee26b976d105a08ddc4822a7fac3269511043dac45cd76e7485793efcd2b54dc9b4675765072c716a23fcc2d813ad128c93764e2b2f033f80ae3a4ec4b26c96c22e41717b306b59bfc2ca10091566e35ec3c8e9f8babba1fe65351dbf4da6a85e05c35a70408731ffa0e1db290ce326320e4de125dd5f55345d52b47822b038b689ff8b171468cab007aa993aad2fb8784ee4b7219df2b5326bac776b1cb6b79019ea85ecdddbc6e468fd2094d0153552728f705911b2bdb995bb688c3fd8c6f269179af0e86cacb5743b46cad6b4c128e52c1e9fe9786414547f285fd5ec7b0040a54afcd73e6bf92f4598541aa709c32df5fa57d8465a8e4bd118c27c41a98ffd47b29c9c83ad2ac510a564401255f007a7fba8d2ca739c181da6210269c712dac4039649485902c90b9e0359543add763bdef927f5d8841f510ea089e0c6fd9b922db2464e376eef21b0c57afd5ec0d9d816e5629e07657899ccd6572a3f402eb14ac34642b03a1a0129d32122251ebdf03c1833afac50d7c5bd7fe325d4bd911c72ee00f7f9e49ca6c77105e81732c6b055d2961f4bf02e73f07b3e5615e47d821421d72eff9bd2137fe8185aaf7829c09af3eb17d48e71d9053e342548964825eeffef559752aa01379d751698c115b17891afdb4f8015d6494f4019ca50181645940c7de298e9c53d9aaf7f005f2514d6ff7bdd4d4aac7bba6ce35fd741fd45662bfc2923b3e32ce1656bb3c03b2fad27b778c4397d0b6c24460b90e40763d7b8ffef64e2860f7aca178a5308cd077f07a1d290b837557246a1aac61ffef42e5cea4b4bfe37203a91375476c5a423f576fd214f82d2d99815c72fe6bae2a018f05f92e15b3c1457260f38f010bf194e5e562b9e3b8a36c67995f0e8877f9cdc9b76dacf7e4f32b3b425eaf814b38d56e5ffd21eb7a14525efce1539b40e3aa30b11247a1b47e98a284640c1231698f529eb643943ad237ed68771d36c0a287864c1d3d3fe12e29761d79487b4c4870ecd407d623aec2a8a925a75c3eaba5542adf69d1fcc4a3cd06b8545464ba8efc26894bbba522df4aafde798277bb8fe50ad7f3bb5901d0ad097570942b63671bbb8043f969d7b5ad18f7fc6b7947b6a3444d5f2aae287e603f268c1510daf470e6309241f8d1e668536ac05ee8e4a510d32a7250fe26c7715b3a2cd19ccfca88a2fb410abcaca98a69ff5b1500169a18008096887f8e9b39e6e2160288d772d0a6fb3c36eb2846569af9e5dbc35309357b5a590471563e0213bbd5887856e761bf3fd24d691a9b52dcc27bbc65de175f4239ee0c2a0dc87ec45b396063c81b9e421d3947a99a9aa82246bfbbb69d1fd2c638aad37ff8a39139d6d42173347197afb007dfcf4dc8d17fd05625b203319ef73488d2e42111631c047f9aab8f444cbfbaba8098ebc0967f5969e875538e0a1c6aa6bce3d5a4c7edf8d36ebb035fb172c732bfbe2bae5d520425043ae72dc8a790c6fed7b0c4f606a6b1cfad8b848ce7f3315deeabd5c8a3843b0419103af4720bcecf05ed2d91abefbb3e6e1ce61efeb6e2e57b6309a536d3608dbbf291eaff8248d173486ef7e506d862509bae9f19c84fd567bf3628a047cef9385447e8b833e33f28836af027d9b4ec0d397986859eea506e8fd77fbcbdc105bfa2227e4f48f0b3ab28db9fe9cb3d8bec63d8a5490b057025837fafb6e6fc8bd2a51cd3a7d4e571f311caccc0c727f0fd67ce15771e59146c1454bfbd4642523b2ae4b6f968dd4a15cf1878aacb69e4ab0056ee37e08352ab628e3ac1a9dce5ecad5c8411c0170d67f2f9c280debe6c0293dbd12b65826aacb0fdfdce0a19887e881cd4dabe7384eb087425d73925fe6984be47db6c3b5005ed8156ec02c92a044deefe9ed6f80a2fe6e4f4b6f662c2c325d4e64b08f5c35deb8f6f84d5c27c5a2a5070a1de51a9f5cb7a3af6597aec19f7e54fffbddefa0ebbb311c6195c0638dff5c803a54ac75ce0b8d9221b3b1d569c2ef8e63f84d7dfd508b18ad1f455956f44d11bca586c5257f7063ca6b2d7afb7e0c3160f5cb2dfb7c2cba0776c3c3e29d73ba5f40f1084aee20db465b205c5029f7040583eb2a1cfa4989330a9199eadfe377910a9fa265df9677497548c8e6b03d041ebe6b45a9c8a054ad2143919a73ad4b51486353c630f23de0c71f0a2ae1ad24f6f75c7a33de10517e81a3e8588c2307fc1a60b3236cd97007b2a0b79e4e45f88dcef2ee3ae2a311532aca092350182c4e0311a05a32d7080ad61ce9cbbd605f5d2bb009e667bb1e75fc03939bb15e3b2d8eff04260fffde8033d1908a6586e489e264b3418fd813af0cedf794f52f8bfc9d142903467e1611eaa9c111447ace094e0cdc9e46ffd9b2f531307a8bd61760566a694c85dff0284d7cfa3f37355d8077d425d5ea1bc894a51bba65792fd6d6666e66d752bc8405ab6f4ad0e226d3029f534505efac4ca47cdf15e4abffa19f52be20ca3f3cd2afa7f2c01908c1e5d24246ce1d6f306718950e0bfa866bb565033fe1d9427ab764d2d9c0bea5c47bf244be25b759a2c1c2467acdc625f87e183a0245fcf0f399162ffa0239735d2d42c8d4dfc2010b857f52474c563b30e2452b85585b047163094f91455af2be129707338cf200b722ee39a5a94f622bcfd7965c8130d3d7d1df660a3e21b46c8545969aa09f955284d1864a45f369ed7742cb59ac643b76a3876422ded4403d886843e609ede4bbc4e611ee4a27ace7879b95b12737f4c14e345ec3df371d2f77bbea89411f65e810b09eb36f1918c4924762c6d7f70e6ae59ad718f1aba9910d386be58cd7096eb05b3ee90024567181b02a34154424685ab5f2a9f754d2f4719ac7c7c78020a8e4ebcd1196e0c223b055d5e6f691c805e50c33152b714e2061257420712166969799c4199a31b33c139b09f9fd0107a349468e4a90621f2db05425540d3a0748a7e996ff3f5e34576114ccd555ff4723a53146888e429131e22e85d471a6f81f89fe290b5c8fab6b4861bf08fda3e7533c05a24855563ef6a3330e53cdf4dfaf3aecf5eb232de1a080dbc38f7c5bbe9182fc342d1c14aa2f04475dffa7581dc844a9396aea76bb69fca7a76a0b88604111ed3312c3da53c88eed61d5d9e903959f127781d7bfc06919db3a05c598852b5f62b25e828ce43a05b6ad9192589b6f300a14aed4d0437ea96715299646b33a9411c95fe61a12ef7543c2e2a97890d2afc51d563b9bdad94d5bb48d15dcb5a8046a2bd346dc0eb25d7139cc2c9898cf3b26fe60ac9e97f07ebace68cce304ff551e31a5053ae59faff8b88db3812958725e8cfac15e7f6c9334eb0f23449ee6f1c88f05a1f42cfa15c6bb9497ed01ccc3c2fe360936d12c6cd33d2e703abe6db0a44c7f8303c94a3e215dd6663bd2c14b2a7fda7640c056b160198c056603bcf430aeacad45e64ab1d96024a4fd7622ec020fa98441fb59fda50f7803a65c500d318e7e4d446f1235c011d90134a70c3779a3a1d5a513e85a2f703adae40af0e550f1151f36460a1e4e986b4593b9c04d123233d86eb6e09c33977a9bfe1f894e5bb01a580e5c81b7e297af932593eaad42e9e7c7f1c48491f5a30ac5cf4f593492611a68007b7f9d48d98e08cb64542762898474c2182c3c3d9b23ccbf3cd2690a6e0fd0e61acea86d765338c77b3cef97a836eeeb4065bc5dba144da5afc89a381d1fef5d29e91df0bc89b104e1db4fe62d2b2517674290e6449b03674d171849b8b78a97973ff8f508ecce2cc2cf889288063cf039f210293189f8377efb0294c7a9c17be8afdea67e7394f261ed0a95e8a09d9630c8225931e2418d2d02e3e494df201c53228706be7612f01457f8cc570249cf276172fa9949684b43d2e37e4765cd0df30d9af9106a5a3ad8785244cb8f6b0744c4f30ba52724140d7e37c91ad2c104e3de2d1a3a0aeff28dc1db4776b62261f311abda657c829fb925c9fca6d48119386174946766dab0ed40cda2896d57c5d7c9e3d0d443fa38034b4d1e2765d53df2baa7d5f2c9cfac90ebff94ecb4662deb6bad360e1a395c2db9b25524926b591c05278b6c9d93c1bc2b7189c9d4141f81e587ec59709948e74304151afbe97a0ce4bd85a3a528848384f8bb42703f5c6288d64cdf57ad9754421895c330868cf531c9e86cef600214fc10aa786a6347cf98f72062c3afba86326f95aa31e40f13e329571bb469e4ff78b0eb35a61873ced78b242939172d23cc724b293dc921df44c66fd98a7b158b71d83844ad0d38a12d50aa92334607d0f711a86d96f13a8ceb79c38e14daf0328d437157d53dcb4aa084de7fb2d2b2070dd22c112fe4ae19854287677b5fbe0774a9e55217b3aebad81bd51dd64dd74c5c896441c598e211476261e1daabf11e7f7b497e783abaf44ba7f57afa85f63cbf844d19ac34564758afb6bfcdf04764d1e377885e3bf0c4f0b9076fc53f763119322cb74c5b8c5e59507051f1c9deb92086cab33e53f9ae14e35c5717ca7ea7bc33ff95410d089ff7c7fb2f8ec955635992fa42f56d7a9be52143a60b3571ec0b23ac829747fee551f3590d9f23ac2c6280e853942da17e41a4f174056e2d8edccaa62a8e3c9f0eb4158b17cb8e8076cb48d2c17c03424fff359402a6f6cafe1573e28c6889157ba497a937c1b320f605cfe7612ced767f35570cd5e25a98ccf5984a93fe9a5cb2ec65eb7da441ae970326c01773e35735696d3e2bcbdea38becf9c53121bc280a9cb625e793165be7d588cd218b49ce2f26a3dad4c2b23060c34496403096df7fe1d85baa1ca40c7fd6ebf4fc8ae8bbd483c3068b62f36b8e754179418c7edabf62a59d6808ec8487a5383cde3a742c608480f7ecb0b3facd37aa0211df7c51aced46e19a4c825e3102feedbc33e31f79b932825fabfab3327df168e203d645fb70cf994825a4e51f3d40c294c750bcc99ae1a58dbdc4f128f729b68f5c300d6553dbd33f313a419e7703e7461fc991c534540aba8e3d0108bf315fbb3d1d5954185957fb19bf694c685e7966c90973f4a830b4cbf360e9fef548988346c264d87c10feedfe7a91ffe3b1618da652de4b5457b6a229a669461741e12990dc5042868f38c7e46033f1000f2199da5e090001e1468f643fd35df205f45c4680c959932b876f9f5de02127110b1a8f902ff4724076b077d60cd36715b4bdd3d7c22439837ae9a4d50f22e9f09df7729f899df99705f43d133448c6ab3adce3e6ccc011923e01276ee5f219ae57a84c6e241ce5bd8033bd0bf6bd6f6be6bc70387d4a5570910f5b1cf18bd4f3d4bd3e889114e255e59a55d89d1622b4ea7ba0fffe97304f4653b3675ff67ba287767fb894f4ea23bb3dc9152444fdfbb05dfe4afefa397e828c192294a995f543cca9822e3f15186ac5e2a277710924cff32299d88e3dbd571c6aa93ca611ed8898977339d0c395b7e4d8a5682eea113dcf0da81f2d448b8496e3d80dae14da9b8b6663a66ac64de8bef4a7d5c83d2d80a1e95613a892dffb443fe2348cd2bc21b655a64ea8e3cb87c2e5c00c83f23b8d302e44da30bab7ca5af3d58e2f09a588b2f8803ada6a5fae919b59b9be6f57525a8a9d12bd77e6aeb82219413a731be5fb293fc8499f497746194e6be0f85c1615e92b47a5d9d4d05726da4506498c3890ecbfc6342b0d517dd50efada7aadf9938990820839cc21d96db63fe2c38b99769738bf2312465ad06ba50d96cf677a28d9cb30321ee7c9deb04f6d71a39677f6d2548fb27c30be47c0863c273147ec27802e70e83ea0277cfd946cddad096f6c539e8d79b59055d7f5e6a45a3837186586d379aeaaaf0b889aad0c72ee106fda345c51238108a3f76d8e41d389c6d6e508046ee0bb4cb02bfbfeac16de6e5fb3da70e385d3e22556c2d5a5340e6c3c2c7b330318e70b12ffd822223ff352b884b22f0619b0cb2ac8edf4ee721c01ad8ea39316f907b6ae935376162e28c69668b8c3f633be766d5aefc3ccf11554a7125f32d0921bbacdd3a41e08428eef4e73e8a8394b6c0f0fdc36eb4ff9de371baae721db8c74a96fe44002e2f77d1751aa85a652f3a24b1a767dc04102354ff8dfa127980fa35ab8e6f36c5a387a1438c93b4dfd42c18ca28571913c8571fa351461a2d65a602e0b73b01f938a88a2099ccb2bc52a0d036ebf7263cbcc2846abe0fefb865ac0b7b140d6237863999304ca5d034fde3315832ccc467f53e117a549a5c715760abd6dfad56e4c6322846e572f6c0f9f2229f33ff90ac857b7522106de716760c364e7cc7814fb79b9fddf80c9671a800b03e7ae1b827d47eac4933d431321c6cc4df9a6a63867e128362f351d75cf1f4fc0fe16139ea5c1d72629b5d70e8ef31ce4c988b21050e4ad09781a1d4f59be80712e998af1d9c84096c295cee39f57e94c39283e087be86ad3d0163e75efeab3b2fd63eb9c2ddb253b43668a2dc626e5c5b528dab7ed722684ea67e04094340d232c731e5aab5fd3556eedcd224cb8c79ed5d49ede51c0bc36c72e028323b5d0718f1f53390f58a50aea857caad265928157d3c78857541955d75fbd51435ed1a1d412f286c11d60440133c9cb492c93860774e1fd8395cb8a60e439eda948f2344ec2967700430ccc40433f95621c688fa174ade1dc20447ad11b1c1a3ff14b12bde52e942f33cde5f5aa61328eeac4e5e5c61925a58782bedbe43da35c0043f698cbbba5ffa712730204594cdc5cb33d33ba74243c908fe237e799823ad1a77cf6e9a4bc2d19c8fba94829e9613e93ec6a495f85b6d9b338926da8f7f40c4434a40cb5038315b90e64b16e53e74bd8e44248528c8a92a9c6d6b6d136cc1a4b23a374a34002ba31b87d37ace4f4175e4222b3aaa8f964331dcb440221a5811a77c97ba1595043bd2a9c06fa9d1a431fe9b0b55415aae87341645e56309a5975c805be15aca6f3f8a26fa77f13e4985c16f99e0b5e3292c9e040df0349bfc72b9213529d098689d25296a59a3eb85fb35cdcdc87caaef7bdbf8fa7ac34ab8177127d221593f669bb8affda1a152fc8f4f91ef5bf09ace53dd56e0a13b1c27acf69323fa3099004f0037fe1d29fbf63189a487ce18b910a4760244060415878b3f32620bbbcba425290f5f6155e87e474f81d8b9040b51f50aaa984d0acf19c35508ae4ee3ad765ee5128d44b5c408283a2da798b145e6e08c4857a01f79d697ba9971e00e8b068bd3baac61ef3bcfa1182fe34c84fe2190cc786f2d65d673fd982325859c23151535c7f79776346c74ca4b229851631a49167458a3c80e851fc83ca921f50c3ab9f4f918894edb06d5ea13f4a6f6bab2e120d6ceb990622cde9d8333402cd3e204fd9af91fe0b378eb4a8cc87f81301d3f4c80f4a8f912774a9143b38f307ecbdbdec07103de1d20553c7b8496e9aa1ee32f3619ace111ce2bad3ca7608c5cc3f6c797b1253903b3a2ab24e53e58b3f35e79cdeb86854a077bd2f6982ab6354b60c920073825a048d70a7f842f01acd3d51a0b35fd4c958beaca4ad507f1455cf96d23d9322d97fdee0b2ba6058bd9b582c9878658a7a8b5592b0b8535bda571f4a04b4dd057c309512bb8f4c107012a33cc3579e5f798065f06f7fb96d8febf59e4ad14105c7adb630a00fe467d9cccc91962307692b90cc76e60ef2fcfb06184d72b47b5e530d0f799a28cddfde71cbbc74ad7dfc7f0e110ca3049ac1bc71fa40d730bc6e9b26ed714edf3b250494190c8a4b87902d1f6ecf23477dbd7626a3d3490060f0b629b3ecab502542ad49468faaa60a2f20878c12bdb692cfd7905a78950339e0e2c1b5eb8f69839f5ecae748590f33bcbfcfb2be1ccf038350ee98ca3ebce47602bdedcf630cb372a4cf47a8a7083288e9a4e783c0ec7373a3dd66e85af7d21a723f74ff1e2150c39e4a6522115bad468bb212a868d6b88c7cc2c1e07a9a7076a4cd9c4719b62d8006cd86ba72f9caa20a42079584cd62d1a149f468b825218c41b723d7b73879ed88f99475edc849d8f7665cfa18c354c01657ce105136b382903f92df4f878c7270b3efa598bb9a130a6974a77ab21af7e566cbd5257868d3a50dbfe20d49d9e8e2c94afbfa81f2fbcc10a3db7932145f7929f00dccf9e02aba3fe8beeb192d49e867c23549eaec5d4230daf7bf2ec9ff30bada0907c38c733b0b0a60c3d34fe23cf64285a083264c35c36da5c97947470b58ce92af1a2cf9833ff93d82ff412fc2ec724c137d1114467edad83aa9c1dbf2a63fbc63bc650bd5bdf8b17c955ee7f84f58fa35b9a5462fa8e4b8ca21f19f6de1b4ac9970447c809803a812dedd17b5a267815ec00bb658a948a3824448af1ba211c152740f158a55e421a8064e0b795ef014330d858cecadc75f235abb7e34ae00f932b0153cb713ab65ebbd8a2101b19dfdef9d33f61c3becb1e71ff8875dd1990077b0eb48c97ce9f3c9557851ff0f7dbe0ef020a45cae07d3f1b790d773689643927871e80534f7bdef7665773985053940207552ef5e433e650fef81fb7b7236894b1e072fe02b945d945cd58b115b9f6e209419cd3dcc876ac811ee01d6bb81278410ea1def33eb57b05ff320e361366978cf524841ecab91265f9bf3f90e30d7acbff49f5a3e3eb60b1ea63d713799f873a18d27685fb3e8ff129515d12b7ea717ace543ae0f42e7a7bedc46d2c9b0d9ad9598d6e61d28f6a68ee2ef5a01cad7adfdb04f84cb2245f494caf14ef39673c4ae89c9356fb31e4ccb00e36004ed256e347be3809d27e950eb094a4bea89d714bfa2fa939d3793a49786072225ca7de747bda78d3fd743317a527c8a0541b3f6048fbb783ed2ceafc747f37f3aaef728da18c0e6e4e0f67c51b14862b385213c590e5bf508ff44f157672ea6e6fdbad8929d6f99dd740ac4be64719d8679affdc13c442fd35a0154d763c0c5c384ecca1468b0e031cd2bb9c3ecb59008760dfdf1527ba5e0d3815520cbd87bd637589826f67aa34961b7d214029387251a4c6db61364a437adf9b1cf720abdfa5ae66a4de316902319084c46a680db313c7514dc29d435d928736f698e2aeb385be990414f28874ce17e9892393c1c22eaab0ab8b8946ffa07172c9775aec07de561b505334f02bc2397a3931d00a6d971d874610b31816a2813b57bddf250d61ed8f66235e080e5517a198410b47fd5a9efcbc2b7d809dcb60c219b978828310e20458ce12debc44367650622db27713659526b820b765037014f05c1b1fdcc4f5bba5e3a73938401bd6e38ae5fa5073c4aebf19e9435f628acf28bc7d5796a9107f9bb6a9a1286db47e08100178fbc1d7b88cb28052cbb9979b2594762822bd58360cdf6f79c1e4937f4d30548087568187f06e4dd69e09ef539cc3ed4d9b5498ba99b7c1addb31fa86388b32a70220b954a338dd0c1f09890a6ec95cfec297f41df5de8aa1e6d5b0d5eaa477df37202b4ed18362313ea4024f274ddf65b800f4e431b89f4c91c5b4e3ed631fc7f0ec25c868c3407387796f638099d34212dfd4e95beb91be99e9b0fffe966e9dde2dd96fc9f2a881795afc489f1c0b4626d833e4fce29477059e4873906baba5df22e416170c463e07cd61ce70e78a187d6302cf234d7249213532f63df865f86b1c34f26b93f968968e260a2931dc28ac4bcda6cd9f8eb20b71217aa1b4500593003366070ba8563c0bb2eaded3eca11030533a448ffde4380d8299ccfaa84719c845ba5f7f150529e62ec641cd7f2d31056b072597a6eb533402332a8d2feff3029b4daefbd11d29773d149bbf2d64de923a5e4778799f1c07edfbb20fb17f964f4927270f36bae74876bba971f50c84f2bc44a6b4b25e661b55132f881ea944e5bdfb8d526ffa2097bc9c674b5c8e7f1699d4c71330b827f80ee0b5e635dae00e7b0144dd9cc146d7604675dd1e33ba41480dd91fd57c9f9b7bc3bc77ba4f7ea7262f3bccfb28312f13f9ba597124388b8c54daa7ffe8eff4226bcc703da253a2e8bc74c1237c54f9a568c914d03bc75e371fc63f0cd834691ecb6369761489841903d26153d09e44a0e2a709600e7bfc3f7c90bfea330652530ba7df2b24c4e7401008d4cc888f53a0c40855dfd32df6297c3bc0c2128c7b7df137b1ab1f40f963907749425a531c8e6c50bc250bd0b6bbae0122a834c6a50992fca4d3c1b9fca3df8370529fafca9d0c762335feeaf70431c5895fd36c04c051a8dfa91672c42c62c5fe1410503c220d8914da875c47b50587db32f6dcc23e82926f852a133c737b1c2db72e9a832fe6903ddcbcfc8cc2b1a7c3d5bbd67b4423c5c4c6454fe1c3be3b3928fb81680d9b90f1be5a907c5f5717325a4c70bfca92353320b7a9452133b9e4d5bffbe37941b2a5111e252342c968d834658494f035c8726e6ef68e72c417f278098fa5bb3e02745062b7613a50f0af51b10ff1b464171e21eac3f4013c83aef11b3f8f8424ad9c54adca6a181db471385f64448122f538333911464b5a2a6434767539a45766ff54087144e3a0f91d41a7d7ed836d46a4b31368661aec3be44537db6c8aea78a37648174c5f45a876d83391c1da2e26a9dd4bb1c8f9f48c06487616a899550732eda84eb1e43f8f84d49d70888d153574c119e0f7f048d72096df309f49f7297bab58b6f88578d911d96e917e58e69a947c03df11932f5191f12805b81986efefa3dd197686bf9f2ccc5bd2d6460a857f0264ff465dea173abe2e718d53debd25996fd3d920cb96aa5aa9e8321d66dd0c75d28a5c653888004fcc326d9dd534567eac83a09db74ba08cecf42d94c48bf70cecfb2e5831294c42c145db5cfe7fe167483a9eb9033fea699942d1625dd3619242d228c8113f8aee35510de984f7c80b9b3d7b5c4373a8ae11d8211943454d6571ebcdcbd274addeb0336e8d900b32d22cb9339f02b2bb8f25c191cac14f24169bc932eca64caa5e8f041c5cd2b8e775a5bd952293de4c8f388a8888f8a9328ed1358063b630f81753f26ad02b30d734be26c4b5bd2b46617c36e5ac37ba27c82a3b75abb40e16be563d5f4197ee9390192eba4c92eed7dff31777f4ed9c9618848de35b296205cbbb2e3624bc3dd29e22acc046d015f30f305484692ea17906360d30598672ca4ba353dc1ed9f8eee9554af804a102d135f98c431e19e7abb33a3fd5526553eebc037575eaed7c64e19534d3d09e9c6cf9551862b7b04b6cd5883fdf9186e6fef6adbcd8054fde58da6c299b126200039ba26f80c6e6f4e13ca5e971176bb80a2b53380e380dd90ea05e23ead70e159937aa01b4f4e89f92efacb1400ba4112aef9d73d7e2da747294ab3731aa9caa751df45f04fdf84aebcf59ee167a3100f45ab03225255900916027b133b5d27fa430b7d3ef7659f3bbd5c3224f648a6d0834996e9ecdf6da1e3505e0873d32b4725f25c3e47019e7b7d6e02c5f1c288f852a92951e1dcb7fee9abb91196749b7f52601f4c8dac899f8de041c49f5ae20902519b9335916677cd361a6a94b28bc8227afa474c05f027919e5d829410ee0d49f36c49f2e529f66c928c34a61f21435c935a93554e2479a48dfb6ac9f31b5fd13830cdae3fb71ee90d1b3e530c69f6ef0dc354bc98be9a0ce877c939c1dc83c79bd908e5b8203797843a7b45c759b4fc25fc56afe899e3246c06f349e9189c6cf040019e701a114a9a315c7f6c6cf3f79e2943cf893e0ddaad877f823895b55bd06350ee9b759ea5690c882273ef269491e84dc2be57392117d76de543618a539b528b4475895cf8161301d249f953e5575c45c99674623f1718ef7dd4f2ff84a558085afae93b84591eb2375acbfefb1e0a540b616afc9fa602de820cc7293d2f8c2b1a5352541bbad27f38cd675f47beafc0128e56da18238546bb263f53f69b5f2996a8d772668764d42aed72e87fb25118c4eafcb2a78dfc7ce28758ec94b2abe54acfc83ca3f073c9722761c29d9d7bfc09e04e1c8ee3f8a723a24b0825727bf2d096589b3333331cec0e6ad1d62c082f3ccd1594536ea394d2cce3dbf168743226255fe0b54705f96c38980e8dc39576ec735034b83d2bc69902dfa5add8ded67fd23932180f71bf3effb31d8ed1c16ec800b10ea27ebe86354c7f52ff55f11e1783a2fe6a6f981bc0bb62b790b1da91f8bf247185c9db3ec1f7b1fa0da6015ac8cfd4f71970c621ea4b48d21038fae2b81e0432d9662cf4c0351ba12898d43969dfad27b6131571724e2d2658dcb882942857263730085da75de046ed7236aa11f4500e44516e5fc3a3da7a2f29f8aa6fb0bde5c30290485a4dccfa0e4286285c82d9d2c377695f392f5ac75bf7eee210403949bb1825d4e10ca1a1b94a0122b92bdeafae9b7247ad7f89a4389628a9085741f091c56d6cb7cb10e541a88cf338d9eb699752ef0de0baa34b2c294bedcf779bc72fd694ca62e70d84399e5036f835c1076849d02c531bd172ea0caf1606bd4cb0605c9ee1c7a15f5e5cc7eee666a27c8a314e34da53f7142650c4a096ea35394d84b77a67fa1357cbcc708d9d2a5819758c8e8da4a67a281cbac08b0ca00168f622d5828b4034ad54dbfe299221a84b76cc63efb54ac6eab17f6f6eb2d3ceb52ffafc6cfb69a780ea1e8ad60f90ea2b3e02a02d2b6ca66a8c450e974c3f063b2707da20f11ca5cbcc56454c6ade1167b5507f1db386d85d2914dd17cadf657c7586bd37d687dabe34a3d51d9c887670e90f3cd78f6b3661e02ea381d808ded75c093853bef96cceec5704b678be1a1a9fd2d75dae00a7ad8dce4316ac5566b6894fd9fc2f1adc31a500f561566dc43f7294c45283850287dad222b3f77205fa423d537ef4b1d0218076767f08165f4aa477bbd17174b285841225e36887fe3a0a3340272ef61fcd48c40d9ff372c78deac5073b5e7717b242e81c6df5c3a0e35aa7c06b763c99c89842b040c95348cae542ac29bea00cddb4990d5384b83d1ccb63c13b23f70ed2318db473be03990e05a1fd65eb2602d412ff8539a2403da11a7abb7f0b3909327759212600ce12acd8380f487a7dc6378be6d23cea5b3339d40b0c3c7fe20f6ea4ca1b9d245bb5167b4e8231485a950289876d2c2048abf55a9799070f8c129de52f0347a6a185ffa78dd950cdb3b193ca73d345f69f1c3d6efa7937089fdfb30c19d0f378da91f257bff73798cee185493776e4c711522998304ffb32fd5b7bed6a91f3c74f301ab11cbf2a152f9cf5c4e572f29adfcf9a0b7ca6e5a7ca07d9f51b3d6001b91d1efb0e8cb4636b74a8f8992fd7c2173c7204480e852963b4820f8c33d613046a855710d8246193dbb533c76d4eec5c441dac75dac8ab685f92b142dee2f96e1fe3f936b10e52f403f1c220b7eb6074888043f479ba0a92f0861f27399f6e3ef0732f8b2e7c27f4c0c533a4a5dfc47b86526915433c552daa828634ef2e1e13dbe59a7a15a69644b7ce447619adf5a60b4a204ea64ad26858c253caf08de102b51dc4824dc340f5ab4c25107e32608152dacc660c244ae4c8e39d7e26ab823ccd863ab06b14f02f0dffd22e130348eff2af5653fcc190979ea3291bb9db57fdd7bc14134f76196553ab1caf547b01d382eb756025c5567dcd8ea4acebd67bf8571f2a1882496766a60121c33df865930279d71746f6c8f81a440e8be5bbc32e8887905305f9322bca4652f02a538daedd4b27297d6a15aaa9ae5d49ce5275b8720caca9751196dec5f77ddeb913cae14c0ba7a1c86db351e6b5f7a4f2f8d7077b774f4ee5bfb0068777f474d3b26d5c19c338d6c9045a3c8d3ffce12ecffdc6082e0a7364553d56c94014f1c188bc4351de5124107bbb9a7b1d1c2032bc9be52aea0afe2cde5bc60c5511cbce92ce34e7f0356cc47f3a10ad1a4d1bc282568653bdff909c6ddd97783e29ae1bac30fd45ed809727300172017737802080ae02c99ea1827893424ab5666f78726de198f9666bf0f17c2efd4de52b77f43e762fb6eaec1680159e7fe911c27f5d8b244373aae70d5428d8d02a30b9492eab5dcf339c34f9294e84419e25562ce7c6acb2bf30cf8ad94716bed4f2b9828fbe170ecaacb3f6c9c97ad28a85aa13c865d59fe49b69837f7309713d62b50ab6a8df520ee09b5c44cb96a1a5b6224218efd8fcda666734c1736324bd8d1cdfcaf6d77b54672f6ff283116216938ee592fa6816f1243121bd293f2308f6e2484e00cb308a803ec386bfa228b53804716985d396c024fe1ce1d5ea0e63b18ef49b2879cd636daa5f1fedb51e9fe47393b41a133c8b900afc82e7b9b21c43dcb24f5f9d92adc42d453f1513a8571bc14d87db7df9e08443267db6154895133d8f554ab442354124f01792fca277a62ebaad4a2238d74aa815f8018d0650e773cf576b66c8262a58f74f7febf2ff92915b555c0d6eb139f98a5e72d299e5976a00ec4541412173b33f195af2ef8c50facdf5d4e46daa533d7e4f3530d070c8db14d7231b2d54bcd7d0460b2fd8e6ac711b07a95b318b183838812ba3d01a9d1a05a9f26f10cc726d395fd426abb2f13660c6031d1b2b3b94454b64310689402a3068e8f2f06abb93f876e3a82543306121022044a7aad79a58c5c3dedcfa79172e858ebffc01da4f0e56974abe7826941f024b23a518fd398afde40d414c15cca08ace3a9605264b7aa42821baf74e262f07421b14459e7efbc1290d638241bee9e57eba56e5ef88b0a74205ed8b845a766785b3577f113e40efc4a9892cae821ddcd9024ed8489055737a6d31addb788d02d5c3ddbfde092c20e8dd54bf9a12dcddd508739e14de56ec570309e3cd940f767ceb7bd4ad379b047abd92fb9f2df3c3d2ee5be9bfe8bbe251efa3096404f24ba7083208802fef41a8306ca091788bab3928a78121c7ed0ac450ecfc2f4f66506e3f5e46796e8087b0853d4e9497da1f80672449f3ce96d8c3e1b78466bbee3dfe857c66648e5697a07c8f58eca9836961ed205e6cd194f176f2556b5cef14233c16424caa603d3495c03d16630b6d4638d9097d403005c9a91043427f51f1be70fcf9d9c1c370595bab662bb7f372969bcc68ebe2bb57ced55e343337c9b7a66faba7ab3b1d91f807b26b0141281803c5c43cd3e3df2f91dc9c1352ef5fc7a47843fe7060d2689c7cfaec5b1ee7d222e6309e4c84d956dd4f6f39da4e99de57fedebfde682bd66c4213a05b3a019bfd29dd045147f1f43584aa0ab4bc51ce8d9cf3ea2d7df23a65769ccc4cff1c4eabe788249cb1b38c8524f442fe25fded89afd2c2b1d303f95fdb1fb3cb131f4aa85f2bdfc27d929cdb3942df1bbf68a0b8eaf9edd43fbde0a8c196fc74cdba3124cb554c6689f60d5599e0158f1e28ab5e564f2362c4a301f5d1c666dd77aceee832fced846cef0d75f04365f6d3e8de2a3f3770766554974e81932c62cb0f5829f23e674d8ad0e90321999dd53f708797dacf25ce4e8a10e0d9bb925c30a9e55d08e09fc889f955dcfb1c81b7a86b04e69211d3d546194bd8d09f41a8745d30c23f7dbd210ae83b5cef5b8baeb9a014d4d122230a0a6e3138236703e381a9f5a8a29b213974e7a221c6f2feab591baa57b3f249b6aae32f0bd43d050217d94f9aa301911678040d57deb4aef727e5f17f265b6ea88e08895714249a9459348b97ad54fa8e3fb3fc54d24f9fa4fdeb6418d75618dc92ed253841f24f45d1ed39a044bc663a2cc0661068b7e5087cc4a0aa22523be8ed05fc06b443f413e6b52fde3bea46dd885c6ce840bf2bb88b4ec10af68eb1e085a657e81a98d627f0868da48684552833bd5bc220fc0584a0b2c3418e41e2315567b9719f5919a85acb8129757b792f78d2ec2098e28a87b8ee4251e7d154a1aa11d64dba8e79a3ebb6ccaf2b83c07bf60f04e6286bdf794e5ae0f84409d2953822c041f4dbcd230cdb1d54b74cc11f148db2c40c3e817fd456947956675486be86b675100510db6723835ba1590a06e5ad68f6e776362bfe8b8137df9d3c8673d03e6a0ce7b607b2fb7a23db16800acbe6bb67dd2be108cb5828022b0e0e22bfdff6874bc266ba053662d3205667ff26a491ab460dde2fc837343fae3372f2299d1226f7ccde30fe983e60b7751df435fc130c5b8771558b97ab080246ac1d43accd702600477eb64ce9d2ba6239849124abb6fb499a84bd649be4dcf7d127ea6a7b6d22feff5242e0daede388beaf911fea7653322f65abdd91af53f69bbdcd500c1683fc8d49e5389d9db376cc2dc6b1a821f324498f817e34f249f9affd3e2d7c3ff3d5cf96dfd9036cfc45c691a2382727dd009a0864567f7b0147227a3800fe063fc8ed9163ef12bc7382609bed53ad057becc1bb7ac29008924c4aabd91f0a22b9ed3e9dfe9837d94bf48fed5b5ee406166bced061d2f02b74a592b8e5fa8aecb72b55b93039e686f5576fa5b266b69fc195cf24c2b44a3ec7e6e3fae98c5f24601512c4a1fa0d073a415f70e9f242ee77206779719790b4524340c5d81bc747da7d8821ad5697bc69fc1f7a8f5ae83dd196300d2e79f69310e4fb03eb166a85b8c115fc3fedf5d75e2c79c1ace44cf9523f460ed9fcd87c1af587eae507d586c8ad697af046bf864c8ac85b6be43d7b83f8d1f84cde06fba3e5b072e07241f8f269229eaef7bc3dcefa48376a8af43b707d42d3556f61f2d905af5bab35c6ed59ccad4dd4ffeab84521b9cc4deadae9ed5c7ee2e95f24e7fb8c8b515979028c88b910cfa43eb9fe56c30db71fd074550ad338da4b1fc4018050ef442cf0ac997cc11359722ba2abffb35f6c4b6abf6baec3da227a5feab23ba09e4d1e27b1cf9940932b447e921c4ae31beca762c37fba9dd2b204c27ac1c1b8a5cb1a17789b0154a45678f786190d05e6252743f4e82e05ed3dc276cc812a9d5c19dd0f6e80d67393d1ce16d98e94bab823fab4038a7d0e083f52e0207db2d22c071ebd5eedaba51f3f9f951259da63a121c47ab16433fd650fa25e6119f1f20d6e3c953227e799e1a0956b2028d82e3091438a3303b9589aca87f556b7c246daf7a1994665426425ef6b09fc3bdf5b0eac4076e831a3992ee20b154b225021f4fc26e221383a5f3cf89182fa077925f108b86f6e21cdf642ad63b29f7b7113e0a0c27679cc4c37ba62df4fa91cc48e3d336954aaa4df6c055326cdf1f36644752437333ccf1ae374c1eb69e801563e37d53221bfc9bcb3ebf28f1c75c5c20ab4fa1ab3c8a496499bd1d243b7e38bf3a096a6d3f930676cbd430fef2acbd464d4c497b9934b9f7a737c446f813ca0e75b5e9c532234121253a639eb7725df508ee178a4788a7fd7936c8177c9e5b585869a046904875d6612fb33c3318377827412f0aa419044fbec3d7f875ba882c59e5ec819c09017566477e2ac4c365f0eb9209f6f75c9dd53815ddd515c1950124c614aebde65427706eec1a8e1cde1f091c1ddbe63eff0c3b7bc8968f54b1f0155768a4fb7a53428d40da1ef61eecf3297b5ac4fd4c5c6a329f392e9ffc2aa0c1341ef186acd42723b047aa2901e7bc68ff0f372e6e43ec1a12a223ffd2307e6dbf1045306d2e7768fc84919627cd9dd7c2fb3b4c2b24a9062bbbf0f33fe68f955dc7d5ee0ae590e9f797b97029baa2f994961d8f87e351993569ebbec6e500678e759b5a10e534049f936c2de5681949b5e1db136903448ff065be2ae27f4f45ccd9e734b5e8cc6dfedbdf09a5333bb25d415558911ef5345c4ca405f1486a473f2684dcdeeac6ad69907f845344f4151d2ecbc325bb37ebd8dfb19e32c853b73f5d5fdab0c93d9e0196ffe0bfe697c701c7b81cc8b517a895a87d4cd359e993a8cbd957ad7a10f08afc07a4f22e9e10948ee80f3fc7d2764e3f5ce708963a0efa8ae5a1657272a894b78f1b92651baca0dc55abaee6bff35ae2394d3fcf760f4c3587abba21f29ceee59dd656ec7d4ed3ceade5608acecf0c2ed3df5479d6b01035bd8aadaaecf86f213726908c431921c232161e09a5515e12b001e78b0ec0a65a77f9bf2e68bb0d91b1a3b861c325039f5c79159e4bd2f05fcd9dae31cc42bca113d6e458583b41b787a81ad2dd008182cfae55d1bf3f5b8652a1ec566fec8050c8a30005639dbe3607d48447602a0b8e293ad546c29bc85d0a7ce6e8baa9a8da7e06fa26555e7b07e68a0e9a2e9725e8b7050b36af7be61597a572d879173e32e6495a539acd04d6dd72ec5ed031e2375ada160c388823a482149531280a4570eeda7d8b338e2687eaf6548dd4542b25bbea79fa62003e4b5ec72bda87072dff72cc542fdc18e119aec6742b9a50dea78b495f744b3622161d3fabc9a8ca13b19355b3364638b061c95473f570ebb52f9e7074dcbc0e1960b600ebcb54c0d76b204e3214998c2153ae598730b1dc04ef95b951e5e68246c4e6140221ff8dfa5486b69fe3a809bbdc8d4e1b1c5e5140d25de77266191f780e9789338c508853a7e02fffc5ad76318688f401b3226a5aeec19bbfa7ab8843070aeeeaa3283a929c2a7f1a8d9deeee4f36ccbaaefcbbec6f55e0a365f1f2743573dac87475e390141311a218ac62e98cefa0c6feb5ce325546a0b80f66a7cdee0165bfc992f576e49d72dd06e115c9b0fdf80b26619fd47cdf2cfc0305831252bdad3eabfa97abf791d4eb9a231e5f4c00a64b30691e81d340b89ac81b7a6a04c75371e7f02398acae8e94fa97e96bb25f3ba5316ab158aa44dc4686c1100dccbbfb88b57ba83a17c699a725abb6b5fe9b8f2b82f3af2780a014224585df4062f2d01ac66b6888132515ee48b5196f79a43d892789e670c70e4135aed215aa164afd8b526e5ba05125c2aa4eac78ed902824b51eb6154873b627795303f3e81d14358efd23abcdc56088aacefa91afe300e7b677c573fc5414ed6ec0104f88a5632cac96ff365a26c1efe4bf31f1b314646e7b75c4269394619f48d561133c07ba1be6124010316191a7ac8df57d1f649863b923c4cd11ced1afa12e3cbb6fb595405e4cb1fe5033ca02707239ed334638b6e514edf7989d0a70c79bf8db24bbe35c155bfffb0e4c0e75093a964c9672ed1a383adcaa4ea4e59a91e5379721e9b433b79850b728a62d1ba0cd4b7ae525bb85bf07ecdd1850e5c9ca67fb2a6f0ae10f77a18a13a7009331182b47aaa08f8db4865681fd27f0c3fe283fb36028ba733efce31ea690a1b19b13aa58e45da6c9a4c8b62f6c51e02b1cd60d0a1b98b4d78f5e927b3b6ccc645e82b0a08450dc051a35248dfd39d5f66c889874d1a7bdb6d93206465193963524c3381bb91f6ee91d454ed97a5093491a2bbe510c9e766d75a7e953995403a7bb53cb1c070d466d769fe6301e989a80b5168cb5e92cbdc3bfb0b7f07ce691fb9611ce85c56aad5e378da7e11c439129b3d970d09ad06d539845655d9329a7624a0a4b6ba0624611317e0498161d7734ea90cf41e47da3a8e7ab45a02d3b7d1f13dc90f6160c08a37c9db68ba6c5eb1e18d0758ba1a0ceaf13d57babccd782064ca64e47fcd23612f3759784d8ba111b5d1ab649406a3d778bca8a98a88d54a1fa890d36f92d93aab5a67b8dae33d81abcea28ca4070efa23e2ad7372abfb96442ba29ef09a538fca6a7ff6e9bcab5379e4c5619b89ace3223b32b7b72754fa7ef1cad80fa27e7a3eb9d789809f81d264e04caa5d262a764b3e19252d202cb72ed7aad9ff2b4b0a972407bf1d35c3b437d4754254c617a8c6a9c176b5175fedcd040101ce74e452068ccaa2acbdcb852c005797ff62c01b749f03edf2ad908514ecfd5b3254457fcc009c2883589a3310dc14f1e368980cb57dd4c514a4b5c14c15b4e39ccc4d1d0b35f08d14a5baf9a42f6552d87e441ab1b33a617d5db835ea660da4950c9db393bf9a4f2b7be68979e15f6fbf5264e7e247de11ba140d38d209e1825f748e14596f981441bec1c61460bc5efa2d043f681ff58cdb9576a5e75aaa38e5ec01c19c9c0b1b38c138343c157b830456862d149c34f10db79368c9012c106f5075b5d1b40880a1357708a7db8d67fa639255115b3fb62fb9cdbf37e0aa4107e7af3cc955eda8c2b9520a348602577236407a981c7068abe46af19f1ad25af926b2e4d896d15824603de60d7bfd3c72f394ba3af4359f6004f2ff9c0d014bb1cee939908ad20ea489811c442dee7e9cdeadedac3013fbe4e729e22655f7f38dceadc766ae03a860a4706ba8641ed16198ab8f268cf39746db4b0777d4f975ae58680c1caf24593d808e90a02676857bf55432449da125ed192714b4c2015781fda177188ab320ff4b7cf12facb10e18258b857992cfd8e2607ce4436eb39ccc6f511d7c5727e2711bad0f117861302b7577cba8c39db2fcb596c264704d382e93a72f4ea25f57ad87a7596e56be05bc711dd70db79f9d052c4bb89ac2ae137ec0093bf21fc282d66b6116554cd433eb1ccc7914418d0f802e465ae3849c5c5068c2698da7a5266cc93c94538bcce898534531408ae9d4355fc8bbae0c614f7c453f0f4487a8abe8e8f5092c9e4cf9eea8936b86c0fed4f7a097a2b3f6777738499f08be239903f2536abb324f65e849920883b38285864d4a2b9c113bb3009fb4efcd2e2848d1c7dae7d3fc89a3ca1df2d5d613be8193379adaee6be203747af4cfbbbc9e68afb7714b10b190189161fe72466c53f4160b3de2765c654fa357ed846fdd9ef85b068a379fee0f3920a4ef0d87f2b2c9777830e8d5155923bdf167ce20b99895b9698b00758c98241f8751a5df146d489cf195a9529b943993f7a2b892a555bf845c5756dd2e33ada653372a809f4b4ae6e5d16af86e542b02e83bbc8959c3e81489dab833b24ef253c389e912096ddad696a928339efa9f4c45da8a5e2c0c3658547f4d61be3103655cb8d5844913ca8570daa40489033a4c8062c811a59c68e99db15e8945c984cc0457747d4cdfb6a6b4a289214a72b74b5d2a43bfcc3111bf9e50449e0307da8a6942605b639ed0178d8f974e1b6efdc04e94bcd0f9b155cb9e6be60c0e2be38b3b99b722c44077ba7a02f4e0c63ff2477c83bcfe645aa0425d3f4dfc25afd775d4af92d9866f1ecf241d1ef8ff99c8d3fbcc6aef969e5bbc89485306c66a1f27df1c2149395a0127b8f7f75d3e4fd42206a1d850e72fe857a86c8694234953921eb6b5fe9d0030eb910e7225a390bf2b44a45cdfb0e43b5fafaa79335da8c43a4893530ec98c0231f7e02aea42bb22565275f72e6b11b5531b48b4212cfde7ec3b25daf7a72ff8129472d9f7797c4cdb9a03df0cf112041b76c13d6826eec156c5f9d0ee86648640f1006b1c57969911bab4b8066ab3b5a4e50a1e4a27a1a28cd1ef70d96836f263d2e215ab0751dcf510dc38c8e3de28b2880b49d4f9559f95c91d5dbb4599118802b8bea6b4f436c74e232e4094a54936191132d2fc73e5a44ec796a1a7d1f2655471be7577344d6641b5667f699f3badb0bc768e0feabcae879ba948c08fda11bf4958c476e41d74cfb392b9bb6a7fbc3ebe353e38808191c1711ac2a18abc905599fa4c9725220149ab449207052365e222640929a0980ceb7f949dc4e85d180d17d163ad657ab37622bda5a5954775e135b98f2cd0a85fedea07ecc4f0e8c7669acdd8a945a56f095a9cccb4a217600199c9d3b9bf6180827e2b601444cfe3a653d50fdca7c5a20c446a14ddce4c242ff58a1b0e6bebd62be96f31359357330bb0cdf77397a801159dd35b2ef365427863286d37265b254e5332cdc412ce02c96c2b9bfc9b834a80f1124bf27e0669fe2a491036694671f73b9f6b8b08cac73d4a500a103e9dc5174a5698c6aaee1d43d82d853cfc6beaf4ff0ceade0472ea7893e6efb9536119f6e2455466359afd7333dd0c31d01d6eafaf896330d916d6d7ac8a2bcd2089b2cb3d4f0b80277c0515503cf0ba5196246032a2b0af99901a4a3757b0c30535b384f0066d8fa7fa7c8a6a784de1d91d979903e23bc695f18e7b2801f53c8757a01228b12af42e40020215db6d722fbf1bbdbd41acfa585fbdf890fad4bd9ad83dd5fd94ab7952f19843041c74fb5f6312eb33c1bccfc44a447c0e5af0945164ebe0f0602acf23d83a036b6d7f2bab699cef79500653e6630ca20e7cbb21238d5be8c69d2481c80900a078e8549781aa4851f3ff4fc404f4a00296a45b1ea2a632f067020471a50dd136b0497581c5622adb39356c35c1fd6838d5a514f9b45ae8301c05123b85563cd9f891a1c352bb4bad1fab161eedb75bdb32b57fe985ecc77d5b052da05fbc3dfd35cc5e939b1de8eab4591f6d8acb668359b8e08779c1dbb2d11e4dcd3f0bc01acf69ab5ffad0348075e53b8fe28f9f46243a30e71d69072893d6beb3bc3f841c44327cb437ebb5ebd445624cbb266d9bcfd477ee684e3edbc863e6a167ead0d25afd5cc268e533f3d601310abe485aa7b15e421d641bffd6ee8a7038461bbd9d2fc2eb2ab61738a061b074b8f0d4040094ac40468d9d6729b0f181a69a63d983ff4070d3b2d2aa530d27dc16cbd698384a1792a67ea647011b143a2eb52bfb0d3daea1422fee646e313a039bb61208a400b5003bf16ae66f62f257af61e86056dbe45d710731d42de2d58d5fbf18e8242d2061b05c468bc41941c37b868a5acdc8f2772980499daf10beb7c2baceb8bc6df343aed6b2c683cd1a7b22539cb67660d966eb4ddc09a83665e3750e1c005b9cd0216d17c4afd095c6d527458f991427dc6263f444ebf0c41063ff5d1d20d3fc924b531cab2f9191293259f729c2e1e38c3a3799137ff9cb8d351a69a34dd2e453ee42d8dc574b66f9b76e74bb3019903488587bad1ab53223f5674305e75927c196f0df534a97a16435e4f05f81cca3cdf55f1686ae3e779e7ee746d559627c55c57ba475836d6a318391c713d1ab7d2892423a3dcd621204100402d3c47e2b1a7ec4292925f8dd7c89e5b77724fdf107c5cec04e2f05fe9ed7c7479d5526905427d57e9ae02360a599f5b8afda4b139b99a01882204147c980632c6d3f99674c651d1395478bdf3c9972f2b625b13f197b07bdc448344ff6c129f3e02c5f83873c928a9f213e2c1dce42d7e62f9dc7679195551812c0919894963219bd151730ab8fa85cc82b87ef41771ef0ed059b13de9ef4c7980103dfdce2d2d5d2a195e6c998bc8fcdb27c74d175be775fecc073ea08e5555d21c4b39ee2d1d32c0f94f55ca40239dcd6cd106c00c8fe5a2e80cd960d9a96bbd827dfe759835785d528ee9b823a36df594c3b135eea4f1f357f9d8b95d69f152aca730ad28e0407fb4eff8ea63e09f1d045a6b082961af4f34f63e980b4d786097c4206099581658674e24cbd0bea7c8f4ddafbf2e6ad9eb91373dfab5ef3ac654d52afe2d691a60e5ca4e6963be3331ef6b682530d9cdb5f2e669ac94a679f28a0fc120293790be5dde04beb4dbaea5548aeae1a64e981dd0dd74b1c5e9693df25b3e1e561f2389323dc38b8200eef0d80fe496cb167afb1830eaf3c74c7a0fda241a7c81a27c4d7a8947ac2f04eb53025a6dac1e5ea27ba986cb88fe06ed71a374572dfb61fb9980d55473413caf6eaed3bb70e2750800da490a19340c0be84364498b192c9d4243f695d3e39ccf588bcb2e009f289a34f19b2cff13b57135c4d906e0b5186eeff5a5871d61691c149d9ab0a89f1e3026ad23a745acf73c04c396272babb50e1a7c769483b0746676bb1aa6207252fa08bda6b5f9f22f1034f296a4825d432300f493cc09e3f17ba1126de6f66b95567f4674bc3540783ff996bef5123001be382a57e32ab7d4be22a01075162024439e619f7cddcf919bd909d9c64a0d8a168b23a85c4708c2f6ddb948f815ed4adfa09a09a545415da20239e7dd2fe140205d933014e75a9040f986d32550721aac38723d8ae719e3156b27be0c341dcdd190675e88f051583d1a81f09f6f112c7facde180fd140ec3bb06af5472236a72fef3c36933c3915e366fbb6fc2d71765984c74708b8822a48a5aa253de526b56b50e5f57a587fd590e697bcf182fe319454888ea4770ff1b219257702fae9f6ab88e88684db357b4812cc0bde6566cd155773e4a345fa7c7e712d80b95a01434ac101c17170920c309d666a2c911df280e54c5e671cbdcdac48a7733f8ef3129f4e9f7c95967094bcc005f0476cda988f93cce823aeb40d68818d9f4453c85fa94262756729cc9228a29cec1c5e182e0c9d1fd3c1b49d8a9fca6d3b650e8d8e25f5a3fcc1f04afd17b9f31e604f96c61a97672933991e3e1be3e9861dbcd36ce579ec7b33d7afcf8b79263b1611d763c4d837df4a3c3fe6479b3538b3a82f3d7b867bc70de7652c87e525c115b1a348f6da18ca5e22ecad3dde9c3a6e99bbd38998c4401ddafa0c081532237d83845d67e4076c3e627465c3d8fcbcba6394c24b46ecc831dba1823535653c57cd4aa515b2f58d487f0d4b50ab45900e285a9623834f83e313af86e5f92b17e88988c14d7146aaa9c54d634ef2fdd5ab87b322474afa673dc41f5bdcfec3035cb914876e4c53270dd7b2611fd6bffe9a35c7ded79131a637ed0f7b6720c0fed2048ba2daffe8614bd51c21a642b7187634c551faa0ebd62b0a411b36658a670249ca4cca68c687deff4eac565c286edfeb5d8fbee351ffacf09b3a91addc06e7c5760fefc3224228a870d60e47e673bd0145c4eb1f43636db1a74255fe4765414775991b5e2430d2178f6339d9dc07968cb5d2007ed2271c4014384fe8ae71d69673a361cd6931d3631cc1fde388ffa2c5eafefb31c7c564bb337bdf3ec977aeee5fe457658280e32d694e7e4f7a067adaa6abbbaf1b4c7a697a18040ba266cceeeb157a7d739d690530356768d9cc61dfae260a3f7d72d8e005a92c6a1a6717cf0f09d54c34082a700bd24f62dd85ae2c4b85a673cf7b246010c379d265c2702386ca709233cb43a2fcacb04056b6bfa2ca90dc85a9e8570b7efa49088a18308d4fd72afed1d54394e701700e24537969fcc27dc8d5f99e9f557136ebe4e67f222d61f251e026597513d9468abc2f52c1b6524d81d102953240f8e022a35e542928a3987f2cc7f36eaeaf8034aabc516552503139508cc8bc0bbf359e4c8bf6000a46a79bef93584e46b0d7f8091697ce2dd2ba31b946b1822b9502ca35c95dbae3d4ee595ad9f3ef507b6f850c6243632731d70da7cc81ea34ba055e0a8cd1ec8641bfec13bd7437a47f30be797fe13b2655bce367357ff0603ed6a14b758dc90979fc8bb178fbf6ffe205a22904a5b3931162de7d77c8360ff34715cbba614e4908819d4264e4667ffabf658a8b1a69db911a4d1f9bb7a041eb2c7a33dd89bc64d08074c7d0f9b62b539d7e1d5523aeefd51b80b8bc46851e8c96577cae33263dcbdde1b2b216d1694abcd4f83256a7c43e0c1967df22c76f2df83079a870fafbdfa05b6e1c849c8636f75b44c81f84d42ae4867d8f568c224acdd54b938bf48ac70856d7889bf0321feddfc0173c4a9ca2b63c0355b6e2c940a560ea7bfcb81801e184bef577ec010639e63c6263a81c1533d331f678591ba4b6b6a3fa74b799d6122066cebf98ebbe19281f5544255a24f2acf889a57b721b5c9b95c9be9e4471a2f20aa6d18fcc580c4be28825c9df81dfe57a5a41224cd31cb533ab66cc14fe89ef55c2dde7e5151b2e934fc81138db524e8c9767c8cb7d2234c5a06da749e22444e875b6c159f4e25753d3669976d6a9f23bd9b46635e33e24e6707ac2e4ff1c64d74a61aeb1c691cfd884e75aaf1e75384472b0de7402e3d6077e45f72e0a0c572cfdb29459dc5ef1ecd99fe67b808aea9a921daa96c1a93bebec386a31ea42a4634580df203a409dec5b402c77168ea5e3395e554e2e5870291b7f8a3d336995ec722d84bc62de744906c4b7c585c4f6fcf95147714e754bae65f9af65a7e62cadd6a6e044af08bc0af57c608a4a402771895a7c7b80db26383fd9ed00cc48197dfd0b87b4372cd5496398726f14bc1d05267025086ce5b9dc96d50d288e1623aaba97cc6c4b8f41b2f9b34c2133b4f930c76f8f5b821865808e366d3ef7c30e74028f58b1795383076d5e44d212910a9c200d52da0e6feb618131a264f1b7b0909440ff2b2a803d9e6c9d65b5c8f48da87412898fd7a3378f5a4f65011c96fda5765fec65c59774e1e0d24a85af7d30e536d8c5a94d21766c3bd73741b03e35d23e427f516d79e0cd799bdbff1390a49b7e1e7af94d767e317277a5937536e3272ed142c14591d6748d803a63f1f8c24549b2d8767172416ac0a6cc29c66853271b2d1aef4c99717b46978af7bd7b91108d888bb9ed4bb374f1770e7ba375464c2c5912f6c36c429c22677f84479d3b611b392a8105717306c1d963c4dafd24836271485627b00325c1b1dad79f3d824c53030f3109e745a5117ddb83399fadacf337fb74b74f807801f6144119d3661da4c6034de7584c2e73db30fcd1921d1b75032e1791161b8971c86e185358dfd3df9843014d37cf50f91742b54f1f201ad6573aed55e02b630c5b9234563f30a05de4789a568c510f62b467f95b5165652ab44c046527b5a348cebd72c1fb216bec37b30ad0649c438c54565812ac9cac445f1051a3f1cafb7625283506f6a74e9532cb6805f168173e0a402585c3b414213dbd2cd45d62b170f8f3e0b4f9b6172e354e6e23bf528a3be35ff751f3acb61ff751d28153271d963c8c5dd970f9cbbbc3d6f927b1c5f1acb3f72846a3fa1f0f0104e27517642e1dbfb89967fec71fa5c0a98d6290ad73d5560d5913cc7fcf0645d6e1c1c6fce6af2a1105b8494dfeb4eb8bcf8460c78b19e0e1ec13ae54ba1180d6b657fafed95ab2b617140d0406ed4e060843d4968a557632891fec32caa899b82e32154cb2cbbb65c752b9ce0a2883bba984852c1384d3cf9a6f7c245afd7f66790dff72afdf2202128540c0918cf602c124d31b9db4a2fece932135bc1353a2abaf4de42082f0b97bb2d94d55cf9eba89428639f551366099765d49b5ade8073cc11e4aebda9ebb85a5cf09c645c122d921a1feb9b850d8b37110eafc04f391893524f30bcd44463ac8ac3785c8baa2b09bf9b4de1df901957236c8be5554465043a5ee0dc5428ba7105682e965f188af1e81e52ac5964aff2e74f81d3969d438ed75ad91d74a725dfde6dc7de459339e3f5cdaba87ccb77569666aaccf53bf471a27bacf2fded1f2a1601f80153b91e7d92b697eaaceb1bd45e5ebf5bb91256a3ef1600fce99177ec37d4063f7189a16c029a4b8042de962adad1cf3ec6656f0921bee3096ecac1f053e264fa8f1285ffcfa8281764b9434c422139838e72c0fdfe17f22ae109e7524fae69d2836a618a1590e44af02cec66c191748c6a8975ed01a476c2c622a264613fd5bed280e3a29f81b414423d4efdcdfc35c4969cb59e32078a7166dee5b528f5fce428c2ce46840320b17d5414a42f316a10b305ee1dbbf1b00b04c49416134aaea7eca59d80dd0bd0b0c0d27b576156dd6c7b6efb9cd2866ba1736788a37f57fdc0302a1fcafd45cfa10930bd6c4b433315423130ab52e38aa3748a4e9d2c01a81129ff9db71a9a66b73528191bcd720db1c5ce5df9e4df5b902fbc79906078cec6c6d2a223158803f87eee69317ff176f6e811aaa613ee76603c8e2d7278489e4c84bff2347e0c02e9dd560cbadaf7e7f905554bee518fe413ae66a63ca25c26312ebb555d964a245494cdceb7996a70fb09d42d2fd46da714c334e048d1a9f187e43e9d1b9a43f62f92a25ebad7827189ac56584cfc9b32f02a41c01f65e05e66ba9ced7d75d27badb47b487d7615b0746504bd4cb93e04915d627a85f59246319ac4a47407ee15415c7e1bc14c2233b30dfc2a537f971a04f9d7ccaf4569e5a24283f29ae441c8c48cb934f586edc8a84dad93f44799faaf9a59c3dbdfb5f49dd377726abb219916b405746beb4e5bc180463d0b7617bf09886c759baf74be469ebc00c40f2dfe6eeba0d6cf0f6a60f377f6ee6250fbc91feda737c13937890b7f2174d3591a1e533a500d19a7ccfb138175ef6b7cb3abea542528652e31ce83da33f80e3b3cc3753353748f06fbe49f0ce30d9858e273c625cd55db0bb733c9103cedf93a1325d33e561e83e36676fe402384a7e1dd7e55e19c36b71aaca0dc5c674c8704cc32bef668b8c9496bb305aa8a769df537f276c01c51b5295ab939e61483d06b76a478c4f04537360a18b2f735a3a3f8f2b839e42465f03c78f3797a3e0635259b8ae01f2ab209684bdf685ecb1272485b10f3da62f2db77fd319af7d710666e71a308e24ce1bc5d1ead93cc4b17a2d0375f5ffc43afdbc5ab18b0fe16514951ba5ef5eea4a2ebac706113ce754e4cb5b57f29e14a74d2e1be5937ddf991e376682e4853ba2881532db6f8e24a2f9898145d8afa8141dabb1356d9c770cdaf7a47c5a4065cb1e627d4f374c6b35b1e412760cd5c02974268d8e0700b7c4a3b74336718dbc74252af8b8a255ebc9e9b3d88e083c7e71d9c28880840f1cb1f7fb68069c149d65991b72155cdda2d0e0227997da6b5a93dabe08fbbab7617bf8ef0fb7235cee41ba3ceb3706c32246ba3861d5a363399c887118ceb4ed1ea6ecf431bfa24fa9db8a304573b5bd93c901f1266b1a093193f9569b0e3001e4ccbdc261f588161894508b281b7156466e1fe4e5db07e75ffdc52ce3c521bfbf8a7a187a21993aca0b17379047b7b257e0e47f5861c83b6d458a1e3d6e2e64565ed4fc41466d1e77852fe8aca3f82e353c06d0af59cf578c346902489e315ff4dda28e28f6efc348edaba112b518c908689cd66bf0214c1dcc86a525edbae346b15d657a88dee2486be24962f4ef5a58d5a374b68bd8e844d88b28d9898a4ca411a581b28e4f4feac4ef4ee144cba461507ae20276a30b1685256c6438184e0e05bacdc87b29b0e896315bb1d4ec27fde965b8f3b1413e2619868d76670ff95723032ea009a785f89dcb199a3307d111180d87c9e40aa5a7b9e272bdd9ce8c19788b21f68ada7f01da250b977ac472e3dffdffdbc9663d62c5f2672ceee7195cff7ff275022525dd5469699bb24010c63c27aedfaf536c26e574cac9eaa0f4264eb176d189bfc8d3ba071d3e458cf7fffc5e3efa16e3dc9269a8c6d5cd75f758331860014e34d151c031c13f262cace4fdda57e7a4bbae47efd4235c11949577804e1d0f28e54e8f8560b81c9198a17207b704b04a96f4e08bc220837d5fbd5db5104a0aa483e223c6cd501daabec5fd8675aab6a5c08252f73d60299eee8af4fcc2af0b1a98f3c0a7f9f8950e7edbb00f7992195c9c0d7f3e97e5a4b08aca5fc4e9d56757fe368c68258449642da5efd68b02ae721f98248d2621b5e6334b4839ae2273386585d402db7e1f4413dfe35957e5156152327886c30cfaab1b012e27628b797dd2011b196393a070ed09bff8ec02b2f6d3070b754958823329f8ebfef4d4cb171a90aa224efeea246b057b9b3fc972f954bed2531ca642f37716d84e7d6404266b9b37def012116db37a2363a9a4c9c51b246f539fd787dbd5ae2895b59fe5d8c42c4285ddcf13e5dc16f20165e83c1d812e0708bd69b60843e389217add7384785134187383ebef7495c793134760bf734857dd61e1e8657bd70cae50e62c33b0d1766050805074fb9acbb738db335ff4f0cac7fd473f3764b3da72dc047f2be536f6f2d8e13571665f3d3bbcbf2b0599a9bb6a07b8f1caa07555bb68a6e1f96a22d292b06028489c28bfdc6a3862f40b352f1578f977a0ff95906e638b31bce0f330d146370370fc94a68e736ab6b78925af074b2e582d0a784b90de87329dbfbf71ac4616ad5ed6b51b26eba4d91163bb136f048f6e0779add77a0fd458a9d495363e2629cfdcedf910944b398d2980135c612637c0a4bd089575d2ec3b68bd17013d9b2ab8a2fce75d9ceee39271d9a5edf2bc012b11777fed56230455f06f5f5b332289dd112da9867e94c4117afc13d52bd17584f2ffdcfa13a501eb7cb135c7d3789bac1aa363fa2ae1e6710f8a47e23df8c2f9f3de44407b1e134ee89e98edbd22e59de2f264d26edf5af0c8b9e0b9ddc4cdc239548521dbf8ccc4ce2792c85ee66abc8aa11c5cf778dd6d6fd2f4350a514c7aced3390200c2dacc888f5ec1525017138bafe6f72dfd103a73b41cb0debaf2ac1381bd36c9ad3f919dede2fcd52f2fb2730ba616b4a245ddfd4fd30e46a0af711fbaed308f1027b8c8ad73505c15d63e881b2f60b6ffd1220b2a24b085aaf81c998cbc92b8e544ea300feb985fdaa23e9736824c6590fbe55adea98ba0ff2661173a93102749c6b5f6a70f6ed0194491a22ad6b9a0366f63fb99dc2584cde36d3aba844d9800d2aed5db4a6c5ab134ca6ab772494bb54911a29cb02ecac6a4e0bc37501bb2ee98ef2b68af8eda45805cb3115b8dc934b03f07bd84e59a9e38987e8f33c8349ff6595ede4f53fbbd97ca2162c850e8bff803ffe6609ce58e63bd1cd58d64b9c0a13c3a1fe5a3e7c3354cee457485c4c86230189484f4b5d48b9202d0512a75a3ec3da7e4c4bc6a47539c384cb39f56a25f5a205945aee53176dcfe7b4870b6bf15aeb638288ca0fc2be1b77c5f6bf2056b310a5a3d26cc6912f6518323d3322e28a3dffbc1438fd852e0a8cc92a3638d73a859d1c9d9d5c757e1d8cc5f7ec92e6c800160a516a098d6f051aa31d74e3bd3b3678cd98c1f9631e771edf7be0fa167cb986f7c5df239765d3075456425f2d79d856c0beb49a97b98f7afe649d98c6e706c840e9bf180e528e70327944afbdb3346e71cbebbd40e42379179e0f09bc3d8dbce161b6c732166531d7922ff82ee4df987a8137270dd251847733c619c4874e0d16a25a5ded496befff2b847160c73b46934ec4edb1f0bc137fe6d0100bf98c7e470ff82d0ccc103d9fa294a2de79b19bf904d90f690f7e9fa6e15735d98d8a3b4e635061b7d33a05010748c9d40566b4e86d2baa5ba23b0e1d62264ee563377bff7e8acd7941a15fd06d81725d0ca63f1d411cc52527c326e6605b1117ec121daa31442dfa272b3ed108cc1e2bc67b2148276fa6ba542f5d69f74f7c812be32ac750fde52caeee71f99d5c1daa531fa397763a1e0159e8b86593d4539ac0fd43089b98a1387d66009ee9351753afda87770bc39a6a6304e9b90bcd12e14b32a37e215134a8206f414bc853dfe621306f63a2e68369800f6680bf21b9677a9b0e4124803e27687ff1b58d33d26f901657443d03b0e1549cbf4cb545a02274c3f2e3230c308266d1bf0d9a76782109b7fc374f9b02fee03b87952d3e429e727bb61221f03b25bef57d706e33d08cf64984866626d9d673ef6e7afa92464d1c1949d275d671603efee090c2ebd96d5fb2c7edaee73e3148b425e68f7a032c4e79b56ce7c7c2e4b59443309fd3e6b382aae718db83f8cc52273b7253ff2b6636ef5d221b4833bdb1a4df46a4736ac07b5e94453354fab818614fc393ac234aa7e5dae32b6933f1795f862150198e0672290ab8692a95496b434ecf1a9809708d5425aedc6df8174c704865e9e38753afa8671c79f5120b242d678b71021ee1694b1984003b40dde9eb9dbd82c8739564386f408e3eaad11ef9c49047d08ebd48c76019417db32291d64d3edcad5e14f3fd6a4f0af0e1cbc7a253724d04d637a1e5e808edeae029a4a0e524888ce85d2a6e088845cf091cfde22d3c72a92d0d70ff4d42ca20ad57723dd310ff9ca2288e8aeb829edf8b7dd2ecbde666902d24604b41328f9b2c6b1f3b1bcef058417922c5de4f2d1f33958ba56d072da85a92a6e2c22ac7a8c3493d22835f8c2f6a8911e00cb3e8f3f4a0d3f54525998b9bd0021303d5ec227438830d24f42576a7f40c079c5a66b361eb43e5dc456311b1701e5d475b37ebe59f2a891b36d3f3a2599c63f3a3d7dac6f89c945b81887b0e54eaea72d9783baa10c8a607eea74678d8f4324291cb0f1f9fb4f3b7530108efab859319d611b458be0c44ec11344fa8a599ec7a243a03ffd684d667555e5d74b0a11a14f1e102a4a4a3781001adbed54471c794cc860dcc2e8dd8ae777443d73eab833a522278f540d8218b4bddbb5082c7cf1e0518a840f2b91d42da37379304e0aba51f4089ee6f8dc5fc9d9796d25566681abe92ae0b3630c725fb02d18e3773971da7fcf437e1c9b5f20bef0660f18b303101971dffe464de5c7c8029714884c3c1e9fb4965f0c51f30e5a59218fe0c92104582cdd4516a0f563b85600ec9d832ecbef9a471036cfcfdc362ba251e39a3e91cb7c4e61bc9a006710e747ba877441e4f96ac2dd4462794542f2ce6451f5aa53544c9830faaeffb81903046f03bc0342a67e4555960b07fa6803abbe213c9cfeec6a5c13a325f87197df99218f660710059545cabea3b321013a4cb669bbbcd65868316fe994b36259b0968bc972d94e6408e9d41d19aad20408f188452013352285412cbb238f8c9e71ba8c620f5650b64042ce823c2e991c63e1d550d56c08e954be392e2ce8a6478b2ca49b763f3c489c3658e1cd3ff77958ab20af456d5301ec6f06fd0e2d9bd9b76d7a5889178fc848acd315bb19e18151db51a448e2a961b2e708134ae10a50d9dd58bf8b5e999dc6aee8b9c27b3f47538736bd3704b4e13508382924f4c5bfa517ad69a583fc8b10b70109ed806ed5c2e3fd8771d6b3c895a494727fa152c955f78a24070631ada129cfd48ce1bf4a789fbcdc4af3f7ab61f39d58a5b46ddbbedc2641d87f03b6d369c289bae3f6c22af4eab5b0ac659d0572d8471d6d8445839c5a754d96118d4f9794437be9cb117f2fe398fc90f7a91d9f4d8ce0753a1a429f264c8b1450318a27bff105806c4d43f8678ebd113ba84aa30b3e7d57e4e1f0e02a2636c988f08712028cd80ff928a1ba1bab7740d2566299a23dfa8d0f1dc9dd2ecad118d2ed5f37e0568fd1071f517506289c53f2ca14a8a7408ef3f89673fd9a85529920f839f22038b0771e6c1899160b3cece52e618834ee7b8112885bb8fedc8175b5b0c09a4e1bdc113bd91bcb995f37e388d07365650ba580848853868ccc18c9a90142c73966180a4f56d121c4feeabacd7fc73bdcb7a623a852f6a09998b1a066e4f7bd737d22c1bd649ae330e89eb0393da4fe3dba902c8e556dc7202ef3ca2e783373d458ff3ae05151e5572a37cf663855d4b3dc89b07617877c3e139832926864d0f8273981834153661b5be952821eb0aa6959f3435a6847abb7e7320bfca336c5bc067ddc6708d1ae40a0f823cfb8c73e1257ddd962645b397075d2b4266240d1c4c18acbc0d670c4ed47ba2c21dbe3736275de696d461bd2f350e7dca17afa49f8aaa8a9b8b28a402ff164d563a2187f9369a0ff8f0a0420ee090d0d500bfd9d037e0d4bebc289b277446cfe120317fee1aab32f8de0d2bdb4eb988aea6eba3bd354f271ea683c00173c6b68c0a710890e2f7c0d636eac63ba4d10247b83328f1cac3ee3b82b1de5c8fcde96921fc9b0df3649a6bee2f9371b74e84be34058bfd577000e5072de08263e34e1c35c2ea39c2aeab583d7e5b6150032aa559f2371b94722ad1d0ec3243243e9931f8312e2948652c14604a3568af01121dacd89dbc67b11877f958d56d062c6b98906e19097d71e04d4c0e6e980322a1accb8d5e4c28846734d8e100f47206f63751969df7ac70ca6a95741c5a1c153d55be01ad7b14ce1194e68a901c4d3cd096e6b17019739b87d7a283ed7bc584c5b0b7fbc766073cb75bf473019d6e21bf6913739f14a772f3ead9a753642b239a9340043ebdeea12fed09f26bef388887010a322fe756c304ddcdffa23ca5824a481c6f9f7fd676e7f279d2ea9f22fc0d4b16b52b6fdf320a85686cf238d07cc6572420f77d5fa1d1b5b6015149058d6914de6ec5b4a34142e9edb4698ea9a777eda5831e742b399947a08fa5aeb125489514d2874cb0b6f5dea1e8340e390a2d96119e0206155c013838d5b0609076d37405f8461708dfd13a58376159f19aa0d02c5f0f5171e78c5ed6a17c6520d9d8c2e4de7382e8d8b28ed031244e6b7db008e24fb928a97f3501f1aa31c1257306747f9f92a7f3c52c516038c6ea87187f8282fabf7a57d0cecf55c0a59f926782946855decdfd6cc4225c0e8f17690f758c80031c099b266f542587c059a19aefffe309480505ec6e255982ea807f26f97b82049c757434d5f487e711feffdc706d588b7acd767b2339619f082b5e896211a1897dd167c7be24149b445d33dbeab44e45520fcf7a21409e51565fdabe9475f584cf0d30c44e4dac5d68787d60649583411144e6f6d4a856112d603591e8bd171557ecc3dc837b3eddea92ee1463e3422d9b6dd86d056153ee9830b8395060a9a872804343166e0d1337e50ab7c7c8d7dda43be5cadca78c4b40c01543d147b82887ec3451df66b95156f5b5f24c72cfb7d048b90a59ca0fb9233f23c88b0e67e6ae7135fb33ecf372a701d3d19b9704310d3e06fb025339a247891365997e5fb36aa44760eaf7e2fe9574b6235f2c950edebdf3279450dc90703b391078d6145e1a76810f3165dd4ef0ffe22f2b03e1e49fcad4898d8bcb5f8fcd357dcc81b9d5b4dd8d5006a439a882231f28a81e8a5ef66f3b3f91a03f581b18f3bab0026a1c8a1ad36d2aa7d1befea44da649a752f96a85d7702c957b56651291969276a02031a471fbc274df31a157c85bcf3a6ee979e1e1247d265c130c40707e28a238bf507cabc1ff766681b2980d6dc26d1f137346b0ce5388a528cbb33f6f09e61757d119c5180ad72e74d95de1060a75f60c2a3fb93d14859b35b26dbe2da6e8611d117e919cf9b8c4df90984913df74f09270a8e28afaa19b2ac34d294af5fcbbca45d1f409f80c60218004717a60cb241e7846358fcf545e3f9580df0d1a8ba27888772e1337ba5e45af45f9bf03e2d137173c08cad4e0ab4611628d509aab5ec354759229a3ba000af36e9b919b67aba41be6de6834acc4cbdf6df91c1106e76cf1f0f5341dfa41ed02d64aa9786e7756937392ab3d2a143c1b695e150906d363fb61324c3a5931bb29534c88459d5a34a4174bda8f6d41e9291d07d77cb8e2b3b8ea8eacdadc013cb8e23ab62bf3a31aee973b205ad64a77698ba3e69ef80b8a1e956f56236745d884bdbcff7112058879010e51d50820b922ea2cb0d6b47ca2abd67f0da746d5378c86dd0091823ae000328278e3b17d1cf1379db551fba4ea7526b5a62ec5aeff242cd2cf673f782acac1b7dbb503b986be55605c85f05fb483eb408e05760344b1153a36b44e08ef2214e6a4d50bfadbe9df220a71c2962acc1dbbb77a39869d3163b19c64439f114d0ac4df5e6a46d3d682d37549a775b9f9439c41a278e243e4d2613cf28ee7e661021ce1404a275ce118702ce2b19b9dd506fb6d84fc42326c497bde4e501618c351e571591a2a7e578a7ff6f80894e3e6bdf2fe2292df9c6067785c9190803e56a18a582e844fc0ca4d80d533718470aba30ab6fc9b284300f92409ec5ad516e6709623a7c5a25c590879ff19469cc7805cd64fe64b03e7fcd18e6c8212d49c506eed142f26b00e85fc77af169f3fc8804674f950f7852e3d01cd7c965dad318d4478f1aa031d9f63fcd0935748232b4756f180466ce8880cf18b741fd99f82974995793b41b7cfe58733b96c5b69832b89d3c4e2e6b0271a168d4a9c96559b3a4efe78990cc18fb08b9f3ec058213cc676c2cb4dc7bc274c2ca2081beca01d23855e90cc79af4e5f2400c43b8ae756f029b800c2e20091895e4b9ef5b6a8549135cedc4fd10edd6bdcde4570556070a8cad3e5f8bed7d5a71be01234a7c6ebda09a7aaf6e6ccae3e4cc83d5ef6a5c597a6a2df5b66b2a21004447e49d48fc39bd26297f1c2262a7a3ca46d9402c7bb1ef5c394d579744fd83c5fe2b1dac31a64120cf32e357899adefa22b2edb452f17053e9a95062c91177778ab3309a33f9ae27bdb56e66d7a8e1b275f6316f811fd0e2e2288230e72155f092c70d97f74c8ee10a9bc95f38abf2eb64531b9c6b69fadf7e96675a381280aeefdc093e42282677f345a6834fb200c4cfb7cecea17eb5e66d6f55accd66ec911faaf7bbf59916164211bdc9a94a2cfecebc606d97821dd76cc280e70888aa5c51c7e351b0ff466fce479a5dc0248081c56db534a90ee25409e4c84047d87037fc1685d5ba9151370900ff1bcbcaf4d700d27db473fed544762645df5be4013008793b30470e42a8982c8818634ec5ace9d913d0790063537007ed61da38a9b5868a85e0fe1d0efe0474a71af5172e54c491a73f1b25d76f32864d5731a6101bfb736c77e14ba7fb74a1191b0442ea4501bcea0edbe54f4c7a9322c594fd5e1b3308831b73aae7647ac0eeca3b2a27981d352a1bf65e3be19ccdd7a4b890e84fafb5bb053b80e382ee35e8095322318c13c38e9b49b505e9aafa67605bfeb8b99b0c870292955ba2de676970be6acf035b32119489e28d64a5f2ce5aa015e53d58db62f5c0fd249588c677c932e120047ae28764c7616a13c2eb45673adae222912340536f755c3167484f92f70cce37252416384876dbffbf5ace4f66f31c96e769eca561b024ce4eabe07e0973906cf00a3096ab0686f24bd9234fb50f96272a22f909883080c9990c27f40c5c62148f9457d46146b7fc74c40997a707b84a1d3a72b25c80900465aaa28e107625c6a447b29e72a7fef030850dcd16c959d7d304136492ea2564dcdf6e9c1ffc31bc25ac987493ce60e4f0b4428970559e8b97088ff91209145297ae599fa44d0b53473f4b298e8343b5459032d7c05c8e846171f2de4dc5303b05671bce9b1f6a8f00c50a65f7d77780946934b88c3f35c9e2291496d6a33c10ea414d9495b1e7941a19ec2435fe742adb0da9a07c8199c01cdd9136537534c7eafc050f89b0d82ed1e1e136d58aebda844d1ff9d6f61fb68962d4e7bac6b5d829cc139376b1514a03c6a0bd331a56794e1b3c9fca36c85bd5562968e4aa30c0f332a325da6de27bf30835b1719411393bf35c63891c384325e3148a64b79a817b95c201ee2b507698ad5a5fbb89d40b997b4f893261bb66f1f49cb2bc4e3820a7959a15bdfc7a967d83ebe6de601227159225498d9833a06c68755ad991da26ec8c638305baa45933bf00b93252f488e0362151931a74327de7a28fe092a1203cb51823ebed83e04f00b820cc68176de407f041cba3ac3f457f607450a3eb1f01d3a9fe790ee873ffe6e5b605042cda063ef22d73b654503b2ed2bf6dd79b392a72f4d4f8b637fb249b62ec5593e8157f5e151f7b0681d1d2ec543702194b0648081e970bc9bc870ae7068575867e293a12df934f7aab91b4f20a3c6b634823b98d00eea59f85c7a1c7e218d6abe5664fd5a0fa738abd46873a993ff80286b3e65f3bb3cdbd9d945494b0926877dfdf84707137ed099c074886e94599f1b2d9907e22752da3836665200ab1b3eb88eae36e75257ca18ad032662a68ddaac83f2b7636f776b00cdcdf776f893a1fafa45d01340ea8877c013b04355641114792498907af95455b38191ac1033398df6b7f023235993fcfdf13b6f6d0cd3e31031ceb6648b18326e0c0d369598cf85a62370cd14ec368fb12c9977a2c065b9fc7fb1c9120005d56df809a169c45b4a5f0a8d17c0160e97e26e7b0b5d426d0629807c18ccb69dce1612e0c852e14cc6f41112f856ab9fda20a346646c5b379cb33d073518ef9cef03a8a73a3485ac6f1c3bba19f9c44f6c793f739ee1157a615d8147f6ae520397d609174f7756d60aaab061aef198cae8ffad31cab5d0f076acd8f77b1fdc941146d5dc202152db29d6e77599d5bea06975a2ed1fb64aee5a1dbd2176d3a3a7de11e958027dce8bdd348df4e854f14eb6d3327230972a73c33cf33ea98b3c4c1e2d66c32605097a6d9b88f222ad573af24ea22f723e92d8ac1fac8935ab14cf0fd1c3759f94e5c0676029fe43a4152cf1446e27046bfa378d1b275d2b134985ab51885245d855f1f96ac3c0f2fddd25582f52ab50cfe57b606cf0680406e72b1621ad7d5ebf9f2e0b601164f1c65bd7b52050008e8449596242f5f2ca0459ea43313ddb9cd8209fbb191ca43c28918445b6b6a4925410056c332b4201bd5989e9e1b47d9a54afd79e4af702aed6e9421bf7fd112be3b461c4d3edaddc6ec2b46a9e925c30e53a6a419f229a4bc2ec5ee5e7ee3f6d18c1b155f3ca167ee8dd0af255edb12d5efc01682b4c70a10532dc3ab070ea613238a3a1c1941ef726ee168fefa9a93f546a45144967f055660186f099f86f96bff8faa5846d6ae49799dc6c4657a237fd3483de1faaf4f414845a8812de32693b80da2c539ee07864efa22f8e811b89ae79e53bc87b4e370f56031bf7e429e66f604776fea23376fc046f1e7f1ac262625357094a9cafbedc2508627c2045550f7262cf057cc2ef9549dd4a5930a9280042f7e9f0f069b7e014dd7700d147f2a0db377b200b36a98c526223803ae9f61518b7e482b55902f77cb5c41d7bcf8a81ea557826be6ced0822c79201cbfd6d6aabaa044b5952525db394e3c7d16e37723348d71a194e30f2efb5a55dc7acacc038667d129b9ecb55a880560bdfb34eda9a099c7aff7ff5a2095ec00e533f2db2545147344f95c0f168419c03e9342615353164e2752361ae1344cb2fde2506b2a65d2778b1c3228a201797506687d00554b82cb9cfb12d1b09f24328e474e9d033f5dd9c4cabf9088d7d0150212ef2efbdcdee7297d80e6014868d6279863e5f23d1ad47af1aac5c3a8c622816e306420c0b507ebbd62b5f93f5e04f9c27d971056e1af7d38bb05457fd2a8b968dfbcb76e62e3823fbbfff4fb6a8b5a3e373cc8caedc36086b64f7236c1b44152d55c46d3b8c1946a688600e53ea645694bf75a45b1b4fa947819a3b5295e95cb9f23664763464aebd1f75fbb54bbd97be5d7593b8347e595b885a5fa5ee4963cfe2244e291b5d21d14a009c9e968d607ad7c2da566ed02e72e5a37f4a8c207dd65bd2317d567db8a7c4527e4d9032309b20f92046053f3d60cbc902cceaf114dce50d8a33dea1c746964994109744a869a4018bb15dca079f8c4d6433834c0bd48d84dcf1bf0cd70de8d72174644fac0b38da1b0b4e3b38cfe56a73a3de183a923fdfef7f7cc2b1a6004760fccce85f6c8dee54953141c6c2c32948c573bb01c9da67f729ea6f9c7e8d2a389d3aa5fb0e12ef1ae4cde8d16c432a11a5718fd8d6535f4b758f0fa5c0882a5aed6e2a5a449c4a3614e5dfe413ccbc7e5d4890847753e97e4ad097823813f6052760693268440302412902a807e417399736bd15cf6c63586440cc0b9f3c46aa628de0d270da49f2ffecd117315f304e6b6533b3845b9b1babfeda40e6c8a8dbc1b6217c5093c4cba25d374113de850ab7bf58eae4989809eb11bf76de1d94ad9f5985d6e4a5266ce63905cfb064a1ff35af7f8a9aac42c0bfda0149dfb2851965d2eac8f406270708a2a94de04e4afbb81e507629e99d2a540b55807afb60bd573e477d5c987c415e0382aeb2ab62f92c72930245935a33d2550a4fa81ca1081a97e53fcf2d60b6b6560f257dcbf44fd0de54cac5c39667aa9fbdcf38c1bb1229b677b31144ec66a9dde03f7539986b7321c160d2a6df4dac4a96afb87d56f41dc1e4c03e91dc9c3d17338dada2404ba1eeaae281840bb03fcc2bb11776a8196dc6ecae18515ba8f0d62b0077f9dbc16bc4f18b950a53c5dc0fcc1abc7df530f51861a2f4d1a965948e34e3e3c8d24a3dcc9bee835528e02b5c76f3ff18d01a0ca5306e045b62d747b8e39cac8c0a4725b0cea7ab26dd8ff324f40e0ea59e0e564ed7cac75f1a1a09ba05d697823192103214d84364ddae0a614b1eb0748f699b6610fd020ddeb04b103e93fe78954ed02b07bb362f2658fa12ac3c50de87dd36d0a755a11725672873bcfdc5ed699a3fc666c29a49ade81b6f47aa59482641a425c071048a502fcb014484e278e2158f54afde142d8c039811a60710520ce49263b44dab8e062ddd40f4d4636eb98f1b2406daca45a17126c0d02acc6799042e40c4ec8f45fbeb084081f4feeb19f83503ee1b3c6c1055e121a72706aa6b76d8c1f6b9fe34ab2f51184bf0fe0964b791368e0972f9740d7577fc37eefd9000f637c85fbeecaade71d6a76a0bfcca48fcbd1d714dccc925c8f6e915867e35f6735ebabff40c173a4dda54fefff6627a047bd963ce8f058004b29766d932979a740bd8e96f8369ca24c549834c699453ba9f5d03ef79a0467afaa96574bc829b214f20443751a1378c7b065772784e212a1569fc19b769b75646b1428be18ffae1c6c89801c5f97f0c8e60d22e21dd634dea5ffc942b438507dd89ac3e05ebc6cb735b9b33a1f3d74c34caba605166f153aa44f34639887a8f106d64e9b8ed793094bd7aae1f1ecbd50519e333aecee696ba3d3bcf3564b5c8206f7aa871bfba8f3f74aaee640dfe1319109789a5205d349fc34986967d86323f83402538e86dfd59c1a21620d27a4d921547851f25f57ec78fe9bc103991045b54564142b0cbc0b9877b1523b271f7b19a9726e0118ae2c2520f755938b9b9666e8722a4cd38649253319462f16bad6c278d3a0b4415959ff707a8258c0031ce25d1e7235548e453f436e2943806f3fb8f339ce7b5e9020b2257159d6de3cb109eb71e80bc03957f34103a359c6639256928cb424e7fafdd75b09eb099dad54ac5970094e79ebf521edd797a199cb1a96911d0a73ca3ab547924ce1c04dfed29d75007ea194b3415aa899be6d83229c5c6ddfcd79e746a3902fa8720d4d37aed191e9ea0a5ed2ff59f73362de5eb1fcc86ba9b9059395f01cfa05ed15952f5a4701e0f2acd40ab5be06f1b5fdda644ace118c08b51617ee669f745b442d4b287f9ea1bdfb29c5c79f222a5dd9fcf313b1ab3503ed2d00274e2d600829b4897c00462296ea4401d41c3e8808169956509fc76604ba8864f1df9a5ade38dae4253359c871f93f199b666fd44a74df8b4ea8b976e7ca4da187d63c74e9eee6fef36e3eb97230e953396c705807c0cdb067cf18e812259397f4a851247bbe3021e4addc35b70745478b211fcf1baeb6666dd13f0d91e2e8b65c4578c1b2b1a88a7fbe210708f2090bed46fee4273ec3890e7acdbce847ccd76d76368a6c864e0e452d7ffa37c1203bbdb5b34894506d37ac132516a8c334e6ff83733dd999b701385d6a6e466329ca4d78884b3b4306255991ef55d3f5085c30d6fa4240f98f7bee70dbee9687f5a32c5feb1155913146fd8f95baa9b1a48b8241fc63ae7c11e2b8b6d0e1cf930c20ee58ef5389a566c3d730c77872085bbace298d1393e691c9bc43c94332f02944e38ccaad48477040d91cf8bf43d0ef0a0ad926478ea1f3221d4b4d747c1bbad6651c5580cf4eee7290b5decef5c51b38313e22dff0db30ba89876312aa266141a4798f617495d508a395f617b45d091fe0c7419fb16ed804d0be19e92231754317761a1d246aecde0c08fd75de91dc19603527b7d8338b40470001ec2a3e82740b86bd442d2c4e879f0a78702c84282a3708dedaa32e7fe131c0af43a544c496e839e050bd10ec1f7cc52d90449175f381b750ebe42dfd506e5b3c6a7caab0b920991351b1810979811ea8c3398bbf85a2e5ce2e5d5fe4fb10e0c65741756c2cf1dd872c9cf6bc8be834b7d3a02bf9f70da08c1917a125b1c130eebed35952405f0c937224a37140891eeee72f7285d2422022a6003c4550f6b95859257d71db1a0230bb1bd868858135241b1a91bd49329c0c3e4819dec764f92e446a280cdb30e87e97f17e35b538a2f41f993c6e48a6732b323e721e6446099e6c48eb1946b7623d1264a93e4df9923df556af584a6e6f43c3bc70466d463a570cd8a6c24fdd7555c08fc940f49abfa3aaa979af065dd67bba58342c163688103687c4e82909db4e61c1c8cbd0f66c0c35d33d9dea60d3e091dc36b9badf5e0272326c9ba7ed6bd80fabddc12f20212353b7cfbd634107e12cd0186c6e93b5686a04e5a3afc15c4502dfb4db7a9b9ed881b9caa2faca27d4200f75d6da460106a8ee6cfa7e033a0adbb138247f0d8add00b5944e3d743d708daf781c6e62de9f5ecdba50bb71014289e6077c031d532be740f1bb79c5675185bba278d9959c7e49880f865524392bb9c57416af80967b47b2bc56480d1078067f3db8df4d08ee97c232333cef9aa6d482b8fa3f7334ce648e227ee62b19c8826cd9be73a5e6c2e9ebf722de78c5bb9310e1841108c4e6f65ea70a617fea8af8d94ffe26ec99ce5bc4f0d27cae67131dc7e1e3f219e1ca7e1aaac08e3a2bea9a189a03e81b4e6ba4a5c2f54e80867cb67d199b4dce0f46ab9295dfdab0a2770aa917ea10d8ddf73f232cf1720fd06905fa92039ce69568cd9ad696df60f9a71d8eb4e5c5cf5953add32862b1b76a6fdfd63ec82f5ab7055dd8cf8ad0c705513900bfb9a39dbd63ba54c9960f9f51caaa44686848f238328d6f7054b547e73139032240be7ee692e0dc450f32b51bd64e45b0b879e2e8cbf0fdc60174aa7067e8a028e8ee7a514bb1eb89058f4cfd95b445ed5f629732ef2e95e690ab0b4bf809cae33373d87f8152ebf7e270b7ef30d7366758b2357081c7a7b7775e33c94cf11fcb35dbf421280bd56bc4c8922d6e64880a748183c1a9e719db1f6dab9aaeaa28371948dd51b9df2a94fed0a89d3eeda656d6f535ad514ee89963e0196dcfb3afe19cfa3f38b23ed890977f955933a6dffe753addb6a94017f81504aa11444455af9031916f14bdcb67c9c8963803b8cb6e9dc5e860a48edb657a518eeb03268ea35b587d5ae3e25b4783b1322a0820a5a56eef7dc779a72f36c929e543ea1d96067585026caa07c9bee8319d37bf2027265cd81a1e22be46f6af608a9e38e41673ee48cb10f43e6e0dcee707364b42dc0aad9f3fdfe0fd8ffdcd969f5212ad85b7e5caa482d45473694099458ff2e2fba8fee9976ab5ce3b123964d578ff407935123a2a505eda11a7fd866b099f57398ebfb75e23e82975caf952bfb86da57aaf3d8affcb2b42bff9f68e5a215f9c2610b28bf6dd85fec0668ba9bc9d2a551244c48235e8d90ccea0d31e5a5fe4940c1670e1ef90daa5353e600540e3eb0814ab191db13b890558316ff62e0805dd5a40e4f3f7cafc677c795cc57f97c80f6ba84233b010608e83d758ba57b03c291113cdd369644010cfc55844d90abe37e90d587ec56406fd7559505659822637c45240ce7b40c29163dda0e370412c46da9308e5e5b32a0785dece2f457c074e2056252343b7e1bbf73e76e5d80356005e46151a6141fb3e797d7e28e383434f0ba8b50b086fc1fe6e328d17c9bae6c3ca43d48adf52b09ff35cbd7029f4e656c8f80211a400c73fb4448e4d31f966af9a0eae9dbf7a022a48c11e2aec311decbe066fb2e4bf21be51b996ab30f7c65aa5c3a1406ca0ad905fbbe7d9eee8bbc1c7d9345c2c663c07710cb6c0bb47dc1fa81bc0c786eef3f4714c94abc1cdb5062166dbadcb2a4cfb34847271fbc1dff25e3dae1bfe2f18b3acba53831424a6466c6ec610cd09c7e19ffc43b2aeeeeccaaf0b27386d6ee73e158387e069d44cda5746a79e2c97ea8d778d15121949829aaac978fa5ad52b103bcd4690538f09e8d5e90558b6c13393d965c914484a05d85fa4024035f7379f8a85db2fa35763f402b7beaa0456e589713db45db9843e96cff0bb5421925f71534b447f38d084021efb7f4859e7876383071faaab0dd92c73b2acb1fbdb7d35d32fb48357d5ba44346d4e4d4a0165cf3b28c59ba410e570234d740b212e6df0d7db137ab03cf85c62a301b67d2a0daff8485853f5b0587d5d1bc3b0daa29139cb1179998312542dcd89c426ed4dd49a7b0cfbda474c890b2800e03888d74d8738aab6a58a4d8738b4e497016c954f763850c9607fc8b45b1bf22482e08f8c8b2019ce5192be70923ff1cecc699dda14325c4d4175d67aad4deb7d00e46739a0ab427572edf39160eb4a8fe92a2f14ee165f08e25cfa5e4826a0ec5b5a1bc7430de697002ce490eab255579af15b61e28fd8ef5bd8b9481459dd075ff52aaaa5aa2dd3ebbf76b83a5d8f7659d1e8670ff31feaf5078706c28c73783573d0dc42d603fabc796c754e8d548e7f267891b4cc09566f1edfc6836d257bfa59445992b2a3950807bddcd677d8183aecc28f27f0ca841a449a9e552e2364972651a3c10d7e5db1dc3920896048dfd16a81d4d8029c38c7d29905d6ba3c17f208113e8148f2c1fa362a1eff40568241f8571768b34c2a7d34d957ae1b1a8e6b877c35e1998b636b199fd2273bb0f61bc539d3c80eea8806ef64548bcf7757aea321933d426b9b7f7871e047b93c02c3ef38c676a5d7734aa6e2a1a51a9b13cd5af4eb3a7f48f32bf7370c8a5d4dc2ed57a875ba723f7d771f2445da8ef0f9b09aaad1d252f7a92fe204c21f235d257fecc8a7fdb78831fe8eb62e534e0d50d8067f5f706fb7303753688ff152586fac6df9e62f3e9a8b5bbb7eaabfca19f8642687b11cdba4afcea505a5df2ddfb873dd84013baf087cb3be39ee1c0303e27ad50269bb1b848024a8065b926e6e6a6218b98d87f9f5683b7129930e82ad93ee132c2b57fecbb29b31daabda04dbc6ab50e45f91ef52a774c64a13c79ecba6438b17227e4b3f882e09f7b3a2ac18608f6535138c95680737a7335080c2e647fb65277aaefaa0f8a045cf356e42d59f0f51408917cf0a488b121d0e84b4a1b832526be4d2b60d2d8391bb166bf70c3ef8251562045f9a9f558fad74c42e38cf91c90915cfc54d0604fd68e211c75dce34586d87286b0834d038cf90043dc67689f877461ca5029493473f4756d08a32774970a343f661a3d5ef3bd09028f02ae2ded6b675edeba055cb4895677452212e54f5a4f301067ffb7a718987f2197d9a834523954f9f2264746045015d74a7cbcef63eb94a8dcb7c9f6e73b19e7b9515565955ffbbf7cbe16dcd6f4bcc86a45bc11e680cd0967ff47cf12aead005aa99163794e007307cdc6eff524bd8044b6a47f3dc809a2009e8b5eeaf187f388b1ee0f72cf9a015cdffd0d1d0e373d1a53ad82d9bfa71d0c9212fa0e6b7b9c31a6c2d1ff09922008717db96ef6567450c4def3567f2759493db6fd916efcc08cb88f3e7b4b0dd422a62e92f59b19ac0b035cf8c48cac94f31b9ec466c3a3c582a782b18d2e4a59d68b35da2dce452a115c358350832c7dbdf92c7dc77a35a17524965dba6c375caa86681eceb9e4576937430c8b79b6882cd0fce00ad8981ce76753ede12fdbba58421c3581ccea33ad540acf127c0dd3aa110c1eae5fa277f5b8ed585fbaf63974b66fa30a8117e6d5bac438c70337c5df2e92e4ddc9b5c87dc3c95a7cac6e9d280f69a7eefa924e0f82f7c676e097e38ce6e6a98b02064c6658ff096eb6311bd59050278f1f8642954ef8b103e8a40eb35cb681067557eac7998eab7515e0946403a4756d592c6c56abf2c9fc5f6f4319b2e907d69b6135e2d5d8306f0cd144f56833b9266de290f0b7d599e295df5576a46c1770299cd18aa13642c42a80843ebb77ff291456a605ab3efa5557d2f5b7d88252ae2e35a97aeb164cfc36c30e1070bdd67e8f5e5eb4f926f1f79bd5767a74d8cf59c57e3460ccbc4bc75e16bdae54d497022310d06343554fd882ed6332abc60862a676bbf27c031765ddf97487202419c982d5be72a39bee1b9a09f7b408282ca67a0aa167b3cf46e042f9438d23d61ddca865a33a5a36a4e07c86cba96608bb294a416531505dff8f6747877dc5a6b78d83d97e4ec1830fdb1700197cc844bd1d4b0247b1617d979462eca93997c1cd00a4aa0979a627c6dbac375e6f6b386bbafb6037b33161d0409bdc58bc9e082c149b97a9120468c086a9bb3001e453c8193045161380b88d4d6840cf25d02bbf5a360284840ab57fbcbe79932bfeb03b94e7e89418072918b4d174a6afe8b3e60cb1c24a693126c0a2d2378764c52495d956539617f9ac62e8d70a23f851a2f1c96a2f5bb055c2f31a2d6d33fa784702a81b22c333952e321bb43fb7e81cf46fe7fdf3e1554dd44d3822eaa13aa2a2d440dfc210ac8e7e14f8257726fb4b3587c23eae47094c80ea4e99e9fdaa29296a799f0c15ad9769cad8ef2927b96e98afec682362eade2852d3498cf56ce8bc2566a5eddda2f87d91810581c9ed1afb449cd23325bdb89e10c884b2eebe410f13927cc33ca1ffbdd573d546b2dc3338a7542a24df22e0cca904b7faeee8dc292695ea14437134edea6cfd8d870ff3380cc545e6180084e0f62a9739d19e431b4f3fddeec200723e9d182a99fc3cc729106d303991da1c01d4510d7e637fcfa9736d967d3eb0f23255398181b29a4f84f8bb8da8b5e86a8abcfb4ca322f57af89992ad9e5c0cf2b7c4e56d3701eb726ecca9ba7dea416b458230cf70f946f9033c40df3671001ce0d8d85bef72566991b493b1c110104e2395b53b09b7d301a0174019157a3f31b03ccf1e2ed00c8da09a8fad758a9d8b78b5f082b5a037c5d58b66a32275b06c89dcbed694fcc28e5bcdc5ef8abe36ec804406ec030d5a62ab49d121311fe30939c8ccea9e03d847597b992395d23758a820a0d43b4a9f70be97ea3d384347b0b4f136b42bd0e102ee326e2a6eb04f07e0a512f633dd32d101f632eb2712a849af2d8a449fe38b1888cb443dbe7c4b9a7593764237528f7644aa2a7526f1dfde332cdd887490e83997aabc8d110c9f94d7cedfe5c4b917ac12c896617077f2b74e76a6dc45b5554a12c682e460ad5b21828f2965489f5cfa02985a709a03868be68ec4b22e08c2670879351a54e8e3573d254855e72fe824c778f0b52cf0ca26b161d618c262ab197fcc1b58d3e05ac43bd746c93241915b7767815410f08daf8e89e1f328b2ade6d751cfedf6f1391f17367ac94ab6b7b263c43aee71e71a7a528bcfb13a1964ddfabf9785f9e8135bc7246ef60f7fa9dae92f8a23f8cafb0b2a306ec9f71a6d011dbb990e2df113a61f2209d382914d87b043821e42a2d35f0fd16f25d630eeed6f1c95813febc191312346892e8277dedb1543e5a794d879cf3b78cac999c61eeb06e07c017ac9ebfd958c11fb2aa508001fb73e936348c92a9aa408ddfb698185fdb77bbebb967a6ce4c60e152390a8972331c04ac3a3cc864fa17816f7936f9fc22a64d6f91683f1497c04b0135d8be1c16f73f67a1261d43871d752a2f91c922c6353492d169715351a07bc646d995a6a9aade7042ec78cf08e5be0f9c33dbf1faec3252f88618e208837a29bea369bc373de636c6c2398b4a0429081b5deac34f34348039aedce44131934e8bbe7752d89cc9b323f3f2c6cd920f56e07f4082f49bf9d8cf265865e334b6fca827aa3b1416a191025c7b644dac8c3ccac1a6cec9545c53c9038e96f85cee3a27cf31df46e1f24becef4b5cd9f4b4af097e286850b41dc6c9b3b0c1c03be577ab1af116d6930b9217322e20610fe41f95c3a575b6b64747c1753895fcaa776d2761b6806eaae66bffbd3a358d2619b2c7d535a08b781de71ddc49d0c4425a32bc7046cc3106a7e3e5c0279fb9666377c7a8592718bc9ba892506c84fbe4cd2b3b0837d02b6a9f35d87ae7f6bb805e754d68fe58ee6889d9278c9067963264d17a5e996f72feeac8c8c39646e129bf9132f44f171106182ceb2167f09513d474c19a749a0bd09572d983bb04399befb2b45e5b56f545143440f206377a33de7fdc5a10f3134e55c5fe38d3c8d313bca7bf6c81bbb776a62984b6e3d36b8041da162c0fe2a7cdd06fbb75319315510fa8a51ab9c81a0fa313727a14371caebf6925175923c0067aebd05d2ec29c1bbf809b16a23d452c6bbb761cea3196b431de4c13d6158a93f5fd682ca50e88ba68bcfc436798c3095d0ceed1d5acd44dac3b788cf857c37613cf69afc229177a5d5bd43771e00289d4c0159f9fc3fa78b4d4b3e3177b479357955cc623d6ba2f9fec66bce82456b2bb7e5be4ecc175f983a684ed9ad74d32121b8de94396aaabec19835209599b2fabc58ecd16ba26d65d49e072f2cbcc7e089ecea03b4aff49def82dac4378bfcd9a5069e050b0eedaf2e61daf63f01608adcba00acf56236512b3d82f301cb5fe21cdd2731f949d15d6e814d4a2090e44e8db4557cc2f22e16957ad7651eeeb59480a3f321e8251590151c2873dc4360a710cb94eba5f02a254e6a8d0a69ffa17e600889d1608c9bf69ee3960d5828f17b5fe5ac8d666de112eeb28c00e50f8989457af8766650820a4df5c6b2ac94b8a51ba9733650be29ba9344b7c798ff5dc2e440598b601f79d9915cba9f50d7d671b56c00f4df5aa314f7efe6feb62200be2ec4ccc009447184cc8c98f93fd4017b889d07408afccc9071debb84ff761eecdaa98f3e6b312b8aa0f65857e7744e6c5a9de8be26561dbb9006ba91aecaf7335d0c22f59cf08697612e76899d0498494d082118603a2e4f59ca048bc5fde2c3fd499788cbe055a367ddb084a24e8856d3598d7db7a79e7b28a5cd1e2277bd04506111b41701d7d3c333aab63bee8e16cf459443962e8e71af5e9318ddf1db9b82a09375968ee0aba6b0088e1e77e74e9c802d1de34d76d67230a8dedb4a3658ca38e3fbf0a24fce3ac734d71a0157f6d7cc58cc6d5a608ceb15fb91b2101f63a06bd7b9cec97922757869acd0e96253f0c2a96c22d68c97c4b4ac297f3aeb25441d286dfa56ed06eb25984e8b1d8ef78c799a5ebfe24c3a6f7bb659c5b3b83a0b35dd112dde1fb74afa513e69c6a49b2e72a835f470d91a04be19541d93277ccd6e11f838726212bcfe2c3e647ef0238668a8c4fcdadd00c148ef96e406841ae5fb107b697038f2ce26e07a2bf2ed0d40f39345fae8da01847406b9e379eb613f64a7630943a59439289c1d03d4fca29192f7f520cb227c851337a6edcb75223e6f82a8dd0d8d5fce7f1cc6774d0ec96b55f870c31900e53126ee90478e1b14c6d0437e342e5204e3e2273a2159e96b37284faddc3e7029111ee2e416d9516c9845e867c2fa4974856a4f6dc62f60d575a0e9a23ead73476cd12f4becafce7ab4b3a51dc24d75fde7cbb0c3fccf0f9301d19bb346d43da9f263499a82aee2e8372b7a91502f5dfb6f4ae5c36eb27e6f1c7c2c8a13f41acf042dfb059cab81a884a65f07101534113165303c16169c303c558bec2fbe7673d778d81d103fd7c5f5a195f67019df4c2d60b1188685565d22c61ae95353c4d090ac984f5920e4b6a9a4e81df85c82c28ac670bca158705a4a6a540edb96aa352e19beaa350c020a6ba04b6cd2be3614cf99d6b15a735be015c0b2bef14c1326f6dd414964d04ba1d14e1b11589bacc047bb01bd3573e10b0c031bee2f907c7f862251913777e7ce92725fbc1b260ed2664abfea08e2d603731885a4f66fcb4c9156545722f03eabfcde86e8ae3fd08cd1b84687c6b2d75fca9c8f66a9aa54c098739946d84fe301674e8baaafc34a2aacf62a0bc00b7fde8188c9ad8402f6a48784e3b44edeb9bd01322e308db9d09714cb765ddc08206a40bfbe4b65fc0ebad15cb20adba591d83b96dc1abba7dca43ce556619eb7b855abc7386feec802f33091d5d99a26ecd41c6387e8122f3393dbbfcc9d4006ad217bf5cc53020a19cf00857c1c6118b65014a8d1c761240ec027a10a5d78d9a2aaed141fc55dbbe1b7a32514e222d6bc2871999edd96dba406ad60e8758cd142c2f90c6174cc576994bc571bcfaac2168ec81fa1918dc2fd32ca637f1d6f5c75df40ff11965ef4788450e85f502fc5efca8bb321bbd993708ad9f2cd6c535b4a437a3cc965520325b399653972444bbc8397fc044cdf30186ca94d62006ab45ce3b476b39731ea00d86e5b5752253253a4e5d8f376b67b2b9c683b22b31dff70b057fda404393409bc46ebd160b812b6489bc9a6bce9f36503930c547b392df6fa19cb6fb5862698584722a357b028f7ed29eddad89ccd9bd1436d839b6e0e77201bba550848d825118eece3fb05075603590ea9b210a89b8bac84fbadb05677160ea293a5000bf0872e7aed86a9196095361d129f3d6dabc2090dcf7c7532e2a3d51e845d1dc1ab70fa8a656a128fb1b628f4a206ace70890456890f7c1b6044e243b914c42330f0f7b81f4402de355bbf7b7a9a872438a030752898809825c57e9493dcfbd1f346c6b1e5e146408b360ed50088b89b62cad03cf11be026d69ace9dabe620cdd6d5c72c7c9f55302237e9d3722cfceeae92d6b93193f14d401253caec10bf3917b727726fa434be2c92222dd19f5aeabcc66d9855f2f2698c631b9a4a4da414488f2bacf94cccc1f39d94db044cababb6fa800f279d73fe9f241d6944218f29360380b6fea579d9d2518223f073abc58d044e081beb8efbffd11c785d252dc15a3a95dad0f170b87dcd87712ba7643f68810af4ada9f67fef4b26fa388969a0fd620b0b6928f0ee5ad31af71750e3a99e4f98015399cde1ef559528808d0b33012c2f70bd7341965b4a9b268c2a3dc6d9114aa53bee5108d618ae9fb607a5fb144e8657a9b28d8a7abaf37000c4e77573afb7a449d1576060a0c585a7e0d0a2b3006cd869f77e1cf9d3c9e6cc035fef3bd3a218d2e093f5975cfa3e2497c13fe380bdbf0a09b36482e63e9fba9c1b71296ceb1674a9b57a4ea27caf63bc1fb4278e96943fe2fda2996a4006e69dd9ec452f94f62934524aba28674e6f76383578f01dc80c317c531b796874b1e42e656311d75fe8769eaa888c278bb1fe7b5c52ef616255d975e323506eb251a671f7bcce499a92dff9ddbdce7647e7224c5936d944bed970103062d2264a50eaeecbaf6612cbc7cd48ca61d1e1676cc31a1ef17d792674c1d138b70615c7390c7166249a2b1511161f4147dde1bc1957d8a21ab28f65684af2af07958a48903a16111673b9cd4483ba32332085c6b067b29617d0109b6bbf7f524f4d580705fa765be3bc6d36874fcd554828a7142012221bbf34ace7a1854f3259a00eb1eda21ce8b783fc6f2dac180ee36ab945c1894a627ec173c22f38c15bfb25cebae4df47026d9ca096eb3ed79b00bf1be60f91a74a755a2809252551815716a80d862f07b6b31eb03a239ef7dde3e204b23e040c529069961d78d1fa966dd18eae43679d6438e340a7dbd82631e9f3fafb7e50f079155b02a27f706b874058d643602d380fb50cdda8e9edaa3562f6db39c4f610f77222a5a6d96e046de8d0449a377ef6d1947c47c610520d86e15576fa4b0c5dc65fb2385af7eaadf83005b38b1f2a3f49e058501d746f95a8955ab1c538bc34818784948f943679f0cde53ce9555367dba78db955812293c531b645a91cc3f70a0c155aaa3a5913f0c201024ba2f2a820064a2b5c9c3979ec69fd057466f2e3f12068b1c48e8d07d5560f76e78c5269e3218138d736fbc7f13728b7e142b1439de580152093c1d180ce6a41d44d93cf724c6b7388aaa0c72ff5117939a977eca26ce730333417c1da3590b152e228ab417601920b22d412b4d4fabe20f9530dde8f2bcae67167aa3bb1a3b9090859aa0bb983a2a51738f1a37007d8a4c5664d21ca5bc0d335bb6aad2ce9824f38c2e0faa3f54f1676e181e1ecbf07bd27673a9ed08e17946fd139a8c14d8de41fd29d874b9d369d33d7b53ba88f2ec7381d075c0f5c1579609ccc37d7db5fc2794d930cdc8748a553971ab3944702c123e999577d636d3818c347b2d347c9dfa5cb4b49930142c89792749d169ad63f9239eb2676c37d620421026b3267b00ccf37f14c921f2e1ccdac29b2b9a2f5681816b43968a29bb31c43170bf3b47447f5506383ee38fbfc8ebe7b49225b886ca9976c1130aa6f92a6edc979a3cede2dbc2b9edec5671fc48c14935860240f450c6b9a0aea86624dc295b67eb8f5a06b6faf7056df0b4d20dcef58f430416abdbe546f91dd6819e9f4e7d58784906748491783388e4737ffa5032265ca5b72ffb2a6b7dbe5860292a93f4f3ddfaa79b7a974ad022483663b88fb281586fe202ddacc18826598f10236321bcd7b70e98a96299ec139e91c805af1d8e31a1949c67cc49f92635ccc7245057618ffb454ac8f6dd02d7fe84a15a1f6e7a72182dfdcf79e9ff6e91347dbad34222d226d357d7cccd2008bb59385dc9041ea4c70d3599400e0451e01b1aa9bed7ab49035c2c039a6dd3c5dc561501136c12314ff76d4d3a51b61d7f0d032b0925642beca5eb119afb960e1550b1a57d6bc0792af77bebcd9ce6da3aed166273bb9ada08d9c237a6df6c1c3e2060cfb505fa5fce566e665ff550d4b8a3eba593257dd1806cbd86ebe70875ab12f57c5f9d2696d69d2923f0b5ce9dfdb0f33f775e7b1d65e1863604f29fe37481a0a3e193c4da6e7ecb75e0999ef4d79c700293746f8afe3413d6a256b4239f378ad616d83b4206ec6095d94e0d637429d2a5f5f678db587d4f7341842778940905812a5f0d1f9f414ed365f80c7a096bb26f007191ecd62fd9d035341061f83bb2fb6e7948e3fcf8c88eeb0ee4086dc8b6cd8fe952c392ceab3add699a1ad53017fe04a8546b83dc978a1e0c89616fb1254d847e84544c4b97049f48002e50bb8e2965ce5e17eddc4e82cdc219fa1e15dd4e6981b9137abfc155cd5e69d194a3a30c09dc114b434e21072a7206cba00fef26fdc3f22e089c58680f57cc92173ab108f02bacf142a845ecbd6ee2a42cc95f61db13bbb29a7498096a30c0b472ecc7f46737c2b7d8a36c64812f7813d3e75aefceb6ee4c0741116b7831d8ca8e5dea08a4d0f593e856602d89a7308675446619e0f25874101b9535d0deceb50489c9b8ce0eb60b52fabc093be4cb16a8fc9348ad9d773328440266c0cb0e98ec93773c4f1e8babf019eff126547439773a220a4b6417ef1d9eceefc1f33a1d5217409983af5088256431fb88883389c0a34be6e4a4019bffcb7612c3bb75386c9c7bf42e6a17e74ee0266adb44a9f9b628d87ffec869c4b9051916d272df78a8291688d157dbfcf6d30fc728c2ed6700a66573e25219e835baf4a45feba0596ce5c7a6a5e3c3e44dd23a0a045773d8e992a3c9135c509dcc72d22b2b19247317436b75648b7665d28e294c329e2373d2719f0658ef6df096340d4ef831891820011ba72cfb11c119f558d0f15b0145dd26d882257f8c6e461b2dbb68b59afd240391ca6e67659c3761696effa03bdf63b9f2de7ea8fd72e15775f9335d2fc6fc8da24c1ef42f27445c33f625f913e1c06abee3256974f1f7c0ada70c184587b6f94347e447ed1eb88e98b72dd9a8d945e7201eedd5f14d9b2611c02c35f798bd01c5f78b2c72c62207e5e0da24018c56e26029477e42e697b6b8e3fa1f4d7d7caf6e4a8f9ce81b1d1e575e9ef1e0524e9c403394eccab84bb20cfcf187ea8c901367fc14dff63fdc28d2b369a3c373f82a483ec403d8900fe2416d1b8369f665a53afc5d8f9649900147f4b8d49710d7511928d617e9ce9f1f6f82363ff78068311859936e0a144faff2da4452d32d0fdf9c17b766a9935e6b0750ad255822968718cd8f76ebfdc060bda0053e52446dbaab1b07ab2a541555965a8109b9613bfb6d52b20e85e59dbf87fb1dfb33d4fd69b3eb61df021b655c3b7b4fda951047e7c4982aacd55381500c1a8209ede6c354cb69d408892f227ff1a75ccbd6d825fd9ba02026c3282b5c2c02ae53a9db9472f96947a5dd2d7ac5af0ef85a887356394694b8734d7359ed6999f0fd1830ddba8acf39652f9a1e9f1b01a8459c3364c69e69610e8363919deaa4f14c6e704c819adad139da0868acf23adf8b30a96215d8baa63917be452303e967e5c2f8967fc88d2a2e76ef75d9d072c65b5e00eae22fa06bf4f22dcd8114e656ac2204c13112075ac4416bcd3e411b022ec028d018f52af53f1d535217d67cb0a70945fb09a19a1caf02d9282df65e8dc3d532eee1d1300c45d12d3047bed8a23d6a4b422abf8364be591a4a5d7e4d911fec3e48c86d57aabd0da733d0b3fb8905cb5d6d17fbd74b13a32f79a18fae6965440b8b65f592015e40c43ec9c81c2bdb0eaa72beea5a9345b7cd7636fc4bd12f4caed8cd48eee016b1a85161712412c64ee3d22e0de133d05c87c263bbfe480204d06ef68935ce61b34a12371de5df4da173faae0382fec1d7247ad0d4dc0b105d09c08ced23a2a0b2ff45edb29bb3d8a54493db831cc93538f78e7dbc515c85d1aa9c1c6bd31acf5aebb78777d41c58669fd5719e51e399060cf65beea42bc67ec904a1cc9353b5b5fef06a1c7585e636842f95cb695193cf334de41e19ad92d54bf96a2a6ab1c69450dfec5ebad6d5f71362a4fc5af20509781ab47189c3f1cd42edb4ceaa388b474b53ecf44cc6de51c0b710b803b723815734b76b8fc62e7557016528d892bc5b0700519dc806a5926bd5de9e35de586cd1de13982dd88c2233e856101dba76fc52478fb563387373230fd783f8384752c7eb1543bcd4ee661972be7c5090f00a0881ee3dc1e7882c9b8688f87e20d391b53a6ff0da92467c2b54f60b1686c34736165f9779b0882e4873763918c74235915cf9a7bd0cc5b6decfdbf60253b0770711b5db27695d19ebc06b9c3185e96e6b2deedc495df5357a483e37ea5ed49ddc7f5ea71b08fbeee19f61f11e1a7c5ebb0a8f8e94d481e8037f516d644660f98910b9654cffcf6797f2e3e4d67dc49c579a753a3e5c6dfd361aba95d5d7fe646a05a500f66f787e14d552d2feec28220e87b20f76a6e79a85bbe92b5b685e4c99d418391512d2c1fd01ae79288cdc95193648a4b8d273f11778e25c2f6b77fb1480418efad5eeacd9cadc1cbe1a9744efccad618b02dfe82463ed65971cb39c6254d10537ee20378a343fc19cab5a7f47db6059dce8f5382e8360e37c1691aebc9a6ae7c8a21334443955b952283f88ace56023319b1525611a110a0e8aff9e43eff2e89021a3a9c5961d61e1c5ae0a1f37d632fe7cb7bf9d0edee7654ab9ad00c2e0f0c10ddc0a6b0e8512bddb4fec0c420bc64526702c3e04d8da300e49551216ae7b7991184ae966f6e798ac02b8a7cda7bb193e76382793ab70929d213c424d0d219256fd3d0b0be63045fe15a3c63695f3902fc4d0750ee437d666157fbccdf6729f044608d4ca4edc5f72d4dc0502e712c6930d54f5be74a66d373185764fb40af12f35b118d70481938ee13a99fb1993d425efbd6746a6807d85bae390bed14c4b571e657d2793dd1332563d22d1bc02a453486bdb8fe11988a620a2931615fea35c7cc79a1983f535c02b48632bb7af8a6b825c7c8edfaa42345822462669984529497c626a99749c66d375705824fc355c0ea65bac68868e3b56af9cbf201aa6389e980230ea1bebd81980f6c86844878780d4e85de570de9d681a0ce5cf69bedeb2d58ba2b16b3060b8f6fa98380887ae0034c3dcacf0ce9c029ee81e0da5dcf1497f916eb6c81180f42945155bb24fb4ce8563fe6c71b6401731f5a1f9331b8f16c525e3a43a05a447a3bdc7f3e5bffe22f19bfd13b57fc1af70dfc9c8afa8585ab5dae88db95e993a44a08a7b5c1ed1fb169cfef0fa3cafd8214e1404dc9ac65f196354ca92eb39ba44367170f22f253fa6e15e6e56c229691eea1d6af11ce3bbe6c937fed48c9307791d23eac1a9720f866d3210145063f961c9f90884d3444014cc41d63c7a2d8a4d61f2d226494ffeb4cdd503bffab4917974480f70dfed1f71ed5a8fb7ca24d84a7241b8ade0abbb2d756e6084ed37a98da55203fbd61ca5b597ba4ab23a4fd4c5afde261c8a9f35a8acf9a8d095e8a559686cb2c939926e2eb771c47b07f8df9d6957ffcc0829c0bd16ee6c0948da5cc872341117eb57409b95c1c6e956b52fa90a6958278a47d3a64678ba21285ec184db6274902c7553865e53489c7e6d6b714b3eb822feeb2326cd60b7f5d34f31c385e84555299ff2b9c95fcd5935b59e5d21ae91268f02aeb1e882e44f29b457d6c0f4684216ebcb625b88a839cfc4da313f81f7f6a19292dd2d87ee5416edb6ad208bb28f30569ce632bfdde8b75d9713b5cbf8b7fdec60abc0ecad01a6fa93da8981864e890f7ea13a1f68f50e958f3cb731e45020d6ea5db15a7721c9612dfbcb6f67d4e03eeb46d181ae5f45fd77eca3f3760abf05f44c47ceaca66e56e049d12cfcc6fafe503f962913063369a8276dd272bb8862ebb44ee2f11f8198b393df3852e69f40b2db5758a34a95a97b679c8b20dcf874220252955696ad729bbeaacdc100648a1a16b21b59f8c1ff91efc1ebd99c3ac56d374a400a803b57d218d81fb09e5df7edd478ec799823a9ede45b2d22b9c34fbd322a41627499eafda8276f00067c48aa50e80fa5f5c0f9ad9d8999f1b7b5c1368da7e43aa894d5c75a20a29e62a2643968ef98af13ac5b2272c12777c4d2c58125e3b75530f4314bb2abefbfb17653b02244f39cc9bc0e25673abcf6d61b5d3d8da7860a7eb7fdd9aab0d1eaf385697206a19cbb89006d87d1b30c2fb45a265dbedcafaa18f77aee331d82effe7fb928b73c28ba774bd761ee8358e8f96c1413a564f00dba11ff5ce3f282c771312f80e2499c59caf7754d8d9ff15f09307704c8d4870bac4c1125b5cfefcb59386abc6856f4aad5b353beb48325dd2ac5c4c26bff50dbd3e37d975430be586dd33228d33caef0add11ab89dddd10fa57710570ddb5dfc8b68214f7003f148a8dfae5b932900d21bf6256fb4f91fde9e1b91f8cc6c0b0917650ff6a80b1186d90a41230d6fb03c168a5a38f1a75952410a7f20dbb668f0de5c1caac5bb067b3e9d2dbbc8446af5e79f92c6087ef6ffcbb2a29809bd351f92a0d1b51f2acd80e5b9506c67c2af95ce10d40e3c3f2c4f4c699437ba8c80b6d33e689e0135d28486e316c48efde496a0757614ee4e1f3b10a07150cbf9c99807a5a22e2c69f75b7a30c7a260ca40ced8c1cc7c800edfe792645476a4b181b005cc5e6b5f69ec64cc7a3b3c6d94d3280836ddc6dd6df0c454cd7d2fe6b6f7230d4c6493f12368028aef72b02f27db37f2552be1f96a1e55d6f3b88bafeb1c7a3e4b2b55fe5dcf2c3dedd0d637e6505a563a2c129cb0f799276228cbc9286051e0fc406413735cba9e53117b30dfaa8b3d9c0eab2837159f4535dd54878ea5a8998770c70f7e09ebe58fa19da1c819a35fc197400257b3c292480b00e69febafa85de0cc703766519cb327a0c6d37e34791af4f8895be7c4bb77e3bbf829c5cc6855a4028d13bfb6b3312b34981a20b77c6289cd3a66e965a25d0ebf38d913ba43632520881dea1fb8653d12addcb9fab75d73231e98fae3b50f90765cbd896e47ea4e5c82d6a7a298b3cf700df3eb0266be31d38530c094a75b82a70c12670b4e5a60ce377b00e8b1fddda434f23538ebe54191a67a29077306ec5eec36411722047d1e19db1cb9282474350ff37220a91061bc6bf5353fd92ca9a5c307c831146bcb02ca9c17fc85250917611c2b96fc2a3c9da2fca049c2f37424e98f515915a9019a279e9df914ebb3459c4be3a7f6faffd68dc25786c3ef1a937547ddc7d24eff101ba72048b1498339bdbc6ca2f4b434686fdc92a403a498c8238542d887e13112807a5e96e66f8a7deff1b110c259e66af2e09b891990702f5661025289700c616d479ee8fb0173e13b049be9e2ed5d5fa780564058588f06776d72152d0304fd1d47358e0d781b9149e9c01efd1fa3c1b81b39479adba93cd6a68463b31a86306fad5ce8a90c56e9990740f0d2bd6fb3183b352a7a3cffb8737e1fa2d9ce4a88a472dde1abfc4c670241ea2ae76d6a571069ecc5253168a0fc628696e3a7a3da30f807635a6c3c011077376db07467f907275d50b842a78e9ba4b012fd0c631205d7c6be1e2ed6c7984f8cda996e0040bf128627e815e52ee72e7f694ea0a094796aef55f792671598295ec0afad8633644780f534d0677e0f2f3bfcc19643e8da2203195749e899642429ca79e0aff227e13989ffc159a52c3da972ea997bc221dc19e00dadbff168745aacc4c8bee4ec18460e7225743def2cdfd728759654c5e99a045f49038e1f0ab67670f127b28754dedab6c534eaab8bf34f750bf8c8e6528014436e2278ab4a728124eb0a56098a3698dcbf46a417130c311aedb7ba7ee2f6bc0387fd6f3fd6fc7306c2a9d0d1b6723fbd5c59ab8ef45f7767712ed593be0ef9c9441e45b9d08201d7fd54c9d6a3a0c743cafb8255d445cad529294075c9681a19bda02bad7139563ed3fcb9799243b577609ed65208e4892b884941b015079d43177756e74718b0f0913e831cdc6694408dc3b3488c550ee97f106451f8f13634927974062f7eb07f78ba8afdaf9760c062ef38f3188d11906087681f0a6f019c34456ad8d01a27b75a2bf963e9ce231b25d3f73648168b1af7966f71b53936db50bb485c2ef215e53741ab1d77355f95c8f99d9e03d7a5afbdac9a00e09e5125c1445ddb2e9ddf3aad456df0f4a170ae5655216d640ad97108688c5ceaab2273265b4487d6ad06e31ee46bb5cd4989e7b610c7bfe566dad34530146d4212aebf8613e6c4c26f69a2dc0700a428eea448e73404e190a68962f9583b5afef6106adf235dae9d5d19ae7dd90004065422ff890b9113d641208ab2cd3448af1ce64acdb7e415e55e6b3a340155257fa7a14dd4d1719bce72287bd31a97cc86ad09c8e6614ecf84b3e2b7a2c9f160d4892a0cfd84e7095bd138c13a734c859ea24e87129838d5845e6319e20877b18af2b7525fd2412aca1a4b768e692cf7ec570acbef06d614fbc6fe1e58b574624c70aba9a2eb66e3e01591743fa59a210b2bc93a38d099abc196e48a5864d274ed49b3da702f3415815f77922e511b29281f434cc919f1eb512fd862e23dddb4d6d6c2527e620ba38800cd495eab89c991d674c14cf0d9a952238fb88fe2c216eb1ad2e395052eee61964b4e84a3cc750ad4b8439c845d9d716c17d319b9676c168b77e742df7a46e2595c85a8604c8283b36cdcd1dcc79c5c33daef5b728b03c8c8203d8c04e6a7f1d7571132968a1f848a646ec683de86102d54f3c452659a1fe2d6415c2eaf667a49e67435534cc1b807bb772e3c4ae2509b6b54cd387e661b27981191333e6a7e8f16f26bd291257127896c1b3a413650a913f675474b9e9134e86f400e4bc91fc1020d7827c388e6fc5a244b0b1077cc41ce6c0d5cdf1f252368883a68e3fb734e2b22680567a94ab700c46f5d76419598ed7b362a310d410ddb77db114191a9e12edeacc52d3a14ee72cceb5917c43522724b79dbf6aef0c9721c77c2dd15a02911174f6011a37527fcf914672f6ef34a67aefba1a6baea3dafd2a2de61260bd10e61c3f69ea7abbf1093180a0fe4862d1f46a7063a5b257bf91df3f1d4330dd87c726698260599bd7a4483c53c4f951f1f359207cb82628859f75c40767f7a1b1ce5304b8a2f03b341418df5b481c61530dd7f9fd00592a0e67154eaa5a73798d04f1f16c3c14eae9ffbd95987ba28ac806100db01b0ab861362b82645740fedfa642d77348f118415c4d2f7fad545f25e3e15713381987268ae50c62cabf58ac7c8482956b1d9566123d3d9c4abf7cc4fe39a0d93a782a2dbe26ae2a7b939cc23af0da0f9f9a1be938f4750aeba993023cce8969b091cfe74dcc031202e7622ef87bd012cb99f03edc742afdb0f1c7bf3ffeb45e8f8a86eba46db0c68e01efc3b242e4413106013d5767fe38f7e0d4e1bdefdc05cb0907737ff47fc6fed99f9ae3c84e37a723b1a33b08f8974f5eead1d537dbe2b56faedcdab035e543a74e8c238f7dffa0c9b98fcaba6b87d18ca8fc7ea32f2b34a7672a76cac1cb1aa77fbadfa49d9a0b055d05fd413d89b8b7f85305f12a4bbefa4781e231b6741195f7061e2d2d7df72aca6e1ce26eb352a3c3cb958c23613397efad2373f5afdd8b5d9751071a1013a6c016ebecfc2e3f9daededaa12bbe7ba6279be00bc0a1034b0e593f0ec830f50860ad5c7a92b9fce51909a914986bfb2bcbde2327773fcc1a2b7af29e75ad372f9bc7de4fba24c84d944cbb3248a0d40cc32bace0a5d78bc83befc059d9cd6177f35c3138cdd6ca1ed9ad7f30064efaedc0ddcc712488387570ed5f4f80c7a25ff848cf4d054899ae36b5f3c2889712d26f72dee972c45030ad70080c68495c0f87cce6f9cb880131edf19068965029a1040b3f54bbd511990eb7ab328cf37c97ec0be2a98eb729a6ae7249338b86320474f0e26d4556feff83c5379aa3daaaf3dc8e7f7d248bfefde94d94250af65c3e160a754c88b6b4c270e2eb1e15063e16a8c17a6f15cef1caf41c8a74f39334ee2c68079970b915dc0319bd9940f40a893573c4bae1dd081e787c1141d10395e091ba5340e4f6bae219b8caaf9414fd6c165a4b7ebe293b66be8d1b9acc236c5fd1d98bba0659bdef0ad2e26b8e4c81e26c8d54e11aba206da175f0d9e47f4ca6153dba4c43a3cb27bbc016d4ab73c0247f08643aa7a7f0cae0dd8bb093dacf669485b2e5ace590e0a19c5fed8ed7a9e18b2bb5fa859fcf6b9a72096d40acc986a2f39178d5096b9c40c452df0ab8cd98dc3b4360c4636e0078652158e59f49822dedcff6d8497156b05de62999ca070b22e061303749f873e5ecb43112126e1b1d7ede4bfab6cad880ce451fc1b7f904dea6e5fc5dbb51c14dbf6a23079606420bd25afcdab254172340b613509b550efd7cdcb5fdb6a6c1ec9b5bbafb73065dd3bdcd4a087699c87c258bf5dc86f8c7c937d689b94c49ce3dc3ceb9c524c75fb535fc03538d16b710ae2a3ff6fdd4021310bd560f22e04f707a06d9fbd61a552cd4c7542957d3845c532275857aadd9b4223e2dc3f2e494948a1cbe60ee2e4a23579f4bf48747dba94f4ba267e79e57b4edc1a8f30a738964c0eec7da803ec3e6217fe74ca691419622ff83f6277b75c4d6f41dc7cc652aa56d1b797dd814240cb981d6b68efd12020d5c58428ef3775aa4dfe1df2cc7cd1ee70d9631f55fb68b47004671efda4fec999980086393f86e05902b8c358e9a13061b485909d337751b4366d8cda342fe116d6907658a23a8075152f484adc9eca7add765fb181afa27c283c4ff72332f037e6b2c4347f4f09f736a60cb718a902c83cfb4e496de0380f5d74db2caa3f5c2ea953c23e27a7025a7820c5030a473fbf79a3295fe3730e0b5735ee5aaccf0e7dc94051c57746bd6e103e96b452f03fb63f13010b1dbd7272de585ebf758d2cc2d26d8bb90bfd951d9f5120c63ff731a87a0970bf12cb8d5567b94ec309695101bce09824279601b0b2ac6322f995ec905881671e52bf39210499e637695be160bbe7f6493c8f01b558f097532cdcf7ef5d747e06b525ca7ba4928a1e0f67085611fd14b98a6821e1e305c7d16529f3179e4c12bbb48748268496c492659abc9633463939e2a42540e9d378834f8eedf6d20f0d9d59b0836a172d2d292a7d9912d01fe8c46250dd157c652e87350ae0a27112ba4ccdf27f8afa3f9084dc03d4fb56ebcfb6d144e0d8f852e8378e0df383b4deffcd0e7fda384ede98ced2c63bbe019e799eab91865135a9b51213e267060d8438217fe363524de564f65e7ef50a9403d9314dfeb97071a96e256acd0c0586e588d8a45bc50a978291b3465a9ce507f6b08210fa34ada990fd5291338b9ee8e24a84caff6bad4fce30aef6272b6a54ff48f4c52f2845e8cf162416dbef1015d58120b2e49dd2de0d30d172a5bd1577c9aaed5333d32741df9d199042c80a3a2403c20111e48b39a70663f4b9baa5cfa7164c79cb9a34009ce0193187783428c574f86b1b62c1b29b82e8406710f64da17a0934d960df73113e24ec73b9de8ec1ba399dae7dfa366d4d050dc6f945c4436c77d004c0731f60bfb5f544b71861d7149ab98105d74a0d68c7600bd0f08af6532d57e570dd7c9d7e5c726c32950c939836357e4c28c04e1f592a9151da0c5b0adff325a0099d333cd45180df229391846f47914d146cea773c676409c8aad7cfa530106a3f69028f6f4ef037e24f03ebf1bd780706652cec2ba65b82f1e9e5b4cc471481fd8c207353b22388009ab04cbf6c2592aba4c4671f912f5bd76fc5bcc5874e080b624a5730730fa33f8147f7da39089ab4b118264923eb1f2596dba187a4ae93554b0c22f603f61d411c3bf9cb3b5ce482083fc5312cff5bd2b8f79bf0b5fec9405703ff941c7fd2336496f226ff92a7489f25349c9cc7cd0f24d46c65617bb538921b6f8cd6849e6cf796abee659af4c0545f725610f35246d033c26c4e6a810712bdf65c84f2e67b122b653d690370caf082f1cc4974c7234d58f4b672fbdcb19a7370e67b431f100d9957757625b983f551e3553d02cbaf202e79658b91b67348125d46f58e65635a6d2f5631fb7f49d9c31cc6c2d41c0a61620dcdfca312cdef20e2da7194d6c22a8464b2806b0ccffcc530f43e8358af828a3e66e2b2d4849d5a1a38ef3b28b15f6922d266a04ed99662c8402ce99e49dabe1ef6b9be149f591d552730a6d11025d7d0027cecacae0669b81485d73dcce6b8a29cc8a88a477b1086ecc998cdebdc4d35ffe59fef8582ba2b3e9ab6646cabe1a387e18b632d44af9bbe9df45d84d50db9a1c565ab2f7adea9808cf7e386a0ae2b5a4a475ae65d53d13f2604e68428b4132f196115513bd28047cbf8a8fc81b41aca07fbf38561f52e4311be8fc23363e5f1d02e2e5e310a3a085f44269f3fdea1eec7f60d5a76a42afb986a883ef83148a76971f8793604c66d82e1aa9b1423180c488fbecccf27c8a4c7a4bf4a2da6ad3d8a79505dfd8f627ef2db17757eff13ba54b04cad05c589f9e4f0bc7d968008cc923884d46965605b34962bdaa7f912a92ce711f10d46babe3e0087a792220bbe92bb2f2cc04baf9712a3fabd7b0871e32816e7f81d5eb80ad39470d6ef6d09c384ddaaa4a47994e2519283375066a5db9ea7ae38debdc831a15a086764f2b1d261378ce4b08602408a2598d993b0b1fa43a4f2579dc132e5483df6f01326c6175d9f1dd81561fee7d83eab5fe113b10414647875a0da98f5d50e6531989563eef072df9c36e27f4482339e83631eed10bbd4b2da51bbbc831064c44617433bee42186689f95e3d21004352bf1071a77d79dfa9e40ef1a8d32a47a5821a94aa28153c9147862b4f738f5c5c44de15c0ac936484731c7c1a9e665a7276338fcdaee666f0c391eef2707f74fbf42a09e08223af1f8d002c07908335d4f1e4cbd0e454b360195179bfa190d786a10d332dfdab1dd6497a9a96fe49286f074ad19184f9727cad60e005a2f79dbd9c510a9760ddc03a672f36390073d0631002684881cb242e0411b9b093b186063d5d264a52f3a71b7af539df73da1f6b92c0e301f648b4be202ac9919cddb2122b93c4ab81d5ddff972c82750e1009a36a79a6654b60db213b0868c72c899c677a78349f0f437a1afc070e35d77f3dddad8bacad27fb421d759e59e4f69ac2e8557e85602be03c58215abe575a07016d8739ac6f8dbef0b392b1640c19b1c0eb1d5746996e7fdfdfe8e3e0f0056b93dec0f18ee5837406b689a3ed82ba250f72868f06ec9908b4812a45052fc78ba97d0d6c27938c23310362924d3c40b79c55983bbbfaba38b42946d297f7bb0c210c840311e14b3af0498b51c0618fb352277ce8581c2bfe1e0bb7e088d2398a51017e1c26b1a592ff5285a883887bc2e17f837109486f48382a34d8cfaac3ea6c488421f93acfee21aa6de7660c5ac9539181a6d17e24b9560cc2b6e0f66f4c213e6d303e3e29bd8d473b85af7586fd202576f7057ba2457029bce947fb0693c8a83e43294055998f9149beba41e75cc56f71642ec5f5dfbaad867bf2d821d728ab5b0958015e1deedb5989a60c4d28f0d7f29442c1c4ea1ae2f4e4b92e41b6efa547ee33244845fb8a3d239144f6746933b5dbf9fad93073baf35d698740cba763ec95f54792ab89dd1b9b9bc9752bf56b97a0703c3a9bc674ef8be9de59057ccd47f81dece15014b54df1d00c7bbfecb4de109888155d85062eec6927af3f51c7a4f959e1375a238e7540b32dfe78f3d8e1b787402e0879629d755388f25bf991a01ad8948c659ba689d92ca32a09384d78300eed120f7da425122c7110e5632a2e56d1727099924592d1765e8e8c404c7f846c26e5860bf32e3405c0028e0ee8152905a97c1a98a607b76777d07eef6c1a18f3cd0da4c70e193dbf7f47034ed2e2e22d63aca3ddcc7a0d01340d987216dc34da7de8950081a1314e596a78922a18cde1ee0f65794fc899431d5797d9c35a408ecf51fcaef0e72d2ef22da3d14d85b2c301287b6be12b7b12cb4394e22c98048e0654a72e7d26b82e3eb4491b3542096fc886829d43f8c1164a7e407be9b907d32f493c39adc3d016cd7806e6999c1cc29b3497ed15c32ba225058d35a641a1396591f856e8a103e98df019a28b1668718347cecf768073d49a16a0dd79d9820c2c23102bf9bef4eec91e5e20daa62d25063a72ad9059f527f622026c207ee6a124f8db8e8b352fc268e112faf13319f2bc94a98acfa52c60fae33c0d924aaa71e949b8745dc35059d0ca27cbb8382a71aa610256eaf6313f376eacaafbb5d34681b68aabf00c29d5254a832f71359f53f6cf0dff2b4a855f7fc3c90a058ffb352e06a06bb7085eac945395bf1df34a21e412158f23ad16f665a4cf164c95f44f8d32299dc603c7ad3d0cba00788509f0e81dc39ff98348905f9284b1aa2ae3d0e59800ea76829008c7ae72870b4ed98c53af0d08cc73245cb1ae9bd8eba0eaefbcc1fcafa04fed018dd22a6098db146b7af215b6ae7245634510fd0fdac3a0377f653ed461553e4a226723ba33e11bb47d65f5490b8dd4db00441a82e5739947c9a0024a05fb15c8699c50a477ace83cadac526b722bacd3af04c57125e22fd33eb444201092ad8aa09f888d3f583ad11996de8f1ad4178d7a581ec95a9f27e6613f6fcb0207f0b7f600df1d8e841fcdf261211730957465105544e59e270d57caee9462713dc69201dc17041913aebe9488251b488f82150c9551161f92135974c101dd4381edbcdd164e8c3b17e4531fae2f6759f90e891fc7bc7a6a14d6336f25fcbd846adc2e2a10e58820cca696fe9c1836d69d636d67db581a0d0121a19998ef41bd9e3d83dc717547eec5f8bf2f9f76806243ea0d682d17d75438c2a65ae9ce61ff207992511eb1abf9ff781cac15b084bb1f9337710b63a9bf8040ff0912f06aa74d345726023261ef4b8fa610a446be71889713584e66c03b13cdf7e16bc5a99a88cc6032bfa50b0c2481ca953da563a02db0ebe0d5a8dd878bcd82107818541baaede4ff905eeaa62e5efc6503da8943dfd317c2fa2fc03163bed639f51ad3e39228223ea486675309321df6773221a3c5d00e74161f45d9a1109e3103029fe9b0548882f8f3b510d59e9d9312d18329598a54cf010c174d8bf030afeb7f326b7053e1d8e1d88a3e08c2f44ff579b1981dd33dcba18fe4de7806c11035931a449469e18dfaf557410303e4e53801cf45fdbffb97434ce61a2efa4202961535371da299691c765290c5c91a76204a4aa31435afcc52a4a5528bbfb6473d7a13e34cd29cc264a45dbc3be987699160f051dd8c888a8d39fa65d6bb938542636dcfab9583fb26fc5e42c277cf31590faabed0f21ecee6e9b92673551003596b0000ef5361460013476c021353d2993452d8f432672ba4a95f831e02738f497321421448b2aede7ec06fba48fd8dcfd55b0976f8df303bafde6ebb8a24960df679fc82612c62b0a1f79decde3e868ac88c2b884880b155b01c888977022be4da875f9ae9d25807bdea470ac9a9abc8b77874f483ba810aeffda3ef33e3547ac7c9892e9279064faddc83820d067fb7bffa3d8c4bb3367fbcdc40a074d7fa7361070d2d6990de6be6910c5c4a3d7fb02306e764a80e5638a008629068f6a80f5581bdef2483728997df727ee0a19c7ce8e476fff5c269e27b413a06053e8e5e8006a3e4e6d4adf5f10d773b535621e08598aae00735388fb9124b6179cecdf025a895d3612edd4aeee4c4215d94df174ac1d4012b396e6b0078174229e86ecf1e68c0c6e43e465f5be833216f087e96ac297d7dfd5fd4debed4a2ce2182f7bbb42c2fff5785004d50899640bc6fbde91a6d04acdeb72ab0d173eefa677897126712f4e6583e3b7cf5980fcde5b5d617613eb1357e6bbbf5080e01544efc0a6f5e1b1f6d17ae99746e1cba56e7a5833ec5e24cf02bd309c291ff6b9b409df69f2b0f3564972ec51c81db40af803e8cc40a02fc2df0f6a2a0085513bd051f5f8c6ecd3b2d8f130a8af75915e955658d53d7a7b519769c4a535d347bc0e11b809a9eeedb4257947f011d5bbd5c9d13faefb3285850d83361c7bb9a3a55d513444d40ca3e6968c7595fdaa6d291ed148e98303478f912aa3f37778f02004959fc7d43169380c0fc79208e0d816cdad00cd43c9e23e9eb08162c0225b9d97f6dba1a122288027ea2efa2ea015dd7f99ffd44e83e58a2afc71f31b96354f00a32f57877d1ef524473c730112f4c51a64a52d7145e30d8aa813081ce75bad8ddfda61e2bb1eb443da8fb623550395997e573a128bb685ddce415202395af11a0eacaea9c0f33cbe026b111b62511cfccca413e7136154135da75bf73b369c43616d1cc9bd63f152c168e56ca580aa4219f40275b46700781c7afe90cb2cf0a7320c014c7a979c5cc7ae270d70d1947a396a0564c485b3d6c90ce9a8678975412da6a55743a3e97a20abe31c97a6b3da3a8550a114c0bb29e1d2228381fa74c7bd3cc5f5118ee7ca38c1b5f8dcdde5ef2382c85197320bdbfe627f44d76a7f237bab12afaf7a8caf411f4e97fd0d8bd91f038894236fb994f8fe2cb95775e7f578a2b0f5e3852f2a3753f537785d0a9624946015ffe67ea10f2b296b48fe442ab6d1b75ff4830cc3071d0361702e4a5f669c516f17a439dddee7ca08a859f29b1927b6b10107c401a169662e404d3a172a03125f158a6c35e634351b07ac8ecaaefc2bb90bffda75e2581ff095a84ac4c84e8ec5b372bdb9d59be70c51e07c9e14590cf7a5d3374fb9aec41837dbef1df64c647a04bc773cfaa630803fa2643d50f0411aa70ea686e615fe7bc2f822299c6366ee8c4a07836d4fb2f5714ab1ee7567274a5d8e599631290cdd0b20e1e4dd811a9e64947f06eca1e6c2638e1110da790e4111bd62c2094e3fcdea4ead0613493c54bf05164472139658ba13f819bc02bc36e27a3bf1d7097cda96d40bc7ce6d3a3c8df2a59d034164d9a5bb1cb49d9ae99a443e3f1483a1bd0deb8803be4381b7c41a542bca3c2042004e98fad9b76bc19fad6e2e20e98090b92aa0a4cf964b0852dac44bd693f8f8568503500f401d65943524ad954e1e9698218c7e28f39fbac0c187c9b467d7a2bc3c3ba1a46f396a0f3b46c39906cc053cb9dc264a711b0ab8e5eb115f41932f3c713db40b7f3e58e9507a5e9ed53027ca5d7bb52723906bcc3c08b085e8dce3328e5a153c079f2c070174cc9ad0edd90ccced4a52d7f50472b49ed8d02d4fd5c67d1a93277b52d6f42dfd42d4ba4e0dd022868335659a2fbf01f1e1b08ce872ade19dc03eab3abc4f1d7e593624c048905187086494f3fcfed774c2be06dcf8412e9a7505858f350175e38b3bca2c24793e4e01f4f0e4ab136fa09cacda30fceba16c4bb780b60f49b57fba65fd51cfb33d819aeb1e8436a9837b30c6f83ae5d5528522fc6e670a98f9ecaa460d918b05b42086bd7e66c5373b3c630157906ef3cc989eac98c45b3a0a038218fdc12cbefe1479d5344b37d695fac19e86c12858fa9ba5a662182ad208ad50e602129df6fa7ead34e684a0dc5770f8592dc6f5dd4f8be2b1e73e14a241c9824493065b1fc6a15e1ebcdec55695ce582a44c08e1b786345743a5ea9a7eb446d99fb53f8de91b54ed480d8a24649ed5a933d73ffaaf67e81764174ef85e154c9f5cc549a40a5544263e7fde4b6a27c1685758e26c07dc18d385f6ddd3f9d03327d99957932e57c827f50cd709df16acbcc8cb4370ff096245658ebe1c2004ca95ec61664547e515d719e1ada8d5d655b1592fb3a0349d145bb29a05b41b59f125d749c3d168ae1a311ea1aef3bd034cc771a7c8c44e5ddb3e8c024205d2b07b4e7c0a27826c93929d62a4e2bcebdbbc89bab675a8fe59f7548c87ff7218600bcc2e152a030cdf049ee234c4300b5841d68190929daa57a5792f9241fd0fae1ba3fdd23d3eb2b2e5f6f28129d15e1243f43b90351cc82bc6840a811c7766fcb2106e1a7417995e64d9188cfd39be730c1e38c207d8467a77b1376cf955e6222cb6b7965b012e8a7f7fab95634fdcb25e0b0c6fa2cafddc9a6a763922044642a745d2b82fb089bd9c81e8d4943e3c272f8b249e733ed9938c518af5b7662af8b3ad732728e121bc72ca701cf36691fc40c140785398abe7df8b63207974da58024ed67d7ece9f12214f38b21781ec4ca42305b7e3a834ec020cb356df79c3df297638c372a3cd3f275a2dd8c27d9c1fe6536cc2505dd8abb666be14e0066af02e2d7833871e7e8fdc932838297580e476258ccc2be4a349bb55fcb978e86df64b478389f7f89f8e78cabe844cdb77c03cb8b61955c24ebb63b16499b71bf5d66a04e2e64265e3c1dc05a974804b061b157dad4d12cad2774eca77c58ee9efac0a01407cfcc6d09946aa1bed32cab8d466042cb174caa844bffec4d7c3f3b40208fa078b0ea0b9d3212d0599466a6866963276a323149560b6fa1c1cc0ebd57c6aedb77808ea5ab58471385dd89e42be1835269412256c7f67b9960e5feb925e3204b9a5cd8df8aa51970d3fca0702df1078334c5bac2f64d2606a1b0225fa7ff6d28f0a0800611959dd0b7a06a7001dcd88e7e6a6a7ccf20b7c983d6846bda56030ad91b4fca83f66d205399d946416e0413e8dbf492940b3adcd76ca0fab914b01b95aba14f3092257939559386984a3eb49b52f1ae5ba1febfd591e61e1a3b29e7946aea8c868be75e005c74b4afa85bef01194cd8efd51606053e3b4c6c5b87acc96d2df9d12ed80ca8b00adabc5cd679eeb4c58cd6add8e29d867892b66bc54a787e868ae9e2a1d1317618e8a3484d32e9f8702671d860d2d8bdeaa747bc43b85027a20471e8ee7bf56813e9d0ca01a174ce3392749d0e4dde5ad0c3f17a460bcce242978569f2d687bfa803365a5a0874254b5631b4048c4857e148d63f75121337bcccef1de23644ce344d174261051317c7e86530a95d69bcc33f0cd75e7def117ac834717515cb584a6c8e5b45c0d0f40c5695ad280ac66e95a1abd9ef9489c578d520a96bbe07d5310bf0b5d7ac90ae4f371c47f2477be2667207b0fd83f49cca44a504030c8f03641a7d5a0ddbd2b41ef97db838407b47bbab2046c02fcb1d149c232c8233692910e309bb82d7753ed871a43671a3d7e80df79b1255a05fb210148095b3a198e799e984e6f41ba4a330c80b30dacd89ee4938c40f3bf93ea60c6795af62e7ef2415a08751c50fcf51aea91427f1fb6a6d4ee863edd6010c1569efe3c1e0b508bfcfe85adc7b98d9b62ed1f646fa8e4eb5723f7f11f03df2a91d16966e82eb6dbfc66819c3413ad4635edd0d297a617019fe2f39f5339633d4321134ae22b04aa22baad94f64c8ec9144777a7dbe2ba903ad306d0ab090926345f2a0ed9ca130d4e70e0a7ad6a57326b7c851ef55f81aff31d7c79d5b199b5507053bb05210c7ec12936819ad95184de142d5a992a8478bae4268188cda0bfbc07d39b9a94b75547d5f40f6a51bc1c1c3b46c590b89c3f43d56549b7f25e282c777a1488afe59f3292cd7cb9a6c9aedb1b15c601df6f5246bc3492ed56aca660b446c69e29b2140ce72344510ef480dd247733c65109a56b7e4b5a21143f72a8d07b9a722db8d855571ac17ab4b57b0a10625c84881f1e01768deda1c07a161e3a923c7bf44c07d5efcd8a1b70d47046f55d4166c4fdbd773c9845cc2f8afe8b7139b3ab3ce9972bb21eae0a1d3e487de193d293dc34013299d8ef533fb52e646bd5030fa88c1eaf39a78217b0fc2f567ae3e9c695b8a4c88aa7cc083db841fe28c9bfd165a248bc00f448c7c57f66ed5287ec164d10e6555d6ba052929c2e17105e8978ccbff3c912887927e468a31c8f09a46e52dae9449dd124e849e71dfebc40f9165e6c9d80971cb487fec2d7034a6efac67ed0a3490decb795119c10cdf52b2beae1f888e7e0a67f220cf1c33df571959a93413124bb640d73623f9c0ef3e694df85467047b2e0e5b297a5184e609bfee2e15ccc80f28f7023b0a891e4f8ff181d8d8a6ac3e81221f03a06a8b388c5302bee1905164d981d24c894d0a4a7fa4d3688f28243b34aaae3ccae3a719a1cbe7e392382d481cb7aab800d4c8bd8dd95cc51a388397f818aa079a830aa173828a6d3bd3d0a9890669b53e9cae9adb0bd78f175b6aadc15433b99821c93b5ec6c7ef8cf1abee6bf776d9d79a2e67dadc796c693c3d8d57a0f04d9825ea2601c8ba3f6ca8096ff919b6a20f7ef8bc4a4e1d8497046e78b955cae1a3626ff7a8e5c5fa95c241f85ef5b1f05077c6c98acdf00639b1f365509adf37802ffa15058deafd52d22b4b9abcec86368bf0cd34eaf1a2713d067ff176c935bcde3c3c2e2d2eed3c158a9a24d42a8c23aad9a00dd20e0e7ead03a5b0fd066551f80ffbfcf25fb1125c2e116d7258106c13d12a43ec8982504ff1e982675876d4d6ab36b04990f29c68ef4a23e503800dc510e9fa2dc53b3dc26412b153e2b9358a39a4e359f0a2a27321d651456e31f7f91770300215fbb697c01a1a932da41122a852d6009d72edcc28bb48a4e3dce2f8bee2e3de9b871b9f98b045297b5391c1751e01fa0d5a5ec7e9f157fb621bbdb5077b98e17828902ec2b6466d6f02db1ee63dfd347f1512634de459689df19d07dd07230dc52beefa0cc46d74ca941250f2b5ba91afa29567cef50d81fb3f5175a869c802f461bf50e1a3cb30bf0fea0718e3067dbdc42ae006f942c7a6506fdae416ac502ea04ac008d483ed7d1ec2a310f76227bf831c2c82b8d1878c4e05679a978eaf243fb08eb607ef12b28e5aad62742a50f1a92315ac6f67aeeecacdbbfe0bdcc9ac9e167e7da48d5c06d112b2b2b109dffc46db9d914f20585e38f9244aa20a66319ce6be4045caea3d7eba91b25ac4c5e02d457a4cfcf12eeb7086353123490ea11f181c563a8cda13cef1a690ef4be482755e645e0ee6d7e92f2b4558677d8f0f908eb4ff039a4cde211a6bd24326e9c7f8c3bef59324fef294cc9284db92e9af5c85d31bdacb06e577d67798fe236857d76637118bcec4a3a3870d4502198b25740cba69270e1977f81b08641c67a1def4505cbc6ba8a937c549064bf131f26cce946b0a0934300e6dd25a986cb9b2b97679542b9b94224b46f94bb1d2d00cc5e18ccff4d4998039c404991c12332d6849a92e50f8dd7ff5d62d74fe6148f2132d0dbaec8d97729d8fa121b5063149179b6f78a05252ddef097952c57229d03ab194ad2c70c37a1085cb5ce5939b32d960260f26ef2c2caed73ee064697124ae73d5675a6b04c8c000ba786dd87c27d6cf065da206d19f261c1e178fc0089f70fc908b8ea074b1597e29b2c14ae762e1e44d747f4554078319e97fec85914440d984f92fe7130e53215c0a2b302c0e61dc70ba864cd9dd1ef12d7868d985ac5e1b67aa23494ae0ef2faa8c9b2662b265bb6115d930ba1b042d4f707072a674ded8f21b5a863afff492a285a29b3be422c9e3cc70f9821290392ca4b619b943c9a804a31390e4a7cb58bb4d57532d24b810f0918924bcdd08e45910d72d97f5c228c7344d0e18209734928983e5e42c5ee0295ea7218532b3e4eaa5931f8cca077aef78a7da36d5bffbbc01d03d0f2a9a4c631d99d6fe976750c8fe3af403b4c4c30937c283c7a099292a74391c6f910dab3153c01a8652bd249a1433c68918d2acd57076ccd71c165a11019d934398d617922e1b3bbe8ba0c03fbc8f4316a9cae2b2bb912b2f32e7d17315be8cfe7e3af19dbd0a796b819069d8e7122cae2151971dabb54b514a11f42cf5c1414b2d805b4f3393881dc5d1c75bf1f2d8500f19fe3a5ec68a50cfafcd9246bfc364d876bc5571e012aad69766c26f49ae36f5efd27582e37c70e3998ba641aa74bcad2140fa472d3377a38835be581bae5f6b95d02a5d3f66987aa8ffd464988df0bb6656141ec8fb95b40309037181e97110aa3865ae47c4953f9a2047d1109912946c300ef3d3f0ac15461b1f4d9604e8685e50ab7e7cc32eeff487c2b0e0f83d5d8746f9ec9089b23edb86e36475ba8f05d4e1da2901c70413cff31947b55d7e5433d3b2e46bb4778acaca5cfbc457588b54b815396ce7464620c72d918f5106f39f5718a2d0500204984c5bddfa3d71769b26bedd9a6c346e11877c93ffadb534bc134cbabeb4b7947ed38b38ca63b8b27081831f55566f90c95f43baf724f0b8899009426d2757dd400d200defd17863bba17e0f60d71e315f9c2eedf2b7c3b7b9180ac6dd65c4438d0807fcd925797405635e9233d5e162e9309a381a3e5f053c3b793b1b20a2ff38b9b57395115ace212aa493e96c91f22632622e11e6d89d754c79da057dbc2f85787f7d9bda44484859f0b3246ad358d55c436012ae447349e2b714f993434238827ead39dbe9b083da5ec49cd27c5b9c8bcb950fe91a78fb58121a4df0d53995760cf78e00cf88bf9af3a0b75ac4886643da9f9bbfee1f3b4c4a9db1135b9921d9ca67254bee471c0a173c15ec44f61929b1eb7dab74d04f23cacaa3f3ad00ba923b0ba853a44872a022ed3d28d0ede7879437f2fed8fc768479a3cd7617c4ac6ee9783bc0eeb11454fd53b2e11072d5cbfb0ac15b66e500d9a12df1fb9808719d20cf8dd0fafaf623c863749cfdc4b10852d48f397c359ed1e22d1ed1062f1833371cc9d603e250909a66c1141b5a6b7346ce0164d5f99de1365a55bdf297c6a8657831b581f0bd1e4f0c1db88ede96e7ac0e857d1ea990be07396878660a58592f525e69a7e69ed75fd6fd2b01410762ee60f175dc38e2e4521ed92f6e47d3045bafac7e31a834c8d27263c450e3888609ce7016a3788212def8ba01739477507b64be978484858236d85f0c14602d1923f4837a9b2da0cc7be114856546fe43078598e91bf49e9bae342442ec8d1885a68f56915aa8d0d85f9e1941b89721ca028e39bd47252f2b100273daa7aa6a58f6d702a007cfbac1838c97342a539934370d4ef13bf2c2500ed170f934d8b6c5ac91d4bdd2d581571ba1614d611d85b7fbc600786e1a2eaa769dadfb635570226cf81654bb1fb92d197516f15467abea8d9cc1d545d9c4df7dbde8ee791cdc683fe27aa5a601a01ac38c967988530b49fab444a4173417181cbe811493d15fb68abeac43c661c1b9564dafb11518ffb594aae9127799cf8279bec065d52a7ace8b5244964e6dd8e9bd52fc5b87a793f100bf3060d3ab2fcf6a1c210a733c4c976a55d25a7dde084d5317c5aa83aac926cb57e263665167b2fd8391e37c525e99d94d721ef08c0eccb61fa9c746142b60904513077363ab6715b42c02854236844653f1c64a420512b21c4150eddb7f0eb7973ec7d3968228178a462e115f68a99a944c0a2e0dcf0e2db577d48ea47386b7fe4337d97738b9a626c961dd76077f8bc604f57d8cec7232ea4058285ead7ef4fe377b7893c7dd723dc64bee89bb207bdb8566f8eccf36044783d556293194237699cdc927d5de11e2d0cc731e52c9e8a6ac921b935016404f7ab7e107e4c84535aefad6f58909ee632c7e7b5f4e5d714e46805cabea0f14dd95601524b0fd2fb17ee5b90e2d2f420b1d28736fdae35faa3f8bad1ae3e68261dea3edb8177ba30b27030bb6662626c9af4c7b987e04cef71ce454893da1b838324910e5fb70f6f6f9de9fb3fa46ab2c1e9a89442e8e547e3c0e1382af0b6f84448f97f2fb6a4c36409399ae9aed082f8c7b5be78df34b0b596099df6034623e22a6acdd18de5ebc3553c36b2afbd8a83d873844d0ca9c64bb87500257efd4742632f22338a5d5aa43e5400971576482890f85b92c4d20158c016f88dd5325e3b2ccbe26b87a2fb45c238d91bb68fff0c094247cbbda9034c1a25f821c3b7158b68027aa877d3aa2cf78c87f669c7653f94dacec77730a0d3613785d51c64a9e064fda3a19b31c03da69570f9de48a7f27a66570443d1bc0944efffeccd77cd1d7aec8841a83ec3ec309d170de367e9243bb20780e05644ddc2484c9ee96df5e2706a2e40e3ad9974e833d3e020ab0963ce1d69e9cb6c89c77b78386d1ed3c16c5321ebecb88e3d6e093a4c886de49905b1e1d0a24e4306e0c00606e440b4505c10418615c0126a7cc0dec18edb2fbc255ac66767d44d850634aa6c8f7e5920c69c07787029eade1d65506bec78dc842b67a1799b5312f040cb5a5de79b0c060ad9eedb5df39e24b2ae670c2eaf6e22177ab66c2bf294be4abb4553abe688c69b74c7c0953147f8aa0cc0263dc7b99cd9a1411e9444ee743368f8c6b6e4d0cb1ba6bd33b3e531b4b7c290b613f2e536c56c2db89e4e6f4d5a8e285cd3061f3d48b0d7ae8337d42e66eb3bf0971229c4ee672e604c0dcbb88481cb90667ebe5ab553ec95c08ff1cfc0934fb4cfef241c57518ce62d43c8b74c501003da3f6dd10d978b67c5da9a8cd8b094c7de43b80ee9b599fab79baf9bf1e290d3838d39f06002c6e86892e81544ba45293cb1e3d4ccf1099395a2cb69b997e32ecd5933e253140bebea7a9385be70b700e89bf5535daccbeb1570ce8b7a0c27727198db083bc8c5050b9134018c256c4cc43c8fa73ca513b8c1ef71fd5eb07015b52de738fef5cb5e77bce5f0d41347d7482e61ca30e1393569c30d852e135c5ba8ce44284d9f13dd6021dc02dbf677448474be91c74bea619281d85ddbd87942d0cc2d8758e00a7c52ea9818c1d431e821d2b568c80b0858defc9359eb00e6fc70de0c51dc3319346d7fee5156533c88aa53fbf73327d10052761c48dc42d2bc8936854dfefa1d5c3d80b0815fa3427aebe45923a8c6b6b3b8db796cd211b6c586bca7cb3c5608ca440a6248878593620e67d0b946df3406d0fc2ee27ec64e87e6738eaeea3f40aa7800673856e456570c42e02512746d467bd1ccb19c6680008022b0f14ead594bee9478d32d0b416c42b1fc5eee5c6e377c8835708cadba45930dc492375efe7fdade968102ff26e72fa1e077587885b62fb58ed839d438d6d3fcc181b542397585051df9d746272db6e7ddb74b1d9d7d0f423a4ba1c7dbe6bf73d5f9ac3c53445b847c6921ef873947a8fc23a04b6f7db700d727cfe39619f1cb6b9d6cc1f4d8a16779835c1bfd3438c30c68518527f9d1964dc72bb79e8bfa082e25878ed30c067f0ad8de2550dc6183ba6558d944af4a91a386ef51688c87c32263161e08f51a8a80474176a1676e51115a2cb960fe4a8477aea953bfbd73817e895991be304bdf598c4a9450db3b618040d4e27f13aa7a3982ddde89ad29cc9361e3eb9a758aa154e32f53f37fd8e3a00e22a4ae166b40d7aa1a570c4c0e1a2700ac945693cf4a7667f16454f441c629ef456b5d3a4b206774b31fb8f230144f84c33409cf0e6308d1c7f5a24414a03f82f9853c0f34d366a83f105d7b96c0ff944359e481719986c707d1388f4319037e966c375759ce6504cdbdd8a6f8eab3b5d8549843faeaad849d0198da5c70535470dd63b27da857bf004275b71ed850a01c79dbd75c097863eeaaa15f9b95d22512c14461c45244ec37b5bac9eba492699f8ead5a2de7455f89f19b2fced1948766e38f6a3daf9902a7b43ded3d36dca8293f60bc4bcb726b39a4acf3ee5bfd1a097b0ee0599e050517081e2c602a7c1323d78b6450abe466d0e37354e2459aa25531ef5bdf4d54f268007237059718af6dc9ece0ae248658ce16dd53a61f2682318d9a461637b0588979cb839138c8b0526884aeb6ef91df9a98fe9f1da1d4d223d6df19939982fc0675ef16e4f7958d429ca47b32edb10f3a1d2618fbb6e4b07dc1679da9c97f2b0133b27a64e0206dc52ee05edb4d88a1ffd80a3fed0fe29ac7749a7c0f4048a55bc76e61e9aaf8e473cf0b0ffed41be94d475978438ebacae6c2ca7441b1489788d29644ea152473937c0fb6caa4a8be336a5080dd3d5d24817192626861aabc165bd4414e77c639af2c38a37a98bd861c794525579632144401fe63ec713347db773b251cd058aa6a6532ebc6f807b37bedc5f4ef0bc015ad38120a50c1be1bec9dec3dc6a8879a5593aed87fc0ab1ef08abf84f8f0f2d931935b8c7bcf668c21367320a9de4bc844f3bdff4c9ed2591c14261f7620b2978b2653ceee5888cab06c86047b3bc6f437a8ad797a4508f7e307748cb5867d4244ff2bac6fb5db7073c91b17ea8f81262cd4edfc89040d3a1133406ffa85b0391c2ec62eb482230b3a9a72d40db4271c8aa2680d0592cc1a3f3f629ef44252ca0521bf7898d29d9032ec07ae89a8a93d33ba1de836c6a5a32e64e59318a8623ca557910977fea805b81e82140ad83c57d6dc4a4594eb1aa973a637e51db42e96e11b63037447cc2835cfe254d2523aad27289bc41599d3023346f469608a484277db3a447852076756d37ea5081276021255adac9632fd627243ef066a4f7f0a50707373179b7b16d869b682c0b8cb69e559ad758a44a7990ebb26a2c780e1af6b97db26e0e4759724d83b8a4e3177169281cdd8a6d37044d2a41c3c74fbde8311e9434716f7a3fa89422e541f6cf9c22ddaa5df85822161a2975e4f73a5d5ffa1efe4fcc3e1ed61c6ef813c2507df48bfd7fe0f1149a3b65d86ba448354cc647ad21ffd33ea66ee5ff60fb5afe3355dec6cd9bfa5015b74f15552365de6be8625a99661693a70ab61704a94394c242cac639df0b346ad911c4f879e78d9e5f193cb4675b6d5cbc517f63984012427c54115a4eeb5e55ea40352eb8ff9650f17e61f40214c32397761d52192c978ea000293deb1dbcf6a0b9b966338c01ecfacdd6918a639bfe2f27017806b5aec5e2fbaee4f04146522c313f1f257d5765ee38b7f5a42ca113ae738fd0cbcdaacbce3935c27dd97cd1cbae4d70999d66afdebe133e1fcce72c6b242e2bbd8590c51db518400ed076bef76fc483ad1b00431c5586bf8f6b3c3824e8efabbc469da19a461e3cc74461ca19f942161e6ad09fe1f7207fc815f1c8b9e7f84a31b14e8c16c4a8859063c08ad55441f9255563c40f7408b819f7c99380e18c514d9024796d59c360ff56f7f4e0c37892ac6449b6fafb7259647398f2212efae1a4a009a19a4de706119d73e66c5f645cc4e51c0046d9f285fcfb1a640c51df6d14236dfddca55823b548579f1d704f637935d62dd1cded125ccfeb0c74f69a3ef7759cceeb58315928faa444937b9dc9ef267850b4f5e10ba50ca42ee38010eead2ed9163b04b7bb1e98bf5d824ab645d29e9e7d4c3ca12ef4c4dbb65a884ded746dfd1c50556352be1387555c69469f10bee24d58b6fc6f83f45ab002ed06008b653dec25991b9c69c17afd87e55235ee35595e247371739c8da2d16a5f56bca753bad5a12370085a1011092a49f57a609fa8d1c79648165bffefed5a809b0fc25c28e91781607b0aabe3917d177371bdef56cb70cf44e63fe2007e33fae5b8260fbe80dfa30dce714a6692bc4bca36ba64f6f4c07767a592b42724de35d8cade7f01b5f77ff74d0dc69d6b989cba75b981cbfb39f88fca94d0b51f4e8d842d663ecce7bbc6df39bb2ab4604286c9f169f85e0fba39b80184065ad7901d611db2980c3aa8b42f4765e2551b045dbdffb4962f67083b59a76c84d6556e9a10a987e95f142e23cb207b367b2668ea9108fd9361bc711b134fccf55bc799c5683522eb9ea098508fdf3cb7a072f256f70bacd7d9ca742c0c3f0405eb00726bd1f82948da4e01105896d55178d2686202181213add37edc9af39ba858f55107d17ffae4125154534ac9451fcc81ab2cd3d693c82b1bb88cb69953e6f44171715e28399b2e2065414ff01d36a3981d119efe289a1d6de0a35b9406f65ea2543859a8bb6147f5124a1ffa0809b8999d56b0dd2a79ef943b7087fa5deec479ce875c86be1a78517deaf8c5261cf7e70db6c0d67291b1e38daab0165365a84e8fbffa9d6b82b776481323a7361b0c4b6df919dec809c3ae28aca9e681ae444a461b529eb0f726ebf162a7e8919afa717f35f4fea1f3f2cf06aaa99d4ba1debc510ed58c651978fc34a64445f60c5f6805609fd52e04af22f986d223c9109995ff34133ec371b1387f50766f20b83b268644f813baf09108e30ee9908d5fe4eb5dfd49e029aaa7f174de918a36b22402a719ffff568844e806ad1db438d9427a9b6986723701f6bf855467af0232353814394df2dfe42da962efb393d9bbe61ef88d2b482efd1dfd904b866afdbb7769f9bb95da444de03a1c690fe1201ba25a45acc388ab94bb4b9a3d453c28f651180afe52b829a3890bfec52c8a6307bcd4f60e1cafad47680a8e04ed1ab82c142e1a494122d575ef910321d62d6da281d6c205ce0cebe2fce315bdf6ec8fd10376462b4dc26e14a8c5f5eff19b220cd5cfd2a5814478e75e417d7f1e0f8b801722ad392ad58d3953a61716245df4508fd0832f69ccbed0ebd2a5a029d497522244b641ddac172a8eb2e2ef982c21c44510b73bae72c3b2e10a0c6da3fea1895b56ec2a232e6e614071d3693a77c86fe669b212ccd5bcead99fdb8f7f484ddf06b3640bc454ee24a7eb4574bfe0cc84aad890ce1ce8f9db870e149885dd7f00811bb83090acbe98372c6266febf86f41000432b317318f37215bd4da5debcff1a338b1ffbd8ed2f08c71822ab9d469eeea81f26e5928b6950372bc9d7e04ec8fe02a7cb060ce191f3502f0b32bba7ba243804cf85347283f63b547efd6b42dccd76a18a7793124f10e15c23b189b26e394005edc69dbd41a0ad33ae3d7c30e7cadd1583174920ff699676dd282fcfb0e1f2ae58b9e4a7c25d5c3ff0c703d9ef256c6d9a26222aa22111ac79de0788e986a3d52d6d767aca1adaebc57c668d3272bc3723f2a3805f3cf6d3fc91201cfaf54ef6366d91a42e9aff406aeefd6aee634713cef564a3fb7070c8149abde192b0112734cbca211d22677e4f5f9365afb3f0259fd5948f9f35abd37b30d47803cdad97df0688307a5aefcffcdfeb21df6b7825eaf6745ecb28572cad3990cdeeeb0aa2d1b38658ce0b3c123e7239a0a6f40af0967cdb338eb12c82fc9ad0ea8c8eb16aa66455c17e0234a7d723a5b66ae9b0b430f1b07c5d5c609a62c2a59c64035011070cd7d84957825a3067cc5b6d22dbab81f7747d250b32fc905bd8e2a6323a7178b6c54942c31656a38c3ec15d64df5fbdf0b6306d8863ad1e4e613396cee471113a2b42c272a3266c23013ee1d674857ba59c75a76eb8fedf08f18ca3cf69e77a3be709110020d05e350c095fba366405a5608e0b9e7a68bbce69592baf0703dbb12de9b4db48f2ddc4cdc398d426cfb73cd1ee8eacf5768d316120fc86a0538ee5055fab6d1afdc0b0a4d4d9b228ad7b9fce5adad4fcc6ed27a20911173a56d0bfcba701a859751c266691c72f83119713cf5454ea6312e732ac2f2ab67f96b523af9387980c491e14db391ca264e458c35cdc9ac1844cf4d831c22c5d3e5f19f333ad96c4ff3370aa3fc2d6b85b1b611b937c064ebbced45398f87450e8fa6054b0af27bf4134d2c6c56da950db818777a6aa106eea9409af7bd48365148436c8d14db076a40edf5a0f39b17dbe11a33d5b74b701f6890dbd29b4b286fb459da01548832d41e32c3fb714c09bc0dbb36b8a7e386f47e49a3925b5d6e1fcac017551d3acecf1d13b9dcaefc376ff7f310da353bd2b4c928f27a5e6fd2119c726412c4f8586d4aee41548921484823680012502d336f5b642f9134cb02f795413f7a24c74ebcec6390ea547b2b4ae67cefb280bc7b837365d5a90af5e36e467606e82e49da805b40b194b59bf9fd2d4dcaad4a0431d8c5187826c44e9184a978bc5f05d74e5654284471659bea39d507385e834c51470547dd0af1968123cbc2e7ce324681a1c648947d63b5f24a20784ce3457c3e0e5505d0d945c9ffb71443fc7a81030081e36da9ad143e539db583f021fe4a62ff0eb3f20086bc9904312b7e25dfa632ca21418de3ebb6ffe233e9a032183e796193a6e2a2fb6a01e30ed486e77a3630da2bf2d0bca7eaf24bb4409104a75ea6aefabc6fce074d330598202353decc33c5f8fc6de1758d3aac61572b5bab37c4d820a239724264b3706f5fd194a5abcdcdcb8c70c3928b54bcc8e95c4275e024de783d1eabbe3f19a1fff84460fef4eca5ea2fdbb37e291c73b6a74805a79b5d7b8c772699684df65b5a147204e4e244bf2476fd59055d63ce1777019b2fd8d179133cf015e8f187677658800a0345643e7af0910b3c8ca9074652cd99f35ad84940f750cecfc482d3d2b601ff03da2844f6f9545856327570a176c42286c669de6da3152cfca24b3818c7ba8fefbbebd833e288adf69dbbea18f77ce66eb3ebc30a8b8c6c95d582be1cbf378de5ccded9c9d84b30e4691c99869c2df064b7ff51f8a07ca52b432b39f55259876612005fb88197a5263b97a34dfd9f7cb0e30bfe40f5ec31469739621d0a5170324d589c13d94215fd825ba1c63db3c0a959be7b4d1d6b06d85e6ed71bcbba8942ef5ab570e36a3dee1805ddec8f5e02d55af07490df6d6f023b8c5bda6f9df8e211d32e84660a8ed2c282b68fdb60c316ed62f5f52bf13e4e2a9fcd8e6ded126aae10ce22108409bf136b08f4f288327852707383f2479c3269448b8f09f6deac86c2c79cc041e6dddc8728b48fb54b6f3fff5194ddebabd2cdd2ff63478bd39680d69247b695fdccdbf607914499e9746663ecaac05ac33edcf52519127fec642b3ec1e8e5d43d55a965ad87aa678180cce151a33f7803ccefc122b517d51191a9190e6c52404373109610d678e019af216ed59555bca23260e820abe12aa0d3d5f0fbf874900583da13bdf0065931337e114dd356026e68dba8418409770535ef8c131321bb081a56865fb5495158d6391d57dc07875b903bf41a40e504deeba4ad98681f2776d9454ac718d8b96a55d9de319d732f881dd0a489f70ad72b690d7ad4e04ee43ced32d3735ba8d380dc5fcd1108ef61b5a8b8752208d17c0d5e43acadc9f18fec83602959f29b5d80aa2d6c5c878c0e4122a2633e1cb54164c9a75cbc6242c5c74d46810eb508abdf663c637290629d2abe51c3abfc52b416fd8f30e68f361365f1223c0ba440509bf2f520022ed4ad6dc2b7e613dc522ec65c1896b62b00395087fe4b58fc1f49f677e6c4623a95a7591ae93a002d77e32a978e0df1609aee6657c4b3b53c40db7820b1b28a206016d6736a70d566ae47c8c790d362b88775d5fba5444d2b2253cbb139d1e96bfca52314523e0a9813b89b03d4e190d7a6d455181d31d3c1459e04fe3aa30ff273f71768835f80d73b9ab8e3322006ae118438dccb8e5a5d9209e90b4a8fe5cea6fcbf01b5d4cb7383292f1043d9ab67bfdccd734338a8436983463dee69533d413970e9c8e8081511315792d0b27a8d544dfe8aaf1e338097537c25249c18cb27ead7308d8f56b31aaeb1ae1c236bb6f07ddec0113ff7ed374013b6df03e763e086c7576aed41642986b9a423bddaef2e5ce044a8ccdfc42400d7011bddb8119b43c9e934fef477396d516ea034b0474e4b2c5fa0f4dba4907f79519caf643da2c882ff8e0dc6a5bea137dbb761685cab95db8edbfa1a4c657aff5143558d4286422984937590de82e39130dbe3bbbf20482d82834c609bef0356e56d09751eb695b012d6fc8609e5280f01d090076831ace1779a0381f229489f05298895c824cbec509c2b8bc6bed087fdc687149325cb5d9dc227c7c2b1958015006479a151430f19b40601906500dfffc0e320a684c6676be845c9e4141603c629a7534f02a91ca565d5f96dceed90560e99a56e5cfa2bcfef8a165731165cdbb365c57edc43b44977084f5970a60f8c8d3060a774fac6ccfa049947fb208f74a2632b4f417ba8ba6a0e71b2bb8d794e4d944cbbaab39b95de166536d19e38ea8e8d3008777d77e8cd7799573aa87689f43c57ff33479cc4cd488b0b4faae7d561db3755aa5bf2fb2b00c0e6a5f7358cc6512d2ed187542005dde19f7c975424e28684f07e937645488ecdae292621b1b718bb2f4f8ccacb6ac5ae347c8396ddf69c551c4c01d19c616616fde186fbe5eb924d4d5999b0e743fcbc70463bb25de23ad3d333d3ffc8241cce66981081f242f262df6df8b60bc9b275f3e659da22166345f3d5a51f0110caa7e0f28277298057e79768994101e5f62aeb0bd59b4529cce0300e7408ab7d2671ad7903ac0bfbe42b767588e7e8c61aa954bdb2e3b0a9756fac8ce5a97f838e4bed6343963fb176daa0f9fdc7f8af9595f4be26bac3f2acb1a23d5d094ec756c1553201a8ce090a75a3d60acdb24abc936e13b489307bb7ebbf216f03560e836ee6f04ebbd5e864e91ad75e2cfbccbdaab6b42c10ba2564a3aa2e2f6dfc71caeba709ea74f361c615f7f6ead8ca2e455323f0ccf47d92c0e795eb9d72d02af5a108996f1eebe6e3097b817d4b67fde27a3fe969f0db0876a5d638b5f6eeab1dd2a3d38ca17fec60f4fdae045e5913f20bb83d56d36609a254f58812525bb86386552a679a10dcb2564858e2627b50612995762f830a9c123bcbce46288404e92c54f6ce131d2e4c3f32eed8a7c3eed1f41bbd8917c6e0f319564f95102db5dc66e8e8f92c4015956e1e4756059a6198c1c40164330a63b1cd004dafab251624a2cda8121297ac8145522178626038d9a76f0e67d759754cce5cfa965ea741a66eca1975c84e7151839b493f0c053d5f4ff07de6c0a69c80b5122ad01b090d34941b8e33bcdbae95fbcad29d1f799ce844b3c5d03bfffa1bc163f1bb140af114ce0a39a9b4f704e9fd26c731911c57ceb52950c8ffb2c130b391cbb5187ab0d7a24805f1429261f5db2aeb463466c4890f0d544b2372da6fc433f9dcaaa13f3b18b6d1c8fd082421257b4053b425928c466742e5d8176b06bc1a9849f7ddb07b1369248848bebeb7401770efba5e2819bd7229791fad6e017c4d5d0ca0ddf27db6daabd30f60a5d0db1ec43038616caf0cce7bf7b58e302f662c2fa2617353e0419297f6c80a7e185b05cd9c5ecb43179b1c6a5b065b551523310f7008e51a62f49e8143aedc9ffe408c4d74e54fae5f355f886307efaf3a9d42d0f8519f89e0cae695b97d4331606094a0d3c2e3ab0436eb3a62214527b596894039892fe38f21ea7eb922126e331c6c4c6c26049feb11385911d2efc805f1214895688df6b4014737c2b9577adad954d854cc1b89db140396435e6d7b97b7c3073e5be1c3a572e69df0841fb097593e521689fdfb3365553d7f7e8b11be4538d1d75aa710fc8ae6e7bb00f3777171e2a11493ab6bc20971611f4f6e2eda2c86ae65af7d5c200fac26671396a49e05919b9d246809a42ae1e806a663edf711032cceb0350e6721da082e6d0e3a004abe60a3a6d47004c26884047a2507b8fe511805361974e25436b3a9736a9649040dfd29bcb25c136eea8cd97a7ed989d04ab7ffb5987fcb04075c8f1a46c7b30875e70827060cee1db580243870f9c10adcc07366361d2e50a4b2294a5d3bcc5b2d2e739e251ee3226caa9e8e704a5182641f2c8b0dfbeb63b96ee9a990d55e139d180fd9824766feaf1227481ef063738aad0a4a1174898908d267833ba94e8573b627e805d907ba780d81ba3929fe3b06dd68c4d2ca02f6cf544a5fb1f67a38b72defe7a36da56c26a8f3daf71eabee0b163b400d1ad0b56b0245fcdb2e865199d6142dac8617c0201cec5993ee9ce1b6a435fb69bb22476dff07b59ead7da87fa33deea074fc31599dd966c983b2e3c73ee61a427790a1c93c855a168dab12048820b658bc1fc09c628b2c519006620c065f7b00735fc3a0bf8b67d70d01974355ef7fe29add2d320f8bc56b75864279675c2f4887ea0e587e9ae1aacb0fcd6e8a8b1d763bf5acca0cfd7656eaca2b7d973f83f4514b7d7a92f397743a667dd9319480a9d97672e84eea54a430098b96acba393854ce9f0624baae6426b67e317d24e2428dce19bc8b3d0f48f01051a91e6a4a87460d1b1760fe8915119e689ba3314a420f6599733e94865a29b004b794a986821fb6bbf8ac38df3b7eac431eae50181157e9209eb360631ab32edc2c0f5107151b66a66c7683e5bb6a58183124139a183a3fabe9d410b03fcdda7771254a696236f491308c2916d2bac34e9808f4d632019efe63b350319963b5468d3582d5e829c9bd99b013ba08ae9991259d61a16f44f1f953fbee3c308b72015df9214846611c2ed953e42c02219247299181c7f440ba44385b39ce89f5d4004544b4375e9d41c2aae136c6db41ecfc12f4650584f972b4db4f20480e299203e70010cd527fad78eb109359b586b83781d49b1cbd42c1f723731e21b617092d07dd5bafaf3a1a5bb82af1811b7a86157ace27cfb714bcc56c5c31f58d417384ccfb4086f58901277aa8136ea8c243be2b24a137bcb146c02799e066f8b060945cc584473eaffa52c7803c91683b6d0dfe8c2fbd487f259627a0f8fa82acf27d60d6b5278ec9ca869b2ab4dda541a2fd94b90b3041a11eac536f6b2e2b966961c8b60bea440d2415fd786ae4c46f8a4a0930c48fa5b7917612979fd0d03ae8eb7d5ddf5532bd29564edb038d8ea155cc7b6c1601bf9d2b0cd337c73b04058664d66b67093e504b274e308adbe3b6994257fc14ac0a819c285865956641c89ee08f9d8f7a6ffc660ab81bf4291fe07dd552eabcab638cfb86a199f3056fdc33013faba758493a170cce9a305b97b2d6c353211f7bc6774273fb4d212c9a60644200215bb56476696bda74f94f284d0e46be930210890521c2d877ee4922629b6e562026bfc1fd9d4095294e4cbcb836ddb772edec321e0b6405308349a13ddae9ac3d5d18823d23f5cbacc5e28889af932ab469788ed4906e72215fe601ce6827dcd34c2c1cb00040baef352c16ecb0a5fefa8a3e93eeb4278927b7b74e565e74ee84cb4a148bbd78a46a284a1f7cbfe1453ebd2eac6be23a9a80623fd375556d306334bd792835cf3c9574da7f49d31499c4a7b84561268183f8bb23480847e5583c014464e2c84861bad9e087889daba6c2893236907adc5fa1141e79bbdca210c7fd0847cc7bf23bc5500cb0afd8e64767919297faa4d93d41712f7f8e02409a075ca5cffc899d15a10804b33cec30cc015156948ab5bca312720da03181be09ae8de4ceb06603bf5e86bb94b947ab8f91cbfac9effb5988c4b1b19e6767602d25e8c08aa81ad2e886e9998a8178633e1e0002f50fbe18bac21e6d394a723c9c07d11f5ec1df71d50beee3f0f0f768db6074a23baa692186f8672392f780719c58ef4af6fbab99d9986dc5b7ca54799c0d8e72c335eb91820263d10ad66fad56bbf7a838a4b8be921637a6a3a826d6ee1e472e345049246626e8d32dd83af67cd6e85f694e61b5f07350140484d9fe73a7d9c54bb505cc2a7a40d0db447bc3cfa19043c18e726004a5871860fea2523e3a9a18175065b913a234522ea30504677b9a9c1d1976ff4dbd84c366be20605a992eddd191a411ad5fefc87ea496c78caa1dca48509280442097020febb86b4e88b01d18b136caaca969d6611ed934e1739e837a1018c1ec41c3d69d931f71c70398d3a37342af1bfd1217c3a620142cb135081ad2a0dd52da78107738cab6c7379bde92a2cd283f308539b9f2f62585a4ac4bc91f028df1e24b746ec913a9791092d220368a15916e49e28073800930b1a9fd7a5b2e395ebe78146a8c8ead3e8178e1da4412d4db4a7fe9d4200067dd52204f49435f0760d1c9c7a3206431c3b321889c49db2a12cb81508fdb53da34ad4b1eb0f7fbda423a9ac2a75843eb22245020448c0b6793a53e38ad9d1431796db55c64f8500658330e4f23ff79096569dd4a469613b5c0dc221dae16ea7ed87a4bd43685cd2a358779c411e5cbc12ff1c2b71b64d3fb7f185b3c044b1dbbeb13f8c556acb266d56e5a0db7d7e772e1a1794e8d71a645a89414d9a64d62e28933f37a356733274f7f83858256a093bf082947a2ebb58f99360e1da35c8344bd65eec08e0f1528f4ed387a2fa45cb4c98797e0a3cfa17ac47c03085ed4d344d9c01aa11fea92e37673d567b1951f7b88c2fb373de2b216f39da49b5ff332fd7d9e344824f1c0d0b36c9e6f539fc489a4fdc1d005a9890a3d533ae196e050f97c3864dd14cf9db4e19f005f76659b7511f4231f2336f648b68144c70663059bc4a2fc8aa4a57f064e95022bf045cc000bbc775fedc4a4ad0b6c3781231b08e7da98772694cb65659996fdb5b27a3500f3756c2cc2b8f08fe25d39d676f960492ff35e2a3a6bb6f5967981f2e39c850a8e16c8e79a72cf60475335a6daa0d94b9fef91f9d71cfaa399dc8a372f16b463b371d6816a292fab804196e3631aff933a72383d3cb056bede0be3ab09a7b44fae6e07c2623da3e51b0f0e66747461d4414757973ecfd851015955249a9689b5ee77b5024a27310eb35e7a6bba35ac4b658c197df05a1575fc985aaf1a14c57a09a5c31fb90e174062fc5917e3e1c63566bdac72ff8ea183e3bbf242e50339f41032cb68cb649950899215f13708ad87623a0a8add3260331e66572dd4c0576820880942c59e777b6ed2c506f5ff0e36a45423d572b49cc64a4283aaed4cc32eccae16c2239a874bfcb96cd9bc0100b0b9f07d960375234245f0844a3ee4e43ca089abc2d5b7e71312f504035e39a7937342ccdafc7e1ae644f352795e23271aa92f501fda2303a023a2c4eef10c31b4e7ba8be5e0667af39ce23f1afff31efe0cff343b63db436888ca1010f3c18d7b7a9f3b13c0a96c15eb53a3ff1b209e90353919a70dc585a012e2e4aeefdf04d591013cb4c390d63b14fbd4eaeed292e6e7e2009b9be51650c0520b179e5090b22888878447b5486b4d9d2980edc59d4c03862f8118d65792ee0c314b3152f4c84eef13f0f3ca0c20d92cdaa8debcc5c5db150e26c03cf914f0e3dba31340be4f3b16bab4b3e0277065a130d7a2162fbea34ce4db46b98a53a87870c9ca775d4686e08e7cc3df2920de6493579c1071dd411aa0c45e8fb1a20a466ed3326da53e199ef7517625849357ea8b202447d2fca8cadca6f8e92b916684293469493e9de40f506e88083aeb44e91fddf9cedf93fe5a260f8505c789258358dbc32542ee6d2bcd8ac30b5246348d495b2d11b8be969880a97baea5bf2e5ccac8e1df58600ffb84d07ab2d8641913d656de01bdf459d61947a783818f5633e434a1a47e13aa09a48507fe12ef08451aed7f5d1e3106a58cdc1b4f7503f92125691b6be1326ba00aa10154363374558290ef4b170cf67201500416122dab4892d99b6150258857bd087fec9147eda1a540049791b482fcea3c190ce13b03c3ae5abd33b12e98b344c271b22b055e4f362f014dd9007bf94400084a8b41200ac75a6ca30cef7d5cd0f178a2c74edd915b4f7a0663ddaef1a78ad0175eb3403f2037abaa1c823264a48b16c3ccc9dda28208125f89f56f95a072e620d6eaed08422aed263fb114610ae0479394b5e0ea205cce0b3944f063e1cdaa947f1fc61df14db5126e0eb625b91525c9230509676766c7d3f4463d965417f939c5dff97a0152fd4f574df79aa1c93ed28d3330d0c82cac89d287181d646dc6a94bd7b433315ebf16a379cd40048f12fa2e9ef97882fa0b918c61a1e723d28b704aa97bd3e65e52d9ee2d99509c04a25c46a0c86e45e7ec6f54b47b478a789b568af6010624b07343b65cf557094b270cbab3b825f71498cee4da2127e549ea3de8645affb83ce674d16bace00d9eec8e275cb523b4cb7c4a72c1bc687fbf6d993049cbfff53ccc29fa85b995f85f93a2607342ade02d48ca090641e458a97b6a94c1cf11ee72603cabd79f96dc7823cdc569087be377ffb53907642934c7857dd3661e6bf5d162a45435bbaaaac6d8ece7f1da7ba0ded0787b70a55bf8306257cc86c2d8d1c6a4a21f54f1b227f4eefece6bc82bd5526c0fc2a21a938c1a32c6f5320c899a503a7367b27ccbe72f19da38f7562d37e83cf0a917d06a55c224b6718c6445e815721ec96b7f90d48d5ab8f12f1fc0fb13655c83c25fe88a94d2774418a661084f0f7ecc0586ac859ab1f7bd6fe27e865c20ad156e54ef6245ffc8fa9fb5d170aebd4676768aab222dce7ca7e0f19e1c27fbad663cb59f2af8b34ea2c8f919e9c7a2cb1b6c848a6a9019dc8fdba35b7f518067b96aca6860f73d3fa2c1df688cd62eb62775c23d6696914725c38745ed30c7d2bcf9d78ad57b1b0a88a61f746007e7553168fc39f3d96c2b814e84b7e053003fa097a728c9a51820c987bf050433af4fd5bccca7b8ac0ed5acecc354b242b87ab3f624baf3155b79a6a7034485418f535b2066fdf6c50b0c0690abddf34f808776c3893343b3022be85a8a600672f584018310721eb66cb86876c1f772668f02e8424871e714c732d0d6ee3f44da78eab0ec6a7b1465449a126e17d2b139db3ce9810f639558483858d73f8e6303e2981d543cf3d5b21f03f86fa9c193b90cda65d2c354dc8aa6ef2f04cadaf14c6b6aa50a922879b0884de336d350ceb8d04a17e6b248187027ef164ef5b7e15a4f2a3c7fd3909a4f6d92a1196d410c2b20057f8044336b7c5e275cd3a590b5b5343d47ec77cbb8b0fbaaa28f14c98137332f5baf1d3b796a040fae06ced7e7cdf8829da950e821329924b5ba1b604761909246773127fb432084930aadc0e406b3bce5179cb1f954ff8454cecffc6e73e7971e18c76f87e91a1052c7c7f9460abd914038754bb1a3ffdfe73bd0d6e5752d3f4cd8309fdd9c66640b14d6b9d496aa7f210592c4958ed4ed1ed216c49c51aea26c364ca71754c6e9fc5eeaab88806bca3588be36c58fe2ae867ca8e81a72b8928287e22bffd9525e6f213870209ef6052383e55a38e4e2196978fa1c7b3733bf13fe36912e385bbe520d4de300c2cc0db4699f3c7a86aa6d1b7eae8feb3b16120d8eb7b9b60f55a20e42e10a23ad5e20be5432447ea1776c1e278b28195f8986a6fb15b38a13135a9f6807030129affea81ebac8f13c9c5828a7dd5e3743071dd6c94e8405b7a5c0bf80e55cc713a19f644c12f95d82c4793f05ec354029573732eb8a26401856e41a082ab1efe0ded5c92fab775b19ffa883e2428033d3679b24a837fccb2fb0e08496622b6a17b319f864f569460b4d101ce001b242e77514e5e20cef268f7311510abe18079832423187ecdbae1b221f540c1de7ffe8fb80924ff2be37d8b36fedb24d39414356a9f06c84e149613e6d0465f32a67b0b9e4f625389d4893bd1d63c0c7b880c383b72217146136906d30c4e74312ce449bb3e6f923d4fc380c6d2787c60dea145e33fb74438945aee371dedbec4959cfe7921a9f92b518146757414f6054536aa8f72320caccf52e1b1ef809fa2cc40b12a8c4606f8213b6e3112cddd71ad34c76d75ff1c2aed6429ae5b5a9ddf46603d8b9b4efc49c9654d6ebc4bfa467a359419c5dac84749adc7bc30d7e20e3f15539d0d5f622359db2bb9cecdf96c49f31a5c2f8eeac3c0c8ebb2cceebcf29f91f6cc2e2384437e0cc583b59fe9481af3f539dcf55eb3927a7d9d630d1ebd85aefd66d503f19b0819ccbeb28dc085d298d951fade86bdab76988363941ee07685945fe5a5fbd45d106444ab5dd56c63bf0a8b28f3c6686c6e09f99df9756eb61cbb6816423ae20707a61247fc64ce11d2e213f76c09773c6ed480214a020c523ac558f6bd09a7d1621e56ee460e7aa2d24fb019c33a527d52afbfecc8476ecd83dbe061b307ab23bb4d446d4356476dae525825d1cc88ad9a867ee57cea6c8d2a7793ed4098de92ef28c6482525ae98c28126f345335acf29f57cbdc436a26487e93af992626fd3a297f20db846efff758596024969536493d113af72989be331d67f6792d0ac811cf75826a5ebcc855d9d1375596afb8f6ca0a73b85229a4e52b3df330b92fc72b0991bfb9226d3d5751ad77c62b88f33b91ceb554d0be35a274ef360ea1bdf802e40da704a7130d69be11659e2d7d014f5b3f1a1b52ca015fb4605f9e72204008aa76c06e7271e4c93ec8339cad2de61690a12b5698550960c8ef81a0f226f55dcf96c209508d97499c918a36eb425247776987fcfb6c85e46ee7e4d1bdaab5b2257924b89b92995b719383079105a743f81494a2086c38af3829f928fcd128a9856db7faa417dc1c7121bc64d7a85819a6bb4f17160023108398df5c0c21d10667e88aee08e8d6064fe8f99be0c23bd9ea655492cd1fd97fb57cd8ccb45cc565bcce62418ee992ac9ba089d3be24bbe115989d0390b2620a5f3ad2a8e25189ae430ea8dd1962fa70238f931e39ef3adfcdf4d233e66b305077a0c3656f4798cf510989c851f826ba7fd8537fbe5344e4645d6d03fd9065c742a6c65da8a7d369fc441a93a03549bbca382d062dfadeea4cfec817e859ae409985c568082668435188fcb69256f6e5558c07a7ebbecdf72732599a12b82a3032b303baebce43366cd583bb846adbcf35eac51f929ec37f05ce0b606b07b53139e021917d9d81367175302199190d2ad893e9677de9ff944681ccbbaa08f1b7e820f5085c228c86d208848a2106c10a4c437d6ff1391f126ab199f93a9412872b95868a422a483f784a2c5c0341c165f8cb04c71078bd95eeacb00f31b510ab7fc9c5cb0e7f86903d407217b514f7d4573f755d779579588211dfaf76f09fd95569eddbdc5b78b4613c34a261f5e64769ebf10cb2e8b9a52feffbd45bd227699a7b84784b368ae8c3c3f17433ab44bfc489f865d7162d530635235134432a18d23c8442f6baf52edb9d1a73ca3c8077a3ddef5358dad9cefe78f55e9e6aaa8fdd05f54c3ee7faa38ed146a663ea6c929609416a955cd86d35654ab51a96dee430b50b40dfe627104ac12b8e7520480442518758f9ebf31fb2daec2b937ea9525047d63eda3cad80cbe3e633a0cef12ae17bd3b8abf3b50881f4157fb5fcf01dc3d053900a776fa315f41b480fcff3b1153e2053717df8dad9238764c924b27610fb849641ae98236c291a93e9526fd6b0c51968c87691c1f230afcd566ddd8cd24dc154bceea858889e07ef1b100f86b05eb8a3bf409fc8b1e0818d217b46a9bfe453991db1fafc94f52c7970cc327e01aa96777c7ba50b606c4bfdf01a052a46fbe976a1dac40801e8aa47bc4b1bff3b7e992fd6cae567913413c2b2793a5d11fb93f78b1e79156f983e477e02830dc5f0f1d89d6cbc78baff63a27afb1947d0a5b7d4a7c230093543f1080c5349422266f6d23fa3ac415f8a20cd564f24bb5ffd0d766a47d83fe9639b56ac2ba09b7388f2eeb4f01904142edfb05334fd4ae22f6f26614c659449eb873dc8631b68a50b513fc54aeb7c692d8e592ae85dbf96a4a8faafd7279f13be59bb9a4e9798341c5511b0a186e0f23067e428c67832c2439226450a5be9eb3b563b316e6933a716fe5ad76273500e5c7e8f927bb9a0f6eafc07c443d047d3da8ff5cb744b81d59af004721b5239af90295defcabe197bd0256e9d6fe9a6e874d28b4c8365b38069a39ce98755aa836e27f432fcb3b4c5727619044c6d01530a3d62f6c8932219b7c54d6ebf57969a8584c9704a0f112da36b2cc91cc79c44f3e41372bbe2f46cd4ac33e32a82bae0b74d80b67c863c2b346e2ee05fcad04ea45645a73b37417655d34a303001036547f3a5b65a9d13ba88e7fdcaa542c87803d9ec412dd0460c280ca6dfe9ea32c29f54fe1b1af15494fdf2711d06016a0809f2b29be0c35715453d8994291ed876442483c202079f094680bd389b9f51ecf478bd88dca1ba422f43856f49908b39358d5c92d78017437d091612e9b3d3b47ae15c57d3d841a4501a0bfbf8fd95e7b10eca1765ed9bb4c981b42d889ba8232f150fceda325976be67adc4fc9848b915c3e233c23b77db9d51994e705a233d3afcb81225c21bb557b3dddd59974dd7f4bd9c0e7d0620dbb36f6827f503430ddb48887c37c09f559f2336586dd0219a5da908380ccbd6461598581064022c6fa7045b75efdf1f3e01634491c9617309698239d3606ee9b0f72fdf7a82429d84545259fe16e4e7fe9dbc7c253974ea59717407edab98ebcfd41ab72d3bc9694d09d8b5b21449e2a853aab8f6d4376282330d61b62bf0895b65ddf2cbb39a7c71fdc2e4756aa297a5960b7d6af57793869135e73696b74f39ac3cd08d753ef04ab11aed19df150b41f2e95f4e2c80547cc2dffe8adffa6795cc259a2626f4457618a339c758530c92506d183d3af825262d9c0cd90ab4d0e842f0830dbd0d4e22027eea243759b70ccea290dd345272b76e02e37991c38c9eded915285e161e93f886b89ce8caedc0aed35ce37f144a007d01b55f09e341b48c4d0c8e883ceec04081d17c3fc7d25e9eab5edd96116a3461a6b9de5cd1fdc9883003b4e7873402d85919032939fe0059e324695bda5041c090d7969d409dcb47d8ef547d1eb356bfd2de10f84932d12fabca8cddc9bd4a2809698933d938ec94bf17825784b36e3f76e78b2c14dde54dbeb1ae6960a8fa6911eba1c55e369d5e4423981c1f184acbffc5457e561492605711cc91e84372ddc4b75e317da9c2d0497c5b4116a1d536e1cf79fa793c17470df71626f1138ebc1bb956bb45fd2f8df47d45f910c1a59c647db0de9cda440ea7c4b24c8d95acd682da7589bf3d1b12fb35ee3f15055b3ddf5ac8a4ac272200239e084398d7d6f8d1a9af61fddefa982210cea4105844a98de98e255b361be4823be7a41e4ada725a8d2b2a89f6982e6d1a8dcd1dada79f2420545362b7657defa220378c636f8d218879e6f94fdb5dd634b6b28fb6d921b047ec700a1383d51b1a8a14beac51f252b0ef1d2cb460da61918080797dd596093d1e08c4ec255ccfa72d9cdff398bac0da1853598a82acfac466b7ea18e87e50433ecdcb8009a9545d4b48fb8d9dcdcd21f586f64dfff20af2c0f1329a34832cfb4ab16adbd98dcb2113f8e3eac6bbf8e9a0bceb79e55d2b193b3f10022bd8a0197c20bb42ff1d8ea860b2fec6bc27588bc66a589fe460fad8fda33ac417b1afbb239523e95dc38e6ebad4c57141f8c29bad26f46dcc2cf615f4c34bd960befecc5fcec0aa3a1df06e83f53015df61b950ddd7e28be0dfeaf9d93f31afa68c2b07a5a848a5c1ef4196fdd6c3e8a6cbe1021ba3bc6393fed1a307f8cde578495beda892e4143453f1d9e29be25dedd4ea901bef7f758c31ff6eba2b8ba3bc31a4b3d1fc868a89cdae1eec8b29c9b567dbd57e44c77fad85df4e0d5641fdc7df0d8e29adc5552bb2ee6a2e359cffd1b31582e4a0edab5131c1395b1558b9981abc62ada1e6195d1410137a7d2a7be23bb8485b2c8ca5cdb311c4317dcbd638db1a3b7a27157762056b98ac5c816c797d8064702d3a0cdecdf375aa999ba3ad7e355e61a80b26a7dd85f27f2003f6c578520f8c4eeb96dd52649124e55d10d87195ab350e61bd1d19e4cbc68f5d52c749e4f6ea778374c7a6d0ee6b2df1b8f3a6aa988b2e9fc4a9a76d27664824b3ab7542de0fc2801a092774029c307242e81480d7695c11cb66a03c755a6a28a39196fd9e639642f0e29ac29be359fa350606cec04b26f8fa367edb7f9f43b658f495d9b677a1b3fe820ac6f23ff8e900ccf8dda2fa32877cfca5f27bc97fbfc3c291aa3e8fb3cb15ba83809b0dcfbe61a3cef74056b4c5a4b60d76909dc42bbc851de13879fb4f75ecb699ad8cc7ae37608b85525ebee0fc30c41ff119423aaf08ba2c29f6cfcd101e334b1c690559f21051f28956ef08482436881e9946c40eb5572523f0d3d7ba921439c5f31df40cefe6427631ea6dba88eb5811236c6f2cb628e98994ffe4bab0718d61579d831cf309f922a8c12a8430c3df047d6de1b39195f721ba467b1aaee873e8578e40d79c951dfd52cae4ae3ed1ce60d57a70d0115377725a3109c19817e9ce7010d3b5470dab4e9d6bfab97f82bed349c9f5d44a3e52f218561c83c401522e42a575ee2bcaafa3a4745d92a06f81e040e33bedb4719be6daa83821ffff9ec19d0671e71bb5283319e6b49dd8414b52f1c25f75737921d9412e2c7f46425bd0a1038e66f6d5b1ea0df97c3ddf5b8e41ab70dcf7ade24694ee539e87d6ce15bb8cfd9990247f11aca73ff31356eaf1f25d2e5f74f5b8ccd30ec3a0831e61f6d5c344c6f17b15e8565a6d0dde4189314ece8a3501dff0c142e15b82704f620a51f28605d1a8856a94828ebd783b25e087d75e80d3ad3e6eec4f2678df394699c9addacd27c9d0ea3f88d2890be0d4b63697cba9b7c0f98715e3b35ba940b0abc374494a6ac332a097ecd34ddb98efd8a9300544a57a4ef5e49471f46497a34fc42955776c18574f9bbc4f6f680af0664528bfe17ecb3ef36c997aa48ef56236f91cb3be01b3e6b1205b38825547db0143baaff295814802ee34ce12e3fe64fd22f25be4e6eff9823d1bdc026e41c1de3796e95c637d1f07aeeace32061c6f89f74a7d8452bdcbf9e456b498c443fb54824ec02e2eba74c9b70a10859a665f85a2797566421dfd313ba294a94a5b0e69457beac907a8c7b8979398e0ebd86eb0e2c00398b2184c54181c69f3eb4ce32b9488145f0fb2335fd8627dad527c3a73e47322bdde73b1c8606f8a4a0d50a8d18a3550a5a6549c32af1414a983b0502bb1b40078824ea60b5bed68ab950690974b5600ff02c8d94a706009585690de51b79806a8a6d6858a6825c4149e005db4ef54b9cd7afaf9e5e4803baa024efb7d56e0f5ae716030efaa8eaef6b148ca26352c398b27d2891bea98c82ca449214255d4bf7f96afbadea9bc5fdfb61bf0c05adf9082aaca2d78b5401926b6331ce4a6a5744db8005302bb795aafcbbf4c08383239a9b1d7c6c00336c062050dc47d2579af80bfbc8d121f1e6368f19959ff393f93e3c36477b236efca80666f81adcb04065d44c63610732a79c34599f50eac038dc41d34bd3822182ae953cbb0da7afb7690cc1e557b542add75d88242211012205e677032ab8c0f50717e9b159d10534783d61d4c32cec31be8cb4c936a482fdc7538c9c2d640eee422ec83a420ce82caa5008a70320384e69871149043975908ad23a7b67890f2cfa099109fb3b5bdbe43a604c5009c2842d606ef021661da9f6bfefb4ee701912d62246a6de3dc6c00d5946a31798af382354a9206726ef99f62ac193ea82f3241daa71edf4ce381f4f6e1600277f36323fc210cf59116db5c1210b17e5bc098ed409fe8dc94cad7e6c76a8ada5ed8c1dfbbc6507edc273d7f8045e72edafd79d7018e58b924ac82827be6166df3cc10a8ef882668f0c6adcd271748a8a30074315e2e2bca6343eadb2f395dbde9c3cedb417819c89c987245995467b7d2239976629534e447c146039219931d8c9a31f0b998fefac700615b4fa7813540a1253e901633fa70569d770c34f81631460daf2e69fb951bd979887265555cb4eef55f325cae46fd2476f3e6ebe5887465ac00d4c6ee9a509f09a5f9132f701549d1e2cea516459225cc66bb11636932f585545ce6a7e4b348b8d2cd3b6e37ada81569df0893b4084f73f6b2f030fcae0fc8063328210472b14e4cf119cbaef4bf14653fd2cb87891fe812c1881cddce4a20e3baacd473e76009ab804bd4cf3dfd05c8d8ee27f754dc8f8007a69cb34fc262f60efbd61065a02ac8f1ffe2164c23aab7e1a3c07be63e253901ae95b0e2841f770cc6cb0826fed9af4b54bf3aea594689e14071c35bef904ddc98942630e39deed565e1ad3c78aea492a4d32e16a6c6e881c4f5eaf2ddcc358611c37a5009a41a25b2198d2f7a2a591799d7f8bc979bb6df8b5c1d91ea50c09e1c667482f0adf9cbfecb7e5a435d959b65131742157f1143d190c7095ac9cbb5cb6f41dd48f5cb8d78d1a196d6f15b94456d319e0ded66ac5d75ac3e7bcf74aab78717e5d5ec1b3f8b9f58f4470f05ae9b3a405249ed4a25b6b9b90f468e5f209ce6844e4bcfadac11b9442a25d829cfd1d15ee877879e735751427cd19f1b425d7d49676b6573fe442d20c168de8b85a434fa93f6cf89a28cedbde0d90e9cc3ce0a783010c0b8068f3a20c22cdc505ce3baaeff060a727b0a55cdf5e2261354aae456ae34eb022b52f8a5071f3bc3f281437eef10e7f60343dd735d7f7303c6d1f07367122c17bd7be23d6c5e0f7e639eb38a9d7579f712757df3b3cdaf026ff23ba68f8611f27d1de9bd8371ca3ab4e4aa22e7edcc960e203dc4d570182e708921df507508d10ec48326fa00071eaf963a298f437e41d61108ad1db6588e00a1966e90903340c57acc07b4938173946ac15e0f609782340fd788c97bfeab948a8bee977fa20ff8c492ee93ceccd029acd0e7fdfe635a79d0e8a4ae74f52450beec07a3427c0974867f839cd9dd134e35554e33a566c5ac0b778d4a9feaf728a32fe1bd3b86a9606f0b266311ae3fadb97e1b0664494baa55f4c362b1db65471b57c32d9b0d4a558a5800c4e59c98b7a2464d4e6aec7f1d93de855c2575c352ee133c341949cc38afc9ceb0562cc05def0c0655ade42473bd97ed91afc5dba801b8ffdcd92c2385de6d3b5ab7f3a5b4ab58b5a3a34e81f8b84165e65bfb919f8b6f295ec222922d579082d6f2de24e05529008cc6dc08eee0e0bfee79c315e538d2ff04160198965b8b091df1d9b80260f4d78f1407375c0c08e27a93acebbf5160f1a1b72c00bf3675561ddadbd89ac5c7687c162cf3457a722c32e7f5bf4e067d09555deac15744d146595e3a629695070db115b46ed9f241eaa8ba8e6cbe756a0f485f452a82fe91e105fd33682967fd6a35c036f4fb1b12e6d3542438d0a382641676c8bb3dc333a2e98e5536427faf82cac3284fcb7c5d36a5ccc899e2ffffa39dde912fe23c241e2d70166ac241e574276e3e376dedcde35c0c49325aa54285c1358079e4622a1f41215ddaea9b12b6191138ea212adf94b3a067fbc4021b2bd82f46f01eb3ddb718bc1a7b45132ddbaadb9abd5cab01e1c79213336a65b0bb8e871b18652080699a548bb8728918d07fc6e04792c521d5da566d372966d9c6278d21aa579c7491afce7910f70a28d28ecd68738362b1bb4ebd44c44095b42ddd0775aa5e4d464a54df4a7fdcc60e39a2d62c7c3cf010eab240acd622df2ce6a826e05ea1ac928c81df6fd89acc3cbb95bc5791ee16042f7149a48711daf845b2c2a14c812a3fa1c23ed993ff55033d1ff5ef880d3f1d60f00eaf61181aa9dc77dbe61ef0fa355c9dca804d954c23e00d3d3c2c81d04401487cad00a8cdec519a3202e63b63e454ce9d5cc2cbd0ec2eb695bf978be02c5020e8f177a0d4a9d69ea239f0254caec9cf8f8002ae2e8c940b492e34ac5f1023f214fcc1a81fd3aa6a8b33ba1a23100997311b7e4ca4b1407fa2c6b4e4e7066689553389954eaa490a9436faf84604bc3320789b2c7fe93c340879d9a9025b5805b6e66f7d2605886b48f0b737eca2a52de5714575f12ee6a42f52d8ee2f186624321a4016885c71bf089c3cfedd50f8ed1b178400538ff23609af19fd5b6c687260506d32daad5862ec7af9f42ceff7f9b4bdcd3aa7e56da3ac463bfcb0b342035d8e369f6655ad96ccfcb9bb96615f076d0e7c97d6eb4a0db072045a8bee2775ff7564c4376a40b0f7878d45bc5fdb353ab479b65b690e395d56b737e92baad15ccbe3cddf5f3d6a2d4f9b944847a4d4b532efd119e956b0dd3aa865f48f7b9d7e43efefd35fc5f335af7b47015e0d89afdcf6dac3722300a0ee855aaa0a8c44f043e293e9467b17788fe4e967b9a4b7cc2e6d07edcc8f9030652837ead30ccf06fe80fb9fb510666cbfdeacb58a50279d32d1c21d8d0d48f9dba3c3581c99b532cacb2185ccbe4f54eca0dfce913a10fdbe8130046b3531940178c01fefc11cca2bcc47b4558081b2e9c366aa48a3ec7fe5a174f0da0a191eb03381a4e2ab7f06090c06704731c43bd8f47cad0c2e509464dfdb697f964fe583c340f5607a40e40640c390d0747e0af237eacad0b6360598f005457d671123223a22c4519b8c347b52ec342f582ca7fbefb3f59c462e9a66fbcd470804c3a1d40610d423d20390cc81213a892ca81cc25dead00e5df25fa4439cce6f77bc66cbc2fbf13232db81d235d855926129b5f07e88e9976e2747ee60889736dac1d69e55a1a92cd79935c12d0a23d6e12e22272b93db8168ed8f4337303d7c9a12081aeff2e9a14629ea923c074ba1ae3f99b5c9807ec7580de9e8cb2b4be25fa29272cdbe93d23c9ac78aa9843e0506586701bc97d68da7fc5015540699551c053c41aab52e8fa2fd53f3e70f1e6277e280ded7669a99d793a2e783160794dceecf6561e063aec1b6f9b3aad628f2d21d7c8722c242daed046aae3a2494fd2ff47446155cd7321cd07443dbaa6f6e22a5fc52cdc56570dfc49740536f668ca344f81e3f2745f1545c7a0aacad2ac3a0b145d0679610c4f7518d7559dc97ed423847826bc45c9179dffd529afc06d1f40fb24ca1eed9b20f799f0cb3842cbc1fc58bf96c9c0c6cbace0ac24ba23aeed9ffc69a9ca6a1fbb0b81dd65c227f01adb0a4047478139a9008a964bb4a54bf573e196b8a3808774ebf575a40a33ed970868b86fc565377b20f55911e1fd12fa622c206dd3a7312fab4e680cc540d8a90f2c51e7186343e32572b12c13347bb62b146a26ee7c05e5ba2e48a7646137f19ddb7caecba28cd2a2b03919d181e9562f2b9ca2eb84c726b4a7d9830858d5c7364a80661dcfbb12d88e999589830dfacb7d7d85af6885927835792f785aa9b4b53362d593ae30be3b29b725d8ab6937873143d921e9bd5fa0af02423024f3f8a09382661b71f4c54fe4238fd92ae89408efb288d70d2dd6388a02d47eaefc054ca4c5a5b7500f6ac86aa65f90bb7010e4a019e34a50f3d6d2ff4d03b01f0b01caaf11c7c36762c602daee635909d09a34515e1ea4c52450e1fe57704ac3e848b01cda1fc3dea045cb960e2f709fe5980630e8d11189abc967f4b9bf5b1d1ae8a86095aac1d385257484429a8394f961920c2678b1e8cedbf8cd701bd56a4024d5c24684449deefa3b98fb3f5a644fc346cb44f407179fb404cd3faff72064f2ff17b871ca4a132d0403d7fd86a9877da3a209090a63fb957705842ed13de27da0e29a55dc84b178576b64782da926c6e328d4deb438e754a8a1844cc87b7fa3ac808bbcad2ea06bc0f12d95d6e2a1c5787c8380366c68da9645f54239bab4773b51dc534d6beceb6ff972025516ab165411595ea69137a67a2bf14e222da0c0f7fb216d65e852ad33ef6bacb9710b4b02edface4d632149a1d32e30e02527796244b57f8c90a2bfbc88ba4658d94569955b6687807816e89c618daffa86bc4fe512c2a4250758003636dfc9db7b63675f67fb2505cf8cbdc20066120135f026b59d0619d18f8ba32ac029ee6a24c2b27c9dc8a90de90496f9e93ca87616649484db18c26c431db0bc4ba0b6dcfc77ac2ee9e5f6bf813a55d8e48640cf74036506aae3a4a4b4e5832b3fc5e3fcb1e4280690fc554e1ac76e145e39b17bd06115405210691366934baac0f97ce02b54f0dd9811f29fe1c26c406dc454067af659ac543cdff2b3c78c86c9774d4a4c2b40a527475c89b83e6cda63e7853f8282962da72e795c13f89e9e0784641f65f348fa979009955448a0aabf89257ad34e68d0cebacc19c9922b28078595eb58bdad946044d05bc387cd719a631bd885181d5e7fa313057ae8b5c65e22f77597c10880090e6d6dd06bcde7f0c9cea6c07138bfaa99acf936660ef2d76b656568d66526bf0100c90f490e0a5b64adcbba15ee2d2a689954e6bdddaccd4dfff43552c62a4c7a8ee58ec512ba0feba740ac2eac386b7700052db5208b3b45a6b8c9339e1384f97f4a6e69edab4d4db3a0c2d48f94ca17ab2c3975a508375b8371adf657c5687a1eb8e532caa483c94ac46a1deabf866c895010608f2fcdec80f2214ecccc94831de0749a6609d291e86d81eac47474642b1943a2d78e7ea9cd145e1dcf79b4cf0eae428a93bcbf908e063d4957ebdee848a328f2c980d37f5dbc0768a4c91791ea1fed69b74d3cc3436ae29892ec3d4e3960033083c1c2e466ec18a28421a72c8eae4b864a7749668ec496e198b4ab1d7d86b1e47955e4ffe5eba2ba1cd9c4c73946e6ca5cede5e7fe7ce0bb3fa544813712cbeef4bfaacb187a21790b95e52b10cf22f90c7c1324a233a9e992c8daf8ab554f088e891c26021350496771e9519b456b47127612f891cdd2495023a77fc5194431b716c823ea43b35d39fc7f5e4563ce9836732c9f6491b11f6ad7e2f6914ee87533ceebb3dc0f4825fcff20f8dfd6dc4bd65ea89db753fdbf8916727cc44b5cf99a8f0cca26640b6d221e64a61d0dc5f564d6c137acb30b9585e40a5032a1e1a7d77974cedd9c4b2a8f39c1591789ef3ce6d7bd9367676514efa9810c55771476aa01540c5619f6d61cb10352cacc9d6c75c076af939808b088962546cd7fc09c26587f31ade0527d156afa5895d14d49be9af942db50ea05c8d35612db7533d3332102b94156e00cbcaa2eaebc10e42384bd0e8372f688905887c097e42e2f240d7a034735fe4056c4c4ab0fe91bde271cbac7778cd8a1e398a5e089f43add9bc34fb491f1516d18d68f2103a6c50f67ef9a6c44e2cb5b101a94c75d381566b7b9054270a0a49bdd0fb4ebe1e4d9ac33fb71624f32d77824259c391983e40d31266c070eb017900280c4c7317766a1ef5337e5b1bdef60d8332d9cd8cacbf87d9706760d549f4627ad29448397937a969af7aeb8c8c5176873ef588ba8caf8146aa2719b051729740fdc3166600c62ed8c52e6871ba16f4347a6a0f1db2d0760543d1811fd65439392eea20353f7ed727649ee25854d0bbac7e2b799c58f4b0cdc3b30c7bab327f917e93f94d37ec7deb95df149551701083d863776eb68d246ddefb62b82ac741df3f2fd38a9e9693f4bff414ce3d73030a714eba97a305556086f49ffd9d52f8f6ecd7fb381437c8a354bea7f05129fe139d73651bd0cb6ec60b961dd0cf36565469eab1a6a9587c2161a050e9a1e673dd8ce2f64a813117dbc2fa2d7a979c368298a3fef5aae0bab9e5eba24036916b39f76cf47501b85dd485aa9f9051617773e1f6fe3a87b346214d4f8eca5bb82515e56ed47711a167e04ff2700b53ff00d9d8fd33f90f1b11dd1fc4643689c6dda1665e8fee7184b884388336b15decb9dd2bb380fb38374b6c37045a13bb9869f7e3b2aa335b0694d2ebb0e59c4fc80435e0d1122942d50a5eb7bbcfe8d649faf8116ee4d011c71833fbee2432690dfc936219a891c0bc890df0c4fb2d6212123bea9f59195da36f3c66f22d2e149b3614242fc611681849249f32c830c42196707c2152460dd4664670c9266607d9c52dfb3eea1b4f535e9656e5e2e2e906b3ee2b7c4ea734969c59a252d02531471035eccaa2d0819e6e1870b839bbd0dfed00bb2148505c8efca2ae864572d93171d83df379a8cbdf96193d41dde3ebfef88f0b7c33cf0662c7eb7b270a3a52d0e3706f959e59b4065a183cec8e9b9882cae34944b623109b48334fcaaff35eb0f711567ade5f582d552e5c7e9903d1af0a82c871b456b674e30698a34629edb8999d014b95d3f71cfad5a77c2fe5aec099465c9655565a0b5de72f85772625bd204ccb4016c801c088d19eaf55ea54cf44f1cde2a808859875a3e8d67aa4968540591bb6789a66277196942ddcd377a1098c4b56c81626f099f11620ffedd0521091c2a5a66ff26e7482ac645fe2ed299b384a0b3bb2536a49a02d95561edb198bd5e28a8bec01a01cd4d3d723a2b0c223cb6104f1f284a34227e63c4190ee91e3eba6ffbaa82151dee57a07987d386a81b6a2dfcce65f095c1c39872b815bb093f8b85450ebffd5133e3165dbb4ea49e54e034dc7afa060ca1669cedf89e6f3f5a9cc5a97c5a418ba71d466f47cb366b5e12afe4dda8856449cdd43586893a341fae3cae6014dea40147efe651fafc3ee128703365578efcaab6f14cd477003a4cf552bd3218facff337deb67a902e4c64016bf0cb900d066eaf420ed2512b54a39b46424e700cc26cd7270551c718b311b153a76101ebb03c9b5d4b34c28e01213c76ea4e8d9570a3a4b8db0fdbcab50bfd1143c4fdc9196a33156780b85caef7697bd5e7c3675b5c3033ecb18ed204efe1031512f959201382bfe8c9e729c0962515bed5ca7fa7f5a11e81cda40837060a1092fb1037879868ccc14b45026e306be265e43e6d8c6d2f65f6f2686dbe625d88afa7805aff1b19ac3fa38f8dd6a5a6eccdfe204bd6c4a92253792615ec876edc09112b1b017c9b05e477c343067d360206e954487ed5f1c2debdaf24d5940a1c3f5d17be94244b3d9dc8a4b1df88f2e09c9121c09bf37b70cbdcd8dd2ae2ad4927b3ee966ced594b19ec3acd1737a130fbdfb4e22f75d3d24fd2fabb57d90c7dd43f7fb8f22747e22c8f4f5ab80c804d33849ded8d8b141dcac474a073628dd5846d3b352cf26ee588a1f25edab5bfe20f944ff461af716cc6f1250fe1a6ca3cf0cab9ef93dd782f382ef8a78a3103556bb0a438983eaf760259f27aa50e12f99bc432fb4efbe7a89f92765d0a0fe6fc19055813a7d1a988c8c946a2ce4ee80f1e1d058c5c698daefa6348a7dd657331f1b4896cfd3bcbd43b688dfb761782787a043578a38e12c88d988e615a2eaa22b52a3ec4972198117019b8313b704b1e04cae647ff4d72ae09372ae1a8e40284f756ddcafd8925686686bcb0321a61b36b67e3d5ae9a7ca2d8e343c868ece206311ab2892adf9bb2498f1242bd5e1753e68e1b80c60254135021c4ea6bff26a59ff96f1b2155b80a841939b9b78a75f4957920e887f6f19400fddd42390ea0bbb3c4a6f42fcd4fa8871c30b0e9f5b3ac9d6ea643c1cda0269e3181f5495d95f4150051bc24e6c30f65b2fc53bedec2c18bde0a3d96ce7fc93a7ae76632563c0290c24bb4f210909088ba28419a92c38c03fac96354c30367cdf00a5f29784329622fd5b18d2fc313394e407060538d2cd1dd042d35ff72073fd7293e9f0f499bcfe012a6fb797d3ab2df5532f82a2b08d1c903842f0c6a5878174741d7e065a1eb648ab6de2373ccf35d7c3de6655c21555baeea3a9e5883291cacd6b4bd9e96f165abe5f9827176a0204fc94abe1237f26e162aa6d20254466162022f1370b2b136434b7245d2d885b06abbd658f3b7de20ea926334feae7040b8d21bd74da3dc4208ddce9c0ae6a7baefe38995db844d5e02ce6c783858cb0ac3e445e31af9375210c7f8201d91e99c034a4c5e58836e9dd83ca0677009ef76d8f8fdb6ae5f05a55954be9425ccac044e88b40d2d00ff9c0aeab9f5b9d8fbc614979acc56a926af42679aa3cfd603097f398d40cfe1937fda094a17fcee00d0d4c3972c54a9c89e1082c226dedc4d03c674ebe4ebaa0732ae0acb82738e34393dc448ac5bde9eea6a5fbd7da7e4582a585ae8a1de4cb6cf9035392b2e69b6deb5f24d5215edf9dade1a040d940d639defaf4f433bca70a2aedecdec9147d64068a340af9dea42605ae96f03a11e951d478dd52c49a9526fdb25c096d4fe184ec41847950577a590b361761de264d02da218a5f88336e3fc0d472d3782b775a3fd87827dd2a7f2d52155763bfbe1e9b145535a4d16972c22dd7a8a50fa8385938a2d89167bc2062cc1379746a6caac6ff9f5b8a766abb2390a67426af2469fe2a6715eebedc63bcf1219fd0d31553e058b5db24c89c17386f61e6040efe9192bd01c9bce0acab261792c537cfdd7bc014c878cd8ca175df427b469b0cde32e4a4b9cb7b925207eddbde1eec3003834ce911d3ce8282fdda0c756cc633d0f370b9f56aa1c8757f6a08b8d0de644a741fe3494432ad4ed7dc325067c2242d13b8416104c2eee02c481f3a1ee4766b300711155a9bcb691b0e132d1a8aab38f163c405f34aa0954681ae976ccde18a41b648afcd61de97235b405a7abe4bd77983f6f31008dfd854e75c5a2f5d99f29193c04a6731e3b96c9c758b78c4c5e9474c03b5f34cce317b0cfc3e28898555b414e68488b32ae0f04ae0863c574eb34e6b500512ebb47d7d56d849395262806b469a3229538fa348d8698bc1f988ba34d3c5bb3d4caaaba7f618bb9a273194b8a3626382b4d08a019c4af98d54ab92b3d1eb13bfa95028c7db2c199def2bf8d1dc366dd848a7801d353952e517dc570b006a87ca4b83563c290f2e1785bc1b2cdc05d5406a31cc318b9ba48312d54146859accaa8c4a1f07c164e61e9cd60aee0020779771e7b7ac24230057353dcaca3936b3051c29797fea7e95025b9ea6255cbe67db3a14f2b4e3a2c26e3d8290cb4645a73fb0fdb587b2e3b2c057948cfc3527fb8e310075aa4d089f2389cdbd51f632d28e41f268dec41a0195dcd718da4c1db7d978c46ee5b9744a67cdfe565546062d78f87a46fa0d5d8e289f7f4a09982070f4b4262e5a78801739bc410071de2b731841077784022887d74827395926e94952fc9e6d458fb84104bdb76795a36b05443fe32875857b8234e7722ede5d41730464c103d9c6339dd9e2407c9b4ea131fbb895edda81554fc86074cdfb9caaa0e201353ab636cae8ef05a0774412f6b959aa6f8e8ccd2ab53c182ce66567e699fd512d7ac9dc81372febe8ee157d088563f83f1de000ef363c3c59aa03a84f7ca0611f490aa16c13c612507280e01fc1f2dd8ad2510adc3ada92d367a0f35f640f68abbfbb653b06cbb81b1231825a0624108858fb6ef96e0db803bb0d13c92d411036d48e6a7ff3844b721dd02260de714474565fe264f53862dd61ccd6cf7e8798f01bc76c770129008be3f06a524823d77ae4065c5b00c9ab3495643bbd6ed5984a28749c0e9b3b81a4420e78787d96136f5b6d16be15b950e6b9dd71ce5eb23dd2f9b78cef4c246224293a3f41d38519942d3a34ef0009779241c1a8d5c210198ba47e4bd3f007f7a9c93e3cc9272916e32616aad4be57df6f373cc2c78ae098f0ab2e2711d08f59909f9671fd4db147a5607071f47641797689cb9d5fb51157b19157b6704a3851195bef1d297490a01b2314b239d239ea5a9113be5aa3537b495d4d6690da61a0521995b03d228f9283ecc57c2e77b0b70f152c547ceca36f4635fd23b7763da57dedddf2640a29b2169cd49012871fda70db11501b4b697d718e2d7ac25aba497d6b8c416e0ce28cd9190fd9a413b33ffdd6cdb852dcf021a7ec96d6a1b5bff8d63b3e88376fc009f8c00f3ba7d5ee2e6d925f63c0e272293161523e30480d43eb68ae9340702eeb422929c6f0654661e8998a367b12a42c99079c3baaf05a4075156dfa861a469c3900ea3286dc20c0c0cad368173cc49875453fda28df70a848dfee55e910a9c49062ee8dc264600b192d531e034c1db43fc68e3e63551c2d61503ef0f6a4204a62a02526309ca9367e2bcde03daccb24fd87df49ae15e77f86991959d05d5fc109430a920d36f7081d544bd82ce1e8bb168b4922eeead1fb85debee553b6b8e3650fd136ca3086849d9d463ff7dbe2a4ee6c0140f608daa2a971d91712d8242255f25f8f27d1deee26ff8aae2d8075b7bbaebda275b1e326214064a5ebd2fe88b35894df4ca8779ffac4d3edbd437e56403e4114eabf40d67a3aa407e12f77ccc3ca7ab62d6995068bcc3ec4beb08e4ba15620d123d47699768df7a8018adab3e50e69bdb51d781e95b2952e39a5ffcf8f5996403a4b03ec45b3d015dfe6c931842b0fae9cf3d0b415a0bb490e1064f36df7d3a30957fdb9cc7681b4cb69cc8d8555c7138481d725320e32bebc67c35d6c1d05b8b6b974c3ccba75ec57801c2b8c4e9523098804d0d269578e9d2ce1ba2bd081df0a4e056f6dcc888b03fe423a33a8a6500002685077a3f117a928609cdab0122ae6149ddd3415961774a469b6558fc622ea307473a3d58532417a6ab21947f79e2ea55d688962b1b959d253b5a32b639a50a74f5c8251ce65c77b4f1233881b666284133104a2ef0947dd18d90d2df58a9a1b68f37fc4cada04ada8f3f8962f1c92aad5a842092f12ef84ecc92b41d913b375057281e40e5ba2d0ef8342ecfda9aa1e3183db24046575bcded3f492b543a82bfb316ff3c42d442519cd601854a4563a627b6e9a251a1b92a81d774455d0099d99662a32b2d0aaefb8bd091e6f3e8eb8faf4386b77c4d6b88824010650c5778b2e365249377561a19bea4a15d2adad70365249d799bb58bef9ec86749fe517f159a3b30e8208133d59a3ea78ddff069af22131597289177059815bc52ab10f48dc856892b07af2af895804e564565079a23142977d1b754d0b9c6c32c17727cff860583d89ce13573ecf6f4a5bdbcbcc53edce9900c9e898b94502449db7da6ce7b828923fe640cfdd66a2d1c0235b45fc6daba11b4c4408c6cf1fb2916a56099ad459888ffba6dbec3693e7cad2ec480eca0d2d3deb9e83512395b7c0905807fa3dbc1a90f0b980e69f4a3ef9053df7dcf1bbda47116b5fe1383c60271843cfb15a8ac7d0680d33fc37189187f98a2c88fd8dbdb22191e847ceeb64fdcfbb249b29f10ce3b46e77b4fb254f476c5c95f1154df40ea1c5faf8ed2185095986163b2323c067f0da1b015481b8e58e2b7cf4a2a5142172ef5e9316ccca5dd50ae844b589251ca0b528c53b827818dc1f3c243d30d7c876e2462008426d28c8f614635e9060acb7e508ada13784b4fe5a522257ec28db7ce745f2919703059342546cb3da3769993730f735340707527" + ] + } +} \ No newline at end of file diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/BeaconRestApiTypes.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/BeaconRestApiTypes.java index 1a271dfa8a8..1d38e2c2dfc 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/BeaconRestApiTypes.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/BeaconRestApiTypes.java @@ -66,7 +66,7 @@ import java.util.function.Function; import java.util.stream.Collectors; import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.response.v1.EventType; +import tech.pegasys.teku.api.response.EventType; import tech.pegasys.teku.bls.BLSSignature; import tech.pegasys.teku.ethereum.json.types.beacon.StatusParameter; import tech.pegasys.teku.infrastructure.http.RestApiConstants; diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/SingleQueryParameterUtils.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/SingleQueryParameterUtils.java deleted file mode 100644 index bfa0baffad6..00000000000 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/SingleQueryParameterUtils.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.beaconrestapi; - -import static tech.pegasys.teku.infrastructure.restapi.endpoints.SingleQueryParameterUtils.validateQueryParameter; - -import java.util.List; -import java.util.Map; -import java.util.Optional; -import tech.pegasys.teku.api.exceptions.BadRequestException; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class SingleQueryParameterUtils { - public static final String INVALID_BYTES96_DATA = - "Unable to read Bytes96 data from query parameter."; - - public static BLSSignature getParameterValueAsBLSSignature( - final Map> parameterMap, final String key) - throws IllegalArgumentException { - String stringValue = validateQueryParameter(parameterMap, key); - try { - return BLSSignature.fromHexString(stringValue); - } catch (IllegalArgumentException ex) { - throw new IllegalArgumentException(INVALID_BYTES96_DATA); - } - } - - public static Optional getParameterValueAsUInt64IfPresent( - final Map> parameterMap, final String key) { - try { - return parameterMap.containsKey(key) - ? Optional.of( - tech.pegasys.teku.infrastructure.restapi.endpoints.SingleQueryParameterUtils - .getParameterValueAsUInt64(parameterMap, key)) - : Optional.empty(); - } catch (IllegalArgumentException ex) { - throw new BadRequestException( - "Invalid value for " + key + ": " + String.join(",", parameterMap.get(key))); - } - } -} diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetBlindedBlock.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetBlindedBlock.java index 16ef43ba735..1dadb0fd9ac 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetBlindedBlock.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetBlindedBlock.java @@ -29,7 +29,6 @@ import java.util.Optional; import tech.pegasys.teku.api.ChainDataProvider; import tech.pegasys.teku.api.DataProvider; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.json.types.SerializableTypeDefinition; import tech.pegasys.teku.infrastructure.restapi.endpoints.AsyncApiResponse; @@ -87,7 +86,7 @@ public void handleRequest(final RestApiRequest request) throws JsonProcessingExc blockAndMetaData -> { request.header( HEADER_CONSENSUS_VERSION, - Version.fromMilestone(blockAndMetaData.getMilestone()).name()); + blockAndMetaData.getMilestone().lowerCaseName()); return AsyncApiResponse.respondOk(blockAndMetaData); }) .orElseGet(AsyncApiResponse::respondNotFound))); diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetBlobSidecars.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetBlobSidecars.java index df71e555246..dc5055fe88e 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetBlobSidecars.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetBlobSidecars.java @@ -31,7 +31,6 @@ import java.util.Optional; import tech.pegasys.teku.api.ChainDataProvider; import tech.pegasys.teku.api.DataProvider; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.json.types.DeserializableTypeDefinition; import tech.pegasys.teku.infrastructure.json.types.SerializableTypeDefinition; @@ -67,10 +66,12 @@ private static EndpointMetadata createEndpointMetadata(final SchemaDefinitionCac .operationId("getBlobSidecars") .summary("Get blob sidecars") .description( - "Retrieves blob sidecars for a given block id.\n" - + " Depending on `Accept` header it can be returned either as json or as bytes serialized by SSZ.\n" - + " If the `indices` parameter is specified, only the blob sidecars with the specified indices will be returned. There are no guarantees\n" - + " for the returned blob sidecars in terms of ordering.") + """ + Retrieves blob sidecars for a given block id. + Depending on `Accept` header it can be returned either as json or as bytes serialized by SSZ. + If the `indices` parameter is specified, only the blob sidecars with the specified indices will be returned. There are no guarantees + for the returned blob sidecars in terms of ordering. + """) .tags(TAG_BEACON) .pathParam(PARAMETER_BLOCK_ID) .queryListParam(BLOB_INDICES_PARAMETER) @@ -98,7 +99,7 @@ public void handleRequest(final RestApiRequest request) throws JsonProcessingExc blobSidecarsAndMetaData -> { request.header( HEADER_CONSENSUS_VERSION, - Version.fromMilestone(blobSidecarsAndMetaData.getMilestone()).name()); + blobSidecarsAndMetaData.getMilestone().lowerCaseName()); return AsyncApiResponse.respondOk(blobSidecarsAndMetaData); }) .orElse(AsyncApiResponse.respondNotFound()))); diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetDataColumnSidecars.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetDataColumnSidecars.java index 2ccadd1bd6d..93b7a582ae1 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetDataColumnSidecars.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetDataColumnSidecars.java @@ -61,10 +61,11 @@ private static EndpointMetadata createEndpointMetadata(final SchemaDefinitionCac .operationId("getDataColumnSidecars") .summary("Get data column sidecars") .description( - "Retrieves data column sidecars for a given block id.\n" - + " Depending on `Accept` header it can be returned either as json or as bytes serialized by SSZ.\n" - + " If the `indices` parameter is specified, only the data column sidecars with the specified indices will be returned. There are no guarantees\n" - + " for the returned data column sidecars in terms of ordering.") + """ + Retrieves data column sidecars for a given block id. + Depending on `Accept` header it can be returned either as json or as bytes serialized by SSZ. + If the `indices` parameter is specified, only the data column sidecars with the specified indices will be returned. There are no guarantees + for the returned data column sidecars in terms of ordering.""") .tags(TAG_BEACON) .pathParam(PARAMETER_BLOCK_ID) .queryListParam(DATA_COLUMN_INDICES_PARAMETER) diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetFinalizedCheckpointState.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetFinalizedCheckpointState.java index 946f4f94f52..22d17aac60a 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetFinalizedCheckpointState.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetFinalizedCheckpointState.java @@ -23,7 +23,6 @@ import java.util.Optional; import tech.pegasys.teku.api.ChainDataProvider; import tech.pegasys.teku.api.DataProvider; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.restapi.endpoints.AsyncApiResponse; import tech.pegasys.teku.infrastructure.restapi.endpoints.EndpointMetadata; @@ -77,7 +76,7 @@ public void handleRequest(final RestApiRequest request) throws JsonProcessingExc stateAndMetaData -> { request.header( HEADER_CONSENSUS_VERSION, - Version.fromMilestone(stateAndMetaData.getMilestone()).name()); + stateAndMetaData.getMilestone().lowerCaseName()); return AsyncApiResponse.respondOk(stateAndMetaData.getData()); }) .orElseGet(AsyncApiResponse::respondNotFound))); diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStatePendingConsolidations.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStatePendingConsolidations.java index b4dbac7ec00..a299b6c995e 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStatePendingConsolidations.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStatePendingConsolidations.java @@ -30,7 +30,6 @@ import java.util.Optional; import tech.pegasys.teku.api.ChainDataProvider; import tech.pegasys.teku.api.DataProvider; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.json.types.SerializableTypeDefinition; import tech.pegasys.teku.infrastructure.restapi.endpoints.AsyncApiResponse; @@ -92,7 +91,7 @@ public void handleRequest(final RestApiRequest request) throws JsonProcessingExc objectAndMetadata -> { request.header( HEADER_CONSENSUS_VERSION, - Version.fromMilestone(objectAndMetadata.getMilestone()).name()); + objectAndMetadata.getMilestone().lowerCaseName()); return AsyncApiResponse.respondOk(objectAndMetadata); }) .orElseGet(AsyncApiResponse::respondNotFound))); diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStatePendingDeposits.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStatePendingDeposits.java index ab4159cdfb4..2491052f3e1 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStatePendingDeposits.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStatePendingDeposits.java @@ -30,7 +30,6 @@ import java.util.Optional; import tech.pegasys.teku.api.ChainDataProvider; import tech.pegasys.teku.api.DataProvider; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.json.types.SerializableTypeDefinition; import tech.pegasys.teku.infrastructure.restapi.endpoints.AsyncApiResponse; @@ -90,7 +89,7 @@ public void handleRequest(final RestApiRequest request) throws JsonProcessingExc objectAndMetadata -> { request.header( HEADER_CONSENSUS_VERSION, - Version.fromMilestone(objectAndMetadata.getMilestone()).name()); + objectAndMetadata.getMilestone().lowerCaseName()); return AsyncApiResponse.respondOk(objectAndMetadata); }) .orElseGet(AsyncApiResponse::respondNotFound))); diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStatePendingPartialWithdrawals.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStatePendingPartialWithdrawals.java index 911ab916601..a8708ae252e 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStatePendingPartialWithdrawals.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStatePendingPartialWithdrawals.java @@ -30,7 +30,6 @@ import java.util.Optional; import tech.pegasys.teku.api.ChainDataProvider; import tech.pegasys.teku.api.DataProvider; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.json.types.SerializableTypeDefinition; import tech.pegasys.teku.infrastructure.restapi.endpoints.AsyncApiResponse; @@ -92,7 +91,7 @@ public void handleRequest(final RestApiRequest request) throws JsonProcessingExc objectAndMetadata -> { request.header( HEADER_CONSENSUS_VERSION, - Version.fromMilestone(objectAndMetadata.getMilestone()).name()); + objectAndMetadata.getMilestone().lowerCaseName()); return AsyncApiResponse.respondOk(objectAndMetadata); }) .orElseGet(AsyncApiResponse::respondNotFound))); diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStateValidators.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStateValidators.java index 8804784ceca..cba2511af24 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStateValidators.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStateValidators.java @@ -27,7 +27,7 @@ import java.util.Set; import tech.pegasys.teku.api.ChainDataProvider; import tech.pegasys.teku.api.DataProvider; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.ethereum.json.types.beacon.StateValidatorData; import tech.pegasys.teku.ethereum.json.types.beacon.StatusParameter; import tech.pegasys.teku.infrastructure.async.SafeFuture; diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/PostStateValidators.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/PostStateValidators.java index a73fa027208..5d9e8fcc0d1 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/PostStateValidators.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/PostStateValidators.java @@ -29,7 +29,7 @@ import java.util.Set; import tech.pegasys.teku.api.ChainDataProvider; import tech.pegasys.teku.api.DataProvider; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.ethereum.json.types.beacon.StateValidatorData; import tech.pegasys.teku.ethereum.json.types.beacon.StateValidatorRequestBodyType; import tech.pegasys.teku.ethereum.json.types.beacon.StatusParameter; diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/PostSyncCommittees.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/PostSyncCommittees.java index 43e828f24e1..1caf209a21c 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/PostSyncCommittees.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/PostSyncCommittees.java @@ -52,10 +52,15 @@ public PostSyncCommittees(final ValidatorDataProvider provider) { .operationId("submitPoolSyncCommitteeSignatures") .summary("Submit sync committee signatures to node") .description( - "Submits sync committee message objects to the node.\n\n" - + "Sync committee messages are not present in phase0, but are required for Altair networks.\n\n" - + "If a sync committee message is validated successfully the node MUST publish that sync committee message on all applicable subnets.\n\n" - + "If one or more sync committee messages fail validation the node MUST return a 400 error with details of which sync committee messages have failed, and why.") + """ + Submits sync committee message objects to the node. + + Sync committee messages are not present in phase0, but are required for Altair networks. + + If a sync committee message is validated successfully the node MUST publish that sync committee message on all applicable subnets. + + If one or more sync committee messages fail validation the node MUST return a 400 error with details of which sync committee messages have failed, and why. + """) .tags(TAG_BEACON, TAG_VALIDATOR_REQUIRED) .requestBodyType( DeserializableTypeDefinition.listOf( diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/lightclient/GetLightClientBootstrap.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/lightclient/GetLightClientBootstrap.java index 8c1d178bdc4..94fd065b472 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/lightclient/GetLightClientBootstrap.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/lightclient/GetLightClientBootstrap.java @@ -26,7 +26,6 @@ import org.apache.tuweni.bytes.Bytes32; import tech.pegasys.teku.api.ChainDataProvider; import tech.pegasys.teku.api.DataProvider; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.json.types.SerializableTypeDefinition; import tech.pegasys.teku.infrastructure.restapi.endpoints.AsyncApiResponse; @@ -86,7 +85,7 @@ public void handleRequest(final RestApiRequest request) throws JsonProcessingExc bootstrapAndMetadata -> { request.header( HEADER_CONSENSUS_VERSION, - Version.fromMilestone(bootstrapAndMetadata.getMilestone()).name()); + bootstrapAndMetadata.getMilestone().lowerCaseName()); return AsyncApiResponse.respondOk(bootstrapAndMetadata); }) .orElseGet(AsyncApiResponse::respondNotFound))); diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/debug/GetState.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/debug/GetState.java index 84383019654..3d9a0dab9f0 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/debug/GetState.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/debug/GetState.java @@ -57,9 +57,13 @@ public GetState( .operationId("getState") .summary("Get state") .description( - "Returns full BeaconState object for given state_id.\n\n" - + "Use Accept header to select `application/octet-stream` if SSZ response type is required.\n\n" - + "__NOTE__: Only phase0 beacon state will be returned in JSON, use `/eth/v2/beacon/states/{state_id}` for altair.") + """ + Returns full BeaconState object for given state_id. + + Use Accept header to select `application/octet-stream` if SSZ response type is required. + + __NOTE__: Only phase0 beacon state will be returned in JSON, use `/eth/v2/beacon/states/{state_id}` for altair. + """) .tags(TAG_DEBUG) .pathParam(PARAMETER_STATE_ID) .response( diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriber.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriber.java index 119c475fe4d..ec60e88e141 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriber.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriber.java @@ -26,7 +26,7 @@ import java.util.concurrent.atomic.AtomicLong; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import tech.pegasys.teku.api.response.v1.EventType; +import tech.pegasys.teku.api.response.EventType; import tech.pegasys.teku.beaconrestapi.handlers.v1.events.EventSubscriptionManager.EventSource; import tech.pegasys.teku.infrastructure.async.AsyncRunner; import tech.pegasys.teku.infrastructure.time.TimeProvider; diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriptionManager.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriptionManager.java index 34e59a506ea..e898c703157 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriptionManager.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriptionManager.java @@ -30,7 +30,7 @@ import tech.pegasys.teku.api.ConfigProvider; import tech.pegasys.teku.api.NodeDataProvider; import tech.pegasys.teku.api.SyncDataProvider; -import tech.pegasys.teku.api.response.v1.EventType; +import tech.pegasys.teku.api.response.EventType; import tech.pegasys.teku.beacon.sync.events.SyncState; import tech.pegasys.teku.infrastructure.async.AsyncRunner; import tech.pegasys.teku.infrastructure.events.EventChannels; diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/QueuedEvent.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/QueuedEvent.java index db6c72662e9..fc0b8f89780 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/QueuedEvent.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/QueuedEvent.java @@ -15,7 +15,7 @@ import java.util.Objects; import org.apache.tuweni.bytes.Bytes; -import tech.pegasys.teku.api.response.v1.EventType; +import tech.pegasys.teku.api.response.EventType; public class QueuedEvent { private final EventType eventType; diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/node/GetIdentity.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/node/GetIdentity.java index 5945c6dc32a..d36c23cb73d 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/node/GetIdentity.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/node/GetIdentity.java @@ -141,7 +141,8 @@ private static SerializableTypeDefinition createMetadataType( MetadataMessage::getOptionalSyncnets) .withOptionalField( "custody_group_count", - UINT64_TYPE.withDescription("PeerDAS custody group count."), + UINT64_TYPE.withDescription( + "Uint64 representing the node's custody group count. The metadata is present from the Fulu fork."), MetadataMessage::getOptionalCustodyGroupCount) .build(); } diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/node/GetPeers.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/node/GetPeers.java index 98bc8f9ad7f..8d8282a03dd 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/node/GetPeers.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/node/GetPeers.java @@ -27,8 +27,8 @@ import tech.pegasys.teku.api.DataProvider; import tech.pegasys.teku.api.NetworkDataProvider; import tech.pegasys.teku.api.peer.Eth2PeerWithEnr; -import tech.pegasys.teku.api.response.v1.node.Direction; -import tech.pegasys.teku.api.response.v1.node.State; +import tech.pegasys.teku.api.provider.Direction; +import tech.pegasys.teku.api.provider.State; import tech.pegasys.teku.infrastructure.json.types.DeserializableTypeDefinition; import tech.pegasys.teku.infrastructure.json.types.SerializableTypeDefinition; import tech.pegasys.teku.infrastructure.restapi.endpoints.EndpointMetadata; diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/validator/PostPrepareBeaconProposer.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/validator/PostPrepareBeaconProposer.java index f8e610375e3..6c1e4b9ce7a 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/validator/PostPrepareBeaconProposer.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/validator/PostPrepareBeaconProposer.java @@ -68,9 +68,13 @@ private static EndpointMetadata createMetadata() { .operationId("prepareBeaconProposer") .summary("Provide beacon node with proposals for the given validators.") .description( - "Prepares the beacon node for potential proposers by supplying information required when proposing blocks for the given validators. The information supplied for each validator index is considered persistent until overwritten by new information for the given validator index, or until the beacon node restarts.\n\n" - + "Note that because the information is not persistent across beacon node restarts it is recommended that either the beacon node is monitored for restarts or this information is refreshed by resending this request periodically (for example, each epoch).\n\n" - + "Also note that requests containing currently inactive or unknown validator indices will be accepted, as they may become active at a later epoch.") + """ + Prepares the beacon node for potential proposers by supplying information required when proposing blocks for the given validators. The information supplied for each validator index is considered persistent until overwritten by new information for the given validator index, or until the beacon node restarts. + + Note that because the information is not persistent across beacon node restarts it is recommended that either the beacon node is monitored for restarts or this information is refreshed by resending this request periodically (for example, each epoch). + + Also note that requests containing currently inactive or unknown validator indices will be accepted, as they may become active at a later epoch. + """) .tags(TAG_VALIDATOR, TAG_VALIDATOR_REQUIRED) .requestBodyType(DeserializableTypeDefinition.listOf(BeaconPreparableProposer.SSZ_DATA)) .response(SC_OK, "Preparation information has been received.") diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/validator/PostSubscribeToBeaconCommitteeSubnet.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/validator/PostSubscribeToBeaconCommitteeSubnet.java index 21e110e49dd..847a45f8dd9 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/validator/PostSubscribeToBeaconCommitteeSubnet.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/validator/PostSubscribeToBeaconCommitteeSubnet.java @@ -44,9 +44,11 @@ public PostSubscribeToBeaconCommitteeSubnet(final ValidatorDataProvider provider .operationId("prepareBeaconCommitteeSubnet") .summary("Signal beacon node to prepare for a committee subnet") .description( - "After Beacon node receives this request, search using discv5 for peers related to this subnet and replace current peers with those ones if necessary If validator is_aggregator, beacon node must:\n" - + "- announce subnet topic subscription on gossipsub\n" - + "- aggregate attestations received on that subnet\n") + """ + After Beacon node receives this request, search using discv5 for peers related to this subnet and replace current peers with those ones if necessary If validator is_aggregator, beacon node must: + - announce subnet topic subscription on gossipsub + - aggregate attestations received on that subnet + """) .tags(TAG_VALIDATOR, TAG_VALIDATOR_REQUIRED) .requestBodyType( DeserializableTypeDefinition.listOf(CommitteeSubscriptionData.SSZ_DATA)) diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/validator/PostSyncCommitteeSubscriptions.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/validator/PostSyncCommitteeSubscriptions.java index 91f1b9535fc..74b6132b9f0 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/validator/PostSyncCommitteeSubscriptions.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/validator/PostSyncCommitteeSubscriptions.java @@ -44,9 +44,13 @@ public PostSyncCommitteeSubscriptions(final ValidatorDataProvider validatorDataP .operationId("prepareSyncCommitteeSubnets") .summary("Subscribe to sync committee subnets") .description( - "Subscribe to a number of sync committee subnets\n\n" - + "Sync committees are not present in phase0, but are required for Altair networks.\n\n" - + "Subscribing to sync committee subnets is an action performed by VC to enable network participation in Altair networks, and only required if the VC has an active validator in an active sync committee.") + """ + Subscribe to a number of sync committee subnets + + Sync committees are not present in phase0, but are required for Altair networks. + + Subscribing to sync committee subnets is an action performed by VC to enable network participation in Altair networks, and only required if the VC has an active validator in an active sync committee. + """) .tags(TAG_VALIDATOR, TAG_VALIDATOR_REQUIRED) .requestBodyType(DeserializableTypeDefinition.listOf(SYNC_COMMITTEE_SUBSCRIPTION)) .response(SC_OK, "Successful response") diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetAttestationsV2.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetAttestationsV2.java index cf48d532c32..16edeb75433 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetAttestationsV2.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetAttestationsV2.java @@ -32,7 +32,6 @@ import java.util.Optional; import tech.pegasys.teku.api.DataProvider; import tech.pegasys.teku.api.NodeDataProvider; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.handlers.v1.beacon.MilestoneDependentTypesUtil; import tech.pegasys.teku.infrastructure.json.types.SerializableTypeDefinition; import tech.pegasys.teku.infrastructure.restapi.endpoints.EndpointMetadata; @@ -88,8 +87,7 @@ public void handleRequest(final RestApiRequest request) throws JsonProcessingExc nodeDataProvider.getAttestationsAndMetaData(slot, committeeIndex); request.header( - HEADER_CONSENSUS_VERSION, - Version.fromMilestone(attestationsAndMetaData.getMilestone()).name()); + HEADER_CONSENSUS_VERSION, attestationsAndMetaData.getMilestone().lowerCaseName()); request.respondOk(attestationsAndMetaData); } diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetBlock.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetBlock.java index b4fdd948f0d..7bcb12e8535 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetBlock.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetBlock.java @@ -28,7 +28,6 @@ import java.util.Optional; import tech.pegasys.teku.api.ChainDataProvider; import tech.pegasys.teku.api.DataProvider; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.json.types.SerializableTypeDefinition; import tech.pegasys.teku.infrastructure.restapi.endpoints.AsyncApiResponse; @@ -83,7 +82,7 @@ public void handleRequest(final RestApiRequest request) throws JsonProcessingExc blockAndMetaData -> { request.header( HEADER_CONSENSUS_VERSION, - Version.fromMilestone(blockAndMetaData.getMilestone()).name()); + blockAndMetaData.getMilestone().lowerCaseName()); return AsyncApiResponse.respondOk(blockAndMetaData); }) .orElseGet(AsyncApiResponse::respondNotFound))); diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetBlockAttestationsV2.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetBlockAttestationsV2.java index 3f340a55254..17854c98ee8 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetBlockAttestationsV2.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetBlockAttestationsV2.java @@ -30,7 +30,6 @@ import java.util.function.Predicate; import tech.pegasys.teku.api.ChainDataProvider; import tech.pegasys.teku.api.DataProvider; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.BeaconRestApiTypes; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.json.types.SerializableOneOfTypeDefinition; @@ -88,7 +87,7 @@ public void handleRequest(final RestApiRequest request) throws JsonProcessingExc attestationsAndMetadata -> { request.header( HEADER_CONSENSUS_VERSION, - Version.fromMilestone(attestationsAndMetadata.getMilestone()).name()); + attestationsAndMetadata.getMilestone().lowerCaseName()); return AsyncApiResponse.respondOk(attestationsAndMetadata); }) .orElseGet(AsyncApiResponse::respondNotFound))); diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/PostAttestationsV2.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/PostAttestationsV2.java index 2f8b817ba04..7868630003e 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/PostAttestationsV2.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/PostAttestationsV2.java @@ -116,9 +116,11 @@ private static EndpointMetadata createMetadata( .operationId("submitPoolAttestationsV2") .summary("Submit Attestation objects to node") .description( - "Submits Attestation objects to the node. Each attestation in the request body is processed individually.\n" - + "If an attestation is validated successfully, the node MUST publish that attestation on the appropriate subnet.\n" - + "If one or more attestations fail validation, the node MUST return a 400 error with details of which attestations have failed, and why.") + """ + Submits Attestation objects to the node. Each attestation in the request body is processed individually. + If an attestation is validated successfully, the node MUST publish that attestation on the appropriate subnet. + If one or more attestations fail validation, the node MUST return a 400 error with details of which attestations have failed, and why. + """) .tags(TAG_BEACON, TAG_VALIDATOR_REQUIRED, TAG_EXPERIMENTAL) .requestBodyType( SerializableTypeDefinition.listOf(attestationSchemaDefinition), attestationBodySelector) diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/debug/GetState.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/debug/GetState.java index 1e51b67ac18..7b124c2d840 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/debug/GetState.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/debug/GetState.java @@ -29,7 +29,6 @@ import java.util.Optional; import tech.pegasys.teku.api.ChainDataProvider; import tech.pegasys.teku.api.DataProvider; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.json.types.SerializableTypeDefinition; import tech.pegasys.teku.infrastructure.restapi.endpoints.AsyncApiResponse; @@ -87,7 +86,7 @@ public void handleRequest(final RestApiRequest request) throws JsonProcessingExc stateAndMetaData -> { request.header( HEADER_CONSENSUS_VERSION, - Version.fromMilestone(stateAndMetaData.getMilestone()).name()); + stateAndMetaData.getMilestone().lowerCaseName()); return AsyncApiResponse.respondOk(stateAndMetaData); }) .orElseGet(AsyncApiResponse::respondNotFound))); diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/validator/GetAggregateAttestationV2.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/validator/GetAggregateAttestationV2.java index 2e9d7111100..0a7cd3bc587 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/validator/GetAggregateAttestationV2.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v2/validator/GetAggregateAttestationV2.java @@ -28,7 +28,6 @@ import org.apache.tuweni.bytes.Bytes32; import tech.pegasys.teku.api.DataProvider; import tech.pegasys.teku.api.ValidatorDataProvider; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.BeaconRestApiTypes; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.http.HttpStatusCodes; @@ -61,12 +60,14 @@ public GetAggregateAttestationV2( .operationId("getAggregatedAttestationV2") .summary("Get aggregated attestation") .description( - "Aggregates all attestations matching given attestation data root, slot and committee index.\n" - + "A 503 error must be returned if the block identified by the response\n" - + "`beacon_block_root` is optimistic (i.e. the aggregated attestation attests\n" - + "to a block that has not been fully verified by an execution engine).\n" - + "A 404 error must be returned if no attestation is available for the requested\n" - + "`attestation_data_root`.") + """ + Aggregates all attestations matching given attestation data root, slot and committee index. + A 503 error must be returned if the block identified by the response + `beacon_block_root` is optimistic (i.e. the aggregated attestation attests + to a block that has not been fully verified by an execution engine). + A 404 error must be returned if no attestation is available for the requested + `attestation_data_root`. + """) .tags(TAG_VALIDATOR, TAG_VALIDATOR_REQUIRED) .queryParamRequired(ATTESTATION_DATA_ROOT_PARAMETER) .queryParamRequired(SLOT_PARAMETER) @@ -99,7 +100,7 @@ public void handleRequest(final RestApiRequest request) throws JsonProcessingExc attestationAndMetaData -> { request.header( HEADER_CONSENSUS_VERSION, - Version.fromMilestone(attestationAndMetaData.getMilestone()).name()); + attestationAndMetaData.getMilestone().lowerCaseName()); return AsyncApiResponse.respondOk(attestationAndMetaData); }) .orElseGet(AsyncApiResponse::respondNotFound))); diff --git a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v3/validator/GetNewBlockV3.java b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v3/validator/GetNewBlockV3.java index 84c61cf56a7..4e6b8325b8c 100644 --- a/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v3/validator/GetNewBlockV3.java +++ b/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v3/validator/GetNewBlockV3.java @@ -47,7 +47,6 @@ import org.apache.tuweni.bytes.Bytes32; import tech.pegasys.teku.api.DataProvider; import tech.pegasys.teku.api.ValidatorDataProvider; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.handlers.v1.beacon.MilestoneDependentTypesUtil; import tech.pegasys.teku.bls.BLSSignature; import tech.pegasys.teku.infrastructure.async.SafeFuture; @@ -87,14 +86,16 @@ private static EndpointMetadata getEndpointMetaData( .operationId("produceBlockV3") .summary("Produce a new block, without signature.") .description( - "Requests a beacon node to produce a valid block, which can then be signed by a validator. The\n" - + "returned block may be blinded or unblinded, depending on the current state of the network as\n" - + "decided by the execution and beacon nodes.\n" - + "The beacon node must return an unblinded block if it obtains the execution payload from its\n" - + "paired execution node. It must only return a blinded block if it obtains the execution payload\n" - + "header from an MEV relay.\n" - + "Metadata in the response indicates the type of block produced, and the supported types of block\n" - + "will be added to as forks progress.") + """ + Requests a beacon node to produce a valid block, which can then be signed by a validator. The + returned block may be blinded or unblinded, depending on the current state of the network as + decided by the execution and beacon nodes. + The beacon node must return an unblinded block if it obtains the execution payload from its + paired execution node. It must only return a blinded block if it obtains the execution payload + header from an MEV relay. + Metadata in the response indicates the type of block produced, and the supported types of block + will be added to as forks progress. + """) .tags(TAG_VALIDATOR, TAG_VALIDATOR_REQUIRED) .pathParam(SLOT_PARAMETER.withDescription(SLOT_PATH_DESCRIPTION)) .queryParamRequired(RANDAO_PARAMETER) @@ -129,8 +130,7 @@ public void handleRequest(final RestApiRequest request) throws JsonProcessingExc blockContainerAndMetaData -> { request.header( HEADER_CONSENSUS_VERSION, - Version.fromMilestone(blockContainerAndMetaData.specMilestone()) - .name()); + blockContainerAndMetaData.specMilestone().lowerCaseName()); request.header( HEADER_EXECUTION_PAYLOAD_BLINDED, Boolean.toString( diff --git a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/SingleQueryParameterUtilsTest.java b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/SingleQueryParameterUtilsTest.java deleted file mode 100644 index b81dd9632fa..00000000000 --- a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/SingleQueryParameterUtilsTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.beaconrestapi; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static tech.pegasys.teku.beaconrestapi.SingleQueryParameterUtils.getParameterValueAsBLSSignature; - -import java.util.List; -import java.util.Map; -import java.util.Optional; -import org.apache.tuweni.bytes.Bytes; -import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class SingleQueryParameterUtilsTest { - - public static final String KEY = "any"; - public static final String VALUE = "1"; - public static final Map> INVALID_DATA = Map.of(KEY, List.of("1.5")); - - @Test - public void getParameterAsBLSSignature_shouldThrowIfCannotParse() { - assertThrows( - IllegalArgumentException.class, () -> getParameterValueAsBLSSignature(INVALID_DATA, KEY)); - } - - @Test - public void getParameterAsBLSSignature_shouldParseBytes96Data() { - BLSSignature signature = new BLSSignature(Bytes.random(96)); - Map> data = Map.of(KEY, List.of(signature.toHexString())); - BLSSignature result = getParameterValueAsBLSSignature(data, KEY); - assertEquals(signature, result); - } - - @Test - public void getParameterAsUInt64IfPresent_shouldReturnEmptyIfNotPresent() { - assertThat(SingleQueryParameterUtils.getParameterValueAsUInt64IfPresent(Map.of(), "t")) - .isEmpty(); - } - - @Test - public void getParameterAsUInt64IfPresent_shouldReturnData() { - final UInt64 value = UInt64.valueOf("123456"); - assertThat( - SingleQueryParameterUtils.getParameterValueAsUInt64IfPresent( - Map.of("t", List.of(value.toString())), "t")) - .isEqualTo(Optional.of(value)); - } -} diff --git a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetBlobSidecarsTest.java b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetBlobSidecarsTest.java index 6ccb5930f47..461f690a015 100644 --- a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetBlobSidecarsTest.java +++ b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetBlobSidecarsTest.java @@ -34,7 +34,6 @@ import java.util.concurrent.ExecutionException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.AbstractMigratedBeaconHandlerWithChainDataProviderTest; import tech.pegasys.teku.infrastructure.json.JsonTestUtil; import tech.pegasys.teku.spec.SpecMilestone; @@ -71,7 +70,7 @@ void shouldReturnBlobSidecars() assertThat(((BlobSidecarsAndMetaData) request.getResponseBody()).getData()) .isEqualTo(blobSidecars); assertThat(request.getResponseHeaders(ETH_CONSENSUS_VERSION_TYPE.getName())) - .isEqualTo(Version.fromMilestone(SpecMilestone.DENEB).name()); + .isEqualTo(SpecMilestone.DENEB.lowerCaseName()); } @Test diff --git a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStateValidatorTest.java b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStateValidatorTest.java index 4df36217d12..2ed358f6de7 100644 --- a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStateValidatorTest.java +++ b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStateValidatorTest.java @@ -33,7 +33,7 @@ import org.assertj.core.api.AssertionsForClassTypes; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.beaconrestapi.AbstractMigratedBeaconHandlerWithChainDataProviderTest; import tech.pegasys.teku.ethereum.json.types.beacon.StateValidatorData; import tech.pegasys.teku.infrastructure.http.HttpErrorResponse; diff --git a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStateValidatorsTest.java b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStateValidatorsTest.java index 0daa13ee037..d575699643d 100644 --- a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStateValidatorsTest.java +++ b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/GetStateValidatorsTest.java @@ -17,15 +17,15 @@ import static java.util.Collections.emptySet; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.active_exiting; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.active_ongoing; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.active_slashed; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.exited_slashed; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.exited_unslashed; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.pending_initialized; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.pending_queued; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.withdrawal_done; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.withdrawal_possible; +import static tech.pegasys.teku.api.response.ValidatorStatus.active_exiting; +import static tech.pegasys.teku.api.response.ValidatorStatus.active_ongoing; +import static tech.pegasys.teku.api.response.ValidatorStatus.active_slashed; +import static tech.pegasys.teku.api.response.ValidatorStatus.exited_slashed; +import static tech.pegasys.teku.api.response.ValidatorStatus.exited_unslashed; +import static tech.pegasys.teku.api.response.ValidatorStatus.pending_initialized; +import static tech.pegasys.teku.api.response.ValidatorStatus.pending_queued; +import static tech.pegasys.teku.api.response.ValidatorStatus.withdrawal_done; +import static tech.pegasys.teku.api.response.ValidatorStatus.withdrawal_possible; import static tech.pegasys.teku.infrastructure.http.HttpStatusCodes.SC_BAD_REQUEST; import static tech.pegasys.teku.infrastructure.http.HttpStatusCodes.SC_INTERNAL_SERVER_ERROR; import static tech.pegasys.teku.infrastructure.http.HttpStatusCodes.SC_NOT_FOUND; @@ -50,7 +50,7 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import tech.pegasys.teku.api.exceptions.BadRequestException; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.beaconrestapi.AbstractMigratedBeaconHandlerWithChainDataProviderTest; import tech.pegasys.teku.ethereum.json.types.beacon.StateValidatorData; import tech.pegasys.teku.ethereum.json.types.beacon.StatusParameter; diff --git a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/PostStateValidatorsTest.java b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/PostStateValidatorsTest.java index 6fb44313c12..9ef7ad92619 100644 --- a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/PostStateValidatorsTest.java +++ b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/beacon/PostStateValidatorsTest.java @@ -17,15 +17,15 @@ import static java.util.Collections.emptySet; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.active_exiting; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.active_ongoing; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.active_slashed; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.exited_slashed; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.exited_unslashed; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.pending_initialized; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.pending_queued; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.withdrawal_done; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus.withdrawal_possible; +import static tech.pegasys.teku.api.response.ValidatorStatus.active_exiting; +import static tech.pegasys.teku.api.response.ValidatorStatus.active_ongoing; +import static tech.pegasys.teku.api.response.ValidatorStatus.active_slashed; +import static tech.pegasys.teku.api.response.ValidatorStatus.exited_slashed; +import static tech.pegasys.teku.api.response.ValidatorStatus.exited_unslashed; +import static tech.pegasys.teku.api.response.ValidatorStatus.pending_initialized; +import static tech.pegasys.teku.api.response.ValidatorStatus.pending_queued; +import static tech.pegasys.teku.api.response.ValidatorStatus.withdrawal_done; +import static tech.pegasys.teku.api.response.ValidatorStatus.withdrawal_possible; import static tech.pegasys.teku.infrastructure.http.HttpStatusCodes.SC_BAD_REQUEST; import static tech.pegasys.teku.infrastructure.http.HttpStatusCodes.SC_INTERNAL_SERVER_ERROR; import static tech.pegasys.teku.infrastructure.http.HttpStatusCodes.SC_NOT_FOUND; @@ -51,7 +51,7 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import tech.pegasys.teku.api.exceptions.BadRequestException; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.beaconrestapi.AbstractMigratedBeaconHandlerWithChainDataProviderTest; import tech.pegasys.teku.ethereum.json.types.beacon.StateValidatorData; import tech.pegasys.teku.ethereum.json.types.beacon.StateValidatorRequestBodyType; diff --git a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/config/GetSpecTest.java b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/config/GetSpecTest.java index bfca1c6dcca..b3a566d0804 100644 --- a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/config/GetSpecTest.java +++ b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/config/GetSpecTest.java @@ -64,7 +64,7 @@ void shouldGetCorrectMainnetConfig() throws Exception { setHandler(new GetSpec(configProvider)); handler.handleRequest(request); - final Map result = (Map) request.getResponseBody(); + final Map result = (Map) request.getResponseBody(); final Map expected = parseStringMap( Resources.toString( diff --git a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriberTest.java b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriberTest.java index 43d112b2ea7..16aea24d1e6 100644 --- a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriberTest.java +++ b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriberTest.java @@ -36,7 +36,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; -import tech.pegasys.teku.api.response.v1.EventType; +import tech.pegasys.teku.api.response.EventType; import tech.pegasys.teku.beaconrestapi.handlers.v1.events.EventSubscriptionManager.EventSource; import tech.pegasys.teku.infrastructure.async.StubAsyncRunner; import tech.pegasys.teku.infrastructure.time.StubTimeProvider; diff --git a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriptionManagerTest.java b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriptionManagerTest.java index 8d41dfab7c6..4ba60978b88 100644 --- a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriptionManagerTest.java +++ b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriptionManagerTest.java @@ -33,7 +33,6 @@ import tech.pegasys.teku.api.ConfigProvider; import tech.pegasys.teku.api.NodeDataProvider; import tech.pegasys.teku.api.SyncDataProvider; -import tech.pegasys.teku.api.schema.SignedBeaconBlock; import tech.pegasys.teku.beacon.sync.events.SyncState; import tech.pegasys.teku.beaconrestapi.handlers.v1.events.PayloadAttributesEvent.Data; import tech.pegasys.teku.beaconrestapi.handlers.v1.events.PayloadAttributesEvent.PayloadAttributes; @@ -50,6 +49,7 @@ import tech.pegasys.teku.spec.config.SpecConfig; import tech.pegasys.teku.spec.datastructures.attestation.ValidatableAttestation; import tech.pegasys.teku.spec.datastructures.blobs.versions.deneb.BlobSidecar; +import tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock; import tech.pegasys.teku.spec.datastructures.operations.Attestation; import tech.pegasys.teku.spec.datastructures.operations.AttesterSlashing; import tech.pegasys.teku.spec.datastructures.operations.ProposerSlashing; @@ -104,8 +104,7 @@ public class EventSubscriptionManagerTest { new FinalizedCheckpointEvent(data.randomBytes32(), data.randomBytes32(), epoch, false); private final SyncState sampleSyncState = SyncState.IN_SYNC; - private final SignedBeaconBlock sampleBlock = - SignedBeaconBlock.create(data.randomSignedBeaconBlock(0)); + private final SignedBeaconBlock sampleBlock = data.randomSignedBeaconBlock(0); private final BlobSidecar sampleBlobSidecar = data.randomBlobSidecar(); private final Attestation sampleAttestation = data.randomAttestation(0); private final SingleAttestation singleAttestation = data.randomSingleAttestation(); @@ -257,7 +256,7 @@ void shouldPropagateBlock() throws IOException { manager.registerClient(client1); triggerBlockEvent(); - checkEvent("block", new BlockEvent(sampleBlock.asInternalSignedBeaconBlock(spec), false)); + checkEvent("block", new BlockEvent(sampleBlock, false)); } @Test @@ -266,7 +265,7 @@ void shouldPropagateBlockGossip() throws IOException { manager.registerClient(client1); triggerBlockGossipEvent(); - checkEvent("block_gossip", new BlockGossipEvent(sampleBlock.asInternalSignedBeaconBlock(spec))); + checkEvent("block_gossip", new BlockGossipEvent(sampleBlock)); } @Test @@ -465,12 +464,12 @@ private void triggerProposerSlashingEvent() { } private void triggerBlockEvent() { - manager.onNewBlock(sampleBlock.asInternalSignedBeaconBlock(spec), false); + manager.onNewBlock(sampleBlock, false); asyncRunner.executeQueuedActions(); } private void triggerBlockGossipEvent() { - manager.onNewBlockGossip(sampleBlock.asInternalSignedBeaconBlock(spec)); + manager.onNewBlockGossip(sampleBlock); asyncRunner.executeQueuedActions(); } diff --git a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetAttestationsV2Test.java b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetAttestationsV2Test.java index e2e851217bb..96c577a7bbb 100644 --- a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetAttestationsV2Test.java +++ b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetAttestationsV2Test.java @@ -34,7 +34,6 @@ import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.TestTemplate; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.AbstractMigratedBeaconHandlerTest; import tech.pegasys.teku.infrastructure.json.JsonTestUtil; import tech.pegasys.teku.spec.SpecMilestone; @@ -72,7 +71,7 @@ public void shouldReturnAttestationsWhenFound() throws JsonProcessingException { assertThat(request.getResponseCode()).isEqualTo(SC_OK); assertThat(request.getResponseBody()).isEqualTo(attestationsAndMetaData); assertThat(request.getResponseHeaders(HEADER_CONSENSUS_VERSION)) - .isEqualTo(Version.fromMilestone(specMilestone).name()); + .isEqualTo(specMilestone.lowerCaseName()); } @TestTemplate @@ -87,7 +86,7 @@ public void shouldReturnEmptyListWhenNoAttestations() throws JsonProcessingExcep assertThat(request.getResponseCode()).isEqualTo(SC_OK); assertThat(request.getResponseBody()).isEqualTo(attestationsAndMetaData); assertThat(request.getResponseHeaders(HEADER_CONSENSUS_VERSION)) - .isEqualTo(Version.fromMilestone(specMilestone).name()); + .isEqualTo(specMilestone.lowerCaseName()); } @TestTemplate diff --git a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetBlockAttestationsV2Test.java b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetBlockAttestationsV2Test.java index 2ae84ded641..898ef9e6f1b 100644 --- a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetBlockAttestationsV2Test.java +++ b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v2/beacon/GetBlockAttestationsV2Test.java @@ -33,7 +33,6 @@ import java.util.Optional; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.AbstractMigratedBeaconHandlerTest; import tech.pegasys.teku.ethereum.json.types.SharedApiTypes; import tech.pegasys.teku.infrastructure.async.SafeFuture; @@ -95,7 +94,7 @@ public void shouldReturnBlockAttestationsInformationForPhase0() throws JsonProce assertThat(phase0responseData.getData().size()).isGreaterThan(0); assertThat(request.getResponseBody()).isEqualTo(optionalData.get()); assertThat(request.getResponseHeaders(HEADER_CONSENSUS_VERSION)) - .isEqualTo(Version.fromMilestone(phase0responseData.getMilestone()).name()); + .isEqualTo(phase0responseData.getMilestone().lowerCaseName()); } @Test @@ -111,7 +110,7 @@ public void shouldReturnBlockAttestationsInformationForElectra() throws JsonProc assertThat(electraResponseData.getData().size()).isGreaterThan(0); assertThat(request.getResponseBody()).isEqualTo(optionalData.get()); assertThat(request.getResponseHeaders(HEADER_CONSENSUS_VERSION)) - .isEqualTo(Version.fromMilestone(electraResponseData.getMilestone()).name()); + .isEqualTo(electraResponseData.getMilestone().lowerCaseName()); } @Test diff --git a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v2/validator/GetAggregateAttestationV2Test.java b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v2/validator/GetAggregateAttestationV2Test.java index eba88c8a8a5..8018966ea9f 100644 --- a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v2/validator/GetAggregateAttestationV2Test.java +++ b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v2/validator/GetAggregateAttestationV2Test.java @@ -31,7 +31,6 @@ import org.apache.tuweni.bytes.Bytes32; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.AbstractMigratedBeaconHandlerTest; import tech.pegasys.teku.ethereum.json.types.SharedApiTypes; import tech.pegasys.teku.infrastructure.async.SafeFuture; @@ -94,7 +93,7 @@ public void shouldReturnAggregateAttestationForPhase0() throws JsonProcessingExc assertThat(phase0responseData.getData().size()).isGreaterThan(0); assertThat(request.getResponseBody()).isEqualTo(optionalData.get()); assertThat(request.getResponseHeaders(HEADER_CONSENSUS_VERSION)) - .isEqualTo(Version.fromMilestone(phase0responseData.getMilestone()).name()); + .isEqualTo(phase0responseData.getMilestone().lowerCaseName()); } @Test @@ -109,7 +108,7 @@ public void shouldReturnAggregateAttestationForElectra() throws JsonProcessingEx assertThat(electraResponseData.getData().size()).isGreaterThan(0); assertThat(request.getResponseBody()).isEqualTo(optionalData.get()); assertThat(request.getResponseHeaders(HEADER_CONSENSUS_VERSION)) - .isEqualTo(Version.fromMilestone(electraResponseData.getMilestone()).name()); + .isEqualTo(electraResponseData.getMilestone().lowerCaseName()); } @Test diff --git a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v3/validator/GetNewBlockV3Test.java b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v3/validator/GetNewBlockV3Test.java index 8df712d26f8..be3cd2b0bd8 100644 --- a/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v3/validator/GetNewBlockV3Test.java +++ b/data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v3/validator/GetNewBlockV3Test.java @@ -36,7 +36,6 @@ import java.util.Optional; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.TestTemplate; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.beaconrestapi.AbstractMigratedBeaconHandlerTest; import tech.pegasys.teku.bls.BLSSignature; import tech.pegasys.teku.bls.BLSTestUtil; @@ -82,7 +81,7 @@ void shouldHandleBlindedBeaconBlocks() throws Exception { assertThat(request.getResponseCode()).isEqualTo(HttpStatusCodes.SC_OK); assertThat(request.getResponseBody()).isEqualTo(blockContainerAndMetaData); assertThat(request.getResponseHeaders(HEADER_CONSENSUS_VERSION)) - .isEqualTo(Version.fromMilestone(blockContainerAndMetaData.specMilestone()).name()); + .isEqualTo(blockContainerAndMetaData.specMilestone().lowerCaseName()); assertThat(request.getResponseHeaders(HEADER_EXECUTION_PAYLOAD_BLINDED)) .isEqualTo(Boolean.toString(true)); assertThat(request.getResponseHeaders(HEADER_EXECUTION_PAYLOAD_VALUE)) @@ -105,7 +104,7 @@ void shouldHandleUnBlindedBeaconBlocks() throws Exception { assertThat(request.getResponseCode()).isEqualTo(HttpStatusCodes.SC_OK); assertThat(request.getResponseBody()).isEqualTo(blockContainerAndMetaData); assertThat(request.getResponseHeaders(HEADER_CONSENSUS_VERSION)) - .isEqualTo(Version.fromMilestone(blockContainerAndMetaData.specMilestone()).name()); + .isEqualTo(blockContainerAndMetaData.specMilestone().lowerCaseName()); assertThat(request.getResponseHeaders(HEADER_EXECUTION_PAYLOAD_BLINDED)) .isEqualTo(Boolean.toString(false)); assertThat(request.getResponseHeaders(HEADER_EXECUTION_PAYLOAD_VALUE)) @@ -129,7 +128,7 @@ void shouldHandleUnBlindedBlockContentsPostDeneb() throws Exception { assertThat(request.getResponseCode()).isEqualTo(HttpStatusCodes.SC_OK); assertThat(request.getResponseBody()).isEqualTo(blockContainerAndMetaData); assertThat(request.getResponseHeaders(HEADER_CONSENSUS_VERSION)) - .isEqualTo(Version.fromMilestone(blockContainerAndMetaData.specMilestone()).name()); + .isEqualTo(blockContainerAndMetaData.specMilestone().lowerCaseName()); assertThat(request.getResponseHeaders(HEADER_EXECUTION_PAYLOAD_BLINDED)).isEqualTo("false"); assertThat(request.getResponseHeaders(HEADER_EXECUTION_PAYLOAD_VALUE)) .isEqualTo(blockContainerAndMetaData.executionPayloadValue().toDecimalString()); diff --git a/data/beaconrestapi/src/test/resources/tech/pegasys/teku/beaconrestapi/handlers/v1/config/mainnetConfig.json b/data/beaconrestapi/src/test/resources/tech/pegasys/teku/beaconrestapi/handlers/v1/config/mainnetConfig.json index 24f5a076229..c64fb39aebe 100644 --- a/data/beaconrestapi/src/test/resources/tech/pegasys/teku/beaconrestapi/handlers/v1/config/mainnetConfig.json +++ b/data/beaconrestapi/src/test/resources/tech/pegasys/teku/beaconrestapi/handlers/v1/config/mainnetConfig.json @@ -144,5 +144,20 @@ "DOMAIN_AGGREGATE_AND_PROOF" : "0x06000000", "CHURN_LIMIT_QUOTIENT" : "65536", "BLS_WITHDRAWAL_PREFIX" : "0x00", -"MIN_ACTIVATION_BALANCE" : "32000000000" +"MIN_ACTIVATION_BALANCE" : "32000000000", +"FIELD_ELEMENTS_PER_EXT_BLOB":"8192", +"FIELD_ELEMENTS_PER_CELL":"64", +"KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH":"4", +"MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS":"4096", +"MAX_BLOBS_PER_BLOCK_FULU":"12", +"FULU_FORK_EPOCH":"18446744073709551615", +"FULU_FORK_VERSION":"0x06000000", +"NUMBER_OF_COLUMNS":"128", +"NUMBER_OF_CUSTODY_GROUPS":"128", +"DATA_COLUMN_SIDECAR_SUBNET_COUNT":"128", +"MAX_REQUEST_DATA_COLUMN_SIDECARS":"16384", +"SAMPLES_PER_SLOT":"8", +"CUSTODY_REQUIREMENT":"4", +"VALIDATOR_CUSTODY_REQUIREMENT":"8", +"BALANCE_PER_ADDITIONAL_CUSTODY_GROUP":"32000000000" } \ No newline at end of file diff --git a/data/dataexchange/src/main/java/tech/pegasys/teku/data/SlashingProtectionExporter.java b/data/dataexchange/src/main/java/tech/pegasys/teku/data/SlashingProtectionExporter.java index d55a8d4c7a4..ee71f7af50f 100644 --- a/data/dataexchange/src/main/java/tech/pegasys/teku/data/SlashingProtectionExporter.java +++ b/data/dataexchange/src/main/java/tech/pegasys/teku/data/SlashingProtectionExporter.java @@ -31,7 +31,7 @@ import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.bytes.Bytes32; import org.apache.tuweni.bytes.Bytes48; -import tech.pegasys.teku.api.schema.PublicKeyException; +import tech.pegasys.teku.api.exceptions.PublicKeyException; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.data.slashinginterchange.Metadata; import tech.pegasys.teku.data.slashinginterchange.SigningHistory; diff --git a/data/dataexchange/src/main/java/tech/pegasys/teku/data/SlashingProtectionRepairer.java b/data/dataexchange/src/main/java/tech/pegasys/teku/data/SlashingProtectionRepairer.java index 80ed1a0ec08..b56c0a4f27f 100644 --- a/data/dataexchange/src/main/java/tech/pegasys/teku/data/SlashingProtectionRepairer.java +++ b/data/dataexchange/src/main/java/tech/pegasys/teku/data/SlashingProtectionRepairer.java @@ -24,7 +24,7 @@ import java.util.Optional; import java.util.Set; import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.PublicKeyException; +import tech.pegasys.teku.api.exceptions.PublicKeyException; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.data.slashinginterchange.SigningHistory; import tech.pegasys.teku.ethereum.signingrecord.ValidatorSigningRecord; diff --git a/data/provider/src/main/java/tech/pegasys/teku/api/ChainDataProvider.java b/data/provider/src/main/java/tech/pegasys/teku/api/ChainDataProvider.java index cd98685575c..3d3c4e75df2 100644 --- a/data/provider/src/main/java/tech/pegasys/teku/api/ChainDataProvider.java +++ b/data/provider/src/main/java/tech/pegasys/teku/api/ChainDataProvider.java @@ -14,7 +14,7 @@ package tech.pegasys.teku.api; import static java.util.Collections.emptyList; -import static tech.pegasys.teku.api.response.v1.beacon.ValidatorResponse.getValidatorStatus; +import static tech.pegasys.teku.api.response.ValidatorStatusUtil.getValidatorStatus; import static tech.pegasys.teku.infrastructure.unsigned.UInt64.ONE; import static tech.pegasys.teku.infrastructure.unsigned.UInt64.ZERO; import static tech.pegasys.teku.spec.config.SpecConfig.FAR_FUTURE_EPOCH; @@ -45,8 +45,8 @@ import tech.pegasys.teku.api.migrated.StateSyncCommitteesData; import tech.pegasys.teku.api.migrated.StateValidatorBalanceData; import tech.pegasys.teku.api.migrated.SyncCommitteeRewardData; -import tech.pegasys.teku.api.response.v1.beacon.GenesisData; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.provider.GenesisData; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.api.rewards.EpochAttestationRewardsCalculator; import tech.pegasys.teku.api.stateselector.StateSelectorFactory; import tech.pegasys.teku.bls.BLSPublicKey; @@ -157,6 +157,10 @@ public GenesisData getGenesisData() { spec.atEpoch(ZERO).getConfig().getGenesisForkVersion()); } + public Optional getNetworkCurrentSlot() { + return recentChainData.getCurrentSlot(); + } + public tech.pegasys.teku.spec.datastructures.genesis.GenesisData getGenesisStateData() { if (!isStoreAvailable()) { throw new ChainDataUnavailableException(); diff --git a/data/provider/src/main/java/tech/pegasys/teku/api/ConfigProvider.java b/data/provider/src/main/java/tech/pegasys/teku/api/ConfigProvider.java index cb517e3b81f..b820f6bb677 100644 --- a/data/provider/src/main/java/tech/pegasys/teku/api/ConfigProvider.java +++ b/data/provider/src/main/java/tech/pegasys/teku/api/ConfigProvider.java @@ -16,11 +16,10 @@ import java.util.List; import java.util.Map; import org.apache.tuweni.units.bigints.UInt256; -import tech.pegasys.teku.api.response.v1.config.GetForkScheduleResponse; -import tech.pegasys.teku.api.schema.Fork; import tech.pegasys.teku.infrastructure.unsigned.UInt64; import tech.pegasys.teku.spec.Spec; import tech.pegasys.teku.spec.config.SpecConfig; +import tech.pegasys.teku.spec.datastructures.state.Fork; public class ConfigProvider { final Spec spec; @@ -29,7 +28,7 @@ public ConfigProvider(final Spec spec) { this.spec = spec; } - public Map getConfig() { + public Map getConfig() { final SpecConfigData configuration = new SpecConfigData(spec.getSpecConfigAndParent().specConfig()); return configuration.getConfigMap(); @@ -49,12 +48,7 @@ public static String formatValue(final Object v) { return v.toString(); } - public GetForkScheduleResponse getForkSchedule() { - final List forkList = spec.getForkSchedule().getForks().stream().map(Fork::new).toList(); - return new GetForkScheduleResponse(forkList); - } - - public List getStateForkSchedule() { + public List getStateForkSchedule() { return spec.getForkSchedule().getFullForkList(); } diff --git a/data/provider/src/main/java/tech/pegasys/teku/api/NetworkDataProvider.java b/data/provider/src/main/java/tech/pegasys/teku/api/NetworkDataProvider.java index 465f698569e..69d23840255 100644 --- a/data/provider/src/main/java/tech/pegasys/teku/api/NetworkDataProvider.java +++ b/data/provider/src/main/java/tech/pegasys/teku/api/NetworkDataProvider.java @@ -18,9 +18,9 @@ import java.util.function.Function; import org.apache.tuweni.units.bigints.UInt256; import tech.pegasys.teku.api.peer.Eth2PeerWithEnr; -import tech.pegasys.teku.api.response.v1.node.Direction; -import tech.pegasys.teku.api.response.v1.node.Peer; -import tech.pegasys.teku.api.response.v1.node.State; +import tech.pegasys.teku.api.provider.Direction; +import tech.pegasys.teku.api.provider.Peer; +import tech.pegasys.teku.api.provider.State; import tech.pegasys.teku.ethereum.json.types.node.PeerCount; import tech.pegasys.teku.ethereum.json.types.node.PeerCountBuilder; import tech.pegasys.teku.infrastructure.unsigned.UInt64; diff --git a/data/provider/src/main/java/tech/pegasys/teku/api/SchemaObjectProvider.java b/data/provider/src/main/java/tech/pegasys/teku/api/SchemaObjectProvider.java deleted file mode 100644 index 414e186caaa..00000000000 --- a/data/provider/src/main/java/tech/pegasys/teku/api/SchemaObjectProvider.java +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api; - -import tech.pegasys.teku.api.schema.BeaconBlock; -import tech.pegasys.teku.api.schema.BeaconBlockBody; -import tech.pegasys.teku.api.schema.altair.BeaconBlockAltair; -import tech.pegasys.teku.api.schema.altair.BeaconBlockBodyAltair; -import tech.pegasys.teku.api.schema.bellatrix.BeaconBlockBellatrix; -import tech.pegasys.teku.api.schema.bellatrix.BeaconBlockBodyBellatrix; -import tech.pegasys.teku.api.schema.bellatrix.BlindedBeaconBlockBodyBellatrix; -import tech.pegasys.teku.api.schema.bellatrix.BlindedBlockBellatrix; -import tech.pegasys.teku.api.schema.capella.BeaconBlockBodyCapella; -import tech.pegasys.teku.api.schema.capella.BeaconBlockCapella; -import tech.pegasys.teku.api.schema.capella.BlindedBeaconBlockBodyCapella; -import tech.pegasys.teku.api.schema.capella.BlindedBlockCapella; -import tech.pegasys.teku.api.schema.deneb.BeaconBlockBodyDeneb; -import tech.pegasys.teku.api.schema.deneb.BeaconBlockDeneb; -import tech.pegasys.teku.api.schema.deneb.BlindedBeaconBlockBodyDeneb; -import tech.pegasys.teku.api.schema.deneb.BlindedBlockDeneb; -import tech.pegasys.teku.api.schema.electra.BeaconBlockBodyElectra; -import tech.pegasys.teku.api.schema.electra.BeaconBlockElectra; -import tech.pegasys.teku.api.schema.electra.BlindedBeaconBlockBodyElectra; -import tech.pegasys.teku.api.schema.electra.BlindedBlockElectra; -import tech.pegasys.teku.api.schema.phase0.BeaconBlockPhase0; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecMilestone; - -/** - * Takes objects from Internal layers and converts to an appropriate schema object. - * - *

Handles slot sensitive conversions like conversion of blocks to phase0 or altair blocks - */ -public class SchemaObjectProvider { - final Spec spec; - - public SchemaObjectProvider(final Spec spec) { - this.spec = spec; - } - - public BeaconBlock getBeaconBlock( - final tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock block) { - return getBeaconBlock(block, spec.atSlot(block.getSlot()).getMilestone()); - } - - public BeaconBlock getBlindedBlock( - final tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock block) { - return getBlindedBlock(block, spec.atSlot(block.getSlot()).getMilestone()); - } - - public BeaconBlock getBlindedBlock( - final tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock block, - final SpecMilestone milestone) { - return switch (milestone) { - case PHASE0 -> - new BeaconBlockPhase0( - block.getSlot(), - block.getProposerIndex(), - block.getParentRoot(), - block.getStateRoot(), - new BeaconBlockBody(block.getBody())); - case ALTAIR -> - new BeaconBlockAltair( - block.getSlot(), - block.getProposerIndex(), - block.getParentRoot(), - block.getStateRoot(), - getBeaconBlockBodyAltair(block.getBody())); - case BELLATRIX -> - new BlindedBlockBellatrix( - block.getSlot(), - block.getProposerIndex(), - block.getParentRoot(), - block.getStateRoot(), - getBlindedBlockBodyBellatrix(block.getBody())); - case CAPELLA -> - new BlindedBlockCapella( - block.getSlot(), - block.getProposerIndex(), - block.getParentRoot(), - block.getStateRoot(), - getBlindedBlockBodyCapella(block.getBody())); - case DENEB -> - new BlindedBlockDeneb( - block.getSlot(), - block.getProposerIndex(), - block.getParentRoot(), - block.getStateRoot(), - getBlindedBlockBodyDeneb(block.getBody())); - case ELECTRA, FULU -> - new BlindedBlockElectra( - block.getSlot(), - block.getProposerIndex(), - block.getParentRoot(), - block.getStateRoot(), - getBlindedBlockBodyElectra(block.getBody())); - }; - } - - public BeaconBlock getBeaconBlock( - final tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock block, - final SpecMilestone milestone) { - return switch (milestone) { - case PHASE0 -> - new BeaconBlockPhase0( - block.getSlot(), - block.getProposerIndex(), - block.getParentRoot(), - block.getStateRoot(), - new BeaconBlockBody(block.getBody())); - case ALTAIR -> - new BeaconBlockAltair( - block.getSlot(), - block.getProposerIndex(), - block.getParentRoot(), - block.getStateRoot(), - getBeaconBlockBodyAltair(block.getBody())); - case BELLATRIX -> - new BeaconBlockBellatrix( - block.getSlot(), - block.getProposerIndex(), - block.getParentRoot(), - block.getStateRoot(), - getBeaconBlockBodyBellatrix(block.getBody())); - case CAPELLA -> - new BeaconBlockCapella( - block.getSlot(), - block.getProposerIndex(), - block.getParentRoot(), - block.getStateRoot(), - getBeaconBlockBodyCapella(block.getBody())); - case DENEB -> - new BeaconBlockDeneb( - block.getSlot(), - block.getProposerIndex(), - block.getParentRoot(), - block.getStateRoot(), - getBeaconBlockBodyDeneb(block.getBody())); - case ELECTRA, FULU -> - new BeaconBlockElectra( - block.getSlot(), - block.getProposerIndex(), - block.getParentRoot(), - block.getStateRoot(), - getBeaconBlockBodyElectra(block.getBody())); - }; - } - - private BeaconBlockBodyAltair getBeaconBlockBodyAltair( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody body) { - return new BeaconBlockBodyAltair( - tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.altair.BeaconBlockBodyAltair - .required(body)); - } - - private BeaconBlockBodyBellatrix getBeaconBlockBodyBellatrix( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody body) { - return new BeaconBlockBodyBellatrix( - tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.bellatrix - .BeaconBlockBodyBellatrix.required(body)); - } - - private BeaconBlockBodyCapella getBeaconBlockBodyCapella( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody body) { - return new BeaconBlockBodyCapella( - tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.capella - .BeaconBlockBodyCapella.required(body)); - } - - private BeaconBlockBodyDeneb getBeaconBlockBodyDeneb( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody body) { - return new BeaconBlockBodyDeneb( - tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.deneb.BeaconBlockBodyDeneb - .required(body)); - } - - private BeaconBlockBodyElectra getBeaconBlockBodyElectra( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody body) { - return new BeaconBlockBodyElectra( - tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.electra - .BeaconBlockBodyElectra.required(body)); - } - - private BlindedBeaconBlockBodyBellatrix getBlindedBlockBodyBellatrix( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody body) { - return new BlindedBeaconBlockBodyBellatrix( - tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.bellatrix - .BlindedBeaconBlockBodyBellatrix.required(body)); - } - - private BlindedBeaconBlockBodyCapella getBlindedBlockBodyCapella( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody body) { - return new BlindedBeaconBlockBodyCapella( - tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.capella - .BlindedBeaconBlockBodyCapella.required(body)); - } - - private BlindedBeaconBlockBodyDeneb getBlindedBlockBodyDeneb( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody body) { - return new BlindedBeaconBlockBodyDeneb( - tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.deneb - .BlindedBeaconBlockBodyDeneb.required(body)); - } - - private BlindedBeaconBlockBodyElectra getBlindedBlockBodyElectra( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody body) { - return new BlindedBeaconBlockBodyElectra( - tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.electra - .BlindedBeaconBlockBodyElectra.required(body)); - } -} diff --git a/data/provider/src/main/java/tech/pegasys/teku/api/SpecConfigData.java b/data/provider/src/main/java/tech/pegasys/teku/api/SpecConfigData.java index 045b93715a6..ca5efc1a38e 100644 --- a/data/provider/src/main/java/tech/pegasys/teku/api/SpecConfigData.java +++ b/data/provider/src/main/java/tech/pegasys/teku/api/SpecConfigData.java @@ -33,8 +33,8 @@ public SpecConfigData(final SpecConfig specConfig) { this.specConfig = specConfig; } - public Map getConfigMap() { - final Map configAttributes = new HashMap<>(); + public Map getConfigMap() { + final Map configAttributes = new HashMap<>(); specConfig .getRawConfig() .forEach( diff --git a/data/provider/src/main/java/tech/pegasys/teku/api/ValidatorDataProvider.java b/data/provider/src/main/java/tech/pegasys/teku/api/ValidatorDataProvider.java index 492db3399f3..eca9db8ffd2 100644 --- a/data/provider/src/main/java/tech/pegasys/teku/api/ValidatorDataProvider.java +++ b/data/provider/src/main/java/tech/pegasys/teku/api/ValidatorDataProvider.java @@ -20,8 +20,6 @@ import java.util.Optional; import org.apache.tuweni.bytes.Bytes32; import tech.pegasys.teku.api.exceptions.BadRequestException; -import tech.pegasys.teku.api.schema.SignedBeaconBlock; -import tech.pegasys.teku.api.schema.ValidatorBlockResult; import tech.pegasys.teku.bls.BLSSignature; import tech.pegasys.teku.ethereum.json.types.validator.AttesterDuties; import tech.pegasys.teku.ethereum.json.types.validator.ProposerDuties; @@ -44,7 +42,6 @@ import tech.pegasys.teku.spec.datastructures.operations.versions.altair.SyncCommitteeMessage; import tech.pegasys.teku.spec.datastructures.validator.BeaconPreparableProposer; import tech.pegasys.teku.spec.datastructures.validator.BroadcastValidationLevel; -import tech.pegasys.teku.spec.logic.common.statetransition.results.BlockImportResult.FailureReason; import tech.pegasys.teku.spec.schemas.SchemaDefinitionsAltair; import tech.pegasys.teku.storage.client.ChainDataUnavailableException; import tech.pegasys.teku.storage.client.CombinedChainDataClient; @@ -63,9 +60,6 @@ public class ValidatorDataProvider { private final ValidatorApiChannel validatorApiChannel; private final CombinedChainDataClient combinedChainDataClient; - private static final int SC_INTERNAL_ERROR = 500; - private static final int SC_ACCEPTED = 202; - private static final int SC_OK = 200; private final Spec spec; public ValidatorDataProvider( @@ -136,14 +130,6 @@ public SafeFuture> submitAttestations( return validatorApiChannel.sendSignedAttestations(attestations); } - public SafeFuture submitSignedBlock( - final SignedBeaconBlock signedBeaconBlock, - final BroadcastValidationLevel broadcastValidationLevel) { - return submitSignedBlock( - signedBeaconBlock.asInternalSignedBeaconBlock(spec), broadcastValidationLevel) - .thenApply(ValidatorDataProvider::generateSubmitSignedBlockResponse); - } - public SafeFuture submitSignedBlock( final SignedBlockContainer signedBlockContainer, final BroadcastValidationLevel broadcastValidationLevel) { @@ -274,21 +260,6 @@ public boolean isPhase0Slot(final UInt64 slot) { return spec.atSlot(slot).getMilestone() == SpecMilestone.PHASE0; } - private static ValidatorBlockResult generateSubmitSignedBlockResponse( - final SendSignedBlockResult result) { - int responseCode; - Optional hashRoot = result.getBlockRoot(); - if (result.getRejectionReason().isEmpty()) { - responseCode = SC_OK; - } else if (result.getRejectionReason().get().equals(FailureReason.INTERNAL_ERROR.name())) { - responseCode = SC_INTERNAL_ERROR; - } else { - responseCode = SC_ACCEPTED; - } - - return new ValidatorBlockResult(responseCode, result.getRejectionReason(), hashRoot); - } - private ObjectAndMetaData lookUpMetadata(final Attestation attestation) { return new ObjectAndMetaData<>( attestation, diff --git a/data/provider/src/main/java/tech/pegasys/teku/api/blobselector/BlobSidecarSelectorFactory.java b/data/provider/src/main/java/tech/pegasys/teku/api/blobselector/BlobSidecarSelectorFactory.java index 7c2f516da27..8fe7855b077 100644 --- a/data/provider/src/main/java/tech/pegasys/teku/api/blobselector/BlobSidecarSelectorFactory.java +++ b/data/provider/src/main/java/tech/pegasys/teku/api/blobselector/BlobSidecarSelectorFactory.java @@ -191,7 +191,17 @@ private SafeFuture>> getBlobSidecars( .reconstructBlobSidecars(slotAndBlockRoot, indices) .thenApply(Optional::of); } - return client.getBlobSidecars(slotAndBlockRoot, indices).thenApply(Optional::of); + return client + .getBlobSidecars(slotAndBlockRoot, indices) + .thenCompose( + blobSidecars -> { + if (blobSidecars.isEmpty()) { + // attempt retrieving from archive (when enabled) + return client.getArchivedBlobSidecars(slotAndBlockRoot, indices); + } + return SafeFuture.completedFuture(blobSidecars); + }) + .thenApply(Optional::of); } private SafeFuture>> getBlobSidecars( @@ -201,7 +211,17 @@ private SafeFuture>> getBlobSidecars( .reconstructBlobSidecars(slot, indices) .thenApply(Optional::of); } - return client.getBlobSidecars(slot, indices).thenApply(Optional::of); + return client + .getBlobSidecars(slot, indices) + .thenCompose( + blobSidecars -> { + if (blobSidecars.isEmpty()) { + // attempt retrieving from archive (when enabled) + return client.getArchivedBlobSidecars(slot, indices); + } + return SafeFuture.completedFuture(blobSidecars); + }) + .thenApply(Optional::of); } private Optional addMetaData( diff --git a/data/provider/src/main/java/tech/pegasys/teku/api/rewards/EpochAttestationRewardsCalculator.java b/data/provider/src/main/java/tech/pegasys/teku/api/rewards/EpochAttestationRewardsCalculator.java index c6334e00fe1..7a3a70cd20a 100644 --- a/data/provider/src/main/java/tech/pegasys/teku/api/rewards/EpochAttestationRewardsCalculator.java +++ b/data/provider/src/main/java/tech/pegasys/teku/api/rewards/EpochAttestationRewardsCalculator.java @@ -147,16 +147,13 @@ private boolean isInactivityLeak() { private UInt64 getPrevEpochTotalParticipatingBalance(final int flagIndex) { final TotalBalances totalBalances = validatorStatuses.getTotalBalances(); - switch (flagIndex) { - case TIMELY_HEAD_FLAG_INDEX: - return totalBalances.getPreviousEpochHeadAttesters(); - case TIMELY_TARGET_FLAG_INDEX: - return totalBalances.getPreviousEpochTargetAttesters(); - case TIMELY_SOURCE_FLAG_INDEX: - return totalBalances.getPreviousEpochSourceAttesters(); - default: - throw new IllegalArgumentException("Unable to process unknown flag index:" + flagIndex); - } + return switch (flagIndex) { + case TIMELY_HEAD_FLAG_INDEX -> totalBalances.getPreviousEpochHeadAttesters(); + case TIMELY_TARGET_FLAG_INDEX -> totalBalances.getPreviousEpochTargetAttesters(); + case TIMELY_SOURCE_FLAG_INDEX -> totalBalances.getPreviousEpochSourceAttesters(); + default -> + throw new IllegalArgumentException("Unable to process unknown flag index:" + flagIndex); + }; } @VisibleForTesting diff --git a/data/provider/src/test/java/tech/pegasys/teku/api/ChainDataProviderTest.java b/data/provider/src/test/java/tech/pegasys/teku/api/ChainDataProviderTest.java index dc0f99302f1..a104b567ac0 100644 --- a/data/provider/src/test/java/tech/pegasys/teku/api/ChainDataProviderTest.java +++ b/data/provider/src/test/java/tech/pegasys/teku/api/ChainDataProviderTest.java @@ -55,8 +55,8 @@ import tech.pegasys.teku.api.migrated.BlockRewardData; import tech.pegasys.teku.api.migrated.StateSyncCommitteesData; import tech.pegasys.teku.api.migrated.SyncCommitteeRewardData; -import tech.pegasys.teku.api.response.v1.beacon.GenesisData; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.provider.GenesisData; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.async.SafeFutureAssert; import tech.pegasys.teku.infrastructure.bytes.Bytes20; diff --git a/data/provider/src/test/java/tech/pegasys/teku/api/ChainDataProviderTestPhase0.java b/data/provider/src/test/java/tech/pegasys/teku/api/ChainDataProviderTestPhase0.java index 1f8cb1ccdc5..82b46d11907 100644 --- a/data/provider/src/test/java/tech/pegasys/teku/api/ChainDataProviderTestPhase0.java +++ b/data/provider/src/test/java/tech/pegasys/teku/api/ChainDataProviderTestPhase0.java @@ -47,8 +47,8 @@ import tech.pegasys.teku.api.migrated.BlockHeadersResponse; import tech.pegasys.teku.api.migrated.StateSyncCommitteesData; import tech.pegasys.teku.api.migrated.SyncCommitteeRewardData; -import tech.pegasys.teku.api.response.v1.beacon.GenesisData; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.provider.GenesisData; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.bytes.Bytes4; import tech.pegasys.teku.infrastructure.unsigned.UInt64; diff --git a/data/provider/src/test/java/tech/pegasys/teku/api/ValidatorDataProviderTest.java b/data/provider/src/test/java/tech/pegasys/teku/api/ValidatorDataProviderTest.java index dd36ffa6dc8..e0d4a1f8ae2 100644 --- a/data/provider/src/test/java/tech/pegasys/teku/api/ValidatorDataProviderTest.java +++ b/data/provider/src/test/java/tech/pegasys/teku/api/ValidatorDataProviderTest.java @@ -17,7 +17,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.assertj.core.api.Assertions.fail; import static org.assertj.core.api.Assumptions.assumeThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyCollection; @@ -31,26 +30,21 @@ import static tech.pegasys.teku.infrastructure.ssz.SszDataAssert.assertThatSszData; import static tech.pegasys.teku.infrastructure.unsigned.UInt64.ONE; import static tech.pegasys.teku.infrastructure.unsigned.UInt64.ZERO; -import static tech.pegasys.teku.spec.logic.common.statetransition.results.BlockImportResult.FailureReason; import it.unimi.dsi.fastutil.ints.IntList; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.IntStream; -import java.util.stream.Stream; import org.apache.tuweni.bytes.Bytes32; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.TestTemplate; import org.mockito.ArgumentCaptor; import tech.pegasys.teku.api.exceptions.BadRequestException; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; -import tech.pegasys.teku.api.schema.ValidatorBlockResult; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.bls.BLSSignature; import tech.pegasys.teku.bls.BLSTestUtil; @@ -65,16 +59,13 @@ import tech.pegasys.teku.spec.SpecMilestone; import tech.pegasys.teku.spec.TestSpecContext; import tech.pegasys.teku.spec.TestSpecInvocationContextProvider.SpecContext; -import tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock; import tech.pegasys.teku.spec.datastructures.builder.SignedValidatorRegistration; import tech.pegasys.teku.spec.datastructures.metadata.BlockContainerAndMetaData; import tech.pegasys.teku.spec.datastructures.operations.Attestation; import tech.pegasys.teku.spec.datastructures.operations.AttestationData; -import tech.pegasys.teku.spec.datastructures.validator.BroadcastValidationLevel; import tech.pegasys.teku.spec.util.DataStructureUtil; import tech.pegasys.teku.storage.client.ChainDataUnavailableException; import tech.pegasys.teku.storage.client.CombinedChainDataClient; -import tech.pegasys.teku.validator.api.SendSignedBlockResult; import tech.pegasys.teku.validator.api.SubmitDataError; import tech.pegasys.teku.validator.api.ValidatorApiChannel; @@ -280,78 +271,6 @@ void submitAttestation_shouldSubmitAnInternalAttestationStructure() { assertThatSszData(args.getValue().get(0)).isEqualByAllMeansTo(attestation); } - @TestTemplate - public void submitSignedBlock_shouldReturn200ForSuccess() - throws ExecutionException, InterruptedException { - final SignedBeaconBlock internalSignedBeaconBlock = - dataStructureUtil.randomSignedBeaconBlock(1); - final tech.pegasys.teku.api.schema.SignedBeaconBlock signedBeaconBlock = - tech.pegasys.teku.api.schema.SignedBeaconBlock.create(internalSignedBeaconBlock); - - final SafeFuture successImportResult = - completedFuture(SendSignedBlockResult.success(internalSignedBeaconBlock.getRoot())); - - when(validatorApiChannel.sendSignedBlock(any(), any())).thenReturn(successImportResult); - - final SafeFuture validatorBlockResultSafeFuture = - provider.submitSignedBlock(signedBeaconBlock, BroadcastValidationLevel.NOT_REQUIRED); - - assertThat(validatorBlockResultSafeFuture.get().getResponseCode()).isEqualTo(200); - } - - @TestTemplate - public void submitSignedBlock_shouldReturn202ForInvalidBlock() { - final SignedBeaconBlock internalSignedBeaconBlock = - dataStructureUtil.randomSignedBeaconBlock(1); - final tech.pegasys.teku.api.schema.SignedBeaconBlock signedBeaconBlock = - tech.pegasys.teku.api.schema.SignedBeaconBlock.create(internalSignedBeaconBlock); - final AtomicInteger failReasonCount = new AtomicInteger(); - - Stream.of(FailureReason.values()) - .filter(failureReason -> !failureReason.equals(FailureReason.INTERNAL_ERROR)) - .forEach( - failureReason -> { - failReasonCount.getAndIncrement(); - - final SafeFuture failImportResult = - completedFuture(SendSignedBlockResult.notImported(failureReason.name())); - - when(validatorApiChannel.sendSignedBlock(any(), any())).thenReturn(failImportResult); - - final SafeFuture validatorBlockResultSafeFuture = - provider.submitSignedBlock( - signedBeaconBlock, BroadcastValidationLevel.NOT_REQUIRED); - - try { - assertThat(validatorBlockResultSafeFuture.get().getResponseCode()).isEqualTo(202); - } catch (final Exception e) { - fail("Exception while executing test."); - } - }); - - // Assert that the check has run over each FailureReason except the 500. - assertThat(failReasonCount.get()).isEqualTo(FailureReason.values().length - 1); - } - - @TestTemplate - public void submitSignedBlock_shouldReturn500ForInternalError() - throws ExecutionException, InterruptedException { - final SignedBeaconBlock internalSignedBeaconBlock = - dataStructureUtil.randomSignedBeaconBlock(1); - final tech.pegasys.teku.api.schema.SignedBeaconBlock signedBeaconBlock = - tech.pegasys.teku.api.schema.SignedBeaconBlock.create(internalSignedBeaconBlock); - - final SafeFuture failImportResult = - completedFuture(SendSignedBlockResult.rejected(FailureReason.INTERNAL_ERROR.name())); - - when(validatorApiChannel.sendSignedBlock(any(), any())).thenReturn(failImportResult); - - final SafeFuture validatorBlockResultSafeFuture = - provider.submitSignedBlock(signedBeaconBlock, BroadcastValidationLevel.NOT_REQUIRED); - - assertThat(validatorBlockResultSafeFuture.get().getResponseCode()).isEqualTo(500); - } - @TestTemplate public void getAttesterDuties_shouldHandleEmptyIndicesList() { final Bytes32 previousTargetRoot = dataStructureUtil.randomBytes32(); @@ -402,6 +321,7 @@ void registerValidators_shouldReportErrorIfCannotRetrieveValidatorStatuses() { } @TestTemplate + @SuppressWarnings("EnumOrdinal") void registerValidators_shouldIgnoreExitedAndUnknownValidators() { final int numOfValidatorRegistrationsAttempted = ValidatorStatus.values().length + 2; @@ -425,7 +345,6 @@ void registerValidators_shouldIgnoreExitedAndUnknownValidators() { e.getValue(), dataStructureUtil.randomValidator()))); - @SuppressWarnings("EnumOrdinal") final List exitedOrUnknownKeys = IntStream.range( ValidatorStatus.exited_unslashed.ordinal(), numOfValidatorRegistrationsAttempted) diff --git a/data/provider/src/test/java/tech/pegasys/teku/api/blobselector/BlobSidecarSelectorFactoryTest.java b/data/provider/src/test/java/tech/pegasys/teku/api/blobselector/BlobSidecarSelectorFactoryTest.java index d8a27fd1b60..b346be38864 100644 --- a/data/provider/src/test/java/tech/pegasys/teku/api/blobselector/BlobSidecarSelectorFactoryTest.java +++ b/data/provider/src/test/java/tech/pegasys/teku/api/blobselector/BlobSidecarSelectorFactoryTest.java @@ -121,6 +121,31 @@ public void blockRootSelector_shouldGetBlobSidecarsForFinalizedSlot() assertThat(result.get().getData()).isEqualTo(blobSidecars); } + @Test + public void blockRootSelector_shouldAttemptToGetFinalizedBlobSidecarsFromArchive() + throws ExecutionException, InterruptedException { + final UInt64 finalizedSlot = UInt64.valueOf(42); + final SignedBlockAndState blockAndState = data.randomSignedBlockAndState(100); + when(client.getChainHead()).thenReturn(Optional.of(ChainHead.create(blockAndState))); + + when(client.getFinalizedSlotByBlockRoot(block.getRoot())) + .thenReturn(SafeFuture.completedFuture(Optional.of(finalizedSlot))); + final SlotAndBlockRoot slotAndBlockRoot = new SlotAndBlockRoot(finalizedSlot, block.getRoot()); + // not available in DB + when(client.getBlobSidecars(slotAndBlockRoot, indices)) + .thenReturn(SafeFuture.completedFuture(List.of())); + // available in archive + when(client.getArchivedBlobSidecars(slotAndBlockRoot, indices)) + .thenReturn(SafeFuture.completedFuture(blobSidecars)); + + final Optional result = + blobSidecarSelectorFactory + .blockRootSelector(block.getRoot()) + .getBlobSidecars(indices) + .get(); + assertThat(result.get().getData()).isEqualTo(blobSidecars); + } + @Test public void blockRootSelector_shouldGetBlobSidecarsByRetrievingBlock() throws ExecutionException, InterruptedException { @@ -155,6 +180,23 @@ public void slotSelector_shouldGetBlobSidecarsFromFinalizedSlot() assertThat(result.get().getData()).isEqualTo(blobSidecars); } + @Test + public void slotSelector_shouldAttemptToGetFinalizedBlobSidecarsFromArchive() + throws ExecutionException, InterruptedException { + when(client.isFinalized(block.getSlot())).thenReturn(true); + // not available in DB + when(client.getBlobSidecars(block.getSlot(), indices)) + .thenReturn(SafeFuture.completedFuture(List.of())); + // available in archive + when(client.getArchivedBlobSidecars(block.getSlot(), indices)) + .thenReturn(SafeFuture.completedFuture(blobSidecars)); + when(client.isChainHeadOptimistic()).thenReturn(false); + + final Optional result = + blobSidecarSelectorFactory.slotSelector(block.getSlot()).getBlobSidecars(indices).get(); + assertThat(result.get().getData()).isEqualTo(blobSidecars); + } + @Test public void slotSelector_shouldGetBlobSidecarsByRetrievingBlockWhenSlotNotFinalized() throws ExecutionException, InterruptedException { @@ -230,6 +272,11 @@ public void shouldLookForBlobSidecarsOnlyAfterDeneb( .thenReturn(SafeFuture.completedFuture(Optional.of(block))); when(client.getBlobSidecars(any(SlotAndBlockRoot.class), anyList())) .thenReturn(SafeFuture.completedFuture(List.of())); + when(client.getArchivedBlobSidecars(any(SlotAndBlockRoot.class), anyList())) + .thenReturn(SafeFuture.completedFuture(List.of())); + when(client.getArchivedBlobSidecars(any(UInt64.class), anyList())) + .thenReturn(SafeFuture.completedFuture(List.of())); + blobSidecarSelectorFactory.slotSelector(block.getSlot()).getBlobSidecars(indices).get(); if (ctx.getSpec().isMilestoneSupported(SpecMilestone.DENEB)) { verify(client).getBlobSidecars(any(SlotAndBlockRoot.class), anyList()); @@ -326,8 +373,6 @@ public void slotSelector_whenSelectingNonFinalizedBlockMetadataReturnsFinalizedF when(client.isFinalized(block.getSlot())).thenReturn(false); when(client.getBlockAtSlotExact(block.getSlot())) .thenReturn(SafeFuture.completedFuture(Optional.of(block))); - when(client.getBlobSidecars(block.getSlot(), indices)) - .thenReturn(SafeFuture.completedFuture(blobSidecars)); when(client.isChainHeadOptimistic()).thenReturn(false); when(client.getBlobSidecars(block.getSlotAndBlockRoot(), indices)) .thenReturn(SafeFuture.completedFuture(blobSidecars)); diff --git a/data/publisher/src/main/java/tech/pegasys/teku/data/publisher/MetricsDataFactory.java b/data/publisher/src/main/java/tech/pegasys/teku/data/publisher/MetricsDataFactory.java index 4fea19f1bf4..34ae3d64778 100644 --- a/data/publisher/src/main/java/tech/pegasys/teku/data/publisher/MetricsDataFactory.java +++ b/data/publisher/src/main/java/tech/pegasys/teku/data/publisher/MetricsDataFactory.java @@ -53,11 +53,11 @@ List getMetricData(final MetricsPublisherSource source) { } public List getMetricData() { - if (!(metricsSystem instanceof PrometheusMetricsSystem)) { + if (metricsSystem instanceof final PrometheusMetricsSystem prometheusMetricsSystem) { + return getMetricData(new PrometheusMetricsPublisherSource(prometheusMetricsSystem)); + } else { LOG.error("Prometheus metric system not found, cannot export metrics data."); return new ArrayList<>(); } - return getMetricData( - new PrometheusMetricsPublisherSource((PrometheusMetricsSystem) metricsSystem)); } } diff --git a/data/publisher/src/main/java/tech/pegasys/teku/data/publisher/SystemMetricData.java b/data/publisher/src/main/java/tech/pegasys/teku/data/publisher/SystemMetricData.java index 0edb395b57a..779597895be 100644 --- a/data/publisher/src/main/java/tech/pegasys/teku/data/publisher/SystemMetricData.java +++ b/data/publisher/src/main/java/tech/pegasys/teku/data/publisher/SystemMetricData.java @@ -112,16 +112,12 @@ public SystemMetricData(final long timestamp, final File beaconNodeDirectory) { } private long getNodeBootSeconds() { - switch (miscOs) { - case "lin": - return new LinuxOperatingSystem().getSystemBootTime(); - case "win": - return new WindowsOperatingSystem().getSystemBootTime(); - case "mac": - return new MacOperatingSystem().getSystemBootTime(); - default: - return 0L; - } + return switch (miscOs) { + case "lin" -> new LinuxOperatingSystem().getSystemBootTime(); + case "win" -> new WindowsOperatingSystem().getSystemBootTime(); + case "mac" -> new MacOperatingSystem().getSystemBootTime(); + default -> 0L; + }; } private long[] calculateProcessLoadTicks(final long[][] processorCpuLoadTicks) { diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/PublicKeyException.java b/data/serializer/src/main/java/tech/pegasys/teku/api/exceptions/PublicKeyException.java similarity index 87% rename from data/serializer/src/main/java/tech/pegasys/teku/api/schema/PublicKeyException.java rename to data/serializer/src/main/java/tech/pegasys/teku/api/exceptions/PublicKeyException.java index 4a847782d62..a47b17c389b 100644 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/PublicKeyException.java +++ b/data/serializer/src/main/java/tech/pegasys/teku/api/exceptions/PublicKeyException.java @@ -11,15 +11,11 @@ * specific language governing permissions and limitations under the License. */ -package tech.pegasys.teku.api.schema; +package tech.pegasys.teku.api.exceptions; public class PublicKeyException extends RuntimeException { public PublicKeyException(final String message, final Throwable cause) { super(message, cause); } - - public PublicKeyException(final String err) { - super(err); - } } diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Direction.java b/data/serializer/src/main/java/tech/pegasys/teku/api/provider/Direction.java similarity index 93% rename from data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Direction.java rename to data/serializer/src/main/java/tech/pegasys/teku/api/provider/Direction.java index 6bd54e9b9aa..dbba2e9ec21 100644 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Direction.java +++ b/data/serializer/src/main/java/tech/pegasys/teku/api/provider/Direction.java @@ -11,7 +11,7 @@ * specific language governing permissions and limitations under the License. */ -package tech.pegasys.teku.api.response.v1.node; +package tech.pegasys.teku.api.provider; @SuppressWarnings("JavaCase") public enum Direction { diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GenesisData.java b/data/serializer/src/main/java/tech/pegasys/teku/api/provider/GenesisData.java similarity index 90% rename from data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GenesisData.java rename to data/serializer/src/main/java/tech/pegasys/teku/api/provider/GenesisData.java index 37ae5be843e..5aa3c905ba3 100644 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GenesisData.java +++ b/data/serializer/src/main/java/tech/pegasys/teku/api/provider/GenesisData.java @@ -11,10 +11,7 @@ * specific language governing permissions and limitations under the License. */ -package tech.pegasys.teku.api.response.v1.beacon; - -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_BYTES32; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_BYTES32; +package tech.pegasys.teku.api.provider; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; @@ -35,7 +32,10 @@ public class GenesisData { public final UInt64 genesisTime; @JsonProperty("genesis_validators_root") - @Schema(type = "string", example = EXAMPLE_BYTES32, pattern = PATTERN_BYTES32) + @Schema( + type = "string", + example = "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", + pattern = "^0x[a-fA-F0-9]{64}$") public final Bytes32 genesisValidatorsRoot; @JsonProperty("genesis_fork_version") diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Peer.java b/data/serializer/src/main/java/tech/pegasys/teku/api/provider/Peer.java similarity index 98% rename from data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Peer.java rename to data/serializer/src/main/java/tech/pegasys/teku/api/provider/Peer.java index 71e5a215b90..8bcdfb254ad 100644 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Peer.java +++ b/data/serializer/src/main/java/tech/pegasys/teku/api/provider/Peer.java @@ -11,7 +11,7 @@ * specific language governing permissions and limitations under the License. */ -package tech.pegasys.teku.api.response.v1.node; +package tech.pegasys.teku.api.provider; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/State.java b/data/serializer/src/main/java/tech/pegasys/teku/api/provider/State.java similarity index 93% rename from data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/State.java rename to data/serializer/src/main/java/tech/pegasys/teku/api/provider/State.java index 8877e2bc2db..0f60a2163f6 100644 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/State.java +++ b/data/serializer/src/main/java/tech/pegasys/teku/api/provider/State.java @@ -11,7 +11,7 @@ * specific language governing permissions and limitations under the License. */ -package tech.pegasys.teku.api.response.v1.node; +package tech.pegasys.teku.api.provider; @SuppressWarnings("JavaCase") public enum State { diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/ValidatorBlockResult.java b/data/serializer/src/main/java/tech/pegasys/teku/api/provider/ValidatorBlockResult.java similarity index 87% rename from data/serializer/src/main/java/tech/pegasys/teku/api/schema/ValidatorBlockResult.java rename to data/serializer/src/main/java/tech/pegasys/teku/api/provider/ValidatorBlockResult.java index 685a8e05258..e2df9524563 100644 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/ValidatorBlockResult.java +++ b/data/serializer/src/main/java/tech/pegasys/teku/api/provider/ValidatorBlockResult.java @@ -11,9 +11,7 @@ * specific language governing permissions and limitations under the License. */ -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; +package tech.pegasys.teku.api.provider; import io.swagger.v3.oas.annotations.media.Schema; import java.util.Optional; @@ -26,7 +24,7 @@ public class ValidatorBlockResult { @Schema(type = "string") private final Optional failureReason; - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) + @Schema(type = "string", format = "byte", description = "Bytes32 hexadecimal") private final Optional hash_tree_root; public ValidatorBlockResult( diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/EventType.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/EventType.java similarity index 96% rename from data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/EventType.java rename to data/serializer/src/main/java/tech/pegasys/teku/api/response/EventType.java index 202787baf33..383ee7cf4ac 100644 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/EventType.java +++ b/data/serializer/src/main/java/tech/pegasys/teku/api/response/EventType.java @@ -11,7 +11,7 @@ * specific language governing permissions and limitations under the License. */ -package tech.pegasys.teku.api.response.v1; +package tech.pegasys.teku.api.response; import java.util.List; diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/ValidatorStatus.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/ValidatorStatus.java similarity index 96% rename from data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/ValidatorStatus.java rename to data/serializer/src/main/java/tech/pegasys/teku/api/response/ValidatorStatus.java index a8ff281362c..5da922e6576 100644 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/ValidatorStatus.java +++ b/data/serializer/src/main/java/tech/pegasys/teku/api/response/ValidatorStatus.java @@ -11,7 +11,7 @@ * specific language governing permissions and limitations under the License. */ -package tech.pegasys.teku.api.response.v1.beacon; +package tech.pegasys.teku.api.response; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/ValidatorStatusUtil.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/ValidatorStatusUtil.java new file mode 100644 index 00000000000..2db66e33736 --- /dev/null +++ b/data/serializer/src/main/java/tech/pegasys/teku/api/response/ValidatorStatusUtil.java @@ -0,0 +1,64 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.api.response; + +import tech.pegasys.teku.infrastructure.unsigned.UInt64; +import tech.pegasys.teku.spec.datastructures.state.Validator; +import tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState; + +public class ValidatorStatusUtil { + public static ValidatorStatus getValidatorStatus( + final BeaconState state, + final Integer validatorIndex, + final UInt64 epoch, + final UInt64 farFutureEpoch) { + return getValidatorStatus(epoch, state.getValidators().get(validatorIndex), farFutureEpoch); + } + + public static ValidatorStatus getValidatorStatus( + final UInt64 epoch, final Validator validator, final UInt64 farFutureEpoch) { + // pending + if (validator.getActivationEpoch().isGreaterThan(epoch)) { + return validator.getActivationEligibilityEpoch().equals(farFutureEpoch) + ? ValidatorStatus.pending_initialized + : ValidatorStatus.pending_queued; + } + // active + if (validator.getActivationEpoch().isLessThanOrEqualTo(epoch) + && epoch.isLessThan(validator.getExitEpoch())) { + if (validator.getExitEpoch().equals(farFutureEpoch)) { + return ValidatorStatus.active_ongoing; + } + return validator.isSlashed() + ? ValidatorStatus.active_slashed + : ValidatorStatus.active_exiting; + } + + // exited + if (validator.getExitEpoch().isLessThanOrEqualTo(epoch) + && epoch.isLessThan(validator.getWithdrawableEpoch())) { + return validator.isSlashed() + ? ValidatorStatus.exited_slashed + : ValidatorStatus.exited_unslashed; + } + + // withdrawal + if (validator.getWithdrawableEpoch().isLessThanOrEqualTo(epoch)) { + return validator.getEffectiveBalance().isGreaterThan(UInt64.ZERO) + ? ValidatorStatus.withdrawal_possible + : ValidatorStatus.withdrawal_done; + } + throw new IllegalStateException("Unable to determine validator status"); + } +} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/BlockHeader.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/BlockHeader.java deleted file mode 100644 index 3d9bbd49ebb..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/BlockHeader.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_BYTES32; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_BYTES32; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.BeaconBlockHeader; -import tech.pegasys.teku.api.schema.SignedBeaconBlockHeader; -import tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock; - -public class BlockHeader { - @Schema(type = "string", example = EXAMPLE_BYTES32, pattern = PATTERN_BYTES32) - public final Bytes32 root; - - public final boolean canonical; - public final SignedBeaconBlockHeader header; - - @JsonCreator - public BlockHeader( - @JsonProperty("root") final Bytes32 root, - @JsonProperty("canonical") final boolean canonical, - @JsonProperty("header") final SignedBeaconBlockHeader header) { - this.root = root; - this.canonical = canonical; - this.header = header; - } - - public BlockHeader(final SignedBeaconBlock signedBeaconBlock, final boolean canonical) { - this.root = signedBeaconBlock.getRoot(); - this.canonical = canonical; - this.header = - new SignedBeaconBlockHeader( - new BeaconBlockHeader( - signedBeaconBlock.getSlot(), - signedBeaconBlock.getMessage().getProposerIndex(), - signedBeaconBlock.getParentRoot(), - signedBeaconBlock.getStateRoot(), - signedBeaconBlock.getBodyRoot()), - new BLSSignature(signedBeaconBlock.getSignature())); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final BlockHeader that = (BlockHeader) o; - return canonical == that.canonical - && Objects.equals(root, that.root) - && Objects.equals(header, that.header); - } - - @Override - public int hashCode() { - return Objects.hash(root, canonical, header); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("root", root) - .add("canonical", canonical) - .add("header", header) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/EpochCommitteeResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/EpochCommitteeResponse.java deleted file mode 100644 index 23a0a16bbfc..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/EpochCommitteeResponse.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_UINT64; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.Objects; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.infrastructure.unsigned.UInt64Util; -import tech.pegasys.teku.spec.datastructures.state.CommitteeAssignment; - -public class EpochCommitteeResponse { - @JsonProperty("index") - @Schema(type = "string", example = EXAMPLE_UINT64, description = "Index of committee") - public final UInt64 index; - - @JsonProperty("slot") - @Schema( - type = "string", - example = EXAMPLE_UINT64, - description = "The slot at which the committee has to attest.") - public final UInt64 slot; - - @JsonProperty("validators") - @ArraySchema(schema = @Schema(type = "string", example = EXAMPLE_UINT64)) - public final List validators; - - public EpochCommitteeResponse(final CommitteeAssignment committeeAssignment) { - this.slot = committeeAssignment.slot(); - this.index = committeeAssignment.committeeIndex(); - this.validators = UInt64Util.intToUInt64List(committeeAssignment.committee()); - } - - @JsonCreator - public EpochCommitteeResponse( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("index") final UInt64 index, - @JsonProperty("validators") final List validators) { - this.slot = slot; - this.index = index; - this.validators = validators; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof EpochCommitteeResponse)) { - return false; - } - EpochCommitteeResponse that = (EpochCommitteeResponse) o; - return Objects.equal(index, that.index) - && Objects.equal(slot, that.slot) - && Objects.equal(validators, that.validators); - } - - @Override - public int hashCode() { - return Objects.hashCode(index, slot, validators); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/FinalityCheckpointsResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/FinalityCheckpointsResponse.java deleted file mode 100644 index ba5dae36a80..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/FinalityCheckpointsResponse.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import java.util.Objects; -import tech.pegasys.teku.api.schema.Checkpoint; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState; - -@SuppressWarnings("JavaCase") -public class FinalityCheckpointsResponse { - @JsonProperty("previous_justified") - public final Checkpoint previous_justified; - - @JsonProperty("current_justified") - public final Checkpoint current_justified; - - @JsonProperty("finalized") - public final Checkpoint finalized; - - @JsonCreator - public FinalityCheckpointsResponse( - final @JsonProperty("previous_justified") Checkpoint previous_justified, - final @JsonProperty("current_justified") Checkpoint current_justified, - final @JsonProperty("finalized") Checkpoint finalized) { - this.previous_justified = previous_justified; - this.current_justified = current_justified; - this.finalized = finalized; - } - - public static FinalityCheckpointsResponse fromState(final BeaconState state) { - if (state.getFinalizedCheckpoint().getEpoch().equals(UInt64.ZERO)) { - return new FinalityCheckpointsResponse(Checkpoint.EMPTY, Checkpoint.EMPTY, Checkpoint.EMPTY); - } - return new FinalityCheckpointsResponse( - new Checkpoint(state.getPreviousJustifiedCheckpoint()), - new Checkpoint(state.getCurrentJustifiedCheckpoint()), - new Checkpoint(state.getFinalizedCheckpoint())); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final FinalityCheckpointsResponse that = (FinalityCheckpointsResponse) o; - return Objects.equals(previous_justified, that.previous_justified) - && Objects.equals(current_justified, that.current_justified) - && Objects.equals(finalized, that.finalized); - } - - @Override - public int hashCode() { - return Objects.hash(previous_justified, current_justified, finalized); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("previous_justified", previous_justified) - .add("current_justified", current_justified) - .add("finalized", finalized) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetBlockHeadersResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetBlockHeadersResponse.java deleted file mode 100644 index 4efe938b8cd..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetBlockHeadersResponse.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; - -@SuppressWarnings("JavaCase") -public class GetBlockHeadersResponse { - @JsonProperty("execution_optimistic") - public final boolean execution_optimistic; - - @JsonProperty("data") - public final List data; - - @JsonCreator - public GetBlockHeadersResponse( - @JsonProperty("execution_optimistic") final boolean executionOptimistic, - @JsonProperty("data") final List data) { - this.execution_optimistic = executionOptimistic; - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetBlockResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetBlockResponse.java deleted file mode 100644 index 655740526a0..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetBlockResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.SignedBeaconBlock; - -public class GetBlockResponse { - public final SignedBeaconBlock data; - - @JsonCreator - public GetBlockResponse(@JsonProperty("data") final SignedBeaconBlock data) { - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetBlockRootResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetBlockRootResponse.java deleted file mode 100644 index 358cc4abe82..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetBlockRootResponse.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.Root; - -@SuppressWarnings("JavaCase") -public class GetBlockRootResponse { - - @JsonProperty("execution_optimistic") - public final boolean execution_optimistic; - - @JsonProperty("data") - public final Root data; - - @JsonCreator - public GetBlockRootResponse( - @JsonProperty("data") final Root data, - @JsonProperty("execution_optimistic") final boolean executionOptimistic) { - this.data = data; - this.execution_optimistic = executionOptimistic; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetGenesisResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetGenesisResponse.java deleted file mode 100644 index 7fe23d8e97d..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetGenesisResponse.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class GetGenesisResponse { - @JsonProperty("data") - public final GenesisData data; - - @JsonCreator - public GetGenesisResponse(@JsonProperty("data") final GenesisData data) { - this.data = data; - } - - public GenesisData getData() { - return data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetHashTreeRootResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetHashTreeRootResponse.java deleted file mode 100644 index 10767e5e6a1..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetHashTreeRootResponse.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.Root; - -public class GetHashTreeRootResponse { - - @JsonProperty("data") - public final Root data; - - @JsonCreator - public GetHashTreeRootResponse(@JsonProperty("data") final Root data) { - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetProposerSlashingsResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetProposerSlashingsResponse.java deleted file mode 100644 index b73ad4eca17..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetProposerSlashingsResponse.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import tech.pegasys.teku.api.schema.ProposerSlashing; - -public class GetProposerSlashingsResponse { - @JsonProperty("data") - public final List data; - - @JsonCreator - public GetProposerSlashingsResponse(@JsonProperty("data") final List data) { - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateCommitteesResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateCommitteesResponse.java deleted file mode 100644 index f6e5d8b443f..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateCommitteesResponse.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; - -@SuppressWarnings("JavaCase") -public class GetStateCommitteesResponse { - @JsonProperty("execution_optimistic") - public final boolean execution_optimistic; - - @JsonProperty("data") - public final List data; - - @JsonCreator - public GetStateCommitteesResponse( - @JsonProperty("execution_optimistic") final boolean executionOptimistic, - @JsonProperty("data") final List data) { - this.execution_optimistic = executionOptimistic; - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateFinalityCheckpointsResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateFinalityCheckpointsResponse.java deleted file mode 100644 index 66eb2d8677b..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateFinalityCheckpointsResponse.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -@SuppressWarnings("JavaCase") -public class GetStateFinalityCheckpointsResponse { - - @JsonProperty("execution_optimistic") - public final boolean execution_optimistic; - - @JsonProperty("data") - public final FinalityCheckpointsResponse data; - - @JsonCreator - public GetStateFinalityCheckpointsResponse( - @JsonProperty("execution_optimistic") final boolean executionOptimistic, - @JsonProperty("data") final FinalityCheckpointsResponse data) { - this.execution_optimistic = executionOptimistic; - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateForkResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateForkResponse.java deleted file mode 100644 index 7339f32f965..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateForkResponse.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.Fork; - -@SuppressWarnings("JavaCase") -public class GetStateForkResponse { - @JsonProperty("execution_optimistic") - public final boolean execution_optimistic; - - @JsonProperty("data") - public final Fork data; - - @JsonCreator - public GetStateForkResponse( - @JsonProperty("execution_optimistic") final boolean executionOptimistic, - @JsonProperty("data") final Fork data) { - this.execution_optimistic = executionOptimistic; - this.data = data; - } - - public Fork getData() { - return data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateRootResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateRootResponse.java deleted file mode 100644 index 58ba5b256ab..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateRootResponse.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.Root; - -@SuppressWarnings("JavaCase") -public class GetStateRootResponse { - @JsonProperty("execution_optimistic") - public final boolean execution_optimistic; - - @JsonProperty("data") - public final Root data; - - @JsonCreator - public GetStateRootResponse( - @JsonProperty("execution_optimistic") final boolean executionOptimistic, - @JsonProperty("data") final Root data) { - this.execution_optimistic = executionOptimistic; - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateSyncCommitteesResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateSyncCommitteesResponse.java deleted file mode 100644 index 99a622d5e97..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateSyncCommitteesResponse.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -@SuppressWarnings("JavaCase") -public class GetStateSyncCommitteesResponse { - @JsonProperty("execution_optimistic") - public final boolean execution_optimistic; - - public final StateSyncCommittees data; - - @JsonCreator - public GetStateSyncCommitteesResponse( - @JsonProperty("execution_optimistic") final boolean executionOptimistic, - @JsonProperty("data") final StateSyncCommittees data) { - this.execution_optimistic = executionOptimistic; - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateValidatorBalancesResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateValidatorBalancesResponse.java deleted file mode 100644 index d7f7e6c3a78..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateValidatorBalancesResponse.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; - -@SuppressWarnings("JavaCase") -public class GetStateValidatorBalancesResponse { - @JsonProperty("execution_optimistic") - public final boolean execution_optimistic; - - @JsonProperty("data") - public final List data; - - @JsonCreator - public GetStateValidatorBalancesResponse( - @JsonProperty("execution_optimistic") final boolean executionOptimistic, - @JsonProperty("data") final List data) { - this.execution_optimistic = executionOptimistic; - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateValidatorResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateValidatorResponse.java deleted file mode 100644 index ae44674494a..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateValidatorResponse.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -@SuppressWarnings("JavaCase") -public class GetStateValidatorResponse { - @JsonProperty("execution_optimistic") - public final boolean execution_optimistic; - - @JsonProperty("data") - public final ValidatorResponse data; - - @JsonCreator - public GetStateValidatorResponse( - @JsonProperty("execution_optimistic") final boolean executionOptimistic, - @JsonProperty("data") final ValidatorResponse data) { - this.execution_optimistic = executionOptimistic; - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateValidatorsResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateValidatorsResponse.java deleted file mode 100644 index 9ec909b4561..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetStateValidatorsResponse.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; - -@SuppressWarnings("JavaCase") -public class GetStateValidatorsResponse { - @JsonProperty("execution_optimistic") - public final boolean execution_optimistic; - - @JsonProperty("data") - public final List data; - - @JsonCreator - public GetStateValidatorsResponse( - @JsonProperty("execution_optimistic") final boolean executionOptimistic, - @JsonProperty("data") final List data) { - this.execution_optimistic = executionOptimistic; - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetVoluntaryExitsResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetVoluntaryExitsResponse.java deleted file mode 100644 index 867740c7149..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/GetVoluntaryExitsResponse.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import tech.pegasys.teku.api.schema.SignedVoluntaryExit; - -public class GetVoluntaryExitsResponse { - @JsonProperty("data") - public final List data; - - @JsonCreator - public GetVoluntaryExitsResponse(@JsonProperty("data") final List data) { - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/PostDataFailure.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/PostDataFailure.java deleted file mode 100644 index 470b6d2c0d1..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/PostDataFailure.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class PostDataFailure { - @Schema(type = "string", format = "uint64") - public final UInt64 index; - - public final String message; - - @JsonCreator - public PostDataFailure( - @JsonProperty("index") final UInt64 index, @JsonProperty("message") final String message) { - this.index = index; - this.message = message; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final PostDataFailure that = (PostDataFailure) o; - return Objects.equals(index, that.index) && Objects.equals(message, that.message); - } - - @Override - public int hashCode() { - return Objects.hash(index, message); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/PostDataFailureResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/PostDataFailureResponse.java deleted file mode 100644 index 68b6d59c409..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/PostDataFailureResponse.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import java.util.Objects; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class PostDataFailureResponse { - @Schema(type = "string", format = "uint64") - public final UInt64 code; - - public final String message; - public final List failures; - - @JsonCreator - public PostDataFailureResponse( - @JsonProperty("code") final int code, - @JsonProperty("message") final String message, - @JsonProperty("failures") final List failures) { - this.code = UInt64.valueOf(code); - this.message = message; - this.failures = failures; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final PostDataFailureResponse that = (PostDataFailureResponse) o; - return Objects.equals(code, that.code) - && Objects.equals(message, that.message) - && Objects.equals(failures, that.failures); - } - - @Override - public int hashCode() { - return Objects.hash(code, message, failures); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/StateSyncCommittees.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/StateSyncCommittees.java deleted file mode 100644 index a8f5992cfdd..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/StateSyncCommittees.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_UINT64; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import java.util.Objects; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class StateSyncCommittees { - @JsonProperty("validators") - @ArraySchema(schema = @Schema(type = "string", example = EXAMPLE_UINT64)) - public final List validators; - - // so that swagger can list as [[String]], the getter will be what reflection picks up - // and the actual variable storing as uint64 will be ignored - @JsonProperty("validator_aggregates") - public List> getValidatorAggregates() { - return validatorAggregates.stream() - .map(e -> e.stream().map(UInt64::toString).toList()) - .toList(); - } - - @JsonIgnore public final List> validatorAggregates; - - @JsonCreator - public StateSyncCommittees( - @JsonProperty("validators") final List validators, - @JsonProperty("validator_aggregates") final List> validatorAggregates) { - this.validators = validators; - this.validatorAggregates = validatorAggregates; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final StateSyncCommittees that = (StateSyncCommittees) o; - return Objects.equals(validators, that.validators) - && Objects.equals(validatorAggregates, that.validatorAggregates); - } - - @Override - public int hashCode() { - return Objects.hash(validators, validatorAggregates); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("validators", validators) - .add("validatorAggregates", validatorAggregates) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/ValidatorBalanceResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/ValidatorBalanceResponse.java deleted file mode 100644 index e1b083868ee..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/ValidatorBalanceResponse.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_UINT64; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Optional; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState; - -public class ValidatorBalanceResponse { - @JsonProperty("index") - @Schema( - type = "string", - example = EXAMPLE_UINT64, - description = "Index of validator in validator registry.") - public final UInt64 index; - - @JsonProperty("balance") - @Schema( - type = "string", - example = EXAMPLE_UINT64, - description = "Current validator balance in gwei.") - public final UInt64 balance; - - @JsonCreator - public ValidatorBalanceResponse( - @JsonProperty("index") final UInt64 index, @JsonProperty("balance") final UInt64 balance) { - this.index = index; - this.balance = balance; - } - - public static Optional fromState( - final BeaconState state, final Integer index) { - if (index >= state.getValidators().size()) { - return Optional.empty(); - } - return Optional.of( - new ValidatorBalanceResponse(UInt64.valueOf(index), state.getBalances().getElement(index))); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof ValidatorBalanceResponse)) { - return false; - } - ValidatorBalanceResponse that = (ValidatorBalanceResponse) o; - return Objects.equal(index, that.index) && Objects.equal(balance, that.balance); - } - - @Override - public int hashCode() { - return Objects.hashCode(index, balance); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("index", index).add("balance", balance).toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/ValidatorResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/ValidatorResponse.java deleted file mode 100644 index 847a0cb132d..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/beacon/ValidatorResponse.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.beacon; - -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_UINT64; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import java.util.Optional; -import tech.pegasys.teku.api.schema.Validator; -import tech.pegasys.teku.bls.BLSPublicKey; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState; - -public class ValidatorResponse { - - @JsonProperty("index") - @Schema( - type = "string", - example = EXAMPLE_UINT64, - description = "Index of validator in validator registry.") - public final UInt64 index; - - @JsonProperty("balance") - @Schema( - type = "string", - example = EXAMPLE_UINT64, - description = "Current validator balance in gwei.") - public final UInt64 balance; - - @JsonProperty("status") - public final ValidatorStatus status; - - @JsonProperty("validator") - public final Validator validator; - - @JsonCreator - public ValidatorResponse( - @JsonProperty("index") final UInt64 index, - @JsonProperty("balance") final UInt64 balance, - @JsonProperty("status") final ValidatorStatus status, - @JsonProperty("validator") final Validator validator) { - this.index = index; - this.balance = balance; - this.status = status; - this.validator = validator; - } - - public static Optional fromState( - final BeaconState state, - final Integer index, - final UInt64 epoch, - final UInt64 farFutureEpoch) { - if (index >= state.getValidators().size()) { - return Optional.empty(); - } - tech.pegasys.teku.spec.datastructures.state.Validator validatorInternal = - state.getValidators().get(index); - return Optional.of( - new ValidatorResponse( - UInt64.valueOf(index), - state.getBalances().getElement(index), - getValidatorStatus(epoch, validatorInternal, farFutureEpoch), - new Validator(validatorInternal))); - } - - public static ValidatorStatus getValidatorStatus( - final BeaconState state, - final Integer validatorIndex, - final UInt64 epoch, - final UInt64 farFutureEpoch) { - return getValidatorStatus(epoch, state.getValidators().get(validatorIndex), farFutureEpoch); - } - - public static ValidatorStatus getValidatorStatus( - final UInt64 epoch, - final tech.pegasys.teku.spec.datastructures.state.Validator validator, - final UInt64 farFutureEpoch) { - // pending - if (validator.getActivationEpoch().isGreaterThan(epoch)) { - return validator.getActivationEligibilityEpoch().equals(farFutureEpoch) - ? ValidatorStatus.pending_initialized - : ValidatorStatus.pending_queued; - } - // active - if (validator.getActivationEpoch().isLessThanOrEqualTo(epoch) - && epoch.isLessThan(validator.getExitEpoch())) { - if (validator.getExitEpoch().equals(farFutureEpoch)) { - return ValidatorStatus.active_ongoing; - } - return validator.isSlashed() - ? ValidatorStatus.active_slashed - : ValidatorStatus.active_exiting; - } - - // exited - if (validator.getExitEpoch().isLessThanOrEqualTo(epoch) - && epoch.isLessThan(validator.getWithdrawableEpoch())) { - return validator.isSlashed() - ? ValidatorStatus.exited_slashed - : ValidatorStatus.exited_unslashed; - } - - // withdrawal - if (validator.getWithdrawableEpoch().isLessThanOrEqualTo(epoch)) { - return validator.getEffectiveBalance().isGreaterThan(UInt64.ZERO) - ? ValidatorStatus.withdrawal_possible - : ValidatorStatus.withdrawal_done; - } - throw new IllegalStateException("Unable to determine validator status"); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final ValidatorResponse that = (ValidatorResponse) o; - return Objects.equals(index, that.index) - && Objects.equals(balance, that.balance) - && status == that.status - && Objects.equals(validator, that.validator); - } - - @JsonIgnore - public Integer getIndex() { - return index.intValue(); - } - - @JsonIgnore - public BLSPublicKey getPublicKey() { - return validator.pubkey.asBLSPublicKey(); - } - - @JsonIgnore - public ValidatorStatus getStatus() { - return status; - } - - @Override - public int hashCode() { - return Objects.hash(index, balance, status, validator); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("index", index) - .add("balance", balance) - .add("status", status) - .add("validator", validator) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/config/DepositContract.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/config/DepositContract.java deleted file mode 100644 index 527aa0bbeb2..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/config/DepositContract.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.config; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@SuppressWarnings("JavaCase") -public class DepositContract { - @Schema(type = "string", format = "uint64") - public final UInt64 chain_id; - - public final String address; - - @JsonCreator - public DepositContract( - @JsonProperty("chain_id") final UInt64 chain_id, - @JsonProperty("address") final String address) { - this.chain_id = chain_id; - this.address = address; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/config/GetDepositContractResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/config/GetDepositContractResponse.java deleted file mode 100644 index 722417ec7bf..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/config/GetDepositContractResponse.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.config; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class GetDepositContractResponse { - public final DepositContract data; - - @JsonCreator - public GetDepositContractResponse(@JsonProperty("data") final DepositContract data) { - this.data = data; - } - - public GetDepositContractResponse(final int depositChainId, final String depositContractAddress) { - this.data = new DepositContract(UInt64.valueOf(depositChainId), depositContractAddress); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/config/GetForkScheduleResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/config/GetForkScheduleResponse.java deleted file mode 100644 index 269058a1ef6..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/config/GetForkScheduleResponse.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.config; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import tech.pegasys.teku.api.schema.Fork; - -public class GetForkScheduleResponse { - public final List data; - - @JsonCreator - public GetForkScheduleResponse(@JsonProperty("data") final List data) { - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/debug/ChainHead.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/debug/ChainHead.java deleted file mode 100644 index 4d4dbf402fe..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/debug/ChainHead.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.debug; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class ChainHead { - @Schema(type = "string", format = "uint64") - public final UInt64 slot; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 root; - - @JsonCreator - public ChainHead( - @JsonProperty("slot") final UInt64 slot, @JsonProperty("root") final Bytes32 root) { - this.slot = slot; - this.root = root; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final ChainHead chainHead = (ChainHead) o; - return Objects.equals(slot, chainHead.slot) && Objects.equals(root, chainHead.root); - } - - @Override - public int hashCode() { - return Objects.hash(slot, root); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/debug/GetChainHeadsResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/debug/GetChainHeadsResponse.java deleted file mode 100644 index 11e2eea670f..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/debug/GetChainHeadsResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.debug; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; - -public class GetChainHeadsResponse { - public final List data; - - @JsonCreator - public GetChainHeadsResponse(@JsonProperty("data") final List data) { - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/debug/GetStateResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/debug/GetStateResponse.java deleted file mode 100644 index 7e8fc86da57..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/debug/GetStateResponse.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.debug; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.BeaconState; -import tech.pegasys.teku.api.schema.Version; -import tech.pegasys.teku.api.schema.phase0.BeaconStatePhase0; - -public class GetStateResponse { - - public final BeaconStatePhase0 data; - - @JsonCreator - public GetStateResponse(@JsonProperty("data") final BeaconStatePhase0 data) { - this.data = data; - } - - public GetStateResponse(final Version version, final BeaconState data) { - if (!version.equals(Version.phase0)) { - throw new IllegalArgumentException( - String.format("Beacon state at slot %s is not a phase0 state", data.slot)); - } - this.data = (BeaconStatePhase0) data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/GetPeerCountResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/GetPeerCountResponse.java deleted file mode 100644 index cfaea17334a..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/GetPeerCountResponse.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.node; - -import java.util.List; -import java.util.Objects; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class GetPeerCountResponse { - public final PeerCount data; - - public GetPeerCountResponse(final PeerCount data) { - this.data = data; - } - - public static GetPeerCountResponse create(final List peers) { - int disconnected = 0; - int connecting = 0; - int connected = 0; - int disconnecting = 0; - - for (Peer peer : peers) { - switch (peer.state) { - case disconnected: - disconnected++; - break; - case connecting: - connecting++; - break; - case connected: - connected++; - break; - case disconnecting: - disconnecting++; - break; - default: - break; - } - } - - return new GetPeerCountResponse( - new PeerCount( - UInt64.valueOf(disconnected), - UInt64.valueOf(connecting), - UInt64.valueOf(connected), - UInt64.valueOf(disconnecting))); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final GetPeerCountResponse that = (GetPeerCountResponse) o; - return Objects.equals(data, that.data); - } - - @Override - public int hashCode() { - return Objects.hash(data); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Identity.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Identity.java deleted file mode 100644 index bef32c4b58d..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Identity.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.node; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import java.util.Objects; -import tech.pegasys.teku.api.schema.Metadata; - -public class Identity { - @JsonProperty("peer_id") - @Schema( - description = - "Cryptographic hash of a peer’s public key. " - + "[Read more](https://docs.libp2p.io/concepts/peer-id/)", - example = "QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N") - public final String peerId; - - @JsonProperty("enr") - @Schema( - description = "Ethereum node record. [Read more](https://eips.ethereum.org/EIPS/eip-778)", - example = - "enr:-IS4QHCYrYZbAKWCBRlAy5zzaDZXJBGkcnh4MHcBFZntXNFrdvJjX04jRzjzCBOonrkTfj499S" - + "ZuOh8R33Ls8RRcy5wBgmlkgnY0gmlwhH8AAAGJc2VjcDI1NmsxoQPKY0yuDUmstAHYpMa2_oxVtw0RW_QAdpzBQA8yWM0xOIN1ZHCCdl8") - public final String enr; - - @JsonProperty("p2p_addresses") - @ArraySchema( - arraySchema = - @Schema( - type = "string", - description = - "Node's addresses on which eth2 rpc requests are served. " - + "[Read more](https://docs.libp2p.io/reference/glossary/#multiaddr)", - example = "/ip4/7.7.7.7/tcp/4242/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N")) - public final List p2pAddresses; - - @JsonProperty("discovery_addresses") - @ArraySchema( - arraySchema = - @Schema( - type = "string", - description = - "Node's addresses on which is listening for discv5 requests. " - + "[Read more](https://docs.libp2p.io/reference/glossary/#multiaddr)", - example = "/ip4/7.7.7.7/tcp/4242/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N")) - public final List discoveryAddresses; - - @JsonProperty("metadata") - public final Metadata metadata; - - @JsonCreator - public Identity( - @JsonProperty("peer_id") final String peerId, - @JsonProperty("enr") final String enr, - @JsonProperty("p2p_addresses") final List p2pAddresses, - @JsonProperty("discovery_addresses") final List discoveryAddresses, - @JsonProperty("metadata") final Metadata metadata) { - this.peerId = peerId; - this.enr = enr; - this.p2pAddresses = p2pAddresses; - this.discoveryAddresses = discoveryAddresses; - this.metadata = metadata; - } - - public String getPeerId() { - return peerId; - } - - public String getEnr() { - return enr; - } - - public List getP2pAddresses() { - return p2pAddresses; - } - - public List getDiscoveryAddresses() { - return discoveryAddresses; - } - - public Metadata getMetadata() { - return metadata; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final Identity identity = (Identity) o; - return Objects.equals(peerId, identity.peerId) - && Objects.equals(enr, identity.enr) - && Objects.equals(p2pAddresses, identity.p2pAddresses) - && Objects.equals(discoveryAddresses, identity.discoveryAddresses) - && Objects.equals(metadata, identity.metadata); - } - - @Override - public int hashCode() { - return Objects.hash(peerId, enr, p2pAddresses, discoveryAddresses, metadata); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/IdentityResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/IdentityResponse.java deleted file mode 100644 index e938bc35937..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/IdentityResponse.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.node; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class IdentityResponse { - public final Identity data; - - @JsonCreator - public IdentityResponse(@JsonProperty("data") final Identity data) { - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Meta.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Meta.java deleted file mode 100644 index ed295452e57..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Meta.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.node; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class Meta { - @JsonProperty("count") - @Schema(type = "number", description = "Total number of items") - public final UInt64 count; - - @JsonCreator - public Meta(@JsonProperty("count") final UInt64 count) { - this.count = count; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("count", count).toString(); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Meta meta = (Meta) o; - return Objects.equals(count, meta.count); - } - - @Override - public int hashCode() { - return Objects.hash(count); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/PeerCount.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/PeerCount.java deleted file mode 100644 index 4e86743fc50..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/PeerCount.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.node; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class PeerCount { - @Schema(type = "string", format = "uint64") - public final UInt64 disconnected; - - @Schema(type = "string", format = "uint64") - public final UInt64 connecting; - - @Schema(type = "string", format = "uint64") - public final UInt64 connected; - - @Schema(type = "string", format = "uint64") - public final UInt64 disconnecting; - - @JsonCreator - public PeerCount( - @JsonProperty("disconnected") final UInt64 disconnected, - @JsonProperty("connecting") final UInt64 connecting, - @JsonProperty("connected") final UInt64 connected, - @JsonProperty("disconnecting") final UInt64 disconnecting) { - this.disconnected = disconnected; - this.connecting = connecting; - this.connected = connected; - this.disconnecting = disconnecting; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("disconnected", disconnected) - .add("connecting", connecting) - .add("connected", connected) - .add("disconnecting", disconnecting) - .toString(); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final PeerCount peerCount = (PeerCount) o; - return Objects.equals(disconnected, peerCount.disconnected) - && Objects.equals(connecting, peerCount.connecting) - && Objects.equals(connected, peerCount.connected) - && Objects.equals(disconnecting, peerCount.disconnecting); - } - - @Override - public int hashCode() { - return Objects.hash(disconnected, connecting, connected, disconnecting); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/PeerResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/PeerResponse.java deleted file mode 100644 index 9e50ee1f0ad..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/PeerResponse.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.node; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.Objects; - -public class PeerResponse { - @JsonProperty("data") - public final Peer data; - - @JsonCreator - public PeerResponse(@JsonProperty("data") final Peer data) { - this.data = data; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final PeerResponse that = (PeerResponse) o; - return Objects.equals(data, that.data); - } - - @Override - public int hashCode() { - return Objects.hash(data); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/PeersResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/PeersResponse.java deleted file mode 100644 index fa787839452..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/PeersResponse.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.node; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import java.util.Objects; - -public class PeersResponse { - public final List data; - public final Meta meta; - - @JsonCreator - public PeersResponse( - @JsonProperty("data") final List data, @JsonProperty("meta") final Meta meta) { - this.data = data; - this.meta = meta; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final PeersResponse that = (PeersResponse) o; - return Objects.equals(data, that.data) && Objects.equals(meta, that.meta); - } - - @Override - public int hashCode() { - return Objects.hash(data, meta); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Syncing.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Syncing.java deleted file mode 100644 index c2e63010e0b..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Syncing.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.node; - -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_UINT64; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@JsonInclude(JsonInclude.Include.NON_NULL) -public class Syncing { - @JsonProperty("head_slot") - @Schema(type = "string", pattern = PATTERN_UINT64, description = "Beacon node's head slot") - public final UInt64 headSlot; - - @JsonProperty("sync_distance") - @Schema( - type = "string", - pattern = PATTERN_UINT64, - description = "How many slots node needs to process to reach head. 0 if synced.") - public final UInt64 syncDistance; - - @JsonProperty("is_syncing") - @Schema( - type = "boolean", - description = "Set to true if the node is syncing, false if the node is synced.") - public final boolean isSyncing; - - @JsonProperty("is_optimistic") - @Schema( - type = "boolean", - description = "Set to true if the node is optimistically fetching blocks.") - public final Boolean isOptimistic; - - @JsonProperty("el_offline") - @Schema(type = "boolean", description = "Set to true if the execution client is offline.") - public final Boolean elOffline; - - public Syncing( - final UInt64 headSlot, - final UInt64 syncDistance, - final boolean isSyncing, - final boolean elOffline) { - this(headSlot, syncDistance, isSyncing, false, elOffline); - } - - @JsonCreator - public Syncing( - @JsonProperty("head_slot") final UInt64 headSlot, - @JsonProperty("sync_distance") final UInt64 syncDistance, - @JsonProperty("is_syncing") final boolean isSyncing, - @JsonProperty("is_optimistic") final boolean isOptimistic, - @JsonProperty("el_offline") final boolean elOffline) { - this.headSlot = headSlot; - this.syncDistance = syncDistance; - this.isSyncing = isSyncing; - this.isOptimistic = isOptimistic; - this.elOffline = elOffline; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final Syncing syncing = (Syncing) o; - return isSyncing == syncing.isSyncing - && Objects.equals(headSlot, syncing.headSlot) - && Objects.equals(syncDistance, syncing.syncDistance) - && Objects.equals(isOptimistic, syncing.isOptimistic) - && Objects.equals(elOffline, syncing.elOffline); - } - - @Override - public int hashCode() { - return Objects.hash(headSlot, syncDistance, isSyncing, isOptimistic, elOffline); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("headSlot", headSlot) - .add("syncDistance", syncDistance) - .add("isSyncing", isSyncing) - .add("isOptimistic", isOptimistic) - .add("elOffline", elOffline) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/SyncingResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/SyncingResponse.java deleted file mode 100644 index 6adc2b5f0b8..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/SyncingResponse.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.node; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.Objects; - -public class SyncingResponse { - public final Syncing data; - - @JsonCreator - public SyncingResponse(@JsonProperty("data") final Syncing data) { - this.data = data; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final SyncingResponse that = (SyncingResponse) o; - return Objects.equals(data, that.data); - } - - @Override - public int hashCode() { - return Objects.hash(data); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Version.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Version.java deleted file mode 100644 index 30a65325b5f..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/Version.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.node; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; - -public class Version { - @JsonProperty("version") - @Schema( - description = - "A string which uniquely identifies the client implementation and its version; " - + "similar to [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3).", - example = "teku/v0.12.6-dev-994997f8/osx-x86_64/adoptopenjdk-java-11") - public final String version; - - @JsonCreator - public Version(@JsonProperty("version") final String version) { - this.version = version; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final Version version1 = (Version) o; - return Objects.equals(version, version1.version); - } - - @Override - public int hashCode() { - return Objects.hash(version); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/VersionResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/VersionResponse.java deleted file mode 100644 index ca61a8b7430..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/node/VersionResponse.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.node; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.Objects; - -public class VersionResponse { - public final Version data; - - @JsonCreator - public VersionResponse(@JsonProperty("data") final Version data) { - this.data = data; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final VersionResponse that = (VersionResponse) o; - return Objects.equals(data, that.data); - } - - @Override - public int hashCode() { - return Objects.hash(data); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/DepositTreeSnapshot.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/DepositTreeSnapshot.java deleted file mode 100644 index 91680a60f2c..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/DepositTreeSnapshot.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_BYTES32; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_BYTES32; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class DepositTreeSnapshot { - @JsonProperty("finalized") - @ArraySchema( - schema = @Schema(type = "string", example = EXAMPLE_BYTES32, pattern = PATTERN_BYTES32), - arraySchema = @Schema(description = "List of finalized nodes in deposit tree")) - public List finalized; - - @JsonProperty("deposit_root") - @Schema( - type = "string", - example = EXAMPLE_BYTES32, - pattern = PATTERN_BYTES32, - description = "Root of finalized deposits") - public Bytes32 depositRoot; - - @JsonProperty("deposit_count") - @Schema( - type = "string", - format = "uint64", - example = "1", - description = "Number of deposits stored in the snapshot") - public UInt64 depositCount; - - @JsonProperty("execution_block_hash") - @Schema( - type = "string", - example = EXAMPLE_BYTES32, - pattern = PATTERN_BYTES32, - description = - "Hash of the execution block containing the highest index deposit stored in the snapshot") - public Bytes32 executionBlockHash; - - @JsonProperty("execution_block_height") - @Schema( - type = "string", - format = "uint64", - example = "1", - description = - "Height of the execution block in canonical chain containing the highest index deposit stored in the snapshot") - public UInt64 executionBlockHeight; - - @JsonCreator - public DepositTreeSnapshot( - @JsonProperty("finalized") final List finalized, - @JsonProperty("deposit_root") final Bytes32 depositRoot, - @JsonProperty("deposit_count") final UInt64 depositCount, - @JsonProperty("execution_block_hash") final Bytes32 executionBlockHash, - @JsonProperty("execution_block_height") final UInt64 executionBlockHeight) { - this.finalized = finalized; - this.depositRoot = depositRoot; - this.depositCount = depositCount; - this.executionBlockHash = executionBlockHash; - this.executionBlockHeight = executionBlockHeight; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/DepositWithIndex.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/DepositWithIndex.java deleted file mode 100644 index 9411efc1d51..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/DepositWithIndex.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import tech.pegasys.teku.api.schema.DepositData; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class DepositWithIndex { - @Schema(type = "string", format = "uint64") - public final UInt64 index; - - public final DepositData data; - - public DepositWithIndex( - @JsonProperty("index") final UInt64 index, @JsonProperty("data") final DepositData data) { - this.index = index; - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/Eth1DataWithVotesSchema.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/Eth1DataWithVotesSchema.java deleted file mode 100644 index eec9c26d203..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/Eth1DataWithVotesSchema.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class Eth1DataWithVotesSchema { - @JsonProperty("eth1_data") - public Eth1Data eth1Data; - - @JsonProperty("votes") - @Schema(type = "string", format = "uint64") - public UInt64 votes; - - @JsonCreator - public Eth1DataWithVotesSchema( - @JsonProperty("eth1_data") final Eth1Data eth1Data, - @JsonProperty("votes") final UInt64 votes) { - this.eth1Data = eth1Data; - this.votes = votes; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/Eth1VotingSummarySchema.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/Eth1VotingSummarySchema.java deleted file mode 100644 index d14e1fb2cfd..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/Eth1VotingSummarySchema.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class Eth1VotingSummarySchema { - @JsonProperty("state_eth1_data") - public Eth1Data stateEth1Data; - - @JsonProperty("eth1_data_votes") - public List eth1DataVotes; - - @JsonProperty("votes_required") - @Schema(type = "string", format = "uint64") - public UInt64 votesRequired; - - @JsonProperty("voting_period_slots") - @Schema(type = "string", format = "uint64") - public UInt64 votingPeriodSlots; - - @JsonProperty("voting_period_slots_left") - @Schema(type = "string", format = "uint64") - public UInt64 votingPeriodSlotsLeft; - - @JsonCreator - public Eth1VotingSummarySchema( - final @JsonProperty("state_eth1_data") Eth1Data stateEth1Data, - final @JsonProperty("eth1_data_votes") List eth1DataVotes, - final @JsonProperty("votes_required") UInt64 votesRequired, - final @JsonProperty("voting_period_slots") UInt64 votingPeriodSlots, - final @JsonProperty("voting_period_slots_left") UInt64 votingPeriodSlotsLeft) { - this.stateEth1Data = stateEth1Data; - this.eth1DataVotes = eth1DataVotes; - this.votesRequired = votesRequired; - this.votingPeriodSlots = votingPeriodSlots; - this.votingPeriodSlotsLeft = votingPeriodSlotsLeft; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetAllBlocksAtSlotResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetAllBlocksAtSlotResponse.java deleted file mode 100644 index faa72e4b360..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetAllBlocksAtSlotResponse.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.Set; -import tech.pegasys.teku.api.schema.SignedBeaconBlockWithRoot; -import tech.pegasys.teku.api.schema.Version; - -public class GetAllBlocksAtSlotResponse { - private final Version version; - - private final Set data; - - public Set getData() { - return data; - } - - public Version getVersion() { - return version; - } - - @JsonCreator - public GetAllBlocksAtSlotResponse( - @JsonProperty("version") final Version version, - @JsonProperty("data") final Set data) { - this.version = version; - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetDepositSnapshotResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetDepositSnapshotResponse.java deleted file mode 100644 index 881dc396c01..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetDepositSnapshotResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class GetDepositSnapshotResponse { - - public DepositTreeSnapshot data; - - @JsonCreator - public GetDepositSnapshotResponse(@JsonProperty("data") final DepositTreeSnapshot data) { - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetDepositsResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetDepositsResponse.java deleted file mode 100644 index 6d968567f0b..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetDepositsResponse.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import java.util.Objects; - -public class GetDepositsResponse { - public final List data; - - @JsonCreator - public GetDepositsResponse(@JsonProperty("data") final List data) { - this.data = data; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GetDepositsResponse that = (GetDepositsResponse) o; - return Objects.equals(data, that.data); - } - - @Override - public int hashCode() { - return Objects.hash(data); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetEth1DataCacheResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetEth1DataCacheResponse.java deleted file mode 100644 index aa50ab84925..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetEth1DataCacheResponse.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import tech.pegasys.teku.api.schema.Eth1Data; - -public class GetEth1DataCacheResponse { - - public final List data; - - @JsonCreator - public GetEth1DataCacheResponse(@JsonProperty("data") final List data) { - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetEth1DataResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetEth1DataResponse.java deleted file mode 100644 index d88577780c5..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetEth1DataResponse.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.Eth1Data; - -public class GetEth1DataResponse { - - public final Eth1Data data; - - @JsonCreator - public GetEth1DataResponse(@JsonProperty("data") final Eth1Data data) { - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetEth1VotingSummaryResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetEth1VotingSummaryResponse.java deleted file mode 100644 index e9cb3b75ae5..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetEth1VotingSummaryResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class GetEth1VotingSummaryResponse { - - public Eth1VotingSummarySchema data; - - @JsonCreator - public GetEth1VotingSummaryResponse(@JsonProperty("data") final Eth1VotingSummarySchema data) { - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetPeerScoresResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetPeerScoresResponse.java deleted file mode 100644 index 16cc640163e..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetPeerScoresResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; - -public class GetPeerScoresResponse { - public final List data; - - @JsonCreator - public GetPeerScoresResponse(@JsonProperty("data") final List data) { - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetProposersDataResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetProposersDataResponse.java deleted file mode 100644 index a16b4fd9508..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/GetProposersDataResponse.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Map; - -@SuppressWarnings("JavaCase") -public class GetProposersDataResponse { - @Schema(implementation = ProposerDataSchema.class) - private final Map data; - - @JsonCreator - public GetProposersDataResponse(@JsonProperty("data") final Map proposers_data) { - this.data = proposers_data; - } - - public Map getData() { - return data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/PeerScore.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/PeerScore.java deleted file mode 100644 index 8804fbce8ae..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/PeerScore.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; - -@JsonInclude(JsonInclude.Include.NON_NULL) -public class PeerScore { - - @JsonProperty("peer_id") - @Schema( - type = "string", - description = - "Cryptographic hash of a peer’s public key. " - + "'[Read more](https://docs.libp2p.io/concepts/peer-id/)", - example = "QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N") - public final String peerId; - - @JsonProperty("gossip_score") - @Schema( - type = "string", - format = "number", - description = "Gossip score for the associated peer.", - example = "1.2") - public final Double gossipScore; - - @JsonCreator - public PeerScore( - @JsonProperty("peer_id") final String peerId, - @JsonProperty("gossip_score") final Double gossipScore) { - this.peerId = peerId; - this.gossipScore = gossipScore; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof PeerScore)) { - return false; - } - PeerScore peerScore = (PeerScore) o; - return Objects.equals(peerId, peerScore.peerId) - && Objects.equals(gossipScore, peerScore.gossipScore); - } - - @Override - public int hashCode() { - return Objects.hash(peerId, gossipScore); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/PreparedProposerInfoSchema.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/PreparedProposerInfoSchema.java deleted file mode 100644 index bd5f3ba6024..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/PreparedProposerInfoSchema.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES20; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_BYTES20; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import tech.pegasys.teku.infrastructure.bytes.Bytes20; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@SuppressWarnings("JavaCase") -public class PreparedProposerInfoSchema { - - @Schema(type = "string", format = "uint64") - @JsonProperty("proposer_index") - UInt64 proposer_index; - - @Schema( - type = "string", - format = "byte", - pattern = PATTERN_BYTES20, - description = DESCRIPTION_BYTES20) - @JsonProperty("fee_recipient") - Bytes20 fee_recipient; - - @Schema(type = "string", format = "uint64") - @JsonProperty("expiry_slot") - UInt64 expiry_slot; -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/ProposerDataSchema.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/ProposerDataSchema.java deleted file mode 100644 index ce44b331031..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/ProposerDataSchema.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@SuppressWarnings("JavaCase") -public class ProposerDataSchema { - - @ArraySchema(schema = @Schema(implementation = PreparedProposerInfoSchema.class)) - @JsonProperty("prepared_proposers") - UInt64 proposer_index; - - @ArraySchema(schema = @Schema(implementation = RegisteredValidatorInfoSchema.class)) - @JsonProperty("registered_validators") - UInt64 registered_validators; -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/RegisteredValidatorInfoSchema.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/RegisteredValidatorInfoSchema.java deleted file mode 100644 index 368bbc0ac7a..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/teku/RegisteredValidatorInfoSchema.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.teku; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES20; -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES48; -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_PUBKEY; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_BYTES20; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_PUBKEY; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import tech.pegasys.teku.api.schema.BLSPubKey; -import tech.pegasys.teku.infrastructure.bytes.Bytes20; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@SuppressWarnings("JavaCase") -public class RegisteredValidatorInfoSchema { - - @Schema(type = "string", format = "uint64") - @JsonProperty("proposer_index") - UInt64 proposer_index; - - @Schema( - type = "string", - pattern = PATTERN_PUBKEY, - example = EXAMPLE_PUBKEY, - description = DESCRIPTION_BYTES48) - @JsonProperty("pubkey") - BLSPubKey pubkey; - - @Schema( - type = "string", - format = "byte", - pattern = PATTERN_BYTES20, - description = DESCRIPTION_BYTES20) - @JsonProperty("fee_recipient") - Bytes20 fee_recipient; - - @Schema(type = "string", format = "uint64") - @JsonProperty("gas_limit") - UInt64 gas_limit; - - @Schema(type = "string", format = "uint64") - @JsonProperty("timestamp") - UInt64 timestamp; - - @Schema(type = "string", format = "uint64") - @JsonProperty("expiry_slot") - UInt64 expiry_slot; -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/validator/GetNewBlindedBlockResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/validator/GetNewBlindedBlockResponse.java deleted file mode 100644 index fdf9e8611eb..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/validator/GetNewBlindedBlockResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.validator; - -import tech.pegasys.teku.api.schema.Version; -import tech.pegasys.teku.api.schema.interfaces.UnsignedBlindedBlock; - -public class GetNewBlindedBlockResponse { - public final Version version; - public final UnsignedBlindedBlock data; - - public GetNewBlindedBlockResponse(final Version version, final UnsignedBlindedBlock data) { - this.version = version; - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/validator/GetNewBlockResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/validator/GetNewBlockResponse.java deleted file mode 100644 index 596f4a553a6..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/validator/GetNewBlockResponse.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.validator; - -import tech.pegasys.teku.api.schema.BeaconBlock; -import tech.pegasys.teku.api.schema.interfaces.UnsignedBlock; - -public class GetNewBlockResponse { - public final UnsignedBlock data; - - public GetNewBlockResponse(final BeaconBlock data) { - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/validator/PostValidatorLivenessResponse.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/validator/PostValidatorLivenessResponse.java deleted file mode 100644 index 03c22ef4f99..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/validator/PostValidatorLivenessResponse.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.validator; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; - -public class PostValidatorLivenessResponse { - - public final List data; - - @JsonCreator - public PostValidatorLivenessResponse(@JsonProperty("data") final List data) { - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/validator/ValidatorLiveness.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/validator/ValidatorLiveness.java deleted file mode 100644 index e5c5557b8ed..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v1/validator/ValidatorLiveness.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v1.validator; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class ValidatorLiveness { - @Schema(type = "string", format = "uint64") - public final UInt64 index; - - @JsonProperty("is_live") - public final boolean isLive; - - @JsonCreator - public ValidatorLiveness( - @JsonProperty("index") final UInt64 index, @JsonProperty("is_live") final boolean isLive) { - this.index = index; - this.isLive = isLive; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final ValidatorLiveness that = (ValidatorLiveness) o; - return isLive == that.isLive && Objects.equals(index, that.index); - } - - @Override - public int hashCode() { - return Objects.hash(index, isLive); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("index", index).add("isLive", isLive).toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v2/beacon/GetBlockResponseV2.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v2/beacon/GetBlockResponseV2.java deleted file mode 100644 index 6c7189990f2..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v2/beacon/GetBlockResponseV2.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v2.beacon; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import tech.pegasys.teku.api.schema.SignedBeaconBlock; -import tech.pegasys.teku.api.schema.Version; -import tech.pegasys.teku.api.schema.altair.SignedBeaconBlockAltair; -import tech.pegasys.teku.api.schema.bellatrix.SignedBeaconBlockBellatrix; -import tech.pegasys.teku.api.schema.capella.SignedBeaconBlockCapella; -import tech.pegasys.teku.api.schema.deneb.SignedBeaconBlockDeneb; -import tech.pegasys.teku.api.schema.electra.SignedBeaconBlockElectra; -import tech.pegasys.teku.api.schema.interfaces.SignedBlock; -import tech.pegasys.teku.api.schema.phase0.SignedBeaconBlockPhase0; - -@SuppressWarnings("JavaCase") -public class GetBlockResponseV2 { - - private final Version version; - - @JsonProperty("execution_optimistic") - public final boolean execution_optimistic; - - @JsonTypeInfo( - use = JsonTypeInfo.Id.NAME, - include = JsonTypeInfo.As.EXTERNAL_PROPERTY, - property = "version") - @JsonSubTypes({ - @JsonSubTypes.Type(value = SignedBeaconBlockPhase0.class, name = "phase0"), - @JsonSubTypes.Type(value = SignedBeaconBlockAltair.class, name = "altair"), - @JsonSubTypes.Type(value = SignedBeaconBlockBellatrix.class, name = "bellatrix"), - @JsonSubTypes.Type(value = SignedBeaconBlockCapella.class, name = "capella"), - @JsonSubTypes.Type(value = SignedBeaconBlockDeneb.class, name = "deneb"), - @JsonSubTypes.Type(value = SignedBeaconBlockElectra.class, name = "electra") - }) - public final SignedBlock data; - - public Version getVersion() { - return version; - } - - public SignedBlock getData() { - return data; - } - - @JsonCreator - public GetBlockResponseV2( - @JsonProperty("version") final Version version, - @JsonProperty("execution_optimistic") final boolean executionOptimistic, - @JsonProperty("data") final SignedBeaconBlock data) { - this.version = version; - this.execution_optimistic = executionOptimistic; - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v2/debug/GetStateResponseV2.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v2/debug/GetStateResponseV2.java deleted file mode 100644 index d418cf14e21..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v2/debug/GetStateResponseV2.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v2.debug; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.Version; -import tech.pegasys.teku.api.schema.interfaces.State; - -@SuppressWarnings("JavaCase") -public class GetStateResponseV2 { - - public final Version version; - - @JsonProperty("execution_optimistic") - public final boolean execution_optimistic; - - @JsonProperty("data") - public final State data; - - @JsonCreator - public GetStateResponseV2( - @JsonProperty("version") final Version version, - @JsonProperty("execution_optimistic") final boolean executionOptimistic, - @JsonProperty("data") final State data) { - this.version = version; - this.execution_optimistic = executionOptimistic; - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v2/validator/GetNewBlockResponseV2.java b/data/serializer/src/main/java/tech/pegasys/teku/api/response/v2/validator/GetNewBlockResponseV2.java deleted file mode 100644 index 75d459d73d9..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/response/v2/validator/GetNewBlockResponseV2.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.response.v2.validator; - -import tech.pegasys.teku.api.schema.Version; -import tech.pegasys.teku.api.schema.interfaces.UnsignedBlock; - -public class GetNewBlockResponseV2 { - - public final Version version; - public final UnsignedBlock data; - - public GetNewBlockResponseV2(final Version version, final UnsignedBlock data) { - this.version = version; - this.data = data; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/AggregateAndProof.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/AggregateAndProof.java deleted file mode 100644 index 9137327b2f1..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/AggregateAndProof.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; - -@SuppressWarnings("JavaCase") -public class AggregateAndProof { - - @Schema(type = "string", format = "uint64") - public final UInt64 aggregator_index; - - public final Attestation aggregate; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - public final BLSSignature selection_proof; - - @JsonCreator - public AggregateAndProof( - @JsonProperty("aggregator_index") final UInt64 aggregator_index, - @JsonProperty("aggregate") final Attestation aggregate, - @JsonProperty("selection_proof") final BLSSignature selection_proof) { - this.aggregator_index = aggregator_index; - this.aggregate = aggregate; - this.selection_proof = selection_proof; - } - - public AggregateAndProof( - final tech.pegasys.teku.spec.datastructures.operations.AggregateAndProof aggregateAndProof) { - aggregator_index = aggregateAndProof.getIndex(); - aggregate = new Attestation(aggregateAndProof.getAggregate()); - selection_proof = new BLSSignature(aggregateAndProof.getSelectionProof()); - } - - public tech.pegasys.teku.spec.datastructures.operations.AggregateAndProof - asInternalAggregateAndProof(final Spec spec) { - return asInternalAggregateAndProof(spec.atSlot(aggregate.data.slot)); - } - - public tech.pegasys.teku.spec.datastructures.operations.AggregateAndProof - asInternalAggregateAndProof(final SpecVersion specVersion) { - return specVersion - .getSchemaDefinitions() - .getAggregateAndProofSchema() - .create( - aggregator_index, - aggregate.asInternalAttestation(specVersion), - selection_proof.asInternalBLSSignature()); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Attestation.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Attestation.java deleted file mode 100644 index 71a306852a1..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Attestation.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES_SSZ; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import java.util.function.Supplier; -import org.apache.tuweni.bytes.Bytes; -import tech.pegasys.teku.infrastructure.ssz.SszData; -import tech.pegasys.teku.infrastructure.ssz.collections.SszBitvector; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.operations.AttestationSchema; - -@SuppressWarnings("JavaCase") -public class Attestation { - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES_SSZ) - public final Bytes aggregation_bits; - - public final AttestationData data; - - @JsonInclude(Include.NON_NULL) - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES_SSZ) - public final Bytes committee_bits; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - public final BLSSignature signature; - - public Attestation( - final tech.pegasys.teku.spec.datastructures.operations.Attestation attestation) { - this.aggregation_bits = attestation.getAggregationBits().sszSerialize(); - this.data = new AttestationData(attestation.getData()); - this.committee_bits = attestation.getCommitteeBits().map(SszData::sszSerialize).orElse(null); - this.signature = new BLSSignature(attestation.getAggregateSignature()); - } - - @JsonCreator - public Attestation( - @JsonProperty("aggregation_bits") final Bytes aggregation_bits, - @JsonProperty("data") final AttestationData data, - @JsonProperty("committee_bits") final Bytes committee_bits, - @JsonProperty("signature") final BLSSignature signature) { - this.aggregation_bits = aggregation_bits; - this.data = data; - this.committee_bits = committee_bits; - this.signature = signature; - } - - public tech.pegasys.teku.spec.datastructures.operations.Attestation asInternalAttestation( - final Spec spec) { - return asInternalAttestation(spec.atSlot(data.slot)); - } - - public tech.pegasys.teku.spec.datastructures.operations.Attestation asInternalAttestation( - final SpecVersion specVersion) { - final AttestationSchema attestationSchema = - specVersion.getSchemaDefinitions().getAttestationSchema(); - return attestationSchema.create( - attestationSchema.getAggregationBitsSchema().sszDeserialize(aggregation_bits), - data.asInternalAttestationData(), - signature.asInternalBLSSignature(), - attestationSchema - .getCommitteeBitsSchema() - .map( - committeeBits -> - (Supplier) () -> committeeBits.sszDeserialize(committee_bits)) - .orElse(() -> null)); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof Attestation)) { - return false; - } - Attestation that = (Attestation) o; - return Objects.equals(aggregation_bits, that.aggregation_bits) - && Objects.equals(data, that.data) - && Objects.equals(committee_bits, that.committee_bits) - && Objects.equals(signature, that.signature); - } - - @Override - public int hashCode() { - return Objects.hash(aggregation_bits, data, committee_bits, signature); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/AttestationData.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/AttestationData.java deleted file mode 100644 index 3613d082388..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/AttestationData.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@SuppressWarnings("JavaCase") -public class AttestationData { - @Schema(type = "string", format = "uint64") - public final UInt64 slot; - - @Schema(type = "string", format = "uint64") - public final UInt64 index; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 beacon_block_root; - - public final Checkpoint source; - public final Checkpoint target; - - @JsonCreator - public AttestationData( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("index") final UInt64 index, - @JsonProperty("beacon_block_root") final Bytes32 beacon_block_root, - @JsonProperty("source") final Checkpoint source, - @JsonProperty("target") final Checkpoint target) { - this.slot = slot; - this.index = index; - this.beacon_block_root = beacon_block_root; - this.source = source; - this.target = target; - } - - public AttestationData( - final tech.pegasys.teku.spec.datastructures.operations.AttestationData data) { - this.slot = data.getSlot(); - this.index = data.getIndex(); - this.beacon_block_root = data.getBeaconBlockRoot(); - this.source = new Checkpoint(data.getSource()); - this.target = new Checkpoint(data.getTarget()); - } - - public tech.pegasys.teku.spec.datastructures.operations.AttestationData - asInternalAttestationData() { - tech.pegasys.teku.spec.datastructures.state.Checkpoint src = source.asInternalCheckpoint(); - tech.pegasys.teku.spec.datastructures.state.Checkpoint tgt = target.asInternalCheckpoint(); - - return new tech.pegasys.teku.spec.datastructures.operations.AttestationData( - slot, index, beacon_block_root, src, tgt); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof AttestationData)) { - return false; - } - AttestationData that = (AttestationData) o; - return Objects.equals(slot, that.slot) - && Objects.equals(index, that.index) - && Objects.equals(beacon_block_root, that.beacon_block_root) - && Objects.equals(source, that.source) - && Objects.equals(target, that.target); - } - - @Override - public int hashCode() { - return Objects.hash(slot, index, beacon_block_root, source, target); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/AttesterSlashing.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/AttesterSlashing.java deleted file mode 100644 index 28f03ee691e..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/AttesterSlashing.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.Objects; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.operations.AttesterSlashingSchema; - -@SuppressWarnings("JavaCase") -public class AttesterSlashing { - public final IndexedAttestation attestation_1; - public final IndexedAttestation attestation_2; - - public AttesterSlashing( - final tech.pegasys.teku.spec.datastructures.operations.AttesterSlashing attesterSlashing) { - this.attestation_1 = new IndexedAttestation(attesterSlashing.getAttestation1()); - this.attestation_2 = new IndexedAttestation(attesterSlashing.getAttestation2()); - } - - @JsonCreator - public AttesterSlashing( - @JsonProperty("attestation_1") final IndexedAttestation attestation_1, - @JsonProperty("attestation_2") final IndexedAttestation attestation_2) { - this.attestation_1 = attestation_1; - this.attestation_2 = attestation_2; - } - - public tech.pegasys.teku.spec.datastructures.operations.AttesterSlashing - asInternalAttesterSlashing(final Spec spec) { - return asInternalAttesterSlashing(spec.atSlot(attestation_1.data.slot)); - } - - public tech.pegasys.teku.spec.datastructures.operations.AttesterSlashing - asInternalAttesterSlashing(final SpecVersion spec) { - final AttesterSlashingSchema attesterSlashingSchema = - spec.getSchemaDefinitions().getAttesterSlashingSchema(); - return attesterSlashingSchema.create( - attestation_1.asInternalIndexedAttestation(spec), - attestation_2.asInternalIndexedAttestation(spec)); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof AttesterSlashing that)) { - return false; - } - return Objects.equals(attestation_1, that.attestation_1) - && Objects.equals(attestation_2, that.attestation_2); - } - - @Override - public int hashCode() { - return Objects.hash(attestation_1, attestation_2); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BLSPubKey.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BLSPubKey.java deleted file mode 100644 index c3f053154d3..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BLSPubKey.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static com.google.common.base.Preconditions.checkArgument; - -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes; -import org.apache.tuweni.bytes.Bytes48; -import tech.pegasys.teku.bls.BLSPublicKey; - -@SuppressWarnings("JavaCase") -public class BLSPubKey { - /** The number of bytes in this value - i.e. 48 */ - private static final int SIZE = 48; - - private final Bytes bytes; - - public BLSPubKey(final Bytes bytes) { - checkArgument( - bytes.size() == SIZE, - "Bytes%s should be %s bytes, but was %s bytes.", - SIZE, - SIZE, - bytes.size()); - this.bytes = bytes; - } - - public BLSPubKey(final BLSPublicKey publicKey) { - this(publicKey.toSSZBytes()); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final BLSPubKey BLSSignature = (BLSPubKey) o; - return bytes.equals(BLSSignature.bytes); - } - - @Override - public int hashCode() { - return Objects.hash(bytes); - } - - @Override - public String toString() { - return bytes.toString(); - } - - public static BLSPubKey fromHexString(final String value) { - try { - return new BLSPubKey(BLSPublicKey.fromBytesCompressedValidate(Bytes48.fromHexString(value))); - } catch (IllegalArgumentException e) { - throw new PublicKeyException("Public key " + value + " is invalid: " + e.getMessage(), e); - } - } - - public String toHexString() { - return bytes.toHexString(); - } - - public Bytes toBytes() { - return bytes; - } - - public static BLSPubKey empty() { - return new BLSPubKey(Bytes.wrap(new byte[SIZE])); - } - - public BLSPublicKey asBLSPublicKey() { - return BLSPublicKey.fromSSZBytes(bytes); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BLSSignature.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BLSSignature.java deleted file mode 100644 index 6629c99917f..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BLSSignature.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static com.google.common.base.Preconditions.checkArgument; - -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes; -import tech.pegasys.teku.bls.BLSConstants; - -public class BLSSignature { - /** The number of bytes in this value - i.e. 96 */ - private static final int SIZE = BLSConstants.BLS_SIGNATURE_SIZE; - - private final Bytes bytes; - - public BLSSignature(final Bytes bytes) { - checkArgument( - bytes.size() == SIZE, - "Bytes%s should be %s bytes, but was %s bytes.", - SIZE, - SIZE, - bytes.size()); - this.bytes = bytes; - } - - public BLSSignature(final tech.pegasys.teku.bls.BLSSignature signature) { - this(signature.toBytesCompressed()); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final BLSSignature blsSignature = (BLSSignature) o; - return bytes.equals(blsSignature.bytes); - } - - @Override - public int hashCode() { - return Objects.hash(bytes); - } - - @Override - public String toString() { - return bytes.toString(); - } - - public static BLSSignature fromHexString(final String value) { - return new BLSSignature(Bytes.fromHexString(value)); - } - - public String toHexString() { - return bytes.toHexString(); - } - - public static BLSSignature empty() { - return new BLSSignature(tech.pegasys.teku.bls.BLSSignature.empty()); - } - - public final Bytes getBytes() { - return bytes; - } - - public tech.pegasys.teku.bls.BLSSignature asInternalBLSSignature() { - return tech.pegasys.teku.bls.BLSSignature.fromBytesCompressed(bytes); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BeaconBlock.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BeaconBlock.java deleted file mode 100644 index 380b170342e..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BeaconBlock.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.interfaces.UnsignedBlindedBlock; -import tech.pegasys.teku.api.schema.interfaces.UnsignedBlock; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlockSchema; - -@SuppressWarnings("JavaCase") -public class BeaconBlock implements UnsignedBlock, UnsignedBlindedBlock { - @Schema(type = "string", format = "uint64") - public final UInt64 slot; - - @Schema(type = "string", format = "uint64") - public final UInt64 proposer_index; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 parent_root; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 state_root; - - protected final BeaconBlockBody body; - - public BeaconBlockBody getBody() { - return body; - } - - protected BeaconBlock(final tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock message) { - this.slot = message.getSlot(); - this.proposer_index = message.getProposerIndex(); - this.parent_root = message.getParentRoot(); - this.state_root = message.getStateRoot(); - this.body = new BeaconBlockBody(message.getBody()); - } - - @JsonCreator - public BeaconBlock( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("proposer_index") final UInt64 proposer_index, - @JsonProperty("parent_root") final Bytes32 parent_root, - @JsonProperty("state_root") final Bytes32 state_root, - @JsonProperty("body") final BeaconBlockBody body) { - this.slot = slot; - this.proposer_index = proposer_index; - this.parent_root = parent_root; - this.state_root = state_root; - this.body = body; - } - - public BeaconBlockSchema getBeaconBlockSchema(final SpecVersion spec) { - return spec.getSchemaDefinitions().getBeaconBlockSchema(); - } - - public tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock asInternalBeaconBlock( - final Spec spec) { - final SpecVersion specVersion = spec.atSlot(slot); - return getBeaconBlockSchema(spec.atSlot(slot)) - .create( - slot, - proposer_index, - parent_root, - state_root, - body.asInternalBeaconBlockBody(specVersion)); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof BeaconBlock)) { - return false; - } - BeaconBlock that = (BeaconBlock) o; - return Objects.equals(slot, that.slot) - && Objects.equals(proposer_index, that.proposer_index) - && Objects.equals(parent_root, that.parent_root) - && Objects.equals(state_root, that.state_root) - && Objects.equals(body, that.body); - } - - @Override - public int hashCode() { - return Objects.hash(slot, proposer_index, parent_root, state_root, body); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BeaconBlockBody.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BeaconBlockBody.java deleted file mode 100644 index 0f68cb67b50..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BeaconBlockBody.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import java.util.Objects; -import java.util.function.Function; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.infrastructure.async.SafeFuture; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBodyBuilder; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBodySchema; - -@SuppressWarnings("JavaCase") -public class BeaconBlockBody { - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - public final BLSSignature randao_reveal; - - public final Eth1Data eth1_data; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 graffiti; - - public final List proposer_slashings; - public final List attester_slashings; - public final List attestations; - public final List deposits; - public final List voluntary_exits; - - @JsonCreator - public BeaconBlockBody( - @JsonProperty("randao_reveal") final BLSSignature randao_reveal, - @JsonProperty("eth1_data") final Eth1Data eth1_data, - @JsonProperty("graffiti") final Bytes32 graffiti, - @JsonProperty("proposer_slashings") final List proposer_slashings, - @JsonProperty("attester_slashings") final List attester_slashings, - @JsonProperty("attestations") final List attestations, - @JsonProperty("deposits") final List deposits, - @JsonProperty("voluntary_exits") final List voluntary_exits) { - this.randao_reveal = randao_reveal; - this.eth1_data = eth1_data; - this.graffiti = graffiti; - this.proposer_slashings = proposer_slashings; - this.attester_slashings = attester_slashings; - this.attestations = attestations; - this.deposits = deposits; - this.voluntary_exits = voluntary_exits; - } - - public BeaconBlockBody( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody body) { - this.randao_reveal = new BLSSignature(body.getRandaoReveal().toSSZBytes()); - this.eth1_data = new Eth1Data(body.getEth1Data()); - this.graffiti = body.getGraffiti(); - this.proposer_slashings = - body.getProposerSlashings().stream().map(ProposerSlashing::new).toList(); - this.attester_slashings = - body.getAttesterSlashings().stream().map(AttesterSlashing::new).toList(); - this.attestations = body.getAttestations().stream().map(Attestation::new).toList(); - this.deposits = body.getDeposits().stream().map(Deposit::new).toList(); - this.voluntary_exits = body.getVoluntaryExits().stream().map(SignedVoluntaryExit::new).toList(); - } - - public tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody - asInternalBeaconBlockBody( - final SpecVersion spec, - final Function> builderRef) { - final BeaconBlockBodySchema schema = getBeaconBlockBodySchema(spec); - return schema - .createBlockBody( - builder -> - SafeFuture.allOf( - builderRef.apply(builder), - SafeFuture.of( - () -> - builder - .randaoReveal(randao_reveal.asInternalBLSSignature()) - .eth1Data( - new tech.pegasys.teku.spec.datastructures.blocks.Eth1Data( - eth1_data.deposit_root, - eth1_data.deposit_count, - eth1_data.block_hash)) - .graffiti(graffiti) - .attestations( - attestations.stream() - .map(attestation -> attestation.asInternalAttestation(spec)) - .collect(schema.getAttestationsSchema().collector())) - .proposerSlashings( - proposer_slashings.stream() - .map(ProposerSlashing::asInternalProposerSlashing) - .collect(schema.getProposerSlashingsSchema().collector())) - .attesterSlashings( - attester_slashings.stream() - .map(slashing -> slashing.asInternalAttesterSlashing(spec)) - .collect(schema.getAttesterSlashingsSchema().collector())) - .deposits( - deposits.stream() - .map(Deposit::asInternalDeposit) - .collect(schema.getDepositsSchema().collector())) - .voluntaryExits( - voluntary_exits.stream() - .map(SignedVoluntaryExit::asInternalSignedVoluntaryExit) - .collect(schema.getVoluntaryExitsSchema().collector()))))) - .join(); - } - - @JsonIgnore - public boolean isBlinded() { - return false; - } - - public BeaconBlockBodySchema getBeaconBlockBodySchema(final SpecVersion spec) { - return spec.getSchemaDefinitions().getBeaconBlockBodySchema(); - } - - public tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody - asInternalBeaconBlockBody(final SpecVersion spec) { - return asInternalBeaconBlockBody(spec, (builder) -> SafeFuture.COMPLETE); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof BeaconBlockBody)) { - return false; - } - BeaconBlockBody that = (BeaconBlockBody) o; - return Objects.equals(randao_reveal, that.randao_reveal) - && Objects.equals(eth1_data, that.eth1_data) - && Objects.equals(graffiti, that.graffiti) - && Objects.equals(proposer_slashings, that.proposer_slashings) - && Objects.equals(attester_slashings, that.attester_slashings) - && Objects.equals(attestations, that.attestations) - && Objects.equals(deposits, that.deposits) - && Objects.equals(voluntary_exits, that.voluntary_exits); - } - - @Override - public int hashCode() { - return Objects.hash( - randao_reveal, - eth1_data, - graffiti, - proposer_slashings, - attester_slashings, - attestations, - deposits, - voluntary_exits); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BeaconBlockHeader.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BeaconBlockHeader.java deleted file mode 100644 index 062f467e280..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BeaconBlockHeader.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@SuppressWarnings("JavaCase") -public class BeaconBlockHeader { - @Schema(type = "string", format = "uint64") - public final UInt64 slot; - - @Schema(type = "string", format = "uint64") - public final UInt64 proposer_index; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 parent_root; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 state_root; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 body_root; - - @JsonCreator - public BeaconBlockHeader( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("proposer_index") final UInt64 proposer_index, - @JsonProperty("parent_root") final Bytes32 parent_root, - @JsonProperty("state_root") final Bytes32 state_root, - @JsonProperty("body_root") final Bytes32 body_root) { - this.slot = slot; - this.proposer_index = proposer_index; - this.parent_root = parent_root; - this.state_root = state_root; - this.body_root = body_root; - } - - public BeaconBlockHeader( - final tech.pegasys.teku.spec.datastructures.blocks.BeaconBlockHeader header) { - this.slot = header.getSlot(); - this.proposer_index = header.getProposerIndex(); - this.parent_root = header.getParentRoot(); - this.state_root = header.getStateRoot(); - this.body_root = header.getBodyRoot(); - } - - public tech.pegasys.teku.spec.datastructures.blocks.BeaconBlockHeader - asInternalBeaconBlockHeader() { - return new tech.pegasys.teku.spec.datastructures.blocks.BeaconBlockHeader( - slot, proposer_index, parent_root, state_root, body_root); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final BeaconBlockHeader that = (BeaconBlockHeader) o; - return Objects.equals(slot, that.slot) - && Objects.equals(proposer_index, that.proposer_index) - && Objects.equals(parent_root, that.parent_root) - && Objects.equals(state_root, that.state_root) - && Objects.equals(body_root, that.body_root); - } - - @Override - public int hashCode() { - return Objects.hash(slot, proposer_index, parent_root, state_root, body_root); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("slot", slot) - .add("proposer_index", proposer_index) - .add("parent_root", parent_root) - .add("state_root", state_root) - .add("body_root", body_root) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BeaconState.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BeaconState.java deleted file mode 100644 index 8a27a05288d..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/BeaconState.java +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES_SSZ; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.interfaces.State; -import tech.pegasys.teku.infrastructure.ssz.collections.SszBitvector; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlockAndState; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconStateSchema; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.MutableBeaconState; - -@SuppressWarnings("JavaCase") -public abstract class BeaconState implements State { - @Schema(type = "string", format = "uint64") - public final UInt64 genesis_time; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 genesis_validators_root; - - @Schema(type = "string", format = "uint64") - public final UInt64 slot; - - public final Fork fork; - public final BeaconBlockHeader latest_block_header; - - @ArraySchema( - schema = @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32)) - public final List block_roots; - - @ArraySchema( - schema = @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32)) - public final List state_roots; - - @ArraySchema( - schema = @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32)) - public final List historical_roots; - - public final Eth1Data eth1_data; - public final List eth1_data_votes; - - @Schema(type = "string", format = "uint64") - public final UInt64 eth1_deposit_index; - - public final List validators; - - @ArraySchema(schema = @Schema(type = "string", format = "uint64")) - public final List balances; - - @ArraySchema( - schema = @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32)) - public final List randao_mixes; - - @ArraySchema(schema = @Schema(type = "string", format = "uint64")) - public final List slashings; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES_SSZ) - public final SszBitvector justification_bits; - - public final Checkpoint previous_justified_checkpoint; - public final Checkpoint current_justified_checkpoint; - public final Checkpoint finalized_checkpoint; - - @JsonCreator - protected BeaconState( - @JsonProperty("genesis_time") final UInt64 genesis_time, - @JsonProperty("genesis_validators_root") final Bytes32 genesis_validators_root, - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("fork") final Fork fork, - @JsonProperty("latest_block_header") final BeaconBlockHeader latest_block_header, - @JsonProperty("block_roots") final List block_roots, - @JsonProperty("state_roots") final List state_roots, - @JsonProperty("historical_roots") final List historical_roots, - @JsonProperty("eth1_data") final Eth1Data eth1_data, - @JsonProperty("eth1_data_votes") final List eth1_data_votes, - @JsonProperty("eth1_deposit_index") final UInt64 eth1_deposit_index, - @JsonProperty("validators") final List validators, - @JsonProperty("balances") final List balances, - @JsonProperty("randao_mixes") final List randao_mixes, - @JsonProperty("slashings") final List slashings, - @JsonProperty("justification_bits") final SszBitvector justification_bits, - @JsonProperty("previous_justified_checkpoint") final Checkpoint previous_justified_checkpoint, - @JsonProperty("current_justified_checkpoint") final Checkpoint current_justified_checkpoint, - @JsonProperty("finalized_checkpoint") final Checkpoint finalized_checkpoint) { - this.genesis_time = genesis_time; - this.genesis_validators_root = genesis_validators_root; - this.slot = slot; - this.fork = fork; - this.latest_block_header = latest_block_header; - this.block_roots = block_roots; - this.state_roots = state_roots; - this.historical_roots = historical_roots; - this.eth1_data = eth1_data; - this.eth1_data_votes = eth1_data_votes; - this.eth1_deposit_index = eth1_deposit_index; - this.validators = validators; - this.balances = balances; - this.randao_mixes = randao_mixes; - this.slashings = slashings; - this.justification_bits = justification_bits; - this.previous_justified_checkpoint = previous_justified_checkpoint; - this.current_justified_checkpoint = current_justified_checkpoint; - this.finalized_checkpoint = finalized_checkpoint; - } - - protected BeaconState(final BeaconBlockAndState blockAndState) { - this(blockAndState.getState()); - } - - protected BeaconState( - final tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState beaconState) { - this.genesis_time = beaconState.getGenesisTime(); - this.genesis_validators_root = beaconState.getGenesisValidatorsRoot(); - this.slot = beaconState.getSlot(); - this.fork = new Fork(beaconState.getFork()); - this.latest_block_header = new BeaconBlockHeader(beaconState.getLatestBlockHeader()); - this.block_roots = beaconState.getBlockRoots().asListUnboxed(); - this.state_roots = beaconState.getStateRoots().asListUnboxed(); - this.historical_roots = beaconState.getHistoricalRoots().asListUnboxed(); - this.eth1_data = new Eth1Data(beaconState.getEth1Data()); - this.eth1_data_votes = beaconState.getEth1DataVotes().stream().map(Eth1Data::new).toList(); - this.eth1_deposit_index = beaconState.getEth1DepositIndex(); - this.validators = beaconState.getValidators().stream().map(Validator::new).toList(); - this.balances = beaconState.getBalances().asListUnboxed(); - this.randao_mixes = beaconState.getRandaoMixes().asListUnboxed(); - this.slashings = beaconState.getSlashings().asListUnboxed(); - this.justification_bits = beaconState.getJustificationBits(); - this.previous_justified_checkpoint = - new Checkpoint(beaconState.getPreviousJustifiedCheckpoint()); - this.current_justified_checkpoint = new Checkpoint(beaconState.getCurrentJustifiedCheckpoint()); - this.finalized_checkpoint = new Checkpoint(beaconState.getFinalizedCheckpoint()); - } - - public tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState asInternalBeaconState( - final Spec spec) { - final BeaconStateSchema schema = - spec.atSlot(slot).getSchemaDefinitions().getBeaconStateSchema(); - return schema - .createEmpty() - .updated( - state -> { - state.setGenesisTime(genesis_time); - state.setGenesisValidatorsRoot(genesis_validators_root); - state.setSlot(slot); - state.setFork(fork.asInternalFork()); - state.setLatestBlockHeader(latest_block_header.asInternalBeaconBlockHeader()); - state.getBlockRoots().setAllElements(block_roots); - state.getStateRoots().setAllElements(state_roots); - state.getHistoricalRoots().setAllElements(historical_roots); - state.setEth1Data(eth1_data.asInternalEth1Data()); - state - .getEth1DataVotes() - .setAll(eth1_data_votes.stream().map(Eth1Data::asInternalEth1Data).toList()); - state.setEth1DepositIndex(eth1_deposit_index); - state - .getValidators() - .setAll(validators.stream().map(Validator::asInternalValidator).toList()); - state.getBalances().setAllElements(balances); - state.getRandaoMixes().setAllElements(randao_mixes); - state.getSlashings().setAllElements(slashings); - SszBitvector newJustificationBits = - schema.getJustificationBitsSchema().ofBits(justification_bits.getAllSetBits()); - state.setJustificationBits(newJustificationBits); - state.setPreviousJustifiedCheckpoint( - previous_justified_checkpoint.asInternalCheckpoint()); - state.setCurrentJustifiedCheckpoint( - current_justified_checkpoint.asInternalCheckpoint()); - state.setFinalizedCheckpoint(finalized_checkpoint.asInternalCheckpoint()); - - applyAdditionalFields(state, spec.atSlot(state.getSlot())); - }); - } - - protected abstract void applyAdditionalFields( - final MutableBeaconState state, final SpecVersion specVersion); -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Checkpoint.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Checkpoint.java deleted file mode 100644 index 7f321452844..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Checkpoint.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import io.swagger.v3.oas.annotations.media.Schema; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class Checkpoint { - public static final Checkpoint EMPTY = new Checkpoint(UInt64.ZERO, Bytes32.ZERO); - - @Schema(type = "string", format = "uint64") - public final UInt64 epoch; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 root; - - public Checkpoint(final tech.pegasys.teku.spec.datastructures.state.Checkpoint checkpoint) { - this.epoch = checkpoint.getEpoch(); - this.root = checkpoint.getRoot(); - } - - @JsonCreator - public Checkpoint( - @JsonProperty("epoch") final UInt64 epoch, @JsonProperty("root") final Bytes32 root) { - this.epoch = epoch; - this.root = root; - } - - public tech.pegasys.teku.spec.datastructures.state.Checkpoint asInternalCheckpoint() { - return new tech.pegasys.teku.spec.datastructures.state.Checkpoint(epoch, root); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof Checkpoint)) { - return false; - } - Checkpoint that = (Checkpoint) o; - return Objects.equal(epoch, that.epoch) && Objects.equal(root, that.root); - } - - @Override - public int hashCode() { - return Objects.hashCode(epoch, root); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("epoch", epoch).add("root", root).toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Deposit.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Deposit.java deleted file mode 100644 index a182b0af1df..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Deposit.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes32; - -public class Deposit { - @ArraySchema( - schema = @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32)) - public final List proof; - - public final DepositData data; - - public Deposit(final tech.pegasys.teku.spec.datastructures.operations.Deposit deposit) { - this.proof = deposit.getProof().streamUnboxed().toList(); - this.data = new DepositData(deposit.getData()); - } - - @JsonCreator - public Deposit( - @JsonProperty("proof") final List proof, - @JsonProperty("data") final DepositData data) { - this.proof = proof; - this.data = data; - } - - public tech.pegasys.teku.spec.datastructures.operations.Deposit asInternalDeposit() { - return new tech.pegasys.teku.spec.datastructures.operations.Deposit( - tech.pegasys.teku.spec.datastructures.operations.Deposit.SSZ_SCHEMA - .getProofSchema() - .of(proof), - data.asInternalDepositData()); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof Deposit)) { - return false; - } - Deposit deposit = (Deposit) o; - return Objects.equals(proof, deposit.proof) && Objects.equals(data, deposit.data); - } - - @Override - public int hashCode() { - return Objects.hash(proof, data); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/DepositData.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/DepositData.java deleted file mode 100644 index 1c402835de9..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/DepositData.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES48; -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.bls.BLSPublicKey; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@SuppressWarnings("JavaCase") -public class DepositData { - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES48) - public final BLSPubKey pubkey; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 withdrawal_credentials; - - @Schema(type = "string", format = "uint64") - public final UInt64 amount; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - public final BLSSignature signature; - - public DepositData( - final tech.pegasys.teku.spec.datastructures.operations.DepositData depositData) { - this.pubkey = new BLSPubKey(depositData.getPubkey().toSSZBytes()); - this.withdrawal_credentials = depositData.getWithdrawalCredentials(); - this.amount = depositData.getAmount(); - this.signature = new BLSSignature(depositData.getSignature()); - } - - public DepositData( - @JsonProperty("pubkey") final BLSPubKey pubkey, - @JsonProperty("withdrawal_credentials") final Bytes32 withdrawal_credentials, - @JsonProperty("amount") final UInt64 amount, - @JsonProperty("signature") final BLSSignature signature) { - this.pubkey = pubkey; - this.withdrawal_credentials = withdrawal_credentials; - this.amount = amount; - this.signature = signature; - } - - public tech.pegasys.teku.spec.datastructures.operations.DepositData asInternalDepositData() { - return new tech.pegasys.teku.spec.datastructures.operations.DepositData( - BLSPublicKey.fromSSZBytes(pubkey.toBytes()), - withdrawal_credentials, - amount, - signature.asInternalBLSSignature()); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof DepositData)) { - return false; - } - DepositData that = (DepositData) o; - return Objects.equals(pubkey, that.pubkey) - && Objects.equals(withdrawal_credentials, that.withdrawal_credentials) - && Objects.equals(amount, that.amount) - && Objects.equals(signature, that.signature); - } - - @Override - public int hashCode() { - return Objects.hash(pubkey, withdrawal_credentials, amount, signature); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Eth1Data.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Eth1Data.java deleted file mode 100644 index 1b8c9e55b8e..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Eth1Data.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@SuppressWarnings("JavaCase") -public class Eth1Data { - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 deposit_root; - - @Schema(type = "string", format = "uint64") - public final UInt64 deposit_count; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 block_hash; - - public Eth1Data(final tech.pegasys.teku.spec.datastructures.blocks.Eth1Data eth1Data) { - deposit_count = eth1Data.getDepositCount(); - deposit_root = eth1Data.getDepositRoot(); - block_hash = eth1Data.getBlockHash(); - } - - @JsonCreator - public Eth1Data( - @JsonProperty("deposit_root") final Bytes32 deposit_root, - @JsonProperty("deposit_count") final UInt64 deposit_count, - @JsonProperty("block_hash") final Bytes32 block_hash) { - this.deposit_root = deposit_root; - this.deposit_count = deposit_count; - this.block_hash = block_hash; - } - - public tech.pegasys.teku.spec.datastructures.blocks.Eth1Data asInternalEth1Data() { - return new tech.pegasys.teku.spec.datastructures.blocks.Eth1Data( - deposit_root, deposit_count, block_hash); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof Eth1Data)) { - return false; - } - Eth1Data eth1Data = (Eth1Data) o; - return Objects.equals(deposit_root, eth1Data.deposit_root) - && Objects.equals(deposit_count, eth1Data.deposit_count) - && Objects.equals(block_hash, eth1Data.block_hash); - } - - @Override - public int hashCode() { - return Objects.hash(deposit_root, deposit_count, block_hash); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/ExecutionPayload.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/ExecutionPayload.java deleted file mode 100644 index 58bd233de74..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/ExecutionPayload.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import java.util.Optional; -import tech.pegasys.teku.api.schema.bellatrix.ExecutionPayloadBellatrix; -import tech.pegasys.teku.api.schema.capella.ExecutionPayloadCapella; -import tech.pegasys.teku.api.schema.deneb.ExecutionPayloadDeneb; - -public interface ExecutionPayload { - - default Optional toVersionBellatrix() { - return Optional.empty(); - } - - default Optional toVersionCapella() { - return Optional.empty(); - } - - default Optional toVersionDeneb() { - return Optional.empty(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/ExecutionPayloadHeader.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/ExecutionPayloadHeader.java deleted file mode 100644 index 2d21ee509c8..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/ExecutionPayloadHeader.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import java.util.Optional; -import tech.pegasys.teku.api.schema.bellatrix.ExecutionPayloadHeaderBellatrix; -import tech.pegasys.teku.api.schema.capella.ExecutionPayloadHeaderCapella; -import tech.pegasys.teku.api.schema.deneb.ExecutionPayloadHeaderDeneb; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeaderSchema; - -public interface ExecutionPayloadHeader { - tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeader - asInternalExecutionPayloadHeader(ExecutionPayloadHeaderSchema schema); - - default Optional toVersionBellatrix() { - return Optional.empty(); - } - - default Optional toVersionCapella() { - return Optional.empty(); - } - - default Optional toVersionDeneb() { - return Optional.empty(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Fork.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Fork.java deleted file mode 100644 index 2ca5e718d8d..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Fork.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES4; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_BYTES4; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import tech.pegasys.teku.infrastructure.bytes.Bytes4; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@SuppressWarnings("JavaCase") -public class Fork { - @Schema(type = "string", pattern = PATTERN_BYTES4, description = DESCRIPTION_BYTES4) - public Bytes4 previous_version; - - @Schema(type = "string", pattern = PATTERN_BYTES4, description = DESCRIPTION_BYTES4) - public Bytes4 current_version; - - @Schema(type = "string") - public UInt64 epoch; - - @JsonCreator - public Fork( - @JsonProperty("previous_version") final Bytes4 previous_version, - @JsonProperty("current_version") final Bytes4 current_version, - @JsonProperty("epoch") final UInt64 epoch) { - this.previous_version = previous_version; - this.current_version = current_version; - this.epoch = epoch; - } - - public Fork(final tech.pegasys.teku.spec.datastructures.state.Fork fork) { - this.previous_version = fork.getPreviousVersion(); - this.current_version = fork.getCurrentVersion(); - this.epoch = fork.getEpoch(); - } - - public tech.pegasys.teku.spec.datastructures.state.Fork asInternalFork() { - return new tech.pegasys.teku.spec.datastructures.state.Fork( - previous_version, current_version, epoch); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final Fork fork = (Fork) o; - return Objects.equals(previous_version, fork.previous_version) - && Objects.equals(current_version, fork.current_version) - && Objects.equals(epoch, fork.epoch); - } - - @Override - public int hashCode() { - return Objects.hash(previous_version, current_version, epoch); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("previous_version", previous_version) - .add("current_version", current_version) - .add("epoch", epoch) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/IndexedAttestation.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/IndexedAttestation.java deleted file mode 100644 index e458e555320..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/IndexedAttestation.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import java.util.Objects; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.operations.IndexedAttestationSchema; - -@SuppressWarnings("JavaCase") -public class IndexedAttestation { - @ArraySchema(schema = @Schema(type = "string", format = "uint64")) - public final List attesting_indices; - - public final AttestationData data; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - public final BLSSignature signature; - - public IndexedAttestation( - final tech.pegasys.teku.spec.datastructures.operations.IndexedAttestation - indexedAttestation) { - this.attesting_indices = indexedAttestation.getAttestingIndices().streamUnboxed().toList(); - this.data = new AttestationData(indexedAttestation.getData()); - this.signature = new BLSSignature(indexedAttestation.getSignature()); - } - - @JsonCreator - public IndexedAttestation( - @JsonProperty("attesting_indices") final List attesting_indices, - @JsonProperty("data") final AttestationData data, - @JsonProperty("signature") final BLSSignature signature) { - this.attesting_indices = attesting_indices; - this.data = data; - this.signature = signature; - } - - public tech.pegasys.teku.spec.datastructures.operations.IndexedAttestation - asInternalIndexedAttestation(final Spec spec) { - return asInternalIndexedAttestation(spec.atSlot(data.slot)); - } - - public tech.pegasys.teku.spec.datastructures.operations.IndexedAttestation - asInternalIndexedAttestation(final SpecVersion spec) { - final IndexedAttestationSchema indexedAttestationSchema = - spec.getSchemaDefinitions().getIndexedAttestationSchema(); - return indexedAttestationSchema.create( - indexedAttestationSchema.getAttestingIndicesSchema().of(attesting_indices), - data.asInternalAttestationData(), - signature.asInternalBLSSignature()); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof IndexedAttestation that)) { - return false; - } - return Objects.equals(attesting_indices, that.attesting_indices) - && Objects.equals(data, that.data) - && Objects.equals(signature, that.signature); - } - - @Override - public int hashCode() { - return Objects.hash(attesting_indices, data, signature); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/KZGCommitment.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/KZGCommitment.java deleted file mode 100644 index ee914b16e2f..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/KZGCommitment.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static com.google.common.base.Preconditions.checkArgument; - -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes; - -public class KZGCommitment { - /** The number of bytes in this value - i.e. 48 */ - private static final int SIZE = 48; - - private final Bytes bytes; - - public KZGCommitment(final Bytes bytes) { - checkArgument( - bytes.size() == SIZE, - "Bytes%s should be %s bytes, but was %s bytes.", - SIZE, - SIZE, - bytes.size()); - this.bytes = bytes; - } - - public KZGCommitment(final tech.pegasys.teku.kzg.KZGCommitment kzgCommitment) { - this(kzgCommitment.toSSZBytes()); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final KZGCommitment other = (KZGCommitment) o; - return bytes.equals(other.bytes); - } - - @Override - public int hashCode() { - return Objects.hash(bytes); - } - - @Override - public String toString() { - return bytes.toString(); - } - - public static KZGCommitment fromHexString(final String value) { - try { - return new KZGCommitment(tech.pegasys.teku.kzg.KZGCommitment.fromHexString(value)); - } catch (IllegalArgumentException e) { - throw new IllegalArgumentException( - "KZGCommitment " + value + " is invalid: " + e.getMessage(), e); - } - } - - public String toHexString() { - return bytes.toHexString(); - } - - public Bytes toBytes() { - return bytes; - } - - public static KZGCommitment empty() { - return new KZGCommitment(Bytes.wrap(new byte[SIZE])); - } - - public tech.pegasys.teku.kzg.KZGCommitment asInternalKZGCommitment() { - return tech.pegasys.teku.kzg.KZGCommitment.fromSSZBytes(bytes); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/KZGProof.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/KZGProof.java deleted file mode 100644 index a8229f15b05..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/KZGProof.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static com.google.common.base.Preconditions.checkArgument; - -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes; - -public class KZGProof { - /** The number of bytes in this value - i.e. 48 */ - private static final int SIZE = 48; - - private final Bytes bytes; - - public KZGProof(final Bytes bytes) { - checkArgument( - bytes.size() == SIZE, - "Bytes%s should be %s bytes, but was %s bytes.", - SIZE, - SIZE, - bytes.size()); - this.bytes = bytes; - } - - public KZGProof(final tech.pegasys.teku.kzg.KZGProof kzgProof) { - this(kzgProof.toSSZBytes()); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final KZGProof other = (KZGProof) o; - return bytes.equals(other.bytes); - } - - @Override - public int hashCode() { - return Objects.hash(bytes); - } - - @Override - public String toString() { - return bytes.toString(); - } - - public static KZGProof fromHexString(final String value) { - try { - return new KZGProof(tech.pegasys.teku.kzg.KZGProof.fromHexString(value)); - } catch (IllegalArgumentException e) { - throw new IllegalArgumentException("KZGProof " + value + " is invalid: " + e.getMessage(), e); - } - } - - public String toHexString() { - return bytes.toHexString(); - } - - public Bytes toBytes() { - return bytes; - } - - public static KZGProof empty() { - return new KZGProof(Bytes.wrap(new byte[SIZE])); - } - - public tech.pegasys.teku.kzg.KZGProof asInternalKZGProof() { - return tech.pegasys.teku.kzg.KZGProof.fromSSZBytes(bytes); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/LogLevel.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/LogLevel.java deleted file mode 100644 index 8ef53415650..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/LogLevel.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonGetter; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import java.util.Optional; -import org.apache.logging.log4j.Level; - -public class LogLevel { - - private final Level level; - private String[] logFilter; - - @JsonCreator - public LogLevel(@JsonProperty("level") final String level) { - this.level = Level.valueOf(level); - } - - @JsonSetter("log_filter") - public void setLogFilter(final String[] logFilter) { - this.logFilter = logFilter; - } - - public Level getLevel() { - return level; - } - - @JsonGetter("level") - public String getLevelAsString() { - return level.toString(); - } - - @JsonGetter("log_filter") - public Optional getLogFilter() { - return Optional.ofNullable(logFilter); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Metadata.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Metadata.java deleted file mode 100644 index cb9482eadf0..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Metadata.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_UINT64; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_UINT8; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Locale; -import java.util.Objects; -import tech.pegasys.teku.spec.datastructures.networking.libp2p.rpc.metadata.MetadataMessage; -import tech.pegasys.teku.spec.datastructures.networking.libp2p.rpc.metadata.versions.altair.MetadataMessageAltair; -import tech.pegasys.teku.spec.datastructures.networking.libp2p.rpc.metadata.versions.fulu.MetadataMessageFulu; - -@Schema( - description = - "Based on eth2 [Metadata object]" - + "(https://github.com/ethereum/consensus-specs/blob/v0.12.2/specs/phase0/p2p-interface.md#metadata)") -public class Metadata { - @JsonProperty("seq_number") - @Schema( - type = "string", - pattern = PATTERN_UINT64, - description = - "Uint64 starting at 0 used to version the node's metadata. " - + "If any other field in the local MetaData changes, the node MUST increment seq_number by 1.") - public final String sequenceNumber; - - @JsonProperty("attnets") - @Schema( - type = "string", - pattern = "^0x[a-fA-F0-9]{2,}$", - description = - "Bitvector representing the node's persistent attestation subnet subscriptions.") - public final String attestationSubnetSubscriptions; - - @JsonProperty("syncnets") - @Schema( - type = "string", - pattern = "^0x[a-fA-F0-9]{2,}$", - description = - "Bitvector representing the node's persistent attestation subnet subscriptions.") - @JsonInclude(JsonInclude.Include.NON_NULL) - public final String syncCommitteeSubscriptions; - - @JsonProperty("custody_group_count") - @Schema( - type = "string", - pattern = PATTERN_UINT8, - description = "Uint8 value representing the node's custody group count") - public final String custodyGroupCount; - - @JsonCreator - public Metadata( - @JsonProperty("seq_number") final String sequenceNumber, - @JsonProperty("attnets") final String attestationSubnetSubscriptions, - @JsonProperty("syncnets") final String syncCommitteeSubscriptions, - @JsonProperty("custody_group_count") final String custodyGroupCount) { - this.sequenceNumber = sequenceNumber; - this.attestationSubnetSubscriptions = attestationSubnetSubscriptions; - this.syncCommitteeSubscriptions = syncCommitteeSubscriptions; - this.custodyGroupCount = custodyGroupCount; - } - - public Metadata(final MetadataMessage metadataMessage) { - this.sequenceNumber = metadataMessage.getSeqNumber().toString(); - this.attestationSubnetSubscriptions = - metadataMessage.getAttnets().sszSerialize().toHexString().toLowerCase(Locale.ROOT); - - if (metadataMessage instanceof MetadataMessageFulu) { - this.syncCommitteeSubscriptions = - ((MetadataMessageFulu) metadataMessage) - .getSyncnets() - .sszSerialize() - .toHexString() - .toLowerCase(Locale.ROOT); - this.custodyGroupCount = - ((MetadataMessageFulu) metadataMessage).getCustodyGroupCount().toString(); - } else if (metadataMessage instanceof MetadataMessageAltair) { - this.syncCommitteeSubscriptions = - ((MetadataMessageAltair) metadataMessage) - .getSyncnets() - .sszSerialize() - .toHexString() - .toLowerCase(Locale.ROOT); - this.custodyGroupCount = null; - } else { - this.syncCommitteeSubscriptions = null; - this.custodyGroupCount = null; - } - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final Metadata metadata = (Metadata) o; - return Objects.equals(sequenceNumber, metadata.sequenceNumber) - && Objects.equals(attestationSubnetSubscriptions, metadata.attestationSubnetSubscriptions) - && Objects.equals(syncCommitteeSubscriptions, metadata.syncCommitteeSubscriptions) - && Objects.equals(custodyGroupCount, metadata.custodyGroupCount); - } - - @Override - public int hashCode() { - return Objects.hash( - sequenceNumber, - attestationSubnetSubscriptions, - syncCommitteeSubscriptions, - custodyGroupCount); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/PendingAttestation.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/PendingAttestation.java deleted file mode 100644 index 4fb9aedb60c..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/PendingAttestation.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES_SSZ; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.datastructures.state.PendingAttestation.PendingAttestationSchema; - -@SuppressWarnings("JavaCase") -public class PendingAttestation { - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES_SSZ) - public final Bytes aggregation_bits; - - public final AttestationData data; - - @Schema(type = "string", format = "uint64") - public final UInt64 inclusion_delay; - - @Schema(type = "string", format = "uint64") - public final UInt64 proposer_index; - - @JsonCreator - public PendingAttestation( - @JsonProperty("aggregation_bits") final Bytes aggregation_bits, - @JsonProperty("data") final AttestationData data, - @JsonProperty("inclusion_delay") final UInt64 inclusion_delay, - @JsonProperty("proposer_index") final UInt64 proposer_index) { - this.aggregation_bits = aggregation_bits; - this.data = data; - this.inclusion_delay = inclusion_delay; - this.proposer_index = proposer_index; - } - - public PendingAttestation( - final tech.pegasys.teku.spec.datastructures.state.PendingAttestation pendingAttestation) { - this.aggregation_bits = pendingAttestation.getAggregationBits().sszSerialize(); - this.data = new AttestationData(pendingAttestation.getData()); - this.inclusion_delay = pendingAttestation.getInclusionDelay(); - this.proposer_index = pendingAttestation.getProposerIndex(); - } - - public tech.pegasys.teku.spec.datastructures.state.PendingAttestation - asInternalPendingAttestation(final PendingAttestationSchema pendingAttestationSchema) { - return pendingAttestationSchema.create( - pendingAttestationSchema.getAggregationBitfieldSchema().sszDeserialize(aggregation_bits), - data.asInternalAttestationData(), - inclusion_delay, - proposer_index); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof PendingAttestation)) { - return false; - } - PendingAttestation that = (PendingAttestation) o; - return Objects.equals(aggregation_bits, that.aggregation_bits) - && Objects.equals(data, that.data) - && Objects.equals(inclusion_delay, that.inclusion_delay) - && Objects.equals(proposer_index, that.proposer_index); - } - - @Override - public int hashCode() { - return Objects.hash(aggregation_bits, data, inclusion_delay, proposer_index); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/ProposerSlashing.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/ProposerSlashing.java deleted file mode 100644 index 0d0ca4db104..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/ProposerSlashing.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.Objects; - -@SuppressWarnings("JavaCase") -public class ProposerSlashing { - public final SignedBeaconBlockHeader signed_header_1; - public final SignedBeaconBlockHeader signed_header_2; - - public ProposerSlashing( - final tech.pegasys.teku.spec.datastructures.operations.ProposerSlashing proposerSlashing) { - signed_header_1 = new SignedBeaconBlockHeader(proposerSlashing.getHeader1()); - signed_header_2 = new SignedBeaconBlockHeader(proposerSlashing.getHeader2()); - } - - @JsonCreator - public ProposerSlashing( - @JsonProperty("signed_header_1") final SignedBeaconBlockHeader header_1, - @JsonProperty("signed_header_2") final SignedBeaconBlockHeader header_2) { - this.signed_header_1 = header_1; - this.signed_header_2 = header_2; - } - - public tech.pegasys.teku.spec.datastructures.operations.ProposerSlashing - asInternalProposerSlashing() { - return new tech.pegasys.teku.spec.datastructures.operations.ProposerSlashing( - signed_header_1.asInternalSignedBeaconBlockHeader(), - signed_header_2.asInternalSignedBeaconBlockHeader()); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof ProposerSlashing)) { - return false; - } - ProposerSlashing that = (ProposerSlashing) o; - return Objects.equals(signed_header_1, that.signed_header_1) - && Objects.equals(signed_header_2, that.signed_header_2); - } - - @Override - public int hashCode() { - return Objects.hash(signed_header_1, signed_header_2); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Root.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Root.java deleted file mode 100644 index c7dd95d157c..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Root.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.Objects; -import io.swagger.v3.oas.annotations.media.Schema; -import org.apache.tuweni.bytes.Bytes32; - -public class Root { - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 root; - - @JsonCreator - public Root(@JsonProperty("root") final Bytes32 root) { - this.root = root; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof Root)) { - return false; - } - Root root1 = (Root) o; - return Objects.equal(root, root1.root); - } - - @Override - public int hashCode() { - return Objects.hashCode(root); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedAggregateAndProof.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedAggregateAndProof.java deleted file mode 100644 index 63c22385828..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedAggregateAndProof.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; - -public class SignedAggregateAndProof { - - public final AggregateAndProof message; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - public final BLSSignature signature; - - @JsonCreator - public SignedAggregateAndProof( - @JsonProperty("message") final AggregateAndProof message, - @JsonProperty("signature") final BLSSignature signature) { - this.message = message; - this.signature = signature; - } - - public SignedAggregateAndProof( - final tech.pegasys.teku.spec.datastructures.operations.SignedAggregateAndProof - signedAggregateAndProof) { - this.message = new AggregateAndProof(signedAggregateAndProof.getMessage()); - this.signature = new BLSSignature(signedAggregateAndProof.getSignature()); - } - - public tech.pegasys.teku.spec.datastructures.operations.SignedAggregateAndProof - asInternalSignedAggregateAndProof(final Spec spec) { - final SpecVersion specVersion = spec.atSlot(message.aggregate.data.slot); - return specVersion - .getSchemaDefinitions() - .getSignedAggregateAndProofSchema() - .create( - message.asInternalAggregateAndProof(specVersion), signature.asInternalBLSSignature()); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedBeaconBlock.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedBeaconBlock.java deleted file mode 100644 index c36488b0cba..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedBeaconBlock.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import java.util.Optional; -import java.util.function.Supplier; -import java.util.stream.Stream; -import tech.pegasys.teku.api.schema.altair.SignedBeaconBlockAltair; -import tech.pegasys.teku.api.schema.bellatrix.SignedBeaconBlockBellatrix; -import tech.pegasys.teku.api.schema.bellatrix.SignedBlindedBeaconBlockBellatrix; -import tech.pegasys.teku.api.schema.capella.SignedBeaconBlockCapella; -import tech.pegasys.teku.api.schema.capella.SignedBlindedBeaconBlockCapella; -import tech.pegasys.teku.api.schema.deneb.SignedBeaconBlockDeneb; -import tech.pegasys.teku.api.schema.deneb.SignedBlindedBeaconBlockDeneb; -import tech.pegasys.teku.api.schema.electra.SignedBeaconBlockElectra; -import tech.pegasys.teku.api.schema.electra.SignedBlindedBeaconBlockElectra; -import tech.pegasys.teku.api.schema.interfaces.SignedBlock; -import tech.pegasys.teku.api.schema.phase0.SignedBeaconBlockPhase0; -import tech.pegasys.teku.spec.Spec; - -public class SignedBeaconBlock implements SignedBlock { - private final BeaconBlock message; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - public final BLSSignature signature; - - public BeaconBlock getMessage() { - return message; - } - - protected SignedBeaconBlock( - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock internalBlock) { - this.signature = new BLSSignature(internalBlock.getSignature()); - this.message = new BeaconBlock(internalBlock.getMessage()); - } - - @JsonCreator - public SignedBeaconBlock( - @JsonProperty("message") final BeaconBlock message, - @JsonProperty("signature") final BLSSignature signature) { - this.message = message; - this.signature = signature; - } - - public static SignedBeaconBlock create( - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock internalBlock) { - tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody beaconBlock = - internalBlock.getMessage().getBody(); - - return Stream.of( - () -> - beaconBlock - .toBlindedVersionElectra() - .map(__ -> new SignedBlindedBeaconBlockElectra(internalBlock)), - () -> - beaconBlock - .toVersionElectra() - .map(__ -> new SignedBeaconBlockElectra(internalBlock)), - () -> - beaconBlock - .toBlindedVersionDeneb() - .map(__ -> new SignedBlindedBeaconBlockDeneb(internalBlock)), - () -> beaconBlock.toVersionDeneb().map(__ -> new SignedBeaconBlockDeneb(internalBlock)), - () -> - beaconBlock - .toBlindedVersionCapella() - .map(__ -> new SignedBlindedBeaconBlockCapella(internalBlock)), - () -> - beaconBlock - .toVersionCapella() - .map(__ -> new SignedBeaconBlockCapella(internalBlock)), - () -> - beaconBlock - .toBlindedVersionBellatrix() - .map(__ -> new SignedBlindedBeaconBlockBellatrix(internalBlock)), - () -> - beaconBlock - .toVersionBellatrix() - .map(__ -> new SignedBeaconBlockBellatrix(internalBlock)), - () -> - beaconBlock.toVersionAltair().map(__ -> new SignedBeaconBlockAltair(internalBlock)), - (Supplier>) - () -> Optional.of(new SignedBeaconBlockPhase0(internalBlock))) - .map(Supplier::get) - .flatMap(Optional::stream) - .findFirst() - .orElseThrow(); - } - - public tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock asInternalSignedBeaconBlock( - final Spec spec) { - final tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock beaconBlock = - getMessage().asInternalBeaconBlock(spec); - return tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock.create( - spec, beaconBlock, signature.asInternalBLSSignature()); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof SignedBeaconBlock)) { - return false; - } - SignedBeaconBlock that = (SignedBeaconBlock) o; - return Objects.equals(message, that.message) && Objects.equals(signature, that.signature); - } - - @Override - public int hashCode() { - return Objects.hash(message, signature); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedBeaconBlockHeader.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedBeaconBlockHeader.java deleted file mode 100644 index f2621f321e6..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedBeaconBlockHeader.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; - -public class SignedBeaconBlockHeader { - public final BeaconBlockHeader message; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - public final BLSSignature signature; - - public SignedBeaconBlockHeader( - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlockHeader signedHeader) { - this.message = new BeaconBlockHeader(signedHeader.getMessage()); - this.signature = new BLSSignature(signedHeader.getSignature()); - } - - @JsonCreator - public SignedBeaconBlockHeader( - @JsonProperty("message") final BeaconBlockHeader message, - @JsonProperty("signature") final BLSSignature signature) { - this.message = message; - this.signature = signature; - } - - public tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlockHeader - asInternalSignedBeaconBlockHeader() { - return new tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlockHeader( - message.asInternalBeaconBlockHeader(), signature.asInternalBLSSignature()); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final SignedBeaconBlockHeader that = (SignedBeaconBlockHeader) o; - return Objects.equals(message, that.message) && Objects.equals(signature, that.signature); - } - - @Override - public int hashCode() { - return Objects.hash(message, signature); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("message", message) - .add("signature", signature) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedBeaconBlockWithRoot.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedBeaconBlockWithRoot.java deleted file mode 100644 index a22f0a4d8d9..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedBeaconBlockWithRoot.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; - -import io.swagger.v3.oas.annotations.media.Schema; -import org.apache.tuweni.bytes.Bytes32; - -public class SignedBeaconBlockWithRoot extends SignedBeaconBlock { - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - private final Bytes32 root; - - public SignedBeaconBlockWithRoot( - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock internalBlock) { - super(internalBlock); - root = internalBlock.getRoot(); - } - - public Bytes32 getRoot() { - return root; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedVoluntaryExit.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedVoluntaryExit.java deleted file mode 100644 index 28b2ac58bd0..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SignedVoluntaryExit.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; - -public class SignedVoluntaryExit { - public final VoluntaryExit message; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - public final BLSSignature signature; - - public SignedVoluntaryExit( - final tech.pegasys.teku.spec.datastructures.operations.SignedVoluntaryExit - signedVoluntaryExit) { - this.signature = new BLSSignature(signedVoluntaryExit.getSignature()); - this.message = new VoluntaryExit(signedVoluntaryExit.getMessage()); - } - - public SignedVoluntaryExit( - @JsonProperty("message") final VoluntaryExit message, - @JsonProperty("signature") final BLSSignature signature) { - this.message = message; - this.signature = signature; - } - - public SignedVoluntaryExit( - final tech.pegasys.teku.spec.datastructures.operations.VoluntaryExit message, - final tech.pegasys.teku.bls.BLSSignature signature) { - this.message = new VoluntaryExit(message); - this.signature = new BLSSignature(signature); - } - - public tech.pegasys.teku.spec.datastructures.operations.SignedVoluntaryExit - asInternalSignedVoluntaryExit() { - return new tech.pegasys.teku.spec.datastructures.operations.SignedVoluntaryExit( - message.asInternalVoluntaryExit(), signature.asInternalBLSSignature()); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof SignedVoluntaryExit)) { - return false; - } - SignedVoluntaryExit that = (SignedVoluntaryExit) o; - return Objects.equals(message, that.message) && Objects.equals(signature, that.signature); - } - - @Override - public int hashCode() { - return Objects.hash(message, signature); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SubnetSubscription.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SubnetSubscription.java deleted file mode 100644 index 349b51d966e..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/SubnetSubscription.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@SuppressWarnings("JavaCase") -public class SubnetSubscription { - - public final int subnet_id; - - @Schema(type = "string", format = "uint64") - public final UInt64 unsubscription_slot; - - @JsonCreator - public SubnetSubscription( - @JsonProperty("subnet_id") final int subnet_id, - @JsonProperty("unsubscription_slot") final UInt64 unsubscription_slot) { - this.subnet_id = subnet_id; - this.unsubscription_slot = unsubscription_slot; - } - - public tech.pegasys.teku.spec.datastructures.validator.SubnetSubscription - asInternalSubnetSubscription() { - return new tech.pegasys.teku.spec.datastructures.validator.SubnetSubscription( - subnet_id, unsubscription_slot); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Validator.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Validator.java deleted file mode 100644 index b50e0cbc7a9..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Validator.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES48; -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_BYTES32; -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_PUBKEY; -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_UINT64; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_BYTES32; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_PUBKEY; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@SuppressWarnings("JavaCase") -public class Validator { - @Schema( - type = "string", - pattern = PATTERN_PUBKEY, - example = EXAMPLE_PUBKEY, - description = DESCRIPTION_BYTES48) - public final BLSPubKey pubkey; - - @Schema( - type = "string", - pattern = PATTERN_BYTES32, - example = EXAMPLE_BYTES32, - description = "Root of withdrawal credentials") - public final Bytes32 withdrawal_credentials; - - @Schema(type = "string", example = EXAMPLE_UINT64, description = "Balance at stake in Gwei.") - public final UInt64 effective_balance; - - public final boolean slashed; - - @Schema( - type = "string", - example = EXAMPLE_UINT64, - description = "When criteria for activation were met.") - public final UInt64 activation_eligibility_epoch; - - @Schema( - type = "string", - example = EXAMPLE_UINT64, - description = "Epoch when validator activated. 'FAR_FUTURE_EPOCH' if not activated.") - public final UInt64 activation_epoch; - - @Schema( - type = "string", - example = EXAMPLE_UINT64, - description = "Epoch when validator exited. 'FAR_FUTURE_EPOCH' if not exited.") - public final UInt64 exit_epoch; - - @Schema( - type = "string", - example = EXAMPLE_UINT64, - description = - "When validator can withdraw or transfer funds. 'FAR_FUTURE_EPOCH' if not defined.") - public final UInt64 withdrawable_epoch; - - @JsonCreator - public Validator( - @JsonProperty("pubkey") final BLSPubKey pubkey, - @JsonProperty("withdrawal_credentials") final Bytes32 withdrawal_credentials, - @JsonProperty("effective_balance") final UInt64 effective_balance, - @JsonProperty("slashed") final boolean slashed, - @JsonProperty("activation_eligibility_epoch") final UInt64 activation_eligibility_epoch, - @JsonProperty("activation_epoch") final UInt64 activation_epoch, - @JsonProperty("exit_epoch") final UInt64 exit_epoch, - @JsonProperty("withdrawable_epoch") final UInt64 withdrawable_epoch) { - this.pubkey = pubkey; - this.withdrawal_credentials = withdrawal_credentials; - this.effective_balance = effective_balance; - this.slashed = slashed; - this.activation_eligibility_epoch = activation_eligibility_epoch; - this.activation_epoch = activation_epoch; - this.exit_epoch = exit_epoch; - this.withdrawable_epoch = withdrawable_epoch; - } - - public Validator(final tech.pegasys.teku.spec.datastructures.state.Validator validator) { - this.pubkey = new BLSPubKey(validator.getPubkeyBytes()); - this.withdrawal_credentials = validator.getWithdrawalCredentials(); - this.effective_balance = validator.getEffectiveBalance(); - this.slashed = validator.isSlashed(); - this.activation_eligibility_epoch = validator.getActivationEligibilityEpoch(); - this.activation_epoch = validator.getActivationEpoch(); - this.exit_epoch = validator.getExitEpoch(); - this.withdrawable_epoch = validator.getWithdrawableEpoch(); - } - - public tech.pegasys.teku.spec.datastructures.state.Validator asInternalValidator() { - return new tech.pegasys.teku.spec.datastructures.state.Validator( - pubkey.asBLSPublicKey().toBytesCompressed(), - withdrawal_credentials, - effective_balance, - slashed, - activation_eligibility_epoch, - activation_epoch, - exit_epoch, - withdrawable_epoch); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final Validator validator = (Validator) o; - return slashed == validator.slashed - && Objects.equals(pubkey, validator.pubkey) - && Objects.equals(withdrawal_credentials, validator.withdrawal_credentials) - && Objects.equals(effective_balance, validator.effective_balance) - && Objects.equals(activation_eligibility_epoch, validator.activation_eligibility_epoch) - && Objects.equals(activation_epoch, validator.activation_epoch) - && Objects.equals(exit_epoch, validator.exit_epoch) - && Objects.equals(withdrawable_epoch, validator.withdrawable_epoch); - } - - @Override - public int hashCode() { - return Objects.hash( - pubkey, - withdrawal_credentials, - effective_balance, - slashed, - activation_eligibility_epoch, - activation_epoch, - exit_epoch, - withdrawable_epoch); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("pubkey", pubkey) - .add("withdrawal_credentials", withdrawal_credentials) - .add("effective_balance", effective_balance) - .add("slashed", slashed) - .add("activation_eligibility_epoch", activation_eligibility_epoch) - .add("activation_epoch", activation_epoch) - .add("exit_epoch", exit_epoch) - .add("withdrawable_epoch", withdrawable_epoch) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Version.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Version.java deleted file mode 100644 index a23d273a2b5..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/Version.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import tech.pegasys.teku.spec.SpecMilestone; - -@SuppressWarnings("JavaCase") -public enum Version { - phase0, - altair, - bellatrix, - capella, - deneb, - electra, - fulu; - - public static Version fromMilestone(final SpecMilestone milestone) { - return switch (milestone) { - case PHASE0 -> phase0; - case ALTAIR -> altair; - case BELLATRIX -> bellatrix; - case CAPELLA -> capella; - case DENEB -> deneb; - case ELECTRA -> electra; - case FULU -> fulu; - }; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/VoluntaryExit.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/VoluntaryExit.java deleted file mode 100644 index 137dd276597..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/VoluntaryExit.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@SuppressWarnings("JavaCase") -public class VoluntaryExit { - @Schema(type = "string", format = "uint64") - public final UInt64 epoch; - - @Schema(type = "string", format = "uint64") - public final UInt64 validator_index; - - public VoluntaryExit( - final tech.pegasys.teku.spec.datastructures.operations.VoluntaryExit voluntaryExit) { - this.epoch = voluntaryExit.getEpoch(); - this.validator_index = voluntaryExit.getValidatorIndex(); - } - - @JsonCreator - public VoluntaryExit( - @JsonProperty("epoch") final UInt64 epoch, - @JsonProperty("validator_index") final UInt64 validator_index) { - this.epoch = epoch; - this.validator_index = validator_index; - } - - public tech.pegasys.teku.spec.datastructures.operations.VoluntaryExit asInternalVoluntaryExit() { - return new tech.pegasys.teku.spec.datastructures.operations.VoluntaryExit( - epoch, validator_index); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof VoluntaryExit)) { - return false; - } - VoluntaryExit that = (VoluntaryExit) o; - return Objects.equals(epoch, that.epoch) - && Objects.equals(validator_index, that.validator_index); - } - - @Override - public int hashCode() { - return Objects.hash(epoch, validator_index); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/BeaconBlockAltair.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/BeaconBlockAltair.java deleted file mode 100644 index ae9fe10ba75..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/BeaconBlockAltair.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.altair; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.BeaconBlock; -import tech.pegasys.teku.api.schema.interfaces.UnsignedBlock; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsAltair; - -@SuppressWarnings("JavaCase") -public class BeaconBlockAltair extends BeaconBlock implements UnsignedBlock { - - public BeaconBlockAltair(final tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock message) { - super( - message.getSlot(), - message.getProposerIndex(), - message.getParentRoot(), - message.getStateRoot(), - new BeaconBlockBodyAltair(message.getBody().toVersionAltair().orElseThrow())); - } - - @Override - public tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock asInternalBeaconBlock( - final Spec spec) { - final SpecVersion specVersion = spec.atSlot(slot); - return SchemaDefinitionsAltair.required(specVersion.getSchemaDefinitions()) - .getBeaconBlockSchema() - .create( - slot, - proposer_index, - parent_root, - state_root, - body.asInternalBeaconBlockBody(specVersion)); - } - - @JsonProperty("body") - @Override - public BeaconBlockBodyAltair getBody() { - return (BeaconBlockBodyAltair) body; - } - - @JsonCreator - public BeaconBlockAltair( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("proposer_index") final UInt64 proposer_index, - @JsonProperty("parent_root") final Bytes32 parent_root, - @JsonProperty("state_root") final Bytes32 state_root, - @JsonProperty("body") final BeaconBlockBodyAltair body) { - super(slot, proposer_index, parent_root, state_root, body); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/BeaconBlockBodyAltair.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/BeaconBlockBodyAltair.java deleted file mode 100644 index 68ab28e9785..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/BeaconBlockBodyAltair.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.altair; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import java.util.function.Function; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.Attestation; -import tech.pegasys.teku.api.schema.AttesterSlashing; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.BeaconBlockBody; -import tech.pegasys.teku.api.schema.Deposit; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.ProposerSlashing; -import tech.pegasys.teku.api.schema.SignedVoluntaryExit; -import tech.pegasys.teku.infrastructure.async.SafeFuture; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBodyBuilder; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.altair.BeaconBlockBodySchemaAltair; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.altair.SyncAggregateSchema; - -@SuppressWarnings("JavaCase") -public class BeaconBlockBodyAltair extends BeaconBlockBody { - @JsonProperty("sync_aggregate") - public final SyncAggregate syncAggregate; - - @JsonCreator - public BeaconBlockBodyAltair( - @JsonProperty("randao_reveal") final BLSSignature randao_reveal, - @JsonProperty("eth1_data") final Eth1Data eth1_data, - @JsonProperty("graffiti") final Bytes32 graffiti, - @JsonProperty("proposer_slashings") final List proposer_slashings, - @JsonProperty("attester_slashings") final List attester_slashings, - @JsonProperty("attestations") final List attestations, - @JsonProperty("deposits") final List deposits, - @JsonProperty("voluntary_exits") final List voluntary_exits, - @JsonProperty("sync_aggregate") final SyncAggregate sync_aggregate) { - super( - randao_reveal, - eth1_data, - graffiti, - proposer_slashings, - attester_slashings, - attestations, - deposits, - voluntary_exits); - checkNotNull(sync_aggregate, "Sync Aggregate is required for altair blocks"); - this.syncAggregate = sync_aggregate; - } - - public BeaconBlockBodyAltair( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.altair - .BeaconBlockBodyAltair - message) { - super(message); - this.syncAggregate = new SyncAggregate(message.getSyncAggregate()); - checkNotNull(syncAggregate, "Sync Aggregate is required for altair blocks"); - } - - @Override - public BeaconBlockBodySchemaAltair getBeaconBlockBodySchema(final SpecVersion spec) { - return (BeaconBlockBodySchemaAltair) spec.getSchemaDefinitions().getBeaconBlockBodySchema(); - } - - @Override - public tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody - asInternalBeaconBlockBody( - final SpecVersion spec, - final Function> builderRef) { - final SyncAggregateSchema syncAggregateSchema = - getBeaconBlockBodySchema(spec).getSyncAggregateSchema(); - return super.asInternalBeaconBlockBody( - spec, - builder -> - SafeFuture.allOf( - builderRef.apply(builder), - SafeFuture.of( - () -> - builder.syncAggregate( - syncAggregateSchema.create( - syncAggregateSchema - .getSyncCommitteeBitsSchema() - .fromBytes(syncAggregate.syncCommitteeBits) - .getAllSetBits(), - syncAggregate.syncCommitteeSignature.asInternalBLSSignature()))))); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/BeaconStateAltair.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/BeaconStateAltair.java deleted file mode 100644 index 12b2b296ca2..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/BeaconStateAltair.java +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.altair; - -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_UINT64; -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_UINT8; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.BeaconBlockHeader; -import tech.pegasys.teku.api.schema.BeaconState; -import tech.pegasys.teku.api.schema.Checkpoint; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.Fork; -import tech.pegasys.teku.api.schema.Validator; -import tech.pegasys.teku.api.schema.interfaces.State; -import tech.pegasys.teku.infrastructure.ssz.SszList; -import tech.pegasys.teku.infrastructure.ssz.collections.SszBitvector; -import tech.pegasys.teku.infrastructure.ssz.primitive.SszByte; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.state.SyncCommittee.SyncCommitteeSchema; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.MutableBeaconState; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.altair.BeaconStateSchemaAltair; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.altair.MutableBeaconStateAltair; - -@SuppressWarnings("JavaCase") -public class BeaconStateAltair extends BeaconState implements State { - @ArraySchema(schema = @Schema(type = "string", example = EXAMPLE_UINT8)) - public final byte[] previous_epoch_participation; - - @ArraySchema(schema = @Schema(type = "string", example = EXAMPLE_UINT8)) - public final byte[] current_epoch_participation; - - @JsonProperty("inactivity_scores") - @ArraySchema(schema = @Schema(type = "string", example = EXAMPLE_UINT64)) - public final List inactivity_scores; - - public final SyncCommittee current_sync_committee; - public final SyncCommittee next_sync_committee; - - @JsonCreator - public BeaconStateAltair( - @JsonProperty("genesis_time") final UInt64 genesis_time, - @JsonProperty("genesis_validators_root") final Bytes32 genesis_validators_root, - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("fork") final Fork fork, - @JsonProperty("latest_block_header") final BeaconBlockHeader latest_block_header, - @JsonProperty("block_roots") final List block_roots, - @JsonProperty("state_roots") final List state_roots, - @JsonProperty("historical_roots") final List historical_roots, - @JsonProperty("eth1_data") final Eth1Data eth1_data, - @JsonProperty("eth1_data_votes") final List eth1_data_votes, - @JsonProperty("eth1_deposit_index") final UInt64 eth1_deposit_index, - @JsonProperty("validators") final List validators, - @JsonProperty("balances") final List balances, - @JsonProperty("randao_mixes") final List randao_mixes, - @JsonProperty("slashings") final List slashings, - @JsonProperty("previous_epoch_participation") final byte[] previous_epoch_participation, - @JsonProperty("current_epoch_participation") final byte[] current_epoch_participation, - @JsonProperty("justification_bits") final SszBitvector justification_bits, - @JsonProperty("previous_justified_checkpoint") final Checkpoint previous_justified_checkpoint, - @JsonProperty("current_justified_checkpoint") final Checkpoint current_justified_checkpoint, - @JsonProperty("finalized_checkpoint") final Checkpoint finalized_checkpoint, - @JsonProperty("inactivity_scores") final List inactivity_scores, - @JsonProperty("current_sync_committee") final SyncCommittee current_sync_committee, - @JsonProperty("next_sync_committee") final SyncCommittee next_sync_committee) { - super( - genesis_time, - genesis_validators_root, - slot, - fork, - latest_block_header, - block_roots, - state_roots, - historical_roots, - eth1_data, - eth1_data_votes, - eth1_deposit_index, - validators, - balances, - randao_mixes, - slashings, - justification_bits, - previous_justified_checkpoint, - current_justified_checkpoint, - finalized_checkpoint); - this.previous_epoch_participation = previous_epoch_participation; - this.current_epoch_participation = current_epoch_participation; - this.inactivity_scores = inactivity_scores; - this.current_sync_committee = current_sync_committee; - this.next_sync_committee = next_sync_committee; - } - - public BeaconStateAltair( - final tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState beaconState) { - super(beaconState); - final tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.altair.BeaconStateAltair - altair = beaconState.toVersionAltair().orElseThrow(); - this.previous_epoch_participation = toByteArray(altair.getPreviousEpochParticipation()); - this.current_epoch_participation = toByteArray(altair.getCurrentEpochParticipation()); - this.inactivity_scores = altair.getInactivityScores().asListUnboxed(); - this.current_sync_committee = new SyncCommittee(altair.getCurrentSyncCommittee()); - this.next_sync_committee = new SyncCommittee(altair.getNextSyncCommittee()); - } - - @Override - protected void applyAdditionalFields( - final MutableBeaconState state, final SpecVersion specVersion) { - state - .toMutableVersionAltair() - .ifPresent( - beaconStateAltair -> { - final SyncCommitteeSchema syncCommitteeSchema = - BeaconStateSchemaAltair.required(beaconStateAltair.getBeaconStateSchema()) - .getCurrentSyncCommitteeSchema(); - applyAltairFields(beaconStateAltair, syncCommitteeSchema, this); - }); - } - - public static void applyAltairFields( - final MutableBeaconStateAltair state, - final SyncCommitteeSchema syncCommitteeSchema, - final BeaconStateAltair instance) { - final SszList previousEpochParticipation = - state - .getPreviousEpochParticipation() - .getSchema() - .sszDeserialize(Bytes.wrap(instance.previous_epoch_participation)); - final SszList currentEpochParticipation = - state - .getCurrentEpochParticipation() - .getSchema() - .sszDeserialize(Bytes.wrap(instance.current_epoch_participation)); - - state.setPreviousEpochParticipation(previousEpochParticipation); - state.setCurrentEpochParticipation(currentEpochParticipation); - state.getInactivityScores().setAllElements(instance.inactivity_scores); - - state.setCurrentSyncCommittee( - instance.current_sync_committee.asInternalSyncCommittee(syncCommitteeSchema)); - state.setNextSyncCommittee( - instance.next_sync_committee.asInternalSyncCommittee(syncCommitteeSchema)); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final BeaconStateAltair that = (BeaconStateAltair) o; - return Arrays.equals(previous_epoch_participation, that.previous_epoch_participation) - && Arrays.equals(current_epoch_participation, that.current_epoch_participation) - && Objects.equals(inactivity_scores, that.inactivity_scores) - && Objects.equals(current_sync_committee, that.current_sync_committee) - && Objects.equals(next_sync_committee, that.next_sync_committee); - } - - @Override - public int hashCode() { - int result = - Objects.hash( - System.identityHashCode(this), - inactivity_scores, - current_sync_committee, - next_sync_committee); - result = 31 * result + Arrays.hashCode(previous_epoch_participation); - result = 31 * result + Arrays.hashCode(current_epoch_participation); - return result; - } - - private byte[] toByteArray(final SszList byteList) { - final byte[] array = new byte[byteList.size()]; - for (int i = 0; i < array.length; i++) { - array[i] = byteList.get(i).get(); - } - return array; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/ContributionAndProof.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/ContributionAndProof.java deleted file mode 100644 index 4dd69c193d0..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/ContributionAndProof.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.altair; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class ContributionAndProof { - @JsonProperty("aggregator_index") - @Schema(type = "string", format = "uint64") - public final UInt64 aggregatorIndex; - - @JsonProperty("selection_proof") - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - public final BLSSignature selectionProof; - - @JsonProperty("contribution") - public final SyncCommitteeContribution contribution; - - @JsonCreator - public ContributionAndProof( - @JsonProperty("aggregator_index") final UInt64 aggregatorIndex, - @JsonProperty("selection_proof") final BLSSignature selectionProof, - @JsonProperty("contribution") final SyncCommitteeContribution contribution) { - this.aggregatorIndex = aggregatorIndex; - this.selectionProof = selectionProof; - this.contribution = contribution; - } - - public ContributionAndProof( - final tech.pegasys.teku.spec.datastructures.operations.versions.altair.ContributionAndProof - contributionAndProof) { - this( - contributionAndProof.getAggregatorIndex(), - new BLSSignature(contributionAndProof.getSelectionProof()), - new SyncCommitteeContribution(contributionAndProof.getContribution())); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final ContributionAndProof that = (ContributionAndProof) o; - return Objects.equals(aggregatorIndex, that.aggregatorIndex) - && Objects.equals(selectionProof, that.selectionProof) - && Objects.equals(contribution, that.contribution); - } - - @Override - public int hashCode() { - return Objects.hash(aggregatorIndex, selectionProof, contribution); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SignedBeaconBlockAltair.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SignedBeaconBlockAltair.java deleted file mode 100644 index c9c4c28a58b..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SignedBeaconBlockAltair.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.altair; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.SignedBeaconBlock; -import tech.pegasys.teku.api.schema.interfaces.SignedBlock; - -public class SignedBeaconBlockAltair extends SignedBeaconBlock implements SignedBlock { - private final BeaconBlockAltair message; - - public SignedBeaconBlockAltair( - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock internalBlock) { - super(internalBlock); - this.message = new BeaconBlockAltair(internalBlock.getMessage()); - } - - @Override - public BeaconBlockAltair getMessage() { - return message; - } - - @JsonCreator - public SignedBeaconBlockAltair( - @JsonProperty("message") final BeaconBlockAltair message, - @JsonProperty("signature") final BLSSignature signature) { - super(message, signature); - this.message = message; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SignedContributionAndProof.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SignedContributionAndProof.java deleted file mode 100644 index dee88572145..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SignedContributionAndProof.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.altair; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import tech.pegasys.teku.api.schema.BLSSignature; - -public class SignedContributionAndProof { - - @JsonProperty("message") - public final ContributionAndProof message; - - @JsonProperty("signature") - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - public final BLSSignature signature; - - @JsonCreator - public SignedContributionAndProof( - @JsonProperty("message") final ContributionAndProof message, - @JsonProperty("signature") final BLSSignature signature) { - this.message = message; - this.signature = signature; - } - - public SignedContributionAndProof( - final tech.pegasys.teku.spec.datastructures.operations.versions.altair - .SignedContributionAndProof - proof) { - this.message = new ContributionAndProof(proof.getMessage()); - this.signature = new BLSSignature(proof.getSignature()); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final SignedContributionAndProof that = (SignedContributionAndProof) o; - return Objects.equals(message, that.message) && Objects.equals(signature, that.signature); - } - - @Override - public int hashCode() { - return Objects.hash(message, signature); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncAggregate.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncAggregate.java deleted file mode 100644 index 85bacb8759d..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncAggregate.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.altair; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES_SSZ; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import org.apache.tuweni.bytes.Bytes; -import tech.pegasys.teku.api.schema.BLSSignature; - -public class SyncAggregate { - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES_SSZ) - @JsonProperty("sync_committee_bits") - public Bytes syncCommitteeBits; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - @JsonProperty("sync_committee_signature") - public final BLSSignature syncCommitteeSignature; - - @JsonCreator - public SyncAggregate( - @JsonProperty("sync_committee_bits") final Bytes syncCommitteeBits, - @JsonProperty("sync_committee_signature") final BLSSignature syncCommitteeSignature) { - this.syncCommitteeBits = syncCommitteeBits; - this.syncCommitteeSignature = syncCommitteeSignature; - } - - public SyncAggregate( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.altair.SyncAggregate - aggregate) { - this.syncCommitteeSignature = - new BLSSignature(aggregate.getSyncCommitteeSignature().getSignature()); - this.syncCommitteeBits = aggregate.getSyncCommitteeBits().sszSerialize(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncCommittee.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncCommittee.java deleted file mode 100644 index 4039b090057..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncCommittee.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.altair; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES48; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import java.util.Objects; -import tech.pegasys.teku.api.schema.BLSPubKey; -import tech.pegasys.teku.spec.datastructures.state.SyncCommittee.SyncCommitteeSchema; -import tech.pegasys.teku.spec.datastructures.type.SszPublicKey; - -public class SyncCommittee { - @JsonProperty("pubkeys") - @ArraySchema( - schema = @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES48)) - public final List pubkeys; - - @JsonProperty("aggregate_pubkey") - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES48) - public final BLSPubKey aggregatePubkey; - - @JsonCreator - public SyncCommittee( - @JsonProperty("pubkeys") final List pubkeys, - @JsonProperty("aggregate_pubkey") final BLSPubKey aggregatePubkey) { - this.pubkeys = pubkeys; - this.aggregatePubkey = aggregatePubkey; - } - - public SyncCommittee(final tech.pegasys.teku.spec.datastructures.state.SyncCommittee committee) { - pubkeys = - committee.getPubkeys().asList().stream() - .map(k -> new BLSPubKey(k.getBLSPublicKey())) - .toList(); - aggregatePubkey = new BLSPubKey(committee.getAggregatePubkey().getBLSPublicKey()); - } - - public tech.pegasys.teku.spec.datastructures.state.SyncCommittee asInternalSyncCommittee( - final SyncCommitteeSchema schema) { - SszPublicKey aggregate = new SszPublicKey(aggregatePubkey.asBLSPublicKey()); - List committee = - pubkeys.stream().map(key -> new SszPublicKey(key.asBLSPublicKey())).toList(); - return schema.create(committee, aggregate); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof SyncCommittee)) { - return false; - } - SyncCommittee that = (SyncCommittee) o; - return Objects.equals(pubkeys, that.pubkeys) - && Objects.equals(aggregatePubkey, that.aggregatePubkey); - } - - @Override - public int hashCode() { - return Objects.hash(pubkeys, aggregatePubkey); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncCommitteeContribution.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncCommitteeContribution.java deleted file mode 100644 index 1d5e7fa2b9a..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncCommitteeContribution.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.altair; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES_SSZ; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.infrastructure.ssz.collections.SszBitvector; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.datastructures.operations.versions.altair.SyncCommitteeContributionSchema; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsAltair; - -public class SyncCommitteeContribution { - @JsonProperty("slot") - @Schema(type = "string", format = "uint64") - public final UInt64 slot; - - @JsonProperty("beacon_block_root") - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 beaconBlockRoot; - - @JsonProperty("subcommittee_index") - @Schema(type = "string", format = "uint64") - public final UInt64 subcommitteeIndex; - - @JsonProperty("aggregation_bits") - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES_SSZ) - public final Bytes aggregationBits; - - @JsonProperty("signature") - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - public final BLSSignature signature; - - @JsonCreator - public SyncCommitteeContribution( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("beacon_block_root") final Bytes32 beaconBlockRoot, - @JsonProperty("subcommittee_index") final UInt64 subcommitteeIndex, - @JsonProperty("aggregation_bits") final Bytes aggregationBits, - @JsonProperty("signature") final BLSSignature signature) { - this.slot = slot; - this.beaconBlockRoot = beaconBlockRoot; - this.subcommitteeIndex = subcommitteeIndex; - this.aggregationBits = aggregationBits; - this.signature = signature; - } - - public SyncCommitteeContribution( - final tech.pegasys.teku.spec.datastructures.operations.versions.altair - .SyncCommitteeContribution - contribution) { - this( - contribution.getSlot(), - contribution.getBeaconBlockRoot(), - contribution.getSubcommitteeIndex(), - contribution.getAggregationBits().sszSerialize(), - new BLSSignature(contribution.getSignature())); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final SyncCommitteeContribution that = (SyncCommitteeContribution) o; - return Objects.equals(slot, that.slot) - && Objects.equals(beaconBlockRoot, that.beaconBlockRoot) - && Objects.equals(subcommitteeIndex, that.subcommitteeIndex) - && Objects.equals(aggregationBits, that.aggregationBits) - && Objects.equals(signature, that.signature); - } - - @Override - public int hashCode() { - return Objects.hash(slot, beaconBlockRoot, subcommitteeIndex, aggregationBits, signature); - } - - public static tech.pegasys.teku.spec.datastructures.operations.versions.altair - .SyncCommitteeContribution - asInternalSyncCommitteeContribution( - final Spec spec, final SyncCommitteeContribution syncCommitteeContribution) { - final SchemaDefinitionsAltair altairDefinitions = - SchemaDefinitionsAltair.required( - spec.atSlot(syncCommitteeContribution.slot).getSchemaDefinitions()); - final SyncCommitteeContributionSchema syncCommitteeContributionSchema = - altairDefinitions.getSyncCommitteeContributionSchema(); - - final SszBitvector aggregationBitsVector = - syncCommitteeContributionSchema - .getAggregationBitsSchema() - .fromBytes(syncCommitteeContribution.aggregationBits); - return spec.getSyncCommitteeUtilRequired(syncCommitteeContribution.slot) - .createSyncCommitteeContribution( - syncCommitteeContribution.slot, - syncCommitteeContribution.beaconBlockRoot, - syncCommitteeContribution.subcommitteeIndex, - aggregationBitsVector.getAllSetBits(), - syncCommitteeContribution.signature.asInternalBLSSignature()); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncCommitteeMessage.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncCommitteeMessage.java deleted file mode 100644 index e27e3797869..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncCommitteeMessage.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.altair; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import java.util.Optional; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsAltair; - -public class SyncCommitteeMessage { - @Schema(type = "string", format = "uint64") - @JsonProperty("slot") - public final UInt64 slot; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - @JsonProperty("beacon_block_root") - public final Bytes32 beaconBlockRoot; - - @Schema(type = "string", format = "uint64") - @JsonProperty("validator_index") - public final UInt64 validatorIndex; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - @JsonProperty("signature") - public final BLSSignature signature; - - @JsonCreator - public SyncCommitteeMessage( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("beacon_block_root") final Bytes32 beaconBlockRoot, - @JsonProperty("validator_index") final UInt64 validatorIndex, - @JsonProperty("signature") final BLSSignature signature) { - this.slot = slot; - this.beaconBlockRoot = beaconBlockRoot; - this.validatorIndex = validatorIndex; - this.signature = signature; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final SyncCommitteeMessage that = (SyncCommitteeMessage) o; - return Objects.equals(slot, that.slot) - && Objects.equals(beaconBlockRoot, that.beaconBlockRoot) - && Objects.equals(validatorIndex, that.validatorIndex) - && Objects.equals(signature, that.signature); - } - - @Override - public int hashCode() { - return Objects.hash(slot, beaconBlockRoot, validatorIndex, signature); - } - - public Optional< - tech.pegasys.teku.spec.datastructures.operations.versions.altair.SyncCommitteeMessage> - asInternalCommitteeSignature(final Spec spec) { - final Optional maybeSchema = - spec.atSlot(slot).getSchemaDefinitions().toVersionAltair(); - if (maybeSchema.isEmpty()) { - final String message = - String.format( - "Could not create sync committee signature at phase0 slot %s for validator %s", - slot, validatorIndex); - throw new IllegalArgumentException(message); - } - return maybeSchema.map( - schema -> - schema - .getSyncCommitteeMessageSchema() - .create(slot, beaconBlockRoot, validatorIndex, signature.asInternalBLSSignature())); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncCommitteeSubnetSubscription.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncCommitteeSubnetSubscription.java deleted file mode 100644 index a6360c0f0bd..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/altair/SyncCommitteeSubnetSubscription.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.altair; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public class SyncCommitteeSubnetSubscription { - @JsonProperty("validator_index") - @Schema(type = "string", format = "uint64") - public final UInt64 validatorIndex; - - @JsonProperty("sync_committee_indices") - @ArraySchema(schema = @Schema(type = "string", format = "uint64")) - public final List syncCommitteeIndices; - - @JsonProperty("until_epoch") - @Schema( - type = "string", - format = "uint64", - description = - "The final epoch (exclusive value) that the specified validator requires the subscription for.") - public final UInt64 untilEpoch; - - @JsonCreator - public SyncCommitteeSubnetSubscription( - @JsonProperty("validator_index") final UInt64 validatorIndex, - @JsonProperty("sync_committee_indices") final List syncCommitteeIndices, - @JsonProperty("until_epoch") final UInt64 untilEpoch) { - this.validatorIndex = validatorIndex; - this.syncCommitteeIndices = syncCommitteeIndices; - this.untilEpoch = untilEpoch; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BeaconBlockBellatrix.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BeaconBlockBellatrix.java deleted file mode 100644 index a438a72d04c..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BeaconBlockBellatrix.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.bellatrix; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.altair.BeaconBlockAltair; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsBellatrix; - -public class BeaconBlockBellatrix extends BeaconBlockAltair { - - public BeaconBlockBellatrix(final BeaconBlock message) { - super( - message.getSlot(), - message.getProposerIndex(), - message.getParentRoot(), - message.getStateRoot(), - new BeaconBlockBodyBellatrix(message.getBody().toVersionBellatrix().orElseThrow())); - } - - @Override - public BeaconBlock asInternalBeaconBlock(final Spec spec) { - final SpecVersion specVersion = spec.atSlot(slot); - return SchemaDefinitionsBellatrix.required(specVersion.getSchemaDefinitions()) - .getBeaconBlockSchema() - .create( - slot, - proposer_index, - parent_root, - state_root, - body.asInternalBeaconBlockBody(specVersion)); - } - - @JsonProperty("body") - @Override - public BeaconBlockBodyBellatrix getBody() { - return (BeaconBlockBodyBellatrix) body; - } - - @JsonCreator - public BeaconBlockBellatrix( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("proposer_index") final UInt64 proposerIndex, - @JsonProperty("parent_root") final Bytes32 parentRoot, - @JsonProperty("state_root") final Bytes32 stateRoot, - @JsonProperty("body") final BeaconBlockBodyBellatrix body) { - super(slot, proposerIndex, parentRoot, stateRoot, body); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BeaconBlockBodyBellatrix.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BeaconBlockBodyBellatrix.java deleted file mode 100644 index 907aeeb31a9..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BeaconBlockBodyBellatrix.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.bellatrix; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import java.util.function.Function; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.Attestation; -import tech.pegasys.teku.api.schema.AttesterSlashing; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.Deposit; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.ProposerSlashing; -import tech.pegasys.teku.api.schema.SignedVoluntaryExit; -import tech.pegasys.teku.api.schema.altair.BeaconBlockBodyAltair; -import tech.pegasys.teku.api.schema.altair.SyncAggregate; -import tech.pegasys.teku.infrastructure.async.SafeFuture; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBodyBuilder; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.bellatrix.BeaconBlockBodySchemaBellatrix; - -public class BeaconBlockBodyBellatrix extends BeaconBlockBodyAltair { - @JsonProperty("execution_payload") - public final ExecutionPayloadBellatrix executionPayload; - - @JsonCreator - public BeaconBlockBodyBellatrix( - @JsonProperty("randao_reveal") final BLSSignature randaoReveal, - @JsonProperty("eth1_data") final Eth1Data eth1Data, - @JsonProperty("graffiti") final Bytes32 graffiti, - @JsonProperty("proposer_slashings") final List proposerSlashings, - @JsonProperty("attester_slashings") final List attesterSlashings, - @JsonProperty("attestations") final List attestations, - @JsonProperty("deposits") final List deposits, - @JsonProperty("voluntary_exits") final List voluntaryExits, - @JsonProperty("sync_aggregate") final SyncAggregate syncAggregate, - @JsonProperty("execution_payload") final ExecutionPayloadBellatrix executionPayload) { - super( - randaoReveal, - eth1Data, - graffiti, - proposerSlashings, - attesterSlashings, - attestations, - deposits, - voluntaryExits, - syncAggregate); - checkNotNull(executionPayload, "Execution Payload is required for bellatrix blocks"); - this.executionPayload = executionPayload; - } - - public BeaconBlockBodyBellatrix( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.bellatrix - .BeaconBlockBodyBellatrix - message) { - super(message); - checkNotNull( - message.getExecutionPayload(), "Execution Payload is required for bellatrix blocks"); - this.executionPayload = new ExecutionPayloadBellatrix(message.getExecutionPayload()); - } - - @Override - public BeaconBlockBodySchemaBellatrix getBeaconBlockBodySchema(final SpecVersion spec) { - return (BeaconBlockBodySchemaBellatrix) - spec.getSchemaDefinitions().getBeaconBlockBodySchema(); - } - - @Override - public BeaconBlockBody asInternalBeaconBlockBody( - final SpecVersion spec, final Function> builderRef) { - return super.asInternalBeaconBlockBody( - spec, - builder -> - SafeFuture.allOf( - builderRef.apply(builder), - SafeFuture.of( - () -> - builder.executionPayload( - executionPayload.asInternalExecutionPayload(spec))))); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BeaconPreparableProposer.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BeaconPreparableProposer.java deleted file mode 100644 index ec55254f8f2..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BeaconPreparableProposer.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.bellatrix; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_EXECUTION_ADDRESS; -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_EXECUTION_ADDRESS; -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_UINT64; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_EXECUTION_ADDRESS; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import tech.pegasys.teku.ethereum.execution.types.Eth1Address; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@SuppressWarnings("JavaCase") -public class BeaconPreparableProposer { - @JsonProperty("validator_index") - @Schema(type = "string", format = "uint64", example = EXAMPLE_UINT64) - public final UInt64 validator_index; - - @JsonProperty("fee_recipient") - @Schema( - type = "string", - pattern = PATTERN_EXECUTION_ADDRESS, - example = EXAMPLE_EXECUTION_ADDRESS, - description = DESCRIPTION_EXECUTION_ADDRESS) - public final Eth1Address fee_recipient; - - @JsonCreator - public BeaconPreparableProposer( - final @JsonProperty("validator_index") UInt64 validator_index, - final @JsonProperty("fee_recipient") Eth1Address fee_recipient) { - this.validator_index = validator_index; - this.fee_recipient = fee_recipient; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BeaconStateBellatrix.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BeaconStateBellatrix.java deleted file mode 100644 index 4137e8de9b3..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BeaconStateBellatrix.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.bellatrix; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.BeaconBlockHeader; -import tech.pegasys.teku.api.schema.Checkpoint; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.Fork; -import tech.pegasys.teku.api.schema.Validator; -import tech.pegasys.teku.api.schema.altair.BeaconStateAltair; -import tech.pegasys.teku.api.schema.altair.SyncCommittee; -import tech.pegasys.teku.infrastructure.ssz.collections.SszBitvector; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.execution.versions.bellatrix.ExecutionPayloadHeaderSchemaBellatrix; -import tech.pegasys.teku.spec.datastructures.state.SyncCommittee.SyncCommitteeSchema; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.MutableBeaconState; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.bellatrix.BeaconStateSchemaBellatrix; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.bellatrix.MutableBeaconStateBellatrix; - -public class BeaconStateBellatrix extends BeaconStateAltair { - - @JsonProperty("latest_execution_payload_header") - public ExecutionPayloadHeaderBellatrix latestExecutionPayloadHeader; - - @JsonCreator - public BeaconStateBellatrix( - @JsonProperty("genesis_time") final UInt64 genesisTime, - @JsonProperty("genesis_validators_root") final Bytes32 genesisValidatorsRoot, - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("fork") final Fork fork, - @JsonProperty("latest_block_header") final BeaconBlockHeader latestBlockHeader, - @JsonProperty("block_roots") final List blockRoots, - @JsonProperty("state_roots") final List stateRoots, - @JsonProperty("historical_roots") final List historicalRoots, - @JsonProperty("eth1_data") final Eth1Data eth1Data, - @JsonProperty("eth1_data_votes") final List eth1DataVotes, - @JsonProperty("eth1_deposit_index") final UInt64 eth1DepositIndex, - @JsonProperty("validators") final List validators, - @JsonProperty("balances") final List balances, - @JsonProperty("randao_mixes") final List randaoMixes, - @JsonProperty("slashings") final List slashings, - @JsonProperty("previous_epoch_participation") final byte[] previousEpochParticipation, - @JsonProperty("current_epoch_participation") final byte[] currentEpochParticipation, - @JsonProperty("justification_bits") final SszBitvector justificationBits, - @JsonProperty("previous_justified_checkpoint") final Checkpoint previousJustifiedCheckpoint, - @JsonProperty("current_justified_checkpoint") final Checkpoint currentJustifiedCheckpoint, - @JsonProperty("finalized_checkpoint") final Checkpoint finalizedCheckpoint, - @JsonProperty("inactivity_scores") final List inactivityScores, - @JsonProperty("current_sync_committee") final SyncCommittee currentSyncCommittee, - @JsonProperty("next_sync_committee") final SyncCommittee nextSyncCommittee, - @JsonProperty("latest_execution_payload_header") - final ExecutionPayloadHeaderBellatrix latestExecutionPayloadHeader) { - super( - genesisTime, - genesisValidatorsRoot, - slot, - fork, - latestBlockHeader, - blockRoots, - stateRoots, - historicalRoots, - eth1Data, - eth1DataVotes, - eth1DepositIndex, - validators, - balances, - randaoMixes, - slashings, - previousEpochParticipation, - currentEpochParticipation, - justificationBits, - previousJustifiedCheckpoint, - currentJustifiedCheckpoint, - finalizedCheckpoint, - inactivityScores, - currentSyncCommittee, - nextSyncCommittee); - this.latestExecutionPayloadHeader = latestExecutionPayloadHeader; - } - - @Override - protected void applyAdditionalFields( - final MutableBeaconState state, final SpecVersion specVersion) { - state - .toMutableVersionBellatrix() - .ifPresent( - beaconStateBellatrix -> - applyBellatrixFields( - beaconStateBellatrix, - BeaconStateSchemaBellatrix.required(state.getBeaconStateSchema()) - .getCurrentSyncCommitteeSchema(), - BeaconStateSchemaBellatrix.required(beaconStateBellatrix.getBeaconStateSchema()) - .getLastExecutionPayloadHeaderSchema(), - this)); - } - - public static void applyBellatrixFields( - final MutableBeaconStateBellatrix state, - final SyncCommitteeSchema syncCommitteeSchema, - final ExecutionPayloadHeaderSchemaBellatrix executionPayloadHeaderSchema, - final BeaconStateBellatrix instance) { - BeaconStateAltair.applyAltairFields(state, syncCommitteeSchema, instance); - - state.setLatestExecutionPayloadHeader( - instance.latestExecutionPayloadHeader.asInternalExecutionPayloadHeader( - executionPayloadHeaderSchema)); - } - - public BeaconStateBellatrix(final BeaconState beaconState) { - super(beaconState); - final tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.bellatrix - .BeaconStateBellatrix - bellatrix = beaconState.toVersionBellatrix().orElseThrow(); - this.latestExecutionPayloadHeader = - new ExecutionPayloadHeaderBellatrix(bellatrix.getLatestExecutionPayloadHeader()); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof BeaconStateBellatrix)) { - return false; - } - if (!super.equals(o)) { - return false; - } - BeaconStateBellatrix that = (BeaconStateBellatrix) o; - return Objects.equals(latestExecutionPayloadHeader, that.latestExecutionPayloadHeader); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), latestExecutionPayloadHeader); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BlindedBeaconBlockBodyBellatrix.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BlindedBeaconBlockBodyBellatrix.java deleted file mode 100644 index ac6fd3c473c..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BlindedBeaconBlockBodyBellatrix.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.bellatrix; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.Attestation; -import tech.pegasys.teku.api.schema.AttesterSlashing; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.Deposit; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.ProposerSlashing; -import tech.pegasys.teku.api.schema.SignedVoluntaryExit; -import tech.pegasys.teku.api.schema.altair.BeaconBlockBodyAltair; -import tech.pegasys.teku.api.schema.altair.SyncAggregate; -import tech.pegasys.teku.infrastructure.async.SafeFuture; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.bellatrix.BeaconBlockBodyBellatrix; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.bellatrix.BlindedBeaconBlockBodySchemaBellatrix; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeaderSchema; - -public class BlindedBeaconBlockBodyBellatrix extends BeaconBlockBodyAltair { - @JsonProperty("execution_payload_header") - public final ExecutionPayloadHeaderBellatrix executionPayloadHeader; - - @JsonCreator - public BlindedBeaconBlockBodyBellatrix( - @JsonProperty("randao_reveal") final BLSSignature randaoReveal, - @JsonProperty("eth1_data") final Eth1Data eth1Data, - @JsonProperty("graffiti") final Bytes32 graffiti, - @JsonProperty("proposer_slashings") final List proposerSlashings, - @JsonProperty("attester_slashings") final List attesterSlashings, - @JsonProperty("attestations") final List attestations, - @JsonProperty("deposits") final List deposits, - @JsonProperty("voluntary_exits") final List voluntaryExits, - @JsonProperty("sync_aggregate") final SyncAggregate syncAggregate, - @JsonProperty("execution_payload_header") - final ExecutionPayloadHeaderBellatrix executionPayloadHeader) { - super( - randaoReveal, - eth1Data, - graffiti, - proposerSlashings, - attesterSlashings, - attestations, - deposits, - voluntaryExits, - syncAggregate); - checkNotNull( - executionPayloadHeader, - "Execution Payload Header is required for bellatrix blinded blocks"); - this.executionPayloadHeader = executionPayloadHeader; - } - - public BlindedBeaconBlockBodyBellatrix( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.bellatrix - .BlindedBeaconBlockBodyBellatrix - blockBody) { - super(blockBody); - this.executionPayloadHeader = - new ExecutionPayloadHeaderBellatrix(blockBody.getExecutionPayloadHeader()); - } - - public BlindedBeaconBlockBodyBellatrix(final BeaconBlockBodyBellatrix blockBody) { - super(blockBody); - this.executionPayloadHeader = - new ExecutionPayloadHeaderBellatrix(blockBody.getExecutionPayload()); - } - - @Override - public BlindedBeaconBlockBodySchemaBellatrix getBeaconBlockBodySchema(final SpecVersion spec) { - return (BlindedBeaconBlockBodySchemaBellatrix) - spec.getSchemaDefinitions().getBlindedBeaconBlockBodySchema(); - } - - @Override - public boolean isBlinded() { - return true; - } - - @Override - public BeaconBlockBody asInternalBeaconBlockBody(final SpecVersion spec) { - - final ExecutionPayloadHeaderSchema executionPayloadHeaderSchema = - getBeaconBlockBodySchema(spec).getExecutionPayloadHeaderSchema(); - - return super.asInternalBeaconBlockBody( - spec, - builder -> { - builder.executionPayloadHeader( - executionPayloadHeader.asInternalExecutionPayloadHeader( - executionPayloadHeaderSchema)); - return SafeFuture.COMPLETE; - }); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BlindedBlockBellatrix.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BlindedBlockBellatrix.java deleted file mode 100644 index 19ca5fc796d..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/BlindedBlockBellatrix.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.bellatrix; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.altair.BeaconBlockAltair; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock; -import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlockSchema; - -public class BlindedBlockBellatrix extends BeaconBlockAltair { - - public BlindedBlockBellatrix(final BeaconBlock message) { - super( - message.getSlot(), - message.getProposerIndex(), - message.getParentRoot(), - message.getStateRoot(), - new BlindedBeaconBlockBodyBellatrix( - message.getBody().toBlindedVersionBellatrix().orElseThrow())); - } - - @Override - public BeaconBlockSchema getBeaconBlockSchema(final SpecVersion spec) { - return spec.getSchemaDefinitions().getBlindedBeaconBlockSchema(); - } - - @Override - public BeaconBlock asInternalBeaconBlock(final Spec spec) { - final SpecVersion specVersion = spec.atSlot(slot); - return getBeaconBlockSchema(specVersion) - .create( - slot, - proposer_index, - parent_root, - state_root, - body.asInternalBeaconBlockBody(specVersion)); - } - - @JsonProperty("body") - @Override - public BlindedBeaconBlockBodyBellatrix getBody() { - return (BlindedBeaconBlockBodyBellatrix) body; - } - - @JsonCreator - public BlindedBlockBellatrix( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("proposer_index") final UInt64 proposerIndex, - @JsonProperty("parent_root") final Bytes32 parentRoot, - @JsonProperty("state_root") final Bytes32 stateRoot, - @JsonProperty("body") final BlindedBeaconBlockBodyBellatrix body) { - super(slot, proposerIndex, parentRoot, stateRoot, body); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/ExecutionPayloadBellatrix.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/ExecutionPayloadBellatrix.java deleted file mode 100644 index fe9e23f1193..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/ExecutionPayloadBellatrix.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.bellatrix; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import org.apache.tuweni.bytes.Bytes; -import org.apache.tuweni.bytes.Bytes32; -import org.apache.tuweni.units.bigints.UInt256; -import tech.pegasys.teku.api.schema.ExecutionPayload; -import tech.pegasys.teku.infrastructure.bytes.Bytes20; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadBuilder; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadSchema; -import tech.pegasys.teku.spec.datastructures.execution.Transaction; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsBellatrix; - -public class ExecutionPayloadBellatrix extends ExecutionPayloadCommon implements ExecutionPayload { - - @ArraySchema(schema = @Schema(type = "string", format = "byte")) - public final List transactions; - - @JsonCreator - public ExecutionPayloadBellatrix( - final @JsonProperty("parent_hash") Bytes32 parentHash, - final @JsonProperty("fee_recipient") Bytes20 feeRecipient, - final @JsonProperty("state_root") Bytes32 stateRoot, - final @JsonProperty("receipts_root") Bytes32 receiptsRoot, - final @JsonProperty("logs_bloom") Bytes logsBloom, - final @JsonProperty("prev_randao") Bytes32 prevRandao, - final @JsonProperty("block_number") UInt64 blockNumber, - final @JsonProperty("gas_limit") UInt64 gasLimit, - final @JsonProperty("gas_used") UInt64 gasUsed, - final @JsonProperty("timestamp") UInt64 timestamp, - final @JsonProperty("extra_data") Bytes extraData, - final @JsonProperty("base_fee_per_gas") UInt256 baseFeePerGas, - final @JsonProperty("block_hash") Bytes32 blockHash, - final @JsonProperty("transactions") List transactions) { - super( - parentHash, - feeRecipient, - stateRoot, - receiptsRoot, - logsBloom, - prevRandao, - blockNumber, - gasLimit, - gasUsed, - timestamp, - extraData, - baseFeePerGas, - blockHash); - this.transactions = transactions != null ? transactions : Collections.emptyList(); - } - - public ExecutionPayloadBellatrix( - final tech.pegasys.teku.spec.datastructures.execution.ExecutionPayload executionPayload) { - super( - executionPayload.getParentHash(), - executionPayload.getFeeRecipient(), - executionPayload.getStateRoot(), - executionPayload.getReceiptsRoot(), - executionPayload.getLogsBloom(), - executionPayload.getPrevRandao(), - executionPayload.getBlockNumber(), - executionPayload.getGasLimit(), - executionPayload.getGasUsed(), - executionPayload.getTimestamp(), - executionPayload.getExtraData(), - executionPayload.getBaseFeePerGas(), - executionPayload.getBlockHash()); - this.transactions = - executionPayload.getTransactions().stream().map(Transaction::getBytes).toList(); - } - - public tech.pegasys.teku.spec.datastructures.execution.ExecutionPayload - asInternalExecutionPayload(final Spec spec, final UInt64 slot) { - return asInternalExecutionPayload(spec.atSlot(slot)); - } - - public tech.pegasys.teku.spec.datastructures.execution.ExecutionPayload - asInternalExecutionPayload(final SpecVersion spec) { - final Optional maybeSchema = - spec.getSchemaDefinitions().toVersionBellatrix(); - - if (maybeSchema.isEmpty()) { - throw new IllegalArgumentException( - "Could not create execution payload at pre-bellatrix slot"); - } - - final ExecutionPayloadSchema executionPayloadSchema = - maybeSchema.get().getExecutionPayloadSchema(); - return executionPayloadSchema.createExecutionPayload( - builder -> applyToBuilder(executionPayloadSchema, builder)); - } - - protected ExecutionPayloadBuilder applyToBuilder( - final ExecutionPayloadSchema executionPayloadSchema, - final ExecutionPayloadBuilder builder) { - return builder - .parentHash(parentHash) - .feeRecipient(feeRecipient) - .stateRoot(stateRoot) - .receiptsRoot(receiptsRoot) - .logsBloom(logsBloom) - .prevRandao(prevRandao) - .blockNumber(blockNumber) - .gasLimit(gasLimit) - .gasUsed(gasUsed) - .timestamp(timestamp) - .extraData(extraData) - .baseFeePerGas(baseFeePerGas) - .blockHash(blockHash) - .transactions(transactions); - } - - @Override - public Optional toVersionBellatrix() { - return Optional.of(this); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - if (!super.equals(o)) { - return false; - } - final ExecutionPayloadBellatrix that = (ExecutionPayloadBellatrix) o; - return Objects.equals(transactions, that.transactions); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), transactions); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("parentHash", parentHash) - .add("feeRecipient", feeRecipient) - .add("stateRoot", stateRoot) - .add("receiptsRoot", receiptsRoot) - .add("logsBloom", logsBloom) - .add("prevRandao", prevRandao) - .add("blockNumber", blockNumber) - .add("gasLimit", gasLimit) - .add("gasUsed", gasUsed) - .add("timestamp", timestamp) - .add("extraData", extraData) - .add("baseFeePerGas", baseFeePerGas) - .add("blockHash", blockHash) - .add("transactions", transactions) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/ExecutionPayloadCommon.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/ExecutionPayloadCommon.java deleted file mode 100644 index d3a7cb9f868..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/ExecutionPayloadCommon.java +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.bellatrix; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES20; -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_BYTES20; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_BYTES32; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import org.apache.tuweni.bytes.Bytes; -import org.apache.tuweni.bytes.Bytes32; -import org.apache.tuweni.units.bigints.UInt256; -import tech.pegasys.teku.infrastructure.bytes.Bytes20; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -public abstract class ExecutionPayloadCommon { - - @JsonProperty("parent_hash") - @Schema( - type = "string", - format = "byte", - pattern = PATTERN_BYTES32, - description = DESCRIPTION_BYTES32) - public final Bytes32 parentHash; - - @JsonProperty("fee_recipient") - @Schema( - type = "string", - format = "byte", - pattern = PATTERN_BYTES20, - description = DESCRIPTION_BYTES20) - public final Bytes20 feeRecipient; - - @JsonProperty("state_root") - @Schema( - type = "string", - format = "byte", - pattern = PATTERN_BYTES32, - description = DESCRIPTION_BYTES32) - public final Bytes32 stateRoot; - - @JsonProperty("receipts_root") - @Schema( - type = "string", - format = "byte", - pattern = PATTERN_BYTES32, - description = DESCRIPTION_BYTES32) - public final Bytes32 receiptsRoot; - - @JsonProperty("logs_bloom") - @Schema(type = "string", format = "byte") - public final Bytes logsBloom; - - @JsonProperty("prev_randao") - @Schema( - type = "string", - format = "byte", - pattern = PATTERN_BYTES32, - description = DESCRIPTION_BYTES32) - public final Bytes32 prevRandao; - - @JsonProperty("block_number") - @Schema(type = "string", format = "uint64") - public final UInt64 blockNumber; - - @JsonProperty("gas_limit") - @Schema(type = "string", format = "uint64") - public final UInt64 gasLimit; - - @JsonProperty("gas_used") - @Schema(type = "string", format = "uint64") - public final UInt64 gasUsed; - - @Schema(type = "string", format = "uint64") - public final UInt64 timestamp; - - @JsonProperty("extra_data") - @Schema(type = "string", format = "byte") - public final Bytes extraData; - - @JsonProperty("base_fee_per_gas") - @Schema(type = "string", format = "uint256") - public final UInt256 baseFeePerGas; - - @JsonProperty("block_hash") - @Schema( - type = "string", - format = "byte", - pattern = PATTERN_BYTES32, - description = DESCRIPTION_BYTES32) - public final Bytes32 blockHash; - - public ExecutionPayloadCommon( - final @JsonProperty("parent_hash") Bytes32 parentHash, - final @JsonProperty("fee_recipient") Bytes20 feeRecipient, - final @JsonProperty("state_root") Bytes32 stateRoot, - final @JsonProperty("receipts_root") Bytes32 receiptsRoot, - final @JsonProperty("logs_bloom") Bytes logsBloom, - final @JsonProperty("prev_randao") Bytes32 prevRandao, - final @JsonProperty("block_number") UInt64 blockNumber, - final @JsonProperty("gas_limit") UInt64 gasLimit, - final @JsonProperty("gas_used") UInt64 gasUsed, - final @JsonProperty("timestamp") UInt64 timestamp, - final @JsonProperty("extra_data") Bytes extraData, - final @JsonProperty("base_fee_per_gas") UInt256 baseFeePerGas, - final @JsonProperty("block_hash") Bytes32 blockHash) { - this.parentHash = parentHash; - this.feeRecipient = feeRecipient; - this.stateRoot = stateRoot; - this.receiptsRoot = receiptsRoot; - this.logsBloom = logsBloom; - this.prevRandao = prevRandao; - this.blockNumber = blockNumber; - this.gasLimit = gasLimit; - this.gasUsed = gasUsed; - this.timestamp = timestamp; - this.extraData = extraData; - this.baseFeePerGas = baseFeePerGas; - this.blockHash = blockHash; - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final ExecutionPayloadCommon that = (ExecutionPayloadCommon) o; - return Objects.equals(parentHash, that.parentHash) - && Objects.equals(feeRecipient, that.feeRecipient) - && Objects.equals(stateRoot, that.stateRoot) - && Objects.equals(receiptsRoot, that.receiptsRoot) - && Objects.equals(logsBloom, that.logsBloom) - && Objects.equals(prevRandao, that.prevRandao) - && Objects.equals(blockNumber, that.blockNumber) - && Objects.equals(gasLimit, that.gasLimit) - && Objects.equals(gasUsed, that.gasUsed) - && Objects.equals(timestamp, that.timestamp) - && Objects.equals(extraData, that.extraData) - && Objects.equals(baseFeePerGas, that.baseFeePerGas) - && Objects.equals(blockHash, that.blockHash); - } - - @Override - public int hashCode() { - return Objects.hash( - parentHash, - feeRecipient, - stateRoot, - receiptsRoot, - logsBloom, - prevRandao, - blockNumber, - gasLimit, - gasUsed, - timestamp, - extraData, - baseFeePerGas, - blockHash); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("parentHash", parentHash) - .add("feeRecipient", feeRecipient) - .add("stateRoot", stateRoot) - .add("receiptsRoot", receiptsRoot) - .add("logsBloom", logsBloom) - .add("prevRandao", prevRandao) - .add("blockNumber", blockNumber) - .add("gasLimit", gasLimit) - .add("gasUsed", gasUsed) - .add("timestamp", timestamp) - .add("extraData", extraData) - .add("baseFeePerGas", baseFeePerGas) - .add("blockHash", blockHash) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/ExecutionPayloadHeaderBellatrix.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/ExecutionPayloadHeaderBellatrix.java deleted file mode 100644 index ee0d49477ef..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/ExecutionPayloadHeaderBellatrix.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.bellatrix; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import java.util.Optional; -import org.apache.tuweni.bytes.Bytes; -import org.apache.tuweni.bytes.Bytes32; -import org.apache.tuweni.units.bigints.UInt256; -import tech.pegasys.teku.api.schema.ExecutionPayloadHeader; -import tech.pegasys.teku.infrastructure.bytes.Bytes20; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayload; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeaderSchema; - -public class ExecutionPayloadHeaderBellatrix extends ExecutionPayloadCommon - implements ExecutionPayloadHeader { - - @JsonProperty("transactions_root") - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 transactionsRoot; - - @JsonCreator - public ExecutionPayloadHeaderBellatrix( - final @JsonProperty("parent_hash") Bytes32 parentHash, - final @JsonProperty("fee_recipient") Bytes20 feeRecipient, - final @JsonProperty("state_root") Bytes32 stateRoot, - final @JsonProperty("receipts_root") Bytes32 receiptsRoot, - final @JsonProperty("logs_bloom") Bytes logsBloom, - final @JsonProperty("prev_randao") Bytes32 prevRandao, - final @JsonProperty("block_number") UInt64 blockNumber, - final @JsonProperty("gas_limit") UInt64 gasLimit, - final @JsonProperty("gas_used") UInt64 gasUsed, - final @JsonProperty("timestamp") UInt64 timestamp, - final @JsonProperty("extra_data") Bytes extraData, - final @JsonProperty("base_fee_per_gas") UInt256 baseFeePerGas, - final @JsonProperty("block_hash") Bytes32 blockHash, - final @JsonProperty("transactions_root") Bytes32 transactionsRoot) { - super( - parentHash, - feeRecipient, - stateRoot, - receiptsRoot, - logsBloom, - prevRandao, - blockNumber, - gasLimit, - gasUsed, - timestamp, - extraData, - baseFeePerGas, - blockHash); - this.transactionsRoot = transactionsRoot; - } - - public ExecutionPayloadHeaderBellatrix( - final tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeader - executionPayloadHeader) { - super( - executionPayloadHeader.getParentHash(), - executionPayloadHeader.getFeeRecipient(), - executionPayloadHeader.getStateRoot(), - executionPayloadHeader.getReceiptsRoot(), - executionPayloadHeader.getLogsBloom(), - executionPayloadHeader.getPrevRandao(), - executionPayloadHeader.getBlockNumber(), - executionPayloadHeader.getGasLimit(), - executionPayloadHeader.getGasUsed(), - executionPayloadHeader.getTimestamp(), - executionPayloadHeader.getExtraData(), - executionPayloadHeader.getBaseFeePerGas(), - executionPayloadHeader.getBlockHash()); - this.transactionsRoot = executionPayloadHeader.getTransactionsRoot(); - } - - public ExecutionPayloadHeaderBellatrix(final ExecutionPayload executionPayload) { - super( - executionPayload.getParentHash(), - executionPayload.getFeeRecipient(), - executionPayload.getStateRoot(), - executionPayload.getReceiptsRoot(), - executionPayload.getLogsBloom(), - executionPayload.getPrevRandao(), - executionPayload.getBlockNumber(), - executionPayload.getGasLimit(), - executionPayload.getGasUsed(), - executionPayload.getTimestamp(), - executionPayload.getExtraData(), - executionPayload.getBaseFeePerGas(), - executionPayload.getBlockHash()); - this.transactionsRoot = executionPayload.getTransactions().hashTreeRoot(); - } - - @Override - public tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeader - asInternalExecutionPayloadHeader(final ExecutionPayloadHeaderSchema schema) { - return schema.createExecutionPayloadHeader( - payloadBuilder -> - payloadBuilder - .parentHash(parentHash) - .feeRecipient(feeRecipient) - .stateRoot(stateRoot) - .receiptsRoot(receiptsRoot) - .logsBloom(logsBloom) - .prevRandao(prevRandao) - .blockNumber(blockNumber) - .gasLimit(gasLimit) - .gasUsed(gasUsed) - .timestamp(timestamp) - .extraData(extraData) - .baseFeePerGas(baseFeePerGas) - .blockHash(blockHash) - .transactionsRoot(transactionsRoot)); - } - - @Override - public Optional toVersionBellatrix() { - return Optional.of(this); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - if (!super.equals(o)) { - return false; - } - final ExecutionPayloadHeaderBellatrix that = (ExecutionPayloadHeaderBellatrix) o; - return Objects.equals(transactionsRoot, that.transactionsRoot); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), transactionsRoot); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("parentHash", parentHash) - .add("feeRecipient", feeRecipient) - .add("stateRoot", stateRoot) - .add("receiptsRoot", receiptsRoot) - .add("logsBloom", logsBloom) - .add("prevRandao", prevRandao) - .add("blockNumber", blockNumber) - .add("gasLimit", gasLimit) - .add("gasUsed", gasUsed) - .add("timestamp", timestamp) - .add("extraData", extraData) - .add("baseFeePerGas", baseFeePerGas) - .add("blockHash", blockHash) - .add("transactionsRoot", transactionsRoot) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/SignedBeaconBlockBellatrix.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/SignedBeaconBlockBellatrix.java deleted file mode 100644 index ad979e67be9..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/SignedBeaconBlockBellatrix.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.bellatrix; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.SignedBeaconBlock; -import tech.pegasys.teku.api.schema.interfaces.SignedBlock; - -public class SignedBeaconBlockBellatrix extends SignedBeaconBlock implements SignedBlock { - private final BeaconBlockBellatrix message; - - public SignedBeaconBlockBellatrix( - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock internalBlock) { - super(internalBlock); - this.message = new BeaconBlockBellatrix(internalBlock.getMessage()); - } - - @Override - public BeaconBlockBellatrix getMessage() { - return message; - } - - @JsonCreator - public SignedBeaconBlockBellatrix( - @JsonProperty("message") final BeaconBlockBellatrix message, - @JsonProperty("signature") final BLSSignature signature) { - super(message, signature); - this.message = message; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/SignedBlindedBeaconBlockBellatrix.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/SignedBlindedBeaconBlockBellatrix.java deleted file mode 100644 index 078a1f89f22..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/bellatrix/SignedBlindedBeaconBlockBellatrix.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.bellatrix; - -import static com.google.common.base.Preconditions.checkArgument; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.SignedBeaconBlock; -import tech.pegasys.teku.api.schema.interfaces.SignedBlock; - -public class SignedBlindedBeaconBlockBellatrix extends SignedBeaconBlock implements SignedBlock { - private final BlindedBlockBellatrix message; - - public SignedBlindedBeaconBlockBellatrix( - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock internalBlock) { - super(internalBlock); - checkArgument( - internalBlock.getMessage().getBody().isBlinded(), "requires a signed blinded beacon block"); - this.message = new BlindedBlockBellatrix(internalBlock.getMessage()); - } - - @Override - public BlindedBlockBellatrix getMessage() { - return message; - } - - @JsonCreator - public SignedBlindedBeaconBlockBellatrix( - @JsonProperty("message") final BlindedBlockBellatrix message, - @JsonProperty("signature") final BLSSignature signature) { - super(message, signature); - this.message = message; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BeaconBlockBodyCapella.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BeaconBlockBodyCapella.java deleted file mode 100644 index edd96192d7c..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BeaconBlockBodyCapella.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.capella; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.Attestation; -import tech.pegasys.teku.api.schema.AttesterSlashing; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.Deposit; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.ProposerSlashing; -import tech.pegasys.teku.api.schema.SignedVoluntaryExit; -import tech.pegasys.teku.api.schema.altair.BeaconBlockBodyAltair; -import tech.pegasys.teku.api.schema.altair.SyncAggregate; -import tech.pegasys.teku.infrastructure.async.SafeFuture; -import tech.pegasys.teku.infrastructure.ssz.schema.SszListSchema; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.capella.BeaconBlockBodySchemaCapella; - -public class BeaconBlockBodyCapella extends BeaconBlockBodyAltair { - - @JsonProperty("execution_payload") - public final ExecutionPayloadCapella executionPayload; - - @JsonProperty("bls_to_execution_changes") - public final List blsToExecutionChanges; - - @JsonCreator - public BeaconBlockBodyCapella( - @JsonProperty("randao_reveal") final BLSSignature randaoReveal, - @JsonProperty("eth1_data") final Eth1Data eth1Data, - @JsonProperty("graffiti") final Bytes32 graffiti, - @JsonProperty("proposer_slashings") final List proposerSlashings, - @JsonProperty("attester_slashings") final List attesterSlashings, - @JsonProperty("attestations") final List attestations, - @JsonProperty("deposits") final List deposits, - @JsonProperty("voluntary_exits") final List voluntaryExits, - @JsonProperty("sync_aggregate") final SyncAggregate syncAggregate, - @JsonProperty("execution_payload") final ExecutionPayloadCapella executionPayload, - @JsonProperty("bls_to_execution_changes") - final List blsToExecutionChanges) { - super( - randaoReveal, - eth1Data, - graffiti, - proposerSlashings, - attesterSlashings, - attestations, - deposits, - voluntaryExits, - syncAggregate); - checkNotNull(executionPayload, "Execution Payload is required for capella blocks"); - this.executionPayload = executionPayload; - checkNotNull(blsToExecutionChanges, "BlsToExecutionChanges is required for capella blocks"); - this.blsToExecutionChanges = blsToExecutionChanges; - } - - public BeaconBlockBodyCapella( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.capella - .BeaconBlockBodyCapella - message) { - super(message); - checkNotNull(message.getExecutionPayload(), "Execution Payload is required for capella blocks"); - this.executionPayload = new ExecutionPayloadCapella(message.getExecutionPayload()); - checkNotNull( - message.getBlsToExecutionChanges(), "BlsToExecutionChanges is required for capella blocks"); - this.blsToExecutionChanges = - message.getBlsToExecutionChanges().stream().map(SignedBlsToExecutionChange::new).toList(); - } - - @Override - public BeaconBlockBodySchemaCapella getBeaconBlockBodySchema(final SpecVersion spec) { - return (BeaconBlockBodySchemaCapella) spec.getSchemaDefinitions().getBeaconBlockBodySchema(); - } - - @Override - public BeaconBlockBody asInternalBeaconBlockBody(final SpecVersion spec) { - final SszListSchema< - tech.pegasys.teku.spec.datastructures.operations.SignedBlsToExecutionChange, ?> - blsToExecutionChangesSchema = - getBeaconBlockBodySchema(spec).getBlsToExecutionChangesSchema(); - - return super.asInternalBeaconBlockBody( - spec, - builder -> { - builder.executionPayload(executionPayload.asInternalExecutionPayload(spec)); - builder.blsToExecutionChanges( - this.blsToExecutionChanges.stream() - .map(b -> b.asInternalSignedBlsToExecutionChange(spec)) - .collect(blsToExecutionChangesSchema.collector())); - return SafeFuture.COMPLETE; - }); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BeaconBlockCapella.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BeaconBlockCapella.java deleted file mode 100644 index 848ab6c4471..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BeaconBlockCapella.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.capella; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.altair.BeaconBlockAltair; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsCapella; - -public class BeaconBlockCapella extends BeaconBlockAltair { - - public BeaconBlockCapella(final BeaconBlock message) { - super( - message.getSlot(), - message.getProposerIndex(), - message.getParentRoot(), - message.getStateRoot(), - new BeaconBlockBodyCapella(message.getBody().toVersionCapella().orElseThrow())); - } - - @Override - public BeaconBlock asInternalBeaconBlock(final Spec spec) { - final SpecVersion specVersion = spec.atSlot(slot); - return SchemaDefinitionsCapella.required(specVersion.getSchemaDefinitions()) - .getBeaconBlockSchema() - .create( - slot, - proposer_index, - parent_root, - state_root, - body.asInternalBeaconBlockBody(specVersion)); - } - - @JsonProperty("body") - @Override - public BeaconBlockBodyCapella getBody() { - return (BeaconBlockBodyCapella) body; - } - - @JsonCreator - public BeaconBlockCapella( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("proposer_index") final UInt64 proposerIndex, - @JsonProperty("parent_root") final Bytes32 parentRoot, - @JsonProperty("state_root") final Bytes32 stateRoot, - @JsonProperty("body") final BeaconBlockBodyCapella body) { - super(slot, proposerIndex, parentRoot, stateRoot, body); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BeaconStateCapella.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BeaconStateCapella.java deleted file mode 100644 index 2ab2d60a752..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BeaconStateCapella.java +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.capella; - -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_UINT64; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.BeaconBlockHeader; -import tech.pegasys.teku.api.schema.Checkpoint; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.Fork; -import tech.pegasys.teku.api.schema.Validator; -import tech.pegasys.teku.api.schema.altair.BeaconStateAltair; -import tech.pegasys.teku.api.schema.altair.SyncCommittee; -import tech.pegasys.teku.infrastructure.ssz.collections.SszBitvector; -import tech.pegasys.teku.infrastructure.ssz.schema.SszListSchema; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.execution.versions.capella.ExecutionPayloadHeaderSchemaCapella; -import tech.pegasys.teku.spec.datastructures.state.SyncCommittee.SyncCommitteeSchema; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.MutableBeaconState; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.capella.BeaconStateSchemaCapella; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.capella.MutableBeaconStateCapella; - -public class BeaconStateCapella extends BeaconStateAltair { - - @JsonProperty("latest_execution_payload_header") - public ExecutionPayloadHeaderCapella latestExecutionPayloadHeader; - - @JsonProperty("next_withdrawal_index") - @Schema(type = "string", example = EXAMPLE_UINT64) - public final UInt64 nextWithdrawalIndex; - - @JsonProperty("next_withdrawal_validator_index") - @Schema(type = "string", example = EXAMPLE_UINT64) - public final UInt64 nextWithdrawalValidatorIndex; - - @JsonProperty("historical_summaries") - public final List historicalSummaries; - - public BeaconStateCapella( - @JsonProperty("genesis_time") final UInt64 genesisTime, - @JsonProperty("genesis_validators_root") final Bytes32 genesisValidatorsRoot, - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("fork") final Fork fork, - @JsonProperty("latest_block_header") final BeaconBlockHeader latestBlockHeader, - @JsonProperty("block_roots") final List blockRoots, - @JsonProperty("state_roots") final List stateRoots, - @JsonProperty("historical_roots") final List historicalRoots, - @JsonProperty("eth1_data") final Eth1Data eth1Data, - @JsonProperty("eth1_data_votes") final List eth1DataVotes, - @JsonProperty("eth1_deposit_index") final UInt64 eth1DepositIndex, - @JsonProperty("validators") final List validators, - @JsonProperty("balances") final List balances, - @JsonProperty("randao_mixes") final List randaoMixes, - @JsonProperty("slashings") final List slashings, - @JsonProperty("previous_epoch_participation") final byte[] previousEpochParticipation, - @JsonProperty("current_epoch_participation") final byte[] currentEpochParticipation, - @JsonProperty("justification_bits") final SszBitvector justificationBits, - @JsonProperty("previous_justified_checkpoint") final Checkpoint previousJustifiedCheckpoint, - @JsonProperty("current_justified_checkpoint") final Checkpoint currentJustifiedCheckpoint, - @JsonProperty("finalized_checkpoint") final Checkpoint finalizedCheckpoint, - @JsonProperty("inactivity_scores") final List inactivityScores, - @JsonProperty("current_sync_committee") final SyncCommittee currentSyncCommittee, - @JsonProperty("next_sync_committee") final SyncCommittee nextSyncCommittee, - @JsonProperty("latest_execution_payload_header") - final ExecutionPayloadHeaderCapella latestExecutionPayloadHeader, - @JsonProperty("next_withdrawal_index") final UInt64 nextWithdrawalIndex, - @JsonProperty("next_withdrawal_validator_index") final UInt64 nextWithdrawalValidatorIndex, - @JsonProperty("historical_summaries") final List historicalSummaries) { - super( - genesisTime, - genesisValidatorsRoot, - slot, - fork, - latestBlockHeader, - blockRoots, - stateRoots, - historicalRoots, - eth1Data, - eth1DataVotes, - eth1DepositIndex, - validators, - balances, - randaoMixes, - slashings, - previousEpochParticipation, - currentEpochParticipation, - justificationBits, - previousJustifiedCheckpoint, - currentJustifiedCheckpoint, - finalizedCheckpoint, - inactivityScores, - currentSyncCommittee, - nextSyncCommittee); - this.latestExecutionPayloadHeader = latestExecutionPayloadHeader; - this.nextWithdrawalIndex = nextWithdrawalIndex; - this.nextWithdrawalValidatorIndex = nextWithdrawalValidatorIndex; - this.historicalSummaries = historicalSummaries; - } - - public BeaconStateCapella(final BeaconState beaconState) { - super(beaconState); - final tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.capella - .BeaconStateCapella - capella = beaconState.toVersionCapella().orElseThrow(); - this.latestExecutionPayloadHeader = - new ExecutionPayloadHeaderCapella(capella.getLatestExecutionPayloadHeader()); - this.nextWithdrawalIndex = capella.getNextWithdrawalIndex(); - this.nextWithdrawalValidatorIndex = capella.getNextWithdrawalValidatorIndex(); - this.historicalSummaries = - capella.getHistoricalSummaries().stream().map(HistoricalSummary::new).toList(); - } - - @Override - protected void applyAdditionalFields( - final MutableBeaconState state, final SpecVersion specVersion) { - state - .toMutableVersionCapella() - .ifPresent( - mutableBeaconStateCapella -> - applyCapellaFields( - specVersion, - mutableBeaconStateCapella, - BeaconStateSchemaCapella.required( - mutableBeaconStateCapella.getBeaconStateSchema()) - .getCurrentSyncCommitteeSchema(), - BeaconStateSchemaCapella.required( - mutableBeaconStateCapella.getBeaconStateSchema()) - .getLastExecutionPayloadHeaderSchema(), - BeaconStateSchemaCapella.required( - mutableBeaconStateCapella.getBeaconStateSchema()) - .getHistoricalSummariesSchema(), - this)); - } - - protected static void applyCapellaFields( - final SpecVersion specVersion, - final MutableBeaconStateCapella state, - final SyncCommitteeSchema syncCommitteeSchema, - final ExecutionPayloadHeaderSchemaCapella executionPayloadHeaderSchema, - final SszListSchema< - tech.pegasys.teku.spec.datastructures.state.versions.capella.HistoricalSummary, ?> - historicalSummariesSchema, - final BeaconStateCapella instance) { - - BeaconStateAltair.applyAltairFields(state, syncCommitteeSchema, instance); - - state.setLatestExecutionPayloadHeader( - executionPayloadHeaderSchema.createExecutionPayloadHeader( - builder -> - builder - .parentHash(instance.latestExecutionPayloadHeader.parentHash) - .feeRecipient(instance.latestExecutionPayloadHeader.feeRecipient) - .stateRoot(instance.latestExecutionPayloadHeader.stateRoot) - .receiptsRoot(instance.latestExecutionPayloadHeader.receiptsRoot) - .logsBloom(instance.latestExecutionPayloadHeader.logsBloom) - .prevRandao(instance.latestExecutionPayloadHeader.prevRandao) - .blockNumber(instance.latestExecutionPayloadHeader.blockNumber) - .gasLimit(instance.latestExecutionPayloadHeader.gasLimit) - .gasUsed(instance.latestExecutionPayloadHeader.gasUsed) - .timestamp(instance.latestExecutionPayloadHeader.timestamp) - .extraData(instance.latestExecutionPayloadHeader.extraData) - .baseFeePerGas(instance.latestExecutionPayloadHeader.baseFeePerGas) - .blockHash(instance.latestExecutionPayloadHeader.blockHash) - .transactionsRoot(instance.latestExecutionPayloadHeader.transactionsRoot) - .withdrawalsRoot(() -> instance.latestExecutionPayloadHeader.withdrawalsRoot))); - - state.setNextWithdrawalIndex(instance.nextWithdrawalIndex); - state.setNextWithdrawalValidatorIndex(instance.nextWithdrawalValidatorIndex); - state.setHistoricalSummaries( - historicalSummariesSchema.createFromElements( - instance.historicalSummaries.stream() - .map( - historicalSummary -> historicalSummary.asInternalHistoricalSummary(specVersion)) - .toList())); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BlindedBeaconBlockBodyCapella.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BlindedBeaconBlockBodyCapella.java deleted file mode 100644 index f50664926c6..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BlindedBeaconBlockBodyCapella.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.capella; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.Attestation; -import tech.pegasys.teku.api.schema.AttesterSlashing; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.Deposit; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.ProposerSlashing; -import tech.pegasys.teku.api.schema.SignedVoluntaryExit; -import tech.pegasys.teku.api.schema.altair.BeaconBlockBodyAltair; -import tech.pegasys.teku.api.schema.altair.SyncAggregate; -import tech.pegasys.teku.infrastructure.async.SafeFuture; -import tech.pegasys.teku.infrastructure.ssz.schema.SszListSchema; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.capella.BlindedBeaconBlockBodySchemaCapella; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeaderSchema; - -public class BlindedBeaconBlockBodyCapella extends BeaconBlockBodyAltair { - - @JsonProperty("execution_payload_header") - public final ExecutionPayloadHeaderCapella executionPayloadHeader; - - @JsonProperty("bls_to_execution_changes") - public final List blsToExecutionChanges; - - @JsonCreator - public BlindedBeaconBlockBodyCapella( - @JsonProperty("randao_reveal") final BLSSignature randaoReveal, - @JsonProperty("eth1_data") final Eth1Data eth1Data, - @JsonProperty("graffiti") final Bytes32 graffiti, - @JsonProperty("proposer_slashings") final List proposerSlashings, - @JsonProperty("attester_slashings") final List attesterSlashings, - @JsonProperty("attestations") final List attestations, - @JsonProperty("deposits") final List deposits, - @JsonProperty("voluntary_exits") final List voluntaryExits, - @JsonProperty("sync_aggregate") final SyncAggregate syncAggregate, - @JsonProperty("execution_payload_header") - final ExecutionPayloadHeaderCapella executionPayloadHeader, - @JsonProperty("bls_to_execution_changes") - final List blsToExecutionChanges) { - super( - randaoReveal, - eth1Data, - graffiti, - proposerSlashings, - attesterSlashings, - attestations, - deposits, - voluntaryExits, - syncAggregate); - checkNotNull( - executionPayloadHeader, "Execution Payload Header is required for capella blinded blocks"); - this.executionPayloadHeader = executionPayloadHeader; - checkNotNull( - blsToExecutionChanges, "bls_to_execution_changes is required for capella blinded blocks"); - this.blsToExecutionChanges = blsToExecutionChanges; - } - - public BlindedBeaconBlockBodyCapella( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.capella - .BlindedBeaconBlockBodyCapella - blockBody) { - super(blockBody); - this.executionPayloadHeader = - new ExecutionPayloadHeaderCapella(blockBody.getExecutionPayloadHeader()); - this.blsToExecutionChanges = - blockBody.getBlsToExecutionChanges().stream().map(SignedBlsToExecutionChange::new).toList(); - } - - @Override - public BlindedBeaconBlockBodySchemaCapella getBeaconBlockBodySchema(final SpecVersion spec) { - return (BlindedBeaconBlockBodySchemaCapella) - spec.getSchemaDefinitions().getBlindedBeaconBlockBodySchema(); - } - - @Override - public boolean isBlinded() { - return true; - } - - @Override - public BeaconBlockBody asInternalBeaconBlockBody(final SpecVersion spec) { - - final ExecutionPayloadHeaderSchema executionPayloadHeaderSchema = - getBeaconBlockBodySchema(spec).getExecutionPayloadHeaderSchema(); - - final SszListSchema< - tech.pegasys.teku.spec.datastructures.operations.SignedBlsToExecutionChange, ?> - blsToExecutionChangesSchema = getBeaconBlockBodySchema(spec).getBlsToExecutionChanges(); - - return super.asInternalBeaconBlockBody( - spec, - builder -> { - builder.executionPayloadHeader( - executionPayloadHeader.asInternalExecutionPayloadHeader( - executionPayloadHeaderSchema)); - builder.blsToExecutionChanges( - this.blsToExecutionChanges.stream() - .map(b -> b.asInternalSignedBlsToExecutionChange(spec)) - .collect(blsToExecutionChangesSchema.collector())); - return SafeFuture.COMPLETE; - }); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BlindedBlockCapella.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BlindedBlockCapella.java deleted file mode 100644 index 43dc083a560..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BlindedBlockCapella.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.capella; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.altair.BeaconBlockAltair; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock; -import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlockSchema; - -public class BlindedBlockCapella extends BeaconBlockAltair { - - public BlindedBlockCapella(final BeaconBlock message) { - super( - message.getSlot(), - message.getProposerIndex(), - message.getParentRoot(), - message.getStateRoot(), - new BlindedBeaconBlockBodyCapella( - message.getBody().toBlindedVersionCapella().orElseThrow())); - } - - @Override - public BeaconBlockSchema getBeaconBlockSchema(final SpecVersion spec) { - return spec.getSchemaDefinitions().getBlindedBeaconBlockSchema(); - } - - @Override - public BeaconBlock asInternalBeaconBlock(final Spec spec) { - final SpecVersion specVersion = spec.atSlot(slot); - return getBeaconBlockSchema(specVersion) - .create( - slot, - proposer_index, - parent_root, - state_root, - body.asInternalBeaconBlockBody(specVersion)); - } - - @JsonProperty("body") - @Override - public BlindedBeaconBlockBodyCapella getBody() { - return (BlindedBeaconBlockBodyCapella) body; - } - - @JsonCreator - public BlindedBlockCapella( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("proposer_index") final UInt64 proposerIndex, - @JsonProperty("parent_root") final Bytes32 parentRoot, - @JsonProperty("state_root") final Bytes32 stateRoot, - @JsonProperty("body") final BlindedBeaconBlockBodyCapella body) { - super(slot, proposerIndex, parentRoot, stateRoot, body); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BlsToExecutionChange.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BlsToExecutionChange.java deleted file mode 100644 index c99ec968aaa..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/BlsToExecutionChange.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.capella; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES20; -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES48; -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_PUBKEY; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_BYTES20; -import static tech.pegasys.teku.api.schema.SchemaConstants.PATTERN_PUBKEY; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Optional; -import tech.pegasys.teku.api.schema.BLSPubKey; -import tech.pegasys.teku.infrastructure.bytes.Bytes20; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsCapella; - -public class BlsToExecutionChange { - - @JsonProperty("validator_index") - @Schema(type = "string", format = "uint64") - public final UInt64 validatorIndex; - - @JsonProperty("from_bls_pubkey") - @Schema( - type = "string", - pattern = PATTERN_PUBKEY, - example = EXAMPLE_PUBKEY, - description = DESCRIPTION_BYTES48) - public final BLSPubKey fromBlsPubkey; - - @JsonProperty("to_execution_address") - @Schema( - type = "string", - format = "byte", - pattern = PATTERN_BYTES20, - description = DESCRIPTION_BYTES20) - public final Bytes20 toExecutionAddress; - - @JsonCreator - public BlsToExecutionChange( - @JsonProperty("validator_index") final UInt64 validatorIndex, - @JsonProperty("from_bls_pubkey") final BLSPubKey fromBlsPubkey, - @JsonProperty("to_execution_address") final Bytes20 toExecutionAddress) { - this.validatorIndex = validatorIndex; - this.fromBlsPubkey = fromBlsPubkey; - this.toExecutionAddress = toExecutionAddress; - } - - public BlsToExecutionChange( - final tech.pegasys.teku.spec.datastructures.operations.BlsToExecutionChange - blsToExecutionChanges) { - this.validatorIndex = blsToExecutionChanges.getValidatorIndex(); - this.fromBlsPubkey = new BLSPubKey(blsToExecutionChanges.getFromBlsPubkey()); - this.toExecutionAddress = blsToExecutionChanges.getToExecutionAddress(); - } - - public tech.pegasys.teku.spec.datastructures.operations.BlsToExecutionChange - asInternalBlsToExecutionChange(final SpecVersion spec) { - final Optional schemaDefinitionsCapella = - spec.getSchemaDefinitions().toVersionCapella(); - - if (schemaDefinitionsCapella.isEmpty()) { - throw new IllegalArgumentException( - "Could not create BlsToExecutionChange for non-capella spec"); - } - - return schemaDefinitionsCapella - .get() - .getBlsToExecutionChangeSchema() - .create(validatorIndex, fromBlsPubkey.asBLSPublicKey(), toExecutionAddress); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/ExecutionPayloadCapella.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/ExecutionPayloadCapella.java deleted file mode 100644 index 46c2a5426e8..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/ExecutionPayloadCapella.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.capella; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import org.apache.tuweni.bytes.Bytes; -import org.apache.tuweni.bytes.Bytes32; -import org.apache.tuweni.units.bigints.UInt256; -import tech.pegasys.teku.api.schema.ExecutionPayload; -import tech.pegasys.teku.api.schema.bellatrix.ExecutionPayloadBellatrix; -import tech.pegasys.teku.infrastructure.bytes.Bytes20; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadBuilder; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadSchema; - -public class ExecutionPayloadCapella extends ExecutionPayloadBellatrix implements ExecutionPayload { - - @JsonProperty("withdrawals") - @ArraySchema(schema = @Schema(type = "string", format = "byte")) - public final List withdrawals; - - @JsonCreator - public ExecutionPayloadCapella( - final @JsonProperty("parent_hash") Bytes32 parentHash, - final @JsonProperty("fee_recipient") Bytes20 feeRecipient, - final @JsonProperty("state_root") Bytes32 stateRoot, - final @JsonProperty("receipts_root") Bytes32 receiptsRoot, - final @JsonProperty("logs_bloom") Bytes logsBloom, - final @JsonProperty("prev_randao") Bytes32 prevRandao, - final @JsonProperty("block_number") UInt64 blockNumber, - final @JsonProperty("gas_limit") UInt64 gasLimit, - final @JsonProperty("gas_used") UInt64 gasUsed, - final @JsonProperty("timestamp") UInt64 timestamp, - final @JsonProperty("extra_data") Bytes extraData, - final @JsonProperty("base_fee_per_gas") UInt256 baseFeePerGas, - final @JsonProperty("block_hash") Bytes32 blockHash, - final @JsonProperty("transactions") List transactions, - final @JsonProperty("withdrawals") List withdrawals) { - super( - parentHash, - feeRecipient, - stateRoot, - receiptsRoot, - logsBloom, - prevRandao, - blockNumber, - gasLimit, - gasUsed, - timestamp, - extraData, - baseFeePerGas, - blockHash, - transactions); - this.withdrawals = withdrawals != null ? withdrawals : Collections.emptyList(); - } - - public ExecutionPayloadCapella( - final tech.pegasys.teku.spec.datastructures.execution.ExecutionPayload executionPayload) { - super(executionPayload); - this.withdrawals = - executionPayload.getOptionalWithdrawals().orElseThrow().stream() - .map(Withdrawal::new) - .toList(); - } - - @Override - protected ExecutionPayloadBuilder applyToBuilder( - final ExecutionPayloadSchema executionPayloadSchema, - final ExecutionPayloadBuilder builder) { - return super.applyToBuilder(executionPayloadSchema, builder) - .withdrawals( - () -> - withdrawals.stream() - .map( - withdrawal -> - withdrawal.asInternalWithdrawal( - executionPayloadSchema.getWithdrawalSchemaRequired())) - .toList()); - } - - @Override - public Optional toVersionCapella() { - return Optional.of(this); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - if (!super.equals(o)) { - return false; - } - final ExecutionPayloadCapella that = (ExecutionPayloadCapella) o; - return Objects.equals(withdrawals, that.withdrawals); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), withdrawals); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("parentHash", parentHash) - .add("feeRecipient", feeRecipient) - .add("stateRoot", stateRoot) - .add("receiptsRoot", receiptsRoot) - .add("logsBloom", logsBloom) - .add("prevRandao", prevRandao) - .add("blockNumber", blockNumber) - .add("gasLimit", gasLimit) - .add("gasUsed", gasUsed) - .add("timestamp", timestamp) - .add("extraData", extraData) - .add("baseFeePerGas", baseFeePerGas) - .add("blockHash", blockHash) - .add("transactions", transactions) - .add("withdrawals", withdrawals) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/ExecutionPayloadHeaderCapella.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/ExecutionPayloadHeaderCapella.java deleted file mode 100644 index 94a60b2c801..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/ExecutionPayloadHeaderCapella.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.capella; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Objects; -import java.util.Optional; -import org.apache.tuweni.bytes.Bytes; -import org.apache.tuweni.bytes.Bytes32; -import org.apache.tuweni.units.bigints.UInt256; -import tech.pegasys.teku.api.schema.bellatrix.ExecutionPayloadHeaderBellatrix; -import tech.pegasys.teku.infrastructure.bytes.Bytes20; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeader; - -public class ExecutionPayloadHeaderCapella extends ExecutionPayloadHeaderBellatrix { - - @JsonProperty("withdrawals_root") - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 withdrawalsRoot; - - @JsonCreator - public ExecutionPayloadHeaderCapella( - final @JsonProperty("parent_hash") Bytes32 parentHash, - final @JsonProperty("fee_recipient") Bytes20 feeRecipient, - final @JsonProperty("state_root") Bytes32 stateRoot, - final @JsonProperty("receipts_root") Bytes32 receiptsRoot, - final @JsonProperty("logs_bloom") Bytes logsBloom, - final @JsonProperty("prev_randao") Bytes32 prevRandao, - final @JsonProperty("block_number") UInt64 blockNumber, - final @JsonProperty("gas_limit") UInt64 gasLimit, - final @JsonProperty("gas_used") UInt64 gasUsed, - final @JsonProperty("timestamp") UInt64 timestamp, - final @JsonProperty("extra_data") Bytes extraData, - final @JsonProperty("base_fee_per_gas") UInt256 baseFeePerGas, - final @JsonProperty("block_hash") Bytes32 blockHash, - final @JsonProperty("transactions_root") Bytes32 transactionsRoot, - final @JsonProperty("withdrawals_root") Bytes32 withdrawalsRoot) { - super( - parentHash, - feeRecipient, - stateRoot, - receiptsRoot, - logsBloom, - prevRandao, - blockNumber, - gasLimit, - gasUsed, - timestamp, - extraData, - baseFeePerGas, - blockHash, - transactionsRoot); - this.withdrawalsRoot = withdrawalsRoot; - } - - public ExecutionPayloadHeaderCapella(final ExecutionPayloadHeader executionPayloadHeader) { - super( - executionPayloadHeader.getParentHash(), - executionPayloadHeader.getFeeRecipient(), - executionPayloadHeader.getStateRoot(), - executionPayloadHeader.getReceiptsRoot(), - executionPayloadHeader.getLogsBloom(), - executionPayloadHeader.getPrevRandao(), - executionPayloadHeader.getBlockNumber(), - executionPayloadHeader.getGasLimit(), - executionPayloadHeader.getGasUsed(), - executionPayloadHeader.getTimestamp(), - executionPayloadHeader.getExtraData(), - executionPayloadHeader.getBaseFeePerGas(), - executionPayloadHeader.getBlockHash(), - executionPayloadHeader.getTransactionsRoot()); - this.withdrawalsRoot = executionPayloadHeader.getOptionalWithdrawalsRoot().orElseThrow(); - } - - @Override - public Optional toVersionCapella() { - return Optional.of(this); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - if (!super.equals(o)) { - return false; - } - final ExecutionPayloadHeaderCapella that = (ExecutionPayloadHeaderCapella) o; - return Objects.equals(withdrawalsRoot, that.withdrawalsRoot); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), withdrawalsRoot); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("parentHash", parentHash) - .add("feeRecipient", feeRecipient) - .add("stateRoot", stateRoot) - .add("receiptsRoot", receiptsRoot) - .add("logsBloom", logsBloom) - .add("prevRandao", prevRandao) - .add("blockNumber", blockNumber) - .add("gasLimit", gasLimit) - .add("gasUsed", gasUsed) - .add("timestamp", timestamp) - .add("extraData", extraData) - .add("baseFeePerGas", baseFeePerGas) - .add("blockHash", blockHash) - .add("transactionsRoot", transactionsRoot) - .add("withdrawalsRoot", withdrawalsRoot) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/HistoricalSummary.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/HistoricalSummary.java deleted file mode 100644 index 663a98eecb2..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/HistoricalSummary.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.capella; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES32; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Optional; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.infrastructure.ssz.primitive.SszBytes32; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsCapella; - -public class HistoricalSummary { - - @JsonProperty("block_summary_root") - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 blockSummaryRoot; - - @JsonProperty("state_summary_root") - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES32) - public final Bytes32 stateSummaryRoot; - - public HistoricalSummary( - @JsonProperty("block_summary_root") final Bytes32 blockSummaryRoot, - @JsonProperty("state_summary_root") final Bytes32 stateSummaryRoot) { - this.blockSummaryRoot = blockSummaryRoot; - this.stateSummaryRoot = stateSummaryRoot; - } - - public HistoricalSummary( - final tech.pegasys.teku.spec.datastructures.state.versions.capella.HistoricalSummary - internalSummary) { - this.blockSummaryRoot = internalSummary.getBlockSummaryRoot().get(); - this.stateSummaryRoot = internalSummary.getStateSummaryRoot().get(); - } - - public tech.pegasys.teku.spec.datastructures.state.versions.capella.HistoricalSummary - asInternalHistoricalSummary(final SpecVersion spec) { - final Optional schemaDefinitionsCapella = - spec.getSchemaDefinitions().toVersionCapella(); - if (schemaDefinitionsCapella.isEmpty()) { - throw new IllegalArgumentException("Could not create HistoricalSummary for pre-capella spec"); - } - return schemaDefinitionsCapella - .get() - .getHistoricalSummarySchema() - .create(SszBytes32.of(blockSummaryRoot), SszBytes32.of(stateSummaryRoot)); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/SignedBeaconBlockCapella.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/SignedBeaconBlockCapella.java deleted file mode 100644 index 3ec75da8624..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/SignedBeaconBlockCapella.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.capella; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.SignedBeaconBlock; -import tech.pegasys.teku.api.schema.interfaces.SignedBlock; - -public class SignedBeaconBlockCapella extends SignedBeaconBlock implements SignedBlock { - private final BeaconBlockCapella message; - - public SignedBeaconBlockCapella( - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock internalBlock) { - super(internalBlock); - this.message = new BeaconBlockCapella(internalBlock.getMessage()); - } - - @Override - public BeaconBlockCapella getMessage() { - return message; - } - - @JsonCreator - public SignedBeaconBlockCapella( - @JsonProperty("message") final BeaconBlockCapella message, - @JsonProperty("signature") final BLSSignature signature) { - super(message, signature); - this.message = message; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/SignedBlindedBeaconBlockCapella.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/SignedBlindedBeaconBlockCapella.java deleted file mode 100644 index 76b7a67916b..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/SignedBlindedBeaconBlockCapella.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.capella; - -import static com.google.common.base.Preconditions.checkArgument; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.SignedBeaconBlock; -import tech.pegasys.teku.api.schema.interfaces.SignedBlock; - -public class SignedBlindedBeaconBlockCapella extends SignedBeaconBlock implements SignedBlock { - private final BlindedBlockCapella message; - - public SignedBlindedBeaconBlockCapella( - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock internalBlock) { - super(internalBlock); - checkArgument( - internalBlock.getMessage().getBody().isBlinded(), "requires a signed blinded beacon block"); - this.message = new BlindedBlockCapella(internalBlock.getMessage()); - } - - @Override - public BlindedBlockCapella getMessage() { - return message; - } - - @JsonCreator - public SignedBlindedBeaconBlockCapella( - @JsonProperty("message") final BlindedBlockCapella message, - @JsonProperty("signature") final BLSSignature signature) { - super(message, signature); - this.message = message; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/SignedBlsToExecutionChange.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/SignedBlsToExecutionChange.java deleted file mode 100644 index 6b40a1f494a..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/SignedBlsToExecutionChange.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.capella; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Optional; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsCapella; - -public class SignedBlsToExecutionChange { - - @JsonProperty("message") - public final BlsToExecutionChange message; - - @JsonProperty("signature") - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - public final BLSSignature signature; - - @JsonCreator - public SignedBlsToExecutionChange( - @JsonProperty("message") final BlsToExecutionChange message, - @JsonProperty("signature") final BLSSignature signature) { - this.message = message; - this.signature = signature; - } - - public SignedBlsToExecutionChange( - final tech.pegasys.teku.spec.datastructures.operations.SignedBlsToExecutionChange - signedBlsToExecutionChanges) { - this.message = new BlsToExecutionChange(signedBlsToExecutionChanges.getMessage()); - this.signature = new BLSSignature(signedBlsToExecutionChanges.getSignature()); - } - - public tech.pegasys.teku.spec.datastructures.operations.SignedBlsToExecutionChange - asInternalSignedBlsToExecutionChange(final SpecVersion spec) { - final Optional schemaDefinitionsCapella = - spec.getSchemaDefinitions().toVersionCapella(); - - if (schemaDefinitionsCapella.isEmpty()) { - throw new IllegalArgumentException( - "Could not create BlsToExecutionChange for non-capella spec"); - } - - return schemaDefinitionsCapella - .get() - .getSignedBlsToExecutionChangeSchema() - .create(message.asInternalBlsToExecutionChange(spec), signature.asInternalBLSSignature()); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/Withdrawal.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/Withdrawal.java deleted file mode 100644 index c901bc7c88a..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/capella/Withdrawal.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.capella; - -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.ethereum.execution.types.Eth1Address; -import tech.pegasys.teku.infrastructure.bytes.Bytes20; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.datastructures.execution.versions.capella.WithdrawalSchema; - -public class Withdrawal { - - @JsonProperty("index") - private final UInt64 index; - - @JsonProperty("validator_index") - private final UInt64 validatorIndex; - - @JsonProperty("address") - private final Eth1Address address; - - @JsonProperty("amount") - private final UInt64 amount; - - public Withdrawal( - @JsonProperty("index") final UInt64 index, - @JsonProperty("validator_index") final UInt64 validatorIndex, - @JsonProperty("address") final Eth1Address address, - @JsonProperty("amount") final UInt64 amount) { - this.index = index; - this.validatorIndex = validatorIndex; - this.address = address; - this.amount = amount; - } - - public Withdrawal( - final tech.pegasys.teku.spec.datastructures.execution.versions.capella.Withdrawal - withdrawal) { - this.index = withdrawal.getIndex(); - this.validatorIndex = withdrawal.getValidatorIndex(); - this.address = Eth1Address.fromBytes(withdrawal.getAddress().getWrappedBytes()); - this.amount = withdrawal.getAmount(); - } - - public tech.pegasys.teku.spec.datastructures.execution.versions.capella.Withdrawal - asInternalWithdrawal(final WithdrawalSchema schema) { - return schema.create(index, validatorIndex, new Bytes20(address.getWrappedBytes()), amount); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BeaconBlockBodyDeneb.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BeaconBlockBodyDeneb.java deleted file mode 100644 index cf955f3116a..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BeaconBlockBodyDeneb.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.deneb; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.Attestation; -import tech.pegasys.teku.api.schema.AttesterSlashing; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.Deposit; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.KZGCommitment; -import tech.pegasys.teku.api.schema.ProposerSlashing; -import tech.pegasys.teku.api.schema.SignedVoluntaryExit; -import tech.pegasys.teku.api.schema.altair.BeaconBlockBodyAltair; -import tech.pegasys.teku.api.schema.altair.SyncAggregate; -import tech.pegasys.teku.api.schema.capella.SignedBlsToExecutionChange; -import tech.pegasys.teku.infrastructure.async.SafeFuture; -import tech.pegasys.teku.infrastructure.ssz.schema.SszListSchema; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.deneb.BeaconBlockBodySchemaDeneb; -import tech.pegasys.teku.spec.datastructures.type.SszKZGCommitment; - -public class BeaconBlockBodyDeneb extends BeaconBlockBodyAltair { - - @JsonProperty("execution_payload") - public final ExecutionPayloadDeneb executionPayload; - - @JsonProperty("bls_to_execution_changes") - public final List blsToExecutionChanges; - - @JsonProperty("blob_kzg_commitments") - public final List blobKZGCommitments; - - @JsonCreator - public BeaconBlockBodyDeneb( - @JsonProperty("randao_reveal") final BLSSignature randaoReveal, - @JsonProperty("eth1_data") final Eth1Data eth1Data, - @JsonProperty("graffiti") final Bytes32 graffiti, - @JsonProperty("proposer_slashings") final List proposerSlashings, - @JsonProperty("attester_slashings") final List attesterSlashings, - @JsonProperty("attestations") final List attestations, - @JsonProperty("deposits") final List deposits, - @JsonProperty("voluntary_exits") final List voluntaryExits, - @JsonProperty("sync_aggregate") final SyncAggregate syncAggregate, - @JsonProperty("execution_payload") final ExecutionPayloadDeneb executionPayload, - @JsonProperty("bls_to_execution_changes") - final List blsToExecutionChanges, - @JsonProperty("blob_kzg_commitments") final List blobKZGCommitments) { - super( - randaoReveal, - eth1Data, - graffiti, - proposerSlashings, - attesterSlashings, - attestations, - deposits, - voluntaryExits, - syncAggregate); - checkNotNull(executionPayload, "Execution Payload is required for Deneb blocks"); - this.executionPayload = executionPayload; - checkNotNull(blsToExecutionChanges, "BlsToExecutionChanges is required for Deneb blocks"); - this.blsToExecutionChanges = blsToExecutionChanges; - checkNotNull(blobKZGCommitments, "blobKZGCommitments is required for Deneb blocks"); - this.blobKZGCommitments = blobKZGCommitments; - } - - public BeaconBlockBodyDeneb( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.deneb - .BeaconBlockBodyDeneb - message) { - super(message); - checkNotNull(message.getExecutionPayload(), "Execution Payload is required for Deneb blocks"); - this.executionPayload = new ExecutionPayloadDeneb(message.getExecutionPayload()); - checkNotNull( - message.getBlsToExecutionChanges(), "BlsToExecutionChanges are required for Deneb blocks"); - this.blsToExecutionChanges = - message.getBlsToExecutionChanges().stream().map(SignedBlsToExecutionChange::new).toList(); - checkNotNull( - message.getBlobKzgCommitments(), "BlobKzgCommitments are required for Deneb blocks"); - this.blobKZGCommitments = - message.getBlobKzgCommitments().stream() - .map(SszKZGCommitment::getKZGCommitment) - .map(KZGCommitment::new) - .toList(); - } - - @Override - public BeaconBlockBodySchemaDeneb getBeaconBlockBodySchema(final SpecVersion spec) { - return (BeaconBlockBodySchemaDeneb) spec.getSchemaDefinitions().getBeaconBlockBodySchema(); - } - - @Override - public BeaconBlockBody asInternalBeaconBlockBody(final SpecVersion spec) { - final SszListSchema< - tech.pegasys.teku.spec.datastructures.operations.SignedBlsToExecutionChange, ?> - blsToExecutionChangesSchema = - getBeaconBlockBodySchema(spec).getBlsToExecutionChangesSchema(); - final SszListSchema blobKZGCommitmentsSchema = - getBeaconBlockBodySchema(spec).getBlobKzgCommitmentsSchema(); - return super.asInternalBeaconBlockBody( - spec, - builder -> { - builder.executionPayload(executionPayload.asInternalExecutionPayload(spec)); - builder.blsToExecutionChanges( - this.blsToExecutionChanges.stream() - .map(b -> b.asInternalSignedBlsToExecutionChange(spec)) - .collect(blsToExecutionChangesSchema.collector())); - builder.blobKzgCommitments( - this.blobKZGCommitments.stream() - .map(KZGCommitment::asInternalKZGCommitment) - .map(SszKZGCommitment::new) - .collect(blobKZGCommitmentsSchema.collector())); - return SafeFuture.COMPLETE; - }); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BeaconBlockDeneb.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BeaconBlockDeneb.java deleted file mode 100644 index 3c61cdaec96..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BeaconBlockDeneb.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.deneb; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.altair.BeaconBlockAltair; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsDeneb; - -public class BeaconBlockDeneb extends BeaconBlockAltair { - - public BeaconBlockDeneb(final BeaconBlock message) { - super( - message.getSlot(), - message.getProposerIndex(), - message.getParentRoot(), - message.getStateRoot(), - new BeaconBlockBodyDeneb(message.getBody().toVersionDeneb().orElseThrow())); - } - - @Override - public BeaconBlock asInternalBeaconBlock(final Spec spec) { - final SpecVersion specVersion = spec.atSlot(slot); - return SchemaDefinitionsDeneb.required(specVersion.getSchemaDefinitions()) - .getBeaconBlockSchema() - .create( - slot, - proposer_index, - parent_root, - state_root, - body.asInternalBeaconBlockBody(specVersion)); - } - - @JsonProperty("body") - @Override - public BeaconBlockBodyDeneb getBody() { - return (BeaconBlockBodyDeneb) body; - } - - @JsonCreator - public BeaconBlockDeneb( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("proposer_index") final UInt64 proposerIndex, - @JsonProperty("parent_root") final Bytes32 parentRoot, - @JsonProperty("state_root") final Bytes32 stateRoot, - @JsonProperty("body") final BeaconBlockBodyDeneb body) { - super(slot, proposerIndex, parentRoot, stateRoot, body); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BeaconStateDeneb.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BeaconStateDeneb.java deleted file mode 100644 index 4d7ef4d8c66..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BeaconStateDeneb.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.deneb; - -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_UINT64; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.BeaconBlockHeader; -import tech.pegasys.teku.api.schema.Checkpoint; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.Fork; -import tech.pegasys.teku.api.schema.Validator; -import tech.pegasys.teku.api.schema.altair.BeaconStateAltair; -import tech.pegasys.teku.api.schema.altair.SyncCommittee; -import tech.pegasys.teku.api.schema.capella.HistoricalSummary; -import tech.pegasys.teku.infrastructure.ssz.collections.SszBitvector; -import tech.pegasys.teku.infrastructure.ssz.schema.SszListSchema; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.execution.versions.deneb.ExecutionPayloadHeaderSchemaDeneb; -import tech.pegasys.teku.spec.datastructures.state.SyncCommittee.SyncCommitteeSchema; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.MutableBeaconState; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.deneb.BeaconStateSchemaDeneb; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.deneb.MutableBeaconStateDeneb; - -public class BeaconStateDeneb extends BeaconStateAltair { - - @JsonProperty("latest_execution_payload_header") - public final ExecutionPayloadHeaderDeneb latestExecutionPayloadHeader; - - @JsonProperty("next_withdrawal_index") - @Schema(type = "string", example = EXAMPLE_UINT64) - public final UInt64 nextWithdrawalIndex; - - @JsonProperty("next_withdrawal_validator_index") - @Schema(type = "string", example = EXAMPLE_UINT64) - public final UInt64 nextWithdrawalValidatorIndex; - - @JsonProperty("historical_summaries") - public final List historicalSummaries; - - public BeaconStateDeneb( - @JsonProperty("genesis_time") final UInt64 genesisTime, - @JsonProperty("genesis_validators_root") final Bytes32 genesisValidatorsRoot, - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("fork") final Fork fork, - @JsonProperty("latest_block_header") final BeaconBlockHeader latestBlockHeader, - @JsonProperty("block_roots") final List blockRoots, - @JsonProperty("state_roots") final List stateRoots, - @JsonProperty("historical_roots") final List historicalRoots, - @JsonProperty("eth1_data") final Eth1Data eth1Data, - @JsonProperty("eth1_data_votes") final List eth1DataVotes, - @JsonProperty("eth1_deposit_index") final UInt64 eth1DepositIndex, - @JsonProperty("validators") final List validators, - @JsonProperty("balances") final List balances, - @JsonProperty("randao_mixes") final List randaoMixes, - @JsonProperty("slashings") final List slashings, - @JsonProperty("previous_epoch_participation") final byte[] previousEpochParticipation, - @JsonProperty("current_epoch_participation") final byte[] currentEpochParticipation, - @JsonProperty("justification_bits") final SszBitvector justificationBits, - @JsonProperty("previous_justified_checkpoint") final Checkpoint previousJustifiedCheckpoint, - @JsonProperty("current_justified_checkpoint") final Checkpoint currentJustifiedCheckpoint, - @JsonProperty("finalized_checkpoint") final Checkpoint finalizedCheckpoint, - @JsonProperty("inactivity_scores") final List inactivityScores, - @JsonProperty("current_sync_committee") final SyncCommittee currentSyncCommittee, - @JsonProperty("next_sync_committee") final SyncCommittee nextSyncCommittee, - @JsonProperty("latest_execution_payload_header") - final ExecutionPayloadHeaderDeneb latestExecutionPayloadHeader, - @JsonProperty("next_withdrawal_index") final UInt64 nextWithdrawalIndex, - @JsonProperty("next_withdrawal_validator_index") final UInt64 nextWithdrawalValidatorIndex, - @JsonProperty("historical_summaries") final List historicalSummaries) { - super( - genesisTime, - genesisValidatorsRoot, - slot, - fork, - latestBlockHeader, - blockRoots, - stateRoots, - historicalRoots, - eth1Data, - eth1DataVotes, - eth1DepositIndex, - validators, - balances, - randaoMixes, - slashings, - previousEpochParticipation, - currentEpochParticipation, - justificationBits, - previousJustifiedCheckpoint, - currentJustifiedCheckpoint, - finalizedCheckpoint, - inactivityScores, - currentSyncCommittee, - nextSyncCommittee); - this.latestExecutionPayloadHeader = latestExecutionPayloadHeader; - this.nextWithdrawalIndex = nextWithdrawalIndex; - this.nextWithdrawalValidatorIndex = nextWithdrawalValidatorIndex; - this.historicalSummaries = historicalSummaries; - } - - public BeaconStateDeneb(final BeaconState beaconState) { - super(beaconState); - final tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.deneb.BeaconStateDeneb - deneb = beaconState.toVersionDeneb().orElseThrow(); - this.latestExecutionPayloadHeader = - new ExecutionPayloadHeaderDeneb(deneb.getLatestExecutionPayloadHeader()); - this.nextWithdrawalIndex = deneb.getNextWithdrawalIndex(); - this.nextWithdrawalValidatorIndex = deneb.getNextWithdrawalValidatorIndex(); - this.historicalSummaries = - deneb.getHistoricalSummaries().stream().map(HistoricalSummary::new).toList(); - } - - @Override - protected void applyAdditionalFields( - final MutableBeaconState state, final SpecVersion specVersion) { - state - .toMutableVersionDeneb() - .ifPresent( - mutableBeaconStateDeneb -> - applyDenebFields( - specVersion, - mutableBeaconStateDeneb, - BeaconStateSchemaDeneb.required(mutableBeaconStateDeneb.getBeaconStateSchema()) - .getCurrentSyncCommitteeSchema(), - BeaconStateSchemaDeneb.required(mutableBeaconStateDeneb.getBeaconStateSchema()) - .getLastExecutionPayloadHeaderSchema(), - BeaconStateSchemaDeneb.required(mutableBeaconStateDeneb.getBeaconStateSchema()) - .getHistoricalSummariesSchema(), - this)); - } - - protected static void applyDenebFields( - final SpecVersion specVersion, - final MutableBeaconStateDeneb state, - final SyncCommitteeSchema syncCommitteeSchema, - final ExecutionPayloadHeaderSchemaDeneb executionPayloadHeaderSchema, - final SszListSchema< - tech.pegasys.teku.spec.datastructures.state.versions.capella.HistoricalSummary, ?> - historicalSummariesSchema, - final BeaconStateDeneb instance) { - - BeaconStateAltair.applyAltairFields(state, syncCommitteeSchema, instance); - - state.setLatestExecutionPayloadHeader( - instance.latestExecutionPayloadHeader.asInternalExecutionPayloadHeader( - executionPayloadHeaderSchema)); - - state.setNextWithdrawalIndex(instance.nextWithdrawalIndex); - state.setNextWithdrawalValidatorIndex(instance.nextWithdrawalValidatorIndex); - state.setHistoricalSummaries( - historicalSummariesSchema.createFromElements( - instance.historicalSummaries.stream() - .map( - historicalSummary -> historicalSummary.asInternalHistoricalSummary(specVersion)) - .toList())); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BlindedBeaconBlockBodyDeneb.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BlindedBeaconBlockBodyDeneb.java deleted file mode 100644 index 99245629d69..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BlindedBeaconBlockBodyDeneb.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.deneb; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.Attestation; -import tech.pegasys.teku.api.schema.AttesterSlashing; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.Deposit; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.KZGCommitment; -import tech.pegasys.teku.api.schema.ProposerSlashing; -import tech.pegasys.teku.api.schema.SignedVoluntaryExit; -import tech.pegasys.teku.api.schema.altair.BeaconBlockBodyAltair; -import tech.pegasys.teku.api.schema.altair.SyncAggregate; -import tech.pegasys.teku.api.schema.capella.SignedBlsToExecutionChange; -import tech.pegasys.teku.infrastructure.async.SafeFuture; -import tech.pegasys.teku.infrastructure.ssz.schema.SszListSchema; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.deneb.BlindedBeaconBlockBodySchemaDeneb; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeaderSchema; -import tech.pegasys.teku.spec.datastructures.type.SszKZGCommitment; - -public class BlindedBeaconBlockBodyDeneb extends BeaconBlockBodyAltair { - - @JsonProperty("execution_payload_header") - public final ExecutionPayloadHeaderDeneb executionPayloadHeader; - - @JsonProperty("bls_to_execution_changes") - public final List blsToExecutionChanges; - - @JsonProperty("blob_kzg_commitments") - public final List blobKZGCommitments; - - @JsonCreator - public BlindedBeaconBlockBodyDeneb( - @JsonProperty("randao_reveal") final BLSSignature randaoReveal, - @JsonProperty("eth1_data") final Eth1Data eth1Data, - @JsonProperty("graffiti") final Bytes32 graffiti, - @JsonProperty("proposer_slashings") final List proposerSlashings, - @JsonProperty("attester_slashings") final List attesterSlashings, - @JsonProperty("attestations") final List attestations, - @JsonProperty("deposits") final List deposits, - @JsonProperty("voluntary_exits") final List voluntaryExits, - @JsonProperty("sync_aggregate") final SyncAggregate syncAggregate, - @JsonProperty("execution_payload_header") - final ExecutionPayloadHeaderDeneb executionPayloadHeader, - @JsonProperty("bls_to_execution_changes") - final List blsToExecutionChanges, - @JsonProperty("blob_kzg_commitments") final List blobKZGCommitments) { - super( - randaoReveal, - eth1Data, - graffiti, - proposerSlashings, - attesterSlashings, - attestations, - deposits, - voluntaryExits, - syncAggregate); - checkNotNull( - executionPayloadHeader, "Execution Payload Header is required for Deneb blinded blocks"); - this.executionPayloadHeader = executionPayloadHeader; - checkNotNull( - blsToExecutionChanges, "blsToExecutionChanges is required for Deneb blinded blocks"); - this.blsToExecutionChanges = blsToExecutionChanges; - checkNotNull(blobKZGCommitments, "blobKZGCommitments is required for Deneb blinded blocks"); - this.blobKZGCommitments = blobKZGCommitments; - } - - public BlindedBeaconBlockBodyDeneb( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.deneb - .BlindedBeaconBlockBodyDeneb - blockBody) { - super(blockBody); - this.executionPayloadHeader = - new ExecutionPayloadHeaderDeneb(blockBody.getExecutionPayloadHeader()); - this.blsToExecutionChanges = - blockBody.getBlsToExecutionChanges().stream().map(SignedBlsToExecutionChange::new).toList(); - this.blobKZGCommitments = - blockBody.getBlobKzgCommitments().stream() - .map(SszKZGCommitment::getKZGCommitment) - .map(KZGCommitment::new) - .toList(); - } - - @Override - public BlindedBeaconBlockBodySchemaDeneb getBeaconBlockBodySchema(final SpecVersion spec) { - return (BlindedBeaconBlockBodySchemaDeneb) - spec.getSchemaDefinitions().getBlindedBeaconBlockBodySchema(); - } - - @Override - public boolean isBlinded() { - return true; - } - - @Override - public BeaconBlockBody asInternalBeaconBlockBody(final SpecVersion spec) { - - final ExecutionPayloadHeaderSchema executionPayloadHeaderSchema = - getBeaconBlockBodySchema(spec).getExecutionPayloadHeaderSchema(); - - final SszListSchema< - tech.pegasys.teku.spec.datastructures.operations.SignedBlsToExecutionChange, ?> - blsToExecutionChangesSchema = getBeaconBlockBodySchema(spec).getBlsToExecutionChanges(); - - final SszListSchema blobKZGCommitmentsSchema = - getBeaconBlockBodySchema(spec).getBlobKzgCommitmentsSchema(); - - return super.asInternalBeaconBlockBody( - spec, - builder -> { - builder.executionPayloadHeader( - executionPayloadHeader.asInternalExecutionPayloadHeader( - executionPayloadHeaderSchema)); - builder.blsToExecutionChanges( - this.blsToExecutionChanges.stream() - .map(b -> b.asInternalSignedBlsToExecutionChange(spec)) - .collect(blsToExecutionChangesSchema.collector())); - builder.blobKzgCommitments( - this.blobKZGCommitments.stream() - .map(KZGCommitment::asInternalKZGCommitment) - .map(SszKZGCommitment::new) - .collect(blobKZGCommitmentsSchema.collector())); - return SafeFuture.COMPLETE; - }); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BlindedBlockDeneb.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BlindedBlockDeneb.java deleted file mode 100644 index 936e20ab079..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/BlindedBlockDeneb.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.deneb; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.altair.BeaconBlockAltair; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock; -import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlockSchema; - -public class BlindedBlockDeneb extends BeaconBlockAltair { - - public BlindedBlockDeneb(final BeaconBlock message) { - super( - message.getSlot(), - message.getProposerIndex(), - message.getParentRoot(), - message.getStateRoot(), - new BlindedBeaconBlockBodyDeneb(message.getBody().toBlindedVersionDeneb().orElseThrow())); - } - - @Override - public BeaconBlockSchema getBeaconBlockSchema(final SpecVersion spec) { - return spec.getSchemaDefinitions().getBlindedBeaconBlockSchema(); - } - - @Override - public BeaconBlock asInternalBeaconBlock(final Spec spec) { - final SpecVersion specVersion = spec.atSlot(slot); - return getBeaconBlockSchema(specVersion) - .create( - slot, - proposer_index, - parent_root, - state_root, - body.asInternalBeaconBlockBody(specVersion)); - } - - @JsonProperty("body") - @Override - public BlindedBeaconBlockBodyDeneb getBody() { - return (BlindedBeaconBlockBodyDeneb) body; - } - - @JsonCreator - public BlindedBlockDeneb( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("proposer_index") final UInt64 proposerIndex, - @JsonProperty("parent_root") final Bytes32 parentRoot, - @JsonProperty("state_root") final Bytes32 stateRoot, - @JsonProperty("body") final BlindedBeaconBlockBodyDeneb body) { - super(slot, proposerIndex, parentRoot, stateRoot, body); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/ExecutionPayloadDeneb.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/ExecutionPayloadDeneb.java deleted file mode 100644 index 34aa9585d03..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/ExecutionPayloadDeneb.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.deneb; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import org.apache.tuweni.bytes.Bytes; -import org.apache.tuweni.bytes.Bytes32; -import org.apache.tuweni.units.bigints.UInt256; -import tech.pegasys.teku.api.schema.ExecutionPayload; -import tech.pegasys.teku.api.schema.capella.ExecutionPayloadCapella; -import tech.pegasys.teku.api.schema.capella.Withdrawal; -import tech.pegasys.teku.infrastructure.bytes.Bytes20; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadBuilder; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadSchema; - -public class ExecutionPayloadDeneb extends ExecutionPayloadCapella implements ExecutionPayload { - - @JsonProperty("blob_gas_used") - public final UInt64 blobGasUsed; - - @JsonProperty("excess_blob_gas") - public final UInt64 excessBlobGas; - - @JsonCreator - public ExecutionPayloadDeneb( - @JsonProperty("parent_hash") final Bytes32 parentHash, - @JsonProperty("fee_recipient") final Bytes20 feeRecipient, - @JsonProperty("state_root") final Bytes32 stateRoot, - @JsonProperty("receipts_root") final Bytes32 receiptsRoot, - @JsonProperty("logs_bloom") final Bytes logsBloom, - @JsonProperty("prev_randao") final Bytes32 prevRandao, - @JsonProperty("block_number") final UInt64 blockNumber, - @JsonProperty("gas_limit") final UInt64 gasLimit, - @JsonProperty("gas_used") final UInt64 gasUsed, - @JsonProperty("timestamp") final UInt64 timestamp, - @JsonProperty("extra_data") final Bytes extraData, - @JsonProperty("base_fee_per_gas") final UInt256 baseFeePerGas, - @JsonProperty("block_hash") final Bytes32 blockHash, - @JsonProperty("transactions") final List transactions, - @JsonProperty("withdrawals") final List withdrawals, - @JsonProperty("blob_gas_used") final UInt64 blobGasUsed, - @JsonProperty("excess_blob_gas") final UInt64 excessBlobGas) { - super( - parentHash, - feeRecipient, - stateRoot, - receiptsRoot, - logsBloom, - prevRandao, - blockNumber, - gasLimit, - gasUsed, - timestamp, - extraData, - baseFeePerGas, - blockHash, - transactions, - withdrawals); - this.blobGasUsed = blobGasUsed; - this.excessBlobGas = excessBlobGas; - } - - public ExecutionPayloadDeneb( - final tech.pegasys.teku.spec.datastructures.execution.ExecutionPayload executionPayload) { - super(executionPayload); - this.blobGasUsed = executionPayload.toVersionDeneb().orElseThrow().getBlobGasUsed(); - this.excessBlobGas = executionPayload.toVersionDeneb().orElseThrow().getExcessBlobGas(); - } - - @Override - protected ExecutionPayloadBuilder applyToBuilder( - final ExecutionPayloadSchema executionPayloadSchema, - final ExecutionPayloadBuilder builder) { - return super.applyToBuilder(executionPayloadSchema, builder) - .blobGasUsed(() -> blobGasUsed) - .excessBlobGas(() -> excessBlobGas); - } - - @Override - public Optional toVersionDeneb() { - return Optional.of(this); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof ExecutionPayloadDeneb)) { - return false; - } - if (!super.equals(o)) { - return false; - } - final ExecutionPayloadDeneb that = (ExecutionPayloadDeneb) o; - return Objects.equals(blobGasUsed, that.blobGasUsed) - && Objects.equals(excessBlobGas, that.excessBlobGas); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), blobGasUsed, excessBlobGas); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("parentHash", parentHash) - .add("feeRecipient", feeRecipient) - .add("stateRoot", stateRoot) - .add("receiptsRoot", receiptsRoot) - .add("logsBloom", logsBloom) - .add("prevRandao", prevRandao) - .add("blockNumber", blockNumber) - .add("gasLimit", gasLimit) - .add("gasUsed", gasUsed) - .add("timestamp", timestamp) - .add("extraData", extraData) - .add("baseFeePerGas", baseFeePerGas) - .add("blockHash", blockHash) - .add("transactions", transactions) - .add("withdrawals", withdrawals) - .add("blobGasUsed", blobGasUsed) - .add("excessBlobGas", excessBlobGas) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/ExecutionPayloadHeaderDeneb.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/ExecutionPayloadHeaderDeneb.java deleted file mode 100644 index 43d685d2d01..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/ExecutionPayloadHeaderDeneb.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.deneb; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import java.util.Objects; -import java.util.Optional; -import org.apache.tuweni.bytes.Bytes; -import org.apache.tuweni.bytes.Bytes32; -import org.apache.tuweni.units.bigints.UInt256; -import tech.pegasys.teku.api.schema.capella.ExecutionPayloadHeaderCapella; -import tech.pegasys.teku.infrastructure.bytes.Bytes20; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeader; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeaderSchema; - -public class ExecutionPayloadHeaderDeneb extends ExecutionPayloadHeaderCapella { - - @JsonProperty("blob_gas_used") - public final UInt64 blobGasUsed; - - @JsonProperty("excess_blob_gas") - public final UInt64 excessBlobGas; - - @JsonCreator - public ExecutionPayloadHeaderDeneb( - @JsonProperty("parent_hash") final Bytes32 parentHash, - @JsonProperty("fee_recipient") final Bytes20 feeRecipient, - @JsonProperty("state_root") final Bytes32 stateRoot, - @JsonProperty("receipts_root") final Bytes32 receiptsRoot, - @JsonProperty("logs_bloom") final Bytes logsBloom, - @JsonProperty("prev_randao") final Bytes32 prevRandao, - @JsonProperty("block_number") final UInt64 blockNumber, - @JsonProperty("gas_limit") final UInt64 gasLimit, - @JsonProperty("gas_used") final UInt64 gasUsed, - @JsonProperty("timestamp") final UInt64 timestamp, - @JsonProperty("extra_data") final Bytes extraData, - @JsonProperty("base_fee_per_gas") final UInt256 baseFeePerGas, - @JsonProperty("block_hash") final Bytes32 blockHash, - @JsonProperty("transactions_root") final Bytes32 transactionsRoot, - @JsonProperty("withdrawals_root") final Bytes32 withdrawalsRoot, - @JsonProperty("blob_gas_used") final UInt64 blobGasUsed, - @JsonProperty("excess_blob_gas") final UInt64 excessBlobGas) { - super( - parentHash, - feeRecipient, - stateRoot, - receiptsRoot, - logsBloom, - prevRandao, - blockNumber, - gasLimit, - gasUsed, - timestamp, - extraData, - baseFeePerGas, - blockHash, - transactionsRoot, - withdrawalsRoot); - this.blobGasUsed = blobGasUsed; - this.excessBlobGas = excessBlobGas; - } - - public ExecutionPayloadHeaderDeneb(final ExecutionPayloadHeader executionPayloadHeader) { - super( - executionPayloadHeader.getParentHash(), - executionPayloadHeader.getFeeRecipient(), - executionPayloadHeader.getStateRoot(), - executionPayloadHeader.getReceiptsRoot(), - executionPayloadHeader.getLogsBloom(), - executionPayloadHeader.getPrevRandao(), - executionPayloadHeader.getBlockNumber(), - executionPayloadHeader.getGasLimit(), - executionPayloadHeader.getGasUsed(), - executionPayloadHeader.getTimestamp(), - executionPayloadHeader.getExtraData(), - executionPayloadHeader.getBaseFeePerGas(), - executionPayloadHeader.getBlockHash(), - executionPayloadHeader.getTransactionsRoot(), - executionPayloadHeader.getOptionalWithdrawalsRoot().orElseThrow()); - this.blobGasUsed = executionPayloadHeader.toVersionDeneb().orElseThrow().getBlobGasUsed(); - this.excessBlobGas = executionPayloadHeader.toVersionDeneb().orElseThrow().getExcessBlobGas(); - } - - @Override - public ExecutionPayloadHeader asInternalExecutionPayloadHeader( - final ExecutionPayloadHeaderSchema schema) { - return schema.createExecutionPayloadHeader( - payloadBuilder -> - payloadBuilder - .parentHash(parentHash) - .feeRecipient(feeRecipient) - .stateRoot(stateRoot) - .receiptsRoot(receiptsRoot) - .logsBloom(logsBloom) - .prevRandao(prevRandao) - .blockNumber(blockNumber) - .gasLimit(gasLimit) - .gasUsed(gasUsed) - .timestamp(timestamp) - .extraData(extraData) - .baseFeePerGas(baseFeePerGas) - .blockHash(blockHash) - .transactionsRoot(transactionsRoot) - .withdrawalsRoot(() -> withdrawalsRoot) - .blobGasUsed(() -> blobGasUsed) - .excessBlobGas(() -> excessBlobGas)); - } - - @Override - public Optional toVersionDeneb() { - return Optional.of(this); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof ExecutionPayloadHeaderDeneb)) { - return false; - } - if (!super.equals(o)) { - return false; - } - final ExecutionPayloadHeaderDeneb that = (ExecutionPayloadHeaderDeneb) o; - return Objects.equals(blobGasUsed, that.blobGasUsed) - && Objects.equals(excessBlobGas, that.excessBlobGas); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), blobGasUsed, excessBlobGas); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("parentHash", parentHash) - .add("feeRecipient", feeRecipient) - .add("stateRoot", stateRoot) - .add("receiptsRoot", receiptsRoot) - .add("logsBloom", logsBloom) - .add("prevRandao", prevRandao) - .add("blockNumber", blockNumber) - .add("gasLimit", gasLimit) - .add("gasUsed", gasUsed) - .add("timestamp", timestamp) - .add("extraData", extraData) - .add("baseFeePerGas", baseFeePerGas) - .add("blockHash", blockHash) - .add("transactionsRoot", transactionsRoot) - .add("withdrawalsRoot", withdrawalsRoot) - .add("blobGasUsed", blobGasUsed) - .add("excessBlobGas", excessBlobGas) - .toString(); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/SignedBeaconBlockDeneb.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/SignedBeaconBlockDeneb.java deleted file mode 100644 index a67830d0449..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/SignedBeaconBlockDeneb.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.deneb; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.SignedBeaconBlock; -import tech.pegasys.teku.api.schema.interfaces.SignedBlock; - -public class SignedBeaconBlockDeneb extends SignedBeaconBlock implements SignedBlock { - private final BeaconBlockDeneb message; - - public SignedBeaconBlockDeneb( - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock internalBlock) { - super(internalBlock); - this.message = new BeaconBlockDeneb(internalBlock.getMessage()); - } - - @Override - public BeaconBlockDeneb getMessage() { - return message; - } - - @JsonCreator - public SignedBeaconBlockDeneb( - @JsonProperty("message") final BeaconBlockDeneb message, - @JsonProperty("signature") final BLSSignature signature) { - super(message, signature); - this.message = message; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/SignedBlindedBeaconBlockDeneb.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/SignedBlindedBeaconBlockDeneb.java deleted file mode 100644 index 3f878f97eb6..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/deneb/SignedBlindedBeaconBlockDeneb.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.deneb; - -import static com.google.common.base.Preconditions.checkArgument; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.SignedBeaconBlock; -import tech.pegasys.teku.api.schema.interfaces.SignedBlock; - -public class SignedBlindedBeaconBlockDeneb extends SignedBeaconBlock implements SignedBlock { - private final BlindedBlockDeneb message; - - public SignedBlindedBeaconBlockDeneb( - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock internalBlock) { - super(internalBlock); - checkArgument( - internalBlock.getMessage().getBody().isBlinded(), "requires a signed blinded beacon block"); - this.message = new BlindedBlockDeneb(internalBlock.getMessage()); - } - - @Override - public BlindedBlockDeneb getMessage() { - return message; - } - - @JsonCreator - public SignedBlindedBeaconBlockDeneb( - @JsonProperty("message") final BlindedBlockDeneb message, - @JsonProperty("signature") final BLSSignature signature) { - super(message, signature); - this.message = message; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BeaconBlockBodyElectra.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BeaconBlockBodyElectra.java deleted file mode 100644 index 6bede7180d3..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BeaconBlockBodyElectra.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.electra; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.Attestation; -import tech.pegasys.teku.api.schema.AttesterSlashing; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.Deposit; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.KZGCommitment; -import tech.pegasys.teku.api.schema.ProposerSlashing; -import tech.pegasys.teku.api.schema.SignedVoluntaryExit; -import tech.pegasys.teku.api.schema.altair.BeaconBlockBodyAltair; -import tech.pegasys.teku.api.schema.altair.SyncAggregate; -import tech.pegasys.teku.api.schema.capella.SignedBlsToExecutionChange; -import tech.pegasys.teku.api.schema.deneb.ExecutionPayloadDeneb; -import tech.pegasys.teku.infrastructure.async.SafeFuture; -import tech.pegasys.teku.infrastructure.ssz.schema.SszListSchema; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.electra.BeaconBlockBodySchemaElectra; -import tech.pegasys.teku.spec.datastructures.type.SszKZGCommitment; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsElectra; - -public class BeaconBlockBodyElectra extends BeaconBlockBodyAltair { - - @JsonProperty("execution_payload") - public final ExecutionPayloadDeneb executionPayload; - - @JsonProperty("bls_to_execution_changes") - public final List blsToExecutionChanges; - - @JsonProperty("blob_kzg_commitments") - public final List blobKZGCommitments; - - @JsonProperty("execution_requests") - public final ExecutionRequests executionRequests; - - @JsonCreator - public BeaconBlockBodyElectra( - @JsonProperty("randao_reveal") final BLSSignature randaoReveal, - @JsonProperty("eth1_data") final Eth1Data eth1Data, - @JsonProperty("graffiti") final Bytes32 graffiti, - @JsonProperty("proposer_slashings") final List proposerSlashings, - @JsonProperty("attester_slashings") final List attesterSlashings, - @JsonProperty("attestations") final List attestations, - @JsonProperty("deposits") final List deposits, - @JsonProperty("voluntary_exits") final List voluntaryExits, - @JsonProperty("sync_aggregate") final SyncAggregate syncAggregate, - @JsonProperty("execution_payload") final ExecutionPayloadDeneb executionPayload, - @JsonProperty("bls_to_execution_changes") - final List blsToExecutionChanges, - @JsonProperty("blob_kzg_commitments") final List blobKZGCommitments, - @JsonProperty("execution_requests") final ExecutionRequests executionRequests) { - super( - randaoReveal, - eth1Data, - graffiti, - proposerSlashings, - attesterSlashings, - attestations, - deposits, - voluntaryExits, - syncAggregate); - checkNotNull(executionPayload, "ExecutionPayload is required for Electra blocks"); - this.executionPayload = executionPayload; - checkNotNull(blsToExecutionChanges, "BlsToExecutionChanges is required for Electra blocks"); - this.blsToExecutionChanges = blsToExecutionChanges; - checkNotNull(blobKZGCommitments, "BlobKZGCommitments is required for Electra blocks"); - this.blobKZGCommitments = blobKZGCommitments; - checkNotNull(executionRequests, "ExecutionRequests is required for Electra blocks"); - this.executionRequests = executionRequests; - } - - public BeaconBlockBodyElectra( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.electra - .BeaconBlockBodyElectra - message) { - super(message); - checkNotNull(message.getExecutionPayload(), "ExecutionPayload is required for Electra blocks"); - this.executionPayload = new ExecutionPayloadDeneb(message.getExecutionPayload()); - checkNotNull( - message.getBlsToExecutionChanges(), "BlsToExecutionChanges is required for Electra blocks"); - this.blsToExecutionChanges = - message.getBlsToExecutionChanges().stream().map(SignedBlsToExecutionChange::new).toList(); - checkNotNull( - message.getBlobKzgCommitments(), "BlobKzgCommitments is required for Electra blocks"); - this.blobKZGCommitments = - message.getBlobKzgCommitments().stream() - .map(SszKZGCommitment::getKZGCommitment) - .map(KZGCommitment::new) - .toList(); - checkNotNull( - message.getExecutionRequests(), "ExecutionRequests is required for Electra blocks"); - this.executionRequests = new ExecutionRequests(message.getExecutionRequests()); - } - - @Override - public BeaconBlockBodySchemaElectra getBeaconBlockBodySchema(final SpecVersion spec) { - return (BeaconBlockBodySchemaElectra) spec.getSchemaDefinitions().getBeaconBlockBodySchema(); - } - - @Override - public BeaconBlockBody asInternalBeaconBlockBody(final SpecVersion spec) { - final SszListSchema< - tech.pegasys.teku.spec.datastructures.operations.SignedBlsToExecutionChange, ?> - blsToExecutionChangesSchema = - getBeaconBlockBodySchema(spec).getBlsToExecutionChangesSchema(); - final SszListSchema blobKZGCommitmentsSchema = - getBeaconBlockBodySchema(spec).getBlobKzgCommitmentsSchema(); - return super.asInternalBeaconBlockBody( - spec, - builder -> { - builder.executionPayload(executionPayload.asInternalExecutionPayload(spec)); - builder.blsToExecutionChanges( - this.blsToExecutionChanges.stream() - .map(b -> b.asInternalSignedBlsToExecutionChange(spec)) - .collect(blsToExecutionChangesSchema.collector())); - builder.blobKzgCommitments( - this.blobKZGCommitments.stream() - .map(KZGCommitment::asInternalKZGCommitment) - .map(SszKZGCommitment::new) - .collect(blobKZGCommitmentsSchema.collector())); - builder.executionRequests( - this.executionRequests.asInternalConsolidationRequest( - SchemaDefinitionsElectra.required(spec.getSchemaDefinitions()) - .getExecutionRequestsSchema())); - - return SafeFuture.COMPLETE; - }); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BeaconBlockElectra.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BeaconBlockElectra.java deleted file mode 100644 index 0bafbe1f335..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BeaconBlockElectra.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.electra; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.altair.BeaconBlockAltair; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsElectra; - -public class BeaconBlockElectra extends BeaconBlockAltair { - - public BeaconBlockElectra(final BeaconBlock message) { - super( - message.getSlot(), - message.getProposerIndex(), - message.getParentRoot(), - message.getStateRoot(), - new BeaconBlockBodyElectra(message.getBody().toVersionElectra().orElseThrow())); - } - - @Override - public BeaconBlock asInternalBeaconBlock(final Spec spec) { - final SpecVersion specVersion = spec.atSlot(slot); - return SchemaDefinitionsElectra.required(specVersion.getSchemaDefinitions()) - .getBeaconBlockSchema() - .create( - slot, - proposer_index, - parent_root, - state_root, - body.asInternalBeaconBlockBody(specVersion)); - } - - @JsonProperty("body") - @Override - public BeaconBlockBodyElectra getBody() { - return (BeaconBlockBodyElectra) body; - } - - @JsonCreator - public BeaconBlockElectra( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("proposer_index") final UInt64 proposerIndex, - @JsonProperty("parent_root") final Bytes32 parentRoot, - @JsonProperty("state_root") final Bytes32 stateRoot, - @JsonProperty("body") final BeaconBlockBodyElectra body) { - super(slot, proposerIndex, parentRoot, stateRoot, body); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BeaconStateElectra.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BeaconStateElectra.java deleted file mode 100644 index ba7049a0a93..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BeaconStateElectra.java +++ /dev/null @@ -1,282 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.electra; - -import static tech.pegasys.teku.api.schema.SchemaConstants.EXAMPLE_UINT64; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.BeaconBlockHeader; -import tech.pegasys.teku.api.schema.Checkpoint; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.Fork; -import tech.pegasys.teku.api.schema.Validator; -import tech.pegasys.teku.api.schema.altair.BeaconStateAltair; -import tech.pegasys.teku.api.schema.altair.SyncCommittee; -import tech.pegasys.teku.api.schema.capella.HistoricalSummary; -import tech.pegasys.teku.api.schema.deneb.ExecutionPayloadHeaderDeneb; -import tech.pegasys.teku.infrastructure.ssz.collections.SszBitvector; -import tech.pegasys.teku.infrastructure.ssz.schema.SszListSchema; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.execution.versions.deneb.ExecutionPayloadHeaderSchemaDeneb; -import tech.pegasys.teku.spec.datastructures.state.SyncCommittee.SyncCommitteeSchema; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.MutableBeaconState; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.electra.BeaconStateSchemaElectra; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.electra.MutableBeaconStateElectra; - -public class BeaconStateElectra extends BeaconStateAltair { - - @JsonProperty("latest_execution_payload_header") - public final ExecutionPayloadHeaderDeneb latestExecutionPayloadHeader; - - @JsonProperty("next_withdrawal_index") - @Schema(type = "string", example = EXAMPLE_UINT64) - public final UInt64 nextWithdrawalIndex; - - @JsonProperty("next_withdrawal_validator_index") - @Schema(type = "string", example = EXAMPLE_UINT64) - public final UInt64 nextWithdrawalValidatorIndex; - - @JsonProperty("historical_summaries") - public final List historicalSummaries; - - @JsonProperty("deposit_requests_start_index") - public final UInt64 depositRequestsStartIndex; - - @JsonProperty("deposit_balance_to_consume") - public final UInt64 depositBalanceToConsume; - - @JsonProperty("exit_balance_to_consume") - public final UInt64 exitBalanceToConsume; - - @JsonProperty("earliest_exit_epoch") - public final UInt64 earliestExitEpoch; - - @JsonProperty("consolidation_balance_to_consume") - public final UInt64 consolidationBalanceToConsume; - - @JsonProperty("earliest_consolidation_epoch") - public final UInt64 earliestConsolidationEpoch; - - @JsonProperty("pending_deposits") - public final List pendingDeposits; - - @JsonProperty("pending_partial_withdrawals") - public final List pendingPartialWithdrawals; - - @JsonProperty("pending_consolidations") - public final List pendingConsolidations; - - public BeaconStateElectra( - @JsonProperty("genesis_time") final UInt64 genesisTime, - @JsonProperty("genesis_validators_root") final Bytes32 genesisValidatorsRoot, - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("fork") final Fork fork, - @JsonProperty("latest_block_header") final BeaconBlockHeader latestBlockHeader, - @JsonProperty("block_roots") final List blockRoots, - @JsonProperty("state_roots") final List stateRoots, - @JsonProperty("historical_roots") final List historicalRoots, - @JsonProperty("eth1_data") final Eth1Data eth1Data, - @JsonProperty("eth1_data_votes") final List eth1DataVotes, - @JsonProperty("eth1_deposit_index") final UInt64 eth1DepositIndex, - @JsonProperty("validators") final List validators, - @JsonProperty("balances") final List balances, - @JsonProperty("randao_mixes") final List randaoMixes, - @JsonProperty("slashings") final List slashings, - @JsonProperty("previous_epoch_participation") final byte[] previousEpochParticipation, - @JsonProperty("current_epoch_participation") final byte[] currentEpochParticipation, - @JsonProperty("justification_bits") final SszBitvector justificationBits, - @JsonProperty("previous_justified_checkpoint") final Checkpoint previousJustifiedCheckpoint, - @JsonProperty("current_justified_checkpoint") final Checkpoint currentJustifiedCheckpoint, - @JsonProperty("finalized_checkpoint") final Checkpoint finalizedCheckpoint, - @JsonProperty("inactivity_scores") final List inactivityScores, - @JsonProperty("current_sync_committee") final SyncCommittee currentSyncCommittee, - @JsonProperty("next_sync_committee") final SyncCommittee nextSyncCommittee, - @JsonProperty("latest_execution_payload_header") - final ExecutionPayloadHeaderDeneb latestExecutionPayloadHeader, - @JsonProperty("next_withdrawal_index") final UInt64 nextWithdrawalIndex, - @JsonProperty("next_withdrawal_validator_index") final UInt64 nextWithdrawalValidatorIndex, - @JsonProperty("historical_summaries") final List historicalSummaries, - @JsonProperty("deposit_requests_start_index") final UInt64 depositRequestsStartIndex, - @JsonProperty("deposit_balance_to_consume") final UInt64 depositBalanceToConsume, - @JsonProperty("exit_balance_to_consume") final UInt64 exitBalanceToConsume, - @JsonProperty("earliest_exit_epoch") final UInt64 earliestExitEpoch, - @JsonProperty("consolidation_balance_to_consume") final UInt64 consolidationBalanceToConsume, - @JsonProperty("earliest_consolidation_epoch") final UInt64 earliestConsolidationEpoch, - @JsonProperty("pending_deposits") final List pendingDeposits, - @JsonProperty("pending_partial_withdrawals") - final List pendingPartialWithdrawals, - @JsonProperty("pending_consolidations") - final List pendingConsolidations) { - super( - genesisTime, - genesisValidatorsRoot, - slot, - fork, - latestBlockHeader, - blockRoots, - stateRoots, - historicalRoots, - eth1Data, - eth1DataVotes, - eth1DepositIndex, - validators, - balances, - randaoMixes, - slashings, - previousEpochParticipation, - currentEpochParticipation, - justificationBits, - previousJustifiedCheckpoint, - currentJustifiedCheckpoint, - finalizedCheckpoint, - inactivityScores, - currentSyncCommittee, - nextSyncCommittee); - this.latestExecutionPayloadHeader = latestExecutionPayloadHeader; - this.nextWithdrawalIndex = nextWithdrawalIndex; - this.nextWithdrawalValidatorIndex = nextWithdrawalValidatorIndex; - this.historicalSummaries = historicalSummaries; - this.depositRequestsStartIndex = depositRequestsStartIndex; - this.depositBalanceToConsume = depositBalanceToConsume; - this.exitBalanceToConsume = exitBalanceToConsume; - this.earliestExitEpoch = earliestExitEpoch; - this.consolidationBalanceToConsume = consolidationBalanceToConsume; - this.earliestConsolidationEpoch = earliestConsolidationEpoch; - this.pendingDeposits = pendingDeposits; - this.pendingPartialWithdrawals = pendingPartialWithdrawals; - this.pendingConsolidations = pendingConsolidations; - } - - public BeaconStateElectra(final BeaconState beaconState) { - super(beaconState); - final tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.electra - .BeaconStateElectra - electra = beaconState.toVersionElectra().orElseThrow(); - - this.latestExecutionPayloadHeader = - new ExecutionPayloadHeaderDeneb(electra.getLatestExecutionPayloadHeader()); - this.nextWithdrawalIndex = electra.getNextWithdrawalIndex(); - this.nextWithdrawalValidatorIndex = electra.getNextWithdrawalValidatorIndex(); - this.historicalSummaries = - electra.getHistoricalSummaries().stream().map(HistoricalSummary::new).toList(); - this.depositRequestsStartIndex = electra.getDepositRequestsStartIndex(); - this.depositBalanceToConsume = electra.getDepositBalanceToConsume(); - this.exitBalanceToConsume = electra.getExitBalanceToConsume(); - this.earliestExitEpoch = electra.getEarliestExitEpoch(); - this.consolidationBalanceToConsume = electra.getConsolidationBalanceToConsume(); - this.earliestConsolidationEpoch = electra.getEarliestConsolidationEpoch(); - this.pendingDeposits = electra.getPendingDeposits().stream().map(PendingDeposit::new).toList(); - this.pendingPartialWithdrawals = - electra.getPendingPartialWithdrawals().stream().map(PendingPartialWithdrawal::new).toList(); - this.pendingConsolidations = - electra.getPendingConsolidations().stream().map(PendingConsolidation::new).toList(); - } - - @Override - protected void applyAdditionalFields( - final MutableBeaconState state, final SpecVersion specVersion) { - state - .toMutableVersionElectra() - .ifPresent( - mutableBeaconStateElectra -> - applyElectraFields( - specVersion, - mutableBeaconStateElectra, - BeaconStateSchemaElectra.required( - mutableBeaconStateElectra.getBeaconStateSchema()) - .getCurrentSyncCommitteeSchema(), - BeaconStateSchemaElectra.required( - mutableBeaconStateElectra.getBeaconStateSchema()) - .getLastExecutionPayloadHeaderSchema(), - BeaconStateSchemaElectra.required( - mutableBeaconStateElectra.getBeaconStateSchema()) - .getHistoricalSummariesSchema(), - BeaconStateSchemaElectra.required( - mutableBeaconStateElectra.getBeaconStateSchema()) - .getPendingDepositsSchema(), - BeaconStateSchemaElectra.required( - mutableBeaconStateElectra.getBeaconStateSchema()) - .getPendingPartialWithdrawalsSchema(), - BeaconStateSchemaElectra.required( - mutableBeaconStateElectra.getBeaconStateSchema()) - .getPendingConsolidationsSchema(), - this)); - } - - protected static void applyElectraFields( - final SpecVersion specVersion, - final MutableBeaconStateElectra state, - final SyncCommitteeSchema syncCommitteeSchema, - final ExecutionPayloadHeaderSchemaDeneb executionPayloadHeaderSchema, - final SszListSchema< - tech.pegasys.teku.spec.datastructures.state.versions.capella.HistoricalSummary, ?> - historicalSummariesSchema, - final SszListSchema< - tech.pegasys.teku.spec.datastructures.state.versions.electra.PendingDeposit, ?> - pendingDepositsSchema, - final SszListSchema< - tech.pegasys.teku.spec.datastructures.state.versions.electra.PendingPartialWithdrawal, - ?> - pendingPartialWithdrawalsSchema, - final SszListSchema< - tech.pegasys.teku.spec.datastructures.state.versions.electra.PendingConsolidation, ?> - pendingConsolidationsSchema, - final BeaconStateElectra instance) { - - BeaconStateAltair.applyAltairFields(state, syncCommitteeSchema, instance); - - state.setLatestExecutionPayloadHeader( - instance.latestExecutionPayloadHeader.asInternalExecutionPayloadHeader( - executionPayloadHeaderSchema)); - - state.setNextWithdrawalIndex(instance.nextWithdrawalIndex); - state.setNextWithdrawalValidatorIndex(instance.nextWithdrawalValidatorIndex); - state.setHistoricalSummaries( - historicalSummariesSchema.createFromElements( - instance.historicalSummaries.stream() - .map( - historicalSummary -> historicalSummary.asInternalHistoricalSummary(specVersion)) - .toList())); - state.setDepositRequestsStartIndex(instance.depositRequestsStartIndex); - state.setDepositBalanceToConsume(instance.depositBalanceToConsume); - state.setExitBalanceToConsume(instance.exitBalanceToConsume); - state.setEarliestExitEpoch(instance.earliestExitEpoch); - state.setConsolidationBalanceToConsume(instance.consolidationBalanceToConsume); - state.setEarliestConsolidationEpoch(instance.earliestConsolidationEpoch); - state.setPendingDeposits( - pendingDepositsSchema.createFromElements( - instance.pendingDeposits.stream() - .map(pendingDeposit -> pendingDeposit.asInternalPendingDeposit(specVersion)) - .toList())); - state.setPendingPartialWithdrawals( - pendingPartialWithdrawalsSchema.createFromElements( - instance.pendingPartialWithdrawals.stream() - .map( - pendingPartialWithdrawal -> - pendingPartialWithdrawal.asInternalPendingPartialWithdrawal(specVersion)) - .toList())); - state.setPendingConsolidations( - pendingConsolidationsSchema.createFromElements( - instance.pendingConsolidations.stream() - .map( - pendingConsolidation -> - pendingConsolidation.asInternalPendingConsolidation(specVersion)) - .toList())); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BlindedBeaconBlockBodyElectra.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BlindedBeaconBlockBodyElectra.java deleted file mode 100644 index 7fee68848eb..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BlindedBeaconBlockBodyElectra.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.electra; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.Attestation; -import tech.pegasys.teku.api.schema.AttesterSlashing; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.Deposit; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.KZGCommitment; -import tech.pegasys.teku.api.schema.ProposerSlashing; -import tech.pegasys.teku.api.schema.SignedVoluntaryExit; -import tech.pegasys.teku.api.schema.altair.BeaconBlockBodyAltair; -import tech.pegasys.teku.api.schema.altair.SyncAggregate; -import tech.pegasys.teku.api.schema.capella.SignedBlsToExecutionChange; -import tech.pegasys.teku.api.schema.deneb.ExecutionPayloadHeaderDeneb; -import tech.pegasys.teku.infrastructure.async.SafeFuture; -import tech.pegasys.teku.infrastructure.ssz.schema.SszListSchema; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody; -import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.electra.BlindedBeaconBlockBodySchemaElectra; -import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeaderSchema; -import tech.pegasys.teku.spec.datastructures.execution.versions.electra.ExecutionRequestsSchema; -import tech.pegasys.teku.spec.datastructures.type.SszKZGCommitment; - -public class BlindedBeaconBlockBodyElectra extends BeaconBlockBodyAltair { - - @JsonProperty("execution_payload_header") - public final ExecutionPayloadHeaderDeneb executionPayloadHeader; - - @JsonProperty("bls_to_execution_changes") - public final List blsToExecutionChanges; - - @JsonProperty("blob_kzg_commitments") - public final List blobKZGCommitments; - - @JsonProperty("execution_requests") - public final ExecutionRequests executionRequests; - - @JsonCreator - public BlindedBeaconBlockBodyElectra( - @JsonProperty("randao_reveal") final BLSSignature randaoReveal, - @JsonProperty("eth1_data") final Eth1Data eth1Data, - @JsonProperty("graffiti") final Bytes32 graffiti, - @JsonProperty("proposer_slashings") final List proposerSlashings, - @JsonProperty("attester_slashings") final List attesterSlashings, - @JsonProperty("attestations") final List attestations, - @JsonProperty("deposits") final List deposits, - @JsonProperty("voluntary_exits") final List voluntaryExits, - @JsonProperty("sync_aggregate") final SyncAggregate syncAggregate, - @JsonProperty("execution_payload_header") - final ExecutionPayloadHeaderDeneb executionPayloadHeader, - @JsonProperty("bls_to_execution_changes") - final List blsToExecutionChanges, - @JsonProperty("blob_kzg_commitments") final List blobKZGCommitments, - @JsonProperty("execution_requests") final ExecutionRequests executionRequests) { - super( - randaoReveal, - eth1Data, - graffiti, - proposerSlashings, - attesterSlashings, - attestations, - deposits, - voluntaryExits, - syncAggregate); - checkNotNull( - executionPayloadHeader, "ExecutionPayloadHeader is required for Electra blinded blocks"); - this.executionPayloadHeader = executionPayloadHeader; - checkNotNull( - blsToExecutionChanges, "BlsToExecutionChanges is required for Electra blinded blocks"); - this.blsToExecutionChanges = blsToExecutionChanges; - checkNotNull(blobKZGCommitments, "BlobKZGCommitments is required for Electra blinded blocks"); - this.blobKZGCommitments = blobKZGCommitments; - checkNotNull(executionRequests, "ExecutionRequests is required for Electra blinded blocks"); - this.executionRequests = executionRequests; - } - - public BlindedBeaconBlockBodyElectra( - final tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.electra - .BlindedBeaconBlockBodyElectra - blockBody) { - super(blockBody); - this.executionPayloadHeader = - new ExecutionPayloadHeaderDeneb(blockBody.getExecutionPayloadHeader()); - this.blsToExecutionChanges = - blockBody.getBlsToExecutionChanges().stream().map(SignedBlsToExecutionChange::new).toList(); - this.blobKZGCommitments = - blockBody.getBlobKzgCommitments().stream() - .map(SszKZGCommitment::getKZGCommitment) - .map(KZGCommitment::new) - .toList(); - this.executionRequests = new ExecutionRequests(blockBody.getExecutionRequests()); - } - - @Override - public BlindedBeaconBlockBodySchemaElectra getBeaconBlockBodySchema(final SpecVersion spec) { - return (BlindedBeaconBlockBodySchemaElectra) - spec.getSchemaDefinitions().getBlindedBeaconBlockBodySchema(); - } - - @Override - public boolean isBlinded() { - return true; - } - - @Override - public BeaconBlockBody asInternalBeaconBlockBody(final SpecVersion spec) { - - final ExecutionPayloadHeaderSchema executionPayloadHeaderSchema = - getBeaconBlockBodySchema(spec).getExecutionPayloadHeaderSchema(); - - final SszListSchema< - tech.pegasys.teku.spec.datastructures.operations.SignedBlsToExecutionChange, ?> - blsToExecutionChangesSchema = getBeaconBlockBodySchema(spec).getBlsToExecutionChanges(); - - final SszListSchema blobKZGCommitmentsSchema = - getBeaconBlockBodySchema(spec).getBlobKzgCommitmentsSchema(); - - final ExecutionRequestsSchema executionRequestsSchema = - getBeaconBlockBodySchema(spec).getExecutionRequestsSchema(); - - return super.asInternalBeaconBlockBody( - spec, - builder -> { - builder.executionPayloadHeader( - executionPayloadHeader.asInternalExecutionPayloadHeader( - executionPayloadHeaderSchema)); - builder.blsToExecutionChanges( - this.blsToExecutionChanges.stream() - .map(b -> b.asInternalSignedBlsToExecutionChange(spec)) - .collect(blsToExecutionChangesSchema.collector())); - builder.blobKzgCommitments( - this.blobKZGCommitments.stream() - .map(KZGCommitment::asInternalKZGCommitment) - .map(SszKZGCommitment::new) - .collect(blobKZGCommitmentsSchema.collector())); - builder.executionRequests( - this.executionRequests.asInternalConsolidationRequest(executionRequestsSchema)); - return SafeFuture.COMPLETE; - }); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BlindedBlockElectra.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BlindedBlockElectra.java deleted file mode 100644 index 143e440e9b5..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/BlindedBlockElectra.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.electra; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.altair.BeaconBlockAltair; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock; -import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlockSchema; - -public class BlindedBlockElectra extends BeaconBlockAltair { - - public BlindedBlockElectra(final BeaconBlock message) { - super( - message.getSlot(), - message.getProposerIndex(), - message.getParentRoot(), - message.getStateRoot(), - new BlindedBeaconBlockBodyElectra( - message.getBody().toBlindedVersionElectra().orElseThrow())); - } - - @Override - public BeaconBlockSchema getBeaconBlockSchema(final SpecVersion spec) { - return spec.getSchemaDefinitions().getBlindedBeaconBlockSchema(); - } - - @Override - public BeaconBlock asInternalBeaconBlock(final Spec spec) { - final SpecVersion specVersion = spec.atSlot(slot); - return getBeaconBlockSchema(specVersion) - .create( - slot, - proposer_index, - parent_root, - state_root, - body.asInternalBeaconBlockBody(specVersion)); - } - - @JsonProperty("body") - @Override - public BlindedBeaconBlockBodyElectra getBody() { - return (BlindedBeaconBlockBodyElectra) body; - } - - @JsonCreator - public BlindedBlockElectra( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("proposer_index") final UInt64 proposerIndex, - @JsonProperty("parent_root") final Bytes32 parentRoot, - @JsonProperty("state_root") final Bytes32 stateRoot, - @JsonProperty("body") final BlindedBeaconBlockBodyElectra body) { - super(slot, proposerIndex, parentRoot, stateRoot, body); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/ConsolidationRequest.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/ConsolidationRequest.java deleted file mode 100644 index a4629e18146..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/ConsolidationRequest.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.electra; - -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.bls.BLSPublicKey; -import tech.pegasys.teku.ethereum.execution.types.Eth1Address; -import tech.pegasys.teku.spec.datastructures.execution.versions.electra.ConsolidationRequestSchema; - -public class ConsolidationRequest { - - @JsonProperty("source_address") - private final Eth1Address sourceAddress; - - @JsonProperty("source_pubkey") - private final BLSPublicKey sourcePubkey; - - @JsonProperty("target_pubkey") - private final BLSPublicKey targetPubkey; - - public ConsolidationRequest( - @JsonProperty("source_address") final Eth1Address sourceAddress, - @JsonProperty("source_pubkey") final BLSPublicKey sourcePubkey, - @JsonProperty("target_pubkey") final BLSPublicKey targetPubkey) { - this.sourceAddress = sourceAddress; - this.sourcePubkey = sourcePubkey; - this.targetPubkey = targetPubkey; - } - - public ConsolidationRequest( - final tech.pegasys.teku.spec.datastructures.execution.versions.electra.ConsolidationRequest - consolidationRequest) { - this.sourceAddress = - Eth1Address.fromBytes(consolidationRequest.getSourceAddress().getWrappedBytes()); - this.sourcePubkey = consolidationRequest.getSourcePubkey(); - this.targetPubkey = consolidationRequest.getTargetPubkey(); - } - - public final tech.pegasys.teku.spec.datastructures.execution.versions.electra.ConsolidationRequest - asInternalConsolidationRequest(final ConsolidationRequestSchema schema) { - return schema.create(sourceAddress, sourcePubkey, targetPubkey); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/DepositRequest.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/DepositRequest.java deleted file mode 100644 index 5d343529ad3..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/DepositRequest.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.electra; - -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.BLSPubKey; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.datastructures.execution.versions.electra.DepositRequestSchema; - -public class DepositRequest { - - @JsonProperty("pubkey") - private final BLSPubKey pubkey; - - @JsonProperty("withdrawal_credentials") - private final Bytes32 withdrawalCredentials; - - @JsonProperty("amount") - private final UInt64 amount; - - @JsonProperty("signature") - private final BLSSignature signature; - - @JsonProperty("index") - private final UInt64 index; - - public DepositRequest( - @JsonProperty("pubkey") final BLSPubKey pubkey, - @JsonProperty("withdrawal_credentials") final Bytes32 withdrawalCredentials, - @JsonProperty("amount") final UInt64 amount, - @JsonProperty("signature") final BLSSignature signature, - @JsonProperty("index") final UInt64 index) { - this.pubkey = pubkey; - this.withdrawalCredentials = withdrawalCredentials; - this.amount = amount; - this.signature = signature; - this.index = index; - } - - public DepositRequest( - final tech.pegasys.teku.spec.datastructures.execution.versions.electra.DepositRequest - depositRequest) { - this.pubkey = new BLSPubKey(depositRequest.getPubkey()); - this.withdrawalCredentials = depositRequest.getWithdrawalCredentials(); - this.amount = depositRequest.getAmount(); - this.signature = new BLSSignature(depositRequest.getSignature()); - this.index = depositRequest.getIndex(); - } - - public tech.pegasys.teku.spec.datastructures.execution.versions.electra.DepositRequest - asInternalDepositRequest(final DepositRequestSchema schema) { - return schema.create( - pubkey.asBLSPublicKey(), - withdrawalCredentials, - amount, - signature.asInternalBLSSignature(), - index); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/ExecutionRequests.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/ExecutionRequests.java deleted file mode 100644 index 2243a5fb3a5..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/ExecutionRequests.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.electra; - -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import tech.pegasys.teku.spec.datastructures.execution.versions.electra.ConsolidationRequestSchema; -import tech.pegasys.teku.spec.datastructures.execution.versions.electra.DepositRequestSchema; -import tech.pegasys.teku.spec.datastructures.execution.versions.electra.ExecutionRequestsSchema; -import tech.pegasys.teku.spec.datastructures.execution.versions.electra.WithdrawalRequestSchema; - -public class ExecutionRequests { - - @JsonProperty("deposits") - private final List deposits; - - @JsonProperty("withdrawals") - private final List withdrawals; - - @JsonProperty("consolidations") - private final List consolidations; - - public ExecutionRequests( - @JsonProperty("deposits") final List deposits, - @JsonProperty("withdrawals") final List withdrawals, - @JsonProperty("consolidations") final List consolidations) { - this.deposits = deposits; - this.withdrawals = withdrawals; - this.consolidations = consolidations; - } - - public ExecutionRequests( - final tech.pegasys.teku.spec.datastructures.execution.versions.electra.ExecutionRequests - executionRequests) { - this.deposits = executionRequests.getDeposits().stream().map(DepositRequest::new).toList(); - this.withdrawals = - executionRequests.getWithdrawals().stream().map(WithdrawalRequest::new).toList(); - this.consolidations = - executionRequests.getConsolidations().stream().map(ConsolidationRequest::new).toList(); - } - - public final tech.pegasys.teku.spec.datastructures.execution.versions.electra.ExecutionRequests - asInternalConsolidationRequest(final ExecutionRequestsSchema schema) { - - final DepositRequestSchema depositSchema = - (DepositRequestSchema) schema.getDepositRequestsSchema().getElementSchema(); - final WithdrawalRequestSchema withdrawalSchema = - (WithdrawalRequestSchema) schema.getWithdrawalRequestsSchema().getElementSchema(); - final ConsolidationRequestSchema consolidationSchema = - (ConsolidationRequestSchema) schema.getConsolidationRequestsSchema().getElementSchema(); - - final List - depositsInternal = - deposits.stream() - .map(depositRequest -> depositRequest.asInternalDepositRequest(depositSchema)) - .toList(); - final List - withdrawalsInternal = - withdrawals.stream() - .map( - withdrawalRequest -> - withdrawalRequest.asInternalWithdrawalRequest(withdrawalSchema)) - .toList(); - final List< - tech.pegasys.teku.spec.datastructures.execution.versions.electra.ConsolidationRequest> - consolidationsInternal = - consolidations.stream() - .map( - consolidationRequest -> - consolidationRequest.asInternalConsolidationRequest(consolidationSchema)) - .toList(); - return schema.create(depositsInternal, withdrawalsInternal, consolidationsInternal); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/PendingConsolidation.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/PendingConsolidation.java deleted file mode 100644 index 24802b84ca8..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/PendingConsolidation.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.electra; - -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.Optional; -import tech.pegasys.teku.infrastructure.ssz.primitive.SszUInt64; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsElectra; - -public class PendingConsolidation { - @JsonProperty("source_index") - public final int sourceIndex; - - @JsonProperty("target_index") - public final int targetIndex; - - PendingConsolidation( - final @JsonProperty("source_index") int sourceIndex, - final @JsonProperty("target_index") int targetIndex) { - this.sourceIndex = sourceIndex; - this.targetIndex = targetIndex; - } - - public PendingConsolidation( - final tech.pegasys.teku.spec.datastructures.state.versions.electra.PendingConsolidation - internalPendingConsolidation) { - this.sourceIndex = internalPendingConsolidation.getSourceIndex(); - this.targetIndex = internalPendingConsolidation.getTargetIndex(); - } - - public tech.pegasys.teku.spec.datastructures.state.versions.electra.PendingConsolidation - asInternalPendingConsolidation(final SpecVersion spec) { - final Optional schemaDefinitionsElectra = - spec.getSchemaDefinitions().toVersionElectra(); - if (schemaDefinitionsElectra.isEmpty()) { - throw new IllegalArgumentException( - "Could not create PendingConsolidation for pre-electra spec"); - } - return schemaDefinitionsElectra - .get() - .getPendingConsolidationSchema() - .create( - SszUInt64.of(UInt64.valueOf(this.sourceIndex)), - SszUInt64.of(UInt64.valueOf(this.targetIndex))); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/PendingDeposit.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/PendingDeposit.java deleted file mode 100644 index 5a271ab6a4c..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/PendingDeposit.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.electra; - -import static tech.pegasys.teku.api.schema.SchemaConstants.DESCRIPTION_BYTES96; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.Optional; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.bls.BLSPublicKey; -import tech.pegasys.teku.infrastructure.ssz.primitive.SszBytes32; -import tech.pegasys.teku.infrastructure.ssz.primitive.SszUInt64; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.type.SszPublicKey; -import tech.pegasys.teku.spec.datastructures.type.SszSignature; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsElectra; - -public class PendingDeposit { - - @JsonProperty("pubkey") - private final BLSPublicKey publicKey; - - @JsonProperty("withdrawal_credentials") - private final Bytes32 withdrawalCredentials; - - @JsonProperty("amount") - public final UInt64 amount; - - @Schema(type = "string", format = "byte", description = DESCRIPTION_BYTES96) - public final BLSSignature signature; - - @JsonProperty("slot") - public final UInt64 slot; - - public PendingDeposit( - final @JsonProperty("pubkey") BLSPublicKey publicKey, - final @JsonProperty("withdrawal_credentials") Bytes32 withdrawalCredentials, - final @JsonProperty("amount") UInt64 amount, - final @JsonProperty("signature") BLSSignature signature, - final @JsonProperty("slot") UInt64 slot) { - this.publicKey = publicKey; - this.withdrawalCredentials = withdrawalCredentials; - this.amount = amount; - this.signature = signature; - this.slot = slot; - } - - public PendingDeposit( - final tech.pegasys.teku.spec.datastructures.state.versions.electra.PendingDeposit - internalPendingDeposit) { - this.publicKey = internalPendingDeposit.getPublicKey(); - this.withdrawalCredentials = internalPendingDeposit.getWithdrawalCredentials(); - this.amount = internalPendingDeposit.getAmount(); - this.signature = new BLSSignature(internalPendingDeposit.getSignature()); - this.slot = internalPendingDeposit.getSlot(); - } - - public tech.pegasys.teku.spec.datastructures.state.versions.electra.PendingDeposit - asInternalPendingDeposit(final SpecVersion spec) { - final Optional schemaDefinitionsElectra = - spec.getSchemaDefinitions().toVersionElectra(); - if (schemaDefinitionsElectra.isEmpty()) { - throw new IllegalArgumentException("Could not create PendingDeposit for pre-electra spec"); - } - return schemaDefinitionsElectra - .get() - .getPendingDepositSchema() - .create( - new SszPublicKey(publicKey), - SszBytes32.of(withdrawalCredentials), - SszUInt64.of(amount), - new SszSignature(signature.asInternalBLSSignature()), - SszUInt64.of(slot)); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/PendingPartialWithdrawal.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/PendingPartialWithdrawal.java deleted file mode 100644 index 23d854f8c20..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/PendingPartialWithdrawal.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.electra; - -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.Optional; -import tech.pegasys.teku.infrastructure.ssz.primitive.SszUInt64; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsElectra; - -public class PendingPartialWithdrawal { - @JsonProperty("validator_index") - public final int validatorIndex; - - @JsonProperty("amount") - public final UInt64 amount; - - @JsonProperty("withdrawable_epoch") - public final UInt64 withdrawableEpoch; - - public PendingPartialWithdrawal( - final @JsonProperty("validator_index") int validatorIndex, - final @JsonProperty("amount") UInt64 amount, - final @JsonProperty("withdrawable_epoch") UInt64 withdrawableEpoch) { - this.validatorIndex = validatorIndex; - this.amount = amount; - this.withdrawableEpoch = withdrawableEpoch; - } - - public PendingPartialWithdrawal( - final tech.pegasys.teku.spec.datastructures.state.versions.electra.PendingPartialWithdrawal - pendingPartialWithdrawal) { - this.validatorIndex = pendingPartialWithdrawal.getValidatorIndex(); - this.amount = pendingPartialWithdrawal.getAmount(); - this.withdrawableEpoch = pendingPartialWithdrawal.getWithdrawableEpoch(); - } - - public tech.pegasys.teku.spec.datastructures.state.versions.electra.PendingPartialWithdrawal - asInternalPendingPartialWithdrawal(final SpecVersion spec) { - final Optional schemaDefinitionsElectra = - spec.getSchemaDefinitions().toVersionElectra(); - if (schemaDefinitionsElectra.isEmpty()) { - throw new IllegalArgumentException( - "Could not create PendingPartialWithdrawal for pre-electra spec"); - } - return schemaDefinitionsElectra - .get() - .getPendingPartialWithdrawalSchema() - .create( - SszUInt64.of(UInt64.valueOf(this.validatorIndex)), - SszUInt64.of(this.amount), - SszUInt64.of(this.withdrawableEpoch)); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/SignedBeaconBlockElectra.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/SignedBeaconBlockElectra.java deleted file mode 100644 index 9743dd2ad3e..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/SignedBeaconBlockElectra.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.electra; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.SignedBeaconBlock; -import tech.pegasys.teku.api.schema.interfaces.SignedBlock; - -public class SignedBeaconBlockElectra extends SignedBeaconBlock implements SignedBlock { - private final BeaconBlockElectra message; - - public SignedBeaconBlockElectra( - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock internalBlock) { - super(internalBlock); - this.message = new BeaconBlockElectra(internalBlock.getMessage()); - } - - @Override - public BeaconBlockElectra getMessage() { - return message; - } - - @JsonCreator - public SignedBeaconBlockElectra( - @JsonProperty("message") final BeaconBlockElectra message, - @JsonProperty("signature") final BLSSignature signature) { - super(message, signature); - this.message = message; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/SignedBlindedBeaconBlockElectra.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/SignedBlindedBeaconBlockElectra.java deleted file mode 100644 index 4272f8cf647..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/SignedBlindedBeaconBlockElectra.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.electra; - -import static com.google.common.base.Preconditions.checkArgument; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.SignedBeaconBlock; -import tech.pegasys.teku.api.schema.interfaces.SignedBlock; - -public class SignedBlindedBeaconBlockElectra extends SignedBeaconBlock implements SignedBlock { - private final BlindedBlockElectra message; - - public SignedBlindedBeaconBlockElectra( - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock internalBlock) { - super(internalBlock); - checkArgument( - internalBlock.getMessage().getBody().isBlinded(), "requires a signed blinded beacon block"); - this.message = new BlindedBlockElectra(internalBlock.getMessage()); - } - - @Override - public BlindedBlockElectra getMessage() { - return message; - } - - @JsonCreator - public SignedBlindedBeaconBlockElectra( - @JsonProperty("message") final BlindedBlockElectra message, - @JsonProperty("signature") final BLSSignature signature) { - super(message, signature); - this.message = message; - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/WithdrawalRequest.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/WithdrawalRequest.java deleted file mode 100644 index 9de11573e21..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/WithdrawalRequest.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.electra; - -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.bls.BLSPublicKey; -import tech.pegasys.teku.ethereum.execution.types.Eth1Address; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.datastructures.execution.versions.electra.WithdrawalRequestSchema; - -public class WithdrawalRequest { - - @JsonProperty("source_address") - private final Eth1Address sourceAddress; - - @JsonProperty("validator_pubkey") - private final BLSPublicKey validatorPubkey; - - @JsonProperty("amount") - private final UInt64 amount; - - public WithdrawalRequest( - @JsonProperty("source_address") final Eth1Address sourceAddress, - @JsonProperty("validator_pubkey") final BLSPublicKey validatorPubkey, - @JsonProperty("amount") final UInt64 amount) { - this.sourceAddress = sourceAddress; - this.validatorPubkey = validatorPubkey; - this.amount = amount; - } - - public WithdrawalRequest( - final tech.pegasys.teku.spec.datastructures.execution.versions.electra.WithdrawalRequest - withdrawalRequest) { - this.sourceAddress = - Eth1Address.fromBytes(withdrawalRequest.getSourceAddress().getWrappedBytes()); - this.validatorPubkey = withdrawalRequest.getValidatorPubkey(); - this.amount = withdrawalRequest.getAmount(); - } - - public final tech.pegasys.teku.spec.datastructures.execution.versions.electra.WithdrawalRequest - asInternalWithdrawalRequest(final WithdrawalRequestSchema schema) { - return schema.create(sourceAddress, validatorPubkey, amount); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/interfaces/SignedBlock.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/interfaces/SignedBlock.java deleted file mode 100644 index 13745dcc691..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/interfaces/SignedBlock.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.interfaces; - -import io.swagger.v3.oas.annotations.media.Schema; -import tech.pegasys.teku.api.schema.altair.SignedBeaconBlockAltair; -import tech.pegasys.teku.api.schema.bellatrix.SignedBeaconBlockBellatrix; -import tech.pegasys.teku.api.schema.capella.SignedBeaconBlockCapella; -import tech.pegasys.teku.api.schema.deneb.SignedBeaconBlockDeneb; -import tech.pegasys.teku.api.schema.electra.SignedBeaconBlockElectra; -import tech.pegasys.teku.api.schema.phase0.SignedBeaconBlockPhase0; - -@Schema( - oneOf = { - SignedBeaconBlockPhase0.class, - SignedBeaconBlockAltair.class, - SignedBeaconBlockBellatrix.class, - SignedBeaconBlockCapella.class, - SignedBeaconBlockDeneb.class, - SignedBeaconBlockElectra.class - }) -public interface SignedBlock {} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/interfaces/State.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/interfaces/State.java deleted file mode 100644 index cea644824b9..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/interfaces/State.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.interfaces; - -import io.swagger.v3.oas.annotations.media.Schema; -import tech.pegasys.teku.api.schema.altair.BeaconStateAltair; -import tech.pegasys.teku.api.schema.bellatrix.BeaconStateBellatrix; -import tech.pegasys.teku.api.schema.capella.BeaconStateCapella; -import tech.pegasys.teku.api.schema.deneb.BeaconStateDeneb; -import tech.pegasys.teku.api.schema.electra.BeaconStateElectra; -import tech.pegasys.teku.api.schema.phase0.BeaconStatePhase0; - -@Schema( - oneOf = { - BeaconStatePhase0.class, - BeaconStateAltair.class, - BeaconStateBellatrix.class, - BeaconStateCapella.class, - BeaconStateDeneb.class, - BeaconStateElectra.class - }) -public interface State {} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/interfaces/UnsignedBlindedBlock.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/interfaces/UnsignedBlindedBlock.java deleted file mode 100644 index a14a5ba03d2..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/interfaces/UnsignedBlindedBlock.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.interfaces; - -import io.swagger.v3.oas.annotations.media.Schema; -import tech.pegasys.teku.api.schema.altair.BeaconBlockAltair; -import tech.pegasys.teku.api.schema.bellatrix.BlindedBlockBellatrix; -import tech.pegasys.teku.api.schema.capella.BlindedBlockCapella; -import tech.pegasys.teku.api.schema.deneb.BlindedBlockDeneb; -import tech.pegasys.teku.api.schema.electra.BlindedBlockElectra; -import tech.pegasys.teku.api.schema.phase0.BeaconBlockPhase0; - -@Schema( - oneOf = { - BeaconBlockPhase0.class, - BeaconBlockAltair.class, - BlindedBlockBellatrix.class, - BlindedBlockCapella.class, - BlindedBlockDeneb.class, - BlindedBlockElectra.class - }) -public interface UnsignedBlindedBlock {} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/interfaces/UnsignedBlock.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/interfaces/UnsignedBlock.java deleted file mode 100644 index ddd59680af1..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/interfaces/UnsignedBlock.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.interfaces; - -import io.swagger.v3.oas.annotations.media.Schema; -import tech.pegasys.teku.api.schema.altair.BeaconBlockAltair; -import tech.pegasys.teku.api.schema.bellatrix.BeaconBlockBellatrix; -import tech.pegasys.teku.api.schema.capella.BeaconBlockCapella; -import tech.pegasys.teku.api.schema.deneb.BeaconBlockDeneb; -import tech.pegasys.teku.api.schema.electra.BeaconBlockElectra; -import tech.pegasys.teku.api.schema.phase0.BeaconBlockPhase0; - -@Schema( - oneOf = { - BeaconBlockPhase0.class, - BeaconBlockAltair.class, - BeaconBlockBellatrix.class, - BeaconBlockCapella.class, - BeaconBlockDeneb.class, - BeaconBlockElectra.class - }) -public interface UnsignedBlock {} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/package-info.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/package-info.java deleted file mode 100644 index 7a0ca0f4fc3..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/package-info.java +++ /dev/null @@ -1,5 +0,0 @@ -/** - * @deprecated As of release 2024.09.00, api.schema is not maintained any longer. - */ -@Deprecated -package tech.pegasys.teku.api.schema; diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/phase0/BeaconBlockPhase0.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/phase0/BeaconBlockPhase0.java deleted file mode 100644 index 86b62a4f6cc..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/phase0/BeaconBlockPhase0.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.phase0; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.BeaconBlock; -import tech.pegasys.teku.api.schema.BeaconBlockBody; -import tech.pegasys.teku.api.schema.interfaces.UnsignedBlock; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; - -@SuppressWarnings("JavaCase") -public class BeaconBlockPhase0 extends BeaconBlock implements UnsignedBlock { - public BeaconBlockPhase0(final tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock message) { - super( - message.getSlot(), - message.getProposerIndex(), - message.getParentRoot(), - message.getStateRoot(), - new BeaconBlockBody(message.getBody())); - } - - @JsonCreator - public BeaconBlockPhase0( - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("proposer_index") final UInt64 proposer_index, - @JsonProperty("parent_root") final Bytes32 parent_root, - @JsonProperty("state_root") final Bytes32 state_root, - @JsonProperty("body") final BeaconBlockBody body) { - super(slot, proposer_index, parent_root, state_root, body); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/phase0/BeaconStatePhase0.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/phase0/BeaconStatePhase0.java deleted file mode 100644 index 2f8abbc1eb4..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/phase0/BeaconStatePhase0.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.phase0; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.schema.BeaconBlockHeader; -import tech.pegasys.teku.api.schema.BeaconState; -import tech.pegasys.teku.api.schema.Checkpoint; -import tech.pegasys.teku.api.schema.Eth1Data; -import tech.pegasys.teku.api.schema.Fork; -import tech.pegasys.teku.api.schema.PendingAttestation; -import tech.pegasys.teku.api.schema.Validator; -import tech.pegasys.teku.api.schema.interfaces.State; -import tech.pegasys.teku.infrastructure.ssz.collections.SszBitvector; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.SpecVersion; -import tech.pegasys.teku.spec.datastructures.state.PendingAttestation.PendingAttestationSchema; -import tech.pegasys.teku.spec.datastructures.state.beaconstate.MutableBeaconState; - -@SuppressWarnings("JavaCase") -public class BeaconStatePhase0 extends BeaconState implements State { - public final List previous_epoch_attestations; - public final List current_epoch_attestations; - - @JsonCreator - public BeaconStatePhase0( - @JsonProperty("genesis_time") final UInt64 genesis_time, - @JsonProperty("genesis_validators_root") final Bytes32 genesis_validators_root, - @JsonProperty("slot") final UInt64 slot, - @JsonProperty("fork") final Fork fork, - @JsonProperty("latest_block_header") final BeaconBlockHeader latest_block_header, - @JsonProperty("block_roots") final List block_roots, - @JsonProperty("state_roots") final List state_roots, - @JsonProperty("historical_roots") final List historical_roots, - @JsonProperty("eth1_data") final Eth1Data eth1_data, - @JsonProperty("eth1_data_votes") final List eth1_data_votes, - @JsonProperty("eth1_deposit_index") final UInt64 eth1_deposit_index, - @JsonProperty("validators") final List validators, - @JsonProperty("balances") final List balances, - @JsonProperty("randao_mixes") final List randao_mixes, - @JsonProperty("slashings") final List slashings, - @JsonProperty("previous_epoch_attestations") - final List previous_epoch_attestations, - @JsonProperty("current_epoch_attestations") - final List current_epoch_attestations, - @JsonProperty("justification_bits") final SszBitvector justification_bits, - @JsonProperty("previous_justified_checkpoint") final Checkpoint previous_justified_checkpoint, - @JsonProperty("current_justified_checkpoint") final Checkpoint current_justified_checkpoint, - @JsonProperty("finalized_checkpoint") final Checkpoint finalized_checkpoint) { - super( - genesis_time, - genesis_validators_root, - slot, - fork, - latest_block_header, - block_roots, - state_roots, - historical_roots, - eth1_data, - eth1_data_votes, - eth1_deposit_index, - validators, - balances, - randao_mixes, - slashings, - justification_bits, - previous_justified_checkpoint, - current_justified_checkpoint, - finalized_checkpoint); - this.previous_epoch_attestations = previous_epoch_attestations; - this.current_epoch_attestations = current_epoch_attestations; - } - - public BeaconStatePhase0( - final tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState beaconState) { - super(beaconState); - // Optionally set phase0-specific versioned fields - final Optional< - tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.phase0 - .BeaconStatePhase0> - maybePhase0State = beaconState.toVersionPhase0(); - if (maybePhase0State.isPresent()) { - final tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.phase0 - .BeaconStatePhase0 - genesisState = maybePhase0State.get(); - this.previous_epoch_attestations = - genesisState.getPreviousEpochAttestations().stream() - .map(PendingAttestation::new) - .toList(); - this.current_epoch_attestations = - genesisState.getCurrentEpochAttestations().stream().map(PendingAttestation::new).toList(); - } else { - this.previous_epoch_attestations = null; - this.current_epoch_attestations = null; - } - } - - @Override - protected void applyAdditionalFields( - final MutableBeaconState state, final SpecVersion specVersion) { - state - .toMutableVersionPhase0() - .ifPresent( - mutableState -> { - final PendingAttestationSchema pendingAttestationSchema = - mutableState.getBeaconStateSchema().getPendingAttestationSchema(); - mutableState - .getPreviousEpochAttestations() - .setAll( - previous_epoch_attestations.stream() - .map( - pendingAttestation -> - pendingAttestation.asInternalPendingAttestation( - pendingAttestationSchema)) - .toList()); - mutableState - .getCurrentEpochAttestations() - .setAll( - current_epoch_attestations.stream() - .map( - pendingAttestation -> - pendingAttestation.asInternalPendingAttestation( - pendingAttestationSchema)) - .toList()); - }); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final BeaconStatePhase0 that = (BeaconStatePhase0) o; - return Objects.equals(previous_epoch_attestations, that.previous_epoch_attestations) - && Objects.equals(current_epoch_attestations, that.current_epoch_attestations); - } - - @Override - public int hashCode() { - return Objects.hash(previous_epoch_attestations, current_epoch_attestations); - } -} diff --git a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/phase0/SignedBeaconBlockPhase0.java b/data/serializer/src/main/java/tech/pegasys/teku/api/schema/phase0/SignedBeaconBlockPhase0.java deleted file mode 100644 index 465fc39dddb..00000000000 --- a/data/serializer/src/main/java/tech/pegasys/teku/api/schema/phase0/SignedBeaconBlockPhase0.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.phase0; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import tech.pegasys.teku.api.schema.BLSSignature; -import tech.pegasys.teku.api.schema.BeaconBlock; -import tech.pegasys.teku.api.schema.SignedBeaconBlock; -import tech.pegasys.teku.api.schema.interfaces.SignedBlock; - -public class SignedBeaconBlockPhase0 extends SignedBeaconBlock implements SignedBlock { - - public SignedBeaconBlockPhase0( - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock internalBlock) { - super(internalBlock); - } - - @JsonCreator - public SignedBeaconBlockPhase0( - @JsonProperty("message") final BeaconBlock message, - @JsonProperty("signature") final BLSSignature signature) { - super(message, signature); - } -} diff --git a/data/serializer/src/test/java/tech/pegasys/teku/api/response/v1/EventTypeTest.java b/data/serializer/src/test/java/tech/pegasys/teku/api/response/EventTypeTest.java similarity index 96% rename from data/serializer/src/test/java/tech/pegasys/teku/api/response/v1/EventTypeTest.java rename to data/serializer/src/test/java/tech/pegasys/teku/api/response/EventTypeTest.java index 25d82f0af9f..ba05692a36a 100644 --- a/data/serializer/src/test/java/tech/pegasys/teku/api/response/v1/EventTypeTest.java +++ b/data/serializer/src/test/java/tech/pegasys/teku/api/response/EventTypeTest.java @@ -11,7 +11,7 @@ * specific language governing permissions and limitations under the License. */ -package tech.pegasys.teku.api.response.v1; +package tech.pegasys.teku.api.response; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; diff --git a/data/serializer/src/test/java/tech/pegasys/teku/api/response/v1/beacon/ValidatorResponseTest.java b/data/serializer/src/test/java/tech/pegasys/teku/api/response/ValidatorStatusUtilTest.java similarity index 83% rename from data/serializer/src/test/java/tech/pegasys/teku/api/response/v1/beacon/ValidatorResponseTest.java rename to data/serializer/src/test/java/tech/pegasys/teku/api/response/ValidatorStatusUtilTest.java index e0937e63832..3918bd35a1d 100644 --- a/data/serializer/src/test/java/tech/pegasys/teku/api/response/v1/beacon/ValidatorResponseTest.java +++ b/data/serializer/src/test/java/tech/pegasys/teku/api/response/ValidatorStatusUtilTest.java @@ -11,7 +11,7 @@ * specific language governing permissions and limitations under the License. */ -package tech.pegasys.teku.api.response.v1.beacon; +package tech.pegasys.teku.api.response; import static org.assertj.core.api.Assertions.assertThat; import static tech.pegasys.teku.infrastructure.unsigned.UInt64.ONE; @@ -27,7 +27,7 @@ import tech.pegasys.teku.spec.datastructures.state.Validator; import tech.pegasys.teku.spec.util.DataStructureUtil; -public class ValidatorResponseTest { +public class ValidatorStatusUtilTest { private static final UInt64 ONE_HUNDRED = UInt64.valueOf(100); private static final UInt64 TWO_HUNDRED = UInt64.valueOf(200); private final Spec spec = TestSpecFactory.createMinimalPhase0(); @@ -38,45 +38,45 @@ public class ValidatorResponseTest { @Test void status_shouldBePendingInitialised() { final Validator validator = pendingValidator(TWO_HUNDRED, FAR_FUTURE_EPOCH); - assertThat(ValidatorResponse.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) + assertThat(ValidatorStatusUtil.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) .isEqualTo(ValidatorStatus.pending_initialized); } @Test void status_shouldBePendingQueued() { final Validator validator = pendingValidator(TWO_HUNDRED, TWO_HUNDRED); - assertThat(ValidatorResponse.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) + assertThat(ValidatorStatusUtil.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) .isEqualTo(ValidatorStatus.pending_queued); } @Test void status_shouldBeActiveOngoing() { final Validator validator = activeValidator(FAR_FUTURE_EPOCH, false); - assertThat(ValidatorResponse.getValidatorStatus(ZERO, validator, FAR_FUTURE_EPOCH)) + assertThat(ValidatorStatusUtil.getValidatorStatus(ZERO, validator, FAR_FUTURE_EPOCH)) .isEqualTo(ValidatorStatus.active_ongoing); } @Test void status_shouldBeActiveExiting() { final Validator validator = activeValidator(TWO_HUNDRED, false); - assertThat(ValidatorResponse.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) + assertThat(ValidatorStatusUtil.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) .isEqualTo(ValidatorStatus.active_exiting); } @Test void status_shouldBeActiveSlashed() { final Validator validator = activeValidator(TWO_HUNDRED, true); - assertThat(ValidatorResponse.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) + assertThat(ValidatorStatusUtil.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) .isEqualTo(ValidatorStatus.active_slashed); } @Test void status_shouldBeExitedUnslashed() { final Validator validator = exitedValidator(ONE_HUNDRED, TWO_HUNDRED, false); - assertThat(ValidatorResponse.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) + assertThat(ValidatorStatusUtil.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) .isEqualTo(ValidatorStatus.exited_unslashed); assertThat( - ValidatorResponse.getValidatorStatus( + ValidatorStatusUtil.getValidatorStatus( ONE_HUNDRED.plus(ONE), validator, FAR_FUTURE_EPOCH)) .isEqualTo(ValidatorStatus.exited_unslashed); } @@ -84,21 +84,21 @@ void status_shouldBeExitedUnslashed() { @Test void status_shouldBeExitedSlashed() { final Validator validator = exitedValidator(ONE_HUNDRED, TWO_HUNDRED, true); - assertThat(ValidatorResponse.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) + assertThat(ValidatorStatusUtil.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) .isEqualTo(ValidatorStatus.exited_slashed); } @Test void status_shouldBeWithdrawalPossible() { final Validator validator = withdrawalValidator(UInt64.valueOf("32000000000"), ONE_HUNDRED); - assertThat(ValidatorResponse.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) + assertThat(ValidatorStatusUtil.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) .isEqualTo(ValidatorStatus.withdrawal_possible); } @Test void status_shouldBeWithdrawalDone() { final Validator validator = withdrawalValidator(ZERO, ONE_HUNDRED); - assertThat(ValidatorResponse.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) + assertThat(ValidatorStatusUtil.getValidatorStatus(ONE_HUNDRED, validator, FAR_FUTURE_EPOCH)) .isEqualTo(ValidatorStatus.withdrawal_done); } diff --git a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/BLSPubKeyTest.java b/data/serializer/src/test/java/tech/pegasys/teku/api/schema/BLSPubKeyTest.java deleted file mode 100644 index 872d6cd0eb7..00000000000 --- a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/BLSPubKeyTest.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static org.assertj.core.api.Assertions.assertThat; - -import org.junit.jupiter.api.Test; -import tech.pegasys.teku.bls.BLSPublicKey; -import tech.pegasys.teku.spec.TestSpecFactory; -import tech.pegasys.teku.spec.util.DataStructureUtil; - -public class BLSPubKeyTest { - private final DataStructureUtil dataStructureUtil = - new DataStructureUtil(TestSpecFactory.createDefault()); - private final BLSPublicKey blsPublicKey = dataStructureUtil.randomPublicKey(); - - @Test - public void shouldConvertToInternalObject() { - final BLSPubKey blsPubKey = new BLSPubKey(blsPublicKey); - assertThat(blsPubKey.asBLSPublicKey()).isEqualTo(blsPublicKey); - } -} diff --git a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/BeaconStateTest.java b/data/serializer/src/test/java/tech/pegasys/teku/api/schema/BeaconStateTest.java deleted file mode 100644 index aa4206c5902..00000000000 --- a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/BeaconStateTest.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static org.assertj.core.api.Assertions.assertThat; - -import org.junit.jupiter.api.TestTemplate; -import tech.pegasys.teku.api.schema.altair.BeaconStateAltair; -import tech.pegasys.teku.api.schema.bellatrix.BeaconStateBellatrix; -import tech.pegasys.teku.api.schema.capella.BeaconStateCapella; -import tech.pegasys.teku.api.schema.deneb.BeaconStateDeneb; -import tech.pegasys.teku.api.schema.electra.BeaconStateElectra; -import tech.pegasys.teku.api.schema.phase0.BeaconStatePhase0; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.TestSpecContext; -import tech.pegasys.teku.spec.TestSpecInvocationContextProvider.SpecContext; - -@TestSpecContext(allMilestones = true) -public class BeaconStateTest { - - @TestTemplate - public void shouldConvertToInternalObject(final SpecContext ctx) { - final tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState beaconStateInternal = - ctx.getDataStructureUtil().randomBeaconState(); - final Spec spec = ctx.getSpec(); - final BeaconState beaconState = - switch (spec.getGenesisSpec().getMilestone()) { - case PHASE0 -> new BeaconStatePhase0(beaconStateInternal); - case ALTAIR -> new BeaconStateAltair(beaconStateInternal); - case BELLATRIX -> new BeaconStateBellatrix(beaconStateInternal); - case CAPELLA -> new BeaconStateCapella(beaconStateInternal); - case DENEB -> new BeaconStateDeneb(beaconStateInternal); - case ELECTRA, FULU -> new BeaconStateElectra(beaconStateInternal); - }; - - assertThat(beaconState.asInternalBeaconState(spec)).isEqualTo(beaconStateInternal); - } -} diff --git a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/Eth1DataTest.java b/data/serializer/src/test/java/tech/pegasys/teku/api/schema/Eth1DataTest.java deleted file mode 100644 index ec2be71bce2..00000000000 --- a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/Eth1DataTest.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static org.assertj.core.api.Assertions.assertThat; - -import org.junit.jupiter.api.Test; -import tech.pegasys.teku.spec.TestSpecFactory; -import tech.pegasys.teku.spec.util.DataStructureUtil; - -public class Eth1DataTest { - private final DataStructureUtil dataStructureUtil = - new DataStructureUtil(TestSpecFactory.createDefault()); - private final tech.pegasys.teku.spec.datastructures.blocks.Eth1Data eth1DataInternal = - dataStructureUtil.randomEth1Data(); - - @Test - public void shouldConvertToInternalObject() { - final Eth1Data eth1Data = new Eth1Data(eth1DataInternal); - assertThat(eth1Data.asInternalEth1Data()).isEqualTo(eth1DataInternal); - } -} diff --git a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/ForkTest.java b/data/serializer/src/test/java/tech/pegasys/teku/api/schema/ForkTest.java deleted file mode 100644 index ad9da160fa4..00000000000 --- a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/ForkTest.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static org.assertj.core.api.Assertions.assertThat; - -import org.junit.jupiter.api.Test; -import tech.pegasys.teku.spec.TestSpecFactory; -import tech.pegasys.teku.spec.util.DataStructureUtil; - -public class ForkTest { - private final DataStructureUtil dataStructureUtil = - new DataStructureUtil(TestSpecFactory.createDefault()); - private final tech.pegasys.teku.spec.datastructures.state.Fork forkInternal = - dataStructureUtil.randomFork(); - - @Test - public void shouldConvertToInternalObject() { - Fork fork = new Fork(forkInternal); - assertThat(fork.asInternalFork()).isEqualTo(forkInternal); - } -} diff --git a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/LogLevelTest.java b/data/serializer/src/test/java/tech/pegasys/teku/api/schema/LogLevelTest.java deleted file mode 100644 index c767d4b6a73..00000000000 --- a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/LogLevelTest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -import org.apache.logging.log4j.Level; -import org.junit.jupiter.api.Test; - -public class LogLevelTest { - - @Test - public void shouldAcceptDebugLogLevelInUpperCase() { - final LogLevel level = new LogLevel("INFO"); - - assertThat(level.getLevel()).isEqualTo(Level.INFO); - } - - @Test - public void shouldAcceptDebugLogLevelInLowerCase() { - final LogLevel level = new LogLevel("info"); - - assertThat(level.getLevel()).isEqualTo(Level.INFO); - } - - @Test - public void shouldExceptionWhenLogLevelInvalid() { - - assertThatThrownBy(() -> new LogLevel("I'm an invalid log level")) - .isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("Unknown level constant [I'M AN INVALID LOG LEVEL]."); - } -} diff --git a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/PendingAttestationTest.java b/data/serializer/src/test/java/tech/pegasys/teku/api/schema/PendingAttestationTest.java deleted file mode 100644 index e913e5c0632..00000000000 --- a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/PendingAttestationTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static org.assertj.core.api.Assertions.assertThat; - -import org.junit.jupiter.api.Test; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.TestSpecFactory; -import tech.pegasys.teku.spec.util.DataStructureUtil; - -public class PendingAttestationTest { - private final Spec spec = TestSpecFactory.createMinimalPhase0(); - private final DataStructureUtil dataStructureUtil = new DataStructureUtil(spec); - private final tech.pegasys.teku.spec.datastructures.state.PendingAttestation attestationInternal = - dataStructureUtil.randomPendingAttestation(); - - @Test - public void shouldConvertToInternalObject() { - final PendingAttestation pendingAttestation = new PendingAttestation(attestationInternal); - assertThat(pendingAttestation.asInternalPendingAttestation(attestationInternal.getSchema())) - .isEqualTo(attestationInternal); - } -} diff --git a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/SignedBeaconBlockTest.java b/data/serializer/src/test/java/tech/pegasys/teku/api/schema/SignedBeaconBlockTest.java deleted file mode 100644 index f208821bd76..00000000000 --- a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/SignedBeaconBlockTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static tech.pegasys.teku.infrastructure.ssz.SszDataAssert.assertThatSszData; - -import org.junit.jupiter.api.TestTemplate; -import tech.pegasys.teku.spec.TestSpecContext; -import tech.pegasys.teku.spec.TestSpecInvocationContextProvider.SpecContext; - -@TestSpecContext(allMilestones = true) -class SignedBeaconBlockTest { - - @TestTemplate - public void shouldConvertSchemaToInternalCorrectly(final SpecContext ctx) { - - final tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock internalBlock = - ctx.getDataStructureUtil().randomSignedBeaconBlock(1); - final SignedBeaconBlock apiBlock = SignedBeaconBlock.create(internalBlock); - assertThatSszData(apiBlock.asInternalSignedBeaconBlock(ctx.getSpec())) - .isEqualByAllMeansTo(internalBlock); - } -} diff --git a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/ValidatorTest.java b/data/serializer/src/test/java/tech/pegasys/teku/api/schema/ValidatorTest.java deleted file mode 100644 index 6e28227a0ee..00000000000 --- a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/ValidatorTest.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema; - -import static org.assertj.core.api.Assertions.assertThat; - -import org.junit.jupiter.api.Test; -import tech.pegasys.teku.spec.TestSpecFactory; -import tech.pegasys.teku.spec.util.DataStructureUtil; - -public class ValidatorTest { - private final DataStructureUtil dataStructureUtil = - new DataStructureUtil(TestSpecFactory.createDefault()); - private final tech.pegasys.teku.spec.datastructures.state.Validator validatorInternal = - dataStructureUtil.randomValidator(); - - @Test - public void shouldConvertToInternalObject() { - final Validator validator = new Validator(validatorInternal); - assertThat(validator.asInternalValidator()).isEqualTo(validatorInternal); - } -} diff --git a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/altair/BeaconBlockBodyAltairTest.java b/data/serializer/src/test/java/tech/pegasys/teku/api/schema/altair/BeaconBlockBodyAltairTest.java deleted file mode 100644 index 3589e7d5675..00000000000 --- a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/altair/BeaconBlockBodyAltairTest.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.altair; - -import static org.assertj.core.api.Assertions.assertThat; -import static tech.pegasys.teku.infrastructure.unsigned.UInt64.ONE; - -import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.SchemaObjectProvider; -import tech.pegasys.teku.api.schema.BeaconBlock; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.TestSpecFactory; -import tech.pegasys.teku.spec.util.DataStructureUtil; - -public class BeaconBlockBodyAltairTest { - private final Spec spec = TestSpecFactory.createMinimalAltair(); - private final DataStructureUtil dataStructureUtil = new DataStructureUtil(spec); - private final SchemaObjectProvider schemaObjectProvider = new SchemaObjectProvider(spec); - - @Test - void asInternalBeaconBlockBody_ShouldConvertAltairBlock() { - final tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock internalBlock = - dataStructureUtil.randomBeaconBlock(ONE); - final BeaconBlock block = schemaObjectProvider.getBeaconBlock(internalBlock); - - assertThat(block).isInstanceOf(BeaconBlockAltair.class); - assertThat(block.asInternalBeaconBlock(spec)).isEqualTo(internalBlock); - } -} diff --git a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/bellatrix/BeaconBlockBodyBellatrixTest.java b/data/serializer/src/test/java/tech/pegasys/teku/api/schema/bellatrix/BeaconBlockBodyBellatrixTest.java deleted file mode 100644 index d6726906c26..00000000000 --- a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/bellatrix/BeaconBlockBodyBellatrixTest.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.bellatrix; - -import static org.assertj.core.api.Assertions.assertThat; -import static tech.pegasys.teku.infrastructure.unsigned.UInt64.ONE; - -import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.SchemaObjectProvider; -import tech.pegasys.teku.api.schema.BeaconBlock; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.TestSpecFactory; -import tech.pegasys.teku.spec.util.DataStructureUtil; - -public class BeaconBlockBodyBellatrixTest { - private final Spec spec = TestSpecFactory.createMinimalBellatrix(); - private final DataStructureUtil dataStructureUtil = new DataStructureUtil(spec); - private final SchemaObjectProvider schemaObjectProvider = new SchemaObjectProvider(spec); - - @Test - void asInternalBeaconBlockBody_ShouldConvertBellatrixBlock() { - final tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock internalBlock = - dataStructureUtil.randomBeaconBlock(ONE); - final BeaconBlock block = schemaObjectProvider.getBeaconBlock(internalBlock); - - assertThat(block).isInstanceOf(BeaconBlockBellatrix.class); - assertThat(block.asInternalBeaconBlock(spec)).isEqualTo(internalBlock); - } -} diff --git a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/bellatrix/BlindedBeaconBlockBellatrixTest.java b/data/serializer/src/test/java/tech/pegasys/teku/api/schema/bellatrix/BlindedBeaconBlockBellatrixTest.java deleted file mode 100644 index 2897dc87087..00000000000 --- a/data/serializer/src/test/java/tech/pegasys/teku/api/schema/bellatrix/BlindedBeaconBlockBellatrixTest.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.api.schema.bellatrix; - -import static org.assertj.core.api.Assertions.assertThat; -import static tech.pegasys.teku.infrastructure.unsigned.UInt64.ONE; - -import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.SchemaObjectProvider; -import tech.pegasys.teku.api.schema.BeaconBlock; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.TestSpecFactory; -import tech.pegasys.teku.spec.util.DataStructureUtil; - -public class BlindedBeaconBlockBellatrixTest { - private final Spec spec = TestSpecFactory.createMinimalBellatrix(); - private final DataStructureUtil dataStructureUtil = new DataStructureUtil(spec); - private final SchemaObjectProvider schemaObjectProvider = new SchemaObjectProvider(spec); - - @Test - void asInternalBeaconBlockBody_ShouldConvertBellatrixBlindedBlock() { - final tech.pegasys.teku.spec.datastructures.blocks.BeaconBlock internalBlock = - dataStructureUtil.randomBlindedBeaconBlock(ONE); - final BeaconBlock block = schemaObjectProvider.getBlindedBlock(internalBlock); - assertThat(block).isInstanceOf(BlindedBlockBellatrix.class); - - final BlindedBlockBellatrix bellatrixBlock = (BlindedBlockBellatrix) block; - assertThat(bellatrixBlock.asInternalBeaconBlock(spec)).isEqualTo(internalBlock); - } -} diff --git a/eth-reference-tests/build.gradle b/eth-reference-tests/build.gradle index b6c65513dc5..94073b33220 100644 --- a/eth-reference-tests/build.gradle +++ b/eth-reference-tests/build.gradle @@ -17,6 +17,7 @@ dependencies { referenceTestImplementation project(':infrastructure:async') referenceTestImplementation project(':infrastructure:io') referenceTestImplementation testFixtures(project(':infrastructure:async')) + referenceTestImplementation testFixtures(project(':infrastructure:kzg')) referenceTestImplementation testFixtures(project(':infrastructure:metrics')) referenceTestImplementation project(':infrastructure:time') referenceTestImplementation project(':data:dataexchange') diff --git a/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/Eth2ReferenceTestCase.java b/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/Eth2ReferenceTestCase.java index 47156ae2bed..af2ae583ba2 100644 --- a/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/Eth2ReferenceTestCase.java +++ b/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/Eth2ReferenceTestCase.java @@ -101,6 +101,8 @@ public abstract class Eth2ReferenceTestCase { private static final ImmutableMap FULU_TEST_TYPES = ImmutableMap.builder() + .putAll(ForkUpgradeTestExecutor.FORK_UPGRADE_TEST_TYPES) + .putAll(RewardsTestExecutorBellatrix.REWARDS_TEST_TYPES) .putAll(MerkleProofTests.MERKLE_PROOF_TEST_TYPES) .putAll(NetworkingTests.NETWORKING_TEST_TYPES) .build(); diff --git a/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/KzgRetriever.java b/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/KzgRetriever.java index a21514a1cb5..c0fa4b1e76b 100644 --- a/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/KzgRetriever.java +++ b/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/KzgRetriever.java @@ -16,6 +16,7 @@ import com.google.common.collect.Maps; import java.util.Map; import tech.pegasys.teku.kzg.KZG; +import tech.pegasys.teku.kzg.NoOpKZG; import tech.pegasys.teku.networks.Eth2NetworkConfiguration; import tech.pegasys.teku.spec.Spec; import tech.pegasys.teku.spec.SpecMilestone; @@ -29,7 +30,7 @@ public static KZG getKzgWithLoadedTrustedSetup(final Spec spec, final String net || spec.isMilestoneSupported(SpecMilestone.ELECTRA)) { return getKzgWithLoadedTrustedSetup(network); } - return KZG.NOOP; + return NoOpKZG.INSTANCE; } public static KZG getKzgWithLoadedTrustedSetup(final String network) { diff --git a/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/phase0/kzg/KzgComputeCellsAndKzgProofsTestExecutor.java b/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/phase0/kzg/KzgComputeCellsAndKzgProofsTestExecutor.java index 98caa1ff012..648bd0c0b19 100644 --- a/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/phase0/kzg/KzgComputeCellsAndKzgProofsTestExecutor.java +++ b/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/phase0/kzg/KzgComputeCellsAndKzgProofsTestExecutor.java @@ -28,6 +28,7 @@ public class KzgComputeCellsAndKzgProofsTestExecutor extends KzgTestExecutor { @Override + @SuppressWarnings("deprecation") public void runTest(final TestDefinition testDefinition, final KZG kzg) throws Throwable { final Data data = loadDataFile(testDefinition, Data.class); final List expectedKzgCellsAndProofs = data.getOutput(); diff --git a/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/phase0/kzg/KzgComputeCellsTestExecutor.java b/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/phase0/kzg/KzgComputeCellsTestExecutor.java new file mode 100644 index 00000000000..c7ed5168555 --- /dev/null +++ b/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/phase0/kzg/KzgComputeCellsTestExecutor.java @@ -0,0 +1,76 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.reference.phase0.kzg; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import org.apache.tuweni.bytes.Bytes; +import tech.pegasys.teku.ethtests.finder.TestDefinition; +import tech.pegasys.teku.kzg.KZG; +import tech.pegasys.teku.kzg.KZGCell; + +public class KzgComputeCellsTestExecutor extends KzgTestExecutor { + + @Override + public void runTest(final TestDefinition testDefinition, final KZG kzg) throws Throwable { + final Data data = loadDataFile(testDefinition, Data.class); + final List expectedKzgCells = data.getOutput(); + List actualKzgCells; + try { + final Bytes blob = data.getInput().getBlob(); + actualKzgCells = kzg.computeCells(blob); + } catch (final RuntimeException ex) { + actualKzgCells = null; + } + + if (expectedKzgCells == null) { + assertThat(actualKzgCells).isNull(); + } else { + assertThat(actualKzgCells).isEqualTo(expectedKzgCells); + } + } + + private static class Data { + + @JsonProperty(value = "input", required = true) + private Input input; + + @JsonProperty(value = "output", required = true) + private List output; + + public Input getInput() { + return input; + } + + public List getOutput() { + return output == null + ? null + : output.stream() + .map(cellString -> new KZGCell(Bytes.fromHexString(cellString))) + .toList(); + } + + private static class Input { + + @JsonProperty(value = "blob", required = true) + private String blob; + + public Bytes getBlob() { + return Bytes.fromHexString(blob); + } + } + } +} diff --git a/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/phase0/kzg/KzgTests.java b/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/phase0/kzg/KzgTests.java index f8c090157ea..5e465c392d6 100644 --- a/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/phase0/kzg/KzgTests.java +++ b/eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/phase0/kzg/KzgTests.java @@ -20,8 +20,6 @@ public class KzgTests { public static final ImmutableMap KZG_TEST_TYPES = ImmutableMap.builder() - - // BlobSidecar Deneb utils .put("kzg/blob_to_kzg_commitment", new KzgBlobToCommitmentTestExecutor()) .put("kzg/compute_blob_kzg_proof", new KzgComputeBlobProofTestExecutor()) // no KZG interface on CL side, EL responsibility @@ -31,8 +29,8 @@ public class KzgTests { .put("kzg/verify_blob_kzg_proof_batch", new KzgVerifyBlobProofBatchTestExecutor()) // no KZG interface on CL side, EL responsibility .put("kzg/verify_kzg_proof", TestExecutor.IGNORE_TESTS) - // DataColumnSidecar PeerDAS Fulu utils + .put("kzg/compute_cells", new KzgComputeCellsTestExecutor()) .put("kzg/compute_cells_and_kzg_proofs", new KzgComputeCellsAndKzgProofsTestExecutor()) .put("kzg/recover_cells_and_kzg_proofs", new KzgRecoverCellsAndKzgProofsTestExecutor()) .put("kzg/verify_cell_kzg_proof_batch", new KzgVerifyCellKzgProofBatchTestExecutor()) diff --git a/ethereum/executionclient/src/integration-test/java/tech/pegasys/teku/ethereum/executionclient/rest/OkHttpRestClientTest.java b/ethereum/executionclient/src/integration-test/java/tech/pegasys/teku/ethereum/executionclient/rest/OkHttpRestClientTest.java index 80fd473b3d9..7c3736d8102 100644 --- a/ethereum/executionclient/src/integration-test/java/tech/pegasys/teku/ethereum/executionclient/rest/OkHttpRestClientTest.java +++ b/ethereum/executionclient/src/integration-test/java/tech/pegasys/teku/ethereum/executionclient/rest/OkHttpRestClientTest.java @@ -23,6 +23,7 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import java.io.IOException; +import java.io.InterruptedIOException; import java.time.Duration; import java.util.List; import java.util.Map; @@ -57,6 +58,7 @@ class OkHttpRestClientTest { private static final Map TEST_HEADERS = Map.of("foo", "bar"); + private static final Duration TEST_TIMEOUT = Duration.ofSeconds(5); private static final String TEST_PATH = "v1/test"; private final MockWebServer mockWebServer = new MockWebServer(); @@ -92,7 +94,7 @@ void getsResponseAsync() throws InterruptedException { .addHeader("Content-Type", "application/json")); final SafeFuture>> responseFuture = - underTest.getAsync(TEST_PATH, TEST_HEADERS, responseTypeDefinition); + underTest.getAsync(TEST_PATH, TEST_HEADERS, responseTypeDefinition, TEST_TIMEOUT); assertThat(responseFuture) .succeedsWithin(Duration.ofSeconds(1)) @@ -118,7 +120,7 @@ void getsResponseAsync() throws InterruptedException { void getsResponseAsyncIgnoringResponseBody() throws InterruptedException { mockWebServer.enqueue(new MockResponse().setResponseCode(200)); - final SafeFuture> responseFuture = underTest.getAsync(TEST_PATH); + final SafeFuture> responseFuture = underTest.getAsync(TEST_PATH, TEST_TIMEOUT); assertThat(responseFuture) .succeedsWithin(Duration.ofSeconds(1)) @@ -134,13 +136,33 @@ void getsResponseAsyncIgnoringResponseBody() throws InterruptedException { assertThat(request.getMethod()).isEqualTo("GET"); } + @Test + void getsResponseAsyncTimeouts() throws InterruptedException { + mockWebServer.enqueue( + new MockResponse().setResponseCode(200).setHeadersDelay(1, TimeUnit.SECONDS)); + + final SafeFuture> responseFuture = + underTest.getAsync(TEST_PATH, Duration.ofMillis(100)); + + assertThat(responseFuture) + .failsWithin(Duration.ofSeconds(1)) + .withThrowableThat() + .withCauseInstanceOf(InterruptedIOException.class) + .withMessageContaining("timeout"); + + final RecordedRequest request = mockWebServer.takeRequest(); + + assertThat(request.getPath()).isEqualTo("/" + TEST_PATH); + assertThat(request.getMethod()).isEqualTo("GET"); + } + @Test void getAsyncHandlesFailures() throws InterruptedException { final String errorBody = "{\"code\":400,\"message\":\"Invalid block: missing signature\"}"; mockWebServer.enqueue(new MockResponse().setResponseCode(400).setBody(errorBody)); final SafeFuture>> responseFuture = - underTest.getAsync(TEST_PATH, TEST_HEADERS, responseTypeDefinition); + underTest.getAsync(TEST_PATH, TEST_HEADERS, responseTypeDefinition, TEST_TIMEOUT); assertThat(responseFuture) .succeedsWithin(Duration.ofSeconds(1)) @@ -157,7 +179,7 @@ void getAsyncHandlesFailures() throws InterruptedException { mockWebServer.enqueue(new MockResponse().setResponseCode(500)); final SafeFuture>> secondResponseFuture = - underTest.getAsync(TEST_PATH, TEST_HEADERS, responseTypeDefinition); + underTest.getAsync(TEST_PATH, TEST_HEADERS, responseTypeDefinition, TEST_TIMEOUT); assertThat(secondResponseFuture) .succeedsWithin(Duration.ofSeconds(1)) @@ -195,7 +217,8 @@ void postsAsync() throws InterruptedException { final RequestContainer requestBodyObject = new RequestContainer(2); final SafeFuture>> responseFuture = - underTest.postAsync(TEST_PATH, Map.of(), requestBodyObject, false, responseTypeDefinition); + underTest.postAsync( + TEST_PATH, Map.of(), requestBodyObject, false, responseTypeDefinition, TEST_TIMEOUT); assertThat(responseFuture) .succeedsWithin(Duration.ofSeconds(1)) @@ -232,7 +255,8 @@ void postsAsSszAsync() throws InterruptedException { final RequestContainer requestBodyObject = new RequestContainer(2); final SafeFuture>> responseFuture = - underTest.postAsync(TEST_PATH, Map.of(), requestBodyObject, true, responseTypeDefinition); + underTest.postAsync( + TEST_PATH, Map.of(), requestBodyObject, true, responseTypeDefinition, TEST_TIMEOUT); assertThat(responseFuture) .succeedsWithin(Duration.ofSeconds(1)) @@ -272,7 +296,8 @@ void postsAsyncDoesNotThrowExceptionsInOtherThreadsWhenRequestCreationFails() { doAnswer(invocation -> failingSchema).when(requestBodyObject).getSchema(); final SafeFuture>> responseFuture = - underTest.postAsync(TEST_PATH, Map.of(), requestBodyObject, false, responseTypeDefinition); + underTest.postAsync( + TEST_PATH, Map.of(), requestBodyObject, false, responseTypeDefinition, TEST_TIMEOUT); // this will fail if there are uncaught exceptions in other threads Waiter.waitFor(() -> assertThat(responseFuture).isDone(), 30, TimeUnit.SECONDS, false); @@ -291,7 +316,7 @@ void postsAsyncIgnoringResponseBody() throws InterruptedException { final RequestContainer requestBodyObject = new RequestContainer(2); final SafeFuture> responseFuture = - underTest.postAsync(TEST_PATH, requestBodyObject, false); + underTest.postAsync(TEST_PATH, requestBodyObject, false, TEST_TIMEOUT); assertThat(responseFuture) .succeedsWithin(Duration.ofSeconds(1)) @@ -318,7 +343,7 @@ void postsAsSszAsyncIgnoringResponseBody() throws InterruptedException { final RequestContainer requestBodyObject = new RequestContainer(2); final SafeFuture> responseFuture = - underTest.postAsync(TEST_PATH, requestBodyObject, true); + underTest.postAsync(TEST_PATH, requestBodyObject, true, TEST_TIMEOUT); assertThat(responseFuture) .succeedsWithin(Duration.ofSeconds(1)) @@ -350,7 +375,7 @@ void postsAsSszAsyncDetectsUnsupportedMediaTypeError() throws InterruptedExcepti final RequestContainer requestBodyObject = new RequestContainer(2); final SafeFuture> responseFuture = - underTest.postAsync(TEST_PATH, requestBodyObject, true); + underTest.postAsync(TEST_PATH, requestBodyObject, true, TEST_TIMEOUT); assertThat(responseFuture) .succeedsWithin(Duration.ofSeconds(1)) diff --git a/ethereum/executionclient/src/integration-test/java/tech/pegasys/teku/ethereum/executionclient/rest/RestBuilderClientTest.java b/ethereum/executionclient/src/integration-test/java/tech/pegasys/teku/ethereum/executionclient/rest/RestBuilderClientTest.java index 197077a4caf..3cf4d56929b 100644 --- a/ethereum/executionclient/src/integration-test/java/tech/pegasys/teku/ethereum/executionclient/rest/RestBuilderClientTest.java +++ b/ethereum/executionclient/src/integration-test/java/tech/pegasys/teku/ethereum/executionclient/rest/RestBuilderClientTest.java @@ -29,6 +29,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.io.Resources; import java.io.IOException; +import java.io.InterruptedIOException; import java.io.UncheckedIOException; import java.net.ConnectException; import java.nio.charset.StandardCharsets; @@ -36,7 +37,7 @@ import java.util.Locale; import java.util.Optional; import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeoutException; +import java.util.concurrent.TimeUnit; import java.util.function.Consumer; import java.util.regex.Pattern; import okhttp3.OkHttpClient; @@ -332,18 +333,23 @@ void registerValidators_trySszAfterBackoffTime() { @TestTemplate void registerValidators_shouldNotFallbackWhenTimingOut() { - // Creates a RestBuilderClient that always timeout + // Creates a RestBuilderClient that has a very tiny timeout restBuilderClient = new RestBuilderClient( - forcedTimeoutRestBuilderClientOptions(), okHttpRestClient, timeProvider, spec, true); + tinyTimeoutRestBuilderClientOptions(), okHttpRestClient, timeProvider, spec, true); final SszList signedValidatorRegistrations = createSignedValidatorRegistrations(); + // set up delayed 200 response + mockWebServer.enqueue( + new MockResponse().setResponseCode(200).setHeadersDelay(1, TimeUnit.SECONDS)); + assertThat(restBuilderClient.registerValidators(SLOT, signedValidatorRegistrations)) .failsWithin(WAIT_FOR_CALL_COMPLETION) .withThrowableThat() - .withCauseInstanceOf(TimeoutException.class); + .withCauseInstanceOf(InterruptedIOException.class) + .withMessageContaining("timeout"); verifyPostRequestSsz("/eth/v1/builder/validators", signedValidatorRegistrations); // Check that we do not fallback into JSON (only 1 request) @@ -356,7 +362,7 @@ void registerValidators_shouldNotFallbackWhenFailingForNonHttpReasons() { // Mock asyncPost with ssz to fail doReturn(SafeFuture.failedFuture(new ConnectException())) .when(okHttpRestClient) - .postAsync(eq(BuilderApiMethod.REGISTER_VALIDATOR.getPath()), any(), eq(true)); + .postAsync(eq(BuilderApiMethod.REGISTER_VALIDATOR.getPath()), any(), eq(true), any()); restBuilderClient = new RestBuilderClient(restBuilderClientOptions, okHttpRestClient, timeProvider, spec, true); @@ -846,8 +852,11 @@ private static String changeResponseVersion(final String json, final SpecMilesto "(?<=version\":\\s?\")\\w+", newVersion.toString().toLowerCase(Locale.ROOT)); } - private RestBuilderClientOptions forcedTimeoutRestBuilderClientOptions() { + private RestBuilderClientOptions tinyTimeoutRestBuilderClientOptions() { return new RestBuilderClientOptions( - Duration.ofSeconds(0), Duration.ofSeconds(0), Duration.ofSeconds(0), Duration.ofSeconds(0)); + Duration.ofMillis(100), + Duration.ofMillis(100), + Duration.ofMillis(100), + Duration.ofMillis(100)); } } diff --git a/ethereum/executionclient/src/main/java/tech/pegasys/teku/ethereum/executionclient/rest/OkHttpRestClient.java b/ethereum/executionclient/src/main/java/tech/pegasys/teku/ethereum/executionclient/rest/OkHttpRestClient.java index 63d6984e872..9360f185ba7 100644 --- a/ethereum/executionclient/src/main/java/tech/pegasys/teku/ethereum/executionclient/rest/OkHttpRestClient.java +++ b/ethereum/executionclient/src/main/java/tech/pegasys/teku/ethereum/executionclient/rest/OkHttpRestClient.java @@ -18,8 +18,10 @@ import java.io.IOException; import java.io.UncheckedIOException; import java.net.URL; +import java.time.Duration; import java.util.Map; import java.util.Optional; +import java.util.concurrent.TimeUnit; import okhttp3.Call; import okhttp3.Callback; import okhttp3.HttpUrl; @@ -37,7 +39,7 @@ public class OkHttpRestClient implements RestClient { - static final MediaType JSON_MEDIA_TYPE = MediaType.parse("application/json; charset=utf-8"); + static final MediaType JSON_MEDIA_TYPE = MediaType.parse("application/json"); static final MediaType OCTET_STREAM_MEDIA_TYPE = MediaType.parse("application/octet-stream"); private final OkHttpClient httpClient; @@ -49,29 +51,33 @@ public OkHttpRestClient(final OkHttpClient httpClient, final String baseEndpoint } @Override - public SafeFuture> getAsync(final String apiPath) { + public SafeFuture> getAsync(final String apiPath, final Duration timeout) { final Request request = createGetRequest(apiPath, NO_HEADERS); - return makeAsyncVoidRequest(request); + return makeAsyncVoidRequest(request, timeout); } @Override public SafeFuture>> getAsync( final String apiPath, final Map headers, - final ResponseSchemaAndDeserializableTypeDefinition responseSchema) { + final ResponseSchemaAndDeserializableTypeDefinition responseSchema, + final Duration timeout) { final Request request = createGetRequest(apiPath, headers); - return makeAsyncRequest(request, Optional.of(responseSchema)); + return makeAsyncRequest(request, Optional.of(responseSchema), timeout); } @Override public SafeFuture> postAsync( - final String apiPath, final TReq requestBodyObject, final boolean postAsSsz) { + final String apiPath, + final TReq requestBodyObject, + final boolean postAsSsz, + final Duration timeout) { final RequestBody requestBody = postAsSsz ? createOctetStreamRequestBody(requestBodyObject) : createJsonRequestBody(requestBodyObject); final Request request = createPostRequest(apiPath, requestBody, NO_HEADERS); - return makeAsyncVoidRequest(request); + return makeAsyncVoidRequest(request, timeout); } @Override @@ -81,13 +87,14 @@ SafeFuture>> postAsync( final Map headers, final TReq requestBodyObject, final boolean postAsSsz, - final ResponseSchemaAndDeserializableTypeDefinition responseSchema) { + final ResponseSchemaAndDeserializableTypeDefinition responseSchema, + final Duration timeout) { final RequestBody requestBody = postAsSsz ? createOctetStreamRequestBody(requestBodyObject) : createJsonRequestBody(requestBodyObject); final Request request = createPostRequest(apiPath, requestBody, headers); - return makeAsyncRequest(request, Optional.of(responseSchema)); + return makeAsyncRequest(request, Optional.of(responseSchema), timeout); } private Request createGetRequest(final String apiPath, final Map headers) { @@ -151,16 +158,20 @@ private URL createHttpUrl(final String apiPath) { private SafeFuture>> makeAsyncRequest( final Request request, - final Optional> responseSchemaMaybe) { + final Optional> responseSchemaMaybe, + final Duration timeout) { final Call call = httpClient.newCall(request); + call.timeout().timeout(timeout.toMillis(), TimeUnit.MILLISECONDS); final ResponseHandler responseHandler = new ResponseHandler<>(responseSchemaMaybe); final Callback responseCallback = createResponseCallback(request, responseHandler); call.enqueue(responseCallback); return responseHandler.getFutureResponse(); } - private SafeFuture> makeAsyncVoidRequest(final Request request) { + private SafeFuture> makeAsyncVoidRequest( + final Request request, final Duration timeout) { final Call call = httpClient.newCall(request); + call.timeout().timeout(timeout.toMillis(), TimeUnit.MILLISECONDS); final ResponseHandlerVoid responseHandler = new ResponseHandlerVoid(); final Callback responseCallback = createResponseCallback(request, responseHandler); call.enqueue(responseCallback); diff --git a/ethereum/executionclient/src/main/java/tech/pegasys/teku/ethereum/executionclient/rest/RestBuilderClient.java b/ethereum/executionclient/src/main/java/tech/pegasys/teku/ethereum/executionclient/rest/RestBuilderClient.java index 9c9fe814668..5dfca3659e6 100644 --- a/ethereum/executionclient/src/main/java/tech/pegasys/teku/ethereum/executionclient/rest/RestBuilderClient.java +++ b/ethereum/executionclient/src/main/java/tech/pegasys/teku/ethereum/executionclient/rest/RestBuilderClient.java @@ -100,9 +100,8 @@ public RestBuilderClient( @Override public SafeFuture> status() { - return restClient - .getAsync(BuilderApiMethod.GET_STATUS.getPath()) - .orTimeout(options.builderStatusTimeout()); + return restClient.getAsync( + BuilderApiMethod.GET_STATUS.getPath(), options.builderStatusTimeout()); } @Override @@ -114,8 +113,7 @@ public SafeFuture> registerValidators( } if (nextSszRegisterValidatorsTryMillis.isGreaterThan(timeProvider.getTimeInMillis())) { - return registerValidatorsUsingJson(signedValidatorRegistrations) - .orTimeout(options.builderRegisterValidatorTimeout()); + return registerValidatorsUsingJson(signedValidatorRegistrations); } return registerValidatorsUsingSsz(signedValidatorRegistrations) @@ -134,20 +132,25 @@ public SafeFuture> registerValidators( } return SafeFuture.completedFuture(response); - }) - .orTimeout(options.builderRegisterValidatorTimeout()); + }); } private SafeFuture> registerValidatorsUsingJson( final SszList signedValidatorRegistrations) { return restClient.postAsync( - BuilderApiMethod.REGISTER_VALIDATOR.getPath(), signedValidatorRegistrations, false); + BuilderApiMethod.REGISTER_VALIDATOR.getPath(), + signedValidatorRegistrations, + false, + options.builderRegisterValidatorTimeout()); } private SafeFuture> registerValidatorsUsingSsz( final SszList signedValidatorRegistrations) { return restClient.postAsync( - BuilderApiMethod.REGISTER_VALIDATOR.getPath(), signedValidatorRegistrations, true); + BuilderApiMethod.REGISTER_VALIDATOR.getPath(), + signedValidatorRegistrations, + true, + options.builderRegisterValidatorTimeout()); } @Override @@ -183,8 +186,8 @@ public SafeFuture>> getHeader( setUserAgentHeader ? GET_HEADER_HTTP_HEADERS_WITH_USER_AGENT : GET_HEADER_HTTP_HEADERS_WITHOUT_USER_AGENT, - responseTypeDefinition) - .orTimeout(options.builderProposalDelayTolerance()) + responseTypeDefinition, + options.builderProposalDelayTolerance()) .thenApply( response -> response.unwrapVersioned( @@ -217,12 +220,12 @@ public SafeFuture> getPayload( ACCEPT_HEADER), signedBlindedBeaconBlock, LAST_RECEIVED_HEADER_WAS_IN_SSZ.get(), - responseTypeDefinition) + responseTypeDefinition, + options.builderGetPayloadTimeout()) .thenApply( response -> response.unwrapVersioned( - this::extractBuilderPayload, milestone, BuilderApiResponse::version, false)) - .orTimeout(options.builderGetPayloadTimeout()); + this::extractBuilderPayload, milestone, BuilderApiResponse::version, false)); } private diff --git a/ethereum/executionclient/src/main/java/tech/pegasys/teku/ethereum/executionclient/rest/RestClient.java b/ethereum/executionclient/src/main/java/tech/pegasys/teku/ethereum/executionclient/rest/RestClient.java index 2d195e644e5..e32df53b857 100644 --- a/ethereum/executionclient/src/main/java/tech/pegasys/teku/ethereum/executionclient/rest/RestClient.java +++ b/ethereum/executionclient/src/main/java/tech/pegasys/teku/ethereum/executionclient/rest/RestClient.java @@ -13,6 +13,7 @@ package tech.pegasys.teku.ethereum.executionclient.rest; +import java.time.Duration; import java.util.Collections; import java.util.Map; import tech.pegasys.teku.ethereum.executionclient.schema.BuilderApiResponse; @@ -25,15 +26,16 @@ public interface RestClient { Map NO_HEADERS = Collections.emptyMap(); - SafeFuture> getAsync(String apiPath); + SafeFuture> getAsync(String apiPath, Duration timeout); SafeFuture>> getAsync( String apiPath, Map headers, - ResponseSchemaAndDeserializableTypeDefinition responseSchema); + ResponseSchemaAndDeserializableTypeDefinition responseSchema, + Duration timeout); SafeFuture> postAsync( - String apiPath, TReq requestBodyObject, boolean postAsSsz); + String apiPath, TReq requestBodyObject, boolean postAsSsz, Duration timeout); SafeFuture>> postAsync( @@ -41,7 +43,8 @@ SafeFuture>> postAsync( Map headers, TReq requestBodyObject, boolean postAsSsz, - ResponseSchemaAndDeserializableTypeDefinition responseSchema); + ResponseSchemaAndDeserializableTypeDefinition responseSchema, + Duration timeout); record ResponseSchemaAndDeserializableTypeDefinition( SszSchema responseSchema, diff --git a/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/EthereumTypes.java b/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/EthereumTypes.java index 9c6901fa738..2878f0c34d0 100644 --- a/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/EthereumTypes.java +++ b/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/EthereumTypes.java @@ -22,12 +22,10 @@ import java.util.Locale; import java.util.Map; import java.util.Optional; -import java.util.Set; import java.util.function.Function; import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.units.bigints.UInt256; import org.jetbrains.annotations.NotNull; -import tech.pegasys.teku.api.schema.Version; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.bls.BLSSignature; import tech.pegasys.teku.infrastructure.http.RestApiConstants; @@ -95,7 +93,7 @@ public class EthereumTypes { public static final StringValueTypeDefinition MILESTONE_TYPE = new EnumTypeDefinition<>( - SpecMilestone.class, milestone -> milestone.name().toLowerCase(Locale.ROOT), Set.of()); + SpecMilestone.class, milestone -> milestone.name().toLowerCase(Locale.ROOT)); public static final EnumHeaderTypeDefinition ETH_CONSENSUS_HEADER_TYPE = new EnumHeaderTypeDefinition.EnumTypeHeaderDefinitionBuilder<>( @@ -162,7 +160,7 @@ private static Map getSszHeaders( final Function milestoneSelector, final T value) { return Map.of( HEADER_CONSENSUS_VERSION, - Version.fromMilestone(milestoneSelector.apply(value)).name(), + milestoneSelector.apply(value).lowerCaseName(), RestApiConstants.HEADER_CONTENT_DISPOSITION, getSszFilename(value)); } diff --git a/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/beacon/StateValidatorData.java b/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/beacon/StateValidatorData.java index 7bfe53eeca0..0edfb1bd7cc 100644 --- a/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/beacon/StateValidatorData.java +++ b/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/beacon/StateValidatorData.java @@ -15,8 +15,8 @@ import java.util.Objects; import java.util.Optional; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorResponse; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatusUtil; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.infrastructure.unsigned.UInt64; import tech.pegasys.teku.spec.datastructures.state.Validator; @@ -43,7 +43,7 @@ public static Optional fromState( new StateValidatorData( UInt64.valueOf(index), state.getBalances().getElement(index), - ValidatorResponse.getValidatorStatus(epoch, validatorInternal, farFutureEpoch), + ValidatorStatusUtil.getValidatorStatus(epoch, validatorInternal, farFutureEpoch), validatorInternal); return Optional.of(data); } diff --git a/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/beacon/StateValidatorDataBuilder.java b/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/beacon/StateValidatorDataBuilder.java index db5fa358a5c..96e9df883a9 100644 --- a/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/beacon/StateValidatorDataBuilder.java +++ b/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/beacon/StateValidatorDataBuilder.java @@ -20,7 +20,7 @@ import static tech.pegasys.teku.infrastructure.json.types.DeserializableTypeDefinition.listOf; import java.util.List; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.infrastructure.json.types.DeserializableTypeDefinition; import tech.pegasys.teku.infrastructure.unsigned.UInt64; import tech.pegasys.teku.spec.datastructures.metadata.ObjectAndMetaData; diff --git a/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/beacon/StatusParameter.java b/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/beacon/StatusParameter.java index 6b0aa88aca9..d1a34cce778 100644 --- a/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/beacon/StatusParameter.java +++ b/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/beacon/StatusParameter.java @@ -18,7 +18,7 @@ import java.util.Locale; import java.util.Set; import java.util.stream.Collectors; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; public enum StatusParameter { PENDING_INITIALIZED("pending_initialized"), diff --git a/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/config/SpecConfigDataMapBuilder.java b/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/config/SpecConfigDataMapBuilder.java index c4d2d5e47b1..99de946702f 100644 --- a/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/config/SpecConfigDataMapBuilder.java +++ b/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/config/SpecConfigDataMapBuilder.java @@ -18,26 +18,27 @@ import tech.pegasys.teku.infrastructure.json.types.DeserializableTypeDefinition; public class SpecConfigDataMapBuilder { - public static final DeserializableTypeDefinition> GET_SPEC_RESPONSE_TYPE = - DeserializableTypeDefinition., SpecConfigDataMapBuilder>object() + + public static final DeserializableTypeDefinition> GET_SPEC_RESPONSE_TYPE = + DeserializableTypeDefinition., SpecConfigDataMapBuilder>object() .name("GetSpecResponse") .initializer(SpecConfigDataMapBuilder::new) .finisher(SpecConfigDataMapBuilder::build) .withField( "data", - DeserializableTypeDefinition.mapOfStrings(), + DeserializableTypeDefinition.configMap(), Function.identity(), SpecConfigDataMapBuilder::configMap) .build(); - private Map configMap = Map.of(); + private Map configMap = Map.of(); - public SpecConfigDataMapBuilder configMap(final Map configMap) { + public SpecConfigDataMapBuilder configMap(final Map configMap) { this.configMap = configMap; return this; } - public Map build() { + public Map build() { return configMap; } } diff --git a/ethereum/networks/src/main/java/tech/pegasys/teku/networks/Eth2NetworkConfiguration.java b/ethereum/networks/src/main/java/tech/pegasys/teku/networks/Eth2NetworkConfiguration.java index d1a31d09d94..74d805aa129 100644 --- a/ethereum/networks/src/main/java/tech/pegasys/teku/networks/Eth2NetworkConfiguration.java +++ b/ethereum/networks/src/main/java/tech/pegasys/teku/networks/Eth2NetworkConfiguration.java @@ -329,6 +329,7 @@ public boolean equals(final Object o) { && forkChoiceLateBlockReorgEnabled == that.forkChoiceLateBlockReorgEnabled && forkChoiceUpdatedAlwaysSendPayloadAttributes == that.forkChoiceUpdatedAlwaysSendPayloadAttributes + && rustKzgEnabled == that.rustKzgEnabled && Objects.equals(spec, that.spec) && Objects.equals(constants, that.constants) && Objects.equals(stateBoostrapConfig, that.stateBoostrapConfig) @@ -377,7 +378,8 @@ public int hashCode() { asyncBeaconChainMaxQueue, asyncP2pMaxQueue, forkChoiceLateBlockReorgEnabled, - forkChoiceUpdatedAlwaysSendPayloadAttributes); + forkChoiceUpdatedAlwaysSendPayloadAttributes, + rustKzgEnabled); } public static class Builder { diff --git a/ethereum/spec/build.gradle b/ethereum/spec/build.gradle index 223c21d9b83..ad655773ae4 100644 --- a/ethereum/spec/build.gradle +++ b/ethereum/spec/build.gradle @@ -8,6 +8,7 @@ dependencies { api project(':infrastructure:kzg') implementation 'com.fasterxml.jackson.core:jackson-databind' + implementation 'org.yaml:snakeyaml' implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml' implementation 'io.consensys.tuweni:tuweni-bytes' implementation 'io.consensys.tuweni:tuweni-ssz' diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/SpecMilestone.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/SpecMilestone.java index fd799579961..6398b2a4cc9 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/SpecMilestone.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/SpecMilestone.java @@ -161,4 +161,8 @@ public static SpecMilestone forName(final String milestoneName) { checkNotNull(milestoneName, "Milestone name can't be null"); return SpecMilestone.valueOf(milestoneName.toUpperCase(Locale.ROOT)); } + + public String lowerCaseName() { + return this.name().toLowerCase(Locale.ROOT); + } } diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/DelegatingSpecConfigElectra.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/DelegatingSpecConfigElectra.java index 075c7b32a13..c7e81bbfa1d 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/DelegatingSpecConfigElectra.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/DelegatingSpecConfigElectra.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2024 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/SpecConfigLoader.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/SpecConfigLoader.java index 2ad83a6ce88..8ff729fe49c 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/SpecConfigLoader.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/SpecConfigLoader.java @@ -60,17 +60,17 @@ public static SpecConfigAndParent loadConfig( } public static SpecConfigAndParent loadRemoteConfig( - final Map config) { + final Map config) { final SpecConfigReader reader = new SpecConfigReader(); if (config.containsKey(SpecConfigReader.PRESET_KEY)) { try { - applyPreset("remote", reader, true, config.get(SpecConfigReader.PRESET_KEY)); + applyPreset("remote", reader, true, (String) config.get(SpecConfigReader.PRESET_KEY)); } catch (IOException e) { throw new UncheckedIOException(e); } } if (config.containsKey(SpecConfigReader.CONFIG_NAME_KEY)) { - final String configNameKey = config.get(SpecConfigReader.CONFIG_NAME_KEY); + final String configNameKey = (String) config.get(SpecConfigReader.CONFIG_NAME_KEY); try { processConfig(configNameKey, reader, true); } catch (IllegalArgumentException exception) { @@ -87,9 +87,9 @@ public static SpecConfigAndParent loadRemoteConfig( static void processConfig( final String source, final SpecConfigReader reader, final boolean ignoreUnknownConfigItems) { try (final InputStream configFile = loadConfigurationFile(source)) { - final Map configValues = reader.readValues(configFile); + final Map configValues = reader.readValues(configFile); final Optional maybePreset = - Optional.ofNullable(configValues.get(SpecConfigReader.PRESET_KEY)); + Optional.ofNullable((String) configValues.get(SpecConfigReader.PRESET_KEY)); // Legacy config files won't have a preset field if (maybePreset.isPresent()) { diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/SpecConfigReader.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/SpecConfigReader.java index 8c6c2d9a30d..8ac9f198b0d 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/SpecConfigReader.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/SpecConfigReader.java @@ -15,9 +15,7 @@ import static tech.pegasys.teku.spec.config.SpecConfigFormatter.camelToSnakeCase; -import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.RuntimeJsonMappingException; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; @@ -131,14 +129,14 @@ public SpecConfigAndParent build( */ public void readAndApply(final InputStream source, final boolean ignoreUnknownConfigItems) throws IOException { - final Map rawValues = readValues(source); + final Map rawValues = readValues(source); loadFromMap(rawValues, ignoreUnknownConfigItems); } public void loadFromMap( - final Map rawValues, final boolean ignoreUnknownConfigItems) { - final Map unprocessedConfig = new HashMap<>(rawValues); - final Map apiSpecConfig = new HashMap<>(rawValues); + final Map rawValues, final boolean ignoreUnknownConfigItems) { + final Map unprocessedConfig = new HashMap<>(rawValues); + final Map apiSpecConfig = new HashMap<>(rawValues); // Remove any keys that we're ignoring KEYS_TO_IGNORE.forEach( key -> { @@ -220,6 +218,16 @@ public void loadFromMap( unprocessedConfig.remove(constantKey); }); + // Process fulu config + streamConfigSetters(FuluBuilder.class) + .forEach( + setter -> { + final String constantKey = camelToSnakeCase(setter.getName()); + final Object rawValue = unprocessedConfig.get(constantKey); + invokeSetter(setter, configBuilder::fuluBuilder, constantKey, rawValue); + unprocessedConfig.remove(constantKey); + }); + // Check any constants that have been configured and then ignore final Set configuredConstants = Sets.intersection(CONSTANT_KEYS, unprocessedConfig.keySet()); @@ -240,16 +248,10 @@ public void loadFromMap( } } - @SuppressWarnings("unchecked") - public Map readValues(final InputStream source) throws IOException { - final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); + public Map readValues(final InputStream source) throws IOException { + final YamlConfigReader reader = new YamlConfigReader(); try { - return (Map) - mapper - .readerFor( - mapper.getTypeFactory().constructMapType(Map.class, String.class, String.class)) - .readValues(source) - .next(); + return reader.readValues(source); } catch (NoSuchElementException e) { throw new IllegalArgumentException("Supplied spec config is empty"); } catch (RuntimeJsonMappingException e) { diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/YamlConfigReader.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/YamlConfigReader.java new file mode 100644 index 00000000000..39fb4dee4b1 --- /dev/null +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/config/YamlConfigReader.java @@ -0,0 +1,61 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.spec.config; + +import java.io.InputStream; +import java.util.Map; +import java.util.NoSuchElementException; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.Constructor; +import org.yaml.snakeyaml.nodes.Tag; +import org.yaml.snakeyaml.representer.Representer; +import org.yaml.snakeyaml.resolver.Resolver; + +public class YamlConfigReader { + private final Yaml yaml; + + public YamlConfigReader() { + final Resolver resolver = new CustomResolver(); + yaml = + new Yaml( + new Constructor(new LoaderOptions()), + new Representer(new DumperOptions()), + new DumperOptions(), + resolver); + } + + public Map readValues(final InputStream source) { + final Map values = yaml.load(source); + if (values == null) { + throw new NoSuchElementException(); + } + return values; + } + + /* + * For the purposes of reading config, we just want strings, we don't want numeric values. + * This will ensure that we get hex values through as unparsed, and ensure we're getting + * things such as CRC checks through without them being altered. + * The implicit resolver below is basically saying just match numerics as string. + */ + public static class CustomResolver extends Resolver { + @Override + protected void addImplicitResolvers() { + addImplicitResolver(Tag.STR, INT, "+-0123456789."); + super.addImplicitResolvers(); + } + } +} diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/Cell.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/Cell.java index bb7f9590994..a9b2837f176 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/Cell.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/Cell.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2022 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/CellSchema.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/CellSchema.java index c6371f1e146..94e0444c347 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/CellSchema.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/CellSchema.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2024 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumn.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumn.java index 23138ac9019..75911124177 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumn.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumn.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2022 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumnSchema.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumnSchema.java index c9ad1f0753e..30595c0d5c4 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumnSchema.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumnSchema.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2024 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumnSidecar.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumnSidecar.java index 02dbcf3e7d9..b63dd88e7a0 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumnSidecar.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumnSidecar.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2023 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumnSidecarSchema.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumnSidecarSchema.java index 6ad592b04e4..10f5b104af3 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumnSidecarSchema.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/DataColumnSidecarSchema.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2023 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/MatrixEntry.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/MatrixEntry.java index efb3b204301..7ab049cc6b5 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/MatrixEntry.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/MatrixEntry.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2023 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/MatrixEntrySchema.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/MatrixEntrySchema.java index 7c1af32b363..a22c74bfce3 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/MatrixEntrySchema.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blobs/versions/fulu/MatrixEntrySchema.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2023 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blocks/SignedBlockAndState.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blocks/SignedBlockAndState.java index 7809b3ddaac..bae52c5ceeb 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blocks/SignedBlockAndState.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/blocks/SignedBlockAndState.java @@ -39,12 +39,12 @@ public boolean equals(final Object o) { if (o == this) { return true; } - if (!(o instanceof SignedBlockAndState)) { + if (o instanceof final SignedBlockAndState that) { + return Objects.equals(getBlock(), that.getBlock()) + && Objects.equals(getState(), that.getState()); + } else { return false; } - final SignedBlockAndState that = (SignedBlockAndState) o; - return Objects.equals(getBlock(), that.getBlock()) - && Objects.equals(getState(), that.getState()); } @Override diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/execution/ExpectedWithdrawals.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/execution/ExpectedWithdrawals.java index 01e63c1c157..89e23c86004 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/execution/ExpectedWithdrawals.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/execution/ExpectedWithdrawals.java @@ -152,7 +152,7 @@ public int getPartialWithdrawalCount() { return partialWithdrawalCount; } - private static WithdrawalSummary getPendingPartialWithdrawals( + static WithdrawalSummary getPendingPartialWithdrawals( final BeaconStateElectra preState, final SchemaDefinitionsElectra schemaDefinitions, final MiscHelpersElectra miscHelpers, @@ -168,29 +168,45 @@ private static WithdrawalSummary getPendingPartialWithdrawals( || withdrawals.size() == maxPendingPartialWithdrawals) { break; } - final Validator validator = preState.getValidators().get(withdrawal.getValidatorIndex()); + final int validatorIndex = withdrawal.getValidatorIndex(); + final Validator validator = preState.getValidators().get(validatorIndex); + final UInt64 partiallyWithdrawnBalance = + getPartiallyWithdrawnBalance(withdrawals, UInt64.valueOf(validatorIndex)); + final UInt64 remainingBalance = + preState + .getBalances() + .get(withdrawal.getValidatorIndex()) + .get() + .minusMinZero(partiallyWithdrawnBalance); final boolean hasSufficientEffectiveBalance = validator .getEffectiveBalance() .isGreaterThanOrEqualTo(specConfig.getMinActivationBalance()); - final UInt64 validatorBalance = - preState.getBalances().get(withdrawal.getValidatorIndex()).get(); final boolean hasExcessBalance = - validatorBalance.isGreaterThan(specConfig.getMinActivationBalance()); + remainingBalance.isGreaterThan(specConfig.getMinActivationBalance()); + LOG.trace( + "pending withdrawal validator index {}, remaining balance {}, requested amount {}; exitEpoch {}, hasSufficientEffectiveBalance {}, hasExcessBalance {}", + withdrawal.getValidatorIndex(), + remainingBalance, + withdrawal.getAmount(), + validator.getExitEpoch(), + hasSufficientEffectiveBalance, + hasExcessBalance); + if (validator.getExitEpoch().equals(FAR_FUTURE_EPOCH) && hasSufficientEffectiveBalance && hasExcessBalance) { final UInt64 withdrawableBalance = withdrawal .getAmount() - .min(validatorBalance.minusMinZero(specConfig.getMinActivationBalance())); + .min(remainingBalance.minusMinZero(specConfig.getMinActivationBalance())); withdrawals.add( schemaDefinitions .getWithdrawalSchema() .create( withdrawalIndex, UInt64.valueOf(withdrawal.getValidatorIndex()), - new Bytes20(validator.getWithdrawalCredentials().slice(12)), + getEthAddressFromWithdrawalCredentials(validator), withdrawableBalance)); withdrawalIndex = withdrawalIndex.increment(); } @@ -199,6 +215,10 @@ private static WithdrawalSummary getPendingPartialWithdrawals( return new WithdrawalSummary(withdrawals, processedPartialWithdrawalsCount); } + static Bytes20 getEthAddressFromWithdrawalCredentials(final Validator validator) { + return new Bytes20(validator.getWithdrawalCredentials().slice(12)); + } + // get_expected_withdrawals private static List getExpectedWithdrawals( final BeaconStateCapella preState, @@ -207,7 +227,6 @@ private static List getExpectedWithdrawals( final SpecConfigCapella specConfigCapella, final Predicates predicates, final List partialWithdrawals) { - final List expectedWithdrawals = partialWithdrawals; final WithdrawalSchema withdrawalSchema = schemaDefinitionsCapella.getWithdrawalSchema(); final UInt64 epoch = miscHelpers.computeEpochAtSlot(preState.getSlot()); final SszList validators = preState.getValidators(); @@ -227,37 +246,31 @@ private static List getExpectedWithdrawals( for (int i = 0; i < bound; i++) { final Validator validator = validators.get(validatorIndex); if (predicates.hasExecutionWithdrawalCredential(validator)) { - final UInt64 finalValidatorIndex = UInt64.valueOf(validatorIndex); final UInt64 partiallyWithdrawnBalance = - partialWithdrawals.stream() - .filter( - partialWithdrawal -> - partialWithdrawal.getValidatorIndex().equals(finalValidatorIndex)) - .map(Withdrawal::getAmount) - .reduce(UInt64.ZERO, UInt64::plus); + getPartiallyWithdrawnBalance(partialWithdrawals, UInt64.valueOf(validatorIndex)); final UInt64 balance = balances.get(validatorIndex).get().minusMinZero(partiallyWithdrawnBalance); if (predicates.isFullyWithdrawableValidatorCredentialsChecked(validator, balance, epoch)) { - expectedWithdrawals.add( + partialWithdrawals.add( withdrawalSchema.create( withdrawalIndex, UInt64.valueOf(validatorIndex), - new Bytes20(validator.getWithdrawalCredentials().slice(12)), + getEthAddressFromWithdrawalCredentials(validator), balance)); withdrawalIndex = withdrawalIndex.increment(); } else if (predicates.isPartiallyWithdrawableValidatorEth1CredentialsChecked( validator, balance)) { - expectedWithdrawals.add( + partialWithdrawals.add( withdrawalSchema.create( withdrawalIndex, UInt64.valueOf(validatorIndex), - new Bytes20(validator.getWithdrawalCredentials().slice(12)), + getEthAddressFromWithdrawalCredentials(validator), balance.minusMinZero(miscHelpers.getMaxEffectiveBalance(validator)))); withdrawalIndex = withdrawalIndex.increment(); } - if (expectedWithdrawals.size() == maxWithdrawalsPerPayload) { + if (partialWithdrawals.size() == maxWithdrawalsPerPayload) { break; } } @@ -265,7 +278,15 @@ private static List getExpectedWithdrawals( validatorIndex = (validatorIndex + 1) % validatorCount; } - return expectedWithdrawals; + return partialWithdrawals; + } + + static UInt64 getPartiallyWithdrawnBalance( + final List currentWithdrawals, final UInt64 validatorIndex) { + return currentWithdrawals.stream() + .filter(partialWithdrawal -> partialWithdrawal.getValidatorIndex().equals(validatorIndex)) + .map(Withdrawal::getAmount) + .reduce(UInt64.ZERO, UInt64::plus); } public void processWithdrawals( diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/execution/NewPayloadRequest.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/execution/NewPayloadRequest.java index 3c0a46c8c77..b9c62728063 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/execution/NewPayloadRequest.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/execution/NewPayloadRequest.java @@ -77,14 +77,15 @@ public boolean equals(final Object o) { if (this == o) { return true; } - if (!(o instanceof NewPayloadRequest)) { + if (o instanceof final NewPayloadRequest that) { + + return Objects.equals(executionPayload, that.executionPayload) + && Objects.equals(versionedHashes, that.versionedHashes) + && Objects.equals(parentBeaconBlockRoot, that.parentBeaconBlockRoot) + && Objects.equals(executionRequests, that.executionRequests); + } else { return false; } - final NewPayloadRequest that = (NewPayloadRequest) o; - return Objects.equals(executionPayload, that.executionPayload) - && Objects.equals(versionedHashes, that.versionedHashes) - && Objects.equals(parentBeaconBlockRoot, that.parentBeaconBlockRoot) - && Objects.equals(executionRequests, that.executionRequests); } @Override diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnSidecarsByRangeRequestMessage.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnSidecarsByRangeRequestMessage.java index 48ec6703967..bc9dbfe80fd 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnSidecarsByRangeRequestMessage.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnSidecarsByRangeRequestMessage.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2023 + * Copyright Consensys Software Inc., 2025 * * 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 @@ -65,15 +65,12 @@ public DataColumnSidecarsByRangeRequestMessage create( } private DataColumnSidecarsByRangeRequestMessage( - final DataColumnSidecarsByRangeRequestMessage.DataColumnSidecarsByRangeRequestMessageSchema - type, - final TreeNode backingNode) { + final DataColumnSidecarsByRangeRequestMessageSchema type, final TreeNode backingNode) { super(type, backingNode); } public DataColumnSidecarsByRangeRequestMessage( - final DataColumnSidecarsByRangeRequestMessage.DataColumnSidecarsByRangeRequestMessageSchema - type, + final DataColumnSidecarsByRangeRequestMessageSchema type, final SszUInt64 startSlot, final SszUInt64 count, final SszUInt64List columns) { diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnSidecarsByRootRequestMessage.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnSidecarsByRootRequestMessage.java index 87efe97d427..f26d9ec24db 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnSidecarsByRootRequestMessage.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnSidecarsByRootRequestMessage.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2022 + * Copyright Consensys Software Inc., 2025 * * 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 @@ -23,8 +23,8 @@ public class DataColumnSidecarsByRootRequestMessage extends SszListImpl dataColumnIdentifiers) { - super(schema, schema.createTreeFromElements(dataColumnIdentifiers)); + final List dataColumnsByRootIdentifiers) { + super(schema, schema.createTreeFromElements(dataColumnsByRootIdentifiers)); } DataColumnSidecarsByRootRequestMessage( diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnSidecarsByRootRequestMessageSchema.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnSidecarsByRootRequestMessageSchema.java index 7acee1258cc..12a51f45900 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnSidecarsByRootRequestMessageSchema.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnSidecarsByRootRequestMessageSchema.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2023 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnsByRootIdentifier.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnsByRootIdentifier.java index 81dfd107518..c15b97027bd 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnsByRootIdentifier.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/DataColumnsByRootIdentifier.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2023 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/MetadataMessageSchema.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/MetadataMessageSchema.java index 987fc48a3dc..482c27654d8 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/MetadataMessageSchema.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/MetadataMessageSchema.java @@ -26,7 +26,7 @@ T create( UInt64 seqNumber, Iterable attnets, final Iterable syncnets, - final Optional custodySubnetCount); + final Optional custodyGroupCount); T createDefault(); } diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/altair/MetadataMessageSchemaAltair.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/altair/MetadataMessageSchemaAltair.java index cfd89e74608..6de9eb9bdd0 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/altair/MetadataMessageSchemaAltair.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/altair/MetadataMessageSchemaAltair.java @@ -43,7 +43,7 @@ public MetadataMessageAltair create( final UInt64 seqNumber, final Iterable attnets, final Iterable syncnets, - final Optional custodySubnetCount) { + final Optional custodyGroupCount) { return new MetadataMessageAltair( this, seqNumber, getAttnestSchema().ofBits(attnets), getSyncnetsSchema().ofBits(syncnets)); } diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/fulu/MetadataMessageFulu.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/fulu/MetadataMessageFulu.java index b08834d85e4..ae293c379c7 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/fulu/MetadataMessageFulu.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/fulu/MetadataMessageFulu.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2022 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/fulu/MetadataMessageSchemaFulu.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/fulu/MetadataMessageSchemaFulu.java index d064c5b2391..f63c81c140f 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/fulu/MetadataMessageSchemaFulu.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/fulu/MetadataMessageSchemaFulu.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2022 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/phase0/MetadataMessageSchemaPhase0.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/phase0/MetadataMessageSchemaPhase0.java index 1ad49da8ea6..32528cf9b4f 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/phase0/MetadataMessageSchemaPhase0.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/networking/libp2p/rpc/metadata/versions/phase0/MetadataMessageSchemaPhase0.java @@ -47,7 +47,7 @@ public MetadataMessagePhase0 create( final UInt64 seqNumber, final Iterable attnets, final Iterable syncnets, - final Optional custodySubnetCount) { + final Optional custodyGroupCount) { return new MetadataMessagePhase0(this, seqNumber, getAttnestSchema().ofBits(attnets)); } diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/state/CheckpointState.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/state/CheckpointState.java index 910b4de7c98..b5db8cf7775 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/state/CheckpointState.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/state/CheckpointState.java @@ -84,13 +84,13 @@ public boolean equals(final Object o) { if (o == this) { return true; } - if (!(o instanceof CheckpointState)) { + if (o instanceof final CheckpointState that) { + return Objects.equals(checkpoint, that.checkpoint) + && Objects.equals(block, that.block) + && Objects.equals(state, that.state); + } else { return false; } - final CheckpointState that = (CheckpointState) o; - return Objects.equals(checkpoint, that.checkpoint) - && Objects.equals(block, that.block) - && Objects.equals(state, that.state); } @Override diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/state/beaconstate/common/BeaconStateInvariants.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/state/beaconstate/common/BeaconStateInvariants.java index b1dba9fcb34..b7a40958f11 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/state/beaconstate/common/BeaconStateInvariants.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/state/beaconstate/common/BeaconStateInvariants.java @@ -82,12 +82,12 @@ static boolean equals(final BeaconState state, final Object obj) { return true; } - if (!(obj instanceof BeaconState)) { + if (obj instanceof final BeaconState other) { + + return state.hashTreeRoot().equals(other.hashTreeRoot()); + } else { return false; } - - BeaconState other = (BeaconState) obj; - return state.hashTreeRoot().equals(other.hashTreeRoot()); } static int hashCode(final BeaconState state) { diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/util/DataColumnIdentifier.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/util/DataColumnIdentifier.java index 790188a7ec5..6c130134832 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/util/DataColumnIdentifier.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/util/DataColumnIdentifier.java @@ -17,7 +17,7 @@ import tech.pegasys.teku.infrastructure.unsigned.UInt64; import tech.pegasys.teku.spec.datastructures.blobs.versions.fulu.DataColumnSidecar; -public record DataColumnIdentifier(Bytes32 blockRoot, UInt64 columnId) { +public record DataColumnIdentifier(Bytes32 blockRoot, UInt64 columnIndex) { public static DataColumnIdentifier createFromSidecar(final DataColumnSidecar sidecar) { return new DataColumnIdentifier(sidecar.getBlockRoot(), sidecar.getIndex()); } diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/util/DataColumnSlotAndIdentifier.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/util/DataColumnSlotAndIdentifier.java index 19be52a9d36..211aff6194a 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/util/DataColumnSlotAndIdentifier.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/util/DataColumnSlotAndIdentifier.java @@ -25,7 +25,7 @@ public record DataColumnSlotAndIdentifier(UInt64 slot, Bytes32 blockRoot, UInt64 public DataColumnSlotAndIdentifier( final UInt64 slot, final DataColumnIdentifier dataColumnIdentifier) { - this(slot, dataColumnIdentifier.blockRoot(), dataColumnIdentifier.columnId()); + this(slot, dataColumnIdentifier.blockRoot(), dataColumnIdentifier.columnIndex()); } public static DataColumnSlotAndIdentifier fromDataColumn( diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/executionlayer/ExecutionLayerChannelStub.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/executionlayer/ExecutionLayerChannelStub.java index 880449e8d91..1b252ec237a 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/executionlayer/ExecutionLayerChannelStub.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/executionlayer/ExecutionLayerChannelStub.java @@ -134,7 +134,7 @@ public ExecutionLayerChannelStub( // trusted setup loading will be handled by the BeaconChainController kzg = KZG.getInstance(false); } else { - kzg = KZG.NOOP; + kzg = KZG.DISABLED; } this.blobsUtil = new BlobsUtil(spec, kzg); } diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/altair/statetransition/epoch/RewardsAndPenaltiesCalculatorAltair.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/altair/statetransition/epoch/RewardsAndPenaltiesCalculatorAltair.java index b00e757e731..46e7bce1e72 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/altair/statetransition/epoch/RewardsAndPenaltiesCalculatorAltair.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/altair/statetransition/epoch/RewardsAndPenaltiesCalculatorAltair.java @@ -192,30 +192,26 @@ protected UInt64 getInactivityPenaltyQuotient() { private boolean validatorHasPrevEpochParticipationFlag( final ValidatorStatus validator, final int flagIndex) { - switch (flagIndex) { - case TIMELY_HEAD_FLAG_INDEX: - return validator.isPreviousEpochHeadAttester(); - case ParticipationFlags.TIMELY_TARGET_FLAG_INDEX: - return validator.isPreviousEpochTargetAttester(); - case ParticipationFlags.TIMELY_SOURCE_FLAG_INDEX: - return validator.isPreviousEpochSourceAttester(); - default: - throw new IllegalArgumentException("Unable to process unknown flag index:" + flagIndex); - } + return switch (flagIndex) { + case TIMELY_HEAD_FLAG_INDEX -> validator.isPreviousEpochHeadAttester(); + case ParticipationFlags.TIMELY_TARGET_FLAG_INDEX -> validator.isPreviousEpochTargetAttester(); + case ParticipationFlags.TIMELY_SOURCE_FLAG_INDEX -> validator.isPreviousEpochSourceAttester(); + default -> + throw new IllegalArgumentException("Unable to process unknown flag index:" + flagIndex); + }; } private UInt64 getPrevEpochTotalParticipatingBalance(final int flagIndex) { final TotalBalances totalBalances = validatorStatuses.getTotalBalances(); - switch (flagIndex) { - case TIMELY_HEAD_FLAG_INDEX: - return totalBalances.getPreviousEpochHeadAttesters(); - case ParticipationFlags.TIMELY_TARGET_FLAG_INDEX: - return totalBalances.getPreviousEpochTargetAttesters(); - case ParticipationFlags.TIMELY_SOURCE_FLAG_INDEX: - return totalBalances.getPreviousEpochSourceAttesters(); - default: - throw new IllegalArgumentException("Unable to process unknown flag index:" + flagIndex); - } + return switch (flagIndex) { + case TIMELY_HEAD_FLAG_INDEX -> totalBalances.getPreviousEpochHeadAttesters(); + case ParticipationFlags.TIMELY_TARGET_FLAG_INDEX -> + totalBalances.getPreviousEpochTargetAttesters(); + case ParticipationFlags.TIMELY_SOURCE_FLAG_INDEX -> + totalBalances.getPreviousEpochSourceAttesters(); + default -> + throw new IllegalArgumentException("Unable to process unknown flag index:" + flagIndex); + }; } private boolean isUnslashedPrevEpochParticipatingIndex( diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/fulu/SpecLogicFulu.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/fulu/SpecLogicFulu.java index 0292f86c193..337ecec24fa 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/fulu/SpecLogicFulu.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/fulu/SpecLogicFulu.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2024 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/fulu/forktransition/FuluStateUpgrade.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/fulu/forktransition/FuluStateUpgrade.java index 8f84e96139f..e461af0cf2d 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/fulu/forktransition/FuluStateUpgrade.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/fulu/forktransition/FuluStateUpgrade.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2024 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/fulu/helpers/MiscHelpersFulu.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/fulu/helpers/MiscHelpersFulu.java index 493ef826b86..275df2d61e7 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/fulu/helpers/MiscHelpersFulu.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/fulu/helpers/MiscHelpersFulu.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2024 + * Copyright Consensys Software Inc., 2025 * * 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 @@ -81,8 +81,13 @@ public static MiscHelpersFulu required(final MiscHelpers miscHelpers) { + miscHelpers.getClass().getSimpleName())); } + @SuppressWarnings("unused") private final SpecConfigFulu specConfigFulu; + + @SuppressWarnings("unused") private final Predicates predicates; + + @SuppressWarnings("unused") private final SchemaDefinitionsFulu schemaDefinitions; public MiscHelpersFulu( diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionCache.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionCache.java index 6f67aa33b1c..520bc0fa232 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionCache.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionCache.java @@ -61,6 +61,6 @@ private SchemaDefinitions createSchemaDefinition(final SpecMilestone milestone) } public List getSupportedMilestones() { - return spec.getForkSchedule().getSupportedMilestones(); + return spec.getForkSchedule().getSupportedMilestones().stream().toList(); } } diff --git a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/gnosis.yaml b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/gnosis.yaml index d912ea5c768..e64bddec408 100644 --- a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/gnosis.yaml +++ b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/gnosis.yaml @@ -45,6 +45,9 @@ CAPELLA_FORK_EPOCH: 648704 # 2023-08-01T11:34:20.000Z # Deneb DENEB_FORK_VERSION: 0x04000064 DENEB_FORK_EPOCH: 889856 # 2024-03-11T18:30:20.000Z +# Electra +ELECTRA_FORK_VERSION: 0x05000064 +ELECTRA_FORK_EPOCH: 1337856 # 2025-04-30T14:03:40.000Z # Time parameters @@ -129,15 +132,19 @@ MAX_REQUEST_BLOCKS_DENEB: 128 MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS: 16384 # `6` BLOB_SIDECAR_SUBNET_COUNT: 6 -# `6` -MAX_BLOBS_PER_BLOCK: 6 +# `uint64(2)` +MAX_BLOBS_PER_BLOCK: 2 # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK MAX_REQUEST_BLOB_SIDECARS: 768 # Electra -# `9` -BLOB_SIDECAR_SUBNET_COUNT_ELECTRA: 9 -# `uint64(9)` -MAX_BLOBS_PER_BLOCK_ELECTRA: 9 +# 2**7 * 10**9 (= 128,000,000,000) +MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA: 128000000000 +# 2**6 * 10**9 (= 64,000,000,000) +MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT: 64000000000 +# `2` +BLOB_SIDECAR_SUBNET_COUNT_ELECTRA: 2 +# `uint64(2)` +MAX_BLOBS_PER_BLOCK_ELECTRA: 2 # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA -MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152 \ No newline at end of file +MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 256 \ No newline at end of file diff --git a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/holesky.yaml b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/holesky.yaml index d44d4ec21a9..348061075bc 100644 --- a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/holesky.yaml +++ b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/holesky.yaml @@ -41,6 +41,10 @@ DENEB_FORK_EPOCH: 29696 ELECTRA_FORK_VERSION: 0x06017000 ELECTRA_FORK_EPOCH: 115968 +# Fulu +FULU_FORK_VERSION: 0x07017000 +FULU_FORK_EPOCH: 18446744073709551615 + # Time parameters # --------------------------------------------------------------- # 12 seconds @@ -136,4 +140,15 @@ BLOB_SIDECAR_SUBNET_COUNT_ELECTRA: 9 # `uint64(9)` MAX_BLOBS_PER_BLOCK_ELECTRA: 9 # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA -MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152 \ No newline at end of file +MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152 + +# Fulu +NUMBER_OF_COLUMNS: 128 +NUMBER_OF_CUSTODY_GROUPS: 128 +DATA_COLUMN_SIDECAR_SUBNET_COUNT: 128 +MAX_REQUEST_DATA_COLUMN_SIDECARS: 512 +SAMPLES_PER_SLOT: 8 +CUSTODY_REQUIREMENT: 4 +VALIDATOR_CUSTODY_REQUIREMENT: 8 +MAX_BLOBS_PER_BLOCK_FULU: 12 +MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS: 4096 \ No newline at end of file diff --git a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/hoodi.yaml b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/hoodi.yaml index 5a35dc27549..acb12a45ccd 100644 --- a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/hoodi.yaml +++ b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/hoodi.yaml @@ -40,6 +40,10 @@ DENEB_FORK_EPOCH: 0 ELECTRA_FORK_VERSION: 0x60000910 ELECTRA_FORK_EPOCH: 2048 +# Fulu +FULU_FORK_VERSION: 0x70000910 +FULU_FORK_EPOCH: 18446744073709551615 + # Time parameters # --------------------------------------------------------------- # 12 seconds diff --git a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/less-swift.yaml b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/less-swift.yaml index 982f8c48748..09bb00ae9a0 100644 --- a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/less-swift.yaml +++ b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/less-swift.yaml @@ -38,6 +38,9 @@ DENEB_FORK_EPOCH: 18446744073709551615 # Electra ELECTRA_FORK_VERSION: 0x05000001 ELECTRA_FORK_EPOCH: 18446744073709551615 +# Fulu +FULU_FORK_VERSION: 0x06000001 +FULU_FORK_EPOCH: 18446744073709551615 # Transition # --------------------------------------------------------------- diff --git a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/mainnet.yaml b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/mainnet.yaml index 9c57fd63921..885d89dea4f 100644 --- a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/mainnet.yaml +++ b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/mainnet.yaml @@ -57,6 +57,7 @@ ELECTRA_FORK_EPOCH: 364032 # May 7, 2025, 10:05:11am UTC FULU_FORK_VERSION: 0x06000000 FULU_FORK_EPOCH: 18446744073709551615 + # Time parameters # --------------------------------------------------------------- # 12 seconds @@ -157,11 +158,11 @@ MAX_BLOBS_PER_BLOCK_ELECTRA: 9 # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152 -# [New in FULU] +# Fulu NUMBER_OF_COLUMNS: 128 NUMBER_OF_CUSTODY_GROUPS: 128 DATA_COLUMN_SIDECAR_SUBNET_COUNT: 128 -MAX_REQUEST_DATA_COLUMN_SIDECARS: 512 +MAX_REQUEST_DATA_COLUMN_SIDECARS: 16384 SAMPLES_PER_SLOT: 8 CUSTODY_REQUIREMENT: 4 VALIDATOR_CUSTODY_REQUIREMENT: 8 diff --git a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/minimal.yaml b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/minimal.yaml index b042fda6a7a..6b4a6e71729 100644 --- a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/minimal.yaml +++ b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/minimal.yaml @@ -158,11 +158,11 @@ MAX_BLOBS_PER_BLOCK_ELECTRA: 9 # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152 -# [New in FULU] +# Fulu NUMBER_OF_COLUMNS: 128 NUMBER_OF_CUSTODY_GROUPS: 128 DATA_COLUMN_SIDECAR_SUBNET_COUNT: 128 -MAX_REQUEST_DATA_COLUMN_SIDECARS: 512 +MAX_REQUEST_DATA_COLUMN_SIDECARS: 16384 SAMPLES_PER_SLOT: 8 CUSTODY_REQUIREMENT: 4 VALIDATOR_CUSTODY_REQUIREMENT: 8 diff --git a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/swift.yaml b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/swift.yaml index c5895599812..026f37c25a8 100644 --- a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/swift.yaml +++ b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/configs/swift.yaml @@ -50,6 +50,7 @@ ELECTRA_FORK_EPOCH: 18446744073709551615 FULU_FORK_VERSION: 0x06000001 FULU_FORK_EPOCH: 18446744073709551615 + # Time parameters # --------------------------------------------------------------- # [customized] Faster for testing purposes @@ -152,11 +153,11 @@ MAX_BLOBS_PER_BLOCK_ELECTRA: 9 # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152 -# [New in FULU] +# Fulu NUMBER_OF_COLUMNS: 128 NUMBER_OF_CUSTODY_GROUPS: 128 DATA_COLUMN_SIDECAR_SUBNET_COUNT: 128 -MAX_REQUEST_DATA_COLUMN_SIDECARS: 512 +MAX_REQUEST_DATA_COLUMN_SIDECARS: 16384 SAMPLES_PER_SLOT: 8 CUSTODY_REQUIREMENT: 4 VALIDATOR_CUSTODY_REQUIREMENT: 8 diff --git a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/mainnet/fulu.yaml b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/mainnet/fulu.yaml index 394f335f903..080f32808b3 100644 --- a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/mainnet/fulu.yaml +++ b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/mainnet/fulu.yaml @@ -7,4 +7,4 @@ FIELD_ELEMENTS_PER_CELL: 64 # `uint64(2 * 4096)` (= 8192) FIELD_ELEMENTS_PER_EXT_BLOB: 8192 # uint64(floorlog2(get_generalized_index(BeaconBlockBody, 'blob_kzg_commitments')) -KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH: 4 +KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH: 4 \ No newline at end of file diff --git a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/minimal/electra.yaml b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/minimal/electra.yaml index c87a328472f..e1f1f1736f7 100644 --- a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/minimal/electra.yaml +++ b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/minimal/electra.yaml @@ -34,10 +34,10 @@ MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD: 2 # Execution # --------------------------------------------------------------- -# [customized] -MAX_DEPOSIT_REQUESTS_PER_PAYLOAD: 4 -# [customized] 2**1 (= 2) withdrawal requests -MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD: 2 +# 2**13 (= 8,192) deposit requests +MAX_DEPOSIT_REQUESTS_PER_PAYLOAD: 8192 +# 2**4 (= 16) withdrawal requests +MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD: 16 # Withdrawals processing # --------------------------------------------------------------- diff --git a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/minimal/fulu.yaml b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/minimal/fulu.yaml index c961eb7f3ca..f250a4b29ae 100644 --- a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/minimal/fulu.yaml +++ b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/minimal/fulu.yaml @@ -7,4 +7,4 @@ FIELD_ELEMENTS_PER_CELL: 64 # `uint64(2 * 4096)` (= 8192) FIELD_ELEMENTS_PER_EXT_BLOB: 8192 # uint64(floorlog2(get_generalized_index(BeaconBlockBody, 'blob_kzg_commitments')) -KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH: 4 +KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH: 4 \ No newline at end of file diff --git a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/swift/electra.yaml b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/swift/electra.yaml index c87a328472f..e1f1f1736f7 100644 --- a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/swift/electra.yaml +++ b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/swift/electra.yaml @@ -34,10 +34,10 @@ MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD: 2 # Execution # --------------------------------------------------------------- -# [customized] -MAX_DEPOSIT_REQUESTS_PER_PAYLOAD: 4 -# [customized] 2**1 (= 2) withdrawal requests -MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD: 2 +# 2**13 (= 8,192) deposit requests +MAX_DEPOSIT_REQUESTS_PER_PAYLOAD: 8192 +# 2**4 (= 16) withdrawal requests +MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD: 16 # Withdrawals processing # --------------------------------------------------------------- diff --git a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/swift/fulu.yaml b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/swift/fulu.yaml index 6141e59e1b7..d9e4cafd48c 100644 --- a/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/swift/fulu.yaml +++ b/ethereum/spec/src/main/resources/tech/pegasys/teku/spec/config/presets/swift/fulu.yaml @@ -7,4 +7,4 @@ FIELD_ELEMENTS_PER_CELL: 64 # `uint64(2 * 4096)` (= 8192) FIELD_ELEMENTS_PER_EXT_BLOB: 8192 # uint64(floorlog2(get_generalized_index(BeaconBlockBody, 'blob_kzg_commitments')) -KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH: 4 +KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH: 4 \ No newline at end of file diff --git a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/SpecMilestoneTest.java b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/SpecMilestoneTest.java index 04f8dc6f7d5..44b86a92bcd 100644 --- a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/SpecMilestoneTest.java +++ b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/SpecMilestoneTest.java @@ -20,8 +20,11 @@ import static tech.pegasys.teku.spec.SpecMilestone.CAPELLA; import static tech.pegasys.teku.spec.SpecMilestone.DENEB; import static tech.pegasys.teku.spec.SpecMilestone.ELECTRA; +import static tech.pegasys.teku.spec.SpecMilestone.FULU; import static tech.pegasys.teku.spec.SpecMilestone.PHASE0; +import java.util.Collection; +import java.util.List; import java.util.stream.Stream; import org.assertj.core.api.AssertionsForClassTypes; import org.junit.jupiter.api.Test; @@ -41,35 +44,37 @@ import tech.pegasys.teku.spec.networks.Eth2Network; public class SpecMilestoneTest { - private final SpecConfigFulu fuluSpecConfig = - SpecConfigFulu.required( - SpecConfigLoader.loadConfig(Eth2Network.MINIMAL.configName()).specConfig()); - private final SpecConfigElectra electraSpecConfig = + private static final SpecConfigFulu FULU_SPEC_CONFIG = + SpecConfigLoader.loadConfig(Eth2Network.MINIMAL.configName()) + .specConfig() + .toVersionFulu() + .orElseThrow(); + private static final SpecConfigElectra ELECTRA_SPEC_CONFIG = SpecConfigLoader.loadConfig(Eth2Network.MINIMAL.configName()) .specConfig() .toVersionElectra() .orElseThrow(); - private final SpecConfigDeneb denebSpecConfig = + private static final SpecConfigDeneb DENEB_SPEC_CONFIG = SpecConfigLoader.loadConfig(Eth2Network.MINIMAL.configName()) .specConfig() .toVersionDeneb() .orElseThrow(); - private final SpecConfigCapella capellaSpecConfig = + private static final SpecConfigCapella CAPELLA_SPEC_CONFIG = SpecConfigLoader.loadConfig(Eth2Network.MINIMAL.configName()) .specConfig() .toVersionCapella() .orElseThrow(); - private final SpecConfigBellatrix bellatrixSpecConfig = + private static final SpecConfigBellatrix BELLATRIX_SPEC_CONFIG = SpecConfigLoader.loadConfig(Eth2Network.MINIMAL.configName()) .specConfig() .toVersionBellatrix() .orElseThrow(); - private final SpecConfigAltair altairSpecConfig = + private static final SpecConfigAltair ALTAIR_SPEC_CONFIG = SpecConfigLoader.loadConfig(Eth2Network.MINIMAL.configName()) .specConfig() .toVersionAltair() .orElseThrow(); - private final SpecConfig phase0SpecConfig = + private static final SpecConfig PHASE0_SPEC_CONFIG = SpecConfigLoader.loadConfig(Eth2Network.MINIMAL.configName()).specConfig(); public static Stream isLessThanPermutations() { @@ -109,7 +114,14 @@ public static Stream isLessThanPermutations() { Arguments.of(ELECTRA, BELLATRIX, false), Arguments.of(ELECTRA, CAPELLA, false), Arguments.of(ELECTRA, DENEB, false), - Arguments.of(ELECTRA, ELECTRA, false)); + Arguments.of(ELECTRA, ELECTRA, false), + Arguments.of(FULU, PHASE0, false), + Arguments.of(FULU, ALTAIR, false), + Arguments.of(FULU, BELLATRIX, false), + Arguments.of(FULU, CAPELLA, false), + Arguments.of(FULU, DENEB, false), + Arguments.of(FULU, ELECTRA, false), + Arguments.of(FULU, FULU, false)); } public static Stream isGreaterThanOrEqualToPermutations() { @@ -149,7 +161,14 @@ public static Stream isGreaterThanOrEqualToPermutations() { Arguments.of(ELECTRA, BELLATRIX, true), Arguments.of(ELECTRA, CAPELLA, true), Arguments.of(ELECTRA, DENEB, true), - Arguments.of(ELECTRA, ELECTRA, true)); + Arguments.of(ELECTRA, ELECTRA, true), + Arguments.of(FULU, PHASE0, true), + Arguments.of(FULU, ALTAIR, true), + Arguments.of(FULU, BELLATRIX, true), + Arguments.of(FULU, CAPELLA, true), + Arguments.of(FULU, DENEB, true), + Arguments.of(FULU, ELECTRA, true), + Arguments.of(FULU, FULU, true)); } public static Stream getPreviousPermutations() { @@ -158,7 +177,8 @@ public static Stream getPreviousPermutations() { Arguments.of(BELLATRIX, ALTAIR), Arguments.of(CAPELLA, BELLATRIX), Arguments.of(DENEB, CAPELLA), - Arguments.of(ELECTRA, DENEB)); + Arguments.of(ELECTRA, DENEB), + Arguments.of(FULU, ELECTRA)); } @ParameterizedTest @@ -192,75 +212,45 @@ void getPreviousMilestoneIfPresent() { assertThat(ALTAIR.getPreviousMilestoneIfExists()).contains(PHASE0); assertThat(BELLATRIX.getPreviousMilestoneIfExists()).contains(ALTAIR); assertThat(CAPELLA.getPreviousMilestoneIfExists()).contains(BELLATRIX); + assertThat(DENEB.getPreviousMilestoneIfExists()).contains(CAPELLA); + assertThat(ELECTRA.getPreviousMilestoneIfExists()).contains(DENEB); + assertThat(FULU.getPreviousMilestoneIfExists()).contains(ELECTRA); } - @Test - public void getAllPriorMilestones_phase0() { - assertThat(SpecMilestone.getAllPriorMilestones(PHASE0)).isEmpty(); - } - - @Test - public void getAllPriorMilestones_altair() { - assertThat(SpecMilestone.getAllPriorMilestones(SpecMilestone.ALTAIR)).contains(PHASE0); - } - - @Test - public void getAllPriorMilestones_bellatrix() { - assertThat(SpecMilestone.getAllPriorMilestones(SpecMilestone.BELLATRIX)) - .contains(PHASE0, SpecMilestone.ALTAIR); - } - - @Test - public void getAllPriorMilestones_capella() { - assertThat(SpecMilestone.getAllPriorMilestones(CAPELLA)) - .contains(PHASE0, SpecMilestone.ALTAIR, SpecMilestone.BELLATRIX); - } - - @Test - public void getAllPriorMilestones_deneb() { - assertThat(SpecMilestone.getAllPriorMilestones(DENEB)) - .contains(PHASE0, SpecMilestone.ALTAIR, SpecMilestone.BELLATRIX, CAPELLA); - } - - @Test - public void getAllPriorMilestones_electra() { - assertThat(SpecMilestone.getAllPriorMilestones(SpecMilestone.ELECTRA)) - .contains(PHASE0, SpecMilestone.ALTAIR, SpecMilestone.BELLATRIX, CAPELLA, DENEB); - } - - @Test - public void getMilestonesUpTo_phase0() { - assertThat(SpecMilestone.getMilestonesUpTo(PHASE0)).contains(PHASE0); - } - - @Test - public void getMilestonesUpTo_altair() { - assertThat(SpecMilestone.getMilestonesUpTo(SpecMilestone.ALTAIR)) - .contains(PHASE0, SpecMilestone.ALTAIR); - } - - @Test - public void getMilestonesUpTo_bellatrix() { - assertThat(SpecMilestone.getMilestonesUpTo(SpecMilestone.BELLATRIX)) - .contains(PHASE0, SpecMilestone.ALTAIR, SpecMilestone.BELLATRIX); + @ParameterizedTest + @MethodSource("getPriorMilestonePermutations") + public void getAllPriorMilestones( + final SpecMilestone current, final Collection priorMilestones) { + assertThat(SpecMilestone.getAllPriorMilestones(current)).containsAll(priorMilestones); } - @Test - public void getMilestonesUpTo_capella() { - assertThat(SpecMilestone.getMilestonesUpTo(CAPELLA)) - .contains(PHASE0, SpecMilestone.ALTAIR, SpecMilestone.BELLATRIX); + public static Stream getPriorMilestonePermutations() { + return Stream.of( + Arguments.of(PHASE0, List.of()), + Arguments.of(ALTAIR, List.of(PHASE0)), + Arguments.of(BELLATRIX, List.of(PHASE0, ALTAIR)), + Arguments.of(CAPELLA, List.of(PHASE0, ALTAIR, BELLATRIX)), + Arguments.of(DENEB, List.of(PHASE0, ALTAIR, BELLATRIX, CAPELLA)), + Arguments.of(ELECTRA, List.of(PHASE0, ALTAIR, BELLATRIX, CAPELLA, DENEB)), + Arguments.of(FULU, List.of(PHASE0, ALTAIR, BELLATRIX, CAPELLA, DENEB, ELECTRA))); } - @Test - public void getMilestonesUpTo_deneb() { - assertThat(SpecMilestone.getMilestonesUpTo(DENEB)) - .contains(PHASE0, SpecMilestone.ALTAIR, SpecMilestone.BELLATRIX, CAPELLA); + @ParameterizedTest + @MethodSource("getMilestonesUpToPermutations") + public void getMilestonesUpTo( + final SpecMilestone current, final Collection upToMilestones) { + assertThat(SpecMilestone.getMilestonesUpTo(current)).containsAll(upToMilestones); } - @Test - public void getMilestonesUpTo_electra() { - assertThat(SpecMilestone.getMilestonesUpTo(SpecMilestone.ELECTRA)) - .contains(PHASE0, SpecMilestone.ALTAIR, SpecMilestone.BELLATRIX, CAPELLA, DENEB); + public static Stream getMilestonesUpToPermutations() { + return Stream.of( + Arguments.of(PHASE0, List.of(PHASE0)), + Arguments.of(ALTAIR, List.of(PHASE0, ALTAIR)), + Arguments.of(BELLATRIX, List.of(PHASE0, ALTAIR, BELLATRIX)), + Arguments.of(CAPELLA, List.of(PHASE0, ALTAIR, BELLATRIX, CAPELLA)), + Arguments.of(DENEB, List.of(PHASE0, ALTAIR, BELLATRIX, CAPELLA, DENEB)), + Arguments.of(ELECTRA, List.of(PHASE0, ALTAIR, BELLATRIX, CAPELLA, DENEB, ELECTRA)), + Arguments.of(FULU, List.of(PHASE0, ALTAIR, BELLATRIX, CAPELLA, DENEB, ELECTRA, FULU))); } @Test @@ -291,119 +281,126 @@ public void areMilestonesInOrder() { @Test public void getForkVersion_phase0() { - final Bytes4 expected = altairSpecConfig.getGenesisForkVersion(); - assertThat(SpecMilestone.getForkVersion(altairSpecConfig, PHASE0)).contains(expected); + final Bytes4 expected = PHASE0_SPEC_CONFIG.getGenesisForkVersion(); + assertThat(SpecMilestone.getForkVersion(PHASE0_SPEC_CONFIG, PHASE0)).contains(expected); } @Test public void getForkVersion_altair() { - final Bytes4 expected = altairSpecConfig.getAltairForkVersion(); - assertThat(SpecMilestone.getForkVersion(altairSpecConfig, SpecMilestone.ALTAIR)) + final Bytes4 expected = ALTAIR_SPEC_CONFIG.getAltairForkVersion(); + assertThat(SpecMilestone.getForkVersion(ALTAIR_SPEC_CONFIG, SpecMilestone.ALTAIR)) .contains(expected); } @Test public void getForkVersion_bellatrix() { - final Bytes4 expected = bellatrixSpecConfig.getBellatrixForkVersion(); - assertThat(SpecMilestone.getForkVersion(bellatrixSpecConfig, SpecMilestone.BELLATRIX)) + final Bytes4 expected = BELLATRIX_SPEC_CONFIG.getBellatrixForkVersion(); + assertThat(SpecMilestone.getForkVersion(BELLATRIX_SPEC_CONFIG, SpecMilestone.BELLATRIX)) .contains(expected); } @Test public void getForkVersion_capella() { - final Bytes4 expected = capellaSpecConfig.getCapellaForkVersion(); - assertThat(SpecMilestone.getForkVersion(capellaSpecConfig, CAPELLA)).contains(expected); + final Bytes4 expected = CAPELLA_SPEC_CONFIG.getCapellaForkVersion(); + assertThat(SpecMilestone.getForkVersion(CAPELLA_SPEC_CONFIG, CAPELLA)).contains(expected); } @Test public void getForkVersion_deneb() { - final Bytes4 expected = denebSpecConfig.getDenebForkVersion(); - assertThat(SpecMilestone.getForkVersion(denebSpecConfig, DENEB)).contains(expected); + final Bytes4 expected = DENEB_SPEC_CONFIG.getDenebForkVersion(); + assertThat(SpecMilestone.getForkVersion(DENEB_SPEC_CONFIG, DENEB)).contains(expected); } @Test public void getForkVersion_electra() { - final Bytes4 expected = electraSpecConfig.getElectraForkVersion(); - assertThat(SpecMilestone.getForkVersion(electraSpecConfig, SpecMilestone.ELECTRA)) + final Bytes4 expected = ELECTRA_SPEC_CONFIG.getElectraForkVersion(); + assertThat(SpecMilestone.getForkVersion(ELECTRA_SPEC_CONFIG, SpecMilestone.ELECTRA)) .contains(expected); } @Test public void getForkVersion_fulu() { - final Bytes4 expected = fuluSpecConfig.getFuluForkVersion(); - assertThat(SpecMilestone.getForkVersion(fuluSpecConfig, SpecMilestone.FULU)).contains(expected); + final Bytes4 expected = FULU_SPEC_CONFIG.getFuluForkVersion(); + assertThat(SpecMilestone.getForkVersion(FULU_SPEC_CONFIG, SpecMilestone.FULU)) + .contains(expected); } @Test public void getForkEpoch_phase0() { final UInt64 expected = UInt64.ZERO; - assertThat(SpecMilestone.getForkEpoch(altairSpecConfig, PHASE0)).contains(expected); + assertThat(SpecMilestone.getForkEpoch(PHASE0_SPEC_CONFIG, PHASE0)).contains(expected); } @Test public void getForEpoch_altair() { - final UInt64 expected = altairSpecConfig.getAltairForkEpoch(); - assertThat(SpecMilestone.getForkEpoch(altairSpecConfig, SpecMilestone.ALTAIR)) + final UInt64 expected = ALTAIR_SPEC_CONFIG.getAltairForkEpoch(); + assertThat(SpecMilestone.getForkEpoch(ALTAIR_SPEC_CONFIG, SpecMilestone.ALTAIR)) .contains(expected); } @Test public void getForkEpoch_bellatrix() { - final UInt64 expected = bellatrixSpecConfig.getBellatrixForkEpoch(); - assertThat(SpecMilestone.getForkEpoch(bellatrixSpecConfig, SpecMilestone.BELLATRIX)) + final UInt64 expected = BELLATRIX_SPEC_CONFIG.getBellatrixForkEpoch(); + assertThat(SpecMilestone.getForkEpoch(BELLATRIX_SPEC_CONFIG, SpecMilestone.BELLATRIX)) .contains(expected); } @Test public void getForkEpoch_capella() { - final UInt64 expected = capellaSpecConfig.getCapellaForkEpoch(); - assertThat(SpecMilestone.getForkEpoch(capellaSpecConfig, CAPELLA)).contains(expected); + final UInt64 expected = CAPELLA_SPEC_CONFIG.getCapellaForkEpoch(); + assertThat(SpecMilestone.getForkEpoch(CAPELLA_SPEC_CONFIG, CAPELLA)).contains(expected); } @Test public void getForkEpoch_deneb() { - final UInt64 expected = denebSpecConfig.getDenebForkEpoch(); - assertThat(SpecMilestone.getForkEpoch(denebSpecConfig, DENEB)).contains(expected); + final UInt64 expected = DENEB_SPEC_CONFIG.getDenebForkEpoch(); + assertThat(SpecMilestone.getForkEpoch(DENEB_SPEC_CONFIG, DENEB)).contains(expected); } @Test public void getForkEpoch_electra() { - final UInt64 expected = electraSpecConfig.getElectraForkEpoch(); - assertThat(SpecMilestone.getForkEpoch(electraSpecConfig, SpecMilestone.ELECTRA)) + final UInt64 expected = ELECTRA_SPEC_CONFIG.getElectraForkEpoch(); + assertThat(SpecMilestone.getForkEpoch(ELECTRA_SPEC_CONFIG, SpecMilestone.ELECTRA)) .contains(expected); } @Test public void getForkEpoch_fulu() { - final UInt64 expected = fuluSpecConfig.getFuluForkEpoch(); - assertThat(SpecMilestone.getForkEpoch(fuluSpecConfig, SpecMilestone.FULU)).contains(expected); + final UInt64 expected = FULU_SPEC_CONFIG.getElectraForkEpoch(); + assertThat(SpecMilestone.getForkEpoch(FULU_SPEC_CONFIG, FULU)).contains(expected); } @Test public void getForkSlot_altairNotScheduled() { - assertThat(SpecMilestone.getForkEpoch(phase0SpecConfig, SpecMilestone.ALTAIR)) + assertThat(SpecMilestone.getForkEpoch(PHASE0_SPEC_CONFIG, SpecMilestone.ALTAIR)) .contains(UInt64.MAX_VALUE); } @Test public void getForkSlot_bellatrixNotScheduled() { - assertThat(SpecMilestone.getForkEpoch(phase0SpecConfig, SpecMilestone.BELLATRIX)) + assertThat(SpecMilestone.getForkEpoch(PHASE0_SPEC_CONFIG, SpecMilestone.BELLATRIX)) .contains(UInt64.MAX_VALUE); } @Test public void getForkEpoch_capellaNotScheduled() { - assertThat(SpecMilestone.getForkEpoch(bellatrixSpecConfig, CAPELLA)).contains(UInt64.MAX_VALUE); + assertThat(SpecMilestone.getForkEpoch(BELLATRIX_SPEC_CONFIG, CAPELLA)) + .contains(UInt64.MAX_VALUE); } @Test public void getForkEpoch_denebNotScheduled() { - assertThat(SpecMilestone.getForkEpoch(capellaSpecConfig, DENEB)).contains(UInt64.MAX_VALUE); + assertThat(SpecMilestone.getForkEpoch(CAPELLA_SPEC_CONFIG, DENEB)).contains(UInt64.MAX_VALUE); } @Test public void getForkEpoch_electraNotScheduled() { - assertThat(SpecMilestone.getForkEpoch(denebSpecConfig, SpecMilestone.ELECTRA)) + assertThat(SpecMilestone.getForkEpoch(DENEB_SPEC_CONFIG, SpecMilestone.ELECTRA)) .contains(UInt64.MAX_VALUE); } + + @Test + public void getForkEpoch_fuluNotScheduled() { + assertThat(SpecMilestone.getForkEpoch(ELECTRA_SPEC_CONFIG, FULU)).contains(UInt64.MAX_VALUE); + } } diff --git a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/SpecConfigBuilderTest.java b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/SpecConfigBuilderTest.java index 9da1b215314..1030d48c49f 100644 --- a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/SpecConfigBuilderTest.java +++ b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/SpecConfigBuilderTest.java @@ -36,6 +36,7 @@ import tech.pegasys.teku.spec.config.builder.CapellaBuilder; import tech.pegasys.teku.spec.config.builder.DenebBuilder; import tech.pegasys.teku.spec.config.builder.ElectraBuilder; +import tech.pegasys.teku.spec.config.builder.FuluBuilder; import tech.pegasys.teku.spec.config.builder.SpecConfigBuilder; import tech.pegasys.teku.spec.datastructures.util.ForkAndSpecMilestone; import tech.pegasys.teku.spec.util.DataStructureUtil; @@ -51,7 +52,8 @@ class SpecConfigBuilderTest { BellatrixBuilder.class, CapellaBuilder.class, DenebBuilder.class, - ElectraBuilder.class); + ElectraBuilder.class, + FuluBuilder.class); /** * Ensures Builders have actually non-primitive setters, because primitive setters are silently diff --git a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/SpecConfigLoaderTest.java b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/SpecConfigLoaderTest.java index df29aefe455..219bf0aef05 100644 --- a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/SpecConfigLoaderTest.java +++ b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/SpecConfigLoaderTest.java @@ -19,9 +19,7 @@ import static tech.pegasys.teku.spec.config.SpecConfigAssertions.assertAllBellatrixFieldsSet; import static tech.pegasys.teku.spec.config.SpecConfigAssertions.assertAllFieldsSet; -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.io.Resources; -import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; @@ -55,7 +53,7 @@ public void shouldLoadAllKnownNetworks(final Eth2Network network) throws Excepti * sufficient. */ @ParameterizedTest(name = "{0}") - @ValueSource(strings = {"holesky", "mainnet"}) + @ValueSource(strings = {"hoodi", "mainnet"}) public void shouldMaintainConfigNameBackwardsCompatibility(final String name) { final SpecConfig config = SpecConfigLoader.loadConfig(name).specConfig(); assertThat(config.getRawConfig().get("CONFIG_NAME")).isEqualTo(name); @@ -161,10 +159,8 @@ private InputStream loadInvalidFile(final String file) { return getClass().getResourceAsStream("invalid/" + file); } - private Map readJsonConfig(final InputStream source) throws IOException { - final ObjectMapper mapper = new ObjectMapper(); - return mapper - .readerFor(mapper.getTypeFactory().constructMapType(Map.class, String.class, String.class)) - .readValue(source); + private Map readJsonConfig(final InputStream source) { + YamlConfigReader reader = new YamlConfigReader(); + return reader.readValues(source); } } diff --git a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/SpecConfigReaderTest.java b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/SpecConfigReaderTest.java index a923eb7c491..f6b2f0363f5 100644 --- a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/SpecConfigReaderTest.java +++ b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/SpecConfigReaderTest.java @@ -13,14 +13,19 @@ package tech.pegasys.teku.spec.config; +import static java.nio.charset.StandardCharsets.UTF_8; import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; import static tech.pegasys.teku.spec.config.SpecConfigAssertions.assertAllAltairFieldsSet; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Map; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; import tech.pegasys.teku.infrastructure.unsigned.UInt64; public class SpecConfigReaderTest { @@ -141,7 +146,7 @@ public void read_invalidLong_wrongType() { assertThatThrownBy(() -> readConfig(stream)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining( - "Cannot read spec config: Cannot deserialize value of type `java.lang.String` from Array")); + "Failed to parse value for constant VALIDATOR_REGISTRY_LIMIT")); } @Test @@ -187,6 +192,19 @@ public void read_invalidUInt64_tooLarge() { "Failed to parse value for constant MIN_GENESIS_TIME: '18446744073709552001'")); } + @Test + public void read_localConfigFile_notLoadingDefaults(@TempDir final Path tempDir) + throws IOException { + Files.writeString( + tempDir.resolve("test.yaml"), "PRESET_BASE: 'mainnet'\nCONFIG_NAME: 'mainnet'", UTF_8); + Map data = + reader.readValues(Files.newInputStream(tempDir.resolve("test.yaml"))); + reader.loadFromMap(data, true); + assertThatThrownBy(reader::build) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("SECONDS_PER_ETH1_BLOCK"); + } + @Test public void read_invalidBytes4_tooLarge() { processFileAsInputStream( diff --git a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/YamlConfigReaderTest.java b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/YamlConfigReaderTest.java new file mode 100644 index 00000000000..cdb74dfee04 --- /dev/null +++ b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/config/YamlConfigReaderTest.java @@ -0,0 +1,73 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.spec.config; + +import static java.nio.charset.StandardCharsets.UTF_8; +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; +import java.util.Map; +import org.apache.commons.io.IOUtils; +import org.junit.jupiter.api.Test; + +@SuppressWarnings("unchecked") +public class YamlConfigReaderTest { + private final YamlConfigReader reader = new YamlConfigReader(); + + @Test + void shouldReadSimpleObjectToStringMap() { + final String testData = + """ +version: 250 +info: the info +"""; + final Map objData = reader.readValues(IOUtils.toInputStream(testData, UTF_8)); + assertThat(objData.get("version")).isInstanceOf(String.class).isEqualTo("250"); + assertThat(objData.get("info")).isInstanceOf(String.class).isEqualTo("the info"); + } + + @Test + void shouldReadObjectWithListOfObjects() { + final String testData = + """ +data: + - a: 1 + aa: 11 + - b: two + bb: three +"""; + + final Map objData = reader.readValues(IOUtils.toInputStream(testData, UTF_8)); + assertThat(objData.get("data")).isInstanceOf(List.class); + final List> list = (List>) objData.get("data"); + for (Object o : list) { + assertThat(o).isInstanceOf(Map.class); + assertThat(((Map) o).size()).isEqualTo(2); + } + assertThat(list) + .containsExactly(Map.of("a", "1", "aa", "11"), Map.of("b", "two", "bb", "three")); + } + + @Test + void shouldReadEth1Address() { + final String testData = + """ +DEPOSIT_CONTRACT_ADDRESS: 0x4242424242424242424242424242424242424242 + """; + final Map objData = reader.readValues(IOUtils.toInputStream(testData, UTF_8)); + assertThat(objData.get("DEPOSIT_CONTRACT_ADDRESS")) + .isInstanceOf(String.class) + .isEqualTo("0x4242424242424242424242424242424242424242"); + } +} diff --git a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/datastructures/execution/ExpectedWithdrawalsTest.java b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/datastructures/execution/ExpectedWithdrawalsTest.java index df897bfa1de..5ced73bcca6 100644 --- a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/datastructures/execution/ExpectedWithdrawalsTest.java +++ b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/datastructures/execution/ExpectedWithdrawalsTest.java @@ -14,13 +14,20 @@ package tech.pegasys.teku.spec.datastructures.execution; import static org.assertj.core.api.Assertions.assertThat; +import static tech.pegasys.teku.infrastructure.unsigned.UInt64.ONE; +import static tech.pegasys.teku.infrastructure.unsigned.UInt64.ZERO; +import java.util.List; +import org.apache.tuweni.bytes.Bytes32; import org.junit.jupiter.api.Test; +import tech.pegasys.teku.ethereum.execution.types.Eth1Address; import tech.pegasys.teku.infrastructure.unsigned.UInt64; import tech.pegasys.teku.spec.Spec; import tech.pegasys.teku.spec.TestSpecFactory; import tech.pegasys.teku.spec.config.SpecConfigElectra; +import tech.pegasys.teku.spec.datastructures.execution.versions.capella.Withdrawal; import tech.pegasys.teku.spec.datastructures.state.BeaconStateTestBuilder; +import tech.pegasys.teku.spec.datastructures.state.Validator; import tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState; import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.electra.BeaconStateElectra; import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.electra.MutableBeaconStateElectra; @@ -32,6 +39,8 @@ class ExpectedWithdrawalsTest { private Spec spec; private DataStructureUtil dataStructureUtil; + private static final UInt64 ONE_ETH = UInt64.valueOf(1_000_000_000L); + @Test void bellatrixExpectedWithdrawals() { spec = TestSpecFactory.createMinimalBellatrix(); @@ -60,6 +69,69 @@ void capellaExpectedWithdrawals() { assertThat(withdrawals.getPartialWithdrawalCount()).isEqualTo(0); } + @Test + void getPartiallyWithdrawnBalance_returnsZeroIfNotSet() { + spec = TestSpecFactory.createMinimalElectra(); + final List withdrawalList = List.of(); + assertThat(ExpectedWithdrawals.getPartiallyWithdrawnBalance(withdrawalList, ZERO)) + .isEqualTo(ZERO); + } + + @Test + void getPartiallyWithdrawnBalance_returnsCurrentValue() { + spec = TestSpecFactory.createMinimalElectra(); + dataStructureUtil = new DataStructureUtil(spec); + final List withdrawalList = + List.of( + dataStructureUtil.randomWithdrawal(ZERO, ONE_ETH), + dataStructureUtil.randomWithdrawal(ZERO, ONE_ETH)); + assertThat(ExpectedWithdrawals.getPartiallyWithdrawnBalance(withdrawalList, ZERO)) + .isEqualTo(ONE_ETH.times(2)); + } + + @Test + void getPartiallyWithdrawnBalance_returnsCurrentValueSpecificToValidator() { + spec = TestSpecFactory.createMinimalElectra(); + dataStructureUtil = new DataStructureUtil(spec); + final List withdrawalList = + List.of( + dataStructureUtil.randomWithdrawal(ZERO, ONE_ETH), + dataStructureUtil.randomWithdrawal(ONE, ONE_ETH)); + assertThat(ExpectedWithdrawals.getPartiallyWithdrawnBalance(withdrawalList, ZERO)) + .isEqualTo(ONE_ETH); + } + + @Test + void getEthAddressFromWithdrawalCredentials_extracts_address() { + spec = TestSpecFactory.createMinimalElectra(); + dataStructureUtil = new DataStructureUtil(spec); + final Eth1Address address = dataStructureUtil.randomEth1Address(); + final Validator validator = + dataStructureUtil + .validatorBuilder() + .withdrawalCredentials( + Bytes32.fromHexString("0x01000000000000" + address.toUnprefixedHexString())) + .build(); + assertThat( + ExpectedWithdrawals.getEthAddressFromWithdrawalCredentials(validator) + .toUnprefixedHexString()) + .isEqualToIgnoringCase(address.toUnprefixedHexString()); + } + + @Test + void createFromInvalidStateReturnsNoop() { + spec = TestSpecFactory.createMinimalBellatrix(); + dataStructureUtil = new DataStructureUtil(spec); + assertThat( + ExpectedWithdrawals.create( + dataStructureUtil.randomBeaconState(), + spec.getGenesisSchemaDefinitions(), + spec.getGenesisSpec().miscHelpers(), + spec.getGenesisSpecConfig(), + spec.getGenesisSpec().predicates())) + .isEqualTo(ExpectedWithdrawals.NOOP); + } + @Test void electraExpectedWithdrawals() { spec = TestSpecFactory.createMinimalElectra(); @@ -100,6 +172,84 @@ void electraExpectedWithdrawals() { assertThat(mutableBeaconStateElectra.getValidators().size()).isEqualTo(2); } + @Test + void electraPendingPartialWithdrawals_SingleExceedingMinimumBalance() { + spec = TestSpecFactory.createMinimalElectra(); + dataStructureUtil = new DataStructureUtil(spec); + final SpecConfigElectra specConfigElectra = + SpecConfigElectra.required(spec.getGenesisSpec().getConfig()); + final UInt64 minActivationBalance = specConfigElectra.getMaxEffectiveBalance(); + final UInt64 partialWithdrawalBalance = UInt64.valueOf(10_000L); + final BeaconStateElectra preState = + BeaconStateElectra.required( + new BeaconStateTestBuilder(dataStructureUtil) + .activeConsolidatingValidator(minActivationBalance.plus(partialWithdrawalBalance)) + .pendingPartialWithdrawal(0, partialWithdrawalBalance.times(2)) + .build()); + + final ExpectedWithdrawals withdrawals = + spec.getBlockProcessor(preState.getSlot()).getExpectedWithdrawals(preState); + assertThat(withdrawals.getPartialWithdrawalCount()).isEqualTo(1); + // although the withdrawal was for 2x the available, we could only satisfy half of it + assertThat(withdrawals.getWithdrawalList().get(0).getAmount()) + .isEqualTo(partialWithdrawalBalance); + } + + @Test + void electraPendingPartialWithdrawals_MultipleExceedingMinimumBalance() { + spec = TestSpecFactory.createMinimalElectra(); + dataStructureUtil = new DataStructureUtil(spec); + final SpecConfigElectra specConfigElectra = + SpecConfigElectra.required(spec.getGenesisSpec().getConfig()); + final UInt64 minActivationBalance = specConfigElectra.getMaxEffectiveBalance(); + final UInt64 partialWithdrawalBalance = UInt64.valueOf(10_000L); + final BeaconStateElectra preState = + BeaconStateElectra.required( + new BeaconStateTestBuilder(dataStructureUtil) + .activeConsolidatingValidator(minActivationBalance.plus(15_000)) + .pendingPartialWithdrawal(0, partialWithdrawalBalance) + .pendingPartialWithdrawal(0, partialWithdrawalBalance) + .build()); + + final ExpectedWithdrawals withdrawals = + spec.getBlockProcessor(preState.getSlot()).getExpectedWithdrawals(preState); + assertThat(withdrawals.getPartialWithdrawalCount()).isEqualTo(2); + // the first withdrawal could be fully satisfied + assertThat(withdrawals.getWithdrawalList().get(0).getAmount()) + .isEqualTo(partialWithdrawalBalance); + // the second withdrawal could only be partially satisfied + assertThat(withdrawals.getWithdrawalList().get(1).getAmount()) + .isEqualTo(UInt64.valueOf(5_000L)); + } + + @Test + void electraPendingPartialWithdrawals_MultipleExceedingMinimumBalanceOneSkipped() { + spec = TestSpecFactory.createMinimalElectra(); + dataStructureUtil = new DataStructureUtil(spec); + final SpecConfigElectra specConfigElectra = + SpecConfigElectra.required(spec.getGenesisSpec().getConfig()); + final UInt64 minActivationBalance = specConfigElectra.getMaxEffectiveBalance(); + final UInt64 partialWithdrawalBalance = UInt64.valueOf(10_000L); + final BeaconStateElectra preState = + BeaconStateElectra.required( + new BeaconStateTestBuilder(dataStructureUtil) + .activeConsolidatingValidator(minActivationBalance.plus(partialWithdrawalBalance)) + .pendingPartialWithdrawal(0, partialWithdrawalBalance) + // this second pending partial will end up ignored because of insufficient balance + .pendingPartialWithdrawal(0, partialWithdrawalBalance) + .build()); + + final ExpectedWithdrawals withdrawals = + spec.getBlockProcessor(preState.getSlot()).getExpectedWithdrawals(preState); + // 2 partials came out of the state queue + assertThat(withdrawals.getPartialWithdrawalCount()).isEqualTo(2); + // only 1 withdrawal added because we had insufficient balance to allow the second + assertThat(withdrawals.getWithdrawalList().size()).isEqualTo(1); + // the first withdrawal was allowed at the requested amount + assertThat(withdrawals.getWithdrawalList().get(0).getAmount()) + .isEqualTo(UInt64.valueOf(10_000L)); + } + @Test void electraPendingPartialWithdrawals() { spec = TestSpecFactory.createMinimalElectra(); diff --git a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/logic/StateUpgradeTransitionTest.java b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/logic/StateUpgradeTransitionTest.java index b2745471fce..06049ed5578 100644 --- a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/logic/StateUpgradeTransitionTest.java +++ b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/logic/StateUpgradeTransitionTest.java @@ -47,7 +47,8 @@ SpecMilestone.BELLATRIX, SpecMilestone.CAPELLA, SpecMilestone.DENEB, - SpecMilestone.ELECTRA + SpecMilestone.ELECTRA, + SpecMilestone.FULU, }, doNotGenerateSpec = true) public class StateUpgradeTransitionTest { @@ -96,7 +97,8 @@ public void setup(final SpecContext specContext) { case FULU -> { beforeBeaconStateClass = BeaconStateElectra.class; afterBeaconStateClass = BeaconStateElectra.class; - yield TestSpecFactory.createMinimalWithElectraForkEpoch(milestoneTransitionEpoch); + // TODO-fulu eventually we should have a BeaconStateFulu class + yield TestSpecFactory.createMinimalWithFuluForkEpoch(milestoneTransitionEpoch); } }; diff --git a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/logic/common/util/AttestationUtilTest.java b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/logic/common/util/AttestationUtilTest.java index a1bc99e23f2..2abbf8e780e 100644 --- a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/logic/common/util/AttestationUtilTest.java +++ b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/logic/common/util/AttestationUtilTest.java @@ -90,34 +90,28 @@ void setUp(final SpecContext specContext) { .thenReturn(SafeFuture.completedFuture(true)); attestationUtil = spec.getGenesisSpec().getAttestationUtil(); - switch (specContext.getSpecMilestone()) { - case PHASE0: - attestationUtil = - new AttestationUtilPhase0( - spec.getGenesisSpecConfig(), - specVersion.getSchemaDefinitions(), - beaconStateAccessors, - miscHelpers); - break; - case DENEB: - attestationUtil = - new AttestationUtilDeneb( - spec.getGenesisSpecConfig(), - specVersion.getSchemaDefinitions(), - beaconStateAccessors, - miscHelpers); - break; - case ELECTRA: - attestationUtil = - new AttestationUtilElectra( - spec.getGenesisSpecConfig(), - specVersion.getSchemaDefinitions(), - beaconStateAccessors, - miscHelpers); - break; - default: - throw new UnsupportedOperationException("unsupported milestone"); - } + attestationUtil = + switch (specContext.getSpecMilestone()) { + case PHASE0 -> + new AttestationUtilPhase0( + spec.getGenesisSpecConfig(), + specVersion.getSchemaDefinitions(), + beaconStateAccessors, + miscHelpers); + case DENEB -> + new AttestationUtilDeneb( + spec.getGenesisSpecConfig(), + specVersion.getSchemaDefinitions(), + beaconStateAccessors, + miscHelpers); + case ELECTRA -> + new AttestationUtilElectra( + spec.getGenesisSpecConfig(), + specVersion.getSchemaDefinitions(), + beaconStateAccessors, + miscHelpers); + default -> throw new UnsupportedOperationException("unsupported milestone"); + }; } @TestTemplate diff --git a/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/TestSpecContext.java b/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/TestSpecContext.java index a127df265ba..89f2aa39f3d 100644 --- a/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/TestSpecContext.java +++ b/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/TestSpecContext.java @@ -31,6 +31,8 @@ boolean allMilestones() default false; + SpecMilestone[] ignoredMilestones() default {}; + boolean allNetworks() default false; boolean doNotGenerateSpec() default false; diff --git a/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/TestSpecFactory.java b/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/TestSpecFactory.java index acb3d7d60ea..6e86f67dc71 100644 --- a/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/TestSpecFactory.java +++ b/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/TestSpecFactory.java @@ -194,9 +194,16 @@ public static Spec createMinimalWithElectraForkEpoch(final UInt64 electraForkEpo return create(config, SpecMilestone.ELECTRA); } + /** + * Create a spec that forks to Fulu at the provided epoch + * + * @param fuluForkEpoch The Fulu fork epoch + * @return A spec with Fulu enabled, forking to Fulu at the given epoch + */ public static Spec createMinimalWithFuluForkEpoch(final UInt64 fuluForkEpoch) { final SpecConfigAndParent config = - getFuluSpecConfig(Eth2Network.MINIMAL, ZERO, ZERO, ZERO, fuluForkEpoch); + getFuluSpecConfig( + Eth2Network.MINIMAL, UInt64.ZERO, UInt64.ZERO, UInt64.ZERO, fuluForkEpoch); return create(config, SpecMilestone.FULU); } @@ -268,46 +275,39 @@ public static Spec create( final SpecMilestone specMilestone, final Eth2Network network, final Consumer configModifier) { - final Consumer defaultModifier = - switch (specMilestone) { - case PHASE0 -> __ -> {}; - case ALTAIR -> builder -> builder.altairBuilder(a -> a.altairForkEpoch(ZERO)); - case BELLATRIX -> - builder -> - builder - .altairBuilder(a -> a.altairForkEpoch(ZERO)) - .bellatrixBuilder(b -> b.bellatrixForkEpoch(ZERO)); - case CAPELLA -> - builder -> - builder - .altairBuilder(a -> a.altairForkEpoch(ZERO)) - .bellatrixBuilder(b -> b.bellatrixForkEpoch(ZERO)) - .capellaBuilder(c -> c.capellaForkEpoch(ZERO)); - case DENEB -> - builder -> - builder - .altairBuilder(a -> a.altairForkEpoch(ZERO)) - .bellatrixBuilder(b -> b.bellatrixForkEpoch(ZERO)) - .capellaBuilder(c -> c.capellaForkEpoch(ZERO)) - .denebBuilder(d -> d.denebForkEpoch(ZERO)); - case ELECTRA -> - builder -> - builder - .altairBuilder(a -> a.altairForkEpoch(ZERO)) - .bellatrixBuilder(b -> b.bellatrixForkEpoch(ZERO)) - .capellaBuilder(c -> c.capellaForkEpoch(ZERO)) - .denebBuilder(d -> d.denebForkEpoch(ZERO)) - .electraBuilder(e -> e.electraForkEpoch(ZERO)); - case FULU -> - builder -> - builder - .altairBuilder(a -> a.altairForkEpoch(ZERO)) - .bellatrixBuilder(b -> b.bellatrixForkEpoch(ZERO)) - .capellaBuilder(c -> c.capellaForkEpoch(ZERO)) - .denebBuilder(d -> d.denebForkEpoch(ZERO)) - .electraBuilder(e -> e.electraForkEpoch(ZERO)) - .fuluBuilder(f -> f.fuluForkEpoch(ZERO)); - }; + + Consumer defaultModifier = __ -> {}; + if (specMilestone.isGreaterThanOrEqualTo(SpecMilestone.ALTAIR)) { + defaultModifier = + defaultModifier.andThen( + builder -> builder.altairBuilder(a -> a.altairForkEpoch(UInt64.ZERO))); + } + if (specMilestone.isGreaterThanOrEqualTo(SpecMilestone.BELLATRIX)) { + defaultModifier = + defaultModifier.andThen( + builder -> builder.bellatrixBuilder(b -> b.bellatrixForkEpoch(UInt64.ZERO))); + } + if (specMilestone.isGreaterThanOrEqualTo(SpecMilestone.CAPELLA)) { + defaultModifier = + defaultModifier.andThen( + builder -> builder.capellaBuilder(c -> c.capellaForkEpoch(UInt64.ZERO))); + } + if (specMilestone.isGreaterThanOrEqualTo(SpecMilestone.DENEB)) { + defaultModifier = + defaultModifier.andThen( + builder -> builder.denebBuilder(d -> d.denebForkEpoch(UInt64.ZERO))); + } + if (specMilestone.isGreaterThanOrEqualTo(SpecMilestone.ELECTRA)) { + defaultModifier = + defaultModifier.andThen( + builder -> builder.electraBuilder(e -> e.electraForkEpoch(UInt64.ZERO))); + } + if (specMilestone.isGreaterThanOrEqualTo(SpecMilestone.FULU)) { + defaultModifier = + defaultModifier.andThen( + builder -> builder.fuluBuilder(f -> f.fuluForkEpoch(UInt64.ZERO))); + } + return create( SpecConfigLoader.loadConfig(network.configName(), defaultModifier.andThen(configModifier)), specMilestone); @@ -461,7 +461,7 @@ private static SpecConfigAndParent getElectraSpecConfig( private static SpecConfigAndParent getFuluSpecConfig( final Eth2Network network) { - return getFuluSpecConfig(network, ZERO, ZERO, ZERO, ZERO); + return getFuluSpecConfig(network, UInt64.ZERO, UInt64.ZERO, UInt64.ZERO, UInt64.ZERO); } private static SpecConfigAndParent getFuluSpecConfig( @@ -474,8 +474,8 @@ private static SpecConfigAndParent getFuluSpecConfig( network, builder -> builder - .altairBuilder(a -> a.altairForkEpoch(ZERO)) - .bellatrixBuilder(b -> b.bellatrixForkEpoch(ZERO)) + .altairBuilder(a -> a.altairForkEpoch(UInt64.ZERO)) + .bellatrixBuilder(b -> b.bellatrixForkEpoch(UInt64.ZERO)) .capellaBuilder(c -> c.capellaForkEpoch(capellaForkEpoch)) .denebBuilder(d -> d.denebForkEpoch(denebForkEpoch)) .electraBuilder(e -> e.electraForkEpoch(electraForkEpoch)) @@ -489,12 +489,12 @@ private static SpecConfigAndParent getFuluSpecConfig( network.configName(), builder -> { builder - .altairBuilder(a -> a.altairForkEpoch(ZERO)) - .bellatrixBuilder(b -> b.bellatrixForkEpoch(ZERO)) - .capellaBuilder(c -> c.capellaForkEpoch(ZERO)) - .denebBuilder(d -> d.denebForkEpoch(ZERO)) - .electraBuilder(e -> e.electraForkEpoch(ZERO)) - .fuluBuilder(f -> f.fuluForkEpoch(ZERO)); + .altairBuilder(a -> a.altairForkEpoch(UInt64.ZERO)) + .bellatrixBuilder(b -> b.bellatrixForkEpoch(UInt64.ZERO)) + .capellaBuilder(c -> c.capellaForkEpoch(UInt64.ZERO)) + .denebBuilder(d -> d.denebForkEpoch(UInt64.ZERO)) + .electraBuilder(e -> e.electraForkEpoch(UInt64.ZERO)) + .fuluBuilder(f -> f.fuluForkEpoch(UInt64.ZERO)); configAdapter.accept(builder); })); } diff --git a/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/TestSpecInvocationContextProvider.java b/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/TestSpecInvocationContextProvider.java index 95a1e188ef3..5a0c2b79b6c 100644 --- a/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/TestSpecInvocationContextProvider.java +++ b/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/TestSpecInvocationContextProvider.java @@ -14,6 +14,7 @@ package tech.pegasys.teku.spec; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Stream; @@ -43,13 +44,17 @@ public Stream provideTestTemplateInvocationContex Class clazz = extensionContext.getRequiredTestClass(); TestSpecContext testSpecContext = clazz.getAnnotation(TestSpecContext.class); - Set milestones; - Set networks; + final Set milestones; + final Set networks; if (testSpecContext.allMilestones()) { - milestones = Set.of(SpecMilestone.values()); + milestones = new HashSet<>(List.of(SpecMilestone.values())); } else { - milestones = Set.of(testSpecContext.milestone()); + milestones = new HashSet<>(List.of(testSpecContext.milestone())); + } + + for (final SpecMilestone ignoredMilestone : testSpecContext.ignoredMilestones()) { + milestones.remove(ignoredMilestone); } if (testSpecContext.allNetworks()) { diff --git a/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/generator/ChainBuilder.java b/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/generator/ChainBuilder.java index 5a8d94b5abd..ddd7272b5c6 100644 --- a/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/generator/ChainBuilder.java +++ b/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/generator/ChainBuilder.java @@ -41,9 +41,9 @@ import tech.pegasys.teku.infrastructure.async.SyncAsyncRunner; import tech.pegasys.teku.infrastructure.ssz.SszList; import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.kzg.KZG; import tech.pegasys.teku.kzg.KZGCommitment; import tech.pegasys.teku.kzg.KZGProof; +import tech.pegasys.teku.kzg.NoOpKZG; import tech.pegasys.teku.spec.Spec; import tech.pegasys.teku.spec.SpecMilestone; import tech.pegasys.teku.spec.datastructures.blobs.versions.deneb.Blob; @@ -111,7 +111,7 @@ private ChainBuilder( final Optional maybeEarliestBlobSidecarSlot) { this.spec = spec; this.validatorKeys = validatorKeys; - this.blobsUtil = new BlobsUtil(spec, KZG.NOOP); + this.blobsUtil = new BlobsUtil(spec, NoOpKZG.INSTANCE); this.attestationGenerator = new AttestationGenerator(spec, validatorKeys); this.attesterSlashingGenerator = new AttesterSlashingGenerator(spec, validatorKeys); this.proposerSlashingGenerator = new ProposerSlashingGenerator(spec, validatorKeys); diff --git a/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/util/DataStructureUtil.java b/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/util/DataStructureUtil.java index edb72b7cade..9644ab621ec 100644 --- a/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/util/DataStructureUtil.java +++ b/ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/util/DataStructureUtil.java @@ -2163,6 +2163,12 @@ public Withdrawal randomWithdrawal() { .create(randomUInt64(), randomValidatorIndex(), randomBytes20(), randomUInt64()); } + public Withdrawal randomWithdrawal(final UInt64 validatorIndex, final UInt64 amount) { + return getCapellaSchemaDefinitions(randomSlot()) + .getWithdrawalSchema() + .create(randomUInt64(), validatorIndex, randomBytes20(), amount); + } + public DepositRequest randomDepositRequestWithValidSignature(final UInt64 index) { final BLSKeyPair keyPair = randomKeyPair(); final DepositMessage depositMessage = diff --git a/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/AggregatingAttestationPool.java b/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/AggregatingAttestationPool.java index 53d50c5bb56..2998fa4eef6 100644 --- a/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/AggregatingAttestationPool.java +++ b/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/AggregatingAttestationPool.java @@ -354,10 +354,11 @@ private boolean isValid( return spec.validateAttestation(stateAtBlockSlot, attestationData).isEmpty(); } - public synchronized Optional createAggregateFor( + public synchronized Optional createAggregateFor( final Bytes32 attestationHashTreeRoot, final Optional committeeIndex) { return Optional.ofNullable(attestationGroupByDataHash.get(attestationHashTreeRoot)) - .flatMap(attestations -> attestations.stream(committeeIndex).findFirst()); + .flatMap(attestations -> attestations.stream(committeeIndex).findFirst()) + .map(ValidatableAttestation::getAttestation); } public synchronized void onReorg(final UInt64 commonAncestorSlot) { diff --git a/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregator.java b/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregator.java index d51567aa197..423c3744de5 100644 --- a/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregator.java +++ b/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregator.java @@ -79,11 +79,5 @@ static AttestationBitsAggregator of( boolean requiresCommitteeBits(); /** Creates an independent copy of this instance */ - default AttestationBitsAggregator copy() { - if (requiresCommitteeBits()) { - return new AttestationBitsAggregatorElectra( - getAggregationBits(), getCommitteeBits(), getCommitteesSize()); - } - return new AttestationBitsAggregatorPhase0(getAggregationBits()); - } + AttestationBitsAggregator copy(); } diff --git a/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregatorElectra.java b/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregatorElectra.java index 361b12caa40..a4b7c6d2893 100644 --- a/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregatorElectra.java +++ b/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregatorElectra.java @@ -15,229 +15,276 @@ import com.google.common.base.MoreObjects; import it.unimi.dsi.fastutil.ints.Int2IntMap; -import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import java.util.ArrayList; import java.util.BitSet; -import java.util.stream.IntStream; +import java.util.List; +import java.util.Objects; import tech.pegasys.teku.infrastructure.ssz.collections.SszBitlist; import tech.pegasys.teku.infrastructure.ssz.collections.SszBitvector; +import tech.pegasys.teku.infrastructure.ssz.schema.collections.SszBitlistSchema; +import tech.pegasys.teku.infrastructure.ssz.schema.collections.SszBitvectorSchema; import tech.pegasys.teku.spec.datastructures.operations.Attestation; import tech.pegasys.teku.spec.datastructures.operations.AttestationSchema; class AttestationBitsAggregatorElectra implements AttestationBitsAggregator { - private SszBitlist aggregationBits; - private SszBitvector committeeBits; - private Int2IntMap committeeBitsStartingPositions; + + private final SszBitlistSchema aggregationBitsSchema; + private final SszBitvectorSchema committeeBitsSchema; private final Int2IntMap committeesSize; + private Int2ObjectMap committeeAggregationBitsMap; + private BitSet committeeBits; + + private SszBitlist cachedAggregationBits = null; + private SszBitvector cachedCommitteeBits = null; + AttestationBitsAggregatorElectra( - final SszBitlist aggregationBits, - final SszBitvector committeeBits, + final SszBitlist initialAggregationBits, + final SszBitvector initialCommitteeBits, final Int2IntMap committeesSize) { - this.aggregationBits = aggregationBits; + this.aggregationBitsSchema = initialAggregationBits.getSchema(); + this.committeeBitsSchema = initialCommitteeBits.getSchema(); + this.committeesSize = Objects.requireNonNull(committeesSize, "committeesSize cannot be null"); + this.committeeBits = initialCommitteeBits.getAsBitSet(); + this.committeeAggregationBitsMap = + parseAggregationBits(initialAggregationBits, this.committeeBits, this.committeesSize); + } + + private AttestationBitsAggregatorElectra( + final SszBitlistSchema aggregationBitsSchema, + final SszBitvectorSchema committeeBitsSchema, + final Int2IntMap committeesSize, + final Int2ObjectMap committeeAggregationBitsMap, + final BitSet committeeBits) { + this.aggregationBitsSchema = aggregationBitsSchema; + this.committeeBitsSchema = committeeBitsSchema; + this.committeesSize = Objects.requireNonNull(committeesSize, "committeesSize cannot be null"); this.committeeBits = committeeBits; - this.committeesSize = committeesSize; - this.committeeBitsStartingPositions = calculateCommitteeStartingPositions(committeeBits); + this.committeeAggregationBitsMap = committeeAggregationBitsMap; } static AttestationBitsAggregator fromAttestationSchema( final AttestationSchema attestationSchema, final Int2IntMap committeesSize) { + final SszBitlist emptyAggregationBits = attestationSchema.createEmptyAggregationBits(); + final SszBitvector emptyCommitteeBits = + attestationSchema + .createEmptyCommitteeBits() + .orElseThrow( + () -> new IllegalStateException("Electra schema must provide committee bits")); return new AttestationBitsAggregatorElectra( - attestationSchema.createEmptyAggregationBits(), - attestationSchema.createEmptyCommitteeBits().orElseThrow(), - committeesSize); + emptyAggregationBits, emptyCommitteeBits, committeesSize); + } + + private static Int2ObjectMap parseAggregationBits( + final SszBitlist aggregationBits, + final BitSet committeeIndices, + final Int2IntMap committeesSizeMap) { + final Int2ObjectMap result = new Int2ObjectOpenHashMap<>(); + + int currentOffset = 0; + for (int committeeIndex = committeeIndices.nextSetBit(0); + committeeIndex >= 0; + committeeIndex = committeeIndices.nextSetBit(committeeIndex + 1)) { + + final int committeeSize = committeesSizeMap.getOrDefault(committeeIndex, 0); + if (committeeSize == 0) { + throw new IllegalArgumentException( + "Committee size for committee " + committeeIndex + " not found"); + } + final BitSet committeeBits = + aggregationBits.getAsBitSet(currentOffset, currentOffset + committeeSize); + result.put(committeeIndex, committeeBits); + currentOffset += committeeSize; + } + return result; } @Override public void or(final AttestationBitsAggregator other) { - or(other.getCommitteeBits(), other.getAggregationBits(), false); + if (!(other instanceof AttestationBitsAggregatorElectra otherElectra)) { + throw new IllegalArgumentException( + "AttestationBitsAggregatorElectra.or requires an argument of the same type."); + } + + performMerge(otherElectra.committeeBits, otherElectra.committeeAggregationBitsMap, false); } @Override public boolean aggregateWith(final Attestation other) { - return or(other.getCommitteeBitsRequired(), other.getAggregationBits(), true); + final BitSet otherCommitteeBits = other.getCommitteeBitsRequired().getAsBitSet(); + final Int2ObjectMap otherParsedAggregationMap = + parseAggregationBits(other.getAggregationBits(), otherCommitteeBits, this.committeesSize); + return performMerge(otherCommitteeBits, otherParsedAggregationMap, true); } @Override public void or(final Attestation other) { - or(other.getCommitteeBitsRequired(), other.getAggregationBits(), false); + final BitSet otherCommitteeBits = other.getCommitteeBitsRequired().getAsBitSet(); + final Int2ObjectMap otherParsedAggregationMap = + parseAggregationBits(other.getAggregationBits(), otherCommitteeBits, this.committeesSize); + performMerge(otherCommitteeBits, otherParsedAggregationMap, false); } - private static class CannotAggregateException extends RuntimeException {} + private static Int2ObjectMap cloneCommitteeAggregationBitsMap( + final Int2ObjectMap committeeAggregationBitsMap) { + final Int2ObjectMap clonedMap = new Int2ObjectOpenHashMap<>(); + for (final Int2ObjectMap.Entry entry : + committeeAggregationBitsMap.int2ObjectEntrySet()) { + clonedMap.put(entry.getIntKey(), (BitSet) entry.getValue().clone()); + } + return clonedMap; + } - private boolean or( - final SszBitvector otherCommitteeBits, - final SszBitlist otherAggregatedBits, + private boolean performMerge( + final BitSet otherCommitteeBits, + final Int2ObjectMap otherCommitteeAggregationBitsMap, final boolean isAggregation) { + final BitSet mergedCommitteeBits = (BitSet) this.committeeBits.clone(); + mergedCommitteeBits.or(otherCommitteeBits); - if (otherCommitteeBits.equals(committeeBits)) { - // If the committee bits are the same, we can directly combine the aggregation bits - if (isAggregation && aggregationBits.intersects(otherAggregatedBits)) { - return false; - } - aggregationBits = aggregationBits.or(otherAggregatedBits); - return true; - } + final Int2ObjectMap targetAggregationBitsMap; - final SszBitvector combinedCommitteeBits = committeeBits.or(otherCommitteeBits); - - final Int2IntMap otherCommitteeBitsStartingPositions = - calculateCommitteeStartingPositions(otherCommitteeBits); - final Int2IntMap aggregatedCommitteeBitsStartingPositions = - calculateCommitteeStartingPositions(combinedCommitteeBits); - - // create an aggregation bit big as last boundary for last committee bit - final int lastCommitteeIndex = combinedCommitteeBits.getLastSetBitIndex(); - final int lastCommitteeStartingPosition = - aggregatedCommitteeBitsStartingPositions.get(lastCommitteeIndex); - final int combinedAggregationBitsSize = - lastCommitteeStartingPosition + committeesSize.get(lastCommitteeIndex); - - final BitSet combinedAggregationIndices = new BitSet(combinedAggregationBitsSize); - - // let's go over all aggregated committees to calculate indices for the combined aggregation - // bits - try { - combinedCommitteeBits - .streamAllSetBits() - .forEach( - committeeIndex -> { - int committeeSize = committeesSize.get(committeeIndex); - int destinationStart = aggregatedCommitteeBitsStartingPositions.get(committeeIndex); - - SszBitlist source1 = null, maybeSource2 = null; - int source1StartingPosition = 0, source2StartingPosition = 0; - - if (committeeBitsStartingPositions.containsKey(committeeIndex)) { - source1 = aggregationBits; - source1StartingPosition = committeeBitsStartingPositions.get(committeeIndex); - } - if (otherCommitteeBitsStartingPositions.containsKey(committeeIndex)) { - if (source1 != null) { - maybeSource2 = otherAggregatedBits; - source2StartingPosition = - otherCommitteeBitsStartingPositions.get(committeeIndex); - } else { - source1 = otherAggregatedBits; - source1StartingPosition = - otherCommitteeBitsStartingPositions.get(committeeIndex); - } - } - - // Now that we know: - // 1. which aggregationBits (this or other or both) will contribute to the result - // 2. the offset of the committee for each contributing aggregation bits - // We can go over the committee and calculate the combined aggregate bits - for (int positionInCommittee = 0; - positionInCommittee < committeeSize; - positionInCommittee++) { - if (orSingleBit( - positionInCommittee, - source1, - source1StartingPosition, - maybeSource2, - source2StartingPosition, - isAggregation)) { - combinedAggregationIndices.set(destinationStart + positionInCommittee); - } - } - }); - } catch (final CannotAggregateException __) { - return false; + if (isAggregation) { + // If aggregating, we need to work on copies + targetAggregationBitsMap = cloneCommitteeAggregationBitsMap(this.committeeAggregationBitsMap); + } else { + // if not aggregating, we can modify in place + targetAggregationBitsMap = this.committeeAggregationBitsMap; } - committeeBits = combinedCommitteeBits; - aggregationBits = - aggregationBits - .getSchema() - .wrapBitSet(combinedAggregationBitsSize, combinedAggregationIndices); - committeeBitsStartingPositions = aggregatedCommitteeBitsStartingPositions; + for (int committeeIndex = mergedCommitteeBits.nextSetBit(0); + committeeIndex >= 0; + committeeIndex = mergedCommitteeBits.nextSetBit(committeeIndex + 1)) { - return true; - } + final boolean inThis = this.committeeBits.get(committeeIndex); + final boolean inOther = otherCommitteeBits.get(committeeIndex); - private boolean orSingleBit( - final int positionInCommittee, - final SszBitlist source1, - final int source1StartingPosition, - final SszBitlist maybeSource2, - final int source2StartingPosition, - final boolean isAggregation) { + if (inThis && inOther) { + final BitSet otherAggregationBitsForCommittee = + otherCommitteeAggregationBitsMap.get(committeeIndex); + final BitSet targetAggregationBitsForCommittee = + targetAggregationBitsMap.get(committeeIndex); - final boolean source1Bit = source1.getBit(source1StartingPosition + positionInCommittee); + if (isAggregation) { + // For intersection check, use the original bits of 'this' + final BitSet thisAggregationBitsForCommittee = + this.committeeAggregationBitsMap.get(committeeIndex); + if (thisAggregationBitsForCommittee != null + && thisAggregationBitsForCommittee.intersects(otherAggregationBitsForCommittee)) { + return false; + } + } - if (maybeSource2 == null) { - return source1Bit; - } + targetAggregationBitsForCommittee.or(otherAggregationBitsForCommittee); - final boolean source2Bit = maybeSource2.getBit(source2StartingPosition + positionInCommittee); + } else if (inOther) { + // Committee only in 'other'. + final BitSet otherDataForCommittee = otherCommitteeAggregationBitsMap.get(committeeIndex); - if (isAggregation && source1Bit && source2Bit) { - throw new CannotAggregateException(); + targetAggregationBitsMap.put(committeeIndex, (BitSet) otherDataForCommittee.clone()); + } + // Committee only in 'this', do nothing. } - return source1Bit || source2Bit; - } + this.committeeBits = mergedCommitteeBits; + if (isAggregation) { + this.committeeAggregationBitsMap = targetAggregationBitsMap; + } - private Int2IntMap calculateCommitteeStartingPositions(final SszBitvector committeeBits) { - final Int2IntMap committeeBitsStartingPositions = new Int2IntOpenHashMap(); - final int[] currentOffset = {0}; - committeeBits - .streamAllSetBits() - .forEach( - index -> { - committeeBitsStartingPositions.put(index, currentOffset[0]); - currentOffset[0] += committeesSize.get(index); - }); - - return committeeBitsStartingPositions; + invalidateCache(); + return true; } @Override public boolean isSuperSetOf(final Attestation other) { - if (committeeBits.equals(other.getCommitteeBitsRequired())) { - return aggregationBits.isSuperSetOf(other.getAggregationBits()); - } + final BitSet otherInternalCommitteeBits = other.getCommitteeBitsRequired().getAsBitSet(); - if (!committeeBits.isSuperSetOf(other.getCommitteeBitsRequired())) { + final BitSet committeeIntersection = (BitSet) this.committeeBits.clone(); + committeeIntersection.and(otherInternalCommitteeBits); + if (!committeeIntersection.equals(otherInternalCommitteeBits)) { return false; } - final SszBitvector otherCommitteeBits = other.getCommitteeBitsRequired(); + final Int2ObjectMap otherCommitteeAggregationBitsMap = + parseAggregationBits( + other.getAggregationBits(), otherInternalCommitteeBits, this.committeesSize); - final Int2IntMap otherCommitteeBitsStartingPositions = - calculateCommitteeStartingPositions(otherCommitteeBits); + for (int committeeIndex = otherInternalCommitteeBits.nextSetBit(0); + committeeIndex >= 0; + committeeIndex = otherInternalCommitteeBits.nextSetBit(committeeIndex + 1)) { - final SszBitvector commonCommittees = committeeBits.and(otherCommitteeBits); + final BitSet thisAggregationBitsForCommittee = + this.committeeAggregationBitsMap.get(committeeIndex); + final BitSet otherAggregationBitsForCommittee = + otherCommitteeAggregationBitsMap.get(committeeIndex); - return commonCommittees - .streamAllSetBits() - .mapToObj( - committeeIndex -> { - int committeeSize = committeesSize.get(committeeIndex); - - final int startingPosition = committeeBitsStartingPositions.get(committeeIndex); - final int otherStartingPosition = - otherCommitteeBitsStartingPositions.get(committeeIndex); + if (thisAggregationBitsForCommittee == null) { + return false; + } + if (otherAggregationBitsForCommittee == null || otherAggregationBitsForCommittee.isEmpty()) { + continue; + } - return IntStream.range(0, committeeSize) - .anyMatch( - positionInCommittee -> - other - .getAggregationBits() - .getBit(otherStartingPosition + positionInCommittee) - && !aggregationBits.getBit(startingPosition + positionInCommittee)); - }) - .noneMatch(aBitFoundInOtherButNotInThis -> aBitFoundInOtherButNotInThis); + final BitSet otherBitsNotInThis = (BitSet) otherAggregationBitsForCommittee.clone(); + otherBitsNotInThis.andNot(thisAggregationBitsForCommittee); + if (!otherBitsNotInThis.isEmpty()) { + return false; + } + } + return true; } @Override public SszBitlist getAggregationBits() { - return aggregationBits; + if (cachedAggregationBits != null) { + return cachedAggregationBits; + } + final List committeeIndicesInOrder = new ArrayList<>(); + for (int i = committeeBits.nextSetBit(0); i >= 0; i = committeeBits.nextSetBit(i + 1)) { + committeeIndicesInOrder.add(i); + } + // No explicit sort needed as BitSet.nextSetBit() iterates in ascending order. + + int totalBitlistSize = 0; + for (final int committeeIndex : committeeIndicesInOrder) { + totalBitlistSize += this.committeesSize.getOrDefault(committeeIndex, 0); + } + + final BitSet combinedAggregationBits = new BitSet(totalBitlistSize); + int currentOffset = 0; + for (final int committeeIndex : committeeIndicesInOrder) { + final BitSet committeeBitsData = this.committeeAggregationBitsMap.get(committeeIndex); + final int committeeSize = this.committeesSize.getOrDefault(committeeIndex, 0); + + if (committeeBitsData != null && committeeSize > 0) { + for (int bitIndex = committeeBitsData.nextSetBit(0); + bitIndex >= 0 && bitIndex < committeeSize; + bitIndex = committeeBitsData.nextSetBit(bitIndex + 1)) { + combinedAggregationBits.set(currentOffset + bitIndex); + } + } + currentOffset += committeeSize; + } + cachedAggregationBits = + aggregationBitsSchema.wrapBitSet(totalBitlistSize, combinedAggregationBits); + return cachedAggregationBits; } @Override public SszBitvector getCommitteeBits() { - return committeeBits; + if (cachedCommitteeBits == null) { + cachedCommitteeBits = + committeeBitsSchema.wrapBitSet( + committeeBitsSchema.getLength(), (BitSet) this.committeeBits.clone()); + } + return cachedCommitteeBits; + } + + private void invalidateCache() { + this.cachedAggregationBits = null; + this.cachedCommitteeBits = null; } @Override @@ -250,13 +297,31 @@ public boolean requiresCommitteeBits() { return true; } + @Override + public AttestationBitsAggregator copy() { + return new AttestationBitsAggregatorElectra( + aggregationBitsSchema, + committeeBitsSchema, + committeesSize, + cloneCommitteeAggregationBitsMap(committeeAggregationBitsMap), + (BitSet) committeeBits.clone()); + } + @Override public String toString() { + long totalSetBits = 0; + if (committeeAggregationBitsMap != null) { + for (final BitSet bitSet : committeeAggregationBitsMap.values()) { + if (bitSet != null) { + totalSetBits += bitSet.cardinality(); + } + } + } return MoreObjects.toStringHelper(this) - .add("aggregationBits", aggregationBits) - .add("committeeBits", committeeBits) - .add("committeesSize", committeesSize) - .add("committeeBitsStartingPositions", committeeBitsStartingPositions) + .add("committeeBits", committeeBits.cardinality()) + .add("committeeAggregationBitsMap", totalSetBits) + .add("committeesSize", committeesSize.size()) + .add("cached", cachedAggregationBits != null || cachedCommitteeBits != null) .toString(); } } diff --git a/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregatorPhase0.java b/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregatorPhase0.java index 65acd1e3aef..87b9ec1d135 100644 --- a/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregatorPhase0.java +++ b/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregatorPhase0.java @@ -80,6 +80,11 @@ public boolean requiresCommitteeBits() { return false; } + @Override + public AttestationBitsAggregator copy() { + return new AttestationBitsAggregatorPhase0(aggregationBits); + } + @Override public String toString() { return MoreObjects.toStringHelper(this).add("aggregationBits", aggregationBits).toString(); diff --git a/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/datacolumns/retriever/DataColumnReqRespBatchingImpl.java b/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/datacolumns/retriever/DataColumnReqRespBatchingImpl.java index 1856ceb9fb0..2431dfcb5f5 100644 --- a/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/datacolumns/retriever/DataColumnReqRespBatchingImpl.java +++ b/ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/datacolumns/retriever/DataColumnReqRespBatchingImpl.java @@ -81,7 +81,7 @@ private void flushForNode(final UInt256 nodeId, final List nodeReq entry -> byRootIdentifierSchema.create( entry.getKey(), - entry.getValue().stream().map(DataColumnIdentifier::columnId).toList())) + entry.getValue().stream().map(DataColumnIdentifier::columnIndex).toList())) .toList(); final AsyncStream response = batchRpc.requestDataColumnSidecarsByRoot(nodeId, dataColumnsByRootIdentifiers); diff --git a/ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/attestation/AggregatingAttestationPoolTest.java b/ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/attestation/AggregatingAttestationPoolTest.java index 897331c42a2..6288d870748 100644 --- a/ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/attestation/AggregatingAttestationPoolTest.java +++ b/ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/attestation/AggregatingAttestationPoolTest.java @@ -124,7 +124,7 @@ public void setUp(final SpecContext specContext) { @TestTemplate public void createAggregateFor_shouldReturnEmptyWhenNoAttestationsMatchGivenData() { - final Optional result = + final Optional result = aggregatingPool.createAggregateFor( dataStructureUtil.randomAttestationData().hashTreeRoot(), committeeIndex); assertThat(result).isEmpty(); @@ -136,10 +136,9 @@ public void createAggregateFor_shouldAggregateAttestationsWithMatchingData() { final Attestation attestation1 = addAttestationFromValidators(attestationData, 1, 3, 5); final Attestation attestation2 = addAttestationFromValidators(attestationData, 2, 4, 6); - final Optional result = + final Optional result = aggregatingPool.createAggregateFor(attestationData.hashTreeRoot(), committeeIndex); - assertThat(result.map(ValidatableAttestation::getAttestation)) - .contains(aggregateAttestations(attestation1, attestation2)); + assertThat(result).contains(aggregateAttestations(attestation1, attestation2)); } @TestTemplate @@ -149,10 +148,9 @@ public void createAggregateFor_shouldReturnBestAggregateForMatchingDataWhenSomeO final Attestation attestation2 = addAttestationFromValidators(attestationData, 2, 4, 6, 8); addAttestationFromValidators(attestationData, 2, 3, 9); - final Optional result = + final Optional result = aggregatingPool.createAggregateFor(attestationData.hashTreeRoot(), committeeIndex); - assertThat(result.map(ValidatableAttestation::getAttestation)) - .contains(aggregateAttestations(attestation1, attestation2)); + assertThat(result).contains(aggregateAttestations(attestation1, attestation2)); } @TestTemplate diff --git a/ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregatorElectraTest.java b/ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregatorElectraTest.java index c3b6fc2174e..34009aae4f6 100644 --- a/ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregatorElectraTest.java +++ b/ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/attestation/utils/AttestationBitsAggregatorElectraTest.java @@ -18,6 +18,7 @@ import static org.mockito.Mockito.when; import it.unimi.dsi.fastutil.ints.Int2IntMap; +import it.unimi.dsi.fastutil.ints.Int2IntMap.Entry; import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; import java.util.List; import java.util.Optional; @@ -232,6 +233,34 @@ void aggregateOnMultipleOverlappingCommitteeBitsButWithSomeOfAggregationOverlapp assertThat(aggregator.getAggregationBits().streamAllSetBits()).containsExactly(0, 1, 2, 3, 8); } + @Test + void aggregateSingleAttestationFillUp() { + /* + 01|234 <- committee 0 and 1 indices + 10|100 <- bits + */ + final ValidatableAttestation initialAttestation = createAttestation(List.of(0, 1), 0, 2); + + /* + 123 <- committee 1 indices + 001 <- bits + */ + final ValidatableAttestation otherAttestation = createAttestation(List.of(1), 2); + + final AttestationBitsAggregator aggregator = AttestationBitsAggregator.of(initialAttestation); + + // calculate the or + aggregator.or(otherAttestation.getAttestation()); + + /* + 01|234 <- committee 0 and 1 indices + 10|101 <- bits + */ + + assertThat(aggregator.getCommitteeBits().streamAllSetBits()).containsExactly(0, 1); + assertThat(aggregator.getAggregationBits().streamAllSetBits()).containsExactly(0, 2, 4); + } + @Test void aggregateOnMultipleOverlappingCommitteeBitsButWithSomeOfAggregationOverlappingWhenNoCheck2() { @@ -393,6 +422,107 @@ void bigAggregation() { .isEqualTo(result.getAttestation().getAggregationBits()); } + @Test + void orIntoEmptyAggregator() { + final AttestationBitsAggregator aggregator = + AttestationBitsAggregator.fromEmptyFromAttestationSchema( + attestationSchema, Optional.of(committeeSizes)); + + final ValidatableAttestation otherAttestation = createAttestation(List.of(1), 2); + + aggregator.or(otherAttestation.getAttestation()); + + assertThat(aggregator.getCommitteeBits().streamAllSetBits()).containsExactly(1); + assertThat(aggregator.getAggregationBits().streamAllSetBits()).containsExactly(2); + } + + @Test + void orWithNewCommittee() { + final ValidatableAttestation initialAttestation = createAttestation(List.of(0), 1); + final AttestationBitsAggregator aggregator = AttestationBitsAggregator.of(initialAttestation); + + final ValidatableAttestation otherAttestation = createAttestation(List.of(1), 2); + + aggregator.or(otherAttestation.getAttestation()); + + assertThat(aggregator.getCommitteeBits().streamAllSetBits()).containsExactlyInAnyOrder(0, 1); + assertThat(aggregator.getAggregationBits().streamAllSetBits()).containsExactlyInAnyOrder(1, 4); + } + + @Test + void orWithExistingCommitteeAddNewBits() { + + final ValidatableAttestation initialAttestation = createAttestation(List.of(1), 0); + final AttestationBitsAggregator aggregator = AttestationBitsAggregator.of(initialAttestation); + + final ValidatableAttestation otherAttestation = createAttestation(List.of(1), 2); + + aggregator.or(otherAttestation.getAttestation()); + + assertThat(aggregator.getCommitteeBits().streamAllSetBits()).containsExactly(1); + assertThat(aggregator.getAggregationBits().streamAllSetBits()).containsExactlyInAnyOrder(0, 2); + } + + @Test + void orWithExistingCommitteeOverlapAndNewBits() { + final ValidatableAttestation initialAttestation = createAttestation(List.of(1), 0, 1); + final AttestationBitsAggregator aggregator = AttestationBitsAggregator.of(initialAttestation); + + final ValidatableAttestation otherAttestation = createAttestation(List.of(1), 1, 2); + + aggregator.or(otherAttestation.getAttestation()); + + assertThat(aggregator.getCommitteeBits().streamAllSetBits()).containsExactly(1); + assertThat(aggregator.getAggregationBits().streamAllSetBits()) + .containsExactlyInAnyOrder(0, 1, 2); + } + + @Test + void orWithStrictSubsetAttestation() { + final ValidatableAttestation initialAttestation = createAttestation(List.of(1), 0, 2); + final AttestationBitsAggregator aggregator = AttestationBitsAggregator.of(initialAttestation); + + final ValidatableAttestation otherAttestation = createAttestation(List.of(1), 0); + + aggregator.or(otherAttestation.getAttestation()); + + assertThat(aggregator.getCommitteeBits().streamAllSetBits()).containsExactly(1); + assertThat(aggregator.getAggregationBits().streamAllSetBits()).containsExactlyInAnyOrder(0, 2); + } + + @Test + void orWithMultipleCommitteesMixedNewAndExisting() { + final ValidatableAttestation initialAttestation = createAttestation(List.of(0, 1), 0, 3); + final AttestationBitsAggregator aggregator = AttestationBitsAggregator.of(initialAttestation); + + final ValidatableAttestation otherAttestation = createAttestation(List.of(1, 2), 2, 5); + + aggregator.or(otherAttestation.getAttestation()); + + assertThat(aggregator.getCommitteeBits().streamAllSetBits()).containsExactlyInAnyOrder(0, 1, 2); + assertThat(aggregator.getAggregationBits().streamAllSetBits()) + .containsExactlyInAnyOrder(0, 3, 4, 7); + } + + @Test + void orAggregatorWithAggregator() { + final ValidatableAttestation att1Data = createAttestation(List.of(0), 0); + final AttestationBitsAggregator aggregator1 = AttestationBitsAggregator.of(att1Data); + + final ValidatableAttestation att2Data = createAttestation(List.of(0, 1), 1, 2); + final AttestationBitsAggregator aggregator2 = AttestationBitsAggregator.of(att2Data); + + aggregator1.or(aggregator2); + + assertThat(aggregator1.getCommitteeBits().streamAllSetBits()).containsExactlyInAnyOrder(0, 1); + assertThat(aggregator1.getAggregationBits().streamAllSetBits()) + .containsExactlyInAnyOrder(0, 1, 2); + + // aggregator2 should remain unchanged + assertThat(aggregator2.getCommitteeBits().streamAllSetBits()).containsExactlyInAnyOrder(0, 1); + assertThat(aggregator2.getAggregationBits().streamAllSetBits()).containsExactlyInAnyOrder(1, 2); + } + @Test void isSuperSetOf1() { @@ -514,6 +644,55 @@ void isSuperSetOf6() { assertThat(aggregator.isSuperSetOf(otherAttestation.getAttestation())).isTrue(); } + @Test + void getAggregationBits_shouldBeConsistent_singleCommittee() { + final ValidatableAttestation initialAttestation = createAttestation(List.of(0), 0); + final AttestationBitsAggregator aggregator = AttestationBitsAggregator.of(initialAttestation); + + assertThat(aggregator.getAggregationBits().size()).isEqualTo(committeeSizes.get(0)); + + assertThat(aggregator.getAggregationBits()) + .isEqualTo(initialAttestation.getAttestation().getAggregationBits()); + } + + @Test + void getAggregationBits_shouldBeConsistent_multiCommittee() { + final ValidatableAttestation initialAttestation = createAttestation(List.of(0, 1), 0, 3); + final AttestationBitsAggregator aggregator = AttestationBitsAggregator.of(initialAttestation); + + assertThat(aggregator.getAggregationBits().size()) + .isEqualTo(committeeSizes.get(0) + committeeSizes.get(1)); + + assertThat(aggregator.getAggregationBits()) + .isEqualTo(initialAttestation.getAttestation().getAggregationBits()); + } + + @Test + void copy_shouldNotModifyOriginal() { + final ValidatableAttestation initialAttestation = createAttestation(List.of(0), 0); + final AttestationBitsAggregator aggregator = AttestationBitsAggregator.of(initialAttestation); + + // check aggregator is initialized correctly + assertThat(aggregator.getCommitteeBits()) + .isEqualTo(initialAttestation.getAttestation().getCommitteeBitsRequired()); + assertThat(aggregator.getAggregationBits()) + .isEqualTo(initialAttestation.getAttestation().getAggregationBits()); + + final AttestationBitsAggregator copy = aggregator.copy(); + + assertThat(copy.getCommitteeBits()).isEqualTo(aggregator.getCommitteeBits()); + assertThat(copy.getAggregationBits()).isEqualTo(aggregator.getAggregationBits()); + assertThat(copy).isNotSameAs(aggregator); + + assertThat(copy.aggregateWith(createAttestation(List.of(1), 1).getAttestation())).isTrue(); + + // the original should not be modified + assertThat(aggregator.getCommitteeBits()) + .isEqualTo(initialAttestation.getAttestation().getCommitteeBitsRequired()); + assertThat(aggregator.getAggregationBits()) + .isEqualTo(initialAttestation.getAttestation().getAggregationBits()); + } + private ValidatableAttestation createAttestation(final String commBits, final String aggBits) { assertThat(commBits).matches(Pattern.compile("^[0-1]+$")); assertThat(aggBits).matches(Pattern.compile("^[0-1]+$")); @@ -535,7 +714,12 @@ private ValidatableAttestation createAttestation( final SszBitlist aggregationBits = attestationSchema .getAggregationBitsSchema() - .ofBits(committeeSizes.values().intStream().sum(), validators); + .ofBits( + committeeSizes.int2IntEntrySet().stream() + .filter(entry -> committeeIndices.contains(entry.getIntKey())) + .mapToInt(Entry::getIntValue) + .sum(), + validators); final Supplier committeeBits = () -> attestationSchema.getCommitteeBitsSchema().orElseThrow().ofBits(committeeIndices); diff --git a/ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/datacolumns/DataColumnSidecarRecoveryCustodyTest.java b/ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/datacolumns/DataColumnSidecarRecoveryCustodyTest.java index 2ecd2a5bfe6..5ddc1b53262 100644 --- a/ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/datacolumns/DataColumnSidecarRecoveryCustodyTest.java +++ b/ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/datacolumns/DataColumnSidecarRecoveryCustodyTest.java @@ -39,7 +39,7 @@ import tech.pegasys.teku.infrastructure.metrics.StubMetricsSystem; import tech.pegasys.teku.infrastructure.time.StubTimeProvider; import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.kzg.KZG; +import tech.pegasys.teku.kzg.NoOpKZG; import tech.pegasys.teku.spec.Spec; import tech.pegasys.teku.spec.SpecMilestone; import tech.pegasys.teku.spec.TestSpecFactory; @@ -93,7 +93,7 @@ public class DataColumnSidecarRecoveryCustodyTest { stubAsyncRunner, spec, miscHelpersFulu, - KZG.NOOP, + NoOpKZG.INSTANCE, dataColumnSidecarPublisher, createCustodyGroupCountManager(config.getNumberOfCustodyGroups()), config.getNumberOfColumns(), @@ -117,7 +117,7 @@ public void shouldNotWorkUntilFulu() { stubAsyncRunner, spec, miscHelpersFulu, - KZG.NOOP, + NoOpKZG.INSTANCE, dataColumnSidecarPublisher, createCustodyGroupCountManager(config.getNumberOfCustodyGroups()), config.getNumberOfColumns(), @@ -138,7 +138,7 @@ public void shouldNotWorkOnNonSupernode() { stubAsyncRunner, spec, miscHelpersFulu, - KZG.NOOP, + NoOpKZG.INSTANCE, dataColumnSidecarPublisher, CustodyGroupCountManager.NOOP, config.getNumberOfColumns(), diff --git a/fork-choice-tests/src/integration-test/java/tech/pegasys/teku/forkChoiceTests/ForkChoiceIntegrationTest.java b/fork-choice-tests/src/integration-test/java/tech/pegasys/teku/forkChoiceTests/ForkChoiceIntegrationTest.java index b4094bb32ab..bacc83eeaff 100644 --- a/fork-choice-tests/src/integration-test/java/tech/pegasys/teku/forkChoiceTests/ForkChoiceIntegrationTest.java +++ b/fork-choice-tests/src/integration-test/java/tech/pegasys/teku/forkChoiceTests/ForkChoiceIntegrationTest.java @@ -113,34 +113,23 @@ private static Object extractTestStep( ForkChoiceTestStep stepKind = getStepKind(stepDescription); Object value = stepDescription.get(stepKind.name()); - switch (stepKind) { - case slot: - { - return UInt64.valueOf((Integer) value); - } - case block: - { - return resolvePart( + return switch (stepKind) { + case slot -> UInt64.valueOf((Integer) value); + case block -> + resolvePart( SignedBeaconBlock.class, SPEC.getGenesisSchemaDefinitions().getSignedBeaconBlockSchema(), file, value); - } - case attestation: - { - return resolvePart( + case attestation -> + resolvePart( Attestation.class, SPEC.getGenesisSchemaDefinitions().getAttestationSchema(), file, value); - } - case checks: - { - return value; - } - default: - throw new IllegalArgumentException("Unsupported step kind " + stepKind); - } + case checks -> value; + default -> throw new IllegalArgumentException("Unsupported step kind " + stepKind); + }; } private static ForkChoiceTestStep getStepKind(final Map ss) { diff --git a/fuzz/src/test/java/tech/pegasys/teku/fuzz/FuzzUtilTest.java b/fuzz/src/test/java/tech/pegasys/teku/fuzz/FuzzUtilTest.java index a30d62b77bd..4049218870c 100644 --- a/fuzz/src/test/java/tech/pegasys/teku/fuzz/FuzzUtilTest.java +++ b/fuzz/src/test/java/tech/pegasys/teku/fuzz/FuzzUtilTest.java @@ -69,6 +69,7 @@ class FuzzUtilTest { + // TODO-fulu Upgrade to use Fulu state/block etc. private final Spec spec = TestSpecFactory.createMinimalElectra(); private final SpecVersion specVersion = spec.forMilestone(SpecMilestone.ELECTRA); private final SchemaDefinitionsElectra schemaDefinitions = diff --git a/fuzz/src/test/resources/minimal/operations/block_header/pyspec_tests/basic_block_header/block.ssz_snappy b/fuzz/src/test/resources/minimal/operations/block_header/pyspec_tests/basic_block_header/block.ssz_snappy index 23ffce54797..ac8f65978f4 100644 Binary files a/fuzz/src/test/resources/minimal/operations/block_header/pyspec_tests/basic_block_header/block.ssz_snappy and b/fuzz/src/test/resources/minimal/operations/block_header/pyspec_tests/basic_block_header/block.ssz_snappy differ diff --git a/fuzz/src/test/resources/minimal/operations/block_header/pyspec_tests/basic_block_header/post.ssz_snappy b/fuzz/src/test/resources/minimal/operations/block_header/pyspec_tests/basic_block_header/post.ssz_snappy index 226231ba47d..cc98ac6748e 100644 Binary files a/fuzz/src/test/resources/minimal/operations/block_header/pyspec_tests/basic_block_header/post.ssz_snappy and b/fuzz/src/test/resources/minimal/operations/block_header/pyspec_tests/basic_block_header/post.ssz_snappy differ diff --git a/fuzz/src/test/resources/minimal/operations/block_header/pyspec_tests/basic_block_header/pre.ssz_snappy b/fuzz/src/test/resources/minimal/operations/block_header/pyspec_tests/basic_block_header/pre.ssz_snappy index 4a116a875d1..8ef6b9b70d5 100644 Binary files a/fuzz/src/test/resources/minimal/operations/block_header/pyspec_tests/basic_block_header/pre.ssz_snappy and b/fuzz/src/test/resources/minimal/operations/block_header/pyspec_tests/basic_block_header/pre.ssz_snappy differ diff --git a/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/blocks_0.ssz_snappy b/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/blocks_0.ssz_snappy index 6b81585492c..db1dff8ca55 100644 Binary files a/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/blocks_0.ssz_snappy and b/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/blocks_0.ssz_snappy differ diff --git a/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/blocks_1.ssz_snappy b/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/blocks_1.ssz_snappy index ad2e6ecb9df..e83dca163ba 100644 Binary files a/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/blocks_1.ssz_snappy and b/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/blocks_1.ssz_snappy differ diff --git a/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/post.ssz_snappy b/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/post.ssz_snappy index 4056455221d..eb42ded9270 100644 Binary files a/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/post.ssz_snappy and b/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/post.ssz_snappy differ diff --git a/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/pre.ssz_snappy b/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/pre.ssz_snappy index 0ba70bd394c..36cd48e5d19 100644 Binary files a/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/pre.ssz_snappy and b/fuzz/src/test/resources/minimal/sanity/blocks/pyspec_tests/attestation/pre.ssz_snappy differ diff --git a/gradle/versions.gradle b/gradle/versions.gradle index 127d80e233c..abcfa46bca0 100644 --- a/gradle/versions.gradle +++ b/gradle/versions.gradle @@ -1,11 +1,11 @@ dependencyManagement { dependencies { - dependency 'com.fasterxml.jackson.core:jackson-databind:2.18.2' - dependency 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.18.2' - dependency 'com.fasterxml.jackson.dataformat:jackson-dataformat-toml:2.18.2' - dependency 'com.fasterxml.jackson.module:jackson-module-kotlin:2.18.2' + dependency 'com.fasterxml.jackson.core:jackson-databind:2.19.0' + dependency 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.19.0' + dependency 'com.fasterxml.jackson.dataformat:jackson-dataformat-toml:2.19.0' + dependency 'com.fasterxml.jackson.module:jackson-module-kotlin:2.19.0' - dependencySet(group: 'com.google.errorprone', version: '2.36.0') { + dependencySet(group: 'com.google.errorprone', version: '2.37.0') { entry 'error_prone_annotation' entry 'error_prone_check_api' entry 'error_prone_core' @@ -16,7 +16,9 @@ dependencyManagement { dependency 'com.google.guava:guava:33.1.0-jre' - dependency 'org.jsoup:jsoup:1.18.3' + dependency 'org.yaml:snakeyaml:2.4' + + dependency 'org.jsoup:jsoup:1.20.1' dependency 'com.launchdarkly:okhttp-eventsource:4.1.1' @@ -25,9 +27,9 @@ dependencyManagement { entry 'mockwebserver' } - dependency 'info.picocli:picocli:4.7.6' + dependency 'info.picocli:picocli:4.7.7' - dependencySet(group: 'io.javalin', version: '6.4.0') { + dependencySet(group: 'io.javalin', version: '6.6.0') { entry 'javalin' entry 'javalin-rendering' } @@ -39,11 +41,11 @@ dependencyManagement { dependency 'org.hdrhistogram:HdrHistogram:2.2.2' - dependency 'org.jetbrains.kotlin:kotlin-stdlib:2.1.10' + dependency 'org.jetbrains.kotlin:kotlin-stdlib:2.1.20' dependency 'org.mock-server:mockserver-junit-jupiter:5.15.0' - dependencySet(group: 'io.swagger.core.v3', version: '2.2.28') { + dependencySet(group: 'io.swagger.core.v3', version: '2.2.30') { entry 'swagger-parser' entry 'swagger-core' entry 'swagger-models' @@ -51,27 +53,27 @@ dependencyManagement { } // On update don't forget to change version in tech.pegasys.teku.infrastructure.restapi.SwaggerUIBuilder - dependency 'org.webjars:swagger-ui:5.18.3' + dependency 'org.webjars:swagger-ui:5.21.0' dependency 'org.thymeleaf:thymeleaf:3.1.3.RELEASE' dependency 'io.github.classgraph:classgraph:4.8.179' - dependencySet(group: 'com.github.oshi', version: '6.6.6') { + dependencySet(group: 'com.github.oshi', version: '6.8.1') { entry 'oshi-core' entry 'oshi-core-java11' } - dependencySet(group: 'io.netty', version: '4.1.118.Final') { + dependencySet(group: 'io.netty', version: '4.2.0.Final') { entry 'netty-handler' entry 'netty-codec-http' } - dependencySet(group: 'io.vertx', version: '4.5.12') { + dependencySet(group: 'io.vertx', version: '4.5.14') { entry 'vertx-codegen' entry 'vertx-core' entry 'vertx-unit' entry 'vertx-web' } - dependency 'io.projectreactor:reactor-core:3.7.2' + dependency 'io.projectreactor:reactor-core:3.7.5' dependency 'it.unimi.dsi:fastutil:8.5.15' @@ -84,9 +86,9 @@ dependencyManagement { entry 'tuweni-units' } - dependency 'org.apache.commons:commons-text:1.13.0' + dependency 'org.apache.commons:commons-text:1.13.1' dependency 'org.apache.commons:commons-lang3:3.17.0' - dependency 'commons-io:commons-io:2.18.0' + dependency 'commons-io:commons-io:2.19.0' dependency 'org.commonjava.mimeparse:mimeparse:0.1.3.3' dependencySet(group: 'org.apache.logging.log4j', version: '2.24.3') { @@ -100,7 +102,7 @@ dependencyManagement { dependency 'org.assertj:assertj-core:3.27.3' - dependency 'org.awaitility:awaitility:4.2.2' + dependency 'org.awaitility:awaitility:4.3.0' dependencySet(group: 'org.bouncycastle', version: '1.80') { entry 'bcprov-jdk18on' @@ -113,7 +115,7 @@ dependencyManagement { entry 'junit-jupiter-params' } - dependency 'net.java.dev.jna:jna:5.16.0' + dependency 'net.java.dev.jna:jna:5.17.0' dependencySet(group: 'org.mockito', version: '5.15.2') { entry 'mockito-core' @@ -125,7 +127,7 @@ dependencyManagement { entry 'jmh-generator-annprocess' } dependency 'org.quartz-scheduler:quartz:2.5.0' - dependency 'org.rocksdb:rocksdbjni:9.10.0' + dependency 'org.rocksdb:rocksdbjni:10.0.1' dependency 'org.fusesource.leveldbjni:leveldbjni-win64:1.8' dependency 'org.fusesource.leveldbjni:leveldbjni-win32:1.8' dependency 'tech.pegasys:leveldb-native:0.3.1' @@ -141,12 +143,12 @@ dependencyManagement { dependency 'io.prometheus:prometheus-metrics-bom:1.3.5' - dependencySet(group: 'org.hyperledger.besu.internal', version: '25.3.0') { + dependencySet(group: 'org.hyperledger.besu.internal', version: '25.4.1') { entry('metrics-core') entry('core') entry('config') } - dependencySet(group: 'org.hyperledger.besu', version: '25.3.0') { + dependencySet(group: 'org.hyperledger.besu', version: '25.4.1') { entry('besu-datatypes') entry('evm') entry('plugin-api') @@ -159,7 +161,7 @@ dependencyManagement { // discovery includes tuweni libraries under a different name so version resolution doesn't work // exclude them here and leave them to be included on the classpath by the version we use - dependency('tech.pegasys.discovery:discovery:25.3.0') { + dependency('tech.pegasys.discovery:discovery:25.4.0') { exclude 'io.consensys.tuweni:bytes' exclude 'io.consensys.tuweni:crypto' exclude 'io.consensys.tuweni:units' diff --git a/infrastructure/async/src/main/java/tech/pegasys/teku/infrastructure/async/stream/AsyncStream.java b/infrastructure/async/src/main/java/tech/pegasys/teku/infrastructure/async/stream/AsyncStream.java index 5faff005d4a..a7881f19956 100644 --- a/infrastructure/async/src/main/java/tech/pegasys/teku/infrastructure/async/stream/AsyncStream.java +++ b/infrastructure/async/src/main/java/tech/pegasys/teku/infrastructure/async/stream/AsyncStream.java @@ -28,7 +28,7 @@ import java.util.stream.Stream; import tech.pegasys.teku.infrastructure.async.SafeFuture; -/** Similar to {@link java.util.stream.Stream} but may perform async operations */ +/** Similar to {@link Stream} but may perform async operations */ public interface AsyncStream extends AsyncStreamBase { static AsyncStream empty() { diff --git a/infrastructure/bls-keystore/src/main/java/tech/pegasys/teku/bls/keystore/KeyStoreLoader.java b/infrastructure/bls-keystore/src/main/java/tech/pegasys/teku/bls/keystore/KeyStoreLoader.java index 80045591a76..012d81f0695 100644 --- a/infrastructure/bls-keystore/src/main/java/tech/pegasys/teku/bls/keystore/KeyStoreLoader.java +++ b/infrastructure/bls-keystore/src/main/java/tech/pegasys/teku/bls/keystore/KeyStoreLoader.java @@ -93,14 +93,14 @@ public static KeyStoreData loadFromUrl(final URL keystoreFile) private static KeyStoreValidationException convertToKeyStoreValidationException( final JsonMappingException e) { final String cause; - if (e.getCause() instanceof KeyStoreValidationException) { + if (e.getCause() instanceof final KeyStoreValidationException keyStoreValidationException) { // this is wrapped because it is raised from custom deserializer in KeyStoreBytesModule to // validate enums - throw (KeyStoreValidationException) e.getCause(); + throw keyStoreValidationException; } - if (e instanceof InvalidTypeIdException) { - cause = getKdfFunctionErrorMessage((InvalidTypeIdException) e); + if (e instanceof final InvalidTypeIdException invalidTypeIdException) { + cause = getKdfFunctionErrorMessage(invalidTypeIdException); } else { cause = "Invalid KeyStore: " + e.getMessage(); } diff --git a/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/BLSPublicKey.java b/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/BLSPublicKey.java index 0ccf6660cba..fe792a3c412 100644 --- a/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/BLSPublicKey.java +++ b/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/BLSPublicKey.java @@ -173,12 +173,12 @@ public boolean equals(final Object obj) { return true; } - if (!(obj instanceof BLSPublicKey)) { + if (obj instanceof final BLSPublicKey other) { + + return Objects.equals(this.toBytesCompressed(), other.toBytesCompressed()); + } else { return false; } - - BLSPublicKey other = (BLSPublicKey) obj; - return Objects.equals(this.toBytesCompressed(), other.toBytesCompressed()); } @Override diff --git a/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/BLSSignature.java b/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/BLSSignature.java index 7e5cecd52ce..1d84687b00f 100644 --- a/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/BLSSignature.java +++ b/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/BLSSignature.java @@ -145,10 +145,10 @@ public boolean equals(final Object obj) { if (this == obj) { return true; } - if (!(obj instanceof BLSSignature)) { + if (obj instanceof final BLSSignature signature) { + return Objects.equals(toBytesCompressed(), signature.toBytesCompressed()); + } else { return false; } - BLSSignature other = (BLSSignature) obj; - return Objects.equals(toBytesCompressed(), other.toBytesCompressed()); } } diff --git a/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/impl/blst/BlstPublicKey.java b/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/impl/blst/BlstPublicKey.java index 48eeb778c64..5475e0b66c4 100644 --- a/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/impl/blst/BlstPublicKey.java +++ b/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/impl/blst/BlstPublicKey.java @@ -45,8 +45,8 @@ public static BlstPublicKey fromBytes(final Bytes48 compressed) { } static BlstPublicKey fromPublicKey(final PublicKey publicKey) { - if (publicKey instanceof BlstPublicKey) { - return (BlstPublicKey) publicKey; + if (publicKey instanceof final BlstPublicKey blstPublicKey) { + return blstPublicKey; } else { return fromBytes(publicKey.toBytesCompressed()); } @@ -122,11 +122,11 @@ public boolean equals(final Object o) { if (this == o) { return true; } - if (!(o instanceof PublicKey)) { + if (o instanceof PublicKey publicKey) { + return Objects.equals(toBytesCompressed(), publicKey.toBytesCompressed()); + } else { return false; } - - return Objects.equals(toBytesCompressed(), ((PublicKey) o).toBytesCompressed()); } @Override diff --git a/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/impl/blst/BlstSecretKey.java b/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/impl/blst/BlstSecretKey.java index 04b99bd3c8e..e3e74eb301e 100644 --- a/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/impl/blst/BlstSecretKey.java +++ b/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/impl/blst/BlstSecretKey.java @@ -97,9 +97,10 @@ public boolean equals(final Object o) { if (this == o) { return true; } - if (!(o instanceof SecretKey)) { + if (o instanceof final SecretKey secretKey) { + return Objects.equals(toBytes(), secretKey.toBytes()); + } else { return false; } - return Objects.equals(toBytes(), ((SecretKey) o).toBytes()); } } diff --git a/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/impl/blst/BlstSignature.java b/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/impl/blst/BlstSignature.java index 9bf06c97047..8b5f5124369 100644 --- a/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/impl/blst/BlstSignature.java +++ b/infrastructure/bls/src/main/java/tech/pegasys/teku/bls/impl/blst/BlstSignature.java @@ -47,8 +47,8 @@ public static BlstSignature fromBytes(final Bytes compressed) { } static BlstSignature fromSignature(final Signature signature) { - if (signature instanceof BlstSignature) { - return (BlstSignature) signature; + if (signature instanceof BlstSignature blstSignature) { + return blstSignature; } else { return fromBytes(signature.toBytesCompressed()); } @@ -158,9 +158,10 @@ public boolean equals(final Object o) { if (this == o) { return true; } - if (!(o instanceof Signature)) { + if (o instanceof final Signature signature) { + return Objects.equals(toBytesCompressed(), signature.toBytesCompressed()); + } else { return false; } - return Objects.equals(toBytesCompressed(), ((Signature) o).toBytesCompressed()); } } diff --git a/infrastructure/bytes/src/main/java/tech/pegasys/teku/infrastructure/bytes/Bytes20.java b/infrastructure/bytes/src/main/java/tech/pegasys/teku/infrastructure/bytes/Bytes20.java index 41950432574..42910b5dd8d 100644 --- a/infrastructure/bytes/src/main/java/tech/pegasys/teku/infrastructure/bytes/Bytes20.java +++ b/infrastructure/bytes/src/main/java/tech/pegasys/teku/infrastructure/bytes/Bytes20.java @@ -49,8 +49,8 @@ public String toHexString() { */ public static Bytes20 leftPad(final Bytes value) { checkNotNull(value); - if (value instanceof Bytes20) { - return (Bytes20) value; + if (value instanceof final Bytes20 bytes20) { + return bytes20; } checkArgument(value.size() <= SIZE, "Expected at most %s bytes but got %s", SIZE, value.size()); MutableBytes result = MutableBytes.create(SIZE); @@ -67,8 +67,8 @@ public static Bytes20 leftPad(final Bytes value) { */ public static Bytes20 rightPad(final Bytes value) { checkNotNull(value); - if (value instanceof Bytes20) { - return (Bytes20) value; + if (value instanceof final Bytes20 bytes20) { + return bytes20; } checkArgument(value.size() <= SIZE, "Expected at most %s bytes but got %s", SIZE, value.size()); MutableBytes result = MutableBytes.create(SIZE); diff --git a/infrastructure/bytes/src/main/java/tech/pegasys/teku/infrastructure/bytes/Bytes4.java b/infrastructure/bytes/src/main/java/tech/pegasys/teku/infrastructure/bytes/Bytes4.java index de4633fd953..8a70dd3847f 100644 --- a/infrastructure/bytes/src/main/java/tech/pegasys/teku/infrastructure/bytes/Bytes4.java +++ b/infrastructure/bytes/src/main/java/tech/pegasys/teku/infrastructure/bytes/Bytes4.java @@ -52,8 +52,8 @@ public String toHexString() { */ public static Bytes4 leftPad(final Bytes value) { checkNotNull(value); - if (value instanceof Bytes4) { - return (Bytes4) value; + if (value instanceof final Bytes4 bytes4) { + return bytes4; } checkArgument(value.size() <= 4, "Expected at most %s bytes but got %s", 4, value.size()); MutableBytes result = MutableBytes.create(4); @@ -70,8 +70,8 @@ public static Bytes4 leftPad(final Bytes value) { */ public static Bytes4 rightPad(final Bytes value) { checkNotNull(value); - if (value instanceof Bytes4) { - return (Bytes4) value; + if (value instanceof final Bytes4 bytes4) { + return bytes4; } checkArgument(value.size() <= 4, "Expected at most %s bytes but got %s", 4, value.size()); MutableBytes result = MutableBytes.create(4); diff --git a/infrastructure/bytes/src/main/java/tech/pegasys/teku/infrastructure/bytes/Bytes8.java b/infrastructure/bytes/src/main/java/tech/pegasys/teku/infrastructure/bytes/Bytes8.java index 5d68e2970e8..a95b2155a90 100644 --- a/infrastructure/bytes/src/main/java/tech/pegasys/teku/infrastructure/bytes/Bytes8.java +++ b/infrastructure/bytes/src/main/java/tech/pegasys/teku/infrastructure/bytes/Bytes8.java @@ -51,8 +51,8 @@ public String toHexString() { */ public static Bytes8 leftPad(final Bytes value) { checkNotNull(value); - if (value instanceof Bytes8) { - return (Bytes8) value; + if (value instanceof final Bytes8 bytes8) { + return bytes8; } checkArgument(value.size() <= 8, "Expected at most %s bytes but got %s", 8, value.size()); MutableBytes result = MutableBytes.create(8); @@ -69,8 +69,8 @@ public static Bytes8 leftPad(final Bytes value) { */ public static Bytes8 rightPad(final Bytes value) { checkNotNull(value); - if (value instanceof Bytes8) { - return (Bytes8) value; + if (value instanceof final Bytes8 bytes8) { + return bytes8; } checkArgument(value.size() <= 8, "Expected at most %s bytes but got %s", 8, value.size()); MutableBytes result = MutableBytes.create(8); diff --git a/infrastructure/json/src/main/java/tech/pegasys/teku/infrastructure/json/types/DeserializableConfigTypeDefinition.java b/infrastructure/json/src/main/java/tech/pegasys/teku/infrastructure/json/types/DeserializableConfigTypeDefinition.java new file mode 100644 index 00000000000..bffeca126d8 --- /dev/null +++ b/infrastructure/json/src/main/java/tech/pegasys/teku/infrastructure/json/types/DeserializableConfigTypeDefinition.java @@ -0,0 +1,127 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.infrastructure.json.types; + +import static tech.pegasys.teku.infrastructure.json.types.CoreTypes.STRING_TYPE; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Supplier; + +// Configuration is Extended in fulu with BPO to also have a list of objects potentially +// This class allows a Map, where entries are +// - String -> String +// - String -> List> +// +// Before Fulu, Config was simply a Map. +class DeserializableConfigTypeDefinition + implements SerializableTypeDefinition>, + DeserializableTypeDefinition> { + private final Optional name; + private final Optional title; + private final Optional description; + private final DeserializableTypeDefinition>> + listDeserializableTypeDefinition = + DeserializableTypeDefinition.listOf(DeserializableTypeDefinition.mapOfStrings()); + private final Supplier> mapConstructor; + + public DeserializableConfigTypeDefinition( + final Optional name, + final Optional title, + final Optional description, + final Supplier> mapConstructor) { + this.name = name; + this.title = title; + this.description = description; + this.mapConstructor = mapConstructor; + } + + @Override + @SuppressWarnings("unchecked") + public void serialize(final Map value, final JsonGenerator gen) + throws IOException { + gen.writeStartObject(); + for (Map.Entry entry : value.entrySet()) { + gen.writeFieldName(STRING_TYPE.serializeToString(entry.getKey())); + if (entry.getValue() instanceof String) { + STRING_TYPE.serialize((String) entry.getValue(), gen); + } else { + listDeserializableTypeDefinition.serialize( + (List>) entry.getValue(), gen); + } + } + gen.writeEndObject(); + } + + @Override + public Map deserialize(final JsonParser p) throws IOException { + final Map result = mapConstructor.get(); + JsonToken t = p.getCurrentToken(); + if (t == null) { + t = p.nextToken(); + } + if (t == JsonToken.START_OBJECT) { + t = p.nextToken(); + } + for (; t == JsonToken.FIELD_NAME; t = p.nextToken()) { + final String fieldName = p.currentName(); + p.nextToken(); + if (p.getCurrentToken() == JsonToken.VALUE_STRING) { + result.put(fieldName, p.getValueAsString()); + } else if (p.getCurrentToken() == JsonToken.START_ARRAY) { + result.put(fieldName, listDeserializableTypeDefinition.deserialize(p)); + } + } + return result; + } + + @Override + public DeserializableConfigTypeDefinition withDescription(final String description) { + return new DeserializableConfigTypeDefinition( + this.name, this.title, Optional.ofNullable(description), mapConstructor); + } + + public Optional getTitle() { + return title; + } + + public Optional getName() { + return name; + } + + public Optional getDescription() { + return description; + } + + @Override + public void serializeOpenApiType(final JsonGenerator gen) throws IOException { + gen.writeStartObject(); + gen.writeStringField("type", "object"); + if (getTitle().isPresent()) { + gen.writeStringField("title", getTitle().get()); + } + if (getDescription().isPresent()) { + gen.writeStringField("description", getDescription().get()); + } + gen.writeObjectFieldStart("additionalProperties"); + gen.writeStringField("type", "string"); + gen.writeEndObject(); + gen.writeEndObject(); + } +} diff --git a/infrastructure/json/src/main/java/tech/pegasys/teku/infrastructure/json/types/DeserializableTypeDefinition.java b/infrastructure/json/src/main/java/tech/pegasys/teku/infrastructure/json/types/DeserializableTypeDefinition.java index 05768b28baa..d78d68fa464 100644 --- a/infrastructure/json/src/main/java/tech/pegasys/teku/infrastructure/json/types/DeserializableTypeDefinition.java +++ b/infrastructure/json/src/main/java/tech/pegasys/teku/infrastructure/json/types/DeserializableTypeDefinition.java @@ -53,6 +53,11 @@ static DeserializableTypeDefinition> mapOfStrings() { return mapOf(STRING_TYPE, STRING_TYPE, TreeMap::new); } + static DeserializableTypeDefinition> configMap() { + return new DeserializableConfigTypeDefinition( + Optional.empty(), Optional.empty(), Optional.empty(), TreeMap::new); + } + static DeserializableTypeDefinition> mapOf( final StringValueTypeDefinition keyType, final DeserializableTypeDefinition valueType, diff --git a/infrastructure/json/src/main/java/tech/pegasys/teku/infrastructure/json/types/EnumHeaderTypeDefinition.java b/infrastructure/json/src/main/java/tech/pegasys/teku/infrastructure/json/types/EnumHeaderTypeDefinition.java index 853c54b78e5..72e79d7a684 100644 --- a/infrastructure/json/src/main/java/tech/pegasys/teku/infrastructure/json/types/EnumHeaderTypeDefinition.java +++ b/infrastructure/json/src/main/java/tech/pegasys/teku/infrastructure/json/types/EnumHeaderTypeDefinition.java @@ -16,8 +16,10 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import java.io.IOException; +import java.util.HashSet; import java.util.Objects; import java.util.Optional; +import java.util.Set; import java.util.function.Function; public class EnumHeaderTypeDefinition> implements StringValueTypeDefinition { @@ -28,6 +30,7 @@ public class EnumHeaderTypeDefinition> implements StringValueT private final Optional required; private final Optional description; private final Optional example; + private final Set excludedEnumerations; public EnumHeaderTypeDefinition( final Class itemType, @@ -36,7 +39,8 @@ public EnumHeaderTypeDefinition( final String title, final Optional required, final Optional description, - final Optional example) { + final Optional example, + final Set excludedEnumerations) { this.itemType = itemType; this.serializer = serializer; this.name = name; @@ -44,6 +48,7 @@ public EnumHeaderTypeDefinition( this.required = required; this.description = description; this.example = example; + this.excludedEnumerations = excludedEnumerations; } @Override @@ -79,6 +84,9 @@ public void serializeOpenApiType(final JsonGenerator gen) throws IOException { gen.writeArrayFieldStart("enum"); for (T value : itemType.getEnumConstants()) { + if (excludedEnumerations.contains(value)) { + continue; + } gen.writeString(serializeToString(value)); } gen.writeEndArray(); @@ -108,7 +116,14 @@ public T deserializeFromString(final String value) { @Override public StringValueTypeDefinition withDescription(final String description) { return new EnumHeaderTypeDefinition<>( - itemType, serializer, Optional.empty(), title, required, Optional.of(description), example); + itemType, + serializer, + Optional.empty(), + title, + required, + Optional.of(description), + example, + excludedEnumerations); } @Override @@ -163,6 +178,7 @@ public static class EnumTypeHeaderDefinitionBuilder> { private Optional required = Optional.empty(); private Optional description = Optional.empty(); private Optional example = Optional.empty(); + private final Set excludedEnumerations = new HashSet<>(); public EnumTypeHeaderDefinitionBuilder( final Class itemType, final Function serializer) { @@ -195,9 +211,15 @@ public EnumTypeHeaderDefinitionBuilder example(final String example) { return this; } + public EnumTypeHeaderDefinitionBuilder excludedEnumerations( + final Set excludedEnumerations) { + this.excludedEnumerations.addAll(excludedEnumerations); + return this; + } + public EnumHeaderTypeDefinition build() { return new EnumHeaderTypeDefinition<>( - itemType, serializer, name, title, required, description, example); + itemType, serializer, name, title, required, description, example, excludedEnumerations); } } } diff --git a/infrastructure/json/src/test/java/tech/pegasys/teku/infrastructure/json/types/DeserializableConfigTypeDefinitionTest.java b/infrastructure/json/src/test/java/tech/pegasys/teku/infrastructure/json/types/DeserializableConfigTypeDefinitionTest.java new file mode 100644 index 00000000000..6747413dfb5 --- /dev/null +++ b/infrastructure/json/src/test/java/tech/pegasys/teku/infrastructure/json/types/DeserializableConfigTypeDefinitionTest.java @@ -0,0 +1,83 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.infrastructure.json.types; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.fasterxml.jackson.core.JsonProcessingException; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import org.junit.jupiter.api.Test; +import tech.pegasys.teku.infrastructure.json.JsonUtil; + +public class DeserializableConfigTypeDefinitionTest { + final DeserializableConfigTypeDefinition typeDefinition = + new DeserializableConfigTypeDefinition( + Optional.of("MyName"), + Optional.of("MyTitle"), + Optional.of("MyDescription"), + LinkedHashMap::new); + + @Test + void shouldSerializeSimpleMap() throws JsonProcessingException { + final Map objectMap = Map.of("key", "value"); + final String output = JsonUtil.serialize(objectMap, typeDefinition); + assertThat(output).isEqualTo("{\"key\":\"value\"}"); + } + + @Test + void shouldSerializeListEntry() throws JsonProcessingException { + final Map objectMap = + Map.of("key", List.of(Map.of("a", "b"), Map.of("c", "d"))); + final String output = JsonUtil.serialize(objectMap, typeDefinition); + assertThat(output).isEqualTo("{\"key\":[{\"a\":\"b\"},{\"c\":\"d\"}]}"); + } + + @Test + void shouldDeserializeSimpleMap() throws JsonProcessingException { + final String simpleMap = "{\"key\":\"value\"}"; + final Map z = JsonUtil.parse(simpleMap, typeDefinition); + assertThat(z.get("key")).isEqualTo("value"); + } + + @Test + @SuppressWarnings("unchecked") + void shouldDeserializeListEntry() throws JsonProcessingException { + final String listEntry = "{\"key\":[{\"a\":\"b\"},{\"c\":\"d\"}]}"; + final Map z = JsonUtil.parse(listEntry, typeDefinition); + assertThat(z.get("key")).isInstanceOf(List.class); + final List> list = (List>) z.get("key"); + assertThat(list).containsExactly(Map.of("a", "b"), Map.of("c", "d")); + } + + @Test + void shouldSerializeShortConfigMap() throws JsonProcessingException { + final Map objectMap = new LinkedHashMap<>(); + objectMap.put("key", "value"); + objectMap.put("key2", List.of(Map.of("a", "b"), Map.of("c", "d"))); + + final String output = JsonUtil.serialize(objectMap, typeDefinition); + assertThat(output).isEqualTo("{\"key\":\"value\",\"key2\":[{\"a\":\"b\"},{\"c\":\"d\"}]}"); + } + + @Test + void shouldWriteOpenApiDefinition() throws JsonProcessingException { + final String openApiType = JsonUtil.serialize(typeDefinition::serializeOpenApiType); + assertThat(openApiType) + .isEqualTo( + "{\"type\":\"object\",\"title\":\"MyTitle\",\"description\":\"MyDescription\",\"additionalProperties\":{\"type\":\"string\"}}"); + } +} diff --git a/infrastructure/json/src/test/java/tech/pegasys/teku/infrastructure/json/types/EnumHeaderTypeDefinitionTest.java b/infrastructure/json/src/test/java/tech/pegasys/teku/infrastructure/json/types/EnumHeaderTypeDefinitionTest.java index 4fec720f50a..c2e050a664a 100644 --- a/infrastructure/json/src/test/java/tech/pegasys/teku/infrastructure/json/types/EnumHeaderTypeDefinitionTest.java +++ b/infrastructure/json/src/test/java/tech/pegasys/teku/infrastructure/json/types/EnumHeaderTypeDefinitionTest.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.StringWriter; import java.util.Optional; +import java.util.Set; import org.junit.jupiter.api.Test; import tech.pegasys.teku.infrastructure.json.JsonUtil; @@ -56,18 +57,44 @@ public void serializeOpenApiType() throws IOException { "Color", Optional.of(true), Optional.of("The color of the object"), - Optional.of("RED")); + Optional.of("RED"), + Set.of()); + final String json = getJsonDefinition(definition); + + final String expectedJson = + "{\"Color\":{\"description\":\"The color of the object\",\"required\":true,\"schema\":{\"type\":\"string\",\"enum\":[\"RED\",\"GREEN\",\"BLUE\"],\"example\":\"RED\"}}}"; + assertEquals(expectedJson, json); + } + + @Test + public void serializeOpenApiTypeIgnoresExcludedElements() throws IOException { + final EnumHeaderTypeDefinition definition = + new EnumHeaderTypeDefinition<>( + Color.class, + Color::name, + Optional.of("color"), + "Color", + Optional.of(true), + Optional.of("The color of the object"), + Optional.of("RED"), + Set.of(Color.BLUE)); + + final String json = getJsonDefinition(definition); + + final String expectedJson = + "{\"Color\":{\"description\":\"The color of the object\",\"required\":true,\"schema\":{\"type\":\"string\",\"enum\":[\"RED\",\"GREEN\"],\"example\":\"RED\"}}}"; + assertEquals(expectedJson, json); + } + + private static String getJsonDefinition(final EnumHeaderTypeDefinition definition) + throws IOException { final StringWriter writer = new StringWriter(); final JsonGenerator gen = new ObjectMapper().getFactory().createGenerator(writer); gen.writeStartObject(); definition.serializeOpenApiType(gen); gen.writeEndObject(); gen.close(); - final String json = writer.toString(); - - final String expectedJson = - "{\"Color\":{\"description\":\"The color of the object\",\"required\":true,\"schema\":{\"type\":\"string\",\"enum\":[\"RED\",\"GREEN\",\"BLUE\"],\"example\":\"RED\"}}}"; - assertEquals(expectedJson, json); + return writer.toString(); } } diff --git a/infrastructure/kzg/build.gradle b/infrastructure/kzg/build.gradle index 66a8b08f7fc..d074cfd9d17 100644 --- a/infrastructure/kzg/build.gradle +++ b/infrastructure/kzg/build.gradle @@ -9,4 +9,5 @@ dependencies { implementation 'commons-io:commons-io' testFixturesImplementation 'com.google.guava:guava' + testFixturesImplementation 'io.consensys.tuweni:tuweni-bytes' } diff --git a/infrastructure/kzg/src/main/java/tech/pegasys/teku/kzg/KZG.java b/infrastructure/kzg/src/main/java/tech/pegasys/teku/kzg/KZG.java index 0caf5507268..2472b42f3c5 100644 --- a/infrastructure/kzg/src/main/java/tech/pegasys/teku/kzg/KZG.java +++ b/infrastructure/kzg/src/main/java/tech/pegasys/teku/kzg/KZG.java @@ -16,7 +16,6 @@ import java.math.BigInteger; import java.util.List; import org.apache.tuweni.bytes.Bytes; -import org.apache.tuweni.bytes.Bytes48; /** * This interface specifies all the KZG functions needed for the Deneb specification and is the @@ -35,7 +34,7 @@ static KZG getInstance(final boolean rustKzgEnabled) { return rustKzgEnabled ? RustWithCKZG.getInstance() : CKZG4844.getInstance(); } - KZG NOOP = + KZG DISABLED = new KZG() { @Override @@ -48,7 +47,7 @@ public void freeTrustedSetup() throws KZGException {} public boolean verifyBlobKzgProof( final Bytes blob, final KZGCommitment kzgCommitment, final KZGProof kzgProof) throws KZGException { - return false; + throw new UnsupportedOperationException("KZG is disabled"); } @Override @@ -57,28 +56,28 @@ public boolean verifyBlobKzgProofBatch( final List kzgCommitments, final List kzgProofs) throws KZGException { - return false; + throw new UnsupportedOperationException("KZG is disabled"); } @Override public KZGCommitment blobToKzgCommitment(final Bytes blob) throws KZGException { - return KZGCommitment.fromBytesCompressed(Bytes48.ZERO); + throw new UnsupportedOperationException("KZG is disabled"); } @Override public KZGProof computeBlobKzgProof(final Bytes blob, final KZGCommitment kzgCommitment) throws KZGException { - return KZGProof.fromBytesCompressed(Bytes48.ZERO); + throw new UnsupportedOperationException("KZG is disabled"); } @Override public List computeCells(Bytes blob) { - throw new RuntimeException("Not implemented"); + throw new UnsupportedOperationException("KZG is disabled"); } @Override public List computeCellsAndProofs(Bytes blob) { - throw new RuntimeException("Not implemented"); + throw new UnsupportedOperationException("KZG is disabled"); } @Override @@ -86,12 +85,12 @@ public boolean verifyCellProofBatch( List commitments, List cellWithIDs, List proofs) { - return false; + throw new UnsupportedOperationException("KZG is disabled"); } @Override public List recoverCellsAndProofs(List cells) { - throw new RuntimeException("Not implemented"); + throw new UnsupportedOperationException("KZG is disabled"); } }; diff --git a/infrastructure/kzg/src/main/java/tech/pegasys/teku/kzg/KZGCommitment.java b/infrastructure/kzg/src/main/java/tech/pegasys/teku/kzg/KZGCommitment.java index bd1a4c5831e..b01018aedc1 100644 --- a/infrastructure/kzg/src/main/java/tech/pegasys/teku/kzg/KZGCommitment.java +++ b/infrastructure/kzg/src/main/java/tech/pegasys/teku/kzg/KZGCommitment.java @@ -93,12 +93,11 @@ public boolean equals(final Object obj) { return true; } - if (!(obj instanceof KZGCommitment)) { + if (obj instanceof final KZGCommitment other) { + return Objects.equals(this.getBytesCompressed(), other.getBytesCompressed()); + } else { return false; } - - final KZGCommitment other = (KZGCommitment) obj; - return Objects.equals(this.getBytesCompressed(), other.getBytesCompressed()); } @Override diff --git a/infrastructure/kzg/src/main/java/tech/pegasys/teku/kzg/KZGProof.java b/infrastructure/kzg/src/main/java/tech/pegasys/teku/kzg/KZGProof.java index dc364712bff..1aa10616d15 100644 --- a/infrastructure/kzg/src/main/java/tech/pegasys/teku/kzg/KZGProof.java +++ b/infrastructure/kzg/src/main/java/tech/pegasys/teku/kzg/KZGProof.java @@ -98,12 +98,11 @@ public boolean equals(final Object obj) { return true; } - if (!(obj instanceof KZGProof)) { + if (obj instanceof final KZGProof other) { + return Objects.equals(this.getBytesCompressed(), other.getBytesCompressed()); + } else { return false; } - - final KZGProof other = (KZGProof) obj; - return Objects.equals(this.getBytesCompressed(), other.getBytesCompressed()); } @Override diff --git a/infrastructure/kzg/src/testFixtures/java/tech/pegasys/teku/kzg/NoOpKZG.java b/infrastructure/kzg/src/testFixtures/java/tech/pegasys/teku/kzg/NoOpKZG.java new file mode 100644 index 00000000000..c0f71a46f2a --- /dev/null +++ b/infrastructure/kzg/src/testFixtures/java/tech/pegasys/teku/kzg/NoOpKZG.java @@ -0,0 +1,84 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.kzg; + +import java.util.List; +import org.apache.tuweni.bytes.Bytes; +import org.apache.tuweni.bytes.Bytes48; + +public class NoOpKZG implements KZG { + + public static final NoOpKZG INSTANCE = new NoOpKZG(); + + @Override + public void loadTrustedSetup(final String trustedSetupFile) throws KZGException { + // DO NOTHING + } + + @Override + public void freeTrustedSetup() throws KZGException { + // DO NOTHING + } + + @Override + public boolean verifyCellProofBatch( + final List commitments, + final List cellWithIDs, + final List proofs) { + return true; + } + + @Override + public List recoverCellsAndProofs(final List cells) { + return List.of(); + } + + @Override + @Deprecated(since = "Use computeCells instead, computeCellsAndProof is not for production") + public List computeCellsAndProofs(final Bytes blob) { + return List.of(); + } + + @Override + public List computeCells(final Bytes blob) { + return List.of(); + } + + @Override + public KZGProof computeBlobKzgProof(final Bytes blob, final KZGCommitment kzgCommitment) + throws KZGException { + return KZGProof.fromBytesCompressed(Bytes48.ZERO); + } + + @Override + public KZGCommitment blobToKzgCommitment(final Bytes blob) throws KZGException { + return KZGCommitment.fromBytesCompressed(Bytes48.ZERO); + } + + @Override + public boolean verifyBlobKzgProofBatch( + final List blobs, + final List kzgCommitments, + final List kzgProofs) + throws KZGException { + return true; + } + + @Override + public boolean verifyBlobKzgProof( + final Bytes blob, final KZGCommitment kzgCommitment, final KZGProof kzgProof) + throws KZGException { + return true; + } +} diff --git a/infrastructure/logging/src/main/java/tech/pegasys/teku/infrastructure/logging/EventLogger.java b/infrastructure/logging/src/main/java/tech/pegasys/teku/infrastructure/logging/EventLogger.java index 734621a64d9..a57168ff079 100644 --- a/infrastructure/logging/src/main/java/tech/pegasys/teku/infrastructure/logging/EventLogger.java +++ b/infrastructure/logging/src/main/java/tech/pegasys/teku/infrastructure/logging/EventLogger.java @@ -55,10 +55,12 @@ public void genesisEvent( final String genesisEventLog = String.format( - "Genesis Event *** \n" - + "Genesis state root: %s \n" - + "Genesis block root: %s \n" - + "Genesis time: %s GMT", + """ + Genesis Event *** + Genesis state root: %s + Genesis block root: %s + Genesis time: %s GMT + """, hashTreeRoot.toHexString(), genesisBlockRoot.toHexString(), formattedGenesisTime); info(genesisEventLog, Color.CYAN); } diff --git a/infrastructure/metrics/src/main/java/tech/pegasys/teku/infrastructure/metrics/TekuMetricCategory.java b/infrastructure/metrics/src/main/java/tech/pegasys/teku/infrastructure/metrics/TekuMetricCategory.java index 2a0966c0e37..5970bf7a8ed 100644 --- a/infrastructure/metrics/src/main/java/tech/pegasys/teku/infrastructure/metrics/TekuMetricCategory.java +++ b/infrastructure/metrics/src/main/java/tech/pegasys/teku/infrastructure/metrics/TekuMetricCategory.java @@ -27,7 +27,6 @@ public enum TekuMetricCategory implements MetricCategory { STORAGE("storage"), STORAGE_HOT_DB("storage_hot"), STORAGE_FINALIZED_DB("storage_finalized"), - REMOTE_VALIDATOR("remote_validator"), VALIDATOR("validator"), VALIDATOR_PERFORMANCE("validator_performance"), VALIDATOR_DUTY("validator_duty"); diff --git a/infrastructure/restapi/src/main/java/tech/pegasys/teku/infrastructure/restapi/SwaggerUIBuilder.java b/infrastructure/restapi/src/main/java/tech/pegasys/teku/infrastructure/restapi/SwaggerUIBuilder.java index 8c8d689dbfb..374c61ca979 100644 --- a/infrastructure/restapi/src/main/java/tech/pegasys/teku/infrastructure/restapi/SwaggerUIBuilder.java +++ b/infrastructure/restapi/src/main/java/tech/pegasys/teku/infrastructure/restapi/SwaggerUIBuilder.java @@ -30,7 +30,7 @@ public class SwaggerUIBuilder { // Version here MUST match `swagger-ui` library version - private static final String SWAGGER_UI_VERSION = "5.18.3"; + private static final String SWAGGER_UI_VERSION = "5.21.0"; private static final String SWAGGER_UI_PATH = "/swagger-ui"; private static final String SWAGGER_HOSTED_PATH = "/webjars/swagger-ui/" + SWAGGER_UI_VERSION; diff --git a/infrastructure/ssz/generator/src/main/java/tech/pegasys/teku/infrastructure/ssz/ContainersGenerator.java b/infrastructure/ssz/generator/src/main/java/tech/pegasys/teku/infrastructure/ssz/ContainersGenerator.java index 386e349bec9..ec9ab63b2d9 100644 --- a/infrastructure/ssz/generator/src/main/java/tech/pegasys/teku/infrastructure/ssz/ContainersGenerator.java +++ b/infrastructure/ssz/generator/src/main/java/tech/pegasys/teku/infrastructure/ssz/ContainersGenerator.java @@ -133,10 +133,13 @@ public void generateContainerClasses(final int fieldsCount) { IntStream.range(0, fieldsCount) .mapToObj( i -> - (" @SuppressWarnings(\"unchecked\")\n" - + " public SszSchema getFieldSchema$() {\n" - + " return (SszSchema) getChildSchema($);\n" - + " }\n") + """ + @SuppressWarnings("unchecked") + public SszSchema getFieldSchema$() { + return (SszSchema) getChildSchema($); + } + + """ .replace("$", "" + i)) .collect(Collectors.joining("\n\n")))); generateFromTemplate( diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitlist.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitlist.java index cf99656e69f..ca0c769fa0d 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitlist.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitlist.java @@ -14,6 +14,7 @@ package tech.pegasys.teku.infrastructure.ssz.collections; import it.unimi.dsi.fastutil.ints.IntList; +import java.util.BitSet; import java.util.stream.IntStream; import javax.annotation.Nullable; import tech.pegasys.teku.infrastructure.ssz.collections.impl.SszBitlistImpl; @@ -43,6 +44,12 @@ default boolean isWritableSupported() { // Bitlist methods + BitSet getAsBitSet(); + + BitSet getAsBitSet(int start, int end); + + int getLastSetBitIndex(); + /** * Performs a logical OR of this bit list with the bit list argument. * diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitvector.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitvector.java index 64dfe8bb388..edc51be9bc9 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitvector.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitvector.java @@ -14,6 +14,7 @@ package tech.pegasys.teku.infrastructure.ssz.collections; import it.unimi.dsi.fastutil.ints.IntList; +import java.util.BitSet; import java.util.stream.IntStream; import tech.pegasys.teku.infrastructure.ssz.primitive.SszBit; import tech.pegasys.teku.infrastructure.ssz.schema.collections.SszBitvectorSchema; @@ -48,6 +49,8 @@ default boolean isWritableSupported() { /** Returns the number of bits set to {@code true} in this {@code SszBitlist}. */ int getBitCount(); + BitSet getAsBitSet(); + @Override default boolean isSet(final int i) { return i < size() && getBit(i); diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/BitlistImpl.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/BitlistImpl.java index 134a704458c..a0c15c60cde 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/BitlistImpl.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/BitlistImpl.java @@ -51,12 +51,10 @@ public BitlistImpl(final int size, final long maxSize, final int... bitIndices) } } - public BitlistImpl(final int size, final long maxSize, final BitSet bitSet) { + public static BitlistImpl wrapBitSet(final int size, final long maxSize, final BitSet bitSet) { checkArgument(size >= 0, "Negative size"); checkArgument(maxSize >= size, "maxSize should be >= size"); - this.size = size; - this.data = bitSet; - this.maxSize = maxSize; + return new BitlistImpl(size, bitSet, maxSize); } private BitlistImpl(final int size, final BitSet data, final long maxSize) { @@ -65,6 +63,18 @@ private BitlistImpl(final int size, final BitSet data, final long maxSize) { this.maxSize = maxSize; } + public BitSet getAsBitSet() { + return (BitSet) data.clone(); + } + + public BitSet getAsBitSet(final int start, final int end) { + return data.get(start, end); + } + + public int getLastSetBitIndex() { + return data.length() - 1; + } + /** * Returns new instance of this BitlistImpl with set bits from the other BitlistImpl * diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/BitvectorImpl.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/BitvectorImpl.java index 16330e9e231..e9ea75160da 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/BitvectorImpl.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/BitvectorImpl.java @@ -43,6 +43,12 @@ public static BitvectorImpl fromBytes(final Bytes bytes, final int size) { return new BitvectorImpl(bitset, size); } + public static BitvectorImpl wrapBitSet(final BitSet bitSet, final int size) { + final int length = bitSet.length(); + checkArgument(length <= size, "BitSet length (%s) exceeds the size (%s)", length, size); + return new BitvectorImpl(bitSet, size); + } + public static int sszSerializationLength(final int size) { return bitsCeilToBytes(size); } @@ -112,6 +118,10 @@ public boolean getBit(final int i) { return data.get(i); } + public BitSet getAsBitSet() { + return (BitSet) data.clone(); + } + public int getSize() { return size; } @@ -146,11 +156,12 @@ public boolean equals(final Object o) { if (this == o) { return true; } - if (!(o instanceof BitvectorImpl)) { + if (o instanceof final BitvectorImpl bitvector) { + + return getSize() == bitvector.getSize() && Objects.equal(data, bitvector.data); + } else { return false; } - BitvectorImpl bitvector = (BitvectorImpl) o; - return getSize() == bitvector.getSize() && Objects.equal(data, bitvector.data); } @Override diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/SszBitlistImpl.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/SszBitlistImpl.java index f7f88442498..2ea5d624924 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/SszBitlistImpl.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/SszBitlistImpl.java @@ -75,7 +75,7 @@ public static SszBitlistImpl ofBits( public static SszBitlistImpl wrapBitSet( final SszBitlistSchema schema, final int size, final BitSet bitSet) { - return new SszBitlistImpl(schema, new BitlistImpl(size, schema.getMaxLength(), bitSet)); + return new SszBitlistImpl(schema, BitlistImpl.wrapBitSet(size, schema.getMaxLength(), bitSet)); } private final BitlistImpl value; @@ -90,6 +90,21 @@ public SszBitlistImpl(final SszListSchema schema, final BitlistImpl v this.value = value; } + @Override + public BitSet getAsBitSet() { + return value.getAsBitSet(); + } + + @Override + public BitSet getAsBitSet(final int start, final int end) { + return value.getAsBitSet(start, end); + } + + @Override + public int getLastSetBitIndex() { + return value.getLastSetBitIndex(); + } + @SuppressWarnings("unchecked") @Override public SszBitlistSchema getSchema() { diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/SszBitvectorImpl.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/SszBitvectorImpl.java index 6eeb39d6bf3..e4ae96ffec6 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/SszBitvectorImpl.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/collections/impl/SszBitvectorImpl.java @@ -17,6 +17,7 @@ import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; +import java.util.BitSet; import java.util.stream.IntStream; import org.apache.tuweni.bytes.Bytes; import tech.pegasys.teku.infrastructure.ssz.cache.IntCache; @@ -35,6 +36,11 @@ public static SszBitvectorImpl ofBits(final SszBitvectorSchema schema, final return new SszBitvectorImpl(schema, new BitvectorImpl(schema.getLength(), bits)); } + public static SszBitvectorImpl wrapBitSet( + final SszBitvectorSchema schema, final int size, final BitSet bitSet) { + return new SszBitvectorImpl(schema, BitvectorImpl.wrapBitSet(bitSet, size)); + } + public static SszBitvector fromBytes( final SszBitvectorSchema schema, final Bytes value, final int size) { return new SszBitvectorImpl(schema, BitvectorImpl.fromBytes(value, size)); @@ -58,6 +64,11 @@ public SszBitvectorImpl(final SszBitvectorSchema schema, final BitvectorImpl this.value = value; } + @Override + public BitSet getAsBitSet() { + return value.getAsBitSet(); + } + @SuppressWarnings("unchecked") @Override public SszBitvectorSchema getSchema() { diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/impl/AbstractSszImmutableContainer.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/impl/AbstractSszImmutableContainer.java index ded173d676d..ecfdd7e03a4 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/impl/AbstractSszImmutableContainer.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/impl/AbstractSszImmutableContainer.java @@ -90,12 +90,12 @@ public boolean equals(final Object obj) { return true; } - if (!(obj instanceof AbstractSszImmutableContainer)) { + if (obj instanceof final AbstractSszImmutableContainer other) { + + return hashTreeRoot().equals(other.hashTreeRoot()); + } else { return false; } - - AbstractSszImmutableContainer other = (AbstractSszImmutableContainer) obj; - return hashTreeRoot().equals(other.hashTreeRoot()); } @Override diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/impl/AbstractSszMutableComposite.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/impl/AbstractSszMutableComposite.java index c03cc074408..3887e2f7bc5 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/impl/AbstractSszMutableComposite.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/impl/AbstractSszMutableComposite.java @@ -83,8 +83,8 @@ public void set(final int index, final SszChildT value) { validateChildSchema(index, value); final SszChildT immutableValue; - if (value instanceof SszMutableData) { - immutableValue = (SszChildT) ((SszMutableData) value).commitChanges(); + if (value instanceof final SszMutableData sszMutableData) { + immutableValue = (SszChildT) sszMutableData.commitChanges(); } else { immutableValue = value; } diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/impl/SszUnionImpl.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/impl/SszUnionImpl.java index 371185bf794..c661adfb483 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/impl/SszUnionImpl.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/impl/SszUnionImpl.java @@ -69,13 +69,13 @@ public boolean equals(final Object o) { if (this == o) { return true; } - if (!(o instanceof SszUnion)) { + if (o instanceof final SszUnion sszUnion) { + return Objects.equal(getSchema(), sszUnion.getSchema()) + && getSelector() == sszUnion.getSelector() + && Objects.equal(hashTreeRoot(), sszUnion.hashTreeRoot()); + } else { return false; } - SszUnion sszUnion = (SszUnion) o; - return Objects.equal(getSchema(), sszUnion.getSchema()) - && getSelector() == sszUnion.getSelector() - && Objects.equal(hashTreeRoot(), sszUnion.hashTreeRoot()); } @Override diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/collections/SszBitlistSchema.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/collections/SszBitlistSchema.java index 5c3bb6d5d2f..19e4e549cce 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/collections/SszBitlistSchema.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/collections/SszBitlistSchema.java @@ -33,13 +33,9 @@ default SszBitlistT empty() { SszBitlistT ofBits(int size, int... setBitIndices); /** - * Creates a SszBitlist by wrapping a given bitSet. This is an optimized constructor that DOES NOT - * clone the bitSet. It used in aggregating attestation pool. DO NOT MUTATE the after the + * Creates an SszBitlist by wrapping a given bitSet. This is an optimized constructor that DOES + * NOT clone the bitSet. It is used in aggregating attestation pool. DO NOT MUTATE after the * wrapping!! SszBitlist is supposed to be immutable. - * - * @param size size of the SszBitlist - * @param bitSet data backing the ssz - * @return SszBitlist instance */ SszBitlistT wrapBitSet(int size, BitSet bitSet); diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/collections/SszBitvectorSchema.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/collections/SszBitvectorSchema.java index 7c60370b68e..78ea66e0c9a 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/collections/SszBitvectorSchema.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/collections/SszBitvectorSchema.java @@ -13,6 +13,7 @@ package tech.pegasys.teku.infrastructure.ssz.schema.collections; +import java.util.BitSet; import java.util.stream.StreamSupport; import org.apache.tuweni.bytes.Bytes; import tech.pegasys.teku.infrastructure.ssz.collections.SszBitvector; @@ -28,6 +29,13 @@ static SszBitvectorSchema create(final long length) { SszBitvectorT ofBits(int... setBitIndices); + /** + * Creates an SszBitvector by wrapping a given bitSet. This is an optimized constructor that DOES + * NOT clone the bitSet. It is used in aggregating attestation pool. DO NOT MUTATE after the + * wrapping!! SszBitvector is supposed to be immutable. + */ + SszBitvectorT wrapBitSet(int size, BitSet bitSet); + default SszBitvectorT fromBytes(final Bytes bitvectorBytes) { return sszDeserialize(bitvectorBytes); } diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/collections/impl/SszBitvectorSchemaImpl.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/collections/impl/SszBitvectorSchemaImpl.java index 92341b82000..c400d429f68 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/collections/impl/SszBitvectorSchemaImpl.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/collections/impl/SszBitvectorSchemaImpl.java @@ -16,6 +16,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static tech.pegasys.teku.infrastructure.ssz.schema.json.SszPrimitiveTypeDefinitions.sszSerializedType; +import java.util.BitSet; import java.util.List; import java.util.stream.IntStream; import tech.pegasys.teku.infrastructure.json.types.DeserializableTypeDefinition; @@ -54,6 +55,11 @@ public SszBitvector ofBits(final int... setBitIndices) { return SszBitvectorImpl.ofBits(this, setBitIndices); } + @Override + public SszBitvector wrapBitSet(final int size, final BitSet bitSet) { + return SszBitvectorImpl.wrapBitSet(this, size, bitSet); + } + @Override public SszBitvector createFromElements(final List elements) { return ofBits(IntStream.range(0, elements.size()).filter(i -> elements.get(i).get()).toArray()); diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/impl/AbstractSszPrimitiveSchema.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/impl/AbstractSszPrimitiveSchema.java index bea047068ec..4637e3c6dd6 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/impl/AbstractSszPrimitiveSchema.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/impl/AbstractSszPrimitiveSchema.java @@ -103,6 +103,7 @@ public TreeNode loadBackingNodes( } @Override + @SuppressWarnings("PatternMatchingInstanceof") public final DataT createFromPackedNodeUnboxed(final TreeNode node, final int internalIndex) { assert node instanceof LeafDataNode; return createFromLeafBackingNode((LeafDataNode) node, internalIndex); @@ -149,9 +150,9 @@ public int getSszVariablePartSize(final TreeNode node) { @Override public int sszSerializeTree(final TreeNode node, final SszWriter writer) { final Bytes nodeData; - if (node instanceof LeafDataNode) { + if (node instanceof final LeafDataNode leafDataNode) { // small perf optimization - nodeData = ((LeafDataNode) node).getData(); + nodeData = leafDataNode.getData(); } else { nodeData = node.hashTreeRoot(); } diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/impl/LoadingUtil.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/impl/LoadingUtil.java index 96980e3ead0..5248cea8741 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/impl/LoadingUtil.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/schema/impl/LoadingUtil.java @@ -130,19 +130,12 @@ public static TreeNode loadNodesToDepth( private static boolean isZeroBranchUseful(final long rootGIndex, final long lastUsefulGIndex) { final NodeRelation relationRootToLastUseful = GIndexUtil.gIdxCompare(rootGIndex, lastUsefulGIndex); - switch (relationRootToLastUseful) { - case LEFT: - case PREDECESSOR: - return true; - - case SAME: - case RIGHT: - case SUCCESSOR: - return false; - - default: - throw new IllegalStateException("Unknown relation type: " + relationRootToLastUseful); - } + return switch (relationRootToLastUseful) { + case LEFT, PREDECESSOR -> true; + case SAME, RIGHT, SUCCESSOR -> false; + default -> + throw new IllegalStateException("Unknown relation type: " + relationRootToLastUseful); + }; } private static BranchNode createUsefulEmptyBranch( diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/GIndexUtil.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/GIndexUtil.java index 1b12e257c23..6e752231da4 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/GIndexUtil.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/GIndexUtil.java @@ -39,20 +39,14 @@ public enum NodeRelation { /** gIdxCompare(idx1, idx2) == gIdxCompare(idx2, idx1).inverse() */ public NodeRelation inverse() { - switch (this) { - case LEFT: - return RIGHT; - case RIGHT: - return LEFT; - case PREDECESSOR: - return SUCCESSOR; - case SUCCESSOR: - return PREDECESSOR; - case SAME: - return SAME; - default: - throw new IllegalArgumentException("Unknown: " + this); - } + return switch (this) { + case LEFT -> RIGHT; + case RIGHT -> LEFT; + case PREDECESSOR -> SUCCESSOR; + case SUCCESSOR -> PREDECESSOR; + case SAME -> SAME; + default -> throw new IllegalArgumentException("Unknown: " + this); + }; } } diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/SimpleLeafNode.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/SimpleLeafNode.java index 0a2365ef05f..4e8c15867a3 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/SimpleLeafNode.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/SimpleLeafNode.java @@ -81,11 +81,11 @@ public boolean equals(final Object o) { if (this == o) { return true; } - if (!(o instanceof LeafNode)) { + if (o instanceof final LeafNode otherLeaf) { + return Objects.equals(getData(), otherLeaf.getData()); + } else { return false; } - LeafNode otherLeaf = (LeafNode) o; - return Objects.equals(getData(), otherLeaf.getData()); } @Override diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/SszNodeTemplate.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/SszNodeTemplate.java index 9b33bfc887c..33a8fe8613f 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/SszNodeTemplate.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/SszNodeTemplate.java @@ -182,8 +182,8 @@ public Bytes32 visitBranch( private static T binaryTraverse( final long gIndex, final TreeNode node, final BinaryVisitor visitor) { - if (node instanceof LeafNode) { - return visitor.visitLeaf(gIndex, (LeafNode) node); + if (node instanceof final LeafNode leafnode) { + return visitor.visitLeaf(gIndex, leafnode); } else if (node instanceof BranchNode branchNode) { return visitor.visitBranch( gIndex, diff --git a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/TreeUtil.java b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/TreeUtil.java index 9bfd668536f..d72fc46cf7c 100644 --- a/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/TreeUtil.java +++ b/infrastructure/ssz/src/main/java/tech/pegasys/teku/infrastructure/ssz/tree/TreeUtil.java @@ -177,8 +177,8 @@ static void iterateLeaves( fromGeneralIndex, toGeneralIndex, (n, idx) -> { - if (n instanceof LeafNode) { - visitor.accept((LeafNode) n); + if (n instanceof final LeafNode leafNode) { + visitor.accept(leafNode); } return true; }); @@ -193,8 +193,8 @@ public static void iterateLeavesData( fromGeneralIndex, toGeneralIndex, (n, idx) -> { - if (n instanceof LeafDataNode) { - visitor.accept(((LeafDataNode) n).getData()); + if (n instanceof final LeafDataNode leafDataNode) { + visitor.accept(leafDataNode.getData()); } return true; }); diff --git a/infrastructure/ssz/src/test/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitlistTest.java b/infrastructure/ssz/src/test/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitlistTest.java index 9917ed7d338..3dd5280f79c 100644 --- a/infrastructure/ssz/src/test/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitlistTest.java +++ b/infrastructure/ssz/src/test/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitlistTest.java @@ -31,6 +31,7 @@ import org.junit.jupiter.params.provider.MethodSource; import tech.pegasys.teku.infrastructure.crypto.Hash; import tech.pegasys.teku.infrastructure.ssz.SszCollection; +import tech.pegasys.teku.infrastructure.ssz.SszDataAssert; import tech.pegasys.teku.infrastructure.ssz.SszList; import tech.pegasys.teku.infrastructure.ssz.SszTestUtils; import tech.pegasys.teku.infrastructure.ssz.impl.AbstractSszPrimitive; @@ -125,12 +126,9 @@ void testSszRoundtrip(final SszBitlist bitlist1) { @ParameterizedTest @MethodSource("bitlistArgs") - void testWrapBitSet(final SszBitlist bitlist1) { - final BitSet bits = new BitSet(bitlist1.size()); - - bitlist1.streamAllSetBits().forEach(bits::set); - - final SszBitlist bitlist2 = bitlist1.getSchema().wrapBitSet(bitlist1.size(), bits); + void testBitSetRoundtrip(final SszBitlist bitlist1) { + final SszBitlist bitlist2 = + bitlist1.getSchema().wrapBitSet(bitlist1.size(), bitlist1.getAsBitSet()); for (int i = 0; i < bitlist1.size(); i++) { assertThat(bitlist2.getBit(i)).isEqualTo(bitlist1.getBit(i)); @@ -143,6 +141,35 @@ void testWrapBitSet(final SszBitlist bitlist1) { assertThat(bitlist2.sszSerialize()).isEqualTo(bitlist1.sszSerialize()); } + @Test + void getAsBitSet_withFullStartEnd() { + final SszBitlist list = random(SCHEMA, 100); + + final BitSet fullSlice = list.getAsBitSet(0, 100); + + final SszBitlist newList = SCHEMA.wrapBitSet(100, fullSlice); + + assertThat(newList.getAsBitSet()).isEqualTo(fullSlice); + SszDataAssert.assertThatSszData(newList).isEqualByAllMeansTo(list); + } + + @Test + void getAsBitSet_withSubsetStartEnd() { + final SszBitlist list = random(SCHEMA, 100); + + final BitSet slice = list.getAsBitSet(5, 55); + + final SszBitlist newList = SCHEMA.wrapBitSet(50, slice); + + assertThat(newList.getAsBitSet()).isEqualTo(slice); + IntStream.range(0, 50) + .forEach( + i -> + assertThat(newList.getBit(i)) + .describedAs("Bit %s should be equal", i) + .isEqualTo(list.getBit(i + 5))); + } + @Test void wrapBitSet_shouldDropBitsIfBitSetIsLarger() { final BitSet bitSet = new BitSet(100); diff --git a/infrastructure/ssz/src/test/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitvectorTest.java b/infrastructure/ssz/src/test/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitvectorTest.java index e12b138a7d1..0b0b1c92b29 100644 --- a/infrastructure/ssz/src/test/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitvectorTest.java +++ b/infrastructure/ssz/src/test/java/tech/pegasys/teku/infrastructure/ssz/collections/SszBitvectorTest.java @@ -261,4 +261,15 @@ void testFromHexString(final SszBitvector bitvector) { SszBitvectorImpl.fromHexString(bitvector.getSchema(), hexString, (int) size); SszDataAssert.assertThatSszData(result).isEqualByAllMeansTo(bitvector); } + + @ParameterizedTest + @MethodSource("bitvectorArgs") + void testBitSetRoundtrip(final SszBitvector bitvector) { + + final SszBitvectorSchema schema = bitvector.getSchema(); + + final SszBitvector newVector = schema.wrapBitSet(bitvector.size(), bitvector.getAsBitSet()); + + SszDataAssert.assertThatSszData(newVector).isEqualByAllMeansTo(bitvector); + } } diff --git a/infrastructure/ssz/src/testFixtures/java/tech/pegasys/teku/infrastructure/ssz/SszDataAssert.java b/infrastructure/ssz/src/testFixtures/java/tech/pegasys/teku/infrastructure/ssz/SszDataAssert.java index a3faedda9b0..92dd148c629 100644 --- a/infrastructure/ssz/src/testFixtures/java/tech/pegasys/teku/infrastructure/ssz/SszDataAssert.java +++ b/infrastructure/ssz/src/testFixtures/java/tech/pegasys/teku/infrastructure/ssz/SszDataAssert.java @@ -133,8 +133,8 @@ private static List compareByGetters(final SszData actual, final SszData List res = compareByGetters(c1.get(i), c2.get(i)); if (!res.isEmpty()) { String traceDetails; - if (actual instanceof SszContainer) { - SszContainerSchema containerSchema = ((SszContainer) actual).getSchema(); + if (actual instanceof final SszContainer sszContainer) { + SszContainerSchema containerSchema = sszContainer.getSchema(); traceDetails = containerSchema.toString() + "." + containerSchema.getFieldNames().get(i); } else { diff --git a/networking/eth2/build.gradle b/networking/eth2/build.gradle index d975bc73fba..13f9dad2d2f 100644 --- a/networking/eth2/build.gradle +++ b/networking/eth2/build.gradle @@ -48,6 +48,7 @@ dependencies { testFixturesImplementation testFixtures(project(':infrastructure:async')) testFixturesImplementation project(':infrastructure:bytes') testFixturesImplementation testFixtures(project(':infrastructure:events')) + testFixturesImplementation testFixtures(project(':infrastructure:kzg')) testFixturesImplementation testFixtures(project(':infrastructure:metrics')) testFixturesImplementation testFixtures(project(':infrastructure:time')) testFixturesImplementation testFixtures(project(':storage')) diff --git a/networking/eth2/src/integration-test/java/tech/pegasys/teku/networking/eth2/AbstractRpcMethodIntegrationTest.java b/networking/eth2/src/integration-test/java/tech/pegasys/teku/networking/eth2/AbstractRpcMethodIntegrationTest.java index 3de171504b6..abf363d6b6e 100644 --- a/networking/eth2/src/integration-test/java/tech/pegasys/teku/networking/eth2/AbstractRpcMethodIntegrationTest.java +++ b/networking/eth2/src/integration-test/java/tech/pegasys/teku/networking/eth2/AbstractRpcMethodIntegrationTest.java @@ -213,6 +213,10 @@ public record PeerAndNetwork(Eth2Peer peer, Eth2P2PNetwork network) {} protected static Stream generateSpecTransitionWithCombinationParams() { return SpecMilestone.getAllMilestonesFrom(SpecMilestone.ALTAIR).stream() + .filter( + specMilestone -> + specMilestone.isLessThan( + SpecMilestone.FULU)) // TODO-fulu eventually we remove this ignore .flatMap( milestone -> { final SpecMilestone prevMilestone = milestone.getPreviousMilestone(); diff --git a/networking/eth2/src/main/java/tech/pegasys/teku/networking/eth2/gossip/forks/versions/GossipForkSubscriptionsFulu.java b/networking/eth2/src/main/java/tech/pegasys/teku/networking/eth2/gossip/forks/versions/GossipForkSubscriptionsFulu.java index 971c840c76e..e0f5810f23f 100644 --- a/networking/eth2/src/main/java/tech/pegasys/teku/networking/eth2/gossip/forks/versions/GossipForkSubscriptionsFulu.java +++ b/networking/eth2/src/main/java/tech/pegasys/teku/networking/eth2/gossip/forks/versions/GossipForkSubscriptionsFulu.java @@ -1,5 +1,5 @@ /* - * Copyright Consensys Software Inc., 2022 + * Copyright Consensys Software Inc., 2025 * * 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 diff --git a/networking/eth2/src/main/java/tech/pegasys/teku/networking/eth2/rpc/beaconchain/methods/DataColumnSidecarsByRootMessageHandler.java b/networking/eth2/src/main/java/tech/pegasys/teku/networking/eth2/rpc/beaconchain/methods/DataColumnSidecarsByRootMessageHandler.java index ddcbf89ff89..adabcdd3d59 100644 --- a/networking/eth2/src/main/java/tech/pegasys/teku/networking/eth2/rpc/beaconchain/methods/DataColumnSidecarsByRootMessageHandler.java +++ b/networking/eth2/src/main/java/tech/pegasys/teku/networking/eth2/rpc/beaconchain/methods/DataColumnSidecarsByRootMessageHandler.java @@ -189,7 +189,7 @@ private SafeFuture> getNonCanonicalDataColumnSidecar if (maybeSlot.isPresent()) { return combinedChainDataClient.getNonCanonicalSidecar( new DataColumnSlotAndIdentifier( - maybeSlot.get(), identifier.blockRoot(), identifier.columnId())); + maybeSlot.get(), identifier.blockRoot(), identifier.columnIndex())); } else { return SafeFuture.completedFuture(Optional.empty()); } diff --git a/networking/eth2/src/main/java/tech/pegasys/teku/networking/eth2/rpc/beaconchain/methods/MetadataMessagesFactory.java b/networking/eth2/src/main/java/tech/pegasys/teku/networking/eth2/rpc/beaconchain/methods/MetadataMessagesFactory.java index d4363d5804a..4bd501ff10c 100644 --- a/networking/eth2/src/main/java/tech/pegasys/teku/networking/eth2/rpc/beaconchain/methods/MetadataMessagesFactory.java +++ b/networking/eth2/src/main/java/tech/pegasys/teku/networking/eth2/rpc/beaconchain/methods/MetadataMessagesFactory.java @@ -25,7 +25,7 @@ import tech.pegasys.teku.statetransition.CustodyGroupCountChannel; public class MetadataMessagesFactory implements CustodyGroupCountChannel { - private static final Logger LOG = LogManager.getLogger("das-nyota"); + private static final Logger LOG = LogManager.getLogger(); private final AtomicLong seqNumberGenerator = new AtomicLong(0L); private Iterable attestationSubnetIds = Collections.emptyList(); diff --git a/networking/eth2/src/test/java/tech/pegasys/teku/networking/eth2/gossip/topics/GossipTopicsTest.java b/networking/eth2/src/test/java/tech/pegasys/teku/networking/eth2/gossip/topics/GossipTopicsTest.java index 2b6e9fafbf9..794b24b18d6 100644 --- a/networking/eth2/src/test/java/tech/pegasys/teku/networking/eth2/gossip/topics/GossipTopicsTest.java +++ b/networking/eth2/src/test/java/tech/pegasys/teku/networking/eth2/gossip/topics/GossipTopicsTest.java @@ -56,7 +56,7 @@ public void extractForkDigest_invalid() { @Test public void maxSubscribedTopicsConstantIsLargeEnough() { - final SpecMilestone latestMilestone = SpecMilestone.values()[SpecMilestone.values().length - 1]; + final SpecMilestone latestMilestone = SpecMilestone.getHighestMilestone(); final Spec spec = TestSpecFactory.createMainnet(latestMilestone); final StorageSystem storageSystem = InMemoryStorageSystemBuilder.buildDefault(spec); diff --git a/networking/eth2/src/testFixtures/java/tech/pegasys/teku/networking/eth2/Eth2P2PNetworkFactory.java b/networking/eth2/src/testFixtures/java/tech/pegasys/teku/networking/eth2/Eth2P2PNetworkFactory.java index 93d30b5584f..aca4f5d3ab3 100644 --- a/networking/eth2/src/testFixtures/java/tech/pegasys/teku/networking/eth2/Eth2P2PNetworkFactory.java +++ b/networking/eth2/src/testFixtures/java/tech/pegasys/teku/networking/eth2/Eth2P2PNetworkFactory.java @@ -46,7 +46,7 @@ import tech.pegasys.teku.infrastructure.time.StubTimeProvider; import tech.pegasys.teku.infrastructure.time.TimeProvider; import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.kzg.KZG; +import tech.pegasys.teku.kzg.NoOpKZG; import tech.pegasys.teku.network.p2p.jvmlibp2p.PrivateKeyGenerator; import tech.pegasys.teku.networking.eth2.gossip.config.GossipConfigurator; import tech.pegasys.teku.networking.eth2.gossip.encoding.GossipEncoding; @@ -257,7 +257,7 @@ protected Eth2P2PNetwork buildNetwork(final P2PConfig config) { P2PConfig.DEFAULT_PEER_BLOB_SIDECARS_RATE_LIMIT, P2PConfig.DEFAULT_PEER_REQUEST_LIMIT, spec, - KZG.NOOP, + NoOpKZG.INSTANCE, (__) -> Optional.empty(), dasTotalCustodySubnetCount, DasReqRespLogger.NOOP); diff --git a/networking/nat/src/main/java/tech/pegasys/teku/networking/nat/UpnpClient.java b/networking/nat/src/main/java/tech/pegasys/teku/networking/nat/UpnpClient.java index 74f31d8926e..7d51537553b 100644 --- a/networking/nat/src/main/java/tech/pegasys/teku/networking/nat/UpnpClient.java +++ b/networking/nat/src/main/java/tech/pegasys/teku/networking/nat/UpnpClient.java @@ -182,13 +182,10 @@ private void inspectDeviceRecursive(final RemoteDevice device) { } private PortMapping.Protocol toJupnpProtocol(final NetworkProtocol protocol) { - switch (protocol) { - case UDP: - return PortMapping.Protocol.UDP; - case TCP: - return PortMapping.Protocol.TCP; - } - return null; + return switch (protocol) { + case UDP -> PortMapping.Protocol.UDP; + case TCP -> PortMapping.Protocol.TCP; + }; } private PortMapping toJupnpPortMapping(final NatPortMapping natPortMapping) { diff --git a/networking/nat/src/test/java/tech/pegasys/teku/networking/nat/UpnpClientTest.java b/networking/nat/src/test/java/tech/pegasys/teku/networking/nat/UpnpClientTest.java index 0cee3ed7a20..f07ea5c43fa 100644 --- a/networking/nat/src/test/java/tech/pegasys/teku/networking/nat/UpnpClientTest.java +++ b/networking/nat/src/test/java/tech/pegasys/teku/networking/nat/UpnpClientTest.java @@ -20,7 +20,6 @@ import java.net.InetAddress; import java.net.URI; -import java.net.URL; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.jupnp.UpnpService; @@ -76,7 +75,7 @@ public void registryListenerShouldDetectService() throws Exception { new RemoteDeviceIdentity( UDN.valueOf(NatManager.SERVICE_TYPE_WAN_IP_CONNECTION), 3600, - new URL("http://127.63.31.15/"), + URI.create("http://127.63.31.15/").toURL(), null, InetAddress.getByName("127.63.31.15")), new UDADeviceType("WANConnectionDevice"), diff --git a/services/beaconchain/src/main/java/tech/pegasys/teku/services/beaconchain/BeaconChainController.java b/services/beaconchain/src/main/java/tech/pegasys/teku/services/beaconchain/BeaconChainController.java index 90129b7a9d3..a1d44589a9e 100644 --- a/services/beaconchain/src/main/java/tech/pegasys/teku/services/beaconchain/BeaconChainController.java +++ b/services/beaconchain/src/main/java/tech/pegasys/teku/services/beaconchain/BeaconChainController.java @@ -652,7 +652,7 @@ protected void initKzg() { "Trusted setup should be configured when Deneb is enabled")); kzg.loadTrustedSetup(trustedSetupFile); } else { - kzg = KZG.NOOP; + kzg = KZG.DISABLED; } } diff --git a/services/bootnode/build.gradle b/services/bootnode/build.gradle index b72dcaeba15..5b9a1bc0b48 100644 --- a/services/bootnode/build.gradle +++ b/services/bootnode/build.gradle @@ -13,6 +13,6 @@ dependencies { implementation project(':storage') implementation project(':storage:api') - testImplementation platform('org.junit:junit-bom:5.10.0') + testImplementation platform('org.junit:junit-bom:5.12.2') testImplementation 'org.junit.jupiter:junit-jupiter' } \ No newline at end of file diff --git a/services/chainstorage/src/main/java/tech/pegasys/teku/services/chainstorage/StorageService.java b/services/chainstorage/src/main/java/tech/pegasys/teku/services/chainstorage/StorageService.java index 63b1090843e..b8e4a7c9594 100644 --- a/services/chainstorage/src/main/java/tech/pegasys/teku/services/chainstorage/StorageService.java +++ b/services/chainstorage/src/main/java/tech/pegasys/teku/services/chainstorage/StorageService.java @@ -38,9 +38,8 @@ import tech.pegasys.teku.storage.api.Eth1DepositStorageChannel; import tech.pegasys.teku.storage.api.SidecarUpdateChannel; import tech.pegasys.teku.storage.api.VoteUpdateChannel; -import tech.pegasys.teku.storage.archive.DataArchive; -import tech.pegasys.teku.storage.archive.fsarchive.FileSystemArchive; -import tech.pegasys.teku.storage.archive.nooparchive.NoopDataArchive; +import tech.pegasys.teku.storage.archive.BlobSidecarsArchiver; +import tech.pegasys.teku.storage.archive.filesystem.FileSystemBlobSidecarsArchiver; import tech.pegasys.teku.storage.server.BatchingVoteUpdateChannel; import tech.pegasys.teku.storage.server.ChainStorage; import tech.pegasys.teku.storage.server.CombinedStorageChannelSplitter; @@ -160,11 +159,13 @@ protected SafeFuture doStart() { pruningActiveLabelledGauge); } - final DataArchive dataArchive = + final BlobSidecarsArchiver blobSidecarsArchiver = config .getBlobsArchivePath() - .map(path -> new FileSystemArchive(Path.of(path))) - .orElse(new NoopDataArchive()); + .map( + path -> + new FileSystemBlobSidecarsArchiver(config.getSpec(), Path.of(path))) + .orElse(BlobSidecarsArchiver.NOOP); if (config.getSpec().isMilestoneSupported(SpecMilestone.DENEB)) { blobsPruner = @@ -172,7 +173,7 @@ protected SafeFuture doStart() { new BlobSidecarPruner( config.getSpec(), database, - dataArchive, + blobSidecarsArchiver, serviceConfig.getMetricsSystem(), storagePrunerAsyncRunner, serviceConfig.getTimeProvider(), @@ -184,13 +185,16 @@ protected SafeFuture doStart() { pruningActiveLabelledGauge, config.isStoreNonCanonicalBlocksEnabled())); } - final EventChannels eventChannels = serviceConfig.getEventChannels(); chainStorage = ChainStorage.create( database, config.getSpec(), config.getDataStorageMode(), - config.getStateRebuildTimeoutSeconds()); + config.getStateRebuildTimeoutSeconds(), + blobSidecarsArchiver); + + final EventChannels eventChannels = serviceConfig.getEventChannels(); + final DepositStorage depositStorage = DepositStorage.create( eventChannels.getPublisher(Eth1EventsChannel.class), diff --git a/storage/api/src/main/java/tech/pegasys/teku/storage/api/StorageQueryChannel.java b/storage/api/src/main/java/tech/pegasys/teku/storage/api/StorageQueryChannel.java index 1c7a2a33ca6..b3c31c96f4e 100644 --- a/storage/api/src/main/java/tech/pegasys/teku/storage/api/StorageQueryChannel.java +++ b/storage/api/src/main/java/tech/pegasys/teku/storage/api/StorageQueryChannel.java @@ -58,7 +58,7 @@ public interface StorageQueryChannel extends ChannelInterface { SafeFuture> getHotBlockAndStateByBlockRoot(Bytes32 blockRoot); SafeFuture> getHotStateAndBlockSummaryByBlockRoot( - final Bytes32 blockRoot); + Bytes32 blockRoot); /** * Returns "hot" blocks - the latest finalized block or blocks that descend from the latest @@ -112,6 +112,11 @@ SafeFuture> getBlobSidecarKeys( SafeFuture> getBlobSidecarKeys( SlotAndBlockRoot slotAndBlockRoot); + // Methods for retrieving archived blobs (when enabled) + SafeFuture> getArchivedBlobSidecars(SlotAndBlockRoot slotAndBlockRoot); + + SafeFuture> getArchivedBlobSidecars(UInt64 slot); + SafeFuture> getFirstCustodyIncompleteSlot(); SafeFuture> getFirstSamplerIncompleteSlot(); diff --git a/storage/src/integration-test/java/tech/pegasys/teku/storage/server/kvstore/DatabaseTest.java b/storage/src/integration-test/java/tech/pegasys/teku/storage/server/kvstore/DatabaseTest.java index 34905e99a08..7664c6483b9 100644 --- a/storage/src/integration-test/java/tech/pegasys/teku/storage/server/kvstore/DatabaseTest.java +++ b/storage/src/integration-test/java/tech/pegasys/teku/storage/server/kvstore/DatabaseTest.java @@ -85,7 +85,7 @@ import tech.pegasys.teku.storage.api.OnDiskStoreData; import tech.pegasys.teku.storage.api.StorageUpdate; import tech.pegasys.teku.storage.api.WeakSubjectivityUpdate; -import tech.pegasys.teku.storage.archive.fsarchive.FileSystemArchive; +import tech.pegasys.teku.storage.archive.filesystem.FileSystemBlobSidecarsArchiver; import tech.pegasys.teku.storage.client.RecentChainData; import tech.pegasys.teku.storage.server.Database; import tech.pegasys.teku.storage.server.DatabaseContext; @@ -125,7 +125,7 @@ public class DatabaseTest { private StateStorageMode storageMode; private StorageSystem storageSystem; private Database database; - private FileSystemArchive fileSystemDataArchive; + private FileSystemBlobSidecarsArchiver blobSidecarsArchiver; private RecentChainData recentChainData; private UpdatableStore store; private final List storageSystems = new ArrayList<>(); @@ -142,7 +142,7 @@ private void setupWithSpec(final Spec spec) throws IOException { this.chainProperties = new ChainProperties(spec); final Path blobsArchive = Files.createTempDirectory("blobs"); tmpDirectories.add(blobsArchive.toFile()); - this.fileSystemDataArchive = new FileSystemArchive(blobsArchive); + this.blobSidecarsArchiver = new FileSystemBlobSidecarsArchiver(spec, blobsArchive); genesisBlockAndState = chainBuilder.generateGenesis(genesisTime, true); genesisCheckpoint = getCheckpointForBlock(genesisBlockAndState.getBlock()); genesisAnchor = AnchorPoint.fromGenesisState(spec, genesisBlockAndState.getState()); @@ -305,9 +305,7 @@ public void verifyBlobsLifecycle(final DatabaseContext context) throws IOExcepti List.of(blobSidecar5_0))); // let's prune with limit to 1 - assertThat( - database.pruneOldestBlobSidecars( - UInt64.MAX_VALUE, 1, fileSystemDataArchive.getBlobSidecarWriter())) + assertThat(database.pruneOldestBlobSidecars(UInt64.MAX_VALUE, 1, blobSidecarsArchiver)) .isTrue(); assertBlobSidecarKeys( blobSidecar2_0.getSlot(), @@ -329,9 +327,7 @@ public void verifyBlobsLifecycle(final DatabaseContext context) throws IOExcepti assertThat(getSlotBlobsArchiveFile(blobSidecar2_0)).doesNotExist(); // let's prune up to slot 1 (nothing will be pruned) - assertThat( - database.pruneOldestBlobSidecars(ONE, 10, fileSystemDataArchive.getBlobSidecarWriter())) - .isFalse(); + assertThat(database.pruneOldestBlobSidecars(ONE, 10, blobSidecarsArchiver)).isFalse(); assertBlobSidecarKeys( blobSidecar2_0.getSlot(), blobSidecar5_0.getSlot(), @@ -348,9 +344,7 @@ public void verifyBlobsLifecycle(final DatabaseContext context) throws IOExcepti assertThat(database.getBlobSidecarColumnCount()).isEqualTo(4L); // let's prune all from slot 4 excluded - assertThat( - database.pruneOldestBlobSidecars( - UInt64.valueOf(3), 10, fileSystemDataArchive.getBlobSidecarWriter())) + assertThat(database.pruneOldestBlobSidecars(UInt64.valueOf(3), 10, blobSidecarsArchiver)) .isFalse(); assertBlobSidecarKeys( blobSidecar1_0.getSlot(), blobSidecar5_0.getSlot(), blobSidecarToKey(blobSidecar5_0)); @@ -364,9 +358,7 @@ public void verifyBlobsLifecycle(final DatabaseContext context) throws IOExcepti assertThat(getSlotBlobsArchiveFile(blobSidecar5_0)).doesNotExist(); // let's prune all - assertThat( - database.pruneOldestBlobSidecars( - UInt64.valueOf(5), 1, fileSystemDataArchive.getBlobSidecarWriter())) + assertThat(database.pruneOldestBlobSidecars(UInt64.valueOf(5), 1, blobSidecarsArchiver)) .isTrue(); // all empty now assertBlobSidecarKeys(ZERO, UInt64.valueOf(10)); @@ -377,8 +369,9 @@ public void verifyBlobsLifecycle(final DatabaseContext context) throws IOExcepti assertThat(getSlotBlobsArchiveFile(blobSidecar5_0)).exists(); } - private File getSlotBlobsArchiveFile(final BlobSidecar blobSidecar) { - return fileSystemDataArchive.resolve(blobSidecar.getSlotAndBlockRoot()); + private Path getSlotBlobsArchiveFile(final BlobSidecar blobSidecar) { + return blobSidecarsArchiver.resolveArchivePath( + blobSidecar.getSlotAndBlockRoot().getBlockRoot()); } @TestTemplate @@ -480,8 +473,7 @@ public void verifyNonCanonicalBlobsLifecycle(final DatabaseContext context) thro // Pruning with a prune limit set to 1: Only blobSidecar1 will be pruned assertThat( - database.pruneOldestNonCanonicalBlobSidecars( - UInt64.MAX_VALUE, 1, fileSystemDataArchive.getBlobSidecarWriter())) + database.pruneOldestNonCanonicalBlobSidecars(UInt64.MAX_VALUE, 1, blobSidecarsArchiver)) .isTrue(); assertNonCanonicalBlobSidecarKeys( blobSidecar2_0.getSlot(), @@ -502,9 +494,7 @@ public void verifyNonCanonicalBlobsLifecycle(final DatabaseContext context) thro assertThat(getSlotBlobsArchiveFile(blobSidecar2_0)).doesNotExist(); // Pruning up to slot 1: No blobs pruned - assertThat( - database.pruneOldestNonCanonicalBlobSidecars( - ONE, 10, fileSystemDataArchive.getBlobSidecarWriter())) + assertThat(database.pruneOldestNonCanonicalBlobSidecars(ONE, 10, blobSidecarsArchiver)) .isFalse(); assertNonCanonicalBlobSidecarKeys( blobSidecar2_0.getSlot(), @@ -527,7 +517,7 @@ public void verifyNonCanonicalBlobsLifecycle(final DatabaseContext context) thro // Prune blobs up to slot 3 assertThat( database.pruneOldestNonCanonicalBlobSidecars( - UInt64.valueOf(3), 10, fileSystemDataArchive.getBlobSidecarWriter())) + UInt64.valueOf(3), 10, blobSidecarsArchiver)) .isFalse(); assertNonCanonicalBlobSidecarKeys( blobSidecar1_0.getSlot(), blobSidecar5_0.getSlot(), blobSidecarToKey(blobSidecar5_0)); @@ -542,7 +532,7 @@ public void verifyNonCanonicalBlobsLifecycle(final DatabaseContext context) thro // Pruning all blobs assertThat( database.pruneOldestNonCanonicalBlobSidecars( - UInt64.valueOf(5), 1, fileSystemDataArchive.getBlobSidecarWriter())) + UInt64.valueOf(5), 1, blobSidecarsArchiver)) .isTrue(); // No blobs should be left assertNonCanonicalBlobSidecarKeys(ZERO, UInt64.valueOf(10)); diff --git a/storage/src/main/java/tech/pegasys/teku/storage/archive/BlobSidecarsArchiver.java b/storage/src/main/java/tech/pegasys/teku/storage/archive/BlobSidecarsArchiver.java new file mode 100644 index 00000000000..5c8dffc509f --- /dev/null +++ b/storage/src/main/java/tech/pegasys/teku/storage/archive/BlobSidecarsArchiver.java @@ -0,0 +1,46 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.storage.archive; + +import java.util.List; +import java.util.Optional; +import tech.pegasys.teku.infrastructure.unsigned.UInt64; +import tech.pegasys.teku.spec.datastructures.blobs.versions.deneb.BlobSidecar; +import tech.pegasys.teku.spec.datastructures.blocks.SlotAndBlockRoot; + +public interface BlobSidecarsArchiver { + + BlobSidecarsArchiver NOOP = + new BlobSidecarsArchiver() { + @Override + public void archive( + final SlotAndBlockRoot slotAndBlockRoot, final List blobSidecars) {} + + @Override + public Optional> retrieve(final SlotAndBlockRoot slotAndBlockRoot) { + return Optional.empty(); + } + + @Override + public Optional> retrieve(final UInt64 slot) { + return Optional.empty(); + } + }; + + void archive(SlotAndBlockRoot slotAndBlockRoot, List blobSidecars); + + Optional> retrieve(SlotAndBlockRoot slotAndBlockRoot); + + Optional> retrieve(UInt64 slot); +} diff --git a/storage/src/main/java/tech/pegasys/teku/storage/archive/DataArchive.java b/storage/src/main/java/tech/pegasys/teku/storage/archive/DataArchive.java deleted file mode 100644 index 201a1fd4ef0..00000000000 --- a/storage/src/main/java/tech/pegasys/teku/storage/archive/DataArchive.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.storage.archive; - -import java.io.IOException; -import java.util.List; -import tech.pegasys.teku.spec.datastructures.blobs.versions.deneb.BlobSidecar; - -/** - * Interface for a data archive which stores prunable BlobSidecars outside the data availability - * window and could be extended later to include other data types. It is expected that the - * DataArchive is on disk or externally stored with slow write and recovery times. Initial interface - * is write only, but may be expanded to include read operations later. - */ -public interface DataArchive { - - /** - * Returns the archive writer capable of storing BlobSidecars. - * - * @return a closeable DataArchiveWriter for writing BlobSidecars - * @throws IOException throw exception if it fails to get a writer. - */ - DataArchiveWriter> getBlobSidecarWriter() throws IOException; -} diff --git a/storage/src/main/java/tech/pegasys/teku/storage/archive/DataArchiveWriter.java b/storage/src/main/java/tech/pegasys/teku/storage/archive/DataArchiveWriter.java deleted file mode 100644 index 1331365fab6..00000000000 --- a/storage/src/main/java/tech/pegasys/teku/storage/archive/DataArchiveWriter.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.storage.archive; - -import java.io.Closeable; - -/** - * An interface to allow storing data that is to be pruned from the Database. If the store function - * is successful it returns true, signalling the data can be pruned. If the store function fails, - * the data was not stored and the data should not be pruned. - * - * @param the data to be stored. - */ -public interface DataArchiveWriter extends Closeable { - boolean archive(final T data); -} diff --git a/storage/src/main/java/tech/pegasys/teku/storage/archive/filesystem/FileSystemBlobSidecarsArchiver.java b/storage/src/main/java/tech/pegasys/teku/storage/archive/filesystem/FileSystemBlobSidecarsArchiver.java new file mode 100644 index 00000000000..cf43ee28080 --- /dev/null +++ b/storage/src/main/java/tech/pegasys/teku/storage/archive/filesystem/FileSystemBlobSidecarsArchiver.java @@ -0,0 +1,209 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.storage.archive.filesystem; + +import static tech.pegasys.teku.infrastructure.json.types.DeserializableTypeDefinition.listOf; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Splitter; +import com.google.common.collect.Iterables; +import java.io.BufferedWriter; +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Stream; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.tuweni.bytes.Bytes32; +import tech.pegasys.teku.infrastructure.json.JsonUtil; +import tech.pegasys.teku.infrastructure.json.types.DeserializableTypeDefinition; +import tech.pegasys.teku.infrastructure.unsigned.UInt64; +import tech.pegasys.teku.spec.Spec; +import tech.pegasys.teku.spec.SpecMilestone; +import tech.pegasys.teku.spec.datastructures.blobs.versions.deneb.BlobSidecar; +import tech.pegasys.teku.spec.datastructures.blocks.SlotAndBlockRoot; +import tech.pegasys.teku.spec.schemas.SchemaDefinitionsDeneb; +import tech.pegasys.teku.storage.archive.BlobSidecarsArchiver; + +public class FileSystemBlobSidecarsArchiver implements BlobSidecarsArchiver { + + private static final String INDEX_FILE_SUFFIX = "index.dat"; + private static final long INDEX_FILE_SLOT_RANGE_SIZE = 100_000; + + private static final Logger LOG = LogManager.getLogger(); + + private final Spec spec; + private final Path baseDirectory; + + private final Map>> + milestoneToTypeDefinitionCache = new HashMap<>(); + + public FileSystemBlobSidecarsArchiver(final Spec spec, final Path baseDirectory) { + this.spec = spec; + this.baseDirectory = baseDirectory; + } + + @Override + public void archive( + final SlotAndBlockRoot slotAndBlockRoot, final List blobSidecars) { + final Path archivePath = resolveArchivePath(slotAndBlockRoot.getBlockRoot()); + + if (Files.exists(archivePath)) { + LOG.error( + "Failed to archive blob sidecars for {}. File exists: {}", slotAndBlockRoot, archivePath); + return; + } + + try { + Files.createDirectories(archivePath.getParent()); + } catch (final IOException __) { + LOG.error( + "Failed to archive blob sidecars for {}. Could not create directories: {}", + slotAndBlockRoot, + archivePath.getParent()); + return; + } + + final Path indexFile = resolveIndexFile(slotAndBlockRoot.getSlot()); + + try (final OutputStream output = Files.newOutputStream(archivePath); + final BufferedWriter indexWriter = + Files.newBufferedWriter( + indexFile, + StandardCharsets.UTF_8, + StandardOpenOption.CREATE, + StandardOpenOption.APPEND)) { + if (blobSidecars.isEmpty()) { + // empty list + output.write("[]".getBytes(StandardCharsets.UTF_8)); + } else { + writeBlobSidecars(output, slotAndBlockRoot.getSlot(), blobSidecars); + } + indexWriter.write(formatIndexFileOutput(slotAndBlockRoot)); + indexWriter.newLine(); + } catch (final IOException ex) { + LOG.error(String.format("Failed to archive blob sidecars for %s", slotAndBlockRoot), ex); + } + } + + @Override + public Optional> retrieve(final SlotAndBlockRoot slotAndBlockRoot) { + try { + final Path archivePath = resolveArchivePath(slotAndBlockRoot.getBlockRoot()); + if (!Files.exists(archivePath)) { + return Optional.empty(); + } + final String blobSidecarsJson = Files.readString(archivePath); + final List blobSidecars = + JsonUtil.parse(blobSidecarsJson, getJsonTypeDefinition(slotAndBlockRoot.getSlot())); + return Optional.of(blobSidecars); + } catch (IOException ex) { + LOG.error( + String.format( + "Failed to retrieve blob sidecars for slot %s and block root %s", + slotAndBlockRoot.getSlot(), slotAndBlockRoot.getBlockRoot()), + ex); + return Optional.empty(); + } + } + + @Override + public Optional> retrieve(final UInt64 slot) { + final Path indexFile = resolveIndexFile(slot); + if (!Files.exists(indexFile)) { + return Optional.empty(); + } + try (final Stream lines = Files.lines(indexFile)) { + return lines + .filter(line -> line.startsWith(slot.toString())) + .findFirst() + .flatMap( + line -> { + // lines in the index file are in the format of: " " + final Bytes32 blockRoot = + Bytes32.fromHexString(Iterables.get(Splitter.on(' ').split(line), 1)); + return retrieve(new SlotAndBlockRoot(slot, blockRoot)); + }); + } catch (IOException ex) { + LOG.error(String.format("Failed to retrieve blob sidecars for slot %s", slot), ex); + return Optional.empty(); + } + } + + /** + * Given a basePath, block root, return where to store/find the BlobSidecar. Initial + * implementation uses blockRoot as a hex string in the directory of the first two characters. + * + * @param blockRoot the block root. + * @return a path of where to store or find the BlobSidecar + */ + @VisibleForTesting + public Path resolveArchivePath(final Bytes32 blockRoot) { + // For blockroot 0x1a2bcd... the directory is basePath/1a/2b/1a2bcd... + // 256 * 256 directories = 65,536. + // Assume 8000 to 10000 blobs per day. With perfect hash distribution, + // all directories have one file after a week. After 1 year, expect 50 files in each directory. + final String blockRootString = blockRoot.toUnprefixedHexString(); + final String dir1 = blockRootString.substring(0, 2); + final String dir2 = blockRootString.substring(2, 4); + final String blobSidecarFilename = + dir1 + File.separator + dir2 + File.separator + blockRootString; + return baseDirectory.resolve(blobSidecarFilename); + } + + /** + * Given a basePath, slot, return where to store/find the slot -> root index file + * + * @param slot the slot. + * @return a path of where to store or find the slot -> root index file + */ + @VisibleForTesting + Path resolveIndexFile(final UInt64 slot) { + final UInt64 lowerBound = + slot.dividedBy(INDEX_FILE_SLOT_RANGE_SIZE).times(INDEX_FILE_SLOT_RANGE_SIZE); + final UInt64 upperBound = lowerBound.plus(INDEX_FILE_SLOT_RANGE_SIZE).minusMinZero(1); + final String fileName = String.format("%s-%s_%s", lowerBound, upperBound, INDEX_FILE_SUFFIX); + return baseDirectory.resolve(fileName); + } + + private void writeBlobSidecars( + final OutputStream out, final UInt64 slot, final List blobSidecars) + throws IOException { + JsonUtil.serializeToBytes(blobSidecars, getJsonTypeDefinition(slot), out); + } + + private DeserializableTypeDefinition> getJsonTypeDefinition(final UInt64 slot) { + return milestoneToTypeDefinitionCache.computeIfAbsent( + spec.atSlot(slot).getMilestone(), + milestone -> + listOf( + SchemaDefinitionsDeneb.required(spec.forMilestone(milestone).getSchemaDefinitions()) + .getBlobSidecarSchema() + .getJsonTypeDefinition())); + } + + private String formatIndexFileOutput(final SlotAndBlockRoot slotAndBlockRoot) { + return slotAndBlockRoot.getSlot() + + " " + + slotAndBlockRoot.getBlockRoot().toUnprefixedHexString(); + } +} diff --git a/storage/src/main/java/tech/pegasys/teku/storage/archive/fsarchive/BlobSidecarJsonWriter.java b/storage/src/main/java/tech/pegasys/teku/storage/archive/fsarchive/BlobSidecarJsonWriter.java deleted file mode 100644 index 2c85a310235..00000000000 --- a/storage/src/main/java/tech/pegasys/teku/storage/archive/fsarchive/BlobSidecarJsonWriter.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.storage.archive.fsarchive; - -import static java.nio.charset.StandardCharsets.UTF_8; -import static tech.pegasys.teku.infrastructure.json.types.DeserializableTypeDefinition.listOf; - -import java.io.IOException; -import java.io.OutputStream; -import java.util.List; -import java.util.Objects; -import tech.pegasys.teku.infrastructure.json.JsonUtil; -import tech.pegasys.teku.infrastructure.json.types.SerializableTypeDefinition; -import tech.pegasys.teku.spec.datastructures.blobs.versions.deneb.BlobSidecar; - -public class BlobSidecarJsonWriter { - - public void writeSlotBlobSidecars(final OutputStream out, final List blobSidecars) - throws IOException { - Objects.requireNonNull(out); - Objects.requireNonNull(blobSidecars); - - // Technically not possible as pruner prunes sidecars and not slots. - if (blobSidecars.isEmpty()) { - out.write("[]".getBytes(UTF_8)); - return; - } - - final SerializableTypeDefinition> type = - listOf(blobSidecars.getFirst().getSchema().getJsonTypeDefinition()); - JsonUtil.serializeToBytes(blobSidecars, type, out); - } -} diff --git a/storage/src/main/java/tech/pegasys/teku/storage/archive/fsarchive/FileSystemArchive.java b/storage/src/main/java/tech/pegasys/teku/storage/archive/fsarchive/FileSystemArchive.java deleted file mode 100644 index 0839207063b..00000000000 --- a/storage/src/main/java/tech/pegasys/teku/storage/archive/fsarchive/FileSystemArchive.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.storage.archive.fsarchive; - -import java.io.BufferedWriter; -import java.io.Closeable; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.List; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import tech.pegasys.teku.spec.datastructures.blobs.versions.deneb.BlobSidecar; -import tech.pegasys.teku.spec.datastructures.blocks.SlotAndBlockRoot; -import tech.pegasys.teku.storage.archive.DataArchive; -import tech.pegasys.teku.storage.archive.DataArchiveWriter; - -/** - * A file system based implementations of the DataArchive. Writes to a directory using the - * PathResolver method to decide where to write the files. - */ -public class FileSystemArchive implements DataArchive { - static final String INDEX_FILE = "index.dat"; - private static final Logger LOG = LogManager.getLogger(); - - private final Path baseDirectory; - private final BlobSidecarJsonWriter jsonWriter; - - public FileSystemArchive(final Path baseDirectory) { - this.baseDirectory = baseDirectory; - this.jsonWriter = new BlobSidecarJsonWriter(); - } - - @Override - public DataArchiveWriter> getBlobSidecarWriter() throws IOException { - - try { - final File indexFile = baseDirectory.resolve(INDEX_FILE).toFile(); - return new FileSystemBlobSidecarWriter(indexFile); - } catch (IOException e) { - LOG.warn("Unable to create BlobSidecar archive writer", e); - throw e; - } - } - - private class FileSystemBlobSidecarWriter - implements DataArchiveWriter>, Closeable { - final BufferedWriter indexWriter; - - public FileSystemBlobSidecarWriter(final File indexFile) throws IOException { - indexWriter = - new BufferedWriter( - new OutputStreamWriter( - new FileOutputStream(indexFile, true), StandardCharsets.UTF_8)); - } - - @Override - public boolean archive(final List blobSidecars) { - if (blobSidecars == null || blobSidecars.isEmpty()) { - return true; - } - - final SlotAndBlockRoot slotAndBlockRoot = blobSidecars.getFirst().getSlotAndBlockRoot(); - final File file = resolve(slotAndBlockRoot); - if (file.exists()) { - LOG.error("Failed to write BlobSidecar. File exists: {}", file.toString()); - return false; - } - - try { - Files.createDirectories(file.toPath().getParent()); - } catch (IOException e) { - LOG.error( - "Failed to write BlobSidecar. Could not make directories to: {}", - file.getParentFile().toString()); - return false; - } - - try (FileOutputStream output = new FileOutputStream(file)) { - jsonWriter.writeSlotBlobSidecars(output, blobSidecars); - indexWriter.write(formatIndexOutput(slotAndBlockRoot)); - indexWriter.newLine(); - return true; - } catch (IOException | NullPointerException e) { - LOG.error("Failed to write BlobSidecar.", e); - return false; - } - } - - private String formatIndexOutput(final SlotAndBlockRoot slotAndBlockRoot) { - return slotAndBlockRoot.getSlot() - + " " - + slotAndBlockRoot.getBlockRoot().toUnprefixedHexString(); - } - - @Override - public void close() throws IOException { - indexWriter.flush(); - indexWriter.close(); - } - } - - /** - * Given a basePath, slot and block root, return where to store/find the BlobSidecar. Initial - * implementation uses blockRoot as a hex string in the directory of the first two characters. - * - * @param slotAndBlockRoot The slot and block root. - * @return a path of where to store or find the BlobSidecar - */ - public File resolve(final SlotAndBlockRoot slotAndBlockRoot) { - // For blockroot 0x1a2bcd... the directory is basePath/1a/2b/1a2bcd... - // 256 * 256 directories = 65,536. - // Assume 8000 to 10000 blobs per day. With perfect hash distribution, - // all directories have one file after a week. After 1 year, expect 50 files in each directory. - String blockRootString = slotAndBlockRoot.getBlockRoot().toUnprefixedHexString(); - final String dir1 = blockRootString.substring(0, 2); - final String dir2 = blockRootString.substring(2, 4); - final String blobSidecarFilename = - dir1 + File.separator + dir2 + File.separator + blockRootString; - return baseDirectory.resolve(blobSidecarFilename).toFile(); - } -} diff --git a/storage/src/main/java/tech/pegasys/teku/storage/archive/nooparchive/DataArchiveNoopWriter.java b/storage/src/main/java/tech/pegasys/teku/storage/archive/nooparchive/DataArchiveNoopWriter.java deleted file mode 100644 index 00a631f5baa..00000000000 --- a/storage/src/main/java/tech/pegasys/teku/storage/archive/nooparchive/DataArchiveNoopWriter.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.storage.archive.nooparchive; - -import java.io.IOException; -import tech.pegasys.teku.storage.archive.DataArchiveWriter; - -public class DataArchiveNoopWriter implements DataArchiveWriter { - - @Override - public boolean archive(final T data) { - return true; - } - - @Override - public void close() throws IOException {} -} diff --git a/storage/src/main/java/tech/pegasys/teku/storage/archive/nooparchive/NoopDataArchive.java b/storage/src/main/java/tech/pegasys/teku/storage/archive/nooparchive/NoopDataArchive.java deleted file mode 100644 index 6de2de80585..00000000000 --- a/storage/src/main/java/tech/pegasys/teku/storage/archive/nooparchive/NoopDataArchive.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.storage.archive.nooparchive; - -import java.util.List; -import tech.pegasys.teku.spec.datastructures.blobs.versions.deneb.BlobSidecar; -import tech.pegasys.teku.storage.archive.DataArchive; -import tech.pegasys.teku.storage.archive.DataArchiveWriter; - -public class NoopDataArchive implements DataArchive { - - private static final DataArchiveWriter> BLOB_SIDECAR_WRITER = - new DataArchiveNoopWriter<>(); - - @Override - public DataArchiveWriter> getBlobSidecarWriter() { - return BLOB_SIDECAR_WRITER; - } -} diff --git a/storage/src/main/java/tech/pegasys/teku/storage/client/CombinedChainDataClient.java b/storage/src/main/java/tech/pegasys/teku/storage/client/CombinedChainDataClient.java index e44c54a918a..f1653c3d25c 100644 --- a/storage/src/main/java/tech/pegasys/teku/storage/client/CombinedChainDataClient.java +++ b/storage/src/main/java/tech/pegasys/teku/storage/client/CombinedChainDataClient.java @@ -179,15 +179,15 @@ public SafeFuture> getBlobSidecars( public SafeFuture> getBlobSidecars( final SlotAndBlockRoot slotAndBlockRoot, final List indices) { - final Optional> maybeBlobSidecars = - recentChainData.getBlobSidecars(slotAndBlockRoot); - if (maybeBlobSidecars.isPresent()) { - return SafeFuture.completedFuture(filterBlobSidecars(maybeBlobSidecars.get(), indices)); - } - return historicalChainData - .getBlobSidecarKeys(slotAndBlockRoot) - .thenApply(keys -> filterBlobSidecarKeys(keys, indices)) - .thenCompose(this::getBlobSidecars); + return recentChainData + .getBlobSidecars(slotAndBlockRoot) + .map(blobSidecars -> SafeFuture.completedFuture(filterBlobSidecars(blobSidecars, indices))) + .orElseGet( + () -> + historicalChainData + .getBlobSidecarKeys(slotAndBlockRoot) + .thenApply(keys -> filterBlobSidecarKeys(keys, indices)) + .thenCompose(this::getBlobSidecars)); } public SafeFuture> getAllBlobSidecars( @@ -195,35 +195,21 @@ public SafeFuture> getAllBlobSidecars( return historicalChainData .getAllBlobSidecarKeys(slot) .thenApply(keys -> filterBlobSidecarKeys(keys, indices)) - .thenCompose(this::getAllBlobSidecars); - } - - private List filterBlobSidecars( - final List blobSidecars, final List indices) { - if (indices.isEmpty()) { - return blobSidecars; - } - return blobSidecars.stream().filter(key -> indices.contains(key.getIndex())).toList(); - } - - private Stream filterBlobSidecarKeys( - final List keys, final List indices) { - if (indices.isEmpty()) { - return keys.stream(); - } - return keys.stream().filter(key -> indices.contains(key.getBlobIndex())); + .thenCompose(this::getBlobSidecars); } - private SafeFuture> getBlobSidecars( - final Stream keys) { - return SafeFuture.collectAll(keys.map(this::getAllBlobSidecarByKey)) - .thenApply(blobSidecars -> blobSidecars.stream().flatMap(Optional::stream).toList()); + public SafeFuture> getArchivedBlobSidecars( + final SlotAndBlockRoot slotAndBlockRoot, final List indices) { + return historicalChainData + .getArchivedBlobSidecars(slotAndBlockRoot) + .thenApply(blobSidecars -> filterBlobSidecars(blobSidecars, indices)); } - private SafeFuture> getAllBlobSidecars( - final Stream keys) { - return SafeFuture.collectAll(keys.map(this::getAllBlobSidecarByKey)) - .thenApply(blobSidecars -> blobSidecars.stream().flatMap(Optional::stream).toList()); + public SafeFuture> getArchivedBlobSidecars( + final UInt64 slot, final List indices) { + return historicalChainData + .getArchivedBlobSidecars(slot) + .thenApply(blobSidecars -> filterBlobSidecars(blobSidecars, indices)); } public SafeFuture> getDataColumnSidecars( @@ -572,15 +558,15 @@ public SafeFuture> getBlobSidecarByBlockRootAndIndex( public SafeFuture> getBlobSidecarByKey( final SlotAndBlockRootAndBlobIndex key) { - final Optional> maybeBlobSidecars = - recentChainData.getBlobSidecars(key.getSlotAndBlockRoot()); - if (maybeBlobSidecars.isPresent()) { - return key.getBlobIndex().isLessThan(maybeBlobSidecars.get().size()) - ? SafeFuture.completedFuture( - Optional.of(maybeBlobSidecars.get().get(key.getBlobIndex().intValue()))) - : SafeFuture.completedFuture(Optional.empty()); - } - return historicalChainData.getBlobSidecar(key); + return recentChainData + .getBlobSidecars(key.getSlotAndBlockRoot()) + .>>map( + blobSidecars -> + key.getBlobIndex().isLessThan(blobSidecars.size()) + ? SafeFuture.completedFuture( + Optional.of(blobSidecars.get(key.getBlobIndex().intValue()))) + : SafeFuture.completedFuture(Optional.empty())) + .orElseGet(() -> historicalChainData.getBlobSidecar(key)); } public SafeFuture> getBlobSidecarKeys( @@ -884,6 +870,28 @@ private SafeFuture> regenerateStateAndSlotExact(final UInt blockAndState -> regenerateBeaconState(blockAndState.getState(), slot))); } + private List filterBlobSidecars( + final List blobSidecars, final List indices) { + if (indices.isEmpty()) { + return blobSidecars; + } + return blobSidecars.stream().filter(key -> indices.contains(key.getIndex())).toList(); + } + + private Stream filterBlobSidecarKeys( + final List keys, final List indices) { + if (indices.isEmpty()) { + return keys.stream(); + } + return keys.stream().filter(key -> indices.contains(key.getBlobIndex())); + } + + private SafeFuture> getBlobSidecars( + final Stream keys) { + return SafeFuture.collectAll(keys.map(this::getAllBlobSidecarByKey)) + .thenApply(blobSidecars -> blobSidecars.stream().flatMap(Optional::stream).toList()); + } + private Optional getFinalizedCheckpoint() { return Optional.ofNullable(getStore()).map(ReadOnlyStore::getFinalizedCheckpoint); } diff --git a/storage/src/main/java/tech/pegasys/teku/storage/server/ChainStorage.java b/storage/src/main/java/tech/pegasys/teku/storage/server/ChainStorage.java index 196ffa2176c..fbced5b7da4 100644 --- a/storage/src/main/java/tech/pegasys/teku/storage/server/ChainStorage.java +++ b/storage/src/main/java/tech/pegasys/teku/storage/server/ChainStorage.java @@ -51,6 +51,7 @@ import tech.pegasys.teku.storage.api.VoteUpdateChannel; import tech.pegasys.teku.storage.api.WeakSubjectivityState; import tech.pegasys.teku.storage.api.WeakSubjectivityUpdate; +import tech.pegasys.teku.storage.archive.BlobSidecarsArchiver; import tech.pegasys.teku.storage.server.state.FinalizedStateCache; public class ChainStorage @@ -60,33 +61,38 @@ public class ChainStorage SidecarUpdateChannel, ChainStorageFacade { private static final Logger LOG = LogManager.getLogger(); + private final Database database; private final FinalizedStateCache finalizedStateCache; - private final StateStorageMode dataStorageMode; + private final BlobSidecarsArchiver blobSidecarsArchiver; private Optional cachedStoreData = Optional.empty(); private ChainStorage( final Database database, final FinalizedStateCache finalizedStateCache, - final StateStorageMode dataStorageMode) { + final StateStorageMode dataStorageMode, + final BlobSidecarsArchiver blobSidecarsArchiver) { this.database = database; this.finalizedStateCache = finalizedStateCache; this.dataStorageMode = dataStorageMode; + this.blobSidecarsArchiver = blobSidecarsArchiver; } public static ChainStorage create( final Database database, final Spec spec, final StateStorageMode dataStorageMode, - final int stateRebuildTimeoutSeconds) { + final int stateRebuildTimeoutSeconds, + final BlobSidecarsArchiver blobSidecarsArchiver) { final int finalizedStateCacheSize = spec.getSlotsPerEpoch(SpecConfig.GENESIS_EPOCH) * 3; return new ChainStorage( database, new FinalizedStateCache( spec, database, finalizedStateCacheSize, true, stateRebuildTimeoutSeconds), - dataStorageMode); + dataStorageMode, + blobSidecarsArchiver); } private synchronized Optional getStore() { @@ -371,6 +377,17 @@ public SafeFuture> getBlobSidecarKeys( return SafeFuture.of(() -> database.getBlobSidecarKeys(slotAndBlockRoot)); } + @Override + public SafeFuture> getArchivedBlobSidecars( + final SlotAndBlockRoot slotAndBlockRoot) { + return SafeFuture.of(() -> blobSidecarsArchiver.retrieve(slotAndBlockRoot).orElse(List.of())); + } + + @Override + public SafeFuture> getArchivedBlobSidecars(final UInt64 slot) { + return SafeFuture.of(() -> blobSidecarsArchiver.retrieve(slot).orElse(List.of())); + } + @Override public SafeFuture> getFirstCustodyIncompleteSlot() { return SafeFuture.of(database::getFirstCustodyIncompleteSlot); diff --git a/storage/src/main/java/tech/pegasys/teku/storage/server/CombinedStorageChannelSplitter.java b/storage/src/main/java/tech/pegasys/teku/storage/server/CombinedStorageChannelSplitter.java index 4c838f289d3..a5e3fe3fdb5 100644 --- a/storage/src/main/java/tech/pegasys/teku/storage/server/CombinedStorageChannelSplitter.java +++ b/storage/src/main/java/tech/pegasys/teku/storage/server/CombinedStorageChannelSplitter.java @@ -252,6 +252,17 @@ public SafeFuture> getBlobSidecarKeys( return asyncRunner.runAsync(() -> queryDelegate.getBlobSidecarKeys(slotAndBlockRoot)); } + @Override + public SafeFuture> getArchivedBlobSidecars( + final SlotAndBlockRoot slotAndBlockRoot) { + return asyncRunner.runAsync(() -> queryDelegate.getArchivedBlobSidecars(slotAndBlockRoot)); + } + + @Override + public SafeFuture> getArchivedBlobSidecars(final UInt64 slot) { + return asyncRunner.runAsync(() -> queryDelegate.getArchivedBlobSidecars(slot)); + } + @Override public SafeFuture> getFirstCustodyIncompleteSlot() { return asyncRunner.runAsync(queryDelegate::getFirstCustodyIncompleteSlot); diff --git a/storage/src/main/java/tech/pegasys/teku/storage/server/Database.java b/storage/src/main/java/tech/pegasys/teku/storage/server/Database.java index e6f6031697e..7d8e14a9c11 100644 --- a/storage/src/main/java/tech/pegasys/teku/storage/server/Database.java +++ b/storage/src/main/java/tech/pegasys/teku/storage/server/Database.java @@ -42,7 +42,7 @@ import tech.pegasys.teku.storage.api.UpdateResult; import tech.pegasys.teku.storage.api.WeakSubjectivityState; import tech.pegasys.teku.storage.api.WeakSubjectivityUpdate; -import tech.pegasys.teku.storage.archive.DataArchiveWriter; +import tech.pegasys.teku.storage.archive.BlobSidecarsArchiver; public interface Database extends AutoCloseable { @@ -76,16 +76,14 @@ void storeFinalizedBlocks( * * @param lastSlotToPrune inclusive, not reached if limit happens first * @param pruneLimit maximum number of slots to prune. - * @param archiveWriter write BlobSidecars to archive when pruning. + * @param blobSidecarsArchiver write BlobSidecars to archive when pruning. * @return true if number of pruned blobs reached the pruneLimit, false otherwise */ boolean pruneOldestBlobSidecars( - UInt64 lastSlotToPrune, - int pruneLimit, - final DataArchiveWriter> archiveWriter); + UInt64 lastSlotToPrune, int pruneLimit, BlobSidecarsArchiver blobSidecarsArchiver); boolean pruneOldestNonCanonicalBlobSidecars( - UInt64 lastSlotToPrune, int pruneLimit, DataArchiveWriter> archiveWriter); + UInt64 lastSlotToPrune, int pruneLimit, BlobSidecarsArchiver blobSidecarsArchiver); @MustBeClosed Stream streamBlobSidecarKeys(UInt64 startSlot, UInt64 endSlot); diff --git a/storage/src/main/java/tech/pegasys/teku/storage/server/kvstore/KvStoreDatabase.java b/storage/src/main/java/tech/pegasys/teku/storage/server/kvstore/KvStoreDatabase.java index 742587e32de..071977b3747 100644 --- a/storage/src/main/java/tech/pegasys/teku/storage/server/kvstore/KvStoreDatabase.java +++ b/storage/src/main/java/tech/pegasys/teku/storage/server/kvstore/KvStoreDatabase.java @@ -73,7 +73,7 @@ import tech.pegasys.teku.storage.api.UpdateResult; import tech.pegasys.teku.storage.api.WeakSubjectivityState; import tech.pegasys.teku.storage.api.WeakSubjectivityUpdate; -import tech.pegasys.teku.storage.archive.DataArchiveWriter; +import tech.pegasys.teku.storage.archive.BlobSidecarsArchiver; import tech.pegasys.teku.storage.server.Database; import tech.pegasys.teku.storage.server.StateStorageMode; import tech.pegasys.teku.storage.server.kvstore.dataaccess.CombinedKvStoreDao; @@ -945,7 +945,7 @@ public Optional getNonCanonicalBlobSidecar(final SlotAndBlockRootAn public boolean pruneOldestBlobSidecars( final UInt64 lastSlotToPrune, final int pruneLimit, - final DataArchiveWriter> archiveWriter) { + final BlobSidecarsArchiver blobSidecarsArchiver) { final Optional earliestBlobSidecarSlot = getEarliestBlobSidecarSlot(); if (earliestBlobSidecarSlot.isPresent() && earliestBlobSidecarSlot.get().isGreaterThan(lastSlotToPrune)) { @@ -953,7 +953,7 @@ public boolean pruneOldestBlobSidecars( } try (final Stream prunableBlobKeys = streamBlobSidecarKeys(earliestBlobSidecarSlot.orElse(UInt64.ZERO), lastSlotToPrune)) { - return pruneBlobSidecars(pruneLimit, prunableBlobKeys, archiveWriter, false); + return pruneBlobSidecars(pruneLimit, prunableBlobKeys, blobSidecarsArchiver, false); } } @@ -961,7 +961,7 @@ public boolean pruneOldestBlobSidecars( public boolean pruneOldestNonCanonicalBlobSidecars( final UInt64 lastSlotToPrune, final int pruneLimit, - final DataArchiveWriter> archiveWriter) { + final BlobSidecarsArchiver blobSidecarsArchiver) { final Optional earliestBlobSidecarSlot = getEarliestBlobSidecarSlot(); if (earliestBlobSidecarSlot.isPresent() && earliestBlobSidecarSlot.get().isGreaterThan(lastSlotToPrune)) { @@ -970,14 +970,15 @@ public boolean pruneOldestNonCanonicalBlobSidecars( try (final Stream prunableNoncanonicalBlobKeys = streamNonCanonicalBlobSidecarKeys( earliestBlobSidecarSlot.orElse(UInt64.ZERO), lastSlotToPrune)) { - return pruneBlobSidecars(pruneLimit, prunableNoncanonicalBlobKeys, archiveWriter, true); + return pruneBlobSidecars( + pruneLimit, prunableNoncanonicalBlobKeys, blobSidecarsArchiver, true); } } private boolean pruneBlobSidecars( final int pruneLimit, final Stream prunableBlobKeys, - final DataArchiveWriter> archiveWriter, + final BlobSidecarsArchiver blobSidecarsArchiver, final boolean nonCanonicalBlobSidecars) { int pruned = 0; @@ -1010,11 +1011,9 @@ private boolean pruneBlobSidecars( LOG.warn("Failed to retrieve BlobSidecars for keys: {}", keys); } - // Attempt to archive the BlobSidecars. - final boolean blobSidecarArchived = archiveWriter.archive(blobSidecars); - if (!blobSidecarArchived) { - LOG.error("Failed to archive and prune BlobSidecars. Stopping pruning"); - break; + if (!keys.isEmpty()) { + final SlotAndBlockRoot slotAndBlockRoot = keys.getFirst().getSlotAndBlockRoot(); + blobSidecarsArchiver.archive(slotAndBlockRoot, blobSidecars); } // Remove the BlobSidecars from the database. diff --git a/storage/src/main/java/tech/pegasys/teku/storage/server/noop/NoOpDatabase.java b/storage/src/main/java/tech/pegasys/teku/storage/server/noop/NoOpDatabase.java index 190f3455eaf..935eaf1fcdb 100644 --- a/storage/src/main/java/tech/pegasys/teku/storage/server/noop/NoOpDatabase.java +++ b/storage/src/main/java/tech/pegasys/teku/storage/server/noop/NoOpDatabase.java @@ -45,7 +45,7 @@ import tech.pegasys.teku.storage.api.UpdateResult; import tech.pegasys.teku.storage.api.WeakSubjectivityState; import tech.pegasys.teku.storage.api.WeakSubjectivityUpdate; -import tech.pegasys.teku.storage.archive.DataArchiveWriter; +import tech.pegasys.teku.storage.archive.BlobSidecarsArchiver; import tech.pegasys.teku.storage.server.Database; public class NoOpDatabase implements Database { @@ -307,6 +307,22 @@ public Optional getNonCanonicalBlobSidecar(final SlotAndBlockRootAn return Optional.empty(); } + @Override + public boolean pruneOldestBlobSidecars( + final UInt64 lastSlotToPrune, + final int pruneLimit, + final BlobSidecarsArchiver blobSidecarsArchiver) { + return false; + } + + @Override + public boolean pruneOldestNonCanonicalBlobSidecars( + final UInt64 lastSlotToPrune, + final int pruneLimit, + final BlobSidecarsArchiver blobSidecarsArchiver) { + return false; + } + @Override public Stream streamBlobSidecarKeys( final UInt64 startSlot, final UInt64 endSlot) { @@ -335,22 +351,6 @@ public Optional getEarliestBlobSidecarSlot() { return Optional.empty(); } - @Override - public boolean pruneOldestBlobSidecars( - final UInt64 lastSlotToPrune, - final int pruneLimit, - final DataArchiveWriter> archiveWriter) { - return false; - } - - @Override - public boolean pruneOldestNonCanonicalBlobSidecars( - final UInt64 lastSlotToPrune, - final int pruneLimit, - final DataArchiveWriter> archiveWriter) { - return false; - } - @Override public Optional getFirstCustodyIncompleteSlot() { return Optional.empty(); diff --git a/storage/src/main/java/tech/pegasys/teku/storage/server/pruner/BlobSidecarPruner.java b/storage/src/main/java/tech/pegasys/teku/storage/server/pruner/BlobSidecarPruner.java index fb37cb1c9e6..c35f2b8ab09 100644 --- a/storage/src/main/java/tech/pegasys/teku/storage/server/pruner/BlobSidecarPruner.java +++ b/storage/src/main/java/tech/pegasys/teku/storage/server/pruner/BlobSidecarPruner.java @@ -13,9 +13,7 @@ package tech.pegasys.teku.storage.server.pruner; -import java.io.IOException; import java.time.Duration; -import java.util.List; import java.util.Optional; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.atomic.AtomicLong; @@ -33,9 +31,7 @@ import tech.pegasys.teku.service.serviceutils.Service; import tech.pegasys.teku.spec.Spec; import tech.pegasys.teku.spec.config.SpecConfigDeneb; -import tech.pegasys.teku.spec.datastructures.blobs.versions.deneb.BlobSidecar; -import tech.pegasys.teku.storage.archive.DataArchive; -import tech.pegasys.teku.storage.archive.DataArchiveWriter; +import tech.pegasys.teku.storage.archive.BlobSidecarsArchiver; import tech.pegasys.teku.storage.server.Database; import tech.pegasys.teku.storage.server.ShuttingDownException; @@ -59,12 +55,12 @@ public class BlobSidecarPruner extends Service { private final AtomicLong blobColumnSize = new AtomicLong(0); private final AtomicLong earliestBlobSidecarSlot = new AtomicLong(-1); private final boolean storeNonCanonicalBlobSidecars; - private final DataArchive dataArchive; + private final BlobSidecarsArchiver blobSidecarsArchiver; public BlobSidecarPruner( final Spec spec, final Database database, - final DataArchive dataArchive, + final BlobSidecarsArchiver blobSidecarsArchiver, final MetricsSystem metricsSystem, final AsyncRunner asyncRunner, final TimeProvider timeProvider, @@ -77,7 +73,7 @@ public BlobSidecarPruner( final boolean storeNonCanonicalBlobSidecars) { this.spec = spec; this.database = database; - this.dataArchive = dataArchive; + this.blobSidecarsArchiver = blobSidecarsArchiver; this.asyncRunner = asyncRunner; this.pruneInterval = pruneInterval; this.pruneLimit = pruneLimit; @@ -152,10 +148,10 @@ private void pruneBlobsPriorToAvailabilityWindow() { return; } LOG.debug("Pruning blobs up to slot {}, limit {}", latestPrunableSlot, pruneLimit); - try (DataArchiveWriter> archiveWriter = dataArchive.getBlobSidecarWriter()) { + try { final long blobsPruningStart = System.currentTimeMillis(); final boolean blobsPruningLimitReached = - database.pruneOldestBlobSidecars(latestPrunableSlot, pruneLimit, archiveWriter); + database.pruneOldestBlobSidecars(latestPrunableSlot, pruneLimit, blobSidecarsArchiver); logPruningResult( "Blobs pruning finished in {} ms. Limit reached: {}", blobsPruningStart, @@ -165,14 +161,12 @@ private void pruneBlobsPriorToAvailabilityWindow() { final long nonCanonicalBlobsPruningStart = System.currentTimeMillis(); final boolean nonCanonicalBlobsLimitReached = database.pruneOldestNonCanonicalBlobSidecars( - latestPrunableSlot, pruneLimit, archiveWriter); + latestPrunableSlot, pruneLimit, blobSidecarsArchiver); logPruningResult( "Non canonical Blobs pruning finished in {} ms. Limit reached: {}", nonCanonicalBlobsPruningStart, nonCanonicalBlobsLimitReached); } - } catch (IOException ex) { - LOG.error("Failed to get the BlobSidecar archive writer", ex); } catch (ShuttingDownException | RejectedExecutionException ex) { LOG.debug("Shutting down", ex); } diff --git a/storage/src/main/java/tech/pegasys/teku/storage/server/rocksdb/RocksDbExceptionUtil.java b/storage/src/main/java/tech/pegasys/teku/storage/server/rocksdb/RocksDbExceptionUtil.java index 440ad9a194b..f0fb7200a5f 100644 --- a/storage/src/main/java/tech/pegasys/teku/storage/server/rocksdb/RocksDbExceptionUtil.java +++ b/storage/src/main/java/tech/pegasys/teku/storage/server/rocksdb/RocksDbExceptionUtil.java @@ -28,16 +28,9 @@ private static boolean isUnrecoverable(final RocksDBException cause) { if (cause.getStatus() == null) { return true; } - switch (cause.getStatus().getCode()) { - case TimedOut: - case TryAgain: - case MergeInProgress: - case Incomplete: - case Busy: - case Expired: - return false; - default: - return true; - } + return switch (cause.getStatus().getCode()) { + case TimedOut, TryAgain, MergeInProgress, Incomplete, Busy, Expired -> false; + default -> true; + }; } } diff --git a/storage/src/test/java/tech/pegasys/teku/storage/archive/filesystem/FileSystemBlobSidecarsArchiverTest.java b/storage/src/test/java/tech/pegasys/teku/storage/archive/filesystem/FileSystemBlobSidecarsArchiverTest.java new file mode 100644 index 00000000000..d83f0e96aae --- /dev/null +++ b/storage/src/test/java/tech/pegasys/teku/storage/archive/filesystem/FileSystemBlobSidecarsArchiverTest.java @@ -0,0 +1,171 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.storage.archive.filesystem; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.Optional; +import java.util.stream.Stream; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import tech.pegasys.teku.infrastructure.unsigned.UInt64; +import tech.pegasys.teku.spec.Spec; +import tech.pegasys.teku.spec.TestSpecFactory; +import tech.pegasys.teku.spec.datastructures.blobs.versions.deneb.Blob; +import tech.pegasys.teku.spec.datastructures.blobs.versions.deneb.BlobSidecar; +import tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock; +import tech.pegasys.teku.spec.datastructures.blocks.SlotAndBlockRoot; +import tech.pegasys.teku.spec.datastructures.type.SszKZGProof; +import tech.pegasys.teku.spec.datastructures.util.SlotAndBlockRootAndBlobIndex; +import tech.pegasys.teku.spec.logic.common.helpers.Predicates; +import tech.pegasys.teku.spec.logic.versions.deneb.helpers.MiscHelpersDeneb; +import tech.pegasys.teku.spec.schemas.SchemaDefinitionsDeneb; +import tech.pegasys.teku.spec.util.DataStructureUtil; + +public class FileSystemBlobSidecarsArchiverTest { + + private static final Spec SPEC = TestSpecFactory.createMinimalDeneb(); + private final Predicates predicates = new Predicates(SPEC.getGenesisSpecConfig()); + private final SchemaDefinitionsDeneb schemaDefinitionsDeneb = + SchemaDefinitionsDeneb.required(SPEC.getGenesisSchemaDefinitions()); + private final MiscHelpersDeneb miscHelpersDeneb = + new MiscHelpersDeneb( + SPEC.getGenesisSpecConfig().toVersionDeneb().orElseThrow(), + predicates, + schemaDefinitionsDeneb); + private final DataStructureUtil dataStructureUtil = new DataStructureUtil(SPEC); + + static Path testTempDir; + static FileSystemBlobSidecarsArchiver blobSidecarsArchiver; + + @BeforeAll + static void beforeEach() throws IOException { + testTempDir = Files.createTempDirectory("blobs"); + blobSidecarsArchiver = new FileSystemBlobSidecarsArchiver(SPEC, testTempDir); + } + + @AfterEach + public void tearDown() throws IOException { + // Delete the temporary directory after each test + if (Files.exists(testTempDir)) { + try (Stream walk = Files.walk(testTempDir)) { + walk.map(Path::toFile) + .forEach( + file -> { + if (!file.delete()) { + file.deleteOnExit(); + } + }); + } + } + } + + @Test + void testResolveArchivePath() { + final SlotAndBlockRootAndBlobIndex slotAndBlockRootAndBlobIndex = + new SlotAndBlockRootAndBlobIndex( + UInt64.ONE, dataStructureUtil.randomBytes32(), UInt64.ZERO); + final Path path = + blobSidecarsArchiver.resolveArchivePath( + slotAndBlockRootAndBlobIndex.getSlotAndBlockRoot().getBlockRoot()); + + // Check if the file path is correct. Doesn't check the intermediate directories. + assertTrue(path.toString().startsWith(testTempDir.toString())); + assertTrue( + path.toString() + .endsWith(slotAndBlockRootAndBlobIndex.getBlockRoot().toUnprefixedHexString())); + } + + @ParameterizedTest + @MethodSource("testResolveIndexPathArguments") + void testResolveIndexPath(final UInt64 slot, final String expectedIndexFileName) { + final Path actualIndexFile = blobSidecarsArchiver.resolveIndexFile(slot); + assertThat(actualIndexFile).hasFileName(expectedIndexFileName); + } + + @Test + void testArchiveWithEmptyList() { + final SlotAndBlockRoot slotAndBlockRoot = dataStructureUtil.randomSlotAndBlockRoot(); + // archiving + blobSidecarsArchiver.archive(slotAndBlockRoot, List.of()); + + // retrieving + final Optional> blobSidecars = + blobSidecarsArchiver.retrieve(slotAndBlockRoot); + // empty list + assertThat(blobSidecars).hasValue(List.of()); + } + + @Test + void testArchiveAndRetrieveBlobSidecars() { + final UInt64 slot = UInt64.valueOf(42); + final SlotAndBlockRoot slotAndBlockRoot = + new SlotAndBlockRoot(slot, dataStructureUtil.randomBytes32()); + final List blobSidecars = + List.of(createBlobSidecar(slot), createBlobSidecar(slot)); + + // archiving + blobSidecarsArchiver.archive(slotAndBlockRoot, blobSidecars); + + // test index file exists + assertThat(testTempDir.resolve("0-99999_index.dat")).exists(); + + // retrieving by slot and block root + final Optional> retrievedBlobSidecarsByRoot = + blobSidecarsArchiver.retrieve(slotAndBlockRoot); + + assertThat(retrievedBlobSidecarsByRoot).hasValue(blobSidecars); + + // retrieving by slot (using index file) + final Optional> retrievedBlobSidecarsBySlot = + blobSidecarsArchiver.retrieve(slotAndBlockRoot.getSlot()); + + assertThat(retrievedBlobSidecarsBySlot).hasValue(blobSidecars); + } + + private BlobSidecar createBlobSidecar(final UInt64 slot) { + final SignedBeaconBlock signedBeaconBlock = + dataStructureUtil.randomSignedBeaconBlockWithCommitments(slot, 1); + final Blob blob = dataStructureUtil.randomValidBlob(); + final SszKZGProof proof = dataStructureUtil.randomSszKZGProof(); + return miscHelpersDeneb.constructBlobSidecar(signedBeaconBlock, UInt64.ZERO, blob, proof); + } + + private static Stream testResolveIndexPathArguments() { + return Stream.of( + Arguments.of(UInt64.valueOf(0L), "0-99999_index.dat"), + Arguments.of(UInt64.valueOf(42L), "0-99999_index.dat"), + Arguments.of(UInt64.valueOf(99999L), "0-99999_index.dat"), + Arguments.of(UInt64.valueOf(100000L), "100000-199999_index.dat"), + Arguments.of(UInt64.valueOf(100001L), "100000-199999_index.dat"), + Arguments.of(UInt64.valueOf(199999L), "100000-199999_index.dat"), + Arguments.of(UInt64.valueOf(200000L), "200000-299999_index.dat"), + Arguments.of(UInt64.valueOf(999999999L), "999900000-999999999_index.dat"), + Arguments.of(UInt64.valueOf(1000000000L), "1000000000-1000099999_index.dat"), + Arguments.of(UInt64.valueOf(1L), "0-99999_index.dat"), + Arguments.of(UInt64.valueOf(99998L), "0-99999_index.dat"), + Arguments.of(UInt64.valueOf(99999L), "0-99999_index.dat"), + Arguments.of(UInt64.valueOf(100000L), "100000-199999_index.dat"), + Arguments.of(UInt64.valueOf(123456789L), "123400000-123499999_index.dat")); + } +} diff --git a/storage/src/test/java/tech/pegasys/teku/storage/archive/fsarchive/BlobSidecarJsonWriterTest.java b/storage/src/test/java/tech/pegasys/teku/storage/archive/fsarchive/BlobSidecarJsonWriterTest.java deleted file mode 100644 index 974e47d87c9..00000000000 --- a/storage/src/test/java/tech/pegasys/teku/storage/archive/fsarchive/BlobSidecarJsonWriterTest.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.storage.archive.fsarchive; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.List; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.TestSpecFactory; -import tech.pegasys.teku.spec.datastructures.blobs.versions.deneb.BlobSidecar; -import tech.pegasys.teku.spec.util.DataStructureUtil; - -public class BlobSidecarJsonWriterTest { - private static final Spec SPEC = TestSpecFactory.createMinimalDeneb(); - - BlobSidecarJsonWriter blobSidecarJsonWriter; - private DataStructureUtil dataStructureUtil; - - @BeforeEach - public void test() { - this.blobSidecarJsonWriter = new BlobSidecarJsonWriter(); - this.dataStructureUtil = new DataStructureUtil(SPEC); - } - - @Test - void testWriteSlotBlobSidecarsWithEmptyList() throws IOException { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - List blobSidecars = new ArrayList<>(); - blobSidecarJsonWriter.writeSlotBlobSidecars(out, blobSidecars); - String json = out.toString(StandardCharsets.UTF_8); - assertEquals("[]", json); - } - - @Test - void testWriteSlotBlobSidecarsWithSingleElement() throws IOException { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - List blobSidecars = new ArrayList<>(); - final BlobSidecar blobSidecar = - dataStructureUtil.randomBlobSidecarForBlock( - dataStructureUtil.randomSignedBeaconBlock(1), 0); - blobSidecars.add(blobSidecar); - blobSidecarJsonWriter.writeSlotBlobSidecars(out, blobSidecars); - String json = out.toString(StandardCharsets.UTF_8); - assertTrue(json.contains("index")); - assertTrue(json.contains("blob")); - assertTrue(json.contains("kzg_commitment")); - assertTrue(json.contains("kzg_proof")); - assertTrue(json.contains("signed_block_header")); - assertTrue(json.contains("parent_root")); - assertTrue(json.contains("state_root")); - assertTrue(json.contains("body_root")); - assertTrue(json.contains("signature")); - } - - @Test - void testWriteSlotBlobSidecarsNulls() { - assertThrows( - NullPointerException.class, () -> blobSidecarJsonWriter.writeSlotBlobSidecars(null, null)); - } - - @Test - void testWriteSlotBlobSidecarsNullOut() { - assertThrows( - NullPointerException.class, - () -> { - List blobSidecars = new ArrayList<>(); - blobSidecarJsonWriter.writeSlotBlobSidecars(null, blobSidecars); - }); - } - - @Test - void testWriteSlotBlobSidecarsNullList() { - assertThrows( - NullPointerException.class, - () -> { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - blobSidecarJsonWriter.writeSlotBlobSidecars(out, null); - }); - } -} diff --git a/storage/src/test/java/tech/pegasys/teku/storage/archive/fsarchive/FileSystemArchiveTest.java b/storage/src/test/java/tech/pegasys/teku/storage/archive/fsarchive/FileSystemArchiveTest.java deleted file mode 100644 index 555f4e50260..00000000000 --- a/storage/src/test/java/tech/pegasys/teku/storage/archive/fsarchive/FileSystemArchiveTest.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.storage.archive.fsarchive; - -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Stream; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.TestSpecFactory; -import tech.pegasys.teku.spec.datastructures.blobs.versions.deneb.Blob; -import tech.pegasys.teku.spec.datastructures.blobs.versions.deneb.BlobSidecar; -import tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock; -import tech.pegasys.teku.spec.datastructures.type.SszKZGProof; -import tech.pegasys.teku.spec.datastructures.util.SlotAndBlockRootAndBlobIndex; -import tech.pegasys.teku.spec.logic.common.helpers.Predicates; -import tech.pegasys.teku.spec.logic.versions.deneb.helpers.MiscHelpersDeneb; -import tech.pegasys.teku.spec.schemas.SchemaDefinitionsDeneb; -import tech.pegasys.teku.spec.util.DataStructureUtil; -import tech.pegasys.teku.storage.archive.DataArchiveWriter; - -public class FileSystemArchiveTest { - private static final Spec SPEC = TestSpecFactory.createMinimalDeneb(); - private final Predicates predicates = new Predicates(SPEC.getGenesisSpecConfig()); - private final SchemaDefinitionsDeneb schemaDefinitionsDeneb = - SchemaDefinitionsDeneb.required(SPEC.getGenesisSchemaDefinitions()); - private final MiscHelpersDeneb miscHelpersDeneb = - new MiscHelpersDeneb( - SPEC.getGenesisSpecConfig().toVersionDeneb().orElseThrow(), - predicates, - schemaDefinitionsDeneb); - private final DataStructureUtil dataStructureUtil = new DataStructureUtil(SPEC); - - static Path testTempDir; - static FileSystemArchive dataArchive; - - @BeforeAll - static void beforeEach() throws IOException { - testTempDir = Files.createTempDirectory("blobs"); - dataArchive = new FileSystemArchive(testTempDir); - } - - @AfterEach - public void tearDown() throws IOException { - // Delete the temporary directory after each test - if (Files.exists(testTempDir)) { - try (Stream walk = Files.walk(testTempDir)) { - walk.map(Path::toFile) - .forEach( - file -> { - if (!file.delete()) { - file.deleteOnExit(); - } - }); - } - } - } - - BlobSidecar createBlobSidecar() { - final SignedBeaconBlock signedBeaconBlock = - dataStructureUtil.randomSignedBeaconBlockWithCommitments(1); - final Blob blob = dataStructureUtil.randomValidBlob(); - final SszKZGProof proof = dataStructureUtil.randomSszKZGProof(); - - return miscHelpersDeneb.constructBlobSidecar(signedBeaconBlock, UInt64.ZERO, blob, proof); - } - - @Test - void testResolve() { - SlotAndBlockRootAndBlobIndex slotAndBlockRootAndBlobIndex = - new SlotAndBlockRootAndBlobIndex( - UInt64.ONE, dataStructureUtil.randomBytes32(), UInt64.ZERO); - File file = dataArchive.resolve(slotAndBlockRootAndBlobIndex.getSlotAndBlockRoot()); - - // Check if the file path is correct. Doesn't check the intermediate directories. - assertTrue(file.toString().startsWith(testTempDir.toString())); - assertTrue( - file.toString() - .endsWith(slotAndBlockRootAndBlobIndex.getBlockRoot().toUnprefixedHexString())); - } - - @Test - void testArchiveWithEmptyList() throws IOException { - DataArchiveWriter> blobWriter = dataArchive.getBlobSidecarWriter(); - ArrayList list = new ArrayList<>(); - assertTrue(blobWriter.archive(list)); - blobWriter.close(); - } - - @Test - void testArchiveWithNullList() throws IOException { - DataArchiveWriter> blobWriter = dataArchive.getBlobSidecarWriter(); - assertTrue(blobWriter.archive(null)); - blobWriter.close(); - } - - @Test - void testWriteBlobSidecar() throws IOException { - DataArchiveWriter> blobWriter = dataArchive.getBlobSidecarWriter(); - ArrayList list = new ArrayList<>(); - BlobSidecar blobSidecar = createBlobSidecar(); - list.add(blobSidecar); - assertTrue(blobWriter.archive(list)); - blobWriter.close(); - - // Check if the file was written - try (FileInputStream fis = - new FileInputStream(testTempDir.resolve(FileSystemArchive.INDEX_FILE).toFile())) { - String content = new String(fis.readAllBytes(), StandardCharsets.UTF_8); - String expected = - blobSidecar.getSlot().toString() - + " " - + blobSidecar.getSlotAndBlockRoot().getBlockRoot().toUnprefixedHexString(); - - // Windows new lines are different, so don't include new lines in the comparison. - assertTrue(content.contains(expected)); - } - } - - @Test - void testFileAlreadyExists() throws IOException { - DataArchiveWriter> blobWriter = dataArchive.getBlobSidecarWriter(); - ArrayList list = new ArrayList<>(); - list.add(createBlobSidecar()); - assertTrue(blobWriter.archive(list)); - // Try to write the same file again - assertFalse(blobWriter.archive(list)); - blobWriter.close(); - } -} diff --git a/storage/src/test/java/tech/pegasys/teku/storage/server/pruner/BlobSidecarPrunerTest.java b/storage/src/test/java/tech/pegasys/teku/storage/server/pruner/BlobSidecarPrunerTest.java index 378e7306035..ed6065df9c5 100644 --- a/storage/src/test/java/tech/pegasys/teku/storage/server/pruner/BlobSidecarPrunerTest.java +++ b/storage/src/test/java/tech/pegasys/teku/storage/server/pruner/BlobSidecarPrunerTest.java @@ -23,7 +23,6 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import java.io.IOException; import java.time.Duration; import java.util.Optional; import org.junit.jupiter.api.BeforeEach; @@ -38,8 +37,7 @@ import tech.pegasys.teku.spec.TestSpecFactory; import tech.pegasys.teku.spec.config.SpecConfig; import tech.pegasys.teku.spec.config.SpecConfigDeneb; -import tech.pegasys.teku.storage.archive.DataArchive; -import tech.pegasys.teku.storage.archive.nooparchive.NoopDataArchive; +import tech.pegasys.teku.storage.archive.BlobSidecarsArchiver; import tech.pegasys.teku.storage.server.Database; public class BlobSidecarPrunerTest { @@ -57,13 +55,13 @@ public class BlobSidecarPrunerTest { private final StubAsyncRunner asyncRunner = new StubAsyncRunner(timeProvider); private final Database database = mock(Database.class); private final StubMetricsSystem stubMetricsSystem = new StubMetricsSystem(); - private final DataArchive dataArchive = new NoopDataArchive(); + private final BlobSidecarsArchiver blobSidecarsArchiver = mock(BlobSidecarsArchiver.class); private final BlobSidecarPruner blobsPruner = new BlobSidecarPruner( spec, database, - dataArchive, + blobSidecarsArchiver, stubMetricsSystem, asyncRunner, timeProvider, @@ -118,7 +116,7 @@ void shouldNotPruneWhenLatestPrunableIncludeGenesis() { } @Test - void shouldPruneWhenLatestPrunableSlotIsGreaterThanOldestDAEpoch() throws IOException { + void shouldPruneWhenLatestPrunableSlotIsGreaterThanOldestDAEpoch() { final SpecConfig config = spec.forMilestone(SpecMilestone.DENEB).getConfig(); final SpecConfigDeneb specConfigDeneb = SpecConfigDeneb.required(config); // set current slot to MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS + 1 epoch + half epoch @@ -133,18 +131,14 @@ void shouldPruneWhenLatestPrunableSlotIsGreaterThanOldestDAEpoch() throws IOExce asyncRunner.executeDueActions(); verify(database) .pruneOldestBlobSidecars( - UInt64.valueOf((slotsPerEpoch / 2) - 1), - PRUNE_LIMIT, - dataArchive.getBlobSidecarWriter()); + UInt64.valueOf((slotsPerEpoch / 2) - 1), PRUNE_LIMIT, blobSidecarsArchiver); verify(database) .pruneOldestNonCanonicalBlobSidecars( - UInt64.valueOf((slotsPerEpoch / 2) - 1), - PRUNE_LIMIT, - dataArchive.getBlobSidecarWriter()); + UInt64.valueOf((slotsPerEpoch / 2) - 1), PRUNE_LIMIT, blobSidecarsArchiver); } @Test - void shouldUseEpochsStoreBlobs() throws IOException { + void shouldUseEpochsStoreBlobs() { final SpecConfig config = spec.forMilestone(SpecMilestone.DENEB).getConfig(); final SpecConfigDeneb specConfigDeneb = SpecConfigDeneb.required(config); final int defaultValue = specConfigDeneb.getMinEpochsForBlobSidecarsRequests(); @@ -164,7 +158,7 @@ void shouldUseEpochsStoreBlobs() throws IOException { new BlobSidecarPruner( specOverride, databaseOverride, - dataArchive, + blobSidecarsArchiver, stubMetricsSystem, asyncRunner, timeProvider, @@ -200,14 +194,10 @@ void shouldUseEpochsStoreBlobs() throws IOException { asyncRunner.executeDueActions(); verify(databaseOverride) .pruneOldestBlobSidecars( - UInt64.valueOf((slotsPerEpoch / 2) - 1), - PRUNE_LIMIT, - dataArchive.getBlobSidecarWriter()); + UInt64.valueOf((slotsPerEpoch / 2) - 1), PRUNE_LIMIT, blobSidecarsArchiver); verify(databaseOverride) .pruneOldestNonCanonicalBlobSidecars( - UInt64.valueOf((slotsPerEpoch / 2) - 1), - PRUNE_LIMIT, - dataArchive.getBlobSidecarWriter()); + UInt64.valueOf((slotsPerEpoch / 2) - 1), PRUNE_LIMIT, blobSidecarsArchiver); } @Test @@ -228,7 +218,7 @@ void shouldNotPruneWhenEpochsStoreBlobsIsMax() { new BlobSidecarPruner( specOverride, databaseOverride, - dataArchive, + blobSidecarsArchiver, stubMetricsSystem, asyncRunner, timeProvider, diff --git a/storage/src/test/java/tech/pegasys/teku/storage/store/StoreTest.java b/storage/src/test/java/tech/pegasys/teku/storage/store/StoreTest.java index 8c7aef79f74..d5153c79b59 100644 --- a/storage/src/test/java/tech/pegasys/teku/storage/store/StoreTest.java +++ b/storage/src/test/java/tech/pegasys/teku/storage/store/StoreTest.java @@ -51,7 +51,7 @@ import tech.pegasys.teku.spec.generator.ChainBuilder; import tech.pegasys.teku.storage.api.StubStorageUpdateChannel; import tech.pegasys.teku.storage.api.StubStorageUpdateChannelWithDelays; -import tech.pegasys.teku.storage.archive.nooparchive.DataArchiveNoopWriter; +import tech.pegasys.teku.storage.archive.BlobSidecarsArchiver; import tech.pegasys.teku.storage.storageSystem.InMemoryStorageSystemBuilder; import tech.pegasys.teku.storage.storageSystem.StorageSystem; import tech.pegasys.teku.storage.store.UpdatableStore.StoreTransaction; @@ -396,7 +396,7 @@ public void retrieveEarliestBlobSidecarSlot_shouldReturnUpdatedValue() { storageSystem .database() - .pruneOldestBlobSidecars(UInt64.valueOf(5), 3, new DataArchiveNoopWriter<>()); + .pruneOldestBlobSidecars(UInt64.valueOf(5), 3, BlobSidecarsArchiver.NOOP); assertThat(store.retrieveEarliestBlobSidecarSlot()) .isCompletedWithValueMatching( diff --git a/storage/src/testFixtures/java/tech/pegasys/teku/storage/api/StubStorageQueryChannel.java b/storage/src/testFixtures/java/tech/pegasys/teku/storage/api/StubStorageQueryChannel.java index cb86fed6fd4..97e59135304 100644 --- a/storage/src/testFixtures/java/tech/pegasys/teku/storage/api/StubStorageQueryChannel.java +++ b/storage/src/testFixtures/java/tech/pegasys/teku/storage/api/StubStorageQueryChannel.java @@ -178,6 +178,17 @@ public SafeFuture> getBlobSidecarKeys( return SafeFuture.completedFuture(List.of()); } + @Override + public SafeFuture> getArchivedBlobSidecars( + final SlotAndBlockRoot slotAndBlockRoot) { + return SafeFuture.completedFuture(List.of()); + } + + @Override + public SafeFuture> getArchivedBlobSidecars(final UInt64 slot) { + return SafeFuture.completedFuture(List.of()); + } + @Override public SafeFuture> getBlobSidecarsBySlotAndBlockRoot( final SlotAndBlockRoot slotAndBlockRoot) { diff --git a/storage/src/testFixtures/java/tech/pegasys/teku/storage/storageSystem/FileBackedStorageSystemBuilder.java b/storage/src/testFixtures/java/tech/pegasys/teku/storage/storageSystem/FileBackedStorageSystemBuilder.java index 255a1b9e6bb..90a099fce97 100644 --- a/storage/src/testFixtures/java/tech/pegasys/teku/storage/storageSystem/FileBackedStorageSystemBuilder.java +++ b/storage/src/testFixtures/java/tech/pegasys/teku/storage/storageSystem/FileBackedStorageSystemBuilder.java @@ -69,29 +69,17 @@ public StorageSystem build() { } private Database buildDatabase() { - final Database database; - switch (version) { - case LEVELDB_TREE: - database = createLevelDbTrieDatabase(); - break; - case LEVELDB2: - database = createLevelDb2Database(); - break; - case LEVELDB1: - database = createLevelDb1Database(); - break; - case V6: - database = createV6Database(); - break; - case V5: - database = createV5Database(); - break; - case V4: - database = createV4Database(); - break; - default: - throw new UnsupportedOperationException("Unsupported database version: " + version); - } + final Database database = + switch (version) { + case LEVELDB_TREE -> createLevelDbTrieDatabase(); + case LEVELDB2 -> createLevelDb2Database(); + case LEVELDB1 -> createLevelDb1Database(); + case V6 -> createV6Database(); + case V5 -> createV5Database(); + case V4 -> createV4Database(); + default -> + throw new UnsupportedOperationException("Unsupported database version: " + version); + }; return database; } diff --git a/storage/src/testFixtures/java/tech/pegasys/teku/storage/storageSystem/InMemoryStorageSystemBuilder.java b/storage/src/testFixtures/java/tech/pegasys/teku/storage/storageSystem/InMemoryStorageSystemBuilder.java index 0f60361ddec..fc6014f4519 100644 --- a/storage/src/testFixtures/java/tech/pegasys/teku/storage/storageSystem/InMemoryStorageSystemBuilder.java +++ b/storage/src/testFixtures/java/tech/pegasys/teku/storage/storageSystem/InMemoryStorageSystemBuilder.java @@ -74,25 +74,18 @@ public static StorageSystem buildDefault(final Spec spec) { } public StorageSystem build() { - final Database database; - switch (version) { - case LEVELDB_TREE: - database = createLevelDbTreeDatabase(); - break; - case LEVELDB2: // Leveldb only varies by db type which doesn't apply to in-memory - case V6: - database = createV6Database(); - break; - case LEVELDB1: // Leveldb only varies by db type which doesn't apply to in-memory - case V5: - database = createV5Database(); - break; - case V4: - database = createV4Database(); - break; - default: - throw new UnsupportedOperationException("Unsupported database version: " + version); - } + final Database database = + switch (version) { + case LEVELDB_TREE -> + createLevelDbTreeDatabase(); // Leveldb only varies by db type which doesn't apply to + // in-memory + case LEVELDB2, V6 -> + createV6Database(); // Leveldb only varies by db type which doesn't apply to in-memory + case LEVELDB1, V5 -> createV5Database(); + case V4 -> createV4Database(); + default -> + throw new UnsupportedOperationException("Unsupported database version: " + version); + }; final List validatorKeys = new MockStartValidatorKeyPairFactory().generateKeyPairs(0, numberOfValidators); diff --git a/storage/src/testFixtures/java/tech/pegasys/teku/storage/storageSystem/StorageSystem.java b/storage/src/testFixtures/java/tech/pegasys/teku/storage/storageSystem/StorageSystem.java index 20105869194..6eb986e3325 100644 --- a/storage/src/testFixtures/java/tech/pegasys/teku/storage/storageSystem/StorageSystem.java +++ b/storage/src/testFixtures/java/tech/pegasys/teku/storage/storageSystem/StorageSystem.java @@ -29,6 +29,7 @@ import tech.pegasys.teku.storage.api.FinalizedCheckpointChannel; import tech.pegasys.teku.storage.api.StubFinalizedCheckpointChannel; import tech.pegasys.teku.storage.api.TrackingChainHeadChannel; +import tech.pegasys.teku.storage.archive.BlobSidecarsArchiver; import tech.pegasys.teku.storage.client.ChainUpdater; import tech.pegasys.teku.storage.client.CombinedChainDataClient; import tech.pegasys.teku.storage.client.EarliestAvailableBlockSlot; @@ -97,7 +98,8 @@ static StorageSystem create( // Create and start storage server final ChainStorage chainStorageServer = - ChainStorage.create(database, spec, storageMode, stateRebuildTimeoutSeconds); + ChainStorage.create( + database, spec, storageMode, stateRebuildTimeoutSeconds, BlobSidecarsArchiver.NOOP); // Create recent chain data final FinalizedCheckpointChannel finalizedCheckpointChannel = diff --git a/teku/src/main/java/tech/pegasys/teku/cli/options/Eth2NetworkOptions.java b/teku/src/main/java/tech/pegasys/teku/cli/options/Eth2NetworkOptions.java index 4c04da8dbfe..9b3a1387145 100644 --- a/teku/src/main/java/tech/pegasys/teku/cli/options/Eth2NetworkOptions.java +++ b/teku/src/main/java/tech/pegasys/teku/cli/options/Eth2NetworkOptions.java @@ -325,6 +325,11 @@ private void configureEth2Network(final Eth2NetworkConfiguration.Builder builder + ".io/get-started/connect)."); } + if (initialState != null && checkpointSyncUrl != null) { + throw new InvalidConfigurationException( + "Both --initial-state and --checkpoint-sync-url are provided. Please specify only one."); + } + builder.applyNetworkDefaults(network); if (startupTargetPeerCount != null) { builder.startupTargetPeerCount(startupTargetPeerCount); diff --git a/teku/src/main/java/tech/pegasys/teku/cli/options/MetricsOptions.java b/teku/src/main/java/tech/pegasys/teku/cli/options/MetricsOptions.java index 559df1a407e..43a566184b8 100644 --- a/teku/src/main/java/tech/pegasys/teku/cli/options/MetricsOptions.java +++ b/teku/src/main/java/tech/pegasys/teku/cli/options/MetricsOptions.java @@ -15,6 +15,7 @@ import com.google.common.base.Strings; import java.net.MalformedURLException; +import java.net.URI; import java.net.URL; import java.util.List; import java.util.Set; @@ -225,8 +226,8 @@ private URL parseMetricsEndpointUrl() { return null; } try { - return new URL(metricsEndpoint); - } catch (MalformedURLException e) { + return URI.create(metricsEndpoint).toURL(); + } catch (IllegalArgumentException | MalformedURLException e) { throw new InvalidConfigurationException( "Invalid configuration. Metrics Endpoint has invalid syntax", e); } diff --git a/teku/src/main/java/tech/pegasys/teku/cli/options/P2POptions.java b/teku/src/main/java/tech/pegasys/teku/cli/options/P2POptions.java index 529436f1eab..81f2c93b7a5 100644 --- a/teku/src/main/java/tech/pegasys/teku/cli/options/P2POptions.java +++ b/teku/src/main/java/tech/pegasys/teku/cli/options/P2POptions.java @@ -20,16 +20,23 @@ import static tech.pegasys.teku.networking.p2p.discovery.DiscoveryConfig.DEFAULT_P2P_PEERS_UPPER_BOUND_ALL_SUBNETS; import static tech.pegasys.teku.validator.api.ValidatorConfig.DEFAULT_EXECUTOR_MAX_QUEUE_SIZE_ALL_SUBNETS; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.OptionalInt; +import java.util.stream.Collectors; import picocli.CommandLine.Help.Visibility; import picocli.CommandLine.Mixin; import picocli.CommandLine.Option; import tech.pegasys.teku.beacon.sync.SyncConfig; import tech.pegasys.teku.cli.converter.OptionalIntConverter; import tech.pegasys.teku.config.TekuConfiguration; +import tech.pegasys.teku.infrastructure.exceptions.InvalidConfigurationException; +import tech.pegasys.teku.infrastructure.io.resource.ResourceLoader; import tech.pegasys.teku.networking.eth2.P2PConfig; import tech.pegasys.teku.networking.p2p.discovery.DiscoveryConfig; import tech.pegasys.teku.networking.p2p.gossip.config.GossipConfig; @@ -209,14 +216,22 @@ The network interface(s) on which the node listens for P2P communication. hidden = true) private Integer minimumRandomlySelectedPeerCount; + @Option( + names = {"--p2p-static-peers-url"}, + paramLabel = "", + description = + "Specifies a URL or file containing a list of 'static' peers (one per line) with which to establish and maintain connections. Accepts multiaddr format.", + arity = "1") + private String p2pStaticPeersUrl; + @Option( names = {"--p2p-static-peers"}, paramLabel = "", description = - "Specifies a list of 'static' peers with which to establish and maintain connections", + "Specifies a comma-separated list of 'static' peers with which to establish and maintain connections. Accepts multiaddr format.", split = ",", - arity = "0..*") - private List p2pStaticPeers = new ArrayList<>(); + arity = "1") + private final List p2pStaticPeers = new ArrayList<>(); @Option( names = {"--p2p-direct-peers"}, @@ -471,6 +486,38 @@ private OptionalInt getP2pUpperBound() { return p2pUpperBound; } + private List getStaticPeersList() { + final List staticPeers = new ArrayList<>(p2pStaticPeers); + + if (p2pStaticPeersUrl != null) { + try { + final Optional maybeStream = + ResourceLoader.urlOrFile().load(p2pStaticPeersUrl); + if (maybeStream.isPresent()) { + try (final BufferedReader reader = + new BufferedReader( + new InputStreamReader(maybeStream.get(), StandardCharsets.UTF_8))) { + final List peersFromUrl = + reader + .lines() + .map(String::trim) + .filter(line -> !line.isEmpty() && !line.startsWith("#")) + .collect(Collectors.toList()); + staticPeers.addAll(peersFromUrl); + } + } else { + throw new InvalidConfigurationException( + String.format("Static peers URL not found: %s", p2pStaticPeersUrl)); + } + } catch (Exception e) { + throw new InvalidConfigurationException( + String.format("Failed to read static peers from URL: %s", p2pStaticPeersUrl), e); + } + } + + return staticPeers; + } + public void configure(final TekuConfiguration.Builder builder) { // From a discovery configuration perspective, direct peers are static peers p2pStaticPeers.addAll(p2pDirectPeers); @@ -527,7 +574,7 @@ public void configure(final TekuConfiguration.Builder builder) { d.advertisedUdpPortIpv6(OptionalInt.of(p2pAdvertisedPortIpv6)); } d.isDiscoveryEnabled(p2pDiscoveryEnabled) - .staticPeers(p2pStaticPeers) + .staticPeers(getStaticPeersList()) .siteLocalAddressesEnabled(siteLocalAddressesEnabled); }) .network( diff --git a/teku/src/main/java/tech/pegasys/teku/cli/options/ValidatorKeysOptions.java b/teku/src/main/java/tech/pegasys/teku/cli/options/ValidatorKeysOptions.java index 3417f334e32..e5ab14c0cb8 100644 --- a/teku/src/main/java/tech/pegasys/teku/cli/options/ValidatorKeysOptions.java +++ b/teku/src/main/java/tech/pegasys/teku/cli/options/ValidatorKeysOptions.java @@ -15,6 +15,7 @@ import com.google.common.base.Strings; import java.net.MalformedURLException; +import java.net.URI; import java.net.URL; import java.nio.file.Path; import java.time.Duration; @@ -131,8 +132,8 @@ private URL parseValidatorExternalSignerUrl() { return null; } try { - return new URL(validatorExternalSignerUrl); - } catch (MalformedURLException e) { + return URI.create(validatorExternalSignerUrl).toURL(); + } catch (IllegalArgumentException | MalformedURLException e) { throw new InvalidConfigurationException( "Invalid configuration. Signer URL has invalid syntax", e); } diff --git a/teku/src/main/java/tech/pegasys/teku/cli/subcommand/RemoteSpecLoader.java b/teku/src/main/java/tech/pegasys/teku/cli/subcommand/RemoteSpecLoader.java index 8d20a868b2f..8202797486a 100644 --- a/teku/src/main/java/tech/pegasys/teku/cli/subcommand/RemoteSpecLoader.java +++ b/teku/src/main/java/tech/pegasys/teku/cli/subcommand/RemoteSpecLoader.java @@ -14,6 +14,7 @@ package tech.pegasys.teku.cli.subcommand; import java.net.URI; +import java.util.HashMap; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; @@ -47,7 +48,7 @@ static Spec getSpec(final OkHttpValidatorMinimalTypeDefClient apiClient) { try { return apiClient .getSpec() - .map(SpecConfigLoader::loadRemoteConfig) + .map(config -> SpecConfigLoader.loadRemoteConfig(new HashMap<>(config))) .map(SpecFactory::create) .orElseThrow(); } catch (final Throwable ex) { @@ -78,13 +79,13 @@ private static Spec getSpecWithFailovers( throw new InvalidConfigurationException(errMsg); } - private static T retry(final Callable f) { + private static T retry(final Callable callable) { try { - return f.call(); + return callable.call(); } catch (Throwable ex) { logError(ex); sleep(); - return retry(f); + return retry(callable); } } diff --git a/teku/src/test/java/tech/pegasys/teku/cli/options/Eth2NetworkOptionsTest.java b/teku/src/test/java/tech/pegasys/teku/cli/options/Eth2NetworkOptionsTest.java index 360792c84c8..e6e9529ff8a 100644 --- a/teku/src/test/java/tech/pegasys/teku/cli/options/Eth2NetworkOptionsTest.java +++ b/teku/src/test/java/tech/pegasys/teku/cli/options/Eth2NetworkOptionsTest.java @@ -206,6 +206,16 @@ void shouldLoadGenesisState() { .isEqualTo(Optional.of(genesisState)); } + @Test + void shouldFailIfBothCheckpointSyncUrlAndInitialStateSet() { + assertThatThrownBy( + () -> + getTekuConfigurationFromArguments( + "--checkpoint-sync-url", "http://foo:9000", "--initial-state", "genesis.ssz")) + .isInstanceOf(AssertionError.class) + .hasMessageContaining("Both --initial-state and --checkpoint-sync-url are provided"); + } + @ParameterizedTest @ValueSource(strings = {"http://foo:9000", "http://foo:9000/"}) public void checkpointSyncUrlOptionShouldSetInitialAndGenesisStateOptions( @@ -227,4 +237,16 @@ public void shouldShowGoerliDeprecationWarning() { .isInstanceOf(AssertionError.class) // thrown because we had an error .hasMessageContaining("Goerli support has been removed"); } + + @Test + public void rustKzgFlagShouldBeDisabledByDefault() { + final TekuConfiguration config = getTekuConfigurationFromArguments(); + assertThat(config.eth2NetworkConfiguration().isRustKzgEnabled()).isFalse(); + } + + @Test + public void rustKzgFlagCanBeUsedToToggleRustKzgOn() { + final TekuConfiguration config = getTekuConfigurationFromArguments("--Xrust-kzg-enabled"); + assertThat(config.eth2NetworkConfiguration().isRustKzgEnabled()).isTrue(); + } } diff --git a/teku/src/test/java/tech/pegasys/teku/cli/options/P2POptionsTest.java b/teku/src/test/java/tech/pegasys/teku/cli/options/P2POptionsTest.java index 129434276e6..d57f1bb5430 100644 --- a/teku/src/test/java/tech/pegasys/teku/cli/options/P2POptionsTest.java +++ b/teku/src/test/java/tech/pegasys/teku/cli/options/P2POptionsTest.java @@ -15,6 +15,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.assertj.core.api.Assertions.fail; import static org.junit.jupiter.api.Assertions.assertEquals; import static tech.pegasys.teku.infrastructure.async.AsyncRunnerFactory.DEFAULT_MAX_QUEUE_SIZE_ALL_SUBNETS; import static tech.pegasys.teku.networking.eth2.P2PConfig.DEFAULT_GOSSIP_BLOBS_AFTER_BLOCK_ENABLED; @@ -27,8 +28,20 @@ import static tech.pegasys.teku.validator.api.ValidatorConfig.DEFAULT_EXECUTOR_MAX_QUEUE_SIZE_ALL_SUBNETS; import com.google.common.base.Supplier; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.List; +import java.util.stream.Stream; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledOnOs; +import org.junit.jupiter.api.condition.OS; +import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; import tech.pegasys.teku.beacon.sync.SyncConfig; import tech.pegasys.teku.cli.AbstractBeaconNodeCommandTest; import tech.pegasys.teku.config.TekuConfiguration; @@ -79,6 +92,24 @@ public void shouldReadFromConfigurationFile() { assertThat(syncConfig.getForwardSyncMaxBlobSidecarsPerMinute()).isEqualTo(400); } + @Test + @DisabledOnOs(OS.WINDOWS) + public void shouldReadUrlFromConfigurationFile(@TempDir final Path tempDir) throws Exception { + final Path peersFile = tempDir.resolve("peers.txt"); + final Path configPath = tempDir.resolve("config.yaml"); + Files.writeString(peersFile, "\n\n127.0.1.1\n127.1.1.1\n", StandardCharsets.UTF_8); + Files.writeString( + configPath, + String.format("p2p-static-peers-url: \"%s\"", peersFile.toAbsolutePath()), + StandardCharsets.UTF_8); + + final TekuConfiguration tekuConfig = + getTekuConfigurationFromArguments("--config-file", configPath.toAbsolutePath().toString()); + + final DiscoveryConfig discoConfig = tekuConfig.discovery(); + assertThat(discoConfig.getStaticPeers()).isEqualTo(List.of("127.0.1.1", "127.1.1.1")); + } + @Test public void p2pEnabled_shouldNotRequireAValue() { final TekuConfiguration config = getTekuConfigurationFromArguments("--p2p-enabled"); @@ -472,4 +503,96 @@ public void defaultPortsAreSetCorrectly() { assertThat(networkConfig.getAdvertisedPort()).isEqualTo(DEFAULT_P2P_PORT); assertThat(networkConfig.getAdvertisedPortIpv6()).isEqualTo(DEFAULT_P2P_PORT_IPV6); } + + @Test + public void staticPeersUrl_shouldReadPeersFromUrl(@TempDir final Path tempDir) throws Exception { + // Create a test file with peers + final Path peersFile = tempDir.resolve("static-peers.txt"); + Files.writeString(peersFile, "peer1\npeer2\n#comment\n\npeer3"); + + final TekuConfiguration tekuConfiguration = + getTekuConfigurationFromArguments( + "--p2p-static-peers-url", peersFile.toAbsolutePath().toString()); + + assertThat(tekuConfiguration.discovery().getStaticPeers()) + .containsExactlyInAnyOrder("peer1", "peer2", "peer3"); + } + + @Test + public void staticPeersUrl_shouldCombineWithCommandLinePeers(@TempDir final Path tempDir) + throws Exception { + // Create a test file with peers + final Path peersFile = tempDir.resolve("static-peers.txt"); + Files.writeString(peersFile, "peer1\npeer2"); + + final TekuConfiguration tekuConfiguration = + getTekuConfigurationFromArguments( + "--p2p-static-peers-url", + peersFile.toAbsolutePath().toString(), + "--p2p-static-peers", + "peer3,peer4"); + + assertThat(tekuConfiguration.discovery().getStaticPeers()) + .containsExactlyInAnyOrder("peer1", "peer2", "peer3", "peer4"); + } + + @ParameterizedTest + @MethodSource("peerBoundsTestParameters") + public void shouldSmartDefaultPeerBounds( + final String lowerIn, + final String upperIn, + final int lowerExpected, + final int upperExpected) { + final TekuConfiguration tekuConfiguration = + getTekuConfigurationFromArguments( + "--p2p-peer-upper-bound", upperIn, "--p2p-peer-lower-bound", lowerIn); + + assertThat(tekuConfiguration.discovery().getMinPeers()).isEqualTo(lowerExpected); + assertThat(tekuConfiguration.discovery().getMaxPeers()).isEqualTo(upperExpected); + } + + private static Stream peerBoundsTestParameters() { + return Stream.of( + Arguments.of("100", "200", 100, 200), + Arguments.of("100", "100", 100, 100), + Arguments.of("0", "0", 0, 0), + Arguments.of("1024000", "1024000", 1024000, 1024000), + Arguments.of("200", "100", 100, 200)); + } + + @Test + public void peersLowerBound_mustNotBeNegative() { + assertThatThrownBy(() -> getTekuConfigurationFromArguments("--p2p-peer-lower-bound", "-1")) + .isInstanceOf(AssertionError.class) + .hasMessageContaining("Invalid minPeers: -1"); + } + + @Test + public void peersUpperBound_mustNotBeNegative() { + assertThatThrownBy(() -> getTekuConfigurationFromArguments("--p2p-peer-upper-bound", "-1")) + .isInstanceOf(AssertionError.class) + .hasMessageContaining("Invalid maxPeers: -1"); + } + + @Test + public void staticPeersUrl_shouldThrowIfUrlDoesNotExist() { + // Create a dummy instance of P2POptions + final P2POptions p2pOptions = new P2POptions(); + + // Use reflection to access a private field and set its value + try { + final Field field = P2POptions.class.getDeclaredField("p2pStaticPeersUrl"); + field.setAccessible(true); + field.set(p2pOptions, "/non/existent/file.txt"); + + // Use reflection to call a private method getStaticPeersList + final Method method = P2POptions.class.getDeclaredMethod("getStaticPeersList"); + method.setAccessible(true); + + assertThatThrownBy(() -> method.invoke(p2pOptions)) + .hasCauseInstanceOf(InvalidConfigurationException.class); + } catch (Exception e) { + fail("Test setup failed: " + e.getMessage(), e); + } + } } diff --git a/teku/src/test/java/tech/pegasys/teku/cli/options/ValidatorOptionsTest.java b/teku/src/test/java/tech/pegasys/teku/cli/options/ValidatorOptionsTest.java index 900abd18b7a..82114cf16d0 100644 --- a/teku/src/test/java/tech/pegasys/teku/cli/options/ValidatorOptionsTest.java +++ b/teku/src/test/java/tech/pegasys/teku/cli/options/ValidatorOptionsTest.java @@ -17,7 +17,7 @@ import static tech.pegasys.teku.validator.api.ValidatorConfig.DEFAULT_BUILDER_REGISTRATION_GAS_LIMIT; import java.net.MalformedURLException; -import java.net.URL; +import java.net.URI; import java.time.Duration; import java.util.Optional; import org.apache.tuweni.bytes.Bytes32; @@ -48,7 +48,8 @@ public void shouldReadFromConfigurationFile() throws MalformedURLException { assertThat(config.getValidatorExternalSignerPublicKeySources()) .containsExactly( "0xad113a7d152dc74ae2b26db65bfb89ed07501c818bf47671c6d34e5a2f7224e4c5525dd4fddaa93aa328da86b7205009"); - assertThat(config.getValidatorExternalSignerUrl()).isEqualTo(new URL("https://signer.url/")); + assertThat(config.getValidatorExternalSignerUrl()) + .isEqualTo(URI.create("https://signer.url/").toURL()); assertThat(config.getValidatorExternalSignerTimeout()).isEqualTo(Duration.ofMillis(1234)); assertThat(config.getGraffitiProvider().get()).isEqualTo(Optional.of(graffiti)); } diff --git a/teku/src/test/java/tech/pegasys/teku/cli/subcommand/RemoteSpecLoaderTest.java b/teku/src/test/java/tech/pegasys/teku/cli/subcommand/RemoteSpecLoaderTest.java index 9c39079fbfc..4236fb826b4 100644 --- a/teku/src/test/java/tech/pegasys/teku/cli/subcommand/RemoteSpecLoaderTest.java +++ b/teku/src/test/java/tech/pegasys/teku/cli/subcommand/RemoteSpecLoaderTest.java @@ -22,6 +22,7 @@ import com.google.common.io.Resources; import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.util.HashMap; import java.util.Map; import java.util.Optional; import org.junit.jupiter.api.Test; @@ -42,7 +43,7 @@ class RemoteSpecLoaderTest { @Test void shouldIgnoreUnknownConfigItems() { - final Map rawConfig = getRawConfigForSpec(spec); + final Map rawConfig = getRawConfigForSpec(spec); rawConfig.put("UNKNOWN_ITEM", "foo"); when(apiClient.getSpec()).thenReturn(Optional.of(rawConfig)); final Spec result = RemoteSpecLoader.getSpec(apiClient); @@ -52,7 +53,7 @@ void shouldIgnoreUnknownConfigItems() { @Test void shouldFillWhenRequiredItemsAreMissing() { - final Map rawConfig = getRawConfigForSpec(spec); + final Map rawConfig = getRawConfigForSpec(spec); assertThat(rawConfig.remove("GENESIS_FORK_VERSION")).isNotNull(); when(apiClient.getSpec()).thenReturn(Optional.of(rawConfig)); @@ -70,7 +71,8 @@ void shouldDefaultNetworkConfigThatMovedFromConstants() throws IOException { final ObjectMapper objectMapper = new ObjectMapper(); TypeReference> typeReference = new TypeReference<>() {}; Map data = objectMapper.readValue(jsonConfig, typeReference); - final SpecConfig specConfig = SpecConfigLoader.loadRemoteConfig(data).specConfig(); + final SpecConfig specConfig = + SpecConfigLoader.loadRemoteConfig(new HashMap<>(data)).specConfig(); // Check values not assigned, using default values assertThat(specConfig.getMaxPayloadSize()).isEqualTo(10485760); @@ -83,7 +85,7 @@ void shouldDefaultNetworkConfigThatMovedFromConstants() throws IOException { assertThat(specConfig.getMaximumGossipClockDisparity()).isEqualTo(500); } - private Map getRawConfigForSpec(final Spec spec) { + private Map getRawConfigForSpec(final Spec spec) { return new ConfigProvider(spec).getConfig(); } } diff --git a/teku/src/test/java/tech/pegasys/teku/cli/subcommand/internal/validator/options/KeystorePasswordOptionsTest.java b/teku/src/test/java/tech/pegasys/teku/cli/subcommand/internal/validator/options/KeystorePasswordOptionsTest.java index 6e435f2f909..acd03b8e2ec 100644 --- a/teku/src/test/java/tech/pegasys/teku/cli/subcommand/internal/validator/options/KeystorePasswordOptionsTest.java +++ b/teku/src/test/java/tech/pegasys/teku/cli/subcommand/internal/validator/options/KeystorePasswordOptionsTest.java @@ -32,16 +32,12 @@ class KeystorePasswordOptionsTest { private static final String EXPECTED_ENV_VARIABLE = "TEST_ENV"; private static final String SPACE_ENV_VARIABLE = "SPACE_ENV"; private static final Function ENV_SUPPLIER = - envVariable -> { - switch (envVariable) { - case EXPECTED_ENV_VARIABLE: - return PASSWORD; - case SPACE_ENV_VARIABLE: - return " "; - default: - return null; - } - }; + envVariable -> + switch (envVariable) { + case EXPECTED_ENV_VARIABLE -> PASSWORD; + case SPACE_ENV_VARIABLE -> " "; + default -> null; + }; private static final String EXPECTED_ENV_ERROR = "Error: Password cannot be read from environment variable: %s"; private static final String EXPECTED_EMPTY_PASSWORD_FILE_ERROR = diff --git a/teku/src/test/resources/P2POptions_config.yaml b/teku/src/test/resources/P2POptions_config.yaml index 44d027d77a4..f9e884ec1ca 100644 --- a/teku/src/test/resources/P2POptions_config.yaml +++ b/teku/src/test/resources/P2POptions_config.yaml @@ -18,4 +18,4 @@ Xp2p-historical-sync-batch-size: 102 Xp2p-sync-batch-size: 103 Xp2p-sync-max-pending-batches: 8 Xp2p-sync-blocks-rate-limit: 100 -Xp2p-sync-blob-sidecars-rate-limit: 400 \ No newline at end of file +Xp2p-sync-blob-sidecars-rate-limit: 400 diff --git a/validator/api/src/main/java/tech/pegasys/teku/validator/api/ValidatorTimingChannel.java b/validator/api/src/main/java/tech/pegasys/teku/validator/api/ValidatorTimingChannel.java index 4cfce40d667..8d3d8cd5a36 100644 --- a/validator/api/src/main/java/tech/pegasys/teku/validator/api/ValidatorTimingChannel.java +++ b/validator/api/src/main/java/tech/pegasys/teku/validator/api/ValidatorTimingChannel.java @@ -15,7 +15,7 @@ import java.util.Map; import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.infrastructure.events.VoidReturningChannelInterface; import tech.pegasys.teku.infrastructure.unsigned.UInt64; diff --git a/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/AbstractExternalSignerIntegrationTest.java b/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/AbstractExternalSignerIntegrationTest.java index 8ff02d4ab0b..41534936c0e 100644 --- a/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/AbstractExternalSignerIntegrationTest.java +++ b/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/AbstractExternalSignerIntegrationTest.java @@ -14,7 +14,7 @@ package tech.pegasys.teku.validator.client.signer; import java.net.MalformedURLException; -import java.net.URL; +import java.net.URI; import java.net.http.HttpClient; import java.time.Duration; import java.util.List; @@ -60,7 +60,8 @@ void setup(final ClientAndServer client) throws MalformedURLException { final ValidatorConfig config = ValidatorConfig.builder() .validatorExternalSignerPublicKeySources(List.of(KEYPAIR.getPublicKey().toString())) - .validatorExternalSignerUrl(new URL("http://127.0.0.1:" + client.getLocalPort())) + .validatorExternalSignerUrl( + URI.create("http://127.0.0.1:" + client.getLocalPort()).toURL()) .validatorExternalSignerTimeout(TIMEOUT) .build(); final Supplier externalSignerHttpClientFactory = diff --git a/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/AbstractSecureExternalSignerIntegrationTest.java b/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/AbstractSecureExternalSignerIntegrationTest.java index de294236102..b9168e186ab 100644 --- a/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/AbstractSecureExternalSignerIntegrationTest.java +++ b/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/AbstractSecureExternalSignerIntegrationTest.java @@ -15,6 +15,7 @@ import com.google.common.io.Resources; import java.net.MalformedURLException; +import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.net.http.HttpClient; @@ -126,6 +127,6 @@ void tearDown() { } protected URL getUrl() throws MalformedURLException { - return new URL("https://127.0.0.1:" + client.getLocalPort()); + return URI.create("https://127.0.0.1:" + client.getLocalPort()).toURL(); } } diff --git a/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/ExternalSignerBasicAuthIntegrationTest.java b/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/ExternalSignerBasicAuthIntegrationTest.java index d587f389ac6..ce3742550ef 100644 --- a/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/ExternalSignerBasicAuthIntegrationTest.java +++ b/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/ExternalSignerBasicAuthIntegrationTest.java @@ -19,6 +19,7 @@ import com.google.common.base.Splitter; import java.net.MalformedURLException; +import java.net.URI; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.Base64; @@ -37,8 +38,9 @@ public class ExternalSignerBasicAuthIntegrationTest @Override protected URL getUrl() throws MalformedURLException { - return new URL( - String.format("https://%s:%s@127.0.0.1:%s", username, password, client.getLocalPort())); + return URI.create( + String.format("https://%s:%s@127.0.0.1:%s", username, password, client.getLocalPort())) + .toURL(); } @Test diff --git a/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/ExternalSignerUpcheckTLSIntegrationTest.java b/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/ExternalSignerUpcheckTLSIntegrationTest.java index 85f86d22597..7e11bfac1f0 100644 --- a/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/ExternalSignerUpcheckTLSIntegrationTest.java +++ b/validator/client/src/integration-test/java/tech/pegasys/teku/validator/client/signer/ExternalSignerUpcheckTLSIntegrationTest.java @@ -18,7 +18,7 @@ import static org.mockserver.model.HttpResponse.response; import java.net.MalformedURLException; -import java.net.URL; +import java.net.URI; import org.junit.jupiter.api.Test; public class ExternalSignerUpcheckTLSIntegrationTest @@ -48,7 +48,7 @@ void upcheckReturnsFalseWhenServerIsDown() throws MalformedURLException { new ExternalSignerUpcheck( externalSignerHttpClientFactory.get(), // an unused port - new URL("https://127.0.0.1:79"), + URI.create("https://127.0.0.1:79").toURL(), validatorConfig.getValidatorExternalSignerTimeout()); assertThat(externalSignerUpcheck.upcheck()).isFalse(); } diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/AttestationDutyScheduler.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/AttestationDutyScheduler.java index fb53cf1b84d..2239c529da1 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/AttestationDutyScheduler.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/AttestationDutyScheduler.java @@ -23,7 +23,7 @@ import org.apache.logging.log4j.Logger; import org.apache.tuweni.bytes.Bytes32; import org.hyperledger.besu.plugin.services.MetricsSystem; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.infrastructure.metrics.TekuMetricCategory; import tech.pegasys.teku.infrastructure.unsigned.UInt64; diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/BeaconProposerPreparer.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/BeaconProposerPreparer.java index b8d9bbf9e2a..21bb80ae072 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/BeaconProposerPreparer.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/BeaconProposerPreparer.java @@ -22,7 +22,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.infrastructure.unsigned.UInt64; import tech.pegasys.teku.spec.Spec; diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/BlockDutyScheduler.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/BlockDutyScheduler.java index ca7865c3766..c3dd7fde29f 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/BlockDutyScheduler.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/BlockDutyScheduler.java @@ -18,7 +18,7 @@ import java.util.Map; import org.apache.tuweni.bytes.Bytes32; import org.hyperledger.besu.plugin.services.MetricsSystem; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.infrastructure.metrics.TekuMetricCategory; import tech.pegasys.teku.infrastructure.unsigned.UInt64; diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/OwnedKeyManager.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/OwnedKeyManager.java index 04833d20fdc..41be3eba5ed 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/OwnedKeyManager.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/OwnedKeyManager.java @@ -24,6 +24,7 @@ import java.util.stream.Collectors; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.bls.keystore.KeyStoreLoader; import tech.pegasys.teku.bls.keystore.KeyStoreValidationException; @@ -94,7 +95,7 @@ public Optional getValidatorByPublicKey(final BLSPublicKey publicKey) * protection information * *

- NOT_ACTIVE indicates the key is not owned, but we had slashing data, should not be - * confused with {@link tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus} + * confused with {@link ValidatorStatus} * *

- DELETED indicates the key was found, and we have stopped using it and removed it. * diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/OwnedValidatorStatusProvider.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/OwnedValidatorStatusProvider.java index 47008eefd63..191621171f5 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/OwnedValidatorStatusProvider.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/OwnedValidatorStatusProvider.java @@ -30,7 +30,7 @@ import org.apache.logging.log4j.Logger; import org.apache.tuweni.bytes.Bytes32; import org.hyperledger.besu.plugin.services.MetricsSystem; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.ethereum.json.types.beacon.StateValidatorData; import tech.pegasys.teku.infrastructure.async.AsyncRunner; diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/SyncCommitteeScheduler.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/SyncCommitteeScheduler.java index dde574a4c22..015ba866b09 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/SyncCommitteeScheduler.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/SyncCommitteeScheduler.java @@ -20,7 +20,7 @@ import org.apache.logging.log4j.Logger; import org.apache.tuweni.bytes.Bytes32; import org.hyperledger.besu.plugin.services.MetricsSystem; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.infrastructure.unsigned.UInt64; import tech.pegasys.teku.spec.Spec; diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorClientService.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorClientService.java index 7fc3202e6e4..429690b885b 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorClientService.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorClientService.java @@ -472,12 +472,17 @@ private void scheduleValidatorsDuties( final BlockDutyFactory blockDutyFactory = new BlockDutyFactory( forkProvider, validatorApiChannel, blockContainerSigner, spec, validatorDutyMetrics); + final boolean dvtSelectionsEndpointEnabled = + config.getValidatorConfig().isDvtSelectionsEndpointEnabled(); final AttestationDutyFactory attestationDutyFactory = - new AttestationDutyFactory(spec, forkProvider, validatorApiChannel, validatorDutyMetrics); + new AttestationDutyFactory( + spec, + forkProvider, + validatorApiChannel, + validatorDutyMetrics, + dvtSelectionsEndpointEnabled); final BeaconCommitteeSubscriptions beaconCommitteeSubscriptions = new BeaconCommitteeSubscriptions(validatorApiChannel); - final boolean dvtSelectionsEndpointEnabled = - config.getValidatorConfig().isDvtSelectionsEndpointEnabled(); final DutyLoader attestationDutyLoader = new RetryingDutyLoader<>( asyncRunner, diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorRegistrator.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorRegistrator.java index 819b685d00e..04a4cea43a2 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorRegistrator.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorRegistrator.java @@ -33,7 +33,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.infrastructure.async.AsyncRunner; import tech.pegasys.teku.infrastructure.async.SafeFuture; diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorStatusLogger.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorStatusLogger.java index bd72de17cf9..b6722a7ef0a 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorStatusLogger.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorStatusLogger.java @@ -20,7 +20,7 @@ import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.validator.client.loader.OwnedValidators; diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorStatusSubscriber.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorStatusSubscriber.java index 5df424a01dc..2da0a42215d 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorStatusSubscriber.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorStatusSubscriber.java @@ -14,7 +14,7 @@ package tech.pegasys.teku.validator.client; import java.util.Map; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; public interface ValidatorStatusSubscriber { diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorTimingActions.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorTimingActions.java index b60136491e9..e6e40f3107f 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorTimingActions.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/ValidatorTimingActions.java @@ -21,7 +21,7 @@ import java.util.stream.Collectors; import org.apache.tuweni.bytes.Bytes32; import org.hyperledger.besu.plugin.services.MetricsSystem; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.infrastructure.metrics.SettableGauge; import tech.pegasys.teku.infrastructure.metrics.TekuMetricCategory; diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/ProductionResult.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/ProductionResult.java index 8d415ff5fb5..1a323644fe4 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/ProductionResult.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/ProductionResult.java @@ -69,6 +69,10 @@ public static ProductionResult noop(final BLSPublicKey validatorPublicKey return new ProductionResult<>(Set.of(validatorPublicKey), DutyResult.NO_OP); } + public static ProductionResult noop(final Set validatorPublicKeys) { + return new ProductionResult<>(validatorPublicKeys, DutyResult.NO_OP); + } + public static SafeFuture send( final List> results, final Function, SafeFuture>> submitFunction) { diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/AggregationDuty.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/AggregationDuty.java index ab7e00b9f7f..f659a704c9c 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/AggregationDuty.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/AggregationDuty.java @@ -13,10 +13,8 @@ package tech.pegasys.teku.validator.client.duties.attestations; -import com.google.common.base.MoreObjects; +import com.google.common.annotations.VisibleForTesting; import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import tech.pegasys.teku.bls.BLSSignature; @@ -38,14 +36,14 @@ import tech.pegasys.teku.validator.client.duties.DutyResult; import tech.pegasys.teku.validator.client.duties.ProductionResult; import tech.pegasys.teku.validator.client.duties.ValidatorDutyMetrics; +import tech.pegasys.teku.validator.client.duties.attestations.AggregationDutyAggregators.CommitteeAggregator; public class AggregationDuty implements Duty { private static final Logger LOG = LogManager.getLogger(); - private final ConcurrentMap aggregatorsByCommitteeIndex = - new ConcurrentHashMap<>(); private final Spec spec; private final UInt64 slot; private final ValidatorApiChannel validatorApiChannel; + private final AggregationDutyAggregators aggregators; private final ForkProvider forkProvider; private final ValidatorLogger validatorLogger; private final SendingStrategy sendingStrategy; @@ -55,6 +53,7 @@ public AggregationDuty( final Spec spec, final UInt64 slot, final ValidatorApiChannel validatorApiChannel, + final AggregationDutyAggregators aggregators, final ForkProvider forkProvider, final ValidatorLogger validatorLogger, final SendingStrategy sendingStrategy, @@ -62,6 +61,7 @@ public AggregationDuty( this.spec = spec; this.slot = slot; this.validatorApiChannel = validatorApiChannel; + this.aggregators = aggregators; this.forkProvider = forkProvider; this.validatorLogger = validatorLogger; this.sendingStrategy = sendingStrategy; @@ -91,42 +91,34 @@ public void addValidator( final BLSSignature proof, final int attestationCommitteeIndex, final SafeFuture> unsignedAttestationFuture) { - aggregatorsByCommitteeIndex.computeIfAbsent( - attestationCommitteeIndex, - committeeIndex -> - new CommitteeAggregator( - validator, - UInt64.valueOf(validatorIndex), - UInt64.valueOf(attestationCommitteeIndex), - proof, - unsignedAttestationFuture)); + aggregators.addValidator( + validator, validatorIndex, proof, attestationCommitteeIndex, unsignedAttestationFuture); } @Override public SafeFuture performDuty() { LOG.trace("Aggregating attestations at slot {}", slot); - if (aggregatorsByCommitteeIndex.isEmpty()) { + if (!aggregators.hasAggregators()) { return SafeFuture.completedFuture(DutyResult.NO_OP); } - return sendingStrategy.send( - aggregatorsByCommitteeIndex.values().stream().map(this::aggregateCommittee)); + return sendingStrategy.send(aggregators.streamAggregators().map(this::aggregateCommittee)); } - public SafeFuture> aggregateCommittee( + private SafeFuture> aggregateCommittee( final CommitteeAggregator aggregator) { return aggregator - .unsignedAttestationFuture + .unsignedAttestationFuture() .thenCompose(maybeAttestation -> createAggregate(aggregator, maybeAttestation)) .exceptionally( - error -> ProductionResult.failure(aggregator.validator.getPublicKey(), error)); + error -> ProductionResult.failure(aggregator.validator().getPublicKey(), error)); } - public SafeFuture> createAggregate( + private SafeFuture> createAggregate( final CommitteeAggregator aggregator, final Optional maybeAttestation) { if (maybeAttestation.isEmpty()) { return SafeFuture.completedFuture( ProductionResult.failure( - aggregator.validator.getPublicKey(), + aggregator.validator().getPublicKey(), new IllegalStateException( "Unable to perform aggregation for committee because no attestation was produced"))); } @@ -139,16 +131,16 @@ public SafeFuture> createAggregate( validatorApiChannel.createAggregate( slot, attestationData.hashTreeRoot(), - Optional.of(aggregator.attestationCommitteeIndex)), + Optional.of(aggregator.attestationCommitteeIndex())), this, ValidatorDutyMetricsSteps.CREATE); return createAggregationFuture.thenCompose( maybeAggregate -> { if (maybeAggregate.isEmpty()) { - validatorLogger.aggregationSkipped(slot, aggregator.attestationCommitteeIndex); + validatorLogger.aggregationSkipped(slot, aggregator.attestationCommitteeIndex()); return SafeFuture.completedFuture( - ProductionResult.noop(aggregator.validator.getPublicKey())); + ProductionResult.noop(aggregator.validator().getPublicKey())); } final Attestation aggregate = maybeAggregate.get(); return validatorDutyMetrics.record( @@ -165,55 +157,27 @@ private SafeFuture> createSignedAggreg final AggregateAndProof aggregateAndProof = schemaDefinitions .getAggregateAndProofSchema() - .create(aggregator.validatorIndex, aggregate, aggregator.proof); + .create(aggregator.validatorIndex(), aggregate, aggregator.proof()); return forkProvider .getForkInfo(slot) .thenCompose( forkInfo -> aggregator - .validator + .validator() .getSigner() .signAggregateAndProof(aggregateAndProof, forkInfo) .thenApply( signature -> ProductionResult.success( - aggregator.validator.getPublicKey(), + aggregator.validator().getPublicKey(), aggregateAndProof.getAggregate().getData().getBeaconBlockRoot(), schemaDefinitions .getSignedAggregateAndProofSchema() .create(aggregateAndProof, signature)))); } - private static class CommitteeAggregator { - - private final Validator validator; - private final UInt64 validatorIndex; - private final UInt64 attestationCommitteeIndex; - private final BLSSignature proof; - private final SafeFuture> unsignedAttestationFuture; - - private CommitteeAggregator( - final Validator validator, - final UInt64 validatorIndex, - final UInt64 attestationCommitteeIndex, - final BLSSignature proof, - final SafeFuture> unsignedAttestationFuture) { - this.validator = validator; - this.validatorIndex = validatorIndex; - this.attestationCommitteeIndex = attestationCommitteeIndex; - this.proof = proof; - this.unsignedAttestationFuture = unsignedAttestationFuture; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("validator", validator) - .add("validatorIndex", validatorIndex) - .add("attestationCommitteeIndex", attestationCommitteeIndex) - .add("proof", proof) - .add("unsignedAttestationFuture", unsignedAttestationFuture) - .toString(); - } + @VisibleForTesting + AggregationDutyAggregators getAggregators() { + return aggregators; } } diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/AggregationDutyAggregators.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/AggregationDutyAggregators.java new file mode 100644 index 00000000000..a0b94727c1d --- /dev/null +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/AggregationDutyAggregators.java @@ -0,0 +1,56 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.validator.client.duties.attestations; + +import com.google.common.base.MoreObjects; +import java.util.Optional; +import java.util.stream.Stream; +import tech.pegasys.teku.bls.BLSSignature; +import tech.pegasys.teku.infrastructure.async.SafeFuture; +import tech.pegasys.teku.infrastructure.unsigned.UInt64; +import tech.pegasys.teku.spec.datastructures.operations.AttestationData; +import tech.pegasys.teku.validator.client.Validator; + +public interface AggregationDutyAggregators { + + void addValidator( + final Validator validator, + final int validatorIndex, + final BLSSignature proof, + final int attestationCommitteeIndex, + final SafeFuture> unsignedAttestationFuture); + + boolean hasAggregators(); + + Stream streamAggregators(); + + record CommitteeAggregator( + Validator validator, + UInt64 validatorIndex, + UInt64 attestationCommitteeIndex, + BLSSignature proof, + SafeFuture> unsignedAttestationFuture) { + + @Override + public String toString() { + return MoreObjects.toStringHelper(this) + .add("validator", validator) + .add("validatorIndex", validatorIndex) + .add("attestationCommitteeIndex", attestationCommitteeIndex) + .add("proof", proof) + .add("unsignedAttestationFuture", unsignedAttestationFuture) + .toString(); + } + } +} diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/AggregatorsGroupedByCommittee.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/AggregatorsGroupedByCommittee.java new file mode 100644 index 00000000000..8f4aee277f5 --- /dev/null +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/AggregatorsGroupedByCommittee.java @@ -0,0 +1,65 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.validator.client.duties.attestations; + +import com.google.common.annotations.VisibleForTesting; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.stream.Stream; +import tech.pegasys.teku.bls.BLSSignature; +import tech.pegasys.teku.infrastructure.async.SafeFuture; +import tech.pegasys.teku.infrastructure.unsigned.UInt64; +import tech.pegasys.teku.spec.datastructures.operations.AttestationData; +import tech.pegasys.teku.validator.client.Validator; + +public class AggregatorsGroupedByCommittee implements AggregationDutyAggregators { + + private final ConcurrentMap aggregatorsByCommitteeIndex = + new ConcurrentHashMap<>(); + + @Override + public void addValidator( + final Validator validator, + final int validatorIndex, + final BLSSignature proof, + final int attestationCommitteeIndex, + final SafeFuture> unsignedAttestationFuture) { + aggregatorsByCommitteeIndex.computeIfAbsent( + attestationCommitteeIndex, + committeeIndex -> + new CommitteeAggregator( + validator, + UInt64.valueOf(validatorIndex), + UInt64.valueOf(attestationCommitteeIndex), + proof, + unsignedAttestationFuture)); + } + + @Override + public boolean hasAggregators() { + return !aggregatorsByCommitteeIndex.isEmpty(); + } + + @Override + public Stream streamAggregators() { + return aggregatorsByCommitteeIndex.values().stream(); + } + + @VisibleForTesting + Map getAggregatorsByCommitteeIndex() { + return aggregatorsByCommitteeIndex; + } +} diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/AttestationDutyFactory.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/AttestationDutyFactory.java index c1088eccc1b..42418e6b662 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/AttestationDutyFactory.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/AttestationDutyFactory.java @@ -29,18 +29,20 @@ public class AttestationDutyFactory private final Spec spec; private final ForkProvider forkProvider; private final ValidatorApiChannel validatorApiChannel; - private final ValidatorDutyMetrics validatorDutyMetrics; + private final boolean isDvtEnabled; public AttestationDutyFactory( final Spec spec, final ForkProvider forkProvider, final ValidatorApiChannel validatorApiChannel, - final ValidatorDutyMetrics validatorDutyMetrics) { + final ValidatorDutyMetrics validatorDutyMetrics, + final boolean isDvtEnabled) { this.spec = spec; this.forkProvider = forkProvider; this.validatorApiChannel = validatorApiChannel; this.validatorDutyMetrics = validatorDutyMetrics; + this.isDvtEnabled = isDvtEnabled; } @Override @@ -61,6 +63,7 @@ public AggregationDuty createAggregationDuty(final UInt64 slot, final Validator spec, slot, validatorApiChannel, + isDvtEnabled ? new UngroupedAggregators() : new AggregatorsGroupedByCommittee(), forkProvider, VALIDATOR_LOGGER, new BatchAttestationSendingStrategy<>(validatorApiChannel::sendAggregateAndProofs), diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/UngroupedAggregators.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/UngroupedAggregators.java new file mode 100644 index 00000000000..1373dd731df --- /dev/null +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/attestations/UngroupedAggregators.java @@ -0,0 +1,62 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.validator.client.duties.attestations; + +import com.google.common.annotations.VisibleForTesting; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.stream.Stream; +import tech.pegasys.teku.bls.BLSSignature; +import tech.pegasys.teku.infrastructure.async.SafeFuture; +import tech.pegasys.teku.infrastructure.unsigned.UInt64; +import tech.pegasys.teku.spec.datastructures.operations.AttestationData; +import tech.pegasys.teku.validator.client.Validator; + +public class UngroupedAggregators implements AggregationDutyAggregators { + + private final CopyOnWriteArrayList aggregators = + new CopyOnWriteArrayList<>(); + + @Override + public void addValidator( + final Validator validator, + final int validatorIndex, + final BLSSignature proof, + final int attestationCommitteeIndex, + final SafeFuture> unsignedAttestationFuture) { + aggregators.add( + new CommitteeAggregator( + validator, + UInt64.valueOf(validatorIndex), + UInt64.valueOf(attestationCommitteeIndex), + proof, + unsignedAttestationFuture)); + } + + @Override + public boolean hasAggregators() { + return !aggregators.isEmpty(); + } + + @Override + public Stream streamAggregators() { + return aggregators.stream(); + } + + @VisibleForTesting + List getAggregators() { + return aggregators; + } +} diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/synccommittee/ChainHeadTracker.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/synccommittee/ChainHeadTracker.java index 67f6b7926bf..88e82aae65d 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/synccommittee/ChainHeadTracker.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/duties/synccommittee/ChainHeadTracker.java @@ -16,7 +16,7 @@ import java.util.Map; import java.util.Optional; import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.infrastructure.unsigned.UInt64; import tech.pegasys.teku.spec.datastructures.operations.AttesterSlashing; diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/loader/PublicKeyLoader.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/loader/PublicKeyLoader.java index be01a3703f6..7b0d0036c14 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/loader/PublicKeyLoader.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/loader/PublicKeyLoader.java @@ -97,9 +97,9 @@ public List getPublicKeys(final List sources) { private Stream readKeysFromUrl(final String url) { try { - final String[] keys = objectMapper.readValue(new URL(url), String[].class); + final String[] keys = objectMapper.readValue(URI.create(url).toURL(), String[].class); return Arrays.stream(keys).map(key -> BLSPublicKey.fromSSZBytes(Bytes.fromHexString(key))); - } catch (IOException ex) { + } catch (IllegalArgumentException | IOException ex) { throw new InvalidConfigurationException("Failed to load public keys from URL " + url, ex); } } diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/loader/SlashingProtectionLogger.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/loader/SlashingProtectionLogger.java index 4876d9c9b53..46f148a6042 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/loader/SlashingProtectionLogger.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/loader/SlashingProtectionLogger.java @@ -29,7 +29,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.ethereum.signingrecord.ValidatorSigningRecord; import tech.pegasys.teku.infrastructure.async.AsyncRunner; diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/proposerconfig/ProposerConfigProvider.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/proposerconfig/ProposerConfigProvider.java index 4e708e8068b..8f130bc2be8 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/proposerconfig/ProposerConfigProvider.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/proposerconfig/ProposerConfigProvider.java @@ -15,6 +15,7 @@ import java.io.File; import java.net.MalformedURLException; +import java.net.URI; import java.net.URL; import java.util.Optional; import tech.pegasys.teku.infrastructure.async.AsyncRunner; @@ -36,10 +37,10 @@ static ProposerConfigProvider create( if (source.isPresent()) { URL sourceUrl; try { - sourceUrl = new URL(source.get()); + sourceUrl = URI.create(source.get()).toURL(); return new UrlProposerConfigProvider( asyncRunner, refresh, proposerConfigLoader, timeProvider, sourceUrl); - } catch (MalformedURLException e1) { + } catch (IllegalArgumentException | MalformedURLException e1) { try { sourceUrl = new File(source.get()).toURI().toURL(); } catch (MalformedURLException e2) { diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/ValidatorTypes.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/ValidatorTypes.java index 9c1ade897b9..aaf10a5f168 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/ValidatorTypes.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/ValidatorTypes.java @@ -23,6 +23,7 @@ import static tech.pegasys.teku.infrastructure.json.types.SerializableTypeDefinition.listOf; import java.net.MalformedURLException; +import java.net.URI; import java.net.URL; import java.util.List; import java.util.Optional; @@ -111,7 +112,7 @@ public class ValidatorTypes { .parser( url -> { try { - return new URL(url); + return URI.create(url).toURL(); } catch (MalformedURLException e) { throw new IllegalArgumentException(e); } diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/apis/GetGasLimit.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/apis/GetGasLimit.java index c9ec3cd16b8..e35929ee521 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/apis/GetGasLimit.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/apis/GetGasLimit.java @@ -61,9 +61,11 @@ public GetGasLimit(final Optional proposerConfigManager) .tags(TAG_GAS_LIMIT) .pathParam(PARAM_PUBKEY_TYPE) .description( - "Get the execution gas limit for an individual validator. This gas limit is the one used by the validator when proposing blocks via an external builder. If no limit has been set explicitly for a key then the process-wide default will be returned.\n" - + "The server may return a 400 status code if no external builder is configured.\n" - + "WARNING: The gas_limit is not used on Phase0 or Altair networks.") + """ + Get the execution gas limit for an individual validator. This gas limit is the one used by the validator when proposing blocks via an external builder. If no limit has been set explicitly for a key then the process-wide default will be returned. + The server may return a 400 status code if no external builder is configured. + WARNING: The gas_limit is not used on Phase0 or Altair networks. + """) .response(SC_OK, "Success response", RESPONSE_TYPE) .withAuthenticationResponses() .withNotFoundResponse() diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/apis/SetGasLimit.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/apis/SetGasLimit.java index ff42bb08850..ca5180f62b6 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/apis/SetGasLimit.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/apis/SetGasLimit.java @@ -58,10 +58,12 @@ public SetGasLimit(final Optional proposerConfigManager) .tags(TAG_GAS_LIMIT) .pathParam(PARAM_PUBKEY_TYPE) .description( - "Set the gas limit for an individual validator. This limit will be propagated to the beacon node for use on future block proposals.\n" - + "The beacon node is responsible for informing external block builders of the change.\n" - + "The server may return a 400 status code if no external builder is configured.\n" - + "WARNING: The gas_limit is not used on Phase0 or Altair networks.") + """ + Set the gas limit for an individual validator. This limit will be propagated to the beacon node for use on future block proposals. + The beacon node is responsible for informing external block builders of the change. + The server may return a 400 status code if no external builder is configured. + WARNING: The gas_limit is not used on Phase0 or Altair networks. + """) .requestBodyType(GAS_LIMIT_REQUEST_BODY) .response(SC_ACCEPTED, "Success") .response(SC_SERVICE_UNAVAILABLE, "Unable to update gas limit at this time") diff --git a/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/apis/schema/DeletionStatus.java b/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/apis/schema/DeletionStatus.java index e02aa969736..6413f9f7dc7 100644 --- a/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/apis/schema/DeletionStatus.java +++ b/validator/client/src/main/java/tech/pegasys/teku/validator/client/restapi/apis/schema/DeletionStatus.java @@ -13,11 +13,13 @@ package tech.pegasys.teku.validator.client.restapi.apis.schema; +import tech.pegasys.teku.api.response.ValidatorStatus; + public enum DeletionStatus { DELETED("deleted"), /** - * Should not be confused with {@link tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus}. - * Means the key was managed but not managed anymore + * Should not be confused with {@link ValidatorStatus}. Means the key was managed but not managed + * anymore */ NOT_ACTIVE("not_active"), NOT_FOUND("not_found"), diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/OwnedKeyManagerTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/OwnedKeyManagerTest.java index a6e8477d5ad..806ae9c6ac7 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/OwnedKeyManagerTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/OwnedKeyManagerTest.java @@ -31,6 +31,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.net.MalformedURLException; +import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.nio.file.Files; @@ -274,9 +275,13 @@ void shouldReturnRemoteValidatorsList() throws MalformedURLException { List externalValidators = Arrays.asList( new ExternalValidator( - keyPair1.getPublicKey(), Optional.of(new URL("http://example.com/")), true), + keyPair1.getPublicKey(), + Optional.of(URI.create("http://example.com/").toURL()), + true), new ExternalValidator( - keyPair2.getPublicKey(), Optional.of(new URL("http://example.com/")), false)); + keyPair2.getPublicKey(), + Optional.of(URI.create("http://example.com/").toURL()), + false)); assertThat(result).isEqualTo(externalValidators); } @@ -404,7 +409,8 @@ void shouldAddLocalKeysWhenDoppelgangerDetectionException() @Test void shouldDetectDoppelgangerAndIgnoreExternalKey() throws MalformedURLException { - when(signer.getSigningServiceUrl()).thenReturn(Optional.of(new URL("https://url.test"))); + when(signer.getSigningServiceUrl()) + .thenReturn(Optional.of(URI.create("https://url.test").toURL())); ExternalValidatorImportResult externalDoppelgangerImportResult = new ExternalValidatorImportResult.Builder( @@ -456,7 +462,8 @@ void shouldDetectDoppelgangerAndIgnoreExternalKey() throws MalformedURLException @Test void shouldAddExternalKeysWhenDoppelgangerDetectionException() throws MalformedURLException { - when(signer.getSigningServiceUrl()).thenReturn(Optional.of(new URL("https://url.test"))); + when(signer.getSigningServiceUrl()) + .thenReturn(Optional.of(URI.create("https://url.test").toURL())); ExternalValidatorImportResult doppelgangerImportResult = new ExternalValidatorImportResult.Builder( diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/OwnedValidatorStatusProviderTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/OwnedValidatorStatusProviderTest.java index 2095bdf3f8b..9e3022eada8 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/OwnedValidatorStatusProviderTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/OwnedValidatorStatusProviderTest.java @@ -27,7 +27,7 @@ import java.util.stream.Stream; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.ethereum.json.types.beacon.StateValidatorData; import tech.pegasys.teku.infrastructure.async.AsyncRunner; diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/ProposerConfigManagerTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/ProposerConfigManagerTest.java index 486fcf8c5af..08ca919bfe8 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/ProposerConfigManagerTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/ProposerConfigManagerTest.java @@ -436,32 +436,29 @@ private void prepareConfigWithDefaultConfigProperty(final Properties property, f private ProposerConfig.Config buildSingleConfigWithProperty( final Properties property, final Object value, final boolean isDefault) { - switch (property) { - case FEE_RECIPIENT: - return new ProposerConfig.Config((Eth1Address) value, null); - case BUILDER_ENABLED: - return new ProposerConfig.Config( - isDefault ? defaultFeeRecipientConfig : null, - new ProposerConfig.BuilderConfig((Boolean) value, null, null)); - case BUILDER_GAS_LIMIT: - return new ProposerConfig.Config( - isDefault ? defaultFeeRecipientConfig : null, - new ProposerConfig.BuilderConfig(isDefault ? false : null, (UInt64) value, null)); - case BUILDER_REGISTRATION_OVERRIDE_PUB_KEY: - return new ProposerConfig.Config( - isDefault ? defaultFeeRecipientConfig : null, - new ProposerConfig.BuilderConfig( - isDefault ? false : null, - null, - new RegistrationOverrides(null, (BLSPublicKey) value))); - case BUILDER_REGISTRATION_OVERRIDE_TIMESTAMP: - return new ProposerConfig.Config( - isDefault ? defaultFeeRecipientConfig : null, - new ProposerConfig.BuilderConfig( - isDefault ? false : null, null, new RegistrationOverrides((UInt64) value, null))); - } - - throw new RuntimeException(); + return switch (property) { + case FEE_RECIPIENT -> new ProposerConfig.Config((Eth1Address) value, null); + case BUILDER_ENABLED -> + new ProposerConfig.Config( + isDefault ? defaultFeeRecipientConfig : null, + new ProposerConfig.BuilderConfig((Boolean) value, null, null)); + case BUILDER_GAS_LIMIT -> + new ProposerConfig.Config( + isDefault ? defaultFeeRecipientConfig : null, + new ProposerConfig.BuilderConfig(isDefault ? false : null, (UInt64) value, null)); + case BUILDER_REGISTRATION_OVERRIDE_PUB_KEY -> + new ProposerConfig.Config( + isDefault ? defaultFeeRecipientConfig : null, + new ProposerConfig.BuilderConfig( + isDefault ? false : null, + null, + new RegistrationOverrides(null, (BLSPublicKey) value))); + case BUILDER_REGISTRATION_OVERRIDE_TIMESTAMP -> + new ProposerConfig.Config( + isDefault ? defaultFeeRecipientConfig : null, + new ProposerConfig.BuilderConfig( + isDefault ? false : null, null, new RegistrationOverrides((UInt64) value, null))); + }; } private void proposerWithRuntimeConfiguration(final Path tempDir) throws IOException { diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/ValidatorRegistratorTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/ValidatorRegistratorTest.java index e3806b2fd0e..fa5367e2663 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/ValidatorRegistratorTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/ValidatorRegistratorTest.java @@ -37,7 +37,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.TestTemplate; import org.mockito.ArgumentCaptor; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.ethereum.execution.types.Eth1Address; import tech.pegasys.teku.infrastructure.async.SafeFuture; diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/ValidatorStatusProviderTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/ValidatorStatusProviderTest.java index ceecfe8d45d..a6b1eeab7e8 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/ValidatorStatusProviderTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/ValidatorStatusProviderTest.java @@ -36,7 +36,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.bls.BLSTestUtil; import tech.pegasys.teku.ethereum.json.types.beacon.StateValidatorData; diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/ValidatorTimingActionsTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/ValidatorTimingActionsTest.java index d2ea74a6002..ac919b687eb 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/ValidatorTimingActionsTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/ValidatorTimingActionsTest.java @@ -27,7 +27,7 @@ import java.util.Set; import org.hyperledger.besu.plugin.services.MetricsSystem; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.infrastructure.logging.StatusLogger; import tech.pegasys.teku.infrastructure.unsigned.UInt64; diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/AggregationDutyTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/AggregationDutyTest.java index d6b946a9376..4eaa0b5067b 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/AggregationDutyTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/AggregationDutyTest.java @@ -61,7 +61,9 @@ import tech.pegasys.teku.validator.client.ForkProvider; import tech.pegasys.teku.validator.client.Validator; import tech.pegasys.teku.validator.client.duties.attestations.AggregationDuty; +import tech.pegasys.teku.validator.client.duties.attestations.AggregatorsGroupedByCommittee; import tech.pegasys.teku.validator.client.duties.attestations.BatchAttestationSendingStrategy; +import tech.pegasys.teku.validator.client.duties.attestations.UngroupedAggregators; @TestSpecContext(milestone = {PHASE0, ELECTRA}) class AggregationDutyTest { @@ -108,6 +110,7 @@ public void setUp(final SpecContext specContext) { spec, SLOT, validatorApiChannel, + new AggregatorsGroupedByCommittee(), forkProvider, validatorLogger, new BatchAttestationSendingStrategy<>(validatorApiChannel::sendAggregateAndProofs), @@ -290,6 +293,82 @@ public void shouldProduceSingleAggregateAndProofWhenMultipleValidatorsAggregateS .record(any(), any(AggregationDuty.class), eq(ValidatorDutyMetricsSteps.SIGN)); } + @TestTemplate + public void shouldProduceAllAggregatesForSameCommitteeUsingUngroupedAggregators() { + duty = + new AggregationDuty( + spec, + SLOT, + validatorApiChannel, + new UngroupedAggregators(), + forkProvider, + validatorLogger, + new BatchAttestationSendingStrategy<>(validatorApiChannel::sendAggregateAndProofs), + validatorDutyMetrics); + + final int committeeIndex = 2; + + final int validator1Index = 1; + final BLSSignature validator1Proof = dataStructureUtil.randomSignature(); + + final int validator2Index = 6; + final BLSSignature validator2Proof = dataStructureUtil.randomSignature(); + + final AttestationData attestationData = dataStructureUtil.randomAttestationData(); + final Attestation aggregate = dataStructureUtil.randomAttestation(); + duty.addValidator( + validator1, + validator1Index, + validator1Proof, + committeeIndex, + completedFuture(Optional.of(attestationData))); + duty.addValidator( + validator2, + validator2Index, + validator2Proof, + committeeIndex, + completedFuture(Optional.of(attestationData))); + + when(validatorApiChannel.createAggregate( + SLOT, attestationData.hashTreeRoot(), Optional.of(UInt64.valueOf(committeeIndex)))) + .thenReturn(completedFuture(Optional.of(aggregate))); + when(validatorApiChannel.sendAggregateAndProofs(anyList())) + .thenReturn(SafeFuture.completedFuture(Collections.emptyList())); + + final AggregateAndProof aggregateAndProof1 = + aggregateAndProofSchema.create(UInt64.valueOf(validator1Index), aggregate, validator1Proof); + final AggregateAndProof aggregateAndProof2 = + aggregateAndProofSchema.create(UInt64.valueOf(validator2Index), aggregate, validator2Proof); + final BLSSignature aggregateSignature1 = dataStructureUtil.randomSignature(); + final BLSSignature aggregateSignature2 = dataStructureUtil.randomSignature(); + when(signer1.signAggregateAndProof(aggregateAndProof1, forkInfo)) + .thenReturn(SafeFuture.completedFuture(aggregateSignature1)); + when(signer2.signAggregateAndProof(aggregateAndProof2, forkInfo)) + .thenReturn(SafeFuture.completedFuture(aggregateSignature2)); + + performAndReportDuty(); + + // Two proofs should be sent. Both proofs are sent together so there is only one call to + // sendAggregateAndProofs. + verify(validatorApiChannel) + .sendAggregateAndProofs( + List.of( + signedAggregateAndProofSchema.create(aggregateAndProof1, aggregateSignature1), + signedAggregateAndProofSchema.create(aggregateAndProof2, aggregateSignature2))); + // Duty is completed with two aggregates (for the same slot/committee). So we check success + // count is 2 + verify(validatorLogger) + .dutyCompleted( + TYPE, SLOT, 2, Set.of(aggregate.getData().getBeaconBlockRoot()), Optional.empty()); + verifyNoMoreInteractions(validatorLogger); + + // Two aggregation were created, so we capture the time for both individually + verify(validatorDutyMetrics, times(2)) + .record(any(), any(AggregationDuty.class), eq(ValidatorDutyMetricsSteps.CREATE)); + verify(validatorDutyMetrics, times(2)) + .record(any(), any(AggregationDuty.class), eq(ValidatorDutyMetricsSteps.SIGN)); + } + @TestTemplate public void shouldFailWhenAttestationDataNotCreated() { duty.addValidator( diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/attestations/AggregationDutyAggregatorsTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/attestations/AggregationDutyAggregatorsTest.java new file mode 100644 index 00000000000..0bd12362582 --- /dev/null +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/attestations/AggregationDutyAggregatorsTest.java @@ -0,0 +1,91 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.validator.client.duties.attestations; + +import static org.assertj.core.api.Assertions.assertThat; +import static tech.pegasys.teku.spec.generator.signatures.NoOpRemoteSigner.NO_OP_REMOTE_SIGNER; + +import java.util.Optional; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import tech.pegasys.teku.bls.BLSKeyPair; +import tech.pegasys.teku.infrastructure.async.SafeFuture; +import tech.pegasys.teku.infrastructure.unsigned.UInt64; +import tech.pegasys.teku.spec.Spec; +import tech.pegasys.teku.spec.TestSpecFactory; +import tech.pegasys.teku.spec.util.DataStructureUtil; +import tech.pegasys.teku.validator.client.Validator; +import tech.pegasys.teku.validator.client.duties.attestations.AggregationDutyAggregators.CommitteeAggregator; + +abstract class AggregationDutyAggregatorsTest { + + private final Spec spec = TestSpecFactory.createMinimalElectra(); + private final DataStructureUtil dataStructureUtil = new DataStructureUtil(spec); + + protected AggregationDutyAggregators aggregationDutyAggregators; + + @BeforeEach + public void setUp() { + aggregationDutyAggregators = getAggregator(); + } + + @Test + public void addValidatorsAndStreaming() { + final CommitteeAggregator committeeAggregator1 = randomCommitteeAggregator(); + final CommitteeAggregator committeeAggregator2 = randomCommitteeAggregator(); + final CommitteeAggregator committeeAggregator3 = randomCommitteeAggregator(); + + addValidator(committeeAggregator1); + addValidator(committeeAggregator2); + addValidator(committeeAggregator3); + + assertThat(aggregationDutyAggregators.hasAggregators()).isTrue(); + assertThat(aggregationDutyAggregators.streamAggregators()) + .contains(committeeAggregator1, committeeAggregator2, committeeAggregator3); + } + + @Test + public void hasAggregatorsReturnFalseWhenNoAggregatorsHaveBeenAdded() { + assertThat(aggregationDutyAggregators.hasAggregators()).isFalse(); + } + + abstract AggregationDutyAggregators getAggregator(); + + protected void addValidator(final CommitteeAggregator committeeAggregator) { + aggregationDutyAggregators.addValidator( + committeeAggregator.validator(), + committeeAggregator.validatorIndex().intValue(), + committeeAggregator.proof(), + committeeAggregator.attestationCommitteeIndex().intValue(), + committeeAggregator.unsignedAttestationFuture()); + } + + protected CommitteeAggregator randomCommitteeAggregator() { + return randomCommitteeAggregator(dataStructureUtil.randomPositiveInt()); + } + + protected CommitteeAggregator randomCommitteeAggregator(final int committeeIndex) { + final BLSKeyPair keyPair = dataStructureUtil.randomKeyPair(); + final Validator validator = + new Validator(keyPair.getPublicKey(), NO_OP_REMOTE_SIGNER, Optional::empty, true); + final UInt64 validatorIndex = dataStructureUtil.randomValidatorIndex(); + + return new CommitteeAggregator( + validator, + validatorIndex, + UInt64.valueOf(committeeIndex), + dataStructureUtil.randomSignature(), + SafeFuture.completedFuture(Optional.of(dataStructureUtil.randomAttestationData()))); + } +} diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/attestations/AggregatorsGroupedByCommitteeTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/attestations/AggregatorsGroupedByCommitteeTest.java new file mode 100644 index 00000000000..2fd08137fdb --- /dev/null +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/attestations/AggregatorsGroupedByCommitteeTest.java @@ -0,0 +1,49 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.validator.client.duties.attestations; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Map; +import org.junit.jupiter.api.Test; +import tech.pegasys.teku.validator.client.duties.attestations.AggregationDutyAggregators.CommitteeAggregator; + +class AggregatorsGroupedByCommitteeTest extends AggregationDutyAggregatorsTest { + + @Override + AggregationDutyAggregators getAggregator() { + return new AggregatorsGroupedByCommittee(); + } + + @Test + public void addAggregatorsForSameCommitteeGroupThemByCommitteeIndex() { + final CommitteeAggregator committeeAggregator1 = randomCommitteeAggregator(1); + final CommitteeAggregator committeeAggregator2 = randomCommitteeAggregator(1); + final CommitteeAggregator committeeAggregator3 = randomCommitteeAggregator(2); + + addValidator(committeeAggregator1); + addValidator(committeeAggregator2); + addValidator(committeeAggregator3); + + final Map aggregatorsByCommitteeIndex = + ((AggregatorsGroupedByCommittee) aggregationDutyAggregators) + .getAggregatorsByCommitteeIndex(); + + assertThat(aggregatorsByCommitteeIndex).hasSize(2); + // committeeAggregator2 isn't on the map because it is from the same committee as + // committeeAggregator1 + assertThat(aggregatorsByCommitteeIndex) + .containsValues(committeeAggregator1, committeeAggregator3); + } +} diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/attestations/AttestationDutyFactoryTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/attestations/AttestationDutyFactoryTest.java new file mode 100644 index 00000000000..fdb5d67c769 --- /dev/null +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/attestations/AttestationDutyFactoryTest.java @@ -0,0 +1,60 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.validator.client.duties.attestations; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +import java.util.stream.Stream; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import tech.pegasys.teku.infrastructure.metrics.StubMetricsSystem; +import tech.pegasys.teku.infrastructure.unsigned.UInt64; +import tech.pegasys.teku.spec.Spec; +import tech.pegasys.teku.spec.TestSpecFactory; +import tech.pegasys.teku.validator.api.ValidatorApiChannel; +import tech.pegasys.teku.validator.client.ForkProvider; +import tech.pegasys.teku.validator.client.Validator; +import tech.pegasys.teku.validator.client.duties.ValidatorDutyMetrics; + +class AttestationDutyFactoryTest { + + private final Spec spec = TestSpecFactory.createMinimalElectra(); + private final ValidatorApiChannel validatorApiChannel = mock(ValidatorApiChannel.class); + private final ForkProvider forkProvider = mock(ForkProvider.class); + private final ValidatorDutyMetrics validatorDutyMetrics = + ValidatorDutyMetrics.create(new StubMetricsSystem()); + private final Validator validator = mock(Validator.class); + private final UInt64 slot = UInt64.ONE; + + @ParameterizedTest + @MethodSource("aggregatorTypeArgs") + public void shouldUseCorrectAggregatorTypeWhenCreatingAggregationDuty( + final boolean dvtEnabled, final Class expectedAggregatorClass) { + final AttestationDutyFactory attestationDutyFactory = + new AttestationDutyFactory( + spec, forkProvider, validatorApiChannel, validatorDutyMetrics, dvtEnabled); + final AggregationDuty aggregationDuty = + attestationDutyFactory.createAggregationDuty(slot, validator); + + assertThat(aggregationDuty.getAggregators()).isInstanceOf(expectedAggregatorClass); + } + + private static Stream aggregatorTypeArgs() { + return Stream.of( + Arguments.of(false, AggregatorsGroupedByCommittee.class), + Arguments.of(true, UngroupedAggregators.class)); + } +} diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/attestations/UngroupedAggregatorsTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/attestations/UngroupedAggregatorsTest.java new file mode 100644 index 00000000000..a2fa4ef2806 --- /dev/null +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/duties/attestations/UngroupedAggregatorsTest.java @@ -0,0 +1,46 @@ +/* + * Copyright Consensys Software Inc., 2025 + * + * 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. + */ + +package tech.pegasys.teku.validator.client.duties.attestations; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; +import org.junit.jupiter.api.Test; +import tech.pegasys.teku.validator.client.duties.attestations.AggregationDutyAggregators.CommitteeAggregator; + +class UngroupedAggregatorsTest extends AggregationDutyAggregatorsTest { + + @Override + AggregationDutyAggregators getAggregator() { + return new UngroupedAggregators(); + } + + @Test + public void addAggregatorsForSameCommitteeDoNotGroupThem() { + final CommitteeAggregator committeeAggregator1 = randomCommitteeAggregator(1); + final CommitteeAggregator committeeAggregator2 = randomCommitteeAggregator(1); + final CommitteeAggregator committeeAggregator3 = randomCommitteeAggregator(2); + + addValidator(committeeAggregator1); + addValidator(committeeAggregator2); + addValidator(committeeAggregator3); + + final List aggregators = + ((UngroupedAggregators) aggregationDutyAggregators).getAggregators(); + + assertThat(aggregators).hasSize(3); + assertThat(aggregators) + .contains(committeeAggregator1, committeeAggregator2, committeeAggregator3); + } +} diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/ExternalValidatorSourceTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/ExternalValidatorSourceTest.java index 2f6e553f04e..39906f55abe 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/ExternalValidatorSourceTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/ExternalValidatorSourceTest.java @@ -23,6 +23,7 @@ import com.google.common.base.Charsets; import java.io.IOException; +import java.net.URI; import java.net.URL; import java.net.http.HttpClient; import java.net.http.HttpResponse; @@ -81,7 +82,7 @@ public ExternalValidatorSourceTest() {} void setup(@TempDir final Path tempDir) throws IOException, InterruptedException { config = ValidatorConfig.builder() - .validatorExternalSignerUrl(new URL("http://localhost:9000")) + .validatorExternalSignerUrl(URI.create("http://localhost:9000").toURL()) .build(); externalSignerTaskQueue = ThrottlingTaskQueueWithPriority.create( @@ -117,7 +118,7 @@ void shouldDeleteValidator(@TempDir final Path tempDir) throws IOException { final AddValidatorResult addValidatorResult = externalValidatorSource.addValidator(publicKey, Optional.empty()); - assertImportedSuccessfully(addValidatorResult, new URL("http://localhost:9000")); + assertImportedSuccessfully(addValidatorResult, URI.create("http://localhost:9000").toURL()); assertFileContent(tempDir, publicKey, "{\"pubkey\":\"" + publicKey + "\"}"); final DeleteKeyResult result = externalValidatorSource.deleteValidator(publicKey); @@ -167,7 +168,7 @@ void addValidator_shouldGetConfigUrlWhenNotProvided(@TempDir final Path tempDir) @Test void addValidator_shouldGetUrlIfProvided(@TempDir final Path tempDir) throws IOException { final BLSPublicKey publicKey = dataStructureUtil.randomPublicKey(); - final URL url = new URL("http://host.com"); + final URL url = URI.create("http://host.com").toURL(); final ExternalValidatorSource externalValidatorSource = newExternalValidatorSource(tempDir, false); @@ -204,7 +205,8 @@ void shouldLoadExternalValidators(@TempDir final Path tempDir) throws IOExceptio newExternalValidatorSource(tempDir, false); final BLSPublicKey publicKey1 = dataStructureUtil.randomPublicKey(); - createRemoteKeyFile(dataDirLayout, publicKey1, Optional.of(new URL("http://host.com"))); + createRemoteKeyFile( + dataDirLayout, publicKey1, Optional.of(URI.create("http://host.com").toURL())); final BLSPublicKey publicKey2 = dataStructureUtil.randomPublicKey(); createRemoteKeyFile(dataDirLayout, publicKey2, Optional.empty()); @@ -225,8 +227,8 @@ void shouldLoadExternalValidators(@TempDir final Path tempDir) throws IOExceptio assertThat(result) .containsExactlyInAnyOrder( - new ValidatorProviderInfo(publicKey1, new URL("http://host.com")), - new ValidatorProviderInfo(publicKey2, new URL("http://localhost:9000"))); + new ValidatorProviderInfo(publicKey1, URI.create("http://host.com").toURL()), + new ValidatorProviderInfo(publicKey2, URI.create("http://localhost:9000").toURL())); } @Test @@ -253,8 +255,8 @@ void shouldGetAvailableReadOnlyValidators(@TempDir final Path tempDir) throws IO assertThat(result) .containsExactlyInAnyOrder( - new ValidatorProviderInfo(publicKey1, new URL("http://localhost:9000")), - new ValidatorProviderInfo(publicKey2, new URL("http://localhost:9000"))); + new ValidatorProviderInfo(publicKey1, URI.create("http://localhost:9000").toURL()), + new ValidatorProviderInfo(publicKey2, URI.create("http://localhost:9000").toURL())); } private void createRemoteKeyFile( diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/PublicKeyLoaderTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/PublicKeyLoaderTest.java index 3fa221d8793..acf6881edf1 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/PublicKeyLoaderTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/PublicKeyLoaderTest.java @@ -23,6 +23,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.net.MalformedURLException; +import java.net.URI; import java.net.URL; import java.net.UnknownHostException; import java.net.http.HttpClient; @@ -53,7 +54,7 @@ public class PublicKeyLoaderTest { private final BLSPublicKey secondKey = BLSPublicKey.fromBytesCompressed(Bytes48.fromHexString(secondKeyStr)); - private final URL externalSignerUrl = new URL("http://external.sigener"); + private final URL externalSignerUrl = URI.create("http://external.sigener").toURL(); private final ObjectMapper mapper = mock(ObjectMapper.class); private final HttpClient httpClient = mock(HttpClient.class); @@ -71,7 +72,7 @@ public PublicKeyLoaderTest() throws MalformedURLException {} void setUp() throws IOException, InterruptedException { // URL response final String[] values = {firstKeyStr, secondKeyStr}; - when(mapper.readValue(new URL(urlSource), String[].class)).thenReturn(values); + when(mapper.readValue(URI.create(urlSource).toURL(), String[].class)).thenReturn(values); // external signer response final String jsonValues = String.format("[%s, %s]", firstKeyStr, secondKeyStr); @@ -116,14 +117,14 @@ void shouldHandleDuplicatesAcrossSources() { @Test void shouldHandleEmptyResponseFromUrl() throws IOException { final String[] values = {}; - when(mapper.readValue(new URL(urlSource), String[].class)).thenReturn(values); + when(mapper.readValue(URI.create(urlSource).toURL(), String[].class)).thenReturn(values); assertThat(loader.getPublicKeys(List.of(urlSource, secondKeyStr))).containsExactly(secondKey); } @Test void shouldThrowInvalidConfigurationExceptionWhenUrlFailsToLoad() throws Exception { final UnknownHostException exception = new UnknownHostException("Unknown host"); - when(mapper.readValue(new URL(urlSource), String[].class)).thenThrow(exception); + when(mapper.readValue(URI.create(urlSource).toURL(), String[].class)).thenThrow(exception); assertThatThrownBy(() -> loader.getPublicKeys(List.of(urlSource))) .isInstanceOf(InvalidConfigurationException.class) .hasRootCause(exception); diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/SlashingProtectionLoggerTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/SlashingProtectionLoggerTest.java index 7d16114a17e..8452bc5e3b7 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/SlashingProtectionLoggerTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/SlashingProtectionLoggerTest.java @@ -22,7 +22,7 @@ import static org.mockito.Mockito.when; import java.net.MalformedURLException; -import java.net.URL; +import java.net.URI; import java.net.http.HttpClient; import java.time.Duration; import java.util.ArrayList; @@ -168,7 +168,7 @@ private Validator createUnProtectedValidator(final BLSPublicKey publicKey) { new ExternalSigner( spec, mock(HttpClient.class), - new URL("http://127.0.0.1/"), + URI.create("http://127.0.0.1/").toURL(), publicKey, TIMEOUT, mock(ThrottlingTaskQueueWithPriority.class), diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/ValidatorLoaderTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/ValidatorLoaderTest.java index 8fd9ffa07a0..d073ed0403c 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/ValidatorLoaderTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/ValidatorLoaderTest.java @@ -26,6 +26,7 @@ import java.io.File; import java.io.IOException; import java.net.MalformedURLException; +import java.net.URI; import java.net.URL; import java.net.http.HttpClient; import java.net.http.HttpResponse; @@ -89,7 +90,7 @@ class ValidatorLoaderTest { static { try { - SIGNER_URL = new URL("http://localhost:9000"); + SIGNER_URL = URI.create("http://localhost:9000").toURL(); } catch (MalformedURLException e) { throw new RuntimeException(e); } diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/restapi/ValidatorTypesTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/restapi/ValidatorTypesTest.java index 13b18c39361..aee4bd1f152 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/restapi/ValidatorTypesTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/restapi/ValidatorTypesTest.java @@ -22,6 +22,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import java.net.MalformedURLException; +import java.net.URI; import java.net.URL; import java.util.HashMap; import java.util.List; @@ -174,7 +175,7 @@ void postRemoteKeysRequest_shouldFormatPostRemoteKeysRequestOptionalUrl() throws final List externalValidators = List.of( new ExternalValidator(publicKey1, Optional.empty()), - new ExternalValidator(publicKey2, Optional.of(new URL("http://host.com")))); + new ExternalValidator(publicKey2, Optional.of(URI.create("http://host.com").toURL()))); final PostRemoteKeysRequest request = new PostRemoteKeysRequest(externalValidators); final Map result = JsonTestUtil.parse(JsonUtil.serialize(request, ValidatorTypes.POST_REMOTE_KEYS_REQUEST)); @@ -188,7 +189,7 @@ void postRemoteKeysRequest_shouldFormatPostRemoteKeysRequestOptionalUrl() throws Map.of("pubkey", publicKey1.toString()), Map.of( "pubkey", publicKey2.toString(), - "url", new URL("http://host.com").toString())); + "url", URI.create("http://host.com").toURL().toString())); } @Test @@ -208,8 +209,7 @@ void externalValidatorType_invalidUrl() { parse( "{ \"pubkey\": \"0xa4654ac3105a58c7634031b5718c4880c87300f72091cfbc69fe490b71d93a671e00e80a388e1ceb8ea1de112003e976\", \"url\": \"/\", \"readonly\": true}", ValidatorTypes.EXTERNAL_VALIDATOR_RESPONSE_TYPE)) - .hasCauseInstanceOf(IllegalArgumentException.class) - .hasRootCauseInstanceOf(MalformedURLException.class); + .hasRootCauseInstanceOf(IllegalArgumentException.class); } @Test @@ -224,7 +224,7 @@ void externalValidatorStore_urlPresent() throws JsonProcessingException, Malform BLSPublicKey publicKey = dataStructureUtil.randomPublicKey(); checkExternalValidatorStoreRoundTrip( publicKey, - Optional.of(new URL("http://host.com")), + Optional.of(URI.create("http://host.com").toURL()), "{\"pubkey\":\"" + publicKey + "\",\"url\":\"http://host.com\"}"); } diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/restapi/apis/PostRemoteKeysTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/restapi/apis/PostRemoteKeysTest.java index 88f9979ad8a..3546368e073 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/restapi/apis/PostRemoteKeysTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/restapi/apis/PostRemoteKeysTest.java @@ -24,6 +24,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import java.net.MalformedURLException; +import java.net.URI; import java.net.URL; import java.util.List; import java.util.Optional; @@ -61,7 +62,7 @@ void validResponse_shouldGiveValidPostKeyResults() List.of( new ExternalValidator( BLSTestUtil.randomKeyPair(1).getPublicKey(), - Optional.of(new URL("http://host.com"))), + Optional.of(URI.create("http://host.com").toURL())), new ExternalValidator(BLSTestUtil.randomKeyPair(2).getPublicKey(), Optional.empty())); final PostRemoteKeysRequest body = new PostRemoteKeysRequest(externalValidators); when(request.getRequestBody()).thenReturn(body); @@ -80,7 +81,7 @@ void duplicate_shouldGiveDuplicateResponse() throws JsonProcessingException, MalformedURLException { BLSPublicKey publicKey = BLSTestUtil.randomKeyPair(1).getPublicKey(); - URL url = new URL("http://host.com"); + URL url = URI.create("http://host.com").toURL(); List externalValidators = List.of( diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/signer/ExternalSignerStatusLoggerTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/signer/ExternalSignerStatusLoggerTest.java index e7b07208c35..1ddfd0f8075 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/signer/ExternalSignerStatusLoggerTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/signer/ExternalSignerStatusLoggerTest.java @@ -19,6 +19,7 @@ import static org.mockito.Mockito.verify; import java.net.MalformedURLException; +import java.net.URI; import java.net.URL; import java.util.concurrent.atomic.AtomicBoolean; import org.assertj.core.api.Assertions; @@ -39,7 +40,7 @@ class ExternalSignerStatusLoggerTest { static { try { - SIGNER_URL = new URL("http://localhost:9000"); + SIGNER_URL = URI.create("http://localhost:9000").toURL(); } catch (final MalformedURLException e) { throw new RuntimeException(e); } diff --git a/validator/client/src/test/resources/tech/pegasys/teku/validator/client/restapi/paths/_eth_v1_validator_{pubkey}_gas_limit.json b/validator/client/src/test/resources/tech/pegasys/teku/validator/client/restapi/paths/_eth_v1_validator_{pubkey}_gas_limit.json index 8d599af673f..478a5b79186 100644 --- a/validator/client/src/test/resources/tech/pegasys/teku/validator/client/restapi/paths/_eth_v1_validator_{pubkey}_gas_limit.json +++ b/validator/client/src/test/resources/tech/pegasys/teku/validator/client/restapi/paths/_eth_v1_validator_{pubkey}_gas_limit.json @@ -3,7 +3,7 @@ "tags" : [ "Gas Limit" ], "operationId" : "GetGasLimit", "summary" : "Get Validator Gas Limit", - "description" : "Get the execution gas limit for an individual validator. This gas limit is the one used by the validator when proposing blocks via an external builder. If no limit has been set explicitly for a key then the process-wide default will be returned.\nThe server may return a 400 status code if no external builder is configured.\nWARNING: The gas_limit is not used on Phase0 or Altair networks.", + "description" : "Get the execution gas limit for an individual validator. This gas limit is the one used by the validator when proposing blocks via an external builder. If no limit has been set explicitly for a key then the process-wide default will be returned.\nThe server may return a 400 status code if no external builder is configured.\nWARNING: The gas_limit is not used on Phase0 or Altair networks.\n", "parameters" : [ { "name" : "pubkey", "required" : true, @@ -90,7 +90,7 @@ "tags" : [ "Gas Limit" ], "operationId" : "SetGasLimit", "summary" : "Set validator gas limit", - "description" : "Set the gas limit for an individual validator. This limit will be propagated to the beacon node for use on future block proposals.\nThe beacon node is responsible for informing external block builders of the change.\nThe server may return a 400 status code if no external builder is configured.\nWARNING: The gas_limit is not used on Phase0 or Altair networks.", + "description" : "Set the gas limit for an individual validator. This limit will be propagated to the beacon node for use on future block proposals.\nThe beacon node is responsible for informing external block builders of the change.\nThe server may return a 400 status code if no external builder is configured.\nWARNING: The gas_limit is not used on Phase0 or Altair networks.\n", "parameters" : [ { "name" : "pubkey", "required" : true, diff --git a/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/apiclient/SchemaObjectsTestFixture.java b/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/apiclient/SchemaObjectsTestFixture.java deleted file mode 100644 index 86cf379cd3a..00000000000 --- a/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/apiclient/SchemaObjectsTestFixture.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright Consensys Software Inc., 2025 - * - * 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. - */ - -package tech.pegasys.teku.validator.remote.apiclient; - -import static tech.pegasys.teku.spec.config.SpecConfig.FAR_FUTURE_EPOCH; - -import tech.pegasys.teku.api.response.v1.beacon.GenesisData; -import tech.pegasys.teku.api.response.v1.beacon.GetGenesisResponse; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorResponse; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; -import tech.pegasys.teku.api.schema.Attestation; -import tech.pegasys.teku.api.schema.BLSPubKey; -import tech.pegasys.teku.api.schema.SignedAggregateAndProof; -import tech.pegasys.teku.api.schema.SignedVoluntaryExit; -import tech.pegasys.teku.api.schema.SubnetSubscription; -import tech.pegasys.teku.api.schema.Validator; -import tech.pegasys.teku.api.schema.altair.SyncCommitteeContribution; -import tech.pegasys.teku.bls.BLSPublicKey; -import tech.pegasys.teku.infrastructure.unsigned.UInt64; -import tech.pegasys.teku.spec.Spec; -import tech.pegasys.teku.spec.TestSpecFactory; -import tech.pegasys.teku.spec.util.DataStructureUtil; - -public class SchemaObjectsTestFixture { - - private final DataStructureUtil dataStructureUtil; - - public SchemaObjectsTestFixture(final Spec spec) { - this.dataStructureUtil = new DataStructureUtil(spec); - } - - public SchemaObjectsTestFixture() { - this(TestSpecFactory.createMinimalPhase0()); - } - - public GetGenesisResponse getGenesisResponse() { - return new GetGenesisResponse( - new GenesisData( - dataStructureUtil.randomUInt64(), - dataStructureUtil.randomBytes32(), - dataStructureUtil.randomBytes4())); - } - - public SignedVoluntaryExit signedVoluntaryExit() { - return new SignedVoluntaryExit(dataStructureUtil.randomSignedVoluntaryExit()); - } - - public ValidatorResponse validatorResponse() { - return validatorResponse(dataStructureUtil.randomLong(), dataStructureUtil.randomPublicKey()); - } - - public ValidatorResponse validatorResponse(final long index, final BLSPublicKey publicKey) { - return new ValidatorResponse( - UInt64.valueOf(index), - dataStructureUtil.randomUInt64(), - ValidatorStatus.active_ongoing, - new Validator( - new BLSPubKey(publicKey), - dataStructureUtil.randomBytes32(), - dataStructureUtil.randomUInt64(), - false, - UInt64.ZERO, - UInt64.ZERO, - FAR_FUTURE_EPOCH, - FAR_FUTURE_EPOCH)); - } - - public SyncCommitteeContribution syncCommitteeContribution(final UInt64 slot) { - final Spec altairSpec = TestSpecFactory.createMainnetAltair(); - final DataStructureUtil altairData = new DataStructureUtil(altairSpec); - return new SyncCommitteeContribution(altairData.randomSyncCommitteeContribution(slot)); - } - - public Attestation attestation() { - return new Attestation(dataStructureUtil.randomAttestation()); - } - - public SubnetSubscription subnetSubscription() { - return new SubnetSubscription(1, UInt64.ONE); - } - - public SignedAggregateAndProof signedAggregateAndProof() { - return new SignedAggregateAndProof(dataStructureUtil.randomSignedAggregateAndProof()); - } -} diff --git a/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/typedef/OkHttpValidatorTypeDefClientTest.java b/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/typedef/OkHttpValidatorTypeDefClientTest.java index a5fe0dbc5b7..fbd21b13a9c 100644 --- a/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/typedef/OkHttpValidatorTypeDefClientTest.java +++ b/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/typedef/OkHttpValidatorTypeDefClientTest.java @@ -61,7 +61,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.TestTemplate; import tech.pegasys.teku.api.exceptions.RemoteServiceNotAvailableException; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSSignature; import tech.pegasys.teku.ethereum.json.types.beacon.StateValidatorData; import tech.pegasys.teku.ethereum.json.types.validator.AttesterDuties; @@ -227,14 +227,15 @@ void getsSyncingStatus() throws InterruptedException { new MockResponse() .setResponseCode(200) .setBody( - "{\n" - + " \"data\": {\n" - + " \"head_slot\": \"1\",\n" - + " \"sync_distance\": \"1\",\n" - + " \"is_syncing\": true,\n" - + " \"is_optimistic\": true\n" - + " }\n" - + "}")); + """ + { + "data": { + "head_slot": "1", + "sync_distance": "1", + "is_syncing": true, + "is_optimistic": true + } + }""")); final SyncingStatus result = typeDefClient.getSyncingStatus(); diff --git a/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/typedef/handlers/GetSpecRequestTest.java b/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/typedef/handlers/GetSpecRequestTest.java index 53a8e92bb57..285f6c42b44 100644 --- a/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/typedef/handlers/GetSpecRequestTest.java +++ b/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/typedef/handlers/GetSpecRequestTest.java @@ -42,7 +42,7 @@ void successfulRequest() { mockWebServer.enqueue( new MockResponse().setResponseCode(SC_OK).setBody("{ \"data\":{\"a\":\"b\"}}")); - final Optional> response = request.submit(); + final Optional> response = request.submit(); assertThat(response).isPresent(); assertThat(response.get().size()).isGreaterThan(0); } diff --git a/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/typedef/handlers/GetStateValidatorsRequestTest.java b/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/typedef/handlers/GetStateValidatorsRequestTest.java index 15088135ad5..d5e544d3565 100644 --- a/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/typedef/handlers/GetStateValidatorsRequestTest.java +++ b/validator/remote/src/integration-test/java/tech/pegasys/teku/validator/remote/typedef/handlers/GetStateValidatorsRequestTest.java @@ -36,7 +36,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.TestTemplate; import tech.pegasys.teku.api.exceptions.RemoteServiceNotAvailableException; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.ethereum.json.types.beacon.StateValidatorData; import tech.pegasys.teku.infrastructure.unsigned.UInt64; import tech.pegasys.teku.spec.TestSpecContext; diff --git a/validator/remote/src/integration-test/resources/responses/produce_block_responses/newBlindedBlockFULU.json b/validator/remote/src/integration-test/resources/responses/produce_block_responses/newBlindedBlockFULU.json new file mode 100644 index 00000000000..9031c0b735d --- /dev/null +++ b/validator/remote/src/integration-test/resources/responses/produce_block_responses/newBlindedBlockFULU.json @@ -0,0 +1,397 @@ +{ + "version": "fulu", + "execution_payload_blinded": true, + "execution_payload_value": "52335047088093692175629908587741169571103578927521980677976976500308305025762", + "consensus_block_value": "60987255743756591490802410911397502078420277537860810465656654307850393571949", + "data": { + "slot": "1", + "proposer_index": "4666673844721362956", + "parent_root": "0x367cbd40ac7318427aadb97345a91fa2e965daf3158d7f1846f1306305f41bef", + "state_root": "0xfd18cf40cc907a739be483f1ca0ee23ad65cdd3df23205eabc6d660a75d1f54e", + "body": { + "randao_reveal": "0x9005ed0936f527d416609285b355fe6b9610d730c18b9d2f4942ba7d0eb95ba304ff46b6a2fb86f0c756bf09274db8e11399b7642f9fc5ae50b5bd9c1d87654277a19bfc3df78d36da16f44a48630d9550774a4ca9f3a5b55bbf33345ad2ec71", + "eth1_data": { + "deposit_root": "0x6fdfab408c56b6105a76eff5c0435d09fc6ed7a938e7f946cf74fbbb9416428f", + "deposit_count": "4658411424342975020", + "block_hash": "0x499db7404cbff78670f0209f1932346fef68d985cb55a8d27472742bdf54d379" + }, + "graffiti": "0x0000000000000000000000000000000000000000000000000000000000000000", + "proposer_slashings": [ + { + "signed_header_1": { + "message": { + "slot": "4661716390776343276", + "proposer_index": "4600574485989226763", + "parent_root": "0x32a7d23faa44fc04cc23dc3b560a55ade3deb2c393e9de2e6d20bdad2416c39b", + "state_root": "0xf943e43fcb615e36ec5aa6b9db6f1746d0d5b50d708f6400e39cf25495f39cfb", + "body_root": "0x0c65de3f6bad3d7be19d0de5aff82b13d6d8b49f26588dba111e361d6f545486" + }, + "signature": "0xb520c40e02457e0d3d61ebba3b04912f7db82a9a74132fedf190d94b32738dc62744644455959b4b4dc7aaf1e54064fa0f4aefe30696b7ed758c921d266402360e9abc003374800cd2aa6ffaa0c11a5cbfb3798b1816bac7be1e0c67c3305483" + }, + "signed_header_2": { + "message": { + "slot": "4661716390776343276", + "proposer_index": "4600574485989226763", + "parent_root": "0x7e2bbb3f2a737918a12f79e9a52da7e1fceaae0b6c0c82172425cbce8d99a0c6", + "state_root": "0x45c8cc3f4a90db49c16643672a93697ae9e1b15549b207e99aa10076fe767a26", + "body_root": "0x58e9c63feadbba8eb6a9aa92fd1b7e47efe4b0e7ff7a30a3c822443ed8d731b1" + }, + "signature": "0xa01cb4e18fb43a400024b67cd091680b8412ea66ed4a0d41f7ee611a87476d153e18879e22a5dbc98df9ea4ecd016c1801f1ee9411e103383c73c06cb5331b8377ef8f2f4ab67a4975135a59d9121279f9d979625d78f339f71aaaec565911b1" + } + } + ], + "attester_slashings": [ + { + "attestation_1": { + "attesting_indices": [ + "4590659586689121994", + "4589007099177470570", + "4580744678799082634" + ], + "data": { + "slot": "4579092195582398506", + "index": "4584049649527418186", + "beacon_block_root": "0xf1f1973fea38b5b560c1e4ed9a6222b021fda877b2c07674362c6080acdeec06", + "source": { + "epoch": "538655350", + "root": "0x00963040ab8a07b778f467851c7d0cdc7faec2a32d5e528c900d85297e084df0" + }, + "target": { + "epoch": "539040099", + "root": "0xda533c406bf3482d8e6e992e756be34172a8c47fc1cc0018350bfe98c946deda" + } + }, + "signature": "0x8bfc6e1a1c76bdafb4d491ce02a35effde6d7362eb32c03f119c47c12fb2b49e7656bbd4702ba02560fd7fe117f2c74e02142ce46176ebf269d5b34a48a65525e35db6cc446965e86e22e9d8adf5abe92315690b6de5f4591769487539fed52a" + }, + "attestation_2": { + "attesting_indices": [ + "4590659586689121994", + "4589007099177470570", + "4580744678799082634" + ], + "data": { + "slot": "4618751809962686763", + "index": "4623709263907706443", + "beacon_block_root": "0x27d82440eb21c640637a36dcc38e35768bb4c0c79aefa300ec0f0cba32cabb05", + "source": { + "epoch": "537116355", + "root": "0x999e0140abe701de220ca2e0b9c3b044b1c6ba33e0a3985dfe16a16b510f0846" + }, + "target": { + "epoch": "537501104", + "root": "0x735c0d406b5043543786d38912b287aaa4c0bc0f731247e9a3141adb9c4d9930" + } + }, + "signature": "0xb2213ef588828a7c18cdc781d0ed2516fd3e11de625f191aae7ae4be8b1ad2cc217728c65a500aedea276d345f09fd3212b009568a6549f5f40ead6d7ec4d0f3f329c00a1b4bca59068ee0555c94aec91bebc18365ca0b2d6692557b4b0c4267" + } + } + ], + "attestations": [ + { + "aggregation_bits": "0x907c35a14e5afee2fffc1703230dbe923ea49766c5af5277f432d84b3c2323d8a5a8dc131a8cbb3c69aad1172537e0826b0f4ee1639f650b91bbeab0eaf337f9472742d6f8443c1eb7c62f5f876f5f154689fb6548800c39b12a8d1f2585230fc372dfe5bc46a4c4358fb1ebb547796df094800159f2c9d982d61666d8a188e3b665900ce8f564188f269b5265d345893085d41f43a030337dedcafbef1245fb43c6c44b9891c2ff5f157069435c52c7fc457d5ec218f5d2ca50e69cae88c863b56e53213d92d7f6357a56344a4c2b80b58249b494d992f3c78d7440fe6b69d32ff3c1c29dbea8d0aebc1347743dac65bb66529f27dcf476baa3774d1e5c69ddb8d7fcc3929148c9c5995e8b893997b8d9362a715543e06361e29e0c194d3b2d59319837ab6dbd209d099fa04236c25d177a02c92c0a3c5135f246bf9fd884203bc47005fd46b235bf0b462dc754e99647a2302e0c032308b592b1f7453084e93eff658eb16115cf4d24f229ed8b13e073e1233b0bf4eb9ba69438b310735b100f5c49673995ae6958b9382a2070db0cf44b200ce7103375f72fa72c5a51a38760f68db7a789f68fa7bfb672ec0678c7c352dc9c5c1805fabb2b2e1dd89e2e748bba9f11681e33321784b89e8a3beb8600e4ccb4d72a05d067a96a9c39e5b10f379b95649134f15a22e6f181d1e44b46a122a8b375d43dc2f41517fbf2922ed696da5cc61c267e64317d467ed0d0464f06d2d82c110134401f612203c6f33984c615224478b3a1774ccf7c8b1cf3ef697296412c020f5a695f1e04fd7c963df5abec644f339e043bfc42d90ab6236cd0e9a4f7307063b65d447aee56bb116a0197ed4a9052ed97f11e5b989311b6d224ec284f94e02c864cdab368d6e00aae2405364ae9087f32f6ea4a6b80e83fe329db9c4c5eaefc0190847c1ad6087dced29d8ec7982cda88afe31468c8df32062746a2a07e8b537a93c3bfb5acfb111310516ecde7e0ccd7bb78fdc036de4ff5391a596df325e3d0a5ddab556052bab500dae358d641874703557f3f480596b0af14c56aab3e5ee6cf8f4c831d2dcf61f6e86a53eae177c3d917052448ca02e4f287d0f15ada519f3780d118377825c98f0ad02a05dafbda86c240aca3dde537dd9118a0baaef8a2d86a8c1dbdbb8f9ad3f034c592622a9341ce3ffae459d1bae3cab2a9dcf8f3bae9d707b01bdc8e0b3d7887c82e9d39312f2e5ef95017908b0fd0976b0216b1af40d5ad29e40271492e3d2befa613b2cbc0965ceb84c76ce4c8c26f231e5276a628dc5d641e0661b794bcc6b7669438a4155375913694480b2ebdb8b10cf35167e059e00cf353e11dbc7ed643cc8ea70edc14bf61d9c63c8b697fbde0b7af9fa92ebf0223662fca9a14bb4c614ed36e45ebd98f81725a11da173ff839ea8305dde22150214a80e4737a01", + "data": { + "slot": "4608836906367614699", + "index": "4547695001580498185", + "beacon_block_root": "0x95c9163fa9b8e5a07382c4a8ca24e64fab3f93035e00f87325462db67031aff2", + "source": { + "epoch": "529806126", + "root": "0x6f87223f6921271789fcf5512313bdb59e3995dff16ea6ffca43a625bb6f40dd" + }, + "target": { + "epoch": "528651879", + "root": "0xe24dff3e29e762b4488e615619483884c44b8f4b37239b5cdc4a3bd7d9b48c1d" + } + }, + "signature": "0x913ce44a60f20df0261b53d8031d13f3a8d51cf53ba5eb65735ae960623c48acd56286b31ecd74cdaf51f66b2b2331fa0e907e8cb9d4dde513ca29cc34ee9925301bb541055a8daef33bb3e1fb8442a4a033f93f86933bc35fd2ce34a569a6ef", + "committee_bits": "0x0c" + }, + { + "aggregation_bits": "0x5af41da977c357436d6d5cb611972dd4dfe8f24fd986cc3f62b8b2cd6df1ec5d9fffb58969a144cf75aa90897ecee335edb4c087e9cf844a5ba6e2acffdbf07aca6115072cf6fd1e908678cac3bcf3c62d52094d87dcbe66db7b6dc0ef11c7f20a749a5a9cea6b85febb7bab94425c81a2ed6d53d42193e9dcfb3d415dc53b6f872f5aadb7d10201f85dde8eacbc9e87b72f9276e6c0dd3a244a3676c184eb46a216ccba47432d0215454f42d2777ba28c79e38f492e6d46d1b065553f901ed99d7375c5ded4343dfe42a0c6b83cdab8e223ad328b39f46d8a06e1ddfc6a3ce6cfba7a8091749b4de6a9308bf9b3a3c418702fa32bbda084033b12c09924304b14b96ec1369061fb13a3aa0f2233b2524c86f0ecaa7f282aa0ae59437049b8032f60be842d4e0a033509f61cfb418da0af682a173cb8c1cfbc4876d1eb14ab9a440068bcf38a31f4a9021a7129ca37b456c95f016272a17360123acabba0f54923fd5d1bef78786c92215fbdf2146838e8f752a20da1b2472d7ef6d80cbf0455253c9135ab6906022beff98c7d2f98c6e64b5b2fa0dcc78e46b76405edde55eae1e077e4fff69b5a892e10ed73d4767aee874d2d3e0c3fa226f35fa7ce21cd0480b839534220b3cdb7dca9d7dc4f3a3762f82e7bb54a57c2fbea1063637e01c5242b1e0bf51473233ca9bff61513432a56e34ae6ce73bd6225f3847815676c06bde9f686abde54e8930700f645dcc9ca8af8607bc0d1c490d281449bcf65fa22374631272eb06bc53e63c06082c648a356f3bfc450cd3636983d04903a36680c965f2af41323729233480b6f8e7640dc4d0a3c4cf619b86dcdc62410c3400c2004a2f157338766e3d2fe039e733042f3aea833abaafb5ef7dc4c1ed72ec4881b7c7c178bcfeade55329e93ac81842e6758136d73335774d66ff8c925f77e1d4b7a09ee44c6e30d506cf487c747ac10b92528e85f5702dac422013541228c6e0099e1df1e7018dcee8f3d36d5fa51394c95d1a18f51c6db2581a3f71cf21882713ac1c5cd58db94168db50c2017c2c8c81071d6cf68a1d0458b4965908d1fb6c4710c50b74b3cef02e77919acc9029d9f9b866e2a90dcab36cbbe84fd9e4b5b9036d9baba000eef655ffe64b9af0e79b28657fefdc30a107f896b81d64b92f01b71f3ccfc4f8cfcad286ac1e93f52d08b5c9b00b0853b64b4f2591cd55042ac5635ebd811f4934ec05a3ff82a80b8029779d09f1d6c3249037381d16363107158a53548d75a80fab67a4f7374855feb3ee3e8c7109afc0d58a9a5309a601ae0435dac5bf21f0d38d7c811dcc413781e7702f0580bfc9d4dd18639bacf84c7a2d197341bd53ddb1e7fe0ec44bba8c45a4ae2dfa564414fd91b436919f251619df1b0eb2899ce45720e7f542b437b902bbbfcdf1e778af073d08fd2e6504c9b9c8501", + "data": { + "slot": "4537780097985426121", + "index": "4536127614768741993", + "beacon_block_root": "0x6735d63e89f87d96fd623486e205c81ff060884934a0b8731dd31351d25a90e8", + "source": { + "epoch": "526920509", + "root": "0x41f3e13e4961bf0c12dd652f3bf49e85e35a8a25c70e67ffc1d08cc01d9921d3" + }, + "target": { + "epoch": "527305258", + "root": "0x51977a3f0ab3110e2a10e9c6bd0e89b1410ca45142ac42171bb2b169efc281bc" + } + }, + "signature": "0xa17225b5e5319618e77f5b93350430acfadd8ae12a279f1a4176cc7ad1de7ecfc8670988519713fbac8f702cca29bddb14ff1463dae3abb53ddb0c025cd69c8cfb0f5298ab241c06ddb840c7a260f3dbd37120826b13b17e22d086148ebdbab1", + "committee_bits": "0x02" + }, + { + "aggregation_bits": "0xf8d3f62925333e71c92b5989e48786f9ea8582ce5679c63ca0dae6a3948750814066f18bdb3cc2fded5d81f2ed6c784e8c2e8c42fa6b0c3d1670b4069c78cd8594c1547facc8fdb19696b11475dc3dd1c7499aea330b9953f0ccc4fd30f3de2c71ea6c42d470865d80771c74e3110239efcf4108a58bb05efef3d73a2363dfa582352640000c12f848be2c6d52be43d4fa5cab16a2d0145bb687d29ec894d64b389bd2fc97a558570aa151b89194980ea7b2684b935b51e49b71f6cd0641fdb62abb914bfa03b7502414b5c792be5472d6be3c130e030f194fd234650e4f1f3f1ee6c722096fa58c3091e5119eebba839baab03347552015fe40ec788f2b52815cac78de375b46ce120ce3eab28e05810094a1a8b461829a28c89c55abd7e8a0d0a42c23e127da6bff2b17fb7bf6c7cf4c4d5cb2dfe9030c3d2b01dd8cfbc0a387f8309c9ca604eb42aa8105a78199bec145010ec3e8e7b7948a10105c1885561045a3c4449b516d2734d8764320e3670187797901ee459ba0c22bf44cb7975134eb59de969155812ca98fbd1a37ed645720a1fa76f565291b3bdde819dbc89fc2e7376b8945ff35bc69dee5e2f99d9568dccce8933b85f8ff52ee4134ff55d319814b6c4b9a89fd9471fd16e4f90cf6ebb3db3051cd0a08021eb8bf3b56698876d79ed5af7054d75a0e3affc78f84e041dad2045805d90764e34244a32620a2cec1c7983f541e1c7eef01f57f8dd4ce9efbb685910b0bb79cafb313cd33bbf03eafb006911d75e1da95c6a84b34ad6f2af08a27bfd27af4b355161362a3e9735175eed49de10158098dc86767aa7e64b77a9dc2b597ff61131d32acd2471af3140229c8b80831be7ff99724684ed7a348f28e55e9ab05cf80a96779c510ce6ed83da51d98f4baede14ab484100f343e5575e94765738b54768ed2e723cdfed7bec02d4eec688946a82bd59a6d21f7e52eb81edcecd680e217ae57ec734138832305149e67992faf46c0835d4befa0b29c48a2a651f289aa3f32417adcfdff9ac79e272abbe61321e11a3f28d6f34c929b5990c3543573bc8d4f8c28b9d350fe2b3a8490c3e5c66849baaee592d4adc83330b17ea4494aff7af5b793c94df8fd58b4ce2012d08a60146d7f7904d1607c989b791650cf34d91b4710a9a953a628098c96026eb949e0778407d0bb2d13f1162d4d99f8db17cfec40ff447434ba34dadc4f4172e1c5490afc529acf3c5fb2965836307bb0db66c1f50a6e8d6dfc874f7391f6dab98d37fb1380e3cec43a338f523b3e7337730fbad50f1dc399e6f61c47b93f65ff7d841308b2b82b2d72b744761e3c68202699e2848abd5b5e598ae8d0e8dc78418f5741239d79a62389e6a61802fe83998583ee089555cc1207b61b26dddcb2fdff3912a6d85ed4671bc71fef7e1260b8e11aae5c343796d5f64f01", + "data": { + "slot": "4565872325553958186", + "index": "4570829775204010570", + "beacon_block_root": "0x8afa683fea95afdc0ad91e4937a9c6185315a1076506bd45a4357cc27fe5a75c", + "source": { + "epoch": "530960372", + "root": "0xfcc0453faa5beb79c96a8a4d2dde41e779279b73abbab1a2b73c11749d2af49c" + }, + "target": { + "epoch": "531345121", + "root": "0xd67e513f6ac42cf0dfe4bbf686cc184d6c219d4f3e29602e5b3a8ae3e8688587" + } + }, + "signature": "0xb86aecf4e9673e9ac774883f03c46c2cfe59320e441abfc2e2bbaeda2193f58c57a3aec0ae63ba17d3b1cb81bd548689004773c1867cf047e1a2d5c3c51973fca33040cae49bee51bf4d2e23786f51dc5672bff5e9df8f7bc5fadae6be5c146e", + "committee_bits": "0x06" + } + ], + "deposits": [ + { + "proof": [ + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27" + ], + "data": { + "pubkey": "0xa56023832292eec3040299a0164c844769e854beba275c44e4960ab2da7ee11db36674e1e2fa2615bc5e247a2759a472", + "withdrawal_credentials": "0xe5ca603e08e1eff7259e45ea6bb662256d9d74b1724ee8feb0ea59f6e2ebe3be", + "amount": "32000000000", + "signature": "0xa9900942897c434e743c2b0210ec3266920ec6a624ed13b3637c640c7f79ba57a240a7e6a48cf587f71b9007616972821680ff0ca62c4cd47d50145bac76df28d9fbf3f56c98a5e8bd61b8cb41bdc02e3179ea961c2949c0803c108425dfa29d" + } + } + ], + "voluntary_exits": [ + { + "message": { + "epoch": "4498120483605137864", + "validator_index": "4493163029660118184" + }, + "signature": "0x86e947b46923b26125a7dab3240481ddc1b910c1e6393b90df6e2de3809b8b35e450dc8264ecedd8f6bfc736e7114d841428b2469441d2d1d501015eb99e0d7090f11a1185b566dc42f94b79d0a08b22718a39b57e912a304419361108434ec8" + } + ], + "sync_aggregate": { + "sync_committee_bits": "0x01000000", + "sync_committee_signature": "0xb2c1728d5efb4c0577aff84d84d5b0b2a89c22e1a97f2fb468442a8c2f84eb0912077b32ddd66ac5ce05168ab26168e40ddb8dadbed42b229c34e78cc757421908ab6159082952a43133f5333ad2f8382930bead6ab4f0e91c95ed9c66f634f1" + }, + "execution_payload_header": { + "parent_hash": "0x7ed3313e083eea1ecfb57f4508fd068e9fb56c4125942ed01ef47538b5f29e14", + "fee_recipient": "0x91f42b3ea889c963c4f8e670db851b5ba5b86bd3", + "state_root": "0x58913d3ec8a62b95e52fb1ee60ebddf392af6e1db902dd5bc3f1eea7003130ff", + "receipts_root": "0x6bb2373e68f20adada72181a3474f2c098b26daf6fcb0516f0723270da91e789", + "logs_bloom": "0xcb571a3e876c6732a4c11cf3562059c2b8c16889ffb6d1b8d5f883591e767c3fb46dd46047448da9f4783626721bdf9308a2cefba364d5b6b2653a014d0c2bf6f7722e4c3bbe594bb639fb9b0489d49f463e19d5547ce33fc497f70c977a3205fedaf8ccc0bdc1801c8a18154948c8e670813e0c98f6e92e20d4327c71f2de5e7aaf1df92739504e383a1977928614c2078d5a61289ac612f9e3b08ea9406604db94fb2a3424f245843ce722c6edaaf79085661b750ed7b62cf57a68de63b899dbde6c169f2a65bd5b0e808bdf22c850136f4c1421be8865b50aa17c03735c41f4b4ec5a973ad30c7db09d4a6894284b9f19eafb8189121738fda9d6e0d393f7", + "prev_randao": "0xde78143e27b846779904841e2aa96d8fbec4671bb57ffa72037ac721f8d633ca", + "block_number": "4478290672120026440", + "gas_limit": "4476638188903342311", + "gas_used": "4521255257228650249", + "timestamp": "4519602774011966121", + "extra_data": "0x8e77ca3ec98f3c20e7e802dd8917f1b9fc66866da0310ae878d59ae1871cfffd", + "base_fee_per_gas": "73092283800700793286468708950267523415056945357667839430375913972420161943176", + "block_hash": "0x003ea73e885578bda77a6ee17f4c6c88227980d9e6e5fe448bdc2f93a5614b3e", + "transactions_root": "0x135fa13e28a157029cbdd50c53d58055287c7f6b9dae27ffb95d735b7fc202c9", + "withdrawals_root": "0x1f2e4f3ee8c38dc605677b6ce650a08c7fa6716795a8622d396e244f710e0a5f", + "blob_gas_used": "4517950290795281992", + "excess_blob_gas": "4516297807578597864" + }, + "bls_to_execution_changes": [ + { + "message": { + "validator_index": "2996764", + "from_bls_pubkey": "0xa2cd8bc71b19dea2f97e5918a5ad8205b4937a07537f9d84206f15ad383c25e65249dbb53d559acb700bb4f59297896c", + "to_execution_address": "0xac67723e28fe512946d50f68f01b25be5a9477fb" + }, + "signature": "0x99f5bc997861976d73013dd4c06f42a2318912e5e075a2746840bb34134e7f4765ba88dec12f4bd5d2fa24d7bc2c17ce105bfb796108064499faaa4d4b3e17db6e62bc88f8e0a6243105b01c00302c3d9f81f5e790d6a6951532ac94c19d1114" + }, + { + "message": { + "validator_index": "2164897", + "from_bls_pubkey": "0xaa4811100ca7dc5c90d84205000ffd9d70eaa3c650ff0391ce7c3f5eed59f12e4ac5e080f4ee6e30354294ebca28c93d", + "to_execution_address": "0x1cb989437169ae6f9cc483c46a7456e6eff45260" + }, + "signature": "0x833c3424606fa52c035536e38b8c677a1b922a8d35cc38b55e6f057725893ff621d9f49153fcda3af9d7cde737ee0c830e3189e94a62a8d655c328f7b3c77142c53a3e9f6029e16d22ace761f8e60f4b28f2b487821be3272e1905598649f1a0" + }, + { + "message": { + "validator_index": "1780148", + "from_bls_pubkey": "0x98d6103215e3916a0cff3af6b6f29f22374a32d87d440a302e18a9e2daa80b32a2824798030f6a2e06ab612b07c41f74", + "to_execution_address": "0xdb034f43b15d672031628c76afcc23e92d134914" + }, + "signature": "0xa2f3dc0cbadf0807f2d864d0c98c2e474972419b1ef936d0c68976eb732a146c8bd86194e95381d1b9245530b1f138cc0de425bd6478bc56a394619e1192a114680c4e9f8b0278816bd4f5df9e24cc31ca73cf5eb26da54eebf958966d4a957f" + }, + { + "message": { + "validator_index": "2856403", + "from_bls_pubkey": "0xac60d2ec631e27b37f4f5541319b94c8cf82299d71ae4139039cbc1d0c30c71a075cb62166801ccd0a56f0bc29edcdae", + "to_execution_address": "0x01464343f1f425aa1be85acd56de4c833a194738" + }, + "signature": "0x818852c88a6e16f2294cb51803a155dcac4f6ec5ee0d095e8890be8907201ee1c8790abb6d5f05faa2b3d8d9a03972800a04fc1666d877c7cbfb62c387d6e119f8f827ea2ba94d5b6429b33d6f3770b79999da3cb8ed17f2c8977234bd2a1cdc" + }, + { + "message": { + "validator_index": "2627637", + "from_bls_pubkey": "0x92f00f85478ad1224c1be3a9b9230444411e9a2beeb6304e5c1fba1b7b54c9ecc3965abeb3385e4916040260544b2580", + "to_execution_address": "0x5d6ec4433175f5be08277b12261c89e3b0d65cac" + }, + "signature": "0x8b13ef837950d00a469eae427c1fea111ea85e0dfd63c09bdc02aec208523ec4c805595639d50e183dc893022f60abd8118d62c836b6d4de057967f80184532c1c3a25b26c51926a07e55d2ba264de6fd22eb0665668cc7280bbcdfdfdb3c0b6" + }, + { + "message": { + "validator_index": "703892", + "from_bls_pubkey": "0x8939b0ed4fd0659427739e525d6990c02614d703d12c5adaa5f8aeedf64fb9ce66e769d83f9ec61ec05c6074d5095955", + "to_execution_address": "0x83b0b843710cb448f2ac4969cd2db27dbddc5ad0" + }, + "signature": "0x8f65a298124021cf26323bea9328da795a7f2134f42c21e28617a1b663c568058fa3ddff9a71948362e7380cfb591ec9062f735067b1a32bd2b88e9c2d5c3404348a194098c30f55f8cc050b305bc4c2baeb2a6e4ab1d49833bd7ec4943367f0" + }, + { + "message": { + "validator_index": "319143", + "from_bls_pubkey": "0x8f5f289f8ae538eca9f393fd7ed1a5432ba4c145b700075d1a8ea9530ec8cba3b91511e78662d0f2bed026a1b86d6d2b", + "to_execution_address": "0xa51dc242b07456952ea93a8886a01023c35b31c4" + }, + "signature": "0xa23a1e6d9410ecb12fe95fbdb3b12962bd46855fa46ccd7b2fe75696cd4b1788302d6fc3bc1c1bc6f8080d0025b3fdc9139a3b141407213b8123563622773e9b385473bcd03f149b0ea21e52626382dba56b95a2204178c2c454001c79289afb" + }, + { + "message": { + "validator_index": "1239417", + "from_bls_pubkey": "0xace9988853ce03390f8d5c93fa51e3a5f5b056bef4ed1f437a86c59fb687be25d0e6f4be5beeec4bc04806e93c3eebf7", + "to_execution_address": "0xcb5fb642f00b151f192f09df2db239bdd0612fe8" + }, + "signature": "0xa0053dab17b7e0ba64416b1c95b6c56ecb7f39ccc272cd57a347054fab6781ab8d834eda1a4e57ac5b037d3b71945d1805216ba518aefad29922f57f1b3149151d4266ae944b579de5399a209e482a19d3fd7e9c02069e7a01ab2e9a59477326" + }, + { + "message": { + "validator_index": "854668", + "from_bls_pubkey": "0x85a2763ffc316d21106869ce72f88e6e5aa3ffcb84689aea186a7de5056f0fa98f50ce3bcfb8a96d33585c472748b014", + "to_execution_address": "0x8aaa7b422f00cecfadcc1191710a07c00e80259c" + }, + "signature": "0x84ff1208ba8c36a14bcf8c5d3c9d9e22dd6d69f7053eaba3ce96cf7ca324ec3c3a2bd097053788b7dc64d7dbccc30ebd07fbaf41e95ae397751f8aadbc4d84219038b55e1fb3785a8f7ceebe05d629ce2c9c407bb9be6c66c0d26c14b3a7c3c2" + }, + { + "message": { + "validator_index": "2086906", + "from_bls_pubkey": "0x8f220bb09673d250a17cdd562f33ca615e83e293a43e1313a9c3e9438c218cfa9a803426d29e9bffdd884daecf7e0ac6", + "to_execution_address": "0x4dca2b437023a3bdf0f3f77aa4019fb753254380" + }, + "signature": "0x81d6211b8ee9652820795832982520799ba2eab947083a2c6e56d9cdf1e678b1c1a6c8a108ece8b1c23b234a208e6e281477d55c41fc3d04027032277fa0922a0370e76db742037a0688697f618b8b7780cbfb3725f78bf9c5f94876d9d1957a" + }, + { + "message": { + "validator_index": "1702157", + "from_bls_pubkey": "0xb63a024e98bf28daf9bf8bdcb7c89d823f29e65e362a923afec6c78aef21559a12d2c5cdf81998630ac418034c0e58ed", + "to_execution_address": "0x0c15f142b0175c6e8491002de9596cba91433934" + }, + "signature": "0xa386f611424c8ec936f7ef72da9d526823e3bd03f3452131910b7c5ae646a989c276001faa9398ff3ce9050cc0282c5003ee9357b8485f4c52a4321e9c5150d39cebf18546badc0a22d7d881a08bfcd1e76c4a7c9c8cd7f85da5270877698c7a" + }, + { + "message": { + "validator_index": "2778412", + "from_bls_pubkey": "0x90961673ed2682e726960a035e0d1e050ff0754225f97fb7501110e474cee35f7ed1bdeb70eebc97a59abbd7217bc691", + "to_execution_address": "0x3357e542f0ae1af86f17cf83906b95549e493758" + }, + "signature": "0x9590d1d0c5216aeacaa19bb58a4a66a6430e554a0b020e2977be2421bcd089fb47bccbe10f2baac88dee33fc625dd5441217042918ac793c0aa2aba45a379decdb018b7bdd277f2a66b122a95aa1974cb05208e00801ed52f7f86b671c372e2f" + }, + { + "message": { + "validator_index": "2237681", + "from_bls_pubkey": "0xa63d491bd47a8f4caf987b7a22f228dc709f8f4a0d8ac25ed72a18cbe2b2da7662daafbe182b33c81e14eac70bc2f0d5", + "to_execution_address": "0x55c4ee412e17bd44aa13c0a248def3f9a4c80d4c" + }, + "signature": "0x8e4e43252f668d04559aa2ecf1ae7605a054c1fc2d5b0a9b77f9b091b8fd851ef5a02d54ed31a66053144d0319d8f4ac11185d05cd68099841cc554c99de314a291e83c4bd166b924240d4851d8ff63a05c62def40f8b839f087a60db6ef5172" + }, + { + "message": { + "validator_index": "313936", + "from_bls_pubkey": "0x856c75ede282fb092c2c5ce1511945d4eb5026a095e7ebb8ab6a231ef8884390141d100ecc904fdd58b1f2f0e07b1630", + "to_execution_address": "0x7b06e3416eae7bce95998ef9f0ef1c94b1ce0b70" + }, + "signature": "0xa31249a2500d0428a2b38100b6db1191f1014087af8e58cdc025e28fc9e2aa5f08c74036c1c99b5e6b9f96c250700e2505201e2d4657bff1de53e01ac3c28f2f6624da4e953c9d08b0011e547902197fc5317daa051526f68684f16e1608ff33" + }, + { + "message": { + "validator_index": "2929187", + "from_bls_pubkey": "0xaa842a4b0acf1250c953110bfa6025bc646043fc268749af5274dd0197f06eafd7f5ec00e2d21a01b8a420e8178bf74d", + "to_execution_address": "0xd72e6442af2e4be382d8ae3ec02d59f4278c21e4" + }, + "signature": "0xa29e82672b9b023ec4496bc5ba26cd0e12ae4e168591a2412dc2c62cfbf0466710810999921e34e7249e3a4700c837ec115bb6bee111a50c55a1af9d2f996bb6600a4767e23781cf4eb177845372b39df6156906f9e24c5b908920161a44d8fa" + }, + { + "message": { + "validator_index": "1161425", + "from_bls_pubkey": "0xaf50133072b8d7a0ab9318facb15087021cdde3205929004ecae6df99d4cc111517fb629146398eb345a028d413624ac", + "to_execution_address": "0xfd705842efc5096d6c5e7d95673f828e34921f08" + }, + "signature": "0xa34048285c5a03bac9edfcf306e845a8cc0f8e7f7b4c5590dce0146b30b5a4d6340855b4384b53cc72b4ac5bb9b372590a7f7eca40e78ef3ae9b0e9dfe020abc94d161627ff642df1386143f221aee8ba432f4e7affa7736c65a01e6f342cd4d" + } + ], + "blob_kzg_commitments": [ + "0x36d44642cfa8a73b4c27b317e2d9bff5469b1cbe5c05d35f4b2286f9dd9a1da1edf7f9ff3b52088c513683aed613efc8", + "0x49f540426ff48680416a1a43b562d4c24d9e1b5012cefb1979a3c9c1b8fbd42b8517c05e35b3e879984ec65a9ddb52af", + "0xa99a23428f6ee3d80bb91e1cd80e3bc46cad162aa2b9c7bc5e291babfcdf69e17bb59e3819984a1ffcc715b881c2452f", + "0xbcbb1d422fbac21d01fc8547ab974f9172b015bc5882f0768caa5e73d640216c13d5649714f92a0d43e05864498aa915", + "0x83582f424fd7244f213350c530fd112a5fa71806352876480227941a471efbcb4c76127b24d689436e978f5ff3327e62", + "0x96792942ef2204941676b7f0048626f766aa1798ecf09e0230a8d7e2217fb256e395d8d91f376a31b5afd20bbafae148", + "0x594150410d114a888823a4369a4c1e9b4d1af3b146f383eace5399d4b17e3363cc267b8c513bd892003285f184da4d95", + "0x6c624a41ad5c29cd7d660b626ed53268531df243fdbbaca4fbd4dc9c8cdfeaed644641eb4c9cb880484ac89d4ba2b17b", + "0x32ff5b41cd798bfe9d9dd5dff33af5004014f58dda61327672511244fcbcc44d9de7eece5c7917b77201ff98f64a86c8" + ], + "execution_requests": { + "deposits": [ + { + "amount": "4701376009451598829", + "index": "4691461101561559469", + "pubkey": "0xaacb0e7f3717c59e23c32cb07ce03be33c2bb8366da2d27a9954b77f2c9198a1b5f3aea585faffcdfa4800b592c4d5d8", + "signature": "0xa9bf2689fe47ca9ac1fb90da3b08259115adab480b4f387669f209ee7747f7451af8f61e4a9c057bc33ffc18f0b08c3407be0a59b8c61c741572f5d28e2a1f6af0fc17db7c3f48901c9267606c3d7831a3d3647b885946fc95fb5689d24f7b8d", + "withdrawal_credentials": "0x0100000000000000000000007f8344414da8081272a9728d415e47355920f1d5" + }, + { + "amount": "4684851168694822957", + "index": "4688156139423158509", + "pubkey": "0xb8fa03e47468016f15b89212a91f203194684e0cbbac07b6cd428fc7e10cb7d8a363985b46972eedd7bc434fc701c4b3", + "signature": "0xa529495633ab9ab138c0756646074fc7753fafbb44389490ddd46048f29267f6b85e46abbc1fe71c42fc98513ed0f6f800ebc9eaa04b484e29af7d7bb0c38b5e088435aee8583a812545b3057c184a4634957604ec0647d1fa81da2d15a5f198", + "withdrawal_credentials": "0x0100000000000000000000003ece09418d9cc1c206477b3f86b61438983ee789" + } + ], + "withdrawals": [ + { + "amount": "4726163266291795342", + "source_address": "0x01eeb941cebf96b04a6e6129b9adac2fdce3046e", + "validator_pubkey": "0x97995c0a4cf28bb77bfea20753ecd1e3b3469492921c9542d99a1e81355f6d09ea4cbcb35e3b8f1240e8261d20da657b" + } + ], + "consolidations": [ + { + "source_address": "0x60939c41ee39f30814bd6502db591331fcf2ff47", + "source_pubkey": "0xa4a90125ab79fbbe706de307f1de84a6b0dc21adef413c6a5e91ab58e575164bd13c0517a318394a56adab9326607e82", + "target_pubkey": "0x83feea64397a7a9d3fbac0b9a16ccbfd63c4d4fa5d0fd8bbfa13739148e752ce1e9b1e01654b56cb56a196fd8d64db3f" + } + ] + } + } + } +} \ No newline at end of file diff --git a/validator/remote/src/integration-test/resources/responses/produce_block_responses/newBlockContentsFULU.json b/validator/remote/src/integration-test/resources/responses/produce_block_responses/newBlockContentsFULU.json new file mode 100644 index 00000000000..69d48e1cde2 --- /dev/null +++ b/validator/remote/src/integration-test/resources/responses/produce_block_responses/newBlockContentsFULU.json @@ -0,0 +1,439 @@ +{ + "version": "fulu", + "execution_payload_blinded": false, + "execution_payload_value": "108477972351052331695947002912406997250600692969108946699443471459098753735725", + "consensus_block_value": "1339858616463813965601097196322078011440769170848634627274135136300100178872", + "data": { + "block": { + "slot": "1", + "proposer_index": "4666673844721362956", + "parent_root": "0x367cbd40ac7318427aadb97345a91fa2e965daf3158d7f1846f1306305f41bef", + "state_root": "0xfd18cf40cc907a739be483f1ca0ee23ad65cdd3df23205eabc6d660a75d1f54e", + "body": { + "randao_reveal": "0x9005ed0936f527d416609285b355fe6b9610d730c18b9d2f4942ba7d0eb95ba304ff46b6a2fb86f0c756bf09274db8e11399b7642f9fc5ae50b5bd9c1d87654277a19bfc3df78d36da16f44a48630d9550774a4ca9f3a5b55bbf33345ad2ec71", + "eth1_data": { + "deposit_root": "0x6fdfab408c56b6105a76eff5c0435d09fc6ed7a938e7f946cf74fbbb9416428f", + "deposit_count": "4658411424342975020", + "block_hash": "0x499db7404cbff78670f0209f1932346fef68d985cb55a8d27472742bdf54d379" + }, + "graffiti": "0x0000000000000000000000000000000000000000000000000000000000000000", + "proposer_slashings": [ + { + "signed_header_1": { + "message": { + "slot": "4661716390776343276", + "proposer_index": "4600574485989226763", + "parent_root": "0x32a7d23faa44fc04cc23dc3b560a55ade3deb2c393e9de2e6d20bdad2416c39b", + "state_root": "0xf943e43fcb615e36ec5aa6b9db6f1746d0d5b50d708f6400e39cf25495f39cfb", + "body_root": "0x0c65de3f6bad3d7be19d0de5aff82b13d6d8b49f26588dba111e361d6f545486" + }, + "signature": "0xb520c40e02457e0d3d61ebba3b04912f7db82a9a74132fedf190d94b32738dc62744644455959b4b4dc7aaf1e54064fa0f4aefe30696b7ed758c921d266402360e9abc003374800cd2aa6ffaa0c11a5cbfb3798b1816bac7be1e0c67c3305483" + }, + "signed_header_2": { + "message": { + "slot": "4661716390776343276", + "proposer_index": "4600574485989226763", + "parent_root": "0x7e2bbb3f2a737918a12f79e9a52da7e1fceaae0b6c0c82172425cbce8d99a0c6", + "state_root": "0x45c8cc3f4a90db49c16643672a93697ae9e1b15549b207e99aa10076fe767a26", + "body_root": "0x58e9c63feadbba8eb6a9aa92fd1b7e47efe4b0e7ff7a30a3c822443ed8d731b1" + }, + "signature": "0xa01cb4e18fb43a400024b67cd091680b8412ea66ed4a0d41f7ee611a87476d153e18879e22a5dbc98df9ea4ecd016c1801f1ee9411e103383c73c06cb5331b8377ef8f2f4ab67a4975135a59d9121279f9d979625d78f339f71aaaec565911b1" + } + } + ], + "attester_slashings": [ + { + "attestation_1": { + "attesting_indices": [ + "4585702132744102314", + "4590659586689121994", + "4589007099177470570" + ], + "data": { + "slot": "1", + "index": "4580744678799082634", + "beacon_block_root": "0x17348c3f2ad0733f4b47b34442744b4a2e03a79b1f52c8e8922ee71060a05b1c", + "source": { + "epoch": "533653615", + "root": "0xf1f1973fea38b5b560c1e4ed9a6222b021fda877b2c07674362c6080acdeec06" + }, + "target": { + "epoch": "538655350", + "root": "0x00963040ab8a07b778f467851c7d0cdc7faec2a32d5e528c900d85297e084df0" + } + }, + "signature": "0xaffb36fe3e48b5c29794f85515b9a3adcd4206fec6dddac6926d0e985d96a9ade0e427f911d56dd90f2644af13e9740509147d149defa9b0763eecba616e0815e9a91c25178860be7d4196a9814781a4576ba7bc6398ef16b9bd5f88c4143bfb" + }, + "attestation_2": { + "attesting_indices": [ + "4585702132744102314", + "4590659586689121994", + "4589007099177470570" + ], + "data": { + "slot": "1", + "index": "4628666713557758827", + "beacon_block_root": "0x3af91e408b6da58558bd9d0797174a4392b7bf5950b8ccba1a914f820d2b7390", + "source": { + "epoch": "537693478", + "root": "0x14b72a404bd6e6fb6d37cfb0f00521a985b1c135e4267b46be8ec8f15869047b" + }, + "target": { + "epoch": "538078227", + "root": "0x867d07400b9c22992dc93ab5e53a9c77abc3bba12adb6fa3d1955da376ae50bb" + } + }, + "signature": "0xb7720f152c38d7172a82186892a68440bc4d285cc8aa92c1f017f93d5f61a29cf51670e4f944648bd8df82d4d6eae00615073d439389cdf35fbd7670a07ef8407c7c71a16be062fff16f351737ac99f006817ba43a295fe5286dfb4ba7116e07" + } + } + ], + "attestations": [ + { + "aggregation_bits": "0x88e3aeac2cb7509e753b73880be4e95da67b35193a1a8d916d3a5f3b61c59b6d90d866ae7ee81a10a9ea025ade39ad5b978bd20bd2d2031d61e8aa7b5090b08248dbcac0698c25ea7b858ae37e5347010aa764962e4f70513d9e2488a9808d0510dcb3dc9385cc9c28ba4a1eae314e5c3372b3d2387836dc0750553f84b1b490b7fffcb2824b614596050fa2ffed45b30b7db4e67cd782cf0446b5448ed43cb01991cde29c15b0a29dcafdbf29840045c4a3d7e58b93ff391e3ae281185e49aeeed12188548d0dc8e904edc1c8a9831577d08b0c708dbb1784cef981e8363efb46d26f039c2561792d1a2e81218eec593aefaa25bb280fbdd25f8103381a51c68c23274f6823e00a776cf24cd4a2e4f71b6bebb58a01260798a8796d4b7af980315e35b8f0972907a4230ac6548fe53526e689dd107cfce096ba37d3b7c44a0455c0b9b91438772c83163954ac65667fe06e542696b01ee07a901c63648476bdd98c6c6f2a0e399a6f665f52e03908ad32ab30aff1b9311778645415ce6eea979da08bb81cfb630e182488c2a11b91eae07f6565fc214f5d1e4b1c0503a250a326b669a4086e9e84a703915977674e887149f71bc51cce3832db04fbdffa54d0cd93dc9586c1f9e58c9a47d6182e598cc16181b0573e46db02d9fe9c67cf8ebd732f30e4244405daf5d33bf5c1e5cb3a8b669284f83ce44668812eb3afa0840d35d418b3e3ff522f7d6fe70740d4b4eefa59b793e0e8b32b606c8f59187b387cc603d78083d2591f47bb5e0049352a4dfa1d962c817775887693bb8e38086cf7c507795662d237d8aa34b910e9fbe4bc8e5b7ab44ca62e71936918435b4e90c9107d5ba3d83f43bdbff6fc028f100025b118ac2849a1f5f8d6870f4050162783c2ab7ee69c4f50c89474010aeccb0df10375b21e9d059bfac0064be1686f3c1fee2f31a52aac5a3af5762c3c5f8ccc7138685331831fd53ca19f61e7f0616aed8e7b60b66244a7734233b4d607ba4540910c742f522e9dacea4e30c7adf86b826295f93e1fac0b201fa3e69c709add5810e1bbc857af6378182e8ef0db4e9a82610c29890734f1d9d2fe91f68c85fffc0c397de09540abe76303a56715e183698d770b190df0eb1a3fba85d2619abac01f717c2061b6ede95c0b69ce21d13b1784f6f86128d015269aced183dc083c68aa2f932d5d7a13e75444c00671e3594287c5631cbed286a1ea25aee7613d09b0cbd7265df0bf07e0cfba012f834615d2a9ec8440611d065ba1e391ffe9f85f60a7cbd945057c2dea25dc1385380573b1725cb6866eebd2594e02b020f45caf16c8f87cb9e11309991c8d24664f7e725e96e2c646874ffdeeb6ba938a92b94e574077ab719d8d2e7cfcd6ecff73913bf27c3c82e868ee829741fcd85b0ec6a1f2a18c887a1121f384a32bf6e4d182da0301", + "data": { + "slot": "1", + "index": "4615446843529318507", + "beacon_block_root": "0xd301f03f8bca9fac02d5d762345eeeabc4cfb7e903fe128c889a6bc4e0312ee6", + "source": { + "epoch": "536154483", + "root": "0xacbffb3f4b33e122174f090c8d4cc511b7c9b9c5966cc1172c98e4332b70bfd0" + }, + "target": { + "epoch": "536539231", + "root": "0x82a81c3f096d065c7e3f5d7df79bd182a53c9471a737cfb9f7c4e9ed95d0f767" + } + }, + "signature": "0xa9aef1e37252740dedc5fc9886810459f7484555aa59fb3876803fc4924149cb471ffbbd9be5324d952efafc3de4c5f705dd02134916b2afa02194fe90a8d1e8f58ebcfe0d33d0b8a97e71a3f7591cb82c37ba531c059a684b581d3857f05e3c", + "committee_bits": "0x0a" + }, + { + "aggregation_bits": "0xb8170c02376e2616e3bf89fd01dddeaf95362e5081d185fa9adb69f5bec17e22840f28947369dcdf2269436a8ffdfe7b90995dac664172d05e4992d1d40e8c59a5fc24b8bcdcd436af3f4fa98c1d3ce3a706e03f3c56085c1cc79dbbb84081cff70d85f6acbc292291bd8a96de104b9eb8d9d2235f6299a563224628dd3650ce817ca853e56f60ebc3ab6b0b3de977a673e84a07a823aa64628753bf0345297e7bcb6830e95c8e42b77896fab98d0b7e82217680a3aece1b571fd3c9beb57795ad8cb4f084da376677f2a65ae2c54b0a3ff1e02d0be7e8fac52df9b5ea009d5304e3f8a8c09dd9ae7c61a5e6f82c52b1db4395c1bf2ecbb3fb1fcf9a3eea17837e47e2a0bbe84bb1371d9794f0790339553ad1b34e3b129430543bacfe84810ce4f6318dd6b342ba6a036de629acddc0f3b7cf33459afe859f98518dc5fd957054ac06bdb00cc850df69af9da00165b4c033d0ec5f7ef59eb9350d2874a994d87fde6d5ae3ffd02a0d6cd5adf641d4c0d4eb91963be74207b6a0caceba9ad8d89c1eee8185f8a80f0b996d7291e63fd901fefc1885d47ff8a9e1d4dc14088747cf81390dd611b5034aed4f4acdd1de69b8bedbc61ae7b4923f5dc2c8fc38502710b3df2b698d8df9af14d1d84ead26198297827219b4291a8c607f2909d6b040092f8b2fdbb355e07eeeb9ad18717f4242df7e32dd6ae4e60d590726aba4cc07eb9a1d815a0cba65c01fe307b637d599001347461813883100b7044acf4479342221008109a9c157ee03412e36248817dc01cb6f9fde03baf9402091ef049b2262aad08b6f15a52c43a54139cd8b7bf9170bced776ecf26464571698fca1194a0ae8667d397ecef7f032041615b38cd3057cd4d88fe194359dd1dca27113070a02a1625ac9288ff91623d42a9e501f92d17af6c792417aa84e11e8d87230afcaa14822bf5da46f24c8d73a5b90117a15ee1193406ae76a740f8a5d03457dffebb9177f352f44f25b398e6700e19c1a34489fd4a74bbcb73506dc2e33650b28beeac3bbf01bab493c1c957662111cdcdb72a0747e91790b6f07b0b702445e3625b4ac5026bd8877f3754edb6cce9ba0493bdff31cef986a94b742bf6bd8f7c64c169c9a3fde5a2e188ee7bbe05d3069dc70410c0f821b219e6be67df002b9d007aed308a53bf7885d2605718f30e2e66658fb582c4b2aad2ab00b2478b44d82b367325ad781dcb7a5a55ec9709c424cfd2a052dc169c8a52123424ec478d52b3db0adde4e94920eae0368bbe1295390690b69d99952626204d60150612e3780c62bf30b0fa3afef3bca3087f7d04c712142dcbe0cf9892ea2733627c7b7eef4c0a1b68be0decc608c759725c80307633b0fb5fa877c98da3e995af305add93948a2d6764a527b9020849e933be3f1bddecfe2f98cd9714f3fbd649896327afdf001", + "data": { + "slot": "1", + "index": "4541085068713761673", + "beacon_block_root": "0xe24dff3e29e762b4488e615619483884c44b8f4b37239b5cdc4a3bd7d9b48c1d", + "source": { + "epoch": "529036628", + "root": "0xbb0b0b3fe94fa42a5e0893ff71360feab7459127ca9149e88148b44625f31d08" + }, + "target": { + "epoch": "527882381", + "root": "0x2ed2e73ea915e0c71d9afe03676b8ab8dd578b9311463e45934f49f843386a48" + } + }, + "signature": "0x958ab38cce5390fd750e87806f32ed8993a175bc3ccdab7ce2a40c23ac6117b603d5ae98d44a9780cca1f32d28bf5176058ef667b17fd95f13e047cd9cdebbf19f5270ec5a154e2ce2283da513c9ad05c26f10b0a65755eab4b1ed6f42175027", + "committee_bits": "0x04" + }, + { + "aggregation_bits": "0x868f9ed4683f5e22d7f519918cf80cb113af7b692fae23a694f588d43d90507f7c44071a3fa92c8830bd85bcc71e557e95c6ff3fa09d88a7371fa035cc9609c4ad9193d7bb76bc321428c79447829a3b275a75f146e1f20f1c2a0cca8d860475c19337d97b5dd3653cde512f97b986b147b32a524a01904c7724ec100dda5b03615d462d4732b4a58ac6fb1d0c935642316e3bdd31f285f937e40c3cf291604ae7f3a5b8b1937e71739649662d99639774b653aa12d7fa990e0d48d7dc7ee51cef5ee98b7a420bd18719971894792effa5f6fb49f3218005b08b00fa513fe2f5ced76657341c32b69e00885d685028194e2d5e6c76b4185f776000dceb810c56992ef14c7bed46f600876655a7ede2fea688c7d538f8cd0dd5b61fd5bbeb2353e891ae362063cab720d1030dfb8605821bbfaf8d71e744d1e12cd713e64e220c20c670f36de2d6f865d900c335612fbe9300e151eaa0aa37e0da6a7653bf5826cad00a21e7efccc06bb6be8a63b520a77059efe58b8e4e2e1ab86bbf4384d076ccfff6625014eaa83d724b7743e3083d55e7ca0787f6c5a05f850ad4006e2bbc7fc851f2be69c7ea652c91fd40774e92358986ca6ffe9b9f5d43005b9abccf3ac6b4d9895fb0a6954ae2f8485b2b846e33061f85529dc6f34adb6ffe68a42e7ca9d53f7e0fc6fd236ab3992dbeb8b1f2906a820ecc42135a51d8dff9f654e8d68b27849e2562ee4c7df7cddbbe43e855a933edb42b86965a96e4b6388ff9f4da8d4fd1a3b63ee253e5d855f88faba1ef8d8a24cd35589c9a8bcad8f87ab20e6f83ea5fa2e2c990080cad4bc8b90fe46247f902563ffd31306b242c34293e3c49fcd42789adaa6462457e621c8435513bd566a65f76b44088203143735e78a1d3f6e93704df14f36b1cbb8607ebf1e701ae19983b073db1417d5f75c52a3d95761f871516d76901f6b402e4dacdf9585b78d1843d7019cb5ba4257b42f6a331d734d6bc0ca38d882dce58989d7de27e0631759acdd9543d4fdfb10adea96300bde9461e8851d8dd6baef39961a7a3c73930bf6abed670a19ebf82127de6e1a861d083c582983cabf0ca51842b16ab6859f12472f355126f6c32cde777a0efad8397cf240cedcf0ee04d64d210e8dd09d4ee9af1a46e68eabdfb6264ca1f6642425a488548bc0f6984a93a9f40a44671abb9d1daf85020325586b3f94f671c8ff365d5efdb7db5b847a6856ff427fd8e362f92a9c3eb7c9555908a22a34872375ccc47b31fa7e7a189c2968a7ec16888bf026926f82d27ccc6a4bbe81a6bfb2cec4c61f589048779351a96b2acb1b4162ba942dc85a486a39816ec0708d0cf40536ed3e26f82b7aeb3cd3cb1150b8fbf64904a548414ecb707c10c5309dc9ae4cb07e1cacd32abee77c0864eb02c0a828e14bfbb190429e51d48c71832e4cb3f9001", + "data": { + "slot": "1", + "index": "4526212706878702633", + "beacon_block_root": "0x41f3e13e4961bf0c12dd652f3bf49e85e35a8a25c70e67ffc1d08cc01d9921d3", + "source": { + "epoch": "527305258", + "root": "0x51977a3f0ab3110e2a10e9c6bd0e89b1410ca45142ac42171bb2b169efc281bc" + }, + "target": { + "epoch": "532306994", + "root": "0x2a55863fca1b5384408a1a7015fd5f173406a62dd51af1a2c0af2ad93b0113a7" + } + }, + "signature": "0x8ce27ee66d80548b04b029a68bf714f7918fe9b91c706050317b117786daa0dde1ea1ef9a8cc79bb41d6b7a4d661e30d0023df755b5f24daddfe6eda547945d49ab8796bdc3e63d75fcefabc8dda7f9b4d78292e8827948a5ebfa1f662db6ed9", + "committee_bits": "0x08" + } + ], + "deposits": [ + { + "proof": [ + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672", + "0xb03c5d3f2a2d6e66f45eed9fdfbaefb2601b9f2bd2970eba0038035333a71672" + ], + "data": { + "pubkey": "0xb94235fc2765496162b52009ab14fa6d0d0ed1debc25fbbd1fa6da8c64b58e5edaf39419489b556cb563cdd1d08c2eb0", + "withdrawal_credentials": "0x8afa683fea95afdc0ad91e4937a9c6185315a1076506bd45a4357cc27fe5a75c", + "amount": "32000000000", + "signature": "0xa8d1b8a3f2e7d1f9cacf864d93be09c810406e24e9074c43a1a4323b16b045d428d23fa0762b8bbf203b452d9c8495340e065df1fabb6d1b56b3435d227afb2470f722aeba88fe4542eb8abc2329a6bbb965502fc5ee6ed7837ef9c938573fc3" + } + } + ], + "voluntary_exits": [ + { + "message": { + "epoch": "4559262388392254378", + "validator_index": "4560914871608938506" + }, + "signature": "0x8166b2ed13e982e6b9f05d30f42681b826099135a533d2614ef5f4f59811714245db0e1821a644859559f97ec1e614bf08b2edb294fa2edc1527f46596399534af23c98613e1b74c01871bf1dd2af9618bc0ba23ddfce8026b897cdbba8c1bce" + } + ], + "sync_aggregate": { + "sync_committee_bits": "0x01000000", + "sync_committee_signature": "0x8077d47ad0fe431af45ca6ed24efda0fa9c84364ee8af5f9e83f53b3e5934961197cb31b062dcc3d5dc793ec6de565960924b65d0535f3833ecc51567572959e2849e470be8b6a1f21e2c735552595e9765e66a599d645d33fa3746d409fa122" + }, + "execution_payload": { + "parent_hash": "0x10e23f3f49a7cabebfadf178016756b47f2a9a056183da5ce5bd543c778bab27", + "fee_recipient": "0x23033a3fe9f2a903b4f058a4d4ef6a81852d9997", + "state_root": "0xe5ca603e08e1eff7259e45ea6bb662256d9d74b1724ee8feb0ea59f6e2ebe3be", + "receipts_root": "0xf8eb5a3ea82ccf3c1be1ac153e3f77f273a07343291711b9de6b9dbebc4c9b49", + "logs_bloom": "0xbf886c3ec849316e3b187793c3a4398b6097768d06bd968a54e8d2652d2a75a96ab3fe3195f647a70f258bba8e2e6afac13b68e2faa5061068306ca2a652ccf6becd6c58dcb63addb97feaaafc56cf440e920f1f1ee6ced53f0d6efd1209f3f0daf37dbc30149935d6dd2451da4f84d128262214a2e844c3079f5133690bbe15801b8e32f99a0c4144a1d705eabbeb18d2d32bd6c6f4f48b71b21578d4239b6197240a4ff3e0fe9aa69c35af5f59090c355feb7b601c1284334d2e5933fbca40a7792d1daddb890ce4e7124d627c763c5d9d79b5597a8580854a297498bb127e6040a3260c87ac53a8c4e69591597b0fb92cfdf430c136b9a5079a5dca820f58", + "prev_randao": "0xd2a9663e689510b3305bdebe972d4e58669a751fbc85bf448269162e078b2c34", + "block_number": "4488205580010065800", + "gas_limit": "4486553096793381672", + "gas_used": "4491510546443434056", + "timestamp": "4489858063226749928", + "extra_data": "0x7ed3313e083eea1ecfb57f4508fd068e9fb56c4125942ed01ef47538b5f29e14", + "base_fee_per_gas": "66016772192738304600348427229332912155053403334447944293225380805794998736543", + "block_hash": "0x58913d3ec8a62b95e52fb1ee60ebddf392af6e1db902dd5bc3f1eea7003130ff", + "transactions": [ + "0xde78143e27b846", + "0xb736203ee72088", + "0xc7dab83ea972da", + "0xa198c43e69db1b" + ], + "withdrawals": [ + { + "index": "4517950290795281992", + "validator_index": "766262", + "address": "0x4dc28f3e0884f5d07b860b8fce6fbebc3b857c21", + "amount": "4506382903983525800" + } + ], + "blob_gas_used": "4511340353633578184", + "excess_blob_gas": "4509687866121926760" + }, + "bls_to_execution_changes": [ + { + "message": { + "validator_index": "2227267", + "from_bls_pubkey": "0xaf8e9748b8dae2368d451ff7e57388b5a9de96c48d5421573713a104bd1d7d19a8fedc6c40cc0c63f030cd788d4b79c7", + "to_execution_address": "0x42fb7d43b1006df9874a521b12867f80fbfa5084" + }, + "signature": "0xa8709cb09f500debf2bbb6855e09542e63ef41d16f12fd72cffe162f228a3bd53079d54205623296544d6a4e803d7cbd03b452f30def23fd44a939ec651d16f8b2380c6c05ed8de42f6332456e214a3327bf9081373cd174c5fd88c73f7067be" + }, + { + "message": { + "validator_index": "1395399", + "from_bls_pubkey": "0x849eaedbe546193c419188b4aa3f2d222b377a136c5defe659dfa84b5ff83153490a330f25a7ca39243bcd11ebace030", + "to_execution_address": "0x683d7243f1972b8371d02072b997a81a08014fa8" + }, + "signature": "0x860ddd021623b0457093e3e33cec56fe571fbbe8a52a68ec6660579165513eeea8dc706ba31cdd09c5c7ab60765182cd084061dcb29dde1dd5d5956b404b389f599a34da02cd3a50385a148dd804110335507c0f05bdfdc495e4a4953dafac94" + }, + { + "message": { + "validator_index": "1010650", + "from_bls_pubkey": "0x8485b34d0bf20fc4d60d681351091329d0897bac95042cb32b979891d0d5f7f752df602f71f63b1d466017ad2a09b8a0", + "to_execution_address": "0x27883743308ce433056e2924fdef751d461f455c" + }, + "signature": "0x98536cd2647e9ae4add0f9ee0897f9c2bc423061a913bb3f1d5b79d2e3ac3090728c5023a892b7440c6cfc2fff73dd4210b61a2c7ad48282924dfe7c6c6f4884353d98d629b374df14b429a91ee58d18a80defab79fdf5cb71224fec86c022f9" + }, + { + "message": { + "validator_index": "2242888", + "from_bls_pubkey": "0xb62392bd8fa27ebbf0cf05be5bda4d08cc63c65e26ee59edc9a002682513972e9e5810163d19e720b078ad5e45dea8ad", + "to_execution_address": "0xeaa7e74372afb92149950f0e30e70d158bc46240" + }, + "signature": "0x895d52f7e0948110bfcd91fa281928e1c76841a86ae348b51e1c0bb9d10bce59917d950c415ac89c1099eecf840f62f0015790d194a97cabb85ba45d5ca678a2c7acfb4d86f22f430c7292bec30f1f0a24125aedf3132afd0a76b6ae0abef7a7" + }, + { + "message": { + "validator_index": "1858139", + "from_bls_pubkey": "0xae7908cd2718d6801bc1045d733f3c8367e3125c163784df4d34f356f899dad12024a9219f126e63dacb03ac068101ea", + "to_execution_address": "0xa9f2ac43b1a372d2dd3218c0743fdb17c9e258f4" + }, + "signature": "0x9846a460e26f9b19bc8a79f50838489e2764fcceed280b9f8729d38d13b6154bb69a8ab360a7cbe0c80a3bc7e92f5fee0212311895f198f7ca04e838530bd79c2814c2d0b4417c3f760727b92d279c91ccd6c94a08924d7402dbda81a2872ba2" + }, + { + "message": { + "validator_index": "2934395", + "from_bls_pubkey": "0xaa7ec4a37dae722143cee2fabacc1e11964fda925d7dc00efc1c3b3a537f414237ee98b5af27a6231ae5097e4a133529", + "to_execution_address": "0xcf34a143f13a315cc7b8e6161c5104b2d6e85618" + }, + "signature": "0x86c8e92840bfb3b3ab773a6c3f4bbdc36416746bc710630dec288404296db89f63eb25d648a0795e30e6870ea5a6f5b70bf684cbe96b72671398e89a8510991dca3110bff970cf1abec6c3bb3bfd7ba1b37ac1b973ac024bcbad0287d47aa65d" + }, + { + "message": { + "validator_index": "2393663", + "from_bls_pubkey": "0xb4de3568fdbb0af339856e6106dfd7808879d0564325ec1deab8e8932c4d173a8d7b04a546a9de867619730b512748b1", + "to_execution_address": "0xf2a1aa4230a3d3a803b5d735d4c36257dc672d0c" + }, + "signature": "0x8a5025a2a1543e6fa0fd574add3bcb06f96df170dbd82f51995a261559948009eefc0c8fc2c474c387cf52a8c5a698940eeb1fff88b70b5331be065192f46e47c765cbb3678d19a6a84f713e9c9464730649720a6182ea2964188a8dec26c2b4" + }, + { + "message": { + "validator_index": "469919", + "from_bls_pubkey": "0x8678ff3eff860e3ea75396d0bb0d548326928ecc62c8c9b30b58f8f3be02e3099ef80f47a13c7fd828412ba9f990c25d", + "to_execution_address": "0x18e49e426f3a9232ed3aa68c7bd58bf1e96d2b30" + }, + "signature": "0xb47bdd50d8e3ee31806068b3555ea1fc6771e2caf4b06d07394444468feec69e9d153e52ced5b5cbb5f8d44f2e981a060a691dd8cd0d86c4d7928bb908eabca9c2520e9033cfb4e5f13a80d30d4e8de24eb5a09a0e0b734a55811f13edd2fe6a" + }, + { + "message": { + "validator_index": "85170", + "from_bls_pubkey": "0x82b07707a61c37b860d0d290ec1c330ad73d0f5970b72c198aaa567ecbd2d2d08e884f2322519c2e17ab2cc3e9bb26de", + "to_execution_address": "0x740c2043b0ba6147da79c6d14c13c8515f2b41a4" + }, + "signature": "0x8008c559949fc9cab7b9b663aeecf3583273f07c7081afc5327ea39297f5adc1f1d8bb8d9485f1fb157a8bcc291625fd087e435b653ef0020f3fb8e4dc7ba04b6ebc64368aed53b868638cc39a536c0c077d6a08a4831f06e9145d328a52774e" + }, + { + "message": { + "validator_index": "1317408", + "from_bls_pubkey": "0x8a5997a79613125f1de5bd526981865c391f914492bf08bea98d89e0b212f554bab770783c094dc2ef1229e5cf6febc0", + "to_execution_address": "0x9a4e1443f05120d1c5ff9428f324f1eb6c313fc8" + }, + "signature": "0x877005ef02509214e9ede55f546c2b003c0209b7d885ea680d76369fc415180ef4fbbce332fce18608d3533b8d6d284603e52bc79193b0b2128c624332fe1bb1d1e1956361333e0ab171f1bdeee927a169d2ab78498189a9e8f4036cb47b77cf" + }, + { + "message": { + "validator_index": "932659", + "from_bls_pubkey": "0x8af5874a9623513bbb3200f80c2679f001ca294967e33f1e201f6720e30f3c8ab69492f3dab696b485436280bd5da4b3", + "to_execution_address": "0x5999d9423046d981599d9dda377dbeeeaa4f357c" + }, + "signature": "0xb21c09e06746c9cafbb504cf0aced08a807b87f62d57b526d28277802395a420321c8510b91b5e835a9fa47e6cc27d240d0991f1a05798ec502acd18dd8566ae675a05579e71bc8ba327ffb5f92c66c1f58ed89bf2804863cf50b958e79add78" + }, + { + "message": { + "validator_index": "1852932", + "from_bls_pubkey": "0x95e6bd6d5246d58b9d56e43c1490b8dfabe87ffc399721bd63de8a38a7a6bcab8399085f3ed777a668f857f591154b73", + "to_execution_address": "0xe2fd11426e5181a7eb81549e52a9782b7fb613e0" + }, + "signature": "0xb33229dc7bb509bee6290ece9d436db0477fc49ec3cc26e1e298eb72d62d0b4d28e72b271c0c3a9b9f86c44c883086680dc51747dd535a7b0b693302eadd8bf44f802fac281dc91025509a5c6df8bbe7455a3f30d32b2cc27c2322c7f00212d0" + }, + { + "message": { + "validator_index": "1468183", + "from_bls_pubkey": "0x98b245d4ae533c7648fd14a7858d17a792e7919a81c31f1db0dd1c0beedaf0fe7c7fc60be0b446238fd5e5c94220a538", + "to_execution_address": "0xa148d741ae453a587f1f5d509701462ebdd40994" + }, + "signature": "0xb6df5347cf18c72adf3ee1e2e5e942d8b3b7ab160b1f66d4991bab95e7050f302d723406d3410b9275700b3b998f2cd517c4da35e0294235f656d5c53cabc553f02b6a8f0e14a74571029f380c52a935c0230f4507ac486e4cf01ede4d04270f" + }, + { + "message": { + "validator_index": "2544439", + "from_bls_pubkey": "0x9866c028838d222cfed5b1ff8215618a8d6a81c3e96a34759e78172fd2d18521fdf686d1601a860a38d3c1fd8c9e22af", + "to_execution_address": "0xc78acb41eedcf8e16aa52ba73e136fc8cada07b8" + }, + "signature": "0x98ffde69b4d92a4510b5d42ae9bcc05315ed0a20fab2ff6fc8e416678f150d7bfb961da6774e86213ee711a2b065c3d300a13fcf630d7f303c59d848ec47905d2b439e7bb4f3348b6ddc448aa00f7c6eb6f64513182a3d335e2753f66cbec83e" + }, + { + "message": { + "validator_index": "2315672", + "from_bls_pubkey": "0x84768946243cfa8d15223bd7222c94a5ce4a610b7aea979ac29d5b6f30e721213ed5b3cef3b4d2e700251be6a3d4dbfa", + "to_execution_address": "0x23b34c422f5dc8f657e44bec0e51ab2840981d2c" + }, + "signature": "0xb9014738ce2ebfe44a8255a53e34b604f223702435a966b81276bd7967cc1e172a4dbace09be70a1f73b300d83a7a8ec161cdc911b167a8a6489def11edca95a3587eab704e98325ce29eb4f86a477755421b480ca39020c82f07e4977d9e859" + }, + { + "message": { + "validator_index": "391928", + "from_bls_pubkey": "0x8b37bcb9abb306bad986453fe618bd0161b29c9f5f1eee2aa91f44ad2ecf75604c38975532425ca87de0e7cdf3cbe44e", + "to_execution_address": "0x49f540426ff48680416a1a43b562d4c24d9e1b50" + }, + "signature": "0x954da68af7adf486693e9213a63a082fcf1b1ed99c320314b73e64c322470329df27c891348c17b92dc7972dbc7d9b4215c7746c756c1aa2194c7217ab902459290981a0905683fa8563a2a7241f2bc3a3d6e4fca48d9fce1c6c322c4835dc1b" + } + ], + "blob_kzg_commitments": [ + "0x83582f424fd7244f213350c530fd112a5fa71806352876480227941a471efbcb4c76127b24d689436e978f5ff3327e62", + "0x96792942ef2204941676b7f0048626f766aa1798ecf09e0230a8d7e2217fb256e395d8d91f376a31b5afd20bbafae148", + "0x594150410d114a888823a4369a4c1e9b4d1af3b146f383eace5399d4b17e3363cc267b8c513bd892003285f184da4d95", + "0x6c624a41ad5c29cd7d660b626ed53268531df243fdbbaca4fbd4dc9c8cdfeaed644641eb4c9cb880484ac89d4ba2b17b", + "0x32ff5b41cd798bfe9d9dd5dff33af5004014f58dda61327672511244fcbcc44d9de7eece5c7917b77201ff98f64a86c8", + "0x452056416dc56a4392e03c0bc7c309ce4717f41f902a5b30a0d2550cd71d7cd83507b52d57daf7a4b9194245bd12eaae", + "0xa5c538418d3fc79b5d2f41e4e96f70cf6626eff9201627d38558a7f51b02118e2ba593073bbf594a1d9391a2a1f9dc2e", + "0xb8e632412d8ba6e05272a80fbcf8849c6c29ee8bd6de4f8db2d9eabdf562c818c2c4596635203a3864abd44e68c14015", + "0x7f8344414da8081272a9728d415e47355920f1d5b384d55e295620656640a278fc65074a46fd986e8f620b4a126a1562", + "0x92a43e41edf3e75667ecd9b815e75b026023f067694dfe1857d7632d40a159039385cda8415e795cd67a4ef6da317948", + "0xf14921410d6e44af323bde913793c2037f32eb41f938cabb3c5db5168485eeb88923ac822543db013af49d53be186cc8" + ], + "execution_requests": { + "consolidations": [ + { + "source_address": "0x1fde61412d2eacb9a85a6eb41fb2e0333a11f6fb", + "source_pubkey": "0xadd399d4422421f5e4a3457fa7c9dad6af725f7cf4d3f44c2b8026ff8224308fcb7edbcd677a1835ecff50b3960727b5", + "target_pubkey": "0x85808a97e324987cd03bfc33e49aaa6cbc8a5cb66fb44111b0d8bc8c6b7c810638e6a6ac88d640b3492a684c19053f61" + } + ], + "deposits": [ + { + "amount": "4684851168694822957", + "index": "4688156139423158509", + "pubkey": "0xb8fa03e47468016f15b89212a91f203194684e0cbbac07b6cd428fc7e10cb7d8a363985b46972eedd7bc434fc701c4b3", + "signature": "0xa529495633ab9ab138c0756646074fc7753fafbb44389490ddd46048f29267f6b85e46abbc1fe71c42fc98513ed0f6f800ebc9eaa04b484e29af7d7bb0c38b5e088435aee8583a812545b3057c184a4634957604ec0647d1fa81da2d15a5f198", + "withdrawal_credentials": "0x0100000000000000000000003ece09418d9cc1c206477b3f86b61438983ee789" + }, + { + "amount": "4734425686670183278", + "index": "4724510778780143918", + "pubkey": "0xb8a7fcd7c58854073db5f088cddf200b04864b6980925343c0d0b3238d5ce3880197ba175c59b61aade73eb79a74cb28", + "signature": "0x94d7e47981799407b6455afd50007fd6c7736bc24b685c668e8af371e8e917d974e93874db6532a4ae61f4f6deea97bd12c425def40e2d7d3e03f647ad4028145163fb47650087a96647e67c495a101275b8b3fe37498b0b65772b420dd2f400", + "withdrawal_credentials": "0x01000000000000000000000001eeb941cebf96b04a6e6129b9adac2fdce3046e" + } + ], + "withdrawals": [ + { + "amount": "4722858299858427086", + "source_address": "0xc0387f410db44f61de0b6adbfd057a321b02fb21", + "validator_pubkey": "0x83feea64397a7a9d3fbac0b9a16ccbfd63c4d4fa5d0fd8bbfa13739148e752ce1e9b1e01654b56cb56a196fd8d64db3f" + } + ] + } + } + }, + "kzg_proofs": [ + "0x28384a4676f60227a8611c6c3751b6c4018ac9f0b6d0f11d02d460139565c2cd4c5f8a360707a6efa09da5ecad82b94a", + "0x87dd2c4696705f7f73b0204559fd1cc62099c4ca46bcbdc0e659b2fcd949578342fd6810ebeb07950517f5499169acca", + "0x9afe264636bc3ec468f387702d863193269cc35cfc84e67a14dbf5c4b3aa0e0ed91c2f6fe64ce8824c2f38f6583110b1", + "0x619b384656d9a0f5882a52eeb2ebf32b1393c6a6d92a6c4c8b572b6c2488e86d13bedc52f62947b976e66ef102dae4fd", + "0x74bc3246f624803a7d6db919857408f91a96c5388ff39406b9d86e34ffe89ff8aadda2b1f18a27a7bdfeb19dc9a148e4", + "0x713fd146172bf3f6a05dd5853306de577144e0d254c84764e5385015f6b14857ad88bdb287507d903a6f9e72c78fc297", + "0x8460cb46b776d23b95a03cb1078ff2247747df640a91701e13ba93ddd11200e245a8831181b15d7e8287e11e8e57267e", + "0x4afddc46d793346db6d7062f8cf4b4bd653ee2aee736f6ef8936c98442f0d9417e4931f5928ebcb4ac3e181a3900fbca", + "0x5d1ed74677df13b2ab1a6e5a607dc98a6b41e1409eff1eaab7b70c4d1c5191cc1569f7538cef9ca2f3565bc600c85eb1", + "0xbdc3b9469759700a756972338229308c8a50dc1a2debea4c9c3d5e36603526820b07d62d71d4fe4757d0aa23e4ae5131", + "0xd0e4b34637a54f4f6aacd95e55b244599053dbace4b31307cabea1fe3a96dd0ca3269c8c6b35df359ee8edcfab76b517" + ], + "blobs": [ + "0xa250734616e5e744f48c493c6d932629d574d0f2b953d406c14b88999cbfbe0227821f9f2e60836eaef3cf363a0cfffddb3e68676607d6c52dfc486041318c062dab838a88fe321c055648202e744d6197c01d58e03acc793186ff781cf3c0f650617d201785a0de080b592e0d0de1bd143c5dd9a58b26409d6f53158b7b87f12aa888ce822872f568b16ff66ff1ef93a3bd9b3e23ce7b6125dced420053c57bdf2d76d4a44f3de9fcffdc623fdb410955a0e4e84178d68ee1e5b1da80c29b919297fcc50a261fc73d266a343c3a7d408122e372d7db3323cd8577a025d2df6beddd760b78fee43ecabc09f07b9a903b440ada473131c08e4a0c0b8b9e9723c49eb961946585ee57e64586aae35a72d2fc593b2f907199789b2973a2aad42a3ad41f6aee7ac3330cf53d50beafb3b074cd14d21aa90123336986bfe0a0e5e43ec6ce1ebc16f018dc03bccd19f00c8c011c13b091242c34d640ece107ebff45922cea9616cd13fa583ca2cd7e09a595ff16e751661e6cabb110fe536d86c099f2c4a79fbde47a98b7755e00be31870ce22ad1aa02a78730d2ac808b52840a2915ce0b431ad7f7d3b6a23a98b3f4d172d78bc40a79457a2f014e337f7f8a354d6191b5b9ffd4f5598a5e3d738cb34d15d2af7b10b5702f56001138be7a538c4a30d4bb19c73d5b3404669a70a51f537f18d29c199c130d1fc0760cdce82b1b8c85659954da2a3c62eb1eb3d328c20115b174eee2a8114e32f8e011335375ce1a4c96295603e55ce4480aa7d66776c64d69d79b4a92be2ca8d718a63fd426e16927bab456dc6c84e7775674ced0eb31490e828966d962dd757ac9cb15ee479bd2cead0cb28ef29ef6f04fa8824c261fb8a9c0b960afba588f700563b31d766059bc4ab9d5a55eb05e1be89f9abffc29543b22c1cb7f77f687eabef13094650e96b0f234181cca962eeb365842679b755f74f94a6190bcd7bb0e4efc12dd5aabd92e0b398bef059d7cb5f4ce68ca02c3e66fddad5c93a4214c91f0ed3d1fae64eb9d7f1a1b7d12dddb6f00f3390384d7bf3f2990e3bdb90778e844914e144eddf62a39368d98a7722b83dc24b6364a337e6b7c9c2ef07ea61c5ecf1859c83dcc85e5ac6d2fd8af7d29752e47892acd17d82b394664c1e7ad65ce78b750b210eb9ecc4bb34ad3c8f473ef405f830b5fde3542089e57cddcdbf81a0dc999bb703464ae12a7aa22c647e11580c554a1a39e65c953369d76ba462639bc8a885b9c72caccfc42ccca2ed25ab101e66f5e1125ad41ca17a86bd177e7489a63ce01e41d44338a978557bc1da36ff99032f57439b467dfc5e0a1e755b75120bd17a92f8b798a43983859ddf4b15b41dbb85d6b35011b4b53e825b3df8c19a86b5c91766a68002ef8e223364590bdd88efb81ebea01b68786791463b68209f4a6a4cf4795848c59169da81bd2ddc3612b1c18bbdadabe540e9a4b1778f53aa8924497432db47056fa590218b76ab4a076008df6ba76c533c60de863ea2297cb56d0de9f0a4159b960fad66cba8ee4009d9f438d4d9098ee0a3e6fd1f4936a4ac84a49a77a19e79bd704fe896f286510e2a2d7c386b0b80d1f079a5d6bdbec75a1500a374efac01aeb94f696296e2101e13b84af035b15629f1d11f7a87304804a42d240385c81d6615396edbdfa2a2a5d524abdd0e2ad7e07fe0f04fac4fd0332aead497c3ef8768989039d16c01085a26bf32d80a1a4394698cfded69e037bb57d29ebec28412193a17ce994c9692f76ed9893908ab02e6229ce4feeade6c799a6fb543aff1e0600a6a7c643f82feb969ee95523559e3c2ef5851a00b928ab1363e6c5907fe8d41d922461da2222a0cd86013003b6bf060ed2e87287ae4f5060328a14878611429385e5978e4328d68d904ab4fa63bc74cab8028135cd3bc2ed23612b5d720688fc2c607cb79d9f3e268e86c37ae0353076ca79e33b719b71132f2c878a3fa0e497f103d53f0588278184d516913e142a627e3e2867509eb15a99b1ba9c38f11702c2809de8b1c609755d45b82e621f1522eaa255092fb93a57adc9e965538be5028652845b4816fea4633a89be71bde7a0553c63b457a2a80f445d4e7b95aa99698fb56b0d03c744f129cabc0b744c5d458d66bfc45faefcf5e227b7031adf7ef999a0e9f02425bc77c0f4597854927426a4fcc9bb025c197070c505d692eb67662ca1c9f81f376e245982bc83c72bf14f18df556a1e2d48f0c0d1aee75e8e28616c7f8a6a198803d2bd2d14a1c9b7db168b2b2deb19e2b49d7ea63c0b90d41ab4b75ede00b6de49fa39aee55db2bafb7d7f9e8c6d41ccef8c2d92ccfe79679b6f94a82bde5713b3f6d92586d815d963aad073a4cfe0326b884e3990caa4fe8c26ca6f0d4f38b4d7d02173a486ee17e467d23e190927b60269e2304d6f3cc1d13ab621d25c07c9eea29de7bd4bc94496bd4d9f85651c326ffecfc7dee457ebd5392d4cfc2ffbd25788edeea6dfed855492cb6cf28e35e3d387ee62af68b17c03497bf6c3427919141e2f440685bd573d61dfed63684d7531bcb6c5421caa0f4ea2558c9063c36e4b93e66dd80fc2e935fe63f54bb80f35f162dc1faef3b238aa20cfa1838752dbc649c95aed3b27e3616adc4b13a31ed3617c52be1bf474f790dca1e7ef6cc90974060c2468539813afb86a9f99f57c072ffa7bcc47c252d47ed85f7fd80da9e0e6b1162c4025bc7a4c020f51ac3f07ebf0078ba804811d3e75bd5c7f7ce23072d2a8bf0ac14bc95d2b6b20da91be050c9de350ecb7ff169d79a762dec7f3144e949c70fa0bc3ecd7853632318117211a11460072db389b591502842fddbdf34ba803d7c392cf7c6f53ebd68928e243858c5ba44a7c200bc6d4749c8e94e2b518311a02789c3432bfd688f30628033392334c4ed2bdc2d274c9df52def7ab412c767210a3c6bae12f10cb947b94d6e6368d543bcc52b2a4040868ae00c45e2c505f15cf0380067014487f7822752aef87076e75b706c744d62a949003ef5c538bfc32ec3e8cbef9368ae8bc4849096c9f7187b05a372c7c70cd78a6521d188719fe629f7683026a0b253468447e5465ad804d66dc55bf109012f5a2e02ad4b1113c75e9295031f9482bfeb9b3fc2e8b504a83729a67bed9021effd3e1a339248030d2cd40b2ff4da1f4e578ee9837a96dcceab15a85c64b76990065224db8f105776b27b5bede3aa99b32aec6a293567b67bd655c5f2216533243e03a9cb98681553cfbd95cb251cc7f87813258c9ac9e5fb45d48b468ab98186dc1e53da3e2df2f5a6addc5d7c751c4a8263d706a0f055ba12afcdc6acf6c820d2b818ca91ff90e95a5c30b7c640ed04f0fa9928e4e9ee896dbb23f7384bc293911581e72324623a884c39142735cce0fd301dc1daeb9f6a0071cdcd3f1dcc9366ba639860b513dfaa29f8f3bf5572e4a7f785deb9b0f590d2688c3c41d94a43b3e6c579584fb54ee23518f2a8a2a233341c99a9f1e714944776f9b929452fe37930ba787c31c02c4801bf31ccc6724e69b950b7347ade230003f1d1d57b0a2b3a95d8c60fd7f050802eb6d5017186b8a9c129fb8303ca5395a8596a5aa705bbaf9631cf1c202bf94c6b18469f8147987bea6343853e6f6c8594f69eda3697cd8d6f9a25a416cb6227a5116fabac790c9711720593cee9c65cdc28ba487ad5927c6f31c61209a14691d82d057d22f37167532ab1cef39435bd7cb06285a3dcc69d9e9bd8de8ca27ce8110b8c21654ba70767392e87998fdf2a3ff7690385db138a1826c211b21e2a75ac1a4db10e7a88eab0286218b87bd3b7ead8f10555c693f887444d765f55b0c0620c06acdf3535c548dab950eccdb62857595a3b0435b88a99b12779c314b326f820c76f3dd539159e519b71dc8939c84a2e20bec676fd97372da3762b99161ac95dca716dd035579095fa6ccb7859caff26321ca4b9120acf353f2acd8af733ad95605806003f3b333fb0c9ee5369e45711b703d9a34f0a06c66238ccb4ce4f788f7f4e675b49feacfe3c7a7768efd5c81a0261b40cc0ba10eb2beddb5b07141980f95d462bf4ce2c8ff61b2a5595f59409954cdd65304071f0bd1dacc4b4dd28a4062ab1d8f8d1c6eac5edd23c669cef446799ea2c5e46b7df7f2a5072edc492a032e8d38d28b38513a5492dceb0cd154f8617860a3eed2d7308b4567900779512365991dfc0bcedd6fd6d0893e5bf90c945830007466e04c25e1b3c94a1dd9483fa63d31c381f41a03311d5d1df2961714a2ba3140706d6c78ffee465c40ce794ca8928ca434e8f922f29b8048f2d921064ddf5c13fc0a7f8166324a666997901171ff865d747fd1ed44245b6188f2720b504a3480c245bdc98ec4f42ff70d7faadb9c3371dd612af91b53517305698759f810961b51bda7903b02db22cf9634066f134ca7ad33ccce2be934688730d93aa806d5fe266001499d91d7cc0de7496984edbf8b28271069b5fdb29231361b8be57ad745e15e051844e78360477e51ebbd9744ec0ba6d9ba20d0d823f56e853eb83ab19277a8525be286e03358f8f7f6cc89cf5c14053a27674236b4e9a5acd858ef7f898801af1edfa9da3fc598a1cb8851d9b39173b0074e463cc2358dc7f32e345a55b60834a5b835a8a4acb1bcfe547aa58d0b992b2871c7342c87d330bd1ffe122213bab0e6362c662346c892f6d78a90c7f5926e4a1ddc98b71b406c782c2e6ca09d430a0c6eff00a1f398fc6e0193920675443fa2fa46998a5917f3f860691487cd3c2ff6907331aae15cfff76004ba30332ad058879364b2f74992281290750d3093c0b593f843ec37f30374ccce5ff043242c096257159fb63033856c6eea7114beeb119ea573b7d9cf0a9c56fb3a3619e8064564623aa5a8d67da152806b74480b12054e40dd84b6d1f97b953f47b5870c39128de7997c0a14e2a18be223dbe416c13fcaf9716baa62e3f13843a764dbe15a67bbe827c1abfb3ac041cba8ef29c030a1a4cbdcabee82f031f19148fefb8765b2386f2773e75c6ecad023bffc6b2df3c38c9e00261aa26944a5731482a1f4fd53135b15762c5c20a1e41db4d50fb1c36ed2a490e2b1673484f924e6b398db111e49d34a131664d1bce7dd4e4e97a16922b892478949cdfe21262a549817abbaddc1a03c7614f182a3c1944ac1bd767491959e6dea332c3a9f1db697fd210eefcc19fedb2fa5f94d74e5a2198aa4bd2e22ca72b076c320fb56036082f1fda6671b3ca6e4b21bf52b61b09e6b8b0fb6856f7f7bcbc31a65cdf1f1a07f46b8f33f70cd2bd3d7f9c29130185891a9b1aacbc73b3a220d8d058df011d41415b98e486266e3d55ad8f461baa933634c89562bad448939b08e90602600b32f37683db4ff9dea495cdf3c2a6cd776bfe34ce95a56d1f8efaf3524023b8488d8cce17ec547e4153de0ce0296c9975f0f5ee77c9d2f0db070304a7b9f2a97938ab8ba8c66ae2ccffc4f97617ee5532183b2040e6a56ea7b1ffee65bbbc4b9548a21d5ff219e682ff1f5810f06ec2521de59ae491f1cc4f52706aa09a52c9bbf0ef3448bc6f3d1dce281e9f2bd99670bbecff7c10389d1ebecda749d4c5a0f8bf75c447f1c7d057851898265e5bf909c4016bb5b72d867755031bd6475985519185038067881eda1af04346877c46537cd3365077bf60c5db0656daa8907afb2d306c54d9f397ce430ce7f49dc2176a290afd21670075aca7df3548b9d1b450ce578f20d704f360855277b80c5e3ea86ea163cc2d0e2ad558aff28b8801b6055b0e76020ec668da0833457beef2da58aa57b32aec190afef7fcd144719a2ed446c568d19d9910ad9d97d797845b4ac1f54f2ab84ccd0a0467c49daf6a32157e1c30a2616ebda48cdc36d246d2241ee62951520f3ef96809373808285e05aa8fc4f106f2e87bdbff519d6afe446334aa45680b49f2188fdf8d1259efca2e6059f6cb7b64186aa5d73426a51b15ffaf2715f5579e7438038decd0d1615bdb173d97b11da0b0586f2434543752fe69d1b4197b9b577390d57ef00b38b14b579ebba9c77d9b63a2a6aa9d95ba6c88135f60d7d55441431f1e5ad28b549c64952c3613a027d5a83e3d64d321507bb0270028d3ad6ff1c7ca40bbb6254c471552464639c13091c48f04beeb4b35927840facc7956d3fa442d08a45d4f8a9f03b2b5004cfcb02e032088896d9dd98a74168393ec54f632830d394456faa8346b27779face9404c027d16fb7242020f032e409e9d3367142c4406c707399e55b586ae8b3e196a2b6d26a58a28e6c643d8e8224b3d3dec0db4a5ed70d5c962fbf4f3db25b68425f3334e22133b2963c90e85316489689b8bc9fa762192797dd8cb47a3f1749cbaf887bbe21b3cbd4b9fac8fc204f057c9986c94a7359453768e19f83e2353fa81066aa77dd3ee843907f2a37b96d7c805c6a28aa29560e34b576250abe4c00142ad0f0fa9438a5650f46965255abb8619e2e6ddd135a46f0174f9097fb78298e04496d269d91869baa2436ae8b100a729c56cd2eb0e61ff2e18ffc06524255594d1a01518af439af11c47d41819b7508417cf19cbf46256283ed4e06dcd78ffdaaf334c42a1a144dd9dcce14a8e35efa3f2feb596828a2903b4b749b3ea19cc4214fbe3a51d3b485b351cbc6cd06222843eb174b2869786d5970c69c1f5e253e884d12656f91054b3828de087ab9bff126f7368e977dc6100cf56c35ec4df8be0bfd96690078b5f73da2e21f9d945ebb463f20effa1e6932c3c89367ef19f0dac43b705fc340edc6c1f9b6668efaed6ed97c7a73a6282db21ff45a83b87bfdee5ba899d4c57c34576081f6c95a2da8f95d3c87ce2fcf7913747875b3d1d90f9abd52fb473efc682e5e2b0d4a63708acc17959bed709b56f9d46e8771c6544740df1e6bae3667383440b9547f4b4f1b5d9ba3246d5ad3f3b0b9c8750e7afeef87930b19f10651c335f415f212386400a36a192721963a47a52c54042cce3543db6ecfb86e9f50f060899cb7405d37f69ea173018ff954e2ea8be550449960d1eabb7dd774a3e77ccb784d675bdd11b6cdb2aad874c894e2b6d9c8f422ed7dc328802530c8534209ed7d344e48f7dd36b6336d7f3cc71ebfe39cdcd764ad4ad94c909c7e23491a3322ff805802856e7f61b937d88a1d0ec36f51f80afe75f225d1b4e843b1fe45532b06136c15cac7f1ddc4dbaab6086236fb688051b8d1861276def82b932cbf98abc87e0d23924390babf47a64a5eff924fdb495caec0b61abe6aa0485ef2290babc0c811639faa3e8e08a2cf85de6fa6d4462f1acf8e800d717806229ad1267616555c651d699d6a710f09f0d856492c18a1f9ec60fad758194cfbb04578f95d3e12ffbe2f2ae6d780828aaa6b9466404e777e0376aa7a0c86c4e5b34d5b4ee55572c26b8b3f8e865d8a23c499265c03cbbe15947ff56ccd4bdf3a73192129fbf535363fb6d6d0c9ad16dccf6ff1d2ee8a35c934baf7d8e83e4db1f601dc453f994c5d194bec44b0993a4fe13190b2a2a952df18baf94912fc16a3e0d11477ca214d2762769ad8ce4e993220d6874567eac6a38de7267e1e62514fa14ba5ca6f527e70507ab777597de2ae178749c13b338d8faafc93483915e2ed77a1627f1a546fcad02cc47735db5e9b642405dc0b0e8b32cb8a953daafb53c7c3ff9715a432208f66752a235ba28ceef5bf4b5a922ac1801374662339c0bbc27bff5004dd5dba0070d3cbfd6c0fccf56a1e82be81d80b65f1711e61a852ac1b3f3274dd892ad977ccd8df9ce4e21b263b3d2384c78e73bb488ef8e588663b32569eadeac54f62e201aa222c96e1e5973bcad29021680d15b9a9e942e0f115a7263b298d936aee14a58253fa9454db7fc6a83fc5c8a26be736f786f0b6afa43512751dea617ac1b0f62d03a7b48ae136416cd6d7a61f9e09047e3cfba99f40fe73ad25aef66453a05c8eb2cbfb530ea3fde343e368e5c2a0ed9cd38f0884773274b86cf1796f686c9e1a413a5e85b4137c8ac752c39f26de977e4922db666055b65ea78659c8b9eb905aab2afe7880e2e2145616671af5308aaaf5286f0f00827adcde3e58ff2d0f2c6c19f20489a46b19e88b487bc879cda07600a6a78fbd69a6630bec6488a1ccdb833d1ddd9a152f54a16fb0e940f0ab828e29f95fb9e6fc4e977e2cc43c3f6a3b6302083990d72c088c04c96fbce460bd72deb3a3a344efc7101e49afd568ac50e5894cdad459ce2b2dad383199247132f5a0695b2ac08af2dc6db0c9752fa8ca797ba37fd3e3ee63ba5de27bda3e0394bfbdb6536c168281fb6ad8b5205c3cbe9fa20fb87e11d53b9e9efa88a69410c9cc52f7304b9db52be23591a13d0873d86ddd6e9bcb5f2fcff85eca49c6f97733eca568f7f1171c54f98c12d919c64d050c5bca9132c9655d199709ba28e593fc41cbae4c479b41811d174e4f6459be173b2a00643072d2150abbfbc45e3136bfc39bf87c7c820e1b1e7e5091b1ffcd15cb17a0c9c765b30c04fdb785206d2b20bffb3b9b8473c8494259bbc9fa48356a21dd1589fc61e7b0f55f478ec5bba728547144c996737f7dc0e7a1501b80e662b79e7a0858b4c74a029a82ecce453f80f50a8ed1ad0b5919469b52c352a34c129abaa7de6826b104ffc6d9d65c394cf6ea9526c2097d6bfa7472d7c6c6ec40dfede6648d3efa0dbef9ea6f46b55ae424ce240f25ab051b165f233767fdeaf8cd65a0cb0eedf6f271ad443447c324c05912e6d7c7dc342b380f16c17c63296fd2cce839491085a14a0e70e3719479b55b794a70c1a64ff6fc012fee9fca68084b7f556ece44db8093c2581ad7dbe2a7159a7b658a59c57c80a569a0fbe5677718f06da783a93a609ba6fce49d6e6210aa6222098908b43edfe142cbbccb3b21a6245ae0f1653b144146fe72bbc6d27ef48f7d3a680a7d11928cf3cef57a38849c35e184062129c1546607dc7482d7b60835c8cbec796963e2f47a108b526963e5d1b736fe8a6f64307cfb1dcfe45d4ad13df0bdc2b65e9f30597998259699b81fb91e7e0cd1166fea32fabeac52add389e19ccce8e3a2a28a6fdac237efecae9f43d17f142c50834de931bd1bd6073173328504f667b1761ce04f49d7e807289dd94312705212a7503182b6419fda63ca92165e726e1fc159c89b328f73c88d417832cc5303c67d2352ee71677e7ef5bc3a6b96e067909b5a37ab7053628ef2db327fe6d77e025b02c7df34e06a8803d0b590c0e484bac5cab380376fef13c2a0ac600b0f095a40eebe388eecfca955f1631e49283d7b63f6b3ee569e34d68400a1e06cdd6d36181599368143f4211f34f71b6639cdfbb8f325222181b40d78cf5daabc7377c5bf2e6f243aa0b2bc4d0dfa372da9b3e596a5e8fca741d136fc2d4229df6a79f5b1538bddb68dbd6488bd464eca1833a7685653405b90532a1c6046f7737ec68165daec1f0dad40433f798b3e90bbd3c716f8ad875115e7c5ae88739b8dcd390fb098c4ae38de88706fc9cd12de10de4c2fa9b212c6129d24d58a6698325aaf58c07efa449b068734fc91e475123ee42d06fc1460953c6a67d72ad1ca8139886b81e1a85798ab54d7bf24fa79077e38d9bfa0f897c2b7a40da2e5fa1794872af478f29da8f63aa901b6ca11afd09071c8777f75c64fcc89dd65dc396c75bb7e9a72d3dba8f1a564ade1367b89b5f3e924f50319e6f212b85c1ca07e09cf68716e8a6c1aab24e706a6d0686018a2ee417c9f5863ba71cfb5d8f29ec8251dd6756468ab44e6b9263799de9e3b0c8831db84a5924a7aaeb76affdd73afd9890ffde1be1af747877340b7991a5d0d6ad15ff2875db44aaf9ea107d85edb5ec747045a5ed1061703738fe3eaa369620bf2375a7a8800892a5a8b698bba8a9e836987f96f90f8653afd3775e3e9d6e67d4e12284cf47de561c03c276c5a0e104fb50664a988875533556d87521a7151082064a2cbc4f04d56cb2ca5815a4de7102907808ba6232765910cda834bd8ca1e98e5fed46412a89ec5b7126310409362379353fe756d1f30d31242ca9dffd3673f0e877fe0105c6be49e62287b748c6c06b7f0dba5bc387f1f21aab74caf7c07119fcc1a5509af80d984d351c68c731e0705723cf49ba5fd05ffa2244202eaaa161ceeedba94ed31b77208e831bc7fdc36100795d449238ac71684691fe92c0e9f4bebea183766a7f754b156f8503dfcc6f310fc70371cd257f41b6b1ba668f6e5b709c846f133f9977ac3c398239caa36cb4e24c08e9a3e69ccf05c865249da29304931beb1d8e8fe1842e542284e1525381ae149a70a9dadf4105b3e58cab2b849e803a0dca743d6c69697ffe575f142e1b345dc90cd2d9965733de2f84cae72d9f8c5fecb003815007ab697f3a4b9d3ed9fb1e38e9b02413ee8461ac5febf9e7b04ccb34a592739a76bfa287f2a3d208a125c5095b6d660419991e0279045b20dc1be801b18bf117ebbdcceccb15a15696c30f4d2ecca2f551a5b4dda3a3dda35d57203713f6294ae21c4c3af30000b40c70d0c226baf6e020a920d6d18c6a9d7ac440e75e72de242e7fbe41226ca584792bb37985fc505f8414754c5c8e44ea05d6a4bc588220bac9e37927128dceebc3e257cfb6b229b8897e4c99768c6137f9bedadf0163c203e6ca57760c4cca25ffcae0b45e81fc6292c4bb6f1d7fbbf26bd3f17fbea82d5b2ded0ef02abbe41f685b57825f57fe7f54d3b65b15067a28dd099c4df7d5f4ca357d850933001c2cafd8aa67e5e323929e8a78e0c4dd6a970bf9a8b08f3ba9d1104b7a6e01ad21f28da8245e64de35ba983d75e09be81f7cc83d5a9d772b662e164a512cabf1a8ae2e1dee628cdbd8379d774940492eec3666c41ef225503ca5b67d245c7734285cb38afbdc2180c6945e9f00c2c8be8434471be57af1b26bfaa0df753614870933f7cf7f168c29f4cdabdd8010466917831981fbcbc3c2e4860a78668b51ad6c298efaa037fa32bb3aa99002ce54fbe7a3d696d1f7abdac85ef997dbff4f1de3bbab8511ba39ff9f54dd1a6fb7bad1ddf3b7352418d9cf3af30b910a1e5ad5a8a882c694e2137a66afa29f0164431df4542e0e38a8e0ce803e02fbf05610501e66c2bd1cd7de9cbae12ca5f5a1542d8052d1a381f897ef1d01ef888f6d6d4e52fd38dd8acee67c89796b92ca994b15e281b7f7dd57f7ccfc0efe34bb3c5bcb8b3afa0ba6fdd970562acf296f5bec25398ef258326e5536001bb3589274510eafcf3b19fd86a6570fe1e029e0b6380197cd0b2e5a32490a22fcdc8153c7d130f391bad727ae76507c8da37bbd2a5636c2fab3b526317457bc2d6c976222d8a1fb2a1c71d715a4aab7e736781ed7d4a5b37ac3c91e490290b3b6affeccc269666e4893d003fff219b1f9e3844d836bed7d7c99c4b5dd2819c8f81a27064cde54095d61daf37c46c4617b60729eaf08998a737c2bb0118da731df8c61fb49c32021912275310ccfd5e53395643e61ea1489cf2b6bcd50d910ded0e54e12fa10f9ca7cab33526edad54ef49cb9e1c08563c8e3a5de9cd5332923be78c3e72fe07e03810b74ecc32dea4902cc458754ae0262010b4bd8cfca08b0b0c29b5cb670d77e2f8c8e57859caa70bcd742b2253338a4cbe2becd3141225f6e9fc03c4a736e81a1b4398fc55abc59438980c1de724db974c0a59d615d77f954e32343c1bce4896176d5604cda93d9521b1c10c9ee3930b0be06df370f8e6a7ef10613635b06faa0cb929089ca0e8355eda8ba263bdaeab0e0cb7080ba0eb7ae4568026faf9c5492010d6704fafa1d569274d06f535430dac50fd72be53b4442921ad1585070fadfd2ea82eaa9c3eecdf94c970696d3f1200784d0cd5ff08d11f64b7cf82c2c1b54e1203342309424e0389e5a5a6d677936908a0f091d1e54e0af4f9c8b340cdeb45737e466571b1603ce4039be73d87ef0a091397a7e19e1a901db9686fb2e2ba1854a861cf00b98f92a1e5373d1f390a4bd6e7d9bfaede1740ce8bea1ea19e3c7f9cbb76f33307463507adca0b4d78455606b7dbf667098e094d9117be7d2b6e38c6ddac174b0ab6f666e67988e6fb619b5d8c545c07cf80bf8275ae617f37298499b565b78c7901cc6eb8b9409e2c034cd3dcb5773cf62d99d2856fadd15799a7f96c320158d4ae51099e8b9350fcc6e2a588c0bf26aab0b58258685a1333306bc16f955707c1e743ce4b1a35eaa97f967f5b9c20e0d4c993b4c848b8240d4c9daf79e5d1a275ae0303a315ac9eab22e9aabc3c7bd7507496ed484126468edd8f63c5e6b8629413192bd40cd66e396d1c5781e224fbfa3a872fce289c86df5a95696eb70c022679ae2813e760ff3114b9ec12d765b3ef3d11a1d56e228276378857587cffe09b1a10ed7e854fbf539208725b11faac7c7346c646ac57702ae946f92cd478f7036532b91e8b7b5e044d9aff2951947391f81849347ceb826c3c2f8d43769297d82529ee16420f9420d5c244016256dcb833e151bda32494bd5aaa10838b1a00163ab06d77970b358e7e171c82a25b40e524dc6f91765d25bb6f9e9c913f14bf7f32a58a4531c29a8a66f42fe4a12e87997ba911d9d383ad5d4af9d1e2c036e43f558989a3b45c59ef45f8ae2ea1500139f4cd8d840d973742b12d5677666b034a8004b1376c5546e7198710230ab512880c2fbb438a2e511962ae5f5ffa51072cb360ea34a1fccecdc246e90b7a47ada7569d19a8f8f44895dd75525238bcd3367209f2a623f59e3236a3cfe1d2629b1591458a337824bd7132806ced6731b828c81318e4b0b8963bc64a5078e1569a7b313c985533127a6ef34f826b9a6bb2c366b49046211012df4db1f2a48be944573ffb509983a1a8576569cbe77bda80f949c5548f889c7eb0c68d4d9225d2cdc432dcac85dfcd4c75bbd5be7dd81f85974c459294be514239ea5b2bb1813f8af60aa187f27f2314fce9a1ffd7ed92769c50d6ac1d18f6f11706d8bef98a504c23f7ee28d4e04474592f5f590062bce4a1f83ece0e72a6d75f1789e76ebd998df5bbca5cbfff661975f6a3cc8240dd890373e806461352c9f2963486159da469c576221ca880d2a4411d86ab35af676dae8260fecb533d4fcf1d65e1d15f6d68277f46c59caf67bb36fc26c6382480d6c1c4db333a6a7e1a8d2dea19dd5ae4189aee6ae47fac16648ec424a7fdc6850e6c2dacce783a81cb81f658afc4686e7b5cc5278c02ec64b65fec24e06a4e82f3acd9d0fe3583860848ea84142669653cb7baf73d619febd8f06850666c1eba5ae89e63edb85121e4a2460a54982f93be4286bc62a582d94fda68d6fe829f25437234293df235b893f789c9c475b3bbf5f3d639536d076f9bd51865bb24cbedd77e6e061bec4a0876d7ef64ce77161111fa3b97f07cd0832651bfb48600b0f04220c586defbc9a16954a9c3bd5624bcf5b6fae2cc98f8fe842324fcc07641414f3c4d563a57896573198290a9df415b895c2c8ae36dad5f02f8ca79ecd81da7dba35cc9fcee780db58108bb66325e7dccf884e3e1873d37804e00ec6942171d1db64d5460b1eaa4b3271cf78c195d27c5fad4a5ff97d6aba4281a1c451c3350b1393a12ec95350aeea6fb3a8bae9d53397aad6c678ed7f558be9650119e842481551040e4140d72c3898741ccbbb46b39cc8e392f48c8e397d3f4d6d5ddbe3073d317c24aecb8e4a99d7509eb8e2ed27a2eb0efe0d3be578c893a800a419b3dee16d99d6f5433bcb4279d57f72c305b8293bed7928e38c5ffc42022a46039ca2b715a7b110616296bb35931ca1a1cd09ed9e71c909b33b81884c21531b26d8b5abdd32a0eb428afee753f636a2bf36cb3f626509178a34d69bd80b705888ce6906e4b1da3da55a5717f01fc80060661d2e20ce584b031b54da284e9783a9f748f790be93d06c5b8fd3477cedd58b054a74b31b5e7ee99b89a5eeb90308c198653c47fc9dcf3db668acc23f10be142dcb15a0d7badf5d62d9caf2f147e9b159e7905db1bff2cf28463c57f40f6c9f50650184258b937c48363ecd6e3caf2d4f16f3dd2e1250195b9df9689da9b05b9d49835334fe619ce3c6659c0ef148ac5ec7833da41e4fe5300670fd0a2d499fcb906476ec89f1cc96c6ce1b62c7bcb91ac7da09505804e302ac91d3ec02511171ef2b98d110a700e3ecf8d0e13daecd284b0f18d1c2290f35ae4fe6c1ea681c4e1db0e26d8bab48a6f075828227830d57bffcce317971fe5879b0927ecf2db54d18722d3b201eb81d18b2eb05ac2de7dcb56c15fad9fdf8efd1c93121d34748433e78faa98c0d269caff464ac0180bcb64b3cc2e37d1ee84dc78a531e830f7a540d3742f65d43d62d2b1172edcaa75956605a2a13506e86d9887820047743db9a4972363590d1781f96992de3d641c35abe2d878c75e90db77202d827b81ae46014d8bb599b71f5e5e887ac8f2e84c693b0971a334d114de16a072778618265b6a036167acb3a508b973f01012a2496dd5b153d8674a399ee5be2e52af8a8dcce8bc5367ff1eb4d7d2578c4736dad3726db2bc1e6c5e1bb5a6b7c333021f9b03f937d5d2628c80530734a200fae92cd4a870b52cf8886a6af2bd006bce8669e30c8a410a8acc16cdca3989957f74602f61a40b7edffd377cb4c4f0722562d90b068a6fb78d468517217b006aecb3e94428ea6d299b09c095ab944b695fd4ee9fc00af43c68e00b3c25e90a1fe8d505e4be2598c4cc01cf24ec32835097289ded86e5a1c37c770ff183a2dc0c226845679bb4b91bb3c5a3cf5f97a7362c86b2d099d410830de9d311fe91b336cad42e4468707f1bb5ce71673db39a8742b5d56eae1d35f1c2aa3e53eb5cb5ac15ef03f985816b10ded0e4d598c74e663ff3c7f66e0c523c28f323f8b3a12cf9bc8ffc33840165495beb472ed30b09e64ed75c61f43cd1d12f72e0555486bfc77d418867ac6da93eff6832bd26a4e261df46dace52b6c8bbab994190e196796e99fd681f77e98999bf10dcab1be801fe257ab2ff0cd5394ed475fe11fdf3c26154f8b85214519edc36067b8e14f945939610ca939a0553f4c61543ed64d19ee5797d2d9fe61b58f7223a4dffc2a85ee36f35bc2feb4e3eed0284107e6344cb7fd4dc28d2020f1fc3e56a2f3aafaf8af82ed4ce63ddac466fec4e735e5b629cc7b5666d64b5bf614304b5e386b633760116dd8834c63a5ef74ba1d2fa42afac3173788395fce54385acb36922859ef3ceae991c71ee2d4f82cbead9da21dcbc5ee79824a40b7fd42628310a4222c488564211189812a0210c7e18bf0197d55c46eda43d39c7bff5e06c67f8bc63590a42617d0de7e32980f9575de79e5422384fe70b5a7b4bd760ea8dd0aae374babfa15dce2556854d25feae8a2ca69f911f08391c8a6867816fad47874d0e5501c94bce3fcfac11b19baabff844cdd1392abece5f16051c6995157637f0755a6cc1500ffdf9901329db0a2aff0fdad8c6879d910892a5215bb3ac9d9e51fea914d832c0d5946e0c938ca674fdc823b518de63f56c1e1b6148aedb629c6ab0bff4d83942023c59f17ffec285f362a7fe314cec6e94f1d07b18f4e40fd31ac8ec3ee0533ef84b96aaae14fe29aa8e155d766c06f6d371fa414cd89a13d89861d203b26f1e4fca519456bc388f6b2dcf0e39f01a897a78c93970f2667ff48705ea28f02293b4d61c0042af4ecd4b32db659bae19a98d8d441f5fe8f28a75d58cffaea8bb0df19538b1b88f485901347f46bb400eda952ebd61544ea60e8dbf17b048f69146fcc85c623aa78c914d314aab318581277b7216a2ce863808c2a71df240ad8bb821829d3e09d21135f5490f22e1a47f9c719c043742ccc81bf192ed8cb14e492235aa4f668461bfe7486e844c1473b3c9f56f2ead9bce490edd78519a09bc6007d747506f52fff3b23d47f75fec428945d957a141928e914a4fc5680be4645f2ec9badee15bdba48015d9d0a51f8cb4295fb25966ca60095dc8ac38232ee90a23535d4eb995aea5a397a26efb07f9c49168d4b843c842cd79c036e3f99d697cb5b63d30e79b5c714dd93a2e5301b8b01fb195a232b2eb04f5771ff0fa78004076b4e139d11b3e3a1796af6632182a5b781b78a443e34264cb57f39464aa1c973e20461ace0e5e207e18267133084928c40dbcf8b74d260c19e20574cc29b959a8858ca2acc4332b61b280d0828a5e9e32def36f85adaa77a03226dc99b1aab794dc08242bbea30b85c50afe61f4e6f0724fe84bd88a3fbd480f332d86c57d48a34da1a9805751ba115c6d5fa625b910391de0de8e0c612e9a88f0a724099f6dbe06b2bed3428bbd12516e703bc7cd86c1989c52bb9ac14b442ac19955e6c707901fe7c9c1d25c41f8083c399dd93ff046559d522451151799bb2487d383e9e5078ebe9eda148e3317ba47c05e93606b8ae47c75c541e9060e901eb2a70b1021d72aa4cc24bc9c442745f044a48ff8a651a378294b873044be67e51bb241f8cdf7c5d95e96dbf705c59d7fb6a74c108ee69575989b277164e7df7eeb276a510a214b9d349e70085df0c23c0936fad9bb9554147049c6ba866b7328f50f80e57056f63ed59cbdd0298c4794c1339896fc2e08a6ba2227d194500bb0f8c4bb216d599819a865742c4fe26a994b12659021897614fea380346d411f1e0f7669b9bb2feb9ec4c0b0fb411ec1617b5e9c8457fc1e0fa67f9ef1e50a6653aaa90f5da3a5f6e922ecc2c2e3d06bfde035851600e6660f571cd463eb1f167c7bb5e5bf15ca8489d119ca88b46ce20d71c7d025c828d6052816bf527916b67a8f459a65f670a674f9ea1eff56ca4a3d61da482256a763c2e8bbd915d0287dacf2d869f239af475be5f98d3bf9a66118fe49ceb674ccd1698b8edda712b443a9374385f76d63d4c4f553628f7321f30cae80a7650f031b8a7fc5f5d36dbd03e14e2ec8757ea9ecae67f83f45d63ee38e4b021ff0af3fee9f4dcbc1e60367e9383792bf903b66299e175cce4fae66c6a57ee471a36c753b1f0abe278d1b7df3093241002c37c0f052f7e9323380e50965c44f0ee5601cd05047f2f6ca7bee23234f5ecd6c0fa25a94c07b5bb3d76aac1061012298dab30397056c5a33724c40b157e10e5a203d25c38be21811d28b86f08fcd7836603b74ebc1671bcdbb4b222e59149814e482b926556409e0373f2314e216abb694b9d2a72ad3b34c6c4898b95318be61fea83f26283853bf12622889e3589c99c7b6bfeb32d1308efac0d57dd9613e820dacc3df9b0b2f7f2a344fc6cca049b9b0bfb7313538e578ccd47301bf36758fdfcc69cf887f427dfcdaec4c3c0ee8b270e50fe59513ecb6f7cc01895632e4d8980bb37863a8ca418fdc0ac3b25a5306703d020bdf217bea6f9025ea12c608fcacb1d143748d96a7fba50f08d24dcc442060ca509e54054b86314c72d8b482b049c80d0139add118a407f7052e4307e9f3edd11067522dd4715eeac2b4958a82f7a039c498779eaad9b41a41d4b08ab21a03ed203af7877092ef4cc53055b8f5c14b360a37d080211ec68a688d985d9eb1c7a67b3dd12eca445ef917f2b219ca2d22885a1f9198284937f668421406d71ee49d161ea322ab67499e97ebc0985da13efbd63607ac45966a23c4dcd4d7354306f177aee37d1727f293e5ee67b263a8ff576b5d72025408a1f82e7098922f045ebbdc543b778b3cbfec0d0be37c6da989278fec860e909e8414b879b650467221a102a40b340797ba15afc644fefb384288cb4dece87d8ea0f6f88698c55a79096ce609e56ad248110745eeecd21633561277b7c29a3415e5b713a63acc7699d2b709d810d621ac97047a611324a12933cc59ba1738d87928537f95b045eb9fbeae1109077608eb42ee9e0446eee6820d2f2b2f70ca4c8a9f7de4c89e47dbb912d6d00ff7a35e7aab20adbde4971cd95b3b1c3f460b6c32680f8dfebe9a8e8297ea0dac44f488a291e5732ea0d7cac8589ddfb686ee47cd02fc274f5e8925e11acd993904e948e45674d3af02eb606183e1e18f0ffd4377d1dae357dffd87a2ec7e862e827401e3808227ece61c67d81fb9a39f377f0ff79eff215d37f1a9bd622e9185bd4b198139644359fb9b0bf5b44e68a94777caca1523440a70297f19565311a2e6086506d0bca1bc44a103e78caaa9a2fa6bdf85469b56c12748387da4dbfed2e61dc37b36bfa9d69be6fae0372705d702035cf3252499430e29a30cae67e1fad59653e282fe2b4c296d0bdc07f691bc836bd25f0a3828da6a90c853d996ba0a84acf58f6ece78e7f093f75e95b3d3b596980d0532f8480c9529216e0e643deef426f5c5d733b254417e20013a0cbbb2c84b22d13ca5195f7dd5fb463992e43fdd8f118a40653b8f46ca72a69770669e98efa6a9aca7a8902349ef49ce28ba9b283549e550db67507997c31e0eda94cbfc411cdb6b28b43e1efc701b3f00e2af75fb11ef4ff1cbf12bdd57e8469ffc1dddced09b453994ef1567eb1a875e393a9600ea76ad15d15ffe109052aa58f882963ac968698d11024892ed80a2a39dfa120e6ab17c8a6feb6b1df222ebd43b68795c778aedc12a1f08f44de51206ac41a3db4309f1b52f043ea80b2c7a1d83434a294a3e48360a673b9f5ada5c5f0c2cb821d617e702d52514a9e6fa0f8b6deac26d60d9d674aeb8d9c17013890899caf47b40d45b51548fe44f0add25eaf66d0d59e8b7582b07227173953ea6c6f56fad1b213bf1f6f7aa733b42067baf40694cd7f5f371b388bca5d3e95144c7671c6e4a660c6e4fd369deffa58a943c9d3714bcd9ad2a2b78f8a978148ff8ac008975bcddbf3bdde73614fd9a3638340f52eebc43276e1d729fc82dfae7dcab6ea336b36b7ce9f99d905a85ca0bf1deae28d53bb9118fbaeda4df0160c10cb60364d6ef13b1a71673c9c553464f8f9fa728bbe12a38bfa0be31e0a550492ab8c5c7b0753eeace8cffeac35255a2a477bf430409b31a9834d735511b5fb8dbe59960d41ce2a056feb53893b2a294099c9a3a08f8c62a9589cd31cab220de4816dd5d83f47e0c5e46fe59c84fc97b57192d1f95eb641596dae4d77b5a784a9e30fb27b4751274a8f98dc5ca6975216f880c016cf108f060929d9aa33c8d3e8ea8d7a993856f151a7720a254a99606f3d29379c092722c1be40d3d1aae8651ce0a192bfc47a47d3e88f0f2f7765c8fca070bdaba4e85eed2f384ffc86c675e9599a92e04c25718c291959096a1f668a03f4512f7e4cdbef68e3a112b2ea2e123f9fe20714c49cff9532621e85454df639166020870769bdc740d86d67d416637ecfac13dd65bce593bc3fcfa5f5ba6c716c4cef04fb3183a2f922decebbc039720771e17f7d6e3fb40eaadaacb51cfc30010f9aae4f298ae7af44ea98bd5368c0bce9de1d1c77f1e5b36872dc1734012bc4376a1185aa4373f6d7bd9c1139163d6f21f33c7ab08a57d6c9a89c0ef09b425fab436bb570eba184f5f5f63c0d3ed5aea68d7f7ce16942af8361c27c3606acf2b8c3eab58e77e6febb7b023730cff2fb71e4b97082b969239f8130631dd3d547f5681d1e62fb020d25a55539032f3c50a6f420ebfa07a454756f448cdd7f7bc9f123cebbce1e0b62d896dee4f9626934d0a23ed5deeb272059e152c5665a8f44a3da024992a82323ea028fb272b7850d08188aea7c2d2b9b42f2203d67e234d0a3e5183d8a36f6234964d38b458cf45383fc1498d30178b5ae59b4fc7587e13c7abe72025e961ccef98b51b758694a6783b4f9575e6de17a58c532735c99634ad627035c12f7a256192cd20000834feea5369791e6128d32c72f2ea11e288f10d61ecf13867be5a934c18677b68a0ac589c7af281251c823516744c3e9239a434a5d02a85fb94299d6daba07e55cd720755a0e3685085dc5045a8a5fa34d0935fd284d2e8874948fd89b050b392350f1b3c2fb9953550bd84f9b39ebc7436d94e37e54313a98d1e231ae359ce7055eaddc92cdbb05b10e3d69a8a24a3cb9d531bedc35c51a4f30d263618ddbc3b2dd3c287d3ef60dd7a4060707baf0239f6ac47296468d7c8754aed98b3671ef5c3cb311a12ee381be9dc4955a5d9c378796e3d8a00da6d47ef424a922e726679a0e571c50b0066b5db44550f7b458e262125a81942d70abc9f99c73d972e3fdf512e422e963547f7718ad2f644d4f9bb2d9660fccd9222ccacac2e8a0fa7077ae7abf3d6bc06593af3d525fa9e2c4046a103da4bb576b80b9cae055c4c2c8769776916623da61e494a863e69f7902805c3804361021f7bd2db4e885b1814300a9b930bf40b24f37585e1a15f130628e29e56cfee312475c93bf2dccccfc78beaf0a40e25cd5fecec5555eb1589c9efd38278d29fb2b51cc16f7b8827e522aa2396a287d55dcb39c39047e4dd4618e4cf8208ae9c6b04ccce8ea362005e21ae13b368b8de4afda869b176950e084535e0f4ebb43b337decc797e28c3f54ded182f006170a57133a7356eaf3afe31e9552f56f7f5c58d35ef0e7e72d8a75e27b2cfa2ce7f1fae4ed13c1730b48c0a7c2b8e3fd5e671adbe918c4a2f33d83c23f7f02a7e46dde05385758bec8c5d91a66a1e1dfe3ae2d34ba79d6da9d5ad20de4273eea10f76198bed026f0c4273f43f7845615a7fd3bc43c4ca858133ccc8cc7a466b1f5fd17f0517557dab4275422a85f6e37ca6e6001de862c9ec31570cf3fb037a9ee864504465dc0b95de551e68dd6976ddf4bac0c7824342f57b6cf0bcbc9f42c4c8067b2976c54873146c130829306722b8fa59c7910fa69f0388f4c2f87e012612eaad08740b0d8f48004ad76b830a673d5c2b70f2899ef7eef68efe09fc588cdb97210964d90501017cdf634e85137cafef13edcbf919ce7ffa9734ad670009964d6b005cc579f6f4fa5d0c467e8520a7a124803c5471103e4b398cffb322ced2a1f0156ec8c13102166aaf248396bf63a794899df82cab43a7dcca54d600b849c4db358d057baa05dc077b063ca8b2aa7700fbcf3efc99c1e0feadb51d4061b8c92fecff00810d6d6b7d64a21e6bd545ab290e0fd9fce258507482b2d6b1d7dcad491beea9140532b2386acc11d7d657ef27e1f8e841df2fe17176c238520f6822f56d32a07f84ae22e2c2ad0c23baa9852b68a15f7d9e8908410c795880041f771019b9024c3397fda6c90f26bf70319ec76d5cf35ee6543a974fe5a5d2943499d7861eec8ff5b4179506e1a75ddabac4d6fd952dd834e73725968bff2ee26b96902ed3d745dc15433fad5657eff3752f496c2b4730c0ce7e24874d3b609a73ebf497d7dcded1f5583ae0daae917d270d8d8ebc8e1d9af278d2fd6f01f239dac3f30b86b1fc5c824ba29ebb75d5ed2c0df8db62af146c1a41e9bb0872772259ebc706ec4d72a60447b46d3e6466c30a868c7e6acd46f78b7d3485856cb67e944bb116233085a3b0a3df4975853317cc9c2694e4b9e7a67b0fc038b278b6b63d0f7a778ede7d18552cd7daeb5f6f750e8b216d1ebc76fd4b87fd43314eea72d8ee06803c44f369083c91f78d6e77974f2f1e70a13aba24577577d160ffbe6ad13160d07913ec0ea0b25ef96eba20414f1acf923300baa0215104bfc31c07eb0b9f382ad0e563e2dd2aa0f893ce4add1e103c59a4a8ae88b784d323cddce4dc472ff704b875da58e68723a0481329893fb8a4a0fac32a54a47433eb83bbbc7698d7988a34ebd30ae386e94cb2e524747afca0c5997ecb3fb863b4faa269f116743d5a751a005133046e0d4f9d2cf040bc9c1da713d0bae96851329dab5972ed30f38cd875266b60f99e1bbf9b279546f725e6affe7c2bab304bed11602463caaa5fed886c7368dc9dadcd8a67ee378c27a06c385c0a9e7b183bf3f0dc14fbffc0835207dab7172be3311a150d2e407983612788cb23c1120eab258d66adcff0bbd1fcfb457339a720013d699a4168ffe7b4fb340a65c5b2ac2c43fd68a1a76e531b41b3c273f128a884a3c6e815a4815bd7c0f5eb8cc390ea936f4c6b6ba464f9c1e4871a47bd2a47b72a188a052def306cf426823b508d799de3f086872cf172b3b751c3a725d7c9a1a33437be64016b771997f452235e53ca5f58e9c7a431a1d1e4501fed0f0e49c2625ac82c089be0dfd3f5a8d85f501750a800db610588a938d4d123eea4594174ea818fccff0fe5f055e2c20309201f99dbf2f87f400591c855ab0b434e2cfde9d30b0d7c8d05d908d0089b9dd3d36e7853904e0ec3cc4d8b2809fabc8f76425f20baa89a0bb45a18ed4859d277e35e6fb95ec3342f263d4f8ff9be0e6d58b618248378c139fb3a874b1ab740e24b294cd6eaf2441db4599edf5b8b16ee998d354eb523521f9d428a1f37d9077d46cc0dc6d85d7bb82ea4d5ce0f2f2684d9d64c476f2f88b1c88d5e8a6a266aa207d1a9ebb3bfa865035b2c3ef9fd17ceb587500c150055a85f01a1281f507d22e75e59cbdc547faa5a120d529a8557a2c20208e1a4d64593d914d5cac0ff881f22168f524d82c750a4f51fa5baf63d4389762c4c4187296509f48f7610e1129f5e9c5da4c67e6d767b6fccadd9a9e1fc9649e4fb8ac86e5517e638754a20ea3ae0c3c10e9221506571aa496231d2a96863ee2adbbc1245def9813a5eab1f2ac6d44a97104494a6b7c04b6df20311b97fbf076b2c944ded99607445d4918b563d08cb36b4f6a8374f461fddc7aaf562314453e07c88163782ab768b12e4b97cdcc0fd67fbef9e310d010caf98a67b9622ee58ba68d7edf1dc50197149cf10352497b1fc378c13c36a1f089533166a81dbba342603940d9ef8eeb79ef50b5193d45416f6116971a5e17c8993c775493426ec52a57d8f44edaa175cc1f15d9df3f91848e162fe92606ac91edbd01188664ff30a8845c3ba50dfeb82075d35daaec17b497b338009e2e5f01d00f541fa2397aa63132e303527a8ebb1e3584c0623cb616bea0b50c80dc83556121e2033b1a1f602c814bc2df5a3d311297e79a410ca4c9ac54b35ceb999cc4ad16f36b5d86d3be19e41ced02a6189b924a10b1049b6cf362de9852bff3471a2cc45356ba9f22e456a3bd02019f86764decbd35d40d772da95f45f740f93c553535d9394cabcd5b085af98e95468a6e7e93874fd9eb1e66fa8d7e41fbc257588e29b3a28e94ec362e78d7ead6e417c16d47d628ffa15cbd0032af6c7ee6b5006d938e37cc699e3a47c1c1b05984794a6185af1477fffd1d95abf5f8f203e3327a188850dadb49045ccdfa1ef774c3e8c8be4f925fb96e95866a822eae3915b13293ee8994c16d45c58664e227c8582913d594395de710ac4c75463e17af79ccb094d5fc8d94017982ae9603dad77f7283a538da0b8625402ee4f159350c914359dc7707b9f365b4805745f005bc061b9779db57edf444a55466425d30fe9bdf1de269cf3921e575c369f7da0bd6f7210392de0ce378670ab9bda1e2e6b717a308519ce73282c392fb1f0deb0f485e7818a50ebe4db87d68d83d14dd7d6a4a9b8a882ec41e22e0a6ba8a16f7207a1a0f695a1e69a740997ba051771177d3dfa6991811e6332ee5a71b0d7ac3f296c61adccef077c902a58816f70f096dac95c3004a78e86478087e6bdf6aff590cab3ffc12b42219d1adf1ce3f69570c39f8b466971edac8f75bc4168c2f7a850ec3972ea9cb0a83e4bada6acf824d43bd2e16772d578c9b45ae12e474b84a2514d1c4ad0e8b58865a3661f7624f74ea02d8284a71f0c1901ffb724c4b86e34d5a8380982cc0e58eb0e5273844836859d6f6f29f77e667e8e96be49597e04cea5da85c1fe40d3f854c72399dd8b2f17488ee7dc38ce5418d27e80d2e365cfffd6273a5e18a1686caf68183e212c16ec46f8f48f3ad9cb48a053682a5d5b118ccefd097d568767ecd595f6c1dfe9df10563333efc0de09751d0aa379679e4e43650cb5dac3a8e4f058732454b3755a48942eac44c939b3a977b6b15b2fab7f54f13ff827eb11dc56572c99a49706c51566db6b425599502151b3db8308377421e8c1fd3b1f0ad185074f0a67fef9129ba48d949b72e0052126be5d0d5140c0a15528bd47512cc8d9ac85a64660d9b2074bd2f64e815de9c6d491bbed300637193c0f050e8a2136b880e1b078bb7d27b13ba9ea53ec432d8cc370744e06f24180a75029eef21091a73cbabdb9df0976b84ae8f41de2606adb8db5383ebddb91d11d43b981c83c47774e687ce9d4d4cca01107d8fe0da3619a97fce910b99a450ce85b58172b26ba0992d531e3777925acdd88eb250b11c68759297565947248288f20937c70a7dbf04ce92faf9addc1e210447e8f533fbac2c25e38bad5f2d382acb496c8adbe9aeebdef510243f4ba4c5153e50b31b4429176e490867abaf37c38300e426eb006f90d62d4b5614db5a9a8fef3eadd7a9488448a7b1a5cd2ca1cdd048d2dcf128c12710573fb625e454267c966d9409021d14b18ebbafb79e99182ff1dde81b6b6f214ef114a9ffe707f9ea19996f08f8835e4c47138931aeb9bf5db0710789cd0a6d3468e08b45b0e83b680962fc608f6035dd5e1b1f5639bd83df694fe8cf7d2a25c92bb78b2cbdfc568da97f484e769242cfc918cd172a2d2e7b8297f277cb7582fa58fe05fe03bbf3721098744428956db193f367b69cfd66bd44b6cd7df2021717f2b5a798fdd5fa32524faa6be0f047b41f2d724d565a887355e97fd1b5d41954a7c2d8eb04c96271bd5f2f1c5ce7ba2ff92d93458b1b8a31384f97d9c980f94a2f78de7e0543c6d227cd27666d06541c344defdff59c13cee3b2beec0e4984732fe686ea79c8c2804a85098c5d8ad9985d3388af3cf11fe5668553d89b31b3b1b4a91c5dba2611a62efffb841fba4266fc7a5f1ba9ab65559cb70e5c98dd8cc73b45d9189b9222f7a9ab5e7852a7cb6da1b0afe02dbae0c2ef6596afe73ca4de49410af15a8cce27eb48794914fc9e368814328ebd0972123288daf7a2546e029597a3d2e1e2466f166be907a4c07b6fc7bf1107f1ee85f07d1773d363ac09a3bc2a08384f70180df2cbb87ad442d06a110fdf04fe8c174c2c5cd2d25e2a1915924c67b4d86978c2a233289d4e89fe9e04759090fdb434d8d85502fa4d680310f1942c6df85c7f52780c231da4fce1250c16608a82f75a8d766fd0422bcb3e30288ba59deb333c07caf3ffde3130393dd0cf1f2880e2a32474f1be17bbe75176f1e32e1081dbba2fe3d9aa76d2f449c7368e6f6f80a5bb9ef0e3cfdbe6fdd6c5fa55f1a837643399ff8295b0601ff1cbf30f1cbc2a960abdff524161e7942066fe4674dbacb8971c587bd30b0aad52f2a97cce3e1a4f4f88fe269f733f8214846bd312335b439f113fd09639712f8a0a9b6e1f79046324cbf702234c86e571b19ef2adcda81d41d44c20dba0a0aa0e86e85112c42fde919418db361e02e3fd5faab9ccdb45a246469cd46cdccc4ef8fc633bf8cc3910d8b73435138e12270268affeb922db7c414e1795a23be7b7f9a5ef98bb0f2e58164c5b45de336b7c1f87c5de147d0891b953d3490f3f009da9e06e5da062ecec4d2c7b58651a1effb5dd73e8b758b352d8c47d3b2b207a19adaf468a966cdfdb8577173f864576b60b6db9ecd035a5693090d82473480bfa6d386e38572803b882100caaa227a29fe99fa5b8812b7aba81ae4647c4d590b74b450f83a6673bb3991f62ab032a2e739ec180396861df2e839768d4cc1ab109a1c5b6f53e4cfa1ba48e34cde7294faf358184cdfa9821d7ccc7c83e401e4e3b8b4915601dce3679fd8da47012f6fcb0387424c3bb9f0b3ff63f98431f1bc8aa1b874f311e39b3bec30fde6617d5dce57e93e648e5dc1410de067bbfcb0010207fdbdebc1fad9353464a2cf649fffb6069b9cb4f55cadf5ad9a364a0d0f089e2b1c1010b279d44e5ad3b1ebd2a215a5c652648222f7508223aa584863ec1bfb88a5cbc165752b1406c20bb256cda4371b8ffcbb1de004300361b43e63d7ee33b42f3689be466caabf0fcc65a29407d9168cbdbdce71fca03b71c4dbdffe621291f6ed8d392495c79721617f1b75c3c0b89f7b82f329d1d190a41b12c86eac49a9bdd02cdafc035d1607af6b690a9f32155539ae14fd8109faf260c8ad63226532af1472ef9619ee62b769a5b2899ec0548947410954029fecbedc4b906997183be813f994c171d17a91fa7e03410b234d1d0527db2db4c5dd7ba59e43fad37b85b071a0389a48eab48cac307c9e74a8c5b053f4bedc4c0cd3438bcd84030d0d53e2191a9901a8c35b1933f2ee36a449b1c92ba82fba777884a12bead229a8c4ea4106885ed6121c319d9c54889da8cf788bbc65b0347b0168e7b8d742294bafcca3c7c5c34b5d362e9c022f14fec1da659297d9039f9e37fb8a7410efb7e764a96ad65d5e425f8b1b7ad17b8364977ddc568383a212605d7ff4f7776eaea4d911d94a72e2f155a6fc7ce3f2d180ce9acf3684cfb7dcd0dc1c431fd14d61eb2db89c0707bbabd314c7990044f8847ae52a9fd4e779ffeddce9b8e90e821963a72de2aec8740a76a750227a254e07ed74af85ff05bcb606ac4fbaba99cb681b7deab6a21c796353a8fe7093c04632a0561f2ab637c31ac3a27235058dc623f144f383e65ec8518061d5a730107d937f24e785f57c1032f38aef84c30743ce909825b0a5a12a4da9a8f9be361edc086ceb1d8e27def014ccc6cc3ef4515e6c9a1a7275380913f56b273f69c51d5326c696045faa58607f84ed3988e3acba6dd87df7b4357e84a3aca7ab3259ee4e3312c6c1c53633bf03cc5de4702597710592d3fc8290d57248c4a58adca52094a92e456a1ff46cd75b7ef115a29c2e28a22bb899ef5bf100622fcaccb192db2bc405f470af1a73b801aa9117c64a9397953d40326c04d24e628cf7aba672171935fd246b481fb9abfa994fe4018a101d8bc280d2c42b57e8f9ef1daa849efb9af0818d1e8ebbd0c4dc11ce6bc2df7dc215ed769565a06a9c7d835f0b61bc62e93c7b841decfea9b7e4cc1e4e39221ad01f0a065ef8ae22367fcc84f007cf92c201dc6e783b20500104eb6d3f4b63ae6d85dea3adf798d826487395addd0c58b66ff84ca397cb288405cd29b77118e2569448f67a96f8da7f4c9cd3e0bbd24bf6a55e868cbf9ddb38c20cd878099345d007784d9afdcdbc40c642aa3e7aeb1d0a97cdbfde358763038d7cd2ffb4dc1265f7c4a1d91d1a501c5d14829d2539ee038c55c13baafb34ff3d249d8b8aefd0e310f30f831859ce754dabd4d131fb720c3f3676edf74f02685f8325edf41b6ec569e6418e6d1d5f9a42150585dc9777b55c1b09df90512e48943760a1f0e979473cbdac436b53c17bb98de5819cc2f59db5a2db5a6228116033fcae6c624187c23eefab6f9d1918a9907976a37e636356cdf7000f96eb2eead8ecd6d68137a1d08912588c5ecfbe9828a7cb7269c31f50de5d5b5c3f13eb6d16675b03c70d22e58f2055d54712828f7103ef6eeb565345cf478f469988c027f11cc4ae65428fef584b4b810edfb7828dd5c5c22bb1ef59809039700b40664066cffc17cdda084256ea9a1db93d2eb1808a33e847d226a071444a55a77e693c368bf2507acbb02dc0a7f8216b850dd0bfee9d9cd9035ca157b9d6e077a8b62388dec0ead669f374b6784701e56c3a278fd30feefc9af5fc7963c97603a64e8d8729655ee347685bac81fc2b18d1011369a03968dc42046043125a2859666bbd8464a182342da94f823011f2c1e38c1283c304430610488f00d0cc28953182bbf4ab1ee5e435249b0a3247420ee6334589ece91e541878e305e01fb279827c586557f6193ebdd18b427a5759b898839f1519666884d5b150d4eebde087293a4924fb10177749218e3c05e98449d9536663785c5f7309c14bd79d06e0451644dd2b61bb9471a4750a33761ada67a36379009d607e1d8c352b86ff2ead189f416031c492ef89f51270d843289249922e36dd3461091f9ae90d936b89b46d3c8661ca6a855b9c852fccb58e1608112febddf73af30758ab18143c668dd9bc9f83d9a8f0c8a1add123a6894e7c66f24ca528b1de8bb9145bb01708ab5f8336d27db87a378c62b2d6e7b27d0dc714db1e52ce1d9ff7d392b8c3b8de51492fca20b73e2c440db26885190efd5f8360dbf9dc01b04c394befef8b050abecb9dcb188412a6977b825c3c675a12366e253f84da5efcb9162aac63f57b4a48ce793c65675be1aac2755381193316c64d7f72b11c38fb38695474d6c39a60cf9680e713bb8eef5f98ee443dacd5a173ba266c901569a14ed7ceea3cc528f1685117b26d255832c6697acc66d472abefbe5ee680ae97d990727919a7593ba643d315dbde442db858ed027a506d5c9b01450904446aae7c126017a4ad7401191221f6df25387a5d8a7abe14b2b85df70b37bbeb9f1bad6610ff40c8f612456a733e058e68fcca995cc67f1241ac49034f7ee76caea5c0220b136a086383a05a948b55d9ca0120a3b9bc96f2146f1b767f39b259dc11f5bfa2c512f14f9d1410bbd99427dbecde5e224b81737e3772327828f16fd586f91be2b0ac05f8d53c934eafc72d57aee4cb22b196be082bcc5c7e6b79ed71626b6908438ce52111ab5037240d8537896ff6ab186c698c071954e40edb8bda4043c6733b3f81dc716f24759c5978db37b8ddad5b7c761fe257ef7cba58f664031db909fd976b31b2eb946f2910a7a5b3c066905b74b3f311c29aff7ff4e2c9c201a29326e934bbb80ff3797da1af639259290773f13bdbdc1969b440ca68c4f8a89a73cbd86e0b512cac834f7b241ac2cf95cfddbcc676453798ff98091aad74a13512f4a8fb1b3828c98a48f10802b2454f01fa1dd4e3e830197a54165ca275516c21f7d15c139c33ebed7089e3b6562e2018f9cc287c931567272648dd8c9156c6b9f0afc58fe07a240d17c6bdde3674458df534eac058c4012479f2ae18ee9dd0ee20ffc804d59419d70c77f3847402a5499ec5659a020ae1dba468198cf890344341d11897d7f16440c7201fe0ca2da6597d7a2b031be8a6fd4482dd23c90fdf8c1a886857338601adc87a649e90ed692b41903d6882c1c96a3cd300a407401eaaca32dcc37e922f9339df114af763ff4ca8b937308137a549c673edeeba3362e732b9e7a9a3d012b8e9381bfc81ea23902ac0a36139ef421cdfd128f7c9af6aaa5912eece76796f365e4208f40d022226edadb4f88b53ca7e0d94e8568161c9bee337647adf23f04e27c502b598e2805fd1ab0f44fd6e844f08300c900d1af1068dec7f18c5651084f74c120b6570f4bb6b662dcf7e0818b2656ff8aa159eb6e42b20c1623c6ff1a6a27905e14b485f3485640c75f6f9bc331f2469972f63ceabacacd24fae1f04c7b821aba9210cc0dea6fc0f475839b668602c0ecb7acb112621a084f8f463b224084fa6a8a2c2b40832252a803a1bda471f1451eb2d2ec45b23a9b0e6726d415a643058cf7189d4631d81eae89a48ddefb7f44ed0ecd9e36f627c19c3162d91255022e9f718cd26a124ad6d22ce98e2b9b66fbbbe9d93e6d7f230278ffd0e3f80916d407b48d741065bfb065b28f04d6b569510f5c0ba6c62c3685e585aa911ec1b2518db6b6c02ef6a1d5bc8cf8d7ddf48b23119ed30bef400d736b7345c5cab0df98dd559264cbdfc13db1f7c26a7466482811b7c4ceee882b5e54d49ba8ba13214b078cd6ca8797e2f92025e3b98070fed100be65669ad2a848308747629fc3a0ffff387de3134d6b7f6b79a1971d93f916f5a93fd51db3f9ec51c1e88c9ea3df5a1d7bfdcdb498543ef7d794ea19fbbea8a9b283f4789d796450a328eecdda39329e9727b3c479ad4cadffe9cf76e48aeffb40edfcff48b12386ddc99ebcdec7342173658a31a551657af78937eccc27126e6fc1c2d9679389946479d1e94d667a2a9a617cfd23abd0cf8af1106476896da61a0e3581ad29ecdb3551aa4a9aeee8a2d95613bc41990f21d6cb677eb9d522ef818ad248256c22052c3f25c883ea9655678a6f19cbd6496ae3a1df0c28c5cdb677bbf0d0d83c087ae3c1ddbe624c32729ab244519c7992a65631d6957f85080d223de492c6c15eecaeada67e42f6f80f344c7bb67f650e572a3c14d3eb871d2b4b5453592897b8cc9beb44cccb1900a33720ef2d5ccce9027ce35c3519e52aea41293ec50994d6d286644c61ffba5e8a537ceab0b315d3b068df5b5e174106484a4e92ca2e1bf778408a1269c0df4e85d9dfabce71c7626ef9256ba40b5963e69d73712e4a321f80c130e6052f368037471f7a260a4a71cd1fd36892b3a41a8cfc6aad0e84d9516a6fa940cad23ba6a95e4089efe6a1dc62c2635e66b7b5f0a3ccdc5d59505dffff70527041952fc3c6ce9038732778a947d9950a93cc3eeab9cb50de53959cb3c9120c51658c58d0e06bb90090ae0cbc999a7f7740a8ec0b014f6cf514227d2f983b460328956b2b29f8cfbe3681eb9ef8b6afa6c8c17a60d0138860077508a7fef09736eebd19a03b7ca9e7eb747fee0aa6680539e5ad4221a0ff806cd2ead2d4eb12890f8111fc912fef944a2edc09f70249cbd5951e341233dc72d6aa4ee1b33cc5b05acffcda0bf1b74b7f6f599aeef8f29d9340fdfc6545bd66ad514e177c001ba18dea45bf6e4fa8d2cdb6d95c9fbf84d49e3e3a6c009a20b3ac037621d12412a2de0fad9be221db6b082dd658c027f47dd5a7bbd26dde6bb3643d10a7993c725b75f2f8a872b0144d1be4895a89379fdd4af58a3f5bdb5935b86136b180647a2aef054cc2906c023f8465d61637d7a369c37324961b35ade75fb0dfdb7437b7b4dd98e8898e3989e2d390bbd88c8dd0763c8652d323bc4af7668c681429d3f28e43bf6d47254564392fca7cf94d4c40a663b83e388f4d1dcaab124cde96ec70fb190dd7c7f26f96b5d078cdadc34cf3d81ba1a29e9b43659163000ab476f4e836cd20c986f445704186d59ee33bfcf6e5fa9442ec2a76553f94e9721fc84bf087c0fdf40f10872c683109690586f8ee8fca281c7742cb1f469cbfd4915088c648c4369cd68d3f6505469b0979791c113f0b84f22e8e57d368a8a7c1d914c9b56fa4e87fb89870e3a7513091996e9ce6d47083228cdb0eaed03e216b51df1a79ae9c84c400c1488b226d989abcc23264875eabe8969b04c48bb47ccb85c1ec5a1ddd6a94067dec669cce2d058d555c2b1170ea82d5653c1e94b6a117248c94fd8a0b558b72a2ce11cf37832ca60da506adf52bd892730ab380c425337059e3fff5be9034cded9806098462f7e35304f34270ba8fba2204da0bb1b2206401caef69040a26387fa491f7221b584d944948e51772c27a75801dad25bda8dda50d3d75dd25821a5c026a32922018d8c198d23c56c3aff693a88b9e1c8bb0ec270c1eb2be6cea18eb133301eaf80886cff6eeca498520994518e9c7658afb69ae9098680f052de879b368d9537bf48438e6fcf845986100790e673424f7507b26b82024adfd3669b6ec77a18c5ee60b7913b7c44f580011c12dbfe951d23f8fbee57f3369681504354506dc6517a9a992114579a3dfb277d5ccd6313728fba768c7f56d86440f67f094a97c450790998926184d2f1916c60dd74baaf5a608825c6ac5443f3922a6c36e924da5fae87ce727e5ec15a32b61e73c8db70085bb40955fa01c3f206c36ed18eb7b93f7ae8839674df42d81c1ab87f4604b9fb7b5cf52f0a12627604b689215ed16305c58d090ae0815809f2d32328af9486e79e9159762cc740b1740d23b3bef0b324ddad7024da235ce240720d240fd32dc20d56ba94d3ad2f514d895535dee6f63743b0027331b210995c7f375c2203aad46f38396fe75fb61a62f87ac8452b5200f50b39c1f0379d8c37d37ce603735783c9919abeca82fbf2ed106f9b7f2c2da4c796c83dbda7b1597fc00b3e5da8529d3bd47fb3d95b7f592fdcc515499bf99fd81dd0187d1d94f992f1f9df30c6f8171625edf5b8bebda73a7fcb3f58acb7490f277bff52e42495c7f252bf673ed917a986a7197cd75bc38ab937cefd1cf1a6276946a1bfd8b79ab6ff99fa215b343045d6a0fde130bdbe90db5f25450014c5b2c4b3488c25c8a8ee1215f08b182d1ddc452de7d2197ecda4c59bd91dab360dffcd050f55ff8da1ba3da75311ac94ce632a445fa9ee7962508a86892dc9fc00a4fd779e16275fd1a37da105339fd16b392456ef0a933f8f3919de57c4bcb6941b7fc6c3d5fe93877feca018e8f016886d1c4c80bcd7a219b2ca606f9e5dc6d0d79d66928224106822db43f3f637ccd950fe8870a529a97850188050905bf714df67bb6bccf60970537f263e0f5dda5a043b023d21f24d1ed1a4cfd717f1d2fb365c61cec3dd84c2797e92d786596a3d64a8bd5939676bd68ead56eb46178f5916aa8686c1ef03c1a2852fd9a1bcf500e9f781d011c513b402680bd947c3b25fd671aebb3c914b3a16ad45afbebd5864b2d513e9049259f9d0765b1330c89b336a919fb05bdabad636cb56f8a444af5950638c0d0eeb0338433eff7b6f92baa6db921708f1d315f0b367989281107a11fe576eecf5901b29bd8efa0817974a7cc84582793d212af3bebb69ae534b661bbbfae568d97dccfcacbbd9efc07985cd81c5f83a6081fb75106d5b9d1baf462a3e5514c7f9eb1aca1add04aef068c0f1e3a5ae7fd2f8446f75907a05d20f1a38f5cd26627959c639462e2e1677d381832d54e3dc9c7505e85c2b32d4b5b77771c7bcc01b7a6c0810568e00234bc4e66fe706072a08819b736b155e12d7d700681f9babbc317358620d0dd31e9e805fb60f0d7f7ffbfec3b2afb13647b16f6cb95f26ef70b8d076684eec5587db17d6c1a111b42d5ee018835967fff2bbb3b172b8f9b5c4bb6610bbeffc6416faa8d620ce6e54b1bfda471872d5d20eb4abb8daf5542561fcfb4d092554b1d7f19561bc8ea280f8794b47d1ab8eedad7de42a42658b294fba7e9071bd2de00f72efde96c8ae7114474ab67f77aed62d57ebd286fba19882e29f875acbb8d6283efa1b2d63354d4c0cf949c472148936b00d2bad94a5eeaf581f5d19433219f9b50b46e1c5530628b0a7cc037d4c36b37b1bd4b0f270f35a3759c48a4d91c787a4990ad5ed827c83d63e029aa7cd28cebae22a547a7c629d0788ffc87668891a6da6f0ee6fb78977a5f7562b9984bbce00edce2cf094147a3901880f4465ff10a4e86c9919fba65f90a01aa0a4f386536374cf3e098c1582426f75ea081f7849f315d269661fc4aa35b7973f0a98e15830b041ac6441de7a03fe0910e72d09ca1ce59048b24cd64bf4c9ae35c248bff14cf137053ece6c220d2b10b2922016c5c1fa853cad8ed532f830e56a4f25279c2ded060accdc67dea1cfe30ab4ced8c8185a69a1ea397bdbb8cecda0fb1ac7c4aa45d2a5ad9fbee174180595c52ff7811c35372c1ba45cb700cbbb13f62e8274565cb61b2e162b23a873f531aace411d4f72e08aa98e4aa0a6666d35de7823da4cf3f6d8de024a71005a3ddb3a3311a61a56f9f2b52210c72ba9269205caca2c365220a4dcd5a7048957b2d935d60bcb8fb790ce43855a448477d539c009ce1092cf8c732bd8af55553166c387dd6026cf0f938fa1933ad857b30a3e79a87a9183a3e880648dfe0560dbe3584eefb5e55e21da2acb6ec64225326208c7a274b8d1146050d6b5f20075eae1ad29d7422e1cbffda2f500089d6cb94c4c987eb3e51dcd0494e643a6ac5605f1fe3283e08e6456a07dd603fe3e484883ea908699c7af4e8332c4070b3a7313d3d98d2c9ab0dddcc62b0dce8b9f7dba171de0514a2bc5743f84813bdb79fab52e07c432a0bcd7b61b91793e2590d19c1f37a790a3468e8449fbd1ab276af162b6a21e1130dedea3aed108c3694747b2e8f70b19256fc9da183a03c55b12db832ae45c6bdf9a2aa3274987afa40d939d3c4e38ff1b446076ed5dba274711a772a75d3a5a8fa38a672d8679eb0b560c7e8434e93681b14c06518546a19818306d7fda822f0a24684a53504af0251d6ef1b7471d07efd70bc1ba35ea029eff847f074336612637995aebf1caa70f4e79c81f2184833f2798bc3238808578f11d87981d9ff0817eda3283a399f2e847256e30aad425a31bcf34416ab64ed78fff619bc355725781425d180b8d2f56bdecfd941959b321b268b55505639f084343fb831213b62a8319073ff1ed2fe148c14e4cb6a2633b1872c667a83483dd416dca9e28d57c3ab5edbde38b553b37150252a14fb972b19a36c4c8e9d3c164ac532f542319ceae92561ed4176fbe7780119e23b1a9d171dcd70b25dd73d890eec2ec3bafedd42adaab0ad444e5f97a112125f9245096eab1dc98109d26bad0aa9a5e827723dfea8610a49fea8e4286a419ba920164749563030b08b93758d6e80808e5aaa1bae6e598b5a41505147d3513d211f837481d374520f2ecdc9e72c61a2639753a869f7124908729a292ce3da5f0f7ef4d4b37d0fff02127219a17db9b86f1762524f20eadf550be9350e2123c7435f25833ed249644baa9d26e35a9b6a92869ca5ac280e36d61a77c9121b0d41cb9ad68c6af49239633eca196703f197f685f65e3f330a7518c177a4bae21353913951e2592910f94b6a57d7577cc19a4529bbc1d1cadd7beab4848b448c57fb45fab8c3d15cbd8a049d600f8e0b85bc327a8777eb59a54bd1be5ceee8b1b9d630d02e96a5991d03519be301a5bc89510bf514856fb0d230e63cf23723ef093eb362c34a59957b57ecfc36318cdd672c540bd41dc783f5aa9da0c9a17667422c1b8b39c18d23ba29b7aad07cc782865b21a05660a8ea1355dbefa7a43d3dd4ff10d898d0ecc0b40df9675c5e8402b062c18c8a459fe292501c4491601c1b04695a0d90df950830ea534522430878b662891dc44c3ec9aef46f4b17969fae5617e5a1a7367f3e5a579b2cbd3bc14328e10b9398ae43e683c46cc6f70a6b280df80b3d4476dbc9db1c5c57217c6f861422c8a388200fdfa6ed4d0c0b741bbdb117d24079da55b1773182d7f26573a8df456cf57a737b404dd1eb85823ea926b4785e3eab36e3263cde350f2c1749d6279d18a606978efb055a502f77d2aa2116715c7c02d3f8f942e7ba3614b79f7cb9e4aec78dcb79e301203e1cc8284eee27610476ad95352102dcd6d885fb47d0935b1cdb270d132fec9d1ff248ce42d354d5785af321ed382cf1055585a06a47fde4b95d5c0148fe52f8796940ae169aff64d48a16d78ffc2006906127cc141ea8a85138adf109cd9f192dd1363eb90e6fe0bc1e07d99dceedb76182c7982dd2e6e2154df19cd902a024818914e5f182ca9f9060e58cae36dea367958e3f55a8f0d6d8f17ee968659d7f3f8990b7974926054b4e5433195d9c3b0c4a499d03263615226c26c2bfa106fadbd9eee3413fa0830d1b9c8af691e1cc62a38e0b7998c587517bfca7f0c8a7ce00170f67f93e8cbdd2ae9ca286c5b69e7c7936c8b98cbff6dccef4c2b0cc7284a6f6cae42daab08b3121904c810e45465ff71f65d956dbf6d88b4c7b1607d8ef3eb9a4bdd0e692ff3d439dd07a273695151d48fa508dfb736ac9c4e558b4aed660bcc5bb02ddd3b286173ad351eea4c35e3e3014f88cd2497216ad8ca973adf8cfec4cf1317a9cf5e4535e948ee59db7918294987df2969cc0f2bd5f29c9727eb349eda1de2f1aae56e285f2b6b12f8c6465721beb22c8e36151c3d4889d1d114b6bdc517f720bfb606283dbdd9f0bba6a365f5ed2c402d9231d17831abd751c79fa1054253c5ceb8aa72215201ab68346992ef44142e5bc44b2ebc3fe57a4fd0635d1719488d2dc57369b8753364787bc06e942834c04a45b61662196807c209e6c918579daca53c9cbd273e929bb971247125ef154efbdeced899e97b1534d0f8622234db5045ed8d36f3fe7ccd23f65fe3f73ed1345c8c810f121ff446aa9a77c30a738247fd286f3bbc0e41e8490e91d00c31202d81f4bf7588d87fbe32b01dc104805326500217f563432c1fa1c636b0f6051e2e221c6c2fb4b8b7a5089f247e101b6720a9f0803b746a37b28467006e02e84354dcff106bb61f5c8c3d700f3f577ee77f710eabe7fdbffb7e537b1dc6fdf6bc2ffe3fc4a1a4564d27e6dfb299825b25d064c8d22a07cc601a23938306fdbb51549d4f48d090ebfe827bc38c81478583f8ff88b56479bbf8ea434241cb762dbfc516295be7fc3443e932a41c01aaccbbea49916b4a60cdcb2dc91c0091050320ba2bd3443e5d18c6d1b2f93986988498160d09a4b846cfc6742d1073848407e19b45e6d734ef406ef892c92eacf4fe6af3f0c8d5d9d4f8acdc67cf03c9a15aec19a105b1c861a48a68fd39fe1798403768f3ad0e2d86f3fa4d4587e7e631137e2b4dabcfde715d955cd0ad6c18f56c588e94636044a3c12d360f42bb82afeab2072bc114d0b174b256c9fd56024d85299c07e5ca1027702e58afae27bf623c460276dd2333d460d224640a4a5735056e2fc29b7cdb5ca6b87cde763a9f3000350f3913e4bcb00debc9e85a2107148c4a1a8eaf74d2a82970cbf04b0fb6b0097dcb21bd0271e85b9476b073932a62a6997acb51a1c7dcb81e961c8c27c0caad2ba05bf4bcca317d77b2bc4f93061901e889c764dea33312a390504aa0b7c03d9e062b891318aea9cf4515a99443396d2bf93b096981f335239b57ad6de411eb3083d4ec6c3495272b33cd6513cbfd1bc8721ae97bd0e2940cd3bc650fafb0b0a3337c325e4ff10ff9bbd16f7f9d7c235b34512072450d9f7fab0ab58bbe5b22d2369aadb6799c2b5f5320a43f2eed9a6177ddc884c056d5d6a9b41d753ae3ce6dfb3cf8116cdb37eec2f46a6aed26df20cde3159e644ace2eba089f6439f19cb3326267f2de6adf712b5bb374dbd3a84f0447dd75b0dacb1f0c65f23e312d27f2d716e5bdc5e8104daf8893400b344f4a490b85f440758c30e43e1b8e03a2044a16c8740c84a595b1bc031df8d3037c70ceff007f01782f380dbac96b8360cbaa6ab9a4e8a91214f9346ab73cc299c60923958c8e1c361efa4d79eed407a04a21721971c2ef9895962b720542c5884aca461754c4f61adce7c80eaa01f842c9214d4abbab60070cd8b354f882fd97a5f32ed452ca31ab7422e31b3b350e45b5b7ea4b4d0958ab9a97674d027e91cdeec31836294fdc0378a85f7865da49287e37e1fcbfe3557eabb71e0ce4d8524f87c1a887874b06eb1c36dc45c8a3d958fbafe636d7a714ffe202a57e6c2c010703d6bcaaa23c0f993cb7a2cf8bc15f7aa932e17edfe1b9f52ba367033a06c00ef5f253fab0a6b368d8e62b8d484750eec1a0169188c779fa75b8e55d3ccef3e12fc4cce9f4b9d09af9b7ec5fafa7e139753ad284f1abe91854e0d2c565dc1c204d36b2f24907a4b55cd4ef65f03a30645c92fe9755f9d298e46f30be68af1fb59a40dd6fa1dd879f512f232b5622de70c63c53579fcb3e784096589242ea1f2035d45ee3e13c23a42c1b139c412b6392d9571d652ef164418ddeacc006885b57eea27692933f6ae4c5176bfbea1aedeef027d24c3f1cfa8b543ef3b086969188be54c19bbfc68948d224e2021d3da38c25ff26e3081593cf2b045b1f315a8c2129952dfdddcbd3800a7eb9f0a2bcfa3bb831f6f5ea8267c52a59e45739eb58d0f235ae6ce2dd13bb95b243a2d877b3a0c3518cdef471aa77a1013a87af99633908e88f0e35d3122a3137303b76a9ded0d1d34b4e3860ef811f0a10690a0634d34cf87b3fd07a2b74a657519d72c48eaf1bc8f7781484eb0e2e0a786dfd1cca1b977024539009841e57f6e23c0cb645044fb864664011cf200bf694d151791c374de2c97b257c081fa46c2624ac02d39c0103df198092b6b0281901840cd0700cf2339056a2276885c577d5397d0b20d2e301cbdff9524cf9031a8663ef09a9d2338e3ef9e5a4f575783ccdc588a572d46424e4964d72422e149a12f787a456a968fe66931959153426782119ebf54e4d1734183fd593cd3d9b64f2de73f1b9abdab83f4dc5ab688ddf29480471b33b2842128ab47a4f0a6f181eab3af49c2f53804014c5ee2edba24279d1585a455e047e27c686a40b971116e8f1acc5df35890202844d697994982d35b89ffd26e68f20d77ee9ccf83a202d8bcb38c8cfc80f3e6c4b4fb55d0e18bd030628fa7052ba72397303a832f9d34d1d855ee533e2bb53c2876ee75dd00b311a284a317f57553e02127775b12e5e2baa9730927ae839b16a86dbde2be4693eadb53b9fbefda07ab9c23edd77417e69edbc41bee58e35f001daaf12da698c80f2962889bf655253a52356a5a13b6b922807eee61d7def7f36590b03a7c13772e7fb1c3e4e1c398f9d29db9589dc180388b1b9bfbdfa48112e11747755bceee70f3839253dca89ec77055569e392413a154b5f08fb4aced71f61630b5106d15ea3ebc2296e746c912c49f394bffeb5de917ecfb93b0b4bfbb8c9fe7d79f827fac3fcef6fe5604434127b037f17b55a0cc745f7376c11081ca926b1ddbbfc36345783fd1eb4f22878e395e9c2d2ea64fccf0b60a70e848becc785918bd5909d26e8fb75f614fc30a3a5eeaf9600dd7ab5d733aeeaabb07aab5b3f85cb20c23d80fcea0073ea54190f63cd25bb3000f4f44c9fae8a7e358bfec3c26e94fac797e0ca4587690f6d51e073eb54f6764ed4190218af7559f37fd3e12b99621bf81c6fa22f0d6d0b78dd85b1449769a8aa45e3d91444967406d950db33e77c4fffd148d7f7ccff5b691284e315e8ef636e40ca18f28f20cabbf2897a7c73a05da11b26595f7a7a092bc03514cf42b822094a0aa793fcf68da6fea01f5c3f3b2f523491261b03ce63e813507df5e8db4765ee5790f965fb35b08457eacefc9cea5909221864b9e8c8221f3b6ab79402c580aa1f6f4c49349cf7bda725c4f6e81742c91a0cb5381ef7a342fff32ed89ec5ba616e33009d6946c93f9239a3c62c7a2960dd0995adf1f157d67083c83c0d10783d45ab0eccc057cade2b180826315a25b398e7ea86b3d9710e727538b0e0159fd56cec57e9a28dccb759a2a8a8f4e98e7a3c3ac7dbd7a17cdb611464f4b7442194a53a11c9a2f7ef223243a970f46e248eb1d7ae251b70220b642aa97de6625ec7390ddc9de2fe7d53d39541460ae8cc2d285e207c71c961c96415440e0545dd791a3f618f4b0b1d9f943a3ef84c8da2ea9090238f3b668e2b0b2e0dce571b592b21ecba3a31f0a5fcb8c5207bd5dc23129689b56b990df53f7ff2d6d30f9ee06d7a12114c1293463e57514a6868e6f3b3d0395f1bc79b61c6f83df212c7d3cf8e3a41fbc3e07036e02b09d0f07cabf5a51c579e1573b7e08fbb7dc307468c9802ebdd2be0c3b62d0cb2d271d27d1c6df1c6ff57973ad19a967f1d0b9cc36315b2d09aac88464ce327a2ceee9f60049ce0dd75c4a27ce404df681a9bac48805fd1874fb576450d9738921b48f2a404420c0de236e3fb9ff46e0001b14f218488184327e959796a9d699be3ef3c1d365d82a46656d0c1f34828c9a1c9ef9c5f5623930cdbc56b87681d885d4a02d0f8ee46c0f60ad1ea4136b71f0694cd5587607e026ea1458e00f4c899ac5b8824c57d063d9f670cf65a424dd1300630a6b2e193fbcb878181d56de8b92e1eb8fd9894776722d69b9b9430f1e94a4bac1d4f1b11b56816f7c2bbf1ef60efd87e58ea4683ce8b0d58220209fc56d5d15f456875504496ed54baed5f01dcb739422965ae7ef834b359b4ebd82ffe5f5821cca2dbc90a612144afdb643aca29ffe187d12ffcd767286ce1f731937027bd522f6136de036e0eaec8c927093c863d69a136635d574bb17d044ed398559c425705cde286218b0c7f34d2fe9020aa49a02baa5ec881f5fe81e7caa48a072e5675fa928242e183eaf614a6836b281ca95c8b652c6a4edbd98e5317f9e48beba0f7c36fb117d14abb59b33a9461d91444ab7e1a2d5e92fd8eab774133f6b8363c540035afe05a2fa06ae8b750c8c4e02ef907302a26feed4d24f4762df74bfc12948ceb9f84cbc947ff991e16cffd7f9fb371190f9229d7c17ac793b3c8f12fdaa2185808e2c80c5d4cb21167e5d24a3c6ac399d935c11bf82325ec2c0c24c02693c158b1524cf3c4da43fd21577fd7c2e72163183b9b52fa2b7e1ee7c3616fe299ac4acc634418f092728e7a7c0c686592b4e87799fb481178ec70c6c087ae55e3c9d28a857fab5dc0052bb74d895c68084e18cd816b50f79ff0c3a0b78d0ee377d223648d6cf8ab43dfac70734ebc4ccb84a6495e4d059c2d0c1ed3f5da214c9c67b844710a94e92d38018068f0a0f424710e6ea0d9e7f54b4f56c8e25a5963e5a7cb1b3772e26136411d14cf58bb7bda8bb1bdc2f81c986cbb452a0d1db77211974d431cea89a8876d2a75f823fd10119adc286540120c7996f101bad3effab8281f4f8ec6915a1ac1b632730e7f7d1c495cf453081924a0b9568c6ba08382e57318d9ca13769a0b30164004f9bc51fef79e8a3f094d14d7197f3020fef7182939411a769f84828f4dc1a1981e75d47dffce71d0727b5e5950f9c909213bf91b69965041751cc90424e8c2053cfe45baa605bb599c1b55f493323a5e77977e88262603ca7f9f0d011abd344ccf2038429140653839d72320b5f9c526b22b65aae834f7dd74e14f7eaa89d818ffc6766afe160f90d8b2d7eb004ed3d8db4d9b8319874763f0d7d312b96ab3e685c40a64ed112c7d0634c1d2aeb53a5f7ce05942a568202fd31d2664a6c533e5c12c66fc3997dc95b78d944cc4dddb641a9a012815f23a23ab4a05e2c8efedb9cf7b014520b319f9b5702b5b913f03626b0d5d4c35c72c61a2ad7793e13ab9af183bbb82c3876ea1e619a79540ac176782a15e9eb8c81ebd1724cfb63166b037687290e323ec693a7ce973ad6c7de9a51c291d0fad8d582f92e35e0f29de3d3c4b13f22177e50dcb144921c729da6313003c193a4a6e5ad6527b0484358cd7cea08c5394ebc7740db844a31a2cacc19047be0e677199ec807c23c70939677f0b8a38abd3c20512a5390217882f5d8b860316d5e362ee2c3a74b3d3642a642c15614de3692462974bf639d6e5bc6a5814f95abb34e2004507e2c7c36a2e6249023f1165cd2a3feba3e79e930be66e4ca7cd72119abd54dd7f914a571e7bf27cb4bd30c2d644402817268512ad48e98f5b8e31c9f45a17b4838cfc885f1ede8bba5f39d1fb88f1b20bb4fc955c4bd99e307d228a834893db1ffa8d976f46718e6b147295c5714658c0f2d670e503411beb8b49b6d2161b8a83f593007428cffb5d8a1150aee8aade61af0e56f094b010c401e0a945a76058a65db0aa0b51df47e3fe14caca22ef8de89da2047c5c7bd18ce96d2cff43eb07e0dfa06ca840ee6c9ceaeba8d4c41fae6b1b69b922ae86caadb7e9099ab793a59da29a835760ad6f3439ed03d5b12a034fc87fd9281f189082789a9f27370993f7ee4d953c1305a1c68cb031d81278794be9b8e6b24386552db0bc339f39bb3253eeb657e18741c64c6344df97236820c6c4cbe5233bba225dce54a0f4cbae6177ab77bb09fa5597b7b26abba4e77174e475c9f526ea3b9946f9aec49f387835504e731cfd1456380f8009d1f7b7703f900886699562e756dc0921dfb7ead4e3b51a1fe8196d41f2ed388a88912fdb2adebd4ee59f9d076cff2299483a12100fec9c93e9b0a80885afdb5d7d92abbc7efaf29343c06a8b012c545ccb7c232c534cc52b210bdbf2ac5fda9365d8c8f9ad8a9f3dc5d139de9fdf6c28414e9a7bf33202cfd8362a0a735040e56c9a9c2b5995af6abe230033e4df1e94003e5ec8136f016285b414236eaf29acd48eb4a57cf97e50a152ecf9e886775c52ef009945a8a201e69d8521f56b7f6b2979e64f1a262168a1632fa4d2aee71a1e7323bf56977a43126821840308c6325301ee8abbd90655a208a0f6315bf62a098e1589575b07d937816fd8bd1fef6c58601a8e00ab16ed353cf604b5c26a5584be4e4d83ffd7dde0ccd6286e3d12f385768c99d4ad650ed1ac6dd445751019f3c3a7f1777c5598d3ee2f4c95e17cba700b3782674318ac7189917e30a7ab40f818bb61ec0def58090c09384d91baa3ff2399572e8a5e623aa51898fdea80589b99aa6ae90216c7cb5b072f625fd73b127d6eeaa74c118e7f5afd904a386a3aed7889afcd9ce2aa92852fbf740065fb2b54c78ae24c2579d8dc46cd1e8f89e68f21cf53083104a12565e916f902a377c66ef618fe59348f39ded45daa682d35f2a82f5e7b31e922953785fdc713a484b66046816f8ef8a3caf19edd630a3f3859e2d8bb2eed3b340270becd018ab4be1ffc6c03c33087feef571c4d27dad3c8b70de4f95fbb9e410a4785371bd0bdb036913feb016683b2233cefdacbed10a69d9e9ea88a2d96636ce1aabf81a8231fa9e0fe754adf5351825942998445323da4d4595fa35d783b1d5d93e323ee837135363c6c03f3cd6b087e42a9fb72490ddb2003249ed252a669e581102a465f01fe7d0e9bed66a02f1a437371b9d645536a222734a0f5caa9cd8f944dda79d57f4794118cc8db0bb8575cb693d2e741eeabe18cfc8ecf10980a93fda4c42cdbaea0396939db5e0093b51855d877ea23dc7192e9ffdaaf5ffa2e3477e6e1772535e83cfd398c688c9852f293252f2a5fed9a5b99b1ade7df777cf66fa73d554b2323960895823e26af777085c4a055e59f6bcf60ec5f3e462d583223422e310254bf5b79c2aab4953ce628a9fec60978734b4b983966d174279ce1093545e73ca12735dd1921c275e67e92fa40f43ccdd6d80726999eb7efd84ac5910766a4b7bf4c5266bc6476eedc346f59c58341b8cc26a2f23cf06549efa52e0290bcf8506e2d562b4311124150a08339ec40eee9915d5913bacfb60fc42c7547128e6ad80d2eb058cf24391b004ad605b22540b848d0ee7039a247fb0a907b075f7da2d903c4e2b335a340d9ba1d85a3196d40b621638d7b87544597adfc3dc533438e8b09ded7d6972328ad973110f9418a56e5dde385c630ea13c4f77a58e51b3c60463f7205a8872cc4d3d2f12af30f365c591dac2f210a8ed02776c288a83d8bb0a1a4f72bab44be17eeb30aacd5746d9b2223f6737aa7e055ff39703dfa61d38a28a2e7b41701f837340f42d078d86c9b57109bb61a33b7616ed3a21d702901597a621d1f2c9c3a9e8b89d77176cfa3ffae2778b4ffe80daf10978279c5f5206f72f39026d2f44b58de670777f6d3e0bab8d8c22129a61046e5dda90d5db1903654d8ca1b6675fc08df859541c77c1957d89909b2f98e8f7771dcb54c1b1ae09fcf2b263f09007c3000c661c528f470c72488e470ab491b5bd631d2089ca702b5b44484b7e12e2846e4b4805ac7b67d40191d42120c5cdd45d0b831dd654d0ebb44d71e57955cd5fcddfd53c148e0d53363a755414497feeff29144ee571d3eefb9250967fbd54d2a6d888490566fa0262c0caccb4be81d79fbacf719e7293f786fd8ff528cc3be24b7cfffa56f53fdb7526ecdf6dcf20ab95cf11806f0cbe36c6a1db3ac691f84e43e47cea88aac6052d5d3cffddc09ca5a40820b0ee6315e9e3af65ba288e35945b65658bac3cc9e58896dc7c7b6caace1a19a41185c9ef456aa3627190ec53bc0a06c5cb5037596e578134607e07f2734be128b5a38ab3bd486f8ca20e96e2020631c844110fd8c8bd656d4a80599073eefd9e6445486188d2f4a082efed2a473be543fbaa397f4b0181f96a849c97562eb7d8ebbed90a84908ddef4fc2ba64e96df29b0b87ed9bf08cc09845925893b6fe810f11fe1536300d18c57ac3084d73b9e17c1787846f94f8d15ff871fe09018d1615da6dcf72b9b087360895f267b24a8c9983e0679bb47b458113e1c899febbd4b5506af4205bdf560097084a3604137a2af7144faf05b0152f0ebef64e5b02133c1884e965648a6a48c670846bf943e291c3c78a5311a6b4416825ec53f4603e0654289ea351e16957130c30e31e8c886b34a3f2a993206b7968362f6e5579eff8ce5924626c6440ba9d7862dd50ad809ba403e8bed4cf3f6825e6fb3334eb3a13df05e4826df37e4b9e01a8a42c13fa423c17aa015ec7a8f5ebcebac433a4ab80439a0a20e341c80fdd8bc3f4ad1726c642f8896dfd98cd5a3bc44065acb9b9d4d1ca599408d5845ec65641b8ad3db1cd189b06c17d54d61584b67da1e976a8d4acc2d88a499ee1c7a20f920cfb426918fff4c75ed7b3b8db10521b5a83e56276d85c85bf888f7f282cf60064811d34f172494d8acacb3f8c85ee617573a99ef6ea935146e31633847d3ccb787d382fa41e23d13c2d6590561f6bff47c5631cfe902d44a9ada6164f8d3f5d157c1bbdeeb907f7411f6e95bb953ad36db2aaa9180b31ba5b2070a6e550505275be03d6824cb0c9f9d32866673769f38eb16a066978ebc631cdbdc545791c24080dca3abeeedfb0b7e5e71d486ef494cf98c99629ce20ad64aedc496edfb40d643dabddd915da78425cc751a46746d370fb603fddff203e4edb00cbaca91a559c35efad779f4e6aaf836eded721debb0aeb8f693fda3598670be92c94034de6a9f373c97a73d477134b87bc962c4e3e45b2ce5e5d31ca349c7a033d02d140d60ae8cafc1b15c36a02402156e333063f5f78381970d5e06d08efdf961f82d33c67e858b1a55c57852aa5bd05d0f059b76eb78f3b039126d4f7a32270f9c982adba92c310c95249a771216655f82a77df120c1ee1c74189d1212c28ff5c5f95110f67ac3266c1d79543c77e6ffdd859d61cf995b2d9e8b5bf4c129183001b1628e49b427990cbb7eff0f527b0bae7991b814f10816274817e937fb5760f38bcbae6c8058bbb0ba8ce444c75a163d33c35a60384f6f6432767412538a2ba915927e9c691988fb0e304378e84cf928e178a0ad29a2b47abf8631df06fcbaf2d22c43edaa631ce93e2faf93374b4e07861f578e09cfc6d582454d6924193bd0fd00f17c78583a4f821e90833ca2f419ae573e05300c6831c29c08589c145dee912eb5752b20c8edbd3da23dab228e13770a8b30e20dc33152023a1d32e6d732bc1d6ce0fbe0510fc1867417d48503ec1bd967c4c60be28b3d5ecc330b04e158ffd0294732e382b9667cea6c5826ffc4768d6d557f0137bef8f23aae77ceb89d9f57b327fb0bad6d7cfdbc965d9371de2ace2f73307c145924961815ce1d1f7d27dc0436461349799018f530b8510b9b683db19202f633d71fa78a9574c3d97d17b3cb6e5b3c6fd609a074b1c953c6947d55ecc8e5172f06efd6ca7f7118300e137eebf90fe45f9c2b086e4e0a4e5bc1a2ca4d55223908ff3303a5151de571701cf0fadcc4eaf9ffe5eaea347913caa6baf533fc7f1ba3ae3f1cfea8ce066eb7b1ffc37d99db45e49667430f6d92d79ff1cf74310e3248ee7a4c4a0a9f39fad2dc5bc4f47bb5ebfa1b77aadb7edf88307253d812d7b7222caa5d13479a5570ac88c9b12f0166bb74d836a21289f9a96a9fa99d32077bc3a3cda676b8fa1f2d53ada6efe32e592742901f821df5964862876bf23154889d26a0a3a461478a123925311a51a1fcc4e33a17f71cd15939b27f5d7c2bacd18a74f6b4649e6fda037f3d577fd3b6b7cdca2f4f7fff673d92101e7bd3ed77824424816f90213ec06a5153c8a246aba5a0494eeaeee755ed30f3fedc0606faf2ee1bb34c9343bdcdb45410b4ba37cd513e140379ede352fb31440cfe139a94138999ce87f2a06621d321182730e836d1cf504d7376f22d967826362a701300b880cb5a6fc0083852bad2383c2420b5d81c3825fb5a5ab2792dcacf6c8599bc611df9837927bb07d7e49e7069e8d0c5d81446e65bbb50714c3a5102292f5c4808113b28f8e6f7b133ce875a088287d8bc47fa9eed92efa985cfc307a33faee4e4f0c3925fcedcf92f7915d4d92eaf3aa66e28683d2a7cc942de142025f9eff376b2b827b14494373de922eeacdaa359dee1d8259ea3fd3d299f36721796493acd349982c1c3d32df9a8ba7a81a99444471fb9538f7023958e0e3f4b56c2358b9fb538c9bf57aaa06d4303ca76713698c44a1cbfb9d97b21a6689c6d4e1edcadeb5946359a229f8745cc3b68973d463e72a88b509c7afa9f60b25962ebbf3b8297a965169ada1ff5b156c8ee1acbdbaa0123e74665c2ce97ff3273fe2fad25b11111d7ced7493f0d227d4e3a070e8c8141ca1586de758a6e1bf43a8e656507710961b08cf5ccc3a542dbe19732ad5bcca64e46dbc52b986a0046cd582a5885291d4da5c1e5d58569f39440bb8883812eaa86bf5864ce011ed43c956d4c6ae5ffceed5f9b606a1e9900cb1f901c1df9bceeeb402bba2087f3e92de1ed49734996253e69fe11a3e5c2792a8838013fe566731cf38a1e3304d80a33874484c1b9871e9ea1c5772f410c6f5f42ca1c5fc217835ce8a9c5ef273a39af99fdaf94ff6a7f544948ded042e6b799539d272869fdb20f2dc2388f7adaa7c42b30cfa14f66a1069968e7da9647270f8a3dd3f9e09b014168a56e24b4252fd725ac1090c49d8a40eaac8eb8c2c53a791951a4640299141f0c70dd1063138a152a5e427ea90608f46f25ab67b327e395470663afe969a67b1642908de2c208ed889b217c946981f57e2086f99b4b7ea328da2556394c704c611f0624a15034924548b80e519df07a66ef3b14247a7bea6bcae2872c35402c83596136b79d147a2a0922ac9a44bca2d83d4271e6806c31384423a479a075d83f253977cd0366e1edf38844a79835eae2bd9d5d3f2e77461862efc50469d3b4883d316d532f1247666fe5b6810a20b8762a073b6b08347bf74a4533621570440db655f5059aaceece35115734c5f8d481e27dfff45908242ec479ee284291b45b5f1bbfc55f885d1cab096fc35aabe9969e8cb474edf21a9e48af2815146a51915ecfcdbd673adf60f9d1bbf72500092603d3f89d12943bdf3629c8fadb070e9bda32f8d91b000541a541ebf82a582645113d7b9ec6f2e77be8a0e98756330006e1f96b8d289020788c3025b880399a08b8af84cc1922853dc4ea58d731b0e25fe4e626e9fe4fc86c80dd802a8dc6a06b08d86ba52c73fc889d2919d3c20f922776467c0213c658d5ee208a539e79d8c8cd38201c5e513acbf286e266143f924d1ea195a910666f6c4af9c31faa65c7e28c88a337853fb1f5dce69e82ba1388447293ed6f808170b52543200f3fcc557c2bf08a0150aed50ac256ebec125ebea1cdded3fe963c03d131fb88afef0f4d81c2c07ec4218d9fba1c069ce5dd72a34d4eefebbd28e49261933c5ae7c2e9e0be5cc5bd9a0a880d0feb70399858b14844f645adc9fbe6cd7f3f4ae60f734f222ca46b9a4cb2de9f2896037a5e4346e3e51470e339f20126bf5256efdf85a78cc2bf9cf97e50a1dc0a65e8d0d27d4f4fd759772fb8c6e356429466302687bf78e6e345d4310ceacb78ccdedcb2228f8b723300836655aad6df96a9d353f077a85f573eb88e5c5a7ae12df5f6914d1037c75a9ea615ab2067562accfbd68640c0e1ee6e480745bd7b5cd7bda75bf47a1a2baf41b6cb54928b910e633c453b4fc72441ddb9c3863062b656202fa67e579e5ac3ffa19aa95d09fe1a491d56d3f2aa8d1583556121a0488d713800d5042e5229bee8aac6082c6cee4be69dade881b966cfa8f800bdb04b7d54cc400b614067c27008ea3c46dc850f68b0ab76062e28a8d7cf96a5d76e0c5dcbc34bee7b993479c42ecd59bfb8e5ec2fdaadcdef7190504718b3e2cf392f8a94b230387f4fb329e29c91ffd18764854912fafa58e96b4d5473e9da266bde4521f82f1ad8210129b53ecafcaf629def5967607d9d1f9bf342e2668e932b4721552f416f330fe1c5abaae1c2c8036f0effe29fe43c4ae307de776b79c1c0197a16a990bedd1a3a59d7bb906c436b7d559b31eb7b28f36c57b7d0ce82d45f0b07c274fa0d313c95e6cd3c6714434daf9d25b96ec42b4e42e0b23c793a0c3a5674d3099284fa5da04cefc34b7befbaaf096fd5c3bff953d5899ee2e867200a351055fe1fdd0167ad05f093f2fe7bdc6dfa908c7d0aa9c4796dd8bcafe830e26c87e8559ca81c803378cb0d68e0a65f9c1375f29ec6a8e2e6ae456cf2de625bbfb17addb660772f4cd77f038cda6a733250a99e2056780eb8e41b85ec2f8591766ef4b7514afe6b369335059308ddc6ec26f20b70e5ab6af0103f2768525686df907ab80428107fd259b494851c7106c8be4c75edc507577129366a4b6d45a1ccdc0e6798bce46528a74705bbe51dc0883353c86e98bce08430f86208c6c8011113a4948c1d5167e1e574b067271c6c36ea3491b9470e3d54dd13502a7fa343070ef73394d5d3bdcc1f25120cbf39959af5b4580dd3ef0273d4f3c6cea6b4250ceebec416d71289593e2451021bfbc0c68ae0c899e85d1f547041932695293d015606ffab3e35b521db17b3f40005c58b856f110250826fce19a857f79a2d80cab7bf94a4e5c2295ca04f7d61a488ac01fd0071e124ea829f307be51b0071fcd2b0e6cf83c4f35c693911ce1e0dac2d03e8a57c43e15847e78300af0152217f8476c08b7d25995b4ad3410cd2cd28f4b0d16bbb27380247a95a61ae28022d4dd3520d88ffa60a71252d8fa5780a9bb3ec9dd96f03c034b14d0c8499a754ec4bb3303d5d260ec1ddc4387af5e1ce3a09dd5d90f5406dbf9c21295041a89e89239d38f96845e98876164be5592fb5f9b16e3482edb9dc9bd2d3321f89e8d4c2f50f7d94e263027799acdc07ac5bdc3e7fcf4a718f406ea7f6f8e45b79396ade3c0ab735e7baa108a13cdae98eb12ebbc1f2d4a8db1a2f7513890d928e017eed479212ccb53aa019e12285c8464ff80f97102622147d94826561f5708cb95ab592320b2183034a9a44dae30617a9cd41a423d587d8190659c1c05882ca6e44dae875589946ef102fd687c28b7608c2314c69f1c87c8c386617cbef9726429725dd6eea76a0050f24d97043afc406ee965ee7462eb6ec57956709873187ec35019f31f6ad8207595e9b7dff198b13463291e4b223874202f3ede7a75d1e344882a157129f95e52035d4beb637c3f4c036d2698827660912e67036d1d66b78499dd87f63486a48a85c37e4901f083ece1fa8c80492f8b338c760a83f5f532b675d8ac7d8bf6b08034ddec6ed1318df1c706012d4265e2469e1e756469d7a502f39d35778082ab6a9ce4ddec5fb8a96b112c49fa5a2f6351225213d37fa87038fde05d6bb940813dc9628ca9a772d764d58658ad0b6be3229186bbcdb45caf0201000f3fc079397d31d13cbf773026724cb60330825de5d04cd33177d2047dacb6d67ddf108bbebc518e849825b87a5e35297bb20edc46905eaa9f77c6d2c16b14282cb39370a6fb741204d9a4a793f0863fd8be3be41ff130c76e87d50270d6bb20976f99563b51d573b058be60399852d98cdf321503ce80dffda1b7731be9bdfe39a87fd4704527d0b434bbaf4eabb1327f1c205f93125fec2a134b1fb39cbe52d792966b1d6d36bffffcd3a48bfbecf442a95ab846243cefd75c0193b2596c05e57df1d815a5b10ebd1e2d42776eb0f01ef951c69484b042e733a52c43a2c7a95ff403b2df3bb915977a6a63ac4cf7e907afc9dd4cf5ff9061999928ec81e3b563c6adfd1b696dc265583c6fc306071b64c40d56fd8186f07ced68f6e2f7f151361f7180bf0dc23faf0c139ab957eb5f8a75d8ef7b8ad853a580a7b97654da5dec2117a049e22ff3d72a9fc34a4d03a83132a569ab8ef5ca0630f9bb67336e08f398cb3fbf4c0105e2a30be8b60e68fded9b85a9a9314ea5a01bf42ccf8a2ae6fa20fc70bd7c85d65093c31a1a0b06d418bcf4390fa50cc0225b825bba41528425f57a27662c5c193257315589047cb527a6af5cf13432a7727b84de5bed98c1ed47d35cb654e2824399c59b2300134a73e516edcf62ce212438332149f015712ec585636e16a7648238ff98fd3d7592133bb348c2fff9670195db65735b5fcfc92e602058dc34d5365b57964a2201ea3f603037c3f3364ce2f11097e81d03d6b39c9d4de54a51323a61a226317928a29eb6fa6b11b7642b16a8bb34419d2167a55d4b787d5d3e5242e0d5bc4829a7483ba0042ddab22679f99004e69a719b3f2e0a83508e22b67b16d4ecdf08806c54fce59677b4c8c28a8eaa6a24e6876f8e1d661e8f301168e1874d327919ef79dd5d5b4b7364f1931f773fe3e01ad0586e7b950e625eec8de6c7a15adbb922ad99543e6fe4b782d0be0aaa9b5045d6140590dca38b3175cbb0158f2e9ba038e982ace71fa5f7fe44fa6edd51279711ec521dd01b0031faab39b0e1d3833e428e326f3ae3e2a929c02c6fc3345d6779b5ff134f8a5f95b03ff843c1eeebefd50882d70fdeb94d150e3a67a807db1111f59f2a57582d158b08913a9e45e736a31c363c8092675d1c3c1746f9cc6be7346beb2c41712ea534440b1c0e50a231aa158b9c2217fcc1a7a1b4ec8355887e7c3f35eab6d02f7bfbf82220ecea49b5149293dea98c997a9848e19d6ff651b4c6db4b976241537c382e999c6c1cb90261c72da0f3d018c6f1beb19cb7b6d5c939a5277c743dc27b90fc6233d2d9d5e061b3568c3da3ec6cf07eec74051445b41d456c3437a11d9b19d09176e2580512f6d84e9dfd1e75f24dfed8fb23669abf1d1d5c0127ada71ec7a7b847658ccaa36c6a93afcb98b0c390d05d1006a597bcfc817c763658cb2613f6910198e2e2c821c642cfa162263cfae82e2efb8ecb71d0a6bf5e64ac03d3bcf3a3e3cb8ec8dceafb53b7d1d9a381b3cacf3a619fa7eb2f13b7a50b2ca3b582d94f868936be6ab5ffca96b87ee7d44031a5132d3c6ab7524cc92da38e87bcc1def0b4ed797b3fb514eb66f782f68e97238fa03360256e71e23dac33db18e5c98d65c3ef714e977e9541e797234459a34b8786de44fb2971312f7c99ea675040b2edeae7253202b0c20da3c5ae8435a17f79a29aba2e1ab19651ab484e96b716c2eafb9b5f0c9f5b9ab3baf8b61a324caab09d1e9e9e25dab9b07cc3f70fc881e03549d89020a09f311388dfe373063665eb0678bd3087c74c2935d344a12dda030af3c1530bb6feea2a5d57acbb378ca7797ce8ea40be770489f3ad7c4ef3d132f3d9c6dbaee83a05da74add6bfd37c4f11d501f6a0d165be99037ba83012588e21667b6d62175918253f36b95796a0bf277163d05ad916a0741aea8dd524827db6a6cd2fb4ac7033be09c3ab3df4d0cdaf6b3f5d29276620e16fbd310010c2087701ca405d4d26a8e46549f195b108295e69a2cf3b7f7efb9cb0010206b0d6cc0530dde4f9041312059edb62ab859e131bba3f36f07da585900a21f6b049961603a7b632ac093cf6fc180f9d68abf9208e18a73c7def7796a2c4a1154a03316c350c238493d9d329533e6deebf750fd05c170649a61be15261a64ab83c5119164bde50312fe0672b36d3f93e2c60b61d7715816818aae72d74be3e89e179ecd01770a1de937cad69b456fbb20a66781091eab094961df491901bb857f2ef88de73bfc2ee08ab8315b1c9c49dd17cb1f625eb5171dc5790552b4669b414273fd5854a86768cbf481ab8cb2611b521346fea6252b5ac73b4f09fb604db8eb1423385da038ea3075eb830edf4d6d781261ff6c918812aaf5eef0acab851bd916245a139ba764ea88fd4097178371fa0a2bd1d9f0a681330ef9ba164cc100bf695631fbf32e765c4b491ff391b53b8e356652b81e98f22dfe4c17c7ccecf0fd2e23b7cb252e7196334802b248fd1b3240676ac75b01db99d5637235b7502d6d3cb9bfb655ea5dde8692c1067b0a76ddcb6fd5c4cca32c4eb36e4f1b208e757b9e8f2104c71e0c8ee26576e52d6a9a0cead83152f9741f814ec557da1cabe05e13b85af8671d96ddb47b8302a5dad31fa70d984d4d47f6f96fa479b2422f1b5d8d019eaa427ff7a1c22f5111efaf1a9a7d5547569a02807a743cb0dc32509c4db2ea71410b659978a2f6f7c65a4820a8de6e31fd926c5745d00f4fd80b2ea4575e644b089747f652402453b2f990a4fcaff96e904f81238487a1ea59f21f15961f64cef36158b7d75c0236f0229a47fbc7b1e687cc5b5ab7b373385492107abbb8469e750772ed980a37bd1ff13b495f7379b15869ae48470156808497eacb089f02e8f3cb9847b1307bf6bfc6cae807f53305dc6bcb5fc4340479c53215c8e97e2a10d4120b69f40ba1584dc3db56580070b085793d0c63a114aa2c9800ea51b5bf2ecbe8e1c080aaeac50a4f196ba53ee2705d20f096c5b236ad9f83c25985d6d442127b41852b71b0125f9527907fcaafae0d50e8d23464c1e81fafc261512800482f9c19b4f198574a1506999743b6886661de8c99fec8919d845e773dd8269e973f41763b53aa982c9bd3f2674187924c3a007f57cf853962bcd53153fcfde33f130560ab3f07169d8e73c1b6f3b422725fd4022c82547d65f8ddfa2a2711c23af4a74c13066242ff8723bd40382a49f883d9f75c1183231255427fb4a07896aea7871fed8b4397b81461fe3134cb2a998c736121077312eeac570caeeb7dafa2122cba37e9851b53427142b094ea2b126a6b7f040d1abfce43719c3ea41f9ed1eec01c236ad939faefd83fb927d0eab8d56d7663fe82ebbce168f3142e8f5883279216f0e042e74b59e30ac75d3b0ac5dc8988c73048b521c619cb9d17b62c99c99386e5249719b8f2218aec20dacb186eb3dd1e7b1ef41695e60f2378ac8235edda2b7d95058ee8bce5fa5b92d27a920d43dc15e349e8f401342de6b6426fa9a220062a7b8adfeaa9c58589ab3ca63067761113be23397783eb698719791692b745465a297bed168c1ee35b74a42b93bbeba997819a4313cffa544c3009de4f1cc9ce96d7ff91eb4b8d0f1d7c8c11a306267a0675afb85932d14117b7db6f41cd5344e24191a85bcf77101d87e7316b50109713f5f98b7d22e6d421ca8f8c6c662eaeb9428264451282c838ef9eb46bcf757e5eff20325a8331a0cc5df7ad7ef3c7a658c374f70d6d1adcb6090e5af26285cff84a622f9338afcf15c19a794f21301c2391e0879bebeda52c01889541735393db4811f6a68ce2e5889232034fb1a0a056e1917727e46f3b5df6d077907459158d0512150fdb4f88b9f72edf89f2f14a658e27faa2b2578144e79f692d21f24b790b5fb6c7b3ff5b9b1731052d0f21279c6496fba79a2050c0cf21b64dfedfd0be13866dd85ffef148d09182b330d136f725a456305789a889b378e553e6c36972892956b847e0c30b61d9fc27d8c90145476e5b8dcc15f86fc537e79622a7209ba17c82a73d3740b7494704244b72b6fbcae3a559a68c6d08ace70cf41576ec6810cab957171ee7a8f04f3677a15ada610847445f68785d43f885d4b59882e96732f1867e53b176ffb81630a0d2b48aec9fb22dac9ea9b6993e028399edfd21b2d6e1962ac19227db12f750811dd54cf5578f084f66b286c4e7c28efda681e661b52067f63f66f9b8b7024dfb47b86e291f1d41767d698e30ba1eda82ea89b6c603494472b9560f3bb5788f577f7bf754fcf16feb666be69f51e2bdaa40f5b81e8688985f658f1cf020506dac15e0276b45721025f295b3ab36cfe33b858ac4d6f4208a9743c2e0eb4fb627a5f3cd8aee115c8768a68ceb170c1af1779c70f89289e5e9b677a4b4423586be5759cc951a7f3e79b62436292b54eb006c48b2e4810ec271e9db6f26ba1ad59212748cd97006fc707b913f917ca4dfeee5d8c242bcd835536eb160a6403f69d94b625ec28bd94dd63e7c96c6e9ba8771d877f23db3acce15b0ce3743fe063cdd1c7ab9e858f03d34ca88edeea6cae7043883fb4befa9b4c5090cba761051fd11f309b6f11c39adcf82523cc79a84f8a49abc7a95a1011f7293f9320243378ef6605694ffe223ce8def9f3ec878d2265824166eeec969dffb8f19ebda57f487c7384b35b23995aa2aa501f25a4bf8d2898a8bbc5ef3f4d33356f4b926b0edb2015b31a0b75f269bbf12651b1d60d4d13438c5ab3ac9347349cf5b6e4868e58db4e2bd7dec417bd299e8f8c135c841ebdddc3a68cb06544889e41d65fc382acba499fa9c0ced60d16013feaeb9de355d5ef029838783226e6b7636fa84af32d33ededa6ef35459f18c85c5f21f870d577ef5fb71db5de418f2b64a10e78e713f5965cb8a6c9333dd2d492860c615a37f5f85a7088286130c5801d989366c595fc7812e2a9400521501943c0e8614326db76d2e056d2e29230f8911d1f2d775b4bbdb81abc7c6496dd8d7e7d95755c22dda6b9a893dd9f2cb0e7abd5473a63875fac1dd1126d4998b500933df0805d0c0944ec1984c16ed857264f30464299a0ddc7e9980a04b516cd796f303ffaf2a9ad788a89943229c67680d99d4516cf39a1f5b23c49ad79fdf02ca706c0d6b9125317f97d944f3e09a6fffdb3f47c689708d3886ca1b807408378d2a065992663d181ac708a471d7dde673dbc178521b9469eea9258ee681df9ccfcbff4cd0f1b3066724ba2edfe000eb6fb75d01225c42b6d1168a100939af6801a04b9f5e0bcb6352cbe704af1b6a852e1a16af38bc684613e85456ef8d977062982165b3b7bd3ec4b56b0150b0942a321a75dfa6fe28a0dda30018e3a30c131d0b7d370c2f37d9a99a87b2ab088c889704096c52225aaf5ce3b21316d1556d67db9c678908d901b61f5ee25b3e73a58338e3a640dd07481910af9dd7c30ee224a78243cbc4b83ee24f79afd8c9ff4dc7bd16677373ef7852ffe1c0bbf5a6efc1eb776a43c0dbc7fabf433521c3fad311aa3d25ab0204ae3edf56ef5503e05644d18531aca9c151bfe98ec4a0d2c11c4db9f527a074eda25ebdc14269f15691c96ffc1758f5daa7620d0dac5247c5fffcb65ec0842984254ce8f84cb0e2f197edf0ef4b4b6a09177358d89066a50df5bb779e96e21458a8ae9274789e4372f9d3e3b53e51d229a87528eb56e766b3132f2b5e0625772ca53f68d4f8bcfbed40cd776849800a842abefea699269662600bc04b8b629676cf08395a4b85c649acd2166961dd2d5d0e4e224eb4ee5fdf6b06ed963d37d9e116467a6c47db6fc1325206dadc1158680fc4fb8b5abdb97d41cc32755ec26ecb79951f14bf885265db044a2247658a4dafa6eee8c088bea7a554d4a0f4183fc8a75e3a81af5c219a63c9016d456d91288093d25755d1725aa43154d478bf371d749ce08401d0b59635bde02a8b25660c3f1d36aa070237a86fb17e5392fc274618721714da5159e5ae0d298bde61697bbe62441b22614d368eed6962e31649704636e1ca7a9dc0e7b63bcd082dcc04f0a0a87dc5b1137fbe59211ecae5cf3eff0bde1966b2bbba4fa5cbf4dcafe0b055e37f72287ff5198ecde1c959d7add40a84f17f48dd9167a5789b2787209a1b8d374358a996473708a5107f5eb6e6fcda597423f77520a4c55c59d04afdbf2feb2ef59c0f61777920caa4762f4efe9d6f1b6c779e35d33c5f81d49baedd0809b934c997074c8035e113a2c2a653698cfb5bee6d8ac4846075402278fdd68275b358e112a202aa4ae854da26a091c7a564a6e059adfa17c1df94d19bc7f0f38089e90ab2d235a5c1e7b9518a7d258763c63fd4cc1eb0c8c8cae0a60a5fa924ab60df8329f0f448aa24786014a3cb0263efb9a74a971d964d35049a825c8a46d6521613cf39967295f7cbeb91fb3b6d51e255d877f6cc683672c3109918cde8aee958fd4e4c2fca764f47503072961b625536ad5abc19d697ab7d8f15340f2d4ba83aa135ae9d6db02e70d7f47adf00f63262a6629141a3e85b335a4412172e0382c2c38d461fc48828afd298868c6c631997d92cbe046a10d1dcbf105aa8ca1061e5d70ae17afc50e88db59b91205eddddeb2667b1d6003db1100a3476684659a0d0ca15afb8f710ac45c96d98d8ff5103436fc77d9e889d72fa4aab15d372df92041f9ac46aa2a3c49d538f1b681ab8468d36c75707425ce0a083f3ac3e52c1f93e60a09885fecc161a4b61a0c593ab15dc5bb71a618c729b7cdc40f0f066508f353a9a87c85ff99d79f22d30074b691344d1cac410b03c975eea025d4320c88020bcc352b69c03e684f5a0d94ee332978f7deaf79056059ba6398db2d71762ee1493249d1d3696912ce17f2ac74fe32ac1b17f7902d21ac2c999a873dc100c6c2f458b6f31b779d6f710f5b9af32050b66dce5b44c9662fc28e3266661ebcf848eb753b431d068fdc26b28a179610caeb864df36ce85c98e37315016bcfd11311d89e9bea3edd0e5cd8932fcf31f6c3893d73c329df3618ef1ca2553fc8526652d0cbec01a4e3c7e1a1eb06e88e4230532d0e0fe577d7a68a23304b070256385e2e8d85290d8004f1bbd5c9a87b70423c6466e93851e7b5cfb1d23043b98bde86bb241f04c3535f0b15a25aa857f61d4d72e3a10861fe0fd793bcfeaf41a3d5b0ff93f7b60ebdb917d1914cbc6cc1410798f8c3813c23cb31e22ff416430009f03a3d6b6aa84aa72794550aebbf5c601487fd8ef50cdc93a73c211ac3fb95cea1a96eeca73fad069eb932e098e96278441ae55c06d5ba621e1271a120390ac623dfc5bc294ecab5fa202f714bdc55daf6367515ad38a9b4c587d191fd41aada5b3ac481030655ad384f0960dca8f4a452034a00ee7f4e5734590edc27685f44441849506fa2ac6556f49efb4f48b59449f8bd4535a0c42a0d84b87ad5195e3430fb6735e11e4cb0c63dfcfcf079c8358d13742430bc53ab59be631d88249a79b665fceb3678bd631044bfaa73529d865525a611b752784e458bc50ff03b951b93ae81b06bafa6f9268edb78a047059011c3bd7bfb0b1fd35510eff1fdfe0cdfc83fad539198bfe1036eda7474bad38f6074b463305a8d203c3236afd7254763a6a1a2697020e262111496bb53d3e87c522040a2308b7107fc084939fc701633c3f294c4a08a1084e5b59be2c8905421ece912e5c4e89f72c564966d0f27b163d495de3e4091ef2b6415b600981a7346ab36a4750ac32366101b7afa08c7d0f6f5d7871d7fc29cf8a1bdfe22f5b6f924186464397069345ca76a698e23395e7764a479bfd44242f8f18341c817cef4af49619ff69b21211e8b86bb2ad222e14ea12b4f0109d78769f3f2b8169d5ae100435002524665a298c7e3a87dcd26613daf7f481338f155528bdcb1b544e75c0a8e143d7ccb9e8ce60e940e38eb267ca4453a256677d098bab81d22d344409584c52e4c28637a73c5e8cf2b8a6e82b1f9e42bd6e173a88833e3017cffd1470f30d434e781cfce0bc56c23d984c29ee635021f12c8d30db540b5d300128bc03583d192a547ce73c3d6d54a52d6a9aabfe37d399e87a1dfe41cf1bf1c2327fef6ce5556cd5395d9d48997078232fc86ed324df58ed7257eaf05cde99a71eaae5a03ed811f90895078826f0a20c90a9545c5b59435d6da7d22617a3d656ef5b20a537f03117457bf42d34eecfb5c2b47d06159ef24148b1d1017a73e4232f63ff15f34050c86c21adf936aed856c1035d5ffedb019842eccc559332789b6c2ad5a14873188d9fbe94d274d2b9a3cd8817dab76ec2477f2b8e0883bb4081b5b4b4fe40b8ed4d274082558ae288a9e852e578550931cd89b6550701501e3721aa52889b1bf84aeb698b10e72124b959e2a672e0b075c8c9f166b6d55669f148744baf4ca699c0fa86e3934fb6965e2b8d2001d58678cf129751895d6ae26cc86a607bf850755708aaaff05a1e6b89aff38de0a56355a0177ef9c80bb72514c10f7e427ac67172e87df2b8f2f76597f5847fad3441b843f0f49e6ae4a9bba3595c9d5e62f6619017a6f115d91663e85713343a5a756cc59aa8694102ef20653a1dd21c71773d4231afb61421eb4effef78e02865bca8e8731d38c214c05f0a0f5f18581eba12aa798f8ddab13776f91c4c97949613e2a4c2b7b507d982140d0aebb232140b1d1256b7a20dc718a65201a4c2569f632f472d54f9c2a9b7f73461d32c29b265a8eed0b12260715ad68106ed61832bfb87cb40702e4bec374793cc0f504a8916ad8817557dd6121f58f755cd7d0a56d96660ede20a0da0c4a8d1092aa3b7e22d4da2fd82ae13e4d5c26a5e19840931c89c0e07251331d7e45f2c59fa3fb236c29da17779aeb07081193453d87d3b40475b2ec529ef6d3614f1d000741560b30266311fb36b66174ee2a0ad585123fb45c2a946c751a278418ca3c881e625be19bed2b557f09b8d782ad3a55482ff50ae7a0c07af3400e99cd89e7ff297ea6bdfb78d993c95bc5884b0bdbc2622531fbf27076ef66a49ecb6fb1a74759fd8075c7bca5375649455c2ae3d330ee2d3bd36b95c432fccdb76eef549fea6a53a8f1a815f0c740dd334270028948379d9724de82631107a11902fae20f52cade0364bd40c12ba0cc0f771995c279dd2fefb7f69fe4aad02c8d80147b537e35013e3b586ef5818e91c77a290987e83ae81082a9dda804061b700e796d42518eb7ab07cc0f3f37fa82cdfbf2ccceaf5b311bff0c86b2d821fa04e09de3123d9b7886cae15ef9e62ded92fefb72f03df192c37fd234a8c91193e1b3a131d1b4f44e01aa90bd837a3f5febad90d2f23f95fd5fe0640933d6da65b5440621dfa2abdf7704cf882401698e6a8632089eb82c77e942e9976c5fb2657fc76b5263222eea559fca4675f92553475b2ecadbe037e29eea756c10ca43deba8bb6462377b049d74735f36de90ec8770839a7a4120ac65f43486b0dd75301001ad63ac02aa66e19265626e2b5ed6573dd2bff0e27eda9f02705c3069e2375b463989f791fc32243bf2bfba59daf8b154cf026b4dbc5e4b6be64336c404bc56c77ccac4655737892ae737969ec99fcb7f26941ef86fc2dcf102c512677ac2ec6bf082ba020274c8cdd2a399d3b41f8c60953b6e984056334fc8906faccb0e232be8233272837bcbc6e6e2e3f759c487e8d1f0b0aa086305b05b382d5564b7169561e543c38e41df6caa6f3dacacec32e1c03a93ec0aab1e345f5b7b061c315b4a22527184ff2a534b7d09f5b866766f66fcce27e0362dc5721c5755c64e139f8026c9904ce670e69fe91bf68628dbf866aa2b11507d5c64f17ec004828516bf805f4e0533a528b5ddc6cd44a329a19d24a325ebc4343db3adde326a8aae0f3e29c2449f571c836e2b2ce2de417901a7b9e7a4400e8e1ae6999a3d9412e6e96e6ba5ebbb59e6147ee332d5fbb7cee549916809e7bf18c62017837a9bb3cee07bcd70b95adda4397a1489dec9fee99f7eea1bf28daf57934a811417d2e7797ddce89aede80e5de49901d4c3103684fc26586460af79658199a4815a1490e017baeaf7f37417e46e2ca0e2a4961fd093fc44c771d1fca844a6408ef26e71ebde38145873d4ab5b3a0e1bb02bbea08a795b68f32938db99229f8939115fb30ba9993c7621097dbe32dd5336ca98449bae9f541707bbfe94d13ba938a5a762630faf4c36b6d9c97c87405810f092b844f675ed875a6f0fc1ce683b413716ee7d952ec1339825ca282beff2ec61f34fe5f032e8b69f3dfe02dc3cd2233699ab98dffc2da01cf34133ec401cd11ca27e479efd53794b457e0298af70b6bbb8517b39b2b5717499f5b738fe832a6f0e6082a95c0d9ecd27853e62b40f8f14da7ce0ef3a93e1a0b02d5adfd20bb23197326a208049d4bef0d031fdd01c8e94b52d6e3ea5953a09a338315f404a1e4a8bd89078730fe274565c87a003f638820d473ed4e49cf78bd5e5c4982c0ba6e1b357d6033ebb2a777bee5e6dd074e4220413f730921e32255c0b1af231cd52f95c598936da7c858d2e8ca1769a5caf3166bc735c72a560841a03cf3fa6422346fcac1761d6d66363e40266cf00ed4c4bded4fcbae14e652b01294805e6d0fd7ee9c34ebf632148f94a5f6551d4569f184dce1000134becf0d05eecddd113738616332cff92078c5e64757f0d5f3c22427181bc8171611a00708971219459501a59373ea17f0a776d8b5c4f9822382576a1ab836e5c6b8baf64113915b52402f3a22d94d435fca483a2efcfa4e657d60b9a6cd9a7ded5a0c97b64bc3c3cacc67c78173fb03084bc70f14d109fed981c0d47c72843fd212020f974099b1d5bb094111b62ec68a07515e55af838697242b102246df3b4662185f2354ff7794f78f3d204d37c0e1ef06cf83b1d1bd54b7092f7d15addc4cc4d839e217a7649db20303abe4aaf31215afa8bdea52bb201f727357c1798f3116e6f71b4e01be0066884e9dd25afd2a2e6d455703f1d39656a4f8cbb825c910749addcefff025c0a0abd3b17b59008ed13cc61e42138ffbc8bee78840ea59813d24165d9476475d6d3ffabc51d463320425e4e73248f343d04f834b527c0f4b0a70c90f9f7b6588d85516867ca1f76af997b9016e2121795ef5c908d2e1724eae142d3de0b822b058505991d6bba0ae3414f0d0eee34726536b55031ff2ba2e43005569737ae9c496081422e867c5656e788465d180d87c3b8a8aa280a8f43524b2bc83bf46a691820fe298598050f7892e0aa4ac23285b54863dedffc4ff4ffac9e05639cf80f636a31d12fc630240dcece59e142bcd0b9749d1f27faaa1749a5de89ab98e901d2740870de1a8d98ad1db3ce715b16ae402204b9b262f41da0b587f1349cac8740c7dece695a6deb43c4e2740cbca5902ef808ca992d05c40b40f8e825f1712f3bceda064a61f1398fda591b0a9864355c996515d9d0a9d5a2856cf025d5bd11853d5a791e15abc6a4b5089c864aeee617afdb15d1b9d53a15f52b4fe3e5396e964298c229e5c0296a9df7cfdf0aabc49ec3fbf5c5559d8d23c9a1688f9d97231787f706cfdaaf051dd3ba1639b10daba7ecfc165eaa387524f77a675edf954d68039abd1c3a0fbfcce7f04cfa8a1567da45ef89287e9088806d23dc09947be41ba130063db2f75fdb62c50a4d3f8633553bd33d1311188936a23c7d4e56999176ad2cab051ef08181b8b168a2c3871a26a45facf364f55c5671e7b16e2fa40cf51bbd2c69d481d34b90f6552c60a0bad4ac807e0016ba4d874bfbeeae63fb3dc79841940489d690975b87c161c43a1ad791d9f857c32eb782b48439d64e2b124c6b1d5b94bc01111a3c62737e2b2aa91b2ad3ff7607f37f94112552b5503f639d2814637bbdd75b5b3a8e790191de4b8241012ac400f46b20c82d269ac9b49c04369ad93f38749635cc39792df53a505ec3e8a6076afb961bac9024dc2621c77f1bc3e20a58d2f659abb30989b13f78fbb470b7eb42d92b8fbefffd54ffdc7841a6b7132a7718d9cafb377c61ddfada130088148208eaba183cd628de3f46c132dbdd17925f79835fc2cb1844c27038580dcae7bf7dfb686afba43adc676b846ab91c57581bcd1f44aba0e584606e81ed2e2ce9fa03d28dc91b7ccab2d531e5bacce516355543747920bb83b90378c0eddafdcb6f83d03f8f034c184b23494c2390ee5a0849d1ee51b0d4883ee74545e3b5c564bee384b8a9aef72693927d525ca0c3bd53443da9f5c3b403b3ea80f0506dc5d86d141b741b4df24ffa893b5550be9f94bcb6e925dfa579857956b1c129622eb761a5f86b78318298f72056c49ea130f58ed2c1a75fd88b1f39b091555623511369ef02d36a0f033a83bc6248189b339f35bde93119bc35435e9f37d735b85196b3cc5148308ac1df9abb3bb94407145fc54f146e8586195596e1c40214bb2a0655e1508b1b134a16be337c7cde90f5397467a0f26e88ff13544f923cba4309efc573915a1018454973bd064c5443d4961cc6dfa374c4b6a751f0066cdfa14bf361d5ce4c09823a76c450e994486da4a3ba8229368ad5014a07208d3dafe7acc5e95ae7219483d66bbd31309712539c68f2099a287825ca0035c257ab4b4467f800e5cb3f52b78906eeec792f3cb1115788aea2ea5a7313ce5e87e930472e579baef8a7cd798e9e5cef635ebb040f95a4e8c9ca401faa690f494190d92d5e691ae067c425530f1e35d6e9fad9dde0346e9f6c44670b07c3838247466ef998ddece789e624bde31d76c26f35e2ee7a1273df9e36e335901094d8ebab639c4a286df5032e34a9b7517054c188c891d3b230ff30df6d0adbf607ddfe0acd7af07ca0a321b3c89ce7f90e31d16bd6d515b54ef91beee6c822694569649685eb534bcc6ebd677a307f89fc8115a605fd03d992eb71bcc504af209718b857f5bd94397735b9fcc193879dbd73f4220aff297f0996de4013248a2abbc7017d53b00365dabd06cee307a61f9db740161506e00caae2b7e390e68705281b7af80bf9ccf3d62d40178c600aae0502c68324f11cde81589e9452d89b0a0cfa5ea4fac072413b92d0f22689ada28d8ee57b42d118af5ba6adc3bcdd7f19080fd85c82a21730825cace50cffdf538c97429f6f6fbfa7ec1f3d2089aeaac30b4aebc1222f99683edf99f93254286888df7ebb14c3f272cb38303f2f56966f865e8193136d7a9312d409a82bad7157302a0793bf7e9d0bd90dd78ad0b5562e56427ad998539ed46ed57f17ec458a73d7c3ef219f8195294ed95e1e91ff7f3d7ab1d149374fd2134be48a6df7e8f111a3f6e0f1ab644e785381d26e193a5d6f94a9d39eacc128dcbce44d374879f8b0ac94134fa9f05b01e60aabe3d6c376f3b1f060cf937d23dc961f982a8e6c2c325f725d7034a5c474cc1ff0c073ca6839a98a435be94dae5037be8dc11c4c19843ee94de4e63524398d8ce804e9d109e89744931d386de9e44954e072353656551a585ad529079e6da8c55a1b7f31e122b12d2a57130dc4d0885497882e5ce4aa659d1af7b7b59f47d4605d880c94ed97991729e3a6d36640789668d75584dd730ea0952ef48e73769d96b7ecc37cbb0f041b8cc792566e4eaed6a0d854877274b9c99d472b15a37698c7d105edbbcb791e12cf93fba4f51a79359ce849d23922b8853d498f8029ff43f3358bf6f949afa41ca23fb5bd70c99bb6ceabc0e8cd4b67c4333b3b3a76f2d741a00b693213661b1dae7bb215576f6ac25cdc31ddbba5e67e806ed6613f7d7f7b9f2b65350c0ecb3b69a66e169e3dc4a54302b9ddc1964229019b7e48244de890c5e78126c8928f62fbd6dc9c036f4a0e12d83ca35ddd3a451d6478f61f09a41268bc11fc7e3b77c032b0827728c5b993305e5d02abe8c9d18216c6a6cb7594b6f0d40f045423784988edc9ec7a9e7b2bbade186092fe71d2f2b02c4571ef7dd6bda4385cec03393434dc3f34f1ee5ab2e4633f3647891ed31d8a5ff7ed23e7f2928b1b79554c077b52326efc93a5c868f9627a9116261960902503936436a02a996745a13bbe995f17f634e4d8484272dd9de494854f2b8aaf09f822c0b6a6c6ef36fe72700b2ce313671100cdd33c582a7decf4bfbc8666c5a8e66406179fafcc2a7659c12dd54c8a1b8a5a0f1e6d85d664817a56d0778e1daf554b7a88c7f32ccea81c1e73b7a7d2c30c6d9b5866cb6dc55a854db0369e3148ac7d8e6a1b441522af510f78ce43cf45e6ac63694edcd9eb7d857be164b8e52c62d6a7b5597a62d1b3e47c8aac327122a2f9bb2fd7d2bad105813780e601d58c47e4af0bc40d2ade3e95c42e6ecd4c570a2e94fbc2a84f7096925770cf21ae243f697758b79baa6a187720c1872d3e2e359882c1f9beee57d3667f1e0ec79f13fddde82bb268cc7f94735d6dd6b31dad8a769ed59b590e8ea7bebeac5623d5415dea0a38f8d931f3b3c3e1f68a8084976f7e2a378e20ddf32af07fa4926a026aaceed29cc5f8d7ce2877030b1afda03450590fb7b3a06ab77765c687c2560118cf7cc7ebeff346dcf6f3ae175b551b4b1923268365c95f91d01cbddbcfa37d2e8adb720de69d52351b6f5de063f60905caec52e0c47047d10e2695864793b1c55085a5723bec6afc5f765b4b7c14f6adad396f1d2fcb667a6d28b49a556b3275e3aa883b4e797c9e43685f21bb26f07cf883040974f825f36cdc32e9a4f4cc5abdab803e23036140a5f86fb97967b4dcf6b6d6736e760809b990abf5f5fb7170c39fdf1846ecdf39baae1acbd156dfe3bab43e8a45a9354bb1a558255ad13203ebd167b356ba3ec0aa65fae0c53632ef37d0540eed5a91fd7111834301cb4d5d943f9ee4f098612216ce8d258a8fe78f0854ebbc7135642602de40b570c34af5261ded1ac6d27b38a9ec5d84a0ab1740affb58673e4a947899a883f6cc9527b414509638145c50e9e3967459201a2d8ffe77138ccd8d6d1cc723773a97a39424caf4750b204c02e724f922298f2e69b879ec19782a56fa98a0932f49e252419d39d7940afd5c75051513181a258078d5ea732f3b3ce2eb5f0653a8f48a8b38b89ffb8a43b7693ecc9539c72b3569171f2098e5f813d012be794f12bf713b4da9d718b2a1e7f6232669921e63b68ac6edbddd76605fa46732f689728c0cd39645161728f9d5aa2e50e2998d6798458f6c57357155af47a36dbe979079e8c8fdcd2a98a17f8fcd496a129e5b4aa341d82f8c8930137a85677c13233532dd14d8ce746d0c9dc3cf734b0d464e721fea4922bd3729559f8ef7dd5a6ab860c4b395a6961d023eccc27e7b1507a0e567eec279078d024ebc7580894ebee01081277d858c620a1202db6074b8ad466cd6c15ca698528177ccb4f1237004112004f577f837abad5f60f5148d26d889442e1a806d1a3e42856ba665e81e37c714c426ef50a09b5758870d0b305c7be963c77409a3ea7e44048c0c1a055ee36af7cfc7b77b208809165fc7283f045f547e418e7d320e3144719d89f86e8faa6b063e690f197bfddcacf8e859c7559eae4d73eb4d6a53ede4cfeb26af6d25c3af5f38a1a8e7553856facddab0659128a8d39f532dbbe33aac0c7ace5862937652f95289c7d4edac861c2c2b17002d41e38fb850745d9915ccb3b7d3b58a94a1b283273d6e43ed80ffba670e8eb32e016be498b2958ec96fbdc63967f4c23536d10e6d5f995c2e0f948b75d8fe19b2d37922b40ca358d8acaaba0d240988edbaff8ce2948c7adb66ecbca4849b4915f68ff9a434e115d725aae9548597bc73c8de8c6c052f01d0cae7308430cf2fd5ffd9426ac76c22a3a6c800966b6af2f88cacc4b7df7735542fcfb06e9ebe29b355e762e2a2ee6d76f0e33499987c3ad349e3488bd3eae54ec15785d5b458fc57b4b0bb436a60df9f385548b33791bdb4d42788b69724f6cf5f751c24fcf68d4aabeee8e505e1bc25a66bab1a525c9f061688663062771f671bfda602248e03bb1ec0c0ac1f998968d8b641415b3bee108d09128e74977812bb17d8d07f6e2355c4a052cba6af0b795c219634a47da12ecb876a718c5796b03b84306d83941f07a9af5e624f4e6cb839db87b5e63ce86af6e216f0707557ca49aa7fc04989296cae45ffb20fb6a3856714ba0fbec54a8b477ea13d6976ad38c87c841011d3715404dc7e3ba263a32f528750b82b9060b88b0e3614c493f4a24e2cd8cfbbf574b6b54294190744f01f5bd3c26212c81cada5b8da7052b7ac12a5a98c7c4e03b82f1b277f7a01f99e3557a7d089ba65f3920a803e39e887a5e14df8282275bc561d67eabeb6982de4940ebce06150d658774305774ae085ef17f950ed3efc40053f1bc85df496faaac3bd9e54c965345e956e944741973724e70e14891f585067c9904c0ad00b5be3c7954b9b126b106c84be83cb05ed65d750278cac3f1d1adfc6711b799acab07a2039980c733bc95dbbf7e19dc5c868432e938020e1859e35a83e06c92ce95830de446ed77891747fbdf374d890918382bfd5974dd6f09ebef0cb72e3334550b8d5c1d58c298e5730b51f08843fb551e7a0238a5d705e1edafbbe111318fbe7dde0b1cf115236ef2b36fe0a549e25434685e823609cf771f5f314e54a53f089986889000220f088bb5fa57fc722d628425c43181e7e83e16d359c96d71d4b8d44feb12acd53096b529d3d39099042d1ed9b86a38342f2d7f6817a1e75d6f61a729e0679193a318d56d2856a2907e6b4543db7fdcc76d6a3659ba6b902702022fc5358993422fce017d44e848af6c2b2bc9b129ddeece4c704176b304f7cbd5c5956eda69d36622a38b3fd639b3ddcdcb2ce8548731877dbd07ce86cb7200464596afce4f1733f68057c0cd238a3bd54354732fa09dc0dfb40109261915ef0d4bf403349c6f9d4cc88c38850506ef2378c70f191bdefc8c87cf2b03f9d9ec0846fca32d6371844464c8d94399e898c9ca3d5cb577067edfc21a8defdf65b78c517fe0ec63c4c189718d4e62da11ca09df8d3804ef5606886fb6e8b2e42205eba9557cf8400d4bbfe2d4645d31cedc8776b350256218e473b4c3a7a260ac07dbc7b6df17ad4a3ff71b99311e3c52da1b58822f81dee213b198f9e457390eb25cf7055e7a77f4b97638804bb88f1974b6c1bbf3ce818a31a16cf6fd5a183b569245a34930cf7ca9b1c3de8481062cfec871a6b5d1be7495f80f857eb5458a69fb18043d0e5c86c07a585dad2e48a182d2843121ea5fad9a8efc5349bab3e50e4d324c8e9b6c47b3b3c17c307dfe55abb0cf22cf52c605c37c52a9fccf7ed1c960432f71e24aa107c6170efa8e33342c7110e158d1641b9733c5d98b9c4c03bd89d0483269de843726ca3a20bd2c21287bc151a4454e3f3640be2fa722ddb2b11af739da8d7b9c6a8b5abfd9ac2126eb3d7a14fae09e1b63a933bf85c83555b6de1908cc1192146104f0f31529574d60820ef6910fec1f1c6a01e9ead44a5b95a6cd08c815499017c4ccf7e45d07b39c900411ce5de6084febc4e18f162bee80d1a8b9f6d0e7cae269ce8b118ce5d2a39602f555d52c6577e0d842688d9a6edfb5b0c11ff1d6b18296fe756863c98be227c3165d9d963cf02c5fc07259476de606f9ef5213447ee05324f2fdbea783051d6f7937084d830ed239cf050a5fd10bb914699b6367dd21f15d90f79e86084173167e96e71a97bc608b9f5e5cc8aba504523e2126bb4143e25cb9756f3dc6eca9b46f7cf22982db510fe42934e8cc6a5a59ef17c7027720ff4e9f57c36eda2428ff240c89f809b0a48fd515f1805e705cce6e4b30a32d9a3d0c63d895816815c1aa7763f67e9d9b76a59d11e39108700445e7166bcdd73ec8f6ca62cda15d97a1e331a4e32afabd1b4a6e2fea6ec54e98ff63dbb31772c43e5ac69aec45311029c264bc486769013436558fd554b8e57bda646c97a7676e54a90e166a86b90db0ece68a319cdd75a03b7a7709ed916a409704b1d164465717aaaef44eb66b6f3da8cf0a30125912a35b3537ef341a67196a24839cba4016c7555b04767820cbbc8687faeb9134c277a79b2a3e91c08202e543a1055d65dbd1d15fa07599993a991d82562f37edf9d76660e2e8d8c7d59183bf98cdca61f315ea52f2c9e8f42b57c274d9239a1d9fa010c50c2087ccd85fe5ed309431117f8e27479f44355d7dc0a0046c56210ce4ee7ce8fd99bbd7556e0519fd73c28ff26628e91b1655d16a1b3ef37b6d32f72d2354c283ce180bc3d18e36cbb3b5ab6337432eb495ba27587b1f591d291b85b5e21e8248c65db16f36f7ea26e2958127bfca325b53791f998de6e4cbd254140f0722832bd8d5d76f144a94a1df228f3bf21e967829776bbe1a0f044cd4defc72c89bc8795cded94f7bc4f91e7de3360a3d6827953bf462af3e6e4bc8d80bd60d7e8549e322e6443890ad4f462c04b492ef25c2a5c0adb976434f98b3c3ffe025b5dace58124a0146dc1117b17e904fd4cd878e2e9a8fe0d4cbeb2e74c38078347a96419c8b7127c2e3bc74e01f8df844fb21400d5aee4b7c897b9b9e3392edfccc698451df8f69b9c0b1786127313df6a3751011372e1657beeac5e5df481f441b84606ecc4b28c4a851377af31fe7c35059854293981d20857924fc88ce8279fe8f20e74e319dc0f4e86eb2f978c842c884411b0395659992932a866ff8ddc051c27924b658d60860366b95f9d1a12307451c8d5e617c15beef2b42f52cc0335f0aeb2d65e31418defabc101af9c1f04cd0c13db8fed9300da05b34c97f7ad15edb3c2d2edb241c9cc7b1b485219c5d17e1484974efe413b5af6b59dbfb74630251bb7ce8f58f5219bcf3d5da3bd3da2861d25f345a0f347b2ee35343dda123366c6dfaec8567a3f84194ede9e167ce9aa47ba6b30c18161a74322d875c59870f99aa72a19a3c313d08d565a3c391ff8c3ff99933e6284493d19748305f8d75ef46fd94c45bf444fe9060bd658e3498994b2068f4541c8c6823225e4d03d97161946a9f6ea3608eb71b5ef4b71df333732d29d993d09c61f6e3e1fdee7849cd8466b8b5a68c9d6a2670e29252d354d03feef9d7e10a4e6a2c9333007387c54847a6bb580127a1a7458a9f8c5b8f071cf2ced7b21b8877920308e502a0f664b225ff1fec3bb009623a700ef00f08afce6df837df7ac18436f197e90c66dc8db5a6ef8ba548a54deb6df45269f583c7c72cdaad58aa47b72e7f65dd18c29e5a2fca0f20bb61e4bc1f81bbc6eddecc4730579950df79f709fe65ffe08e4df239e7aafc327400a8669f9774a31ecb572cc11fc525b6f4a112a4c4e9b2c69b8d74f69e2b3fa9e95281d8c9638f170367198705e4de5b9a78cf7ff6a8c0968f70aed0473bc9a51d70feac83547c202a5ab56dc7e2bd8ae123a10686a024266603a61a97bcf062a1a876f88d396bcaef6cb29788bd7a2bc8b9d14f578635c97682ae85978fdbfd393b23aeb610e7475b9205b450aaca2645737d895b71854673940193c579ae4466b2ad8d40b34bdccbe7311ae710908bdec38b23fc8de62f58208831b19c497530f80d26a09aa951b961b5bfd50d6c1ee33793d6b6aebc9931ed660e501eda91fdda7529984c1da40d7d189e308acccb714425297277a3a4881a2872a594ba9a01681fc908dd594093d1866f413b258e954d1fdc30f921d4efe9962a3ba50bb2229f6ee421f6002bd8f36ef28df69d7e9c6a61cf585166394d9fdbaa8f68ae2c4436f84e533fb39945f1b345c32ed2831c8f905b71c75b03c2a4612b882909efc3d918d75e9bf2e3a8fa950cf2861cecf0ff067948282bf1e8dad88f579da250fce824532b6b51e50ae3cc2a5b99f3de5cc6f0d9e7e587e44a790a5a52daed39a0f322c1dad43f7eb236e1568d059302715a7c7ebfc46096c784bdab24578c60c5a54487fd2d5071329656681f5330f60a3a21e132b2ae8897d7e432b713b1529671a106380286f45933b4cc3869f67ede58dbdb4a4b71042a3e5ffc1a6f47488c9d25c17dbeb0bf26e418fe17f72b1405d76c8eeaf940f72082b6f4bf516a116b3f45aaf55b15dfe692979f3d27f875e4aac6ae8894762a6905fce42e4805c920b4d5d824655af420e68a5f650b2dc62ad1af649c3557ca24603f346648d6a0ed747d7ab8b56180acc4ff748226ca5f89330ddbfac212add8ec758974f227274ec8f87893fce5e97d4b3c230cf2ce3e2b735aa7cd35804002a75519c7ade56fffb7e093f7df9879ec41b4354d8bffe776d24d8b38d056f6a07a0e96054c936bee51799353587f1c71ed23440df75e31fe2621a2097952fafe71200101726e5146085d295111c222f9657c2e65e2a5cd8aaf5317ebd67fd14cf1c217e884c6d3bee569bcf6abe1be628050019f417c9b4a205e80e9db29015482af2a14aa9e2bc26f630154c1cdf720ae7de1136bd635919d326166dd69be075545d13bc4785f8490e8de087ddfa4a5e1ad7ea1e54ec7f51707360dc6bcbd7f6cf379168870ca228e0ed69dc73765cc2378924049eca764fdd3bb7fda161129765d17f09dfbb435abc5530281b2488a9943d241f06629df75e866d44bd41dbd25eb66116cfbfb5c31d4279aefb6923866577b2a55c97ec7c2b90d890c948302990f063e56533a96d1eb0ca6ba0de75c40ac97972ac4c6b1fc6d2d04cd1a0443e6b3fd35bf71821ab40c16f7a33a93b9512b68b3dede5b93aa4b833982b54fecd4212a12eea82f68fc6f8f68632722588b9b6da6494bf86a4f5026285b3c6786e2a8be5b2bc2353b71117b3548dd559f6f35fc04446de195baa83c165fae281221c74593ea37e385ac50d3d5260b3ef3c4a4a78202a05ca830f583a26c7b91cbc4ddbdb1762fcf8b5a464ef3dbd7072c71191a29aa2ce89b99d41bbbb740aff0ee0feedf7443abbc267ac68da333665eaccaac3bd6c5956abd213b39f01ab15f3514b35195603fd39004a0cb30c7ebc8dbbeac394679ac60a306f995ce20efc166173fdd836860ded08fa80f067d05fa7e6326d53866985cab92a652ae93b88a24213b4e73b848f6b59e9313db25fab85303df20eafeeceac8dde159bd4543ea95de46b09af68faf9f724ceb92154f0e9336966068829f5216efb2a575781da6cf141586658711bd8e370ca012df9f4f2fb2b427b75eddd765abc28eaaa63c96f51a2566bb15391d7714adb3f2eac6ed7de15e0194ad182538e081a9fff7bb057a1b3643a63144e4235f87e52a45f8c7005e202f26b407189820d0b6d5bd2e39f3afe22abf2181c11af0e7000c4c26d94692a4cff6f114b32c9f18df3b9ffee1b264a57dbbbd516723dbe363d4ba1a840552ac5416ec4461edf8236877f37104a53886d4f9fdc2a9f0594967dc8dbc494ac705a6690d1ab924c291f4e9142bb7577abf3a2027b9e04d2141c1cc86cbe9c8c825bff9c3e5958afbf646ca47516aabeaf1ac9068888b71ebe96cd994b86eb0836fc4c8108411a8822a640968c7b74b80b39dd157e553cce869825a0a1810512fcd6951bcce813e56f8cb0dffcf9762ae84a832a7d439d40eef92a5cb3089bce67630fc87fe80f44f73d8575c1d2cab2c76ad8725de6d0c60554fca612e892f100855672fd6fb645cbe7d7a7dafe3264ba5cf3308ca770aca58984cb2be1e4d6d5ff772d93be2b0cc03c8ed2bca71ec6d407f5fa0640bf512c393f720327447151fb8894ceabfe5e62f0e6f0b0ab7be264f4a8bc6b41ff0fbb4d0d9107e499529082cf753d1f67ee1c3c1666ba1e594b4bd1b51cbe8f19e2e16f19d129b44f59cf077b8aec99d44f525ef28cedc55942f1f05d2735df930b108fcc1c16276acc95ddec3c03aacc8dab17b0e0429bf66b90c8cf601e3fd737ed5fd2473c4273f0ebbc90bff97719653c2bafd0da5091b8e37306a1a58ec6cbf3d82d0390fe345f464045f68c3a488967e4569156c5566de42f3a5b1bffa46342b35d8f56c843accd6a54f4c1c1778a9e90027c6291f176e9dee032259a4cb79ff190de15005920511dfc1001ee763632fffdcfce7f0c705a853e001fbbb45e1954eb18bd7a7d9582a286d48e35338f690592e69b0ea5052bd085a6d491c8307be3d9b46aff03be1024f33f6f2177b0fefe202c2fef2da37e8d885da7a08d361a6a7795c8cd5360d4352e310ecff83ef24553707e8b8190272cf85023409a6c13f700e1d21383518c48dae5dd71b83a5fbb535f5f7ba4eb2f4636b7041bdccc2b5f5a810276c1389334a8de7accae4e9a471c36510e58283e13b5c1adb3ae5af4b7a280408f926591b73fa5cabacbf77050d20307c67cff71f2e70819da412bb2dbd8b3bb6bd8426cf1b736f9a9441dce45330ab1db44f849e5c355663750a4cfea8f65b609ae309ce59f142f1b33f46215110f84b636f53c12d0ea39c8256b49c7b3f2a5e011cfa0fb963e5824834834b7deb04577ff6ef643c6ae485bf6bd9e9a5d8b8a566003838175965aef318515a44c10b57015478f67c3da951384314a4db889394a9e4233250571a839dc152c58f5607fa82a5cb00f080e19e9150dad10f510718b93ea197d495532d49cfb8ed41933105a6f4a47f248e9bd29bebea4d64fe6ef5eb5b35e7f582c59263baff71f6e88f573a40159698f93f0f1f021b7d623b678fce0854309c363a8a7a9aa42c0f505c017fe1a89f3a9ca34b56a92df0a10379c11e6396e5a8dc4cd67d4332f46f0d43f1cd61820b22c6197be66058cb32bdd613fe1112497b7007b85bf4267c1d504bf8d2efab5ed014c24a625a346d34a0f6b9966f2484756399bb9f59c59466380622804cc298c8aa1edddc39addb15210f9287ca66bd73aff8ccb4680d96eb7e72ae170223a9f4e2c9a27602a98599e0e526a64b847182c90df19d676c8d77ee1265d9ea3e5d83d73e41c92152d19730b5ecd38a9ecbcae526815792e48a230b54878880eb60b8059eda73004bc06858cf839549129dc5dd263c5656d13f35a40f9bf8f673bb5d5b7c788688300758b4960838d73f375d3bebb42317ea675ff98f2f7db34487388912cd222a35282e54762fb41cd3be620af79391eadd0d3ffee24948ef4f286ebc6d96dbb69ce8c4e165adf2f2d1473d7abe46dbbb021409a7e6843c536fc566c67b795079828b7a21ae5e520db0ac5a0c1c533d21767f0f5a587606c05fcec32058259ac774c69b32333b564da6368671ed6f4a416179dbf6fbc80e183a47652ac621dc5addbcd2bb1326d1bd1304c0f7b67ae7d4d1703d62415e965f07ac6895f8f18da4b0e5385a3731b509e5145bed3ed748c62c76306b753156171a3d4933cc9d726993e2e0c467f46e3a8168bb4b02fe915899804d916c4337358bf3808aa4fb8304ea1d4f3e490664531953bb58188c9f14fc4ad6dc635a657c568b0cb30aa70ad3c48827b610e670130bdd3fecdd6615951e62d683bbd8497d289a010e37c86b99d92b62276dc2b178be7bad33a6612069e55d4ece121180cb6a88de77275d55e809bb3ed9cae0526ace2b692aa63d29ffd1bf7acd2e560317f45a15f5a410e6b120c00bac9be3e67c17a735ff62faa7b5e526f038ea48f485d912b37b7673396bdf4e9a26aed9378331a035b043439aa0e7b1a214e1e8c4a971a1c1cbcd31ef952f5fd756026b5f61966596c3caf2f56982b5949c2a572aa9f838a7cd9d6f8d3be098e37e10bc8e7b8a9cd989d57d3725bf9911e45ce0ee8edfe30e7ff6bc2a4fec534b77654e4f5507b9becf5887eba3e25aafedf2864f28714ecfb9d8fcf8d53a94a348bfd9779cc4363f3fe2e1efd11f4936fad962b5a652941ec3b92480ceb756f1236706254133aabc0608cb4be7bfabc9b6c374c54165cd38bd665a7fe7727079e3afa379b0ff25888dd7ed6258ce49ade5743668c588dedf05b083cfb7538b8e06a890211add639c727e72e3a4f6a2661902f4dc783d6fea4eb57abf61063ed85e06b1d715dc57cfb2469f872f8335ec6b0548755f8421765bccf6c3aebef56cfbdf3d989eb8837ed9ecf88958169c3e758efce55f95c6f72c9e64aab3bf266996841fc26a720e086a5fcc2e3d68adaa1c4ba90c79c01df72a90be55ffe85d46f71233ecc3398d53d2376a09aeaf6abb0bf95726dbbfa67e13083308731421bb298efcb3f84b3d60a664cb0c04939459c889ac97f0a11a70ec2c1f39e5896f9c7a374c4e4ccd986f29e4e93440ccf38b574d21f2fc9a367b16c314afabfb7f465f4a8bee57679ed1d9a3f806b3a9519216736b4f6ab560f073fb924983a18d0e11386412f5e96f8823103be8f017c01f76cfdfbbeef112f846ac4c549541d1a97a4954a3ae452f81c3c8b2d2f526b0f6c105318d0be63f9141efa442932f4a15b6b10c9a6a10b1fb5fba0be49c17ee10f356f6994514dc2ed37510e609bebf703631424a6c00c063b4b86f60fc7df1f198fb1fa2a75a985eb30ad613de4b2f4f70b63b2354aff2aad0fd070e1b48ef1c107d30fca61a55f84e3bbd29cb53933d7694d4129f0eb6a91adc9589bfc5b83b4a0779ef10a381448105ec79ceab1942d61ef91051e188bfd8427f036a32c8887a86bd26d531f89f0c17efea4fe61b83767a0d7aa5a11b42fb6cc0eb8f865b44a529f8929cfad4802f3df04bdc58b88b7b58b3bcf44f2f2b6b0ee9c6bef0541230284d7d0fc9efffc160dbf3269a8afd874b65a49b44bb52b4fef1776ac7e6bf8e0c68143213b011c6956e590e29f1b258d56c42aca23517881dc11b22be5f42f898483d72e4fc3a6227282e56e6f808913417faaf92b7fb1c7a2b0de1064a17adef98b6b62e060d1fa227658b4e7d569816382df53a6d97effa52c1e002dbab062667b49800e162d920df51194c8d4c52aaf3b4ba071611346a254c417548ebe994cebd8da4ac7a8abb80571e2857e6da49a0a340c5bfbb5f06c0a75651aeda04e7da4218de57921558e03927f6d95450c61c3cf7a23eed9dd6bc292702dac71cb62261e93f5d68261961e258abc219c6573303ec09d66c7a05f07fd334b258456d123dea9cbad77d68cdb94a66eec8c7b248d5351eaf5d3496bf71e218bb491863a027921736faa2fe98f7c94370676fb730a33321c0e2bcd1ac24d06463bf63f815dd00a3fb2959965e86e8c24417cb9014db92d8289264a872e77f2379efc6cd483226b05b2e48597650c20d8b51f519eedb69f662237b59e16207000483bc3e6f66c5f75cb633b35d96996303ee093a2f8fa5b57fa5ca602e6b2b196a5002892ee9e59e8008143b6ecc6fe6df9f177336e2d7cee14304ee8211e89a0a6cf8575d59be129785cd7169a94739acb0179dcc3791ea4d978d3e1dcc244dc40ec2464ca0d84f4fb68aea8b2cb470cda099d7661095f6895589b7f40b3cbf6edf7d88d1e08d94d799cd0055893185711368f26244e16a4f7013e460b419338299e951fd979cc7e83304e6c8337fde5a1d88258dc1c26c695012a8c10dc476df6503cbc36709220d0f2fe03806f4fc67a6ed004ce975fb266163870b240434b5915b5952229f199ba25abd16df4c5dfd6b37e3434e94b3e469ab1406df62969da5fa41ec1f5ca73bef03f65bf67dbf3afc829b1b8cd6167757a8b584e1e4a8108015045e9ec111f0061f1a2bc89bb434465fa07fdee711518c0d7ae7691955bf32185e8a66d8f21c4f96b6102c030a9981e9f8b160e540bb7a8af129a4f5138b05091bfb4712922f6d477f9feeb4b44f3ba79cd0dfe1e1fbd4e1854863dd4fed99ca03e08b08ff8a353af4d7691c09c5f96721a5e6e75f2fce1a3689533efc40ac41219488f7ab77e5e2b43004d2f3b2c1724e47985b12a2670d1f03b5cd87c656e99e34ee8e5a35c36471e889ad84b6c3250a3434bf997553d6d617ce2b3b80f7b3100a998f12eb8d4ddb8ceeb71d17800d2ac95e385d184ac737a72f0137cb15c496e1be5515330dca211e50e174c69617da6bc98a78c13b838a3cafd0905f785a6511cac792a06197946b6e4917d9fb19ec5f7b5505b47fad539476ea34f14e6db025568e8289f91e8a57b6772213e8e0cc5fd31318ec74521e23e80ebd73d75634427034634072716264401b104aca9fd8c7429adad20cead66198bccc729d1acc7227736b16cc5de397532d5e515b014db7b29385c43e099ccd48d6a4f98e9b2858e420fba9f24f8ae4688daebe73b54d5214adf7b022b2bd1830dd15fc9bcea8ee5a9d8ea961839fa42e34d4f56daec56eb180c2096977b26ca430e6101249dde56ca4492ed716b19c80d5d06d91f17f25253ca2b1cb2b86a639d15c60bb0fd6d447c86a2606e49fc8da2d2e1abcc6b1642711a7c13a2b7039c880392b395903bc505327052b988381843388e4b016c879dff1a25dfb2dfbed6939cfb4aaab13b249d912849fc14a7451e9959fc822b53b6ca1298496cad5307dc215d25704e2f60bb17ec6fffdb6ac3c69e7346104fc5d7d8a57ffe3a50ad39cbd4871e33252eab3ed9a4135acdcb9659029b73c5d066bb34bfbe0ba9242e0927c46311351b4aeb5c390426b3ef4295f48bd013913cf71488f94567260df6296fbc7d60ea7b113c66318ebf91ad0eed7c1ab578b85670068690626a61eb92de8b75c6704633de6b57de3b97bdbba89cb56dad3b6c5e91aa2525c14e2fbc6882cc574f2a1855d07d3c3e0a8e2f3b81f7a5acc3b56c5e238cacde9db504188d033672427b76830a266347bd2492f8742450e28387be3d242e89b28222fe19c862217cacd43c0647535dc33a0052eb8ea1b7eabd126f824a83fddc837e78efea362afcf0aa97a524a1d397236d3e56c7bb378a2c0069f8df7499d421953992b2266deee9f7a0999ae32767bdd8b92b9d182aa97eb958aec55f8542d797286ffb721684c5b70c21db9fe7b2d1537a97982edded24efa0fa8f939cc9e09796fb206b40d6ad6ce5908c920eeae215dacfffc9da2e93135f7a0dd557a6fb0f177b02f721a6279b58efa828190dfbf8b79049897e775add7f3c38dd8771af5ae8774c0e8d84de4d936b8404e7d162fae7e12261dc989dc8e38a84dadf8f3639ecaf543fbdfa458fae44737e6d71c3bc330b301af780e7939303bdea4f18404f30780c2c768e10f2abf147203a899006ebd70ace46d257c104f41fa32f3b95a506d94b0972bbfe0b829c6a28c5ba1a41048c626d8f756f1a6e283e8d38742327aee4fd21203cf1f438429b0a94f256fbcc2c8c3b072084282ca12fa650110c248b0a8551b33b7bca160a88eb2b8139672aff4350cd0707bb35e00edc24d820d2ef68048b804b6a2ddca54127d46f7fda695ddb17b0405865a0c04f9693d4a4c7745f1955ad35dbc310cd3fcb28bbe34fa14690cf437bd5ff340a732ce7993f81e1e3f6472e077cb45f25181b7d5d09e49f49560d492030221433cc6ae080d0e0a45bc29115eb8c2f042a420e0e53d65b6eadea386302dcaf6a018b1191ac36a6ddfb877231b10ae445e442cd0402979a5ff9a70c1f20954836fffe5606e031fef2f11ac2fa192f890587633849b0042bb13e2f18493090d419f21662c36e37f2bcd6bb69d3411c56593fa66024f134bdbbc5a74094f2e6ff41c972d00bd275f43c2e6ee594c5198839cc040eb3348ba1b300083b907e36b759b3fa31feac4856e6f57bc96e7a43e13caf243b28e3004ef9e59415f00a33b08e4ed28b7e490ed17683c43815d3ea2665089596dfad7bddf91387af20e729e1a524abd6f0d7a6025f361a6e3f4c35a0fb6e5a014000758d9f608f3a2fa1070520e5ed7ec3fbe4e8babd2038767ab39c7d5905146ebae84052b6c6c0ff917d1b6e0feee4c96ede68daf4d3763293c5eb98e6cf99ce9f5cfd87606f9bd3494fe735ff5fdd66c55ac959981da04b8ba3633819480e5923d56ce529d0fc1f97a56fa68c9531879d9539ca55a63eb624c85ba0d9db26ba7bb75deeed5b65b421827edcb2991d6cc22846eaf75c6f92854f339b4d34484629ec4146804a2f31d4132457ee1fd2450f3a656eb104638a3293cab559ae0fbc5710af800bc205ce8db9337c4560f39d1af86e59c879e18086ee068c5d66c8d6c527e18149b26770d6f5c42c2d651b92f4071de52342c28f012050257d3df7b01c0c346f378d28128f73b169bb0455de81c593fa7e6d7456092d156109f7d2f6e0c9ac2f271bf177d8801808dabaa2b73d1fd43a41bf7798f4064673d90cc4e867366d7c50c2bc37aa12de756bde77766c654797409ae32b7c71d970a721ec2d7a4d438143bc590fd478298e93373c11099c397aed2ce137ebd345ecc1089b768e501b0ddfddec8a6367e57d96d1ce66f7bd5a7fabea2dc3a8af0aa2a432daeec5348852acc86dfba7df41b8fffefd5845e73ebc58759b92f46f27354aeee18014a83f38c29627bd4ed02ffb02eb0fb7848bdd9845b88f57f127a2fb4857a1e73ed99b39925439ce51f9e76349bf3bf887b413381f1c832e569d04db0cf93c91983919d740e618b5b2bd64939c592fc60bc521708e69856d61afda34c0278751aba2dd966b480bb73b12e5e221c98b5717622a538d26b6c2e6c235e3b5cf8fe432a52c957e76ae5ec1a56ea8174f649a1df5b747b5f8cca2925d2b4566041141164af0a4fba270529eb4458b466bc22e29b034b107dd9107bd83545b51e800bb4839370055d8147b63b675e8989022319d1c7028f3d3617e65bd4df4579f02f6bc0db4883d8b347af6394e478a7af4d45404214497f6b08632e038e95dddf4a7d3983d989021b97098d1e3dd60c01ecf2bf45ef188c882408edd3a6a474b622bf0fa4b6133f364158fe58a25632f779039ae235c99fff16a3addfc5aa36c0fe21cc27ddf91d4491b6aa1607f7ba94d5049a1d06761e9abb2f5dd2bbf94e87367e9b2155899cc4ee81ef5c3e8fbc1e0e658e2aab7930c72500ceff936cd183893ec7a796a5232b19b74d0d6bf7316e4772834594757a29af7edd6998baa89bd4b944fb3b07c107f647a540098c96d03ed246068932c0a8e1423a4c64bc9a693282d67f2efcd571e2802b46d1e0bfc59403783c9511f694b5b3b373d789e2702e54b4d07d9b61ac47859e18b0ea5c5f69642f84eba463be2a58f4d3e40eaef85a2024fe958cfc7fddbbaf48f36f500602b5b39315fd6bcfb22f1f50fce15004afb8b9e31794c1a2961316cee8b68810e0800688d9541b64dd49fa17923cec1b3e455599fd02142fb87e802e44f97abee91e12be26d3365275d223549066e75d761964e9383b097fb7622e3f043112edfe2fe3e953c5df2ea20d995d0fc08c50106d43f94d4250905824e6356eecbbe38f4234d6db25d228db16632645a298a30470c58cd44eb51c800fa539bee64693f9912c4188542b6188e47eddd5b93a396a061c18b44caf6487595210d62aa8eb349e0d0a4a7663e293133a218549f501a857b94c073a5f35d0248b239581b9243bc520e0613aff8726f203878e8fce7d62102d88372e90132324bf57357525615514557961e68b1382607d3605df1e799f0dfe98e411761c60c898e51f18b15404c61c791684584d639b941baf2624e651a3377bf320a156e7e76e63067bbd752e0b233964e46c938e46c35735043dff2a9181b9769db9f510e642bae5edfc3ca08e54b2af6806f6153d229fc022b802a8ebbd7beeb8457ebe4be7e2ea688ce9f342e2434e51586e597ce25cb073818ab6c51e07d41a6998b22fc9d5709c5d3b7c0371f812aceb96fe335a6d86981734844ef9542a60c4ad48528d49535e0fe71428a0e4116261c3d171f1520eeb18188df5f2c20c9e03a406256e697aeac7e1ca248e78882c69e9fa2aa2926d09be7251766274c1d9c5798e663facfd246e97d054498ceabae4c7bb1566d6d8ed7438fe414c4a1ba27ae7db3d32cf5ef835e4d8ab2656f999070ccaa3aedffc6bfb66744276d1dcec6bbe3c1b1a785677f6cb9d012ae2c1622861effc3cee9235c3604e9818c629aaeb59099be913ce3f7f5e0550623a938640a1447ce18bc570df7f1bc486736086edfa2d75a1a9e996ede599e2c50ed7b23fde3b130830e2a0cba6d35323503c786630605ed3b73a23a0caa3049c1e567322cd4c31a88f7930d23e974024f57fdd98c02bdbb8b465b0265d25f3e38e0c9202fc564da4395ec9d4e8e3d58236589cab1ab237693e5db4cc5c0e5a62a147d7150a93ee5e8882505c3b5b3359c83d1369c70ace4bde47a1d98d94d182e18c3907f036c3faf7617c67d6cf0eec2aa24acbb8d307cd51a62cb9f762f5811682c0dcd6f76992f88de0a50f86368bbfaaa75f99955cd70213387b563380e20e510d5e01aa5bf0beb4690f44d08cfa233e66898f9430a6edabb40c16207bd7552987a50459b349f5149e249986334793cc291246aad1ccce7badeefa6d60b54d852c0b9c64611346d97fbe3b65ab8009f3520197b2306c530b4fa3958f6aa278261f00b861e84e17b389ab8bad32a680b72398d10be840a5fd592a116175d46c22ec07804b189cab535db016b284faad1a48eeae111366b63ea63296f64ef77eab6c21bd082b8ecdf56ef92c3682bc66847db6af876b2f3f161dd6c686f2a0bb460ab85113d3a10bceefac2716d0d58eaffacdb379f5ad4fe61e1ebfae8058fbb65e3fe002c4cb396b772c258ba2fa6941117f2d07cd1f146ecc291912ca94700cb33836b0de1fcbabf87a70e3128e74a5d334acb785c0bc91234bb8e9a021e66e9852e332f3edbf96574be5e938a6310f2920883f9a3cf483c1603c6c2ff173586fc10ceddad742966bcb2c6d56817922d00f629398e0dcc785e6a025fb05e9b7be726c522a1f9a2f5b1f6fa419ba39d6c34d8406c2e6c20e67f037d1dde7626f1537f37d3dab8c2efd1665f69fab1a44b63bc1f3802ba52240e26693be3974b243b7255ee7d0f6912c98691e7f46a3c77bde27279f7f036da89536aefc9fbe3c09125e44b19707e4a34deddf42a3ea00c4dfcb95af481e349896219a4fe9aa8c9b986be9a0a4568106eebc7c8f90a2d8acd76c8badb5734f5ae3982021f05bd10194c51afd2e395d4fada86cc20a9e74f61a446e3474747522060a6ccafef2340d6881e223520f67b66b2839deaecf3af46a72e8f754d02906eedfa87c3a24572feda3b3e3d4f81eca4e5dedf83851b8fee2b50411916896a23efe7f7dba26d5a9542d23f82b3aea9475ee9e0697f4d951626d1ea18bdc90f642e486890d64cfd513ea0e2445dfb801ad4aa091bc81ceec8f7a6e163a6f1135c5cefc7c2ed76f909e1764040826846f9f65d2173cb3d9963a31e276393f37562101f936dffe35f0d31bcff4732fca0f051f05f5d260c4b09ec55febbd208b40aaf138e542a701cf548e9d10d173ee7fbff8650c67505dd1d92c2d25e8429f09345764f22845ceea55f0c42a89ebc0bf242f583f77b4b4eb02baa6e1c71962468a1e99abcc9cbf0891346d3b489889973cd4813c7312454f472aa813be253689d6f818bd91247b342134e6f2f57b5c0eb183df244dc7a7a2d473177c83aa643abfc478e1f423ae25584eb245971df72f670c711d0ea5cd4ad06039d99d19b14c640b62c5a0a747f96567d364850a08fbd758d52bd347b3cca5ab79941b0808392413fa78d28abaa4c097578fbff1c211fb76947fa28ad25e6083a336a6869072376c85ff3e1f6f95d45d9ff0a9976a8aeb2ebc755a56efbf8dd4a655126ad7a71c6291429ec5262f815c1205044587ae3eed45258765a122f54fcc7628467bfc6f3aee81ca51db08177dcbc1e53702b06269b40d6f3b428882437462769f673c2b3984280e79e8fcd6aece1e9ceed0caf73ebc5a5c9e3769590372405667db7f48b9c72cbd77b25dcb845b86da406b9e73f23c622bfef4fb9d20b568aa264fe3b88622f1cbd4037a31952c1b83773af4133d5756a3b08528acd16263b5dd5f6583a07e07858dfe3a37e1166aebff20174d747cd785700273cc5912b1f703f7d6a0d9bb642342bec4ed892d5dc40c31052a8f5ca918accd42fa808918614d7a043dca49ae0145c8b79cb7b33c0602d572d410d86a060069e0d2ed9aac15612b8cde59ae3ec0a8edf64728716cd93f747f402f11076356e720adfb8ddc4472d85e8ae69e36fa641e219730257dc59ef39a007b92b12a364ef3ae72ed5f2ffa56a7a1df240f171daf01b6b4f2dd2556764c477aec65f2c70f01574150a87f3bfafa21c89226a2b21e5b3ee62a09a0eb2eb4f5fd0540fb1bbaf883c1e995aee01d53f6678286228c2bd55204744d510acfdd4ee51ee786293763ebe4b69fd49b7f83ba27b37c1f1ccd6e2329948caf930fee6ae1843b044ebddfdac75a25d966f4b51e84313206b34b2caff0bd782ad9fc3618b3f5d34c2d89e3d0bc77377fa7d9438d5f3c8a1c853504c38e3c11e9b5fe3abc49633e57b15f35265412ac70778c673d0a6e99f2d64185a9f7a82c17b5a0e46c51e0c294a8085dbb236977798bba326d4e794b30d0751e227bd87b0697b7d39928eae6b579bf24474cec68695e572af043653e550c1287ec9afd47c86356e370dd06661570cd993bc85065b2f59c3f1a98ac00dcb7a4ec95be5ee51a8fbae7b8785d7b7211d7accf9aa3b8228bf4185a8ca06b1cdfd19e4ce081dc4afc93bc4347d9c1e623cea9e78e189954f819c3a6d5328df7a7b44e2a557f5b7389aeaefe541bdd1a27cd138d2a1497b2a4f78a859751ae306083128ae223c3d52ef27161389ef0fb213bc5eadb74e81229c74b224f6afca451dc5f88c501277ca4ec329a5c6a92646dafa2e7ec17e09361e403c4e8d5311b914d1b5e2da73eb64c1cb781f9905feced013303ab4b7c25151bd7ab96892f7d0b00895714d06d402537c9bc15a724e9797c28c485706a8f8f53695bda776513c928bcbeb4c374a5e9738a4fa9237eab2f5889f50c62c40cf8ca48880deb1d5f0c4fd71cb0cab687a2199a20e81c7c4ba55cf2febef78d7f3ddfe7e3c9797370d3330a3dcd7fabb530a88cb1f99e1a102449502a518ebadca74a40c24cee795d52d5997f08ac39cad706dd8e4008596c7f4b1a03357ac530a1fce05f6736908d2e7dcbd8616044d12f36b6f3612b3c5d1bca4743719d5ad617213def5eb545686f9a5171702ccf23c3aada645dd01032795f5a1689c835d0644ffc3e9908e1f51df0d540fe739ca2d6cbef4bda4fe44b79f253896744283d730b4eaf32cb102c07a557282f3c9281ab8fc1f4d5d60115f9a2fa3710abf188615a1b39882e8890d8dade90067f42b43cd11ff0b330a4d376e987bba18d05a619745aa07c59be88c42cf990d191c2d7f62801c0b04de19eda30f18012eccfdfa9b0684c91fe8d37ea224062af3cc54ebaf408fd6e35eacc7e99f82e0303026d4cf1296492cebff2920819d82724ae7cbf26c9a1c97234315926fb342d6955fa92057734d7cdd0b190f6a10da276e241becfde5c21b19aaf3131133fc2bfa0bc14183a45114fde60e27eff7703ad6d4a76197629e1c95f3cb876386ce0f5405d52b1eaceeed47f89904134f4de263deed9c642ab27e3851642b0306abb57a6bcd97aac8dd7406932da7c38073ee097a04e804f151d8a1361ee34903e2255cd88786db26f109268250f3620c593febe4161888d4c4f3ef2fd2b4df5cc4bb837453bad875578063b4be31df02174bc9a6dd007ba10d4e1416be48dbe41fa6f0a59f3a930fcfa34553538d5bdea89cc2c777f903dc4d9df58a256d723ae96a3c5398d2292701ade7ce2f966876d24f618fd4610f20d14662e797963af9575f11f50f905daf19d093a8dbc2cc121e96f9a697198caa2ee2d2044a58f95fb42ff1ef244816ebd4b12d0608e7dcdec13658b90205b81d17c2fc8c95ee04d1175c4bf08411f7d9a7e76c5839c3643f220ac1e9f8907cd2546834b97ab634ce6bb7e3420ec602f35c7fe79dd8761fcd147e3dbca125db483d09a0abf4b2615205ea8863d48750df7a7bec0c1503c0f5fd143b498ab7698952123acc0b0877aa54f01a3c3a35d0260f4e2e2e8ed2898561e379d6643adf891ba0a3d3d48312304497e1cde9f91e0103613db2f531799b84134b2fb027b0e64a06c76df60fb5870a05333feebd6bbcf492d28bb7cefbc94d621f56a1fcba83234b4a9ee240834467306a871ab16b6cacb0e9183e3f3966a6a26569a3ba04e6aaa9d150accc95137b652d3334c85ed3a600ac64977aeb473e38b9d5a2658558a11012bf440cdad0aec204fb0e3824b7ddbb2acc175dc77bb99f602f2288042e68a0b396f780822767bb4026e3fe5e14e98de98f152775aafde31b4dc8ae05b2f6320409304807a0949830f4ad58aae1d018391c00fd18368b27437eb0eac49abed0792eecabb63d8af6a8855849de546b6f6112e5666b508c1f35f64650430ee9390568c794d50de742da00b71864dcef9b9c5cecd0618b8a9615c7e479638ca55e34a82f10504ac94177e92ed19a3e7b1ae1d6730967a689eadb05b00316505ce824ce2cd1f9f1f38b2be7f8c24b919d5b7c563ac6239a9c8bb1f17d0f96f975af467c1cae5ef8090b62747fff2efbae437d1a791fd724e87fa03896c2b5931244ee14e821236f84815b2f51e07f7194abeeeee1113f596ce191b33fc43a467a68b7c685c7f44a930095c77a7ea1e3d1dfe18c37fb10f2dc5d9c33f0c44a474a93b7d208e40aa6aa707ec1e139d386432049019d21026c46b6a23ad2f1e7dd606e807620dc36a2180d818a6634f5339c23a224c82c60283c4142b914827d875359f223a8bb844ca2e6559729d75c09d391706dfaa8391ad267112c22307c92cae6def0d6ae6b24d05fac864c4db9c2fe8588a7028516c0b2272eb26db706c0755c7b68af888e2845af2082ed040879b911295a9197406c38911cf7fd59aebe6d35a3288c3e0c8b35638257e82f99bc0bb9e6e6d8169c1d8f4cf5093f5a3f90bea0eaf4086b606fd4d96a041e47243b0af565abc91f106b8a11e47bed859d2c87ff802913cdd3535ac623aea086ec63c5b4e5af39307f43092df65f1ea5b0f3926ae3b79fc67c0818b1dd3f276af5bbe6d499aceeb04f8477033906810d61c0912b5f1760dccf55e4753629993847d45babd56fd06584a83b88288cf811a4ae1b4064d3d239c0b414c30ff757774314bb8106ef80fc6412a5c56d9c948b98e67ddda7a1372b70ba1b9db5c0297109caa2137e8c3684b6b13d59edf7c157b3fee5e7162a42a57119dadc54a34cb5ea322f120d5cfcf3830838f525a244d6fbc6e17998eae1bd965aa9acc1c54898ef6dc8a26d706ba076d010dedeca2e6f588f5163a0e0182c52af290b8e9e8baf6b8af5db7d7b87c7bec2616e26cf900aeb3adba691e2a5d1a77fe64d7076b456a224964c4a4ba8088c445192a0eb0f937db2a4f9f0d23a2ead95f79bf960bf2c7b42e073e8ed40e915fa004d257aea7dfe879c47671712e99908df6f9c25e9954662c4462186e44f3482db34afd4313c0ddddf2f94fdf94d6849061903d33b3792ede5adeb1a200988dca7f199372bca96dedc83b0f757c605f3663db6f6307d0d822a05b7eb9f45333cd7c1303dda238267a9c900db386913401e5313b3bb177ec2fe9e85139e19224998f58cccb0c86c9ca5bd178a3e693648e426932d5a78c4a1d33ed784c7fbe211d974c49541407792eacde8b41ea3f866a256600f8357f059039d63a89b490f30873868759b932153359caa987113396eaed63d12e12e658141e7a428cac343e10bcd5259a5cd37cff67f89e9c25d2c86826ebdd353be0ef0f53d32b4390ca91638d5c6806b81ce92f1032a503245eddc233ac6689a89a5666634eac0312c0cbd9286dd31d0434f4c5665fb2474379d87cc296b6be157032a5f54ed99981187bf412a453e7b2d9578a0185a53aec01437d77e117d2bb287041f9a68425609b986949e4ff1345b19c68c43828e801224a25d53e776b0698c5fa7f62ff7b3498ff68cd35041126f2f0163405242828463c77411aac2dc11ea6635ce2859ff699d2ca2514d5ef90d529b751fdde9a310946874fabc958f7f8c689579848acfe605815eaff8f70e607f1f2921cdb52cd48f6141a08f08944f17e235c5cac8099ff28b681c04d58d94a5250e3d96ac8091cabc246a544416619aee5b72b44d2a599d31fdd9bc9563591f97989e78ae762f62a753160741035656069fb5d580653be8f6debdfabbae674056c7225307c937bfa6ee31c3cdd6179142deb618c4ec52862045b05e52e3f4f19a9fdd45781657c5b1e8a16add584f7a9735120865010eb45e6330e1ccec3f5f96b79424e3fce2930ff91c9c5130ec1fb61559e97c87c37f07b9cfb0fc1c09b22f2c43b901124ed61d75aef9bdfea272888591a7c9792aa22175b260311917dfeb4597d6d2e1b4a460b137bfdded675a79c0b18dc9f6dde6c1e21467e13fb28252c1753aa7a553f47d53eba8b534f8dafad827d1a39ede247dffc1eb733226cd61277140f8190c9806d1d0299c1f5348fcc253eca7a011c7f0139be60548467fe3e2586472b4e7d02e3143f2a1933b8b422e0ac96d26bde4a364198e44afe6f6b4c7a794dd7e8e6ed80973c614dbb875d4e413bbe0c10feac2d7c315b7ee604b54911155cd06cd7f909ae5a416c69427edf5ad4abf2296d077bab7bc1144107a4476fcb04225189362daee3c83cfde8226d208cf599fc8e7e0a6272c6c1cd8a21a4e04fea9dc0587a3473cb59d036bb0cda1c7d8990b7c2de8e9d92575809d5446f0776ede2ecdea154b4ec240db50b4938a846c9cf06e367daea582fdd8c7e9e661d8731d98d0ee090af70c8b1b69120c4e4c0d6976bfa6f3a1fb8074e1c5f43f215df113cf0ee55a95dfe8410fd682aba61f978f38723a88bb5b632ff787bc9e5d713e6f85ae516c7d025b641c79b6380d71e9b6cdf05d4e4fda5e963502c9c23232f99b277b8b88f52f70a8cd792be11cac6166018556089ba3d990f8b07f1b0ff4a89c0561ec42db8ae3dce4c11164a0ac25949ee0faab8974f9ca6f0dd06c44bc3022e2f591bf280a1569f0813f056f413ec23097fb95801d82aee61bf0ac62c51150a0ebad0293fb4f652bac353aa4b181b450a1bbada705042946df282d65ff7dd6ab9d66a9577e61052579344369334e09e9dab8fb43a55a991ee2b25fea8b3a4cc28b47ae87047f4fc9e35f227c74143f5e8284746a0a7b7e39b0a2cca64052f2f7d5411b6fd77c59ea29f4a2db16b2f0acbe4bfa865792c14b5ce5070429984b2dc33ccb13925486564e8a62842c9c526016f0d6f14174b5e2fa4cba6405fa31ae3e369d27a3fb7ddd9a6c0ef7c0d93abaf6af30149159250f24ad0fd7c6a2535e54f3ba34d089d96217fb46544ece3d852d5f3b6aa6ee0ca376071c1712ed41aab740d53cafafbd421420db3646d4a9d0702f2808f0b1d30f12c809a3c5257c6f3fc3777e2c7dddd9a6d44d198da76b45d808162576a225141d12234b6d1e20316458d69507789ff722b5d7fffc9f25da60728495513ec371401c0818cd8f2a3ac406b6b853025f5ea5a55654e0bb036c680a0b0d2fd1e2d4289da4995a4c71c1a37e535ff910043b8c86dd5d787a1629358f5775d112fdef0648b6b1c142c1be662a694633326baafcf8d5817b863ec86e77b4a68d151f900f59f6b45f50cae317cfb65811e457f85b33e6888f30f341a01a9a54cc841b17fd31384ec7e3c216e4bcacb8f73aeb40d5e50c76d3b96d1cbc690c0f8d33355a8c060fe7406feddfa08f1cd51dd8d882d82ea51a566e03659437c7cfe0fa1c5dfe98cc7945ab6976417f112e0e30d4fd989f44769d8fb81f61117ba86ce85cc29806eb9803a9fb7b604032312921f0ed8c50a51d210f564d40a79ccdebbc8a1322a43328deb4b202bc744e5f23daea51ef050e58cf188ca7b0c48867a8badb346bea34bcec089a2ab7abf9be8310a06f4064ea5e866debd915d9fe4908c4f370c372d9d4784fdd80d7f2557a25871b37c234852f9c8dbf4d391034f0fec9098b8003323081f50a4d47f66f68b8e4057afdb916ab5ab31396c6fa00e2948abb2e79acc442384d5e2453b1ce2c40da652a3b1499557b9d6c28ccc6ebf4699f2ae68ef3f27a86803b6ef0ae188a9499ef780cb614e0b1290156410811b22edc3c781e1149558353470031daf07ee19b5cb8c2e856cf20bf7b687d112d8828fd19328f3cc86f00b7c49bd3de6cc625b88560f56044fce1888e5cbadb4757b1a54028c9087ebafe2a22e1b219c75fb589396901e3395f8180e4f39a7fc551b7aeccecbbd0fa9b35f1e04151192ed3b726097a83f72c947f4839bfa03ddd243cc5c891d53379608e0f409457aed303a9268519e0af7ec9d1d6a150b516b9d8d458a50f8da2c892a922552f0c8c9d81d8f8a41bbe7ab25760ef4ffda5f4bfde2ada2e51dafa4cee58007de1e0781977ea8a520c89087b14876e5a75a062cc527b499d37bc34a571222a4ea6e50e9782553f5438ef3fcf8f986354ffb9d5518a191597e2b21ecbb9c10f77bc500c8903e5330f446442f9cd57fbbc546a85b2aae9474169422abe35a421329ffc3390a73ad8dbf49f80d1bd7d3a92f30ed44726e607b7fa74480bf36eb33972e6bdd14c47d4e6ee1bdf979e368890386647dfad9c64820d57d6c3bb75ae65a2b2577ba1d53ed8ae97ea1cc5a308e9bc1511ae5aad75f0de7b99b5fe44145dd825b59642fe23bbf3971c2db459c778412427fd9250c95a0476ccf582195105dea9b08e7eb25bdf22e12f7048e1b1cae87fec0f72cd22c039603b1138685e99c2ccfb074a35b0afec00852ecc36626ea07569074a028946ea5670738c56b5925cc15fef679f54b69ec496ae234ab96d613c14c42ce1a48028faefd6933e11ce43dd8ddf3f5aab491cbf7e1ce78049eb5e6a290847ef6f90edf185d0ef300296811b804060a85c9b6cca892d2b339133517d945c3fc732817f64a1c7dc6d4f7d7f9969c2331bbd232a7edcf1ed2e05cbca55687ab895d372d080c1edfdec293331193716041b84a3e4bc27869933eb42ecb4e73a8d9c747081f6f10683d92ebb10819f05fe64d235b4266d97d27504dfdac51d505ab0620cf57b57150b103ab3475bc44c8d85882cd1a3d3ead41d08561592064870bd531b8749cc3937a608914b5662d71061edb001df8b5bf4c8ed36218d479c563ef528909c8c5b3961ab0146c391439ab2a46213c8c400750708bd120878d09ec6ca7f5437f368ca3bc9d4dd1817cc2581f56e6412b06dd1ddee1c20bcf9e0e47b5cde5fdd4543dce3b11d587043fc79af60dab4b4963db2453a94c84661848095b53318d791a70b3b4074940a65cfa87087f61569fd5d4eaa0cc616a56e0199e432fd827498a64edb8c7f1ac6c71dfecb613ed330d9c8a76d6d2e2dbe959b0348a11f5284cb7d9c8d70344aab4579011bc5129dcdd3a01c6373b69ad816d89236ac554edd59e353cfd671c36467db13913a111345a0e110543fb3ec21a71d433a9c8d1ed74b17f554e0e444bd14c71baf25ff08665f16097dc6d99227a970ff6f65d03ccfaf4b5d83d55e952bd5bfa4ce3a83863d14c86a0f6df1705ff54d8f09068ca2a7d63511f6e8068642a038d19945278f9d28963bae704f69a132e69ccb345b5744a0da4cfdc911bf3c3e5c80903f5c359f012ba4f22265c2a9be3ba9915fa4960fd8e77e1907e9d37938511386b67a581ca47eb0e9f3ea889826e531c8f9a9b175a12c8e8140ec0ef959db4f2483f9b2356919c3934c72f7722f7642f11ae62c67f402c8a02a3680e4bf7cf864cf548bccc248756539687b9e6ed129226dcbd8db29bc9e94600f1e027a78d4166d5f6f0810782ac7e4d2266972e411846b45cf4998626fb106f93044bb580c5e7cf8ded5811f7196e1533d837a90c6d6f091502e40625efc3c79d8399adaf134625fb0620ffb67a245391280c0c10ee8154e738c88eafab161133199616184e20ea045a17a7bc23194a79c5850f7982160d07c680b1bc1be231687be7053458a94d15fca64a3b37b7826fee770bda2fa3f2a804b724dc34565290d26ac023a9e0d217ad872c2fa2b501ab76e9cdc3081df6a93c2620ebb1eeec5c0f37d024b66d3e21b0a82c089e485f46b10093fe4d740fd83df7a978252ee00826b660d8b7e04247e64eceac0babb24ed56c1ce35b2ac3b74b55ddc7fa15055e7781cdc51545b76362bdd7508b5c514abac4cce29dc709235dfcf7cdafddc5401283e9081ae54f0556db523a45274b9dee1e76d59b2eecb83f9e32d6e0d2b6b152e9194bf23a69b907780c4f9012f8276ab4d9f87a5f95f7f26376c4bab641c525fd314e49d04cc8e5c787f27a85eb146210f6ad4bd85e0e5893d894066d869a2361b6f65dd3a187f759a18b31ea867133f7c420811a6dd90cc9e6555015c461151c8400ff78fef5cdc4ba44fb1f6ebc9651c255f50dbdab49ca26a5cf27e44a1f203f1e6d17d0525ef0d5b33a156faa5d8b678b13bb22f332aad94bbe48ce81780d1dab9a9b70d5ed3427f3ba29f230f40ebf8d628b2ed12abcba058356048ff03af78738c8082f1ef0187285eef87b1285a2ba6819b25ded950af237904e30babc53304e0516f4d6dfcfb90f1f375b4825d210143f625327181ed13f528da2749aab853dbd1792dbc71c3c56b06b9f8205188f680f08c4ab350188a2563f79fd3adf373091aa3361034c0c65215a0f73c6b4a1cdd8c47b0e52ceaf436412752e5bd160cca4d7bc6e0bc00931d5f0733f12442ef1421d87ed0dbc5438c2c54483bd54abdd180c1f36851eb93bafcee25bf32c23173247ee34167302c3e1ccbdd39fcee14a6eda9c325371a9f083c684c0b0df4f85c4e19938a19ec869517946863d9867a257c44045bf8d90e5ecae3289c084f57c304e2f4fe89c61191886863e5d1ba69fd97bd1192b87bbd03af2a2420ffa958b31a51a978b96bb3645e31400bba0b33325773091599ed43b3158cc4a587a952c9ded0e5d53ed0f6f4ff365eca151c709cf01893722d4bb820e9090020bf8c62b77911d7758304d45d0e6d1a36e9b05266826275fcff574d6f3d8e5ce9a09a4fc39c1addbe0f83046df783930a19ccf78f28f3a04c2616a0b78a73283defb1ef458074fd99e74b112758aa86235b82f26c638739bce5ea3486b7e954bbabbd992c320259f3f65e01412f289d05b76e5424ce956aeb6703a25bf30163e81f10287a3467cc3e8e670fa5df3d9e5496e5933325e0813c7feb282d616b63ab75e68ac46b1223edeeaa15f302f13b5c6549d2e89caedf567b880de2912a40d1df96f1b35d486efbe78b6ffe0bb19c8bc3222fe687afc9a50deaccd9ced5668a522b1f85bfc622658235e84bb9fd56f143de06a74db512d83da37261342071eacb6a958c54db98abbd3eee9557794fc7bd5136f4b0ccd6616e9daf3f9cbd98692c93dfae1c086c535c59ac4bd410cde52c6bbe6e666540f87097012c58e99a639f456ce3d28e0066c05dd710a023224a22ab6d09fb866818abc22e55bc192f99936714bbbb7d26f1d745fa3b61d57c97c44c878b0a4ce9814a3095da79aa5baf43faa2d5c3176b8619e9c85576f3cb94603dba12c61da7b48900524fc987c2acce2a7069eeb12ab8908b8a9d481829aa89451c8bca69aa7a0486103d6524777de01c68bf1360dea2fa91fd876ef6e368ca05483b47cca05e1ccf65a254440e71ea31a4b6ef0a7261f2ec2d389ef51dffe4a82e3a74e8c12e6d47f96d85665fbeebce133e80c9a8952d0d980c708be0c6a36da8f35869617e51635f0337d7defbc9e28fdeb397b6e5c8729a11f1f9bbb6396a51a6e2e46c24778777bd34b58ea439af1a2f68c43f78a429a889055e47ee322bcae74a9b71bd839e5267e073449a3696fb5eb8b0df7cd0c4e66c9b374e30f50f061cce4c8b27c90e24c30ca467a00ceedcae9bba31a209abe2e3acd51262d086eb02b29fca050a028304a80d5edfef1d10f4d36c18a045c6ccce1250d00f9f8a2c289cd0363f4e314e54366490622585a2192c4ea8ae4fe8444027f991e4f603e87238a78b7fc7a6d84e1c20529bbbeefb9c06eaac0a75760cfd37718933e9ef56972fe939b4c527a284b946fedcd293550d3cec3774412e1d03c9c54773536e82a46dc5fd93bb38c2fa522b4adf75ee7693496a0bb24b1588fea646a1bdbf19c278b8f1931153ed58a9cd72263f02dfcb67cfb3f90d12e630d2c9fa8e51d54a8c469674b3ea91f6ccfd38e485fd20e615575f4486d2e68bf21507df130f5929f4158455771d0ea15a5829d008fc4e75b0449bb02cd3ec7ff991945807ffbdac0b437cadd06e32b57b8de218db84f5979ea4a3a8b3e3231929c75a85a9c945ee41feccd16ee3926bfc6552250ac312775e01d669db5e852131671754113eb16ec0ca3e93c84851e7251ddb4837477279cd77db39889e304291da4f8ed7cd8031bcfe8acb96ab91e842e6ed69d28575023e3a07c54287a71828b8133edd0ec5cfa94622b31de0fea8e76475f1f7566c113e0e057a89fc1a0714528f19af3b7fe4452243b917fe5e14d230104da4747d4374cdd73cf767c7119c296eded2b291746d6660d8f1df37cfeb561b8e2e021ffa66e5270bb535615b8f740dc73e754034d4b8d7a04ea483bdf3d78cefe2011fa8f7d7e16b055891120a9f7e8356a941ccc016f873722f75fb98289e4c25dc3b87dab924c4f9c381e2d6c659600c1a5e80194d58a950a84c7a5db246d2badd4c3859b580eb8af27938b43e608530b6a1d935837d986ef93bb36a508675b9b5fa0f3d8885995f5f8bf09c0def758b0e1c361cadd1c0b6525b229fd47ff822f80712d404a186840e4e3bd46d413d1cd830600c19ea89a3a5ad7b7f826388609e29dda18e4d5a3b02adcedc4d83f0b56f788f7ae61d56de2a35cc6292293eab846f0974a090c0cec5c2b3b3d0b37043513075e8876ce18cdd17f924b21c0cede93cbb3f48c9400be4c5439fcb57962ba03b365c45b4260cfbd34ee78334e2ccf1d06c64a8ceaf95710526a34bfc30aba2b3748fba3845c5898412eb18401368265f30ae745e57d980f560320d89847d4108cb525679201ecd35475e7ae044b2f2b7ecb777db2cb1aa4bd00805632ed78cb05a0cdd57b444d3491907265374942581561c0e5cb1408d2b922dd85e9c8a346b50aae68e57b9e9eca1168c0cdaaa75fea73aab0855aa49633d0061837f28100f80dc5e786609239af40f9222b6f0f969593253ca777204b8f2da309ce41199eb79ea03241021d8afa89c10874fc0aedc5b1f2149616768429b43069cdcbc6fb9bb05eabd3ff82314515c5212b04cf2c6988ec13acad720dbe5de5acfdedfd21adf89fa44dc2363e99338995de7210cf9b798f500d1ba5e97d557d7de4ed329ace7366f91d801bb52d48b9a6dde47a23b6e0f1498732d5855f336dca1d03b7fa4121457abcdcb9248a074fd2c065b4078d6af86d5e852c6587434fac053fb0106ca53187119d9157d5404dfb66a4dd871975a49f6723666f7e7e87a28017a815e9d43e88dbbbeb050a8935071f5893d0dd8e86f7d85c679553ee0d54a7493f617620d54c06ac899d6136cd6f7e7e2a72944539e62586243323afb3933ead7fa58ddd0ba709c7b45e94121e9d5d90b3209a4868e9042bc8ec49fbb0b68505c4a759967ce977872f14e006a7511c35e5e49c86f8fb3750427a7b28f5f9d5d074aeec8f619f5f3e11aee5f045b85dd52906bcc7e0058f56860d5d47182371e257f03594d75958a8b0512f734ef0b675b90edf11fd958e3f88db75839719d9e0d12d395ee92a954b038bf77bd7b798edb0af2956e229e7be2873fd8c95f5b9dd6540a029475ac6fd8ff170cbbbb66157c0d7903b5792b59d42c15a3e633156f5b342644e3f4d9f5e6e8d02ab960cb70768e282422917ede03dcd215d007497e61cb434b0f3bf5fdff47b5d5698d687258e6a4517cad3ddbfbfe51ecf8aae11043d1800d1e495f5d3bb33b74e05d03c55a5079c97e2936c9df7907e1111f993d5524ec8196747d26fc872abce05b6fc5a36c9085fdf2aa3a413b702b621c2b3b314806b86ce16f1d0a624c5acf086982b7bf3c7be108f353feb68dafe38c577324e2d12e1c0d189d37a7344d165840ede431d1828d03686ae15e72f0e10eb5034e3c74cd02476fa673fe13245b355385b78dc969428ba422e32cde17eb7353965bc5651f39332d14a5d19c93b9fb5708540483f1a6df12a8011eeba4ba432ebc6a8e32b65648be2c91d0f71251fa77f12daa84bcae4fcbd798b4c99365396f334fcdcad2cb538a0c5d6dc872d8f839d1b2f8576cb9c2c27808758d1078c380c3615e63b8bbf28aa2ee6141a096ac3cc85f48f171e93149db3e680907e583f098063de64a8d1a32398f2549061444c1ae345da852602ad8796f9bbc21a0d0214b4d0df3dab992a0c5b67aae3e14e005b39fd8c063444e3175d6a0ce097b36d0f567946f41bc762c77d4e26c05ec147078cbc3823e32d3cc05eb0b1cfa66f161103a3ca8ac64b437413e2401a0136a8701b10be36e0202983cccf552f78b760aedea9400c13f9256592ecccd2aeadebfee6dfebb1e9aba03ad047c1f3fbfebbc093bcd33ef3126c6e3daa88f7efa6014dc26d195bfd3eb62dafa4168c0c2aaee9c563e2522e2dc3248414ce29fb65671e72c1cfff46a1c998285e89aae5fc2290803e1402611f5cee8338fd4ea8a17efa9345b75413de71820249b0882de766f1a50d36b6c8502b935960c8d6c5e70dc2d2c6fdd371f77323d4d8852f796bc6a4c69d8840ac56cb25678a2fe1c122399aba41b8c33fc10b2721d5ee6df52be7260bed4741b72f025e5f0f4acea54644017d489ded8f488ce2b73d48ad5065d5d107e53cfe0bf1b7e7028ea80ca2e5a23c9e9c262e0b6c667892c23fc22f4a921b34802034821d2cbc6072ead3df9a413cbd03990ee564a95fecd8798739f6a4a0414331ab503cdbc3b5fb0a2ff17d17d948141107a8ba5848051c11c1c289a3877745d0b352317e2672a2315cea8e6533fb492960246fca7633f98700e74e935c0e39a9979c790461ac97d0f7d8dddc77f1bc8491a4e8934407b5383ca5438577d2728c540036b5576a37b18c9a720d6e84fe4bb03b01af177604038de411e2f29aee9cb09e2b01078b41b6799da12a0473ac972e686905437e33163c6856650c193e2b9394abb9758e32027a46886961f1bc000dce862f40b6cfad442c28fa0ca02bf89113cbbfd8ce991cda69446749144f5ac578117436a0df4776f814b7a9dd14ed51700347059c03a7da4fb8d08373bf7abaab4cf9ebc837d7c342100a0238fff15d8c97ead3236297bdcfd8dd1bd393ce8a6fdbbafd5297695dfc64afe71ad6b75194e43cb675932b36aafeb664a029a5aa294a116e0acc344f830773ee81bca2defcd054dceda6c4cc4353eb4ee7fcff25c55596b25d4cf37a12d0929c06d7b7a4422958a6a68b24d822b9303bdf9fb0f8b47528b462205b4183438d8369d8018c6659d664e4523522ca0ecd74180218906240e38bf6e58132a206ebab996ff564bf518552811a34df58dbc976ecdaa45e8aea105cfd7bc50a256c964c1fac2b720a1d4b13cc758619c2b6d073f06e1650cc536992196aaa419aa9c3544f0b81fd613f766c3792dc0e354da93a3ac77fbc2898a37d04ca031a42feec6ea74729772a577e3e33352a34f60d56c7a970152af376fa396699fc03bd3f9307053a79b2f0ca061c9b9ba4e1f1da26fa1f575c717b64b4c550aac8df4e3ac1cd8cbb0fd1d9e927d89939b25b2607ae16a38b134283a96cc3aa64f244f002aa664040c545621c11bd7ecf2ceca7e09fafe40f4e5e8e95fb82e6a164c39c3490f768dddfa967a739fbb58fc696244f13d74536323ecacc8bb57d1130590521442be9d6aa471e44671d075bed2fd9045a9a8218549f4148609d7835a9434784a23722f9b796abba7d5b2c47ff6b6760eaa25b7c871148f621913ef85a0063fdcb462d280caaa555b13acbf49386cddcaea982efaaa0ddcbab62b5c305e5525720828dacb4e29cffae9c7676be5c701e8ecabe0d0c1ea24005f71827ccc99d6e701c88a51f6692d6f58d308f9b911cd4d73442b62991cdf3af0f9b490018c06c9e982098c4937c07ab3fdea4a75fceed2bc7707ad13991980a7acd31387e577dacfaf221c5af72e2e0c1606797ee1d6c38eba63108abeba826f5f19b4c6627191bdd26841437e3473e69e8fe6981c26610f189fcfd5fdac007fdfb9a386d5e39ab856cc633a80a5853f326ab2a879f96170799193e88cf64f47ff0315765a4c5295958e8b2f050073e4ef114687e6736c694844e8f4a33edbb20365c3c903ee4c99175ee7fd7f6ca118f09ecce7da489d82f6ddbe2607519fb30a3c6be88a56ceed347d492c6bcb468cf4dbb44b28a1062f334ae9ebdec6ae2145e54e27db4154e2820fa93d8d24efa2d13c310724992bb7dad7a1cc201aaee91dc6b09687d80cffb60d9f91468ffa094ab5ba555dc385f3e75c03d40a0f588ba86c5cde7df559e7e9eaead48a751c9f560e897e518f00d7f26f8d88738dfae7f0051d2a8897510c64a9eb0168e5dca6145d1f09d02f7dc905eea674f0b9f5600688462670e33f2f5ef82af13c7f1553d4abbe0101a151d2d352143f155d3e46dced2b0cd52321b45ff7d0790171789901bbee4d3fbac492996084534d6de19459cca6be06042ac424672c2242d9075ae1fcf91039cc93103334051b12de7a05325993f677db424036632f60b1de9bd55c946e2008286f5030298dc47fadba6a62b5547f993f81839d3aef6970c36074552ca18834107cc0f2e0739d8a87e85f6aee4d83303ab8f55da12796713d54dc3af22a21d300d3721d57f3f9563c5d479db269e87972e86d9e3fb64c9667cb57dddb623132f00028e22caead75b50799242693bcac4fc864ac961c876ab1ee8bb6a5e924c6258429f53b2714070ce7808d9f3eb2ad9b43f7424f00e19f4d377f22a42350488954f4311146a906e093cdfb53deac0575f8b8bf47ac38aac1f6ef4297b6c439d858b33a26d9314117b42e5c246d5d6d6fb9562f248fdf1f63cffa862e0d363c04ed899c900e74b7b889c32fcee7ee7f9a0c095cb5ba5abfc13a1111ced8edf21864ae4264fb7f6faf63f9cabbcec266c6add6474764b33c37024075758ad05d6c805442361788f6dd27ba2191a63d90c60aa7bcca66573818c7c5895cda71e088fc674904bd491512cfea7a5b7aa3c3a2c524dcd8c089014c7cf943f84239673403173a44b0057916e939a5fb5604249f3670d9c212630663e980db9e83965c34b62cbd0692085356163e87fbca38f4c3e7a1463b2462139e29d7adef1f4660f2aa3bd5e66bc330458ce424816dee2d16161da0a95e8cc4ba2d239c78dea5f2f16798bcf729748e03952f747a58c43d0236b2ffe3501ecac3385eddcf4a19861bea2398011a5ee6860e459b6ea77776926e9121de2ccce29562ca7e7e327ea83d23e6c82473923ee2e9cc719afc1f0deb180d25d84792ad4415b90ca52ab136c97878e66acc48772aab9f5f1ffc7bb02d432cb3ba9c15b50c93a11d390a22ccb94140ace3a2c7dbd7eec4f214cf4d0d57320d75994894560a6d87b9176b78e0cf4a7963abd4dcb774e0c1c63ea4c7d1e0db1704c80f66667f0db1d7ed2d4845be5410949f27e6f3dec33797012b0802f36900be88d60cb40b2eae6c25f4d5f5b0934d0696c269f9606bd297f319a7afb7bb99262027d5cfde5eaec29aa6eb6a9f314f5fa1b23e626cc3866b0da85166f4e277c102b006b493832716dbeebce430ca53e24d674534cf482155121477df64a7628de6c4a4331953ccb012bddb5c95eed420c836b0abd28c247b3f1f05cf7202988bbcd8be50c4dad2fc9dc33c129aa371a38ed5dbd5d0b5f758b38d34dbcea4defcf90751dc6bf88a4a66fa4be16ce0a8d5a6e1b77e74fb64b747a965111f6e683e248fb40137e14442d01c11daf51364be4c5bbf32052d68c6c9bf0c6a6ff884704552a09f9a9b873c072864c66a9c514fbc278157d72d4d32959fae2d510b2451cb56b990db8397fadde13192c4500f55028cb89c366f1e4e9821ed4c9e2728f45445b3454ec84c79524fd0c70af72452bab7f547e77e63adb09ba3fda5fe88431fee005376ef39d8ff3c6392fdcdcece3d37d61ca9782fc7206c132f20f7457113c214d41a4d228f6eb750f8820598e71082cde3fc8d7f7c987520a7a5ac28c5f55831c65e90c06b4095c53f6041c524476f7dd1cb83e99beb9b9dda926c5770d6e9c9bcee37dd11abeb49af341c8fe432ba9e5076359abc1a47a9d22bbab750b1d472915f15b5f79095651c5fa02ce2f08479f03d0fa40ac4e519b18fcc20ce1c1b62f1ebd2af18ceb354fa73d0ada348d0ed79f4949dde6a68faa58a0d5e3b03e57fead86a66d8fa26ccda2d20a6d8e9070c6d58d98f3a46c516689d9b0165a5fa06daebacf9cffc17ce924ef7a6f345753d698d0735866f739882a1c90638904ab55e86bbb87f3a718e75bb348a8824cafc41addc86245cf1b2094a9e44aac2668c302f91171f2c6267573ba68c3998991ec2842a9dbc854060886055b04efc0522008977f50451dedd4aa193383d29dca95f2d57dc4f06652d3906db6f3f108180bffa8f3362461cb649db3220c7e16e40625bdc7377b6e916dc7154bc47235797f6964a9b48d917183c503168dd678f173ee6c62c630d5975bb9a979477efab3b0522f21438730ec40f352f226577648025473888739bc5f9b101ad3f8b82c1b87471212eac2d0457d10443776fde75001388e72d897945ba4351569fd06f85f0bac048f0632e409ff91373a211952efacd639daa63706f4e1cde84527419040c11022a075eabcf00614b3ebb51a95ee5ab25b67ea9ece3fb8329dda76088f1bb3fa45e37c31afde98a731350f27eba17102ea67c730dc0f29d673d601845210983c0d02439a0e0573b1dd7d026525b1decde7077753c2b9a81b3324137c70fb5e725406957becd6a882063c97a033ca1c21930411ec8cfec800b7e77825c592ac441c1fa38b0e00adadf04ec75f2bde5ee6693f948e958e52d6899c9b2db41fd2e773ce26394799c89f8faebc61323cd32545aac5977f7faf0402d9a62122cfc9411eb4181bfbac413cff927ff7e1572cd96db3fdf4ee1ad429998bac9a027d0d0a0deab9f220a3e0e71ab24296720509c037fb31418d023da416d0d31e15d2d663779c8f9ad94bc539b2bd7c3d035fc087e45aedbab80d46251f3f8478ca293c2b5f44c7bfec9e2174f8bbfec5e266dc5943e5d0acf33468bf8a4a9c506eb9ea507da417e71da45d5444fd3c2402cd498a10fa2265d2eda7ebdb02400a8d4e712fb8a997aef3f8247b8f0374c9f6405bfe77291e8443aa91cdb782a63d419746f22b916a25b3260e37c5bcd68eb4d709c5ab5411eea24707df813e9f0791db7ac05ee82a29b34087f066f889b124ba8c86c39e9ca993d8c9aadcc7e36586622a3c00535089888471c16829db4f0287db185f44c9bbeda072852a14c5e801e46fe0eade7fa6ab3e40607dd7aa64b8ea35882f07e096dd5b6f363c6184aa594815cb0eadf4e300304b94c3b930f468dededf3caecc9af0a635b6a2001df26b94384019363248f049c378e4ef8427c1b1348a533be5bb6db08ac9ccb3ded3ea4dbd0a1d57f8f220cfad8ef3ac5d9ee900a7e4e7383d6a8ad237cb995b35d590ed938feae1f025cb056a7881859177526f12244e1334f6d690a536d80568f6cd7fc8fa5737272574d7ad1b47561aab07f83e65d6c7c6e1cfb5b2f5f445c0e1a7fb9e65b4aa2775e8071dbf2d0b494631e269c46155e123cd67bbe79ca3e0f7bad4329fdb1dad684ae51813d1ffd4398ec7deae5721c15186f1e5750b28e57bfac326061f59e3ade7d0d7e604b322543b598259a2d7c93babee5088fce957e30e9b0349fbc700e4a5959a89aafe43ce4a9a5158783514c16c00d533da5c9afbe763c9a3b7cc6b8b7f09f17fc9d578e36db3dac54c65ef3eef728543bf10d59f78bf7bf0f0152ad12b6064353d96b5b2ac53cea56db8291ece8ec84c921c76e29ff88abf0eb9611bb62824c281c5a873ec228783ebd374c109c0e501bd8bc2f86d38c1f6e2dd1ed8c6ffbe939923da6cc932bb31ff8602e72202f19ed6ccc9240a894af508f2b24fd9c829e2b5c6e8302db9a30d42f6accc805d884d6676bc80843b823d92d46a8c06d9535990fac2813a310fa7896b5ddbce087139a0afa79c410b68d25f70cb1c7a772b28f3418b0a0d7130412785a2574cbce6103c5e5b00f9ca3b18a2fdede13d87e2580c6006b7fc650a129b2334410e27a9ffdc09b8fe51a2ea422ee009015ccb8191db77a27baa661f498363e4e17c7d40f6c564b46cbdf6ac04b9e6bddc9193e8c376bcc9e2e0d27a2848a473ddd1feca4f69478edfae737575581daf9c794df9f9c3aa8563079b046ff46ec9a0e13f4076dbf5e30574d2cba212936edc9dac57e29f3367f5fcab46eb19ae6fb6dd0afa09acb22f163d6188417fe49e601c9251cc754f29748c39a175dc5ac26af07ef6d66e4d5501b67184156bcca9cba0305c8c3934fe5708c11f8109f5fff1b6d1ac1e1e947c5398b30d8c4f2ac7d56720ec70cd839012b32391366100993583cd02e79eca92687ee81583a83cb9bbebe76601ec05c10ee265b5830962adc2cb19046d3b300dfb5e4080cb429de9eb7d9f0131ddc3e66f1ba3251a1c39b1ab48c7ae3083a67a5ace3edf145edbf2a6074b2e96e302ca27da7c520fabdb8d8b2931728cb2f216f7204660235b005795187880e58b4f08ebb8acc5490bde0f71d0f3977bb757d807f8623de74a6e41e78cdfb2d92d6624fc862ab4b1790445e0e4de4fbb1a288c7e94b56cb94d66839c045853c92f6bda17d14fa30d6190520761e4f92ef808feabd5a3c22029bfb791db2d2a334e9cc43ace79cd2b0cda13ded57ec23408f71b4d95b428b68263acd4c1c1b03d477e4c17d096dd0af35b751d55288c8e282c3c8c71eb4b0e2f91b96ea4d83f562ddad3a520871e802700dc8e46c753ea5bec1c96f14fd45a06d69b71d559290fd4cc1e1b559a5614eaef677e385c88b00de125ae9d47886a02d82e52407b68c8b68104bf9d454d772b6fdbb0383a5da2c315aa46398d38d22b973fa887ad74978c920c98e3501e7e461e460cccf9be2123a9a52debdfa2b77e45f469488ff213a7d16688e9ddb82181cf205f9d51271b92f671f64479d16f2573316f4520bbc5e848e4fa910cdea796a92c80f89c6e24d7be96a925a3c9ad20cacea16ba70501653499564f50e8eec604355acdd53a02e3db07d7cc2cb2c1ed3af19efe71212c452a5caaa995357ce28d4b7a94cd5ef6ec75363646ce28391d0f2d33ec5262dee5ee9cea2ac7e250c7ef38465538fad231fe88656eb7a10fffbedc87782270e04485fb041c2ed72ea360e3750f2acbd68813f7b70f44302ac9e25e38512dbe2d5533ea63cd3506dc3b47dd8df2f0c4977dbfc987ee280347fdbbfd691ad668744ba656dd7bb120022720655c3931a17554f765ca7327aa61f246b7ce54c7351a528e7918abb51934f7ea60ce6abc1969db467ad0e087e6172c19432a12f626b913e616fa4f66781a0f9b3816c886368a516757ab6a970ee414defbede5991b15c102af2d6f5038589994b3c543fe77ac1327d5265ffecbc3b39496a3312b0433ca849631b24d1a1ce270f3dca6ad50dcbfbbbe50618f51dda48b3504064233c398244c97452b049ea0234999ca6842a1218bd98cda732b44311f71f259f7a3f680eb6a7e03580c0219be11965135666d0631e935782c77ba3815dbe36d6f3d58232bb2735e475009af7dff82bd70100d66b22f43c22aecbfe56c593506010c1ebc52cf3c25b05a1263096144b9bf3a99bf31217b826aaf218a5096f745739bf5b15aa4c50fa59827af458354b0cb7931b7173118cd0c8518654b841321c746ff062732e6a065f3fd804093e4e5b7484d49003d5e8867116aba1182c7ed126471b60147a172758a85eb701625abe7c1822ae919fcf5206f60399819330ddeccbfab9de82b1e809c8937457ba83ede673a55e9da26563148dc1a2003d696c7b83fc89347d043b7235df3b66d482a53bfcd1e8c90cb68a144471f24fa673ed954b42e0a29ce1f210b43a1db013c02932ebd1c420df9fbebbdb28151d179892120c2a44cceafb47c0647ebf0b013dbc7cccde2324380f98db026c6a9f247ad3eef4822c232140551d0954dc22e10d28a538da66b1fe2cd8d297cda77ea142eb73ba6f86740fd79c801b0bc0402c473af95e6ba4b316e3de8d7720510934d85a6b81b1324259a98186bd3dcd70c15b4387302629a689ee3117fce545bb0cd761636d1b84ed938acb27bf74faeceee9982a3e49f1e64cbcfcb78c8a321477cd8903033bc6b10f29286240bf4fdca9de13a89b6f31d98f788ca8e1ea1cbe3e801c71d0d5b36ed57ea670af806a618fa791da592ccfd7bb0bd350dd8edb03239faac30db9fe42a3c73a94258efdf888e572ef69e5e5f78f3be8181d019a97d25e8689277cc9f6f1ee3c6c64124d282eb31cb3fb6b429b02ca85c9a3ac58a929e3475c65432e364d00e9def595b57b3d1b78eda8c0e8d2d236887c3fb46a4dac4148851e44ba9b8863e09130f721d5c6cc74ceff298f91f3bb721d8d49f732772927b22ec8ed8a9b95a6f22214930ae1737f6a3e4421ae3a38eb79bb237baa20eb49b99cb2bbda2d9e22cfa666a2d4045f0f4751f93cb6fdfe3ce26fd844fc43b0556ea5130d501fb9217e1fd9f60c67421ef76660b39086eed3596e03f80eb12fb5869c2e41e8938ad397a4a8cd3cecfba9c7aa5c0df089c2c357e75b0d5e7a10188e5570a6f34ebb4c3e9b3f797b8f33307cf8720595095341178d1050405b7bf3ea06390100670a04f6ff91e09c5695391b9bb608614c532878d2055f7e300ffbf2d8080c939cb8570ee3aafbaf2d2bceca68ddba38d62f766ff5db2f397d8aac0f9392f1b4ddb0069ad9c857cd430efabccd8371b689ddcd07b7f486203601c5f21874d34ac0f8b5f7649d9735c3404f2c9869b8ac5dc7f3f1e20a81f94c63cadaa9d84541fdc26bea9201f0bffe01636897f8ce78508b52a508501075b66d81e71315d08636f5154258b8ab986e584ef25fb6252583e27910086f7556e4dc757e4d6272d69111021468a5a64f16de2da9c65ae35ba6e399d95344c9e9eddc77bf26371a52f23b68838935d4362e15a306e524642923ca082f0b9777cae040170905662dedda81de19ae93b8102aac536bb8b0b68ea98fc1274da0bff9f3ff2f8dda0f04a743a3e0af4aacee0e7721677baeff1be40ef1e3b367b8344597d459f5cbb16c95eb594fe5b4eea3208b280c8bb09e8b0ba6ea2e1dc4133ffd989e7417360f24bff183ee29873218911f0bf31a80d42f737b538917b3139afbdb5623ba057e62c6bea5e6554d2522f6b002d264768be7e71e027e617a51d5f957f84d6993274f6389ee42d2fb2aad6e9e2fe1f7f839c537e5d0bcf44534d4375ebf9e5a752486aeff497451f3a9343182645e65356590a4cbea94c6de944e725c850562f9f5993bdf10cf1793514b6a9d7509fdf579422667057d1849ac502998cc34f638c48c0386990ad49b08166b711da899a19f8a7d898f9158ac4cb9369c442445f9f3581fc640c307e5d6cf27e0d0847db8d94b1686670d92262ebbb4522d8e58c91b69528682faff264c43066e0eeb3e60441bba405fd56d6deb60340504724a101c2165f960925ddb9b55fc7ecdacc4d078c51270afedc25e240344bd529489fd21534f76a8d32d76e47afea8b39e52b42ec7fcbd7e01b7e21ed345bf4ffa2d8da9c8323b95eb9279de3cbe759f19a6ccffd5a9afccde6ec128539619386f5d1227bd25a5ff68fc257eb8b82de97b226fcb54937f63f74e4eefdd0282f504c0f9dc63cda67abfefc8e81f958673a40daa97e03c53efe1cb0afc1a90fbac8a04b6865ec887bfc960ec7c38d34e477adc24f6c6c676fcd7caa2878b90fe48187508ee47e93659409ae892ddc970fe668f0de38b5088693692e4de040b1def8b9b17342a41b9c047b69a0979f5e6b3d61ea5cc632bbdcd024a96a72b715d9601f6059409fa7f03dfa641a991967b87b9f73cf2badcaa6e600c4b6dfea5c5a05dbbfaa85701af9b73cec3e438a06d050688b791aff03da41a8699004a54d06fc7afcecd7d829e594d28df8798f654eb35dbdd6a949cc8f41e27565d3495c6682909cf005831211d1e01066f70fddfd4c4461cf8703153c6ffe2b2feb4e637c3b26348d2b96459a47a3fea7b91764454b326785c7d5e983d728166c215720ac957c6cb48e40027e5593cf99760b07ddb08aad06eaa4357c6d37e3dbe77a2dde44db75f521132783d982b4abc5804b2a44cafbc7a1954e5cb9e7cb6b54d0bb9f891600f4eeff606467614c1a485a559790db19747a2082a5cf6418c2fe09e41fc60c489751c7b4d3a175a680a09bf00d15ac28fb64f626eca214c4f85c934efcebf01c372ae41bbb705d442ff9ae2be414a9bc6d0de3caaea09ef70a97b60fc7ff4a8c939ad1f750daa76184c02c7bda575b5d76e42713929bd0562cab7970a0b0a20425396062a75d68bff7e9e5669aa797855bb22c82296ee32a76b15a9b4ad52173a20da9ec6543f7ba4afe00d23b776760fb259bc5af672b1040882828987dd0d46445cb21118fc2292dccea9923a93b83366740dac10c5b423d2bc47292b02e61a4ff7667b480ac0fc2a8026ee76771b9d49372230b7835953b3d8b87e24de8915f3f648a948c766d140a50dd3d6d0bbe0e7183b8181ef25473abde84e3dcf9f62929a2589807a0b0c67ff148badd072ec87c37410c7701af5c5a7439976f94eb8b098b5f4d5c91a9620e20cd606aa6248ef949a492c0e52f5daa4e58142c113d4e39817300540a22f68b91e93d31a934d1220c96e00f932053c1a41c08754a42e31b71acdcbd10825d6815be351da9de3d4ace055bd032f90103f15cc5c21e597630659bddf4f57d3844d9a9f082e6b971fb4c771352114601ea0b442365bedacc708229d5bf2103da9c0a63b0f59fe1c75667dd15fedecd6dd9b9b3e79781b5aea383581a0d69b317b96bf70a425528ee424fcfe3c277154fae4569bffb439db68814cd1ac7b39c9361b6549476045f9ac06ece7022f06a9a204ba5f218fb2eb9dc476f98e468f37b7b277689f59970e2756253a998d4fb8e7d565c8434bd518fc5642fce9ffbe36694fa6a58267f403921203de726a4fad49079facc36f2a68317fb72f79520f8d19fd2c594f6212fb306d8578fc1417627e9f74374e46d8c3c4fb22af1f4e246f725ae3f0a328dd7fbe4e441f2b7e07dd6d73362f606117dfb97db04b57e8c7c0d0169ba8351ab3ef9bcf31a831bda1055caf3b45b111b784ec28d505c27942767878ce7f299cb1db4abf2c3f068ce7f23852f927c6eeb18140148a59383c439815d99ec6db9811b8ae21632b2dc94b751bb26851c153d29d77cf56e7edd158ace52623dc73fc936a4dab84ee30f632befbf4bdcbcfdf66547bd92b442dbdf983db6206f8fa37fe894548c5274bb90347de956e663cf5063f2c260dfabae81cb48d227619eec0a660f996afe4045cc759c1e48715493d676455a08c03271d6237c60f61756c8f11047e69c749004d5addc98555756b213edd35a3144c338dcafc176705fe34a29c13b646fcbcb09f2c475eef57ac6e5138812f7f02fffc4c0165f57dcfdd9e7a3cf09fe9ebfb818892d418ef8a254a3ffd8d8dfa90afc5d333f0603588ff999b487fc7bff4c7d1e1a46dbc23fcdc31a4437a02cb92a3107c7a9e7789d3fd8d0f58cafb6c18122ba9b1d3a180b13882f9f5667020fdca470ad1c4c206ff139fe42d0e6147aed064823cfd64cddfa7aeff66e0cb19422e431e9f58754f20ea79a9b50ab8d9e5e8a1328fc1f4257182473796e16c4a7bdddcc3d0f37699835648f50fa63b6219d6b224da358979dbe2806b844bee3d64aa32e37e13652e6a6edae0ae34c654f0f804e5e45d6f0c477461239842d0ee243756cf275381ea1880608882f807d651b81ea74e120bf5046fe53112246e4dec23f3bb77a6d9c136d04b8e35a9784227dea2c15e3eeaa0553def2692057dc05a65e23fa1d3d5377b340d96791756a7eed9f82c65d7464d7f82d4daaaf0339ebc0db9d745b0bbe6ace571cb633d72471dd30208ab2fdf90347eb3e8864c73b514132064eee2a9fcef225058d94dcb1a52b5bd15f3869ecf4a06822f9d27bdc4f6db29aa132bffba64800ef00b95e84a58a0423b8afa29c8c090f45275539402329de9d0b67122f615fb5147063cbfb5f9656402e83608081508f1397c84e4954bd247e28924269a372cc8964841726fa1ff0e1adf8cc474ec633e8ee8e7691cc95a6e52a89dcf22b535941b7538993dce25a2d55d4c20c408408741afe1aa264b062e73df99212210425e970ca3d91a5573bba8be861f038feb920588e4fab977996efd86ffa6be8eb166ce3af486b673be47aea89a80119eaacdd0019629ccb495118ce9776131ba4e470ab391adf2b2913e24802bf8213524d65fa7b0f5ccb24daf213d9d6d472d243e999c63656599ee1dee66665d3b6a36cbaf3356171bc7103d9f2bbf24e2b2cdf64a8fc588da2dc41711cdb6ccbbf0aa8285d6c3b98c1677fa4feb7fc278b45ec8f49feaf4d049c3e537914ca9d0ef85a6e8889a88e98f18fb5de7cb5a93f83747f07c0649f8bb7a632eb11550fe28e9f3a1712d096db6384158f8ed3a50b166db9a9acdb1bb3ae561698a0d419c6ec57bc25988d44b3c31a5b62cc2a6e1da66c5d36f1eafb226d3a27daa037e576ad4d21c31206b256da5b44d2149410bea629c82c2e5e92c1dda8da62f3ce0adb39493c7a25fc79568c84bdbe91d56a8ca4ada0e049020ab5ab4fb3fb98b30733642729eb98188a72c40ea808990a7272e5c7be6bd99e867ed39684de8d0df50e90468c0946c8b5d706fac3ffb665b072af60ff90d1184c9b75df6f56fed5740d4cf27112c7e0b2a4e306181ca861e5f26d2e03e331a52f142d8f402b6a0ff1167aa24b6247df178be496b913b099e591cfcee2e2ac97131616afd6003e635e91f5eee9db51fcb22e229fd20047c02b32424aa4559e20690a0e15ba344b8bbbe81c28ef39bda01fa1cafc4c39350303d562331844d5430498d4825815a5d3ddc5a21dfab1fea4b44000a4c70ecbb2e5df4cdd1f2867c2849c4ec4a54fa9aee635b6d82fe27c7fe3905022c050b893c8eed6c4616558937b4d52400991e7777c7fb444ee65f7ade861727abc1df9fc8dca978e07fc38a1860f7fffc730766c14eb3fb71a16a7f41caefb98cc9d642ba69296f693c9604325887498328cb078f957e239834282ae51b3e55a1a4f04433ec72df036456138b5a5e8a8ea376d72a0cb65094e609c09a82a4a122c06aba3c2d5204c0906e76b65af2f142f1bd6de3753412ecc076b7097a819e02ebf7e59c8a6688e85c571105fd485182c43c397e69cd57af1440cf1f758a491eda88646b76814d45ead3b5311fba9189f346ce43d313c1a1f325f06b5736afb2a5a4d9d6f45451b35e3e49604d82519cf84830cb73708eabb56b0a8df9f7ad8a49519ef52072097a63e496ba4c25900f70b8b6335c882ee6757c6112a748f61a258c3469a697d0b7a473612d90a094779f946f0f76f3a15d939ff7a6a38211297d52811249503f18547685c8c56d7758e97621dafd422fcd30bd0b26a08b79a9fa390f135ee189c8a7df3e0d4a55fa7b5a334f7b00582133b532db42474f0b382899dbdd4e893d4756a8e305b11098fa1f09dffbe3098a144cb719c2b5095eedf73f7028180ef73d1f7ba55a41bdf5180b63474add1c43af6550d1dffb61c95a3bc04b23cc9bec0c43712cb7741e2056132863a27b88a72533569c609d5424262c46da7e11f3641107df1cbd79b03e6ad29b4ff01b0ebfe42d886bf914ee8615e7008168a0e775f93330da6fb38aa68006cff54f721fd6228d314a2d4cd5985aeb1a7ed9c62ea4a896d4187e381277ab11a0219d0615bc59d45dd27c26a636949c429f47e67d3e4a803c110e527c2a6a794b48e2b5b4210d441d43c7f71b784cc3c21006f5f88d2f46e565b90221c41f688c60562d08d20264d96a09070c61b00c2bc76afcf03501c1750e36789d86802c4d6e847183bf4f80b9d73a1430c7dd8688451b9af25c9ccfead9c19cc65b52b8e7a3295a7b1f42271700e6ccc0366b272ec2b97f2479add1d359c6896b585622f63a5114ec0d3eab02553c56e0dfbc460dec89f2f5d9bb2c9f48530ce805d523b366379d8f7317a4d770d3cad4d6501f9ed28a4c1d49e2c8f6bcfd29875b129aea0187494428516ee1d3ecb412316c5358b2f17be65ce2942cbc6a97b591e1097ada9740c38beea60fe1259517c97965bba7e780d15599ffb6fd4b3f0439ac1661bc6dffa60e32b0ba0cb26214b3fa3de78aeaf180a11e81bdf1ddc0fa3e830c629e5ad3c165b834786fcd0368ac1fa9c4753778f85cfd10b55c06eeb9ca3b5732925061c461dd9dff2eead5e90f02d7bdb633522b700bab0c1a0b4f6e1b2d0c3b5a222134a53c991e6f37290419fadd0632dfd0da1c5ad3e9d7789d92d2df5ee9c62bdeb1b26d9cbdbc84c39e7fbf327673f9d9c41a9d0df5dd39460254e22a8f3d1d37900dd05cf424315bd9b6d831edf2a866229b2e6136310defdb25016cd30af022ba6659562e6ac91f96585c9d504d220576cd87de01a786ed337a55c8b2625b64e90fdd485f09352fd4872f1811740358aabf9e14f4b880ca964cf70210307c192d2f31b54701d620da53bbaa4315d59380b31b98fe2b71c65bbda386d415c432c06ceb64c98dcb7a30668a414abe6a004f43c18384dc6153c79453e1a043aef22f152ce14b499c3a6c855f2b0c7ba87e0ff0b3f386416798fd1791450d002b71d2e913fb3066e851c9b61c9dbef38afebdf28689e1784ef0c49957097a0a2d198d190e4459f26822950842303d4b2d05076b15ea96eee46818716a277036462ceb1b0d95b8566d08694fe25ef23fee2e4645383f2df1ab448a3f5cbd91e2ca3b84683687fa843cce3460ab095051c4a5d4715ab41ac5027a76b1f28c1a2d86b0b2443efa36853b35199106f5d7eb46aca747c6fc4109d23505222e7cf007a3469a21e292b6557f71128b6549b4ddf01a3f2c48cb7e7e8b53fdccff16448e108b7e448535c74e7cac72b68612e095a6d6e3da6b5b4284e1e86678a408c13d526569b3f08ea07cd9822cccdbc0dfef986136e52ae83fdcf1b9fdbfaca54ef55e8a21a09c8d58a10a84ed5544a8098e334a0d475c342987bfc2736cf76360dbeb0671cbb6e5e7d037b50827fd805e04e4b7a32796047bccbfb18380455bd68d42b9bb9a4e8d3ed925103118fde5f1552de217227ca059bfee68d3e59acc6d3d8cd6e5d9ac4068e846ff0390f6d8e286a99a39afa5577dd2577fa6e35198c1964d668a63e2fdc022d7e563a2dc3de44451bea88a61f92e4d3fbf60c9a2c5da9aa9c381290687391bed96a2d0195b55e89fc6432d9c5b54b321a8d87664fd50c9e31db85770e5ab5fb2da7bb49d5fea4ff03ae6b618d78c728eec79acf50efb3d84f8538b7de33f8b8ceedf1f86d8e458bd3877e1fcc95d667bf2374d926b2fa472ac2c580a90df90db028e7b6f3cdcf546f247d769136f050f5450fcd2aa942157e49096e4bebb2f16bb7e6e676216267b2ec2067d99d7490761ddc0b804829a92205d33e586e0c379b31e181406704fe8c4664d9dc679a6d39b389971d9eff12933627c42c1d9e436f45867e149d5bcec241c146a06709b303a2d28f629f82612c51b23f08f678400817158ed2e4a434dcdcc36fb4a89bb93a8fae5bb1be77165d2b66f8fd4427f27ceaf23fb1e834fdbd755d16187d534ff03277ffa7adbc22b28685e87b6f1d1f842d9a6ec650dded86ac54b8336422ee49f214b6e32f7438bed12a15921ace3e8bc7b9320b307205745e93f79d6468c9381b50415d81fc167183fbf2e435099320b082c9b9b6acee2382d129a66a1ee5ce54b2e1d204f17b2f35fcee0106722f575bc990e17e16d6faac9572feb22f9e3b8fecb2364730deba06a7c81bf38b287315f25af02310599134264a8f08b39641e7b5de724e038a790bc66754af196aeedc8dc3e9c330802833398c801793c94edb341ca804ecf330d52f7c3f2d46099483f6fe30a5e79c91a734bea2f5fa3983164eed9c06d88d6b14c4228ba840b16599f4a28d4d983d38e7c6cf08f984d00a661a593cd03f184edc99dc4e7525b3126584306662d10e5a8302feabb80e61241bf914ab59dd1598409ee1786a7e0902e3551e98f741561c6e364bd4fa16ad3a8bf76e62ad08a810de4dff8e674532fe0f82a740429a9cc5bbc57656dee75f8b5975aad040889d074918be81abc38c822c7ca30de7a0f1d6b6143753a136dc4f700d7edbbea31b979bf39037821042ccb5f257418394e3910f9c4965eced317309cf9aaed46ede02ff844331c9127ea28299e7a124a0407f776dcad885e6250d823deddde942b267e58510f66f3c23a7b0a022a11b487d0e33a5925e8feab87986e6c7cf3068c83a39654fa77f1e5d5771613f5bc358cd029ffcba7b373688cd141e437362a84deab5828b1b9c99572c605ef13a06ed43533175832a3a6b28113f420d1d6162b7afbdaa06e543409fc8381daa3ae97affffefdfdff7453ce67a6dfbef3a3300a79cbe66134b957cc27c03d3b48b8cb45aa9b34394568c446f204a58cc496771593a618ec931bcdbefb01e4ca95f7dff4bfb1700b15c49e78f75c3df2b247682de7eb769c88f1b41dffbfcd4ce888cc3f0bf91acf1151bfd87511dd37a8756ccc994f58989076db0b46e78e5042eaa41253c11d6bbddc268aa339a6d66282dbc1c4599adf3729ed49435850cb7d81205d416a03c255b6f614bd1f2b3da7f48a1c16e527ffb54dbb105069fa916317b34552ea64762b347d5050c2c0b1f2f6eea65ea2cf1d146a903f26602ffe36563577704ba85e4a3052d29054a13c88d4ca963a946a5d8eca94501dfc1548e24f1d4b312a0f421c868374dbbbdec302837152f19252ca88fd42c5d6ecf35e37f546d2793915b96798d1c4ee1325c31216966da3c928537d56ecfc2a55984aa8a34cfeb3bd1e4baecbfb6e86294d49b14aac3fe037ec82bd6b4da79350965f71926f6da110772376081df4f702bf25ddfbd8b5c63060f7bf98324505694fd06e64109b47209ff77c3c18412752a46feaad7242e7ddc2cdf67d2c692521ce64be9cb77667eeebf82ad814f6a906ebd08704120c37b8d37fd97c54aa0f6d7063dd23aea3701175ebdd510b7138bb173fe04c32be86122aebe13c217b673662f429c525e3e63153bccda161ed9b44e80babf2619d198edb7cb9294b5649d7e7898eb2f16abe8c2e315dc4974a2127c6778f0803c12ba372bbb8f1c0f3c9a27817a5fdce2a4a741d8ba23c044c38200930fcc59b94701d35a92808ac77165ba921cf203d42f5ced236d58ea0634f9e09637603b702d59cbab86a2585cdf4bbe6f09677e62827941ce416c3e5592c4103546fbf54eb1a13d34d49c338a157eeff702dc0984b6054b29ebfe8b864fa62c798e29deac7354abd0438a15ba8f5168187ffa1cd1fd3b053c2ed8e677f068b3f6b5a62f49eaa5dad3938426f2d58c6ddea2c22c3ef7bdc36e49b4ab415abfabfb87a7814a9973ca38a6b6e360fa1876bc4212f24e1ff23c70be836f3533c232ad9de6dc4497229914d1baf19a65c562ca7b31741f86963b3d4886f36aede2bdf17e974953dfc3cd23421d59b41102469a5e910d819338c4c54a6958a70116e82781ee200206be2f09b2a73de2fda551c8f06b06d4de02434dc6d4e436a5ff98b61ccb2c8aa3f5abd36455f368164422ca3837535c2e8c65af4c0c257061810ab160102e850d437b41c8136d0f99fb7753d693f8a58839e4e265120cf622baaf82c539413173de1b46a39d564e33875a64bdad1f6b171efd97353183d3944f0f9628f4ecacbac1308f5c1e1fdb07bb1e792b653ce09dd8df192b7604eaa02c2728627baf500365eb6c3cd40caa66b935810efd25458df63f3487830653ecb31085228871a6968a52e53df9e02f821b858fe86bf778261ef347f2bc545adf506b36c8f06197afda03cd378eadd0c28b1a248436c16988dc1e1ea71e1d23e473a02f515ad7d7781594fde8fd695e263823679b993da6232002a624749dad68c7c2d42e7986146a8b10f63fd5a7bb759231468c6cea0c71be4c0387e46f1fdd8aef7c44603dbacc7dc46ba3f311b75fa02c637741f71bc913dab3de125617962686132dbd1fddec2e11423ea5a728af280bb68fe6a07d5e5eb5d3491b7234440742b6230086c7b8d1b771f8a983228716f730df2f6eba735632ce333d1effa4750298b045376594eba1e6ba0f31611ac9b76695ff11b8e4e31071174cd550d24af63c7207eccca1443978688354870f83e2285b1e9417fed708a0c2308ec454ff80a0ad0febd32050cbd10cf6ed1672d89428007537e0c6c535c9605628b7b03c639f182670a15dcc183688471244929227dadda07c0bb49a0db48f7c19b7d5166871dd2f341fea8e20c518e54aea9bea08bc053c2ac45e7301ed7988e708d885c6af9db02b6e7ac420e92d8f47bc502114699f0a2197837713fbd2e36b5f6cbde6a1aee94f9f8598a88ce896feee1f2767d7503ae13bf1fe4fe3bafaae998355725a685d1f1c88cb3cd0b0fa87fa2aa41a693234c7896c09faeb93fdfee732ce61c65f58276803990d7a2e5c69681f1dd5290dec91d66e4cb71e28a4fa389a6dc5d6d6b958280f142ee9588b56cdfb9267e08d9d58b8a6127cb216a778fa6e542f08ea39cf46dd8c19e84cba3005948eda54a1404448c52837b4f5657a2e3de501aec4e4edfc4d95a01b83a841c591e75b5203e4e9ac7a546b0a9f4f5fdf2e4f772671c056a55322c5001cd8f69156ff9bffcc68f1d07ace98176dedad3895d59c4d1583f414cabaacd6451bf9469da248b12fa0890d2fb7ac2e672935179424bbe01511e97a8361cfbca875483426597e9277adc6f74351a1c141c319d48efda783ffbe8b341f71d1f32c14f978b2b66e52555940ff8f17f7f34f1cae16144c3c6adf08716be201e1c1a39f903d0139bbab4579c3ea26d73e25c09f66b2479f9579b6a09251e86e29624175c3202e1b2a16c69c381a64c534e6d2352d66d0e22ace5ca216dbc1f006d232dc8351b5b1b6a6581bfdb1a2f903e008100466c331bd5d731a474e54b657b0f13505084ebbce42e32a7256ca7314f77f325b7cb9670092fc70e1a690fcfb4a1374b877cf66c1e7ce377f7d48c503b7f236a59900ee4062fa7fb84c725538888d9d347ec6e796a0b8f8f209991992ba50c7cfc2fb9ef44f0d7aea6db42d79773a2491b599e233d953d34b0077bce54d77f8d8cbc3a3bf751468d4a258298be6fcacf6bebde1fd6cb8f0e8e855745e6ea40d09e318127e0398da2b614a2a6674d3fcc58b81114bbb556a8a22295684881fc000e370b44f30b351cdcf95363340b496c9bc1ef2102ed9df48f7be934abe6e4daa6ea04dac7832ccc17799b08f37e891e7b5df0566c8d91c4f9e991bbe4c33d9ee482ae64db5977a982a7f221e5b60214d2f8633650db58525e4591a29fbd7f92bddc680fa45e724cd230aa0b56cd04c621658e3b54ed55b97eb636a3d95a067f7f46744073f59774c928c77d8128816fb7240052f9e23979575f670cb2cc6b32bc19e60b28196384386a72fcc960468ee0662a5bf57104f7a8d9da3f8871cffc45f699bcb154ca008ea5e7653f4715672fa62daa5dd454fa0fceb8306a2d45333cb0eb526259cf14f780b46775c65480cf1a2f89a1616930ae25ccead2f194af2743d7ff101dcb0d106c0206aa976724ea7215b4545ccaa76298ce0ab90e434d275cb4aa0caa71dd2409981a3c064ce31a8369dbc9bee35492992542ed2693702c4d236dde0a049b014e39ce713b3b10f4e03b237d10c18f80e5c7d8c8e1d87b477be916dcfbc90153be0f218fcc724293995ca54e8eb5953731e9242cb4f258049a6baa8a4cb8ec9661ce683c8530d34576e6ee8c2ffa0501bf7715cd5a3cf4d6452cded01a1ce09c5657ca3ca82d643d811b7ecf5132646ed96dadd5df9fc097cf359df9513e829626c3c27420945754bcd449a1155799f1767780d245ad32104b9e858617361bb839cca1405c7d54e23b5339fbb5c07105887239f131ca4297326569d20f8c1c690fcb0a1bcd87c5a01715a98e64e41ce6b1de168f2f9cedbd31c2d083a4e394041ca2749345f5599fe36cebdf74e4aed97767671767c9b60be99c74cfb69abc296e32ac94af118448a3fec430e03f9f0815521232e20c20cbbc4dc58a67336c9c7d3450fbd456fe7568f1eb3a6cc54ce688be1242b76435e600f8640edf66a3b5c59a557c34df409510998dbafe6d73299859f433b6d102d313c6a8e83ef302640df681db1c3f0adcd197ccc8e7e8bb54c453589c70b918903a101c60279251bc7eadf17188c8e08c8afb3b062d742acf7b2f7626b77c0db14fffffc57a08fa19f03e95047393884b04a764951f12ad8c043f9652e63df97a978cc29848eb89cf0026afeaa3618d819d6b42e5c64c9346e37897849c23fa104bd88e760a893267eb7a5884269abfd20a94c74bea7e1244c19f6962b39db0b0acb0bcdf9c614b732fd4fb00eb25b1a122455770c309c1b2129993829653c1feb6cb5ac99dbacdee7478d87549ec3aa4e4054b86a3f51c8fff33ae6a516c5663b9a5adff1a29d72d4b788244610bf5872ff47057153b041d5190e7ddeed19c76732fa958ba5c2b5ea5d962d18eadc0a6d6a7851e46593cf065cb817b03eb457d81767bb6c513af973699318a718a41cb098ac031bfeded846e9751ad7d0604f52b3b00dac4e2ee7c0fe8823c3cb75c0541734a7dbab8226874e740e6145f1431ecf64b058f65956b1fb636bc4967be8e1eb6becd9bd84df0ede8cd30f22cb206382f236efe82f63c7b4c05da2fa356bff859aeea580ec185e019880d6cb59e8966108280afa788968b74fca9cac9d611fe2b1e81da8b357bd36898a1efa99fd8bf3417f1753f64ca846bf919fae33638257a07de9f24477615f236357170fcf9092cc59f7140ca47caab31d80b7132405bbfd6782fb8f767161c3002fe2003c824d0224aed4d9a9b1f68ab890b57c7c7a144ea4d1e552815d88a6752491d85ed86b3f90d71d4dc00c96ec350730fba410fbf1909b8e2222fb7a051ee4e2858f2adfec8bbb2833981fd0ca8a3f6fd114ae33e2b00921613fc0e0977db64cdd457d3e143f94db67fa54c75dd72611c970a21585efd921a898f7917f86a56b757c57858cf336eaa20b6d91dbc9fc5cb5caf6149e0d9398ff992ae9c05986251c1449d5c0763d4e9b38b8e85eec270a833ebd00958e82c853c9e423063b637adf88eadcf3b9be2e272efa7d1f44264b3338c85935e2f5ca00d20c9d4ec7046326668814fec6f977fbb8b3dbfa2ba49013720a873ff7340d68cd61a4a0e18060c760df8e55226a37a906ca7769eaf1d645ea919a63a140120bdd7c2574a4004a61aaf0502d6b7004e1610e3e8e5980a328b628c0685b18a080a2ad4d7b6b0d9c548ff437198a4bcd919075a8147352e61e693402d48abe035bdeca9507ca15efc78cd5721ea95d34c8725ac20e63143ad5977d761606933ec8710547a594ab83828b3bd48d2d0526df1425f87bb206961132dee6a9e768510fc9fb2221fc1194158d0cf368c7824180d8b969111bf84ad09c07265466be95f14988181332852b60f98167306a131b4365e33e7088cf223703ae57a91a7a267ac50d7330f2d8210d4ac36046331c45feac1010e13af851944caf6412bdeb2490375d7c4c1d692b435cd0daf799652d24b61d21d7a2e0d27c5f538d1b56e9e803d8c9cdf6aa447db43d0d0be53451f489f1da4b0d975d9f8f5dfce0f449071a4e4119a04c1fb058414b23c6faf0d5650d02e3f0b9f2cfced1b9d529ce04b50aa621ef9e28ee7ab1640b02c62803c9101edd3e3e4905c3cc6429760b606471b37879fb1442f2610a9657627a26d8ef0eba793eea644e8f8c2ba027bf3275ef364092162d216880516a45ab59350f22b1bd50c9477a651732c9662372c270fa6caff2428d2489efb3421aa91dfb91b4c9ef05616e575d03c222d1de8fadeb34cab660cfb6adfb8968a860509d069e5f25598f21591c6b8bffa9a2034599a8ca8f39d8f4be48a35d9bb80cd16d4d7835d3d0d4ae0cd80311f3b3c974e669b9a0512e8c6e9cf081eb8e6419f13dbae878afdb6c1ddb9de3ae75d36acc023964aaec4f0c2730ab11635c4fde006044db02d5d9e588107f1044734f05ff70233ef39b240b5ce04ed9c57216d5eedab468e5b0bf2d85b4a1c96cfaa946c07728f0b40fecaa86cd7ba959fcd4ff5863edff516568498345496c1f01f923a5932bb6d3a1461ca60362a2ccb96e3517d4d94412a994bc949e7eb6dae471ce52e283b19a0913d41847be2ff094b6fbbf5599364f694e1591ac57c2b48cdab4e367e8701838f7a972da29da3f703bdf0df6c3ecd216803665bebfa1acd807845996c8d943a8b98b23c3ea76bf72d98149412ad17519a1537fba2ef23d6e304b83daf2d15e5d4fc5b7d2e638ccbd852aa918e299053819cd453df357be05590f927bbbcc5c9b96e59a208c68881df41a27124b2856d4dc124ef4d7c7902f6a616310f82e2e5979a155b03d9f00d5f3e765d237a6caa34d59c7e61c9c1f48c8e3983903c6c2ea78fd845713a7031c424569df968d06088c781e894f1b7a977d91e8ebf9ac2508c4290c0b59b2c817257640ff6961752fbb0b88c1d2247ed97db9965b6c20efcb70c29dafa4274aca73a029a85d4141002482723465bf8c6c52829bc4dcb7dfd2c2876e6d588bc59c7b82cebaa226a92026da4d5b5ef5898191e9beb79434bb98636aa76765af034adbce816273abb25fba37877f907b131ac5bc2bdedaa9bca00bb5fb8f1bb0e09fcb8bfe64903b01e648f6efcbe1c0a5717433ae754f526d4cf9f317dba4019ffa1224ceca81fc7fa527b73915581856f167b3b66040bb3cb52ade36c5c92525cf3f3d5a80c5ef8d850d6c7f82ed7025924718037d34b5e4a83161b241ff0cc59ce26ff5bbb492774e9b1bf0b5196169ad8d13913ea05baab92eea6414caa48ef333f804be9986509b3421384e08b506c13111324bdfcb405d1ae58a471a762aba2c1f4957ebc05d47265bf6e3054d258bde646ea0eeb5543d2b16c5b1fe012f349b7b7e292567d090d1676ea0be63561fccdc3bccffc45ec44b7820b4fe37a42dd2cd080f7be177f22f89e134208c4ee4583609ae9522b63156426cad851044968b3edc6e87d786399d1e73fd6d5fa01a28d203d8c81d3a447c2e7b11760cffa05df74c687d3edb5d10b65eb983e645cc9b188a159102ed268bb03b1265971f1c5cc9ba30d329365f13542f95786bc9e857b0374e7fe160f99a09c54ec1b03b65c959624c2c043428780022a47c46895dfba5516663af17ff5a5829282967fce74dbd3499fd95c29bf4351e9bb643d2d3500232fe22a117099628cd3655172a897454901348b5018857862d5d9a694ca452582f58125f7ea84537fc03ce5f5baaefacf46c819080f403ce3a1571eb5fca0c4a1aa53f9595276598893f880027a0e289143fd7916ec40537a38163288c7a8bc7cf3be6601bb2b3844f083630cf5d581823e24d6baac9ca1d838de9fa0fd85b09e046fa0701a901758843464f23a2fb9f26f4f0eb3baecb2593a3af590640288f8d197d1608f0f029af2b96d3cdda509260ab034de315b3334710e16929d39eec4b4cc940b4fad6bc9ca52fba92c5aaf02092d0faf4774763a9940bb790c77d27c393b7b45017da5d78fa6a01009516ccd9a3e9a6e3e71f22a487def003764e7db07018b6895d068c00ec2818a5e8104f63302824e8e14c19009ea925a56e023f51680bb0edac250f28759d8f4a989c2f39f2bab4b2eba2134e65dd719157743579f08799c61c65e476da273be1e29f131a1eface026f2f41a398cc668b37144417dec249b7d87758db6cc330648b1640cf2444e88d8d63f19f467bb8e0bebebe6f41392e35abfde9e0e628e093fa6efdbb8e01010a053aef1b5e7e5c630243ec50a788c98888dc50a5b970ee3d0aceb12c123a6bac2bb0f06543dc866a2940907e27a4ef1738cb94d60ebd0982db7b6690bc67632cc64d397b985bb544dd65bf9d2f208d4a21c309a8443067bfa19311b876e194cc87290983ef06bced59a06902be15f40b7510031f31575d2e1d44031068de09802a8810ad85e567fe34c22facb39ec898583e849a216f8def9e24de1bebc4dc935d504f1c38a51e769dd8a4611d5bc62c7c4058cfd4afb259dd8c6f8ebad95df547a1bd192cb031127825d18c0a1ceb535685d16375e00118e6d9b595e1525325843ecc1b0b86798d2d77e6be1709851134c5818818e1edc7fd3c18611691a3eb84f410dd0ff4e01b7ef1569c341836272db41fab1917dd45ee2b1401541c749809e0960d7f4db5daf4d0d4c90c86abdbe93c915155edbe6f134e9315e0c33d7228cd58a35920545c3c093552d061ffa566485fe69da0a7eaf496aab4f6998e6790a5cd2bcda1819db4d9dd1532ce65d3e6d6b5a54166fb1df9c387110dae6089d1ef7cf67d0349e4619612b16b5f8953179594abed285c3657ade96fcbc3d42773b25e2a97dcde00f59d91143890242a80e8e62efcf58f0caf6e76bc66976bc4643092d2de1296c54df46ac584da34e8d1a2f335a8d0b8c6418667818149b497055e72a20e6e5d01eb9aadef970f11fb806c36062e55271afba6f89ca9c6bb65011aacc74f5717b7ab34c9e1769f58b7085b84c9d35f8bf3a1f9bcdfbcad7ecf5a1612ab3168fdabb55385640912aa5877adc4d4f925bebbb708801a47e88e6e9b9bec34109d8d53605bd5bc78c0255cf31e47827daeb1826b657ac6d4e566f79a1965045393794dd93ed72b6a461c6fa81e8f87b5dafceded42c6cebaad2b7209d63217af56b9281702063bb8b20a03192e5f78832bff1694ab2527a11bdb7073dc50fa9d58a09b10c719b83258b0fe0b73a17743ecb142737945163118f60b899fcfe99d379a56ad13fe7376be4a28d492b7816719216fa2c05b70de6f19f781d70eca532748b2129ae320a4bdef3c4526254cfaf6c10f9f539ba54314332f23c2a904af48cb0cbba245f076d222256cc6826e171c1947930ea1752f11745126d588d61422480f4eecc279f1bcd1d7e5b30621b1f903d172fd4be2f25b4e94ab7cd32dde974d20d3d1616942af0c1bca18dbdd2d7e98a8d04388cd2b49457a0887ecb2cbb0633798c3586459b0fbf63d6b7086a6b73117f045d187017e6fe2bbb067faa673c77032a9fbb85e9a35528bacb96ede8e7f8834b0a9361e50c6bff6423c2b43dc8a4cc6f91056e6098e041f44836836392ca19120eb0c5f91ef590aa365755f73128d64289f3e292cf2fdf8f92b9b03ad78f4ea7b9a3c30866461caec7de97a9555bb1f6ca99ba179db2fc9f720fbb74ab4041f1602f8197e2aaa0b8fff7f1c4e25b08fddbe5b6f54b72e50694eb9f7f1882d13adcbd1d13c63367e42df15e01db31fb030803c6bf94dce8fd07ff6bfbbab418e70b90445cf7a93ae44208110319468bcbe0ce3a3e295e0f41c1c0ef064553865c4ef9277d9050bbfd543bda7ec7288f07b55defa530cdd7b119c614e6fda0b91a0aacf767617778f01ea9aea7e5a7e8181f8f83cac1a347db4bab55bf3ca872772716248c6bddb94e7f81e2b8c735f74579b2296d680ad800f88b1a9cef8834f094cd00c965e322c0f7850583939f805f633bb3c5a6b20949a30bfccd1a177357c10c98c43a8e99c12d1a7efbc6138a6c3e86cfa77081a92334ee2e5950c96565233fc1f589591bb96be445f1b078db0cb3acae32ae09104379409a0a3bf7d95db39dccc024da699f20fe6933f31227bf2c6a7acdbdd6e55ea0105a6e1a689e8d6fdb55de9130b9145db430a8087c0f1d5a10574fee86367ebfb6b0f13e31625bd8e10fe48c4bca7059d8060ebae8856cad8bde9505b6dcb54dada8198ce42089739d9b2f83fa1a42ed9f9661a8bf3a9bdf774779bab7901fa6f9e8ddfe0e760c48dabba319d015bb1916aa2ec77f1ad66a44aa013b22244d8a247ee522077295663078a0a3d46bbf7d1bbb63dff610740d6916fda828b4a29ec29999990bca745d00015fae08029fe1f6529a09c88cd84baa699a96c5dcd1e98c8ac099b17d13c27f666277b71c0fad759b2837427d47eb6d1b798db5362759096f996ca34b97afd574fe7199b29d719cc3baac86c461791f6eb28a41aa7a3cc3643fefae8fa04047470ec3c611ae5fe719a580ff5726c4a4b8bc7ed9605ac713367114246447177464d4c7794009cc1afe991d2689e15ee2b9adcc7e5f77937ac8b86083209fd8a275a68da1c32fb3a30cf1c59930691f50284dcffe13721a86cd536d7c8f10ae1deb765544b5e5318825370986b561a39def9c52fd5ee43e4c782d693c76ccc49e1f8719b254e50ae8305153592b0dc766cef816cfe4edc37239af960c4771cdcccc8c01877a3f230dc3155dcbff522ff845b34f24af96d0c7c32cc84019c07dc7e25dec7d9ab4060c02e4b833f343c3230e2227836913726adb35ea7540e60ec414c6ee123d3c61f46e684730555b2e257f603a92c2551a83b12679201d72bcb9ac81ccf51a0487917472c19bbf235e96a3aa1933bc5a1a8ccee5076b0083491e7879824c446bedbadd7732d4c9b20774e417c76cf4572b2acddcb9643d257ab2df43bdc5fde0ae3495257a516ea4203281a83f263140e99467dfca7fc114975e7c9f627b3d1a08205127cc8b1cdc64e0450decb0b816558f99e20660ce51ef1ebb1305a5f1c3ddfb0b223132b156d15e314d2e23413053f0d81b50f9ae0c52006224731a7bb333356db703b1cec52da2fd70dc8280cf2abba65e1cfe816e952c088d28a6059ab447834a720850827c08bca8bdbfa78207c8fa54f59d73ae1207d3c9d927a86a2f6e712802f3cfa08bbdf7f30e7e524679fc4b7df89300b425590acbec8676f615e3f2a90b5c7e98692f1031ffb0b5b9f61337af57851c40b08e5511fb74efbcfdb0d5dc3826bef9e892bd9c3605179f55f80546d8af55389802b498550070922013cf46094245272078f1364a1bd77a53aa99f654e84f38455b82e87df69689dd654b5d5114b9e1ed6e8536499298620eba78c438e930ff26f71e57a916c27f36a71b60b82c01bb6cbb69b132e24df58c4f048007f1d7a72b69ff0f44140fc85287225f394cca33821a46e37c06380435c315b6d5b0fadb490549b36c698ab3f9086355a5bbf35a5596be088ef81fac55c686ffce8a815bfa7c3e7675f975201bb2126e1ff2e043d06ace9944fa547d9c1b662dad20bd42ba8b14846483d1cd494c91ba9f8be98d24faeac971b039d89ddfdae445324f738bb3fffe74e48eeb3a3568da6f8f618442d1e098570d6ad35261f8dbfccbe06472098d69952a1c43483fb358b106f41361bc9c6b300bc4d7968a040f4bc5ff6bf7119870e8762d5ff02195ccd6e249ef7eeb5218a936dd9daad8f2f33f8fbd36a9ad6f0644b0f04c567a991c283437c2d726b68d6209af5fb1e415e8fb52e9d79815fc7fb40515ecbe5b269f41b0e83f6f1331c16f1484e0337c49d23460ff3ad9e7f7ecf740504614705f349288cb2d8e87535cdafa6f649e49173ab3eb274406448e34ffe84b1265a81ce0dd90294a3eefe5b51e3cdccfc00c98e2d71ddf30bbf7ef9772342459647dd6dcbcb5b312cfc054ffadcef3ee4e63134e107120071abbb11c2ccce230e6bfa99a18c374fc530166336c8af7536121a06d65602f02487d0509bb5d9fa166f9d49fb27ae6a323d96a3f3263c552f4394726ef6557f5eec0200ce2fd2f16825c51ca9dfa22d958385f144c731c5f67376b435c493d8eb80862e5165b932c7c456904c1736c31528ba9c9fcd5677aff4376e46dbe9b39d953075d04c07e55ba4a6e185a3085f4357f6cbff5511a6d63c210727853852e86aa872909e6b97546ddf0f178ea91d167d69cbae1d3e43e217662ade6af85cd76bae1ecb89732a74e791b457d7280c4144d4d49dbb851c0273c207ab6223c12698371cd5823f24aa5661347a2a52cfaaa8de259f5e88eff4a53689af980494f9e131f4e649d5ed8400981dc71b4bd4e5d3521d4b4c17031c234afb15454abcd5b54f8f109f37139bbc1a1654cb9f536a4e8472f8fd0f7eeacfc3e8a8159de3168e687e7abccd00ed25d8519e59e6d82ba77a774735de3a687620bc7ce4e62ba940e7b706040ebe9e81859b4c456f7691e136bda42c51acab741dce19c1279842fb268fa73549166832ce216c55fa0ca139082264fa4f78806b21094e1113b058e63cbe5e351a510cdf08957979c0e4321bde055e3d0baee1eb07c8ea7065bce8b7e80c8e1e6d52d158d9daf3e7a312692c67f98bc25b6c7105623b38a06338703555e9156198ad64c38a3a1916681dbf6aadd8e891cf505d0a3cfd93ee1f4bb566bb3525a0969448909e7afbc9647529fbfe2d96f386e47b6d7cd8607cf17c6e9c4c0a1be8327e08558a1fcc01da8a22645647a874007b8fe5647e1406f5d9aa74081698364856320ae5837ee5268d4e40bb5315d4af6c8492603a5d51608ba7c0550c761c9a457da44614d7088ab087a28f6107394491e1af28cc1c86e1cded9fe3f08411425535a199c6dc01120f14ab819a9bc30a0a25aa704d7af62c83433693626c3bdab9eeb8ad7112f9a5694fbb5c9d9217f5de8d59b18c7345f4932846e1a34b9f7c451fa8b73ea60cb3ddcf8dda411ff77e1debb46ec1e94e0eb07c9d2ab00aa1f468d9a622bbbca43fc50f2a283eea7c68f691f89ed342151fecc82b0d2d750019c3300f9267239dda2af5a32b790ddb3af957b86da73c037d14634457ab21ae9ae6206beb5044d4371c1e88874a05ae06e032b0d7a726cb61e06eacd4855ab8646feac1555e7f9d9a6f51797ddf84acf9095ed8ec825b1587341b073c6d6599f17cd9359e44805f419c5a6755a28cf4095a267a99bb13132726d1748c5c5af90e505806928938d590fd418aa347a7c5c5fb1a13efe19234d0e15b5511cb1eba261addfcb0015811e0c1c357ba609daaba742871dc75dcf6813dda1a80722812bb2d03d5ef02423c99b248755d072e6e4c247683a2c51130898effba2bf32967fcb7bcd95db7c8bc84477de3f4612918487ae7a7754e5e1cf3245621119cb85b60446e54f1e0a263b2508cd5f27683f395cd953fd2968be350d637c8b40355e3c92727e325bef3305f2412a8ef11f491db9f17123efad457e2d2e72cce22c6234d0edb79ca6ff453752c191fb82727bc1a5c2b4e85704a20b9265711f54c388ab86e35127ef8cc4c4d090e2e4fb139607fe2fdffb294518fcf72d2adc8873fc9a914534b5c5fd6b8adee3bf5772a3cfcc876e1a54a55c7c1867db52f3f0889aba965dea13e740cba49ee40f07aa9e4e6423d87359371eb712ddcd238b888c7723b36f1f2c29dfc71677257e2f4230b0e1a096589d3a504714b2c7d9abafc359c24a8727c2ad1e16c09facfa8b0bcb863304671e23c56dbe9c909d36fc9aec3a9a63c278c67c64c5a3295d375a7869d40d42667e38c7bb42b01a81ff8d6f4cc9d636d32b36e8c3b27e38b62c6f587493a4bf2f12defcf40c5696707dba5bd3e8aee1fa7f8b5b7512ae687e945b53c82f361f95dcbf73fee9663b87fd0e3f932f17607356be78c0eb659bf66fa0d20d096623dec0bda7ccbcabfc025049b30568443b1ab7d4a4bf9b37a39c7ef34d9bf666b3ce050478dffa4be6d54c6488a611fe95304a0366454fe88a5bca932b66bef549a8d9b376812c8c6b8249b40538ddc08030df5d35168d9770441daea61a9e2359fbca1b554570dc3dd3a413829e33b1bf0ae717a69bab352f9087d16d4fc6f06c644d806e12f93687b83f1f25a1ad5d6c9bf9540430554a50b7db73ebeddcb616403a74b36f8bcea135ff82e3059b511dc74f89cd230b0b00e32f866a547863ebf74ec177a2000da7d34d56086f7e777d7d466aa4a8a0c1fdd66019896ba6821ecaa7e0e4a4c5e16f7e9688dd188d4b7dd1e26ea2dfbc82c2b98b12abe4671984d44c0313ee5d60e00acb5d451633de877247e028635b3458cd95ef5e1b2f5003bba3aa0a84ddae98e6e2fa56f38ea66515417a93c64de49a40a59be69f68edc378f9d030d66e44659a530250b5f224b7c6bd9b6eb0b46edebda4535645ee9fa0cafea1df6ccf7708da9b406d07645531b44e07136688743241c49afba99219a82846c32d91d15d37d5bc687c0420f205b5a933c9d916a2be0df63efe9498f9b673c92c26aed9f7e35ebbe03875148621bd292cd68e7d45f14e726d6d30388774536391f25261b22e49219ec58b624f29724c0114f130357a0f33d72a1b203c3cc05557ba6b763399057b12d61ce2f1624c33c9f70f77064cb578e5658af01ebe5bc220387d3b795432da2758179df9ef0826302707ed931d1f45fe9836bced5f0a33e4476d6648c43e544db183532d07b60e99ffc003d425d5e0d83a9c8e18a9b61495efa8beea91ba8193e0a3f6b0154dfacdb0297cff0b7c54e2952ce28b4347345ca446a33de833fed817e62df8f1a19a40cd5bef0746def1b17767294b5b974960ce198610b3c2ee069e3bd2888a69c7da71c9495e5f6dca8daa7a46db66b06a1ecd8a6cd3fb7f745d0c0e748dba3df95e67e74809e21135ff6af0147da29b9352fe6c6f95bd313ad0387dd6372ecfcf58df69000cdc7d4f774b2add37c8e0247089fa3d53ca64ed725fc86ef380e98b9daeb45a1c3bfb760338e2e4b3ce2e62aaf19397959b07bef55cc5e767ff88935c27bb90a978dccd118cafdde4b8baf58cb0dfd35f285ae2310c119f4bb704f2bff42db332504bbb456c9a7084c09769245b6c5b6e1ab013c618342a06bf3ad41c9a7f25ed792e6c5cd61bb95c65abadb613062cc5fc130ec3d84fcd22dfbf0db477fa1fbba3444e211985cb622be7960b4a86588e3d531368ff060493074f930277dd2c7222609672a6ad28a111215d450c0384481d5c68ef3a3efcc03a1800a2c036ac7115e4b95571f24af20b3b1d496ae96b45e51fd66a0f011972d81911b91dfe5389f640f31b4a061e8b094956b7adbc5978ff5c2ab0804f7279726229fce6c2a72fd033c396eace8455520c6d7468eab094c9cdb5555dd9503a95f4cf3da31b850894f86d5ca48ed01a456a29c19b61667c3d3acdbe3cb4b3fa2d092b8fb7e79cbb4b75771ce3e64c7ec07b38e3796185fec8d34a3882e9cd0579988df0ca5df01a1ea12c04f5d3b4c7c071a85d8442abe5ee130a25f751849ea164e691bfd35999620f1c33cb9eb87dfcd26eb908d388568b0f6d3ace94f4c17d3c4ea3632701113d949a3fa4e57dd08985e2dd3d3e627ed5d1d9cc2148ebb90fd07cb53bb1ead97b6d3dcbd2481dd4d6ae41f9835b939178db372c3f216c7fb73b51aa08b56630b2375f2712fd228b7eb32af988b10a1a5e53741051db2ded3d624d35eb559debc83ca1091b810fc1c4872293536fc69503d001163bfb18c2234918ec462e0a847f5665506af8d7b4c21010dd761b5f6575e1544ab8dfcd73deedfbe6c6cdfe6997b452d76b3964938e8dc175f0bf7d0a49ad65c80e9d1fd1ec7564f1258a1caca353d45b7b7111c2e7de653d73e75eb630ff3265eafb9374ed2e664a9c41dbedb6d69a716d5d30f9310b109e20d75428022a3b6c3093e406218f36f514e808ae69c316879279862ec98b3a64f20d45dc4af6066cde5c8151024aaf998cfa41ddf2d400fa6538ca4ff8c7402757392a89cba49c1246560d21de97cff43b3e7ac44c38d43b5b4329cd1ca1e041c37c90ef74bc0a1a38b4dff7940238d96f837c3ba0084f067b05c5f3c01ac15a38201af8bff4e244f0f38090f064b0bf307e612f7050f69fc2433118b7f8e97c0578fc217b0eb76ad4992f30374da1e71b291a793f298f307753f7907fa445c0411e824167d6a49458bf60c9e69e9a071091e903ab50a525df92128183ca2482c364878e3ddec6299aa938eec122cc8d8f5ae74332af08a713257472eee6bc2d963cfe02f9b1bd2b8482139398af8d70facb7ffc27da4b1bdc9581c03069a49430ae6d097d702f838ef6ffa076b9d88e01aaf156858f45bcc5f692d2742c58d7ed636d7bf3b7455c6ae93e582260cca0f5bdd0489987903be93a742691c2b9dd8ab62bf07bc72d932dacc882148929b8d36f844acebd0d771013e62a41768a5faa21ea5a06919630cf1fc676542cd6503178c95d007f5e3d2e501feaaef8f47ca1047ff9723737f606f718e9e1be5df169502f641d216b225ade4584976503e70e1ad492511e48fbe1dad18f96906d5bb0b198c50945de63c2bef67994a82698fe1e6505da4106599e8db594a906584ce525bc6603e9a7dd4503c3c65355b31c9cb8c625f80634e79f47c2d73ed792cd5567a8effc5e780ea8b2b0cbc8b3606bb5c51bed841495089072a401accd3815c30e3a62ab6f492c91a8b609a018cb4d90ef9ef706107387fa963f665d2a86f655d9a7004090d548ccf842ac7fa1f458d47b1c5394491b82f9c829b7846460e25fa2f68308161c867519b3e3de13be758b17789daf7b5f67c2202c86fbeeca770b0783a26fc0df5a0a1cdf0f7eec71f97a9127733ac5120326d4c99703a570a45e8c7de617c727e78d898ebac9a43b4e5740b32dd7ec8f9a5556b005cfae1f55300a67d40ad7bf58330afe61b2d2aa2b941f39f253ce33197f7b4a31fa004ab6f30f9b61360fb55f40dd5e13c30e335fd383ea0ff98bdf4c12fe2f86611586047bf2c2bab219ddb2194a53d5807baf2434a68daed4be7732c1ebb00cfd1e0eed13345d5a8af44ea4ab9f75e25c60d90e052cfbcc5d6a65528d704eccabc53f7e9f02406ffed9e3c5a00bd3b3c389d17f9a3ea28f08e9162d742e40fe186a1da88799119381fdbb9d188f6bdb12079bb14bbd03dfa5607cb78cd0f20f250dcd4cb46fcdd0e27fb96ad09ab3ae7f6ea14ed8913556a88e8ae7a7d080757c3919e1e13b44fb621204f9ef6813c138062d9ab8355f81a8e5bb50c6763f4c46b9ef9cfb039853ae3d8886ecfe682e4c11f0281a05416cc2068cd0f4f135cd1475e23b5b9ec27ff42674b733de83b51c067e298b12ac80a69afe4a620a9c8f8194a84d10460dd198faba9a90cea8a26fa3cf3c96cc05b5776f1577c054639b1fdc9a16912599da34d993be7cd9108a5db0c0ded0ecc70ad1895bbb41ffad4bad4f37007705d957e740f854cf8167d2afb2905e1ed6fe5c8c885d1ac6484f01b052a199289f156329722a687c7f4e0f750e646729becc7e24542d2f097356a5e3dc1e28936de9fba33c2a1f56cbda2bd6d0c31856bce7a9cc93de39e3887ffb27db98c75538c4ddbff541120293136576df1aafae1e193d97cb0c3cefa1bec4d5801e1b00006aa6e9177aaf94c17614e86439bc8c33bfca455851252865b8b1a520618d4664734cc42e23af8425744a001ad3ef000d4b779cb6d10f4f6c4825931f37214e17cae5c3415098e8e0f138137b02703ba1c2a752a5af8c2cd2fec664b71cd271732ebeeae3585530bdc56d630fc2c176113f00fbb99500ffa59be5c489ac8423d3b4bda26c56d8cc2f3edd4da8724127cf6eb27cf23110a83696a913782a87cadc431feda2a9cf77599dbcfce4562b71cd121cf8a5b21c6b289a175dcffda1c18e16776251746a0d0e942cab56173427eb7fb530f94fd04e1005e31c9b2db8d6793e09bdce1f2d2affceb3c35841b1d3472050d6a3c0ba73e06b10badceaf7ed421e70e783d4d5fe776789630fc3518e44f2a44765c3fdf1c81268e478069baa36ed92c9dd03510cb570af0c067366a0870733a8009809105173b83de776373f7437ec4de6debdb9c66ddd909788ba3978056e63f98669e454bfe8f813d49fc7f65d2059f5dd82f619d63a7f9f1efcb74da43c779254a0b44358db586ee053ce8e10e4ad873c725a3699e99ef4b5b442fc34c71fc4d014a373532039d2fb80dfafda32f74e78fe75fd966040d3b2d1bdfe1496bef44c0e7e9ffd770ad6aa924bd095d572fbd67e44bb22966fadddbc543c3c0017431cc1c1ab5325ed0919537bfbf138f614dc83f2a385fa50cee204200eb4e93919196b1fa08810d3df959b7721f3934776d63b6aef7c4233ddd095a7b71bd2ba9021801b5b83b9d347119586a0705e05a352e7579fb70120949d81437b213308ea94e694e55efa1b87a28800809617963da45d98205c15f5ec9f589dd10d2f01fad9434774e89923730340bed5645cda5763a1436582de509f1412d431378f22fad7589a1524ae120612f6c2d92d4e9b36ea84c5c8b74cdb089b8404468f12e5987c6e50c2c8ce803451d7033e1a49ef64d85eb60b7bb8b580b96e385e150c27813ad2e507bf17f80766126f7aa4ea0ea290ce65f9c38d1ba6560ffe715e51bbd08562b3cba8fbe5449b7894df1d685449ba9049d577c67d713d4e2a071679771f562b26b654e6e34d5eae916c28355f51c063c282f334a3ae9f7487e278695bc9ab129ead4baf8189c2eb23973dfa95e452fce8758a9e970d9075727dd836ac270495c56848dcfb4afd4c016f27db80e2e30955e0fea5732789c6a8d91a521c46e8917488b9b38721e8b2dbc7850db64e294b10390a8647abe5c7c87237075b6a5e2870d9401f1f7d8233af5f4cbf52cfa1b22733d89bb26664bd46bbbf4ba57574a39956345ef6ca6d1a3e49434d3ae2089b8c728bc1f104aa56d8c852dd31c1bc765e44218805877079dc3c85c9955de30b38d3b7786e2ec1c7989226b09297ca4a7b4643df4f43f348edd303d24d25f80dc2e2e4e4182a9371676984ad65d6b71964a10ff3d2508618b31d00b778bcd30fdf400e961641711a43214bc2ee94a15be3f0ab9247895a4f566e93f1f67e425a75f7282390ec8fb6a3b86c3d75e52943c27d718f1eb4c6fc42c328eab7dcd9943c7f9494a74485c014296c7e7ee8f3098c04704f6324c338409aff0e61e56f5a1912ac9ee13ecf219272e5f33f72294dbe2feb2f6e787114e3a2ac3a51d09fdda6203dac8b094eab69e1056ae273f979f83fd8b790d7901a3f44956a3af2489da03c07b9e838c61da3040da97033124afc5c619a25a50860f68a77c5cbbe0e291e8e3efc2e8a5ec230c9d3638b1e2b5091d26789ae6361240bb6e2f1250ad7f5d2f50c63a0b723936ab440763cad7d949d0cfad7e96d4b021543b8bc13bb4e42c4520cdb473884f39546d373835b4341057ee2ec093f18b0bb0cb20f4184630b27fed16c25cdd7f87b241d867539415f23be1985783e3d5099c8db37ea07c81058745d26d36cd34250c5439b0af33aa2ed104fc6cf66d551e6f3137cbdfe76e91f4eaad5ec7514646a087fe4f1797945153e6521f3aa1ee190088d03e9972628b5212593c40f9bda93449fa407ad49f8b613f20472aff9e7a1a6510c8f4dd98f2e9f2d1c2e484b98ec18854e46727dda6b31c15f9e496e9e1138bb711ad65158574099fd6acc6d1ba885a5f34cb9e988cdc051f3003926ab6d77fa822db0958217302f8e81122d1725998a02d5c5e639bf90547615bbefd3f22b92292504713de2a12eb988671aac214c5155b1f2d2e90da1308778ec3c3efc5fda5f6a3bf359dcadc598b29eaa300efe2c9030d78e97398c816ef165a23fea507ff70bbbf0cfacea99e01f0cb489c060e0cffc59fe90796595b101275dbee259ffaf5aa47d52296a4318c60df4120a8947a8d2c58dcf4d91ee74e4aac9210d252f9d815b76f45072d0a5f2a38a17f247cf72a965a6642fd7c4ae27f8e8d22b81b6dd54d9fadc46483fa834827bda96e6faec26873cf6316b81294996e34cb5538fa1d07aec0b3fa706a2b7902f2ff7dcdc267803434ba8f64356019881bdce418b800216742e8f098ef3580df1a12622a0c1e99734e81db75def2554b135cad4cd2057997c8355beb225025b7230ae42037ed9688dbb37a3d66a4efa066a0a114c2d865f34d067e24404121547921b80d71adb024fda4d25e83ca4eb36036eb0549c96af8f647cb78988de2b661101db82832a0f7e4cd06382ea88a39b7ea4730546b595c42fbf80b89399a6adf2e70e7c4ec5b9a5e9c83fc7ebfb06b29e0e48d3cad75ecde444007e7922265b6ef735d58bc5784f450c2a8d5eea249e6b0c5204ca6586eb2e0eed7c5a8e6b95385200ace3d77d8fabebafdf88d2cca5c3da45356862d220f68c3dc84e71f4e2996c29b904e79b792d7a287c2b65e4b27b62dbd625d0afb3b3ddee68603236b017dd1bc46256d4a6bdb63b55a40e10d20f9b93a905499eb0d62605da55f420cdac69822b456610b45c2d1512e19115b7e362784703059f6538d0dd8f4cdd59ee9153db60259bc4c455e1f38e211f5b3813eff99bd9c828e7a084906b23c70b2b962301695d425dfb8a9271578a9008cfd2348f641977178b5b2f0847b5a244810779025f266e5c01d2af4b2f87b69b1960ee48b78f3d6b6ddb67b16fe317954f2b9d90efe60203856088b08dfddd335a821d197cfc9870ec6ffd1725702c0fd946ddc2dcd1af37b6488e131d4ffa73f69a2d2bec18a9172c0995911ca9fbcfc937edea7bd4ec1fcb05bc533c2c1d9ef945174b19ee8ed6920c8b1ffde1c8f7a99cd4bc35d557887d186f8f7d362676908a2704667bcf6f4c398b06e5bef652698d281b08420bcb88b349592673d48c8e9b4cd20badf45ac79c9036e54eadfddfe3936e07efc75b2e78ed21b38da3cfe8270a7b92a2e65a37973f8281f638fb4214f08dd5440c83b342a19252ea1e9d393b77655d45b70212f0cbd0322a6c11af9570e22ebf721ae2063445668894283faee7921e2fda8695fadce9e4f88d37a5daa2a15fbbf14d86bcaebd05b551ab5c2723ac5ce0023e3eca213778669f8f88d944adc996d67ef25ba7ca7a8dd3bc16ab4b71f54623a2507787db43960130212534e7621d96667aea4679c351952e97bcd5bc96944477527343cc8ec5c6fa1c95f78d3348cc80f896549a138766f32d0e3434456534fb90ed232c1416385f887ea584db4b059548e6d76d52ea72edcbc118b3d83540a69847d80587285a295b7c283f0af729f2ccef236b983266f987396e787b2a7912bf9923a60a877a72ecc7246a0761a98ee8a95d43b5a355301a78691e2e253a149a472b43b8df0f5d7721004c2be8b9c98746cf2cad70592563115871452ceaeb85a453521c0f77859d48ce4a64804bfb949f9a3d34eeffd6e4aa0b4be62035be1fa85ceab7fa56f8e10424f9b351855982b39c1c36950428430c05b38ec5342dccb2b0d37e3bb50e2bbe128aaea6e8fbc531949752d5f4f5cbbfc0a58d14440232621775599805c749a5ce92ff2a73ed5717ddbd59b7ac4fe842c70f85e67655bc753e9fa550be11696cc18ee2795a50345b53f7d44fd5e0afc662bbefe8ef841ac3ca55b3363b0fa18f0bb1abfc3a8fdeaa2e2f7c01cf6253801c2a96e48e9bbf3ae318479af96b682db62c3e19d478d936e992c08fb1c6b18963951954b17b62fc67de190377df1a6f174395b0abec308f839542014cd7c551ff9b6d4aff3f7e7b47de57bb3c5177812b163eed3270ee8fb7df5a524e45339d2f7459a97ec9d1b3a391222ae24e241de472da61469da65dec9592f7066bbf169cd4f9a7665fe06db9c80cfe0f4d289fb085a07723dcec71fde428305e98d56f75283ca96d9a7293bb87a027cea471b1c0b1d72c2d44dab726178f28f96202116a0d66628b921194146fdaa3a65d4d83c3915f231ad08cb8a78aeeecae49785a508c8f51696b8cd9bfcfab16679cf191257f29ff654ba4d7efc39f2bb9f58e74a8f72184fbe8784cad3077358bfdf6000fdbba142080c69f657db1c74a873eb057dd5dadfbaaaae860f696019a39d682a4baad6771351d1f1b07673b76a6a6773f03d78c400bbe614012d6d2ff3073d14c862ef97380d5530181b7ca8d8488ce91f8f6a42b6094d7401bf7312fe491b6fc917f6635c29fa86c7acc856795c96205607541a791cd9ae6f52e8312ec57a4cbb276d7fe6e3081fc49851b2f8bf52c4bb9e5cd6e845201c93da38018bed3dd525cfd3c3c64c1d63701f37baf0abaa0671a297c9bdcce4a0cf7f2846566732f99de91df9c2391e47037df4a3ea1686dd1fbf83aaffd2f9583aaaea5f3698c378df3c43d47c35ee4c1074122b3c078ce77f45efc97fb29e16cf3da9dab31d63e50e9bc3a3ac4f0da3486caa414e9026c12053b4c6565b326f9b16e88c0b6eda0d35cb19c35498f7468a05b60e5b245cb5cdcc236aa6f8779128ad86ad827d2c48aa672dbc35987f143d68c803a20234f1f50fc7ec509a63d1212788fcbe569a533d1e13e3ff6ab228c7726510676a2c8272143258ad6d26b591922b00486f9e9f730724decc2cf756b1ba99040e26c979302c73d02d613e6fcbaa0f0cb7faf8e6877b18a83f94d123fd7c792d65e4f5a0dc70c1746cb33dcf7842ea906c91a1d166fb985c42181053b52e7328d94be2fe0886ab0a10e424096d8fc0036eeb074c75fbd37ecca4d7fb733a3963efc4f86029c8c808289124b09cdb058be204823917a82b22821961e39924ac01d203b7d7a1bf28be70ebb105849e184c14d9f4d4f93e31e64c3c54d86f95ff1e9a9e2d4bded6fcb4d2019251ebf9dd8158fd32744db4c0b01af46af5b5618dd3bde446fef2dabe252744950caebe4ff232feafddc46400a62700c9a9196dfaa564088601c02a126884130534f4a2aaab5074cccdfc6d4a056080ba6c414d5c8265d798fda0822f42f65f4bb786bd904ff3a456883833185c71fbd48d3f64a8e582704e6eab25156dffa80ca553fcc056d25853834d6152d3c349e81c27e46aeb0e1bb11c10f26fd3ddf04656c76d68502ee9f7d07d553ac1361b096dbed047a105055d412ceeb835ee5731ca685392b4e4a8d2a1fe14ee38a4af8e0140271f3cfca2be4d073c107693b044129842f2443e22a4d80cf82fde978ffa81746b1af57dbbd5c2b1b1c0e9298b206900e65b17e3fb7061ef2fc3f7323511375649b89243c2bbf835443bb9753bcb92f977b80c45a57141b7ddd27ed03011ddc6e38249f71bd826e27d1583f6e2503620f85d6bba992e78382dad8e14c24a86292483d71b45c35268f372c8df7353d02a28d8a3706d64e0305bfdbed4551983302bccf4291162c1239379db0e3f6d7904b0ed092e7f1ad5370e72cb86228ff33fa3d0609759ec342be6aacde9db8cdae787bd1ec2d98c66e1cc69a6de2c858719ba4fd5058c930050bbcb994258d27e377b61a4d2ee410be5e6074d92656d86a0c805730df12e1f029eb9afd7dcd91dc7799d3fac5d0a3cd12cf8775fb7dc487b7939cc58e166b10320b0273939400a1ff71ca90fabcad4372c0700bf6e9e34cba556f722c190f08aa043455803f645d4a7d4e9813ed7c1e8af636c1f3cbf92298708e39f680c75b4c120fb347f36dc7b473dab4290a187b99c63cab765852c00b42a7ea2655e936bb45617cb116644376fc8eaadea166662c9a7d3d514a5f87625ef80524c754575cff8e38f1d4064034337dc950a0e97ad36e1c369e5d646c250bc481c6a635fe4778897b259b847a9a2bc18763dc034def5642db7cd33334f3c392db6aeb5308f03d15938b9f7e1c07666c54268dd2e724f64ca66af1fa1d58b6451fd82ef48fe6ad602678571de6855e40ed79d095dcb6084db65c801e4a1f45f9cd982e48baf57beac1c2fe34d6c9ff38c11324a9a62cdad4a3ec4c27701287b7ce134d6f928c2fb88957137a02912be729a6ed0b6668cd169005a8beb55cc7fad28e1107145fa5dc8b0fd9c591e2359b8543f5793289d753897fe9bab8cd0300d946a54bc7f98c4e6dc5d86a0ae3665f7c09e61389be029a9e00e63b1e0a6fe9b5f655c890f3e70e6bd95a99668f7cc2f9c0d197967febd23c4c7fd7384ff0b0d1761698965a909fe9fcefd3a08b2672a566aa29606f4422afe213d697cfa2ea7e9cfb355df3b0c90c2be973aa5589a5e47ec9ab0c955294dc73087f91d653579822c1dd7de349b41129e13dfe99be57aeaf6aa7d0756f1c9d3146751ad105474e30447c986bac4a65c63006411b5152bc592ec53e0c89e33f7fbc237c1270cb4d060830636603f3b0597765a29ac407e3d198d5fe8ea1e61cd5da39bcab7dbaab75b159f95cc89457a5177def720a3e9a6a91692d774ee54bf01638c7f4cc803d078b3ccc224cef1c63bacb89240c8900b5e5fae53c37a0da8f670cb0762fc44925032fd7153140f133c811b4e42795e33fc4a4b9ce9c671c12cdbe96be2dd6ba2c2b5bf951f0391b96f345e75eac4197a2416c14dfcef9ec3dc72d084180f63c063a0f9760554a3ad1ac99213b5f8ba5d0d618d3c0b3b10065dbdae8dd9765f2ca0a9ee42ffe30db7cab8d61a8f946a18adf9c8bb243059cd512c73cc51547a70399cf7c67dfe598636b16bf1ea7aba53f1a0e4a260d544c43785f5e755054af4488e12482c0cf030aabd0d4c888ad4cda2d2ec4c9b3057c67a079764bd25ed7439f17e06ebd4ac90dee456b88322826c3208345d169f8fb9b1f6047a7dca2140947dcb4ddc57ed5e6fc4098562dd9f9d9dfffd54d7a3fdc9a0def9cf3dee9db850e71c5c61d8669515f32c4d3762a5e46b93c5d25c3312ee087c0f3fc007d4ab2272f9e2cdae35fcde7a44738fecc6dc7e43fc49936c889632f6929e09de78a4ae757db946a4a192c26c2927a2923a699f6d5572a594c7080aac44783c2891f6a497588340cb2cb1bf5e6106c507b38216d7aed00c456e6ed2152bdfab4fafc8d6b4adb5753bf2dfced473ac23f1a584629d08c0aa71ddf96c1a09475673b9ef90f542c1fa779b80defa5857db7154fd8eda99f51411353fe3bcc7c4b07b97c161bd94e45c351f9399d122ce4edfe635be1a2ea2d6ad41b9b4409b58f731f9628198baa453878ae48dec4f052095dda5c1347d0640a67ef4016422d1cbdfbe99db8b6b8e2e983a7525efd5e7aa9f797c7f1cba0629fc8143deec26d60ab2e19524904c7bf8d68a4a80bfb2f3b5bf138bbd058f84bbcccab468cf61760392f915a42c8217b31bdac3199ffca3826b29c1669df6dc4844ba2c3b6321235151ded52bfe30778b3529979ff63116502a2353e568414ee33a0b02cb594b01922a376acfc340a52481aca45f8bce83c5bb3a5a5999791539677f78bd5ed6c77f6a9f036dc97b8c5f65b428b830f352992bd714b161dc9248dee182beabfffb65bda15f46576beb41b3da50e6415357c7ca7d5a415e5626c9000e786c649ec96d1ef744a42e9d0cde496cccba19172cfe161036fc134aaaa27460188c4a3d19d0bdb94d74068104bd71cf47f05b5b81afeb1567aabfe89907103fcd040ec12d66eb48a74d10ac02b4ad3b256a092c2b803cc47cb47aba76b9e86eaab1c84a860957e6b7b8c587448e9d53cc744a493b296bd265c6d71de3275d666c23d5b2c95cfb843ffaaa91ba3346ea7240a5fac164fa8e961da3e9d08cfb070540c4d73559fc17e738b17825efe792941cbd78cd53acc9735ad30e9761ad9bd13f68c45f33b09e8322ffd32dbef2192c9a877379958621bebea9b069fd6b65522ec2208870e14b071be07da9103e06fab83c0a5511e47842dfaa50a151b4492f4e47769de374d1f6901d785650ad6a1ed832161bcf4740530296dd725124ce0ff56f2623a08a9e0f6e62d6e5226744de094dbb101b74e376227c144d478f9d830bfa221ec87170e7dffb21f904f6f726ee5f5159e37ba681d886b77f01eb58e1c2200a880f0c6688b03412f78d20797a86842f232ba0a09b04408a94a6b5427c282b43a93303667bd4cc7d6c4ce9f46555572af8577bb7403376ee228d8971d7b6879ea8e6c17034458ba1d05b6a15c71a73ab5e81cfaae97a2a76ad573f9c3696304cd9f780271c549146f76d2b6550f9d88f5854901d2b7a87aec515dcbe24e8403b7d461f72b9865e5becdbd4d21f23bc6f98613434099d28194f94ca68b30de2989fae4b0fee19674a1dce8702d95c62ea4e28263e08e8cd4a9220a287ca50c4c620af4c6f4ceeaeff56816eda6104c3317ad1203ee98a53f639ef301aae9ab8c481c38a15de714ad0600dec7276e1aef742236592961d30dfb4b7b57d219db981bb08a394b87e9f940082d064e8f44ac6849d09e6f222d6043d2a66c2615c2f4e1c679ae369de57ce6d6c1c2f4bc2078acf6bb480612af163df98ea46f8d0958c3b6c8a5b420a4255a19ae940953cbc7fc2e421223a0b948730be1cf44bf5d1a42dced7e632569adea73dd4538c2a22c2c61a5d77a4c904d1d1d61cb2a25efaf854b93557d099aa73cd288d9e64dca1849b69b40e1dadc544915626eba39f535c86c18d4b7024122b687c0e23b82aab307c2cb3a436b298f91db4fc92506270f39ff0fd65b378dd68d08e72a295b6cbee1315244865766e61d1b25b4b6cb4290e655c0dabea44fe95fb636a8b47a7f889eb5408616c16846f4a1f5ac209088bc80c2a347884f7e3b6af538c4f99917f434401abf2d676875d9816706c0b53e12070ae97a6c9db34ad2814df29c95ac8a39ec5afd1cb6817c44be326620122d67b36ff3ad4743ada196c62896ab1377a14a43ea2923ff33a02681a593642622d5b35ad8a7c2e5cfd80dca523a22c6f88d2c64ad629a6fe3e88986219669366fb685dbe43feb659d26151ea51693ba73ea8787f72486ad583b48ad9d23bffc67b2035e13b06ad643805024d1e6a6fc6dea7baf0f48ccf640015d61215fcfa2e5d978a59ab743410e4a1ee1da10720e34bf76e2b4c7a23fa96193e24be7cf75c6d34ac85f8d42b9f097208a981bd85e550c062e955efc1388099340cd34568a6a190d417ca288ad00fe7df7357577f3246c91d2d8f0fdee35848d43ec48a92137430f53c034de18f8f03b21b389d7f03704316594c6c652ed230e5f03ac2a2d1665b8f02db1b3f1b5b654dc6429d388eb2912695696152a4f7aae3afebb70bdf47a410a7be6fc32bbe66a1d703f791cde161cdea05f94e4e060b152e04aec8343e5a0ab940750f1af7a3c2152d8dd0b73adc6866515d54d8791c6b03d8d33cf76f5b898167ef232db6e37fd5b7895c3514d55338f18495611cf78c3c0584c93888a1b27d48cbdacadf2d1442ec2d414e4b7e7347a82bde4ae9d08e9a7b28f2076bdf4ec55c20419372988a2426d6ecadb041337763f264e728bb55842ae0025c09dee7c543be898b179a17d648c29baa8a6f42248f9c140d508b8b3779b3075ecfd1fcf3eb5bc73f36f1f0832242a47037ff15aa9d1e0c634d16dad41850ae303505827b7707393fc2c785aa011666767039392c6ecd7844de37ae82c00201a12925a4115e42b506e67fe94774060c3947134c2becbeb7cc709e15cdb485112ab4ad94be33d59780efc1859d131a4740b14723a27773b73a8f34f5983b2ea2a619545c360b72506490eac4e9fd2bb3c95968ca78a79f682dddc2f786d659169503fc38dfeb6fd9daab855d423a299cbbd6a32e9e2a96795b5c628af776d99a992f3d3d1e3c26cc5654d606b7628b1d1513c61ff21c69e32664028f694189fc1ca778be16b43b6bcd0268cea03bd3727e57551f1acddc29287bf27e148a57dc69ef85e3ca415d408e40713050a9d47474fd59d7fda8b57ee948835ee2c41fd9b3566e119d0edc406c00c873d1e52dfba2c1019a77802ffca6e2782377057d2f4bde0fe27e7895454262b6feea768f7d45a88037648e48269d87774af542fc8bce734892712b4c775fd42c3ac6176284e7c1093797def2d89fb3d060baeda30a9696827da311516e3cdbea9eadb709be37ac0fe154078c06be34eeb046774f4547b56fa4456d79b9246c4186bfa533e1afed9806f2fb38964ff4845b2feaed9de5b5c88a348186d2ab9f43cc9731877acf7bc0027d8cf6f44a5dce53703b3e179c915c286012cb53c9dbdc71054facef51aec561143e3f0a38ba4614d9d4dd1c08b29328430afcb560c3987267b0f50e55c215d3c65a266634f8e75a1056f41e7ea25aa89b869e935439ee98a1d2e8f9c79723c09aeec16b9f1d2806109f9d013346dfe612f01a72725424ed241239ce67185abdf7c26dbcb547f15dc8add51483832a337607baf77b92746094339521f05d50e02a5636828c08ce174fe8c0b3ecd843ceac99050cfa820261d510ec3f83e05ad56f2618256638972e6eeb46c854b6e73dc1ecfd296c07d8c4bf1bab5c9e747698e9e53a372cbd0951c794ec6090f1ea277c48bc3bb734fbc8d794874b50ed1b5eddb79e2f76d5457c8d0fce9d2fc25290357a69aba5836f0ee9677610a875bb0204d8f23d522f4e02cb8bbc57ff5c67f95241b666da9c306bfc6d610aa69bd9aef8d02d97fa566bc8a0bde567e644d51d5b06565ecc4692a9dde28db2a8e8c215da700e3f516b239fd375c8e76b67d39f92fb3bec0abfc5668841b29a817d322b49c4f55877934fc93bd7200b7dd10f2f40de5b7c483c2de3db54deee3e7d3e64ee1f82dd0383cf0f0b39079b3cd40030b69631d50181451d041a60e7123dffc6ddec346819d302bb94396d2ceff64490a95bfc0ba588d648b4afaa71bb8362e4971800b77594a78b52a639ebaf09ee156982639d2d4cdc62bc9037aa9d50239a16821bf2300dc939539b58ab0a3964f7eaca34f9b42c9f3ab09a8e6596c56457d0aa759828b2a57e7d8568eaa1b47ee7ec032c19afda776a92a8e4442b643466b8fd9489ed4d556f97e9d3e88e2dafd1af6a240ec833736b09f057ec0ac00b98ea3d39d3b1dd1b50e3a38e6c08698e0872649e2a1f6eaae2bb03c36c38e1b7405e75c71528aeb2e802d4e37db16df588a5a825b419c6b3c18f9c6ee9360bf78ae701489dfa2e896240eedb264a932da985006c0b760b9d4f0e973e7246808f82a466b8703d22859a1a4c71f8cd7583fedfb09a7c74edbd6bf4475b2a1b268fe05e66e3089eae1b0115044aad33e8577870232e2c81a20cfaba2d5b6268c1c774bc1638db29de7a0c980db8788fe95fc024055308c9aee52d3ee3e1b110aaf797bbb2ff99b0504ecd73dc637cf3d6024c9420f9658472656cde710d34d838e13b3ad945f9b1ee08f509efcba1ca50c9f9acc224643c10f9cada2c7c76b12b1ff17e33a39c1477c845752845de6e183b4a254ac439648dd25ff06b258fa1649fe109e8b0e08c438c2591b0feb2a23eb12478624289543bbc0c04ef8aaeab289be98925b8bce3e6ed0e04de96839a13040afbe32b7b2bd7015128bf2833f4e7b8c056a656def41965ef35338afc213a8008f914f2a35e38fdbe920cfa75414e034f44094d729bc03aa032b897bd437b7441744375e5a873612e04489f66b7328d1a0251ed493852bb202e5aed6d54e926f11532c4c48a05e60d1832fc1fba0776ddc9f6e0f80d37c7d4d27f1e7fd9c080911ec097979c8befee23d7a116f10b8bafa25e11597c2c9f0cfac8a8f07eb602c58712644e0bd3acd3826b2dda500c03e87a54b9ee3d23ffbe6c077621509464683fa0540afe0e37581c4e66288ed85b44dff58ab3868f01842c694e1d245c3f350d1dcfe8fb989bf56f5741f6e1c658e4588b38da74ce96d42b20c06e1f65014e3f4e1fc1471da715266dd27ee1372cc3c88ff10b32addfb1b90177d85f4f060a69671925e56136da21cebcfeb1edf98b2bca55d8c115cb44bfb082d651d5b1aa69eff173e5a41d7d8ef29e257cb705c2ed46d59edf79b69cba6aeddcbd139a07126daa59d951181af0aaddf2b6e023d84f6e8901332d1dfcad7fe1da4777603e2fdbb1996bf31e4776d25029a9e1a38e439acf3f50017819be716c1cbf695e5fd262f4c68b7405dfb6b48fa49b68f4b452b5bed0e00e875eac3898ce23c2537f257bf9f81fe4e83a12c86a4bf553c5eba4c82a5fbb726245b6efef109bb35a7967bfc53cf3cefbecc2c102eb6dec3da82914170c00db656127d1eee4de7e9d53c304d46e7bad6827fba2f644ff9662e35e2c6b9b9cda18fc899d46698b9119c994a910af8e70dc8867aec277410e89d359c98f61f28d7468801dba2212fd7f96f4e948505d4b0af98e40240a8d37f22c80fb0628c326d1753059ab449ca7a7e45f84f73b2b73f6c10c32a03e1b4e140700064991b647d1d878c56f2a70e203bd0b5fe82ba6c7fd432b6ad94a36c500cfe292350a2198c06048fb0d5e605aa92fe29fef24befe94131b24dadcc74c2c79bb5febde7118196bd9b71dcb3bda77871ab81d6a2e3ae9c727e7b2ae98d16d76bc4047a00f02fa39f53ab44a4c550f101c4146fa30e44b70435ddddf33958f2caed6adab3c070c865ec25be70b491e472b4ed43b4da855b7ac82457a23f14cd16b7881e4d6bc8564fb01e6b53a22896c0ed0fe1c3d667abe47a36a2272bbda3ed1ea2ed5842a13e667c56caa4add15497963e68393435b708629f3379cb1f61371582f4967913fa654170640d7683325b09bf5d8a48616b6cec5b7dafb3e74dedfee4abd6a83db72d869f56c3a1bbd7d255eb5a530fe8375858eee510ba337c8133b3918d4b2d450fe4a6145459dbc3f7bc94901ca53e13753ac51bb37b3a61fb810b5fb44357853a8926fc6bc9938ca636364366ced3ba40f8f1fe63d5fe4e5ba81d05e054a063fbb63a93e6a462eee9edf6aa346e20532c4f2f9bb86c14c09adcd47a9aa5f5967e416a8c339d1ec063bf7ce1151148c9dbcf37ecb52574a7ab4752a5b64375ac5714e5e9c5f0931be7c08ec787644998a65a6c6684ae60362d8537e5b99d261f11ac12dad3d8304dafb5870cb7b9bed32ca9ca7d04f35aca2826c1127d09437ea59a70272716c25cbf9998c1cb882e9a8dc733a5e7aa26f50d2fb1f2d53e0ee4de06c1551f713f41de1cdb225be8eb508e94028026c9ded05099096e71d83e3f402789c64f30a811541f3480211a874bcc43f23f4a0a1a1282d1961606d8f6304accdf7e55a2efc404390670daffcdc0e4dc5469046e1f8a74364ac2ad214c81a3d68b689996f952c535b4b5e89c5c2f59bb9977fdb72a0b089f644784fc606cebbb7228b5e3a648d092f385829dbd93d80f241c98ecc0e07dd270a3a0950c4ac20557e419e2f1200f01ef1242d01a12805c7111a4d9144ecf0e0e171d7b1352e3d1e69169ee1af585eb388a4da67df597f98fbca08c7bc45a828a002a24f07e00511aa9acebe4558fe98deec4b59f264c93e5163dd9f0c360d34d7f16672bd16f4ae2532fbde15fbe4a6777c7384b7ce1a8459a37d7ab97359a132ad10045759f9726755accce5c2d905d602d8d4b87f30d58299e61c360c1e4f561a20f2c8eb4a414214e860184b7f35a5206b6edbb58694f2eb397e220e4b0470cc99947a6aef3bd605cdde3ab1cdc9dd007d9101b65b7ef696a5a0db797753fbd31060f09e89b065bc4c580fe556b8b535ac0c6bc65c8e42c85d374003699719db7a13287d1c4e33c37b8200373f251fb9e5a84de59bf68f5d2ec5b8f1dfb1a943d1b5467562cea7ac132f68e2e785b049b38e25620933aab00d50baa0b6a3b8075094f856ba52c46ac34da6e0b389067b111ed908a90e4f3ad81d883e62b808a5a6111e2ea946a4eccc518dc301f6950363e067108d65259352635e25e77fed93a01042603748e2b7c6c4d0e6f51d252b33e54c5ead9b93cb1c1d89fc4fabd35ac2803d830517c0832b84f7ccca4dd8a6634c3238cdfcccf4c90f2bfa556135deefbe64aed4e306939b82f9ebc234510a26495570a85448edd966e03549eca200d019c83fd1f2d269b834242a98cbd6734b983c09c3bb5f1161a4a3239db21878ba8cb99918f3af7a6b23ec7c7d318dcad426e45fec3b5596728f88af68a938480be145533fc7327e3e168cd4b9d38e929b19cbcd3b65562b20ed609a81c7113d5f8d308d9d6a64c6031d030e9c6d0223fdb8eeb71ffe322aae0af7a48754db4c26e7cf04f23011c90c99a5e3fdbf940db3a5d80e85d050f7ef654861f6e37a1c81d808e97fe0fb6c750625738a1933c1c6ea9a6c1e51a74f3693c2e5754c43d0d64c8cfb5140e048775a0f09d8c77a5aab71e1a787ef8ccc09939685266ea8d8887bef50125820078682b2728487b9cb47d82d83f64eb6532a940cc225aabbd6330e488e2892d05da5ec2940f34431b6cc954d55fa6100bb4013b8687d88e03b1e9fbd580a84a78b610aa5abfe2e473d6c9005105a8fbbad8ccebfd33feec67fea2c1b702811b73cd3c59139a995932ce509db52ba2ac97de78e4e6b8da083b4d3133af7124c83ba223359de5d3c0c953533d1bee1ed78f7a3889aa4ef3fa43a7cd688c94388dac700a5ed0d9bf72b7ac6dd0d5597e787aec85255eecc16bf2e193fd29a7763ae21db98b717ec0e2055c5c93aea373be9ef99910b78a301e1d1f0208fd092b01cc67fff9f37cec5159b28110ab73873de270f2e1ae2e224a17427ea27bb9ba9276b02b65dc4a8d51f08e64b083d595771749d5b5c95beac626dfd0039c9b188f2cc39416d719a41542ee2eda2b3e4bb2263fc98130dad105a522a427ee774e43c6da1301d3ca6197240e2ea40d01af1d0b171879115194dc54cc090712bdfbb7c20184edb3b9ac87a4425514db81974ade475181f811e41fb7a2f5608c0cd00f049e49b76d97a011f911b9f0166a2ff16be8c9b61196e50d68b1bf123ce41236499bc6989ab00a6d3dd11620b72b770708271501889aaf88cf3ca300f2a21bddbe30e687deeeee40dac6489a8224c327a17491b7717dd020ae94428eed93d8cc41af95a2a99b03d6c8cad2e80cc8394749d0dc55fd78c9ef50d61fa73fa34c812c1f43ab2b6b32191a785a37715056bcae4d5a40d09e8c42763e235756db0c19cab567958a9e1a6e6b462af42e986a953f06b198c90105142de219f332d2c293c853fa21ae1c8f51334db100cae9173ff1214c229b508e57398533d10cbbab60444ff88b323917cc0f06007210c4d67ae689db36ea3f7813c7cb839162e7183d47c5e34454816cb4801e4ee127cc72a56d24d1caea86894b763483f6bb20f162d48f3fc1e64efcc1b74c754cc4688a4d112fe581a6dd79bb091f8e4d9e6a2d07dcc61755a8116c6f682672862acc131ab56891d36160746142a36467756a5b28b0637720853711adc12be837e084d400f942963fd1f79bd8b122aa2073e91cadd437ef0b9b5c7563fb939e6f2b07e9cc5c3f769210ea82838d4f677aa7a2a6d244e917d510f4d8c521ecfcc2c30341f5ddf1f9398e84b486ccd98942d3d543eb870f052b12ebac74084492fe56ca20c309e0a9a95ce32a931a135e4cb7e5d06c2fded8da82df18708f789266c3689dc8bd9855cf9b36d88069a11b39e29e3e4f9802310c3b6477daa325518729b225a710ee9297ec8a21b92bc759d03ea215bb097cb58dde74d68aa6edca9537dbf6251d30358220065d7181df92e8e4d4ec078b3e8c31a1ab796f220f1a6050e3a598a9a4da4697bd5ab5e26ba8dfeea4f20a0b62e5398a0356c0fcb405ce6f949995e53c6089fcc7d84110785fa3556968b5b27870d508f29801890870f1ee7d8dfcb7b76b9e57f00c2f5528de49152125037d68e2abeb6a1dd62ad0e5a689f0124d57f4e15f9f7c1e6b63fd333a1c5c11396ecd757a0df2f9a16f5012c647ac0a4d26366e1144ceab0455b8cce4c626aa73047b65c04836f1fcc9384ae22ba32fff0e800055613f43459cd0fe0bea668285bb2c747b84d101f558a0029bc9ed8ae9d5fa4b2f8a83ec9bec1c819cad37be25bed666f4ebb1d720657a557c25d1fcab1f8f451c61ff9d5766a7f115ba77996e1e51869ba36055827d75816f807fb8e62279ab336efec4318fa44f837aebdfab2f4920f58cd213395eeb68bbf00fc77040a17b5de56ac1a8e12b7f03750b7279db7d0596ebafda040b631095ea0283defbf178964eaf682afd9fc8e1fbd4c9310c4d0a30fd072a98c72923401a8c1c580eb9aa4442b6830ec1ab573eb9b96cac868188aed635b5bad7b270bf31c416c08d5edb9bab904e61dc58bb46d718794ccd21de621854e23b31c168158cd7c92962621a124327f97d9c0b6afec682225fe6b9ea404bfd4bb589d9a214c840e09f839d3ce432802a79041f3b97e7662dca1f3b942bf93e3f1d6a1e57c0bc20da3aba3956aa178e785b7773eb5990b0730a2a164451d29540293283e63c69cf8c87daaf44fcce31f12b7f81981e3f47618224a567987181868035365150c2d39e3db8612626c61495ca7a694955ed5b7a187554ed1b92be7bbe5c3dbf727f8a09464912ddecba45d89a3c08639ecdebd225853aceb7c77e3d45f483f86e49e69f11b3939262200e24fee34f35f3f3e694b4bdf780a50c0520e09203ec92ecdd833f3c8030cb994a559e7b036e5eaaf77e0e5dc98328b6e6293642452c70704fac935cb8e5903dad3b88267ba14474fd609bffb2d54aa2d0930c53336f2c3759673d65ada54892b41b16e645c83c02eda10ff6837ea9b0184e5987170f62866cd26d7b35a7c677ce2faa4255be7898ecbaeac2460651d8937b257cac89901ba7623edfc2e6426e12213961dec4bda932b845595afaa96c21f13f7d5c011dae535ee7b85da18ded3a94a44f43fdeca862bef1f60d6b75631cbcbf2c23bce280cb6146e6acdb53be099be59126f11b53e281e6b3196ed9ad6b9856a80aa3536555dcb482afdc73870f40073a420e3df4e7ca0021b79d7df63a7a7316e8c628d208912e2386ae6101e3fff014bb225868d0f810906e94b7567d0835c5ced7a2ef2d19c800d0a09b81304801b66fe252dba17b39dfe675c7d43b1c2c45acab5abb0d60758badc72ed0ae00786b326749897e5a9de1266524bd5945ee29a3bda1a5a723201f6f784b79f200b165f4ac760131ae5ebfc00cd928e945785a05ab724a4c790ed553d0e90c4d952e9ba711adade925ede65019f0426294601b42b7f127af4799ab812c7efe61fe733304db5ea0bb80a46993bcf01e10dbd93cb7477d749bca327e8db1bd16dff2af826db136eb6415bbdd132a6b32ce7a851618654e761a12bd877ec572a9d21737e0e9214000754d801f251d95c3c104163b083fa9fe83813069369461016e8ccee17f19a0dff127eb8b5f51f6de12bec10d9ba89deaa34f92ee8b8c3cb49e60c6c5526edd1333b3788e5d0825a6c82385a3a49557cbd9093b0c34e1a8d0cd18e4158758b9bec7985a9ccf879209d562359a2ba2ff17da0e6dcec90a5318402d1dcd4ff49738e390f5f64997673f0cde62cfd68b2b8b82113b35e34213b8068b218a83c17804fae6afcf5f0571893cad0b21e5b3de8d059abe36260822302c14b698c0237f1aefff0fa7b8221c1cdb1a1ea218a01ad28a859e61be9f5c5ecd1bdfdb75e40acb6fce2a01ce438338c324cbec017cff7e4581e5d9688e99dc1aeadae21dae60bce25d62c9e8428acb54fca87c43967c90ea9128aa89220d25d33cecb29892e2c49c4b74ffc6fb0a24d88ba53ab8df904c648ffda262e7bd2ea2c3f40fd884d8a3e449d8870bd011926ceac8a4e36e1bf099a4c14291330974f7a3df4d01dcc8daac9c6e393b262a01f0e7c73bb5fc3bf524d2af5f6e9b37954ff5dbf4bed66029d19e7e8293e6badf3d87662074694395d76a478ec77c2109a34567c2bb13ed6d133d053f78fd72e5db7eaa0a9b3534680a96027eaf73e38da71528d1271662ec097b539a8fdcc58aabb9dd048808d343c1d05cc6cfe5a24bd65898f1b7c8f43dafecfc15e4f877437fd56094262a47bcd96929debb7862dbb4f77f7dc6f5426b4a3b16108e4b3bce82a54d3a260b4be89f033a374298e6a3b3503f301ccd0bf3f3a5c36277d15b2b3eafe975e2bdec4a581755b89df3a93e10b2e9cd6e6478bf127c17f7c40c7c0c9bafe8b2dc75de0488707c0fb7fde1d68ee22fa3d231f44bcaa54065538161cfbc147fcd8b0d57af06ae83965a6d93b489981a283393957d791b09fc7c39d155ab7e4416508582822fc5f6c364beb665ca03954f664716f0176aa4c910417c4cc946e6ff8d7e82a9d97b50626caf6c37dc41c74d95f35bb97534ce7ffb2afcb2cef6a9e04cbdfee519ed80075fc442f10be840df849f90e51fb0384da489dfb688ccbf713aae45e5310ac486d9c287041580f35abe37cb2df2264b066978c633f03c65f69edffce87b17c856c337b0a19007fd18ba0a48ab2c743037f6138f6a406bd734a18061a593292426d9efca65976b42f8f24e31893a8c35f970fc91c197b515ab34ea187777ae1e1860800592aa13da0c3a99f7f634f377a589d8ee9f542774a92f159152dfe5c36330c040ffe55746c1b8693add9344e4be97d0e8b5d005fe3c5220f10e91614c4fa349b53fb00380f4ce9e40176cab84add01153445546a8137acc99ee0b8ad3c1b5fca7a09ad8d0de61fb0033116b1f25844c0d35231354c4da0136877f1b5ee5dd7b2efee60b7ec73fa8baf9ee5825510a379016324ca124d5495b6ba4a53093a7ad039b35c542d5f3b31d43f55ef01fb9098a4cd9029196f350ba37b70b7684283d6c6e31a19a83c48a03d5fef85147c7028b07effef777a46adfe588043681c21c2b9aad30dc869e82b75132b971dc7ce1c1d50839c11d870d8386519d9b0777fb85fa8a7823295d54cf767ac7fb98726cc8de7162000583526ac5b4b48b2545d25902e9710c6a389a932ed95a9f27eaec7f1c1b5bd4236c78d7d8317e8b7ea75c3f5599873d6b2057f8358742dd117baefd2242bc1984aa618abe0a01f7b74d98bfd1891bc2f3746c2559885f262969838749cb4fed91361451e8889b87c5994a98fddc023514d7248f889a264a85fa40a0465492fec73e3928ba67792ad03e771006b504bb35caa99e482c2335720c3f2491d438b2a3f6a0eb7b172127b19ced5cc6495ecd1d798cea3d5571ffe6f7dd751839a8140b62ba96a07de9953b18b91486be41d4b03a41ffd7a1444b608ffab925c97d9c8e6b1e1585d17d26cebdaeb5615050917d61a0b75ce15ff337a17c24784a04bd303706a308375d36e7f0e5388fe2265a5b786625d60b9e09d4f2cc54eecac1489d6ecfbda0c25c37b5c837b7f0a1ce22a54db209a5c36e25471a57c24eaeeaa3fa367da4caa42266ddfec51da7754958db1588ddb9ec50023cf50e39011feac6be9b3468fc54abd0f20271f296360c8bb67d516ab6515a6e46bde665cb48e010327dc08c77b6c6ac57da622811347fe9f4ba59f27955b588f3e25973e2d41dea897c0e399f5b98fe82f1840412607f8a6c8a50e9d93d205033eae4b5e3f6aa36c5f2b1f7b33e168fe4e80512c899dc872c91ca3c89ba6b81f57b876886fabf98b4ba5e0717818e32e1b4da2655f1dce8b6c5bf2c70e9fdc513c2487918aa4d83d879703b77041f5fa11d3878fb6bb65c9d5d0bb4f63f4f32e3ebb0651816761cff1e656c89fb3b13acc81bbf28c418c50a3bef80036f6f14076b4c277e3e0ff0cb805e782ee22c0c887bc26c11dda29003fd8e7db18d7e125f112d3085de25729361a3d328a78d4cdd3330efcd2569e566a471e8fd9432992aba68770924755134a11da9c333cdf2d006ad052cf4759bfa3604fdf07c559abb919795c96bf299d810db8a0de8b05f95764425a6f343070ce9162c031a449b526057f11f3442a7c82f8db28814cdac681243ed322143946f1d5de4c02f7013fe75c8fb045842e7b9130cd272f410737bc2bdabde705b2fe9faf0eaee0be11a97f6107d6c4c7e6c43e2d073062e3ae179160bf260266281476dcb43b163ae68354ed8f04f8ab950628c78eb57685c22b14a4739201ea6f9bb274eaa761a86a1b487cdf2f7876be737f046d6af1860140b7dcf9655c067a839a5be99aa102af6241820bb56a43ec06b20a02b8543804e5ab8c880421c59e9e432c3e56f16f011417307ab852f9179db5391dd788fcd77b01199a2aab526deddc7e9e2e5a4425943663ae9b74bf56282eb4509f5b2a9edb8106bc103e3eab8efcc1f1fba0e1d78b4c7760e34bab2efc20f90b751f74dba5101b0b00d37b5d6eefd3aaa086f93400d84fee126c843f97ba1682da14644dbdc999956c4540caacf3d73eeccbb49d9457015266177d5d1939e67cc85fbeed703979ec0ddb86975c08de5186507f93bac94857452afcd26e3a44a83b374fea7e78afa474678b6d5cf561012ea2af1039cd31b2bd3ba3fb3a9f174cefe3ffde9f6222dc64cafd61ceadc59065ec9938cf1e828688f9777c2f6166c481b8bc569e49478d970611d7c3701877ef3d9d35f52c0021725a47482afa35aca6b6a06f777b8643905d6d2fe24714808efadbcf4a409810c470a68261d268e1c8670c48b33913c1b1812b454a2feaa6ee5b4ebbd51c4823377da3ad92c44fa364c03d6c206b08ea653ec726c5e25a28258181288273367c9292f0380cb1fb311bdd5699e8ae2ad79c85b32de0cb08873f4a57728fd4b96aa63d5944c07e17305dfef7c9e7f1a323ed40e0b26fe0799b7ef65727b6a3ff6ae25e9ef1fe10a1abc65b862278855774d960b8aae94f874844fa9f3b232267516378ccabcf73228b1f585433859921b65a41731ab60979ed71252f9f4393b8405215e10ca76cf454227589a71db8d816bf1e8f3c2ec90fe0e86951c4a204a99116da45fa5f311ba4fab7ab86bf617504418aeba8a85516111417f04dcdb23acdd78228a052231f56c33ff405d004df4b47c50e2cf8560f7069209ef83ecfbbac67078186d8a1609a1ff2ca9110ce61c59f4eebbb2f1cbd4a156b62fa9028a45a04381c36cac202bb7333fbf2f8f1f3aa7e9730a916ab170f68531aa6f33add380a18ffbb5368d361f560d23d01a6b06052bd688c0c5c828e4ecac583614176b9e579a61fd3e2a285e9a83c663203efbebd7876219d053ba0ddf52c96557361b3b9b604cada320a30ed92272eafcd4d91d1ed3b75008fecd61de639c8ec43174a1154f476801056d71571a4179c4ae21e9b8681e235a0667337b5109d8a5450c31c376915be6dff08dc0ef241188db9c7d64301d4f248475e2ee6e58be043ffb7af7369b612d89bbe2f1135dc50ff4d550b77fb35f13b84614339e682150215e6e18548ef4aa85ffa57d35053243b79a921338cf469b20107c97b629a3453cd894e214c2f095911296049c8742bad67fb1a2f0d6c719796a331840225638190c5f48a848275625f059c959234830715aef8c3d21b2ebe1d0a2f684ecbb0eb024813e8662c0a28db5711fab6c60d316c805df597cebfe2e23fa56e9b41392454d5f07b6056e1aa324b7976dca2baaf8a7dacff5a94aabc12639e4eebdf8e82d398acfe45e6ebfc8236e0c33f9d389119a4458afdb41dc6102c8bc48dc50576f9b4badff4a5e019c3de5ee16886256ac88df4ec73b59d541c39f29eafa8a9deaae425594dcdb3eac1ea678265b6787a81df179f967791bb7d802e208962d913faf101694dbf8e8a21b36a2de2aef2a43485d49faee054d3a97c5dda140b5c81d5e15ed34417db280a76601fd00cae0f7bbaa2a01d5c7f2eeb626f82d1fc37412813bc694bdf974f7df35f1a2bc2188426f17a9f215a8934bd337e5d96c9bc02d62d5387332aab573ff3ea594936099a71dbdcb311a3a9579eed53bc3f5f3530b4c8953ce3628f41bebba0a308c67666ec5c563dc4516b3abea3196729b12d0e2114e496f94ed2ce7a71099910315bbe52bb03c3a6b0417f90fe90a09d43b62468777117ccaa639efdff5733f261b98e055a4607355f65b428bad805d2a71c51e06d34cf38c55f94e601f819d7b2602560fd8e2353ed20545ec7e9e94b97f4d45ecd301903f436a2f9d81535f58541fb46703e2cf580d3849a7725a94b55ed5d519d001f37ec31f222b210e276af91c8431e5b4664716b5c4950c6912e2ddaaf3734c091899c6bd8a4573a0822fb8977183d77260a48f70e571270fe31aa4d1456359ed0c113c64a4484efe827be77fa53a744ac97b5a3e355b6d189ccb7d37e057ff67991e4534a3386a353bf748b4a97449587acd70686f5860f49576fbb3a83ebb55062937598d3a71828f9d0fcdb7149eef0b0f903530cff23bd33160ed870f0b767b526e3faa18a0c7de3e36d16a42468729aab3aa5d0db0215d26e07cdf420a017bebefe2d1c0f6063bfc25d048e887bcb1795f1108c2748e31122feccf551ea4dafadc5f79c5f8c117d0ac997e360f1e294dba0c0882b7ecf5c75e66d248b3b739bbb42e15ddfd608f05440e751ef3b06a6c7847cf4661e43faa0d360b2108c05c1c67b64c611204a3bba6c19cd8c9612d0e9604b8e835896b35e56a836a0b8b0640371e86d0675f2265b8e9e960cdd3e9dfe11c9faaccbda476684029ae477ddffd6d89844c55853b4bbbd3fff30f40e8805733bbb018cdff8f122010ffdfdfbb5ddc262e1be8bf0c09d759f896c056c2064a2a7381817c3b34c558ea739c411a212ebe122704dcf40eef12098f7f5471795e236d8a8b180d3087e51fa2063d03390ca5f67f1488c81ec93605eac2bd145756942e9b103ea5e092dd362a96358c4d0f4679d44ba885d18370e0f54a72fa0eaa3a6d67086272b6b4677b2beddd1e3782a3e9fd74c297115d19e4c4a60a1585f3f79f09e15904b7f94af6cc24994f87f47f7e7353e342a0c8953daec8b1f99428e1757a67665afead76cab429097dfe9c1673d5939f5490d6cee9cdaaecb287a50a991c4083d337ab1b0391285cab138c8dfc664c12cdc9e901c7820302329f07db8932effc6e24f730b5950a2b0e71ae8ba78a0dfbcb86be60c3f009f4ec91d7ee6e65718f091cb27d18f301fb7b779f9c704c825db0d8c03bb47c4a3e430504d76c41648fc9875582e56726b496b74b4cd5dba0440322b3b05e538bc997182c3c78b5bedffa6342dbd6ab219fcc7763242f096b8b789ba417a0e4c0c7aadab9309c9719b631c29ff6a503ecbb75339df5e4cb3ecd0acf37a87162126aa2d1ccbb5d1e886fa94a89373cb298833919c81662bbb6dff91e3911b843eea25d75f4e63c6600f87ab38de01a833267998bae834e991a783d3c85fc6cc32e6620b1bad852ef5386744d7d5f2d41a89df4a1c80536c65fdecfaf3fb9b5624e196569fec5b31eb8ae127788d4523ec9129aa4bed0a7c7b9cf0e555986e762ac25a3ee1dc48abbde0d5929aeeeecd051898594bb3cdbc8baf252db66374f4ae1de268bf1c5dc729e0e0f6b7a77abcf074235a38f881116047fc846c72dcf66232fabfc954d7f522b8c33db14289d19e7b99db8a2cd3fa486fa856e1ae00b44bbbb41f2069d1651df52502c9fa1470f5e51a1edb68f0787532ed87e076aec3888733a90896fdec592c1b4a1e3a229159aee99127b92a77afcb4bc7653dea9d994b927f1e68597ec840d859653d59315e4ec7227edde595b84c48ea947558582bb9dd0a0768f3365d4eaf9f855cb35fd0ceb89e68c2287acdf15fc3f68f181d25ad5de1df939c0b5879b22c7e509163cea4a0d365ed25213050c72b47a542d2c1a665a5f4272a1c425a7f99b8037ed49e273d7b9bbbb46da8d7c5557dc3e9638be34914db41f625ddebca21d65ca051c892ad63ff9ec4f6fe6bb81cc28530e600deadc4489e441b14282368921d0d2b34c8fe551d61fd2e50ecfbd8b30383954c4dfd594eeac2dd58d50973272a8698f3196a6a7c00f5272ebe4105e3f9338869a07e603ef16003f7d2268fe6fcdeb349f0941b2e6651aef247921e7b29479af56feda482dfdbd4db93465e60e03b7ac3c6a31131a254a5b99c21418e110c648f3bc0a916eae02becd1a0c78ec87e305dd3d3b2282bfee585c4fb6b94e5fc012d399dafef49bf636b24ab7556e2131ce7b9f58681e4027ad47f009e5357ade8f058cfc23aa88fabfe2600fb3301d059e492208251932d1c21b56cc8d5c184e869be2828a1983a843089ffadbc4a1848ec859aacbe92feb273002d1f33abbe8830be2fe2f3b34eb13316701acbfe827baf898b8804744ac0db46c9e3172eb8354a6f93a020e4db36399b57417183c5cc394ba7ea0eb864acb7e8223b0921d778d1b83c568021d42cb03db81a1d5d0eb4f5e04aa39249f8e5a70dce3b132f925050e3e6dbb349b17c7a1f9c4e40ed9eb887a776f8e36169dda615282c854fcba57b8f904c5776c51388c06da0d3867e299de1f449591a3d10ba6cb235b1eb50362a11e40492fb0afe2cb51e260c1fcae35cc342279d0dc23d5196fbe27de0b8dc9600a3e7afa9d83ecf1d6f2b005de81105e1c1e188df34fc0c4940bbc6257b374736f66822e3e836340d8e5e78885d76324a49e85026be97c091b7dfca035570d202b8dfd20c7dcb66286188486d0fe6cd100e4877fef905b660149a0aa624d846b43f07b4269eb3bb6b63318d0be29ecf566a919a9b9c1d2c56a58b3f4076d8c1dff860109949ea922ea3cc8fbdf69a7cd4e95e88c270efc5e69a914ee3d551bd5494588aafdfb9c8226d3cee2c742e71bb5dcd883752e1726367df9e5b99fee2cd66a7da7f723159c64a9f86f24aefa17ebf580e4c0f704cdb57e6742e23b03f0afb14025dae6f7a8940627be4e86af69c777a985be2ccb536de7bb06c31a1c5e3034a51890498b6f7b51d286714ddd354a4ad210cf1c1529488b24aa9c294380862e76408e4efdeae97480e09e30dd3a061eaf245b31b0dad19d263e07d6418d4554eeefbef7dc831137514d6ff70bfde0b7a647a1dc0f56c5f518e5e3fb255eab4e3fa92cbd9ed8f6747619044a4803fcfe50aa5fd8c8b8138ea798962ac3f2901c0d8875a31a164591b50987587b23d9e2feb9034614b1c405514042a432063779f27b51b40ce0034ce65981780bdf0b203283490d526e52eaeb1701574db36023f852b5da94c9f1a6780ba4bd67cf09a221e474c9842163aa1c66535533296eda22945c0bb75d8570ed83dbec7e22ecc0388f8eb0d00d0229df823e00c86f692be329c431ddb7d68d597bc869472734e294dd4e230029ba0b052ed62a323c37b4a4dcdf9051acf321e73af8e73beae4138871a0ff024c3408b1352afc5cd55d57439d1426c480603f542b76bad6e183111ba9e4626af33aa8da6cd239760814f78f9f4124cb34c7e672b3909519abd2c287e06344eb8f4535ccf192f2732d8ab2cd44e2cb5c5a17b4a766eb770bd653acbb849333e266edbea7c4d235893b9f4c36d692bc557e98c16b83383933c2ecf9daf51b91cb02ee79deaddea1b5ed7357760f825bf520b1f6cdc133ee208b36c4ba39c8ccc9339307ba74321834f78dfc2f799911613e642eef71b8eae20450f1667ec98d22a0b68fd56542d40b487dbd749366f32167c75f86ea0cac8ec8429a9d6cf82dc1e4aef99f297f76816135554ed00edca068f3385b47bd5ebd504d2e504afe9bb345d2faddea8d529fba8cf63b5ed823af85316bcc779f040d26a4a528ed8f8baaee6e2324cdee74b7349480aac211e2023f673d4b9dda789f1b7cf5fd7c24d67dc35a8d62b38b61da9fb8e580446219b1ab02d8deb90bb1979b6f9f6006d211a6c07c515656e981604fe0ee9526cd44b961e9239eaee1a3a00391a612dd39afc2ebf17313abf49664bef6b738b2f17a79ee2b04388aca2e6511bc6c8bceae6215d4af888199a647464498bfa71152c435df7f286f278c2d195ff8fa7424ff3704a3c6ecdc02f81227d9cf2798faaa509759c2b4971be2b7f0effeff2d778c7398bca4123318e08070ea18d2b328a6ee294405801cf57a22a4cc346048509b4e02f0fd09ea00576b4b3f175516a87188dbfee8bbf9c9eef1f1afac8a0c9d04b01138381e39d1969d28edb666d0ef056f83ab446b4116896718c301e7f3f0b23dbd0b8020aad014d53a5ca63966cc24ed58065f2d9aeaffb0606a1d982c989586a03ee6b49f10ed64f85b5c79501a5bf277ce3989bd6a720d90213a80197af38f787129c4c952ba599c471c047d508fa55fbeb112f89b486b7768b5ead2cb47c4a7120d06b23f1401a73aaa3ecbdae65574147579ac83ce1b65bf8280a192121db3ee5f7235ed2d255b55a1e190440c907fab12d0ce95a43aafb3513484f64664c650144900b54e2240119e6c143320152ca3a31f6a735f502efcb8a3af6441952eb30b4c195b1f399fa5aeff1430df0f8a98d1aa1cf9f088c0a5f80207826fb8deff77b7568405260a7cbb374144c62b8f6e3b19959db48fc64f2509a7ed1310ec60f47fe37c0713d2b4d9cebf61402192a67a221c2039c4a578ce7a5fd3cf0f11a1b75fc04ef26e8fbbb92da69e26e1cf484b360a87210445da71e1304edc632c1c82464128bc119deba3cf853f1dc9e75c980d4d6eb7b795d64db6d19a1d40bf3f29d28c125d5b9944b556da9197315df26e06e6a5082805f464c72d1a7a4a709be28f1ef897a7e72e4e729b968c351ab919ab6b20aa660a6ac4e5e3231fb78a81b0e847fb6d862f50e545b07c26cbe929e7ca85317a389dbd5ffcc5a89d987a3792c5a91c36a6dc6fb0d276ebf623fc3e5c19731cfc85bc6d138759a508f952b6592abd3193419c6bd5023d1d7ad265bcd55e86f226cde8afa0015b647f0c49fb48404d2bc230e33b1559cbc9f2619e08dae3a3c1c1f1a63cb44e3991cdb038e8d88bfbabfa72670823f4d8e0e8e402959de6c412a792fe2b4a47961a0b791eb44b53b9eedb21a54c19899014d57d51d67b9877b889bbffe1009bc7e465b79eebec8d4ffd1f465b0cbf341434c30c30cd66575ded1464390b2dea594c7f527c01210ed9360ff20c188f87f955f5fba61e8f95acc281ae41a9c08a897807b7246fa6fa46266e5b7f61b3fcc7d2d19ca1bcc627aedefb40302f57b9ca7d80e12365aa15daa8df6b406066207b0fa6a56f1e6081408b6f6625aef80f4350534fab0b93c2ac64f5631e866c060518082845098cba54149bdcbe1166fc4e86a0a11453a135298f68baabc39755cb09e1c6bce8771c6f767d56a36c0098fbea76df5554ccba8f033556c01c8719244e6a0a4eb7ae542b5d7cc3fc549db38ae059908f41788b73a9909ff64c14c0dea4a76fdd767e5fb671db5cf550da21f592415b83e6ea3c3c2bf9a82d7c2124b9fe27382d3964af52f95e544153c14a64fa7e7116b99f6ba5fcd1de0903b94bea27170e65b8c015d3c333c09447d0dbb6ad2dd0d479dde93fb14c41703fb18b9942ea47937f5777246a760928afb5f7ff841d4e6b642f62eca295290d794617631131f625a35a65c2dcf3b3394d54a1040c5e7f2bf0a31065e87e00d0d55c9ed81156ed7009054a3f42fdce89e3df3dc1c4d5b28d20f3efb69b231a6c5e5c81fe6657ac2c4305f6c12569c0ddfe24f2e3398fb1a965ee79bd703d1fd812d94dcc93c258f5f33a0280f51b647dd34d4f4fe1a572be0cdce4ae9b260acf0e79abb0057d07ccca88a74bd1b1abb829b63b99cefca9ae40a0999107c2c250beca9c0a6f2331950abd6404a923035e5aa0448e3529f37f9ad578c3dcc3d11e22fdfbaff1098097a2d2081fab81c0445bdd8daabc3a5ddb413767715714794024ac676619271dffd60c7e27031dcec4dbb964a29f4b47909dfe8320ee46bc82fc32686ea673405d79af003ae8ba8f3a71c213dca102d11294165e28c85f89f3a43672f627891024b1554288fbaabc88d330f5f2d0709df45b46773484613f665e5a8fa46689cc2e542959d7f6da89922914ea3317f54973dcb566c34e5d45f14450e20f9f98d237cf7c4002ab4108c365864c229e0fc6eb9d6df6aa48ff4170f4b7ef458c74545d9e891e754e3b0d87b2802bf5004fac5f4ab4a9903dd1c8033d7d914642f272a7555579b31bb153cfee201f174fc1d7f5bd6b3471aaadff8be7a8be86d86c087a39ff02d13f26c6903a724ca6de92b478a7cf8d1c141dd4318ad5dd6fe46ea12567f8abf818040b44930a40f6eec435d5b83773b5ad97d5e06cba2cddc32002578de837e6c4bf7d67800f1f0c1b26ed9e67bf61334fe5aec67d7ee3a0b7451ea33441a86dffb2b8fbcf734e239cf67d8a3df547e3bb1586d755c51efdcdd1980398c16df350c2b4056380182b5ce285f3b8f372e338cb3f4a4da8472e9d62b7520d6d78f18c2a4d0d0afa0845d83a2356bd8584a873d1bf1aa00da5ddcd2435d1fdb5eb75a00fa7a27176b048d39a72d693389279b83ac686a20ffead75f087a36edf729fb0a695d41eb23f3fd85db9ba7b7de7f1787df5910566b9b141a6f95019d7ef27891595b87bf9f3e98c9575ebca3c4781224ce3822b03b2f370176f46140a85d65a615fe8f3f69d38d46637779e7cf3eb4421d3658c570def9e02d5530bf6c808ca0670002178a4d2c0f8fa111bfd33c808bade892aedbb155eeff22c087948314d15042207fcc493575fb58e3dec8e03f6f8dd01174df14aa2f2d2eaca215b54dbe74573611c7c09222cea693b13695c0aeb54230661cc67fba50488b202b38dead45c9cfe2370f7908e6a40731f4de71fe90b0bf4c29db99fdbc06635c9ff89be6f0a492d6470d22e2ed254ede8ab8aa30fbb19d9acb57f46d95ac9e91b7309073558ad381b9c47a228f10d6cd881829b865f6f6e7a6770d2237b581e81f263cebc99fdf4fd0bb380dd15740ccfefdefd53667402effc32cc2557a102504901b8cbb0f05bb6e9a9f07114b87631800357b2d5535db1a7e4ac3a78925f6ebbdf8edd114639e938701c36fdaa9ef88226c025037db5af1b95f8e8ab00e0dcef112403813ee794b5837456ae4014eaa5d525c93123b45d61ca28556623e953483b7d2de01d1bdb130fc282d015e459b06fde8da9bc89fe9afc66373718037361175340b1aec1879d78097559e7071814a790677585126dec1817def05ed144a5f3df851fbdebe6a1d43c826218676bd7056a9efbfc0a1471fd3107c8599b199030fe5d7d9bcabb6c6ebe9efc2e673c3665a5c1106554083001709a02d364fa85c49642249dbc6a8145b380ae540cd13a7561f4fa4549774a6d438ec2769636ddb95f7b8e9d69a8a78a25ca74d7a9bc783bc78e18e921db34fca281195336ce10acea1a5377ef3fef26f7646fa922e5068e804d82e068a7a760a4d4d85eb0bae34e031f668d1ec23031a47ae2e0b9bfcf987e890e7d7f5f18bde64981ef2e589ce75dce9f44c62fb97cd5b1d4387327515a103290563249f82ccd7a4c42837165ce95ad178511f1be08c39b5f8d036fef28498309c85d2daa3a89a889f89db050f27ba5503df3abf68d667bba6351901129b7b2cf70a2d81c66f5b36e9497756c54b5348ddda2cb1ef47dd0225e859b56d8690c4ab3294e3ca63f460dff4856dd8aa9c6e3da28cba0dd5d5009caaac75686483a0c377adef7e26374530574c8f13ec189d42efb94771a94365514e0c68cd5b8af88685c946f787667ded67bb8b4adf45e33d5a98962325a17234e1740363e95737df4cea9f7b7bed3ec86ad0e9a29aabc31519bff0cdfd79d1faf6690348c73c28a4f0bf70464a148ee8c18657e98e49e3527d94d3a9035e08111e935395f3b4318309a8dc1385ba30347f76f59f2c1def360ecb336e87e33b4722e86d3ab0cc8ca1278f1fc5f8b2e4474a7dab0c6498bf509cab0c53d55a9ed733c92473676d551b449a267fa8d38c2b9329b0fb68b1d49b3cf9a861a72a159dc1e5a701dfc694199a0e68d9ea62a191e67fe83f60da2a1f3cf8a50bdf918ee1608b2514feebf01894f0bd2d3fa6ac68f7fee6cd18b318fe32eec569a9da1bcaf017b68108f039c0ecf88ba975c93ad5b5c36ad240453cda00e4400d68e2a5dda2c113a78893750f8b1c044d8e4c6efb84bc3b1e11721ddca8b0139cc40050dec92111ef2b7c16dda294591fd5d30ad3c6227968eb84c42070a69b48cfbcf3fe085d9bfbd3a5add8a9bdc2a5e7ef35e6563de18c32657c37f90ecfd573e30abd490615f6ede5628a543b35dc7f21a37133a17ffb0409dfe6136837524f286498af8556b6cd28c8e08eb6c90fa384d5b090104fe94200e7f5d9fd1511e6c086be8cb8ea873af42e958ab0855294a52de6f9bf23d470ba73c2988358b2440e2af788449bd12ceecae7cc3c8f38015b41353ddaf11b1ae0e1efd62062348e358b1e936c6a02dedad681d7c908699ca03382344f78a50b0e9a116049d92511e07338c532a227b28d64f2d1c6a5705f48d6f343ff12ab78bc24f365ef44d3950a9f0d7f6ca73093fda965ded2619ca6187cc3f08020c09c19ef1224ff52daf801e80e6c9406ab5297d16a5504bbde0e3fc64de0b6b8882539be0237cbf469542894af572e7e8b40126b5c0e2b81eb3d40f8014e2808fee972ae0863e81268366ba52e795aac70c379ce3adb0c874a4734989c2d677913053cd1c1ca0b0b9427d4f5ac26442581a17a4f72f7cc786880f0fc833020928bd2861e4bb67b719532a2ffa31c041930ea335024e1006e4270181d091f171681e595e97ba35645b66464d6e01e897df6bb647fcd4a5eff8be754e426ddf901972d09e2379b0b20ae3d1e027a4bb6759887d69cad157d8b57e0948b13b7c1fdfe9848812d7c0bc6164b775b4b18a5677113ca4a418a875a00b32bb82d3464ec94a25b5d5badee670395e842b6175b4ef86635fe5c0133395fd78e021f274429e6e1771868b6d995ee20c791f145d20c9baf9401fa3b7d4316286e62cb76b38a1c2c6abbdb728199d991b5502ca648994554f449fe2041adf3afb632326c84c91c94233832fa05075c6f65309ab01b0e85306812d5f8552b3fa1b3aaea8f72d18982d5594e9c49c8d88f13dde809b885983685cf441b016f40a4b32d0896038e759fa3e6b5c85ee2333e852d837bd2150090e1ff374ce96d14753e02d791abf4fc87bb781087ad38accb2f60962d5ef59ddd3284626ef3112818293220c378339b9c20b43eca137198f67892bb886a0c04a223ddc4bec46c9fe9360873a9a9bf8904c49020e2ff2246a6d154f9388d77d6f83a1e51a7f71e0f56a8ee8df624faac7811f13f7626fd07f5ebd53711777e8c18908678f64a52e149def643ce3a46e6c8402d5347b096ca6ba134374f555cb870683dfe791d914fbccf2997429a70aa04e6919d6ade2ebe869c61de2fa84ef5d90f1dd2679351cbfd473ce1018a43d192141cff335527b050f4820a5368686b259b0b7945df2dd68c097057c0ee559a041f04623703687ef296133cb9e174b4a57774f3bb8629173983dc28721a47f940982b30307beb04d0ad30f075173a1bcb6a8006bacd1f850fccd0ae7e33f2f6644d6c6b52f7afaf99176972e63277af4a48750378c2c0ae58c73acb3beefc51bdeed675ef6cb2982c78009bc43e73cb36411fcf66ca89c092706d4e7d97adecde1ae8ba79afec6ab38d7024daaf88a0ab57256c2cbd5980aee32d2e394b37d2ac8b9293dfca05eea2c9eae24181e3be38753b1fc41d4a42826ab47ec8eb968f3152a205217f0a6eaa76a26a7e8208b780873b5c649980a17df6305aa3f44017f4a5c9a199164f4093cc2c4e0f15c25daf14d27871275a2816e30a4a91f788a351e13384d54b5f8dbacd217feb4ef426b35c9906b655ce082ba4136d86008c7151196c3ab3de11fa5618b35d21e6de564f11aaee19986be2a54547c0c37a7773049a3be73d811ffe3a7826d53d83bdd50b76b491b9a7424ff6197b77eb0065f2bc14e6feb2a6931c2c550b81a27fb138f22ea6591f77d95785a9688491eec16c1c6285fdc920cafa6dc4acfe65d945cd4be4a387e0f5d66838eaf4aed0c18303ec9457013b2fe22a69bc78a1addd9dca83eee6f623f6b75ff83e102cfcc04cd047801c5e16a9a040bc257003aa3d5fee40128c17e297f654320f947b68abd250a3197b89cecc041d5719cdd726d29ba3bec5e765b099fa796a26a8150f84f2958bfe90f1cd00c173652a5a70f6822f0ae8b020b4318f933b46e5f79ab849abf8c69145b3e449c4b148200da036f6287158f8e78c601d4ae4fa7c285bc24790458509f39654a44668b5ae65b65de40ee9d8c16eb376869da8c98567bdbab9233011d71d4f4023f9a69012b65eff244ad451814082d79dca282f21c3545b448e2e2ffd769d509a719b1cbdfb77eba5bbd602a71cf0392bec5bfd39bb999178c93e7fe4339f5e251341970ce069694ab6716d6086457f4d312c2a3c9ee5cf797a712948c75c576db298b09387cdc42278fe24f18b68e8a0a8882bda95c7555d527fa9bdb25bb9ef4dda7e981979a89426615445a1f4fbcd416e5e9e3b5b13c69f547949706cfc146ae403bba033e606abd527dc67d04535ab54aaae0bc40792f6f372ae78cfe807e81db741e9cdbb1224910db2f3f5c6e317a005334a336e123ba1d19a828cb734fc7339b0d8fa6adeb781b983a1dcc8891e5ccf562300b2d7c75dc58f3c1b9f48289b75310737aa750ba14e164fe098c3227671c47d41c60f4c9709c8838d2fd63de0ac7e02c5588c24decba1b8e8ff54924fe52a54827c10f726520bb5c23151a0583539cb8d9ce1f256d3916a31d0b583db082b68cd362508f5ec9b9723d49c534ab0f8943cc1f0c9eb1057178371fb757141cb3d4263ca7de90924cd2b63d6dafc11c19879866794ca8344413a3e51e7bb011a97e0dd19e24444c619ea64715fa39c91501cb850474976dadebecd78d6783a2263dd76a027858aa01e12b9a873338831c789897074194608815e2a94ae47cf4836fbae00368bfa28c91e582a9631a9bd73655be834c0b8d4fb218ceef2c007fd50e4df021d9fc1b4d2c7ab66a45edd59c8bfb8444783c58df6a650ab3cd6845d1ad0c2651daabebc78b13ada17df3cf5b65a9cfdebaba73150d641c5b7480e130c9d85529a2f9245ba5dd0e6769242f065a215c6d05ed93862ef46d95b70a5e5a0d74a3195a27b708a48a30c2aea9a5dbfd4ad22c079176c4e2b8d99d9a39e15945091be55b0a5c869dcd9fb88262c44336ac6459353539ee28977f6a9f3627765ea3d9e90b8ed6ecc6e2bf1228619d1f1ef700f027bdff84b13da9cd8d9fcce94ab1c5f4882e81a09f037667826d36bd247c10350ee1eabe0299be3fb203698b9589d7a3007e2c4d02f4e540b980cbd64bb2c822b8ac5ed2ce5d4a433b67796e27e1f19895a24d0f6d783e6ccf4ae147ccb30b2174fd98f384810e9588c41ac717574aff6ad47c241bd995c6c2ab2762f4bcd8a8ca0998fec2c1289ab386949a5deb612597e143bdbb64d618413d2c0cc6b04cb5f3d75007531a47be540fb306e2808d2d75ac3ccaaaeabad43ec7dc13b6963224bcc2354acd51ecb38d32f229c15e0e170caa7fde9141dbc4c4cbd95ef117246873fb0c37cc6cc4c8acb877f67eb3baa10765628140c1c8011af998e2b7013a2e64051790dd3609c051dedd79940d36ce0dfa85895cc83abe07ba578eb0c64cd94c3785d700bff6e4d8d5cd6301e1b9fc119a355b44364bbc54a6dd9094fdc4f4463e408590da4f47f5416ad57c086eeca40c15241ef2c27dbe0e0fa433e0fb008f98febee89ef253cfbb89c3773d511d272a1f6e98637681a6734f489ecd2b3ba819ab8cfbe67c3bb14fc17562a0b156315ff4a351f7b11f620cb41936c6f0426a6a1bc347d100d946fe3eec8d3635547d307960359fb6d79b4506a97ff058bfa085161f5542c90abb3d7436916672db16b0c4a35f5146207d3a9682d4188565073bab4aed612eaf88759004527d18bca30a5f473f85400d6840dd4c7f29d90297aed6c6c6187ab7a981cbfdae2ba87c1ffacf4bc2b94e5ce05df0285fb7bc6c4ad77af33b96dc02eb3380a55104bcb57d547dd94feda0bae3cbc2beea77eb77bc01a5aff5d070f38fcf16d95c01e15d447cd90e3528ba555979389f4ec45559424c244c26fb50ef1c8dbf3084fcfe8755ede1f5f2f14c09718a08e66d1c9112702b70ca0e13bb3f141bfdcc97375156ceb3ed3a8dd627bcc2d36f45bfa1d8cb46e6dea10d584500ad1aff5ab7d6ee2317f0cb7e92e931bebe61b3e55b999d3da7192c8563cc2210109ccc592e60e326ff5a325e183d773988f172c218efa78b04334fe22fb6773773ad3eea7242d70c04bb7b884e6d4508a377cb6f2eafc633bef8a116e421bef27ec7cab3df4c4854b470b67f9d165882f6984971c68d10f2f9005791915e3a96c75b1da88831526471eb02dc7e591513872fac8cc05fb4bc5035405e047e7fbbc64f84aff90c07a5b432422c5e5adaaaf0cb76c2259f59392459e5d290d8032bae7b2988c5d6571a615d14cedac3575d1c3054d609ea104efc7eea57d889c5b3a12b1d628af18c43991b2757b441febee3d248910f83d4afde8cc6888eeffea261a0300279a04e41072ed46984067bd3545db5275fd098902cbec923752debcd338fa0757a8c3d8483ea0f0f2a46449f112f296da1dcecce342574845aab9a5fe5a08fa0c7411b868cbaa7ef73ba35aed6dc04c07dd42a4953241ca2e393d7dc13f0503125ae824f109bd00628203d218caaecd62b8a383628f2e4cc4f551a10888f82c2fda930cc9ea005a800b8161565120bdae5f5d7a52c1b05a331238ecf5103f8354369dc2f3a6c36f297c91974794523726aaf878aabff5cf84d7625cf7fc47492570aa0eda0bb450a841a1585f6a573b74976f3eef0525daa6e87bef0c2be36ee3c0cf1031bd9d7b617793bc97a47682a6babf438539a3d9afcd757c408d25030f3d4289f8a297137543820fb71781d2016d6229c94b48247a1a8542a1d54d5b2392a9d54be9fe4709aaac3404e35b24cc920f41dfd50d5c40581d149af8ed00fe2ba4878c94612c992abafe24bb16a5559d76dcd7770280102ad084daa3c13a38093034f75bcf54b9416241a05d3a29421ed6410f0ed2f9f34bdc695ae0fcd8a8eab4b1fb4b104f48c4c53c87bb590798d7a4e2826f226d50802ef5b9c2af73000589d625d6cdd2f0eb3ae286726d72de436a050347fe60ea51410e88ca88ea7ead85b99604645ffa93543d08329e86a0b00c11808e74b4c1a4d08dc4b149f6111ca49830a2c77413ebd258c5c7437a9e95989db2552ef75714fba3b5eef1c131db391beee21c20e25beeff082f23c132be95376263c2a22e17ad127e92d90c1cb7b5e0f86ba773782ab4bad764247e66ff99da181f46d848b76967c56b88e4fa1ed03d297a02a420f8091f18a351e2b56f8378d611eea80a1b0d3c669ec060d7f3ab75913113d83d838737ef15375f063f705a26e32831eadd4c94094195a161077d73d1460bf275754b92cb3572e71922c508bbcfa18d1125834c9ba05478c271ac6d76a719e4d355a0f00c6af6bd01d73a3e943181d568ef25d064d67a4ee04814f73283e2283d254e016a1fd725548c841519e7e791d8d1c4527816deb23f26ba3f35c54bc47504d4309a7985f51f3ce22760cf3c678cd97d0f4c33792f7d57cddee6956266887d8f7887f0ca5184b4b84a72895d30a97e41325f159361925be1d820d79d04fc8897254019561ba46aa0afd0952793136cda322b45d97e6121b31608d07a0a9b179f9ce9da8805f677771d7066dc46321dafab9853f618a02e4c9dc38dcfde9b9c6d0cf576bad7bf6e7cb96b7006abe54dded5e17efc639004d48f6ceec349c4110777a2f38153afd4d55a854748e38fd6730fca0d2ec9a79ee12a033bb208d25fef131951efacf52a6d14d0d0adc3a8250e97e7242239e83437fcf45e32b2dd1b72af9e560159f6a0e7ec07e55e992593357905e09f153bb2d4a0d96929ec3c26a5ad22bf4c951fe49919105beeffcd6ef842f10eaed893670a08d33093d4d4cc686ef5c04275b4b3b4c6a3dffd1bd55270e1d21196d380833b710c41e36201d820ec61c71ba845e709a8da5a87207b0c3f34ad3bdf70a9483f40da1bb61afc9d64557924b3374d39542bd0a9e5a21f56d80c2a375978d4bcfa7ebc25dcf06180023403f5ad45281fca6640997af8fb4153db289d0f0c8766d5245d995a4db50c1fa61e398b600c91d162bb59f7ab2016ef59598d32d57591480820d8a4b4936dd4c3661b5db7d9c0fab4f35953e97886eccaae878b83b5c602f409376f1958a9fa01f47921073e213be70efaedef6a9d260211d29c507e452ca4e58255598425271491ac69f048c0ae5a0acf2d499999701c09b49ad1522cdae46dc79e59898c92ae9bf1cd4588efa83ebfebab89ce782f2e68dab19e57e1a47f575e82fc835d835f269134b7cf48dedaa0f39154fb29ac0280f19fde13265b22413fc9ea491d8148f3c5d178e69911352e9ef8fa6fba8a6e881ce5e20423dfd7fcdd288e9772790f17960b35dee79c78b41375f8042be01b1defcf4d65618ea95859c8de15ea6f24b62b8c3e4e8da8ad1c2bb102b8dadd533f7488fa2e5cd493c131f4636d93956051eb3a9465fefefdbd6fa9ff2878d6127124951dc9d18e4d580354297f74b007bf8d3e53ffb168a8efdc9dca83739c470f90cbd8c6719f03c354d57d2df47cee0e9504a2f66516e41cecf216405d0b04e90938dc517d51c54e6e63e373820b212ef94fd22a9c6438adb075bee953633764b51616c93b42980ac17856047ca3e69f6bd4c937f3fe4e6d3425c9ef490845371af34c04f010f8c950ac7bbd1be44e3381e4eb5f6ab8ceb63a2879516ccefe0dc8bac23ff6db6b9a37d416bcf7a7e36afbe538f469b9dd69021c49ba017c6c519b430f6bf8d43013c40af5a0eff4c99f2d72d398dc6ebab7c08c413276463af146fd6855257ecc0a4b977a1b551845741583df2f785a039c7789bc1d4ec421647f51a64b2a9615f5c632d8c68fb47848f6456f7f057aaa809e4a65d82a823e139f26da7eec2c7a2bd4a5ce77888f75a84d172421c5fbd7a3c95c12dced93c9876088ce343c73ebe9d90a865310b2b2105aa349e48e1e3173225cc1eb081821a834aa9e24940fb574eec3c3bc298bf9b76ad38b7fdc99e4db20483185ce7f90650c16b697e98ee09b4268948c3c8f3682ece3815fb2396612df7a48501171e4c96ebb58f95a0ff1ef09c506e903994d1a5b2fe25cfa4d9996f93694a1c60548ffc374178bf0cd38e72c108e5fd0c38e3df3526c4a820b15c38c647a398d4705e818a087182f4237a279887b103668de51ce5afe3a811fd491a4f0ca600cb4a5d93bd82c6df55aca9d93d029108efb57c6584634e451727f09341405f476061e1741cadd3388e9dd1d15c5bf66556b30ab089029ac072a2fee284dfc58af28fad04e8e518d1e3a89b30b8c1f297cae32163a04ac2568afc17ae545fff52a5d2bfc9d69663d9fe97b97fa69e234d828e1ac026c81081687da543c004ae6adf1a632c8faf50a76975827c8fd4ff3337801d51ae783c9f3a584ed62c8b4369cb33f71a2ef0b31b1545dc2c724d1ef4a5b735ce7e3deb66d36bf4d1cf1a926dd9b620f5c503ae41d54c74e55fd94f3b0e223b0d121effb52893581e368f15543c10537cd86a7bdfe4ec8706fd5ca627b667a878985a59c7d485c8e6bf0dafe96b93e6b4df3546095b08c0da0550c3a068c8ad39734efd54954878481feccc38a09f2c17c98f84c5bcfde031c48b0764ef0713bab922bde5cc2d691bdde638145cd4332c7418ae796a2f51079d697ea09e6aba62b550da5f016600e4d4a70670e1552eb6360f52252e1cb8c285319e00c9c1d68365f443fd5d20afddb59c5ceeb621acd0574dd868b407386785d837e94a882624fcee5ce92f3b4ef9831d114327731b09941077f40b3304543c0f3086fd0ec60c62d9732368840f9c15e355b6c337414c9e95274329a5550f5aa0dbf643b96ac7afc656bc1e8a26e697cdeb1bdc939ba99982a374658300f3261f198d8349196db3d6ac280dfb8a4a09fb98090a77e0599e21b5b0fbf92b78f9e5819ba43da9137298ff2c1197764bbf2ddbf4a8400a2a396b64bd8cb4ee4dc1644cc0953ba760a03c9edbadaf8041df8210255674a468ebe0ca589be6d15c7fbfb9f3c68d68482998c4378738792de6789014757e4ab7a937987611e47c57c9bc28e2acaf6148acf6af54e96765b723466ff0ae888aae5bd291b8b9490b7f4904284340ea117cfabc8b3242e73fa73b7fe5636c5e9e165e0c9758c5b5cfcf3cad21f0810016c49cdb5f2ea3935e56a30d96c15d61ac930354f441471085e1f31c7a76edeb33d74b116b9543ce9fd229762ceaf58d82080d150f47b963306455353cc20ca9717d76fd92cffc5cc1ae6c6f0d05ea8ffd9e3773b437764535495bd3ac47e6138965bf02d49fcbda82c55fc8133db9e68d59acd4941b3ece5e56939d5fc387d44afd7ef9da2c53b87587ca9e9338201a8d4d8d3cb6fbb622df169f22a741825bc2753cb232df5bcc9cc5c9e51df1a2fe542a6f75e774e58b87dcb3477a9f6bee2ca43a48afa54b743d4d4b3cbee4060a4b7dda0b7ec4b91fbbc91a0729205cc415c1e84301dcb34484139413ad57d8b75137cb18e91f80f9ddaab07e7a047132291f6e8d9ae2c549df21bb25b082e7fd515432dce2ee6f0243bc694e0e494ce890d3262f4f72d6d72fee2d3ca317c5d0ce2975274bef1f4ada57ca461bd3913cebf11fe85bd9e1eb354c2846e37a4ab8b4cdec97f4600aef21ec6b67e55b6b892f6e9c8ebc9a041cd7af41bf956d1274d73a62a1ee1613971b8c7b2d855c069911ef9342fc5b0018230adf6506aafaafcf549a6816b3fb7748de3b32da141222b6db2f70e9a8bdb93725bd419520a7c82ab1c86df85fedefed2e8219c3894754cab74fa2d7d7c4a566056cfaee18ff9f1e1814074d14f3ad24f037d0f4ffdb74507104255944c37b3e80ce7d8978ad8133031bab99ca7e6a7400db1a0b0a0d8bb39b17789a290d9759ec9cf69ed4a11796fc6d0bc11ee22ffea6fd73acb99e1cf4b38091c9a0175f1487e21221c38e6e03a610ff8b72d7327752c33adbe453faff71f0ef32abfc278def7e9a5e136b0a815afb3c7511f93a76ce6731ceb9751c87db487dfebafaa28fe0a4555534f30a53d29ce641cb499bd5d0b84bea0c508fdf442041b6e0f3de4d255c43ea132560e2ec53e23024abba2b7795cdb7e5b76fcaac41e3009fedd8089f0220822fc40e85c8f505cb88662c9c8a76b9ecd07ef72be82bfe3969929c0a14c63bb463d7845a9c4a119eeaa7588326e38ee666ff9908e39041d2fcb1f4936a2aa111462afead5c8e786ccafeb4beacfa582d47963059d4d764a118bbab9fe4878b3a79ccf8900ef4fe9bfbde8c93c8ed0cda82253788a29ae99390475c9deb882dbc788fb99fd31e21ed5b215a769f8238fa109118aade28ae5e5f8ed185fdacc770cf8ce02123a64fc55183ad343591004b71428bc2ac04502223eff7ea56c80e5c889c0df95999f9952222a743778a6fe512a7fda8a7645e28656c5de50783e23defdf940fc7f7662a1a05ff3459ec13b66db0125e4fb25c24282c42013cd95355633943399e3463e60a919d94eacfeed9fe522ee4d80f95a27bf7388d9f99fb0d14d032b8c7bab73fe615c4b0545bb23a810712ed46cbba8e3ebd57ecf6e7a091fc90afd7566576fc0b40c50e3d4f5004cd4b89ee8aee5cfccd0ff8cd2eba2f7858a72b4f8e05140076a54d8e1f7bd8cdc12026700eb3289b18a4076d665fff0f1909445fbde052b1153e3c7dd146a78f808b0da46c07fc8072d6e838b7f468f897edd4daec2dfd428fe60a1e8528e4c00314d49c540ec8339023e389c7eead08e14d1e8e47996f69fedec66253315036d54a6ab2849f431d43ac234388942ebd726af8b565c6f346974999de8781649c3a3d19e88fc36dd2ecb94d84d781f0a44147187927c8ea98c5afdf2fa9cec0a6b2028f65a63ae0d821329bcc242675892029649596a6c76fe37ed4647ee1e94e0633fb54eaf5f1d39f288d319d45e04a6c1d58b35bdfd9fbbf84c71c201958bc826c3bb8f29da9438e4a2c8bd8776eaaff727a11b0e2e738f677e6677ae6d5af29cf1707fe0b803ffc70d9b77aa73b7d003ae07958949982826d95a7824f2e8cc7818fa8fecef2d6b014ae59be9559010dcec1b322ceb25b1d6457f1ca6d2b56e72b35991ba8e601afd46caf6855364fad471fe392dd1df2a0bb46b60aede4458e7a9bd07711da4a41f2016b38cd5221b2067588ea01c62926b71db1aa925ec3819fd13713b3e79cfcd493a77b3a496c572c801277ee413895ffce5c60b176e89bcfef4260ec98dfec8423611bab238196221334224d4e1b1d21ae756bb424e25bc4b37fb94f884a0930bd0f158502b41013fa6f923c1874640b2847169807cb703a2dab3a23d49a21ab38480dfd12c1606def8cc6ca57914d920bc8af6e44d976737a20a1e26094b0eb898460a1d5696e64a0e3fa7c3ab2d6ee61c754ddb4f97fb494b2bfbceb786389a175d9d0b404956fc1b8d3cb1dccf63cd7ab839e65324ac52c43c212ed5eb144dd80fe3debf80ac932153ca4195d56fbb287a4ff6466377597a8f5fb4a92907e084bba70ba60fdf134ce24e65a156b9060836561e1543314cab408c2db6833bdec72fd44f14b402aadaf53e74d61ccc287e009ba97edb5f8666fc365b834b92b72ddd96ac25c49fc79fabef0981e8e3eb51790149254f9f8d9d401185f3eeb17503582e5eab867b1d7a885bce6050e1493d2e10c362f4cf484ac57c0a5f070724d808a8d2889d1d9d42a71fd8093e738b1c41654a314224bfc4723797ca0615311ecc08c00812cc7d68c11d7ba78b102dea43131623b2563533dfd11809abd748334f8e3d528ac112e3af1632be0beae0ec9a4fd61be1524796e638a5c6023b2bc4527e64fe4bd13bbcd112eb80e5eddd7265aa64713b47da4ef359bff3f099087fb53bc10ef7f6da2a2dfb76f2bf51276baf02e0c8c4dded09e1c309baedeb57020d9e0bbc9ed8111170ef43338ed3666965f29ebfdc2bd4a7e34e67711bc69670ebaa34cd1c1f612b35ace348592158e1d3542a1e70a114c24749097deb21cee92e0a7bcfa883873a509a03a29f1dff42937b6fab041daa8d10eb5273f63e0daf85365faec4af5b4480abcc0483ba80b223fd7b1dd53978b01be0fc49d37eaa759b2a82ff375a115a216e6df3576e7853ecb8a9d4d2fce4184410d89ca891454987710588173f3a10ccdd708b302fbc182e4c92fe4318718779652f69e005ed3a7e791274567665a82b7bb8ee213a1c129a72244313dd148ab5d34a14ba8690fffc3f140fd1fb9673570b301ad4f7fb289f1373ef56f3cf44daa3db7b9a2fa775c4e4dbc902e6f5f6b975459a8a29d06b07b3c789a075e31e3f9ae50aad07d233b7d94fd206d5098cc1a27efc9c8e71c38e07c01fe544f28e666f7927d7f807f9bb00adb0ffde68e996227496d2bac791eedd5ac21012c3fa03f40a3cbfa339101a8c71334e8015a785546b4797c228f92e9376fa1179756090be46839dcefc5caf43616b61e342fccc7e8aeb0e5df15095c280e066e3516c3adf01f3317ac533da696164f8055f7c8d765236fba61f51042431e4f082f4981d1a9bb76098929f3767c75e4fc01f3b4eb8b726b5988bcac99b4514e0cb24a71e90319984c487082554f76b99d156f0a841b4e3a5317aa3292be16aeae6f82722e2a01e99fce9a85bccb45b17536896bd74863a4f93645f5b83586bd451bf131b6fdfb6e05a80665f07f505b0c4a049a3a3bd51633f38536fc04a25b57f0cc7a588ef2d017812c84e34fe9c3d4fd2ce5aa9187b8ccbc8d276da9e39b082a2e4e6ea3a166b2ad60b433f23f43a63dcebf6ddb38ee8ce6eff63fb41afece8ccb939638dcd33fa2230f6e75a7c4fabf35709c1d6d57f72a8a2fa74c9b53a4d8c67594fb9dd96679029a88b62c40eb78480c9f4f288e0a22ede9cda9bcab475a89b90bcfed46587107564be97c608024a7330edf78333fd15492629ba7e1465eb0a757499033b46dba9c34171c8ff2c2e2392f2dd212b7183145da0275a5a5b50955f9368aeed771b1ec3e9aebe0e115c1b2420e3766da423e04d3539c1af835a05e2213734a6928b187d0a3009d63259192294a348598792d46c11ab265b036d86ab19497311f615d8407b4ca5700bc8f54791eab88204edda2637276c32f159c018e1eecab1a8d793587268adc62ea5bd9f3bb6bad2d35229e4d8e3303e5b4988db14ccfc09e43b908e6a5165f85827bef7bc59f7ff2061fd338346c7e63f88998536d9cde98bd203fddaef5af9f9aefb70bd40419457e2d02b23ddae7e64a97949f040eb23658f5206618c16cf60fd958e6f6f6fbedbc56c32517bd8b2917c0c412477097b9183e8f0288dd66f0fe2cb03a2b4b55e2c45bdf464378dbcb50581621a1a30fd321d41489fb80ba844c79f8b0e8f9aec1ff4d9146d7815ecdeb94fd0731efe2183f03d9ee4009502920b991e995995d26b9b7325dfca062c06028a7c649a3db8a5fba15b47ba2c1e6643960c70fa93237a25414b0717c05732cef100bef8b42b7144cf3c9a43ddf1b478d737c26aa3d704e5a85b7067971c151acdb835f3387c613bfeb0206d74ac8bd92e7b3200ca6c7b5504be622e86726d4d5e76e86f4bd99b7ae1761c00ce7eafd8631e035e6e72ab37a0c7a3e8672683e710f6d89dddd327ebb06e04705129e022b4ba91182fdcf89ce6e0a684956731c008f9b3c62e8d0898b05aae2a5e6200cf86db254b63ffd5a7eeda2c17fa1067f7cefb3acde6485205bf3022d19fee91c645073151107baaf10a7f1ff3d6f637d65837b96e9d98b2c1d099597a56b357b3617ad5bd25751f408a65bec1dba8caedbc81bed762e57bc2b3436e4d3ec3c33ec6c17a3b622aff81f6695e54cd8feafcd421558ca1c1c8188e6aeabe5876e942c713e5d91e467710c98b45beafafba3349b5eb139219b51ad7e85d89b1283b14d722e6fb7aea976db658e55b6caacad6020ea87bf8e0fa7eca8532c4d5b4be0e8a276b039e26c03d9b99bed0f7c5d7755ef3b9d5db37421625cb5b84cee673e7f3d406eef27fa78084a8bcf43f410ae365df3694f36c50173557366a0b1e4292ec8b3e9506f421a2d6a1fbd2ada7c83c4712a960c1a74adde2f257007d1dec4736aaad521fe949162e6f30d18ac422be88456821b0c22305f8229e750b4f0760387b5dcebdaf66945684e291835e3605051e5c0b3ec7cb6d99d7c2d02fa1c6baa0bdb1a491cbe91ab282a0e7ffb7adf1d0e2a9830b84a131fd2a87b4db056124429019ffee61adeecef45cec682cfe89f614e82533cdc3d3c5ac55c5846929dbe65e8f1e624e789bba6190ebe7a96c1203fe3af564387ce5a523b30d2ef7f842f3abf87ac3e6dad8cf93e8806362933c2015e80cf1e53833159d2aada74ad02f8aece4f5462d5ca90d0068ae301080b6a56460c61bcb5bf04bf585238a8d296f9a77b29982090453c9eab765839aa9bbec6199f3eae1a0937641504dffd7884dad2dc69116b64e55fc6ce40972d193633f7f1357ed1f08969a91370c6fb03525a697159333dbe58d19fb5f3be3dbdb724eaca033b7c268f2c134498107f5d4bb63919b4157a7aaca3d2082ceab795fb05dadeef875d4f0d40835e54800f2eff1da74a2d0fc9b3d6ef14af9d8d5dcd629c7ced1332792a1864296dd13fbb96c13794a7e61f7b032f2d88ba8c26a53e524cc16c3e53e9e16ab98de90ef734d728b5697ef92bc340f119394651391304b4755c9172b44f29e3b1565f5d322e288ef7aa78f305cb07be33848fdb9f44a275e0b1d5670021530491ac9ae818285794c4cab453496f391ac0608d2c2884b20639f02507c63390727c5c822a73345e9c0a32cd1005ac33ec64d4c5d8820536dd9c6f20f04a3dd0791c1de0720161474eb5aada103604ba015111288a811fe3f236a5e9f52d262586cc96836422c7281492a054b2116e6489f4004080a51fcf43ec3deb9dd9601eac5b115f77c979eb9d44eacd45208ef298493d2e0afe90d050183276a3c6ab4c205de97677c5cbdc5d4b0cf18e274b10a6acba6d0f5710d79f59e4a7748ee901bd082fbf0457a8be0c1428cb47e504f01045a49687b7073f396e9d22b4cdf86b81ab104d1217f828232009699a99f79d95fd2cfc0230ebd82b20f721b9d6b55c0ea8f293682d4c9362390206aa619617d90c57391ff9d0f4074208340e34906c2a0757c021d7494b4db68c900a62e600e50df47e16e27e4460bb6368f2fa5da83f98f6a42d3d90f1aacedb1443c12449a5a85fbb2f0f47cf51a53c16d7ed56a6dca1ad18d19a12d40400d6b15372412f68cab68249084e84f7764173e36e61b132221e1623b420a22b82261929cff8dd646e8df454171431f241001572421bb5979f29688f9c9783b2cb583f2a03964630f664bad7f65bc3e8fee51e922148b80789a43055cdf491702630cdaf45a8f8481265a06bd0c8c603ea2a4f851c90fe9e26e520088c450f0054ad1785e434748d3a19383d8bcdff6eef3d5543cdb75d1f1a10ce10a12c7c404274e06b1e30dbc2b6346b906ac7dedb2781dcf559bced706f4425295e78dbd6cf83e497cd46f610379fe239fc5d470065697e7b477dfe1c3d09a6e2f40207a6a0714b32e2423883fc4bac215782d115ce525fe71bde28cfd49eb31f1dd7f65d029c5dd7ac94ca8a919d98c7a9a73a588c9c9100d18964de831500980bd340eae0038418f9cab47b12585ebb180f378987dd7ac016c246bde34bce58b843e4ffcac078f9f703e00c0664b224ed40346e32445fd665e4f186ba368a3e7532aa940641bb73faa00edbc5e3263b130de7506773e725e28ec8796b14017fd45e0065b5c7cff2fbc6dfe8765dd3cee8acb07c546eed430d8faa76f76d5522df1e3a6f09db8dd8fc759d1692fb7dbe5be0ffc478651dfb48045d848d07a5829b9f8f778994c5f82c41e3adfc253c815820d4fbaf76ffcb2960c24eab2239d0e33f09836505d01be6f122dbb0f546a08840727d4fb2cf67992eb2a1cdb3038f8cffc15edb20337e769fab2ef6440e3a611a2ba452f72134c9cf93f0b06d1e16db3c9118abde5d52bb051f1b2a5e6b80811bce549778afcef48d5ad021c4fa124c3a39849b87a53b8b24307b188b323761d102702afdd382f4b8247c5d48f401aa26adb90e5e19d2f0711d09e40649394fcc4d62a42d31d59fb18a52020101b773a1de92a6147623352998e57e14d3f4bf73f6979580a6fbff0e9e53909f4ddd92f5c72ef9c47e30ba80b114b33b04e9eba55c0103984c605247b4a779b5ad6d628415705558456ca5d0f5fdbaee992ebe3c8e93f2216b23db865b17c34aea37051be67f979478405af414ed691a0fed12d215c9078e7096879e4391347823600c2c97470d3fa289c4705694e46225e3455d0d1d302acbc0603478a819e7abde6d2777f76a075c1873299f86e90e77e2108478935f7823dbcd9f04129258fffdca6a8582cf2ce63182aefdbca9e3624fbab8cb2e5dcfdfd6a61bfd287296b7dd06841c1ed90e370c566d89103173c9a4937f4e789f9809d31638f469b36fadf12cc080c7c91c8f58254ee0c45e9fc1efc775b8fe38bda4aa4eb616f774a2c581a740d2bdbbd4d8b35388b5fc6d53a0517af301d2d4134a65073883188cd54329c610cf01e6c4a0339cb7b33f0eb66d813463e208c3e15dc2d46cf6b6a403e05894f526ddf0c03de00b7c6bfa0b562847a5a8df3915c18bb447a78fe0f1f944d2fff1df595abdd537cc2e27fd88130501af302303cb7d49e2e00345476ecc102f4fb96fc6ea0248a9bd7543fcc4c73021c68482860ebc0227d38b99c2ac61ea59e889bb3739aca919e2bf1b0f76ed76ac9f7b4ae88079371096fd4aca3878c112672a2503409fed6297f4b032b1cb96bc2f6165d296bb47614825f8fe86c7d86c03032945017585cfa1dfefc662e5fe00f8af65f204fdde90e2ee33a1751ecc4e488dd65c3b0145a10624e40e57af1c37a635d8773c2cf249399c14175da15ef61994996b2d6c968db6bf33b3d2ce6cb902bd0198f74c0be8cfc8116cb0897f720cfe5fda6b10193b086af641bb62feee2e97d50dd60e2e027b25efcc2d099e250a1c25d3c48e19c802575ba74f192ad4339e839409ebf8dcd215850c9f3217494ab650c634caed45782997bb7014d47de08a756e129bc6f2759973202a0a4367975125e5eabd2335f01d43b479dead8ef8b7f4df8bfa7b721b2b2fa3311f68e0e566aea95d5f9e1362b8adaea8f193c2b2acfab108a65ebe757f6252c551a7683a873c4b6ffe2fcabf7e9c29179450658708e0b1ffe8c8eee44d5391a2a5c385e0a5824ca2d5fd3b508aa58b420ac4da4eaab631c8cccf4cf98cd3e4c4448414f102d5ed5dbcfcbbd9f996992462b016b02c1d85a65af8d6c5cc4b77861351c52870dfb7422d23919c8e5902dc582d22df114386e862e9bf029996975078949a0eea65f58e12817c1dfe5ad4e41c179cab38a612125b9feeff0cb837dc385f6c6abf4735930a4a2cc0c2d305e1eea036df74cb891925087d6703f86c028fc5660bc10acb361603c531752bebf0e29236ec64d552b4d1143bd08b88f11cd76e88de33a94e8ce3705fa3f855c49b44a0f5ebde6554b3af3f2b2090ada4f679db25557f3a1976269888d403432f485fb260ed8ea77d6f3a3d03bfd34d074cf4f6651bd253cb5ab11dc0edd060b144adf97a93a0b63f46b90eae98b6f0c0db1da6c41e37abc8e93f98fb2afec13260af15d8038ee00e26a2f5caef656f1907122491e4d49cb5ef25f22356e9ad7d12efa923256e5ce32a11d72b00650b80025c2a703051afff3a54cd94111042c334ed449a2d5c2ebc4ae7765671972f08964813d9fa9219559065f89ef23e52194aff938d81d2e119126292079937dce76d7f5f96b75c992aafa567076c99e4f5575d7de3e112a881703e4aab8d62a1f6fa454a49ec789f346644d18688c47db54ee2df95eaf530fb94b87ce608241734e30d62e41673f3f0b726004975bef01802416631e1bb4595dafaa70f1a2cf54302316d2ee416761b0f082d70dc2c8dc2b1af1158d3b8c6e1c4cdadafa89847eaf9fc3c45b62f973a83dd318f0f2c56bd214cde4005f62d730c9b5906c77cc191527073177b4268132dad373002e962f342ba2932b0222264bb15da86d40fd9c82b4baae7d23bf3328b4b934f1490a9b56bbf520d116ef6d25919785670ae2cc07c55dcce864ca165f6b0e1dcac5a3c3720dc5ec1c6242d5e2a92b4d03b17abd0e4fc6b384f6e0b4126d9183da4c56f116b2651d5802b34ac76809f036d8d1cf10baca463ea4a839ac55e2ec97e3a78bfc5e643e2fdb09be6eb68aa3131cbf543937d1ee3827f000e1745294e77b5cc2291b944165ab1f83a07c47052dfedd086952cfe216676e37ca9a1f08b593203fe1d3769b2ad247e57923ef190fac583a2b764a5d70a512c851c18edb72ceaea7a4564908cfbf218f42fdd7ac904358e1fc9d30995679c5912f5599ff8adab5fa3916dcb8e6f07844af8542111218386aef49e934099c91fcd811ca2ed9ad8b0e8f56e7635ed1c5b95252be42d86d63c9e801d168ed9a48fa6cf362a25ccd17d9f174aa013ee1dac96d06dd418c1368a671ffb2f8bc5440f4faed9fba61fdc987f26cd7e4db031e814bd176d81c7c52223d0232216f42bbec1c413f86733c8d82445ac521db5d05e563671024cda184e104f1bf764dc967ab5b513dad5efe6c08f810f4d518f7a9eaafbffa40d38db1b0f16a2a67d0c30c32c54da7752e2148ea35db7beca01e72fe23cd814909f248628edc9bbbaafa41de8e74edeb167e686a9e7f916fe6dcc21d2a6606a54a22df6040bdce54d65d37ff081e7ecbca63e64cd621aff779295c4d37fdbe90ac74bcb71c5b2c6b9668f76106157a9ae5adb469e7fbd2c5299a0c643d4460f1b7c5fd7e2d1684356fe316a5666f55fba6d9ff592247c5cc176e19a03b3654020da1d3fed158096cf4d746e9799ccc98263a60f80c6d643899701b5f77904bb6836e0cfcb07e264a3644b80e8bd88dda0936a7424510b3085df56af8a32ca457585e3a7db9e5b21a7a6c0f125f6b0a4203488639e9f8f7521f84be027fe28e27f8d21011fd4761c828200096d79e26a0434e7bcf38432cadfee133ec1923f3eefe82d0abdb2d3b82f781985a357fde0bfe555598b642522d623c3b04cc7bdede5d8c0fb7ff8625e7f6f25d0ef4d755abb79deaab15a70ae2e88271c41301e81b3e7d904544624f1945ed7233bab381fd34861b316f59229a52cfa7b1eccc66a605ba43acde049c26740a7cab744dfe8d9ee3de74f7b53b50d204466e4bfe24127788774a000e42c445b16f5567a1306113515c152c7fe2acb9d10299823075bf5920ce029b3755149d7c54f4f4b674bb4cceda2fdad9ae55a8cc681c2def4deeef38423e44a15aeeaa459a49c7a07ed6fd945208ff7ccbbc64bc39df0940980e8889919f45ffaa270b361547ec3fe98e14bdbf32de8781532d410ad34a231afee672e8b9f609b4d7577c36af71dfbad200c35b35f5855c7522451d1a2276db9be2144d0d0b1bc8669c15d554e13c73635f436c9905dfda4f1ff389cd4273a874ce4c0eb945f133a11e4e0158f22e9669b9a4a6091823d886dfe33a266b375cf3d6d4b899d5d5dc0022b15de09351bb1c4ece6ab16909fe236e90bdf7925866f6dcca13fc257115f2aa10999ce228c349499807037e576cc536aadcb3470e04269f6159d7d1208934827e5d736471d2ae44b2dc0f15fefeadc0a640d3e793a44f6261acf6b5bc1556fda53f65c250e2f00b583a1a3d5e074818127984686fcfa88130729d089261f87caca0f9f1cc8c6296782bd911b69140151d4f67cb9c337cbed8569118fecffcc001c8c232dbc3114808740659f8e61b4b6692d159e07eb1e3648613797f7d24dd6149f4ecc84c36a23a3d1a98f6d3802e9a652cac43471135ef7887339622e6e9a20144bc9bd3646c5cee24e94b13beaa5a18f5970ce07f13a862794380a6f668929248a414419ba44d3a327175e6a7c1130ad0352693f32484ee592d3c4f3c21232e13ea5d04f4ad6e7906f1c27ce5fe43fb80c56912605baa20b07a69c5fe06f60f8ddcb1cdc6fbe53ed3fabdced4cea748f3f80ec99cd5fc33bb118bb84758a7628a418088515dc9c7919c6aadd91d0a85d67d82c9ea056591bf261df6b0833f0cf11af6bbc1d030d5c60f32f7d8e44261ed766a3e8c88be74f501685c674a7416367b79022dc269881dd55acb13b62b948e34086c3460fd925f5481cfc6a69f0702db37a539a546db43c55cb30a172efac65a53b4b4a36176b2f3cf5eced648016afe1773e147ebc448cd6c9be5cfa1f5539293c9abc8d5158f1a1c177d4666f6e7cb4a924fb137b67c304fb9820181903c1f35dd9b79c61df516ccdc84be3b88ce653777f7370315e38a9ed2331338979610b9b5208777458082e517c520c9c1485331c7c95111b122714b4dae9f97f4e04b2a494b31fe452f50a80a73c389e4fb4b6c46deda3230c319510eb36b0a07495d1d56d6ebbea419a3833ee329803f312e5ea93fcdc8a9ad98388e019cedf0187785605259399d89d0e55e5ae3e386e032fe5d6b725398408d89f3e28eee5fb4e6682a174e6bd2b49a76d240076e3b12d42d9a806150fe18952bff00c0c721be4a7e4ba308e9d1b0b10f392cd669fdcfbed840d46bab98d8e3587040413558945445ad3df6eb51af5093fb08a0e8f1f1d188fe7c8b7d538298d903961bce090f3f82d293bbbe3213e5a4ccf05864c7a06c1520e4f2d6b36d407df8f08bee32472063fc6b206a885bfaa9d81dd97e9a26d18565b96720c1eea5e8524f3488dddcd0c859be927636b78faefb605a7fc8bcda1dfd2c8a121b72b4f3e5ab0d7d1c60ff8825135ebc0d0099e9a6945e5f37fe5685b4706f22ade3c21fc81e04c2bf0cbfc7a362095b57239d0be09b9d928b63846825be5e103dd24c2b0f5b961ce2f95a4753bea34b96473d2a83b50376e9b8d337593ed317127d16bd0dd8564aff487ea6d4105c72ad4449d04e84e0312c570b03e391baf838c91dd50a82147f053bd67341098270547de20c80eca0b8eaab0366c355fcd99b49924278e7ffd91b7d98fdb30fed44fa09915f54731ae60cfdfbeb1a01f120a3382f48562242c83b580fdbe8d4482f5576c5c945fc1edc7fbd554c9bfb34ec089c68f5e4daa26669fdace772aae79ea9e78ef8c040fda58802dbc004fe7aa573c4840e6003f3ea84c1612507e32cfcc9b7e6238148245ad45c724277f7c7f7b77c95f22702560c479e44107fcfb62688763f3d6a6d5cba19644efccc9a60099e074f0bc0a3004cbd8f9d1f919e7b3c833b32a45a39928de288d8107cf8fb82bd953c5a3084b6b89988ecbfdbd0a82c2731c0c954ab0dda1e44d2b2bc3d3d12ee0d73a345ef32deab8e279864829411feceed66cded3290f52721a2d8f03327dc3547ff587ba1a69fcb426e19a405bd412a2564d3f0d4f6e5fb05f9faa22642a02826b237bc564b4a7c9e69c5cfd42f08350c321223e292369fe0279e22b531e18fdea8bae4f22d5896c766f744256275f3732bb469a144f0916281cb488d47d6ac6f4805d241b79f8e8252921a6902a14399619eb2724593af9424ca09c02aa33c113e1dc27e7378510d6895ff50d32df5c50a49142a8d6c4695c06de3b67e01c357f7818cc5ced31b9040952ac5c653a4a50b4121b058ec66e666d212df6c52a4fc33c159e4f83d33ae9e22f7ea00bb4d2c411dc34d98d5dd2a03cbfaed766419ff924a3ba9ec423f2a0fcd8d184adec655c4733e6739227a50d7251f10275cb9891a03f539313bcc26b718c42ff92fb9915ed49db9b3353b9f5222698a8cfff14a9ee872c8f1dd48ff8da671de2461baa9f4cf595a59475267dac2d3e6d9dd7cff4d780210be628c2c1a645e53e0a4bf44a01e5e6d99034c847b2d1ed738306e7388d679ee5c2e1c7790a49d29861857a897546762c9e1abc2d9d1aa838c32d6351acb5260124a2918769e64ee7254762ff5fdd4142e096e7ff8bcde33a4912a8caad80cd32403815933d7f7768c3657723a2bb16c825416f5ce8b80578f6d4050a3d63bf800182ca21d4b8a143909ea66f2aed1919caf63f93113aedb5ae0b29063dadb7b0ca322f43738dd1fb64dc8121bc9e4135b54a889acf226a9df520a78f7bad8826f01d454db7b742b2e0ebbf8abe80db07f40f3b138089c2a4248f792955869812fe8a11a93b80e438033abaf1756905fea27b8f5d2fbb2cca83637a71cb2460f025e21cafe025d8f40644ef01488434ed247881bd0f7b561ecff4eb18d09fed546db0f3934011f590a49282ccedadae49e0484f8f00f7df1ef3dfef6cc67b620d789ca66425c447802a76b758b5f711adfc8afc8b175ddee0092d0e6f7d0c748d07664d1312fe8a50123c7ac434aecaacdaf4d01d5eca590be3f5b67d2476ecad89737e9330dfb3ccfd41d8f410aa9f0040f3d5c4345fcfa1a006b58cfc9b29bb50c2d90637eb68ef451d84d6b92326f971685b8b0ea2af9e32b8c1edc7a19bd34e477df915ae83a58509532e3ebd4b46b85e748a76fdde5dbbb3f0a83a8349966eef8fae816c9260caf3c0f998f7ce0d0275797e911236d726654065edaa4c21e377ba7ca8ba5a7954c3695f1ad3c351a729836b8dcd01a97ea210e1946052600948aa3aa80b506211f48f2fceec10a780ecf251b1a582f2c474a5fa7f5c1cabb44f90bb944c1eaa39329af40105f23bcf0eeaf2fe366cfe5ffea6489ecc00b400aea15b216624cebc6993934c7d782eaf3cd1a4986f69bd6032a142919d67c6028e979c3f10f5dc64a7a97cb90606330e29d3375ddf94102e6f84f989e85055f4372ed244bbd6e8db3cad6bf96ad48a607a5eea6b54ffe35e162460f5fcccd9b0cea8de6872424afdd395b8ba156d4a8ed3a66d82d32e19cdeab923399b8001a1924affaf8368b21c81fc378bc531f0d20922fa66279a412b556014039c262d6dccdda89169ab0d2d6fa0abe595d34a89350d74d0b63029a7ae981ded6d0c3f11b32e74eeea2136f173e3c24c66dbaf1d51e69f7e0ccf306358c6ce778993b92bba8e1a27a61576a0b54cab957c2482a086f0667481ce78d0b5b1739d39b12da2b65282664486daa88e0331c4225f08b321b32b86c573db331706bd7fdd70f9f43054db7062a5557907586f1aeb8f93c858792eae967cb7df40d5f8f1156c56dc0d70cb89d45bb17d913c113e378bf5f5c5d201d9d39a8aec8212dbe12759b8086f08ab434bc151b629c62195998047c974100f1c3cf25b7a4415d6e03a7b7b204f81d14987a5c795acaf6c3caa6c00e4dfcc2a88979bf6c47c1a0350012de354e5c4f1773a0c330ef0d66e39f3a45b51165f390abb22f494d3c29af0c55b68284ebd86d06caa75f82bbed6c9a94f0fd3856ae30bd50897d70990fddad007584050df4f24bc6c353f540b95f204e8529e944e5ac6b4427567da6d4c1e94c7c15b559fdd7c15eeae774b097db023c035434ab52c794ab9f24fba25918a1645b6c9d8f52d9c970658d23f25756c9f7945b8c4072bf772c88b15bfe87667a1bed5f89dde58232637528d17713795198c84c41bf65b3b3dc1efcc78ca9219cc842efafadc4c32d53ead528d24a2804dc4b041a2f300f83c68eb0abd433cf89e7c6b1164749b92bd8a792c801898f671c1d9f029b6aa51297623f736aff5d5aca152ac2eaf55bff9bbaaf8054b7107007647db0bba5d38fb179f0b10ce64fdb07f935b339af85b842aca86025efb0f47acb0793cbec610fb6c224b2c45dba475b8e5a68fc669ec706179c960190a0d907dc11ba0457f9fb10a59f8431c6f1a858377d649c803e07f9ec4c58ee597a0f4d9f149291762687c7ad0179c3fa32a6e28ac0b02bab2415f55452a8850766a7804ac1b08beeff399b7c2463efd9f8332852a432db8209f01ab14b88e8d8e966516c3bb560ac3acdeb3b0b0578cfb16cc8c3b1a9064f2f854fc8de7aaf1b1c2677a39953c8d1547e7d2cc2dd68212bc94c37871d06313ce4b55e1723277fa9d626f57e2762054e4896c35d4715df094c1c2ca46fede12949afa75b0dd3dbbe38b8a1198925cc3647b50ff8510fdc7f711b8b760e502902ec4e21ce767050194e232bfe7e82234999a3c1046d825fcde47e701a5d280b6371036130652b5a28bb72321d19c14c8461766c95d54fdb721fe249634390dcb2bced6d46a22d7e1dd9decb77e6d19c62eb7f6819dc89317f7f658caa64ce3c7c9d8d3be9e671a9b91c3716a662edd7e8ccf89d1412d55e0850b01ecfd363f093ba5f68136d7cf06a465697c681b4e41bb25b0aa475598c9827bb11e2f0ae109d44938653d1d6c0973cce0d4660c205ff6cd6f45397015551f7a8e8a57ee8f2f80d04858d6530d14f1ffb7940ec14a41654bbed9bd6f6637cb7bd1daf85692a72ad908d6fca5ee94442d1ffdcd1a878ce5a80b2a76d88e508af6470cd73a3753b60810978f53f2f7b48922a63020d75545feb7ddef2c6e34e1fcd38b51634fc456012a140f281f3707591a051c12fb66dfd994abb97051439a59eaa451e9af495ca9d4d8b97820fbab9f3843a6b0fc92cb526d54e2386152e598154028dfb10bc555c1a5f0e9c24b61f3fe63810aa41a151c7f6d6c5e2fe493b973f1f4f7b138250658630c8f77d029cfc5bb34d70321a9cdf8fa80ae2ff17317345770b69241b83f34e40f73d6a0bbc938b69e69ec2fefbb7fda6ae339400b7e1fc8334e3726ad3da277df3b18a5c80fd7ec78bd75cc3d23abfda4c80a4f35390d52d8eb09d2ff1c264ce8649d86c28d768dd8ff7b1b9d208a7485abc1ca65676b08878977887162f6a161816530fc46bb10e5371b9689ed1c484f21629891c7bca2d4ce726172b97dcd911198df4a72a3403f623acea818d624b5ba566d00bb156b02bcedd50d13da09c1b9ffc38816fd8ed266ff42a20120d51674e9f788399f7cfe09635c2c5c5e1bc41488309b0bedbb0ace53458eb2d78b0391cb97f9041952bd395015bcda12c248efc55bde766bcca7ff68ecac4dccfeca1890a6af7e54a4c646b78792e12efc4d746eb01814c250aa222f1a57aa4251275930509f20b5980fd29b6d19f3a31872b6daad57de11fb116be08f5b6874ce49ab87fb4dc1b63f7c638690189b9299000d8a5858f6cd8568bf76123ab50d74d436d64281786463a21105b62e40d3e6e9ee9f3a5df63dea5225309fee3aae4c8a95407ca430e3a5a778299ccbed70d00e515ff4933dfde6a25112b03e346b9ac0094ed226afe6ef546a0706bd9f26e18910b45c6c1f7cd6a20d6290ba6e4ed1da706cec5324372fb92a39d8a0e8eb80e09cac31834d7dd595e02bc1e416d3615b3a692769213565f55d5c45cee462e745e9fa5802459a39a691bd6d31876a535373fb5de92951050c05900a884b68de59a774b09802bc57bca32bf0cff6f9ae3a65394171f390a3cd08fbbb89188c540df1936e6bc2a49af7e1cb6570d157b97b5e1f418ecd0cf33cdb462142b88ebf96d2f612a31b66e9c370ba5377b5d2fd3afa0d055a99731404a91ea24cd9e74ea098dfe67559e95dc59c565b5192aa2826a44874dc2e8634d56db4c2fb0541ee1962b40dd28d684b14cec2fed82494b15324784e760c9b7ad0ff3eb006f1fb1759387f25097cf394839b6575001c37567db62954d6b21c4749cf74ddabf0a67770db6f771f24ef53ebf66b903184b2641f8f4aff3a1e06c284a913afda7b8a5ce98355b8a06992ceb1d042af15b414d646b8b0cb02646bb94b465d38369d22fc481628591c0b68be0c5e1fc4b7d9e33818df940fcd99f0cf69c9980703389b840ba88167abe1d1e6b46277683273966b59021164add150fb73aa8b0252ab5afffec01ffe212a80fb057c86015c721b2788f1a79d3325d75270a60453fad7730328776545ce6bfdd6c470cbf4228752594733bb544a7fe72d3978546334ce32389a5ed703e76a240106f68aec8b108f4f2d3915fe2d137692b515d0eae76f96a7ee49a1be0b77a485ee2e492c84801cb13cbe6093fe348ef34019520aff24d1e04103106a7850821a496a53f5f992b54992ccadcbad96cd3fdccfb7785057c9eae37816aaced09396294638fbec940aa4112ef0e34bc2e33f021e5fbff2cb9a062454caa2967e05b8186f4be8681c40741afb82f7f4081645390eb0860a181242e293e658d934d63a82a522f29bfe70d290919de8e003c027bc6593f2655f34dad08f48a276125b3f5f911a7e7b052745c27de3d85733d095d40cf50e7743b66d8fbc71a618f7bb005731d1d5a8e2e59bf1c5d8318d3d45b1c071484c7f6982ff09a409efe6ed72dbcf5faaeb87219e999398633da3cdb7fe3d4eff0bfe4639c9c5c859085b08cfa3aafd4c2fba663c6f8694514e5919cea31361153db4f3abdd0596cfb1d855764ca2cf23726f1f1a06cec1d27826a2c8f535be8708cf98609bf1117e9eebd6dedc8900dedb3edf8a1a9fd8fadac2dcf7575d51d58d0bb512ef26c29bc54c85d3b7e287efee790f5126c3a341756108416a2a1085afe5d531666216014311ccf53185690e9d2b3f261b9f2204931ca59f873122a0ef23965e1127b8aec7a415387855e0b76b355736ed668e02c356a79e9487f6345c52aaf0369051449a716763c63e0ba7a83c32a3ed478ddf5f12bce11daad7d08bfe8372d5b6b88927585d91edeea062ae599c00f593ada4a881b09cc6dc0f0baac69c23f654f0e7225839b22a0c84b038bb8ad75d37ba3d6951551b075619fd938dca74cf9019ec360d260b4ddfce1cc9af6f23cf0399fa327004393bd5a6c30466168eb71946cb45e13cb22cac12741bc7ebd6d6992a0e255446e9007c8a00d20670c9e60015da39165b137132144caafdc05454fb12134501f2b1e604a25738da3f360af827126609536ea710447b4324d9f6b21069846752892a6ab1f8f237fa4917a6dfc99276529156a9038f9bacf56489f4aa0a42a8468182468940fe00ac8c6148cf921cf19fdf33533ce78d578c95cc8bccb91073559cf912c59d2c702cc5418b017197457389c18a4515f3262a36f5064337171c0b7b67317e80329bdf0d94e74d418b6e1ec98f9534f4b54284782d8adb456308700db50cfef1486d35996d571a0da821a50d81bf1d3a7dfc049a0f1abce06366fc9d5fa7464cac53d5e493c8ee163f90635c4f5107533ac4b5a42db6abf66d761ac5f979aecb1efae2e0005f141ac7b79ccb03d7d4a1a12cc3728b4353ab376379b2a7a1a9cb64176e6f6387ea845a4252d57fb6e4afa7ffcc472247c1765faab2dfa35e1ac9c7495f509fd9db0035f7070cf5155a71086374c75e70ba7ae514046ebae2c275950374064acb1c4e3bbb548d6d124dc9c40cdacca1f3a00cac3f2027cf6fb2419d871b822f329e547321636842465be69c87feaabeb4fcc1fcb3575757c6c7c0b6f54667cc96dd4e868bc310a59f52e5998736aa7e41ee4403909c7ddce3a23b38677e93d5567d1e42da31e01987f064864e252b1f9c16d54fbf221c7b11a08c811bcd21af97ce2d19ae309cf555ef5a7120efb3cfd5bda055c39eca6542b62271b4568af508b7bca2379ceee51cdc872ec8955035794211ee0b650961c252a5ee82a7a3f7769c1a179896c26aba6e5cd42bb11be9c41bbdd5dfeb3a48348c3d61e3113c362d401ad6d16f8155415e003ef1f578f7b5f8f02ad5719788e046fa38aaaab9ea28b4ffe1486b3d50afeb6f8a323c8761e2c5a8f2d9cae4a253241e62a0b6af7c1bd4435ed384f255f39c529e42f8939a23a46094cc953aad4c5867d60f9ba00c3deccb175a97273444e2429e8157e60b111a5d5da45c21d0fbbc8a0c60a333ecee779ffa08876412c79fbb7741730c914a0ae9fd2961e9cb90c02c82c22dfe222e22b99a0f5124e585d5c558ba4bf1fd92388f0840182c6f19069c38ef10a0ead5714bacf12224f9b5dfcd330f7d6693ba678477bb950921b0d37234f14c5b32b2cbb48b67db326d4e09bd4162e0788c595a4e24cc6ad95cfaa70dff02597f1d62b469b5ce96eeb7ee6a917bf98adb945a403351f5b8b42cf79076", + "0xb5716d46b630c789e9cfb067411c3bf6db77cf84701cfdc0efcccb617720768dbea1e5fd28c1635cf50b13e301d462e472d881fb9739c051b36dc554cdd0c998d6edec9b7d5a7effbc3e371f7865f2b0099667770921a9131610f7b05cc457c11b043d467d2391880d050faacc9ed39a071e166b12e8d6c743aaace39eb0c0f6e17bb75c184689bf0caa867ee9ffbb0d4ba64336613566fdf8f1f89f0fd5d3622d48be88dfaf4eacb01d45b4fdae5f2ca447242b8c89e46d053beea4b1b7ac053afa37b389625378463b0482fc7c5e1d58e85f678a17b47cd1a5a44588f11b0cf8d3e97c70548ca7ec5f3b0f1dfa1c529ef6eaec372de270d59d67011f0bad1888aa11e011e175f6175116af5b9afbf224f34be6d32b32af1ea8a42b0269dbafc19869d590c9057d0d73f2a3f4e99dd889cb172983105f70cf81753c424848b8ae81ff3131c5ac106c4fdc77eed133fee404afd8cf8cd52d9d8edfe3f4ca03880e638a76e0a1c941a16bc74b8decf6243bb6858222af684551972263b2143b48d37727f4aaf42fbb726f7a3cdee94d750d53802c4e1bc3224ad8b0001877dd90a42aa97d425aa43c759b692130044846c9452f9505d39693f85faaa448ae0afe5ad8e1d77d4770e3968ff976968462d8545af354608ecdc962bdf5cc672d5c298662943ed6696ff69561e43a6657cabc87f854a65ca43bf5a1fe4f111d7b5be1ea91f49eeb9738f58503bbdebcb08bd6af2e185b5983974c63ffed60199eb7b1fc48e19bfe51443c4ffabc39f8c0615f0c8cd7ea99b9b7d3690789fc8b990bcf6686420b75d2322a2d6480903b79181e52cb2f97c78d592b09b9f0f0a9f947418837355f5aae93542f4f245eef5fb2082a4dc6586d27f23cac4f7c7f2a7011b8f5daee58db05d104b95f07883c75c4e0b262b4a77c474ca3512ef572ce80a6ccf1f28276cb4420e803c73c0a9327baf4f9672139c890f44609bed4d8d43d1e95fa47f4c71f739a97988939f82758f31484ae157b8a60b6c3799ceff7811412553cfb3b3b7315de5fd71574e26f6feef7cc37d0eedc36abd25b1ae8a6a0a904c81b6930fa839ddc79752af04ea681f0bcbe3f298140af9e22fc090256fdc517faaddb7528b26ab5b8fa0cf1f74b83ddf83997cba71a09c9bec0dd3139e952e3e33d0de32a865ac08a3f104cf1a28d32bd93ce4e59314022629a168100b9667f06ca7a03a529e9290ef66a15aa3033545515307ced32b5cfdb94022276476113158586a184eae1c2e3225ea1fd42e4a20a7a8a48922d666ef74dcbcc2a6f187c51576a82c6ba9fe55c9aab132c6763071c74cb4c4916b73b3276d43f129314dba158fabd1ab0dd929b8b5cf79ff249e939276ac75045ca5ee4546afd9218dd208d59375c328517283ef3d798db799cc143aca17072f768d46b42c0a015e754e43c5bb1224b197a513a27491cc6596fbbb8907babf1ca7bbf542b3f6491ed26195b16babb81ec63199d4d568ad52f9b144952aaddb9451320711424b3ec9b4277227367a18da5753700e3264d406081303ae833f8fc4e003350906ee0496668a540126676cd8f3201a736bad77592e08edb3bec7aa9b2fcfb8b4a1f5d8148c67839c59bb6f517319e5fec8d719b31b9181fa6bf7cfea063bcf17fc6071c3da4dbd2139ae94650db61777b9460afeb4175837bcd820b2e7a58a081626f19c7202db1b6e0c0eb6fbf6c4baf7beb4134ec58e37e523019d347edd5358e23af6bfd2bb41df0cb024e70f7402843ee68c3780069686319cfebfe184c96ff6bf7327bbed4eb2bace2edf5e83ad922fbaf131c4ad96577426a37f5b7b0305601372947293c768df25aedcd9af48bc1414ce3b21ea696c2167f5a2c18ffa539a1fae176870d4926110f137cec0358bbb6c8b6061dbc9060df905d6ae53b2cc897ceef9495e2a2720a8ccbaa08a7307835b45422b9cbdc4e05402be24f5c0d5598bb6dbd214df57bc864a2db7dec5752969847b641e27537a8ef166c2fef26777f0578cab2c667cb4574cba78c36e50cf3a65f8d7d834d0b548a504e25756967d8e1b0903858532cf25f9c90cd94459a93122f11d318c86cdf7c7395fe325baf3ffdbb2bd7ebc93efd970e6090f1b6323d098dde2b773eeabc15fafcd8af9727fdafc15a1fab0ada705e4019979acdbadd94166a06717e084936c567ccfe49466fb3f1ec45040d3f45d1f3780e3ff179cd77a7b467e6461ddfaa99e81a6ab4bd2103fb3d2cf1fe1ad98e0f06e616de202142e50f9f88ccf9be8d9e5a2914ac6aa95595c24be3b959774f1eb2e9892320c673b6f20d9438650dd0df89c2a81d939f42f7a4d64753c8d4b9cc093f57a44e637cc6dd651627677963cdeb6647827456bc5e719fef9287afcb6df527f018e037cf04500ef42a625086bde7aa656e2221fd8cd299c6704efa6a77092d738bab720e22cba4c345fe0a6365afe58607b54869465e062f9c7c3d1703671177dec1bb8618e8c8c270e39c8b63a7b24c86c70830d5719b04f8fc173e502c329f4254ead0a17ba69b194411d8b65f0792b8462da7861e3dc41cf80969407533c5c1ea2075bccaef6ea0373ed7431ce0f8808f2b762a261695d256f355daeb1c5eb5eac9d72ccf399adae4984f51edc49053ddd0a6970724f89814f00ec6e847a34f6d2e8ef98becfe8f7c74450d58a902ba08e09a241b88b321627c41d423c1f11166a175ed713922fc03369b078fe8fcd39538b731bf2f27d4970a6875f4ffc45419798d18d4c95a52ef46a7b33a6070d112614e9d94a5984bf874d4402215acc3e250a14d6c1765358cd00aead1eb8d78c68ef54ecb1d2cd642f54c6f45b39ade4b4d46a2efa0233d3c8aab6682c259a1ae84f8ad7e0f31f6158cb85fb7b20179725c8bf4b26c04787f24f249a97918bccee3112722ed20e221024b1413f32c3abfac01615f8b81e6ce1a5696dbadcf49cec6e6adfdcd2e052bedbbb245bc7e1eecd36fccb68c76fc46f6ceb77e94925ee7c20534ba1a8f7ddc6257052f0143f45a60975c68189122224bfaf6f0f7582425a85236fe8eae9e6a4322fad125ffe0bbcef1fdf41cf73503fba4034260ad5af29ad9301a22686d0546df24152b55da031e2fdda34659061086ed747b6a95d1f760fd22c5a8e9261b317d381362cb2db37b8df086b00cd8db7464407990b5ee4afbd512e9415fb76ae85991fb080cf86bc2d66d8f0173e62125674452e3d72bece75d897fe0ad42e63ad1ad82737ab0d8c4ed4fb267ecdb4f8370be507aab9595a4bd147e847d9f659ac1ade2a04d9ce29e5ad61c23cb57e07a42d57a98c84fd94c9ec4d2f493d728270cd96b61ba58388732037993447185279a0eabcac30e906dedaf700c09aa2ab9981aa56d195324db0c1f42f92730231198d83880609c9767e56d6cec2d0a43d1117ffc106050b35e7434295d37119afc240231e0c156e1fb7e9b28a5189e199c5fb8074ab4e92aeb6892894f5b84611b633f1eddceaed0daa95b9228a640e870e49e54825f07d005134ced718e6ff2a3aaa961c9dca9e950cbd26d976c800d76a0a9c93fe56bfd18c0b9a1fc49a9011da83b1bee1961cf6a0ba9b23b881e6f55ad7896718d298a499bf35bb270808ae5f156a2e61f84922aea8df8c16593ac2af64db43a442880225c5bedf33134a9c3d13d8ec28bd34fa86fb0f383ac892115ab8ef65b4ba32291511308e6227945840e994e3078a41e380b4501f6335eb817b346ab9fdbaa44ebc48213dbd7f98cf538f553323c614fefde07c4897fa68c304aa1cbe87ea2eff9add410739cd03dc65e42c820df07fa22c6b3d09794a65dd20c73bcc79dc1594216788f23850ec1130d55d7f948a8dcb9de896a221edad029edb29eb675932c0757a0b119f93915b13b64874254e9896bbecf4f83ba6f84d8f1f82f5f6f781bbc92c440a8ffc88870118d21fa8c85e746c64e9656ffc9f10f29023b8c9623cae5671fd2b310a944fa70502a6296c8fc1938d3973438ff1f36ee3398a8c71c03a0e030fbcee3bca6f9e40fea9ce7141195caafee0c255a267e7b12beed003f3e440f3b96f8bd556cabd1958564cd5f1a437a38823405da7e1ec4c7e1a3273b77ea9dc6162e0abeac16c98ca65c65b37bb13e46a3780cb1280fbfa2a7157c1454bed31cee439db2a37a7e05b4c095ad13611cb638c9f7c59a799d956319e9a29b6238cdffb5e1e44bbb1cf59a70daff9a5ac5ebfb4bd7328644e3b5e9515610fcdc0a2c26624c76c9d6b2b2269e1eef52809b48c5ea4bc66865fbbcee88265d21c436d0c65ee782a4ad007ae99cc0d503f770b7e8ae6684efe1ac8af8c415de1baa4f13775f7495d3a72decb4964ba14b40d425a27b102229abc89fdefcbcba16fd5f96b059a42e9600da8ca22669523ce00e0392f9608a88bc83a3da8a1b6d5ed805bb955b26441fc38a43ac1c0b804aa83ec749c5935db72834df28c1a846b77f6d2ac6c6dbbd0fc2a7ded4ebd3d38b011b69e8325b6b38fe92c138429ae8037f364d436154f8c013228ae084528945d008e6c638283cda2d385c6dfe3dcd3ba835d364eed0445fdd605e9d9fbcf4caca18c134539f8af9dcc0e56df980beb1695331dd416f66d47641d2bbb470faab5d6d7d4473dac593cdf3370639fe5caa367b1ccefece188231cf40372aaf9333774e24a84a488e29c64250977f3b9b42fcad10ed747284cc4bd66a4e74a84f36d4e2c39d86f13c71233bd217b40b41a6dcceccb74d5bcd74db9cf30b2d34ce30a81febebcbac5ad9fdd283a419696c96aaaed4b8fbe686c3b8dbe45e644345b6ba0032ee855226db8c03cda0b87b0940df2feedb1dbb3883b48829c3aa66002f5484b0b1da51141db2cc3f679bea5e62041aa5d248a6e1caa222127a988edae69337832156204a65d6900a8ac00880c5cc58c988e8b5709804f7d352d383c66b09594b431ede215c82b384a3e4e8de0055f0eda82b664a3b5a480403d5714a3cabb8ae83c230aa1e5d88a9b685e5b49146e5e8302bbdc88e6853210ff445ffc58485d512f8c626a17aeb951fc2b49941d7b45516c056b704fbf00a43719212b4b52aed50d52f8de1234f0b14f5b1f2dcdebd13fbb8e2d67fecf885ba8b1bc68d9c36a84a5eb009ea82a6f1b332a17c397d29c5f1615b5bfe809ab779dd32f0a44608b945748a78a3dc57d1a905d3c68c0a77525290466f145a95af95828b79547fa85b5d7ab8ed77424c5a5b1039b4124ccc669ea4a7ad36909ddceccc3fe08e18c5cb2e41792ec5e545dea973aefe032790f07534e5a7d4ba3c916f8657b6bc463eca950b28381f77e1d1421d71aedc4ba3a29b4ec96143f13088f8033c1feb29171c79bec4b7623b0a50805f8ba6f293bf74098befd4770ea25cb58a2d574adee30ba78d408f97c03397d974b7185c0b24221559686c91c1840d1fcafb2bfcad00e4c1b71b56a35c5f8ae3d0180c26e1b8a9a43d158b34352a80826cf97c323ef7783c2321d7cbdfce2de16001dddab743ce72f34504b5574afd180061c09dd1779d66ee14900925492ce41ddbbc58101a97639f6aa0100eceafb0ba27812bfa35ab8944fb342a6a00547d92382cf8c8fccfe88a439cb9db3d27e5d988db1454c900150a352bc3997d18fd35018402eb6c867616d32931c900dae7a16a023d246c7cda31100df4f06e0d44bfa8707840d78f07d67aeb7193869ed83c1cbadff312065bcd912bf9aadb6e23d16270286c6901b209197b2a6e0f31aefcd1dd8f83e105232a30068e9c09984da24e58157e40b74be4afe5c7e202b2aec1b3d985af72e7368eebd61fe9548fd682a8cf2c3ee6d01e521c2b5096ae267887472f3e1fc29d8f65b404d03b5578446129d04da7bf2fae31a6c00c00d5f4985a80f567dac71da7f255b0462eef1d30b1de2b9f4c24fc8930c00d055bab6ab838c055231dffdf14d42c2c55c75b6c7555ef0536a3532134be21ef485cc5364f9da90c900523613af1c87e683bc3f8f36ff4540c6a62cd14c781370b78f4edefbcb3ecabf464a3ff9f3ae2cb58c377df38c76447aa87f57e299d298cbf4f871fb1125a81bc41ac9f153346bb491d42a03fe754ce09e6cec416e0fdd3a170e1bd16abd0a5f5e303857450cd4596d1d843b7e69a306a0b545cd2fd623d19703afee0765c0816b3363609e64d0090245b7db09c7bdc0de6c71381fef6cf0f57b6ef62f72010234856528851d08791601136633794a5bddb2956facecf6a0484de95d10ed00a1982799d5f7617d4bbaee4ade9aa549ba804c17fcd2af5be3aff1e91c0e137eb61dd371d6c48125a1b0ae32b0f637f2ff8489a42edcce51900d646575b2fb257f5822e45a76769fe5e24bf3e1491acac5245041bb32f1000cf5c0afc5ce5b308fcbc7f339daef6d78a0e4f8d8ae8c8fcc56712d42cc959975ba7828908933f7710a04efdbd3d49c2509b0c37aa2092bfd4ab1b1ce69c9be1d29caae8a3c471db76c1450bdcfd23c0f8bb95c4c2191cb19fb93a29a03021c7d6cde359373ff57ae6c3118669ccfb2d038c2ca8a918506065f1ce6da96d2cf10099707d938a8d47be5de4d246847cc4ee5a384e48246935d219fa5cc7bc7174f639faebdf3590cdbe3cf21f34de056bccc6c1bdab3376c8dafc263fe4b6984b56160d5f34c96672a3d4f40038b427da8ae5f7c83785da871a3c7c16f318bea10cfb9969fe640d0335b7a81b8d8b2b0e248eaccddf29ceaef00a6c93bb45f4ecd40371c035a69792af8d4ee4e8688a89160ed5058789de8bd54928198084bdd8f495cf12a184aaa8952c2c6a2ddb7267d4fa0c68ea676817a2b329d2af5794007a2ece72ad86febf4a840c34d8d8483e125a1118b6bb20dac36aa8d416bb647a84c3ef4d9ad4e3140f62b92cc08421d21f0f4567a87b8f23973926573ed50e31681f95f5fb6ab8c3360e869ff42e4797b4562d65e45f8f906146e4f4eeabe70eafeb89b7d6ea7537b6d5c644cfeeba04da1df5ffd577d1e1a6d06c0207b837f845197686d44b22e85d76555e8b03acb6dd2beab4495f5722d2ca06f216c9ba955ef26e3257035e695f360de4f3c00461756affd099cffa1d6dc844c8758523efcf6963316909d9c8f52852c0fa2ddc917e1249411344e52760c677a0bff795d5ff2aaff7ce82d93c4bc3871c4ba30344042783f3f36a1831f4c73641f006281e9f848de0babdb922f66d97bd28a87c4174738bc6a426e62e9120dec08b6a6aacc2879da6e59c664da7306d702e04fd552e35e30a11f577d172870d3a87a8db4c239c646c0d83e1a3e3ee7b86bd7c7151d7b331933dad478acdbf2790e3ee6f5f8e59c9541d4fbf0fe3ed376230fd77da194fbf5481a5a5e21db5d1432c271052d1ad9aab7fffacbbee849a1322f9e010bff3fb97017f35229c6879574c761aeba935059e5c21e3a1d8ea9f045db03400497df8b853056e450ef2cb436b77dd6385361f83c746b86a660ccab5429c2ee27844ec7766cb1d4472233dfcc3e41f5318d660b41c5d0e9bc9389e8abeb63c316bfeb0d91471e0a73a148403a80d9767190425f611e3e1127f3a26a6157b008b331b439804c7ac7217f61d90206d73f2a8092d703bacbedb2f246dd72579d16222064723b2584855851ac5c0dff0d3412fd91d36071646476db20696e5133b841e058330cc3ed0359dfd01e173044bcbbb08fc5f7150af5d62a4850e378c7b65bcf75fdc407e3206de7f98bdee4065262fd8b7b2f2a2429cd4d6033f60c9044afde16b5a9ea2b4eaea35130973b51dd7b9c39ed86b64de030e3e9e23ba68fc34e001d835a9b46cb077da44d0591963e879eae5290fb374778a14f6f2687ebfab2e2afd214a28c793dd7bbcfee1dc9d56410024058bd7896a82b5b26a2f195b482f40d35a35df035712f453f39bf9224acf98d8b7f6a4b7dfaca3f92baf0b131c28057a95ede7b4a8fb96a4240398c021065ae0f643152bb7d22df927a8b5dde1dac7b280043343da58c88ed5f71b364de80900e736d8294d0dfc641c0988e400653563d5ba126ae6bc57b4d90aeebbf7657c61b526898468ca91ee1fe3c6065f2d4415f761fbb9c75216fe69cd637582451c0fc008c62679ef79d03e929c5603ca1e782421a5141f66171609977d03cfb0297a4e88708e26b6634827ade99b880708de370062332aea71ec7773ccf45931d0f6d92cf84d2e1cf017e68d5dd05f7c6cbcf75935210a792633ba2ab74e2525e53be6d0aa8892005101b3854ba2e251b92df717fcbe598502e12a95810873f676e569ebae7918482451cd0d61f5352d1b6f065abf3d14b8f6b3a0aded8f4fa054f4c66d79ee16a326526887d95ffc61fb63336b1da6cbb45ba6a2130a45ec495c4e533847c994ce72d7a75c0cabd8d8ec115a268f552fbe0d7facefc5fdc902af397167607eb76a03b4ac943a58c053bd22452c3279e2f41c44836b2e81b3e9dee137fbb19881c01642b12c51181efa8a645e8daa96a22a0dc19930ce0c8848ccd8ab9b9834e110e5df35c8ed51c456114aefc8a004be834505859e83d1d56e2d90877b8d830e47d36c3d8a539faf31dc69f1435b6dda605de280ab46724455ace3939bc44d3a28edcd9929265099efb1fd6e99f4530b4b697004a1c389cf531c8c90f0b1698c5afb6c4892b1e6596152627366ba8738dc478a66266422d17489acac2dd94672ddfab7dea53c991b2d9a9b8b7352b3d4dd334f924b5c3fdc2eca458f3542663dcd149e06ed65d35c3b36ced65d5ed2e3178ea2cb859553678fcbc2ef736add118c76160b4cd1b2c2d155c5a62178b2518ae6ab83d0ddc84620076ebea191d624aa9398740c7e89bb45356eb0288c79980aca553d649579f71171f8dcb5ce0e4b276ca2b5cdf45ff170ee5dccbdc71db77fbece81b53138b974b4f566047057d7e76a35e72e1d6e8c51b74547088deb77362509e5ad5049798ac25e8acec717c97651559543f3a545809a83c2f01f010708703f1a51c3e58c7b910ef0c4acc64a6f6f8d9b2585274966c093a49109d3d84c33691840ebb93bf86545b43ea47480271568113699cae85c9398191582aae0d523c84ecc02641a912a28ef26e240a676caf946df1d991e2164d8a3228b201766fd5ee98c6bfc34d0263ecde208e27eb05354d1e90b53df44b73e3c3ec7a55066a37225a8eb8a095ddff437b2d9221230f812a7b6b4e93c880fd702bb84fd63cd8a10b642d68952b5071a0e4dd45ebb0bcfd14cf08d045944dc557f23e5c0a076a18738c7776ba1443564ecbe1a0888cc0fb211856c7c27522e8f713984d9956074e9b8f7c214c9e472eb85c3cc26e64286d95bfcc8e20017f9ff31ef8308288e4b8e46fb275d1811eba98c2574d1a2d251f1047917f704a1f042a2fc6c60f8834f9198d9b29264569e002ae209b638d009a5c6fa75334dfd889cadf1e5c91a9c9151c2160bf4e3c98234071392986ec93928b7b0f33fef31367159e8dc7f1caafdf2f760b239d89078ece5e04acb45d3e9aed56e7c7bcf85cfcd653862915aa9d0da6282ec0709c336b5c800f1bb383790f1a69803794300e4dd7dce1c63a86f2d3406090f7c0e32b37fab7daa63c9195bade112e27f844ae174f808f32c469ecd70b35693a96bdf8e1eccd0bed75ff439242b0e7b0af25c2987283c3d79274b9ac10e0b2a12792bc0ca828a61ba78fc6f9ae3bc234624a296b13d4099a8891c2d9da3f93a301f070b9faa0d7bc823d2c1da0246fa96ce7979b0b4aa406edad0d741091eb1ef60b2d61e9a1f894ed20f82af0487d0127245cde657959552ee6cd52b1740ae30b6d197aaab4e67ad7595d96ce5768f04e0683ed9cf14742f878ab59e293ac64836e4540c56710ddbeda8a9652e3c806a8ce89db3c3c0b8b62a81e7217613ae7f9264c2f0d4bf18e1c7454f731248b878b08f8ac289ef56e9486388007060df92e01e1366614a425e4c3660759a087e133dc86af967874ba2b2093cca3c9b8c323585e062facdbb02decf33c9e103dc569d8e4d6e6487b30a60a7e6d1386667830e0d7e3bbd29ca14a86caad7626ec011492becdaa5a94f22879f91ad8bea259e8edfa130cef6daed9cfc2f86538ef745279cd11c64c1c83d0298a3b9ccc4680f86668cded004c17bc44767c5117e07a9c0d79fb668b61a840602d995b7319f574e80bfcbf0bcb9bfdabb4404a01f74284254864e1f40a6712a9317a2f06ccb6b7464e5df79ad5b4f3edfa0b831533a614f7c402f36c28b54bc684c89d97395333383bee600c094d42ec373dac7c26126a5fb5dc6ceec1bd168cf01b5759eee0cbee9cc0f1cdc6c8d5b0ffc69ddd45cfd8b0d2a253e025d6031e93ed45ec0a4475bf5fa70abf857cbc1800de323988ea21a3742835de4ddccb2ab9059c9c3a7a84e5faa7fb1dd8073dbf5a3d04fbab6834817d0b96a4b52b5bbf0d0fd98f070e793eb6f9abb189c7f1d62a138f5db3342d03665c678c8bd0e33935d3a8551ef3269443f80dae5807dc6424e2774d30437e201ab4d7075459f4ed2f6cf4de998a9a9ccf1d62a0ffc0efd6ecd30f5b031eca6557412a0741a841975693fffa9c4e1f772e2a4ed040f683e5d35e77595cd9f914b4181dda151ac4a687e5147603d62b8cfcfd530b013d51c386a66e5ae12c3822cf1273517e75b6bd06691d9041229dc1755ba07c20b324e5c25c950eb317fbab531362b679ea84dca00cee32504277bae11885381b8710a1ad0b21f35502d9b1936058caeea00d353de9a925a99bf3e5f06d51b59f617bad3f8c5604ad3dc3b66638eccdf8ba10217edcda5f2c04c9c8bc61f77a93dbff4d3322d268190cfca3bebeffae918207011fb0315543399dfd4da45039d1895cf742216f20aa8fcbffcc0ea3e9d40e3f1511919c4b82c67050d1a0cee04d4db7b7250303389d78edfe1f064ea6e25a8a7460bb4473ee9ea6578cc9b8d7daf6735832033d104d7640c9c23e9197fdafc505586bab979544c2faa24ff885d5723818ef055c99ae38fea6d0427e581b2c5f3b702d69d01b329b085f8a89031818cbb1df7d5da6ff3d851e7526e1f6ec3b9d2d743f8d59fa812722eaceaa6c61934f7dff07443bd2e3890aca437a813bce4b3a08bd3a61de20a24f1ef7df80492412b5b0ef78b08325d7cf33e9a4bfbea267786a15eccdbd50c556f49fe441d7eebb124dca664d84d2b58a0fad6323220b3fc3673549ea88282fe975f6cd7cae801173b11d091787039832cd9cde4e2e5915b321ab34486d0cfde36a8ab0eac7265365b4845e89ea650fdc0cb85d6dd651d68c37e41fc523bc7a324650476f3938baa6aaada590328f0b82e31a88b7334868a12a6026b85bb32e561d6a36df31cfe8a5179e9113db5cbbdaeba0447422351e54cf6c3046f754cefa62518634660dc7add3bcea176a4481b94ba0c4bd930d3cb1961937fb693485d32d7d7999547550788046b3dcb5a01ab595b56aa53a4ba88d8714458fcd5c883e07ab88340f22f563aeea5075f1845a3b5e01ca84c66857460b2ef66dbc867abd5ef77a9666345246873e46e84ed97f99cdfbba8cfb2075c3db66d83b7502f1b45cc3523163303141cb5979980672d95604d36b22552e836a261de390c2d23f31e62f5a0a02cec4bcf20aee2c00372514e61b37ca2a0242e8cae268f2d5eb7d6ae6820035942156526251e6693c084d07f87fd12d3cf8af2cf476bd5ace35267758a02833b45a7a9edce619db432b61dc10e0103b0f53e630bcf9990d31dd38ec6f54a6b425d60a3ee38f30b445f0f20b9ce511eb5b03784b587de6ae638099af6958e60695513fa78b2d6fbf139cadcbdbea4ca0062c2c4c66e2e39226d3a2320cac539a16c23a2b8610f4a780fd489fe5853e2dc40fd95b37bbf0fa58a9dcccc45cb6836830c5b33f02643b0545270edb0de2453d55d51b3e48e66b53ce0ca0a47e0f26b2adb7d0781aa8fd74a189f13576537afb9286f8dc5d94d19aca23fb97429f94c52b01bc6c9ab30d6a9326db87f303510ddfc0c6775a3b26facfa6315872ed1f60f436c02a83e8c97095fcc066528d06be346c44a2d34b3bd6cee82d2535aaddd3c5d8cf0f6fd89c813916b9a885b01a5a9ccd0645e9603a2b7fdc346f67fd5cd7d5a8cadb984bf8c9f6ea99e4b7c49986624872d3c1962e02b96c576934f6fab96aece0ae8f5acfcb8d256e94f60813f5c3a1bfc8bcf1b377a9e070aa9e4d632ce5db6f64c75097f3e4b49bb37823a4f8eceb6bbc011a1b0a1ef2572ed38873b8b80a5dceead1f4f2e9cbd10a580afef7df3dfbcc6f829e357d3e2ce86ae923f43c74b966b4a3ac2f63a8aabcc9b44737c922fdda8e56ad0468d0159c587ab2948f244c88a7d201e1cd221418c3b982cc1e5577f65f958578ed0f05d9d6ebcab015707c40a7ba2124fc16576b66923c610fc7a0ddf9dfe6903464516d4ed10a0a460224955fe35289f9a489332546abd6e3bd1ffd0fc5f79fb0a04e131f50d378909cdbf5ac2a2b5cca44018a1cdbce303da9fa117846fc90e2ebdad135a7af3d666c4c64b09bf2ede598a9f71ca86061f647f0e6669129f2036769f645557b75b1b7a2e4a183cde04e93ab4b9e63021f738f221bb22357a289b64326000496309e292bb73b7825c8db52289a7df90baa00b4b5383eaefcdab4a786e7cdd8ecac309b54adab59f5510d47fb91e17ea4f7a64e3b75a40bbe89322b6f082508cfddef1a62f166240705891807de8147eef2d1fa2a5cf67b4fe0f7a62d52e20e12cec90bde92014bf677aea95fce301ad6448ebd1af5be7f1877f98fbcc9cfa11a739f09a870fa23fab6c1396a7ce2aa69750cc47f8050ae864f53b04e679eec0b2b8ae3c5415ecdb1304f1aec48f84a8023c99d90ec760dd7ac0119ed524f07547d27b5aa7f051e0839ba028976d22d35e177f24d9d33b6fba8a42f4c8e458f7e6119f14f384361881d4eef7cc35c185eabc7ca33c6a3426c20be47509f06332197471f268ee862a1ccfdd201c2e3d51eb7be5158597a41a8f0084e0fd3bafb34c94e030d0cc2d06b7ef25e939951a784da7e035c1b52ca9ed15a31a52f7c3af1deced6067dc9c5e7cc9afda9597fcfe821bebbe8f0a2e379cb736de4f1e859b45d42e56eb3448389a0c1b9682de2f4d04ee53c41607510752422633b2d0c254b5fd4d651db02b8591673b75b64b205d14a3be571f26011e1cebceb97defa9da9ba787f2620a42d12c2396fd4d06e17caa78a27f8f4aec35c2ca80c5a71050965bed2e5058490dffefe0e622bab9a99ea38fcb7dbccd86c425e0004796052e33b02528ed70d51214134c9a5944ca52399dfed9654f22860ecd880787c2089f0787726dd3fe7c59155abd5579124edab81b24bf03b60d674c0ce3c1b00826640d4c4f8c763b48f1f35bca6d6fd4cce27ededf46125affe8de7ec9502c6e98206aad2127d22b9f6a890a796dc18523327383b588c118fa8c93c29b47c968a7dc87178f72d879c35aa48d5893dfec6c3324dc3c758db4d91bf9a6d42fb9f00483bd6b9fb8309d09d824c3105247c27a737796ae51643b7b1fc44282055ae7cc6787b383d645ed8d0429f611d275a93e25ea1ace341d9b746843a110bad09c0dba4fd22dbea4765b7d499fee6baa657d9e61c2eb883ede9489e4f97bb2737e3016c777c4f6aaad1be9e53f912e79f449d98bc53c8f14cb5b58c8a3eb460538b1f6ccd4641685586f7181aaf05c2d7811f4cf8750db17dff4726737eb42bed1503ae8d4914e7d4a02422f4a1decfb1b74b1ce1ffdd4a3e006b44690f367289559a74fde26dd99ca440d0f3b8209065cc2f6723fb736fd80d6c3bba0b9eac8c29765825aa29b8bbf7687d945fd922b5bb94d92ddeb90a8c8cf85c149c5f39a62627f70892270ecfa59ea7c100199ad3004651d439cc5104887a6dca8261f5ab96e6633617ddacd3d7272c9154de4a0571b8fe05d2f8f7d46a914108ebcff9c2c306f567c726c97d032e12d36e76f30aa5641d47a25f759691a83e10b6397bf9f3550af58144935c8dafc83f3eae8af926997fdc91ddeca8dc2eb6d538ddf9d934ca7c6682cad96520a0ceda972327e5c0ccdde4d677895ce17058e4e42451e933173d0b98b647ca44c5ebe5757e3b7ce48c6771829cc55f084d10aaa2f2a8cb63c993430f0519762ebc37dc6c3c5b97abb88d6f7073505ae3312e2418b60c247c860a79c64e9f69f6111ee26a05873681ebe37f411e4d09f98d09a21c7b225d106f5d12bc8b5c7cbada02b72ab4f890a9d35b741a25b40b65bd5a98ab05d6f219de88af277d4612893cdd821b00f48a4c45f9087e2f3ab83dd31e6b26e8f470e9cad9e98eb76a7a5947a5a11a233668b5fd3ee9e885703cea6b70d2dfaefafff641d28647462b338148c249a9b0a97ef2cca4e2b7207e422857d592d12143e8e9bf278273471d70a8b6c163da017ed1132a46daec9d6ff67f460221c690c26be854e92d3cf10eb194087e76ac3910c165561caf9726dd3a1ba7d9528bed714a123352db157c2e9233ccea33dd2e12dd70c29b61f97c6ac6a48b978cdddeada68d60e53825d9ce1f77a373835e726f06a34c5f4454ab101d4853bff790fade634a626860e37c83186833a0f495fb4fb3b7c23edfb6f5216ac30ecadd04afd8e24152c7adbf902194aa154bde07f9074e685d569f634a1f361d6fe4f2eabab2d78f5b65c14d31e94e6f287bd85bdf63c407392e952afe8ad01c162fb6afcfa09cbe7bbade1fc808c1063d83d60fbd4073794b47fc47849fb02e4502507e82513b0fd18a8b3b8a256206ad0fbd04b4c3b6eeab9444c60361ae4f2c3c6363ed76a3b7c0b3a41649280e427fc30bab236a3c66cc3565fa3f707cb50fa907c12b1bf42e1bb8d3df571f08ffe6d8f492a9bf33950186a9c782807a775f931c7e7c7775e1dad2106e6f552dd58394e55b33b1bb41ea2e9721837768cba06a942f423abf56b5071cbe3e7d9c1aef8459e8a0866d40f6fa75ddaeaf5443c2cab4f9941eede51732df65ca64a492d471d89b4a96fc0ea321d936fd8df4da8bb17538891ec5f12c904cb64a35c759f498520f1f8e572b3c03c4dbeeb0cbf55c67c4fb1f9d295596cfc8e3fe3673a57218672d2841b308995d00a63e4ebd300a3ab7a04508a90f25758ae508063f3de79db9a1f106a0a674d6c6c67d7e710dd6f5d4144e4c1aa1eeb13a8122834e72cfe600ce71265a0ea2bed8e50aa1e3f7788e76aa1f5c9e88a6beabf369c4ab9ebe18eeba235dc7ee0958a05419b67b80d11004f9f383e68ef80efb8083392df2b57068c9ad7add0189576d58cb7a9bd9a71924fca54802a1cb5b71ab954af777b1a2e633c8c6946f25a0e15c86482d1c9d4a3081f6802c495fb10c33eff8d15f3e7de018499c25f1cb59a100bd83b5176a847e89c8361baeb274bc6164540653ffe1fe79f79d2804d9da016e19f13c61e22a420632b509ba16f10e047cc2cba10a5f33df35c2b7d0cabc14d1919d1a8edb70626e3d75016dbf1cdf6b44c8de5a2a533d83fa3ba82389e2c367bf9ab9195a3082b287540a3fa2dac73f8143dee40cb7df83c667b8eadd99db832c7820e4465c34cefe5b07f09851771b885d783c16930bd1feef8d43ee0efe4a15f61995b411561507b130d0fc4d801a2962647fad2763ea23ba1c843df3bc2287057697abdf5980381b3d97494bd12004fe14111e165b1e67ee7a71f238ad25dfe9e179124da68e4b380de3306d1a8304eba27657328222ca036bd7e9e122c24e1125371062a692ec1a9bbce0f247e1145be3a7ee83b97aabab3ba7f670d4a0644f51b4ab6c32015d006fe0b05263fdb7902ed1aa6bcaf149bd0dba23813f73e260642fccb90ebc3f953b7fa268deac845a399f496c20e2d46aeb623ee0df3e3dce91e0f9f2a6f87c93bf30a11cf15579512ef49a5cd2596704fe7550db936b88ddfc652d38e4fdec031d3ea4a2918dd6cb6e49544423083069bfeb73ab2f645b5c729eac9e31573d21c5b68bb395ec05ed7551be9f57139a52e5fb3bf19c802a37ade8c294d7b8de9d138cf2e27688816df9b168ccb0a612001f26a0ac3886afa6e924d5cd0895d605e1019d45934a8d1e6c1772b60f1fcfed4dc8d2df5ec2f34b057171449459f892217cec1c318e8e2952b0146c7e681fa7aa4de60bbd4db1a254b61c26dce7929bc07a36db94cf92c50c987635775ec81e464027bc5ca764d264d4d1fe43129f7c0b8b8345aa5e2abb433db8b864ce6370609377dd84e22c164c683a46555f62049e0e0d78846a4eb6b488dcbd68b03728aacc208cfcdd93c20b3a311f4b43cc649ce72f9734aa68f46226ab5d2cee0be539149e12969eddcad6e0bea1de2c17cbf270aa3aea144ccab86f2dc190c7357cf52bb7530f02a8e4ef913f552f76ecca8ec00c1d8ad10eb5722945b7d992ab21741334fa1ac139755b295bd487190b1d05295a3d7582fca6a2fac4f2ce7a2f4e60dfba3f2e4ef0f9fc0b2126f201d1d693f737d9eaa905cc65e9a58f0c378795935dac722360b6156a37087742429747569c8e7861f9c24bd1e4b1c7a3c894f80ccffb41827e7cd0ca59ff3da23960f056f215d394153be1099a9c5bd674bb8c39f1f899497bbe71f2becf09b3146bb3d670dbf2544da5740025b7e5fb22fac15cbce08b0ec2e15701bbb5fdd12933736bbecd38babcc302714fef92f7bef54f435c718ef1cca1467d29fe2b5d68fb9a04f5fbe1336c21eebcdeaecb81280903c9d7c41e0fd4e734e63cf6101f2a66a45497d8ff694ee0d3bd3178fd96fec72cc1459334d75c116f61cf28645517be54cf664b5b6afd479dd045c1f732bb1c1f52a0a3ffb6fa6b4aa8c1941a6128fbc5aa6af8368769cf38e2cbc5f25955677c01783dcfbbfb55a7c796e44ead916f3777b0eb38a84b8a230d6d5121bf3ec44fda1bb248d44fee7d4915f878ff08c83cd7da7e06e162fbf46b0c182e63ebf0828a4be548afd458e5ec5b6c5efa30bd82e7cca0a32130818c70df9fc6df1085c1a5b4e4f6cec41573a8500fe7493325474833c16452d188e3763e352e8afbb0a8ee83f1cdae41b9d86641df4dde05ecaa5f6a74c855b9f971cd9b157e9eb69916fb3b264c9ae9e9135d3abae92744a03f591b6d7e42cf7bcb74d18677ec83ba2009073f52e1c4bb633ed34f708c8ba3d88e2f948a3b8db1c166044dc5ad66ba5cad92e413ff48a63de97acdf38e8c3a614fd0d14162db0e76e5e2c9a1479293561e98fdf3ed63044ca67e23921a248e5487d5111013f7ee5d131f1847007e7a0f48f0f09e37576d9d908f61c5c0bcd92071825fd7efb55ed25a19704bff80968b482fe1d42d3b4f6a322bf63c3d864b9714ae4f779be216e7785ce8748b1abc401e04b1d545024412af35d2d2535835cc1efaf04b44ff8e996c9d0ffc9bf991f7238a32e03c60cb8df19d75d080ab6eef3c7b28b5f687574074fb35f019e0c98a1c5c01cccfaef28ff4cb21a81ece2d84439bfda4723a7393d1298224a469c81d5b845d5ee1c63b731f31050152070f777d6049f8919adf52b2851c54930d2e16ecbe9ea2e227e5a85db962eb161e01cf473236fdb2d3c79256ff749ac8658f22c7ba211242f025fb38dcca7ab6ccc8badd510426648d82d080ddab2f0a72ea33f9c3ba51a689ae5b6ec57f1da6bd17de03f1df52d85bb88bd14f58a45447b162a2be82484cde45fb3258508b9c8ff9e9b74e2c70997109908edce5e75aa8c23758885b0f70543162b251f2c980a928f1ae80fdc2c615c81a4523540e31558d43188a68fc237cda4850c845ee7b73765f035d6bd3e09b1f6b20fd444970f51e74bfffeac08542379e66137e7866b0c2802212bd603048bc27ac208035b34c24facb873137575435953f4f0d22c90675551a83ef795de0642764da81ae6f1e8b42bfce5787a34fedb2aae4c6dd9730d5d96fa40d42cc674e8b1caa3ac1a0df6ee5411cdb123131ceceacfcccc5ba5ee24ab52088576102dba7a1c9cdc5103bd8df767d3377462c94a474dd546e6cd8e82c5063d068046efd05c757c54b8984c548a50f8aa5843680a9046a4f6b27860c5815471b82d7403d9717125c2ba25e3ba5d6e2a4a27a57a1368d8103bb87adf2dbdb3f1de43becb97ff9a0b558275b1689e4dea7eb063f0a1cbbb06386decf76f40ba2921ff80725e66746d448147a7bd27c74751dfe6c7c266704a559ee753333ada300d3d79e7995f616e470fc6144d261c78f0e9e599dc3beb0ebc517b7e968985719234ba6c468c09f51c1684445d8af3552d12305b259a034bddbb8766a9d87f6483be718a75530ea503ced351694aa357fff59c592a64188aea4374b0f08669091a2ebd5ecc102ead438a88679f756feb0070863b49a6a7285c98f171e363cd1c72b910e506932e6ca39575436216a9b4ee076e93367dd28a6cd3396770393b0b0c72f3fe6fea2820f11e3c53c7e4d6d72af3af6b7a4c07e09aaf806d772639484bcd11be6a8710ed7f353aff1bc9515f3ca56508ef444c742acc85124dc915fff8bce8adeba88f88a1d5acc05b2effc44df0d9ff453be464a2017b553a3ae50abe578ba1fe1a93c230055770ba2413d9abb530b481ce47cb4ec6b049fbd532c2af1145d83e451ff30a0040d31f5404914826242b79deac16bca2ba2740d8316abd841a225e89480f8f745acba4be1bc53c93f93a5952965940b6fd7d2fc6761442c96a0ba4f168c826d026ba18534a863fce0f06202f26c6714bdb9ddfa88341795e33fd692feda1b69ba2937e4f2e81301aa9c824fe2b71aa7ce916de17b1e102a3b8ad9ae9525b2de816d88c7372d690abd20e8a8329b98ae8eb0dac133e3562dd94333a5b3265fdca972b2d03f1eb07b98b82cfc4c75b75767e813eb0909b80d46f8bde416d599aea468aff9844fdde1b8ea4425f7659102ba41a7b8ff1982af8e0662f1cdd97fd1aab28d6c8b09d84805aec872e2f44c80cacfbc22b4c398e193ea96cb81a3a240aafe737928cf00a276afe1543987b4c181e1c63f2bd7dc1b3580de512398a8ffc18e4dea29818a633a8e1b928fe250f45a224212efeb13bc46b0d81848d09c5998d113869eb41348f945f117de06ac799136ab6c1e85d5933bc4c3941dfddcdc86f01eaf65cb5b057b20412d60a91f150319b4fb2b506daccad709a26982cb59c2fee48b39c97bde0238983f873274a0da0f00c82a71a63c84e8d47dad0840f51dae3dedd5a51214496c3805e5d4d571e2d33825a3a31fbe19b07753852fa6f56fd66ebe02f214782deaaf70d6d83ded485b838071e418f02ff156e12e6fcee6e2e4be1732b03bb32ea542ebfbb2c6be7d48a2dc0848c6f78cad50e3d9148aadaca82e78d35edb2c4e5533b53110ccce6f74b50c490cbcfbfb24249ef90844494bf915728ab5a7f4fba4c8a9ac99695c23e0907c4ea8b47db883ba3703548609d6cf540d1e0441ff344245c6b1bec9d5de720a91bcbd3543cb725b617f445285bf543e50d75f1aec8e9aa4208bc9c7f32c78e04deffd5d53b43afb0984a4eca0290fd3b8d9c72f0626440a6d618341b08d571d7aeb9eb8e2255a5d2a34db5f515a60a6f2ad250c9def7834265a1a112b68460596d2918a8c188d3f2d3fc6660efd7a95ebf9498c58360c7a6c2db354df9262eb1ae38112f9b8866faecb59f445f35211cc71c7291f428a5b6233de47658bf177b08e727939ab55a676a61cfdd573dde6ed0337c7fef44cd2ada00e07d1802eb492b1672285ddd15ca5d32a7eca976d04fc0975e079f13d50d9b777714416c9e20cdce46a60a41694a9d13b338d1b3b26fe4936b407a2b9a3f15894634b1a7fdf7634875a9bd6edf21421c2908d153a7afd5b9b36bb59191f3d761769643ad813cb03d9e327caf671b77a5caaa201204a62ae4a169423f2f318987c53b0357284e1758be24c00b271a97dbcbf0a7376a1ffaec104061156c556ccd80e56f542303cebb47c88f2875949be4b7aecb3e50992dc2cf9ac0a3528e38e36a9bd2b28224d3fe1f49267fd113dbf5303d8a3cf2c6a3c1b3452e6265603f78cd29a26b93edb91477392cb1ebb417f33cfba7a0360c2387acb4d73fa323e32c949df7aa868e44f9b20a80fbafa9dd7088c9eb1e75071c96c77c1aaae9815dcc5ecc12c01aacce239b968e09a7b73134ab8b6bd335053c89b5d8e46c75fcd588edcbeee96ae0870d86983babdeb98f8902ace8f3ee88cfb12d26a60e4e65c8332776e671bf377e548a315a2fff1b390d27973ca07fc8f4508068cf897966bbac3eec68c633b078459c64b564275fd3be5c3fd5a3a62e9ed4c2c4e385f0fa46002a10be874cc1a1d60f99a883a79b567a9d98413afcda64c2440419726def6af1b20adbb823d3015d2e1e4882b9f94b30071bce28061f2b3a671788235b6b35e7e5c44686a5c1c9866ea11995e3375c77884631bfd5018f3a848eedd85964b978896e0e55745d6d6464b75cdec7252e519f1a48913fbe2c114e20fac50b26551196fbc90b6feb8d8aae59e38dc229953cdf9be2fb2442b1a0f22633881cd148675aa2b0c780a4b496fc627af3ddbe0fefbc54a0c677b1bc66591f6327c1d99cbe165dbd6f5535dda0ca12e24552f0954fcfd0dc7498e1946b062e9a83408458325e6de3d7ca3dd063948e5620fde2b78c4e22ac1770dda7858797be526e70087e7ad452667ad24d26125da8f8fa480c681b5ee7b22e63de9ad445ad0f650a950164d9cc6c83fd07af88ece40fd3edee10021e4987e767bec9b647ea7c351769f99c8808a8d2396dcd540b8f9f742f8f283dfe99d35c8e5da41d4fe19cb42fe824642f27977ff84241a26e67459a7e4ec9761fedde2cb423e74432b6410b3d355540e3389d7c1e100bad2ec5ef06e06eaba6a8ec5d3a665d55b06aa5962c01499edbf9d01ec384576f03457ecc757011c1354036859a699ea54e97f444e38e5824828daa0d5976a236fe1560fc04da84e3c096c75a8b31f4a787f97216b7cc8bbf5dfe5c9409365bf40be2370d59e1e36badd97a18f56be80f95f8893787f703f0b47020d46e77775e7b536b7cb5da03d1834193b1c173538c489ddd7a571e32dc0848a2e6f6e2f2ff27f520c4cc2eb3a4ad8459cde5defe164d167d4079a57d53ebb4e995e29419d0cbb8f8b418dc478ac561c8c84ef217a60436a3e2eac33a0fcb214c7cd89ea278bf70541e22f47d0021194991092972a95ef206ca8205f1abc1c3717e8b849a54a25530073d1da6189df07f6adeb299fd66e5bb8b3dc9f114a4106ad11fbf1d72ba838bf9e410247500b128f14df0b53ed8cda2b2d0c43e5c3345d0fe6d3be320dc7b6022131a3d29762703ed53f93ba5af0b6a16767dc03851e0ff98ffd996d74fa02d489e9e3654bea5cfc3941871d69b271ee2bdcfcca488245991a5ee037a7cbb0ddaf291c491b27f5b9fa24bbd52234a4aac176bfd5610989562d4c20f4a1378609937fcc799a58f9d98d7c5cd6b8ac3a842ad53560faa882c818613840d1ae702a0417e5da9f6b1e279da6d87ecd383630b1c60bcf26683c7c3418fa93277fc17c590c83b8fea470aea435ec9dcb2a0e41d94bebb6e66dbc6b5005db2fd920e61a2eb1e62757db5d2120265ff0ae7d63675e66b9e5f1a28d6052d95f408385c26bc18dc16c269e63514098684454901f6dd15bbd27278c590828cc3f4a11c83af8da0ef35aa11c5d5d69678d56dbfa4cf8110d7a1ffc5513657fe6840cd65094c7c7a58cf4e52c5780fd12493cf6b659332523936d058306f7a2a7918fb03d6ebf204ad1580885a9685cc2a5565ae8ed3d65131f294bc082181d1deebb600b64728af989c7f387ef3ee1c5b4cf5f98e159ac66316fc294453473ff4a1dbb3d899514956e75bdb2d4ff2e440b52f127692c20347b8a7219423217f0cb5165e52e643063847bf4de91e23fe921a39037d874ee4a8087c4a6bca8554ea1cc4d59ad3c5d7250a4c3d365b0839c0674a067d16bb0126eaff6780af66a746096dca0e1314f517f9dfba1f5c80e56ccb509273b6963bb4d7c95a4e8ea4074e6c73a26d595a09992659c9afc513ccee69b70a0234c1e71a1b33a293aa54272255b41d5ce722be500db65979840981cfdfc4d9f1417b5d7453cbc3d514c8af571a2bb7e3a1fe136ffeaaa611da4d824f943647a899a7efb14b4652d8fe86a17554df36edbae74141e0064b91797ee1e1db0307b7abdfd41421de0a2920b28379a8a704cbe920a2a33c81bf15b4ad53aaea724f50e03deeb7b963a5972a7c0354628b93b2339389869fcb253fb5ae600597e940c867ffd7038b7780b44ead4869dfccac3844ecc472450068b4cffc1301ec238d1a9b5f313ab0a44858d0623013c9e678db55ffdcfe19c8bc9cd98f01e18bba9663ec4e93ed5058161eab7cd31d1f06e47aaa2a325906d29126992fa99be222b56767e73f8657ef43e6466b3a4812cb62da93c374c48f75b7024118435a2893e40bc2c02ec077546a513c4fe4c8ae5a2b220ccbfe16c69a69e5fc01c9fd3374ecd9fc85bc2985e88748299dd3c7560bae5fde6c193782417b088edd9e951d4bf27f936eeea719af527695b726e10c3678015f0b47a5f4417baaf7d796eab04482503d7decf08bf91bc9e630dfa78ef6b25cb4d940f2832022893b772cf7afcc51c13da60f10360a79f565a75e1c3fe41e28af467543fb0eba6d26e2ba6ae5da63ed443fa3e70b6a19f1526d4c3be10dc50233ba7ad308757b9e2ca5222507e0c112e05a43a981ead077096f0b6f22c294e92e67186e0c9a09685686cbc0687caf127af1935cc28de0883509a418f5eeccc125343df6354a549e3c3a2f047e6a1af3ebf9e65d36cff6e617c1090dbb215fd346fc7ae2f3902415150c22712d470b5f9dd349db59063599da10f1154072714b16ab62bab1e28324cfcadeb9f221072535a45c5be3ddc46bf5b9fd6d84e2c3b9a5f46b9ce64ffe2a408d7343d1fea4b6d98a48323a192e6ca24fee4557fd04915cace9ba739b7908601f8da916b415a901cb230e3d22aa6e62eb8d43c1bd10ab50fce9da524efca3952ac73aedcdff37d450156e58192889913da1fe3e09acc32effc7d494224964136b9779be61dcbf19319325ed6191990b6cb884cb468efab27ea218b05fa4b74384a29c65fbf443bc062adb06e523bbe070cbd4badc7153b1d8e1251f02728f4546c90d320e3eead74f558c628464d419ebca65649f7337ae4c75134fc89ce0787685edb9938c7c5b2c1307c577410a8d93db9e9d7a40f20634760ade7edf241b6d3d8c7cc210e93820086fa18e7948c2c7c65b04e06f33aae66dc929261bd7f3190ef2540693c225bb39be0f9042bfe7dc466f19c4f090604e91202ecbddfb10422b5abca4abbeeb47a13d1333765fd62c3a1c2b349e00a56ae376b32d1f9593085eb1dcb6103749e5190e31694262260f749c0fcfe75f0d475644cd8d012e8c145a1b736321ab61aa77a256f576c25330d79cafaaf9ed4226b097a83a1652e7e5996f8282083bbeb8e74310890fbef2f8a0bc6070f6cf8ae33092aabc3e146a2b33b6d5142c2fde5d138c0fe28659f4f6511010baa58ddeccb1eadeb4c489be2b9caf5239226f57a6e2eb01a2d4dbfa7a6ba23cfa6f9294774068b6cbab489093ab4e1c8a0f0b87042526b7dab44ebedb4eedc178a0b09851036b154992f1b83a3439850b26b5d1ecd8d39788fd028111e763722ead9934f18c63b22faea37cb27e4ad216f742748945de6b755309949b69e98189b3676865a157c4f59583d6ae8a10cdea6d2de4e79b07713d85bbebe16756c0647014d308d76001358d3cd59c724d26cc9314c0415f61c1703034c4849ef7a3bbb8032b996a2cedebfe7a07f88379a8dfb139504366d5090b1ad1554c6c0e24e5df754695147c772aa86ef8309f3e3a2800029771e19d90bbd0b799aa9e4e635f8715b423aca5ea43b74dbc363afab052d479f11175c98bb7c44c1e014e612a760b6de303ea132ae0ccd18cf5f04073392ecc47351fbdc710febceb1cd862324e1f6edd4bacc240865db6755ce757eb4993cecdc854b19dcaff75789aa3633f1f32ec8cf4b1c33f7a6b3e11bc60b9c935657553ce7a303a2733abad233be90aa7e6209776e3bd6c08f2ae5490d895179a435a251ea39933e76bd5fbb97b6bfe1e3d24c4f9e369c097a4cf6c07994e1986933c7d543ea17075b32e7f7e05d6bd3e0f7af7d8d415b51dd56daad743fb000cfb7d82cc46cf5e398e3534aada0c82152586b87ceb2265cd6edb7e3602e570457aa3daca42ff78895b2d3ca81c6043c4780f4bceb787f91bf36e8802190bce75ced8c9395ee01df8459e3184231bb46236c257c5bf4b687450feae726ea16234f76be398c676b6f476d28c1ec0fb0a99a4af24d2620e83343b6850dc268c50c8084d4a0266982cfbe55918d955af9db869ca5d26ce8155cd6a0e7d62dee85320f29581671473b1cb288575ad9c5c4b5d906b6d1e29e9d320be5544a02d82551080fccc675805d4641fefb0df481bb7e145cf644d07a0d976d32611a0175fcdbeb2622162dba3e7b933f0e6be897852308c9474ed9b9477a3116d16b2b733f56b6d47a5a4c673ba5f2a29f8254df437bbff41f5b620c79238799dcbf305ebcafca353c1db59f39ba92efb4dae7985d5a461bcff5f60cdd2dcd52b799ad124e3f36ccec0222d70b3f0d910afc6dd116763cdd295465b51e021110fd55220b10bc2c9280258bb90a6ff72d0232066f6406960b25a078b90f3737946af47fa18be988a73b79603c98fdc87edea224a85ea9ba172db0260dcb2fcc852aea14a1662286ee436f84ae7446b51d87d5d418208a425896713321a619399b81b92e41760f48055dbfe498aeda10549a51f81a61760c45379f503445c14bc81c03aedbe0327cbc6744c5ba5e9495abb9db3351df7033391ae2427e9ebb99ab9d104e3632e0f8fd8488693010887ffed4be7660943affde6502f04a85f5067f4ec383b90d9b1b550a38804b70c9fc66281d7bbfd7e84aa5b6ec209b87d5f57c424ea168469198a9af64bd0ba87bb7ee2502f5e82108b47db81f00a6341a399441d86e0b0cf4c8f448c1d1a4bfb9f4ef7724d519509e6c3b8ab742387e96d0190389cbb3c7d18107ec50d5783528e7771ba01ee27c3293c247af48e1457cd9d4ad3ad9083251303a1ebb5f8cca7d3fae298d4d79c47dad0b94182be90bb8d931791192792508800a590b7ef685bb79023b30aad4d8d5cb5f205e25d9697739a20b9732fadbd3253a97f970de979c6bccd85d6e60681e4e4aff152e85209476f92a2dd58cb95f09f6e3dd6dfb772b590c1196adb88e02952b55fdfe2076b8a651e312e8c156edb3bdc1868388e1e52dca1c8da9708e5ed752c7375d08941f6047961fd2f6b1a6e0b7dcbee39fd15401e54110954aebd9bd71f404a7ac37a1448dde5e4e8df4fa2b0fda95668e7577986867cfe9617da8d8aff83493533fc94a287d287a1371730e1b064b9f00640cdc0259173bed404c2a121ee93636981356f375a33c66f0f59f90c58a81563cdd70ae5d86f80e94d064b3bf84d8f8cca56c6b39a2a883580e9422a6d406fdf382b4ebdf4352a4fc5e899eb4e4122d41a99074479efac6c3c59f3498aa978aedba59468c1edd37205f40930ca12ec11071a92378f1ae6a95436974c93e3b6d7652e32e58bbe7cb38d0267eff50e5f23942d405d2694eeb999437c37fa029fb564506cf8554b07e7ecb2196f2acfa97fa5ac3c8b4540b219eff4aeb5df3e447919733da72ac35ad6bb46cddd34399ab1bb32b11bcd6f957c6d334b95c372c0a59fa40ebd82f780bd677603c98f9b84d402e59d69a3a8894955933348c5f53b926333e84ab92a76cccc0372a72be83f1cb19ce458f196fd1bd165bd6574e973ebe88fa620908883a9a015f550c74fa64cb58e32cb6e39de3f885083263162a030e1303658c47a69ecaca5787ed8bfef40b5cafc2bbf9acf3901555be81c0ba6349273b6ccb24b53a1d98b7a530405aa655c2b35e7dda97b3fd47160af9a2791a08cb2a89a0cc989c907f0add32794083cfa91b6f09a0356bcad471b9f5f14726eb20cfea79bd81ed8bb2cd865f03bc4db7087a83927bf7bcf206c188413aad56e8d96eb1917315838986c36560441c96b739c433db18f66c94954a64b81233ec4f5efe9dc07a973c5a78c9a55bba680ab1423717811cd02b3400108875769336808782a1fbdcd7b50780df5f866a6976ba51bbaed863558c65bd824ed78e5bba46d9919d450b4471c051d31362b97c612e36eda9f837a5df04151a1d8dc3f519aefe83a33bc366d6471031fec66c83e1976cf161889eabe56cd6357c6ffa6aebc6010c937fc0ee1d3927ca858ac10158ec0dc24e514ca58ccbddf58d8e3852852d2bf081f46823c0a4cc8b1a149133592fc600e179d2de65f3b180156a1c997f71a1f2bef4b8e241db77bd94d617e27dbaac4f9c39c66edcc288d1e298718451cad79f1ed90ca1a16205dc0c892c33b3351112b83b0554306467ce860cb9caa84bd1e0124ce6f1471cfd4a1e4320d74f7881de2f4c23397b4228447abcb4455c6b9affbe46637909fa4bccc531472e8985dbcf33649a458b0e0c2f3e3dd9aa8cf0e57fd40ed0488838098fb2fe0a9341efb091d6f8f22f289c61a0e80b096ca5d3fa1178eb68b87f87f81a273fec3e9a0ac2f1948151cc202a28625213b0a87854af2bceb7f626548064e08800ea3ebcd2a39736efa497591faa70c083f8c8c2d62d1d5b5223798b697c06799ef3e18663ad5e6127b1b65e013f97e9b5702ff93f184660f5914e6f683c7646759ef94c19a1be46a7c436550c04c58e59a2cfec4f3b8406092eb37b06017d9750441a44844b2732e29bbfb7103860c12cad468269a293ad4d7d4af0054aa5ab46217f5f8f6eb491b9ecb568b84b120f61183d7ef428cc6d9c0b6bcf92eeee5f9e71cf2e318ba5073a6f07419d1eaa1875bda83abbf30a0a47748ca1d58abc47be2c3b6aee48b517b88a6da496fb7f95f2cfe93baeb1460aacd9f58e685ee2155e359f513e874b1fce174e27dc0c10a3b17a40bcf9264832760bdba41497fba0ab7ef4760d23463c494c82bccb31d347ebcb27672a79f619accc8770e68adc0fbed171cf792fa4b22c36eed814881b4af5a903b7fc9e00347f5ee4ea1077f59f3f4bda7ccc7fc586cdcc2f89be01aeaf6ee8265a51cfea2b355142a44a789109cbd971bea7b416d7cb9e10a4c63ef16a3e5c3a1e86e7ecf2c67cddfb3eaff3e07f7f395ee352f202fc973a17b2feaa4a85a291c20af9ceb3f154f819e34bea929d6e62e8a56c1fee54ce0e842de08601aea86e278b3d3ac404249152a116089586e17d504c779a204a5fb8170d54cc0b3102878ef4faccfc55bdd0c7170a8c6d299af98b4f7697a75ad82cd07aa5c28531c064ddabcc7052bff2274fdb0c67436723070892eed93252af523bf52fff07bac9bde604d606b10aeecdb517a427a08592d798525ee098643a1e0822adb34d0c27762fd75ba7ed792be3e606798e832902f353cf9d1020b13f26eeec222939e63f2fcff2240a9275529af1481d1b97e6244495a67624eaf3f5399d686198b52c6a4b00c5f40e76cfefa71c8889f8a1ddcf7d41a5d51c66faa3b31c12c9aa5ff1587659a498d0055eef742ce12c86e2313be8bcfd52f8dcb2a31c86af9085ddac1d5a0765d721154df0de7eb70e82c08000d5a5f09f228495bd7993ed25b97be5d20c93e07bdd821fb32dbd66cdc0528e6a885c2ea5a3ff2755bf7e11f2291a912241ce78bd15c38ff62e3bcd251ab444ce5e688f6e86bd440cf7ca980b64b3d9f53ce373f06ff56716c79bfcb5230ff84dc0e50511e407e0a4519214b04ec40e82e264b0abf01ffe37f9f7208d18d62c7dfec52363e0087b6be7a88e08afa1c19ccc7134203dbfb4ab3665fbb7bcc59d7a1cbd6b5d91707da41bf4fcf8820605434cfd1cd876ad55feb8d81636a04343ede4cbbc3c5921be8a2649fc578d13df475ca9e9d674f5b16ddf9ca66662a27137f60f1955420666ed950d1534a4b095b8e1ee57004272121196b9e7cdd11ca538312ff52ec478b61ef74f37e007bc0538de4e6ecc973fe8553c356e8c62199cc27717e10557fb479ddfc4a23a09e7e0294d63403cd478c42595fbf8305fa759114bb9b2158c40e9fe636ca2698f00665917638a88194ac006687989910ae2106917b99b58a344a66445da07b0d443e63de32acd9002e00dbcbbb1890ed48c57600394dc65ddf1e9d3635a9f2b43cb16f1bef20f5982570311fb06563c4056f4029e0a056cdb7c2e6c706f8dd24b80bb8f101785ea21ca68d581b1df098078e8908251101491c7468d9c85483c811a1e5996a6b76d29591979e1fd10df361758a34a830d6afe4f485477db75edf25e66d4abb06e18618e619aaf085797ff3de650fce248b794708ae39a1d034325bf772eff7281cc32e9a16f68b3290f3ea64914cdb26f86630f936ef4582f567861134ce720466dae369eb2dca45d9bdcd07ce8a1804e753d4154b9bde636e242d150ef682a1f3ff6e53868bcd1d614d7facb004759f3104672be521103ecd5a8a0a0ca1ca5d77372219aa17d590e3f9169bba995e6d3006d912ddc7d791f27db89b07e6a566f75f8bc442fec866c6d649ff01b24bf878046d2204282e1094789195595e4440f452f21fca6868dde3facc6a6abec15cec20c5b851ffe3202f97276b1aa1e242df510438bc90dd2425075c4e6d5779cd1533c2b71fa2d65dcbcd35b2f2b59218e13b8ae31bfca0e0ecf5fe84723c9f0fd9033002772cc2148d0389a57be10442f0457c37071601a9517dc1c9b8b517fc70e0c2036cbfe7c9174e2fa22f6dcc94372fa30e5c95578e288e4d3cce1a1802be1e5c278b5d76b3c0462daaea4caeb4cc2b3c896c63f28ddfb9c1e2987f60a2e46ce4605538253b91e394e5fac3a1a0b6ffc18bc3f4f91c2889ab22efc9ddf23b064ca2cc80b681197e1c1cc16b4d2544041339f9452ba3710d454ac0b1821c8c276a66100d2ad712f2bf3de13df568b211a98097ee0fff3337f408cd6db4dd9c5c86290a653f43d2fd88db0284006123877d8f0efc7a010abb91f1ef0ebe0714814fee290887018b4e57ac21cf785be4ea8058b98675ed9b8f2cfdf5cb5bffa38ee5b832feaaff60e263096e58257604dd4214f23272fc594ed60907c0953f8a9264111705c7604baa4671bd6d30253b5684bc361093da060184549eddcfd55d641087e5eda0fac69578068bcb96b11e6df3905d8809281226360213182be32df8d929c5fa51d85872a70e8806fbb3aa1b3d94d9501cfbc2f5699cb005121df065780e02507ab8e048b473bc66d99e16bff60e0f902b5b32324d8e5f7c114e3f00b9ce29ca678dbb22e04437d68233fc4b9e0ab8a81fc5150c4da8ddeaebd36914fb0738cbb1feb5607e324fc5b70ace7015d6585d0baa59e65f9e86702c1ed02d05d9d2d0abe6ce0d7f14732636109e208986c43d6eee8b02d988acf55c3493f6826a97e5b8d2c9d746638ae30f033440ac71b19070691660ac6280c66830930f8464763ffa86919795bee56e29f8736f89b25d2ba6694958c88d8a72a3bebd794572209d0b786a93af68bf51d2d61429f5a843e9612f36c1914cb3f261a0ac6a68c682348053f5e498c54bda03d9a6b2d676deb5676d59a19e48db57122d94a67a9653449b7601adf5e0594b740fea9613847e5ad7ce15be820d048444cd81b95d9aae9a4f732fff0ce8832f57de74a4e6fc2d827e6efe8ee08b08b0247eeaa9ab90c1a2e99063af7fafefb1557caaaad04da5a55c5ef15ff895e5bf7e5289feb0b988cbe749086b7f2a9f1e0476016f1eac4fd1072202ac9e6592a77fef8d31f5599b596dcc20c8b5f450ecdb2a9a94348e5f77cd3234fbd9166962100d1beb933a08f66b7b2b3496caf0f18b4c25706f30f3bfde7c05cd67291f3fd4fc149dda2a428c186ed4ec881098a942651a026a0f490994e0c8590f014e828a1b405ab7781c4980ee776c384a1ea3704f3e91ec70048ad7b3d034f8678ba1d162af02877bd7cc1afb74f44da4398863ba799f98d98147133d69193206129910d9821fba0b3de206c74f1f156b2f5404abff32a5963bd2923ba36c3af0f91d991ef6079906cd4c3739a4a4d19214a1f5f8c3ada3353e7a255dee3d931701afebe4be2929cdf97f356ce8b80d2e9e2c49cd41ad520aadedf1c983d06ed5e3c5646ebb8ed6c47451482dffb2cafa81f6052992acf9ac5673d896a0f7096545ab8018f1f90dd58af8bc809ae148d4669ac262d262a5765933755290cf8e6728af51cfda3565ed90ecc81b6eba0e3e65c7a99dda17e207d83fd07d879d4060f7c7ba93076e487e6074fbe931cdf2de17f7585744693ec2bd4f0d0c4ee040371dda7efc08ae64fce3f87d8874242ffe3bc62bdfc039f64f935df9e7b9db74ba2d2a3bb2b1df3060b36c72cc3dfeef0ce290b0d9bfc4a218639c286af928f2179ebbf1f4a3e207a8c05a973a8106631b2e3435bc6510b2cdad7473e8ad15e0630d9ede1230973f55146ef98d607d0761a8179555d237b5e16e7b0523d6dbea161d6bf1f382f689eb9984e2353ef3e2b71de0b342b7474a0a3195ddd688fc3c8dd9766a902492b674fc9e66d39f84491c106e5a783ea783c432b7922b7f477287b274c977c6149cfe923fe7bfe0bf1b32b7097ebe404734cf9af86c456f591fa903937149629e8a185d0aa682b49eb7c090de532fcc1175adbce566b8369b57fa2c4f253ca81529590fb8075c793d5d2e8128f5bcfa530d256d47770cd50b13673b84c299bdc808d92fae78bf5a3a730c84b4c2a8181c25c366d0973d365f74402176753f4bf78bb642cefcd243e6e98bec96280a1bc6cd55be62593ecd3bb7b97edbef1edc1ff591064e54efa1b1f7023639dd4e66307a6f67df7a71fea0fd6afa270fbd8b2a960ec1aa4725f77e8c6a642139b4e45275e8c8b1e3305ac04ad02999c3b604cb1f589b091db63cc524e3f414cfd06c32c35b61899748a7d3b8ca09c8f734cfb3029a0e97719a15ac182d5e79fe08786a9da77bf3b479bdb95e1c07c1ae7bef74ad8760b7b1fbd08b1e302114d41a29c7e970f3c654f72f6469ef96e48c60d41f33d32f1a33b73c7b7b74698c2f93a2a99e9b09942cecc75fa44f5f1286cd950a90b7100384e147d547a93d50ce58ad3006d6488a2af3ce010cacefe0793f834c53713959db4075e0402140bf8e21af5f360e7a86dd9f29040b5a09e41c4802ceecc13e50b5cf1d02dc51ffbcf8f9f0bde1f6a83a60f2419ab4117843ac0dbd05416ee0bb903b8327b354d60cdbc03528d98738a2aae6c148a36d7a248fc820bd6cbfe5607168b24eed685d1997a9a0ce347a0734a1e81d0a246fbaa737472c76d4030ad543ed3559f96e6a0987bceb981fd0a484f557ef89fcfad57d4b6b8e4cb409f9bf7f939892cc6ea144c455ee6aad4b944af00a1f816a5777545aab146c66a85b8f6dd9b794d91195c976a37303faf2a2f688c7df7cf1b1fd9d2e8e69767f39f4ef4473e6731f2577f7bf2a616f0b914b52c3cd789a2b9ab57513342372b118cb9df1c7de5c041d59ad45412d4b98362bd6274be0011984a1a240ce211d1f266b5dac6f850e2a8ffce05c95a54cdfb585aa4fe625295949d2fafb223ebc6a4a2e30beb97bd90db4330fd5a405cf3225da83e937ad2a50a44fa9e50848c254eb9915b42a820f11ebd12770435d5bb86187cd504b38b879b6901853ef54e82f78cbeb01f6aa0c7a362cd724194767218980d4cc21c2741282848392585e91c9e0f440938a5c4419bb294f6322efc3cf7e11e4d12f29bfcf702a6f6f5a3093a61ae927110324fc8044e4f1b62c6977ed69b3862adea93795ceba8e561da8be9d9fb861b4b4579e29c0d87f495d57fa7c34f15cc309298af64a5fd4055f42c1eaeb5d6e53a489ce6fc0a7abfeabe0134c0f5c3cf0824e47db797bb0cbf2f939cdff7956fc0dcaa914fa65351962f7cd00ed8f88658e6fd6c95485c1f63c761ba9e22040d2dfb9dccbca7cef9ca2ef3b2d0448f8cc6449ca35b66d763db589b5661bb620173a6d796eac1a4febdf650d74518338d1b18b22addf9865936c00008239d91d42f81db79cc3336a6a5f75274d12b91fb8163344e7f4665a1883be00d24b626fc321ae05f455128560bf3ebee64a1d6327a9b3b2877c4c5b8bae2e6792686ed49e74fa1e824d7791906fbea8f440f5ff7b70f3d3dde47a2af2b900b7a2297ced55e5fcffc8b84a418e31f3e8fc00fcca30e914490afc1803f4ff379c3f2a980db419bff37a48dc8e329e54a2d5d8d6d72c8511a6b9780b95bcf38942b48d9954edec1c1a11d4b3dc13a199f895dc99aa7628249213714d811a9b0ccaa2766e242beb561482d6f10e67face9030645c65b5ab039b94e1d8d8f20f35338c90784310da74c1a9eb3f4039bcbdae4b89dd631d5aed44482a1f6011ff255c3186f93df7307834665751f483cfa128b0ab38f7e1777f2140901199d32b4ee93f8b8fd8ad965e4e097ff3e9376f30abd5eda9330ab563f733bab9d52ae856337fd3c1a5386cf4a5816caeeefcabee07a8b7620293bdc944ee3562d5f7a262945a179d10ba4477a7884ff5550fe7d7879e346ee91cacb1a687f14eaed0549bae3715606ef065081637f7e6f5555a547ca3d2a53b009306ef7ac20506d8111186800e38e9de49ef589c5c9ecb85917f8817c4b5a286f688f34ae026da6a7fe887aa470d561d1fac3e581813a9eaeabe5c71833135354e895fca67d55b1057d9d8cc885f47fb4ada1fc2e9898e361aa8de9749b88a8687721215d8af9f45e7fc8489a032ef1adfe28bdb3195918ba837f719942980308224d5f19758247590ec6a26de0aa2682b7fe92776a573ce6f5781d4a9e99d15941e70a26a8e71a84730fcb39af90c5c2c0bb585e2294a3220b5126c0f36524e067a6c1f00d5514818fd2c09aab9704013a84651c340dad7bde8983d108a714a93b4095c68ad688e9e432d2deddb73d9c82e4a6c0cf8894d1feb040e3b13afe7ed4a3276965e27218d0ec580c4035e1a65f25240d31d09b772dc7ecee535ff7d372379a5e14d62b129316e9a9333cecdba523576d1a01366b41adc3fa321164f8cc7695388e70857cc45855145293efcc81e10e7e580efb739a8511dd175747a7770b5062817c2d864fc2be6c6cae49746c72f3f914f881d29e29cbb0ef6b39379df06b247506f00f2b8b68c86a2c974206135e67b404a4e01871cb7be4e063d87098786cd26d89c0c82bfe4fc6b1bdcf2772b03eec91ec80e0d946087e917b489915ca1867700d75b3f380d21b01b1a91b072de57d52ce9f5489315d4d1c813dc12b0caa120eb0f1e481618f171313e823bb076c87f3e222e64bc9655a96d29d13bff03344acb91a6417199eeeaf4e4811728d9786aeefa842362bb7dac8a202cb8c8d2b53ee6fdd84d2fef9d57464cfc232db1409bfee2977d389703c73af4a5ebda0b82d3a786ae8998a706d4c1219603918d1fed7a165a81114461b8b4896a7ccf625a61abb3b6db6b1e38482274a4ce3d8eb810892c958ce0065848a0939cad7d28e24cbba391124f01c36465f0b3956387cf1c084363d27d746a8b2de2cd896d72221f097f7553b4ed3cafc21b00b4e32ad0ae611bb531e48f5f37209088dd955c052e2012acd88ec3bc9ec78bfef1e373489b2ee7ce5be398c1074191c901ef35dcd454581300719961c82a36d477b363692e91f5c64a80675f32e7828176a42fdc3cb2129ca9ed77cc1b28d2dc8f6b1a8bfc66ec07087ebdceeb8b43144def959bb5a866cce55623a22f78ed2639f678a542b4bad3c2c8ece3fb99c2da62e3b0979dfee53df433440b9e34c7f38964c5d8d6eafbbb36bd8e3a62ebada16bb92aafdac54f1d92083036713b3b3ae2be3de5a8ee15296286cdb30aa71e29cc5f40a8e257d0ae98476dd39fe30826eeb820b1d2f9f5d88c0beeef91702ba7445c10a9539a84c4eb8ace979914889578f376c838c2f2569e285ed7191c52436b4813bf1c0e8b4ab86aaabce312709b0db6d2d8ba820489c42a88162e58ff99f672285a366bfbbd028e467ec593abfd6c4a4f31f4c935276acb119ab8ff163cd86fa8ceeacab3af85ce059f04ea55b7cc63544c8c30ea3c7d23fa170606442e27a19ed3aea20845e0894ae3b15de577eb3b054117595aa805513f83da2e036ada02a2068a110bba147a47950501371ff34fce4f86db6e9e0bc9519b9504d05b53c3c4660f4247da56af2a014c94a8462be7375828fef527ce8fa05d67be9762b872b9d7e5e292882a8527f8e14aadb87bcdfe623a5e0a9d49d1f68c94089a531fd39ba2e0f7c138d2ace54f418352f2beeb771708ea62300e943830cbe02bf88793c2f3a785de750da7c45f1dc4f9a7e4a76e459cce2e646680491387f8648da67f9e5af1d9cd5d274734878f90253de4360160013b1291cdf58d44864f9c427eeef24b4872242055191ca653e596507f4a79fb111bd362b6e883984df8bcbdcb79a29e66c3478464c6eca11471212fd4c4c253d92b4757a1426624bd38e8953f48e20f1d63e364bace7fe3c8d98c5ac05bedc4830b1f4383beaac4b4788ed88874e5bfcb56252ca1365bd81ea1910a13561951df263cce7b7b6f98c8b024862f5bf9b16a882b5fe7fd4771f97980a98fcc4a206ca659f4dbbf9a81054be0133fd99a4e22a48a11ce7c6ba3fc206b55c018e2fcfcbcf2847ca684a9c5a76fe9c0c543e273e0dc6e47003de7290ab662985be3d2e7f97aa164b07ff894b879e306308f1cf272d531853fc2bc8c75d2d5e645ca34c6802f45c0747a9f2563cbd4c52cda9289b36b2dd7847621f7bc80e9988c62d9c54802b926e94191549e7dfeff3bb63b59304fc8d9a3211bceec628eccb2001b89c5621f31fca0053e7b0b9bbf9159f31a34fc7bf416ad35e6f9d7e5b2138277979bf1e8607cb7f6618c4358a1cbb8fa1b81765328deb6fb6f2610c54256ae115e427f5e568567a3d85c3cd52edd1c75c542e6732ef93a7ef4670b39bbb4ef2dc0b50f1b57eda50f97e9f726093dd7ecb4771190e6962dd361e0ba00f6c1dab73799ff90246dcf82c34e2e55e39c2dca6456f2731554499427bcce0c8a96a9bc856ed180227ce1061a1bccdd4cb6b5e1646e797b7323a65d6307d204be8fa1eff2c19b82cd1a9bea60fb0c304cf620e32288e0180bb9e6501d4c16c14a0a5625206e8b8281051743edafbf33c911e7ea4285d151e792eb92940b99d4edc2ddd966596f4090096666377e2cbdc7cc55f087c30a3f12f903cb9b647dffcbc65ba9c94ecdcfa7760d707f904b1b727e4b584cc41890e38e86aa0579ecb8a31db0d674d4911889e612be81f5748ff31b49638a1a33059f4f945f21642fa9cf97bfc8ce2107550ed56b753b3278cc22d497bc74e148f462108a1f47d49d32196a85881897619681c23cfbbe97157cfc85f5ed9e3dcfc666e14da474998ce65a810c459e58da3f43da507c18cf27baed9b9ae7b5aaf27a89e836aaf9babf09f3b781d077ef0288c0579866424d6899ee15737ec8176221308fc77334e603190657cb1fd911b7fcb92349ed29a19d9b6ccc13eb1f140960741dd3445e487b42918d75cdf2f4d3fad9637288c3cd2e3a05364c48a88eb4f1a21cf1e66725dae84cc74e9862caa6379bf670722f228b62103a3417e9e9cb220a1b5226e6bd47215f0dc2e2334bd63a7f15b82aee4192f5fad93cbc8d66fe5418ab22550e56d838dedad832707265df9497cef3244f2c4671bb19fe7d26037dcab7aac8c26f9d2c230fd1b03fc94fd54e8e3655f2688e9e59dd508a864a50a76a884059af89192eece75eac99e62920aa36329ad2ef3bbb9e01dd7091ecfb6f9e0df8e475f57c274f2d061785042397a478fe511442b14cca9596a46ef8cf86c551b0cbea96712f7cf97008e9ccbe67036f28cf5ce2c8766f24067e2c25f833a826c273619e631750c64d38edbfa08e69b118a93c3a58526599da3b009197d0756a1cc5089025e0b6aa0986ead5cc61be5acc3cd46a356cd1e27c79bec10149137e0bae572a8642def1ae75eb3ed306e405f92588ddd34602b921bfe30b49a0b9c6429f89fdee2638764ba9bc6177fbbd3a86c9c586e9d3199749f32ca2526be454000d2bc66a2c4d6a856e8d7c848d87055cced70c1bfc872ed6e2bfcfa654900a4cf2b5dc82265f7970312089ac627ab203a0ca44811e55dfbbbbe31ec298c9da644a3e4c3b9bdb6948048b4680f0c4e77ced60b7f68a3cffdc94496ec2898afc67972e6215459eab711e888ac903d197f6291820800497f9cbe4e436e90cea2a1f5e14c96893037c0359563cd33bda85d00b3d18cf45159208075484921c9a4caca87c809328cb892ab3299b748bd456670e1060d2794ad4cbbed861ee45b61c7a82e043795aca42e6cd2bb207bba268b2f1f97783c2067a9dace0bd0029e2ae727da1328bb46e35fe6f0c1ccde79ce9a738d07ba5b381d2bcda1d062affb7e8fd2e16cb1874103090022278a1ff66eab0a82972f5d55474de332ffec00f874ab3afa68afb0e150843141a335345176434cfc28160254644df09d992143762a1fb1cf9c4c6a7e132fdd8398559d1ac6c657af2be3094e29ad48ecdab82697e7c18182e84859a9d9af9a32ec82710d6130e3c2e83c586e892505c053e2f2be17f28452d84b8f7c45838706e86da4107a205ee9e80585482cac8eea7204d155feec8cf019bb6ff8a40945d28e685f7e0335e29c50385ca5021cd248466d856ea04e6e24620caa90c63392cc551ff9ae6eb1ace2d15c3a9453d23c3183e18303101252fa425662153f7d3c3f77f96e684346d7f366dcc264ee0eaf32c9a3c788ced136c5a929643265092ac5d3dd46968cc0c23e26bed69cd58a6bff824f2173e8cf4d1df735e24afc9ff96af99ff0924973b66bd86980fe7966198dd3fd58bfffb889b8c15108aead8d1d2815adc7d276c6b36d3de2ea999b039d3ae114366e0efc18c57b1ca6feba6fbd694d5cfcf055e4947b1f0d43ba9de35268ae525ce74948f69a2cb3182ede1bfbeb5945be00b3427907c9056be593cba2f405c00fc537c5f7b168c22a537ae03c62e65a7e4261059cc15a4919ef9d3dbed4c32a9bde62d030f91a5a370cee0d8d1c7b4a6e21a7b22fa4d4d9b3c3cc28445609cdff4852cd4f61f9f8cadf6ed10e5565e3f3509513bde2a76d76d647aa67e767c1e16e996eb050e9069da8735adade047ba0d4748ca7d3bf186f93e75afc580f1daace4b42c96ffa0f0aa0e972cf64874b0ef830cf0a5fc9fe41dedd418aa9d03a9d5780eb3061fe4f684bf770932936a99314028a3634d51c6097fc727a1e16e97c12fe6ed355956320239a436f8b2141a7f9336aa8af349da635eb2ed83afce7137cc305409aa1b3f7416b80c81ec7735594317f73330a906c38870290aa1ab7e10486425eb78484e5b52f5e42dc5e88a92291f8337641b24359a2deb58ff2dbdb922b81c4805ca9cee78b591fc839cdfd3ea7e11b7c48c49baa7a7c371cb769cb5ffb05511e33f5198aadeff1642ba4b16fd59ea951fce22c7e9e1d6bc56e1a4199511e23b87d8a7776e0690448b4d852bfe47b6f8af5d58c4369261866baf910fea8aba40e48263df542c21748ebced365a3a1fcc02c6e28d4dd31f7e05e2e753e5c5c49d160754d569365a38dea3382f4200c13feb4440f5efe58a3a9a402db92ba0a25221d8609577997a48c139bd60f2e2404687ace73fcd0a13b1f1d080a54eb6df65bab0f00d19d7ddfb129bc5eb4814191654b0ffa33cbf51c08e417c914a95db5f274db65f9cbb68d2b3a37942ace9c1ab521056cfc7e6afa5a708f48b552d80cd29d4e263b5854aee893455ad411d68443c54ce6385ab2287ae3962b4fd5f6dc0fbc07e220062d795110974c7738f4ce4c6080474431f71ec695386c297c3c34e5c60325c53e4c4b17d7e5f01c9423fd3f9b0a80a82e7eb409d880a7efdf5210eac321703e368bc5068ee741e0a8c641c92dd39a13d7e9f554145cd479c18b9a019c543be32870a25137f6db5b8b0980d771c08ac89d1d0de4cf2c38ed34f9623ded3a367d8002e05388b0ab3d56d53b93eb22b0dfb4b03f20c3a4a58a35f60bd89c7568d0ed62b6c69036cd6f720e279c24ff09fe28fde8f0d4f17bfaabfd11760df3ef3166ad9f6026b2033b28d2c67c33575ad576f091592f7007176c028dec49aa30f6de1c0e6a95290b04a79fde19e78bb7712eb76c79d5f2a2f1f9ca043b833ca8cc823dfa25d72018bc096f50c135620b41642b14e8cf33a4f388cc77c633c2fc8ef2b3e3418c50fd1227de44f13cf4d0b2e5c66353ac5bf3b0e3f2f41b5b19c575a8f59cbfe4725e736a240d4acf7ff983219d86ebd3de8f03446864f0e15b07ea3674e38223f2b056f93dc0afbae996e294fdacbad1d65806658a2e9fd5e84b9cc071372cf216ab730e7c4252cb1670f2d81b786fd0d4f90b18064520edd1b355027561270904f5a6ba0679c95359df62799acb96143a0dbf794a954a14cd656036d30d7faf59ba57efec2abd88a890d5f2eabe74af6faadbc8daabcdcc4b733c9838624f4b64b1d71f35ecf16634237cc22b9726db12c68439949dba64185151523d57dfe0f6a9f76ba414c36c202c748a19322dab81c03fe03ca07b3e1c3fc3cb5230efb05dedac648e5aa36c0ca0788c632a4a60b9a864b505a189e29781a9c850524ba092cd2c3927034959160b3e17e6a0826c2cb8f8617a9eb1ade1a5585a0e4b13b31195f70df1c78c187af7bec622c43b1cadcd0638e76e32e4799c905cf4ccc7f2817ac36a4bcc9a1fba584e89cddabff46da8ea0c6b5637eee5e447758902fe73b62b8fea2cec027541fe8f920cb7e0f0ca22401085a55a92a57c9e273ebb7231ec5d8944465b7f49a1b3133c2055b9e062d7e9fda5da6b7098d0e33933ee8b84b083360696f4d0e5182e26feed6c63186779e899ceac7956c90fd36f292670c2e2d45692a9de5a275f2eefe1a8ea9afb0c71bb0bcc82ea1650f367413e07e0660b75cb0443026def0ad3f1d2c9ece86a0189d24f569d3442c238cc914f49b42b6701ed428857ccdd482304061e16667effe62a81ef0b3a537a884e105f4d1cfec460108e906965426b114309061858baf71bc8a778c515f5299d974aaa455811c1cd25a7f8de6312030adf2b831a38f158191d777743050b9cdfb5c528f02cf59a52f4d26db24132262b5853cbd1cdb542adad58c725a7697aa8b76b121d6451fbd0db8bd0acbb9bd3a59694070b198702624d655cadcdb7050e053e11a738865e1320376469b2f9416b8fa08c4053f03c812513cc147934e8d85bff6f29fdf8aefbbab3b0b150bf508689e548921a93ebad855819d31c4bd64b80ed56dc45a6c92981a9d9202c4712ff2ba01c2f1bea6b9c2481a57b2c7f34eed432935708052410bcb24baed17d7af5183897ac5ad482dabf1f686e854a9684a01b728d68e93202dc161e4a47e3e61779119dbd1b070dd86da8a5a73bd7ead284b610f4c4c0d8f695018ddbbae29c5c9505617ad6920e3d9fdb372f939fbfe981a9976cb67d8adff3155bf0832dae19e3810fbd5c8c7513dc5589ea346792adbbf1bd97269d7b982eb5c39280a57c3c3d675912a86020be05757529e0f9258e9142b99033303a15b85b14ff964d2e4faa98ccb6f295ca20239a0999cedd950ec7fa9f5651097d74491a8ed1e61618876ccfa19cda25c357b3696f950f2ffc4c2c5c3e420587e13cd804b277fe2370f606e6ba54f735fa234a70d70f584a2667eac12aae49ba53eda4b7c0dc676dab8562018306765f796a9f98441c80e6be3e66d5e11026911a32267985ae249f8cbe6ed40b267d5e0846e9270c789b74203f7f96d72f198dc0db20a140b882adf0f18489d72098ac4aaa7fab3cfff31b20c5d098c05cb31806869c8c72aad9ebba9e1bf0fb3e81c4d048e5ea2677198be43fcffab9bcdd606127972eabc0d0817e5b190260904f35023f05b201e2d59d5cf6a9f5880dac80d14ec51f1a9a7d8452be6fa322142c512aab020c1e1043399957289d626f976b5291dadd00b3fd7b771566e01faeab8da5c43d9f8a0cc41a29992922447d39ee3703b9e5606db735cb3ca847c9e27086a87336fbebbdd1a83517de4c33a36fd7888c9399a96472c8d9d7dccc4018b3a0bc19d97362795f9a4e09bf071bc948e5cd02105b96991003075a16287e988ed40f0b23142ddd4fbcc9e84323ea9845f7e7aecbc5cd88df7035dda5d9dc1f72c55cd39f509d3806e5c6e89c2a50440ed331eab6bc39951b34992c1083ecb955b4b090c71e13a032a9e582bb89e4c2616908932d0439eba153ae962ec4d5981abf6ac96591b47c8feb29ea15cbd1d389a989e271488c6e6f4fccebeaa94b2c026373a5c27a9fcc131efed572ddd429c2b7b2487d2f8d9b8df115b4aa9e3c1b9479f977105a0e5e408bbae6aaef78e1c0f2497226e123458f25c866e8b77f3ba2104d5ff0ffd9ca96748752c0d134ba64cd8291ab89e1db0ba4972087d1e7e7119ba65c5e2423e8e7baf73a6927295cd6fb56368e60cacf02cb6c6e64ceddd732d80839477cabc9378446d11e672ca46d838f757da614e0aa897914f578d75b8ce5b0bd154e107be6538135c1fbcf26c9a30b807b77ae4360a8cbf7b406d221d49e74bf70b0faa99f9d6e2aaa9b33dbdefb7ddebc79b5a70d5c838167f5e0fe1bbd4ea12081c43af86f395d1f557c25b3721104cb78548f5631aeac1b6693828a2a73d44acb3d512f856f6dbfcef1b8c86ef1cc3148b00ca2ce58591e2e3e17bebe62f43c2bb62d8dd406d889238fb3bc9418dc32b60d035185b958e4f0ebc46a44917d938bbb599894df8cb87f96f747251c50d2a9ff242e456863567cb8b592ea0a46332ea96f33a5345499d2c82ebbce6c539963ad53f998fbef74932f868097c765363c5d0065c0897dd4520ad767be422341658e6400e1661b8390b8c8b2bd8b0afc03e98f9cd84bc173940f28f794d44bc854d0e9c7d4e5f51d47e11bee943638f7ee5ef7345f0d5b8d56d84d36b6591e65cba5a6e29d8a20e1e822d62705275a25e9f8f22b7efd8375412808570cfb79966f7231410159a305cc987bacb5047aa4ecdb338d4a3c73fc954bf0b20ccda10c75623b4b043356bbf4bdb6f808433fb56f5f7e9964a552ff81d9d702df9185c52ee85b2df5c6e6adea1020db474a200d94b0aeeded54398f5d364e1963481e032e6043bab27ca4700c97284e5ff72b61db696051e091ec399f73f30668541d3df8571be4f35dd1337159ea735400d2f3420416e14f01129c30dae54012c95c26379f06e3cb7c3544a5c68b03f8095112040e86f9dc097f8687ef6e70a3cb90bf30855c12761a78171a32cba81c25a155820b3d28b7941957d538fa7d261f962d23caaf433c9e288ded9d346559dca88940b9d6296d08714a10127f555b5b8508d27fd8423f80d49186a23b7776deacdedb34c715441a9c2a3a4da59d0bc34af7cd0e8b69d1b441925acb9d6222194d84aaf04554a4fb89cd85925fcdb00a32f9d783910838c3e408582254eb51d7bb41fa364e6054dc6d537a2402c22d433d5b5333ade519b757bfdab2531eb014cff7bb983024b3ab05451f600dc9b307777ce0fe5ae9ad4537a31946371a64610696939a60a508b73330ff6b42162cc9a41f6443bd484afac630eadec6847005d399a5c71620aeb184148de30b60ec8fa325a2780e762d8134d059b44519542bac767bc09f48a4a3381222efb79ac98889fabd5ee42578966c615be29cc36e91e0321f0f9ae6acfa9a945a682eb370f9eb0d6ddc78408a3d44ea8e10c5ebac652eda83618ff467303a4dd0b61b4af9fecde085241106677fbda381dccee2e7c871a6545e35e4e66b3116d59f11db5495b7c0708f98e7c783052d12f784a4c7b7e367c96f7c3dc86f5c16f47eb95bcc4cf2bd6fc05685a3dee1354e0caa02bf5207c64d04f2c2880a23ccd56492dced11163ad16ab4e048f726d962c7c0590b78440c220fc1afd61033d1bc7791bd6d431f140bffab2796f00254b51d3f1be3af76696a4dd118bc31432b022be3b85171e735610704dc94ce5f5bcf4a7c1e861cee8bc37bc1c41c3d9bd854aa889c1575cdeab8c9f9835d2540859fe863421b06c53bb45be46ba755735eb2bd7a8a6832ff92d9fa65469096b7e09e5d5efe7f31c4adf75e321ba959126088a705e16c5cbdf7e5aee03bcbd28ee5f7e9ef940ab2702ad4ca443398769cd2e855816d93e9d81cc322b6c86530adf8f98243f5da2cac59d1c42c581ff909cfec9d25c4e1d1022f7ab401b8785ed4d39e98511d38e896f2ee0a3c35be4d9bc56920c65addcbad90736d5de56ba562b031b6ca366a9a4f43dd7d5de49340d8618e20984d5e64512f7b1ef49ede3cadb0504488d628860d8bb0163bdd5091b09baa993b6aeeaed0dc358ed33351bdfb7054fa44c80bc30b5a6d1c887ec0be688a8b80f171a8f085ed6fe7b37b169d38c7d21ddbf60f2c4b95aae366a4bdd24f97aa99e6b7263856bbeed093430730a1a7988f1aa949a6e253023a418fc5cd486f43177969c2ffff131ce49cd91f173953fb63236355a53cf69d30945e1c97d10d7803924a8059480675cfeea9a340c27ce5a4c6f0cc666a1738d322a531b24a78593e0c2ffb664fabbe03e35da17e76c22a180c54d2a341771172b05cc20041377ad0ac3298f4e18a9a6ca9e9c20d9f4549bf98cde6017c51b8fd097a43a734f785b8d9c18762ce50becced8f1b5b5c48327c17c2ef8a1cff1765ea4e0bd1008bfacac670bdcae41bb02b8d9c0a445d58c974731a02c9070b4ca26760b552e22cc8bd864fe10a45f6e9e435eec618d9498a560ac8176df7336b5cf5b24f0cb331e618674abe95c47f3880f6587bcb660747f45d094ae4ebd7ac18b239b15c406b469989d1ad4b355b5364db119f2f510bdf279e6270bcec122a1c2a35ca6cd1a5f6bc789c2bd1eb893f51749f4560e6ad9036a19be772b0a2de28934ef66c821e6b0ae06396d1ef407b028f99504afadc47934fb470996b5032e1e349fdf6181f7776d87733150609c7e47cf1f40bc08a9285efeeb9069f4daeb4683bb6580d6eb3a4ca1970861a9b281e89fd98abe204a0519fc5e8f118c5f602f08e25f0a6e5880778f5ba0234d9abdd680c68e1c8e3f4b61b0cc0ab957b5a4c92a5c1790cb711aadaff6d11421f7f2ac4d4959795fff3f723b5009ebc3c50e41588ba816253e00ac03a27baccc77ad2125d9958c92b85cfba0fcb13d52dee45a8165e4c2e6972a52b1a8d9f249dc02d9ecc5ba0e9efde80d477556a0189f76e59c01356b2c001f978308c1f4694cbc83c80c5adfe93e50f27e16e7ea4039f57e2234d7274a4112fd68a25ddb4ffee390a43c08605215bcf3f3ad93db87fda40e8f3bfbd047e1cca5f1fa559ef22cf19bb06a8b1aa85cbdb73bc39ac5bf3a4244e57c9efa5d64bbf3d58a76819e5e0c0fdf36442d301e0ee74f7089d24e6cb352285030667b5fd4826d9f46d173fb252667e002a5234bb6c30aca6dddacb862e4e2dc5312c45a3e5038cb289ce533d99c456abadf2d471dc8acd8bd9de9bfd8f8a10651090e84df1a59e6e8773a3755d6b6cfc34ff042d2915a20f50d24ba72f4756906cf64314162149fd9bd0fbac63bbf48a37b7f66152a9bb92ab815e64dac73666ed7853371ec559ae309d4ccfbe2a79e81e2e3cb6b35dcf921d98447c2a1344009bf62f8ca66282428334b023c4c7890cb819949c8b2edab9718cfb506f25647be16a37dd288427019670de68e2b8147a914120d13ba83d8cdeb693ad8b7fa16067523138b1b776a2a8a05c3eabed6db3fca32051a19b41e989555bf3ebe44e16f2670edf36a41177883f2b90528cee8ee1bd21c34c57d9c6a1daf0dc96cdfcbd3474c8894f240840ea3ea27c39d8431fca03f4521d73f672d85231cdac6765cc44c2fd94289b448abe4d25c770e58555f39b850f12d3e94d6fb74ade1303cf510f5c2518deb05961f6be6a17bf96b949fadf39cfbe421d10cc9f73e9a6f65616b7c65b272473cd8b3323890ccdb26a4f5ed988d3180758c54341547a6feab71825faaac515787e62ea328b7ac88b393236fc5d655112aae89b8ccc3266dcaa8236ad7553aadb9c3625cf192852c82c0b4bf8897e29f14e0a76a2f1925e803f835e269690b0bc7ee60521cd38085c6da97546844a8cc6b662399e23fea7b9d8b9f8b8c5b05074c43b8100bf19312f6f944b8dd616f014b88544f9e439dde5fa768f1a33bbdc7066a5ec67016f8964cc1e1bbd30e277c3588b796b311c3c71893add8c666995557d9268ed2534855499415062c5f6a2c8d2c0306819779f1189731023f0a42dbc465e9410f27c0d22fdb7f5f3b8666a91ad8576cfe3088e1b408a5670c76af317a62ba08d55154c88657026949d16b7d8832092d33679f81c566f0f1613fc03fc451d6ba2700a024988851fc1372b3a3e960c42ebffe615f2986163e2333810896252328de3ee0a6f41f7d534a19245c30ce14175256112641ce7f666d1891be0510694825c277a8ee85623812611f68b58389e93315f7847285c0ee0f434ad6cde3a45efdfbb41f1e6e3be98307a25ab411fd07bb29e63ea42d2ce00af69bdbca041623b782d4c3dd7bba132bf940e5cd07c2ffd8176d90c6f0c7dd1596bdc37fe8e9197cc7797fcbf667448b2bcdf285fdb5858b979373481d6e761bac258e9226a756c81c180c4c8f306c9547a8efc42a7d816a833d899fb23444bbb76e4b4d19ba0eeb0c06a6053358aa352414d75690680e1f178d99c4fd6878c7d1130c1f0ec5878700354664f1425dc510077c6ab0c8e6e67ddeadb545b24bc51e2fcc190696201535c7b316f0c59896ef4e0b16d7aec413b136c0f3872d6a7111a42c7206e46d6003fe0c8f6ff2846e200df4d0f25ee18aa63fdd034594db397d5fad04f935a607763a1c85df8cd4053bd53af6fcf3e245cf2b5fed5cc017bf789727cc1c95e2ff2f0aeb7503a2768799f8ba48f2f835d2e51a99c0fb1ef05b10357a6d06ed0b10a37a8a1d27ece215b3c800685bf806d20cdae30c96e4b697c8d1b5ae303ba753962cf50063fae44346da36616544ce7c3d197e66f51395b1f0f298f71cf014bafce144e6f04b969b5393171d8a79a61706701be854aa501cc56cd8d8032442881b80325990d14b19e88df3eec87d748398cb4eae8d82dcff6117838315813cd500c0fc28fb8697aeb799a4066ffe3db12820365953c1ebb4853fcb4d4a05940b4a075fe7691623be8766b4fe6faee9269b77ee9080dc6a4a237da331c3fdf76c3a23376e28b814a1692115534ec70a7d83b7607b738f3004c5d9e74dbadd068921e0d5563ac0e325c58e89e4938e47e272b8e8467a4e71d8be703f6203d3dacc11b7bb7f0f8cfe0a336b4176dae16097968831a44f0b80f130f37d581c3a77efe60bb08d48c26785271d3e30640bdf72a6f36249a75c2f2edab90fb8cd53dd839cb5b6668b167dbe6c01cb1f4461ee5d23aa656fca5ab6a0ba4ee6305bde386bf4ca64b567036e526ddcb3b3167104d6e5a1945244c3541086986e134474475e6ded7a6b4b2c85d14e3aeb404aba7c6cfc89abb49e351276e61155d693d2d768898c783887594b41dcc7017ef7387a48da6b235a2e9bdc838eb63f94c268006964db10166340b79940ee260a4a4301a1d5d3778cef0bfa181c90308b25d476949a7207bf42891147913b6ae3787b6b47f61a009972c23acdca0cf79def2844f27ed8ff32dac5f0ab28629ced4ed80d1914ac2151d8f0976bf689f1d0c12aecdda16938327249b599d0d87d714306278f455ea189de88f4726dbc63cecbd6ff85a75bfec63c1539dbbc65e09b22a3f2319e3ec39bfc48859493e0d1667ce1fd6e6ed4e5bbb94afcad551e00fb45160c1d3d63b9e38fa0fd3854dc2309c20956f0854f761d2bd6f23fd2a59f055d072285aba19b43183dfff8e4bcce4edb635eb6f4cb08c219433c37a3b46291c5b5592f8b42c3a084527223583ae66eb7fd0b404f7c0abfe9ec7a2cad32795b74b2a7f3940cef628ff05c3cff2ac3c8e67e4a611ef3b3f07efd332c536eec846dbed141e74005f82af787799d10df5f1ba6e0c195058a75f1eb9d37513ac70fcdcfc398a462a252fe7bc0456a29a05739c6e95b9adeaa2f526d87c166fce0655f7f6010e2e3e465f1b2ccbee3ae147bf7a40e0019fcfe477f098d34d1f64ad2c960fbd1e5110fabc9ab3b37712c07ba0f5dd2d3ac10e3a808c6a76c96563e0543073a9ab5daa9a0d6760fb7d51769a5ff257acc9503c58024993b399fd0f094dbb82e3bf545cc46ae82e1797215ccf358235135ff887bc3b39630e0a1d7e47656121e1b15bb0ca2f944896a599285fea19d4b30960cd5a856094e9adcb42187911d87b2d06e6a3c51807daf2f9e2344c646572e70e8f72a91e90214a00d3f077e9cb310fd912ea329b9201ce02e0de6166cf8794122b388ff6403eea99f561ba98a4c55a71b5ee7cfabe9bd1d38832cdb372eabe328ccc59a67a73c4f3ebe4b54172d368348d61d76d5e051b640bbfe7064fa352c4cab280d59c208775ae3021e9af47fa92997df4f623ccab45f776dfd0253d912e985bd1680c0cd649fc0123a44a68ba6dc10c9be12fcce53cb5228ad37b73128844ad301be32fe526e2d2d3a90fbced84681fd8ee94639c063f507850d1a265c4c207d2794957ddd42b66d66b2ec4c1f6e91a043b5f499abe38384c2c3587914c0401184a50c243c4ac4cca58b581fd8c86a5b73c61db0aea0ed3dcc36fc3d936e4fab5b2600404db799adf6e0a3f42e1f6eda3465c3f67b052c74b246975aad0f19abeeeb0510709d0f5177d99d8ebbd78e509bd7a315e22f238f3f5dae0cd16bd0333e0e444b2f5c1163fe04f64270c916f2420b156b9e5c96989875b6635cce74aae04d8797bbe5886d436d167ad8ec3f77ed33518bff0a8ebd6d4764c143fc0a3be6af9b13366ace6097734233a786a29f2ef1f8bc5702a1d1ba77365f08e9b657cd0112ceca31b5102d7d717e95a5efa928cdae783fa3ccca17f1dfc7fea3912f8737814d9baffeb6f1af7a02910dd1da582698efa72eec4199c5f95be5374c3b8cd57e097917546cf541cd783aea10fd73d63f82bdec69f5403c2ecdca764db500d9fdee6f00e6b4631d1f2eb4e25cde5228cf489a5d7848feebe0a544ecfd1ee9cf7fde20de78f20bdb3185c06811ceeeeed18cc8ddfcc03e0632bff56f62b96e13882cec5af4ed79550c73305d7b226ecfc24c956858870e331dca6412fb0b34560d22ecdc82529e56cd02a263e7b440106dbc326266ecc8a05eca225e1961b9f8397bbfbfed3107228acf8e7fa7604c7fc9c1aa935ce05829bb964127864ad1d5a7e9230d2a7ea8dd818caad4f08829415c77a1c2b27a09af425a1a635c192579689060bef891341b4d7e91a414916f9b41ace78edb74e612261764c27364c9f1968980d014a7040497ffc6e32064110c0862dd7f63abac66c41e9a079388e2b2e4605db5a85f91e95bfd030066eec93f2e51a46bfea24a3ca599b253e72259348f9779ebab3d7b3c9f79d5b1b8a098b99b6222a22600f134300225e3ea979e457021abc6582a232c090a8bf387ef4d3db335d485340db33114aa40f5fa8d814467e795b321f2d270e258757708d5274fae9c6f7c4039b7c77a34d3d7597012aa2d47f67f6cc4750273a17437c84e7e5ac91e5661b496f7d956171f513fee979fc58fbb71e1b6e0bdde36d7f7f5dd7f516875d7e32c59927a571f22e2e67b938d1587f2364b3fab3a39ff87d78904fed7c310447b2e5daa754aec2b9b40ced5d6efe47ff8dbbb9753b0f38c4745cf494bdf92cfda3c9fd7270471c47c0662a331bad6aa192beb8b235ba1d503324a20398051430f17c327823476e29e7df6e850247b776e6672197971ab59e7e006a717a0d880b0358dae5deb177298170e80cfe169d1f2005996026e4587b52a9878505965d4d02b69a680f0442be17d6f838f2728864ca08bc5b4e3ba01339e1ac1f0a06b179436e520f77d3fb8274ea6b3ffc0b50fa2295a0f2e9de7af2718a96a903611a3981a3147a15d202cd6f382ebf8ed012f9095f84918f3bf1a243be5594214b2129c69a62a19e554c93e9896a425de705648a2ff11cb24c51b249e74ba9f505cd6056e3c2552cd1a182b18b88b258b5be42192eab2b0e495db68927f5b40d55195414512ca936d054dc74a8525dfe68e2d28e4999f2f385b202452321c328488601325ea65b2737dff23abda82b1cfca576f5bd17a1a415aecce42416841672cb54f63aa0fa7cd3d30c8a25c05780044043ab9baafe884666c45b75ec4244c1c4fa19adc48e91ad69f0d49f233923e24ca39455f9a39cc6a360247c46addc06acb46322e2e2ca62b754168459f615c0881749e314064c3e4d71261aff7debbdc1af2a1f337619af333c3fe47d6ef427e5b98568598151b64b49f3ae125d05b6ec43306a18a22e03b039c3fa96aae198dd1c88811653f061034219a1f9bf612cef71bfd51d7e6d2e143484b630583cf2d5b2ef4739ad99823429c49b2c49f42df6ffb4d42cca0c71a77ad76308b91bccafad221aa5838b96a1b802be7c318c337256e925715ac30ed7476fb0f5176d0c59795c49b73f80bc56cff068f6a0715a0d019f294ec2905b5f24f5ac360e2c4f3283ed18d8bc480acc1fe21804736019a3dca05a43a2ff4a259bf8c54cdcb181caffcc3adb574eca742f2a712c3253cd86cd521564766d639ed8d618c17a42c7dffdc278bb44a6bd5c344aea24bf43abf86f19a1bfa05c3d04102047ba246b4475ef9bb9bc04c1c6623226012926fc7ea9de6138aaa4027130362bbf43791d71de97581b6e0002521f8be7c47d66009a841c685dd808c41820a76650e9dd8c69ad18e9496d20ad3df8f77dcaa4366ab7ce0927f7166676cf0c50a0ca336ab3cc96743f25d836e1f0e3e6022a85deb799cfa800d4a8678b605eea63ad4bd9362abf467330f1879cd2ffa2019327c125b74243cd38c5d3160bd8cf2668304ced2b56428d5138692dd574e367b3e58a1c620d9d927035c50f9e85388d3d7c91ffd4fc245deb6bb7912b295f10f44a842f5f51c646d9c14e702a8432bd2bc9e47095680988fa758add5fc8ad217c1ccaed6f8ef2571eafdc52cf5a09a2f60dab36d9a94a1557cf602de062714fcb78c8d7e6590235da2c26f7f1c3c7ee0b79e73d5616234602c01af9937cf86162be222202a8d68a61f22f6053c0725bcf9ec939ce274831c941f3f8308d41130a6d618e169a8156fdf6062d5c8fc0f2f1fca5a1ecb091a4df22b4937873f7605b56ff8c3fa89580603498ba1085683546973124dbc6b8ca26dbcd056d5f32cbb69ab23abe641b78bd3ba7a69971198d3daa2568fca1ce9868b3ba500a8197aaad88c62fded9a593e38cdc427e6c98731bae315abfdd03445b8903af2cade0f5b9a3855c5013d3aac417e72ddb8db2c0813f7b89ad2387bd5c658be2e9884dacd4c215d3dc99f69c89ff361c0a4dcf0b435482285b99b3e5d68ae6b6183becf761044cf991fcdccea284b3ed09761a3a1337177b5974250e3b5825f0e9260db640b75818b92f301df57fb70974f15f33d64cfe65b46b25bcdab856f0bdf5d4320e6bb0465e5c85473cac3ae67e11e831de227db1411b6ae7caa9ec5a815171db94ec01e058ebcec6bc32d02f433d8d6730e5c4fb0393a08c7f5f44167f9f8ad58754654a938fa9e59a89c75c482d48d540a2e347772f677173588e518de6ad1698ebb9693413c0e9784eebea1de36aab33d151a3966e898baf558c7cd2f0dbe1554d266fe3d6e029a83ac8ec1a958db1ed32291c0319eb038272156fee947c463842ffe32711f22da79cb642e1cc0068e3bf6f0e8e3507da79d9ce8f91d29e0c35e2652b558c577c95cfc0ca0c2668976a7c17a7401cfbc8c9161debe7393382d2885016222ce6cbec68c24bcfb4feb818f5e07ee0537b6411d49d307a2bce542ab717f0a3083243a74d74b807b6fffe52e72b355d98150c7c467a787f9fb9822b4550d9499bb60a9c944e569c8dfa96104a23b1460dd7fa1e8955d04dae8ff9994db55dea95e5a994cdb83c9bf68c64e52d8fab4eed613a05188123f39c9fc80a1fababe5db6375d25606b920f56e90ea198bc32ca553072ac788e5d21500ee0b313a92de7910a4ca407c4e0bc9df4553b64d537b365fb80095e33d82fac805ba81d815b30388012bbb563639e56bb7ab02e338e58d149d55db549c515e64115e0e1ebc2512aad0e7fce4ed0df7e2d0353e25720df8c54bbfed9edb8188f73d8c148a87619b69e4faa96528d8112c616bbf46f585ff0c06e2aee1f5793bf13eb34b626d98b589c9d1c245bc0d671355f430bf75e65c285588053b82372655753267683a45cf042e356de660d0618822489af9cb67312774f84b34212b8e28fb70839b2a979c0e36afd8e39628ca1191ff2135bf77ce382db209801d6f9fbb54050a0ecf57f42d1a65d023152b9228c8f25e8f1f66aa6e8b21e949cf8e016f410f6dab51d41c983a6e337ddae30ceeba88c3d37819984f587affb3a4cabc8c9f0f851054546f3bfeda2223e3c68eb0a40d67bf0de597a0fc5e72c0d64aab4a2ced6646a1c49ed281ecff9c8992e1d12ff786525ce6f4119043e68865cc3bafa8d16363b73b784e8c6451997bb20f82812272c1f3b940b79e51039c962f175696cc187202f340a57b90272609932e92a5f5f9585fdf50c4c6a1e6e0819c00a2ff4e4a790711604cd74a88a230b2d6ca2dfdf2e4c19b1d6901c0ba2de2bd3451c0d106d0b74e8b00897fd0f9d252b9284a12b9361875f81521fe053de2a5f0af03ddb42292ce959d1c16bf5f0ca1dd8664809be525685a71eb8898fdcfcad1084995d46cf188b75c2118125278e454d29a604715407223050025626b8169cf46224b4721ab2f499681570c25d7abc094f27eda7646825e9f8437b779ff11c94a1b880ddd3d5803f1a2f8ef6d2c8edf47e5c541d76d0f3f173cb90c8161cb4bd158f670380323d53366fd754281318dce6df13dfd78ee5f5ea53112e41a7fc2e449e92245b236d99b23f67c98119d0d87a32c4f24a93c73658aedf032ea024e39ff02fb1d4a708e023ad011a62c67e074bf2460a78d05b67cfd3bdf52cbb6cb1f4ecedc55b213701aab48bf666b4db8d69f83c48b79ed4551795d4976a55aa3b174d83b88e4adab569c19099461c7af11a828d145c715b66ded22f8f5777c72c342829b41f6b03387e6fbcf8b0bb3cbe4a86e500f7848edd1389404a9c9042c758071c66002479b58cbd6485f6f7d97c7ebd33bd3fc9fcfa2fff59499b3cabc30e741fbaa64f36926311fc7c96395ef9c0af291c992daae3741e34f7c37c297f25d2f5a67c5ae97a4fd79ec91640a9d93f51c02761a3915c72466c11387cf579029fe80acd277547100f8a72c7f7ef839553b1457f9d1d5556f701a1851edd2513624598bf0f70ad97cca09c532d3755f956fc6be290af41d450d8827751c2043ab3ded135c3a5c2fb8de71a4255dd27d0936565e1fd1c46adb339803e581a1751bd86179bea934f474b0a8fc77f102a576af225afd62d3023cb4ff7740c6e9a1b8c98c2f924ebf11150d6198c7b530463836e2f55ab1d42e0e2ac13bf5fdd1741467152e7a4150f0a42be9b461c00506dd2ea05e6df1ecd1db5c296093f98c22b2df1a81909ac96da3257854f94c05d6ad636b4d955d49b13cc6a30a9566426e4ddff56b736fe94163fdc378dd2144c21ec6c60c65dd82cfa286167dc1c1b2644d702f9b4eb8d951407abf55be0d06d006266f0e67a36bd2922c61172f62b4a1bbb68a3d17790d5e341c562534d9a00a84243be217eef2220519e5d963f155f1e19225f048b7246c5c552950bd16f33a578e65c81c2787777f850690881ef63bcd326b66c505260d2a41bb6436d1f7d1703776c51e1399217812a6c3a20e3c83258ec4f181d82c4bb670e310c85cc423a70e07e510810532c8dda6e1e67aefd7af4f29d2fd209b0c903be75d68f6fce0cb8500cb038cbbcaaa6f593a1d62250eb8e38985bb2213e88e4e1478c49539592debc77bf19b1df6ebe73f01755a41aa5e4c58976d2b97ac944d09f108398ce657a592397b6fa933c8831f41af0ae422a3d20edd97df344e71d0a1bcc00b15996592495127252042d3f6e629c974e07b432d758dbdea7016f27b1fc2627e6f40e045aabe0b85a0853854eda2f6ea51f25c8fc7b4afcdf1da1bc0bbe128fd3c3fac700e1947d274fa0e05aefcc086a29b186a22a02a559616e00022f05ffe725e5515ca2ec56c15955cefed18b3e656793c6657ade320811dd43a52607afe6dc8d8f79b1ba2ca64586850a881ef7f4cf6e97dfeea92693e1ff85a5c3b8306883abc1a89a2abc44677e4832b508bd896b31f634b6d37ed5b9e8dfd93c6dce5853162efa384ee082b40c948ef3d7b62903951f87f500535b4541d2ba41c0b6753c15d9c64a277838ff02931abcde10ee1e97d78225cbaee95673b5e7ea46d4d44ac70929169ff7b2ff71fb37df33cf8754826fd37e3ddef61a8b00a33a3ec35c5de322811d1e2d312f6ce2288df875b3e5622da976e35e2b1a3db6522d59f1482c4886f2e3b5896a72592296ee26f4c9ae00793b4b7a70e70bba0a005a1096a99f16cfe1c10e46059425a70d4d6bc33465b8db41a097d0be783a40d92215dce27550ab7bc98b121f8fd3527dcbc93def25ce71792bd784f52c6ccbb275ca462a3a35032fbb569dc8a93f34b9ae12c00d5413e5237161b7087b2b0c7f1ce5180d8bd7e9300a461d865f1a79fb35674e33c7f9698690dd91254e324adb9d9543ecb0a407f4f0ce3cd11b66db5e0351161c4a6e81692020b3ae0ca73083addd2f7884d8ccb795753494c4014a63142e58146914739a1b2954bb4ab5b6db2cf3853ba517bff93e6da0b2140a336d4af3f77e90bd8c6bdd4271964c9a3e67bbd2f00f00aaa2fc975aa17fc61b26458387334f7b35352f2e54543d59cfb753d763bea4a50f1547056a24438ec07b964139c390f1bdc9c25fb7ade3dc3bbcec8dd026fff0e96b25092cc3bbe4904e72e510f7dfd6d30eff7928016f5b99f325bcf2f7f5fd725027b8e98798a1d459cb74013aee8817b647779c8cfb32738313dff85bb46ffd9c9e3d6307fd65ac40fbf339c2038e721c009113f7562e6cf57174a4743b87367722702aad05d70d583d4e191c7793d4ec149cb80583e7b3c81debc38edd89247f0e760bcc3aa81c4d31ce86ab37bc21c56e75df4d38fad5d69923cac3c3771b30017a35001f76aae85c26b135463f2c54817eb45a60064dcf8b80a5f96612223e5e6f15b5a870e7bfa50976033956d3a8c029af05998283503d873853183381cfcde6142dbdd58dd9da53f432b97ba193279719d1b75e2c901d10164e7c7177efb8f2ae3dbb3b122e29c20a5d05fa830db1403fec3f761d183e0763fc0a1a4b7ccf1b8d0ef2aba270a73bc5c96dc9758fdfb61429edd215d8d6bcff038d74342084659e8e288dfebdcda9fa0cd8be3728386d6a932ebf19b0bec55a4ea45ada9990625afe145e71a5f5609d0a3f0a70e6c396fc89a7a84ea2f56b8f9e441e5bb66c59a2e2e43f7a7fe11880103005cbde8e12f231acd2800e1eafb19534c01be4d978f2efb850ea2c357591e94c51f7ae2b689cddc9d8bcb4fdd469078f76d732581cd50124d68328f81dd08cc84697df2ed48a873d01a7bffd8941e34683a9eab320cafeb237644c17687950f0b281f0b06442d37a5f7ac2ad9144619c5a0ba17248149d5ec9c2cbe28d3458a0e6eb2bcf252d1da7c6d9693e07d792a81901d867b01e591866cea88d773c4bc91457962b5e92031e8cdc99072ee3f2d64ceec023546c9245dab35db013ca3df2005b726bdba97aee1901d702d2c0126606cdb17ea243b03f1e1787c83f411fb4fda7d8b64e1cee5a51ef224c38780bec44c13813228863d060891db440e2ec3d3bdad53bb9822a57bd34e9a89f42edcea9427fc1257497bbe1c53238cb015fce65f858a9e8b6c912956433fd506a01c97f56db2b912467339cbf367d9c09c53d94b7feb70307a5688e451fd33fec546d11940239ad287a62c1c97f8fa2c34a7486de6e9d269e606d80f77cdb3a7dac9c4fed4f950c887ee4026530deb4b1eff0336292990fb47be6d53a8e64acd4b40fc875f22f80f01249ad7b9cbedc730f43aa15626cdb5571cecf431be6ea5efcd1eba1a8ba1bfe57969216ffe72d7f78923b076fdad1d95dd597c3747b19b905c2a5b8e02c4acf8bc4c4d4a8f52ea7b417fde48e2e42504ddc2211866198988c154171b442f256874020b0cee9d13b55a0950248b36f83cf7ae39bcd790500e9d29ff73af9aa1eb16aa6d8c7a6fcbdca0e5cdab13c8e58ae7a4c12edcbcce35655c1d01916006bfd16a8b0d875a16c8ed7c523809dcea3ab5b23e6850049a0cacd985912a0c6f3df0ec033a081672c2a8525d9d72f7bc1fbcfa21842e673e3e4be33da866081a2a78d9d52dc5ce38bf935b9c65e502486ca3c6d783cf026ec8a7f30679768d50899c59e0d81785fe65419097dafe1dc57783e4fbb76b4eb40a2bd840b84890e81405a3b580daf34e735f695c0fcc686826523d21daf6b5c4071f693f476dbb32ae1e63e0fa0bcb2ef4aa7d7d0386a2f19126d9e72b274142d30ff959ab6392c359a73d38b8ec09821dd988b2086387cf61054aecb3ad13097687f4d1f85c2722ad8045c9d25be1d10e34b5359102327aecc41502786a86045db710e5d9f5adb2bec0c1ff4cc1e895918d7a2c4ad1f8b816554f9ca13c385ffc6a614606326e7522ff4c046fc2e5babf864ff73d2a540a9ffe0e7356211e5dc94412a44231429a8ec9a8ebc509c05f30ab08dc26f33ca85b1e995d51a23e7f720399eb00e513a6268cd976698fd33bdff8df00954ca5089e1adfbe5d3af68a910da8a6c6ad0be5ebfd299d1d84aa405c46077a47f6e70ec4b18a22774119bade9446cc582ca790706e2b9fa2c5e8ff9cfa49c96adaa1480184e85554fc574d4e7eb06c2e238721502a90f31d679a16ea765d479ff09652e6125c78445eeb11fe1159e5bdf5b27e416c9ffad02c08210b8c6aa82559ec1fc49a831d88ad36470e25f7a377335d546805566ee9bbaef867f7b32bc5c7dcfa053958931405c16269139c09abc0dc911c4569116e6d461162a4fc3d2c63f95fae1e0b0cab0997651c86596922cefc5c9564a0bebd8de477da8a008087082a705082e99e0db3b9d5c5a7c9c8a9b2a792bcc9f3528e28dce0f92de5f2a716765138b5b06daec19da4a5a69b1cb04d0fe7c903db34230f73854061087a93c134560b7f4209467ad15f2d1eb099d9f3976db13f9a2dabb19c9a1274e9b22ef2e305610bed8be1994c1cf541797016a80a6f68423aa6b05543884b64867fdec67f00d1f2d17735512595b71d5bc4bfe04b3ecb4f9ce03e4ecbfe5cbbd01f5bfedabe1a1eec16c948c71f89c5e5801bae9df378231230bd188b141ae05bca5e8f77122285d8d92660b5bead8c416cad19566e034733e66d4b59f614488607a013ed742b50f9fb579c050ebf86a1b62eb335a648add887d93631667b645c192217ea2085f4a00b39b7a39492688f6ca3b339c07cc7e55f30c66e323644c967de7f98897fa88e060d331f8a9f4a8eb34f5c8e07d2edbcc123af6ee027644acdff4f3fa66d4f8a7f10f7f4cd91f2c885a0569c320e66ca741262fa403f4e66262ed3700751ffdd9b679224342d4c68948c250eb23cf20b8fe0b92e9897c7f7b833c90244840adc76d227c36f635fd14cc28fe3f7945d54637ae83a9046b723720ff51749258531280ae135f63b4af3b01bdb52d57cce13afd73c9eaac7cb4c6d56ece888780edfde19311f41c9b89d3bbf2fcf992718c15e8c31079dfc74f069116e1a437ebae9378b6c4db563a919cc4401f28416d93bcaabb6a1dd328df8ee7e866e181cb7d94317d1fecf6f39db724a7aded4d5aa714a8a7ca66ad1c1813140abe696f2f753b37f638bb5d74d96cf97df8b6ff88ec6b908d880238623e0eb0c050c8093063d0e943c8ff486045428ad798bb95587ab451b4e0a4b89dabc284890443fec34b0a8957ae8171cb35629b9de8a27439e08ee4527281adab4c880dbcc647a03be441b7f16c9ac6ddcf5136d7883893f59c24c076c3537044246b858609e91ced177440fca945692790f76231d9301921a4d2fec1bbf70111c9199a49416af1df8314cf93adc1c845c8f18afa84fd6121e0a37dd826928057e2231e8568dcf656fcaf7883e8bf82a6193d813df4b1d50cad9b803233490af4af8854987aca94f0085f4c876b25e966fc2a688ed7f749c25bd0a592f88c0e698195af91f8f5ecb461084d666d5b4f893ca8ef68a113ddfab055318cebef4f703d141d2b692312d2767381d7c72f81fb78d3a5b408f97cc564f7fb5d6a8f189cddc939d9d5f69bf6e92a043179450534a5e35321896f8ccfa3c38ee5350c6346ef44068548e02933122f3d1323150d7e8a5ea192e246581a8e653595ee12fa4114fcf6205518a70b7a78af9d8c7d3466439f77bf969b4e41ba4f1127a074d07f82bc79cb90ac61e9614a043e1fe4721cbfacdf7e6c2b2a41afb6773e35cf132183684a9a139c466f3a553ed569e5df09426054f9f0b983c46a5b2448ffc5bb3cf405317bfa03d54929a93ec29d952d4be4dbc21af1847b56db250bb130ca97f5c71c03d0e75b9af48c78055c1051fa3a0f51b32e01c96c80688fd2fa61731d5c8165028d7ec249976faa5889bc1c5cb904175485f855ddc368dd404c0f6879fdbcc7f2a9ea59c08c163dba6ec19647685711615d72331b96a92b26db19d6a4efa6a881a757b4885e7778d89ee076b4a66f6621144c553affeb468df4447b81a08189d8c37550afffbdf0e1d4fe9ea1ae0786f5c92b60644263573d77b73d3eac21f6743afc25fad9c7586703a7bb5adcb07f2f3ff57dac01395bd64b7f54868571c39f942242d5d0a624b56d8974a1cf4da92faa5542d9a30a7112c50c003dc8ee9d1da1267486b522fcce94f42c9cc99595ffac3b9fd65e66f2f5d9b2d2c7a52ae8f222c9097ac836fd76fc6154ac64945ae55d5ae9c12d535ef8da298929f84ae954a8d09bbacb90ceea2fe8468e852a28a98ba9ecc125c813709a0e736f2f894b224484eae5da128240f9c8bd642f8a2e8703e3101d1133dccaff606b337bb3ea7c1531ca30b554478d71e3cf91b6bdd407a4078e3ff4f4455da403613448aaf25ea2aa1f4c661fee3f6b3f827fa81d3f3875d8b0a324dfced267406f4768e54d450bc3ec3c43f33859bb86e8b9a0da25fdd35d2fcee5bede88e143862301ec634907d66c790082ff6b1187d5fc2d78fb79fb628dd014cd915e339ca3c9acdd2744693f41dd3e33218f61b31b17dc4f63c6dcf69003473c53c309bf9a8b0cea76d4a7e0ad464da047ab5ea05dc5710af86b42ebc6ebe4b1470e84846df36dd9c662839ee5ee041879ce268a6ee673296266b25a177a36c3876857a7340d0783247c6ee166cf961e7b6f0ecd42ab097fbe9f5e1c6a1a0a802ad4bd4998d5bd55821ece1868a6d8e704cb6a6c70a46fb45423b9515b429ce81f1aaa6dd8ce64d256d08033546c20e0c1c4568d3fcf41c39d80eeddff71a96fdba8487c65fed40e8b9d5c27574c052724f6b0fb4a04077d9a189ee6b9d8207fcead0cc208d55335b9537d6efa716d0d07d5fca3b06992057a4fa5581d10c2f4b2f367ee9cc34102bb974d84d13d289a211c6417d2ca015390dcb761e49e0c9ea54fd396567e244888ae2e6b36b3f40949dfd00ea5f759b19cb2ccf5f3354cc210a7fcb19c30be6d6513842816313c4783f5fbe2938d0440603a1c4b70d9389a66d8c61b712309ea6135b144cdc7f978e9a25610eecbbc7484d9895de16796d0ab10471469989dcc26f6484b14be3e735aace9bce855cb94d1ffd76c67317b07d25712c135db3d3615c44750fc168541fd3e9f2a2f04cb3bb534f37bff906952e25dfdaabccb02ddb469b267fb2a89a19355f046032893da18dff5cfd7b934bbf7d2e73ac062e98a72ec5c2a09a6b3879c85991deee14d3388c14375b42abdbe09d44b4318f34f9cae14ee35cb7c3599465ece62006e33dfa76441bc6379edcb863611777a2948831b796daad1aad7b132c35deaa287ddcafbe9b8b6426804c7bebc93f0d20c81466c27cbaee3cb285e06ed5c30f746a8b2fd00f3bcd177258b1d7de2a82c81f2fe5244d9ea5be22262cef939d2c71920ab83f8e7e758665d643506fe022a0f6259cf3c210b95dc9b3531378a1109ba0e9d7626b2989c4fc491990942400df24e18cd62d74266abd38171908355e94353c4d81f98f0a15e2bc98897360a51aed191120ff1c4affb3aa440cad3a771cd53301c7b9a598343d0b26735bcedd0b2812d7fa20a4bf7e41d3161767336b6218143c9166efb54dfe46b0b59e5d981c681eb99005c93141f366f19c925d396811736751e314719d85503d412d7a3ba446adc6f5d73deed9048d875ba91740f8c01930848f670c5061fff96f0b9810c6ae6a5c278cf71444ada9b5b1d44b418b084bc550377ed55f1a8d859631b90ab33800087a0bb15913ab91b6b96755118ca2863ff95daf9f2c21e7bdc311f526793443bb3140196f0368d6eb29c22ade1ce1e10af5d8513257468c7f3c1872833fa9fb75da61a472021e6df2feede4f46a6449f9bb2507e19157912b442ebdc3e7b116a2bac987d8a41446d2422d15f3697c6bf5f2461c2f66beda56b01631a9f09195d0ea64c0f6326684a36436e2d71e74874200b0e2941598b3b6d73a1f28592132f542aa5ddd399cf5c639be0aac590769503a7f2434fb40e86aabea2580bf68d9104f65b463981a5bfc31b80ede22dcc4ef6474e63ce91d4aa1ecb1aa48520f6c88f3a39b06eb792401c0a66afb88078a0c3374e1f572662c008275b1372c6772fcd8238032b34cee440def0cf673436dc7a60b9d311b77855f647aa44ed8440b249c9cc2e6d12835f477900d0c2bc142c26e9ba1f6b4a64e89df2ecbbbb685d53e6995aa1f847239e8920ce565e75400ad1423665d80a776f89d31161e21de2a8c65840d2e11f863e78e686ad3162fcc7de5f244cac8d2fd29092e602cf49105b8f08eeb82acac1123d6b3a42c7332a05b10ff740fb6f5c6f24ebdccd10d2c3a9f4299f536f9287a02d1f4327fd70ef3d9eb8e4ef8ffbab956793cdd8a0117fe4988e4222a28f6aa50d71089355e8403b38ea4bcdefc57a091bfcf59aba3e10f13a39fdabd8dee08d2192de60d7ca5f9de28113916f7b60845733456f4483efcb34a57ef627bbfffb10bad28c7e129e57b95b09b65748ee3218748b18c88923fe490f0e129104eb47991466b83c161231c7c9c6fb18924e34952c4738fb80b02cc699d18ffd07b1fb0fc394ac896d3b478c4b8fe390f2f91f6e8599d8d7d7538ceb6551034c9ad356b59b09d18385fd88d43ff3365ea7817ba4b363e344349566b1fca1866cd80fc9d6900ab5a089be39de8abd7e45e78346669fadab4e660398d2a0f2358d1e0e7cc1e97c8bed81eb6fd06ad88ba5cf3a6ea8a93d62ef59ca142c6475b2560884ca84b75ba8dfc89c9881f462f0fbdbba5a919ab8a26749ad5f6b1ab8a2388cfac0842f1e07b53a98f38df225837919e262b302b8e626b2d6140d838e2ec683daa2dcd5d6c664c07813be20f4e1a6882d521799040e44cedd5fab449f8322339a6791a147a71f185560bdfd46e7185f26ec166089df8594d7839c937e527da1e6389484c29060fdd99520ad963a351bdd62079ba381fb804755e19d02509fd46bf59401710b8d126e43bca380c0069cf4e0b3de2aff24a84abe631627b786416fb0a4b988c7252ea04d4b18ce2522af1300a8c6ebcaabd6653c857966c41304c82fa81b061587edd26a6572d0579ac62f534a195737abbff561fde4e837c5afe06e9a9fc16b39afd2a7c531570b05c907dfc664d6fc887b5e53089d49d684cb561b9f3717e5d156c5e2e007b8368f2d529cc95e8eb75dd9bd4be598fde9834a7c19e5e0e2bf627cad50cc1dff9421d695f608915667ed441216a5b096bf279477fd587e48dc7be98cf773c062249559614ea01c55f12f437e974846382806edfe9427679842bb850c3521ed82a9f7af98793a9efc9c69c78e432f8493faf152b45b1053a59ced1472375178d22be072dd3f0c7d2195d3e230a3d58aaa8d171ef705888e0bb7be689683dbc8c474d323aadd9e2e7b6cd49051d5e3276b3e29f998f9aaa03c05fae7806f68610094b82a95846a392d95c8a1f80c8cf0eaef9b0244d2ffcc9d1d5b8d47a737b2e35e5d7e54d84000e3e95a060e0c39d9af85f32888dd091bab39eebfd4ab36ed1ee80a29877187a0a0226dfddeae8ca4f9691f14769eabcddbb600a73e4e67d6020f2a1bfe5d426daa6290e6e662aec37108e72d664b5974f897a1db6d3896ca69f1f7fd399ceed0cbad0dbb55a8e9810053669b0a4f1b00ae03b299eb656176cd704af817a32ca0d56a7e6f4c969c95c7409a3933c960866cc385d2d1a58ef730b6649733da3a2763e6f4bfcd5576706b47fdeeba0aa29b0bc513c3011ab26204acdb4d581e407cd4d1b428f0a405e9e5e533e4ed1bd36f419bb6eff7bc24e70b818a3a793f66e0f3be7b0df4549717161cc9755835a616b5fd7ca7ced84a0ba22997290a83c439eba759517fca648022f1faf056469ea557420a71428d2abb61db860141211af0056819e1658012e58bed966dee73f111bbeb0603d64e52236292620ebbc758b63a3f39f214837e57809de6566f903bf8501921aa85630f92b38eebdc3d15ff0aa05373f8ecf6de679713ac7522aa00b8d6129d3ed467f4d8b9d0df97cf204379bd2ad693948e3088a1622e8dc97eff8cb7c0750b5ecbafe855a14e192ff00ce522306df99415f5fe9d2556dd0cff5390d8310d49885232a18d0bfd21c802c16bce3779985ee841033cf9d91b07d369cb15186d0d56932510865eda689cc6daa3b0f238fe2a791edc84fe7ab601d7bec6b24b17d4e57bb29731ad84743e2257450e78413a0fcd321d6e5a51701b97753e244366ff9cc897b7084fdd70e7edee8495c76645f8fec55a1cb628ac03d7b7e6e39f7df5908e9072815ead72e57521acbc3f342d39ba0cef8fbfecf52c0de96972a1caba4fb60a8abe3b5adb1bfa0eb86623f505c9c2c7aa4ea6259dd9e3a80a47af142cc47a2d0a1d08aace13302309da1c4de54c6c328b5ea184722dbaa5932fd31d3a94eb2fe0db2c98ec26c18f6dccb56067902241cf8e6780faff223f7f8e3cd3c8016bff7416d339c1a2c99610a7e08d801de12f069eb801a78263f880f8bb0d1409333686b06cb29c5f58a5182c6fb49d3abb60f144d31feaeef8badaed47e2bb31ce61b79e2938c529f43dfe569c0e55b4558a538ffeec33580fe927cf7982da499c99952c8228358814b3e5a78199297e6a36073502532d6e0a4088b811adc50c5065077eb22c57e0a6b18509a10d23644690f6d6acffc173008b54a16fae5d8973f3628f386e72b2899b64285e673cbd4b83ce1c4e61cbef3c25c7f91af10bf6df9fa46458dbb8ae14b2766180ffea4c6f2987b13bb36ea4bd4c42033d1ed38244ca7fed987b29af8e106765b4334048bc891b064e1a802ab5441e4b25ce12a4a6fc436143d4b836b376154d0a9f67c1cfa60a9364d17c260b482903c4c8e042dd61d07ae95c71f235e3122377e283925add7b0add65ee6cd94b436e31d6193a138c0f0add037edd39fe26d551fd2b3fa392208e1f044994ee91bf3a261f8c894a8bb5c5b6c25015d6532818d6350b2a02332d8513d496624c0b766f811dddb2d4533a25ce42571f9a5eb107a59165ea67800320a665823dab8aae83c31c0dc6d9744a50c691ef5d04627c3242de8283d13068f04a2d9243f5c64f55944ababdd41e28de00e68eb60b157053974942bed8dc5d3e7210a7fdc82dfcf33d5785ed167ab63424734cf7951ca72e6e8a58eb243effea190210a8f78506a32ca6396f424d29d49c4e425e0156fce8f898fae2f3bdf2c33cafc4ea09626807740e9badcff392c1176476c19ef1e5b749f7f62c975351235b3b9978b86224324a2bfb658aa4ca8f097a3d3a315da9f6d9897fdaf6b21a99fc0c7d757449be1a893cf8bb1108653b2a464ae373fe3185040026c109cb902428aa16b4dedab2282f970745581fb92bf391da2c91bd14d48bcccc745d941435eca44ed34d91199edea5ad43287a2b30246fb486aa5f8a2811ae8e94952f5e43da979b044c1fda105c7985a49bbd393e417ce5a355b16a729fc7debce5532a55853221cc1ac21fa313e979b1a27a000a1039766818817285214963b7990db7260856f45b2864f4569143d2d97f5435501c6b83a5f2695ea6e7a74c4f8ccca906804116449f8f2dac098ff45f4b77cfcd35926f24d26da42325672b87b1c238aa8dcef810d83015b3d159ff37715ed86eee6c1e261d60d620737086cb8e92b160d6bd9d1ae12878e1e21a9de431eb1e331e8d6c672c20f7d24dfcb323bc4db7168213a336ffaf04435b22b3a91ecbc6a460fc54f0cba34c2b940ab75068c3d18abf83ce3726882211fe19cefea02eee8192f0766fbcd178550b6b2340d51e28ee3eefe92583ffae59b2156ec573cfe3675a90eda7322ce37cdb554a37d8d580edb5ef02e1f3c2461fff3394692647a7e39cc7ab83564bbd040f9431a15be7e0c75c745f738980074995ce33bd9eb5ad48052cceb0c6272cbd19381778da6964a9716eb9ad0c5af3cac53a691190b7241484f1944c113560a74be683d9e9692afab48d93c9762760ab061a98ca0aad2d70cbeef7023c4ca6895fad2d72ab186eb2eb0cb9b576891ced723ad36eea4fcb9fd2b106364066bbebf06e2d155c4a270e5f8e3a61efcb34f1460730f8659a7bb955a486348926ed12fed74800c944cc2b5d087ad1779881966689e70682fdb71b514081437835d13c6ee95205d3dd0e3bb7c11710d9786a38d6f766699de7d5738b54b442e36a9da68810e50ef0e9aee1405ed205932986b142d8b152e59a01050959160090c86ae677cff23caafabb6554fbab2759bc02b277afb781dd534d1a96d3e0e2bd44edbacdf5f9231e6de0fd4d5ce673908aff0ce7417f8edebf0e3442ccd2729b646abdfc68d18f7dc88f610f27a89cd4f7421b2a64498c94c3048ee0519d64cea6f850dd7c58898e6c32547d305d667204f6f4775b0d327d91ff10870eac40efbd51c12ddc88442a90a86f01d92330eeaf4f0f2fcef0c46e1005a012ecbb6d0a9bc1c20b01ad0abf8fbee30879d9547f2b5abe53449d120d922bf6a0c8f1642048fc6b7c3dbd2ace8b6c3984dd97938edc3b36093895e357d9a4f7143b6319a692e451e85325786e57fb6968d4b5f63b2faeea1bb6ea6f1c71b36d9567432905868da49a9f74e6c6b668c330c99cc0d8388c96778ef98a7e5284a210e4254318b6000c43cdba5e96eda424567105be6b2aa3c8b014076d76db2637b1ac0946b159938a77239301af9d8315de886dfd30932e8e7b70e93b4f151ddb6e281e071335d4d92e5b20a776f5791fcb9ed8531573aab6337e18b6294b3e427c3d745479545c8e45087b94652e8495a7f12d473d1de537563fcaad77f0e5d2d7750dc08e960ccefb91540c8a5bccaaff5bc5ee7eea7a6c06dbfc5381d7a80bbf33fbfaf406828b74bbd0960788ec50e550f51ae3bb2542892e90ade3b70a8d35f67f0cbd08cb0839bcd79a9025e6d76de8b39c2a4d8af0caedd0ee0c05ee0883ad647df550a7dab6e86229f0ca28b330fc9cd646576d7cd55317e4c014b816b11ff4a316b1dcc4bbea85a984424218cc53efd8de827a1e5e635b0097956310105d4e9991b16a8ffc89366abee8116561e1522acd2a07a03bb7e0247c55fba9b34406054cfca663910415fda35a995c150e7a07a0ee7ae3e6e25bb72e5837eaf1183bd81f978c5776f7b6a34e74c4529216f0531b154819fc623326c23d3688e523a04556eec78c0cd736076b9fc2508377a6aeb4be9d95c01dbe8c1ff98c77ee6b24c032af49b097f709e8bc71cb141a6a131d16e83dd69973a1c380d626992f782c8e68726ab6bd255f72989b68918d70f387a03c210b8fdfb0cbf6d1af1c1025908ba036e9660dcf876967269f3994f2ffd4e4b8d25fd227f12be43d831bbb88ce08f7aa4eab76ba2d6b270392f8ede92cc1281dad56331ea18d81b9585ba0e729527d497f99cc505721eae8772cd99e3fbfe82f64c2a9f0699b597729f4f1b89d4db84186e346757c585683fe5d9c74d00652d0834dce0919ebccd307ca27bbe0ca2033e3ac02ee2d9523f174b600c609b0c8d8ce0a608185838e3be3687b18e594a1b7e4c4805c11f3a1925768d2d1b53062d1a73cc01c8362256272d56e9b88101cbed9ec23c633cd2f28175764b76dcf6972ed5c76df04416fc8bd5341f36638e5b42320b4acf4edc540354c0a83fba9ddf6f471ab2bd1b5199304f97e080012468473cbdeb60bcb6bf80ff19d4a41bcf03e8ce8ad7269c128b1f51b6d61a44cfb58bb7fb3e86aa0c006f795fb5937ed89c22d7e6f7507c07452775b9f96d996b53e9ff4256cff12741d6488846fd387c353d0410615d2b828ae760167d7285b978a6e1d8ee99262cd96705b9f08ebad6bb1fc542db3ab0344197afc5c7e8901bc15f0aa29704f182674e20e33be624385e912e2c2223c491b6def87d9b5d986af478b9396eea78d6cac6a722eb13c88c78be9af462818f3d5bd70e07d2c1738f1f097225a3ba79da0caee7b020758181cac30d6618a283cee60790eacd949a376f5de9e5cade75057dcf7882376f34f22b542595db2b233b54345e70bd2525c28c795cf6a44b55a3db0a0ac8ae24424ad0a4ddfa6dca42fce91d4e0082c110863b05e86b2611ccc8d649d3c350ab857427cfa4350d9075db1ab4d3b4ff48e3c77ee17dc4910e7779b4536c9a441a6919c87098b915cb857296d374f563228292a9c83fda8ddca204afc4f8d5e4099492b6b789542dfc9f4d5c34585d2fcdda5336c123c294249b1960cdb2c6afd6aa690083108620f35b5aa95b299409e473dc0335b968e99046b0ca44449d69bd46923975e0693d0b3a86ff75c525dc9d300f14409137bab8b314db8c20c34673ec16d26d7bc9bccece23fb328bcaedd4b7b5a994b18f7c3ddd28f75954e18e0e25caef0423fe59350070b1f5859f93bcbe185cc0e61ef5b29761bfd975b9bd8967e587debe2fd4d4ada1643da67caaa9cb76ee68b50b3518727d073babfdba0c8c991935c1618faa5387750c78befcaaf7505f6f52b77b1b4cd9f603fa67943887eb6fc40b0893f4e509a6785b7fd9b986aaf7b5031d40d0db50d5bd68719d2aa71d31625d34dcec377bfae4f20c9104bf4c6a3b89944684741b409eee6e5c15a842b3709cf804ff08b7ab8196befb304691451ab54a9a9b745c270d7cb0b58a795b6dceddce6e5364e313a09034e5c16815cf711b1c6aa16fa7890948b3a26e5e89eb2c32b633ee4d6a11200b889f17fd7d2452038c4cc1280ac536c252997f1c3c1626979833060d25aa0f058884090239da14cb5af212b7447ce9d2c118bab983238a15df3eec2e93e68f6faf5dffa215c70edc5f7249712c8cbccc42e043365b891288006c8af69060c6d03c02416c09e324552f0033d0fc0ad01b141e3c1164e245b2e317697f4bd907fd89c263300686e07015276f85d549a56d611b42fa3a10d0c288f00c4cf43f5e9507fd4413ab469a00db926b4cebefaabdce589723d95b67e065d2bd024cb18e798261933d0ecb4c9e826ab178fcc49fec80becae81c185a9537f786c635df184478e0fcb29738535b27c0dcc596032378655d2a8b5ee612c43fab793c95512d9cc7c47d5cf1ce05ae904e49859eefd935297b1a7429b04a501782891fae282cf36f619edcab193acaae9f9db8c0153fbf02a981f5e7c1c4bbac7277a7788e48d87c80d4cfe6d03c56dbd871dc4b643dc4e6c5ab16ef73ffec55a73fdbd9ee9a47d014c501382c15080f2fbc22c3eac70083ecf531ba5af2ff2c6f8a9ccd11b8abb7324adae95f9c168625322b761e17cd6851cb81ad7e8517146360fce9ff213b136a277143dab16f3c801788df6aee679a9133bc90f08b8d1382b59b6dd39f2862530811487b43be9456a813f6ca6bd2a189ef54382fb0e4b9ed849b132c85c915f4db21475acd65fdce7bd3c45bd8ee9c439be479d85dacd9e51b2589985727cc75157537a8d800ff56598b5953b1d53a1852d5b7d0fa083025ccdcde3c1027a85429107ff2fbb69de88fb0187fadabf28def7da754ba9d9b9a01dfa33dbba3583b65cdae2942bf84566123ad8f2b989d7092e588ca788c3546cb16e8034f239f1cae04ef2ffe21bbfcd37c45a1b314caff53658fc8fc99d8affed92167c8ebcc227f81474e2c0714521563973978ed3b58194eeb58176fcb46f44161542ba802d1426eda19537f8b2bd39279b35f139715dc5d8d7ec5ebc521772e2f1de67972c9b69b925e5fd9146f397e6e23d836172f4d5bc3ce746e184962e1ef0a9da4d00c0a092a26977a8268eccf06790d094c76a72ebecae6a269163692aaf7fb086abc26d3e2bb3dd7fd9ee8fdfe213529787a98b8ea6fcffa964eb78e69e98250f7474d02dc9437446ccb227871b7488d94b7be17d5e269fc70942ddf17faf8c3f679ce540fa595107cfecd369703040d5afb8030bb911be0835637814eb77355bd36b7ee82d8b857097ed7a1953fad8cfd4849cf692f6a60dbc025e70cd643bb1ca0282e2472eaccb3a9cd5faca63aa61e199156979f1947418ed9ca2e4bef674a4044bba21962e9fb55e9e43eedddf2a7da5ea382f66e00fe9f7a382450b0aa27c3c736a071cc42d699284fb6c07660f57b53a012c32652f708224c2d8c14505b151bff93afaf8709a94e63d074bc32c9fb36a8b19af8c5c12869449d653dcb0678c1cb16ff6c53aef5a94f814cef57d8af3ead65685a5abdb36b2cf5182a0b704aae2944fdc82e1f59b1ceafcaeb0cad1cd719a754e73b0f833abd4ac044808b3c1cb1ff5c7bd389c8766b0bd939210324d3d72bd0720373c48c9db1f7feca6e43854da7340c1a0b80f9a4e6a882f0eeeea2d0fa854f91d9cbac67834c94450cac7744d4d22d3a581c098afa62d08f9495bcca26591a30fb32e2c884d8450c7db8de8fbfb5976ff132989502d37c8b00e6a8c7457b5ac683f155ab41b0270ab543671816c6e39bfefd3366d4c3a66f309e7de049305a946a2ac1f3b287b22bab32ccbb37edbdb2579cf48be64ccfe2e8aa2e4626697439a619101c24f95e4cc3be143a5873cd4e478c690176bf1848fe879d461cda2ec18a9de91e93e3ae9b8731d24b5cf46818998a8f4fa6adaa1cffc73662bfca40f16c5de7b3afbbda673a768606e13948f6eebe2b48200f45d25a2edd544d852fb9ea94b25f95c557284667c41d1043d5ed7642811dcdd446d5c3cd64c7c7c5be5af6a1f07678ddca3d802c9f6c8c6436cc85bca8de9481c39d12efcc95cb8fab3fbc4f41ffb8eedfb84130a45fa72ce18c70ca15b8a9a1001896369d4b68d5b778b93f72125b34646dcf4eac2cc943140ea1784a472c14dad14c6cf8d84b2cabc6d5a653e412281728845bb558cadca7f8c0153be76be332c45ca05f6ef12b925c9bf9db07c58179d006733e0c4b2aa2a80b28d86a9274575f9e392718a4c8eece80cc36a8da5bbc2cb034955868b1039dcf67c68b4a6658b770b4ce5d4324b4145b0ea8549abfe177d8313a11395b3bc58fceacf5d776818d33e00f90f4afca71cbcdd575de3453f3c98c0199b21dea3b8da6b0a49eeee7bddfe3453ec50fcc2ee676950991812d7f8b2986afbf257d5ed0636d998ef9667fccff2df1ab206330c8b3f0093e9951a1e8b132b44c320ef7bde8a35447479620dbca174ed131a777a2567eb9e4b9c8eb89dfc9395bffa311d22af099b0bf9cd2dd1f56230c82af69dd83c097b05bff484a7a7043f07c563d47473e0ae55e045d89eebcc255ea59c776b03145c33edfe4c2c354a8030a6b265df4ccd1188d07549bad4cb1312c1b7c647040a72c4417d4bf3e6da1dc206e3a74dfd0ea4eeffbd873e74bc2657a2f80afa3f8262fc29000f8884770cba5b523e10cc2ef7644841ba462b4281544dc935b6aeb6a9f2db2877bacfe4d408c198135a4e9e23dc8536b57435d33363685dd5d210664d131d22f61b09aff41264d35bc4bf15ccdb4497c26df5df7d94ce28a7484fefce9d58fb348384296d2fbee1fccbea3470fcc085b75951e72a28f2a5ca366c48d42506e0968d4d1ce62d9f1ffa4ea1281e6b330458671f0a16160f96405d03b391126065dc19dcd145cc0766e812c556096a71d7e347a2efde892d25fea55a50981f6a6855c8d8766441d45c7e3ee0528acfdaae68ae150da35ff49b9e9702f74fdd4736a583f1fd8cb436670cdf4d9d928498eb1ed64aa21eac4b89a9e106ec0c2ee3f819f5bdf9d1c201b50665f2eeac062ba1a7fb54fdf035cf8d76d6ae6164cce2a1fd0cb41ed9fbc242d324841339e748a97bdf45d7dff61033f3ebcddd1cc0f0cd137c2c5fa465add2bcd46394b04d0de53c46fadbdd9cab78f23ba4e9d9eb505aad3c77d30bf75328431205b667707605e47bf6ae480c250139044fad6c80c7a6570600e00f1f341100dde6896c1f3475f6ca52ff4adaa0082c28c9588588cfbd32db824be73d100400191c17dc3cc63d0903b87c8fd3628fe4ad7b7c5b5d21dd667e5037b1261a61bc0f64db433beb01d7fe6bbf797421626b3e5eb3c52f891807f4a22bffa1ed9cdcebd2266ca75e6718116e75ea7028ea0da7a74023820d11ec0a02aaffed5ae0823d0a14369ee7891f9ba3662c2d4bef0e5c0e836cae65fab6cfb7f7ed3a01e72f79011f0e50b751f07d14220847a7b571f3985fb95ec0683a155512902bb92639775e9cd28317c7309c3766240c372141a5fe058f11daa0fbf44500f85acf8963f35d93f31269bdd5614f96c9ff33c97fd197b0509c63645c4876ef71d40e46740e4cbcff69726fe138d6ced6564925e17ade4141a7b874422e06d484999b9a70cb8ca5c80bfee6e214fb6a377c963e87c47ee19d2be645bf8b0e792f1d9d7ed4933441c60dc94926ea2d0d708f818e437af7fa7bfa009c4f85753518cab88a3fb2305d6898c165af31bc7ceae359f5448bca3f3f37cc0cc807d3b6397c5ca7f6d7ffc7926a951629687dea7f7dcaf2af893d8faedaaf9fe8426594b303d9492098fa239756905eed908f6e61981c8a5928aae5e82dff05df27159cc9a54c4ad0ec2bab9dbfca4c2bae23d1e6244a7cc0c55eb5bd518f25b4ed8a0bc9995d9ccfafb9659421a80af94b5af0fb42e0c16bdd0e4b36ba9defbe9152277f8cc4748b21dd946a89a5aad1f42f55ddc9b16e0891d31f70af06bebb5110e22820a7a5be676b549417789297ba79c994c45969fc29bc3a42cbcbb01430c5854769c23b3709eeb490837b9ab5b2f1002ff28da0a68dee038a7feac53c762391926e65a691724bd07296703c627553a7f34541a830ce572b668d82a5bc2df33a53ae3bf4e174ff9a3cac8b6b59a28865016396e8a89bec84188e4c5cb5a5864dd298e7ee0ac1e3733039d3ef9a58e5af8f28a2c817cc79fcc16e607e2af03e4c25116d1ff27388b41c41ce5edcbc746fc022fe7e65db0403aeeb4b6c5a67201594f26b05d7841cc40add820b677955d85b142b723166bc176d1979b4c823777004882a0bd357e66ea9bdc4870b3b26ff0874c3522faf784e90e0e4ca63848b4055137000ef2e4c8440a1d390ad3382ff95ec7d59391cccf5717c25915cae664357472f264ab16cfdf9df4981ac968dc5aadcff520ab7a3be19fdc068db07a7981dcd0015866d472ed3e15aa2151e92ccd1d67f637dae7707f5c5d3c9bbbb647db4c36d080a5275c396a361f61e87ab641a2138ac44d40b2dce0c0798dc3826f0e8380a59b735718ed639bf56e2138451b838a93c431fc002285fd7af60b2e42eb0b15f2f584c7062fa4709ffb10721d4ec48acf9192871d4e41d2b6670a02041eaa7a7b968b5ca831f8788dfa82cbf7135b5556402aee893eaf938f4a93d0600af07566edaeff36bb24707514a4fbf093595a76ac513de13487bbe097408a24e11b07325185e03e462e8ef031ec1a20c0c3314ac77dd8672397f86ffd244257448f8c812e1cbccb75060bb4436d717e6dc8ed0dba736b7154cb43f6436793aca7b28d8ea87e2888315b9afef776b16ec09d7f62ad76d92dacc1da3ddf1f1693101fba7bcc2b30d5e9e90eead4c590c6552f778e46673cb5a9d94ea97b93c8efdba235e4a7f3297619e97d35521031a775406e3a4a15f7569874297bd87ac584c66c4a9ea1eb71f55c113a388b3ce5e1222d5edd729eb6329282988b1c5dae5f716f7fd3c147f48f8ab5e88e7baa355288765e165e2f41b5f969a6005711f6297d2499c3a1c29d2b34566e479eb6e41c2576ec7ba59fd53e0f9bf3e66391cbe3f38396f6e3339a5b0bd2cec1ea8a3a9c89cd96d91daad04436412c2f9413373f666bdb45df7986a973b479724fdb4e68dbe46392c894c092e5de461e5450b5808e1be786b5b12b47a325ede5da49cbe6ddc87c7e55e4a50edbed713fa5c0f85b6fe97dfc077d6b4addab14952e55711145923624369b99b2bb26442be82f048eb9e9a4004c0fa89896d91cf601d67953c43d440f36cced1f3d15713504f1f2de9288b10e91ef512635ce402f09c51a4fdaa099c60f064dd5bc34dfed906540a269e239ce24a235a33e2a29105501e17f023658fc7bc781e7bd63db393410a2dc46f8e928327458db4fd5a13df59db32c6ac3eccf217ae6a8e98ec5089f3008a5b07ed5f542efe85f517ae27666419a523f51f1c0d54cb9d6b9977eba288b9020577d5572aa957e2a559d2e499e56d90c88246b330d638baa608cd62a61efdb9d990cfaf49ff3bad9cf711964706f1a8618727539e5f86990a3933892da4567858bad649dc75fc965b8d48caac26c1608f50e73cc638e42c478bbe99cac89420632cdc4e878bccbd90f269b2dc367f24f61be1f38cd8ab4df7badcfed4374934c6f4459929864506d9d6facf023ad0a769c125d075c5d31d600bcc68988c4e687cfa69ef0ce1e20345d593f3dc54dd418515f4609db97bf88b5b2134e0cb3c49207a160e14098371629f648b06b9d359431f459fad8565f2a2bb432019f4f4ef3dec0d83af3bed39cc55ac41ef9763e3653b44f035ca77eaa2b7ed55836218c6760b8157a36c4810832243eb960943ebc110cdf710623b2ad92db0bd2e618f5aa9bc9b8ae7cd9f9890af11c6687caa33c0c8f53ac2435f96bf316fa6bb2e05468feff85b2df46320b7229407d0d4d8e0a4578292f5b2366f1f2ee1bb1936681f832a2966d399e9e62fdd5fbb5fdc8c3570c06e6d8ad636a19b33134dbff96c806058318952b1e7f5b95c95f1a7018c5f6a2868e3d42a78a50423e3e2126b081ab09b0ba56dcffb897b41723d12b32154ac3e5297fed23bf2172d86260104f7d8915e2224aef4240b78aac2835fd098bc37f4c469b17f62fb8cf30218f9fd391a1793d755f76447959cd06819a1c7c2f26fc188fb757cf1c29171b594c86e8feffe1bff983a8bab10a506d931c7f3740d06be1c00707893f918b4cc2d13e9027406a2625696de7dda5b0a9e9d1ebc08fda9a0336062ca17af9b54cd4e5d7b5c303fae3dcb695d4dfdf5e1d6d857c5dbb71254342c2543ef92309b0eb4e58dad8f1dbec1a3277a8ff98d56b169f13dcd762f2fb95ef71cafc41a273b31c72cc863312a9265f1441c1eff7af68e1ff1c4019406126f5639943432ffd4c71cc1c379ba2448aa4534ae70a3947e3e8b54290c723dc0b345aafb93c7f5ac0d22197b3e8bc9f1294b2e6726b629b673823669a1b1b4fa942f77e5d5e55d6be389e40d73eb348d95825b4bac5cef21ce730b75a1faf62b8fcaa8793f132a0d7b85775ef16cdb9141e9dac13f98cfd47fcf1a424dc1487105acea8208f4ae61ae35bc9580e4e865a0d6a61617a245f98ba7f44ae3a75320e4727ced8b706e8ca580b79bb9f840e68c1ed9fa1974dd4c55a9aa0a4cc7fc3d13b4bf4d08418283cd85eba2fbf8d7e4644204002a80b9a17c4a4082d6b09504b9126b57f00077941e2a2f9b70ee7ea5f3ba8622fbd79f5c0f43a7b8043b00634c2e4e66cb2babdeb27647be2119ea612ca5943c7c4736f705af6635686b8d7c77509df8a5a58fd4acc3ac061c4badc3b45b338ccf23c3801271bc868e0f5827ca04ef2e12b179bd6de96ab2a4d3256e3fc78939d3d0fe18bfb0a1bcfdd69b6d3c047150b87410371cf2f8c67deccd76b66fb7c9393f4075dc8d9cec4000120e811e5d477772c2b07a053a883adb41e33598dba832e594614063b2b004ebacfc270b6222159219ec0d899603a4385332d6ef14a8a2f32238d4321fa5432124de904c87927fa1368293ae41872d10e3d346a1097cecc98a6ef314b0eb82a9a28ead8e0e6d9c6c375fc8ea4c2779c9dfac38cbf63b49eada071ac5bfa81eb4919b942bf82eaacecc417f0e2039ec0db09498ab5de4b0f00f1de3a5dd85a6f5e9c8e3bf1b73305fd03c07fc49da531c88d9990724d4524e085e57d6182f4a40ae8bf2f8387e809c3b39e2326368993ca3bb909a64519ecb498c8b32c2d7552e328fd40600b5c5b57c72cbabe80687451fee9c953b03db12f5fb8e5939b3beef97322c5cd423a656c7f80dbf8a1b9c66441c247a927551c5c915aa12027bbf8c8008cda5f7f47216aa2d2b0f69d3f1a757611cd94d9903dd2bd9ecabf0ec842f42562e24defde86ce34ad1b1199c2fd2b2cd26c14641f55cb1580d2cb549ea461898add0a831814e2bda211127ab8fb0c0e679e528a70492dd3896716ed54594a9fba0f8242d51d2683d483fe575f3dea8239cc7a5e6526655316599375a4576f0e339383cad7b83952660b61c360896ea72ee6d6c7e3c8906927946d3a5da020a6737ff72143140621eacbe0d6d7b27e2b30671fcd4e16d71bc12a5b10738c2b0d06809efe93fc88bff1bf5bc5e3f1c393ada69baaf3f6284a61e438fd5dc1c301e00758254355daf7923ac4e8fdf268d51b80aa3bcd7403c58f817d4e9b1ce6d83b46063a50d165a90e020744be55b2eb3146d990ce97e8d707655ab2036f13ee5b43b8bce74c8ff1c92be92224c62b113225e94913899eea049dc85daba6e9e606a3134e496a980475eea5a67068e36933cb4dda469213b2dab6d5a7db0f082c20a5b8ea18008e7136911f9b09116b34d24f72d82e6ed8c725bf47ff2029b020efba091e50fc410d23af3e85a9bdb3dce07e5adca582e175bf07e6f2786262bfa0176c431745e0aac7662b803b5695d955e9ece00b26605eb73c5148b722c75704ad6ea2a3fd0fb1ce1f5b30e193199999382780ec492deb652549594f1b401103634d41c057da973b6638d227f201cc07f0748be69f4f2679ab69f3cba5ae1adff3cea748debb554518188ab00160b69b4156f413f4ee93c88396580bd957ccc2d9fb545932303362121a1580dd84de395b358abea8c968567235ae0e2fed428d53c49c415d3cce6f048699b6f88edf345095c74f420e928c077b9e3d49ebf31ab7367cc389d56027d7a142c61c3d7525e07a3f82f8bd720d5a29290dd996887e864405bb534547e5a084287afdcc92d7b3ae8f8b3ddeff972a6d8f5d2ca6884fb66db13da2383232db19d69f0ec63a49595d61763335c560ea283a3131f76b00a0b99ba1b64480b2efb5a57c6a0e74b2e3da55f0460ee6c32d0563093c53f4a4760beba35278627020ae51735fcf2ab479d00b9eb5a0b843f5346b4f68257c60f5fa5a2da7348b9e0e8d93406849bc23054717832261d7c796bc94cc1bc2149e2a501a3f47759da09838d7e3d7faa7f1fbc38cf7f34884766f09e9b900da62f1ff2a31376b248f58cc4dd889d425f479b1d0a56618fff687c27ab446974c2869bfe49eeb956f24a5f9d16293cb80873b7d41e893340797b21529f711371b39003b25350748b1e6cc2e001fb2695fbd01df3e2499abdf2adf88c0c4f879f1b450dc7a9fc326762c3fa3a04df17efe61de928df59895fab3f81da5c8f69a4b5cf7a58bdd86dcc060b56b7557739244d904ffe93e2dc1b79070573eee7977ca30cedfa4a6f27875bd38190f9abfb46f3521da8b1ef810d62eed6b3368fc581de0f864e776d1d4e87ff31451625f87f6dfefe0077f22e88b373e14763c527b6a39e5b32ee2789899747172bb4d4e6178b269c71093dacba6526856369493229d8b6b903e91170014db625fab56da21b49ce81d1468aac21b92ec72dd4e1638749033593634584d5e42b2b0a14e53ccc1eefdc8ae974354da1c4cfb0ecd722275f698db952039560e7dbb53c00f8234debf5048bd6fb97babeb6b8eb0676a924487e60b6622b8fe9d8cd4acd9da655428842d6c91304f9c45fe5abdfd890025ff30dacc29ec50d44825dec8165b0a45009a9dc7135d769ee3ec751b2c1fb15682694208166797ac269b9f0f5231f0db2fcf34df3069f90037be58f3fd00fc5b9d8c643364117be1bff6728f9bcbe1850955dd48bd4eee0db935e97b4292a17c2900b63f271118126efbd543d849b53168318290d013664b80c63430e2a2c7698e0fb5517abfcfb8b0e68eecb088ad06e62c87eec82501283b3b9c79439fbfa6d48e710e4e21358d44ce63bfea5a2bd1a1806bce47af9b970723aafaedb00ca0ab55007f015b49f6e2b0bb8f109be08d922de85b5555079c7ff542aa5eca97fea886d5ec0b7e03e964680c8b226fd138de8521ac9d15ac6cbb588ad335de5acc99eaaefe0acbf1338983fc497b0427ad748d5facad07f07165becdffcfbab63b6fc241b2bed1a0f393f194a8661b4e3524bd06679140abcd2a9aad93e0673d3f5fe2d6a2458df64c0bf30e71cb63feae69320a63be5ac34aff27fb2604abbf5509ace019fd8a14c67e37d0dfbbe120ee36396234728f9db744e3c6033a0834a9af540e505b01652709a4b5aa1ed1fbad35276575d9ae90e956f49e5ff5bd1a47e027208ffa497356881ba2ca4799f584396f8816cbb5985274b1dcfbc2a2e07f3ed87324ddca35cd2f83d8c2a188b77d9a3cb359d76884a1d7fc70405772890d13855b01b565cd2c20e1c5ff34424fd89358db296b99a45aa9168e5a90fce767709e6d61d6508d887d4f3f05a496b6cc63b540f04fd185227e4b6b6fa49371776cffa552cf89105c51c31c91a83a939e3152835a4376ee8ee797b631b43fb0ea9a2845a4a3a06faa1089ad1bd29e92e237d86a96ed46c56f681148a0435b86943df29813ce0189cee3cc6cc02f779e01aebdf28970bc68725e8f3da060d8edda560c4981b769eea5e129f1ca7a36d315ee816117a6d945eaf111ec7eb92a4171065e5348d22115d4096e7d8531f1ce8a99c069cbb85d39bec4dad7e0d79a1187f944d108ca010d44abbb035a7c7a152fb2dfae9233ce1577b734f3f009f33a14add733feaa3de196face23994a75bfb47f833dc0100050ba597c6f2a6a98cae53d90233f777dff2c4cdb8c592f56d6dc76b66bf1edae5254dcc661dcdd4df06d636598af36a1fbefa9943e9599c3f09016c3bc68c380d3aea569a1ca08be8d52e3009b63c84cba5e834e68a1e97fbe80f5ecf53daa66fb24be160b5a1e661592a765b6a5a16b55f293ed85d904f11d5ceb0331674acde1b2ebbc8f2eda68e9daa10c8e157f9d47dda28a5280ff9b348de8deaf03fba91fddf617854eea7b249b9a17eef129dc24ee61fad5bd2195986b68e6fb7ba67a74179292b4dd409977c5627e2e16aae3c4e7948a4f7fc0f3fbc37c5adb7223f9d2d67112d1175880bb996d0083579bda625850610c4d765e2386a23851479ffd9ea4e84e1b4608b5de2e1ba3d153e2e843c73c1cfd5ab3587af60524bf0638a239f88013b9b4e7de44865747eb16ac002d968898e65f7b2b48c6e5449673bab2615b574473439e278c60af1fe5d33266dd0bee752f6f62bb55a24e33b5acb83f4f42f4ea00bc374f7ea8637a4865375b8c78e17f3cbbc7b1836c455d20894b27f8c6045f926bf4cc238506c8a71adb8f80378dd9cb150f231522001317c933521282b0c98b4f6b13d7191087fd12f8ce8cafd374d10922d978d156e73c1e1a315fb0421d60986c752f168fb8628eb776653212c5955d63aa516147823f4a997fb976c5ba0f16aadef1d072c55fa80b2f4451904e8a87d9efa1f6861c2184a0958f9c8c4f94a1e0f83e07d53d7ce560e38cd487076f4f78bf9a4342f44c7a3eb131af1cd76f752578533536dab0437187c36d81c5239f4ad4a3e522b93a5e790fa1ddef7c01934eaedbe280ea27349d92f2291782037b45b5706843e0bb2653e3b0a4a9416a4bcd8b9840ac844df8d416244e09b5862befdd08db4f1fc5d2cddeb0d3d59c83602796a9d36644c3942fb4bb51e79c42a68b128e02c492c7880e4835acb20bd4e8d308404702228b4de4ac5d184c10692f2ef1598f75852e777725d8c8554eec3188711752e5e7aa591aaceab68341012331b1404e2659c3441063ba35d32e89752491f563df299386503090baa60aad30257e25acda22ae6e176c18a024f4e14781c3db79b7311f178c13afd6d3aef34ee030400421e90a97590f632f4775539e764025dafe41ffdf883ccf68b49d09fde8440d87640584e3839c738d25d477cffca87dd1cd23558bdd44e834e9f8fb0b8b622ae3e4e7e90e41e841ea73d01d6ebfae7ccd6e27cbdba26f185693446ac28a678a68dc1f2b231b46114321674213075c6f935c54d6aaf550c0a48ca5e47179dd6c488ec1aea79b5f75071d427ca1367c7b92c0bb7b0b50499a313ed18bc8096138051484d96d382c0f9ee48b3ca438b1546e7f7fd59a684b55f173e0831a884ca66ff04594e275d9e9b92a546fb4504db276b7915d9745e234560c0946fe19adad379ecfdb90cfb5433f9b921b097fbccb40789294def38ca64bd7b79ea6af9e7b2236e703c78f90bc695221aa891919c9ba9f51a548c94337a816c471412afd7548bb5d86e8363cf891c251b4b6b538480632bf8ac30c30c1ca860e0059c0155549002d46adaeb109efa02a138f7fdc2a9bde38baa1695a77c4015fd742c53518ab115f3e497792254dc203d26f3cc17bc9ecace75416f7bba3fa1a9fa24c87d1275673b179a59bd078480160e05f84787df0b6e2026e3a2c01cfdc3a93606d25f1c0ea37b9abc7d8773b066adbf479ce2db6d4f87746a5ab7d74081f59f02096116a998569229630d2a83f95248de6499921507052a9d84044f04e8e7d0da23b5e1657c11363352c7f895b1fd77686e67265161f4571328dc032855a8ef1fe2ef50362265910e93efafed04cb91ed9105d2cddc024827ef60b02ef751f7d24dee629c54540ea05175a6b57cb5e85c2646a16e2a53e8f7a754513a521a6b8c303b21044df670331e35de7b36a30eca89418191b16fa95ec35885b1bdc7d7ef998336803f11925a6cc1461b64c466019b9279f00d0d3807d9be638ce5779d985c1b2fe2cf84e25d15bb60e3cb4135c043a320758c9cbc7a22e92c4a48b6bb229191959394840141d4b9c372463b8664e8089d44b0ae8abbfd3a769bbbe299cf11555d499ba2ef9ccac448284116865af9f0c502b1256a016c99b3dee5e7058cfc684da7e6a9a878fa5adb043e1c25e6659d34cbf937e441957b40a7c141e3c935295d2de8482ed8cc0b33565469202923f158a7a6423e73428b4aa9205444b5e41e35550b8c4df18e9ff788aa2aca6eac0ce3580b6c0ce462d53f8f2511e8c9f3e4459a2a28a9d4eecf110f012d2bd87cfa13282f168694868aa26fc7ef55b3921c27431795d2e081902a5d28bb577c946bc7054c21063a644f64d4523212afb471302716f87b8440e79aa085cc11f2fb8348b951fe6078581d2b87e67ca45d8faf7e5760de0cac06554ef59383120138b743026191fae7deb221a0f6bb6a0c20e5d686a2c723b613ce59915efc94eadab4678f52e4c5b2199435a7cb5a7207a59919487b80cef18c424992096bfc51f064876a2fa998ed509be4f1ffc9d16f211138bf014d8378f8b665d6488aaf4f91f44e03b78c7c566b19fcc902563c68dba0dd2c3de324adc4ec7592e65983a156f2dd51db58e8cb7a86eb53994dca26df133fd1aa359bc8c09abb22412d4f3ddb7ad8a243e70aa42ec28c9d5a782fa07b1fc2feba0dcba3a1352fecc90984c34275c17ecae391065ee483b830ddd90dc4e76ed95176f65d7d483c018455e170afdfafc6fe5e968e849d9845ddd8b2850f945d2c48f6cf95525d80a38dd5a037cd2bb190a13099c53e27ab6073847c3778f391f2eb9acaaa7f754eaa90fcb39947ab6a862b2ab97bcdc4266fda6b05a95e31f7ac7bd270e34812f94b5089ecb6500ccc8845198d9c99d313ed4e94ac77e5996d63ad16cc6456cd24c622752ac31ce6e4234f9a4be3aa6b2bf7ded2efba726e1c3b2a67279e3581a5e76f32e9c164552feedbba2abc31908efaee72fe2033ca79e00d94b62bd501a88c363bc6f5e6a8e1462f6c21b4fdef02a5b62c8a439596ba9f6858ec390a652ab487efdaebe31d1907c7c574130736d7eac06b5080cc8f9ceabf4489220cdb04f409c4036ca0acefa1d217bba2e7e9d0b96ee515d64e59bc368b79ad53f81605b775c06ee0e5e4cedfb0cd3e255be0c5ba717f0ee458a2e993b83177904c47dede184e0bf881da91d97a20ebc6c73bc3555386eb2e685a2b16271df8416f9eef195556b560c42148187a992c97b0fce306ef330a3cc1f565332d8b8bde276b237b21b1357703dcabc6ae646f2d402239f4f3857ce8eac1d5801265d76420c168a885e371b417d49cb14a7325bfc65a659f6564e69e2f4acfd093f801876cb18942202e6570deaa326d336e7e423244ce7f1b1869b41ecc778d6192e669fe1260ffa3ebbc4cb913385484783bb49d3c854c411117420cbc6751a0e852cb2edbaa4d523f323a0d2121400dc2483abfc249bfd7fda9458e59692b695597f9380606408a13fb94c2a0cec7cfe906a8776647a4313075b10054c5ae48e1f345bc0fc7ea3568ec45c788b08b81306edc4749711c7555ce58017fcfedbe1dac823ffbbf5657f1272f8b7319960e7b758dd62e9d12207c6653f596a5c0c0cfcbaca9ec2aa985056f6c862cd51e152567576c1dc005826a4d8782155246366ae618c650402769dc7418ae4c541168a30d52798eee743d4599861316c5627d585b59c595394a401dca5902e7fe8c8df6e1000e2f026cca85ecd2584a5518e618e99bbc73c22e5bbd3b730345803740eda52e623007eaf34054e6c4febaff3427996b21c51a49a12ebf7436b31da1ef3614284e28d31c5abd38160e2fb7cd22b74e9b52ef6a6d0cde45f3a35d6a2b3c4690d4d28167b7f1595a82b1aad8c9db3e829c0fdb0cea280212df593ceada7f03005f8e7d01fb80c414c76b49115680d1f3acfb7ccba797b96629e80f763c424f397c49c2f96423806217c12f0d2ba6495e151eee5a028f79ad6be56d720fc354addf6e7dd555c9bb5ab87a237eb9d543752a65148b515acc6a2b69dd2bb675ac3b1a8a132b70b678239520f0cc340ae9b7e021dbf6e9d55f9ca79203ea857f4e57f2d0603ce0010192c782dbe2273589e28a84fb31b2f1635a5501e08bf03b55e73f9589683717aef37e352afd18bc0509ca2755b7473639d6525b19bf29b88f8d79d35ad70836ffb8a30eb4bcadf70ba4cd87d619153b6f1021c959245a39e43c6caa3a00fff3fffcf3a988e3f4b21f1bc183f539a92f13e0e577bbf2aab4824909dba8eeb3b5fe221ae6a372f7ae7595abe0b78115534e25511845ec7454e75cd24b4f66303793046c66b219771f9e1b16c54b69177e5441016076b5a5f8acf72d86a248980af5699612e62acc2fff53833f30c65798a22dec89e4e1feb12f6bda3a12de3410a2c67595da84297a1f6423beeda6181f8dcce3cfe6472a48ff74c8b7c9e4bf025574c2dd89242990c0c035965ebd40a51e4dc5f4526dbfb521e6e17600878cec4be6039e50516877c9f639808799d14f46bc44bd491f3ea92500a48fda9aedacde8e73cf0295262701b7671600377c58561d8f721387b20505720041d9cd02766571152a10f24e0b99aee55aeb9e358cd2a32e620c4e2f61d71eab6edb9de8526f9a51b0b8090f8687f6dd2f80a063cd8ee8b55da1a28a865418d61cae41219d48f8c6235124246cb223dede21e277921d34b8385c30d3f4267760f52ce3ee84d14de58b974d5285e941e89308cd95638e387e4d005dc25d0efba7c8f2cc418ca43919b217f70d0db14339de79152e5e7cd4b7f8b65c0928d29c80069a6dcf0d8d8bfaa89fd23c37dcb0103391e150b56cb9241b4cefb6ef037c50458d52e1b24d62fa3fc4d616a5f79db46a98d0d52e7d0fcf9a7ad81b0192d2f1c1677c6dfab6cb838f759f9cf28336843ff0645fa16270fce0486584e129d8c7d6e5ae13ba0de15e74a39ccc2800642ad38892ad7eb7d36a597590d5c56abf6687659ead99c1996b0bf2c0bc4ac45be929ea73a9449a46c8f6f2979c18e8364afaf61c3a9373ce76397ea202ccab1d87aacc67120b9c8895ac751568f8fb1759fafca80d774c260124b23f6015902d9aa24119bbfbfee7ccf50eec51b8692d60745dff5c69a3e84cb729da7f049311d5c06b34d3d344f7b74dda9c795fd03b41fa41936860f4ecec22a799a568395f769ac7c9d0630df657b6b9d4ce28edb54e43680dcaa926235c5817e9a1875561322704a22a124507a6342245f400aec62fa90235a762236eda90a6bffb98c1a0c2436b043b59a38eb952f819330c149bb3a928e4d700bccae8c5e4473e49ead9c62edab15045794f949c7c9e6f20e6152e67d7e95ecae0fc4336fa9691392929ca0d4a162af9cf26ed2348e3cf483357532782fbef5b273d2ae6eb654a7fef770e68e8f2d42ad77ad3fc58774d43a5c10ad532189f24a1a00d1df0fee821c07437aabf0233a1a3b96ec12e86bb03a3675d7e3aff3fe7013592e5d2d0139efa9f0da5ef5b32bd3d816e0ef7ece22e430a77d5719c6e3d160bdc8e6a5a76657537590b768f1eeeff4af905ca1836a00e14acaf098cb3118aa9be2a1c60115be80a44f686c94d3b45b408cbf6bf46e792399a87eb17ba23ffa15411709d755a2783c8617574d3bd67be2b0860c897c5c4a9c4fba95017877342e35fb66496ac2c6673ac2b20d0220fa0986be8ec9db232f87f4c0124b423f89cb371bbde5d94f321251c34b06c2bcf015124eff3c158072b9de2e7928634b75fb76c8cdcf0c522a88e5851128d2e16c0dc69dc88ff15dc9606c62e69e8c94a3765b64b6d9ce98624ddeda6ffcc946b8cc8f1bd0a4c7c5b726c27b218844763b5357b15aabb1b5d1867cb718a675cfe07a77cf3e148d4b34b32d6199a82e3bdf58e29f469806d6da434c7507a40968331cc49eb2ee597d9c909c929755f2b6b7bbaf4e4cf6d63f50bec171db964e964405c9deee37af599630a9ba2528a7e6500b653ece47f7662ba02d95252fd0f3f479043fe9ba34f7df6a00ab2b9c78f77314d813ab06f93dc55128c09c7de53b0374407bfc079bc79676578f3da14e67290effd5f7f3f99a0a8d8947cb894197721fb3a76d13a8775b7bf6c008bac5fb6f6220a92503fdf2a6bb8ba232b0857e0c6873116dd47ae9935490e91ceada804724830ff9005ab313988aa5be4a41486e070c65a81516574b901ae2c9acec7aa75a6b933a16cbb6f3b1c749ea430f05daaf9d5f5001591eb0ec43d6aa77793f69950358ed181c03e503e0c4c405d9c179470c0cb42704efffddfd2c081a036fd6392f6c3c876df01bdb7ca02d97c5dcb2e07ec3fccba6a5c986326e82cc5b1b1cff7957586122e60b2a6eb87b9a58df8b1ff42910842e7beb66818c90659584b96eb6bd373d33d4f2d990e4096011ad4b16daf466f7f7d24d0ae2bfec62c52fc6a28195234f08aedfecdb73734fa06e7e020a4ab5b1f15cf94e403e4bd571af8a7e7006f28a90b2d058ccfbbb873e5fcf691965ca7374f17f747ec39b55601ca25cdca84d4e8a94ddeb62282234b626217d37fe3591dfd0e8cae5352143da9fb360ddfaf9d05bf27a1a7df61b5ddba7350965b64ff20a6f36d9b4ad329078b0b022ff1c28e939f4664d71c9c45743f7b0e56ac59781904710ac30807bd5672b3b31a714b17990dd39d1850b4c70bd6df9b8cf760540d86b3864067bc4825fe7e43d817a6f625c24da6f3d7d8831a79a308b145170a7bcf4aa3cb65b7814123b2c4805d23c53fea19e83972dbc39fb7311361a3059eb835dc4971a3b10ac0a77f7d69053ccd53a6d7850ac4b9f6012f7eecb8a29d8aa343a52eace9ea77e1a78f3e7d8fd526e28b8e8152d6b58cfd1873f15ad745fb6137ce2f3ea049045212d6b40dc49646e222a8ae4993fe0d2dbcafb3125c76ac46848c5cd6560b9a112cb9af232e4c737566baf88c4de82d81f996eb4f4ee502015115ce623e0511c50d88957a9d5cd3d74922c93d36b5dc55bfad2def4dc32b23f95fbce8ad74c4ab204180e0a34d04252f6e95fde8ed99af94497de7ff0758b08ab878e09e5fe2f6a5a8bca919586e717098e0b3de498992138f167d8cce64d54622385e2f8516ca2fafa543980cc6eddb1139ccf8270c5368c0098b23c28226248ad7c322de72bf262816b801086e462e9cfd00fb96e135d6db814e749aaebc4fc903535dadb76245d0ea1ff6b7aa349ff4f2d60fee0eb4318ad0df35a80c56a6776fba6a205dba1da44e985e2fda43564ef4a43ff5123d645d992e9e71792c3b8e00a4f87f009f9186cb4be50a2221f09c4862fd9d2560ed5eb6e7ec5ee18dd4d91f5d58f016545837598579654568feae667d9b4b86db5ceeaf24e17631626d3d94ed00c2078f7f99e490cedc94c4841832acd2ab1a2fd8efe125422bf3b2b4c493540c5210dce4490962dba52a697aedfafd3f1fe0f5994aa8a15835e5f88c86f42eb87a931abc85f7965bb1e4574e4cca76e1b1f1776fb72c647082236c8b57a7bce793b69c0d61c0724de0ceaa61b8c5229da3249d3adfaf145b30b0d37b4ce6169f036e50354d82d77548ef178544b3dfba807da66fc967f6ee996f59dc0cc16b8b5e5b3a61ef2f1ed988a633858de81165caffda9a9a4d648373e9b761f5f03e78181f751747ebe6442e168a9d842e192e2f9aa2d6a2749877f760af6f0a1f03d8c4ffd9ad242fa2c6273f84fe0964a18a53316057bcc408aa221610a1ba05da42e70872cfef40a0314bca314c57e9d94f2a0bbae0f931440201c2cf467118edf05303d1fdbda4e99ee9ac7c1f3a1e363add1ce64da5cbc4e809a090e1f89a9b3f20e9850ab98d00e6731b00851e7d986c45fdfd0b8e3c9cc98c96b8a8ad52ae3223b7de9ed584f02a2f7cb87ee91cb1e9f37d549ba79639962d50b707803bdcf005be57b5d9bfbe4cf94b067fa3a3e718ca2c4513f883c8447158621ac7ea2e42e4d4301eb3e262731d270af0f2f35f462240fc9cd636d34d5a8d5e36e38940167d0fcdfd1d25ed8b386834ae661f882388af43f579b3e12e15786660b092e0fef2d9b34a9b1664c32d0fff8a90672542017b78eed64ccae7b45eddd4c8b767b21c9c4450b77a310d2be22cc7ef57059de56269eece6e487eff20878097a2e68a6546702ea0f7aaa1bdfa94a0ab424f104892066eae0f387c4a326d863a7166043e6a16590c91607af63076c01daaf1daeefd777cfb62856e6742f1be351ea5441cc0f518712960d79e168ac82c61ce1fdc79663994a77965a067ce31f53b138f0c3d7a0789838abc7c7493cc766c176866c7015b1d2b8f77c4db519f1fae5bcfd11915952a7e6b6ea77bf0d64beec520e11d94acc0dc5f3c449e64fab84a6912966d35866e84c4fbeb1ccd6278a73319d5ef41893b0993515e8d17e9148db10b2b3e6a71266c1db04138eee0dfd6a606c9eeea633d1ae8d85bc8434699c48690da27b142a33c3da04e96b236e7810ffe998fff4216739df6dc6c79a05069571ac7fe76bacb976124fcddd23baf6f4c006491843db5c47b543501e7ba4c800b48dc0b5aea82bf68561bf89d3d1f610d69fa486c03f772bf9fd81d1c0ad939245c4fc74fbc5e71e7941993eb7cbf4fcf7ff0b2e35544e5f209d7278a3b7d33ddbcaf326a6aae125103c5b8c2ad63bd7eea318e2f8980dc8dc5692e6eabcf07527287341b05d1e6ed0a21a8be77a55e03352b013c094828d78e8f3d5fee171696ad8b977eefdb4958d34a6590f92eaa5752828b0fd27e551721b9b71449c1abbf3e5d8fe56191299fcd6db19742d516d6135f46e8f62e30a4be858818379df9221cd9e498e6a636f92cc85c72d8821215b243b5e81ab732aeab8f4201e8f57e5ce0f82b89de5b882968bf248d32f2fb014a75a9dff8483c02b1487a80bd70d4554a43a56efc5fac53ba0490353e38a9ea5bf4f9e4deb728239de6ef09cdc00023baccacacc9095d02a2c97a68dc1e45cc4a05123b2e972338c05f5a186429c171b7c7d8261fdd57916304459d604f8d8dde489823dca8d04d7077e51c7ed06f476ca52918ae610e0085c4d419144dbbc1c464b01bf39ba35185dab4f650e171f526c6ede67a492b705397deefb33fa2300d3c9942101b0100dc4bfe67c07e577fd7b93ae25ae725385bfc25a0f08dcba7abb7a983e52a03b7d8e08c5ee885172996101ed07bf55d7ff1e9a784ed479c87f71eee7ab8d8fac0dc4dbf0d972011871dbbe735dcab79ceab61e18ec461cd162e00e8f1e1380933d24253c8cf27bd344afb2f4ed02600dce614a49b02bec0e5efa832404fb569eda7d78f404856394a9ee47ab27f1d6a2240192b9a27087d72be2e0ed204ac47a4cc08a155ec4a17c4c16c9bd864e8227a1cad6108275f5acd85071395955d3919b74336dd595b1954fc0b38a6d0d73307210c8ed2eccfa9350e329011ab2bbad66003b6e86236c77cbded128766da9347bb53d278d19fe1848aee558584273ed0c47c98dd8e56046d17b1f7a49d7355f499773579286718c60d07ef6a72f0b842665bbb58984412cc3fb9701a41022db52d462661b6fbd8860fa88a765be2b112c98dc03ceda9a889100ea63bf356095b2f7daa95322b9945ecc8183837943faef721ca7b31330dd188cc075ba49ab8731aeeabd5c9455de165245b4096a6842afd312525ba4255714927a6c11e85d38daeb215b69d7852151ec1ecdc17e287ed6ce0b5ff13733b6819f758ed7be368716c71b3db41f869da1e0a823df2a581b6da6436827be932c062db1889ac6e23e71db204833ffb3e005177e31a6fa6f83f5f289b4a6478a29db2ea2bfef3f1e3644c4276fa9284d16d09c664c66dfb470819f22d4ef491712a3cf307ef69c1091cc7a9b30f2cfedf4179c1dadedc7e6806a82332dc870a510a564b0c677980e37222af021571a3e979399b51c6437b1732b20524352bab6925f931750c633802e833ecda0fbabb23dec5d3055a3baab4cf6024e5e822945ae244bf2a2cbabe68bb97722bd6d4a4ebaffeb2615cf1827161dfbb6766646fb15bfa644d09e66bd17e2c80005c7ead7fffa7500177a8d8abf8e134ab271a7346b8fffea174a32184db95437b37eebf089de92cffb835c98d6319b11bad24342691de733f5280a17671bab04d6d4ddc3e50cf580bfc81fb4c5cc2a7a60b9448f33a46e51f5e6133b1b045652cec36633261cb2e0fa90b2ea3701992162931bae9db88707732fe9b31f3259de8b93b3004842f9b5feb63155ad1dea787e2f548ee721b7ff24c6263c6ea0f3724b9608496e8b5f4bf7fb08a049bd8ab07418f7d535719a73d926c6b9cabf8c8d11a9ec08086f864b7f22b0a3f724ec8b290e28b3e44bf1b799951d678399cc4f20261f0cfbcf8e0fa4fa281117f8e7bdfa68405d6b5f1ad79db183dd982fbab45a40b245e049ab1edfaf66e4cec69942be4405ca439b35cf9bb1c367422d655d61a6f9bcac2268c7aa69d4efb10b53e7c879534d856b17519458e2bd4143642a29956c05c43c73ac728215a4653ca1f43b734884cdeb845d857f18106cde6fec213fef05b7a0fd584359e965da506839a3e859882c53a595c069c0e99b8f49bd065951aa67e7088dedf4833473649960a5c23b1f72acf4c37c73cde5f5034306e28c2238f94c4f04823e337ab9179b609285bba80c5ae2d02334f4bbd48bd6d32c11d27533cc500b4984983f6f200cc8909b29b95cb386af507a964665169465efbb27da5f5957ae1ebe8196f0149b724675c6eb6526e525e41f3a3dd1959a0136e8399265138f8e19a41c4138446cdb943c57f54427628142b27f41dfd6f1afe3903b0ca771684fa076afd60dded638ebd0c24e9381ac14e7b160830ccd3e09f349b347b877ac174ec8d315548b66e43778358242d48b480a7e200a4ac6f91b46b28237d0315a51bc9674c4ee11f2b32ca31365d28931d17db846429e573305c077b1a661e7bbd6607ca979a7e28dd01425034ae32b0ec40314764bfbfd12c00f6d846aad2a40b961c1bead63dd89b8849cf3a676cfac51f154b73375ec2742479781c0d966d6b4026d4247474b62d4921d084bf5bef7204f6032d047b3f9a969e07e27ef3158c16260303fe6250f51f302b53f1a8b1e298cfb78b8e958807aded260b317ec078dc38ca37fda3b7edf07eea6e29de86ba1960036f8bf6a1438814ea62eb5ff7b0dbe2dddc8ed001b768b8cb7bf4435976014956720b4ed046882d5b06ec3b26d14fd207310b3ec6b22256c11a149e3619c7c074133f6a21df6749f62edc3e1dcb8f46a5a65509a430c6bc73dce55fd26d92eef52829abe224b0462ccda3fb90aef5a02942b0ddbcaaece8bc03c6ea00d70783c3a8b96427ff75a3e1f225249701c78298482c063212e3f62918188c3db08da3a0be0a5647b893e2ed0d30442fa99f410d3e1262b02b983f7e48df3b253eadc79e32bab95da2d0519ef22564b661216a3434dbc5e3fb49fd329d1090fb2e71baa51f9938c8cba87a34b634e073c7e97ecf68952bfd43c46aeefa08f426abe38bf0f92b35abc3a64b645916d00cef10203534ced6320e421811f5d0f6aef50de190e5b47b6d6e8114d642b0120d8eb24dce475b393b4a44c12f70186ec39c1bbbe85cc25f3bea6fc3a789167068b34386983c9df7d679ef468d14143f363a83802f277cb58183656ee80fbe4bf00fb717a57115e4436dc292a790a6d9fec356cdf19e28e275b927171c6de70fdcceb1189b3a692bc80fb80dabab7fd5b56c1d528e48a4748c5270c5bea88cd24bfe5225325e2c332f442608fb271bac1914d9d2bab8c55303818d86b9c45bb3ba874f29bae40cdf43d1ebe6af75c93d8b47192afbcae7955717329eee1788198fb8643792363a09575ebf2a11352cab93d23d0e2e281482cdcc6738b2787c47925a63acb28a21fcbe7fb16e1f89d00f5adf4a39031d8810eb91d5384d37b8b16e5c55a222a5d9a454d3334b0c3ad1d52ea7f07d7cc08d7dfdf4cb577ce86025350a800680e5d706f32c37a3bfa7aaad02b3a846726ae3269196c999efff5212d9d5447b7fa5c832ffd23241528caab0ebab0af6107a2bf9fbad6952cc3abb3bb4af228d62e7a4a3dbca26d2948ea5d7a4bbbaa1566c1e28d29dee4f2ada82a901ef59a885545f6e7235eb3c88a4dcba0b7d93ab974279c97198da8097ad18f460caf4aad58bc221afbb5e0ce4453c83a27cedcefb38e22f7754486193ed60eb566036e552c05a8d040b4623936e5f100e492652fecc3d9047d1f5c112e6d528ca4fb2d894a784e7e761ee383371009a9c13c92eef132e91892b3307fe7023548ae08e0c43b8fbf3512ce5ad9899c17eb7e0fa2c7261b6e1a78127d2b340c7c0c4bbb3db9eb881dd3db05620479f778573480c21ff3d3dd951e81d2382fa7f928d34e737f59c796e2fcae5c7fce75f9106c752b460ad6670f96ecc672e2195c55e201cfb2fb68f35aab90e09249aecac499dab6437c580975834c79471cf414f913f72864530c9ecb9fd66e0647f105a3b414ab076937c0ce78a915d7842cc09e835ab1cc5e0942a67414cbe10b7344a7e5eb4b5e454ad57672dffda633414470713169c5065b7fd4758d42bb43842fbd8660dea9ffbc7835a83d773c706a2b3f56a33fa1c922c96ec4a101a8f26693ab4b213ea9505dd7a87f5eca72bbd80ab9ffe9329723058867273f40c13f08f389e3171d409a346af7a521a728ec76c4155f4b3e0310d2079f4a9776b674494afcbaa410e152dc5dc0143d851df9c21004ba0d40e4957c9721381bb1ee5d4c7928f8df0cc22ec433bb0ce5cb18425d0dc1add16aa414eb3d376924f529ce752e8e451d042712e00725ef07649d4f507e93cf457e8b340495d44dbe197ceb966b4ea680dd695ae0cf7a63a98589d589d11931693e2cadac56aab28eee873b2695261bdde5bf7496b4c678cbefe9e29569fe264c918cac4a1685d943e01b564873330c415ec510737b945d52fd40e80673d5288b24a8991c7560e114f5572624ebde21c7083346d98b225ea39dd14290e01efdab79feefce6caf706e677bede45ee24c24c5582287e25b56968514cf2cb4c2920fc26797a81795600741a5e20a58149caa65ff4025437e1b0e24848c4137154cd714ebb138ac5ec650cf44dc49686c6b7778e952932e15fdfe3460d8d6e9b28e2410ed996b2377d4b09c33bd0b1c2b659e37d44c33efe25ec7ec492fa62fc4151052c0d15c007544cac4d099592c2563ccfb437d73b03edc920534405aa0ba0f8922725b18013bc774ebe4e61bd2e8aa9c70373837b9ab89b82aa854a7a79282a641902be3cb8884df1f7d50335d65739548e5483b4cc48f9fdf92837f4aa22c4d1081b2dbd048cca42881d1e6fe367f21de70c067134a4437521f701f996b9d9ab06f74c41a3218566acd74690db88fa88911cd511f79809420a2e76f6777febeda6b6d7fdaba5d915766cfc195b2dd7a32ddcca9fe3327cdb34fd8d710ee7af914a8951ff49f926e97e756774feeb3d8e8df998e52446f326b409dd591fc86bc20836b789bd011bdcbf41edfd87fd74b9f5f1de8b69eb81a43bebca6f70e0daf2ec957c4fd0270f5f1352928a20c143a4d399903142fc9ae999af9d47c44fa897ad15db1941d97487a0e02c7d823973f44898acbaba99c51bf55754b33e187788f53870bc05075231ee5467e4fa8bde0f03e9424fe1a3615d6356519d29a37a49d8122c6e83a6cd23a5ce92456f821397f95dcbc402437c5e0516d59d493e9fbf0fce8fe1062fcc8a18a149ff010a8363d816cc6be163b4839d7248d5d097421130293cb6d6209c5784d1e16d82b741eb0b0ed07b10332f55ba3c57d585437cb514f5cf1d347ab25a919caf3b913f582ca18ead97eba69c27efb8daa2e33bf6f3679816ce7e41772817ee178744fba3816cb71c2457f24b31421f941acf5a55574c8a869a7a00221b44eb72c8226b470335fc9d6a9314507deb1eb742fde031d4ddda0f4f6642a6034c69bea17eafaa54f4a6b0c2f14ab46ebc5444534df29fa676aa3aa62c1ab05b7e732002990e0c02954f593b2896c0c50bd7337f2817482862ae9574799cb00a2dc739477273a0cffb67f87e55424e59ceb06fc870bc0f21eeb27463e661fa0f1d594846deeb439c92b370eb83572cf6985a9e68a7b251549911ffd4c307eea352ce19674228bab9fdc89d18a0249416a447bd98baaba64c743e8ecb3baf36a2ea02ce3a60017fdc1e941a4764bdad638e5b8bc159c03da8a73f5ceead7d164f5b826938b2f026050bd65771af792433876fc35ec6eec467792c82052d1cc3c9e61338892b924f0523a102f91b74cb72becf261fd794e10119b54687f737d2bd4129ff0e9f2b208210ddba2a6f0b52b473bd570b4af6383df09abc109e01b6257171000ead1f5a9603c61912a862084bc2ec83bd91bd08133530b1e34bae4930aa47cc24da7af9752f6b085809e1b3ad5405dff300754f1cffe3eac34ef86d9b8f40e47b5d6965b52e30662577b3738e7d25ed07970e854b31aeb7cd8c9bb51580a22d5747bf3016aa4dff43e746b55ad15d9d14b75ce3f41ea4cb1f10d82179c9e73373dc716afb564cd3f76ecd38153f3134d5c2973e67f16b6f7231f6eef07c3e3bd8651a7ee7248eab4aafc125bcd31a0687e9dc6d9779bcfef533bd705c500a230d4078a4a53bc701c4fd5c2fadc70402587aa943a047e5b61256f9fe80716118d4a7ede3003e7e36c7ac1cc9b931d00b2cb16516199847d5e373fdf1dc6f8e18db9dffa02a1f8e171244466bddbfd326c343d6d884e5d70588591daf2d6a8f430a3ed8be32bba8b6154f61e7c72155708aeca8c25bb2a121a1cc32c5fa7c97fe5912c64f334dcf8f23a4b7ccad6514eaa1cfed88716e403d9d251a19b8078de65a3cbcd511d0daffa8acd7dc1064be14e1dd9826ba306807a30a362251be8c92d9cbd012f850f50af3431590727b7a5ae4480135af5c5d773b7feb362fa56126483cbb69e63c2073343709aa224960496db264d4d73079cb120521e90c0610b5d7dd5cce01bdaf1ec84e0cde9bc0fc9d9f00612435aaaad76afbc772282450736be235467f47c8cee90dbe8320ffcf1de5a77d4c951ef1a318c44d32a7f60abacfe1ecf84ea5e8255f03835b897dce4182caa0140f6ee45a277628373c78ddd8deebcbd0e8ce5efeca9a016378cee1b025c5960d28b22c887a0f51de632b9db87daa41abdc2ccf10a5dba3b961eb658afc9e8e4967df08a70928c77ec64ad04d9aa85f1908fbb0ea0f6819951c2fab80155b9ea456e4c9008f22082694bd30db958e5cb093c7cf34075bd645ee8077c31c583c9d346f54dbc3b79c64eb4f2b04c50712ea1949cb49a05a914b41df81babac2c6bcd8a9a3f783828a2a9ddf66afef0f7e959911971c5750c4797a6df78f1f9efc8f8ce9446072e4e1b3df2536b9fa9a43d715f6fb6ea1be302c9e64f98a850d812fdb86d887f9333185c286257625e428ba055d13584298578bb7ca1c3ab4585d5899cf95b7c0a50f7875d773058535964ff507ce1a18d301e133a1e86dce9c7d14a84bc5cdf0cc95d7b45c9373a7a31b60fa56704c5eadb8fca34e5a03f53932f3335b454ce2dedf8cec5aa9ac880ce9abde76104b9ec14ba89564637e88d5aed1728b07b70e208f5be471133f43a457bb21651b04c8924f2c7786667413388a3322dd90425f01492e07a6dded267d5f3f3437cf0a2d2f99e4b622bec62765432b489e7ad2327e387397694b131fc41f028f9cc1fe57e6c5e490e336adb80ab8d2f866f347b53c8788623053d392dd586787255842fad2b2ac3c398f90bbccae53223f3d2062cbe938c518201e292af27c03734f016a2704ed6c23fdb419014c80a1f12c63cc17124813fd90821afe769b6f1537876ac0a15b536caab43c279ffb2017abe105e43c0fb4d0b7d0fa409296978bf2e5387f35989adb32cabfc517f2847137c43f91a32986845a8c243f997d458439ec1651ae20088426eb0f600862e5c662697e0f09315cce752f307100ecc73f186cce97c055b83289b204e52bf4588952947a23338aa417b63c2161e2e9c1b06dd1e6db618f2633561bbc4e1a64123f3feb097d69418e87ff2133607d5ce6c56c08874e4e41730ff70a432bd77892ccf8c5a849faf63c95e8ea6f73b30681181db43da6852f9ab0cfabd46c458df0785f4cff07b6dbddce3ac37ab88a19ef15dcb4294fc9b28a46b297ba2faea87bc2e8e47b6272bdaf8a75493887ad54699cd9fe3cbc220d54ac68d2171b3b2736e01ef35cc0882350074bb13ec0e8b6c1ed96c093e45aced7902e9428a17ff2ed1a1fe6c30d547bdf1823b6370bafbef6cc6cd9199d8048b48834e4c0aaed49f3fe1b97abf4b854cee0975d9e43983abe9506a0f88b691459521f0314295d1bb0c5d8f7db6199ae6536f68982f5dca9691fe3f886e82aa6770189a50ea08beba13c311135ba5f535c56c35c3c97da2cc646d8bcb5179ff1417b7cfecdfa984e78dd9251eb9579450b28336939209505da0c8c6f327ae81e29a9fb99fde287f059c17e2b8f30d73b13e7b3b64db831a8a152fb45ba6ee64e0e0c7a072663c12d92970a04fafd6e2e85486193327e795b2e5cf47c57a0c26f17e6615436d3923b29ce5f717afdb8f2df428e361dcf5c69c86f9bff823567219a058c56d2eda9e028a93bc9d97531e874784233970c6cdff617e75d645a03aace57cdc62f749cbd8f1b70ff14bedbb405e4b8ba02995edf8ec92513aaed8afa3cce692b8cf5622535d364d4e297bb11adcfddae74a68c7f2cf1731cb4cc33c315ce97928526d7851f0f9053616a59a7644ed584ce7e763bb7b546df0a59f997e954051de0b33b600f8601a2845c44fab96877f7411f3cf4d30fe55f5c561b25703a525882a3b3d140d9da1c21e88c6784edcc89a85c26816630ebc7792d9c73517b9569b225c7aba5cdd0c7aaff4631ae5f93d958491dd08492c93c0ff6c43d2345d507de2fe21c1accac0b044a0c9b62cac0c163402f967d7f410610669d530c908e467759d6e855f7cdc4f5487a16335df94c63cd0e90d43dec0411eb760fc06e3230b03a55319c7ca3a12a78b27f0592187845a39252569eb5780bbf64dac3e1a6301ffc79ce6ba235d1c793d969dd46acc4bcf732aba51c5c1742bfbcc030e7c14f96dd3d37b27e9c01fd3e987bd2a5779b40e48f90e452f57242299b1663b4d03bb73901fa422c86ae25349cdbc5edf17ec7e0eaa25a1266b03c275e2c4a8315240ef30ac595cdb4bf550115ada82ec30da507a93c3b0dec8d2b422a134a214363bd46fffe0ca97c776b153b9c65d44ed53595d612ed9f96b986656571e17904fa03b86def463147b1008bc57abf6b22f442019f6575f2c977791d3a6785ab73d9282744773bda1470d5af70ecb664878c4723d7c0e85cba99d71d1a8365d1a2fd942d59592832f4bc8dc07e2349b6f706020e744c03b4f7c34aed36c6099116582688e2128ed38cd5dcb134ad992fa124fbb10fad4ae5df0472c506b9fca6468a05b0fd43bf6b96aa77295a4ed9f2e8e1ece167745b1425bbed55c58ff3211f7088c129a8c43f60ae68fabfef7b0ee2283307de21443d51cc911df25e26b8837aeb77ca9e974f4bf39e91b39a8f69da53b0affab20f3a3e2b387ad05fcaa6c5d9eb53a943f5754d9ad2c08b854640cf7fcf21e6c3e1eb9daeed64e644e0d72e788cfa72174ca97091183f2130063ef3ae8e4eee3f46327137730d819ec89e7cc48f78353886d051a2bf0752908dda2cbbbacc06a2964d92274d2d2d4f50385e4c705ee629b274a1d050797e4e04009618c70344c596432a28dbf74010275ff926e297dd2eccf6a808cdb70a120528fe67eb4f6245abdf3a4032024f06f2b1662f277957302ad7bd1d825ee1ddf40d69d970b43d6f4bf2163bb35ab7656c5c310fc0bbf3364c0acf1811ffef7c39cd8b5e59a458c19085e55e974d15274871db18440b3573134ddfd67f44a5fe20c251adca845afc05d72273ed00cecbc0a65af2695206d6a1e883f76fd278438ccc5812e7cf8bc317091e17c127883212b4940f8b2f3239645c651bd5216299aea37313fe295bcdc8a87b686689af7b4562e7fc2bd7e81709f3c272c4ad606874c228e23e4edca38b56b2f923fff1fd057fa47953323ed7655dec9b37bcf2ee6214349e567343f5631b8e18b5d7c24a70448f62ba35ab9e8c0cc8d1dcef9d0e03f30368a4ab6b74b135af645e45d9420d75616c1e468bc0942a516a4e996c2829343843edcf5149467309b68e98b13a6b5f46ae41fd9fb2d7bf13a54b6f6b09ac012bc9b9b69911ab806253468e092f073960fc60ca8a96a4c8b0c9ccee2be75cf366abc7d50871b2efd778bee6650978c442122bb85552acbd5f960c25426c526c280639ee0732be19572e0bce8af40d03758d8219eb38a85768fee00ec7d4d88ce2826b0f27f6576c266eb15d06c157c6f6b794fd9e42fd24a938fd09da1a9922bc4aa10f9776ff205c9b6ba3a5594052b6220f13a0d55dde141ef70d1a33c9e011c9e594b05450db64489626fd47b6e419107e118b1eac452fd829842d5977d2ee3dd8eb6a7ae12a7d4dffdae4480fe478ae1dd7daf89ec092dfcf9e3c6c426997204635e40a80783c2f11cdf4f099a99f22a8286d67ebce6d4aee00745b11c30352bfe6e0e2a77808d594980e610f5a4f62ea67099df4f1ff6aeb6186a29bc15b1f8e3544a95bd79d8f83e8d30ad701bdde29a5d694449a20beea9827d6d4567f14bdc69a6fbe738a6fa3d32d854e3711ffa426df3a4f35b829482591408df9809e14ea90e2102cb3ebe7e6c47087d9e86ab8e096244284458bccda008ed98d277e3ab9790af4eccfd7d0138a6c2d1ed32473604dd9e2fa599675d13689132d6d0a5dafcb9b1371ebaa4186301a8605d674a359bdaabd031a03eb19f8e78521014314b19fd799e0e5158b9aae32bd77e9a2a660831d27adc10cfb008f27151ac5b2620735fc0e4af1e9a0c9bfaaeec27b8185579ee1d1701b40b8dd48797712512200846d4586c0184fb66662e7a0edeac727bdf35afb7d0b9a127ff4becdac6f1a58e04e7d3ac5b44aba765b02a1550b3da85cc9b9702c06f6054f6997afc19d36e66b821cfc84f6956ebfaf1e735fa9b113d24da3ee0495ccb72aff7afcbb8e47da49d8fa125c60c412692ccdc88efeca1cf90f6a9d19d7411ec013e803eea9452ed1c28f75054bbadd32de80af3c3b9d8ea184d6ab3ffc830afb879fd66d8913981dd4c277d46373bf479b136944061688d4827f4a19cb79b0ac40f1d22e7b1001834b4c535a25192536795a206cf736ca8cc6b289c51dc10522a718befe037b6d6084a52be36869b96a52caeb021a20a30371eddb795ffd91ce29a9fcc457a37dc280896f48d16c5bd3472cd02970ea3f9b87e43e3f14768a8ab70abce2e2edf2606705bab05d7dc5fc3a62b5816d526ffe6f1d4d8b5105532447061fdbc3a5e2c5011995f7db9c9e12523b7f847b321f457616ba734056be2e5162bf7a4b9f80d83ee7bfa16f1bf0a67b58bca376cd1ecc4cfffac89d73a706528f168e83aaab98b076da74118e390be3209d632fe9eff584011e7b3ca6be034c649fd6a3d5a5930c0299030c159d527fc6240de9b8b0391919124a81a3a3a944ebc2569c7fa27dadd8e0c17ff2ddc9845ac63edf9768bce47ce1e8e60ba777c33de23c903a146711cf707edf702bcfeef1df96bc9341302797a0697939cda656710fae547ee4375a3ff7717319f278fcd9c5ef21c778dc058e13fe5b5eecbe0e944771f52aff75cd99b76dd73a2d68b1dc4f2922840f80075c4cd742f3ff6c01b93f0430dbdbdf568521167abff27755951a48c94e87389878c334f7750b6ec71417f3f806ef0e0390fb7f205433b9f3d4eec692a732b58a10ad81d97726b3fd298064f3f52c29856f03f960dee84ed9160153eea5e4c690ce8cb559fc8b1cc60533acfe8108a4b2d1253f26432d4c1a05fbcfc06209cbc1334a0b7c27c74a458cba5da5a9973e05bdafeb337df3aa0f0d016de23271881c8047885c3c570e24d5eec9acf2c7a31c811b6298035dcfd10326c8a1b158d3fe2a3dbba7eb64ef1098ae09899ccc9839375b243f80e5d0c1dafe993d9b77b5adebdb901ef262203aa9a9b8e6a23037c2d2c20862d6deef016448276b7720e6d151771a1807b4efd7854e4b24903675c2c1f36f1279f732f926d1c2d313bb15f5ed3aa9fc1ab075a1f02c7bd31f702a651d6c43b111c525d24419fe91ce23ef0b0aacaecae5a2cd559e5f9d3bb1b7d1806a9b3778768d16fe6c5ac3b8b0b9b8e5f1796993c59da133f2ced6d789f58406ea9e86f2f0c7feaee1e977ca58252ebdcbde83fcec363281ca5e0ad5e75a129479071b7fd410775a8c267241b52283ae00136fc0e18f4c085d590d97e4fc95e6034becd26489b43d2265820a8fd77e383595752b4b3dd29523a9263427f9b55f81c320730cde92d7588c0a05e48046c0d148349f10ea8f79d8b31df7668e7a86885d633ee36c1b692a5324861181bd0d1bad6813c8cf200a83e825dfbdd2be836e58bde38446cf7c2a53a2d7ce1858ccdaaec88f745e86209452c41ecbf161a6f7b92e643703375bea604cb4f754dd0e98d6e6b194adec9912c4649ba51cb4e19757329961a6e0946ddc93cd26fbdbc55fd5fb2b8190cdd5d768b4709e951549439754af510a017aaeeb2047207f854a1db2cc421b68453adcd4ff6cd3816199ce4906a5538e63a632d1053b0c4b39da8219cb51cb0bf6b193dfc291916a89aedf40dfce17013072afd0193681e449148292fb44cf6345275ade50978798b90c6e8296516901547dbe53f9b85eb86c7c5499231dd98e1e0df00ffc68c8b27957d33b10ac344f0a2aa2406db57797d4fc13e33f73fdac9dd9064b6ba29d4b80db6bd6032ddec60f201ab587170d2e2e5ee34b49eef1a93783dd41dd182a455b05c7cfe678e80093cb47979839180095d3a631ddcc9ba00009edecf051dc37a2e86737fb04ebcfd0d9a2ae386d65b41e6f4c3d745feeb1aceba4ee2a07b14423ba15f49a9dd8169dbffd360e787eb8c9aaa4dc708d1969c8af3702d8aa45fd5d54bc321be395b1cc329a1f9a11658773e0caee744f08076f5e77c71cdbba4babb4dca0edcadf6992ae4d6851651d1dfad21d651c322f4f7605c27dfbf16684a47e8d54f719823266f3b54e82960861d324c8da70d9aaafa036fe7fd877580bb7770b846febdd22fb827d3d09370f9134ddd8642878aedee784a7938eaca8375509da6efa30c0ec1d24b0afa5d29bf75ae9eb1c085b42475b0aeb5c74019e5ee0c3731a1f2d88c612641f7ad3626576a69a6228915d52df5ee5d389cc9f9e303bd68ac4a8f89d032f10d72c69d909b0fd232c3e75720c4150b58786fadff2d1ee98d92cfffd38d5f7bba17ee09b78da621c1eed2d1d8f21b92093cc7dcf5759f0058318037c76ed043e9df419012d84b701dd2478fae77e3f4f461f26b4619e5f3903b18608c0fe4233df37a1d838d66cb354c36336621f757021472b82ae810bf7afa00b098251f77929cbf3df1e1d45f5c0281d11253c8132511ed366e8182325c90e0b3b32ea12b3ae12104c7da25af0451495632271604c3b00193d98683e4e19ddad2da6f9f8c8e6df9e48882157af184bb115554c20f61aee591ac895d41f26c985c3b991d96473f35d6e546026a437ccbea34f160d6dadfa60c475b948eaf0528ab545d8267614270e50f1b77521b39274a11aae4174eece4f35d5bff126478b560e663278b0ac310cf2539501e08528f43363926acee459c71c63fde4eca22b67ad1022640b5637e74d113d097cfd8bdb93f971d6c57efd645cc763d67c9b99e2c7fbcf76408697bccee85b40f5b229aa8e9fdd1fa67eca208b878014b6e5b74663d47b704f43abdcd41e2e3d3013ed700727f5d443779d597489af81a2e4a632dcc44c64fc67654035a747b17577a90373e029836fd82e6495652b6fe8c9d664634b3c254df806a4b91f47b2efcd5da85c597076850b6842a289e56958460df07b6015ac0e8659af9e9afdf630d2148fdf6a7b4ce29f8fc0002b505c64ca409c7bedc1c64da521701339d534aad563332d98da3567871e964b0984e3a1566b621093606ede70bb8fbd9580b83718ca260dbd1560f8625050d0006c594adcb6f4b8bfdc96d71e131934ff3cec91b072a9590c208dffdec0bc136de0e0bd2da54e4716032815a56b58878231bddb041be57c5ebc4de91fa8424b5bdcb3fb7e155b66244c15b66da55ab4c5b4b816d31f94fbcfacada83e8819e18c360f2c7649d80f69d7369d1bf7d531b28349adc9f25ce9afc7612fd55d94f549885a19cc4bc413ab509bf25e4ad266ef32b4eaaf7a3070be4bb1f99aa5c8d9032c96b17c5ac6949fb9879fd9ae3b302d65517e1e20884fbb0d658311c9b093c77dac8487363c8be0513fd41395a5603e900bfdc7887657445900ce40c4895f80c7fe4b407bcc433317fb8380c3e93a035b555f51431ced039f68de8316942b0a83695e2f5fa1dc1e982de49137faf723dea481bae5378c2f4aea3d6550901a14dc063c8280b9c9d2124df3dd6431439b51ffa25660374056573a788bd04702d39b29070c9f0e525d1ae3ed5284a8bf10f147e65487662b7f86ada1b58132ee83e86505d665ac13323c8ed77be59f800321d4d6d814950398425fcbc7abd29cbe82002040a6337b0060f7f7d473d18ec41e3edea2a5d49233986b92e729b0ff976ac867b1a6b04edadb795930e2996641c58ece4872bd3598d5b090a897f4be9416328bd8661d24aa76624b2a2e41799e309e5afec6fe5e1eaec6e948478ab46ba686637cfb62e7f9d236e1ad6d4faba14afa9aed7bde13dffaf9c0fd12486e98bb1c68dc632f5909fc6b728918c7d4ec89b98b1ff0b06cb27225bf4f5b24b0bde1db39a17a7f8c340f501813405242086e5f8bf44841187ef3309487c4a1f0d7b0be195de44e68aa3bb034dd66ec353d825fe12cf897d9d336da6e2a85a8d93f13a36c9c1d7a287392f1e97aea566240f1da3381ca8b03e00b2b848657c7ca7c597b3e860a81ddc660e89c5431b271acf3eb0dcb001001a870aa8e4f606755e705debc0caa82e9b30eb77a8c0eea7f4ca33161bd3540d09824e74a4b9cd6c01b7a05b8adce7c8615bc62f2f20d409d36fd55022d12c182658e73f80da72c873cf08b29c3fe943dda1599370b9a224fb61cf727e9112bbd350fccdfc6ecf5d8046a93a963def16f9a1d58bf1f2eac0d07f9b3ef23dbda3a241deac61c994115ab7f94f5d2c476d07eddc5c666069ac5de2f1cd76aeab0460dbf777b1ad526569338c271825f85e676428bcc36004657c8a6e9452f950044ad43b0502b2616e4d157cca1a184c38ebf9672134b9c33184e0d3a01dfa42c280f4efc99270054bf7dc6ccb13e97c578b956df2218550c50f48975b68c0c36fd4a91402f71dcc919d30558eef61e68a60f5af24430bb7bbc031c2f76287bcf6194d5a7f01f68f3d925d3fb4b377595f12d8bd20ab809380c247c923348cc5e0499206a3c3e9b0d1aa467f2dd0caa2e8407a79fc5ea24a866c685e2478099b32d2f1bb47a15cbd5a9e8fd735f8502d15f2dbf090daf3404e15f7322ed4b6e2034540e5b918a09178a5d87dbaf9fb23bd53478653d3b4d820b747743c5856012097b117b6f8a63fc736ebbc64fccb42b0e6e3e5af4c9d71c646f7c1754700f39ac2a44768686d09e4f8bea74e5fde09d86eaeaf4955eadc4e15115d9824e4bcfb3ec2c0d4a01e58dbcfa3eebbb49a5898cd392fec899155d6929e94f1a8ce79ac78b9771b42a9a228d7c55d040180251c4107bf4f79d1bb45b5c23784d7679c826a28c46c28cbc434abc578485e5ab54a63e6ae3d203ebc507c4b21a2f8405de23783c79f4c7d3e3ab9302b6c0917455fcf4d2b5cbde26fe309761f3392fdd9da232f7bfd15f95e8211d4298cc415e8e685d90399bd16cd6912410d9c55b2fd99d518c556097345c4d964de7a8cff9bcdc192f3fbb327625545d9cdb95510de0a17eab38af5d21c187126d1ff4caf29f1f7bfcb9ec4089ae9c2f40724d44e67251ab20d0504a082158fdd2a27709ebcd4f0756b5b0672c05fdb070a4f46bbbd7e27f0556d7a925f8006d330f9bc707295a50f348ce934da5fe18888e77ad8efb9e1942d55d9a3d6ef14403afef58d29d831a2473d1974f349e8bc4c226d3cd566119f7d50038cb66512889c5a4684e4ee3d23ce58aa0af3bccb365ce3555bca11f02ab0e61d938d27c3c2a7011ca67c4e655ab5b8ab93452ee2df3993db21d445ce75491245c335281bb9cfa30d91949ca056e10a961db945bc2f572b857a2d1b26b9ef473816ab3a056eace1e6bf2072331e733822fef84e16fad4c881ad9d24f0ff7ea7c5a50f7d2686c9d9e4ed2385ac9461df48504dd40468e2c703fa79074ce5292eec4a9a841f92bf4975c0d2429690411a258c4b2ac108ec699138996f70fae8880f701fecb8d4f4092184c7720ab23117400bc474fd08c040f151d26c2e3b07a6b1e53dd83cd801f3de1d00b24d03c281420a33fc406629342abbbe451910b73ea07762c30f373faeab002f1ebb583057298c98e9ed05897866f1da2387666aac1e02afacd0ffb1c106e5f48811d478d418d9f57dfcf2459930552359b34fff8b400cdf3071d4fe3c9cb3742c541a2367779891a81e6991305848913b5314d540bc7034cc2df781f53bad654ecbd5aacd153720ff1c0b009dd6c7272516447f4148702af959a038d8f67f699fec3242c4dc3cd3c8e30a2b3fe352e7e547325d5a18429214990630485cfa41854a3c78cad63fce32f562321b1611e693124b64b86001aad5d56ba22dedcf9a3209fdca8fb1944279a9c0ca621270ce27319a54b1c558f9685f7e245691941e1e5142229ff78ce610e83f585e0aa6ccb37e149d0c1228f5f27e6ef0f96ee78fafbf29c4ecb355f86ba378f9a61c7c3e4af53da91568cc24ddcbe8420fe75497c0d7f026a30acb4fd4302c8df7b656775a0411ad2bf830a46f5dab555d9d9d4e09a6c24234673c4e9427e0168ec6425eee472e2946726a1c4f4b257b18645035377435990e8014667c4a5e379d4148ee5eaf4180ab9295a700e11e8f207662c484b161b6335633d63c8ab9680363ce5c831b9f447a857d447b0137b11827a40a81189561c11fb77dec4a66d067ab2fb19d083a6b5281baeaff7ff5504c1f4d25e9a272450a25a2d05210b4c29ee877318f129c1afb21c0fb936e421b4b3a9a859080ce67dd3243655baf54fd740be30435120fb00c4ee18d0740ae081e991ab2b54d503e7d4028b2961468ba90591f834c25923c35fca10a2eb3a0a8c191a66c5caedbe1b97a8fd655b8ad561364e81fdaa75631d875b54738bce88bd9f0368f68821d9aa55e95daadeb600e8aebe743e823e291ec79d6b4d749168bdf7d436b50285077e08dc7c689ab3fa21ad1e2702577851a0aac8c96580757a0944daab7d81ab6bf2ee0fc0742db5a52958a604784bff6dc4434c0fdeb61447e1cdb5e16f9f2d8da90cd1362dad67713236a2f78015364108a6ddde86d803002a7a80133ccc7f8d64a97c631f23e9fee7b41b493c7dc4c86f6c93979ed6f4581f5b7a0f52cd1890f8cee52a290a94592ea311be93e1a571843412869d59a97278214b1f3d37e89090cdc99b6dd4998ef3b540f31bb4874f281cc95e0139b541a3a3d2878ff81c23feb754801a656dad31037c397cf977715c4c3e13b207111bdc5b890243cf3bd2cfe4b5ebe796fd7a578a9574f7cce3ad226b6b540a847c5032e770d2fdcf851f416fc4356fb3bf610da9d6be9dd9e57f94282a54c628b106fe8894563ee0ae55ddb8b316f3fe8968b3a408d324e3e4cf21b2b0971b9c64afe6a6193c093ee4acdbe0d7d4f62a3e3a04240d7f633f82c1ab401eed04401bd15c4ae0b158f82279d0507ab60ee0438800b506a1f256d8e0d88b17d65da6ca0655a2b33f3572de5c4c32be29a83dd351a547117184270949914f73f9c0154c6125800a2313e3f6b967f6945424520fdaf6ae8a1919c21c9e0acef66d3d079f94a1dc5753c9d8ffda05cfc2fe83a3f0569922ebdf55ce2ff42c4c22f0deabfb9af54eeb8f39afd68ed034f30710a9ffa287c02d60ea03f2fd62940d55b564b5b7499461198b1d89308a5fdddbdd50df7b7706c99c1db1741c197154cc7f47ed03ee12a5f8aba98b5559d17896cb79a717225b37e55238492a483613c360a114efa64d7ef5a62e409c1ecc41ca93790f1bf7850fd5948eef1b6a37f379076f3f5db76fb49e3e5dcc54bad88d1ae599683ab730adedfabc94cf1f4e47a08ce5464d70c7bd05283940fe643ef01bfe94680f136e698c0c6121a6a0573886d7e8bb306146001032990cd2e290ae2c2a1bc4edb132633f1a2d98bfc5b401b8c193a95fbf02a27fa0a9c9d7671f4537a05499c0f3d4d7bae467c4f423c93d1457b627523eb6e91504694d3b7783fb90b057aa3a58900bf1ce6838e8308142af8052bd895d402f71e32c12dfe5188966e3b067e3b406c20e471e9cc8e0c78d15211e935424225c889a1bed646d7bc968a5e0caca4abc465e088a4b9e830e42bf280576d45e03fce5f0b01427ea1081ab64dc00ee5b9705535642453eeacab2c671a6a9f3b22bdd04093b77db737f31e88b8ce4961766b33f57f0683c04f5003442d38a314f0a4170756161dbfd33fe969e4d49409457067943d10577398bc76f2c12027188b19c897297744911daa08fd47015c91480fee63336b915bb0ed8aea51fc6327757e9157eabed8f80e86d24f8b92c000657be46f9069d15e902076912686ee587d584f4c73c3bf1a81369e9f5e02ad3f83af39e8b3ac6bcb272082d39905535fd2ba2a1413de424f4d869998113eea95ce9cda84f60138f89695c6304ec4b8696f949666476be3ad1f54fcb6f72f1b8e4078b2fa61a4b9e177a4bd23b091a01e806eb572003753e49ed4769e8927754529c8ba8f79c8a4f6b39f3f46624d3de74bd7a89c8d35e55a9871f1c62fb848ed595fd85b43004f0b3c0627759b0f7db47ab25103b2aa550794faa1c6baaaaa95443140691b50db3fb2bc76903d467fd980390bdf51fbaed1a14361da090a02ab2d8d080991c7ff3841ca8fcfeea25110b1aa6b1421f1f3ffb680f3dd610b09298ed5a769aea60d2913834d8fd02e9942eebfc252a687bf7342416386985ee0c6affe8dfbdbaea8c66a79d60a85d7fec4293c214618f0291dfe16144d3ba4798b1ed38852db8d12348988679b9f20012a2d63e9dfefb2a8b0c7ff64f30705878da7c98580026e72d12bb7d9a21ecd129de99e3475c67b438a1a2889012dc18f701d37d1bb7db06f0bfc58a46c42975a45b65ed8b2764fed7d03052971a2557c16effafcd12be5514eeefca38f3bd2ed81deb933855d4aeeff7d4f65a19ea01689870ffa81d50d09aeb781dd8226d763c8f7bcaa35970a829ff7e78e91ebb42d0b07a8eabd52029dd691ee0c373353ab1498b90c0c244512639e13bb4bc9b689c50d6a9f20554f7bf3ca9bb8b95c2f07b4636d27e132e2902e4f41ca8ee85a2d73e1e31688226356be56180e436f97be468bad8168a62b0871472938392e4896e4b548f8427650e24d39212ecaf6edb9b09f94a224de89d47d65ae71c11197d3edb5b4327b6f0fe215f0f674ed3eeae5604f9bda4551c6611b96f758ae1f8c9c5137df8c7e13f417989ac8f5ddbf68845cc64d5654e2e1186d9b8035fda4ba8be8be32e82adda8c7466c3d76e383911553709f43e8ba061bfaf01266cd94e042f052074bd82df24f8fcb0f00e9e1df75f03597c3e2dcb4a459459b2bc263119b7fca72b74428036c80f552edf0c3eb4bc93eaa0c2825ab7cbf89245b91b9adb28c950e75af08387ccec97d32dbfea1ed108f8c4edb4cc9f72c7c5d7a8032034b29dd74f6a7dc074abe6df6e9bcea4cc959edf6c16def6708238cb60ffded10924005d9d8da5a740568e99465f21a2443332a2be14b77fc2deb3c48c2cafac1c202ce59f77cab7b1601bb8d5fcad4f0223ea67928f23635da9009480dc3428b0376bd857e03308013eb330587c6cc9477e3ff912ab077192cf1a61aedc96ac0545a1821ead23c218bd687b67785c64c0641245eebafbcde07b8317ba163c14a7892b925ec5baa4225ede15a792df25f3a406dd15daa46eeca5c6e46d533f33815bb89edc95c17e665b6f0081214847851021780f8ab3a1c43a3dbcbeb7474bce6aec9d8f8405b7787fa441f228e4ba4c268170d5bbcb847a97c8d6e02d3d96d0ea816b09d722c7b822836167f0fc9f32fc1d4247e4e38c0750612d6c2c44c15c270d486fcd40be1feaf5eca8c73bcde592a0122afefaff837cd800918da86c3451b95902f47bbc5e2128f5d7cca44f5dfdd024b99b5f7bad0618525c68e3ab308b1f2638ed78774dca2d917ac5e0e42a068f64c669246dbdb1836a0c1eb4883c82d11a6336e0b8a8bbbb57985cdf7e9d3cfadf6ac6c89b8fd6d954750d597e1f1a5007eba851dd206904e7e657f3c3b3934048474d8e9b180e185f759e50ff17f9ed9f15bab459b82e076006966a8fdefc8574547b6e592c44759e7997aff045fc8cfc5ebba8307239c1e7cde74b7093a87ade43cc259594ec776712ef0528e5de3c19629d3e7c5067b827a8165529afd6802470f3536377548cd6978bfff4579e805651f713eaa2b849ccffa98b30a860b6885d1243a90d4a444bdea26a96016567f8fe545d3da52cfe07bc3db32f9167d16fca0e82a4a99496e8faab11c1f005b5a6750d6cca6d23ea0dcd7bc486ebcf82e54f6a20630df709141815e31f5a530ded2024c2fb2b9fc498c80a10c74975fc18923d044a11b6b4fa592f35cbe2d974bd85f6d4cdb6fef46496031139c23f4cd9003985919add5e0bd30291d7baca80eb8ab835516b0b4fb32cc012573185781e28cd31c3e1bde27888fc52c8871e3fad5101f52e5b7496ca5c15b64e4c60ad8290dc6540095b1cb886a89c151f3b37219eeabc1dcb102c72af49128283e755c42f9924bb03c9550806ea86ab10a6e2c6cf844b6c01847877515ba609b56daf44696f79bccaad23e69e63406c018ea4006aa1ad7c641cc12c10678f2eaf3640899e207e1ee56312968e01c8abd53496982c36d843e90715e6654281f082499ebd4f6f06923d77599d0bd83fb1ab84753abcda04cbd137ea7d969ace80a64a1e2fccfedb1b49760848aac7683ca659a2f6da2284b1bb8dd2cedb2a66c7e78755d0724867907d51c526d199b3fb864a5ec030d78ea7fe2b6b3ba2db0add2ea0d5b782c89c1e18c3418a3d87781319fa71f0a34efdf25a034929d5dc349310712b9d7bc407c33379020a985a529d6b3bf2c3416ab2ecf7f72e803b0dfaea3034f6620e4dd6d42ffcef0319a14e25dc921ed8b6f5f583b2374b2fe440149a75f6de869d5ddc78668b6e123d9ba02df1dd39b3576ef0b8bb9b92a6a2389c8c08d353b04d3b9e2a336a679c89dfc8a8042ccd3db972f822872f925b9b5c58602a9c2d2ba675943b4957c34761e1af7fbe11fc42d95c686909373846e08b8ee8d4dbd164c12a064d5a28537fe8cd050f5f0171f2d6c840cb464e27641d9320ab2d56f66d0d7108d90cc408f2f97056a9d971ef603b0af39a317c1f37551c5b63c877e67d9c086caa42f4af142b14a411bfdec806d2d14cbbd852ea44ad29477fb9590e6e05b6a460afca0b9ce0890800f8ea483f1186a428e67600944a6d7ea278459a3ed4e8ffefbe915a0573d6cfa24f30accc1210146f6d28d0333e107b2293e22c8e8a8fd21dcc83c70e6329bc19ce855c501c1fc6320aa725b581ba1b8a2e780926303ba007a7c23e3a9e18a7f8e2c6fcd4b72418a54e8bb7ac03ee9c185bec926f73f49f9c6b496d51d34f80c85f6545435c8b9913826f4233c4069940366babf759646d20a8d273ddd625be864250d2efa5e9be5aaf81f0660172b827dddf53f1803227abd3ecf8ae17cab02350f9c90a1f34766a03d902e773ee9b282fa9e5b2edbab5a814b7d35723fccc037f83b42e982fa7c97ba8d35b9be73253603464356e7d775657007eae3a7fef7f3164f1d610a61112e5a851eb1a3e20e95b67af9889e81a4ab4c2d950f6bbce634001f9e22f20e971295406c4250f08e1f604d39d0062ffeb26359b1afb414c70d515ff174c250429efcb9197fb4ca167f2744a2adeae11f593edd5b1be1b1cdb15e8999d0444730e87854819753a2e57ce99d3c9171dbaf71fcdc0fb5b2644cc9c99c97f6965da0b2b154884a01b8fc66b9e5629be101dd5d5b0c1a477df49e0c51c1a2fb42cf59e8cb2e9156ead7a7a7fe57b9bbdd6a0469d20379b345b81a8c798a1ff8f654557b350f28c6c36886dd484c4962edf6556817643923854d4289e464ca8f2c2085d2b6341af95429f4e5ef65c3336c120e646381281c0878459c5103ec7847039e883aa08c72a5c11ff1be96cb176aa8f27539dad23c5cfe0a7c37f115b9a388bc81da2c820a1531a18ca5b5af20f1c9723e27a7f772fada07384bd6249bb400ddc4969668e9ee8c363656b51fd2f17ec348d1006401d349e9282b964d8bb9e569cb741b1e305e6315e7d7f657a331b148b216f1a86358cf2ccc2b735356548ea9133fd967a13032cbc56becb3956976daac67363130d770d5e9ed447f0ad1fcdd7b5f417af891b53e4ddf201abf3b1e5ea749135f79a8e3c785d47797e821d1fa1c062c465ed90cf70694e30675787faf6bbe22c05bd2d3bc0a16d67b51ddde6b50e3b2e7ed2e66eb04cb0b7a71d42ab4ed93d4453cc34d0cea0e91e52f10925ec91d9436638ec16253a5da9c823af01c61e4509be411c33ae2e5d8a761e72b3b4c122f989f6032d067650d8ce082ff304a9add2646a07ee61988be8257ebf698e39effdd9385e10bed8904fdd3d27710566368b282cc9365b4eec21c639198090a7dc81490c350e6ba1333cc1a654a3986b09b931da0c45065ff80ca6f32f2ee30ade2e54fb5d476118f7c467caa170e19d81e66b1915003ec1bc8f757f76134642259576bac2d6a5019fdc629362add8a58e7604d5c27ad46e7b14c72a890b89ea3f3cb2e4922873df7cd767a01780c837313cf042d6180c4f65f6949505b0138d816e0bc840dab904ce6fd1241bd0d0a9c9e166f89be41ef1b662b81a55ef5d1e159d0a429bab9977d9ef1d59d9db65da324a620e7890b816c2a974c82bce75cc4fec3eac9601eba3f76b6f7b7666ce66e39a215601dc7a0eae22ebe8bd9f7c1d1f11b8d8963bb8dded510c600447a7318f8ba79d9e9879def893a61aeebe285eac298b1e4ca4c0b34716de91a9855f3903ed3c04d855bc3e038a10f9f51843608fa452767517f5119873f3025c9db9be3516ea5eced1c2633124fb544ba82a892a9baaa6198efe33cc82fe4c11eb4fbbc40b01ad8aa6fb986aa81afdc3544e300a3db38009a3b567faeed58186cd0aa85cc3949c17514aab019c85163a8cb64d610b932cbdc9a99f56aaf18b017bab93c1d9fa1e979b8a2350383805334d7c78fdacf385de619dd536d5f11eae1c4689746f4d0dc6a705518ed093e44a4b4b354c148088120a073d51fb17387851c2462fa5eedc9f53fe23b225db8f664be8944b8a6bccd39492459e66c92e86d45a43b05eff63147629d85eb4b83aeed3a62280f2ea1270ca9c6d880a1155b4a51e069187e7ad017e2e6f2fc0b59992d3f0224a45b5e27ab3b9e453751e28b4bc73cc2013d2dfe35129fbe53ec49a5eefc32134cf8934477f2efee748c110b1018f807d552f2dedea2db949cdb7ad17bf31d1143da82f3a3a777364f7f1b39c00feff642130dc770abcfbbd86c89c2e5ddf371ede57f60870c1762ce347d3848e20b2784b4d5a049551e5dbef12f5c255872f34ce5f8233867095518d83bd9462a86eedd0c1603592d6f2982315ff7a2e773324ec8e914e139b6a8830054fa4761eb4e1e40c297c8d2e56c41936473277117f989833a2eeb78b211102548276dd5e2ed4946fb16617ac20e52c3cb6c091497ce03ba4ff450640c83d559b90099f188df4897311c2739a3dc3fcd4395c252a82e879bbdec7d5ec71800927a29a154eaa48aa62de0215b43c256a0ffd568051e3facc558a62f875292bfeea0e3f38d800e001cc9fa561aaec8cafdf303c01704c24f9d29f22a7f7b34bc2fb2e353ae3728f6904547964a1c5fc899d648dfecd72556b985b512440234d5a14bb4ee86e60efd5a1040675b32310fc866ea28ac0129c2090f55f01533849c013bd1638cb0d9616fd6a81996a51f07439e46ddf383e0d23a70d322fe69533b77910958e245ac812b9a403604962f00b3b23283437fb3a034f28997fe3c248a4ee72d15ef4c51a3e37f8ed3043ddd91073e9223d51324ff6fb3a1387eafc6a65bb2478e28ac9bc141fa9b5a842373468ae7d479c31ed256aa6481edeceda56864e1942d98a7b68ecdbdc845ba11d110a1c68011715e500f24d0eb39914bfd9c9bab7026e6b87304c1a8f6381b3902781d1ba977c4d61ae6770bfb872771a74b7342b7d9af973a64a5196da6d3ace477745ea36c6bf653dfe95d2837c667e11c1974363a5d439132735b84262f00b7233d4352d20663199ccc5ddb17a847fc09fe1e51fa0f029bc6f42ce313e01021a6d3fa01b3acf0ca6070e83f4de286894b9b40c4f1c14246e8c37fab7cd8f4561ff2a781d729a68b9bcff6c9d37dbba1abed65805ab5b1dc97198ea5ef92d7352d69c70282dff4b875e2e5bfd5fdc840e2ab131491ab5f605972b2f1de8652967e7814927f54613dfdfb63ee8139f80330ed3755fcf67a330057b9daf3732d3e2252b0891c34e7ed168b166f09f490883486fbbcd0e879f107c58c50acc8642cc2acdbf7e35070f1aecc3bc2a4836d8145adb20347d81b639365575d65ac61a90b7ffe98144f8b7e5038f118ea774a16d2710ad60a69519ffca494f25c4490b96513d4fbd85b9da50863f793fba456c1d3c2d403ee256c6420acf6cda7ddcd952f4687f02df7a96363300b85d7da1cad79df51381812c3d5b73c6136fd3403da13e43daf5177b662bb683be1d0fb2da6fd64ccc32c6d3878915d17a0a80ab876b8ff7277bab9210bdf87e364a025519629fbd1780ceda8fb93dd79d1d354321f03c8fc1ecc3a8e3516a291f7828a004d684f7df694225c586528422f5f3a6d22a717d49df5a3c464174c279826e568e41e94b0a3c476c14bfa4c74cf3bc65df2c3d13f4730bde94ffc909061f87755e180e30c8ebf5b92ddec7520364fb84f06d240b607b44b55077a6c40e9e07a9e53029c077bf53ee1a3b3b1de41c41fcce5fb800ffea2dfa9de9503c46274bd63fc9193814e2963d26e2c9e4685b593aeecedbf30d67c37b12f074bfb205e992e655037c36c452ae10550ca41b93769dc6d9ecc61de35b19d479f21cabd4caa73384ef90a56c029c98abe422db1d43fbff8863c42b9b144a07decb2ae39ff796b31a9c20771a493850cea2642f00e91d6c526a174ae75b978d5dc1418848f90f48a1c4f9bfda2b05c4c5bb35ae33b93ed1109551d8ab261f14aefabe6dc1597b1afb8a8dd4f3785af157a4a56f29f790843a22e44b6831137268d88449f415725e5c1d7419488ce30c6e6c87927671b7d46021aa88260c385774a87600620c45e4455be66312a22199fc2df2d0dcfc4b4442715dc9cc96684acb81fe02d05d757b700641ea9df3e5cc673fc124219b5b94f9c62018940111f82cfd89b9946e3925d2ff89c4dbebd9499e5e137c6213e59e13d7f456a55bb4d09ed9090155b7fd16272ce3fcf7dbf72264b7cb7de2055f01964844d81e3867f7d0dc72b744dcde8ca8de193050ba0f3388bc115e7211319740515a8704f85480c2683d583c922e6cdb1319be6da046c3fd48cfc2f57438c493b9e7a0dcd538ff3e51e7a835b1f6b5a059768ae5ee9281146334b8adb3458f658e7ffbfae5e5650f75737501746fc9f1fce54c3f383fc7484935b53d279c8c0ff51ae0bcdcc032f87fe45c484d8876f2f8c27146566d2f662507b09c1676987f6e9572379243efde03c4ad28ea64e0422e898a66578f7df6dfa64264dd7f61b5542faa1ae97cfeb0c8a15203f3d92fbb9c5c4ef543edd3361352df2feb58c376850cdacaf48cbbe5cb8ace49dbf115fbb4842a8c15233a0d0a0d15fee616f144fcb6c9f2f82ae8b5e996495f996c1e775ae862d39ca073b80c1ee4c50ec16fdc94965d10231e6b62935dadde6f3dd2edd997c2607c282634fa9022b2ffd6e0c94e7fcfbdacc65e24477dd1d70909aa6eeb45dc8bd153508b52b4f0b46fc69cdd312477b96b946fa0b716b8d50babd05cd2c5da599e0b1093639a3d6505751d88629d22eeb28d8af7b14edabfe3b3b517d194e1e28912b9c73e9c5b5867bb38690ce7fefdcdcbdbcedacf84e811e26f33714efdd2167a3b467cd4a469d0e62a9c886010124ffd1ce94b4444da5dafef6a9436a4e8012ada1b94a12fa2f237718a8c4f3bf0dce2332bf5df61b669c501b6ddb3c69214603166c42693b2b660744f3d5adc992dd2202665d66f36df83212dc5cd6f105a2a8dfd0fcbbb30720c03f7ba0df1f45f353d8046e1e5a2017a1ba594b4f5b34feb8fa3debacf0b83579c20165ad041f509cad770becd50c8f37f2c9e3aba2b5bdd28f02c6323e8da528ad1a914735f4160cef8e4ae7f78c567e5d438547bf28b89da7607f83d55e981cc7f82724c2047df45806df56e770504fb71739c33496f5051de41f2ed0f805cd29fd293b2319c419f46e65d06cfc22f6b38f8d28a5c88e649e4f78a6dc2c0d1053f74f4d6571ed28a2b5eb4947243fc8d664f56d677d0d1c7876b4197f4dfc025751efb4e00faf5181d6049493674b8eb608ab0a9677dee9bd340582a1e8d7e70b644702c6dc09f2874b1734071df608fec6309f76d2eed3a03ed591f0d1c539e508dfea5fa11d92500bd0aa0246c2729710dafbf698ad0e3fb6b8c0c1220fcab9c6bb74f41af41185cb3ecc339ebf4006d349554144c701654f4839aa4052975afb18de3169a890167227a7aa9d8e1b88446d02676b3f859636f8f08725b001f93dcda99af4df78bf96618519edebddfd89d1b28f555685314f048c107e898525375d91162fbe40833e5b0f0e3988b538b0a54bb9e50132c734008ff8b5d7f4766202acacf273dbff7642f8a35cf01749e21fd348ff2214832e370803679359e3cdc522974fa058a7a4907533ddd0a2598d4bceb980f0e4d9f93e34c7ba0af0a027f3916dc0fd1c6eb9bac11574745a19218dbd88c4d2978c2630689199ad5ced8baaa2008a54a94a70a17ba678b831ca5cec8c8c6e81645a215475b80d503051acfd639bb80af607d0f461a5c154c36ceb2961bdf9e4d64e53152e03bcf8cba6494d1fcb71550c8ea68ba9620df5b3ccad17b15a4a898014dab9d2f5c8532da85c014872ef714c463f3f7f623ac1e3d7fe950bfbcee995ac193dd6f089bb0e68216f9e0dcdef42702b90742b70037eae822145797ee41a5ea848ffbafbe318551b642f6a3327e7136bff8aadcedfd4aaec7695085175a4690e371958b22d5d705e7931e932d53e653b3598d578afc3ecbf015e526c2ff57381205ad605b33a88185f335ac8ea9021218c1790f7a70d0f7ae833588461f80c1fc15b3b8c5d261eeb84f45e2f5c9375dff48521835ce56b7d840f9911ffd16f123297efea5aedc8badf7ba14e692fa10ad0c77f1d73c69397d7ebfaf7cb29d2f7513bf3394baf79ddd1f3309b9f42175b8ae02ce2614a176f694bfcd1caa84edc764853068580383df60d0a5b076959863d216f815652c33b87b3910d023426acff4d39ec7e2fb3cc73424eeb6b14be3e8a338a1997230d1445366e687b1b8d7ac5e4524ab2594f7e87da7844cd39879704cbdb1b731fc1c24dcf85a6fbded131381c06bace10f5531fec2b29b1dcd4a38804669d6cc0a7d53fd2dc41f0110731a003d01b34aee8b57e06739a46523e53af24ee20a24d62f6a416d35a80dce5378c39731a28a649fe42f386cfa95ff684adec6caba49798197557954c8c6fc77cb747760fe3ca83c6a5b3f59a22a7d35267fc0e33c032323b48c307471e18d5b130341861cf309074bb83aff25b64d288b962c1a444d580edb5bdd165b6cd60336231cc852b1df5c25fe71d4235ee78a9feaa64ac9d4069e61dd163a3a462501adca075ccd703fdf48c91f20395c030765c25202d87c67c7914f310ef5a2a99c0fb5fe2a1f9d89469e1a6ae8597e6c3c0c6dc7ce1adbb09c3c953efbfe88a96c35e12be36197c34d10d4ea765ea51dd21eba0cef43bc998316b49e15e35408c919132f6cbd35c2bed340c8b5cc47b01c7680a777779eabc9d1562064e5351dda7d5171ef7a3d24e9e3895de7a9ee1ab4dd18b63bac3365801749b1998dafd93b846789e65bee1c0ea841737a6fb7bf9212de1c0d91e12ccbd1009f24e01a406f2664b0e1c9770e8bfddb07fd13d4ca9788b3c225e4441309b61067b504202a94711a46f8977df4ccd12ea86f770ae186017eddcb52aa6584a0b4179f1b435f25eda165157b999e560ef8577b68341edf89a64e83e79510921e4a40b30d55fbb06bd4899212d8ba63d8590a4ce6be6323e1990f5ec53dd24a77d4717b34fd24c7cad241d25639b0f20c54aa11392af76dac49ae3d6f0c3d489e784ff2d2391499d47ff5cc8733493f7151b369f98f706913aad91722208a0fbf012f1e79d768028b00bac1412c2ef8469e59332515f9089136fe8fd9cc3b147b5b492f97fad0f6a043367d320230b9d2e94290ee7ad999d269f2776e17907c871a7b03b79bff8dcc7597e805866294eac8ce13089058087944b309df3bc31113f494310d06f327e98995d284fd06b4d131ef62cfbce97171ce30ec3827220640423cfe54598b6396b887248d9e465f7d0291c6dd79ab5e638e2a55cdfeec7a08845bdc340871e11dfb88f57e16bdebde7a947234d3353c64131cda4f9609f017da225bbb5c4b0def93ac2df606d365f5be558370edb8f3b86c39c240fa85077f8b98a3deef4667ed8242ab2c84e8f93855c5f3307b6bb5efb07beb8be9ea46aa82b9e74a31ec07230f2c1c2d964f6869ac100e1f4849530578bd9495545ec0afcc296536e64558264640fd12ba160ee894da18d8b221c59a60e79e06e395cdda1b75dd63a65738a776c071f061a34c8dbf03434d29f6af78892c178a7199465846dfa5f65ce40d25b1dce4966f1c5a584603100db4a80ac01a571c568c55de08c7c4b03dc88475c44f48a76bbda4c46f26cfc64f6bfa3930ba2471caf6fd8eca3b8b3225fd0d90986bdefaa5986532a8be54a58efed93ddc18b34da7274040fde621c490e347267964563ed03f69282e5281dae32c02ca8164fc415fc84511a22c12257ab6f31cac5e082b2a6845e2fe8bda886f4de86376d3633bcf3987f0371920ff528522f33dbfc15696bb958493f5a65384c9fadfc71e52ff370c6e6b63da7a4dd2b4db44e2b2a96b115646348180a6386c9f2fd8be03e2acac87c7df82427d49087a138c9aa735c84d47aedcd7005bb82cdfe2f56ac39c174a2607798b46fefe4d64f1992ed12d79f2157aaeb8ade08ecf30052942a3460d731859a3ee8131ea67d06682b7a6c1bf283866a1f4a4567f5b4b9a26256bbbd8fdbd84ded2b11741fd7315f41a63ac95979cc9828263d7f3d67d87c84ceada93b72e9f1a9e387fca57d485365a8669e1a823f05a435101746429b228bd6f851ae2b58d08ab9c94643acead480552794cf81f4533db340f34c7446e91dc51a8b0595058080607039d7e12c7d9f74eb5ed17dc4d875bb8803e64d83c9db5695aaddf324c9f39c7a4fc13a37516c3c6b4396b1474ea1bef52fa2281da1f3d9308bd9f43ee9f85cfc3e8ed583e84cc4941ebb479a0ac64ccc80f66f39db2ad31b28c659bbd6d5735ea3b675d4d653729dbd5182ea5877ea7c3edb37226feaba735f0200bc6067db242f8a4b28c5e23fe4dd4be4e789f51bcab718c585a1b70e0acd5469402bd572589b58baa0a5aa8235545f8643e5ffdabe8735792b5a5a1c8d99755ed8fc946108baced6eb0df3c3850c8c5f124fdb9fae93a4e24e858edcfa2814301af239d193882b178485ee19e072cdfea0cafe38ebf16c0a1c4539c6c9f94e66f9745b98b4234d418d51e80fe80c1eb3705da463642a718b37e5a9e98b4e474091ac940d24fc952f236dc6ec3e3846d3695c6a320cc8e9c9939b2894fc11a155513061502b9a63a7e2339e49b6dcefd35d7a3e7628193e7a4e66f0c135bf0160fae1c5151dbad59876b8e80f9767ddefb62e3c7722871d5b973542c689ab6d3a575158599f88249ad91cbbe9687cf8e40083844ae92dda4d249907b59f73967b938016dd7a79fdbe3b0633fec7a55073059c112d69481d27d1b081af2359569a3bb4296afd5123ef1b28064bab4b87cec042e218d8fe85f5b03f5f3c362c592ed3a6cc0e554108bf3d6f6a38365420d0802df24db87a8f8a2f2f92f64df10b9d5bd5a4ae5feb1d7d887b2480edf56890e8955abadcf44ae9c6f0828eb7e93ebce3879a73c648c40e4829a1ae7f8569bfade753b543e8dd126a4ae9977b28182ff7f55ac1c0df9e42e4e2089dd8499efbdef68df02f97bc632bca8f3a9c5f4dec209f17cdc49383c23fff88182d36ea1bbb826de50cbd38d4594cfc7262b523c2681770a7693ccb10151b812ae48601e4c83f382bb0f0126f9b7be7116d99f656e284559087cb1005d0b4851fdff1de53eef59902228ffd27cb0cbf3a8b55759900b673b532f50579db875cc4c81cc0151cd6b634a8644d310a328e58c138ce6b702ffc63f8353e87fac10f34085a4edbac953db5a44f705893f4c0d773e6f16c28435935598bd2e915a5275bfc91684a1e681d05f4dec8cd2fef8f1a31790c5c249a3b1430ae1d5b6fc8aa174f6e513a3c6fc45c915338368b17d2e4cc25d2880bd5c6d5cb01fe8a7894c224f91e82e50c7a186ece32f77dd5d09e43460c416f441091415ee90a16ffb8d51030365bfaeeb5d0f81a88675566f2cf41fdef4e2cf41b0708a93f105eee5808987ab3916b496a97e226758180e34e1ff58d0a92ff212262bf64d7f23585d137996064319d015d1c0d12e953cd1abb5562b5f7bb2f5a842f23ea8a1beb32c58872ee0b17562fbd35771a264b582a6f01a6943140fa1174c32679b82fc5c5c4fbe159943be3e49e5ec4c11e7939532cce0e7d2590076e53e1c1caff8848308c98a4f7b8ea92e6bd6508b1fd15f955b1ff8fe1cd9d4262edeed29aa647eaa875cdca91ed4386e01f7afc1fea3eb9f3811610d170bdc1895b5bd02d364b82ae1add532dd0b6c2e7b330561368445e54aaf25f2d841c2e60777893dc07f54ad937b4abc57174c14817cc743fcf0a32d2c817395e95001df505ee813b9283eb5ab2ebe600a5380b72fc163231dde13508d73595e9b427c8679848ee4a5bfcd142ae772f7f0f458252206552275f21bbb84b47fba78ac1411fd4cc1b0906e0472ba3e5ea13beb335e4c639343f8ec7ef12c5b8899c07488ebca56f89eb506e9cbb93b8642132d66d6a5f2a1ef4a72c50693f408f3f21a2f32199b2978233fb0ee8c2e5e006eaf5ff7a3f9ba72eac43d26f54f363e6dd53d3907a4aa2decf684ff467338c7f36f949d84d7787be529ae0c51246dfa161612071005244fe55cf7f59f51c7c5f247d1986882e1a024fc0c8b4269bb261e48a2d74c7fcf93f81e541d3b75f4ee6379072d3e9de9d842b02f09327d6fc7c3d89c96877b1c53040367953db80b79ff2746957b705bfff54a88ffd2727b6838dded681dc4e10f4c8b76d2343a536061308d7da94f8d55070cb77af21f2c9588e75b24b1a876e77888981a4dfdafe43d0f6185bd357affdb4fec9d95c74c5f99dcacd3adf568232abbd90bd883e308a6ca8bc144a29e858de9d41d687951db34dd4b35996908ac15e71412232844115c0f433b5e017352927711c37a808ba32694b93c3692ab90b8f9bff59d288f0c38f4ff6e85287c38f67407ee517bbc53687b288e773b65819726684a51a298489c15b1cd2cb2b1e92209310e44f7950d5eea860742dadc570f1b10fda4f32ad7f9fa933a2842697f38d8ee2a28a9d4f622ffe035ff9c1f8ab5ab25ce76415c1265f8ee8fe7fc0cf5f555455b549dafb6e5b474daff0b8bb8489d4ed08018fe123afe181981bba2ab315ddd4fecf844fc54b90a6eae636525316bdeec0f659038d108b9178cc690e6e10d16c77f2687f81bd3269b91125336912d615c0a3b4ea54322eb3fcb211c4db533f419f987eedf6eeb6abf1e059cf5e5004a30462880c23f28053aa7b2d36d3bb741aedb07dd6ba70c186d5ca91e9037917dcc2f0b3dbaedc7092479cb7a369ddb3d85d2233258f1e7f0ec54d4e1dad9aa2368c0a727fbe361740da5e50c7de54ad5af8e4a07e806b4e1b658f371c9bcf2e48fc47484b92bc8ec7a84942378d93277d1f5a6ed60fd76b9fb103399f64c287ca1725b386b55089ee420fb5e4561f442a5a0b24f89210df11c62868d20e4924c515163de4c9db35f37be4e706380277879a929ca30e47ef4301eb762a9c97c81276e8427db1f579d5535300d36def5c8aeca3969a6d677a38287ea6917c3dd14fee319255b1e16ec911ee66187de0d6d3acd06b840b7f0c510a3432b953497fd87b1aef35453988a35ccc18f024ab0992747de79d88d5e020e5b8dd16fd1e3afc5df1e791057be9bfc143964b7869a5111aab4b54ad8f87a6171163399dcdc0c8ff8468e1f14cec898ee7ebc9a60cf55aca1c575f8c6e8972542291e29f936d812cdbbf9d34b091c2dd8a4f80362805e3cc2713e478973ac2856c932d98a98cd4c8c4416c52ae050d4148f782fbc99a91c87b3c820aa71156cc5a05e86a62b79922911dd4eed318b19b6455cbdbfb25a38a1c5fd707ca527a9694703b3924d090b13e7500f944d637e766ca831e5641e9295d48aa897c2c4c8e04dea07d87d693238bef46aa8a478f663eb7e74654b01c0abd5a43d6438b6695fb66dcae1ee185760880d061162496a5a125352622d716c2cddbd29b811fd5e53c5a66c2e5a591fd11cec4ff656e1384ec1dffb9e14edd3ef8dfe68837b1e2ed65308ff0ffa8400458261f3b6ef0eae665f2d82c852ff473c7c4f7c8cc41493ef0d85b8fcca94c63111cd66ec223193e8aa24614eb7baadf49d9fea3ce8f4fca74645726f7622115f28e95f7f8c5d9ff0ab02f3ca771a001722debb7df6880ceb4bfb2a58897bd4cc6d9859cc2692fffd5381f9fb8c52cc8a49cffca3ea17193a6418841cd8add8e9d57a13d853e2d24c94af164b8654b33f1b7d3e6dc353ae2ee07f452832cf371aebfe10942813ae00f54253e6158bec9b0d86160ceeee09cde9d8d70dc724e18d0ff918332ce71b1ff7a39b68d714bf3afff49e4456aa9da6fb4ac836df381a67b387b58dfd6d165acb15401213950afb189ff298adc591cc29444b24ca5ffa30b930b796900890aa272174917f07bf5d733db485bb9b4092a6e3b53f24a7eca582b1b1dff576edba45d9d15a44e26334999989cec8dcb71f2dc6013bd6ac2fc65ff0792dde30862154a9d291be37919f412d9ada77493bd43b3d4d017065583e5adbac1c4c7e276be4175881ca77755ddb8614219c08c078486d5b37c16bce1d97c527d6254291f51f5525a493e65268c39da8a5e2b27242586a114cd10d4dddc8018fd3982cf999cd77643d2dddfde440020c855df730a5a52df91899ed64b56b0dcab38117872772041f81756e5f61a07e7791444c0cf63d2ac11220b6f744c69d841f4aa3d9ad15b9c84c0519f662085029ff7c77ccddc059bc09df17bd87e844abbdeec67d97779fb16f2ec55445e196e120bada6c9babd5607a8af9c21c2332f4371fea7a94bb1693834a6c9f68eaff653449579a16da74c66da68ce7dcb0c6544faa4cc854d9dc0b55dc6c10b056f0fe3eda4d39c227702eea85bf5dc18c548700a8f2d312591f18dc45bd74508ab0f9f9d7b6df4e5ac478f397582e1aae628cb81309fced26429fc414e5aeee532a27cf2090562dc0e2ab1b24e1b414253f2699c8ba1815875ae78627e3330ebbd05de532e51ee12c4572a3d8672092d17c5dcd11baefc074531d102ded8ccfbd30f53c1d87ea223da5992acc0df44dae37fbed4057befef54fd2fa4043d7fe977b4cdcc7211fd30cea95f0d4428954ea9f1076fcd8b64a2e277857a62847726d14420c65bc58bcc85afaa457908ac94a596f4738ef7afa39c5e804e370a0b871ccbda41ddbe425c64702c8efd377fe8eb12e3f0a86a5771cd3de98bdf6bc17e70126694a6846360a270d9b93d524d9d08d2adaccf1424a4b477bd8dfc008db8e47ea74cc43b4256b141ba11537378a1b3480e9416a52f39f67c3c01f8e07f26493fab756d79940b5c054af25d5ad93b2c31557a70e4a97ba541d1fb101cedec0344b83ba5614ba7d1e808d33d4551fc34310faef3892781f6ed6b9c1ad86f435fb57258963774e8d868f26d5bd53a579ad5b7b92ba074299bd9e0842c9eee5cc089b969ca3c8b50ca1134992459fe2b53b254aa0b97921aa1f097ddc73d7a370c31736597a43e6dc1bc1f73786841fd79762a016492eb2150e0f5b5d09a68ba83ad195ba7cd626c519f44915cb21c65a3049979b835db7cdc88c210d2cd5e5f91f52577d68a3f160512adcc342eb484723d54b19e4b4a6cb18c182bfdb71b48a212718f85e82a6f70585d05d4b29599dab4513e9d3d302a10fd1ec98259dd1df0f616e75e47c0da85f4a5f4362776d49ee9dbf80eacf85c8f545a2ccb60f5ed0b815f520ad51a9912b65f7d12344984f5823f4d326b01b02118862d5e28e7f08cbdd68d990f3d9e5b7e4eeae3153ae2b7de289db7ef2ac430b6ca2ea7b7a6fb56656d4791709cf0a5378c387483ebd9f892a04f57d08b9088aa454b43244d93439a0cc6bef6d4a3af0f7ea6948eed16aec0e150c4fd4c00af548427f10f188e122e1bd9448ae324697dc331475240fa2cbe431c07b3181ac8254f373059b69576fc247f07d8ff56c90c5b5e3bdf413a63ac937f8dd6afda15f28279272f0d3c899f0a969b086ba67b0f4513e6f45b2eee91b2096bdbf599f2e09dd720db12c3f709c40c6f53e651cc4d0c39c4952f52637fdc43cd8e785182c9fec127a34d3e029fc10b38615689dde6141969c2b785319d6b5591d89b75bf9752e287de35f96adc86547e79f666137d7ab8fae350cfd61d21be53cc2b490717d34c3b7bb32a9d7bd7b8e5d21a8dc590350f06ba6af99315fae89c3a2ee66f289923f73ce5135061e3eea29165ae6a2db36fe120ad4ad4ab2b72663ae6b7c31d3b6c422c19788952e1361ddaea2936bfb05c453c1f45f244029de326082c70e7652d9e54f32c93eb7b828da4a8372cc1f70a2257e7d783a45c02026a2638dd3f251cb85c4707d7c86300083018b4e97aa356f66c900081e403a6ab65775aff4ac65ee1d82e2ce31ecbc2ade1f59e90023b543317ebe2d3775999fbfd37c59be6b1af3dc7fc5a2d23fed1d79a0ef5077b20b5dbd4c7ab8fd6a7941db5d995a46dc81d813c5c4e13357ba342ab9d5bd4ca7c5af7f38a29bab6a73e41ab40eb3a1106b3a15f20689fc11b3f9e5500a2332f41e113c17c572110593a1de87df20a1f92afe3db58c5e69cf38da3d7fc6d9f7aed317ad17598d428eda70a8fc37b547f0f49fde57df62b6f7cb5446151013ae9080166c36d23c439cd79f392aa8bcc532c3a2a22f0f5a0a7068f492141cf9097793d1ccc9085fc18947d6fb9e2e84015ecfe4812d02063228f2aaae3481aae7e7cbd272f7ef5e24f6cb5ab3da12c59ef99ada3d5012ecd190b15cf75f3a79dc844b7c803c9c25ef45af89bcd18fc104ea87f2ea30fcbff61ee0ae0b337917109a363d62e799b5831eb9afa26d4e5c1afe00a30c751dce15ca446b0a83489cfe97e489629b936ad5ea12bbb20ab0b44e6532e5585d03ff9f91e00abbd6fe89588ba07965d248177c5b3c7448f8e8110c33521e4e3a494e43f6aa3957e78040f1aff92b6555d47be7e20f31f9fcea26e2e078b964f2c6ced77c5e65152354858fdba3578ac542ce2738d7336bcf1ff98bc809f4cb7e0f96be2d55a9c42e810b7f0de8a40616794fddd66f289d9ef3f374acab9e4f6b3f292a1675a9c25e4625f5e9a4b5280e6b26667c7f719d882ff38730d1d43a5c1b4561c82c2e543e9a09b634dffc7bcba1fb4eaeb8373523244ee25bd1ecc9857e1b8ed97f93f10d7e57eb58e2c7283a120f60322f6dd7f8a32d7c199022043219601561235d683d20c1c7e4f01a33a143c25d93bc363802ceb6f6bcb6bea33e7fbec17daa81cbf4ce0867098543a916c6d0b8a1746d4d33a8d487777cbc099c869349d0c23e0c8ebab9541e21424d05f9b0f7ef292a1df089aa6ae2fe2f18d2f503d6fd8088bd198846471cb06dc6ad21d79754028dab9056f952792aef347982ca3b2ebd65f4d7b377e82276f2f2a4d1d4826b1b338de08701211d333fa4be1f5787907fcb6fc0c353f7f2900e834f9d8ef8123f0c20a208ac7a919c88e1e49c1957d57cc932fd49ebaa72082ea26b2202fdeea7823009df03fefed2539ac0931140b0a219846eb7b2002d6f4814875e56ede6d526dd3ea74a786f5310763ca7fd215cb464d625fe538cd01222d8875530dda47251dfdfdd31ec566468e3d411c4e116f7cd74e9032272adbc5211230886c218466dfb7bfa0239055e23ba1c84ee799eee97efb4e497703b0234b765ba6943f43adb3f175ac0e33683d89e385353b2bb29f42c35058e40932519482f8a872e3073a2e5acf988da8469f4bb62f74519b41e50b24ff50e1ff585728ab3554f44876c5e1aa600c909f0f1d29167dae809d717b1329822f60641a0be37f9f104fcf9341db7661b01425cd1ef552a767aa4f52ff1aedb5ac2fb7f9f6a475cb1305d48af1fecc1a52e3c13a96f9720c3b79ee45eef7c971e46ca577d04720d3a2adb7be7ad3580a51e823faf83a5d3f6adbbfc95045b7dc31fcf99b2606f8facb75d5d777182de94359f72e769826092958b9bec4f4df56623a6b7779564391afb46fefa07500dfd75451eeb0b04f8c090cda1dcab629ab020214695edf0b74b28543195bfa6b1e0cf011d427e216206676ef48e5ea7b964ae8781c4344b8ad7bcab0d84af4963f602b2294be252773d98a8fd37d77bd7c6e5ecc69fffea838834496dc59e242fb39d2d65b46c57a5e6603b2a840a3e28cc375b1623d14b4c14743b70cb6afd1625e37ad28392ab6dc689076a1440b4181ec6b199bc3f72df2164d8f940e0b28d9da177dbaf9e77e6d31ca2b40a63f0c6ece95118ed7bfd0ca0761d2fde37dffc2b4415ca4732c53777599680a627738491d2268278dab9f86b10f2fe4ca98841e8a826502c7158201882214cf1972e59016624672644db994711e6951dc6a62a0d86450158dd9f72fc5c2c187bd9a77f0fcd158012ad403b20f453e7ca8ea7fee26784d5b722cc92768227ea263ee0e57f5577258df563fda441832acf73cbf5799179a9935547fa63d2384c07f2ddade99322d58bd6e3552d4f855ac8b423bb344aaebc866571b8fbaad9c94ad8a4af69efc6b2a9bbe788ef830bb7accf3af12262a53208c7bdeeecba9e73386930f524018402b8acf733879e63420ff2f2ac2bf77a9583950c50cd8863603ca3873d9b717eafdea844c5cbb41b44749ef2f407c5964e01b05fa9d7097d280461547ac93df3c84c15c802f7e78cc8b5f70b460d8a09305f92da56fae1e769aba67f531c8e20fe782113811b07b11c78646713c84af5ee18ed51c93527a043f8b734a332895628f242212feb993454ae7cde3f667ecfa0a03d8e074bc271dda70955f76fcca5bfbf2a03cbcd0dacc72e73e0a3f16d634347e9ca2bbac699deca5fd7135f74ec6352d6c16747ff2f90576d6d8b5a503a35b59ce9e1105c82f431abc46ee4de7554049e6bedaed9690ec37a323852ed75bdf2f147eb8812bc51ea7785b14091fcf92963d798344747640c1f945ff5d03981009f23a0f6bc1828cafefa3be3eba05db23f4c77382b20faa39f81a8465a760d00afff68072a75350d2c6fa00c9652ad5759e6edf02018fab3873f30792e4853ec878b41d0565033012dbf2541cb3dbb5fba433461b8e9d41414f4070bdb2526e2be223dacf4c763c25644468bf4087eec51bed59feb16ba5179a4b3afb0c4bef8fc1a026b5cf30b0878e7318e371290dc7d3a316d86af25bd357eab0a21f537aa76bb48cf48dff500e87a4868e567ae3bc05bfb197a7b4e95e1bbdd3929b611ccb7e75f5df29dec3fe4efa365f3e93c4382c3bcbd575cb5382f3129309366b117c63da67966f842b80f3c8c82e7ddbeea06d84ebd6a269e6a0d8ee4df174adf42dca515d7334f4dca24cc01bee2416008ef7362a12d078fa71db55635ac8f46a83f18b435c621e55f2c31353cb3567001f1c8fa3c13ccd489f0153ce182a5f87ff2ab22710b85e818cc4d0f39182cde0aa6b2ef23de01fb3dbad746f38ceee7a744d70fdf3b8bb7877da9a9caa175c2f98eb06c7100f2580771c59a4483dc6dfc8429c2fddf3fb67dc0b7d273d691d6a3b2c071debdf882d4875850b2c208c54055ab93726d64cf679ad18d868878f8cf775e51280a8cd4e3b6f3f32785258f9762817258158bf0baf45790568538aab69cfb34c75d90ed77845b067a4188508b84635fde9d868870acf5c63b08c892126e6396f4fa45319c7fbe7d103c9df0a684f8ef3561670e936440cd649b2efac09f9ac6015d2e45f95e2b406192cb3a9e102dced1cb667ada6d077979507a51f268f868fecbc696b97527ac3a4b305f06992a37f4f333ca5855784f0d7b85a8eac567f3ae4edad37d303411de351e739e1ea97e8d240d7f36ece00be2564d355201fa34d3747a6f618c7635eaa17fef2730f5866a75f31d7fda3e1afa437dd315e735cabcb363200fba5fcf153a0e2dcf9a294bb3ca0eaffd0efd217b82dd81d742d9a7354faf63e55e2a0dba8bd4ef238fca5ab9d50940299e3774609887dfee8b1495b6083af52a263c0e2d0594d9a13c265416f1c66221e29e9ffdca1db4f9e0a2afed0e145b5394ff69ec7479f2c8259d6f1af24fabbaed9ae15056c66afcb482e394e7a35b534e96a597530127c6ae3af48a494c349ba4a0ac254c569012d07d77984de3810547d8bfba620cc8aba8d4c2b00d9a19670ac2270745eb57af8521818d3d429b9e8470a7686aec093adb3ecab6c7dffbfc9a63ac024d2e166e42426e78aa493d32708cc2a51fa08337cffd91581e0e81c2bda84a3ab69dc772d3a77ce3940c3e47e17e69a27d8cb0595b4ab1e0b7d1d200a6994347bb86875a090a3f457ed3397c57ec69c51bc172bdb5255877ede61c51323d8f6c1bcb19bc981720b772330e3c149282864a3c8cef0bb4c7c0291a11199de158991a2a64385adbd9fb22ef5e82067ee81801b32885e311d4cb0c81651710977c3b8f87f11a4c76fad5c89512b0ba99c5e5e5174f44c55e6850af2151006d6f0fe2e7966e8af7ce68aecfd0d46fc0beb5d6fb7b74dcf4c5023e9fce132add6ed6af52632d491b89d88a7bb694aa38274870beeaea2e37e4339a6f776c49fa38cc9d7069a505be5258540845048c7df183bcb6926927e90720aff58e203ea26ea18d3e5af03a0a56c76dfb5e1d97169a5f05d3e28d24e96e038a8d7179efc760362c1e2a4ca19569589aa13e98ca6ac3495f0b4457f014d4aac9ffe6c538d33422a428c29b2ef66a1334f35b76d5e25ea1031dbeaa485e54f7bce2f4d4e561d730203585e2a6c60954b2582d795b6d4f3b7b6625cff7b7f15ed190377abf7b22df1d3dddcdbc7c2b4a800901a84997e9e0982e67f17c5dc06a510ee113a88b6ce08f08312ac2b2fa7923ff69cf3aaa49ce43e028a24437193873784efac7af4d9cd04bf569e8c6a639b2b660fceb82543412053655715d02fab6d7dd10ca32c9ac64a1072311f2d2349a3a4504c1115cb7b30828e133fb5c75956f4f3c2840315f8d0925902e38b6ecb62e65fc58b7ccf02b0f4a04b4144e837ee586e587250b37abd9180f34d4f733b8d885c032effcecdc67fade88f1c59227d9f17a26b3f26c704534a2960166b0d85e376f61fa34aa6167b272c12d00242ac832ea558dfb67e3ebb96f5d45bf61e4b663ec507c48a138b26c287db3544df256f02c0981574831122c40c298e8148fffa05f9a3ba8373e42594e141fb838fd58d2b9702d19615076d704621715ec1a3e4cb2e878a64bf7b0ad92d04fd8a26732c70da794c2b972e3874cfd1296e24eba5615ed8dc4acab90e78a3527d85dcc6ca5296d65ef8b48f20ecfc8ae4442bd72fd7b63c6449f50de052cd9b84bcf72991e14f70fd3c4129f28e64d64b82a5a63571b27a5e75d43d61556cc6c3c70cddac155c8f77288859f5410db13c80e6298c4ef5607b092d3b5ee4793d6aa5048af7d7ba0547dad7aa26e6f848225379047cd388ad7c5e09d331f24ae423a8e67d7a99677945d3e74e32a4ab4673d3fa569edf81443135ab6b8de74b13c70e2357123bb8a50b7f9eebb1f894b6ce8963d8e1e765ca30409a3a44ba4ee8f381403a36e837827c1d2841cb03c52bde300f8e3aebe3b8de76b26265f85ac842c82726f228c6d0e116edf17fe1538147a15ecae191e78b8c1eed972c6c9ef5b729ed98c1cf760eb4ba97ae907e8a45640c070a722ab45b11c7a98674089d34be86eee591ce8608ad21037223532d92f4bc132fb6abadb852fe4b8db35c2717eb40bc6496d0aef3ff668bce4e4909e45cd2b9bea136719e2037c183102d35bd5412223613a086dca7725ac5b0143c8ea9fe6853cc8113a4bb080f5eac800a3732776149ffd15994413f4a3d337b34371d22e4802b3dc996d85a69955c4f27050775ce36a3f651a3ba431102338e9b87dfe1207667f2e8aae1896d488b0353054763d526183b21d37fd71ce494913bbfec9f65d7d7a3236746a6e464f55b944c2ce172b1bd1b80150e6fa9f72940389a9b111555a555897d5023c7abc385254f1e3fd1dc7c0b81396d6466cc0c2b15d1ef1f0a7d4d2d379a4c387d07b33381f940c92efb054f95b68e4845391edb5501620f15bc5e11991035bc73922f788e8141f92f70f32427a07191791216ccdc63ce6c9a6ae41679cfab5e8c00c96c06ec5e94aefb6fc6292f7cb152eb8bc5d7296f9ff240ad53b9bba8ecce595c34774e5e61b107fb2a94803ebc983c7a2eae397756e60b731d8118436c6c7abd2e3d7c1bafb8188e46ccef11b318eab969eaa4d7bc7a644d5c55d61071f201170403d6ed0f319aa9584fe4175800ef0cec80438f50c300ca04e1a277e940cd3b47045dbb7a268aa56cf897c239d7d487e5920bc4b17955fdf02956cd9d6a9bd7466574bbeb8181cf2ae33efb0a3cea35c67eb4cd111963b3c33526e3e097ed99b7af867987c9df79a861ee3cd5f010635ad74adaffb303e5979a10cd145b33b05e8b479db47314c1a3f28a067d58411fd09dcee292808d9c72f4258e01822b374509884710724a2e9c856cf94bc696aeefed20b19c118fa41f4175f45032c1c4438364b2abd79e88091540e5efd645d3530ad43a340c1a4c22cef2a56f86565e485427a09ffd807600ffdc5b137a2740bea009750f517352d7d51245be3128f8906ba7ef877c974853bf995e23e66e47f9bd707c9849147b0526a4b491e6e2f38e99ac81061425b14136ce7e79881f9c2546e7fbb65f77ef65bfbf89ffac545f2442d7cc911893de618af7838ff92f3844c867ba663aea2840b6119ad3d6666f08ddbd3f16b5f20a5cf1ef47ee119f5db5c45e57d1e4dcf5919a713279f5289ab229bb48769829ed440f7e398e358f32f84a6b3738982b30300adceff4cd105fbc3e4362899787de17a4095485a08d0de647a3b7b6c4c13de7e5a869065c584b1133d260e9cb09de80dcbbbc2d0d806a6c4f74e79e37d0b2219e462c27fd9f3f21a4db950a9ef5f678e3ce9c885c598620cdc8e75dd95cfbe951f04a4227ac3f4c58a045b0710da70162c2952ec361f63cc1b8f8b9ee5dbb27fe872f04ba0f9f86571e962960f7554c44e54db29f5305b3623b1cc3d07d6c1a6942a68ea6be31b2c4a84fc476ecedb36b4ec589aea82029fa6d5bd27a495f09c782c81658e6ffbb3845ac59fdcf6661413956c4bb66e8d0203489e9a8b0f26397c4fdf13857b56779fcb88393a6837862575f0800ec9777c2e852f2b191dad18bf3d3ac2a39d8157a0862d41e44c2bb8151d232ff3318ed138c04740eb5918194dd2d232ef35f6181d0632f953f2035dfab9be83b048bde65b461397e99136dde2c85d98c7cf4fe1d3547c370d81132963ad0e5ab16df1459c248bbd9b795b4dc2f1551c631ec3bfd39cc7e5dc53d756f5d9a6c821fc3c9cf9b05198cfaa3d14975bfc5b181e792235430880678895201837b89261258e3e2fd9d7de8f1f10206b25e9e57824405e6292b59a07a38d49b17d1eb446d878a00459689b6aa54a25abeaf3c03be9b32cf0340659fc5fad96f1ff2adc2f5efcdd2d3a78af0703ca1a3bfb66e3f7d154260603d3f5e70b044f31fee0ece697b733bc3f664e0fca8db99ad1e4bcae0a064e57e4013d9efd5fc3dc0ad07c5304b2841e1fa57e600f5f031a7923ab26351188aac81013430b9bc2704ff955fdfabad6b1a8269c978318ba1dd6a58415b91d1bf3f896ebb8141c2187c434f75ec463d3e141c0d7e4a51de67302e7111bff8033f94259505ffdfc3af3ae5b14087ac44ad9522bb4320bcc51b82f008e8b20ec6292c1db6021af1569eef3151390d88eacc28936889cf3560bc9c1ad2b0ad6c21b6a43324bd400e6905416888e586d6d8f9815b70135a88ae64a93bc8ef3ae56365a922ed7e599f993f0ee47d41fca502f863acb9e1c5b6afa3d96544e98dbd86f531df2df5a2deaddd871ee6763a817e8d7e10932e8837823a2424a79471414e7d5c656cf1da695dadb12557f9226f2bd7b074d6557f2be7e2b859c0f2967e7a1f9d9982a9d1e777bfc9a0d861089fbd51127df335b1159f006208984e8f6090607682a05babd52b5fe80eb9b0729c9f88c0af66b6c14589faeaf2d422ff4d6629f909e8906d38d020417860f0b7b1816639c8f3132095676cec57f25ef5bc0647576297454cc9dde371f73ea895759c04d9ff77c7807f2a638cc82fd7c448ea295e2479993def14b8c99996711ef8cad9a6d779976f9bc1feaa1060f7bc3bf133fd8bf5b007c9c4e86dc64735f14d5370c22f3a665b6d31b1f24e69593b639934b9b5136a2f1ca6f1a4bd03245c61adb49cc8118676980947715b13903f9ee6228eb1e371ac6ca3d99393c7a592366bde0926035bb7ec2c92b15e99ef3cf54a55e74047fc1b3f5c8abd3bc577b31dd21d4e4fa9b479189bd50987dd7a59745e4abbadfc317585e2560151c852423e2f3bd1c24b76d12c5b82c17ffee6cfb6a8aaafd01cf81f280ee452918f98b0475407f37094f31a627c49be0155f784268690adadefe57cc8cbf9abd7f5998facfbb8080d3f9ae6da2318445259a6e7bc43359a95bc4442414ba8622ae7fa27d303983556fa1e2b929115b0ea884d79003025be20225f3b61104694391fa073ae33500646c07bee049bdb86cbff6569074d1f2fbc43b0d3f3c4634cdd38c8d80f34d1a02773e8f2e704efddaa13db7aefa009b94deb38a86912cdb13fead917052c31d857c2fb72d9124059c1398c3d27dd46de0f1504fe3dbe9cc8860060f46e5fc90b72614b0be0263edccd6bef2b0bef4bd9f5f671939b6b281d462f86e75ad04d5d0fcfd63baf571e83a0d55e1c101ed3e207262c0da3b3e17e562132c7f28095690224ed318f87a226fda7c9c9d63b0bd0afb3dc3e4224dfd83a79f44a518dc4b5e603f0bd64decb5a23042bc85b00f69ff9a0c27eb781eb2440a167dec22730a94d95b6c0fbcfbaf8c972c4e284843aa420873a5149bf68edee4a77213126ae24d98014113971e253ce8b38fe5ed698dfc4f2c2bfd4ba0a4437eb57d69197d9168e0e6a35c819055706dc378226500bacc3b85a6f9fae8a706ac5664af250f438c0d91b6b54ed0e120943e1672606cfbb4bbdf2597691feee19cd5dc6b25a620679ade27faeb210f285c77b49f9976599c7230466fdd9a7971c931e05d356c7279d17c0a34010b1c4105b8d9e3dfcbc0ec4982f1abf5331672d89cccf6c8b04f15926ffb0c41d8a4cc08bc10ce88783b0d3f726dd40cc68517dcfc57063a63df73868e98cdfd18180d4d3583adf774b9ba73b2b9bdc8b5bc4bae6d5202a69c280222064765a91d3bcda2476482de176981e8873eb81b652ee959bc3894a2147347c1d549345b80bea20a0b2bc2729b9fd82e4bcb5483bf29426fee96561eab37074f502892539ae23ef30d9d780fa251a3ceece45ac2b04587dab73aecb5e1a080e49d644aba0c2c7f9ecfa88fa5af1b17116b64caaca9ddde520436dbe05d9bedf43a8289823728301f441048eaabda4b615f6502de1f9e3fc172b1d59c6a76a3b6745cf473c541b4ed55e32c6b62d4f5786f84675a0c21600ed48e5aa9751477a6f1cce3d51ea500e660ca0b8e04700c1edb6d232f6c9a4d9fb0dbd7f890ab463427a2fe1ef434a29db420bc0aa47e5f4cf4bbd71bc1947b68c313b9b7f215cbe1e2e5ab58b88ebc6416dfbe9bbc135d44a0255e3390bd5ee779330b2d75b2125fc273179b221f35f13e56017aa7ed891ed7fcef29e2c1e482759aa0c317d5477abadfc223ad467ca75bb94cb7266e6e3128fd4eb8c43a5bcb0fbedebd79c7a40a93acdc0d188ea6b08b782cb2dc22facd356ac914c7a997d2d1ab9f716359b75867d2d7a0e6eac791646b55add2dd9f94327e33048085725df95bd16c3e0156e82695fd7edf13c3c46ecbd70bf45daceb6a28306e0956e7fffbd3bc8e988ce8f214abf3ba8de5fee6a7fea5d2918799edba1b63b17fe16b4dfc181ff5a460e65249b37000c0d6b36efd313ad7df2c607c142d662d8268502758f27d97b74aac1b30fc98890a7dc37bd7c3647274660a05fe019c99b8f23adb1c7c628ecce00b9b089abd8f44214c458d7e8da5ce7b08e5100f3ac949ab0f348c89634f0172360c66cd774307646ad9eba2f15fcd5b0a517ae6236e644dd8d79fd7299a1887e5d5b1b95a1d34f2da60b2c2a8f833a55f137bd67145b9a07c4d7e0fd86df7f2e2c7a56bb5856d496edc176b7a012b3f2076ebd7bcd9fe055ecd099980212873526ed12f1f67998c805e439fce4dbf819f33b2cc89b06b132890513d93a55ae05e3b1939c83c6468e716d122436861eeeb554e0e6e493d4168a71f996c07deee2cfa3497c892bc0708245294afb863785d84524cc7ce36a6be8b6c5f718b2b7f35b82e7de7bb55180700cc57a24b7e5d745ce1ba20b91bc4b974e76b5f155a7e6914e8d794b526df448d3751a0834f8e8a1937919fef3564af3e72a5be21aa56c1ad93340fd0ea5c9739ff6eb1fbd5a619fd21d81021d183241ba5b09b46fdef193d39f7efb5a082f46b8504048af576979f7f88722ac05096884a72f60c5a4081c034e197db0c767e749ef4b0a0f61a2b90c9f91161d835b616df618ef7696c5400b5e7353434e6238312acea4106a4bc6f87a0997f70f76a4c17acf6b6fa77d1a03e5a6247e36f46bd1eec205cb3502102d81ca8c6e8df289d59251cde7e86fee42859886729121967f364e3a972556686ec98ca9a1ffc72bb400ca7e58cab08421e9c97d6d8b2a83934208d201b357c058a77f48afb6797be199ce2ef5e4b7ce4a088b81b09b3c06a7cbb02906aa9c42c8b52ce33e5aaf881686f148a510bf9528198fca996931da0d6720d55801b45b85d4976e54a24765c63b26d9b6952436c6a10453d9da99f0343fb1ce761ac7f66809f8b4a1b88c5ce752500cdca59d5185506daff03e36ff2382d7a9974cd34ee0cab9f904e6bcf0fbdef60f940cd512a12b86ba0ee9a484d1d7f341f06698f742a1366bb5ae0606e8c41e39db8fb790dc53178fd4a7e5444cf4f5440c79a7d90965e3eddbf23c457ebc694dac597892566444ff0468055951e011cb64bf837fe24d2f0e87c58127312ea65491c081ae240cc2e0fd4de059750e261538a6939c4389fb8b1975450a9f2e527d81848efe2724731f32c37e5189cea4c75609129b14c62f577997da822ada84adc365850c771bc08ac49aae312b043fe370ec67bc86ef11d120fb55339188684ca9a3ecd9884f0bf906a119d5c2ca4f111b799c469bf7ace5a0a55032340bacd578997941b47eefb8993421628257a1e48e4f207bdf5f20b0ea03cde99e2bb594cedb5bab029dc77470a652ec8a3e5232401b58134dad316a969ec621ef15e78fcd45314e1ed22b58fda55365f238309f5ddf8aac2ca2a673102b3c08313c7882ef1d286192de419fe531c606e15065faa2ed57db939f7ab008de97958252a68301a0df09bd2c0f710886ef8e25fa3c4480bb739262bd9e7d42f406165b3620602c8b4072a9def345ecf459c2ad84b268e704a2ae3ba0f056d911a44ed80520ac69a45dc79a2a391224583dc0bceb633dbbdf2328794c77aeb60fcd38f0415b01cd284cd15c7c2c32448a4017d813cdfde37d320d17bb9dd11ce05a1b2e9014ba8d69126e44aece212fb86e176a580ed8f8667052bc31876290e80371b8e7f15beb086b93438cfde15c53ef9cde4ecdfb735ac1b68d7d13416db79b2f584a538318fa81eddf7d0f953d2f83c705afbc3b136d7f9edb418a2a2f27355db13af35394428799ebd03828090f04f021751b1065ba011106b479f8c931dff8cb63d1bb0c672e3c9166d4264347416bba1a80041de19c182a40c163c042187fd9b6b3048ae11e5da629c667f33f9d3886f8c85a6da18767116eaee550e0059f824aeffe3bc1b94895491ca82c94047ff6fe15489cf2da6f11003e98e7e00de286888ebee503544a874f2f063758c764a8041e285222d9d42f33a2d3ba5288887b20db76ff120e5fa9e93193c7be21d66f9257e549a476488b6a3b618d94b90390134ac91cadf7218814c32f86062f12520e27ecbe5b24376613ceabbf226b9c087f6498c28621951211f9c1c72a9252fb46d9e4e11e2a0ab92fff7d6cd8ca9f02b48a424fdc7ed8556aefe843e47f0df64ff562f134e3b5cfb41df4dcda2af7f07d6df7e60315fd94b04a4151842f2455677487143ce093be16030aa552dff30ea9973990b1fc121ffa816c996abbeb0a199f0fcde803a859fc0e50a4fecbc86d63c1a97dc629111c708fc611545ef21d318408a83431779211bee1da80769a283499def54a05b1bca2a654e333479d86b70d673b7bbd07a6a1e420ad18b7a7adb2ee4ba1b5d5c3184b70ff753c73379608fee3261ef71a70e5b9f7240f63dd47c12f18c7aa145a3444f51ca1c4ac3e29852467b4e6d7e9cb88242e2edd148813973b5c4df28c786ad30a7cffae9598f72cf8acdae05fdc8a6f63a06d5631438999be8c25d22bc49392f24769caa00833d6e13de9512f1b228a6310f7b6791ff56e4493929812047b1f9369d746a5a29bed4f55c7b50843a243dbd7862dbc68de0c6f8a51edd2f7ab6b0828c3af71232aea0bc83bc46630a95a29d3c94ddcd29d8bfcc193ae34fb53ccdc3ac6a326c6f3af24a4c19400e1307c778291e98bc999501d79b1f56a8140957fb58c1459bf681c6b65b36d320251dc3f2ad913d5265a2f677d7939e8abe3b6b5a0cc3e7e7451a22247b1afbd17c0c463bea8315763e3e94b24500ec0a66bf12a88638b0bf008b0bebefb2bf2e571d546a430c99dbb0da7ca7adf4e46c6edb681b3eab7c2fe6d35592234d6ed1772e5546054a9f5d529ff261aba2e74500a411e49aeae47402e13a69d3216217dc32734dd8dd99e28de69960e760da76db8900db0589bf99c01ac6c96ec55c17b7ac481cf36be1dbcabd0b84cc278c5f33c68e15c95fb64b6dd70e4e62b56eda3738df8bf71d12b22369384dd517a5ed6cf2e1541e06eb61f0e44282cdd26f998903fe205d2078b015de9995fcf026692872a28b8c5fabc2fe0381dd87df0701f44ec8a623268c419549362b79997d209b0302f4e20c369bca67830b690547beffefab0e4ae27f8eb98772faae9c1f56df341270b5f58e1b44391ad17f4fced509cf9fef2e90dad3c2abb4af2ba8be118be96a2e3bc4632851177615422f8887be6db23e916a25fd967cd6fa970e08b790da20cdd56800b5fe9042dac7f7f0c08a59e81a6134a859f0f467dec145f58326110c75549653b792a9902cd261ef5f31ba6ac6f1b1357c62c2c1b44767ac5834705ea73b4303e8915b9158b6083dc857c90527672b089809c9e7d4f6b1f06a91298ab7f72b91c0401220ea44ed5e8d0b54f7676aefadec309f3b01a40723c72d44782be54e8f69e32f1d446bf32d33f93c0d974ace05137d0fff091f6dd2c01d1c0f7c876de48a048798d89d62ef464af71357af9e4b3d2f97a64de68fdcb45fe208f01b91203057e3cb4b1068fd52e70e9501edb734bce6ebfb006a3a1ebf1e191a8bf385e1325c7ee50b6093ff6e28a0e5d1da771c5bde70106902e1b3452718684ba45747ddcf8aa2279d58b36ed5de84f3c4be406503c2ff703719ca7b3c8b4f2f2fdb78b608abb96d8c9044f1b48dca8db5730e666c2e82459b1dfe3d00f27abdad2838abdc7a151f95f535d3cf87e526d9fd7df6a5384fe0444a4eea28214909f71987045603dfbd0baad9c4fc3a2af833ca7f29041750adeaa49a15d3bf836df1cc5bde7d4758c372b059073e27b10d37cb7869a734a2b3b850b540d7c76577f3276510c6bb8646d9725092f964454b05f6ced82baf69ec401803ef2d09f2bbab4edfba28c8adddb63af1231a1ba3b061c385870ada73b14feaabc096aa9991842e78e9e749994483b9c0fdb509067751b0ea0f8cbba96d01595b72e99f32e85df643fef310b891cf83dd4feeff07e275bd516ccc8e52f9311a91e4b1373eb9c498c1d663600604d690d8945865cfdd02f1e117b841264c4189818cfa8e7fca844defdc1574c8b34cbd1d6069b28dc400d371cc1af72f6f342286f0721be2bc8e0e6f7685f714b0c649ec6006f54de538f1736fd08680d86c081e127223b0a1b11bbb831c8a2f531658df9b9b4f13a6c55df3ffe8f9b09a8b817ee7ae43199094786ae1cc42b3d7f274061dce77475bc02aa097180e35129977b346ebea08f5b16b851d8a288d789a078ea42c34792ef0f4ebd01cb87dfa34f94fe437dc4c97d300ead24fb7c6a549e1f70f0de66aaeae553624d99eeb1466b8ae47eab00b8ab385c05cbd60201827b8e3811bfe70e26f71090ecc9a91cb9b8ac2d6d7538b87f30e00d4f3097ccdb3a3678afe8220fb7c6b6610273cc77997eb765beb83476e91f202894f8a1738e59ff8d1d98a4dfa79ed21e143458b443e77a0a4b45558da5c4c2b6bca2f972acf0ae30867c559ec3fa55057692cb6acc7717d2424b02815b77b97105139e04a2a2b531dd3f5d28c6ec2c3e9d29cfc445840c6ae3ed07cd513a2e64f185dc31513a8edf98b6e6170d97b95d0b5f4c135dbec4db837c4c88946290d9e0d4377bd140df84eb19b060e9e88c51b8fc6ba78d8a532ba0aefd626a53a39a2d008e36cf24c1128e97aab4141a7e5505e585ff6183d9e9a5e8abeb46e44c7b140bcb8b9a8387a50ef1bff21ac18d66190262eef24a9163d38212a14b17c46268de55f4fd009eec75424a5434122920e475ebe5a0c835e9cc312eeb51e578dbfe3fbaf1ce2db0aca8a50b4c38c8c0c045962a226748be50f4511ef3ee212de834cea7a8edc2e4a2a83eb84b342241c4adf4a1a7f9621c99e16a75852832a1bd0fe93e7a070678906e658cfbf583c78d2645f968bbfcd64826fae23fc5ce40b8a7f4a9cd12c4e22121b8b1a2d0927c53ad5a10949d3b8723a96d7ec75fbc6b0a62459b93c138f93fb2a907a8376c1b01318420c6c9430bcd407241b40f41ca8762e7ca36ea739b9aecb029f8378e51e3fde29ce74b7285a4a116e56c97074a26a83649eb4c7419575c094313fd4f465378770d95e48b5851452e04d1eb122e7413f3437f69400a839158c846ec2549b512ce7a4968c92f85aa17ace5b41bde8d4b2077f6143b1d867a243915d30efef4cd08ff61e569ddd5dd98f29dd79a0e9ed25681574edf4ed38b5a6460a99b01cc1691f1610b05851fd1e47eb60276ab0e1a8d7022b6a4e9660aeb8274ead0adf3dff81cfdae7697280551ee19de57e4cda874b6363b6a70065e70e3a2d4370852d545645f9391a02fe90637002cc84ea057eabe0b5b8ca0421355144a42dde8bccb56e93f7d3d9940884ba3c9889e6b81b9b54fd5606e8db32ecc05c90af4f48c84f5241fe70b95280179a1e46f254dce8e9962ec6d615695962abc7893544a75610ba844891f047ac95d069ea4c4174d74a37c75583ca110286f925cce343f8d88b175430305745fd13fa83076763afa1a1eeb1d5c66126894ba3f3854e56ca5b800a49bae7ed501c110dcbfc8f36f0a269e9fbea709ddaee5d3656296488d88591eb52cba354a6268fd0cb05237a017900482fde671fce02b7553b982a6c06c895433972625247394c5fc87934b15ae77a9f7deaa2f124488135c74571966ce05552eeee01521cae1da88e054ca2742ea478ba573e003014ec2013a7031f7502f08ab161c8e1a4acdcf19ed9d2d92d49dccf25e9e99aa5a968f33b8d382508362811024c243138f0c450a20602243fc2e594066bb9f469521d9fc042f448c8bfcf43614d2099d5e5a0323182aa17c013582c1569cea6e7b939ab3086542f5fa4152ee5c527128583a0d5e98d2589bbc257f1b557692cf8093eb02abc4601da9802159b4805bc477b42cdd67a1915d4a869ad03baaf675c8c34dcaaf239ed15f29aeeb907775798ab49832503849af81db323aa0edc1ac5d25370a98ff7a23c6521e4a4a450cb7bef52b12cb4a8bc28f4bc86908d9b6f6ba77d4209c56ed750abbdd5bd0de5a021b041e7c22217604977db005400156f3948953cd623e8c4ca595ad407545e8614da6309e5e3f93409e3b12d923f738d82aeb5dbd3e8a7a74482e5a899a2bccffa17e0cfac834425d500e49d031fd51c4ce5e6b05bdc7e4137eb3f4ce0c170f0e674bb4497f423e6dcdfec5566d233d425b00fe38bdf2a56c6f30e6db1d0e90438c885481b314a7027d93d4e38152851920487abc580b1319d7455ef2d1df9480a8d860e90094b7cb7513df5419f7594ff17d7d77b31101ddb2f30697447a2a03707169e6358450bc0ec78aaf0afeb804f04fa4851f7b6ed0fa252a42318c911e8d7a854a11681dfe81f634181ba785ef044967487b243754846e91fadb43145b263f65fc80a80ffa25b4084fa7c465a858e87e5bc53dd0e2b9f568e771b730a4cac8c43f20b3c378d397caef70b53031fc34eb8fb9a5f162497d857d111cfd3ca7f16584913f395e8627bf1429d42cf0305da1f183a416ea2098413b3ed5d35741f9348cf95eeed1c2123f23f1b1594082a74df5e74bffa63872c1352e59f6b1ec0c09573e028564dcabb4826cb0110791191d393956325d2a7bed982ce50d3208605107a7090abfc7b87000c90fa63909e9a6740da675a6e794b9aeb774e6fd4de34633182ee0cc2d5621cc0943f908159d81d52a3da8c4ee383c306067d65a459a989f94f235a0da6090f7566fbff0ff9090c090fa0afa909ab71f5fdd780ae624d509abb7fbefbba25423bca16feb756535c36519b3c740717f721e849acf38057dee95b81223c4922934bd7523b678fa6cbca645ab10c8f2f5cb2b4777d18fab029c3281bb6039bdad121203f4cc552ef2bb5f0970ff8437adaca4b68a9b5fd377e4c3f026d12f99e4167f4d0270ca3e0e1107ac85aaedfac61a0f3d38938ba50fb8d782b7dc7ffb61cad0538aa70876c68a43db11d7773ed115b76f29d53fd821458ccc3e345d27c0ef7f80b141b739bccaf4ab8e3555961c3c831d205ff4134117aba72dda8dd68b915af158aaf62af300bb936bf06a6eb81df7a9d08094ee88f4834a36e481eea30d14dc69366f23c48951497c50a2e840a10ffb69136c1d4fb73c0e4dd0d19b37ce353e59db5ee2adff157738ec46fe04f680d41adf337fe1a2fd33336d8fa371bc3411e7687215753981037b8a4f43ff985f1760e94e38784a5941dc7f08f767c3da1ddd3045ef5143286036466fb0de058ca3a8b23ba5824c28f40a48f05c584e1755cccec0c9c2849ffb4b75b7db295b5865d9ec69fbbba4503a12570a7500c3a60d05e7dbb57aa467df159cae05cd9b7f171e4aa2b2a592dcfa463750b2a60d8fd75e8eb6e0d46c1891af957eaca24f5f86ea187ea03e9683850be5e5d38c12e5092ae6dbee9bf1befd4c686bf0e1f7f960039ae408ea6e1fc89598cbc31e43a349759d0f5986a73769af7410c1f2ab6082ab8aa4d3b9fd071c29cd3ddc27200354e75a2c28ab0de0473457a9d8cd7eb41c74b7473e03865a656b263636486d3424cf2eb2d9290fbb1836cd202116dd5b98ec52d6337a8bbc46d09ba9cf8327319f8a476e4c81aceb19bae5b09ca66ce0a701b76d1be7c232bdcd4a6a030faf35e1cc3a60fbbf5ee2b484f6221def1ea048fe84834d212b6f7cc8c61f3e3567ac5556ce34087da095a411a4a01f670da20a6ea6e2c9a1f3d00906bad2afa35c5b9ac1d8f31cc16ac8734da7a1770fb997c4e837e7c492a6970efef0d4242758868513d9059f40c63cd07e25c9d72dcf6cb86396caff40e5888dd5d0b91976c9724c092699eadb12aa1b586655d0911e1e6d536abd0347c6b35203c87950062df778bc9e29c210e2c96c7a0337e4cce8ddf90c8ddd7af766f7fddd6200408143269a8f1404fd1c2cbe5480cbce425f869ca1fe215aa93d5100491baa9d06c33e0c060000f12cd7e089cc22b86ffaaaadca1979aa5d20ac5a3faff3daa206ae32356fe4d7649608729817464f80c29b4d9efa2a97f55b4443a7a36f4f559443c5bafd91427292e37bd1a879fb42ef21744277eee273d32a60afc753b50bf7ccd127fb5f5d0602b7be75d64c804dcb18a20d7bfeb33c6f414265442b1204d0914e0c737762bafd65600edbd5257858ff89721c0465b4a82087f9a67ba37c832070cb1e07c8e9d905d82fa08b1cb7aae00ca20b64a184d9ed23fbee8fca230478e0d5616d61ae6f83a492b61dfce67aa746f230d63d84bdc1671bd43e2910a2306d41abcb27246c62a2012d5d8c7f587da4ceb06a6bc335d4cf0ba5d1c4a2fb0bfe14e532602c1a37ea01e181dd46731ee74577b46ea9eb03fb66cb61d2c18dd7f3629d2a8d78e3c1d601977359441ff1e5b2469206b3b158f6d9c379cc7d53bfe096735960c44c6017087b528084bfd0db6ab16309efd9d2f59b4121300256c68561750b0bde806b62a8f2b027c83941032ceb41a380014e78a92a3434154b0de325d849993080bde5238155684d502b4f370d1a2d333c7d3691c3daec3ea90f5fd32df59dbfa7daf812185b80a9e9136ea386a341240e2e2884c191ce1433f35587888de2ee5dc73e504d6426a58cc09f26d1b5d4c384057cdb4631779907b9beed49776ad3a8b0750a6c7109c011154c72fba4fd205354ce5ae7a6e65f01e17153a2656c4b9255c9504adc47304b471c866a461bca9332a0eb510b6fe950e0f310de316872a4ffa39e83202ecc09970881a348d4bb8bf332b9dccc4b02549daf3448b33985f987871294ff58200989231180ff1d9afa1f92bb064349fc3f3466503608ca13b13056d47dac9a6e929ceb7127f4e5b0de8e3c2d7f5e65981c813be7621e65cbd96e2f92a2e2e3244014fdba6998c6d40d9af6b5c857ba11d0c76120b22682c54b8e66f2ee6dcf820c8f3faecc234f9e09ceac1ed30dc3b483d97cc36bd1f43ff04f9efc485096436f6ceb68200f461c80c7a27ef8db4d8db0313f76bdc7b5df91299f25a5cf41e84f5a56236a61f47f0d015bb421ef105c0827a57f83bd009f39a58264a765ed30ff27448be202bd438a3c79e0c8e47346513d258ded0d7801de65b9efacb0cf6cc98e8ba250631a1785a708e28a3accb0c9e12c6f0072a0e8884dd508b2947a301bae6f7d91e7023782644c64b64dd4f4f36a854bb95cb08926daae59b7a5b8bba3b02db80cdc9adba3849390d03d894925ff4fe01369e5b7362a4d4113f1bef1f0909600317440137f0dc174e8160036261cb2ee108ea9d1da942d4f2ee5bacbdb378f5758f8b6d61802ca6bcdf7dedda5ff4b7d832dcbbf7fb0c98aefc755a104c029fc89b6a8129f6be626be0f9f29e80aea24b04032f36d920df71f6c576e98e0de868cb554bcd6fe77cb60de375fe4029c63e34d5c6d132b0d25c002da17ce535a63f88e229a456559bf1c2101f4d46083360a929015fde82b4b68292e827dec88bb4fe4a2c436c87f297699572925de56da1e3bbf2470a6edd78705c2749b4498aa1eaed029d8650abf8fa4e740814cd79ee57acbf2a6ce40bcbfbfa6fb235ee0460e9cb7fffe85899991b5b5c1a4ec0b2cbf6ffa35ed264024be75c898fd422d3590c0ba710429b41cad29e5bd5863278e4a51d8ce140037639e4777bcefc0313c8aa784f2d79e83021f63e70fded8da7d4ab523d30c8ec4ce696c52b5dd4e5cb89dcfe52cb9f63a2dddd264a386fade6b6ec4d0ecbd2dd2cf6ebc209ce65cd603c9b324fc18d037667dc863f00c962be415da42f69bca6595b6270cb35d5f6d2ff41c8f595e9147767405151513ef2847d414e841c24aee31bcfd43954a750d490071aed38a0b7f2315ebe3f421a94185da3270ae8906e263fe9770d5a53fca9a219a840c7195d9e7d3ac8aefb30f569c3ec6fd28aaef3967c9de5dadd4fd1dea23392613dcb50cea0f5ae5abfc5b7d6bfb74b8a819e60e285c2310fd28bdac550e620b7381f2bfcce03735cf1c1ed530bb7439380976a5c06486ffc8dccd6ccd2483bbf2a125c9d10945f7e55f5a1681010c3abe853dabdb16339f63bbab79e3377f1be9f48a949ef447ca0f22b4ff8079f9a27f89d0f33fc902b7e3e7c23167115f4027bd8a831106b192d4e4267ddf4647db8ba9e79ba557167805ea7f6ff86091cb04a7845e536bb4b9df104ce5388ce85c6f9721fd302bc12a0d4e7bead1fc2e123154a406a6a1e670d6c945d33399aad58afef1a7bec75d5937f413e58d4aae1e44101aca236d48ae1413b61fa17e3558dbd6d187e019b5d92d9f8eb5127e2602380b5720344cc117a7c1f19a8293dc2a2eceada13033cdbce7e377209a2e0c3c9cc4ecc9abf4d21f8cbfd3c6753df9b8f71ccb6ced6d48405574730dcc083141dfa18ca664d9820126d287008218e6d2b7f1515dab7481218b4cfb8b896da81ed5ab7d0fb7e273af84458d44cf05929e7a3f2f688e18241baf7d751915225dd567363167b08a7dd48e57a77004b4aa115f61069348d33532e9273769e10b41e11d11b27d92d733d156a8cdee479bf0ec45056156a5d828d116ce35471a1b4dd506d2a627422b6d1f563b8826b9aaa8d222336b46a90d8b7380da94fd6308ad9373a347cfb54d0d42e40715040c1bb9d7c940c91f89316a09c12807d87f6fc74d5bdd5fca3e1bec5e4e0e927a4f34ca2c1fe9f1176d4a19856c57229af5a6b34b7dcaabeb0a4a0e76057615d970120669d01272754e1b8f5ace446523a3829440936827148a74fc265f2fc3bd48afc9320b0f7ddd040658e2ff54f29fb2665f046b366199ce041a09312817c99b8da39f99a52d2058d3343e4a64c979bf73e2d7b2d1c8d5d858911dd7615d244768e4e3bb992b746b49373832455b45fcb350e114aa6fa855fda670bf36561bd32d62ab97169d1cf766484c45d0851b871b75034f1725e6ce8ee3a53c2dc42ae744707ec46b47ac47bb65eba9e166fa5f565cfc1ffcb0e2c1f85e6f8e7670291cbd2876ce7e7a07d9744f03f0600c6e8849b0ec81646305b5570080550372088e77f2dfba40245281d78aa74ad5d3f081bd0b497aafc42116cea0509a2259209e291e2189476fdb35511024992547a209ac70964b38d913d3b6483f3f7094159017b722fd681731176b5ef1a97e149873bda7d73a1f1c34d1d92eef4ea0488d380e60d4ad0f9e4c0aeb471622986333e823c22e0767e4e24d956f473a8f7b90728a6c65d50a4a2b02e54076e617df23419e72de8289ffe5e647c091201b898a2ba801722e3d7926b33c9372fad09f55b47a279ceaa0a73ed37dfe4bfa340de288bb55b79dc42af9780db0917589bdf86e3c3034b4490a0f730ce00e2f610b781ba885369d46685c4d8d68c028288061ff2616f8b15e14e1438e61c85412c4451ee52a2a39a8cb689510c503757cff5a5561782c3ea1897cf289ebca216ac1a23885e519ee2b279f59ca5eb6f9be3ea0743fba64dc12a6b81b30ca67534a6c264a7534c3c2a40164ba2f575f8d9d859be4e17695ba0bf0e74332f65de493a37308013e2059d0e6b1100c30bdbcc5267c25f7bfe35a788985ab31dc9d753f86be6d0aa49f1f5be6a7151424f1ccd856f4fcf09ba0e737f73179a2564fb8474c199807217bba11d98e45097e6075e3981757439985f3e12e1d2b9b90f16e9c99448b08ccacea3cb903332bdf98c252fde7b7e56b6db5bc37461bb8363cc3601afe7c8ab42bfff4a7ec4cda7b5aae3887d13493ed6efee5594fa1fa8414f81cdd43c5078414fa904a5397748cbec3ac88a59942dded2033cfd3e537b4b20bcd436898ef9f2093ddcd95f99e2f0f75bcbe1a9cafb5826699c3e8f877b68e642c6fe034f1c5f6b036c066d71c55e26e6b997413e09f326edf03ab256604452d7d5c92445d2fa980012a78e831151348f2d72b18839006de0efabcb6076cd12c7cd28bee04b15aa128d4fc8a2a98cfc63026c20768ef53c002e9aa2634ab7d92bcf1ee89a7d698060072422a6d0d244b422345e265bed672aa8e83784dcf96f7703a6ba057993309b115e27253e6c9afb52acc54d9227bc7c2ec9acc4314edabdf62bd8282192fad340cdb4d5a5a93e597a6cefbf658305c27c4479e01eb58d6f0e0ec8f4684bd2e8d6511765c6592369243e34ae48089e4ea6b4f20895f2b375942421d7990578c91b5f7ae61552f78f01a0ff4369618eae5d4a223c8e0a80e21a3584b917ee2017d483a6300bec420cfb45f28ae15a3ec78a88eb2ff4cb92a7907e66f5b694afe08fd80fc5d484945e0894d4c03268b54e94c7820b82426f043c30ac06006c7c7d6292341a07fcbcda53275989191f6bbabbb23369ae42ff9ef3ef1207ac4eaec8f2744b636d391c74644eafa56cb9a707edc9775a20e427785b536c3c3cf6223fb95a422fb1a4fd16f38ae51b839674ff6ddf5c680f016e2e9f6aa843ce85e7c1afb10c79feaa0421ca121cf891b61cd8ea9d3bca33baaa401f34b0a235ff40ffacfa4103233ca9ca8d5187118d413d5678fdbd4c99f1cf42cb2610cbf2cb44c4234b0c19e950c4939465427d59ff65cf45cf35a3bccdbc366fa872d7d63601b904cd660e975e2c0507a2f1988be149b0e337431dd83a227b0e97ea8d02f035490f3fac198ee36159560d35d77d767f68352dcbfa2967770283c30d71768d9cbbf4717560fce14bdeb9e2eab74876d1dd5ffb3dd84b46fec3fb72dfe99805c1b94ecac751775d0422cb0f4296073b1fc947c32ded670fd898a1dc8ad4ee346aca90c393a71ce0b43c89b69c36e143cd9e7df7341736bd29f79dacedf9c15b9280ca6a83a989f782c903af423e7eb0c5e4c6df2ceb2f8f503dfb85f23f989def6046e0188b91b48c60ae03e4fef2c80818cf17b4465889267f5a7bbb9a2d830cc0cfdb1cff1c2af5a3e572eb3fa575cd83ec0d051c48f0560747969c081a79f01ab0255d5a06f400327feea0ef61c531ac4f871c72efd2c2fe0353e6226c4e58ac421bbbdf16ae420e561e1ce6a96b7b2e661c30d39e7cf5eb0c22800d48b87e40532e8a0f837bd753a5dc0624383ce838b4b674a37a01a9fc25e952cf09ce74895b663e14657eb342abb72f37e7b30efce916351a6fba5a4bc57f835d818c0a7618da6aa6bd61fef97e72ecae666eceb7845038d718c1ef92d2327de39d52474ddf39100275d17f713b834ccaa4afd045dd4a784edb7469023742cc114565729090443bc7aeff1b84a2951bca6bdd9843204228848bf8a9227b63c87d226dabe50451f3df8420601d2306b4907500253e4e450bd3aab44800bd3f0f5cf2f5128d56ca78c5e6ee1edcbd6aa17923481e810cb91ab72ad2760b9df2ce1f2aef822278acd3beeb261dbc9b0613931b86996bc1d47cd617c1f35f5c8ce0c8e82dd7ad1f09b2f25f08ce984a561ea347b0676c3122cbc257b511674b93b2eac7e9c5432b869666b5da1f9b7b87d1a21562f6079403a92cda25ca05d47e03b67d3e48b94add5645cb6558e4cffd15996458c089e22aaa833b4de2c8de3b6c8f3fac922be85cea062f760108b8cf62ff3bf64d43f41f893cdcaa1fc10ea9bafc7b989d5eff658853945fe526ab463f1a47c0c57ad6bead37dd808c01541f1cf3d1c93d34d2ec16bc41731bbd026295ef10e20c6bb0b603024757ccf1a0e417d022edccbd2efce8a1198d24759855d4c428a877f76d0b21eade7a80e622b459873b1262aa4932cde7b78a1792db05e34eaa070af55d95bc23d277bcb13a414ccfd82d9a1306406c46d6caddc2738ee2fd1f13482beb7f74736ca18a1d96b08356b996f0eae16cf75dcab37f70afbec00e5987966e99c8e41c859180823718f84b088aa789a40e27df792e81d9eb989a4c98402b767ac50d0d2aa163ecec0710c4a9a840255b15896592284e8cddd2eeab73c28d4f609d0a7b5670dd7eb4fc7ac4d975852a25831fdd2b13b7122056a029d8b1a7912dcc17792f61400cd0eedb001ed81fc1d0ed4e8d3d627de0bbc4c897e85965b1c5a1e92f561b5c10d6c34392c19ec2f94dfc1c237710f0d661ef5a42d928e6194abf52be5c0a6281e2da7b33f1f7e1688deebe54201a98eff35c95957d2e3dea82a03af74fddd928268220cc15f7fb2f751578f89a00f5df92c64430f8a4c17a8c0de4779506a67677808b543a1671b73557c8a8044849c8d09cd60be162ef0b25a783d0123d1800348d8e5c21b0ec9a6dacea4f3efb763fd9813ba44067d740406226b9affd151db6d6fdbe2d865d8a3aa4a3345126ec4d57cc9949f2542047d804e88cca064d55de7b0a4c693c7e218bde5f62c25b9f29a206d0055bf196ce4eab798523d9778fb4106d74c3d9edf7c392a286e62d1cc5416ec7bfe5a74e321244f870183fb234f11e603f194ad86b1008c49db1b79f832c78968660055275a51413dcc7c3ddb952a36a15b7de2ee9851f0009cf1645a43749732e2a3ce3f49b3382ead7331641008efa29cccb70af96c7d4e707ea4136143d76a91aa34cf2930ccd572a233645de44cf8db6a803582f87b0ce1eda32a8da622cc633334156bddf605abc696b81a61e343426f11b9f40f8f034510d784497faf93d730bcd4f0440f7624ea2db86c8e80a75d487353165473134a0b1a12c82fd4c3d92edd5b089954cf234ac58b29464a6d5f42d1c7fc9b7e872db77eca58d949fcf19bf2b2aad9b26ffe02a2574f7c57422930c84da791d59542a15cec8bd9f4ad9f60c29c98fe1aaa64304c91b17357a23ca2f325dc162cdc778c391e54c312889a381e3589f4b05212ee4f5997a4f9b751d08b55c52052851bebf0430f80e066c0f70ec886d905e3434b97beafba5b75248e9ac6c8796c1248fc93284f034e88baa50a1fbcfbd22a064384d18ad3b9452828ca4312a3c9770c8a73256d34f1b455b3a0c9e08b1973a6056940d030a966e928c7986d330c92c72a2021fc04317bbb16e54eb7f9fc3baf5cfd6a10d7e4cd207ea54b62640690d220775d816a631175fccbefd6c8ea3686da22a9840f9cb42978933cddf4d996f44a82c5aac4220fbd15c3e8fa1dcb12d1d937a7f554ed826ebb1fe40ebcdf95bb158a9a949984bd1dcc6944b92b7bcbfb2a8daa61a46df792b903475834a68f8dc73648f1b58f1e475db02169ea30ce0deadec97971ec33322b420db9ee00d03c453fd0250eb166cf40a892489f7dae8b1b054c9cb0775ef2792a4b0cfc3bd306edc75407fe94beda8ebb7121b5f182307853d7b70a55fdaf303909f14b7a38881f17e98a6a33cab52b8104ed15b839ed143edef9291a13601c189bfff964217ebfcd44d6b9a1400bfcff57da1bf0e86fac4697290d717fa7bef87bc07cec292126aac111405b1d2d2322bc9d931982ac6292dddf97838548d8ed823cde090ca672d2ef12750a38f5906e71a47afee3d6254ea9228e9bc247009ba199ce24bfc593804c6e9970350381772c9eb0629f8546d611bdb931cadecaa83f978fe0368f207f67bf72f13180f535840bb5c4c21025e44d60351d706ba225ea294f1c8bd5c1495bd2c1eaf57e54b299001a6423960572b7610f58f28cb058c721b8d883ea163f9d9889e92163ab5c80558322138454a993555c3f683bc4b4233f0373daab5f78df53f9e6976b3ec4e2b4a1fbfa0676f10f8f2f383866ed110770a696c55d35aedd74f41b374b46e79d418e09bdf4dc236c98333028758d6da2cde31f5ffb119cee8e85c7416535dab185bbe1530eb800a6c1524e9e9467e5f6968b12e47e046ff2dbcfcb96784ff7d5c9753f08196ae26ec7dd98786065352a93b9d56cdf3f5745cc7deebf8d63ee1cc500f2b195d921763e25bff96f6bf030e2cc04f70b4bf644e88f6eec3bf29cced6fb627e26f38bf635c270dbd999299560a77b029b742727099e917a350717d1e5fdf20b48feec9bd06ada5e50582d79732342172169eebf79892edc32aed4b35ae77f0fbe9c8328b5ed35e1582a677f491fc0a4217f915f4e481bbbfa2160795923c2689cc1dd8b9d171aa67b8fb12d82cea950993fd898c2677f443578ce75d23436e77f408208388d3e0caa1df99761daaf739f055a0fedeeb6474ee8f0f9cc373476e01e8ac83f33a1b43b8995c9278fe113a4c33ee2b2988357149869b95c6080ab1c3e021656c5bdebd0bcfa3ca843d61e03acdd1cbaaadbdaa407c429afc103eb9b057f74b43de94c08c0dd9f436cf3acc28db0e9240eb25ede69e86f680f14155c77a5f7be7e0d97b3f453f42f4b25b38ff1b7bdc488bda4d64be75ecd3e1408591b53ae17571930d114a3b3431f8c62021cebab99006ce64b5d3f9d3056d7990bf3e1c7cdc17ddfbb7542ca1a247f4d53a380d5bcf8a8b7bfe77b9c47af3d30c0d8a5ecded4ac232607fd44b5c574e57a62329434c7c199cad67886b9827c9d2bdd647c933f6c80ee24b51cf6678010f585c29c4c4f0aba9590768ed81929817069f3ef70dfc4b3eeb1da4e10c091ac96035899ee53327ed27dc17fadf0ecf271e2a0eb4aab0a583cfbdca2e5e02f3ff120231d3b54272bf840f3670954b1d7c97fd3ac8b75c2aa2aed7674e2c6bf4d7c29c92fa1f50993b27f1ef342b4e7e22c66467c43abcf2ff3b7afb9514e2a164e9e1d5b25f44c022ab714221b0edadb5b6edc7d5dd8176c6bb9babc9ff1af9102d3115f77838e55b87a8ca26c454ef5c36eca70422cef68bb8939cedde56204572f3a97107fb72b9ca4e260e8882238ee7f8fd0e54beb8cf8b9dd9b952f264a3a00e891ba490a3eed341e47035cd2f8c3b6c1051d5dc0fd31259cd7259db89763a70afbad7adb2de2c0505d1345ab4db6de7296e46a93899d04c4a281511662b3d8b9e11113de0afcc3f0bf0a1a612284ccc5dab651903184d5e239d3a2cd3ef02d3e8d15ddf424c47399cc75000c452aac35c2eff164de3b85a5459bfd4ebd00641cea3b5646a3adc62b0c58f0c00a7df36599221fc4cddbb71baa8eb489af27dd3e8d47e54d2f7e9cb532e1641b36b8fd5fb84e51bacb5dcb75c880bd876bab109e97f946a243f06aaf6c4c76cc54d4c12685d7b3971411ea544c4976bf607e86a623f7e144be4dedb4d1f392bb05c5ba650dfdd0dbbf54695e6c7d6fae8d36ffda7bdb9f45330125ac3432a736593f80a1c9c7dc54a0fc64a1ae3a21348d119d0b8b3ee6122e760ca76757f0b862704ff18a47481de305165a3053a5755e9fd753c29a6e7f160f7f1cd4f9a0fe818ed07c37956d55b8224f04933b9fc08adef808f07a6c2a8610e399593576d6dbb02e916797c4bca9a46d882322c4bd0156d0ae0516267fa97cf31b047606b2a351431f724c3df1dbf506ba837e8239c2f24315a940dfc59ee3c0a5a0fef1fdc2a6aada00c0981d13f03dec28e3e743f866596645cb2dbbc17d51bf6d7a4f5ae14b4f12e3b649751ff5cc9e08572c51d70faddeccb67132d02d35e70408a2e55f577d43063ef78366b04a8ff1944b02990df30c49923e72b1931f02d5ce55b6d6df0f14c3844f14e728f5c84284f60332955bd0b11e44de4810c958db31de538650a27f6a834c47a419fa84327f519871c9033b1e1ec6f2dbb9f31f8a38289a2c6601930ea182555d1d3b61aa585b1dbad1749fbd3992e5d4bcf5081816ad49401aaaf6387143baf8e528f1715e00f9166853826b1da9aea652e9f171ccbaba054089343e808a5daa7faa631a6d7b33eb2ed3c10f3c37be0b27470458a1ec6f31313b5c0fe87f2c3c8684e9229382e920eb116f60cc0cb1fa2993a815b21309f683cc80e0ffe27dd4f9b3f6d4969a57de8d68d3f5fd53a72f42c170e94b9c92d426cc2b8c3753ed8455f1569925352b6805ce85b2825a96c640f456c1420c48a744660c5ffcda131a2add19711590383711375ae0440af219961a6594e3829383c97a0eb20f5b38aa6c756ff88e999daafc4068bcf2c17a4cc5a3f6269dc54d5a2ce45d7a3c147d45a30edb17c788bd2214e6f42f7066059d0bbbc0039c674f57d48567d5c4c27497498c2769a61605d245a093f96e93c1c59beeb4ea6a70d46025c9f80b4448e38317164023e9638599a213231e374112fbdb33c466ff7770525d32ea6a193aea0f32149bf13c544ee5e62cb4bca9b7bfe8d0148905df15cc94577d75946c62c99a4cb47261c0b4a3d3555b890c18fc8b3b7cd47e7564b3e95dad5b1426e259f8d2a1c1ca79123225e8ff7642d2a917a9710779806e92aee40183d97e7581314487cf3e820737a3baec66e3ae7d022c94382ea3d2b33f9162fd135a86384458dcb1a83aeeab47b176f9fa32d985f9f1fa736005c244fcdb153046dc82a6ab47dfefb1fd76b5af7cab4317631bbd1779ad6724fbff39b478d8ad6141dde5fa74e253036ae44fa787fa49113bf083e728db0095355fe8be2d03df04192300e17db2cccace4066ffff302d10755238718ff4e904bafccd8ef705c79af57db2fbdf6c4e28f0e7eb697f81234a0f453c5262a4abe07845b3eb3b9a02da15fa28a8ce34a9605228841fcf4c3b312a1567b31fdcaa39e2dfc1f4ecb264350e06854f8db838d6afe7d36805f3027a9e436e8eb9b6d9f3229c5b8791a531d6dd75576668a2755f1e12b683c486caedf4b3c086fdaf33d079a92b95fec0806c581086064923a7847f05903aad1a338ffe8e616a2c5c76d8fc796763bdf306708e3dc5cba06395992b2e43495af893f3ecffba36d1b4eb09c987a06d0608f3e0344409d45ef10168d95654a98ab1512db9aa18db2cd0833831d0ef52934ebc556ae156695cbec00b0676b0f1e239348f4e58c71168389fad908896b95f38389e8702a18a409ce7711dd42694089ff3b1dd13c6797183489792e5bf02b88d866c89eba01a98ef7241f0f4f73b6e3b89acd854715811ad1ab7e098d20dfb3bd2d448f052cec3328f265faf19d6b497c74d4a8b673cd4bf0556239b0047087c4dd3c5ef296b944a5385efd0492476bb457e8e973cd33221bb8aafe5fe354ecf0b9966bc4940d0215f8985ce1da2409185a4778c5d2284bd7f954c051b3291ec0accad7df375822291ebac0f898f27898261b8adaceda237941da88f58ee92c7fb6340b9e04c24d192963b5fdbe8324a06afed86752c53dc6f39d84a6cbd97af15fb8313259b09eedae902b9c9b9c08a13c922054e5cfdf6755a6866b96c13f476bb9b99d3de4279993f4f6c1b16537f3558ba374910b852df8bb864738c308643d34d6b48d726ce4f7854e77218957033a00a559580b5d1f9e6f1c1a64ee3375b9f6ff32af00e6272bd7504723e621d1a40af12ae683ca607c110710306d75d888976edf452581d629c17a3858f4e3bddaff52941357e2e20758a8a39cff555209cfa4c197881ed8729b3355f0a6feaab39c1bc20870f0e6b54f872dcb53ae945b42e365936412b43d8641c4e9dd67687b83a06d13ddf2505a30cd0446ab31154ca6b331aa50a58b5b445171ea392a730153bbf981641bca0de0c92ffc27e033105d5ec8f0d994e44cc172457675e303726f489f156a53b3c53e6ca4d20d94b11157737f3744904356a79aef833c436dd24ea9a9dd5ab2e707d1cc18ed3f7976420c46e30cf5bd969d58203db2d991ca3abc42c38dfd094f6403a46310438da8b2d86f4bdc7534709a354002a0f626fe260efe51a1f559409e0bd36cc018241263e4477f9aae8110635a9b92281bf0ff78bdc8e3dd7f59b4af5fd9adfb5867d88d036e6ab2f62541a0e3b4c9868df07b062413ab06eff44710d65d42b60ad081dfa948e123de15ff315b73a3a0b3bcc0cb6a530bd3b7c90eeac5a98876ddaf4c5a207b75061d39f5ce23a664fd1bfdfd1dd982357aebaa3526e92c52b590a8d5ddaa725ae2ebeec6289a7b5328e3f2d276c79cd465d81d757b55f7a3e387330e8d2fdd599123852a5f2908008240ec2cb37123cadd28de53e89c410738c41b838c3f2fd899e7c1d3cbbfc41cc2a3d075dfc59bfabe3f5b394309e369a5bf00f3d2151fe9354a5d2e71e80ae7abf29812eb150f2a8fc33650caf1dd8e9deed534063e2774784d84e8954c9d1fb724d231dd438be87f40c738dd5ccf0e8100626e9e1a086942e1574d57881f93afb01fea64999f8e328a988b4a7b81e8de50c29ac96e4404fa016b6f3c0c98328dfeb5a8defce2494f0ee72bdb0d5ba1e55de660c965a32336e84823143df6bb0656deef289f6d394199276a0571edf5a782113ac54eafaacf4debc9a72287f2a0907765e28e5c9aa9267ff6f1dd691a17a65be84a6937f70a2944eb0cbd80673c2c7231ebd651045c3749a33c6b248bd4092e3df7abcf65cbe2b9a09f8779d2633954ac43eff1b5f5ce94f71a7b196d3de6cc2f01644fe602f9a2cfefc7eff9dc06b75da25064f161aba391d28f657e510bc643a1e950a0cf32cb332b06c12b3e5ac94a5becd968dd806c59a9f2cc965750863f8f6ab2a7f907f539ce73b4458a7bcc94722300bb4a051a83b93433b86136c73210f919c1c2a154aaa514ef4d15589467f4988effe95d8c61535424af12c417cd4ea36b363ae712236b357f9b33870c38ece4bd63c512d308d73c4d43474b5c04f85353bb865bcb62861ad48e7509b15295bec9d66403b8c02f6a01f8847b4c0b56a2c261d8300f63bdd843da713115ba9ead74c69af833475bb4b55c50def3976385689ef4d6e442ddf8825a60435e559cb382eb7b57f5e2a6aa84edcc9c317a91123f5d8e784101a6de2e7f07ffc46effa73e26d429df458c71ac8348383a82380e0126dc4e940783ea4843be7516823032f46aaa28893f58c90f5694b114b7f118ad501e6f3d84daf4b4b58444365ba46674bea5b5bc3f05bfb3894d751cdd4eb2064a07ba1195fd10b91175889884060d964265b8f8a8f38b42527745814cad1e14e837e1d841037d84670faac705d37eb0521d25eff269548ba20843c8171d7ba1ce410bce461843a4d4216ae171f9de21b00b8a089d06c8ff6c4f2c468296efbce3e17a26af0d588f4c4f7116466324cabe9461ddf08d2235744bdfa9c6f7fc3ad464c2823f30f21cf176012c98771290d11b0fbd94bdae66ab6231702d855930a867787db0b26a07fb7d4efe14f6c3dc86e85c2bee0fb8f12611386e73e5ab7a67661721b9343b71323e72f84ec3dd1a35ab095d5499cbd89c76304b80d4b938cecaad71e930905df79ae59d5c80d83d677274be1269434275e34d036d064d4b116d48e1545b7834dafee602c707113a6923be6c3b185bf76ac7d965daf425dcb2b88dd80c3bf042c4c33c50c8297988e4c7c7ba497077e7bba339949790d1d666e7d3356b88e837b0475045da41d3a68c424daf9453dea3e9e2a18a98111c67070419c72c1aeda6f2afb4b3947f5c95db3cfc869151d7e209b876903c5f288399a7a7d45b6b4189129dca00dcfcaa5ade5fcf2ce69010fea6679ec8e4cae86161a2df930a041fbb315158a55ffb4d7e112a26c54bf92e74309c52a3da16d3fc06038eb2dd4e417c050b9caf68e36f8e4df4092841c7a368fba7506b86032f93ca2d7cd066a511f15e979441f8dd529ac3f7d05e8df33c1ed3d6a2baf5dc4b29c9f561044f9d95a2435bfa10362402ba0967d8279218698219319f01b2c23e0551ea325451e0b8fb9558a9e62e5efb8437ec5e756ebfd2a177522203e7a38834464ad33f0519abcb4def0a1fe3aae498121ea1eef03eca2e1e367f57d9292802974f9d3479bed1c7405d642fa52b9d154bbe396e5a96f0fe951a17e9ac0a2985c0c4c3189dc83c087b3ecd19c82c1720c8d26f83f0edb88c20df0e797b7eb71263168bc47c97a4892790f7f99d45746404ec8cef5fa7a176a87c211abbd01bc5e65286854a97b6aa08f8e07cc609cd8d7a2a8e2aef2779fe417c21b5f447c7fe2fca819b396bddb08052fb63cd25e7cc21d582de80c69d893b8d5584caddc8df633f89ba28a9c0422ac958041901de56fa92b3696687eb24be9c7e974e8195cfbcde838c1c706fed00f4edc8283f6be5a9993d5e0290f5fafd100052a9dd0cf96e69342c8a6388a219c70aae23ba0d35286325043b7c3cdffa0955ed0fdf08ce9c4908ac71d5b833eb4ec1c7b6d0c6887bbc04d5bcff4dc8d0c9b7f30a70937f5b80049048299cd9267d0fb843218723853f60010d7d1d5198a6a2c30c291384c79f4b51b4b95bb12088473b5f0cadcfdd8960e96b7c7036d7279c1258ec5c1729432cdc14cb6e3ac89e609e9f982859c2c223a4872cedda8031926736a89db928b76310df5481d830f38f42bb91f11210421c7dfe5634c3865ee29e7eb97cad13c44443c7abd755aa5dc81df7fc7d4f516af972b172731bf9ec0f666ba8ac7830ccbebebb567c5b691a8539e53cd0ead90768b7e6bd0631b7dd11c3c1395d6823b0d53caf9824fabf639233737e85bff3c68f313c8a16f6af29168c470ea709632bf76f3379ff28e6ea5cbc484906301b9393fc69249681b22e91ee894a16b1bc9abe7be355923d5271af1c764d9ca24bf182e6d401ae8bceb572e7f300eff5e85e24799e465d73a104acaa72c8b9fe5ba71af1f01d66f4443564cc3458a332304dcaf691de406c109f3c556b1b30306b426bd573b1583c083006c3f6a738051fe01271141486ab832e2d1ee16c6cab5c4efc7b57ad500acdd43c4ae50506d34a1af5e04f59f81920449f9b976f12e464504b83aca3faa9aa3ebeae03fd4b42264d0b2cbc2fb98273ee8d76d3a876d3a5d695bf3c083a864bf93e955369a2bee5352fb069c053162d80a6ece8cf8a75db2eb6b6fdf247b3adaacb75cbb11ef5732212be1b431ee86545d14f1a21c84c18967a2253ce7b687304191a9dda615b7610a41a333e267279696384c6bd84dd91f34672219b817cc35ed524cc2973a761f8c87d68e9bb0f6e8f1986e773ea317d700149b0b4ccf0b99e5186145869549eb6cf13573d3080eddea8e1e0867655fb7e42fd5c3e4965684a290821886921bd445afdd6798068cd87ea389e5383da152281181da5a9a066ecebc6117e7092bb34ebd0272d79d027fe63bf01eadd55cb887cdbd0de300df3282cb052d1af6c58a01815eb0552a4037134c1a2f5d2e02b4e74b665518539a326c308c212063d78fe78c7eef9e2338d3d3e1bdc8f6f9785f0d8d1c88beb57a42c89e726213ed19990bad8c78b5ab3de60b9bf2ad5eb1ca151fe87a93a43bc8b983eb7f7254fbe5a5afaac3c39ccba582a3a33dc5756140e5202e50b034464b78de2ba70f4cbd90bd55b9b7f5c05c68ab09d0f0dcaa0a87fd98930ab2cc36a3e003f82fac40dbf55d11674390ad6b7abca3b83f7781f0539de2e5c2c463e9371fd0377e0866b4eed38adf563b66250a29034ce917366dc893d7a95202d82c4eb5366555742fc2858a2be54f4a922b99da3adc87c7630e25a770cbad723098832fdd7abd344f837c1e8fbb95593e6ff3dc1595942f7a451ca9e28dd02df958be6ea1a5cb011ca23dd3911c1b3bba1934c63b3ffe3e8e366d8112dc426b5a4218419a122255145dede4bf9fd14abb7c7046ee94cb91337e123caa56bde5987c0b30ae7068d3747197cad107145453f54ec2e9b669e1aaa88b6588c80edce62812a0938e9fc1e39cc01626c1591a903d73b2e2786728713a4e1def9e62275d2a31ad815ff294d8bb2783b6b574e5f0a4fd7947e79e678ca822a9607330b67a60834b04f4fa01f43cad9a4359738990da1d62825229bcb5df346b9da3173870eb734acae34491825d752cee3aa9a99a8149e2244f68fd8a2cc29e0e060baed8658090700df4184d8e19a6d4e584981ebd6865c7c7ee1225b671f211273f59905bb7dcd2fd201b79fb2568422de6d13ab75179f72d9d78e8121fa88a6cfe09a3c517de51866d113e55a8ddeac6d20382866cc0be73745fc08da4ebc0c0fa30f3fb1e38ca946905feaac2c3bf6a9d2479a8170e8865f345e7778c1d317825faf7a15ddb1fdf2cb145dbf9d50352a8a69be82054d8e2ae7a9516461c54aab98c0c2dad6c61a3d26b46f6d691f50feea8dcd8a3c76bd052537be0a16eddfc062aa1c0400f40ad00b4b5dd7ec44222512d1219d7ebe1b73d96b1c5e1b86ab2c668919b759c82fa5baaae9df1d408214404d6322857f808902cd91528e27400eb272cbbf57ccc68c980986ac5fda8b3353a84b66825ee071efceb5610996ccb85e4ed0091198c4a9d9083f2a67268a5f12e6ee19dac4ebe7cefe9608517c023000747f28004f5df476587e872fc7f7694749ffcf6987a1bf8d5f4d4710ddf5b2e87202d153a3cbb77473f7b7fe707094a94db18061fe165d05142f24a54f4d2c3bb0045fcfc22914792eccf279d61a1b9804bc08ac0fdd3b7ab08528fd594bc0cdc4b04f3bcf797db2121331ca7306a9a45e71a8e7ed17676acd53e081793145dcc4e5c565c44d3a0ebf6eb4d0e934dfed2b1183ee8d9502acb5535d15ad3dc78adbe906b3edd8e6bec9527e6bdb8ad149dd4822ef14edc2db49d9b41e920b0338e462fc3d4d97f212dce7d7c97eb089405049f114c1f7701b73aa7fa66672ec9feb08b5889621219b023ec9d054fe83d62ffbbfc00ec26b20bf325b83821129cec259e4bc9e360aa16ba1a48fb8ee2f27b4a142511c6a2492ffaf6896199d94e00d905f7c647d9aed0d737bc4383173cfcaaa917b8e3ea0b80617cc1759a5bc9978439f4111058fdff1dba570ed682628f282a83377d7f97adb7830f3310264c3fa6243509612fed1160f3c7d3bd396505102e72401d1ddadfea141346246026156ad8d35c75dcdd22e93a16fb8900309d76f93bae1450db29b8630838f9c41b23967e3d8137a3aa9aa3af62d200e215d692654b8d325e062becf33b184397f05afd14f1c44c9522cd005a2d38e179a1e709fb5629c0abd54e8860255e41e4f5ac4ce000dd7007be9d427d19570748a2f4405a8375d3ca4639f6e5a77e241f9d39435c7a3e7fceb1a37cdf2b7d986019d4d77ff36342ca691cf0f7e4fd749f5fb1d929b15b9552eeece0e3790384d8589dad8f4ba6cca68351ae5b10fbd0274d48a7015b44cefa31a52b2189c93518de7f85aa2e0c2c3a5786c56bdc1ea4fd7badedef55da38400c843f6d0a4c5850704ddf089807bdfa92677686f339ee3351a2a839b7f8c02cac48aacdff369c8d3e09e850eb7526ed6cae11c18f32640daedb27f8ea32460de0c285486976ad2455f5819f8fc82f8231f53810d5cc48fc213bb61f9926585eb9fc7b74eb76299a73aeee2f5cf661f98caa85428b388b0226fce8229066abaf5a725d481f846c7b4d20d3313eb76f5d36ff8fa4653d369e0dac29710e5460cd4ef816eaff205c41fc6291c470fa7e5860b3432c7e9332116ecd3a3c5179c0eb3a99bd02bb412f20a5d7fd2e95b63a1f6a28b9a11c3c88c9384842902e73e639185ef948c560b2b8fc36e4e3637b0727e42e6ae0d276ad15935303ea5ec9f7bc317324b2da3ed3d3b14b0facdc62ebe0a4c0c3ba9c53433207176182f94ce19708f4002acc78b2c8e322f1f33f807779c155db6543345ffd28ee9cc482b3c3114bd01726e1a332a7c7598484f1900c5cbd7292b8475b69d0d9cab2f3982a0e9fd68f1941aefb6e9ee21e023ee0035233fec0f7c339f35cba4ffe23c701ca2b0d1f94ffe1a7b519d42b54e2440c748cc365cece95e7dbcd11eec30fd00f12379066b301f1dca0c27c7ffdbd1590efb5e02bf42b68553453836a293961ebb5a816993def998c2a55c420fe3ccb1da72448968319f2ea889c959835e1da5da0b3b98bb5778403a1bee6de9786ba4fbba87c4e74cbb63211e022bf431c493c4973b8884cfb7911a5b727216f053f303337c40d5fcec2f717dee020f1d3d8a03b26bff1d7b204a95bf5974fb529f42d2f6c6a0f133be2452d4416926537950c8e8081acd1c0eef684e0a0605dfdd98a97e1d19949df6d893a0f69f171f784f0a5e6dc9c209234635ec35b1a1cacee2d9f951f4689aa76337751a166dfe80163854fc4e42a41cdadff58e730ce0bb6ff825140f80a6bae29b757ef4500ef8d6777004c21784257c08f25b3be7b63075a8a4235dab0248f8ba59e6954f34f7e577d4e2905ec72ebc8d4c0f6ea596348bf3118f612dbb1c48750df807eaacf93ecf7134f89745cf74214ef465c64b452d325d01b7b765e0fcee3c9e8cf8e93200ee386d8d119f843eedc136eddf79103c84260d8cb9303c41fc5fc81cddea9ceb9d05bfb89b62f7f946fb06c57834507bd922dc21fe1d3ec89d1673e0857865e6126bd43390c31048752d6023b3e83e138ac8a64b9b82f4478de8abb83fef247b8bc1858e289a451284470330c7e1cd0f7fc6def62f26e7f6d9b9d3b658803459811759ad24a8770329c68c874df228e1ea07059d729ba4139586bba192158dd169e84f47c15b330ab82d28ba590c19dc9146bad40fac135e8e3757736540d35a06bb3f69fe8addd9271e48cd64d286b7a26db7bfd8f1999d20a2aadb11df970e4509b5f235e199692633f6b9076bb5101f4f019841f771190e0545bc8361602ab1132a1402f94f733d22c2ea8521cde7d36dd92c3079bc206d9417ac04d8bc9273822dd9735c3af706c913c2279df41fe2dda35e1aa4f181a4e6b376be358d4ae3f5ee9c99e5d7b9711da81465b98600d77d38a374665813785407980d719afea5e8898c5539edbf15324da9df48eab8540adc857032132e259e78c6a36bd37b6085512c845681d498c085be2d4d30d54ace6b210bc922308f67e5657accd034f75152d67273650923ec9884746de4ccbef11ca86be878f97b5d5d119535bebe5ed23833a6a3e52fe32db79fd2b56a7624a98ee191f7d56fe015a117947f6a54fc84cec4f0ffb45da39d49a89ae9dc8d46c7d4a65409b6fb3cfd5afc16e50b5396da485dd94a05706d0835ab5df29834bf738e62b0d0020b0ae3c0f4ee4738bfd40bb8a4514bff863f87d6aac535996c0008139a6560998e34f7cc6b21faacbd51eefd97bc577e82d087c31840dc3ea0ec543d61e7cff37baa4a8580bab4c4173a2bd70345cb068c6479e35e78526d1affd263e1991f704af724d9856fa6e5bb7d79ab0d845f6c8eb18f4d59a28fb58b047f9ad960f6be79f0c0738111c4c43c90bd0bad77a482b7d34d71da94ead6876365711a7e12fe08724284aecfc4164fb930ff2ec9107ffc51cb7425b4870a06f51d0109c087e3fd2af7e2fb49742a50f5f182b06364699232e55f72aca965e56cba3c21002528e179342c8a7344f3bb65a2e9a65a5714761fcd9f70fc6e1e6352e92e6ef19a10425964613345493eb351ef1a5920cf9de59aa8aabd4fc6a5a4884ffe123f3e8e2f5c1361004008277eb62b0d620c1463e443320f6fa9a35832675a53c3fa7ef1bfba110fafbfc56406685b353432c1aab92a8f088e5ec00177620c004b5b6f918a6ef955331d3ab45ac15114908768036f35cac297e06f844344869807cbf31c2e5fab4333a1d8742be5c5790e5b257b5794a7d8fb5753d04cf44e0169467683cb9e95628a46128c4f8e7e909b1a97618246c2379d0ef6aca9d09bd6770a378488b6d419c54c3ec44270f748f569fe3a47ae258458aa9c0357961bf6499394fc0c03824ea89a1228a0272242318976e8c335d5487737d10cb4d905638eeae4fe0521c1b8a9f0d54eacba24e2360b85ce5403f4be3b03762e070f71320846ba94a5695e5f74ebb528cda937eb40dc79f01ebe7eb959466966f622312c0bf6acd01f7f107565d6ea9d0b90057b5d98598c8662c94f799f03d50da3c05202a4047d2fe9ae62114e933e96532e0df3314cc0b9263335b85dfb593e76f692eae0da458fc1ef21bdb2715440e6cfcb38e8c927266fc248279b763d5c258a72d60391b683707e2ce56af5e2fe953633b98d002c00d39acb4927568e9fb3a8b26958b3c34e797d2bb7f539856aed16d0d41e2bf8bd307fd99941033623071c825f9da3e3ba56c54395cde5a44424f3a93da8d59f99d2d13202244ac168e1c60804d3a4e995677253971a1338ec1f8ebd7d7d470a14a3c423655d0b85d36777ccbb5922f02eeb93b50735ac0fea038ec56ebf8da37071ab5817fccd142c3c52ad78604ca0dc0d0e29e3f7e5c26752b071c032e0a83446a2bb60887cf81f2558fe46a3630e770501485ee3c16fb19c311778665a23abc7f90bfcced62dbb46c88cc3794e33dd3d47955f0fc2dbbbc34ad76c2a434966ae1bbc9e7b6249f5ea603f9f3551c56f95dc8500ee38fb9ac8e532c8555c0bb649d9c66983e4f926dac05421d103d391a9401410dede88092dec048bddf40833145699755fad4889436b2ea2edde0c2d33265c928d9722e6e3d0e60b3bb702385800e350174230be3530040f22fa1a317301753c2c9153b3d137156d226e2964e449197a1b2c0a4aa7fbd16b99d5b50caf4742f96d270f16dddc042e8939531ad012c1e7eff9e3150f4d504b01497a35bd7138675d3463598f1cfa9dfced360250f81b81a6ba02ea8cd9cd58c8f199a4a113265afeb893ea44c01f5e48984a869af9aba4297ebbfaa11a4fd0acba9a573a9be857c00765dcedefcbe86c5fc756dc241ca056a44e5979cb6e069b5651cffb87941ac1da14655e6bdc08e63ea2e43c3e813be804a380c09618dedbc82390bd2d0110dfff655e2f6d555c4153fee9f292912c313a95c90f775d5293546aa49654d8dd9b842dc62ed9b8d904b3bade686a67a1a6980ef7e28b4fef8e6d7619ca4742d8ce8b033f6098dd46e50d438471c79dba3a9d3eab216509586484607ec325078a2737158f8d4469be4c8cb75c8c6b1b0b87dc20f03707c3c2dfc73e6a23838633804e98216785703231a9d5303a4eac1ec7bcf0b0be291d77c235d0f5dbb23645008f0c8234c12ce53a00c98861fa9defa2844b3cb4729953d194f83d5d4575e70ecc49e4140328ee3a4a3036c383ef6ec98888c844b08c4a3332a3e3d1905273154c559ecf38bab9f10130cb7e064a015b823eec2253b6e01f7cc38b6b54aaf8110b1ca9342a3586256b611fa7e2e2ff2358042470ab0eafddd33360bfc84bb8f9cc7a250dcca6e908f6c9cde6259d36a7e43a5135aa4be51031248d32af2babeb2970d29bd0ab48f138ccb434d53b65f88214376b2912c35970a3c576329bfb32feef98ad9766615dfa307798083bc3666c1efd92fcc71f43678fbc16aa468619e892ff39e050c14b05fcfefe0af276f73047afde4b81e38017e1ab12934f608abd47b793dd484de1c1bdf31ef0f41db0d4bcbfe9fb918b7e9bdbd08c4f2d4e842340122992ecbd5fcc77466d524847b15b04800124e2ab3da61dec857f204b5cb18c85d491101c6c04f8aa212bdefa20cf5baafdd4426784b0f6c3a904ed07d049402bbd8de14aa5cec2154bf6fe2de504cfd9a8b2a6fa5b2daa9f2b033f63e8937d41c74b0a7a8a824244f494b64d2eb4660eb9215030df5f7cceb27197f6abbd84ab94eb09b4b13ef734589f18bcd1a0802c580cbdeb58ac7d1f570add8ba1f2b26e159bc0544e9dcfaa2619344d74e7ae7c3c7f56a1b27e0a69adaeb6a122306834a81c1b890703a8add8b9daca84b4732a51a1b0dc3220df05e490a4e97d61f3cbcac0afd71e822b06153bf46e06f0cdc5eec775b98b16704fefb365cce9edf7a65ab51195e68bf6c7245ff26c2ba8d2c3a3a9ed6a39e6f028c69497e346223b5a65cc997088eae8c177a11e66bf447efa8cf16fb430521477ae0ea67db2206b23891c66e61bbd090c39c3e6f661cd7f283eb5f771dd721aa399cc111ce93f3c5ce51c5ccc0c703d83f3a5012891ccff6d3a8f7b10713e321b91d9cbf878042d0a9b1e0bc9d1eb5245462642fe83994bccfc5fa410815c8dce3222e57ac41d5c52dd4567d9f2739a36a9e831ebd412ddae90f7fa88f55ec6b33df918c2d4101fff916477ca5ff04d7b414a1a59fc136e5eba29aba247ba62432ef1c922fc7a73fd81583ac2169b8f02c6e7f5239b2fa68daf0e891c10174bfaea9ce0a14816f8e019cf3ab71a4ca9f8736ce11b957878d05f721bc6e5d60dd980099c7ac6e9d55eba9082f5b9dd8350139b0685fb63761d4db40c068ce6a0e7ef02cc9a924fe5d198b5e09c246303430bc3a89ac70d3452f4998957713721ab07761d25bdba65b62f66c020532b12cb8613ee07656a59aec5d5c3c57d7abfb4538119f1fb66d2303f0920c73ccaa926a97e3d6b0c2f2356ad44047231f6a211180738092d5cb9855d01932e5ea21659d21e8ddced7ae5d12b24771513920cd95dd2ee2ba96ffda0175c9ac58fa807abf34fc9632b8b998dfec222766e716da50fa1f64b662d978ea1140b4e2c5cb925f4ee907ba3039f58586e47f362b7751126a5170eead2bb0117ccaa62872db0192571df968b96a0e7a99dbdff414e593fe44eaf500cc64cd04b19a6ecb3cc0398c6c5e198da14fb52fa9ec59d3dcca9532472c99e893195752cd205ac9a1a32fa9b331f5a83311d96cf4522e966cf2df8b31817bd65b1a68daef0d2b560b6cd5a90a453287f811512a75e468ffc6a0fd9c09345211e39195c51f52aef1d6121186b11d544a882eb0afee8d25209809429559e3876ac9d8d462ee92096e3b10e5594ff216164b36f27ea59a287521b551ce4a2721b596d15579961e9b912d4037ae94243281f05e6f54169239796328d6be67586a25dff8dbc51277abc024ae1b1a175ffb694334d64552bd4811b5bb8d48617c65257e50f48426378d6f7ed0d6a42d87a1cecca0c48367944558d531f985e4e82a58928cff0d1720a9469abc4d8a38bc2dea1e682d990e924ba2c7b60fc412d17caf0fc2b4fc4c5e45499aadc720557ee7542f3413414dc8d694d9045c81cd6b12424d43e23aa67b3cb78e8e972326cf8cdf4fccdd86a59d8af24506acbde0b34c908faddcee116d47fe0749959b6db26c7d4545029c3c918efe7d150557865da035425f6d6270b2f4e16d1996921abe6b81d9707f0e7c3891e3bb781bbe63352d3dda51265b7cddee6a32835295dbf44e8245c31d9e876fb45ef8b3fd6506dbc69c31a1dc9fac4414a7d5e00e5100dc515241ecaf35270aa0311ef2584332fb3ad59daaff5cb5502537728a72c16c134edd31dc734f9c0b608475fc6269ea9c7baef75d1ff44bc9c2d0eb3ea50fd523897d64f5df34cc2d29b80c4f5217f85165d610393a020feebd67b875de9a1b3c22bf29c7f6c46fea615f410075d0018819a7916d6b7aa9851a21eae4453cf0957351bfffd40ddfbd6646d93a0c9f3f4d128259472c640cc1db92f474b2bf5aef2364f4596f210f28889ecd432d44fb293f074c90f7362a7f898c91363d5eb5dc1233f88d66a81a3d01a941b59f6bbeea8917070470952332e8c3ea941f9c8c549e4c999e87697e463c1e7ec94252dedc4dfb88c14f44464ea3abf486702c4f294d646f93c443d8e8dbb5a29e7609257bc60fa49234924afa31a5195819e2a3fef4aa01693ea26df69592e9bc22891fa45ce2f46523bdd662df714a2494165be45043eee0bdfaa8d1582a012b502528c2b97b4f198a741432d70dd12b2a10b54cfbcbf47cb7e2a0c9f2f6a69edf65cd01a6027ef918978b3f97b1549573b09e9a4a087212b8a0ac237ee8d07761386aa3f7e1c9d1b85fedd38ddf6d6a8cdd17028d01413aca53b3b596176c394e9e9f28f7ba033dc5f3670f2b210b330daa5b09ee12db09cd7529050bc6437420dfa1c3a978a1ffa83899f28eb1de6b129e7fa2b5bdb36e90e3289e8492fe613989903f8449f85047e18fe76cb2bad95467d50783b3212a498403cb9e74fc945a8496c1fa98217db82fb04a86a104a43004a9a9b72eefb9eaa332cfa874222c9de65132a217ba45fe61276ac3231fc8be9adec9663ddc6dbdd662692ae33a95fdf705317b90310dfa467f7e16599db49da1c078c69181cb3abc46386f7fe72d3d470b979b52e986ada1b8a20946090ad6cc281184f0fb54ef63eaed88e7d284de95b183b0bd895cd49ebbe982961207c7f365bb6d662dc7b82d78c5ab52469a3d194ed21e6a72067d93bca26df3e4dabb741d8c7328f3fea7638b8f943f4723f407728eb24e540f213bed96044bd3c60fab1e7008d665ba2dfdc59901fb569dc70f4a65bd9179932a59d4d513e666551f33e7c34835b0dde2dc9d751ca87d7f79d3ff904ca7bb18ee241b77f8380f9f1927e8e28a59b1375b5d32e83d3c24043898a3e99f3424fdc409ebfa51f564a9a8ae9b8f7f6f985be2d7d1d4c6021e5c7f9d12c9202a88106d812572ff2cadd15d2ef9fb371a9911f3259a114ab4108b735ba959fd9d04ec0e9dcd06f2f43309d251d986f80c7017fc506891083735b128c7bfac910812a2a5517cc47dfd95c46824d3c9786b65e7ccab81c51c7d66271cede0076709ca02b224b0cd25ce72565acf1e5785748ae98884e1ff3efc9ef29d049db7d7979dd45fa8fa38fd6d71728aa633938bbb81e762cfca9c583a80a0becdbf565dd03feceab3c1076d151c0fd484b38f1ef7726f34583a414a1d9e5aa7e9a7a4a03af51d9a8273034a5ac33f295128cb023c5e22c49fbdb177b2eb40168ad7e838538f88487772bfdfdb65a42636afa09fc18bf630f2afae5d7907cac8eabea25b23a851d8103b92a59cdc2d7cbde35821460af54536cdfb08d0145bc5bf76f770c8f9330f6435e128c40ea3ca67b7cb5750587d8362e217f0de72e673b2b1d24cb8072bde6d28c7b3e0c43df1481b62022cd3682bbf3ae8cd6ab5e4a1f96638459cf56b9787cbf3e6bdd6521f92707b78f7efb834bf1dffa00adc82cfcc79f8ad480b96677dff8b7e1682fd57b7601fa235fc75a32346b7eb3783d5c4b2e77ff9084ce69cf9d45e1c611c2328624f31ebd7c709e205b0c48ae5c4fcf8bc09c8c92253d17151d241c11e0a5464890f7e72cc86ddca8ded67ac144eb2fbbbcceb5164d8435fdd6f3ea0cc7801eb5c2c43bb6ff2c92c4e9792153e9bed3e0731f480995b44ce139ce1dd93b21b10484643392694b334fc2f6b9dc4dc6708526dbf78f2a6aab41196b40e91bd59b2f804b496e5e3ba789c18b1d6c8f9a0d36f19cdd7e80307b3daef26886e34654777b8091e9a320d197dcd5c023035c4604c96443e2d1b9991d28dfe14a345b5bdf96c5661a97ed8301bd6a06b7a451800488c0ba7774946fcacc4f8ba6abc852aca4f5c407270bbc33696da4f1d4970fd0095ac532fb47a852a96f3a5d096494eb8c079d2f9f1517fc7cdfeb2f6878a304587c71b928048367d2d1cf06a65a0febc169cb0142784911f2b016e4044687c2e6612ce6b14b6ee134e5378d39d5bcbfc4a7fd63b3f1c08b78d09f14d2d4662fe15db448d044c438f6e10ab2f1bcf2bdb98bc02c334bba655fbe0ed975ea4ef3853285a1a499c80a65d20b88d89c38010d2e24a9a7cccfff0c648ee0633f93bd9326516969127c9b799958f78ad907eb26a5df1c78376d9e07321dec7beb1cbdc5ab194975537550e618b73c3fb90d9c3047a2383752a5e98dc62252f857652860a842a20d69b133b8d80d641bf61a7ee8af4ca71d4f9c6dbf9ebd7cac100bb8ccb58b04090b3a7387d2c0d4dbd4e9b986fc1f845497191b55942967930e7f2947e632b741c292e037425dc4c9f948beb1ef8de10fc5dac5e9293624ae55c2bd99e3a435d8591973499eb9bf017606c082ef384279d6f0a4d2e7e15a32008db9e97806ad4546e9c4b81971240ac72b369a0fdf206ae3c7d5874bd6c2081181e693d993823eec5c926f516ca8b9c2b85b44995f68f6df78d79c0baeaa9ba73c1119374aca64f1fa3f4507fbd26da910aeadc3c6f9c635ac0e49b2a573f56e388b1a7890d0ca0079518f0cdd7e91d8b972278e4f2a443ea34480d094132f6260a966229c9345ad80f341be7a5b73d7e52f7cee974190e7f5239b4bd4942e403e4515ca1f458f5b0e71a0b4776d6cb8742f54c5d7fd510e31bc8f870493b5485e3bb49768cc395e95c07d88bc8b5608cc02aa4ac70d4f56c902ba6f7cc2bf1c50ed83b7704471ad8ff30cd00ee252c6e6fb4ee40596d68bc55034a0886631dc46c0c3c3947a8ee4c2c741b55070e01d79b07f983eb1fbd71adfbf3188d9d5dae49d0e7c8a73796f4f18c1c78b8942dddf7d888efbea9f51f4513dea6209ae863071c75befe3db11926a61ecfc5637e2d8027a4f16c24db50629b5d3caf78e5909ad95e145b72332fb613b8c7151fef6aea1edb8f62ee34da050f07b393a10f0b4c6f199808c559242494a6568cbaed99801dad35e170c585c92a05e9f7aca9f45b6c13e4a35af60c98f9c9e9267de67888e770156d88c6a401f193c4af5e526ad79057e12381aca8f451402849c97288cf63430e2c35cad910a975e9dfdf84e4791933987516e78dea2b77d9b36a0ae32adbb0aa29c90e9decd1910d577369d8983e5518aef83a6a780914e6fd50f8d146a0453071c15bc93c4cbc2345dec694e58f44de4b216b4aedc2177526c36d8c6a87bdbe46f3975e8adfaadad3d52f9e21d2572ecf37763b85a5e63dbc3d26cfd2636d03fb7096f292ea0e141b9a76f996345181f3c112b61bf42dcadf6987791673542d88779e41f4f7a122605a3ba20bf975a23cbb644ba75f1ac2cf508f77533bc26a9685e93ddfcb3a0ea6c2fca4d4bf0631114ca64790a649b210295316114b33cb4573ab34b841d9bc2cc7bb25224e1f6e23c2c435ab1ab96dc35185a17da1c8aca45d60aa51df5c05515599199eaf6fdd79f00604cbfc13cc5fb9cdccf189b63a696ac2e725d3fc468cde8509a430537414a3fae2a2fe819dc93730d24a4023098a32332b6c2af4e0d8f9ba10b57834b9381170e061f9a4333909834531b005a3b389855b92c218bf9877fc5c055f8e7dc3b22c17e510c31f85a6b2f6d5acc212516387b465e9e351df8de065fed77a4baa1644244ab3df342acb4222206f1404372ac6c3f80fa7388b62ef4d6d52ed0ab93222c96b7972e8117fdf68a051d92ac74943b239ff9f83eac4cbb3645ff713b2281158c241f78fd7e33993b03092ffab9cf46812c0934a0580e3efc7a2d10c917f991fd4334f8b599a33955ef6bb6dbd298ae5a79888fa34a1fba86361c11dd6b99bc1e8ae3746f723c031c7bffab7dc36f412340a1ff45a92f1ea93e19c7dccd19f94815c625b4ea2605c99f94248584d42b6a1bb0632cad7266a7db3979a21fbdd4f22072f33735ac48ee163830d883d1f4310c3d7cac266d9a1a5a47fbf5f903318d8e7b04ee5a6c4dc8df66b426215691a6f7837724f41346508cbba622252f22d76504baf5b4e46545bd52a82b3061982f238d56c78c3a88bb46cdc6ef21922b3d50dd7d677346ae60b836e5ea7cfbe1d3bed5acca7a5110f7e28cc910a0b5c3031b3604f41c9d97ab9abbfcc33f021b8356887c30d974a5a8bd10c8ba094a4a503bdee23a05454186736cc70eaac117216045313edcca1050b7b1376df7e9d99e4415a0b7dab11a94163b9d1a635fef1db47bfb0f493285acb657d623b7ac9fd670eb9a261b85876f99146ad501152afd0f510e9ef940deec23d62318cd88a2f91f326f4d9bf47f7cd9851014923a8c6d8f1a82f75a9250506b58faf06f86246051fcb624038167fff46fcc711721487a3b65dd6ced6565367fde17bf08c2078b2eaf4b7b4cfc934acdcc870002bda0ed798e86e2c88d5bde54c9aa6db73ee1db7fa2684d49e03eea8b835390be20473496ec9f8914ad473f6477335ecd88a3ec325151341bf5da331a4d762827c7fcef428710cc90c68d732cf14cbf53280bd4d9195d85ba470883a8a8c3680eae44ef1160bb4e0c1b8e2baca52ece81e3365f2b8f8af17370a0bb29e02ceeb6402d6ffb4a278bef579f7cea36f99a48d1152c8258fcb86529955dd41cbe815a127d63dc5619a8b215b02a6f562018ca3b959b5ca201d003359b94a48b79cda568cc00f5c5e3e663a6293cc8b18335dc52b8c5db1e8ca59594db32d991c28e389655eb69966b312334ee4006ef08888bae03f545963595b60e257374114bc22725863cc19a2613a82f8c363fb9c88694a1e6b184073771d70558b4bebdb4117cd19a08692294adbc0e015d0bdd20b7ea5b0c12a658f3fabb9e061dc17f58dfb353d02c3032f206bc5aa5a007753d3933ddbed25e97f792f936833bcdeae5a83cfbf2f5cc4c3168190f1c775526eb064cb7c5c081c992e37e2bd743f5c0cc1dfd18579e54cb685dda475f2e1a6dc4dec1a06a138b4d67cb08ef5b829087a232cd3984b9c4c54d52194044b6fff80b4655d78dab18cb9757ac70f0f6b82bf6aefa301d637c8b6eb282a010deb119c6438052f49a6bb3712f50d204d2ceb6432fc4f2ce6dc1ab34ebd71dfbd8623be377ecc539f3ea51b76d316ff6b9f412fa58e03e50de3b8eefab6e67b19d45738df9f873109f9f6ceb855f32765491dfc40af51abcb5759b6946b1653d5e151cebf735d0b8f3b974407e3c3df38cd1558ca7221dd16d61f5c9209dc8e3e68f82e870ebf1dabb09470d7901de4376233ddd367786df90d1bfc4bf44e6d52bf3a1da7195d62bb8867ce9423ad60673b9efaaf9772d7086fff85b0e4be9d0ae87f00c3e607488f5c94ad35c44f176850b6f9d3e9c38ee0406e2b22e6c4f04af143c8c67b19c70e391f400c4d6eaaa4454885db5d3a8dd9766f7b54df5b7d9466796c05e9cae0bc941ca3f8b75a57bfa1309913cfcb36851847999a9480278b4d151a83d6d1921125dba0234feb08ada8c03792a6bef4d0d2785703959bc1b0ba80dc69b23afaef011728297202123184523645c6a4a79a2fdbb5e2a33e19e74c4d21308f0c606fbaa0d911adfb3eedd891167edb5d8d1ff147d26b573e7c9fb02408d5ebb2fa0c11a5903d91348b9cfe8e90c51fc6c067861ad15a5cb1f4891c5c6228f9ef201d378a0d16fe7a3bccbb5bef1b26403636f3c1093478163599e70f7279467e574477e10520f5a8b2e16872d79e806fcf835e22fce61ed129b01eddd8e461b0d65b909a72e89c1260bf7b80313f66f25a417f2d55338fe6382c3296e82766fd09c829db3f81f43b95517e9f2bf251f97b692f11389aab60062299500322f4efac331dfe77bf85ba749987c55c8f00a5c5535c6db4ee2a9f5140fa7dedf54568ccc6e18f8322f5acd35f41903d78a1aedcfd83e28501e82f0a89857df84dc5a6137f0b9cb7fbee325fc352a35eab0aa7b7cd189b5bcab7fcea15ea2139bb4e19f5ab6d13d89946dc06ff95e7bcc7a0c0ce330bb49723af07ab0300b83e116a5fc137d996de071c5070bf429c00752056041674c8dd654bb1df76b15f82a6316cd9037e99e4f6c8958b87a435d84dd4cb1b1689973e3eadb9934abcadc89d3d5e91575c0aa743baee7a696254046a50e3c7ef96033288edd5b714837276b523961f1c0bfff08c7faf865c08f1efa6d6d996bec48cfc032617807c1ed55727bcdf9ff6aae32f9c88a65c04505bb44d0fce903ed572e86079f1a208e827c2858d08470a9f71eaeb74e7212b44d39065c45d02ce77ac4f83ddf42006d0e60d0b9b300afaf2697299788f6135ef28203ac433b923c00cba76800d5be63afa3f1299f8ba1296fa5d8c151d25039c4bba72ae800b0bf1f09176df2f63d0805056d4bed25a185285c3d3414b5c9dc56c6cfec984884db6e2c65e43cbf81b0b6a82b2eab44d89a4a36d2681134775f7fd8d1f3acc5346669b1342c7733be3ceb76bb871e34f184f407c95bdb30a932da1f335cf1c1305cf15b9957d096b61cd1876afb3a4a3e01e87e87e0db8f7cd94576bd7a26f89928c93f0ca68a08480b1aa0b39c2ce9c5340c33030dca3ee18b6626e7ad813efe2e1a59a8247a7239bc79bd0d9fd151dc85eb465f213b8bea6821c0beb52b01ac01efb431a489c7aa6129b370b63c46351f32986dfc0fc963d923fdccb8bf8c2b0fba29a93c3692bd7f67d62004347c97c53380f5dffe48e3285bb59eb8cf28a798ce9f6e2d11d350fef3ba938bb3df9be46524e201159fd5287be3e81c5f024c72e2e93307412feac994ff7f1368a5221ae156ba2932393be67bb9782868e6ed65942d42b3ff6e269e912a6a07362d6813e70604648a45121817c5619f57cc770fe4dbd319194c4bc538964066b3b4e341574175a724e9a6f14c241ca28b30f3b1b53985df7090d4b15a6dd80aaad959c939c114225cc64371dfc984c5da3e30d34f781df07a841658cdb75da399eccc0b3610acc661d3fc18d6d1f1bb0ccd5863e05d3253c0ad4f17e976087d341335631c372d9db6808e3cfce5cc775f25f8d4f67d681561ddc3d20cd2a8e1e03a2aec5dfeed4ab52f8bb461b2658c01a141d1060252e78e8eba941653dc2438dbe9bf90beda4107f950d4d869eeb59912a023e9012e710c957ab6ed32fea68c88629fefc002082dc381f5785ad4ddbf00d80e5a6c0a41b51b9d11fbb524045d562fdcd82f2013fba8f7c81c92e6a480b0467d797f0aa7f7f25130ab98bd5de309ad3f4d97fdc517b06fe2e392fc78dbff07654ad1d3c9532f6fcbef8b9b2d871c93cb73f5da377ecf64a1b0170f8046100d4837e863bbdf176626bdc18659698eba72165b34900046d5aeabe8f42e29c16def8a63d05cc56477028d89a24edb88fc53241c8cebbf40ecc4bebf353661fa7e60f4b3b36dc2cdc0f3ddfc39c4e3d052942e901af0b4d1c95a183da58bbfc677910964483aa8e8fddbadbbc565bd09a4b0ea6285732a36e31baeebb7bb873eaf92c1f074f9dc57163004b93c0c57c7e502b37400d5416db5c7b555c459f241bdb8f9314a12d848d3766917025fd4707e41074b7af96c1ec4332929a25aac0308d3f052b62eaa4256206a1502ad0af310f30811b629f3cf1eaf4a6c5961566388a1ca5a6e3773442b6f180ad08e04431c2cfc27756c726de6f31ac2d3890518cf8b11455013ea3310ad8971d76a80b0186fcd471259581e8d28e0bec109c1aa94122faabf4ad79bcb4e5509f2447108fd328a2f30c9696cca2fa74c261407415e94f4f7be7d98baacfb1afdf45a7e875567e4e55d423dba7dabbf1f3ac8483701c5163ac7f19fe08ea6f92207f0819c5648b289d26abf09f9a33b3b9998688b0fa7ac72a05af11e7a071648d2500a7b95f86db2a25eae126eba7285ec833f1777edb382bc67a8453bce1b8de18ada7d50a1b56011451fa9772a7f6c81ac1b9bdd6a8aa2d68d73328dd7b5d2be896859714dca7ede17f973f9a3c19a81583c98839b756ad9fa116fad871636a14c5f1eb34e13f1b42877f3cf335bbbbc2857fbb7651d6b4da0da1f762e729dbeaf1e0c96bf9b361a93aad70a07b54e3660149726e40d56d2c636425702825492d437330ba08f998173f5a6abd1f98ee96a906e8b6c37b664ab233bc9d004b9aa8cf0e7011ec1ef646e8fb422079764756edccf940c6e38723db3b512fc38f7cf4ac50441d628eb84cc046704e0c16aa2937c3efe65ea83fe328bd17bbf64d69506e4fc353d5efab233b5ceb05df003f5e3e82d2e2ac7a25a4e66a148fc5295aa2eafbea3ea20b9c6cd538ce7195d7ebd0a0e8ce07485fa30df90f91403cdd6743e3e665b36d2f0a081680782b589485805ce1ba8ec89d4e73e6c8e6be6279ed2cbdabf686ff9285ebccef4cd26b53590d27d9f50df9b769c46ef62b2e4b65b0bea839a5cfabec71a2b352d42fd6bd2547d63d36b8767cb38832287c6605309478f6bea9ece72c2eaafa2d387edf3c836733d389347fc9a653aa326e1b1d9561c4279bbf21d04dee6ceeacb119ede555cf3bbad28ef4f535b2924e79fccace607b5c7f3956c8d7f71ca3b81bcb980ccdf8603dd9f0bb960d344eb964a682f9ade1d25e6a603c50c15a894fc2fc36d2bcadf2c739ae075169ca7512bb0cc4dee8c0793b4b9728adc9d61484bfe0003c11b30c42b61e02327914b430f35e6f167b514cb82c7c860b751988035b81fe0df94064bab836548adfa1ec4c1ec968d1000aab478e147ece7663ab54472d468a33003b629a9fdccc3948669c4d87c97022dbff094519a78db1cad3a1a74df40c48341ececdbcc7aaec162dbd9a68e08063c264f4f13fb73521838b0150c4cd67c712b4c93d96f8392a83c59948801db3c3b705a0bce56ee20e5a08f4bc1afd67de882262e324bfbbe42563334fee394df8e37c95abb251f7fbf1fa4cb5d78b6f299d53d2c40645b8599f650d6aebab609c4ff0d1023a2e2e906198d378b0d2b96dc394c1443b8fea1b671a9f2a7354c96400bc720570a3393fc503fa9fba7b2d62d287d0f2785a434091acc2a9ec5610c627f4f5859d0b562afa181e95845080b0381f343c31ef148417f5a680972889bddef2eda94f42e8637956ef6730db2b6dc5242ff98baefeee31c894b36d2542873f2a474554c0892a3a8f7d96ed276decdc0f1b05d1388e319e1a2e9a674e16845ac23c3e61fd23139665fd0da12e06ce97dffb4d9e40dc97ac284db5c514a116962d120855fbd68ebf7bdbe040abfa647ae5beee507b2efd6f11f9ce61c30107df70a6b8aa92062284d7df9e9e7a5af95a26b3192650fae4113fa364a733adb5de8dc93807ff5d16071df5a8f3f6a1e61cf867ebe0fa049de4fae4627db8fcb45ca8a04045359e5ea3a77a9b417a9a191957a0cb18c466f31006943aa925d8aec840ad09f8610c3220cab4e1ecf41b4c2ed072373cac53bf9246c212bf1568d778387b50d1afe9beafa385def32d5616fcc61c5fe3d44d4cde28d3f91e92ea34ddfdff2837caf4bec54aee7cdba4d1b2221b22c8769cf8e0cbbb6a5d6e21e901f1825e7faead0883e21efa6cbdb539b1aa795126664d8aacf4a649344ad64bab744208594d3b3a54ff2b4f04cc8d7da1b5a9ccb7706b299f4ee295e43d4c1e662c8cb958ff2cfe0371508fe67c08c155446cc31f00715d772ca2aa0d7edf9040481d3ca70403e45d5edcb81764b68de90961c5ff2bd9d518552a1b626d2570c25121ca14b543e1b5319308fd35028443138fa37751b4b6368b25c909cd626e896693d135590b1e8fec23fd0ff0ac9058828c5c53e45025aae0e3ccc8c41397472daff1b2a4a9c018d71540ca63d10d79f83536100570b906ceeb727692c64898c33e1087423aba82e759efe39ec03b593b86dadddee9214c3d6573de7f3001aaf06979cd4f2acbf1b09a17c2b0c6e4aeddb4f61e8b326e480733993af266b5e29ee870144f01008722db4ece7526064bbec29e35a533db1e67d8ff96f9c861189fe4a8c4a536df38b38840c244dab765205a0b29b5fad3ccaf01e396b0035bd8eba314ec034fe0331218f0728626730e9dc4da35313353e9cffc111e0a3e216afcfbe77fc5021bd418daadd17436f2083b33de7203af2dc12b4e488e1ddfb6bb399268b9e3ad823c1c27c19728be269dbbd6fe9b067eab77a0c09887a97701e4becd65e5ba949cf5db300d73e05a388416b59f84a35857ef0f247cb36e43631a0e9ebef77d33e89dc7c071aa918da259a6b64c015750e19056cc61f6bb0c6e440bdb804dc2ba67e06e3b474fc6b72fcf52f6b96a12936618ee944f2d69f9e63f0ea449fe6711200fd79fefd409e98cd70bc40928197926aa6c4932d7930bf7e3081c93f6ebb39d214723198ef5342654a062779fdf5185b1b801869b2162d7a96e737f79604740e9b386d877882a6ae6bc55978261ba6d3d19a4e670e9173e93c31ae4968dc4293256b26589604bed8c99483afd8fe7be8db6741e44e231c9ce4d307e14cf8c60451eda215a706cb8a5979448b7317bca9469814b491c13b9a96644c0fe6d3445d0e4b7ed085c7cf28846bb2ef5262f03be0e07b31acf5e430d9823c21dd05a70de2f32a759e7f1128514bd63253618580786c41fc15f2b00eca6bc8809c9dfeadb64568f235fd9d73b5bb2be7e975494e5e99c407fdd63d70afc699a71ab1fb3d25d0d1af20aac2e0babd23769dc9f1391bd774f95ca7ac5cd21c87e1203d73f554b35054613c92b37188a28ae56295eeaf5758d7338d21f2b31623dfb79de0a4d47fa4dc69486533de06814bbe1c3216d3ad88062e1547c2ef082e18a42fe2a50f87e301f948564f54990c6678f627d2f45fb49963fbc93e5d9320fe1b1fb95b401ef2efcd75c452f33385e88f98b8c308ee9bef00fcda354215a2fe2103cd4302f00d4cacefd3a933b89fec93fa8fa458c695a1f4dbae5ea88114562ca82796e51a458b6a5de9b5b873031269cd356fe12b0ac2fc86fff527af08b20458f575a685fd98041331b2d802cec870ac9d17fd1ef96aadb1896ab996c5a309000ab2e9836dcdec401ba88c71116c5f1f9ad35aef729c4ae78d196015c5e23bd25b15a1a01f341577da73ba59502ccb2564f3873c1c6b8f4c521bc0ac375fc1608347792575226bfce4d80aea04cabd5c184a8bd0b07ebca99f1ff16e7d24c8be403df3c0211ebf1876a6bd341920d3cd352655ee7be0877f435a20baaf0bf3e4f3380b7faa1353740eec2de2707eae1e1fda0564e019c8038e7fd3a8173eba72245b8f22eedc881def3df8665ed4d0269fd44cefd4a2f4e3d5d0de23b38769e9fcc287cf9b176b9aa009f5292cab19e96149624861a0d594f1386053b779a6a8ca3e52e1b44b0aa96dfa789a95f07c8d74695d7623f3fcc7c07851c4085da8477f8c53b91262e8f6e56d8d134a91b73ece2be9e5ce95e258a36383f8c1f48b61312a604de06aec245af8128d71e30cbfc6a59919a64bbea4ff2b143fb2106d8e9bb63e3f1eb498e264f9ff8722e1561e98f363b1059f78c9bcbfb2a3dcef2f0e9ce1e55020307dc85e402d57e932f33ae5b0faf4d82f4db9c934417bf672249db4ec571b0c2c20dfe8c062e2470a579e300111032352f8699645a894eb1eed058abb3d085f56d76c6357964531cc53d56128c64579fc89a798dded5c5aef53476874a3b069154bba789d8e3a8f8b569b46b3bbd28406383cc8b5e05515f9f68fbdb078edcc2d9efa91ce5b0fbe532c0f0d3098eb83b7c92f2401eb16a2dcf6e49a3db61801b973695fbc58080f4315afcc76f8e9c7a476da2d29deafbd081104366c4b38d36b4dfe52d3a57046753009fa81118035e05268689ac9add4cccff46af2340ee12cfcc9242f50481bbe8ae4f3d6845dc776a233dda02e328a3bbac7365b5f5320fb1c304fbf9673bc335a26777e29f60b3fae0d9b54238534ddad353a0737b55824dcb3927bff8a498930de2b8dcb5ea2f7f3263296364b5f32cc2c3ebd0788a2cb78fc70a82ef057392eb3163c24f2c2b5cbc8371b27104806a6dbaaca8d82f0bf420bb02bb2976e80806326918cb6b5a3dc7bc48abf2762918e760eb45a4185a20c5adef0320c8b27b426a9972c4b580ffb87f5a969fed46b40c69c75efc2795d4cbec95dbe8b9f1ea78ad428a9799dc849f36c984ad3f84f3e8aa953ae8736ea637a03d719c40de722d24044926709d0b847cd1cfa7ddeac99dc303b0683fe67ccdb6454529f30ce69f367f813c936553b6f43012752c60809104eb2799562821d228805fac5d3f740142bdbab6452054fe8f97fba6baa3378f4c75863d9cc272b304c06c6f8b73841c85012e5ad9fa9ae6da2bf4caeb2497c0980f899a6f68fb3b554237e2710c17865fdeb5c3bf1154aedf25ffc8abd8555e9032656d37192571588ae70370897a77a3f0792623367dd532316fb2fdfe36822fe70fb62204dd7479363dcbf3be1a0d1870c4052e291c1437159611ddd935bc8c424a785ba1acd62635c029f3a019b6f27f6499a9040d0469e1f1b3bb33b3a41ca98a6854bd96036ac15d22e087e78b4d8e8742e6202756c6fa9ff730e0a56362b113702b380adaa6583610ca0be5311369c759793c9458e2c5f668ad398c11b252f31a12509d3224935a3d96d94d7cd42531234efb9bca624bdca52969f97749af18133aaa1ee30568b0c1dcf952efbe0645b225947edbe275051c1247675d5904593229c36735352fa1d679d48930257543ca745a44ef90ac23f3ff966d3a9b12606df2b489c494160ff319e1ccb34d479e7b03e80f52827f6b98dcad124eccc4f60f3db10f5c9f068a2830f36165fe63ade5e6116d735da355613fd1dea53527b8f4f04fc2d0b6e021d3720085eb103d39750e08bef47056d5ad22c7d1ef8da33645c516cba9c8de12df677bfac3002ac08da819e65548d76b46da67dab079d34666842d2f08165161d58ab7c3788a0468c231da30531da78ff92ee6ccc04fa59a409aa12a75fd2b06a4fca5e854afbb2f3a821d4adc35b5228d83a8a8be3f3216222313d85d1f174fd0bd35d7d9b1999ba8110f0853c0016839bf508c386afbcc450d29288a9a79fc3bb3df564cb62d1a45afe271c8bbe9763bd3de34b5af6ace1b35edc70f11abbf71f6f9e19a2228d460f175ec1670f098b1a667c4434b8f8d01af810120335837bc1451b0ff9090f396016b4be5b6fa5fc867513993a86e9a4e4984cc4f129dafaaa9290dcc9aaf3fd58ce693e2ce06e0ba9a5053845175d691288166ccce7ccc8f398706206ff09d396a50b02ed67fab27ce6e09b18c5a58c4eeaf7d4f4a6a7a8129135d366e3bbf8c714f13fc98c4c8d77594695df0dfb53f72f6258e6631af5e32aec28d997062d69280b4242dec5f73dd59c7e7e137a3d8ca1e50a4b5c6dd78a038ed1643e035dfd0403a03c6d1f399a659343b51bb67138dab7e92b94c580d9302c9c2460ffceb95da82eb64e77baeec873e68811d9a6964b8ac25d537997b8bbe930706b2547e7fcaffe671b6da5acf0446d1802541735b6b0cf09a3744a1a1fc69d6d2db5e80640c204e9704e797083bd60d4a11f6ed2b5974256d4adbc61ce37c20a5bccd51f99d9441f6f5369465d06470bc38ccac6318b36c0f8a9bacbad96a3cd0ebfcf780ef19aee3deb95400c4dc4e0e3a43d8eebccc5ad6811ec519356f40141005a67b8027b1d831873f953264b109f1a63f4f6fa3a1c3d54f3b5cd115889549a21cc45564259edddedd4a7c0864f39caf7f23ac69813d75e2dde9d632efb8c37ab4a761ff41caeba22d3b5e6e8bf17ca8feff3f8f1b55a5e0372b692eecf90ba8948a16c7bfefb36b78fdad105a2430bcea631cd4b562c9500b0c20b5e0bee669f462f65cc8f8b802899a9cca768eb89bfbd56930400793f1eccdcab2b3894992b351fd87e921e17a1a369a5c45ce20d3ca49ba8f83caf87f7c016dbb98e5711a7f9821abcb5f388273b95f0be3e1d7b6e2d8abddfb5028bd762f57621d06fc7b07bfd359a77503f38815a1b9db438b2e605856c9c7de96dd3aff08cb7b5f9578d344a673e0cfd5a1c321c4e20e0ef00d7f83e2078759f8062ccf4e49fd474fafa6ab7ec605ec9a08fa6f11ee52aa5225fc83d4a853da37326d8e35b367c440a5cfba5240c56047687c62414f831e0d006375ee9a191389cd5ca100e5965331f7aca0afcb09303ed2ceab4f687bdcae3c9c25060d4c8e64879d5c451ddffebb563c7f0aceab6a0e15b76d2f49fdcb202587c179cfc69f7257258bd81b9ca7d6826aff3cc8b19b825399a6794139089e469578a8a136efbb1f45aaa97ad6addb6679bc7abcea0abbdb1f38b7506eb66204e4bd5e072d544c2ef94b0967422635f1ec3b001c3e7de2cf5080fe5b932028e0f9df931dfaa6b178f88e8c5c8e64b47eeba09ee528f3cd23c75f43e8a523d36d7b647554e6cc901ccdcdebac48736f3e8f0be4579f1b154725ff22046ec97d36b02e91ca416ff15be2614346b50a78fb415d13183ceae1f8751f26c4968b7e2f056595cdfbe6ff19d937dc35f0c87895ba3d81d77cca8ef8ecf941b06ace84247ace83e71b8c00eac7102491a9ba2b646b87df6fac9996eef1daadee4889766b1f039eeb8c55daa6d6a003d1f17280e240bfdb753177ee0367ebb93a788d7139d0fc388ddb4f7b6f15cc8ca061f2cf1bbd2aa4c58a1d7df6bca8186b777ddb4b47252688018ffe10f2b1ebb5cfd2803f71a69bb71fb292ae8be6b8309f183389a8886b801812da8d378bb2ea3437892962635a602ff7f7c10731cba813ac982ed26525d51b8fc798551cb2802ecda90612b9a18d067e57f7b79ea6f01f4506d80ef7e2986072bf003e270e96d3cf41bc8ec3aa6456eecc559e060828876dd57da3a2665b57a3d105ffc3d184e75ce953f774cd9aee12ad530d3bcb91444dc486d6c3aa4c46cfaa0e7e4bbbeefcc544dd98418f1bfadb6453bef72eb2894da9d1efffcec2f62ec8e24fde7124c58d5b6d5e17cf00708b0edff73a7ec25dc0a4c050b842efe5ee360603db211ee488734367e6afc25bbb71df259b654df2dc2b07f7f3f075e7172bcc01180e90057006f8fb7670adc2671ed2c01af0f166afbf102cf6cdba41f6ffa191caa34d145be3d9ecc0edf589507989b9ad3c0c28fd4ee45549e3baac576cbf08ffc034b30a11f615a8b5c5377a6e820a619f559e40ec0a94a3d9bb9b267ec5b5a37b93eb26c43b8382121d1f1ffb68fe0ad25744c91c801ce04579406e4eab70b90b176124720ce0aa575b2e9c77386c46b8a83efe7551df8840b3ee1d4f95e852fc0e748409eca5d008c5d6238c57f5168bc812cbcd0b4dca03b8d76e3d5d6c1b178861bc5ce923eb00d23968e33aa246a28bff8647d9cd60f47bafbffb926aaa7498b932b3597c547fa35a88be5580f6b513efd55cc5e53deb06632dc6347cf15672fbc2b9ff235ebd55031f46c1f3f1ae3442aa83aa00cebb5d6897128df0af4842cf35f8d5bf3d527623112a3eabb59940c049cc2ee686b33576c7918bc7eb0618912c92baac0d248da213295a878c0d9bd9e13dcde8f64dd0954f434be26aa207d624ddaf46ec58174fd2581517319681e1b140d989734c591afa3b32335b774739132458563237a9513c1e16369e2869d78470a331408305a748f5369bd9f9a7be7a60d282175f698665e8b2576ce32a8bc7c678b3b66bd717982c130c69f23ac893702994fd9e6a82559d83b8844106fc224d866c2a4dd335b8c0cdfb6e78f45e95ae70d9282c5f78b94e56cfcde2d8881d6ff13926e983ab5802ae5391db99d69e7cf21dc34457810f4de9bd3ec96163dccd2e27744a352f5748ce418d90c1edf9b05a3dac94f6c5ae25b52eaefb561d8638618faf9c76be745c3214c2797dec894810574ae5465e0cbcb68501e8706819f114190359bbf5f1034f77208dda70dd9f47b5a66e78f70a0f29f5fe49a2cfaa43d0097f482a815badc392ff0866594d060f92706ae642257753d785fe868173e46c479060de3d66a28c26949db5347c63f9d82b79f185b6876fd5ae36f38615a0afcb68d9533b809d48a5aef0872f06b3d4c563893669f5042ebef75ad3c708bccb295813daacdc9e2174bb34103e5537f77465a1d8ce6110cf3e951dba3478683b39d2f31ff419ba2176ed9a428a5767d541982bf9303b0b93e1f650467daa6ba9525b63ec159b7c06fd399f9dd6bb06a07042a664683b6c0af9ed3e647f26902569489bc500c186e2874a139e32a422d826d5f375e0eb012088373a6b8e2f0f05b46f0bfe061fd93e78d91eb5c954fe719f444b1d4f8af1994444e4f17cd83b20f6086a3f8b26a18ee097d4d35ab600f15408f186628c9c467d22428e7be0b2a613abcdd2f3ba532c9776f4f88aee118b4730737a4e596a4800ce7d4f19d97a1e27f55271e2eb9cf2938e35da48ba1ac76d70c6a327cb3175f503e497aa9d70a5983e8f1b9a2f60694d04afc698356719fb70f0105c84387e8a9038beb52a4cfe3d2622e9f366f9ed804872f14571764384615ecbdee69b3a4e2c544ad5376321e8d8163f83f7a9f8a3f75b8b34be0c019bb38ba808dcf0fa81947280831ec3edc87591404c234fbe2065e1ee71a117bb5d926e8d7942230bdc6ff2044d2484a65ead376701dfb3ec4b78589994def45a97aa07e85e593449f0b98566a68f0034e77297a07a3f258d0849e6dd28c222d59b5fc00598257a657fe70ff54aaef1554646c1d65c4806cc2c35104e02b36bd14cca4ab64d4287410281b03f7527155dd48fe15b29bd1b67ee7ba97668e1abc880b95022c10c33eeecbde6c05e34a83fc5d18c69ce853838a21ec9c1e14a3717f64e1afa54368c5c2a935ae6ce2709c1d0545830a6e3b30de89699e4be30a8031a52db22af65dc2aad84db13b417dbabb4ce52c3bd1fe4243d8abf635426a4ca9dd34dbac8c6bc7e8058abbee022e84c2f4ac1259b8d88cb02e9f5a312f43f7faa8429eced55f2a8fdc03204412e62d7d46202bafeb485f56302534fa8dfae452cbb92eb63a8a01cb9a01c204f72c0a35ee1e9affa992d04ca591cc739056d61cd38feeb5124230e2e184676a2a28aae1e65587b4353c1016372d4711f80591c531ce2c24815f83369ebedb0df22a8e8c72c944e5dd91cb6666b56b736c1518d98e1434fc15bfdddf7c95e186fc23664a0c52c5696b21a2e6b6d940056b7b747fee11a92223c274afc425f627762be2eb3a1a6376e73faada31be76a1428f0d9aa20b396759ce1cae903ce37feff912c82d23f679268205eccc7ea18a258e9103e45c989dc9cca5675add218b3a6e5a4217bf3a385f44857cf6a343409b176eb45ff3d067d7a947957abe0cbf560aeced4a16885a5b265f3b85b0a8fa82afd8cdf9cfe08b04d61ef9c6c9e2589f75dd703fa3d6f07b8af1eb8c988fd7663d67cd8688a8eebcc9b87cbc9e999ab2f8c688b6b7169de11798902645a501178e386b41c6298e747ab0e4b41080dff301f4d277f5d6628539906b0e12cf5c63d2ace451c715157ae75aab7fa4b0b21da3233a3dd43a55f49fed8716514581511daeb5d1ddabe1d99083d4551554511413d92baa21419dadbb9ebcd0c77d0f5ce7880255eee7998efb38cc88d2b3420c2c3cf7687a5a92d745815b7f2be6a61f8d543429f300a70531a9a27c7e1cf023ec89f7d3d34fdf1db986fe4faa6e0959cdeb8926793732af3f0e3776709066c2f5146ce2f578ed0fd4e8242066e4353f4e759f2823f47ceab7aa2386314aac680dd61f6bfa4210441b6e928ff21b8313167c2e002536ae202cd67c61000f54269e8c4231d3062bd954bea2f0d8eb0539129888f6cb516f49b919b5495151388d376f159ac22fcbad0ac702bb13f7cb4391a68ec9f0fef1657b5c383d492388d3096c4d5ce0b1f0c80d3082819547b537c992265d87b739b81220908a44f98fce6af94cf498d0fefdf0dfee0fc2b8f69d51ae713d1666c29d24cd2288503ce8935576972a2a358fca8a902c42f3318f2fa59945733664defdda0fe0a2afacf3d9e91a2084295521ca7573fa59f5b03992a6bca91a14c9652d62446c2e5994d7a3e6785606fd28e0e092e618158724a60c174f5ba1f30791026bf39c6177c95760338c12536232f86b8338c189e016032621f19991a8de1895ac5e58b2e98040665a5bc2c2e8d2375b307da1db262822dcd0d3be531d94f5cf5d1d2a54c2f047a40a287bcd71f2f3144372ce2ff758c17a9371605fce86578bbbc81ef5c6c2916d952fd0c5b5f56a6aac735de2e424c325c0d604eb4f0bb35e89b8b8f4f3563e876ffb90a2c10420b01d8098e4f16c5fd70d7aa447c49af9bb8acf0f39f5d5affeb541d15673a1e8428e4dfe56173297ea18a57fbb67515a2e08586e76b0136fdba355dc01008ea65fba6d80e6c31f7549e16c08de05bd23c850f0fc35ba41da721d28f6126f03e838a182b13054e6e4fd4b3ae32c81fba0e434874f28dd7107ff27d80b571c38e8a20483d576a0652b339ee23fd050290c648768e5589ae8841d6dd3b5c83636aa83ec0e06346fa749ad08500d4bfc1ff070a459eea7a13fe105bc862de54002287224d4dcbeffa9d45a17bac921a28493afe8c5e6875b58259b879e183b9411d094ba0256fb7ffa0bed406ef1587326477134fbdc5c601eaaf663d74be2db10cbdc82d1dc45941f39515c284e0a36adb1266c767103011af4ad8b5ee78d96fac3309312b42cd6d3a17d26fba836c49772d5fa3fe4f5bfd27ee05cc26ef4997d2cf7c8d72c4154109743bec8a0678b8ab6c64b58c13dd101a20dda72be5b8ab337b540275d460ce76abf284ba7ab0cee96fd5134fee0a394facd2ad2003166270525debf4847742d578eceac66f45edd5e45ff499ac1517f01cf16d504b7fd2bb63ac9edadaaf4f69e29fab011e6a8640fd1d0ac14f7305fbada8c3398ff7182670ded6ee82e69df74a55d6c60b4aa0fbd7641ba488146eda3481f29c796bb50497e79679cd4a42570998b8d3bc035c8a08a53d683d4cd4054f085c5238126684fc55f661b23e9959a277c355847ae04f63e0a38e626b4e16a9917cd7670d2db33c0d879b5dd714461ee0d60469d90460037f0c560971eabc2ef54297c5c32e7c5fddd536835e817f2307ddcb313e7e8d1ac9202e23ee07d0d365ee98cff8e24bf04af7e9ebeef23d0a8f1d5e5edd53eae22020984fc07c3434c7bd25811821399424fa1f0f69bd3a842f0ebaa791002211a5399cd5550be91229580117c7def1c6406d41af3f4e3b37fe7da47ae621125b421355814afb0ac5cbb16a93243d6a796df0498e1772e2854a6b42080287ff46e064c6d62c9cab9bc9e7f06c16c3e5d56286c956a95438f22e0a8206ed4ef5b6f26786c0879ef30e8143e5129e3bdc1faf510309a32d501e3af5d22ac6b48abe4a4ca0c154f46653c99cdb623672078289d5d2eee26f1969c0fd8dab308ad9d1f2a28cbaa0c9e9db3c9924b600dce1aac3bc4a754bf0b90165ff408f457cfd2e566b517e5279fe64ee75be9fcbc816b072e734c653eda0b0ee36eebcb1b8db364875314c84bce08145a712dfbaf4f532799193fe355fd494c447c3fffa8dedbe7c42cf6f5d65e4c722a36f824f7fb6c4ee4bbb2a1af7bc9b00ef2495569156420d5505c755cd5f4cb87581078f7a0133d3998be39680ccca130ffac235b6aa35b78612d2c237a9ef54392cbe3e6a52f05081b1a9c9131085d80740c1c90dc4581ed4eced2a49be7b753f9dedd50053cc583e3b26dae229451359dc2d1ae5fcf117b24c40b10a10fc351e0b81596e33dbb22d84e4a378753036ba727136d5ae6a7e9e412fcc9ec750ffd4606586975a8bd214bac7c1a0172f7a29c2d601d75ffaf0577eb38e48e2259b8da45865336672dfd2ed2773787b4d03fea527e1db8442321a27a1faec7c23f07878a602e6f88e1fb5a8261e38fab110a7a2d6865fad113911aebb3245ac3971696cfc1aa0c4262a1dfff49660b10f2af5a109dfd9fa0c12e9eecf479ae72a4326180d9ccc54a063b6b9b417d2ed5533df88d2384a8bcc0d620522994c454464e9115df6992c12a57beb758d80cb92baae4d867aa0d9d72e908990d8ff612a47fefe9b6af711dcb493038bb9d035ea04c30457db671b9b5ce7b6bef398bb17780c5a8019d80df33a8438b84e3f336ba61526c30001eb7376cba6fb59518f5f42fcef71986600168cf4ac39d384dd0bd88a1b5c57851c747b18df68959b621310eb63e9693ed59165d1c6ff31ce83f31465c45361edf10600fc35a5f70007e0fc32baefe3d4572a9b5d7249584b0c51c8341943b871c3fdefab823cd79e943f99880e889d61c85117fb9f0dc5820e74d0ab931805f20908c6bfb3cd5455de912fbd8eddc0168a26525001a91f4898f430c8c72dae150fcad60f0d4f85cb3ea33ffec2dfd364f315e57e0ef0eab32fff09d2d0e8c614251395994b4a479f180a1da58e1dd40764af8888990f13f3d93b43693ec1fc3e559d0dd4622650adeed6f657d0c34be92a4466e3adc536b64b0b6329da6a500076ec9f3a6a181b1e247799ff0cd86a5520d92866506c159855a64510f7bb8a81b0353a97f2299c5beef0b2a7edac3bc92a8708de576232cfa42e03719baf55b61185291c47097d2091acecdb748fa1ee56f680842ed8578c45714ee6ee9444f4c981d3f9ef7e4148616d7f0150e40bc67ac06bd031847c5871d8560f1229acd4509a2cc86290200433faa23a8cf30d9ea6413381912740f545e27dee66fa9b4ba27ca56761fd8bc8fb9929755e8e68c67faac474b785a4940f73f9cc32258f57943427e1f41e8a2bd72daa3adc6c941c66ca57ec10807d5d4cec43282719715637acde83b082dc1b2027a4048040f38f50170b496fe510d463ecd1c8cd2b9ae642a6dbee830ee5c4c5e2a8eb6d855054f494b847d9b4ebe7e775f3b32de42eeca348c2e13e902699183344d03ca560e51b518cd74916fa8fab14f53b5b6a716deec38e7f4d0fc12b589f665c3bc3b10a24580338c3e76ff7028f58bde3874fcd0cb39a0a0de7e38e9bed85eb6c5d69b68fb939cb8ec4eed4e3130f02777cf89ff4372929e7693eb00be58e8f65e9891f11124b3b887500d02fc9bf17441683c7d4d9ef8984b2df3e2a5e355bbe2d7aba6355a68097bf2f212bdcde45abb68a6f385e49618d71e4accdc731aa66dbbf45433ff6deaa9ef9e0f533280f9422eecd0fd1f2f517dbca062094a52a68ace4cc3d903bb72b3f90b46ae7261632a2948c60c0c0efead0dd6962ba43b684a21e69807830bb5f493a64e8546889605768896c7ad7e4e94e98357ff08b655a89bca931f785ef4fa69ce662044d8048f788e34f16f52e2279c72131399cb265f0b540f5dd276e857795a9b458b9aac64fece3181675ed6b0b8220c3cda23028f54b3dac2625a120ab310c38f20fac01f36d37c1920fbe0108f4578529d8c2dd7176b5f9e5fd620eb4c2f49ba6d87e28815ba6f0521877e635141765ff1794ec512d317d9ddf864d6d7e6c7aba2b7e7ea9fb52e9c14e32dc757b2cea6927f3abc79985592ad95567953da7249a26135c6db8956201df3bc6118e68636e7da57b48c3858bb7cc22800e5a4515dbd41a7662d10fb766b22a5f1595f43e665e68d77b288b3afff5b6e108a514a19bd77081e3ab8f54f9ddb777edf557af037a5c53a782f0604257fcec31de0fb00a6081c256e038499c1115bfa4b32768f0040fab6ed2800050711c99449c768442b5c3565bd05365923b895e644142848f97ed923f844b9a062398b6f886f71d501be60ac3de92c4424492c4deb4ecaccfc4ef4b560a657b4d8e1d35836b31ec221df1b0ec76ca9b081428da19ae752a1ad437f82954506f82339e85cc365bc9d8b549e72dd60eaba57a44d5a7d19b6eba013a3ea4d6d3b03bb3498b884cac3025713b296c42b5bb71773f555efd3f81959185df0853e4f230b09536e4b199677a6fa1bfec545124c703adc5cd6381348e7cfef168e2c62fe95b24bb9dbff06409c48949a5ebe9fcbd6841552111ea38f3d5be3b03f7d933cc170ad109d1db7e592224f2940b52babfa646de5de906eab970296bdbfce87b11445e0ac5e893e81ab0f1589d0e2e42dedee74d8a44db698e2af5cb89c8f3fc0f878ddc0d849270e3b7deb8a170dbf9f30bb9e28d1465820b76f33fb7d823df3c31594d9a6dbb753bf3a4dffd99481b933696bb0a623c2714ef4fd960d40fd020c6a5d15d4b08d2ccbfbf201f7e92508f719a611a7bfb339d31558c33fb4b9c4bb8c8125b6ac0737c9d82bc6fa128671bbf0b0faf3a8d1de944cf6479d9d83bb64d0cb4bc0a880388bcec56540285b30a296e11872a007ceed369681c010a845a0522fc62bf059bd5b3c8674ead88be117baed49b01ebb0021177fe4c6f566a019717b5acfc6d5bfae66325a70e5ca7cbd8b67de95cecd260e53921e1385f93b075120f443ddc15f9df627b57ca4855243404affa20d701e5ff6eb3a5ed2e8196f57038680def1f40f7685475f7e2269539296881e6ec3a3bc2d1369c03fb42f8fb163a26be68906d9d6e23063718fd3393dffeae4374d62abcbba490c04c80728ccce7a7d0619f10aec9976f09020db7283a5e6abe438d2edc511e391abc31a35dc243a71c2834581ef9e1c7e7ebe16a8a8e53077a36a8baab6a39e2096109bd357adea3093be2aeefce85000f764c9ee773357aad761f8215cc9f2e977c8acb57a3b5a9b65584cbb926a6bac48f1214bbb06719c96eb927119a999b8d5eb4385c362ae7f19d51fb5159ac4a2d2403695c7d772d22ba514be73c777ca8ee8220775bb9a2e04d88ac64e8aa44c8b9fd3ddef2b340d944e45219427947d4f70b3a317376b4d6f1e3402e992cc027c867e5a0db27a2804ed50e3cafbc3ea1e9fb338f584542b154a09d6f5885ddf44aa3bb1fd6e9c6063bdcfda08e6eb7ad171f1bb9d86bcb5a87bc38c68871c749359fc3521fa8af4c9f6e94964c8f87d948c8e4464d46c4c4bbd74309947587cb02bc84cddc95942065d41329725f2cc67518685df51e122193d6878c409f187f4fefdac1c90916c1ea38ae48011c88a9e4670a16ad224909d57dfab8a0d450b4d4746b3c9a6e24ec59d0084a1b1be295fcdb884a4cdedaa5872754a6e9a0336bcac1049578c0809e7451b51a04d99f52728caa0f123edd33fa634da58982871d7f9b6293a70f0ae238b34d2c8efe68446d1dff7f7f2805c3a3aa57216b8a26a485a9f766ccf74bd4af6045c8595129e5e217ee6217a3d4ca6ed617bd62b66234be9f79ce92040cbe51b220fecef184fe845c8fc1f0ffe63d412fb9baeefed8a3490e5883392a88daddee81a30b40531af872e87642270e18879320a15a26dd1e7344003ced396b111827df92e7c9a1252e12e1ba7534a327a29da3a67ec35c05e3836e0c5f5c938b38ccb63e236c18fc6e5219a6396a1bad8ecdf78647b0d162745715623540a04eb7aafeff028ac6dd2f64da156660e0ec3aa4f0db187801be36d966f7b931df34341b4a51c7dc5ed92cbba4b050c947fcd91567255ee6861c99b3b0461ad8d8bf99e0e5fd264d0abf5467f7f37f17bb8811291823ed930e2204dac1eef0c95678040c0679fc8dd053f9e83bd7605971adba92db5baf7918cc8a317f141bbc1c6ffb10cb4b588f67e88cff18f9132970ecc7bae3efe46d394b2c301c5f99b217ad021aaf36b4d9d073a68ce401de17203b8bd535da36ac7c76381126bbbb9090e02f357f0bbe78999969b7377ef8c04d0f7f0782f23950d8176609bbbb2a2ca83d81fc5f0c341401e30a9e8b8a369585c57ed6e31600057d417e26ea90ad5e325486cf04b45df642a6f934f8c19175af498bb9ce71ef6b2ef8823e341743b88017d686cf426eef0b10e26e331f265d469ef3ff148846823bb9fcc19b6a5b9855856433186f2e6a77b9e4c3f70172cf53784b4ef34a01afc3f464ee732d6c8e1eee46ce64c57bd70c402b9edf83329c72ef3f3e09fe058ce70fa70f3dd4624bd6ff008cecba5a07435f1d9704a34fb53c9cf93f3269941e3804d33edc7b38550457231bc8b554c250a772147c3ce2260351bcf546d839d861865f8eb04e57114281b09c4567fe88c05749ba0cef817f33fcf408cfa3a48a4597a06586524156659cc9d8494627a89a01bd4c0b06c6e1dce596ea451bf287ad65b55f47abc2f3bf61d9b3f2de0e4d5ac750e477e2b0aaf451922ea9ff6b96052eaace3ae8012b70ed7cc2335ff780283dccad636f763cf4de3954cb12623ec629b13c32e44abb2377a7175a46916bfb3809ddad0d8dda99b816da8cf7ce0e7cdfa8c336062a1891bb85c7e8cecdb181fe5545b419827a0132f8187d187fbeece22286d5b3682be27f8e96f8cfb678d466370253047b3b4631d781fe4bdd3a245465eb5a6a2fd47d5d4bea0c42ca915a9a5e6b615b7391f60f132998bf576c22b2bc1d20d8b3299319b5dd029b83e8afa2b3caff5004f3dd74206ebebec89a498acf9d7f95a0bb73e", + "0x7c0e7f46d64d29bb09077be5c681fd8ec96ed2ce4dc2829266490109e8fd4fedf74293e1399ec2921fc349deac7c3731ac0b353f05a301ae2319507729f210e2dc25b1679f469c5598846a229b9103c2b3158a19906e1246677210099b509361b81bfed44c48bf8afe16ed3690e9fb032f78ebb5cbd2c53050faa078651115e7be002bb257ed436120c041e67bd457a052ec4b4fa7ffa6297fb0d788e14ea8ad43f9e56b2d8f1a6393c40cc0c23306c3b5516564ac55bad0993b39461ed879a941d285eb0cadb6642cfc3599bdb4ba86d596e98971643370c7451d565f93672bd8f190288952966d8776a6b138db770e9131b8fd25397cca35e9519e9ab0101bc9d701fd0bcedf1a842f66a1f4db5f91ae271ac109fd670b962c1090faabc94ef92d6b204db78f2ac4d30bf32547d6ac53a746fef4e3aab89e8f53295e201e4cf4685dd0e045f1723095b05df5823c088d2fb203ce6af12687a7e64fd769caa668f8af56a6f75a87730fdae40016d3b4cc48ea2d15e6308a8dcbb6812e185747a5079050588769b07b3c0cc1d6c189bb64cdffae5b600b3172d140f65b31c01d24ce7653023333abfc78f5d77d6dc8f90ec2c140c5c860dcfbd928350f44d227fd6f694f82522dd8ed9866b7eddf7ac564be4a758e71676d702d4fd62b4a273e6f6e24d80c3ebe1f080c897a914ae9cf68e5a28782dee5552028f497475bedcd5ca81451a884b5d74e1205bdcca32766fd6d784483e3674fdb36bd372c2fe180caea3fd2b372246281000ac472d1257d6cbb30e1081389df76e3ac835a7026d863117f7e5ae85013a9946a514ba3aaeee105d45d997cae184bf15fe883dee7e9f6b6abed2280bc29905a3f29939dc3ebec92955c54bbc9d7b689215a0e41e9c4f475a33f63057a484620c12e7d9373f0017efa2f6b54ff789978a8d695297578f3b84267c83a4bf19d7a4d21ab11aa73f810e13ea4654a9ed8788fe5678650622f1bb93ed0f040f1ad59c76eb898cd258daceac3d7a3772cde90da6d07059e2f0459d900506cd78f52adc544aea762cfe1400a5c74a91114177f1befab44dbf075d046d5ef1cc995a9194206909699c8f75539cefa9418d5743607adbed861bca891a237a9a311ee97bbb98fd240cd9138a495f481f79eedea6a8ea45e1b169e68ff19244d29dbb842fdf13fdb7f3c4cf03c69b53113a68cf32dcb31decf2dfea2fff81dff045025957ad38f8a7588b1ce42df88c969d3f30b9b55264595383ce8bb2157b6b28a4cc0f50c20aea6c1af6832671e199bd9eb3494d1afce28d4f6f1f18b79bf191e95b65b70878de50dffb5ba08538893ae90728ec7d66678b65b17d42dd63823f0dbaed83bd95e0c31dd91252ad08f0ae983506e1a8e3285f7e6d779f00696a060bca3fcc0cecf87829a3c508b583b51df445a74ac430616c52b55e091632082f6d6d4ef1bbc7fb119cbdb3377ffaf706107a13905a3ee39ea9bd57a9603715d0de344b7ecfb85fa3abef6fd6d44a09828e33abc0ac3a99ad4c64353ac69fa433dad3b89444ae7e54f55f8b8c953d7dd559fbf7b1f48299f0134acba215f7de976e1c331399b24d3f372b3841f7bb3489aaecca5371c145efdcfc38951f8931a0ea52c87d055ab98df01d95e5f36a433e2298352b73e46605dde5df1263527832c9288ee358061eebd02847bf418b1f99db809d12bd64d336186f5da1a33f9c4669b2ff06b5620a83227af2d683cf3f4015f0604321eebcb225b29d94c701dde6dbb3ddcebf832c09e3fba5f49cc18cdd71b29ce1b0498b880b33aa8993179df161a0f7fe55cda316b28ea9b5abde115bb18a28e2645fe232c41903ed1b74af3327dcae5106ccba3e4f2e6a448bca43ddbf0a7ad54a97ba78419346d6e929fb3f170d432444eafe2f1bc3b9e6be6cacb9c3bef383c86a2ed2b4e55107208ddd0c79059823f2ba12b2f0ad9c454ed52efb3193a905c0dba247b46c4cf4342390814bfc7de604fb346387895b72adc4c5d92fcc721cd093d414446776fba99416afce65245328269712b57a54f16d45f7f4241db3657995b1089f109b0ad3754f13d1971ba038a3c19af06270942bb45f2098141d04c1d751a122838bfb3f02568e8715f6e034c196604f79afb2d0849546dabc592ae17a2550f476638ec243ca0403a9bf185b4df94f0d462625a89cf636f16b8c372e92da82cba1ab5fa4075f8422768797097e52187b648b58a47cd6d25b36f55ff6e143bc4c87ced92607e33806a4e34f70471c31e16f85023674a0cfb7dc40329488b9c18b7dc68387d5d9e4e8897ae21234134fb0782af633be6343f139380493177b2c0a62bbe1386e986898bd346c77806ce755eda307f945297d4093eb03e33f47caf1c8064ffb74c02593c54b2f5bae5f3ae5f5873d6afd34b1f572af66498d0a881b694132e8f8703bc74b391f399f44c1247393cd317c3d189884091de840df2fa6346b40cb6eec1ce8a491551bfc3ce370c1cf0282f105e3b106d08bac86356dd6c19e14167a86f070eb7b1b82ad097ebcf859b7b19bc79d93b22a7c902bb1784a6b1f6ecd23040e3c15ee4715f119a66df5d8baf315bf06eadd4093e73b58eec7f5ab48639d7bebdd5e807c8606f15027570756344980ed2577dba55ed23cd16f6816c05993f75ccd6bd38c74f45e2ef3ced305753b030241119ddb32f8c10e81538c526fbe1e178be8f490199e58bc12beafec0bcf5a044c72aec2f8baa04f96bb60801ae88be92cccfc74c05133bc863de62d33f4cc6504335853028ecd5f9a5d5053ef2d49614923510b0ac887097bd258bf57dafa28b324345e36af51396b49380a1f4b9ae74ae3b73eabe708f340780497046ada146dc61b5e3ee1b6402f09132bd3afd38bc46a3694d51ec37bd34929b9130e5b6a58520472353e9039e1c975bf404bdddde2aedd8d7e591718e8c64c388c68ecc5805156124979d1b52b00ee2308ae8900cf3e267c52be8a53650e1ef7cc9f281a4725a7bda1aaae098648403ec5bc2b8f71b0ce3038eec6abc825b75a0e5ef39542c0c4cc16a378856f42c956cb363a4494e3bb140808f1d04340496428375796fadcb03fde19f09eedf5bd45ce33652bf8a0158801f354c5e2876da21400a96ccc63d9a95d4f0b03b350cc719ab7b86a8e9371072a736f188ca2cfa800249b4dadd8a2a1f646c815fa45d2c5eb3c531c3f9766af171617dad150654c0855e163dc2e15f61590a68819d10fd2a0e7c27ad8f9f0368b274b2258cc9f67db68cba1185f2f1cf5df53df9ce0b7c0f2e5b246604544901e3a54d115f9d397e32a749fd7d7331e6b70c9b841ed8d6326bf3249c767c4ee2e51c8206a28de4dec69a5556539ca4b73d617874232656c1d6270cbc9fc3afd730764367c50be956d5e3e7096caab34789baa2fc3a461e9fcfae99003317882bf64460259969aa841f126013ab5f657a9a13fd0e8bae7f828595b0f9892c7595218a6cffc860d68c954ea2a1b5802bb0fa1a936cab7ad7d759baed4597f9ab762c407c801a8dcd8b6bcf95434e56bf5e26b27bd637e6ff10d8528e78b5391dd440d4ad4cb4ef9b9be765f3b5802e0e3979718b8841d55042d163a665edeba9c0dea784845d6b817010f0632c73d935b81921d767714d302f014ba74ebcd367293c8b1349f3480acea2e5ee2fb32c91176942068faff93228853736a937f7f535e34bf7aa49b3b7567ad0b86cbd81d4154d87752250a6cc5c57ad527aa922e1aea723218e4c3c3878e8cc110951353a0d4155299618c69082f303cd7f6564181ce844714c7c5830764a0dd45fd828bf347c4790cfebf002f443e50ca2a48f718d33522121d1dd92d58d561238d2406f1ca3ac15cd8e5ef7a8f8d32768a9bc3d3fd9e5fea6a78889aa388316d4afe6c1b66a0784bdc26d83aa73a047684dc4ed8c9b0b76f3977aed8af901b0710d8706814b8e37b1e4207ee488f460ee5cc8c6e3bbc46b1800b74f27b951d2158414e19ce3ad204f5e9e907669cb3953d3aaa6a7d985e8169aa691cca58983bd9482d6ecee80963776b0d6e634f4bfbd1f91d83baab6928cac940d50b7d21a4e564be985cc5cf9fe79440fd8d493af481769f9a16434f9a544314f28b8ebcedea0ec4508614625eaceec5c25faa089c61e61ec60d7d0ad1f6f105cb4f6a494356a65ffb0c57ab4d6316096854c66da9d636bdfa583cd2f60952b8cf35f644d91e8bcdb369ce611f951f826182004d077b0bf5fd1c466a6f4fa5ef22feba4451bda7a30c40fac5b5afd327f7d4eef20bb87587ee2ff466bfad6e8545dec72039a002ccf9f83a415404932155d236e420db3750472120e653facedb52e19ef643f7ae30157b0d7abe77b3df57aa61def53641ab82fbdd2312352f66b24cbd10eac21b5977a7805c53f003de2beef6bfdf0598cb013929c2183976eca144fe22a82883a01410e206589574006cf9b1c863235d9bab502e8003b88275af1e07f7621710f7d9f1bcfdf0ad0f93220eac75a31574ece7c8726b30425d4a1ca4819a166e55654ac7eec9a3ec33eb29d8758cc9725fe90987c3c9dc0cc8c7e54ecb8fa872934275cd406a1274188a64a8b90c10a8e42ecf63d01e070ad4e0c6d8e737269d35249ec7be003b65976fb7eb4801d2ffc34b1a73fc3627152771e68e4f9e401405d2e8cf5f00e65a84ae6a18c127685bb324d605cc2adb6cc4d48219f0bbbab7987e6177fe1497d616af683a8801a96eb618e1158b3941d0178751684ffd77a6303abf599114ba4e3e0b5bae7db6927c22878c1a03db1156083120db93fd8f1a68c7a68b5145aa4bbdbd99f3a857978d4b1271bac7fad30a960c50373c89fb072dfc5e9902fe2951b2c03d629b70bba856bc866ec885e6064e1b572cfac38f6913c2c5c0addb4d401ca0e7514fcd53f868a98db3bdeaeed6940661cbd900110c6e94729f44e1c6baf4ef63fdcb417248486fd7dc9f8587229981bf17f2e2c1094af8a9c3fe3bddc9878408681928057cb98a8fb06c4715f5f69d6c689d48b65ea5b2a0d40b34c7bafa80193021f67579840cb37d322c3da8f18dbe717e4b32e1b3e1da90b0a0cafbc656ccbac354f044ec15b792166f6fcec6ccab943526662a9ae26f306e421dd8bdaf1deef84c05294a3696da9da8eba45124afffa2952275083f3457876b9d5ca54f2aaad106dd0a231826fc039b4013a1b3d76a20622f57c9a46ee98a6f5f3dbc5fdb3f3b0a7379ff924ca5836cdd637798cd4fb9bda582e5635aef98eb3595044a45605912a8b054f48e147f3e979b4857f65462e8976ca1a74bb38fd1cf1638bd611a0b22d7484c9ed78608afedeab7ca4c9771742a209d0b28af7f50a1ea078d68c6d66cddc95c4c689a288ed02b0fd489bd8456faa826509fab62e3849bd8cb73aa9d5c00061dee855be6d62e7b88c82f946ba6eadbf4a74acc09243aff66f6fbd197a606e207a92af6c2d7c3f7513c73bdf0b819403f560a88cbf821d476a766aa0a6fcb15b3fffa3aab24717135c1550d1e1078e115e4a8b2288a48670ebf792cbfc83a5c1994cfcba570a005798ad85b77a1421598265e4cd742399430593710af3799e55376e46ec6e5c8b5fdb59c6d92846b4e2e45d881d3e88c157edaadf5b573df4ee8b325886bc131fa29d468066d1f8a1390722f08d537c42477e473493c99e98bf4d577eeef8fd6b853a6bc2d06dc3335af5bff46e57ac4c8eb685ee983ac7bcb3f8adc9054f6b117d73824d318c461f5bbb517a8da07a405f37980d5f746ebc014c502c01e38837b1ec929bbecd4a5e23eaf9dbe9b9818319c757389b9161c92ecae4587f478b2a0cac07202e682f7cfe18f02a4ce1e69393d06316bb825911223bf3956c05a940ff9f584217a5a8b24a5d9d92d78a7c4314e0d27cf18921589d2a49f75818e5946f1743d53e63ce6fcdd7c873d6dab444aa2a7350adbf0d4097656eaf4172a9600247920c08927a1f7426d408d92d64738c049b3f458fc1ba8080296b727731fe6fc7773326b9f75168f007a5e8915383506789b52539465c745114e90f80c4dd9b1374a51071ff99675ef0e00148a3fe107256a95850718aab75403f115ac0f7ee0ccfcba8e708bc409dc945404afdbd0ee8732ad13c9bc25acaeb80e9c47385d975a021f85ee708315ffc4926c09744f5adbdcc7eb9a56f43f344b6e7f4c80a70776880eaabb8fd9d57aab0348a07aaac4c1a56cf56520adfd83f585f13c0face1d38376fb7238350c04a9e94bae2fb8e74ab4feff7e87d04237ac2ffbcb9804fd969ae7901e765e8d756f4ef173341ea768e5ccc542e0b4ec32f4d5d8191389ffde999f019b7e2b75c06c6b39bb889f3c92c789678aa23536d3f01936688df7b430ffcb8266d5f98161cf8e0f5fbb2b2871c7e3f423ff7fe163f181064ff472b46037bb06185ab924cc25d3f0831cdf9ed909d42e70eaee97aa0ba18e7011ac706bbca9898ed61664c77e43f6ae9492edf5a9acf6eb2889f99e5ad3d51a02a1b687f2dacac234615e709a11ae6965e856179fd4f32c0602e34e5e412751a7424b4054dd113a4b698f3a5cfbdfbdd44581f3a971e64a24327541f24b91cdaf8351518ee2a57a88ed0c8f018f35ab84260e6e9f43387bd217fc4212c63843d1b681dce400e9435118cc435aeb86b67a4fd2815ac7cf2e6cb5e92fc1bdbdb31343e3e55cf40fe7ab746c7a20e2cc93612287d589d88522bb9ff92c6fd30c89d725d52494dbd5980fcd3b794878cc10eec491cc1904425e54e28db31af27e39b4dc7139dc9247f2480befef3c1cbd8d6941366bdcd793f23a5b7473098a938851349a3120570de6b1b9007a1eeda42a8d7465c9d90e1495f01f6f7a7e18ac9cb5fb90644ef6af71ec091c4f063636bd0d09524a37fb43d84810ccd371e2309a5812ba43b8c02e0b83dd32b39bee172a304f488a381c0ec44b11bf10b97d461841d78c89cc473c3a54574b46dd52aa91e8e237636983978c203e64dc2ae6bae659359235ce2f75dd14839ddcb193a175b8fdb81779facda826be8115f0c5dc1e7f3e14908bca180850870a69729c9f6cf4da05e5615b55db78a082f51804dde368e3f32a2d0bc9198f40816e8b1983565a44868774a5921d335b5e086d5fa3ec7609cbb05d6250aecb093b483ec82f655b5371da49e3a997142731d9200918ddff66323e27bc2f93a5c7e0ecd4c6811e305859fcbaa190d8ddc5526dd5eb36cf37c628e4265748038729035bf2dc790d56da834937a881905dcceffeef705f0cd15ff85a69aa153fe621b3ffa925731d184c2c77637072c75d498eebff2ce218cba4a74aaf6b23dcb39c4c4df4e54e77677456479e7310a5bd939ff1db15c7c672fbc2b404fb79b11ed1a62bf1f3359576e95c06521184b8d30c3802143397250d7385e775db0dfd5316d3a13966d62b5f032ae9ed851d9016dff85b124d8e758707925d6a5ec0e5dec6370ccd5a48f18ed24ab7fa2e676e4ab3565187757b3ee02f17d41e337432b9803aeaf84daa4af51a3534d17a734fded053ba8282224e68d1bc475b6992a524199a1c177b118835e76e9b5302afb66c7a7666fbcbc7a543981410f9cd0850fe9f67bc3f1a894771b1ad4e1c73a0696df0109fda3ca6a3a1aca9a226bb5abbb6f2370bf840d77209c781c14952366aefba58b355d669cfed0f55b65de3904085e4b39a5e8ea5562fbf8f1da52f27e2a8dba1937c63a2db88c2976e6e9c28e8d275194f658a273e538b424d0e67c85d1fe3f1f4e59682e493d8ebe56df355babc0d4c1834be94d5862dcace9b1ad07fe39edd3f942252249fe676ae1a22d11b5a1eb063892dc1182b2c5235a6a5e64341e14aa00843384bf04e7999472736871910b2df639842125908c470121d35009e59be19491bc3fae9931c8590205b0e8d0db0185b89c95b19606796c54b95158ac24f58825de346cebcd5d7eeea7488382b9d58b3bbab7c712884167336944caa0d42b943038b8cfbfe120ccc648287866bdfc9e2ae3858a9c0ac81b7109d9ab822409a72018132951b5bc31342a588b46fa525c2e8f32c2b96c5cc34c2012147f3edb4fed71020de08543fbfa36761cab7cb1974e90a5ceb1d5f0e6ae0ec85a97272f2f9cb335efc3fba79adb9f3585b34d7d97f9cbf869fdc3992f7eec26df10f9597c2fa4d28c04874200944cd8c72b5c196106d2fa3afcef12c78d3f2c1ea7e4f09930ebf026c67c4f83838dbb8d39b870150450ae37daf73948c7102d197a9b4fba48921d8d120f6e5ab3e9cb753aff6d5d6817cad7cebc903f72f5510cf3f4159499ced9f7c81f24a445db08b3ad2e82e66eed39172075bc3bbbbc14751960a526c8a318b3be7e58ff8cca0afb425625efbba3994893b90a6edc93c56812bfa78eeb7ec4985a5ad8b34e9e79c468ca4fe31309beb73540e5da899d083bc4c985ead1bb395b3589d26af1c594d5f389fb08ba192d1ca789611a832b5574d8f9ef4e4d23c89f88da5b779ab8ab22ba82ad3c4877a2db4f81b4a86c037618964f57cb7ad534e976caecae7b82a5fc3a42e8bd11988a1c2df4b7c6525a0d3d4ef4767e35bf375276cedfd1d31f7b8fae68b70b634e8aa81ccd69ea777c0cf054dcc5ba27aefe1768edf6836313bbb016e625d13040f69ed2386cbf50693a6ec00f053b2c53a9f4267ed5d458dc06fe2aa2c5e107a85af7e22e86b7cf05b5a9682eb866f106cd4996b68358f3ad924b3ab12a465040f5d38860222b62e96b20e118a5a610f1f11a7c2cedcf6211a8625ba17058358a39a41539cc0941349f02676558c90b4614d8af886361a2e8271087bcb2f0c4b94d17326fb91af74f6ba9fd6c9f77e2ac25f867741961529fff82755591a117718bde5aa13dcd3ef5385d334a0eb931818a63b037a8a9d234b7fa5856b404941c0240439b52999954476c48187c880f939aae53978a841f31e9c5cf5142179f32f478072d18f042c92b91b21e8478143a2324c13fa1223384c090a74769a64bd159f058f04fbc60104da9365a0568450de49fb971b0a4edc580034c28dbcbda345b390ef3de72939867bb1202a346cf551439cdb4e0b3c54affb0fae24c7a1f4ad8e5c00150b347200a4ef23c43e9c65edabcf30a3daac30724551674f5191730e428633852786b83180ea73693ee5e18d2f8c97f374b894e6f6333fa143549d44449f79137d8684b4ac5df2c7fb345218ed53df5220c680071e5b7516a34c0f5f3e3d26b7455884eaba057d6bd571d2d1341b3beb6ecc7f54fa92818bb2badc2a1fe175424bf1c6e1ac737bd43d23feb58e9ebf28fdf60fd43c07d4152b608f52fea4d0684a11a4dcd3fa5c2cb154105cac63b5caec208051b4d189b7ae3c2ca34f5432c7846fdaac928b5065645e188cb76d495f6e717b4b8a233b1063354767beea75405461be96a3d41dda6f860152e663134b02da6fd91b2eb8ccaa1c1ac8377fa93d5a6cc22e2ac564dc2906970bdcbeecd07a722f72dcb32aa1fc665c6fd26cb6fb68e042bb24039d6769cfbbab47295598dd4078eaca6505663fc1080527b66071b8340b432d334dad04c155b4355259cb56cae8d3fc9c46077a352ca1b9d5fe89939efe10f16b71ca4f902d30f07695356b480c4ac2fa6a93f69fd3ca7f19fa06bf8b084c7a86b3609b68b2bb1ef5b5e2e6710fecb4ddaa125a738b5787de6eaef86134d2f7f54bfdaf46b4a35552d655d30d1f50b5dbd4297ceb05cc616e14527aeab52ee971834373dd08a9d36aa69e6b2795ceefa155c85e5b8d8fa6749e13949ae67ff02034901efc1315cf6173831224d8888176e58e4126fa834c2af0ff0e56ad333386c726117b8e4dcd4c9e78c6acf6e04342bc12d3b36c9c7bfddd638f54938acbd87e74155be1cf83afb79a5e9a5141ff1ffdcdeac1691b7b6facba58b309c641ed049d1cde3ac82d4b82c11b7a6b6abed90bcf8dcd74e42fbdb23edb16bc4a4308b680431e4d6be7ae246c97c588d0ef566ea7f33e5a754f22ac3694585588dac204d10ce3c15e5ee8ff9a8df6432c07d88bcfee74fdc11f44a259968a48992123ddaf2b71fb6a4646272ee77bf5dd07754f700ee7f114ffe28249d835b4efce1facce8f9f69e9adc8c61c05983e6606b780a98f1658419375f06bcd4059d651f8cdcf4db6914dd4e9d05a52dc9b124e71bb2da63400c2d3f56bce19016713d2b1e0a6037162f76a550460ad9f77fe83e9b2f5f9745a77f544ee01994fbd149e8f1ef35db6fb9e086fb86c0b65157079a6b9ec5ecc4e2b4447ae016a275841e32e203c200788f8df051a0795fc0a0f45102232d0f91d0a82f96b5af368889aaa3d24e1bd03e3d61a197e04e0221eab5a0d9d2bb40c5e3e819a4ab5ee66210acadc00f97f46085355483083c4d93a7629fec3d1ab7377f394fb80dc04ee60a37fd701e5241f3ac55ca5efaa2e58c3bab944473f5072b380f95fff81997a6263332f3a6a9658ee603a62d38c470b303509371337fa510d0172d6936cd808d86dce57504c0b16cfaf214e55c4b2cbf26a66808c5ec6a6eb0ada79ebde8077e3b41012517ffeacb55cb4afe73c316e86519db7f88f63839446686336f97939b24c6630c6e91300500abcbed711ca89f42a43807fa59a236e288ae36a7adb61692a3d93803e4ef0c90a38649172a1a995f5a35304956a8371c8dab8f841f80a1bf626291152be94c2137c0a73725416222e119860f34873e2fa4c1d124885bedfd64c722e1df430a73e0cc80b42af40e41f2416cf8bb92e10030d06e9fa681d42c5d82d7933ab3c9d18a9b9d7bb705b915dbeadd5db7227d8e4704743edbf810fad4f3d5e1baaa63261610dd7f33ccd647fd51e9f67b8f06f3345b3a4ead25a332a4e9fe09a4a2ba8ad92d5af2643aaa994d2300b65b3e9230f5f4b4e046eb49577e7546f07f6c45101b123df9f6874a6ed73777de30bedebabd36470cf45bae8e6513e1309597dff89abec0c0fb690aeb36a4cf29d8f3765873bd4c81aaf9240230207fb475e5917e04b4370a66db3c6d1e17a38eb4563d503220bdcc7e8626ac0ba0105b73ce446b805c194c8f759a6bd3874ddc293d7201c78295412965e2a1f654cbc727168f2d2646620db258c9c0af34aee71f3987f436f8f14d8a898ceb45256d36ea6f12cc822dd1656fa4c9caa0f199768584512b36b500f423f948111ed2f4865c33181515d8ca734b8048c1a7c6d870cb7d6df7b012393a9adbd69cfefd4a5ae12060acd4beee272eb41b235adec81e6634e5e5436080a9391b5df23483952f1f365325a788a6fde4d0672162c400674f056c5fc386265b6f95fa0c651a2fef81920c2ceb543a179ce8327dfef38a0d8547c174b67ae4ab4ddbfbdd06517d35b76beadbf1d533bb6cd765627fb694f086080cefd67e46640a82d847e5cf1efd341299c67d3b1a60ca1b7e69ca51aa1fdad8412491362c0a80035af0a1f12bfdaf05cada47edd04a143f720fd986da7388a8ea3f8c88481aac2e8e6f2da9832da219094e7d1523430ace8aa13a605b009fb3d3a81c51cb1b312867b351b85e68cea961e93ffb45094fe131d18e508a4caf7e83eccbe49edbd6fa2aca2936a30db5dec59c222d5c06eb35fbe10ba161c94de38021d962e39f04b814a8a465b2e11f026a09ae7b4329cbd566aafb2fbd5d932cbf01b9d791cf4928c9e606dcaa1e96e385c7e0c337004050206e3b7f08369d43c1168f2f715dd70b81ef66f758d4e94c2e88a98914e77c82bceebd12303d0dec4531b9f8c64005eb0a7b31a54f40ad8638d86c623f9118f037ee061ff0c587108f0e43f66d69cd7606d5a578e3bcb7ec5935842f854d91abb7c4b087daf4361f967d71823ce84d79fbd957110243a392f55abc287421c6ce4e99e92dae6c4576bf8e39c1e47746562e3aaed11f4050f84928d5b6fc407c83ca43f38ed99767e0de58c6a2b82da01b542565e5b5ae62cef045031e6376da9bc6dba2b242ab50219fa6f6b5fbdce42188250d980af5bfcae2bc70f8cbc5edba8c7fe169ae273a929e6fddcaaca2c03c259a88fb3d0b138d7105b880edf6250d80eb2ddd603061ced2584065f122877b64f58fded4ce4c93e9b06cacafb6d6901711186bd186876f05981bff8c3cae79e3992e133c371e3eceb48f16c5b1b9eea8fac8d68b5c71da7b7e1c1b0e5a503f74f74305fe537fe5e18a1cba866068e285ef75c69875671b1c9f25279b13abb1d85002a1a49a2cfd6bcd7d7c9c3be5322efaee910747b8d2a0fcce2e8987a1934b667389810f23496fb315883cb8133b98a8156173d63431aeece05d26ab3816f91af29ed6412722c2d4b8760bba3c02d21c5e9a9d20b004da64db5262d81bf9c80dafd518e940ca3aea2e4ce71f89e47c4a54a177b686d4f83671413e08163b1c082c5c472e38d161d2b44027b08dcbe58b15e53511120e425a09e52e7d9d5a6017c21191511e895cff7a5b1af0bbf6bb8fd13e46d736411dbf3d43da1b46269a201c4dc269c78a019725ddce61eb53a8fe4ea043edd76caa535c3edb534a1d4abfb9f23470484a49fa4f7a6c3ad967471e671241b75d5b57cfe9f7744508604c4b6edb3ca97dbb8c1d0266abe2a6c6472588030660370f1494190360c4833096f3e28a4abe86064417412c327a551cafea34e61555553ff87359671bf3df02f3f511363e8c444c378f805ce4254fc58718801f9d67ace36b72c7726b75e71d231eca19a5bde07a534427046c28e0f6781095459d2bb6d124a8b45cf0a38acbfde03121dbc5453295b312f987a3b7770b3f31aef23fef688b4928b8febd5a19799a3ddc4ab7a1b8bb0613f4e8676ae89cb0264d0d23594f586f5eb623d20c29b9af3bc645bce8feb5d56f7ba768f09b4359dae27619f93d7da94339fff8fa10899849dc2eaf51b5fbf15d9d9c3e250025a7c67a807457ddaa94fbb55d89a44cdf1ddc83f16bd76f44678b7a27a7499600a5f739b13802b205a35de7bb1f2abd4f6d3bc1fef9b9da4e1998a02911817bf128907dd0bc0a19dc0872509eaed4398dfb01be4a9bfafea9ea9b34441a5581a8494649a55b84546f46f98e66508bb05c929f9f0422e296b2249bed9f5530d6a09ae205c5bb0aa82118e67d903e5dd69b50d7ad02ac7b7236ed14dfc9d4e43d117ec38f0b8238859baedf278125fc673dd542c91c0814ec6ff278136fb223da9b315995967c30c8b9f0be89510740fa5c48cb31ef96c26c4b1aacf6004e0783fe18ab455e751704573112253f03a05acc77329dbf6dda0029ee87908cfe8baf4530d24ec5e496df41339d62aca2bd7fbcc68b9d7edf79fc8bb0568f4ec20fee437d7c2cbaad5a81f28dd7c4dabfd8096442bc571f55fcaf6a865b22ced7d8ec4fce6ac643e6930cd18569eac8b55753c5c7028abf8b882c10e249a4883c8d128b12f25e9370792d1f33b460de4b4411f6c86ce259e48318c269ca1578c4bba6321e7dd1f5d1c3b5d66248464fbbcd838aea5fa5fc6d18949ce8f967fedc528abdbb0a213e462e490ff56dbd613fc536066410a4beb8b82d5674e896ff142780c880aa568387fc19bd9c9d2effdc225274c80d83ec4c94e6ddd61c943433700513fc02b04b2372b5dacc075b3b717d7a899eb55028d7244705770c0101fb4bba0e78cc1d7f7f58e04f4f0e3fbba19541f1f9bb6b75b7a383a86fa5b955bf375ac3bb5612bbe27d83277ac8c425fdcc26a919a7b96aa690b00641c92e6a8a984409ea01a0e1ec31a8e63780460875a8278be9542d05912e073c8ccb9056f037955cddc3e7fdedc984162035e1d85d54e06927739dd4a0043a1095f4c9d899c0ccca24a6d7d7721f9953ad1997004d1c3c60d607eb7ca35fd98ada0249ce334309bd144739d12f10db733612421780f4b5369de877c5a9cbc7fff2a49b2cb7b4cea0345710e62bfcf295b03c56bbf3f22800a740edb0c39ebe85fcffd882ec6b5fb1b01e49eaae48882b686474aff3d030509f105257346de2085f2cdc4da5a5a4635df3b65effdf9d50cf8fcc27b96b1aad6dac717c5595676b51b74ea96401a73648c562776dadfe01387150719f46641f663b921ca8b346668f218327180397eac795292d8223ba04d1f7b55c9208cf00bf387b693c2c011cf2601fda109465607cf9aa746ab6b09084be49179df9fd6c3ef4cbf1b0a6758f295a97d5a380eca3b49b87f4df6030106899915beb89a7f53b11a2ec858dc470a96d77b9b8f6a6e23fb8efd4e11ea186440ebf2322ca557c450890e3668f44f2f7ea7e07140cfa50c4a28182897041705fdaf147b0f1b653f0a4e3345a208797f1958a535a390d40553e787e28dbf22c14694ab29ad97d0aa2853c287bf76c3041274f96a0d932e627872996a56a1648fe5ecc12537fd281669f728f008f4a723fcce32cddade09bf409d51bc129792f6d11113d5b8752313bb8cc2dd7a71ce1a9a61c4fb458388fc866c2fa80a9502b9a0cca99d2b6a1ba91ed865f04c3ccfa2448b506eae31f30cad5afc0868047a9a18e13568e758a2e2e2da9bb5aa885d6493b4bf13a39ead6b89e90f67ac5992c9108973a0855aea5efbc2daac7e417aa137c28577cac8f67be9f9b620a984175f3a27d544385c60e84b27728a6436ee7ddfcdd60ab6e76f37fcaa90d2b9833b024b732dac05e7454827a1936105b12e4c71fae750219cb9b38a5e425806babc26054f6f5c2d8a13ce853eba31d02c13c3f3ec70c4328693610c8c418bd3a8802eebd3f60661272a383d2713f5cd20e67a6254e7b217b5377cd63607ed932b9edfee9eff38ecec1f3605e949492ac1c238995388927d7bca079b509b0c004bab2e50154a63ef237fff2b3a3bf0b315cbf94c3f7d67164a0fb89963d24e9651f9cfce5f78cb108e6974a60b009404b646096d7f25d632dea9aa9eee1e9e88f33b136a648db84be788d5e493149aba2d5be156ed195c9a42f2b4c3bd4dcadbea21da40d07024267f8ef1625fa4007284f0dbf199608f31bf8d0c80fc86d79b4373256138a5ae27919ba88018277ed8e72f8b2dc885fe94b9557da9075172136a810f767d107430d1d4591bb794019ccf8f2ffaff13257d18b3208f717db5d8d715419eb67f70b634128cb87b2f21f9dd63ffc01a326a1ac8b13aa113c5e2606c54abc37162c405bc265a86e54847a00716cf430541d61c1f816eec1de832872848bc11565bc88fc690758ca640729b9e12ca611cc8cc15703c9877cdb9a78a74e051903f02e4ff0b08cffcc9cc00dcd4bcc4b6fdb3c2e9b508574cbaa7b75fd9bce38b4871ee7066fccbaf68fd25a0a40a3908427fb6e1d33f38fcd702fb2d1ea4d0e8f24505ab01b2cc7a122b7127c3146a381c40d885273a089b25bfa6e05fc8af62fa9a4e5829e4e39795001a9f9f95dbe0ca06eab10a8fc2a4152e3cc7e1fbb73e17490d8b9af9c9efb422146976e5cedbdbb191d141f37c353f21270a5905a4629c60254b2c848f6feb7240e30047f86a037f82b7f55c1fc55dfa3b6e7e264483dede6586ea4b07f27b8ad0fe583d1cfb62c324855007856ca60be02357e7ee9884ea9b115503ef6739d992d98cf22897357f1cefda4b4f8c75019d8852b217329356a856fcb2af5b169126b70b61da14192de5ac4c1c9a4765a3ab64fb11d4c7175c8ce6c39c467056d047f59d9f72ffc1fe4475a86ab0b93880faa1080044b69df6d839ea0191d673c3279819f68ee75c6fe9f521cc7eef223bc8aca6e47c74981c7f4ba3b2ed022f86090dd3adac3efb827d6a77f4a0cf7e1b2b68287268102ba93d51b5a163855e256e6a2bc06b3a552a18b32e75efe1c6377efc1e3b9a8b61b305b3fd09ffd7545a62bcc39736042a1301b35bd17e36f01a1a31499aa443a1ed12448f867c6c9aa7e929aff7aaa67bf0dcdd32718d911eff88f8cb56cf99ba10dee7b4281dfed60fe6c0fd8dc4e28ff94659521311bb8a4cd213f4c0cba96406895c4550a745052be28735efc658fe40238e6217acb2da0d56dc591df3b1e73c0aa31c058a6b62b9216d163499018f0c4059855a64ccf723be0bb08b01ed980d58c73379954b6d2b69277637f0e343929ba5e67985e0f20ad0344be2c9ba4434518606907cc3c2ce9ae7807afa1c6d876814fd87611f2cb88de8396b7310bbab00d735c1f3009331f752dbd43fca823b9d16ae8c20892b9806e22a9df43d269f09f4a606ae52e5edd36af5977c127b5c7ba0c0f34769d9950bccead1abb6f92820e278ec9e1955762225fcee58c8349553a7b035aaad4285edab8788fdf8c2f9dcb70d95f5e780223845fed324071680f605f5547178e1e5fe21587034a8acb8d7030b07d09e8d150b0173ef4e099df18c54395c627326b5eaf9f9b3d6cf92151ae932b3081476f648db0e150a5170d6939190ddc5bc0c6baa2136b6f8321928c7b6ed05591ceb0e61d9c87096afef9d990b30896b1498ff83bb15878e87d6153fcb4df5a6a08e0f1340c72dab0d044ef284bae6d7f72f780acbf42139a3bce61030237ffc7555025b6788a697207dc9f17fc66ba8bf684a8d9065f418dbdf1b79714c1c7c96845055f1b8632839088acf246d7f95a21df9670532784c81a73be9c4d76fd10c929011d751a23074b484dc68e67ee6455ede9c8f755b88e9d095f9634ed5b9254159a60c741d9738c783f219b5cd61e89452e5448f2a3e645cfba85f17ad16bb9a363b39a8fb5ed9dd07e131a803d8fc5ea86411e6d899c44636806d4e3f2f8fa1ad913399533603a2c339c1c592b6ea75b1ece57cd517381dc6327cf9b0453efe1403f32563a8e13269d4a93f4afaae1f03a7453ec1f9b168c1af6f796bb63c546181fd8cc567b4d820bc5d83d118db88b10cc78c25eabd28f3c5507aa17b47b95c104c47e12fb0169238028e71a938794a97aafc39c4eb7343e84dc7af92a647e6e3b5021d8e7bc70053022e252923a4981fce54bc6867d29b3affa005601a7cc80bd1b4e187ffe7819644a6814a2d35ba9728b1b91f00e81edfd0596294cc26cdb878847a0a4bb548b4d8a93d3cde9e094da17e42ab508858ace49968c9e03c3dd1a3ecd545bdd44c2e7ac860b96248ee24181e47ce93e58d74e33918b700e520336a900c395bf425d99e12599d4c248c098c79596f237693718d609a5295ab161c07759399db31a7eeb3d5f84af1504c2be69671127adb4f64868c70ee8b3d37e1d1daa5ab27e566d2438037ae303f04547ed8b7f4d10d8316bc2b52460b99d39e350345d36d7f7e0692e2d78d585f7bf3b5cd537c801f4bd88e255a37960ccbe028ccd67a0eb02708ee03b6f89288f86d3c3a11037d75e3afe6cbe8fa26f2bc4fb9113bfbedcd8fcd4f259d9d18fd3fab1b4d7db171d27b6fa252cef29011c849ee0b0b4473d6220c46b968acaeef725bdc2f2b5761266931c7722b056066b333642b18a8a9809e09a378d3bf79104260808207a0f27629247f11b6759c377ebb242e6bc24e8853817a89f902c53e5039ea36aed5985812ea3c4cac0a94eaa428fae5b62fc1f754706f1bc9fc028c8cc3233f872da850cb7ab46e9cbda133a0dbb19dc9864a1c61d85aaba365e93cb08e25e555bb935c0cd63739a7c73524400ca5c852c3dc7f584f04f3d643c30fde82a4dd22013da3035ff675a0be39e323102116ded125e144141c130056a2ca8c64b2eef22ac68fc18d3e57e113b5f71abab175565c225a599f9c3d05853c7f3cdf7b0d8b2b20ccd39f3d34785f35176962f1170dfe2524633d87e41dda5d9d1ed228af48202a32ba7a6bc7ff79e0317a62ae635f44b0e2c843bfdb7f63c4b3d6749f47dcbec4022f1c94dacb41f592fcf9342480b5cf46a6d80b23223d099c895292b32b6e0aaaefb47d8ceaba00b987a7d146785429612c3adefc1bcb1577ccb5ff20ce36fdb04de0dd4b43c4f246db0c40e758074f817cd6d6e608c0ba9055ab50c15181382a177415ad84f9583a4f536298c679f13100baeca5bafacc934233dc3386ec3822ca50daad0595d5df4d5541e22c1e054bac43c034d91aa84cb4a89643a8df4712b3f0aa4522cbcb90954dced3cedc61a5b3163fea0fcccbd9be35ec1acc8bc1a844c2150c1b636f20ebab35ab7c5a23be63fca03b183fbe9f5b14dadff2f00fbce12d6564e18bc398284a26b9552fe7ff949ef3d6bc4a892675d7b839ce343c879eefd86aaa556115c6183ec6804a124a73b0d3e8b4886d5c9abc2a0124167e6b91c4e5246c488d1857d3febc526665910faa5786204a2e39f9f00e553b8e0f14ee19c4f22bd4426a09af03cc77c4ec3cf12c7c530b66c83c5930a36015c443615b257b82fe9708e19a7fcf5a239a2fa33febbdf0ca80e8f6dae51fdc67eca3968527beb40d9f3dd94d2daf34ec7ac0d4a7e1fe95c96de727045a9a7c9ef443155084ee9895b56bc9f587754350d98fab7e424e4debcc4b1ea0dff2622a871879d5537dab0802325b97bd8fbf82831376749813b414cd25f2b31156d6afbe15b89de53876e0251e9a76abc104acbec2cfffb93384bca5ba6f2a077f7599dbdff8968cfdfbead242a210a657dcaaa55b62fba4c8c951e73450045f741720e8179ac1aa272a1b23de1bedcab7202bf2ba6cb74d5cbd24db40df2dbee4cbb417705dc6909f969fba2594683c5e16435df40b3ad34eda725f66372a9761c908d1691f45af8cca0edf9b23e8fd1026452bebd8eb8f4cf145b96c2b64b753b7b399940a504c66a7336535fd7a170d195b021c958685bb06cddc6364e522d36233b22e8227b94f5b4844da81e11208be88f1e05b9f3e4b4de5f78e13f70801f47f47e94aa8f45b36e52a829888d0735e726cb862e1a84648e5b3c797963a209cb031f02d40d568e0020c351c3813a150e28ed540ad4a02c3c0cbfc88deb5e90d47b2b25b460a395d1c2efe4e1262c372fedfeec3917eedc7d29482bc369674ef70ebfa4cfc9f27990a9f07ace863ae9e6fad3bfe17af628875e0714720456677106215add930c11043876fd12e7c13f20cec9b1c7c3ae2882c2cf89b36735fe77138dd458eb60d66b9cf02fef551f90a9255e9a8da374d977d34ba25f7d65bd934d82d6e446776770c09522bf5366f6d83938c8bb349f99c8b5a10e5cb6a6520df0cbd67d89dc07a4370dbeb1d252d240942e7b9bfd2daf34baf58f3abfeeec69a8767f7c48df1a934dce3ecf062e4774799768e18332c1746c377927ba6ac2f787ad3068df2cac6495deb34fc0f1badb163e3728bb475b62ac2b372858bc8c6aea097b993b4dea0a9d497f414af35899e6aa053bd8c96fb093b4c6a96b100888e339a6ac890ea603a65cdc7f07c4907dfb09e32f5388d0332aee385fce2676e405012dc42e2dd7a8856b53f947c3950b27de5552225bb5bb2ad53370b4c41daf947f3e9bb7e717110fa645461012dd8d2bdcd3dd775b3d7a5ad370f7c653c48e725c3b68a7b92380a84f668fcd36a43a6cbd4b888c7fe5fc34bb3cd19fa1398e5fe63c8f502b5f67ee7c3cc42fc46a68cd959ddc400013b5ee72fab980ccce1858818a2421804ff68555a421a4c371d2b63c1e659f3e8f1010cd9ebc5f6bd70627bd253f0d101f3b81ba4e082a7940ed69a516a689d604222bd333f1a2e82dba7c423f1b01441cd3f61b3c237c53224b1e9742e8192b84d96d15578b25d8ae4a1d5cbf0c8580392baf3a47dec780a810961152d3830001cd1268ba3860cabac2f741c041fdc48b50098d9a2c6dad23791ccf6cd87da6d590f2d5a3cfcebfb86b38740f552f69cd507900359f80e72b6b20c1a76c7dcd3ba0b7756a4dede88f2aa864b0b0f72ddd2a42db6bcb097f1b1ddd1891135060d3d5763dff2466d02decea6459c058c93d4f4d946401380092c9c269aa39dba22274aee662dd4b6604226f50f5f34d3193b041919c520712f37391b7e7de0c6610beed72290078a4884e20b122920c2c29643cdd62e80f19e6bc57ce2f114758681fa7e7fd5769adb2a12e2eb35a9c176ed2cc145aaa79fbd5c6c716e136d0585be5ee651c7f3b5880a57dec30f9f16d737716f6fc344e48702a94354d29123cfd8628d9d9bd911572fa8b285147f5456e333a3e1220a35129fbc628361fb29dc77de41518398ffa0f24e6b9875f1df53a2b69bf3e95567eb9db44425767cb3413ae7068d37036885e657660737f8c00d63843e5723658359922ee52daf2d69da35fdd40970eca766dad43b46dbad5bfe2eb622f7554b8498a0e1096e2af09b51bc678e007040966ce937150fe7bd66e251a39846575f7bb0e0b187103b4336b821903ab58f95fd41565935a66da4def09009aa0302b50faec04bbe7c4366a76c53e1d04d40b6a285b3fa4d717b91b261df19d52193af586afce02b9245c065f3400b46f57dc5ae9be3e365837bb51b39298b7a0390f7e102895f37512cfc23003d66902d5ed2b7cdfb9aa65220680bfbfc92178fc86fb95e863bb86f42b0287cb3e410dd253a7dc628e85c2e7d3e7bb9ee00600a0036f25c7b99dff213b88c206a80956e8b0a9d2717d2d00c6d57d3e4cb20339b9d39d20602d0d5b67fb2ff696e6501c458535153a98ab24b866e6958c0de822b0e87ab99221a5aa867c687f3e3fdba02acd31a66cbc3b1be78dd54c45cbd63c3fdda084008af594b289824e27ffe3e36defed72be20c07231d17c97006f27d6f64b969592bf52821524199a5da4a8d4f8fbc4ee69f1697da9d7f0906b57ab50ba75d695f2641baf4acd1e185096003b473a7aeea8fc283d16dcb041d87e38274138d8ac105b2676e4a159de546e033aee0729843f6fb4a873efb9a3becb9b4597548ddc9fc54a0ae54358bb21d0ff681107e2fcf2a03ebd6d0bd03b37f154019b0514ab951f34024795293053d24426eb9c4f6a09f12581e8f4e66a81dfbdcc82e6948faf5ff48d77426132ebf67ff547c0fb53d2b234947beed44d7dc47f905429879deb2c06ead41c3385ccb3b1710a1811451f2a422aef3ab9dc339c77716a1dd5560b23b1a73545afc73f8bfa98a769b1ecc4974655c36fc0fe4c516cabf6059b62192702af6026694d6fb4c2fea9573b701a563454ab973072976d38137b407a23ddcbc972943f1376ee53febe2d7019607f0528340d25e7bb845a49c551bbbacd69c652ab00bfd97f2f4490e3658bf478d4c8c17182b4b2ccac31967f23bcb4aa8e72c21049ec85bf096e0d4b167a63fcfd91b9705b9f32ae471d702870f63cac646755fa0863b4c03ab162061a0472f5657e00901a5e2654b448ce0d0df20c50c61bea7b4a1da80fe25c1f91e036992e77430159f4ba56a2f560f77aa1c16118d39a8b970e4e84550438663ee70303f826abd1c856d482d230a5aa5c27094b8c6f48ee5cca0bf7fe081ac7b2462f331e662067fa5deffaa82f872ace705464c7c0b5105de7ca9edc3c138349278e6f9ab04b20895c1ad351e1dbca939ebdf21db18572ac40a8b40b4e25fdd14795819782bf35db5a9fd753d79be4b9aae3a03f726193caa783c5fcd38b59287837ab5eddb4e3239146adc1c73351c9e0305390f5fcab2961ea839dc4948dca2014e9a1c5d75e55f168c7b40d65cf445e71ce23732bd3bda4d1fc81fc0862b1b8f5db61c523e66a9ad21d2925b6f36c98b92ae6e60301ef2021b968bb242a634da0f35e68d0836b6675cc833273869ad79c4c008c15a285730d969c2620316c01f0b49ec14d4f465ceb066a7b3e71d9b5b3de746aacacadb3425e86c44720278b47350fe45042313ec90911e8309ed0a2728547c7256af8e9de6d3702a5df05b34e25bc6af0f283fcc0f3da898a6a6d6350473dac546659903cebd5b136b359d700055af2d0c41f3f94b0e70ff38e3b8d3c636a6bf636771a8d5e9a83b996ef6a0b5b259a616357dfd65f3c514a9fcc0e660f4f15370d4d6b43b27d91001ab46f7c09358a2897ef6d81e146c9088414a551da39024643065c4ee6cdd8dd3ff802c11968691fc843aa5372ce15308f2a6540a8034dfa57313923009fb79a21dfcff39908e61fbfd00e0782d576cb0e7136e686fe56870ae444980175720059f2997b65163060786842512d8c54007fbf5470d11d3e41882e308ff092b2f072d9b5f9f2ed7eff181aa6b60536b8aebdcdcedb5ef36e71de47a66f3912038eecb68c8881a889a25969cc2c11d1d0a1e1c8089cb41a103b2232c371f64455f47cbb1d4a3f240d20f8c8fb8c2b5f6e5097ac39917710948f003198b8e5ec7c81ad167846431c4c3d026cadd633ee8a2d25b6ee4e95412d33a851a93c1880b0ad028a449a74198a7a0b6a1142afdebc88790885b2df5252d13f6f6f86a30b0e74378a39f5b84e92ef9fe28a22cc73c2fee362b3c9143f3d215a93d638e043144b4d08a76804a42f3886442d99ee6a007a5c9eff088dee6f1a1a4ebf6bfff829ad72b2ee85244db470a21d47173134fbc2797f44d209592a39f9a57fd60076133102bb04cd604a75428ce0d5b08268dda0794d334b5e17f6d2618b5fca53477e321cfaf26a4a1a4c002add0b3f4d45f589fc88cf83ec871c7b8f501afdac857c0a9d8c574855b515d3e241ce52cd4834e4560fefec304e2e7767826123db0800d871e9e36714a532f6395b39f78585b0d599f1bf1ed6027d433ba35a5ba4d562d88dc4dd9433aa0704e56f1c447ae624a5b5483fef0a5fa127a7b41d67f6b0de4f02fd9e6188ed7f52af8778c016696eaa575ac2d8140bf6dafe3136b7f3011402fb411476d429855fbc230495f44410cf657471b0587d1939fa182645a7138a3aa110402e13958c4dfb6eab8ee014b19e39ffc6ac53046e0694e2e23d69562565272bb8886c910870ddb50cf1cf5799e7fc6811bc3e2b9dc44cda527c3e78b4367faf26652757f3e7a104f918ad0b38ebc9b6f72a562611974316d3d3bc0a65657c82c71235da4950c8a3f8ee25b79f1e71baed9affd87837d76eb62a3ef44ef165daec2e30278c7a7ccac529e6f2057b0626c148485546fac038bf646c19e5fc37527cd3e854403b0d47ce60e765435e98f812a3756931e3db30a61d7083883518157015d8f07046c00db6eec03359fbb109d330a2edb6c909fd99334cc6f7cbbe5f56d3147e271c9596d2a3210fe75a8bcbccc7a008938de8e1b8213092d5fcd5cbd0d3a337f804c9b2af48dd7db4eb08b61913a0904b5b49d1982acb292a29929712343dc8771e2e0b8af0375f2ba3ec2ea9694801a5009cc1c152eaeee37e04626626e112be77a7c8d61b5970d9adda2dc0f44d3e2d51c052302beb555131eaa2ab00d678e93d5c00baaa105ef1af134d7526b17eb29aef20d66bcd57a641fa7ad29ae9429af8735d909f57eec89506723580274ac629b0ca165eede97bd7f35760fd0ff576d66d2a68b136ef59f41bbb3ea9666742de049b4b17b1194d29ef4df05fb95ca509654c83aefce3c1f95cea25d54bf7bfcf4afd4083b229fbf4b2f5ae77791b5634d4fad8aeeedcc4edd716517a19be1d02775cb63e30754a881016dc15da4839e5a9fe9216dc804742e4087d5845c9002aa6d3e241cfed6159885c511673870324c00b8f684013d333a8473acf90354e813022eb5af7be4d2fb9eff49da192ed0d0958e3e8dc2c19fa81886a8465d6b2abb3a9707854017eda5bb446a978db368202ec530ff4ef698836e3c65ab0e41cabc4d801c44670487dcdb3d6eac4449cde4248dbc990bc39de07e85ab8b4a83fe43b49a18c4bc264646a31caf93d6fe7cb30e4288f83cca4e71477041d924712334d054b01a99c6c6f3ba25cd03e505f1a38ba1f41ffa9e8eda402f808767a500fdeda6abbe6196209b8e85b9a9ffe50ae0d8e54dfff26e79740b83e33b4faf8c0cb605f19dd8129b19eeca6d38aba8d7cd4d99409e556a77abae632103fdbcda41356fe6865210b1226e5b5b66736ea9635575c52ea0ed23989d904a83addd6800f4f11e2f42631ac087210fb3310c148bde95f61679d3738154c36bda30adfe83739d470ac082e0d2deed5e3e63b6e430f4803e601bb47d8db8921434587f7b21e1a7750a73f7598ec3c369eb7d8d3dac321e4593b34984c8a4a70247695f07b9392a0759213dedf3ab1f9ef608cd55100a85093046d66f8715ba2595941e33b241be6c8d6c8258c2f94f635bc08dd361c4fca2741ab0d60f8318c4f9a02a9ea6ba35731e0c26bd5b43e9db24dd157d0e557889e640890a9e494d59ddfe96234e139f26e4b13b38b5cb06d2c9caf3699572ff572930515adaca4790d6e9cf23d17a62ec5047e66af9d0b7edc6d866ecdd0fb2fe7f100679523ad47efb5757f79a26b7275a131d099fc65f8ac445d790623bf8aa60a3673102c5563c2c4a3f58a13809a097e52a0b5dfe89ac7b38ed3e7064d0b387786cb0f50f3c42ad5f8823cba1a796e6bfe6cc71256347468fd7edbc9f5ed40340326196008b73777791a83226951def49d2bc63aa12d4700157fde462d20974b12de267c235afa0a64f4927d9f5c9b882fb943bc75fd9f06255f5d7ca6c523be17701828bd226c878b0b0469d0477a0db85665d62eb477b355aa205154b395d7bb00b34de955a5c7649e06c633b23caf2b276cf4fd727f450f73495a80f5e35544d2314e1a9163d812b0a79208b1bbebf0b4cd77b9ed8e112ecf5db4b04aa00ef9d266859143e0ff138825f7094ee22a9768dc7c14ee62a1c655654166a419fc370d6be08331f779ee3254f98304786b7915005cced3ab7b8ea515ded4a94edcaf36df696bf19c2261fd11887045bbcecc6d7ee9be0f6c6f37de0e609735b0cb3322bced786fa58829fccbd0a9f6cb0c0a8ad3b582a6a67c2c25286f09d6b385bd4cb3169b6bda22668512112beee51bb8679ad0f0b25db42825cc8b614f36357f521fa71af961a1f8b43d568d7a6b945d6405d071e0e0a9118a65d4dd16aefe587684af5dff749511e921dd69dcbf9bc5c6e61ec6f36b4f5885db5b56d52daea11da1e4fdba65e93b46d40310c7f15fd43449d3c7401558e44b1e2350ec3633f5530e770039f6e2d3327fff08e5356ede3b988f3a310c793796c3073ced5bd4a646700ea8e0fea9d2d846c83751316ed5cb5830cac327240722b339e51fb34488c736ca0be7648d3ca93dedff1d140ca4b97148ef07c5950431e30933fd1805f2cced6958d960804dd66842c2ce831bc23b04ae8ea4f54fec0825244ab442bb5cf01dff6216158ab4d6d49a2adb553d616fd499cf53fe5c3f700186c9a8a06866f2bccafe517421cce6b9003e311a9291d4411bd26225f33935a5c457ef10abd1322e285a1278afc284b01dd5b2754365cecfe2a532d153b4aadd73f5d46171e837d3a78034a7b113f4f5c432b14cee68263ea51fb9f6ff9b2425c09156a4cdae2b2cbb0268ec3687bbc0d1b277bd37be883199f101d89b9c7bbf8d2ea64ecf7d5d8894adb1bcb02a26a5cb21c2ea16c5046cd1b9a7121c618ce6ae79ad2e8ff1be461c30e68d525bc409032a41969d878e95758f5dfe158fb9060321832cd79065a61d84349d7907e8ab1767198b490b7e941bf6685b4d3f670b914ff9dc0f380b270df59905d7c128341b1d63d828421176c3042251d93f7ebbeeb110e45d1c90790aa86a26561ee1dac144abdb5a95e6e637fc79bc7added2587188027192f7400009bce59f915b01c539a731bb8e9813bd57e6ecefd4a241e924e32d107c55ee0012b40fb26dcfa7e4ca1aef1aa8ecb08f91998fac0fe99c8ce04c62107a899a04e5411be20a56564e81a450683be904c9cd79f35bb87443753bf0e130c25925b9308e3539f5a5df1fa419599cd360026da1cc1839b6c2216038e91caa53b5b7f552a2f63cc209000d73aef9e7cf62e1e653050d7dba0b5677ff709dc6bcf2b1ea4f6c0cd14db72272d8a17a7e65e94002d62313fe1fc8251a1e6e55b029fdcce72e836478d95baca1612c69ae9cb8d43b7f35e6583ef92f8d19ac8c19dcf6c1d406b853be3d4e342bf082845ba36da00ec8e655d9550f16dd193089b300f7c8be90473051454ac105d985fae2a9e1e7e594fe8c249d533abbe31300dadaad420cff81d7564a498216d5cfe4571be624530201b288c28ea9e724a7e280479dd8ba8c872a652796f2462bc8eddba1991cd797749d4a91231498045660acd2625d2ad61b6277c27bbed39380c731172fdb24b4550d2e36c24e86b680dd0bd41df90f5360170b2024cecaa1769cb619cd87ff943204fc4d66534ebdcce58605e60cd2a04bea5b7d4b5addb9009dda903bc0487b43f48514499ad40a3b9d8acd5a355fc752cb55d9bcc72d667450a9a4a2441ddf8488a7685e9f603130f3b74e3c6b0e77fe0b6011a2ed42a3ce92b3339f0db836b67ff40d88243e9c4c754c4618b9f41b941a69d8fb8766f36b66b2b8be52be14adf4dc57015d359c00de7aff8d82c9eb50b68ea0f0fd0958be1ee23432bd0428c84c6cba2577eef8fbd71245d374efaeecd204c9319fb41589250f9ddcdd830f141a39b0282532570ecd5b724571449826bdb82ce829c98aa66ecb8203d7fcdc794957f63d342cf2360c897c7896b46b19c7f594839d7342deef80443cd6e43550da5dd130adb2a1a131405a5446cb1d66c18cdf0f05038ca2e72f1e6369d8407d35dfc17ed159b7ab4ac0442a13b503cbc6a66b29f46a7c91fd4a3a615b3db311e4fcf6dc534615a25913085df7b5f0cbddbbf1301b182622da53fff69041246bed96495deace4d8fe7dd265e04c4f6a79a7710415795272b9d0e90717192c32924ecfb20c245c1f0970b25fabdcef984a67de5d9ebc111398d1ecb266c5fec8125da39f217de948c4f64200e8876ff661e89975a422af1392ac474e83d21ee2c7d1652b78f47a08e256150d678acc804052645cf13f93ebe4ba3198fe36ed2bcda4829b6d4c037aca7cbf16993f9c87409df309950bdf9dbe445d034cdfc1805758a734e309dbec16bf9dc615f3492a0c5905c363635425c6eb02b6430677ee2ba79a38bcc05c9d16711ad915412f4424c3727c71a01a6e94e5ff65a01dd7852283eb4c64700e444b456581f60628725c2d41db9c3bd196340691738446af75aa6311b047f0e918ec7fc4e6bce383ef5ab4e8b60282a22ea79a748bf35988eb44e4d7fb576c966964f9e9868b4877221b464bb08659486a61137da8548148b206b32f7587f1a429d1f0f58b2f196ed26ef815854f1535d6cc7ede83f45e3f8d19cfbe12520a22f487ae119095dce12c77af8644495a52e0c4d3c06283c65edc3c17ca74346b0ece8bf6cbdb507d95ef2e14d06fa21308b01a0ce1b69505a22c3f28520230af9099194ba1e7159a5849deda955d4e777d27120f4b3722bce5f5898b7d404924f2911fff59cc3f66b444a6593bed841a4695e46b76ed0645b2ed9335aa4208a8b858bf1828594b1a24dafb6efeb34016ed913ee44f3282aeba046b54c0c2fc936f14d103afb95df4ba1924b81853bf3b10c1c0c6f9bdb942125b326ea00a36baf1e15e145ff1bac85936bd1761930559fdb17f194dbc34a05a359ecfc658c971466126d9cef44c22d69e358c27385a8d03e88294654f5e626c43794a7ed350b363771b3efcd421f3b4bb4f564538c8adea26486cc208095a3c5720443c6f68456776e47e9f43ecd45a5aa56f9b319fb9427c41ecc5a8e855ff000414006631f918be5be9f9b283d9d34820517978f25e7d2250e19de3137bce632cb2cffed1f6c78e0f70ca765feb94278109a619188f034750d4de01862d4efcb2b5ab6df119d538c30c52971fbed800dca305832b23b9f08b145cf2a188190141a394853e5e7c0bedf2917a054f7ac718de144c8c90a0c0449206caa967f47a9e8b7bcfe95baf6538922d2377f56e79702fb5c45dad900a2f89dcbd46fe05311cfa375a28d4121402699a877f034244f41e038605852ed0f4fa335a03019e0b2633dd40b34d71b7dfa6876f4cf633b409ea303eb03c9d7caff9e919d25d469eb9c2087647c13447149fa758af36dfa8e57a9f55cd0796db73c2408785842320e75a04dc2656b9e31d0b451f9f69848414afafd88e2cdaaac2a776bf563fe5375502d512952e8b14271d4e8ab55060cdf6ed05476b18315117cc5f89601bcaa6bd9291ae5d44e13e9662bf65b13aad423e0f3a869f8464ba5cac8c2e2361770c6d879ab94c55e79881769889f303323974912d3baaaaec13747ac7ed049da7b3c71b8d7fb1dfa81e3184c40602a780ed7420823acd883e2ab247f22ccab7f195bfb90b9fe22eaf15a699a0b6095d465cee6bea959136ee7260ff8f87229f2a8b60b8b549b977a47c12ca0995554e4f1be44d4f09404917643a3182761d7e23e7476ae86a13058e5c5b201da0d8d21fa02e4103306a48bd95f0abc594ad85c69e267c232750746f519d611374a942455bf9277ef76232164ea7e737742b45d46b43a32ac7d60169c8a69fe27c8256c01144625b3abf10f1857940af8cd492c34cf69b3eab8ee5a261799b8f6241182be86134944bdb9caa26f000f00e4704862c2e78075465bf979cccf7584867637ca57a7d307f57f4613f8f3c484c09f73274ed3d0ae8cd139075893b26929cf58acd0abee76a955d5f33497adcf20129dbc6c7d5c3dd39d860e350a4e426290fb255606e6cae3d1cdf6f082fef95fce0062e6749c39ba40fbf34f4c8bb917ca339e020a55b90b955b20b2708add82aa7a08b0b525df10b77ba24fa0b44f7a819649dc10d0ba2b80568cff90548199f8d4e3c0337d343ee41311e1dde288fe29c432b0f2fafe9af02f08840666ba9d3087c7335fc062dd3e64e8eccd0e03505fdb80faa0194c75312ea39b65e5278225896009ce01612c3fb6756aa7865b50f1f3eb286d661e8200e13a487a70b924d7e3ddbc52c7ae9cc22c5650e201597a2fd5d0d6a8da81bd51782f3d5d5b3fef8c96b0a505179017d062f44814928ac8439fca9711b2bd3f6dda7ca3386b05b2aeed53875551b196c664dde420265fd1f3aced88b61a56449f041c02b573600cfaa058f7c95e286b4332b35c504fa7d01dea788fd5206e55924b473b8b3a39d3905f13944d1f2796fbd71aa2fababb05dbb7d8add6b5899f6097ab8cc6d7a139b10105bbd8a7a9b41ed2c83dcb1bc6989f03e8e9777d286b36fa2fdcc28029e8d4633fd6eb47977cd932ae3dac93cfb7e84e8a56ba7caa067f786020f94dd9d8b6f9c0fefaf3f1d3dc546f36bfba6645b5774a6ecf88570adba311e62751cf6761b1c57709c3a59be45371d87d8f991e3a2855082ec1dd864ff22db8683946511aa35bb31f5f1c20106a847587fb351fa0af5c4e98bf6be2ffc686db1108b4f85e38b530880469bbcafbac5bb6c5b6c2b3e9e6bb0c07e0bf5ac3b950985f91edd201820de8b512027423b3dc61e84332526111dbbfa344b62b78ed42ca9f6ce8b04ee64327f7d8d80be1b1f3c876ef139a80812c2262acf655f4b7aabc00e2ae1c28d3894b6b17787e4086e1b4eb9dddef5c8d5cff47cd0b08b24ea8a74940199fa06f22bb3ab9602ff29770fe4c59e2e6dc73ac46e87653bda36b4c28d34f54e1d6eca3099df553ac05dd1fc64bdea66093e1bd3deb8adc2c4e683c07f56620168663371fe79b87d2e866f784a5f8e6a638c810406569f42d5aea9e3c213ba946bc21acf085d359aa0b5d24dee03fb3e4288aeb2a2994f80eacf0701ffcfcb52257d91c0dc323168ca4e71fcdc7c808ebb1f560e47ef62828c1576e305bc8965a78d12cd5befa53fd9693835f8bc8227e4ee549b7f429013512045c49dcd6b5f5157f415335b587ca010a56169724e7b10ab13b0499cc74350e865d61bf6dcb298b865c93982b502d623531864fcaa22a585c7f9d98899e5a869debdcea10d3861fab5ae1f1f13b45efb07abb866eb5477e8c0f7b2fff11015ada01139ca1dabe5218d9e6b5e97fcaa132f9b36550b6fbd2d047b0bc8169f8e9e8de11b25d02e30672807ca927d47235a771fdf0858778f357a2f85931eb10364692b513adfc222d2a46aabb4c687a4eabfa3e7e84091f7fa200d3349c3291b26cb65766a9cd20f40e0dd32c7a5b00c50cb448c392e87928ac6e5ef3a872f097d9ef76630b8a8e2537f8a747c213bd7994054b2eaa747c0fc02dc043fa2ad73f3a0be8627f2f5d712352e04b375a5c9d859dc5aa8a964645558e81fe810d26651628bdca0f64dc62f7f9bd3a6b8f1afd43f15e596bc93366b99559a556d9359a1b2a2fcd0dea8f646a83661ef2822290d7bee20655230a338fb430f56ee254221153cc3e09fe38c8c077936a552c28357128a319ee8b73b387e2542d60684ba91c305df6a343d80af2372b648eb5faaabe7bf3f65ae4ab7aeaf4355d6a4f03495099e2b3073da23f394423c44dd0820f2a397fc04c23283041d39505ffc6b4011441cdc0c55443fc140a089237dd40ce50ad2f3fc9e56e3903576f632203cddc39c877578e3e4b636cf5485da4b5b5a56e063ae7600c5a278c1beed2f676ee17eae5c991a288dc46c09bc49b5fa3be06ca0efa44c4f33548286a934a4c2526dbb9a0ca03e3df2bf80254a83cb9e94a0aa2c51020dae7322022e21e907b7f86f77bd7b03300e2b779ce3031f11238c14ce371936a2d802313f01e85eda9dba3b8f188199c96d351781c501495e11cd88e0aa08578b587c8cf49b10869b34b22a05c46c9ec1e86ea45698f3ba08bc028a03769555ce0124abcf4680a11b423f53e92c7d8f7c201d03c2fe985ae8aa5d61cf3f6bfe0d48617d0e46764d9b48844cd3b066d5708ae88f83a74828e1ef14a1542ee9cc6dbe3b0e9f0a00d675d0e9022030d23e65275b4820636b7d4cb0dfc01295a08d2d00e2b362de81dd4fd4989c6585dd4a142568835759ff9adbc17cca75abd9d0265328d076563353043d016ecf6c9843fe63e23967351688cdb22c16ad8f0d2d96900221a5909fb9c92856fe534a8728748a00df603e554092f63317edc16a51da430aa15d0326bd49ee101cf769226925a5e1c810f7773235395b386ef455e8127a00f8db717c1aa56968018ac9576fba5402293a0fc80e290d72c8ba84e249c970447b5a6827d59d26df889b3706fa452fc9942926abe54e40c7f61d335efe0c2d5ebe747e04be6168b6718a978447974bfe1de01c15965226b1df45b5c610ae0777b31b80c349afe477b4eb661910b7e34cfb587c0f8cb60f08a96a914d317f66dd5bbd8766b74e456ae7b6348250199bc5c0abc237cf28f6aaae8c47daa7c92d83088206c686192821b3ea966fe44d3c5b280d403f61fb1ff8be9b2e87165df07e2ac1b10e3f0a63ed569b4f06f139b1686af08a6decd91d56679993230ce58789b30f4f3e850ec7663d9dbe5e1f24902726cb781ac2160fae500899b1666e8a82068a62a9829579e6a03d7105a71dd738da3df73329298aedab3a0de7854605eb773bd5779b14420e40bb9d7b28925620eda217bbfc36e085ae51eeb04d9e006a5ec5c32475fcd54122719cb55708dbc745461d479ac3b3ea1e009babf89a9249b3a7c7ff4cd842246ce5fc9b765d5df873c7648020de0315f161bfa9babeb3f642cd37ac9e911325442ea9899f0560e4686889a5fd68de04f37ae53233d399846d3d0fa31a12b3f0c65ea6d2df1a279fbf4a4306ce54e538892e3101b0bf1929771563aeecbddbfb0bee64382245a8a295dd178a8ae8b3357bc237843ff573be682b936f528098fb394a4076e9c4e647f3fd1b2a0771fa05d03e135d935afa4280fcaad78164796dab09c1b7da2aef50c48bb574c1f1d7b6ba3ccae3b2e1315731c9bab0dff4220f236c711b1886cd6160758009ffb092d796f6e4a27d316dc3b5004b1586da4c63101e98396b13a881a37b391f3cb951fff4aa90d6fd0c61f12d5e6ef51a779933e46ff9983fb79f9d9630d7ffe9a9e246b7a402f48a62de6e51596193f6726d077573d3346dcc3605a8f2c7887d71e8ca3d7ae422bc2cb16cafcc17089a7913b173b1a500d311c6ed73e6a1aacdca082ca35573ba2a8f9e427ff393c0759e05c2ef68f95ec1c0f6ee1c3170ecc197cf100958a4cb04d99fe9002164f9ff232b12ec8a4ba83416508234f52ee7507308a1f46910986f57c3816dd32e471b9f363c03e46dabdfd8a58b33d4f5c9ce14400abb0aa217ba218fca7704c713cdb0151f1c26312706a69ccc82f6c6d38b5ef8fefdf0ff725f495dab5cd9dc1744d0905e2ec4ed50270f886e13dcf6dbc231db30388e778ad917ecaf831401e32edfcee116d28d5078d29d7d8777a7cbd761e1dc59c7ba6f43444883afea5b5c62826d527c5a0ec22eb8d869ea55df20e660f43d75741ce9cb4a4a7abe1d2a37d07844a1c3dc0a399bdeec86f9d45b6c9f7f0a147b7917f3f74f1b09fb7ecd82cd6ab78114e5c9b7137f5e8cfca95bd479da1e28078ad43ab539994bfc3a001ca9ebaee86df06d36ae7523172e3b45922e4eafc03cea12a23ce8fc7d1691843892a7ee93ca0e6223cb153728b48d3a74880d9c2bb3be50c1c4b8d8835bd87cdecef7837f55f5d5dd6f152fa228ca625b82b25d3872bd4f6204bc60622bf4716a42577571ae72213b71992fceb199efbdb5e487befe511b04854af1c4549af00b4471b06f3e7733036eac93d7aaddaa2419ef771677868559c5e0f377c50c9045c5c471459c23c57499aa3e4fdc8327ad0edfdf9cbf43a8c72b6d95eeca282770c8150602018fe5bd556cd2a94479868ac2069831bfba58eac8793cbee2edee362727d378cc3797839e39f5bc70fd1e80d9fcc1bcab08a310eadb50221bde5319a9760abf1950a45f43d0694664d83f6a6f73d1a4666854bb7bd3b17803da41eb69f545b26358835ef206fb671235adb465808057e98252233cc42ac22c5ac85390f6937039ba217f12d72322662275e001310ec7c1b0feb2bdf251263a280f4f54ce24dd0255ae396ed7ebdfdafc3205dc8267e89e3e2c8639ef7f6f81f9b5ad55dbe11ed52e0af2ad71a7eca442e04b1d1c0434ed0641f23198f9893b8de39042f4b22157bb5988a25c2af76994df700e5d512783f2effde4def90845307bf1cd731c13b66a4dcc5f25829689e40446f6a47fc25d329de18eb703a26ec8291cf65c2de7a9721c0327d17dbff516fc3248e4660c6d44e48d7cdfc7b05dc93d2f9b516ad68903d96421e21e509b9395af22d6008c7015e824ee62f5b2fcb4879e65557fd9705bb99cea488f885a8d2ec91d7ba8d1e3d10d7cc90c7fc87b09d3b2fc96073172692d4ceb0c5f8c8fffa0a369afe7eafa3783a01c2a3b39e1bee1058db9a7e0ddf21c8a83b59be32aa4e5f13cf61ceeae7c794f704b46f029b636079f580c2d956c765c05becafa5964d87e93d4ac76da154e7aeaed3cfaf9bb657c3dc01b246ffa4a407f9eefa2bf055ea83c55c31e66fbf2c940363309dd0012fc6b13cf14ad4610a756338d8d3c1680df3990e3078531c8177b274df416293e72ed5ab40f7f234575b28d01d44758f22a6d4fa45801aec0f285fffc350456139e5a36106d9828a283b576b274d731dba1972a02b898ea1c1c95a338690acbce938829f349d4be331e892f40ccd8dfa6f4a7b4a0d668b63d0d56466ad4181018393fc05b02ea4b378537385b20397023e258942de26b18126ef2b17bdab8b39bcc3f02acbc3170596e5627e9197ec421c31fa2d91105556b9fe2df1e87ae0e695b9bf14ddd7888ff8181dcdb43ee1e5eff6a65851c9d68123290c8610829ab3b4a590d6090e6e59adca4977d8e49fc8095308bcfc14e89d26dc894ae3083318bd06d12a845f06da08d17bffbce113c9f95cc2fad41a381ccccfe9a94f493fcf67a0075d72f5e94a31b865ea93b63d9bea62f1695e15ef64e7e5fd219ef8eb764a6024c62c45fe13ffeaca8c9f25cb68b815d2690695de91fe3b1a5dfdf74a7f30916a9c641b075f022e305b271193c96733bcdb2a87e0b9c140b5019261482b82ac3962724cb3eb1697479ba1f37d12bdfae179ceda2af505b502d2d4a99f40fe4ff368cb030cd4925cc67c2c2f06817ba0ba3988fb770bdb689a8dd75af3b38e805bce86cbafe6da26f070706c6ac5e0ed3bcf067d3dcba5804b201f5306fcc39793554a4ffee749ac806a8fdb3825e77c14bba5163b79b2945e727bd6763aeaede6b73e7c9df42bfbf307e9afdf17fa92d5c40af66a47e41cbd6fae3dd41e67362442e87990b2734271ad73584a81ce8b669b3e5bb4e6e71a209e020be3b0188ee663a1c3a94da14f521400ab0a2108e43c05ede7c5bdebac5bc1653c4f782409120e30167ff81ea4d4ecab9e8b7e4884f8e10866bbccbd351748efebd9d0fc433bcbbd67ff38e375fd017c89d0d74da8a82bb4d6e3347a787d2c8c79aa10e8ea0cb96fc4c26a4f00939131cdfb26c17c80e9aaa1c1979d59e5c5df90cb0a8eed91a321cd4af29fd5ca8678485e611e93aaa44965bb83d2f68172100ba5e2d88c04784a13c3314bcdf81b02eebc9348f06ad3d0d0ad1513bc02587f0fa811fd409387e39c48f7d7bac6fde3034826e5a1c9f6e91bd13a7b5d1d28aff2c4a619d86e75f57c30b12015bbe7e00270a452f6a14f4a68ea8e00b28b25607928a3b83b94875b4c12b0106bb5b69fc94360a0859705e57f51228df91bfe705c1cb4579bd312dca9aa715b65e02d9e452aff2739b2a3fb0b5048389d3a81e9da60b87477c8f0158b22fd432f55b185bc1de18114c6f7341dcf1929329ab0c93154d8109355995e138f4040e7524be69e519de185c341ea2ca772f3b9baecc53e7583cae52fec12c8020d8d41698e9fb108362d2511eade953e99cf41c89e46aac52ce7a92480bc55fbce9801fb60f621b699a1c57ce9435e99138e58293fd0aed0253847aec157ba9a5c5037b22b1d02925dee89773aa27d681546843fabe8af9f8bc3920424ae0ad9330c126b0bfde07b9afbbf0b921648df5a48c0974b7e44ae66dd73ee0c1ccd05667126cde910910b0d72fed6f3f1405aa119417488f3673d50df39d13fcdb2dc6b9c4ead20130a404e972167ec26623b0f57679ce2e419e1eabf3c76c9aea4c0d6397739abc18360cb2c69109de0a3b91d85d07d420eda13bc79510de939ee64b45c0b2bad5e8dfab1eff0edc60b597d67328388c3bc39edd9667eb23e2ddb8b93a67aa5e6aad8c579608076b4fa11a4668e8c3fa857130e6654c9271aa526bc00229fda77ed7b09dee5e4a18c70ae7655e6616ff624a2e26c2fdfb9b47ed83bd6d9608ef46ba9241a193df857ab21e196e9a916b46c3fb03ca85223d69616b5e4eb4cffbbd0f232613cc3117785dae679135a0d29bf8686bbec49989b0a581c8e37ab581c070658b5f448ff934562ac3961898f3112423a9c1ee75d2d07442ffe3560768e5df686049c7f74d08e9ba5a7fdb6cf1302cb5137f0982ed3ecc793a0aa857a9f13fd0abaa383b4e5be71850764732bdfc1518a45172c6fde773881e1144a8d315daea4cf80b6887d4259adf95dc6e5e688ad3df61595f563d6db8084df464731ad95c9736cb8983adfc4dcd7f4c3e038a57aeb61d40a3712087a1e1aef42df33fcf578b0995b77c33cb29a966fe4302d3f0ee355f809936dfd09d27d47472badd2f63ac619b72f32c7045bc858c6d380aeb2b3391c3c0067e1a4e23ed1adb94bbd1b4b8a4a354427fd327b12d45856c6a81ac50238b254e027e2e78ae7d84acb77119c317860e89f85c23497cac94a2111259fda8aac88f4dd53a8337ab09a18a306d71beb1b6889378c2b08df71689e19e3b5211c855285e3fa339d3a45e856211a461d9a7674be41744457691fb690c4c90ef7fe1294178a09079bddc7ace9c7d62f7ab7c2eb19d3128dd9b987849cde6653b71c4a9adce1ef9fea2bdd37c1ec02514385c493c493ccce5155fad1c355bcea3fe95e8acc0a5846e6623a70aa989fc7b2c02b6b65bb817e893ed14428a3d9fc6494b9ec9a6638128d1de15e9116ecfe85841108bcaa43846ea7dc8a57241c2a04f336e52764ce8d53a330e967166390e997fc0ea26057044cdfc913b04c11527a76b7d24389771e1de5b0695364df00f4e357a1b0d66eeae728eceb8e23dddeaf86859c26c3eb94e8b0387d48763bd2c2c700a866753c0aeca0a21b8c4d5c1ab4f702ef1fc8273a190cb854a89cd05a0585376609eddca9fc079f4b015d162f9bb214e564366b1c65ec78fd1e413e3fb9193690d4e19d8f97c9bce6ced1a764627e805cf102f35320701c49070a0cb7d63f9f48a87a1b39ef16272e440be780f9d8bc57c4aead6a1f0f49d78eb46cb1f32e49c8aef11571f1274d2ae036feff6c2a095bfe5e6f8386513909e8fb74b6848c4b70c4a8b26caf9add36bec0537f9b213de9893350ce647406e81a90d6d3ae4a01c9921343d94e99bdfd4b1f8e419eda47c30623025442a55a8807a43ee28b091216f42b4c92f7800475de1e6b72ca0662b76f8f09f6a309f54106cb9a50d0045ea46b3ba7ae18654748ce313189c1b423719d5d6d45cac5d0a7400b489e79e7d067eae76fbe68d41ee7b5de4274fd67286502703dd0b1f458c0afddb4841fa8f60c9df1d80809b252a23e26364111906ef2c6de0661c5900437401bb72a2fde47bc6d36962eff0932e5bd1bed51d0562dd6f00989ae2c9aa871e1e4430cdfe7b03061816cefb80d205c455c8cfaf61be4a2020990e46a753befd034b8ccab165a86903667dd3b35c00f6ad7742bb55a50358d217cc7f7d80408016064c073a4750ef7f9e8553bc61c7a850649a2ef5773e032f8963e4e1aa17040093570314db93437887330f7b423fba064e316053e7818c412a112c78bd87596871b255c16f8db5bceef7a563163a3fc9974e899e7ddbaeb479f1ea359b691c14040407d764f7654c24643a1928fa070dc5b770a21466e8e8b9452bd49755ee0215b0844cb09acbf07e361c7f7684422803d1a6f25d2047eb72c85babfb9ddb19507faeaf5d0de702d676f7ca34c324aa9d4df5e65b138affee1104ca82197586c5d7c03007c1bf0208a31abe4778c8cf8770e486e5c8d015bd0cf1f2debd684e68851d4f6261046376eba58bcbffa2bcd7dc777b28125391317acb53330aa36e9112354eb282e88b857fb5198ee242c047f68420221edb3ae3864a319a4143847db0128052a099a11eead83b92383dbeb4d144d928e0fb162c6f747a9f75ec38cbaf4ce12e6be50b2e7e693d8fdb74c0a1b503de61c63d1dad339f30c4603d93ff885b784868eb1526d391926e6925d7b52a10d348c0bb7ac85d23d6fc1079db0275996836dff33d7b5118cfcf165cad389c4b9b2d95ea1f24d4f2a13062aafba0956cafa218c6f627cf3e128451c8a39a88fe02b58a84d62dbf850abe48cc2109ae5d10c9ec17ad263c49ef14330ed7ed41d211565bd301917dcf56f4ebc0f1506b1dcbfda1f0dcfa5e7d7a39c30432663e120ddc7cd278c4a82d48999021c4ef3cba54231b19e428a1ad8a620a8a8fe0f89675e7b6e39e7d29839c6553314641bd88733656f307b9eba06f32f4d6fa5861fc966a0910fd375cf11b85b37c4e07aa80cbc23a53d6ba93e955ff017d5072dd05902ee30e23b145e12118edefe0e46c101f69b832a2bc56fd5054cd77ddf3d851164da88d846ed74e15b4236e2ce133a94662355b5e5467a08c6f5afc1c45e6be99b788715c36448810e15c33c3e9998527f54c5e819c89f576c33af060f66e24d6b0a60d5d9364d30c9c4a8b6e4edf6cc000de77efb03fc5cc777f320439f44054508d8719552bab42d6e5a6c542b274b9756933203206ce51e67b20c163dfffd402f7e3a10f2a8713f3d89a1e5f8703c2d9c0eed6c7a02fa71d5800ea6fe2782405e475c097255fbe4cbad0872082956ec70494ce9876432261733b8c7be84a5cee00aaa48aba5c54ad16753766ed05366bf324aad2fe73bea69692fa4996342f245d688cc5116ddfd74bac45f3435fa40887f154263de54418f7b5d5bf5a0c726371862aeda4a470ff329895f2c873d773e493be4a4e008d9608eb6d670f7ab83a76031ee812a7d84d9b78886db0c0df95990b88750434493220aa43ef2814868d0a09cb620485205f947075d6d75daeec2b92c8e7937c2bb2e65d80aa77c246132aea4b4920c275c388bae77f0efcce0af7028a5f4f844d129bae7b0e7888fbd8739afd521075208028555421ee334b155bf0fda3746fb0002503c53433194bbdc057607295b3468e23734f5943a7ba463bc0b5fc08a5585ff721b45cafd66ff30980a265acbcb459b437492606b7b16acc6959b7c52602c5c21b3766f01e4f849fcd302ac2929d42fa89806de2cf7664b3ae71a5144aaafcf7e96e598808e0caae731484f8f74b1e24092a75508f24a973e9db9b1ce433841a6bafe0b7f0e9f618d5bc7b7afe07b56a6bc06b3d4325c22dcb66f3dd3a3b10e3a6a2c71e7d0d8a99cf0fd9e09e0944dbd112e0438642cdada2e80a5f4dc7053284a283fcf2fcdf3cd540aea6062dfcf1daec4674fa59fdc906d9c0e844e6fed15ad7a80006c3a0264efccdad904180047e2376ad64261611fe18fb52216b4a0a0b4d70ab80f94da8fce94cd399386b7cf9682c85aa72f2c8fd1d2461f2f26c0185fb3b3e68dbbaa75d660894a32dc8e15d8989c0747afe3c5a25a82e30109aefe9b2093c7e308d553f981ec1763d98b57f98915c7832bd5c026f78ab04fb3f21b1f6027a412ac33308b573443866501c5a29ab26a8b044aaa0bf8928986d7ac97a16eebfd06c2b6c685b2ef5a13658582cde24e5d0f2bc787b9355f4b2639da47a3ebdf850a8e9766f69397cd1e68d14dc7fac0f62d0e47aae7c5907464dae6aa4cc01f3b859f5104098c3485f91bf7e6652d71765fa8da1972095c0ace3e91104f36fb124849a82dc74c094afa734326a8b9d41e58a1c4a91290fb2b9393ce1eb92624b1276f735c5026779af6823f213a7da0b4acb0bbd534b507de0cec952e247585d2af8819d6372b31370153a34f8d6cf28668767fc9729e5bf0e6668c679cc730976957f6a7bdae3b851db197ba3ed9f063d7953e2d589df0f062122047c3ef88724078d131cd1fb3ab1efd580ebf8d3e7c017858f37ba530849e9b78e134bd34742301aabcc15413d492576314b34d68b0b59c4291c81db65ed7f19c6dcf6129f0380e905ec3bc098b9577875d31b7a67d3c670eac3391433e5a5efd90889660b850394317f69c8d0e6654ecc7a2f726d1f9afa7cfffb1e0591ae138cfc1ba50223ea043be8cb6c972318dab6d565d6667b7167adfccd1f48ad7614c314794a53cbc1fa443f590262563bf7f18164a2db2e9bd1668ae8c09bec29b5ec7a30f314ea3a8aee47d2a70d8d6ef080ce53368b38dbe6016e07ae3fd1796c303351e228d4d59b093dbeb993b09c05886a8ad774100b67e3a3981a9097e8e471cec07e4ad17568a1ec465bce4ae0edf6245d2d7072efaa6aa55e3a9243937b236af5cfaf27780151de70f44c909b4f030716c355b32619300ec3c6902376c5e8e7bf053acb97cbe97d28b03820e3487353758bb76220b1933aa87bc8597f070987e7f1359298fc698402fd482cf6e8b7342657293ba5849bb9019c243fe3bcb1499389ac116f2043195b10c8fa62b4d723406119a3943722acdc6c0bb10e1409d0e06943835c97f065b45ea7f4a226295245c438402385556bcab53a9c43701093934dad564014de95d223a4b16d28dd9f0d00745f14ba8410d144b45664e756a97a98aa50331f9e7c18de7bb4be9d59e9b47a7b331e383fb81e6aba9ab2c57b7f06d199595a94705c15d330c98dd963b5f2f9db2be7f5c29abd7ddc344f06812e8b20985dc122198709885e3786231b8e382aa7e6d0fbba53705513b717dfed59d7d531e0f8ce05d364489e3a9d3ac38e931eac7e13e84df3aecfedc21736c1bf1ae2a225236dc51ee7a3fb7244cd5ef094c73f38826b7cb2764dcdbc232534e4925ca713182dce5c18ec783f19021a9f747e95ceb0cdcf643f3532fa5a7b4c8317fedb2b490c94e142baa3345ef084223880a7e316655801f36e18bd3f3a3fb26ba5ae41195fefedf767392140249e62e76caf543d23fcdc34e6638ecb1aa3da2bd5decd6d4dd3af6b94db52e420ad13c0c72e75f70615709f0e5dc9660573f94b328e015a525433a3a3d40c82d7ecd2e778877228a65fc1e05c3d6af299e0cb5c08e1fae5bdfefd833cec625533063e544c24629bab39d0c6c8cb7123a9f6d339c52ebd1e317d4e52c84bea0d905a8f7f7331bc025330985e4f097047bc0b5f5579c2cecd288f3a10f972f2773e1e890701e5444af0de874174ed072a8d04f8925d2b9e716b4f257d403c38830243b9836e57a604681d850eba327e3b8966ef83491d11529bca472a56f14476953260b716ec3ce4b47ed8d42b33a548543ae3e43be1ded6ace54536b46feb11245984c2ba49d8dc611f9ae8d4d4b70c44be706ed7559897649409c71a5d95a4ce7ffc1cfee272c212c479314686f5a5e4e87966e27f7ff7e15f5e460c6c529129f77af5e90e22f7fb47fc85174b117e73bba8e2c6aa9081103d07bb50b0db9abe91e30567b1c000685b880e5fd8c58763641a5812195fa337b348557103fd56886e760dca7316ad3492dcfc3bc120cbda315ce7f744a7d76c52216b3f79168b799399e8458d7dc152c2c81d4eb3561a345424cfccb0b8cb1b7aaaad4de4a7d6f6574bad701b491148b244ec3bc332717f7070938a47198d836f5b56726a18fd569f874ac70a6e3caf173ed62cc972f1fd02f4b1504d04573ac4286849292c5466e329e82b8f3046b4e5b7544ecda2a6a6910030e0dfa629a50cbae5b0ead958e80e16ac5f2cd8a99aeb14525384493ca3ae51e920073cef81e62f0b4ce972300f28b2988c4eac9136c3a71aeedb7799d4ca664a9b556a955d4f342f04a54ee804cbfaefbd72bb5a720fe2bc5a970de54bd8540cfe18852b1d4b4fec82c76c9a6574bce564df2e9eca0abd4fd4fb44cecfbc399b9b1a93c879dab998b618bf39c19bbb72d3ec2c8fd265350f1c8d57155a94bb0be9ef3cb67b4129e052830dad1d9ed5c9c4dd8b9aae75f49ff9d94d389bc33de701db0420059e4c884e29a60b72786447d247d7db98b28014b2584cd875dab5a1233b6a5049cef60565884b432c526fb2fe0b6a295d868f7f9553efe37e464a3f2f8dda574fa72e8e97ae122bacd7714e2adf9e2fe06a52f873e587d381d5248b2dfc91d3727b9fbba67e230bc764c48ba16259519658d9f622064c4cfd072344c581cd6ce3f023b699048ded46ffee1b8dcc69ca0985e4d7faa6cb4fa3334ecfc796f092252865073bda9fa0642171ce80208dde5671bf2859df3cb5db754553a57380e58f32c8ec9c9b802f5354c8e1ecf70bb6ae48ff141f29710a4076039bf4e016bdcdd823048f6be4b9b79abf63abda39e7d88e3ef132ad85221ff9a9c1ef97ae4460b1f8a52b88290029ab51d377275792ad1e3067fb9fa088fd413d74f432eb9e1987251d4bef3dadb5faa775738c97639b78a338e8ad4dc50e46798904ae3ea5a20f52310e1306645c9700b7a00f4fc5236154e8e8774be5beae2acb47770ee9f5f18926579e35da93d2847f69a7870a5ccf9fd8f21fdcf82cacb50f860f3ac1e21cc2694d49ccd6c2bb5a9b186381606d2b78997ee5ea52aa97b42db03aa5588e6d429fdcbda8bec76a7b345e23dfe316dd32300ad298273f66d8e655c0a7e4efa52dad338ce375701a18e4cfe2814c282a091d967502ca25eb74a22ebc846451b3a1a9452fe4c004139810638e5441086566c328b350314bea62b3937e4b8dd3442a49482162fcbb647924f76d8a8b306b5da34a9d669dd3fa21f003fdc3cfebb17f873800c4f741729ea9ca1c120fae73df838762be2b95396497a0d248b8de30ccc955c28ef9374bd27b00123fa4a42d8e46f14947ed9bcb6dd6b0d0b042495df1a6a0fad679b2d68d1423b9ebacc62e439f9ebf5696a330f2c91d1faa1e9b0e88d7622de6eabacd47699c1a9685dfb1a6522671fe31a065597df6ec284b987e948ca63486fccc85d9f43e1439c14ca56ff0277a595a39d7963fecb0cbe1d7bf2891bab4a422598bc24bbc21e4747f092737c1a0a2574924fc9fd6f9566545846f28b2a040cc450c550a2eb553b67d9f88701ba225305db0b1882dcfaa68a133d98ee5ced3a369121503911f0cd761e7da1edc8e5d233906bf3791a1d3edfd5165626e9daa66118ed4524309b9d3d76ed844b237d242540acd4a42cb186f433642fbaca6db5c7e3056678b7ad3e5a16f046bcfa986db57fd0bada7a02a1eae103debc285d13f651681140f74d02316be844666bb0a2ba14ee7f9cb10d2874d41bc6f18ab98696e426f8b5b175aa29e07db8e33a8816bc63e71d2dbd5c37483fe3d9fd840637bb6e7e065615f559737611721f1bd2f9a0b52b0b6a93579928a4b9580721ff5454d84defff468b695f3255e08e118617cec92382f2c523029eb3e5f0718d2e9a2b9cb93084c4b65177825db644970bb4e97a4ba76fe0976e607996a2643ab061a7161ad8a8580b5307e227c73f3f24c3b6ea5725edc68db8d91aa0bc62ce90aa26363c3ab1fde317755a10c2aaa33ea2a89e1a0db2aa8b833128b967153eaaf886fc49a097f1dbfdb5c068df4c025adc6325576876cbf1f80649f79fcfc71cb91ea7647eb6df456768b04df218b29a78667ff1e5ece84605a3870b234adfcc5a91c67797394bddd07ea5b2177e328187b5b04d4349e5dc04790d096f5b224d71bc2457ea006b1d44418e85432a6c3bc15f59f1fb2cc7e47ba45542c939916ba188c22c22db5acead1c5fe247e358c05994fe8bc0e70bdc586821688a3b615cc7ea0d6d859fb8cad39381eedf9f45349fb3860bd8844ef70bb47d0f0a0a010c740163f5a2b1315de08c9eb5582cd8744fcb359de3d26dbbe1ae73ebdbcb2458a7c79471b0e9d6728ad688223d8ae9c77e37628381598b95c908ada28808bf7a24f4cc48d891e0f43a815110f1c068c36de6c24b17b40456610acdc98858f3187bb831d51607e96b62765c9c5574c607b3c337cdef9685b3e739c960baa639cb47706c93da088b1cf17041e677578d1cddb9fd73c157f2cab0afe17ac9374622564329575096df57d562d511c1888f1d1e735caea8196fc17df4925c44f7124cd6a57c342ba412121c13453a3c1fde84fb8b1154f65e3731ebe4a7e8617cdfd0f033bf2cf3c7df68676fcf0e6915bc3c6fc80bc544d417fb985a0746b003e99653695d802eb7ba19bcc8152feb6ad4bdc9547e4268bafc0c3613dd2197a41559af993cf031cfdb18e2750c92d55fef83b755a8896d3cd8fa303eb0f1601937860ea542d3cb6a7a36e160aefc247e0eab69c45fc9362628a4636c5dbb15ab97623056f6fd58f80f67cd7e513e69ce9f5b6dd473e6662d8b4ce92b9eff50379444fb36b35037f75d7bcac2afdba1732c0564ad2198a02be2a93840d38803a5fbc7da6450ba21ad6587e37b8f36a55d7edb0610d1a637d455f563dd749902b39133c51ed03f5f2d73ae8678022f26a795d38e1524c2847c4edd3b48429bc629b5c5a72c8238c791144c26b0745caf2bf742bcdb0d2b6c335fa0751526107875c1ff7132f9b9de6fe29026ee7a5cc8ad07c74b26946342cb521d25ed56756d217fab893efd05b298009dde64e6de5b3da0e895c75eaaac007fbd51476567874ac57e8c5c83c12585a6f5fb27d3f72de8f901a3afead09fd1227bb74efef4040bc335b09ee111324b6f0cd214a2b662fa3c0a973e2fe314c5ff12e01d0f66c9630ef642e8bb9bf8c9d5350c29ee88c334f534f47356cfd9e9c8049e9fed34a7fb2343c673b1d366c8247a9a1f8668747d19e4b95bc1865601b9738fc2e8d614932ed88148ec16c7fb8adfc6fe9ab5bf4ea572fa972fd347b53e351726e0b90d062440c2589b0c73af771e6fb9601b2e15e5eaf3307fcf4885ee0ee5a9db15ec63bbd94eb25347013dbf2632c39751948779975195cc1f1cc7a46b448ee427df17656b0c2cf60f9e465fa51caa0a5edfe83e4803308788f51890b27a86919a75f14bfce91e76f1bc278468121ade1b75a520be65dd64a505990f3b0066aac67f2d79ac54b41ea8fce5da1a3bfd4962512b8d6033a45b738583bb1767220677984c6d6e8caa6a258b73f8a935da00fee4811297cd906b07bd55896a1050fcfb822ad0d29035480fbfdb06db84d2e8241b1b82a841f828f98e857d4fea18ffae5789afce95e7a197d92236e89a0b06e9b6d8e865d0652da5480d14c16dc4a57ae9f6207833fbd1d24276fbc708eeb4d12fe7ab60a1fc5d13b45fef11a17c2c0b8ee1acd9b06b6904f405280919cb98f7e0de35f90915dd68db43db756ddc9e6ad529eccd6c172d4e941ec50326088e9126438c0559c529ac9039011f492060477ec0d197c8ef08342a3403dcebadaf43f9e682976110d2439781d0847bb77e42c6c4a1e160fa71d5901b6640ee7c31dfd876a8e1599aea02c21aed4f72aea3b71af7d7532d9fd7de2fe9c1f2eb56ee1d025b71f0a908706cd4e3214b1ab824c2ca890c9b895d12993c0a0b78be3985c3286cbf76c329f87b0b23a8733c838dde875b3cb89aaf268785b58b06796132a1e6fa7d7e36131d49ad27d62f1b1588048e9d93758a8a5306ababa9f14904591f8dc52f3b5bf2a2d1359542f9373002a4a5e39e9ed6323dedf56a49619f1a604171153cefd02ae46bada3e3c08eea4165df7cdfe4e9618c1b1a0551909f646f08a9f39288a6b93fa89da5d9d04708d017ac8d60f6d1b26769117f2a70e5f44d8078514f93ff2e4ca6832f8bc0e1255abbc6e56705c6b601143e802d774eb58c7fecef97d0f605f34bb88f77b7e636cb037e694853db6cf18e156f2f7a5994a0d49c98155cec4f8d0dc266ae20f5f96affc2c9c2a4c1ff14eb55e9351692a784dfcf54aac88df544aab570360eb0f6bc09267bc24c7ef344d70b797e85ebc54dd414d75791bea4f1c8d70969c45cad63955c809a8a13e80eec9de17d8fb32e4724b6426cb29e276279ecaa0d8f85c97c87470d8eb3076aa89d4dc103a89824123bf230823bfd98e13ec3cbeddb92bc1d594de45cf475502fc8c38e19fe7e818b134a7c6e230120b82ec1b317fcab33c3d3f44af8d7285c68371f9ce1a19912c2b9eb893c810a49a10975d61aa4b974454a8483a8344a4ac6a29a280d4d31dd2dab51ba37b423f972bcd44570791ede83f7d544c01eaa95c8087c783379f1d7382cb86b028861e97b0f9e1412918418c9bb67f103370ebf4647146c7a73d790dec8ab7762e0aa2e06012caf14e0556676fa99ff611759382a3752220cb6483b3c7958b36dad524ec2365a05fb3478e0677d0c0316a31508d9c1ac6c661066f08da0a6637341f89ea19db72236ec782c7b7078d37ef0e228d4030b5d6aeab97c87a547440dcdda73d7e9b73fbe33e335f6734bc45603caa6e9aaec0ce70a5354063d89520f62c48fb59384e4bc7a100552293b2d9bcf114122aeb72156a12ced1cc62c327264e836f06cf3198a83380847226dd368956bfcc0e2fba7179feec71df66d4aa9d5f82977fc6ac0c17b0179da5ff31e3223c05e501f8ce8e421c7e29706e6982371753a68615a2f650263da2f35b772c251e371a216ef27e66db66980f53948da4142983943af347846a276df5cf99a0dd1a951c89d8e8344cddda6e681a902ca89cc1499c4ff5159f3eb6276bfb6691d0d54f0fc01a0308790a42f2ed8f7bc464cfc7c59de36a1bb0945bd1527f77974d76fc0bf084213679ca6d7ddaf5923db8ab07fb07848737d78cd9be4e30f00d14349d9ef180595e582049fd7d67d686a871f6a2eb1f75ecc510bb175cbf079207245c4926e6ce06aaad2573dcc6630fe03597a3fdaeeedecf2e8756d952eb8af4365afe22fee01322de45759c4f0c4d3ab80a9d69c6c6588b96d1cbdcc9b19b649c80a92a840254bdbd4aad4529d73960cf296474059cc901d9741adba38a3083fb16a4782973f7793bba57cf9233d174fb617eee839042704e75bb9dc63af91134fd405b689812a0dae8c77e819696d1f1aba576ac94fa97c34579899c46696d99cb431eb0e21b9a1430e115cd200dd333dc478c2cb9ca9e5069f43445de37a1d9c865c53303705ded809f5143b43eb502be0972e406b27ffbb71f4fd2bdde8c0299d296e5b5d1627c108fb83c8f3880426140e0008f520b08dec2d5cab81c1857c5ab75698ae12e6c1252b98c1f8b041ec47687a8c072781708f99b6e957777e6c0850c08e6a86ab2331f19e73ecce77d89eb62e7947a847910b3207431b38017dae8c7ecef138c02ce3db2147414c1a4bd12dbc1ccfa2351ec34b53aa75d0f9a9dd1a03838730ebd9a8c829125824582c20fb8995024c36e8993f3aa4f4479708b30b7b3b1fa3a5d02fd096ee3b4848f5d40e44ebb4d1602c83d853f0afa1203a36bbc27054181a70315f98d0f52354689b1fec53e707a85bd7039f02957c46f37d92dad5cc55f1a146f2f9e348411851ca6bdbe5aaae584f8c16bf9c2f6ac87b1485f758465dc6349370a5c4d7643739215212452bf67220f96bab9dab7d82c617855dba5e68cdd91af020817dbe1b43d297540e6943a7a5cad0d20283b0402449e70c5f06f2f51c0ad9c1d4b677c02fac0247fa2b362487393ec63a86b719eb3e2e6a13e0dd387b51ba5aa4554b875ffee5ba6eecadf71762e250249f2cbb741e10e88193090650076c0df2edefc1cd3787ab2302c6d533a34c2374dbe1df4a42b7a48992cd193e35049b437c72fa8705a56bd824ed2f7cbb15175e283d3557dc6df7537ba2afccdcf7eb7dad48140b1424e9be44bc397bd857b848c38d173e3a9d6b01274c495f92b03695b4d4bdda3122c185c61510562e4e759af9796ef294260c0185c51471233aab2ef81f8a70362d7fd2972ebe4f2d475cd81a173dbf4f14241365698df7cc9975d1840064139fbd74e1584eed577b2c1b22118cd02cf8a34f6f9a98c661461ae9cae5f0ef85b5da85ed141c6ec26adfb0b57047146b1d7d4021181f648fa864d061638e448783ad8b1ae789d20e14a0e51d12ffb7e8414789ba070ab2064566097d327c12ff9f9fecf199a9e8e5fde14054fa949978271c1f3c8e9561b2801bc99830e812672347e71e63dc4b4a01722142d4401d17f940d768cc4d241274dce87c9d1eedc2f3a14b3089d3906277456b3501822659114ad8dedbd0f229b159c475edb20fee58d3e3929164b7ba4c846bd3b01acf23affee8d54f58d9dbac50f57d298e59488656c6d74abe6fec0bbb2c4601c536d4855fb7f366f65de1fe097c3f2f93fe1df2c013f2083acdbc3498b57794e447ebe8a7de18494deb4d77b150701f3f3b0ad01271267668f8a0a41492cb6bdf988d7081f9ea5b09adf08bf1a241700238d4b3571c62144058561c793331e541fc6d7abd1cd91724c00b06a799b229cf84e81d04effbdaec7fc85d236c8564487269f43ea014170003f034f2115dac966edf30d4d18095b249b51af69775c7d2ef043150b2bb6a1f5ddaed14ed6f28cf295f4d9296f2ba5dda9537c651b69395147ad5bde61dae10540426c095fa46d9062a858b6ed3a099b47e5ae4b4261728f1519bfa01cd1709e23d32df2c839fb903e796089fdfeabe989188b5c1ba8672101b5e47b9b98734814133562c109469dcc80fd814fdbcfccae3cb17d64261b1c66f6ddb0959872c154d139d938af63c35f26eb19215a61debf138d1012a6d6c58329b4927138d8a3c32905bc21c6ec9259791f88e9796eff4840e518ab61a2fa4fc4e55091b5779f7c6ff462d8c07d497fe93fb398b5a99804e44fb393cbcfa0a265e0917e39014238387a780ea4380f18df25f4d1b9e76a9fe2b7dbbf1e6f2dab0d8addfe9e904faccb9ba753984243e65c60a8ccdca3eff5bddd83883fdb38e208bcd75a6c1fab6ea0719a954944d84d46b294c4b97b496d8bd4f99cd02c23e93ac34a62480ecf1c7ea94831feeac0391c931724c4b1c44914859e4a25c2c809f3de01f796a2d5c95206966f28676c9203ac2bd241aae724cd2aec94e7c1464838c47328f98211f5c7dd4087f6f05257b05e3a4edf7213e5f2d3ccd7dd8fcf38871b3d2a243b368b2998207e0e3c92ad6039be83fb37b4d8c5e440ee38588f0b50026bafe1be10b43f33b483340b9a756b85b57fdcca01d78d955517398aa0801f88957413ddcf6e52c2009f139ce83906bce47139215088cc716b13c55910b64132ca0243d1dc3eace9bfc9c134d788ce0de9a3e9d8ef37c5d7cc33c43cf301da7946f59db7436b9762ded2e19e760b53db1a5013ab9ed14b7c9456a96e894adf49024c3e0eac92ff7b4aa276a67beb503c4082e8fd87ec9ee7e308a26e738e28840a95453ae195979512b8949d3b5a9a7b0f6cdb54d505ebf469494a7ff68eb97dabf6a004eb1aa2a6d30020d8b84aa39781d736dace4cf75239a59a2951cecb7e6b644319b62a41b87759ad31bfb081c2f4a032de8ba26605efa803b61f54a442d58842864cab7f68445c708410d7c6e21e63ef5133afe9e428e04eb6d0e9227b122e8a429eb81d683951d733a19ef713d0be3f4acc2eb91c4cddea7b29c11b4d562fc9a5d91d87fdbe5b18a3e4b8912285e8c8829ed7b1ab9b03bd9edab6f8d1173dd2e953714181a43f7cbd292f7c14ca65cfd9227c75e69e0d717824a3d3931cfee9b001958de26e57a46e07c9799d6c24f8cf834a07f3d78983aa8b6a37155357637d7f9dee21f7956227d923b4aa7e55610bae4b7350cac7f1959dc0f94a7de47939aa61c6d558adfb5d4b8dbed828b6b9d8f083334a51ef8ee3c4ce2b1babeb91b0c7343ea530b5d40af8f27ffa4c3068a32e572f87463c7bfc2d31f4e68455e4123f8d40d12aea9e2a13794b96f8fc687e9d12647d78981f92bbfb40fa65742472e1995eaae1600d3f278a0f69a7b240a017be7ff8f00d5d160bb9a41c47a4dc4ac2071b160cc601cee171ebdf55e948e3fb96f9988bcb544089955d04790d16f59f7a390dfc85e6e0efd4ab9b635ea5459ed67d50dcb54a8b96287ae12e145f34dc79601e6df59d82ea97a6f545c2636748a6d4e965bea9b6bb8d4bd1d83e6baa04d491eba255074553072f770a9aa311ca62c67d207b1e44eebfd86a4e9d5660ebbabba8d7cd9bbea052635fa9de26ac9991e1fc4fb811fde468d334c9fa0d424f1aeba0fab30e075bac6421284457c6842971aaaafe896b7c96a22daf647c9f14eb75b0bebe2d3d48a123e28b529f92f010649fcf47a05e2b0874432dd0e5ad0d85cacaf8fa7600a978cafe9bbaf165aaf360460d5b41688706e9dda1e8450253316f744e9efbf684af778274907c3a48d2c3de778cea62d9f6df53d750a11c2c7f23463411304707e16ab2e855d12f19edccfc4fd86de5c11c10710ee1f6db871d03703cca3a22ebadfe85b5fe3d06a6ecda07b9948ed2ed3ba9f8d8abe501053b0031b5d42c37f874ca248458aea5c16924bbbf3375cbda0bed1dc4d32bb98aae0961971c503c8fee0e6fbc803096293707a7b0cf8db7abafc409d37bd90d716ab7e8c4d9606946fd207727522288b60eaeafbe7b62420da4a857c95c726f39fc654497b418fb9545de0562f420cc1c847f8af992675a2ad5cd9845c93f31d71a4008be7debb4945e57121ff70ed93c5f8344947f7db3b0ce6ed2ab2ac40c8885d3576d933659c4adc34d3aa3e8c803c0adbe7bb42044e53734fddf40989d3cb5746ddc4d6d33ee3f83989a6ba9d8dbadc9293dd3ddc8c80d3485d0aef9e39022e317140dfe8f0f316b8be4a738ebacf48e8f3c38a53e4c4dbbcbd09df9c3542256350dc2c43e5675d9f0fc022f086d71494a3b67066a95ff19a4c3818984a49a583f1f0de1162d1515455b4749d740305a8b2e12315253daf5d815489b549112a0bdbe4baf6e582e503d2c7388282cfec4d465b4d6c122e63ba4887b29c159de59ce8b2f75a6224c393f443e526c5250ef7e01fcacc702dda539cc264340326a3fa2b0b80b9d98e869e6e17b603ac7a2af34b97b5e36d932ec3aea7f26a99de5200090ad7139d628287f4002f1cceeb0ce76f25e2c2707fa294280a60cb855d17bc1c3e9bae36226e28efa01737f6e292617271a61740d16ac5ccafe878ec33121536b1e42089e5781493cf7e157adbf9ac09b51f93b416e61897df33d2f0868e536cadd5b993be9341bc69e1978e4bc496b667095619012663e7228540295f3d182360c0b8cd01a9a23bf98b1aebf7264e8c4a9db0c5684afe31e682054549e5760571060586ff039b257a35ae68d315e5bc35eef283f95b455e2d589d561d58d8cb35c3d7d54cb2bd13b974ab301a443bc322288e43e8e07641e2f11195330a2da8f2c35faa2bb4cb8d58fffca81b24c56efd47f3293903d562225a518106939ae1d8e15d5309de35860e985860950fc487794644ad9622a62e5193fae3b46a982f91381976351bad3c9fe776499d26b07d175b827321c6c3691c9c31c2c3aa164f9c7a3cd1ca8acfe65d1218837b9b1dac1460e08775f7e72dcaaca8573b80d754b39ad88b6c96de670048e378001ae5d54cf1ff17d18112b3510be72f883c06be4bf39de0f34cd4861d6c45bc66ee8ffae4d4f286eed2a69bb533d4f9e77ae103e4f3e67a99c14170b023102c46497833a26c3b824d6b3a90b98c9eb7d8b61c065725bc0d14930f991b1f1dfda375883180270f1a88b605bd9e78cfcad1894ef5a4bb50be2b433cb2beddbc8e4149ce8e9d5f2e6b0c19b6559be7a999b9dc8a1bdaf8f6d8a877419b32f113694e24e73e58a11ed355cf69e7c4220bef28417f0ccbcf68f2e46e6a6090b5cc864bec7383e4416231913dc54fabe39cb16b15a8ab57cad1e523999ea4a06f7c01bf7a41dda7afee6d735c6c72a218a052bce54313077754c15683f8fce1ffd84d8a6cf605869a4595081eaabb1888014abac70397047834cc1b562f4fa9c861eb54e850e68829ee3953970aaf831ef8393263b0d62919dd9647487aae71160bdf615f08d6eeb8db0d5f989e0794576441a51c8aa39f0f4b080fecef9cfca5c32ce8e88137e35fa2e4bec6e5dda554c29f7fcca2151b83c11c429ce5c55018174a822362c9ccea592445c12a7d496bd6c3cc7431a57a6ed42d9a433019287a31c0f88e53858e57b5137d4a435f3161228bf3c534ccdd5e40c42928a4afbd2b1ea18e416eab1b8d5a7e4395ef51a868add0fd2e806d798c23c44f2dd4e1491743e6a79b7ca4f8eda138e9accc6e552caf002b2bea9570b8623e6ad4158f02f8e9fc50675b405c92ad93999e7ffcc285528c9a4502c617be317fb544e67850470382c379b57abd9db7e07b174e62319bd3398914297f200bdf03fe16cadcef82d568ec575b74204085094bddc3ae2f8bd1fe35cf98806dff58b87106811bfeb6beb0b3624ac6e33dadc6f7b6faa3ebdc9e12225ffb1f187924bf72719ad032d1b0ec546c66139540b76a0f2355c19e178d12e202a57115fb89353322e5096be61793a7aead52af43bb437fde067361de92c259b63d5c991a94d5c0bf8fc1f46d00a3e5d325daf1b72f3f65b155948fd5391e3de5a17d5a14a6639cae6692bd8fe42736a3220ce9e48d1030b53b1ca1b0e850ffb6520e17a184ff75cdb812707c4c95fadad9a2f5e0ab1acc8f966ac0eafefaeb950847e2db77e1367bde239e07ce80b876f1a7432093a3d00795eca4e599c503de0ee5ea96aeb18b5d45fe1bf470d33363043da7bfdd8e28a8df839a4f8bcc40b609ce310dc934cd73d7f6828a74b0405238f3590203aa1f88b8363e1d4636587a3defb7f87f969b571fc2704bdd7723e07c7348101d256531ac4ecf60509ef18859a53600fa06f2d404699fd318c164dd78cf8f4c858d18d687473aa2d0ae98b12cbd1a47b927b0fcefe38d7e7689ca57bd2f90abe48f210ebc0177a5a279e5f44fd66861cdcb7081f7b39edc80dc75e395f4087635fe318d7c7d6761e04a50e54d32b9c610f574f7448054b6241ff98ee51e9bd71215bd42420b51fb4a8f88e8382cf6877c1a02151a491fe786e74179195fdf84656f177a751b9878200a18c6e5356b7e60a0e6a460081937622cdaccd719852258983b7df59b650715beb20cc242861c208761abf8515e05b90675d19fa5d3dba88a9578927e64444ef3208dee86e57295b4a10e78cf38de40e2a59ff9f4135f9e739c988205499a5533998a822c50904a9e3936e23b408a995e32ef99c9c52487dde00ca9d17239d030ff9746e3484ed1bdec45c8f47bc57453cdba88894b95ae4b8fcd56a5e09f2e08b620df983de29de85855bc427cd91de3595dec8d11fdafd16aa604947be5bad57609904d7d664a453b7e7ef5ab492473c7a6e1986e22d6a371dd56d8c487693825efe659bb1b42079da98ed45698d0ac67b7c0ac36643131e4df2fffd27259dad002f05c8b8068e7d6243d14e0395d684308f7f20be38a278c5de9dcc5e6f3dc305e2636bf4ab28ea5111624ffdf9fc256b6c30b3c92f069300b6d6a369e6c53fbabf0f8af635b206efcc9ad78440f3a2b87c2753555df45b5b76af943059ef093b33304dd434efa5a38128407f37d52128354632e59c6179d56221d03aeb56db0ab3ff80a6b029025a47ef8c2e43df65fed0bfc22f6f096d0f609831afa7fb38bc824a632b6aada9e884851fa0a1f5cf36779aed7d4eecc838907599eb4ec1fbb1a5f2c163074c7b5f36b5394f4a1beff3c132996bb1cb73e0758d17bd6cf06838f96d694552dcb247ccfd4fa50dfda04180b87fc2e9affdd831a9e582bcb6da783244e3dc98b5052909112c42c468c2ca74af55694a6304a3040432c67fa1f809cb9684780f35cfe5da56df35b1cf6f64c66e40a1a4f5a70f18d0b910b326801ebd94ccb6ce3c4dc08d688596b5c7d590d1a19c0b3a390f0dbab1330cfc1e9d944e031392a8b1ec1adf94d61b978b915b0cc81432b646fcce9d408a34c343d26710bd86c398fba545665e8aaa6678a131b8b7078b9ff770c56c89e6a62ab87147a6307c17068869ea81fd89f90692e5962f153f34f56a6313ed8d8ad77a7ea553e0dd0b8d63499cea78daf2baeefe2fdbb7ddf5dd5b85827747c17b382d0008432fda005b0134a4bfc515e9f28486e530e1df2ea0516c0ad9828efd1af488cc728151173407c184b093003a66e1182ec7a9405bb45d0ca9ea1fcfdb55fec777a325ff8a64a26e8b6e4da1ce4a4e47b5c9caf5504d16947295db56857a3c51286466b5f5a26b3b0cebbc34eea3a3c8fa67d04d910724f6e51d0366f6a29c1e6f6e2fdb7daee92f2e78a4a750f477f73246e064dfab1f6b0135713a7322090bb87434e85414dfd1c786e91d01302d50b7f95bb1263e44ec66673f7d12a375574225bfeb85b6c2af4b93616c101814f60673df79b19274b9909c73d0177a6d26a963800514ee5bdbc413129f176a3b2f57777559afe300d6159875481e3d6502fcfa7eed6862fc68e3783c748a8d03e5b38b3ec00b21ee89feaee4ee12e28855674a846a13f03af21894dfded9a83a27b0f3307294f43dde28237a3dfff3deef6cae35dcd5386413c5f46f84664858a6a6a50a0670b4db23bdd600a6a3a66086aca85fb404b70eef710e694043016b388a560869e4bd5f6cb2490f0fe2d215313c08d6f8346e61a9203a01a2c7b96d5946ff76596df2cf1063131d50f8255bed9094b2c03a93a5eba5e4ba6bf28105a5af7dbfeb2251e12a314ac1b58a0d3818f7fca9bb77c5ac63167cc5129c251c5f04331e0670e603193b8b637f7e2a11f99a0ea5ab79b36e4043ee204279e266eefcc1d2e6188caf0020946d63a45413362173cae4e84402b946ca3e5aedebab5a6c4e369a9133fd47d4a0170933796a5bcf79abd1c6a3bf8620576cecaca684d370e0d085a4b4951886ff3d8e11deb65a44ad5470fcbee9656231a93e30c66d2b34cd38e0685a64e2918c4a02f2933a06c13799d13820b796ec41aeccf5b531573c47413789a848da860821eb3b21e89700580e9a1f2ff360ba1fd1c494f81cf14b78bfe8d91238753b7a29c1c6afd229a168d286c73bba8abe2e20889f66f7b9d2c6f7a73fa1ddf0f10e087064477f3c1c3c69e188ea03e2cf0d8c305677700fee2897fde5b9cac88c2a4ed93bdf3d354fcfad0e1cdbc8baa525330529fd877bf9a6f6c4c58bb942d3997450f34f00dc9394170108a59165e46aec070b008026af6f49ad7bd336e4c518bb1fab701cdd68d957c6608326bf39a5fe68949f0f5ed81f40ba6ef445fa029f1d02c8e80547aa08a2f8d549e8a389cd890ff526e2168e1f9ec446a037123b246caa8d80530f5acbc74a117d14722a558816b7bce863093738f6b286f880b5ceb53a89fa528ef849b00265a8d7923168764d5158a80004bdd55080c792dbe4bda4cdcbbf05ff6c109879ca4a9aedcf7c9db589e778cba800782500217a7e0be31beef4e89f027e56f59c30f5656ebec1ba05a8cd9d4614d19d9dbe148008f099641d0d6e8a1cdaaed26e1a749988ba3d372778263b1765443334897cfadca1f37d5130877835b05ef0848d1e64ae12b270bc1c776e885c200039c549bca24de5ab7108885718d8df028750a4a9dc4292a294b1b63c078f8691501669fdc421cd38da17c0bff68a4ff3b679f5000da1a2d638bed89aa724c6cdf0540434f242ff77dcd32914e3abcb1c614d1d7ac21910e5607843919e29759be6d49c2e9fd04c7c3d8ff2ad58a000206f6c2ab881fc12f47dd6db5dc56e3347d0fbb77381f9b6a1b4342548afb8690cd9527eb554d86e17307291831bfab89da32718091420c0fd6fd1015fab28064d2c261e3a466861a8d13a94e94207120226e5bb49180f0d068eefcb5ded8f84fc0bd4dea4ea8fd2aee9f79d8700982a2275761d5f0f3e4841a5c019457f122703ab808629d467d73cb89bf99fc0940b4e7ea96c47c02579a23e18eeea4e01e2a656453d0f1d5adaedb06532330f7d6be087febc0fb7a4414355362715a8127704e93ee7cbe34efad2f7d4942c1fa87499a61e620ec273b38dda610c76c22a8f3e55ec4112c6e872f6e96aebc14715e34648a2f47675aaaf8a3253040234b4140e21ddde096dd11f48943d21a480ccdb96ab27b996a75302f6b76ebe2c7a8850c5e6af55f1ff156d353b5ab4e9eace1f7d63b96365f311aced33cf585b75688bc5d260475cab934667d4f7210f45977c24d98471db38d40b8e69204d40e80436dd26e80c182074d8208a79b604792a9c00c7e092ac1a9ada908c492ee5fd96d902b8282b8315ba32823b416b040eb89636bda3df997e482b11c6e780ddbd085367722ee6ccc2dd2182fa51bcd5b4cae73c9fcacf8c128ee0eab398387d9bad1ae8d1bc8d236579ceca8ec29f38bd08a945256f3211c3d74ac8e314a4f4ea8a9a80662d5d51bf05f6c4f2ff086c9e8434c05a0e9d914455e0d45b1ad2e26230d577599e08a994a6ce05d3dfa127729d90011e1f0def8e0d41381427b9469f20dfade170516c2f07e8031583a3eb766f47eda4f8b5a95a03f9f07b03acb6a2c9ec9acd173c08db469b6f4f08f93c8ed48b4af40835d6a969b262f01ce56c4e0df747fe35c19b6bf5dbcb4a0e163fbff4cd4b6a5ba6873de8c9ef47b03207ec5938c7ea0c143fb31f7cec85062b20b36621b1356f532c1df076424ac40dcfa85204791b3bd86a0c6c35cfb457a1f738e016d8d95df6971520fa7d34f4a5fe1108bcb7aecae0afd44609dd3d50090ac176ebfdae51cb1b33b9836c370aacbe9dc0e05bd58f52a9ec1eca01b9e8e3e0e36f2ff35e4cea194b23c4e2f869e587225187e755d743b438b2df2f7956f247d9a146826b3da3f6748158fe0e4bd22a5e05ae0e09653381236a98d6ff6df50c016464d4a668d6278956859886c3f0fe711837c05dc2f00418c8998980d506525d0fe532b91c8367aa39f14262a266a25ebd89c9d3dccfa70ae241986907f65d130f279d9fb906bcb89a5168151a1c428db71bad82f441d3edee0b9cd7245319ee8045cd2607c61ddc963bb7083b91994c83654a92da2d273ae349151d9811d2da65567074db3aff00dd8ad1193ef8b8490e0384c17fa1b16f1dc5054287ec726b620e897f11a0e154a21057179f5e271a000327e1d2b67c8d2218198016f716570fec2d94cfb56dcba67cc64707ef25b592a6f457efc5a7986ad352c77a02c5f7d94c16d11d583d9b49b25be20796b0f8fa13d69e9b3e0a1b3dbf6a37dcc329cb740db4aacce19fc1adfb0694a493572261bdefc217c30fa19dccf7a908e45af3d797e967ab95287beeccd4ffadc33458697e80e63b5e163d48874a27f66208b6d180c6a50e88c3cc6309a236eca60e214cb236bee6ee1803be1a607015f904ff261717d1a6c262fbf6fcc442197732eb7ec4eb15bc22d98c613ca7757460b9db4386fdb0a69c1214877b67a1abcfad84ecfd8449339a0d76a38c68dfb0afe9fc7b6e3dda398169655dd8aac270b557a1bd900ecaf50f52e23e418486ba302f39db145d3a4b9ed402b2a7528af706885ab124049e8d9db8f5852adffb655dac0c868c41909b353843407c9fd2ca9f73ac056620e06377e457be6549ffceebcb12aa7b75ef278ab741eb1237e67bb8e2f6ef58fb3c0fba87b78d4ee10a8b144f8ffe5ddc3fe0a33d5c729e73077d4d5e7ca5733575f222f7447681f5c5ab7c8ae7d4662ebcad638db7352538eacb9600e7f3c0ebe02ace473563013190916d7426b9643b75c9a134ba0a2374386cdacbc3698db7e6ce53144345d26cfd8d441279a2489dce6250bb9020e1d40cb223ca000f618a867cde972abf9ada535644e6b3b33235fe95dccca7f435bf785ca93f72ad474dd03715472ce21e5c0c46323ac98b268892b247e732579f900080ece851a9a9486b99f26f8dfaa5c3577169865626c9d2e8d1b250aa7fe8521c41da94ba693700104de3b2186c9d6996874dc0184cca75b5bd56b14931ce81bb5e7a6a2b51a95c0ce0c558989e0afce185470e7193db2e802622b58def523ebb8cf4d00b4656b3c2dfa5a260fa9dac8239b63ae7f0566c242a7885bb42b54f729ef63f20cbe27927484c31c4f478ea77927c42a4d7f6eb522ac9c05a0c3a9e2881c53517a88a3a4442ff8b9e2cf9a4f4c51787f6e941bf0cf3ffd2b4eb3c689a06832fff21c7abb8320b9fca961aadde40677fd0398cc22b31fd3658b2384e797f72c7cec353a43418efc3a9ba422b506a903d4819b08ddb389b369be8b976e925460cdbb6d302fd394686a2fe86471a36a8c3177be0e71a1cf43312626d770258bfbb62ab99866d26c9e19d04c0123d870cec1ce336d23c11e46319e2bc6453a22b4a03515405710100278616fc767062979dd9e6de4e6a2902274fd0ab655a9a8887445fa15f0c23800dd0a222769ef0151ff43d01251e5789db18fde56d0d8958420a2ec914d305cfbbefc8da456651ada0b862d003a8c4eb171a76324c54e5717f24de245c708544b6ddf506e89a3d177d91c25891ac7a0abbc06abc0f8c9e53bdc011f138206d86b7969067b7c079e047947ef623a2564b24ba20e4e20537c840f4348f133456776e9bb6360094181379f4bb921f555107337bf889de85aee1973656770193d6b2fe7308cf24848df6698e840a3265150b62ba810505c43c9857e48e5c0b37fff0e92686affe338fcf615e3761f4c5e52371f19f3a88eedb9597befb456fac2aebb9c07b6e24f6c9c9a40889a0c83dd4f293e1be7eba24a3f8d667459e12941b9c5bd47d6d7d5a6275d250148826e947800a0c17408efbf015c4e7b87b16256bf59df67560149c478264a27a6eebb8d3495d3a02a154fb6588d82cf0a2c6a94764af40bff9692f56a3c98b14f6abed5cc433f55f797f21af12da840a06eafd82bfc6ce524da13a4ac36b3d327778a2918ce10c0a70875d2021182475c2d112f1785d4204bdbf1782f5eb0fec41ff40afbf5314591ebb151ff4aca443df6170162c8240ce7fe2d690cc01fb82197a099936fde2b86fa8a05cbd2081184eb5ae26e4d3f32e16bcb8a000b71f518b5e8f3e9dbd124daf05cce0398c9a9df0ecfb52b3a787943de4b4a58f2b3c4a035b3952a08484a5f57b59e492bfb48ca42f986875b3acd93485f55fc1a93a0cc0c4c54fab9fd982e8787c7b8f01f64798df5cbfd7591ad263b9592eb994a27f083dc0d2f035faaafe395d1061b26d026a8f2f78005d07e7b77cf4b07fa7220845fe103db77392cdb99799ad947c8978d34f8f0b6f4eb2c3476d8b3bae0d0d45def36bad234b8f7888b3c018f3c59e38e4840e28f08bdc1110b71a18261ad961037add45fd7da51c428fd8bc59c1657b0c90d1e0befa4a46db6e4e997dc39ff6b96446c222d9ca216fc1d864d6d9788c7a42132c2dfb457da6500cfd0c999e78d9b7da5eac27bb0bcfed2ec68f2ed9c28c39a0b16d401967154ee81ec596b73ad44b9f0ef46876aece653adb447e6c095afd5ae958519944c799affa3919f2fd6f75f201fe41be72e058d10d6d3078f792f7b889477899f39ee4defe8a36f911d0a8027dfb779baae848ba3143212a793d1f42465cd1730b5052282f13ec980573fa54fee17ed7f52f0b344f457511080d8416ded6f78309c342f3160be443e705533db550cc81b68d7a6f3df3ffa37359ba667a4a8cab8d226edb8b861190152f256b483eac6e95bc230e0dd6b8b739f686f85cd16ed0a6a3f92e407804b89fb2765dec28cab3160ba1ab421a51096f6c10a4de97115a2f5b1b6f25a5a21b369218e6c9c27e2c3eda0e53e1463bba375949dabd58b9b839b29bd49eb1e5b9aa0afcaeb45437f9439cfe0645db5dcdcff23d1abda4dada8c4b03c883b259b90191acb13151f9fc58459238cddd38ab23f66c79910f04b5306c8c69f2eb5ae6113119becdd1195c7b60f65357a57da0f87e5a22219ceec30a39ff0bf2a77c2cb5ef01f9c3f8bd045b3a45338967f75ba58c19d311025f808a5b78b3e54e162089129059f4709e244ed4f9a8eb552a725a359f5ca7a67bee65dfb99cce2baf763f6fda2a2a86d5af55917df8d4533edcfac95024f2621c12665b0eb65e86e4887e24598db28f34dc31cf075a238fa175846c64a44d71627543b7f622dbfc70d6515e96f342a7baa686ddfa7bc7854e7d08db59e92e1c98a39220d3b7ce472f802a08bca62fe64b4c100526fd1e42c819347107164308f1afc00078808cd14dce6f8ef841f2a2b5d1e790d8f31ed8aed168a275e0dd3345ad1f06283c82cb6ba99f1117320069617dd70b7e674e6d4511656e0910b8054a370392bcdd5aab031fffac113ff1a4d55abf2390d5905562a87c924c05fe041ee9ec1dde09f1395ae2dab2d6fef53e48b709e506adc00e094b6179f82fae1435e5c8690e9c119e24ca5700f45b9e9d14a92f4014d419255d137b2bc795474cd4503a85ee240e0d3b4fd3ca5d16f0cadb854d0be423744ab4fbd0c1f350c8c755d3f7059b641f0bf90fd4881042cdb57268c7f14de74d2a4d63811d420efc085e1b38fd30d197655f4e8ad8dfc8aac987affd03e35fa6c49790cae5db901ac405592e7e8e18e650a771e0855ee29656167f11d98442a8590b29a30e4f2cb631bcc296c729966754b9821b126ea08f83533eb974c03624303dbbe269804bfa3f4f1053626ade0aeee5af0b5fae6629c5bd1825637b5adbc04a37fa0473ec393d18ff16c74737c21751cbcc5fb86c85125d7bf3bc1dbd9910b16f3c555b1fced5c4d1245d111cc618bdcc16f1c83d98520f9b350548e420435a9cb674938b447f95cb19e42bbaa74cc44b1e3b4338c0bbf1ef83135048e2b001db98f1abeaddaa33b5ca9a407533ca1c07053f3c12ac1f95b2227c34d689090eab2ef202875c59735e30b5d26323143462da711352915db0633628726d584da87067af01c722ea6c1664f36fcfa13d4ce22b87f6d4b274714508102c634ea725f4ee875e9da13f5d33ac6bb9b89b2c47b225cd104737f162e05a4961012672d1e1d52d88131793a38c98d9514fe3e3771e43bc10af4fad187ecedb81021ef2c347cab0acc89c9105012f04577d22ff241b8f9ca0e3ad207caf550d8f18948db91ce066a56d869c1bf1270d6c5a9dcae2bc746269104bb89dc5b91818676f8ecdb8e9f56e47104768c23abb82b7c4a08ebe1f2539347ef065582f80d0085bb6925560ffbab05d6b275c7a118295987780fd6cd0f0a4622b5ec4fa6d3188d02f4395dc309796c77052aec1c5a0acdac77afc6af4ee868e7d0ea624d59366f2a5a8fb1ebb1bfb7a9db0283068cae51038fc626ad4c75819eb1a633e447598368dec70a8719173678d0b40b64daee057b5d9779e173d67f2ce5fa1369c2507e1e6b7c0e21486a97d28c9edb18f276f05e472ab4dbd91598766cacc3d1df00e4e09e91bd988d3da3db23d2f9bb285191b126610923689a4babb8f92ba7beeff0c37ad9480fab45896cc0185c0c5dd98881564dba9c79a142a67b1674eef189eca0efba59035a30812887975130ef45b3ec0a7e7d7922449c5e47402ea6dd2a40b1e42a9ebacd7e556db8207058e7e0510d49f31d4eeb336b4748fdef184243db720a36197f7037bf41bf34a72fc78ec66a08d5dcceacaa48dc24dba72821a8a71b72b7045c4016c825224cea0fc029bc4b33530f421e5adddcceb1a66e02f20c69e5fdf6b85fdef0e8454294ba9c950154b4314a640e041fcc6a6c40624928822b1d09aed57e44cdd4a0273bdc44d7fd268aa9713dd56a433efcf4335a30abda03da6f052e6ab617458c3c90120704df5bd27ec8585eeee36934c67ece1c0b1a17dbb17924a6120fdba4acd1c0b8e15b9cef8682e261489e8bc7cc2c579aac737336ca56730ca0ef1ff75245ae01fe72dfd0906872824b77041772d8ebd695a61ba3d183fbac9c6188e41f7a8fc3b049b6323e442ee850aa42ce741ea8a903513175250abeaa874dad0757308b79863b1a810c4ce89d4eab9c29bdf0afcb81a13caf90f6f94d85bd80eb8490429a8308e375b8c61d6c813539209a971eba93ca276c8801513c14fdf056b2e41da30478d85f1c69c513b14d0509086c57bc9c4f7a247ad1a4eba3c25a6745c19a156bdeb4f0121bd583ed0f77a5622b715744f8b1dc208a4c8549dd7868f0f494a5f583afb5dee5aab0301eef3f06bf58d6a6e2fd1a9e3c8bfb205faed470aabd99e12a07e07a3ba55fab0791cda1532656e24fc11c9f76a99ce9a948525100576df9aec84c95bad6454be9b1cf11736544f6c09adc7e19e2532943218cc6ae45149d27aad75550105ee5f7559d72c069621b1f9448ba0a474d0c3b0ee0e678a234752e316ef7182f0619a7e51075317a2105454c5a11970436a075ca90bd7e8fd23e47e9d18b68a4af1ca0c59ed509348462ab0f63393c14023d55fae6290ae9c2706b977bacf224ec72029f11f28ad62aafbad7df53cceacb4b984878cea6375c66b321a9f88b26f0b1eb7b212a90589d304c3ce26a27815f8ce3ec91c42971f137ab38d7a5641d4261deb0744e01f825d76d3e0043a19315b480c5d7c7a19e6fecdeea0aacd46409cc8102ef3a0e55afef59ca8f1dcd6192cea234946774a931fb413a081270be0d39fa139e1023c5b1f19f1a637448f6b9390734ffba275caa0b0307c98c4978b4675ab167ddfa74873f0bf138a934f0680a7eefd31683e80bff8658c98a4376886f386bf1f5802a9ff7af26f4acd5c77beb02c0ac2ba1c64aef7e75208ef8709bd13de23ab4f3df7522c15882b59cc4af4c15712ab8ee94c0acbd1efe96d187459a5027af3eb37fc2d6ed2310184acc73d036b1da05c7bfa15c8c72b650f9ca3d2cd94f4d718a3bdba1d3d4e6bfebcd8ba35c17432a152beccf369444a64a97695837916d505f6b48709ebda915bb7236e27f3b08f5f56dd7b8896e4f5240b226f11211f28a47240e278df1b579327916f400614a89ba0bcfa757cf201a9a08d07991d49502d3a80d7a245283c82d4c699f9ea8a5bde5a2bcadc7d1d3a71ce3c498d09d5d79b71111732fb63b369b85688604bf0fcb5aa5b5b95e2557e9e7ea4e635be1ad42d76592fcbeaafc36b89a4f296a96a1432ae5c7fa95a989876b110872dda1a79e721531f81365bae11d2c32d51ceffca68882788d850b78ee39d7b87e3974a720e2010065c321fc1c799d0e55b87b7d2f27d91f4140d0ca4f361f8a51df4936fb05160ccd92eb09c5c9d84ed11b6e7ef6c21b59804a73912594393607224c47a1a4251016813adff86170b59e4ad8381f98fa41482c86b7bea7fc94acc5de2365fab77c6efc8f7945c1955f7dce28887bcbd76131d40bb3b21aefa1eecea2820d80a35954574c05bda7270a310e8e2af5fd2013d9863a20a9cad75dbe6929a409f456bdab880cdfe602ba3d52fbe60e38f95d4fc6942abd09d2703cda04f6e92125d50e2887acad7338a4d52fa7195a57deb40413ba8c1308b9f0f035854cb765633545269b9a76afbaed4d2c70abe5b5e61891d6cefd2076e13d74b1b648f3cd25f4a7b05db54dc43ba170b00c90638ecc983ca90a3a510762c34814f7819b0b0134a22780d6047fd85317ca2b4c917e4e942d9ecf312ed74fff4a02ab752125f0ef6fad22944d8fbed881bbf7ba01c8634998bfcf50b115e5dd7e538ba6fa213a21ef2999e6f4a77a871f3fca063291898862eedb7146fd0b38ed8d924241b43c8ef93442a4eb68caedf8813fa70b5635ae30223231f51867d751ac08a42212b461d4dc165df9fba34efff527ed3993405dab8b5aeef7be442cc7d75a602a748e1be02ef1ea4dc663343af1b652695dd6202c3ece175966e2aa8d9d4df67b4dea3ce802583ec36577f7c1062944d44b18a2fcec8a6c2d15019f3e98c2282da75317b8baa19d1ab3b724bc2325f5d378bfd427b7b6c86f9d6631f76a10483d4582bc0f33a8e60c02023de9e28944b9b48d29610eb194168f50d71ebeb3ce17e15a5f6eb874bccb1fb2eadbff6db43aa48f2d03834d08dd5c19bfe919569045affa84ffdb6e59d332411e9a5e267b9b5f165310d247d3498f571cb859e263343afcc6a6bde543f06d80b0aa544f08f262cb1ad99be3debc06ec69da75b74bdeb7fd57a878dff5fefb6a0441b0b03f640e63f6bc1b890f165b02072cbf36d9ddb0e6daa70429500854399e4f939a2cad291e26aeafc58ef925f6aae84e24f087abfe5b203f4b82fcb669fd09d6332a834a05a771f2ab0c193c78f761277cea9ab390fd747897bc1dbec65b8fe32b9ee2e0ef7a86715891fbc56b0c41855bc8313e81ab47b60a68bae0561afc9e46b6765d84010eb422240611cdf2605f600ace87b909a00c8d5f09fc50e3612cb8d5be57eb7591c6c48ed755273443823df62a0645261c78663c482a4cff3e2cd9e3853869d7c870269ab1cd0e88c4f7d8b3b615bb2e48d5321d1e1fe4ea31de2d91bfef9d4c615a774e18e9550b234f8125151db95a3305ce38c94947bf3c79a03dfd0e4cbd78fb2912aeb4251d1ea5a91c156a4aa2c90c1dac2f10a105f19948880b1d9785ce6ac9e3bd89fb7686bc1b7e9ce37ab4d0e16c03eba67ab3c5c08ec00616b679e52d484066d159782471aa31a165db33673e4cdc24c987989fa3e860f57b5d437b09e5a057a33fab02baa02c476a1a4031f298bd2d3ec6b30dd15932066d4db7e892f56d7222a23c0d7898e4c3cd19a5dc8d4651ce59901d09a7d90c62d68b27930e38f99b2515c409522ce1233817026ad4a1d8c7936a040d1fdec688218f56de6c894a5b8a15849bab52e50d487536006e4fc4f3c3f7c5d6b2e06b2fa0b045d8420c99fc639241950d669d8b98069c3c46ee65aee9511d2823d774ec46f6fff4ee39aff9bdba47087eb3befba4a84b317aa2c2d03fb2bee036db7d7baf57311a13a847b266daacf3eb16aae4088e68704cb3deeaa9a7fc2379308047d538702df05de02827a8ff280b71bb6f522185760fb1d21357dd107df98b575e5c1f459b757822f0eaf69338ce17a21f2c2cab8d2d5b17d1616b09296fba0c3dd7d89620bf43e59c25ecab0a5e6b0f9e957ce2f24ebd8b8e3b7bb55d44c2395fb4751effbda17b524fe0e5cb5d329a1b196152eff415845421a7f34eab239ebb8e5624b7eb5592aaca841516a872bf1a074cae476d0945727dad728226604f161a0bca68d697cc7df9c891a7135bc03fbad72521b041eb6bcf8ee7c353695ed03c53092858cd5003aba2bc117e4d8e3854024411e3f0821ea57c11b17030e31c226625c72e81a23b10a1bce95f2fb9deaf1c9261154175ad13f383a47430f17f796d0612cfeb4a3c934199c108df36a4bc67719100cb91782ded1daac8076787071f5a1e37ee1384209679d5e3908efba8bcf49c2a4cf6ccac2d9ed3fd66c26e811702b59d1a5e3bcf804777e4d73c7e44e75b5744d4c6f4f603110a579c548925a4231648f915543998313b17525e044e39303b8ab99270991a82a3a2dacb93c2f1ddb8809515c2826640f2831dd4bc06171bd5657d612d40fe673f9cca3b803fabc2257c00f3d93fd082144558d984fa213552d5ddfc109fddf9606c4d48e1128565000ebaa29f520365e718713daafc7f4ab69be2a5ff95ce4ffaf96abfe37ab11e811f6b339c4b42181c9c53ee5bcb2c70bfcef7125a89731922c58c7987376991a8dfd42911a85148fc6dc25752c8b4cc38f592c1179f81e48643438509205b50aa255999f43819a827af2cd34df3c35d935d7d9563a30d57fa0e70de847d2f5792e04949fd43943dbf2fc20e7e1f51987083b1d689ed396f616433614f4e173aebf44eec3a863f234a948342786a87d6e72c9a69155d998b4e0adab673f359aa33f0454b9fc5ac04824f5de7aaf8de2b970b9ee7bd41f6b6b149ff3697d5803d8a5674468f09c6af93676a0b18ea0ee9b1bb9bf1853e4f0086a27ed6d73d7654afc42c420e94b544d9d14d7c98a1ea0defc6a91c7b64ce9800367ef03bdc49077c9a2e099a9ad1678116946d6030c927440dfb2bae9e1070fb51338218833786b7844016f78aca15555e5ed9df1b0503e972145e7980d9d736df6a956ccbd5137a81c0b055957ecf8164c2ff01c16be75b8ad050a71a0ceec2c6ddbb07100c15e64cf52012e5f3530093545e7d78c8671caf3e88aba5060ee4fea741b151c140e28385fbc979bd320038d0993a626a5b29fd98449a3340cdad072df613937902b36e77b5a8484965c7c120cc63e3bf86da1374b9c9c496b3a8a204327bdfbcd95409d1b74b2bab61245d9f8fea2e6e5037559940cf3ed6d4271a0d56f5f13262191d10a78da7d563eecc94ea8e1861018e68079992c67649336b47895f5b12d26e72e7231ce3492f4df1e66282f3e1b3b63617f8bc95d978bb9b3a8c1b60b43b30413a91ba1ea2034f6e6c67ba6757e5867a41023bb5b709f4005bb46aad929b37611d86dd7cc84d8b687cf53f9586c5a7e66c8ab4253327f77a86c72d7d9b79a7b716b08adaccb927137abf3bd53c5b52fb78cbef218420bcaaec0b34e4c916f0cac55aec081df09e5839845d69c1cd0fd1d79bc3be2fe58d1bd2e2e8576f539f4f02134d3e56684fec97fe2a0a8cc71d51099cc43cd2a4a2e8d2114c5219b3392a2d68ed59535be03bdd90542b41bb6bc7c72e6c959e3785b6ec562a61a9d455bd6a7ec33f54ccb4ae8e5a7573d702b4d4260b37aeb297ab6bf26d99cb376a76fd97941278a6c2a7e243138d988951589b6bc506d4bfcb83e78a044a94010b1a1a833f1d97d32694d216cb2b81b1004e822dc3c7525fd6b4ea19a7c259adb311b76e181571fccfb54e491071842822e0b42d7f89588ac67e0d898a7739f00df662aa77f925f362afa435e158b8b204966c725292c6930cfcbd098a312af99aa03de82fc46560e35f26a14a6eb4a36c34dd4083f4f21ade5bcccc0ab3a310016d061df5523bcf1132e589532ba16baa14784c5f485eb2d8298285e95ae0c29d18bb6f6296c6f6f6fee63c660e34af2673062af2627671de865d1333edf2e1139669304a743f387b8d5b04778078529c0c1ef02d3a71a4e06d1c71806d8093a8710e3489ed7edbd7fe8bc7a470e2a73d64c1f904aa6ec925ed5a2e66dac1136c41245da04fda7b66d8ed6d832e7e17f9706dc34dcb9a8e717280ab835483f45cf328a48cc2a906a7fd0a29968d214824518822785ed7f29fd853e77949491010d953a0f3d59b9e5674397a97275732215c361117053855f6a208ebc62de871b8fde10d83c065898394782f0a04a7084c4493ff94c4e33936a02e1fc524aa826c7087a8d2a824937b98701e805b0c45a5effd3fdcb04e338886d300891edfb7516c71a3d3ab4882cfcf20982fff7e80b9bce4be0c4f2582812dc09d862d28e08cd5647ca7ab8b89734ae615f86629de691c9c75ed5b23325d78c0daea4c9f38569528d70ef149fdeccea2556bdd36566acd5db5e80ea7ef7993a72823a6bbe4a2ca9281667c6a7cd34e043487b7107880d5411e817ba2614c0e781c2d01008854f2c8d6efb105f480299014ac90e0f2edfba65eefb3079d5fc74195f86e7ef60763be2ec61d3f88947b475188f714b953770c7ecf70dac43fb0f2a2b5a6e144525fa81867817c9f540b60be0e70b4fd988db9d4fc982576d48653b8a75d81b1f55207945b8bdcc77bc050453d9b7f288cc8e3eaf18c9f64f00e7e66eaed32ec073e80dab776c1e75dc3df10f6761cf4add9c77da6f166a50ff6756a9da247b4963d533e2265f834c180e3b583c50c591b0ae0ab1f6e376439ac1cf85ce64b1a84a0b15c2ef4cdf669c7c9f1666ef7761622d2bce008e44061f3827bb20ea872449be94a06361bed76b01aa35d786cd2245e30103b606dda69fd845a90d9536f95ecac0f4202dcd8de59a4146b157718867ca2ba15fb6b41cca18a9e713c4fa041de061c99a875e138fae1c768bf15383425b389524ab1c91ce97e42324319484edd171ff6b96e8de464346d63164264781922d513ee9cd3796fd1b507ed8cbdf0776a060e091853340e49ff19626e05e15110487f00363b7cc9b88219653e6856141cf819d6973916a465ab3f1283ed1082e27b3cd26df217ea2f9de984333da2d389575951f94b6269c7f9d418d3e55c08df976125e247d4b704f7f6e808430bf10bd4ead8aed2e6b5d6a4fb3eea3969fd64dc3213c7bdb77c4011850c2add9da6dc672c1352a75ba2c4a5c9ff5748a4167edd26bf11004505f969b4d650740d2e562bcf13a19a38c6ba3711d337dd3b68614f5498b72abaeeb2ee85cb7f013f323f76d5f4e2ab20e03cdcd65e4cc367c63f4279955173c9fe2fa25ccfa498820d221f4c6a6f64b59e072067b4b35201b5a32831d4ad52e6178c07531e8f69ea7202e789f15b52a81a5141fd6bfcf36a6686572f80f6af34d8858ef31046285a0b2a042aa6bc609231b84ef0e77750184689abfbb4cf66863e331f0b98ef8006f6dafed1b3a2b264d006cdaba4a469b39a4d36de3ef7ce6745bcdb9802aabeb332ac567c91b0a4fe8f0c7d3fb6d267827a38363c0b065d344634060f19c6fc0419000c602f52d86023d63b7791a3b396a9114e51d2efccf0822b508d32fbd37e66fb3e6050483309db566efbfb97091517e61df2bfef26d1a67e9774a4f13f41acde5e3322f9dd6e0a5c66a39f5f5391fc83c027884dc78d600aef00ef8723eef69d0556cb93275d869cfe34464bdf6ff6fe9aaff92b0ceec976a62ec6adfd2bc0863654d689b5d1656a1761b45feaa70bda19ea4b24cc8a25695e7ec63e2bc79cec1ae1f3357a6e4edb08783cab57d818c10958e6eef31ca513e94c3c40944b925c0f3bac4882be3b742fa890d1f0ea9ded8924325bed36edf8794523b66e82d436b9eb875751f355bf5b6bb9f41b819ca0c1481b1408a7cc5259b66ee0d6fbef48113a5e7062ba0113682990f62e9caafb50620b4e3eedf70e19f01a498fe7fb4f3d418154b1e3fe5ca22406e8c84a8b451958d677590e33319eece25a34b27116974e37df630aaa249d87e0a0e579ad64fc1a2acabbbcbe03f839ae14fd5c25dbe55b211dcd2b6e29e21d622fc9c559a94cde46f9dd3f2f359bde5e4c331d0428041dd9e770c311189d31845ad952a3bf978789d483ae8e67f59f35ba66afe3a71c742d6676f30e01d7fa96f3c28407aca0852990bc9533461c2e4ada7692f3e08715e68ec96ea2942288ecd0998efa648236c982ad99f0abfaec228f6748addf1c3025b6e3825dd344cd4133549323e287a0f474edcaba9ee0f8bf1c8bbb1db8914617af6c3a9320238ff1b2995538b134575df038509ee5a509e95d6f26cdc632849b3b2945c1410af7a540faf5808248c4e33397f869afee1252cde005b1fc5a8ca3774b1d95095e14b055798d0d86d42fa31c4b80487ed1c4e6f21bb7c592b65a28a341db9f01eb37a343425fe9d72307424dc39e3f9cd6d6d96e3b1aaa9c3651df18ab7dcc40951ed2a1d118e0facae462f9e8d791757d47203ef0c4854f0cd5b5635ad690f0b19b0374c234b38073009aa88ba6781d9b135071078c46ac88e1d5e96784ffbabcfe354426382f2649c358301cbbcf5b4e78019991fbfc396e9824035727e70c426ccbe415d0944187b5e36cfe535fcdd45f3e2debcdcb058c26a0b3bf12fb50794b862d17618866bed0fd29ff6177660490f60b9b2a2af41c25811f7fbe1367677c1483c536bd91a79e52980e66533d92a1436063ae9ea394a0da15a88e8c7ea9193c011485943d6a29e9868647586f93c7a0b279eb6c25835399c7a4cb6988fcbc326a4e1d7f4c3583ca5ae3d242d079b2c57808995b86f6bf726121f3f36634a658d8d7799a8fa2c71758e4630cd5c27daa2fc61b80e7f43f67401e815e1bad8db6f25d1b9b90760ee36a9d273afe6d9f7ad86b57b203fb67aacc72028a3bd9b24df0cdaaa906bbb579082bd085ca65e4e3891b619fb9a60a7f20be538a4e6190f41a66653481b3ce8b90103943732042d7c91c8a0052f56b1f717937d5f859120d2990892f9ff8c1115f4e73b4833fa9b89801c7f97d0c3ecc45afcfd863e9f1b9750f395ef7451a0f989b20ad7e8df27c55a5d35350362db21e5259a93893466507bf0bf23cb3f2ff6d6f2bfb8a2a220c6a16c02cb84b7a6a0ef98d73a31dec74e8d64fdc3c70bf3f0525b52a746ac65b1d92e9aa5c12bb0455143d845d65a3abe3d63cf322321296d5829a43bce6119f70d6839195ce920c90be81c8f6b81c61805d46fe40a2eb3b8ab1d2cc5c8f1d50a49a8a8bfad90a3a4bd1ff53eb877a7f8a6a6c6b89d7da9eced049573d5723d471d4800f63ebab17a2fe9beb8d8382e6ea21721f67122ee7a26d095042b52ffae20753fcb4d491fe8c9c9570dbc6b1f53c104ddd40ef10a7a443d846e1412ada66b4e08e14d8ecd7b1b7e6131a78985d28d517aa0714ae4ff950f64ce6d58f8131a1113d86539b063573a3ca8b1543181d55bc4ce8ab60aa34ed87436284d3488cf542ac2ef1c8e59d27ad8ce449e62f02d800512bf4eb5a9074f80d8ca48343d2f58c2bbfabf277d8764c273a25d53996dae765768f8ae843d3a6b6dedd2e1b4625d7d3fc9c0ad1493b508f45c169f5d2e0e5dd7516fc0f3cfe7caa9bff023bd97162ffe5207b19fba45e1a6dc8ec09d50b387d83b2061988235810582c3f1727e223106c0c7f643e1162dfcddd61f1477621f8d5ad3b8ca7d29a11a0a77aaa0cc981acdf254da5e92f53d54ed9d6a388965fa7ad8263c3ccd1a1e6642800c7dbba62c3ff9c226f17ba97f41f2d930ec3170e63551d96d52e2690743a72b6661873b06509e5992aeefb5e696a2bdff9660949ace55e48e2b11c9528fcb7bd986f2c470a8d9d645b563aa466009ff74a5c646433dea6647ee10157787d457cd3bc0fb57f55b811955f202f2a3076e04945d73da3a0760925c7cbd590cfa09e64b3cc03e0c050b72d9da984597d0da694bdfa1bd701a3976a156bd50b50c0e1f86b206c3916f43e7fbfda201c26a4c019a4b2a34a2832054f882233bc6ec2fe065f2d3020f629a1e816146926632877f026479d7771734d81b472bf25f0efa27e5d449f46a5e728384b0b6a96757e3c4ed32650fe19e7bd461d2e49407fd732567aec3028d1543c722b9e6cdcd5e73c48a7f91149454b39008b26d70efd730db7bdf028386ee8b5386edc8bb019c7ab94c5ae42a116ce658815db98642ccada5f6486bd000839617d4e31fc2cabf332505980a06b288d95473aae9f511a200bf72ce4f25d623095c1ad4de752246e74e0c4e0c8aba4345f2c85537c26934d619eada4e80ab5149862e1f1a62f9045240c858f15914a7e06b597f6ac480eec02d74d8be281a43aef559c687951aa15b7827d675e65ab73b37a72be3beed53d78e9bbb2aa477648364d1f08f2f76191dce51a9ceee21e76963bbc231db4978a26afa78de2e93d2da763565ed4e3d3b373ee7fa7da5ec9e7c325d903f12af865c44f7868309d0e02f61c615de03642a799ca1b437eb1fbbcd77c44507410f3b7f8a8c64cd2ddc95d9d08791e32750e0d6631305d651560d1a856c74ddeb7669a2dffe13363ce32c4d804d90133db6a6af1e8be15dd9e0da6bb0dc1749f2ec76aa304798cab4859230218c6cf8b6e79e6421d87f1399eb59d5bc12096cb5c6db46f2be7c07cd0ceb3c86d5a2014f20393f91cada9ec6b138fbafba8afb72f6a5c01f4e4cc5744b0ef1361a568446b2c1a7f1cd3140cd68166fde86bfc8d60ff718d5f318355c5d0414d725cc4bb84bd0abb1ea8714670e0ada38ca30d9047d86779e03f8ec0cfd8d070c4ff0b95bf1d7d473d0236aea111af723ee490f9ea41ce9d6da8204687a9beac9fecf775bb5994e0a4812253de5c55d657cd962818f156eb02256411b73d48b32861cb621a3ad5d6191a03320de7a1cef3c95a94bf3e558bfec9353df4e142c70b5acfd3bd3ff25d2bee312c5741e23945696efd7648ffc22195e229129e91036c9fa8fb81c4fc197143063dfd88a7def78d75f42dc2faba57e6228784515e7d08fa4579f63b0a560d0a38ca40a0b5e08d5b8bc2fa272046e3e4be04b5810f5f019ec6868160b5c36829c736b21e1f77c117e685b3419941b864a41ca05841d98e6371292069a86354d3d3dde2dc0293e76d0fdadad7ac068c4944bf1a2cfb1d53c927cb86a6d37d0fbed23f03152f825433b785ec4fe08acfde3a42ded84143a5128dcd082e89694d0d75b09fdb2d8f283b0ecdf7ea494d27ef34410b9ea2b2ce8cd306a0943dab1616c071b57f2ca71bb01d29d567d10aea606325dbc7ba48a6176961557098ab59add3b8dc99644e16e67d9c89d2edeafde614d857f6703437dbf2558df99183b35a215398117ebd6f1ff56b6a371926b25cd2fdd320f89c8b36464c878a8c88796f5dce038621e32d2483a944194c37abe1716239c8ae394b0c84539b4bde34c05573ad8d75653e5eaa696732ff8279cb490dd259123b11c5871bb1461b4400a980b7bce74493ea073e3bbebbf930428dc8d109f7cd8d2e1c589d5473f3c1acb1196e5ecb884cda45aa9ded7666feb33ede802923add8e8dda5f7362c959353720461ebb33c2f350d50851f1bd29caff1d7dfec13117833c45e483ccf3e2573213a79b7b0cb542275bf64a48907248865fae7f11f0a267666e2fd632b8040f84330f2bf2a18155602ecb42ddd392764affe081dcb74ca10b4ef9798d46bdc541531385c6153f0b4f2cc1d5dc5ee0cbbcfafcdb9f5c17a4120222b061bf622bf50f10f2f4747c9121df7a4040944b75d1c1eeac7f85bb25ffec2a6b216d19eab883a3fefe2ab73ec9b17967d439d4f3a17f29d87eec21206d40b85fca8c60adc5cf3140ceb1e63c13b6a76fe927110b344122927979e9a3f91917a526d88478290060297bfcf2033ca4d0e62c89acffbf7bd1fc3428e57a83c4b4e5502e2b4da3459cee69ef36a4879a247c70efe225108533d415819c9aed42a11f5ee9cb21dd67937a6f5404e1a8aab6485f9805c0d389ca2a500cc866cd0416f54eaa30287e9fb972f01d201b017200a863dbfa2cff6e1b36a28fd8c3ae88ea8caaa6fa63cfbcc54b2c78430b03d15da03fe0bc6693d42f2bec166ff9d7ba1e0365cd1c91ec9c326e261c994c42558edb196cd7d06621132b37c0e364b7125369f36a5e5abb74bf6adf9343b7f910362f01c9ee56c918583ffd03befb64cc4e57af4edcdf2266f03ed0a3d68a126a5eb5288a35db1dfc9366c4ba419ee11e7b0becd5868d3d298aa9d9d9db68f6e1f2745e35f7f4c2a3deb05e71dc39fefa671b5fab9e417f501b8f19564d1fb6f6419a7ea811ffe44b556c61b5b7bb14b245b4be7b3dc309d46f6e583e1e434f05813fe5677576130b9a61a5e32dd3fcde6a6bb75acd88a91d1ce500f1b29a1a8448c520e1a9a8b3095220e2aa4b84e60ed29e9b1590ce34c4f743d3f86158ad0314bb661345b2aa9aa65bb6e4568a04f398656e3b18fd46829d33c7f6fa24b723c5578dfd79cdd846c356af9f428a305781102c34cd5f92b9ec68cd333bfaa6101e828ba784f03fb65a6121353b15f3b4723a725b6b2b4201866963505acd202e4769c19b3ebcef222064e30d207b99fdf668e9b481d426d355602b947f098e494dad8b2a8fba10ab4f7d3f49036d4321b93c127bf2b5a6680102fab347da520fa117e3e0f5eca86824adaad1aa6f12ec0f32587b7807ad3d7c810c814346728495e30a3102abf3ae5f92158b111ee50d6ef18bec1c24117d779458d87719abf5e2968f6adcd0662ec636e82ee63b4884ef2f272fbf2030cfea872855db9f5724256a18c5bc3dbf09a2ebfa190c988729d11ffcb095b2b2a0906475bedd2f9a785d41cd6f6fa2ae1740361ec919bf08dff6703200a565b9fc6823b1e2dd84a0a76f34534dd89f04a671cc0301d77d59a465e1b3f34a23e98235f2f299b0e9078ca2a7a1426c356d140aa19aa6c6339cefc65d6ab1b50812d7ff87b7f21e33ace524f431c5b47f1e866500301d99f53bc7e9b1f144688d6a259089a721648a6b5583a04ba3cfc60fbbdfbce797b57f12703fc99e6bbcf998fbf8fd15a9b307a93034296fd7eddc93da586b5d2cb5f869fe5f7ffe345c2d05c40ad32851af1c98b70f592196d5cc709ab6af809ce88384bb83002e19c8b52ca6dd71ddf5f0ce9ad0d03199ab60d8ceb66299febdd1a3931c08baae30d334f36b4b635be484c23caa986412adfbc69820c80fca1da66c49fbf2da974b261729517504477d6b14958c6b5ac677298427a1dc4e95fed2866ddb656447c0bb9ac24f3d4b06161a0519b2b0cccdf5ff0d53f390734e197401204c2dcaf4eb62257990ca9a299ff9722937b4ed6c27a7b3427b5f18f196def4b3de3723c7893febd02408a86a6ae524e50e27218cfddda396d7c6013f9316f54bc016ea50374ae5bc14256ef386afe409739d445fa875cbc47fc5da31185854a2be7f4d93b7cd175b171533df8e9a69ee730e887d9bd303c384620138ea9235a763cd10ebc7ea288303109c276de112df2456d6ebae7191585226638eade66edede7dfc88a4134721220fd26f972f726760b6cddb725df2b0009e6949e52b3ca7a6b3de57ac905f971152b65f7325a6524751482102b8fc095fdbf6de0c6dc1d716b41b72eefca49ed6dc268123d7846c6cb074a05d384d9761f2714395695d56d56ace88cdc865630cf552d1c34f964d163f7e36a1a605f5057de3ebde12cc9a70e378de4fb732d5e2a71f783209dfbb1fcdc5de3061dbc312192247620f19417fd244b724605565bf429c57dd757a6ac610aa1653da754850e60e80183a6218830dd460e2b096ade1d98665b1790522271fe0c18b161d28f90ae29ade226a57f50da133826555b962c3e00035ecd89b3df65b11712fb89c2b2e873ffd8afae02c71ef2faa94ecea421a93b50a1c149afdf5c82ea2d31bba14ff09c337e816c2427b4c18e6236ab7ff3f232096497706826192aefdc3a89e68ae1242c5e7fe53b4919f2b8c5095b2575477e340270e225ee27b0a34563aa97b7172de5ee500ac45bdcae0ab2845a578c0aae2e960aa0fd403caa658f3640efa00c0711e751c43922edb450f1107a8d0aff2305d102e4313b6fa23229a0467cc18044741df74ffccb5c9e40941157c209092694f47a69fa8cd0dff205c1b1231fc75ad029b93096c49cb4f8a449d9c3a95e0613b8b354ef9825dc251deff8373ef4776aada7a17e08331b7a57956c20f365a67ad53ce97f8f0064916dbdbdcf3bb83af9bfd87170223db2a9f9668d346aec87bfb8dbd4b4897e2d6cf9f7a60622df72da81b2665958934693e20a279a37d75412619057d9adc0c070a8c67a92b9630b82d8050f1173cc85d24f4fed8ebe46e89a24b86a07a86fed264995cb1134b8be48928e5081d675fb1adc17e20d36cdcb5176dfc559b43353432ce0009e7264cfc4148c7a29a57b20dde8b4befab5f6362b33ac76565216c220ac9f6d8fa04ce75d4c6d15fe4fea8f6c02a30c84a4d9b048f6585bdcb1564f06d3c3b86ed45bed789bc99a68a732b5ba7c95e0d8e899276c8107f7557773c49f26cd313bb4f6917c3f90085f770823fab67873e76aa629d5a55e028f6845b504db4cb9bc10b17c4337f98416ed34723ed593e73960bd59d77c1c32a54dbe6a514008679c36777912e06d3c6051de70411c6b24bea4a175122d40c627301cc51ed5258ff4dd21e13ab78075251f6ad249b2ab5d1cbcc7feb088212d6bedd58d76d417bd12cc212bbf3734310aea76ce9eed30d04d93862072fb41936123c64f3f8754840bb31666dfbcaed92979ea688dc67230616f8f385c9c89fe50b4e06c7652cc93bf61ce63a32043946f8ee5254dc5cf12d7ebb40f8ca0d75578727e17060b894ba2a03d61451dc655326cc2cd0507f4e6a83f62e820348a7c14c3ff9560cfffeadfd6cbc8bfcbfd598201394f06a6e83bbb05e946963333c74daf21da397fa96dd53613feb4e51eda1aac1fd24961e31b8c16f5ac3e3f8bb5cab01e2b31d36f54351ed104552e8c6c81978f40fa455875806e8b2f0d4ba8b80851024846c56dac640a2eb3c330fb5eb00fea80e4a30cb81d74d5cded60c18782a26274bff8f9d64b6169fa77d0595606bbd12f2e49f2d0c3664f6378b77cf343b303bd7c62aeb30a7612c4f043cf10f0344a08be1e4f13c6bb8660126f9ec9b3f7df5642605d3ba83a0f26d2ddaf3e150c477ef9a18e4eea61a4d485d8112c08943f9f4e11327b69a76ebb23d3b29e74193478ef9a61fe3241a88dfdc74b3c31b19506299d729022b86f7e0e36d12e73eaca688a0ce25f45792c9564f2b4faece7b52bbd1ed8c6795fa3a5bb7b2873e6f2e05de00234425f71c3ba041737bbeb74a209f7c82bfa70fff89309402eb3733d92c593c0e4bc88d973216a30bbf023149a9a163d78cb71346e577bf862a477d94515c5c4994335da6f6d267293c43f9a145f8dbc10a3f87850610871e93d374e9b1ee026459c2f330938cdff62a86965ddef0ac2cd8b840f4fc13a0dc7279b887c7ad66435a19dae1bd66a70d24b985efa5f52193abca20d1d996df878beda8bf07841c9dd3e91ca8ca6cb9003b49c9aa601fd78a31b16fdc6c78091955ec60083447ec7fc5ac4637b0a500d3e8b317453d98ed353bd98fdb1065594110df617c3aa0afc8891092871cf4047fc65a425e3d51fbce3c00601788521ae2a8208858a6de04aaba12bb519934b67017246cf52dcc37221c76d8dee80b1992680c8d80a099712f6900da95c04b1a0824b24eed2ffc1d144f5a88ff999efe1c794038f87f406bb2a3d620178116a61a643b1c8ed07ef9194aee98515fbaa7fe36be646ceafc9d624cbd28dd726e556f794d8306b2af9bbb3e57e62c76565eec53d229a98488b4c23f96bab23bb42a44fa04f9e3c358c3172a698eeec12d734bc9eeca2233d8d52ccbdaa2a703929aca0b84b59a0b01985e33550f7708e414b79ae08c6ceabe074973412e8df9e78ca5ccb1bd04fd1bf8575a55b1ad3ee66a7d680b32c20feaa79a0ae6617be714086e8f8cecdb629b3fdc75af7ff9e457ea22d294aa8169d936f317eede4ed70c5031e5982d42d7a59a5882a986c9739f93daa8a978ad9fb4c2fa8ce3a624c7ef3ef07737013acc73ee504049650cd8634711f246646b4c205aadcc3fa3e06d12e11eb5ebf22e2495e0d722f982b9ff0caae6b9305d859c7411d901e1e7aa0fabea2448dde0685a218b178e6c624876191dabb500d5e97ff74ea3c563256c629471df641ed3993b94facf655d9c3711db2d67b6766e2a6afc4403169ba55582d87120e280a8552e59a8d0ebfc0586ac6c7954eb749afda20bbb449ca0795af6f5072b24040e940b47c37fee31683bf7f26d61f4519ebe26738986433736b0c410f838d7250d33878e3d5747fef5df4f7a81b0c46a8ae916e3743c1f7ab85497810df6799ffc7128dd4564a9a56100b1036f19551edba1baf769afa111f283f0741a03b85ac672d2b607c8bf6f09adad92caa6269dd92c0fd372782269a9426f8ce37594a644c0dc474d399c1f36fd7d4ec51595365574e827230ab59e6fd723b40f5464f7efc5bb31e381757ace881b084b59f90df988a158a1264f27cb4df49d481d99bb355139146dfdb57734ec6db7ba199c6155195d8be5643f61bbf5109514415b0f981a3dd5af1f5af4394987c15b3078cdaefdd5d541b1f38e46e0789b96a3f458253725e934ed9e033cc6f0195a2bcd33c9b0bfe2c8cb0ff4b8658e034e1e0b18eea5ae1d907f00377d0a079183ce81352fceb6b2b2c7d30e99a1bbf722fdaa71dec26da97f848877c8c366e1388f5664ea9ac15a718cd2271af226a289812143c8d5d68194be6c4a3f23694e051ae8983b7b60e2c156f8b1037c77e6495fa7c57984d6390f81fd9af75db0e517cb8116a6792ea3a733e13499a4a9df853fdb0c745bfaea2338e463b62dc4b56937c0668bc411ccea897fbb0b97f393ed3e0cea334c29ebe5e0b1d1a54dbe8bb4a30317a92efce9648e120163c4b990aa6d54fe062aec50b28cbdb85e01070a7e8bb2c104ac3b9820cf6cd6995e9360724f8305162d46880edf5278fe8c212a631d4c0d36d85aba13aa8a79dedb5e0d5b5fd8a3a4711d7a969530a54bb8887b80bb4a8b897291e105d378d98477662081888d4086763308c4fa56151d539bb14b7dd6a02adac4bf06d38a003eb294d24aab31b76ea1addf0f71262750ac985273ad47e35d9818cab284e11e95ceb85e181dd3e914ba2de429eecd5d9c1aad9961497992d8d50e6d669641ef8752dba77d26fa7d146d7ab5cd7c09ad7b750edecf84eb1a6ddf38746a0e3a704d89a2a5b582734e1bc9b71106b9300e309b28117045b6c997a9778716c29a2b0304c748dce4ea5b36c32f1688559538a8edd92512a64b1cf248ccdfe0de3a86061498c99f6f554601b4aaa02d973197a6cfbf72d3760a563677b89554610fd234519092863b2c9912d757537cd8a6d5162b9361d6b8a04548142f2bf2a1911c2a16fa389bd676743ecc45fd94058c9eefef94fdb8223e64aba1143310c375f3db02a4354cc0a55c30186b69dd210c65578a0a33819f96b8e9c44f38ec44b1999a78a54f91ed3c3b6ca33ed634c1d4530473cad1fdcdb427b2c769463e73d166982033ebf4474edafd38e097898e54bbf8a2d8a4ab809c1de018bfb5cbf4a14a946483aef32ac464fd08d1a634c64999ce151331063dbdb731ca3f1da83e23af29f4c22e41e67bb596273c1d96bca013be4deeeccbc034db2c13c08b0d1ed13295421997e441307f700ecfe40b54a2006cce41032676e1e096ccd86af73239f57207bd7bccf2339727172217828872d656a224f3d30345c1edf457adf56fe16f18bc184b6d27fcec1105b1d28ae5de9b69d7d99e73be36ea842d412b009c7e15b122ff0e3a007bf8a3796386210e7db4d5fccc9bbe306628433d5e4d6cd47a3132baef6f4b114aa9a27ea5f5fb3819a2d5a89ed51d99ad4e828f5f6a8908ccc18f4e6b2c55e4a420c3fe0f7791ad741564f340d6446b34853cb08c77d27b1a45596658761e7533c0784aa12fcf4954e843fb23459ecd616a86d204ef154437b70ad477e80db4a4577996854cc600dfdaee61726f33199f6f504c8f0d6fcfe235eb29e905fe07197bee7a6f7d7f564c2e22c95deb605eea1b8d17fcc96d5ce307483dbf757bc55c4c6272803185e5e276c95e7ba81ade381e25531428557f6b0038aba46cc2bcf240355fc158a4db463ff94b30ffb991a95995c01ac9e99ed078d85290f64cabeeaed1052bacd979185784432e9150a18755ae46dcdbe477915a22d5891288c99f2ae18b3ebe5f95e2e677faff0c43ec1cbbaf6d50cec197acf30a1c7ed2513c0bff7efd2d56581959a373a9a5267f8654cbe5e5c96247e3468fa1d123f136a3364bc2cd94d79981e7b9648e4157f8342df60100b70adf13a20c40e4ef8f028d428e014ec0b8bf618f50a36ad43537f1fbfda233f2a8873263eeb1081a0f170055ace0388849bbdd16b3d3010a7baf6d7e50e499a21df320299c6a33b13133f353b69127b74cc8308787359d15024189bd7f576fac3d281073d08022c0ffbad36ffeaf1c0326d726fba33c8c9e58c0dcbf047e99b117d50ad76c2ad2811858027e43c4fa959e34a1bd5f689dbcafa3310cb6b41ca2a8576a882ee108a666c95323fdcf0a26827517b8794fa70440f907fc9b85a2dc61655f2efd2dcba5680690ce1235789e96721231eebf03a5729c0fde0c80f9de22246d0ace55e4277f6ef48287eed357b06fafda55a30d926137b2e83a0a94868879eb6e55c86575f398b272e45591e0e45e2031a811a6c280fe89fc9d1a08e1b34f8685003e1ffea77e6c696ca088551e8f2a297b9db57c823ce336e36a918cea90bc65f1e72aeda422bc0662d6764a91fba72e1a6ea1b1c8b442544c818aa8b2a5627bf7f161cdf292aec8ea457b42d7df06730e2dd96af59adee2a8e0f8554c531f3dbedbe33d751744e6585a9ab8af2ac68bf2254c466c5e204553ca00c8aaf2ef32acdb94b6b7a8f1f9e54f3cb8a9e7fe60ab38f102d7d02884db406de44e1aa04c2c93995cde541f7c2873ac0538bed86b6067411dff3e48f249652b74a5ff58885bd9e0e62c0da90dce7a9bd6f1321245cddab87b8eeb879d23dccee3ca060de954469692d572619264119e1a026e7c83c630572b89fb20929aa20c94d6310bbd9576ae27029e8b1b3cd4ab5307e87cea0bca252c924c00ed939f3fba0f63723434b3610d498660a2abe3a0fee5848de8c195a94d4ddd4bbe6d47e4d0adafb647e2c8a96e00a88d9242a0bc8b4f52bb652c8a721b7068d7bbaedc1e9806531deef65cc46e21beb124b15724e7ff5528e284938fd95393afc3093333a64b2c44a4f7fcb76dadece28871735f91f3958be4054317911a99912e5f5d0e8839139b425c7ac95cc78329e17b32db4718cbacb885f1a32cb9ab71f2a55abc715abae42387e10323f397010c8f16663d3afde97d3a5acfa4785cf494e6a8ef7ebe47b89b2b80b7112d08dc3ed8f4b5e22f9db58581ebbd3cc03df6edb1a07e834b4702bd9cfcf668cb2e9e700309e03e86901302c42c91ce3a9804babd9ee36b061c8270be7418ec5b662094fe80e4d72f081f04d3a1f627a97de3fc904cbb2df89f4bdb92f83886efbfaea2f9b6202bf8e985ca54859776f3bb07346acc4a48903445159e79b6fe85c48a766db6d8b5bd0a08601d8da7c44b331c59c927f4d4a61fac2f9a75b3bd8bdf677533b8b58db475fd898cac5a8573da81b44723c52780b38f8b353898a09b1cee0af8f843893383cd064b726931764cc87fa785eaff736a5280d58c8fdef6363cf391ac72f8cd8f771c013092f36a13385845f336481ad12c52971e08fd6495625508d816edbbba0b77e09316650f044b8155ba9e671fd4aa78099236d46db1e4ad518b6713d33030571bbd3a5a4de630f7964fbd2122c92a35579990a31f953b89154b821a922f9f10a31dc6befd564a5166c651073d546179e0e05036d38e530efb79e6ac001aa5d8c7ac89827a47af745a42bc761d1ed51d78b7f717a0f60d594e38f7f865afa5e49307d395d1bfa916d53b842cca286468c2c2c7d872e5bea406807ec917b294d8fb1cf9f5aa90390f3174d3637b73bce26de54762f709ae46773a272ee4127b853eedd4c933728f7b78a1f7862688e08040bac35bc95b9b7835ac01b4d703f9f70db5428ea0a593b0cc2ce36f9f7fa91733acca9e9c4933f3fcda022e622bbed65b96a452188f60fde9d9ad387103432315c1aebb4f239d589d80810d1c8f1111e3715f051be6c33d71d10e9cd0d6acdd72a1078e1aedf16e3ab5ba4aaeb34bddc82d5bd0b40ac03ce152e5e5497a38a5b74531e14a7dbb2a69ba4edd9edd5a07ef16878510c60ee76946b4730c900fb3c6f5c92441c27c89f337c0c403553f8fd163521b3b3d964d030221c5f5c0ae2184f533319f52293c4dcaf8a05e0c9097092134392a25f77772d8771cbe046243084e171cdbf5aa2103fac4da2211f7a3cff823d457570507267422afe859d04877a0e01ca8a75c91af92525ca8bab12717581edb84be46a714933766592c7037b7d43c81e7b490753dd7b8d98ca20f641d6da6f3743374530774e92eb2e30d307ec39fb113f50a3684406da9c50ff896855c4046b549fd66f92815dbd954460573b0bf4557cf8272864acc2ce4a365795cd3f45ac03c8680780db7914e1c11225a861929c2ae268ddd5398c84ec8e40d9dcdd105112664342ed373cf253933c0884c6bcf4ec516051cba736d708f17bf10026763f664218ffdf10df7db9ac86e183a3879a981e7a0302d65b0207c32cea4e54be53aa9fd675eccf17155b6c1e894204788ebe7216914ab5c73c6e77f118fa1966ef0616a83e083ac60b3a0613b1ea524e4bc11c1724db4a61df78ddd02dca86680f3698f85004d70dbdda0c03c39e49e6e8d76b87910117864941a3d1e40d35c76f7abc7b4b80c94c2e5a24852c8a94788d840694b0bee6ba3aa75249046041dd32d201f8c772d121fa07a3b87e65bf8a4a4e12f01222ff9c491ee2d34376fd29cdaf5db1d66e408131d6d2af39e144af0b047d50aa99504bb125684e34d79a7c967f3f1452893375adc0a7f70ba2b1d02039c1c09e6be5087938d6b131d154fbcc9178cac808d875ae1fef5a21d9f15a3c6293878e10e04d48b0fb9c335337ed046508a98824d81c408191a4e715d18a1b123532ad3522d1cc47b55bd6e8d6ef7f3a5ff913b0cd3c34184d4fb0e74d1b35d4d0992b3453b642140c02065a35b64789eb0d4fec7d0bf8ccbd9f26b8630714a2bebdcbb288382ff0c894410380749eaab9992bcfceeabe10a357d7cc2e8517940fcddde50bbf75be2d6e3820137a2d66f68060fb646e85f6bc87ec9baf0c5d50c37c884e180575329e19c33853314c645ff55e72d17b269d4c55b322c0359dbf306b913ecd340b37b79bf664c4ad7d001f64404de43248d8d352f95ba20e72befcc120fd398e6a2717d6b93b54cb4131016b79cc5d0c75c677251d71c0ae107f55da7d71e1628a40b65ffdda80e11182adf02e8a768b499e3ac2e0806c8a0da4681b256e97a396f15b9d6015fea0c81a703146e33d94051bf676d985626ce4c7075a41da553dc6a2c9758443b3cad8f07e95d49559643d033fb64dfc533d38e9b69bcc44b1728c3ea31564b72e61950b12b9ec47635e38d3d13e46841c160cd03027392ee9de260164db9f0d8cce98110186ffe06eff66f3a2f47c5b4e90202bbdab4b53ba1684399c3826dbf597f8d2532aa7c7d24f70a3b22dfd5c984c591acfbec9cc94426ff760319762ef9741857b19ad9f5d47dbf7494a7cf76b2e86bc268df33e1899f62e98ce621359d190bd4fffff49f2657d75c814d6edc57a59a569553120fd908844c7648b8373afd181d3ae05283e5210417b785110c990178a7e98ee5fa806fb988e9ccbc58498d1e5db62a927ffd7fe10b5cb3beca64b5f8d8439f9ee32e723d37a4c1d42649c1e50f782a250703d75cae67de404be61ebf2972752fa6768982d4771260b339d72317bcc8b5ccaba024b122fae0261347e866bccfe06352e076f1c977df161e20c2c56f9fdf7e4f4b812faf7b709122f6c45558f48ab49dbc3a7b12f5813183dcc399b5db29b96faa39977f40a0e20dd8f0bef43b3bd097770bdf62a77327f4285b5564f06a842bf76473dcc4dd1315b179022f6c104365066506d9e3c7b182fafee78818001ccb604c9260aa30bf3da208a120e2578d8f129ce52da618de422b9420dda98230382dbe627c8ed280ca7d3ff2cd8c358981a2729d274f3540ce96fb715837e58b806974cff3307b5ac92bbc54b5b7608e0a5269fe25b37aeac246972b9f8322ce552a71515cea9adc891e748047a5bf13df1acf929a78aeba40af98678c43e8f48f5c726ca372fd661dd7594869f9ebfd19add1328ac677aa6dfb2999aeb0e783a625df4a88f78ec7db797e04f2f3e9e0b357108c0f43cfdbf169c414c7ebb56e38d4d0b81e833ddbdf7221122f7b9c3a0d8173f4d661000b7bb945254f2f6658896019504db2309a892a605362f6bf126caf4a56a20216e93ba59640efd14758fe7c694152bbd125fac9775c3ef8757c7721f301c85fcca26671f4b608197236a136f8c83ac45d049c0fcb086db9ab2cbbf688b7b24c6281b6872fc82adb07fea1254e076a89fcb297331e860a63e5b729e864495dc4e323e72371629df25cd6ce2d16a91a54951c5cdcba8027293811939068cedac7c7483b105aeedb7f674f21cf1583d540dc501e236eff48357d9332455b79d08cfb80f7718c7413fc26b13206af09fad5510c54a892aae6600735237ed9d0f8fbb46ee4a5f218a81beb68c0bc8d553eea2e3f39b898adeebf6585e5ce9831a07fa663cf2c5560b080a4622dca623928db76c64c7fbe1e3ffbfcbbdc6e023b29226e4b09a811f5763da9f7ff83cec69413aaf7d04eeadc307b816dd251660489fc59d0e7e504a8f926971f61dedc8231e2d2744df1d81f07629c7571d048bfcaf4db9143fef93a6bf73dbb9f1cb57403a0e6fb0d0f128b83564541cae08cb989cc4615f97e301ab240bb24ae115f2be126b589a0a25470531e9bedd0de7c88787faed26ba8cb8aea2e32aba1f0bfd1f897e035597d6d129c08459edee4f383dcf10561feb93cfce01ac94335ad306a467297a2cedba9257728a7052db4299f0fefd34d9b4efa1a99ecd68446ec4f551ff90ab85b0a587f705f73585f2de31aff77199e2fc916fbc94d6af35884f159aceadba8a01908e2083861cdf7580983ad61434f2bd187315dac94c60f8e4d7e6786f7e9ffa27e1834901659deffe8e7b043417004df30fbf20c2387b704d124a1e39edd1f9d8b1ddd138b8de0d39c49b0b61b94b4d802a15badae5dbdf63109fd97926e6c4037e35e8770632d2864baebe2a37037bec2201e772f743346a9ecf2ad9cbd94fbf66709e2693bd839e8d2b35e16750f6649c2f7417a8b50f973fa4cebf2500b78dc2ca2381b945b08b2b1ed5ccb05c1494ea955e654c8ee1afe2fab672bea88aef0cbe2775cc912be52e5932b4ed356620fa4d81f0ac70a2b595e0273bd44860b2d62f5ee18b0bba8004f33027674db14686fd93fa737481fe0ac19cc4884c4a3c4bcfda9a509fcc1aa416f205a04e12e2969e2af4da06df32adf0c271d07c578afbd8d9c9898ddc7c4df7b3c3b06fdf2c33131444266e3c9b302cb03bca651cda9372e9c6a184ae54d00a241bc3a49359a0e3a5ea4e9389ccf9298d44e2df2891996dd2a6e7892ead3b1c25e0463e28785f622dff6529f7bdc938b744bec78b18b018b11e581eb1575c8cb64a4276877671245eae4ac6d61c7a011eec0ed76e5bb559cca3e80eb6b22c24375597a81d7d423b077ec079d8f4b686991062fc2fa572a69bcc99910a0a4b2c50007d3551f2eb4a7b6d8b04d818da1265bc7b0f99df163be4361463a8d25d77d15829913d6b626214036f63f6bf311b0aaa3edf807d03e5c8ee2b82c3e40e7aefd07e76b0f7ec847192b94594c5dd8c248e37564c293897845721f0e86d9372c2e7a8b13f829c1f9855ca1258e1ed4edbdf103237cded13a08dd55ed28434ae284b9eb4372f85748abccc252355ba814f99e5ae1ed70993fb69c043a946b704ed7badf38c28658fd01da7f31a2aa8eef455ea38dce7046188a4c2e47271cc500d12e30b44a32831199caca38e121e68893fdcfd9d7c865c90396dcce0b88d51f22d7b47c5924dd33288d35838b272ec00a8fb8bddad4024aa3e0f4699eadffe3fde25dd9035b6445f299d54e37b3e6cbf47e4bf4e3cb4b09734e3c1a674cb71ce9eca318134124df771d8d7c78daa1b0f10f2b7d709a766762cf39c5a17199aad873f30a01a7e7cbf9d64a1371cd6cca7eb7801bb21ede367055f4b156dd7402a0e9a984042fcd87cb54d5bef1a49849cd14a4d6e3f89b42a573820c03c233b0afb023e02d7ed3c67578e1492aa4d5b2e87b7078ae6177c5def1ff64d1a0e1cf23a32b7b93c40aefa86c8729eacf855b2d4fc9119db8ddf0681fc52e6244de9222fdd5358e6e799dff76a4f270fd25f00ea1da74a1bcbd6969eeaa42241cadbf8ac471f40511ea1d914f5bdecebaaef12ed818b7a8a08ac71922be5d3d7ab62ff207c521cee2c8f353e8af4dd5b2d831c34fdfb73f6e6018d219039d0276be50f48e39291255ef5550ce2e3f976e42594c2ed39247683f5de302d3090175cba3d0d5f8fdd19cbcaea28eabdc79968f629cecdc2bba5f9808427bea07969cb43e596e37926e3f221d4ec964edd414bc1f2d47a0a97e2cf08400ef78e417ae964a3120196246f45bf3dedb476023bc07b1c693d7f84dbc34ad993a5f508e0ffc865b62a8ea616de239dd4da1c7c352111076b5dc46a7697a540b5c53dffa029bc21808552a30d9c8270f6942d94826f289d328f787d48c3cbcc03cce89314e2b65163b4f28532f1dae8ba707f059886d3b99e2bbf2fe78e8204dde7f2a41d5fae8ec1cdd6d7c9a13f09ce1b68a23d7919989fae88253576e2bf67385036ce99659eea97a865991bdc272655fc957f37aeba55cac773792cf7e0e33c437b04e16d944b72c849070cd31a562c1f3be4540ccb4fa31d28cc2262d20e49a4fe0394e1e6126f17dcca76ffa8653c5f257b67aad1838abdc06517142e77e93b74bc982f2b8a79f09dacb9210484eb7d408373951f689be9f8e3d77391c5bdd3ef7b9f1b2d5a6dfc5d31f1019e867cd4cdfc3ac4fab85736bb7be89820ec01f9a655beccfb23911d35e6706f2f8927b2fe1fa4e9494d73c5343ab75030fdda3e2ef0314506c2d2858f713612731a43af96cadc8de24dcb6aeb7dff293aa74ec12ae87b24f3d8a81fd4c1ff67bce66b3462a0d68424bd50e9601120e80b4c4908aef731678ce28ad6faf24dd66c8eab1598a5688a629f6cb6c2ac5860a2175978f4311518dd432fee08a8ba292d276e098d81ae7471bbfe0521c4fdfe6af979dc9116eb2e4fea87683f4d4c15e2fc80c0ddb8b85350b6480af7622e9bb6602cdc3c2f3e5e735484b13475e625b528aa5e7026b5ed21a3731af72ceeba8db8e046f7848a0932968ce4dcf2aaad1523031f72c7eeb579851fac1d76621bd4f089c9f567f65fa2fad097188861a3b2e9aba34f2ab2f5045f557170046277d99d2dc8d5bd90cc173a7afc5e89352c6da2f93378821bd1aed5fd729ed5a2e62df939f54c8984da272b95712be1644d7295c55bf3124f96c4b0bd8326c752a59226b7e7419a9ceebcbdf27251a0e5f827a91c52f3f70b1cb4293f5b14a42fc42987db2528f1de9fe5e34294f4fef78133c420b0b9f47f11463bc0aea9ae99571d6e402b546c88bcfb94685e6fc933c894077be7ffe91e6f6bf54936308816630cc47224be16b7469d7a3d3c22b2dc016dfed71d879b0917517e96f673cc4ec3b8da87722be4941692e2770c07acd76a1e6e7b408dde6ec694888b38652c52d42ec30962fc20eb4810fef8b435b5c134460170326747c32fd180f31135d87f06ae50797cab060ddf7530e4cae5d041bcd2150bcec6bf6ea304db6f2a5f9b40bccd8791f30148ece235c55d2eb8d6ed54130e90837c20d77570ddda396f5e4c6f594fd1c00b622ddf45dcc7de7df5c0155f2f7828bc642db999c493a87021f4d6531e027bfa7627a6c03b90913ac7534f432cf978d2a30ad715f5ad9da7a927210b9a10c54dbed1e1f594973e53b5215bcf36bd886a2ff243032e1fe3736b19be0a44c338c4b0ed1b80c3eb7556622af800fbadae715a27f790fa386086e20683026527b97b4725a75fb2d8a603c77f6c7acdae0bf5fad10c306b6f6fcb131e05241b5a989dc5758a6103d2789c506374b80d636479f019ddb8237d487ecd5470bb88eb6da6b62ef3174603253cc7a8a7cdf651a571898d95fe0147561773c6612c4331ee755ab1211098a74c8ba9ca8fba2b80beea31d344454e0e00340900594a189d96ed1c0fbd33b55e9f58670591fd96799adb03a5d5022ecd72dfc84aab3e94fc816e19da717210f2f6baf10927348fb145cd3aa66a0232605636ea60702bd6b27e56bdaea15e433ebc0475dcd36c2ac2065e785a9249d6db46bba9b7c0bbe7d24c8e595f51585bb1e0c15d081d94453b254bf5c131e665d24d0c9d005c9db4cbf0e88deedf6e7cfb66dba07ae85ee9ffa5d650beba75ec4af62c0375d2eeccff0ed19979da832c6df83f5db5593bf169bd6eb62982a364698b48014b19e16e07efc481d0fb27b75c1f4ea0c72112d6db8b8cd0c7ce781de309d400442720edefab791325aadc84455e982df44448338c222df496f71234084b82db36d771dd428ffb7e9d0c65c8af78fd5383e2018163cd6cd6e1531ff4a58e321f2276cfede7397cf9a324057162f98a70a9ad24db76fba3140c3e002129dc4671ea88787e723a8d41f89f0a102e7b7f622ac37657bb2592d9062117c2beb3f8f0d1df124f7bf3dd4dbdabf2f22002796b05c622081d4609ebf62a5be45b20152ef8d4523b167c8a44eea2c8ba9b025db0eb11a355a6221de0479541b3a1ef987d7aa15cabaf59c2e37d2c7b4eaa17159aa5c598fca9d13129aad2b261886d92be23365461c6c7044866bb7513e1dd2af103ece633d754f0c35f5084de36d996f23ca2e65e482e20ba410352a74e28f647d5c5c12da4c15bc6a6020befcc0f5e0d571dd1d9930f2f5c97f0ff86473f6d1757299d8621f452ee0bc7a9e73f0ea9d78c9d1ec3eab8347735426857fb9d822465250544758e71d6b5e7290b50d3d99cffde0fd00b0dd3126cef0196beb0b5f7179ffd594cba41484a8378a59cff4eef7ced226c4d62e7b1761f63b1982e78766f85a83ae5b4a1bacda4cfcfeaada48028fe5b12e5604b76adb57bce0ddcac40c6cc649f72f4bfaa7940b487bd4ff52c5de47f8eee3d40e11c044167cf5949ff826dea0d7da3e0ab3811d86cfff3640da119fcc4a4c779a88d6821d050a2b515cd0f21cc9705d940b9c039da038965ef58e85b541f3a848fed4ebfc47e4f91d05af83d1515d06c37a8491a72bfffabb0c3606f8cbb087579478ed84079169c2f78ec98319b63b22ba7b6dabf01f81dafed121720061185dcf5509ca0ceb6def7db02dad82e721b0d8a5949f8d680e75abdf4c452b10c5df6b2955131c83fbd6b677cf4d71d9847d0162d6c28371c953b080ef501fe2d87e1e78fb18299f8bc8fca3018f291652de45ab5542e1319c303c44e77c4cb302ab00dab892641b9bddb1aec93570101c2a4da90a3009f7b6aba98c05d464f9d7eeab645e16fdf02bb6459163e55661980c0cd240c913a80c50d4bc8d6e9a984fc745455246ad074245869abd315eb92166e53f170d81f1d3a75904b82cc039470cfec10e5071c067ad8d2bfa81d74b35bcd62902a33713076138963241d72cfee8c188a0bafd58282ddf2cf0c2b0aef63992bd49110a90e8817f519c8bd30a986425672985d1e0961b85ccaae91384aa40a8f588433ceb78adff670bc3a0189f7ac5456095fdf9c7f4419ee64584c63b8822682e61c3f5fe77305b8770b2e47dc3a4870d76fb085376268797a4633bb8cf3274fff339ea85cbbbbb8db9a8b702ad44bc8e652dc8d8cb1ef664420963d21dd7a7935ec2bb5d5c61748efad337e4427de955b4e16c77cb48cb278ed438609195b0d5a25189992d240d6e31a10e3a8755906773f3ac544225f870bbe538dbc1b1ac84781c1c9025f43f05383976015b5ef6de7262fd1951f6520025666ce3af7d3cb5b320b55db2456ca1cedc5498f6512b69907c5373d8dc4f4e7f8ab0b845a8454ffb04335f7e49f38276c7f243f2f9b8c755728b94f5865205dbb807c167abf48dcfc8c6b934b64a5d1ca366abde9de950e77058b08e811384777c870995bb2a80e0fe02d35556a0da92d68b5b6d7c176c429b4b80ef7e245d653161bd17db308bb48b0ed71bcc3c16dd38b54529118619cc7c10c27524f7d6f89196afc5f23ae59e2229356f3d702249f3553cbf28dc692fcf76b64d31ea6b0c9026d65012001a06fb7c1febd9b7825a9c8978d60574018cad42a23e10c94a1324e2cc273a6f8bfa776e0ef26cf7ae84d5bb1579185d9cf48e05508726dad5fbfba34ee65052e91cbc373bd26d1694b5f5ae930c0a19863da2738bca711024e23359c0552683bed463a327fa3f0c14b08ac857da1fd4221b65c2a50b473580928224a7fda530e4d6df26133d956b8336bbd9292836176590909ef4ba44e7e9db83e82c449b940bfc2972892724c92905d490b5e0d5b758adb43051d2c91b91b20ab1a01ea9643867cec7d16324eec39c89600acc2619999d1d79970184685f22a5c6f251573b40fc82157c2e43a301ddb8f01d58c0a6da06dc042aebe6ba6d11bcb23b4357305126c7d2deda0105096fb01b47f19ad061b70a9f6d709e4b8bd2f81d335862d96aee45208b67b0bef2ff4c12c3eaa3b587a4ab2a4b0e4e8cb987da3db8e753f7de61f47fe122763d4a4b728031f7b5183939b642af492f86b154a5794eba6025d64826c37e5f1ae991f5aa721631f8317af430970b2c61a05a61150a9a1a8efacb2c1379c6387fb4bc36f94c5ab3e56cdf57703fd5cffa0c56ac7f9ae675ca2f10af853d5e6700e4b254225ac8c17f291126d56206fd322c75ad4a5da18c4987462fafc4b42528bcd2edfe5991816c254ff1a3aa99d52e0d40c8e898dc320664e5c1596674246ce76c139afcc9410448e9f9cfe8129249d46f8ebe6dcda08b3aba76f237148fe4c543342967e9538f2ac65cd340f44de73673d29e785053684663ef257a49202f8612d726b74c7436dcdf91eee84ae4246ded89c600617cec39d545093c9046f0da03251af7b2c2670fc23a694b1fdcf6f135808293a30316f0d742099ba658a45c3944d51fbf4ab2141041aee80665892ad4d8e84adc16cc8284e419f410dab22b488234907d1c5ac5ff445ddc9263f3950a625080764acc89cd34e0af94cff532b74ea8dcd6f426c6d85bab50df8d8e7649b76f56004aebb0f56fd010be23277f850514f71b762f597a1ead7c089886feb7334e5aab188b46137b7a8f5d1be67ba189cb7680f0a24bd5076403ae7071e9b0b47075cee168dd93aa7ede03da468b71afb9379dbad36a7023a9aa788d0215422cec8e6359249fb5d8e4a488f61d594c77f99eee190452e40b4f6a8d472b1bb003488487ac22770dcccf5a871f7a7f00186c9254bbb7505f3915c51b483a28f04d5a96fe01afcf01eec679dfcffd8d4dd9159893bb8b9f22a04636d404cc472dca8701ac8a7a354e51105f33130b4a67be4ba1d23fd717039f1d406c4c9e2b45b6113c1d22ded78408d5d36b5af3097800fcbc1d9e9628ec3d47501ce398ff4b715b40fe7e7f8685cc092c31609d611b599b4be61563d15abc1f41222f9d3606ee515ca1f33b7f0af35552751d53f3e21c815680187902df6f82b73ff5ee5b71f55e3a7dbe7a191eb572e4eacda91bd225bc5ba3210fdfa0f246fe372548dd3939923bacea481ea1c5bcb88604b65be28daa36eb1f7f05d7a1c54955b6e9714236eac56cc0e066c637f2c206d0fdd88039decc596d042f526cfd7ee4933b3b23e7e6dc9fc57e2d95b5565367efda060b3218ced057102ff2f034b3b799cdfba546d0354a4ea6566a06b8186e163f9159d06425993977982ded309aa2a0cbc947a25afc199d37db74e50c2321420ced33b7a2b0e021f8148dfb5902fe9a3672bdbc92a7da93f9653728a8614c1d7386d59dfe72340de1c92fa26b4f29c1745a6dc03b92fef378290a353abdfe7409626fea2dbe0baed1fa45b1869d04ce0a0ef00109851b2f5fed9ac91afb09bd8a29a61c72bd3bc5de7994f1c0d7734b90ce97925d046cc7a2546511950c85a474091308af64830a985af7228c96e0ee306ce4a27bfe4f403368400c304a4dbaf178c3de1d0500a5b2cbda4a8e0bb9054d650cb54d6ac69e0284d2442d608021c401b50b67b0b8335af1bf52c599eef10acc7c9f3382f7798ede16d7b75e015622625fdd2c2213666a18bdf60ffa74b6ebb8515f7d89ac9b4a05ddc67d75f800b8ee2a00511f5c2413a1fc0376f5c493b421deba7d76d4308fd24aa6ad5f50dd3ceff1c87e194448a98d3ae7c9cf5cb43fc42ab45e6e008aec93548c926a36ac53cc864fc46c60e5a5b8498b7d763de905756fcb21bbe76b0652475b484ea039a3492d5944bca62116538e87c4686b7673899d1176c7e2ef586d435742c5c4705bb31f134bcaf49dfd72849e5d1771ef5946d40a4eb770f4880dbc0c9eec9c8098da099d4fa7896e6d27378c9d2bda231133ed605f67b41d2233f8867cfc691056f88a63ac3a8aa351beca2495beb91b19f2f265f6f8f265e49594d6dbd42d84e412b84a18f77e6137a6f1c26c0a22244fc8a266c792153e03dc00e8aa302f51124e9ca82a04d3898d9c77064f89aeeb074ceecca7aa2c3ef820fea9110e7b627ba2b10f744557f321a7bae27cc6fbaea0cd7f1259ffe965cb3427842700608db0d469e9f56ebf32ddad2afd645f2a7559eb2d83cf6421edf276661d92abf0152929a8e002c623f3fe67ce5bd8d35f5c8a6a89cf9ea84ea42cb27a72c6a48343303e471cd24480de5cb6be63b6cd45f685e0546f761f10e5f2e8793ce643340541a992494f9635166672aa27aa7987b4baed06d4d7dfa7126f9448a773c762a68171cb76f1c6863bed2f5106d3635865e5cd486b70497baa0b722358554c31935145a5bda2961d08fb6d0b99720cecbf66c87a71c13b95e4079e1bc4e4b6072d1b55c9bd020f83762b3940f2f911fd000e9c2e94ff4923e4ae6393d600a60fafdb1154e78d60ab7a5750ef2b105f4797ea59ab64544df87714dec3e75eeeb92213aa57957310684a8d7228466c440be0f6426b9aebf1096b793e350394e938640e0456f82430f235999b92559cc790f3ad249d25763ef164b94f4b7e90190237bd20cad0e6ae6610a19ae60114b99d81de60a3110da16e5a6498b7de873e546a86469ff9efd44328949c71541c5501be4c4595379ebfe18d654f00117f02ac0dcc0fb6c2de9eedcf71fa96d67e4c0c5df597bdc04c25d21f5a3104effaca4db5117d641b8fff2d76a8d94a00061313a0034519796fe96a2ff92671168916becef676f28c9b05af4e0ff397f62c3bef71ccebddf11698f88a2f974a0f1d094b0577c01b051381828a3c23199a98777e9360a0ee7345f76df0d03168c27b6f83b6223690702d0d9c203a3d84e5339421d8879767c242bfdfdd00faf63f2f8fb876415b772509515426dbf61c9c095a3d72379b18adb5ff09f2b459f4d5bc8d82a510a2e81dbbe1e6b733ac3b4835daba4fd51502736db6cadcf211b67617173c1290906f023c6ff370f525ce89850d8786da3adcf40410a2dfabed626f883086b08edf8d04fcccfe74b284d9b4a90f14d1a65391b7c9e538de5737756e88d2c15ce9f5378927f6ef0749f1efbf047ed61a977fc0b6904fd6feb1133fda42f996b02dae55a3e66494b6f9b8ba827fabc61cb1463b07638bebda380e6277bd586fe71229445e21f31b0fea097944f46be209763688492c10883f5456575fdec6fdd27a8b55d892029ae9159b7d9a0d33ab4bae6063ecd45be47d4266e946cabab0dfecea4c2d35d98840f128ab96b223a64e40fc3a3f72f0d84b2f0fb71455f64229bd57e13050f641993cd6fd455a76db5e6498b05476ff64341630b6c77e8b2d9f51e842f9b4a385fccd2e017fe04d5994c74a1ab50975289852afaead36f5303937e58f39f02df97e50c05800b6abb0cf6f0105e1f870ec3dffa8b8e9dee7ce3bf9b95d6c7dfda4593cfb38df85b575c672a9aea3dfbd18738726c64a4ad3ce8cec1a34ce444274928954eb45aae7c21fd22b88357c823cbc0b1e1b722ecdbc1761e41128ee01b734df6e4e820a21b3a00e5aba2e543c8a157ceacf4944c06742eb93e569d220a219416853643caeea6844c49e49150e57c389e74ccb90496171b7e01315966cce407e477fec029b0b3fe21a44f55b8f9eb2d25ed41590a2829c19e4f676b6c6b5b8e1ea6c4a849a41ed4d2eecb7c9967c69e87df8d43c5466f3ca7759b3934c3917e8c7482bd1c7b7ad07d7906195eab587149f22f72d34ea9187ebfd9ec1c11e82fb415558975920a71e11580eff5e2ed7fcc80cb4445ab244fef7166aa9908b47785c67a519253079085e23f951ad71ec88eb47e3a452a65d44e1ce1ac66c8d067c12692fc77521d92d10051e5e392c57ab0ab6a2f1cc71983f0fc1d70501956741add8ea0b502f3ebe7bc3ac930eb262f039104d086f010fb8fe80021a1cf5640a08468234af1c9e9c28594b2a997866f40561c0b33e0a3e04520e22c07b6623dbced8847fafad3977097428fe0299a623ab89f4114b831981f4669d4daf845a876bc9e4b5de2a795c6cf9dd0ca753c46543bbe1a5db273148b8f3450889504dd482e5c5e41ee2d85ed17c23bcc188be96e600b74f70f4e4d59115b2153dae52b1990f9c12a0a5e51914ca50545f3e82ef93b260a54ab0a99199a3670b9ce5edc8b8bb99097748492a5d5fb0588d1f0bc09c015f650e5f5d6a4764d669ce2277ecaa746e914025e7ea20f0a1a7fefa131d3371ecfd43ceabf8f095228c95f4531cc15755b21198080909e38c8ca5405763b15a74622d0c83d96e66bfd65dd1bf2edd9673dbae8399c106d2a22d42885fb2296759a96aeb9732f27dd92e5d902457e2f78606a5cb74d9f30c72ff860be8c0ce180c2c6183fa927f71910490ee02109153e43269d8c0a2181448284028cdacd140712335b0baa13850067aa6096b294217c6d113195ca1a52064fddde18ca8628798fa6a8f9c4c9a193071dae704feeac6eafda67e59a0af9bf903de5d57a89ce8c2d1f205dd6819438a8a36f0a810537483980ffc8c4a85a30220d164af704634b9eb753806f813358e5e0d708894694d72a53a0d2898458ce2da28e69aa87d8e72ff3a13d482e1cbfd7b3f17e6a1370cd980a92d66a3765bd8eb887463d192ee0aa8dbc7283ce9d8fdf475785e190284f7c7e85e49b6fc4b416c15c5e645979e096d524511de089e0085a68dc077cc1b5a0f2fa566a3394cab61193377a360c0f71c9ec4d972435780990d31761c944a58c0318ac2bb4c7fb7876c3b4c3e0fc546745441327ca3b089c749a57cc4491ee3b7ef9cbdf363bbcc833201838377f7864a03fa622a784916786b0ced3bc5baa380caeb1009cf0b9aece8c9ae6a28f0edbf2cf29095993637d59aee1488add36942c88cdabb0d2e69cf3c7ff9582b212d250071122b2c810f426db91e0c9632eac04119ba6c6216419dcb30d417044c9897ae81d3c06fa59ee7223b4a6a5f36cd03912efdb18a69d8a9c68f37c1e90b9c8b5f72ca0083145b20cc29b523414f0d828eeddbb51f0358a66b7174c3ab4784bf56567c1ea8b39cccc59cb338bf84a5eacb7bc56fc872edc16751945e38c19250d28691088459d7d9128fb84b35ee8fe48481bc0ad8792d5a86cd493d448c65ec841b7a880553a586d862ce088f3b14602fabc30a2b8d46657f27710b2590ad58557522021ee3a12daa5a9fd33b2c66536e2c5a03165b030055c5202c8b0935cb39b8b7c539bc13a1601e0efe691794fcea3908f100409dc972b149f1680736cc9a4a7c2572886761f03c5e091c65c5024289fb87dacf5ef7ac19e8f6ffec009da657acc1c7627a3811a2ecb3b815c910c3dcb309e74f164a50d0c383bff1f25c634d72bc4f5cb403912578d54c38f4c23a71bf738e3b584fafcbc01159a0bc661b60ebc722fbf2b6dafdf94bd4735002608e8719b6c09198fca6bf5f325bf89ff4073c4009b643e291470e7b85801a27c7fb2cfbe142ebd1cc1d0eaf26d410b5207db4c3537a6e442282ec1f49ad907c6e87746bd2d7fae24e93670e5b93777b194105fb0b295034ca12f07b3e5b11001182c3d692ca4683238e85d4c3742bf4c9968383ad1605ebf5c1b0176a8089756d412cbdf61a98ecc03840acdb268fa859047e2de38ae3f8b839aba07326332b999e8a3152f81c957ae03ed4f6ad8f5b8dd5a0005943466fd28b79a3a5e9a3064776b06fd34d5b1b987738748fe01a4955996ab88ff02689efab9b24387d2bb5a429a25b4331f3cd6114c429e2ebe56d2ea2b0aac2b688dccff1cf594d268219111ce3fb1a753179ac70b92e34cf83917189334a5daeb25e8599fb05ee3fc750783ad240cc1a7264396b21bb26ddcb0c88a743b731643ac54944a339c1b4cfe8926f16abd4d852a93285b6848d3f9086439d75109e5ade0d4a75f3793187c4219f2c1ba3b098b54e2765f57d586fa42043cd667512833037581559902f4e11556ce69c930efa92d12d56bd3643be33cf65de91edf5c81074aaf0a984c9b3a2dbb9974519b1d09c053fc5808026cf67d4c63b33a5bc86f763ae36dd835af3740dfc3c59d947a1b0776ec50538fb195f9aa6953d321e0e101a7efa53b52e607234935572d126271abc608bb656d7687365ef5d5ed3be2423fdb3b6b14014dfa18c61674e322cd1a55243f181ad705cd098ba4b12db4a8151ca31c64406796ba5ab767daa175542830a95f74bebfae8598758dac9b8f7519e44eee8fecb629088e937a32faf79d0f70f413eeed088d4e20ae2c91d529ab6495b04c2fde0c5f0dea4066a6fa06906e10dea8bc8b4723cb35b489b139e0643fbd00d5ca3797cc2327ce668f0c72922070dc64ae1b7a6105fe22c1872b43881bcad4aa23e46674ec3d60eb44a9764983ffb1608964e3192ecfd87ca25c3db6dc30536e343060e729356a46e54ac368d5f041ff8dbfebeda4af84a81b59b1ff80cdfef55151a6d20c80d10355e71615cfe266b701076525518a3b6d0c6ca7186c73f538e5b557bdd56918baf7fd8951508af71695958ec42b956158db26b9b708dafa60cee93594404438205f483f9f91f80cd02966b6c34be4de454292af9826fb594af4bd30b81b26c596486ed40ffd259d2fcdeff85939a963d05e823ff7dcf1c813aa3d211d7ff060a7d0e5fb9539a7fd13f97b73b1aab1581427c9cfe960a0b5fd56b7b331b3545b805fdcd65d1ad6e29550c11f95a8c51d0f218b52ff5f32fe38e8d945b3684401e36f8ebe18ea68b26eaa6530a36c103eec17a9a55371f9b4cd3198269a6965c304c88fe1650f1f1cd52abc2e565a9a7779ddcdaefedfaff05f9931379fd6b3fdb09d44fee1111cfe6038a3773f4c7813c3afcd5cf1bbb7210b9c9a23d6188761c326d4a1580b1f3f916c08541c159d9aa8f2e7915ba13e87fad3b05b40b732300102d92977f89848aca474a63013c5ee95784b90a36c30151d715129dc884493ff020ac8ba60df57d0199087fba22f53792fe7d11f0ecf1861bb8bee87b069753a386074fbff2b584c239b7784a1f64a001d3ebdbbd437fcfc0ce1378999fc3d6ffd879d648804158b5de1dfdde7699d4adc04673650474e2f4fa7c62ab14deec5cec7f68f4b26fceaa1ba721fcc886556074d72525c00171450b3539cf55234a171bd6ae2a2f3c1512a4873dfa85caa22afd89502df7e3c028c4d09938dd381e1282396d840368e5841b5d1b84b5a140de50361d23834bfe75382abfaa5de4cf324d6453523ba11d3a76a6a41a0ddcd692e0c4ba9fd1dce6e9b12ea6ffc09afde013975015411a0391e9b7328f56cc88233da148adee4aafa22951caa47680a8894541870411bb578d6c0cc38b266febaecb2cab4e5f59eca750a3731c12b5c81ea69a7f8a3b569152c816670ae341ac188a23c3f6cb4ed75e28d70e7c3904cb95da3f80c5b78bc0ac38f469dc19841088e3240e0f7b227d142bab0dede355a16605240409864321889ca2d02327ddf1e794d28a759bee467904835c2ee877200e73691d5b22eae179369c0bd72ba0c267a137d7f95e71d121da2e9010db1a5f8f56f334f7c6d86934fdfaea45542871f95669e4dfe4a6380424238df83d1cabee95c2fecb7e934a147c85288c6e07b7d56294465ff4c5d3fe14a38f60fd7773b4a66fabf907c712974347251fd1007ef6f5e71c278729dd50939f2a553f7b366e7a53575986306ddee996ca46910a8a9bf910c9d723f1a81dc14c09fa81121d2d7b3178f405d950319babd89c09cf84c8533732830862dcee14b0fd050a4d6d079874928acd4e8b793a244f92b068dcc33baf1b3525538f2f02a92c3da16f67946151cf0d81c698c5112206eb3e52a4979ed02b69e62d60af3136f602a5307271365f2524144e91c512d9003e26c5cc9493a69b90cf4d4a244af98ec564f7b3c17f7aa5a98c7bed52a7b77c78570092cde0682c8de5c87da5483b1e8bd03858a7fd01262b954108e4118842575931fa988ff1eb3be9ea8e2e69f3996e774bc9cd23c1f66ddfd38e1a5e2d49efaef9951291a085e461ed121f9f92881cd64c18e0851980e556c58236e1dd4b298eca7c99725f59cb77b626bd9d954656f5f1a511543db03e23ca0d9e4afd8f3fe690ab5022b756a49ea86bb0701f6c72585de095e78ce1d67ac7295d44f8b842b66b819ec329a61710cdbd84a41e75da3b5493265f697541451b0b9fa3c33294b36613af93427f4016e34528ffbedc8b236dd9814b0eb7c48d454e3829e16d6e407375f1dd0d2632261e9171c8297397b91136e66b44badbc55d251ed20be25bb219e49900ebee6fca9c0798a2d6d2a3fc6dc19b7affd1b3d7fd24ebb7ed8ebbe89cef1c81ea53715de271b8f2ee806abea698690939ebb0088ddb5c81817c42338a66b6302a9b2594dd3c51d985723872f1f51d6e9a90e9ab1411d462018f7688efc2e660e1496bd845d3c8baa6666f4b676d08bfc79ba7a40869daae85dc340cb24af0270fa4977359b2e4577cc305acadcc80df5da1eab8ad2296f6b4942be6bee85ab5fcc4f38846d75376126b04e3cd045d9cf5f4e4b307e058ba27755f6810026fb605713be0c8c12319744a0a3bd6567dd8bdba7b5879ae11aa61b7a885c12ebfca589d1f80c68f4949283cc7581eb540c97edccb238007d975825f3098a9cc9d08a2cec418f5a41d6e4f3581e948ec0c4318e0a2df3523672e10d5f9773ad6a091d1db443ed2e8dc35e39a92a15cb0ca15cd8d030582c19c357db955e19a4522377056297378e4250edb0ae98a8e1b6779ed0ca4ee2482f8be4b026c2b3791c42e34d6f6021bf17d2c37db85a39785548ab29d6fdb06ff23e0f076b94e427ce8d6c7a99eac3237cb26340ffecbafdb07d65c5f04c1741f6631d9d48d3be18a358bf4fa0b1da575dc1b2989fc0588ca78f7e7a136ee34862ffe30068b80fae61789a34898397167e06bd2cdbd02de1ca543e51a8a7d9d8f9105520a2a41e4673de46635973aaa25eb000bc4930183aa0e864ff5bb971610c1caf868377c6abc198b7c0dcd95cb127527367a64feef1439cd691c3886b2e69a75a34b50a2e76b635b7d13f1b8afb3dbf6db202930c1572f47fb51a495c5821a43bca2697c698097462a973094b359db493a186fd7b2e4fd2d7a9856c8a7aee385710e4b621c3172860916acf4d0a81c47cc24d95cf99b35c4f739d7580a4dbb365d9d10c176d179e1c529f8aeb9d3a4790a9d9bbf0e736a61df3c660c8b390c155ed5a9f1de9e72ff81d49e993ddf6079e5a801544f05b78eda6777556f28655744e5585fc5c3e8cd91cf9957855d9f23bd79e6d1ff9a39336c0e2f46b134f7eb335036fe6c0cabf44bdddbf2ebd89763d6b73db3966c90d014c0ea52c8c61849deddae11dc564e5ae5c2c8468195df8a91408ce2620962cf119cb6e4d7a1c3cdf51c0043afbca8b8887bb93a7f67f339e3b66cb9e9d1d8db097cd5bb2d3017b27c4fbf07c9d253411c6a7bcc3b1cb4d8d1550a4f9667205238603f223a9bd487d12a53581720305267cbcdea615ae59ef9eaa91694cce9bae9871dee6bd6e14a9b6f78b6e919e1398a6ee61f7bedaf2c59dd1eceeeafea575b694f549a87c801f7ffbe8391894e0cfac5ec0b14281eb3e8aa53bc510b5bc04f4ce88ae6a238ee88c407a8463c218772b77daf0567a1acbd55c43f00c9798deaa2ac3b3fa3834d53630b888a434a06902d2a86adc78e25bdcf05ade1a10717a55c99c6ef831da97485d74b83d97b880352f7701ed29b941e923a7dbac4c83f6e575b54e50223b72f2b49750932acc39283dd70942f664341349dccec20065247c3d6b8933ed1cade5796c6611e9849568f4931b584ef469603fb285a600eecefc4a025a4750bd5b431c578dd6e3fbce7709a62672e1908a15437b040b5b2fc72e483acd789d5f46d8b32c2da6a621272e1a6e44aef2c5c5083c67e2da2c5cfa6dc0092c7eadb9751b00caddf8c0aecd54935c11b93562d325f326e5ecba22af230c76f6db8ea2a2835d63dc9ed02f7534085f6892c25b3430e98232db2a678e88641279d40755a0683eae9486f58636f96c51150d90e3b6047296e5df4b2078f2106a4da7511e30fcbf15d2ac3e067fa1f9a9992e7ea809023acf5684aaa545d04676e35a1f9f193146c941be2b1d67ec89c48d2ce7497bcabfa382209f8674a34e50d145c8a1525212f3cf161a6c17440da17fbadcc6082b681dc485c09427945b73b19d2c8bd8ef4e06ea160de2ef98752195ae7f69632a0c248e9c8cf5756e449e58c66d84ccae87cb76e663cddf6e07a2284025c6436e5d498a1c73d1f3851b7fef21b84b75558d368fdb6e718f33eba467733488c5fadded82570ceabd4d55625ba87bab58d1307444d06cb9ff01eef2181c56b23e5e4a0949d40ff5a1e142c122caf0d83ed07116fd16b17961aceeaf2b32f59d80e96ebb5b404d19059ae73dc09e6332f56ba3cbb20bbbd8a298aef85f4c70accd0d424b379c148847d301a0c7eaa857ebf77a83bf81ef68bb49237efeae05bfad9b3c60d6354ee1b3253447c4e85825af469c82b8af0bb4be0366e15609e8b32d768dd20162550dafca8c60d78284cd23c10e425534a4d541e27350cd2f2bf9fecfb8b3fc9e280da6e86ad299e6129ab17f698a9efc2ad4ceed6a13e49087ee1a79c86235bc791dc657eb613f8f8038165e453f2ab11244dd386ba69b8cd35b4ecfc98ab79431f62b21bd50ca640e976a733d91dc81bbd43efa2fd667181b4299ee01eea7148c4dab499af4598eb8c773358c2a2aa0ec668f67edbc678d8ae7106678a83839da4e0c33d1fa171bec205803bf9167bb853c36c1c383bc2d13d323f71e15cd1cfe2846d9bb54610d0079de9773d46df45bbbd5f94ecd19f5b5d701cef3e9a495528ace57d3205a65af7a19316a398d4e819ca0df245ffedb06d085cca4ded1e6c247b33690d858a91d5e2460112c9dfb1cc162ec88478c6bab1b61b9ed133ad1905d3efa5f14a318b08a86ff4c5eb0c12f752ca8e5bdec3d2d2afd7661e66e36c02dea6923c8aed1198549d5fcdc479110283dce3753720f95cc973dd9fd58cd1d3ab2e8682c76d19b596254d8d6e644317e5221dee3a38f13e32113e51bb13d336de84e6094b19aa3128cd1b3c50f8e5a6e5db35d76a3dbe4ebbb2d1461697266b6505384a63b94e011f988f66645369e1235c07b4fe20a9c3aff1af24da6d35b94c0cd176771874bfcd23816ccf7dce4086b0e7fd9d0150b93d45d4a36d71aae796548eefe980b52b342c3dffc54decff5ebe3da0eaa53eb06e9ed01379a9b5c32aa65ccaca45c4a6ff1e78a9c371ad9ba093567ddbcd360db05a1dd30433d39fcfa4ac545abf73b51bde9344111bc85922d9cbe9e6649e98ebce44dbe77ce3cf39d2ed8a5b657684d213d8809b0245bff498172cfdde80fd2fedee3386334c2c2715fe9f36f183607dba276219c26819c6ca8503534a304be9c61f7adf75aa948b57137aebb1f33cc5b9b0bf82bb37f55658901efcdfd978a9edd160ed2d5867cd0d0535d47b512d73bb0cc5d608daa7fe8bd6a3551d51da80f4732c52a6a70c12b9039f37de16eed0994c73322e9ac63f1b4da940b0ebafe693b63657b7416a9ab6bcbbab887d5d9909721c378816ad6c3ff8be2cc087963132876e3b25846f2feea03f480a53fc7861ede9c0b082fb5b8e7d62f25dbd14a0d208d4d109178d9e318516a954d1711ea1cf53ed5383132d851f8a7d24cb11f1acdbfd6f633138465f1bdfc0acc206db1983ac712f449d1cf7401e485405588cef09952c232e69b299d36b7bf3a229d35a07974136e50369d2627aa4f36d1a3b6e7ed76d54241e49268d42307003edbe42df8c851241f546edaaf1d7bda36b703f0017c8372ed706c51e1fe58631883a591a56e17f5ce6e5cc664505eb84c4218a4c392c6bec1b4b932670600404d3a6d124940a38838c8498a931e71aba802f060e3666799bf1b4cbc1d70beabdcd99d9533baf6b346495aa18df5aecdc5f5df11f9eeb6ac3670ff5c4aba6e32818df147612ac01862bf3713672ba0b1505db7ac011fa31220f4e52cd78c8d0647b08690a34931693662595ff7e07c2d57c5ce714c5050cf37d99a50c7a330c6d5e8e7a21928276dfdbb4897a8be54eddaec2efa70378321eca6b980026f75aff51807d586f4a0b57169011ee956497b6ec531c59aabd742d14bd5a5fa262ad6385c53bcee2e378b5e57f50cf8f9bf3c46a841e8aaba5951bfc3f4b6348c71b8f51ed726d573762afdcab6b1cdb122551c04e6b358b0f863526aeba47270bc93fae8feb690e33102cd22ee5c4d3febf256a1c98ffe4e9d64dbc241c39820b95fabc3dec579b31753b62bb25f5444a9108493e3c43e480fc73ec9034334fcfc8463b02ead764b0c6396b50e696ee70cbc521f5588dcc1c3d3a652c1b48b889261f1372986a265627bf91fd6b1c052a0491190a8afe72f06456de091d939e6c0753cc4cbba371491b8fbab7c7b8b3e24c373ef7808bbf57991290b1d5aa114b717d16ad5b9c27d7c0b8913d8c7b9308f0fcff9f8c253266e594b6cd0ebed90b4e4b43c942370169077e060cac6238249d08b2992f6a5cc5597d14e738a7f0eb2e05c843dc840acc5e65cb627159a4c30ded0e04079762e3d9bb6d318f2a069145b4c00be25522c7980ed958c247d1346d39aff183257e71f0c70c683843fceb7cc569cd73d67c01f700e90023c92c100df8966039a07e3245963cbaf6db69ebdbc0a4f27bdd20399fadfc9d27df149330aaa6c2c0f944198ec0d0c7389018fe9b86793384766ac9ef4ed4e748f760caf89e281677eb44b715569cad9d1a88659d8691b65b0e89816e22785f4ce8d68cbb7a488e94a809fb30b4f9213ee66b582392bac1309501cb4bb8b4b3b21fb5454f6395cb6080b03e3e9745a14cd027f5013b67faffda2920b4b89635de132c8f158d85a485e06ba6074e61aade875804a82e2d367b65aed2698cf35ce333e09cced3ef7dc286ffcea29a310bf1214c8bae9e48dbc9000e2261cbe05c35fa6a767fa18f33829746cc2755203df967852ed89314d1c4561ea2583139c8a07bd701f5a4859015bdae77d95599d1951f3b64aafb930090ea85f1a71d1d4646c826deadc0d6579469b90e99858fee2f0ad8760a5cee64b3f03ec0be506f5687b8cd0d352aeadca6d37b21bf34f6da9fa37a57885becab159e1a260eaf5726174c357137e90c2cba4c1fd1b301479b26b7744041b87c667ab23c49564ebf74a1953911dec4edc2601d625ee0a9009e4ebacd2784da31c965359b5492f7d786b949ab39373522d9e12a1608d4182278857dbf01a2ebc1fc879683befc94922c036cd063b81da1383947a139b6eab1b1802a39d3933c86fe11a514dfe5b827d5c741dff022ed48a609337b09606038a2bfb85e9460d3fd10961bc2d6568790b369a585b4553e56da4307b407b774425dbcf804e36c2949bc55d0d3c4bad10ef36612634fd53cf00884f26b5c235ce2ae9d1636851e80b05e1ff4e44d0821a3fbde458f5915df9dfa67f458363b382c287cfdb3bb7db41d4d1d2c657225c096c6cb1b0f5dcc7fcbb45f874389fd32b93b8c546c64be259d8338bd18b57f95f342616561a0dc7e48b2baf78a1c3686276abfe709edda15e2e5f071969112c008ca44d1f6c09b59c9abf37c9fe9e42c977eae2d6515abe6c30fcd5dca425679eaa38ea2b21d831966f07c0888cac21d2edbde440e8220b9bab5c32373d9d0b2ee9bc7df6e11930f1c4e8f235e783df794d5b432c61e933f649540efa6a2434330a554d776fdf2914a8abd23ced984f67823a5660451470705f6a6e14bdeae3c0f8f02530c2498d8346a4e749ba183ec0957778474fa971801b973509bc5a531afc9a398e352fd24844b9fb01a3ddda47e6bab40734b6e9064fa60d2a8e1acc5753af261a45d3518c44c11d2b4124bdc906154aa9465f1c05b412dc4d5b19ce18f20274a6c68e279e40543c26710f374fbebf9951dce977ab940e89f5aa2424a6a09fbcb4c02dcb9bad09838468a9110012c53fd8ab0045a7327e73bc152ba243ad5ffcec80f8e257da155e8f4689099e67dec0f09f15a5a2481c2c86c2c392975cb86ef59855a214a6fc6aa2da8658d75550a61fd0ef0768aa6ff2f0d4946e258bf8420ebf187b5a02c427f3e25d30b792a5b177cd788da07be47472ba9985b614426035fd98665e34f00f188bde1c745754a43d1e789f5214c4e26a4ba1511d3f205540adf9797dceb07b101bdb1f82dbb0689faffc5d70254c9cf252faac335bc361a35c01cca3758b9f8b29c7a510bab8c1b2a25d455f8071d48b422f716d34f94d89b1e1e73036ab4973a1154d9bb49499e499417d5f6099d2627920d803b8f0bdeee1ad0ad363c1d664969a2349f2e25e36f84e314123c85a8aa21b21ac212cdf551bf1fc927888132263c40931bd00aa36cb964ee05210c4f3d33e36ffdbd9b24df399361128ee0282a68bfff1ae0393f44e63ad0aecc301c344d9b154864a9d423e706f0988d971e43615b3d87b8f951abdfebad8f642694b5d00955427db3cd9e2c119e3cce342572cf76bbd5d77c558d9e9a364e307fc33d00bcb14fe9519b452317c0e63773444d7dbe66786d07f08912ac69363a79ac1c56704115c6a98f00125c8c647be0417e964b496af6aa8470c4430bb37f0ea8f42a8e41ff52f6642cb89585e4caefea41365ffca7e92880cb48c20ddab1aa793eac7b3cbde5999c1a68cf967c227b6cea4591e7b174ce795382afc0de85a80ec5224c5ec2eea81e8ef1a50da320f5e05dab8c2a0c485ba877b4ba789c95f8242889804dc50d2149405c2677b56ecd6494c7b2d7c373455bd965ba6f10d0935e5c72d4f941363e925e72d9e272b9c9ae1d4540d7e153ec20d112d6cede799b9928405158f4e39f1d091bc6367f3955609936cd63f98c8c02e9af4330cabd48bfa8a921f1635f3028d384740ee3cb08003f8542929f1807c75ffc426940cd0d9ecb91df78551200fb47203c168c9aedd656af9ec0ed61cd7da6a44018cd908acdd52d566c54ec8629616a66f3c8543cb7bed62318ff7184abe5344b46a3e8360dde7bf2ca2fd7fd3b1287f090ccf79a09681fc988772c315276db4366197de40850095c997b3bc28abeabf51731271b5cd95d09c5f99bffb668fb741f291f7af06c09f0ca0d95f5fbbd590cf271157b14ac1569ceb04ef737fe8e789cf1b88adac6bb188e8117cb88dd6820f36efc6ad50dc84d94c8c22ebc2e5a988a33cea97bc522bbbcb76235ecdee1932fec25d99c3e920000f2e24f4923ed1191d48c9f56240a355f5047e6a0f5a8b0121284869f151cf689e3927f11bc76e8ca606dde2b745da5c5359bd2604af8b400eed9656c7cd6b51dd44bfadc0a672eb98563dc1898ce78b8111eacac79aa042fee7387f0f089faa204c9f70ad6e1f036939e318a47cc74a6d26d037e155549646770938a0335e6fb31c4a78518012f3303da9edd8dc8ba832c0b042b21338b011198147bdb3a63a923c259ed81e78658ed3d5d534acf7d42166efcae95df8c0c88c615a5b0e10c9022ef21eff2a2825590cf59b8b16c646b4a2a24ffdfdff3f2cde2d3c0512139897a0b8d3303dfae2bce713e05cbe3d060c92352cf5ffe0765c46786d8a0c1fd84fe6735927d67e5c6ad756a08f2b4894555d3942ee97413f6b47c802511c94a0382f24a3fe07a7521d7ba3c1356747c54f69adeaf47e7ad27ca9d2c2a303b749360526078deec13651a60518d7bf094b4762a3867b52d7c2495d4a4331827c5daf4140fcede18bdcbe9039542b9a8e278e5f32ae063ef2eb68b80e943fc05f65b20ea44887aa4f27eda944f3bbb93868a15b05556f70ccaf183aff8c3a169a0dac9f04bcb0112ff5626b288ef013623af1ef35ce508db7eac3a064843e2fa09bf5813e013f62229272d9c67b15e08c9bbdcd0a919a42ca30ace3863f82bc8e04f3974e3588f0a0137efb4703c7a2e99496c91a847cb2d8f614513b1acffe3c2f05fea83a1367031a49390c271507d98eeb3757953f10d6c340712a13b7353abd5be8de3260c427eabe495b46bb1d16c12d78b451f807a3d4b608ac3d3b04c9ec4d05396286157db42cf2e793dc0b6fef3c393a9aa53e9afc200638eb674c52e9011bc86733de3c401e688a5e5755c395aa7f3e8093db3757a7a5cd0499251b7ee838c133bdbb64310e0e5c0341ade62b776bcdabf80fe3c77c8e914ec6d5160332b9e784c285447b8167c3dabd0d8c63b67bec2b1567988a4c5987a2381704d3792b9d4d448d03f4008e77c9c0b52ad7175ad88e06ce4f4e1b20abe6cdb738c7244835eea128621e9d627c23612eed781df55ff4e626db56eb27c7b269c589fdd54789ac98f983c45c835336a8076ff2ca8e02d014cd950954de0e8d279c2bbb5d7faa33f7f4592a0c71e4c0bc6b00bdc1828cdcc347fe9f0f1838a303eba19a7646edb0ad30792dee1b765f7a684ffe5391c6bc795129ac46c4ba47846bceb319b648b13348a6804c9dd3174b972d34f5b37e67ae23db1a4737869680517da579bd9563e7b694aa254454f7deb5ab8d7900233adfd0cd6201f032d987f991bc18980824237c76471fddb5635fa927c1230aa9d74c0275f356b82140ace91859110206b5e2aac5dc761b8043afa4c0dbf57a2f98578dc6609b7a40fc89f1b2d17dcfebafccc3a8ef3c49a5e2dd34d4e39625b712664fa65e6483816dfb5be73551e60305dc7b160358bfdf95fc1f3c1227606e8ee3a7c5f65c5c3ee03655d99300b10071c793e7cbec0b5c32ad48cbbecf9691f9ba302e784bcaeffb319732da75d005703759fa81e9223eb306efd15ed17c61373ba1e8cba1bfaecb2cda2f917d0f4f9e90297938ad1f2d274c7b6a80b3ec93f79926c7419b788045c95953f0ca63fca839a2de2a9766b29e56cfdf4e3a294ba6cad7d2e57c8f7ba5c1529645f248e4cef6dc437fc19528ac9bc7fc56bbad061da859307cf6b07bb1307ee61e613c5167ddcf71c7079584c406a3cbaccc1d181ec062a6ea31f9349feb9f69cea3fed85a5fe51f079f81d5cd1feb8fa2336ccad6412522bc4481a00548cf5f1e4fb2f95611ecd4ad41cc046f4548888485c19ba2ffcdb7cefb0d81f2f76ab1ae79ce3e7233a26821610fbd5491b21ec8dbb8b0a500d525abb016fff6581a6c10af9a7587f86ff327920dadf33560436b69dd3a66e03c36e534c1b55884a50df0ef2929f20e7d2fc7341f82b68df338eeb92f3c63f8d5c91df85815f49834c3a05e66ce12079b4d95a86509015dff8cba6ecc4c90bd0d5c67504042ffe712725933bfd39df0ae5bbc4ac9ea73458facfdd448cc719e5a9151205ac91bd6e54d3d1d966937f9c345b508f4fc3a79ba39ab1f39d326d5822b74d29a2631d687cdf4baf945ce5e7345c4fb301fbdfd2da58199a123844ab316f76f336467f601cddee2db6f080d43b3bfbbc957bd77707e1b49a8bd208d11d15364c7bff5ced730f09c9cbc18e0336a51af6ce7753db685a069d07c1f2b3fa96310069040bb6c39f947a43987746492869ce835c8aa0bc08d00bc7d36caef401e63f9beff5fbdbec2240a579d9244766a6565e2a7d3f3576389640416c136b59911c97e6750dfbcdb39a4f086157ef32edc52c178d84c075a4af25f54ca6da462411a42ff1d2fbe2a50e446e034e0248d6f5c1d8180d9eb7eb0e770b722098ec107a347a2d42d44bb6a5032559ac2379f5e4653b37ce45eaa92ea9e9ddae5a654a15de9b5dec6361b76b7b2cd2c78c917333d6e5f68f9ea1f3ced8a7316f96baef88e2c3af7292493ff300833c298f45e2aad66ce56c847ea3710fbc07f9a65becdb4767de08be8010d25ef09d13e7e1eab2511802549f50c9df97196ad4c95f4ffa80678cf979b26720f175b2f5dda223d908fcaa8c892c82a2623638fde81c3a34a63503229d7babfad1f578f73cdd2a52d545852946b0a58a7aa8ad6535dd0dbf3df43f75a0ef330216e317740f63227278e3db9907f04129894dde7091bdef3194d91a784dfb00dd180d0c7935cec834fce1711b46c5d4586b2ee977cbfed008a554bac3bcfe3fb4d9d7034bc69ab9b6a3285042267a8eb0d590d746a853e92493b67186a43872b4677301de423bd0ba6b71a8762f0baf1209e9999ebdf5f748b162a100f7dcde8e5ee45e5e989045261ba1817252793c20979d58b41c8baf9c1ac72c09d1f0bcf772ef16aaf26fe284e3e083c73fe6e5c136cf5ab0cc26682edb9fa089b8452a290f3a46d45e208d83911be5580e75e4a1a896193015ee916ca84632fe2a2e9661ff3130a23dfa8a744dc028dc312910aeab6ab2c2982c6aab291157fb7bc5bf5f2e8e331086920acdebec1f60c13d2c9c01a0cf6d3fe123a4d0ffd0a303e5c8e9717a02ccd71beeaacd6159c20dafa36283354a29f10d0cf1413fb4329d20284867c022b95de7584751e1fa3788f08bbb455e3c62205431944d3e1775756475c85f7f326d802f3687d2dccfc5f808c9a6cd7bf87924a8bd71775ad54c290e263d5d45aeb26896ca703b9133ca048f9be7547a5c43642580d00f650a2f349b4e791e9bfd08520265ad24f55e730540b6841ec14588504d1cdcdb82b3a6ae4669d73b555b22adc16e0b861a8d462e2b3648db287e852e3bf3264e2830d05c30f2b3533cc76512216efcf6e55a9903ab7d431eaa566ab29622224f3434dd0ce762ef46de8e6c04dd09177f3dc11821a7ff47e1b548dd694fe4a8956b1a944570b870859a23868219bf95f6100b4350d87d6d196a6376f66a31758fd66cce4427389f6a3be4366bc9c6d6f6dd32edee081a8e5b14fe411870c9a8d9c3e6f94d0d99e9a9ae38b2aeaf9ada5a9125bea58bdfcb90b4253f8838a74549712a954865103fcbaede655164a5c94fe882b26e621706bb717fe5a2337bb5839de2baaeb40197b76f8e6e3e07ec6cf5b29599ebcfce66c932e69be263fa4427840e91cb833b6955a02e1fea8aebb18e9a68950c4d75d77ccddd3e2aa1b0a28306c5d74977bb323553a77ec4c0762a424d0e9e061d5c885c7d129edfe98b63e202d25d129dedf54da003c77b911d8e6a316e019af92e6bba947f01d6cc857f5f1c2f8a7a063cb5c911fae70e0b8937770229dda89132b8c799849e0836a7d251757fd7c2098dfbe12d2403b02e43a35cf972a51dd4326ab94124232528229d431e6452e5c4ff56ccaf25ef76a894f4946213a1214190c0fcfbe430e62c64037b3bb51cb4bbcfd7b641c4b8e3da7d70b0c3136ca3bbc8be7bff4eda3d86d38d12236aeb47abc991d4c9781b31e8530176f20a772d952da9f10bd029506a60a7a1f54089beec241f7a9c530b77a335b593bf5a850cce358f4f51e1993dd43220757304524901e61e4a25252f9d935f3fdf16292dc6c300bd302fa89dbdb384ae5710a5ba8b2128ae71d9bc611d72617426b7575cdfc72a475fbeee1789852768ea8738c549eaccf5f484b83096cf5ad08fe33fd0f2580a8368563de2949e4b4a8d74598d66801a9c0b45ce5f2dc8afef8ab0819d17f8c98e418112491cb4deb4d7aa4ec032c6c1508dc1b364c2f1191451cec8ac97d497c5fb0eb38c7b6a3eeba05bd8200b7c9f426e77c5eaf0ed94a5f5f20237f6c7514d893bd062daf40a97983e7f0147664ca84b26594fe34969ac0646264f465ca98d91184e72a60f9d446f47c8ce76d2393a08b33626f5958358bd6f5056d1d6b8af55adc8d9dddf01e18ea7bd84f215a9b578110bb725df587abe2db9850d816722a57e12a729816643631ed434b8df455b2007c97a5af4d4096b8fad67e4a9c81ae270cb61c84c8ca332da51869a778c71fdd8d3a07121329ec03b8b5c4919d60f16365b814823361c866b0231bf446ec06536808a244a25f8c9627d1720f0833a16ba0ef112437e2e228d31846d35d815f3f2ef4fba8e7c7a9f3c8f21732e311bb83ed494c575ab3e8fc29ce02ce2d7c27f618d3b8ae429a8f7378254fa59e5f6151a16be5d9e6b13320f4a3c33861d1a3362734a4e4cb6ae473ab860f1fea050e34880b632f2505bf447f8a0232782f89d75dfb1459045d973936c493e054477d146113bc0660e247dc12baa1c860a39e766635627b4a51b108768e7e71332f803dfb2fc401e3763f95cb00c17b4983d085fec53e480608b308d5a64dc7cea2795e6bb1f19dd33707435c80b94631f6a1973dd773ad668e3c9acf9c2076b3e9a2a1328bb10d2b888c06f24029c51b3a9aeff6bc416acc800a2912853ba4cadae995f075d5e3b454aefee33dd0c6048e7436324f2c7eda766d03f5e3f5fb4b4019cb0a28781b21d3b5aef499f383b4196b9e9fdeb00991fbace86b40183298ef693ab172ced28c1423bca9cdcd3a43929e1faac4dabca8f4619961eea29a4ea3461f1b93682df0f2cd563233f34be9c9b19def2eb89a39a785f55749d76acb827452f5c01dae23a292c06e606dfeba9e9fba4824cab2e796244623191a058e77ed7b7bfdd60d6194d4eaa6d81672c8493170fb32bacb31a3cafd500933aa365ab0a96cd8f4018b4102cf29a969dfcc81fbf789df5c91e62deab327141c9d35266404ce8d01a88a1cf005554400c23f596e4267a4ec568e047db20768fa9f3712a6eb199cd937a66484b40290bc8fc8e050682028c94289e1974d4af46478977b7519e1ca5aca31522562f3e9a8d25a7fe2912623ae6b8e119d345ca80a313b68eb55cc6eeed01526350fb93223095c114ec4dc797739b62b49b9aa82e2b000378c50a2031621442f8f5e502ec578ca263998ef5152304067568627b92dd146b007364946960e52430c82010d690eacb055dbb51dafab513900b8952c5c28872f4e9a4f28826b40041d6d21ad3a8c7b09d7c7dc342e39bcd5b5f203632b2442ae81472abf3434752c215df3b675e6ac6d1a40f6d5b39c777cfa6635319690659b231049901d431bb2f4bed992b5ff6a2c845faab6731be290b7e96550df15f54ef75fb577f88956c698277e14f966b4bb0ff4e0d5e094435d15aa1947656cdea7dc395b22f842b733317de0613cbd0ab3a1f35e0690b058a089d8d5d10af5aedff6c366444059e18b64dc4764d8fa3f51c2ad9d96860d040382f433b6a70947c5d0a7287e7df7c45fe7a375fe67de7498e7b11ce6db2496411b729d06916bc39415d1055b6c8562e7abd62ca5dc96ea5cef049d83f9f3c20e4558f83c2197be29a45b6763f6fc19d8045d1d9421a367f9ca58870d8fafbbb28f9f6ff83368eaa1dc629148a685adcc62d818fbcbdede9bec09dd0e7e17627f73ab0418a0223dcbf1862ee8ce90a8feae3483804240a537d50d0bd4f9ced6d8ed25abf0cd4e1e43cd3d54fb55118e3ec2051b9e8aef52a27379a43a64f7014d094370810f8ddfa941bb9556385cb06af71a5b849d03ddb8b27452cb7819145c404690ef238e6f188ec1d1a6c18b93c7b4f1dd79d78d57080b17a0c006bf6ae13748535e0b4efae216a28939948f4ce7ec81ff86dd5c6495e5e19873519af208bb31c28600495e42a46c98f25c8b6c646b803e2d85feee682dde006bb6180519e531369c8b0e368b134b0164258479448900e580f3b99bbcf40c78b2ea489a6e374f58fc5faf1818a706890943329c25db0532dd7e2207628490952db5cf07f9428a321d5f0f6fbcc4fd191b448de65404ff6b50a2adec5f7c2470947877b570f61f800cdd5deb851e864d0ae44c63f11f38f6a16890d14a9f2430aa6d048f15672528553d795ae3ac4fec5836de462d479bd877cbc7efe30110d7a649a05fa8e22155f641483f66aa614cea84c96ccf3b114f252b329a480d8b091a0cc55b1834a9194d0f3eda5065f93128529858bb88204adc2cd02fd1220c151ac7852aa2306ef0bb9ca47a4fbafd172f8535cf4d4a461c1896ba887638940c18f4b4a3fff74fd4818d3939978414babcf3e0eeadbeaa18678cac390763cc87783d02d11cd0a0a403872675c6fa61569516ab26ec61908e0f73437394eb4f89a778351cee86f216139cf3cfc197141a0b61e46896f5142257d807329759b87a78db36f87cef15b498eb911a26f579970aaf6d90b18053d1c19dc8e9179b87c569d35140da18317da7fdf8c06b1677120ce39f6ece5832ca0eceef6ae69ea6fafb1e6db2aa74e41d0a854232ae34c7839370740b65d110f50ad46d8915c35dae087fe3119cbd210587868f8504ba3bc9fed4fa901ed8d29e523169545eadecbc7123275291997d683b3cc7101f55c588f6da1b51d65af40a0af43e5d0b19a9928f9a5ae83456ac0fef10bbae92f3674c928c09db878c99092bfc779bbd1c6527a17b144c82533b5ce1d50ab1d0d3a95dd02125ce14026c6655c5b3de870b812cff96e538b3251aa7af678dc13e6566668d4d8ebc4b9ee77ac9d768c9c38187fd3632295ea0c8d14759182ca25d5027055ea3c454d42a3e7b2319ffe7dd44e0518cb6704f2f398563cd53b581c39f06fad8527e02e1f24073eda069b297601a9d6dd37a21e4e214f3dfd4c1e7f35d2423f59edc700f94907a5ec7992c8549e7530f5b90912286d68261a8e45f23131927d11c989b25c0ef137d29dd8af26f9e46da8e6bb74ae8ecb038fade5eb574fb83fc725881237440bf48a7f36a9aaf7cc253bfa4c18b223992f9326226f161d8cb08cb97c1e60e00e1d2472b0fd214ea64e2ab7dda52ba649dbb2877f48a33d079ae66f33870ed26b70463d59bacf4b3e26a3788a88b34c97b94c092b7c731bf8684c24c8275d6b204eab9becf17eb7258c0815ba4e087b931a15742e34c30c32b8ac2cf12fcd59e5609f09cbeefcbb6ee3719076708bc2c99d9357ca811088edeee6b32068c32eb00585e3306298e48bd0289f3944c4729278a49070b29f684a824fe486450778cef051d4c29ea92962302bf8d6eedcb9f630f51f19cef64226b62fe23e7b45681b550f94c9d5070de075ad776e462155c8978b50eb1161c9b84d439630558c0f12205af6b61f90c6ab33951190f385d1cebe3e2e75df6e40a8783b487170d223beb3e548ced1a480baf7fd93fb96205c2ca2394ceba57103886d3d092d546d59cde5f6010a44aaa4e2c6b439a65daa225c3e7cdb2ac00119f38e60ee62059b4b43f1e6be98b38937bb76bd0cf03702446cd65a11781f79d7b4ac321bfeeefbf49176a2928b5f2f465adcce1833dca9505540fbdd32e07899b1ee339c155f12b8189c2da48f560e62c446d26d16d8475b9127dbf2fb926182813b58115d69c8f74bdf1c1dcdad9a2d1f0467f24e37259954584919041adc52ef7889281036e83f072d18684502ccf8f8c06106b8b1b2920950e9d87f77534dcdd823e8e2a3a3fdcb6560bf4a37a26d376945f5ede5ffe3f281336e79cf762ad28076c9c0aa0dc8ee88440beb5d9d4c7fd2cf38d4e0428d14f9f2107b2cb71d704047a3641c9f38f55fab106892413927e06c8bb11557d3c642c58acb4bcfe9d7b350641337b453a6a98eef166698960701c0cacbf53ab094d7a11d37d337059a27bc9d03fe0c818f727af1401db073b9df22aaad898ed3478a4dba9ed7b0ce97ccabdd3b724b14007f12a8dfa1188816de1b3580c9193344dfe486c788bcd13650b4d9f1957b65bd688b5b4e8d67400c7deb2122f5452b959057b5242c221b08b95e69b49b8679f1582fc94a14b5da132204f4e6d7a12f4eede9a9954d6e9d557ca550eac1bd3a1615db31dff12093e1c38dee27b75f0b2135b17152326ea5471d7cda6f225441df6b80b80fa749e01ce8e0d610a6d3b14b8b1b898027b65e944a45435d2de32b64eda5106586d4bf33040c87521cfa9e3f9e67f2293b1d68eb5b5af33f9de6870d40e37cae0bec129bc35350a5f8f0c7a4ab299c904b3e788f44888950723e4a0652681d95f1bc0a0eeead2d458b791b9a1ac717181ef811d08c8fb56fe9afd7331d758eda4ff7a49ea844c6d1df79925580fe9f3f5cef4855a8a3e2f372609df6b1e0d65cce5038a994f63f3c417cd085855e6f66ea08966f0beeb191645e3935c393a639a20311fddfd7e1acdd2f5417cdc9665409f1bbddb50c45e980183374fc0be5aa9b4b1dccb1ac868a83e4373faff803c11896bbba858d588276e443fc00d98f7604e9a9338070df0dac1382ed55f6a7529eadd88589762e4127792f511125e90b70a42e70c2d3850a6bd305098aa32dd0692cae76b4c0489ee0732c7bfa26f6a7e7c32a0e24b6ded76665d3164b32d07e4ccd528fccd8f32aacd3dce420ab4d1b0e9511aad5b0cc83aeaa382f1dab61e6de918d1e261da12c877cd6cf2e95360bf0e94611d88c32b91fa75162d36ad1753d3a1aa4c46611599fb7bba12c5a16c836962bd626c94504110829ee7e9e02c279cffd48c5794ffda9b0e38b8f842f135df539a97718b15e209b68e815cbf258bb1ceb5d8b957a190af6924f1930b06d56613209dce2862d59d1993d56483063b02fb79103e9603bc1ffc3203a9010cbd2be571cf3c0031b6040f62764c2a08dfbdcddd1761aea2116a27fe90369c1c0e9f0bbc481012176f623c87fa5b797f5c13a1607d2c15173739bc56fa4962a8d815f9c413727f701f2d85a8765fc3c115924f71ffceb3110400a0520ca83f98f3779ceef1c6af05eb9617b14df3843ce59baab1bd0975dcd59f4247e4db2bf0de9303cfbaf33cb7770e488396566ee600bddb706953c8b9e6ac11c7ff73ae1583c787013eca26c9c432b15d084576a7d2db6cc1b5a40cf7b87bc1c4d4343d3b9b3cb33759e098334ab251587232e71f5a62fad7a7182e68b67964638888baab0e4a538db306ff8331563a156d3e241f48278222760d1505d09e4f5d50ee4f9696707d827bc0f35bb1c9c467bcbbfe652f4840042fe723b38cb9c989032b30081f3f8ddd99ad6318d5b29e65a3ae5cbbecb893aae2e9e3bd3d29c172ad7732969e8ff659ee3e85a45ec8926f5edc8a5acea8407948901d9f41f23cff22730d81831abc7912c1b4277e7df73c1a2aea751c2b31674913de8cbcc5617b7cc0d89cf0b0b9301b87a2122816f901ca3340a1ddb19d4bc8e65b508cebc5ca57ebe3e11c0369dc1b3c32d22ef24b5a7c3cae16bb6fdbc13fa82fe00fcc3c8ae2d0e4131b6c51c6684eab889ec0d423b33324571196bc4c47111be684d397a24b55b2b06b554d6f42d94240c81dcfe4e0705c48cf5b1c7099383c569f3d34d9374154ba1430459dfcb9da4e4ae66ebf9e72e2d89afe3121cb4bc272476a9362000424e234efc4a58b292d1e2cc25a0ebc06ca57d7c59f541689573e107b826e781fd410836e3c55543380b879db93e01e7d40d4be82c664aeb5bbe84045f871e54f3e0846768c3d2b903ab58a762f257b44dbaef5ebcb8280e4d7e01fae24101d2e431cf66bb99212e9f06e0ed8800ff3613782bbf2c61a2022135e3a5eb57c15b28766c09118861de6b42eeed3469ab3035e42d92e4c840707fea2f0b040c05102768de3823536956f9f31cab94170f50171249810f33f99085762f231d9ab0cbe0c9492daff1b86a9094afaf7ba2b53ef181e2071bb13cb0419ce1b20c80fe966343f087f648441aaac3401bde9c88d84d671c2d3b27624b3af42c7e085628c5579197163df928537659e53f58765da48d3ff145e8609c3ee8a610692e3722b2750338524c3aa1465749afd8a7eb2e6f62b8bb5d5c35eedd37f76216fdb92a380a4b8cdcf2c7c5706354ba972c07e4bd56e664e815bcce95099de63ad97831ad79995c597edef0b8e48b2ca56fb1c6a344cbb2ce58916fb3b1efc02a8b2a5676b70e9f014747d417dba3d4ab99d10b6eda2c71baac2ad74078e09a1ebf4a0206cd77c737267594007815503bf9fd0e7f1ebb6ec55b3b41751bc5f64c84525f675a5de035f7b07a62a311e39a80bc23a6e6868853f42877164bf2843bd0802b500f6247a71c56107977436ca344531e3b5ec83dedcc8f124c2c26819bfa322f1031f126a1f91eb5c8c1621eda0129f64686f5856578d7dbd1d6c2629b3ecdd49b1a3d07f6798102968596e9d093b5230db228e37254d7b62ad7d869d73d33a55db78d1052881b8ede7aa7bec47d029c5b08d7ea28ff8acf71b001d3f97ad0aa700bdfd8e6962fdd598902168d65bb8b2105d7be6cddd6f8ab530abcaade30fd63abcfd6ae1a319b51518b643395ce33eff9b63094945c6f07ac6d03a73429f7ad41dfd3790d616530a63e68f47c9d892b866389dc8f5f724c159facb4ae8fd9830afdf7046b7abd7e0ea576002bbd7cfe251e2f4b7eb964dddf2493b25e84dce05766485ab66ef5a54315370bd9460429a1c3a3d7d4de6709d0827630be49f12510d5b39472322639b3c6729e60b855469962957348f3a220a0f4a8d329adb6e12cfe05efaa9983b403b4e42ebd64e73b0222fba254eea7ad7bf8ea4b5fff61fe3a605cb56a449f9b884d3325937420f0a37778dbb9cfa87382a93dc3059d9ec9db61f649429b6c9fccfb7d68a976d8b998ae80cff9e36e5549eab5822207a60845c07aefcadb17fd0f72287b6780085dd0bdf41edc1846155b5f9afda48b1291c24d0c7418350297c3d0cde55dde4fd38f6e35a4ec614ef2b1395693d97d2ead2f00c8294bf474610f98857fbd542e91ecd2e3b9f82ce5833fd10a20f6fec1e87d4f86d204c1dd9c4e6ae41ddcef1573540cca6295e618d8680fcae29456a1c134e4f945e8e9a5ff8d9e625ab564b6ff0562a632988e58c684a9c3572ddb7d1deb9585a21fc1f66110a312666501243794a7d2339d5cd19b612bef63a36abb54d1b963cad808fdb5cd2fd157b02dbcb868f301cb83742cc3bfd1fc96ba724c1827c1f8c7c36f7d17ef4859fc7b7be9a33ca58ec7eeaa9ecdd33497579989d676c4276b75951dcc855411e6f25047293aa1bc1264c4597c4fc5c23f854e96a1cb90b2da6c884f796b106d4cccdde8f4f2797f44f8b144c356320a507a4789137009fed0d7d804456fe873b6f5757370647e705182a38d4cdeaad4e95fd9a4ba9ec15cc52d47bb2b2ad8b36a738d06011eb99531fb4eb998843311e074bc552815dd05ce52993b9e468e4349d340ae2c540b0fad9ea8c367f9c48ee23f8c9b1ea89893d8d01976363deca4e849ccd36507a7fc0ded6e448f09cb8676a44a01d22bbed10317136f7b5b8a777ca0133ea42196b5b8319ea3c0eca8f78579da2542c831dcf4c3583b860131fbef741ba2ede0324e24c7fb5d317d2fcf8f8f83d4ea0f688d4101bd0c9a0b6162de508ec32fc7ab6eed258d59574d2ae5c20b72ad4ff5eb3c4adf9b4e012dccf452473b250e328579fd091e4a2b24d5c58d9c365e240ad8cd1c7251d2c199d9017b1c934985af1802009ebd25a344604c6d53456a1349610d3b29bd0bfabc22a3b3752d83851e0f93a0aa3fa95609710d04df768365094c615e7dc75df9e1f64e9d334255e7ace9c44a3cb9ec7fc99f91c47786720ba272c69298d77665a6d73a1fe331645bce7ba4660f0708cab0f85fb810938fccaf401f430e5abdfec3fd8d8425fcf5375a6d694b5849c79f2f7cd82d45a4ca9be839d2101240ccd540d2631d0bca024618b87c6229606feced9fde560b1e4455e471b890dd81ff035d749e0d9f63d5ef262ecf34cf759280b6cb53226b50756649135c471e931039a53789334eb73b73cff27f5cf773f48ca5dc61da57e9e8225add867e56f6c2af69204b50665747f98efbd2945c887fe500a29551527c83c7f59f20ce14a8a05b796a29dca5fa9db555967762ffa848fe8462c9a8a8035c6ebec05d72c7b1c66169059a30b8fa596f3fe11e0ea80aa4d49d56dff7ff5924753bb93dc9b999c12ee11226f284d47a15535162eb8ba94936f7284c6353bf21187e9759917bed79bb5b681ce46cace540292dfa2575c489180c7b7168bb58b543047d02c48abe30d38e131490e9c7f5c5b310448fb95e91f1e062c86a1fac74de5320b0249a218c6c31cf3e6b880e9db7c26b1926a2bfbe45e1e7dbcb6a29d20d0f49bfdf37b0b3672a918b63e591147e4d00f652a2f105dbec861318fe9d5537105780d2e8077d4349ff98fe1b021de3f8686e12e3436544fdaf4d12dcbd64c072ba95560648a89b8af377742136cf35cd8ff68733ca69b770474aa881a29bce4b79a2aacd982c8292fc3d709da8fce79132f8b265dbc35df327e5196f47b58a3cad4852199f940577dc676022f61f47ce6839407b93eb94349c20dd270c04a8f50478072e0c6b762d0b0c811962dd32011693b1cb4fd5cd11e5ff08d6367a323a3f0c17de0fb73ded32dd09525213f33b79f7557a34b6fea4b93151cd6c42e5edb4bb4207dd8856a3b1fc29e6d07a8feea1c8cb27a8d8d8b0be8adce03ce88b41cc5582183096bc211b9dbb130ad84a5ef07e07c8d7803439135080de9410301e86513edec4e6610eb574d9b9d3ba23f19e9f18eb2fe164b2c7512a8949c21586f2abdd4cdb907db5faffbf6720cf7c3338032794e41e66165fd5831b933ec8c0b716c162ba8545cb1994a44c8dbd4e3f1d6c62ef6d66175b545017b38f69b9cd8f7605842a6e65d975416ce3d69b85f6006dded40510f33892f28203bcc235c7c5b1a7e3f896c48c24866ce85eed6b54699f940b2bd4f6edfb0082587eedae95becee3a675ed6c5871d09f02ab3345f4342a07ad2210aeace2ffd63c9fc99e916d62e970f60ba5ea5bd1f78ce70e7acd10983ddf711a90b391ad6013c91b8578dc4e3fee55568fc1139fb71761eef70f00fe155865a7249dc3cce38e0dc6c167aad170c86e26e0c482a7ff8c0a51a6fdde7124c28a3da0552abf533c5f904d6688e2dd23a3087d2ac172f55ef9951398d3d09a2836baea46eaefa34217819364bbe1c86a590817149e3531c9e75cbbfbe1d5f204fee541b81c0e6c1271c5ec7f9d96fbb1790c12441e345bfab476884c598054663f19ea124c17e9fe0e2a81c51c7e9d74f0434b00f5f322eee065742965caf2ef96f09eb9fc3125a171238ea63a6915be2fa290b9103ffada136f66b77fafd8186811b6641f585075836656ce8b6b101aab6bdb560cf63d5a9539b475f882e02c5bfe25819ed1935910113c10ba1908cc5ed29f13bcb2b6dcd6ffe5387296cf0bdbfbe2e4d77eea744862c7b20418e2e044a2c3b8a63a9b90e84fa0da6630d0889604444719f3c7933f039c72bbf882a6dffd0d9886c17e99005cd5679fd2c39900ce6150295f98376cdf9e36c46a6ef6b42a221acbfbd45df8da9fd8bdd0273bd0dca1bebf4b636d2e8dce941ab8ce89cc6d57df1501f6b8d07869a7b436860a81a9df150a241bff424690f549947d3e34f8ff6bbdfecb1329d73eef4affac1ed2d4e587289063ba4e707359f33ae8cd7de3f0184dba94c1c81d73139c9a2592476c294aaf9fd8565ab5ad834fdee8f73c3e5d8903e46081191bf55499c4a689a53ef95827c420fd52acd191a565ef8c8b28563753393bb0aaf4f72386ab7a3d7a4093bc8e9b538f851182d7d37b1314860082c06277218bab67d16e786613b29200d2c0d28a7f9a298f232bcbede902cf9edc7c8c1d39db75992fa9ddbb4759832c64345a285848d415cfae1259379e0ba39291deffe989007808c9f437f2ca2325c0b07e7657bf04c50687432adaa363d049229ca9c8e56baae4005093ec200ca345200aeedb1e9963efde8aeb85cf047a687bbd8f7ad4771168915969a1471f6b3f34bf580dac566810102ae329259fff2d106a13fec80cd839a6ca3eaec1fe12b740d27b92d36392dcc1f7011dadea59aeef83540019b413aed434d84ff290d54c006c92615bce11855bdd2169f71cb702e419d42a371bf5d27c7ae092ff807785162898357f0540d9305794cf4c752741c7f5e6926b9588c3ff53df82c2bf3b40c3976372b95de83469f80061edb4590dba10f8b4de98066278cc7fd108fee7461ebf9081a98f20bfbde693c21d9f67d4cf199ba52e3db4db65c326b0a035d9295e983bf2df35b17bd2597c7a0d7fb20575f26e6251c35398816dd9d5441f28da218e8ae557520ef11b21bbddd1a1cfda4b33d06c3a0c2577ccd073eb83bbddb3700209920cc7df64f91e4179cad684807ca65b18951f767bb94a2fd82bcd37ea28c9d1e768df19f1e9c55d10c5f3d4b27dc94037e8a4c34a3e0879a8965afd87e0ab899f46c4a5f388a27d8a20521c1e2b4f640ea36b691e7c9018097430e375d1e5293ed1079a9a4cd0386aff503d17979f52bbe6e5e20aa638a6904f5c003945a89ad7e81c038fd783b1a753cddc7c655402765aa99bbec3ac515121b1525b19971d9a8fdb3b000d7e42082fafaed3a5bb6658fcf14f1af26cf86cab4853b0614d886c8401d691fc9d7d4d4c5fd2ef1258d295ab1afd44cd4b8ca544fa9ae7e1d54e296cad12ee294d7ad5364a3fbd5661294c1c28621dc2f1c923f5e8961f14305e40d2e3eafea90f7486cf6141f97041e458003f102b1f5a3fee77f44c6ab6d3c6c9d80ca80f0ef9b81f2f9905efa717e2db732b0b71df55a2cac845307665263753a7740c591b34e8490f6c36897a340b5227d9f9c35307778363c705cd9e0646f286cb0bbadb7f8000f557a84ae3a1c37154dce685016506cc3ea8d85aa1438d6521a5139faaaabe2e505a1600dc962d3346e990e947bda43cdaddfe2e0723944e88fae3597f1ccc99a57bee3c7a043cae1f5b4b1f9f2e48216c9b2da99fdd89ce80a6f76bdc4e3d72a1432ef52c0d95b898b06e0d8f2a6f1459de9d84051fd00f0fea7c85794ee026a23f4fc69b86446d9a095976cdfb56a0a4e54073a889558664e9dd3af43ddb52e48043c1687c3e0801aefead4d3c8260f7b3043b8630c0f0222cd9b291d11ae1f91b82c79dacb1bf4b880a416e5c8f5d2c9028879b1c68645d1f2acf61d410bf9faa23cdde092a85aea68e2fdb1f5f9d1487a1df28ca21eedf91c191e2a3c2b856ca0e92923983d8ccb8449d2d1c8b2145e68e7844aad8910d388ec098af27585d9b34a41319ab1660975e19cc3f2cce50c0becbd5a2f9b2132bd509f100d8e1c943ddbca33534ee2ebbe6df1049f1f2c46e422e0489ad2f49661a2b23ad0ac98c6b04cb4b50b8e306c3b0b6454b85709c0a13d455ade3b84e4999dcbe65e43415c0c53c0be20a10dcf1d947972f46b4a2f2c5f3384e2c31ed194d8300e915712a73d959b9953b82ceabd91bbc2f4b046d4b51fc7420631cbe7e89eb098fca634eba20c1c3c868ef97fc2195ad5cbbd5257ce00e0ecd296a6104238ea1c1e662a64d425b850c629acf10508f7b18742763aeb82e79713225639a2722297c9602f9e9565449a91a9d85bbec83f59cff1aa6532dd99b1c5ad1fa15277d12d22bb7c8d1a5ee2d1aecfdf1f3bc569e73db45ef9ca4f7f55393827dae0b0438684d64f4487140038ca83a5752a22b22fd0e750801ac5d8190a0f6b280822e24f874339018d32ef2647d33c3950be84fed11ddc1bd1c4546bd9e3b3d0bf4de81d0bd4bda0ea93730b6a59f0c1ff5416acc02f06550507a60bd5fade9b40c91a5520345487b91dc44ceec754677797e7e742d5414fb642a35e494531142d5a05d724f70abb5f7c06dab00f3e5c5f1415195e1b489479285e579c9ea25635b2cfe3b994f539430cd7e7f94270359a6135c339967177f8da79e3b2d222825ea51eb4ad3d6e6f5a6e8333153386f250f7748256f1f3331fe7743d92ed80a7dd2ccba514a50663a181d4adaa1b9d63ea4bc4f98e52814b002751179e65ff6c3c332649653fe68c9e034de4b32d1c95e3eece88bfce74895c4994d325019f634b453dd714bd4328958267f8665074f65076b385198920c3a1dd3ba9156e6d96f597eeed2e3e0af683fde1a417ef298d3fa3ec71238616a3e4ab49718ad46fcf930ab00b8c243bcd7393b6c67a3259250f6112249fcafe804b25d25ba7a242db918d025bb70c8604c5d4cd996b20d36255a562247fdc98b33b8c74561d49b387c77dea1839780d5bfcc24c1a1e2a518c0392fceaff1587d37a2e3936907476072f52dc94e90f72c2d65d6100f362e12341cfeedf824b38abf8b447422b4d9a4afc4551f6e42d983187a65979abd4dbfb64cb8b0eebd81f93d6b420151b814edab79b63fc951267206a2c7f8b2aa4a6921bb65fa325579e76926c961afe95ceec373363f579d4f44fe923f50f83142f5736c6b42b5db1e87beb6450e69a07e3ab5d5f2e4a80dd3330e0fa88ac33d8aac4e7b833941d1d210fc5d63c39e1168fd280ee74d5bb33370c7e07f419ef0a60b78a884c9f0ca9c2ca4ea8a66e579e4c422f0cc4da835674abfe7c867c8f77d485b7b5b63b34971ee7f0c56ecc417a223905bb725d790123e0e350c6ab2adb1eb86f2d6f9cce0eb3b18b968653af60c20c17529f7c72430e5d137157b850c4eac2ac42a7a54acb7973da062b23687c826eb71acb06813f91babf935a7997031b89d2e490db61720dc82b0da031d0ed2a7a5e9250f41ef2bbc3f6b26f0ff2adbb6db5876ef32f48363bdab963748da959c6bc570b5ebb90a60b7c0d023f9e3891f0043b7355bdfa47a8bcb7058835181f41eb5fa499332aa8e40de9c587ccdd3eecf46fe6a99f90cbeca759d0290cadb4c813868007c746c8c8cd40cfab5a522632e283789a8ec04311d014332a237f067bd3781f37be5c0cb4e6dbc188189bd2aa8b594741742d4716b89950ee2a0d18ede2be839797483a3c1c71541f3964a59e9f8c1c9ca09466c60d4e897ee6e446853d75daef527958122054d74d25ff28d46f7d88179d0ab50eb456abb558596d6728e93fa7ffc8749310575ff182c8fee320241a92fe6d862bee474331c2d701df10fce913e1378f0b432bfd4740c92ffca97d628cbf4cf69d26eb1c73ccfe7e76eeddaee6b306cb0f55f38bbc9bc87eb4ad3fe6a82e61c26e07d74f4217f62c6e9831a97d489d75e3fb39421ad566780966d88785b1c153ae8bb0cbd2c550b634584a01a5ae5168b64a3dca0ebd31404b24d7c03b2f4775cae27f3703299ebfaca0bad877307030b3a040d440161c1044aa93fb8b5a1298338690f78fcbceda0a64c008ea971f2841923fc79a37f13752bb5a917ea4f02f1523682cec526556f67c6cadc1871c4575ff3152f36f940b7c8e5ee0ea79cebb60ac7a7b4bfcb7413820e3c1cf47ccffaec4ac1ec55a184b5b6bf837c995cc645345a443c8e9aae0ed028f24101e5cc90a62e800450e899c9303859d33eb2d223e6c90cc8cbb5059f0c70cbe519d01bf2f62e1dbda83d280093a514186a7494b5fd2ffd46827ecd80560eddaaaa8af5e34ad4773095424838e33f2586c6e46d4f979a2ff1b46e3fa2b30590c635256d8b911bc20880cc8cba4531d9444cb66a7297d02490d6c301718ac8262ed062546cc202419489b739268336d4b6cd63f52b2526b1e851f9e8a028622df9a5f75f6d5525e2b6028992fe8bcf89186bd6700d2b61ffb000137e2a3d2f96157117256cc8683819f1e16ab5f0ff9c541f5cf015d9ad5b99b4b713c75d2685800654cae41bb9b19492c162cb689f472f34ee873521a3b852b31b745f81b00bd5c9cb851254d51745d39778814c3a2b2ccac7eec63b57202a35bb71b98311572834a842b7fd2baed7d727dba21b822ddc544c6e79238483c4e6e4e42fa56013d955ec076aa1c77ea8743a2521f74d42931a3e57aa16bc98c26714e0670b11052e4e93fae4524ba8feb4206d98262b45e0b844771a19aebd98cd1c25c53c0a1b5ed3fe144d26ffbe405806d253927d44839dc34841727a0cb3202325d7a5507be2afb5edd6b5ec924a501471164a30e0088d00d73c2d171712de681517163e4cc13f72277d9d0bed254463ecbffff59da3209a908298c4fae875e6e216424a3cd6f58064b6fe7d15480ebeedde88195556404e8202c791bd69ccb50eb044630afcd66ed739ffdc341e3e344f675ede1305af10b46311f127d9bb4cbdd815d69060fd07cbea4795e222957cd30c2071208c7f71a25d905c8c378e87828417c7143b16a6bbf4845372ef8a2798361168f78e98530ef8a50a2f488683b45d8d3adc92e3cedbfae880d2bbc8a1ab1a95d3694b35f39ca773b23f8558494f3320ad4cc2bb221effa6cf0d88ae067154b7de3c5f673c02d35f60979aac47b3ae5c3c14e9069b1e4e7ad7c1bacec2bb33a6ffec189171af49965aac559f9dc843305f1f8ec218854e1ec21c586e06cd1534b8769eea21409a87156e9541355155722e5d480143bb8bd60734150a089d5456e646effe6f1f046538fba818ae7336593d946369b50fb5e53bc673d0161abca6a4b4882da81ff5a6b163b89c17c9090102ca1cb27ea09316e9b9c2227d4700e4baa63e2b27fea086dbe846b87b777deacdfe3f2cefa62a347eeb5718336662719e46ac7e900d4685b06d9a5039230b795640a736b7fe4e914a1c98fb60918ed202e37a0455801fe50f09d8b52ec1b176cd5459c8550204838a146acbb178be33fa639f6a890ddb2d12ecf132b493168d8980ccead616d5e2834a82ba752259e1a5f298b50ceaa4a96d0e178366dc99cd3e28203ae280348cb2a08caf94df9acf76b6adbdfe4f82e7ea523159c10c332cc751f66b195da1e2040d9ac450db4b12fec91cad860ec03be91523d7897fd7007b45f4c0c6d5f748283b60c9d8f02e654dc93e85e9dbaf3cf357e1180905c68719d2d795dbefd7a8e57bc9beaab09da6e79b9898f063cc4563f63ba716cc506041f57cd73e8980f08d930b5dc6bfb957415cf60ea04ca1f517a42104f371a61079ea25866b62d58f7639fc8daffab61ed17ebe633dab81af38947126f242aa7fc7e2d53a5f4d88fc855aa2f040060545b09acfe6a5a32c1b0a09f9f4f5f52278dce6949cd8db862fd07013564e388a3acb75653bf52bfda3d2380fcbb86c662cc9a501e8e526df26438284481702b510a236b4da7b2e27f7ce3a5efbe74230b04832ac71c38947626398167e8946e4fd98dd228d0584d18936eecb4a0e36807a98f0521d0a6a566718c34e6953468adad86750f66f809112500d226f4eb034e8e03641e52d67403f89f859aac60b79a6bf3d5907910bea0b96de0898edff94b92d62bd574c8ba4f8086435998a80fa03e1ce24886d80f535eb3524e5ad052691f661aa144b57872113f693bf1e97b1b8967ddd94bfcc4e12dfb7a6eaf863f37a37fc3e5246c41e515847e25c2d32c52d213c171ccd8aa36902917b31da78ee5e194cfb5a4f947aa1da201ae2adb380f2577d93628e0f16c64b133bb6c9ac238e2a3dd30b7b8c652d1a3b2f77d75d6938ea5a038024a7bbf78beb7a6946e04d3e2705db56407215965106bf77e3efc2562f13a3df9f791090f2e0aeaf4002bf0652dea0c026e66082c28d55f09f28a14587400cc016d22f68a250bbe25419ac625c84c5e3c4753b1b12c80925d218ef254b6c26b70bc2fc1a56d78eccd549aa33df3553ec0e7f298cb5e66b0c696f48b64ddfaf2a245b2c8514db9430a7a2913d633cc91ff5be36886e76c0d07f291ce0ebd172d62ef94f4cf5e69641e8ba09a7f93cd04f52a5bbc3d7624b4f3050532bad5ddd4b7a569357f50aaf296e6abb7e64d311662ac8e676012ffe9c35aea14774d25c6b7b64df50dbb141840e278231cf39bce3381091df1df5347e5ea7b9863f518fefc32278272c9f91e2b9d0fe1617ffd057cf785cbf3dff4df0cf9bd75d79ce18e248eef88f2f07654866f69ce4a30d7ce7037d7eda1c0bd09f17817ce7d8ddaa23f902c87e04f35eafc9dd7237d08456cd2f8ce07afe8a836f0e9bba62d2e998e8a329b7b1c5622484e4d76310e226a7d7bd1f72ed99755bf78a7e2aaf97b824362fcc8c26bedf20275cac9352935d68e6484ca10217774a00e4c779d6a860896a1eea9d9fad70c26ca52589462a171a710ae8ef901a952909432f8880f40eadb368a776261d22511dff07551822fe2bff98a084f0e297a5c6c6e4327b88404c959f6fcc84c3941a753cfdb15763cd1ab0f699687e74cac09d755e413ad251636765e799c8f94386a65f3f59790cc331b5ef70db1bd6e3d627000262536f8595d6332652c63f76cb54040cb755ca733fd4c8bac8ae5d2b39b55354c8ff8de4526072f28d95d0096e199a2ac1a7c08073e53d5cf39e0c2a69c9fc98c99ddd9a88dadcf97210478f5bff6e0ff18f02f20857d051dc5afc7ab098590bc82f0fb0b9eb39405a5652647e098a654a129b3757ac65c3c3d1da8c548f9c1bd8dbe540788e613ee84b7ac0e0aa5509e698251362f8357d64fa7666edcb9e59ce6bd7995994936bde15f4e5054b1abeb06cf6eb06660a28334e5dc0769f82f7cfcd3cd5a9201e2b6b9f86e8f3ca4828ec3fd34f74b3cbdafb4984058b12260e139512df55295458a2197fbc84f694d687a63ba2aeb160dfb1ec080dd85e650d37764900bdfbd3ea1576b57ff914e0639797413c83c6dcc4263efb9e45722d0281cda6535db61d6d3beca02e775df3fb01f0f17e716afe1827c63a1676715e9c521635c698cd793f68787c37087d0acd06f04c9abfacfd622c1363b141317e1e6674448522892fe1b3577b9dfa162e3059bcce0a27aeaa396d35c8648dbd3aa1b42dfbfbfe840bbafc8e0d9ef63b5e9266dc870f4325dc8e9541833f66d4bc546f2c76c2622e361ea164340af6f58c68cfbbc59a31da2d8adad08eb59a67caa91f7e7920274c5a863be2e6c558c268b83b2a4b7fa52b0f8d6e80f360231fb98cd5d5b005fd731b36d65a861faf11f7ff7add18dcfe8a213a9372040c8dd4301c460880990191dcca97dd62f176c7fe854eecc508ddfde699a8caab163e17be85e09163c4d965d66cdfc34fbff4bc425d54546884039dc0b6a133c788e1a934f2290de15404027e9c24274842863f8ca448740da959173d4a385894637a02e2ab24c007a2a4503bd6b3692314488e85cd3990c225432eb755126c2d04a2cb8fe8210f81cda18b6f868eaa596dac5f64f45b522d818d3644c0cda315a93c6456e12003310799c2cb074a53d826ad5a6492de44b426b59bf2538fb7d56c7f5f3f22c9cd6674cb59f7a5c68ee671979d1115875637c0525858b44364a8477b03b83b213c9d9ce28886defccb19f80b376324da5e58de178071283aeb36ea80cad33f5e48cb7d20d9405aec3d5a55b2ada5a14c935331e0b9ce512293658399e35eb58b8b44aa52aeb758ed5bf71d4b7735a94c1268d402bc132bbf2330c300b0c0ea56c32912aab82c88425fcce23f840921f25ad06d3dd7c5e7d26a96ac0449aed2fb52695a6b81c883ceca74e58cb20d9ecdcf4a25496b6a8fe0b89808f0f8acd42cbe4fe345e420723dde906ee4574daa9b3a32b3676df56d6162448cacbb643bd231a8e0018f0f7ec8231af837bbedb59947260afde987b3f541d0039ac6c22aa9f96c252088d823f6e2c79d679bf83cd905445d987b7edde833c914b0feeb471d090885f8a5a08c5fad8385b4a8f6eb346aee84a5d4cfc21b994e69607eff7c337723ecdd12347290d5ed31b7065acd7acd26045e3bbb5d07d85e56d716a982fffc0993d1cf1c458cf2f1f006cdb8c9f56a75307709c7ac14d8334f29c78319e97797eb5830098f60606bd8738cd704c0e2613e792c0f45f788afb7b3484c1df96ab92c1c5b82cb71bcd902b1c183e12eb87b34a1a5e36f1158d8e77784e3db817b7f9d0dcdf230dd6a25fe90623eb638d5f206ae0ab7ed29bd65727f1a215ab9f5bb01fcd6fc235f12749e8257b67ceb04c05dff045db8e4b05c0069dc7570474534ca9c18214fab1f0da7d0fd1206eb775dc7fad2985e812fbc5315505ee95c7d61ea4c0cb598083f4efb42a40e7e74400f5ac2c5fbd25abb39430c32a50ba4d4c075017c297150e6af492412e14694d9bb05e6c213c885d90dc199f0753a3e23b466230aa13326cad9625bfff977129d5418dfc3e9f3b391d03ed32d3f950d69f2305ca8d6925868c7ae3b978b89194cceb6d356d0d433f26500ae3e65c1bc498801ab1e544ce47efc71ecfbe4f6c18ba94c561c82d17d8cfa2f0fb0c447528768ce7488f89bfc8fc9d4cac09ce17c610b34934b90ce40f40fc546c00430a08f8c97a3d5ce29d362a0def66e8bffcebc6518a52d219349439990b6e1b9c38beea47b5349346c968378d74f02965deceaafd5969ffe96f19827007f3a58a3fcd65982fefb4eb842c143c1806c48c18c202fd6ef93f413fb91266aeb25f6963d9f1b3e9258d47a6fae72db611240b3bff7ce30868e7f74e1d628f5ffb2dec4bc4083a75c9e1f5337238962e04b667c9ee9090ab82acb79ae8f446cfb21f43764da42d44762980ab7b9c2fdd1e5fa9f79d861f91b9500b355e87f92d76ce2df362ea66b6e0b69a26450c78c95a06e9c868868752e11e51f71944dc7d2bb21757921a3faac5485f1ac8c6f4727b10dfd212058888072c818fb47190ed6edc8ea713f7a8976ce008ddb5399615a407a0671ae3b4f72a3c3d54a3be4ca1a163058b336e714dd5bb5f44d500ca53eeaf6878da0a7059221472f2aacf1c5cbfb6284ff56e1cc70b4393e58736eb3543f819b6d4b02a04e7ef971545c83487d98637d0218ec3a53e527b80e6f48e21745bc5e68675c36cbe0e55f0f10a664409a3ce58f94f7b19dccb33f5d3b1ae390f3aaee8f90d9c1467ffab8d8100ebac5e6e3de9409d1a9049d914272927fa918b73a3018c7a8eeb92ad7e453ab034a7c10edc4a45923e873602ca7887364412ff19d2fa9f08c0403c3eb97bcb15f2cd9e50b14e28a079939722c1589a149874e767620cb52f52736bee68d24f79737fde16633084625b938004e58d02399f4ec0dd048911aa6756ea673b3abd7dbedbdb9b904865b6373858f87d7a5c50af278f5ea6048d8f0baca994959b3ad4041afd34766ec3d2854c077805a92961862f15dd63134ff7ccc16c7894ac65bfe002cc99e106f7f2a747f635797d4698355e4ebda7c5769a0bd00f66de090c5bb0183ea287ad95ed1fc16d2b842a654e71b0936b575d8d2477a9f01476dcd56eb525fb98faa243625a81c99459ce13360225f4ca059d3586f857e54cb987a7a37133a6cee27ce0a501e145f49b1dc263e52b72d30ed53022bde5872b5870a22ffb5246ed4672b00ae52cc20c1cffc0ecae1d14dfceabd353f4d2b70b2e87a43e2cb82dd176e38e36d4218abb1e399141ac9c6161aad2340499d4c77a0406f575ea05a0d7883cba0c1b6b724ceb84623f64c4364679be9d2777fc8451d1078da7a3ebc03102eabc99eec76826e5a7869cc514307a5289c7ed31e50ac64acaace85ae5efa98d5be150f44c612d60bd4dab568514461680d3e17a4b1127fe58e38e07efbe27cbd75de10594df2c99220ad8ac80455b287a6ed182ceef0bfd330a0dae920dcb83e8ba10728479777cef4dd06a568e4c0b258ccc1f2b3549466d695a12a2bbf8f6b8281bc1fc748abd4c2a9fe9534942231c0fe96b4385ea18e71273ad3d5960c878ec5ee4261a0560fcc14a300427804c3db0bd2882ec6321d696b8e355e2055fa205674bb11106714e065d6b4769a2589316109b6d355f9b2bbfb8931804fccb10042ea80aa5aec3185a890307176a1015ace6843ec671958d17346faaec9040ca23cf5f47f178fe84e2c543b9f7c8ae3b0077a48ca70899789f547a4cb6a83c471191297873257ceb304b2cb0b9154e35a257d3d6873c03735a6c98e43c05184e854f6319e6bc293a986de681d8e0faae62351cefe8cb4ea332f1afaf08e6002888b802435d62a25abce557ab2c071898e61ecf16d68298fdf3c085d5049badd55ff38a838597d22923c90378566b2b68724654847c84edd47005f4b9d9e859b031862379b314027daf2c62985373416db138a014602af9802b072ff31ead772b6df9874946de99c7957c871e0d9ffe1fabc0ace86806da1fd03bdd814c057d04c8305364c7285117996dc43cb6b0eb5a70d309de03ed57ed1b98961f767afbb12d51b965c75ad4cd720ba4bb0fc63c5bedb24295550373d8c11b3ad0a5acf8811cbeb2b5004ce9c15268aea5811fa563a5ece93ae5a19b94d506e24f5c6007f8a0002cd037ebd16fd1ffd80c8237ab104b334960516b4b157412807e60fc85fb732d87a9d96a2c1ca486f37fa1fc8223d597b041ad2c13c65b071473b4b97f79ec3d55d9cd42ae9f51f1df66ce45cd835b469a81def9c7536eefb7d6ec55022a739e0ef5f14111031e8677f6dc87099c08e83b4cf63ae813e50a514067c99ed90bf7bb86604f43c1b282ade5a14f6ab5791b1518d382c444bb095f517a1fbc2b6a27b3c6faa7c9b542c1c9ab583636e4fce79094a0b285bcfea6a51831dd9c3b7d4420398ddd4ab4e834864a6c74e708439c80e398ded3f3060754e67082ec1366b94d395c76d7a3d80902dcd04d713e92a47a74e06b1a41b7704b384332379f623f4891969169a04b940d99553df01eddd4737a7cd8d697018c3dc289f700468d8962a891762dad78bb5fd034119fbf7f33ab24fd1d4c2b8302497f804909db30ee31042f85ef48c930f65e34ddfcf18efb871e113ab6a8c30dfa2714bbf2b5f69815eb4879ca74836f83f8f6ddf8898ba1ab5e129f8f7728d7c004214d33bf935fd0bca158201471a763c0e89950a5920a24bdbbda4b40741f24fa431d9509adff43c3644f5c8fbabd1f215ff95bdc551322bb70c298d314850d7c8298bb6a179dab97b8d5048ad97895aa41ea805a46198f5ee686bf33a247d02f3b6903fce3a44b1b3bba9eff852573942abb09140c763aed2b7eece765a026e5b479299b6fccc22606e6889669343bead5f6cce4de24e2341f150d4e8f3e8ce167f1b21b0bd8495df9a2cfb4bd5cabaa066fa05476f37c9e0a519de18fca5493ab44d5f661ef1fb690505cdc8d7112ca2e136f65214a70f1d75d820d206170a3671629bc0e79de7d8ccf5f08d1c2a065765e5e76fd9eb6cea95935410a68e2ee7f4fd2936813d6edfdece847b6c6673927aab902aaac0a49950862dc6f6f05732b151645d7a5962c07f5288db51bff9791edb4940d6850bd1832fbe7913e07010cd0e71540593c103c7abc1259b47386e3f0d66549309c81820b09cec9df87dd7a328499e77737a2621354ac6ddb02e0d448caf4f77e05545ad79e5263a1e89314367a231cbccebc1cc8e7d55eddf408f858e5918004eca71c24c754512d8f9a3eec9a9c21faabf325d05450d689168f4ce40ee0f0ebd9d298f87f45c54bdecc19bb9b7c335d003593b48f90c2b0e47f3e1a0032c64c8fbd753c48d9cb0f15b24750b6834f3cda1a52270542adbef0860f027c18d2ad3db90e6c7699cdcb12a0b5bd3bf19e39c984ba1552ea35ff54dcd274580336e3164ce30c04a6d10f0651a5f064b65b4d199159c37fd0060e7867d20a811bf9ee059cbafd2e08f89004cff48ed5b24b75cec12cab154e4d08c7b576c5b71520fd09eb9f6fab1730956ede81067d60b62dab6083803dd3b60afea7411aff3337ab900322839af7e554e78a866fb30d8d1731357c4a47c9f0830760e07f334427989dae08110d1e7b60e82fd2cbd9584404f8fcba32fae25832b4dfcba01563f0f584aa1cd5555e07970de0afafc4c0f9290f7acdb933c0ed02e46bf8b9a4fa21df1fdeeef4d78a06ffdd83099cbdb5ccde99526c99edf0ab27b5b0a4f8c66eceeecd7d45c1cc3ed6efce0918a4c80ce9cbb3e1b9dd172c3315dbb10ceaf0a78ac58ef449d81499acd8dfa567dd8f54bccc5d252da87c070178cde7045b2aa55e8eeab14d1e9704decd78661daefaad3cf6716e7d76d1b0e74a35671e5af461216e000ae28cb1aa0aa4335783bfdd21f3c7100cf404740af1ba54668529ecb320e2b08e569544c37edc82f25f0e7fd914c82e26995053afd238eb792248781c68d8580476d6bad111e4bd46b79761f625ffc0cf6a92e42ba66fb3a55699216b2b2d4efa9a1fb78adaa058d34108130017582d0f02493d77105de8ddb21e1103c81356cac8894b80582089acd1df4d3bab609ff7702558527e23f2d51c137b1f263954d6f3758e5a69cc4dd27bfa2a9e4eb794ee7123e14ec24180f79b178903aa4da49b6d83948446fa8fe864ae9385502de3e16786620beb72ff13eceee81b4f49cbd46278cb3487bcc6f34c31f9d6f8d2466cd2c2b4d00c915f0f8e8678430e76d2364f8df6fd6bfaf326566dc5dcc437043447974911c4e245874451fcc1275b1fbebaf32768b410464ea21061d6b7ef8fbba7e4c56a17d94e2941c782fe77a06a7b8c66c51288a8be57416b70464bc79a38db0c5614252a3d0411b88805e373ff5a04b3041e92703b72c1def1e431f36f2705631c8ac0ac69698e2719d18cfe96aa05ff777fa2921d01c3f160193ed858ae20ca65d0aa9ee09e1868f416dcb687f72b8828ef1a6a08d7c3c4f759f10f82f3941d6616677e0408b0f6de1dc979b55311f98869f365e0330069a0b249602922bb93660e27e949b93fa921bf20217b156f310f7df7684c5f044c6bc6d32438c160b757ecf0eaea205b7208823c2ed29d4a5383b4388c8fa70d0350972b94ffec5233eb34d3affb0fa2c37f1b4ee08e1d53a7bbf9291b6c972396f3d81a7169d05c2549f07591d995d30333eae82103729cc63c5373a0e733e4280c68498cf5fc9f9f702ff8505b9f011b89bbddee3472f09eb387e302fab196130c02dcf7b6a4fb29909231fd12d900f8aaa4147a22cb9b2157186a595046341032713b2f6973727e5e596497a196ede38bfc76543462a1ee3f579cc667dbc400b58824b96052f691578246ab02c13289a7c01c4bf12c3b48ba540600d8240f28bc8afc95b4278da9bf853aebce6410914539453c94e05740fd3841ee6f6149c6c1f09fdb3034bb316e10684763d7791b7ae2ce71366b86f14384e46fc1ad0ba7a1aa5dec781c07f978d411e489fa7462bdeedb92d74334a15d4dc1ed6550b797ce930055dddc39e395004f44281039f65fcaee4e75738c0df12b66f5142303d13e94531463148c308f1b14144eb028a376774e84e9bd91d63d407069088041d6ee7c5c56331d87737d4868529b4b3e6a68c3c2a33329bc3ce2f9e34f458b962cc5cb74534796d93a540110115604a0a1919867141513ca9000caa4f2d9a4b0cd0411eddf4eb5fcab680703ec2d2413d4dd0ec6babdf5ed743e77f2f541cd24da06d79da51c8271d79d75d86ea47ea3b279bd92660458feb5e6847b11763ef0bdca5df2ea7519f641b84a769b94324b649948997d4970597f2924d38f9d8fc625cca32f0d0306bccb34dd33a516d28d3801d9f165c67d72028b94c27997dad20c7c682da8bee3254565113905f85a9a9fc4707e010af37e1af8486681361d648f13385c965295d4f7b0c95c6c1ea51c65b193d944ca9d0c60fb1fde86b7ec39011d3f9413e6915e5b5dd777a395f9aa98577dbb7b08a39d1415176180bc7ffe2c24cefe756b27b91ba75651131fe3b4955c5fd30bf650899a2ba246e4a71bfded6dd1e05f43900a4b5f2db3290970b8c137a26cc02b906c62f6f1ce210dc2b57f8db00098dde17c1f19fb647a0e0e0d1c13d42bbc7699d9616a1a1717f99a8d21d3ccf068d45a85fce9367ff002d48673454e511642da35c9229799ead72c90acc846631a3c0c44a06a6a1cfaca12113fd60104610a356fb1a0d34ec7576196e28d6d865a35c97234678e76c0d14fd8e25cea0b74fa0736fe3e63c65526503a1dbf191a0f6bb9bdb128b91522007f605ba5f1022e9710144a8d51e16490c24fac36c1e849b9ea33c00996240ab780f9723be4e2e6f13ae1dcec31690e8600f02787403d7b639776037b2aeba807093db52014fe1589f482fd0248169547019f898d29703b4c045374dd26e86d483c657ba865a28aa7933c3fe811fb961730450f5177a96f5c1840669ea572fa0be530a199c59522cf774b78d70829ec3998d2f7b1913c315394fe3ba99318517a531e314c90995368363fef2ca1db8475eb2f1fa288fe0b678cf3a420e361b2d3f6547a5c188880686c81b9547aead227630a4b9b3dbe6e34dc14be4c739c82660f48f4d4bb2a7a88dbbaac9c6a0a64cad328ad33082f400ffa3a9d237b727429c8c87279f8ed3707b65d823f21cd0ed41559b6e89accc4b08c6bc41769f17699ee0f1bd1276cf02b851e612072eddda902c00bd643a55ecb7ee406f88fe3bf6cf8100b7119ec4eaaff1a9d0e6458021254199cf019217950b0cc4f8f0167a898408dd4eb27abec51a7d0da0c5fff5a47c04783889c2c2b371f52c82849580ec1bb126a26ebf2cface678d5b139976ca139a647d00a1a731500630acbce33c07cc306ac8ccd06400243cbd537710c7358a70575a49c43dc4720ddb5a036c60e40469aebeff271c3b25c7c17df93bab95f28e01d4d6a79ecdc2d00c4cb0d8e4c5a0cceb21cb80f25f172ad3f1b2706c809f2a421a02c807cdea2ef8fdb2f3844952be8db933a9e66f1293c0b99f875760ff91b43a293e5b5fc7baa6e522d23d9d02ecf6d1c671db3fb2146bef6b243d7059b91ea3013ea1cfc78671f52f64d4c311aff966828c19911f53492b5624f4c77dbe0274c8d88237a0b88a732d574fe9aac55f1ea81fceb9f382e4428104d478ba8810a33a96cc2fef677420b17479c79e4d6512057188ddb88459574fe03bbaa742b1ed7ec6f110b93c86ad004f621a76c53c6c7855bcb508bed933a06109269dcb7d9b6beb88c3da3c6d834718dd24aefc88cec2ff43ea8baf2bfc0c9e2505e266c510d23acb20d639a7d84ef701455148e28fe860d8f95b2d292b7b65f6abeade0a31ba0618e3995a0818b209a9985d0556c5b08b9bb2898d3ee1a0f7eae6340b8391b7cb7126274f3997c988f4b1ab6ee51c0b74913aca16ef82546ff27695279c7bc2c0fb7836d6349dc533c55b4710048866f221a88c774fa7c173049e08b471bf3e07837b3e5fcab8b336446e6cae1cb6422a982afa138956dde898bb57a457561a05f4117ebd1d6768435bb3994a085f8652a6c2a2875998b3692cf9257f54d52d06e223ec12260a877639db6b0d9a5d6465df8ad8cd93526850c00636aca2af48fd02ed2e54302f22f0d3803240169ad96c3c90fb219b7705f15be7fa9930499320afddfc085b25aebc5e3e712db4c40df8973a38cfec84707584cdc59221d93028670b89361ae43fc8d6d1beb322e020c532457ad59251217ac90723124a1c4b294c31ddb3b541521b7b51b492019c2fd23147967faf2c74243cfd372bb8d7f162a4404382c8798b8d4f70defd637f98d71bccebc4f94bb1ecf0393419282b78d55a812026c2033d7099d2e2cd54e3cba45dfc01973a8a23bf808b27638eb339287a42e46667b9976f64724bbc4ebd30f8c7d5e009cf75d868892dcf148f7df134b81aec4e4f4dce0e0114aa72c239e8310cf4289c2aafe37d2c062c6e06c80c8beab87fbe6411a0b081ca05da96267ab047e92bc251973f088df2f3138296a3608a444667680d06133b8cc403a22db4bd7126873d5c4ea5575623303bc71301b2354ed78f6d65fc814cd7823932df45b1ec7303b9fa01f63b34899a8249c4e5c32e5049915b10a2ca12668b3d878ce355fbf9ba96ed8b0fcd59518c2cb488edd7dbbedf9a6dde2825b0f3e08956f2f9ac47d9c7dc896026a4f9718f346670c3a547a93aeab4cf4fe18e100c6847b33ce45c53fdb239cdfe13cd46e54bf35b0d179fe9a95093ba619ed6061f1077a299af29836df2fa869f7e933d9420a16f39d7b5e585904142f23cf8cea199f6dd5a4184a5bddddf8857608b92ce72e955978380dfafd74a1dd3852614586d4ab981c9a4f18a378b423109fc1cc464fc5167ab9ad59b5e0eacfbb6d9481313eb77a4bca5016292ba162d47ad2b31213c22c95ac1f385fd41df5cc44acb02abc5d7d82107cb0ae4b829dd746c713c6dbeb2b49e5693b55b696edb1ffa19341eb96b75ce2f272b1ce87f3c798b0176facf9f664be1cbef36635eea482b1835161bc6b3c5e5eb81bc3e6cdb465d5c09566c88ea518b937b23dfd77f3964620a1835737de9d5933c37c54ebb51be8b7422c830ad1ca26f590fdf4d5e03f0b2ebb2c3c3edc80e7729261ba37344894f56e1ca7440be18b590c53cf4eb956056788f766752a08693c843f05e7af61f5a25f38c0abb380559b4a8218612b205b0555071d7b48d93e57c6d8ba0a946e69ce29add145ec7215101de8e5ce18677ce69a1cf903694735060dc45ad5c06c8a418c4c0856adf4b84b82cd6d4eb4e101024871b1fca47c5167c300b40be92b006ba01eb505090044b96e721079e8b72d785fbd6f612e20ee367e0e027221311dcb0bc496ea106f47f8950ebcc0129fd4fdd2af41f76103660911d593684945e4f31d179ac723864200c098317aee95942642e5fb0a5020862ae431f7e8663933821ea4c53142dc37cbf4b8d96daf7f3f834f773163120b59d1b7870e18817abc926c24a964ce522f92dde81aed15d773447388033e45252f229349ff0b3ba274b30122ed77da4b75dd4e329bf3a755b3067824c46ff0255419c139018115c8de8865d66b8623e5eb7d4fd27baf61155b758718ea591b91cd7d7663d210a22e78cbefb94ff491813c8f46c6d09894adf4798bd744a81dc666389b633fce9a440cf14b90f48fcbf7907ca3dc2c54645ba486c421e2b091fd781c09c15e338f22bef10266385b555563335e1443dc65e674d388c2065b81079d2c31518c60d1b3ce17637cc55dc8915708ff5e1c94853b06a444f04383cac36a21fb1860aaf988c6bdf27bf24619a42f92a6fdcf718d21d9b6a3bc6cf7ee65f23b1d93b991c24395287a4621def8e126209c14ffc160780335cfd56dfe4052836b0c12b3d5dd6e393272f0fed58eed865e920a37bed336a6771e2190bb4f829c1f95dda51a98831b6e846d555eb4a91480e8419a0a867b3dd34806923ecf8de991c42e2c1cc744a22c35af7908f4e59c7627c4480a9c0f6541df5102f1d8b28fdea1c71555a075d91debf6b81e762f498d9af8dd52f6a125827d4d145044dcb97920bc8508aae1989c2e65bb6cdac467e2d3eae02f4b3aa024191e03af917ee1e7df7bd62de3135e869d2a83de3d5dbe2620b376a8b37a6d5b950641777b29e787bb93ae3e4c7e9828b646246150a600dad8f0d1591fcb09b2850fc6449ab4a74fdcabc61b5b073cfa96a519344a227e0987fe6a8ccf1b85d79bb37482800481358e4d483009594a2bb776fbd7830a8299f59ceaed1de716715a51a6bcde04f615c05a933cd4a10fc7f7e6c464905fa8480a8a429d126d15b57049fb7cb36fbdcc00b751e3dea32e3ced0297b66d15eca0c949d7c97529559bd1130e2b3994d701f290483f24d455379a03d266cb9b50f382cc1a1f05cba2f8b1430c44ffe28f989403850f1331c388a5e7312680d05399fb469b0ec2905a2ceb97286febed561f771879315358b7afa5d4a5dbed8f818de18c8b3be667dbdf758c09b7b9280490be07b3779b2eb1c2aef749955aa5c21599c5ed12f4deb3c771e558b9aa5b83cfa0a311263a99a67b0c157c13448a4a35cca86bfe06a61fd14f1638bc153f37d8cf1db439917792555ba8ff9fc7c65a1b3a5ea8bd399b082f00a8feb2ce9085e81873ee5303b6cf044936a23e9d0da2c181909b2f7ccf08b5dab704f4571b324d5f634063582de8dd28c6a3f3dcb61591fb4b881b230fcb70efb13b992d21489ab8f2cfcbe6f3a5b572dc79f4f4cfcbb82d29ed59d64f33940387a63166130bae040a5005a1573ca048febea95abd17be965b619f740b99dd484186d159f6ff782f1b61fcc007deeb802f4ed5f88aaf292bcd1a178af739c953c56529e1b1cb9b61989769ea7d11728df353f2aa776dd84c91150979c0f010b8e1238533de868c787dcc1fe6aed80ed2bb5b0b2c8c61c1fa5708b5eebba9c992c1b06434f68aa66547f3cd447d20a5578ae92382351053737378664a3674bdc56b651db5492335ca7d8cd21288409f0950fc6920970401c3e87d490454f0869181c183d014435281462880f948e20471ffb9e0557a23c2930d352af516b1274a2f9487eadbd535a04297835327b2f3bab4897026a0a2ec1c7645c098cfc2003d3ef20a250222f9fdb4fc101205e4ee74d01d13bd3ec9edd63d4517f7f04a8a2861154524bfb7bc63f8b0e54ac4bda1590e468b56134908dc9936fdc0dca2ccf1c6808a350b3ab4335a54fa867db919a56e598bedfee29083d66f45e9d5aaa84ab72a06bd41b25eb8efbc76aceacc1234ba9aafca7cffb345be297ae970306a6ba9e55fe2ee70cee85006d4f0bdf8054380cbaf134abcdcb96f550bb7bd7932e04d1a248152f9e562db794c67099fd39739c47a9f0fcff6dbe5e6c3eb92eab5fa2e47ea61bf01287da3cf4e85182d96ddc1b9b74d5627c5b7b30f3d7e9234b5c492367f2b8891c7d8a3bee74d44996773b00f6e0e31d36a54a536102c115cfe4a5cf399ca63eecdbc17731b72e1d123fb7f795510d953aff0c03ac563928b324bf9de0d089b9cbfe6345a778853514a2f65d87e7f5d35194eb4f98da1ac268c44536cbfc88844596830eb24b474ae97e04c547a1db052f7dfa9b6153f30e3bb10eb53933d090dd913dd1bbd2731810c66a7538dc03fe30bdb31eb0d6fe7c434d942c57440eb05958459e14dab6e1f56418e9e0a14bb3b2e61f65df134c3f6ef93c1f248ca31f9a90e71c215fa0e9c21b8e4f016bdabfebc843ce940f9dce8e2b520631c492f601fdee04d9de8bfb36907e0a754282e060c9340ea64b2263848207d0286243b76f2b05a39585fae2952f8630e5710b77e4ca07ac4f95337f6e8aad5b2b4dccc5c5fbde5c301a3df1a3b1df0c4b22850c27c4a883bbf39664f12230fdf7f3cce9023fc32471be4b7cb24e029c429ab7c8d7678b44d770bb998ab94cfee70dd2cfeaf0bf04cdde925dbcfae6132d0400fa54800ff27ab68a6af5c9801bb990e2863ece309b74eb4d7092374a5923e63093ece06564dfb919669f568d0528a5180485491099b2b4c1161850a086b8b58da9ac0ebdc664ef8ddf2c4b90e05aa419a06320ea459a8449b68f0e9a6a8c319bf8c3027f18a9c0016d0dfb20c51b68d79686132df80550b337f73f0809ae6a495c72a873aeee3e106b202e9140e3774487198307a0e598d8887496a417cea7ef5889f8adaed24bf579696d70d2b2dc8bf6cff1f03edddbba19d2bcc680418cad927cd4439553b2dcf8d481b370bfa5eccc7db0806833a3ab5f0bad54e3d32c08540203f3b227ea0f910c576e02ec6790d43f3438c80f993153e99b4d116afc040d44f0ffaa637f2faf5bb4e2e51342934034d9759b09336df4ae0b279374ba97ce9e13cdf270588a00a47dc26a2530fb22c313db3206d1b8c0d5d7d32232cdf3cef31ce4585454f2f8616ee8540cb78bf476520f746769213fda4bb52dc2b134e7884b6c7b44fb224dc180765e6c333a116512ef5a8a1c1e791897e656076cdc167990534e903bec7cc1723db32b55863926e8e47295499e7ab82f4bf55920dafeb45ec299d56cd8436a1b8d74cd9121115f7f605e97fe1ed5aaf688930a412666934acc788713f225108211369c971fa0d8d21d52f5ddf91eb52e9f71b4f984b6f1dab1dac41ea3e9a8e92c81a40b61d4281f359929d3886f8e981bff5fc2aa7ee42d72037f9a641b304253527f1c09fbea51ba0fd2300be40b4607657544d2f0f752dd0af00f1b8a1bb24799ecb3954a88f708a80e12721f5df684fd7efbcd61007dd25c610e89c8df29c1bc3d51a15a90e9b7e92f195bc4580dc3d6bb3bc3cc7a6dd737429636ad8433e71390d66ca5a13f966ab5e589fed87753338288074f7dbbc0308e6089d549704c69d7d20e0ee244015a9cdb21f9270f340a72640cab37d8b4ae833c8f1d5b768881b8128d56077459fafd15bb657c4dd2867705e1c803f36d6caafd282a9500578f338234a8efbb5a21fe9e2efa85651d869d96942f061f41fb29b4d9e259a22ebb1ea93a0eca8ea2b609479fee090f4a1bb0f1ae8e5e5c1b3d70297bf0747195a2704c13f9ce7dbc3a65b5d5808f9a430eaffa0838e86657eb27db7d44105816d45afeebbd8863a43c0b8c7f711c1ee657100789a28a6c09117fee2791b8009e5734a76e12ac5ecbe2dab8428601cd05a7d2faaae7190d208dbdd57bce718e322234514394801f5366164edf08b7ccf7df5f054745c74584932ba20cb6db926da3fbc0c844d9496197317ccb43c918c9973f28bd9e212a342b483c0b4866f4db3af1a422069ded2254f086ce0ad547909899f186f8a58c2eb14ffc444796b66bbc6a650b21df575615d5cf203194434f62881434fddff8e755125da1ba59d65bf1a7dfcec287bef762df4f8012fa45aaa73bc9017c1aa1eb991ac3e96d6cacb6159d9572798c88fb599a1a7a0960ad51ceea1e90e69f213dd623924b6fcc873b5b8d1c57b9b834d72c7bc4e2f8c1795c7197a9b3d28a3b0ab7e00a12923e72c06575d48d5c0621f8a18fc618c40a85f9df9f35057926e93dbb11ab8aefe25081cd4532b51e86b42d907c3935d570c8cd9b216b9c3adf6d90b7eb09e45fd9d285a0ed266d1dd8ad7a69cc81c09ae2400edb2b8b5517c343c252ce6a1c02f6df43de346d5c603498b7ab8dc7d9038344e409c2b01d379208ca884a80c2bc8579e8fb66c84e4c03a9ee6e41530105365bf346ae3f04625fccdf28791960b3223f3d61cd7d2b3006885fda192adf1a3dece7e2236b3b88c0637a56a1b3e3d39809f5ecf99262bb0fc4a7ae888370bee352cee531fec43a8f9f85092f2a434ada4d466ce19af6804cf6a2ba1df2fff33b2c928a05d0432f398c528ef9fede0c043a1e27c61b78791bd63365b5592dbeeaef6dbefc8d4dc1a01a0503daf4e25072bee354f2d71e8176bf4d27f70c14a7042643a588c5a36e8dd48cdd91f6fd10e5f4b5a04283acd9ea6d441024ac4e3dfacbcb16e057ee57ac7e88630184508db4974dad80afeba421ee9d40359f319094ba551a82c1ecc420cace30ae1f5eca157b2d8f8df96c6af807616d4a4516b5011f417188df969da477b8b59976230c6f3a9a4d5cc19b9929a320606833fa46f158cb0cca1c51f3388eb2b4673c3060bc8be566bcf662ff84e8d278871c07dfc0cfc794cd302b75668711c6d4f5c81504ebf549f4c46152b821d925f23cd1a2b890c8e28bda1bfb0d9398d67c2ba23ddb8f97db2b271fa8a7997b6ef3623bb457c8e08502414fffc854aaa4f1bebb31fade0ff5a6afc2ff55ff826cd5eef8beb0689b3f96e3e81fdabca244215c400ae1c9a0e4cf0b98b65d0d87cc2f64976dd68ef88845440d9dadde6b9c0c4112298cce25e8110f0a12f97700518666d2f25779440aabb5a2dfe9e6f9e9cdd5dbaf3889b8b5834ed1ba9a632a50373bb682cd216323d0f6fbef0f93fc3aefce0f05390a57f46197c93c16e64533ba2abed774cbbb66cf868afbabccbef410d44156d961dac359ca40865854e0f72d5badaddd18481a47dac9d6154adf4ce0e4a51054142831a3e5986db05e53ad37fe5946a67a6ab99bdccf76c15647d05df65167d6676dc3eb47c629a73dd4fc30ec03e7470918730a6752741f2587df738212d294be5ff210768ad768710d9da6061958f31b92a98b977c8f0d4c892cdd03408cef6ef1abaaed4af6bcd56cde26fc7a687d2e64728531a229d751613f5b980814a7cba6cd65ce0aeb8e0c0620604773675be89a194e72bac8c566d3f33c430ead204ebbae2e645d7d068127598f8383abaf56319c7e038f9641b115f9348a0fdfba1493972bdc1e59308586933e70290b66ab812f15f5b6e281cd355480668df43127894387ae5f8f364c356b533e7f6760131fb767e9c89dcd627fdc5cc4067c143307640b87361329c36b936d005a1eb375de50e6dcaade4bf03abbcf0a6fca47b2f71e8bb61b3d568a8a5095582996f12dfcc8ad33895f64331ef2bb65fa749cad0f8a1d7708493391a5fc39bd64b78a133d21eaf6c9fdafc9d1d548cc37d6728d2135288dd3d8d416528580efc3703560a112096c443b79f0018b98fdb5906faaa69e390f2c6df7106aede17cd9316d47c087bc6f20c0cc838a8fceed1d044090f1bbb35e22f1973bf5c81966e770fe502b1dcd3e04d4199f7032665dc2d96e240775469b66301c536ec16445ef24a3c848a7bc96a2e762818616d994217b4823f1273a1b435a0b3b29150f8e104dafd4ecac38584e0bfe96c8b4957ebb98cfa478238ab2e0835613b51653bf406acd0599e65c15f475e5cabcd74599eba4c19b9b2dcfd29122317eb3a987a44a01cb71b2c4c535bdff97815f1f657c2b56ab80bcfef9cdb8967998c4c89efcca1a75ab2ee9729aaba989df738027e93f290d9b7fc2ddc55c9cb166d501f42292c4842930ab79ebaf14243d5fc0afa157dc8f9a859a8a12a8da86b854f66a936b8f9beeca9487f9170557ea11fc958010f24872b71b78295a58ebc490dbdd63cd115084b2e534ddb5e8b8a3e123be8aac330fa8a3ce7f4fae02be00c6fbdb0c5b624a9be20e27becb4b375ba4797ef57d29df8981aea79f572703f23534b81b789f70e26b37036c9b5e5736cc16165bb6a44ffbcaadbc30fafdac01f376e7a7606a23e76ebb3033747a06e4bf657397523716cd012fbd63f81af48dec47afa55e688a10f7a76b973c97faab2ca54a07d2b89bd0218c13a582fc3fbf2c422470bcc2f007d84027dec0d4a2d9996b7c23c5c4a0197592a02a97839fe12793782406a53120e87ac09282f3a764171eccb20438f21ffc0296780672d144737d9aa804c2348ef281806e60d9fcf87b7ae60b90b92db35f0f21b7a0f1dce437d422779ece7a8484346f4e31137fc0480eb821a62d96f26ee2e422670e3a5d3b83938a7303ba8348a5f520584c2790f3be1354aa40f8ba7f184522fc378ae86708e6019b9d8a72fb9a50f569d8c95a0a41a93ecbe09e3ca44280c993c1e06e52f36958625f234e270fd3963a2d670b5da44b002fc257ab8c649ad755659be45b6bf34a4f0b2686b7b2f85d07640c291dc587b49ddb873a1876177679bdca7bb1a859c4eeed7b552b66482103bc43e6acd88a1940e74fd70ce6854562cc2a6a9d7a456b2c5142aaa2c006703918157ea9e6589c0de5c0522914d980ad73ab4550c14fab0708c76e428db8809a7c960097495345f29820eec9d593416dfd883989f26f537ce89445754a757d04930cf175320f3f8a083e7ba3f1c22ec794f4954999ba235e49900a5eab09184a2c9b5775237cf18dffd582ada5c720cbc94c7c0ed16fe4b78823ab6915ea8f89b88528e6755aebae8d07233022f2839d10e6a9e1cd59e0f7877b274e23f593a2ceff228fd40114b385d8970e0cec83004163a3f0537bdcd42bd4ceec2406aa3ca88d8982bd77df10fdc99fd3fbf249de199ec23f3c0ee75fddd4087e9b57069ba3f455a107d67e2cd27c2eb9fde2d7b5b71fe97cf6d197280afd3d25beb5fc6dc3bbca095701479b21661fe112114ab31f29d9eb02aa9bb2a320b18bf88075ed2c3c84c9aaafc77fcf93da38aff589cbba4b77e4768ca5bc9ef45b69688010cbaa416b4dcfbe4c2603811d0e3ca7bb6ad49176617bc01e0273ab20f36084dff52a3b2b34eadac386a7fa592f9624f0231d3731acd06c30329fa1e2fde6d8e2bc3ffb0d5af3744036ea135d8e8d6fe65729f1af48457600d0241a58463688b1989e085f2f3509989fc02a30c06777e5f7f0c721e341ae3b91070ba7b53d6df7c7a27eb8accfb5d00f60fc65615cd3f8604e7e46263d514799d1f91eab2016b3f5c97ddb8236215c40c5c9455a184d1acb848a8d1047d5b3a00fe8a14bb3765d53342cf675b1b0588e2f8c863a3b3b12efb59eeb938008cbb1d24f8e97036b65ec2b46792edc0e53fb9f398c68dcab18556ac1a80a9e7f53a430303c90cd09a97b973edf2b260242695e1959ac025f81350ff6a8516b54e3ebc1295f0604c7d6b687ef06f05393b6407628a5b22a91fcf37375f12644345c9d22abdfc24f66e0d6acda03ecfa837ad5378ecd80c49536054c766cc19abe6ac9762dfd9b88bde91fdcf985310715176bb4208e76b641e07db1852d757433236be080cbb03e475d4e921f3b6e3b1dfeaf43f9b666d7256aa19e6fb89dec7115330a295d753485101a6ce7cb40a76f4fe3011950847599fc8573b70cf6ae467268a1c92c72e032a273ac3656893592749e4c1ddd5dd094764a75a077fc7c0a1cf3d6a29799ed477cbbb84c87f11fc40c694704b3e49c5b7d6a4cc66efeac90bc62de1d7bdeb9ca23f59b63b78a7654e3d25901928a83f7e6738445f5eea8653a7073694747d772c0e481e0a80a9c48eaccae61f5d3a18209c00c744d386d5d2708522619118f1b06183e14cde1ca52735fb580cb590642b9dab929f94f0d720266bb23ac965906ea16c88b30208b1821a9a0cc87193890ffefc4984af22df26629f42b399766edcd5bb9f070e03fc94a47e7dac01eae97d4f048b6079187ff8297c6e0902917e60a3ece795eba9904cce5c58ccc0556dd651ec532e2ae695d6f6cfea70520831306ad6aeb2a9121117bb9b9430c93109bb352a002c697358f42b9eea7f6e1f6283975142848ebb362bf150726db9e30ea8eaca0764024df46f94ce9d30dc86cbcd8cbf45058e4ff700223357350e200be423c73e481fc72238e0fca0883d81a6902095a76d1b307def4f88ee847c53bae71ed27dfbb1d8bbfda876e39f658e6c19ccb38d836b5a3ece104a235622a9491f231b1ffdd3adc0f1c7e35abb20bea13533da3b609d900478bb1c480ef592de8b5e06a3df3efab11344e85426d16f5f856d055b2d3671d1547bb8bfbf5982016fe528cd6a1a550c9020647dfcf8009bad19b2ebdec0a4c635a785187c6adfa6d7409b9c88f70ba9070dd68c963f1de812f6faf9ade20b7d8c9a2b769d18f3a0be50975d9ad2eebb503ef592dadcf5e5faecf7df0877dd9bd1ade1f11adc4d77cabb5a72eaba277691b5990a8893a2718db56e4e660d80153be4831e98078b73f1a101c77135409fd291905e623520ccbe55351598355d37621e6573f46343909674b04a3d988df718803b64a0e2d9462f824d79658c8c69c9a9340379130ace1e5f9732c51c34957bd3323b256707ad7f878abb20e89a613b08760cfd3a7d50e9d70e1efd7cd2ef95032d23aa5ea2b43618da86437f8139c70106ff54c376ece7bbfab94b28386de88d6cc22b8c24bc21787cc793216014fd862e6aa1552a1e0bd229085dd34e197a49b1eb4cec130277038b9d445e637d47bd28539fe0591e245f83479d4b8dedd75ba5a41d502657cc10135fe84afd0e8f3b5d0772dd6d178f812a08a9202b5ff6dd9133264d7295739fdaa45ea8fbc35c3918d1db43bea4962bdc0e14c4eaea17a8e641fe403eef9d651a77143404076b0e047288670dac832dce3eba9cfa8cb4b3f6a00698cda46b85c5d00d45972eecef5ce4f8c8590cf55683f24771d9347dd25c566162c4982225b22f8cee8be31af01b58abf687109b6e76b6c1f76f64f5d601bcb1e3949e5f062f2470a9964397239d3a2806cd62df2a2e3f4635e6a8ecafc96e9af271c0053c2e9b78d54f7cab87bc3d99d158c0a8f1588b5190a1c6ae3e1612e5e16baec0453ca69dfbddf2ea994639db871525e707d1d76ed744fa640502e32e1ce4c516be87be92f8ad836856f594cfdfb5e83a27dcb66700fd850b577b346336eb2323dc387cdc76171948a19890a5f22d9e9be7f9e48ef6aa0004e4628136677fe96a5e09ae758978e7f1777a0a5c9d15e6275de0526d65c26648927cb40be6cf7f7060e090515b9e7ac4df18d89fb0b7f3804eb569ba2a8fa1fa4e35c37e82a9785cae5483facb88794ad2f02c5f96d401da98e47afa65d43fd1130a1e9572a8d38e53c71dc94294d086426f71d50ba9ae154a0763b1ebc3a687ecbe3b1257bbcb4fc13c4bf3edf6e1a445f28368feef9002c06e3e458a3ad3eee306f3efac7bafb55d2216a1407f153a76892bfba27bffb9d6171a4fa407deedc06178edbec52eff76b8f8a6bb4313baec2fac0999dbf811d5468df94f720e46e70aefcecb602a4ab17b91ec7b65f2a9b7866ea1a49c26cc361f60f1a391f491350905f74327e83c4646c230d7dfe7541d1a1f93e5e058b6616a9fded5f99122f5c1732b6842b3fdad31bd591ba65e3c226bb2e3b9eb939f258f6859467bf5fab9f27d27aafa592de905b801a7d416f150387d0c5aa82cf05c8b6f440c4562881a1a3cc4ec439d6389067e2396510640b141cc1beeff9d62692a4ecc77e383b9cf7f539d0fd6c61d11b9d19a8bca6c0d7665522a66c2a19107be0dfb528d38caf7a8a2a9bed72bd36d0fe257838acee48a0510a93a31778e7a66f188c32a8d5d4a95423a76db7a74625b2f94c4f1cc93394f3479c3733996453b85066accd80110e46aa274c5ae404e18219f02dc6f2c8b36237e550e75f32de08dc8a7f6cea1a97dce241b9ade0893e5ccdeb7ecf7cce478aa6c0b0103815570f5fa7bd42eef3fb903a2956b7253326d3e00a6c2dddf7509ac99b7c7f30a0636118bcb821c63d2366257565b29a7f8f9df3df7a2c35d635853fa32a78e58269f7b8f7346e38567861eac1048d974108135ab627ece71a1b812654a7333bbacbabcc052ca3169ddb0b80ee876ac71068b48d8e6ce08026e08a406bbf5fe82d86bfb29147ce0b7b8df178890621db25eaa22d08b450ea1d3fe027e4159ad0849a5726006f10bb030d25003fecbc0b0a43238f5b12d8f3ff7c8493fa71fa2e3a90fa56a182202e4d64bbe559e5f96cc4ca21dec400e728756bc0ab5ffd87903dc11591dda4c693d6c54cbba9d0cb0f6f7fabcd024241f7533b9c6e151fbe9ea74b78761e40604e98af76006078d9f45d7772d8ca087e2513c46924a2fb10ba4d48d7c6764e60529701595fb6b3fece41554d1155f38899a4713ae48d4760643e554ab84a46cbd415971bf96f3bc795f073b58361f1216f72ff66285c05897b709acddf7a75bb49bbfa65c287ebf8e7bdca492459b45b5e7884087373fcd6432f2ec1a9d382dfb24dbfe5ef9d64073e8dfe4c516cdb1d72b3197f02a53288420d266962c343f63dd6dfca72f6ffa0ec07af22e3d0a7a50e6291ee95467654e867b06ece981258334b4b4b851ad11ff7a0d2d7cc81a70148ce4abd411013e20bc6495c53cc576d34196920476f0019b250df974c226f94889c2b165430204f349b8022b0150733ca25f5076a5322d335329137ace62d9887d82c69494772acb339c196455067bc43250b41ee954ec9a06c5bab91a4a0968f3ab7e8d03d207c91fd52efee6f9aade45d9a12ef57a4292a12f38edf6cabef145f3f0ce126b63a45fa06496a0801c16332c4447fab965504dfee9d2551ab579cea2f0edc9fa5d140b517245129c344b90dd9a49581d6650f022a3ca1366454f1d3346fc4603f224bb760e6a0907e993d8ac08409b9eea35b5973efcdd848c3ac4e687081ee8582aafe6354d37558b517ee9a389f60af0d7ccc15e2855dbd540b10b79a33a175381f9c8a1d876f77a1fb565399247e55d6a8aef162b21cdf0914e80e389970f203ae04ad4fb83538fb382fab859decf4e5b15232628c7d4ebb0ee98fd8823868933ae236e08842467519c6005c80230a54c13a26f76c0b72954a9705ce57674e0cf26c292699931f558f25b48502f941f2ed8d63dc2d24ac9734db62b1aa482c868597d65ff00d71f4337f96e774b175c29dbd2def19e20614beafd8dcdd5d6f8f34986e2a7546273f96ca4170b0ed917ab88404b26d23ec3413c764eed77661a7a798600cf6b00539d96e8f92924a9f05aaaa5fcb67d19973a19f624bc87cd0c29a961eedc1771477a211a6c189c36b013534de84e9c824206ec3be98fb2086ca57bf0b98d07d3ba258e53ff6312a644215ec9a4ba70607dfbc2be942c0e1811b01d03b3e7b4deff9b110dc2f0145054d726deb33e9f86728060389f85a170405ac4431f4c4f5eacc920987ec0367ecde211a8a72db1888c53d3f412d0bfbdc4e4b60f730331890023cfdc6b4a992f762baa60ee16e2dfb5869ce8a971fda1ead6957cc5036a9ac94c99f028ea179157d7526a47fc9d9a6d3864fc6b31ae74650b4270f132225141001fd6988c6eb5d86e2c01eee4659cdfdc2912c3ee75a2c5755e64b1db63bb017702402341c87cb06697beef5088bc6f4ff5332bd1cd889561e8f107836346bdfdacaf526dbba773d9bc0effc17af6ba6abfe48f65342c1d7829eab0e148c9cb1fa3ab6778d6f8a9d588fc5931377a456e651a3758b7b8ed66200153025926e6c8c2fc9453be6264dc07b3ceb724cf61df941ca089cb9b943a51d09126e000a00af705931a7a07fa7f3eb305b55ee70671c7c5b44bd657e84a212cd4c79d632f4914ec1df9a64e3baa83a96dce2c8d5728e4d40fd19b847f05e582a5a40f667e173534f7943ac05c88ca9878e3ca861d2f9e608d174819855956aef1da44585f5f0c6762d9e15fdc9764dbf31fda832f02b36dd9fdcd46f729134aa5975565e71a1dc76aaf4a272e7695e6aad4988de861bd0a1087183407eda4e60350dd7c52b08a844a769de44006895158a71b56f243fa584f5369c9d9fad57c0be754dfc0dd12f2d5d95327228148257791fc7a9af337a2210fd61127448f0a66322df8e945f3a3608320a76242502f2c9193628ddb25edb495069388c0329d97a38274552adadbd69d88864efa7445ff2927fa4bad99cb95280d002ed3c6685ba675ddb6c789c3847cceef8381203220e0a117325bfda8324b4c3618e120873bf524fec1cc25a3ce9d8f97ae324dabb5bbb9f10535a6830780ebfd5dcec5ec88a87ee9c309d332d9d3dd5d7849eecdfbaa0cd6b4cb9f3f44fe2404639d9b6f5fe077551894c9a0735aa6a8be7bd395333023e7169871d9b6bf7dd7378b483a3646262f29db1f0b9854b26ff8b9451ef6f967b42dce3a797d3dee9a96325f878e859d30df60a3d6ee6e77fd3212951673c33526a2888399f535725e83567912f191ff66fb10269f4b60bdb21126a50c20d0e7e53a53eef18f9c1249921e461af6d189da3000de436d6459024f7efabf9788cd240fea835dc9aa6600ec99f24dfbb3a322aa816c3442a7431db1f90d4ccb6a43a08b256a51c4b482267c771636abff18c208483b7051d205b310cbf8ea726ce34dc962bdb43e849be3b27103aff99986c74007d771d1aeba4e6f6c2cb6aca81ac81511687be9062cf62ebe97f6c4e8299c49e9071dd140b83f646b68603c84a536ade162b6f2622636a86d162984692ee83759ee564ffd62a871c5a4ffeea66db4d0e95448ed2c54aeb6277bc7ecc64cdfdad17bd385463cc76cab86cb11ff7b5060307da3c7e1c02b15ab4ac459107bf68048dbcad912eb3765798c12af8bf36a9b6e7a6f35a7bdecc40a442fe2a42434a4c8de878b7dd1f44febcdcc92b7a3f0673fd5f4659c2770f58903ed68d6e100dead3379bcb08edf6acfbde5114b3d40c58f0c927b2707d0fdba9365798e145d159c7eca65517518e851c214a2f3d3ec8d9309cf85fc969d97694a8ce8ae3522ca547300ee32c4fdc5f8dc3b79f30950a3f2e6a30a107c59fc8c0c121883894c4f1ccc7c38725a9b045e49195aa7be12d24dd0c5d7aa3ea47e796e81e1a39ea72f1d500f855a264acf531e4f23b0329b8f88d468a31a6827bdc7050d6ab7ac9da70a62b25e72535776324684d5f53121980139be0d20e21fb226522a20c088837cc553ff0d9405d2834f9fb8cc8dffc295139966fac46bd4a2be1044ef129e973752d819b4cced894444005044dd4b093598afaa4d1a5f374db130c3d72bf297f725749ea6740e2dc206eedf9687508bf576792e79907438e0b285d848c260f39dbdc3e5ed1fc24038d3eae90b61035805e6d9d291f6fb8d5074f0eb09eb4ba3c60f4a4a739c92e90ffe697497b7d813e562c140cc2bbbacc109b0d4fecbe4348c0a093fbcf47f2442219bb081c2db4f47b2d3c59a66de863dba9187220335afd539f35c4c8836ca755d5a039a2cb7208dc494632317a3967111f0f01c4bf733d81a665c8dd8dbfc42a0d3aa33e7049a1dd50f1488e30d7a7cdee2929c98c457249f44479cc2854dce815318cbf5d37dab5fe6ae32d2e5cfe2178e12d02848ca9bb2ca58dd685d4c709eb060c1d53e3e2f142e93541636e24916f8c95aa2966897e885f743f1112dcbc40a6c8f26bd9e7efd6b5d24027e59096990102da04bcc84b53f36fd24e28af646656ebfc9074636424a68e675dedf51c55c6041498830570ba055f5ac66ea817f937cb9d78554bd77b393d34a9ddbc04f693e5bbe9d4884deb9c4e2a000c7f1f66b5a65b378968239bd714eab2acdfa3ef3da1989c19c7da8130f496913bd47d3d91c86060c10af983e960107c3bcc41cf425e5798d6302047e916783999e661547ca0fab53f315ca2c664f2c3e5919b0692330742d236bb3faac0ac0c03f4b3b75daa1c6a57362343b0f71f7c0a76628650659e44993a5f0abdc894b2e43f8e6eb67adceea5047a5a556fe94c7e30ba28a62a73e9a382508e3beb94b1fddbbf0ccbe9f35665df619a98e3e8291a7dbcebdda6c2009e2fe8f9902997cbf4414a157d2240467ad12bd992b377f6d763f4fb62ff2c5a939e1511aca1886a4a84e52cfe4c45721fe901c80b79353a2f95e38e645f34cd029ad8cbbc62da1c7c5d7c1cc7a8a8b250805df9e24486e5a37c7e8d2a49c3d1193ac744970701226bacaba37c2cb4a157f48f3723141026b937ad0e65cca4a89a5a8bf71508f70658fd471bac2dd6cc1b593c2bbaea3e4bba73cda1001809142f1b634f15c4b8520597d6e78925207518e7d9510ee6c0ba0b512f69496504a029f5a085e243c642d32312bc1b63c9df191d3444ede609f5f5ce960467690f7bf78f27d0378ba597e67669ab785eaa3624d1ec4c8c27d0a91cefbd4b7b5185dec4a3f2df1f256071ac1d800c096cc3f825b6f44e952f90dc13b4cfd8edcc260716e88faf5a40023c4d66ac2bf0c1b4fa572e14fc791d0819c55aed62aed097bd56429fa11d4d1eace04377cd091d44f76c9c685b8729bbb796b2ace8778ddf6ea22658ef488e48cb7401218125d6deaff2c7df9f739c7032874494aa5e8aecd4466304676c799a143a051cc369e30f9d8653bd4e6030b388ae0da2f532f40c2fc35d807a351230a166fd8fef0815092fc0b519b68af853b4d7edc6bd82f9740a461ebe9d20a7ac64a2b0d504b2d7249ef29f60b32479e22d248f6608447abd9aeb6443f58776b3790e54fb3567ea574b2840d0c90f8e3881eb77da26726961a23e6aa95469cc6d7e39b9454da4c0c3b0f955fe88741cf0f1482ceec027fe43ebbdda1e8d7d1a090193dea9defebc29e221a451437050ea2f09c163afff38244f6813e40b7b6537fc2f6d524aaa0b6e9df2e284145355c71bea056da6c6512f5091a3cfc89d23ac63f2761e8f89a71eeb09fa2838280c709b5e7936b0c7586e41809eca84ce51a1c0655821edb8ffe74eebf11fb08241907e488c5a773db652ff9b555258031655dee2f92058b9c619885ec0223bc84815735a586a61b2392f3825aaf991b3be8786cccb17baa7af2de2b5cc3c9b74b0b30914d06979591abd44c143e4e47850fc4df7c1b4052a413b155ecb4d2c0ff861ca899b522aaaa09890579f4ee7371cff708e42d918fc7082b6595a89cacccdd9586b498fc9c830c192031803e16909dbbf07751d6f466ee4388a9af608185f1ca9f93783f185141c561dc2e6e96159639bf89d4ca428dc677de8dbf1b779b4ec43df9d02acfeb2f0919a2e6b58a7a96c01de3ce3c621c1b5f30e55aabb9be6519b1c67d46c27db6a524af31d80bfe44da92971957a409b9d4ab7c8a3326037156f7a2e35dccb651a31ad2219c000a2653026c4c8ea445c90b00dee35ec46bf484134785871cdba731d6cb492e1482e955684d5198d1e8c24a4fb6a0a2f9b6cbcdacc76dfdcaab44fb5af3d4bc6b018c24aa390d4b36f739554cc31a4cf238789df3e0f65439af46a2dda3e206797a75507e6807cf000fb3f92cc1dd5964fc88b73fb85f447c0f8e2c965ba7d229e0bbabea79349464ee0254fc8bc45f8175ddfee683a8fe64d2dbee6e9bee55a707fe457a116a52c98fa6daf874df01814d46aa2d31aaa1e8fc06390880c6c6570c4c8fad109ae61228fe2a9ad1da525760f52ac0207ac6d343920ac46043ec8a395ddac3cecb88c8a1e71389a9b88f9eccf82dce22b741961ada4b0109e16c978bba2fd0c03c8b060a8ac1832a39014a4522ba9f97ed14a480082ee6d38c74b3f6418c3f4ba196f6b1d4a1caec60ae2dbc93e3392e409f862bbb46824b3b7006f4644e6d42b9b19429ca509d496144fd42cf25ad637539f88ef153d4f6c5fe314dbaf3f03f76f95261f3a0c3b3823b103f944e445605dd17409e69ca965cc0802b0e683bfb06c0d49752db57de57dfcd30372ab3ddcc68b83ac4a55100e21be956af93fa9c59e74dfbcc28b7b58c04a60697fe980aca563ae75c9e77be913f73c9500e64855c1d8ba16e52d0c7759b1ecf9b388f65800801400d132f5976b0c01bb91e9fdcaca8444f7a300c6090e68124518890cdb566497a330aa468a88cabfa54cece3165ff30c4caf70bab5753fda86fe747396168b562d9c1f6c09dacfe6cc50fa80485a9156a8dec249ec7a673f4877e5232d25d013412b1b0314683bcc23c2d64ef5495046ceab747006dd85d479dc16e0e75dabca29dbc33dfb4babfe7f4d587145f108a435b42c304bb21c852c468da3a0083b049f0b581a97318b26c19dd52bb9c7ad54a43a3bf632df40add115c9b298691eb26b0036e15fdbb252bde3a1e7b9754df887a5aa21d4a1a001196d0b3d6833209af261742bb99f54cab55499ddd15be55583fedf0a0707da0118b42ac24110b19c43bc0af440e63bbec1aabdb4f50c047f8d74cb2e7a7521ef631677ae171b3260d4ff897503af5b732da1e2a7a3cd3bd513d8a85fa12338812c01afdece660f2bf6ff64d60a0badc0457b6a04bc19655bcb20501d259cb2d332a903fe8c75aaf6d1f4c8e5df9f5dfa687d1214df1fb1fc40e7157739408f45ad852df05dc114050bfb056b37254ea47f70cfc3cc428cb3c3eb3b190ec21c45c6d090b9df379a83279387c935ebe0853021ba99ba9850baf68ef1675baa30426909729760b61b0486215dfb685218f93ce10bccd46cc82f3557e4c9ead3ad407e733a3adf9539d7f56c5224d750058f73052b8b27bd80d9f36e6084daee5ac58996cc53a91a4e91ff21983f46ef85639067c7d0fdbcebed782301cb47fe0817e4bce8ebe80338448a50fca92fcb53ba33e306465b5253109567f1e4fbda090e6075a12c4d01f537d1edb28aa89862bfd0dbc11297989be88351bc89b3aff6eb4613e0981f390c2c8d50ae5ce69a8e8417b4cfa7455cd500be9aadd7997bc6f5032ff9de82c2c86bcbb5871aed2c9b96e65763d68fa3a0d25021c2859a9334cab72251b94c29443f2cbdf7ce623a81c341b077c6cd215f2e45692833411e77ae308d108fe8ef408329ebde8b7ac60dec24324c9ebcc33666b71651f6f597454b72d1e8c6f409d5719528de096766d0fa4a52f1eced25e4e687748f8d894f2f940c98e8fdd860e4e5b8407f72cbc4595a2a08e529201d5d28f6f049d32de841d3fe4a6094674f6ba35763ed162f1dca847951bfdb072e43200b9cba5729dbff12c999d642b928996e68a53d158fc3af8687afee37b11526a073af3f42cff3a6609bf60ca9d5afbafb7d7e472ec79b358f95a7844d0a4196494e033cdc86d0c6a047191409689df401b54a0d4eb1a0a1e72742120d565207027c968767f86527f0b77d70a0b31ecefa7ac9b488895e23ecf58d94bf40a1821035097022c77bffca30e14e5137538b58a8a00f8e5a77f2dfb91971be0eb8294f0024499b9a2c7b7493c8c88df4d1573d38d7b3d5f422bdb6a27b827ee6d5881aad508db59b6892582afa38b7192141fd5e5aa40539a7662d93cd3440876cb9e89b1b8e02f4732f624601a063e43e01f5df7889554ce415ccaa2bb2f6d5a254b274b8b44f5065a57f19ad183bec1a997f4a6779f0a3cb93abce371f388ad33597657c528ce1a976cfc7905c5fab19bb1435bd5097b2e2f9170996e748ed0c0d6927620169d97e6b2f9e83588f059305daa4f89a056ac1b06aa0711a940d91c10551889452ea79f827ba1fd178c3570d318ff80adbaf97beb5b6f5d6220159a4abf5b098aae401f56d344517ea7323380cca80830b5ca6651a1dd3c8e4d18d72b125c0645f25d2a1740c97ccd5e82d6714cfb8af1755c312e5c6c0b4db760d284cac42ba452c7bffc9a8fcb75a929d71e96cae2b90e4d79bc8f1f6147ccdeaa14c50e5f5d55ae07437bd20aa414e106f07e1d03ca56c60ced2a9b2c5d4deed10fff0facf2e8eb8c5e0ccf171a3de17d21adc731ac53df04df4c8b4c14fdc0f3c9613f7ac7f010f59db4b23e1a81eb652cda150c68a69adc235f3c2ee1d28ff92ccd8f87d3ca8c6cff798ade09638e5a855cc01757f16d057f45925fa9f6d9f10a5dd3931bdf90eebb7a54a9598941217543b89867006268abf412a455e4687ed753d9db22afaf1c2aa27fa93f9f39ec4c55cc90e5cb79246b25fa2e161288122a7c62a7cdb26c94ca99b7e26c2305be8184e0cee35c589586124629e00630bbbce768bb681cec731ad38df9fe76514c3ab4a7c7907f99428b9f3c4236ebfd8f7147e8de9cc476df53b2de7c082d8066a407caab32bc0d2ca641a2420a4f24f410a5da23c616b146ca027a62cbed65f612f890a15aa9c735d980a6584736e0bea582b614746b067816c36efec6ee5c606632b74e4f17d3eb7580b6ad0d04759c1fcb803722f4ce64efd83d8068901d2cb65b2a51f78d70c669a0e9c6fadd8bd75ea06e8e53fc36582fb4c3e1fe26e91400d92bcf3f9b84afdd1d36a25f07b6dc75087100e2c658a1412b73e2ff48903ee8b06bdc565227bb4cfd5c5895e42d48addb0a3a7da4f524f55dabd4892569d00f46511cbac4bb45500c4a09589c7117bb0b36a62e7b18c241465e26ac111c7c274ee0432ff9e1e7c6d70763f0f5e75dce5895311a9315cd40dbf966627e15ee7dcbf46da34b27822172dc327c3a209efe230f06a9d8fbae345760bd3c1d633a42b366b9d64a29381808c8a5590260531ce93f9595cd5f162f00c3212d7e3899c3a0a6b27ecd2d43e8a5ace0226475a71dd92c5dd74a4208430f5436553029b9bca74225f6a37b5eaf36b1979c17e29b2639ed57ad582bc81a3a4391104d0141f7d0fd15e6efe43cf1e94f8fda66b4adbc88f4a3ba2540cd5f12e5393621395b184569bfcdca8a20eeca97ccf1b90c73cd5c56a3f9a8dacbce0c395e5e1253215167d09e34e588511d005ba30f3535de1fa0c1fde6e060b139ec245d3ef0bf53de4bd8739e964b645754c4c86002102b186877755aeccec7440d16e5d1c175a1c3170e4dc7219942c88aacf82008c5963e39c250b24b6e9b7b58c602f194bd1373df1d627a8ca90b986df6363cb5b3f4258f2ff5cd0faebb099f22e238362401920e1744b0f5daf00ad962e3ce2e843bced927e01da9ab34aaf9b2ed6a73c7e855349ba37cfb20b355996d954a9bf25c761b741f81ae055ecf53a7d4db9b1d9877b0208144b6952f7803f1195e1a75e1256128a0a2bddb82f959a79aa2147914c3516a34784c445f411b00701333498092220bfdb096617e8187d45efe8015bcbf6e8331285a43ad3579cf145dac432a7f2bcea89caa08278b75e48d35ea1de4149af44b455e79b74c19c8756cb78bd16222f3adee2f65e7a9c0faea77ae0397ee810c5273ea865809f3e8617dbe08127f1e6800d00e2e1b37185e54ba3f87bf990e38b685663aa44b69f301cc268f98e0c70b30883c9975ea00f2232d1842ac28696cf4ca7220fe4bcbdcb720a5252fb87746c5d06e8e0bd044fda733c10bd361f3faced5d804fd423ec1e813acdf1f5383c6aa68ffa6f050eef49f608102290d735a29fd377b6acbc13f7f0ce35ea959bc6108c4e4dcc8f8423ee9ea2c3393cc2da167b6cb5a6441d79a7acd5b58902ab78e2540b94d364705b0d98bb7b56085567d0748e531522d8c783eb3b9ecdc5575b0c06a7de3310da6e2ca51e14c31be2aa7b0633b90d38e409654e2191e8ee8512db134fe4f1c75fca9687c7003cc2452e2867d59c2cf5cd032a0cc233c004bd0741a246d2e2e2d8c0db72f32a71069382cb53bf0422a28b27322eca7d71c8f3be555567c5349f81384e911bff871cc96dbd67f67b35100ff1e3dc23e4c9c721efd1b1bb17e538695e85980b79979cdb3f38054c99bf97ee0826bc928dcbbf80c3930dd5b54a501ce8dd6d86af2e8d97d9decd5164af66bffae857ae772dcfa79d1c10bfc18aa0c5b0f4da2a5dcc3d2fd633ab341a041ffba59ba00df3d978eacb14c3b2e321063f2c2d528a2865f176d71e67c05256c58ad1b277b5257076a5eac432ebca5ed5cc3f2fc3a3f9e3581c2c6cd40d8c4dff5073284c1c53c25a63129a9e3d8be5807d8d667f347fa1dd62e64d879db127a24d4efac6548157040388a93957b62d906724812e9122f1bb2e01d51de14936913483a88731b3e9df495f267bc24902e63fd5f2d2f80c98ed68607c18759360ec9190b8f07357e8fa8b63ecfe15cd0457022071de938d4de405519f428d019e8ed508330458bdf5e553a5f9f5ee452790a6cc7a5691233d1439acfdaa55357ddcdff527500f576767343fef2699f9324d1bc6ca0814ac8a4e9fe83a2c4ac8a0e2e97a23ebfc52c9fd2d3f947e864e40df01bce5cfe1b7c7eb69335f85c6f93bc4e2c6be80c49c5a3252255230f8814103e46493e706d97ec6d422580251989a799cd2106e7ea78bbb8e13b7667b507a08def75f51dfccaa0571b275b4614d98de61b736eea27a856fca9df6831b220147f799174938c33db70e01e93aa8c82811d0a3d3567e5ba006be2465f26bc542e6a2084fc97ba79b3a4fb74e1b1226d01f0d968a644015edad32c9fd84cb467df322c0de1f183d1d7b2a151faa13502908b60b8597f851ae699050dd6783fb45c8c7395e92951490faf0633d83f50d61051ec9f19f11afd847e6c6c7a0a36a02c145a3b0120cdbb3ab94f16b9228e4b82eb9b27fda1d389862d645a21fbf5770439b9d7603eb49bc9c42c9d2abe2ea0666cc74e5dc06bbcbb20f0bf65ee9d51e154127980c4509d47197147eb485453496bc5e5b12f2f884b23ff4739497f3f0019fd2c0ff112b96aff86fde5a93f3be4197681f686c0f8acfa5896a7147429ed2feceddcc188294d5dc83485f2f4a3861aed2f109af95d7adb2fb52730d3732937717a48673fbd2480ce4726c7283c6916130972e0fd21a3a5ddb45c46c238e298b500a77df4d490e258dfa7f0f77a2936ef85af4ea1b368c17e080ab1a50e43b707acb434bc66555eb57e0e20dbe991863e6884da5f6c1998dc1e68d8f953c6742a3e72255b588d2306107b299398ee20992f0fc82b286b897067e7e87a8f1c592311f1fab0585e95cb4b7f62c33f631eda269a27a6803f10aaef15ed43234c612357c6c7fcf25a8df7d1e4f93125b8448ef4bd749f6ec2051c10d9023bb88505368c9cc8251a69019aaca268af4daa203a7f45a6138a6edf23344329950443ed233140417943634821c307fff42a4009164444f7a1fcc867dee2df662e91420d00f315dab1f7c9d179a294831ce8069c99e2185e667ae386e86027da4657954a817373e759b108b601970482fcc47001f80f4d8eda8cdce0df021495f32446ea57e01cdf6ddfe798b6925968192678dc1982b9fca2a61c6656a8c3e389a1feb8bdbada305f5488074094d9ff5d3611d8e3ab5201772d350b90069b33cec043a55ed219543ef61f79b964fc2d3aa4cefe38e8927beb743262c40821009c3c311d59081813bbdb2f657737876ffbd4fb3b89f1f9bc0940328812bc501f3e08117431cba3a9454189eca227804c45d2a19869ef52c620119d31a0ac536194834d5e23afb780b5c64306760e3ce4f8baeaeeaac0b158f67c182a76a37b37a6f280044b036df2a0bdafd0f28b22a207c400e184c67de8cf0e982239576af77b87c0fd51fa40fe994b31e17bbbfc7df505b5d686192434866b4f21ab300095e92a622c2123ed0a8689bfdab2d4ca979650b1bb56f1a1bd2f8f8765528f742e30beb375afb453f48d133b27f2f7dae62d6723e493e0e54ddf8bfbc55f1a116aeece8b274e2ba1732fe902baa91d9aa5b9546a588a785025020cacb5660e99351d30c3391c0e605a34eba2a1a83cd0e2eae51d2a6b2177c39520929b13cdbd15b3e1bbaab41d40b95cb2e0d1a9c2920252af0fb066d6284bfd324c9d11b2b2f5ad9ac22ffd7d2f502195d67b398a1c24557956a1f318689d4dff5d22cc6af22f5e0ace62f8ff4de75cb2b6ffb104dd086164527fa29aaf0c81f0c32d69de19b85f3da35990691c50efb7036929529028c3a1bfaaceb757209032af9a9475ef3c52d485cb656c42f7e217ab5de559668a5eec3b862ea95879c28c6942e4b696b8005e078e26aecdf9bcc89a5d1dcd773159400e5cf723ce5300d8bcd9af868405deedd83e8852c999073522b3980958cdf81269b2c889d09cff8d89aa9a7664932774ea51d3decf3c3c87d51efd55c3ca199a0d00db574d87fb73ec5254d9028763896dbff325642003727536de11be637b26be2b76d7b477a0006595778b80bb99eeff1923fda847ed461b68db3a80e356f9973c41bf61aaa8fa9e8bc04d5fc4456e2c6f581aa6eccfaae3687e53a35633ad09b354c28b2a1dd569fba2f81c247dfd0e2e90b3e7abede897f6aafed3bddbac86550c2dbe348126f23294d7a50289c6d5e4775d20de0f7ddb6ac5941607a53d19dd862ddeada460c49ee0821c8e97d3f1997aae3af13c38bd788709cc390e84af087047d62056c769409fffe08be4c23404db7b64b5570e8db416fc383506b2b58da3312533a31ad8cbe763ad1296dc9235e21d185d0573cb88f906563396f7cdd89e1744e871ae3ddc638236e5cec335f27a98020bda64425c11090026d5cdca353c4819c838aff4bb6cbacfc9c903a4ee7e55170b390b03a5c753aa7dfa7fb48e0ef9a7727e61b75fadcea39efa409d43c4498e06a76a6d9475db995a9d82093e9c323599e200764204098e35139a0716961ec8714df3de7c7f34bf9fa07a36ff7df065666edc3f249b994a8389b52ac4f9ba8ccc3d50357d65f905c74f774414e39318b4e8f08fdfcba5fa923dc47c467f26b1997387805a3700ab2e5cf937fe8c9139a26bbc062b65aa1887656fbba240898a192cb90624457a4ecb51895a395902335314d8adaea02a40bf142bda98319d7355f6d35ece2742828757e266898c359bcaba037945fd4d44a6b9b3168bf5292285fa0c378e923c7615b8d81575e28b3e9fc3050ab043c4572b7b9cf8262be7942cbb68b5104ea96c0b59afaa92a7cb28d5ccc8d69bbfd2d12cb5b6181315fffc6c954501df9af0b6e84b67574cebada5b06085f59b2d765ff91f8897da7b9da88b1a7cc9aa17384fecaa4eb26c8d935c749d6672841edecc30c9b3809ff2e870eeba52c2b9367c069558cec5a643fd1ee0817fd596e5b649f9ccb38650111c3c621e7902c3d9b6393f33e18f2b9d63d9a78bbaac988b493179f69a4071643134db7288d24881577636dbda5849b221046339eaefd7ea3e418bbb96b724c923dbeaa5eaaba3fc3e66eb1dfdc1fd81a6240f1807b49dea2e3a68157d0595aabcd1c6645e682d1b9013000d89c5465f051d577b937c0a386c51c442bec1ac8ba91c523c530982a16fcce159ed6954c0e7e8b91f73ef74893ddfd41ff2b82c5501df4dd1bee06be2e6f7a942d0fe775ce8d7021369e98b6ff285690d1cbe160174857faae7707fee6d64f31e9e1daa962a975a3599ac5060bc2aa5c8a60781a47adb5239a9908d2b112d465627ae16463fddbab36284941426f7a6d5053270e8b2ba2038d138ad337e7fba73b1be7554f3cb137bb739a7b2d134e02505e792d336640ce4d1cc75ba57cc46ad99a42a2071a5ce0bd59af065f3a59756a11f943284319d242db30ac5bde5b691ce0f348fed0384486ed9e94ca91aa40ef51d7bf1270ff7db9ecb8bb1f7cd9fe6d6c323f5d9c45367af613805d6bec4831d3e1788ada038f3de1eb72e8ac868cfdcf4b20e63edf867b6f8f9f0c3db58f85a5c9eff2347a5837bfdb601d25b7302c2ed28aab7d8d776a057b4eef2268affaa6b9bfdc770d58347dda326e833150cac31a850ea0df2bf19c0b968a57a5c2e2093d3c625ce487b18804796ac727b4f85c0c839bf658a934caf39f22c04a991bd67575fae4d520fb429b81a8d4bf3e35db3de77b4e6d38485be6dcc362045ddb69a31cabd1adbeb97e2f5599f32b7859b46419327f8d3848cbe888b8e76c07aaf1f802572a811811069c1d1f5053761772138c3fe243b9d1cf75774a1dbe4b1af2c32c24bb12bfc816d0819a7a0ae1cf32c84b25d3606a24cc6f51047711d6c6c4e2b299924793d3de69c06ae7db1472264bf1e83337b59c5ee3ae208a300213118bec2283abe6ae032193cb6e60a675135d11e9e9e8105cd399b67891f56b305b609b1aa505787e1e012593cb27c8e2d3b583555cc3e3e5ae7b2d0fea3bfbf474da135ed3fcbd7e3b74a5911e3155cdd4521b11fbab832f24c31f4897604d1f03fc9bad2dcc31635c1d423b6cf3819c9815aa1bb59c2722a2fe8df8be529ec106597acc94078c7af48291d41df675f733b269e48130dcd545e3c7bc293493ad4b6d6f68317025ff6d89b8907cf94f35d0ed230ed83fcddc60ef5e6fc78988e5f542934deed8edcda2bdd4ef3baf56bd2c2db43f368d76cefadcda2d29fc454afd68d150fb1aabda656f7533ec0258da1953bc949c818de24de4991306a839f6af397da84b1a721cfa9b2dee88f27822fdeea62311f9b5d348ce86b6b7fe9cf92971b81f14da8b599aa8888aecf6f7ba50bb50d71c1f54720ed78e7cbb362575df13a6ae53a1382ef2eceb2457fca36d226cf38b4c5b0d4875600114354c21631aa5a386462f03e6a10d2f3beeea09bc92cd2bf8b04dca6c887443b4699127b974ad028ff0ff9543bd26f58339bf9ada5832356c5fdb4b360618814f43cfb4ee5d91fca398a0441f4fc610b7a3324cc43c32b4daf24aa5bbe06c4689cff55e5f99b7daa64a14bbd8d2b67c2ffdf375659cb8aaef05712d3ebfa42a19c25c7d71c0ff8c93544885f4b899b316fb6fed32ea626f33baecb8697bc3f63bf09368e4bd88285dcb9860e2e5517038b529a2602c2fc25835742f06a531f2f8d3c3b32b50c70848046589d5323e21b528a33c517b7a58de2131ce24fe1e3f4c0b9e01478cec8cd51bb476cceb439888b3d581c6844f7a1d292da90bfeb470bad9dd5618599cab1a6fe9b56152a9c1419a3a7dd00a058bb880ce3d224e19c56ca2580cd5f3f3d6872389d8c31ac06b578763b377622c971d5a6428ea4e40adb8729ec2cf69e0eabd9f0ca63eec5f693d0423dfa4f5cf417a70c34e9f908f8ce0762af9831fc51f090ec70314e53099bc0245fbd6c101ab0f80f211735b50daee81232b7e4c723b80ded944ff16c69b1755d79aced9b9294ecbe6587629f20ec888ac93757d6b7a934239d4a1038842353502d273e004f3819650862e291d07f326c5fbae107eeb0bb3c06a44256f0161be7031e292820823a977ab81bd94c62219ba338abaa737196b5743cc688eed30714996b43c34080cd3278a1efde9c43fc3251aee024d1011e824ff7fad6d12c8b1b6d0603f9bb7f463ad37c533fe2d8aa9805221c3bfbdf070d52b3c493428fb47ff62b19127648eb1e172dd5d55c071f8410d80ae15888687ee9d0384a3f4d4df2edb313bf672899347ff97af3833ebfb8f8369c64ef4657a33116c1ce1e096884e89b0dcdfb99ce83797700ea94e5ea68008b2e2cb0f6fd719c143bf118e99382d94ce24d77b60111e474695211fc30eead1e02e1544bef34debf094c3726046b8aef55a97227073c44368142aef27efc2da82aaf06c4f63476e78b328cbcaeee3eff0d7a20fcff6b08de58cb9f0a4251381e6a9c82a7c83edf5cca821668bd1238fd489911efe8991f325b468c0b53374c1a55462abc2f24b6804f41719f8727387d671afb2889bb8455377742c0cbf21327f25e462ef145784558ca8e4d0baee623825eb6911a4a9cc617490e932139a1f206c2c6fd98fc0e44b581e14d674fab0684f14cf0f9ab554977d891fc29ece6caccd779f5ecedbd874b5bce1e3d2fce8102b6aa5817ca7604818b8f77a71e41803c0575a318192c5e3f4d969d1e6a5bbda0d7aa7cbcb8055230143975ac3848cf810f9db571b690051d9c9f67f2ac81456d94dd3e60c46b1c9a6312f986ebd10025dba86f1539356421c98ef5ef9c04f8f89ea9dc047db9ea7aa4e0c8d6f7111189a1240f4a318b2a0eb92f32713716093ab1ea8658bf078f262dad0b869590de78fc71319cc088f5a66a5ecbd1dc5f255e0a0ce2768fe0d775b0d426f239455c15874971c50c03237228222e91ecec22b5f7eaf717352b768d26a534006c7fe25e45fc8ccf73cd7caa79d9821046aaf516fd9fe62c52b95b23ae359d6a0cea51b77a35d1b4b823c90f2f840b81d7c49c7f0f744a27ce78164bac690d923ffe90f28a1c8901b0e5288f4bbcd769eb5e119d3a1df09393d8eb5ac875a63e6f4be6664ca5d09fc5cea6410a02b3d20ee569b9dcf60f7a18b18be204de7aee3f4f76669b65f9bc37eaa2fa12aef3a1d0c27e6e9a8a40ddc34d17b56552b0038ddaebbcc88e6e10cbba79272b73e22787d847ee3d2382b190b3eea48284f2da6a56854f3a7ddadb745656444530319f23f72d6cd0eef2f08cd8efa1e9a03d2157019089cc3914b650324dd4b666a3cb67928f97d28b5ed5eb2d4fdb79d63f70e296a01552b8920ff5db6e7b12e0242cea143a8dd340c4a5508efa427e74de63fb8e1a40175a06230294a54120bfb20ab3880c36a20b92629debe11335e60edfbc0d3535973a50ee696da4fff9457b5a110056ab68d88219cc17395d760ff1eb7f23629687cea11d53b3c677b8b15fe68267e62e703409c728b03a0c0d5126f8ee9c48f0e008ccff323f588818d99ee9c098afd356d16c7f63b1f15d30e6323be9e055b7f6e62c7fdf652ed7ca4e7ca3ed53bd46fe54d9974e736b3a47bbf3c296928dfc16eda29f12c7188cc9e72ad32b8b37a77d8c8bcbdb25e79002c595ad58dcc5d31652d91925221ae483a8c24bf0d107dc170b472a6df26016322fb9b6c601b00ff49b4ede85de7dbb71ec0cc120639c3d955a26088e9b89182760a33bdf3d580adcf4ef0bd127c3156a8a36cbbde48c6dabaab06c2b1cb49c34778a5395a389b94d918e3207787fc5582e45d2dab92d8f7bc775833bc401ec07f0f417776d44d5e42e8ede65785e05911a0fe42ad891ff5113f94c07b7c93c864c8e0b05bc6028df24c3924dd0590fcad4d7db63d0bc5af0627fcd4aecb075efc0bf1433ee4b8f3460d40b62ebcc049afc590a744cd5391cd8d87dbcb671db83d119333f4cb5b38c758e4bc280d0040452f951c42f3281e1d22fbc67dec524114bedaa405f092582c2b8b182010525823df157be60b636b1ee0178a3050211732b665614d067222b79995f1b63311f8fa7003103bf9bca1ab4dbaa0adb1068db281f559297a9fbad6040d32c1f858fcc5a5b48d5a85517ede8fd487c88cbdab8cf5491e3bc4b7171f683c0b39756236e1d05784b9a55ad5ee33273e1b2880a9d5473464b8c9ee868f423e6f43919debf6dda9effeae9d0961c57dcad24da078d379be884ba5322529d13b954430fe52b9399fa96cfb5b96848bfdb68ba1eb39df014e07847b5d69d595377804b8e8196d272af3d7c54d894208c68e3e254dc317dfdb02d73c56989c64c257e3a765df434d71f0313b63033c12bc633cbfdc21e480b7c12f775a502c71e7351e32c8bb86819828a004c6b938a4d94a3bd31512462ccd2c10990dfead16f15a2309c0b49022b50925ccdb77e5bbc5dd72403e88fcc8135441485468ed5365d0f6d2e2469983a661d87dd898e2e1c8b8c8561f29764099e813ae7424cf35bee6a6f415e34e3852e6af47c59022356cfd0c9512d193d89fc030db6e1e17aaefb1d0a7e570414933aed799bf63981332d146420c0e3b346256f9a402167f74c186348cc2c41c9b42b79aa9992b36bae0dc1034bea3b8e35e48789e621f1d4061825a27532cb312fe60db38f4953b76c8cd05542505f3ae7fd8e10e26221a075602470483ead73fbbee1ba45f64d44148d43cb6d4e16c030c6ca407a659b84a2b2b3f65bdb109998108177910ed06e69426d65219941730190e09fc93d4a9d5bf639db9cd2bed915f3ce8173a9af2fb6f7d97b4a1b1f55816ec637c42f7b60221d6b549347397168d78c42030675e670d95982ead7f8d4c25d9d4f6cafab4c140f2caca599ba835b59142b005689724dfb0ff6ae6792ba52ccb979ff568ccd4a1eb11cdf028360370bf33ac7f419f836013ce64f5ccf4dff25be5e28aa00f004b38c735009185fe4c1f0ca3d5acaa2a4387bc1e85dcc9531d48630280586125ef14533786c39684cd30dbffeaf7ef7991d927a9f1bff831a1f424c04215ab863dfe7d795fa07e195657d4946083c52a735a0d4913c0bffa0fe53b3942b363a8ba39b563227b91926c5b67be1c461044425f17d2a3de9f0f2c45d851b5e3658e574d5fbbea9d5d6b90e9e8a0ae4a02be87c2b9858b4a7f4d5d63f95489a8164d3a844008a6c475cf9911cb423f2c296f485f5e09fbec9bd8f030aea955d9db28d06eef704d9f0b23d3c76585999ecc1cc498a14598df4d848ac3e5bf2ba3e2bd4e5d59019e535a14f0634f3e30e59cc869d29e402cf19980d1d6cf961c0436ea3ee9568d4cf9e07f9c2145f3ef5bb1954df64c45302494372d46cd7e57512574896e50a1661d6db19ca2a3fa17eed6deddf1eae9503092845a96f0f8d7b1faa6c289f2328e40f5cb5f696f024d9f2e58ee347cc77dfe2dafbc6d0ed6b29f01601f9ff20302584362745fed3f95051c56713455f4642e18d490135ef7346bdd459356e3e8f04b6f8a8650cbc9f4c7839360ebb7934992baa595f8a95230ba2f24151a19666a7729f66d6cd8deee265a116855800cfdb1aaae4c2e101c06028fa5eb999e545b2dd5d959c74d1b477081e9def4e0b86245ec7fb5ea5237370fcde531483981693173ac57d9a6defb8ef82e7b4d2f214ebd03754607b95286818d9678db7d772d3c5c0a49fe096499775935f769c013bcbcd8f7f1827e4d014b2cb085d0f4ea3d7acb44dcf6404fb3baa7d98f55d52b5f98686e3affd4cb9936f4e8b9e54e70bc0d3968426641b088f96ea6dca2979938dc483cb242741a4f5ca56c909ea978978884c32c5645bf946831ed03e5253d7ec6f981c8b7bac34dad4b8e02c1e3c08174ef3913b273d31452262fb638b0665fc908846eec5d78d36d656e56d901a7b3cee7e9e3c918565a94486fadb7a4cd510d03e4f411ab2d18b459cf04b6a217e787a2f203d16eb41520b547a605ec9070ea37157b7f5793f7ed3e92efea8305a3038662f861f691a57c59dce9c435521f714bb76e2ee1429857f195174e169dd79b649825f45ebddb41f204892055be93e398c0e33d7f4ad88779f25d7b22a6001b87a1d26dffa9979c59485a45ad14203765a2016ea2f5d8e4c2caa1527dc57f44875e058ede6f0ccf2583a5e4ad7f1998e1d05ca705f59d2aa22eb975cc90a44bfa78db7f4b9486b1975329b35f50fde5fd58d7724e4856e82bc758cb5aa6e458eb73bb4e061d0c2ad9a4cfea006f08300b6e8e7d3d8b8f025b47fb00fd3a1a0826611869f8af3fb98bf3f7c6b192cc402e196e1b6f88462f07db3e0206d03bec50058a257dc185eea625b70931126f0fa2743fc2ab33827b2b0efc854b03e408d874aa3b3a1389efa60fce78a85f254bca1c698bc86de8c77ce68e803aab2c54a77381458805e2f70a01615c898133d915c124b517348644502968aefbb0d43fb52145466b7dd2d323f2ab02791a294eb1fe9f23691dd7fcd107020ea85a64275dbede1f1b61be63322d083b4dd2597409ef59d99a46f2498babc0648df707e2898cf11b1ced461fd68c99dc183296cc1d141282b910a55c395d1cb582202538b0211964e763b58fcba9e23f4845fa06a38cc8edb0522eb7f33fb0cf4cfe426699a9b38b23daafd2fa9150c1cd913f8af5b9a28b8ce03eb3a2da6dbf1248ba9cfde8d3046d210918d6e287425e3960f2dbc102f3478adefbc5e94258e2ebc580ee08e6a7ae13db280861dea8bd55818e1996c35f2ff4d60f8b33f4b34493f9aa117529310ac100db7267f55c1be20aded06b562cd0ea4fc33358cda9e275d726ab5661c15042749f7dc7dacb7ec38b1cb6cc715e79145bbdccd80a5b392c3bf57776045b0b320af5b3f46ee643c288b011ac1d194c2247fa33ce90ab5e74938b588fc468130e83f2b39510a2a7869db992292b29dce2b4496f0a96c0d51a7152cb5b7c34bb03f1c26cd4b67964ea668bf1eb917b60d892ce529e68867379c52637e8726f86e8fe21ad07b5e85e31862b623dc0a27334568177fd552c533e47d805f469ad7261bbe001905bef61fbacd5d653a653645b02ad813a0ea4da6cd8ab8e6b1ce6cf7a2966e4018b94eb000a77126f28e91551d271b7158f26cfca74dad044a9f6a832fe2c39f7176009ed9e338bb6aee270b1a142e7d7c0ad792b2410fe48e61ebcb7a0401e228fe044e6ffe11c01bd5f631685679e337478db4aa8eed494bd81035fb9c3097b8225a098bd8a8bf0d7a8710d5c7cafa65d8bf22a2288cbd987a8cd91596b38a40945a2d242eed50a80a6d6fe88f00816002b0e25b7e809aaccff65360d026cdc88d873073fff57bbb66834a86586db9d35663321528a3459f1554d55f4e4f91a237b0b48cf64bd65549fd40c7dd810d02a8991a5f9df063c266002fd5985292f75506a8577f7c3f4712179fd0dcf11db2da706b0d7cabd5051375aa61be9e2fc587ce82da647ce8e4b69bc99db2cdd52a819b48bfc26529accd6689b9a2aad3079a89177ec17465a4d15026ddb036e96f7f9a2141a3d83b88d9df922dff6fc046f8191e94dddce7b6e67f708e33b720b9da5781bf152b186b3d297720b0fd3f2fc38b0f6094448b899c5a33f110f51aa6c423bdbee1988cb851a27a93ac9aa67ba03dfba0aaaa064a63a095f518f8194f53726b3843a7943aa040c546e8fb8da2d9ad42db4a3778d4ff25410012031af5dae8e9618d10690b17ee4403b5e78dbe3bbb95c27749080aac29fbc73f8397c4e16d8e408f1ddd5255ed09d7c478cf38aa6e57c2d991422d99d3e99c8a369ab5ea3789b221cc113f4da49aa72f2ea757da1aae9e63fa6b71720a3bd4a81171e99cc0d1415cc427c60108e7a58165e956b75325f0aca4213d107cce45c450b575fcd80c0e2ee4f5cb57f958faa02515c09ef6a04f951f54717b545bcc477b390ea233b970a628a58838c9c450e18ef5fbd6002162c1d5952bab1bae203f3abf31b126b212a7c730b99ff3b5b084c92484e1e7444892eec5e392314f84e6894a72122585d2486664ecf83111377a9818976012517fbb63198f65b2a619dda36b8b39ec7e66d3c63b76629f8b112ccffe116e68fe6429ba4a6684b05a13e21fe0851147117fb4ea815fae5d05b0d67a9817930823f5af9794c8008ad695c68bcd0f1d8821171e11df7f810db9049bf23eab84268c1e19e33c71b4c8ac6d2aec1571a8036e6a60e908034e49ccd842f1be8e606aac90b8d02e12cf75602d24842f21569754a3862b92248035c0f42a3913d0169177e297bf9db298a9e2ad05d0d7167318d8be75d1df68ef1253f361e7dd71adc640881550fa17caace526a699382293bf4b5d0f3b2c7e59568c57634b6a861d5b7145cb8f1dce6a3d7f8f7bb3cbe2e2e1e20fc0e5f20b1bc1ac8b0903684d24c43e54d78a7f43ce25c2dbdf60f542e7660cbb2093fd17d9674d53d70a7907d3ef48c881a03fc6c7a7561da94a89a2fc2e64c1336c3ce193738fd0024402f372e2e23b959e51782a0fcfb525e7df5b384b730ca5a996432178a9a9592f46f729f97024ba44ff6372f7218c6f576cdd374c8087d2c670c5c9359507fb5f36ccb9bf664229e4646bd256b11bf4dd695a00d239a6bd95471e76a59fab8197627792f1deed69e8459772492b8d52c6b17a30f19da0683676a0e4088943661dcbf77ece5f7362dfc59f4f2375e30b01a7c3afb88adc1bdabf5d21e495bacc21d23bd6840b1648a2abdbcf9730a5cc6b5d4f59a329c2b11307e61f00ba63385868733bb4d622e293adf5fc8d489d9b41f13bf771bea797acff6e606863e3488c65286038d675b2ff5efea90a02f3090c4b2d36003c9ffeacb9392937a364fbe4f4307e017b687f8879bf4a7a56fd1c65f8914e9e893bac5382dea31137ee6ab04f712f8eefacf9213198b099bb19a95127a2be89d4603643594af5bc8bc42e83629657456a7003f10899dd210004d93ca0463fa6ba3aa94f76454f2d92e47a5f541be81427c32f77fcdecc5f074e425f8ebd0fdc8b84114a61f61b957891922ac1015d1d366bfe3f0452bc88e855308956aa2941bb9141a039243d9b926223510cc5017e4bf42e34f19b6664990c8cb7ab4eda78f566acfe6dbaf5e09fe4ec760b1308ea240e8098bf73d4bba4d4e5209bb69e0fa14eece89981eb798269257f4dc9773403ea51c047dc8cc76074a551d70d22ed143c8a99ff6f93a4cea2a751736ed86adfe1716d3a1ae5d60b614de56018d462992ca6441c9ba9d72a866483b88a08e6438b1a7d8de9f18856aaecfafc5541dd16e44f8a7db8d7e2d0b2d0974232fd2470f7cafa0f23c3d909e555a62d7566f72a686d2b61119dd6951d986479e33a08d2051c7147090acca589e871f94273bc7f1d951561f9f9d68af98a0cb9225c9bc6f81b9fe80866dab3b7fb1957d6a45de65b04b9ee00f06d707c4cd14716f23b9460e045b868828f8e7ac094734da936ff82588d09c8a46777f7196f4c06906e05a53597b808cad75528612b0869bf1408a784623be76eb58adc81a086d9cd034c9a020f9683b6e28efc623bece6b6d9a29fcb45bc89e6aa1697a8a16f15f619dbba2f477e84c0025d42de8951748dbca7e34773898a89ce47c1babbf85999f2ec99c233812da9ef0354be1a9c59f52bc942827ac35dd3c0db207577aa3d6f488636f2f790f34a671dfafe220bb02ac986fbad3e7c2716ad50ce1fce2767dcb44e3154face4be197087cc928c32800a7e23c87935526a2bcf26b51b5a2021166f05ccef76ba6b1fa625e9ecefc9984e435d208fa2acbee6fcf450caf2d849cb15ec512b8554b18160a9bec01578bba04c8fe07d7a53a0e8f9775133b1562a62e4f3d5582ca04c2dafb367333766c2ea6f34a7209146a0e1b2180e13190acd59d0f0e37cdd84a6b625378f3bf2e7c95ce9da20495d59fa65aeb38f3b0c0f3db0d5a359d1676077d22b1ffe24900b09e85fe9da3ce3207b6de5946513f9ea0f6ec37bc8460bd923dadd60eb0d9c7c08c7f94ff3326fc44cd32be64f1259727e1a18f3dcfe5aef594d7d17bc6cc9b2b1f2809730d71f3b76d9285265477f6fec42ee1c5cceef79a84d718e33862aa735a997004acc40c0ffa3dfdd8fd3b6e457f7f83208c3ea742620d75a6df8b689b7f0fca4ab2675887eb8c73afb6db103aa4f9036459a47cfc2b0a2e65d312231fd0de1ccceedb1014185751355dc45344de2cdf6a647ff9f800c4f0f00f5013f240c4aea529e082874dad2148e817ec4bc4eb90daa6ffaecb6e51ebac8db4432803b88ec5faa41b9616be7b520caf71bfcb484a6b9edd36d6612ed7f73d0f8e152aebadd7ef5465156503100c1c08e8c0438d91e4c506bf4da0c8dd2bd93611a06bc63fc01575eb9d5858ddabe7a5f1a428433d5505b47651972bb3d30365f56ea800dc3491e34f4826bb09852a713d5284550b66185c8690e879ea5a7a324cf4359fe8fb08ab5d088452ed18109819cc5ada85b2b772b460dafd6a4ea153e5c9c6afddeaa50bb0d5fbc13bc48f4976aeef0fecc46905b7df1f61e6c399be7dde51a2747b61884587f5c0e9c3ad3a17c5fc7fa365064952c21887dc57098b32bf696d1ae05fffeaffc1425f4d9a4cff5a3f0d5285e39d948c13a041d0b4581c14a4a81677516e6f6f6ba008c7f7718d521ab182b1d882d28a80021b1042ec3a4cf6ced2336e1a8be9385c484c5f26758023e66c1bb82b100fe757e4c6ab1153c9a7114fac9d826957c91760012d01c27f973592983897f470656742b24822513269660e362e9395fe25ff81d0b5dd7dd1d15716871b25f19400708ef602ae6c4a658dc6c6ef4108aac528f4b74fc97d524760c7b694a4a17e70c7dbfde8318866ffc76891e4e5a1dca32fd3133a12d4045ec77b6964eba60e1917500333e210a460859b80b3f3ef891ad28ba0058f4f3035009b070f1cf9552e3a2381b5d2fbcb3c848f1a08429c3bed155ef98bce380eb7d4c3b651a430b5ff5050fd4b9b2860dca1e09decd6760da94eebf1280ed68f3d73f518ee3259a25dcbf7f6d7d22a3f7624a8021408ee5db4cdbde66eaab95f9c1a0f2011b77b5995372aa15a9132ca02766ed16f4b56752376b47135360653a2548573ac584afb23830dc5d909f6bc874dc759b778624b6f5cc2537a841e924f196fccc971e59580dfeb68f5a1a20fae89b06664910d26008172679ec1a2f4294f264277c98649078e29842831931f3e6db3e855f771f3d5be06b88b439b02785519a50129d36b3c386a4835aca8e6716f13e51a16db074b868b40ea9ac3f96bdd7c5be2dd00eda5d670d0d839835b6e231cd436b7d1d43505165780ad211f837836e285241b24b5694893b75249013faea82451024c39b38e5890d2736b76977e830d93dae0168e7010babfd89b1f8d063f36252bc697fe6f10075e7c1245b00ff017a5c952576e86822a6baf6215c1df3fe88ec3810b6b82f5de14339239fddfd4e6d51183ac458b7addd9e9037565a23c4db08af63206d3a3ad5c809c07019488cd773aea4bada10b43073ac355848e7e077c9b0adfba91908a31969998f4769052d4ea77de0325f91a65454ac0a69def5f1c377434276598f8a6bc31f15fa2100a61e7db751cb72d31f2f1ed23c84a99db47edfbfc9beb2af9c087a260e4e84844a58f7edd234b36aac4a52d20b254f4a71f62f92dfd2431b5ccdf15d355e205c5f221d07829e5f10e8bb61498e1ab0ba341eb8abebe6581068abf19064cb401aded6f70f1e605f0438efac69ddf70bfa535838561092c4535c2951bf733c373f4a8325ff0374a28447249a824a93951b53fe1c7dd552c8ed77e0f66f46d8b8c8a56c3b4749f711a0aaeefbe3ec8917241bdd88f3ac078d6b8afe26d4b8cd4ac17f87f862d0ac104721b6c75779b8a8d350b52f8184752ba71dc42196f7cdbea017fe47c5ce7a8bbb8e361cac81c4704162ba00c0a9c34458d008126d8e8cbf8f58b213d7feea99c25bfe9707d0927c7bed16a114fbfe2aef5bb44bd022436de0ffb3e6eca3aaae39a4f3ff018fd0a29c7664b64bc095997cce45da6361300a4e9ac95f5e990c58f142ca35bb546a780a003701a68cdefda7174c5ff81d14b7d523ee7329e18790ef88917e6af41655cdfb91475d3b904ff625f1403807b33f3afed280cb89359f7b2f2719202fca6734396c0fec6e4779e3776b285c9858f784a2562f3a4e548895debf24b3f940db37e63529a2fa0451903289d080244ea515ea11262606c50dbb7361d71513790a4b784b0a5045aa2007862c2478f06881130cce8bf1d7903f1c0f69048a1337c5905485f7120382be5865caac2f517a4051740c5a04215e9ca1cf06f36ff281a4a35ba9ff8b9bb835145fed5006aedd30f6687d7f6834fdc16510bc84a93d236f6411f6c50b31dbfedab0b262ab17ef667e0c87d2d762e0ad84ece3abcbe22b8e80f59b1c7d8461c813874bfe60dd91f9e3a9c6d3a53a9d8d62c8253298776d91a2c53d6f18e121cffdb77db8bb2ba74e036188402f916d1fcca104cf796400c47ece75fd29d2d7c6a62f239d39499b778c394f75b9b2afa292f2528efc30bfd02d2550e574a4a35285b0a97d4a76db9d135b53a0eb0865588503b6867c77c976879ecdfdfc9b8a0dba82918fa3cf577f12a9fec34ba3b593eaa72ee084b2024e6f9e62814156f422392af25af8d204fbec496e896950695ada7b882a992b909b4565788832082c775e42f4f8724f5bad4ab0f6e2a06170951ceae70363d05e36ee55ea536b26e45fae2b55a2859cda9c57969d7e9ec65bd16c70440f7e989c7b1fcb8a677b8daeecc44ee78defea82f6bdfa9d0810e9e08e45d3eb3a5c733d53eb769d74486f83bfb5550f1f0f6557da6a97e53d2a945b239534fa56fc6a7744b4f35a14d32140755ee34864db9ce437707a98ceee3e4829fe4ae5fb6cc5479a00226e52e86a249e6dfe9ee51e77b4ba95618c105c43ca808549f5c05574ea97dd2a7a078a0b5446209c34c3cd5cdac66a39cc81f0e728e0cf61c4c2000f65bdc4829303181d580ef874be2391fc6a85eba8161b2ca44af4502dc2799ee8ff1b3515c20884499bd3eb9307f3e14ffd000be35e72f9b340110eb4b3e0bd91c2ba72d582951a07eee8d4de6df04ce83152b40f49ad28e1bb72d6392feb3239fd0a1e4d457faac705df1a2d600dbac227dc147eb3436665920c1375214ce5edc46c9565ef5c157af8dcdf5fe61bd1ff0399417a2a9257ea3feb8f54498c41b86ec3529559c192d4c4882f551acdd5e970768910703cc7f86024e103ba7046df171ab7cecf45309dc87ff27da9ff94a119c20641fc5f0b9b365745705cb168721c58f6099364588d495fa854535e3da531a641267a960f9229bd272a6bffc65ea105150858236a7cee5c2af1704e3d25ecb5f55947c8ac3f41caa321f65b68eb0e202af9c78dab34446ff87b682e80c4048a4c73f6ce3854af5dac6661be7e758dfe5604fdff20b53b06d3513ae4a4f2356d1fd2cde777604282b8c7e30ae8aa8e46274c0b4113aaa753a33ef6bb0788c018120b48f659a8f3be17e40959674e44f04aee756d4e95c023f4544396b9acec80983095962df659f74f09318a50c6265bdca9b4b16376a2457d8dda66be5c80b139e5170033b935dc26fd1030a0536f72a44bb4d477c2ce83838808032d0d4bbaa19be4b7b86de8eb38a82dc3b9d49de10ebc56926822a72c0f8130400a0f9dab54a947132c28f802406f63294664f558c08eefc552bdf62a3bc04762f94dcba214d93e8ac71f8f7c6beb638cecf9fee10040c864c3cc67ae1ea557da1bf2aee64cfafcd9c840fce26b9c2f80df6f02446ce09c481dd70a6413a4fc54ba3d2414148368f758212f301421a17978f590789acb1ccafd33d23e5a76ea1891b88e5a97ba9dd18f2f419eb27de2945b04fc2fb22a6e2baa6d19d0601165b5d95b51c8000a68e43d92ea0783f9f3abdd62de651770aad2cfa91a3029e3c7006cfb55a72a02cd9a650109d9dc2627bda69b8f05a8ad5c5421837676963ffd66909989e9b15c83818ece208ffebba7a1ca97af9e38a3054e9aa4b0c29fe00a885dac5da539bf73495c70d6c998fced13d2b5a22943a79a107406b1d4abd98326bb9c46a2f14f3d9a132873eb7a9649066ecd0edcf917031b15e444359764126664f03df5b13ab2b4f6c2674903fe5f49cf0c5e0d30d79d6485619bee267df45983a140ad3d1e5be5a30cc3ec3489a782dc81422bcb6fb977315ec8d4e9557ae3bf1fd08f7ef9f1c6df42bee294c2ec72c06e2dbeade71b5c0622455eca4f8ce0db5772e5cb98e35475be311d31afce8c8a3ed67d4eed7b5130696d0cd34321aa36e82e568eb3d3cd15101ce3720d40dbdb0bb7756d04075a06d20064e79cc8e2d15913d6d2e2196662031fd19ee40a38da3091399991df94ecd7a37573f52295b1ceb1a19e593eca8955016a241748d2e344e6297628986837555ef653ab65a2b1179d4a16d0837123702d371f0ce904bd417ec8f94cba7d59fd1ce87822db802a8df1d3c96258c032243079abee317d3247e31c0cec4289e65f2ed2043d614aff56c9deb73fe5fa7b343d68f07337b16999e428412c21e734ccc889eae5e81aef09c7e6d9da84079579a904029368a65903166d9cdbba04a8dc838a4b69f8be43a18f8e4b0c44015c8d6e77fc1b020826bc4e7d90ab689bed87d9de18bc28b237e54cfc5eea689abd36ac02fba59a8d564b28a5aca0f6bab755ad98b8c2a76dad3f2946306ae64ef5412482ccdd96b124ad839caa9725a4bdbbc0d9b11cb60612dad9ee89d1e966b10cbb7b87d9b4b75925034cce852a730db73d6ca1f92c1d85a010722ccd50c9c4d0fdbf5fb7810377c48ea1c9262d9af86c2eebf801f119a06f08e1ca8e2c9e50a3989a5f78e3be22a0cf74961eca2b25fe047b4a6c83bd7643fd8e4eae46c18f31dc92e6b990d01225b77bf83194f58dbd131223ee74feaab7b1cd33aa9604ae7f42bc0fab9422f0b5f64e991c8d6a7bac1351b555e937ae89e9b911cbcd425551e296615dcf38ecff867ef0b7b05dbf73a0ebd63f1da88917ed179fdecc41da6efb7f695a7517030b21b6699a688cbd11bba0128cdc3ec8060c40c6b62b6533ad6fb2243a8c792311c6f17a1216f90a1c48c3d0e608bc5b58161b9a99b330237a44d758d07157b79438c29c658e15aec28e52d8ff181e972fe02e3ed7e49a40b124263e6953bd46047fa156879abd49babaa2aac99460987bc4ba138b702fc7a9de151d78b7f12e766557d1107601bdd15c957b6c9a8abb831ee4bd25be0159c0e39cc10cf2eba7acf96da11d52c0013fe761c86d5c0df110d0f2cebd686f1c1bc901e65eb21a929f10b6bbd6d412549e35eeceeba072118fbf9d304dbdb2df09cc3bf7c0767ac63ebfdbc5e09385ec3502b767b23f5b880a536799f140452c2f48e3d45511fce2fce20a35979d23d74f6c48045da6cdf05ffb09a1fe2712749240b26ef72b3bcdf799a3ecf9f150b1627a46d4af58d47c4ca7f44530dc78c2d6da9461d6c0846541c5fe4e7706755851920553d0696c424f4cd7f594801f9b14e149f67c9f2d24e08f42f2484375d34000b3bf0b04c4c774643f6bd66395f0404293230aec389b9ce2466bed84ff0063760d4268e7c868376b44f2608dc55c9e8ff675ab9e4e1696ec89e0659ca4d49b86adbd53e20670986344e688393905717f0dff960202d3e5a1345742cdc22c162ade95615cd6fc7651b07a36542ad5106c66ae0836688b4d382fec3351408bb43d05e42eceda10f3bde820d00266f780d3f4b510affe4c0bac456bd0d5153bc9009ce23245d15e5c362a1d141affb9e6d811dc52b3e1d5713c5cf66ef9a8aca896b78e77e4aeb4c5cc891c52a5d04595bf0cdd30e052f2d1ebb3ae89d1f612788721c2f4600f1bd79401defd63d0d3e6744b3e3ca38f9496003f92dc678e8b114100488e82f303e2288d40e445314ac704fb3436c2f7a0328805ff8d365b5bf6920fae83a9cf228c24564864f4556ba722508256d383a8a4cf998e09b03f0a0f3069d47645eac79eaaf0eced4993008ba357670cc28b0be2eb9c3bdaba7f676831dd7d0c5d0ad9a9dfa7c2b0d3c2aa07025712ef4fdd3e70315303bd2bfbc03393da62900a76c1326cdad0d454a54255ddbc271d8d222dd0bd4875595038d70fb5e788f4fa40f318fd6627d04415f30375a148dd6598ee24ef05e3896b3e5807dcaae0f9eeead3b2c528056c4d09778732d7b8eb111551ace9d321e12f40ebc0af826c4e3c4e2ee7f983a1d4cd66258a1d8b8683a15eea341291102846161714bcae71f34dde83305002eb9e57a4b4e56575d5db79d1aeba959553e1cb898d95f107764c2036d7088affcc07323ce032db992f84d15646b8e3a7f87dd06ea5b423490ccec5f6c9b5e665ced0d8ee591c7598fdc434ab99882d01f5d1da8e0db38ae7b061e3f527ceaa7a1b0679d5b004ce8d88eb01f55169eb61af8360630217437b393a34bc391b9eba4caa7544181aa4832733edaa444c573608a64fa09037cdb79802035478a991c67cbce67d38a659717acf7fca05abf2ca9168898eae298df4f806b5677cf5d35f7f4d1434734374ccd475935e1afdff90eacd613636a44a456f363db04223b9744b61fedb45a41da939a6d855854603736ba4205a0a68b122c9a1a5b31f171d3dea29d8cfb3c4a46a8bde52a9a8714c399c918440f058d2a2366a8cd3fc18dc667dc18741e2b0fa03d1d4d8d2b4cc66fe1fdd3c4fe8baa141d3e8a3abb86356522ee927fd4f8736c8b2cf97932010a7b30bcc6d750ff776394f362fc0c4a3f05e187b86fb520011cb90368d0ae3c8a4b5d8c9306653e28d6b3b208a7c5af19547802da6c4c58f6ad1d47c0f1b6adeba70655011a383bf87d8b907a281e143318feafd3ea20e29c4d1619e432387318615b67c9256891de7a8941b794461b535fde21a3aa2eac8c304437da702ccfe6d5d6782a6fecf4196c5fddda3fc172e162a876b3769a62bb385fc92887012c4155f05bc36e72806600079eccbe29039ce1b26e408d5ae8101831f928ca227e6ea72b8ea9f74b3f075ccb28e2ebfd3d75af286af346fa387bffe03c72943d6389a27fa53323e94d3e98645a71ec887163aa4a8d475af5422241fca402bb8c8d8994644d0b3f88471344faf3f80d0231ff3ca0c693a0e58820a0f050e32b9fd7b9ee8eb89db30877bb26ffa0e4fc68530907fdf8f26e71bde6f6eb1223136c97a249a9a1fd6d543bb2356da0817818bab1d478e7e8f2ba504f45259cff18d9b58ea8f171ac693e1642c1c3f397ae086f32b0fa07fffe4606661d8870b8c14098174eb52293efe5b5ad59fa1eeaf3aa764503ae074b787b3b41f41ee37f2e9cb42870fe568c78aa5a10a2c8a7bfe1ab20ba3bc2eaa271530e4bca6dc666720bacfb10474005e5b1e6e1ab113a64550a51b444887e2770ea1306b3af0ab0333ea2dbeedb0d0f4d829e53b8d6d32764b1c57d289116902374dbd8115196e31cc7f93448cdf81ed1ded3404e59dd316ce92c4f3744c98d526228ff999593930dcda9b18d51935a23080abf18b0634c0e8de0dd0a0a6b935adaee9f162e11795ff2222d794c14ddf0d1c3ce27c6eb5a0497cdc95b415581603178b2bc5650cc73569525f24d24465830f479ce291fef9da825df6e37e20a4cd6cde8ddfd9e182e7d9af522d043c69da848846b07a6a9fb162d9a57b0233bef014ffa13be826553db9639a7ef512135262c9eec923f47e4bbff4dd7d7c587631255316fecfd523c62326dff0c614006acf4c02bd2847111e04c1da4ecce792a8e3953da787dba66dcd76135be2f0c1fc28fcd7088434eb748c3c5e71b5460e05d2668c63476be7c238a9e796da955a2a6e0226f79de832a078432e536bda989eeed41fecdccdc88e207d539597b1c41270df8a042ee61f738a3b93291aec135815e932f76a267aba0d991283400e6b604efa03d9b0f77f12a3f6daddfe7d1452aae5a83876780786534223fd95bfb0a20a6275d074ff3513bc60d409e04d686df8cc87f26115c90eec1a4955ae1868783cba2a137fccb5e8758f5704fa498c9dedc27a15be79f125ef828ce645ae5b8a30494c3ecbe08ba395b2bbfdaf8d330b1f0a4ef1088d01779d78b779153ec655fcbb6c9ca763d2ff0b365d2c9493c4063faf7575c62852fe3977d7b9e02fd9c6507cfeed2f51bec35f1f1f0999aadaca6e7186010fc68fcf2be2c2b82e893aa31563dac12856126e9551e69b7de4c20e1619bbc5f732382c22ff8e83de9881c4172abd5dbdadaa34eeeb1bd8c6a300692a3a71b3763b20ea345f15c70954ba22543ec636e2c4f35218692b09d8a7ca811052abfda343f0293bdc7884e759e6aea97bf9f95d5d6ea8aa7d074ffcf58b15814c90297beba25dd2fc99d5a0d879fdfbe9bf24bb6831a705f6a52a734662c71bbee9ae7df6069fcfa69fc14919dec010cb642da4d96592f3fc7d1ad2aca1c3918ea428d9db405615857621704dee13b227983b6c38c90ca2450c474d0b4e32925f5315f3954830076b4c94f2547d94df91ef70c6dd2df7ce8c543fb980a579e2b8ae277c826965164d16841197ce4d180161c1ed54f89e42c65ac5576993504ce50d276d66c24f201b093aecb519730785ca5bbf8ca33cf114a7aac1ba3da14b77ee5f8ff3c85199e62103dcd70cea1d0a6ba2892d3cc25d5dc8bc7f7b773ba69f75a4727fc20cbe439d645f7e47a5e29267b3919fe4f917dbcec124d74e5757dbe7dcf2f54ce744c280608766dfce03184781910c51f46fa3cf84fad77fe778012e28af73d4e349af12ca18bbdbc272b8777bb0ec4dc7b86863f2931ffdbb1465588c145f20c76e0f5eaad3f4bad91402c6c6b87d359cb4222745d60f6f7407921837de48c78e69e5b1b49221ec02d3e2ea058bd97b0e047a3e424bb6af425f27444e2d57b3377b6621cb34ef542f1241fab1123f24dab2f5cb85ce734c7de07455509a80a5d488b3049382c3cd8bde51f2023d874ada3bf378dfe7ca09029accea04e266b1f4d00a7419825ea18b53823368b4ad9b579e62f2be64f75c68b3ec45fd0f33bd59772bd287ea0013c30a31009162cbd8a65e196ab002f2f003df80cca4486f07ff60d140e8a9d4d7919b830105fbde57178c5015e93c4b23b7197e89e1947c9c6f1ac526faae61959d755bc44c10468231268bade38ed88895a206ab4451ede26cc2f8ad16692d691ca0cc37aa75d756457bb3ef0cbe876756549703cb22bf0fe532904725b03f66ef27803061ef25e5485ab71b80fccb3897ca7a882d9329af39e27f25a0062c0e8d461be58f7390d406324c77d3f6002ceefce1d3c1b67822d636a3bfa8676adcbb8b1b74977d6bdd9c77cdccf41ed0a4cc398da4ea7d351b1647c8502c133fba1c94975c1436bd4f4aee58e715c61cb731aba35b1894af227c3f3458180a2d8b8516fb026771bc898eaa6519a9d73bb12ccf327f59eed61338e990189f2cf3a22b52242eccc6808297ea13b86d47448e2f8ed23b7b6b359dfd0a09198c2c60499e27408b05421844001e5d9c8c84158331d915dcb927c3c42a9e96a5a8c5dd3c9166612a9271856cdfb61ca3c4834976a1f9c254016642603e122b4d30ee6f2b771a17ff76d3feac259ea32da732a88128fd49babd30ca9c9e18676155f1083becdf346397e2264a4c6529a0e465da733ce792c83b142977afb20c7bd5a57f86f08c97909d46da9e538ff7e5a8940a4e8292085c9994d346397c33f59d322996f2b5ef2873e89f98118b9ce907f3d9ca006cb8f7454124301f6c8c6d801314eea9d982af49edbc37d038cd1d7abd90d122727a411388cdb16585af48f74f2681c13d630c33da6c133c15ddf768c7b8018a215883d5a97f188932832dfa15ed3952c6d50c4a62c4d4a263de6fcb9e612db139d42b9472ef0824454a86e22ac0712d527cdf6aa153b881f18c83d2d625dc5e83484c4a979cfbe5d3ca0260e4f77cf76562997bc5b211644d1fb3a54ba9c9e7024a1b37dbf0bad9704d167d9b581c123039b24468c2c5118bfb852f71b0614140e773be5e93e6fb71e977b3cb820b572fe787d91b8fcc0def1502fafe2048e48e9f52d9b915732146b0a110502b76a2060fd790eb75b6641b71371b8b34d47e7f255a16c472272e10cf536a701b7c2d4758468dd35d23cb97d0b531e6e59077e559512a2c31209b02ab11a3b07cb3b83b14ddd57098480ccf2f12714a2abb3f1a70a110415e4b4d3552a1fe93c0a486fe4f88fe6b4270c8dbf866beafd7c77568d7d8bb8effeebbef578e86c6884a266484976060ca7983be47cfdcd631dad7c8582956300c1e67a158a97e5e50970d85db3de3419b5303d7bfeda9ddf750065bd3ea11fa784a9e02ef82e9273bf003f072145483c585feba9a666a6e7437164425148adc64ae9617d9f31c2c5cac5ccf18984f7fe8a81ac4a06326dc82d1f3dc19c6b223fde1d10f699666e7f898018bc1a7b9e58be93aefac1216beb316955aa9c259734348d43b234ac0deca754db15a07c62f8f8b1ee736221edcbb2ffc5971ef36a379a02b9397b294870579b630afe0905c53634f541f4a5c7e20fc09fa10d58cdc9978c5841ab593b3f2ca482cc83e4778c95a60cca3c2c371a48f206dfe24599bebb4950bfeff96f24b06f1f49490dfaf9eef7bfaf0c7c95351af952c7f2d1575780c8d41517f969c13be96f1ab2c62f354b242db421c22f71856f537a76706c7dd8adfeaf9e7ac7594f70680a5c9c16835caf925e4848bf3f233140aa7ec1eaeba109bb330302c1e5ba7ae18e9034431b070093da749acb20a29f22d3bf96deac3d08d190613c2c0703e253fc4da7943eb72cb3fa4b8fe8b0ace6c9dc372209059d27c3c9b90acb0da1a87094a33c85bf8b1a91721a3cdc1d0edc153645b11a85471aa0e276bfee96611a048c955804568a38c9a89dd4071e304e2bd9360ea21a5deac9fb5aaf3a519ece59a9e6e88feb7d2991c47c179c7c8c792f2a64ed4b9429c947bcc18567524e642f4c60c9477625a420b18acbf0d019b61dc3e97b7b3e5026358c4c6f1922b31b064dea4ecf2376fa16b417fbc5ec01c66bff4d30c8ef6bcd08bb5851960c271a027260fca43fad52a56951ec916ae97d4c447393d0e264a64034a6c3b3d743f3a46c4083b702366a9c9d2f34951e0916076982a93482980d8b8a458853063a76256aeaf9d772a908d6f546b1b05023e6f53f2a7ba852705d3dcd367990c82aa97209809a83f90d48b2b5d770e92120a1aea7ed6d12782d4ea31f07c5209b4bd9a36ce7d00ea7c488b90920d75d17514011ec18109f1c0bdfe5121bf9800a848ebc41b586614bc16e4945ea5befb1baeed862296d54d97e5dbd73b1a46c119281129ba4a6ac574fbed1f03bd24f560df4411f0a8ad84294134a793bd1a2a402eb716d0e7b60710c9de4a235667d3e2e1494a9e6c5dedf21fe5cce99ac1fe929e95553528e9755fe5f86e677499aef7a33002113de591f09e8db112e9e4a8bfb12c6207e7f8383bc9095baaa1fd0e9b47002ead99eadafd3275980ea6525798134f7b1a66313b7d83384acf6af289a3a545332fa2b829a321c2a4d30e312d05657ce679c9b99175352476f9e1ee5fd1c795079b9ed081f00800dff526437383bc0b75f997ad5eb293525e5f198f2dcf6be0cd1e780aa46056f6f4ae343dfd8a202694513dc5ad3b68ee1e5daeb0018e8492db6b3c453d2bcfcead84432935460e91715e8b8e0d3211d670ba3a9f6a7eb9884fdd9ea70adf0a8c4cf2a4db7e65f748ffe13535e71400fa2c52e1504c08e5d1a4be74701597f4cf5a066877e57abfebdf9753dbd6d33a0b6d6ac6b2914b9541eb27385768a04bf295dbe60245373ef38581e1818634da79a31593050ba48dd28f30877ce0ef2467f8303b0c6216c3bf0f104081cd048cc344e6f6490ba343d9deaca4eafb596675192ac55da1838c72aa38b39116071212dc171ebd96316206aa45f6a5c7184d3d5d6ea8c251454e98858fe3634e85c329a511426534564939bc7c854d4fcee70eaf7249dbb908b3a3a13c5cc9dcfc07a805d01aaeb4a98a22051c814b30dc9a10c0b6d5015c3dd73703fd0d6d6a64dc917f5364157fde6bb6a6a0bb95329b9c350424bb3e220acb42156acc1b75225432f7ac60e738de686f4e6e2afe08b87a84e7892e4d640b13e84370d09cf4e9154966a0550bd7e9af6084fa68139bbc92adf567a4aff9b4273b1a35351a9258d78856200ae06cd8a218daaa33917a9798f1edd359d4c9a7f5c96cac7c193460ea65bd154d284a09595323d4ec6066c51558fd4ecd498c065df75ac30804e13bad34130170073ade1d7d22241b2afd9ae33599ca4203abd9b4253157a13f3aee1898bf02c70df59aee0453c2e972010fb303b4f23fad78de42b17525f5d6110e334035c22b551857ff7ebb9fa450d14f878446100f122db2c4baaa8112b2dcf39cf8567c7aad33483497f1c03fa8f360383c677c438e5925eac18ee4ee5e03310607003b14d9c009abd3b9c8cffedcf7f1356aa92c95c7a8da0fe657df695398b4d9c9d860d915b13027edac0fda4dd1b21ac33c6245f330abf1165923461305020669fd454ba46bc7538e4addb0ecc2ce97a391400d94a1ebc2220c5ac67a7cdd963bb0b1d3171e261d3981bb6bfdde6d159041655fe5ce1ac8c57f0625923b45abe277169c25fb384b55994e75581a0bbd64fd3477a1662dd9c752129db9c1d264013fe8de1e519b7cb7fbe35a0307f7cf8416552de09e0cdcc74148925bee2d267b5f208498dd23c999ace5fc0c60d54d2e9532dc4b5d140f0c04d9498bd69221cb46bccdb9ce5534168f684f8f551ceb2b9e7b545ea595232165da32920d55374f1f3c14043aedef8c31a2aaf8c199575f37a2e19780542852b8c1beadb95924a0cb2793a538586ea0c66cabfeb3ead4dd2f605ee23f0b44439aecc97ff49a00514a8445a9093a45b1f9c5a3dc02041d990d2e5992e9e53f39741a94f3a4a50db04961d29592eadf03814f9bbff4ae98ce67cd48b8e302e2d75bef4899361bd5624c50894d57f101faaad0df815904e6b602bed0b36ef91761b97518ba503297f740e56e418a8f190aa7b32518def4ae2f56cb153b5051f1be9596dfa6f53309c6d73959492636625ef6843852c7c4cf59e67c224823066ae290a3600341fd63b9336a1cb31b0dd74543783bd1b48acd65faa35b9e1d0b054148d00b105281c2ddcb18c75a7a6ef5e0d9e3795587b29c08cbd104dabfc2367b64b55734cd44d0ca74eaeedd2a684fb41fbfc7c5077db75237ded43bd1859f759ccfa94bc6e0c74592070d3c393dee0ab32b7292767c84e36b659aa23c21166fbbfcce76d382c1b4629eea75ebe584524eeabf55bd190db3ad45f064e05682dd1e0304747e6e513d2f5e1dfede8a72db26e001d4960e04eca62102fd2658871b300a8ebf487776a8ecfe930c300a95a6419933bda3eb1b9029e160b84a51fe30151ee3fefc87d86582b732273e79eb2a24c22bd20c94ade0582fe7dd7add404033af6278161d57487ec47f71f99c083d5aae5c4f05c1aec58ffbadfbb48c436224109e999dcae7d574e95f95c46e558285d224bf3a7df8ac27f8104f096380fb71fb30cef6b3c444afe9e256df9e231a0e49af9501a8dd9b781cc3782d5bb1d3bb0c2a29c712eb7f110f2025fe10906617506438d875116d0824f3eeb4e15a7af34103a340b5e9cc53a6223a2b58351f0fcbe952acecdd74e40d80df025426c2fa802aeedd7dffecc481e61b4e42ae1708bfb39b2869aa058e9c3d740d8b0c5d43111a24d4e189d3ca746490be4de86315d6246a331bd28eb7d848ab564c50e3042001cd4669c34b41d8ae56182a46c405de3ec0b086ca4f4d8a6c3513d648cf3d3cfc039933d227a70b1e371d429283324ae3a98c029ad9e9c4950c5458fc37fbdbddb90c7026d3c3ee8c3cd32ec13090afa3130d399ed8e35758b42b778a5452d486583fe828621065a528353c84ded248227b6cada2e0975b835634cc66120ee3ce48f9723979b8db3c75bbf1abd24273021bc92f47356eabc52d906463485228fd1c347dfda478bbc074bc825acfd13269748669b6c8616662f0793e8b505da8d061318bfefdf8f8b263225906601cab0d585956acea7a70f52cbfd1cc1220cb1858fab098318486367d3e964cd445a9d9d058c4cc61c5ee47cb0a8374ca9bdcdd18a717394a24deab64908b93d208181a9298d949e9c6ce3423ba337710d48d19e6597decd03f7e5d76313f7dace98c3fcb038bda4c603d9d5b13b08cf4aa70ffa9f1b43d22cb673cd133ed29df32bb2e836926019d502e6d03183f1a2f2c7ed5e614226410039dac2bad824a6947fe20ddedcba13547daaf16db19edb5a3945c995c3fc22c6fab61c5552203e1e1d514e95debe8908e3bb4e135eac43d5bf1c8cf141ab4529b1c4b089ca39d730a60cee135cf8120df8f4174f354ae7201ba4af73ed5ad4d910391aacd100c39e9e667fa83141da7d6dbdb960e6a2df18c7726224025aab49c74a0637f273b851d52721d342747cce56618746a35384ae4935dc8ebd3e8544c084886acdc3421eeb1a53fbbcd8ee4423902688232019cb3dfe6c4693dfdc5f55de41120d4129679b521288b9efb2796a68ea7e9d291899f0f7791ccd52c0139949c0c99ebc0f308353ed03185d4d0a0be21b217f9349b743bd9020ba11d1623d2ae38c4ae8fbdcaabebbc8942b6dc15d922bfea80b1510960d70777bad45698bfcc7695e296e686b4a3f3eae8f9693812a1997db4547648ddb22cb9cd04959f0a8867c3fbe7075094e96cde5f6beb98c9079c6ad4cc7140f72ce5ce9dac4a01e2ce1d28a5903ad1af5a2670e34fac771fe3bd5996d3b323551fdf877e05c86e7e78f4913f6d3f9b114f36de83bc5ee87db4e5c3a2a875dd84a4df84dcc1c00e97e1d81f5bcbdebee709830da33caecf0dd7f029165c613d74d0ecc8b29bd2dde9989c9c40dca915047affde7ac810393f74239a00e9e7c3f9f8c5831433dfcab61b206d68f787d55d8a8f3a950b50504688f242e71f50c84b8eecdaa53c53d842a2688d02adb96e8d02f66652fb847f99f659fe4361c8088683bf1c2100b5d458fcf2c871a83b3f52f76d1066bd7fcf72ae3035002805b42b476bf7d526146ec37dd5d2cb62b3590ecbd13158ded5ad52df2c36006436a39d4bb00322da347dd6fa82225aa54f7946be71ee03d810a97b3d8a2096a45dcaa51fc231fd319066e5d440821fdc463f2710fc4c18e8b688745684ce0b134fdcef16c16c72f38358ca16a20c4a38dd01fcae18ae9936286489f516c01c3de7be8b8290171d9f4bff61a199eec3a21cc8b9789acb5f4c8a004998b6e27aaf3fb36c790bdcafcf9c000b68f5a3a57ea888740b680796d93bcb06f3f2364960ec04ec30daa36fe800322fbd548cbd3b5765e6257ed33ccc8a3b588535c1a1e98baa46e56978b6134606b5aeeba60fb97b68ee97ad06a5b6a6439b3e0ee7109434811b52c9757291a11f8972a5fb5177083c0ec3f603fa8509be6c32c056163188b3eeba6bf2a4555d4d1ee377b86f9bf66decaaa4b4b588d0712f5d00dba8c5786ca883147ce2f62a7de80bfa5105c19a18d295897726c5bf5d8c781809ae04082d14596d50d5ec7551e1c58f06e89cd1302f3dff51f19fe976eedfdf8b86998bfb64e90886bc1e4f1f0564bcfb9e6f2e4f148e8ce18ed234ed03853cea7e42402aaa2cd430e8c1cb0fd66f6ecde0479584b8f952c7c8b13a553ff41d0c5dbb35a2603d386b3e88f101d87556cf1f15ebadf555a5883fc437cc5869246ddb77dd76e1c06e53b81e8a9316e29a70fd89c5c5c84d6a2ae6a80848cbf365e0242ec605eddfcabae4fb77689bec7a2ad0ce44e6", + "0x8f2f794676990800ff49e2109a0a125ccf71d160038bab4c93ca44d1c25e07788f62594033ffa28067db8c8a73449b1743a54ed336d5eb39a88acc6bb5914e7485681a7994a2e7384f6d5921e582a81125ebd338b854efdf4cfc0741db212a2c84bebdfab2e6af340311a3b24f7beee0215aa447382f76b8f734fa4678464eec74d45940ed0a5b2bc4b8586ef5e2231afad4f346e56691c552c6e2e5f0d0b69491132e2068ef2b2647e27411800724e605f9a4a6f666c8afbd9075104fcd8a1dea34c1d88be9ea153511d0e67cf79b63ab5c667e24a0b3c9ca654afbc2b2a3cbe3e7039a81a83dd6a919d8d0d93a0425eb1dc9a22b359eacc07aae141c249a6fb3c8b148b82967b9b53af6a56b1be9b1d5c02a784db7004219ab411952407ac4e7a66a0763bd619bdd08aed86a7dc310105e8c0ccef2e6f5048b0985ff8281c5dd1b3e46fb1a85a79928bfbbf347e4045521b14a79cb927ee349e42be134889c4a71a3b6ba852a70d8d8d3b1845d34daf1171e4a1929ee1dce6485775a6cf89cb5d717871e0101b4784d863f8424cb4e474fd5d801f49d810f2966a4f09d7499f9ecdcb66c950331cfd9c645b99f9d684c43e65c8521c86ea406545acdbc8fc4c79291272ba4433125ebeca1d016c8cb099d2d157fd0de36c1b286283feb383721159f4fa54cf91137d3fc0fd84e34741d41de91cb75028b4b1a68c039bbbc29e0a0b41569e08be1b662ec72c7529e8b39aeadf6ca18cda35d247845d1fe7de6300acb6acc678455c653f095f4cb3973a2abbd39e39f98dbc744f6abc028c87f0fe36aad63369cc57f841c119bea79feb2479d1bfe2c92c98ade3aebe53c5d5cd1e12ebe8a8f598d7001e13a5cdebd4a5626fb05078a2ca45d76eabbc250a1c09f97bcf2e05aec3117e02df7bddee395911fe35771a5c3312bb56cb5fd9b8594f376adc1c9e83cee6ae947c4a3c304f4f82da1e7b01e83d6933a51e1e11895c81d2a2217ebc65ed35114989cdd2ddaca35ada3abbee2e15e673f8c46dab4c4e6c139fabeb1a4d97f29d0ff23993f918785e8f68c97d844fe2d08b581fd10e98d5703ea36cb477a8c421f7c1eede40b1a39f9335fbc9d9a99a127b03a7dd2f3d0aaffe887ac909d316281215d4facd25e38f5fcdab45202de31916f2b37835ab55a59b27b0b8f275441aeba251d2f39c77c6d60418777cfd3807bb276270249565ad351a062a6981d0b209498170a773d913cbeff41d87c96e312ef40f183818472fff61072c2f27ee16d3ebfe065b77819a507457589609ae7fbcfd859230c15bec488e8bd9b6082587651be800f61b34ac074fab7f43271c9a5ef3fcb0118732d36b3970b0cd11bf8597a1be52019fc6e3c09fb21f5ba4efc6cbb8fd4f7af7302b96915e672f83cbe455e285d394228626b82b6cf0331a7a78da889a6d524dc577b17061d2a6a4d9a0d1c6a1d46fac417a188a563742b2124e6249d98334f86953af882450abccbf2967644bddad84115e23d1681c125bd8389edd0a4d20a90fe59532033ffe5c81d13f246ba19f0f6f3e183e154e9f4840522b548e88c8d8d2449932e83ac4f23e9096e39f32cd295e051938a08daba4da123449325d67b486e3a73f715223ee31634066d2d4e9d0b1d7fbe234dee2a1782ce7c8843ccdc2f9a29bde58aa093ded92544e58f5f50d881417914db79315b8601ed41cbd74f3f3532521bcb6d13d65ac9eba42614ea65f4390086e8655031c1dcd7a36bdc25ce253677f683b99b9236a9ecc862a814f8f46039cdb3dd4281f833e1ff76f93f6920d49f6ca0910725fd0a4223972a606313e5a7a1fd0abaa027d1c49562dad59432ae31eed6e6aa4fb5d9cbb67e534dd976598d528be244a0fb86c319489785153b00fabb1ba19a4c55606accb1eeaabc58349274a600b53b5913b0f367254f2a6f864f342cc432984bd4e65832d307a0859d8fb39a9592dad5d1c59ca0575df3d4b31aa307a48c23f7af7212e56b3b46df8c548d3a62714d3c3eb35dfb6ebe1bc7383e8d6f29d7562eddc7e311d046bbdd3880bb5ac438fd0b4782b1223b6ebe77d919456c26c397b7af3362e36b106207d5cbfb54d3b011f56f48bde1ca5369699421d3c8ba759cd1af168bea38bc217ba05db7848ce6ac60c4c89facac1413f218c3e292c8b2afac34a3549c86a2b36b44ffc2cc0f39b9e89971d719bfdfd2c08d13719f78312febcee48cd05227719d82511311ec21f0db2260a06191912b52a7ff6f04cf4cf928835a194232f4e6e93357c9bb7b0ab0bcd053f7e453d4c57b0ef86d9d4f823370d4ade813c956e1bf96f16c3951c0efc186bbe1a2581d87e31654978ab270cfc39e50cf46d3c59b9fed27847bb35a1e559c46b6c223aa0d86c5e413ada8487895c10b1744bdce3b9e6d54f7762aa30696afa3640f0cdfbb332772d82db0e11e509ac8c059ccedc5e77c90dba41b53ddd8475726756ba9a70ef71c81f5f8e42ed04e1f5734d712493841fa4d8176b8792048d495895fc7f40e95deae3559c093e5e773b76b8ed413617ead030f719358a93140e4ff19175b7f4ca1afe0515318d53bac66f5549464c9c4891353543f7163368dc931c14fdc82eaaaed2d238858d7a8c8ddaea8142ce9ef1f48d65878156f1bd4d59fe0c5f688a453c017f14a70989fe9b9d61a4428cef460f92493500ca4eb17fe69691df5db4e43bdddf790cfbafd8be292d83ed39b00e80650f025d90d7add99d7420b5516e3ae9682d0611f503806886ac3c86005e7f90c6e42aba769b4408ad26a88a1a75650e84ec514f064569053ca19c24ad5e09357185d56a6aac571ee68a6188754c112124b3634fd72bb604181af58bb6a9a2368ea41c5b07608c49c4bc2065bb3d3ac64c80db92feac1a76444b6f7793492c21b065dec0ba9c9b8925363b8c8b09da371da44902bb12574442c1638de3ac70ea191d11f9ed1daafb1f8667bda0ba56f45d6779c21a03eca97345653b295b7fa7534d6497db1f42769d8d36e1dd74bbeafd98aa5d3040b78e6bc14dbdcf3ae2e979c21e0e5bee9b862375a6932fd860983405ee8331c0a70fb0910b71f1565d5e3fa666aada5a831df7a64ffb7b7e4ffe1309338ce9fe6b424c2beab3851eced7983e2ab0bc30e8437abb70a1c15e376460f60e63433f11ff47478eb3510f07c78f1f5c125ab8a68dff8a3558d7b96e1ea0975dafff76a8c93102e74df5143372600d5c91ea48ee35a34c54bf821a085a48cf09988fa9f31c668b23bac24bf7ff4f241df9129d316d35553d2b39274e809cc632472c1d13560b5926cd83071d2370c5a86416769085af402aa452df22ef640e7dd37c5f1c354147f35d82f1af7b71672d278c29d4978d075fc6fa7476917233ff772f32b2e7a0443ed906cfc946bdf02dc1250aaa7524b3bf78b872a053bf40f06422a41e7cae94d8d784cfa01ccb7a5575d5c395091eb60960fa95de078f622bf42c0b15c398dcbc4f9c204672ff4206013e5b71335db9200ffbc87b532b1ba04dafeb7fb239a4c2641d8d993806d84c57d1c78afb267cc16f4c459dd1a6ff7ba1a9f12eb1520ff31e62d131c7d0256735eeaa349ff8498195998059e1ac04b1478559f43c815773eb97284975b12cebfac67ff88b445e2856d650483fdf600489444c5d146d106825dece91f5d0324b650647bf21567558bae292d773ca9cbe4e885afa9b28ea7be3cf5e66556bdeaadfbe297768cc64ebe46391b9b20357031baa557185cee7152d07b54f7ad2f7dc1f499965820e55ce73abbe411bb37774dc32360bbd474a6ae3180df90a6c97af52f727dd9946b5012242d213edc14f2034df5bec9290946776298f7940d0154234f0de9500ca0dc3e69dc3f294a724f82ed0438d7ad793acdc26e0d028fcee6f83b3caf9d86f4c754156e2e0ff3bd3f6503aba79c98f40e85ba3f218201302b9fe28651181f79ac3d98594f48bea3a9cd1a3c1d8f4a8d384cb05da16df6a6efd934a53f71aa644846fc69c00beb98ae6fcf7bc54f31beeefe07ad98dbbab6a5b20508ea2438905e295b3ef1c3a153bfcd6a21a53e21e293b0072a2d19c0683e007e52a46f06fa2666a8cb89ef794fc011725a23ba77baad2831606e2213cb165ee2d957ebaa464fc438d9a0c83b4b3e36934764d580e96dd6d3f173f6236ff463232806418d398b27c982422c12cbb271e57d738f6a78ca7c5914cce09eea1131397d1b98543db51429b6467cb695d8153d853ed58653261916113a1283543b9c9b4c91ad93e07e8a17b97775dd341055675a5fd8bcc989c631c6c422f3cafa9a40bae0bcd255b10f53a308345178d49f7eeeb684d1106b9f9925155775eed4b16a22c5a411f1fd1858de5be0b1f33e8c2ca4d71e9ebe06e0c2b324c37a65957f3994cef1ffaf5e28cbac19becb7e9c799ad73f55635148cb710b3ca40d58abb55e51c4b873ad0648169f9697ceb211620652644e26a94214a459418c78f4950f9250d76a1bade2c2531f8abf77704f8c6dd78a7d6c8838ce34e0563891ea601b5fbda40d0295a93c3ae814236d5a570f83997448ba193525ce74c92c13ef30e5af74088140ef7c8b608917269d57505a34c1d8c7ef66346143014f701f3de0d7078abfbc216a19f5d9e5d84374136b3252ecae2cfee1dbf57b0295008810ab64bac5da2f135797b1ddb6fcad1e7cd6d890ab499477dcc2a0ae0a1fda062bec43891f01acf52cbbd5e605ca63d946c44af60141552a104bd8c93f75ade151e960fe478286c604d6067cb3c17b8b687dcdf9e92c0f501a090d8dd9a29bc4cbafc2851f39d9231e369a98f484997d9d86380cce2f07d8f9bc7f04a80494cfe80004c43f3e0de25a270283cf0bca0ae4d4affc11519bfb92daadcf8c672deb784e2ce6716a19c4bf83aab69f2b40930112c0b187a7d69a2ca296d8fa76147b51c7fbaf33a91e6bf8d3a669956dabcef9f00efbf85370d6f5c85ae87e7b696dcb73fcdd381b4cbdd1ffd320333523d99a9211d4a14bbffb7bb1f8d33369a7774362ea08e7083557bf8e4fb7d236e0faf1f97a4cb3f26c1e333427d24d3eee0a9be34498daa40216567866381d3e3e38d190546fd286f0aaf5f790e98fb1ca2ab8d71a7a619e2b6cd0845ded9444c02c53bcf2ed96591dd47d5af24cd530d5da030a6446fd839bfd8d3db50a0ad81091508137080ddb4dfdece8dbe88c2fc248e99d792ce5f573f38d6dcb7a28d13811e938d5273774f52946681b5d35c5bd315b8b7f8984a8d192f831fc5de85986c5005583e88931a30af26d0d1ae69b2c434f2bd14ef8363fe5969aa4fa1a44deb5bc3457d36b3dbf763d885960c82e2c603dd4c26f95c5bfac58daa801e2af714c0909b3e7ba2a8d01d7f6da6f9a586cc6a2864a6660749b70cd07603e3802128216c97c28460f3de054f3b7482c323c0680a9617e95a1572bad6d0703662b9ddbd5368fc8556e1586ac89e9ffe540e4a2dcd6310022fc8405526b1fe58e3d3c057ef3963d1ff3ff32bb00b6ce3ef5a7f93fb85e8129664d943ae553a722536ef50ca4cd744ffb0230c2d2dfb2457908bf36f3fe9d82a7eb458745d2806ac51907be2545a188f1719ce4358bab1bcf22fbd325161a36f076017f0c2f4c02b31d6798d2b49fde77de7daa341c5d763f43ef29f3a1f4052bac820cf13c8a58d61d87dfd5fab75962143c80568f2c201808b8d31f8c45e11f9fa53c91778f32ac8204a190c3987681aad135d80eb176baadd06dbe13d871667da9c2b2e3a427eae7972b0e09c6a53cf2c07f74c6b0e9f95dd51a6c7f538f28cd6c7313875f2145732e90885c57ccfc4f4c75bc37bc81ca9c03fd9c2a6ccab4d1c8cac9d9f3e187cd4329fd2bcfc2664688130091e1553f2c01c0f83f07e5e0ff7c6535d3d47bf9b7f010d17508d565be9cb9c6c8df14d9016310c7b273563cac8e867f7480d51378e7a3859cb4450656f2acd77fb77f2427471e6c49dbc8125d9c94abf2f52d8a93c4077d4ca7c61fc01794d2eb75eca89f151ff5cad6993e6a679737e2f3909f96afa3cea53a02d07ee2fc574c9cc526ae25cdb4a1a05dcbd4c1bf4c06c764cdde44a12b1c6a15c582add6c1ac9407261396e5ef84b959688021dd7fa524dfb9a32670d3bede0f58799ff46bf43ac4d41e20a799fbf209ab3855e72186458d7eb8604498da0b7677d391908c879fa135b00e5920cabb9a212c3b7920f438ce3ebfff94f327a7c161cf88c59cface589e7bcbc4499d3a7035c7e34f767231550ec9d99c2af73bde2f0fac13519a98378632a6b51f843ba2dd183fcd2bfa5eaa279c8bd9820c55ac2f8656df21ca03a0a466927eec0a3579212b4e77e7e8c4a9721a1b8f861ebd820ec723f0637b62875f429a724709b2f56af9d4790e015c015b8284465928a2a7d3fcd7f4f03eb5f78970ad6c31753d48a9eeb41f751dbbb6f683b5491c02fcd7aa189ff95fb3638d72cd444941cd855843156b5e9f7a73a07c641e2663f172c47efe66f4cd5122fb41bb0c69e0ebcd41da62a84a91b747ea0aaa0e30b823279363ba073d36db3c87a93369329755e9d1dbc99d9e2ff06693bd0988003145265bd10884115be86289e1f02f8d6954f20be5fa60373093dff014920ff012a510aaaebbeb0f3e5e82f0f74766674372a0a5f4ffc1999ad58f28ac4b4a9f879a6bff2ac650bc28c931be6e8e29327524a6896d1b0568d8e5f3b73fcadf70611b635169f9ceff44e0aa882a252a6140bac457e99437f0554054ec0368320af0b64886fabbdda5c5b35bf7b0824aef73e055e2da5d419fb2c7006a4b25fad9e466f2fd274602de9e47a349b7d604d9184ce2af00b86885818277ab7d66b48c47e837050e2d80bece9c64d00021339f2e5efd79a747b8db992090785d0a28957a8e31638646d5bd356bb9728dd5b6c777d205afbc3b9b79f7a907729f92f2ac4fc287d0e22fa537ff0d34271868465a56cb9bf4b0750e5e2bf9118dd058304c2c9f1679770138ed9964ce7fe5585865b8cc949f2adbf82b5ce3e88f8c09d7353e60657ef5f8d68340aad919e29cbc7a1478f639883b98a8d62fab9604e046e8bf8ff573952421001286012d117bf62c761b09013373733e2ec13f8fd55bec2e4d2a3ae11159e951bad5ba034b39d2969a65e36bc1b6ed7ced915bbf2e6b899247281bc671fc4dc5aaf4447a4b3203d51cd1e89ce92f6a93d6663b3e4843e2e24a1f4611a36f8292e281ba82102fd089b29894f04356eadab3581c77296117b2b1ed3027e520314f47e68ca2881df55978469375ddad344ab89700aabf6cebd829a29f61039174788d1d2c73917eea6c4e309d6d9ad5dc02700ad86b44f890f15811b38b5fd524eeb0838a224625b4f04473bcd0680ff9c440aab620f45561db90cb0167cc609e74fda8a2f29d2132961840a9c742acec767abf5c8614fe0a3994640128381d3633a76e23b85af0af14bf8aaf32010672a3f75ef72c4b3f5bf36a3f12f826204636f3edec5d474a17a2036f2124fef0f9f84dcba9f64333c4b34650d472fd831defefeb1660c62cbd7e33dcb16187cf89c78e9b229ba7312568778607281b3025b0bddbcf51b0f53868da5933e720b17c8797c93928623b29c76fd01e1ec5993a3367b1815782ac16268ff71e629727ef51f209577c3918c4c5d9ebd84de0c798134a0750abdcd27e01d0b9f7b6e2bb2865460f2acab320f41ebb73a6217c23a7510f58311b51561f46ef151779d82c09a3589b10194eeef3d1a9de60fc2cdfacd0334f9b88817dbac70f4faf75aee15a139c7f60c7026c74a2105fdab136ffb6d82072f8688eeac15731c6d82b4d3aef5d52efad0220014d9783d71a09874cf697d4a3e345d50c4d524d8f4f4b72a794523cc5104e6ed04c7c2455b24180bc799b1a45743bff9b8b1283dd1e3ea3b44961da9e5d02a7457d5f17c2658a9317715954f3bb7e5ff68d7b5418d89cef6d8b223def41ca3a6b331407c29e88abe812aad127f5d2a17cde70f2ab1bb683cb40cf656b342668c2c2b2b9ea73d466ffd748b939c811c944f05b99e6290d0b0d90c6367235eaa1978113b5cad27a220ffe5681847aa97dbed8a9fd74ead8e22ede09f4516dbc450d1458f36f517bd4342ad5f7b4d11bac22234cc84f59831ce353bd538dd09aa256a063a760714cb66d9330db7ef37d73c8cd37232c902a50b886ae1e8214514fdda35c1138aa56bf4854b1023d90f963b9aae655c1b3223f5850ca60136907d14a9e2d63596674ef5c6209173e354c0d1f6ed37175e471460871a229399eb191b0ac06b56a3878694e31ccdabfb948dd63ae020f43f251a1d555ecdc97969d26487cd9098af4a65d6c36f202db57524e21fb7618eafbb17b173e0313812aeae685b1de636e0436c43159589fe128e46535f9b9a8bd51b4d43007650900e90bd277fd11e9e641d6e732dc3d13f26a0c83992358f6a0ec2f31bc1834a3d37649c6aaa0af176adf27c04171c59dc02bec7cd4696550058a2f1e8b46b6f977a53e071008bd0aa76a3c1cd3fa7a72d9b238112266f42afb0571832301d57ca1be5a149d8581ce4ac11e9deef3c661dd4bbba2a94e9e3ba8dce9c5a4d8a0a3cbea61cf9fe307c56be44a80339779117bdfd2475e1601a6b4d43cba3e29c82cbd0beaf200b79d1a4df3303abca449c52620ef28626b3d3881b44567a4c324ef23dee2d8eee1574a6c3ab6e0ea154db7d2ed172f076278b7388c949824872d3aaab70791aaad8cb20a30b465682582002afa6502c7a45c3c0e8fea40522e83c627c16e47713f5739a56b76a1e0d0461110a58558ccf2949f3aaebeac66026636d01efefabbf117010c223d2d4561e0b9667f3993e78f52f68a28bb84c7c43d268112f3834f48ef2c0c74be0da195f6c25ce0d8ae080acc1e920940a05ae113cd91c65bead6ca46b5dde9a12dc7c31416c77fca809861ba5ccf23dea791e7152dc6199c0c020f494cc7c903a865a12c7646160d464b33da055c69de87575b15d44777ec9562a06452aa94f4e2476f11c83b9ab38146fb6d3ef2a6b9b2492a0a2cc67fd8448141cdda68d7fa79d1effbeaccce622bb4eab7c55e8d9d33e7748e5b200bbe81e536f9bf57ac8df8fbe806217c80d22d1d1282d2afa5ef909fe65eb63ad4524509ea25c82ebc996461f1b20714f9533525d49bffb244c37eeb8adebde1f21d4f7337ced9284aff981def6420eaea44ce81ad544894d26661d9e893b1dc21f9ab7128394046db137090fee4e8b9519dd346600115b0c3d59fb731a6af91b1968c2eaeecffe2541fbe4a6ede839a8d662de2797b57ea6f43c6c67a6865ddf1f96b1931333b1303df1bb01c61f1d04a3ddf60fca0b71c8e97781d4dc84f00d0f885de6c9ca677d3048117cb62d7809fd566d7acd0cf6d79eb342852df8bc35fbf9d661e7b0d7c35b1ae74e93ada7d26716a072a7279a38e0ee66e86653737094d14997e67e6317d016ad4f42485bfc46db79c776d29c2df03468a273861ac1ef84eda61bbf7385a7f8635c2c0c23935b6909b1baf5c8b3480107385dc89ccb0e56d8019160c68f0acc088f693e51b6d4c4dda44aa14adce700595faf6b3f0909152b8e1dbb627647c68e17b8540b868c746a0b2d263b4b072bb4f91d0041a944bf694bbb228b138d9db20fb614f96f7cf17c43e200a15375742cf48d9f42d53b71043100514a3b21fd1a640586f71aca32ae3fc9221d8aaa795667e221058d74c0e9b5f84a19e8d9e71d0f97e27262c93978cdaa8dac3151ddfd5bbe146b3dbd7568b89a174deb71c4450684c01d0b48653798de9480e082789260ef2cd9c8ff6e314f715c0f97250e7a87f1cf199dc75ae2b665c3fed2f67210714518f520f9e27d404596a452d689c5460b14e0336ee21904e0f3d959b340bd125a12abf1a964250962e4285a384a1634bac5d9bbd926f79d59469793e1a02a254a88595ecfa8a8aa61643df5e385c9bf8176675b3970f12a97fa1deda556c3381d0ec1d76b86288ffd8e9426f0e5460b0df5cd7c846ef9c4be99213c15a7d5976a8c356ae165ed1ff0099b65602fdf4a9521ce5587e7f1f1ff0e9dfed4f2854c661c54a152aba1b7a5c0d3d760452d7f5a52c4ab92f13cf1d358dfcf18ee25b2552d5be066023a14880e244f17a3f47ab701c248ee08d5bb65ceaa6b42636141f755f99f9f9cbd5224327d4e8bbdd3f272f69af722b62714c8f52a1935a24ce4fe748a55386d27ba14002e223947b6deac3f778363be00ccffc66329b2058c4bd6c70920b70f84c22566690b6c778ea0aef1c166554d478af5295f590a228bb89e8be55ed74a8b46928d737fe88f0cc3ddd35a5cc4c75124548a48e54c16baef1e7c74af71f4d54769e3d7754fe33cf3396d0983d0aa32c53175092a98d18778b16fab8f056f74bf762ccb92fc8149d638d648fcc0e75acf7fbf635d6ceb992b0c75f9e0cd154813b64f4e40375ff8f63159b3975e91839c2b55598a27eb0764f71efe1259bf65e3d5769201a0ae6e3a3e627911bc00019150c54b52c4d4619ba2e6c4fe494e7c5a33136eac281faaeb19c31e28ecd61163a47e156b51c909a943cd6fee3ef922b2eafe1e8b94439262a384a6960de0205c7b4e09402822037ba7d6b09cbb4fa1d07cfa22d4fb6c3f82c9df78715d45ac3062526b6344a8aeec9f637ae133f3ea8e554a5d8edaa0acc6b14ccd17b26ffd01c6e8284f2f3b2870f53364833bf7051bb455e51e4eac822ecc90e74ab5b62d482e8df65a22ff5dca86200b8b0b8bfafe96ef084e6b1cd38304bf4b99293e2a950f16eccfd64139a1a930f23af82e9c99fdda0dc9e31979dc21067afbbff27d6786ae2cfac2efad5027f8d2a6cc703c10c665bdec60fbd970fee5f245b65d375c437bc01c0db52323b5eb4fb3209927c8a2047a9ace22a9b0ea3ce929e9d7c04e3c3a9ceceede56a878fbfdb4f19ec52c0e66ac0beb72a5c7d4f12a99c1601955379f0fe389ccd7ee0146c11a2a1f4e702d761d5b3903f4955f5017b42522255464cea278a5278dd8713094e849c1fbce3d71f8528e0cf75b3fe849b15657476d6309220462d7b41515618f8e5d8c825f80cc6381911a03fa2b5bba0a97a9cd6259e20cb75803423fdcc7ef9997bdaae5c61879c72fe1c3913cbb7d4354edf00f514b8c523523eed100645f3117bc3105f069d5e0f797622dfd5c414ceb3ff624b9321d498ddb05c55bbe7f8f624be4806ee4a28dec689fbd0c94021600f6dcfa4209914901035b7064438355396667ee54ff402971e9c78988504e0bcdac1a6e243aa51cb0ee7c0cd20cd1a4a45a1b6c326409b5b2de563ff485c53a3239242f08a1c0368ad089ccb710202af77d18c27b04d14da95e9b5e4379047f90c8a7ba307f0cf15f883fc5d7e8a5624ca5f6cc3f2f85c0e69a56e4fd9fcf81b4adc64e3ce69a3d7ae3d59c42f8eb6cfab900414332f398ab28679629cbb3479a60097887930a748c037057a945da519dfaaf03f7d537140ee37261a4edbb56f7ec2a3bba478b476d6835aec5fb0b361fe6dce6c1fb3d92b8c3a0083a428c1cb449f8dcf70410e44cb05612f65763f0af3d83c4b2d0a24cf71510f89b6864113fe745cb704a176ea2d069b7620382dc17e407d90fe17ad7676bbca9581d7e63ac480293f0721f1a9be94e16230073d75b2b5b071ad43b859e73d49f26474094c46ad3c22282bc4e5f5ba7aa9d5fedcf977bcebf99a50cb3405ff774aa33654f9443115f197858bf27e7ed33377549bf509529a41e6221cbb853062bde70f771e137e777b89df6da0b6b3879a1ff899597743ee22fa934249108ad39dbc3264ad1f7eda1bb76dc71c30a0a1c9fbc4a54a25d451040057a097c193df6512cbd9996323ced2df96db1e326d3bafdd41d3164ab418b768ed30c7aac01767bd463aeaf245359a42b05f73386aec10bdf1c28c7347e93565abb3074f597a70f52df53272d26cb924caf0e2701fac073334efcbfe3a98436ecc6142293664fad78b02689c48ba2c508cc61f3d30152dfeb5a56fa06c7088bd97a2a8244a0f68e1e6321ebe899b63912235dfb50d32387f718ec8e02021d1d3946fc221fd67957ac9550c39f7d1b23a39d08323793da33e3fe2b29989cc7ff2cf5a9c7556433768da78da02e142d89f0941c585d600f764f6b2797c9cf014a22e690168f73f8b5885c113254407d89a7621930e4fba83401de7218b3924f32dd43241b7e5db735933a35d3ed9444b07396e08a6c3b4a2c329cb699fa1e2252296fbde13268964611374edfe72aaf2481c62a5658ffb1603525ac4e43cdf00d580b5aaa026cb70c772a293acaca9ffc14acc2d1c1ad4c6bbeca09958b19be2de6b1f3177f9a668c7a50c9aa1e8c7105daa337acc3ae7d2ca61da1f4f493a42969e7124245ff02b02803d21cb9ea04e074959422c6a4403b0aa2c33f2a9c6759d844a5b28a13d45fb5c8f9e2bfb727032d9eb6727c5a89d146323acbbd96e4b5772cd47783c8c6c9ab8779b57cc54b0523e7e905cdfb3fb40694cd7fa9666a56a792555fc5be0c8ad577ddcf8c164e0612913ee9d65f4a2a30e98da53fe6ec5414dde6d112369a762009ba44dfb95e35bc5cfed7090f6334ed85e073e813cda8c37c50908c8f3e5cfc210e0a7e5eec5c273a7249166be4078cf2e52862c35aebe1c4486a47eb77d6bd1e59feb6a55911a99123a6ecf57fefa61c26bcb3e410c8e906838a032c47291e99c75137042c56e7922c1a97566d0d4d2c240000fa88c76fa089c27129eeb044cddecada3f608ca2484e89a79dfe0a63a38f8ed42330137cab93f5ae8cf5b664512975a9c0a49be7344aacbf356513818c9e2ad5512a553bc8491ce477e7bbf4643db504774f2e11367ac7a478b16f2702b2f316e388a922e947c0b85453dfd8da602d9a65b664ca4a2531a45183a648169a2bc852e7b7e8444dc0e81ec126e5eb0c8d2e058131be2d3a1d21c7c11c0fddb0466de93ade69b4d25c743b69847c9a00b2d9df5d9f0e4f959fc20d8f45be2fb6e99c9c62e5e51f6499c665c2e2006d2186fb48b83706bcd8ba758172330d46d2397be6fe9be1484cae54efc1b765b4976322edb1bc337451916e264cc5c11e92df1c0e87f9f8d58176e3881a028974cf9a48ff1ee187c99003f251cafa3f1db901117bbfce14f6fe6f80f55aefb16fe6f077a3cc61f5798354dd69c4eeaf6ef65b250ad8728a02de2b71d622a166141222f99e1c08d605d9d1fc8ac8ebb6dcff7629d1be35a48b623d57faf38864c6af407e2b5cc9c45be4fc68e5169c49dce8507739472227c333fee742281bbb978040c216e568875fe990bf24b88588a5a145784f3f071cdc84492762e5e0adbe230d0d8e24013de9b5ee62f9fc6ec424f675e0775c9f7301ffdc7237e96290d30167970819401b84656080fce019bc39705fc4b7b3cae12bdd484fbde99b53fe6b63fb244a19d63566652c1b72da365b9ef65a20016507a9c5d37e7f938afed8b2ff199ce7e33554db95c963e51e6df2c859f91efc0dc3fb10a4095a276fba5c08e71737def93113e86ef7d22ed6ad7a6ee075edbef155051cd74a3c760e023ae27334996ac953a237c8b5ab951d9ffb145ccdfd2e80301b1889b994dd68bf7537bc2a2de0a8fab7c96e2236f9302cc3c9c73a947bf7076e5e3f1b35ebe8bbe6f233c933fb8e0a5c3b85bd9372156aefcf8517e436c6b161fdfa97df97c56ec0300d1174c0c690d88ce90445d7b6ce9c857141966c2c90d0eb5653bc85fc322bf4647c6c4060fb54856d08b522c7df04ebf3b4265b09fe4a2fdc0258b558e1ac6f979cb72a03bbb582d9e9477f0e857c28799360922c9229dbbc4739f81d81ba2b9d339f48359f6632b3036f6ecaf556a00d65ddf1467049afa74356d24a40656dcd8a7539d5c71649cf13b23f1f9d12ebcee501d235a3e95e744fec5e05bebdb319d1e853039f81af0ff370d018e0787efb0306edccbd20dda9b5f7e9d49338de44b58225067b45c06ad2523d35eb46b743f4ca4c1a5f540985833cc211e593772a04e009f65d9c75702dc1c7efad92e3b9517899d16012d3d4ab633126d31dfd06e1978403461b1da39508f4f190e5b29fb714542127a4e8bb7720d2330c374701b1d7dbcd9d85dec3fa8d6a6155bfca9933c1c68d0244923d6faee2c42b0f9f02089da65dd3cd7b6381d40bb6bb0f47cce4071874b29ef095573804ee32ddc128a263282cde5f183fbad9d673fe33da5f666560dc2475825d3ed886e388d889d7c76960cb984522e91a1ad70d53e3bb0a53c1937381dfbdc67933b40c95373b6ab20da6cb92f8769bad9ff3e19a57cf24ccb8a36f477fad4179f0f6302e41d69e1b1eee6637e85ea68f542b0183f95c0aebefbfd03bc18d16228ad56b2b5d7ee7aaaecd657b61f924143237785bde71c62db2638b1570328b7bdb8c28e1e3e9beadc9e07b407439b2184257c35298acd54c5837d1448e8d3fbce8701afaabc30341cab929fd91077967d27d5a343a34f4416bccd81ad871907e807f4100590c6743ab2c2c3262571625c70346d77e3a745c43cb1147033f328bb62e411700d5857570161cce99b6efde67a23d558fba140d81d2c2df46ee99efb28a4f7cd308b9e7eaeb1eb99a71a1180e3f840b631ab6f74dad8eede20c71d080e226939b33a9f963a2255b7ca9bfcf8233cbb387b16e22a9316beea88a34f657e6af42d2cd6c39e1258c467067d513407157194b542fda3d433c8cb6b104f089b658940ffb8093e8addf42290ce5798fe773649e8cdf8941ce47d2427d72f7163acfa67182f82a12925276fe0a18851c3fbfff2acba5e06971b0e8a9f937395187e80d5b8fcd3aa68fca2ad2ced1465eda7682a212f8eeacda1f3983aa8949a2236385dd6e4b66e31d02ef79d925c936a972df5033f3d0445496619577a7f6003a2a16ecfd77903c4569808d7bf770afffcb1c6e004f21c3cbfe833f5a213dc1f3e1f9d752a7d9fd54b313f9b1ab0e839f37a106a28898b1154bcb580c3a6416aaf7cb8b073b80705ed4ea5a837058f8784b26265d2b10afff16765effa81ff36c762753c75344efecdc90e17a9aac34b83a81ccbf86edf2ab53767a58b5f88c6fde1a542c28ee0e76c7e45ce8984a42d1d4dadfbdf974f473db8b1d11ef2ed4d97ef01d4ac77e6f2a8cf45e5cbaf69ff8fb8632ca859683ade409234365e4b8896e47f816137f028de218bfcb7f9f7eb09a2cf6dc0b214884a644182c9bcff1a37fa3c98fe25f5d0f25d6ce5fb6443d489ebb1ed22f783782f8187d3c099b856e9d3f5c1e230a205146f88285fa8810688137d56504ee034803471d6f9744c1fb0f20e0c6559f85638ca423db4ae2cb94ac1656e1a355554dae213b1c943650451402d97a6363b91c0e34f84e516d5f30c40035870f96593833162c879effad4fd895e7134712f03b8b251570db2c4cf89fd7f16894094affd8d10dd11d39d37fefdd15cbe47a9dd463484bf6009713a110a5a37fb8056a112a48930de41911167af20853d0a6b86e2eb79a554d5bda3069fb3c38a855eae88eaf2a384fdb5c61c192665849f53f8a85ce88bcd850f428d9333dbb8ef2f0e6316410328c0449c3496685f5701dd8a1d9084275abc2dd630e7759a6ab1061bb1a35cee0cb658c848e711cbdbbceaba2e94ef6571d0f5188d3c0c2f4f930d497350561270004af879af77776173e8ce05f9b2b56c4bdd3c51570e3b07b1e45d0aa1aba4c133d857a8f733e8485a3870a2544da17f6e442d80a43aea71fb77a2fa5b9b5246d82463e5abcdcb0ebcf193adbf4e0f3ea9987579b0a65aeeb325098a0c8a1632ea7d0d3f1af16e5376ef4c405685b95a2447fa29aeff3ad2f23482e58076a5ad5bf806cc7a382e0b7a2e6194bb39ad273a7fedbef35ac0d0229cf8064d7e66db8fda2a50618428e34e7cbcb5937be60af8c4a9587b96558f8517b18a487226ddded660e74de4b34b8a751a55077e5889a3535c866149a62fad8f05000e7bf90f17167be41e0f57885ed481cd4404f5c22f50a9c66a44e72802d0b6067dcdfc2ff811db78976b499b090f6b47fbdd843ac8cbb3e47ba27e64408d4eb7376fead9b73fe7c8e0a8bbe06346aca5e173638c4d9633cc1f696d34f6bb4b6a260bb1ec7c8a9bc806e76ab45484849130646f47d0e0825a02b91c64073713eff2d581a1e49dbe9a7a6f408a5a4a608c252fc27317b0cdc5788e70562db6dea88d8206cd800086348efdff780770316780f300731e1fcd6ef71142de711424d5a846b1a054feb2b6fb964654815174e0073b58ce9371b8549878a340b4e62e743bef586f586372445ef45b19014e3c7303d7743659f655ee9a748f9a2a62e6e90105936cfa05891fb67998a05496e192c1cc0b7206ba55dedf35e6b5da92f971f9007e1a9a219778e8be613b5d4b2aa81252c337640960d46efad9331fe2ebefe690ed1d0d817cb13ba8ff2491ec0826cbd98ef8f3c381efef2e2dd52aedbb78d0eb2a7d1b7927c7dd0ecc7279164af54630d06f667ee021321fe4927dab1e318136bbe101b358375cf97e7e3491cb47e0a7cf662275e068a8364c2c71e588c009f8dd51f0c625fe2d64999bf2ae169d79555d79c24e2628e8d07ac9b1fa80a63b9eb5fa8ca64436289a30477afa7763f75cadd195ae1e992c9aa553bdf8f2342e124c106dd7697e091d9ce7a535ee29c34dc1c11e97f50bd17ff62e680181cfbc5ce57ca17d4385f11dc89fe0a78ac8498ff0d8939c27aadb30bd135b010a55065b52152836db04e4852eb0aebc1c3e7ddd61945fe716866e2e20df90b6e045ee82354c77c16805498eb85d24f2424351d58711a1064e06566caf55d7066d4e9bb76beaf67ddf766de90a5d6c173bbc4091f239ab925a2680817afc54a6315bf92d0b2782b2c00f007bfe4e42db0b44c75508b8839f699a7f688c5fff0d70403661aa95eca8fce696a047f17aaae104e64d77a465ff0f9e08d0ee5622c2e44c4617e1c57798ec6d270a8e4478deb8f2a35772443f55e81976fb961ddfe855d46175351b5e60af468f22770fb63baf4687e00a6133f7f0d64633de57a830eedb8024e7584c1273f20f0865d442c096ca1fd239b818a1d3a99cc56779c5069e97e3854a99e24c757aca14ec853dc2a31d7c8e69c8faf680dbbd969654d11dfd548df7a5ec3466c40549f740045d5e509cb3fc92bf96d7c9979341f4ff3d4466c5c628c3a74c660bc5f85a21b46b36cffe5ea53fa7df7ee0d52cc82ba8cc8a4756987ea67ea6d1f2bca620f94dc67fa7121adf02ff7c78eb013bd4795715bbe06b53881ee4b243e0be0927465adf61542d070b3cd7476214aa9687b435051eeadf0a841dcb56d91e4f38a37caebba401174be13326cf7ebc94b6dc4c465a92dd1a14f30ed3696bba4e2f09eea374afbf358fcde681d717c1f03a97eb3329f3db7b8b3e9b1c399997fe4e8474b0b8d6c8b2805b0ea1d5b0f9c364c48b4b58ce6888d06b8b8006a39258daffe47e48fbb12c4fb33b0674095a579acb3463256b768a05e1bea68414afca7bbf89a37b78a04a3226150012f06123e60eb60a9d207cd8913965875d3fa217bc87278fb862df2de1ca08ba42e4c4aa771b060f26fc9000a02aee34ad85427f8f564f71ff156e50192a06714c8973c41e6a270bf6b7c474a17761698474a558c6abfe50611462d81dfb1000a8e87011d2afb47b99013124c6f6103668aef6f69b61d0c0833436c930f0bee087841dbe2cbe768c6e107da187a5d660d0a551092915403a202061c51c93f26b4a3ae239ecf3a5a12b8ccd141fcd506eaa2728a5f01ec2598422cd43ae31659f08f56443723db97055c35a3c0e37ce14d6b5ffd1551bb2eb11470b3637dad1ec0d30b18245a5e456c931272c9571dcd7a8b18fbc1f035af8bec75b1d0c68d39f5549feed9074a97d365790523d24aad86a568aaefcd393c393cbe57507a0c73715a4fd60a0e31948a0ddb3845074af7bd7839a87fac8c7022e75b830055d49ab339bda21675ab275df0fe37a5e794e60a25860bb0e23496241416fae66cc13ebc943568afc40ea611ea09e32bac15d4bed9c76c7908153d111b5934d90ba6022a6ffa8ae1960dec95cbed420fbe6ce11d2fccaabbdca2af2f95c16296cef1323ccdf13a79cd1b68bee7e5bfc7c32e344de12d32e34a41f7ae51a7914e89a4524f3d64b140681aae5fb90e12ddb51a05d9142689e7a7b7a43d7c4843c73d1fd7905bc2892ff3bc2d4ff44cf9f7d1b7769df62544d761e8f516613a41483183335a01c420fd052bd5548e3d1bd09634ec6b138d944f5e37a0d3ae03d6212035eab97df636be7c8b9747c520bf1e9dd635065c1bc8027644f9091b4a8481dde33bd71b704525715824a110e20cbcc17b5804a4da49320c1abe5bda79131246d5a54e96428015573a240d46c9d5f2777e25e256ac8c0587f06d0a48df04eadb626f86cc95790bcc2a73763377200af51bed5b09d4b6f2bee29be3f75e33cc2e0b8899ec998568af82975b38e73afe010faed15f0bd5a5a20a54f1b770bfb6e1d0730d5ff8f41611f84918a22281c7966a3ae7746970b897433fcdbd3440e43a7a93c9c3e364b07e85bf705b853f2fe9063e7698db2f1bfad5c30b462d41cd7cd795a32e3cbbee6c95ae91400fd9235b0b2f474b313f2e99bcf77ef4f64c0421256a709f8f3a88db3ba6cf9bde70ea92971a2967382585654391c6a2b6a9aa1539d72472721a22d4b88e9cd3dbd5e2b1d99adbeefc3e43cfa9af51847d0f0970b333a487dbe1d1cbfbccbfb1a5d624be9f909511b7d1a321760077c65fc39c79a1e281afbbd8b552691f2c3561026e3bf2ffda8f50712b483b7eb32b88d085ba517c3fff876e5f770ad45b8be98498d4a49549094c5c7a3dff0fc672e6cb8807f91bcef58feb1c2e8145a43a3562a285fcd75c8feb64ec29ae0a25c130318e7a917c7138962299d41f2aa1edefe9e57c412d686d6665a3a8d8c28e6fcc009465e0d284b5675e1123aa58cd9289ba801061c60f3d36d4b1620a304f10937c3d52b2248a98e0d5ad0cbb3aa58c3ce79d25969b9aa0f1c49c8057f8df87071e0d2a30ddef473ead128ec8093526a999ab99372e33d1d11faa382b9a78f5e63fbfd15646f26fea20891dcea8ed49d12bc682abba1b0f5cc1c5e458d1cda2380d81c5d96cbeeed4af5250b33bfbd37d704d84bb237fcb1839897cf8beb13b5db8278bb6ed52fafb7042183d1553f52233cc201d1858d15be9d4e6e671907786ce35fc79c677f0b8f2569ed1578647ed23e2666a849c5e8901566c2d33399624878a0672261a9ac89c30121b849874ac096c8e7d148772375ed27d9be003e69f7d112e0b3ee2b6f93d69543ba75d71843e2ae9ef37a6ce70ac5bfd46495803d35660dee5cf6b984b355f2793e78d745bbf6a3b04adbe14a5122bc2400607c5cbc18eff4fc22b866e6b08b2832dee19e704eb8c56d6607f31c98934e1885636df493983a6c6dc4985370f5c3f0a99e28385fbe8c39ed827ed7391d46b14ffcef9d2cee335c292a3b89ba6b31400e8f359ceccc4f19d2ebbfd14e1456dd59213bd5945ae1448c6f6da74e4ab748bb88cc8045bf981d7a4ec8b2769b9873813dcb06144a3bf15cc780a572967d6a0b2f5f7ea2b5e59237adc1cd57b3ffecb2d5e0ae52adae7cfa9efa1a71749e127882d06c87916d0ab87b99687fc7eda912fc6efe097aa9d33113673685aec6f1e04ecbd81f7bf4068c217b3d53215e2213dc59bf102937096978fbcb7e3266365ab8685d0b5db0bf327c1ac1d2729dc2943405125038ad1380d408a6fb9370ac68b8261cf4663dab305dcef76d4e927642d532de23a767c266613e81ce86ade4cc992ecd968ba2c41b087be366ad9525fc2431118c7c95fecf0ebc5e0f6799c5407beb21990166bc34b54cd4096cdba0469c59035d4015a99afdf4155cb2d527d5d1f073a8c5b1871813422688ca6ac66649df9e4e8161a780066250038a2960efe430fadf1488ff51c0863568eba6da034ded21634e8df15c3304592f3512d9404d83fe62f3078217d29d934c59675aeb5e15969fbe50b3e142b769a99de31d757f7bcd6ca8c1c74c515cc74b7ea0c7d6460e57796925d2e726546079d178f9bc3b8f5ad53e1b5ff5bab321312a9c32e262c242aded726a9986a3057982748acf198dd22e06c57fa07e4c71c613c281b824ae6c6e6acb15993d2050ed86116f740663962d113e28fb80f09eb550f0b958928e6efb07380cf0d8894c5b59836a2cc0345801b668b7a19bc57ca8de63c9bdc45fb0b26b9572fd1b47961997e625185cc254a3122f747e1a58520c1b3197a069ab41af440068d97c98899283c1eecec11ee3e28337b57e3e75ef454e4c590243271ed1c451a49ea79a99c6841495712bb6d4262da99a2cbcd54f321d22732ba6a3f7d41eacb9d5f8187461a2facae7a8a45f6f75008cc73c98198714c05e51fd49dfc80e174bcd0430dd9f0ddaa7e09e5c8d2188f3ebc9db8b8005258d6224452b68bc4e2cca0210c06c57972431e1439d678ad566b466aa4a58792392151c911e1d0422d48ddf98af97ac35a80a6624b95dd58f71ec6d2c245f2d4652f47784ef63c9cd1154f6cafdae66816fb0df9f2c9c662c722a33dcd70bd5aa33888fdadc27e919e0809d08a5be5c3b32dc1a68845027e8329485a51f68ebcf77e33bdf66e554d41dac3a6a4d7629c355f87808941357431e0f85680ac22d1ac473daf66df1424d8a50d43acf852fa17dc23659fcf3e27f8392247a263e28533a6da713a1157cdbd1ad86768517fbfeab7fe10b02db1723ebcd75237c94c1262150f4413cdcfd56aa2f495170523828f2630523b445c37a7b956e1f588252a21c4b0d1e1725fa9cffeb09b2270eca12b10f1277628c7a156dc6b421e6ba1cbcf67b765a03def50e300a85b39d2207d169446c336432ce458f95214c9b60e4cdf750883c7bf8691059256623b1fdc7201e33a6562ef8a3a2dc7919b870510610cf8c581da0f6d28cb3fb31059068b9dd4006e236baa9cf871f258af3edcfa4250baf4bea88a98c7000fd2e0feaa65c8a368974f83be34793a63c5c7d03536b9122c3a0a6e0fa302b058a032cf35938cd650ff8192946012909c46a4ab586f93c0cd8c7e6d4db713418f708fa35d100f0d7fc21e88ed88ff1fb6b9e4495c73cf167a2595354b38f83bda3624d36b3e9616992d709b9882b5535379fc70da3dee1360b152b9de59e1653b9c0aae327e6338adf30f3270f9a056227ab237c26762024ad5dc11b4fc86ecd6256cddbee579c8efb5273d7a8cd7329e4841e1b0759275d8254f998cc910f848ff3237d0b91758fe84c27d563bd58428e196fbdecc050fa44cacdb82a05030e936250c9f096bddac16c0427f8182d973071445869785ef743f9cac8163d582e3422ab1757c916f417d5d10167ffb37a81b9bd5d676af2bbae2a93deea789dd0fc54bd97256a46259c74a94fdacc6bece5be6ee7183e173499295d466f596915dd46c6a31987b89e7de47d867e691fede8f3e1b0b1a0b7783aac7241eb51d46e733a38e31571f9271a1c90ce504057e3983b12e275fd230828aaae141faafccc8b473a3d43c03b60e45af9781b2ae50f7d07f1a9e72b8f8e8fec056701a782daa7f4269b6ddfd58ea12324c61a265a1215fee4a81d0b933eb103fbef59910a49a2dd0b7b463cc00361a651fc03af8e7d144b422b8c18abb91c332a76935abf2dbf292b5277851c08cf8014ce68d81c7ccceed933cbcfb88872d4c01d5f91cc6dbbcb7ebfadd2a95ec54ed310b125e38475de685623087e24ac26fe060331e43aad862e8e0b2e4f543b1f4cc32439861f4b8b2662eb93248e2c7eba3c6e97bb9fc77a1988a4b99660f7830c64c00eedb8ab7239dc001db6771b50def26b978a1c538d5318f4962e56a49cf897cd73c287aead404ae598a6fccca1e614902d8f536d57a1bd74c969232c30c8207ad1f580e112ca4c4ab647ea37fb6624b7d78bc56167fe4cc388bc227aa18723e72d395c2161dd8916555198bc19826733f0429ead881a04f8d942fb064f15bf6a7c84a8bd1670672d716051be46756701b7fe900077d66b1fd33811d0b6a5f2fdf293f05a0cf09583e7754bd1630bbf9de40dc5ccd8c90afd9e82869c8a3fd4102063ef44a7bf6a4a2473307f74263956bb3ed2379ebee7813225cbb1ba3f173fe9b9d4227bb00a3c18a336e4ab3c3f308d68cd7ee934dca0a8cbbd595fd4e29e709c993f7f8d6452ca31c9a6cad797be95e4641f76dcb66a64425cdc5382f8a31bd564d88f91fb727aacc00be8147580d80e0d580c1f2e9c6cfd03cf47a02ad19b76ff22d0ef81d9908a2b299725d3a36dc73cd1ee96a207ef9142db05db22b2e65059fea549434b85a1a679b7cf264548f6b9815890b1847d3a365fb1b178d77f7b1d7f74395f5d80af455226ec5b860a02f61f118f974f61537e89c6f717cf54d256caeecbd357b8d40bfdf4eb2317ed5a7ab2d6cb620255e1bbd2ba54f752b07424f0d801587f7213f479bd4b940819ed6411dbadf5911009a2f635c41e2877457eb8504e06d020d589282e23150614b2f46adc55d9f8559696cefd15fe67f66a0994441cd7724b6511dcea9d9f4d0822261d7015e0799874e2afd96d132e08d1fc229346eb77d474401c70774c01c3b95f76eff497a4eb37722fe4c2e1e338a715046a9ea69fab978694bb8132ac3c782e2f162d8d85a295266dfc6037a5e4df9bddde689a3c37c4e5f31a219514616612afcaad5caceae8b4484a67c476f9b276d269dd3f788ed95abfa8d262b5940a5b6eb89896f1b9ad1722134b0149281a51d5dcaa82842015d6d8aca0037927f313075dc4702699078f076f526501d455ce8baf6e1b848b9dc3bc4cad778f7d3001c7e83c4918313c3173c819ed03fb68ceb3fb3fba3335f823b8b5b0c57938d8abd4dbbef89102370bfa7210f1f6ac9ac23c5226019eae9434993171b9a413847e39993ef5445d05d18e0ff94bbb5bf41187a59e4e640b3fa89c644ef22c79d0f162416144c47c581e3ae76dd1d27bc88d7be11958661cae6f9949ba41a60cdec8ec05033efbad07476adf5714af7527f66c6e7b94d2ecf911ad5fb859008bd25dc6d0b11eca828cb73c2d777da2de698ef5c79d76e9f71d95eae264cbe26757fe0489306ab26484e56277e0b16d4da9c14285cb77fd4c79f6cdd76a551a821858f577f41dbd4a33d084a87a49a3e347d780ac47f2793e513376278d82f12148f53d51a9b304f2fd10434e81d55bd264b758efc4cbfa474ee1e70822988e351bc92429aef38cbbee7b3a030437f4b569bfb17aebefbe8efc56da7992d4b0684acc49349597523d3350ab0c6745d0a180a62958d99affbe4b64d197dcfd664693a96884a5bcbca79ff8a506e1c45b1a1972f4fb9f73f60f0f9b85401040990c377af3155826da5b275cdf33ffacc308677a167ec1769ce78027dd7ed55b803a7b92986add50147266be8ec81fbf21e9e17e2a2ab8b06beebb38f7efe424642c275e059d9753427c1a30f751f66c1411c1ca258570c8ad623ff90b7a8a503b480a4d78529c934581a58f7e2e0a0ffdf18869cca4ca592122701723652a94065874cff32e36469a0b8d1974e4396b5ea7786bc7b81b20003017dee223b91301b0ba62247966c38527fc88e807318b15f7183a8ff1abf0af74e0dcf9e0402000a8b5ad4b6b5ca8cc5840c8394af5e26626b4fc9b853885a813da20e5335e469cc043adc24600ca1ae34c3134405ec719acdb0c8e71701658fbfbfc1436c3acfd85c5f0e49f6df7863b365eeb6598341cd5df7a40b47ac610429a62b28fb6c265e3a0e67680708cdc1cb789ace9a1e468e658a2f7336edb487af3c986f9903ed023bc38d9ee0dd49483ae7facd1cdb52924a2ce1d2ed8c9b767a7aac81f3f6c454d08399b20fb3aaac99d1d53224461506b5aef3f0f390f1a663984cec7c4cbb7ddf35d3e1f2352af352a6346c583811fb8e45c3cd586dca5619176ea98b5ff8631f5ce3cee24a1d393a0129713d7e85d09e8acd5a9a7907a787d6af0eebc0b02050401a551d248c0da6be1b00fe5472e8dd1961b38f902953b2bca28ab16e382931f63dc2cb3757671a038f08d2524c5e94de85b5bcd9d120db1c9b10e1447fdcfc71a5b1181a299667285ffc4621e77c1d0898d2ae748cd48863f91479df51a1481d072fdaaaacfccbe195e013b89d9461093670fff239abb050df97faa273f6c558c727bd3ac207b809cb281a64fefd28a6f968c4311b56cf11680edc95f0b5852a2b94951bd80a35c0acbd3682b9cf4fc12c192d30f23e4eccd51949c883f7008af8b74ae68ed0c16466c649d2bd85de93d50c8446615e8fe46963057630fe40ca4b7522a06c9411a395356368b5d6818d229f41e9d972215e494fe4446472977e4632637da5daef583091f76d7caa81537d2cf5e4912407f8c53e8422bda8b6771913bfc08b37ed9be6fda7566732cafcea5e1f5a66cde7175b4f5420eb3827d26283ed4581d061d4a1fc09d1d588b78791ca44603d713847a54bac99be3d05e069e29ccc4359ebbae05a8308802ed492b492bacf7876b3206ace2722f8a8333978ba428df1f36d18edb15bf3d3c7cbb8f07aef273f6f55d8a34f0692209ce284fbfd2de034a3e202659d5b498dc8aaebe89d4d9985a71c98894aaf069699ff010a2a8195b1138905a4acbcabc26d4c600387295627f9e9d2b14cade85028d3fb8fe92b7abf3f3aa5ce4418fed71e1e9a3145d50232f8de66ddce51abfc1574fb67ed6ccfd38741cd8fea0e9341692c2df1569a6cdc40a14d4c2be25b6aae25cbe6d621d0d3f7d39b412358e59d72c41ca272a280fac647cb4a3958e416bea288296f2a68bd017776420628a25482e195cc803d93ada5fd40f8d5a7b9c1c2f787e4a44153432adefc8df61bdfcdf3c41856f39b4038a9db9f93b2826e58b0a94d7e6d24caccfefe09edb765ac3bc48745135272307c4a42c91aead5eeba39ecb456808e337b2762c815a506a144be2b11c688689277e6f1189ccdd024fd2e0ed11e00ea33a2bcdd978373547c84e40bbd704a6bab65ba9af40687b8aee81c8cf21dc770c8b5cbb911d0c6e21cb0543995c43cb7e7058c5336c1ade7ea504d0cb1414bfd09488b722464e517c435fff17d3a8821245e8ae2c4dba9afc5a86c83d70ed45564b54c3ff484346b008810244255286a6f35522107b74903660e3ba07dca8c538ec6473beccea0d6869158bf2836802df746aa7b63bc239f21e7c300d6f4a5ec5910383982843a324421b6b3afbf16c5735a7c0da6bc306081860c8ba0b8f587f95b020ed54890eb7633222f51670da18209d209df7bcf4e8316a6e7acc80699ec2d013bd6b5699c9499e054397feb425792a9e02e3bd8c115728e33e807cc68c58def62fb9bceb562179f80835e4fff287a92f72e2acf19b64a884fb36baa067ddc7040e5cc6bc2c1fd14b6a76c7dde6115a6c398340acae6884712adeaaaf83c066634676f7ea7126aadb5593f9e3e0a48ff207e4a3710931c8304aedbc49e5cc37686cedb5031cbf1d63f76989e1afb16e986ffdc9377c298a025a225a2bc96bbf0f34bbb87a775c134f448310259976427c6b7ab1886e8a51de5f4e30741cb743c3f8cde014a4f34a0c73276cf8d5b9b5e0d6201b2c57d7a3ede4311793025cc69338791d5414e2b3ea7e82d4fd11547840f0c974ed47ad5302756925d1514d684414763e0411244a35a6d80356ec8a1b2cdeeafa795ee16a21236ac6ec1546a1d9d473d56235dbf30aeeca5ffb7d3b2f5428ad521152efc9bc038ee3bd0a1cf5e5613889bef12419da9bab568acad4e9983a971e09ecb7d69eaf30722c25e21078c9507cd40841f01dbae262c35222e517e3c44ff28a8fd4dcc3dbf8da0cdb7961be51a9a41108b8219a62666f84e6b9f7d8af35859f9cbf5d6183ddc6993b388818a856f0f8b15a1b4e2c50f34645842032888e572f86c5a4aed28ec85bbd27194ff903187dec32e42ce43dcc6ffe9a27ec1c1ac65472b5975288da4d1401d8bb01147398b341edf350768b614c78037466547169bb5401ebfce202e13cc1265c7270aef882cebf061acb82161f9a6c08e53424e4278d2ab6dc1d650f7cd4fdb807412f9527497205ab8b9d499b76ba6e107d60d6edd5b37427fdc20a3500dfaaca128556af57f05a6df68afb6ac66cf874cca2497782f260976a81f0f79a2700eafd200c7f3660e088c36b2ca7326ae6025c34f5c20d59a7e8216efa0aff35e0376626d6cfaef7ed6d19f699646ffa118c467752dff8146a5c6ddefce8ccdae1aa4b63c32a5d09ec4f91736d2526f95f4b61439675f919ee38f2387ec0fdbf64db2ad28aef4704f5a54bcb9463b08b9e5ca4d54a3d78f493458d3c64f5c5af48896d4712d3c55fb6aa140af60ba2e36c3e231474855ffd6f503f96ab9d47e5d0166b2c465db4adc3dd981a69fc23d873559528deae39c96eaa2998de0315d15c08f969a069fe4cfc81a99f678d1e60856b6eb374ae9fecf3a89a23082683fba28a8be49ea67276791e9122af043437302a8719478ff76fca242a18b038ccee45e8e52b5418ea9db7fe7707a6208b37f4a355ae2cee828c0ffae5d9061f0253ee175b402f96be6153b1d8f92f9069328bc9b5bcd17dbd8c798c8ec0c5f7d0a5902a9e8f114d9182bf8a04c3c2799e51a9f741b054810beafd3fe381728d113828de228bcc3b619dce1fb8bcf8f4bc4b2f663be18054b80163fcfee8a3e62b5bfc0f0e7a2ab4f1a1c8ccbf51928d26f507b802c522e444fbbab0c46c9eb649e87741b668b8e1803f0931ac3ed4c5e5f7d1702085e73206ba1ecc5b771fea588bb618b457a13ccec1d1b09684749158bc0577dd3eb8d513f440c5bc70761fde7b2ee0820c0d1671180ef0f53fd4daaacc7e996b6d877586c89a954dde1a28978d4806b1259f127f024a5d82d518fb203d2f069e401550066f04388e29c78bedc24b9ca054e5a78298f8a52a27d34632e34ad131e245b8a9da8530d5dfbf0439cbbcd9d7debda1c1ae7d3c18c3477f73656774a6eb4292236a0c021c7d5702d2163597e1c801a0d3c91dd9c33e175f516ee54ba68ec7d841ff7bb7db13ef25f46ac0d3bd4c0897889f16f71930fa129b8b7614ff31a518bc17435cf963acc6701f0331e27deb4e1f5ea755af7680badc84ba752a85c4f451c13282c232de6f3170c676ca3cd0e1cb33bd7605c747ea8932be76664ca5a03983dcbef9f58f5e8a8c0b0c19dcd5408ed04d22dfa9e92bf81f9d035e67a567de96212af3231e075d4e71814719bcad58dc26e3a461f57a2982a66b61d42527ef09f0e3c0bab48f0ac38b08e74ac040869b1e89d967a6c8664d2de42eb2fad0bca363896fd0815236f0c7f670e6ac66a13b1fa79e74ac79aa739a044b8271e8e8a7a1c2523e0e5d587e9946a7bf985e7a827b13494246e6da956f49e92d9f0a64d0cfb661b99ef41f33fb1685a35dbb8dd9586a057f24dbd4b1a793648f9562bc187894a3e9b70ea665be28bf3060e5baefbf898c9e061946974aa547829633bc34840cac52e0d46fd6c062d40fdd974a6b1215e87dc7d5572d17a7e5bb585158ccbcd4271f83264195e34eaeec9162456639f4460b9c3729d3dfa682eef8a7eed6612479216715bfde889bd1d342291aafddd2e1639adc196593130cf93fb3d4af0239649b856ae21b729a1ed54ea49407609eef193c55e4b0f44061257d0536be35d5cb9e2c1e3a6d12c1210e41dd23dc140aaa9472a68862b1e72bb751c442ca30bd7d1941e0fd6bcd2cf47d0db5702d7c0e62bc10c706b4e0a2484d7128ae598c3a0fde2492f00a2517ac44736044a6cb65a464c126e969f173bfd788017dadad99c93b3dcc12c18c655d30d0e5be17260e6e267e249fe6b53e4c24342f243b6caba6f756582568731caab98b9fddd548cc709c7e93a75e8c4a77432827f7ba88455db82cb4fb7818e7e2d121be51ae4ca76733e43f8b7798c53d487f75e62575c17d3725939e8fec92b724c0c7a67355697b00fb62a7dba23d4a2460348e3cbe7c9ec9f65c3e61909277af5a10b956b022b74fc42dc88c7a27bda2139794712056980f3eaaf58d007be2cf16457c88eea58cdca34693ffa25b85c3f5645851f335d3e23dca5bf81f87882ceee611defe0869e67444c249b19648f99874efc01f82a2ceee40e78c9d16bb1875c62f712628599300352dedf9f6db0bdf3575ae46aab1a83c4220a325280d56c28ed676fd23be52cb1aa50918824ca1c128a90c179e801ad13ba362eae56355903758c642dc113273659eff65a077af0263dd331353f02d124af3d5d1169759d294aeca6d7abb556581abcdb69d3358030f35022f43df2e0cc01c9503a9a11d22c621d863e9f307854ac7b27e2908f28deb3255c1ebd573d6a62732233062e09cc53e209b57ba0f7b916fdf20d8763f76c797b63c4bc3dfa2345ad13f62ebf700de1dbe42b8d841c8998f3f47a2d316910a91560469c92e105b4b976499644e1f30f994bc43f87d629d3aa70063adfcaa2d37ad7bce1960873dc5d6c0537a6afe2e13fbd2f3c589974836ece05cc672d33e5c5d2007e2ce64af772892b25ee55e20ed6a9908277c2d3b55b685b09cfd885eaa32172548cc6dbe7ad655fc5970aba1cdb4d4837daa3c8aa110b2e8822210431255163e77cc9b27a1454a1bebcbc022976a1cadfc490b3f5705aa7048e085b7890b00eabb7896dd9a46f41d78526466ee7fa4900d3747d6aece961772640c171aa8d2c6b0384e86e7782fb58ef8b104b158c37cc39456bf7766839302ffc6d43e77cbf47a0409ff98294cb8b4e444e9bbbfd58460361ce0827ef0fbd29638f593ccbb991692dbd4e557e0a2c80060d3018017ffe9047910dd2b164b7b20fe94d486985eb32ff9c88bc93c0ff226e6d7f1996407cdd2079dd9cea8e3cad9cc5d29a53df020dd7c530259ea4222cc83db2d4f9cfd924f0dc7ec015e08d14b1212c7c738814b764e1f7de72ea1244a061c917e8c03a60d5a4356997d6275559209ddb52e44c8008f8bbe9c5c363f2b7faa860ae18025cce8b89bfd817ca0c0e5acd34219f4716e8728ba5e993063197ce7af4390a0ca765745d36a2a48f423caf8da2c2c4e15676d3e07abdf60ed524e0cdb91a2d2dc8df5fabdde68981413caffc8cea8922deb7148233c35bdf6c616a549d5004836e8065ab2bf44a67fdfe26648bf4906b1e17573842477e0343b0e0f473a2a7a580106df5686228df66b73e756b73873ede270247c49a6886a1d4b010f794fa3904525762cf4dfcd75d4edd0135ab2a674d20e6fe967521868e2180004bc56422c0e0bffe8a0dbcbbdec7b83deb794f0181a49a0bb0c9d149c14cfe935a6b89bbd3fc8cea1e84d4e6bd704f4c4a616a7f997c8b6442b51a83374f86b3834fc3470bc552dc6845004a037c82e424acfa39f91ade35b3bb721cbca848a4971d4586d1c79d8e95991fb3abf11ce4c6406c1293ef30e50092171ae54b21ec83a8897505ecd7f5f44f428a11b5e86b549ff6489b90451aaa1a3afa9e15552fa8b5944ac81d047a3ed56e31583a89cd59391efce72417ac0021995690f2b25240c17f69d3d434995f44069a3647e688de9eb4c86671f8e177e4e006c3fe0ecedd8df077345dc1284f2895993fce4d99279ce6823be514296f33774802aa4ce1ac766185dcd4c220727e63877cf12f10f00e4b47e91da8187501b96d83315468f93af8b3641d86da9d4d9edc04d7d44917121a661ff36e96cfceaafa8dd94a5a7be5508575f4ddd6398ca45eb21c17d44a53d3623cce44da11d713058012c8ede0beaf9772903cde745c57032eb79da86986361542d5934cbdf802842ad5e78c3dfd80da95d988fb9121682dc6634abc3253baa7c8d20581f261ed005ca883041f698b8546998e81a1a00f3114a44d6a2484594e65a472973536f0067e99e54342b97b25408d58fc583b820464e6d56874952297c335c481f1258b7bee078d9514f7174160238b175d748c72f32fdb85d6a8976b3ff530cb245cf96fb101e855d4397becfb60c704447238f51b12a9cbaee120c8bce580072905d65327ee575b0d35614c36e455fd2fa027e12b44b3a4999f68196841463b016b58ebe189e990f0eac3c949d0c0842a52981663abbda89f829ed1ab058a6eb69fe9df2d95d33d20bedc1ac8b066602f02ae706c3155be01c1b6e3b141df2c1c549c65896085c586a8d73b017046b69843de63a31c9adf2913da435bdaea0b3088f5f83a7197fd1ebc2e501828b7b1ebe78153073d35757b54035aeaf91beb512ca616dcfbddc52fac9ee567488ef54507df0e26af1f293c49f4a0d85079194730ceb6af7d4063e07e6295db7a894d667c65897db6dab6b3c2d10eb86650d2693d0bfa9ac0566f700ff746e486729de134810e15d36c57d6314398c1b655f4cbd75c3417ca6b5ec58ea7555c18be4c1ff0e413c9cda15341a8d786e956164c8bb8f82d590e386eb5303102244f0ee6dc74cf6355aa084014a2708e5b7062fdce79fa9c23331bac79eb3f20d5db4e2ae709ba12408e591f08d2426c5824b87bddde08ae213ce095261f20a718c9f524cd3499570e59bcc81eecf922217b566d83b099cda73d2809e498d0ac66a5a42f3f931896cf3d55cdaca24131cc7c57be1174df8fca10bfd9a4944eabe9851abf0c5f11bbe3ae77a42495ff0b7a22ca9b81371deb85badb5f5005e6669ed89fabb5f5d4b5625ebf4f3e84177d013c2861b3c752e9bfeb4af530d607b6394698e513eaafcf9ee1fab380ff579105b9edd271b39f0dea8b447d7ba03ee1f0e7e3d5dcf20765a6ecf15d9a966ccffff9e2caea87dcd8dab9eacf6ce54c53a4493cf340a1ae7bdb841bbda40f9c81f8680275402d59330f01361a26725cbdd230482a277addd376284bc8e1123cb17f94933871563b40f34aac0bb28a710357009847f78bbcd715ca749f00c57b5f12128eb3ea5cdc7033b9972db310767f3beef7c1ed5ee9003b66e2753d3326c6677fe9f8f555d06d65b40f867965fe7e6d0890286dfe7e15bbc5e306207765a3a1be4d00ca71ccf30080026fc512e6b9db8e8237bb202e0384276d26d92b8eaa9767bb6fb0bb5242032f5a21df3c61219815fde5b571191b00ce18e0ab42e0ee64793ba5581e52a22b13e694376e1bf94461ca9c9dcf15ec9a86a7afff60abca032c8fc9a55b1adc708974b2c0b7e9a58f32cec23a81f91a22b80c08465376ca925eece7407d19be432376a85bed28d9e129a84d28b3edb2c9f1d1dd296309c9927e13628668285504f29bfe041ddc7866b5e42606c25d0721d1a63fd6fc64c915cfd70d85d9021375b6c95fb4b803d1c56666a657e1d6871dce3f728b267830357e66a99194ecaf8518c0c554bc92469fc6d354267e28080ace35302b066c89205764752654cfe9a599c97146518789bf9894fa9ca6e574bab6d8590c456a9fdcfa3dd6f79c3dfc8dcd27e40fa697939096259fa0ec811592d5bae52653b371bb5f437679a06b363b4615d442dee2966b8a9686c62cb3825202885aee9c288e77b8d130836da64a3c286a3c72170cf354b2f84084b7536c866b4d2ae613034a04950649f683001c7a13b14d4f0cb761248ed2a744b3cdb2ff397f31116e9d9f02e87d1e913a33b55485d484c8bd76e305be7cb8b66dedde79d4e5aa88bd3982f7e7d34d6f1fde9ecc49e2ab204b0ca12843f4bcd8b705372fe5e0c0324d795a9fc111d184d4e84a5731c793d0052e11fbfdc829236963a30c6052372b5d47aff40bc4d8a4939acff4eef4a423ac1ce459d30be1bca86f1d95fdd4e53b461f491d0b73b61e6cca1653eb284e767c8f0ae7b253f6a74edbc87d56f4cb0c76835fecd07922d249bca3b8485622de7876a864d03baeaa1bf444a3f9f752de39371aa4aceb1aef8b13281adbef543f99ea4cc2925d7ef4bdd14533c573148400d61628d022a75faed0600a51da03181b8c83b0faeb3fcabad1ead38087ee5d0b5c303e0e94355ee38180ecc119ac980a9463c90075fdf1df2358581036e300569d73ab6d678a9a0805fdd3a546ff2cd1c50e958d95f9b3ab891026aeda6c8fe46e34e3f9af764b495755c8ade803cbafc5f25c1542b2476ab4eaf0221e1408b47b1feb4c422f651ad17a7c90f7ec8a668acbedc23b1e7c905ec70250f6bed7f890c6df94811f9dff3a90681a3f37dbe09b8a3bb07d1283606d010d858a70251eb461d56580dba2f7ab082e4f8b9915007c427cc35e0292423c25447a38a03fe7ab5ff6d531688c7c95501980a805c85b05a5791d02627f3256ea7dce91d80ad34328eb47d5ed73498e9f7a6614d81672ec25c1f6c60213afce3503061fe23925898f8fbb8cc3390645bab9140f5637b368df40f6b3e788852163fdad3df14f3594b61ecee7a039d45c400923da6ef5ec30ff2e024e654affb605e63c006a1710aae2976f638192fd2dcdd79855fad2b4edcd3ee326fe4ddbefc81d965cc3de62dac4e91b30617c0d88119cd0a732a95e052687df567621a668adcc75a1ed66e1430d5dbe79ea05e8e37fcf8f60baffd9c0f82805e4ef3e1cd8f089640ff688831ac46e9aae75d61f8a350cbcda044fb0677bc1654194ff945f3a08fa304f84de8963d55c983cd87970f048bd5850c076c2f50e888af3bb8ca8169161ed6c536eee701eb5942e772c6ea5654805be65049a5f7db7c6fd7597d6a07c163b4e4edb69a3574b0ad8e9fd0459d9ac59a66f17085e3d374a9b31b49c24968efee141d55339100767cd54c82568ff1940f1df4fd45bf649c20bf35d2020265ad6bf3441d35b0b816200ef8d4f92980cd582bf4db9ac5b8308f00f5a2856c80212478fc20abed8de53aae58672a1fbf6f6a2b45c401e510882021830a0b295936a7c4314aa050594e220106a38cd664110c66e21737f49505f6c6244838c33e1a95424677a7883b2f61aa30cde5fda0f559599eeac1f66b8da5bff86c16cbc54b2412207a53fa4ffa37f819c39fa9098e428f4ce9657139d9b4fa81d58f7d963e9dc88a45c0db0491160633ce4905dc920ac4df81afce94212254863bf4fc37cfdf7e81e50961aae224af0dcf14947253c85cb6d96ed309edde2e0c287919da12da2f3c18cff80a38bd5089f95701135ae82d8fab3423a9794edf80fcb6a95fee15671a7fb9981ebeef5ce57f0c817500aa91e01bd9d45322c9e551e127732b46293fc567ee192b52fdbca3d550c0a71ca2ce8beff81635551df982a7ada2718644b0221f9ca5e3c9dd0365a6e7652d8036ce265670e41b2d0ae10a120cd50fbaa72ef498753159f2ba702838b522809d232356a6e4c8a683c420010b6baf2d6428993af82d0cce4872c199b34652514af95ff1ff3cb5735e7571e6ffd60728d7b177b92dfd79be0018d556b8472b2f3f9abdebc422e4c5edb80c92ffbf9d88d1bf8933732361b042731e57b60a806fa7bf113b3f86ce53ef1fc78d3b79620cc0e4a43ae360069caf7ee6dec0060f82ce731537971b302f2caffaea3dbc51fa2145e3acce78d9ff1ce65ea8f255630cba96fb2a73d71bf9f45f41da7b24da4c331c2239bab651f12d8f842c063545714a5b5713367720d4f39dff8fecb2d56f2e37d0841f65dabce510d2357888baa54dca52c2d8f87cc667c8be3ff34912952d770ccd2658cfe69032c22666539775ca3f35e4c51f657ee1b657383a326ae1f152141d8f63899f6974229e5c429e99ace9399ef6f255aae530ed6a14996cf49c520274e4df7afc2c8a356376233141e44cb6c1ca3d7a576d72b6e6990d968cb794dc73f42a5c886edaa5c37e6791f1fdbf90cdbc0f1f0819ac9913fb04194ab64af3732b2568fcd7fd47cd45a4b0dc31ef06381f3a38740f8396b5755436d28b398f1025b4a834ab44ad0df8159111ec5ac4ba85d6f425ed900003eebc25d5bd3cf091444153b1cc3186c116183628d9d5489b5abe6364dee089576d598eb8e0bf9bc49a3a353755f9d49da0af244b95079f296511281ef9721d4eaf318fe85344fb1cb88f30612909f09c160074c035eb62efb3b23dc630bc894b75ac571197e24a404b35c8345e7e54794bd56d540752184972c9cd54ca27fbc38f1550c396c1d74c95a5bc0b42ab48c0571dbf47065fd163ae4113de0a8e46c56b1dd243dd9f8e7bce5db864b9974ea69f6938a3c60925d9f9474f71f7c303907a59718caa4edaf48e5e0c6d3f7c660793701e13be9c75631cd1cd31610a7849f8bfd3ba9433d2f230ac7c55424a213db38b0aac22388764c515fadb249c50106e2d1a7378c9b88aead21cc4c32183b475395b3bdc516638460d832879262dfecae2d8f62e1ccab70e5b3cf51ddab56dcd9d3405582d9e8ee4fa8fbf6347fadf1603a0f2b54f5a817e5a635d8e7f8bcf80fb10126969bf4341de04aef0151caf9017144433164456d4e35edeaecfd078f43ee16dc1753675a500d78e94996815828c963a853ca7f73c8f5de156bb6ff9be75bdfafa1372c9c46c71da354ef28530307e14de1ff78c42fc1be875ec619d2c5225b998dc5926a971290eb6a6a2b41bb8dfba3f2f59bb074b2167593a73b3d5aad0a7e3bb14500921c39d7785a476283ce6fd8a7353da91a00bfb7736d4f98cf70f9d086f1f2a41d405e149c49e556eb9bbd33b03cb9fcaa6ec4a4ca17c1a37d9bcbb660eb3947fa5606f58afbe5f1d8e015cda8f52ddd208b62902f35d618f90ba65907d7b2083f39e9b378892fe58ffd8a99ed6c82819f9b5c8b8d56516798406ce1af89d126ce2ac01ec02b4def3b67b96c330478a68ad230de5a7502540be588cfa900f73bfd86b58d7c64232b03c641e8b056089ccdebb5aeffb4bfd166c54d4d5a83b1fb40097f9c8f12ed80684060b0554ad33b9486d65801869d2326148326778fa1a48cab7d10c9453327f6118eb3e2daff65e2c15dc1078dfaa22927fefc58ad79969692aaa373361b4500b6a9ba237fa6673d14bfe374a1fe2609a21802b40a87ab45332ff9b4798755e9f4ee2ee2bb64e01fe406fe5f0b30baa37a39c974c722fe2c51ed4c6bc534f9c9c94df63566c9d0382a8d72a82f65f57cac6e88635a24b0f3d7f372073635294660e53731b2613a8adb6287a4a901cd6db2c4acad9913267fe6769cfc1369d12c6aafb826fdbc017d42c924546cd82589374506fe65ea09b8fc6d54eefd6dcf4681d91155c31b88cd0757dbeaabe5d0841ec50945f1107cb3cc654b0b8b102ba5b171afd7e88844d7fd21f095b2d3a56d6d117f51d12fa1d9444636ecd33f9b5950fa10f895b47e04296759a745cba7b682351f74bf12171e95545cb543361bc6d9b8935c1ed91687e73b89ec59bafeab2ff0a00e97c72d6d3d9442b652aa2ac1f57088f804956ac1bd8a2364faae32d9396f3e54b279d95ad1f7e8b8c41d7884c5e7fdcb38e89ad085a1212c9e8bbb38ba9346697bdf998179bec324a2a63a87754c14b5e91511fb533db6e1e5c2016419c0e9c4a6e5fe172a8a9ff94c9342688fd7c4a14c8d73e97d0decaed7f50b6ff14959db41fa8b067618f3e52b206e24d6653047f8a1bc1a769b7a808e98fee342d2f8a7716d8976081b1cfe16f234bf49c5ac1de9f5d98e3b18a9ef5b7d4aef131bd890cec237b0e5a5e7692a078b293f90e70821dff4ccc92d58670dbe1146df485753ed54eebe1d7999729e00211a1f6f4435095ed86e7f84213e722777381aa4d26ac381be9939644565e82dc067a996d784294f62d3cb0df31fd2081472d5f38ad4b95c7449e0561f05f1d7956de6a7ff5e6709c38da503dad07de72cd11f3590fe3b8d150c19c287d4ce4d74672ff95cadd6946da513b5630925a3344f5ac15768d467a8c7f20e3afbad1b6263d107a315d14e64236a5445fdbe1486e415aaf283b8dc23f9ff6b10f31a210a22d230412b01a6c8ba3b51e06552c2c8d85ffaf0d30aedebfad8ac128ae9e6fba90c34bcdb34aa6bbb4b189772752ede5f31800e58413563878c292972237dff99b4a556d58f4600f0b39d614ab8d94d9e06ad9e5a1364c6292824e73f06c86e7e73780342498e5c14c92b7a1f1cde8be4762f2edc9b6ab88d3425588730d35dcee1938eeb1e530b0a207e875391986f6450585f98dbf2d95d7b27c0876bc6d149206aa502d0a7a1338534cd77dbf6d259e73132e57bf77a77b6eadd2baceb64497a38035da4ee56ec11b68c7e55c7a1d37f70b5ce16dc9e463c2d23773f43b0424bfe86d8c077c8cf180355750ac61be9aa4ae7dbc22f5c377804e2fcbb30a194678607c2ed1c30e02b8b124d2292e05758bd663cb7b9c1662e462415eb373106ef7128d3d208fad30b8b0fd30855a931b778873c553eb751288440abdd45a95eeb6c29b4b1fe1ad3df7c9c366e4f831013f6911b6084b863b68c61ceb1e80a57f5b84d47dddfe85ee35709521f68f3842a77d1a7e12c8bad4f8d137e3780b1ebd1ccce20ecd07e88b5c86f046d4974a1cd1d59350e923de98491d361034e516a9bd8f10ca91af9e636703fb69b6c091713b068d353ccdac853ad1dbd266a52b27157fcd941ff3c04663775e57746d764753900b8777383861c011aa001724207e269574e028e3c2097a832b8cd80bdb48949cb7769b52a130399a2c6134f445dbc983ec39ddddd2060f970abdc2340a4339a8ec866208f5bfd0dfc9326353a7cde4bb0dbcf7d1c399eb8397501abedaa97c08c30fb81b9b1df56bfaa3965843ca32148f9b1d657ea47bbb25df902808116965a1bc7ec1d41cdb60f05a7b6b96a99d50989c8c17940c1a4753b9341361b4398ee70da7c13dd4125a24eeb14e4127260c009819bf18396dcdc061d39e38f14a494ed5951320212c1bf16dd946e0625cc7a8fc7ef3579ad336fd0d2ceb7aca9a01aabcda30af206bbe63d669280b60681d674bfb45551fe0c23328f217e066d973d8bd3698edb68c55aaa05e560689a26159993f5e47bde6a073d09f73fc8d09bdc3a9f23a14099b2e1732b1fbe329bc279f12ae5667ee985d785918c2572fb16c8fa385ced004d22e8368a309b4f07778ed71e8f17e2eb2b7b2c81ac548dd997c36a38b3c95d893f5f515dac4e871f2b49289ae83997fb4adf15884700d4e21501bf30bab7f766db9de7b47eb44a67a6a1bc00ca71ce6b4d673f962747bdc191d4db50fd717152b11d5d4e5bc7f6afa98ef8fda1b57eb375859ccd706b0043b60905a88bb3bb2fc1acdcd41714afeee2dee038965451d1e0b67a8c91759ea213f8a2c86be1a8baab3e606d5e38985f1b5423f4105e58ca0a1cb9867588dd2e1f9c8c5bede0ba3d9af839330816687cf866ff85269f04d5de01f5b7bc0aba824cec596639b604260491d7ef7be4b7233e4ccf7f2eb46fa733c2be38b7b6679dbed666148901372aa326542a9a80f14dde08b9b497b952fb2700ed6cf67f0f87e6bfac0590057832e029b513c4b42226afea154d1c40d0ed0db5510f0903ffadf3d1d9c63c89487f1e7a290880914b5aecde02905fe1abcbcb91d1f9a507afa87bd83b6277466d71bdf56d6812359c89d11e3335fa40ce2fa89e2c6e2feef96a93d2321c46f698c9dcdbf7042faefbbc1266720a7cea02c0d35d07a785c7110a1a2cec5698f9806e34360a0e5da36d344b124b190e930cdf2c262e8a52078ce0418f2de6267016999ce7e19325a4db789d3293caaf904fab3b4f36d245550da4548bc7c692e411b830c6a85148b94f5536f522a9bbcfa6afe525f9cbe696162e0b7ad014e2432485cfa04ffe999407b80337a7ab2433fddd18345bcc229c8391c2639a6edb6975ecf2686999a96d51e4e78a03dc5e152923cf9894845fdad545d15daf578df649179c038d883771816362c53185d86f0cf27cb9f6d33202d4f04ddc8500a726d58ffaf3a33339f548054535cc536e0ba5c34cedc8f35b91ce6dee63d698c59f0ee3030a797f06ed5db60dbdb9210e1c208a73989c461fad27c28fa07c8f0f96dd23e9659e618b01a8b36c6ade0c87c1423656ea057beb5c6971ab61349b632ab47fe3b787348de9d5aedec3aa5ccbd770201f13f47940ffd610d9e649bbfbb96d53dbe4387559cf5f281dd98ebd5887d7fd6e891c591385b292859eac279d603c629013be01adec3640e952b4efaa9c07737b698babc5947e0a1078f95528dd2aac0ac802d129122a49218d2820905fd4aa871a13e351c7f9d91cfd5407ffb2ad357139393becd310a4d2e05cb3b03405d2c664b22c876ad194f0363c41257e6da2fb4d32be7db01d2a2b935843098fe9ba2d8026751ab14346383d17264b71d1819cc0f81a193529d987b26993c784ef031ae85c5ee9d946e083e4b74c6d11b2e28a637172ce588eeda39f30c095ad9cdc5c3882502f0706e3bee74448c269c7e7a9eb6e09891caae568ef573815d62a79a08dd2704897d7f5b7c5f33615857af0a096ac5475e67a961e1bd7812f2de78daad839d2677c30e5ba25be4eea7592c956e0923314d960f7350e55838d6353d49fdf80ec751432e80b5beced3cd85a68cd1ee4b00a414f36b8393655d0ab07601a99d34b1873514b5b7e1bde9acf38e1eed9101fecb63cf6fb2318408d108a840a68e7e31430c9a6812e651dc968f9c47a0b5feca543aff4c5eeab05b16d3de43e56b8ff7cd85c0fe9c157d0f1d7c4bf8f63a6eeaa33b41757d4375e2d89b24347886bdc89e5127d1d00509d6a73d5a4983c9731c1b313b861f5775b06dca0b23fbae93027b2594bf4c0011f84da44cc0f800a088bfcef561c9ece7cfb9c029174f654fed55a373500a958589a6bde9a33bb47eb8ab845bd70bfc1300bb269528fa7a65ded71b5161e6a4a7108fd5bb6056c20a62d6fdbcda16efd7c3f99d6fadbe51fa2ab70c61675fa58ffc1fb292fd067e3502f8b34e4e4b5225c0be5256763bc069ea4c35f93fab58aa6b49c401a0d6386347996fa75a0d7c826a2502f01aa74ec2880f3f129186b73742d2fbde20ed72ed4b94a24557591e890766156656f8ed4629dd42cbb95f54c990b34ac5b012659fa0924a0843dda166f9f063e5730d84ecd83fe7e552bf11c84a0aa9968c91163a275270b3cc98a05c5e35071ecba4a7e090156f483f10a0ef4c1998f3c1e9f4f3bcba676eeb45d440ff2c6cc64c38affe0846d37e4c29d9cfb315b8c30389eff2b40eac47070c53fb8d0778171f0ec65b5a70ed33633aba4b82b701b28ef86dd422c092acb13f030b348f264d4a1013bd71baccbb47ff6e1a98c899ae1d33132af5b416f2ed30c5027120822a753d1d1e522c898cea599b49f82b026bee1425f8df03add2094af006494f3673b1c4812d27414dbf48b6d2b65f17a1e0d5179b3717746be605016750c3934771581ec0cc2798d893dcd9f6962b7934c864cd4b53d949c8308e5db3adb897ab71f7b3589348ef71ea9d000aef8fc4cc231cc96cadc929e29482155400f2ff96444ce9ba4cbed119cb9269da1f1e9e57b2b1ec9c1a1b1d8e590f82a0be96ca56c05198877550a4d2deefb4cf539b22987e6448fd628a0061ad55ef6f70eb9c743d5c527dc17bf9fdf3c8b50c1127c2a751610171c228e8881ea408ff34609ab61846f8fb976457227b51990aafb1e9bf3b37f0f86af64192213f63643def9e4433ac7b6d9199d9e70dad85ccd9c2f4190f5ce943004dc1238eb969434fcbf6dd733adb09ffa558bde34f12cd0f902128e3c0e1f81c1a5d5322dd2953445eed934108ac5c627401635aef3bd124638147947661f4cae9ea75fb22c7bc8997cdee0a05c2aaf180868a7602b6dec0501f503f62f6ae0bc1203220bc934ba18a2dbcbf74c9d617dc54d85bd2bbaddf3ed715c901994653c8072ff72912e7a15d9f06567ce3abf2fc76d4d51ac310513b9701594035310cc629edcd6661d5b28721e047be9785d6630fc5d13ab2f638220568d85ac97212690339529ed5d2935fe8b90f07ad24c80c95ffe2f47bde8c94c22778d4cc4d3663852c1a76bf2115fa5afdb009bb2004b23bf9bdbf42cd9a3ec9662a7bd1c8bc53aee41de6a3539d585d7b2f2c87ce78de3142bda6651a816e99fb267c9010dc8187e737a166b3a5e7411015647ea346d09ea260ba18afb4fa342c6788d5b144670eb6a90d29e63a4dfc8bef22de16462b8ac3c7106ba97b7820f22c09fae2940ad52c96cddf8e7f876f87ce525ec1817b17293a56dcac71c2e4df7964e298e029632587d7e07e2a5bf150c8626e04b787bfc6a2ede38c07cfca199451afef3235a241e81eec4302125d83756357d2da7371210ea10b6800d7cb90883d95830619dee988cc70b267894f2c7233d54891b3c5c62ee27fbcf3cbefd3a5bf8bb2cdd8244d1d071161ca90669fe2bbf8afb6ccacdbdb9a3779cd1e9459fe1dc7636af90ea3be4ba6e830989d35e83c6517d8e943a88d8d15914cd65417e9e12ddeb8bb3a0567564822b3ae21412eaa3a3cba3cb951e345a51f84f5919c837c3c6b012704f6789a188b01d1366f61173f9ad2306a661f9955c15e32cba82afb080088e34311364bd46bdb8708abb234198bcb6da57ba7b6525b14fc4b6401cc58ea01e51e7349f46e6097d67f5556dbad1e03aabadf86c86131b7d1e1f66f92fa8b14e530183da237629f79784f07aaf2e70e4d424ee82360d2a9e89635a00bd682ddad9bd9019b4a85f074efe482b1c75131e2c6a7a10948162323ab85020364386f34c5ae6aa651309cf204210731aa2fe85a3ae9a7f6dc22b05645e0ca5680b74c83ce8db1e6d4b34871eb73dc6252266021e1029484612eb0e296176d0cc8d3ee740d9bf1409eccaf421eddca588e38fdfa9cb925daf881d7966b1b2775f521423e1357aa55f1ca1d5a79fd9ee8eb3cd6bac170bdab950fabe95f007762ecfc28c9092241099acef46a0c8ea9a8034134c4dd95e3cb98c9097f37faa16a68d7f4de71ba7d9c13c62a57c3b941fc76e7175d206bbf4b81cca0fe0d4f2b3d7f66f0228c540c554aa5c9ed3dc13e30f39db1d04718a12b5055743a5c86600769c5d8dcf686fcb5b9966ff970217ea7cb20e861413d7a9b81715da50bbcd0e8408f5c934a904248e9bfcc9eea2e6117fd21d80de5bc62cbbd4f8519120dce77af0fa176bf6836f38990260bd4b84dd4ab114f1e7719104ca31aeeee4f88f155b117c19a25aa15e5b579d7720ad02b2e6ff6508cd98765ff4c51ea61aaeb93d4ebb74602ba977e0b1559ce5fe93fe8dcfbfb913297d1e19875a3a1499cba55a9411eb378a276f61be8d90a50a09ff57cffdefccf32392cae5a718e1eb7e899b29918fb3c1af7642c3c8c23a42d24c81b3fa531da63d78f57c1310251ce6706cc094b087c99a595dbc878c1dd588459d44a2103202b537860be2aa0efc66608b3d7fb359b813ab9093b86222e4651a67b5899f73be969fa07241cdf9d45f34efb0174d4521826e420ee1a98547d1f2f5d1789c8d6e0774a51b7b48cdab4fd4a134357aa98dbe58eed550409cd7dbd7a078fdee5b9ce1443e48eed45965d74b458c0026e5a788714079bd36e4e3a7e90285b42f1b181e3e37d3db1fe198c47083dd7f54d08ee3c34c82b8d5499154f7e7ad6f343419ce6ccf0a986803dfbad037aba8469efa80c95d743bf5e963aead6bf06826422ea07c4b5b651e5edffed2a56d19855649d773d40acd1c0c469f72bd05b32939af302350c1b9e1e042f4543f90a0f9bbdad66191a36a7c6f8955698b49336449cb88eaeaa0f536d6b7745d9d09758361ee5cf78c2b1774b6aea203ad455eb9cb9bd7560ffb020eb97ea23bc04bb5e1810514b90a4641f42131426b1305739f7e6d446a1003972034dad027ffba54ea5ee833ef8913fff315ee8cca3b219db630d4c6c6c8d7232f5b3ca34f9ee8fde36210a5d2cab57efb124c347398698b9226d6bc2e05d083a54c2e3d7c4907bd198255cfb0dd863b3effd35fea18773ca2cd06d39bd8391d188f0f4e4c1be5cfb8a6a17195ed040d72edde2e68abf6bdaaa8c5caaea7a7d4b4d40ac06924790cb43fa871648b4bdd743009c4dabef42777c5779c9f1c9415c339309191fbfd76fe9f4ccc0d7343302182e232b3c2f50bcb5e61f0c81326b811c51433312634bf61adb21bf7a4ca783294522c57a975b1d1964496bec71747ac05e29825b0ff47067a8167387877fb60a1a37c62800936ba6af1b27a69184902c648006ac42ff01d4bdc00cb4dc03dcdfa52c5f09cca93808722e13ccc7762c3e630f80fd32bfe35a9c2eeb9f153415e284bb4b67c5756c23ff6f7e9ae7cd042b9e596b09f2e8f3666fa86048c7b19ce0c46bc68f0a9b598d08d47cf46175fffacd3efdd0a1c2055767879992dac0f9bc037290530a19de10203634ded571bd07a9fb7413b9334303e4adb3c5a4a022ebdda1338690ca242d0a1ad10431e3a881b944f2db57e930326fea0b0f90bf4af7accf8d83e22a6d94e033f33360fa47eb83753af3ab007e2287cf65fe538b67fd953b86a7ebf1d6ae04e2b4de8fc4899ffd0d7d6965e9a30239cad907bedf4c2ee8df86d379598f13e202ec9afcedbb4653f834113b727f778b8164030a56a051cbbcf4eb891de61481d0e5a253deda61ff50b9027f317819b9c889adcaf6c83f3e7b6b59a489c032e9abaa53a3d0f7c430abed17c3bb7ff73aaebc2562106f666501f28a492599a45302cab1dbc88215810bc76f8d5a2e0fa371256f0a34164729d2b6706ed1bad62db6c9e1de886051fb1208ed1c3587d7466aedf56d9bd9f9245224fe0869aee4ebb597ad21e7d6487214acb83d1d7ab7b9287001d07859a3e44b46afac36e223abaac703dc28841c270ef6bc2d720d8c175d9044c5f37505744d8b0037d16a99a4e8f976c941c8c6bfc1fd2891cb36271f4cf6527cd48af03cb9e5f28b315d806f0b84bc791b41918d64e2ee765ecdcc1cdd2c23961f7dc935a431896213aac713e8562e31463d9d23a27f476d4eadb4a48a69948e24120b60db8d4f21f39291ecbe284b59b5525d3deb9e2ca65c178b1dc04ae4b4c0b5c296aa07d1ca3ac9b35ad71d3581699919f54a24de2ba794f21a6eff38b4d80b10ad3e9221fa6f083a47ef8432ee29646d4a3ca35e256a2afe87df1917ac4a67abdcbcc352ef7484e37528c02cbcafb3c8f8391df52af575b7a119c7eed8da865d84693b00ac2ed5a2a75d1e328ee40aee9d0269aeaa465d9ac150438dccdcc6833678e5c51f22211c8d093cf5ce16bd7730cbe6d75cff5c18f83b2ba7369b4c8f175f8ac564da282c89297e4b8145494ec6d9b284c89f20157751b9563dc08e868cc738230c2a7d6243c65cb0a0e5d732ab427d0cd841fe69cc35159665400483397622897a999a7f0a0c7ec011c37a38c7c18a8a7d402362ece79ac60b8ab13250c475a55494dcfa061d16be22df604755ea275d677fbb410c74662a6cfbc1562e8496a6fb273b7e3d079b119c6eca9ae92605a8c44421b84c37806b3be159434c6bdac319658e6961889fc160592b42c84387d319d72f7234febc15cf7f53647b5b96b43eb6a24f778992fe9edd94a28b7d15082551278bfa87c417d6e8a7b67425db378cbdc176477c349a903831f11a4ed3b7d25d2c14a138b847a19fda4bb79eb98c728b7357a004cf8acb7656bbf071011242ce5291df03a3dcfb4dddc9b62447fa7c40242369979e6822ce7761b1df7691d93b4e7addda32f2930b87e859e7e4482e6c0a3c84f968f41423079411ac3f706b2858bdbc263b09f3f9e8f8c8947d44edba22b781c8ee8fd09b2ade0c14752c6a4e973af4192786063780588c40864001c555e12177c1bec06204196c27cf0a2d1358467ae2d13138688300fb9f90909e10e5b7a7670aadaffa2cf59bcd4590444db229bf0632b6166050f8f8f5250d03990c6cfb0dfba976c6ea77d31e540adfd0cca07777e4248ea04cdf05487395a26c5ee79c43f1a53ea6a3748a4b16063d74cb5b3720eb71b0bb61659bb608886334be426637d6b650ccff1a408c87d8357e9880db00e2f30dd59cd1db128f4debb50a4c1ea3e197762b376891d39a17ccb02626c51985e89dc55e7b900be0cbfaa27308db30b626eb200db19f3cc61ed2617ddbe3b4a0ef36a4f853788b5ef0da47322c343abfe5da3b101ec76fde8c9e53dc1f90d56c8d97b48659e622c62ed9eadba3454bd37a7444ce28a577ccc4d03f89e735d9e3aafefe5922b096e9f9d3eecc0c8213622f89e4ce216fc0bd6e2546651bcf92db115412475a6cee014ad70a3c3855aedf72bd9351ac983bebf45ab13c172e6b87f3e0b2be3c019c401fc9285daf966db25649a9fd41cae1f90626c4df2e185091649877ab1c839650f825bd9b2ccc8fa31149b5edab270d441736807722307c26ddef97adde6282535ccda95c1d3c8cb67c9d83c189e66510dd499935aeb0612cb9476c747bec40b152defde724d0de55965c6aacd0345bd8d5530673fcf64151b8e362a3831581c1e8a3241398c77df701d2c5c7476f6245bcaee28c2fdd3bd37e736be6969b2bf0b0915504053a63b6840fc44b09a8767917629153dbe4daa7152b1b98ea72c47e3e5057f0a769d4e1870de2b2077d928cac7654ac88317125676b0ba2c8841b6eabd9e703f3e5502e9a5bbc36843e1ee6075bca193253c66ec5fa340e0fbee66c15a65bc20f7e5307ee60158797658c3ef657033ccce0e4a863cd4916b06d1fe11de8450355034f7cda2c3316ac5a9ea20d1521fdb8e21072d95d4f5c30f33c4367d93b61d4db906657d7f6d7038c0bc7232db20b500d3128a395fb5d29bda60b1d17055ccf64f3b085714fdb30d48458d3d23b7861cb344ca2459622c997f7636d0ecba83c258a1d2486eab799304eb9fc84a3c7ab1841b79a2e6199514beca60679192b45d0b1801c2a4464fbc7e8ca42d36a90622cae65b299c81c978a177b9fe9c1d9cb172e2cf59c78aae64087f78b32efc4b0f31f53f780de148431b5fd7168f462de4e3f305f79791c3c6846ac82e11f21305c4342d847e2c197d33604b71f1fbb46dcd92bac75881ab62764da17dd5bce756efa51ab03d7cd619a63f4351867e2fd7c69a051b419395fcceee2fce46934813801f127546a6207742514ae05cc14b356ca2069a47f15179da6852a90bc1a4e885518e8cbad26c3915d7b6d23494949da613e3272027311c10b095a7174b14976ebb3efe864b663365a03bd20855c567681ca8d07454c5576d2d68d4bd2d5d1bf78c81f9de9dac9d4c7a8711de383a5197ddd829c195f3f98373585560beabdf16034c166e90b697e37d65db606aeb5851f18bad7279bfe75ef9a4993b1e4d3620ce101f97c84cea194f6da211d46387166bf037f06c616f9a858a53022d052fe33d96e745c8715192480465c7d67947ab0a5d0b7aa99de1b5ff8a7ffabce69deebff7e2f32437088e661826471ef65eac64fb6d74e9c03b0f2bf24f85fdcbdb67613080f4e26a40c785e72883a03f9456d67f1c432f30375c63931cdbdf3e70e2c3ec86e3b578b39c76881c1a290d2b16058dde6d77bb37e5783aa91aeeef44cfbb6de99fb7593683d881a21ad072824f1e77ca69a89baeb0b67ae6c7f79e38f55da4fd3e6bf3e573223304d370c65679eb2f77ecbbf13ecb1f3205eceb12a5a88b383ee752ea015c5cfb70c9e26a7ec62be159ea9a28f17695928139b97320cd325c577762fe44474f428e4b68a416e96bbc514e1a35114f050b0caed4ad62ec1c3c66c6b23c7a50f9301c2b0e43a6292219a976ea1508d9037e849c62ce88d93ea1b851ce51bf7dc9143bbadbbcc3c820f4acf0a08d8782357c3e0445ead22c2e6ba0a963b46240ab8f2d72762e68209bd2f397f0c09afe786787e3fc55ccee0bd81421b3ec0c3c65b99ef729cabaca951c69786b957d0246f01d6b4b1a2e470b9af64cd5f99e59e71c395ed1df1d7112d32f31ae2087cd43e9f92cf7b208669f56925090ff031f1458316b3bdc34ac205b9295362b9d6cb8f549c6bf6ecca800436cdbc927d579aaaed82e0cbe0c5adc64610327bda601f8b676c4f5e0cbd7f3384e1381608ca2fcc9acdbe4039a7c2bfe62209802d1dbb1ce4718b82fe222b14215d3da2efd0633328f7639776dc85904bc5507e4b07692a1986b13e331a8bbfc2784518a4e56cb0b84a9d0572a5292f4c1318031fdabf4f1b71d6038f819bae7f0354232d628a0f6faa346bbb26ca9163416ea36826b4953f7e8f19eb33af1f554bc277a37f007ff5ebe2c213ccb9ca2d8d67773bb9c5f9a1205e74931210bea395d3a9b3a42580f9448117f17a07dceebd9f498052035ea0a73b7bc9dfa5a8ad270f5920045b16aac74b000195a8210a355cd770ab5ea8600337da40e9ad031ddfa26c3f8b0aa83fef466fa0caf0f48d8eaf1f1dcd0a6d4699568ca182cdf87d5a50a3792004af713c1a2d61bd4117a4d1406aeab6de7c8028309b09500968bdb1a6c7cc31d4e6fce1f1b58a721c85223198600f55f6157bbee8ae89606b93b3be8a6f4b93ed202281394b9795fe8dfc5b134f16c70b426bbb8e6da51862be96f54f4c99adc04727f641f6b68ab570cd5de36461f64223c6e6ffd4d6ec211183cde3b672fc1963d63424e84a511147530fb694a27c618dc993cd2e08ec930ff9b8cd5123dd61a1fa34731b693621bff016ed8960daac4ef2d5d0f91c1a9b9a5cae05510dad9782e6ee8e5c5e5764fb2a79840079fde8f884c56029679abac17540e33526382243ee67aae527f497f62bb90ab09a1731d006d45c6632aa66a2f046a7937777cf8decced68bf7910df341894ce4c9c4a4c2c4307d92386b8a31dc1662bf9f9f9d4dbca8a512b6edb2d05f0b96d0dc8123f14c3d9baa2b7e0c132f4b38244e7f2731c00c349c7cbe35a09ba1aba4ff72905ef311e4482e6d5c92401d4853cb2dce125cf1b0531948ed6cae4edc6c327a58d04e1227745ce652664b4db1cc6f09fa017b88b06091bd730277a6cfd0c99d34c8b991b21d40c6ee29f19a81ed28060d1b08acdee998731966784ef1d6eabe62c4d38770ab5bf2b85ab5cd8764f74be0b4765ae26d1ae39bd7570e9cec12a0cea000553530a203d93c7f4d4f0e7225e7ab39438401b67bca6f5f706695913be508e6967280fdc0243c1d4bc61e433e51bc4b636a123d4603dffcf1324e096a0c67f00cc025c969b440bd78500da631c6eda8b1fa253857b16043c4e562f3d8f8a3ce8cec4f57d0c5f4755248ceef68940cd2db36ac601137b4671ce2af1a515c55f30689466b44f828bcf63083024a6d0d4d12a3662438eece4514b18a1d4da6b0169b1f8abd4d2b5bee8e1af1d9b5080224e5891326d22706d91a7457f1dfd0b3b2bc88c87b368ae3cb47fbba02d749f662302f06bedb55a3c7f404a35deb737b85671004c6658e72f8d9fe931e40bfa69a18c41476c9c82fd34ce5f37da698aa14645dd1308a025a7ca20e5c645a988260172ecd8cdaaa4869d45fe64074071e269c4c5c44945092454b145f1b246ad4ce17f331733b237716f47c92ea090ae2457f32f8fe80a48ca103b9bd233f5d3e00a3dc5852f8ca5b0c0cadac93e5db864077345c4ff4ada9c548a35c6d4f9fef981c242583bfdd77a2444a4ca514437dac6cac509ba30a9c4a3e75957ea9311a3a0f3aff1574d001d2ee53c5614a0b1a5e5bc87e3a90a314aa960d4bf1506f3911897adc4b90377eba74058d5b465d3cf2f6d747fa1187d6c70bcdf0f246e4aa498860211b5827491cda2ab3fa8a2c58485ffa059bb109b76567e28ac32850f493770ae9b0db77d7ddcc5414f96335d301e51ddc52d3371eab1bdfab3a1eeed2a4ba2105e9c9963a89454e0be93c453806de83474731e252a76b16fa41185cd9b54a7799d712d15cceb77512ad47c7c1028a3af91626cf3cc72389d5555fbbf20563e78e435a3e7ffcd2db77fc72cf21e3063f1a52c7da4e60e25f4d0872e49a523d5639253ab8bd8cd24901e2b01d3b5d553901fecf0ffa2af035b28033c8fc64ded7742e5587c0965e911f3f8dd3b3676d048d125b0362c1a8b6b8f569587183f2542e3f39b04e59fcc71a4614d6e7bb6274cbfc6dfd0926734f4e368d910afbb93ec4f0110a27b70e5073000916c65a990c501c53b8d93d4af8f725e57fef9f0524ec0a2b8961b666d18dc76b3891060a98a246c4c0274dd554d136f8594f434339d20d43679d006483a2cb505951c796d57944e5c06e8310b008f5490a9b419a25f8abad136c63a56ad29006e301676faa0a520e40f26e8594027d69c285f517a7f04b4615bc52496c376e8cb32bf6858c90a066a1de841303260150710641ecdf758732488263be58be10590aa946131758d44e6b5f9c488ab0460f37350ab65e80ae742183cf23509cf670f8c56f2bfb00859b21be7349c0d727d02f69b9df33f5434ee2e8f639223bf3cc4ccd4d62be60c19f3cdb274ae1eb1021306cba0ba6397c72e546d8e28b8aaf103757fd7ff96b8807073abe96942584944cf30091577bc30870c59c3274be25911a5c644509d04e826c67a02b1a4798af46cc7f07efc3397fb0740d108ba426ab4b23a84063737d3d03bb19de623f75283959b1e494ff2e2dd5301865ebe5d569b1a2b4b100e7f02eda50d914d58bd9741d051228d8f5aac564144fdfa2bb2a7d85c9b87e91ef7a2fd6a17310c02b97a80455a417ccd4e8994231694041d76f80ac7da73869b15de5a74fe1c3bf9612a41d1b6c0c7156d5ab082cbf3ed182c59060c8b82f58b6d37ea490fe3c934dc692e219f34ebab89590a160d1f5dc45a03328cce697e2f8893c0b270b9d274bc0b90717c503c3b8ff224c6abfe65faf478d53a370bd875c1fcc81f62ba1d9d1219605f7f52704821c067344d188c83e55e7793359490b7fa972d119e6ba2fcf9e4b58fb989d9d0aacf701bdf0696bc83b87b157e995f29a31072fd2aab88e560363cea6454804a6a0f2229c2adf091cbbd47b802a13a84732bd97c845feaa81abd8801c9c39a7afa1218db832454e266ed09f0d6cbbf63f1fbf0ce16c4db85b0a7b4e07bced5d0f88a1cf2addd05f4040da6c33c197cffbda98b74e381e9a5a2499f438ca97b101e41342f5a6efefe2efc71f3281548bd63d7241afa487964f13011f39717e53fe770185c12a38637c8f4b6403c8e519af9519e7b210b84da7844e09ee5d6852cfb90cbcc7adeaf7bb08aa2c67f33bd26b21de133ec1fdf7463a898b61bf18e1eb54f4eb8e94010c3e96c159662708d48f973a8d005e5f2c538a13ac66ccdbbff1a66526f9e9d1e4274960edf6ca902d1ca04f793575c4b1b2dee8108d3e239ba8429f6df9db3b9aeb83eac06a0896374b572eca9ef4ad1c2e322cea60d132f1526fe379643a6b071f7c51fab64f46d950cff2d7d5b07e3ba39a06306fc7dc5030a7baca88ff27e30ac159b96fd342a62e8aae33bae15393e1bad54de7654e03fd1a06ae9dc2b66159b131b7880bb408d70223fd1ea46d6f6b4caa94fc74ec72eb29e226a442490216ff57d288326ee94e234c45d6782745859e160f5bc03fe10beb58de07e1fe690233d2c0e3c7258839cfba47e1c1806eb3114d901c9cf13d57abe4872925756e1e29b3629a0db4753e59bf84db49357d049b8e18ac5dd8309a67c263ff39e8b12390f16e178c6be2050a6406aeba65a84c46e9e8eeda13a94d5314c92369e3729f6b8e747b8e7cb21ba0375a3725d016c5af46e0dbf339830254d4e1fcaa817147940b6a30a3690ae6cae709dc7e98075888cafb6207931866869602240f3e0c21343245aa1d8c4500adab9ce21da11b41168114287c66c90db71b48d65554f6134d2955af95a888b7627e6b153e73418fb35d341d3a57d427e9b3640358b1298c30dc58606493621a7529d26382b705844d891c7a30d00ce8d470c7829c73f6e007b18b7d2be52c09681f87236c3e4ac2e500d7e7ce80420761288712c5fb51514c8f22134bbf1ef92e262422e598a5bc12846df88ae96bf43047bb061f8dc7875036f3cc6ea043a8b0d129eeb940edd97bd31f2c5bf8e56613732cfb177eacc2b5e33faefc48c8d44bce079e1851ac54603fb3d641b55ad991fd866cbff879eff449e1cfa7af4f2650fbf3e215cf88f01286b530bbfe2015642679d94e4b6e42d9d64814e00542dc83559a642a82d93e7702cdc14f56275efb2d67ef9ec8d715024a15765fcc47809db1ef39b35cee51872a701a06bdbbfff9379f51ad38ab26639b33b39ff762d0cb46b1d26e74cd6cd15d9e84ec9fc2f2b4fd36bd1cd94796c431c69b5f2458502c095bcc018b6673f70374ec94d42e16b650fda6b3ed8a7341694c3922dc597656d49efc74267f9d2dfbb3c293a5ccfa406d29f4dbe094efc969c457b0e92733d165a672b339d934be56a00401efb193c21cb21922f4e1cca14dc1b793bd14aa9a27aa4f0d5d56f5876dbce5fb4ae53464a876c1bb809809de97af559be2a249a2caa61eb89619fc7a3852d1234e0e2a819ba30ffbc72e40eefac1bf5a82ac194db13bc24ab3e9101d01d59a1ed440d72656fdc5dd53cabb106f4069a9f94600f429fc26412e567b08607bbd155c35c6986ffacd7fe7fac7d7983347217dd4f26379bda77daa60836b8baa7c3575803acbe8d725a3ffb255ab7fa6c7a3cdf5845bb5ab78c1faac3385f50c902f3b9be7eb2e11c82fe39fa94794f861d1fc4d0b116f2f7d35ba79f12e3b6ec7b8e2ce2bd7ede5e7ad43436a3c07fa9392414a94ad2deea3e774e3044e62b6bb0a5655c3a1b2d7c8cc6d700e6d6fcc1c92dc5f4dcdb86f434560343a63689e3362e1403f0f5e498add090f5f91c0c1abbf0c7287ff3232f9a4a3425b0021f85b80effcab1d67aa7b566c4579b591b306cd1352714a04373cbd301f5e4864a3542ad679bb79edd7f053766c80b7b38ce0b34a8bcba694522b2a2c97cc778d8adca9b25577069c9d1910066ff9cc17ff352c46ed4c7fd6c81eede549165a494018495694f75a5b801270f7769bfa05a00b370b862b36a1002cea615535d1b41888de42b8da3fd43c4079b4093c9fa3e4d59853fe41a0db57196970db4b54cbd7433ab74e4435c2a30ad655f65ee8c9b8a855e28995857662379556e1a66b254f7bb8cb40f7ef15be365453b7dc5b2caa8939e8dd9422371e34ff064ce13507850cb49e7bb9d2e7627365c429044ecfe1e45478df44a751e5431beafab7e2be3eb91091c18e793aa926a030bc966dce6532780cfcb3bad329ebc136437e39530827b192b680338ddf2d3ef0760038735d4ebe195e79f3de434baeda4d081382135e007f799a833ef30c9f1c8037829b51e4ffb46fb95eb3dc1301f3194fde0e88ec6a895c769fbe71fdc310fdc0f36fa3925c475d25fc89c021bed425081a611f2de0b98e3cf2918d68d2797373876ab318b7528aaf423f21634ea500e9df7225715879c8399b23d19a95f70bb10ead72f737462a3b98cd93d0fd824655560f39f74a2e4d45ec6769ebfa4c58feaaa75869c8626f61db9752297b3dc9c33c6165a933e9d305eb4e322493207f0c530ff77b99af0183db838ea85c9ee73d62d16e96162129c5d406efb2174def875624a6629cfeafc0dee4d818984155fa2f356dfbf67f9bea940e580fe0c1fc3ed24803cf09018d221b36f0810bfed43a1c4d0d7c5cbf85645018e9cc6cf3087e3ae73b39db6bea2840a5792cf6dda742379313d9d7948741dcbb9802dddb18d1d6a85e87512ce43eed6c71de7ca7b271a159fa0d78ae3f7a45f9e30d798bfab441fc2c706fac6d0a37ff5b0226f59b4e1039c53f52bf9874488bd7392a495c24eceb264b7a271362260082e260de64904ecf6350009cfb19d809017efe4277579a44cbbc800ee1c43610c140f92f3e06b7cd3d3b1f67f8719cdc715ca8ce2f7fe20b46d3ce7c238dda66bb5aa7349c92bf57c298cfcd38936efd3de1fd39cdbeb14607b578bcefbaf43c70d9810dcb4c6ab114c83654cd64dd8a20e9792bab29c50ffcf7d4daa91f5f078742839a8542d23d3047fdb1271aac2a3020b892861432fe6315ff4cf8e76681d7400df35041a5cd1db3d13e548c513ccd9cfd28489ce1db7c3356a4d7fd4987f880646e9e85a53d14c3e36e449377db3396ae816ede0cac7eabfe52c080bfc0dfed303cf62b26659e52695f3c4a7cb25b79d5aa7901c401a2475e80109e6f1bdcd0fd8cacc6935420381b73b5baf39c0f8aa15dfad56ba62a32a0ed2b68761575b7ba4ae388e9e35536b6fe47c1241a6751e3be268b3a90b0f333ea03e7e4d7f8083c61da0d3991a4d07c056e20878f0b5692af16acbc2821ac4b58f9803e21c3e4bc96d0e12baf5a2bb205319d4d5bf3fd47ad095d51e332e760c14a07feff863955f4f69776e3356a21d514b2d7b67c04c142589aac23450aab7a80250e5d250587be386769f5ca30968dd1dc3c6912a36308f30c5674e65eacd988af5156da53b7fdd9fd65eca8016389aecbc849c465b13491e2290d7b2aa778764e1b69cbe4ac962e7a617e513adb6f90b777927da8d7bcf0f9d5a9bd18218b1258b36c405114f3eb3c65ce6053d9510c087e02c3e42205ca9d5eb0147c6842b531d85c1133fd39d7970f7b7edd3ad611f7c3d0224b842159fb9ca7f58b0942167b39f4120e5c18d23111fdf16c5e76fe49606ec09e14a69e7bb9fdd0d658240762fc168caf89198857b055f446abca2b5e2419a6ec8c07ba28b71e4092eb0e4aec380dfe4dc18f3e56470d192d0ae74ab7113ec683c98bff52e8da6f511f57f6b87a8dc9f2a30c896cc281681468c71ef6dfabd6854fcaabbb741d01ef92361db744977a9eb469e4d2248505ef37cc679e78956f84c3bc56a5d6f2d924a78fa093891dc527db607adc014c78f0ea46125b7a6418e16f5f884c5fdfa06105c26d2c33817c0ce5b48f3604acf8dd7c16fa7fb85b2c12c1e11075b285dce8188f8e2b9edb0f4b02ea5edb6baa510dea53d560b909c181cb6606eb469df12f8f0ec2081a1955e2468e6163865a38aeb40e18b5388bf876c5558a10e83879b7dcb28f146ce3acc429124afe3b0c30db6019e3a8a29d695d873ab8d3365da955b75d06dc4d5cc9e20831308385ca55b8f7e54f6b9b8187c9103660b224e7c9039b849928eaa7a171a1e9b1b5f029ad978672ab0279ad33cc02ff6ec37bc2efc54865ce1b62475cb69b060b141f67c8b39f4572efc74fe38222722518557078313f4aab6a4b433a72fc36654047d5e592d57a1fafc4a10255ddb28129a3ddff6b49df1a892e26cd7fb1b6e25db19cdc8d44df2080e20980fabedb7b70a789ca39f195b5a906c70152098725883bc97247061e82e0470ea93af93ef8b97afcddd7051aa3d2c5e3c9cc3a3755e2d8a8f619befc20214f17c34de4369141878d41eb19d685ecd08b6e5edb3ce5980c7a35a212a87c0f08020aef78869a200e7a21c40388a29c7e5ad55768dc9d97706a299829107228b482fe77d4490029a24bce9060e5b5ef9c814241c2a1a9a334e5f816315577fe4b572ed1ba76e3d5ab8ed2e10e502a57eca36150ac68a9ff9831214fdb43287ef649e09f11ed1596e5d8980db09a9f3ea17f9f334ff510be7261e65edde1358495034edb6117d856df1f5c972eddf68be4681e1eb71c4e6cab8f62b66f0a0bc83aae55df5a1b7adf7e5f5cba325954b05394cf5e537d7ccfc26ecefdcf1ab876ac67cd254d9ac2407790919fab6ec98c7c317bd479c7a7014727ddedbdaef7f9e583e20ab1013d55d8ee56914ea098516755c13fdf95de5c618645ebff6c5e4f949f2e64a06bd1117f90c8b510a845ab09b55dcb23d69747497cd27fdee307049c826c3d570f4830a14bcd75ad9be304d22f382245c12c24cdea94fca875526193d2f6c0b9419a8f45ed06bc25215363202a0c122864695bcec310aa2c557c9744957a2dcd053380c7bf22a439b36261c9b7b00814b875b8c2777fec419233bb2d8387bd3c2d811455614408f2f5022196964bb1374b991232b481ab3f366b3b022ae890d4087d7875ea84971b1b019ac2f8f8951f799b8f3d72da1d8370070d28dfebfa07a903457d64c0c5c256f98a7f1fb2f14133c29f14550dd3f0d2322a3b820c146cae29be1a902bf2bb63737571c57ccd7659b1327c58fa75699e6e2b880f9a103daae7edcafb6b971d185b7a31592d1b79a2ac8a4fcfd04c581fb0b0940256a9d80ec296626a2c35c20947a0cb0746bf6a14fe81fbb1f3eb2a1a1d09938828d63fb04e0c888967e8cb423f094097bc624d0d830c013da9ead1473908f182593697d4b91939f8e2541b06f6e10511b1748cdba13d77dfafa941e2963fcd59f7c4acd4ac40459d9497d7a3a460823c5ffb71e6292187791265f3405ce4799e55e36c4c38c5ce4dec76ec5dfefd95e9d4b2ad66e043eeead5db64853080fc7dcd5668dba32dcdc33beb895ceb2e0c0b377fd4aebbde7df159d19757612d90032a92567545178de4b666a0b2fd492ea19f67df030f369c57878d8fb25386242b6a869142c2832e57c6f96a72d2ef3374de25a80529e4c272254ad6c091a0dac3c24197105b0c236ba68de0d1d041c79ea6d671a72675fef1f02cfac807648a220ad78a5226bbb44e8cf4425ff96e8be8f27c5eb8fcef71fc4d070a2a424f3ea4f762b0b159a47d95cb7b9445b7a294f0aadaf6fbf9a6d29faf951d68be41b400e187f42d05bced0eb6011ca1e52dea27d397a6d243f0e88e0e62cb48a135df6cdf6362cee1cec8ec2f4ee6e37ad60a9cd1d03e720f35143009beb2ff63ea668d86d8aee115f7a6393292404a8c96659191eb71ae991cc4fb8682f26a4a62243997f6aece1060729fb57f3e5f9bb7dfed8f0259511f76012bf963b15fb4bca60b5883db74e0aeeb7dbf6037915f2351731a4cf20358ebe2b592b399069c67b0c77dd8d51ca2ee26518bf146d67df707ca4ba39bc6357316a211575548d3dab889cdd2dcf8f0720a680a87ca60e0e5425b8ebf98f9eaf25fa1f399174ad20f6acae21e573574bcd2ea3338e663a0afb6fbafb692f578791100303c15fa28b12231c3f65199ee0d8f31df5502e8b3140e66d01c1534490897e3d0cb07ace58c75362a4ef7b6710aa46a227a48afd1e66485b474100893e9efd805e8abc5822da896b67e1bac966748916fdd272a3d8ac98f48aa59e68f2b29b38985427b2d9d379463c0b472de7807b4e96cd47b6c13c3f05a00273ec0f5ebb975ad109c773f500af81d5cc19b1b418bac52c48eba5cc903da3196e1c213f027dc78df6ec65d554f5520d17b0855aa5f003e343997e3c99e1e8626fe803f84f9c33c7d9e107b5ee7cf1e74b368c6c840b4bea171e7f8a36c0d3f3ca5b06a0a0b60f33936bdc3b506fcfdcd375df5798b1874509387d4ac171917a0e4ef8576879bf06aaeb5f658e4972905b7c7486ac053a5c7b221682c446f7cfe6efa09d4a655d9e808fdf47adc7dc16a6ee284a0aa0b165202ca61e05adad565d4bbd5bfbce6a591fd5dbd0263c844ee6a6d83f3d59c8f7f4613ab78232265cb4a40caea96c831c53602fa0ac69181a95913df8e555aa4a25a8dd51a2ff5498606c6eb9b2b7c7beb9d046e61c0f93253e8674b71da8fa752c5df51dd12a5bfd42271b52b980641eab750810adc5a82cbb5215def1940b2ea5cf2024f723fef541a64bb876f9f16b01161e1bba4d99392d271983084d9d109fcd5baf0d9cd968bcf3eadb2586a6eafbcaead5faab76150d19ab5b04a5b2b12465f73b569c6556125464941fd55495bdbe3ee9453146d4e67292ebeb6a4f2ad7ba5a0864ff7a5a127b6d6dd477a72ad3d23282e800536fb9c704ffecfe892445fd7cfc01177677cc3004cc5f28f37a30df7a9b2fb3100688e2b41e852804a872918e1b3a9636d0610fb5b49665b8abe8bb8eedcbf5724cbbb66a947f793c9e88d568f246e7aa8b8263b4350e7245882db82b01907681200ea12d9ba06591820cf4fa5cdcdd263ed8b2855d31598adf9df02990d2f23330393e3b63643da26a8e33033d9d94587652781f65fbba4ee3128b6630f6b5e0b77e65af0821d87ed41aa875468a04cfac4cc54e997e93a03b9eb6a0ba8465d5e225a2553b93b03f36d2e769a11575f111454b98cb068fcda2817132418f8e88f6eca2693cc4ff060f3fc59fa5b551f673f42b9f8f4753d1396683cd2d1820f32ea2adb2bfe3dac8e5f88593542dfd5a196013fad40d2eedb219cbfe9faa9b47dc8c6ec7d66933d0e7f9d8909b9bf116d4daafee085204b716aa8789dedb25e705c1122c4704ce8d4e7e79c2122b36d5efc5aa05b4a9461a1150b1ad2b9f7e86ca30605fd5ceb240e6e864fa4d7a1c9931f21ad2c28f0d7dd4d256d96a0490688b91be670bedef384afaf0079a5aa80989771007f4dd47d4b3da8917b9a23bd1c62bf1c0efc37c75489662cd34cfd65862831c03efa5c8b1a98110e88d1ac47e0826aa76fd3b17cc0a03eb75a00859266f94c1d460511a5331138c348238b0170a5408d04d30622a3d9303e53eb624d8d17e35e4b5820ffeee4e71413a4854d3f7840a378de977debe27fdc78a938990bf1faf9d870f2391c4c8fd9e319f79cde4d049731ad6295f8a7ac19e5ca423058ddcdb72ede04d21a0afbe2667d1003d09c12616d4b48ae7ade7af1325343f900929f2c09ca193d24e522329b80ebfd807cbe805198a37db17d0528453d3c3f8dac2601f36bb60e3224062838036d5f8c2e98a304c72f877d3ee35b86f5f935b82c85d0f190f1bd1b169845709df77f1a936d9abee03ee1bf225b8836da6d95d2f5d09c161a92e6a08abc4cee19ee2411b0dabd943f40d9f0eba8e95dc3d85569502c1cb87f7d1f165754d4f1f605c5c7316a24ab139732aba051754976c5d646696e60e34976c053d659a140e5691420e4454c5de0c0f9260d88580932d3fa82cf5b9bdd952a3157620d573a4fac02363a771ae3fdcb254440a12e462650029ef86e016895929bc0df3150bccd899455c9b751f1171e82d20d99e1e5f7a32e91bb300dd50e9f1bf83159b3abae7b4388ccd1e2d6ac8a9a398ba666653e8a7857d420a5e4db37c64ec04014ec741acdd6a190b8a291b9a38095e0c880081de3af632ee6ca688a21e1fa3d344157509c4f4a41e1ef6ddd99fb4bf233bf54af35c26dc094bb37a8e859d1bab31ac05b36fdedc237103bba0f908edff0bc997726de5a4e76d25f7534f539c2c690cfa1553b5427ee6fccfb679987d986993d0a40c47588153708e7634dac9c3ee9d6509c446ee39b3643dc72f1202372c41fa40bc76f10b3e8f0915d8ca67c7ad4dcd20866cc8fb15c971aaa878905237f0e454a9addc164b5e9880495283b11321c109600253974a61441853eb5d436cf4f9a46d5b58aa57d588bfa99392446958381b164d240e237da3ba07bda031d481bb98904d5d3d70bb883096060d39af13513719e52cd23bf5d3faef4f5499a071ea97ca67c797c751556ce1b2c2010d008d7b27cc8ca6885e3fe72c844d6db7cfabec095cf53203292fe7e73ac1ae82d07879078787b561009333ce0ca940c16c2c64833554f42d2e3ffe5aef717fbadf0d7d0a54d9866603f7095ebce829ebc7ffe7c197c15b486d321ed88a6cef115b79b40805601da42474d30055c13ba1caee0f34012453777c07f51675583f62801b41d3d45fe20a0bad93a35c2a38510c0be8946cc3a593d1ae75af62545afd1aad4fd42ef0edb2983649e921400372c992be1f1c269cfb6e785b0473d3a93353f16db8dce4bd04d6192e0b9aaf7205412369632f143d6c842e9a49c44fcecbb85583010825686dd69c4a0ad9d012f7a7873ae89b8b2549cd84b93f5e9041c4bf0744f954bda526c82ceebf94df1801c0ada0f3c5b1fc650693428595c2ae7fe2c415b44919c0d00e8fddf20ddba18e37e6b08ba840b2d224d64af87d22bf26298618fa65d1dc452aa6f5becb547ccc67caf305fbd399084ec15c177044ea8ccc6ebbffeddc7108e2cb7ae3d005bed7f22fe320df665c4c5458be88ab0072ec8fdd83ad3e4b2f71aa6d48d592c8659977e9a412b058e845c68ec1de217be2bacb74875c667f16adba27bb97b6c2de458179d454321ca1a2afc752d9b7e91835023932e3e0173d8e482a91ab3399c4c1265ae10cd67b51b9abaf76509ad394494a42bf3e37074639df78b4aa4cd29327e54911bb75666f6b9efa2282d73f26ad7505329bd1580abef8bb7c0d5a66db8f6c67d9be352f75a18fe2834c71f7846cd719b117478fe422319ae21960984cd0f0e4bf81f249fb97adc29c56508148d140838656ec25637ca4fb567627d624485756aed1378595c3d92f2e5b207b977d245227c79429f4c1e33fddfee4c3c35fdb8b1df445d1fdd80bf8b871cf82f7426100b2527e9ddce1a9b16369b05f755fb88f53191c9affa1d14183ea83d5440ac841d9971cdd81a9ab3b90727fdae3c860974a27613e80db7d682ba653a60806a6e9135e0aa7640c07bdcbaf1c94bbe6b530ffb0d77aca1245f7e5b7cda49227cd20de5315caf6006471990edc524dbc5f4579ee59660efe89cd26f41092f207b67db6285660ca94c3d652bb390b5eb5d6d67bbcbf3ef414c90fb031e37d2733316e7c1126eb90e73da160dd08e62ffcfb08a322877668142d017554cdb264d6d7e94e1ccbe242b1b6e3cb57f654d9fdca9bc74bded1869400627439eeeedddad7360baacc52fdc5f9b426b7c8039672bb2f0e786875d2ab56f985c8f6c624ca67b53acfb94ef8981daeae3798f8026dd1c2d9af257d47df35c295dded7f59ea8504439ad62fd33c0f6913f2905177bb0ad754de3d73f65f3b5133acbb31cb3e260ead4bb0957a8de8ec61a5b99a018281d8626bf62ed1f7c718c15e00b2b914f50c0b48786cf8514972fabf1c5942d16985c884eb8ad13f41f92b3dceb40af4775b6c9697c0fec86d8c222da4a73982c3f94e6557e5dac4a600b4af5e346f55859b54d08b225fbb96d4bd331aa08dfb5a68f98a4bbfd732e6a35c6168bfa93973cf08e7d90a784cf4540cc10adc219675873f7c95d5ce5078762e14bf90a01e99007e30ca66190d1a4eaec30dd14454f4ef050c1b24cbbff94089faf4c45aae27cfbebf4269896b9a1dca4cd09edaa447cde78acef6fbead821f0e9325d131b65bee98e965d7915fa9b7dca5c63756d545a70324ad8d53ebd9cf679d297d454d3ab78ce35e544afefa42c1fee974c2ab018073bb667c4cab3071e5b6801b63275d44d43d2edd7c8429d26ae30e5c398d7e74e216fc99bda6b6d8e77f59ee1bc4bacd168e9959bf7c9dfb9aa2149190937c41f35633d4d924acf749ef6424a9647cd7a93e84db44f0119f0ab99f68390830ff12af32411722e9c9f8735665e3b7810433b5793fe34a163c02ec95bcd452c29b55b107481ea155942a9f696eef93ddb8c1bb265dfcf08e983655a2d0bcc1cf25773a205945fe6e73cfedd9be3139558c8af5dec72cea33b72386b446378fe7e6cbefd2369bb4c63915c168545bbae58cae63161fe2bd0e1e60b67f23416a104e29f0d5cdc121829e18f7da77a10d3b51b861e9ee3a61006da225f9e226f641aa11b0c59d1b7cddbb1dde7a9972fb39dbb80c9520d2df3c447377df9c5a28e8b4acf8a3b10d5da3dde96d943d3a97774a2ebbfcfa573bcb7ac5d32f393a2865ec56a8532858f7b69f18ccf9f8052fbe5e1e0724b31ad807a5ee04acb4b7588cbed1221c4dc74f8d5c86217e7d1da78eca0eefb78ce0ae20ebb9a05e75158027835e562b40bf94b0eb29b07cb6df069955c5bd848ab5669a2f8f870faf289672464eda0f2f64ff3db0f7e952f5769446cff9bbfcae8e6bcd85e8a9ced7d39d9d63d0f23e1d617f66f7a702de2d363d2fd1632ab6cce41064f88f11702cab124eef09358f3c8fd0f1a67a170843b130a351cea5ebe6a8d1de9f5fa10a45f5df1cf2bf1dbfd5ff7fb73b52913863e28424061be2fa2134c910097edb78b9798a15731e2cecc02ad42518c0d6db74ee71ea955f9ce5431593a2eb5043dad5cf32395266f91d6e4382be22dcbce1925a345f9c86bfd3c4ddd98d30a09d115f1f5afcf28b55b77df69896b401674299c4eca17b1efa8c6f50ffa348a366466785dfc8b610a809e9110fd8d7cb6e74c170e404ff3f6f0092937207d3f25264328f807947a1b3c2bad9f242d6ea3ef74e3e768dcdb6bfc0bd487bb0939895992a7d43dfb1426275570b4da417ad84c94bd57b77acd5638318ac7aebb9b7f2d9e43f963f50186f1c56d1686550557df2541f87b291a031a33c1de6d676875b5b356199d3840c9a92e82958feff97adfa765d605f8636f69da9b388e6e399ed1a544b024544e69018d4813a7c3fda426e1a6d395559a53c95c4c0eb6239a9b45511a03c387095e0d1f9850102e00bf75f000ec7a02191b7d0686120e554657b0f1a92f6bf01c010456f6d2e45d936d1e24e3bf9fc90594637088186e08ffb4c904c7210e403da82e2263e480e081e8691ade95b5e16a739da5bf09715e65206e21ce3fb235e52cd7628ce99bc3c858d0872bc416cd0894e6ba471301d6c367b540964f3ec6e9e12b659831cbf99fc3969dc83ba005094d2bf7adc45e415e840fb1e271724762e43bbd613531e424942d96396ffa92a9c865130bb8527cdd5242c8e6268a4cf945080dac83df257c53400135770295d0a21bfbf03d8fdd76ab3044f90d0b9fd691765370680e94a513e8df47a71f87de5c34b4dce584b8f37f8e0d54ddea283b72caf5f1845c476b087b08fdf81bfbfff555b372bf54e65e9cde5d7cda51690f3ca05fe8a70d9116b2d9e7404a0dec3f271f9b67a79163ccda9791f0e3fbb77d7d1f51d8a2c916b8f7f11d979abe83cd3885310e889050cd6cbc87043b0b0ff9a2b6de40ff7eb7aecc7c544d6c52261c6e93c53eaaf53da6121407e2daf04785ef142d8e0e4f7bc9f4efc4d05d7072de39aa9abec618dff36f615ed44883ca6cd57acba98ef5c6310b6fb650141c6750953364280ac12be73c4be69f5a6d17f45c4c8ef49cad4d2b1108bb54a7fc2cb986f9facb9ee95286a1176cc55aeafb4066a157771e6aa7127447909ade6112d317447ee9bed9e58a24abc4d10ceb8093f76f773410943c6a36616cf26fafe87e77db408b35c09f57c03d3ca6c033f83f3203846840f92e59cc4b72003d2880d9816101c40dc850830c9421aaf428e5f15f082329a44a131302636e278e2e0534000aa1799571528180056703b1960e14b19e69a53ff0f68cfbc6fed6007ef488be373fa9da093e997e29bd3323567ea3c3658c7a90d8d0011dbc44ed51acef4f84782a3651f28aaffc667a17963c7655e6e303e98d660dbbd399a91cb844b0c4cdf9032846fd6a437474f225a0199829ad0aaac98ffe23f7616da1cfc216b5327f97df88cceee5826c2b02e359369be50d6675f83d1012b88e9719fa898e2cf04e7c9f7b1519a400df427e3f22db9bf7df0ea4ad68ebfedd0c9d08c13b29dcbf0331cf5a2f254d75510196525a57c00148f1ca4a46bb01bc4d66ca9ba9739a7b2d6be170ea66df088dc2cb70ffc9b48cf49c908b1dd7fc9f1293fa7a6e3897c4df01f1a64d8875d6ac9cc9d026c74f80cb121387489691ba6e245d2614b1391023c510ac2df1be572eca793c16e562373d4385b1227c0237cd700cd674d93983f11899a222cf488220931cee19f067a70bc85dd80586911fe5af55c20b178c722bba1013941b21ce58e215255f43c05dfea67d55e905faeac492d47b7d962b57ef4996b97cf492c838df21794bb27b053769bfc41d72e2e0849b53c63e4aa0f888a12fa02957f3259276340151ae5a2e47ac7387a73784c74b81ed7ed4ada1b9783d1541706711fcff5f8580a310c6d706af3b38d3574bb1156fda48e4b300aa7aa42ca9b250e2fca2976b08ef32400b03d0b85ef716ae2e6026c466ba720187d0bf3ff2b589b0f13ef6bbbbcbd2b7a9da65ee8b27e38ecf16287994e61cf82a1be143316752d58eabea3885b1e0fc0f92b22083de2d025fe4ef0f668069949945ffe0891cf324f45dbb44516e837e8fa84ed54373eb7ac562f4c7e2bb38bc0e7aaa9efaa75e9006d2174d36f8bfb746da33d6e4468886db05fc4729076e9f22a0d340e956ce5a5f9bf7d6ae4ee275fd299f29a39106f72e5ad85a762eeaad5cd5e60c52b448e596421b04feb767cf043f2cfd1dec9af815bde40fc55f7f74969a415c0def59f20a989af98cab32f6e2b1afc51774e1c0c30e2abe90214b0ef146edd935aa5a93fb37a61006f376993113e87cb9450a26b8314fd1d17bee6c7b45b64f195838fe18df071cbb969c5db1350de17f74abc717d6576294d2d62a7685ffe6424c7080e93ebd0bcf6cdd49dc8fa56827a49fd45e5d2d53afd3f1d79879221a7f06621f0128c2f1a6c109cf59bf1a8a056c98b9466efe0eb5819c650d0d4e67cc006b86c2d3886c0365f157fef666ebb2f749e0cde82e01da4b93f4dbbf88c28244f0209d8e19048e405abe0866fabc6bca7062f477f22e6fc4c204b14f3f569b3bc05214a884c3b7dffbf250bc240ea0372a36c259f778a842d3367495f280fbacc1f6e497d7e56f13626e9ae90789a6fe8ea948203b48dfb9df65017adcd14b64f7ddd10cc2be1177aa84f3d327d403e866794dc1033cc22121c6d7d77b4564994a5b6cb5c2110b6b782d21defe0720e8d35839c9b51a873720cc823d84ed0800fed11df146d7a3dfde5d9168e15be89388803f12dee46012961d89c05326d9321019f7b41e29d34cd7427d92bf4fc6ff423f025d2f0db94ed68112d2e9a697a9861bb310f99737bd3ca109e7f3a4185aae25ad355c0065737a545024ce342059ce0d881ae6b14deb0f28962ee064c24ac32db7d6bcb3e98f24ed904a311384bc12634a30a796da793edff88b55c9677b1942c826902508a99cec4acb3485a9c1d2fdbfaa4a50426973003ec04a5e99ae61e1d66a65ae7fc16446784b1542d5453ca03fd3c16cd547023c2ab172d882705f9cbe89b4d2f6fea012943f722d82fbd1cb27269b80b1ac2a353403aa4e5ec06e4376c0b587c08dd0eeea98545e5090f1aaf5d2db94bce8f80d19a339eefd714af1d92577b094a37a3588b5572931dfd12cff4df0e63fda800435fb613e64af3c1262628bcc48bcfb1dba92804b633bd23887274ec8693955a578156dfc367539367af36a42b96795a9d559079255b7fbfd8af4b4f70e87d3cf0cdfe43370f1f332e43d3c037eb577329f413f2bf0e4e307ec53e76905ac6467c2b09622a960bc220734a215b904f09f4dbbcb7f9ea1f117b2d7f64556c9a8d219bebc5db737df6ab70d6dc8c6b67d9ab2dd0b1fd5447d1ed1e3e617e956f19b844e3d8866a0d99c1bf2e8b65852cd65c952aef5db5d634371eca78803a9c679417266a9ceccd08e7121bcb4bc24ca6621d8521542802d170fbf6f7fa7b7be721caea318bc0c5b4932aa7bcb0e479262b7de52092c5019433b931f13bd03a7f4d4206441825f3a5dfd1b6845cea4ee2c88d9f64a2e1793eae1597bfd4985a06c0b0f49f47f890f28152c2ccca16629d55ce988cd8eaf8e00bb0c07b3e261fcae8e8e3a2d4a2454a1ffa7441973ce6cf2422f2dad1c3ac642a04c2838edbab0bd8bfbb923aca596ee88ac014fa173e22c632d7b485bd0b04a1b6fbfc3a64467de97b30174d0b13b488b1b97b54ccacf5d71ff625e692cfd116eb004def2d4cca3e9fa2bd603fd58664da3a2ecdd6ded9a9660d5910084b2de99ec79f7098b80e0a97ee73030ebbe12700dceafc075f16af2b11240d0fd5512242c264928db659a819560e45cdecd7a44d47f2aa562b27c14fa47c2194bec8bf084ecd3a739c308c3d5cc78ff21a0d02ad5389999d853932fb04fbae530af248ae165277a9dd0df892c4b91096273d399e97796296ccb1af88175ea45be882b5a5ad2ea106f1da88cae464b0ca38b5e5ee578f63a3a1a3f4f9ed087e1ac901a4ef97e19103e87a90b21f2d9bcc23d7622dcf1cbb3ae05b4c600580d61db649e01083ace78976414095afdb59485f973af1cb765404f4d8e4e275ee86e2800a3ae326185a967776a341dd1c7a3c7100e4528d7504fdea4cf14c7da257584248ab3a97701e218fd8694960fec6371bafd12c96f6b530399e9c4d1f8e40fb97dace986d425cfe6516823dec7611f65d56d0ffe85ba6dd83e7cbd311c739a405eda66840e1b1a8205684f3dddc889dcb3bb594bf0ab212f2f8b02fcf079c73e580b37c52e6c8271eafec1d936da31e86b65cb55aeab01a71d32ce4722e117759e658c942abfa84c0ae25c135c89678b5b7f896f7e9e246132e0252f9bc14edc4479695c9cf0480fcd5624fac7260e4373dafcf51786cea2ff4d7a6955904486d1e0c9c3db5cd75b2174b75ee525e28cce088f1590de39833c30bba144ec05205bc52d6b00439ab5e5e73e135357796fc48af24f2a0e9f91f6e54c1ae09dc180fc4a0ecf1280c6e8306a990614bd3769fb3fb5a932eddc3927c34073d9d5e7433adc183a4d0e2bd4b5f0c6969a824e1d773d5f6b63991afcba73c0d843f1363e8435ce3ef6e336f492efb2defc47f46206e60ffc1471c77915f1ec425ca6985012789aef8ba63fadd2ccb16d1fcc32d0e9cfb3bf85fb43106458ec3da3ce768104ab9a8772fed68d1865492210e94e42c8d0fd1ae8f9b9e73b0f6abc4372680cc76ecc0448d9112d75b4c010fa1de2683e02c388f681c31d82bfa1b078167ea14c537dd9a559f1c44426f7115bbf6fe15cd7aad3c8096ef85f5c5e35784b26c80289c202e5046ed07c17ba34b493c60019c756c17ef9a77747f3460e2cf853edae12ca5eb09fc040bd7fce5bb9a543e8d2cfd552ad218b9fff2bf27ad93178c5c0986e45e4ef0ef7473e48e80e4f222fc6db3d988cc993aada64473ac2626d0f30b934846b39141fefaf51dcbbe3084aee6aa3c84808ef839ac93ecce8458675827a59ed50e22cc5fc5005214a4765d9c3065972818ab31a346d5cc9dc92eff55f0d96682fc5a8624a0eaba7277f4cc1478212563c153b21469bb747cb882c22aced139fb5b22d19f4d8a927cfaa9b729017bbe0c2d1971a74284e82e379865827db6be18ce4e0f8eff51e62856ffb52ba05799d40f458ea3aeccd911d1bd73338c91eb2b3c7cc1f1dfc95bdb97edca203e26a8b0a2760889c032295a327d808fdff2890a51f097138bda19252cb7a72e5a6d320a234fb87a3fc809c5af5b1ec92ee739a0fc8e2c2892e7a0cc6b307e8784a98056522e65c72555305dbb2abdac843e6d97efde5602f9b99b5d0a98a386e37bb52cf5fe0435216ab85c73e8d1abc02215e3231e4c65b93af3d8a7ff8550b0282e33561379621643a9be1330ea0317fefb8e5166fdfd3efdae1c4244b677b9650470c0115a0c9a7944c67f3a8d9d90b1054279e165c7e9996c42be9608dfdf788ba105f1a4417887889dbb6e0c19871bd04a5f0ebba18fd8778263940d4f98a6e244fb045b9d2e19912f7382a5612aee6de40915b130f9aacd205fef65fb6ef0f6d9fa1a676a7030bf8e742a9809ffd5359e432b45a962f7938840a7b2827d238ec560a6592fa316d389315b11a45cf0df761b09c013fc32d0017bd123caf93635eb0dfdcd7f621f628e3f190e4cee916b48656de2aa6bcc665ce9f1e773a6fa2bbae7a38a19fd3a529ad9d99789335d879737b26d6d4866ad8245e3fd955e15a8f157abae43f55845c95c73fcd0ffa875b66e717aab9fe11925af4f2bc58f5309d2cb1b7e1e829a1efecc9de3e9fb36a77028394f557138d8972cb9197eba45d9c932729f120d550b444e0364a6213a86214850a9153328518a2312dc74f52eb0ee832cdcd6b6e4b9c5ace0797442ad2b2ef68aa9cd4eaceb77e1e55e596a4359bb3666b693cf4ea8a4d435817e80f9f8561c2fd7dc9d4893901611852dd636d09dc98465845eb4b48d59869541d4ec4f3beae8eabbf123cd5e560af35f0b1bf2d83cf40b159f9459a3f129f9ba8900e3b652cf53d590f265a09abaca7c6e8efb1e95f337e680df3f39f52ce68fbfef57758c78a832b2b0029ebce5d96b793a2e135e71014e24d810e8e4c06adde99d3636941e768a032d1ecdfe22fde13aa2379222f856e761c7b1b3e03c33b04f4d5ec0a7d31f7624633daf8465b9e1d340333af3aa4b80417e53592fae637e8d257b71cac6bf1b2aa664b0d5144ee5f8f7612ce751784085a8ff5dbbf8e25f120a36ab43983c641d9b173e5eb5c19274cef06b9676c1301def8d219387b92ba2c0181d1ebe04ea7b036e6fef20aba8a4fe688e9e901466b1ea2a0d688d6513d567600fa9f82129b257075e3b4fb928fa54a3ab1f42eef01be6daef11d546cf953d3860f8d6961da931e7be5dae3ba37bde589c40a4bb5beb70a2be072284f1a4b516da624b3869388784614e0b2ded42e7aa9fa8a368f2e2c13e39e9200c7f14e036e70150754eabb495fa700a8378fb483c71056dad4577e99767fae79380cd1f686b369bbe49435763070630c4fc6809b6b289e9ec5c55d4567f9e07b5d70a31aeba246480d7b5f7aba5b978261ce048d14c674bb6d1db1d4984e02a8d46dc7f6b383037e000a98462f31582b837cb8040155baa3ba09bb27ce1ef478142a6ce0f2887dab09d3c9dd1e8094357b3271212981fb04fd0db423d4c9d6006dd9f2c859d98424ed67eabeda66b5472800624665cf754bc3a17855d7ddfd291c7533cd54896965354f5cedfe272c9e0e40ed2915d26ac04977d4876b04f39133a22cac00df7445dbd1997136f3a984819f7aa09bb77c0e3ad6f570564addb994dc0b243f5f7274987d58d51e14392da88117fadd2b5801a05052a96885aaf072fb3193f0c16baa6f10d92b0fcf2ec6432bb7e4f1232bc5e9988685e28dbe7f367d9efc32f965a49f4120268d50f5afee8eda890ce442f7d43f83df8935c171f5edfc9b79cfea12e3f2fb6cc9b46b0cbf8af896c56c39f0036877a244c2adf1a14ca06ce559ac62afc20cb029ba623a2029f480e4c8d09f0981c86be333830072872460f18f8100ddf963c2e3f250e88b77007c90403db75a9d1224c109b1b8707023069a36c602e35b44f2ce61948567b65904d53894182eb76ffd2020e334f527a8800928dbf9b1195cd1fd5c010fcdbda5477a80986baeb0b1ade6d6f79ef6e2d993fd6b6084f67c40d5aecb9862739bcbb4ae8717947c84af2dcb040e3ba6743e6da3c869a27dfc1d06a9a89b054ee0bc0fea930f154371a8c463c2767ee3f383546fd601c957b83ea601e181585cf5fdf2bdbbd53540a1d422ac56e9e79135be35378ec5226a8f1bc856031e421cf61587ae71035543d236818ca83f50a7e508cf8c194046e2768821d8805afca314db969972703ff79b5bd8c2e796c41f88f006d7808eeef6d3868f6fba9b012cb76be0bd283c212968bb0446d86e72514e28b28b8bac6075d2779d0aa93a66e5cc280cc4ea8da63fd166f2bc5830f4ec4eb8b6db16355fcfcec57e84f2139d5552af4a10da0f2bc27f7cac5cf6fc24a239c5662817c94b0c9b5c92ee712f4d3e53cb63c1d79dd2d3386eb4723ec134483bd70f075c6e6a461a210f7ab0acf1a7d992c14d0c2969b7b4cd0befdc1dde4e76914e4d0c35b3aeb471626cc1346c0a777f36702124fa39089a3f77956e0f76e910706743a046a502e662c711702c0641f9c907c8288223bafdc0e7a3b73589677c2299db756628553f854df671176f270bb39ce2e43f65be432d146a1c518c035e669fe08a4bc6aa6cb323337b0185d5b485f38b739c34d845f58dedfaeffcf34030d0cc19b3c808c5037b41fa172fa654a285dc32dd91b9db08d0fee0ec03fb5afcc4eb9e04b895fa3bbca9b15606428d8f8757c448350726b7ccbeebe8b914cee78e68bada378e99606678c26d071d16555c10d735755f9fe9d889f11e49a5fe4312e1689d674ed8e190eb6dc4c24a46371b329fb56605d068a2fe9e3c9bbabe0b1a0fd0aac8b9e2a4ed040c94b7e742c833584f7f1b07c1bb4cb543dafb8c0b161b028b080b626bf0e25372ec9bc2b4437e957f83f70697921269080cc97804c314441bf1b2621a233060ab7ef7c48e6dcf6e0afffdfeb6e4083ef2bbb94a4c26eef383dad681f44cfac0fc1ceec5ce42566e0ae2fa4fda04bf8e62978f7378915c8c0f1e5e0251b7300fd3361448cd493621b3152db4c1de32f90b12f5e180f50f4cf7b5b312c5d372170ea666a1290ec15dbf9ad69bc3cc5002bb774d37da325a52276aab3a18a0f7469aad2d6bc0150f46e401e54e455d1ec98ecc5dc6bac8e39b7ab08cfe4c83540cbadce7a6b44c96ea3ac43478d3fbe79df5182873f2d69b2505c3906c90cb73bdfba99b4961175025163287036a32e58a955af5c289d0775f79015e11a156a5cd1ccbe1bc47f9783d122a99b931f0d79c485320eaa0d549775801a6a1235dbe1304c694015113b557f6f352a0a3b5a84a3cf60a21ca1c195d903b0d4e3eef6d372d7d74eba1133f73cd0b8c53426d69fdc5005dd2b518660f71a1905315e7d216e9b2fe679469bf5ef1abfef624e3017a8b741a75505d722e680401f96728820e03b32582aeb2eceffd0256e16c0a6426633ea416ff91f048150d3f51cfaae72e84b98f53c0111d1db8bec5485593ffc18f53e2020747368e7b85b2fc67b8e358b56120131eedf5b7279f6eb1ccd040fe43f256363cda8e2fcc14d3b07e2c5f7317732611d6a2e0fbbe8cef7f873f14e9409420f09c5e51fe62038bd48f5aa212582c02f2bbebbc72fe6c2fc6cf07173162b984235298c91901c8be867a6446018bd3ad3185305364ae8e1eb7fa0a961fe208ce0deccc57f2a82a763332954289f278565b68f0be80d8cb7496be0e24eff5b6f6550ce287ca7a927adf1de7696b05309c96b07647a7f61d0461f1dd5067621f5d4ab2d2ee13d8a94aada10abc829cec8f3aff8f26e27c85b72beb6aaacdffb320162b37428e9def8fb9a7ac14c491724a6911be6d894db7ca71eb3f0805dbb0ebabe260a67e85a04ecd3a48566352b58f933c0caa6d66f1c964a40da9136063ccf59d4342c3feeb058980fa7bf759af4ef4a3dd9d4021e4ed0010782be55792b31a3647754351a9cbcf22cad8a7432cc789faecf3ab1609a95344d1321c7588de76102c91fd35586955f2b8041033622239003f6f981c0bfad8ce804c73ed0490628d13bff6b82aac04e9050efd62516198f5d25c99310bd84e100d09991c31044e6b38b1b0e70df09a4a2e764051990d3a2beec7d0bbb3662c4a2cc7d3a2fe3575a634f8b1472b51639a5aacd8da52f61e2072d3b941d8906f6211ef8d61838cd97d4c58c9803020b5ce1dadacd58ff07fc47c69ed9f51930ef4bd91fa90f9f9085ef79dcfa7b8bc04b81dc2109c0ee7fb35930210ddeba8b586ace39183d02116095366f5bd3c62fbc3a8e59eb0055025bd2189b64d92e5b9115a1212c05ea7337f7046b2477d9b357c9fbd9fd01fef06040608e98f024ad2cd7178e163764056e3c2f387f2e51283a39f5202f2384e5bdb9106165de395a709ccd51a5cd70be3d7981e8dc0e447b740155255786f88f85ba27320cccd21ad7f8aef4d13f16772ef542006e80ca328aeefef1ace71bea5e534d51d41de3f19038ed6534617f1ba3c1a1e1ac520591f4dce1584b06aaea01a8d2ab844fefd8fd4251118cd2c4054da08ab8d0e02176a143868db39c7912bcbd91b2ebe0de11364d18563b024470b63927ca5b460edc6f8ef31d48e972e3f099885559526fc3855cc438c7bca5ceb9a37c788fa3cfcbb448f60fd3c69e8f92b049b323315a8de8988a2c5a4df6bd0438e41ff471acf8b81711e00055d0f4aea29b0322348091936f49fc422e71269dba5831d3e89cc13885a2bede30ab47e04ce2153468ab076b85302e7249e21b5ad0d191be71b335e59909af633d08a7d9252b75ba6cbad18b7984b800c9be0367c52754062d6fdce347d31be6fbfa2ee0ecf6e419c046aec3772881a577578ac4a3395843862a6f4aa53a0aa374f9084ea81a73391c1898149bd7ec40b1c6fac5994f37d1d81765a9f685563bafe86411f451cc09e3f698352038b653e37b9f90b0f32a4d247e2f7e890a4a31bb0f3d2aa05cdaf99aafd611683260849d86eba2d2ba481bd12748bf5ee16a6e4833452f9fc1f37e7b59e947ca35da1e32034f4b22b882e38435c054a5969cbdcf5b6bc944910e9109329aa93755588ee64ac32da094591007c7d19a045e88504b08df37d4c07830c49f02bdac65f4e6b3c94dc121851250352c13e1b695ca397fcfa9ca5ef991dce02da33f7488685d979bf2d19798901708904eef73a292f2d1b18267f2f3e31a1893729d39cb16cc7253d2ffa418a61ba74fad7c2b6e39d6b49dab0818bdbff28115157aebc79c327d8d783d84f6cfd98d6fdab48f13d2a59ce8563ba279377382dd642b6e6e6532432fb3533f7ed20fc0e0fbb86f80df048abe48a1cb86e52dc609343d1e6206903777a45d35ca9b400e88e61de21829fa21ca2670a50f73b54e96b9ed2295b9b8d33d244af1b025336a39bd6b3fa51f7556972ef2d57139248f686aae900bef37480aef5e5027ce744b193f9fec1463c39e72d904a70bab99981218a75bf0c53fbddc93b0f850c2d2231666a9f5dfc019c0c64a98644d69b2561f0f321a66372823d08bad1fb9a5dfe36b9aef77117210263b44330b280f17dcf9965f97bde0e992f56893a06d94748f63acc8dc447722cb14c16f4633c0f0bec1a56e35fca5a33e0b94f762f6fb2ae2c0f902e41fb031b19b487abf247e69859ed25920dcd817f2f0a24011638ce10390a05d7e13b301ea867d96bb721f352264914850b02b2a23fceb291fe9af3d4d45650e786d79b92fb16e970a3c8308819a8a1a5cd67a68928d9c4320cc8c241c61fe3df304ab670d98b36845cf471c233a73e31ba0627f7b8a43706e8a9241b809cc87b20bb47997676d865c6bdaadcbaf1f681bdfaabf559b72692088f884474d9e7c33ced644b494db837613307d3cf9ada5dc7bcca12452d33a50b261a0d2fd1022996c1a80f44751851e90d85102ed8a47eac2383d589acfc1b1d40d8c5959307066d64ec9fb1affc4c2f7657151ffc633ba5195d23d14b732799b9e03f8ef8dd408935d2079ea320f8358542cf215a7fd5fcdd242003e1d95917b7b041a7aa9ae3221c669afbe65484f5db6523d3d9e720fcddf93388c064723fb4c52c09095d305f773eb8d0caee35508edb82850e50e6fa2bc6f0ed45c756a14ddf4d4790c0a0e6d13d358d1f26bc2dc99b863e5b586bae9dfa4e8a80da4ddace7b68f7abd920b1eaab1e14a8afecb11ccae8313c640b50b2fa6ad8f272ca45a0ba7ea61779a8d857ef84f4ec5cc13a9227c40de02d66c1b4908942945b85cf2179a263df9c85ce74982797f469b53823e06c15eaf97cbb9850783b897c733976da55f689eb3b5c9460bcbeaea465cc668b7f7f8fe06fbe8d4ff029fec2e4a47fca4316dcf69538cedb1c0c377396443c3fb0e30f95996f99ff3bdbd1b946b1eb9b76c611dea49e6177bee4937f7a594b1c3e5ebf5fbacfbe60990d066f514c90bbfd9b731aab054d3ce98162d954e2f6b049c41490a955d190c282d7420cbe1cbe50eb548131dc461f9dc54903cbcaecf382f11c6da8da293e93785b939c132e31454fac001edfec6ab69a6c8aa0cfaa7db260a9770325b3f32358e5d37cf158f7a97d8664461aac877c7b640b1fb1c78ef50e98d07bcc98d9ea9b0d167b86c880b725d862188dc755731bfffb711eee6798e01718f14dce8871321a7e7c1eb0efe3b4c7bd2f7942226fd7c213522dc8901b061ff29b965c16a56046d2c99b0f14e31756a0159a24225945cf2391a7d941662295cac6cc3946abb81b77d8a5f343aa61c0c51c1beb677fbdaabe31eb884c829df5123ba529fce81e4c9750741ddc54b64f3d5ddeceda4ec5f8bebfba4652c71d9664d4767747fff2ec0857d19ce3684e88a97ed5fb41a7e12441ae27aacdca30c0c1cf7a75f8b51c17e6f7cb54699c70313138c78a8a75b6a9acc752804745bd04736dcfd46a59cf520cc2c64d53d186a4ab94ba015008f7f4e752d6f95169c6d1e77fb7ebfa2ddd3198716da0635870e0e6e200e643ed85a5818009c7ae72088a26ddefe2afd493fbc6037361cd7c884290b9abd635c96c8dfd163371790b8b407dbf52eff54403f6a6b69236b3fd950c5ddee2278ba3f70474d9c46fdbdb1ce4936cc78cae8c8453d8e1950d1cdb0d65c23d665119d6a32194d59f8e2a157defb2b08fc2521a69593064eb6d1a308dce994322defac650fa027a5d6ec717ea299173f5a8708f52991e2fc6d87282fceffd68c4560756018824523d839e41f0f478d973ad0cc5dc14c87b2039787ec3de5085eac11e6232dbba39eea2fba075341d43baf8c3ed4ee132a888dac31774356392aca06d45a88ef55e8d08032903665679ce60c54e851eb596af8e15778bc7eee6ae503776a5c2bff056e40916ee5167382d2e9a9a6583273af479e702096e7a049180becda02cb5bb0d7aea28f75875cf2ae0ffb082d1c2bfec01bb94b95863c2a538bb24f8075b721ca893104bdcc38de921cacf6af8109843ec8b0b64edca10536882d105fc9743457d28ffd488052a874bc42d5a36ae97b2120994241102594ca502720229a88d1eaf411da87a2a9754cafe8a8688e79049f79f9494447114869524ae8d262fdaefe2a9141784f6e503e51ebc4ebf6bf4661731d05bc0420185334a76e6be0705e17bfeb516f6a8a1af6cf3d0cade292ecb65e94fe4543041acaaf321f1f9d92abe49481dbc7c615509fb3f4c1fbfc1ce7ca0ab197cf15e1ecb2874324c493ab4a9ff8b8ad8c7be0992205cce9cc055e859ecb0a9d480ed0f3089a164fdff812d7fd4179f36f00ec2f9326a138cd0cacdabf74fcea635b5e60af444c9014a5b6215b48b19fa16af10bf665f79490752d75f6442422188b0a0d693e6800fe9298cfe7fed1e956a0d8ebcc6d722701155c64606de76bd223ca2701945378ab604e4801d14eda14a241240ffa5efb6fda8a8fb9f3eb4e8dd286aceeb0d9b94ccb82f4078022e70f19fe427aa3282fe9a0595cc72c9c933dc09caffc392a28c8a971cc4e5549a0323296816426e2b4adf742a522f1a83847bd5b78c1075a1040016d36fe73456c9d6dc3077b45c3a2f4ea1000dafb8377ec55886beebde081c86c5c3504f89b54b172f4fd154ca51356186354a697e4d8e88edcc5c2531bb7cf3736e76b5854e2f728cc6f0c3f869781a42fc2abdc4659aafd83262b61c80dfb388a53b6347d0a7a4ea1fe31fe073422fa3ad80046689dda2b9ee9572b8d8f7ab1fa890e4ea72a5884fe63e8f3f0f41194a11a7653cd362abac252d43a720a1533ba1073ee6715b55221c46e73aa0c3f7753d957413df88f82778768bc63b96ed515a32e69d72e46f57ed0d891c384e46a9456249d425a6e0ebb59500daf7c4cd1e83f3ab114991ada3abad7186e7ef86f7c3d70a3acef50117ce2909a8ca2d5ee2588623bbe706b9cb0f4be2d0003f272766873e00eea333d21ec76aa903f1612526d4a837b1987edf0c76e6a746448b5c1f7f7813eae87b1022d88be391744970730a593739a294e3bb30e71e82d4ef6f2b7a526d978627aeb5171fb6714881e74ae41e3d50ad4b2889fc1761ea449f570d8e3bbbc1292119ed8ba6bdd514eddd802c1b1510ef52d02e2bddcfcd5ec80f7f1ca288c957f974dba4e01c3b25e890b7212d09d61f482880e73b20c3d8fea165de1193040178624e618f1270b4078f5a90e6af17673152c9aa7e6fdedca5db1d89b3e515b26f4bd8b4c6377d8a79b1450ccf78a225500b54db80020595f4f7f80dcaee12de11ba935187a088af899fbdf87f62a575e401d886376eb9a7bf08d13eafb910183bbeeb3d25f93591060cdd9386a96f281c61351ca157a5cd255b98a99a559373a1384d6ea64b2b3ea2fc6402e72179a29f6793b9186094419cc38ffa349f46bd2b7d7f723356830d65db2694c6cfaa60d8ce7174b987bf5d5a510e162e861acce2d4857e9d2961b41a47419c63b10236e2a267797efd6a29aa89e7d6c0763bae544ac43c256878d5e3481f36a492fd5becfb7fc9ea6c52c142212d6ca4f02611278cb153168651326706238e5bcae5d184d4a81d7a015d38b97efc5c68208d9a92ae2fa8604c1e76f8836d4803fed62006a47053aa53875bef48c798145853d2a77228f766f0fbb2f102dbd5552cbcd5ac3487354cdc5622b199534d6504c10b3682f486f18270c10f40ea2efe22e16969b9d32e17af5bb3ca58a683e0874ce59e4a1af0bd7c610f02bb2e8cc527f9f64c2c689ced02862ebf23e1bb257d794cc3b866d1c200b2e06ea86fc4e972b259572fdd0df9f5e78c037599dbefd96d4f45ede221abcfa00a9010dedf5702337dc84aa7452d2bf7356e8d7904d1493178ce61e140817fcf600be5c5c01fa5dc6a09eecc730a514bcbb97873fd6bff5d4d4bdaea311795d7624679dbdd0f550c11d1417a73c694bdc58b78d41f369a855e9056b9c6c56cd9660428ce39c5b7cc06a0d30ea9b18f6423ccee17396d1daa852e9254c4a6ce069b0f0fdde6490e0c23d1e73a7b0c9cc92edf8ce3e55887fa8d97a226ee18f8ed3a4ac542d28a582fa77e8ce45c7ea27832ac5732c8729ce0dc46699e5daebb3f23e0f0b37c8b7eba8cf91635f843d85502fc745cf30b5c395ef313848abe790197fb1301e2b46a80b29cd0a743cbc08bd6c988bf8f4fd9b357dfe9f38a31b4856aa36e4dc79dcca5870f8cc6b9feef6a0cd49e13e86065a5ffe51e390c083648b8809ddb3930867cb065869e961b6390beeb5b6d45280485656250c5d8a9a50181d5de4e810e617c014c9d36cce47dff1e589ceae645a6f93c19a97a58124db119ccf58d56ee777e1525cb14568d59b72894dc0faaf741f3ab512f409f13bbb0a9e64aa443fbaa9641c2bdd550a7142a3402e78e549196b9c88fc092b259c076cd469df227545d255dc60e6a32bc850f2d8d1b7b141d2aacf1aacade55742bb5dc03f117b28ca9bf427e38fbd33ac6117f2008e1e1690f650e6b12e5dd839373f2eeeeec56b20b120183b4eea08cbb893e88ae71d01dab0b934afccd539d0c0af77e237880ce346d6b362ce2d4297bbc25f5ffcda93eefa8364643b5f937dfe26ce334341591e8dba7de16d1aa722747acd7bde105d503bdf72c3254f1a847d1d105079a946bf41b87633bf73e798123ca9f5efb093379f943b25a68ba1a92cc5ea01d9408e911fac27ce09a1b41b66f4201c68d9ffc695fb205ccea5c774e0514a57742da01467218437c7efa6fc674c7566d41b9caf4ffe0d4323c4dd06d2d15a0def6982d05f1eb88a26a698b4ae895fa69313a923452e04941c5dd1021d969bcd0544f71cd00033778ae56083fafe22c0584c2d97b2e8a745a7c1a2f0412bc7b5022b857e876a813e0a5d1856ae0c2cfcac781bd1168b7c6ba3773234a3e1915a48ce39d6d53dc875efcb516d4eb15ee068f8983db2b7c29867646ffd0ae680b3ce8b42a210aaf2573954f03f06aa76613faf1e470faa2a123ac72f8f24ea5b249c2eb4761048e5451a9d854223231b27322b6eb9779bccaed8033fd9ff5cfb2650fd1ba7b24648aa78c5618e97f8878f191b95d67a371925f33c6aa9903375ee9c18b4d259a7bad66f26bfde7986ee19211579d36b20b4a4b0be95a62f41eabac52955a6688a8098cde5b3fd8309f0e049ada5e6e1836a0a263925e01920767b26617fb0c98bfe329558d385928fd3d8e4db56f137bfb7afe3ca40fbeda903caabc41495692f94267d35a9d02a7859971ab4f90f0b148ad366dbc0ee3000084356ce9e47b95da7aa6f977805f0844e85666a9d0cc26c39dea6c5cacdc92466b9be5a39342ff0f2090bd0e87e2e7a407c19ab0ec30331e24e895268588522fdcc8be77c68c34d6a20240a8a29524ff6fcd6409703382a96f46e03a4e894c5a2f8fb2102df721744123fbc5b106fef8d5d140b9c6610781532a42cf4d90ae48c4261c55809bfe4fdf317ebbe07ba8961889f4493d00095016ff0dffeb75f366b58a0c98b952d106b831b3c7e4a0e721627181a0d1bbd6abc850ba70059f0bfb306b4e18c35c6932042eed7d5e76991775f7090c874c37665f1220e60877bc7e3a8294a21e097f5cf39e71ca5146d66fd9971bb0e90d1fea6bb54fe3705a75fb766a2e7299c314463738f2134cde09525243544cea36b5545ae38e8e2837a7f99d054b560682a23ecb1250737b82c0bfce2ac3f3199572ea21854bed0a0e1aaceb38883e53a9ae7b7521d1cf9e6dfa877b41b55a77c2003a68da7bf31182b2b1ccd1c0634659fc41a4c9cced9e12c898c9098349e6e9687c15a201240258ed7ed5603335de2d907c424fe6e856b69ce15f58f5d62dd4c2ef91c242d3277a16d3c4ec0f09d36ee65ad6551c293888f03f9a94035e2c619bd2cc50c142039e079b6afef14ad900757f778d76476a4bd0c25753e6d4d1e98f10c91a460656a2cd0eddcbdb25ace5183442088fce01fb5a74ee8f1b9ca36a83571faae1d4a2c48948bcf6bb95adf7e3f66ad8d3b15305e7c8c0c15d9bd41ec63ff625d71fcb85dd2ccbecee254c241196cf0c6b2bcb940bd345239e857844b9c574eda17256f77a7c961d2f19301d673685e45743abd0b589ed5410b6ce571283651c3ada0bc05fa4807f240ee2577347c4cd1859efd10b6a7bbe562c2d94d703d78a7ca27ba5dc22252c2a0c10fe87efb3a6423a5c6c60c25233053638291fe59cd8bebeff835e3728766861c87ec81bd14aed16b19473e98ea011a95053595f2ce682d8f5a2b921e02188a6e9dcd53e9f68f40c612d049d4538db585c8f5515620aad7acca3f506e8da5355aacd8ded18da1fd5c11444c6e61db1adb34cee21a77b3b648595472be1ef02282d6deddb253abf6fffcaa101ea446bca32285ca5ccd5646a383b23988a46e6a6bf0b5e860062fccd613ab307010ff5f61d420b5132d5cac1071877c4567a961cfa0b5903e79ddf358cd15c56b5f894628b06adcecfc0283408861def0c6bea9f6583c8d08811eab37b65aa60d6f3ba10c86737c5d937973c408b59824f6de8df77e2af84a178ab9a3a3113dbb11c25858410e58dff865a0df435cd319b2d0b1f1c4669a91fb7203993f74e20ebe9c234357524d892e5fe0e8a6118d0add6e10a1315748a50857ec19bbe1d09f9a9dec26231afa750273c8c908f413b84e234ae2cf6b4e682c708984665aa4a7736e896aa58570aa77a28664930a0e18257443025493ed237129a46b0b046ba74209c19cc776fb6e0b618cea30ba116a5d7413f346c5e758cf9e8c9d26ac456e123fa2795d15f34bae19096e9c51ce37844e42c070791c658f24bc428c3d982334322ad4974ca11c1ba53438147fc401d9be57dc4c2d3590dac1473e934bca36ecdb3a9e834a36ea52d769ae33d88e9a5898b9214ce16151bbaf223aa08b9756f885e1887c04cd8068f310d0a955ba72bf40daa0899c25e034dd3009cc58f0d19150edf62faf7ff072315a9758d02e57bb31b79560e532624a6e29496c306a04daafd53bea478c6c723fc8c6e88b27643277a71e034a5848c637496e783540b0f0eaf0606d0c893a2fbe8aed04aabb2ebb347a8ecadd7cac5245d5a220ade3674e9dfaea7d00a9a39ec0a8ac3db4f666201ee5737bb1acc2fb556d246f831c695f37ea59a76a101a2651fb861016817410ff42b0206135af855b2e0978c3b98bc57c195d7755390429ebf7c5a9a0d8cfe734a237728ad25317fca4966e21d2251a04bbf5931268e0a9ff4a3dc105191adb2f2354f54deae59b139094f273940783b9a0019eb22fb26b7342f760605435a4f6a68625ced95fe52f73450b33a8f0ef5d52e8c68c06ecec1f08147caa7bdf3ba1cd5efeb7511f0a14f9ee90fe1d21600274645dbdea46c94fac65fb45d79117df44e42fb5c242b036261c3917f0e721907ca35aa3163a8c4400934c740fa7d972666b20fad997f9415b0315e412519842bc352661c504c2b340cb8fe0c40960ae26ef9fba0d2d8b9327ba14701555b529b3885c5f077c214490543715b9eda3fe524adaae39d8bbc0eb200de8512c01a8b7e560c7a60efd14427f4b028755eb5f20eaa6944b444d0e4cb0d11eaea7b9f6ec2ee9091cb1c533f4c78c7deb6663e409d4cdacff5733f672922e09ecb04e9f89d47e5792a34e277a325dbd9dcf5830ff183b3dad07d6a923b2f2438a5443036ebc252afc43ad689727b1deb7bce9ffe20f630e23e4e9899ca9c48a34f744d60a16f7bb375e04e2895f4760af263b9d59f14aed93f873ab49bb303fc4981c9e9754838b43ac467664a30ea8dd73f16de7aec22c93c9cd5c473e39ead046f83899c93bdc82780078396fef7e98b3ea635f1f5e1e21878699b428b6b4d0206d54b899f9351294843215bf268edaf3fe8aa1daa49fc7c3ce95d5a1fbebc88f7cf4e705f5e12b136d60c890fee77b73d980a95ec18ac642b43706c692818e93d9f1db4225719c813cb382e4f77ffab2d3f5ec57b14050afd3997c064b8e9647a576cf580e364781104e3d4669acd2a519300a279a27d64e4e8adbce8dca5601dc839bc577c8ba04c34cf5292cac6786448ac6fd6d296500c20d955aa91436aab66b1ddb6381d5978b38b6a4321e7c0e08f05c2d7f31121bbad81ce4baed0c375656ed13e5037a682e93744cc6873a1684651c80f8b276fd8fd6ea97fbfd355f29c064d81bae53010b51b848c0cfcddb4a7e56b8721f3d60faa64df5768d2ef59ef8f46dbc2aabe8e85c17de41c1897532e49d8e0874bdbd9a190d879c0cc782e1a2cd0afae44a95341080fe538ea33096d554c95baca960b0b7dc1db28be30a8b36d3479988736b7bbd53a85b4b7adec2a48b47f748caebb83b9ef6e640cc127a7ee56a398ce0b35929511e806e6f52e7352f195bceca6c2e137476ab070e55331c764399a6dcbeb90b4f42f7554f92088287fec848164cc3e1a366fcdceabf85026f93b95066a53791c69cabbf497b271806e998c1c3ab74fc48da83625aa178f7683e444b645ab9db2ddbd6507addfb9a645776cc92078cf0d627cd5f9a22e61932b98c18eafdce7d22cffa120150673d13a768fdf72731f96ba04c3e4f758656a473d3818ca43b0164381aefaa3f084bf7b4f16d39ba7d8cf3eea68b34549af1cb36330ec6041b639ee331382afa23a07967df3a9b1f1ccf1849777b5db9d5045eb1c4916bbc749304e8b921dfb77430e5fba5049c455b1c09dcce6105eca5f87eac119b3020b2f6ba0d664230e6467f15313a7241994982061fcb3af047700ed9a2e6043cc757e611a773177334b72775a96bab7467d944caf5eb225b60f1d902b4ee67cc44982d906692816425d1564c1eb1de6e3c4958b7cc45dd7c6076c2352e4ba3ecc1d18ecdfbdc443127c44d5f3e31ba35140be8dc18474f96cb44835428855b3869cc3d1d8165870e7463e2dc5194f6276e2dd5c8e58b0493fe26ac41e6cc77b0d69b6108049157623dabff9cfdd3ca9995d92f2a5b25a93915be22860178a19ffd599998b2dc237ce31321afbfcf7481b1d2be4364ce90ec14ec9b479014c98e368e747277ae41dd3b12d938ffe5b5336d017c2ee3c131fa7e63238fc434a24967f7f7bf0e82681128424ea4c93251304c0019ec194aa37dac2b99dfbd4b22f3769c1cebdd1a3417ff5eba1e975e93fefa4c764933ac27cf95b3321c8791062a807a4d281862a6588b5be966b018c6192f3b2a9115c69e84e7def6be7ae94b3d73e4edd0f93fa1339fa1bdeb0f72bdede705000ee98f0e0287533e5f8733b6701aaccf8d240e6e1282bfac3ad84e4ce32264775dfcb5219ae82f3d880e464e51b278bd5166383914b88f40beb90dcc7c54d64192f0aaa53ed93c73df570bdc198843f22375409145e63596cce1559b82387ac42657e50dc19d9f3b9bd2e2722750cfa0ba69a0ec68d521e0054db59a3fcb929cbf2b77eea2890b3f499f73e17d26136ce502f7214fd5a7e302975aadcd7d1a17bed3d083766f74fee41b93415c6bfeedc7fb7fecbf02a47953a1be3f72f7a5b7a28d4c2acf8c4d4d3e6cbf6de1edae30e4fe196df2310c11cdab83bb0af695b43f7a12e5c1d372d3af38f384c0162f37f5ff02a9957f4a2a29b82814891f1778bba900daf5b3f48b251d456a050516759906030869cab8dbf352713e80d6b62163d685d344c520467382da44e9ceef53cdb3f4d564979b4eca1b8bb2c06364024db7c8bfebf54b26fbdb3200b75828af350c7ac172228941e9a60bee04078e22cb14092f4b1e1525a483b5cbbf734f583a513361b69d3f840b92daf3adc0a9bbad08e3da371c118c20aeb9985f37f193f0f2fcab65e18b7d98e6fcc58fe6e1bc55140019dbd7137c8431f5a011c6e999d5e4907d310e08a7222300efcdd5cd4897f6cc6b23d493682c185cdc94f00f1659df66163ee4270e368674fcc75317356c6bfef3c42cf899f339008d20694eac3758d69babd03ed476747fff1570ad8e763f0af5c923fba9ba556db5a878c76ea53b4c94aef3e9b00f14100c95f9ad1153613d5db3a0ad083e65539b32686b6548b0dd6c38a18e6a7077a9bc83d87eb2bbdac2372943127b3c250e4b39107e0f0370a0f42f1e6c605cf106adaedfa8167adbc2383bebb897ed0bbe142240e4db8e7ff8e0399c1505496c1800ade6e5192a40bc3431d93d4ac8273408c1efb5aee64e7a4811b6075c0cdff5da2c3f7c49cc3e5ea5ebc6115399a0e77fed6c7e61818c172970ee7281db3872e34fd771682823732bd49c7ac5e9d4889426f7c7405c350ce287f34220995ee7ca179b59edff44e0065ea44e88b54d8ba6477b0c8cd5ab68b709a9e0fc7313aebee2e67d8410a25a9e165a86d871022dd94c61e9fa56df2452bf3a2b6ad5e675f6f71cf38ae6c532fc454163c463a71693279e8033d0ce5f3db3b9aad39f815a2b24b0ad927fe9854e1f5b94b04600aeffa27b455201f0cd69e9050d36bdec241966350fe2bc743567812373d34271988d58c80f69954560a9a70694a3fdaaa002ab4e7ef6a54b413c47352eba3348b970b46134fc0c2edd384e733ac145c04d2a9b8085fc7a91846828f878c33e782c1f0a4a8e8378357b2fc0aefa490d00025c7645a55797cb5fa929fa21a3b9c15bd4b8bcd7ed02748d105c77d1882d3d3d6300ef7d1d248e8e609dd6c3e16080511060f26e184c43f83e846dcce1ff340d927d2936999a1c4215b4cc9e58de99d9152487a65a93547482b7b2b249cc4f5f3dbf310bc916a89df19c678bb99f46d66a02b50dfbb1719d8839239cc98790873e4010c8e07915dc4336dae007fdae6b5b36d4b0b8e572695f4bec1900e34d9571516b79c65c75bafc4df01b19af964a77add32e426b33ebfdf380699ea88ec73756c21393d2973d3272b70d1b96906f108c9ba4bde88e34b9582f89ea6b2314f71024ea17fb658ca151415b0dd07421bec18bdb42a8b1c1cfa5d8eb3d87d73d98ffb1c35665eb6325ac2122431f13d7dcad88dc5da24517e0868df7856a536709c882160442399d41d389a7e3a05bf10ad447058f5846246f2f1171c3398a69bab4b56e0d668d589bba23126ad377e4a9a0ce01cd7f858765f384748dbbcc752041c950101d67a47d980e5127ed8d7f623d5598ff7a2a108d6fbea18d97dbb434b686f6decb73e256169f7cbf822880a075ff0982a5b6af19420ab100e592a5f5d6141e00637dbf3711c52fa77d7c8311ab1de7a76d589b1b535dbb370909f7e19c03c32fa1c44e57ea3893ad6207b529dae799313f97890dad361f19e63a7b80046301da2571bc9067d21570e83f4f9eaee496db3da2d04ae5b3119f589f98dae93693a3530116df23ab17e3dd5220eda76e16d0cfcba892149a9957073c52fbf4d950e202e4dae78fee1fce6026cad44d097731f8fbfd8a5f55e8e3801597769621dd2004a6626f82798f4d641d62d67478ec9381230a390f31c377aa140bdf13552e9e725da9df58ab244f87556aba92cbeb7ef8f9698d394af55e7ebbe450a449f5ccd63cbec7a70a0f183b59db0c23cfd8ef75907cd4f9fe90741a43cce59c35fcd21878e3597b9fc3bf39801a9b1b96d5d63983a54339dc1dad1efde140ad0c770a43e569ea27253db14c7846f9700d399915d47873074cae8e5b1233052c77e78314037675aa75d52c63b038feaacb1d90a6b7eede82863eafd0f8ec5f73b6a680634f271899d06fc5f89ff746898eae8660df7c675187ac3ffb3a917a4d0860f74f170e94a3df3de3cb241baeb718523e680a5acfa8090f7f746a4406715bc613462b77d1a39a0341e470d1db92619cec3de73f41e7cc2f46e05714bb0d6798b3d020d8583e6d6070e942c8b3fc48f7b83790b6c7bba3737b2beabacf687796e83b0c92d712404e52c9623be14041493fcc2c54d2de0f899f1a2ff4818981657b07dc53a17c47b9a0ae9cce5509a17c11ad8162b65a6ccc41287ff792f54f7b6429c0a02be3b9cd6647b4a6c2628fae34b1790b2b64e86e87b3ce04c77dda1754204762909acf5a825b0a6a1fd1bbf89f8ff184cdc2d413ab7e8640691a1b002cd61af90e54ae7428b3ee6e2774543dc06950b39dc905c67c7d7d49c4d7f126845287f2871e2251604dd862d93bec18f725b7617fdf4bddd9f3ed0dabd2e9b0253d356401f7453586e6fd22f82c4322199ad07dba9744aa3ae47f65f244f1c78f30c2f226e97d2ccace08548bb522ecee858cbc7b5a068527cec2dff3a1568474dc20b3c5bf642bae10dc835e11c0d1b25d4fac529d6829bebcb0070ac39cc83bf8ea694f458f338be7a94580be567298e46080b2abea2131a514161924f84d7e050f275b1447070c86d1c5c301ede44297a3d075ff7a604615eead053087478ce283df22f89efeb02c3fc8407b74194ae6de1f5729a10ad5312cc7369d97f2e82cec7103dd82994c9048e1d0cab890bd40263a7649ccec4e055a5d1bda8a22c87353760051a57c87903ffe9344ce909bee2664d917c8fe301e16d1a4892b57963a6f5440946ca15d3e35006db5f23f58bb66e3e57c9ae1937d6f2cc60f863473cb0d5f8b3941a39d32a7408437129c5e70bd9ee9b94b459fd581a3fb2d9643afd99c1ed156e03e6b341155c4166219891f937594215bb31318ebbbbfaf5bbb52f4f187a345934abe2f9d4b5bc5c3cea93dad737960e250bf54f47e142728b297c8be97b8f36ea8e37b6be83de0e17a048d94369255a9c90ae887fbffb8377f6b345bae6ac3fcf5f8712d20a1433959d1d7ddb0ba7aacbb6cf94e2608fae644f228cf1237fcee0672530c2a812f80b2bd7adff632ddd7a8f54990d7beda1794035d463740cbc28a988016081e7c1d506abf9de71da6f8aac552aa3f31a497d9a7cf57b4cdd3719705ffac527bdea17eec06f853033327e492b342ac760498ce9e1acb73c64f95352a50ab68dd3c75174ac460bd52be2bec25f184e1272b8d75d994c52e3cc09c74c99743e351132a1e0347aae4d8979f49dd830a9ce0f5024501458936de2dfaff7b12c95126e828da8655b2284bedcc5b2a364609c32c3b02efa32f7a84f965a82bdce2ce6ed0a5f9b897f623c1228ff813d38c25f5cea675322f0adfa83c9cd69906e1f58204123772d15b0f38bbb567b12415f81f6f8c938ccb924ce8b93567d9ff2d1c7b847b2e01edb12f0fd1ab53b1428996ee9f6deb75f71540865d7e01d1481678bacc8c8ca5d5befa8b1e66bdd63003b39370fd3097cd8057e84d6b95be7b600b609a1e851222daaf5396d9ff75cd8e3843f9b97950d7fc05188c124fafa26fbdd6bf8d8bf18e63d7f58b7c75f80f8b23b8f77a5a33af4390442446f809dee90d4709479b60499e7b5f6c94605c978454ae7b87688773d4813fee3473015b1d2e21313bfb6e09bbf46606524db288639567a304c2c6087507ffdd32b3259a9d1c98e42c4ba0fc1ad14263fe42a1bd066a2868cf29202ca9fe1de40a5bd405d39323d80ad66f8015ba102fbabfe242a68eb97a13f3f6550915585e7cf2c1d87639fdebc798c8acca344fb191a8c3269737e92f31715f6ca3051218c67674543582a56063298aaeccc56455e70da5974a3f087dc4e0a645cfddd1da60e4c847f0295e1b13ae0bf2a94d16c376e27e52a2706c04dfc6c9fa2036bf8e4b3a6ee55bf6b0fac160941da26b128772895861f404ec31c793fc0963772beb8a6169eaefb6e53a54afe0db0f53684b7e6ed029583e6867ceee2449c29606b7be559114671a8dea63e5a17651c70ca087b098cb16c03f3910715da8952f6799eee510e946fffb6e6770fb403ae15653bf46f5ce58e8d7ba2cbd75c46b84087af066e7ca295ac518743b07d256d8825a35ed41236bf718db4fd26e4948bcc6710abb6a61c5a947c80e54520f8e49314ad9946a6d3542f1d01731ff243ba4244bb224c04ee73521a2bc055b07e95be65ee10872a6bb06d2972ce91489bb58c9928c746436e203b5d345de189c8bb38a15daf9ed09c5ba317c9aee4abe707dfd370d45a7132580aa67dc9872fd275ae953e0a4865402d605b8412674c6521530bd5b202be0f6596c2a99c2c4f376a33321c8db7a524d2a4e1fed7019cf4ca074f85c9f698a90f3a99e000760fa7e9b7cee31491bbedbd58bdce19cf373cbdefe6304cb2c3c0f16d50182770a2ab4bb3b6fd0694e6e7fbc423dfa8d71d1e07ea8fe4e4b14f1f84da76022cd7bf33a7bcf0161da0dd54d3e7b8e9d1c3667e80172bc8939155d4d729abbc597dfa9d7cdf5a71848e6cd48934509272498cad45cfd86c5bdf5225d5d6d3bc88a57dd54cc538f87877bbce2cc30cf8df9212991300ece9af9d15ae1cba375d99a78856a90f129351400fb77ffd2f65f0b129b20fb11a89e2498680dac04c14b6dcbfb6fc5bbd67681c098177f43a862bcdb45654d94822b298e2295e31a9a49ad4bc6628e001a43339968356ca04969a2a44eb9e4c7625f82cb47e1b8b517a337ea310c29f665030c7b5f1f068bbb3533c89cc38203b67196ba46ec98686f25b20cbd4f253373a69aec42505aa9a57391546c328140b2c24a9a5381e8098aae0f0952ec1e352975ba87a7f9f023d3209c8db0456a9d46461900cfd7ec35a86eb6af513aa7dc166c84783f5f08269ff49a67465352dc9b2c8153fcc49cc9160a7abf6db073eb7a1be80279ddc9637198e20ef7ae49e224ea464f08fe586af38c5f6c5339f58adc4f40f96cb5a48f4ac393614aa0013c3f019a835f241ffe00632ddf25a433c73305be481df8a3e4608a28722950aa95632fe1d35496c8318cc51db5c8b92710a266926d032b269ecc78db0751d82241e6df9ff6173e4bf15f51a67ffac0d5babadc56f8ee7fd6804440141c94decfb64706a2f9fbd8bff3c9b62b413f7b197e5b6c501034ba284cea14ee5fee65d00d15c25dba0d71262cafb5a4f39ae46bf614e8d1ed291be24e27069cb366bfd385586e446dfa027f58b0d7a3031c40ea2523b62e5ff9ef6ad298e6e7adc1c486019afe8e1b468ad1765e9afbd1353b8decf52c6646bb9abda90c95481a04c769856fcbeb1ed2ed2d497ffb3432eb31ce9649c8ed17e730c9a98db81477c5dae3bc9d3056a7b38681d961995ceec8ddef4dcfb8c65e1109072a80412778526c9375c89e4a385a3b5df042d93e42b0f9bea265905936fad1d389ce41e3829f452f21b3027c2a06696c9ec1c5075f71a4e609e10c69d2eb0cd6a825eee4300b70c65711a429298f156ab663975fe9358ce35a6443cbf868055d6c41dad5d1f09bd051e7dd36b27a23d74e2a198978bb2c385249ae7e812ba02c3e49c2cae80af84b6c7a52309c62829143365bbb1a5eaac31099df1edb729b9b8b3c7349aba5a218acd17c7c8cab95b1b27c65eccff213049814dab287a21a43446fa49585a11edd35c6c10f7f8b4bc0808bdc860c72159c53cd524d9b3097bf5f16d42b95457602d3a3621e44609e6dd45dca10397265ab8d4d5dfd40e4902c54e478612de2f5c17359f370ff557a6c9840fd9d33727768f650441c35649715a0b51afa5343a8d1a8393632a85d41fefbc6ae04caf33cf1220d911b4a158790454d242143f3fef7274b7f478a736705f1ce642f4466ff77090a8394e6481316482180a0ea4c50b24b290187c435e12bb1953e93d9e09cc8878a7a8082bbf7763237525c6d5e15259274a569cbca5ec736dc1fc635adb1a1dd8417302c636bfd90106114a09b11c01dd35228e6178daac01b6c6cf8a178842e2b0fcd058eae6373a7ff2b9060ce5b3481c28eb147d7ff50ca433a394d6c6d0304faf0c350cec9f17a8ac1fa431419c07147309ba0629f2faf7590ffeef25ec8929c213045f73da2abc9aed1394cf6d0fe281568ab3e0f67479651c7439fc64c906cd1a998f1bb2328ca23bc85f2e1152a7369afa90382483aefe7011fd08c45b354d99f6aa0c197e9ff6d957d850c656d5e305c5c59b5e5dd381993d5b80dca08f93e197b9eb72140c325eb1b9a5f3b1bb181301a208794cb4f3154781c52d7dcfd80312952766b2f7b6c8162004b354fbc603c3636757284584192de459dcc32139193c1122122db061ecd8c218c956ed6ce6ab61301dd2503ad8d8006cdeecdc619011d396a770338d87a12022fc1387555f459b61df82de103f921c617e5c95eacd18e35149f917083e67991cbc46749e6ebef97632a50ff30804ced6b3dc33ef96d23052d5434b597a4fa31edcae0fd99b1fda8c39f59355f3e9a3413e58f9943d22ea012530cc7b1fcefa1a5a7747c887fb589d7c625de8c43d0a243b28771d7122b3cc8dc68162c661bb1875130daafe03c7bbad1a2e9ad15c943f7dd5c2967d2e67a853594a05713b76ba9623d4da13443c38b38e67a672b2fe2ba818427dccc03e1b127b00aa16458a5d89752ce752ee87b58365184e473074e231e2f4e544ec52db07fa28b6670a20de053b4475e56f209304ac513ffcd0bfa3f19d149bcba2e6ef68f11778383c838961dc573fd8855b393b8e840fe8dd5f9b0393bf8b40472e5f0aa707b9e99e045731d26cd9b74091047067bef74fdd7aafd2c436a3837ae2417ab1ce517e7050d95a36732301c304fc47fb9d761d82a926800fc41c1f0fdeb6b6f88780d534bff6ca1491f2a588c8a3cb3d3868dd12439c4aa7e6f8de1d5ae595679b549f77d22ce2c8c9de45548a219f56f49470ac612bc83428ef350b3d57ec653951ca2b7d2b4fe4f4fab120c5b6cdc3f320e9df2b39bc50565a8951a1786a877160c56c133edf7063545e163b88ec2a4ae67177de8dd12464a409fe58198e9ac2603cb457cb098f4100bec76cd8748645b21f7006fb4ee486f2e70e21250fa9fbe25ebd3846c863e8aa9ae0d7e6bd06c0b80348d654840b453029cc1ef52516e40b954b1442c0d8d71d176e8e90502aa326ab41eb1aad5b6e3a9ce54a1e8e6426ba0d97c26839a3bc942e8657c9f48e92670d6eae94addc0020d441de7ebb70276c201a15e70401973d17b79da8b51cee8b0e97996526ccc846d4e2afe74440923558796ad6a34b9a53cfbf1288391d766feb291bf71fa35d894d347757913f5de69d8f637a851538bf40810657ac0726c50ebef2681e424e2fecb7ce8672d843c4e985e5ec19534ac33966cc9cc5721af89bed4aadde983cfdfc6d93d779f805f481d20bf00a2bf06246c2f790d16adabce4e5da087ad89dc1863973dfafbbc28f8f2c5cb0d3efdf621a595ebc5816c45322eae2ee039d154eeda849f89d420352e56659c22d3bc4f9131c8d1ba5e975948e7edf45579024e9773c6e73f45c5015abbc0eaa8f04447235502710e38abb842770f8571bc0adf8d0de4ac936b21c7c8473a5fedc69319de2708abbcdfdf3799cd6c7d7938e5d5dc98272196e646ddce56969993ab2f82b113ed2e7ae6abcce14e314b5584f32d869b4bf97c5c2ebb9df68d9f989b876fe5592a8cf52459e4695394df6c1ce6c883af790a68f713e3f869319bfcb2e3913a8c0522d634a96956a9e3e102e1342cd201993944e2e34d34a71a13a0b3e5a7261447259af4892a8c0f5e28ee9627456bd4ec9586cfb627e7d96f067c8499aa30ad4036a20ada8f66bbdd81a6646e7515fd02b93b745eef85dfb5961fb0153b13e623414e5a3dd94ed6521a50574a6a7165f2c59009024ba7cb722949e3abf3f5a3a8a20c91014f9afb0d04d0de4580bf8be9a18cccca230f64a02b8472a97ec09c03cba19e121cb2bcdaaffb4f7db56bff0c40297da0dabba4eee0efd1a79444dc2cd9bb33ffc16b1dea5da460776c8de8a51a5ee2f5a7193ad6e8b61a6d44be4276e81a480d59a5178dd196af8d812e7fa033f644a57830097b634a8d5c26f403720a34995e0ead16bfd1a63ce5745b925a363df0dcd918a75ee0260a775d132629273a232592b77c804085eaf6aab402c294a8b81bc644dfe280c498eb873d06a23de5abe767ad1c01d36e01a8057745c3b9a26f3d65312f9cf856e23701a1d4b6be2537d64ae3bf9ab4b8aff257b8e407ab87719711e74b74552db5d817de133cfc2e922e18e6a29b9edf821e76e2fe04b4b318253445989cb9d4848a186e1a77e6e8ccb0f15ef6e02e05ef88e44dc459f43d48c4c977b250719ce41951bb96e491e6b8238a385f4187b6cffd663bfb7deb99e481a31ce6680ebd10c46c9b054f3f746de9cd9a76c77f6edd9ff2517dc05be456f6b38eb9bc732f6627cce73b35e02cc6a3590647bcf5843961c434b8951e110bb2fb855f55fa33e7c3ba01e18051cce2e870d5d4810124e80b9ebb2d36c488f5b9e6ba44701aa5bb0ba42af18cc6a0a40767ac903d1d6b51da6bd5f28c180607142d8487514274ab03aaba3b7c1e1333dcabefe452861fc19fd4233176e7acbd6388767ae6c41aa5733f6ae4df1d3b7bb4ee29adad6328e88076eca74d9a649196d0e524380a5c3ca7a715e2adc659ab440969bcdc7a9c5a3cd21226cd887a87a051c7bfad6b7126be7d9b81874861b6aba4fc55fc7d561003276c133b1771a2486cdd3a1f669bbc8ca5b9e14f4367d287caadb0703cdce4e0c0e4e8e8fba96c05d444b7b70b1f7d0c4816751256fbfb1ad47a7c7040e418b57b9cb301464b72e9fb730ea8dfe98b5cbdf4853934e1717f691f575fa3ecd0ba7c5695a8ff57c69f847d49a985712c528670ad14bb9a35ec823457f8222593a16456456785767c78bdee264fefe74a99b77a5cafc18391099e808448c165ce357c0b8becec472d858af3982af187f464784056f79cfe8d5599245b79790a51999db8c51a158577c5418146bc6991dbaf7613333392557a98e7ad4d6bd353d00bdc9d6566394f7a63512a0b376487d60c7367ddc8b1826b690dbb3d20605b63432c07708422435c00c1e47412e1655e0746fa1654d404b7c29acb06f668c206558f0900694ee7c610e07d456d2ed0121401c6f00cb44579a61209f3b05b001a2d82a6c495a9fe6649b3adf43ffaab35110def527e5cda10d372524556bd9de297b3837bb8b3226b1bf3bc2d5f88382b57687a7a8c6a149f874d98b1d6adb707da42637d9929c90c41ad784c4eb6740059663a76cbd6ef8e58a7a3df8846df15d9080f325a8e82015adbbee6e1b691e0d4920aa925446607140bb6ec735dc7fbd3ad7798032ed00898804740b2af43a0949a254dd20c967ab6850de969773a8fab8d5ec1647369627b206ed65da2fc34be5b1aeb9b87f8196f7c3b59f2f28108bbacff5241ab29539fa0a7d69b4b8137b47fa7e4763f185db48e69b704b6be82403fd706d08e28a596e700a21ee2d26686408fec6717d57f68f61bee92e8b27d5585cc29892fb125d8ca7a5246df1b25f23b4789ba9449000e18bddfe385235f77fdc11e451ee425bb1d5830a33b29f8f275429887c9d1210c3542dfbdce47ed9f2fc9daaae7d2f983f37a3a48c9fc0be3ec75c98b99896b0372853561e6b3d6ed92fe66ee3fcc7a8066bea3ed9530ab2b61a21e4e53d52932a385a05224cb28dd4f6060df7761863476d252e37e36cb8532e07096d72ce9e89098d0f5e40dd90fe1c87a4715677d96ce7f61d360fa80ca74e4ea33c96eff0ea6c0e9f7e2853fa6d494fa98a8d3c65b8a619f548d1085539e788c137f7602b73ac3038a632b9827306139ed39e9485542130f4d7065b8eb71a8a9a6b28c4dc3ec50ac6bbf5c83fa38be2453e786f1dbfb8967248f569b4f063c699924907f9ab88d64c51269856da3a8be6d8ed9334dc8ce92c64b38d43d0d2e48d9b160fcebc38a1fd31dbe864f6a199c629be38297279a2e76158fad17bcf095eb922c69840cd0c75ea0805118d1026718577dd7d67f5f0f6ff1ad9411f87df493bfbc33326de8b80aba3517a1529f5ec54e8030013c30ba5885ff9cf3a761ddcab0c209baaafe426c19abed6c7e0dd1cdaec90da3637eeb880dfafb694d271a04fb765edb7afe2bf6037b498106d2a7f2aaa0f5abbd2e0f16e9a18ae547d64dc57a8de864b7582ab3806089ce7fffd9cf4dd7ef4ad09acab9a589480c6372688c0da124592f7e6dd02f0f6c289771f5aa49ad09db4f1b7383b571d7b992c8320611becf22c86014f8986996cebcbf9c91a415d5dfce73935a3805fe8ffe29c99422a06ed9e0ceb37bfabf1185884904c85981e711c1006a5183b42517bf191b26d98cc7952949d44ee338c73c580576874aba587b23d96ac74f59dc6eee5b6b5a737266d6600773d121a4094ceb87d10c18ab46a45b2dba5bbc23548eee46d2fab31619f4a83c806ad1bf0b37fc1105f7c02952cf1f0db4af894ae41407b2bcbf66af75a6675061f2906665081b4f99f51bfc20467a6667f93c1c85aabc5e676747334e98e1ac6ded2b3593394ad726c78956dab539801566125a57f08344671c450f420c04f9729640f5762b2073da877806ae9b606ab64ce9381a01b2b8252c5cb130910e0f2fb9ac81d22e6f98f64f92534bc165df743094ffb681cc065b0d8087b9c60ec6db5ccbe8ce1cb6935022b16368c957d92d9336fdb3419baf99b64fa6c63160b09c3ecd47777fdb58d22af2963ecc35aef5979a7dc26b9d2fc4448e480121a245111cb6393c4af503f94c82e209040fdf9175a8743246c4df92f199bd5aa1d58ac9cdc8bb73221fa95702fea98a89bbe5fcb869d57b83953d0f5a5b2a8382952fca316c18d337a13011897ef888204035e55742ecb72217aa1a1567b5756b9a430be6d2c0f8ace9a26162ae434a142f513093499f24e02679e8994b54e9fefc1bf9d2effce38f1a7615217f141e24985871a9ec2aa3351ffd81764575e00fe8bbf685810077622e250e885a0ad67f59a1745945cc3cebeb143ed6d32d1ce6ac18d55b3e43fd32f596c2f8e8ae46d4e308b834cecd9837f0a45158e76ba4926bdd607b6bf1a1446ca1bb31c779c767c36feec15e968570604d3d36a5e44454c1e6d29f68e9f2473244165dc534b746806d7f6f99ad764bf1a25abaf8200a0c2f8b5eb3fa0166231a0b056f89aaf77fa7aa0456352401aefe2853066d15cbc129e9a6395f44d44b1e684dd4ae2a6b710f77cccacd715f0e8c4ea72909289c3807e0448a725cf8ac36bac970bdf77e24a92259c221a5ef63c0b92b8828645993380d44db72c0f221d324e5ed91249bba7057e302edb6b3a7bf3f869089e121098523a81b2af9c77dfc51235911c0b5e94e33d326c5ead1e40301b3c20c11d7a93636e39d8802df235eb79a12426fc088fd28496fa46c13d997448306deb6a3326b1e5f92faf38530bafc720b24bf352c41bf97660cc56825d5d6185202d76ff2faf4f75102ff6a318ab06954e28892d2091ec452ea50610e88e26ba083be6bbea7b77d78e159236ece8d51fc37bcd8a04cf90b78a7a5b4cc9a75c837b5a08af6859435cf5adba6c04d348f3e22c50cafa8d1592b0fadbd6daa244d404af5039ad1025807d7e3d1fdc75a9e013a8bb6e428b3d2b4f44ff843278b6eaa38e1d06ba1c4934476afe3eddc308aa54eba64e5b4924c02c3b988e7e2b77465a27932272a298577d85301d5a9dc76221c9d280d032bd229609ab3c62df0f9e53e9d2bc4836b4488a67bb38b5fbe16773654167d1dc222bc0e4f6446e6956dfcfe7502cc22d6d95026696427536a3567849cc837cc9030e73686a8721b6795fbe471c3bd7767bf6763e8e5324b18318ae3a9da4d769da16841c5313f25c0062f4ba7bd82661068bab6a0ea760b9d7aa9cfd36d1a4cbc5150ee32d6575403aea1122602f38749b8f7b6a48b5261e1176f27f3a88fcc0ecd92d12b11819bcb4c3474acea6967a888cadb36c5a33230206468593293f7ccda6bdf717f88d419f3036e93906a2e5224e45d78f73f51a3453ffc3aba6abf5aec90323b64c5823e8b20078c535470a5cdd61d1f65fc146d4583713f70388bacaf3376ff252935dc5093e3f35727083938c09b5eb946feba786db9ab8987dcc582d49da6cbdfe90051b5e21c02593a5a0ec449e77d4de3734634c543bee869adf7e4d4a6878015fff2d5c1e07fb88c886a56c33ea2b86922ae951c92cd9e408a553ad0b228ce2f616a31fd3e3e63060a5e56b3bafbf1cef2c0b547bdf75abfbd1650ebd4a607e80c4637699072c9c9966ef87217c3fd40c9234d267480097cb6695abb369bc8626de4203e1191c23a471381abfa13e3491c90278ec333ae66e8b1280260c5792346f9d78f1fd8b1226439cf84b16da40f6d55f2cad8db50bbce04d82a6b865183a20c2d6c91c5ba8474c1b62a2134c86aedd25ad9cdcbf9941cac55ba8864e4d72ff85d19f39b0514e9002bb32f31711522ff7c779d57be3349aab15d2e8945ab326eec2e53e1137e113e39afe210077515e5a1644659dd47752e41807943b7a73171c4827fe324fb9b38d3f00fe06ec0fd204e6af6adebd33e209193a085eb1863d8b2243b30aad6bb9f694fc497d3840f64a008cfb51078799b2873c965d424e4cf2be2021acce137975675738cfeca93f5ffdf76d55238e96c1b8e3e9c041ec356610c6b39fe010e3918009bfb3f5f3f2d1b3234f8f30f0e976cc0c709a091f0c0a97afee8a34d0d115b7dc285e7fd36fa3514be09dee3c6d24006df2edcf23c363603ccc6c468c4a0d40ea9ad4c66225dc82c4b7b1fa61209e17294b11006a33219e47c37d11366dbedbe005c67962eec6c16a6c277bc7ed88c1538dd576d41049dd6e3e1761ed2aa3dd04e5df8b0e5501fc238d8f3fbe1141db64b1fbff88f51eac6712f8530c56ad39167e2415051c8ca7211b99acbdb437693d189079c8f8efe69e2d1e11a4e6c518283fd4f47f2a5282cdde729402f1fcb8dc852f62bee89f22bc03a8da20b73d7cb1a28d113b7cceeaeb4e6e1427a16af668953354559e190301421b7f7613abd628bbe7e8240374e5c62c16215f9cdf800c48cc3fe85893c60b401e34acbec1c510d7f15487274c19a788398c4fe9974ca0e9df549c54927bb26991c32a3aa2df99f10de9083242b9629bfb75c8b0467b9554d0622573dd86cfe6c3cd050096e586a78c5c8817d447552094af0f04edf87f90737ed1054025aec413cf07f919e957fa5051e7ec95b5e957b4ac4c8e9d9161b5880b155d2aa227aa49b862d3f8c6318e55d806ce562e5ae31523392fc32236272d2fed0ce9fd28b64d44aa803ab02196ddb1e11c34dbd6ccdd41935e268b689ade5b0dfb53eba5113df5a4a4380eb2ad631a637e8c0c6ccf46cdd49a82efd1f009bea13c58a294989c71a9d57dd6bc89aa3c1d5ee0fd6d4ce38617992ce6d328cececcb939307486151c2cc0beac0579c7aa0a8038ccaa48a46797f965c6812126eab65862b80547bac4acd20ff77da9d1082536922d11dd810af5adfb8baf9775d403359ee41377839ae56ca5020c5c8678a03f44aec3a6d0b69fc4b62b2194743a2f69d97064c415eacea3369974a275361238f461be0823fc75cee18a68a30233d5534a95f11816a836af7727ac52b2f5eb7b7adba7656f8c62d8d5021a5823c5166d761015e268c525fa75386f1282a4291fe4ef826a87f7f8924731b89b65a3939910306efe4d315fc4696f055d61cc3a8895d74df3dea89df61f3e4fae4b5faf2426ae337b2496e0ccf250399d1f2688c93ef69a560f4e515262fb4484b63c0ec1ef20cfa4a11a877acd784741aa37f0ce8ccf8d85ceeed490a22fc9ecd55240f2bae7b2fad9eb0bb40c6b8a995b81ff86b8d6a3204b92bded9e7f60c70ee6780c6ee96409dfaeec75f7bfea2896a8f0290078d3e2dd2208a100f0e7ede1cfe9d1f183753221730ecd1ea5c6823457eade20e7c092e7153f162bb0a18e60f0924b8c8bcbd06341924d23c822bf361dd627e82747866b332df359837c1f975ad57ea4f764e5953d2e3956802f76c3056bf97ab8a8cb6d8a3a5269bde0cad4d5d035f74cd24edbddaaebc9edefb68cea16cf0eb5d6903904a448196cc6f3e467c16998af74eda97392ee2839f8fa3f042d165bc2384b653deeec99bc46908b0ffc36adb213cfc847c2f113b8c2c3b5b644962fba3d03bd61e41362e0d440efdeb0d7a5a5458705d36f24c40c8ac37eadd926a8b001b857e39ef3245812076d1d1c5c5ac84d41bf2ef6d07136288fc29a294914162fe89f4b109db1ecf570ba4ac2c1a7f93b223e1bcc6a9b09c15d97f16b00324e511bebd1ffc85e2ce90baeec4869d2c2eaa737ae6fa11dffda97de217597bf85df6a3e9524635131b8e15ef772a45b5ce603cb45ef00e47eb017b22aec7cc22d3e839ceb18f26d2546ad3f606cb5f0454bc6f2fed6ce65ee083cdc2af345cd3c25e85d4e11c48f1bdde4e4cd0020987eccc434c4830d02487cb4e61d838a48590fa10550de0bcd5123b039b936ab8124de8b54e8c5b7aa93d683faf1394b1ceb3d767845854592acee816f4a3ddb21b6e150393c28d836ad2e1c3f9fed8a67b82c79a6f57152b6240afcb5e29e5953b49d530d26aa1027d81e56242e3363800b098c10897abee0a25710ef9d3a6ce0751aa847638c3fd877cf48ae7a9e23035dcec72438b5797ef9fc7eca7a21d23389d7d090076aef38e870c09dd8d6ded66cb704d4174bccc0accb118589fd52a1d05260f79c037538c748a95748baedfb32185718e0c2d6749468b67ceb2ddcf66a2e2a8fa0cf302dc87f544b6d0c10dbbbb86036e1204f61c5e9f5408f224d23a768f2d412aaeda750f7a1449b007909afeeeae36fee23eded5f97d2c0703479b2ab8b75030ad25f8b69864ebd8fa163eb9751ebf77e9b4ff5c89230b983d141d2a72a6299012268262f7797bd32b60fd703784da5cf802102e43ae2ecc7676ee87141e8db5a0905e9a4ffa8f09aec48a33a415e56adb888c7aba277c54937c2d727985d16c0f0d7ed12d75a0d6c8ab3148a48b60ddc4d9838e89bd6396508a8e287207c77e83b8c11094d8bd65cd14655af1a2a093de3a08d6fd41a1dcf5d852b17b12ac3453a315d199f8da5d88109ef71b9c878fd426722eb3a98cafc5f18ec68fda31b626525b0ed20da59ee4448a7a16be52df24cc722d2e90fab69635c1b522d69073af3e24dd9734ec8ffa6a8abd67d17644b18ff64710b4acc7c557b82bfc41ad0da6543c0d61ec9bc5f5d0802e59a28c298785d702347752fe84dfc9269e9a4b6e7a7304a3dd9a43faf0d7ef1d8d824db912f95f97da60190a66a858895a24550226f29c31fa052fa2267568636bc69f28faea9cb51797cd08e063ab060d672c48dc17e05fd2da0e999ab448b1bb48b385ae89804ed36c8a967b131364acad1124eaa02c22402931acaf30ca3196e42d9e57bfd48f0cd0faf2418f61488b8697acf03e0073fbe64903f29d60478cfc67ce20a5fd7b84da295e0604b0132e442761cc1662942d69cba9bd3f688a8cf5b8cb14098cc79943e30e23707579108095fce53f1d24f2eeceba4e71245e8eb8d3bba6f09fe6eaeaa3644d28edd69293c6555e46cb8c7f168df1361f0eb78231332bbf0e1b7446521a373753cd7f8c1e630083acae9d976466a02a4b72ec60d396b4a350a35c8d1f3765cd6c4d7bad829c9f3d665d5370c17b50958b60af67138f6b585275776d9dcd0506c47c6bef69011dbc5d3b1b7cf9d68b6c89e980d3e9195c2aea06774639c4db5afde898d23b623564ecc41b583c23944582ad415d524fb1ea9b795b1e05d5ef3e90945c09aac50d4165a94bae9ef507c9c8bab4ccd01d550222ddd04538de7118483d6281276dc27d8cb5610897a5b83d40bc0fcce8161beeee412330acc2438ac5f27c6f6ae9212c1a8ee76783b5320ae577f2f2a34bc8e39f9bb20d5fdacf22fafc0720ee3e068b3b3af9f622cbbaba439d5fb00e398a588e7310ebf2f20cd8b0120ed3721afe3b107e7b4c1938c14ffce39054bac4aee1456b31722de0d11201e0b0d87915385c2e05d38d70120e57477ac0fc3c49af70028f5cee799cda6ddddc8a77cb0ae2401e5d662f13dd27986cc3418caeb2e03b3978c2de64f920b7887305e4f27a6eabdbbf743451c0b6ea4966832f2cab5abd0f40e63621e06a341a77ddb4be0072a657ae0b966052e623d0abd41e58d7e711e0414267052230a6fee94fcec1d50ae0f65a25e8d6ef07e6872d0878d72211aab9add26b0bd939067314a9b2d466044310e4396b31a4f78306d44d0fd21c96afdeea6f6951589d890eeb2f8490f828c4745ecd7751a205187c25de087664e4b946ca22d699acf4ff36c5a7c9d65b73d5e0afc498f94c66642be450e67425606c1a89dcc3c9acf643a763e23348b212b58a398bb851cf6a11e8fcb87381a48f613aa33ca86b9ad013f0461c38cd4272da9a52537c674504649cc5dfa9d7db7b56b7754ee72e52e351f5551d50115eb717ad92fb47a9745395c58b392cb327d8e15ab1687a630cc6606dd45716025367a254ec626c6c14478af5726d82d502c3221c9d984780adb00764a97f415473271a939735b169a68ac852a38a8e03d331bbac284321a1a6af0ebbf553b8fe27c9d062cc7cc23adf472c15c8440a86c5591aeccee5f00266438ca3fa9493bb15140b2f4d7b09e29e7c100bded106abbba7937448214386574db0265060e98b5100ae5bc1a01f4279e75117524384434719ff0e0e784633756cb29e6b6daa2fa552d0b8df9d59a5ceccd2ae6f743623b708a838ab6a51b4672b6c3c76e4aeb0e3ccf41169e3df357416ec591fe876a533be1fa5e0db2fd636a2118273c94dd84d6445a3f2156983ec8f8637f52f3425eb5721bc96e6ca0b8a6d6dc9b7357fb70630049c8040f20330416d788fb668864edb1418a08f39ea781dffbcaed9962098018ba3f0cfbf8d052ac8e3440744ab5d81e7064cfdebaceb7d5ddbf180192987d99e4f34a189deeadf945123edbafd0390df0ac91e6eb18b5a48faae920daff8a990ae5bacf3158dd0602f3e03a4eb8452ca5a57ed31f943a0e7bf5ec86bcf6519a1c06f165c36d12a7f004d90df66f80263614bb1ecac51fecf27cb94026e603761fa1cb496aa6cb072d999c74a61d7b6193ee0f45593e468870166f533b3675556c42d4765bd0df249e33fc9675798a07142da0e829c4f1f6e71efa77287cc75fbfbd4005b1f14b83addb9fbb4c45b380676f96ea559c917236f6cfe481ca6025770c8126164d999df98c098a7aba81de7123c16c982bcf2b4466dcb0063d6bebf662b5941848905197979871e0f39c46207f1e4db6ea8d73215a420b9941e2318184967735b8b3ab9faf4ddeb7ad63d88769aa8979e91dd7a51cbd9d3aa4399bb311f81e72a79f8d028fda3c47946b3a037a013e43302e17541dc2d2ae442479552b84bb214a9e4a82734b17f1d475ea154d208bd739ae94a8195c06446965c5c8f563e4ba245e831aa82c00d7b9b161f8abbe424483181768051ee28168913bef26d1e8740f608fd7bd612fe2d28c49ccfc3ae56c0849e1c012d4c8a5f9cd851f76e1097bd177e99f9303bb4d01f4826c6225c3f8e7a055e9e7d965471fb49900e61071ccf84048e9505eeac843faf094ca28e4088f03ef44098874f5f0001aa1d4d9dcd8deeb20054e8ed506f1bbf28f0307962271d8ad9a8e750937fc85707fb779e4af3c4d086508c6fde3a7b30cd7244d4650a80694cea52b061eed89c6ef66cd16861af718437128fe292c628224b0c0c9a7362ad10edf3dbbc0ad3664a4ed8c5c01c95d7f9caa6b095a881c475257412f7c8e71d6aec1dbe22f638fa4db831b441cc35dd9a5f71e62eb2d9c42d5ff67ebd13ae26eff7b33b681942f3c1db36b850fd51eb9260d2b5eb6841b2ea8a3ee6ca83fe25fc73cf7ead9fbfa517d635f0559e633a66caf1d51a871d06adee9b93e3e98d414296b67fc9f610e5fdb8274ba184e662f7af9dc1f151812df006440e6e3ccde2a6ec22465853282616079b0f40e8307ed6b47836560cfb7697ff64148015ca3c6bd5d79ccc2b9f2d953a6e65b3e5db59a59478fb0d7f703d393e08f6a7339f7d5d04893183badabb8e3f5a6c77fbbb7f8a9bb488f8780be2ccd7c47990f9748da701115bda7f40e967f64ca9f18f6914632b846a0f483667001642b578eb117da9a8f7ffbebe7a24f0b393d4ac6959cea13aed79eb44a8be82fa89837c35fb0530a84857f4fdcc04edc0d552bf3485878fd262447646821c60b52b83d52425be4106ba7d9987786279d9dee2d801a42bf091d33c402b7be1252d2ec68faa33e1af97221915ec306774ae394abbc4f204e5270890ad531ceee37ed29da8de4ad1918940849c7fa08861649a0ad1d68ca943da51b6cc240e714976262c317a6fb1d4dacf3c01d6fc9e8614196a2c71540b7f04891c338774820b1867a5d95c77bb12dff08d4c4eab89c94b3c5878376b6cae945b7ead695b1e7c1a336b3d058a33f8bfdeb0f685f513cb89d3f94bac3a3a3489ebcbea3c3350b8668d6b631d311b96f6f5dd33decd0b01c2a1e5e0b70c11057bbdb489735da11c9daf6d29edf80525d30a08e700a4bc1de0d75b6325346a9512f7311a09c91cbf8fac36bce3a0b1e4fa0f3c47574940e73e5f02f326c5b6028ceda9b5fb9e7986c4e2afd112dc43f7e20cdf2992e557bd2ef4eff1cedde8223b0487c9c9fe3e16f63e7915afa14f515764443123fbbe707510106f957eadc305db5b91f9caf22f954e911b950d041af96a56d4c27b2abbcaa52950d8f2d888e3ccee869485a5594222fd37c2d02621bc4d4b51ebec659b5aa8125f56c9c78762bec6bfa83c6d9254009acdd831bc626748a0225b9c40154769da84b35cb6f3253c13c9c486a19d56e782019d9d7eea152cd57a96e43c5924c1f44cf8eb50ed60e909147f8feaf587e0b3437bc787cbb635a2a0648133247b0ab0411143fecd5f3e136ef13375c95822d5c8005acd4a8f34a2c250f45c3b47ec7fd24ef3a615fd966051372fde78f20258e45f3753cdb600abfe28f972457af4e63be21bfb772d91c513f456a6f2adba4f2dee49359597414ee6800adce57802095867c2786475bbee1acbe741ed9af6af7ba6e4eada72843cbf2ff612eb9a81305658bbb4ca6e934f46e6e11472fb3adb16a6b3655adaa2841bcf81bc95ad73d0169622a8ca46d461b07275ee63c515abe1b03ceefd3779e92a411f1d7a704bcd50e46304773d1510c2207fd5ab25215cebabefdfea45edc75327b1e041199716b46bd3cfcd2bb86554a614387ff8d507901fc7a6d693444737695f66a0d17adbf437d6cc91f927de453c21d0c2512e963ebc78a03405cbcd41b17b022033fbe309b79a6dbd2367ed792012cfe5f717510dd335c37f53c9f34dee75e80ad117d9ef416156de3dee9bb2129322b1e4b68381dbfb2b9d87cb6eadd5e0ae96afb585f28b54b0c66bda4f15d85ae46ec777cf51ee74f6168337af205b869fa5c6595ad433f2cea7e76b1d75bb07477e83f22076496800b979332ae33c8c45e582b3bd2b3903ead77ed438ae090c92e0ae9c6e8bcfba7aeb71dc89f778a8ebcd45f7f3f48024ee3a1356637791aafe8b134cab6c87ff6901c6cc3d4cd065fc0ae208a7a650dfa5841bb16d0f2a038859308996e51a987893a9f225264d7876202276590ed751bd5020e329162c2f0033b9b1548f5665bce99db6517cba21e7b543414ed9a367625b3f3566b1f56dfcbe13ebf839ad075269f9710d9525a69ccb737baff529a283fba99acbd765616a28d9e46ac1b6afeff46935b84162d0024359affde64271ef5d255fb93c625ae0c75b6b52cfab7ed1316edf1b8c88865b8f8d1b12c0a91bd6e68c2578e155b5fa641acaf2d6ea76a1acd9824185726e45181bbd3db47e37708d4c365ec1ac46587e4efe1f8b75fc3cec541dfc2a3ea2c2d3052a4f18c6b2cbfbe61dbf6756d7078760b9b72972e5799ad99da306d274b1e1be3b893be86b01bb719bc07f4ab178507033483bab1a4d0d383bba3c5246e97eaf89d4b7315a55ba14df6e97003c40e8d0cdced00ec8f4a4961a7642ab686d7ab5b3b5b75146030e8f18aa60f6a846098685b8dc2e1d08a6e94569530c146873a17cd237dc12bad8b355c7b32cb02ce0ce358effc09d8e707df2c10e676bdf8ab7b40f79cb9407f1e5b0fe78a85cfc4a96aaf6031f0281377117dd58f59056e030f491aff8fb36faa0cf0067f3e876ec0183f850c9a755a63b5425bbafcacc24b8252b7aa5cb6356f0b04d369bab9163e5e3a5cce0917a3420277801d6b6cccbf0e0fed4f662c38df7cb2682af13f4b74cfa9b04aaf9de40bd738bc16b907de6ed946709721567856b7e361146b58894f74d00f5126fee7181590dceb783e880b782669486d3f82516cb46a9f8657339d6e3e57124899f40305a7854c512e46dcb87281c026334e15568a1e26369fe269130440a9426780761d0d589e38957ca9ab869549a271fdb9a1ef3a8a7ad506302dbe936383ea96801b6e8572584c82408cbc120667b405aea76cc38eb17ffe4b94e15cb8a3fa460cfba7a71e27f6422ed50235b62975c8860b91972d6e0ca1c771e9de72703cce4ddaac5913583f8ae97c21764ef0b747ba83b2c4916011fd1b336d224524b2380152533707dd088414659820950c909f585ff2ef9ddad1e7e18e0854271d41afab2a1ec1eddaa7a83afb9f35f2eb8f1434ba1205c5ee556350592dd708ff5e0b5c3c8f51fbd2a82b47a6ed8e115e2293b6596ac75550b65880b95de2fd9d0d422ab18cb794722c679c4320c87f429803ed0bb7dcf7c9524627375dbd62114ff48a4dcbe79eb11ec629e0c9c8ea19406fc9e34e4be17c835d2b6452d105e49b23637738e9fdb2cfe538b37c163532198877598e80c6982efb603b1e2f82ab7b4d6c5e4e9628f6d5d2f06df5e5e2632f0330d7226c33c1b0ee2bcdd4e1f43d1958002cae72043ba318ffaa88c1e9a8416b3b60d08115e4db1ccf91fa24e0a39116774829f8474190a1a4810f8e915ba21becf973d561e347b2f037cf6f0074ea1e2f8ba632b67f69e02458f26c15c7092c2508b8960d357e2dbdaf879d4634ea3783e44571aa275e88e399ae2d91eeac8d941703cd455ca0804b0c2a04b6c07af69483956d871d9fa16e1695dcb6947579d41eaf9878253aab66c1d89f315160484ef756da462f65ac8ed95cfff334e32410017a155bbadf3b42827fbe673b72ef15e5d5a4ec9b7bc9e837fa2eed2c202bbc53c728364d254f0b46aaec7412946b895f0ccab3db45d6fba8b6c39845019a4e8c8cb716756a0ee1042bfd25d9a66b8e734668219d26d98202e4a05e901c7f1599e18abb2d6090bf5087e2848ab48f17ceaac03fcfb37e235c35dd183491c9618b4c9ccb474d50a4d1f028baa7e180ad09272a549e5fc63ed3a809a3d9a5099ba037501e462cac4b7bb2a1acd59ee2832c76236a8deb1ca32936c53e18f5442ebc773ed3a81baaa048ef7fe1dd58a5746dfb68b83ba15346022f097a0a75073e60a9a00b409b1dcbd31638bae9c38e484e7470a8ac1cdecc8b1e9088f881275ff84e118d34c9a0d9a70290fb6c0f567b6e7789a30b77cc42d6821ee24dcaa0a1acb21431b7e76e90c5523850e96465d7e79b34b2bee055749844392bdb6bdcc30cd2f30969069ddb40c2348b526547dcdae7009f86c6e9e49e7874c1990477ad1a4fea552233a1aea9a79314d32386b6d48084954220e5d4d6fd052dccbd8229db39bcdde7d116a375b90de9cbe988f793cc084c4290374ea21483e10d289ccca1120c0d19c8efadb53405e0d38f568e08cd6ad0e201906a726cda39fb7297ea14cf11d434e7e8c4858d1312c2247ffe56d7f7cbe87965b8391af40da7669640175ebcc525eca92a4fbca602e58d89ba1bc11aaa23da2d76dfd8e03f5b7051fdb7d4e339fd371aa4b53015a66dd706080c5dbae4efd32f4cbf660a888293121b4ea8866ce3b9c7d4b89877fd13d3edbc05a5a9299f5ba25f435eab50f69c17626ce39ce0a081a94e73e72868b7e163ff53accb91e6d01bcb6a9346a6b7be02d5f1804ad7ef9e3cb15bf9346589ef87988c75b66bc76dc51d051cc8a60d5441ba0350ddadd9d6b3400019c311ca6ecfd330b59c117b6bc2179e9cc1c15f431adbffc40b7dbdbcecf867a466c6349a5b286103eea14343da1d8610ac09785c307a5edb419b18f404dbac27f6fda168530668877776143291a892cdec7552145b3d1bfc46a9d3738286304ad2ad438e91788c02b40eb74aa931e566333a59098bbd440c2c15fb03ab87c407fdbc6c5db11fae97912659c90429c702b563ea7ec3dd3825217be014ea5b260fc32cba08fc99bafeb2ec8e4e5e3fa4db659bcab4608085bd2fc013b6ae5e919a8ea20ea47f89e1c13ffcdf440d9a58a36bf2050a01c41305c73775f79dfb79ef69fa9ff8c6f0bd38e827523879affe76cb04d3a9c9f60194997ef62b890e82173a76b0dd1e73e92ee5a82bc1015db76a43d8c1c13f9d94b47d640368b99f828448c102ee63b660d3234fb5461dc0392199e095efbb237da5f4fc3e315e79caef71b661be8a30712dc84ac2fe6a4b3a8552753536df197c285cdd4bb2c473915c131e06e7b7479fed345a3b16c5d1bd949f7e006c6342b4d888654916d946be992ef137284e166888f4fb4e64260e05a323c87912a75b8ba82692a0694508074beb63a7fb74550d33e7ff61534a19bb98c9c0403ee8c18432351bde75a73fb1e03fdb3f1a47a09d7f4a34466d37158dfaa8077da9b55b96363df7c9b7cec11a3370e80a622df38160679be92c67119eface6e50ea9d11d7e8b21569ba4d72f0ff7e5c70c35c4dba417a045af028551efebf8b6a70d3b58c69b5c420264a97298fb8f52c6d91ac07e98a202fd2c366a441fd635e548d59581748bb9287bac2d3d11e910d855670a2e9f7fdfce91bf3ffbc6d914f991ef9194572937510aff6737ca2d926ae930b2c165300c7e6311a2e3a43ae54e379a1e629ddcbd647bdf5a3f5f7f8f1a0b5f0414deda7c6e3390d77a4e04a1646e30a2f9b67652bf3681f59d656a60d98c371e61181f6523d7f217a62148253316fe9595d7877d0c75d15b0f4586845d4cfb742d7609c4632b9b0f3d26e1b0262ef7076adf75cd33c08c627597771e2351714f7ce3b8d76e67015e64a64d67a703ad17c3619f5155f5c5155adcfa72fc790a495690b5a140f24d1ab887f0d231586b7d73e09420d6d98733422a206c321caad29fe44969e6eb094c46af835cff01ae019396dbd37c958aadcfc78b1835368aae3fa8ec3be3dce26f59faa3d63ec9ed018d6cfe069ea30e2cb4d6622bdc1724759599f065a43ddaf5129626f4dc8319ef7eefeadb580dcf88737a867937a2801240ec3afc05c8ddc2d5bf56cedcb1eed1e665b976e3fea452f624e37cef80d545346ab755e7c4b1af80385261401ccbc0a15b0882e709e74becf2e4d435ffde2123319e8ccfc74a0879f4790c81387f693a3f05aaeea6c6ebfe4195c2455af88e30466400a28a300f85d2531398521f8f87ea1421dfc7eedbd3ea80ab74b38ec8f9795dd462db47777663492097bfcf879a30d01b888d6e7bdfc8499bd2032ddeeb56ab700bce6de9a40c67bdd09a0ebafdcab1513e728b5d077ab1bf5ab30934ea1312ff6ea4a282380f9edb90cf0b2643406481887b6ec81480feeab3b5b00145c5b1ef2e1e1f53443e134e657136dee29d17ecdb44c036f72dd811814e1fd2ff456f73bf2293e0b06db34ef6a44485691fa8d768f52fd6d60a19cf41df680568930d047cf7f8a2f6e39df76e9ba1d7f61ca80af772910af794a2e2c260c64ffb9495dccb73dc85a858f4ca75625b210cdb9054d263b7ea688ef0ac1e6ac4379e8aaf7956e5b16ace49472ab58a60c4aa157704c7d16dc08d3d05b24de71d98229bfe214896dca60fb224e0f3e61bb6c260a1722e80028a694b4b2147e1b3231e3d6458a6275181ad694698bde54200f1b747740b47987cc5293544b1f9fcdb10744e6bb43154b94dbc7c619b47f9418ed794e936051b7b222bb50f227c3997db1bd9e867dcb1fc94fdb831dc3343290d39bb329cfb09a27bb62497ef26b38386bc9724ed61ef7191268b5feded1cffa8cc90b485a376c1d840d498900d529f57a052b43bad6330f5c5fc2743ad751c64caad57f95186d9b0f648ee8c36da3e3926dff4ba86d8c520cdf22ad159b96e56347c0a253a7da11c3f201cfed63789708a8083f60052b1fd0327eb122f8bf64be4fe3cdba0d904d982acc89f4d5afaa39febc56217dee9a82d5953a487d14ab33e58651f534ea119e1a13c703f40e131321d6031b1da55ed278f2d6a533914dce4417bc2b17b4a2bbc94e7e07701e2d60fb0bf357af4528e8f1aab4afae5908500b87d0fe41e85e6479fda966ed575a4ed4492d9433d3162b3a1df75ad1812bd0214ec87030f0ef2833e4cbb944f6547a6db4c21e01cb63ce098433e69387e0cf0b34db052c853d54b5a17dccb4c529e8ab2a4c0a88b99a94f70328129cacef89314a8ecd075f7da6677385ca8572fa0be5d143f24fa0877433a6c9f129790d035f60c6dbd614fc3c1455274619bc492dc4d5d2c7b85231018b49605917465caa8bc092adb75e8463c182cc390d72d9158ea0165af9c7fa7576cb744b1e08473d1bc34f187fcff68b4562f6e232959625eb9c866c706a4311837bdba32eb346efa92a681f823079a39a6e9d11ee78c9f23cc3cb55f4e8f2f2e41f6ca16b2558092ee7db82bdd27aa91568cc21a44dd2ae8cb2c4e54f33149fed997a6ae0ed8f12d795acd6690b98b799f6f5c93dfb9f51e912d2e7467edb7f77a39a569ee423be59fe29e4cc9cde54b5b8c6474f45e17792314e570c71e8101ab562de6382e046b0f3d0fe26ca376f7370139805c6133cd5e7d3a7c758f80641bd12c0713c87173a49a70114435466fca8f5174322830153e48e245370143fcc26b2110c552c5466ba9017fa5aba8fe8b1e500d77713dfcfa16414b3da8b0b8cb4fb10988a24a990a1f7ac0d1e4102b8c37a14cbfca2ab7c5d040ab85ae87badd87d3f004a296029f36a74925f4b20d8d88aca19c160e21d62135f060afa694b28488725ecf15ae9d2a18a09ba0f64e536495d8210e3a56fcf7cf817b3c277ce29a223634bbea1ecebddaa73fe4b92d2e408bf0a1bd8447a40626b1b25848718c811ef82c8c1c21ccb3471b0d6d633c1f37aa3b8803deff7444c39028fe28abd1d58bf73a7a1542cc57df7f7720c5bd94876b6af3143696516ecf0a7e9952d01b970578fc54716a8ef5352a4391cecb5c12a6648ff6b305878242e7d68913c6ccab3a5a50fc1b73835ef0229d8d0fb252de1e1204063c665f4329b44fa5a9204658060d75e6bfcf2b67d0fe66900a264b95a9743174463f28b9f9c1d9b43c7e2dcb1859ce9e84a89e69d1fb7b4f5747ef06d9b55bc205eff6aef7a505f3a85672942fc9bc3f1dfdf9c354f54c30959189a23f0a5c49dd5f1b31a9f42092190ae126deb0c7fc26ab35545e0191cd2d2a4300408ce5b327863e175b2630367338fe5be613b99ad7717401e1c8f075e733f3596d70ef824d609f75b5d7b9798eab7cef20f030f4fb4c77351bed82ab47126d0c7c3560882b73be2760d80c66425edf00f6aba37646c1485c030ca8a5c5c62d1cc2b1276dc9fc0c4db7b9a6fd3e6ac09565abada3edf38e67c43555ceccd163ad4720102d6057e2c98fcfa4b5b7e6c414a04d24909aa7344b4ae523448f41908a678fb097b0460fc20bd5b5f5dd017dc92ed55266a7784281decd8e5aa8d86aa2ff5215cfa929e4237fa7d6992bdf4e66acfc5fe3adf2d288d40f9b188f764687315ce5cc5f4a641c64c940737d04127d0d3aefda6559055f46a6cdb6d82beeedb29805db51c6ada05f9f55c8fd5f300879f2aeaed33eb40be11fb5254ba4d631aebbfd1a01c952e65599fdcfde30f9e2b020abdbc6407e17c1f47f86bfd08ad03212acfed6127ee98eb9e636e55c514c0a30ea6ea887600f5f0b10b0d4fa6deb354528cd5b0642e8ea2b4a9cc2fc1369f60d108899e0bb048c3ebcae71ac48ca222b0f25bdb55ee626df6418402945c11ab481dee18c1e0b7ef6783f18159955fb0ad473a4aa202b31529bb13853b0c2f9acc93cae2096beec26715507d74a9d08f31d7d5d62b7c18d0755e363b0aa3a2b55ccfd1e0b9eb93d4431962d664d511b05aad94cb887f7ca50f820f08679df24dbb095a6a1f81ec10166deeb627b495cdaa573b6b88be20564134ded614bc7923f4208b8c8e112feead8bba79a68ffac60f70bd495c6d77eedab418778caf03fd8f170c593133d0f2ac5f02d98f71198d371b43bb930f33d8fe24910d20db98e17937a8e76064e0f0dd7f2e4ed0ac1d1b28957962b4593c70094a7dbf01567819a5ee9bee1af75951c296ecfa3417548d8b32ea6cc86dce0c0650ee80d11a152bfc812dd64c3e741d559c15e737137c50f3e499d15e934648bb8285a2f5af59d463e5f88af235e5a56657e15bb7c351cd2190cc45f05c725054f10c7a3855118c1e7cc070cc296769746ecf9533542ed05c4af6fe96a03e84f13d84eacd48ad8cb2a6d282da4d13cf78386d8b23854f4e72ebd4813251c60784a05875f19d82f5dbee66b6929542e35b37956ff1404ea7c5595e18fc8894af0b00e350f6b5812a4cdf186bdf1e88328b129d40a9211f42eeaed9c7ff5858f866fe0d8ba0a890f3cd3dc2f30fa5a1ac6c1ac1f51acdda578644ae4b2418f778f945d07597ed0dab78c083d719bfb6e470d4df76cabee90bf8b88ae8cebeaef2ec1d8940139f463c4a46b13ce1820ac84f70b5caac06e65c07f58563f8b1edff6069a8f421da27f66780f65d556a3c5d39e17b4a0c5aca22e29bdc05d3575894b86610a2ac6ea1f15aa913f442260a5fe6759bdfe0599d769ef8ed3fa267f05403adcb6cecac01cb20ba36a1629b96722ddec4ff27a4c736a8af83bd1208ec0dc823050611f7c8ca3c68a16d46813a8894d9ef0d5817f2548caf9842d0c3a13026b76d5104e5aac8f8fa0da765e57ddd38c71330ee30fcffb37e67d9461dfe5585b3a944b81fb587d21d30380b572c6fbe71dee40f17f023f85e6f05f0e1a6503e8fd022740e2165b3224331a8dd5e60ee78b3a50a47614abdb74a9cb4350c6ffaab56bf84cf8aa2e912a4c60abf512a8ba5b49c3d63cbc793de0ca2caf271c6fa94866684d09436f248cb32320cc0c7f445f04873741448954cf764d180b3b329614238bc2452e4c0d8bddcbe956309f821e813015974a863eb7c32648aaad8e606a85c75ec025e24a752c2928153017c552432be373115d1f6403736779b9cde10e0e97f6f224a1d6331f554a8ee1337e6a4f7d3cb05f54857659d2b92c730729b995682037d26459bccff96dca1998ad090d0b334bf173f4e0a17bb741e38bd897d72f174f7701479fc19ad7d699c3de85f984ede87718416ba7b30c763a9c44cacb6b9adf8947647e00b904430bdb73692a69f14b2bd7bb31aa84f34f166687e5d1ad55efc3bf798d8eec59a60cc37df39fc2f9e0e91293223670b192d5728a71abebd06bcca13b17234dd8194ee0b2966790e635e9e438824915c0cafcfc196b46260aa26fc73df938c496b8bd0e2e7a8efe237af63a0e69cb044dc7aadd72c4572fa0ca679e20256d22f526c4a17ff7e3dae308474d0e42523e4a1b1d0460e0c597e57ab55a02212d12a005917f421e8cefa6d7d8cdb74c3a0f3e9f44a9e818e3104a2d88eba586b541868177a9d730622ddf066373fb1c0c4e5eec69b1c43878ca47c6b674af81605ed0c65ac322242bd0e657d6c18919332c48e3e1ed48019f976907c84ecc5444bbc6852a6c222598e623b06d3274ff0318d326d23041a86ce40d188bcf9ad621bd50746f79071219e8f29b4e1db85d1369129c05653a556cc64107405dacefa26563cbe767fefd7e42dec6b906f417dcd096f1d01b13a5e9b16e42508e0a1ee99745c7339336ad6e09bc84cb313ae4b5c96513074345290b9e9c1e97573ef36bf0092a9206d31ca331864bcc9aadd01b7eeab6fdf43fe5bca1b9543a8bf694274affb9acf858f8ff01253411bb58bc42e258d1a19454d16a53af7e122a113c1b4b22bd7444e02674a4ee7e6cb877d9fff9981f9ca72e5c8b750d9fa349f9b81792cb830f71c23bac00520c2ee24131ff84d59f85208ae4f9b9b898a59001e8dd5fefdcd21ac501954afee2b39d181e4a8b36152c0be03f21a65bb41c8ca1448dd5449d51cfc4f9adeedbab8a24e4d11d842586e6cc0d35f6e14e1d025f42546222942078aeb5d32bc656361eb650cc1111b6c0f96a8f03c27b4d647c8e9537c53a3cc2b86267f7eabcccf4f91e91688e8773d00c89c1d9bcea90fda7ec461da8f2b9634842daff31536f7c99b7455093c2e089ad11c45d78dadfc0efe338cd35959be96aab1b3b44a58908c93c2904cef66c04e5ba02271a09b26af5a46020d053d5bdcfed8f2bc4e2e7f595232f5800837d1adcd81c4366c2ca1a0af9c5845e26dc4cfe524809e65f1047cf4ad1f2b6f671ec8f30e2b299c192d436bb207aecf64587d217843d72aa1922162c65cf4fc9345c96bc5ee814840901d5390c179832ef630969c3e6974c2c527eee72be507b0091f2957b4fd6565dedb602cf87d019cf5addb4e3588f272ac4befc32e30d1c7e77f9728fc3c4a81848e0db4386e469b5e9b2e394980c90880bf2008936a06d473d466e5515ca6b5aa6ceea86e5e0392510d54917e2819625dce6670d022c2124d5be072588bd8ebeff514ca80bbf2462d541649a243225c49200cef86677e50e77a891f2571eda722ff59ecb71e31a8ec186b2c48013dee5aba7f70ed7d0412c1ecc7b932d9eb97377f641ca25ec746761ad3fe5ce81e2ec484a37f99c45776209ab2efeab7bbc13facf4aa448cf21d0c637ac0f17c1eecab1ec62da5128e22e3cc368c1e5acd6bf415073ca90490ac8062dcbeb1b507306cf49bb4865e795aafce34fbbe5d9ac69b8428291c79c03eeb9352452cc0a9689b18366449b332d6d5792a82c272775202ea8f0ed499eebeb7cc8ece6d11c4582086460338d7608229a7de5a01cd03628597fcdec8a15c86b71664ac504c4c595aa2c026624997431d80301c8a791724e501d223d8e6a0355bde7eff4f4e268cd12f88329211a74d46ac6524ba3e47d520f1659836fa4201a09d867d464634feddea919f8987424476a4ed3da5a081bf7f6b4691edbb780d002e39ddaca686859506f8de870d6f99236c17f2c0fdd17ba4b05ca7c942513a5d9507912d1521348cecf7919e4264b97f3a4cf6b768efd3db36a691deee80b02c4929a7bd78f0fc5634d8576045de88b08b56ea3370e1b29bdc935df54b6f8627bdf8d0b703fa4f23b9541e03526b5369fc6acff6e5e749c5740ed4fc389cf65bcdf0463e1a4290a2b409071addc817227bd55642eac606c576e3e414c85d020c76ae96aa6695ed82623af57f8cd9c72d48ee3b4f939e1f3f34d7909971f5526e2525bf5ecaf32d5c92f4e7476d1d5631d593c5a491afbb2499c527b5ba2e6e8d641eb2e17f5f281d0e450cbda2eeea83e856e050bba9de7d8d17bcee7f8356370a5a4243ec4fc6b9e4e1d90acd4aef5b4fc1c6b1f3be0f705ab11699dcece0001acb8e3aa38670dba979a80c8de1ef9c36d8db7d99e9fd3984023b871fd9fc5df50dcbf5b5049c84c29411edd6c941cf39f8ac783c0c76a3cb0d30b6e4cb39be278ab1d830e8864a45bde3fefc8991a8fd88cc6d91fd1f40255d8b9317eae7fe71ea3b6086e56cbb4b6ed68d6dde0d5254fdaae8b7b3d0dde8f559f6caff7fd519084ac0624d13691c2a94dbdfdbee509b2914cbe3b1d9829205c796405971383b933ea4b3260aff56736eda3f8eac2d1bad0d08bace7f81d0c897174ac2f0f67826240da49c87bc0e086b5dd82775cdad268b67f0830655c198aaa8826aa7fea3a9b6468fd151c7338e13692eb4322c2c7d3b51a5301046ad5888ea3e969977d177c79e2c3cc82b35c21073e235d3fec8f5aca5003eb192e2ebe1f594e28ac96bd350fe5ca0383ccbd1d97301209d4ff1ea0d60b7e08b9759ab09155cecea42de09e9b45995ad52b7fcfe60b3f767c674a024ba6608d4b6fd2deffd592ea373fec6e418781efa8e337203749c54956d3bd824c739ba0d63018d92c295393d64fc5715e66e4c17029437f12b39b8504b5ff293f375c900230100bd33783df00e091c6c051432a81d8a0a047ea2a81e6c5851643a9c8a8cccc29b836fad13f8afc977b93eb22521cee6507bce233eed37ed9a927f6883746c397ec56fef75b05b029190b8bbdd5bf0dbd3d4e61062435a0cc8594402286ebb9d86451e6d54a288da1ed9aba85f9e0fb76dc5985072b3cacbd4bac1a21d5ecb7cfad4be7e23f7b296f2c04b7781dc8222bc4d13b8842586bec4f390e14a23aa96cff794aeb070d9c3332e0f64058e711e8294fc9ebdaba68deb2881756c245dfe493aaed1eef3904ee7f5f9c2864dbf97359e6451e3eea71d3927427a91c2b8c7b7d12c36feaca01383fd705dc4741301d4f0c1b5b60eb1a4a47c2a2a00b724ada3cf750401ed43992615f3ffc64aeb21a8b5a8a4393813994d8e5e1dbb29b94f999362d621cc3d5c0ac338c81d6639b7cc088284515606b7b2570b110d1804b99819c8a6473fe023846c2e4ed48c9aeac41865a50b7ee8ef568e9d1e5d8e23249e96ca732695172988f52704fb656d17e4c37ddde127045e9119e779d5aa47201fc855a02fb1fd83b66f71013b0578fd197fc404a0aed78021ff0cc8f08d4174b11058c927c086fd11710d6a620de94bec4d567728d46d19670136b75e01490f83067bcb97029740a9ef389ecae4d355b95a10ab4dc333f9ac2b7e68143f5336e25b47a4475bba756f381237c2d24e6080bb9332fc4c077a34007414e0776b67a5e61ed235c10cfb0923f54b6bf06c155cee4c45d89146e00e68c7593c959b7bf26404eeccb51337b744ffca69ea6066d8276eff984e7e0da1b0aefb410d436aaedf86ba3018b216c1a18b4b7a7c39517e621bc34a312cc6c47ff0e1b03d716fba74b25df8da26a8a7ca046321f6e764ce40b863c4411f6443aafa85dbf8d9fdf888bf23327eae439e9b9319350ac5151f6677e133723649bb6b1853e9f88ff9995925bf3ebd3e7572adc26acf6d3f66a79e627b6c8f9e2b579bde373efbfc4b9d5b77f3aad2dd16781318d96953ad71dda28d89121807e5c7e2ef142e6d863e421298f501dfc82cf4cb00176305b89feb66a3d4b6b5c0c5e69f154eae207b52dd3675055fbb0e0236848d00a053347125d91d6d4783ca32452e9a4dc3f827500d58d9c3f96005585991a7c1437626fbf3fdd77d5eadd1d5a5999f0ca41b1c396db6ee12b410c4c0c9e683c849590024e4e8bc75e0a079b9cbfd7367fed3ea402c19fa0fa92f0b745a76c7c7fe3b128f848cec1f3d352ff426e94ec86cea47fc64aecef3e8b078cbf5b8f58324f08aa8a77aa35dfecc7713124497aadf81ba1fdd9c9f87cf65743a5ac832572002f7695636848da7cafdbbdb87dbd46ceacba14c8e378b8abbc5a6c12a8e92fe9091f2c7885f00226066da426e7864955a45e1272f440537d47d19002addeba41335b36a9437922952e190c510c193a25e4866f34bcb83bf744af61b0e8f3d25a628350843b02446442189bb407afe437590c80d90d576b440f7bdd6af04b8baf52163c4d9e019b497b639b76f1f4e72665326b3c962cb5d58fc39e2908bbfc60e536e00728bbb9ccb33a2f84b9890fa02c1cb4223b58e4a3e898d81ab950c8859229da911bcd17fceba195b3bd837e1a8d51528eab922a273f10634468c769f7c2d99d2d05a6e8dc13de7e1934eaa916f33e5a0a02a1de5d0cc3d78916145a87565526216a0a428f1afd7004963b237369b335b427e68a7ca64fbea98bdc01c66d4e364afe909260664c3c5094e732a001646c03fdcf4b21f2d5c8030efa7bc5899b28ca7225684667df7f03c2d242bc2369fc912b657e244a79203a71fd278237b5502b7388867bea0d3e690ed418e36cbe4267eabfbe60b6e5c1ffb5a80cdbc73beba1f0cb4d3933f180185c3be13981c47387ec8c360c7bc6e9a5ad720a4408709e4a6dd870c7a1ea0e9cfe4709829ebea3c9278e3b7de34e913a1404de9b8bb88a8893eafb5bdf1b2facacade93ccb555f3620193e74ecb1fa495cbdf2cfd51febe40710ab851aeb7d2c811541aa3515d470ea9807451ba84d95f7310538a8d145120ead901add87d15ff99c7e2bb5ed88ec2509497960f1435040a695d3bfa32cf54bfa0be5695b2e047b53dcd567b3a6f1c57c79c65dcce5b746952ad391898dd4af830f895d9dcb48d1be493d159ed0b19e970471c87f5614af2f6317f61e931341a6b75b83c227d03b5526c256ca8cef5115c976ead4b0777cd6d98f3a1f15176d1731276c072d301f06cceb84b83cfa6442e71a7696f3cb1c9fd6a3cdf09838345fef145ae965a222b1e99910cba5000081dfacf817fe014bd7d10e8915e2e87458333882ad41d68aabad163ecb09fc14c600a53aad9c73647bc6daa9ba126475b3e17279d96817ee3cc0532f66cfb5721d2770c431a5ca9ebe5462ad2c5c99b672a9aedfb9213af2210edcc9aabaa99621ca84907e23ff2387b4849e5e3f280d6e7aa401dbc4ffa00a63444c8db5c6e6855b9bacf8953e7af07775d9655d95f7d24bac369341e5031dd424566528505a8ff5232d023acec5c81dd2effcd7182b9e324f3578b28d2471fae4bc70e2617f9859535f86683a631274e7210142a85a25c89576e5013b4394fde4c64e92d8388d3e61977202651084ca50d5f61f1e4e8fe04c05799e0611066ecd4d81cea08671efd15135ed445b09f55a8c81f8a0795891bac3973fccffbcef0fd8f4adae28d939e59f469f68553f1ed524ecf4ab67cf877d47e7b9f8459eb4e2f071f01ff36eac84009ebc8d9bfa693990a6115b7298af90e8d3e3ae0808c740e529b74a386f254bd838c3df98bf6757cabfdedc7a2a29ad850b8af43a4d24b99331cdbac32cb17fb498c7af8d4a55ea8e70d02b88529084cd0174d9242fa7162cff7f5f7f8cb81d664141b7490931c531911f7178af928d916e78ca3169c22a93f1076c02887f44cb3ee737ba9e9c7e08213ab33a33d65cc4cba18299250b459ec680acf7adf3a7ce9a9c8a64608fc607c3c3b158a82fc44ad9624cb3869321812272517f9ecadcbde86cefa5dbd8cf913b2611f3292932b41adb8447201558980fe8736e90f09998bb98b0194b7377f6f4b137b4a4d80b44552b93ff7beb9531771bd494cd4649642fb2ead625a613d17d4e7ea85f06fb7216dac52893de2c12abaa94ff32b281e05fc98b4f8ff8144307bb965c70a36a342b48c85a5bbdc043df61f485b0794432eca85b7ae3f3e205e95e491d4490abd92835a23635c81d1eab9348cbcef4173d7d221f9a30b69e711daaecb519b37b61e453735f7beb819c8b01ba47258a596a396b2864b954b5e1c0053895835ee95ffaee5c02fac9e2cb605486d7e3fd60904e88e680740e6c53955454d2eb07cd6f499d4bbf7297fa86ee24c8c649104f846ecb45618b4ed0b583034c260b4e534c7506938817c325c45c94074e2d6ca1a24d5ff32bdf7eb52513aa3c90734f514663b78d1b13725b70b77415fa79e5e54324e4d51580aaaa3bf33aec0408515dc6c106b30801caca316e01f387aa0727a4311c4dd136f011a575c4a33c7fb4e5f17b09d5dd740be773d727c85351f4eb3c35a80ae0fbc4c37c10c1716ce63ec056479778e96e7ceccda95f2a989691e5f2f4d3957b7f06e83adef7357a1cafebb51b5f793ae922282c80133661b008a3c1b972cc78a3ddee9e1ded180554a47da3b10b6cf3524f8c235d993c456e94e7c0cfcbf202fe70d3a9aee2506e96d4f6b60a7870c508f75b7e23bb08abb19f7b780997244b5b67129a996856e83e937774e8f3656ae2def65f1bcffba3ef3393783b093951393afedd877dea747ba78eec5298b342a695105571608526b2b72316bef06bbb4a585b1c463f90a4d1729c4d14ac16cf933edc44b467b7c317fdc2fbf0e15d4af4176ec6492b5cdc986704473c18299bd82bf77e5a13f9c850a0e9f8b2733dd7d379e42126ef3ae17acfa62b9eec91511a491c113a201a1d22b6b21ae88b2bf235bb455c16c9116af9e15c3651f4111ff255ea2610c2480e68ca72a2fcbb2c279cb8d10478785a84e72a7130305ade3d6df04675fc1bacb48e2ec0df5cad39a84020fa3c4ebe1ca9eb404eff5a5dfb7e8a6f289a0349a5831698c64cf89d409b8b74df0abe6d677a03ccdd4bb31589ebbf8dd0e88df4f821170f008dc5ec29939bde7b7c920cab43fddb518b6148342475e3c151e58263a7b92cad173cb631cbc3d065b5b9039881fc8e522e4f4c3df98731faf4bdc959ecbaa9a668db8028940a795494c45f62e8f907caa0adfec6d1c77b3b74a758f8aeec3c628ba3f96c03aa03d05869218d9940b5c8116ec75fdd7af36d4a9c5163eeb4c944b598c0b05b92adb794041e9f7cefe63bb0c8adf6b6d7b1644479d118048dde9b6d4545dad7e5a687c0117063f87ab57026b87cae148b428fb67de8f7b08383d87235b3957879c588fcb377979c2a389da37bf7405c37fe6132cd22fe89b958e5257bee6635590754e4316b28a6990beaaf161ee477f0347f4df1a0fdeee304b2c52ba04e7a43e553dd737762aa3728b65cd081e313bf28eb8354c0cdfbccf34d2ede52542b2b752df48970b31fc8080f20b3a95f811fd8d45dc753b8b2d2642c20329f877fb65c3b302412e3ece42097cf0e87e5d68298bdc8fe6b25f565c96b4d48684ae5c093843f1bd0e2a176a354bcf5f9cf8bcc80090311b0c7bd8b733a8c4428f6c9d7f6d880e836977f3e9922e6bf65a5b7d6a34290fd45cb755f94b296d14c2e8fbda9fdbc29dc3cfe4f47be9a8855e352ec1a996b214bc92c8e8ac7b19aa37130e94913531fdf4a1491e5aa99ad30ea5250e06915c2dc81f1d8801e6ed2d6bc1b07f19f3732f9f41940a5650352fffa3eb579d62787b09e87955cec76adf94f887407e7e86a1eafc76b07a4efdf3e79e8c472b7d5fd3c003d2dfc320ce524e926c3e67866f8ad5478768396837ec6e2449aa77316147257af9fc5f7563623065f3a4c244dab32d589987d69c69fbb2f04485f8648a0010ee9fb844d3fe12dff6c559bb3737cb388715e8d7e3f75968c625236bec3d937bf5ae89a4bcd2db90c9d42f01fc802948ddb2614189f7736a0e031d97e2bdb63c3dc1f7b4c67e1508a8f640224b8fe04d2f6a523714fe006d001d18e8f5027d08f12ed7a0d71cc8408ebd1d65823d104abe162b47bd12e3334ec13934019204bed3fb5ef89e83ee5ff20d44246b001f01a05382cbf35a6eb2dca4c41f1358f3f47de6c9dab9e8c0f37f26b3e1161b8a1290fd83411d7cfb9d119c50e415f205d95061c752a938fca2d30c906b26f4524f02644e222baf3e497aa3955757ae3d0a11261a335cc25331fd1d510dccc98f139e756291c9aa1e604e659eddd47cb0daeaeefeebfbbaff86cccaacb0118cac3dda637a6bfb72def3b244b99422e3225b8f20a6789e592a9855d15331e8a93f52f98e8b2d0f52f7aad39273fa34d53afe2000c624002b60f983b1a322e18d2723053bccdb5aa00f3531f79f3d442cf43c114e2cb534d0a9da50c70d5830509395670dc4f91d440693093c2d3c5ec29828be58fc45004fee7c5da004e5d39df671af4c2734a0a5355f9d2f7b071134aaa78bba88ee55f0738ad9a6ac369ee9ce1a46dbeab4099df6c2d1f008ad107fdc4c59ed7cde3771e22c8e27ff625beb07b3cd57448a3bc4f87fc883ad64f33745c28955915dc9441357ecac8b33a9d2cbf5c695c6fa7c05392b8a9f69f8b14c1c4aff87fc62c6bf1b66d89fe15471947399303416116315e96c046f86e74565ef45691313f9e9cb36fb2d69098c00bda5b86a0c310eee727cb1791f8020986a6ecc8406658e6a68f87893820fad200e5edc720d5080eee28bc1aa424de426a59b219bead34ad169472e46c06ef69c4080c559a3fa32aa5227d04239c9ff8281cd67515a75eed6f52edbcd3cba3cee20ab9e5ec1d8f809f97ee3559f52dc132f78c0a5e8a37c9bd5e093c4cb00f836d56fe6dad5ea702df4f12710db7b12167d558a85ea0b52f25d249064625174500799c72e74619fcf2d46f7a4cdf5f90010741e2a7c672ea26cacf3ee0527e63d5a64b13a5ecda6090f588d2cb5e1416a7c19aab00ed0aef76e89613d091abceb3328ceca8bd7146ce475e792997bc985b9c61b6e09dca0d70d0c1e470f1398fa417073347f7083f259f03ee39e591183d1220141a6dad5734adf658d0b55b8ca8757eaad52fd890ad9944dcc913246aa20668dbc18cacd57baacbf0c0d30ccc1a0d4e5abccbd983dd14592ab5e23337a239dbd3dd3b5d6bec7a43ebfd76159706c47b21cb89d13f36b4a958f9875d5016d6c36a5b51dffe96d1598d337ddc2a7c26588c1af6a2f4e25fa465752a9399e6e73c725ab61b40dfe99f1e4ff909e3d9e1ae8d68f8f7464bc0a0a75d67671bc6ddea6ce4e852a9a4fee82cd2b3f904134587fd9345373bffc8d44e06d12703940c4468bf79fb92fcd206e904a3fd9638cb74ff93e9ca18302759818b6ac79b412c69a7298ef0742e2a96aecb7a70edeb8b77b20ac4b6ff1ed73d430a2d998975d98da0f162f0aeec4edb08941998d7edc46ccc5c0a7f2a8792ae9c9185dad22314f10e8cc16a72f58daec645185896b0580f030ac15e160f5727b0afd30d7ff9c1651b808d9fa760b778ef6440b406ae4d8864dc46ce0b39e9b8b282eb24d7c9276bddbf3d0de8e0a13fab991123aa464d8f0167c859c120505df881977b902273d5b649592fe826a5c26fa33db07619271b8b36ccc71291565c86c713a26ccb35064cbdff8cea671fa704552bef98174ca2c508a78f06a20ac0dd7e8ff7173de0b41a65611716c1f1b4309775bd911252ebf35907a09b1c41d9ef41b114510a4e47f19345d8c9d2002322986ad55926756d9b996b75195710d46e991006a3cd3bbac81b84f04778b4f3e33d8d30752c11414462a680dc19535cec89ba563c6dc519c3118be651f17c6172aa143a205829a0162260ddd8612a527813aeeaac6df3895009dd44902c485b402069d10037e3f677bc95584d83768eb1cd63a9949b2bdfbc6e8e88df220d1140dead1c05950a8409cf14c7604460b77a5640f88c8bb9c6a7afc95fdc5c4590c09a302b5a2d8b89aa6e01aca304d324c51d2105d74e4f7f296e4c3849cd6c70b21cfa67a4a5f80c6063532fb0ebfdd42335d9e098427f21a611e71d2724848f251346dce30b0828442457646266d270182eaa69b30e437891a601e99b9f92de11b30142aef215e9de162be062ef89604cbece057bc07669a52413bdff281e3ebdd34fe6a8529cc38adf44a0fd3c1df027d5f22ddd6c59ee4ce12ad7ab3db76a503a075c6c8bc190c6e2e8407f73cd83790ab6c7bcec0f9c452a69ac64bc6df96c8532fe3b39c81f9771b58392e89cdc1ed22e508f1520bcb9c2855879315564d6b190423b189d565a7d18265859d16ce2ac64d68447faf45443475cf2a40927808112dc0ad94de2ad19d707333279bcfea2d3c5c4496b82152c0eac693f25eb922661adf79d8b774b8588a182ace0ddf9b0ed80893429fedbcc4a0e6653cbc43a74568b25d32ca3fcec17cbc5131cf2ca7397cb24984ab8fb0702ca537a207f507f80cf5f37ab2a089e44d2df7882bd7b4da8053727cc9f4d584fa5747dcdf82f09a1ba7936a6fcbae722e179772e4cb86f6d35a3e90ebb8772df3361b47e904d4731a768295eb1ee7d9ab4ba7680a6feb528e209655530db4f7375f55b66a15c9ada0b82ab3b9bafc8e6a2cefb9a9560fd8cbed43648de1a6e61c4c229ba0f1990fa4d87f74667642f16f2f939e37709b443231d537584ec971214610931e5051b2464692aae4d19188e7e2f098625faae6859f77aca7bc695857f39828bfdb2439f48ee5c44d2d00586b165d1f4e4acf00db5ec831cffbbbeca27a4bd07c35bb7e53ba2c0fe14fcfa89c723c65e6f93efb77faeb9a3035a7e88627386ebfaf07f26d7be4f77b27c07f66601033c05a117ddb24bfa7ca1168b793846e4ffa1dfe1c2eef12a6d34d2b3828612b7c89252b66c82732c260c15b7e8333c2612d926d4d3442e73421255cdb4a3799283e4e63c46b78e56061b40fb3a7fe44974e18ec7a10bf0487d41a1f168499a16b0ebb8c8bed9b9ece361fd9a625382ac7a29137a2b389f9d465692194de6a53ed412ee2d1d2ceae26ad9fa046ab600defe68d163a5a4f9aeed33734e67f37c333da2ea542175c7afab17d963f1892f3eddcd0fe3f402af57634d43a68d6a1e6377343e97799a04b49a18b4a7a8e923c677382cad349f98dbbf75339eec8c1f61d83afaec4a0b41698f96cc2fd4d9d5003188863233f23679ba40bcec82f9e56af591a427adfabc52c6f2d321cf4555bff6f7b793f3035fd533f3efeea4139e472b26382c2e6a6ae9e0ad9cea874e3086b28aa97e2b9e4149ad03eae678b9278117a8e5194f0425a46070315afee8e40ad6875bcac74e3636cc2a7e5b7c4a73a01e51868f03c71acc2fa3944bc8cc7759d70770f0643af4c5dc03890bfdfd082de6b7f2cd337eaf041998aace90b28a63af90ca93d5be22e94a3d8411a189b4acdbb4af493c0e654d4e42105993e28bcb5bc2d61ba1e56bf928594006de178fc5ab56a35a6f8e92cbe27ee0982313d9b75b13480c82a67a1fadfde52b808ee1f1cae6c31c9033f4d84deda9222597ef5a349d6429e7f98e80b3d5a0ec272599eaeffdf240580a5eabeb57175a94dc03a7f1f82ca973bb914238019642c64b480a95a87681f3811b697cac0ca3fc3a9a549e2bf3a97c5cd2a8dd1508f126e1ed6f7b9bc2a983c6c5a4a5843a1fff11fbfccca232e78c66d8e66aafcad061b9fc95257883a59beb9a0a6e3e6afad4379c8a1141bb2de4cdf2c9489067d467745d6758211ed7c4e69f80c3a4048ec3b7d9aa847a8160f4136f05055297d27ca46499a21f150afb59171af3279572aae0973d4581a5f7e439a2c0d4a5ef97b844f736cf1506b2312e170634a64bec7ba3a8f8f38183c30f832d010a25e93a867f57d6754531cbcafd46101dc4befdbb410e9634f0de65820729afa2b19e2f25c553e86923bd9d1f4f11622ad570d2054c75ed31e37a6382161e3cba66e8222a32d2ec48fc27d9fc9ed1f13b54d92085f07f4a1682b1e80369fb681419b436fc45f21df0a899f9223bc97415ecf4997e99bc2a9780dc5b31246d429667bdd357e93e50035307adc6ece4b7df0f9e7ac4db614f66aba0a0ebab422eca5b07e7cac4aa5b6b495bfa10739dfaa72330d943b529b8be846e7f4345cccf5f9ab90b38e7505ed0e412419dcd7c46db343758761be6addbf0c9fcff885a9ca62343d45bbc338f247c04c4fe5612c5d0422e7df0d9a87c7ff22a8c1ba6493415a4e41f3c53742418693f5637af5fc53f178e08d7c098de6f7789f2457442f8c854042cbdf4bb05a41c38ed41760879c3aeae526423ce61f434e65c60569bddfb6bedda0f0ad2a08343b24f88d6ce705c313ddf64a6d0445b9462a701ed0238911ddd7b3c53983bb4fa1ad56ddf2687ee7a480fba5e905e75afb911f598de09902b7f3a9e6de78bfa13452dc5afea36c3332618da3ff4a7185d2ca6b9cd0670a3063c3e66aa05335d6ab974587079530579b22b50da57e69c4d32680034cbe8977efa6b1635b2f7a8460d6e631ecbb64515ac0c376a92c75e3782f8319c6889de0237af078afe3ee8d3f094162643c1f7482f20c3356179401343bce7c05ab00f7392a9e43c7051f3a3e7e317cd4b76f322916bb73b4f67276978bd6fd93366647f3aaa2d0f256fdf43dd91fe6c0498f6681dd4ef3174537cacfb6a4dfce3693a99cdd8b556f39286e007c1d77d8c631f107964d8d3a46faca89416b7519ad894739c9125b4c00909fbca14a370b5767245ab51f380ee75a8fd02901816aa7c99136b0b771989b04a2d8c68d65925f758060ff8562b780066ac0a848f6c1d12127113817b20d0c070feab6ddb6b344a1d49af0e2a96228a5eb3d5566e01e03aeda6ab4355b1769067c714cb8b410f8c71b5cfdd2ee481920dbb3c09bb7cab6fbcb3114cfdf82e8f5da71175baf8e77be8eca35b32760a5975d2c858b2c41ff637cafe1cbeaf081947885f58ab1c40c27a6377b09d198b849b3b80b24010b1c7b6310409b7afcf6a5a33aa1f9660954d03c8c7c9e8864ed50848d0c08ac95560b7b6133a5ddb36229275e7ce292afb00c4fc135221307eb14945265564401e9f5eab752af75309392e54422c04ec6a17e09f6199695fa0f46f79092edb2c203ef0774e992100dc57315188723c50d56de023bbb876a54bec902fc8a2ac0160ea57bb15674962f9b1e3bf4a95d8323e5d30782881129869d544d4098eca0ea2afa1fba03035bf81594f292673576c6ded9f41e4949ae0a27e2822d8e8dc734d3f81e6a3f17c94f91fc2c0e1ae296cfeefe3a2cf5f809aceed5f5ef167bce2ca94cd21c871085fc0a452e8588c31a3d80213956682c9017f070ca57515f931099dfeabbec19ab1292855c5601a4abe5a902bd0b6a88f710541d945415156bf11d2b3ccec97469b3217e5e41b27beb0c2a28c431bb580b28756733086da49a2d62e2e9596eef25d0d0963f06df8d08e9cc7791ebe9c5d9900d80b7176857daea47ad5f0a8dfdc74fd14f17181863438424f9a6823527cf54521d6bc11085046e3aeb245855c11eb3dfcf7a8910292d2b5eb7d2a3ea047cf6dfa8e0e68d955fd0b25f4a4700af701eca09e6e6ac8061461111026d2e6bbf62caff052e376d40a044e6c8b883ec42730a8582a5075a35d8383291f243feae108e53c256a83458c41ef11325fce043e1ff356d641c3eba55825feb33aae79db76d9b89b6d1cd99766457c6ea12c17300ecf1014c7f359334380adc531b0228142fa2d243471f11e3cf76d236813b0d9515bc150bc09d726826eb57062963492d5fb6870f320a4a03677444117d0573da5a7e9f9cecd48d63e017b9561e80e0e3baaba728b243eacee4c8856ec1ee80ab07bc9c19b9dfff6fa07c7f01636a7a2f7b2796af410bb3337c364b09e661276678deaf3a0514698a99644c46e8f096b118f7d00b24f50aebba2250bb30ed95c432996d9761ad9edfc86030f6824d1fde085a473dd82e30a50f4bdd2649d15be81f45e2e001268eab238f8558166b1cb857a4ed598aa8e725c4143f34644f17ff27e92a4846118aaeac37cfcc562efcd17d7e155fdc920db0e6c7139fe846c8605cfcc79e74903adcc67c92cfef1e384f07146a1d6b99b693c042543b7a1db1915f0661b6c0fb3e10f3f8150c3ca7d46a5ba6a4bbd8fb7a41cf1e0ff399f659d26d0fedabac6ab7f252b28197b77bcdc8cd5be4c62805e7748634ac1bcb886959b67f9b21745deb11576a5187bb03874ea8db88e1d6c2e03a745acdbd8478dfe8c3afe1afd01361157e2c5e9d6a099da173050881155fa4232cf74d6424d1df3cac077ec8c8c0eef2abfb8e89a2a1d0d496e84ea75d6497dbd6ab52c28f9b0a2ba2613578953b96f481f927b75551617c36bd45cdb54d68627e5a49d54cc0f988c2647e5c7e2f974e07ecbea10b16a40a0ebc6497a070ed5a2b51c0d812ddb4f856ec8905065885844fdc0c99f9a118c7b6963bbde2a9560fd3e1bf46d98081f522612e79a2f9376b9cd30ef5d039b869d93b84783a5c157121c4361abde5c69a4aae43d9b51398843aabffd078ca8648437560d2d271da1cfe45a89304cf5278d83c2f791b410ce6fe2767c8b876d71e132d3bf1a54e82d795ccae724e4c0bf52ef72d8ce14a10a6b17417f71bd35cd656447c458dd941c14a521ef7c540328bb187f69da3be74cecd570dfc592de7bf8e8d05dcc7f47ab23e792494cb1d3600435ba6eb73bd48abe0536047d9658c32f2b0eeac7c35dfa21d873a9ef829f390553b36a2e10cd0bf3952d3b9a4c2ada276ca72d3affe49e5eadbd297034a367309a443355f729a306e4d1a09879ede51076c4b0ca8c1e052d548f3ec27976ec73150796c406b5ba831b0099d81dce490e1a932b756203a38c3bab35c2d77dcc2eebdb0c2eff322deb3280d713c7104541f4c3027632bcfab496f84610127515b71063824324d6f0ed3979f819dc88e118b20bd49909296d2fc3fe342ee5ed342a1d862623ebc7914164f7a8570d1f3241c0a31242ee5cdc68686d7d801dc99e81dcf052b9a5a37c999b695fea2254e1cbd6c8b3b05b1c1ee5f9961915cec1c325a9907fcaedfb188f6a25a442f7b70f6c533deb6c95633e7e80f0ce5124df57795f18479776d4b382c1e2e9968b6f82dfb2c5f7d2b6e09159f2950fec1705e916f4817b4c18243abf6d3cf6a8c9b521dfc3aaff201376987cecc26acc0065c5ba52844ab15c5bc36a1a33da9fb457c7305f39fd92f2bbaf2b545b8dbfee073213312172c590d7eb0d5aac7af880365db48944bb5ff97a957c4164d2167946f1f0ed1c8541636effbb86eea8ce49c84b86e69ee1a88d31bac69789639a9e5319926a7b3f2b64e9f3253e27cb00e097389148a211b0619463dbdb97e96e38b13a010909ebef4d833322dee514f07dbf142904ad12e3df089f2f2b00cdd074b7d6c29fd7d3b6dc6e3773ad9d4fdf00747b895aa00e9196290462b25c06c7c811264b40b6ccdd1c4ef2d64b283332a77a6051fa5fde5ae94447c6a4e27e2fca3f2ff622bdc3d185bc0aa99b414e0f39ab0e56195466b03ede9be081f300c76d152d7ce8c966b5eac4e5a196087f26ef7576671dec02ed972be7fa6890b80e373a451ca6f8d7874667817c6682fb9d6159ccdf221805e50297c23d56df433102a98ef7de2d72bdad1a1f8da916ea67476d7718f1ce3ef69b414ef767aa534932326856a2909d7c3b45be9202118a82d4db4f1e16869fede77bd3f9b5dfdbab38fa1ed2830bb4f0a4c5664df223ece413602d3ff4bee053254c373cd811d4179cf6e49c07cef564396b43a380e03a1ab0cec54a857742f3d4ee3c26f5f587ede07417626acb8d197a7b8c5e6a4193cd3b8adba078b557a82150983213e677cff593d578613aa604212e42ce5f206dc8310ebc661a02e3cfff94d0d07462c94e12c7e6628d178df16130b7d35fbf932592680e7e23ebc2e3d492f2b0f88b47854756f1d1dd9fe8af6d22eb266242aeba38baf1162b82ee18385413e3d3a7f3be5cdd00ad13d7fb44c319b5db523058fac6b86bf7f3da8110e598a2747ea12595f4cb5cd0e205fb50a71dbe71d8f6c9d0412d27d2388fdaed49518d7556853c1d61e4ae81f234701a2eab4bf97c64113d52768246ec3bc4633226308f5007df0c00bf79d220b5aff1a034da169a2edaa86d05ee631a02b58af1f2199708fdcbf57149df6afa995cdeab9c87efd66cc64009df9acaba071a9214429ec7a7e13afb8140b7764d37fdc8acbb4d481e1a57cf611f79c3cbf4b39e18da37886150cca21db9f5ae1bac9f92b1e00c62b29964dc4f7186e9ff770368d630bbefba8d0aa34e9b61b9f4568ecc2e49665c6b2c271316976c3e21bfc56656ef586a6cff79d1c2229b58ef5914023dab66293c7ccf3016e86fc40d0381a68876702d70ae3992105c72260d1a52c636b0005cd115affddeccadf7dafb208ceb573263bbca336b90af8dd2d1c621f8e574575b7ce6f0121441abc03e65a32385d812383324de9c5651601f3ccc0bee0a08d9c4a4c5e16e465933bad581d4c6b2750c34aab38ae291cf70171c5f4b7cecf02807a9e9c819f3ba85e43f961b2f3b5cb289151148bc5687ef34f7f5e206cca4da7f6e6e505d831cd51f566b5744bfef1245b5fc51e4a82d9d7548cac0118d12fca5e0d57d5058cf1508ecceca3a1e466a849dd511d2664a0195ef5ef3009c1a700b46813abaa1321c0cab1119d2a1aaa424ea24af6c95b8f0e60ff3edfa2311193fa13a6c8cfe3d0bda948852c7cf1bb18be912304f6c28648c7410dd1ef03fd3d94aae9d79abf8127ba40c11cc8dcca37ab6ed29406d9c9efccc000b81e8613f4091eb366752017fb8d67ba494dda1a8110ca801bfc3eda31cba54549ff7275de371e745be630b15a49b354fcfd6b8c56f9a58bcc82346ff5eb15dac3f49b7f5096ff8d6dc4059c35d54a19216addd6d98c5b85f3661a7d9a530b3b1ea3f28d66c1c5cdd2965479f7009a68b308014e38883a6e256036360e19ab152743208da2f3cb3ab8d29c23361f7325f2d6d1369a701a4ada62aa27ba45af68144ffd7c5012d7ffc50b4ca1f47e8b7b636d7c547f6d457abc638e0d42995e5fa51c78af16cf9ab8aa425f7048c92a94c2227c89db4bb0ce914cd6c2d83cd261601af09c3a28f013a5317f2c5295e01891951f00257622ec788d2ea04ed5423ae5857b1f84b88b2cf6014f7140203bd2de847c2fa0131d1b9b48dd18f804a8c133fded2c3276ad33a97c35a52296c5d13c425fa36f0e12b990fd4eefdbd39d311b19831b38387da6c441efeba3e2d68f59f3a05aa6e841582e7d7df10a91cb1032566886dd66925c2aa32dfe62ba0e54e5b608769589b8e46a03e990272a39ff78b70023c073f73fae59f8a97e572e24661edd7603c39386e1f89e3bbe4285ee4a268bf642ce368c1462fa0d60706f1ac885e7ed39657d9c68730d95a18a86fed85d25655caf00ec766ad5764677ea6054759bcafc829dc84a63b6909195d9cb7b7c24e9dddb84f68776bf875f2d41aa788f703b1b6d7cdf3b37bd92386776dcd0e80a3b839237ce78c9f62c47a816be5bf667a523adfe1b649113faf5e6bb4133bdb48aa063fc934e83086ea4296394ffdc37b91ce566c99b054072076f9024ed5b09f6667bace46815be91369432bfa22c71580226f68efe7be72704bfe2fb32af7020e938f080354fc25fb88c268df843f8aa77bdcf48508fb11873c73d69136ed3ef7eaf455b6314667382f9c1f48889cd23a1244d323e5d94eed4fd3d6047c7c138ad7047c1d1915f3dff711ff4914bd1719d164e9990a7ce3d50e42d2b7b1a3b5e975a1a3fd56149c707239bf53e50837a02376c26381a860732968b2bb71cc4e6f60cfd74cf1714c1225fd98c91567464fbb220bd8f2f0a99edff6206b5f427af41b2288ea1ee8822449cac5b16dfd0939779817e913f676cd67280c5f759ec9edf3db09e8cd7bcf1c1b2b0a714bc47b46d7615b7577d9d258ce6029736ddd40554f1214617a6d58b5d7ee2a9737e34b49a520f2272aac9d1307486dda7404d864c87e45e4d77f576bc0c970bb757a5ddebdcc19e9b9730a312b5395439eabfe2091a49a6b0fe69a4dc188276924f6452023cdb4de8a31217b1db89e0dc48111b3ee98f9e493e1021b920d221cbe47cf29c31cc8fc9b323ed90e344d8ccce1e893d50caa4acf5506b16c49354d0d6b7a689cafff251dd090269de2a95c82dd4986f02cd94b2a5e2ecab255b98ee56bf7be297827dc78b39b5886a07bc972b673619c8c15853041980c1d9b0cb933baaf7740c0b380b3a2b7f5291ad53f849995aba297d448d3f175684db10f2737fa3b07ca03382542d48edb52b388d336965404bdf5edf70cae8dc6de41a602f6a6e99e031ff1ebbacba25503ebacd3c036495f2be21cea6630b7064cc33ca13ecd3e8f2d6d3cf800cbc4833dbb1c6f79d2810ee7b881e62358624e48513cf0c7dd6f7ad4671befcdf59e1002baf76843b0fb9c3ce2212c112210a7624199f14215e6561e72b407bb5f2b38ff6d21dde9522e79d6d4640a404ad5ec0e5447486f41c341c5bed2ab2b5f391eaa5ebf14a1d5806f821d95092af5dc0c6e8bbfd484ba5821aaaa61a8bba9ee74bce4bf6a1d13d0f43b3b66a3014de2936fc27f618440ac172979f5ed12f1407350a54e40f26ded4045a5698b3116b98c2618885f410cfac4991a44e140f17b1b15ef5f012b751c39598097874cdcc7ae6b24deb236cc2f5aa588a73b0124c0d154e62b39504c962a405fcdd8ef7e84dc26b40c8f78756f7b5c4f9e7b8c968042c889acb64ab2075551ea4a335a94fff1d97c9d6355c990f2360d49e5d5b104996f1f20c1d6be1145ab703347b94d5ae346d0a4d877309d31670fef12591fe905ec858c5c79f2c7fe2c3510d96f474a2b4bda35db9b1454a52bb37b15d9569c95133c379e290132f879c04c6ad6f598894a5ce9b92832a9d707e0fa24b3cbe256b9ad2a1120d4cfe392a0b871382da211c32a5e51427341620fc21ee1a62253d1e379b72a7e9b0f4bcdc50824109ada88e4eab54823c6f8b0ace6be213653dacbebf3efcebf6cd6f8331c54ccc2dc461545af135ed2085b948d015457fe1937633d162ae528d7fd339a1799b45f62ff3b0d1c20c384942fa49fea7d7badab7d70b57a83fca00bd1c9eba7369e2302b22f35ac8b893f2be87146d97d91742a943fd5b15a00afb191e8837270cac2dd226fad8a831f8a0a328b357cb8b619fab895467fd0fc8647f3c9943cee92bb00a3b38c333fdc43ae6c4c98503ac30bb1f8076a174ef35bf79f2dea293d9233c1a12f9dba789cee5e28837186307a190fb8a1e976febe6720b3a390d24d5c21f3171de325ea6e00ffade05cd36d4aae142fdb895250095b6e3da72b39f2c6c494199cf6c3d7500eab753c1cd0e69eb60feadfb2ea774e273ec488045b64c2afb94ae14ac783fae1a8afa69ae036bf8d3547256c43eaf1543bc0281c6abfc1e11f66b4bcb8b9bbccd1be4a4f311b40972bfb50c4dee36257951d82c9c084b3b708ba3e02854468c91cb8212a08f70366b28d6fdf1ce35091e8bd04af45168ab2a5a729d60177543f2de77474824fcb9281d87a25d22cf0fafaf3bf10463e5456a7220df8c8a66178d34c304fdc5055a4448d304b79454e9cb8085dd5c3a8e5a342372e5c30ab1a1c3c1705b9894510ab93ae382fa47ab64d70b9e9bbd3640fef4f828d24f862e04124305c46bc225a72b4149cc5f35a26702db77290ef656813fcb4453d002c26ecc7b218f56bfd5069ebeb8a8bec37d28f2f266e690f05a649e3143ab6f870befe686a2ac69c8f33a52531733d72a9b922ed1ef637f47f841f53fb1434891637023d5cf00666b7519fcf3a67c9920c4cd5c22dd3344d743f54df579612dd0a4646483e6b7433f78c90be2fd4b78dfd1c176dd356f448679a9b6b293212dbbf45352dfc3fa2d3f5688c2c8a8884b2e0a8d9ad05062bb24179894a07ffaa90a9c1ea3e328a4f2afbabbde99b0aa2c55d29b30cab136defcd0828189af45e82c2125f36b57e93c8788f660f063f2119df79d77323ab721c3d77fa84217aa5a3060cbac10bde0b407d8086b3435f376b140c9988bb0aabfaa33c6e5ced444ab2f7b69ec5ed3677c1417047561d401cea70ec63023a6e28a679f3fcafe386599219208290ccf8647a9eb4940434e8fa71a9d664ef58c92ed31ac18036fd6cf31077335f704a56e53091787d757b76ee363c5a4eca4152efd7464e7d9dc9eda0251ca95913bdf762cfbdbc44baba584592e70eee8016dc3aeda24f5fc0e8e703639b0122dcaf7d10eee9e740730dd284972dd9830f6b0135e0369ef4779090fcc888922cdb60d393ea7ee7ecdd63d1e66ad53e0d21ca1e52e6eddf9efa0b329e93fda20d6e4251d9c90ae0cc7aff174c106bcbf6382f1d2a6418c00294363a8df316988c9e7caf38f3bf6d087cfbafdc8ebe84e5468b0cea3eebb735d10399a0d57531403b69c855cff474dca7c0b2d0d2606f8a29428e6ebfff66ac1cf76ee000bed5c54b162b6778a38246dc905f1bac2a23b291ac0f5125cf7b6b2bac0b3cdb1cefe5f2c77dccf4eabc8bebfd81f2a5b56f02eb97d471c73b2c3d8b513c9116bb57370972b01ee88a637d1b6e286c38e110186cc3d1c806073eed1725eade604cd613bb42ff23426be09c2ba1aaac025273f633655787675d9fcd1bff08bdf384aaef3c15c551361668816823005f51ee88fb66a58bd4db478f0566c9d573889c296639ff1dc6b1392a21fdda66713260adc99120b5aeaa36566daf00654cc7d26a8df4c559e3982712e0647c5950bc989ad9346655bb647e8ef83c3681f4c1e7036340633ef7505517869b15d619fc496da63f7d131008d7fcf0cc91d90f6aa0d56346871a987dde1d7f6a85f482336ab9a56e5c763ecbdef883824980503e46e8a0da13a8a164006706fd00cd69acb6ae7df3716f2c07916564b12db9b0992558e3849ebefb1e9d911fb78cae4d6d2c4d2b8b1cb5835ed73983211f18a8291052b1acf4d59497bb2a7f2586a527878fa90a2a31edc190f69820a193ef7511db1f465d92583a5d05cec4be1d525d8ae641f3b17aa7335e1b7bb781140fdb29e044cfe62bc6387747d6a818d60ec8edfd61daba33286481d6e585eac0d1dc9d7baa803a25a6edbff59dff2506670ad8e397ad528c02cc099bb4b3c1c77c6bde8edc513f1d4ab5c3a54fb40c5bddadc86a3857bd2b83c85241f1594befed0588fe5576855f60dec590461d255402c313abf31eaaa7ea256987bcec83139ab45e34dde2ae6e568d5815ff4bbec4dafdff7f79d8070e78c6f08ac6c9a99fdbf5f59cf0719b828bb9e737973a555396889c062e929d604330835157ed5f169175f3294379e70553aeb21adff806fd95061124eeb5d111e80b0f42e70f528d0baa1ccf48e29315c7b9f289f93a2891c2813fffe3cd958bffddf7a947ae482d4db08808d317bf066bf358738ceb1633333c0d836b5f41aa6b8594385bbe29b497016150bd5a2edd9d44a06a81a38cda23a08cde068e423e714832815e1279f54adc94a9a94f07d5dc1cac235629f3d23bc88f046378ef8ca27af17ec0ac8953137ac418cdd781ded57b8ff8fc597e3c245ae02c6c816fcd9905a80a8b86b74a686d7226cc868a194a3be3694d1d19896ead765072f7a7ae835e75665b8aafe75ac03a5fa747465dc0c2059604488503cb788fb15dcb53cf79b2dab5eac5014ab4ae68d6b70228b6078f39c7558d68458f7f6c52f349f244ad53f97f2614f82b6415c5a0bb56d1e089371be50ae262bd8cf9e1782909051761b11032d9c1f1533ff1e054f2b647d06ddb92fe34f3b43137af8f308c7b29c3b464749ce2ee521e0e87709249801f2c8a2038c46c926f371b04cac9b1dbf6bb3e1cfa7300ae6c00eb0e857899d71ece272e1b0ea3399fbba469c456bf612de176704ecd2625a1fcf0fc932ef1628244944d08568108697d35f4832dfdf4af0ff1eab6a868306d2e3a41445cf32f7e53841aa73a5add98908b0c7e6a7bcbf59267ca86637049ef432e19ebaf4259cd70466d49fca96bb2dd77778c6dc6a91da9954df34388b5f9fc204c7b58fe3c2345c568d9022772319ee42d0d57abb4900ae28e03f0323cbcaf40ed6a8c4e5619325a561956627247e32bbf99920c072f5ed93a0ff553e897c6d4fcbc05010cc5ca6f395326f88b0f10be37bf46c67d54c178ab9e43e895bd3dcc82ed7f35067952f444a945505de35d18c684e4a26ba043483286ae4e4ece289cfcf73c1add55459c9c73a9ee0b36550b985c9f5f274f69459bc56e20b5d22b6e381181b83236d2f40b7beb53d61c5751aa4feec0a520ac9d320ca0990785009ff7f617d189325c469d6bca6dd176187584d20cb7913bf838d7c0c3917017f58cf2e8cac86b71f9463a8da897b3771f081bb6789294382f14e4143c04b3566bb61778eda4af38f49cc0ab0b2bcf33482952157648c085a46bfaf7d2286d475828205ad517f43c4c31341b1da09ead425bdaf48bc74d9ea1b5f6b9321c7622c63cd358599d9efc3252f9ef2d3e84cf11ab6188045c2127e16c9ac76c1818e352a9934559a7f18b8fa540d62c5c9fae8c2653b57024c7dc16abb435743d2970addd0f9334da0b987ceb0e6f3131d96de0a29e782296d9636493d3bda2e944c71fb22fd85059e28ec7908abcf6348b1a0bd3424ab0110479e48cc86632a2a777ff659908952388ca751179f2581061e662ae9376768713b2224d8952c58b6f283cee67a0f27f54563a2b16f3da1d58340b2777aa142cc7fda0b23712de7243dcd793ec59d779ba6403e0aedb237afe088430129dec3c5354516f5a706664a22266e29545ba6de3d46c48aa477ba453901a16a0d6a5d4c7961e8390d829d65d6d93e6554592a55e374a36ea5b52afec9573216e11abcfcd6f65864963575f004f9bbc21fe5f05789923a7ad3fba003efe05913597acc06b2474c44c130401237dd06e644ba0c707ffb1065f63e8a22c8a9cde4d4a1cf5c4a712261902a8fef20f18247f21db49cdda6441f8d8b7244970d85571bfb28904f1f7eb670f9f466a9e6b9eb09519e9a605dca6e60c240a56a1acfa0deae98ee68650395c27a96afc845809fe7266ee38ad729c9861d3ccfbdfe1bf5c62803d91703c6e295a6c28bada8118f75c558bd572b01f1f8b896ccc2d910db939fa3ab03f51523acfed812d571a766f027be6b77bd4188d0baf8ff871ac97f2a61fee03b4170f23151b6670b16e81874bf037e483527dfedbd63358a87684939179e3d68c8bfae76e44e93fcf5a5d9ebfd1f53e1d4f4271212deea85907e35428d8410b799e3163869e0d0e71d04e0799c010ad24261fdac70dbc2398c9713b3ccf4eb2bab402d35ac01b54e6566b9c1d62404f1fe71f1f016e63cc3dfeb4160f340360ff2628db59268ba7bb849788dce05f2aa2d307e2f06f631cb4385d5ca1a4afac22c0d28250b07a53428ad5e26267dace1ee2834441d274eb1edffd9950fcb0960c4384f94823b97847a7e3f4d1a827d16f3d2d10f87d9ab75eaf13f7c4e134b6a1e4b92c79a65df64eb32a478358582548c45beca6fac1ae00375b81c1390e75c7cb66781d47f09c2c96fccb8fb1b2af3888c88bfcf7f31bdd5a773d68b099bcd2963efc7974226ee4ce22c4a0f05e9c575200fccfc7141ad7d2e735e835b2cb53d3cf5f448217eb50eebc36ead52350b51ba680fae034aeeaa84f02597ab52616896e0f672a3db32c196f1690263304b39285a4b75b71ab78bd0b81bc7798d357b0ee3b6607b4f5c28be06d002b065fff99756ace7864028a4519bdbce70b54afb42e27ae194877b8108a2dfe334a9c75c80ac87917265e96474c3ac1c9b00fd4f67187b944f92e158bd474310fdd155ce919d4e13fdc30341ed62164e05c20814b8b0b4ed213bbf47187701392d93f877a0a53fa9adb91fafb1b0925346fb2f67bd74904edd8300a4b8728f517b469b62ef98ac6f7578fc760dd4c748f346b32c307a4ef26b7087238e4d6b1fa66d6176caa8955c8a4d58fa6aa3ad7015c87d354bce981f11229236838a2561daffd41ce4c4645a105ced678ab82f25d7ba3c3d1eec3b5269f51aea256d5aa65580818a40b493ebf0e97f056b5abbdb9a36029d52c3322824569e1bf48ee0c3b9ad9ff6f71c2a47f95783913b283fff20557de6ba2aad8249f70522c9e1e8a0c843788669a3cafe230b5805856c67826a7089e94f491d610fd1acc6c0a176fc979e41df436502e104adbfe1f2874cf3825c667c5eb3762af005014945338d268c0bbb6385e0794d1bcf75138d593624f8bb71966ee7fe24dc4178bce9083c0611a236a8330d83415084c24c7d957ab57367b1f544bd49f9a93b3aed6b8e3c7317463c6de49614f6e0e6a54c476e2b57ec90c2b5f5427642a34e5a78080aa92dba0ba52810452239166d7af79f82189b832e652cd480d1ff5bda69f30895a29612638165d8b2843d93b9a93084d7f0a3cbf8c9cd50f398ad703d5c560df18394f1ab72b93bcaf57c4be5110e3ea58070540fcee25c3e549118c8e9e1ec95f6e310e8763fbdb66bf7425bc8152078493533ea2a45d09f72bc61849628be4cc8c190c96b39e153dcf2e3ccce3f11c4ed92740db789240daf77fc0dffa5d96246e1aa32dbf3cd04afdde85b0912ec2b8ccca1c2459cc7872b8a8961b6e5dc8e47bcf03950fc7cf72e992ec6d85cfcfe9f0466171b6873e998810e47854eaf70088d52c2aafe627150bfb01f0a06ad70984ebc45e4f3635feb16def2a517594a1224c27c4b873fe3dc6efcfb003ece90af3ccad2810bb816f5dd655a05e03ae00ac5a537015fe1dfacde9385af213ae116c40c5a191f104d52a47f30929aef3bd6aa8c4dc124758bb0487e80260f4c67ac3619c96f4236668c6215ba69e240244e0e3ae01b5c7b8f67e0bd4e8ba758ab6a49060515391edf3f7a7e0d3532602196e3ce2dba5288766e7db4acb38d4077535ef9f2fc7f22e22b8812f2b570b973420e9574a6ec9199a47029746811e5edce6e51d7c0ced83288f3d7424983a1db519a2ce60333b78bd22ac2dd33eb962c32d9eb7fe229f5656dfc9140911b3388eb22477c18bc6cdc2e3ae6f4ad1db972a408958f4e5183c53c5fbf8337b87b30aceb1b0cf20e5ab57dbfbf9121710736dc3d8fe607addde15e70963e2725bac3b538ed5cdb7c51c506d30865604b8f3e58b03d0ed9e68b9dde111581796ea14aff9841738efcb857198095be3898689fc2b453dc55ca3a0b90692985358808007ce606cee740b5ac7b6e94c9b1f024bde151d381f55711e65bcf12824fb7f424feb748affb9d19ceb2f574e9220087c5380cf766feb269c862cf669c959dedc20e713f526311c34edd97b903e0947647014e1c867d8095d98d94cc178fca5befe57181950f51e0bbef0a5335c92c3751aa79e7b4046d948065a04d2fa35725274ae6079b04dbd0453dfc787669554c39be696cef87245864abc1245a8e4f75cda524beb4ae515bedf90f6dcc8a125c7bef11c7881f973e51207cf2107ce79abd89a3fe3edb3f420d8a3ede3282c35792c43c739034f7a1ab9df75b68a725312ffb225d1fe865dc6a1a3899e6c4bd9b50639f184b3b5e7c797a0a61038a571bb0f0aea8ca4d006291f614ee05d0938f4f8c53b2fe9e23c590610e6053129d6c4d42400d322e4d9a77e9de05e0d67ce4c3986073763da6cad05781ccc6715162f9b02dad0780e7758f77d8b525757e9cf3388fd97f30c6191e7151522fdc4dc1bad6373c1940ab0a95daabca62b1c2f2cda95872f009d770a7bb801080ba9655c6554c899ae280cd6b98b86ba7ba517a5d1b054b18bc7fe7087eaf407de660450b65859c59b2045264adb1eb1efca6b59f9c0d9abb8d4bb5aa036660edf4b9c123e75acf22defcb039b955f52c57bccd9022acb9cf89e67559ce8b4d2af4629fb411ccaefee4e3fdb9e70477b7a4a2e0f171aa61559b42f7138309dcf3b43376a2bb6c096cb54f8ceef26781e250c5771c1e829f0a051329bb2afc5cbbffd69e85f1620ca7f798139a545b8d49a9d658d9bcad8922ffb06c8645035f2091ff4948eae7d81d5e0190067ad71fdc94245dc72737945d04334eeaaaed97a74ba21e4ccbbf2e5080031b5a8a2326fe67e3ce9e2fd9795f365b8d09d8d01e35c14cead1cfa9c7ee3dcf28a361c2cb84bb662c89d9402cb00b082996c8ae0b519eeee8b35a41b6d60ffb4157efab5ee366522dddce64d6cb168f7435fb610e5b0720489aba616baebd788de3cf5c911ba38bcf0b3664fd3a8bc70d7cbd50db1d045ac1ecdf6b4b18eccb0c57e5884f98ae1c39840ada3d1b97ab97188c1b521cd241384d2ee23509b572135161da9d78f0aa0edef2528658ce09421a4cfce0ea4ff7a4c386a14bea8a20823f8831e484b770d91544f817c957d3491703780b8496eb6555f1e3dddf2d042e4251f6ef189f09a04477595cb923ec280261cd7efbfecb306cc54d6e46ebce2ce0e1e45b5f34f2b504ac510b0fc07dc10af4842cfb956ecdd9ebd1d0e2741afac93c6f87062ad77f86e03e12520e211dd5bae1703ceb1f54f208ad250af52a3fd153ffb4d206b8b452ef3bacbd29d66e697670da27973f2f57960bb2fc5ff6d0a3d3168a26fa046d9f7bc93f7f204d44ddb56c09575161d0cf70221956c38f0c65a587f61fe2bdb956b3628db251ec7de6b7930932001434066b651bf1ba3c2849ac1201c278a51d479f876b885c7a069b4ac42a3ff7448d0768c1d3dc80dae75635f5391216506ebe39b422632f034ee3cf43d3b977d9ef82ab859fae60f32fe9894c0ce84b72804d7499264f4044c968d454fe51e9bd2b2b9fb5e5cb14202d8a28737e1bc433b449b0b31c169b82380867e0679d13300c47910896e410d830467602a155615964091e92f0c662beb58f671d8e3dbac591bb0a2bd1e5762508f9f0f2ec73fbbe5c5f7f65f1c809e48c779e59b812c6aa4805b1cdd89d8f5b92036e17ec468eca8ee33ddd863fa41d3a5edf20d05a5dabb92570353585f603f608fe6783b5752b38995567594796d980dfe7e4df07024091671208c2a655f1a27f0381d3c9e47acd0d14d55543b8598309c5d609d82fb139345fe7a15e1e0b382662f95c85272916eae045b02bf164804654cadd678aaec440890112f68d12a87e0e6a975e2442fd696b9af8a124310bc422281ff6e5cbf5786f9ca2a23b4d1f15ae6489bed99abe815c13b4b3561ce13d3728ccc79444877048322062be4ae9b513c021507d2fdeb6ded2e0843df506a5c6b628cd2555badcfbc1cc51efffdbbdb2d90927b1470d1c86b7df058cdddab5bdefcfff2dd5c909bb7bb3e0461acfa1d734a78829624ccbaf35db26629ad0cf54934c32378c6c1070089f9c5c9de52fc07af4f7a168c371143ca9f5df76c93d1244c453f80a5bce6bc1318e03c69c535cbe1c7120bf1cd276504e36f6dbb7333e46851ab601bf41fe96b550eec57db538126468660ec2e3e320dc35100af384bfd0f27cbd5de414723a5110d8669f8175468064500f0b587c82cf8aee750bf179bae226c87b8a443f65a6ebf928f7d5092b6cbb3c9bea0ef7d6c1046c71c015be115f6ee26064f9fcf287b4c9e71bb3f47c120e014ee85cbee1de45b8581ae6d5cf8702f973a055b112f7205d5e9b4fe3b60284c526d1bf65a521a79fb6699fbac6fd96c815acc5ece9504275a87b185180cfe33ddf94c0c7862bda31aa3eff29576d4b4207ee8e1c904b7c7130ca044a564a6ee9fa7a2c63c68df8650844530526ede92fb552b6443274e85deef4875a1ab8f4cbc5ef7a8eec34e3a774a70b17e9a5306baa19212f2304bc31bdb50913d45a215045a7f82e8965a9c5daa3059f5a3080144b636b15355788c552f0b960c3ee108b0a91e782549a76f024cad8dab1573f0daff88641c4e8569437c1c002ac39aff6db10f93990613aff04dbd3b07df6113ef79e2f325d9b3bed30beda865a6281691a8d90dc63daac9c7bd020924d7459e0737625fb6379482fd55ebef81de40fce81b97d9c420acb8de22d5be31340af032dc1be356acd15f06899ed9f305d6ce87688c153c289f211df3fb376c127d591a2496c1bd020f949909890e20d8871d88430e73478e75f6991e395b2cf24739035b996f7e07d31d84eddae3c2bba3fdb635b8bf6ad3c1454b83a3ec3837786ebde44dfb4c0a850b2b7ef4d70c32b54ce018f30f0e38fb2c1777d13fcda99763bdb3aac8a26279fdd8bcb82c0069a6845d9ccb43d947d21ee242d314c3f6543466d333fd7be70d2dd0d9af89c7ad70c371c618e0814895efcaa1fd29ec2cbcafd6e20835b677d68aa6bcf9cf10f15ce8ef6cf27543cca459a144844cef41ff386290435b5272d9c5d17f108af24ad4e8a1ba77124827f8ebc751e4f1eb8bcec83c24a6bf7c3fdc4d71f25aa18573c0beeaafe570bbedb1941ee01ea4be484191c7f799c3c7c5bfa254158f43284a7c9226a1fde8207cc439477cc3caff184e065af67db876f2ec82f4a1e421525154025fb5bb53c972a61192a8ca9abd7dd34c592445c90f38d1ca95801774fd2e97a903685d60f33317ae2358403781623052ee166509ad0b6b1715513a69eb2b36497909b8133664f3ea7274be4c66916c0eb1751403ae64e67deae558f075b7f5337c3cdf6b527319331159b7b1eb3bf1b22d80d95e7c4149eaccc5ea0234e32de084781b626e0c5ecdcb5790d5aa75d1c73e87687e0f2230f7fca915db70e51ac1978a30c508a5902399348c0853b5a279d571d224bc8e9a50a702c0bf5998bdc92b10f4a5aaf38f3571a785e61c59e599ef370386a68cc7f3fe717350d1fb4b3b1dff335078736eaa24de796e6920fd1329669057de2b22dea74e0f7b0aae31a1f41eed0949e2a63182f9e29067afb9d88ca1d7bcc5fa3dfdca224b856878a01c2488d112dac560269e8ce23e6a0d6f82071d6d28e590e371b42d09d4a4c3b0613f2e1f9e06e2c4a6dc213c4410279e332424da8cb7052d782de1785ae61e12089d53c6c0abc5619172b41f767e4d2d728a92ab764b77b286db6409db49ba4b11420ee08d043da01a6e35c400b4b330010a5bd0e9ce87c676ce122c6455ee8cc672cb74dbd7dc47ecfb09d2dd6ff142fbdf03481c3dd9c2c70ff9e6b2f4b40d50c6ca9269c67a13018a8a9dbd35846daf462421686e98644f755c3765e729ffa7249fb46565b255ae9d8231edbf4aa10250ecc70ebcef38e931314426fd100ccba8b077849663ad8daeb42903930abf57809ca4a7429119f79ea3603e17506948fbbba22bbc30ca381c535d5d77ea2f409e0a0a548f31b9c48190de30aa7276935b4d7c66fd014109618959b953f70d77b12074122d0b4020a00bb1516524eeb8384b719eca80704ef8f2ab7143a1dce8395b16cb185af8b9cfdbde7cb9b8a659ec6d0b52399d75ab0a1efd29ca3bd1c93d4cbaef9bdf0a1dccfbc45933a5e20ce5be37449a0b308fd712fbf3b57fabfceb1aeec86e614b53071829d40005318c4f1edddde2c056f8fec7133798091e4c36ff82ca4c27158659161cb58416de4a18c0c2bb1f799cf742aaffe4bcd7c638f5c75b895680372eec8bac858eb9f35af1acc6a22b33e4a1141b1cc52ecfb75ddd548b2cb63bf2a4fd436925a8f6c9c1e23e645453b3856444ee95e0a6398fadcc1cc373fc2f022822bab3beed76279ecda58afd63ffa1ed79ed63593c41200abca911ad95b5bda277a5e2021008f2c13465c339dfe3871aac5311364976abf8ef18f133872841ced96934d8731c6fa18fd5a8e4b46e289ead5258ec3f4ea774d99ba5535f6cab7a84a291e3dd4b14ba66a2ac33f0729b51078e8cb41ca0182376f7eba6e2656a13ba9e1f98bbcde7d27a4b2ed23a07b460c5a0d5efb4287b68e506f84e8b7b97b0f4e0a2b6e60171b842a2e1f9f508a5c49095392b66063a235637c39b5f1c6447e09db166b3e938561d5185c1ee94b5be6a6d77898d3fb80c6709abfffe3a96cbdc42b65334abda4fb053e91b608e0545a49cb19dbf3be90292935f6805c914540fecc177e311a47b0d7645410a1e6293378be800f04579bc40ff21570e42849419ee2e7e490ac6e063e0df7ca42f2a527e18452c970f86a9b70b5352b223f33d674f13e8d027151b33870399d3ee42055b1233626c2be7021a87518ad26d9618a149835cad1e5a4632b746631c511cb550be4bb07892064a68d9a8cb672596e83dcba3cea24b32d35d902103ff8ec503b05510541f2149bb807c8f18d3d3e96f59f88c63832a80e7e986d41c859f1120f583740c37180775d77cb5835f06451ff2a6fc416ede6b2c29df9efa11c5cb48aeea382277991455d2fb62263ecd13486ee0d8b534aef32bd23845363102fcd1c69d15314a2fdace72b0e64bc63f87e1d1658251ce820ca06f01e89c759d3bdedea5b4fb8f44fd3b3e63542c2df5b1325e26f7f66f6a525532fc294737a2193e6c807cd4f6a99869237293d0398bb4f36cccc4f2ac174983cdc2a61f25608f27bd9c2a655c1205647250bdf9b222fab7382fcb9204602cbc803eb9512be984b799e13ddf149731c3d900cc2566e184b3ece0cee261bf50d6f430925a2595656f2d2431df0e358cf9c29e980bb06f4a2dc6a0db785ed213711bab9eb62f7fc42016b5858c894b7a6755d62928607ba0304ae7767b8cda5cf7d2973e65320611f9f1d29dc0791e6135de6b5237aa35b94f925ea24ba73fad41ab30cbbc6a4e5b9f8a31673eca553e3659b29fb199d22f897b65ae7c4d0ac139c985ed4850bd2896c77ad5445a7dd0545d1498a9240ba5a2128edc03d269bf2192fa44ad2d7e5853e6cb2c06fd864f4dbd9049a28c9e6b8af120d2c9c52efb6079c65dc62b0118c012321ccec344b5b5c336283935cc44926195da07165143f80576f7825a79e7125f36a8e08bef95960fad3cbd79da2c95fe1cfa1aff6ac3ffe6689b2f785cae35464fe55b20a38816bdaea20d5490375a4717d0b69e3774d0b851832ed5e7df29586982a63fe11ffab3865759d8bd7cc6ff9e49a2a31c1cbbeeb8cf55b798af1c6c6623357b0c72faab98589aa2b014b089fb2368749edf6e2f780e6e0db2551db8998bb037ed3134b5d911e653c02464612c3fa529e761715442118b18bc63a77a4b98c60a305731d9521ced26c6fb31bb65c0dee346754a27181439ee02297376390b3053e5564fb7a24c44749e3e8dd78b040a58ac5b45e9d333b85b13273e5d1425b52effeb83d5791151b8aa249903b96230e92f97e9ac9f34c0bf41967d6a00103be1d86fc2bc1e22f34d4ec42e64bfbed8488a4a8d8a7a9886e524fa2cdb151a2457abc283deea7c459a756fb0999eeb20639b29a3c3b80501c917c62aa4e1bf8cac19c432afcbb510d70a203c030ddeb04ee4f9a5fa82fd9d71ba11d5c4e5862f8aa55b7f57c294c80280f40ee8f7aef1130ca3c3bf52e2edbd6e5dd8d713a8f9b73811dadc65042fbe4bbc2b16fb6d32625bcfa9d4784ef60fdc666210578a9a7c9d359aa75e50f60865949695ebc3a4b4411c16b498ba29476f0d2ba60b0d9840069b90dbeab3fcdfca93b7e74d655bfccfda0b1c2a743d5ad54605cf80a2b17285dd080e5a38fbb8fc87b6eadd54b49f3c60d193f9e357308123eac87c3a9cda943b7b8295e3c1b87fc1e1e009f6d88261e61629a524510e2ce3af23b7fc605e8efe703d95365b4a5ef0714c73ef3dd83efce8e921e9ff095019df6d5dd3e8bd33735debe5fbb06ea5103d4873dd4cab738650f335b3cc7aace157a48fc57eef28726dcf2a668cb5e4662ac693d4a172c74fc246fc59054cc324b948e221539775788fac977e0b52b38c79a411b4867aa529c0fa67e0aa6a5cecbbcede78498b055036e177e3e525288d2edb604896a39a9c4dc5b99bb34503c8f42480679b73294898bca7d61af06211351ba73db1c4d9281a510aaafb7c8741ad79b8311a6015fe6c6a189ce204029d0c1940e2aefab7168348c4b85d687a61c700ec2c199962b56bb05228fd15adda0f653bb973532ed7ce83291bae15b443dd6b73fa4a0a8b400c1fec1eb89b8bf8a823d8dc578d5ef44352ca3092b9d1bb0efa1b921b6570794c4515214660cb140530113107170892fd67111c6e54ae092f81a41c517fd5497ced0e6c41881dba18340e664517127e9f94b9c8e279f09d4496439efd81e4435267aec77334366c0709aeca3f0705d14b09504296be7dee8c0720710b34a7caca69ddc43d825044404305ef5655921e7c9ebc5a404d005b762ed88fee0a8fca9325194c3741a79de125d8168a990936a03cb3a035896921423cfbaf44b3f00107b7f47be32dfdd13559237cee1fe072a44441a6ea716b6240888f2c6e7282d9f44493d791e216065ba89361dcf0329dc197469729b0fd35d8128bc06919e2ccc1bf30c5c6f83d0668ba0df5bb093d5a38a8f51ff4d2dacfcde45d117d400e6398629a5cc506be32a03325029c2ce32cdace57a34b4700b478ae6509742aedb6b1ceb085143e6a7c88eba874fc872a0682fbc6c1590335fbdb0e770281fdc58ff6d6ea6619711671efec12ab767bbc65deb8722fb3b27da7d2365dc007f7c3097bd8d023212f1b583ac518992de9680a2f66dfdaae6ea508c230533bddde77ce96ca80eb7377d85e894020ba2fd79f32d87b65630bb3bc3084f1893ac64555dd9b072c574b3d2bd58410c4d3349ff76ceda9afdf5c4c94787c7ba5be3e0a35e46d2d9a18c697fc79e5035388618eacf815a23df4fc72451408c93e3cd435d3277c5ba2f83202b3d7096550b9faa11ab66c68e2397722abb7bce762a69c844ffcdf81b4254d82bdb02acef1b9320144a73d1946f4ab02e34a27aa114994cfafcda16b4fd243e30a7c0042a1517aef5000c32b651823e5d2aefc99bf73ec2159b866ac8b23a77592f1eb9f7e8eff3509c8435c0ea349ee9e91ee60d6f3947899b108a0906f94edcba6f39adb67446e5c083692643f93ff335396b2325f8a0a2140db381dccbb0935bb2833c030f72adb8e4649613dbadcbff927dea32eb37f83c49e6f02ed18a7ce94445165da76b73d3d683e4ed897d33636df926ea855abb95164c6a65279c69eac918cbb06ad09dce94c644dcd4e63ce78580ecd9a70369e15e47581c829d22d6b7153e3ea278d35d0e96ccf41c27c841548e06ae680257351088ba3336523081511a7b4019ea16c91e9871efa927b967841abe8d87d4c5be2ae702cb15e6040c71f5b398e4502c5c42d50d4df1ce4076b80ce5a571693de59e31fd20401cdea83975231eea9ce2c18c24462d82e481f67e6b0cad878626aa613775e57bd11a04eeb828ebce898ae00e3938beb7671e8fc9d79b43030b5cd4b01072f45034dfe582c9ff6c380b0fefaf970e6b9dc15b246165f8829df08bd2b71fab53c3c7d263ff82c45c11cdcf15bb1a85f4344e78f6d48592befe4e050dedb9bf72c64723d54426d09f603d802b181a8b6fd72c5d83d79f0764934a0849aa0620e84997febfe49f3058b1a3acfb05ab9fe3a1136a6cbe815b6a6e73fb8ae7c5fa77d3e16df2550fcaec29bcf99bb49bf20e0010c5a2722702af65bcf3189495685c1854d49acdd9ab1fbf723c8eb3f6a566b8a541522dd488952dcb9975043d1fd51841a5efeac906b8380a365b65966b04a05364022a456797c2885750c5a0079ca22a6d8ad88426f38cbb79f1b4ac4928218690608b0f01925601bbc5d4f45f6ed87bf731eb18904fdf74e4767cb8434a4aa5ad521acd778081dba40c7a2e38585d6e271429b46a5f9417a538137ec211410d2e13054a21bd8c54f39868e69cd8e58ad17671a817faf86335ecea905b8a02a2ca17d1e097bf56367c4fa960d87ba71e12e114792f6daace426a04c87ae6875d950fc63c085fc85c260a06e6a013bf34d83e9b44c202615ff0e36b41b8a1137d26d81b84c181ef967729630b99ce2aa0567b9c95748ab7ecc9a4d69ee284e54213b0665418a4a633dc1b833e84e9247552f7747fb6c4709a6f542053c37b57c7b42fd35a5242c0839fa47f8b221f8ecceb5625b68c0bc3fe96ec18190bbe7ab15ccb60fcea1f142d82d22f22db29d1094d531c42529a55356f6039e508b07399369d5fadfb3e87ece4e8b310fb3467abff14ce1a4c334f5fda4a57b25d47deef06bd29a407ee8b8cfb5852c5b699f81726e1bbd2d5ccc70883102d5e39411e4c76b9240bc1b8cd3f09eba2a032e3be39135606440f65bfc6a7d266f92204e1520c2090bce173d4857aaf21571f0e2c6af33a61c4249955e930851a9459e39ee4f11f1c778f10dffd85c1eb1f2b133d1f9d9bc4bcd3eee592d79024ca08c5b4813ba8986629f6457bc9dee7774058d5a439c442243757385681b9ef9eb3713921964720e710975abff39fda802974f256d764b5b4ec06a7d905b9ae2e5453e1ac87a8bacf98d8bd86e60853c15a46b2d7d63f9a2dea6c5955c4b419f8e2c2fbad2adeb07b37a27965426acc9c17e3f6bb2e54c76c4e163781722015186b8f3579a6ee4f0fb95e5a5c403599c8c0ac6a3c181e78d7de0255922ba4c6dc089ebfaf575165cb6973a2653539e7db84215a03140ea25f246cfa962110cd4a492ae6c283d96fbe9acfd918cd6b1f0a2b52c667e2fe2b4db69b9775cc89c13069b43a0498520289ef5c236a93275e6f002144d44dfc4e34dd455dd16a762fcaec0a65958d05e0cdf07062cc66c8e290e60490635e5fcd862c580316b17e8e5abf19fcf7de63b44ae6a241565731005c81980f6015b86285cafa3de0aa68e47de70e941ca514862b31c28381395b3e7990baf77b85d1bfba1baa70b5b87cf86db56a6bdd6e12e0ddd0b62b3df089e0599266fde458d703eea3eb880400f0c1d920d298a452939a7c79ed4dbb763bc3acaf0a95cfa9081f0794cd5711939ee76b2d709f80fffe3b1aa2d6e0ed822aaaf1304981beb8fedd7e22536196e23592f63468d8cedff835fc284137e3e252a03ea8e0f2705b7633bd8c07b4b548fe9875ac25ac3e509fa04a7657ac874312ffa4ed122047cb91f6ab548b36f1d630641110783e04abf775dc802d45b146d74f8b5a10e0d004b7627199c2885a929813365a3d68cf10854d24e8747f720e7a5c3e8e978ecd1a4714b89ce0821a590c64dac7c8c367690ef38f98e3cd0b30d19531527ffd159047e2a6aa5d48d0be99ed6ea493870c645a9b829a87526793415aec3eb143a622a2696b51ba37681ab7e179a1411c8f1dbe2ca38dbfa503115ac1a915c326377dcdf88c5de33c87fef66d02ebe87d17a491587511fd48dbd4b221f34b252ca3563e8ce36d3d1b1d1f45517597b2d5bfe4af5ac8ee0931e40d6e7177bbdc248830c313e608f05f09b9c4785c952ea0a0cdea71ecc7fb17b7e9a2064ad5d3fadc7a85b4f1bdc17cbfeedc5d2219e83da78c606bda4d1b3a803e1bc6af50764ea3a0cc729a33b6473679209469990722e490bf5d7609e2bf377d521fa3f4769344892ab741f5c7ba5d058aa94c7aa0a818d77c3a42d237ea6420762c44b3833a8d697477f08a715c085b1df1afb45f0db311aa56cd2917f7ed1eb05fa790db05501fb1b92f2b6d5b57634518a790cdf99cdc733653c8bdde2d05964454f8c86c769a4387b76d8da84ce1b77720c7fc02af6940465a6ac5935370e8ba87a8e1462d9fb98a7dd90231e49c38a44457112d4745e4ce6d5ffd3bc4429b7ffa581bd33576d905bf015c0e6b83007b5f68b9da704429409e38525f780ae5d2a4ae6881031eb46dcc4d0d43c4786b99c7bc77b2aeb257e8a45b3ca5b4d06c41c3fd31013b86a459cb6e06caa3e9161bb85f56e66d32e99d86cf15dd9dc7d285cc671c0dc996412bdbc991cb0983ee2fd5839875fd04646c6fd1ce2973ec37aa75c7f622fd156de772f0074511c20022a8a8b1928519fac7fec04ddc9b16ca4ceb5cdffb92140403fac5141cd95ecbb119235060d1e2abebb0def4196a77061fae3c20d33f42802ac307aa32b93fd1eb0c8594f942b1f4c5966142c65afaba8e6d1d7ec193197fd86b49dec8b1cd0bfd1a569ff472d792bda74216919095ea4d1e51ab7b9691a08828392545c1289b82a77ad5f875777696eecb6d300c0ac3a21d9ac5e4738c2ef7157627be5366d39fc15c07ed8ac1d9081dde87d85001e26018f431c3541a4871bbccdbbd36b66a9ab8813077488b1fafb13bfabe9d1209e7bfaa92d15a95ac4e595c54da8578256ede6696505d53e3aaa87b89d987c828fcef23be4a52381e802bdf1383c7a74b66449593fd983148a7c17432bd6acf764ff2a6a03e1f939c1e27e2b17bfb21237dc07d039f4654654906c462dd7d0995fef5f3d6f2886a8f2ff7f02a7db5cd59e760b8c0fcc7d2ac635ce98b88c48637f7236ce2aeaae77545ae8392eec755cfd7b84a2f79c3ddd7463e48728acbcb6fb2a31c9a655d9535e30fd46ac68aee92ba4e5f85b95ebbd114ae253f9bd59d54b2b9cf05ffca66da4c94ad4dcf8e6e2dd00a1ccdf5192ed2efa56b0723dbb68bfa04a99cd7792fb636449410ad45b5141e9c42bb66379d4134eee4822130afda608892ea06e28b51f98f821b058ac652f89417b48db1e9ea189c03726f430820cb2b4ac4f932b584cbf44b9ed0500efecf551f12c1110b947626b8d477010cdfb8d7f25fa756b270d3a2a84c840c5e67aea3d1c6d27cd5a086113d0e4b84b145b90053e92437765009c72b23e8fe9e3768d6b581cfd17f68cd09877ac6a9e7553237fb15dcc9edc1b1798a42933f6a68be2825c3e8eacc94aa9bf7027e4aa6f496f8accc36be55999b5d372f04e2f8f71c936adfdf96552b72dc69a13f3d7676579bbf16baba32df3349b650afeae257fac212832a940d58c28ea4c8ee22325ac5a6114acbb95aef093db7d510b7993c940067c374f7fd81effa8cc0e34ca54a7113540471bfeb4c2a50dec242faf26d5f9aead13bf75a6be091bd9308d38059eb0f4127c08551c303cda985bff60d0d5129993edce21cf2fe4a6224fa4162c5deac33c6395b648d2ba639d06fbeda87f4f9259d3c3c7a62ca86dcded351422903f89049e79e29d612573c9035c936867d672fed0ff3cc2fa433df1f44cc721a94e65c254fb290512fbb61f60988aeef2c626d756ec687d0f5f8a1cbb6724cb5908d0658589196bff70fa548abd10bbd96c4d0bf05ac978c47eefcddf4301a49bcaddefa1e10441aaddbb55550fca773533ce1649d674151c5df3fbf55aa29348a4acf47edaddfc8367d1bfca94386b22b9e546869d2afb95a3648cfe598a6543430020922ee7978b48db66cd7c6705f0a95741ea437d96137c6ddfb21da24a304fa1ae80dfe50cfa381bcf8b848058e13aa47dcc2e0a95cca99d439ffd5656bd322bf1fd0c6ddefed2e8b5c2c9bb997d705ac7df6bfd6a531c8e7d0d707c017b9591cff958c1938c016387cfb2fda3708de2bdc899d6cda92e6d46bf5095a84408cd401f339a3235cc2ee892d68174fb4c665404dd803a6504b7cb7854a80a39a6ccd4a2a5b8c916120c2f230e25aef4cace521e1b556ee3b6992b5b73eacb42ac002a617de4e9d705c9e54e1a3c17593b2ad437f68aee8e4409fd0e5459f43049907a4de76128b47ca549ef8667196cd32dcadd42f280337453c7be01d7715f28930c30dd5a9e986287cf0ab680426886f2762ff28baf621e1888e1767792ef7875bfb4fb086850e5799cc73c8fc5bf777df154aabe4be88ee62fd5c6778a90730383c99ba529c128d10c2efcb0f8ec441fa6458770e74ef0642149f0c5f3d7a077df4c4947843796f42dbb9f02d4d28837d5debd445a74f3d2b778a217492a624d6c0cf1dca3c3184241c36be178ad3a74114a1b993e2e25edbd357f4d6a337f8757136068b3a5d8b440a48552a792ca36c3b39aa474fea3b2f5c2a3471cefb990e348ee7265ca47fa53c81ff745821d63a5518b459ed72753927e825f8741abdae55e6e786f5791685a7833b8dd06cb7e47b900a3a4f18d97bd5c5772b71f6ae54610bdad0948bed9677eb23f1e663eb18d8687c230ae5a6b1432c1c61b48bf6885af8919711921c741985a6859619de72e525898328de3c926ce491f098be7ed3205326f6787da20e2b994080586961937f882e55c311336f8e5e6fa38a32647747ecb7cb1588945fa1f0ae03c0e796e872ecc6ca674f90f83cebd5b449eacf884abb346993b772e6932d9fa3b5138cc506b37a4cb8c998f3307b46b2dd58fd4300e421c6ab2d45cc8369490e6c33c2c9c1b770ecb3fa8e8699496fdd874ddc15938750af60fd654e1d27340418924ecc629bdd467282c1ffb29e2388d9602e5753ab5121384c37b335f678ff892d532fdd3a50ea80a3261af2576b577e80f260d62057519384efe6f09edb7d851836cc4d236635938074ec359bceb27e6995f40483f2e667bbcfcfdc6db2e53f689d275cf2c538805ac6f68a70f2512a137573f303184daffbe9a781789bb014141eeb92a118a094d704f42696b070e19e2fecfb5b91a5b2601b92e97f4a419e328081113d208f304ecfaeaadad6ed924b664cacb3a96525bc60ea161e340fc6e107f51ebd6d921e3c5826c42f68492eada249e0afe402d83261208441525abd81c151f01cb43b211faf8c98cecf23ee88e27cc4e6482db76bb9dcfbffd554c86cd5a7993981d89f392b87636f68f448c9df36aa7fa375390d18a12ddaa11a9f062822c294efbcdf8054ddca6a831f15dbfe3a294ce290d476d8726cdc340b0d348105d37e8686a83a623d64dff18f5b5a61b31969be487dcb747115dc92af4ee650f0418394d8fdbe04d36be2003e406bb2fe909ac3dc118a5d20d3802c62a5673aa6c5069dc2f342fff3f98bc12b7b5c4102f5a87a5c116e41109fabcdead51bd4db527ca3680bffa1d2c444c9e48820bf37d7cc73711216dfd2812d25cfbceefbe528df4ed7ed3da32a87cc06ed97fa996e1bfaf273c9e3eb33f758f213661d0ea8c4f6e2f691ee43d55a965218e9d148d7deb5ec2540d1b8c5b207853a5d10783fca14f4142ebf97d4509092feebe20d605adb6c06f125ac6396b817030405de815f4a2525276530284ada8916664fc744457520c25931eb0cd2ab82ae6d304489817795ea451a7f28c433821c6e3e96b97f0266c14e38352bca377e67bfbe3441db7eb0586d9aed6ceaf4487c230b7e37091a6c65c00947fe14c9cacc23dedff911c88d20cb9f3c93078801872353622d41281c824e018cdcb615c86389af5d4b247dc478d7e19758afe82fad2ba3759de0c5cc813cb9a763d45b0837979a5ab95542088244015da288b44bb43e1ca453a251cb1d7c91d59aeb37420c82d674e213236153050057d4b2721e70829c30daaad9995a221703bc7c5b0578c0375d392a87964d4019b37a8476c39ca0ac7c78592da51a7e01b5ee7c2a977cde168c6f6af1a91787d4811e746dfba152069a033992b47a27a4ddea2c3aeb4bb7aef6ab316fc7546a5a4ca25b06c80d8db0d9db2eeb2d14d7541cf3e24c68b270c8123ff7750ddae09b766725942c4e9d29f931406568fec240b0e34c7a64108b041c167826f41e2ed1de1544e04c27f94540cffc60cf1c278c6bbb527a72df83c6b44498e9dcf5b5c406c438a8a16b61204692b0cfcd899d786fa233c8c0bb5b6e25e5984bffa524bfe062b83ab620f9bd4dbe771f1383f0c950193286242a04edbdc201435f147d190f5ed83dd97ed5e3d6d95741abe0342cedd52c1c8e941f4a8f1783a53b67e698cadddd6b8a4188ca18f2adf10983c11363b5ddd5d5ac1752449111839757d48371145c0a42e3ef50585af899652c29b0d65e7782f416e3043a8f017f9df90c0a56ae14839a56d4aa329c2679a8a73b90142d7a75f813b51c4d9eb65501345b64e7362d81f439be1568c16e76000b0344272475864aa3da5159e2eb56684f0240ad9eb9f7c7f1e0f341cee9de929dd1694dd06e58c6c2ffad157b85650f328b3ab1d97d42a0a340eb818a649ecf1e404b1ef1778b740ef0e7b38de9f4c3a4857ab62f1b955ac7d7962602a1d07c1b3ab8579303d606bff1351c3c8a0fa16ef0b8eae7a7c384e7b53b4af7d5ff847b93c21ae3c64749e05bc6996f02afeb78194007e26dc0ef2199fd7e0345afdc26dfa67fad9f392c04bdc688ca627cfeea351d6fedfa680ab218871c2f897b097c7d4da86db6ba5cb3f9d7c738e3ead62c2255e270103127ac51b61aa08730140c515060bc737fa47f43a7fc81fccf1068d69bff8dc89627417916cffb4f31e6ee81d693a59f14aa4a055601f26283a6477f0509f363245e190211f93e3fe6f36b430e97afe72588e1cd23724413c24f9361d1cd0c60afbb28d7159cb8ed4f2d5335121c55bba067b674aa46a656a97144706feb6bac41a58cd88564943de9d5c732e2187c49a22c0230e579359c3d31067aa1805320eeffcf55a27f2a3cd9b1c03206d22c63f3bfd16b3efa9388dc1c31b358633c2bc55270ce0e6fae40a7d407a3251269d7f3914ab3589fff3193b4e295380daf4c7690effbc28e14f73b853f143d9b7befd9e9d6fa99a30cded4a311d976d11c413822e1e7c6406c36715da833000b14f1d979794790d77dd3598b5c5ed8628220b4f619d555ffb302bd94bd40ee8e0aac3430a7139abe38f8e7b3eb52207b1730a21311488d6661d91d1ed877c2d7fdeeaef7eff04459c231a7617c47416b5119aa1350041ecd823fc9605c7faa7542e0412735e7136c62de704a88d3ae434c67889073f1519cb70ac9fdbbf5a2954902a48634e0d265713a70abfef96a07a55761dc09809a482455efed5223a0e5e2e25b8a5b67125a093b449d48e3d489bf11d7c08312be3897838e6b7a48fb1b1e8397d0e21e292093a6aa8b350477486c430067417b8c6faf30a4ebb7e471520d1cf0d443c7d5e20edc83903e016a05b6af06b40bad770e333dd4ccbeeef516baee1c2bc5afd94c7646e447a2e4d97577339299d6de3dba3cacc099fb5759f5e7a40eb99f008521baadbc16ceccdfd90e46d7a4bea3ed141dd3b59d697f00813e5a514f819137c549f0b108413d423e7b72f14bfcdc0b256a64f6182de7f1d85d09674d712ccebc67659cf1a5c1698fa56eb27e714abd868f3bedfb5d8363018d2159b72bf21e1e537b726b7c8fb29c324327f6ea5338638a5f0ead15419f9e3b625d9b425d0e7143e34e88b19e04d5bf4e4b790c89cb6c6336a48452928a9b1fb1b0585ee818dedbad34fbe566815e5902eeb99a9dd44a2248eb25db07dc35d53c386c4e8808b8c2fb3566b4be72d01334e49c5d7da2f5698aaa79b457a4dec244ed53586f6456bf480d40c06d2962c0f327476c82efda9c0579cb2c90028fd0a19d1f85dbcc244b642e9eb5c44027ec9e1a2b853827cc36226ab0023c3a376533da3eea8bc7987f36b69c3629511a8f8b8d78534756d1f569e1bd2ba9ea22c81f30c22c5e2a0df80444692f4fbdfd9a971b3978b16cac40b8d5a36fd08d802ccc55044b69bd577049f2ce331438d13defeae6a5dedb70c02a43d85db8bfa889d921f6aa1e645a87bdfd37bfc8ebac80a37c6ab129161d75267acf44b52f857155f337751f5baeeb351b77b7d302b37964edd7ff5d13a0c236c08c8c6c4808784f98112b25c2734d2cf336f9e8afbab60226bf3b87171d233e7eeb3c835756bf26b319058d59a96ceb843c18f06200e37523268ed6b8c04548b2d0a529e1269993eb8f9f98bbd28f336534343181e69602b13068ece7b00ebb704236b6ae61b688ad33fee01355a61d6e637f15231df1463400b75229b1b73f710429a55e03282db3cadb77d94068c6b0e6a938d4e5effa06057e56368b0f8cd75e66e571366bde349e4740bbb7aba49de606a17b7afc3d966b4ff8af1f19dd7230ff79ff7a524fddf0c6c0dc11a88c968ab78fc0dfe73792b2f4ea43a6f1637547d4aa43f2d757c655b8a5cd7b4661ff296045a21ba185e10493c791e772f549368003b926ea4d39ac4dbf8b9f71682585e1ac3d9da30a239eb9ac86b5b43eaf468b7c8bbef56848585114a98f531a1ea0608b501d12a3725cb1c0f41e8c5664b95907c280467e2d62103f09416a26b26ace31bd72beb4fab5fdadfe842bb977cf4af9cb90065a6789e2b233f6028261af100e798d74c9bb19cd1ccb8c93daa4d6abfe247f31250290926a5a781d9d161ab7bad8213994e1b6b60dfb47cfb7840396be86420e55852d13841f3a59ae2faa0b362e8b81300c039cca0f9ecb52a5c0ce6a32d8a8a368211c5dc8ca9a745685fcc1a64316f517313bcb22eafc020fb3c64f43f8b5e2d34acd91759f012b8e0c72bdf4786566a675dbdf783d38835f8b19e3e2521f4f2cf09a17d8dc53b6d81e9fe92c547e34274c0bf4bfbf3084bd5465319c4d992200b59f0440de05d05bf27b2e77ea628be0dc796cc00005329b522c109ab77b475166ebba06d6002d48e787b616ffea994f2687ab2930a0fad42c83050464988ea40c09da00360897602bbcf6b623ede0ede1487b88106f545dff067c452df7192fa9054a19df2a7ba4fc4eb7d670bb68fc6c73e15778a53c5b27635c21f47854e61fa424dca4ee2d47ec64d4ff63b0fef72680203e56c897c76aaea25722d0f50c17eed2ccfaa18e73821381cb54a3fa470ed9cd800468fab1573db581a570d6bb3b57fc7b03ef7d6708233fa12ad8ec0b4cab8b15dac6e3f7d7ee16d8facb238c3de4653eec58274e0798a3c288eb9b971c366a7e24ec2e0349cda4d21aee509c77435f6d2cd92f09347cbe88e4a7104ec8399981fe53f529b1327f49386c1a9535862967e1753a3fdba4b3b252eda7e5756ab82424d291fe0682dbb351a13f0f5ca863a0857c3224c6d9f3bec600dab07ddd7692f15da99148dd4b8c260df231c4080fa5ba336a9fc7e236174a496b97cfbbed17c1a402aeee60b2ba710dc2dd9fbd27fb6fcd4cbe34576478a7ff66317ffe3c556e35cec13fb42f47222f39aeb922216e06919812606fc7215ba22977da72f728ad0c49e11bcee2790fbc46eb2a2bb4b894e5577dde55b255b9702eef9e56d4b3c4f21e149b308a78e1f20c6f98209226bc72abb5cc8fe411711f3fb5f0acfc70abfb2c281458ecc961f9049c94620ce0c0b11ae59a395421d7245673f9b67a79fd7c8a0df4e012ad51fcd6f9e1c36095108d54c692d933b7313bed36f46afccf1f648557733e653f1b24690bc0125f12cbe15c6907aaff018ab169d3f2e02a5b9e72cb5bd4a45bee1fb9dc57cc7ea782a12c760e23864f9ec8f7961cf562021da5d025f7d3d2da9aefe2aa0c79c2969983db0b260c470f56192085c641eae3dc09c6bd926872e1df6c876a822a9a6f08943ec26a23659d1f58d588fbb7ab41bfb799d0196ccddf742a3c2b1fbc9cdc407446cd4eeebe31a9da3f1bfa72c1da98e34e2c9a623530889cc7efc1b2e2bd214eb73a4d2b49b659421d03e843a3ad9c267174833b8af3b5859d2286d5ef27c68ac19c95d1050bf4979e58346c93f6d71b62e1455748fd998b018f9793e797100f7c8838d5894345048969838dbc54c14aaacf603739bd0e2c75fe454b2ba04ec0dc23b97bf3f658f653a52a692476e16a72be76b0dfb12c2b1ea78cee2d324f3bd98e40f5aec2821189f5c0756a54f29c6d95a9444db027a48af8e258c85d9fab9b4b429377b438f198514709aa3fea0d8f8e23222eeee19c0d9499b5eb8544902d02b82b58d2963c9213253286bb118dc5c1bc36ce89ef4b247ed943bf5920b5d7d693ad80bd539049b43de6507efe1a7f0e83db403f0cccb0a7d3505ea8bbe909ed3535da0a9cd6490f77a91e84700ad31080a4e7b814989eb3099c9eaf25dc3ea0c8bbb3a69a85190373fde629eb337b1ebff4f127181b6e2b61c4e6a877a1b6d3b2bfb8d386f1ea11256132dffd2bf95ea9afb8d27b41ca0455a6286f59982079f939290b3fab3ba77aba6e6097a7b18bfb15334357ea2067fc6ed79468232eb77690cfd11ada649c0644a8be9ca95065550c8563e1d85ac22175e28e15289223db042d55bb85eae0af08b03ddc62142e88cfdc3f794985b90ddf7981a8d7a06234267daad46fabe64b472944f7f1f407372b35033c783931aff8d74566ed5c7f162e7148eb6dd40c6ac036b8121b08b6d5abe57fcd0bd0629f54f88b73d83e92b67754d505d7a73db772e18c09ee340da4fd034c43eaa1b2bffb148606fd2c484a928958a81b0879fa6ef0f2ff36092a6558dc99ee9916c5ab0ed4a43bfdd03a748b1be997f551fc7536328204d884458aa05fa8e8f5e484d833cc783a520264b6712e0354ad3d5fa4d1a1ffc9694320c633a32e378ef32595db91e66c654009ee832d716b98ab6e15e4315bb25b0c8c4f7c1dda1bc9560c52bc952d03fc639f7e2d9c0a8579ec2fb78210ded8de689089bfbec05f6c63ccd0406875af666ccdf425980d0a50f6d4cd6d67052e15b89d07681540b7d5de77276eb88ef430b8a68583e3dc0fca421d551c48904d737f4c628b38f0b74cdb121eded44fda96496d048dde2db89e2badf859b0a2ea04185d51743196a3c8ea2205c3a4d356981e87b9e719fad117d081979c986536b3f0f047daaf4502498f5d4911658dd20d2ca3971db67ea6c11517be40ef42bd8caf8a63949247d5f3e97d4e1bdbfafd7f85edbe0b57186f197cc085cf23209de71b9ddd4bf341b9dddacc80ea1024c10ef151adca0b8d939ff2656e43780d0e6a95f613ac3b0b3cccf0b209e234137cb6239ce6d1d7bd4fb9501e5beb0018320510da31443a927e4d5bd91ff4bc46c988464750a49bd43e26f704e77853d564738783adc3c34bdb8b0826f325f747e1ae307099819c6259abd7d3d7b93a25c6a7569a4f6feeb3b3df24bc8d20b5f459d5ae5242a79a00e8624a439c796febd6c0e3f517ef06a19b728c15ab89b3722a291957dacc59b9cc97e5541729f078045e06a038e2bd3b5bc65bd57919ed4cd83f503a7f5c5c9fc9e10753422c2d3de3f86f17d29594ba80ecbcef422a3adb993acef2afc1a827f282cdd0eb3096035be6aed821d477b1b9e37b6ce19e06300537d6cef2791e23c3071daf29a6f0d7641190c2271a10f3a5267ed1b942037e6a83c62edf97a46c98752ac03d5071f33b75f0f5742123aab5ed81dafcfe38fe938ef0d37846bd3f9f94e07105d9c3e3750cb4cf827cc311f3d91a4c9a56275633a6c7d4e6c3cefb80058940c86abf5ad61932cf5722cabeb9b7215bebe1817b873fa14cc7148c6eab034715eb51b35dc1213aee4e8b368b8d318b762a78248173b120b55b328c6618e4badf54cfed268d988e3e3d10da73bb670045432fdfecc9e29ede12b1023e33922cd37ce6a043506f170c4733ead06c80b2c07cf15d221173219552216543b2b0e4aba7fd2e8c4e4760f8b545b456237f08facc02683cb63394461855d9462e90511cd1f2cfd372f260e3ede603b3b221947e25ecd73ed7671f5bf6d0c62b1723e01d56dfea8d1d83cce033ed2e01efd1b9c36caa328a98fbd08b840740125c7447076949fb01171bb459198d189472d708d7abeaacd3ee6c42cf42ca0f9b3c68fa78fbef6c25ca1987de8ed4710b927a64ee46cfbaebd8b7565a9fbbc94b2d51a610361acee34874a12674685516da773c40188acbf445fd48a0d70726247f975505303fd2802ed2eb824037bae90ccda0b7beb5016d33af1c81daf53b5ef5ddc980a9151c86aa3b9b3a16b538cce36daf1a489196da8b9d81db5690126147a4e52f87d570a3c7d365ec5d2b2d4ad6c0478e3886fa1353a67ddf2c2750ead3e610b3a47928fe2af5aa52ced5f73fd211557dcbace359dfdf231f12c370ef7077042161b47db729ad78ac8326ada502f1b7a79d7c3d0c386dd93cbb5dc87374023eda6b132d541359fa3cc65267e8c4c167ebb2535baf09a3e54f57e632391e6c9f553a0b0490dac909aed98825982e0f7365c7c8763fe850517e058524ae86bd8b51db2da69b4e4d1acef4e44679e77ce2941c4c4dd1a841f53f2bc8daed797fb7fb70eae4880f4302b858dbc2aa3b38311be66a45d18736cd4cd9f0bc0b4679217723a735efcc586fc7cfd5e2776c6fc5da75139be4d2d8d3ae6d54b38a4190e36f6387d075f713a1a41727267fcc99db0347b14fd0630e17867049791bed5ab08cf5cd3038209b311a572c2f706872860b30fdebe856f5b566c588b8a44a737aec48d80f86adfbb83049dd2684f7daff708b3c2c6917a30f0847e6ba6e3b70cbd061012eb637e9da7b100964f843edeb60580957f994fc2368d94f9ad0aff52be261647cba3e2f3c5b3c615c6656e280d87af32776285986ad30f65294ed78eace2a711e686ac18bbd5c3c3eaf1f988246a1182e149a9a5a48ed1f7eadc2bf379bfa7d07257524e7b04ce6e5ba1575b564ec1731215f59451a5e3bb8204308b8973011a06a692b78bfdeeefbfb3e280b027c1740552be5db0c39748cac5d23c34214b831e32a98c834dceb03e8ca37476a16324d84741e454c202435b7960d9486163969a6208ee929eec1c071e17289f50b0864d77a901a55c0ee3168404ee861dd6863f4e992afa568ae8ca68c78354b62b8b4aab79e75e379bfb9d1b1dca213b124c3454c44d908753d93d05c72e7512ad825999b57410376d99d71a933d4215ba7b8744c44f3d2a2b6698c161d014062c0a28126fbd9e26dc4970e6a7e586c7989ea61806517fb0af14184e9457f705b0030ac298b7c0ad827f5661eb7a7e4806c2e63b97dfe8e152f47ff91cf41a9dcb71758140ba809765583df14b772d54c4b60064e4639e0a1ff8927d37552b7f4d6d8235933ebf684d3e1c9372978e269ec58ff94a78da7983399adb55720d6b11f871404c1cb1464c77aeffdc2e0c0655a193103f1d6950c25fe448689a55dd1a232282724d5d2daac1f2df6702089ea304f0f007722e9fd980412b86c6d09263d99ce8841f1e76b183ac113b61572962baf02e55d89ed501d287250a35fbda07a48990789a24ae15ede2fb4980c16c15c5bd532e2f42801b670d34732289babae7b8752ad0f4bceea45ff3d9b0838172fae815ff1f3957a61133d99c0de1ddab6e9bb326b9e45a824433afc0e6ce6fa1aee521c24eb39c1b29d85920559e5b498dc755e73da0d755ec30cd4c27469948fa8c728c9c77cbc5a7e209f1230d4787d376b8ec0da83042b66f660ae683f3aabd9a39fb915e956f90baa88593b2129707087951f0cf7784a4cab3d508931263c22e584675d5318402cdcd20a2c3c2381a7df6bb4bbd8904f35fc2ed48760385444c67f9855ffc7abb0c650a1cabef0fe0fd61cfbd6e144c5d1338f9eaa1f630bb5d5095561163a8056c3bccde8998a69e505f7ebcb2ede7000c282f547cbae0efad759c421525ce3d679bc3edafc507e76635e165abb92d0136f715d7e405fa52ec6acb8d27e1042a7af999a723fb1bcbd18e71d551e19ff6c0508a2ea9926f03ae3d80cf1bf4d855a5b0760c217b313646cacd8ff1d869819c2a008211087b2eeb4d92eb55a7b488eecefb6c96585a1420db65d8aab6ae0b02da2f7a54b5b9437fb61c004faff134def15f0aa7598affddb9b30eef18a4e5ed37a1e11d1c36f9ab45fd5d16fa2b6f0233372828aa9e5c9f64e182085db36a9cd5c6880f4b284292050ad8cecdaf966b24bdd0265eb92dab6ffe8b90251bcc13419ba93e08772abd543f732a371d592fddb1145ec49a62ed25270cf830cb729859f2d2b2cb4300988e68c8f4c79a24e6151ce0c388e21a73393ff9038074a736b4f077e8890b54f34305368ba5316d2d558295fca66221ee0322f348cc07553d105b9c504e261f81036d5760e72c63262c6d81e32ceee234576a6ab44e1c47c0dbafbad0a5afcf5cb27314784596d9f68244e007cd4d46c0dd335d05d6f83a15c83ced3fd921107f741003ed162a2546f5d9a02b414416300b7839502d3977596ea297ebf72de04b25c9c26da05cadc33e3246c57ccc21c69ce8067bd24963e903784a14b29afb0360e46fb9b24ac29fb75f4b80affbd1e8a96994c3fc33c5ea1e015f6e03349b4f18a44a2799af0b0de17f34ba1731b8a1448d0738f373e1c38a27d5a3ad1553bdc20a3521583a8ec8012e0806a57d821daab2d63cb3d3b59e2c2b52cf82da303b0dedb7a43bdcd58dd2fc44ac6a6dd73103abe808e783edeaf7b9ba02807a439f2752d6c2b5ea4c9c3ac98624e29cd5d0b4054f272cedf9dbf261c7c2b7e1651f9c6414208d2e293b1cf8f79ffdc356974066d2f9a9f3f0e94a8f1e860c8a7cd9b775bd795b3aa13331f15a7e0a21a142b5855232f8a66e4d7988f33cbba1554c83d5a2195ca24d51f768f0d8636de534afc1cd585598bd87771ae6c3b58802dd4a8143628aefb2e6ac4bbff9f4c5c2f4e85abe482d51f6db03e7e272cdaed054b7ea8a4b1068f2485d5bcbdd8b310daa5bc55db1efa39bcef5861090ad1cff5c76591bdb0407894ffdd297b9fbae3ea6efab489736d176aea2f269d9a531ed0673a966b37a3dd5d897a0eb730ff54ddabc89f0d23cbb1b0852e282004560c6469e67ae82de56d5468a082d254c4e215bdbfa418ca4a18a30c2181727c3f39d75478f628ea59a31fcd0c3d29e833a77e4c326e9c78d1fdabcbcc971683c2885cd046a3c324c852ee463eb58e036c0e95240e6a7d5fc65b109bb8e6e50bb1f65f02b54e15aa4b294eba242e0a3c897a429ec8643de90ec9fb59a9bd15e137e4d62da67cf087453f582d2b21ed17f9a810d454eaa5d8a120d236225f9898bb5770a8e50d4d36348f31fa80990085a1f824a4b1e13a3216a8ffa142d76b7584e76b54dc954633d3c62bae64ce61bae2f074eb2dd03532da8f8a69820ef47e8b2e693618739f679571e500b3591919ebdbd29a1855de4187248d6a803cb88fa4a83b89b936cde2067786409a1d4255c46ef1403f7c6232b8405fcdb12883f8defa29c30547001f690f37917154e44388acae767f911ae1cea31d0b7124d2596010a9c1fc9bf58f8eeda998b96f992874443a074058079fe432ccdd5bc38678dad70772bbd557030ace6d1c776be65540d5be3e3bc1e4d705155b317fd2e25c82549d162edeeecce7cc1b236df4c48e1ce00751632ce44273d3e03ecf067f3a2dd1fb3386959009b8bc0d257309d7afb7837c03361e54fc4627986a2dad05a7c0f67092dad69f8b0368949dc85b26d1ddcdf53da7cd3b0fa88e4c7d07a63587f179e23053afcaf9035b135d3f1594761d6545f60f08e8006ca6894c681f4dc3d6d8c3494aac0187c029f36e6408064433c043aa4391d2a73a4b981120b9e4b1b46b7d6138a69b925a111f2a55960d1342752e06cfc00ee31ee91641655d7fe862a50850c6d422baf1cc092e6883cd3fd935f6d5af1e55f00a44adaab267fc106089a1fce0e1c9cf75672432c4d8d5ff07ac0a4669274e61ecf6cc1d8949a56118a296a7875f44c3a03ceb72773909feacbc86bf5a6d13c57fb0cbc931a4ef0b8c3748e935ebf13fde5d3a14295eb7329f8da4d7511f0f452f753b39834a3b92574dd97387639da4eb4b23d3c50a5edeaf30df78f8085ef41d995504df3004ce06fc0f4c91abf1d562c26c5d5be10d4e0d993bbeae524e5d081bd82b534da3becf81bfb3bafb5702f4112fd8e0e6722739a851077d4bbe36f17a0fe7778f88ab20f0e63edbd34f71b746ba8723fb386d2601b0f532872c7e83301b9f27ff632bc06c3c80f6e42ecffb4c610f36064e3da97e4f8399ab5c645bead6f5f2cf29f3ce36b2aa00d251c31641c82d6dd52cfc5b845ab84200de707ab1820084d39336c547b6eefb1016a954f63cf33a94515ad4d5d30ba3f2a86ad1c528d8b4fb9c1b24bb7dcba303e4b11c5a9cd7e5e0c33ddd1742fb0ac90d2889e06bf31044612a27fa49fd4f3e24946143cd4a4a613ddf7594d783be2164ee673718150e85f63c06370485c698781a11939423974f178e62deb7d708c74548335d2e1bfa8fee5225fc54c87122a24baacaef7b1e8c6a09cbefed373eb0d8d543703b35ece083cd84be481f972b3f9ff0bf9dab3f47da2aaa1acb5da8f2d7a9c70430ea7c68d012389f5a5ad62c9d9b99fa9526f05d902a07c41819b12e8ef51e023cc52ba8b40842ac3d76d84063254aeaacd0c5103f73d0a52388eaaf792d6a7cd0e10e406fb950df51cdce29f85ffdbae3c2994d0ea79a3e2027dc1f760fd5583b745597ca4b5e076db0af600e99e8f3c95625223fb4ff674a8c4ea8a29611c55ece77646a77e64e761a593ec850697ce50f4eb007c65d4451985dd1f0f0be97c9a5c645dde1472cf5ea88b3f198aa494eb631ab3747b4398e561543c0b699ebcf06f5efa1b3f90e667aaf38776db7f57663da6f61db139a6c5d2f46e6894e365e058bc08a25121da72b46242013904e6c8df679f6696afb21104a04b46e84668a3cde0fbabe873e35caa9fb435ec45399859e549710ef2c34847cf1f18e8acdf32288995e47240f86643840b1e18792f64551fab16025ec08c13de5e26764522cd9a2c64ee8b5d88b4921698ded773563e165fcf5fe2ef02239663200c5a813a78745d45dc26b58acd1f1bc62bade5bf398417210afb5000f7d2fd6c3917c20e79755e04b788c4121e8fa1accf3e9e42f0482b610a954c40175530807113be35dc335e41fc1231c777da4de727677ddd00fc29d206e9d6c2346f38984c0dd39bef8f0a2a1bde3b598c1960bda592e6298a5f56b8d9e10fe3250cf966b5e2c0aac6386e30fa231e8c75dabc794e6ed1ecb2ac87f810afebed630f60b96ba7869ab8404ad9717a98722e0a783d3de6d1de22f037106f276bed8e45e774830b5cefe0c15defccdd3e48186da4841e74b1b4877651d96cfb8d9ce6e4129de41101ee9d924de54c8b4bb376a7690bb4bd734b13498d8cb2b76813d29d0fadc916defc120a1ef4a6ab024bf1d5a2bf5383e09bfab9743da097087e5d3bd2334326ae7da7d4709082cdf0f515b687f166deecc2f500589bc8270f1cb4d35a4bb5a2ada886d8f824fd2f8e12d15e2204eacf9dfdc2e7cb1a70b82fdaa988fd35563b87571e2ad69c28dd1064fb889374f11e3ef0a18680cb14a0f81133d8d226b232797ba410cc2c8694776cca67672d218701f2d9108306e24d925fec7cb1fc2af56c2f8d1a83f6928517345a117dc133376f5f31b13cd13c2c5e0891de53816ffffaf31642499537da367e2c774258749f2d277776c0493a539f2086128b900b1595a8bc21026056117e11a3ee46cb469009defd4f3ab1250b97794f6ca165d8c65042c438393043294a0a874966b3a0a852a8161a91b1fd1ebf64189e4e2f86490c16b43f88ca489a2924867e0eea8a14e72f9eba8d4bf5fe0b842f69dff41a9ce7c8d88cc39821210e87aee16151a39b88af6f4d1973f1b2603284de72c969fe4b9fbe889e427f59fdebf5ec378c9bff54d5ed6064bf0f9d9e8a2f2f6f44a1b7fbefba32bad585284adcb1983eadb9aa7bdf7b4209bd1b0cfbb6ea0c9038c12ce4f563b54f9a4ef7a0652044beca55ae8adf045b7b60199e84fd939a30ad1c47ac18140be96565bd70dce22dc2d25f11ed81739b55cfbf7202f2acecb22fdb2a39096cb2d9394bdb7a2d7a7ca7f1d76e74103af95937f82d9750db1927ad773da3bcce72693ff4c493ced0d6545b52e407a8cffa33b262cad1476adb9326437c5565e230e3bf4a7cde95b18c9c4d7c50d2c22b545045d13b1664c8bd82bce022510712d3f98aa9db0c9e4e4f8bb090e1894949935be5cae187e106e1b1c0c6a1cf290e36355a61b06ee5b979a5cfe2f3aa57addc390509cadfe45a490db7c2e4bc754931592438a5d9846be954455640c0bfdab789a0fbc2d8fe9fbf517172e9c3c579abf8ffe5fcb332c1660958e55a1226dbeb03e2443e1b69d441fbbacba5e7491abfa628961cac457a9dcdb61f815839bb6b4a7e3b03d39e9903615d943ee2e5ecee77f66be6e6913ba552b9a4b8442a0d53f89b69b1584eb5fe209ee88dc4de716ac51bf8e3ae4a0b1ab405aa3d050465f204aa0e13992492133dbcb8f98f4170626449c740ee89d7c476c47b4115f1dcebcbd59c3f249ebfb98b5a479ac429756dc36dd494fd3defd38359f3f8f6c8905f4cea3a8e0edd6d405e38acb01d344efc9f1f0f7f910587a322ef06fbb07c2128714242580d7ef39e7e13536df6f68fde4569de0fd1f0371633fe38ef281936277420c38b798a4bd5e6107c06114f0fd78a159803df357c7d2a65238cb51ff6a1ae2cff0d22f092dcd393bb1ebaac6940f8d30bcd5fa63412958df5e581e68fad6816eeed175b8b2716fd767b82527cc1d405f66fc61a26fd1d96ef0c9c8bb3ab7951ba66dee81db3c1666a0b09a4ec1100ca902b721778ef5f75e7fbc8c616d7cbb341b2a8efd1a69f12273d8f389eced2e9fff4e6a6374b0090c6d6778ff1df144696ab8fff558503ec8fa55162405e749de2c1aac3d3dbd64a0b796e1d829855f38141e956fbece52f5bf6de40bfe558bac8a291b39f1e24b8475409448ab1f2e2fab82b3e3ae866089644e741ce4cd9c2b7ad8265551b189d9f9e2889cd867831b1bf06232cce19ab209f3d296652177aa6b8ff3991cc2bb34dd124a296fb5b6c894e9cd50fb3bc532cf5055640b19f1302e4f99d51180f371f77643230674aad195c03fec5683d47c24c49005d547cd22df5bc867b582d8df74a6dc06e91da712a5f7ebb530f2ee53e496a977f9ba8effa80fb2c57730a0249a68ad724bfb0543ca10f6265350bb0cf01343fadaf19ec33e6455c1184fa72a03f6335abce679d00615576c988f51ef9277da6b3e7cc061318764b3913f6f9193918b46164d134dfc4d75aef16c1fd137e99179f3c8e6bcc38da3942df8c8de67ec75a27275feb729d329d701d7c1aca9d13b045ce68d3030428fc063539e4cc758b9fe10cc72707f8c474846acf019c0e6922bc77f3bb4f09833b40d895d0a5f9516ffab634042381d0cf8a4dda955eacc241df73eb0ebdb61f68107c38badfab2401ddde9998fbb6323f84176c5db75de3dcce11cf0f4f334d487bcb32cdfc91bcd37dd2efb0f9eb212c982bbd83a21ac71a6a796aa97809f09be9017cf810047b75ce007c763d199806909f09a3f042aca0dc7f88c1a2a1b783a513c5d946eb21e0499669a3198155865b6caf9ec44481460e8c390da88c983a616679435b50e5426c294ab09421a5ab8a2eb2031593f003308b62fc5c9e5537af19ee1f213ab00e38774f0be8f64ce8d376c6a02fec840d35f585b702d821fb89df0113fedbb6f9b12f50d1050e54bc92aa464932f09fce53e1f8d6d322a5a9c964af616a14b07862d2e9b00c67881d4374b30092073d8a872af66e7cdaed05b2495455753b50ddd69a5198d4a7ee3309c4a11e9599baf10fa441489c27199765aaae863e41dfe2207da68e689e85502b603855d89223eeee5d4da1492abc866d37d33a7d1c04f35432d6a18693078791059fe6cb3bb32d6bf912a08cf4574234de9d42fa881fd60b556722226d93fe4b1801c0305f8dc4920d13b1e05462088b015f9b1316d0d3e38dba7ee1a067e00ae405a3a0c0e454b19b2c6cb770ad502642c7653a857981fdcf94ef9ff618c7a56ce00006e309c0dc933e3cf52e386f1ed753a67578e99d7ea504d0e91aefb396ce58ac211f1c576b69c5f27372b1e76d76bda8dd7073620e8cf4ea840151db7b2f7112070a57df77b7e6a47d2438a775cd2bce1f1d1ea35c61fc40e4176b0c953e883b9d2b368360f59cab540f22c17a892f04fef7bbf097df43c9b54779134c451b711f05e9f6493bf564ad88d35a23f0c420cf3609b1f629887856c95e39a9c789069e67d1ab9a16916031ecf129fd07e1e5fb0729ca3269966959c675eedab47c6d7d1a06ec7e6edef5fbe57a47f8504b7d80211c100778cd5a05ccc0c1b127d370f4d1131c6378b7de1d8d8a21e80cc6d3719f0a1cb79f78d4d40de80026b7362b8d75762e7cbc5c551b4eda040518c75872327b9686641534f577acc0d156b910aab68489422afb606ea5420e6b51434e3c9ed1463f62d688cb91ba9870c71e2dfdf6c73def3c307002aac9539b934e021f88ae6bad38f5a56c3007116797b38a0d7ffa6f01303e1db86708bcf83c92027b950af92388a50f22f91f9a3bb3d38fb8042647bd43e2fbe509f1494b48dc9746da265af5fdba6feeb319ed16868203ab819c84aa11ff9cd1d53f9a40f5489e8997ac3efc70540f006e06db47aab653ec59c52812f18c8839f520efe700c91ce34996cb170e1e6b406c1de7bf293baa51d2f82c846b82cace10d56d336e06d50408bc41a494fc57c9edfe81944e485706d7e36755c1a6d3b4ba5e217edee96233311dcd0ba3335668bebd5f8103361b0b122e271a7e80db04a982ec037a4269c96b41b9331359a12199982d64c4e9e2b4515ce62f1dd2a44ac0a4d4636852b7b4f34ab80b67a743aa5a8ddfc01ee29c273f29d033be568207ee4bf621d94149f5389443034581f3ef0330e939c201e7e164ce648ae9b0bd30d35603269cba8322cef25d900438ca8c8c6ff81a217c773285f7b4da64bd0ead3e2b623d4a2e11e5a6f928ab4a67f356853234d2a0854dbc405a1e8e17bca5db776ae498fd88557aa6d4cf53b6774cd38af593725aa9e8f80c2c5c56ff00670b59f492499a5283357e9743069d1a8cbc87d5a0316be6ffb17af00aa5341f5b003a433ccaa680fbfadb19264cd7d0f182c7afd3e8d4f67386cc597432ffbf0275aa6a4976b47ac7c3e8ba092d9dceadc7d841cf97ee61826cdd359577fa973195fc42dd0d5813ab1e17a6ddb572ce29e13f73e8de643c912b57a1d4354a2c50819f8b6834b27782ac4173f77724a51b5af932ca84cab745dc38fbd0eede5968ce490eadf387575ea4193cac07d4a8d272cc9285f4b8e3f971ad52fc6acad02c04f40ca135ebc7164de580d47f143d819b6d0a0abb8042102d32497f33a4f53f20a384c34b73a2db878e76e7fb16165cfc700cd50c6a1316280da3fe18feda5a12030f396905639f430198931de70449f00c57a33c85741fcc13006daee8449940d16c78282dc61706da94db89b75e7f84acaa11460bbe4a5bc17607ca87e81b021703650305aa756b64f7c76a3e51ecfc51d065474eb9e2669d0bf908b759662434d574daaef3e39ee91bafec21b6654ec9192c033a952957f23ee647be585a67b9c5e6715c7b53e14e53eebf7437b6a5aac5f05f64ba70e8d32acf2b167276ff12281df2e740180a044bb09b42d755df2cf11fe5ade0c3aa75eb4b9a3c220a1603ede767fc6a6203421406b62c2c3210c801024372081880d14b244099ef6548ecf3e841ced2ab499964294f16e541fda7b0ddcc4839a1219ef0a80b722caa25ec4a44d4631ec96ed0e93727e165bfa2ee2184f55428ac99957b01afef52bbb3c5677dd86dab6b9812cb18033a8fceadc6b1eed926281bc80b61d822322d0fe99ba3b9eaafcc87ff6db1862b75030200466121b62b0470e1d4696a21753b7a357c839f09f91b4172a2f169ee7a7aac32200d386eaea91eed7b1b05aa440ae1f7b897b119ace2b4d33fb1c71cc4f62a0f29d85f0768c0be46c9806c80c16ab50414fc5263d8da389714218c8a66ed5c14a773812ba094941c990c76abf5be7324b9c29a13e2ca6a47ec265f9231b34ff4752f8ca9ddf4d3f3019163f538cce89308d4bab9babdbb019e108490dac0ba15f9fba4f226e5f123cb842e6da5c5e484310d06c9a9d9f7f76a2a7e6639a04a14dec7f79cd2495457331101e89b8024999ca7901ba517aaefac52d5f99494e03dafe38ce3e7ebb00f07a28f7b5805a66d2633fd6b395d21c1d4e4deb1ff4fdd1336554f230f79771e07f2e20297ed510a2aad47da02bb4addb895e0fdc34745cead44645f1261b42c9fcd679d4743df735b7e476bb5d18ac2331b3ccde0790dd8c5ed0ebdedb2f434ec05c72d53d11b1c72693087b59f3e8812b9931696b5274f74be9f08705bd507134e1ddc6f184f6ca3b4917940399257530d015201b9f587988d582d6b6712c8e6fca792055a4242ed1732f3242deaedb3b588fdc9b5a2856d13c3be742b1d6fdfece080226b946d303aae880b98321d90a8ee19de0e8384cc0db27236737a4660f450997f4164331bc7ee2f4f28054a105bf0ab3e6102743fba08a34e1a6c6e4eb01514956c09cbe36762c66594bdf0a70eb33bdc29d876e38f6fcec0b0b35bf79a34ecbeec85e3d228678dd845421ce4dfe558839a33611b635017f60c8e5447a95a60711a991a9e1576a7cc3a7def8970b012d96f4f41125dcfc24ded61f44fe894737d8fdf879216739d1b603f1e0547087e67da66d20d71f9bb3d0bfeac1ed5e36d654438308f58fadafbe58e75263d7036bacc540991390c0f0342ad3ee3684858c153bb94cfc9a32f39512f4f329876d68a403f8c4e678e71e2aad94366130f83b315eb228675fc51fd4a88203fa47f80fd449035eb2bebb6f8d071a7cf1daa036d856cbf46c864562871eeece3ec8b59ede72692904a66599b5ec528bd2f622dc222804541071a3c39a9b7cd366db20a494c1a684fb889f848e618daa8f0801ecfc1a8fe4b847062c6b772701b51f8407f7fa12c52f6a0d529a9c2a59fff5e33acfa692dbe58ab0d861e1098e121092cfbdfb288df8f7155207d3cc547bbeb91322bcc851ab1ede5e682c89a33781303b126b6dc2c6623846934394a3794da9ed03c60b089f37875381f13e0548db77fba6534bb00b43690cd2876969ae39e866ea0d1c9244bcaae63000d67b045865c038ec96a25f3784a60ccb3e22a80c4b76232b1e20f62316433124840b78e08dc054ebb64ab0d25a8d161fab8748b006576f8077f645429d02c3c17120f2aa844975b81d8fb84be454e3e127a6e318b07faeb6c19ec25140cf810139610401c5cc47a3b29bb78c2e0ef36e1da5e54f0d8e941cd9daa44f89a58d2c01a96532df3bdd3896d7bb7fcd9bd1b3160135f8a5722e3d2ea38e286deb5cbfbff1971bd59d5697cef3e432ab73d623de866b747c7a406d957ef2d019f3345ff3b25b302e488c556aecaf395a493614821188b30b0eb1fab2ae0b9898a5a91b5d80d76cb6ba023b5dbc82087ef32c2620ff0f05f5c4f93de21a2940eaf50f73e7305d574ce59bb385fbb7dad891e0382893898c85a7ae273edeae13f02a27b79be774af56ca5ed4052be913089b936fdbb82802affed4290b3f9fbf5db98c9b0feb88dfeaa726f5f851a75aca8275989a6bd7314e096d08c89d167017626bf838d0408c3730cc125faa7be30c63de2d89b9c3ca95a71ce4cff43269e745b5d7b59cb7a5cb38584a26600cb4963027514c44dd3250a3ea7c893cb2bab59701fc56352b12adb358565b681c73726bece7c9b80fad25546a0ff3b3609560c5efa0042a157c26045822986202bba5a9c57a871bc0622e130700ee01f0f22590687199dc0502d3c4a0e53ab0a87416cdbf6f8e806ca311ae62bfddd3c761172ec18abb548264f6cf4154cab19d9ec6e8d0c1979daddddae843bf38474563e6a7dc394d83f6b3970cadf634015ca7297e8b288f06cc5c7116649e499cb7660b9e88fecef482c1dcef59643d9c581fac127a986eb45a27efa325d75d51e4094bb8865b6f121c74f8e1fb33719d7faf2eafa89ea5e257507e40795cd64ad5c3630db666b6d72c38abf5ccf86568a002bb3872fd8113a258d8ea92e426773cecebe09c59505ea8627f12ac2ce1b3940c7e4f9668e20a8c7ec7cc9d251735486d56a024c83edaefe98ba7c08e9a6a71837e6a355f57b5fe127735a542f1116c69123202957701c98ce32d6d5276b2711f447af31fb64429d8301f555303c2ad7743763ae916bd1227d76795bd58f8922ab3a5d3040f39b3041f34b87d0e649e017dc39147bd00e768328a318bf6de13b6a14d7cb0c95e6e768dcb06c9e73dfe373a9d87bbc2566f3c1edd6453f1517ad8fd08ec20f89e2951695a8e2523b4131021a23b4d803b840c5ee3bada6c84961848c2f72eb62fc5e13b78fcf880dbcd2320f2483249782d395580982217e0213bd0a1e702c88031b4e234fb506a76dc20d4d167654238027d7dc0209326036e419308981ddb630c7f07b2015503fefefe2fbfc79b47e95ba222f0524a44d19047f880a558f7d7cc266a662d740fdcf60a427ccbea3901028348ba2126d59c04c6cc1d69f54c045cea4507e29c97edff5e43f21a7fdd836fd0c2ccff9424a94026d2c7e80e536480d6967da837c53489f7d988bc6aee62321b0d59d04d81a941f74403d49d7ece27af69fe0c98a807a098aeb6430d3e0f7e975480c308d7867d49c16dd1398c0ae9404ef11b6e6fde50cc5d339996101563943d1df132146412952ed23c1a7e7643039122b04d138856a4c50c20c9516333a1fbc913a571c92e893a7d5455a6715b88707590bbc91379f7a466a3afdfff399bcda4bdad4c48a3dea4b4467499ead463e927dba7fddebd7d4ff699a5b34dc568c01f50078bc6eb09c8170497eb9ce5e5eb8832822e49a5002a56eed393dcc7dd9894d853eb7b66aec19ba70453ef4351c47c42a0de311a861c9d2d8743950713ecf1b4f6a1c03ed648420199283eacd044c7aa3650b8df217df66a1cb58fe937db568c8f085dea0d1591305d0349556589a477a5d00229564bfc946e46125706820cc896b4250f009d2d22505d105929b4ac970c55afa339c265181192dcbb60979c993b0d43ecd904c60bf2e2de23440353c45d8275e3d6c338264d62afbafb72d3ca7f072a2d2f7cbfee9d7f01a7d897c31d534678edbefea19a839d964f60d2dd48eba878769117343930116f2787f015332418f6f57aeb4a5d9384f4a980e6fa26b8a32e19b4010b660966f51b8d8eb37dbbc070436d2ddabf881b8bef7d36bb5569cc42b7fa08f0116cf1d71623f26498a1cacb69ac715643fe8d034044e9ec5e99146df605083b4601e18cee93be0b54c664f75b8f7f0ff193f685da77e0af2801af0b11eeda1912b75ad70d85c0e78d3a8339b5b8666838e24e7557f8ab48c4736b3aa54234470dbf2fb826ee8e56830d593abd6cd532d9762c62640bc25f761dcb0034b51e9ac175f75370d82616571b61adcdbd4f86f313d1392564aea8ec6c4bfdccd62b429001d63ffa7b2c182cbfe696f0d2178792339ef31a64714aa97d6e9bd586ceadef2a16011b630085348e694df4e185c4cbaa510e77ca9b9a31044eee93f0e75fb42dcdd3f5e197e3927a3a5d8209a1068027a409715b671f857adc080c153639583609d1fd7092ecf64181803929964013de4db3b4480d972c8bb0672289567ea47a6377e352d66571a735d9e8e470bcb93405540254e146883879a3f6bdf57307b17982823e03944a7135aeb98cc1f4e4d0ab230eae945045ec10c90f086acf5b1377e01388100cbd60be66634a89bd203c10cb81de516a77b0b1c9163d6051217b3fd67ef61d58873af4fd48d8be0d7a0a911eff8c734502723432ac23da426d6b6feed73911637fb30d5172aec311d1fc983faa3ffd01bbe7e2bff0e01efae258fbb5ebb67e86f64082ce1a59a363a5575b6f97b1f1fcfbcca33425129f0a052294515ad4cb28228eefe25d0607dc74a5e1545b8b2db744241ec56cc65d69d6fc2fea24c349d580389676ca909f416da009dfc086dc1099a2f9e44999e72b289bd1fc622ae1b691b8977e5113d717ca0095fe6080211399d1dc4f80b35bba7845633b05e335dbe83cfb45730482a267f4d039d9c4c112902f38b598e514ae300a99a9c6994db094a6d95d9db423d852ea3400e99b88a57e6265828db29dfd7ec4c08b7e603d1c882b9085c92012946a61765494b124986287e3fb4c2ddda05a49c03525942bc78057aed04c6ea53d95badd49dbbf8a0b7631d8c5ce363c28bbd92686debdae0dbca1e98598b15838b99148109c630e23a9dbb3ee3ff02c246ec0fe68c0e37c54d1f5c5339f20e642e709177f76100eac8f792878fddff2783924381def08bb6271b04d9a7934207510592534eb38a95b0fd444d20d47ae33cebe311b1004a413513dcdd671e4a6008404ec7cebede43135448ac8e79f30df0eadcc03af8c3b938f34e8165ec56c847162818c2db0b5a31e99d72a0138c5ff9391f90af2b38b77fb449dff0ea7f79c9fc69a1f83c18c3c6ef7ba24ab9f1b786ea42d3a713449587624384c85ffd15873b6f4e182b276b773955f2e34dc19617ccc3b1d64d0ff2b15f6ef0f3544320c22838223bca75c34bc2234c27c05ca48d7eb7a5108e283109dc54176eb57a819c8ceab1dd8416413d7f25510637672acda6ff00a23924f914b0aee39f64100541afc4a61d767cddd2c14ad14b168a96ede62465f5a689b6be0d13afaadaf0dc9bd3973f486df995cdc26d540e05b8fbf97b394b8a3b811746b944cd820f8e1aa320f5ccb8644ae9e4250b94f25fde8e41a35c7f3be2028e45bc3b02dabefc372f3bd63307862f5f93889b013ec1d82a3829ba9fd593f9d3c6c4bb05da4e4d906312b16f8615d600f36dde3cb98885cde6c32b9ffdebed6167a23a03afe3c3e4a6a0940c13df8bd9a9195f9c628d0d19ec1af44867044ff88c93161ee269bad72ba322ad31fecc7ce62b3cacf062ccd40c9f65b45b105e19aa54a0e983a1c672098af8877d1b3e7c6c10c3aa24ddc9685493a9d48f72168d922349ed267435a1e32260e366798ef4b092c00aedba6063c5e945ea4a4729dfdf285928aa1f0cb423c0eea0416a8e01072980f257a381f899d5720fdd9c48dd65f9ee89d3ff86dec0de0faea3090043dcc853bb55defc7d1435cbae65d48b1bb721ad75ba007db9988c56941353c960055626764b7360ebdf346507eae4ab6fb9ed6645020426c15711d7ea06f037821aff0a657597436100cfeaadbb7a33764ade51c6e4c281d4f19bb8e03057f8d4e318f47d19964ba25307dc082f2d840ef47ebdb70cf703b8aaf6a4b620173b08d64abceb899cd192a107bfd4a144bfdab08d174e40d43995ae83ba42306644d49e1e758cf713d4bc3c7da4a1d1ca35c1c0a60eb4db1cd4773a042b6dc2514b70c1447e731473c9cf32da105182df006f8de6f9841b5be0cd54ecbfb6d1261f194320416786b1fd1c0d5c0d9c748bc8d39e334850370903ed154513adceed8292676b8c6229c75e1a21fadd8fac8b8c9f9f229e1c4cb2338e805f6a79ce13909e7d07741322e1ffe3709d9b0808cf77cc71a675e11656d34cead9c553099bba87bb49495dc03626b41b44bc3c25a0641353fe860b7f99f427f4b9e809a96c429a2b57b8d631a865715ef2643299b5bc741194fefcf08d5404139dce7ce7a5f6a9a861574904912e1e24933b4676a2cdb34fbc87878819d22ba84147227dfa3087ead7fc3478783167262a51a722617fd6d98a80750b4a29c7a9ea33845f86d890a2da014ba38928199ef9a6d87ef297a9092d3f03b41c5769db5f31c1cfa80c1ea8882ef362fde9a7837dc3325c4b5c3a3b7c2d62cb845186968c4f0ab9c2d11535f46dc71ee021a65f5ec661430a6c5d51baa33614bbaef422ffd5245ff2ba5832d38f175bddb451abbd6ce38aaf2a284aaad71805206e719fcafae95c261551943c4e641bfb9805c17d818dbd51e678e376e914d33a541c7a8ddfc7f221896dc70486e6146fe4c65c6747055108316b4f19142c4c9f32fa789e1e3fa54c839e2c8b1006b1f7edb9ac4e8548ac868fe4f8314bd381c4037252a2b0672b67f1d7a50af6e4df629da8f199fe267ea1b40b58851c724316fad1d50bf969ad7f0f9432bfbfd2ba2c7681afcb4cc163b8fecad68e7fe668cb80c7a348560253bf0e4f9c7289d6f65f79d76df24012df3dd151c5db5900ed4ab4e9769ca80322eb590c3342122c2722b75f08202e649dd7b1925e20e304d829072dfcece0d42cb21cce99af74c2cf954b758f4ac0d70dd1c5c5dc38c02afa0ba0703b00cfec10237c1fa34e5ebb47fc8d95b8384dde47da69e69d88a02176f17bf38fef145ac5e29f8c3da297ed6b416ce2de5bdfc1414d2332586965871bbb87da30d15b3fb9fe442770fa6c62215b48a293b9941c577317ae5e9c5f7291efb2ac49daa35242741404676511dba72630bfbe464e5e1f858aa0f5effaea500b75d6a27bd05a5bc760bc8f056548bcadf3484f56164b945ea514b78a446c6fe55d28da3a5fb8b2423fedc55ea0518bfd70ee7bfd167b8821e658078f146939f310562b4a8eda08bb2ab78f6c46d073f96787938f73d96d402d80990848c49c747a78c82016c9deef7e406a93675599d34b8f5d93da246cab4de30356645863d3248ac295ff9c74e3243126bfafa14615d3a20ad42f71c719649b648031703dbf53ed813f0e0218c4b9385440f22b20617a03b56f40a796a9fe091633554d9cd0f1e4ce19adbdc2405384c13ae69e2659c91971050d01ca4f4b507345bca45cbc6c186ab449210963c54c04b78e598952ececed64d89081d218d5ac08ad1d41625315356c90995848f74818a959ed48c120aca561d3b7b34773c5accbb0d53c40e8cbea700a23865465360b7e59a3a985852b9eabf0ad23520a8f0b471fdd8d14e20d689934cfacb76857b9021df475851b5eb9cf25fea7965c6614e3fab8a7b84315844844435c613def99b5910f113b26df95c1200ac123d9c0d909f9e1ed7e8bfe78e4753a17bb08c89bd50c565924a76eff9043857fc5c4d959f705433e9d7949dca2ee0022c454af11c00fe15a3b626bef2c8af6ba7fb631b3b94fbf4b6e545927abf1f8a0688cf6ae6f9cf9d1e2b45e1d56d83898a8eb0a6953e8aac893e0f6cfd16617072e07f1932ef79e7df08b701f2310fb5f5d89ebb7315b4c61433acef06d7766d48e1b796acd820242bff0ef1ab83b43a54b1e20fa68266286485cef810b5483a49f806c92f1fc0c1b73f8ce041407e8bb085d371c69e49c0785684f21fc0b208dd7002a5e4cc0d6ded85b227215c1157f711484211c17207efab4446b08be83cc15211a5fcdda30d08ba1a6f8181dca67cce09eb8a0f10587a6370ce3c34f05c83ee823c221b61a014b8f381fd3f85af3a7ede0df1232d9cdbb2a476b4547935a0a6533bc12c94d85a88a5ade477ced59af65e99914191ce701aa784e46593073dde8bc069548b3747cacb2b00104ff94efda1cb208d1c2fa659987d7e9bb7103c92f326c9b17ebbdc58d8a33ea67dfb5460721913123b53e065c417aaf54ff3d08d78e64fe44c6c8e23f5057665b318cf7c16221262d514142c2d78b516619259894cec10a3fcde84b75172098d56d9c9bec8fc34ee5e7039a1c5b8b92790f69c29b726c8984b89f399b15f6e7aa5e66ed661a535ca13ae5659046fa3adac896b57b01305203f8afe087238637c3a3fb24cebc3aeb7d045cb1a2f5c4c9273d96848e8297bb842eff2d6c403260a231e6e0e9ee98c47a7281c26c273b9927fc7827c003da7980b1482ceb0e12df4acf5ed52d71746f5ba46b181581987a3ca598570e16d7be6e0da07d945383d0dc98d3bba4c70004e02e58eaf60a1d0aa6700561a34f23ad3a7fc392827a4a9db57dbe3ceeb7f272b69aa67159afb53df0a64443d7c72470c67a3e8a881043fb3ec1cbcdb6cde4b298e4a288b7c034f0c9245fbbb39c3f8b8a245ce12e47a0230e7b50be35d7cb8568fc1f685f711a6bcfdb3f11d16f12323ad9e960b976bd606e1711ecca697bc8bd48e28da15aed30b45262c282e4c2bbfea7c9ef93967e55f4d557daca5a3a7e481fda15ddf8228a9d22d16354255a834cd15435cfc740a041495b25e545670a9c4f2e10772a98966d797455c86031c78b4d8e35c9c95abbb2d9f48b56092d4a7597169e31b499e53498b02023446e59d0462551b9832d3d4b42a70945494780512e86df66bf7cd6fe55549ccf888f33a39a47539a80c4d9d614f5ba39edd644383ba6fb6257c743b39ad72f9165093f715c4477d86d06c8df310786a99f46ebee5a20ce77ece83ad6e4e9cf4a17f2e48a53fe8f3c9d756ccd52a3c1e24f3f10681d39036cd182c284c4508e9a5fbe36c07a2ebbc885806b3882725483b0ac412689baac96c040f12b6216d7ea040ec28d7e764a9e40628543a19706d0b8d1f27495ae994f5541d71df507b5e34d88617e4343cc8f0b93dd92e295ffe2246d2ecfaee9fa5b8e0efc554c84b75788c89cde5f7f5eb5cac88f4d4d87aaacf2edb88736651ea651267375489a53e1875a691e9e15b5348287b46f3ea37a2fe4b794ca006a4bdee612c93c5f77da661ec75e467c437e71dd413795e4144a3404781a5cd68a099a79134b901b265fa4a6b0afb5aebb0e06a9092050c3214df21b89170ef46e5c269a546b61999c25ac7dff79f699987f3759d0320f32a0d3ca3868a4bf8a6cbe88bcb843ae0b1b7507841e40d6d91ea81382370694debd52462f39a5e03df3e319b930792636dae7c29f479d18bc4f9d0a5ff1f3f9451671f5175b26dea6c691bc4ca401ebf509923a39e0860ac54ba1a04eb184593c190fb6cb0c0791d10810f2956a8e4cb41f9aebbde5acf42985acc851ac39266ac185216a21a4c4c01404f599529d62f5741cea1e6acbeb55c2fa928ea9d57eca9a9596d8c4742fe628bb92c03b72d3cf3574db5020ffc566f0451ed0a287ca2d19c0663b50cbc3ade12fb2553e7b2b6a9f437eccf86e0cafc5982503f59827b63e052c7e2e2c13f08354570a64e1b0848ed5da10cedc983734e317bb2081625c923f31d1d0ec9a81176c7871f047b6ef5db22f1d21ef2e38acba61ae1a81666b66982427b30c35a4517c2a8439fc0d1015828ff7e545c9a12ef074352c285b036fce00b6707a94924f22811d10186562e695ee2960ac82952fe624d06364ec98a848377be836a8f82054fd7fb858fcf1fdb20f3e0ffafbea48d0219f95008d708e2faab37108fd7522d98dcb72ac6ae09ff85849ab74dfabbc46b8e9ebb1dd28a106f36320b0b91f2883f38c93b8d3e396fb1a5e31c5aa97c7d77d990717c5303d80c7d219d39dff7772d22c2cda42c5f2703d1700d2389fc3803ebcb04a2f4ac1850b0af909809094eed87c4363a9e41602961004109d6c1a39520417ecdd0f05ae445a43c82344d79d2b309e1655b01824676af41cc2d607f97c48a2be2b6a1f9cb0d6ec0de4ffda25b6611724922f6e0ca64c9fb4e56e2ce69e025343291a7d0035d5ec149c9ab67e16098927927cec1cb05d46537cf5ef8fc5cfb2ed01344736bd72e26c6b610783988a44ec9f441661094c0b173fe3b365a2f354d62ba019b75e0dc9366f96cb861e281bf71d47baf696496cb226e1d5d005d2e60c7e9709dfcac7bc724eec0cffe28af618ccdde17b8989d081de4f829cc178d0ebeb2bfcba2909cf91830c5b84b63d018c566e0fdcd4c52416cbbf56954012650f4ebf4cdb76fdeabda11316babc315f5d3ff9cc16a4bb87c61778d48a3473a3d2538bc364de13ca89701289e4b13a7625c98e8ad9b0ac061b5ff4a21cf79086737219dcd9657ef8fa9c8dd4377290c650a8d4cc06c8dc69226a62a2fd9c04e64069cb5b5661b5e91febfda829d34f537be684ab840d1611053324ce96468de673bc523837d3f21ca4474ed14fdef89aa091eb9fecc225e066cf52ef33ec8dfa965a38ce68d9b65114d5618d9524ee1f22876ca3f66d5c3b6a27361f24bf8a729c7a5867d5b843ccc4148bbcd12ffa80e6e8fc9db93c0f146666ce19783cae9d06a36011aeec21aa8b9714d80710c8211391a5241b6f1805a1e24e604839477ac3b456c487dc9a46c136babddda0686322270388085e537fa3d19b2bad8348f69dc610d986813daf38b22b4a106bcd6c584fca3253722206f37ed02ed22ec7bf6698bacf12505e2822b48ec3f0f45183d8cb3e584afee97b48e3bd29d0437da536675466cc3094c109a8fb1335ec2ff3dc4cb9f26b76937e936a634b365c49876cf632ffbf303bfa6386fed3a4d20888d31b2812c7f60bd45c6f79646d9eadd648b37a570ed6f0755ab218256dbe5f9560c38e7ae95bc4e65972eae95eaf4fa748f3a98d85b318c1ca4b3e5c254e1d8f8a54809272773252435d55c709707a4fa26f0f78e4ea5825a9e3587cce270d3290efa8a1a5114f7f40308c01efc89a98854a4e4bc2ca1e8e3955c3805739613c2bc5435f957a17517a5115298058c47f011ddf90549a177dd0a2d07770782bb641dba2d0c2660ce1a656ac9cf9942b86b1c68d6d8df2b70e0e19436db60ee5c9477ead7749b4b24ba088bf9b52d5ac9194faf7374cb9b40ec5a7d42482b6ea2cd46e5bd1f27e148d5891f0282dc0435dafce125f9af08b1c0054b1a4e38bfa1729893b24cb9a3d6dbcbc97bcefd294795ce6a5a02e11fadfd6e2fa8f94bcbacfb3daee9e1126c07c57f53ec7720e63dd6b29cc8fb094844d05614451eb5032bdc4d7aac69d643121cb2d2304ec591c06745c766b76a9f1fa76f7171519bf4d1602aab9351480aab16a38b99b01d84ca8f658e744b7c6ca83389170943c195c16575ef8a9841947a38e2627162f3d25f03a1637766bfde1fd803340af136e94c6610f59634bd2aac57029c71de631fe51ff2dd068556fc77dc58cead655638b56a10761d24f13788fa396a81115eed1ea640af3abec4a55ab082cc9480128bf04e73caa96fa62d97a76220d68fd86bc70b674345b25082466d805a818259c0f97cb7462cd7c8bfc71d99aece083db80b3eccefad44d67147aab68480bf2f23f632bd8cbaf42ac914b916d708864a605ad12dc00c17ce0c9639146dd401c2379e7eab9b981ab124d57cf0c7889f400d421eb9dd76649c7292566c691afd730c7f285db17d0605f69fa7dd516d05b8c9bd179786254c863df29fc62006ef9bb9a5d2b8862ffe60e245cd472107c708aad37527e585406a7db3bee7abbcd0744465267752c2a41f53c2203db62239e6a7fdbcd82c5b47beed0870b18c545434383259e769a4fc29d793d0ce9b9e482b22d318c5189dd317fb5b18fe1192df298eebed9b6e7d165c923c61748fa492cb5f309de34d73695fe45f998a0214579ba8691ab5adf44497786e8d7dcb9fa1d3fb394fec6b85f2d347f6e8e7a40140bca2f242522648c21fc75e1cd19c23e8c3875ee3be486b4b5cc263668094a10f800322a29e1ed4ac5aec50a82b394507442e3427176712550ac41de0bc60799e9d2bb2b976a02a02699cdf700fae17f7c7ec97c74bcfd5ccc9a9cc22ecdb4c291ce5abe13d9c136566eeca12fb51024c6049b8659a282363dba468170e381f09987834d6ff65ca469bf03a5c8c1bb5e1b06ef1aadb9ab845645127f9fc1133fdac40e73ede099165f0af78b14d531ae223cfe240963f7274d88167c591e04bf23c5b7dfeef3515258c7312dafbdf54f821428b1a4c43c7533e42e387a9e5e7f27ac9fd3bf67f101c7091d17ec2f3d731df76d6dc13b1fec0bf27a270ad224684410c9268d12fc5364a4ae0cacac743bd522f4b918119c3d0c88db369fa7cae445319ee1c13286e90d00d891b559b89277df8849aa5a84a2ca787aa0614cb75e5d9769654f31ba14e2fe1588e2b25cccc52e15528e1ffa814f6142d02643ca87e0b8dc24a2d856673556e1dab4d36817bdb9304dad04f66745c061585499d27496cc8aec44932a913bc33e3c24b914c18a728d487f03c24bc1ddcbf57c8415889d1d6abb74e39d8e7d5f31f1b6435147d64686c634ee7f265dc0b7a4e95fca2b340d5a2b276b2827772343ae37f2403b4b499b2eebcea1d99e8920c580f59f5cee6d9a69458ad8bbf55600849a45b8f38cececcdce816f65e518454fbd393304220b4dbf1dcfd06512487bdbe27ec40ffe44c1674c44846f56c12918a8269d2394fefca94d33c564e122c9821cf023c905ca0356b455511986341326052ee3cdb0ed1284a66580dd302d81c9b969c716bdbac039f12f9826d3800f1527cf84f2d76660bdce2f60e8f0fa43ade865569f2d1daa3b3451f273b1276c8b1a39eff7885e9ba3a15cd5ef1e692e16b173ac7b8c4a99dcb8094bbd5cdd3dbe1b860a26773bd9ba8f62e65e4e4e6723ee0b57c91a1e0556024361b4ad78d8058809ace0d0f718a6817bac9f28d99987746a1a0d96278c8a34c048670bf75982bd5d22b2439db79fffc1d5697e8670f5f73d6a6562b572866ae9e8f6b23d20d09a5bae2587c8fb819f612261c4711d9c8101f48cd8251c902cce7d9dcf6e4fcc90e9037278f08c5ffbe6e9031584d5b3899a15ad61b294c867ad17051d3e4d69789ccbf310e4f5abb24193e911af521a066760004bd2085c89fb18ee0dae45939e782178c15127f437191f513ef250ffff3e1c457b664b429f91b825b103a824b8bd1757fc31f6266dab9dffac6211a1820dc4ff731a538fa06a84ccce8ca7eaaf8c315ef89d9b6d508ab56e1bceda18f58c858d48cab9533f16dbecf708b9b98062e98af6f230943b341e4bd4db74373163c30675483c0de6d2706182231b928dd729959421370278b02643f3beac71e95194f1be913ea7c212cb0bab714bd429cfd349f6af144329103125e4a6d3dc2f7043c48958450b010ac85a58d58d8543473db5cf448e1ed0f1324e371c3e3b306ace3749d47c4197c6162137fa66a46144ad1d9a885241e8eb33682561c7186f94696afbec2f21453cb8bb2be0238d68eae2cd7dc970756211d3785cbe4af71f38f9d1d42d5291a9a18888510b536ed6ae8bafba15dc6afd98c33ff05d298b64de9afe8765fb588f75afac02ff49cd69b5cdb5996fee0fbf0e48e587f7c90787881a2dd37de47fd3852f2ba21e9b1a64d4c1173155e279105dbcf8221a137c81b37ba93ddfea3e875b594b22eca656da71f35a8515595d3e690dbf0f51f33e64bd75012fa990802f82574f81e107c6c567e42dd153d71660f53dd1ecbadc6b6dc3f106ca217df1433aa37ab6cf23b6c6608912fea84343e7f7e00ad0ea436fe3578fa23504f9a04f498e68c9c2a051cbabcbd8978a69e8599fa1c8ec1420a3047f21763dbf743155c4bab20de8ea840c5905e9c47d7b2df9c6bd76539970fb9d3a2e4f7449009958e3a0e7bcd8aff2128f895e0d248ca356b7866fa4f8b5c21a8c706942ebd27130270cd168f863f8b56a1bf2fade141e1aace129d01f74661f3d56818942c5da005d9b0a004cbdc2466974b4db9e6f1b7abec9b73ec1b65301ef83b6c8ced6e7015544e85e4b38725950c09831f05ebd2882ca94f82288e3ade94d3eea87a9a27374ccaca6b4934fdec221cf98828451b7d886c4aa627b57d2e23fe6245d039be1a45010d55552107d372aef2e33e969b23d3441a0b124e6567e97669bfc4e071885bf1656163a2b64d064f2c41b7b85f8131cba0a749dd77e99c884a3ef18756c2a5e368a47d83cfea8ccfe654788480d4b1ca2348002b23f8afa05dfea94093c3342ce7a68fb7b3f8a5301fd7346456b09268e76f3f575a15c8571902c1752c165d9ec3616363e7d9a5d1823b84c5416e7bfe309341beb39c07aa3d5e69ca4a398626692d75f8c018a43ce60fb167df0a982d712c09dfc14c81a2fb2fe4110e22c703b41d013c7ccf1d1236cee846e93639bbb7b5ba8259cd75c9113dcc8ddfbf26b4f892c2f5b3716c86a2d985b87b0464d9e7b07eded4e176b3339a217a078ef0e6f0444588665035df0949bc36e39886c38e2ef21765e94263d2aebb8d43115eaa62c07752bbf05b8778b11c73cd326e42b83237e147ebe9f37230c591400b6e2e9ac482fb7ddd476848731d832568130925a7e41017b4f9d7f25fc4ed3ad1cad07b0d87814a2632875910a4a045c3be3da44a52a136dc8198812310ab2517d58f3a73501b1642cd26dc03dd6ae1e0d23fa6354ff8b9298c4ecfc2aa95d722bc15947cbc29171fc6c127a0217e329c229e78b8a09f528b2805499f06a0096cf1d88a755767742b66511ffbb0dfda0d8c26a504d950bd5c9e323f9722d421f2872a2d4031c13293e1b7e0e0f9d8c1be9d13d8eda74bd6bbdb7fff8a9f9d899bb1e2a3a62774a5bc963fba9b50e6e5a3dcb77891d7b352ea77d1f0d3e79a9d8c44ed4a9ea8f8c931308b644468d7257c2394dfb2604f8caf2e56f55bf7977878b88b0f6542e36b793442fe7c2aa9871d0391ea9386b0fb661578523bd6e26124e229f5e68640635a448d7110cd9d4b71afed45eae9348aa4c6d5e5c8cec8903dcc8173c1b04a30db8ba776842f26994744c9466af5f7f659876f65f2e2dc63d02fa3fba43252db821326e70b9b2d15a03fcb5d71c38fbf1c3f5a760959140aef48b5185f9a1e554a5bcb6eb5c38357adf7e1957a28ddb0e2f215f547618205ff32351b10d99e1df0b59c69a518875561f52c222284f948937639ce9f3ea5d0883be1451abefce55317d356f290bc409c48ec68226717a9a14da462ab1cf6582b32b9a7748cac8fc93923a793a0dcb90065b8df9836e609667da4eb645b846bc188fad9d8c163c433f74f419873e662312785dcdb8c24287516820c0a03473174ddfdfa5b601dce608f484442d32ebbb4eb63bc5eb70047e7dc0e534a3fb114b0e69cdf8597fa6557b55fbd781e1010ffd7919339d7b3baff7d099ba1c67de30484cb473ffc7f87a74d20e5cd4270d760b3e53a53e6d0dadd9baea6d62f6981dabfb5a2354d5b36a7416a9aa5645238eb90f7fd9c6d31b50cc56ec89e9ca07a7bdbe460515e6709cd3c24050cb5e968dd6108bcaeabe802120ad9a63ab2887f9b3304249d4fec5a89cea03ad6cfb0c9224f62bf42543db57c57f2c639bfd291fb9c233cd09659aba9198d220f6882a69b18b9b2525fc6bb9bcbe35e522546adac03744cd9d258b26fa4809ccd7d5c795c32ca77d788641f5b2119a2d6ae169f66a265502428e5fda306b1baf6495bb93504b0e6aaa01754558524fd63079c22efb7cc7a87ab38d9690e4fd323ae2329ccfed30c4fa93766cae10f0631b97e610ebf791292eebce23478d616437b7996ca22c0e6506e5695ff70e1eeaa6d9117925aba75fef50c4f6ccb3bd6b197513d23bb692ca94a4922f27c2b4e96681c98c8d81aeb3fb43abf33a962a0c3a5f83fba14c37a89e01d104bcd7cbd2ccf6ec540db3058813e621447ceb0b33fc1d25d4e844ef7c61322e3ba7ab89d47b4056590a521cafe8a0fb7066598be2293db5e8c6086788fdef78f582d2c5e4168f0ae0c8c017e6db9d253216ffe200e6ad2999759592b9acf5f1b6a7917b298ab4fab1f836ca8d274c9ba68bed77d6db43fa98a3fd8b701a8608d6d5630c2e0ca55387603ff91b63df6ae664a6c4440535f9ff5ee5c12dc5e826da0e78528e76fe5e7d5f3bf4fe7fcec920c2a41300b8a1bb6d820776889ce28e16eb318301217bf337c6dd7aedfd5439b8d2d40956a90692015fb28b063f42461430a6e1ee1c8075905baef3dc19f1ba0e4716014b3fc910291345a6af5459139dac2041f68a9167f43a88f21728e614f4e6be3218d5b228873cb79775847c8979679f5716c7d98ad51c1b0f2f1fbc26e8d816b254906ccf7579121fcc6b852534fe54e05a53a78fcd836b0bbe96bd4da3bada3653030838e47cf3f609d1517a73a9288e3cbced5557bb504a3f2279d99687bab77e207a9b934d0c346d02406dbdbc34ce1c2dc0bd3f8ff49567fd4390576edbd4bff11b91f4a7a3f3dcf4b882b59f475a870edb0730a55936c474b24324225612351e25f72660105ac23ea23a282f649b23d31bc6f36bd15795522175fae9b8e2c7873a6bde0f43e1927ceb7c752c40dc7f0b045c5ca684c11edd2e0aebaa81816831de522d523bf7e50505162ce2c84b20f43a0fe4b1eddbe8a03e11a16fa59dfa2df873784d90ec2f1b6343e86c99cf7bf409a872cb5d07ac56f8954c7b0ed43c8f551d1552ea327cdd0050c72787a6d0f0dfa1e5be7742e0b1c68563ca17fa342b25df53e287ebc072d940029417dbfae3cceb3da0b2202bca57a4eaff1238eb957cd3f98eb9c5a5b26e9181b30486b6f109399567db10261f20903822c4f37ddcd2766ab1662dd89845007c36bde0f7046ee13c8b90f336ebd6d66436e48ad8658410043386c94683676b720ce5274319f951a8fdc5017597f519d5bd9fdd96dc51ab703fa94adef3e2bc1ae1d24d2e814e0d05474303d4a73c439a5517a9df2cdd9dedf56f89a12645e70bce107d76d7323ca2cc24d50f642fc98f3bdfb13f7031a3cbeb0df5364e27f23c12db6a53cb0fce89ba594012d794036f4981becf183983a998ce5145b2a016a9f0a879f2a37429ed6d2420cd7bf68f480af8612fcc454b2b9390c7393ccdebaaef9cab432a926c47b19ed8c21325c615eb36961e26891630db4340513851a3e092136582a3c03d5795321db7b0b43c542b9f26c0099c66c84c6e16ff31cf55ab511bff23aaf72b5234200742f07a5ddd1e8ceace3ffd0b6fbdaa130bdc715f9bfcf62916fe569ff336fb7b3fc5120a6c86cacf4fdf899e463324bf00e664cc5bfc9c1f77d89f5949852be454f05b50824018b58a6506865d1c1ffcc97959d5eed436a631eab8865f276c310776f82ea158ac1454719c923a6a70f88edd066c4d20a4e226f02c5d2efc4d351bf6d0690487af7ef1cc572534fc006b355fa3d7bbc3f8facfb2a84e6b97b2473ac58f6e5487bce322d1a6e853d14e2219406e61657bf988815a7ec81f49533d150f2449004965af1a33df18c910ebe2d7d0271111f8a1dcba3c2584270c3bae7f1441a831e0aeb26efeb95c2b16fb954a4e947901b3a00e2baab667f8da498c3dcedff18c4a90de4bd3d02d1055bac7055afe94514cd6e255d071f655b4b2097ddab7672f8f78ce768024d1b415f575fb19b3b160c0dc7a02753651d26b7dcf36a0c95b9d7dc522e3b79adfbec28d2e1824826e1f017cd8dd2c0dc73e3c0684ee00d97492534dabebeb7a5e55bef87df55b42c74f883530fbb19ef56df47ba18dc6ed02e6ddd861755aef67147bc0adfbd14b310a48b80b1c2aba79e980629c5238d063f53ca43487ea8a639de301d38c84fbc719f76d3cea7fd02f7d87115a0ee793774651dfa020c8c0cec5f1ef2c139d32890117ef9d8d6d7804bac335f729ce062554f9301d59996795a6b44ed30c64d6a1bc398ca8477aec54d2d54cde2e5c43eeb6b52f5412bf3dfa0debf8b46eb050ca8bfdc6d3fef78adf713f2a2ecbd224951bfde92ec752610f16c65be6f8070db361edd4c8e3005344735c78708cb3c8cfb9855daf417ad8bee15df83f56ffff80c0f422659a906f15953f30a0ca9b120d3d0e019b41390963c2e0e54c21aa1a5a1a5ecc8c9017a777907d23807d072a4951bc3df55d2041ef478b4c892814d701076327cd6c52ea52331b7341f6effaf145fbee49ab1730a8fd05eaf08bceb485e02d39cfbec2c8126005197ab720b1db78e1e5c7f00a6b6cd5db91dd8d94b1f998cc3c9a5be1faf614b4606be56944457b87662b766ce88c835aa63531edd444dbfc1fa60f06d8f3dcdb6898088de8ec2268aa78b45a84354d54a3eafe77a6fdc8e904be900be1224c5ba4ac1cde9a34f9d45d8673b480650be996c78c44b556e7ebc3b2d9e937c369e45cb225189756bac620581e8e007864b2a18f9f2d101b0d1c66dd59dc20ca293c2c99c5d1e4a9d6d50849584a8b3c7e6d786c02b2ceba6312ab71a22c8603584c830c8c53c7f627f31d061d0f8e9faa82e6ac6d2e8767cd7a86a07b6578c296ae259afa4e4bdb4c8ddc58f56fd9e2d09948d316add94042409c8a8b85a72153c9aa28771ac13f5c2bb6c10aed206695c010f4c3b8e490f6f0c802f9c3ead3d011fdbda6a33adbe2298fe223567bff818543647cc2cf185ca59920b49cba84af88dd95ea3e0dc85c333fb9d337e6e3b0d1fcb730b2416d5024d2a24e25b7c88b105f88f9d757289d4114aa6538c21fbc38e710f42be8620a37ea218e1e219e9dd06ac0cfcc76dad5714e5a50b1529ff3ecc6bca0ecf58a981f8a1222d25f7d766f39c26ee98d3d31b9a25a39e13fc71b84f02302629ebf02ed1198278f7cf94094ddc1279004063094b8a1d3c9159d363fcd07de4b9bc060f813276583a5f023c7b9496a1705223d1fadd6222cc47f19965b1177c4aadf772ed6f767c2ac4cab7b043151cb00ae29a3926bed1c1f70d15dacaf62880cbdb1e9d348ed86885358ca4ae267ce27f98284eb87675a60e917ff6646ccb605147e083b71411ed387bb20ebf1614af399f4b030c360e3a2495ad841ac7f8c5f97719c70c37e784a19baf99b04bffe9d92281a4faf7e4f66ca15158df954cde8ddb306873fd60b51e5e081e0059540a685d78928334e0f0f098afaa9a6d7a8ef5e8e96cd154c946d07e7e598aefaeb50fafa1e10b5350a661f04e88dfa42e8cb7e2ec73ff9913cc7f9c1eb705bcc9c22b153104f159207164c440f41c92d1d54abec091042e9e7b045ed606d33c5c16708b6e4a27888ef302bc03764827f596888aaa227e036a817c4c7da679e26c2b070ce2db9e25637a97ec3b5a68f88b2682c1a7c9e1db3e6156e2840890b687b4ef14ff6baa02dbcd886b11c4d035872b86c00024431df6862bd8c95d307a9d1d9bcbe80bc83dbe6f8eae819b496a863423ac4ff1ca1aa26dc9c828f98a4dfeaabd548a84debd631ac310c54c8f8fe15f40ddd39dc74f2d907e92f81002efdf166c25e31ed9f6d1276c9b020896cd3503d65f2f86f38c44a88801957873183ec6a52fe9b917d25d53ea1b6608fb7e02d944ebe0573ce0e9fa9e48b707cd442426072e19520ee9734d150cad98360f27bf10505a5bc12ab5fd9694754837a4014b21003fff933525160d1d3f1a13dcc1c52a133fbcf4ce67729f8516f14bcf56410122c8f6c848438fdc553c73d53050a38cd77df6872f82fcf5b1047faac6b61ec557a8f3cf289562154f13f3a02f08d2799628ef4391006a72509cad472e7cfffca13c724289309298cbacc9486e906295468dc18fdde54ad1bf3b4972b23c6c29377ae4ef3fd07d461d951d8c5aa3c4c79cf80286bcee98439f1530a244d4ef63a1f39dd9d2375c734bfd5a76d74e81face0d1b00b4a08f2401e42485e478f1cf861096519a84e09e9085a3762309239c569d3ef90c6da61dac92b4268e161fe03ccae6df99353878f9d86d17ce24db2eee5c857fa70fd604509023b8206fa24fd5ba3f43dc3a5919ec99d549a0236a8d0dc940f87afa120997d804a151a70605c5818e9ed722d5bba5886b1f999b8bccd4a0f7178dec4f8947160db79fc8343f9ae47b281f7357d0df0966dea3dee924f24258ca4f217e200b1162e0e72e8a59e10eba61de6d174312b3422cb413b55234603a3d8eb80fb9dbb83d79ce6c221af3aae939c3a541fa73d41fd57ba6c30e664c7ab0b419207a735903c13c7d096d920ee396a449342df1ad942492c5cd681cd31d160b0efeae0b7491a88ebd0a7dde8dacc2d64b906d366c4c44100e6fbb8089bf2f91c5b303b61b60192cb643c60ea1e7644e41e772cb1a66d0d16a8d8c3b300229a640f8600cc3fd3ed769affcf2481d20b760705ffbcebbc2f118fabfc1f55261857223e97484849758cb5e059dd9572fc1d250310d71342c238b2349c8b5df9a039e2cfd17f376e65a99a92ed56745b9498712baf7c1c24a3045f3a8605534bca7f8653cfde0d22f50a760b52d69484118246191fd5689cf3b17e04264e2afd74a416086c6e58983b5cd3084a646e5bfcca9bcb8dbfbb78e678b1e15a47dfa67f4c1dd041f830d866ea6186c8ff273f8243fb289d778b99de3d94a074c56011491d99b0389bd03e42b90d4a3532b507a04707757b123576ddd7a61840d3c1bd02f19f54a7311df90c32eb5bc13702791cd669e18b565c97414632a223bb255cd352548a032b848da066b082cb2d68d4529ca0fb9eaf121ad56f5f9a4b677454c96c20c222bb6751e7221cd154f97d47cdc06136bb4136302c4568e1e6ea44419dd1a4950a815df2a246b81985d77e77af76446c755cd8a153606e5e7346947144cc6c3b510780ee8221da723fcaebfdf0a3ef58d9d06044cf7b0b781ab9ce66531f45130ec01e1a8bcba0b7c652c1e66724501ae2eb9188e85a219e1d316a58305e051f5a5e2a1dcab3f607722c9731a3733fb7821787ef4cfdc7bf52add0b0154ab78560afd5f25fdf484671f9435495c792973e64468dfc377ad2b0a1a18ee4dc4a0fff54056ad492bb99a1132bb80ee6c105527d838d880dca50ecb06145c7eb70acf60353a8bd5f21ee71f32e38083f34b36ac9c0aca15ff7b5234d88daa38bc9edab279ba3b6d0de72d7de5ea6bd15ca33f0b911bcf6d3bc029c117b885ea14e89770d46a7a52d321852d2da4698c2667fdc8a5f236306883e8de76e3eec47c6d986f9bfd452120c1901d61451e957187124f537596d621bf0fe47571f35f6135c4cc7dd9e4ed1c26ec7308b747433f84cb095db6d153e49a7b42c0401c78e723480f73d4b28dd6f58802b534eca460731e40a7881f30f11722a824fef57c3fca8b04d1078f4b1b3d9435650f5722018abb80a384aa6dae868a12cc3a718766ca0625f109423f9f138bb81c072e8ff4f2463f31991912766223cf2701dd702a52cc2b6e964a8e1d48185ded840617ee76d8e984bb4ec2acb3c2bdccdf6f0996ffee26aae", + "0xefd45b4696136558c998e6e9bcb6785dee80cc3a937677ef785096ba06439c2d8500381a18e40426cb54dce7572b8e9738a5ceb729d07ef542c23a3271af824fd0b528d05a6e60a9e0f8031c5539e19f5e1645d582d33fe1c5addd581d381c217eec7bb7aefe62861cf3301d0854ab31e0c3402058fde75e375ab84ed64f6c0604f74307d99ece1df793cb16562b207b44603b1d1b6b25d171331ab73c5bff17179796a592d082f5cd767da8382ab995933de3f16cbd0e0b713aa3034397df613322ea7a0618f08b5f7ad26a3b4502b4da39d644a2ca3489db052c35b24fd0ec18b642d1575682e15149d06c0219c295abbb1ddc4821481774527d64a4654916477d21c318f40bd2aa72c6bcc158975499be7d0b9d5afc52a62339c70926ed108903688ad3db7bcf5612d954c48c6504bfefe853123d13280074974f26707224699aa193834468aea7090892e6202bf43adaabadd0aeb934b375d877112c3d69b5cd64961a4c38fcd0c7b4b21bc31a95aa2321d73078a00015638e4436111f4900e8be97fc61f6c569a2e8b7e611122fb5d800aa40d67a1422df200bd5bcfa032387dba7828115ceeebddd6ae39ac79284c99ce945ddcc4af6e52b14811843d4b8405a60793cb3ee40868c363f294aeb45f69b3433ab3326544d9cc3a21091149e5604a5a09520cd22b73ffb3a64aba9a70b07c5376a919422d5ab8af49ac9f4787bd4ec2dabbb12bdf47000acbdef4661efb7712e23c749ebc71e8a060d8ee22da78265493164161cf46faf7eb09d41ab5c7ef42b60e6c75c2b6575bcc2f0c569fb05988fbc1441b13396cf2c4f864dc2908bd0f59e043ec78081f9ce14a8981bb8bed091dc6a7fce4309934a22a1256907f75486931aa2a315d7a4479f39abf53f3a72530628c12d9f4de1fc5615d163476e1f8d3a99cd09e4410f06d8d720f02cc385ce4ef5de69132cf37c3dca75fabe6133edbb9eef39031acc40f5ebc7c5742f516ff5f33d82b9ab81971719047bb040323c1df55a13a80482fc23867a749d9e7595bee42f5d7e228030377a20b82e968145c444919fb5b45e950e2e9fc1011a1f161ef05d423b9e97bc6c47b18429193486c9247085ddfcfe3cb3cd37b2254919ba3159835c5e2860c5c5ed5f3a8a015bb31af38f9550d5cd748ab029131bac31bf8ba55c3d23a6a2689b282e376034fd316d9e3741ff36cf94fdd00ef2f50d2c54cd03f7575b57c4d6f01ff95c1d19529c00ccc31e6aeec5492deeed235121b21e11fb7a84c635dbd62184658de22906413103036702c8a5110824acbce27813b525ad247efbb6d042e1003934dc903fa4dac8d37a1ab84dc0b0ffe79a204e5f2898355b68e0b2668587a196beae64d1fc89d4445866e097ff344a33dbf4c75d758eefbf43b370e824b100ed1df3558cb280c992290c95e7c893034e6282b3321272ac9d7aa21cd0322d5da644c3dfe3e6861da2b644c37fec13481a57f9e0ff676a255757f527afd93beed3ae564d2fea8d17ffee8b5b168dea197ea47b96b151a731538bc45536d81c111fd8ae26a6c42210016161a14ba431494d7911cb3ba17b8b6caa42765000ee2944c353d6d7b0b05d69c89882e67c2ef4a2c8ad1bf39b472e1aac9412e1b6d9513c73209ac69c9396b97b3a58f935e859c7c942ac587833975c6e3a8bde75952c04721f11feabfa1288f9f3b25c420ef9db78e666a4e4b972fb2f076b2d49307f9f4d77f8f5b39ad84c64181540eb2e350d12074b95800281c613aaf0d8543162921667e9d1bf305a7c0231bceacc3dfcf59cafbe93610cbb5ba3c610034c06298ae0522a178dd4b448bd1ddc28546a26375cdc13fe8fa8026c4b9d722cfbc1585947e0e441101b550da4c5ed4b47468a015edfb38b8744e796db432943be2a48bbe522533bef082e3c6857f3163d3cff76f0d4a20fba8449bd076e2b3d0719438dded8b59205d5eb9ee019d4692056c85326284d870cafe719e7c5cbe1dc254b4c55b72503df7acce185cc3101b25321475727d14e55e51c8678d4b3cb55a9cfaff4c69140411d08a9f697592a0511e8be9da83688e32f5d10187a239b2109f72a69d07c3ea138f3e4768e32dd013d9caf59be463ff65738710ef776c6025753f7e3d84b23aaa544b469bc4b48e15f2f0fae7bf5974392edfa008435754c3f1c0d99ae37e3bb6b29e7dbc86b7db6315f4e01c98f6172f9d9567a7a2a586a4748164385330e66631021f9254497e24094197f481fbda0d84bc36e0d4b7f595c1ffb9fa25ab4f1a857aa95d129639fe87e0f974ab621dec5848baf916ac42bb12020ed1ab764d8de453ea6a5f5537697ece87cd295edb08cf4227456ff7f86ed55ce749d73324940f984c6386e45c8658fc2a4aa5fdf8ee8f6a3dc0d7ae323ac6d88fb50ca5ca6833674b24edd6149fcb1d64b89c646660f9e7164c5f1824f49374050c042ae078d4185ced8b24d7fca11faf1446e78180c5463726e264e6d015a79c5d610e8b5f029899e865797478d599cd818ee14f9e85c30cef61b77715f6167aeeca696b04535e84ee6904b5125f6e187f926ff51aa83c823f1cf8a66fb78fee4e3cc7c2a4851442b1519799fbd3faa49f95f72dd187ce683cdcb4eea8871bf4554ce5a0accb7c928004c600a4231faafbcda844d5cc36fe0a195ccad35e9c031c891376b7f2ef45a340c06bd2528510affd187c765092594824152f657b1180f09ab791a7d8c327c3f41e3b87966e2f2261422622a6dbdda6aa5151d6dcb51c67bba0e1baf6f9d6ca091744e53518bc2eaabb6acad15c652b5f1951268970c448dab9724014ce9ac473a80a782a5a3190549a525dcf1868124b0cdd54f0d40fb2ea41020633ed7e2a725023f991c725af95a36c235a9bc4f7b6bc5fc2d1cd45f63b7b3ad9b4dab5856a4d065403c252de80f916a48072f87a5811d304d887669daace59eea029a7d3b6936bddf49adfc73a9ed7cfa6b0a5a70e2b3afc7e29c179e6fd47b7b84b26253abf0bf939cb977b5d95248a50a6adcd2bca0cc65749fe9cef50efca79b853dfe8e3a3574c76810401a9191ff01b086c65c636bcc35ba6670b3c6920a51ade9e038d1c12a56f080362fdb12d8961fb2afbb3e86fb2e8a9545ea9ade60086465552c2655d9159e406f484ff59f1bad22568573aa1cd84e84bd68c6383e468d516bd747b850241a11a972005dc54e1e7a6d933b7aa155d0c5ef8948298e89ed74786e6208973fbe75cf4a94dedd3965c1ad21292bb2a94ceca8882af1e6e2d13839791d33be0f2c334f2555ffa0db96e47b3cd207ec34371287775202ac33132c81b3847c0a6509d67a1badbfb226fe33222c7fea6f20e75526706d82003f34817b239dfc68a4ee2fffb05a0d3e1f93e298dee8c8408b8a565dcb5acd89f6548e7b87411f36dc20cf6703544f5f218d8ade91f225f294d5b989742af201add84d5d7d6323543ba68eb3b539dc5e9adea5e040b09ba69feda8eca930319a18e8db7505599c91e4a007f9096f82bbbe2715f494f9585e63025117bce9832d4f6bfb134370f35f58a1191bdb68010507159ddd5d3f9d95acdf63679e68124326b394909c9de2d9eece678d68898d867d2d666ad2574033e08395935ad3bce0a0cc2fef9cbaf9191c5ad92826eb50c126cc7c981b7c2bc79e702048b900942d55647a0e39761de178a9191002d1e5b60e5f4f4fecbfda1821fc3fd3b1a261e4f332c7685ac9048dc91717a4d20edf03c50d33a827e2e1052863b6e172891e965b278d64d17cba5e7de68688dea040ca5198e0c6d77364b099bc494b167378bce1e5e63411101e11603d5cb8b0d5026ced96f241f7f89efd253940ef518c539cbbbf104a571a65bf77ad56aaaae1921505426a1bcfd45a648c4ae9a0b73e46f8b0f8ec512012971b49b2728506704f1856912b49eb897d0b5d67162456291a93820c82c80c410df5fb1972653bc910152ad07ecde7137a384f219b39cd284e82aea87b18978cf90e1a1260aff5729bf6fdbb8e5f98e7dc0d872dd1bb262496507c3aa64b3da6de46e2d3047615c22fbc1de2eda34c74c09964cf16cb06ec58f07a44734b0028140b6a9070ee64b3fb13ff370ef532d75834b6cf4b0a05da2d7eda297bb15a1c4621074a75f4f883a4c564d9c8bb1bd0692e68cb54eb400666d34bc1f6271173f3bcbbbd2b9f6deec3ec946ed9571fedcdcf0b2e9c0b83d985e84fcc435a7eeef0e59e5c6de570a665032cfc6198e850f3a5cf9d8ea07d7abf07216364753c27e42e7b9a5a524da889bc56c563c4a56d5a22c3f71df4fd1481cf9f807f384e5ecabb1d84d6c96636a5ae7c784733e28c19897f3c3df12042e804ee1c5e9529f873980fa5075ddbea22cea5155b75ca025a2f90f667c0dce84736a1b0f0e045a5015fb3c1d82eba17dbb724dd4d0c9d79da0934b5197471c6a52db78dc6930f6f6d2e01d0796882cca2cb4f1cb2b349d86b8b522f54c5926e3c33b636969a631a03f15ae6dc3ddc3bbc1653dd833981e573d3bd831ce05cfbfc1fa3bfbc36f492e1f2328d3a02bee85f0e65569be6b7ee6b2c1cd5fc3f66d50540b74fb46e395d7bc87efd8d4c6ff63b1ae8733a77dc6860da12317f9c80f43105000ea10ecf5e1a85305b132c1c33eeee420085a3c5b674398c4bb8e5fab98789521eca3862a7584130e8d16ceaf88eb879bb033898ff5e2c3318bb50760dc9e13cd717869046a5f18f810eecc2cd2415d22b21bea745e6da7db52174a0b5e73fdf0498b65aa5c68cf375d3fc40be2bdf0b10b0b493bc6ac0e16d897464fe8ae5d6dffef10c4c508267e972dc79cc15c8f8226258a3b35d0a0bcd1141659e8ae6a45a2098be7731811f88fc368e6fc6c27c4f50fca147c24631e8e1dfd27578bb3a8b78a1cb64288ed73ec9bb370d173e418b77f2bd75b562e301a0caec3015a49641a48fe9bd486ad10cf4c1c48a542fa54d36042c17e2f8e4a2fd5ac310d9d9994fe5edb9317949a8c8ddfc338fbfecb3ffd17a91c30cf0f61a27470a1d6d9282a1a361fccaf7d874dea54062d40bd82cd1f1b776968869a51d552e0eca31d2b309e74ac249d195fba2b5567cf1e1d8e515225e445abfff74d840351faeb70eb58ddff445666b73dfd437e2265d5ea712ae54098da9b0540971a4b2023a46a193155d564798fcd1124a9b540e0293e63a035b97a52d6bf01e53c3eb3d885809109a596210b811c5009514f2d0a4040fe9d26f00ce3f976f7217e1e04b3f1cff40516be8829008aa28a219e674862a295c57adbf6cd8ec01ef15c9291033f55596e45105d243960e26ece467dc22f157c65d93cb1ee6ba38bee646e218eaf8ae656e6f23c93642e75ee9f6eee9a63a33e280881e9edc6125132faba6816b72fb6ad84a8bc210e715d2c3917746be5af2e80d52cfc089d7c7ca174ca089c260cfe6370c84af403640c0403dd7fba49a6633119db9120525cd3bb503a22e75f68344ef0404d46132f628fb432155fdb5c50fa77bb6cbdcea9dcf78ac545fc3192a72b023f117cdb22856b9351bb7c65c4496f4df642479d6bc3e7ea97396e4e44c54f67ff10f9ee2efefb264c162f6b580861b21824b0d30758a275e19f1a12784ff2ed3cb1f75c2a1521268db539fd8bc77137dd27d5351d90d04b61b129be3d6a19bfd57584aa53821d99da0ad4a51e9e591939902c0271140709c78643ccfed45de7ffff2b6b4094e95a06c671ea17fe511e9a20ecdb3f801b583d28eedd615da4800ce8c3569cb1301d5832bb4bd2c889b64dacf7f8b0e91aedffc294797122544c81183fb14ec98bde4e7990e8d4b3c22d374234d59b2792caa980c2fe4c09290478c13385a3837d5383c61ef6e2fb13064a8b8125ab3224de0c0bd92438902b68e3222b8b0d1a1977fbadfecb13e0a202df5a1efdf2ecc1003c7e01770a201b3d47dc627e47463af2d373e0a1add6a47a4fd9665cfbe1b4197ffab82d9231bdff24b026d95106f05f83537416126256827ef685223f88f93a79ebcc221e827ffe84f44e1b6abbc245d0efc60b478151a767a6bff6939759e3ea4d98e9d3fc8bd561298810f9c2c551a20eae133cff422345cd4ba43c935d1efd87738da7271150382a587bc0c2b92b21702d273ecab726975532de5441f224eda10e81515b9bc5a14e23facd4cdd6ec4253cafc54f1f5027465e4995ef78c75379fc3c126c850e875955b239d66f654f5ccf1cb19bc8f500b23583eecf9ce809dd198050820cde0ca936f3858c35db9fc276ed172555185bc8e09c5451a061114c7843b3b1bdb977fcfca580797a6ad25da47712913783a2fa334b3f3a1facd4966bb73f7d3a608a92452c1d1c4db09d045b206d304cfec19a4f7a3ad86e3dcf0a100ee8a5a3250f5ff98086b87aa669397dd5bdb1dd27aba73bfc1a811676d2b3c9ea38d6593332cc30094c9ae81a4f303f4315fa657a9deee3e4f36b2723008dba0bde3e522963f0943202d6ecd672557a8bdd6fc93a07c913524b21546da0e80ef1a90286902ec2b6d3d75741395e208c82690f2026cdbe5cf27c1deb6a4dcb460ce56707c28e9acfdcdc748b0d94e46970bfa4c217d4b807ad9df9543cdd0fe489e2f319b58aa64868987255c23eca359fcbd35e8276f8996c940ad0513c96b1e8688570608af98f07d9acb6a269f694efcaaa3ab2313199d1dfbb1f33eee49b53358458353635b42870008efd9c3aa93067006540b97e3e40f89042e96905c4a8a006f787790d78edbb9e587f7519cd78526bfeae1e5fb6b6e96b241671420071f01c24a565d698d81fdc5a27f11db7bdaac2f1888feabbd191f4c6684eeeeecbf793f7df6dea62dd5bfd86a34df93d2d9d06a814a0ca64a88ddcdbcc1b0191ce77c74170139ba600789af731d01c0694c4acfea500f10504309fb7e7826443c4a32ba02464eaf3a999be469068be7ec6f8517a42d152cb86865c0df058199634ec9676136019780e46a10bafed21b02723da80954019f35299f7a164a94a93a8f3b605e6704a2b29361872bd7f51babfbe627d69de597384cfc39b02c2301435bdfa596153b95a325f899e1aa6bd51fa1eaa896c4ea5943a9595dcb143ccf1635cadd099ca939b96f1b511350acb2cb72aff0d2eac8ea91b0791e536ea529305303ed71fff5a90318e3e00ee9e369136d75a56212d0e7fee0a2e9a92d5ac246208619fd64789f731c984bcb59b73dcd09006df7a580c38d518e9a724516209bba1459a996db209a4a0bef5fc618e2e1ad10461befb3ed082ba6f85130f3ab9675dab7ea824d3486c63bf6361c2c776035b1a6c19f54a8b02d940c936a14260056de00daba3f7787874de9b4893b4c6c744e29114ba78a0d27202992f56353a4984512e4f5b7bdd6dacfd55c01bc5ccfaca2d23aea22f597805ec1b3d65ef6ba2b6687d58d301b68dd53c92dbb61b9a817703a0b58d9f70bb02e667596f1648030a9a229ff08f77305539813b2444fa2620b2161d56f6defc70985d8c1644d747e3da1b66f860e9798652bca2515bf552db63bdc86a74c06e520c2ff6a597c6e209ae22c216486c334c9cc7f1760360c8cc941e6f375722fc0cb0759a6d5b542d5d08d6101f46d9f463730d8cfe37cd189b084af87ad666a2147a5170c61f3fc8fb09e081ccf5557940b2faf59f4a7e69fb29cd71436dd9466c316133c3199d7f4b784552516dc5db4ba721f04f025fd408ef4414cd5f5c402c35058556674ede0d7bdf4f141500b929887dee3c3134751e33d0549877c03f9c8a8dc7c579451e10517f4fb83d092eeee11f54c800e56a96d187c0667ac8f6557b5ca5cef50a7ba9e7c7ae1b6824cdc631f375bfdf2f5950f763ce32637c4f33dbfd2a118108de19884a3e5decae642b0cea5708f3dad57ac85222519932b66389ec17c3a9c2c00871c6e6c3aa1aa5da6c710adcbfb50a2d22eab73c8d14f13dd1a6222c51d0c776a057182e269a13c883de3795c8226203768915a20815864db2f564dce09cbd85507f355fbef1443ae7505ffe55861ecfef200ca255997568ac426b9bd97ce6adf0618b6746694aa7d0c21b0fa0d6818da44b8983fb8bafac6ba41a8099001a863660f9b5a9063fcae7263bd1fe52e29eeaa22fa0e307bf7226aff5f0386b3bf175d939fb572fb99e45c0f9de190239690efca0ed8a43f0663e211a7b3ce5313ec2d9481fb310e34911fcb8df86a994cd10c86537ac161754d8ff14cc7c63cba3e689da10ffd51552e319f0b7ddc612dd5b55c2df9c172a5c817f4a18b3904ff5d9c5e86d32731d7c24c055b2ce8408c00c1896594d61e8c4992bbfbfafacde1da2dc45a47d75f6bb9ee3d02bd083ab2f1bcdaa770a1133492689532d906ee91ab2d386c3ae1411407265f4d43d5455d4b3a5f03d0909c3ac0843123e0b6bff81d66f6ad8bc1fda9a1f334cba51ddd3c4f949a6dda177e50aba1d330fce1f72e9a02da34fac6135746b218cf2171ea7448425b3df607f7bb93d8c1be98f6df04357daeba85d9521c90405aefdf401f1ec6fbf1b0b08cb5d520c63cb5fc61d87b12bcd81f5f7c0e4d5ee7b28898105ec6a539c265368cfb8cafe0be04b7d6384b988820e368ed8b118b367f374867e7eeeddd0ce05b6e24e1f0d9991b1b44255d70ca7dad4784b6e3f1512a61f4713b89780c650a368c3c6bd8254a70cd9036515b3010c802b34d14c6684aac7f8a2e806d7e76af42ca60d2da0002fb5f6ae6f9d230d3a1344ae94639516b848e1483308ddaa3ff201f2b547c8ffeb9febb85dc7c8c334acbe262f2718269977b6277ea4adc8a0dda0887432ff1322c2c9e25b46cbc66fa588f6de3d1e68c595c941a72b753ab53b932e7848260b6d98dd142f036f6478bf43667b98c40488115a3e7813b48452cb5cdfb11a0ba2bc9c8163433d3af89fba93bb9688e1a9f8a7f091a4322c80159675db7781b080a086ef553d34ecd3deb7a4e70b6b17fb9339bbd6bdaf32e217d95fba55b10e1462af7c39e5b4fe21123ef920dc046f219ffd56b70d99fecb8a1495459ee90c664c1d20206096531200c3574f575e95d3fb65e268ec9771702b07adcf17c64cb50e8805c0a512d53e134d2cd4a19a8fd39e289faa7a7f952d9fc44059ce31526ccbbbfdc455845af9dcee34977c47970df53461eeb646ad557b7b26d2e13528657dcc73070790c31b92fef161ce10476d79ca1a7d3644096dc7b1455f4929647b7f098020fc436e256524257a8afb50db0935c006a005eeff3c3e9cf15fb2fdb302056c1747a2f551d55e4eb5cc324f284d58f87ee041c3b4b6f5981fd7a88039399b268e8924b0958fa157d1784cdaa8b3f6013a531243945443adb9152c6baf30c6e19d138cc324d2762e2d8ae14ae0276c34436bc1b44d36aab261657badecf2ee1948848b19062663e4c9dd09e4d976054df28cd1da2eeec3cd70d741efce1399aed07d75b3a97663bd1c6cef66653a937974901067a6c3ca8ea8a2724d3966a09fff9ab008feb78c5400d5f84128940100774e98a37eeac1857e600536f7f813d7edfbeeab08b13755da08fd2caffd703c0138928685ff503caff26b7ec8144b0b5d8bf8d36f450efe0eb3f26c6db66cfa5e0dada5ac9b49239c8d15f44d3fc223e599068fbd36e56eb36a0647c55a8eb08ce48a80c44e8980a09d12dbaf5f58a4682c9b73a214f4ac02abc49935c9cc130e034fc2b73761ecd0f05f2c510030e3d2034f85db3fa78f326edeeaaae05ef47a073d13c4da577d124e5db91f8f80eeb504f3929b617bf662b64a1c4bfeb9adc32cdac27e2a2ed1779fa3768242f4a56a7cd3f2f7676d8bb0aa3083e0f18da66a97f67bd75fdf65c86607eaaa40402f93a1578b75988a01b8a039d9a299c238703b9c9f9892b0044b24ab12be25a3b2370c1b87f54e4e2740d2f6e95a44ad5ee7821f50e6402c4e2637e0b0892130a976f21d503c8c4bb9471a73935d838c824114f9f832e3f342fa1d5fe53d29bedb133b6ff348d8588babf3fd1dcf443f597424f1cee1903f211b8bd823cd55e3db5c9b7fccad72b6889789dd1915b8929b24e223916c552561f6db7b272d94ea5ffe58f2499beda4b794ebea8f3caedcadc543ce687c4930a39a8d9bcfc6f5eb249325c3691775e97294a71ec9c0896aca9a207b2e05813319a9d4c20c638096f37cd72fa5dc1a451377dda00e92b70f3919b5f136242821d1000cf3b8950cb0fd14ad6b4bf873fe5789af10e5894a90afdae15849227749d61df322ceca3a7afb425c467148be470c104014b0be335a881376d6bf733e1d02674dcfaea3ca01c13f92ae6b5b6eea78d27298b13044be192ca9fd8316ba5929340461ce9683fb4c90b2ab617ddda423c37de2d8c71e74e0b74590d08ac0171f69b7e3e044713502bad9cc3cec3ccffb3c86750bc5f464248953bd825861836eef4a56782e72d424aa489e2ecc40933990a6055b86e6c09c7a35abf9dd4730098d4716475a6a061d57ab1215ace7be774cc38bb3dd3a14376cfbdfa74867deb37f3ac86edd40727dabc06ed1533308f6feab242c3a5ef452dade33ec41d08481e7db3b35515ffd8fd5e2f008a95db4381266865f72ba68ffb5d3c573735c764cbfcf7c2d208a8c8ff5c0629592d529739f2431c277ed94e4250ab90f5cad2e6933d7f2cc00c289e964a1ada53ce0ef4802e04f646dfdff4c9a30bf43c2725b247e06507a4d028b5fa002e8d7c61ae8df570bf7d987bd2da456ea6503af420629d495458347e5589afcbb8f545f474e1c5f05bf1250713f6f799bf16e8830852640811b04706e0325e776303751dc6c62ad713488ee2c49c66dc0a02fe4f8535bfcfef19cbe6fff2d26d8db4503aae0fe351f788db014c5a564f2f943b772241e9a7595a17676ad06f9acab809f25bb952706c715dced7d3798a4a5f975ad1e247064c7d3fd9de43a62a5fe383809eac2786a86bc2a1d4bc89b86e201d84640acb13dab432e89df4495ec86deb846e0ea68837d5e84575dbb6061daa84b01502de86a887cb5bec84ce83320ac0736420fe9d7995221a321da8f9d29ecb2bffd66a1c704f2605946ec2ec01c63f5740b14de02104e51b46bb76a777fb5bb0a251b2e98007d9b663ef181f4cbc5b3c621d2f28b71f1f16316f5a92ef71899f637efa763a6be645a80515c85c98a08551dff78c1714b0a734b7f7e38d936fb909c655d192648691b97ce7fd31e8bc6038b0082bf110b8a6d82a82159bcb7a714196048893ca1d797009522dfd3e8fc66438d1aa4770bda367df24a5d529269c1c9a33d8da6fff78aa76e1a8a627e6c0c74f69f5f12ce0f471dc6255ebfcb7798c8218201981d05fc7e1902f48e75b2c78cee17d1ca995be49a06197023d0711ea5eaf109633aa2f2d07e8e8b10ff8cf31edae88c7c4a6e486b44f2d34c6936473859afba9c352c7c59ee644e4e1806fd035cee444446aab825259c60b637b4bc60be70841c327617cc84ee69780a670d6038a9cbd867516de17dd510aa7159f68cfb71660b8934ec488203eb4f271c6eb94fc3dad8c3dbffccad20b249940fd400e19839a0b2998105558c7dbf5a11958a9b47d634e62f3842f96d0432ea8961b8f7e269a46bc535bb042e2dfa0df8f8bb41d2083629e67e0ea871ac293925f295aae539ea21793a2d7f62645d6f426979d8d4884f494b1bf783628f449fb807e011ac8f6e621c7657ecaa6c8866e54b10f1a87320bf807962f012e9b0e07179279e815889792542a9bd0fcd7c3547db45a97402d1fc17d1a55672271971a21c18132374f738de0fa43b53d15a2e2e49ee362566901760ac74275a8a21c1e07cc9c33a8d842bf8ce39a88cfd9eb67e41125db45ad11b4365c9a01d850b3b73e5799719cc3f6d5f374ca4af2aca3be99d33fa75114c57b315d8aac270e78866a69aa1ca148166e3843124b4acd56febc4e1b30a98e7cf6679022d3886689a8c4ee0f2a45af7dcfe16be3ab0db03f57f91016edec60abb07680b8e8d953d215c5384feb2dd76c1393060d9e8e7a383ff84c4666e0a04d8270fd5be82fc7a499bb7afb2355b0e58de2b8f824bc877d5a49584a0e95baae9f049a5bd01b272475844c0ee00bc15a94b824f775dbe53fca742da955dbee7f8c022ed959fdca7ff4952ad08cc3a2adfba5749c442cd607cbd0eac29951cf3eeb17546e5ea87dfd8064f550168d837de793d52c8e6252e7cc265251d1fac5eb6269ebe09d1e01d4f98170700bb4a4c5c407f818b6e0837c6fcf497818e18c1015d596e7d5e38cd55decc4760adadbcb89f7938a056546c40bb05a667eeab3165e423cfe5d7e44ea0fb7fc3cf87c115f95d3de00e06db1bcb56f3485b6b01eeed95f894ab90ac75a40998ae5c3e0c565c7fc17fd3ef087d7df4c283a8fde8503e7956c90d064a6ea44f3c024b9eb87bcac56febe461cc63c0a38ad365050f28621c19736c64de5c2e98b5819a3a27e64d806591106d41add273bdd5862f64702917d025b96217d2c059eedb44198e301c4bb7126b3286754a3c0f51be343b63f826869f7f423db1ad8cd80b4d3d184aad1069484f7aa439c2d00d99805c5478047c4c9151c285e860545f328b7584204496e91021d9b788ec0b28d16635355025956e7147c5bdc962a83918f62ef93b369dd3fd42d0e87377f32bd2a9d4011d88f2dc9fc7f471e9e6168847a3826001aed01f6a659ed20f95d56366af3b9fe0d753b3ae3d7b25fe2399e5ec9f75aa86491f713ce314dac7cbcac6aa9ae997321df504a60fbe6d138eeca9171ca03bcea875b797f8efac3755b33f1cc83d51cc7571bcc12d6021870e4e9f7d6340501dce0820b202f43b634584e032a50bb7a010436d734d06fcc8abfbb4ab467b8513f4e1833a067f00609188bfe76d1375e87083e4640a542fcc98e7fad93b6b51a41d8d65ee86c22ea734dafe64b3b75727aa41f38a3ba4da687e30d21d7346dddd15c707e55123bce2a81afe032cc39b06d7c7e9084e8ee40e1d7fd1151bb15b094f4ef87450a4fcfe9c86bb648c490e8bbcf307698e62e323250b3c76cd880bd1d9711f2b3fba43f16967c566d5f723f2e9242d404cf9c595e0115f4e66cf0c18098193ce6fea12731c6ec5304b551abf2a3dad955696c86ec05302c16f7208e2fdaaf68285323c0195f7962459fb178e2a1a97a822fc2fdf00b3e67c3ce598928c92379995fadf91fa1d2df1c0c24c618083fec003fc4f7c7655a8292d37a2c758347f9075108f5e65865469c596108d9a0be2beba7fb20a087b1bcfa4fad85f8bec176dee6da8a179b66b9fa9f7786c579f57733cccd19d5bb1d39cf1294b58d4b4fff1f4194c2e2533781250b6cdc65d9bad2e8c059f71918f38357019573764aeeab74c17d5d5454b885e0a50a79fdeede838be3d1c273fd3303f8a31c871975561246511e4e75c7d2d476380b21b236a69571157ef703ad868c6a6f8a4f110d73d2eb9e303a3e394c22fb1c246c02ccf5593b4fef07a3bb0bd186ccca3d8a4fcc0be8234efc5999f842182b1e448c24e2df577e91d64a6ea4ea9a208256f185efe333061924b8e37fb1711d7f6b23ed468199deb43c51494fd4535812b4f20dee049c261f73ef58380b9412eaf337036c59da415c87725c00ed35b7b206c8f2fc192deee86070700993750be8c38cc480c6b0f799f8ab15c27ca5ed470bd7f11754b0aca69687eee6b0868964193e2fe4eb33470941e6a4fa277fb7a81ba0044ceb379ab77430c8366a52aecc03188cc530d0acfe0d703a697a4085819efcc9f696bbcdd58bb7be5ff1ae7e69e43c9da6bf2b4e5d7848aacd67c0f11792ad68d913c5ba0a242dddd1177e2b40f61b8bad081b569c93393e34c17706c5093ac556a32c08b0b8a74115d1fd817dc2b709823da52a6be2c2c08ebf59901ba81d25968ae5d1a87556dcceb9a8e533a93c70a6d718af8fddd30a9b803c07562a47998c92daa7afc0630e368fa675fd5fe7bcda0f30040e72569e1681d1c9d5dbe6c92089dadb0dada75229b3cc3fe66a3bbf1c66457865818917e6282eb0331e8dfdb5be94f050892a5aebad2ea3dca789e2451d9899b25f2b7f263de436a0e898756c88a53b9b51774695a63e44c8c6c6521cbea09cd25474c7156baac41742f6794ebfb20cfd38beeb75ec7d3452c9b175ea917588381de1fd5ec494cc3dca2cae724198ebdb25c744e972bd2f5b894af254283fdb006acdfb9d3addce8732be89d56fa4bfcd32b482ae4dee10173198c034d4bc98f461de9fdd273c7abfc0d40d4dade4f1752e9462663882e0c6c1bffbaf2dd9f498193dda6ac6d06fc9cd411283e581dce21cc5b2ae115c1e158c6a70a98d4e0c1d20a11596b7996b0c46ccc353042d19a2b22632435a50292aba7c21e4955b5df3f62ac7e37f7dd3ca2ecf2d477c9b8042db1c33a7b935e6a8c71b3de5a887f228900e2fbc06e3ee3e1a28e91dc113ed423662ac1e788508e602053cb46b777118d60d94e117da4850b3754a92cc09127d94aaa128058c9ed60f3425164cd17feb24c383d3e3d3fe4638a6a9809bcbfaf37d150e407329c36466d92fc6f7313079cdbbe1cc7eebfdf7f9d59ca2af3d028eac70ba63f8219713d1a03d7be23069749362cf3961be7083dd7d40ea8ca755aa8f4aa9c86dfee31df247e73ec274788931bab659e6d4dfe4ddf1e6533c9054b2c8d40226d17c0a85ba8415b814d843fed2e70141cf9ac642872fc9b5cdaa5fbfae96aa3cc6901ed8f33b6090969dcaa4968d4995c0e79e217cfc92aeced2e82dcdefe89712f452d5b807ae08cab4e87314f5032ec017a55cf254e454d618d67e616ad2072047166af80dce267a0e8ee6d309ff3abcb3d60c322a22b3fdde8938dfdd56017dc18300f62606a32e01dc55cf232fb104aaed541b71306c610522916d6122e35b72097bcb53cfe1b8bddadefba19c85cc165a5f9d80ef1ea326c08b650eba19111166b9e3843ad3a9d3b808b9547aadad9c7cb93fc0963f67e4ecdad6927e40985d60047cb0b786d9c5c64c63b8aef1214da39d9aa64627d843684a03947ea81011da472a39399fe3aea0d5c6ff59630a218babdc076c0b211af9aae2e04221395e209556a4ed98a6f53747a2ee22a62b01680546b4ce67f5880d3b9d74fe7afa019c01baa009ffc511af252b845454ad5eb5c5ae666527078b3e4f1549ccfcdee34298e65c5c452860397d8b7516789c5b5148fe0249819390088e5af9e4f492466dbebf2da8f6790771c15d784a746883a4cfb3246110d42b4b6a3434f69b6988f01efa84f94da8ecd476345dd8be6513d8a45ffda3258bcd61a89efe05c0d873a1e8a537761e68b7601d12fa727d4bd35cf0278303b67f91e7a145c68b0efa1fa0ef9f145f22afe670fff1e41f6db67d442e45ef618ef71a78ac0d44a9600c610f0b1bcb3d673af564fc3efe0b7ca7b82f50878c27a94281ff7f8c2ead1ff2c819db21217992068eb12258cb7624019ed254ced5539a2f4c6bb98dbc49b3b13766fd0d7ac926d8d054f116a1bee60dd4515b90e423089580ce9e8ff728eef3fb5d980ead47c8b6a6de643e9ed737f635fafe572fa80fcdbc4a1a44dec8988683e60fa82b10ba6c267f880f76b7d84e0c15164098e345336550791257c98ddd9b70a83378b4750909cd1fb80a80d288d5dac47dcb4dbfa8e007de95f215568d427fd759ecf4495f2e3622ded772427b9ec633d3edd22813e5f5781b7e95d6d10508039ccf7c6386314c2d1a2df7b7e5eacb1e1d9baa86dbd32c912666496c07f54e7bcebd9a7f590d5fc779383d26e62d31e1c734a09e6e269d19eee806c73121208d965d2fcef7d01748fae0475281d210985380a66cbeea5612dd1834ee75ad88a4f2664c3544640581147167351ed4c273d895d041bf4fce3c11af321e9e6f719ab0f93d3e655c4dcc2d116f030be7b0567e1e0a57eb4175baddad62989820bd71f343f87048e0f2fb23122f63f630576e03e328aebe173c0548d3e612f71cccfab47823c81a9d65c0c707feee7591738939aa3115394ecb518cdb943071b5870e3f164035ceca4a815eb35a427e7aa58c8567ea00635588d39893bb4c5f0f5754b27c9de19d40b24f1fbef0b0ef58008d62b913bdc36cb78a8fbba8f141959fd081d41cf68099298db7438a42078d52c6dcb7e321e88f4c3d47b9188437f7b2cbf544fa38b8685f1fc72cb8b6ebf222d916139c97e1723dfbcb1afa0888bb4cfba87a16be477e488c65593b2222fba67ac48155b2c58e6617dae82e6e1f5f013b0a7e7a3b743bf926979b782f19533307b17f5a192d3e55ce65c9356a0906418adfd90f514bf7a489db81812aa11de9353b5cabbeb5e988ec14f2e4d9f8bbcf78bf11c7371b7375f5a2f17bc86cbba182d29885a47e44fda5c2eaa07ec344d5a49568a6d9f65e2cd5d091720993235bc17d970890af980f79fd1fb922e47ce66f21f77a4934eec08b3e05d8aa13cca6b454995111ef2311678745d474f849aa9a761226eef07b6bec39f546604b22dd6e070da93aed831805d888965e431bfc087c02c17a893fd13500ec486f7f9317bc552d9b39d932e4e79993eb3529faad8a6f0811fa2311422e49ff2d5a582533d196ef15c6e813e0b52a5e9eebb62a4c275eb505c9243e3a0bbc4a3ffd629e5d023242e604d30fa0ba1dd22845175c8415ad903b59b76d9a22773ad6e08d3eef51289b2e0c58c1612fb83ce5421f691239930ebdf94c95470088a5228aad07933e88d6b0b1b831678c77910b0fc3a854bc9dd67bb116fd245f76b8a943fa95ff55f96405ac38a53c1f897c24359ecee91c295a3c6c8b549ab0b9afc72d9188c2b734ca1959a0773bd24e45dc6c6e5bfaccecbaed57e8d617523d62be66f079e0e1866b90adbf08dc89df805ff6959d0f5d6d01a855ab7f4a4ce49b1ac17e884bd752aedbe9e4b8a8bc8694ab6199419afc87a3cace174ff27b00487ace016f72ee8d662eb366f5e3f241087d9da4728a01eb5af513b39e8c50dd6bfdfb252d6a5c41959b171e5533ab43a9c555048b9b119c4bd5a8cb8544e135f1eb1cfc3f74df0a77ffd5e8c4e1b9747cd4fcac54357a717a0085ee4ddbf4ba405a07796ae3c19ce28bfb26c48a98ec809955b2d9043e9693595f6ef77abd8facd6d5f40da1cc3bf7118a3cb140447c42aff8cfc4ae610b01b68ee3cda475cfaa69f8a912d5a6411b636315268038253c1419e2513d0b2351c0e7a80caebf05e0727e3860728e9b4a63279d6482cd9e0abec06dce2b1a07ed50455d937ca5b2f92cea27e6a94b4db5a60b44d3c0c0d26e70d816aa31f8311fb71563aa755acb58e26d5b3486bfeaadb4f48189bbf66020829128172f85f169ac5c63d7d06d388c1caaa3a331741ce849424dec54951a7079330f3bdd2aeb2dec16c8c1c0ef579b58e32d0ea923220734d1a45a546e86baaae2dfee235797a0a9d14027242876200a2d0f18dd3f4d7ca0ae08eae15160aa42b0ce0f37d6c0125e953ee0b0e15c33f736bf07842582b5f8d9fd320d49164b6627b65fddc70687a9f87bf4caf8c12337419b2e1ec9bb9ba53b8e2db1e84aeb529694f582355c983f4d71bf79d1d1035e3a63e1ee5b866154a8c71d47e554cfa7850c3ef9a08ab01a5edf242d94ad029f32ba00ec9c84a1966138907ad0beb3432be28b063eac8e6f2348d54495e996ef1da811e647ebccf70579669071c61f6029823827ebb11d1b2673a28b170f7975561ae66a5b05eae14ba0f3f279df87d49579542268dd9a8409ece318ae1b6ec96f61d524bcafa2eb33cc28756f3040ab18f9e753bb470c2ed882eb49defee1d8b2af84b812dba269989ed11e86133f72ec59c3ce305c076d3cc789c5461c5270099d3f639f0e475d21bbe093cb97aff1ad93dfb7e05ac705c493a2bb7ccd87b837a8e0db24e29a1aad4bcc6876ff533234c54e7d34d693a2aa82d1d204dfa23001af4938fa85a73f2f7dfaf56341b8fd1cb0bcca743677616c711e764912f4ee3d776cd9c93912d7e0013e7ccf883442553c7f5d043845f28e05c274349ba732f427e39f81d20ac05d8c62ac15b3bf04a8f2361a8e6af1fea424fa251ea23f9041cc18eb7e3b8ab5f458c9e3e7d391ca4980ff0517af35d88c79ee8218c4de423ed601250ff1e08e00a115b0aab196a46939300597c088a050f4a4e83891626c0c9964dcf38695939a29e96bdb45b0460c92ac8175a8646fdb480674670f4e4ef4ceb1afb71f93fc56b4b0064140c9d4d8a7c45a0947dd26ec6cf229673584c5c50f6d8a47f7a7fc058d80495c83b74f0ab3a5c005d186f54b1b655d3e71d292b65e25f771da53eaa400012b04a6eecb6b9b5add8f4cacbe5353aa05e3234b3a9c9efd87a4abe664c4de6a045b7202dc20645c6d9315d6e238daa2f6121f7083af19c5977ddeee8ea9fc93b95167f9d8feb9b2a9ce5ca0226fb4182d8c2f2de4fef89fe58efef7b759b30b26be376ff26666a425f8a3e195aaae23a16d8fa26054ce3fcdfb28990f91624761a2498730e4dff781534321f1b1d79d50656fbfa99a0eac1d748ed33b5ee7deaba237afd14bbac31704e65d933e01a8737475ac84bc909ad06af6c0ecbd2ad917d05031aec130cffc6e0e24169d453e0d7f3806c5901058244e3992c71a93083ede17978bcda18203088df4599e7cdc4990c6e763a4af40daf4c4dd42078f779292c2db89a10d6898f70bfb48aec6325eb91fc57d9b70c89b6a1a3e4ee00ee529bcbc6e14cd9b3b9f218414ca9207ead7b4b7154171bc13c8c34f40df480851024b230601db158cb137c7259e6a65789204f8ce1716df1f2ca78fa2bd97f398202e4a41c6c46aeb60abf8c12101cc05c214beae95ca887b67ca95e228624f241578381bf4b72caf5e870e212d716a60c60ad955f51c4d8fffb3341c31471ba1b9e9282d58661041ab7056668c5e3301b84a8e322e9e257663b4d237dd005cd0396b07c177fc70ff2e53ee36cac25e20e16a163bed3aec65622de86878899d62b92bf9b349e5ccad5e874ba04667e5d994401e78faa3e2a7d6ed83fca0d46ae42818d5285ab54475cd90b34ed4ab096216ee465fd5582c21879dc677f234d4ba1b1aa40ac2f22075ceefc4135626cd49825da2fd91b6526b81f366066508f02fb117265f9cf249e387e2ebbc16fd76d3eb603cf240e4bf7c6eb72c39bcae588fe2fd4d69e3afcdbc195cee39d59a115720c48f386c9545e1a35c77149f1ea852c836bf9bdf525e06baea6313bf80edb6c2f80ec372629682f35bb76e33a7025ea8cd585b921bd49ce8bf3631d3871ce4b0a99be5cce5cc007c4ff39e568d8b4cdf2aa691c684a7951c9027f166d8f772e56e109083e4e29afb39447bcd3cebccf6c16b0fb1c0752f8d89498dc73b973f470fba58648738a7675158a705b7d10d7b441fbf4a238252f83385d231315d22193ad856bc11139cca1af03242c26d3a61ec6ca7cea933a188a515279a5c6ab4fb6520cda3911aa8aaa362884d1df4061139b0bd059292183d1b09e1fe7a2724b38f3ba424bddada7a2b17ab0aa5204d630a7e884adfcd4074adc5ec3e05bf1923e745b5c58e43ddd89d0ec67feaadb8275d1d926ebeb7ed7c8b81c3ae0fa0ab32154ee4443b2a3a99d4580a3431dd83030d07abebf4468f4ee3c8b1e5c1fe628aa9db0a8ac9c536e4b69addfa2ef543bbe76cfc0aeb1312cb5cfa6d7df750505e6b65b21ced323be5f08e58862fbec5390eadeaeb6bdd4f2cdacafebd37d12fb6bcd89ea6c2f0cace2d82155b6f05fae517e1c794e906107f01c0f16f37009ee5fb16294db5630d3574d74eff9a1bf219ad535677ee14984dedb7e14e85205c26d37269eb2254e60083834d7f6055eccc55011b136932ccdb44604dd6d6b9a486b23632774c6f9e7dd39027a1ea8d70c2091f809fa9acdf96e6bebd62a815909d441dda1abfc41b43339ace61ee9f7cd0a792c7e73c76959a41a83ce188c488b78ad9d6cda947aafebe556e95acedc00eda76cdc24aa6106e754b1b877618d06c718e27768250545c65051bc5eadcec0015999ad0c1f6345a51a5084c27aa12d41a558fdcf41ccb92ff05d0a36f550b0e50fdc667654397fb560b7820f5d30cc3cfba9ffd544adf537b41beb40045efd6cd5aacdcc510fef1f5a4571a6b343fcf853f9381b55e892388bbeafc371db03dcb99688c460472cf50eb16121e2fb3002cd7f76452418257b8091ddac9523630345ab0559867dea8fd30fd69906bcf687c6b291c37bf6b410cd51d59fcded7878d6f71697aa941ea5e18d0f95d543c0fe5599cbbe60889456c5c45a522bd04901b5f459d26dc6d506319ca58d298d8e636eff7ee532f07e0acf0596be8710306ede4b3a98935592ab6ffe0ff58abbdbc2df400c9a5aed5da5576be491a7fbda3da6d45fe4a8ffe43ab6a5cfeeb445453902054b61de00e368ce9f0a761f09b87bb9d6515b3e7cd1c7c4dbc3ac3de781b9ca0f01cf286f0842cd5588f1bd1730b07ca1572b2e1ac4bbe71ef790b38b03dac939272184364c159dc655f0bb382dcdc7f6fb1a642873255f0d9a659d56be58f8fddd3c82018d88235fe762b2b7b66f4faf659fe746f6383ba2b14e47d5e00d01c5766fc08276f27283d2d4753a1e344aebd5287054f592a1387b248bae0e33837310f474d51a9729381b35a47f7a34fc2542c07282766b913f774cc5c658a58d1e4483421c5e71868ccbaeea9795dd6918fa5b732e1f8c625b65d8df6fd5a464e9c21be1e77ccc32c6ff6c61e6c976f281616651eaf9cd18844ed155eefacf5076eac8cbf0affbd7a0ad643cfb582dbccc7a8370afc5330d1ceed1d31567988c8666f6be54a767e7edc10c9e94dd13371ed8fa3b8ec30cc67e4d4094cdbec93526498c9523248297b5fdc531db85e11433c9d970e704dd7067e35e75478cb0cdabf02293184421a4638e82c2191bb8a21a8e7c496df84573d54fc392f4cd89d88c857178cf4cd13c874794b2c2bee7e1d0669c5fe2f9105f08570eb897fb37efa0dd4abd5e0ddba7f1a3f907e3afaf7fd7ebdfa99b16db3d68e32115039e07dbe7a7b8b5e98ee9efd04ba77d6910191bdd16e39dd602127fb8db30f39a3e4d4db3ec624e034542b68145245faee0fb40b6675b8e3c6521940dcded039feb589498a102bf8025c85f9ab72f133d7e333ca2ed947eb6947d1d6f2ef640cc7e29474175759a57a02897d804856ce83463e905c9c84d5cd30aac7a1ae68b1ea2cc0bd850a2bccc73fccd7b6fa2f9cdec4e327e0599ba804e9a76d968bf9eb0a8635f9830389b4e22ccf7c527986728edb790fbd412e0fcf8023f93157d5c2d29f02f0cae15f8a388345f5f33a00aa13e8ecfb2b5d1ed64c4182edaf8c80005b8269dfe75fb4dfe338b460e7836ea1f470af508d444b723d03dca29c6bf3b59edab2f7d6651125753b74f082109d37fa9654a92bb1d777d0fd6fc39b595bb4fff25adb6de41a354b8b8969d53c10527cc10b55ce94241f066fc9d07e46f313db87de2696c3a7cb7b39a4a5a403e65bbed723d71ba17fca9fbf7f9dab0cd3af2dea20e3576d04084c0a0f11bc6e7fbf5b997465cc687578a00490d0d207dba548226113b4bfe6f038be45308b52f16fc4e70c6aac84d2515d006866f65b8eda9504f82b4f6f2bea8f436b17146f7c60c912cd056f66a21d1e05dd2ec0a6c3756c6aa593eb24ac439752deef2950760c397aa48850c3e5cc4d5b734c28159160f5000728b4df5cab4636b977ff861df08b1602f988c04df03a0d8db86b17beca1f60efba566666b68fc31f800517cd0ca1baa7948e4b043e683a51bd522d52a7a55bb88feed0225c36c1dc6f1930e4668a20784728486d116d545f7ac7848d2e20c057debe75b8793942f6be0390808769130834507ed7e765e7ab64bc64b55a2ceef155bdc28e4ecbb48e7a4625dbfc5b48b333e67147e2f4cf36c2629ea36a9f05e294eccdfffed9a79ec63bcdafd677b8b54d328ee147d200a530b17ef562cb92b3b086a678122889d15884479a2ad88d5242374ffc02ed392a1d3afa0b88d3ef55b1f7b0b1f5f4dd15f7c5b8bb92b9f56104d5528e211b53994c520dcce710cce513a897c77935b83f03ba564daba669b73abb7b7f555afce357878a33cf868bc549979ac4515c6a72ed8b17fe95b441b2be2b905f74a015cd2766d1635367706135c6479995b2bbe4ba877e1a76cfa1f21f8dfe27f93b00137d9127b9c9a7c0e8b271e69a41401ff98418e086f716149d20cdb1f982c48be16d28aee24ea559790b1d1f5db544af91f916b785c54a62cf37931f3b519b60edde7c2db440d963b7806caa23363feffdda67e51c114780e90f43fa15cdfb09350b1a3198c29d188fc8cf10386c8796de7deaf9ad1191991506cf3017fe9b0106041b2e1e3b02ccea8afcc426e275e5e14cb7d5fe7df3930ab05a269f14dd5e8e2ed1ad1dd7afac7be33823468a1c474944ae4a81122b995c52ad4be3e08b0bf6bfbab64c04deeb4fe3751ff1368f41bf77558d2113a379cf6774847d5831a0b443c9edf4f7563fd50f3aac8e20bcf6228a079444c341fa061f5602e918f3499b1af829a8258cef12e15b24d663d4b7943872bde8ec445fa1dbd37fd7dc035cd4f7327472cabae35a438c41c07f446d3dcd64580c5b2ec640b2fc04fd07a46eec628cad0c65205e6d18b1693bd93cd500abeee69661c02048f0ef9fcb20b22dd337c455003a3f5a0fb40f5d0938cada88c8cd3603540ae318912fbb9b4fcb38a4251e2c82cf32bf5f5e478f23497e87de2e2da9f10c85b66ecac2fbe8e4fbb6f23188a4066f14d8cbd51bb5a21da851137bb3439b663fc40e8128d19ed1ff7f4430116b38aa6fc45fc80f516da61cc9535ee164d7c41a6860d01921eb2b13fd6350af6f06d3c6d2535dcf48e03d8fe41a20c035078c175fad861cb9b0ad5223328f5634f48127f723ab6acd3b1f7a712318e032c3a5b1c2b7a5e56f7e34ac29ac425f57b40ecfcf323f6020deeb96682336a76698fd4c630ce58b20e3445fdcea903c945a1bdfe9f59b77ff3c26e7285379ef2e7c05b253f8308ae911810db0fbf582b41f0a2238edb26bc11db74cdb4079f5a7de339ab7502492590d375bf695c03e2bc783dfed336e656dc36bb28076de96166d7f4c274c942e74fbd41fd6d8949a5433efc02f4d2b4657a972c46c07e6e0eba6e6493a850736b8d76826e970ebd5939a00c64ceb39c20ae8e0382f30e3ee3b61eb090bde380d92732c7ea1be8e8bc91c274971d45d4b8f912da82dd2bb18c23511c7c56494b9e398f85ad8d81e48dc2d1d1406b450cb4e29b5f56fba6771cca3625b9489bfc38c2dca8528918f704d675b842d9c3f2e29db394861517495a85aeb2c79ee0fea1b6a465df6f1a77814d8a1bf103749bd7e3c5d92878785c96bbe3d2aebd90fa314913166470884693ad773f8ee2b04493b3128ab7391ce683039eed644ddfe6f7217f56bcb2d13b8efb297c22008f9232c0686f66b4b9ba32254166858904eff53da2131b9719a6b16539877811023ed2af1c99d93ebc78df6e4d2f0ba5b251ff8d0e6af60312f947a0b46abf0bb742ae7ee245890ff457da1d5c59e982bdf7f76a59bea946b3e11336734b0dd3b51b358652fc3f0909bb8702d9206248d8a46dec1394c4fdc06a8e4ab392c0f6411eb2409664bd5b16275d70b6380f228686fa4aadf982e781d6ae130f0bc187781cb8043aaa49da1c7268e366594d7c471008cf24f6eb371e86b5e6b37ac30d963bf59bdbed29c2f0d1cddb54a7711f8ce0b72af6f545c8c24cb39beb3b4576fea4ccfc3cbc11500096f2cbbc596d8845f82a71aca5d032460050bb14bd6047d3f9047f1dc6e02dea54233b71136a4da36d6c2f20d581ff9809e772fa93ac7260086a8e563a067525d5160166b1ab69c1a6d13488a8cca843c1706d7bd29905cbc2580dfb22e3750c5cb55939347bf2805e32098b810b1519e33e926390e97d2784c25b783dc02e20187927050ccaf01a61ce07fb0a6489988917d9a158a09dc2d771b1471bf016d4b7ba233e99e03b3e02988d7b22df42e2c8f73540c9bf96e474d43b47d382a4b709270adac891e3949f830be9ea2f4949281df051ecf3b5527fba143897c623453c693346a27893bacd5a5f67cb049f1153baa290d892792a25cc992e0ac092d698fb1f7f9ef206e88c215faf4d0e37ae6e11b82e0546b5181f72af1ac7f5b763ca34f37b1548d3e8e948b50d6fcc9e188167b03624c6747ffc5df0f7f78704be902af07f0ec8b8b26e9571294ec1427526afafba38bbf474ed1ae18cbb0dc0ba1598af496b2e583ebe7d6f0c3e8e153f0256e5676b518fb129c5c946a302fd32babd181894e1ff32ad53bc89e2a9f80e35f844af2873009e45c8d5216d6d3626052bd0d3275363268744c8783cc53a8fc6279aaf280c4c0d008c4c4f2cf19b2ae4fd209ff52feaad93a362d734ac5d5e56482439592f842d72d4825ffa3606e96e7b1d9df08ed5ce951e7b896929c52988c6873bee72f7c6e9dfc51a8c8ad332f91cee7c9386c1ab7699528b5a5eca2e5480e2b94b889c0fde6707a37cd2c4ca03460a935a2fe45955b5c13bfc7bc41f1f6d812032f74b662a2b79f5d125c53a9b9315ca1ceccae8a9c1efa44407845b2d8386b3a5b07566b8acb6bae12e82f1be621420dce6accd07f1128fdaa654d745bc9902c381a285f678d15223b77755b8c71ff7f03e90156499fde42d8875b56aec3c00fc0439c76c9a4dd9653e865e309398a810182c03e108993923d8a88cea8bdd7df103a415c93cd2f4977c577c1159fca9e76775a6071723b0ff69ad12101ef49dca041e7b2545c9b5f9ded7d17dfaaa4e829f016c61141f6ff52549aecd2768107839e388d7403a562b1b64a997bcba57507e99f2ef1f9f54cfc17df9e755b24a9bb3920f52b23ebbb3b0aef12a66ef9dd3c8b338b8c062405a17d7efba23e81cda4ec6a67502e353d9a3e84dfcc4099be65791a84d00bdcdb37b7729aedff86c162246c54eeedcd9bc8aec57270f0e638c8e5c4f4dbbc0ea5cf0c4e6887c7389968cf12a0b3adf7edb8529dd0d18efe72a1839868925342dcefd1cf24583385ac0cc7c7242a9b60303cda2c14f1e7191382a5e9a4fe9831208976f1e063a0c4152d27a32cc2e13cc27a0ccbeadb6b4ec9ba1ad21f85a73db175955d8681cae733e44502f9ac4d13eafc6de3144c83c8c6d89d9882e6d081f68922dd51613c8d294d3d4c40877f584e436fa4e99569683d32e6232c12521cfa341ae950e349c95f5839bfa9d3faab7aefa5eed1e6e54dea82ae84b1c8be29eab05439e6bd8e69ffaffb74514599e9607cd205cad37d71889842fa560e4f0498c35edb4d742be279ac476948da2c49d386b41ae637fbe2580f66f5976d7893fb0e7a160e9d3ae0ff58283114c65a750ba6efe2cb625fa6a01ea685a2097ddbadf126248a7838b20a88423e2c2cf9d924d4821a31979d712a75684dd980da876bf7d98e74d75654d3f7a4fd7eaa79699e6694f868d9b6bec1254991549fc2de99d9beda5551f7f3da86c8ddeab32ac0de969457cf0d11bfb7a399375de10767bb0fabf607cbc52a6378b24bc5ba59dbac9af88e5e6723be62cf1295f2c5278dfdefa1d53b4d2d07f4c86a03572ba091b34c10c31d26d26a9a120cb446f15cbfad5f8c7bf32a2135d99238a45d36e5980565b8bdaba513503d8dc95b401fe3cbbb1306ba0878743fa0825655876bde2d9441eb38b8bbb87eac51b37dfae5d6c73f6162d4a5cf39ef9d5b116cfb231960ba3e72e28b66720b4bb187d643485b68f39d4a44ca6ae543678c8270d1bcd69cb29f39467ccb6e8d0499da811e18ef82b51098e2ca862b5c59d3589294a145521c07093b7b85273bc5fd73f641291c5d07724bcacd1bd5ec12f3609bc726e16b7d7fa26388433b9cfd585f629753ea8e8ffcc3654fe30490f676c0b15e3402f8bd138ad438b76c082335bea5be45c07e970d98389faea64caa8714c841c0ea7da7f7f7f437d320552fcaaf3b8a279ce88e55b122610d03339bcfe66dcd18d66a6c40b73fc059f6231faadf38800cce7585988e0b0c44b1d0786f2acf52ffd783202df39e27bb503e747d8d275c369e25b2fecc1e6d92618bb402b315969294793cff34bc4f44f04ab2cf1ff18b27892af0f45a0523ca39a705b4d70b50091b921a6314c4349df1f3e4eb9335b285fbea3e9df6d02035bedae861b4d3ae3c6ddc7c685ccb6397ce4415c95c6925ccb7073ccfd9a12ecc80d71ad3bac2cf027e88060ba7397d4c3aa1d70683d270ce4fa5b1a8b56868bd101c20fb85f54a59b0cdbf4ab15bb88cf236c0f91706d20a5cb907ae5f89bc42e4b8c04e21fca65f214194d4e9855d9de035e9c74dd7bdcc5ac7cd7ad28c70c8366f86283613e021479cd53afcfd4b47236b6e95c6c1581f614c340264839a6315b6403dd1bae832aebbb6bd5a387335dc14f0c0ecb8fd8f0714935f5332a79813bf8220b21f2317e00cd0a308d55aa3dae5163066eebbc03cd4e43610aad571628923d956b8ea7ebcb99d22272d9a5b7d3907acf491d4cae7b844a5dd6cb8e5436fbe8535ab0a51cf9effd6063161066669f14d55c5407184fb76c1b2dfb98d145f3311d60f43856d81b9cdbfccf0c7d70f86fbf0fe2923233e61ac7a5992ac651e23f7bde0c9cea209f51b92071d2fdbc27af36fde6dce76248e3116c7d384e18a77186080c6163abbbc079198d173817d066a82062082da90abf7c08461fff3c9d99f8207d6c66a8881c05ab98b05e17d683570e707e178fe0a41bcbff1a171bd39f6cc2f89e3f49f97a7de95dc69a5d7618a41861d64ffac223c616d91d5b6e049c76f91e4f6b5c7b62874d6e96a4c5cb5c89234126d87b50de4fca6207df9e602161917e0ca00ec7a22c467ec956ac3ae5765ddc7289fab09711704d1dbc6101d61a6ffeaf3418be4de46d2b309912e9a927f03d3419c20f858095faccbe7339bd74681622bbb4cd79b58292095ae3d49c52dce0163a23adfdfff490d4425de3e9dff251c7a5f609ca326d8a72506ea8f387689d08907946a38d35c2330a7d00d1fc445e1321a3d5ef5f658d3851447c84e12cff12800c36734506e7295e74ed4779496efbc0af2af7d8c31c16bff194fb0be25cd1abd3c4685d7bd520a7461a1e453a7752e7f8602dfa965a3d767f10588b444fd6365c2a08c740c6d7cf7394949493e18b7b7d32ecaf4ee3ec2b908d1cf5d51d0c59529adbccda64547465be1c47b0071dabcdaf1e6bbaf6c1b53cb1aad965dc820501dcc88906bac9a660545565d7b8d7ad2d76b4c61c49b181c3d4fdd0d251da78467ffe53aec4931cfaa949075a66bb2513c9f896b0d4dd36ae75f32968838df9e6e6c5b64e01a5756e1b15ffe368280f346f53d7f4a96374c2a411f7b8e3976c0d5dda2e845ed3f8b56c4dca4ab3841d629bb41c324a1428cfb6e542abf72e2939941d995b2e5ad73ccb732e0ca6cf9c78c9f5e71152b91172e626cc48dead5e096293f408efbe7e708ba92906aed709fc13798952b063e90551ea8661cdc804c234c895d267b0007efc038d8bb001dae2f79043e529810303ba9bb3f1435a4ef4303c189ce836b7daf00806002deda945243349dde59fb51a28aaac1791974ac18cdb4978b87e5971974077d92337a0528d42be1db59ea3ccc50b4825d5e4a6e46ccf80e19d0a95c9c5de6de2da1173b0f51ebc0c0b7e109c40b519f0a0f29bd8547773973f8f82474bdf0c95a3b4733ec418702f92b6cbffcd03dafdbea0c4ffe269122726fef70d6db0bfe1d0a0ff2d711d17bf37d59fc3438999f2fe30f81c379ce296cf9abefaac392c6938cb15ac6928f4f330bcdcbe4e10f04109f5be298f21e0b492ec6f585c3cae1402f48675176476939479c7cb3ec18b1fafaeb3a2165aa7ee8f914dc25f0673298db2dc948d69379f937fd95947d42b1e88121b8bd4f31d2411ac500aa9f216d1e65393cbcaf0ef5f3f48443343f8ee71cf92329ae4dfd1d2ca4bf6417ec5634c91dc816f660c9d7fc2b76d24cddddf07cd6147576a061f7507f601f8436c353b34198e0422d552f2d9f5f1a588a6f1637c511b528b0cbc265e77c2270a1420e048773fa71bf5bad7ba50aebd07a6a634022079cf68663076aebb9086793a6aff397a9a0b2a2c7c4fea6b9d9e1677b2fc682521658503c6653ef32e803379ad42b8f5ad2cfc67c13e9a0b607f00d81b0062b354b28e01417422a7063d5fd961a5e7d91e7d4ffa01ae7a631bce9ad48652497166a552ea80c1329ad726d18e929d0e82ee0d3857487a35b6feba18e5a6b70f596ed22d28d22e74a6f9f1dfec34bc848a3b5dd75ba8edd7b4705cb77d61158a8713e898aaaf600426cac7dec66fe398979393c4db11cab53f3a45437603b9ac62fe0f0ba30502d98c0e3df605139ce8db14aa4749bdb36442cfc081e1c61a99aaa9162e73036c4277685439d875367a7ea6b66b0d75288449a134881bb4827225e0b493bba1733a05a102b2ae7bd8c205e049bad89a0aa5c923aa83999bf37918b450c058ba7ea05265ff9538b03bfb5a9d5e67dd28fd42b25401424e6ecffce2b702136514d7d30f1d31da741c290176a70bb13990d0b617d4fb9a3e50c08f4b106a6e47a4eb54afc0b65780e8d856aa5b1e6c7e23d15458e89b71b3aa75dd09da93fca96106c54c5d5385ec1ea23c60593dbd5bbb37f3012b6117441924466dea7c5c64417f6a16e6377b499e25bb9e3d75dddaf8dda10d9a5c99d8155fd6d04622c5bb69f095a75f3ce19fbc85fc420612165d27854e66620700625bda7ce44f1452dbffb1ff9b76938f1313e51d9d1317d5257dc5248e276b02487b090284bbc2e87750e74cecc9240e24791b0e4b96e8973bbafade0521689f0d09d4a4fdce3a7d8628cea7da80b4d57e8f8503f94e2def67cbdc3ea2fb3f368a50cc8c948b1343144e1627e9407ef005554b03b2fd1b5f16354b2ba3ee8b80dde295050af708bc95add299c756ea3506a66f59e562351da5aa99934c1620c64575e8d520f61cd794c8c8977620d15feb3bc83208e357a0fd76bfd52f4f55775cd4226742ba4044194d7bb028ad3128591b408ed9bd35050d14effa2de2f4d4fc882490b3c589ac182d6d7056a55f1a36a502126e32ada404e8867c56e49ee82988055a17145d2c1ceedab9c5510fcdef3ce3c608ebd88e776892df2e98bc0a363cc4c7647c9dca9b520d9b64b28f0fa82362c238aa06e3241717970aa85c3cb40c018fda5e9ba09ac35ee971d9a37847346e36c4f8eea72a8fbe41f2ea8191965d3b35ad5b903139e90b356e51bc14b9b804b2b7e9867d975ef18f07429882b607635eb3f7b951cc0e45260cc25dee1ce3caec647823600994cc268af4215a9688a61bc0424601fef1f88f321dd851e76f82694a90d9f6410bd40223d2615bbb8c5cd115a35c239a13193a4c1dbb89d3054c36377c506e4610a5e4afb46e78dfa96e7e0bf0b642e668f34d9c90d873e8a7172f3350e7245a399d422e3ca7ed2c4592554021319e3f7989850a21f66a2bfa2a979c587b3ae12306980f842923e27ee754b0c8811e2da3db89652361cb2929eb01ddc09552c3f82e24e8802f80b470592d989b292d98e865f9128ec7f192faadb7c50c5a42fc14f3709b7af45750bb52ac35ac07e1b4fe3bcf7aecbb3c51e6b96263454580b830de2435fe7423eda241105d5ac301d636216d4f3c2506a4e530621bec2e67999606722400e202b64655b4dd7dd93fafe2f04081f4928ff21d9376405db1113acebc2de7ba9ab8481c53a7dab60eaf0b3015ac75830e43e99ed3d5d8b3d16dbed309c4666d8f1981e36b02db9f067e1704fbb17005ecf288462676c9610a1b5a58adb3ca3c9ca37388f8b260832a3d3127cb05531e37f7fc732b2655c50f9e8467c75349545de36e8c72ae892c9e170854ff5b09c2ff04bb1def012fd09c2a019de08b91ba88bef81733e25693d6f877364a3adac58d2565d4eaaaf4c0b5a6f73a53ae9a1e3f6bebe157144a2c68189876bcda1fcae8db029ec986c6ed124c87f4b90f47c673485fa1f2fdf1f7fab0c3c661a3a1f1c642b3be9d1ef3ec0f7839814e8a09a032f2880a9f5452095794c3c3bf2f7b402b2df11de09cf8eec7d5c2eba94c87f236c12e6347ef8a06eaea55446d7abd29a18a82d39201a2d03a474413990d896fa43af7a14d63091e6761af3c59afeb704a8a3c22d17d0c11605ce69c72f53ce7b7cf0c03ff057d40d16d2374834ecd58bcbb57d14e265785ee0d36f30414e873677cafcab888c141ac6959579264425d4cf04597000437a2f57cf741e80f2d3724bb7cf794020656cf85302f7852acdeb577b8009b04639bb9171ab0ee0fd05273733e589b21bb5d9b19db705e995197bfb4b46d09c3e8a5cf04fa0f43d428da0ca40af4ae0b8119f7b2a8352c1d2c18c9564277a59708f7d9e6012ceaa2426fa13e332d1bee4b8ab4454a71ae3ff7ea88000e00a98167360b3805ba9a61f58b9d8a4e48edcc3fb2a9a984b604791f2391a1990bb0ddaf1548cef68e05140442d9d129536102bf177d11a7d0c69cedc7d6ceeeff1295fb52433d2438ad0a8c368d23d6da2e128f8e4181ebf20f754a36fcb8294394cb87ec072b12965da0cd6f1043afbcce5760a01e8902b5af8902771861d4471f1ef2078b3f734bbb73860804fa34e2f970adf44f37d23e8e648eda68dc95a9e64804b47d7769503ba873a66a61425164c8adc519a988f18bd1291420fd63e18dcdb240116e05842956d8f7ac9af26c0ccd0db2cc3b6b01b66da8e359e56e5fd8fe5b464484fc368ddee89a2cb993257b36bba1e385280418860580669a2662743771f6428be373851245451287bbb16301dbd24e90aa15228b7bbc164d3a205ecdeae28cc8db0698abc659950013431045ec21ae520dfe637c899421549f621a759ae9d0801c81b217922a9725e8b4686d744097af940dbbacdec49c928fe2fe19f148c77c150c94eb0c8ccffc7b97d4be92d41afa1a749d2d61e21b6d66ce3b256fe90945a7e4aa3cbaf4f1ef35c93a024782f3746ffa3a547b0c05b7feefbbc9df878c3bd9da26cc6d6d6c5a2646f56d0a1120ab9ffd4d4582eb5ff911d396f831bca19bc5d9c08b5c20ebe13cf138667effb15f07c88d894793cda408728898df4867490a776753cadc6188b75f6d7187ec6d38747fd775a5c55c603c0ffcf344174ba5607241d1503d309d5e8178b4626ee1b3a9d02465f71bbe21588f46864796b2a8da4de048e325130bd5d69f0072e70496c2903e92a5a0997f5ffc403ff29843c99ca124108ca267e94a9534fa6cb1f94a3953fcc97457bdde6ec6105581f1eec4301e2cb79e6d5ebaf4e71302278188f09aa9aba55c60b87700ded2eb95f163838b5c0a2ebf10010e898cddbad1138e3edfd98cd68f9e46cdd7d7dd1ddf5b0458570f05dfbb137831bca3a702dcecab04038760da7fc5f27bd2c5c7b768b01da21a3d84a5ba6e7b1aa569159befdd27e19e071193fb50cf0625faa2fa8d3dccc64fb7f7050b7895ffa31ea132d9d964131bdb5312ee67bc96546a4a58cc59caf884ea8cb343467a7f42a261a7fb85ccd68c87706c996c5e41fa2f1c0aea641212f114f7ef52190b885585496689d84fd3eac39c236c905823177b67090e5b930dc5f94a494d9dce31e96c9ead5dd60f35ad547dff3804936fcd2556725c45abd78974affa8f614d43410fb72632280130713da7a4d19a6962aa018a956d2d3fccf7db0aad89595f1c1e06debe5cc4dd3b2c77702eaeb74c5238b2ac48138272d11fa17a664e31004c1bb4dc8e16a34fc6da9814a4047ed4399f69ea0f5d17000515d7b079df9401eb6ab7c6214f8abc46f1203571bb596b7fdff6f3b7717867f093b4354690fa8c025de2d4beaf0dd0292e12c621b914d080794a94bbfd9b8f794d1be9ec0f6b7e917805d460635c9c7d4ea1bf633efd358329332c5fccb4607b30211b631ebfa7a99aab764c0b90fe5d6f7cc412cd228e13d06e6684cde3f0309dc93ec5eb017f43c5fc075a20cd83a6058602b20b21f9fab62ee154568edc09faff4b67b00cb0595944e93eaa56c2edb020f04ff52f22644df945c6f23044461bc8aacd34a30e8be52acd70c0b8355d544732c0debc69a92d8f6e6c8f52af29e66aa3f43c2f3b0d4dfed672dc154358103076a629964f5654553a83e8ca0b38c00f7dabdbb471f77fc51dca90ff4ef348cf928692c90614f3be26738c509d8c122f5eec75cb7744d30bdb88d9286dde9f4be676138cb4c298368280eebb2adbb945fe1f99930fb7e26a2171d9d4f5abe0cfb93df7d6f418c3df9218cbecd785ac500be8385dfc9391ae9e1506cb48575dca9324aa060595997977f735176df60d312ffa4edb4332e53a8ee4f29a449f4b6a7c75e2cce47328eaad6f8b088eef82568c1344bb20b13b2bf2dfabb0dc5c5d9fa12aaeebf8dfec4745a446091922c95de3e1b005594204da990626d4d1f979d8064129a666a69680222f2a262bf6e22df77d7e5ba80921c11bd505abcddbb36e0784dbe6a7d61233f73939718881041ec8afb2b5ae72bb705b5bdb5cb0fa805e50c670eb4de9a2326ea2d229618cbae8057aa866667b01ed48858db55097777a21641f762a40b2e3e7fb8a6c4d83cdcc0af20ad3d0b6a9ce0d603320fee6776035e0c86f66c6fc3d3e4a093200162e5c08a2a2875a3a6ad0e5656de40045a6aa700d29ed888c554a36e46bc5c8f221a615fa870636f35008ae71b4537a057c92e47ed82cacbd187e5bb7f8326d9c316030e125e3ee9ed7e02b5d05d0e7d063859148ea7ebe3998befa713d654f2736c9985f0e42875256eadb028d5c582373a972037dc5451e87cd9993ff50bbbc0d9d39e6125ca833d989d648affc64c5b73f12641c181becedadc273411a0b11f136a7e95c94772148a445f919b463f09776722578e02871d0b5d2795b34093681bc72d53b4bd1290df2eb38a642c9d7b2928bdf92830afeeeecbaefdf9b66d572c97ff74ff8c511aa04df0f9746adb0eb0451dfa8adc6c1b87dc4277a0c0030d2ffac3664a1cdd1fab5eb51479ee61c6f1c64c037939a6c2a8b56404dcd14c8ec45cc6a958e30e9034467846b19605c7a738950e896f79c8c116fb1905486841de390d5500dc9563516b6caec4d4c9ddfd1f49eb789ff453ada09c1e12579373e6465a9368b28b0f94697e9d63e8e3f5c2f09fbed447a34f98b495f0e13b90d478ccf71f984eaf14b9a9341cbadb8ca229697b7fed487bebf59aa05f567d74f8aa2d76cd5391787163b3e463b2abea99187527791f01011984e4aab13e4603d7e4df1a014d5e9a2ce949156307463c350bfb67cb683b2f116037af1d1222904d4955e835a04d51ce2fa6153e27477ff3813472ea4feaccce2afa9e517aa6e59bae9bd477a39e8ee4985fcac9e5a1f9f70274c11d1ae95f8f3d8f93edadd3d2e426b2fae80446a87ffed57011ff9a6c86aa7a1100523dd958ee1103069b35d1b118d7503e3931b8b5bf2ea2d369c2398a4bbf2a029e926c6fe4c780a4e10fad6ee750b4433a193e1edd362f027ad46d11204997e6e6eac1df7cb8a5449e1e38ea2b73e953957ee85725bc8644d3ac78ce0900c946cebcd5f83e1c1a5604b6d6db7ce284e2c9a8a282712f38762bb554976294b40b75fa68cd60965cc0c84a2658c75891f4f7c226c4f1a1cc24dd7903e55c6066f691bad7b45b6ad0595cad135d376c2ba3de6f5cc6896fa0114a4e9057f4e4a01bd87d8aca901fd06ff681764ab01a3b9d2a6fbd353d28a0b50d2b3d2f6ec42660ad4afb6dfd44fe426fbfae64d51be9a4142ed343ac8acbbaff2f19d3695cec03311975c0ff46d286ea3ed053a23b6c0c505da123a0a1297f0674034d81610f119249492a2b896be551a69fa2933f514049e67a90a7566995b90c08cc791e1df0b51e34d72c36097b9f3703435f186e3db4d94f47c30bc244d47718210439e2d62e770e35c0772158f84e91083d6247146b31fc88220ec80778d05b430d1eb94f823eb879b308f7029799952bbf75cd6d9c7f8099eff3d00c3f7ab6cb9e770ebbbf505c18fc52b8f0854f3dc73a8bfcff49e556432c3734b51e2cb4794f4e9dcd66cacb4edb8ba7102afa995cc0b2191917ea47539e9f2c191a85b2ad43b8b60d9efeb39a128087419d91d14fa4a2fc1c670f3c1acc4d5f83c49405eebd37c357b98ddf4028028ddad8fa2167979e14ffcb3888ee087915f29301d3673f2b0e5a105688c5bb2c6121b03055524ff99ccac4431ca79132069803b78b6538f1d51a2539fd77eaea54d59aa1e21ebff2c31bcc68cc22b9bf255c86453fda48a18d6f1aef83e3c378c2a54f8c41c0dff45ca4b63fa7c2245d5058495e7fdd107d37847a626c5dcecdbdb72e65df90087115aa6181ebea187dce5bc6142d28917ac1584d4ec07b9b23a1227c8ec4cbd7df0988b1e0b984d5d2a06726d054991b8a57407f18d79a6c0ab7746aed3010aba5062ae094107d02bd3a34741631b1d379b16397225b58e7bd3f2cf52561e4a7ddb6931b6ff7462ce1d1ac9e9b8718bf987c3dbe0afb18daab53418b873c2e544d815774950455500ab26d4b3ed717667b231d14971681105fb19989f4e2bbbe02da211c3d8ba2799c144a79dc381c048460a6574534ff37405993854ef1bb375f5d2ff4fdd62a6d2fd3caf229683a48103a52dcb8f141d4def57e6731da4299901fd16b99cf706622eda790f224a6a56e41ead0806eb943b4731f5507e0c81fbb39edae4e42f7e33a40514c72003b34fd2f0fd6f0e51fd492d72f6cbf14a9d255c47e2416d7c983a0046922adb5f7201448b5e4054aefe63257db4cb142a67c7b1c103d5e69f3efc79446c5f05e7cae9d31a2849136e62590f3427477c9633432884691231506db1eca731fea3590c57d64f452258188c70859fb66ca48e774eb0b55507eca980c8bbf2fa6f80e9d152b9598d878ff9de370958caba66a1fc6be8986fefea2c17d0e1beb7ba96b31c51b02d4b043dbb0d78b48f494473d5af52011b78374859f852218d06284d37fb2e7f2bdffc5ef8fbb9d4f22ddc054cedd199cdb89f5ddd2159c6c377f941ddd434234c238793acee506917b0f415b12c13a55752b475100072bca2eea567844c82dde1f35a35d44801b7958c346cea22fd7e721f2fa5b5275c62efa13f948d4670a3c6b9ac5908b2ca9ed85a652665f81424a0c25debef52c986e8ff6106e4da462400b91232084b8dcf9c457e00d0cde13e8776794739b2639621a18390d96699788bccad7c9d1e279384811b05bd2d5b21038a777a5f71351ec785d3ad639aecd960dd934dc5a2f970e3a23ab3bbc89ae14385b17d445fcea99bcacad91e5a3bf92e2d369f6c9cb4f1d383eedd03c64a18af611f1d5bfe810f9ad5f3fe4eb775394f34fa5b10d841dedd18dbca2a461a3ca02503ceb29a180e14586fe6ac2a319354aa53046dbc6ccb90aa37ad5aee88ccd83bee37146788bd333f961b884cd14e8c9853d7528ba3c72dc2ed887f5328c43b2a90515602873415a3ced446e386d61a2e35f9db05f5d73b38cd56b7a45cfe35dcf9583c4bfd50f50319f1964c5f129dd27eee473c91d42f01c5a5a207944ad657dfad2439dfad9e09994d56a838854d5b8c1d2325e3c8c686f6cef2f93b30e4000bfb3b37c128f886a88b32cd0f02dbbd01183f62d2b04e43d5534d56db1b27761b5876c93bccdfcec1b5f770879a912a462e38a567a409f3637fca03030fa2976213accbc62fba1b210bdbec8893f31d8c205fc777aa3cb96e5de0519ae06873dc773b3b63e751357de4496bd28edc449d1a8203909740c9503adddd24493568ff665086e1a619f124e2d3a04d5054b2345870ddcb9bcfb9bb6cfe2601bc2701aeef0325b1d94c91c0679071b5f939a43f2de9ee2cb3aa45475453795fc7143b32f5b9fee38bec8de2ee301629e1158f483e4f1c2a1a20881bdd4dd1914a650f29f28400d068905f69bc74d2b266e80f06786ecaba9c39ca6ba9c3f091408ad228be10b9d25a1a0062365b55b5c56e2baa3f6b359eaa1c9882763a71645938480e9c2782176b1eb5d0a44279b9308a3448ef033faa56f6a73f4ddc646430592c77c620568b02fec64b91d36150b0fb8e3a7949b21c56d51557cbe303869c7a811a14ab2443d7adfe2145e97c9f58570990a02ddcefb1dc1aa5273ddfb2ba22e05eb72865e562fb20f313aa66cebcfe7a82c8a3280daddf537f46caa7de9b19b53ed43080cc4d588764363dfd764e6947def7893573df69893e430d67cebc2fe87bf85c63fcae737a8fe8f650a26c6bce134f0404fcb664b8102ae8514a17078252032d2841611cabdc1717eb9b7d1fc8474433d7e7739231c1d1441d45022c0154ca43f0bc1f8ffaa452e14715266c3d20b95d06c36f629d113e87468c5459d67e509a9c4b240c960b2213644dd49d5184234057959e3d8290b2deed2b6f66f5d8349aa90027ccfbf4580950de20ac9fd3a602a4b421ba16680426533f297a7cbc5cc66791bbeeb5af669074099e58c4751a1535a60246ae94586f01f82c14bc705bd0000be0cad09bc2508476f43dcf193dfd780aaa40b70b2e08c8d594d73a4fd4a22792e6fd64a68853477a574ce945fbad1a006fed01e8d209748433ace44028b7a79228ddd7638e6ce8ef0d5491b4e6aa058511dfa5a807358fd17931eb6a74837523fd06dc28bdd3dc6362e89c9f6a367c7f7893e751d5775d07c86b720ebf5909d3bc3e51067648970cfb29d9338878e6155d04424bb157a87ac6104063c833ddbf5f9d796b03fe22be6cae8c308a43fd547b529cfb84159410d2f03cffe7efc1c1226894c4d761aa2e35ca3f1ff82e9feaa3dfda7f0a8e5be944fc4aa62540dc3f01b77308ae126d9fd2a5a471fedc1edae78469662e9563b3d84edbca4e2b7481074cf597b47a01352866b1988633cf839287cf16127c8d40c83399c1aefc1202c25f3da3afa48412a6a8acc1fd597e0c8d68b0bd064bb847161f4209e25f9a1aaebfb7331aa7eff4fe3400c5aa54f097fa6548b2da094a8f3d381833474b1032c933015d3f4ca298f816751a384a9b958292b978c311b1a8181d4ca0a903c6a4c3f9231793c55fac973b0b825702b72b1de5acfadd2fcd7d26ef98a215b7603eba053e144816dba40d91d29e26b215190869d18d25e463eafd48bf341b33a33889d5ad432460503efc487ca572f19876c57a5360b9eeece0a8a3d2e16ece9cf8c4ec114cb08328d206a19cc330a67db5b479536155f4d8a4989550d7fd7e96e8c6658991675af929febd37ac3bba240dd0588a902ba9ed722fe2c0a81c824c1d4fa20a8c44a5abe1e5108a822d52579b1f709af459581fde9b7af93626e85ffdb67d008aadbb5acc038e05f60838fcb738298cfdf6d7b2a3dd2e1acd5be7f6760875207042766fcdef4d7ef134c43c7e4392ca7c2f2740d5de457db466785c74ab7474629d8b7ee72e83c3d1c5ce918190dac5fab3a37feae0dba65ab66931ba6407f6192da1698c11eb36b8385eb6efe6575fb023bf5b52bc449e26882a4393e86836064c896a02d4db3d3c0eef96de849d76f8dadc297bc5f54153042398eb7020bf9e6336d9450a80949d3c286b517ee988ff1c11789c9fbc21fe5ffd8e8318688a190af74c4bd3753b1ede648f46cdf6fc563cf4e5a796e8cfdee618b58c8539b739283aab6109e86eaafd7bb0cbad08a9efdb92abf66c33f5488475d1880b79cde0d33b126299d690126559f49635f09258ce64cd7cbdd7e91ebc7e18b786d142a5e4e4f96b6f818b8077276a242a2800adf66be4666a47e597466ab4b6ebb43c81f93ef6d75bb815cf2ef0710ff2279a2e27f6dde955f89451007d441e36d9b78df051eadbf4deaee968fdef049f6f0ac0ecaa7d477c07cf2987f7ad67d02423a9b840e2b533e69981621c97db403d5f0f3f3a18d005e485ff1db3d2c7129940e7f4c16676f186b7107ae5c4e0f328da6f29df3f35553749b008cc46c00709f8b87102fe9ac242e98db0b6eed851972b263dd1961ec1099c5e3bb36256f56a63ef4897932307c4697a4829a7de8104eafbeb4f4152860e559f107c2b2f04b9fdeb3deb43d1a681c1c6df9bf6dd5e7e4c886354743850f99d0679717bf680bb54e34d5c88f58a16afda246813db563676608103ca288bb8b8ce169eccc0e9cc67040903dd836a7c0914bd8c551baa101a5310cdc9cfaaea519e84c79d446c9e5c7d578c321540d0256fce439d956d44ea20f469a062fe364bb4080fcef403dd9ea1b0fac92dd53e8e3d1bbcac0da6ede96ba0fc9645bbf594bcc883618328a9dc6e7966dbd30977d38df962bb82bb6b6c0ba0921c73d54ac671413ebf03756deb074f721814726a14acf885546c9d9cf1d305a3e30967794f1df0f66a5398e804a3db1057a8fd987f1b2bb01ee8e2c96f646ea218e3451e0db6866f2d457fc1a321e80fd010fd6371b353c3062e6d06b38c338ad429da171490db1628fbdde75862c1b0ec1f9420d53aff9a4ca5b3022a0ac9f2b3c8648bdfb957a8a61e4231039ea86e2cd165a3898d8786418c6e285b465e2c79dae574e116c5bc3719dc19f30c299475e9a253c8408f43c6a753dcf90b77810f8d24c411458276bac7134883bf6a5b007553071c148493a81199f327f9c527c11c0e3c858a41563002b9564d268b7b28f5a6781d1ae23324552b15363d3bfe13ec64fa8abbc6e8fab98da84aaec76884c826eee23b8423b591c45c9f485bdfd4b0f92bc50a5d35a97e0cd6a180490901563b3897ca29f30c08b23a1c98b2bf0f398107051e3a42fc5efef4b423a69ccc3ac9cfca9fa7531918628dd301452bde9d587461bb06701cbdb0e9422801a6242014e428cdbe11fbc7141f0dcc0afcc7037ef556e9249c45f4792625a37d01d2faf9a296b97db23de0176435e7b3f6b8521efc59bb60bf1f71b9608d4d434e90af0ebd79cc5d52726a2f5b46d8f4448950b155414a0b006722ac38d35450e5afa8b11427cee275b4923401207d432f9c7cf08d4460e4004d384752b237df72616052eb7af4fbdb287a4e4a253ed7774d76aa4aace2ed6ef12a328d251df01a64bac3154bf723462c0e8fd9d64f1c19778aef551f276fc52f9a451a26962155acd41a28dfb8fb968968987afbdf9dea153a8dfd571befbb80943c874b8a019621303bfaab3f76a02a5bae37aaf6b78b78cbf4759a575703480409f52b43b4d056c486b48bcfb0333c48e6d118201bc60dcca7891eb10ebda5d70d5fb4d3db42e1c14acd44513e0425df1bf7d6fde7b0a38a1ac486803d043859f9860136131ea0f35ef130333253bcfc56d3c6e376e830ae77adc12e3fb0de7f5eb2a226fb1eb1adfc49d9f93096ce3de43bdcb5afc80fc1942bd1490e959bea06331ea12cb08c9da2e5d8660b6e951c0d1e5962080194d1d7ef17779394cddd74f06c0d758bbbeae2a13f8083e0a565ce28dda0de64bbac865932559828e0990216a3f35dea1a964a6d2712d7ae8523fc201a8b46975f93b174f340145ce686c0bd57dd5fbfec0cba18263636ae387dbac82f11a89dbbff810e88614b63bfdc0e1f00c7fd236d65ad85f3649da1ed5e67ec534325b265b05b4b3bac4d10c32b8041bcd4cf755f513f278a3a4aa0190fcd773f5a92ce2d999111966efd6fa77edafe88f1d8788950be4315a8516b767f529a707a7a5ffc3195519a734d8c1f10e639e8a65faa25975dbc1f6a5b2ae59a7d073aa29c251635cb1c301e18aa3305837b798cb95986058c8b54885b219b6ff305b722c96109c85d6be8ec4dce400f8dd624e3cb705264d5f6be9f1337134a90ad703c62d5955f19bc37951234f46b3b301db5ccaa7f2e633982202eff017b09bd69dd7d8aa71f3b71fd09be7afe856ceacbb8762e0dcaa5fc324b2ad1464d6f1367412d96a576e15359f146c57d0ca28ad3dbdd33659b603c78da25b22218ac94dda5db85f098295fa621a0a9bf2d71a02d131a7d35a77d5553fb153a1b0afa6633de88436cfd5d177c4b86e556ef319df2a6473050418d16f8566cedb31b26735ef6ccffe6d3ec24ba8318f61b8a0582938e5f2bfe67f1eee8c70f95ff68b6f74c0788fadf0c2fe278d29e720d83c3afbdf3bb017d50c30fe29a74d8206b9a7446bb7009a0042b5503a9133f9b344b925968e40c64165249dee512ed9b54507bdcd932301ce395020bea666d46d68cea8bdfcd1ab30067f1f91aab9c0476b006ef4b4ca8288743a84bca7029dcffd9e3bdbd1c548b76e5dada2d5f7d6a36c32d5f42106a3679b217f0d0f62c7c7a3b9c997fc29430d0b69c195cb427f1aa501e897164c4943f297a6ab77b5c6f528f0f1927328e72c41e8ab14ecd66139fb438fd4d2f643bcbdfba3f27ea89446076e850572eea003417b0fa835f9e7af2904271aef8dbff41519b32d40b02da106830b34b62083327a4365ad5b05c143907a006bffd8d3d82711277643ff12a3d8393fb12badc35ed96e789d340362d57ebee0468fe8f5f626b0e6e1f9fbca6cbf3a8f70abad3d122f62e8a23a1881742c5f7f65c01983e87181ea0121e05d7e91aa9ea8bb1aed2b6208a88018479884cc07094116983d4aab9fbfb0a7d8d7a3acaec185794077e04f1e80c87c7468f1738e9f703808c644c9740731ee96cbf1a9fe85ac16439f4a7bad8c61ad957373c051d6d2b5d526a55d5cf89b7bc5cdd1e474278c9483d18bee49bb5e954281e47395368812154b859860dc9f823bf71e27df1a81a7609a7cef11502547a21ca475a2bcbdaa0a8384c718908ecf1b65520c6985c7eba22ced69e065e32cce130cecca5847342e0390530605bcf944b9bfedd9c23dd6dede75319d63566155fbf45f17700ae9f1633b7fabc32cf29997e16988e1f60a3aaad77c188ce1ea7ea94a1c4e5b38a4ab20a967fd619449b32ab6d855239d034daeec3c6972f4d246b9b03b3ae7587cbd19030ac10ea4c77a9e2b3f3c7fa42f4dab2831587cc153d70b371694d424a48213834fd90ba92d0ca39c93f9204df84689a9dbfb6844966c401e01b157309c94350b628a2f7b3ef7f15c652be47552f2d1d7b64bc398ba2641ac922c9865ffb38c4ecb3c62bb65a8be5539bedf3ec89731974e1b73a0244bb910dc11344f74ff888920592262984e49b22decd67b248ffc061fa02efa46db96594ba7bb328d2a7dca3c6b019e480e539cb626c5f6291ca8d25a5f004866348c7727e433fba01524ca4bda240287b2a108862f598200d14e12fb22c9c50ea19152d8c293f3e67e17542729c604ab567c93f05477dc41292dbbba5fbd2f366262ee6c1749515f84583fc9e0b3cd1cb4306d613eb360d0c326a0df47e2f843bbfd9e114eb58e5255cbf6d3fccd541ad99056aff5da8ae17c4102f3a095d179f9254d6879ac9571c1b79173f08bd0910e70ad64e26949e6ac28b1cb54057e7644e2caf464f5b9e04a497c192075746b9c2a894c3c13203bfca7bb8ba0b7fccc42fe370ff4cf83b7ff10b0d4faa97fdcec1ae7d6123e1aca8e32b073b600fde94288760ef26a4abfa6827c48b4599b9d4822e72567868d08c65f6dada18ea5c1a555af9c9c699e7aba76df83fe4b891e072718d6fe39acfa7a6782703de0aaffbd7ae6679d6684bf44a86d3b095722119791d4d385dae7265daa1f221bc9b5b333d39fa0dc6e7f6eec39cb277aeda4e534cfaecf4d9f23a31628975245f119b4418093f891816b106e2cb48a088d53127ed1ed237af3b6a5f0086dbae754dc30cf6372133e13286547ea941ce44c6340518c193daff43f44f715f89806c109317da3ba9bc28e122d95bfb2e415553ab8947a97d76cf6454a063b92169a5c5df43c2b9c6da3ce50b7015ae4bd9766fea68d1757a412feab51bc0f598c941c3773e92bed8997a3ebfe2951da89f54f73176c658e262f47f3860c457ed3944de276ab962ec3f453b9600e9bf754e97729b8906986dc20c14dc30a3728fe47102c04a5a3a0562d151834fb14baec8957fcc8daac7705428d80e69865e21bc8d649127e4d67e38a9678d0d4fcb2aa51fce0c9fdba7696cf82969acfef9deb97e90fc8f1d3be718e78b8c9d9780f76798904c577a670307cab62eb571d429d35e477b96838407ce1ce4c6dbd10b13de2b33a4e4284372928c7d25b6ed8cc04a13577df01c4352d90a23cca7330d66c0d43bc91c1ee9ef987c81163f32e03e19ba225442981ff415970ebcd27a7521c7398350cc680a8a29a547a7bc0d1b117ddc1339d00be87463ca8b33f9b2a5802db2225c6ae5cc0dbb147592d74997d09ea7eb14e6b90c71a132f51a59fd2ce623be8892cdba7091c762f80bf0afe435fcb992490844c5bf4efde1b5a6e9a3d820703e2e0a40abbd0c0cfa777e49e0bf35c25efada30f274e2d02126365e2425dc521791a0b328b525f9ca2944dbd84b68a0b06a1d7360b7899dab2c915ef9ca63803077312502d6cd1435f6c37c019b96685f776f0e6a8b8eb1da9879f68c24d6fff9d389d99dd83de21bb5795b18fafa6a34144c2853633bd71454d0eda0a10827ee99e29c7fdb96cc92456bbbe369fc1c9f89a4a3f640394f5c8acc93667d6e97fbc697496c18e5d820e932fbaaa8e982fbebfc68250412bb87f74324eaae1e012f0ea7748ebe053c730379b9b235e4f60061796828cdf063fab41365b610765de916da02298572fc59c2feafa5529bdbbaf84f9b630958e033d96f97a3c81169d626858ec1c89b9e09ed43496e3d4a5f5e8b75d5901465ff160fbb72a07115d9aa4114075f270792e719ac1d15ba9c095679de3eaa29a3ee8d7faa0cf307bf33a3a2e7d0db206e2fabd354831cc1d6a77ee7147acdeba203e22f9c733e59937701436910a22081943f2dda2e1e033c14a242f1c27f75bfc3c7a3a3400b58a6346f1270d435248633a6097452d9507db12ba4c8ea50c95bd9d9e9cbd46ceb8225b6aa64b98c815dcc831af260a7474a9a6e10f86b6912b84136dcfa9fbc4c5cb6053381368bd897d052bd33e8b68f22b3314e30eaccf497ec24c16ed77eb92e69a68c6a31968d2a7c23c6f6a6d1e0c84b728705e1f7bd11cc368dc88f43aed8b634db03b935bca4500e73a418cf2109187ba76b36b58bc12a3baa5c114cc9d9aa9da1292c5f26e65776b206c6b73e4c8c9df98892df03c8de1e426cd5adfe0b36ebd191d1fcd079b10d0e71cb1710d1efb2f984cca53915673dd8d28af75856f4665763c175b11ce6bb14f8ea6a066e56a1abdcae8f1b921426845fedf78373edc425689a47a3c1f5ae57ddebac612d8bc8c6223f37a8611a961bde11a74b6fe6d56729ec623156f64edf128ff7d968067e9dfd399d5aaa9fad801af73dcfa604b0e12a4fc2422ad43396380aa84399c374e4bd24e23cebcf9fa2a8b64e98bd05b751bcdccef8f7f6639354c969d113ccc2ace5ac9d4c5965fccefd948fd87c598b18abb3e75b80370416b98c00059bb1927863185ce6e9658b4e57be09d210a8ed2ea7361121a60b73a461acc5bf2f2e7592ca0419dd6a605d736d0cffc92b8dfefa920c58c8fa0c626f6067f623c6c50cffc6381baa68bfb3fd9c31e10ca73c2976267001fdbdddb71095d43ef96b7445f98150be103c1c3dc90afb93a4fa37f8d747b2a95d6016a1584eca6b33b7507d4da516a7153c3584746e5ef842849f4d7866a6079da91988ac83cdb784c11b160df0f6ee698efac607c94f664bb5e1320cd5844502ec9c08cbc6a37f038aeac67ad1da9595dd122bbee1c6417ef83615f2a847be593f5f2abd33cb513de3a3a9147b2f417539f15d5a2fdb787113279de8aee2ea83f786fafe9f57316013ced311761e84527dc5023f64dcfc8409287830f818a17d0052ec816e333e507632d01ee7f6694338d95eb72156e1d5b8dce70e452403f16c05b93e73bdb3611a6b61f183e1005023d17ef75e6bf90b7a922f3dc7f0544c18cd2eca2aff52cce2f176e3840cdbed40bffe4eed6cc1e29d16fc02ea413003f9ca89187e53084bf273333e99149f2a364eac4c551076d0e283086e6a3a6af636ca3922b49dd54b805c4125b2372ce438969e1ae42c21270b4f8c7efdd81adaab2bd9667b77263c8ddd3536cd6fc84a40c7fd277cdb6716fb2ed0dca4b673f2282a5ed77030a01f0d34177f253de5e5e7e27301719801e881947634558a17254b13d723dd7e47b3fb1421e307fd3e0fbfecc1c09b61fd96504d624e0687e08bffc1d3dc824e01f4466dd40b162daffb330cf9fc2ce781551637a1fa02ece72aca20f27963a05c7e4206db407dfb76586fc05d045a0d213749fa8fe80d467e07f3d911b2f8ffef90f7e230222396fc5ebef36ce20b05b897a9bec0ad20aa159c671563b098497a0dd49818d36e3d03f8c8b9f8f61d4a1d84dcc61381dc0d9ec9e9dc5cedeb245420633e00a7d80e7d7adb77178486919daeffa3b857111f1ea4b177808e0d39cd6d1d0eb45303187f74cb750c6c3ff9b34b69e3da82a9dce33ffb0bf976aeed625e05c223892a9c903115fd4cafd66e34568a5430f90ecd99233281b0b315153b96c8c586fec7386018f090bf68732129b01edba2de5197f2b25dfc302fcc1135cf00636c4c602df498cbef5b0ecc52cf91aa9231bc531b1f53abf22336f703e2b4212b660cee5b64e33470708b27d98f53b6c9481e30f654a736b56377c7a9c369a2ea8162789326f6c75a92517c5a31e979336dc8ca0138025fab3336d3c1eb11787300621643fdcccb8b89c16c7fdb3f261c80580813897aa453e48b13953b1ac4d46948c610c8dcd37048377f03aefbf2c1a17fbf5d6f6be8333d3d426f381915334b126998b433c08d35bf7a752dca29c93951503f238af3b80834f805882a1711c6fd726f4a018ce5dd2d67821c2ec28acf1c1521507a2e3473b12250097439e70e8bc09424a4ffc4d44536be81acba37355102dcc06916560c2fe9e0d2ac0e078763c7ab41c052f461cd76dca1c2de309c38c7029d6c28cd448b31ec5bb26acd03794134e72649b5cfcea8050d2a1502483d2f33f18d8e463b953b31203258ee6e6a68255761e5d97b831cfe6c2b0708ee3ae23a991bde3ffdb3af2029e71888000fc28d789127e7421f9f95b2b6f40a4456d02035515504f48bd154852acdd353a2e4821b8cdf0639e29aa65c6539ed77c26e670ffe8b52d286895b9ddd594ef4842d7463bd45a4a989ee41b258bd12f7d2d751305b76328ca655dd056c1786ff79f189f10e77700b431b879974ea9c359f368960d2dda0304f2152b1d21e3c98ca764469db713d3dc029bdfa4ff9b4293fc90a66021d13465085f0c5a1135e3821d629962bb13031fc73392140ac46db6c16874629df46639b67fda104279fb8ce612bdc211cf4452285b3a86ce969a4a955435200b45f75abacb9dbf224e1eeecdb019d5adfe40947fd8629a17b83310e942a3ecd7957bd55ced858fb1e0b21f5053d74a36e4139374bcfcaadb5a358f8c007b0c1efe3758a8546315d072edc7a3bc66634de2cda74b43da134d36b2f5be07fd72272fa7786f482da23fa25b007b79faf032a5f4c0ecd7360b7b344f462ef36f8edb8cf8c4c7787f23a7675cec36b40a6df226ff1ced272b0a05a6c6d63d079a246a948ea6e47d1594448fa39f87b9d21c8f4edcd4253839c5a2f4651e2e754b3fc59580147c6153fc2b3fb854b231cf45e0a56a36a110c5b482848ed4ff14d428bc0417161f2cbd0236f977f3f77e45720fa600efe8e5962dc1b2355f2c548878c9ae531530737f0c00698fe7d586bcc5ea66e505ff9c5a097aa565918d00422fe6f26601610fe5ed9f3804471b697f617d11d5a68b261fdf36f0bbb90e68dfe3f3b03641e376e42aed18ae480c4d1cd99f5282bc0975dacbbbe5e90001ffbfff8f06df75b3b190c78124b80a0e7ae6b6722e115bfcc0e3ca74ce35182d60480b62172f0dab81a4a8d4c621a994667610f50199fa7665779e0521f737fc02630a370f29a44123fd830f5b3ea44d45262b2934a88182de3548be481e6e5275fde87b44833928ff1f6182c83697c0dd95307914bd1f295aa211f67bac3cf43f88f7e8e1273028c0aea9d67c853ee02a26f34da8cff732dca5248fa2368891dd777770c6b521f083f6c963467ace454f80c209b6c49add2b0bb4245365d6cf55c537c25a0081b848656147bbb89910ec0f50d92ffb5118a204b4a57b77dced1e6f41f6f38d0cea4c0b03230cb907a4cc82a30c3dc3390f76a4225e60be5ddae1f59330fb171130d12186a15b46dbbd264b1fea84e12b0f5563e0b03a205ad89dddf14f7a0d7ca0907fe625f600c99e6322952d0a0e7a0cea9d1804e7958c0a7230bdf9dd12bee34d24b5450fdb5d3f84826aa5da77785678133aa2bfad398004fbe394b57d7d8607b118f1fc9d35cbb72bcd9f123cd841d4697f91f8074e9d17d0dc05fad718dfc0ee5d6a426481dca89ef71938f1d1d3d3a607a48edbccf75f42b33dec5ff9305044186f1f1dde315ba485e3bd1f20b8c8b77e4222718e04166c24eeec89b5f74d42d234c20d7bd830c8d82793c4c90bb4eb55b3e4a84e2d106bcbf4c67a038414194e1bad4c9004d3d88c0f00cfbcc6ab788ce014700b2a6bdf5d4fc68e7b54ba2056365b4525124868fc6bb4a538ce58f507de6650b3b7e76ff8aa9dd32ad414501d11b1382768754ed59ed99f08fa8bde7cb217e123062e427be08c8bf5681cc82f4d51b9cf37a927bd2f2d898e96a714e7245d5078771886f6ef72aec9fb7d4af3fe7e2e5b528dd105c2a5259d2d025a929057e0a78a00ec264d7665a164c1bcb7e9d1540f8f11ef715ce8a622a076d9b201aa66740bca2a028fb69055642fa957fda2ba917b71690935e036a3da0c9c8d1c63cba8e1117853d40a4240168dbe68b7c1448e5076e9fd721f7083ae05153191ef8ea7197714686f283faf03d64dfc49b5a9ad647b5e9f984be6229a9b96bd1d653f49006ebecbaaad85264359cdefa986f6db97887d6087bc9cc68979d93d6193050b6c6e3c15b974c0724d0157cde6d20adf700b3beb4fa18b53db3f790f01ee198d8d97d7c22143d48b72192b3c6eaf183de754544540721fd92e6f77dbe2914961e114dc263d625747189729011dbc27731307c704e233baebcdb7b61e7d5d76291da91d6491ed13db2cc8598f3f99957b3f0b5894da122fcfb3fb7e428052160632c56d7a22ac892f774b6328e4d990a4117e0d88df2c47718048fd445a3db354be7a2863071a6902af62188d20759cb6cb3cb20131ef3f34e0adc1f156ed69be886aa83dd6df1cd98601e73d2dab106bd86355254c4f4889321c3faa5e1e6c96de88d18bb9553ac31178684b784d9832211cca9dc746065b796650be95938088ef32867e40d814ed2e3ad5b6115bb44be68928318c671248db19ae545ec87f97809931523ca52b02e5108c6213ed3829138d4965db1178ad421c7ce37e0bd76b90f63fbb3cafb65fd7f58f92e680ca2849484e34d6d13981e3eabb386fce09f2c65ca2627d5621173ff403fd88c868991a1119d175aecafcb1e0d6120e712b49ca304d72563e88c011aeb46a334bdf113081d27b28c094171424174941d86701d385bc318286401d408f90e7034b551752dd6366843972d157ba2f8442ac7aaa19a869b2c9874f8a364c28838d96bf1391ecfca8c228364db8c6b2869a3136b2f718588cead3ef42090432a16f276b9c05a78f46f49c24bbfb2998050d4e0093d5218caac7a00f73f64109da56b17808e3d8544123867413f48ebe10f770525240ec8f2737f7d21928252b6b098f5957d6f347bfd19bd4a06c6f630be2c43a4fc0beee39fff50dbcdf28ba3761cd5767ebcda53e89d1e55a4ec4ab344d46da604b97bb30d439cde67562fc58556e0c7c72fa73da6b65ba1005e320c0ef19e6446cdd0a806903cf81d78ddb3e7560e814a0bef79ef9605c636f812c7ef5c2295e794f74dde70407f26aec66607711af13e1603dee7b784890e3f89f14f8a700c3749f976c5ad81a0c87cd4e7cbdf4f8321db793f4c891ee0b13a82fc7b6abdd9b6f6d93fbe400e3d6e5926a69f0d0b0cc61650d2d51df34ecd6c2f3cfce7cc5d18a6e8e4fd500f21dbd263377152a95f0ae3302f6a868f2222ff6e847f6a5d30cef983281e17e08d46624495ebfa7bccae03e8d35000e7488fe056c9f7b56b302561e2a6925ad9c45c367ecc03ce90c5aef8d0d0e3a90fbb54df1c6a60b512715ffd7a81cb124591bbf52833be6d3c176fec1a5a296eb3cb01e399c26006d86402988e279ba309e2ca7db1905ee09e928f82cbceb205fdf611b9d7a08b99c385a6cfe90c4c314fc213462db1f53e2ea4eab977f9b52cf01e6a800520fc2793b9f8bbd70524931bce7775c9b19daecfa93a8655a12a0ceb2a22932f71fc7eda1929b3ac347c80a57f01628505c2dc7a6b657928363de7a783378fda11999ad102c952ecd63301ffb4677af940e87ca4c1fff376f69b58acb23e5496c3ec5e14056b0bc58dd12260d72cf1d248486e3a0c6b7ee5bea8f5a97794103d82b818681bd1f61314f20d0a1253f90643e13b82b6c8756c4ccbb84bd0fc0344a63edc232ee07b5aab4c75a04c65b8dd97c6f19c71c1b8def5bac9491c0b70b8a62f0b54bc3cb151776085533bada0fac5ddca22409dc24629c90b15d60906f444c2cfdd42408275185c9c2618e431c2e8e714f47ac587069b0afb0dd87647b8720d1886b16d9f7368a476475e6d32c4e8b0ac406423c9a924c3ddcc22e226d48854d25c315424d261f6c478940ff3925726b048d8d4e0f313c98df2f16348de01e20821fc9d334881d20f16c8734c96b60ff4cdbef3535ddf524b63f03fe288a784b63dbfde88b43faea5c2175d336fe64d2d446cef545f13f362e7dc9b5f9e67c2e19e4f61499453271c95ec57b636200a94df348636d0ce5b58d6a256338797ec3503a0b9d2e00c7a3c80e3820083c3557125f410af391787f2afa66102f2bd087cc7594170ee8cab252d0638737d628b915d9b03c50282b9f5417ec754ec7ed8d9c3d2d8a6ef6fd14ab755824ff9f53efce054f468f3bafe6c41d6baaae7e347cfad13fa197287a36bf851171aca841c0915a88fe357a2d8ade5c0da268642b7a0481e4da7dfe6fa046bbb834f727e341fca5c4324b5749b7769a598665f25b4e303410bf2cfff2ab5485b85f34f86c2c6584fda2bb8b3558818eee301882ba2e76e3127f9532d6113c859e67c017c97880eca48a808fd874f6660d5314d79e05e11c669609a598e99c12ce4c0327972cc2a4dbef6e2401e47f42f4139e924c2d6880cb4642ea61e935b802b4cbeebc7561c8f73284ccaa3e03b608301cbd0be4b445bb0957950ef999b3a2bd41d6867740465b98d94e5247e84cd2e2cd45d1fabbb422516ebf4c6a3b78e1845d6e586b67649ac625365a371000c52545787780e2ac72314586c867562db270a0e7ecf63338f272d8527fa4cec2db0ded8b866bba1dfecee38b686d242c8ac0cb9827dad72e0fb669365df0d8f8025253168d84428ea8a8f5729adb6a84f3fe717b7456448723c36bb902740df9524403950813fb99e4194665aff7e678ef438cadb8f129d44dfb4a7696d927921ac87fe9dd0e0f6902aed29248eb51fe2871aff2d276467e4f976d4c0b56f485b90e51d561d84742ce1ebea8d394b740f7d1182eac55d542936191dee4b457064b252a83f1b87ffa7e18305e173ba31f30c98cedd7c498ad833adb140c688e3c209de1fc1aaecd78f41cd7edcf7535abca76eddcc4469ca431610998b30d59c60ad957b35541b33c462053915bdd8eac517f824d7d7483df4aba9e5a4c1e693377c96cfb4a6e2bd7a1b8480b77531b1c265f26b7f72ff269608faa0d8ab444885721d68caed9976e79fb3d220af731ab91f3f034f79f5d227d8005a777a104bfdd4dfe02a7da2f3b0262ab1d04152e3aa92382027c975f3d0ca279e59b3ec44206bb135ec618c30c034fdc4a48a89d60ffd2c203c44a78c20f0151c52db05674f22e178392c057c2f20f547baa3a62e82688cd3cdb73040da707330a5989d928134607ba9d906ad466736d84fb38a9510571b359bc48104de57b0ebb92040928235a3e2f2f415dc9d14ed4be250c714df5aefd2801e59906f8120ba4fd41ceaff15db7717b08eec1918d49875989e842b9141e192309c8909dd222d3de3d5ceffc7735f66c3d69ed4ea3dbc0498b56cc3dc07dc54b519495ebba101c2271548ddc653994fc5aa413aa7b5e4d78c65f392c3a7b64b5456a976572b796ee4dd8207cf246091ae6b70b3b417799922a710b4d0575559be6466763eeff1c4b0a21b525093c7524f8db44df95010fde62cd7abac7f09aba95f6afc75175cdd26a334e5c2f62dbf26fc1405816eda2b4473cf0e2770a59627f296a067c908d797f895e866f72a46c0b40133a43f3461153a38b5b379a5c14e538667b02bb826084184f68fefa1bb2eb37e82929af742c6ade9e82c5ea92b5eba1c9108e8e97ba58edfc6e2575f1d445137c6c62b1aa288e0830f2b36d8c4ecf6c8935d7bafcc03db637ca3be1bb20426ba1c44b24e9ce45047bc2c695015c9ef1f223ba49a4b7cff44457b8ed6ff34bf1bda18675365bd27b6e9c2ae34aafdead24781daec5016b3f5c5ba685eb2554e4489e2243195981c12c9c6a38e6debd289316a5275c466fed2b0e07226e04c807514e087c2090adf08b0350c2f746af3585626b8aa6a412c653f4e9601dd73e48fa5d7f3c5d00417096bc1518c499993f98c43a67a8f8b6cde70946347ffa1ff8f8ffe970e4eec97f0cac99bc3500f6a8398101e6a92ff319f0bcdd710288c3d414ac0fb24f0275c8ded375d45aca82b72ddf7961b3acc2a8ecb7b7ac748ecfd2ac2d911f3a6f7e03b4452bb8e5af6bf40c9e40f815bd8c934a7cf6078adad30632026036c634eca769e5c804aba00964c1bcd3d4e31cf69aefcc18225c4f66ddac0753c21a69a3398bfbb7f026259c7a0c9033e3748baef4b4e8ec4ee7ce413c327b3213dd952a44dc9798f5f64e9e3d00292008e36fac78e594c0158ab229147447d58ebe24ab43d3c357535b399993850b2db3908d88c7c3f7975089d3936132a32993eddb03bf1c85e98bbd19965ed73425d29cc8ebc7034375588d235b98c1ff425c9f6afe9d14b050ba25e0919f057279c170fa40e54e2efb6122d5fcfc8d47c74b8d05fa564e8ade92c167948b7306b3d236d61ccebf41f48c3814227c916c558075139de7103dd4ed63374d2d58a224675edd0d0d68f08830a34e7827e046bf2498e95facd617d0f803d257e841a9536a1b64c6bacd822e9d9b0c1a9d20c330403a980213cea2b08e399789f58cc8d32ce4a5d2b467d198e43d590a450a619e1926c73fd45b81d7c0c433ebb9eedd8e3df3e94c3822cf383707bb847eec01157227a24ed99324f64f05a23facee2db3e4c9b7417cdfe3110e60bc238d2707c5f290d50532c14dcead84ba3a5767eac150a81bb6ebf316f0a60e042054b0c0e22cb59ab188e36090246a54c9e80a09785b18fb81eba6094950befd29b4932bb67270d4ee502c87c1eb06f60ca9d9698b09637970acb5c151a17f12a0ae6c0074a29d3b1d8784a1d3454915eda5ad4d768d186c5866d143130247712347ec11bab49e9b3a36030bd93c49e85fdab21ccba28bdf1e7d1efe87d66d67cd7a5afbc881d71e39227a2bfe37c1c5cc1ae67cca8c54abd57cb5020c372d49878a0f1fd5b933ab22e5ead9b26e90152a1a9db835e0cc16688e2212aa5f28ea4644f9f4087e9d4e9b850a8fad3136d1b8ed00759785938d8702e6750fe7e1a531ed19a9126188bb940dc567321d5a947f8f89b87c0e0d64cad4f6aa305d40f8e7ec050a57d768d544f0baf7478b463de7018841588de0ab2e953adce82813a67b6066c72348374db11ebbebc307691d1be1a12c0a9d771873fa0f2d1e5b8875d2497b007b02f14d62824e7c591bd4b90e614ceb452a82f3f77bc6d334b5b57677269522525118390e362fb0137ebe1b4bf1548a50de74211ab62204db4f11dc1c5799175ecc3073503ccc6ee5a400b1e5015948d1bf04363a08dea97726f76250e781c4c6cb4440bda4c76239a99abc42af4e7caebbac98e1cf25f3c54a2a4c24f3dbd75b9660b0e40778acabbc2c57856cfbcb304d2db9b7e018ab67ab4ce4ce1e48e8247b149c1603696457b67effce1e7bb2e6690954395d4c647827659c8252fee26688f7b0f9e4d8ed61caf8bab07dbf56022b08c763e049736b2063b2003347ca78fb228e470c3819ae272ac66ff70ab22b6bb475c6fc0cb9beda9469a89d00c401d6b1f03f92b016e10a46d5ffc9740601b5dc3dac71853d4cc52dd304c51b787a3e46f0a4ba9a3823d1a1e4d47b67a5bf6b14fc4e1b1a9a442ec6261b691dbf0b73864b524b058646b83699ee612506cf0c3420478f23341c04dcaafb0ca0a0241f99c4c15d341d3d452231bf6a3f2c28c6d551a98a6c47f5ff4e2d57f9d2a161d5ae8d0e751d6609bd2904d0f71f5ed362d72484d3b6c050fee10b1b52f5639f4875c549a3eb1492b73094452a802bf6bbdeddaff335e80f5abccc5583dd9252a0a30332517dfc0397c12da5a8f0c32b72d046223f13dc10d5ec46e6cf75237fed72f59fcbe4b0ab998a187e8e559d21b0589338ececdaeff8e15ab7da3ae2e8561e0a3a12e9f9704fde57d8e8656ab21c6755a9a0505eb7e1f03a8a99be51570c692f418384155e7732fb8adc2c61f9efad8110ba45058913cf43913e27d90672179e88e866cadcaca1fedb558ad11754248447c5c24e89531b655d4cad42a13e73b6ea19704a93d769bb0bebb30ba7d78664fb0b3524987bd519e0351f8a5777c9eccce13ae50a046ce8ad6dad9610bdd2fa32dcfe33a0e7e1f083a25ffbf64ee9c584108d8a8a26b02af280d5b6465fcb33b731f21b876a86a59dace1a013eeabe3afb3e91ccf4cdf353e6d5a4497b979658fb5d96308b0f1c7b7363002a2136521d13600948beec87cbb53c1d1925da6b3039cef470590b1f57ac26a329a4e76c0c4ca39efda5fdc71bad65f2242c76184d7c56753131f3ca2340abf2e7e4abfa4ddd12ef80de4b2570d46e2f0230d7f04aeade3ca5337696f3efcf58cdd4925a1bd362ed57e8283a1bc60c905ad5e15bcca16fee6ddcbf415c89de779307311d43a84bc6b548aaee3b6c7e79d44a1ff32a026c2de4598feddc5c80108a405ef13e44c0e935fa535545e4fe420f7c05da5de8e32c20aa58aa705afc6cdb1e4b26bf6f08f167c753fdb1578bc2759f710c8f4b1c224f5a80183ac8a4bd49c2a4fa7d5195d881ffb94b32f783ed35460419d3438d997b086afd99eeab9d52d9b3df05952cbe3ff6e249bdf6b8d72dbb1db580e6056f5290544269597cecb48e1fb7984fbe0fffbcb80931272a379b5d00c551370087a7c68533ddf245cce357b8a3e6d7dd7d1af015f324eb7c9c7ea49c816b31535b077c0d62518dec941b71aefca7bfc9d7f5eab1b82f9b1213e7d6d4662e427142a0899a8814ce98e554707b31b3d0b56421c323172b11d1ca66fe4815f2c39530c0d3809865523b8d216c2638968c9d9186274c5d78a9504e85221b8ceb5a0916864bb1e846a726a3aa7c40fc5e5a02f4a75681bfe63077391d3f7ee4c6a26e56738396f012b0959341ab4cfe4e55918b84cb21fc7a79cdaab01fd6aa83f4a5545d77b6860a35a4f4d90cc3980618f8601ded0de5b241ffce24c0f39452b336018a011d8180e4ea8053199eddc8da51f75fc590b6dd75270fb6e8aa7916dae756fce3074805397d82fb6460a2b1b44bfd333b77b03d2372299be38ca8a274c79ba2e5e55238af7e29e94ffb5d14dfef4e248f9a9e095a9d255a408f7506c92458505dd76acf98ee2241cca99cb444380cf49a3336f8e5b93272cea4acc40742682b3ad375e625885e128526213ffe8db5f58c15b4387c44e17edfd23613bb65c64e047dd1a8b5b8ce03fe14120f2a4aff6973a862b42253d47c16ba4b4b5ae9b8a364c0ffd57234d0831896b72438d5a65e910c1d08e78704908cd3481c2db8d79f9205a80eb893158982e9a2ff74d6f8e5e2c37e785c54bc66d13fe7a591d4d2601ccaf3994fb3777d8b18acfa51535d88f63bceec9fe06736e3a73446bfeed10e463e01f89e7709268ee7dd88a5d266f3dad4583ef532c5815dfc472cf5bf12e5a212664b633818b8fa9b8abfe987258e6ca6e3d6f9c1c68ab0e69a23ee4d2a522719eda1c2f2477e6d20462ad887a543f47f322c34d8b65533a9c9bca607d55f665c7f285aca76b3caa2eb81c665591b35637a79140001acc42de868671d132519105408ea56b9fb577870b535c4e2d5903c03b086357dcd2fc7231516e24721c992292480466d73f846466b1ca63890311b870c7583f67e063dd61f367bf8183d7c89dfbf7a225b6e99f9c529fc86b5d316ea502f3bcff39ee6d3c04da5dd47df10735bc87bcf74da3147881ae62f23473d348b55da5eb901aaeb7457ab07bd797d50fe6eb6575270025f5174d4d556353fea90fd92738aa5cf6206bb6dc92c2958a24b595e52e1b3b378fd99b5779fa78a8587dd840d0c803dab07bddfa783be7609081b2931b1f84339d1ae28252a2f1b115e76a45e3d392b72f43a697dbc9d0f90f60665ee8dc3805be460e861650b6995312e25c9b73472aaa82c0329168d9d80729f047965363205518f34c3fc15b074740c903249e3a9835d362c1439e16e61c2867e4689ed6f9169320745d641546876e5d87004f9aa7c46c532deb1072ef5cf6c8df243b6b88a51348d0ba999cc33edbe38eb262f9c30b43bed1171e6f23f7409c759e69edca3c06f3e7cc752190ebae6d8eb0d0979a752a47ff0c427e95847e83f8977e49416f16f473776f25e5afedd153acbdd2a027f72a7bab571bbfe0d4b84df0436372f2e962e31ea403993212e97d2920a18c16c8eefe2bfbcafc91b1926f21c0ce667bb822da8a9bf5ad0ff45fff63f11ed92af010b4a9998a0dc2d6deea0eff512aab52ecae98b596c2d8dbc9a18624ae46752f6bbe7cf76d95c6de176124b6b04f0b6a94e9bdab439da5e6f37f31de2157732e7ab16437f49d39783708c4ddc36a1a2ccfcc5ad036aa341bde8950a6bdd1636d8a1683ac1511a2dc2d2a059a4895688202c7dcf5ec769bd22801428e8f42ab19dfe825012b40ac43d5a4c20c23ecc389d002b1273234875637004d85d176487b4319627c9560f2548e68f9ea0a117512e4d8069f30390dd7c2f067558b0359ec1b0d7e707f0755da90fc76efb8a98b3b3156629dff810b1a1b134f02a4bead8cf71c2c1c23b3e33462f8d784b5dd3a7b4cc1fe167b271986dcfbea84ee446f23d8159588c5445556d18cd640dada45a6b20d0157a0f0066b7510071d8373d2e0e1b6322efa7d10414ef7e80a71517cc8dc667a0747c1efa96e0e58b3e3eddcf1e8357a6ad386c450711130089df746e0c2ab3a47d125d91e0e84d205ff9c39185fba56105b6c91cd0cc2b5a6620644cf00ee72b758c8e36d9355519823281db877e2739d0da0c08b3188fb6135bbf31129f527abf1fe0b16023b8ca358833a0ef53e58de19740d9a25f5d81a6bd67410f1bc74e2d83d7aeb253f5e7c605ec77ff5d24f0bd6a17d406a2faa1c561d511acbf19c7bc39e635b41425c2dddb19036449626a832c4c9d1946fce2910d9595f3277ef0314607a1b9f78bb3cad371f7b24f8b2b0f2dc5511ec8276293257947765e478d26a65ee2613e887d89befeb7e4b5830dc17ceb92f724bc350cd68364c8c028616e3b4fd2a51ed2ae3ec9ca488c08b690141e1d99f413f34e1fbe1b2734e51f64351f514c5e0b8419a224680b4a759b3e5af438f46e9e765d6481cd652af845ec702f87f3462cbc3d197b7a3ba8fffb6004b82e0c6c262201dff76f2949d00fb2bd22eaa61c87f79fd2eff956db7ae0cff3613caec13e0b52d2acf1ccd0360721dde2eef5c277fc28263f1c4e2e30aa60d93ce96782a28b123b30d795250f367efd432fbb6b84bac0c80a41977ccab08387a6fc8cc8713d4ac8e9996a95a3cde949197bb54c1b658dc99f29c21d69f5863ab179040a00e666961dfdc0c45716931ba61dfa01669b44f36fc2bc6d3e632b020cad618a89cd29759d307e678fd31ae2bb4e73c1b5e7d182da43c7ac5f5574d6eefd56966d297253e67b44a25ffc6fc405cc8932d6599dd6e11b2ed1c342605f8d33f630cda847fdc16fdcdb6c9c0f16f4618f0aca2bc40d52fc169e180e40fec26f8c89d7048bb0f5d2639986133e14805d2f7eb0d6082062ce5172aaadcf4787c5c9a8d684ff4943c5bfd2b03f166a14ea4afa1f0073ec4fce382c9f54584e3cd1c2ad026f3f5c1b97970569d9c04967cd267ac6ddaf8b1d7e283b19cff33f9f5a328ca24f88cfc5def2621518c7f190ca53444f6857cbdb68a0d8b4a1b69da35106332705c1a82b5a5fcf7f67b28fc226ad40cd37738d8d93c8739a037783fb0bb38322b7641a8d2fe9ec0980f77b0030625d19f62239e4357aa85b2aa662aef5409cf0b62cb40c9e1a995f425a39599138b14cb14d7db3c8913f88a7cb66e5e871dedd9c1193434d7a93efdfa253cf294ec101a9fe0a2ce37faffa431c797cc33cc0af4cac2b6b03595965a1a4debc133212a23cb7ec049f2bfde7065957def38de28cda430b85d5e8ef2e52149aadc11fa59d3e148f8c0f64975d434e346decb723369175e49610901432d546232bc29439ae8c177598ac656fca77813af9560e6a4e2890ac465a26c19f5fa3c7b003f60dc7746cb62c1ca41e537d0412574227e0ae650ff6b16b56df5b3995705ea5e67b066fd456ec608e79cc47b61c1c0fcd988364d401da569d83b12f02ca2e0f0da57f32d390bbbe698ae02076d1b21336f7c29da415b4811f60270cca33cec5665a22b2f5b8207005ad19bc3f0c7228a8dd8260c7ebeb7c2376f60aeb60f3d1e389d740ee2bcd609cdbdab137a9cb5ffb0f52d3f034faf06f0b32a397dcca4bff0cf0486dc2c97c78c474284b5e5ac1322164ff5d5d37394e5eb4676016c18f0247c674343227c0fde18e6b7456841a0260631054080461ed1e5e5e78acc3281f816fc7d7c2dfddeed9b0e219d5c8f4245e38e1867b1f22d18b1686b49c5b2d15efe79dd4bcd557f0d11a88c649516535d44b27ac49f4411572fe6eb890ef8cde93d63b068ab04ba9e8d947c38a73b6e95b2ff3658018dd68b2fabe4de378b804811977234184b1da2a32652c737c58c62a16c87b19a2259f49fb3b3e6e89632d7b4c4a34b4bb35019bea8489a9162ac29da019326a6dd5df13333bc99d4661ce3feeeedea2b8679afd2d53f133920083e9e5c7cd5c99bbf807311594a1aeda5832eed9b620954af59e560566986f4e03d982fc0480ebcab208a679fc04a42372b57ec5f12b97080e1fe6b54ae3736d60f14bfe3d8e8a6ee2d5304f11beb1f9951d2ea69a70471868ba310e6268523ce02db677325f642500f12ea5e641a62e5d92a3cce9630b20a4c8bdca57f815a6ed27f13513f727e00c0fcd1dbf5f18c071608093c0ea8d1ba3b594ff7a876602492dcc5525ed5c9138b3fa33e2f5445cd89b8cd03d588336d3e545db1637f1cbec00214313c3d990f0a69fe140f20d686cf1ed66dd7de7ff50dafef98c8d45b9206e4a8c56e74e886b83db545a82bad3740edca6056dc1f091bc263ab54264d396088bf995b7ab3c6aeca4f8398fadd56414f1f58f540c233f6b5083944da06d5b7bcabc49e677a92552f878eeae09b1f5a59a2aa206fdddb3281a3cf4643fee92ec3521aff6bc3f024feca480e26c27172dbf12086642557f6c8eef4d5af91c79ab4ada9496c9807c044bc96d0c65042dd7a01dc99e7160fa52713b1b8b68080f5f0498bae7704090044b3127da8e79b104c988b61c16fb55f9935e97d4b6f73c532c9ff78e5992fc0a03a8f936a4d2f2d7ed3f4ffc7b4884252e789f7f46563bd9762de3c6dedca7c5e9069bb87ec73b70ca2c8bad3aba8980eb28100f74f2017375d53d3f4185c174527acde21535824d647ca7475df7a7501948b17607cbf6aac98eec02037c2516b250197a8b3821be8db45d66a211f66e27cc998b2226404540602dfeced76d27fe67456846221914cc9d69d5901f42c3fcf2ea050d897fad32a5062b4dddac3127808f6135b4b1925517ed350592bb922e6badee81a3387f3a00a9919319260921d149495bdf0166c060ad8ebc36ecc568e83ece1c9d564b09520fa2e16f1fee4cd79ec06485ba84551ca8ab81e940002868fe128a8ef32f84add5f1c3d786d8bb1a794a4e33e7364ec98ffae0d621f2804813fd7e058226a94d6873c5c61b2fea96ac572185ab2a8672f7f1e7764fe9e311076db7c7a6c0b5f2b3258ab3b808cc7909c2596a626caa6cdcb7008d1505ea8558c2eee0657e726127a356898f14dd25b00d2ae19ce8f6030e489af7b21adfbe4b8288942c6297db7412b53c75df4c4c38e0bd7f481d2a2d7be571edbe6932eb7f23504dc9f61886ccbc932a358104c8942772ba6de494b9db75a4e1d63263ae5c482fd54803e8125daf24e6e2f274d18b865e73817ed8d9ba98cf84bc2ac8b32ef3874fa844b3548f3ecf5be74635d3a3cbbef5596837263ef111c81a86f83679d8a4c6d2cdf87ca9b16f67b6ded47990e4747d48edb5583c38c7e2b22eff57b3f1acdba8fb6eca0aadf28e97000891182ae9bd9ddfe655dbbc02463a898aa914c4425057678ee7c0a98e3c38da2d7d4e43bb88ae0a8254e5671d94daba4dfbe7a6fe2bb04abaadb8474856f067c965c5a34114c1f32ef22db0bae9354a0c5a835cf79640e7d516470e3ee3176ac622c11d33b92f0206ce0fdb974e3734c00ee5df3c3f24122aa965cec0480b1a388647eab714275901dd907f04287c7e629619b177ab1bc678fc914df305ab3f48d2489ff10a390a9d6137c66f50813a74c13cc63c1bac0946b799407e0b829d1a5bdcf891cdcbd7b3d0272b4abe6b5356b2e5a36990092a1c3e6c6750309735c3cb57057ba07e59d5087206d4757b425f99f82206de5bb4caa042c2990b81e4d71970190b4d29121dc4d53b8f11e64085f93d6738764419d4ab7bc19ffd2426496999d75f8ac2d8d066fc4da93732f857abc811f98ca79ee6262a8a8cead381ab20c367a198a1fc4c66894085cf11ffc1b721f2334fe9bb8c3c7c5fcfda49280ff9f8e02cc31f3fd67645a29419f239e8698280c53583ae7d235d1af92e75cc16c738f526d20ea2f09cd86ea77033e92f35b44cad20c31b50a06d2fa1654fbd31bfad62978f797961f36129afb4717b311bb05a6f022c9b3776b4141176536f8e4acb5ca107e6c5ff291b2c80a6f9bac7ee1df4cd1fd11d93b91cc73a42d4948d18cfd807b314dcc1bb810a0a9979bc550525bb4ff74b32f0c09cc44d465023ba0754f41a365a08d0d3cb82e1e52a36d8fe2d50de47cba08b489ca913f874a3f4440d0a497f56b798993bba8740474bbb8835723505f225e90fdb4b683f9a0b264b56f5808846938278d46c1fc5ed8643cde453df9831c6b12e18db8c04e6254db4f2b12cc4b32fcd41699cec7e0c15cfebb0020f6c8585d40f1bd561d90e9ff36cff6415f80e4d34e54245f2c6ce230d942b1c7446bd068322a5c1b419adee7399a34ff5d3ee4beaa05c44348eb337418ffd547417fd57597150774da8943c55af1e726090c9a2fcf3d4ed879042000fcbd559b34f96817316929b61a38136d45f10a3acae9504af968f380e3de399a3a382341c345197654f5c3b234c782075665b24ea8f295ce36a328e8ebf6bb987a8cbb387a72eb616be31627e43e38b4226ae951d38cbb43ec5e1686be023c74d98909514be610cc7344c4e8e43808bfeedf6eeb1d2a62b3515bc55fcbe646d168ca77c309aa6b7f7fef4525789d0ca936adbe8f7b9828f7f2ea83b945bad670aa9d3bc4ec40230d32b0d06de36f263228d110b087e2e5602d8a3dada2dbd4a21ac322081011cc8848c5fe91efaa3c3f2646388301c00e4fb6c5be321e151a4aa3f46d3ff55be3dd0dafdb7c6a2dcaf148b48b954996281116711f2d39d19e3d2641822c00c7a13ee44d2b61a3b68c85d8f34129e7086c5a272dcd7d355fcdd6f8367b4cf973666ac1500683f1f26691d45fec73041af962993ef0f2994728c961dee7fe8ca93c50aff325d62c98c7186ff8f8f0eeda3ec271b42424b0b0b6f31d843cb9c80b3ee04c0e7979329227739055665498ac78ff85dec1f50bd3e8b8df53c319a264d3b44872dcd1643f716f51691324171063cf01142a88fb7de68dcac2159d73fc159bea9910a726bd6241811255a126078af8e4c9dccd18ac79def6c968507682d3e78ba6462f62443db7237fbb77a304d3e184f944e0bd270717f1f0351a4b85f6f418afde66069653eeed5e3199106d24e106d77d70893f47a23b280b1a777b5519945e316b8177493dcae5deca13a74c7ae7d7875edf8ab0ecc8738b2fe25b2aeb94e27ed04a3f1653589e7aa9f6bb8ae07609a89667bec60b8265eaef57c6b4a3c1295d1459711c9a6b0cf25627885a3757b7ebd18b90bf7bc5676c3007bcc80859723f5fac6be8c6881f9496b97b664101620abcfbad2f82e1d7b5d306e84b57af28f1c0c422681a6b7527d8e2eac0664105204e29beb1289cf0f2b6cd77e347a7151ef525eead47816c96957beec63db5aef9e2ce77b96ead842273b683546d3bdd4186d964901d6e061b7283d44e0c5264eea663c5044642890d26840759daf8cc98d6ee49b90c899a14bd9c200409df5a7e8aa9f95c297b70b59dd86aeb3281faeb2ff388f5625b58f1558c1c137f777c32cc21149aa1ec534310bd994a0b0bb2527c7f42d89c249ad571bef885580b3f768395151ad91fefc1011dad38bde03443b3aae8027f5607eb6ebf7cf5fddeca65538d641e72106a2c18492336aadcc78c57926ba4c0188781b4c1476fec0771ca91db41c130aff39b6575a8bb37f311159cd87501f1c4026c9a1ba1b3dcf271bfbb104d75ad622c9e1f396fb4b0a9ca72e620b917ea69f84275c6d82cd9df13b906041941318060fed11119bb9d98b8bf6f954aae9249dd7630e237422a6209e83952d02811d7928bdade2edb13eeff3bb5620f65ea5c505c522f81e892e12733c1d9e9775a2657a5626429d9efecc09c433a39955acc1c9ce1950192f11a6e41183ceddc65a47c991aca0943f268062029d1d2140f770cb1669c30e0fb9a5a4e41634789f377881cb21c82cb364c04c003605c2faa718a5d2ff4e0b8754692c2f8f82ec7c63e006768ccadb18f14a61f32257865ff7f15430def00a1f6d6d6cabbeb98b7538884c1152d5a37e4546d0a27e1a6c5a09c82050402eb7e0a554d6785ef3c2af65bbb89bff7de67cf30a0a1405814f0f2780fa4be4846263da314ad5afaa9c154ae0afa1ec686b162e3c790cdd473172cf444f22efe764f6af32b345cc96ad507ee223e829b87131e397fe31ba3ec901aa7a95a6d089fdc7d4da9eb17593ac4577d599e16598be2e5149156869416c5cf5c4455ca6b2e8eaa0d40ce436f48a8ea2ed3cbf949c865fcea663e767e06945492ee3b06d10389ff621731df128e9f85cb7e976797a9cecb45c75c39ba6a7e5cfa7666cf081d502fd0f0a6f50b321a9a8fdf9df8d2074d9b42e43f5ca4b72585fd93b8f983d7134dae9eb1e36cfde033ada7b12d70f1412013ba04f31d64f50f34a60b5ed7c0783fa9cabb0a06e0c500c7220f734703d33a7dbd96db0c36072cee4a1ef340f737aa3f0c1557f18430977770a25d155160135adac68dd89e94d6adbef37c191a3b1a454fead708f7f8d4c98eea23fadd9e3c19c2d37ef0278710a90fcd2267ca1552628a74ee6a55422cbf34433bf9a45974398a3d7743eff9a74b2026574fbbfeae92c5d746fb9747f8cc7c9f917b311b1bd19afe7ac833be1cb37960c09c52aac0a3706ce2e0634c805a5fff12cbc741810bed830df8f1343733ee053c3ad9a858bb096df807f0232344fd29099a1d40b6a599feab4f900fc1d20bcda9bd3b2a88d01342579df9ff415cba766b7da20c9d6fb7e851ce9bc96fcb5ec9e6db5a493d2e5de63d95c879e5e627af636a5801a7cf89d7bc7c94ed780b847144eeeb4073f5951d5a284407c41bbf53243f3caebc40fff4ede0c97678b60b65d273e92b33993677b550174e45a86bcdab3b3e608ace7fba188947e249a22b1c058d9333f560b657e04be5065a2ce6553783ca5e9c9b0bc7c786d1c034da41eb9e82004d4ce71182971e8e6284bddea0f79ee121755ea9ea81eef0db551c2704443d3de8289ea1db751083233964f78f10fac0020edf24c1a25a10407e5c515fcdcbfd3269474064012a2bddd59c8e7b0c651b29017c1d766b66a8bdd93fc6b641deddd0df7bc19c87be570bc5d759dab294e1b6f1a8648c89347cb38ea1ddfc564d312b7425b8d5caddc8f30cf9cf51a19f9a74a566acc272e8e533310fd4f8819264ba81058d2077dfc18372db63791d834c80a9d2856ffe2d33d7534e2df3e44aedea252ee5dcb2dfad9b8dc98eda549ff4c04998afee95ae11cdb8d2e69be1b9ca7fbe88581ce43dd47aa805abf7a7379020197bb4f92e9e0bffa5477a94ad439694744f7856f11a1d3d08429e63acf4b4ce46d0d90504311456a70cb0470cf423a152922527d9dfe59c482954344962b90d83005e01a82024759ab341f93bf9b2200eb537117ab6e56ac9d7085ab0716d4c440a070aa429e67a37834c373725aebe5fef727fc80f226ec85d63a5fef5628ed3fe00f7468d739c6af69317a76dfc2a7fcdce7d7e1df39da63f6086fb26c664a5830cd0af9120abba3b94ea456ce1f719ad0ce5855718e803f60bcec821c6f92a52fd8b65fd58d7a8b5644efde06d23e7449ef2faf7dcf4d06e0dfd51658df074b888b0ffa08c426e7a6acbbd2b802ecb18dc86aa7e4c9b328800e9f156ca1bb81864ad7cca2b32bcd4da64e9d354e35a078c835c2e77f71699a0c214bdc74c0267b30ce4d0b3f52bc40dc72d02a72d6dbfb704108ec654a8e9c2c6934615bd33aec7d2bb8bcbd1db7aa0fdd50661a65643d36d8cea615e5e3621242700c0d49f8c2da7a9d96f824ede67dbeed2dcb45b6c33854fd1a2474a2ef4df91e11a4f8eb10ba1511b3026030b337e147cb467e066d417ee9599de5ef85dc31a4017003464d1d025b67aa463ce5d9862bd2267df2f70df71cea1bae1aca49b7c592dbca0fe34e16292f9e0972b336acc74f3a23b1be5a41cd806f9e6d63c57b7cdd4248e6d8269e79efe4d84d91f951423049e9252ecd83d50b839b5f7a3c9121f8d5bf1b239cbec4900b0bac1b432b87054794f51201d759a0ece33040b20333776ddaf63fdb4e90b26246c8279d963a6a620e1655377d15e9f4b11e5d05056e37809de2ad1a40fdae4bb7bf08e79f431b03a20333629ba0722f524f7cc0fb151ff127c44a803e6b5ab3fa991213b9926dabe23334e66734364aba98b691169973d63bc0244b47e1da0ea6b1facc866b89152fd303c625e864e5855658ea6d92c0aab7c4b622fa1976a317d080aaf8fc428d018c95271c986f805fc3d5bfba66b4627c1183c87122b13e643f159bd8046469944f47c3542c0cd136241b282a317d7d9aff753ecd1e8ed4a482fb08e53e2e696ba767411e1f2c13b1d919258b2d22cb9bf8a948dba5e97e6994c99a7645ced08dc6b485cf29f9559e8c242a5a0a45c188e05bfed7c22012b98886cd15d204387b4c4330fb78e2a269a5c4b4b677bc8c912b229084b4d8e41df556e9db0bb88d6c2c4c3e7b34be858035c416a65a557beb970cedee3fd3f8e32dac239505f5672f8834e382ba530e154b36080eb573f233f30a94be4d3f1bb1e72300275630cef5a6bb9e0ea2ee42953c4f634de2a5b400977662f6474a663b52ab27657c1339534be8f298dbff69887ea9c154f98159921e06157f009e4a03446da811b976ed84b0d697ba8f113bdd5f042d0a883e011dd97f4b4e2be2025a5bc043998a6f88b2bc29f2c2fa453db559709b473af3d1cb9de13c0f3463f9c79b7598043d6b7f61f9857df6d7cfece1a13ed82c643572bf28c3f1fa1551b740215a03c4cb0dc282f1dd429ac5f626d958e3fde2e4c28f3dd88c0eeae25265919eadffcd8e21235fd371f8370f8b6df9ba4f3d73b3a3534225337419af212fabffbd44574bf412f3f9cffadcd3712a5b7e6b672dc62d415777c7ab34c7e93e48d4431e9eabddc121a583f1cedcf6c2e4157dc1a737a0651c229c52dc28e248db173af1244f5c3f28c4b42043fb7b646fcf21662d61fdfadfe94352c9b6aead3f86af5f405a6b414d0a8ec2256aafbb85c21048876527d95918c9b28c7619d98cdc14640adb249da6478d9637aa797e65647869986f793ba66f096ff8b43862f534107cd181f8c996c15e1e96a717b3fa438ef305755821a6838066b30e58ac9d96a0d24ae9713c7beafef319d0f81ceafbcfa200899fcd8aeecc4eb78a14a21adeec4ce26e8b61321ca2b4a844dd04bf3109994555244b8172ababcf7d34affdb3421994985cc5ff6be6c57103a53676964896d8cf6f02fbc2437a9e95d3367f6d65f2f4e04fba5b33601e3a3a83a3dde5dc4eba05c48642fa0a5e0fa231b80e8239bc14c9e993f6cb2c5aa31b092265395b6e7f940278044768621d890e489089d2c97e6b3a024d1058bed122be7575f164b29c2c379339216c0d5e110aa71267cdfbb47432a0911d7cc6d6b39f8ff72e3c5a578e84358ddff3cfaaf943ad7eb2af330bd75827a2124b8a49dbe7ed826706eae07183a001349daeb5611a69523c5ed4b5e14c85d1bba81df66e0005b4e240a5ae29fe96c801ca6738600da2090a13e2db30c1d727fbf0c41b88bb60b57de26b3862d71b485376eacade04d4ad0c3b078d5f266b8692ae1e146ed7d8c9b6d35754a55c914166a9e9b47b0bf3e7267adb9437a9fe2f44572881afadf69b517746287119d37f71c6f97557500cfbc7a4e1d83feb42c5132b5b317e924d48413a97c133cb2e8d6c563d4d5bad055e720416cb6fefa405c6207f29eb478b6990fadaa7016e200fd7519b4b50bcdcc702f786e849a2a0ada1f65bee09c1fdee5aac59446c4a187954c65af58796ae206b3ae22031af394c803f05d72a4ba2324fbcfc188ce1a4d4d00c3f54d190323f668ba73e0671a63ab7fc57705119cc82c083b3f22a0d37e415a131c3885f2866c43ae55ac8f2dd214562561e1f02b7a8350d25d1f09e8f810b8aa743b59c2f7efeacc74fb44c177261fe857e2905cadc742584d15bed155348dafea80b7669e4a374be0145e42953bc6452550042f4454c4f0a0f6d8c0fe9fddc87a7cc48a0cd7b9e25a00555605730bece2d2a247af47ad5b069b5284be19c21ca3af28ed928632343b16c7cb44580165dc298692fd614affb9ff8c029999e99e649192cc56341afa05a5f81a797d90cdc60d10f88ba2ddc281adcb41e98315afaf1e3264f8d71a0b2cdc4d769672f5dbc8d46121475319b938c0b60008899b0756573d78dcf2932c96eed06a07283d360d04e34cb13ba89a35c3dadefc7ce5fbdb946df26a2315b5e84ab0107875cd18d9f7be321e0aa51016f52815fc87f006c3397e8ed421e8fea8dabdcba62fdd4c613063f9d69d22cfb88c72beb2a6cda927b1b296318a86aaae74f09b5cf2f86ed79e053a18c1a37f7048f1afa38f239acc174eb00bc01eb18a12e1fdee857d8569831b151c0ea17bb9e7c2e116b9ab40ed301bb8a4e71347cee34f5bed9121e72d0ae056a22e0957fc2e64675d69b387717ae6ae8c697b8e5b0d9c0bdc206b7135dad3aba861ba3a27bc3bf86b719cf95c4d00b658b5a1192abe4ee41e53370f3e3737e544370b0f284211080e705c2f93f8be1b8d00843d294690597581348fbf2b944dd3be427691b8906f3342fd8e4badfa770c8f56342a07ae2eaaf966ca4c6e340debf71e97f4abc9a41a931c5acee590d89daafd0ffc6a9db65872a41a835aa79eca324eb7b922af8359556b0c55a8e2fd5bcf957c238570a4e94c1b21026340532e31f7a581799da6064c2f0a28a955a71fbbeb52d8a9e46b29bfc9dc25d795e7c24432f65931cc4e85b1c29e53d8d2ef36fe04fb320fd5311a0802117db40228a65c8b094ee9dedcb577124b8e5846bafb63949eb380c74ce3e5effb358127a5a7ef83ea1ea456d98c9320642a36222e1b0a882b8d485e55009d0a5dfbd966783bf50ff72b0a1d8d524483012d76db43a0457d265eb5e6c61103a4cbfb72661851ab185bd68eff290d4de33be43e6b611385464d410ecc2ff129605d15c9933d80bbf95ae93f2c83d7a47ebb96ecce0641376909605a22f2ea79b59c5fa59bd63d6e046ed18cb7552639a69626de868a795ea2b2701c1f943f446fcf8de2f20c0bfffd28ac821a213efb4080c1a618e65be060a1ca059da04e192e8de3984f59d0d09df87ad1b18f5b984646f81a8d927dd24311faaf99170d78e5a5b5f22da8d63510ac026e3a6f50ea46a0d760f27481fca4d3fd9eb76ea9be5c58b1704b8e10bb78cf21cb5b399764e24ddcc3d8da6f880dd29829bc217f9eafd863522c8da56a68d6a7741c2c1f804e85dc8ed4866162bc60616812d3bbb7ce26bc2c9867f1456916f74c69f2526ed5b1409700cdcf18256178f747fc576bfb3481751986694b7891fbcd91dc1b2a5582257679bf1b276d34122a8e2e45644e5ef6ef7f6b1ab986904075caa8e353be4741a5df6a1e74f07d3b4a3ce3f3d2342d28745d39afe0f70d2ff2aadbd62396a3a6d6d822d476bbb583a24cdc92d8ec719b7f894435ce24f0bec4afa8e9237886bee78cde74e3128b775adc14aa2909a9585ba0b90d37d91325bab96a6151907e13c12aa58bfbec1615a2ae41f381f3b18d687f51bfa2d726481c8bace4bb2156c84d620adf9b72dea343a8e1911d65d53f52cb159a83535206784dc153b6ff01d476eaba3ceb84a59a7654de0c0ef01bc8776a355f0175b595950cedeb3315e05cb7fa187a1d33117db961bcabeb77f413e108e95e8cdaaf899d391d77fae145cd70cfe83b16481adb8b205c1916b22ae4729467beeb13fc466c26318ae8f35e7b9e2b0d57d7bc4fdc1c074a6e71ab2d84e6c0ead75d249af0c48dd213ad725bfee9d353dc8e3ee90066329f044f43a6b33d84c3e68d058a176c08debdf396ee8a6a105221c9b0a902b5dd71b7fbae5dbc089b7e71962456b731995be3372f1df18a2f5158c3aa91ff5aebd56f3ff373eed904192404e26d499924071d261d5c15ab014b891bf6615812626d21f46de6fcae82440cd11150f91df068a6b2d5fefe125bf6fd2212eeecafed8898bc4c66f4ed1dbc699c7d8543082b7e1dd1e3f5d5b697e372e8b13ea0df58d8bbcd157fc6d09fa884f7606b896963f15e0862dd691c12a99fa73a844eff18ab23af1e0da3bf18153c7cebcd63190de380f3855b1c6cac1fe8ab48d99ea6c1c028d213049a275b733e86c452be7f01422e1f12cf48584baf48dc28d55a0d8da9cce074853fd07e301ed482b3058efcb3e498e24d830f58abcf165eee354ddcb61db014474c905e59b40933c8f2881c0ed7f363f348df40bf353a20ad2e6fae7bf8d39c497486194f8309d861bc2b685d767d167ffb85f46a673cd9adf34f2bdd48ec05dfeda8928b0b5fe3f4b93c467fe3d911434274698f11f5a873f6a91cb32ce622016393f0754480bf13c1e2034acb467d622a67190b8353de0a16ff6ff8999514f846f81f47ab8048b9c7e94f456f511960a0d58166758f847b0bafb68b6a3ed350caff4dfe99ec4f6395acbef2dce2b5fc1ca5a1908e84d20b0243a87fefddac23e72b6e65d8e717fd8c8848a69523b8659f7a7fabadd0b95205da9ffb6d48beaa3f0eb9259956db99d997c9ee28de9bb34ec6a4e8547d5b1a2fad19ac27787c28c93929ec54cc46ff87ed828e83b66cb85c599d75c2f48d12bfd538c3d0bd2e1e7d5ffe9d3538f9ff56b69603f5c14c1e04ef7b788ac35c5386da428995dc6fd28a72399d03cb08a648708ea02dcaf1d5bb92541cc42f85af500d217d117eb027c305231dc75e7d2d3ee2d634b7cb25d5f936c0ad1bfffbd6356ce304dad4b4c238d1c6868fbcd4ce289c3d45aa0e45251f215cc75bdd6449fc8d3bae7eb612814e7472ed12797d59998f79d4a18ec24167084a8e3fb59d18f81bfefe20f0b73fae153a9317c55e9eb8bfa1bb2f45a3c6f4e6affe9ff5327b0f7fa8d5051b61f1e177757dd97a4eaaf21eb1925350026f558534484e2de62ecfb0d559c2c0250589763d19dee59bd0de6f0929b6dc8b6317ba863a2da031abb894c87ce630e91c64a5f3efe73e85852e66ee8dab3100d94930d7c15b78bd2334d9e7094704ea13b1f7b96bfc99c108ad5308a93d3bb7fe02495a7382fee95ad0223c4749ec385591ebf6abad10f6df9964e262c1741a3d4555ca2996d44644ba2ff625d216358274b2d6691a474321e8cd6e5db82426c4ddf6e4b1a1861c7796b4e602bb211a69c134c8ec5506b88d2c577e3c0171ed6916f0e88668e5e67026ef03f7ed52734b379cfe0e2a8bd87b44594c7e98f014d9540b1c9ff486d1a7634ee6b78b8c9d74c145f05165541d92ffa1f3e36b06550f010d49486179426dfa1a4e08bd3e4f20b798d90227b0745156acf369027ffe2b4dd33c1475ac4da04ebe9eb8116b0eb1c146386fdb03bd6ff743b1d0faa0718eb8e046d5dcd63e3074215a378fa7b736e3e45129dace4c0236faf4b4a21ea244688fbdaa19a4146fc5a0aeb1d0f1f94457a3aa5cd8b36b78a2c96a38281d9cc9ae14791d74c80134013ce7c3da0cd81948278e32a169d665d8e4213a28d4fc135d4d574c8630eccd1afef7b984162c14922e8d46c64f3d1d4bf40e1f9b1e74f4b604ba282fe2efc52513f55f99fb207a0fb3fa2a3a88c51a1bf6892a62b44ac4240905c3004dd87107a69b621174b38f26b86cfd06e3873e3e8acf66f7a9d663fcea22a77bb8ac56d86ac63f093b3afd93ca3d0b939d10d784b47f1d02420789fbb2fe48a936205b1faefac65448dc85ab7f0e8625f3e07b45051ee0d112df5d4d370a81e7011fca50dcdc29d2eb140e89ee41489dc0ebb7b9a893200200f26e35f7bc18f77447253bb8b59cdecc33f2eb327ea98b091b845514ab59c88eebe9b98e0c679fdc6bc74be2f6868efadcacb6862f632501cb91a3e896c7aea9082ce7e4f7fc783a1257d5e5ae438b6b86cd4c640385bb554d65702568b0bdfe99a086300062b1b0f608c2bc1672b886fe3e49716e79aee166404efd993c55c184ef62d0aae0d9b687b25b9d06d60290e2dd46a6281a0d91cddcbb6c86df39bfc47b73bdff62136866ac13f17dc8fa1e275fb545aad4513faff67738ed4f9566e631890e0c5f2933ea8474861c381c179386f4b8b4deef8c2ea7cb1d7510ee908aa6569e62d36df59e82a76bab39e6f343ad2f58ca7aa230dd8ed5ce248857a5e884ed6597536811c1f637629428249d2798b376b24cb01446d01fcce7aa5cea484d0b87c324aa62c45ffe8763570a62819eb8caf7bd94a464da0a4c0d3267ae8963cf52046a5908d05b5da44c50082c6a20db6c6972c10b2903d727cc64a5439b6db4d2fa6045e03e6b3a84a5a572744d4dbc389bcc69caf9f15635bb70b0aa0502e77a4bae95341c835cf26752660a6a3a854d64828af12dda948b5652752d60a653b620ba668eaf6f1a25b1aa8740544946ca5f419f8b9285f4ef7e4d221ad91d06eea61ce5d7eb0683ed45dc7eac74de6ca76a63b833e72e9c10f6f51a44b307b4868f1abaf8fd2a698f09ff533c8367c9bb2bb3e2a0622c2e40e7c734efc3cd8c108e31dbdfc29cfdec88b50c0814b2df90864013f82c6a1d1e5c50be4ff2e2a88edeb40e7e4d9ee09b6f5d2df008927ba72845090be0b426f6c7e512d8bf51b24cbc79b78c6565d58c10d0ffcb17d8c3320019d84610d4b8a87bf0bc22ba9aa032e893b91c045e812ae2b2c1a44e98451dc0360bf9c074559d2fc368660ae3a1e729228ad1d93ce136fe571c3d8bc0b160605096bee9e3349781032a07e8728b5ec62abc5cc7e15d3aa42e88ee03ff46569c730364f898b64371a2d50622846b970d889c46640aab0ab4c37db8bdf821ab713e913a4c906801e26472cc9960167bcfe4ae507bd4d9ca3652963715d0ed10a42333eabb75afad1cfc01f9c3d0c8b6e2c81dc78a1049c9d3e3fd1c3afbae983bbfa5140d9f593e4dae24c629da39679eb56fe645645dcb5901d9a8af6aa2e2013b09b280d6a68b038f59b9eacdb53361521313113d2baa3af37f9cceff6af306c3b3eb42f58ef6b347dd4c37a71c330ba9940089927c9e0d92b1134053078c1d0a2e5efa4d51863670698dd5b9dd9582728d0efd78dc3d0ca71fb686cb49575dde8b1740e796af477756929eb04a993073a211ee8392f595dcf6bc7403cd1ca1cd925b2186b136061be22300dcdbb980e71f7794f8b7c3aa3e445ab0809e6e08da60339c88c18577719cd97cd03f736400073258d0d009704b5a2a37ba19f4753e85122790cc5e04813d792855501ed26f9e285a8b9297b3939779d96ead891043bd672afc0e09f76865642ea246a64205d8e9ecd2c27761eb3053b84b85eac321c7c3823412f8011a09724befc8df325a1d4a14ec579c0b2ae17fcde2517ebdfafc5c00c45172b69e8da65152ab45a28e55270efa4442677ba0d563f1a832f3d8a91ae84279ec0ef4d3dba5ed7dc0991536fcc8109cc8d03fc57b9af6b7fc9ac64aff731185a5e671b790c16e42e79e91301b6517f0c1c47c3011e51943bdaef12dbd4de24f8f7dc3c0c5b3dce2d83fc18f61bb7a203a65dd67f48c612ac66fe0217d171557b6f76f0f039cb643678d7b95f3d5aff885f942bf472b39ef2ddfb52663e6e0bf2adef2bb6133620bce9ebcab1a71864d756ae5f3ad3148f47245865329c24ee7e39c6434b940ea78980ac2faae824b826bc703db25629871adacbb613d2804073701b355df210de4aa6f37f68dafbb9fb5c12406de560c57b4648a902989ddb840c3694340489bc09dee72b37fd2c566702fe77e53f82597268075d2b5c9586310f90a40f1ba253fb9abc11a957b1d09748a62fc90071d943f57e3761ac0cfd87ba0f707c891fce4e950c445796b9d7106721734ee9845a9ba04c2c1d1bc82b34017e870ee7c7db5f78adb9c68197a46882770284192c60acfe63b2312fd723880a2f44fe03ab2c6228ba4858030440fec10d1960d30a0757a207c01bf380dcbb1ea2de8bf233f5b098785b4e20fbb288a3839e7e083026ae61a8346aa15a43bdf7ac563739fa1db64374a73b7486f70cfcc723fb3eef3e9b0fe0a2455b1ba7a5d44c6190cacbe48bc59d06e722135d2579ed39bd8a847f6463c7cbffa1d1f7b3b1b5da28e5cc101a42dc4dddd16672141a58d0fc73de4434c06f2b793ddd44c5037b1fb505449f783f96c125855f8e7e57b8f8eb90e5ae340d54eb8ad69cfba28b44c41ca4fe9a5268789c95f405715bbddf4e200ccc9d432e2608766af7cf5131215b8dd99f57184a23cc803ef1fb7be2f07b0a6011bc24eae1648968f1f1436b6d3306195a23e589c099b0aab9e25c1f6cda4e0878259907ac3db385efa76d6684e03dd38735a0bcbe087af74224ed55b2f40b40e5902a8d073987264495417d4ef234a8bf71a70083c05a27c1f0560afa0c8159b41e668f851c5205e0dfae2090016e12cdbc1932e4b488daa218a91e16659bf03a088b7831a8fc2fca58e22fc6cbce2cd4385a9a130bccd188fa78f0a6727f7745f66fec5a066ab643c5a4106234ba2b47fd5b1c44d7422963a183ae2865f7eed0858a35263fbdbadfde29662f5dafd3a043a0a829feb1824c61c3e479d40ecc129b0d58830449365256691b01662e14cbc5f83c62aa3a97cd56a21bdf252cb190a505205db47a50cd8776175211366eda632f4027971fc8510e007e951dfe86eb32c682dfe97e997cdd37699b0649eb2c51c82ac249593e1f5a23a15a807691347fe9ca5d2af9fedcba855e7874325445bc4ffbd75dc2c607d9be2b035235ca9a413cfdb12a97b6df1e82a904c3115e279e3d4300e74808b8a6dfbcb4e40c4a86084967beff82967cf680da8cd5122dce112db89a62ea51a2f5f3f9cabed33dd0a3bf5fb13277d9e54d708a8dca8301930a27c4bda574a7ebdd4afff48ad71e6c4911a10bbb024cd87d8e6ebb50ae6925cd72b8104642758ab4c69f0d8b2d5b8287b1c37d389c01e12cd2931f98065d5882ffa362c0ffa004405a512c3cf691a7f710d2d33ee60b49910d41e322698831e7bb0fd00bd2bff2ab6252bb5ae2d2746a6c377de740623ecb865bcf0b925d23def4969e72bbf95ae07d0a5c3c043d0072cfbdb599782f2f81ff2f5716f850b7c861d9615cd7734eab1da0f1a7e355880143ae50f1f2d209cc24d1ad8b85d0df24a529fbf534402b96dd59a3bdcefd614bd0264c52a3f9c383e1c5ff310c0c89a637425544dd65b7821c19dd31b93b699c36dea1dbe48cc2277f55c9a05acc301ff21cfc8d4f84d9af396121650b338695d3a4f300d2207db31f08d9204ab974175d0c4f6b2a81b082de716b04131f0c90ac12e2bf6ed1b18a99fd308ad4472523b9b32077e28bb5415ac6d488f6544a5e0f966095b3fc8a1eaf8f299a78195a881e7cbef894b58bf3208fb8f2df2f18de2f49a564d3742fb04a411eb46b1d622986843ffbbfad005986a4ce2a830871627b8b2033e7eb3dd4ff43cd2722c1f4971bad379938636072a7f0d76cadde877c074584ba34eb6825922e50ea0deeddade58b945f9b151360764901d8355cd87a3687ca6c663ddbe42695f92d6f3d2ad6133b6a7a8811cdc7ad84c973d6c41ff0691d1d0ac832dec935862580829f3dba67e8e0f43c4442a267d5b6efab42411f5854ddd49879da4d4028acf3ae28a420cae8cf460f7ad1d49c8fb6ad7cda9500975ad5a73389b4c70b0d8d144586550c6b0fbc131a6ee3055040e93e41ed8e79436ee874219866db1652f2d23e6652481a7aed37c9ed0de338a99ba68510d1ea3e5d598d82c34e0ddd9d8bb25bc00fc964879821561d2f4ea6b48a4f7a7772e9838680ab7256ec7bd74ff0c7705c0f13512b5401403a8b588efe9b1fb499a6e641573071ef2705a1787339dc0dac20b0f3bc0c6664db8cb818ded249587cdc4858105dd227b6a7fe939ea9eed32389a680b7b4f89489b0beba0eaeef014bd6e511bf07e708f01366f9ffa524e61e7e5ade9cae47a8aa206399b1b12793ee81740bf4c1ce45eced135e822f19d96aa2ed6ee17bc3e8d4f6d6f58de918021234036d9f4c377a0de04d0fd7f20ad48edf93c48d0a27c0cd741ea2335f34c0715f2022707192d7830baefab1700b35a32b1c505e57a12e9a7da2a19464d9f1ab9c98e5e6817ea763ac0f00f52bf865e909064344bc7a859dcb452cfdbe91ed2e04a753f3fe8799a65431e3e7bc6434d2fe5664e7b489c3fc91636a9e3754794ad87021577c623088c183deb436f1aa4cd9b141cf3a8ce4f758230b7efc1bc4b1717cf923df3895881d724703f4d4fe83c1f8518b439305f1af824d3b61226dd6a5b744387bac2af88c571ac6506ab33e186c14fc2be148ba80854829101f3b1c61813768b87dd88da8f992493bbdc9037158e74a84ba5253fb8f133ffecabd59f5ba6b44309461024d6ec360801919d4a06759df12f0147b830a5a623f9af753baf5c52f066b72405854f6ae9663f1e3daeecb1b0f3dfa31d445c9a41a082ed37a4718e9484b19a9300b2a8bd91f0edc4e7b211f963c6d22dbf1c7744d30aec03a7411d7657a22ad71e95aef2e27efaaad2b76965af2079d98bbd3c3baa65a8612692a6a24a35864cf2221856b113cc4de231fb9292d3f1caa3b1e2d8a42e8fea0948ed67b37a6d6464a63b9e11e36c1d3cb5d2a19416dfd8d24e4af07a5f4b897806e2d755d94003a06b70e22e68642166688eb653a9c194493a09fd7c2990fdee6fd74af9fb78024c53781f33a4df7145b05b7ce1b51fbfffe49c9f846a935ca6036cdb0c2da2ad95a281b4bf210ebd6cedc59e2ff2fdd1e6410b16759fba8b4ad182e95bd2f4460bda9de5f5be31c4ba24c94f8cd26d73ec1f90ca4b7696c6007dd198d2fa6880469d995c0f80ddde48ad5cc32edfbb05cdd1b9c4c061eb1ebe4d1f4e52302f0467f5d8a286ec6573a93d53b4d37e5919b60d433277d02ff6ed3f4e3696ffccef5c783aaacfb8938276f2fede69c8f5f6b82e0be7bde99a866856acc027e8b752031f0b47a0be3f1b30288182ce2d59160d42c9d8dff19858b9a3d81f63a62db10ad4c3b1c8859de56a420fe7991180a8228a79a004b83cceb5c5bcc98b093585b305a1059cdf9f994ebabed4fb99200e856110fda0af0f9a63cdb8fbf0c726ba58c423c2e8561184640e9c18a85240608da7b050779774432fcd24332203da31ca37334c8176b009b66de903d36fbee8e4207f2128d0aaa77287b8b4336e943f7775e46c5428de1d3b3863ea3dc4bfa4d7752f9952c462744bf73e0513482a2d6901e6ce15af32ca98ae51a653bcb9c876b892074504beadc1ad3872eb9b4eb60d842b8176fc9bac2f6b001555f071398b9cc25c3df7872b3e3db58a9a79f08bd17ebd7bed657e777a7eed98951fa81258cbffae39446e19512db99f3418a6d28a09801310faae6fbc48a394c7a648232dfdfcb858540277c830fb49991493a3b3e25a857af804eeff6ab9f158c3f56dc9c21b59ca9057991698a0e3173eeb8a745c6c72482eaee16469ea9edf356ea78d281311503e24a5083ae60d24a32f087ff0d75d1d39684cbfd8840b9615d8bc7e9d93874d186518cd4c50281ad08712b884502ebdf23ec28531c0ade7e63e4b18c8be05690da6424ae910dd13722590b2aab5b3348776ed0fa2a67d0d47a426ef32b5fabbbf3cc5c432d296cccf74dff963fa1a92f7d50c257a5679babedad323fb0e7793aaf31ad65cf60496caf8502c3513792d0b9d70da095722d88d020ea5eacfb3c00fdf0cb309ad975c5915a7e591d84781f10efec10d9efd5282e84542a84a87790e573ac2baf209bcafb79c79eba1e09216a1b06802ac12f72bb71b8ee771f3c8855c99824dacd42383bf5d7eecdc04ebeb8b1425f9d6705cff62e590c249978fa400f1c1be95b70b20490a27ab0b581ea8b1cb35c874a7e339fa304ba7863b1449c15b23aea83538417c386edc63e3e53e8d0b30b0164cc29889390883ea4724922ec9f55bf4150fdb4f6f1052c093c713221ebed071791f35977380159c4bc443987e5a1b9ee3fb4cc7ac564db5b64e29b3e1ad06e14a40174d05cc95877970e1f392bb72e66ee4aa89e0b0705f81d4ce5e464f0da661c4524d492513d326ed9fa66f92649c48ad10586e205af48dd80e9ad222fd3062f2bdd14f7b3b944da79060577e9a5d49ce31d4b172303354e95fed1fd881be7814962957d471400ba5a8c0dbaa6c5f0df7963c744bad92b81c5a425b9c618ecee4a2df5b805ec32406850b6586ff4171c33b4078ff6d717d187388c8b82fcd170aabd3831b63c37d140fd9afc8f19b19807ecff13e959ccaaa02753a81440d07a44b5aae609c5ea0e4613f4ac95482edfe93dc09900738acf211a99c9254d4d8e78406f0cb5b963b8693ab1926e94d987bf1515c99cc729418b7956b614154c6cc8d180e0d43b2a1c4434bd3b9d94308905e217b3c5f79d496ff0d3918fdde93c8c0ad044a6b1f477712a484e26e95f138a1326980f6c62512ab932bc69b06049cb3b57f3142b348625fb80c18745f4aeaf524214c114e23c238127cddeba3612fcc6064dd06c5e2a6f5e29ed249efceb3c54a0ef1ceefcf6909eaf801302ff97ee43447851044f7c3846543c1dd987b754c039085de600de097e38227d4ef9c97cf34f50049cc8d260980555003d61724219a7e0f0fea24280ae18e0038891fa3d18fea1a85bd4e4a86c90480e63ca61dd2209f7eca69411a9deaa7bce853dc045d1edbb2a485096ab46cd40a9318f58d074b3077059bf39bac80ea16e4c32f86a6892eb0a4a02fc083dd1ddcc91313e3dd3161ec6dedb0685af489b4bed5fa92e25b7dc40c4d575797968ad69e73d2516a07d88ae2294f6a15e64ad3c71d22863d5f17fe6296ba6a19709bea98d44a6a9b2f2cf37cb58da183ef0648849d0f06e1a17f2a8f22b7568b2b237d4e3a57bce7e76bc4b884889e90ec2acd1af53071982deb085822501973e2ca1db886168c7ca3947681b74689a24d39a18bdf755ae601c64c64e0ac6208208b8db31b6c96de851e0531662fba375b4775cd29d3159d272e7069ad933543903715717e7fe52ef27069c95e8fe26e5980ab297ec4544cc577567253f517ee58f12bc5513ab585f966e5f27016c53b089fe5716ec4d215f4a6be67cd63d39d63b16d98e1ce67158fd31d896e577e4a1377e3e820d511bbb4f68544bb94c5b019c1e1efc62c8a07cdf904c1354c5dd3a26eb1f8e4fc26f6cc57ba9feee2c0b755439147e18be84541129531f1d04be164fd2610bec1966f85ea7c7676ca7cea97a86d39ffe8b2a12dcb5a493924c7cc1431b541a4b341e33886b45fc4709689dd3a87aa1581b10ae3c4cffae96b68edbc2d857dd3e2604665369093e0182150d59393f8d15989c8e31185a94e2dfdc3aca6e6800363920078b9d97025aec6568d24c4e1a8b810e844bc1da2bdd82f1f64650ed5cbd0f589de01186aa63f780a21afec2041a8b34edb4019a7db3ac0fc81c92477c8c55800fdb48184397eae1860cef9f73d79e8251d0f6e5c87084c291c42a4034d6473858caebfd215403a73e16ab722fb3db490440ef49bdb5ba7e0c2d7077f95d234788b7d7f951c00a5cd7744e7ebc04d3fdd2c149ffcce2ec5f0d9a1c9156db81fdb59e4d5eb2d5c2136876fa75e54c279a4976e8916b6e12f21df4eb16d34c2b679d458713d5d960bac4dd328ce8cfccf89035ece4d55b911e1ab9f72620a23f99e41869cc87414fad5caacb52dc51fef8c0297342e3e5dcd7dbeea9b479b10ef6eaacb10fefae05d39950a08f39491991f0ac3a8a1eb5b26641d98d409c4404635ccba9894d728b395954ff07c397e8b710bfd878b6fa1f92d75a86bc9c773fe3a259a827ec9bf414553b44b387e546fa4be57ba928b04867ea82b36c84fe825f5c0e6e22a1a9a6dc536c34afdbe47e2d96f569d24bebc44ef26c6bdc4cee5a59e4fcba6bc5d5597c8e9de075fd5ce884d4971befa23e6518f0633bf1c2a321f8fc5ad76219bac8c73c6b76de75e2433ed899565ad0d0165b709c0f850bc9ed6e036a26832ea0289a819d66d79cfc81121d4a4ef1cd071593471ce48c4dd79b137e4f5824871ddc581d617875330fdf9b5c4f1f8bba500470ab9531cd0211842bb75a50eefae679b5d3b299c6c414bba1b4ec557046e582a5224592d885f55e49531e3b99d27ef301ed3101a25f0fc7e69e8dee6a0b78a1df44a7c91c76e0dea8a93988aa4e266bd7e2fa36e86bba046da82eb1f16c98a2040b27018613ba0d7750bdca0b39ce357a0b30ecf8aab8966b3471186f34ab071a7d779fa8c7173b0c4d080c9a8391f5830c8524e27f6501fc7af69e0d7cd387618fbf2d6ed8f71533fa985e08ccafa46cadcc043124a4e4105177f44d2a5c332bf64c702c79c86e7ad39a303eb6ff45e77ac820180fc24e1cbffd5f0e97bd4532cd8fa263e15235830f7c394eb7bb49c6d5512db4f04341cea765ef7d68554c62465212fc2eebde15818850cdd7a855f70f6c17b63c225ed869603b8358b0fe09bcce687f1ab4eae5bf5bb9c1434d49974ae328d1a1462105efa212bbfbe35189a3e86ad9997d381e51eeca25048b4916a0ddcad2c129cf8041409fc4ff9d94f124c530aaa31cc766b13d2ea06ce5a314f3f8bb75b2b44d329b27f73c81375aae785322534bbbeca05e3dcc0482fa0e7e67cdf55b8ff129dfeb93c320ff465f6a5681e20d397b4ba2742add426988618c497cbec727e814642066cbbc06067a5aee2a38614ecba6fc6839bebbe77ad1d7bc917cf724d50e8999b31cf55d62155dcf8636cbc7961fbc0b331635df1dad62548dfc42d6f02082ce61e95ca679be7decb95dbfe3b3f649b92ad835c9e79ca988413e279705fecaf80bc96102cc12bd286819308af6bc2de8383a2abac17d6eb60f5ac5325f1016319088ad5d8e215d18d051771ff056cb098d8142839e76e38209d94d220884f9665f3eb68f234888799130b7097ac3172c007f231c03f72af4a78b7c5a1b7fac5b8e16aca674dab044b30e5efa006ab7dd120a626a218866843c5f9b2a254dc6cc02b212b89abd64f29f7e9d71c3c934c8c6454ab0491098dd7176c3219fb24061a9d9f6b062e0982e8947b27217b35a0f3ca09f1cc6b95c0a0d601e0358c11eff4f8c7600a99f165504ab8bca874e979547ebf5c0a8e0ce9aebd975da3a9af1ab67177e9961487e016ee68e020dc9ff6205c2d3dec843cb88f5d4a1f5839b2c99f30011ffdad31a488693ff189ed7e5f51796c7848f90d9974991cfc8be855b8d3d2782aacd282f0e83965c891e38e01579b695bcc4145e2e928eebcc7a45574a2e8cc8898d87d6007f059b18780769eccbc27f52bd2d2704c17c223d221efccfe76b1c72c787009a9b4210f6b894788f88bd2a707c5b30bed4455257356f78e18755a050c4c5b6c08bec3089f475bbae4eaa0d9ca5962339be4044fa3fefefe955106bded56eafbdddb18d7fe073f81497187ef7970d63e23fd0493c21987c39f6b58aa817afd3819eee98d279ab083c7eabafb401116e825ede6f4de684531f79883cd99ffc0a7b06c5e7acdd6aa3ef6d302ca97e455aa91e16fd0e8f4782b9ba044dacf13561fb5deba70dc1382469cdfdb33fbb9a993f05fbfb4ef874e0a14c0ac9b7a440b3623626fa3f3ae10dffe756ae68e01456cafbdc50d283155395b28bc160f0725ccc32b76dd8689f3bc962f3d0476534b557da70a1687c50280777ecc75f83436f7cafd013a9089d601a05ddf4c54e93041e59dc3ca37594826535acb06898808d0cab27cb34617d1c5eb803bb43420abe74c723adc08ca366705c844d6e52115e5fdb7d523bfa0d2bf11cfcd9305fc301797ce83d43835b3e3c4c93db1b5068d53e38f2090b6151fdfa0b5a6dff5a10b86c1ad85eeb27f3b07fdd1de97eb9df1c8a44f83d9056cdbe735503d0942dbf684f8df4d57e4cfba908c4aeeea3b333defc420752d681daa646ff4117a6a975135c586b8d3ce0e6eb107101bdeaa789b0523c14ccf4ea5577f8ea620d06068de242d9a6604e36ed873f4f416f92900b2a776031f157606979234a22346f4031471d46804c279e0c75c5c3a81b169c37805054bedb1d045ce8615d6a5f1a8c3fdd3750fe04b799c6978ba1aa167db9da20d771324a727ebf24ba764e5c03026ac3c4e02d042d09d6e454142f04f5fcf954c666869777e857602cf248662f04d35d56b8969aaf5224030b0527513417cf4816c6dbb74e42443a54c1f1481558045982a3f876a8a2f4490745eee30f52db52e40d8de43dddec7462e1556fc46a83fd88a951f0b8e0a32599e70cb68804ecb9dae701deff34b1533e4f86f0aa3d4ed59784e6ba455be76f24404f9bd91ae5f29129554225d080a89a76fd56a92b4c1e48a015c3d999ba9e6548b7ad51e0399be39b8536ac6388f1cc5540c157321a56a439b621279b4105d63e8d4bec164f4e194de8a9191fee4b306363f0d40935a294bda857e515f358f10f6486f2ecd2db6dd210974c404fff1e4d89f48a7a96d67c4d2c88091b988acb6ffdd79d59eb8c7682fcbe4e6f7f07f64b099cb71a5b3ae4e6ce1178d2018de9e463cce301cc89eb8c9597ee1086b478169d46b7ded5ba6fae23eee71b7515cba7f578846efe759f145b878b16c46d0d26106e04a8c90ee0b4560101ae5d8c8e952e91aa5a324d34e0da3de6edd2113a52c97070eaea69f11f77aa775d66a3e31dbbb5e7b27c411ce1e1ebcb3180e53190f12944127df4e903171f2a9f8d2c8d32dc45076508e0ad18a5320ec5d4ad00286687efaedb6ba327e18f7d080ef3635ca0c89bd57a5f0a1f6c10c78f210661bbe04f29a9ac780383ed0a57ae3c5788d2c70b4be57ee98611dbbabd1a07365dc1bac970feb377fa4256869ad5da7fbec40239b77d009b21a4b32681b34483fc0b4316a7543bcc37eb9565d296d65b6cde60f7e9527dcd269e2dac092ff24cff1d2f87ee129272a58d73fa41e5796d77072ffd40f23a6a168d896f065576d597675476c07c5890c202ecb985ca1e947952e95b7db72ad95503735c653146e8eafcf6837a667e4a646c2cad23c968c72a7d6187bf4227515989d80454e148a24abc69ff4f6006710196bb13a32c69e05671a114f3d2886f322ba9deb11b776db1576e982d3a841ec3d5359a5f184b69c231faee2aedcc78b7dd4b9b0446388facfad8f0def1605343c7c1ab29e6775871dff035ddb7b68030045092139010f9c116e8b3d452b93bdff3831e544c92c1e4c44153212a4556d25fc1527e37ec257c56fb744d8679f5e61af74382a4b9256c771ad9e54dc44d558f85d61e54b3f1e409ad22cf172bfcfd25c5d9c354f848a56790bd5da0a4c73f8d1411ddfde9257c58f521459950bb170905b23b97cdea232465c2421fb098a552f43514c2fd896562106436d3e4f52e7ee7dd16c3e5e18de3305a553df5eb1055093305a3ce47426d587408380c920c9ed674a4c44977c1192be3376cab48ff086f1310c850264a6668056cd907ddc2f5a98d75600f87c1f287ec5d534d84323b7d9a3ee90c18e8f43b928d34913f7c3d3ff80e62ade91dfac315e277a600199dc02285d66cf13770fff4c9da947be8f4ce731703ebbcb224b4934385aa8a1d6822db01414e6307621d40ce652ed33568e262404f94870f22712cb397b562b6d4c42d6612cc82e2f02f3bafc0a7db57fb3aa0bd3e0cd595cd3e00d84e37592356ec0a9bd414d2000f1a0468c3b36d510ac4cbc51b9714a5dd90bb61e7f1e335e347c4c146e7ec68462d0f62074cf068abbf743520fa2a58d34b685829eadc83079adf841d0c22ba17a13771ce6b60101f91fb38eb2864191d66921ca768ee3cd304e4a8c071cc82e955ea0c2e7e2fa3ed1880daf358642ef238292f99e921ff9dfc8e5feb972400ec19aa72c72321831835b1dc96fda32e37466bc1a92da9c771ff7d59b0ff312d040089c3ba65dbf82a28d22b6fa34c8ec96944eac334e7d701d703b413779c25e0a715f164376a2cb9697985fb7730960487bfd4744a568b51c2727ffe00d5315482b825a30f8ab551b7b8c514865c6fbc1240c74eeff58d7f159ba59c1722975daebaceaf7692c21c1193d76959d939827b1704b3d0f327286cfe59c12bf9f3ed3688230478deb776adbffdb485abc5618a11d07a0cde427576662f8100ce107f7cb22bb721fff11cea4a3cb5177dc4d25f0397a6dc7215af8f2bc937e31de8d44f5ba5eec298989fa1dcc42627314a552ff51425af3dbcf8d6e8f2b1f926de3668dc95cd2e2bf9ccc48ff1a73840927984fcbc3051b1e1a507541123df8e75241e803a8601de18779675fc33fbc23d9640c250a6ed3f4b90e15ea9f2582d43e6bb7040a7a4af39208334b78c63cbcd91566cf4a78056fbfaaeb2c36a99e758eae8c2ecc240976c9d5615e51c97c2dcd81bca3186b06f7d799952cfe9c19493b8b2c6c880a4764b40f7e8c53519cf76d7099474d75408688656cec6f5938cd64b2b0b8f1f9f029d9390c50f229c96a68207b044d246b759e2b95bb833de61ce88c7a99b764336fb2ad0128105fb38986c06ede90ed53ebb71c5f832729f134d9b1f5f322e04adbd1148bdd9bc7111655f57af351a9362c23fff112330156f463722ae9ada8e430dcef224c5d7836f9d657da6dc813a64b3aad4cc29f2f9d298b5020a1a3190f661b12f8a5614db37a90f50593af4b0403cf9493063920473ff4821030c837ba997423a46ebc650ef72fcd8fb9a7558bae3035afd154c648596e7468ff2327c808aa1f32a6ffa386085e55cd2f9e9be5b2d4a73ad7631498f52b429c6451b3ad64f3d674dee22ee853cbf5515d9a6756cdaf11c2105385c861b641c94f16c9a22d216aad340ef2706b668a39a92e6a7210dd33511bc996b7977a77283ca7fc62f2b1d48169e31ec579c0e542ef5238688f45de5148434849536f1e51ccab027e977a5f43916ca4f3a60b4aba8d9dc9d8f99977ba7bf79f3473bc254bbc00343808c52b85164dbd8a69caf23356a7fa3faa15798c312925e0f67baf71133e11fbf212ab0209af62bc353b8916ebe50aede830f0a24451674e2ba59125c03bbb55730427d6f2abd4923cc8b0f5536f1e8b659efed05011771ad9f2d84f072a788dcb3c3bffad9d14352d477cbcd2e8bd3929ae5950ca6c6884851d41b4715632be8f815639f4186b3b2aa1f5a7435a54358376cb7f242bd68d1813c0132161f88ae4ba3c22a310e413658f981192beb30fb2f1b1f1a1975b267aedfa1eb7797b5eb3ed85b0eec5cd761175d6090cf18d784b957dcaa70c1b68f849ca383836913bf6c21cfafbb63aeba20393c29e06fc95a4c6346faed939e4884bc00894b9b61d7db1c04a9eb2825b8642a7c94539fcecbcf5f183291c5fff36029dddbd2a86e9ce69868a3095c0b9c9c76013374becd96d16603a01153b5e512ad8df7ef044ed07b655f4c4f753b4636bffd495ae1099e0a544f0765dfc6128361c146cc157f1d799681c25485e7a0d83362fb6cd11df8c68f11d8f1fd9b46f5dc72daa5ac7d80121d0465c554990e0c0b0a83b877b014293d2945a1f8ae694fd6d31699bc4d1fef4f00dc6593eb42a2389789c503daffc1fe40db9f3cd189dee54e741d62016a784ff58dbf0add22900d2a0d3782d398ba539086f46e2bb5b90f51ddf64d03b024389a23734c80aa21c0fd94bb4826a422777f7a854105b143c81bc9ced6e15a144ef8e907007c37fe8b8484d7258f144f856c245321e79d9765aa50656ba22234de2d29980a6cdf770bb11787b2f571ffc26918283da7c3ab9956861101591c930ec690fe1229dd753f8aa15006c89ba4446ece17996ad12e17fc6a64d04cc3948e71c60fec088f703c40a4b8cd7f1e64bae2a68e2a63f8b6a1502a0a0b39dd1968358b211062101fb67a1754f1c1f02cd663087fce370a25d8a0308ca6fdf2e2ec5533d204094fb089e233dc34afd78910d7d53a22bb5c975c54adfb82bbacc4b82863055fc2250ce19252406579e2859538adc03def26c69e0b15b45fc76d8a7e86fa3fb8ea43891fe82a12c9992df657f7ac2d863cf745faaff1dd09ddf9f6ef6ac47d38d1bca0b649e0c634ed18117e9166374a10b1691264a97baec2e3b68ff5ed757545a0d84d966e6f915319174811e389a86f07fce0a29c8a06b9154e42ce279d882b7d77bdd34495d73701c7147e4404984cb3b1d41b8c357c0352f1af6d398e97ad2558a6574898750ce5644d03d91f60f7b4fef6a6aa0f735ed4fcfaf69dfd0e4677a7d591f51b677325a23c8c15fd8200b758256abc0a2385c6941fa165e082a36c3b51508c00819e6d5456a562df4b561f9ce8d529d4fdcba6d824f840cdbfcf105cbecf35a344adcab2f0a10e09b4efb130ecae57b955725e8af79d5236acd4a37eda085d3ad838abed88c5febe672b7c9477babba5f827cffb017400b2053ff5d20ecf7f2791f517172e990df7d28b5ac88428d9c765cd6c4701ef2d0b20b022467faa7315ade739d38b199fabf7e3f0b5876cabeff877eafdc5548695db2adb72bed6fc52f64a2fdf1843794e306ca5fc7a37aa273ca866849d7542ee4cd09efba59d1303fbb105282985e7f3354fd13fc05e0f3088de7474295b5594e221fdf71c6ef9c75cd1fbf3636f8baf481d3e864118a794160302532d2ba72fb3d5c5952305b88f0eb9528433df10bd1abc495e4ed47d51774c85dc6a5ddeae0ec09010f8aaa94cf49678b3d9e985adc7303711bf3ea804820bf32677a866249c3cfea4336e67cc77f0e9842de4ded6b7dc932a232d9b0535d2ce0a2912350649948f87c8ec27e0409750fd5977fdafff3b32578ed6f06214b2110f37e8f035209a761df5faac0a9c86ba477f7f94b700330561f1a363ca1aa288bd6a7c73f1df2691fc869997ea280b363773f856d695cf792e1e3de3565625748d3c9f2e440f8202675e0c607895895e45a45d42002b59c5081291c1ee5fbec3e9774b764ed0141a6dbee1fd71e5d0bc4f0f2c2d0e24728c229fc407c1d25849b188ae2fa3eb808c2212e925030fe782c06c5e4fd024dc4b8c924b46b3b32d33a48c45de4fa0d756bce3326edc591f36b644f635e7d8b791c259b325f4c97fc8ba32d760e37b2455ca6ffe9df33cd1adbd2b52cab5bc4fb0fd111e219496f6f3cb5a572f884a0115a598cab7df04e81968031727484438611ff6733c85ef8574f5e5f7ac1d5906b38974783f11815a5cc679176972653c8aa733495620c13a0829363cb9c5283164be08f2e08330578a2f2b7ac2f17c7e1814543f6c385c87f23150d4126d23b4a3a693b3a1c0a6778f06717261d98736fdd0913181ed1c09db4898c2a5168bf076bb611fd6c7c67595a6c3c517ae6b0a7ede356b1b53ec9bf074e6471ebcbdb7d6d2750626aad943b833243089bc1dc866c847260102e560bad3fec0feff19d7d23872784bf58647560cb5eef6ed4d80b6787036efe8efcd5d9c0d1d71b4cdafe90d93b1626f1aeebec655223618c888441c6575f2a30f70529379188938da7b4880c25a04ccd2efabe33f9370f7257ea4824f05818b8a302d750013672b5e0b1a6e4f28759e404ec4216c1867189b04e63140651bf1802355b6ec8fe9c64a41d4b7ca1ecd48235049c2e2ccd4e988657b196031226693d1881a8e1124131d6f786eea85003f029166ee84e1b1573cdcb32b5050dae531bda620d1d0abdbf9eed2c547014fb322bae111e52127299fe2fc0965ffcf5b28b8be7d89f8aeee5e63d780dd4c0fe05ecc9f482f572447d9772eb1718567e8a20e1a69f5e3f1e03deadfb6ea621e68d01212a9709fcc0c799a899796a8e79439083549da61e0404798dca4c2b30a09a60fd6805f498e4d108da671d442a72f935f0149a97009e3feecb0d8b9acd170de7a3ff722ee08d4e6fde2c78c9a1b0ad8ce95d24a585d276371c77cfa04d057ed54c7a77c7e1d7d559492a5bcf128b6bb877442f164d1ac6952944abded076684fac00a8de45909ad966be7461c308c3ff785a7f877ba9450adcc3196a6f19eadc0aac602bbbe2130348a9713e7483824cc27db26891d369ddac8ffb4a338da2eaed573c76b593ce70df367857833043accf3a197b91a3f21a0beb4afce24d5a4750aff91d7c64eabe2de0ce54debb2fd104a50a5977e25e0fd0fa21f19bfae0a86a78e292887a010e7e356010c55e67927dc6d5edfd0564d1c3c64f0d3d0602250c61a8db34e45885b22376195c1c83696e09f6f6b5c1e1b531372529a11a86bb82cd1011ba9442cba0e676310f0e0ef3143dba896c3425d78c805791a9b8f6c9136cb7e17e718a8f7e3aa6cfc3e934743818208ee1eb149624af518718df4093048fa50eb64aa1005e9eed9fdb2b8c503a5b403ece380c16e94413be3bc262c3328f7aed4cd9f955bab976fe068f8f93b6f349ab3b8dc1bc3f1bc6df66de07e33cb967e7291cb5471437737fe7bb686ab4c3b43829df90b6e7fa89073eef55e33a8750fabaae4c929ea5c568825a9ea866ee061d8349e871ee9b9047d09534990629f639d4f26278fa335f3583ef87427ccc41e468656221b4ff882382b7083c149d3347de27423d04560e144e2fc6d300eacdefc3154f3c00578514c8df33e9dadbf5e054c9dcacafa72a68e2b08a19cdaf87f02dbf08ff25e6fa06b12ea71fcdd7c95195ce5290f49e02478d2a2d76879a606e272679e8389937da409e8042e15390fbfca5183ccbde2ffc6ba267703421e3479e6d9e3a513aade59aa8f81baad225d45705de04393dff85be3c963157adc928c4efb57ce07bbe70fc98dd56ff1f93e59ee93bc26ccee9150a928207a246c31735ebeffa15494e36871179023637a9cd06600252eb86b4940bb795e536d472ea6d3e3442530e2ee9db8f0315e987c13c5ef2b716cc462c1a7a60c7e17715b0cd92ab8da9b0ebabac84fab8e651dbb979bcd07d7205609c7799cc43b467b413c0855e46c49103ee9a2f8138b1305c29dd7f121551c9e90daf9c5c8d3d9a13e2174daf9def49577c3eb959191745833a569ca8329ef1721676d807d2feb4b97af8c95a44c9d0e356190724859b56ea8be539dba8cc7ce57cb8c512489d7f7c8ce0beab79b686f03920b2fe3725cd47f820a36c2e4f1aad4314d4b3a86584cd701f264eb95c09c23e3b81967d83d9142cb183bbb421c772b75b0c904ac240ca3a57d8c666261823dbc7b3baa1e32da07dd4767e4f3e7afff9168339f1c9e5f1380183c9c8c488755e151c40d25b468f92dde5f2a928e11721fe9a1922ada8a2e2e8eee6f3a94b3d6fe9093d9f624110fcb03699e6632c6369821771b24ba3c06cab964df98c8057b8fb04e81d54483e19474ad88ffaebae2d44ff574d9f44288b3f8d96cbe89a4fe97957a331f1877a3d304b22f1f8fb214b9c4ee7e34d51ce366bb4d8d07b9684698468ffa5deb8bb4e0ccc74c9f080305b147af6541974afaa4b437c06ca3b10a2aee6bd93223816ce12364ec976f462b4eac0161d6f5ef12bce9c88f09c74a28e82c21f02abaffe82898772b7a4414273914fb68adc78d79b3876664b7bb0c259fcf807d5c74e09d05162196996f1fae4303295c592236d44a14d509c365929250d2ebddfab92270e5b6a5ff3ee67898d2117f6f3e88607cb7330eb49625723c319175463f09ea6292cf4149d502f81ab73e134ebd8f300b6efd1c1dbd4a6311278b50c57102670225f034421e755c18b690bad2480d44f7da9f19b5c28fb56e0f8602c98ede14fff209907c4dfd9a737f9d81923a22cdbaf0812eca03e74c5b759a21e864b9c3f3ab1528e94e92596084e5ada0f23aaae51c77ecd5fb762debad0dde69e51c7fba9e85762f8ba9dd873473ec31a8f45703977a34ca27c1cb6c185cd2c670da66273af9950458b3a43f2f57468129472b9ddfbb1f30938e18d3f14cc6d48ed04609b836089c09b37153f21a208be82e035b50a99d5d4d9cef51210ef1c1746826768f62ad4d2a8cef549c35f84bdd2caa906b04a915213e688477cf1bba1d066bfe02edcf0a27a041c208c500b179cd941c8cd5207b3dd1e75fc50ee3601270e1e59633a80905985f3c05d0269251f92cef794bdbbb4f18c4117faea0c624cdf5b3564bd0d3b9191d04acea01b4d3d57cda70e4e1ebe50948426da310fa523d53bb313ad14daf5f9842ca8779eb9fcf960d79504335abc2d7cdcc47cc185f3968cd5e48f1aac592ce8106b45926706da9b0d59f554e63d3bbad582efa4ebe920244c63e9382c1750a409c95dadeb2996bd9ade6e0d7c9dec56f450e2f7aa94fc7783ab48b08e8b72da16299c9db9d84c46547c7039c7ec335b745e7cb4406a09d4dcefa65ebe97c36f8925264629a96c019bde70f785fc495502521ed80442d5716ef41533b620e215e60cfe021cd5146a7c847417e5e5424989c39c3de5d984f29095bef89a8f3860df6165dceebc050bcb417407c983b26f21bf4a94fa4d4cfded3e2f136b506978b55a0fd4595e21bc1bbd137658f360748546d43d30a47704ba72fa057356cb43ca6123b6f7e27bdfaff3a725cb1a0f27b8cce81cc74603734146a5e1f695f60b81970f187513fcff76b48da9941e4bd010bbb59eb27fc4c4f7e3e5efa98760fc904c2b6fd0de8b737c23d00780ea549cb8ee3089aeff214bc50732399fa80807ca882969a8d5d8e247381f7936ae12cebf38335873595ca066859dbd56fa3402ec865bf050afa4d8f13d16c1f85d15ac55db62339e87660b4fc0087b6c823e119833c3854ac5a5baef53d2d8072ead595a11eec6b8644e56a5349f9a37c96daa94b3f5dac297f7cde4eed8e5561c0e0e768715894c3135d9a0eea55f595be7cb94ddcdd5f8451b2918554eb7a566845b1ddd86361411d8bbc20f9ab1d44ba83173baee67b91788b589237c43100fb9786e27878f2d8ca8af254c9f5bc8ae929e5a0a16e4adf6cba202c9a7df745f06be9f6fed9fa41075a464713e5b4f1b8a8aa4be3ebbdff03bede709392cd060dcc8cb30ed1bd16ba13967d973d85b32a0c74f7f93cba8b834da077c30efd26235f743ddb09bc552efedb8f80da19a1251f0d02631ab4223eb8b150eee5683771a2d3658c4bf7fded64feed25b418ee0cfb0a642b9984aaccc0e087d475fb0f737165f7b4f889f0a6fb001812b141a47633d8c95b4fbdaf06f821cddee525bfe8155b69320692b36e61a7fb218e4a6f3d1875c97c59e4e331540cd1629a300e9e8547edf86e44da78a92cd282bf8e315df05b9f2aa0d5ddab620aa64d48fd6dd1da7e515fdb6080463d9e138c5a5e8e2d61a4f0412c102efa944a0d7be59ad40672d74dea3dd90db56412d4ce2c123142b762760390293a1cefee9d14cf9193e8573d2558c01661ae749a960a58b17671ff9c24d63b064c050c5918a6f93f945a6f3158dd2113f96760c778837ea591d86f5e8451852c645f8492d8feb2629896b34a1088816958722b9a768f617b27b8cd7f278391c49c8091c383fef2b8281fdf2d2406e86ec0a2ba669baf214764a978c1147e3d8fd08b7753f4df91fca6830cb332181a9fc9eebb303ccbe7a7b562f3981c91fd8f1671f17e3410f3848bdb80f8e8d51d27ba76307bfff8c8b08f2fd0fe0496954156be05089f743b321c36fc45fd72f78a6ef4e5d1d499e963373d95be5c5fcf4b73f36a0861e8e877202a8ec6248267c8e20ce7780b4000c08b0e10e8671fc57f32fac7e63b9ee6255c4919f7c9ec322df4b9f68b5dd9dd99989ac682c3262ceae305d47dda2e73ab399af943f88b58c0964e6b9ac7699ebe85d82850824c2b36255c453390242e4bfd35a1a532b33b8bcc385b706c4ffe91792aae8a715dd0b655b1db283db246d7e0b58a87ba0375523a4065b0121c48d0210c853f2070350541e55175d7e7b33859a7b80b6738cf6a0a8119cc37b0f27b1c6457d62b2459628228aee0d15acf17e215e0fd626a469af527727f8d3de2e8024d377d1ff7a7c8e0b1da8ae1a9e3b930121ff50ac443f0c8bc8be27c0f1fd13a0f0dc738e0f81722551aa57de1026f6e4422e82ee01cf9d1f7fc249e908035a318c0cb831a9b30edd7c85750342125c3284fc6b49883f563eb6a88f8e7412ead7ad138d6f99e75f45ca4d9002e4d7f39ddb9f2d0eb75de2fb72628600f3a81311340c3a0220d2a294873c0fa764c7d6967a73bd018b4c21d07cf14625df3bc465a00756597dbe5ca407fbc390833e93d5e17227dbd8573919c6b095f5aef03cdcf3d6a017d5c17e73123953b138c993d5055383c9d7739d9464117effc1553f829b417592e09865a2e570e2d2ea08aa5583eb11ea7b337ee719ce2ee57ff6f1ea6c7d4d547199d3f9c4facc0ff6dbf1d8e3e175d4a03ff01a6cd798dbc6e43ea9b2f95a9ec36185e11ad28457827f9626f2c8c70f049989194e7a992caa91d7d748cf82e0a02fade828ae2defa9a5c0c91e265a980f2f5633588346b5808f5a91c9672842520974414850f3ecefb91991f40e5e607495cb9e9060496843175179c92d101f63229b41ba2996bc06cedd109d503dcb94e2d2f0c38314cb3b6bdb3424584c8433267be308bb2b9ee6e86a1f75536b32bf0017a76d8724760271eceb582296b65a52ea45f74e9a2534b29957b12ca26138fc84a330d86c99cd1ce6cbf603aea9d98a052902f3e9b9f6b3f0991290fd19161853a7dfe485730f88418519b95d891dd2737570cf1e159facf087aa93298fe9b3f2db151731dc64cdaecef52d7f35d2ce7eb3f340f3ca5dab4d08b077e7eb394c084d5f164dbcd303c2e0759ffbbf84494692d85572bbc9f0e5c863e47ecbce1fe46bf117639159f3d3f8e5820eed15cc6763c790259fd6cdacb504504ebdca43fd8af33c8ceec95c36d6b00638bbfcccae9c141343831bfb8c83d47e91c89530a06357418cf6fcee3c402c3e33d75810c559a1900b4569227b292c4fa1e49711599041fda4e54d43e57f754af424d52866d64baf511ab1948e62a043647dc361a113027bd488697b19df5d122b385a424cf6efb3f6083b66fb2d367d63f4ef9effd09ca3e5bf6c5aa234675b07dd90a0e7bff79e026d2c6b364ea717fc1e041e170fe2c3f90253f3de50d0550393347bf5dc7b1ae0765ece60cbb61971c3f0491dfb166cf7d9b446418eb1ed490d3622361af4db2ea9843c566f956b36207bd7c8252e6c9963d669604a2973e6b0ad93d5eb775b915ca3dd5d4a5685a965d7b7160190eeaed005112a66986b4b179eed94e68e02d53bd6968b2e73c7903813d42f6773f37be749975ec7ee9de691866566449134d6c6664e543461af263150db5114c6ae0f8160dd0bd607ac68a1c5aff86598d28bd0322cb535355a2a5cceaddc27a58ad40c0d9a2c0017cb1e7dcb00a249ff1cb8016310935258076bbac62e8da465d09308b7f5ea36246d3d901c1236187314d75571baa46d4c8d88c015877df42c3aa58d588b466e98ed42f923d5959b93bc049c7f5a4fad80f22ed6b522ba6319ef08c4bc280720da92a90ad6bd32c023e2bff8fd865afe359ce7d909f319a1faabb86a0ee8f6c9f976f8c922cf5219ca46a061a1d0458f73c5b699f7bf8f429a1a9350b67c576c6e29e37238d39d5d61545124aa6e57520b30205cd291593e9499e2dd89cd670ce21b90f295695fe6d8b964607abd307fae41da59157e4a71bff6a68a493698320e2c4e6eedd4f432a593da887c89d21112ff6a3eee60ea1c26de77656f0abd6da8dcf9bad6b21063c0018fe459608047239726ab974d4e628eff0b8f4d3328ce5e0f13e35107dabf3a4d170f8162df254c708bb583bf5bcc922c2fbe7c031468e4510ca619466f305bfffa7afc4e02f0c7e9c36456d69fc64af137bc9a9932d60d10adf6c54301c44f8c9fe898c3d1b607432a34b026031f8369dbe5586c86b5fd3c787abe388d2e6e73aff05beb64c4265b0798c8e9698d865494addad9e1256145e90cfd3f384304f73f7f4a156c2e6f3a6972d895bf2776a9b01864d48c4cbc5c013ba0fb717fb8cd7a537fedc34aee97da9d542904e9312e7f40580699d3c6770fca4d494f7e7a6f1b809152a53519cdf864f8b2b033d1d204d387075e67d885d52f6530018303e0a1ef4a01ab4c81e96107a0e02f4aabd31793cf7d703965bb2d150274e7f4e618b7daae9013b498d8383df39e36d6efe3bcd40643287f8aff1adace7281db3275e15250783bd486cb89addf138063cfe228013eea72f1aacebf11a73e6b67a0c051b9f81a48d60c592d74e37dcfe033ddd7174d3e414c1b240f020a16a86954cc43489e0f62297a0565a227c22122095ec027b29357d2de3c2b255da9b6d82fab278aaa22aa01b12450bc6ab3a762154fc8d9bf07aac873454eabfed54e4db0f78adf90c949d63a48843cbb5b79bb61ec46e41b07b7f7af44c9f527c1338760c583fab4029de16cab880c02d3f1ad328c8d978db5832cadd51d1aa07c38e9d81f3164a1db78a29c4fb00f5d6c4a9d903d27531c11f7b9c58277663e9f70f74f39bff78d17ff5d64bad29949445b52607fbd0f7eea51f1a0d3d1d53c7b89ddbaaa3f6336b04497f787aff19e795e7a0b9256d3d50c6baf4f60e89c5adc73e87d6790ac002b4e9e87435dd6589b3223b925f03dc22e28d0787ba6a1ce77d90aad467eaa73fc89ffb73700f73115e04216674fffbb8665b495452cfe0978545adc434a87fd73fe0e23292a7a0ea5142faeac3d5ec41c1fc13e3ba7824ace029280d9ba450aead561ee2cb0763623df27d3464fb5633338e087902c2ffd33da8fdf16ed366a2ad1556f0d7878602735c91634c0f0f761aefe6ceb7bbdf00515d590532b8208556d88dfeeba028c54b39a52bce812533a5f8d4e4f111658632b098ea229a4f1ae375d21267f07ac55988140344aafa993c8007e4b35d89c3a0f75d3662aeda91ddf7b9473977121d5314ba36b3a72d1d45452dabecad6012ecd8790abb700d446104efa134a9c05f9d128ff87c299cfd7d5807cc27197157a4751e821d054278e0e856a59ded8442eeb2ce24d5c74b740ca0a748d37d6f4477b0b42e6a0b6b66b499257beb3ea884c1fcfbc1ad7e9d861ea76936373005d15a48d296f27c486d4e22da3a4318bf35ce66e4a11d4f33e0743cd4ce1a0b98e1c9cd6bf47617274af38d1c232d3e8a88df0c7893af71e7ec3d51c9e36005700e60b88bb7701896b90083ef400cf202a1c8e81459d210dd3974ff50d238565e06d5668f9bafd23ed33b2f581885ec97f4037a22c8ec6f59011e8ebb7c425226887b2e39ceaa731e67472bf1787756c3463c5177bbab41fe036e41a698cea00fe678d84c03972f5d5b62d2727c8cd041f280e2f32af7969ccdc899ccce838252884257fb627ef8844fe85fb5b068883fd175820e1dedcc6a3408914a87ab2ed4e28482ad9491855893186cf20d7464edff28f81fd67cdbaa4fe032828e4aa664f773f7eeb4e699ce13b217933d294bc5ff53ccecb1d84defcbf61ff3c85a6d2ddb8499a09dee6f0d60c219649679b9ab09af1e8d7958962173a14c706b78c29b82166402933bbb9f5ade604c513acaa74a55d92fd3bc6863b59453152583894a87fde572a9bacb3d3e8896678eae11f6a7935f500afc0207bb02bf324bdd9f35773b8677731546d66377ca47b9f2d22e50fda1db7e7b419f1886a455a532d58f02124203681a5cca9f8cf68108a72511a110c79beec3cf04f2a74654f8ee28a8f8811d307ec09859623aaa1964ef73a39dcfb5fc714da35c0365e13a0ebae8389db50f759f80ca668f23104912251e55688b7856c19cc0f0f34f915f32271f27a9b05a646e9580d36408786b9dc1c4728284f899b7c49b72c9c45b4d6d278ba2b4abf1d05428defd492e5e325434dd08cda066b8d025bfbfa0e923ead3c7f7141e93d3fea164b53120b1f1b7c4992dee871950e4f4252bc6b7fa782a9e11de2c1acc313f94dad9538b507ef3631614750bcbdbad98e1170ef756957db12988b658bd842033145e3e5f33e68fabd71d480b6879dbbba21a033c239154cc69c20ba968f9a59f39dc332ff0151f8ef18c0ac33fe455078e06b313640192b433e061545b18d0c0d3c8b28b257b864f6c53d15c49c278958e8028c4470460a77bdd95517a9b2bc8d07e88720f371fa4b0aef74e4881c46aa312a3f9cc77f2a06efe67844b843fbc81258dfae9f938f2f026f3ac048df3dbc51bd9d1bca2ed868f0b2f954ba9e3afeb8b0f1a6e6f8b9eaa6c99210e9907643ac29a0b4b0c0d7a79b7105d8bbc54ede22966c82e3c1839890fe43e26a334ee860ef821c1a27e289a88f7d9cbedd7d105907ef65e9d12f5ef183574ce132133c3d25b5604d573144b22bca174ab220192fd35f86b14d0e4820c09461ded72c9901f516bb47c91c0069977ce4d132d3437b1c94724722613cde93cbe6add3d3afd51c883fe0fac5c70edac1828fee347342db457bcd7f50b69bcaee9763ba5ac1df6bc63c45edd4abff2ea5c4279c39f8b85b5ab38056ef3a6aacfe05f28506cc8f4a9c6af8a544346d822290579709d33bbc784219e04fbaf071c357560e772956305f3f38ac3f6ea5f808e1ee5d72ffaf71f003c116a84eaec5577764979f612b2cbe0676900c293668ad349410e7ae07c2efab5f38860b13498376e6444f34855fe09311600a34fddc6cc925f61092074b0aede84a15cf7a12e533919c491b1380d3a81433bdafbe12ff5b11faef93c87b0f58ae927147e228ee8ac70cefc6e2564a6d11a1eac32afd984ca6288ba8dc1631f0731c0d9e4208ac98446475575b42ab8e9848c64c5444df55393431916fb479ad2b36247bdc2363df8c57b054d4b26ee3f4482e517ac2a83fecf448b836409367c9f441535f5df95275ff69a66bafcdabfbc7f753ae0491370fe1b1868579dde295add430c68f309826584b0f2450c0c9c96f4bd251ce5ab95c9bb4d46574d4f9c47cd26bf705b100c2c154ec43444c8a37eb11819d962231c46283582618c71cd8c06d01b100e40d357ee63a624d23daa56d701b650861c1129d4a346ba0dda1839cd97d0f349e84d73859278ebf91ff882b55d41280bdd68c57d1056f1d709f62781eaa094c9a5b277b26a68305bd33bedd13bd6593b07376bda919cdf2ac4ac27efe6f8f62c30e5536a1d9ed1d32b54a4112b3d686f65d9ba1f1a3df568f14331deaa596874f215a3f3e464e17c42d9c9884a6a7d5d19723faa22077d525ff5a8a04b54441aad802cd6c173e99ba85c3263a4c89ae1dcf6362743d72cf28e5b93a384b90072f7aabfcfef6645e507e6cb5798c737330ace49749ef87f8e0adad6a5b8b2ac7b395704c2239afb281ad8513ee40c53c8e2a8ffa339567d65da70997646d3b61e3263922e85e03f82ab5a58fa21300536b65c713034b2d47fc800106af40812a689750465e31f52477cf3b800f917db6fe81420b65cd0af83ca0fd3d4f82af6ae6eb3d6437f7ba429e0a83be36bf4a98a4a18f309791efeeeac92b8877797ddec6a5248b0387f7edf3cd0027d0cbefe0d0059f74a6f2ec0192594475ec4bb136d12343b1f837c2d84582101b86a349a8d1cf0def3f960d5c45810958897c9898968b112c4bf3b3498a779f014284c3bf6106a059116b59ffb54b7bc8d405cb1bac851b3a16e8a699de61c5c088dc2e280bcb1d91b9e2c93d995a9820a582ca4db556ee7ad4a344b5d5075746e709309959e9bb184949043e5f9bc8ffd4160bae3e1f5c71689174a016fce9056fc8b6fddc295396525cca7e396cbcc8070a3833684ce407b5203bef4a7c0171426541f2fb12ed548b83334c71eb9f237e4612c45f834807c618a04b5dcf45833106ba4c960198c1fb4ceb4c0e6bff7afa2d1bbeab9134a288d6c0f307bdb8396698959077c307eebf0ee4f6cc429f7db5765a71452c67ec137a4937b3f8d21421387c7a991d431158d02615657ad69e6202f2a28387f85e81442efea399579885232b7736e8810689ddab482006b19644e1de0bd511335355a8a4417afa73cf768a702bacaa6ac9cca47184c08f3bde51f33ad74adbf18b77ce098dff9973c783cd19ed2de111fd52c35990b605e03769d98e26f3739faabb919a8545d7e80fe4fd6c46475678689160ae87a86aa7239628488f034bbfbaf9329f5e14a3ac3e84b04e762e3ac974643b945a489f8a6965113499d3d862a5b647f362a980806c227685efe6e143b0bf0a184c7a20b99549edf240a71d0bbc5ca5a06ec56f6fb77a8aa4d83358904eee13f874cbf3e1750f64b577493f3e33044b9a730b9a43c0838c078b5a2a39a26318c53e383c189d621b38a0764f88a2cb8b82f8aedd872bbb51f117b51a28a91bfd77ea4231e2e46122df151785b585c0fbcd96728f9523822650be14a34e7f8bcd230c5a725ee5438b06a34972d3bd57e1827bf60d20d3890de278f47016e821fcfd0a8ff0307f0be5190a3e01ee0e762d4be8560089ee4fd0736f7b45d1c8570291a19ce815564c87c87edf418c9f083c8db31a5a0927abf2bd814fe322ab50c28f613da78e4fffe1b8294f52a87d2ddfc5c6717e64ba67dbf2c237f44a3e0b4c6a2cd2111918674371a72eec3c17ec766c9ec31c6ce2f3c369f78e1048d321e876bb582dc89d04c6c888ba608ac37d1740cc8da014601c41f21b865208e21a8a3c19b21de1949b5817d1b40de4382600fb78924e3bfbd87644de361f3f82490c2e26395755f34612887b1f952e129ce40fd9566988fa2849b221860f03f43dd7ef15a9fc8f749d4465f3c661365201cb42bef1f608acff1bb67bd6220a19c6d613ee53a31118e6fdf1989c42addb6b80a5082a0235e040f43bb78aa535f67dde110da9f7c2a15ced6841e126edf6fde5bd2de570186dcd0b8a5458752237f0df24a10bfcbb1686db04b41f4595cf8e9862b7e5c93dac9f2a7e036a8d9daa46949f2ef9db7a4395288b30f736b6f5e2b428c3d983cbf8f7566d2d520430c08a7b3d0b808d2a36df02ade4b5d388de74ba1383b9b7fd3599ae536bcde5700f7653efe505bba6c35f47b875c3d39a61cdce96bc7550c747157b2a0c55926ed2d267a43a5eaf5f014e3e7d7cdb86f33a6ce3dc49f611ef9629d32a92818e4c676c5e9cdf303e1ecbc0a502061827f2894080bb9668116e902b5b7b353dec25d08f60df7bb0e2ec4163bc9d12cc928e53b134aa25de782e2785f6475ec6b75f331cc49409a18e1844393e48172e77340036f1960d3bb08a4f417c8a2d8212da5a2396125aaee350fd73859a7bd235a8db7ecb757674451682a8c0dbf49ee5d9341aa9aa9112d16c565641a41df60e44952deff81e1f2e4b3ced857cba8656185299086ca58ccf3d7f2975facc985a63c31dbdf3d74d3caf7ee82566ba2167206badf449e2a635296b41b1b5cd67da005b3d5b8a06c0e0e64fe6069be1e86b06d8b7c65b684d5ef45011b8c759786e643bf53675266094f336822d1f53c8419018df6133abb49b4d2b5001041cd2b63ba2213c4e4312838dc2937df9e6d16d184e0f119af18f30213a2dcd72b8c96ba0b59ac21380d25121022b7c5ea5bf90d1be8af45dd797c9b68094b90a402b775efb4c74cb91231a7c0d9da4ad4e46d892530a613ccd6031e944830bb9bd341843e2e1ad7541cdf4987ca0a23ad53758011c6ed25f95813887926c1eb5ac609c5d38f81b50eeeaad54eb7903f4df7575bdcbfd535ac8090c12b8adab777e0077e1b2ec96bc084a7c057b3830d948b4cc36353980ff5148749aca12dc5217a7c1c868327fff9518d6155302c3d99d0b3fecd4387a03efe1b573206b559450636f6d573b1c6fb0e3bcca1a718928a35b0e29489e82ceb7370fd0d32db64e76cabc0edef0bf9b06e61a4f7ffec544ce7d33c3d1140a87901d0c20432e3164c8d2a69f41bcb06e57a60bf7b28082fcca4758fad76163eeb6e0293b93603b30fc7d724a2a1f1c3cfbe5296fe8b60573f65d1f5a6305774e389e85ed2bae7d3aba538fcc23dc934a5adf3c35dae5bdc6e4d5a36da36a1a617ae98e8336da7cb120ac5e2d1cafd76073d4de484684324adba85a256aa8eccbb4c2f8512276a9073ccaa959eb95ed8056edf67b6df7ce6355f6bf0badd1da8570dd620522e6c9f195c6d0dcc7a8ca15aa66202c945f981081167ac807d6ad3d103775baaf75f031a349fc47cd820e7f28105977837420b6c27cdcfc36f243a345fd677c037c6f0e5216dcd67c3a93141d1b912f097247682e6af4379bb0574799c431cd9c907d108464bc8838ead371ec38f6e975149f070f70899bbe79f69fe70ed647bfcf7baa8c0bfc33cac86b178a0914881ea580a566c2bbcec8b408a2dd218e42f32e10b2b37c2d11ded12f3700da2382dd16286b635a2a0608788d4a812dc69382e1852eb68d6cda83fea4cdedb2250b8e3266d9eee8ca3c6fc96b64a9c22842fbcc25d84613b3e2af0dd50102b79ce093d3bb962299dd33136ffbd1819932f5b30d79c9874b3678b9dcc32284d108395034f029cca2a673b04fa7a309a808713f8ba74f9118177cdd4f0780cdb477cdb04a74eff0acd75122634b4f95888a45fb9c647bf20aef58bcca43c9ca28c76b9f3425504500d3f5ec32306e4b30db1d86be1b102b3c0469d9388f967ea972d88db43fc0b489326eb4eac581a8f5d9ca44544fb32ef92d6c1da6fc397e550608f1bd9655dcac3c2ec4f88061fce64538db7f5bcae73cb4e45367d200742c91e1c4115fd491e630b58b3e7a1ee97085f9b6040f49b0fab311add22c999d9db0cc02eb21ea593f96b41ad1b45be8544c00853ccccfda38d2c43d880f674a660f472dbba8eeee8df5c5a8492b54c4ef995cbb1b24dc2bfb47807d4a273263c0719ec9f6f3eabe89a9a30fa6060a1cd0c99a0f461d7b5bfd9021c866bebbdfe0a8b5e1f18ed66eadaee34cb9a064e59cb071fb3299e0963d47dcdeada57a4dc6076c81ccd2f353e99c66022c3455e64bfff740628983fd56f56f64fc13f14e5733d8396feaf3f7253508f80c5c743ba8668560a0e6e224ace9526153bece18d16708a197a9139a962ca296f1c4ecd32835b9235b9ce396615403c380aa57f5858d63cff488b2aedb1f1d6ca6b1f1f21669dd1306dacb4c283acfd8577e56c2ebb617e25359fd5af5d71eac6f3572af047102ff8e7c3c3ad8052bd5794d3770fae13b7bdc7f26f9054be0abd94534779314bd7ce2812dc3dac21d53ae27c687da166c3f5dcd4d98e402d964190605888a3f655f80b8de3f654a61cccbe9729ee33db056a842aa7b7fd338f4fced35773da91144201de27c83ed93223013eae4ea466fefff53c0980e0b9c1f6cae30ab4292510a6698e13af2654019c9a1489ae17b09ba927d6f1a168601ca78f585df7912d355a60e86aec91790d8ac362f97c318766c083b6adf3851cd7fff737da462b1b90bbbf3f100f8ed326d42057fc3d582e93f1eb43bfbdac28decd7c6d7dcc24266d8e7d495cd8b5b6746fa4e999c34b91a6f53b0563394364c64952525419d41d6aace8ac1a5ce4b14b8966d90b4b2d837bea5a3c98372d46d5cd7f8cddc77238e357405398e2f0b967b04aed73007cdfaf05de61b990c0e8cef29baac8ef25d376f54e43f7ffd72362bc37da54b4c899850ec69885764bb375b76bfe28aad18b815874c03e6f1e147c9ddac69d1cd61762ad57c425599014d8203d463d97fc58f25f4ae05238bcb813973c66fa42761aa4fad6fb15c6b6d596a06c18ed5fd18b1629870340a37e88cc2cec1033bb4b24c94262d98ec8ceb98bdc2270bae4f1de7d4d9a69b654d50a491108e351e4b7c89522c17eeb7c588394a3b4f0fe857591045ec594070da0bd035663aa66b4fc133e80fbbc624e523e98272c722db294620c445ff855b39e18424d3bc9f540e295334c52e06cd847b2bfc3a046d32d08ce426231ea8cc7e6c64358999169f6dc2c71e2f29c8019b419af19751a16c63c600801c503d5ab3c96f25d1ec1a25ea1ea80e7c275042dd1efcc0adc3a35e70b870aec90f6d13de5b3e128399ac53e65e6f71923111c8f2cf126b420415b0ae4726d076077ef7de7ab1030f9edcac48096a378d0fdcfd76c61b19ce1f0d5b079b05c7e8d1a67a19122d5d15d2a3446ac8115848028bffcbf741921bb46f31eb2897bc315f9706ef79946f8f8edd465566314afd509222bdc3aac678226e55f9a8449a956f057709162ae88702637053a2bb8def3db56bf11c5b4677a7febef523db8f7ed6a29d7582f75b63365a92ccb9381f2934bf152e5dedc93c7a49b90f9c598f817748bd8d5993c2b8ff691375be8f0847408910696ff3a963554f647807c9d1722fcd11b4dcf0f8b967aa6ccc13bad05526c47dab39ec636b0b57344997f7508a1bf443dd09653e2c46d7aaebada004bea6f733c470e61bb9080270ba84764b98f019f6eae733b7f01281f0a3ebfbb540c4e73eca3f461628e541b3a9de26c54954cd3dd613c8eb1c30b6f3ec2590f8031d195a6f6da63d2a67cb6e7011f7067d6a4a22aad82d48a32ee57ca34e8a67afa87d7c22e978a0789a0d630a233018a608e6214e5c8a9c8bcf86ea9738119e986d6b4a02eaddf153dc252b8cddd64a4341d1aa20ab0e9cbbc374adec6259bffffede9e9f09240555ffc3b2e96132b1613942a261ac55614f6cb0ccc461aaef5bd6b30790048757cde873b50cdd7ea2317afbe26c4933e6811dc360423eced6b7d9ec47d00a0e85b7494c4b3b59303aab305fb7c451ba8b25a6cf17d56754231ea15fd6f6c9ddd137559459cee5eed6420db860ece5a595ac1de3b2d810eb06164d155d369beda1ac968c1c388fa29badb52594127362abc13a11878310d3b42f007c3c307fd2ff4e4929a45ae17aefb5faa6f98b89a95b70b46eff24a41be7a04d140697d13d1963d336532eeedafe1f4410ae1d180393dd6f0a19b4a9e45bf12e9e00a1dee0c2f8461361b81278369ee458c217d68528907c9ce5ad2d5f52b752e9a54ac4a1ef3b0ae25b51f4c6cbd5478eba3fe6df524921c00a4466a51164d654246949713c5509e1a03b700734732ce80f8bfc072e6d7b3442db75cc6120bdbae08c949c65da1351e38977ddac4e5cedada990f63bfb72cdd8d98ec30fb9b5fbefb3ec28cdce4735ac55116ab2a094547660e76ddd16057531c652ad6c9b01a09ccceda2fa33ac07d745fd4489469051bdb3fc26de1f27db40b58661cde18e0ae607dbcd162a5d631365b08cb816664acce198b0e85ac4380f0977ae0c70978bfefbf8ca70a0eb8e6348a67f8c45ad855e2d1aed0c2a98d83d7fa4c205205738cd9619a4f995d2c3a18540b791d9193e2578bd623ed5e6ee7b8f94e01afeaacd6ce0c39fc8e9230af679ae291d3083ac45ad6f81d6e256a70e1adf1fb095ab0ba98da16896bbce816460978dc5918605d7fb719810006d365066d387b04d94e889621cdd435c21fd3cb88097e6d6371c67e15a758d796c2a2f714e4107d589b1c064554f4fce68e2a8fb2ace1d1c925777043e8dd0439e2dad8b9cf6269f11b03bdedf1862d6cf6422a65e60cf869aecfade0420c29340ea5e4980b982704c33972feaa8c49bdf46fb8ae37ba21967dbd93842fd2f07a1c6edbeb8f015fb45eca772be9ee5d84383d57b9c2202997b0172720a71475d23be9710a1dfdb8aeb64f1ecc415d79bb46a293f01609d7f2eb0149f9a661ebf36b2ae50c35356c27bf931527203cf962700c2d6700ee702089a846fd8fd2b987b2c17ae78e50b678124d6d6cb6aa700ab9e4016161197274d967aecf4a7cdfe9bb1cdf2f001033eab1d80126b345f058c3e9789580428e628ae2501bc5ec1ac98725c523ba64bf812c488b22bad98c6aa018dab13ec595f2523a3d55ab1ad878c6066882a4c742fc58c78fcec0817ec1d093f6c0e54ae20e7a28af9a63099b9286522472e0b13729cb68e2011ca48c487f89c076dacec785ca8625e303c71596bc8d8f57b584260c1543e5ca499b9f4bef5e92b1769a1dcd21e2922a85084a3529a66bf20231dd861d9adec55ef9abaac653b704c90995aa4b7cd2966bf08c28e4dbef0d641463271aa37d1ace344bb8221001be1f16a206f07b58b17269325748e65a7b849628e83f2e95d22aaaf64aa617738dd35ea0e096c39cadf14a36db0c7f6cf29ee9a2f1650079e0c7cfadd0f263301784eb35ea1f025de761018e183b49d7493fb1be9d63d88868230e687aa759c90a99ea654c2e13a110e85b57681d69d5bcad7969abc0e95f8a3585b0d65696debcc5365062587ada8054ea26d17a3caf53a34c1bc02210e94ef7ae303c79837560c06d72e8985a75fbd2ded7562c3109d3447d3fd597b045a90f32a1c0229ddfb91b0a71203bfc3b109f004690dcfea22ee720ceedf5f401fcd1284e2447116e4b677c674712492f517f93c923f81ebae1dba2bbcaf80bbce034e670f75e1ef39aa80e59a0dcf1a47cbb14e87db8439ed3dc3f6011e6a247cdabaec67b39a46e24a53fc6147e55342dc99d490909b0c8dda74b6a0f1665d469097522e4bf350622ddcc6625f42a98d45c7d1a28011340f7e66b8ad2b9bfe0998567b22eff11316082a422671947d34c74126e57c2591e41a7bcd6e3052d1e3e67e6e1266a6edb6ff6e346adfa8a4d18af81ecc1a4c98dc09fbca6663855483a0b5d3fa08280b328ea3a17554ebe6893207e3c023fad5e3f76c097288703a4d0b717ab7b4ecf3cefd65577dc8af80d6dc9e065a21f163125d3ee7f27ba1ea4df627d443111dfba5b256631840bca31fe72efb2308df760a5705440e1451fffbfa4b788b5085cf66bc3e98c434abf22679589af94280d1a600c706f83cfbc6ca4400a0cac6c3ef6e6ac30f7bd92b084223cfa0eca05950f9a036964fa21cc38cc849a97efe602e30dc46a154add9f06419882cbee78d60994b53618c77b42ca6156997e6298f34e7c7da6f3e0e61abfcd48042e70c498242cc22587a31a96c0f2b298e131469fda1f1d75bbebdeaae9927f54b3157b9ccc2f78970c64277a227fa315a89f3aa58960cc28cc78954616a081493deea946739bc6b239b2da11f5781d8e86ec0096ac8009dee9e8b91a185a621ca6282b812a58a49ee4c7c30ec81a879cb4ef07f2801cfbdafcfaea83e058a7c84ab55829dc2f398d1167337414a4928b867b920e0148d6ec42f722c7ef0cd2ab9f8712a6f3b92e3d2e68cab0f230d5a0a8d3f45b179347262f414b398f6bc6b4545048001249c8f7a3a152178320b4a3f974c310d2e3d9285d6a1ca3af95a49693f582161cab5e0560b71e8510450fb7864769f3eef3ee56c478a200467a54c48d18d7ab0d4df5977cbe8cda70cb920fd68d4fedfbf126b1ab5c3180b6694466b394795a4af9a2af271054537facdb2b7cfa68e5fbe2ef0d7de98dc57ce26973eb3d109074d99ba6197d218f4d881a7b52a91ee824b36e7ae39a1fd65f4027b90af8a3036329db861a297d284040613a7b34a2cdf80f80ced649025a54376af179d8308a2d6554a1204dae8c4ea18f4661ce6d162f75638a7aecfeffda8dd2bea40a62653525d1c9a84ba70409e7a116aef12faccddceac35a813f644cdc0c6059fdb66605cac1aa29fff7bbb3871995280faf92e5f9ea3b1ca5f4dc81f2a5cc872f70678991f8bd7f05e86ad0d87a7606c9ac27259c084792b2a2dc9b0057278376a495c3ae81c6ab0d754c0acec6ffaaabeb5d2633876b240913efbdb9066bdc0fbbb62ea0141913f307253b428932b2efd4c5f25697dc3b5d51d08c324ec236310c5f40d08c904c5e803f773ff071f13559b7bfb6e6bd54f8aec0c98e5f499ac3a280f51045b80d9340bf45ebc1caa6253645ff0b8325ae22b6f17b82038f4ac1bc9c58510c24844ce45c54e474cc261df3d96015a1183531315ae95632a6dced311bbd2e5849fc7b2ca9795af06017210f480b6cc30c8b0f3754b7395981f3e8608ab31b3744ffd1e2fcfe016182482af30d00623f964535644d8ed9d158ae4b04de33dd5172543587881eb250c8e0e463a0f91dc5ad714c7703857621113ee5af3c55249ed72b7175ff90075c7c6b1dc781721ddbf6293a23dbfe023bf81e35b5b45faf5868c45a871364f9293f444cb5098863d298e86b84fb49588e882523d116eab22624bc209726a09900568903cce96bbf03ca623345cd625d969240679e2ddd8b8368c18abe57c5a447a148c478ee85a77ab38927cf0d47f3d5b5ccf154e444f282fb1858d2c8527a55e0d30c04cbb661b639770fff4d43b02da82dde4c2e9e3081c20e6e29d56a2e91d0dd521800e5f6e7b5c6817f8edd530fcd3a6e1092473d33fc0117918f1ab5b5af424357734a803a1e1d28002acb804b8ee6076a8e52e4cc07f48842d0c070309429b537e5541a10ec56d0eb3931707705809a7fc2b3d7824ceae9a8c925a94239f956aacecca60ce6b1f90a39599db63f8fd64538ea6388723daf29f21044ee754f41f1a4add7a127acb1da59cd3077d9b258d3fb694e44f766d37588cbaac02cf4aba6f12afb6f25e37383604933fce71a85206e1e07c53c4c581ff5a0022a723a0aee8bb0bb8c0c6fe71b11df8ffa28e38180c61f2523a8fb64d8b4566362f85bff525119aa57224989217ac60832c6aeaf9ca1ced3ce75d56784dbd9dc1ecd0188b6ab572e158306965046a2258b0629d89020a30b16635db9b14635b22be0231b7279806ce7065eba6518415249c34f47f7ebb23639d25875ac48e09a03cbda207118455d92b83e0c12719ef5e0987dd6308ce583b87bea46a2ec94a60b1c7ae164a9374486f0b974ec0c06b0d0b61ac6ad67bf6c4589693757d534c9a818a5c84a2b6647de6c63e86eaff49c796afc012100a796a3ec5e41bd39de8f16d952ac33e2f39b17e3f4d1c76d51492f9c0bf3acf5ac01bc66887b0d2d09924d4194f9a7e178e5c0844f22f0531be5a90ca5cb75a5b6e373922057db2443c721d6c887f6cd94ec887699c476a780918eb64b1a9359495d14d96cea0150aa16ba78a7d2a83b5cc80b3848d88a303c6df980a2618059eb7b19fee97dd6064f010c08fae03213e25a57c327f9cb89ed9789a9dea8b3ba613a25257c5e27447dc69c13ef55093dcf84c425157f73c0b1b34e0e0feb4f0ef44ea1883e7e9b8e0a201f47d95413d4b717e7e84ec6efc7dfc1547fcca56494e310f9a2548b6280ce1f0a2d7dd3b011a986e50b2da56641d069b40fd47ff59ac4732df788649a9de345fb7f8570ebd2dfd05458767928f8920a1af52b84a7d880eaafbb943df3f1db0a6443589e65b3cade323f2764e7850af3f8c51f0b5ac7202aea1a8df01e7c31a83a901432fbb52785854a58f55b6777b988fb02e418991c42fb40b45caa57f05f74d7983b8614e8814a399ef2f5df76deb7f0d8565671e993b302cc69c3d34acd090d9e5cad2654781ce87b081013c1a77b468d01ee0e7357af95609f53a78a8f82a05a308199e9601456ffc58a9a718f00fa4410c1fcde0ad2e5b0513761674f42901223eff555492ed15525e6f0d3199ff0976e96346de44ac110e9b188cbb46a67918844fb83285a87fd918ed37554604c51fe2f3dc2f5b4cd0f07a0d8e8097853a3b555b4dde4f7379c8b814606bd4e9663e8205aba2c544f620a658810cceebb77e79016a74a9bf11d719ffbae8df1861e74408e72d00bd63f47a3400b3867985e7e860bc49709b1bc4ef56e93bc45d8f9e030754a11957fdefe2fa5b648e19dfea076ac10012bcade94e7686072e17ab3ec8cacca3f6ef2d2480d013104eea225fdf894df06f5da4e102009d2ccafdd571c3d1bd01864c619979c060d74fc352fc31bd09da79291e3a65ba2fa5db9d12ba6924a84bc0c288ccb877ab0f48f2946c9173eff0f80afe39a6b5b12ec22ac909f990a3c48c2e993baa1614154c0eb2ecd4ccd02f45e36cb5b9538cc4bb8b47ece8dbd8a0e5ab0c02d3a0edec202b9a7c93e5ceffde9752f2599c9bea6a603c3e07020494d5a05f85cd693cb8cb49df9f8319e22e27d2e09cd263afc7eb423c7643bff9af289b92317f7f3df6cd9e37aee25c5736af1808cc852f0e1082bc407d6a2b1c93ea66ab459979de96b729fbb345104dd1db9e02165d6ff0bf293922175564e7e60b8c34b0b64642ddf824aae275fc37e3d344cab4989701a694c524db4aeb682ec912b8fba8873f121e0866913a765daef5c69dbaaee2e2bd5e8a6abc9b91c1e4ac07494bc6c9df06df3175cd32045b5a4c0980562c07a85a83c67b22b28ea6eb46b9fd664a79e366acd2c17a2043a0cabfc0b928cbf95b215d82c4911fa0e249f3126cd81cb53bdba45b5904472ff0c4f87854a72ce879d3ba5315e465e2d2394ac934178e458ffc1b89ee9cbf6be367331b9f92edf470e9d25221117f67e887134675c5ddd7b9151d1b570fe59a63f179a7ae7903e227fd1fcf0387656e2941d76256fc9b4849b693710d1f395d32d501c7d84e96c27604706ab4121f85b0b1650a7ea837370015048daf7865166223a53b370cc801a95bb0ff96580ccd29b3f0ca9bf64b555542fd6780323a2adb3eb2f52c681c8801a04022ecdc7e0f564b903bdfcf7ee4f32aaf38e4dccbfdd8e38bc6da99728d335ad6115f9cd74e8e9a4cd97d66029e396a4eede62213ab6a7ed33ba62dc3b1e7783bb67b34b006391a07a931d20bcfb9ec2f21b5faaffff4d0172cbde9134b3a9b71952f9cd05b552bdd7cb5bcd0cdb962c6db2366b211adea41e38ec253733c2b04be516cf312f4f4dd344d1ede0ab582eba525c38a6f216e3aaa4cdf10457348934e18b89a43bc922db43c0adaeadb1b1fe555ac83b2b027819a6dae3ae25782e19aa07577626593ef8c4d8b02458df8a5f7736967050ef4b04b2d0a6254d362eeed6976256d3fc792964b90fbdae390b23fe0ef3203c1f629ee0c6d2912cbc8e78fd8ef3db7a95e58bb88e8bd5e268d01272173f82ba7205cd34c36d7f99012fc05b59302179b58304b5a50b9a356189427628553106d066c3974fe3bdd6d185779ac3823f61d41450b998d7b68a5027211f0c7103e18072c6dd0fb5e4f1ef7d3d1cc126019cd3fd10a239c6ebefab39d18be2bebea80c2a3faee76a24054aa2d580b7c0ac85e7616ff59ea7f756feea3b1e1c18054d0df9fb1224f521a3277b8a2bf4ca65a13af94899fa5c219d46071e6141ce1ce082404b9038fce76d326ee2626c42d1e485bd654df165f0129095898353d57857bd8d9c8ec10c447c2105709df00bae7eae16e65070f61a128676e17c6195103518154e87c3325387ff599ac6f0992aaf93d0456866337e0b87eb2926da886b506e446ba169ed45b01a9bc0fbe64e2e00ded7d76d37af6647baa9a277482c2b5e95dc277621534cb2f8ddf4297429f9dcf2db3efe6e8aff2413efec24914ee5d9e8ada35ca5f099d66dcfd182b3453ac7b8e321ebd1b71b793f97f98ff5d43519d3ac7f8fe396bcdf6c37cc48f74dc3964cbfc4fd917bb16294ae4b0cc43c6e4b0b9de63705ba804a54e933b39c15a1f70fd4cf2be4485df745efdf2896e67127965228bd98a5add2a1fd51887c2cf0e9818c80576491d0e1508171635bc726cea935788b2c2173db3fa692b3804348f6abaad600ff97532646e0c2072402bd9cbc9e6fabc65738f6023bc11f07d02ec8748e4df184fb753ea90716c07d5b6383741fb8679834137c582a708b9ab7cfa255ffa28287c21b2e7997abd5c3abb791fc09cbdb02c4e566ca473907d3629dd8d8f770858029518cd008b8201c84e0bc5bebd94edd7fa1f518022a88d2c4fbc9e6e16c9c4e15187c27c965327ad1e0d43de77bbfed573476415de261dca6fc049f3c1190dd5bfe122c7bd9b25c1ec1802aff0a377d66fbe0ad48e2ac5d1007a13257039d99d51f1fb2dd190f4e3c60243c7a0112f7cabe59dd8e4a90175e947961a34295261d57f90f6a2e0b4ee99779a29f757c1019384e7f55df7b2cc833cff472196a314c483d78f53f0253402f46dfb923a0ceecb59ab8f126a9ce12477921dda057ff96159fb9401252f917b27798b8d8db3d890da1c455370e6446de622f6e3919a2ac2cbda9f87705a0d537a4ea88e499e3e11c3646b61079d38e4ed99551a272d38ff4087eb3148560bfc16ce46a5c47766476e1f58ccf230689f777677dbcf76d43ab5c9c6953e7509ab89b2781e262e55f687dd7b3d15f530f9904a2dc808369036509bd6f4b42cf257c305b3d4f876d2c18fa34cbdfba37a97cf3a0d318131a79749aa28d67b96fc890fa664b1f4457d92d06a00bb03d61f456280f08af1b1dc2780da15bfc5f11c8f56cbdc5ab558f0b7e39f1761838fe65fdfeac184e30468a5a0c2f435821e0501d879814819adf67a93a2b70003b108dd98599c9860f9f0f3f82b9c781225b5b9630d56b77106d011f547d59de5854c267c4439327d679cc01c94b5904caf9b99f9b6d138816d8528de582fe6d537ad514a32afc49fa728eb50b1dfafec8a46c1a2f805d683ab4d6f6e10191dec5693754343806934151a464be8a0fde729a320492a150121cf01e141a114c6c8589d1b36a8f8e23692f77f34d229418f22cf7d4cf9f8ce34ada1b304af3d18cf14f8134227dd1b9e05974702c0e71013ae785596e39833d35ce8248ed483844146472b8498697e3dd579fd2f34e771c62ccf36f8bd303ac5b7f0945b1ab5d8410e1e854e6a9fbc2171398494630611709e037db22e077405dde9a0418458c99d71079d871fe4e3c7c8030294baf77f152a59881b3174176eb2db2f6d8558ecdfd71e3048cbefd5ced127a534561420ef9ac5d881973789e05c7ba35a867d6e548b3891d6990b81ec05b2bdad8afea49edc21ac8d831f4aabc60f9f3d65b80d903e9a29ac46a07101e018bee05d14595584ea0199ecfe82d820661670f13c228f85432848a414971e63f9f4cb09b28d52459026af1ef4a85c5dd696e36f6cc0b156c6a13019fc553295e3116f7d44e1057c58282739fff3d1b357fc3b18903db18fafa2a91d9541dbfd36c7c9dc2b452ca5cdd716b0e8a18a1fa5042f9863a12a6f7ff657bf9716902a0f1b95fc6ded71e3bf352ecc773f49de717200916fce801b32a53b2154d1e52c403918e838947e7cd570e527f971dbf5adb27616346ba81b58692cf820f93d1863d8015f35bbd45babd4493115fb28abda35703023d6e6dabea0480d1a7b9087f2837f52a9d4978d854c20aff6f005096fef555d6baeac29a97995be2eae5517775de46a6a7e20c48f5b8636c1643c614cad030c92bb7bbc975e657d805acee9c326117fa03841d7adacb4b457f1cec442396322de3d37aba1e2f75011de082143a7772258424140dc9b08e872ec6a8aa576e37792f154f35cb02c50c2c80b6a52be0314e585de9c205b04e507345eceefed285af84e24f3563d112aa2897f6fafb46ccd14bf1a2f0a958793fed129f07878d1093ad1c8ef1c4487a18b070a63f49e71f63045335ec2ae1c2e38f0f71139fee83a0d4e9391d4464009143f507a24e34befd122e632ad0bd9c5e5d6d09a9d77b9952da81d63649cd0cec93f3b6e4833334a816512dc99f4f8bc2eef67b56da5f438a766eb552ccaaaebc222affb1a8f264e2ccfd42b8304124b2704bfd2be30d232f1fa583d4e2c6a737bd45b62c51e4e7566537d17e03c71fc163cab24f924a108d8bf5252862ef20c04ccb0eaabf831ee7b0a1d3a8423fc310f847c22ecf5773238fba3b193978d6f8009465a4a24b21b5484f752108cb69bd167a506f383229f886cadd930a967eaf5f53d81206c241424a5d5c1f2eee0c40690465129d0292d3532fa2e9c166fde69fe3cafaed03c23f175130df86f7d87c460ee45af52d532c90f7979b013f1405004953982ae6d46e39245606bf6eb926472b26afe2452f6e95e17668dfe001c4afd2bf851e93cb167217e08c7f837ebaade05094e72c03621351a04d0650f0e345c76ca2aaea34923788cf8f4dda4683c9c54b407e0c3a37788d9495b6de9c7841d9710ac9eee29b5e20d461f160035656279bc4be05761df5c708cb0d3b78efb90582f5477bc21492bc9ab104d42522fcf98b9852015886e448c09d8197bbc9e3a3a0fdd82a932fad3990625581313c9c9c9071186c9a769bcc561d98ff03f0a65419fa86cee13052a23d9c9c1d69e3b5b3843ed6a403c1e31d217c447c2180e3f934f3d44b9afca9c9eca8e14017071771dd1820c5d3d8db26f14483162dd9c9e2094d2c34fa5a2025c24c64798d98c70fb59775e3592e5a32123dedff6370ac3d467ed2b1ac77db5f554b5efeb7b8e0e0c4692b3af98ceefb47680bd4e6599b0c9c60c468e9b58b1cd6c5513c4cf4b85b246b1ee419f828b091ff3abe4b85bfffd32666092dd7d1e24a3a3c97f9fb5c210cdcc2dd56db952ce989c569f155f37e930b25458fb98f1fad28100df8d6ecf94910c217dba6286b33ceeb61a762c1415c808ece098988b05f8260f7d8bb13b700fec7fa6b2307817cb5c8df96996499309ce315009618316b81ff6536188d270056f4e9c76f22c58eae8d0f28fd7a3c083ae87fbdb4e03d9d6de6efa2b520d9ff665e4c79bbeffc3a037570d1e019d47cbab8ca24b896426bedd2cb1d899015ca9c2e8dba9ed8f9adb3a37c260b9c1bdfa382994cc24f2f3fd4cf2bdac3cc375aafcb22e9de483aee969a88c324a7f882f6752998515fea7c5545a05bee074cec885c4e467afeaffff8960c486ff34ef0822565fd0f1b1a06ee57a4e7bbb80bf954e4c306d6b4616b606b27de1d5a2612d7cc2c3bd8445daef17c01d21a8b357ea5ae6d6068289f888daec90dd780f03c60b3ad48c3085ed691ea39e458e34f06066096300b390605707c4d8a891bf7bff56c78c3721d2129dc41ea64e189259d798d4e21befe32ee79eb92d846598eb8b50815fe64e067170800372f7b9600ff34a2fda8c02c8325f5bd3a245c4079a1ee492587850e6c26e128d6bd10623769ada6c1a7b0feb11cdc7190ed6468ba8f292f74101fe0a4945b6dbddbe587624778fe68585d8357a9ff8a3f5b4dd709e43207f8246e36c1145e3324377c6bd9d7a8f3d623adb8bcf2ad4319071afaa1dd34dea934382fbd8e79c1f86086ac5b156e336c0a03a843626eb96a63347d07167a832d4a565ea2e4353e8554ff717ea028b63acae7965342fe177c93213a7f347644f2651039e0c9853e87780a2000b39a20650d205ee1b46651c7d3d33cc6cc249094fdb6e62c8c8c8b8d1a35673b3fa94ebe56c91b3254fba57b3369759c0a8b1af3a10dc5524d94b49c2153c559408641e6b513e236291cfc929916da01ece91c0606cf1303e75044a42038fdf8c6af9b73f48986caa39e9fa08d9e152f38e99d54aa4ead64f6a59892ef2c51637ec8c3080905fe154d7d8136f2c2bb78e445e68dc1e8bd7832c3127113a0890149d18eabb582394b8dec53467baeabd43d2973f5974e04c9c4ec2bfb886f4fe9850dde4d146ac3f7b2886ac2c49da15561c6d9750f5d4becd0df4efee55b745c51bf7cf28f136c13b7186927fb4ca969c8dd056832492f6fac54ed5a97c7101e3da01e82b677eaf6ad742853e67f29d2d91ece39337b3eb71797c6b26a2eecc35adcd55f2a896d809614f8f6fe58b35c419a069ce994735654f59e973c3abb3247523ff3a2897b09a74f0746043c421ce1a0ba0a068a5a8a012947f1aae2d8f735b99fb725115fbba5f43ec8caaf92c3c0e2b6a68f80b1063afde1ab287a748a14a771f51ff6e39ced1f68187d8494d3f7187da184e1623dab8ae0b7045f1386570ab4ead02e5a7995d932c389f707d1645ee70d5a5fd2a79e48db5ec35ce2093c1ce899e9f85d3e7fd53d06165f662f28f40a30bedabfc458dfaa7a4758373627439e79610e712208c8e3586a3ae1bbdd74e03c3479e324330d8c2027abeed328427ea28ffb16b3d4bac33ee6786cc45acc593d48a97d051f06f48138bcbb26d30ede95d0ffcaeb75db212d2d1a2cbe81e2a1e7ac122bb3f1401ff59431c6a0f7b3b7b095372d6c04a5a655c99cf7f4e42e69b2eabe5ac3b85e1c3a7131e17bdac740d52d553ecaf80badd87883d4f44b26504293ac39392512e3236bd60a502cf102ebb113c0892cd7edea6fa9037040a4212d314ce7f6d2b0c3fc2da0c637f3312245a77bd2aa1e6b0cab96340e9786c7fd17d150b8e42e877edd855aae351eb89d581eccb01d0e4105697c642802dfdd8083ecb0379ce03a77b0bee36050a4d2c291f49f7dfb0c2fd57503f0e34a1661dd04af928b9b71af8ab4ab98c11c575f55533db7570bde0ede2267be698a8539be57014055f6f6e730b3b9c1836ddc3ddd255e1fef16b8377a2e63b7b4c5ff79d942dc93e117f67db57eed4e0cbc2599ed8eb1275028e52e9c16ad5d627ee87f93ecc756bd8360e4d671070db292b9e85a7cf1461452cdb72dda3b39c5013baa7db71abb1a29892703340d594fbbdbd5b0376063c6f710cddbf7ed197c3ea5074fc59b23ba972c439eaff382656cf2757973cf7897f3ebad2eea2439932ef88b92ca9057a21d59a382661277c05820d2134706cc433b11db9471eada64f8ca72cbb20d135e472af79b05401edcbe2e6e919c6de14fd3c52182fb9c978dfe478ba40b07a73f407c1f66d4f791f8e2aef8dc0773adf02f6d89314dde5492da0c77376591625109432975ac81741a55aa6c9cfec5f1cfc5413734dad62f4b9abe5892c1bf0acb41288c0b3edb78cd1d34f7e39e3a384e909cdb98730366140df275b74a00730415dee76b4d10721875d6f06a8514f8afa6ab0d0572f6b46695a678f4f418cb8200fb10d85390d278f50539ab2d41e2427accdbda2ba9e35c8448144767a68282697c367402ba048373d8ac48953c267485318ede62280fafb51d74a0662b3fb831c3ac83052ea76897267e60dad5ff4b94be988a58759490c0dce712dc73edb0981d232a652ec00464180cc81aa0e2dce937c626e0c80bd5e774fe4209b0aff9195675c0831faf999b232534b295c439fbd726a502fe427ddf84795f3f9cf60c8887d2b06023bf0cbaf1a1b7469c81107644eb9b0b2862d27f827bc1daa76beb5b3b8c804342af358459d4ddcb248c6c743f927ca0afc35e9b26461c7319f6cb82a643f30e418ea3bc16171510fc45c2fe03f785745f0a9b217f8fa27b11cf9d4e4eeadcfdba73a59e9d24efbab9ae9bf79500d2af09f81e573df188d89749d88de6806bf0450bf486c9ee4d09019b4a6a44034af995b2399c19b21da7861818758095f305ede0df8fb396c07c106210cfc86fca5240a928a42b11e933952cd1036abd216bdf10ddf365a6ead831a6d864681a0874ea4eb73de2a99c4e7ea8cc2894cf1dced7ddfc0a17ce7e387813739dfee7d6476b837656c13865a637f6117938dc0481f481133795e7c67d45cdc6b5e739e37e8e885f8a7fd42b8a89c04f8c9364cafd86f27650f83be5bf6409fa04b18d0f2ae685c7b147da2a3a07f9a0a19b0c6d91fe171e2bfb3808aafb5a5761ac94dc53583766779ad08d5389cd4a91289393edde2324840783b8978b9c1e0d2d5f75ecf16d3c4f4aa97beae18e4adbff4c56dff8a152a3aa28176873a0c7b8c721c329013134fd9146c5cd64e3c71a24675da5844f49ea7c48441b09f4f095436d0f5c6002878af91e91fcf4e25bbab7a9956b54fef2f61b4a9ad5f404268299fd6eac47552a2b949174809591e7a2aaebdef2e40d323a90f2d8426e9907b838d1aa595a2702b4d6b0c39b666107832a426075c7ecf6045b2d7a5c65cb9e22ec3b65bbcc69c232ba76ca4bea050729142e3c98ac57c5ee642c3ee77cbb47e6b698e010bb91bc9c4b3f49421e6723f2d126d6ae0a433e22ea62e1e27627212e48d75a82d639b2301c716af2f4aecec90c3d8bddcffb27fad876234c5bb21887a9de9f09242c158aa20a7386e9385fe81a6961e758d16187ed7a5f859674da5eaee5988f0e90894228098b90dbb9d39b231c3b6b35b1dd116474299706cc537f43900f8c07bf29b61acc847c8713ca6058007948a47c03ef9cf9897a1c2590515184946be34816e85eddccfab97f4af6fcf0927548618b99d2a467271d56408da8ecc2c8be0097f71902eedccc596901d016e104d1e9618f45757bf770626c3767cd6e47262516f1166c7221fc4b36e7f1c665d2d6c865242198ea8c62aecb3a02d7fcc652ffb5dd5456e87b715efd9c4cbd295e9a0eaaffe78b5fbd6091034a4cb53661fd04724e784c3368f68218f8cdbf33d8e3d9e98803e0641d1e0be4b47e78e75b064231d69836d1973254baedabea8ad1a9acd2c087b9b89e8e0944456f5e0387e1b844fc82155d62ee656cce30b415f3a63bc26aa02f7e79fad0705a5cdc80526bc1816cd44f2fe28fbab8adefbdc17be18dcbe22ea95c43fdfa07ee72c7cc69a20479e9e55a8c896e4909ed8ee5d8bc08c328c6f0d9580748408b90231601c40b47ad85ec132e525db5d727fe4e65d7467109b558c65180c9cdf435fe01129bdfbc2b35d79214c7b487fcae705eda4b3a51734a64991b80c9c6a1955a2fe3fbf0ac2be237365072e4a4818a31ad8498b15920d2a6b8f76eaec0b3c00c38c02eb0beb87bd26ed54f5359564dc1133f026db17e197dea89f76698e98acf3d3a8c8ba1057c21251af990e3efcc97c6c41b4ef859fe0d0ec4f3fe33ff78ec6e5788eeb431a8a36908fd81159487c1227c00e9c44bd683535437aa0db05b034a6ae4a0202a0e798dcf9d22c4d7cf52d1a854701de507b443b1242d744c4c51934561479b37885c17727cf81b403814b82876693e4fd60f9bb4de13611de36b6e1da985e7a19b53e9fdf0de80eda748e2153159929e60991ac29235de3baaa2ebd4c92d2501a19208951346a4436e23cd04d3daf431b27107faa2561954f580aa99e708b77a9147d708153c7f7333e3f9dee0544654ae5be7686f54a33fabcb6045fc652348e53edb19ae6f1a864b6a57e88091c839c37a50c2d5095c5f28301e5acd786e0540f0df8b8398fa772b821928a09ceca04c71564a644b2eb1a2ea1dc6b0098477eefff77fa8a7bd53f2f88ed57e54669772721cf3c1087463679ad54f8848d55cc83e83deddf44392a1b56ff181945a1c2e920632280ebb2d59c2175dec67f1506617189a9f9ad606076277f2894dc31047e2c9d84552c547f325d9d55c51c00cdd9473a2b0a2c936fc93eeefd48f50cf59fa616c0a58a6edd05a66c8247259a5d269c4cbccd6cd4756f01a8b772ca5d8533b049a6f4b911fe18a45ac10cf162558fa3658273cbb6a14c7a82a62e6cdf820db16507d36393eddfe3df7be5e712d8d817708150ddfde9a4d8fe7cb23d834321d533f21fa4d93516522e4aa5072aaebcb548a5b0e71027d4ec09041a76678ef18b0b5ca78c750c98c679637562ce36bbbd7aa439653df8e3ad4c7781a21d3df005d722bda18d395878d09e2c9dfa46ec750cce3b84c91e5fb40cebe321414fadbb279b9f5a9801e3838386f873fc4fc2a65b14fda8d6384dc09c5dffa65d6a53e85a1ce1a5e69bdd671f40d1304367e31d0ae782e81306f5345d5652ba2500f50cce3cd461feff9889f44ae8367e09552bfaad9f8d40a0de944c342136f9949a6823b0fae5c4131eb02f57807c0bb338265bf710977e51920c288e53cdbbe0d78596f9c2787984108a82b7620ab6a740e6c5aa4b3875f2bbe91b46e480fbc3eaad606475d67fd464255c2f757ec483d54869d32b5643faad1d04339127674b0c702df40cb1fa672d76b11fc98a57709eaf46d31d0d42aababf3c8171ef943ba9219f3fdd2e369ab1d55554db731815bf7e7e117f2b97ff7c89022d1cd718dfac57e3665264e225997fe3f3a19437a1a79fac75e4b39754f65863381232eb10e66d5798cce11d6a3513345474d9ba85c4ff5442ad5bfadb58b0be7e32281fbdd3013dd594245056d91669b5ce441cbbb40f6020c90dda5f7236d6471734e951d3787ee82c24d406c06f8425726c38acee45a76de06988eeed346efc5fa7f5dac07983c1c8c7725c39eb900e67f98c20e59991201e42305f0e187e9e13240fc1956e15a5936cad18b3ba5a31f729c7bfce08c0d2b21d48d816f5f0e67a221568780654e67f62d848bcf0b70eca4fa2082c15cac4c8b5d4c15100f62a0b6d4225fcb6b919c46e050a50056101ed4e16d508430aed08797bcd8914e16a3da6c347063330f4d449beef8b56598ab622d6c5bf9c7a63010c65fed32f9b2c77be9d2deaf934489f208f9775a1e79122571e2fb72da1bcb5c5efdabcf3a2037d7fe49ed3c70dd3011261339a8d1e9f7b90d36028878c25622d323246269de8400341e983210dcc0ab6a4142220f547e302f1638340e05202834d1fa63275c2403ac875bbcde66749924c826947ef5b92f646876a70f1947d3b903463a50dc3136921d3665614c297a597634f51568b774a89559235f3a2717a68f83cb2807937a6fc6dcb8c49de1ddeab893174018d31f1adce0b2f33ef759c261e4baff0bba75dd9717d02f9b3f2a200a2fd47ae04406e9bfe9f04669659af8f24e195e8ca4ece1c8cdd8fe875ac4a991bd546e9abac5d274beddd033c4ef53f440f834c50e58c788b3aced58765a20f898152867f5ceb6413e8e7b4652a66ddd70c3bda1b6cffa015789e2ad4376c6e495e2ea9f3ae59437a39d4cd27ee2b1aa873a439bf03e353ed48a2c173f4dbdb816b035e700f7c7c76b857dc347d2487c5f6469d6b88c7ae82a0c1bad9e91814b2f5ddc198a340d381e2ac43a2116336da2ad1f2b2028fd5c7fca75ff5dec1b36d9c2bbb1e4f20a281ca0de9f342af2d1d0996a30eb0f3e8838e4318fc056552048a434225dcb0b9c26d3ef0409d02a951110ce54d20fe4c9e13476fcd8d096d225ddb397335148f22c0028883ac0c2d7c524d994da78f3f1c6cab2623a5a620b59c91d7f84586babf09a3c66510ad69372d96bf9b2cdbbeca8f2b5cff36a8b49a8d659c693fd3c5cb616e961da57fecd255ca74e834e9bfce8fc4bd0a6471f5e9e83addecbfde4a582b34b2290e49a3a577f08366db14b595bc3bced4c0d45eda4058db268d1c62397acbb101f88d2e3edeb1867d538d64e0dd963928ad9a1697d9ed6c1c611761572f8b260b36fb035bb4db956f75d70ee2a7a039e5ac00b7865a8735b393ece8096dd2c7657afc60d4bbe089d4ca49e5ad3d690a148737e9d1039b6ed041cc4456bd80af60c5280de2dc57cb0c8a90d06c9ec46e2114e3cf3203024058f17e182be57ca6aad2d0ec668e7ab30df22a871550c84477109d41571a77a88f97dc5ef3e82d818fba75632ce4a77c2982ebf3a077502ae3fc71d35f081af6a25551b81a38018cd4b54e863703e0c2b49b7cecf4d37b317d1260b3450ff0ce523562095d4ee9070673c71ea2d74a94ab35d737ffbd2ca50094df52317d60c909ae2269fb5adbb647b4fc7ca12ab211b86ccde4ba658bddc85257e10b59b794dcc0bc5f30a74f78fafc421aa5a2039f3ce480f019018224e411a396d530a5b13608ec747d86c3f5c8ee9f0bb7cad1a3431fe93c0d8740aaee8d95cd8a8fbeba352e860eac94375fed954d4488f9d1db763253d724deba89a75471eea1cffb3cf5daee9e9be6b237c24c3ba8d2d35e378072de8e821b25dd71436f296cd636204d529f23379cbb31f00e8ceefa30f64b760cfdda188c7de233783d01e3c3b19fc4a6a5f32bf3e01bcb0c15541c5cbb5436c8f81170c7023046bc7ca5acc990d2bb9d22de3b9333ddaf0fe31de806f3c2cd8e6bef6bf8b6f864f53e1d612b5ac40d1fcc98444ec78175c8b3eb02c7895e55b1c56acbdde060d5f48f415ae17c1dad506d7e56f73757437179dac9a189f6df56cadd5cc18be23011e9879876c65bfd4c629d744520195e44da76a9fda7a15eea127b20ca08c28853bd9c8681eb9aeab81d16d8efa32dbe29b17f704bb98e9cdb8714d39a6892d3a4f1cda58606ed015da4c9d052e4f180a58d7848dd3965b488eb319b2302cad6545d456d2b10430c4b0f589df58d168781320c3eacc435a1af5077d2eaf366fe874d13e65e6be5ed070d6fd43a4b0cd2e4143f83409dfacc599e5b25d699a3d4950209ce845a7ccca76068395e5080728bdf71d58b2aa8becd102f83aa17bb0b2631634bbf86a8bdc85c3816a4d0e8199af133b14876cd49b5b771980ed5bd4be682447b2a7b2b80de6cac74478421a118dee53d5caec4e150f679cdd8fd7536071200653c28a001508df9d0452a181677ec2b1bcca473f242046b03d7ff5b534bf1331c8363c3b27dd29a1fa0028922a194307a144f9c60386d7b890b0d9bd556a5b31baa634cece5de7f400a53cbdd0b07b72c0e49bd9375918b0490a0256e1ba64223074455e6426d8b394be4ad5bdaa7fd931f5082ab19240c43ecf1d99bafe01e22ee865304accb61d2c183638aad89709926c5c4c2bbac3437b481b62b9d345bf8b28ea0777a5b876b9a827f31f4fa2b1b65301c62e0068a91ad921edbb6f609198f24927aef11cf2a4434022498f74e76bcbafe83a7e2b4b592ab2e4ed170375798f422a660f818d79c7575f7b5b31d19b0b171ccfd42a803c61721cc4f5eb467950d2b24fdae60fd1b2019d2a415f446fa074ad68dff17afed67c2735171b0e1c36528c014e31b39ff961f22f4370878f9d4fcb7a8443f9f7decf5d96fcc24c89252971828dee8b91a3dfa4f2de8fcfedfd0ff215f11f710aa3e4a446c8a0ee6eb12db72eff88c607affb5bd172b44de5adab9b80eb91cf51ab79df1dc367987e544b6f3f31e430d71c767a5f5b651f75773038cb9644845fdf9d222e85159599d6d533e4d535af90c08a9a8b0749dfdae4337ce978ed3c8bc6495d55ecf367a8c75ddbb932c243629352423350476d7b393d22c76862f04c6a02d63159aa705dc27a80d1e5233ab7d4a31924b37a35624d2a56c9df08b4c2d1a66752c0e9aa420b4e86b2e03ea2d204282a31795d8727611952b3244cd39fd7e7f03197b6fec6a31fef2ca92588ce29edfbc04d9f76f4786e8e9354cd3f03b4235499ea7e696c9144a219ae36ba5dae4f40e5071239a8f0d2dbd94aa0f006c1cd2e99849d6dc31bb980743f06be82a1e2d8590ffa08149a2a44ef5506cc86a8654b16e8fb77d41e519ee7e46cad5d2579f2495da8be06ee84607530582ac1341a3a53299003e7536e96f4088405be8220bacb28e579488a5518bc4e71e80fcced15911fb4ee63db8264f12eb3e251c13e58621572255924469e732e41cf2f4f774b5653f620dd5559f8316b9aa3fd44373655daad7149e514911303f88eaaf4407a2ea61e636d25e0546dcceec9f79d0f90b90ad22307601059e8d12161723875d50da510e114807b9199a1e5072ce5af72af1ba30db78a7d7cfcec6ea1fb6512b087074fedaa0e82017372db04444887152ade043740a40855d139cb03e507a97b32d24073e887d92f8f495776852815152566215a647e84a95a227fe31b09de0987a2baf23f0a7caab7a84ee25be74d0991736088413635fbdd0d00cc73f9911f4ac4c8e52a52af669753bd99a9f10f467e9862b0a399503d49251bf73c111c66254bbf7dbf72d4a980490665eaf0c1bdfc5330dab1a0a2311b73af8bacbedfe53a79f74a4b2bd2cf3aa6d6e4412a0994d734d5cd5556f84cb6270405503d706ee49970e91fc49edc58d4f00da690a663dcf9c5b9bd3168aa328a9bd576abf661c41326a23c5270d3161c74175690bd51ca61a24e6fa778215c4f178d3e758eab7c875b18e0d0e18c17efc9cf2906766920b77b7de1ba988d54927f5a66098b4faef5a4e8fb69a0cd849283f79f769a1cdd794e276b7edf4966680157c573c64b2534b758f7acc54ab3317e7e0415c01676608f03bf9245d211804542c0f4148e209ab7fe262874ed866ab0393f913f2a0f39e2add945425d5260c4805986ca4c7d64d1621561464d1605a22017a62dc1bfdd52f103c27a00188cb7ca705c405720ffb2bf0549fb4a585aead0a94a2424fdb5f12bd0c6bbfaebbc197794812a76122f0c7bc99b74ce508c4fbebd731ed5961a24c9caa9354bc2a49cfe9ca68e5dd9a5ea03617d2eea35cceac902ff026fbb03a83b03234e178840db1f7ff97c4f597ea8493c0c76bdcb591596314c309c798751746da89f7111d8c38c085b7835c1c2b99e59d528bb61be791f43415dbe7c2d58962d6f02a80589b35065ca34194502e5f0eee938471e53f2b13d05178feb292accd1b6b90d03fe102f1f37ab118cdf591187f8f06f58018df2f646ad3f31116a61ea320cfed78598c7b8b20df7b46f3cf02f5aed04ada89392693547fcd0e7fc3761fd9c04afbd4a54d5cba03a781911545ee3bdb82c2bcd7c443884cd7ab201bd48185a2100674b1f9a2366ab14aad079bd4e70fc4426ff6ae1b84f5b3a700ff2536b5d4b20e3396d868c163ff44160eddaf47928bde7250716549db2652593f8dc2202c0a995a06fe474e4c9bcf113ef27f51985c662b4de457dbd1a8041a3d72541fd2592c0a16ff15169ffae4d714257ae3d26222157f357dc5fc192766cc5ad231b5dfe2b621857f121ba1d1140265053c66c9ca3c7232a992bb22a113e7a93c7989d263a704e72383f753d96ac23e788172c8f9c2caae8755a615592c2fb3823b59ef71779f42ad6b28cf66ec89956a3a2cab815eb31f4d229a64e96f41cc7463a5f89a96aed0b611b32e2ea3fe66e4d2845057d89bc67c92d5fa05d0d74527fd15c9fec9f06c1081127ebe0d0324d21a63e88f8e47050943250e23f4bb76edbebadb96a59d8c130aac1f5b995068eec66bef46f32bb54b562039cfb789420f7adb6be1182c1d4bbe53fe992ce21ac0ee59ab1f0a1f9c75f074f0daa741c67eab588e55e16805a5f5e0ba2f9f2e41638fe7a97bef55581db944a5d786ab141ff19be68f13dd42c1cad247873e330f920846046e4eb35d87609126b1cb882ca08c18d9b99684ddb79c04a53e4a4efeca9d2669e9ea65de1914b913242297928fe45b5d47a6d42bdc8f72ad6678e9f47ff8522fa518d7b8300c03729ce862390002aed1c952122199090e297071f4c8f1a3d5f2bb41e9c42e013cb797b0e9a01714427240fef89f7f35a29404502fa7ba8fb27e1464861a3baf62dbfdc00c58e1edf65501e1b00b0583c851a5274529118f2f053c917e2b925864430594d3490582a712108815913d26ed30d07ab6247ddeace8766fb6cab340e9961d5a7e80606e0b6b79514ce21295638794c1937c0e950d9773b7a57a003231d30d7568480b6f27a815f1aa5e150a8b43f8eb07802536b03939b6259d89f9ff2ceafbbadc0ae64d80e5efede00a0603b148d6b29f8324f73ba2cf8f5ef1e89993c637ef07c85bafad1726bfadcbcbefde76d8d383aa2861eaf0f72b763853d0e61227216267f77a96a7478c3cd3e04edaeb3944cd86ee31acd237ef1541141e325efe31174b098fa86f55add427915b2ed5b6410b0385aa99742e8aa39f07d47ed6a4ba5e5982b94a7c27db38e16d035dc60009b066e3d170228cc7140b8d550f3b31ce0f1e78888566e9f5daa3c66a41b03b400e545fcd2a47983a09600d65151f758cfa80a7aac57f9b1b52db34818e9b8031a9cf35c9b38cab3dfbb26e80354b7484f195ebdf59a2910e0d5c12a6db475bd561fa06718746b340225f9f4d69c4e2e6acfec7798e8cf1eb7a59005df1cc4dad4a0f55f83349b167e0581017137fab88f171e16b88c63832244b5f1248a04b6e2cc50bb305cf3b79d54b3658540d6eb5a53e83ec4135b5176e70d8efeaec3d7b056bf33d5d10fb1cf1350a5af9a7fcd1bd0c1ca54aa70d310220d6c03000802f0ef63f3772c42e6a1e428bdf8bc9dece2ab1bd722ddab56714f507e7fca965f90bbf018784d525c6629e37e25e33cd6a34a59db69db17b40013adf5e7ad3af44fddbb337be31c7128aea965ea59c3845e9949636ce9bfe71fea414d4823b193568dab0de47c80d2dbaa5b030e67bc1c08e83a58d936831cbd79823c6233cce30d61db894517085bb87b291005f53c0b53a386d2c342bdc69f2a0cabcf3b8ef3a464d707e12aed14c66a2cc3e28a9bef40000b5e907191b4110cd8c8c29da111ea009dfe4000825c68dfaf5302c5cfc985e56e52249b9ddef8de630aba704bc66729ef3ddc4e4cc21af0d260e4357ea2acdaf8d6cb92466e7143642946d93ed2d857dfa84a7b8a27d12577b2b06bcb092a775dfd2fb85cde1fbb5913d213394b30b1d29c3809f9b79f87c96382c7fa8daca3d30aac6857fa8cf1aaf9ba26417c97e3f19a8655e3ce658411b8c8018e1c19c6b7bef4ed0ba2abe107436db97ce0b6ac34452992e1dc358b13580c7589e1e62b3de388f6b13e4dd697ccd3b8484efb5d88d6782a16d8d11d510df21b0d5100f6c1a364c28f1928bbea40c9ae0fc9838e0b51da7636dde83fa5c5fc12fb104fb3617c1f8110f3f582e915060606a889749e7d2f1a2f459cf77d130005a118522485e7edb63fe8f4185297b41e8f613c47a2d36c062e9ec096aa5982d6406dee0849d0d1834a0732e0617d8e2403db29c2bf8ff7e16cd5b5087179ea1e5598f4bc227ca7db7ae14ea804b112e2acf147da79c3ad4712f21ea93e8c6e90f028f99a7711b3ebb3421172778333d96b212c715d11a9a7b359c9a6bdde32074b25b401c9655ecb31061d5c895c212ffdd62ae4133682c97198f79d93fedc3094adfb0b4d429698b769c13bf5dde8f3ebe26d158c375ca65aaedeca95aef95a36221de430da79b296ed2c7cecf765a0cb54467bf65aa0f18c7fb9d7b0107653fc3c9f79247ca198e54bf87bdae90a549979212686099c405e8bb83d5086ec2a5ed7202442c9f223358b33b25019a0d8f2cd09914e1aa8a2895ad5cf1c997ff9e92cc370f8bf08b5cfcb8e55194cefa04b071188478542464ecdb317ba05d029b198e58ded58885e7990bb79976ac3b6b563a6dda98e15b5d1f3cbd3f6f3bc2091c395ac4a102542adaddedac7978c958c0a6f17b1bcccafef45bcd641b9c80caeaab1a73282965753e7035d0b6d2e8288827c42fbda403b1436000500c360e080684039cc9e85fd19a7782d1065b18bfbb2b2f9a9c8be0b97c5370d1b177af90a650c79b86cf11a895d3a5cc89657f4759fbf607bf38f82c1ec42a81fa0372383495a2ec861d5c202b950f8223bfce5dd66198128b947b5541b38d7fdc3e051dd19bca1d916582172b557c17fa81c5909c28c2dc4fe0fd870dd3e3f1d1e967b2cd17f47997bd7cccb9da8697faf9cb0c87619385ba6ee9d84115daa555d0fc5730981b1a297f2f84cc11586a51995654678168f85feca24aad89a83f6a84d8d535caf9dcfe97aaa7b151ef4ef3fc0251824a416e38389da4b88c0838152b5a8ac98bcd9e706ad21f86f3bc111701a1b40f8709cd20ccdf4ada4552b8de58614010ce6518fd3d14fcc038895ab7e59995bb934e9058b5c11b23765b1454feb29ee14795ffc63f08c4a681e1701483676e28ba2b0e031ddb8fb396f13a87645fe145f8795e1313232ed3d385c3318e0d2c6a5b77baa9606f16404709f78c393b16fc78429accf1d857b8b0905453edc6c388ea7a81b8bad1ee930cfd44fdacbd65f7205b4d025dd405173c53e9871c59dc01b7bf72fe7a868d0b5f7550769cd509dff62cec645d22e589b21f021ca2bf734487babb31cf22f21809d4e819d087748d73d826ca537640f92f7c2b2493210e36036061671b2d31c1d53c5b0b4768d09014961dae59e71e27c6772ff82743e7b0eeeb3e9ee27fdb1f8f95aaf5934075aabea6c8ae31c94b27e31b0bb160e5d3ff33658f353ff1dadf4c170f8449752353f0fd670cc88259df073451b0b9c5fc63bea8ae71eb40d2c4124b80e976fcd835c40f6a2e43844b8ccee5d016f02f61902405cef9d98e0c23bf8bcd5934f7daaec36cfc1ea4be353d41d3eb4cd6531b2f23b10f5b5edc8e664967728e3f401f518915640af73eca5780c1047d38d1b45ee7a6db85e559ec8a5079e544a881996533b04ec513cf7f0fb9fdd417d12b762c29ae474c3e8314a0f99899bd8ca30f64a6098945eebdb6f36bfa434e4d19801e169f1be8714c704f1e744a3ee6a5017e9f8cea237731036203df919961dba9ad0b2852762ce14950cbf1768f6537e1149798d01e0ca48e0fba034333ee1794c621a0f575b5b8a8f10ef61c7f5f9b4d3d73e23798786f5482d1933f9b33e11b4885b0df4a780082931761e35ec9b048440a495d178687d79618d0071417e05d89a2de31bc1c9f5b2ca263e082452c622775c7d2c51cc6d1fcc1abb22677d2c5d21f4154782f5246c6b88213c23f57a61a326f20f1f36a47b78abda91b90cf3adea7e9e68e5aa861fec0e47bfe19e6b50217945c8cd2b05b9f30bfba837004555f84cd59f22ddaf286dac16c9568b7ccfb1394a1ad5f9a3dde381524b17ddaad790837cefc77c375a38d1163ed3e8ea5d3c5e4ea0e835886750619b73b08bac745cb097ce82d7ff5afc9cf28ee8b19198cd850ae8c55ec6cb8401f087df0dabe50b2631457e46768983373838786da0edd398f79aaa1e644ce8974e9175bd5f019cc6482ccd77ec160c46e04282abcd6b21b9ef70ff466d83285ca1b6b75e40c96fa27fa30857be79bb7d8d347c36d4aa8c68b04033cbc4f352ecf33204a0d8bb06d367d4fd205c8f4c99076db8bd225923c97e1f6fb4883797ee831a2a59b5cc2edffda59c6dc4ba8c77fa2e45718def7aad22efa098dc677644e2e9f0aa7c41ef621bb62d2eb06096bca2ce15147df91adb10a44e07675fa09fdc88bb691ab889f876ee1a9901dfc8a11ff58c75c80cf602d9bae7d5ecfa26a39c21db6b36cb95aac1b35ab93fe7b9919ca5105432e5444684f38d64bf5633aa23dd009a411dd7a8b591bd8943f147273dddb44384676edfb5b83d36a33031c07b763dad12a15900674395eef1f6978002586a776d8bf895a4f54e5ce179f27809d59bd5ff9f691cc6397af55f4ae066ccee8432f147031ee1e1722e83a26c17fde7a09736a09da0bfb212ba8032e2cf48119422a6ef909e0b85af74b08dcbed867503b697849ee78e72655c82bc7bb1b6b36089eab8238b1f94d6ab348d9dff2ccab69a5e2a81b74f1dc9f6afb69aa1f87e1760fdb66a40fe049e850a88892a7c81ecae7d08ae0574fd9c328cc9abd49d0bf354dedb28990fc46a7dff6280b814a7f4561e347273afb9ba856cef5897ae6f90fd810abdb3a6663960e694eaa551b6b1cf564ad50aab802dd5be6a6c184c6bc604a2a45770bf062de28b561b379eabf9b5ad17d0e36dfd19f93b1f0d233fbb98f90c4ac25ddf628f21d7f1d5301c220e110a5ea0dbf0d3078f506a7d61774a59d049cbf6e5ee2422f4b2a11f6cc7574af56791d72eba12d5e08ceb6ce70d7bac0be77903bff5e5b0ea9d121ef599e675398c2b31e3b2e3673e2149b34d3b53411ad5ce548006ac7e33dd9046e9115e79705243dd28b30a04a37e4e6d75f7fd6454446ba690e84fc2ff845c7c50fb9a9ca412fbf1016fa24c2b66ebe0ca97b6280db78bd9913c2138052cb48039e6aa2d05f9331de2c115c6a3edf5b2a9f4e242a0532d1df27ff4bde6248bbd3d7e48e4a9c3201494a544b7f9f378d591ec668e076f38b00cc2587d2374029bb37ff6cc987528fc432cdd270fb6734b3f7c4ff7052e5b800d861cbf2a4b3ec9a036aff12931eb05339723cfbf804c5ae8f21bfe6e1d4d577c70fc203e1a43588d3bf4f762f012c83ee0ab3cf53c9cce06b3700a6182596b24d693ba9977786f2ac072630f5eb4034c40cc8cc885d64094abc1f996b9e60a55b42a7a65052381aec6794df81831d37708befc6a0b6c0729a22fe6cd26bceae01a59daf4ea0f7d675d76c0a014867b5174800e15bbba69f777482dd03bb2f2ad7bd57c847d540aeeb0fc4b1903fb66c8d81b8743fc5ef49751b14123f6606d2d1553236999eea39dce079f6f35b18b92c67368b480109b1e07a210a34c689f2b6093200d9bf9ade2949a8cd45d18d6f1bf77ee544aa75384c9b9a19dd4a236c908a7bffe6f24dd2216936c59dd78a88fc9ff99414954956806775755bc2f385cf75d97fdf45d272fd744ad8d8dd779a5d35f323568daed12b242ad028454b9007bf3970919b4decc74cce53f807312469a51c4e3f8f6351eddc3606309731576a382e235a25b62fe243f1cac8ef88a7a7650849a401383a907a9bda9e6de16470826d9f88e758399fefa71bc302c293d9bbaf9c6fb194dd96175ec382714814578e5180aa9b52a7b28927835984170034dfed8b0c76f0f76bf108c682078b735eea5866648e19a06b906cc2223033368a6d030d86145a7fd505266448dd7ef6f041a3f7b768f408f6d3b65295b3b60c2ed714525c2df3c18205c99769fd2ef91ed77a70d92e7f0c1c0d06aa44bbb7119133a9e152bf71d4cfc507e0e5b25812183ec6c3f62029f1416fa58fd21b3d85f0672e3fb90f9e5018c5785d88d5ef358c4e964b9294b63f96649d8006b3c52396a87223f096d76333a6b9fec0309aa71e129b09534fbd39b0c83e24bdf9bfc077242b452de68d2df3c0edbcc69633bd5472ab776c662aa016839bd0a1e311b13f1a70b1bf59c76dc10637e814da4971aa8b41e8ff27bec968580a1fe495920508ad3db456d19f83b383418495579fc5b6d6fb76191e8a092426a8905bb29095528ef2500d96c1bbafb5b8b40af4abf589cb1b892acd78653f82d342cb704bd907fad44a3c0cefee7dcccd39896f1879af3e07de236ac29c17e5aeb33784779486908bbd54cd7f70dda6b5fc15ba44d67d7aca2f9166797e6519a09680d6be500e52a345454cdb4cfa092aacb884c2449e029063585bff8f38abd5b8b0783ca80e5e0bb92b3500d8db21e96895a2da1ff6022d4afe8c8d033074bcf5b5c201602520986f554f008ca6d23282dfed04295ca697f092feaefe6b30873b73819352d543831bd0c68037cbc34b42b74c719ac3f46880a7cac230f13cae9f5e3e692a401fe7310d693a7c7d57fdca44228209c7635db0ef437cb9783d6c831d2071ec6c4444e3598e7c9d0bf21502a2f04e19bdf7d9c47031645fe66c40c8d09f8b52e58fffa32d20a89ef10de58d653021fdc0ae632060545616dfc86e1403530bf6b35adf44916ab2b1c19ac0e1e06af7ca58f22364134802d6391e7c276b563b4a0d6d929b202da5f53b0e815a6374059ea3f76920a4b66ac04439b53ef479d6662dee26bb68ae1e852f60056b143c31893949271529cf66981822a989be2a8fa234d590bca46acfd4fee2acd83607955927317202a7e42388745aabae093c88fd0c4e29171b55fe61e18bdc07e7150029b05c04091b1fa037dc87525f3b1cdb5ba21c2b899d8903b13cc77e58a69f74c0bedebd9a40322f33f2d1f8fc73b71590f7473890edb9cd9bae667f9245cea9ca30a91efbf41ffaa148823e4d6345b535e23dd47107995ef0a28f506200de89d665b0cc4f5a267c4c2220863e4f84b25b772fe6d395044a5f8ed267e5dbd1b229bc2f13411c1c04f3dd5778bc7e6ff2fe729d3be50fb33cba28bcbc469a3bf762e5f0602a78a736f4057b7e947a53d45424eb031644bb728240434d6bd56edfec3c0bc6daeaee89433e4b476ad63ea7e5a855526051603cc7016f9aae121725408a4b7ae5a59cc9af8a0f47bc7332307780dca020512b8154ca7229afe19036f6d85757822e509679a7a836f8702029c7c37f4a7e33823931e545032b5896b6ab50ae5bfec7e3e4396e768d9f36bdbc1588b70f649099f46dc76e35ec7cc7fbb236d128bc8b3d7a1881650c7c54620c80392f93086fd55143a85251c573579096834d84c450be7352b66937e420c7ac2af69edf06466b88808edbea9d7cafb46bb6ccd9e6c4c2bf10fefed40f4c1f253c3414df06b65de1492db01b8f1729d9f4cf0db6695915a38ebc076e7cd94375a73c1ae2f5c0b83b272a8a0110e01825949f744c4be5a13590d284d56131e78bc644fa1ecf7f4b8662a6703c32f143f40dccd9f1111f36e128ce309c363c79ccc430ba2af498fa49b625be72eee481541b4269a12c509ce7d1fdfc9a44ba4c91d948988215f92c1d4c2ce2cd80c0bd87ccf2a778e3e3e7dad05fcc6a4d49c3a7526b8107ab90c22f0b2ec078d55fc085bb0b2d39d8b35d22eea78dea3ecac1cd6e85667cfc177bc236a9662505322f770e1336ca1634fc7b7bd502c0f7187339085d650aba1bb1ab5c869a8ae158f23d4a9100b6b5e04974aa131ad01b486b140ff56fbd24d4d3d393175cdf917dc5e9f432bfa9068fbaf132deb8c7f8d291f9d3167d04c78818b90a511c623fec0e42088c13f85684aeaa49a43f947a77d57a22ca5335bd8272ede514d2d3d1c8384234e730174074c8aae663d9e92faa909b2bc6b2068ecffe966eac80f8bb6eb098f1ca2f2088c819d05bf7dfbe5ed6b1554025ec159356b7ed90c8091ad84d6027641ea55392d46e513b0f3bcf28dc2e145ce50c62f1026fc0aaa3568654d6f0850d1843905fd6d6348e12a519c07e073a7fff4ed02104cff0a91efd0eb0455d7d4f6025de1ee75dd45a5f2e61abb41e9ad91fe4a709674bf37af38685c666718dbe116de84d3dd1627ba52cad1a0c7ffdc4481e15a389cb52c7566a47ed9695694481fc7b69625061c45501c84b9532a08fea9aa8352b112c04a394ae1fa2e67612f8750a2e3e60287b5fc7c2fe04b3b4163a5cd51e1bbfb2d0e6209e3b48f75064c91b2a68192f641cb6056efa001bdd30d0ab752ac83ea9a47075fa4d7dc144126ed31655faba937259f9e3a0c8adb4e8db38437b32aaebceb18c2cefb63dd7f38f582c93fc9589fcd9e6fc93abfe458771235f03024ee6c3129fa1afd8ce3d122fa06da28616efa39328d86900fe926ec08dce8cc34d1bbc92bc4b949131e2aa4a8701f57edbbfc3185c5a718d750ec439dbf7518e72a0a24c261da33ce6e501b82bb18fe2aec97e8726a986950a22ebf1fc272694329f533b61937f961c980411b96b3a5ffb3266c384b1f7faafabcfc6090e2e5e8ed52ad70c2717da0002bce406c240d33bf06fcd81a1782a8f7a0015e84028b87614e26681dd5d16ea5d8f93206cc2d4054f3db47a6c28c0d2d39905feb6458c0cc1bf1d1bb81acf51985681b2c293a2926fb1d6cc48a5186aeeffbeb44a923132561561e042c43aadd53c876343ae20f4c3d772e8313140d17a69021a3eedee93e10dcfe2086daf38ec72cf541131c275931abb4667e6f124153a0013b691b48383cce0531cc01086e7b1845d72f182037bc9ebafebfb984ed52c6d62392f4ec2f3da41c7920d5127848dff1a509b52d3eaef1a93071a86e0c24e223b34928f96f9e736860367571eb6965b99ba6193f7a47bbceec3beca4e59c9d13777dc3d61f3d5ad280dccdcd3244e9e2b613f8ef341b3146e70b26c8d0b7d9a57b64db7325319d1e1d0661237a9e6d9051cc7fee4abfc12ed218ce3c0bb6b840e099c9bc51e67380f72d82250d2d7f54e64841858a4f34e892d46129a44f32f906cdcf6a76eb310a39c95e0ff634007abd8eba7653ed021c4afe22e2bf1d7413a40fbb04af27fd5f2fc5233dfd21863b2bbdb304d601d16ff06204a7f031f566bc8c44325697a754dc1811631cb35d46471ac2c5748bf27c9553d69022fb98322ad7df9192b6bfc7c22dc3aa2aa1a9f6b06d1c96d044a8e0804cf63d41dfdba7a7b0b36cda0731c01d7019d21049c3de8a607cf84f7a70b0a3da3f774eaf1887421ad8cb0c69c30619e24a3751e52fca0261a849b5b10f9e370b6c4d3a76909887543a418afb5926db8c4935174dbe3977a2ec2ddb94d8c68cf3723b3d7eb1128ae292cd300825ea9697d779734ef977b3da78d2b72540f18d39d0579f56fdfb6e89d63587438fc5e7be1b722c03f16ed2c94db183a290421b5ca58fdece7d06ba3b9f5e157510c13bb670df0302d7f48abb2644997176f81f64094a19d9af85045fa2b670ca58e227b678eb7ce47527a3efea7e66638c1c9d7676c015d4e8ece9359b9bc88da5e5a0f25f11598a2c86d11d17ed057481dd7e1dfd8d873438c313cf69fdcd425603f50ee5232c1f536cc7194e4126ccef0175fe7e04f9efe003a4e4cf3a88e56f28f1c4716663091a1185101d41d7e921b93dfcedfb88ee3df04bffd785268368a40d325aaccff1eecadc6f05b36b8631ff7b57d33f2679f5a94e52a6aeaa83787d6dc3f4cc9fd354fc98bbc4d9a1a2f126c7806870841630dd1fe5ad78ca773a08d1e6618812dbcfd957e2f27daf7654cc0834b2b6baaee871da9f470ff52f9822587f1f6ff4519242221061aff77b40dcd75b32f00226afd7c6b46b696ac6b7b8e893f3c3f3039ab401aff522d1608929db2ed2caa9d1125dd2c1fcdb14af044ed983e0b8d8c5e699eb37be29423e650f8dfc6f35d05af954ab7f68323d56d5797ad0acde32dc5aabc5ab0e8ad42126167690d92bab6e425b63da6406d8c1a4fbac6994f9998143c162265e7eeeb843ac2ff855f3200481b79d3b0ddc6bf5a475a63785d6d89a2606f41465b66e8b1508814f00438a94b32f5ef1bb88c55ef42340b96e0676d855e3490c4fee2db1e3f115e1aaf8e68fac884efd76fd34774fbdac521e226e8768ad50e8658a0b64982b45a07e0d06b81b66e92b81c8f232fb2159f76f9345186fd425d6677bf40dff68fc521907dd28a99b87cfdf9f18a2ddc212b18fcc0319b5e054407fe2d974199812481915f3168a781b76aca64b2b3c3f9fdbe0098c8c769f42bf1dfffa95e3f3e3d3e67ef120d46072df176c1e4fa782b2e750793886b1f37a24372aab9d6462c9cd7026471d9fa932fe7a946ff3fac1cdcc2d8c19825c50cdaf5b101e07271ce0fa619833e347860f1d06811f3214bd1a8eaed7c529722d92aa7e1528aeb69182b6104e6dff5d3dd0bb9eec74750fb6b36367430c5f6a3118bffe079f5feaafbc4b35a54aba230f7f91849879489cca8b052bd2233714cf41da0df58b5d7c2d878e0bc09707563989c51791308eabb8344bdaeb0945da264a0a34dac33c32c4626767d38ed39612eb8b31cc0e489e215a13f027b123fffe5fcae2bcf29383bcb6f141ddf59f77be57418dd85fe6b69757e7c69c78b97ed6db9911ca6272dccc23c40ca12da6abb20dd092c3f40bc9c0d148ce6e8138a7eb48876da9112bfc196374857350f52da04627b0a15275eb8759fa8ebda6f4dc1bbb8a3f1fba02779ea503958298785b2f85912dfba45cb4746e0ea135b9a6ec682c1cbe2cadd03ba1739e35a7b48e321ac79fe9c36bf4133ce9e1687b543e3d83bbded0ecda8ead796ebec6aa34909b28d5e62bd98cf42d4d120775a284eecd6e8eac50ef4365300881ff953f6f7df8c96094ccd354361abafb4cb803a4fc8d4f329ce570c8fcbee98d6da539ab4f487fb5d3d92a9fc5f915f2c441ba31236733582ce50770c7f81efd2d92ed753a450a1a344072a70a07dc25c8d3d6616c793dd9efd3750df0ce8961a07d8659e15032907a5b47629e13ba29ded769c0c0255de4bb17c4e8bae662a7aa11ff8d003b609180f24ff444cab914d71b2f25d5580ccfc9e6eaa68aee71d008a190d1c59c5724c6973b1f3d560974d274050a2d9d3a347ac6443212ed51181c82d4b2499e5a17a284840fbeac62d816d19392ae4d180654fbd48353df51412200505821b4aef5e38a595376f14ad544db2727769002db57f5ab1793f42948fb3c3424216681118746596130cb5a431e8e929c12fc24d39367bdf94a3f9fd17ba43a566782001adae5c5011cffc020bf4eb5871d13321177e14e981e95aca8d4342bd61945a76854b612b4818412bd6471574a78fb6f719150c1f11f9d0b1190db0fc9d9a592ceb66c0bbe0d8b0430b782d75b5f412042e9cf69766c87f55a565983cf5e356fc908ede629721861528838734a2465dafe7573bb579527084612250ee3b0c2b64090a07013f016bd32e8edb9fa9c90559fa80bfd396ddd49440a3de72b3dc0f3e4cb3ab993db32bfb22b1ebc6b7d2be4ec3247b9bdb911ffe79e7d2bf9606c545375f97f10c1e10518cd345e6f0a922d3be9599abbc5fe57d06b2f66c91ada18609d6d4dcb8a176a4fa98b4902a3d433d0e6c07b38236c79628be918243c25cf5e75b4c2864368aa67e5d31d870a28d96f915905fc78adb25e1032fe4c22c964759c959c9c4da2d9d2c4269df806aab9f6af8eceffb2c5220780c160017c76a92ca33dd43a35277259e49278d4ec34bd06e1f689fe36f4c48f956ea7fbd279d580b2688055f35538a708435337f6afeb8b77ef493149f23cdb3cc2213263c1d78d06869cb684c2c6dc34d87daef6f8a291cc2dd717cc59758b8454b1036b3f8d5315bf904c541b09fbe97be8e2bc86aa117ae713adac3a0ff601d4296c637febe2bdb288e8e9e0b1708485e73f8ae5adb451045a541b7dbeac6d6e30a227b9db21dbe3408731937d250a43ba5cad91bb8ea3ff6b599afce4f49d1d6508b0fceb44bd93f8f33353066c6ce00eb4d7ae0676b2e8fea1eb67c810d0d69d2b61207535f9af588262f37a49f52d2ffe0100375d107e900df23047478ffb18b4ca8913fe32fb7ceb43d6c7794c069d3150ff63d4d63b3fb4048410cb5776a926844c0c5c8411584dc1e66a8635b3773334a957fae0301c2785faff934932c361cc6d460e1399880aef69bae4dd45c70b43d43ccec277c6e14d901a628c20db8ec619f6e691c1952d17dbc189617937ec71d7c2fa16ba42572ee2ffb07dcc4c4515c204e79f02c83fe7f4c5e09294db8cfb9c8c88b37b8144789ec5d0e44ce503794b63993b864ff83aa261e7110aa6ce22e3bdc0cc22b0d1a7ac43fbb1d40327fdda4d31afb6325c0aab6e621d6079c4a6adfb1aa9fcf0ac6fe5c19519140d87e2bf8aad7da0f55ad9c09a66d8f4950087cc9a08fe308d5fc988c72572050cc7c8b18f676bf588e53c90dc92f7b22ce4cb9abcd09d0bcd5bf3448db190ada3d36ef8e5f068e60034eb59be2432ef834feae1e780b17d232e69e9e5d26c0bcb45dc7c9087d71ff56527f226c0bd02d8339e4042dabaa69319d4b3cfed06abc2b156eead53233e99ea38e11d3eb66ea1cca6cb4d7a21d31ece46c3156af7d11407761e5ac6123f5269b91598fce34ace3b54bd076cf9370700e59f42d1e5c85d70f4e7f91ab914a6128cc9e709f233ba5b0a5fb2cb442b6674441da46bc0dcf9a5ee9f06e93d573654bb6f6a8d141cc28a7c3d080f781418e0038802ded0222e6599c3bef02e799de9aea4a5dd84e686936e5c5e2e36b8f589287de0457e9205ee8fd78f7c3866a4fbe64bbacae57e79c32e3e9fae50dab549f5800b76590a62b681daf3f08f76a20f60f9a314f63137f21a2a2d30f2923069ca899ddc7dd16fd2a9df303e343b90393a5d9f73d2fc4f8bd54d7b19882c7355790f501f0d12950f19ce7fbce1b7ed77adb09c6fcfb05a3748e304e59c48ff06fdaf688979c62337874d69c24389156a5e23a5f97699dd6eb25582e52ed4dbbd7e924bd37c1a4a2ea3d012aa5551295a235621519647af077e7621023520ed357f0feed8f4b99de6830e13df6bcf87c12b71a9d1520ec33a217ceb5932d47ac0b750f892214d6a287ca6a461e5bdb3c2b20da941f27a83bacc5bade0dc13945e22a7a66b714f9eacfcc9be50b6a73e137bff59a5174f63a07ee50f11e05274a2017fe3fdacc290b3d04de460ba99b201386101fc7a09468da6c749cf8e9397cdc07a66e5ab6b23cc1e408415325ceb2b168cc54232022cd80c035c0f3274946835aa198c9c9a463c1f30b8c7c926276960bd9ce0a8d2757069ca80906a0d2ec5312ffedff12b7be95028c6800330ffe5cc2b952a4050b87b0490afb524cd250e13e45f09755d4660939fdd6c2506e1a31dedc662098833d74dd618c98c056cf94b21e8671c10800deef03e383458a64574cdef52ebf5d377d37042cbd3af561270999492eb7c1c1485b26976e13b2cda2840f2383eea289a9d6a5a94d437fc62bfeac94b79c9108710519e48d8d18bffdc79e15582f76010c7be481f6dd9b1e82130bcdb7c1e9f7f518302651100062e5aef710eccc37a36b987213084a262ae58766d51c547c4e657bbffa0eca743fec0737aafe10c2a4c2984e82fc5274f95f9db8579a643874c4b773c67c93d7843706cc4b5310d126bfeeaf70ea30e6b6d02f36d128fb11f50db9eda43758bbe001c0a0813687e7a144f8934011f961f16c9bf1e5803b0810aa542b79400fd71916fd63b9f2c54273e8b01444539e9ca339f36287a3991bbefea4867d7b430e385955ce3b5aadaf367734f31db681520e948750e6531e2699dd3356012f2cd2553e9ffc2443bb52a26e110097e492d15dadbcd1fd98bbc7560ff577f989555df650ae390b0427b569806b4b58ac0077fd063166c23cb1d81fd01051a819d98b0bac61d1d4fc0da94513ee464d7f79026ef8335ba54f0114e9537e0ce9522652ac8502c7f60cb0d69ec48e43ecf3fbe06d2d8cf929a3f4eb153a6e22990e5b14db9ef288f719bc0481df1ff5464437d144278e35bf50afba1a20857232092c60a1d3aafb998cac6d6de7b2e58fce7b830eb882dbed32d5c0870fe67ae7615dcb3490097686d133b45a14cb02b5943b17f2885d7230663ea4e20a0d767a1dcbf8ce58f188a0dbb848b1d05faecabc1a984e93c34e77d1bb60f885796997a20106613f37ac799fe3515b39affd451190dc06a861907099ebdcdde7286fb03f66e35071e12a7a94396a0fa3e00f7080156841eb920329a91d95a90fe1c33aa3ef58fda9b5e86a39cac4d51377a60f9be832235357218032480e0dcc4a64b2616eb9dbba17db038feb8a67c4936901195b79462d9aa736250c035964dc42f9736586a00a384f049b068570a608825a54b3f4f097c88314b9c97c230e94607eb472860a12925723e67360ebda3a73bcc99c1f5706b809c0ebc44abb7882521865471096dfbafad7fd6724c937d55eb49c28688cc0dcb065f95989d04125fea5a9308c94947ffd91f0efa7d4c94a1c5b115e711a63d0d13ce6412b3e8091965708306ee2e653627dd7fd1a4b4c29ceee145bc69b5c281e4bfae6b6ac3b6e24f9f0a32abc9e10f8534885f4f2b53bdfc9b204a120719ccc853fc9a9daf1be22b72f80e7001b029211e3a7d792aa7c91ee9e47a696387db39405f333b3117efa9c7b16ec87cd46c398c7f1418a05d98859ade8b9e69d7acb085e7d3d008007677cea6e110cbb7d377719a614f654c2fb705ae54bfe60bad4cca324e87018530d047a30b596fec40202841b4b3b5c9173314364c183953e18f4edecfee123ffcf8a8a19f141440883f3b428700a92b8462ca935db87229c7fd09cd60552e42aaa7c5f0819a04e9fac8ddaa0a4eea0c63607f4e33b2044017d66d4a2dbae0e211b65a093c114723cdc042be04843e638dcef2d546f790a8c7deafba71fb74bd26c4adb32d1f1192b88a061689bfbf71dca6083f61599d8f0dff03db6cd7db61f5f6cfef65d3942de6a90388ddeff188893a9c78615bbe670a95e080cc2ba61f50180ded2597bfece00eef230d703c4cf1ce6ef5cf1eebf2073f6905a17f7d034c831b3734f64f2aa73c3d490b6a22aa6e274964dac5cc37e49924cda90d07c6f1d0e9aa9b138d8d24c3aa721c13cadf720877a1ad662a55978b8776f8203527108f012607fa6fe288945387c448b639e0319fd72a691ed067d3e90dee8a6319ba4bc80263e0dc52fe833d859ae1f97e44a7ba684476176e9981ada10a40a700d7c81ab488d9a23789098dca0d60a48d70d9b9d1bb263f147be59dd6805f455a20c034077d35f226063e11e81ceb9a768845f3253bd9c6173d16ce32624899eb801684f00c9d35e219ac37aa0c6ad9d6203c956d6439d9d3d78a57cdda917fccdecf4cc97e0088b2f86605257de14432994f720b080f8d2bff1c7faf5080894e986bb0fb0d03fede68ea50bfded71674dd2e249ac05adfe70b00cf6444fba7dd6c4b75462bf63df8ac6f38e449e710eeff857b047ed24768cb0c9c9ae06be442e48143ce7d26b4d94b08cc7a85ec3ecef49c6d8302a8361c8c44014dcd5d26a33f7364a9f28943950139b29e90c4deef5387d6558160e3a5c53bd38fed263e47bc5c567ab74de39ceeeef29965f58b03d0443a391a3a952573d41dfa3babb9b6bf70a5f15cc50f71ef3b4bfad6569083da595ffc2cf7d4b47ea7d719d7c04ea7e6aff62885bf7b0e20f67e847ad457915437b8ba63e189e2eb2bba0f1d0402365acc884990cc4b627f7642653e353c0d690827e1a1b9216cb1f9fdde1c6d20aebeaa73da05b05ee98ad3efe60fee34c91c176b201a285532cc570e0fe7fce58b5062ee91ee05353fc81bc79824620bd38fc5525b4f8e8489a9ca9244d894c39cb520848bb498471010645a434cc5f6c56794c78ff3036becb2f0b6879842bcef0cae0ffc6d361ea5fe2e2105d2053e38bb4d173b79ca2cf6cff772f1d1335acd1ca9b165871b3f545a0ac52565f0c60e55b887fd6d2896bf5e415411336665cfb8fb479f13354da16c2b9840ce13357fce62c2a2e089bd6cf680128dc922fd9a7109977bbaef57779c521c22920d3ede9ffb1a7a79dc928cf46feb41251de1558f1ac464c5879beb6e8baae52aaff7e0928a54b14067cccf59a1e77f08102743ea30a7c002dac3568cd6fed722b58178b4219118e65f6018c704f4ae243944e79f53097e313967476520ca819e6b5fcd5ee9f17688c885c86ad16c62c14cd721da38a7728c87caa673f530ce62aad24bbdc4d1faf2f99443c9493cca000279e10a824df31493019fe9a07ca03a177b87784610f3a8142756e5500fe5fabb708b466f7f72a13359626c75597b771ab9887ece6714a89d67e9d6c8843b15229d85ee8ddcd2fa2e60a37bcb1adfba8b2d547679ef4bce34b43b0c04447e54ee8aba8c2b5cf0502bbf37cfdd0492c5d4e3869727fe9c9c2457beac293f84ab8b712846b2952646c66e31b21e02bc46f91ba32226cc6555924323306d10a3427c4112906560fcd37bc003c05751929f9a60a94c20ca7d10e4d49ab08a57409c077a0cff2d4a0f498d083880c085c88b1680a089856c8ab1ea4f19329c3f16ffdc62d3aabb008bbf80c39fefbef41c3e8415247eaf30c508503348505f1817cea691910b67328b4e09e050a54f5996bdf1baccac29e79b85c556cf4b29fe5f8be793608bbcf4b40c0e75cf73e9339d09218961d0983ba8d0adaca0a993426b80f374fe301529b340c5ac7ae6ee57b194eb1c300e7e79cd7e10cd0cbda5c0efb0451a136e639a9137b7e65c48313bb7592669a5c9eb3913d1a8cd78b906bade448e25a060acde9d55fb266d6d7c3dc55288fb6033bd830d73e638ab649d0d6fe9f7c213051743342658e913bc5c0c1b96bfc6445ca5ab28c761969e590289fce5d088da5ef8344d62bcbbf01c684d38c251a28500272770748ef48466c4ce57827f1ac7614d03b3f8ce75d3c04d3811284e83864832c7f32bbc9cd5114fbc576b6157eacfb161c6280caeea235dbbc6204afffd51c2af24afa62f5d15a7a245a8d3478f370d850f4f418877fdca877f65e8f9ce0bf369980d47a8f387c9029a2d01b02160d6a23a405fe51ed47c72d44c92f60480a016226c4ebbf4555bdbd9fb5b6f946b8f645d165b20b67ed145a6c1e8c54cd92b9df725abb7dfe367d126a392f2e3c3b9f4ad5f72586a5f5b901f6c09db06d6123c8d0327714f3d2ac19e311bfe418e9202adcd4cc27ce1617259b47f265783d8174bfcf71a3d5f9da0acc0a775628ac3ec14c47b768f1154b50254779946fbbd6644303bd9f602672e0e940382f68ffa750c179ca56d9899e0f5acbc915bb3427b9e6c4114f8d0e29da39ed5610e39e40fa8fdc251528b9be73f750e0f22a13b8b949972f4f1ab516fc35b2e20ddbf87a48e3837f58c6ad3191c052dee8491adf4e43df9f0e62b51b8c299d5c30c4a9eea6620088e9a1d7d6039abba4ed7f98908691ce334f81c30f95954db7f50e8d73e36a743427bcd89866b6cf3aa404aab4141ac405accd9a4767a5f4d9ccc22cd1b5d6e723838854aedad25ed3eaa1f745ceba43410e9cd49415b31e839be8998133571c33029bdce8858351ea4e469b5f2daae776365761d6f5db785439c5f71d595c64b8bea6549a1090e364906714abd067edcb38e69d8d24a50405f4e343ca878d3ecf65cc678a28601dd729357612f93c40e7fb623fb100b06b330cf1245d02d2b791b838e94efe775e11c39a39360e4d2318ba208f24ac7e65163664ca0f72e9d51b0d133a1bc8040be1bd125de91936ddd48502b1ce8f48615519fb263963948cbbcebb0ec43e79ae7fa848bce14941075ac121ee4ad5dee5a7d40310f7c44cffbdf85a2d461d3a2584cc8bc9dd6f2362e5a4c43d90eca0597676770baf6a8e11e19dbeff97a75a9f49a41113bc824d52c1baa486bb0981249b85e4d6ff8eaf878e628912ef22698ea85d083e641bcd65186385525da1185e8f7829f1134b493aac02b1dbeb554bd08d5c7961ecf9bc8552521aee48f0cc79c23dffb04421301efbc94c624f0e2ba974b5fbea187f45b58f0f3e2fe87503a398b453b2a475fc22b519b4a1f79e725e08b4367730312d80ae76785b847466bb8f3174a4570f232a58e8ecc1e05ad9843a583448203bf97a2e36d5e8c973392d57fe07c3949a9d9852406a7fd21c8053ebd3834319ea9d7629540a130abdbd033bd7da83d027234594bf1a5c32c11d8ed90b2ca22030bf4990a5ee7e62e2a6fb1e6c7743d1aaf0c4dc15c7732ca93bd8ef1c6ebc8a248151d257406600359f7d6ae291fa617c2159fe88c00d063a82832dd4579bf980e80b1968bb052a4cdcb4b2524246edd797fe3272df45f65d152b5936263a4422cb6d4b2d80479684c333a4490f4d8a5d75620fc2d16652ff00ae63f877a19e8b50d61ecdc9e3df7b9ed8a947c84aec9223bd9577b9cf3492b55ae2045046766302c295c4f4718e945fe4124030cd345decd568291b7f0689945d4ffbe756b9f36c9f6e61d52345767675061e78ebdf8b22b125801c9d7cdf8cc4cfad52dfaaa94f672f485e25248db4d8663c8902e14cdaaa78ba129fac91c7a916a2eeeff8985ddaacf096da4e884162e3ec1fc08db43100992961ded21f64579d94a82f85f58d862625e275d6d99fc0dbf3b586243b290974b3a7bc480f4576d0f30d84339bfcf5528794a0fd38c1fb63083d74923e0ca5f75141aff06aec9902602fb91d885aa9010adb2fe7212b92ac58a9959c7c699b999012cc0f3e68bbec325353be5eeebf4a75f11f47512b664e054c11b7999bf36f13a8b1251a4f7545f477f4ffe3246f9ee3a84f9a4c1c6d7ea2fd51a49ee184ec0ea5e4d495cc1280e5a6ffa181b1ab68443eb6bedab952f9b9187d6d77074194cd81fc56c7bdc3147616640ec63ea667dd800d838685828b4544bd64749efbd82b9a3949cddd87cbd01cba8fe5aefd45c4482aea1e3b4976380e2ca9c8c5af921b8c5ed74a02a3634bf21bd234ecc883653d7d6b36550097f65564130d83867323e6e66be167ac99f84364bcac49da3b00ec756fa5a17521d8860789beaa1f38dc25f515bc0e8bfe1996bcfa6c73dedc282ec2a305e600f3aba2bf74bc58df43740692c60827f149a376a50636ef388045e0a3883794f9ff2e1c8887caf841cf2b1f1760768d28d3c37fe213f12cc02213e8d6c5dd8e7e21978147f711df78ccd9d1de53bc5742a3562af40c2527bba5218bc16adffdc1950ff703269d70d12c678993331271fb236f7009b58293c2285315e93ae7324bd931813cfcdddba83f5148b82cb646e8c6d53f931859a367ff61cfe48ce49de01b8f1f31482761ee792b8744de6884b92082bce3b02154c23f5545490f8bd10b782db72323312b761319636d59eee0abdc25538302f44f49a911dd45fcd197694004cddbb499b79e8d551cf66791fa749ca19b25090f5e956dc7bceee17216382a8010f7ac5fcf0a65ace4a1639f433f518c0b68775563f2367f016d2a6e03d5d803b6d070660f72e601fea003e7fe86dab178c4abcdf2dfa294458ffc86e91d5260a1094cf600ca5cc9281386404ceabf8e6b613f206ee348377774e2c37ce42f6060fbe83dc249958e62f98402453eabd741aa3e1cb64d50ebfe4ae1f0fee8f641f59ff5c93e0a046df430978b287be0f120d96e336bd68907365e521bb40cd83171b8200ff844aa97d15197bb98515177b8dc7efcbd2efc372decda1867ae44d75e3c8ae85d733dd3458a0b78e67a12b9d443a5b1cfedd4fcc27d55fefd622bcbfc5b590fb7d0f4faf3d1b22b6e16e938c118f8b0a278b9270abb5ca81e7c6619489f69a49900d17a240ead4204a65e2c7bd6befb9ac7856200f66c34e30ee2c3d6ebe7acf3db27d463010dac717b4afeb3e119b88e2ba1a794e53e889e6c433c827b478ea3a6bc1f7120e46000a907cea32f9eb1667433c6fd4a13c8b03f68ede10d2e97a02fb3827ca601d617c79eeeab04efd44e1bafe4607b24e16bbee7b395ded577b39d3abdb582af8ce9200364c9f4f2b4765257f7c707580208a6dc5f602aebc2beeae2a12af9b0822d1a236cd78ffc06621ca34b68fd971da8efa235124d1a71974f2e93f510a8beeedff3f4a1632225c9cca0ff3878f06b6e71e06e43c25a5e6d22160ebc29d0c967b6d01fc83d0d8f0995c789d981abe5a0dd23b6de9282cbc3e9e81e7d52ad31ef757ec36ed7b66626fef62ec8762accddd1a1ae7bf9d4dcf9a51de5af3be905f408e4eac254eef05872be8be86b292160e81b6b89470e1863937619b2de175c0afd10554c42fb183138690f5a4e6e2d54fdc9f54855e6ecefe61384863487ce07797bf40ffa62ea4581b57e9eb7a2fb3b1a32c9970622286647e583e3958ef92f2a776f829aa71a766e8f6f10b03cd963b937588aae138029053f88919e0bfd70fac6a04af9d27eb82ba3cfa9d9e7db66534f86d65bd90c9452369819aedb01b0a1d317d43bc3907c851b5d1abdd558c368af2b0e58bfc8defecdcec35f2aac25648195b1ff79ed9a996c2b2e33b96b7f798c95a963ec159a75ebd6e5935eacca8fd791cf3c22d8d5859c238424f673dd9ce904e278e436b604827381e44833d48aacb6764b1cb7e93516809419bc9320ab4b2d5c1f7ed41bab60f9329ff774408551631eb822952db3b45107555733612ba9b8a29a9d7bd4f194d36f9e3d2b731fc9290fcf859fc3975ff95a72017d717745c2707d681ac39163fe149c8a12e2976c51d5098fa7598743b2dac2dfe1d1c7c15ccc6bab87ece76d8c45d72c6dd151035483c858a479cf6b05e5e2aa91b5199309f115dbf94f7ab9239927757f20c73861c400ca306a9144538241b005172138440ab6708c4f0ff57b9ad77f1226370ddabeccf0099f1757504b947b79dcb8fef8bd9a61c0a81985e495e095f49ca455d7c603aa90b93864829f717b6a0c83e406878818fbfc7a97bdb7613374a0f49fa1e0465f4d19eadac62b8b611d12ab22c3dffba602eadebcfe7a6cc1e9b840d838132ba869fc638bccc042d41812fc40773c96db84b2304caf6780fa2bf8addcce8a6bc63230796196799344a74ebd20dfd53f8a8f76ed226f2150c218265bc54a8b4d489b5104e3fd318960589c064cab43c89919fc542beec5a9f211fd3706c632a097b99d8c292c4dc0a77fe67efa01e70f5a7807bb6f739b9c407a76d7b8120c02df4752841023cca71cb3c3b6a8f824043dea437b68560f36e63d278f4c2e71567a239ec25b35b47fea4f1a91d31e71f84b0fbc51a08704702e48ac7593d3bd941ace211bac8ac54d1df2d46b65f327269a69e219c106722a5a0a2712a3eb515be0f0ff34329e814236ffa6faa66b395d84e329369968514a96fac9ce471564f0f3d37d0332c081487c1ee1051270a32fc5472e22b059dd57e4107580da22a49a8ce3338293941db865b9557f385ebc2144c66cf18e142036e84a62951f9bad7bec34ce96ef9261695d804d9f0e864da90d758cbcf7edd1cd8629e2bc77384a5691fc5c3ac284559e72e68bfb4aab7d0511ca363fe5c887c52231281a126a84eabd14354cad0c937f38a163ca3b878b3918238028529e31a10d6c275400d289d18a7b60b0011b2c25372edbc3644758b4ed3fe0df75ffe8e274e87e1405c85d03e1d39e9b167be165d54ae152750bc26ecac2bac05a8b0f07ac3476c7b5d55b701be2f52e5147a9e68f7a9108ab68ce8af6b6770e7078bd7535e709af10398a589013d2c4206e8524a784888380e5a4bdfd052c23000f80c35519089bf866bc4aeef2b6919e33aa722bf4483d9d81590ef800d29a412f68db4de83cd81f8285f52bb47f7af1aff4267398afef562b87b32edb117d10c968ec91f5ae28cce9fa33c5ac2f42114eb16e94047884b949ba19d42e9aa73a62053474e4ebd685a9460023d75271064eb285710fd1c0f632ab5c9d7508fbb0945000c4e0643634050a365751ee984e43b6494354011f53b448bdca91610cdd8d3a83d214db2262f38f4ec8de00d39e961e6453b21b88218e92de93461a5dd18e2f512833dc50659ecf80046293a2d801f683c4cdc3df23f743d3fbbbaf5b086d06a5f7f14e81ebe43eefb6695995a7144762dc8a0294b2164e46c8fdcfaeec133fc300870fea00d874cda4a0e148e8b4c28a40972aa361872248b67b128d73ff90162f339c65fb419ca7ab5a56b5ab96b622fce1ccc975dccd8a0e8b4023a8c2c9dfaeb5d13bd61ab635f50ccedf63c85328f21bbdca601ae2166ae42d4b2581fb929cd4b7957210ac64f8d12b56892945e4943e2603a83831c3cf2221152176fb3bb8d75deee007337f6ae68f16d3ec95875803afbc0ca357f95146cce5db6f3084b80dc71250957da0f62f58c4ec19e82f5c6baeef89bd1691fb33d52afb4eb133f245e7827e86beda6cb1b04c710cfbcb31387067bf597fcc2932eee79587b3470a56af4593567bbb1d16b45cd2f4819a8271897aae41ecbe686f7e9e7fa549f85199298213baae17422c1c4bbf554a3d8be23cc940b1cca88679da51acc571473d6aa66f4217bb49a26682579087b29a0f99efb3edd93e12dac60caa5e1974f31daaf86e99092d4b2b59306135347007746aad7bf75e7aaea52d2e772f6691e6ed40c25e2ede4d54c340807729dea6721e6cbd3e25d90a521c6a4e17e486017e7d93d07cce1986eb7a79cde5f6574e8e1f7a46439356da85c69dec8077e74142cb1289664cef8f8e2a06f59ce946e92d69b403422fd70b81f2cbfff3af0bb4eaa3ac650a00cd795fa80d661ca8a98b5584fb08a3bacfa593665c8f9319068cc6ea58819cbfd0787f0458c23c8d4e31b3ce7897deb8a80c4cc59bdb6944030fe5138f34e0a84b8b01a6d60e7ec758647cc4150274843d4de1f13a1699b2bf21976acdc158ea45eb9eb51874bb74c033eac002a228e16037ac4acbaabaf90c2724b81312335cf85097fed58e662bd279cdec32db80c65548b9be4717af38502eccbf6881fa20530567516650aca4ac72f5c7db30a5c95565bd9a8b546029037271ce53bb6ab679c43c7f4a6f2585c2a262d7fa6925820d66f768d6ce38c43526834d63a7f0d640705938a467f4935d0d8087cdc54b811c6fc8664dee50a1059703e2a765ac4cb392c372b80b730a17bbdc3e5740f2f7981c0de2782f95012b97c321365b065f91b0f88172a4d10860901ff3dfe60bf38a7c8147c2cb66b06f3e2d52a94e29d4cb6b86b3dea149a6fc732f4f713c542b6dd9b9cafcf178bc2ff837f59c94f3970a76b517b1dbc58583c5c99e5baed6c0b3547a57da8eec5cdde15f22314c31fa2653b018bf612252e0230141b21840df405177eb74a5ec357f79baca8cab311eb0ebcfa582dc6507d3835e58cb5a2c34edadc88ec7374d962e9c8210585c09a669eff7039a7d96786f969eccc2fbe15406d099e032bfee3597d4b5cb40e813dcc9072dc748800c149c7f4577f6de2dadcd7de094f934e8727df99c2e7735869d79dace14f139648296dc82818a085155f588244fc6aab909351c5a3e31132411d9db1f11a1ba715e6c1a208fe67132392749a2fd237309cb28c7d57c27d66ac57bf1044685fdd7ee821c734f35ee464f80e6513701daaddf548ca5b21705c329a6e426e470a9257c0f338f72e51ee13911749d26346d05c2cce3c54042158b76d4a4dffa57619998a0612ece2978db915edacf39f4d4df31335a41c3ed360d00345a9d26d5a4ef7093f50cb37a55ce45e09186295d3c790e450f1f17e031b2a02848a5c0a840dc079d6cb110121e44ed832db0e4f0494a304f843207ea51035fc87f604e324f111045abda0a6f799dab28b5e19810a8ae12b2baa6fc5a634db45e629cc9f8c8f5f266830e11d793974224d00c5d861da45b64a25e1188bff6e0e8f3685e27a56d74b18a025ece72a640bfbfe0fbfe3524166ed884cb4a69da8b9afd7e660a8a554e2941d901a15995cbb72960fa877adac16fb5e49a7f393a82590058bd950d9410a5876d3fde3d1f64bab2753e173a393117ace6e9881b1ace40f76103dd85e28c51662612da4b7123ef6891a805e22e8dadf74935ca5916811feaf8099e69af172d230d272a7bc95f6efe988a8de6fdbb8a9af5262dfa0682f74f106db440bcf18ca81f712a33a359c3d3b425503bf9d69cac7a21a02a02647f41b652a2245940973b19c679ff238f6fd2c33fd15b2751e4f9210392bd8fcda27bda630ed15f14c8822b9e7b54ba9767178070f9e30deff8f09e287bb61f3fff310355424450226fdc6126d66320f6936d9efd93b827b682e1c1e051e6151868b1d9c0adef30f83005a952f5003523509872fcd1bfc788be8ac3931398fc9163d2b8a9607814b0830eb58188955c30ef6de2f6c5296a3900fa03da424db009ac3ba7b29207675833a53f9202265cc434c2b180e948b67e2cb9569f638a9656b17467031d2b658de0a758fe1a66e0e1d720710198fab2573c4d36397eb3312015c887d6fe455e097d0dc3ae4add22db06589976929fef1dbe047907a2f8a31a2df69be3d890a443d21b98bd531b5f12e1d29d187ca4a3b9531661d05f52f3d286b70a3372aa4c90fbedaa4cb7fc09abfdc3ff9c5d9a062a320f228a4a8e203c5d0f196c35b81e95e74a66e93efffc1be21fac4623df62daa29135ad7c6b637e256e1d59af165b52dacb1eb572a607a78d672e151cd6a40a8363197c13c71da205a40431129a3470eb5213ae22f09816ef42822a7db068e8c6cc50e6b0d8579057a39230b55e22fc87d19502e3d872c66beb8deedfc5c8d3f045c3cdf87ed78a2b13093192296b43ec5e164d8af099e85c668f8ebc7c6eb19c76d27e139c24aec1b11d35c7588c02af9e0af5b3fef22b8d8f0636f7c2a719f683c11c30820c4813876a5815645eb33677ebb53eb74066bff3e5c5511683aa40af479dff6f76cd49e7c12864ed185e3f18c37acc7e73a7267b14def51c34c1504468af351d9b02424510343d6198f358510552463f7d28ece389c4edcd426510d8e9920c57f17812d5b5804e2787e16438ac3a574c1bdcad0c9014aa29473efdd60677c0ac61de7efe81b9ea624c431c20d3f0ed574804fa0ef32780823303a9633170132c93b9829fba118643e2cc8bde49adbc764813d6292adb27556ff03a850476c92d6317cb1ed9483de5f54e9163da00ba34814b3c7cc3a43bb14478e8a5bc232d32da5d3e4ee7c04dc1f27d629f3a91a4b98f05978f9cf7bd31628f8261d1268bcd2ff16f1da64d98aedb7704b9e48278fd4e4047b2b18e918573adeaa38a60b4a4af972b1ce83d2472135fd4944fc8f90cc02223228e90fe8712d89417abc07d799191eeccc9239bdf764202ab41642f5e0664f206a76f31e992d40ce489c83f47162a6dc7b10bcc896a75102e38eae434ea21f13c2b0cba666aeb6dbc3577596f7c1f0eab42252803be6c57811c2d2717938a50ef11e30c94377eea3d7b18aaf59c9f6be1a85c46ae862f81ffc119cd516ce2b40272050133a90f489ee81117cd43bfd330ee055f1e546d1011e62feb8c65dbb74f6c2a551cc84262aa28520b349542c91e3d87d2076055d692ace95d7001e764ad326d26b865c5a4144f78f220124583223ee2a2c09b5c7b8cd2a64358e428bbcbf52f7b06b10f9113f021bdbe0dd06ca7f817f350bd3afb36115e7f19d5f333dec32bba3734613e501d1061f9a5b6a2dfe1a59013ae8825536b6c38d661473316a2ec2fd5bc69d424a2fc571a911e786603c668e6fc941dd05e5759e29a9897ed6ad88c79f09a112b190a1e7552f5f6b263af0deb3535dac1343c12b8954c31413b6663199035c81ab5b2b523a831545a1acf33d74195a9a7e9f356fca9af463b785baedbabc35cf8d6fa21d343298322bad537d52e48a80268a85c939ae00d0eb8ba488249d74993cb75ed9f2073a4e4fa7f96f404284c3c0fb51fc51c1b347e179072623f939c544a5ca50208c78e3fcd34712a88e4dbdcc031de716f095a3dc6ed4fed45ba765d8f8d5acc170b4c1a42ee10e2097bf311ee749c56f4489614d43a67c881be8cf52ad521335b489df6ef655b1dac3301855f2ea161fd19efde886d28760892aa49e03894eec88f7313c0286325b82acb81b179f7164047e153d1e9608e21c72b7a2d634f6438f1745f4d09d7caeadee76cbe6ced04a1addea18a83c58646e583f9567874e41f867c3b3f638f36d8b7418a713398484971cbd8b6936d0b23b6b63a10c528f62d3a190d4ac5054ac9f99913bcbf4d2238d97f24e42656e717b4deaf1bbf13b40f6c0ea1bfe2d78fb426029fa671299ac2fe47d7500adf7c02b2a8187cc1e438f6b8d05dd92047bc345e65d5b8e08934b3fa654496e44dce4a4ad72011c7cb1bad450c4626afbbbd9ee8fc78311d92b6fbfd8c6ae49547167aa1c04eb927fdfc53a01fcbc6dd3d5d99bbd7bbc854aafa2ad0666e18d35bf0db8ecd41530534220de69c6f604ffb6ed8705ae6f6c3fdd418820ee5374e7711ec4bfa4038a72c233330ca39f3b7c892ddd9bd4df941f9077abf96ee1ac6709092615b190a7c27a6e76c24f6fa149a84e0158b9a0f83d2484e0e83204f067ebe70a8944ceeda6a2c0dafd74986ae0afd40d1235fab61ff535a774c407d37be8fc0d75f8f90e6beeefdb147952dbcd72124203bfe8b1cbb112087decddbdfaf93884c0a988625f0c991c58aa6133c63861f3858e1007d85ca06531b5e789ab67d2669f63cef7c513b4597eb3b5a6534bc132756ffcb45a06ba53256c561db9a3d722b19e3663b366d93556956b42274739887e6b25e2094db6029d811fd0d08a8fb5d7d3cabcb7953d57a355c002d722b9c1d0be16a7bab5ed0905f560ffa10af2417bf568877f6d73725370b14b11f7319389c6f0273750b9a709a4446a3a62a1a0f91f9e85c0f179b418a3b24e792b903afc60bbfe7444fb914ae9749c62231edb33855245829ac6cf7fc7172a585aecd568740ac5fb08261dfb44e9fadc0ff4ec90e01e32f2d0ecfb38f422ac3d5322bcd34dded28158eee0738b7ec572173b1cf014a35c008fc9feafb82981305d9f094f4ab5c7b109e95f4bb475ed0c80fce6412d1b43b2bf92f24294d26ddbcf532914278930306e8c720334a40299e9ad54dd879cbda0bdabc36b9d1c1f2424006126e6526579d7e790e865612c06f41cae1faa8797aa260019b7dfa9e01070384cf1d95fe4e4136be94129d9f516b53c618b9d235bdece86ba3fcdc79381ddcf361c51d142aa0996efa2801e6eba689319b6359bf396b25cefdf0fcc428b90d3d00325100a82feec6af8c03d6fa98df26cae1bbfe24a4eb974fc85e6da5b65e019004532200a2483226f77c35849dfb8ce02a144dada010efec276a1e6e118b035d2eff4fb777b1b33995282f267527a3facde5bcee6c5536a3639c2fa96e44bb1f79204ddb6c599fdb88fe5893c5d804086c3c3e019963d54f070ba68991c23855fff6821805de9532635e3b1695c9656a3b1ab822bcd9538451b6f301e6e3b94cb00eb273089ef32faf09a31dd1a0884985367168ef6719c9b4ab5e0ffbdd92b9d065982e001e26af69ee47f2c82a3273270c62b44efc642858f839fd007e4c0a77e3c583bd7c998f82c1927db0211bf413384ae47cff4c8b956b5afa4ef91940101e1973d1f72fde5e698b7820862275cf27a3511ba1da1a7c29717edd4d0884da719ecd1580750f56383a71938742cef417cac2573492474e0d3648cc3289416a67cb0c225e018036f705d4ecfc092faf62fbde5c9cfa5102dc8b30dd983b20276a5046d9e6b7ecbfbfd88ded6c9cb2421ef90fdbc8f52ec34608aaf6ba13d1cdcefabadc3fde5826a715ebbea67a33840b777d8a42fc6a70bd8987a1be4445eb296114123432e49338a90e6dea95b95dd4a577a1c78d3f1b11c58f8ce48d8f65f6536227187867a3bfbebb68a16feb4c9a77375df868668be6f4760a49cd62f28b4c4e09bf304ae762e43304a74781e1d4775480135c56baf814139134fada9e6554c86c7e69e8630ea89afa209bd7428050b1cfc2c07d562b53023afce8ff4ab81ea64743d80b0f2ef7a6e4e77564aa9b56e993f7f4be446da08644727a3b27594e4a55b6b56f5a38cb69c57f5801e6f7b77a19d762eb196b8b0c92e618cf3ff4216f95700703a208ed987ea0b4b1d655240232b7e9399f11cfae28b7a42eec92009dcb3f4ca1bd09d91b5a4e42ccf2d40bdeb32ababd57e03e0bb17032095f72a0aafc7abc4573300e908382af33c2b1cc78f61df7b2f10bfbe8fc7e3cb21a2ac2e1f666905101c651198a636c9965546a4a5803ae0ed57016837a6d2a907622ba08c6aafe599702b219e30d969b0bafa75bb90ff81f9d5518c6c2b74f2f1e5b429e3fd4e416db77515c66ec41ed7bec9eb5ff86563899fd03720e2ac49a92814e0a7aec4b77654b45d5d0a0ab9e8e6e30b293189c41490bd0ddbbd1b7a6a657dc63501c3b9541411058407c0709b21ce392e24bf5dfe7b2770ccd7d24ea006afab0e2608a3e7096848dba87fbd76802101dddfce13edbbc0fdf68cffe3f9d167f331250a70c66ab1601a71c0129c53d733b79e831f04458897258da48ca4ce3296a07ed7d918d7eea54530d31bff53d7cce3049565476bd0c238a55a89b312429ebad8cf7f3c1f6258b6e5d3cd8b451f7e57f839adb76a01542915b625e44f23d2233cac172d3fd51da8c8a9345d385ea9766e215108073bb4722bbde89d071f8498b8b4fa8066bd4b1a564fe0ab9d3bf89eb6368c08279cf2a98d714faf468c6aced15461795bdcc6a957626eadf9f160a979594d39ea8ba96711984062526ce575432c87a2ba7dda09dfed5f05388d64af7808846ac5c45e9ceee9988aab6cfeeff6151926966ad55e076ed5536835de41ca82794b5d9b23df75ba79b1f6d863df22213a563f126d1e7ad51af3e4de34b1c12e850799eda4dd51bc842f3b74478724406c523f0c5a71e6f54d135286c508f675413ea86299d77505d8be947c4da8d4b22ee2587776f54bb597677e9e402121f05dbafbeb4348ec3fd349b86647990e76c7adaf1d9723f91bb23785842a7c7b9e207a283c832f0b6fd61f25c51a68e76d30725ede421f6452e9f3cddbd6dd30fc39b52b89c931845f055af494c41e09900d9e1f14416756d27aedd7e89bcdfacb3f0824619e4a451c4d1e6c711a6a0da9fee583ff3401c5309c7093295c3983c8346a851d402d6095f2f7e0595b22c5ec192cdb5d43d310215d282773fed2f075c8a6f39b4ae14f5d5f8b2e98b8ba9aa4fd4f48069d959de64169c4a0b80da7d8183356cdf656995aa59926b055b7e7bc97c7592d78b23cc71f5c25fb56e51d782208e09e4020198a97283380442d5a5b15e6cecd90b7de9e425f1b242e552bc74f8bf544199b1954f4bbbaa571b1d0d6777ecbb5e233dd6b7b43a66e29a1d04043444f7bc4d6c63d5d5c60f2d7b8aa756437743de9e998ce53145f0bc51f88073fa4a132e4acff2453d043f138c9392b9cf8795b487afc92d14c99a0a37acdcd62e3526a87796c23f7f28806a0774375189091f08d9fe05ad8d15510b0706851cc21cbb2f5d24df4325bac17a8caa7fd383dd010786ebfd4ac18bbeb9f157a8b81e48ed625c0073b4cb961faa067919f9f9573f85f73eca41871fbd533ef541033bb9babf8852e7e4066bb98da869cc5f12c1b2451ea2883fb5dc131295b8369bafa12672816a94dd203dd9ce3ec5ddb289d7db77d62894e42c5f85a9a77d8160c7e62bd4083a02b51ce4691e431b85cbbe497934a0c44da0c95a2e6faaa76fd7dea47f0990d7b8a0668bbdb024bf70bbc13cf302a0cf742ea512343ab199ed0691a9236190fba01f9a31a4fbb0475af372c995b171830f3710e2c25c8c3de32320f8c8665786f4dfd12bd2b06410abf7737d9b0a9782e3d20ab65c4e3380a09b404602ceddf9be4207a0962eb2b83055a7d8073033507ef6fe9177e123d3594fed8046a15cf9ed9e210ce2e0f7a2e1c741ce51a852d4cd05fd076c1e5eacb4123443c35e97d2f1a577be9c4cf675b1c5fa49de6537db4812c1c3b31dce0364bff963ffec3cf1ed8baf594dbf129d75dfbea44a53ff95a7855503787b06d5d46f8d654d91546979d51c570fdd98c9d9a96231872e83162c3b3e17703e27a5eab282040e52676fefecf481d9867a6b642039b5c1bc7ad67a49b5e50f4caef6cbcab2afc26ef9de4fe1f57814d3c23b8bb41ce71fa1ca3203ffa86806c4b7d2be487509f0d7f2b4aff0643081120eb4d77a6ef449605fe9f7d2d82c0cdde54615981869d0d0c89339c09c6f6f1bde961b28cbfec45a209fd74ca5d4011dc1e3294a6358d6249641be63bd5344558f62b5d0b9981dc8545d8524e5955e06e33f6c356f15ff9ad228d59672c9503e08e1e49b644ce2fc4b0ff11c58b8ee94a6727db97f14f59005d78cc92e17f865fa9e2fdd7f156e853905505b1e1be2236b9a5cba8c7a02e8a27fabe2ab532615b167d545e0e582dffc72e53cf1b12a97af57a3241ca3d3ad3c767fd9fce9161ff7d05420e520b4dcfbf05aedb8fe2ae26c4fd20cac9d092b57b83f89fd186b9492afffc7c71fa1f74dfaa83f809bb44520abadbb5faa9c417861fc5f7876905232a19fce15afff2536718f8bb6b856dfe698a939dac20e457e341fcbeb6877a96e842a82178f76f14f189e912595fc63e5c8662b310e6eb6e5177c8373ab9991abfb86c4a8f547e1e318cda7ff08dc1ff8ee3e11ab6e278e6895f11afcce502c40ee6067160acc7e8e7da5b0f0fab3955045e13b8cf4a8fd4c5a996d91b57c8844070e7ee669bb7ec4b6f99e2aea5a57370aff078e67d4d2ccbb88d84a187ae5cb3582570ea449d9c5192e88fc689df1a1fd0733bcc141e7392c2158120169ee1e2d5412fdbf0fdb405c1187a19b6c05aee5f65a5cb25145e7c7f0ef4552c3a7bee4d1fc0db3c6783d1d45f19abc5ce85b092efb331a10ed69cc22fefc3d4309961625336aedd16fe85c36a11799736614b76378f992e662771b805c8dca197ec5c2872d1dcc99fd7cfca556a013477f9ec09e0dfde41e7283bcff70c65475c5e0ac88302426b637db45c16f7fa06b382bfa42ac1e8f35cd4157e78f3a0c58ed4cda5fd18cc3e84e5065ca7c20c932df06bd2d21f644fc755bbc7b51d975be61a91853004be1e746b5ea5070f2adb9535067e210ab6b8c17fb5d41bd0fe6154ad4742a4b4baff8ec4f49fa6d2d7d4737d0d8c69c5a9f09bc4ecfcc6c9d0b03af27c2b4496ad25917d15bda793bfefb17abf66fc3102e3488c04d23085064782202195c6666e27d7762db5b8a690acef3322bfecd4b9acb667335abbde0c51ce48a53ca7495ee1589f5e9b8bef40fdaac8de2895cb81ac1cd8388ac9741d501bce6919dc823f4eb67ec8a03bc7d8e00493f0da0e3541a3a07a86e61d1c28faa05c0b52cbee66a8d96c425be726a9dd416e8a2ceac73b662a80eb0968d9ac361a519e75be758b8c5ffa20704cfc466da11b01941ac22431020c53cdc908396e0e1e111814e2abbe8bc7fe04115b3a61520eaf06cbd58c7338783a545e159fe445c9f635881eb44ed6a37447eedbc2ee8027327ce18e87c1c1d76a1ba6dd64758a0dfcf0856be975718f72c325fae66401531c5b3149e518a198089d71ecd902507c48e389ca3edf3154f72b13f10c51731e3511c83286990be7edc5df39a4fe0e52699312cf1f26034b85823d5db5a41561e59a23e519947d446bc340ac4c91a4358301606b8476a387e020bb0454688ecf2ee78b8e0ee50f8716ff9bb1b9b4c8c5e57257366013390d1f75ffd39401ebb332678990025286b94df1f263334a905fd540f5bbe28309339a436d36a0f5aefc19939c8473246451f1ba3c9345846ee7e335a3f4c39f3d6bfd9f8399f14c6cc92e54466b1ba133e06d4451fc69e92926b42d68ee7a5c462f44a2ef447bd7ee05c2b4c96a098ab6e3be1624302f31bc7d495224369500ecc590fd5463d13e1d1fb8f781dbb5b6dba36bb4d1b2316a685e68341fab1129685df244a44ef2d892aa3bbc631d5c65fc709014396f81991a6bb273dfe4c3988ebcfeac15b40baa0afe95c7307615063b0f4f6e8ebdfe68ff040e0dbec790552d6fea4502fb87c7d2690a477efd4a234db0afe5ffa86b8aef81cd164f12a2b4cbe14fb82f2bac78f9ea7c71519431b3f9c3a25e3256a9ea98c286174c2915335ba897b86d3f706a19a647e7548ee4f3f92f597f85ba5fb92a100bde0d5299a7ce24213e2304f3762b37d875014ff84b5e3ca29321c6308ca00a051ae7cca115ce3cb99be9d076a4a8d6d22af7c9d3328c87fcf7da8ee51412dbc5314d92f3cc3c7d544bff64645c53b5195b4ec9a8d3607962406bf3034153bd63891e095931147fb306a096b83b16b65aa7bf988f47a57bbe5a27f286572938d3d0fdc7404a11fcade20900b702fef552c0370917d3dc74f76d95ec46dccdec7df18182b6f2048b8b1a884256fbf84ac6d2a84a475f6980c5b6d485926648fae631db76329be01fb71430b2e74b0f3acc3bd329ad9a03dd8c08053d8411ec6574fc5d7567a22152dcc5778918bded7d5079328b4dcdc56fff244aacdc0a98b2def5681931f3ac450d0a932714fc1b60e14b6c08565e2ea5de43a87257cf697cbd12a08e0c8d03a017323744973ca37454ea5eba78e43347fab036aaea0fb21194930dce19bfb87960b2d2b863d149adc189e11c7267fb75d02c1e5512cce71d9ee81f3a9af536a96d6957ef40660c1db5cf9418930638838c705ab0773072fcb1b0a43f79200790b740cb66cbb64743708984183623fe9e57c56af989d7ba5b36f37f7fcc4927343672789065f6da6ef8b5f4af3a7e7ad26c739946226407a604dc15ebe3aaec2049afd16a88747e6f75cc68d409d860cc1f2d8af6d5d028bbf5d7cb99edc847382d74e08c6dc814c0c7470cc4e1840c6946c305952e6adf1a9093f5d97062138354f3c9eb99dfa82a5cedb948d9da3d16d45d0599c386366e401d6e2a20b8036471791af271abebf37ee1cfb4ae8eef015b62ca79520be7924b7084d50ad7cb06fa59ad6913a35cdc957abdb396720de08977ec5a33d6c619fe4ad5b1da789cef257915151f6a379ba143efb4bbcd9f639e73376ad811351c401d07c2b233c17f9ec9057e9dbf7073c30b895f83e12928d49f09350b6889949cfe10d1f44a65d990821e4d48ce67ba63e252ec879996903811d3e0af75508a1d002df7c9e8130bfb54d3bb23e5cdb42d1c5b186a969c112fa0bb6d53291413dcb532aa6b929148fdd4fa8f43b3abf9a052c40cd43ca366443a38f30ad020ecf4c5b71a791661109d1c538136065cda8f5672aad6d4261e88da217e57e9bd7c6217af26a19076371c57b76819e24f67f4244fb25815baf452f711176123ccef3de6fa883b34b4c7651c4619d7ccf8e2093929ab88e3329bb237f2e89a7ca6e0f5aef05b2b9206221f1602e2493cca33b0f88ddd9d7df02e18635e137d19966613043df77f828d16186fa84ad11e01b96e429163f529f28231b776dc0f91e0d6d3f02348d30986a64d4294b2337ca8696c4c973ff29dd2e6dc9b058abd9f8edc62bd4cacb95dd81fd0210342adb35b1496392464d3d035042197a9b1b01461dc6d945d133511ee51f1d7f9bf5e7f657d3fa23781a9e1c6267b9c536aa564b50c2f7adf1ffff7f7abb94b26d0fd89894d1c740cb531448ee57fba10ee08d6af4f47121915b32434c65bd971d333f3dddb28b89b47e99fad3fa56892c1bb468bee0fd772732ecad0dda4fa6eb7844cab15f0a4ade6ddd11226ee442cb6eaa046c589160e3ba27c662c3e648ffb41e6950e28f55a970c1b60f4de352ced7a2ddb1dae7850cd850dc742783d5141c9c540be865f33cdadc0f3f8634fb86f1a4a98ffe00c3d51dc6e59d910916c2f59ff719115fdbf7fcf9c3b3b3dfcbe8300cbc84189e67915860a73452c16093629d5bff04514254bf974c27e98dc38f8e09dc5e16c88c79b6e4afc32ad740830220e7df2a94f690bf6818a5180c003a721f6b9dcc4a797e4d9122355bdaae8e96456c60b6868cb193d27d9880cffe96a4a6dba2953216cd919651bd4b40d9678e3e87e872089ba713717db6116c6d8e0648772e305473ff7598288efee07c89d1d04c6258fe07b7c393546d5e1c8a60cf8775d83fc75b295a30679d0b76cd2cf9d648d17dd2646765badfc3703e14421d35628aaf66fa32a36bab072822eee39ebccc5a6ff25a946d1ecdd2d6d4cc55b6f9d32d7b508e33d0484cda21e9f9da59048e99464e286f9e299f4151048725f2d1720b13692fbe273d044ec8339c0183c5945625db2b834cf97e71d298c8fce58b4e94a0d7a252a3b36bbc6f4b399fde277a01dc12820fe6e1de3fe87ffac6184a858ff1853f64938543da9fe3a613d8e8f6819671b1472ce8ec8a3d4a295335073ae6b3a3e2a892858f00028d74c612dac13c63f9664d2e48d5e19baf551f6c0edb87f924f4a1c3f8808ed442c486b162be6549ae42f57df0d40ab90a550d787db820b13e7b91ff1531aeffdfb2dddbfb7af96c1bb4a846031c4927d741a383c8ea9cddee424d92892b0667a35015b7b1fff76fcbe6f6e657808cf2397cb97e3889b1db710ea25af5c8213bb329f63ea7ecbad9d1bea66df7fff4cf773ab8ce6730e6f1ccdd38ab6e599adc975e7d2891e880ce41e55be3a113544879a9c6a5c5d8d8bc46423014fd1e4b5aba4c0d3f3a5f88cab4e4209a49d195f14f9d8db716fdb5c6e9c2db511d181ab3edc6da7a00905365c85568d494de3b9eaad16f74f2101fbe04515bf9409a1fcbe4dd986553ecef5a9e1b57f55e33546561ba596e4447f94dabccfc1f4abc3673b738a54039c65a3a5ab0691435ac9588eee38a0ccca8de8c35999926149140f963fd36c6cd4e5d21a781c63edb6c8c89efe3fa3d9d7a2b58be416206ea31a4764749524dbce479df305dcfe8c7120032a5d93b6c9ff4e1b3a32dcaf80e99d579a839828ec6b2c4b228edc312a5b7fdee787efc8a0e48de7508658518334cedb62d849b45439ec192c344876bd2c32fa170c68bc2f9f514185565caa502d79a22639f09739b85a1a6bb7cda4ce1906df0be1000dec475d58ab4054aec9815fc393a7b680dcdce7815cc5f9ec418dcac4331e8e357a62b4b45956b8f65064f234186c96c8ae94549d83727eefef308bfb9c2538a9a2cafb69f2b0fba96d01f56f17fd65cc4964bf9964347254da03384e208b76ccbb46119b8edcfc3546f344f6741f19b678d5392e2b74b22b682137e83c4423443f3544dbf1619c58ecfd30c214d640a421bb3605062c45874afadec6557f550a67081c3912416e979d139f68106fe3b84a3bfce129441840672d7de07472b406c064d62ec5cf703ffcac161a33529c7421a3d15aea2600e80c988e00cbebfe48566613e634546fd9503e1c52e86952e4c8a1c1b5065e87996e7fe30760bbd92bd92d2277d294a804f37f11e9e097027b68f8a1e24bbf56481b3aeaafd1e9db05d649545fc977ca4a917cb5386b12b3e5bdd4d01b40538f4224807c769101a10a505463969e30d80f0c930a37ed8d91be0b875520aa83db91673046854998e6092763e856ba579d657650864cfb912eebd7a586fd18cd06535389151a998e65c9a0afd2e57362b55af7766a251f56db33d10e2551da062ded34eba7c148f1f97eeeadad79c3632108f806863d00f8b6e467d3202e7548a7d849eb0aeb3255903159012c6760907311e75df99cbf0a9815e568c71811d8f9a69c89bfda1a275a4b24c169842555f09223eca15b463d3b4464593a479f405a5389d3c2d5f764afc95c2369c748512fcd738a0f8969a91a82387da3a64d77d67e5a65f0da8b26021406a9906f7490eee38b46b78b6a738b7406dc38114473c438d9c1f44108d459c650f7f7f14145b31a976b4fbbc04bf8615dfab109ac90977a2eef72d91e06a6e2251dac3c29d301cc4363ad80e0c26cd5dd46c4c2b650ec3873ea7bd4cab97e4e62336523f5e1abee6227f3e3e7f7209c1db286cd42abefbc4e4e185f68ee816754dec5d75182c65595a221ccc023533be956ad95ba8d55dbd69d456b0506038a1ebab82914d46e57b730aff2f9da2a24d3893054e7466b5580e7619ab5c0818e9ec4ff27cc56ad324f55f43983b3db3f10e990e8ca8f3a96043abd2873fa17561940517b70a212778dd5716f32d0ce3bcf415cd09609ec16b3038f8472ce30beafac2e329ebeaf3d51cce1798a764702adba525a13e62ed0f2f838197784e72138b0d4d22fdc82c2615b0a4594242b8844b95b701e661b0be4f275e5e1d8c38a48510a48b15cfa3b2233714dc782fd7fadbdf42cd8343341dd3563cd23b5edd347d03cee9cfc8b7f411f371d02cbe4e75ba7e5fe2409ddce2b10dc9b4932083ecd9e091530aee6138a0a47e171f90b1af290760b0d0712b491414d4050ad98302576c76db6aa795ba05e801e17cef971bff987930e7bc08e0dbd001342cd8464b8489ea6ad56224f568afb6924df75e97241d8bc9bf0fbf2917ecf4c1a7e9f9c046e2b110f677971e658d5ca1034c741116d41df5943d3fba91c11969cb1410ab53ddcf28be1cb2808fcfb78df26330c7673479f528187db541a37dfe11eda7c1b7e46a91dd698d2ce8688ae6d25f81ec3c19e44d403cf770d8eb5bc191723b6c52fc61554d6f80bf6baccf873f73e82fd0406df724eebbac37e14a468a823b0558a88ed2c858466083d7c44e3add8bbcef1ad57d23067d50f66632e5ded778decf23ed664da214d8916c8821a7705f127be772490ded84d9de80766b939b7c9c14e7241d9f5c93af695d5a78cdaca54aeb242f5cb7a89eae6fa5ffd653853261567e2ba6c681e983d505c78dd9654b25c74eedb07bf8425f5be00a0aed8b86281ab0fb2a8c594f5c11f646fa5bfddf892decfe3db5819c6b09c5ebbad225d8abb5f39a2600eed8a44d8d1dc7c62a2cfd4fee7954470c359313312a5e9819651bd537e785f78f6a972f6480f3f453a9eaf35e8cb716cf5dd0c8dea56c7bde0dfff9f8e6bf866b09484e8751fea1755b87f25e27508acca416abc7a932d78c159af4a79576892cfa3db881f645eb9bcf81b9749bd2123fe9a2f2561948af5ebf3f6e60667520b35f7f6c3716f7d9ea40a9cb2a00059e15e12b076c21ed29c0eb2063eff68f2cd84b39e18f47d2d13626343cfe80962380218a0b2d17ca10f0163da229adf8d64174ba7ef0fa471f2daa54379de9a01b8cfc7e4ea96efc51305b4b4f9238240948fd4a1f872849750cd0577a750bff02d1c519d84bf3ed7e8658a261513234f3e80c8897648db265ed46a2d592d69bda2c50dbe41dac2e4e0c2460257a553088cd174e28678167e99a2d7cafcd3fbfa890b61f5fd9156d1bd0a055b9a1090bff5d1ae90cf5af08dcfa48c381494e27f4dcc1866dcb9cb36245e48292c5398b53e62f36f0863db27f066f495843ea6c4dce7d0be586804547458844f681b1bac3ca399e74022454f55228db573047cdc3f9ce3bd0668bd00e9f0cac83987a6552cc8855ace4cf06c629caa8332c03f26bd91b89eee0472ca338aadfa6c6f48b475dba18a23c483560318b12b5b755bbdfe85afb30a89d8a13bf39c825eca166af053cb3d1756b9591a554a63cc7e760bbd117a83f9f00d111e70fc69681e0bfd6d726f8abf20aae0f20527438212f7721a8412ff49a9bcc723df19fe55e0ef5d2f4647a1577ef19f0f081bdb00c67883637d427def42017b1877f61d2d1cde5f820533de66210ce3207c865bd4f80f9a35daed6bfed2acd6cb4c26870046775646850cb6bbc8768346945810d7ea2e4147a27c20fe055aae45baf74a8b37f0776d3ed9be60a0df53b3df6ca6197186cbce735b578427eba81d0cc20b435a38e502bb0770a0101a3ee61d8d00ff6c2c9d08a388d587acc924cbf5cdca4d0545859ce959381f753a0db961c28808d6808076db5bd427e78f07460a615dc60a6bfbc94d2726637d1abf034240ab37881e5216a9fcd7d486faeca374704944f8d54eac47339cb1499f802774d51b8d854d35decf4318319443e4465ab3757d96fd31418defe35d9d3ab4952d0ea3603847401b9c9d1848a17347d850fd184a4a47db2ce57db1b7ee794e2de2d79e7005d33d5cc0d30e06f5e003322ae1ad0a7de00fed410e06a37babf4c50f410165c8ec8a848a3afb18bb2a5c8b2faffc260bf2079f75ae504cecb27ec7dd9af283f169eca6d95a63f101714c32c0cc5365a09c36627041f3cca2f2289fb6d4c10e386fc90aa82fd89f25ad64c24993ddb022dd44acf04b35b6eb20bd0c1ea22d84dfad9d4b68be8c30c83e9b37c27aeb5d329b77337f4221f81b267d166db311f614ff373c059dfd21066e9e9a851749bc6fd986dfaf43437e879e380e6a6af96388a91cda70d5ad24ae438057c438dba1c1d0d8e890b2dc8121fa135fb38a082d871fe474c2a019133656fc089d0131075accd6bc11094eb3339c42c064e983d2cc534cce8cbee11d38420f916c6d9f2327757618eb27d2c4df1790688232ab554a1c94880be5709f31a06339a5a528634dc5e0da1343b0d093a9d46298f6dec46f3652c5a4573652106b012ccdc1d4ad92ac8d432e3ac816538a7d552be9376ba0e68ed8ea5c0c2826420e24704a98b582ae35cda69f0712e27d37f56207dfe67c46e85a4c5d9f374242610bc857cef67c526117080fe3a483f3c74273dd6c19791a0f13a74da7f0117dbaeaacc0bec31148fa102a0e62dca6e43c8a27a561100c37ab1c827042020ee65f3b9fc0b4e9c3e0d80dbb1bb0ee9e8b9f367125ad3f3a4d54a6749ae45c9d003b9949c9eb5def02d6593eaf096b1d8245141ba3602e11a94c7af5cc391d86e68fe5a8ce514695c38cb3643daf192c0eda21cc1582a1f382634a796035abfbeb663a229e8341aff8c717a424041b9507a8b93a26ced0db49f22bbb5052a07cfafb006c30b2fc6aaf8dbff077b1938bef514045397828353a427ce2c7742a455384e4abdc3f50c8705cea9cb540205e50c2939c605318ba1d55a54f36c1218e700cb060c88ca800711d8004308f9c1befd19a372ead87391bedb7f8caec263ffef5aeddf92c61c1013c5a79e0bef57f8211a20d355692ee472497d17c5adca46e85097ac60540bc28f2be011fd4861b08bc354293569fc6a394ac07a40e064bca8a8e6e76fb3bcaa22df1e16f25d64a86290940229736e81a10760fc14a081b0cf80f62448784d4f6f7eb0dc9efadd726f615a41d3b3b25855ac83d92be1d9b87c9a9b6c620a3d4e08e66da047e01b68a9fb50adb26c33eed3eddeae41cf9208a9dc74f5262574910bb980c93144e76bab85eb4ba07285c7fe7c3ec4f54910d610d08b9dd6589b4ac7e13715574effcdaa0d8e0389b1a6cd1094248d7d6197b8732585c7e086c1b3b806ec33719b63cfea01464b0ca48ce1247175f0c7ddc027052c617dd86952ce9a1af48e10bc6e96aeb612e93ede0204ecd53329fcb9bb86215bccfaf50a5d9a08cea92855b5c09b5ae5bd00ef85d92a94854d5228a35f65bfceff00d44b2a806b1a7ec80c7ff9d9cd2944f56cd2631d2aca77efa37e0fe19fc13196e25d23e68bb91de56d86434afa82cdde0a9246f2f1f11b0523df6b4ff4179612db4a082d1faaa5fe622bae776bd435973aa896084bcb5391b693d59c0ad6ee9c5b6c768c1bb0e75a5e435833b969259f70884796b52ef677ff17c00895a9ac78b2f4be896fd3be55fa966ab3db6bb95db8bee9257972b333a91ed4294d5d9fc7cb640d03f8de73b73e61e2a6f56bbc7c3465b99d3cf441ded90fe263056436a12615de0835de31c33fd42b0870dd6e639cb1fca999969a61a585a439b75551a1b0b2c4ff4aa98aefef958cb83299df112665b2a4563d45e4b9cd5224c06aa05069bb82c452550b7b693c5e2e5c5cd4de315d90547b52b5c26b6b03db49009508b9036eccd8bce04ea9d518c0194542da7b06521de642b6a7ff95de33ce1ae2347933277cb0ff8be1b0612d56295856d68ce1567b60fee79591b62009c2df8c14c645a02eee00a70b4954b08d1cfe0d59a30491e4727c4bf43fedeccbb5188d5cd40973a6efe6b8002c19d495ac835ff85298c3686134dfef518cefaea5b3fd5d2fa387e3d79d1ade308933524d97f2e2a65c11abcba34bc4e899d092c642dd91f60b0b97c853eb812f78ec8bb5ce6897aa20db0e64cb9fbd6b50761ed87d5eaceb8cb5af70fd149cb7298a3b4120360cda4bee3113b11d05479e17ade7bcc899644561b83cd0602b62d4bf35ea6909ca2056030ea6de168bc5a81efc7a7de8067fabf00293c89bd87827f3c412eac4babd4f8c5bd6dfd89fc642dbc24ce40f57450585d90a24cbe1eac296f984c606af9757d30f16c5a90dd079059e2036a729cfef04307be770870bba54bbd88641dc4c24691008a6d4c5850a10f9b65d4dd1c9d7f28f1259e02d621609e5e99664d58d80e375f91ac672e0e84adf9467885e3f8393386785a2a4e8558cf526c514c022c8ebf7ffbe388194bad5de26070620e58a64ad93b8ea4570e74d1f48c974c84f6e9d5c9bb57172fb5a6267c1136cbab4d6e22c01081be08aafbec06db97d152c773405d9228d897957c74e2404b9391528a1c976cb589b40888b8fbc91e7bfe4fd0bf201afda25ca746265727934be6394ae1f611b314d10bca7004db2a18dd3aeecd7cc094a5cd5274b4401b4efa63d004de00b594dec338e27b7aa5fdb73c74bab20e761e7a1b11b55bf001bd65b88aaf7adb3a73716e7b2ea0330409c21db2a17f168ec67993caee2a4bcb84d19d59fb902ec6d2fd979d016c040e3ec14bcb5388e7164c655467387b526ba675f6945d41ad2d40d344e04620cc7368ffc52e9dfbbba86efa3a2b27afd69f2a0e6e6d2b51deb4e3afe7a612dbf5b0f476854d882ee6a927e2d94e3d9f98357323c48d23fff580caf29b3696f8b33a4b2095f276c6acfce8986ed37bb334382f167a9a55dd346860d913c976e2a4113b307f39039aaf0037f78f40f103b9633c13d1efeea8d0af7c2c335d54b12fcdb6426bc62aaa624fe0f1c8c82572bc9ca913caa65ea687fdf3c8226065d83e261a8c55efcbdd9db102f946adc20242bcef11c48b60b6b897f2ddcda7d57f61c6d3af835552217e78f1b7c27195e5f986a2e71d1a082c88760e022d5844a35a0aa5c353777f2935d537e5ac06e86cf90eb03f980272d18b9cc9e2137d769a9ca290e677effc4b71b3a96abc8c1886fd643de8abc230a973954244edf26a8a7c0ded356db9f0a918ca47454db2c8eae0989a9b4cdbffff3504823e39a9621c6ba2211bb179dbc0611f749910b7e8ca15d77327632faf15d3a42d916ba415684102ff06693515b21e11cc2b003b9a8e448eb16b7392929ce6e9cb3df07b134d008a7da5e42ab3c05b500712e389569560b66465ab17308c9bef403f92269f431610e82d30eaa2a78dc144ffe15fcb916fc9012118654140f36afc4197a5cc0a80b4b78451fe6510cadce451b5b8cbb73d6b2cf4f571b49f8d8746d8fb9743182da2b58538707804a5826ccaad81869aea73a05062c6bc173c8add7ae4c0c99b6b0de7df4774bb2754c1a9347b62709c1923b2efca6beace53e0933cdb1771b9454784f221a04f4c13b2a4245ee7470915aea09f953dd955d25fd09b3c3779ac231711532dd188d18c7dc43ff226c143986227c10e969f9deb53e56bbc7c66fea2e266361287f80c39239a2841db3ed4cfee1fdbda1562cb6bc48a5100491f7873a560f570dc95a9a3c4ef3323e9f2a4f35c99dac2b6a921390da4cbaddf7eab559a5bc9acf96508a44ac5512e8bbb1b448a0904ef7c32467c278af6b028e8af8d21cf244d31bad9379e97c04784674280bd051a6204e4836e9e89047eedf985386a7c369cba39096e61dce18a9b290f693e753e38e51f4658fb57a0932e52435a3960a00cf0cff888b668c975f2545c9c21841b45be128338fb030473a9224ffb31c2e4751463ef068641596b4fbb12122b9cb700d6db5539d6935bcfc4bdf3966d37bedd8d884b784bd2d26c4426c36b6c30e7db1314ff9c3ba5ed1dc6728b98d371079b75bf8bd989a5d72303ce02191557e886ec4f7b0e93d7ad24cb3693ea0264fb5f0fcfbb50c295d5984e1838a7831688ab88bb35845d101842df07d614e66ec26f8fece2fb619915aa05ad92e843e049eea4390a5cd19e00ab2545bcaed1f84c8e8367be99a2197e5248741ff5f041520ad7bfbf347fc44589a058e05205dc391618d13be9a79e25e5d7a9eafc73318b03817695c97268a8beaa1827d808f208b3f8242ce775e686b87fac5eae41c07f738cf4946528627fce1b9a0622b0b247004a528bc2c935c557201c4917436a755ccad51f371ceb7ddd852358c9e884022d71d8b14e2dbfd9b5a3eedb0fa9b6adcdf930ebd24f70cb0d7622d9ccca23b6eb123523f1d8072009694c114d888e02ef1b3cefe68ba54ed2f59a0ef395926e67c855791f4cfb4a11c999ea8c7e1b5341215d7e51b174da819952a26a292e5d1962485592d9a8ff93b18420925aa45bae414eaa194d2880c5eec174af4944a78717643032ab4aaccc88f1cf5608fb96226e11db0b9f1c3f262275ee36a8dbb42cf0538a87778a75ff5b27384335dba8d4fff023abb3f48fb7f81677f240b6c7d62ed53ab9b434d8389e654536f86b012bac51ac342cd61e0612cad77e88325b6726232377bf6c5499ac75707d4a294f3bedf9d9ef56ce3f264cc2101b3ce9ffb8628c7b95775ea7607a230dbe1e84f693ccd92e79c33bbf23bfa6bce3aa7697ffa195db7e42a9ffdf4fc121a7bb9acebff6334f522ff96b5ecc2f0cee12e615ccfa3e48e6c82401c2f09e4b41316d716a248a885dbee984d2825aed46968bc8309479209536e1feae7353d5b4a256d907c77051939e31ba24898e52a55bca1125a1bcdcf85e40d68859f3ec209b01f4e84c0aa36270688acc983966712775092e9496d1d945cfb6547993103bca5e2dffc48e596be4137cbe8c3c801f249d9e49d8e4a4f3854a1cf642afb3bad97ad9f2b04e76aedc469dc3029a7766bc666e04ebc1a2417cd3f32e08c5edb753bcce86b420d3dfb814a131ef9690767e715dbfa38a0ca59cb698dbbae0f4328ecbeb84721772385b003b9b06c115a18865ea9327c281791d8e1c063b295a90828ab5b8215ec3eac4de34bba2ef08675e50bd1a2965a7a018186292470fd65c9115c06556412c0b5958faeece0055d7d28c5f2d5a8559310d84e3f33f25b0fa1edd27f77abf5ec488d4b59379729e74ed625ac0a661f770ef0564671f6201a13a7673cf159dde0cc7b4bbfca5b047c8b5c66743d9b6207fe65fc64426f39ddee4b798c19327300256a195a2ea9dbe29b8a943555a47df250d10ab105040229dc8daec09fcd395c30ab090d32f22b5738145ca4b7f3e036c558f8058b9009dac743c665ee17537bfd4fbfd2271a137502125f98688dbd43b31d32b691a0a311a6e7f7f9bece964899adc0e6bef98a5817801ee73d8d031125ca7869caf84afe4a16e4bd3d07f91bbde21bdd0dde73793fbf72839f9fb0c8ff0d4dba0e0ed45d8e131583afa9401a654c1b5ad5076f0ec91294e3c1856edb62156c64818d6f2389450f9a25f00d65850f0a5cc92989002922b3ef4696819a20195c1612d47ceb7fb4f1416eea30d5a9900849bbeeb4b9357b21fbb73a07b1ddd1083870752c27f890a63b1afd4f3949fcf032d37215582e0c0a8a596f8416f6fb6f38d0b6f22989aaa362225fde52fac24b03a3c61810c8abb9e56f47c454bfd75d340713ca8235f93a6d729d620b86155481c26e62c72a8f77c12968063b21ac390869ba454b7c177b3660150d9c076b0c64cfe285321dd4ed710c8a7d58c741e21e850d7456ddc29f33e17b9ea1e80063e2201091ff9ffb2179ebfd1dd85e649a8f562491693e5b12f721589e568c5466733ad866d7de67fd682b20bc976d67055dbc4889e87a6afae2fd86e16deaa989b00d8fe93fade0655e4eeb7a94509e33e716794ba06a185e6db7b660472f86f98b677df5a8bc14e6968e668a06d9e2bee2b7eaeb98d7b3d2973bea5e79b436004d795f2b2e5811e6e2992f36c6d011f7666a7f96192e2ebd7c2dfbdfe7494a7a044ae58ad7b9cd73f656f943d4678b1ee5b85651482d9e2214f1146fe4d4135b6b0135dd62fc9e9bdafb07a21f2eb7b61abf3b8f0f82be0892ee353510c029415d6966efdf43c25001a3b565e2c57cdc5046329233016c660052b15ffa93e71a61b7069da9f6d9e5bdfaf01930ecc8b47aa2f19dc1282aa4f69cb0d6b455ecdaf1ab95aa85c7651524a1b85d8fce0de9044763fa42ac9dac907aae43d9f59b3c79590870f5e0519a8f3ca5d2b8e5bf33685226c65d12128d0768fa67b82f9c982e71475301b967585667605bd5b6d7fcd05f0e99cdd5f4a58dee38c3adb559c94bc8af1209f4d814671325aad5ed53066ec6a0f6dd0e576b505ddf89d16c821f4ae490df6244b9bed620481fbd3cb328380e9890d06571b5c12cbceb82c7896619c1af48d36380479e80acf7f94c7e1f45ca6359d9f11ba18a766daa840327f982b0c6f4271b8b0b0b634dcb24d9bb65f738a5669ab35400ca37e7ffa52dd5e52a26002d7fcb99caa39fb85bc1b678229d02b5a3498dbe5a8065f1d431525423e17f7d3706144e3084ba8eb2da304725502f1c54eaf51f7e4b35a7479e2e25d5345ed48138feb4ec70a905909495bcf228f51a664428e29ed35ef781360e12a07bed8c9be991b55c26c166290c42f0e016502195833993088c8427e0b838a30ebf93a100a4d1a2c2a301903722c90144ef6c585ca856675ea9644d67237faa0542d406b426e7af0e754e7455080b8faa85d119b93463b26b6fedd58b2800b84890dd1daa0bb774373dfe97aeab34412adfd373bdbe566e8438d200480633a50e4a234003e1296e22039393fd56a73ebcd262a8f25202ba75d8c85f82b9a40ca61d993c163f387b1c035b95da25bab5a9a85ab08bd05959063d295cc4c798cc29a1a0d14aa52e62e20630e159232055088ba0b567a9f82f076e43b14019ec8845fe7f33c427ad493986894afa2d7fd546d90795e4af5cc8f34e62ee299d2d280aa2438cdb379e3d17129cbae3fa6c6ec9b0946481dc3cd122c41bf758b2dd56d26241786a11bfae5bcc4eb075d2985b963c07e75035759d861d4184438e2a0237ce0f87e5965bef17ee65bd25e06160129ebb193c413ca1fde87ca0421c4ddf1391a8be46a68eba679e5f06ae2f7b40cd80d2a914b1b9f8328e6d2b290fdfe39b2b9916c830afabd99b26c58bb187465eab467b7728a1df0e56d6582a1f20cb7d6399fc6d9f91c0677aecc8cde0c9bd501f0c237f50273ab7bf522f10ae259418269bcf614eecdfff7733f032e41b78209a956d469e820e2045d20cc24b5d03c0cc6b661c297d509c294eb49844664b468925d83a772c052cf1041e1bd59f1f11f54a8760b1853fec82619cb992b48f54c31f153f9d42ed5c69cbe9102750b1565f6f7105fbd13b8cfa43c63b96d8a22398298d9d0cbc39144dafc529a0a5cbfd844e539166c6bacecc6a630fe045650e0a46d9cab59f7e630c635c43ea4f3e1ad99fd2a324df93149f743b1dda70bc3e424447f8bc0ef76c984a30a9c61622fbe4808730cca382b505c72545ae85120a92c65c7629bf02548f18127bd6f552cfb2d37f898d50a778ae2290ac9ebcd25d93e04de72e77a1bdc59dac639979ed5938edb939cc5d079d3108fe5ca9eaef3b3acb84417a34fae04f03f99e1cd0d7b6b3edacaf299e0a72cb458332912e5d47e97521a22ceed8276cc9c7501415352f2ca9beb74ae2fb7f800c4a1aa6c39560dbcb76ef6d4b275ff10f3c2b59def51d89dacec6e1f08c406e7910a1e6141552745d8a4bc13b7b7722df4e6504f344e4f077ab14c8284f674a96a7d15424de8c4abd985685198ad509624901a46415ee61639a862f523dba52727563983bf4f4fb488d414ae2ad32be454e6341f7a1c6b75ed46937fb337a2f1bf23848a4e2bd1f468db0e71b640d33bbce3734e2e23c8e1e05fe6d3b705b8aeb2d2e75d73357e7336e6d7c30cfa976eb12aafb781698b493cfcf08e1190e5cdb4837502dfa6840f23beac16635a27f08b7ea973842dc220745e3ddd9b656323cf8ce05974be089e7b2935d1f8107ec862a061e0bad1ea37070ae6721b2b6f09106b52856bf0b2e9ec7f319abc0115477300b805060eaa084cde35d9cdea4cd06d0fc45f6f4c7b36b1fa431e1a46012686181c360adb4d051cd0cad11ee558e4fc86b7c060bbc18939610169804cca3b2a82f20c9a561a1eb54f4d6dffa1443b3f427313229a686fcb9095c465ac4009ac532c17aa0d8a98a3be10525ff2b06506db63b61f6b7b50c4d27b85c43439229cb63227fb9a884c0cfa05ccf5c5c7fa4e049237921038e5ec6fa345d034ca456a20e448b50bdcbd84f614d7256e72ddc10614732d9f5d921d0110d4ffefb778086f82ef886222645715c01cd9426bb5a51b50d3555e71baacac8d2f1402b570d86b6823cc4d999fedd511ba5a3b4d7880f796f5c4eb4d84846edcffdf69c4b8d0654080034be931ab1d15ef8732565f345e67f8c806be9e68b30c7d2f3bf5b7d3d4983474679576efb56068fd84eee63071dc6042d0aa6f0136a81312cff6e80b8c13a042d87c9ff4232d2a70a21b0b7f85184779948fb100daad0ff3ca23ba5d532f587604bc52efe431ace250fb5e0d44c46788f76bde7dc1bf3a1e13de01a494260fb193571f61b876ce9aa07c5aae8365105da67ca5f96b87f277db40a889bfc1efad9f342627b6b823dfcfc2b9495b9ce08cd70cc8985c9466595c6ce12a65bf8e4e2bba55671009760e4fd9848d06ccdafbc72b0e8aa3ad01856338e091b1de04fbb9a741946ef67250ede9712a595705e81f820ed35bd615d0b699407fce8d32eb0dbba9ab7456b158a6e67e6b034e9d9f86298f50ebab60da8c5476222c8c609507c6c5a7510045f4b462e7fa26412fa8225dc885014d428436712a6b9ea148dedb008eca4c5bf0aab1ad065c208cbd58612f3a8c8bba1f3958c64ecbfbe39411f7958855c7fe6e1e5a7e59e69cb66e6ecb7e80c7a0f345c7d8572de8856c2114244bbb92b06e8af9a29992b856cd00fa0cbefc71c10ef167d33904a3d1fb690f3a5b37f91ab6f6f4d63697f176037d415a8b5649a62ed083b1a4c4c58e7ef90961aa6e283f42883e738158bb5bc623bbfd8f8c3902255d60100ac29293521c7d3dbfb4ee9137f5133d73103087a031f98b6b41dd38484d63e1e2d3254ed799e15c51b3b2135e179636c2d174fff9f9e9c14745ce949404303e2691e51492e530a48eb0b799655618970c0e3db01f3764dfc9caa8b004e33873c87a9eb1d55b22671c977b87365031f7e0f8a91b3d7d92f7ac7712a1824d4a483cb5fc271d8931ffc355796c0abcb80bafffa6b411d2d4d7a713c68c3996157e200e8c9637240727896c63fb390bb6cce7f34f7a1dbc7b2b4a1e29baac08d4359855fc861f07add7dcbb8d41efc46886ec7e4d6b3235ff1a94b2a4d6e52662f4f2abbdbae36d1e3f0879ee99d0822dc73cf253eac24549eaf868cbef95b4884b14581f139be2e4b579c92088d01b15384844979d5207fd30cea2060a5101ed0a4969b4dc48667a13ca88f2dd535eb3e4b767d649dcb63ac26a0c85a29eff545c5df710958b797b4a6e38f49866948d1410563f1f3eaf4cbbc02930760a2fd3af758f88e0e67c1169af21bc041f0bfa5075197a5f9552ed435d2fd74d8470ea9c75adf1e274807a0aef4b9ea74baf7354b698c1afeaad5f2fb5923e5380643b05ce59b4b6d2f40ebb342e29563df80614283037fce56a351e9132150711d8610f6e4927cefb164d7658c9b81026e66edb235ee1354c7eea2c49c01e0bdda9bb1fd554b6f055385083148a4e3a18e62038bfd7aad82e3b99acd0b3d73791af61ca8aa2db1a6fc8c6407a71be3673fc5ad098d97379722a17259ff721dc04186ff2414012811bc1096447ef01e9b35775c77a7412ea6dcc6687ff059a3e1d9d6ad5f91098abffcd28ea2d9f824bdad8a646e8b95247aae493dd59fff01a437f19b4fe563e3afbb6dff3d2779fb74347b7db32da73fc20a37b63bad5ee555d8f6e4d8d6fe13fa6ccce0aa2f0e9a49b294449ec6d9b79052341cbbacfd31b15ee1c63c5c5b4eb68dbbec184c616f2c44f9b71174975b290f4abb6f4ac47c8d598f231a940f9a331cd922888ccadad3aa64bd04f2000d20275666864f7392623e1f01feade2547e709e450dc008afe55a1b9c9aab6b41c728abf1489a34f09a419d0b84243aab362f115c269183b8f1776a81cba64a82ee034cb63a5b8849b6f6330d07eb7a24b750e6331f2820313c44bdfc9c0c6deef0cc041145296d033ce2627be170f3148b7687d985058d4a58cf9381ea4f53b513635ae4f3be00bb7d6739eb3d9cdd2935097820af060ea992ed95e7bd34ba9d3414ec14c272ffbd29bc3796771e0ae245d80c214bc63de52bc294ed373a6181c8976b0a76bc788cadcb42db0ac4d012c23646b509cbed0c63668cb0082980cd29fbc0328e59c76068340bbd15a2f361d9cde1fc4e364b1e50779e3778c855043759497fbde25ba3adc8626068433dcbec9f66daf7e4b18f8e948de8fefbb73b417760e577e43073973d3f8f2537c41fe5f502752e3424c9b719790f6ecb939b4aa18ede8ecccf24a9f19339f3a2e881d93091b94edc31a8ad9c775ea817dae2945fc5e6dd3ea6bb41f5bff0baba52e805bafdd4da9334fcb4fa3567eafd6be37fdf0eff06a30b73debe0869fa3f73a0118b95ba7f6c2d0a60feef24a32b3801b829f52e3ffdbe3c2d357dfea36a49caa5087aa2291c3a0b49e8ee70dca4e0b8b47faffc2a64d537eff8a72f8fdd7bd75329948628a48dac9c64398c33bfee15877ad5f5caa5093bab18ab1c79882411cc22e6a76408148d74b7479b6153d138f8c4f02c78ed1d543098ba0d9599091364170808a3086dc2012a5e2554679fd9f78ac7b6f07c883ee8756eebace05f4bed7df1eed90db6558702a798d5d2dfc15af8a22a74caf4eef91710c4d1459d7fdb3dee6695bdafc1249144c2c5a0644ce9602628f0953a0a3c4bda4a9c355445bbb9c3bf6be52779701b5b59e22e9feebdeb84ce3cc74c6cf73d1e54fd248b89f841970c82b0345fe2b081731f4eb0aaf3db044469274aa27920635c9e8e850bf5a91ca32059ba4d0e32200e90e5dd9ca4d0c83218474a717755e100d20b7ede6ef9f0a057c8e890ae140089ded905713896c845ec23b94e3f5c2d82146b63eb3674ca63b3d5da677eaebc29553b1cea0263bcae045f14e3bbde81481ce6446c3772540d01194588e410cf9676fcc05d32997ea28916a590468ddb5c7ad9bb71cac1220823802e9c6dbfa85b26b37f340e6811db48b461e849b204ecca9f4b5e608e257cf51a01bf16cbaf6961265a6b85e6061562437b30b4a7c1cb7572626b76056cda42cfdd01681cf69486aad4160d818392031f3ae339988aeffe716023dd33d155c8e601e75ef634142f8ed9d9ced47397360cb6306836a2f1e637cce54ed563644aa939ea28fcec0697196f6e2752d8edbb10a67a8753e4901b94a6665610f742b974cff6ad438ae995e2692375403a60f898fcd74d805a2ef857a12d85584f6e650523edea3e13222777fb5936fd7643f1be449261218051d650d716faf0cb2c44e018221c86387882a03b0678900feb58c4bdaaaba122232ed485d037c942014411dedfb7cc9298c4c0903494f0132fab1102507aacf5f3467f325f4bae013ab1af10df388b7b92270d2a80408f92ef594c9f6d739946b2770c9a9a420a8d66aada39d4b827345acba6949bec092e8a0956651a5774b577f75fbfaef2abc1d8a41faae25aa7fe480ed4d2cd70171c66dd465a25924a7dfc3d2e74990e517426017d35228632629875dc426d0c0d5a6bd4b43193a0a8a01ef4ddbeb08dec86acaf720020f0f514eb2549116ab494548835dadd18407142607487931962e3b00ae5d28b5e772aecc4eb8be8c5b16e992d0c6d51a172788e69db3370527fb9e4a2de4471cfcd4dc20cd44e0e1490586bd0b439d1ca508cd881a8bd8ea830e9521bb7abce5cf3d57a8f54ee24015c73396879d24468acd50318eef488c1bfde86e14ae3326380e9297d04e055c931c30cf53de6cd0183bad74012e97d136b5200a22c85fa32c0e6edeae407c0be1ba2f7f63c108e4f40aca22e1f7a016aac7af8d2a9a76f909bc3374e393ea3c6404074f1d332ebc2d08b6ebda3936166cfd0b728dfc8ab3553901605f087e8d9628b68ef5fafd2fa838d15ea23b316fad761fe1fdd572f4e0aa799cf9ac35486ad1737fc290d7450bfc6b959199c87efb8e58576dc8d5efa20528452f7cce96fd4e3ddab63e1ab4e80cf7ccf835ba25fda1692b0828997cf5ef35c930759b8c88112a591330ae032af21d8b509fd2e3af003d99536de6155edf55881ba0cabdc14f348c6d18e5e704120a29ca8932ac42056caaf84094c892215c66a2490a188b0f3db67b4b6682d2cf09eb3f577eb157bc561ce9380675c1bc2588447a088be9956d616cc29f4c4268d7753eedd4997bd353e85a947f83226b236666c61fa04e6c4ea78d02bd4453dc4147458248a8c6c35acaabe45d964fddfab8c0a7458f2791840b69c446df132fea635b37f508638d9afda23c64abed18937d6408e3fb857f7a1fd9be74dc0b4031758b7e277edb42ddff235da5c0125f60509de9baa953d1a13fe45ec06db5b2537c36746407d5eb90b97228deb627409fb4cf9a619619458ed6eabe966228071cf00b2b3eac5f1c84eafbc1b2f09b3f628ad1a0b9704aed3648712c7cba6dae18abd9eb083a8118009e660a236949494ed9af3b483fc53dbd486a3139630f8aade4d12f34ee03de8ce2beaf23f91a721f868a770a9dca565b62b25f7e9b97b1740261d7b01761978fb30b684c307408128d0a38830c74734813cc9cdd1f030996061dc76b94b01cdf2edb9b037ee313b906d0937bcf9e000020109c186b7eef9b23eea916d93f290991da6ab02b25bc8dc3fa4ab1f3eea4ae1c991ef1ba649d62f9d5e925f55c1c6a6bf1bf0ceb400f6192a74a8d379cca02f6541f6088716cc2a855f65f8ec9ef6d496f00a7ac9f3690a78c5f6921f4f7ecda832ec18d8bc060da041fd5589f0f4d0aa83fb21b991914b53d9364ab9561a6eedd923134c5913f5bd38a3bdae753d01c5219a69c18b85194c1eccd566f3bdc59031430b4ab0268f4e989e17b4be1ce6f779b6e81282acced7f8e7de56bf7e2d73f684a66cf03ef4e7a3539346f321e01322e0e04f6e262acc1bf586508d76a77bf434cc0245cb01c5ef3b95e4e8929f2f2b0bbc13de4affe870e5762d67d2b71163b9278d38c36645515a1a6189dc5c28c6828e69fdc32f4a9124565adc52f8a251bb9a44e75796685f0ccf6689393f1cf8dbd1527110b9f6cd30a35aa017a51f24403e9201a9eb56835b31ed6e0904ee5edad24302762d55c81c664279d0a27e1fc6d9969e278dd7982f39c6e7910ec50579d8a416af27b39a7b3b3c7eada73706b6c7a1de9009db1e052b157024858d4989de52fddc27c09079c404a6a841c7c4bb16bc5daa3bf4f7086cd248e20574cd99da1d0889cf1070239f6ea5026e312ed8571f762abdd7babb6847be98ca6e7f17e64b76bea19b501ea8de1d0d5777c83df1bb527614df927ee196be6fc8b2acda54132f87433d05526dce1b9c9625a94afeb1d11fd48ab0ab3a31c064753b2692b3234c55b8371448674ce5b80cc76131bdd9364d16fa491cc060f8cb624975bee51b74233dac3f41c5791870f36ffc224b3cae7419742b3e26bfe151c9dd1f2f1f10055634259e43560b1ad55930080cf89a9e1547e4d71af5bc12377840fd33410a0fa70b0e43a35fcbd39499a5b536cbe5cb59985839f2f31d64c0567c9af437851ea7243677c7ff18c3b1ab6b0364eac449c81f81e14a1e786715cce1ae9f50f4d69c8f53812e126357437aa2fa2d75113e747a35da9925ba2d07ef82a06425395dcdd77cfef167b1a0526e70fbc40e5c73510eef05e404a15d7954b61869a82f927737adca4d8e1c4e2e827e195ac065bb98464d10fbb5429a67b097a82c0b211d0c494779eb4a52fccf117988c816a521667291ee37aa8339c142867d0cbc4f466cb28d5df46b14d42c7c9218505ec6edfa8421f0d442a24a9536a525d97770a1395627232c88b9788b69ffc272a727764dba085f4927acec48af5b64b0792b88804ea3f695d1a8463934784647d059c2d00d72b0480207f5d13cd4168d279d644753ef3d662be1e13882bad3d225a4fd9d84344547e0e9e52fd57f283f36d6cbcc36e1e0424a7514c49707ca3b5183b9698741baa624de349d3e8e97bd235b687ed0af2114c409fdba4ba483e72c2300efeb36c9ebcc46e1320b79890413a6b4f2067705e89a588d5ad05a32d5cde936bad8cfb89f83d45af8e37b6ff188a1856fa8b84caafcae58d4b3f6cbc785e9d07d616f5dbfd610b899e6133bcf452f65c768d7fbb2a76db2a195ca0611e36fd15a959da9d9bfd63c3e4685a2847ba4bc97aa9c736da28c1cac0e29660fbb7a1ec7bb81ce3f8ed5303935577596ec47cf31b1b2199aba1306a533ee56b11c3ca3fba76bece82d11068f5ad4007014d784b8772a91ec8ea0d926eaf65b8fa09b42145e4d53ebb762cf88bb8c84a35503043db1f88208bce55b7902a14a6fecb3994bc03c53ad33f306d00ed2b6144ff11ce46475f61e24275a13a9559742685292fc9df39c2f72c3a4cce33d593fe5b8835e30db39ae2ec1a8334cfbb1f1127bc553494f3213f727853fe627dd0b41e5da3d7acc5a264c9f712b838072861de4addacbd4e63cf5461f53cb3118e401fa8df0c4cc2e74ffc4d233de5695877377aa46ed2670387f9c8b9c22bd08fa24ea7b6ee2c2ebb42dc4cce8c6f047979fd5d035839106bd2d77dac65a73aaf2af9f71e0ff7b50947a4a81c3c249c5a68bce8fc3eb8295f5a87dbae2c6bdda66017574cc5f275d170693c12d7a5e025174ea211f280c7c6eb3256f94564a4decc5bcdc9020da9bd5f6f2ec08e0af6a2e07e3cf8dc764ddca8f39179a008f9098f43940389c0cf9e2d94a1fc2b6c2ac330c290383b66581a3dc5a436494412230e2a52cf0c51a2cec0797af4d79a0966d2a5d28b8100d45314c7cdcbac4dc93736e2db2ac68c3af47ed65fea35f5602ac50d6616e48fe1aa5ef655aa8c21fbf3c8bf0bdc251ab4afd48579499cf76d2ed0a1f0a4450fe9b4f28334a25ad8e0a5ee184448341db270635a2902c0c93fe9f95770648f87727fab2d3243e6fefbd7523723c21f33f7f47108f67a15ec8af01d04fe9345af89313ac8a75ad63cd6627b3b6686cac27ce0931fcf00846326d3f47d0e4fd03b26f92dd7050243af84c6d9940f32a8dc69fee9cdcc6097371581774528d178bfbd0ae21f018bb2703f7f37675d71b45b6e5a6e1b2f306772c7a18ede66b2656cfb6d5274a984461c5beb1fdae1cecee73e0eb8f1af1fd168a1ecfbfce60fdb54af9777311647d3bd9752cb9b7e0a88ddb977cc841f6b523b941705bffd515da2fca96feae9451121e1a1f6752327811b4e321c168961a926a0cd677a6c1ebc764c52f84dbcbb245379a71e6b2bba2d72604fb2564afdb4f5360df2ba078e73f7491ea18288bb82f0baab4ce003d38513dca94c121a8acf9ac7484f60051bf650b10aa6279da04f546a79316dad6d8da68508de41affbc29b38232d68d147b157e1ee371853ea775d78deecbcf246dd7fd42c69be328448e288240aa4143830941e6daf959fff77170fc8dc4e427d7ceb3b867e2a0be3a59d1f58e02cb2566596ebd2e67d4be252c0949a35a1201e6a8269b35a38bfc9ae3f7c7a4310eb03c644597471e295f6f6c5ea586bcc57b161c569ff98a7190c28fe736dbeda033d9eca6049bfd5f3944d36c5365135e68ea0e28ce036436b8cf0f73d16a0e4ce2290999c4db19d4a3c4d1f8e9d1c8b2c6e0f9e39c03f14cb013366f836bf990207989c6e47b8cb6c85c7608a9687f8ac0584fb595bb034072f45e34b2192820a875a7fd71221789cc737867def9e62174e98d2c9051da2ec3d7541f69f2be617a2c20b0b8f650a4446993255aec70a98ef8e8be793da44792f14713967897eea25e577415e30cb3fd5a4e15f3c90dc6b6996241ae186e52a70f15f355b54117cadcc5845531aa36126dc34e1b288911c700c973e0cf9929a1bc9f2951c5735d97d2bf3ea7220b01518ed6ab845ecd96d810497392f9763744547522280516f8e32b93a31a65ffbaf3f2904bd5bd54561dd22e461e53850119e347d0efae9a51bd7d19dbb1880a5fa5bf03116c3852c68ad8fb534ea6699a5aeb1027befa9788371d1caf01d690bdd89e292535afa74e54e532e78599a32d3569d5a04614acef0f4e540e62289ff96e3abc718e5494cc354d17b2792ca17654b015b886778a8c1fb36488aeadb40baed3d7243cd7210e8eed254878e3e249c2fcec728286b29b9d6ae4d696ad2f3e877394336d47bb5b49ba3ca242e3810a15d1c5d1106ab70a328077507fba40b22d6d71d3cfe704eb9b2e3d9a747f8f34ee7b515fb88f31fcd79efb75f1ed91dafc2c8d00b65c006a8c2a75727dfd73d3c85e22a99b566a47902c03679c1222ffae8d28fa49ebc4794e07414e288ea80918d0e1c175bd92f5e339346ce5dd2dbae32de2c3d2ba972d6dec28b5b4bfe68cb5b29bbba623dec736efa36e089b637ef67f6ba2084afc8ec5af32147fea2d26a01c0330506f2aade961f27cc8e9070c258e36a2798a691a51ca403b395acd340aa7e4be812af74f4dfbbd47b07224fc05adc013fe53ac3fc02b1edeb235f828b841348575694d8764db00a6e2b2533b4f96ab083d22a4e4e4f6451532674608afa345abdc8be2e576e10d127b413f87eca5cbd8404ef3e1ec708ddc5b07ecec32b3c7da3b2b302a73442e2a7e3070f56533af9e1b3670826cad9594ac0c5f83157f0cbd57c873cd21e553315a6ba36c9641e8b99b04a10839c151808041998f54a30086b109897927c4ef8bf7346e28b2fe8e4c100b50281386fd49acc222640833f66b139d598dd745bf445927a1379dce08bf1ddf528a2139987ba588976da28110242d0e2e9ad62d4e89cd5682ff91d91c3ca2aef24b3b7e55053bbd68a77b65af6f402483e98c7cfe2cae7aa9b61759c433aa7b007b02927ebddddf3025b3cdb18ddd9827f36898a224b13d03e9481df2d6743284a0ceb4ecda78fa0f8a5cc5c8c2af394ee7f16c190bc91743f66904c29e88cb213167189d78da682b92fe3d5dd859c7f027aa69e79e9553d591cf5e1ec4d7ebc31c8edadd18acf49a89613bbc9d622358cbc18a7a41642135431579eec9f4b4d7415ad63a1dfb47c3d2ad3a5660319fde1c99d5a278c0d964e6a3c64eee56b769f56156a04f51f85b61daeedf781a7e091a13f3cb6f94d1282a886628bdae38c080b5f1205c5dac25416bac0bbd7bfce6f7b7d1af73d9618f1499fcba7e4a40a39fa91d6b522b1ea310801e640de96d369aa7798d77d804437aee1851c28a1b5f02723e4227edfbfd7e321f8ac86844401d5c7c6a90faaa1d88a7a764dd664cb2cf8b403e3153e99ed244cdb855c0126c503caa887929a9763d0123ee630114441ef804acae7423e6652039fc9bd0db9233fef70410c0e2aeefbc8176b24c0bf57a462aa83e4889e0242443f8880241c47fd9bd87d70a1191c3d61bc968bf7b57666ffc7463ac0acb124385768ec361b51e8aba0974584a36368cffcfe9186ae1d67e959b0800c0b4c4f2613321127e58af2284f4319a2a4197b2703ada3585f6b20e799ff74a2c96e369928b3a1aae2c03af50507d943f6c8a5d8c0aa9f46abc579134eb61f66bc2ae2ecebcd7e140ada3a64044699f9a9a86d54a0c022af5c7156cce235b1552ad75f56565780594e8472f95e92bf7a9d358de59855ba58016b2e10d405b3db69f1fcfebcfa48476ae602f7c559e9cbbd59e4d892269456072e5cce597bfee7419a5a74261629e68f68f305cc8c1c5cb344df1c344a91cee55dc2a8c9f468de44e9414af30c1bd4a162c12ca2434de804d2cc6ce54d8a5ec9cb775082995e8c0658f73c36a50764d22c08b922bbe1777ae567e48b27b082ad80acf42d6b354cfd3cb5841a1a69034578b7f817dc98a3dfcbc57a327586d97e35ffadddc8d52bd87924d4a93db263fc0ff1cd10ee4e6a6bea142138afb624673b227665c73c8fb52c0de794a0dd1466242d36a8b40b34ff81c58aa513352fea7f38d9e4e99ca986149fbc2a2dde1e715b0136426341f7ce399a01d8392025c6087d5f78897f3596bb1a22a74efb2c4e257e46072ba62afb1582aec39f02eade7c852795dea4c99af92e3b99e6e01361e7a42c62befae9eb5ed6fe27ee829fad78010a72870c7a6bb1a2a412a855afac70f55e65096ae61f1be0e34dc5992ef8072aa2e81f043b0718adec684e797b69f416f907f9696029d89cda54de6179ae9d1f764cd902b72c4b853bbab476c5936eee2ae5278c6cfdbdbf281c0774f268fc785deb95d9832228e054cb5e1ffb3ce29a3dc65eaf8108199eb5054b6971657f0e1ac6bc70dc997892770c0f09cd938b9b61cb83e0402777b4190f2930da1c7dcb40a5021c1b44a3a8388cb356c18f4997a1d62eb2a35158ce1e1a0c190277d90ac801a25728307c8a6ac5277419dcb76b4b1f70bfcbe75acb26d2636d8fbff0537cdd96fd30a486d63ffdffd7714d234756977dcc3cda20e7c6f3aaf96e191a80c190bfd823643f59ba4e916dfd91869cb745e3f8c8e48ba1b2b7729af0047d98a423ab5926c4e4263327291b689bfe1453a523cad81710c0dc1b9697939c26cde490ddfa0ca16ca6ab7e145bb040118464bd47ceda0b5333f9d6c75160d392bfe2790a780bdfe17c1b0768b4339b3c322a0a0ce32f92eb33b7a7719d58bf751759a359c72b53a46e0887fbe6b4347471a46a9a2c29978e39c323564a6fb7810fead4834edf81d890c7a46c252b6b74015e91d9112fbf670d4dadc28a2284e0cec117a46f5d766a502ee3a7b6620fbfc38e390d3283fabd941dd407d9b9176de667ecb8e06c23f74f6b46c51c01c81fe49bc16c78ceddcf09812a43ec5e2859374b75a2c8c001965e1addeb29183f87bde42306fc70cf85f9810aa8a6670eb2bd4f67425e91775f720ba8f90a08b1de060a96af173bb1721102915449fa3f51aa8c6eae11011404165165adfd3ee964ae250e417e0aad70438d319943c8bb7c9f096d3abaf2d506def72f218d063f90cbd2b50d03c1d312e56798c659d02cb16d797cf35e3c83c39206561b9a3fee02d07e2a4ad5e495a95b5e413e4a62006d0c6a25d118366ce75560c4bc3834ab0e7d42160640e46d985ecc1d707c9e09e3c593c0a38f932e9871d043a3b982eed294bc52951e9de3d1e73f7d7041338e4930ff91387aa75f9eaabfdeba9d8ef631682b8adf0d1f43fd489c836d55708a881ddcea03eefb797aab19a4f9cf8e1308437c9b664f04b52ed6ffe44bb62a3b1a8831dc77f9ba250e976637c236499917e51caeff442e91306ea910cb83bd0141bba777cd517d43a5e4af26e554cb0e6c330b53388be616c8f188f6b137c8415e32a77f3aa09314bd13faebccbc3709f44d3b20030ffbc894a9e2d8ed8b2c3547e3c2511cf8b7126a03eafc321ebf5e0aac636759d88cd68d01657bc56d9565f5aacc269f8f6ec843e60a514782d969acdea9539a696200b0cdd15fc9fd74d5b5ff9f7a33d3ae61bae9eddf5f78ca8613e04c3dbc57de7ffbe21a6ff0b197d7d629eb8389bc3da650cd3bde745fff6debe1e1b6e989b7c6ff9512333b5306924b31c634571f895910404520411da6fd0c5bf6bad60d7656ba5cd0b83fc8d52f290d6e78c043e0b565904c5ec8b4fe8a1fce89c8d85b2f6defeed14a204415304afb900d4fb9138676061deb8e8fa0168c3eaa8cf10e9f31e135c092a33cfc070b8b9c37be3b293ce82a1df05e17c8598ac06cc2e2fa2dac048b7abf0b417448bc91a1a9dacd8c377bed25ad33428c433fee115c6b430ad14d48bd74ef7475909f08be6ee2afda9d82469dc5522bed23233c8c68a9763675644995ae52fe02906b411e46f95b4f9b95b6d8248f03aaff67abd221b70667c6ef66840a0d2c7f2108dc087240996e4cb1cfbda8f66b2a3243561a4acfd3100e39f348a561d7268e567476f3807349ae0b40fa431533c78d47ca0b997a28c5e6dc61c8d698e12cb29244a267af2a49e5c86a846be06f14535993874dae49ac18246af703468e19c92178c4c77939b39ab8731274ad6f5fcd58a09d8eeedff89ffd0bd87f132702c1889ea6676960f804bc04325fe9c99ef8e8338b17c0c8e7a1066847df8380e657e3727e52a0b76ba58d0b3e4173481f4a169221cc232877966e11f91dd093d974bd2822647e589294767f0b9eb00e4f106571e2909756d09bc6d545907f7342b6f7e2787ff7ea46becccb0531b64d8e3021d1046249063dbb508a4cac59a796f455363c02811a604d158f37bbd4bb0af17bcca57b6611d1d3206b579d24d7ef559dfb225db3f6eca36f94b8aa4a0655613eb42adfe6a60642c90085467b05a2e46a39b886b8be43736b082614ad6165885959136fc52145a76200149c6248f394e9156cd19de90e8d21382122a61935a2959c6a9fe61e386a706399d2152d917ea954a7a0c03c4beedcc957e783bf864e6098a7f27076be3d0e628e251a518b43d0957cc0f2c50768918f9923e605c42da2b91f1ef55fc0db3381eccabcb42749e3eee19166bd1a5ec48b5f7d0528ddd887bde648482ec4770c7816095376844a9faff8ea63a8670ca43d04b8295dba7af67d5e9a867759cf5336e362fa2c84d18f5b38b3ef4b76ac103cb483634f75c6d911cbce50426d3a06f96c38386f7cb7b5bf42f2959b3722e1370672d3bdcb5665150ecedf9e20ffb437cef33a210b2354dc8dd770e51808718f2dff93acfdc5031859d8d0d7742bacaf6668579fc119c607ebc951b0ead30455a1f10c969b4d26f9a80f0abb3c79df5086a0cd2c477f21ca786676bb4f603e5460ccefeb643fe7e5c77bc6021de2407080ee839f9aafe7edf2c084f937e92d5f9b425f85fd9bb8577894f5f40d08f18122ead7d238859766b17fafb47477c06b7405158e8b760de39956bfd58f61692d483a9304ce4406aa010140816b31900733e17c3fa5c53992666bd34dcf1c4b7a2a21d2a8fac9bb11f2288f1cf44185ad1aa2f61c5b50ff6571bf82454c4eb18dcce6907c0b31519e1ee21964f659a4373474b6166d215efb107b18ee4a3be1fa3ebeea41ee0b4620d5441bb7e2fe0fc951d187368ea4dace475c3585baf3487e3f891a61bab0dc1a85a258aef847d5c01465f4c4fc4340c3ffac60bd1e3fadea8db65f32c25495e0dc4d20d05eda74b4650012634d2b323513c0e58d9f5e50ac56afc36b2ef82d635bb40b5ab0035474de3273d7295e0b65e62b78f43f006c1c6f9445fe9dea1b9d7747dd6a16478e234717c53631bffc1a18892266bba3f0f40dcab21f335b20d4ec82b2850944e418018952c2ca50bf15cee053818e8f6d45c9b6373e7aef4c9530b124832ff479e950c121399ccbf2bbec2a203f0745443c9d75d10fac0495b8eba7134cf3a16c88c1f17540ab87f0391bbd069754d4365e8117ff6aed65c23e8b886d3414b139e4d47e6c0702fdc46c1dfd17099c74d945ad205eb1e66f7f5ba2fdc6b5144f998fe37612c5aa45e70ad2f63c2db6c4d00d4ecf2f34b1d309bca591c291ac5a63ec36d21f10d7f243649156a2efbb7d02d43d77ddb8594be510fc39f9d45101baeca3fa76eb94267fe0fc6712536a80b73474f45b2de38984750c7473bd3c2aa1aaed6d981ac5a6f62c700373d1b4c227df7c7f94aaf601f238e591fdb706bcc481f20b312a6a297b111d123b2e9a59ecbf759b4bb2bbc997c3d5ed4396384c210e7197c8930fcf76ed04268e0818bed30e12f0ae10794576051225b75fe91d6e2330e6f530e8305cf562f50cae563d054f7a831d92b88f1cf15b9f495ae67cf3d389bee60b632f73f6c8e919649e4cb332fac3b8878c0463dda4a60ff8fd5ca3919a0c1a8e00e06dc1ef5910fb42ebe9c85e578149cc171146c9e36ff9740a9fe2c69eda12221b0f9652c0d222ff4f0b2a5e79f69f657be3061674e474de7c74b89b5d8cb9bddfd9e94091a61887c2e6fdf6b2eb58d4ac76132238f6910d5dcf0e16f5b24b2c069039cf24583a1b59a1c6e2acdec12c846ec258fc75ff4c56554b73440b4de3772191eb862e250ac53db0e053344f6bfd00b0a01f404277d41efd4ff85038a270e0150afadfbd110271de77d21ba8b99a268bf2ce099e94fb9d11f9b619ef89f3492ac352af2c5a8fc2cbbb4998c3ffbefa69320374119e7761ab5a89796479368d77608650bc4d0efa2746456bdda9398d86b82e3844779a08058624900799ec18f0c1a59327a6f74f0f89aec95d717ff08bf5719d062ff9bcc3268b77690373bac08cfd9745dfc4dd94f25b21ec6e4cdb260e281f3ee25c85de038cf94bfd22bd435cdb984ea7b91f419eaada8c0fcd1461b5cc9a3cdfccfa3cf2c917ca2d0a5e350c6e0377693652d57ac6345f04bb9a91a9b3df696a71ca5ef0e7e538c472c679be8a5088e16b6447df0414e216a6db426e943ea81904e7caeac44c1e3f995233edf0f95e8af9a4cdefdd5dc674af8b4ad972bdedcdf95d547f7d8758f0b318c7b8c0e1fe687c22e5f36af50d48a5ce89e1a4a17163a38736390f79f72483a4fb2e75d0ea10ad1247e3e08cb37568f0715b45c3d540690ab03dcd974f90d83c92fa9846b8e2f3a3ea9afe1b6f809ceb7d0fae2db9ebf57e7c3f187aeb529b18dd2ad4c65aee4d6e0e44e373cf711de1783c584e2961222246707c7090b3fdce27c3c26cd4c7f1c42c2015ecb81ac6136e8449d26bfc97573b62e1cc7eb856c435797229951549cefa5fb659759885099b156b4df54ca227baf80bc2da5f406dde282956421da32465edd9117c76ecfb9405b062ab8a30bf502108d04bc260314dcacf8ec0df617fc09c19086be6b168331183a866473cd2fe33c8619d9925ffeec1c5f945657d4984e6c2e631426d1d6b4710b58791f668a2244e7bdc5e168e62f19a2e0b801faf6de229af1c1596908bb040167d22937fca123a845787851ca812874fb906960c551d339b839a6f762eeeb3960b09d898f0f2e818b3087c6dea41cb2348ac38e0948983c02cc222b9f7d390053f1d905e0f4e7b06ba42f2807334e9d7cdf69f199e3c7c45f1b6b5471b6ef1334d93968a1150862473c946a61607425ea2b7971a28d0b8f21a115e5fc6f82915b6ade19171eb534845fe2cdba8dc20b37cb0608220d3a71e141c62059452bee044e1a3b9ca15af70bd1a98b14ab357443ca92f06eedede8f8f14e7115a09ac3d04c421b1e69af0cc91b1350276a3b6d8e679730ac341237076a90cbaf92cf0b4257e40f9f11c7552f0fc7d5dc401d11bf2358445a6adf3270eb0cd71d8320fd431ea71bb3fa48b8b24b9943d33bd927216252e3c5ed0214da145f1647a5beed9f3b54db058526824cdf47fbdea0529b2199f1f8939ceaf0b0c606238b453e8586eacebdd2a06afdf9f1e160846104a3d11269203ac96e93a3173e2b38e3ed090c50f9a16cacfc7f3b82a7c27f5d9f47683dd52c868154932459c844131b06c7a953ca93b8a27024973174f13e753ec2c08b06891725625beb2bedd3d561fc5fb9071688b0993e221621074a646c1a46d7e59784e04b00db73a4113aaa8e8264fca1caa4e390fb6cc5ddb9e7479ce7f64ea932f6a9fca02b7b7fa13bb335fd9f1804a4d9f08f6ddb355d787972764729ed3922f58e33675e86663a1185d27a6e12d4974b0e159598fb090cba23d7f78d1d2299ce7fb8c8fb5c444be4a8c275d8d9247c5b87d3050a31e00bddcd27aa936cc349c5be45247c87a9998b1a10eb55bbaeaade39c228a8f399035a9851ac1e0d97349c64fe8525d7405fb8c90b90e0ee97a276147a417ee3eba35fdc7fcdb055fecd67db341448df53f1681cb8306c09cdead29ee45029a6d10de1aab2283f3fa3dda26581dec7755f24626b0381f388e9b60e723a2f3665ea8a9f4321bf3ee968b90e9428094035b8dda482d2ea064bb0104abc5177b04de544cb9e6c0ce415ecbd78d0d18ed0ff3e855123db223217148814bf3c1d8d0ffecdd5e6a1fe2ca9932619d58d12d57525492f804e8e9c13d0ab3d4f38ca5c61898cd9fa0cfc0f2f31a7e1312d7c587ec26519c553c3ff4d90cc2557ea575b7a915b89ecdae015563169bccae65816c676e3e88c52ae6e33aaccb755f004839a82f2f3838c1eb86f5c4e6e574e3a403ba17c0d660d266f1a65fecad9bd3cc380e7e586b9386717f1269b89e29a8d0a91a39dec598cf896bbd252ca0acb0cdcf23553a53c9f8e02f5916aa04c3da539bff6b0495dd7ba34b1375b242013a1a839ab89d6f10a8bd0ba9b8db0c9c6ee84804f296fde80e58bfc03df35ebe261d4a23842096d04c0432240b894601f8fabd4d2fb8b3d0008d3805b08174bf78c0ffe7f38a87ad4fc8733091e216c0cdf827c5a7cbd4fdc1c72872e69f1b5eb63d922e0364599d6d85f982fe0731e07821c81c9cd89dca548f63be25a4bb5f849df6891e76f7a9b57c11e4befebf862115fad70582321c28dcf2d897a0366026bc12dd2fce585dbfe743793422b53c495111083f8a94f053f34d1ab438dfbf6c5c6512382aa5439c8c57aaf8683dae648677d9ad6c2091d3b75ffa00b5e3a7db4abba9468ba36d498f32118a62e0db4598e0a4c1c4ceaca3aa57476df5ffcf2493fd121a004aeaa28e58906cdbebfa9aca194ccf6a5fdeebbb44f6906aeafbb23f5031e5004f3cc8389b6f5ca439990d2a238a599064362530b94ee2ad5d4de84ea41b100dc6e5f8f74ccb2f3bd9582afcedb77339331a16f36ac4b6c4f81f6d61e8064c7183e6d3c8597fde19883418cb4a4d306842f46d67ce3bedafadf6deac83abec854b78a52cf04b9bd1287dd8bf47c19196e1a546605e93720d7ad0f90c3eceea0c8de47fc95a6abe7a699abbf6f957029e9c250e9c652a0576dbbe46505968d857bef727fdf32d02ccd038c5301e0cae12c6d2ffda516b454e37062f1f83e64322ad82acb0d0336e3a0e7808c8d95f973ec520b61fd116adee145e960536d4cf32cbbc1c5f29671924db7949350afd114ac1fb22e4c84ec9d2348938eb9b01b5d9d706f840a0f9d0971bb1047dc6d60070874fecaec9221c4b89a521e1c18a087bc00d4d6e0b3e804fd8e038c21d32f2ae966029786c4c3a7c9f15fd134baacda222b4ad02a6cbbc484a117da36279b386ffd01ac63860adee817f968f83036c092e30939c84863384db7b9fb4a7433326db63d2cf3a8e28fd3696fb221177fcd5fcf1a11b4fa559ee8678f3c580a349ab0018df287ddb60dd5588696338f54353cc9168fe65801bca09e3d80b9fc0681f0c4c8aad23fc8e3e0eb214671be5a95e660bc444edb2b0f751a7ffbb7a0d9892dd6059dadc916f1dc3c45de544d6970a25751535122e59afcf08a898513415e80859fb58fdcd94283f7601dfee9f7e79d24d5d9ba6f06320d06cbd7dcb3ee41d011129463bb88b6b9def103ecc39a866772030794284361a49ae2e1ada374b8af2ea5aa8e0e73a43b476f7a15118f2d5f9f26792b57c95a30b90478d24a1a6fa986e6b8ab63e914f89c89561e8b57779d3fbad5782b728501c99ac9c3d4c0dc9b35f42adba8f54195dab859f7ee68212597ddc21d7582915fff3a2eafafd7495e4b972793b3a36720131b03b17de64e522296ac802cfb3477eaeea615106132ce4e2e5788bad9240feca24eaa7b6eb66310e2ffe0e979f117e6c9d1566c063490b567ad9fdbc0ee5d1f96bb8db2f60caac29ac5cf6ca98503aacf4925ff3cfa436eccbfd895bd58c5fa5b34c0efb83f625027c72a1542ec62bb2aade7487adaa6581a73c74df832b6df9bb1fe832f4f7f03ffa6936b9a0acff6b2c3768b781225ca6e0983cb75c10ac2abb2e8c421ddb0dbfb965f99c7703d0ac47f7e4e8bdaa50a41dbe7babf8d21ae4ee51e8ac0bfc30a7d9627ec4dcd0bfb63d304dc03bef2d72c45a82b1d956440c3966eb2d22b12765962745661f656a1b9933ec5a5ebf6e08c94f0125bd5152a22c83b9ef147193ba2807ceeb5aac427d3e4e75c2b70374be5fc50c8247a98b20c00fdb3d53a722735128e6ee06be98cbce7ca38da8c512f1ee03787ec2c5430ab3325dbb2065d3d1f5489b446147e25e6a4fcb3279c001a8ef385f16349be93fb604901a5c3c332cffac341a00aab19db6c9d6e6d36298bd40bad8a84f80add6fb4a8972c0b1df317d1c8bd0635c9e4472997", + "0x02f65546365f449dbedb4d15903f8d2af483cbcc493fa0a9a6d1d982e0a353b81d20fe781245e513126d1f941ef3f17dcf3ee84b5a026981c833b726fd4ec0e179f891e14fcaab8c96e1f21a9f2a86efcfeb8ef4aab91c7baa37d5905d09b3eb4a8f3bdd149d533021ede698c7e59d0ed3a5f9b1c55998e6dd94111de984a50bbaca72956ebce5e79b8ce29ed039ecf4ec48e31459d20f6d434925144cdd0dff65b1de59cd3094b88294e5f9f6fdd6b8e3e42234b6ce1cea958fdfcd748cf0d5db8425688554243d688f6cb8fb87e390b0ff52395506b5e2df2559da156f0c8d22acb5424fac294a72ec018ca4784eac04a82e814e1d6af9ffe3d9da26d9d26a326ed10ec54f9370db7d56c139982075c0578ec2e014958929a26a5061ba9d86767c6771e9e14d406f477b3a09c352687ca62e62ed4b4f65656f4dabc7d2d59d514d82099e19fce2109d16f0e4e5d2f001ccaaf47b0f5b8c1018d6531af7fa5e974658f62dda07e53591ae7f9f0a7cbacff254f334bb5d9457fc5c3a6265c09e10b846cec2db8dc966b36236947453c2985ad6d3e7690d65bf3646b96929af7ff8a5410bede3e553c11eafd81fcd9c01c34ac105053634dda01257393f91007182638238228ec94778d81221226097f1ead47ed4240aabefa5d2d315b6b1a20d50fd7e1c39a45bbf517eb3908168f64d5c6742cf8001aec94dc71fb3e6fa9850fd7374b1ee06921c244558b6a76c666c9c2fed2375582c9e6db5d997abdc2a4893c60dfe6226c4096147568100abb137e04c0b4d06edf5c3ac8cae9d227b926d15cdf1c6980a60f38723488f7d96555d93d2548e594fe8ee066e5cfc30731d0bf7e241a1f9eb07e3aeeaaaa413639b84d39a5cfe39627d6e4a02a006fbaef1a6a0615325d15b9aaafe5ebaa93ca28576f3e85647938b5d869c2006ee6e4ae83cefea2de0cffce6db3682269674ef24f6fadb21dcf974d727f3c4dbc7b987302eb383982989cb112026747cafbdac25a923b1f919225c5f8d9c56b65acfd3ac31327ebf33f6f6e61f35a15c5f1bcfa8d85bd682b268f3777bb53e4ef1e7da3b3ca334bd80f248a154dc40d8af19bbb902c7cc13c548d2a634b3cea58cfcac5f4cb4938f69bd1ee5c62824902d4331f32c3bdb6841e6755680dd76b6544df2f440047544897cf1f1f73cd46e88aa4a25a9c3902b8986d1c77ece4c1e14dd2fec66aac966aeb76e4cefcd0018cd63850e851e17f8c8146f7566f7e187e0f41b3736ac94f66bd92063ada43e677a08e1792e3e55ca2c9d1f8ab11a6ac6ce9c025cca89b57582b4a7ef1120169807350b54edc9e1fce6d43b4db4d031e0b6253a61ffb082d320fa80169bb161f1a80c9c89b59bc543fc8e74a60f04658199a1a702c00634416cc56087405efc0d42b262c07a420e4dea46331bf57625912d685363fe651d39d5101a201440c01c7ecfc13da08030f1899a8ae7bb3af1e279960dad0417b9427f3b17d43f05d5b1f7121c8c57cd3a1d01cbb614d936593e24882250475f823d688b62da6e6e4e0333ab50b1c0d3d7e033412eafe6a707374c631fd5a6f09f3c0ba73e64aed11aabeed0470867f0204ae705427e089c168f5d8da6721b745e3df21c4f5e58974148f8388f0f46b740f9b3464edfa67ab61d433254d918067b4209da50fea8bf719943a306bfd96fe595f9d57aa62a762474c8c0b2e794b83d9e8cb6621f3659e0ea7b509c36de9283903fa80b271f1ef1bac56b3f38800e64751be6ddae9d0c77f1a88419d84a5068d9d25a41c5e1d19681e6aa7ebbab81dbc4ce88beab6692526dc90aff1dc50a9c77fba9c9b3d042607a79b820d08afe4b74341b9c7a3e36912d77ae71c13fd79429d8f7bfbebcf99e5cbc14368bfd64723fb5033290725c714fc1c13601bb02b979c9cb3d463cd2316784017422530a4b803b0978b4c4fabfd26a98c01b2389b1f0584d7bca5f7b5b3df90789aa00360c24e8d94a607e1797dda40d4b4e1aa08c4fb4cd7fab32fae8175570819b1ca6f0544283a4f7f5536c492dfc07eb132cb0fb273c62fe6426a88442cc3bcd8b0bd2a295fb64e28e5f6f5373c75b5886499c067fb1199a75292e2e7d6dedddf08a93b42199aac59b80388a05d3290b22c57d7bd2e5ddbdb504ee65d0ecb634db395ccc559aba5f7010c752150931ceeba290dc1cb717f3890b9f6a6ba2481267a8a1a8919d79c85efdcf9e4d5678e8d09852fad9aae10c5e65f3a4c83097617c55028ccc26741852495cae932bcbf4cb90858e16621867dc8d9e5412f79f3a1e36f075121e77b83688b7f689fd457cf92a0245962bfbc61ad4ab6704a13d49c9342bd6fe51b8db6665ae88d6c6f2a50b385a1c22725c7f99dc2476c8960c8ab3aa0b453bee8ee6df1d1d903f82758d64414b48a44962ba231e081c2e885f0fdcea9c0a900bbcc31b02cec6a9b3c812bfff000072e7d60ada658f2befe843c03db8877e431f436a07f9a7f4e5de0935b6e127e2062609a7f251c671646e964324cdcc8a5c86d215b6fc2cd7030c564aab8acfd880043def04d670072d94278996554fdbdb01bcf31e9a480a924ab6a683501da75e22ac2108ba4168cf1cf0a206712f8426337d4669726ecccb291c8476bece8a5e48165e871a61ca488655e0fab6f428ac25d84109bb08b8363e6e3dac128c9bdddfe15aefe54270d49b7e5d30ad88ee49c27b2136bf36cc9ba3a42ec0bf0ad2c375cc6d445fcdeef1e5b778cb5101c20a5c3c3c105cdb5e9875f5cb4eecffe0db3d2bca01a0cfa1d634e8df86943bbeac25dc152482fbd13c5411c299f4e249718cbb165d13c8c8031a152876da45bac2b763b1d5b76c2650e66f31f4e57f57325d03bdabf8fa05b070f720dd7b9a4a608d0aa6a596d3c5d853ac5619015ae89ece419431e2d83910cf9f56d1462abffd87afb82f4bf21d7ccaf131c83fde32c0a1efc93239b5f450182b73d7f936e8a86ae1fb381947e71ffb77fffeca65ed80bccf29bdb8ccf83eed867272cafdaba65e77b821d4fa30f99c0f93f9810884c0a98f273ff09b86323546daa6e131b7606eb9a095671f8cdee5bee8a5763f462717f84badc4856dce9c8567c8db46d2d90c191063503ef043136e7c9a6f57b6d457ade7a8ebc91a8910e0e484498ba5ea8a7959f81f3733c0e8a33aba68b3643cdf7f2dd572cb20c345731a032f13f637a1086624fb6d2e5d29521c9a0fdf00e9cb4c164a37a7f06332f409198572a52aeea6265e1c4aeb3c1fb2bf6c47718a68576eb0de6f1ac09292d3e810b947fe3070e099045204714f173190b0a6becb5766bcbcd620b9d52664728a302c9617380c7568bf7dc50deee26c4f1df65b885efe1cbb59a874b5d76c662c3bb0f0589b09715a661215353255401156b77009f1caa4c8fb3472e70ab0ced671107469bf94d5269c9d974dc7cadffcb49cd9f1d69747f18a4a31535afbb7c22a8891132d3dd15f97391d08c89e05651e0a1b84cad718d745400269935d9178f449a9e74779887d6a1a001af1b12e09299c23c4fe211cd19ac2cc93fca8b0985df774a7ab1e6e497a03d37414e9e69111a1de1efeafa5e3905026ad23f5e67fe62a42c4d2e92b2cb8d05f5541af259adf9c96811ede4a3406bdb86d551d253a56f0fc79e7fb1a20a4eef5c38670bad7dac3270bbbb162db01b1f81323413075a8490a5188584c4a10de08608f1dc934ef8202c17e4f163571282cbb084366650eaaf210d867217c1eb61e9196ab56ece6f5fdf14e810114cbf1c01c5c4a92ce087bdc6d6875741ff69f0e776094e5fb7171fa30cf3563773d30f3b52842d1a27599d6fa6d32514f3f588f33ef55227ccafb53110cfddda63cddc38b835a86e987d5f22a33313d1f86b11567a9ee9fb265cf240f9591c8d584433f072e845fe00472306bef6c1053471103fb8665a4ee89db574d31490eb0e18113a414f86988cdab369ffebf5d098ef12393a2430583d1418b1366a39f72590c776b53b13611b02bdf8af4696b1ab85f7e403f15146f9bd9c23539c37271ab2b5f75efee0ed4b89390f22e8ebb2d2d7c704febec9a882aaceacff4ee132d6c7a06ea61b338d1bef7687c58b724c892fe1e4beadee838bc7a29ff340ec6596b68c33d66454be1b361389cc54f7ad44daf33907983ee1e303503833331337a7ab92ea13ab2930c554d4b14b428c568f0eceb08d4786a28f2844b70180aadef1c049adfa64789ba332b05d53cf50bca882677ec12df25f4b841e85f126ffda12435d625ab1752abb4e14a4537cdabf0a465a59b2add408f52fb63c31bd9c6a0c00d4a6bad7b57ed8d46bd3d64af400f44c0e5f44b1b8fdf297550499ee774600d9d5877598dea4081a8c340f6f81ddedde694b9e346044d6725797b98dbbc74c8cf17bd2cabf89b8c4766b9f3ee56ad1d989bde4a90307c8fb6e500851baeea63dd5687d4facfbf8ed8f84aff39577fed2c5de2fb2ccd2b4b86ac2d06b152a457d8f42e1ae1f3126a02957bc9640baef30cf681cad55887932995ca43ccdf5739228755168a013104e46443ce6199dcb335ca672c48c480d6e48a3efc3d7614d6f44f5ec964a4e21c8dbd4a0802a9371ab963ad1ac52e03c732df8385fb726e42d9849f04a39a6fdb8309e1f2813c46563da14a7592b21075435c935d9f4fb59831e505c5bfc97c1d3d83f68af918cd907b34cc1a78411dfa78272f75e912d5e6afa024bdf162e806a9bfa2feeabe8636c170eb174491387ee87337133951c59fdc8debd1b917560ea7080262b9f2b1477169e16b4718d99adf04f30916bda7be92b07dba5a5e5dc68b87730f2dd5b85a7f608fdfd7195a285980f5faab47f8ab8110e2c85cc68bef9f3f8250f38b72c6f684d656ccc27e538b918d9145d170dfaddf881e0a5dadf39ed8028c1c7ac1b67301b9d403568c705bdbe4eed669822bedf0de34f2210dc73b39307d9a0890c4a85a1e24df68cd61e3ba3bfe752186996e7e69af688b9f5098f1d0e6c6fe6d08db1d55b8c32f908ff2d9ea0adc6807c02f4024e2021b49e6cf75afccdd6a508564dfabe199daf15f8a9114bde901ca8683d21b541d02b31e6d28ef7c7e1a36373289bbe34e0109d5631c30951d806d5e926c7ecb57d65f36f234089a2da3b20747f93cd4532041786799d8192059d00bd7e69c1d1356f289523a74e5d4faa16838f0836a1e25f90134de892e3b859449a3119612f83cd83377c555c23da0865bae4ff910a70ab73c9d193575dcaf67ac995ba6297228cbafbc9ba4469953543ae7a82e9beb85827b2946d72f16f8f06830c855f0308cd98273d5a838fc5ea9ac351b65fc6dc2389b936c7bd21e4186d43436feeba4b6e94a61c8ce85de6eb8d27e82a13bb02eebee48b65259cf120bbc46f663ca86e5e8443dc21d979bfa64d5baf5a7abbe589ba7ec4fcc81270a9bf657b15aab516a184d3493db66f43c54b97995781ea4dae53fd51bd738c8d9e1eb319fb0dac5de2a9968e826628dbcf4885aaa2765f3566e348e34b7eb78da4220ee0cda3e636923f06c7692f06d64bea795132bee41851eda563f19eca12b323b7f331716f41129f0caf30af3802c2d67720577bda64e8a739f8e4dc3d1636166265e0e590326c0067de391aa185238c4d017044b40fa0abf8f14d5233bd1a156fc60143f5ead1b1c772f973e6820488a9fa4980daf6963178225aa23354a9ec96c5f9ded99ee78961c93fb890849ecf66676ef989965ffe8860aef8cb88dcec5b6e28f518a03b746c5d505ed74ccd45fbec6953f27fa1faedd63ec5de33346746d40747ece7d9c033fd5d4a18d72cf4ad48c1a1a86e386dc7f5b8904792e41fef950bab4431b7d354960187816d3cbddeb1b692e680a732f95a7a77c5ed98f7216768f5d8c8a315819e11aec38ee278bd811693380100081ff5c0d3c1d9b445953f1fedf913f9385d8d76544fe54c76484953d1609ed3af6cf91c6c165154546948a5630fc57ee6e21258bc0dae1b68e6ee5bdf740997d99cccf28b287e5a06d91860960bc8f1bc88624ddea1e015fe0263601d2e5cce39ef056e2a3faf4cff655ed8b418645340b0b971fce848986e1d3e01757bfcaea76ea2fbf25d8593a8ebf20e0684f8f12a8a95d7b27a724a8f6aee14be3153d8e839d0e0e105ec7ab7e04c3d06ed35e0f27cc033fac87475cbe85a6828e352274bc9f04cfe7708e946e2bed106212b6b082d619362209bbd957392d9a81f0c8f9cebb0316f5122e3ab78fb5bcbecdeb39009a5fa15875b4ce884072dbb51cdd334f70304bb1f073392e6106f4190d00501be1be1907f67d147f242fdc2d1184335f6f04335dd72cfc2324c489ec9d0024ade915e8361eafff3801e969882d8922ca2041e8e13965044c2f44018d8b7dd553e0d19b225ff54e750b4f5887509a08f11eb2319bae392f3e2f135476ab0dff426d59ea66936cfa6906e94cc560944b0fb6bfdd4c6d375142a20b3a6e14e39e12284721f774876567cc15e25ec7df3c4d6dd10d50d74cce215cbcedfaa06fcdd51d74b5862488b5fbcb59bbc4f0dc45cf77809bf8ed490fcd061fa7dd7019f4be4ed2b800a7884e2084fd6445cd608570409a014ed5f0f6bc9a9e46f466ff75db2e1741356513b9790dfc181f5441f01fe7f272765996b81ae96deaf9aacdfcfc2636091ca94b72b89041c312fdf146e7be07099e6752b2e2152e681b26a2dbba13abd7ea24a668b7ca39df824630727bcc7134b792c02c6917e5e4390a013a92c69473c56a31270b8dae08222fc018d64b28d92c8f5022e23a44050348d9f88f839f32fc736ef1523ef65916bf3880c02a93c081b92670cf9e3e70bb1999839b83bf69a51cb951c35772f13f7de00a688b6d4be48e8c1283b6ef9db57652ff6d72bb4adda440dc0fe65d3802f799e40c46788df030f14e35cad12cf49fef897df186f81e2f9028100decc4883ee0b09b65fc3c36e579ed887644376498777ba8156ddcf846a7433a80b6f10168d34b8ba61d209b9822e4b929636371a762db38e60a86d555a21c530a7c84b20d55f0a7fcfce15d556e151da72ba772d8fe7bece119a0b12cf3ad83082ffe16cb34558d0eab7950d1a7040a88f4fa9379e46d0a770ac45e7f29e557ec536e80c36c9371b7ea8cdcdfb1a1c1b633746e9e7abd328c6e3662664b8b0abbafe3bb196ee78a84c37887fc678e67f39482759e8bac81f833d695debdafe79046d45c777d9fca39e4e9f6c48e7fad516049bd94e9d9d309afc87045bd577d17aa16348a1fc9df4dd52eea7a549b62b8304f63df220975ff74ac44e26574c81298465684956f7469fbad378561f7b263fafd0fa2467c478f065dcb5b4c618ad8e8aed599697d60ec6929a1ed7898856361ad9c44b9117e614a91183ca66d79d1cd12fd820b931d6a85ba3ce2a895111b6031e7f218985792d7de617702320dfb5ff069fd7c641f2876af43350b4175c23d274118320ae63310ec16df91b43d687e16de4a0e70d4a26ab453dd1578d4e4d47ab6ec03a5d0c70bdb72abff9daabefca701af2a20fb06aaf291747b7d45e129de9be3d4092cc9513707fad90046b521e697f634aaa7b6760fabb89bfe9d6d512d733a57def72464f0bf498a75cc9d755cdaea733ccfcac0345e0a8426040ea7f8386edd9c8db9192b87fedd8c0ad5e047c7de0e4d6d8ca88d1cf27fe001a153af9bc49e8650ddc8f3fee11edb2d551a5331251a1c60fad0e0499939acbad6232472c20bea3ad8411bbe9dbb1d26256602489bb3bae9478232d64d6aa5ceafae6604b4322f796799c81c44803d69e3a368211a2f295b5a9c983b011ba16705cc2a5f28345c1f3ac389e4c85e2f4342adff8606535ecf4d59aa66ca7482e7035b38f772c7032a77fcec2683c7f5388504bee8c2a44904efdf35b3632129b1a9589d5729cfcf673506ed14b09144ec08d3c3e239c5225043a625f2aa3b9b8f4a469c72a8fd199d0230baf0ef73895bb837393356dd9769ffa3bf6021d04c510ee090728e89442f5e32aa1ac50c5b5095e537578b1aad390e55a8946deda647712345953ef2c4e93dd958c9197b904c3712da464e3b5f360e8c53a3db44307dc2a570b160d412fb897e4334b986834c46b4c8f1982b5bd5d314cd36d65af99ea53a5c835eceec1b9e5469d7d3583f430112e32e64b15c7ee22603d572472ec892eae3c2e874a5efcd80bafd7cc49d4bb89fd9ca36290605f7a7fc59e506f0985339515270576a10d90560ef2d1f9527522ed6429152431a7f3ea588085ad7438abcc78aaf14b7e67c7e26f840a938cdc8698b81802c89551f3419a1da36c38729023ec81e7f665fe3a795f977862d6fa8a745a60ee2846e2b289b1efdc8d4ddf7c63cdc7ed113d02ebc7e63764696a49305d776cec60b002f929d1a3702bb7d127ddefb51f3bdddf29c0b3d44fdb612bfd7789e53635eb56a148a55f3baaf3c6822c9125ecdde05b6cd985fceebd3407567fc44b99110134e9e3091bd62c8b53c671c2231ae687e793ee42364b80c0d9401e5da1baa2825025f08bcca407c9ca8248e7798be5b7d2ae65a893a37368f0c5545301abf473ce087ac676e44829415232f162786e59c2f2d8f4ee9c2f41464217a0d5deaec8bf7de3e28a365686cc430929fb57f3cfddf272289eb24994836351c8e0ba925ec89219ac58995862248884f69ddbda9f908a1a90a220e8282adbcc36f52483d398e367e9ae03e2fae0a871e307e9f72c269f45c47511f04bb0de0765fe4613dcc303120198f563f21c4b3ff063c9494f139b99282a1811a912cb2dd117568514f4d23c82f21fc6f58071531b6fcf0843c9f3c59bc1e0f6260f16e959b3e445fc1f9bf663343aa0b1bb5d7e6ba6cd466b937ccb33a380b216fdc093d107dff66d4f9cd4c0948f7e83c8745027e781b69ca93d04690436b5dd37e0c15e8f3827bf2486a6e84a5e5cc0f880b4125d6653ea6b8b77cb1f7ae43ccfcc44c0d6462661d961adc4d75c4963397d09e977c2ae1a09daf6d00f04860f390c456bb1bb9488dc4af5b3bf59fd79eea1be3ea24dc15ccaf3014372f976dd708aede8b6316cb6a69f84aaa0942b78b868b9575cf1d5d43505898be976bb84845543a260f7aae4150433650b6c248cfc75ad22d3f07487b5313bc5171245dddbe287007f360d0d0f8b1ccf5a6a8b003df38b9d27b7960388218b2bfe854dff9faf92cc268e1f3ac125b1cbca799bed74f6f709b4f83176619b3e9438efdddf8190243e7ccd7e1c3073d40df2c9bdcc86f58f6cbc9d56be2485d992ed654e6e24c458c800023b22d7000ea64cae27586ec253b9dbd483a77b42a1289971fa78559404aa9e8f04fe29c8a71c8bc36374044f73c5b426f6aa6f60226f88f9906a018e75c58ee1a8bd90d60548160deca2a4c402079333c69a21aac2a5edeeddc46f8f2eae1809248d4fbd64e34b822f298ab7f7ea0b0b6a3c822a563a5873f559c7b81550f8edda38dcf19797aea5e1e215c45656e9abef33781d0dcaaf2413772b50291ed0da3135ba9f9116dc1a0eb693089bfa51ae130a9a1eeff786d619b75d1773d9b7647e352dc90e18f29d91e624951231c1a3d57845de86ee0a67bcb108c011871479993e86cb55d47b69c09dba1a83d8bca77f64887e9ec0432285246b8be9fd8818df48e973bfac21e7475b681e556be1dc1dac4634b60a30a917a66bbfa0706280c0a5849084f27babc781b0a40a94849e821402a4f37ad09dbc2a60dacd193c7cc0dbba6f3fdce0a19d76fafb8830e4b802eba89a8b9546f1e0351bd42a6afe94220a1847b82ac2e71cf25b94e737061142b8f1fd810cd61ef4a76edc64d21a19a7a99ee4555326d8379c8c286ecd48d6c0f62025611d06676b7cf5147daf503c5339ea2730daab20415133a412fa219e259f33b8c0e73eb18c4bdb5976202a894ea2294c2698e0a51ec49e6e05e770ec4eea045a143f3c1b1d724745fe6c22eeae63e69806b4f27acac7d5bc10899bbcbcfa792129be99a59103c01783553b6f083a4fd4cede2e01156dc87fd921234a19de4061fdfc48fbf8f41629bf460646af5bfddac5fa7af9624b529864d03d06f15bc7a019d809d11ca6daf6219ffe30cbac7ce6b95693158155f54881febab8afc083afb444e2375996d98947734deed4cc144cfc9d1aafde8c3f0230b9022212c69882e514d650f1821ddc339f888ffe77cec984a177ec8c5eb397201435903af0717497d7e0c9e825bd33d5f10159d695322d96f9db934db873edcc0dfb876230e90fe58d5a49fa5e6e64899ef3f27af017b91cb078829a92463c1b7e06a1ad33b1053bfaa1d0c971a11b32141c2b0f6543d27bb66beb9cc5ee06d2545dddb32bda8b5fcd94b9dbef067b0644adfba197ce2a5c4585074742f3f61f3d444fbbc42dceaad8166a76e978e0998abdd01b3b999d16960d944de27e1e400831820578225c7a1b88b818f313f9a9951845981e3c5095b3917e4803d7af2da4b937db6c26fb94786387e1f9cc81faf9ca09999937cfb33ab6cd8c29a916a1af4330774cc9b257515d47389c98a5701d9849a393009242c335e0661c2019be2763db5c2a0fe8e8b6725d513817a6dec2684414ef76a2365e117d1e6357b153aca38d9f9a1e09249c5d759ea16a4ba7fda799dfe0ad2dec0f1e5cad9b902d637dc6e82656effb2d0c9fc3684ffa3d3c62a4113ce14287369fbbbf57a446db93e516ef20e8a09f0a92b87e768f72be7b5c23d9a277587f7740daf933f9ee843c1988c216f182534d356d08495d6806cd366d208641dbc0f4fb27a8763bd73b7476360533d536b8d1f8213af040dfc21f96be8709d22cb4ed29efb4437f0627ab26143bbcb1f67387429f0051b348d5bc62c6e8ce1cf6b693bc5b4510bfcdbcdf27ad530a4209a7aacbdec30fa1634a19d04d439957e8538609f4b55db705bd4b3527af456e5f94c2eeaef77fc11879d47988f081bc4b88bd4c60aba1a9431e8ad10d883ad666cd67907c5ebdaaf2f5c955d98d50e94d8cbe65c60dd446f02429ed55a7eb3d150b63d319d1e40f96bd89b64ee77a8ce6b6d9e575ed012c143ef1c30b09947c0f61ebafd8d6cc9018cdb625e0f7d17532b3326843ba878cac218cb304da6266222c07c030bd4b8db772b21be83f5e91586404cf2d15ecc321e999372e8a3a2c58c81bf31755ed9412609609b5151d0eb21fc01881d43b8884ae3f788fbe57763620df47e8b1858f527ff9fac884c50b151c205afc2f9da370e39a3cb4748724dc42a4698f09a93031b00594bb8eb3838a067206a870d37258631be634e73d4e347e81e0cac2224e638d56ff37688e9eb4e8ba0a2d50fd486a18fbcd4d830b3c17396f2e0ac399eb5c8dc7a19dcedbd6dceb9fd293a4933f5a3689ff76fd0b6a44592e3a841efd175a818708406853183445fcdbee8f97927a39ae584e29bf470aedf03ea9da088d8ca8c969096918b8f0e8a735f362a73450e93a4d6c65bd21511943f22595103b2b3edd4e2307e267b387d39581e0bcb3c22658381f0eb2505c9103ac5f293bbc0fd9eb71cff38a45a0613b4c5bee62511743092c0fcdf0222a10da85147022958d601c8122ea0a1606eefa3b7d7a0f4b06bd73775c937e8885a73f0021d468df480130fe070febaa49b82b9bb51c72873c205b0a9fb23405728061eb39bb108bccf5bddf27997f3126bdbe65ab5322a040a87d31978da63a435e06b38ce677977ae2b32d88344d266f24929ffb136b03225ed2443ec7a95321dbcf6e82615e79b9a2b5c1cca20c56df5d1f4ca986260bfcc865be24503a2fa710f5df6f7377d93253aad1010469eec706dab26dfd1540c0ba6e69137541d9934f55702faf85593759a5ba71a993b6c111fca2ba10cec4bc0362372b8456ad061e896a4c99397f1c272eadf30a6abe1bad4b5a01c7884981fa53d6185cb00c7624e6899664fa61ddb9ab36fa18d619e031a52eb325705313014fa4d9c29a4659ad1f8f7b4066d12a2ba6c6b3d004a35b59acb3be95a57f04fe4dc9dc0387b3ddd8b331efd40fe588bb8c1b7d94bd30950754034ecc22ef8ac896d74f9ba3caaf3008df76ada0f7821785ef0cf773a0e865d307d070ec971c9b28de611c0e17819e942e38e3c13fb82e801467b71afcebe8ede09ae3a8039ffbe1eca171a90377fcbdac5dc26ec11de62748dbf482247928e0f4b77975544f9846fdfe0e1ae77ca68e9c02c078828fb587b5a807ccb2951bfcc319b23d69036692c87810b57b794f56ca33ae2d7bbb453248b2657c12c7ec217af797ffa7e8bc4cb14d60a925be724446427ccee1f75410119205b2cad4eabb750146de47c9f9ab012ff871821c6028cdff6f046e1c114305f5ebfec762e018ab690e09b106ea07d7add2383ada59eee9e102d6fe9adb24745d5fbc2c73c9201dfb8a02d69c79252f9994c1f77ec852cacc135a395623184e8ff654db5c915bdb47b77cdcbcedcedd41e22da0d770e6b4cb851107c9e66cc6d58dd6cf5dd9e5fda6bf2dd637a8eeceb9a6af3eb1871110a8ba1c8b233c66aa0e287e2a8b3de146d3db3ff3618a3a29801976a5914b43ea231f8a609879093e2a29e383038376b594b508a40c69745f38ad75799a26522428643a5ce135112be204a4843909d6de915c51002f951630d3040a38c7026c2ffca846762e4acb814eb8eee7b924c2766bb72d328f855df4532fdcb311d04f6a02259fd181d816889134ac2444747fb0185b041425e4df0c19397b1edc0a3a59216121ca17351d33bad3ddda46eab79c45cececdb9cddd76c9b499155603c9069115e5372af06495a532d0ab2fbd39cdb4e5b8fd574ce4e9d5463a94679612965e580fe9030fd2f5ea10aea8a944b98890d3a081e7f80dfa40dbf34747d9d5434441cf44c66630001b931e29a138fa3e1719d6f8ea8b3a81adb45b03851dc09ab4888367e58e8dc18c0b5e59107a06aa9f1d2a318af9d42a813849c63cca52c2fecbb26291fba22955fbd6bea32670e002e51f208a850c07cd24d2df13b28206290c5fb6169d48ac443ef24100ce7dede6938beac7971074f75739915e012e2f379d380bdf79eb6e79cee413a3e3e39230863464a5f3ef8052186fcc96e40b69b4ecc5b9b1fdc41d4a2e75cd4297a33941506edf769e51fb23cacfc148f31ade99c775e1c4ae7b3150c2c58e15d390042bee1a28bfc2aef81f185a69d5e578f035336a4a57743ea8a97dfc31b221e34b0d601588d4d60afbeb12131b3ed2df766484b7e67b779d6f785b49cb7f2105777530e94d1eaa9afadad009cd8c126a479b1b3707daf47a9641bb87591fc526b6dce2b9823329664665d2b590f51635008ac8fc1e2191ec56c212f5f47a36054f0066cac30d803744bfc5575908a3f93d3b81a5da543ef11d166821c30fda347a05dce7ab86458e7d90915f05f4eac9af1393410778e4d8cba3a3b7b6555f7b0b359d099e0b106feeec721362af059c51af8775bfbf0d9291bf20fdd1eaaf73411258ea86b70655a7abdaeef27b9b267eea1e660f673026d84680047692e27bb870d739e7ea4d582cf38cc945867a545dc441eaecfb410429c798287e2c7dfa9cf057a30912539f16ec4dc7940a93f8ba6d522e5b16488ff1185be457d9115be7b23fe6d201db92a2cb719467ba4184e5facb685eecbd5a396f1db0b7c59e928a3211bf7bc8ddc990ba62706e0718be15b06435933404caae4a85d9ec1240bddd9dc9d6e18c9ee2410eeba4ca89cc187d78250438db2741155968e324da6ec35ffd78409c8f8b5ba752c4c1308a68d49e6a48f782a22ac6cd82cfe5539ccc36286b9105e8c95794f83c5dc4ce88515ffe755715e4c26121b6cdf0c99dc335d3f1fca64d410f15804345fcb5c021f4dd3e2614f95df68c7fd4ca9884ebbaebe84117ab75a3faef1727466b8e36ed240cc0bf724efbe257c473a8759f2d1c3997b2fdb123f7745565796887a94d6ef2f224b2dd754bcaf4e3f14f93d09602f8e9a0022a55030815412ea392303d83a776fb97a0ddc28ebf9100484978bc35e3cbaa72aa1aad5020cbe223013a0e16c4b03ea3a9a8fbbd453042333472d25f327c913f0aecaedbcd4ce46e81e51b3b143e1552e73ac64f61bb648129a14ae466a293d18ecd4f775757a7420c35af72bb43762f93955d1f3192c41b245d2bfe134228d677c27c04aaa5fae5c698be66dd8564ca454fe21028cde2ca974ac2f03240f1046aa9f502afb273a61bcdab700ce72bc1a96149c6be510360ee38ed61d6137be4697320b59e21dd8bd0cefafe15ebadfad76a0ed0cdd1318010b32df579576fa967cbbefef42f13f3cc53a01019c8cb18fdce7efd7cb4a2e21614b1c0cac21618f7b2188572f24dc74efa351c447d78a5a7450b4525b0ee214a1d8584965d12429fe3678d0ffd9b23bc8e7a68310e8258999040d1584c657032ad80452b8fc8183a7f438efb802c82b642caf0a9b3a04fcce1cb150dcd52c1b6b00d91e068d455fd4f1181bc21c0a256472d71a5d0d8b78c74f92423630f10d60480cd61bd6fda3ab3c3610ec0608cab9d865e847c73a25fe6af8c38eb6c88e1d537e5a059c30d9bef3c75dc79c43047ce4d99c42781c0edf157dbb4bb249d86d10cabbaf10dcaf3a43b8e64a17f27bcb3e29d374fedfa57fa110a8ca093f277d248cc25bf39b78a7a74162ca6b6021c79a0b1e619a2c3ce7e6c61c3f086e3d96e84868e03b07aa3998fcde3c23ffa790b56c81cffb548ce775493de1d2e0dfee16465cbdfb3d5eb2fa8c38d3634e0561a247f48711f732859672446ce57f5684735c80fd5e2ad4cf02e9a4de2680f6acd4a2e6dc250f2df0dec2feec2ff6ef07043e6ce9f6aaec4d5f052b07d5ab79599a20b50512ad620c60194ee0aff47bdba8edea89b8b7ad76d68c27d2c2db5200f89b364992c9188aaa54a9a19eebd01d292d78fa5896c142b42bc97847128644199634f804b17c8e2e4998298f3846c70377c98bf15df709ace1930e68a1e336c7cce9371e181eecb7c73a1c159a3ad697b144b6155dc1c30fbfdef750d575ca962e869c5a3673eb0845bf27cf728e8b752984dcc470b3d77e6c56b017ff1259c185b1933a3151a3d511eeb2ee0627b7ea88d6dde1fd0a7e6ede78e17e62d037d99e029f90ba75e1a1f8a0db96686e141c73be781a0a23b02da01bc9b666895bcc64855e6c0300a3438542c5ac38d0b63d21727d68e4ffa84634e4ef53af5e0de7673b6b6c0cf61c0c305737f3ba3e86bce05dd096e8c6f55f22d02ff66f31afc889980181ebbe54d924f48b8bfdaecb6a999e3c742c4016ff6cae0a5a6229907c14067c69d6a548926443ee35fd98cd019386169e505dadce53a250ce4332d12857619d76a05ba8cf8d00e9eac0797c8a891eae0c42af414a79a41648a47a5905ff7aab5be1731db3afff44a860532f7fc09e91cb74eb8df1bcfffc8e1ef6da8cc79459182ae8232f28a4378bcc2b70b82cf79f87036c61655dd2c53bc6dbe619c9ea824584937241b569e191f28ad876fd4bebdc2ab0101040923b83b5251262a127b54ef7b6f3e18e5c1c9e92fdfd1bc56f6b8ecad9753b8e8667072a132a81edec8a62f6744da8959e9a93a9956e6442708011f22c81b6314a18298da87886114dd6236956fa6960e554abdd68bd34530b45170195596c1d4db893192c19b615549b6578c7f15239fa4856bf0e9f4bea33b1fd8f220d8fb85374fd8caa5cf0757dda7b6799e03ae93c88490324166bf98e8c522784d13735f3b1557a703ef11b392beb897ff138861c968d13cdafca21f930d2c891d49e1519d6db5d91e859616b2681d49025b8589f16ab762cd0e4a4001d8c6fc49c4ca5865bd8896648b6e2eda01fa0cb3c8e50dfcc4e95eb0ef17f675617f8bbf9e6b54b39f25f08b3f0200cb6c4f38d2ed7718ae9fe57b7a39dd4a49c0055b8847b8152995a10d899e56a08a299121c32971761a9bbefc1e2d9c1616bdc8e21b1692ed5de4845f84e094d966c121a205765e8bb43a5dd3ec9c397ffcca6d2016d4e13e5fc80b6d0d951d15e63683324aea0dfff2801f7e8990ae20efd5abc84519383e41cde9d89dbd62d7c64f93a1a01f2db2d9138b47c89581cd6daec1e7f63839f0b951b6b9583d91c03f955c7d41b1cba565aaa923a7b9504d22b0ec6e563075de52e56e2259426fd753f08298ca45c211f376ab268cd146730ae691153b06bc0d2bdff05b17604064ca65d535d84dfcc432d4722cf3500f152fb3dd485b3d10685053fca74601f4e7576bd9dc7df064c0e64b37d3cae910d4f3a8297dee52e5686f0f594ee862521d02d56f42f9f89e9e24267990071ee1272a2fe37e55dfb60b116e8fa60640524b1a92b5e5c87aaa7b6dfd9fc7105b50bbacd02ddc2f0f14db693bbff530c00146221d0b5fbe1090692bde8cf675c903a59dba36fc5e2831e972dce5b129001819ff051111db6d39314db48b5c0fc610d3662ac0de027e2c02ccb18f02b73f1bf1832289db4904c27ee109bc3dc3fd5956b33a86e2834bef4a23a9b9df12fed75f229289d19ddfef165c03d70219e6dc5c7ecb5d4585c242cf8470a2bfdcb9e894680cddd89cd0a8fd4d135c8780b629b4c5b08ee4dc6119c8123bac0a97c21fca14b5f1fa3d35a972703c9c4ce63d72ab2ad41ff8be9a7c26418ffc7945b262783ebbbebeba8be3d6086a3e294e74be0e37612cab69f1fc31f937ea8212b4b22e0b2d5d64be72ef316f0a26340c845b57d80c6e61ac5dd1900782af3f72ad59da2622a618d31bb19f175a0cccac49611536da9b224694b55abc9e00782fc41552474bf92e2ebe45a2f7dd44130d6c6f1ec2b6d88e78e53b2979fe92770976058b8336dec5e84684c2279ad5df2eb778a0239fcb2997da8b5906ccd34364ee4cd23ab827c794bb7acb01934ff96b8d40805b2616e13a1321d36953d1089e2a37e1c5c0cbb8fdca3a6d2c95656258e5c409637b15553fa4acf7d5609afe5a9f66cd0ca47516116033a157eb625ac4a9e0e0ca018d0fd1fa3bf2cfc58760ac2e1f761d80d1793a3431d1cd3cecabd54b4fdf279856ad6cefc1b5e67a9677955078e62ed3d602c133e2a1b7c931eeba79336875e888e480a137503e541f5fbef89c05df4732b1881bfae5e01dda951f17f243c1460b2e2cc560260541e161be3559a4d2493e2a9ce90c7c0ce3efa0cbc36433a8156f1d54861918b9d8755a7ba827c249bef24126bfc423592201dbcada371da6dd9f677b83d2cf077d42732c1be6446c82082ebab146640ea346807d32fcb2a17f949c4beec03cf800cc39594f66e0ca7c623b0b53c567d64a7bf16fcfd796f913652d857c3b6bba167176acaaa9743c9cb2342f4b5d619cc9b7b1729a62c9dfacbe17659879c1cc7e34890a4a540aa31eeb36423348054c8d8e7b90642dae17cd8ac84836b5caee66a38aad502be77fe984a3fe7b99606cbb719b37adc4718211ad88d204db3005643409f55bb3dd3e358c0def43f28184fb4813d40965255711fb53e36d5faf670c4441b4627b0597675a8b3cae82c0667342f9494115a5feb1ad5e9455fb44890899f0de727f49b45793610f9c2f7649b64367bf3f6463043c2d6059dc71401509d38279beb6d9dc6b2b1affa5b6556194109b5e3a4917775e3b6ab3583500026575662fc7d5b580ef8ce2b9da5db163126de8cd35c5d17aa99f61b27a3317a48e549770096ae395c374884f9ef5c7124826f4d057f34a6e64b9d35a6a55376e4bc23662d54ef9f749eb09ffcf9a54a458279ca8ba732ef90dff70196363b4fa46a08f3dde2af60cb62d3c47f5a8d1664d55bd656be7170c1c8f927a8416236867d9324962a65447e74e21ef1c3a05f8edd2ecc4f4c5fdd65e24f770df83aae0286f3c5670c0d891fa6593f8ce44a421deb6c0986a7379b33388863b6ab1e0e83630fe466d4e65e5013c29922e5a2f0135b096e6bc844466a2c2d8023a21703285a12552ed6a6682bd0700674c86430ceb270df20daa62b66a35509c640770be0aa312e7465fa3f7f2bf340172d78dcfe1276c6d2d75cce021ff75cf03434facda75b4cae9ce5f2d80d1a6af233d95ffe9ba39025c9fb66cdf3397a56791e79ff7ec5cdc6a3807f5e3f7d85438dad3e699dbc2fb26f035c07022b8b1e5b11827335fa94e068de5c799edefc38eecd8c0eab8196927707d0789c695881e06de6708c22c92bfd72f150910c191a7112732ef1ef40fe7cf4141387dbd0fa3252c72ccbba56ca07241b153cc28dffa13eb2086246aaf678902e633704830aef341ec1a6d06bc4004aab18468bec1b3a801abb9614d50367f65ad4c0572a847bc53673c230fa0c264de5bb37e02e94cb1110707d78c500363586c216c51d70ca342f4a82a03b965c350227bb8730e8dfb80fdd2e7904f8556ad55c8ebedb7b25547cf5295e2a766f78aed449c831eb4a852311851e1f1075a81d58ca3a86fae749650382a6041b5f8e8aec101d554cb46d6e934d7e28883dbb69717a83647548f686677decce8fb257ab6d16f025af9923a6d1307932c4266177c0982a5fcc93844e5199c4ced0fc2d1929e9520d544bbf95dea84ad969abe43ada0e2a86e67b0f8152f1421030088b518c65cedd50a5b29880a160b78c761659c3ec048af25bb1b7d541b0e2c9598fc43b5929495987c721909b28f0ea598aafb29bbc423794d3dae452075809ff54567d0f7569174dcd36a66da1a7391fa1c9a3b68f27745f12ac3f85a1c93cd7e7df7210c63a14c9feef1afc89868186596bb972c3d8d1c3943fc27bd64f3acbf0ad249dbe1a308418fb5382f63b8b031b0b70c12b9862814a7b1b1b184b14a59d005cb27750ab438d1c6347eff55b0cad54a096c1cb32201c9bd35941e0dd79138d4d9c6482be1745a6f4d77cebc10a56a551fc597de97fbbb0a29a63737fd7c5fc1365843cc374d9048e1f2fd5f042ad905cde7bdbf88a6d1c178b5b319b28616afaa79370ec184f331cfbbd712e41035bddb765b75eefd7198cc0db89810093e89693f8f18ec0e445d21edbff8ea06482768c8f08f5fe9730708d68ae3541dffab424d2f6f9eaabe05769aec6c13c233363d7586852192ac2dbc8f516824ddd1810e4ea9edf3147bd47febe8ded2082d0595a1d943a417383778274fd1cb9ac30deb04e664df55729fec13c229dc598713ef69ef09ebf10f9b2dca3e3dc282d222a62eab4345edb87b710b7d7bb6fc25fa5f78d002ff66b014b87e50afd548943fe48eb5083f9f4cbfeca4e00a2c2f69a2581fcf078c3724b2094abf9715ff1db5edd8be5cb6d6b006c115b7631d738547bfdb40d9a1abfd95da052fb4df0f4a714209a857e0d6ac4b2494917026ae2747ac3be4a7fb0ea84ef8be0a135cac957477b4b22b147f0c700473a439ef2f015d155d7bcb5e0c57748392d3ce4c8ef11e82be1167839b650acaf7f61cfb5a2049ae8491ecb2b2bb2790f7064c07b0feceb7d379ccee133b732faa558fa24a245bf165a4e3ef1328898380a7480cea476566599540fbae6ec869b28168c1cb68e2cf169ceff469d2175d6aa0bdf71032f143e19c3fcb4e7efaf40470d76d36dcad1d11e44821062f9a0a7978c5ff6860ca5bc3ed159e66156b72db4b1ba8d8797759c0bfa5ab7795fc5d6f99f22cb4cf496591149125580cae71bfdfb0964e1c85757d25f72271bf749ee8baeca92aa46d0c1655cf3b9f7895b31a1e96db29be5a3454284c4f0dd394b2aeb697080af52aa15dc1ef42c67e6daebbffb0600b5a6b3edb29fb1b069efe0a21b42a7ae63dbdb002c080e0369c50a192eb8d871cf7c21b5bf8bde249ebbb40884f291a2249c33f53274a55e5320eb358727a61a0008abfc9247a589698fe8edc2f2066d72bf2212b82482345684a5cf8256deb980a2e3e522731526d5324dd54403c51bbd67178300bc57c7da94abbf6ed798bbdcd3b62c1dd684272ac2e8816fa7b76c4628a75e1e43dedbc685255d303ea28bbadbbabec2daaf2e732dcd408ca54bf5f78989505ba67a278ca1b0fd97a4988db22c53fa9e0e6a3009b63e275888d32f228962983f3577bbbac46d5f2327184cbdeca2bfd9a3de8b4c762a7f4621fc2075175d277d24cc6e23e25fd68468f7b0a2774fbddef0607825d9ecdb0e015187279995e6750c7888757f1a57660b94587cdc12a337efcc2c691d68911500d1c62d6654702b67682ca935c0b8e83a2f52cd5b1e24c2bd7762cbd66a879ab99202964c18c62517f24c763251c850235adfe9ed4cf3dd1db015966d66a35f0b79169b0b71cd45dfd9228eb749072d7572046abc2523caf6cea5fb9c7542a599f762c4d7a99d87e8ec6d4b9a902f00e72efc29a6ae932cd1d7b679f3b27df04be79c74da43e86f3e290014c5b5d625b23be0ebbe0e58a95ca9766d57df320ccb6a139eaf40063f517655b4b480ca3711e71806cb003e83e9bd27ac7e580b1b09e31defe93c740b75ed3994fbce00b4c8dd65aac815e179ef7b13ad745ffb5db8f3a3ad8a5ac79462b2c0c1bec234049bf7913962c7f37c8816469418aff387ce97f1a48cfb64f7b45b0d7638418b51d21324c87d5aa857f2fdb5379f62bf14084649fd5c4c87686cebb1e534c1d8bfbb059f70b091632a0ee0b80a112c481e6425e690599e58c96d57a3e4976962c528912250c42f2364e438e8b5c7daba98a45160565a922f2f00a20624d47f3455ed767f12384a42f01d73d703f33146b3d22fa5c425133676508258967626687b639110c3c06b857888983db5180f6e58b6d2f5a8f91f0593ef9cb1d49a6bf2dbe800eb2fc28698ee959274c18ee02c6e626f9dc30567ff9e504c293672a7d63d5d68378dd7b7680bddfa6f82006c5d83a7e151a4eeaf748a4af998a8c32ad6eda639c62e50d80316987b8d4dede4260d9d4070ab4d16d8f69b034240673df74c2e12311eafe0e70e25c0e0042a5365341f8387c92f1493fa633a18e2cd6c7d5060271b0c291bec4f86f5dc3e5e4948784c34e392935c3f77a5e4b262742a2d122fc3629b2b262ecce1da7dbc84eba11808380881ef85513ac95926f273baf4d08fd0554dd2c6ac5e006252086d45a04f799f55c8ac847e571d2a48b3f47154ebf9773b66718b7a01d2df0a433bf1eadf8a8d3bfca5f5650b4fd71febb445206eebcbc4f90f3eb25ae8cc6c54e70d5f616b2bbad8ac384bfcf41c864b85a874cb668536efe62697c7f815cef1bd85e3030ead1aec065be7dd05c9347acdb9f82e6ed05d35e61e8bf15efc792ddba40f35ac651488e9d19d545d24c91b05c4c7ad8e28a28e2f72c4039686a18cb5ff9db23feccf5505059e733ceb7a583a0b9c415145c6559b92edcbc380b9f394a9e51805507a24f8a8bb58c7d589068eeb1418ca162a5c319a186b2c0d681312bbd3e9035d5a0ed8e9073885b0a364b84732400dd29f8ab39db0bfb9c463629f281f5e80f099dcae6575a0e304c59480475f29b30d263e11cf525c7a67e61a00e9b00f855d35a6f5f610e2b25156d64466a6b85bee1872f46fb9b2201d9524ca6b7ab164e1c2021f4f9945a4d387d477d1e8f12363aca9349422158245004eeb5f34962e2804ce10617f34d2dd2d3c1c1733543372c13262b4dc531ad91cbb22cabfbc3be17365a19b998739c29f324f248911329568cc3f10e307865959f8826b2376a663417d1ef413f2384a5b35bc93c33bcf25a3f343e1b30e075230b4f3775f7ecf626c26c9c066e513bf6e60264c58d939da3519175dca5605685abbb19c918ed7b2f26355635e5a7382eb17e26e2896a7519ecb1b8866df89fb0176cb562304271d42b96bc37da2e436e3965996ad6dd2b07d70e1d78cb9c1579acea599fc35e9446070289945c45678b1f48a64203d764e0a81b0a567eb7f733c1d76c5f4758d9b7af29d872aec9d2494c7856172a5d56f5a5d02717452bb41ab6ccbedfb894665d0714e07442bf133d4a9f129350633159ab206f226040d9261300270b69d8bcd2850b420fe136f21018d86edc8a35bd67d201ffceb3733814b4dd0d9844a960b4721bbf657c495e300f5943d6c3c18cf84426230b67891790d29bc1f3259e8960ee544217994ca74f6ea7b2b0769bd9bdb811c807eb7acc3fa4da123c24dc36b4919a4d7a7efd4eb40b631b7cb279e65f21c4a7f62dbaea61d14308b1aa3af5f428f24ebe9d45f241530bf8d05d895ff17a220874a97e618f3a96ce67fd9f585a5857f91da1b7df773d4c417b3bf7e12acb283a841a04500bcc92c26212027a4586366ff7ee121047f89f0d7c1ecbb59ba448e6ee9dae10286629c622b6f96b63d94ffd22370a3076e748a1908e5b0ef10c11171b3b975e74d7ebcf11f5dda841175624e8d8c3fc6a619ebee552148aa234c0db7cad0df85ddb8dfcd66d74f46d8ef1b6204529583b973018037c16e874e4039e9d697a14747ad2e4c572b92568a66ab870aae2b0b44a3cda8423e952949608054036d623821da2323317a07faf2cd076cbe1be648fd57e5e709273164dd9081bcf32f6aa6e19e0ec1bfc75632f366176a3b7695716b19f39c0e133cd832f90efe90362953ff1e94f2a150eaa29a5838d57d9866bb062434974c12b2a04141ad81d7f0b033b7092ad96fba7185c889bb1396086fa6caa5f9f338d4150f3e461a7e114c36c1997f9e3139fd5fae467d6489341b26d577c3294d4ea3e9770f05c30a27c994d941918fea159b6aa1909feb51d8d3e97408f6bd37801b390f24ab4b02ee44ca2fd71cf00ac3d70fb6b8697ecb2a45783619fe4312303310d533b607b5a3a4784c3e2289e885270c4c1df93df1515c76d648e15d237dc70192c4cb846bfaf3651e180076aecff9e40fe03fbd8543d1eb35d0233f080a5ea0e38079ffb86405fc1af36da6335b595e4f51be860d636dc402d5b6337391370759b45feb9d8850caee4f725d21bf98065ec1c99599f4f852f038e2183ae41f529f7e5f6f7a049e02be5b05b269ae67ab096ac1db612ee7c77fe7c6dfb42aa123be8f46e5d0ef0af9f4818b120e613adf1e6236bb2ff347bc58e4f40d6c83611f647f1a5dd8c111aaa837d5bb35dfe17bfdccf790987f9dae319cf63d17597b6e43119618df87913287a2db42942891183db828250894f37c483aa19beb09923f7ef8a20d7d953f5558fd030e207250966159013b9be5fceb6a0470693aba3d4223ec9a6796188bf80ddc4dda18f40c999f9da107cadf0a228fff2e7e5f6c2a2cba1ee3042e3bbda464b172375e020907b13d67b0e2006b2efc5ebfc1ffb7ef36e06a05f807bd0b0a1438a70716696d8bb9c78dd5535b147f0280ceb397ba379ff4c6c2081c2f677a8fa16103a34722153b517b06c70597694474eee3591b4525d5d1ba30d83a096a56ac4137ebe3e2581ac300460b84eea58e5c9d775d3c4990aa8a2c1d339f2af5d403fa81ee2fb54bb3f10090cf722fcd40166fa91cf34428c58504b48ecdd359d48be415adfb8aa9fdf2654f2d0008e345fdba4843625f398930e5896a506e787b79bdfb5d0dd871c16408e402fbb1ca9cc4e533cdceb7966bf61569e6659858df5bdb8ff5995566db9430231e8344cc70a79de2748ab813fe584ed11478bfa323761c01fcd7008f91bda5d636a44a12c27425dd714dda0a0c4d22741d5d31282b0dacd3b3a69fb8f7c7d339b965232f9e371942879998d7c66e6db82f89a758d88ab45e9083bbf063466c7c6019f796e87ded436200115c02df7a39459ccac9dd980d4dfc471009f3980b45a1f2fc1fb37fc8a64867687e81dbcf45b4f5cfb71e95f71f7069e11c1d6ed72be430638626a93a4317a29aa652646f5f92371e7e9f0100a9d8b585025a11c03c90666becfa48ca8a90ffc9403c8025bde6e3d82106d23c924dc6bedbd5390a77e5a6335480653cfafaa07d3f39f2e8caac7d4ec6aab826d617a21e8b354b0b53a7a4342737fa02ab0fb77e970572aaa4a6d7873838d57c44084cd3386b3a8e37970bb4b1f81f3fc538fe2dc2bab9f89fff7aa264dc66c6001e34adce9a882bffbe9e49a1afe1530720143c3c7cfab8c0be4f33dc086439017dc71a7b0e06fb7e8be51c8da0bf1c418d80a807348ad34209f1a957c3190794b49820333b4f6af6b671b06c422379da948bcc285fdc1c153557902f863452d755da0a2dd535afa10308e71aa745044a163b0028ea17f35aabc18de1b0d45b3fda25b264f487412cc6356ed7734a7fa18a1119931ddc00e89a0a47918890c712dac8b21749e70337401de1c86991a9ff22689b7c9a0656ca7ace9183c88530ee9212e34960a247d6ca82c5757e80011a377ef8f8668c8fbf5c11f3a3c2dcab40be5baa41f8c1a313d164fc4984482ebb03989c9e0ab817b90f4c0dfe0f5f3fceb7c2970b65bcab699aa85e166366a140b9c6e10ebb5ea05e120b7547d103c52ef4d5bcf60481ee4ae5a5058ee0e2541cda33356798ded88a55895e537f932e4cc7a6dd15c5cd4a9b519b2ecbf8926953e909decef9f709cbcef0b99d4bc59ee87afe7cbeb50092339b55bfc8c6daceff6854deeec9d3b1e4da2a9fc310785716b5af280dafd7a65fa49331e5fcb40bcd28715773f3c8724b706a5d07d3e80ebc2e3e2f6205d0c16150f11167ed00b780e4ecb48eddb2a7aa21da1dced008d817ba5615df4d1849ec2d634ef522592b6d32e5a174f8eab861f017cc2423556c3699d1b6eb3246b6aaf18c471c89f488fec14976df5937dd02ef68e237eed14f7d2439fcb1584258b6c07cf7cc24542630ea965a8b69404ad4b3cecad8210bfa24c10e73a2511c5c224b9587da5cbf261488e3d9ba9d5ff8529b68c1fdc93ce9b62748e4efa2b86b73b6b05e7cd2d00b512d5cfbb147d905a9daca8741ef044793fabe390fd98a5d2058c607d0c995bda09e85453970d3753d6235c4630741906eac8ca03faccde416409d50552202b34fa2e03e1ec49b7f2490d49ac3f5f883cfb68cdbfd34ebed379355a76fdfba9abf1ec918b3900ee3a9b275eae89b797791207f268d300757d6b5d20ce7407922e688aa324dd030bfcb5a5999fcf90010655485df7455dd003c4650e9696b8841cea2e30cc4464f38bb7e0d8a4edf9d4c4e47f369ffb765c827e7abaf05a11fb9148af313f5ad34d3626c7923cf2a25bd23efae62bd3ef1d546da2d83af099b536a16ca6542f248cbd88b85d2969b5ebd1109984b0127b0d2be6ada02bf0bd5c915885554107fabd1eef1088f5c31cb8d1630b2486199d401a82796f47234221c6f86a7f1479b9a93a5c2e638011da72d87430b673a4ec3ee90eea6c967b0b19a666e4b63d6d5b91eb5638595054109ec8b1d982a2942045ef8c55bdd225454cffbf0a7132d8209ba077f09d10f4242c09d9981cd937ae572d387e5dd8c34ecf8c5018619c244a1123bd5fea96a27dd9b0eeb9bb01eda01880a5caa0671cf06cf6c1517578daf7fab23e058d9838be312804302fa36051e0dfa029eb201c463d22eb014e38bee00584645f5db6c5c47e96cc9104489560dd9f4ef68544f1b6a855d44d3473e84ce285e180afe5c2c944e9dde368c8be390c2bc336811d520ce85de6062052b165a9bdaed296c2d124ad3b3b65b46f39062ff0b37d013eecae9a6ab2f148d5b49350c5dbdc718dd19846da23dcf963c37debc0d457c275bb389da5244069edaaed8643d9464780d45cc34304e013a25d7faa1e4e5345cbf9f30ec75ba85833cc0abbd0518d171851b3fd77a38798e31de856e23097737239a13d148a4683713ec5f35f3d82c63aecb602c6f98c78a287bd2b7530006777299509516c9b6d37ab2f08e7b748dc716db45b4537c6c2694024fd77149d284feb921bdbdb33b108dd1da3fc28777dcf066f1433edbebe14563b27b6e29ff83f9050f472d11dcc1ee815c78237293a191f40a9a9b5b8aa7ceaab3f1ae16114efdcd605aec5ec87242c3d057aee747b0f4d14d19a9696c33059a7d258af38ece8591541395e9e633b2b877efa45324b437065470fd9d118f87495092ce18a0ea7177d6cc541b0fb96b153eeefc0a45c01cd29e88fe7366f131de02d23b3071898656c1bd6c1af0aa1e9955d0e24e1b5989c0feb06850e681a84d574206df6961ec4de7bdb1b7bcda809cb035321f43cd0847bd99cad78712d232524257407de5aeed648d0eadf6accbadb29201dd506348f6296308956de15bb208decb2f1f0d3eef0007012cf3a13c3da8c615bdc0f59a3a6db1d9ef94d8326f965bf363a8b8ee7d9a3c1abcf25b9359d743680a72d175acc2724973fd8e098f2d00d3583323770fe89a8069e6e3967c3b5da938580ef2f07cc739640284d8ce7290640a3c2a76cc08d86b433c378e673efebac64b25502a7545daa7e0aa5aa79783127f8c32ea88aa9eab2a4d5ac70f008933f1243971f8c7a236faa2618e81e49c3e224019b84cc69d1ff04544159bffd7de348a645c0902aea774ee5b37fba4a3bdeee7ee276c35e33fc3a5fa4a6c376839a11c61b9391e5c5e6469df5d3ba83d576919326430a12d94f0ab1bc13ffe80f7faeb075845f79edd70b6ecca56c784496bf2ddff0f8f303af04ee8d6573fc77fae5c7eaa070fa97d123e958ec423ccc3bc5be86d778b9b64c496976cb9db096b92e95d464ccd3de95840cb7ce20f2e6b7f14bb8421b513d8a7745e6578463d0b7a6bc8662f98afa101e96eaa89d3e7d968d0c901002b356f0c72202d14ae8ce097d025670e683779de5f38f5b2be3c19cdf2a605b41e2097e9d02e30e4441f21b06d3b4d08b963178c0f647b2b3c962c79b0df94968d0bd15af7d460947ab0391b53683c0efc7678789cb31f59d6da865da2771551e2d5338e40b2b0b1386246984f150084e9af6b39466b080f608291081313d5050192e6028d0a9b4674409cef8ad2867057a01433ad702272b3c129f190be8408809da9172c489d87a6c54065e22f613e75e96b8e36959bedb8441f918fc9b6260fe34ce9f8e2b98ffe4f6efb7018460c8feebb7f88636737a851b74f215963804f8a3681c4c1f22c5edf1485ed5c908dba5123ddd87cbd64b5dc293c142f67f09d7ce05367f4d1bc73a45488c823bc7a0f58180508b0990e9c072398fba0030592d4580f1456e51883e106f13329ee914da5e114c2793886bac44532f0e15a883384bfb9c5403f93af5d33937e146b2712191a6f208a9e19afd9a4901191f598283ccb1fe3fbf202d9339b7d6dab1d46fff9329285411368a94947eb11f63f525ee4469371f999e05d16301c7d5712607605ec3eadd3a1c6e143adf656740a05eec48df97046d1725439992a3444fd8ec86ce2ee2ae598b4e80e467e7984090041d4112a3bccba0a0df5b076f258b464fe42fd9ad0040b60c00df5ce2df354e8b47dd99c00227a50efda0473e573b04b9960fed1b757513af2e795f1de3be7a1429aff68bcb6ba9f046758990c979077f04cf91ee72b849c121270b5869422c8e9422e93390d2774c1b0229d772b96650b4fd5bfcdea057c6470c98a8ca74ab6e29a2bac039df2e5df7d0d6e281a28ed1b62cdab0f12f62e8f91542db5070720d9ad49bf5cac51365de2770a433d50e0f96bf1e95b6ebe40980bb91e6d21e439b104f3909220fc6bec28f42175973d3c42bea63747d1895693d914f1f7cbd37199a1262d4dd3b0ff6f17c987bfd2c0e9fb9c22ff64e0c623ba3478614ea4a6b76aaaf4c5b074af984cc372750bc3d00de43ff19d1869a76ede476742b50a9755992602e26c633ed9a6111c9d350c06eac38573fbd8d9a42468485c3657f3c15838dc0adb122d263bdeaf2b0c7996224d725b5b6fe01ef87e51f4413a6bb9a489d1855aac4d9a35fcd6c8b6dd632f849362aa31f882252337d330f9ffb1cba5f413515411d543ba1ae5fb06bdbf90b337e37cd1c1a4b666cbb289d71854588b029bd4ecf335ae0b626a221b38180adaf26de8ebfb0a2e4ad3649d25f06a15032150712d2bcad30287794127e2c834466dab38810081d1196475169f95bee21efb2862b48979d57c54109d1046bd6de97e0cc86bca0b306385e8aef5578248ce414493333c1e44d9e7ba42f2a84c4bdaff1aedd6bba5fe7bb584de4c2f1ac66c04a7b7f077a6157ffdb1899b9cdbe8d328e465c1b43c5df87d3941bef7327b35991cfb43794de2574dc6f60e622dadb2831eb57e79ec4b34181477d57bb7f4c815fb1b1bd285774ef7aaaa011c8f23f86bedf63769af5dd021743b144f6cceaa57ceae7a086f27d6ff70015ed1469b4d1f64cd6784ff622e6172b56e783c69c29c2bccf484f07c62dc4552c53ff083fa5d2a275dc321dcf699ab8fcdec802dddab2f6f34d1d325ed0fc7ce097eb1e86d9be4ccbdbc15809271e1398cd9ccaf2b8d6959782678f574d77c59af6e71ffb9be41d4fe9b630ab16323d3febe0896c0d23367104cf9db77e64dcb72027a7c1373d051ec6742cfc8c6719fe55ae6491471bedde2c5e38e7c33fe87c14a303e5608fee42799d04a8ce00c98fb62f75c83274b62e952d0698cd40a723f5cccef80e3e003a30059fd790ae2996c0ff101ce785ef8b2bb80beb5eb744643013b75337fb03e27fedd6b4ee6c8f15a75e6259933e79addf0576586a34d29563c934d35fc0c0dce0665098fa2828a58b18383eb8a9ec2a27947e0953b15b4b79ac99cf0417819887bbc22024fadccf0e19381b0be227249328ccbfd243f27da568b38f2aea2699acfb5a332411d551df25bcd3a548e2eb15ad4a8d82e6d78e44a6be76e596d341aff0db2ef884e02d1339468bcde8da1caf4a84acac233d731b3cafcbadfc3b074557ea7cc74e07d71ca0a52ce5736801b733447763179eacfc0279fcfc8afaae883afe9a0264d5354e53807ec071eb83cb7c0e2060fc27800fcbb51cc7447360908097c06384fd947ca54dcf7fe79d25d6086d3a79ffc65bc7694cd749d5a6a3fe296ecdd6ea7af0bb0aa8fb21c42f3be69a7190a549df12dcf8dd1ab66fea6469c7f6ac8813457d668468c46a99dd835196fe7e5551ee83002de53fcfe5a8ead9fc469aeec8e76cedc3707be7d1ac5ab3d313f7024340bdb0d166b16d05c8058dc46353bd59ab19154fc818cbc704d9fbd627de940494cf163c5574a3f2b1cffbe49355effc196b093d643021ad598a175c57e10eb1295702c29530ffe8604ac77ee7dc9d1c7082fc31f0bdab41bc1d866c173abed50c20458912a7fea71e64190616e746a69b8072cdb8eaf7e2da67d3545bb037b0a259182653ad77fc28bf0d2b4c61bc33bb5a5c11668823492b65ef7c7506619da56ada5f30efbd68495c1809f9fbbe579d9687ce2a135e710e55c524672a39f1a6e229b72ccef364b540fd89e1c1931b5d82684e87d1314a941edea5424914107a7716fe2825f35d0160beb30863bad9905a82af0f2464d66729a22a22388ac20674a84b4bd18678c3138c623b7ec6f387729b6d5096072d096822681a4e5336918168365f28ca021f4ede6326d3c118a12dbfbc084d378faf6d64d58fa8b0d4aba6d1f73ec53c6bdbbd6016d1afe2f1b2162caa42b79c4713d5bc80ce25d9e332ea0a957f8a52dd75374191c4a4906158a562451b00c1090e1eb9cc5b3c5d64a363071755ae08ce4e098e42989f80d1477c64aa25bafe5f1d5f4f79f31309fb5d454f71b92087cf2a2ec843a072ab57e2ab097969c63a71385f7c92e029054583a78f11004428538f86a8df7d2c2224e118a285521932757a40ab6df26d95416bcb91b47eb58c50f2ae25845a9e80a7ba6bc586f5989d1f36b57509fe7849be75569dbacd9381cedb879b05ccc86938092230ce71ff66193509bac56be0e6e551b91b13ca675ed400e25c2023dcb48a78d90c9c3d26e2f9d71a83c1cc67a1830956a7db960c4705eb5326759fdac210af047a5404de902728de3fe3113cbb98f74e38ec0c68192cc7ec0ba01ba5e94878681fbdc1044801a73c6fc2a228b2072331f891bc12864a23b42008b53ddba1038eafad968be1e2a975f19d23d48b78733f4147ca3db1cd11000da67476987084323ffee7a7bb1d8a7cf2fac54118101ac6c630b44e3a97dbc96cfe3e40409a55e41bb3e07058094bacd812f38fd25723f4780778327cfcb897324d38ff5bf84d84c34d710c5ee8ef321760aa9a40f146378746889b6d7bc195bfef60f4702eadac18b46c78eb7055629a713e5a49506d9a43887cc44d6039ae6db4f114b704e64119a0ed113b24ac25741bda41d3a545fa67780f8a475f17cfe5ad8861179401d205901866c2ccc04b0b1259735f6d35d0e21ade75359d947654f6296f3eebc25c61ed0bf96d39f3f4ea41f75969637cd9dcb4a31ed0d93972d2990110bac762751a757a6ef2b52e6e052cbb4eb27d9c9cae76d40b589f80c3dab2445b846be7602f07244be99fcf925239bc06673194540c21783123d846dd3f122151dd6fbcf8be15ec1a9f9e3317595dd553d8b61105e561a040cb370e6fdc878f1a2c6ec4b97caf8d13cc92143388326582867190db5f0b3add3c1fb0a1e532d2c71be177942aa615469df19886cad31f8e59025a58ea10c86394bafd870ff4d9ffa9128259d4ad00f03b5bede239b1886b5e0bdcf627fff71338dd1c67cd0135e6f4826452c2b9c41413de6b202c8f5a7dc49afce5fb9d96d5b025fa8a3f2fa614930b597673bcbf7424e31d0c4224ff724b75a80ea79f9b671d22ff299a2c6c1c103d7103c65ac38839947c5b5dbe1385bf7029b17997614d5d22ac9e463ab05581ddbda8be7489e6a346a583883a97bd0b93b66331f3f480f17a816618719994fbc70bca980b65bbfb09ecb42783c6dda9a8b8f3b9751b5481165c3c001e22f30590d00de6894992dc5f474dca6d71a514093876231ff72ce42ac230392af31430a198de71c3db6c685a87da496b32713864b6d8fb55f58947c929103380ee41af892bf74f8763d7c2c23714cc97c3a81ba2ceddc456106afaf6b2cebfa7a1806e21fafaba0ad5aa9711ca31a690905ffea50a218f11d9ada4dd9b6bbff35999fb2b402a33efe1f88745e5a6747a6d27740e3774615617cf3391497c6efd06c3f244f22ea89a03bb933ee1b202b95fad66b6e411c9286b67c48540f34afb34d87756e9400a3769cc1959a68486f96ed8e22dc4085cb1d501b5077de81631160da2d3e99dabdcd15880134bd74f197d613ab3799207cfa7b1aca499bfcc90746ddf1a4a1609c9949d986eeab4d50e3ef5e7985bdbe579dc6e702134749dee22efe67a914eed8b4ffe596b073127a65bf6ddb41c3e77d1e0b95da46c6e0d0be63e92cdff1d700f097c04c5090138be965c1b5582056bc03af5a157f288b4d022114d8cd43dd7ef973e345015d37fc600ede4fa8c479a1ac880f3c1eebec116b4134108401bb55680da80a750877219353ce3061aff25e3edfb30c3eacf4d3a65cc6afc8f29caa73ebd10670c861f8cd239f0bd518187c3926e87acb156d78b28088f99b66a01f21d30212d57096467243e0bb8609775823727440f2227299799afcdcfa0f5efef35b428869504c08751028528dbf4b7eed26c2fd3944f25c70f7ec4a16295d32678a7ef2d37bcc2e30928f309c9309c5040c5feaf650309b2107e09970119913bc30063f977df5ae1c3233374227d74332c57d15f0a64555eba8aafa92f70501e89d0e8a0cb8b7df4fb3b50032860f14b8aa73365d539d7b63dfdbfc4cc303cbaa912f769da49928d61fb92ea58cc0e3531e3a0d9ea276041fb84b23b061eded1784e314c1813400456c6ac62c552d5811c6f2524dfe6452d593958839c8909c1c0e0c5f7defb63a1e83f39c80a84c4016895b3a9193d0ea19c09893db80ac9acca76d3d6f7060a8de4207d41f6a4797d2c55c80cbd5747c2681f7bbd95475e77f002f219bc30804d2ba5966d4c4ff563efc800c0b94e0356f3f9a5ea8b815380bec5e2c88919831069c25c46b6a841a0f127421e101f96bfb892ba242ef27429d3f6aea67f58dccf764a67f36929e900f6a8b1d7cc67490bc039a6ba8773ed60a00a7984c017906d2479d09218248be02433acb29df5f785d1f9a62763b5cca93f2cdfeaf7a81d55b2cd17d77562f11bd359c41a3e499f243c22106ca217bb46af878d7ccb2df72ec77897fa66c37425d35ee54c40c55aebe84ecd0e31d0875899ca9c88c8c6129017714268b4df607cf27149790149b71994af86d398d62919ce243ec0c78e8734e5d41f923343799010813e8a718c79f915c0afde9bc605e0fb58fe8fa69ea6b66d2e7fdb45579ff7b8695968c44081065002867c6bac8fa8247b8984c9bf1874eea5fd2b0e06e39394868105d2be23375ca1ec35f2ad9193a625045142c1aaa9e3a05dbf83f7c2df636ff22e38ead8d3889fbc9cdb2c29d43d2ca6c739a977e0376ba7e46903f6c5bd1efcb1a541377f4b7915b1fbe28026e29fd1bee5c2d2a3e996573cf5d05c3ac0c73999266963779dbf812a7afa4964d90a7d6a0d5b748fb3d6d1a77b0509ee824e99a4756086bda080beb956a4389dfabe80f1b42a13b1b1940ed1e25583c81ab53e1de8d10b85d1be9f295fe04c1937fc332e0416dc84503d0f9e75287af1940d78f5e19acd619cc761257945e88c7c3a03ad10b3207e32b116f7703fbb0f0a1407cc817aae6fff2d7de3f40b707fb5fcddb007118a1d33f7d3990d50743e3337a5f381c2d1649b6fa7eb435ed8f4b97f83bb459dd5e825e90af93b9b22331a0199667f52e9882520ca0a5f1d1b4fcfcb73a927f530729b14b4ebb57360f6d04d370b88cf9eab172007a5957a8371a76004a43c6df8d6259b5851dd882d242f101152bd0ac6e4bc50fe4a066a9c17c64b1d603bafc9064355595cfb4b92dfd9423eddde4bb4bf5973279ea26816ebb960941eb69b6287aa9ba78b636b186f59a59a9fb316fa950c9aacce59ed126d4bf2d65e90930059a37f3e3d8fd756b57a5eacf382e6234434d79aea834afca9408a4b3bc861edd312f1750447ec4e4e1c9c1dd423c04f57ad5e67f889e212c0fc4dbd9627c4b2c8128bf17d7aa8f989025ebf6c24c197626edfd9719a1a5d9a16fa3fac5cd15421d5087a3811f7ebc566e1a27d66e393b1bfc0db80633acb85feeae76a872ec9f78c090a6d0fc6cd8556525321df24f87e4322890b2431a70e05e154511efd7a78748016bd24ee7583a2f86f4c53f1b737456a653d54dc8a2c301d5dbba4dee9adc07812ea949b1f1a7e3da53301ab05371bfa25d881303fa70664da84665e1e7d439bf8e5cde42d0df1765bf1085f67059a67be5715d0a00df7ac11737a66fc9b162eb05bc2a439e0ac48b403232290cf70255c3025b93ca6a2ada2ff2adf034b6d23a77640f1454d0a5581b3af158b6deda9644f84d46750aef24b74e61cc18a41c65cb3ac747db272ef9fe0e4be7f6f1d76910947f416c64178fed6d5f02eb32ae2a9dedb32281881b41c6c5230d4220653e1c3c1a9286958befd4e333a2875932caf54fb32139e71c25c835f8573fe05c48b07466c0f0af897c0970cd535f85c68a199f3973af293d40b8960e23601b8afd7b661643e73c2a532ac964cef518553264051d782bf9615017cabb26c685d99aba62bf07414b7cf2d13c2d60b0cb989135ec7649421fdcb73332b1e7799c1e9d67175deec9d4afc01e26df6cf4c465f6edee3f3059d6e2fbb9382141f1c3bc498365be4a6d841483cb7c6ae7958cd6b8fa80532bf8b7d646d5e66ae5e5405a25670b08673027aae7d7fee5db952ae4b0f298586dec3254e6df30e7d67b05007d2a950dfffc519ffec0b61de43010c2bac2f2a4de3ab370cea3d764ebb78caee016451dc43b0662bb49e0f9b63da40f38eaba9096e2e5f8142b01da50463e7da02ce6ffd93e5fd576d36d5595db8c928ec7b4d8666fc2297120ebd4059114cf55b7ba59597c92d66b46b0c1db7010b6a7f42d9d4f5c4429c4bf583f5d267f045af2f84dcf98cc7a3a8ae32275f9277d6fb350440846fe768f569e1a816fbb574fbd8742bc41b556698ea10767a51cee566aa7067cedf0a778546cf4ebb61d3e9560ede515d8a3afdde27d1b44c7ca3fd330e3344a0a5004caebbbf6eb7e04bed561a225c2eacead65e04b1bb612e439df6b375644ed1e09f1417f9f252870a67a683a97218100862f61d13ffc2acb4a767adc16f0f2ce620130f75e11e8787a323215f3803599185109e8296781e2ce1a728b9e0ac649b13093d0957a0f1d30709789a3a61fecb2411f4ff9dc8368e64feb044f00721149582d6bae00a12197ed9fbc174b8f3d775df4af5d551b3b0020def41a744560307615ec569637ff5923a7967d9b96ee6e65dd961f607a1cf1998ec59dbe8472ca2eb8fd33043d1510d19088c2b7649f71fcba62d59e3b53084a8933dd68ec63fe44685fbe66709dc57a0d133f337052db2a126d3645d0bf13cbafb425b0034b2a247fa65fabbc19b3e5ee413d9971da82dcb4ecc49f3ec1ae325504c3093f7cde5b0dd34c175f369b9e8c8d9ee52d1d8163fa5455893083889e6a666e9af21e301b1b9a0fc15d5a6b7438d4410811f520f1873350f5518f87b0bb732cbd147e6dbb788729164e6048f9c25d6e6698bbbe1fa9ce6968ffbbd10d3b81fc81d0be21351f59be546b312605101b75578dc6756a3806f17c44d2c8dd5ef42b29e8e6a0a72036bd10fd3c6634bb93eda90f6239b11739c55f2a85fd4f8d1658abe75cc8d228a392b00d06be63cc33701c70115eb9383179535694f31399392932274c3b9e8d5607f27041d4377ceb73e5da20a7a93558272cf83353de4d3f9a9d9d962594ef4d92641a3e98960853012cd2d1a38e79b601d50814cdea0cd62ffd823e7b626ac70ee9c391542b99c4418e78ac86d8f87eb6cbd8a0877379fcda1bc371bd5b5500793ae443e3e6331e8d9babbfa8db792958a0ee56653b359e62ef3fa189f493db0e62f5f0367ac11d7d59eed999506d5d96793544d506ad5b182ae44d9a4976d1f3410ba0a1de2189b9bf2305f6d1562fbb917b10281ff5ce4cad85756c9529cb410bba44dfcd5094a43b19cf3760c5720eb4402795d2b5df6f1098c96fbdb8cb42c64c27ef459a37cb2de12866e0db22f7c5d4dc34f027f8091caf1983c69c8869cf4bad340cdf670169fde6cb9b69237138c6a8354e212dc351d19b815bdd538156533c2d26e9625eb9592cdeba92dc3398a0cf7b4531ab7d619afcd048c1f977dd39314660d081e159164a16d008733402fb15ac34cdfa20b32d6133010f7416bd862503c96e43647922deca50d39e04a8d6565bf98ced13e1f8c49b1cdd94f7a038fdb133e580a2bfa63a0312a862ed504d17be7c77468b3a465d66d2f20a0e08dc765fb72ffe8dc23f60d7d2d3258bd38f71bc255f6fc3419fec2183b86115c7f1379c2ecac8d69008152eb1b2f21e9e34f1bf614ecdf32cff2f0a2fb8de5b85a58fe7b864168e2975e291b2b8dbbe34d63aea2004864a66d5cf6efdad5e6d3ed4694239a8950d01fd03653e0ac90da90199a45a80c8870dd87e85b7289449c1622c82d70a63d9829590f3a1a430292975c8a185a0eadf74a630914cba49fa32e478787eb4130788fc68c28a167b096fae9d7c21cceda3a23b92db4eb8899088900cea5c7388d0e3d2b4008fc816a84ec95d172db13cd0d2302eb9728ccdc9108b389c65c07a5dd886f830a7d57bdc2caee4c0ae10b409f1cfe6b3129596e0e878ac75d0d3f57aa00e0ef6ae73a2078290f2ed2f9b48c123f6af02ae95125685678dcc97c92dece8728a6fe4ebad535dbd3a063cdddb2e3fc6b2a866b7add42d031381fbd5663c50295ab86e23ce83e0b90d5ee63b12944e2b45f18219b4a57e1d2571ff89de7dec3e9ee9d4b3990ec0b1b8f642013cc0102b5f81ebf16496e583b326e827e92dc652147b81936283c635f408ea78a31e770878e2af3d19932826c25fc307b58a596093f9474e4709514afcad7a1cd2b02936f53d800160b1dd8c6334df0b6603185a67d3d8cd021dd1c52b3514d09e36021995fb361a32dcf09f1b2c4e257b0fe59395694eb2bc904dff34d5dd2e176e909a7f18499d9fd721bd648969e8afa69afd53aca43a5c37decc51717de795c5958be65757c998db831e516f4931ccc6842d3d483abd1f9332d2041ca328981289d65fe1a486b497ff90824a4fd813f1e23a0bd155b07a550a1f46da7f1d24e01682637c9577160ccf7af2139c76484d6a68e3659c427c7cbc1d35eb467ad2af9a83975b3499d64503324499993a6f2cc59e7c029c834060b1d1a981b218cd18a861d355af738cb7ffa29bf371ccccf90fb7aa0f451c2e11e8653f6e7fa4540887a6057ed9dadf98fb4632bb9242c944589518cd6c9702fe720bb2b1ef579f87b1226546a83e4172826a24533026ae7225133bdd473aeff6f427aa5047c8225356ff97beb58b2bbcf4c330dec28770d3efb9c693f46c484928d44e0b50c29a3fd7a0ba07bf9b9143045a640a8323f948a24d32a6f2b289dd5caa39ccd7365fe14b5970cc283659d73abaece6f2959c6c20271085a533b0f7f1e4a5bb2d37db2afdea676676a0059d717f8a6452a0b522bc5e48f4d6d22d78ddccf4e4a70137bfebdafd5dd4bef34c5a285ef62b7d93d8c0c67d6f31d9f6412a78e1451f1e87864993e61b8ec4c980f83d0906c7442e3de7b52787c62c6cb874d8fdef718a12a9fc550af89874fc3022ca5d93b6615321e3a12aaa8919241e6f19539efff6817720fffc4b08f28b78051e16654a153c50d889f9bed2a9d3fb5f4f3fc22e130aee8397bbd298205ab89fe84ea51c0cc09ddf308a86de8eda9c9f75ea93e7e9e27027b7996a2595bc3d459dbda18502961b8428a6024c99331d1bbdec23174e9e18c4b7884132162ca21e2addac2679546349ab6200a0c1cb7ad52a00c52f572f6543b7228f66ac3334a5fe8aca617924272147c976c3c0819a6386d765a4edb476446a2343094301dc2a62cee7dd6958c7f557fba0813850376f98749c706759fb99be387a8bd83918521ac4da06f3587f23525a9a0a6c644036b997358f34d9d9c94d551efe3ef3e19361e84c8af399d8f9dc7eca718823410aaf2214839b82408e9feed2976cf580b92d39ffdd8489763ebd089e307d600cd0dc880dd185c028573cd130315ca59b64c6ea8cb60fabfaaa8f91e0a264440a83c0a639825c828fc78f7460c97d3b1887aba8ee907050b46a534c8b887cab36afc19adda3f4129b349bf85403b727b7ebcb9c852a2ca30b9dc41b0385aef813f64f79b2c58b30a729783745a4f3c4a8aa0bb76207b4ef1bd9862990a2a8a1948f51f6c97dd477b8e4aa94831646bec2b41aefd3efba64bda61f4850ca85f543c2e15dbce5127428d8447480e797c7634d9b7afe6c99b85201c1a9044f06e0c46d5f761c1949e6732cd783964aea8b868d9831724ec2660bdbe3b5e26358ab1382cb2567bb7315f53b353f3b9426f3fedf4c9b2f284777ef98b207ffa07002d68677f4c570d639fc12075b51c07e215f82385d8fd06c02f69143df0081f2b56a1404c70461585528f62bffa5ec5dd28b0b8806d7e34fe29b92a38f8be7a8055958af690cbbf00a1bdbecfa14dae8f099e1ca710c3e9944ec5cb0b332948e703595f3c60c2f2347a2edfe5c6b700e9029c0f936c686420eb124c333ddb3664d10a075e342738ccb3a0b5619e33828a41437cde74ca16a438d122b66324ee5ad086243f9efbe7eef5e47c7a6fde02a20f22a64105e3b3ae517c477d40bd7674eac59624ca850ae276d677bbe96bb6658a0503a364742d8f7a9c8936feda03d946317ae9299e8ed26126731a7433fd8ccc3b56e4fdc6b6ea27625af3c356280dc46c20609ca4cfba90af550b6768508bde93a5a6c02ab3d9bb0d3f9c40aba7c9d6093cf8f9ac55b40c1f4ccf069cd7d27c810768d24bec251f43e2ed215a7aa1c8e57bd6807a048a4c4fad5f586f7bb16e74192dfeda3ea88eac7eb41ab0e36bbe6f1f46f3caeab7353d15c9ddd0ad55dd9275cd8111d57531b43e1f96d36171bd0d679ea12c42b5c42f964f43db189260df334edbf34b3a3357ac746594cbb9eab8fec43f83c490c52252781b5b8f9f2262758de9db217e3a3a92b30c9e13c05583a99558e738a7ba2ba03f98294e4f4cb1c52d0c8a77f3f22010a8b5c672c25980ad6100f49b85b515345d20ed979dcba7dc6ad6ae64ca42f2538d57bb7e807cec3b1a61ea42ac5793fb35b1ac1b98014ca868be685dc8e9eb09f23e78d87e75f3ff28640ed2470bb01f44322ac6503c0d7f8087c612b313fad48adec0a4ed18aeb62d09491420d28cfbfbae49a8052e84acde686978a94981d34bdd032b9ee5c4a730cdd81f38ef514e39516b35f29ab20064e2d0c64aeea7506157f6c16b70f71255008b208769cef102496bf4af333284d8164e70e993f1d820ad505ac8b00894c1cb09e507319b28597d5aeac31a7869af2b012b46226f2d1e9b2ad718014511b9700c243f0e1637932ca12d44775322bf7ebbc4224cec4a3668af858536a9a02f97f1ec150bb3e629f68a043cee577c793a6d974529cd912264fde25d4dbc9df460ab8daff0c31071f9ab392cfee74591b76a0e37a056862ab853bd73ef6587bb31f19b299755e6276a1c9dd90b59ed399940c2cdf631f8831ac509f4abf54574255ce64c4639d53c61904c7c7683c6745c45c23a0c39e863b60406cefd2e0cd8550e8088a33f722b714a906607eea0a7052941b6b20fa97e57294002424b27f92387cb945d92cd3a160a48b32c11751b36bfa37db5c3b284195b79b16f1911282ef24b375732e44a1aa032c5005868e50b099d10050dd9f45657b32a249dd3f1fb97d800435a425b50377e5c1cbd150ff1cc1ebc0a153fe1f6b933702dd0733952ca736dbf968b9604bd6ade098e124a4e985b8fed27f44eb0517f406a214383c70c8c1ce7f09666f259bd3a64277ada9f43b2dc1ba3caf1b5e03704c531ebaddc789413aae4a19c96b64ee9c06a709f6ae00a7c6f5d5c12633b7ea35a7d391096f9775d88ea17a8080735f44c9588bb641329f38428a2032c178e3afa1f4a35692233aae9ab9ed847f2f62217bc5bd7bd4f46f7185123bd30aeeb1fa5bd7cfa8fb631418c6f064a212a0acc641febb5f6fad28064614c7298aa4aeff24e62dd6ae0fcf4c47da03b995f69f84ad68d730f2897286b8ad0adfab8cebf2ea1e9e4545e426e76abc91564c02099ef6398edafef684a419edf6d37d787c437591a66050258748ea11bc1ba5ba7024f7fdd18682292ab7f4591288aaa24f1c14e4a1f26b15d6e61f092997eabafcdd58149e31be97d3c7216b3383312596f710d23dcff27e51d725055a804cbedfd63831dea84c7cbe9eba0d0b4c4c81bc065aa7495a792d7b28631c5e7cdf295a8054dca432a957287f02227fb5961bf37098c5d4ca4a7315dd4c9a54d60c824a7faef1b153276c938540fed48ce0ba46aa1f229d4327a62f9a277bbfd5eef14d8c7b1f497021411bdad8e8abf2050b4965eac8cd1a6a9e425a67f4a59c41c67007126b58416121d928859fc7e8ca1f49e127550deb90385db7e2eb86b7e3f36e2189aaee576a9c581269d2aadefde81b97b278dc47d5d6609e6f7a1bc95c8d84bcae0a02295c051c86e3a7014714bf7486277a442f2cde4d7da770e9fb834fce66fd89865b96f330396a35dc7f0be1cda53bb2d5928737a03e81cfa5232b163a10467cd45227c0d4aa7009b99797ede0365b10f691a7cfbba3274f67b8a666075ed30a5f2f520d296958a55fb99068af0195937f3f221769d0f2daa81526e3d7bde6afbabf263cf887acfc8a481f391bb851d3ae0c8a856119b40e1ca712d94f9a91baf31b3bf5897b76f863f95d2d0f045e786133c411ec6793be4bed17b6465317ce34e513a187c94ef5cb6c087437025cc0a4b9b1b889c495710e84098a87db3665bd63adf2f041e843771b54224a2bc7fd93e846fdb1da84e2c894978e211ef54828fde45920b238a7d79940afdfed531587500e639f87577e805ea59a488dc31802bd378fdf430edad67e8377db7a9a0191b4ddf42bc66be9bdbd20acc57c28c9afe9670d8cfad4096177b33b6486aa4e4e7734bdbd89da793fde6c68f7296121a5df20934b008c53bf507d9f6cff5b9f0363544f435aeeb97b80cd936293cf3eebac9da550b56e4ec2037daacbffee280ce7a64040c34de8f37cc397d281680df726ac092fb3a183bc0acc48e576d33598246aa8e9e7ba78566ff6030a65c0d4cf74234a403648ed4c8c75cbe2503fa1bb64f2a452ce618f71b31a0803e6c7a985470a38189fc27ef924c8667b1c905fccd105d7a8338f89f51d3efdbf50c3f8f73a366609fe7a9b9959ecb14c7153f5108ef9e480fb5174071b09dbab378a00ec1823abb9da909b90fc3d28c39837fcbe8140f5328cf992a31ccdc18af2a65773f81da2c6a9e94bd80fa6ac923b14a1497a0d3747aa9bdbcf82ac71fada7f62a273a5297aa2a76ddbed9900bf15b1270075835cf2a4cc789e67c3d182684ede966d0de58ee6cc3420c3734d34f3ee63fc2eb017a2e57c4900f9fb6c368e4a5ace220abd042eddc9c2a28f9eef767d3f615436a399347f60674a24efe2fb1abacc7dc35b0569a4cabfbff765b76e5637e9e81d3d9e44938439c8eeacd1244db612ea76afd809e5c60e9571f463b5cddfc4c3baa5b357f0af12b7c11a182e5258641f7b6be9e894c28c066d05b8e5225bc938faa2e80e3490d7689d52782640825f9fae87d9f47bb7b6c4ad33c95f28e5ee48b27b33b7490a9811ec94d129616662dff6bea6207c11347d867ff862c14a1ff4bd7e5ea556b34166c1c020526c0cc2587b10df41863131a224cb7a3eaf6d5486cb7c0473f856226febde10981ecf50f9b43fe5d043ec89d2ba6271da63c306fac24b9d2e2a723a3839961b05cce034ae3f5245bdc90bc42c4f6e921b56d6ebc993439ad0f5b85f4987b839d96bc20e03991419c83cc9d916928161e3a2c304cc0ac29287af902f1075b6238694cc6f0f9c957c162c58d444690df8ae9bbbfcef09a880add895d1a5212522a2d6aaa02c98a812ee8a5c3608caec5d164285d7fa1cdb0c78f0148a9af1406e34e8ddb72d556499cd9e6e363215d871ae95faef99efc4ebb568921cb12a6522fd1b36001435a48e53eb9ac91266f4610f088846679ad1492bad43feb32595ba9ab25faf79e887e4a421e17d5e2d41b40161b01fb915f1475fac9358cef1f824afad52ec2cd8f0c5455db82405002adf13db89f256621b88ec98a1db1288576266efdf25b57b066b9684874d43b9f9711a473aa76d21c7c9a6aabf601a19a1b6009b2bb9bc51b5fd65772c9078ee5fcd5c9383255d667396277ff45ce491666942dd2ce898142c8e4dd275a78c3af06b7029353339861ffe93597a2363305f16eb7d2e206a125e17c571a95bed15a4ba0434b5a2178ad163ade940f85de3e48d96dd50908e458193248c003d6fc7588121047dd185b2135a7f7268f2923c7445a94d081061e79120032e262e9b794bdb997b9b76bf2b708f3c21caae42ef31582a029b557ebcce34a620bcbe32a7a1bfb59831c180abfaca1c2570d28f306117ad37a67c0a4739e372c6d755f5e0e41954fdf3c68d32c7f84da1185d5cd2ee2aac8998dcb0601b3093457f2cf0657d720792ac4249956f464ae2b5cb8e9ce741f8df352f587b7f75416d3118e3263f27ef33b9a2f4bf904f2558ee0ae93bfd521ccc1407c5ecb3d76b1e5e258494dd334fb28c6773e44a5aa2b79e39db18076dd9a92296a436cbc9a1a4ea01ac076f8a283f2ad2abe0c4a3254c523bfc8b7e171c581ec4b9311ea27d58ae37b5a9f2fb53dcaee2de35a5bcd2f4ce1a123102430dea1a952660c73efc18f6369882c4b0e13cc4a691da9bf5697f893cd48cd3c9204200e00b7025ba74a503318eb92c31bf082ed8e109d8dbb6132c61d1d4588043230b55f9245b2f22a68ac24424d0fde56e43cb5ff48fc5a12a1678236c9cd58ae64ad4e773d18e713d336eecf73cb894786badc7df7c6e361cdb41db92cc0308ae2014b89ab18285501be7abce62db549ea41334d45aa431a8c0c24dd9bad0a09fc7976f616b63a251522b423b1504cfb500d9a36e6a03e8fc4185ad235dde0f6dc8f5ad80313c743b5e6ee1d38dc9af6d254dedd1f2c297a88cac996d4f8b6e30846e145e7cdf6098b6d38cf4e6251f33cbb278f8bc91779103d78c084d63ea6eaed299ec850b58e548f98278a06e8c8a420e5cda93821489bed055c3bb1f88e5cfb90484cc9ed35bf4517f5120ddd09be943b2f4c908d14f071604441d38169ec10806f095dcf9320f50dc322ea7eaefb88647c0b40497e5dc25f2e09f02b1ac35c8adcc66c113b4e15fe07d75a7d224b716f58e2ce00ed570a4d7708f647ae02d4b34838b67c91227b2bf3b07962eaa854f46180fbbedbeaa4d0ddddd1267a482a551df927bd6d591d61c39d6d0e16fd20641b7bea72ccba4b76cbca16243475f729d42cfc028c1452612463cb4becde53a6bfc9df73ace2de575e095a951e4c4eab0f0d9a59a9e5bfe0d357483dad1161168c096977de048a8a489972e2430044c05cc0be9bbf65eca0b721ee145915524c654977caddeabd41feb29aa947f478ec820044d5ac7d1def3f2bfd72b0da223d9c90f20e7c941422cc1f156fb78096b22c8285dbc89a8232cd13f7299bc92c0b881750c7d46a89f0d013992070299b3a3031c42c066cb8ea31369e46fd1d1edbe71c179df88b4143f14700cdc269bf7d9ed4da6504b976ee20f6e4343dd9a6d1f85f1f92ad8eab42da4a78950e9867b41426aaae1ab5c84e94f62ce279141b0728c8635306e06c2deb614327b21277f0f8ce6e9e729e0eee919bec6aff1a9024e0704b806e575be2bc09272e3da1dd48e80778f7bfadae41f8edcd89b7ece0c43de76cc7c92dc4f7e56206d00e45ac408679a7999e1783f5ace7e14007c3da0e0d4e769f6298ff1356d5ef9e497a84874f50c6fb4d1d9d4f8c94875dfc097d68e14e92f8dbd1a77215213353b44228f65f6526388c394a26b1841fb7f2d128060b2127383bfbc5eb62ea9a4f1efb6d1f76132cb612630c87cc35653f931f7e1337b7b595cf5e7f3ef78afe33bb1aa7cab5038014b5daa51ef01d70fc09b25c5bca240072b66c241009356e5c83314a5725432bad119f2d13caaf8702f378dd4512b02dbea2da7d53cd4f5c4508a61cf6551b48956096dcd7b9452bd53b0b44b97fd68baf2c7a551f1588626dce8cf05dbe49576183674f4b8395f2a778434f560b0996ed5d2fece01422627676ff23ed9c6709f6eb1d42d4d9e015533c43b7965f2c3104188aa10878098ddc1be3314225725efe1984d71fafbfb4909dc0afc9c609886af23d385cee4c36ad0ab4cc84bb455e1184c1372d9af771ec297770c6555cc0efa3a571c68eb309a8c07cd9da550e956c7b5501962a77e181a1b6be2c3e598dd219c4ae32bae8d126b1c9b7de0f58b7a14dea0d018e78367789865ed64d33ac9df9b717d61722c1606346bedb58d2bb52899939caaccd96cb524f6b228b37306cde0c763738884d32f324b5607d37bb2d5082e07825d3894312543fd61e907f5369ffcf7d794af45ce141a9b2f4474758ad46ada1e4a3cbcbe7b86591a6640fcefe9f1661ae5eba422f20bff804ccf7c056fb4aaba4de62e1ec28de6f73c6c77af343d5b2d271a675ee1265c29a08df7767d6c310439192a159d3a739e4d5bb2d264ab7f71b441d0a713c7a9f632700905786677fb451ef8596d01eda532e1f590d5bad119a50c13f0451dd3b5077f1fe4e76bcf384a2098db6a6d1e80965aa4f4841bc4d70b49013d9eacdd25538654753bb9a028fcb1f625859bbde7de21662b373731f90c684c48f9cc5fb91293e51c057f0106c744b6e439bdcab2d81766ffbda71d62ff025696a72747a0447bb6c29d62219e98b087c6f0983e22af239e8bbaba4a0c694f90669b3fefd36353e62e90fb8326abb312435206090903ac337d1ff298f673ae6e1f13e6871fa8f773b4e6570bb08c6d6e057d755f646721e47372873aae6b21e617dec3cb5ecf86f2db7075d2008de129fdf3675b3fe27181534be2b5dbeece7de073d4066de2e34d005bccd7de4977e4579df0e8fb51937e98d823b87dc37fef6d38e76c7e7d369f0ffec27715497d76e5303b055bc0008c01409cb7bba72358c7711fc0dda06911e2a136b7bf6ea1a9a802054ddebd3444208b54667a0c4bf819a6754748f4acd5d808f75da1a57981962c20db5cd930e8a26f86f41b62ae845453351562b4f227b7ff4ae1983efb13c6b8f276e528fb2b69ab1f231683a506ac337d9dfc367263e7d8681e746305f29293f31248a21c13b6dc432648d3af4cac8cc19c291026279eaefde4b178d61f74bb339be0b222dd10b7c8573adeeeeab5584a4e54674f8a8d83ab51fa70939d895ad1137d1f1d02a735b9b9b199a9cb0b75b2f2daf8ef601ade85f857e4c37f2234850779b6223f41f4d44841f5c84fd26069a6e2954d90454694df7b34d397bd16174668c7cab21d280d1fc30a5bffa18333885fb17573bb225649962694ac46d1e5f2eaa4b30941ca0966e31614ca8f64a82f8baeb54fbbcd394f8e22b842928061e384aefeba1065a419275cc7d7ccb4b373433222d9c85e254ca2b658f559e8914d9281cf54489f6b9a1836f1e83f9314810bae11c75992ef16bb15715e3bf18ec6b3f9d1d89b0e231084ed2f47baf8de40a9b89e78f16ce70cfc05628f7b5305914b9aaf289914409ced51c245aacef90e998d28a95cb34bec591c6f1991ecb93be6d39c829a886f5cabb712526dcca1c0d139d334ff15d17e423141a6b63bff8fa859cc0ddcb90c3d4dbd2894a3d9e5fa929105ed65f921149fb16420080840d01c64f97606e5ac9b3c26321f275e29d93708e97c8e1a59ccbbcec86bec407a46f94fdf9cc09095b9bd2b02b2889aa4e347e8ef5d97e987b2dd9641aecdbfc022ba80bf4c1a6541febce0900734dee35540374adcc95932a791af072862b0b5a928d0e00ee2f9df0912a874b79d3244b5cfc5702b3012d21afec1379c070b15b3291d090338c8d29722486ca61cdd7cb77d8a9e8a295e5398c1a84f49f3ba2d786dbd09cdefe330310fdadc0651eb1279f9695279aef9971f2816b67138c05eb2daae3091936144afd3ad49e93ad8e10388fdcffb36d9f14fc1b83274e7db9e09cf66d3001a560c8e0540dd5c623a9a254dbd9cef7459aa62a1db6f74c71af6d28e06cb76a12dbb0e1a89e71fb3553f966831057054d77ff5d61e7f936ce1051f7e8df623c2ae382a5e4158e0ed5daa6e2172994af48c21a5df2b55b8acf27b18fd5ab54b49609e530a30460cd13004ef994caa8388b4b477253949e8b4479fb201f36d906f2fba0a1c3f6c325b514e95c5d6d0ea585e5017cfc6972f4177caa7c8810650dc24903edfd8a8f2c8f7db839b1a66bf4d1b83dc6c3edf19b9d7eac7370c6f1008afd77f51077d7e301cd437bfc50b65bc99cea84c06a7ba327e0097cb9318fccf887803c9e88fa9dc7bb38f19782328669623917e28d4459ebaa23b2ab6766e4c8b12758950298ac9bbc8211c615412db0f6e58d4e435389cb77abdb57982903cca799930d5baa9e4f4b7e2a85809cfb27e09ba6564f80fc072c493b7093a05993233c1242253c5f228f81bd885f29f4df14584634c33954158d483ff1d1fa61f83fa0a6f1c2b1e3d5956b216f382610f4ee882431d5cb25e6b8ecf0fabb64feade3c76ab4e1b5a683a71bc5624709f46abaa398f22d1dcef0aecb3304107be626a9ec5f81a23f416cb3c694ce137b931a0b76edf36520df10f7c3705322179255b75311265e33c39657f36f1ea9516d4ae3085cec68248013adf487b2d94d1a5a34beafcc123eb2c3c5677c740106c8d6aaaa7eb4c69b71a9c4c2d3188f5eca4eb606bf3bd4b3c0e9cb02a98ef6c0fa5cbadc2f8f7f44f05020a3faac65de2cdd6279d7874eba4dca8d121a520365c3b34364ffd4b740d4615f9fbec59ebe608b3c4c7bc89351155ced07689453d28530735edf7551bb98c5e0a6464b33d8a57889555be8f7eb5a38b1a5342ca1348e55610ce38798242e21ec2a71ef7fb024c2ca665d004c16e4fc8ed051aac9023301a1eefaef426a81962bc26c39c4d8b6d6b3b2e71641bb3006ade6a6fb14f5ab5912d24b2fde66f459a24bed9405fcd1b934a2f9a365012067553a093c3307897fafdf113b587af338a3c673dc1e45fc3a6fe34f4a44546b89b0a0e3819d4b94977c338814a30a53243da25d48090527553352a99e084d31fc390bb267524e1c31fa7ae7e59eedf9f80e846e6579dca334503bb4d8ebb397eadcbf63ebacb19ac7f462a8aea31f803bae3eeae4747af85d92dc75c823db49cad714af07ab7ed286530bd2a8a4dd8bcda5df8ff805066234bafa47e507f8a02008ec4adf79c494dc76b9ef996fb9478ac7c2213af7da0ce5a373276979cf07429028d1335719150b7eee4ed3ed5d502a8788fe2c01636a729a7b94d7bd277628401ccb86ff0c404c4271275a3ddcd260e2093a29c6a138f7197a25d74030f1cf991e0e7381ab43cf3766c2243f7c3a7e056d1364249356f88d0f486743593fdb60fe7b6f4b1431479af29ff166a2b92918eacbce288b56fa3d2aa4b6712f0e7a6aa8f3a47bdc14ca19c69c5c8624c67055304855c81e7749f4fd4ae3c69d0ae39e744cd3b084a2ff379009006717ce5d2c343175c9084732cae880602abde5b271ba2a496a23aa7747611c93f0ae76e810ec0171c97e86d9989a929076e9569aef4392fce5db886153979610605e650e5fa662b5f7a5e2ca72f75a3b1ee9f57e4f1acf49e514327b859089be61eea6d9f62bd32c8a47c02b822e9d66a87ca3ab3e50ff2095a5bd800e48defc676f30b34b22d76268191336b9af43b093c832a3278a2acd29534ce11dab1dec8109ac9226da69da40220c832017b203034eaad20a6d5743fe77b829daf9fac3255a6fbe7a8888d0a1c6ce6ba7626976437728a6f3ea293f3762bb945cd805b219139f5d58ce6826b4917000a4a0a7e01351196eb642f5c382d6f9b1110c769a17386fc42d71109ab05cd66198515c7c7bf006f510fc95bef3d999ae148471f549119ee9e5c7aa23c52ff194662556c838c0e3b4b8c2622b596260d2cba2373f6e2b1d0a17edc3e6335b3df61ce07ba20f67cd01bf9005c7172d3b7f9a086d4f542a9dbeab9bfd8fe365dfa5ced7dd8987a73ea04cbf939aecbbfb40da42c60bef1ecb1151a45d4a7e4cd0d7995cebf4f3cff4ac848d15d96e0a36a6069bf4c951486d381c245f9704f2e05b6d258ffd880a3ecfd0eedc765b4148699020098a133b287c666c1222a8c0c0cb26016039c327aa55b8a2e7f6f8fd8260179c13e3cb98bc113d29cfd663578ec8534bec07b5fe4dd748219ed967b4bb3744ab389c07842c18e61b070dee62e643ff4b6f678baca3ceb8c4a2841c8d30348e5fb38dc22e4730f872688f0c1d8427b7ad96641186e6b83943da74f8866d89f2fa398ced1b4d381482afe41eb5463495503b7c1f4c752135a6415ab141ccabe01cdc71c8017cb94bee5ba650d16d2f44779e11aec7a74c9f18c444285d42af2a8c3bc008f065c4e96d0e57dd38eb282c8195fcf425341df429874263bec844863d2cf3f431c0e93934e629770aeb5ba815f75975b578f6287806b9b5a00adffe9efd624432be5ac0a9ed143196d3354d333520f43689164d0af178748c397a4e0381c111c6762646516749f856839734e91df5c2872f28681a6b6a931e16533673ab976bf1c524ca0b68381749020f93af678fedb2cf691d2f1b96c83f457228d0c2116fefa6777cf03e20e25e37b4c11a7ec2e526cc1784e72e4e3728a9c26d73ce30712ebebec96373348dd39722402c172ae29012cf354f259d175372aaebe88f1721879f9d7afbec0756725d593701c844b1c29be9e990c9b1ac7bb177e2e68f2ce8fcc139b6807bd848fda860871ffba398e8fbb6aa462a721e73724a109686a39db3010a822a0c282a62e013450a0272005de5ded5123c0e2187161d6a254c6b3c52d993ad3a5a86501a40fda0c78c2cbabdca0224fe1848ce22532fc43349017fa2fccd9858206377a860e53d764e69dcf2242ffa2b964858f720e88a711592d87c1b3d3d5fb008ced174127979cfc216257d63421ca9d76af45c0f78096219a6352a0bb75913aebbccc1089686fc4b07b01167ef9f7440294e4094df2754b46e690a152aa2b01644c98479c17dae0aad3e8c3cc2806103fd77fe81016a75d784a52a227ce19132386499768a9e8959f4a06cfbc03fcdbf1d1d7e40f786f251d310be9aacf60954257f7ff0dd2e8dfa7600492c2b0db29c223f123fd9a3dfe9d1ed8fe66ae59156c307de7517f6c4e59bc4f52a4ada80b542ed9296e6f534a35fa153f8f02a0af248607f4e34d1c4df7a9b760f147be3b479c7a802de04066e8918a911a7250b6c453b0fbc90f5ac4f4949e7d5324765898d581b4b64b2ea12d131d112f3e97702d932b9b3a4bb33b6b8fba62c9ba1e7ec68b515acafff603cc931ea1b9b78ecd48c88345cebe23e8e7d1659413d541b96c2f070d6dc113f1b18b22b3aac36d244077e6de56d42750d2347fdcde153b0bb4798f99504955e7565667bf775a065c20a98034de309f6fbbb6da10826d1efb1fe4cac79ac66ef1bbb5ce312f0b9413536b6be3432a7f8517f8410777a6eeecbc2fc2733956508c454b66cda278daa6ed4ea880b34c55f53fc204d910da23b9a4ddeae8778f510e792180c8ead5932758e72d14b4d499e61d7d19d853f9813e23b67bb155f92bd91e235b23ca6d2fa637500439e236d28b89b7cdd73d473fe88144d14b3392c5e069a05bfb4a1de063d8a671747e97833b3da306ab3fdc7a62a657e277c548cb508cced3dc3fd7fac78d893696d953f5c4369611fa222303f73d81c40ee4821b5b90435c553521a5329f9fda335177c3aa848b04d2195b6c4c249b4096b5980079637dbc48c593d30662100991fe47412dc8a0ae8f3f197781113e7702ed563ba9c15c63ca2b5d9885120bfd8672baab4e2897180865c4c6de604b95574b7ddd7415a26f7d73bec154d640fe3cd9f92b3b0d5695109c18e898ee64981d5b42f4c4707a48bd8d8ec8ca1465edc3a8e4a9bebe6762c898a4a75ca07023d867ce02d379eec51031b50e5afab2e0e68d8c6eb2eb79d845a94cb89f291b63f407bc4cbe8670e9a966b16db58d64d0c2a2ba968c33dd2b89b6c7a9ef015302df2b9df08f295226f445151588363d53f71a67557b060abdd67b212fb950cc2e348977d2b71d4d3a737b04b9daf6026b82794206b69319f9dae33bb541c77dad3b6542564cdffe9574deba1080e1fc6099142d10ee0849ca39454649cdfe21ff22366aea96336455558704a5228978b21024c09709197c986b0a4ccf2af6b794a74e5062b79164c85e8ec2eecd3c470d25d7c501929bb9d9092ba78820b7031423ccc92068a9458b7bd96cc50ce83f5cb7f6ba458019a832edbe88ea72010bac2b4b9d122d3d352f47258a1df755b7e34d69521051471927bfdd71c47f169a793a7b09797724c2723ac43b17c9670f6e6c86f4b58abf7d5ae1efbbb6a765c0fb09863e848891610af664af5cdd88268815873bf51ecc6b60cc8f11f9ffe64f989e63dfbd1ca6eaf8ed8eadd0244be2cd8689748952b01d1d481df370066760302ba087432af91978f76a0e8d75a0ac46828e238d14b0f0b51f2e341852e3cdc443cd41d13bef0f717bdb40314b96f1d1b68e7eacef04e811331a7db3795db42a10d40e9c32aed0844fdec380d2d2a2a31947f027ff0b29ea07fbc8d8aa36facf70a263fc7804c3a477b0af515a53b5d042a398a6913b7f6a3c99e545ab3bc58f4739a8e8efd2353b52322dcb8315a1eb1ebdc7d863dad7617decf8863e06019756f6ba3f2168d6e3f098f9f3cb65e6b0874186ea9c05c402e204f9ec293edd58671069e380c23ab49f8fe790488783c395a90dc6f64dfb33cf6e33d450914b93aba0fba2c6de5914dd8a5b53b2497e79bd204d26bc17d770c464c53aa3ef83638a40a7f5aa0e0f274434cf5716ec60b80820687986f4d539b46c24a7d8b4806a4b371b8590d39dc22b8551f4c85bb6e1ffbe3393e5601915ca50975e31ef8101526ff787e4df26f9fb5b02d7737891cf137bbb2f5babe81ec0bdbaebb7df8a7edaee50ec3fb133317c169874598707e19abebd45544d2c2a2633fcf4bc25e1886b5c2e5293ac30ce9b01ddc62769b016b3c02c290aaaf3703c5c206387c4917d6d2b0ed6e7c4ec68773d2d5bf476293f9b6fae7d75faf0d4435ac0d77257eae3996960ab7e7c1d989c0afcb03b24943355f720f9bc28f9af6503c573f655fff134ca0a87597fda48ce534ee8fda41624a31e0ef6c9808734959bf0ed4d3e26214378e3d9752d1fa7cbad3dc052e058f4b1243bd6ec66395e0c1755f9beda7cd22c6d39db442a4c96dbf477e50ee907a802021f35bbb851724688dafbb49a5f0382854c632a6ea6b91e26be90540f55df64ef64ea911735109af5bd142d26f211d051d0950c66d50cea106675295f756314de69dc641fefd1d4740b732ce79c91bbad6f5c3e64640cac02daff6b0922c34b1cbfa2c677ae7c7a152afc3a42892fd07b45b14e05456e1e9e17e4c1c519ffddb9aef851c043c189d450421c9c27a7b88062b986324a6ac6a42efc59b59a46a960b1ffde94a58ce88e09cb4018abc6d03c4caf201bad920598c7769bafebc3f43cf6512e496de8d9a9b5a5a9308a8343cf7a9d81d4893c3dbd99551c2bd5780b42dfe4f3865b6b1ff3075238e5001f2762dae8ff505e78c63ef33b7926252ba68f83bb6baccf39a80c87f6a4458c5a495b4bab0004919ac0d9368de88d2c61f6fc2d69e2a45096ef9111e7948672bc9d9124de75d9e953f8c659dba29b406e64d6dc63dbf709026d07547b8ba737e47f13ab54071e145a695364a57a9a398f52abc226bff647edb78e5435afec29ef3b9e9f86709420a01cebf5653d43f41677a1c6243b44fcf7404ce9379d14d5ec8ec3af2add3b021f652fbef1b7a6d4aa9f23028bbd6b3fc2c2653e0dc53f8f6311de01a14e3a122ebd0f042678373c8fefe945d3b6e2ca4ccc8252bd06f4ede4bd61ac2d54f58d6bc6c222e7a50f1604eb4991268b987be906c37a348d844cb205ca3e03a0a212352eeb046f8d004fb1e1749e8f5d2dd3bb1930ddf91e6b4a712563361d438126b0782aadebb45258238acb56fd1e037ac94ccbf7355fcd4af0ab708bea997bb062f4e1b16d975ea757e0b557158b9fb99a4d791709b97df3fa64bf23c833297d5b58e8bb265f4f3459997e74d6fc40fe6ab738e031ef44b13e1a855d4b3f07bdeace8809f83872fcecbd89340b451b5ce94042cc038a26333fdc8c885c454584ea6e36eb501b6e824e3ede518cec6c0889b1eba4ad9d9feb5ac51269213db34a9765fd475d1aa149fc90623b538c80dd61006909d0a29491df685eb9b742356bf852e11884a3a95b94ae5c935c25b9d9a03ed1ef635bc0a12e601fa5bf7aa0a8d89a06ea353ad3c5c0fcbdb05aa2fb9e882f1f1cf1fdfad8f1a7cb4cb6ec0ba54eacba600b90b71834fa831d38ed22f201b03fae14219eba5fbfc345205e6f69d5812daf3312e6eab5bdfe196a42af3fbc4fa29257219f0f90bbcc168478e1e1f4dbf4203346cd533f9a1e1513ac8c13debd2a0e55fbb662e0c084be34c4e55c7af83f91f18f7271277a023af5ce9fa145ebd33731d413816894d22cec41021041c8f8f5183bbee45fc3e0e13473c33f5904d07c5faa9d007f37f5c535ad43948ae5edcfc3e14252c1d60c18eb7204e667a47219b9e8ccb64dbfc4e2a8b16e64e7cc86bb7b8a70e4677c4b2488f834b699e4bca5e3d56e3d76dae94ff39c5b61af1a72e6871715c71fcfe0f90537636f7028f585071a7976c6b64dceb357614e0acf33918be1e4ade178c2c4ea055bf8d7c94e76d6d43a03fd38c89224afc35488da7792749787495f5221621b0b1ddbc6064807e2fdcecc9db81ec49539d07e4a7593d2b9bd4ed79fb70de67d5c21c76ed20e1c4209b17bd6b1b902b85fb43ebb02aed0e9664c91ac2352176cc34e0dfd6bef6d8b0abaff721f14dbb6541ee6d683a01c89fff93b4de5bfeff50bcb24ebdc890416d0990de26ecb5423076a3004dab8dd40470098d4fe111df4092c26dfc04dc393b0149a49406366ae5472b77c5c344c5dd1faf2fc823a84ea3d1c501cf985dcf604ec62ab64447db30a1e7c458273379ca64296d40067baba433986832d1057a8885c6519cc3afa927d6762b7a29e7f4be2e455bad0488a2675cdcc233db68f0e1a8b64fa55bab2dcc0ecb1970eb29ab764eb056a543672226a09ce5a0002b563950d685eb57e6e4aca0d97c003ae11eaf406fe187c8a26f8408d5985fe4d4cdcc3fa3c63dbae698a093da2593df503b86b7b9ea222400b39d864e03ff9c7ab1d9991eea89988d5d93e6e47a022bba120c2e7c5c41227bd806415f8366f147e04399552d66ebd566f9a7e5f40d6c0b0fb1c255a6cc73889070cfedc87784445bb7ff07f2daf1585b56e08a43ca8860af82f01c4113983f3047218e9b09ed9d420061150307ba36e55ff533967ac851dea910971254ad832e25b19231292a5d27edcaee35436cb121137fe1f6a77fb6a6adcf6528ca4f0af3cda0caffdde6d3a9075631eca6fabe66d4e7dc15f445007c4b0875d2c1af98ab89fcc5758045edcd77b87254c6ffa532fade269fb04261e33fcc40a89da9115a36f1a09ca8d7cdd468b4ce508d84334a19018c8411ead6c7315bad76f0f1f5665cebb587e138a323309ed8d94138d5bb2406172d1d3f1c29e8da4c4b4b2ea89c65daff97441eb2a9e94190fee76cb0bdfdd0c5fbba373885bce80d8feaeff9cfe8e7748624881e1cac880a49353437feb11326ceb147e355bdfa19aa49dd6b2989481c11f5a9ece244c6b45a766db626e2db5d820ba68d828edb39898b3e4a125bee287ac1396367665eb322358ac552b7c10c7766b1a92476b22e465afdd74bea701e0bdf6c3b66e910c6f1e3c986d3dda1fc37cf8e91aa1eb5b913cda01e956e743b6df5444bd79d2c442214882b311d4a836dfd43c374405d73b0e6e21f3df218418254e060fe5b426b7892ed3a231db77f09f81124973e40c7cbaf216393ab2e7b768c54f435741781c00d252abdd59b2a7deb401c1025ed7784b645a95f84ba6691d6c464696576085fb4204b477af6c7231820aa507a0c1524234f797f24379aaae4793d69d2b514956399d95bd5faa4e8d05070dd6d9e3b4f3779f00a768b3167152c00806dfb383f27b669ad3fead99be5272a84f75d34cf4d5ce476e9475f0221a82c3b9701e926ee8ce041fa4e59a71abb33882bb0a499504f0177d630f9ffc7db943fd7c0a99e90cbf88f0edcff7ca3d1a1196feebe270eb3fcfb6b75e2b51ee9b97c4871800d885c7cefedfec3c90ed3b9e0ca32dcf06bab90150f4ebc4becf1a225acbe8f1e79198f3b0262d5be0e977dd4ea20dce6885aff3401b943cefe3541d55c5f7dbf58dcd07398959277c11f4de8b60241ff73ed3218836cd88e8d99614e0fbb9f3104bfb907e949bd89e678a47e7ef0f092d165cb93cb7f442ed6732654fb567ae8f701c06d9c8a78a661bc2d3f71a7a537d97a41d71b4a22aed903dc4079c8649345ceb559ad408bdcce31dce95d02ccb3e1a1665e533b0a085f71dbab48844416132755e69a5b2d62eb2bf9bf9ca01c3a84f76da89e6792c92609e21cfec23db5d1036756c5a539d66fd9f2e2a8c7b8edf04b47cd102ecf74cc72eaa73974f9daa925ae44361cfbe72275d93bb09bf08116a207dd4260f4fffa4d95789ce28d365215767d447f548afbff565dda1760ca1709ac4426c2127424e6b0138f6470bc0b4e1afe10cbd309ea39657b933e0fb6512926b2618c294ce8742d3ae40359980037fdf78f955cf3f4004af2175e93bf593f14276905951deb443cd3a2094149a4d40122b4ddd60fb750cc68fdfc6b6ff13eb4a7881b23c1c417242ad7559d7ce3403d31747d78317e1dc8972cee257bef9603af45cacd72428c65a12b5e981655581a2c7556bbdc2880ffbcca85b916e1420fc359d0ac896bced91b77aa975ed90c176d677f3f6ab36beb1243089d7de7d6a31e075a759b310ce36824aa05b133d09366e17a6f92af9f254c04e2a250b9262a98edcbbf88ea2beed95734a9d85a83f3f91ea00f7f8915a2336ffed76c98dbded481382b8d12daf2d4b529cebe8a7d2e134a2220479d3336e4a27034b86a6c5b5c41e33cf07c5a0c3756a86b8dc1c8fe22b727099902e151c1e803c2a11ad1b7278d2421682941d4dfb13ffba0fa98cf9e0bbbb1010f34726ade51e1d798dd8c57d5cc98cc6f0a4c0b9b3b36d64ff3f54e1659b2cab0427199da7e12ff93da706447b3cd3909253e3bdba08912585031337aad38e810625985bb501f3f4ee2fbe12c7f5b162226ad2c9e5fca84a35eaca93657640373fdcd88cbf89fd048eb52d5cb98691a475b67b2b77d979ccf77c034b31dd2f9db7d023caa89a6613ee16c5df5b8600561f4e24e364569009df16ba1cd2bda9e9555b56b0df104c88267dac9cc957304e367be319b5febb3afdf0dfcfc560e380f78a623e7c5c4f86fbe03e94eb63780c733625e8822e8ef7c392d79cf970754dcba6ce833ac316376139895c1b64d118070c286c65f9e0ca1f48fc67f3f2dba86e63339fac4cc8276c95d08295a65bf4cfd2803033a54cd7c17218ccf7b0f6d38ecabf0c3e8a94b5409c09bee5a8d699c72f96e25b2ab18b4908eef4f6d089ff104bb344e245298ad3ed5ff1b6ff2a8ed47924595258b3674053b1494a58bee40266e5a988e33e288da7b0feb046df805b34baeac0d137d019198be78c189eedd5f23fc8afea0b8822e00f694ebea57c34013c148211ebf3a89b18ec18e09ceda6033ee3b1becec3344643c7d350cea7e59c626f970ebcbfbe88e88ff3cf0b6a940873d4a40548d4892d4706d3f2cf94453237f998e25de3e1ce00113268a37265ef063ae79e3d5df03ec87be4b6c322e7149ba8560bc7e5527a596d2133000a03a32ef5b453f88920afaac87f77e7edf0bbc154a67db349ce3160edbaf6231e867cbaf85c9dc4f92b59848b1ead1f5042a9b1eb97c422c2bea6757e2ffbef10dced8b67f2f574bc4e591fe312e270f107c3c7f889d5d676d1506cdd9344add043ec17039329dc5e33cdfac0bb3884e82188327bd816d6581e190f91f79489802567e8e99c075507fc2ec90b01a4296bfd71760c2054ee86562d99b470ab12b106661ba66da43da2a258f29141c5d20ec4c8eb564f002cc2aa0f3c92e67bbe289d3ee28b8415751e829d0ecc1cde149902293bdc003364f25b1c9d0da50a633c42b202682233e1b91a906e6fc2e72a6029fce80bd743adba272a53de022ebfb748a8567ec073ec5d63fa94d0b1ac723b882fc3a9d4c3e21d039f6b9aa4b7f255f7a84ad8f866010c3a47b51513b5ee03a8877684ebd92333d54ee790266effc9293360e3b9ae135ac51b3e3914f1c4a42308fc7b3bb551ea23be3a7437cf4e57da84af5fdf9616ffd8274cdcf34fbfbb620a23d8bbdc95e0e4eecdd46dc92dfa15755f9e8a94836faf4432e9a3ddcbc9d7c711ef48a1d944e4b17e6b627c4a201d8c2e10d407d8898ad1f7052e947cf3a34ebc1b50dc4dcc73931c34d9943bf1b29cee23b09316530dded5d643c98851c21171049472e4b653deec57030af626ddbf0475214141c3601abc10a50348d11c884e31c3c7d4e307dc27e823d8597696baeb49126ce4a175b5cc5b450f3ca52c98c7f2da6c1af60a6e796821d4a3873583af626f298a72f549de055c5a844508e0249890d8f48891578429cedaf97e8ad273175e6f4671b4bafc84c7006700014402f63ae66574cf135b73f16de214f56aebc6a7c92c9fb667e5c96e6ed01a3290ce3cf62cb421f1e007805b48cc3ef505e294b4cdd5de19758a628a2ccc80a3634d1ffcfdedef3abc06468e918567f8a6b678afd2df2077f5946cff400d06e20d17496afe5ea80068c712c520c2376568d79badab6ba08ca9db5736826a362f821725f1dd1b0367382ff564ae9bee27b64b08f3429e2f43aff07817655db6aa050df424a17c3b215017f81fea0d4a414f2da7aefe209460ea946b1716833317c80c336b539ab49c2acb2c552b77ff1956298fc7c8a0f378293f457d2120e51c29fc51beb9d5ad4ccd8c8577d81dc49c2d02a3956c4d50f1099a974c8a989c2b0619bac1cc500708be0f8085b1a8e558df0d809fbe5e15256605437df2f7655e0f7224e0557316abe8fd9fdbe0a4722f4db3bcb7ab8cb300a912196b626ab802cc6b406e08698a6ff271b9eb1401f34c7ff37613de934da3ba084fa750c436a5a93baa0bd5a060ac157d0ba3ec93b071f5dd323420b574d95961c095c6faffc52a6f31bc024be9ef84a52a89af928fca001809bf0636f5829e4c0180e1a78f960c656f73cee3dba58061bbe1a11b77dcd15d259bb3e1b235112b41087b892e6305d2ad0cefa27bbbbea0fc5a44ac494414f994f1b58195af3c16fd257702f3898f3d1de96006ccf37f40221376ac6d4da84f65e8236985e9dd578216119851210f815bae4954d5ddb2977ffebee1e5a0485412330ced77dddfec40eb83753db0824f4adf9913f99ed0ed81f8fff8f98eb01145d246e78b512009ee9f96e7d899d9a935494f8d5603b4ff7a0965006fb52525e29c7d33363a939376e2e6e1b51efd684a7fe0513f86877e3babbdef4f041e41686cfe327e85baa5c1f64879a61593b85cde66b4bb440b8e7d164e1c466319aa9e068a4b4a61900f436036681dbe8397fed2914b1f0ce0471fe3c3c38179acba931edc66bc4ef2d25d3b108d1e4e5659e65b4b72adf638382d853784325a285eeb061a6f9e9453a59670ed6abf1d8a27a5023bc84d4851dfbc700be58f1741997defaed9dee2fd73962bc8a537922c7badc401b1507d483297ee08cb717e930045c85d181d396fdbfc3f2189812a0ea5a9a61ed343bd9219b3eb5105797cf03d9d237a26466274af02669b828a4f234922ece899d62300f17f4d9ec1c7f2e28dd1b14aff40977775ec78a3a5f3c9cfdf742df2b3ce91790a0095c2154af7fa41fb2f9124ab1a1be94c21f62562ff15321ac66f940cf8f52ab3daac778ec6074030e4141ca5df9f791795b6df5f59e5e23c5500f39f4ed709516ddc452ee88f840101d6efae8dc8c88257d5cfcb770de29f4a3f4aeca9d2d3539dd73fc6478599498a41a99473e12bbb22b999da10aefad4b91d5add1fc3a9527f4a087f4469214b9556dd6a3b562f65657701a7a05546c3ede4a52b6f4b202caf48a825f9d2521ffe2e1f9b71c611f0fd6c73524a63b57d761cf3b09af6c0005ea30dd43e907674ecc6890031da44b81db37cb58caa8a69ab4aceccea9b86fd346485292c686a9cc12f37148630eff97dbf4ea0acc9dfb4dbab05d9062762f6d644451313dc1feb4994cb295ba16c93507a40abf61d1d1da7892dae1889bad00a6ae5243f221d654b95e9bbffb4cb9796374c973ac3860539d11b382c84e5bdd8c0e280f6fbfbbdcb8ebcc89ca34db1c64c903e2296acdd5fe46b1a3d36b145241b1b517ff6e8a6a747703e2867e953ed6ecd1446c3f6d7ba66fd64a4c5de208d9055cf2b1d256d5566b577a96acabfb0a0eb37210722f077f57258d854a1e3a0b7b7ddae2089e8ecc643c8e029ced3e23a73104765bd415c4db33ab06f2278a7024e2f3b7efcb9ce775019a4a409b08a8513827cc7adae10606b3b9e78fe6894ea8a002f3ffcd984b31b9682e14028906a1eac96a7a8d5ec3e88689138c5fbe699bf5f4e801b77b6a7656881db6f0673060a3a41a1ba58ba8ebeb271987d1b8378a605ce0d7e24493af384031f431db83ef0430e8bc3732a6d030268b71d13cd50d9bdb007605809470e882e0aa12af6100fbf7180f7e2f74d145a6405131892c55a5f39b08d3a740102a25e1d1d8aac00487e8a185c19ef5aef0e94c5bfa487770d55733ce7c27c3fa2937b0884b74de5a3c2dadf4fc7564f5709ba60f6a26b8839b613bde5276673c2ba402a53a1275dca5b520dffb0729c541b9b3b7f660f210bef34fc0f9d0d04bc2eca063dcb135589584c55f1d41ae2b064f0599977d73e12f9ae7a83613d84ececf8d2a8401968544762af7ae2a06b7ac791f2742d7a54c4230e8e731ee3023415809230576a55c10637de48007e6e876cca3db3180739f86c6afea595434f7936ad6e2341686e09269b8adae2823dec570933f03d81776a69a169f19f859523ab3ddc047096a98cd5accd03338480850d609f382096503bbdb41fc77b2e29a105d3de09c7a7fa4a67d5176b44bdc5724581fa8b9b3ba76e244f22a76b69ace38cd8389d9d0fab6a5fc67c0e1c636f95b031a45d8f3ea06c0bb26fa6a43404dec8eb9ede91c0b1b714d88ebbc6211515cd5cc018590cf481b78dc7ef8ccdb20c1f1a16202b03741de16b1e96ff7deeddca3fbc981e41d15cff85a6404af642e97e857c684c8eec31e23364962655c01d805ca3ade8c4b59393654b69a0ee67771e42dcf1764bf1a74982570787f514c86d26cf9d8d81d31dd74137d11f3a57bb467f90abdc7033d93d02340aee883b15d49b289f6bfb6cd64711c0f1a38daa3e304d75b742dba0474a7c7c1091cba8ffd63c2760f35615fe7676fbd6217ec98cef9152ecb3d1001160881a634449d8c5b212f5820295e6ba91c17da3c6ca73b871ff7255039d017f664f959e019bba6a00b9a3180e109092796a270d665c86d6881ce0b11e9d6f7a5bbebb2fbe5e12360a9b2a2c1d8496f26c8581dd38547e8008b30cf230c6f91004cd88dc91e3de3330d7fa3a932b3ea93ff4f772ebc38e52f234cfbe94afbaf32cba7a3b2dc418b05c7a51b2caba5e6c2356963cfce8566eb2ea6df1969eb8fb7a5f1038a0e991c2880515797f44d05400f8ca426a0568f96bfc26190937b2a0cbfea19370b0bfbe506ff7680951375c5d47199db32fd39c55a80ef9a3bbd880252b555f002a93c19813cacc66b2b5e4d88993fb23b4e804263856063a088cdf38af7d8544b4482841436de416df6c3131db691d73e12b6290870eedb9afc7227093573fcb614518eb658967c4ddcdeadcb3da59b35a3febd02d410b01e8b35390a5a89d12ecadf7ccdf4bfbbf0b6a9c337a571890483759499ccbf37d2db8a0e92382032f2a60f1962db6bf4a48573826e0bd59dc0350682dc4bfeca2c880dc176e0da9c1455d7467e8a9c2b04e4190870f1d2c7113815a3f152e71289fa3fd52dd081a3f2880b4cfa3c0893349f1dde4e69b385c97c5749ce724af1ffbf39c4f265cb585da9028e8d72a8dc4e66b3ceec8bb375e7b3c7e99a2610ad5312078afe6f52fc4d0620b754945bb8f7dc52c6fc06174b90a7447af32a8988254e7f30140f60fb05cb1dc1aa250f255047311d7fac55450bf4d1f77a0f5a4d254109354a204310cc0dadea22abb8897ec2db551dba7ca1366e85cb7daca2d32474f83532891447f996f994fd9b8c68e2778c26f28ebe0c1f2e7d57f059d64f3ac700ffa26ac4cbaa5c95741267a67fadf6c485f161135f49c436a56e0103240f0752cd3d21020ef0e82a8ea572e1db8b2d13db42fd67a7e207c7a731507afdc7bc9edc91cfaed96c4acde9439220c2f704bf9c05e9cf41c3bbd6b0e84a7acb918540f8a285bb188953391f46db84d8ab030b67e992efd72c1f625bad7892a577b086e70fe1ec15f06891dcecfac6dc3c4b31606f2d98359e56a97d1fed1e1f62a6d8d0b5b2543321e301faa9210eb7cce049c970dce887d878831f45197ba9e2cc8132cbeccb597a343fc9915b1bdac089c31344435a04eae2969927e3555eb1bd348851bfc64ff833c5a0c9a27cc168b13a1c5ea7a763d7c77368a863684b29b499cddcec8f6565fb4a5b150a4739712d71cd789c4474a3fc698d3665dce75483721cfb507e10072c68b706ea3043e9877b5dd02b965e373b50e3d37f9eda496a50c189152f11a57fe806a3b1f4337c19fe610e64eb513d5c01e38d51050b0462d387b0f4dc6145d793b104e7ee987717d0ad37a813201d438d0b56b279aeb58faa230243f539666fc3746647122970bf4e2a93c7a68bb104a33136a522140ab04eee58a6c61b6914533998c300f89261211c7cef2f959ae54d715bc1970afaa9ae14e9beb0a811fceb382910b4569c514a020a8511c6b9c5552f85423c5a5c2dee545ce1f3ece55867dbdd80d4d2559b97b19fa4919b22f8dbc865ffb941c7483887c9666416855d21caa288a225717bff1b99395ce35a4df324ba562028d3ee5fdbb6ef72b821e3460c305bfb6df6f3f3878c3b52d9f62a556cafe6c6ab2c49c99b53f72667e3d9cdb229a686c51abf4e6907986bbe722c2cdcfde61dc1cd7c657637f193405da4f661559019f2afc9c79ef2cd5135846e3c0ca4ac199934e8b55f8ab3f276b22b09abfd0a61ae08c67d1a6441b61d602b75c3ad2079847e0de55610402a7674df458d25b149fb754c0b0f907f2e88439c7522a57cc05d655173d55a004701bac14424fa5e96172bdde41f356d47cb0126457bfb99abc1ad3ac97f54986116786ba3f5d307f89c763328e8fad48090fb9b3a5d3b87ed2d2136e12ffbacc6d91bb05fb2c56dfb4ae7c280974339c0a4ece8d78a3998a0d0fcb80ff891f9c3e3e615e64ed6b16737aa9cb0438daed12f17242938968c567768ec2d45a00278db4da552ed002f1c9c2446f383dcc664780fbcdb9cbe4d48f58f781acc2f6a53b7522d0501e746bb11f72ee4218ae23e106ad43337769676790e312c60fcc907c21404b855c2b8a96b37a0621897480b0e11a6b504d65da87360074028ee64457b12420cc7f600ed98540fbba03d12e94ddffa4e0bf33dab9230817671726bf27fa6605e931347f4fadd20354c876bd02a6ac2db9fd68c07b4360e0a03492f11d859af1e125604bc04a6cf41d8cbafc868365bc330fe34580b6fb9d79cd7b27bbb53ab8827ced5b6953683aa3b14efb3b6a4950ab0232b62fc5b1886769f4dc5a406461d938a34c7b2bf4855b111e2c55589cb40329293222a26fdefeffbc68a5f0d649b9c41ea39a108b6c1d5287a497048fe72062abb7a9fcef4678590eda1cc0f98d3b85c8c95e5484e6a5d17a48dddcdd176b7904954563e27f35ffdc75923cdb1f387f1648d5663ec9141d3d289454e15e519261a62d76acc035bc7a51b03e682dd10bcfadffb0b0466ef9cf493d83e9b5c3a43a3ccce92e61a0adb7a270f05229e89c3deb513f6e0a1afc4396ee12ffe6b709bfd1405938923ee3e47fa22364dea4918b5c333c63c365b374a9d07e6362a51797cadde88f6100905af46af83072f11aafa2823ad7c8ff5ef1d0a2a16af30acf8c47a8b8c1d675ca6380c0d36e21fe2fa2800e507e107c38149d34948748e896edc1dd2617b155ddb155eea55fcdbd92d3571d00a3dad44b8a05eddba6234409b7856ae26432fa27b9e31681102766e4038be7f5b250e3dfcd4846e92fd1a7cfe05271cd986de28e9991aa7f6462f4c90003178fb8d1ea6e555c4de647359e8f5566caaf31c32f7c74d5f2fa25e0a620f04c50368bcf0c2f79f923d52f583be76ceb7eb90a91277052338a11982b80421d4ea68dc0eed22a51117efed7db9179f85e4dd5249eb421fa0fe07d42fdc75a7a552169a892a8e90db828b0022e3b0b36bd29cb5776e42e5baebabcf1b189ca47673e99dd1d5da88d667e4b909bd5ae386cb93215bd6a5d6e20af8325ca139d93fb6d8535f7a72130c7f1a3cea282019bb4d735a7791b6bad6ea9876793780c830c949618d29de62a2189ade50365778c4212239582726e84bb699344121116983d8a718dd03b47e0db5d7bbb1728b88b992dd017790dc75eb203eee1a0f81e65199d0181d4e1cafa811c8ee9e6780b609d9eccc7382e9e31245d11697b8ba860df0d5315bdd4384f2287729d5386d523531064ef3a3cf7a54db5b0c3a0ef14cb1f8e3d015cbc30c7eaf4af7e6a872372c5e1702a303f5044e5180f62038b7bd86fcade4aa62453d65fcd06f49735480987a5fe3dfe67d243baeca50503898d90d4dde4e602fef93ba10fff61104d8874a7a1bc51638512df5e671bca8d588a161fd7a806a11c8113c3ccc63c330fd78e0d5140f5ba8f6150131589e6132c444b593e191f6fb81e7560a9600712c1a2f013e2179bc421add7e85612e1ae7c34fb8d8974f2a2ed4b293360229a8d2cb19af3b8ac73d6f7ef6bdeddca2e7a84a00aaca6d326c23bbd30aa3f834aad1d0c7001eaf5d19a7532fa8a32ed7920c1cd5100748433c207eb222fa83aceece6fd5003c1fa83511f1b54c33161080e77461bc64a34af25182aa5088faef33eda1de9e93d25c991210f308c8992fc8d2e2e769a6fea48f41c547c8effb1896cd46c820c9064d0b4c7e2dc923e976a5531a6ce329fd2f5092100fbb195931048b1816f9ca01fe863061a8b5928a67ba40e427e938cd71d811c4bceb3037c0ee8d1c5de6589f7c940f2b84d3e72dd1933188c46275b0dd1ea65306b3e8f1c21bb9ac1281c195aac4146a434861b59de93e899e78423ec4f9f39729e0291ad26d2f578eb5f53e40326df9122a078993b95d8b04464725a70b037120162f83c182ecfd78465ed941e5c418940e5b0391e6e87fac840c787a9eee45953a9c64c6f389a2ebea2d1ce02cb10f430373ff67d305849fe6a1997d000277300db90c130cec9beba329f2b3c37983e64fe74039911f2ec87d74e19d0c5cd904c10ff20f76e57577baf2a1e806447083135f2b3d394c196f3cdc557e41606a7ef055120963241018918f76454a92de4915e336f768b744e12b6cd6e2688e6b31e7fd882312107bc98fec14c216583a9aa8100f8c3287d76cba62b3870f4e59745c87a48e16a2f4a3a94f7c259ac21547785fa02221f94e09b059805e3785f7ef3c82f2c3dc5c20de4733c38a38906754692151d4ed834f2327a412b9b0315d6bbc2877269e6cdf4ede3e7522766d332e17017e2d85f1dd9dfb5465a5ac0abd90d1121087faee2754d218171798650da82391e836184d0cfc0123bcb327d28a844fc35f06811949c24c249fdb90ce6fe0107179d4b091672e6daa9387d9879ed71f80b03913cfe257691b38ce19b242bcdcc475fe97f7a21dd1b8ea9a328ed1aa57682fcf5c43dad905de4d55d8b3b219de0c6015484ca794e47d90b8bd5ba2fb1c58ada84e3f1e7021338716a9582abfe42ff8b6ca79ad5ac85ef9ea54a7711b35daa8bcfe6c1f22a26bd6bcf0df2fc153432ebbe44c0e21a8c292ef83fa074da577bed7a0ad4adb2bdb5a9eff9aaa13d2cf35841e0d94601fb531b9cd7165537c22a1bfed558298b48181951d66cff62e2a8112a6dc35304c72f3988749cfe8df5fa0b8dfdfe21392a0fb408711e6642a40e5b550c21cc4bf2f075aa3e5ba57311c08148817c8d84f07a53b4034bb0e4e6b4daf565dbb74ee8c0559c3f5e8e354965470d700a37dd156c51eca2a07300a07e3c89bf9b4895223a3d7c6217c84cba68bf7c44e66b06aca9fb562c6fc120ab23294b5450ce2259f08bb5a8d872601b59c2184cd0b7db6a2fd6c7172f77b337b08ca043afbb7965e686c1945b9918b15fcd8ce98eb14087aaad14f3f91e61ff042d359eadba6b2b15132b233b99439cb3807ecc69d78d66fe798adb0d6050ce5290c5b706d1274fe93f5fa9791b10c3236e7f6aae7b0cbbc1102cfb4bff36b9a133cfe8b994383cc4a11499f89c5d4d9037fa1d2fc153d6bda724ebbb6f5a374f11a1588a706405797c5376008765ea70fd3451bfa79806732718e005f3e1388a77863d7ff8a1f1d1bd6845bfd73edc4d1dc304ba2843a4934d3bb0fa491c3cd62e063e644e921e09c84d55c35afe13434000d27a635a0d869f5d1609f59a568af06f434796337d520c4f928171757f86b96e43e3d9992ce42c4f10ca044521522d321bfc7abd915075fb7bd26bd107da3413fed8bc4152fe214cda777ac378ae23b2b99ac2d9cb9ca1a67070709da619b527c0c348f414552a58d46e38e90d7246a0cefbf2aa0042ee07407ef5e864b1e2bfaa113232a920a3b391b182f8d344f302a04006538c4351c0ddfdc8940e23aa38a5b421489ecb9dd46d650fe874227971ce4b2fece41404d19b58a908e2852a8dea9f41bf3772b28d4556a70916d96e39ba44ae25f51efe4c8cd96dd38a01f4eaf94ed9a2aa6aa24c5e7256b4e18f5968be15b5f6683c3fcf8831bff74354961f353bfa2c5eb9ca9a184a2cd4fc39a3f35bee5b193340ea7fe5f45fe714507fb9706a3cacef996649c6948c81c925e178bcc1a53ff66e2fb2041a056fba5a29f69ade8ab421f9a1f3dfab0f029a726a50a9c69434a9fe0665d780be14f3ec99d7672100ed0efc7bc0e00df3d441933eec30f94e5bc19ebb30d665efaa941430fba1c0d20cf177798e42dc19ad44d13bbdb997523e6bef446b25edd61907f4c20b59cd51d98c7727f36f5e9d7abdc6a5182fa5ba20dd04728d66a2a8a17e4010e9a75cf136dcb96db8047dede579e2fbd7496993c39be6e32230ee341796c37ade3506679fdf31b1c1604881de30e91fadb3ef3ed19d12d8ce44a121ddb7da1883e769d68e9884c6826470171f2d72cc64e985e9a096f8c22f6971b29b1af7121d6da50dba0e8db47229cc86c93e6a5b914d3f0e44557ebaab277521f9f41f52a27de0d11feadc4624acd51e7c498fdc57d2740b10117cb06fe8aa87d4f16d7eb096c43b479c3270eea82b98824ef67b59fe3fc715b13e7d2b836e55c5dc8d4d160bfc233d4b067d4e5f0e9504658638f3d5ff63399805ba54d7085be1f44121c802ba9f22b103166e8be5b153ac7bea4d5fd704dc43866bfa061e610b52e0f559d0348d5eeb881277a8bb25bbe6e399f80c2ea24917697c73a73c514c4fd2a058a92230c4c4261b9f79bdf272152425075831ee5c02cb07729a54eef8fa155f1c6042de405e261c15ebbda698207437ef374c490b4ebc734549391da623bbb3ee36d5bbe23901883a97b2ab4f50608f9df3b5c6cabdc25b55ab23bd2db76a969d451f884a94e569d29f36286b1e46957dfce1400461554b1fd82e1046cfdaf1d533ea79daa837481016067043b2da416d210d7e03e4614841e4dab36df55b72df3b032c34f50bd7b0df8604992aa554d76cb66417ecc72d5b708c292ede4ca49382bc99d7d0ae7a86e23b25a7b381da6d6e2140d40edbd5d09f0ceff619a562aad2692bf5b51d9a23434ef0c7491e043f86d414aa40e714b724062713006e95b5b2e3d2c4688bc18cae10134cf3814c1e041b05412ba78375ad89d17b664540669e0838f4c2df941cfa700a682e80ef9b9384c54db8cc19e7478a94888fdde0f4e438f5fd48339203e087f3584a47b0047a6321d0417998033d6214c114791dc74fdae37bd756a40d420dec2265d5ef23a14f8fed44c9c45b7f4cdc507c75c3ac3dd578c6a64b859727e0028bd18013c246a3d5d9284772f205e8d6df94be154e501731739bc8f0dd9e84b82ebb6d3b196efebe7fa7745d3c54bb56d1a9546ba522120e845ab8a610c59e0fdbf81949baddc3dedba944d650ffadae2b20cf1d9ec03a225ae0ba3dd37b782d851fd3359c899a653bf6a13a9537895aaa12d7c732c1882dbd699fc515be818a86123fb94fc6ed05d1e2e7406d3d80b7bc11abd3a4f5fa498a56ef396f19cab2fe7fd43f91876ce8515b6612ba2ea64c73429b59a79910a8db4d65c4638c89967cf25f31b33989b08cece43532ca74a39db58e4e97d1515bbb536fcf40ed9a6a51637e879a7afd902c35184adc9c44b09af67d021b0dc436b3b0afe87808f9182f8326b4471441701a0f3090368dd9ca9d7ff6eec29577b9cb837c73a9d84941f4401ed82520161d2e014c46d5ded4366af79ad5852afc0acc97622bb49550c9c77082499a27fe92210d00d281983f3cc7da9f2e320ae707cd9c9d7696db78fde5d7406a8e6bc04ef8b9d6ba24ae07d02e7a4ee72e38515e7137a288e8d45041c14b9eceed39e8b24c4fca74046f7acc78028670251858ba546f97542e2809505805b2b3525d447c3592ccfa2280cdb9849d371d6fb69d0284e6d64f6462fa0ce4c3e8c55a406846b5f84239c41998262496e8d05f34c4a410ec6e0472bc1de43edc81375e532b20e634834867565790c7d033fec7d8f7f110eca2736c648fbaa7dc0e2783a02830532d5c77bc20ebdbafd843f54736648b9ff76848d2e6146fc2fef855673f3e6932f48f2562b5175ea6375c824eb2badeab1fead92bef90eaf73bfc2eda86104f7013506e72bc05747dcc54dcdc78b0b2ad2509feb85a8fc0977aa71c617086cabf8fc6a22bb6beabdb5a12e369927fc38d95d5ab1683be5f5df4de2f809e4a0e205990943dd5b57c139d16ae7e62636f55b4166e06ba6fd23aa9591601dc4c8b8a7b3db085683d9009b7f16ae64e1d7377cfc6a5c12a190f8b6b2361b2b73ff5ba46d2e743a50e9a6b07c88b8bb074b6c360959c82b8d6d80dd51c1b5915195743d0496d12fac4c0b9fad5455c78af28582b64672dfde42f4f3e77afce2997375ea70c3d2a126096e4b1e65fd0231cad20eeca98423e25525ca43c20855db7cd304e7e78be57c5a08104dc50eab58d17b88892c385099e4be842c78cebfd3c456f10729078133c72d8a42eaecd6ad638bc773bcd012efb16428b47086d7b2d13951bb23f5f3ef1514af263ea44c550fbe65d771055f10a4ebe0a40c0032f565a23517955b2ba7374d6549b63d066598f7ee7ac4f6fb43b6a76c50a739a47c55f9727f94f85ef38c4bcd207c218dcd2a7eeb576772bb627957f844f36b68c4e0f0b13d7c622b2163a81ef6da6de289fc69c2923316f450609fb98918d22190890b15aaaa582ffcbc5d1c9a5a8c1672b9949d03545ba7f3701a29fa1d0990dcee8a1f47f365d4777c610dc1ea67843e16491f6e4cd4facbc3aafe229e2a380bfb4a1fd58fca4f11d1386b95a605568b4835d5b9a39635fbb0448122436259ebfe7e1a6a85d7156269378a06d6b2d4e98f0584c751df3d3fee0c62d602858fef4a2dfffd91ea497dd66b2bf826c02e406e4b982c8d73b5674b489a203a32ab94919dbd6c6acd3aaf39f319c56a803b87c80f2ef9a02ec2bae8725d703153aa0ee83960641374469fd89071abbe1c22ffb8e1a4a25b6842263d72194acb8e756d6264fec8e9bf9aaf182a8491788b645884b2490589b8fcfec749dfd1e2a3fb53765226de61e2c49ad632e41e235630aab412eee56ce9499c8f67e1bcd4da9ff0ee650e6f5f8a96370784ff72b7fc6d8f2388462f590fad319b91240ff86a50298c811a05daeef6b5f090c4c1410ddc66f31214440cd3893266e38f7523e030fdae8e7de313b014801735429521b5e5c3670c453f6670a62d73e828a33b855281b34ab7b7a0d4e56c4ce29ecae180603e19beb50086386ab3c7be790673b9c74650db8feb6cf293b762bfb1486d30af50ce943241ed04a8107dbec728687582107c2f6965403a427cc5541944cc992a7d8566491139323600d4e64467b9b8d7f150eade9396bc8b8de309be606d849d06cfbe20975f4d6b8c85c26e706cc600de6b04ba43e4692a5a99eec99cc3c6d2e6f6017ac0604024ed81867bc3a2a57819511aaedaf591c318cf841c34ee2e83090ef1bb03dcb2eeb7d9d882cff3969b082f36150cdcbd7bdcb177a634cff5f6cff6ee085c64f8e941f208d5b91f86655ce3a3d7c4dced3ed0feef8b61b053b95f18d5faffe650012c7908a72ff326655e2c0e748d8186073e4ade4f227de145b1f8149f2785353a3a3cac158ad2c351ae83857b8893394143a83af006b7c211447afb5d47a41e5be85543b79d2950b0150249b537291856be5dbef5efab767a0aa6dad78807f11f765b10beafbd1f3a84dd70621177b369c1d40c96c7a7de84d8ccca1d2b8951386db40a10c868ea621568de79ef1c88790ffba670ba44c0dd0b8731ee785274a8ba6afbd8828a9d298a58d38a2ec6db74909d34fafc606f88df98e4b34fda503b827f8fc5568660b29bb5f07b5e9d1357ea21285b1410d8ea4a2ca10ac6bd23e05e6f20b6221f8d6dada0f7a943dfcdb099020c9ee0ab058fa0760ebabcd10090f0c77f043045497bd8a83a9ba308eccad806875892dec94ac0232c92f568a64dde80a0557135a473b15dec1747f8d893c8153b1f0467a0cee6ff97a15ee1fe0356b248a8a274b466f0af51ae2dbfe089689100726062d9229b0818fa6ad2c4b0cabf9ee2c6c8fab55bdd43a5d6850d2c6efec9898b49f3bdb29f5a9c664182f4c63e133fce0ccdc1dc654f43b3f946e34ef3c79d3a934b21cc539a51414baf8ff724308cfd74d60c87ebc1388ec8ab5002ad4e6aad36335526f5d1605748afbcd5819863c7ab7257d85774b4ef07dc1b4230e708a335928bf9a12007d6fa6b8debcfeacc24310bfb43fda526540ea93d3c2663e045fe3440aba3cc9bba4a11383e8d1fe0d8216446452f6681bc4fab42bd5a20cc800b2cde2c98cc873e5285f5c4be4df2edbe6d9d8297fad0cd9d2579e8a8889b655e45909c32df7c8b8746b5bf6ba9cbbc6f218d574be0181d0a8cd99f72729dcafe713f82a819c8dd98b00a7205f37180e47cbcfa69863146cb051b493b3a6bcf3a5854782eb047db6556e5da23e5e5f5322bde876a1f41868d577abb9e8b87e1b044cb6d6b09564f17c1c307c9c2eb288db99455e401f16ef45c88b2c08bb35b5b04b6b32e1cf23e221440b4e91a40675180f0e1fe58b0422cd51eb8e5e4cbd624241a32655142c135d3d57e09bdae63554b02b3b4cd86a96fd3cf1e75c285958a6c67b49ba3ab1c2910ae49ac17af5b9b554477ad3424bd32baa5b2541b991e1de27f7b4af4d0c62900b3b0c3f03764436e93a66debbe6d63864d4964e2794da11a1a583f2fde91a8902e668c8c089ee17f153ce4a0fb68f2c32ac6f96e6b235e7df99589a9ebe44ced435035aa04c21ac2e5046f5179e64a0d183485005827737e26fd865bca1ef66b136d8983a7f1f6a2ef3a64d2f50adf9e3809ec2bc703a0a8c362b17a2235e7187ca04c3baf57955ae7087fb4afc3674586c50bb06b0ace48efd80e05be78755f6554b30839599b41badc9927af6c0fc1c7f239839ac0f687ca287e00bcc95c721079262b1453a17a1821058b7b57fdb1fb13edfec5d37401e39f5aea138679a138163a6e3d8eaac7ece4215389e9d2eec15ae67a83c0f626d1404f946ad0e6295a16c43e2a08feba6070afeba5db6346b31e31120ac149ac206f02d131653e6ab2a003d0e0fdf85d98459a4773c5a6794363210fe52d86a1ae97b3bd87a2e651e5494a2b77ee6b1b665dffcaaa98f6516d151bf7de8813b86da695a1a9050a5b3ac4370bd0884bf84479673ef764cae4272dd0e59ac47d624f205eb845d9ad80e3e4bff180aedfea18b3810d3a9ff2ac618d779caeaf9363c4f9b616ea6a44e56998e0637d927f7dcfac4aa5d87088af831238fa5a479a94e8cfb423d0137f70d4e122b40008fec2cfefd2f79813c69cc82080ac8b13b38459bfd30c092d3b4cf4f8120b33454b7847aebf56dfa6350aafdb37a657aca6a09faf706cb322a7fcbfaaa59f22efbe9b99a5820e566b97bc009b37eefb1445428004806ab57a35539bafe48a776d947ba7753152333717691077e899c54d9f158bfd1124486d80127cf14311d339c8b899cb1016cf42d85cbcdeb3ccf864fd9ff9177ffe82c18aa4b592585f510c37dc1d8876dc4db88e0b270b651e0db81370afca3ea40bfe633cb8e90d9d758215b8eb1b1e07f138cbfa8e500100df8db1ebaf3c1aacba1787613035764ff645e8b61064f974fad3c3299fbcc578c77e0253e01c44ad7f3393d3df8a10dc8bd76a7d42b4246c30a0ccc59b083390c83a5552ee5a196f88e471a9bf936109d4738d076d4b3ef6d36631e4322711e1a805368489fcfb758a3f5086069062aeb16c7547e9c8dc7207820038f3c468137daa85705c0cde169304ae0873ea25cf8b01da998f2fe27ee8a12b745c495369df7763be2e89c0ed53981956bebc13dc3ba83ac5265fa95e63f7fc4c39a5845ef0a2378764041cbb200874eab48bdd74b591b40d311b8d5c1049ebd22e26a4f6399283db168451461b98044586b131ae8d0562de20d330fe6b91dc70e2f0b8a1b3b9253d8363542882e43768880e7d985437e5c752caa027f7f9bf2d21a6046b851843c220621062182d92abe237d62fcc72d5b3e69204d97a52f69a657f109622fb39f05ff21768dc50244cd28c195cf76d432f29cdcbc65b7df6584e02a37ce6ee9099816cb291772b060287dc09c0673368f45d9ebb540ae2a0019fdda45000b82fb95dabf6664e389cfbf972d28f867ea34d7f099a6e9b47fc68c99b68bc91bf246ee571c5db6d56951dce9dd402e6fdcc7823cfc8b2288c32839e1d79449fa3cbfea8a07740292deab9fe64ba8c3d3cce1d5a46986bf6dcfb28f22380cf1f67c3650d12ba638e2aa0b158215c9dcb2cd78a153fc7da6eff016bec13934c9b85fcc0fc834ee48204537fb7b7d371e0bc895e13615d76e046608d9661fef01d4a68c63d753c3b9b25991b265e8c14267f75a75abd6369313e5e597a391570824a75d7071bda5e11144ebf815631133f26a5a613ba657674f1734eb031ce9a7fbcb3ec7b02cbb150199275d2819da406d853c9658b0ed433317e8f7dbb138f84b11d75f955c7b5fff9fac9439de9b673380b67562659b9a90f781412d223d19798a53e6978f6c8b13d0a61ccda7f2b42ee6d08f11f6f5e3793bf70caca82700b2db9576ac0af0a2ff5c1bd12b10773a67167e529adb9999865c6d464560ccd646beb21e17961e2398a4ca6316d52e2b9dc580a5744e4fae5f47c47384c99aafa781c0c2a500b58273bfe2dcd9598d06327aa2acbbd03e3640dbf07de04726906b85f53bfc9910d966f8818f2f2204f37e113a2a86a435311a6e275b45a43e14fec016cda0b63bb84c4d092c555a23aa9839023c6d4ffaa85b49d6e3278a982b583c364660310a8c63f23edaf4504a986bf63f6cb41fb195e427705c100906b47696c17172e6451029cc4085c8f5e7110d1f39512ba0503a9aba067ecf173ff2177fe0a48037ebaff8f746c35e604bc018e1fa34ee2826eb2826b507810c3a2ba73f238d518975dfda4136030b4a04a8f33a707fa04c6a70f184da22162214e0232d819566c53bc4e3ac02ead593d36ad87fc8dc9869e576d361242461fb896e4038a77c48d7dcba37f0e10936bb2ba7a2d62d5abc1ca4c0823c6973831a0018ea6196f69932bc8e4cf64d5d7469419769bdcbf272cabb07590b53a42d681bb1ea3e9273484b8e74465ed72fe3e8ab511c81254735191fc522b7d90959b1e97b5a795f665c1af51960fac75e79a5954d7cc8bc78b075824d399b8d4e01259aee264fd2a3fb9c2c5c2551951bf7b27c0c05080864628c50f65809b2dbebd7c5680912adb52953c777e81d239a7447830b8a0db9b2ddd2ae3406c52719ba414819e7a7ce3ab3c47ac341cdd5541e3b505e967753809afe91e8008827d05abea796b909b1ae7af8fb479a0475d0ed8f7f95e339138b558be245397ecc3a6e0f0eeccdc437320efcebc6b918de0961e4a2d28f1b232b8538b10df6c86e8a57d7d01c5e7bce2f0761d402119386f78dffd12b1539238a58897b0960fbcdee851f8a604762d7f435bc335a01b6cec8724ccbc06683ffd40a4380fa72a00b68f6d3c099e5c4699a04279a07b3f123cd0e58a423023b166211f4236f68b275ed0e4221c9ea7e60d7cdbed598236cf32ca3560af7357aae05d16865300d2321b3baa2457f5f82b8951d232f6ff6826cde759b12e458aabe0e14356239165754981e890e8fd7563f65f2fbb55a3940138094239b492e0d03a66f30eb6a76a6c10854758b824c929125206f9da2bfeb220360093b474035648924f6286deadf91da57467394fd666981e5aca80cee77c04f1d12c305898aad5dcc6550716cc03ef3c1bf2c302b113d159f63a7b5d210fd4c62234e5f5fc89310521f67c5057f3dbde908673a826b2d5b444902cd2b95a8f6f9c7e1483d7e0b05490e186c804479b8d22e42a4915c44b6039857859018f46ac5aa9e9fa08fef03b4da972acfac9daf9ba2070bb3620337e48d27cc475fe4193320813bf9b5f72ab27599be9e48315c32b67266650f42f3cce8909a78669480209fb16951f9fe535590522e671c8083bc23890737895c0bb36f1df147db471a5e406530203c9aae1a239064802056d67e86036a0209b2b6f86b9ed028a14d7198424efe7eb2fe851be9da8a31c2891d09de459a6f5c73f1382919c21a4eb2791c879ca7ce62386d11e1abd36e62567d1610e8316265c1a5d47ac3bfd3acc29fc8168ed2b1a7b04bb6ceb0a6fdd586d9df63ce2c3a991b6a97331091da3b5e347f978f3525b20404deb8206103e36fa49505d21894811e2fb3aecbeb66ae19219adaec4868052cafe469201c97c9baa25584f961833c9276234848ec746a310e3350114e5bf9eea5b1f1362bcbb8ff6d385541bd17fac8ed41e19ab6d90a4c648e9058cef139add29c23d244c75430c00150f4f35c824d85f75fe7524fdd0cd49ad46ef35a457405f916db86f835d2d195319491eaade15f7e2bbd165e66764d4279415b8bf06544e3a45ac9106909559519523687e8cc321ab1832dc2db1c913c837f49e6e36e523cee2df18af072d7680c179059b67af185e5f6116ca728c52e16aa58de184de65ed6ca34ae3fcf9493711c3c9f2c69de16b9b30a83e928b826feb40c885fe64b3a83148596be7c045d951413e874675bbea8d4fbe0f3b5bbeb2837e942dcee69f6e13f8c9c4ac2abbf28e3a1624a2413252f9e1f57cbe34032272bedcf87df652b1ec8f493b4e9fe12bee5d0dc820c56134e3b78abad84a07ab03f9666aa3c60042e73eaba3f2a5b154fccfbb98079c43b0b8a0ca7873bb9461eb8cd9b672c035a496607e2266363d2b701fc45be2fa046eff741bd7b5e4d5deedc6038305dddee684a1f4814a6496137a4e77a4a2d5fad876ee5cc60a94a0544fce66e4d3cc37ccb809ae1aa91cf9df20d878545c8598fe44fb53b42c0657e65fa363b597cb02f75675347fc7b07ce71edc212651dae291b837e35de81b37f3b72ce17c5ebe37faead2755146d209e20ee8cb673ceb205c6901e28272a2a30d465cc9f549b2f1a80b8af946ee9c6facef0048bce10934282cffcadc44434e0e37e61269d54b7aa3b17ceec7a8ce41931d4dc7ce70bee976fa0ccf88f6fbfc63edfd7c68d6097ebf20709b31e73c87060cd3c98c38793d0b3bbaa7617ed70275e8194f2e29d2d4efc0be0273176026e5750aa0f7cebb785f78ce7db1f07ea92e228b40cb1e7fef2738c8f9b01357b8c7688b3a4c08b39d4e89f10f41d4146650ce32535e0cb7269b88ef4f4ceef92bc026161905049d19eb71c0b9dbc5a3d42421765ffad91dfdded7882184c32512fa31db207837f48b19a5451175a2293118e2735732590a0f179e67cb9254eef46e4829efec0420ec2495ea5668a17bfe91fa10060aed43076888ce77375a547cfb78e6bda07efc5e081c2cad694ddf569c6fcbdbd7e1984a9892edea94cc5f3a7eec04a5a6906a959853819d8f07dfe3f7aef7b90210c185faea24683305023b9c3f38a1b8b5fd6769872fa4fcf7a7df9d44af785f6e377b66fe60e9b98b8756351c4dbc428a4e8d184faa42992b19fcb946ddc4eb3482c9d0743695972cb609a188b65128c1f6e19161ea66b500d4faf1a449687dd88515ff681b8b69e0aee7f7de4b7b219dd1b479feb0c5755095b0bedd8ccde51204ef77d311e2770d7d8a747c9d022c616d644743e481d9d033f293875f509be8e63a225f9dcba326d571f2437be7d9bf3e7e76fdb098a5d5f70dc48519602287e137d38fe00149fab18f622699c82369604fb6d9dc0967b775e170fd51ff96739938f465800ae6ab1404c36a0f2e9497bebc8ceb17b3d11618ea4a4687d64a672c7bfa2954518b5466ed8b87bb0811928ca3af8e44809ee7d7cddc1d4bf97e4598293e34fd6309a171370e5e14d6d0129b526d4fe5fd214df2d04443383517603fe8a64d08720a6bea85b5c78cf55ed5fd2db502fadcc3b779bd7ae6ff2ca831ecd20c3c473d6599f8c27a2acb14bdfa20e53db8a8c8f4d1d6116a7578ae687fbbb2965039f04a7908c319e4cfc9a6eaa78aceb96c805e85e5ae6783bfe40d0e25b64f15f042c79576e6a1daf00d842509bca7ae62d45df2217838f1ee01004bb3285d18f751a2df1fba14f6c84f9991d71ee85c64525b91b5228ff77eef399ffc8f1b41e045912ae5e3b48a65a6bc529cb2f8cfa090d310ad3e8fd8229035c0710aa0f73e46ded1bd35680e1ada2ac48458f1589a3d7b4cf6605641f12c9eb9ada9497e2fc8078c0ff54536d7ce3478921282a9886e0e650d7623242b4ff3bdb6181c8d692e6dda37817825c09952304a5b9d6597d3f1d280df109f65e4e127810b56101c84f3fab3989b10d44b9e3f9cf58ab0874fde427c530afeb2b998d360ecae6a0d9e431c321c9e74368d9bc418b9c3ff417937aad83888e9ab8d69cc745f81dd553593cdab8c711cf5800f707a5ffaa9d9b5251c3afc435f1b2ca81eede9f9103ab1e5eabca487ec4762972dc368509e431768f1300f2d5951b7655f76611134ced358658a0006447f7e020114fe5ff40126d90aaa3bcc4b65f88837d211d330d7ec519d5e2f35ae1f9b08468f7a82f1518a96289d0a1fd6aac9e4b823be8cb780d8470207058dc6ae15c3a14f3a5c3044f9f4708a28c9fa21da940d3dae375383e3e5850adf4cb83b1da6f03ce3be863fee5370971ea6aa7aa5fcbc043871022ab38906b1f62ea9b72706481178d4fb3055b5bfa0fde452df24aa6248f9b3ffc3ef44e1455a7628bde59ee23e2b0ae2c9c0593a894fcbaf2478761b8aa7ce95210e7bb026b543ebbd7e0f909e3813d5fc5f6f1e199e978f1a512e0bb9db0ba5b3310724fb5acf0dd6ce1006aca413adc0cc43ce8223cd01e6328daeb4b9ba1ea33e9058e576fcb376b489770afc065f35a586eb38a5039bcd1e75cc830e25076291c78b7d57f8677c139e26ea919847ff4be3604290fcd372745452bcd48c02c9791c4e4e706bf1e35321b59f05ee0c2f73c7746973ac99c4f0ec72ec16baa178add55d91aa3767a2ca60f951ec1c753e885c743bf8b11948e9fec63ccc50e51a7cf8d5d07e88e2b8f55a1186ed608191c18f1a51dbda9f40fbe0f592ed7b0471cee3f692aba4f3fffca46d80aa87a561bd67349e2a93de4c9f05f70211d9613a3ef341ea80ce7d7ec428885d41475c945c20160d8d09a87529a5f066ac48bda0cdda9928325e4644685849d29ea57d54e5a006340de33438b0869e833a7a044045fcf6b15d4bb6bc7126bc795cc00c062700cd6055b9d8b43a9261bb833a600fae04a48cbf445e0276504837dab56fe068872d9fa421346359517f1644eb4586d9eb3fa79343c0daee729272104c29007adb78c030ff2b8fcac1071821fa7d602641694cc44c30ce5bb453091a9b26f03730f415bb33e0cee95b70c8d019df81aca753e9a9adbd07954ddde6d2015086a4ce67b5d2d1c5aeafe0aa7c07279f5daf243e72c5eefbb806e04268cdee2c7fbaf5bc97c7f564f96b7d6ea8d016391d961e9b9c26c49c9a5f7e4e9d9e791ba1f94c05e5165da5b944e40f1f3a84502e257446ad4299a4509fe3c8e1b53a035a09f1c8de99c3b73a41d4038f8f64ee47e39254fea657617cbdcddd45c3a0f95a00fa903c65d2e5dcbe421e9b6a4733e3febd04c0ad0d59786762c0c2f7ce407deba56e22b790f96e357036fc5fce996e7ba7d8f083e94fa4075a48d0e7ca86c8dca459cb6aa5abf394c595de189ad170161db154597f2468c35518c89c1e93d68b94eaa53d332a016866ca6250dfcc278e2880ba05413e0e038553302efb68ebae97b0d1234ddb55880d52140a8dbb7409e9af3ae57819d6fb96614260a261784ab8aa16f4145547fea0763617d9086259f19a37c52a673ee3f4ee67479d150fedb6e3f0e537956c903c3dfe0c32695495e820b5e1852ac21ea6a93706b55a31960ceaffa462a5f496ca166cf75ee93f87e46d5a5f73baf23672c985095d2a0c39b856def2a2ea9117f8ee5f147f901c5b048ca40ab785aad8c9ab152586f5208b020383d210168d9ca4880de929ec121d16310858a06ebe0ceccdb0266d39460ba637643023fb8bdc8e4f63531fabce999e233be5c437559d271a014edac84bf87c468a2ae2b200083495c331c6b9a87a60602409d76ed80c64bb5a7312cfb302eef2b91a12ca0e477b31c0cbd1581af5d84330a0c45c06e34aeea1135861a1bc8408b01164a5311a73054da7e5deddc5904e7461e3cfbd074056a88ba76ea741c4ca37bfcb59f116226750b2a7095063fa3eb2d414d05a20d4d444287b60484575854db123ff7de2acb3e8df7bd5d3a8872db16e94be7acce9950ee358a51f317e08459aadd2791a5ac033317775d13bcf405c4156e2422a28c5a965635d454fc12348b0b293c986427400d9a14f33ba3a42a304cd222bface2a049dd8187608d505c40f3e3eb2121f080ad4ed0e86d906d036905f7234a87e7a328133c4a82d9b2a56c566b9c8cc3909990222ba9a285309f403942cd6411fe43ac56b5db885682e8837649f1097ae12a290967836506428cdffa7b40f79b1b3042f943e887a6be7ff452a6ecd2fd9379443e0b007ab3ebd281144ec4b5ef49a49871be253fad996ba9afd09f8f11ab94c3f662454860e7bfe82ecafc8202267833eb048098fbfa43be3bba6bd435ffcbe237fd8bc12ee97e4b58e4b3b004627d24f576550ff7fbfacede79d1d68abb76899a2da3ae621485d0adf53161cd442e01b378c3124b6b6f8dd6c8d2bbd8de095c358a859a0980cbd98138268b9325ac6f7cf402b5224dcf861985e221c2be7e8ac56ffdca48bbd9ad984d1f624ff20de548d8d4396157ca42673265c836800995737b59f91e45a047fcb9932516aefe6e9e93fe55907494268975c17656a11f813e1131bdab12235777647a9840eeaba2fb9cd6318342b8c58a9800851670ce382dd938db9a0cf4bcfe1973a3325b040bdeebe080bd95b98a1b09ffa72691610ee33d27ea258f7d0a30097fe3283346b0977e7b4086f287e1dedb2ce3c37b599e19eda8ff3aeb1cd19248492787c9dd921fd69aef2d15c14d2b44dec162fbb189cf5b6557bbe60cca794fff1cc1019433ea779651786bc3169c1d2c3a5caf78c2b0401326713720213878b9b21cd50c83a06b050e4a989073e46564db128cb3645a159d0a500c4c6cde8673eb3bd295d23cc0aabfb2f37f6086be0a2a58599755a19b55cfcf85021ada1a952a929b44a0ae0572442c05c1886aee684b34310e23f0533c6db5365d60a13f0a38a7656558a7d17b60700eaeedd960af6294058edd250752836aa917f70cdfeb7e507a39669b3c3a069680ee3505a1a541ce183fe61c3ffdb317da5926204bb848d7b6052e54649dd53f8269ce18e3ea4e5a8172eb25cd7e9a12b952f4c6b71bf7580d71caa8ea4fa4856e0847d87dc6c39eac688d5042764ad4aca27b81bb487e8c0333a714720321eb534995de6888a329d967655076768b990a96b40ad3e0a17e321253ec27cde32573a126ecc4790e419c22692a04aa4202a12f3bc8e06cb6c4c83223e234927dadc6afec1e515dd2435b6ee49bcb87bc813003dc37a665e91b06b581654c845810763fcd8bf77f5aeed44983596e97c835eedff19e4ccc5169c2a3012923ae7bd0611a20743e59613a943326dad545d9c6014bdef6de524b95e63292c4f28f831b9bab243dd6bb053a80d07a5eaac9994708ca2671ce14decaee4d6bfaf7cb6109e97199621196250150e2924bdd17aca692fd00f56fdf343a6e768d9ef3e2b52d4642dfd86442206a0f8ef3bb21e88029a58b57a7790a649b8af2ee81aa00d12f625a52b6ea6762459df2d65f6cc97b9338da91e588e002557d4bb00b66d8b6cd1e43c386e06a5d4d2d0f9a627b46d510b899a81a9d975958131cf25b7591ad261183395f2a6dcc0ac7f990104b1aedb8871f517d9bd9257b2e2f26eda6c32e6a06216aa3cdde68afc765bb65a174fe7f78904915cbdc375544eef5a9d0834b107cf68b71739e70cf5c7a1383844e68bc55db0f5d590c6a6edf1f18574c80d59024d273d4eaa99fcc0af97045bdcefbf759838d74d440b5d71cf6af01762ddf26676a222fa55e7fb728b43ade5ebe02a2b73a8220b28863202d6d0fdc2f02658ede1f2ed0394a2d666355605b380df05a114db7c1c980a3f6d7f9f6935ec431d2d88fb23ee28afb81397456816366ecfe01da4506d73cfea8f487acb66ae54f30d7f6af9dfbbf8c577ffc0e37bad4b04893df7956fcbf712cf3c88328c2ee99d313630476898a4d47dce427095c7761e2c9141ce63b05324153d2b10e55fe3ba1f5b66852b19d6dce4c35caf62d465afe16942ce2fd9752ce2b0c86cb1a5338a19d7b1bdc3e5fba429d5df3cf52e61f1ee455586a8dbcda92a56f62d68ae940995d8323921c18fd85f5db22eab98ee6810e7bb3e49c2806d97f150d4a212878493c5c54c8dfb4be274a33a6d58ffc60d7666782c1bf4bb4ee891435fde09bea5a75927e563d1693a6e831fd0ac777c92230ac1bf4ec2748c429b044dacec4d377f5c2754390f14dc4ef87103d9ae75689a5c22c3d01ba7a39dad6daf472f2ff35e07dd6c25541c32ad3ad341a02f78f987296ebe13df2e14da8f0858c5b30dd730cf9b50faf45f5f0da1a33cb3d492ee236e0fe92c53c2ea1b5fd99c598420d898492a509e414d2eaa1cbd36c50be834807502715209a606db8043c6240b28a330623b4fcdfbbe20f9818a11582c79323ee87f3b4bc477b6b79d1fc2eece9b27a862057a8adee8daf81dcdfb6dccb527b66e608ae67f86ee156039d273862c7d9a990656c0049d09bf5eaf54cb09cbdefe120cb75d69c466ec26bd49146deb7e34bcb8e7eaf1e8ceddfd6b8600ffaba8b43ae6c4821bcd307c0bc366d3ab8473af90cf72d34dcd287ff085fd05127f9ab6501b26e455c5d036c878fa0bf3de02278d9e3852cf7c90968260d34918f39579393f171a17a13f1728a4f3e801ca23b3c2ea213db6e0d7102c739f72f7abce10fbf1adb791449889550e512b0de87d3f184102fa5dcb148097c616d4ccfbe798c69cd2876bfb6e02a1f1b718377ab30f6a576e8961448e38c26c5bd51ec3b47b37ecc5f24d247bb9a34d4d9b2df00a0dd4a95a9db5584c8ef9d2c7f6888651da13a55f8731c34abe456c3adfbc11782ed9017ab470b6b3169a6e74101a98358674425f23730688618b2f4909f37b6a8a03bd09acf1b2528873787134fa62e6789983988a8397ea2dd064589e3945e4125c76c320ecbdda2a712093dc93f15aa80439054e367c909ec28202a8f451239df4a8809c2294cbb7ea96f19a9c0c0c938ec76b367e5350292cd205172b9e37de42b48a14d16caf6925400e87034095e922e30dd9860fff532aa6b10dc6029c37e9fec8235cd1a6dc1d9a1ea60ab2bc7e3c5f97b3f24800cc1e2df6422b96375aefdfe4da409437eb94215f6008fb4647387bd7b08c09a8748c8763f1d69285ba4e307bee8b514b27d0303d79c06b0ea002df76f0241804866e76c3aab6da4f84826f702f42b504ee6701694c36bd27138ef983323fad4b4cb660e0c2d56872bb594a742de057d2a2087a1a2c7ce8a0342f0f855c2dc7593beb5406a0891699db88a28bd5f7edc4a29008398408b31cf3676117f1b61605e988a239b24c8ff9a5553b7d8566117d655ba48c38aecc4e9a0f59d34cffe7ef547316360704dad96435b924d458c890bcc6ec85142e2e57501ecde5061355c94cc2916445b97471d6b3310c5d2fe4cfa0bb8a86accc406564e8a0e0bb924fe6abd16408f5dcd1c4c6c63a482487b66db5f68949fd029fe166f2fd0a8a5b56c40c4fb535b6c648fe71a0cbc1813b7b51b6d3012aab9c86f95c1b224cf5352a4131ecc4f4187cbd809fb599cbe481b8b54ad953a44356fbdfc957eadf0d92ef7c51c494b222f28c501c9c7ac971a1505acea38c63cb8057222af7a4886ae211f78a5309466e9227a61f230d71f66f69658c36c2e9bf8a358edc7c64e962d0c8269b2bbb1d9bdc39a6d1bb4e7fb28665b4d2e1cdac572b5b16b0b45008e19d36ad7d16ce9faba5e5a15996516a004611467f0009121e42d38789bf4e59714e73890a42e1f337090505cf6d1249abec9facb252aaf8ed1cde8510c1c3569265dc8ac5fc22ae2744a20a77250b9cfc289bf92bed2d27d0077bd56e6437df73d9794284c7efc9edfef43ac7f25e2ac9d41602ffe87fe12fd90ce2526012ba7a77c57df4a5c2b57cf8190e24475ea118189b196fd9f69f3977d8cc9bd8fa94a994227cd4a58c633e5db41271c06ebcac5c1c083250079e7601d032f0e3d2db9acc4544cd11e834ac600a2fd14d3c07e63736fccb8339a6f3164591b74a270db5a6d8c727a0ba42b9b769d3a706e534e7940ea3c47d2fac7a3fdfe04baafeecb85aefb9c71772f4e90b3d626263455d0c864dd033c36569c96013ab2a185630ff1097db1f8575235589a0a22614ce7b038c68853528353daaeb806435d209ef9c5a90c99e62c08eba706d89aff7dcbff5295157e17fd2da6d1707b5818d2ec090e8907fe223f6215b7693cbe14d10d23c47dcf7d71ada172aa6122606e8dae693c2cf7662d2f087dc476579a65015077e166238c165b56a229a1fba5f0ffd2bea4e9eb5c96d3cb5490df4790eec020e21fc4852412d042e6012819b4a17c5333fcc1a76a83676af3e02033d95dca08fe9775a2924570c2c129e606b37cb6eee9e1c81b682e09d5f9fc5eca9294c33713883878f5e21f573a5ce770f2eb4ab117541dfab366889a113352de3f2bf0fac2d4a74173f27951be9987b97d511c15a139725eb30a854c885543d4e9ebb3672781cc4d34cf56d9baa3b771a4827cc168d726cf2d92ddf90d37180e1854e5e32b393e2a9da9a2102f8151e5aa462736755bef18e2866d18c6337097a218f0750ecad3c02a04844ac7ff7c2d6bda0cebb1540dc7fe041c78aba5d0a9fd9ec7064da7e34a4538d290b02c247b8b6eecae5738183aff3e3a19016fe1d9fb80a9ffbc66143c59f0dbf161da778b12a7be4ef7de559fccfa31002b75b9ff2c0db0ed2e40bd8687ac7d500e2284788f1ff0cfb802a34ae8108460d3223b2cf0c73415cb95d6db483f88b04eddd457bee06bc7a0c5eb34d3f016b9b1e2803d07e6021f47657ac871517739da2b2a598fed7597942a34a1dc19d5bba2a659e4fad4594930d7f4d21fde7769cef03c57baba559e659a302a00a39b1a0163d52ce6afbfc6c8b664f939b4be321f52930c95aed09f62616eba81b678935892e1db50cba33462eeeb3359f92efd433d655eb6a874f3cd2f0c3184113ad69db2f533982dd153b21470dc1fa450c61bdf906f0d77b2411e9702b5ed844b1d0fc2cff20511b16c5adcea1d41ff96d94f2c9f6d7761c8d91e93fcf88a76e593c2c7409a1d645d09bda04acdbb2cf7da315bd8498b9d7ceadbfebff1885f8be3b04c0956d84a83ef48e0e24d169cce1d2f6668d046d9a727c61826c10a4fda82bbddc5108099158493bc6c63bb991982788e93cf84b48fa6a006a4d7d766a79fc78beb899a5dcf02f87c9713f2bdf9516bd6fa40a84511fb9a50638edc5a6ebe876bd47edd528633f40929f94c798cd99c83f0a6b4929bdf7062eabb7df40f69f717dc38756d4d872671aeaad79011b327a2dc0f201afaf1870b55058e92e086dd2b8c12ff5467c7a466bc16bb996101ff82b171074cef4ecb001dee09a70638e3c9d8c579e108c05dc0bff78b80b4129936704f120e9f16745a72e89d37294eee166d9515a3eb905bf75dc1f805b8253814bdda3e37c923051424e85f5c6ebc77ba07a33e5cb08d07a965a9163bf64a753884030414d47f7f8e183a14c3c9988764e704748411d8031a4fae1f0a8c9c7602ae27b3e7a65d3c0d56a2cb2f9b88d944476c7ec4e51dcaaf4cbd0daf2f466793e354c76354a5e8389b02a7f59cb26d8feb6e617df2240272eb59213787175d55634edc32955ad59c870b137f229073ffbdc5f23f8e0e6e9243690c07cf9ad470e5c85b6f12682f2a54badccaa6370d507a125b52137d5ddfb8022c57d0e95155908e8b2c8099b8b41ba515e7aafae2c46afee3302205d4524b68f6b227bb8137fd7c8bed87ce4a73b357dd7de470e0a034c45f08b494f28377888477db616b8d4c8ffe2b83b0c5841343cb45bc4abdadb476263dfdb9be31a7abe85b42b9e1924a668ed3057506664f01e38d1c8525b8eb961de51ff415be312fd6e5393766c5a30035c43877307d1ef0b2b68fd86d12fbca7e4bae7776b0ec6ff8f1ac9e1e6929953c5504b2dc93f4637bb6ae7dc21031c81a6efd104a324c46392e6a0c530626c131cc0a65bd52aaf50297dfa0a78c25c2a580470e8b9013b621a04a5827e6c17c98e8726ee2cbb5ac0af6631f7462e6f032679e5beebf95b3711ea804e89977871058822312f1f2072b85b76728f43300653fae3a39d2852006d523365072983eba4108b2991ffc2641893e97a4a7cd7901d54f400c86576226c3bc6da307e10f19bc97548f8e1296795c442fca64ce7c852eeb8138b72f345d3c36ff52b41dfa645592e3bfe0967e74ec49fb8618195412fea91ca7e964961269ce7d2c19dfcd388d028d6898113ef53aa4022034d5bd88327a80f6c08ffd36c44499bb983e20cf5946bd6c9fcba50ddd6a9f542dfbf5f167e02834882b23729e30259fd8b2218ca28982efc1f664bb7db6141bfdf0d565709aad84aec619729aa7440e45f4ca66c310f5162e665f7c582f3ec9a0369b75d311551f44c386292f34f4af8df111e00e536e47f9d6f274c0eb3275982227c34c9e92bd81a72306291c6c3424d4189b47e598539cc86c619a9ef53a6aaec9d44a981a823ffee86a28f714d5c11489552734a3f573e532b2e0158cdd1f53e9656d3b76667bc784031f9508fddf9f8cf3da0e1f653cfb5fe0200918ebc4f5196d0e594171d978fed8d63459e13d0a178f820158049d83d73efc37cb24eae374d0b7da7b521e8eaa69690a99bd5ed570feb27f2aef9ebc114aa8d8d06c26e04349a6149986b4a9cf68c8155cbe0ac43612f3dea5ac2b5122bf6f5686e5923e51484fe836cc29459f343549ae60cb3e3fdf422103649391bb902f609d3e4b116fc4d7b6a68bb0f16383c8ffb73271c817c5908fbabc0c3c3027d8460166f16407bd9a23b2ca9e280743eec30a6f8f820c864124c2002cd5b536f0ab99f32a8dc7e2a5a6456aeeab5028e66550e1fbc1ebb1aec53e2f719069dd128044b01e81b8483cefeab6be7681f5436256e052b3f7d8a350326dbbc8d9a86a51a189fc47563856163dc8d03d2c126d98afee710fb878e172f0a8cd0816993bea871d747578431ca1c0c60a806da81f5166c0fddf9d589d556454cfa38735593f44c93cb61d776e53c9f2f626e51dea9478f9dc53ab18ff1771d1cedd144eafaef1d18c6c6c225dd2573243b71369b1d218f6baa39108a419f78a3ba45011bb8d8fcca15c7afdb21619ff4211fd752cd6ec528606f7f91d1548bc68d6b8b60d08a9e53d69ad9b66aff1c869c13287650ec5b8f2b5d6a46e0a14980f1e451acc4daa092560c7fd28d4be44d4e0a7423d2486a4f6022d618ff918d7ca57c84c30123d38a2d6eec7da4737aabf85f0e3e8e03e814d7a616dee6c1fb69b8be64a095a467e01164718140b16970dc4cedf6d64a46ff61821b5ecd30d126675a1c2379a5f2b1318e93aa0def828c43d2f1f27ac6e83b4909a105bad1ca0729dbd0d2f26e5d8ad934f80fc959ce28f43f7d946694f148f9c4e4007827537ed00824d7deef3c12919884bdb39611c3a8546044f277dfd5165e67d2aafc6c0654a94e23c8ff0bce43ebb05a4fa3f133a520e3398c20c4c0af6c156f50096a74f9af3519fae71e0bedddd04f2f29c24236a20d7cd2e93e98dc030a90e1d5c9883df53066caba77e9d5d9d9b12ba9e682f5d17b06e8dc945f03186090cbdb2edbebf5b437c9b9babea11d97888c6f5a7be7cba624e942ddf10577c88fdb81f6e1e10870e3d9adff312a63a358aa03d9dd05bbf301644d8cf0b9196d0e2e146e3aaddafc730678a42069abf6d83e4618d8ddf0aeabfee0431c45976d42dac8ca2c80580a96b549836bbce45129215b185bedfd3511c8e023d621854d449aa7356c55e4d7017850b51ab226d9f084087f95157495c4e6a8994d1050e5512d73e37517022f4f37b6576531e60d3ee6bba0cd8249edb4d10aff13f217fbf59b0a26800bcf598cff95337b3b0550d7cdf32930a5b9c6d6698f2dfa03410c361218f61ca955116122cab35d1fbddefa33159b1412122bdb83c1bc62be9b442653d5c1a8b8cee3d352b07c436314c0e852c4414fb232a75b63fe3abdbebc68710cae33c8462021746c9ae8f6f7ecf65f77fd0eb5a954195a822a9aaf02171b2039a51b9d89545da66b091bd8d090d2306440c2ca4bd8d31292ca1e56bed9ce352b7b4f11079f1184bd17b64a6fd4cbd6f4ba01ec31bc30aaa3e413b95819368075e9b2598db389fbf21d8b752a78cc0254621f8c515b0d4eefee09e7847c5449ec643e63f42fd701fab9c872ea107b8ceb372f85d393d748c4ac82e645269d287c02b23bbafc295dce839f35c100a8b47a6a598600c05f871fe25a86ce4e6d6a81c09ce23fd2347fd76a74e01f11d461c54fd6b4a6de5905b0da9cfe7023b54d8e7742c73c2497b9c10e841c672e5ba107b03a5b7832c5a5fe6b5c2ef1acc946575d3ac0bcf25b365de9e1c586534999b92d6a2ea404353632b72eae5b55d6b8f39437b3032756a1a159030e9b43aa467ce1b864970f786a4b72077eb3d16650b749c228ad3ca8511e426c7acf6d16ed3f03e90de57c7fe32f687df68d2c8b780aacb3ca49b24a1b4b35aef5c05409a70ede9fad8e8d0ca6f885cdd882cf50a0df31095702ccd2f00b48df2b6ad00eb865bde0808804619943ceac4ba932fd6c20eee25c0298cf407bb3eb8fa6a68a790b89a4c65368b122d5475e330e2e2f32254cd0bce1167776e73a8c16e33329cbb7a758488c158f1971a0ec562999e33a769abdcb5a574c4efdaa7afdb544ad36cf317f730e4909889cbd0df8b06632b3ed04dd4f5e184edd81084760e616881b70183eec06e9cba88c9cb272a779d43c73dd0ebf3869f7e8b74717c582a4aefe89407cbbccf79807124067c837dc6fd96c7924276319b53fc13eae00fd0a12bfefedc2a5034dd80f36f60b21c45d4c1f5dcd2352c034f03366a35140bdb08232b173fcec93804c212ea494540f7f212a011792323db2063d66db9b7296a8a53562c3e3319291f73a6f1834b7f2f35e847b8e51b501ef27b8eefee78cc6e96b199c7aa5f57d17104dacc6d6f2c802e0a0f4dc6b50b10ada7a448133a57f96f7cc23ec7f23dde8d47adbf9210de06aac211b03dce91baf4747059f164b49568b0d616a963a8cd484b74727497ef10efdfda2fe93e8167b95ce1d75bb5d0b77a7d8a3674441c6f4fb956a8cb4800d04509ea638c7a60a8b34bf9ed32221c3815a9c9e8d97d3ef47895ce45b992731eaea635d76d9015ef07804c280fcd0ee0290a31af85b957913b612da7a1e3f053fa29a582ae4d6db6944185b4eb099e06d15e95e4619dd8ade4cf1647ac97e129c05b95172613983aad89e2ef69a1c93c14937c2fde0cd0a4766a00b5216ff5afd16a571a8e7daac142c5b3458869120ab230a0c4a16078154ebcb8db214da05030e1b0cc052d1b74be7ade5de631fcb8ec1771795368a8c3f0e3dc976cb39ae5ab4d57e838d048c50dc35e9bf0c99133b6d190a661155f08a8ad619e368d5cdc9f657929b316ef6ba333c0ea8c98deefcac354daf3e03ed2c8af0db34460a66a809e38a92a55b7ea6e0da4e022d674ec8d4f485b705a0d36cb3afd2ec7e8fcd229c32708cb75a6a80c43422819fbe9bcb76cab7a3fcf368f935121d7af7924b923d5d068cb45a999b02ee241225e55a62aa1eeb6b6a745308f48bb027c38a9864a9e2e3ad9500f778d9e6391f24ed6cb7d4f3aae55e86ea3861ce411ad705bdf90b333d221420e88ba34b5bc39330c6b1136e8e0be41077b470c073469c8cd25cb4d43d804323dfad9f55f5af94c9d28bea00644163d09b28782647efe14d60fb749b77fb95e18ca0148faef92dab26c713fd9a3af5d939ca4e78e5242eb114bb1d45c92708d803ba991b340273278cf48cc55d6368467681f85ee1407cd5c31cbc7f14abdb838e29c1ecdeb2053a195feaba7bdbb7a6b2df93e3d3322025d8d3277acff4ec0693a3bef1d5b042ae03cb97bac1a4c542a8e50890e7bbcc0f86e1dc8b69c45851ed17b9c8c01df6b7018900f772f053651e8e2aa42c0e645da0facb3aaeeaa3dc9fc828999e9ef7f8efd56bdcf31c7323215530f91d3ace4f2c772f91abddad0bd25c431d4936367faff82efae8df41d44ba572608c920dff2119ea80ab5e3bdb19ef48064253df47b3e3ae4c3f7e69ca029330f858e1812d29fe25273232b64430d51c882e6c6e958bfe02cf14f044a86d2161a3dd297194e7fab30c27fdd857362f712fc1024d2df5cb4face539d6fd64154fb37392099634e383a56c6f58224635751b3eedd6de1c14985252100bc98b27d66cfe561c0d67f9d3d05a3e51a9ec0fb111d4886a33476fcdf74886853752ed8a9344e06faadafd845976b287a0fc12d44c322c9be30fba3636f2fb8cf3b3ec1cce9628fefb3076b3b4aea4af8057835cfc4cf879f33f81f6a7b8320115c2aeaa5480585b2f8b32b834cf83132f58e389f514ad7321d778d79337c283e6fcb8a58facd6ae84f67448444e8a91bb89df9262fe6fb30d4303725e72db8f4aeeaeda98023384ccfef896acac0883a0913fa3b384ebca4c2e992da182c14797732f9aaaea04cb553dba22eeb46ed7c08adc0a0dad2a53152dedd88febbf2a2ccae92432acb1a19fa2baee9a6d86403b981468796081c68763f2a9202d71464d2dd0548f11903aaa71c5cbe711702c78697ccd382b64db724bfefbc44fd0c075550cae2d34b194b82f5aa2db462ae3ab90d9ceec81469b6d42c71ed16d81db043da4d47f20dce0d75f0b9814c2240e603d57281255ba98f042289467eac5a3d2d53a4d447f2b653af2d64150ae11f81f8f79e936b9f1751b4beaff1b89d735ec9e63e091db6ee7b25b895a33237864190730a16ff0319c8eb754b36b2bfd79f72f50ceb94d8c7b80c9a8c75fd849ceca89fb9165b36245630ea9eb88ff91630a684a8d11f81cbc76001783b177d0ab37f277e818d3d38de11dae5b025b8ad59873f70d206b63ecb61742797217fba0c3992e089b698ee839f1c73ab7f70a4065b07b168e5e2a7711116bce430c2de95605b82988dad4276f0ade1ea5bf2ac260c1441562baf0eedb7fa8d994c4f81665e9b7adcda8668699ccbaad5ac8aa77ba9a42e239c24f0f85e8cb7a5f2cb287d03406f6ffbe24cb44121b3f019f6b923e33f6415d025215356fff8a093145c9c05d56c516292983f0005a1c87c236233918464f3b2341999b2d6e52f13a70e6a7bdcbe5f14265195fdc30dd465c62ed52c8a7f6701895f70c9788efa4add3fb762b74ad02bee7069e2fee3c895b907b054d12363d276143eb6d317c286f75695191e2fa9564810e55c167d17833130c849c42c740c25d176d811f39e07f70546e428aa22543efad69da74f3edabe6caa72c75098ea9357bd525ea7358248bd216ce887df7d74c6add9184171f920f773dad910bd7df3cc9b8cb95fbc9f3efa473c8e9b6e3968d2c8c935ec9f72e82935aec5cbc4284a78a0b0ddaeff7b5cfa4b4625059686feb33e2bdc6e3e8be90d40c0e0d69b226b3f0c2e333b3127709d175dda457f7662ffb03fb89054c07e332f075dbea2f73c5c0e38d5442f277d80edb9d464f9ae337a264b11553f3f9b81d41d290f75085004be47a63720f3769bca769ea6ace904162e19a649416aade4cabf604cde06c5fc9f9474bbb179cbeb66141d9949732a4cbe7499247659510719514df2a07b83548ba02ef40699bdf5bbf8197673afd8b45dae6e83fe55d37e2e58f6a88d41c0be2dac27e465a88f2647ea5a1e649292f3221d16dd405e821588fd41084b08d44745426c2200ee7d6135964a2f0e25e852039a09f9eca6d21c7391a58f18d5615ee2aa2657c7288941440b31f5cf0685a9b800797d071450f1ba0366b3c97dcd6aaa7513301a0611da6c3efc3ba0e78e6240b38666a3c2601a876c6821302e026f20f705bf3aae3e005b889840fc0e54c3961694781780d7af5384929f2ee788686ec47c74eb373f674b24d944c4d449c8da149eff6d4e56efb829bb25b8fbee6e073a4628442f4e192ab2f087a2265b337898a96d85e6802baadf2a1511937cc8bff734e2cc169017b2b779a58e0787a54e1440aad82fff7eef4bacafc2283b6fa55fe45430e1bc2ade1b0f9d7d0ccfdd0dfefb242ecb4fede0b72c30d30d4cc0f8178d3c64779a2e32a9740455de7577284f25fd7c8a6adbd492ec26ffe38e4f228de913fa37476243924f26c6bc8dc1cf025ed02ff5320a47ed3ffbe2229819686d2ad1667154876dea6e0fccf6d689649b5e028dc4ba7c78fedeb43d97f78d712dfb9c74e8b0d9d12aa4cc2573eef4a99dc28f746854f42ba1c66eb8e0ce2b5f8296b5bd57632a94ad2b5b4c2cccbdd013e5bdd38275ec2dd2a815e8f2b7aa57e9eaef03e814a7c933a50d12af91762208cd39276a69408a34ed539194fbe9f11fcf8874be6b18b4609c674f9da8a4ad0f2a7824a9d3e4ac8d41cd90e11720d0a946386c6d35a1b33ea1b1bf2c31d2d4bb60682b7f025f2e47ba0b2cca9604164dd6b81b7c6148d0b7f0c775a5c0ee0b28a7cc715e11e4b7f182c0f99234ee2097e83481eacbd7db1cade51fe76f99607131c9f16cdb493ebc1e3a0250561f0e56424c87a6d7d9f3a1a66ea7e2392ea3376e7c0505be33ceff38323370d0ba281c87a3be16d9bf9adeb3f9971daab0272153b241372b2547b40555c432fd1a4ec1cd2f1391507bb64f9a1d1f31dbed1e56b90492450c64aef83124b42a2385b4e044b012e5f41382d586c2644cc56f7904cafad025f4d4358f641717be2b734558e707d6d28d04e73416fa71afdc1b1fdd7af91602223bae5d4e1c8daba9ede9cc4069638c9e68c293ed9fda30009707951a17c3ba5386dfee4ad8d3812fb0bc2442866b3de04451fee244e4b9b7c86865ed23d16068182def904d1622f611130a263698808c745ee7b526f3c7c217c28bd97968bbd22cffb2f2c54c47d3ecb26e65433fe77705d4a157369cecf63904c82365afc6dbcba5ae2e25bafb7ffc5803bc533077fc0c01e4c36ed94d6eb176e03b38d72eb5f3ccfdcf04561e2f70e8bf3c1c8127b43f3c4c69fe83240651451e995c05d75be124dd9e3bbde373a8395f7653af6503d68ada2105663f2d62d1cda6f235584aa39430a1b21452785b83e0a7132c9073879a71bbe8eb7f0246fbc0c0d2747afb5f28fbaaa924c78399c607059f687edda6ac5a1082bb5ac3ab9acb3f01d2bc3cfaefea7ecdd471d16b7bda0ab8c8f863a907c1afa43d5a8ab6444796e746d250fd2dcb7ec11bd4b607f925e4ff723a3ea2233516c3749c5dac50927ce45922e2fa890fecfe66471ad0b9f7dd0cd474527d0d2c76b151528d08c58d2d05ae45c5c4744cb82b7a77399fa822ec2acd4ba0026c7c10c91541620b781cb3f9d48c8b2c90bde54ac7e2bf121abe3df8f3587bec28e41cee37441c2138a94296a979e532b7c077684b5d2dd4f1a6e14ffca8959aff81423ab0c740ba41a2a9733141d5d03657f3a20d8f8c17b9f97a34623ada2b1a59a04d844c396fa1f7c9808451b1c4e2a86fb4787379ca189a05adad84170975d46588ecea4189629d269781c6f60cf57d365de9da772d3fb1aac536ef792af83dfbae70c9a74a930d806427f3ebfa11c5f451f6e799d13529a5262456d6a11445babae8a7579039c5803b41df12075e117b8f28917634122f36f37a8bc4333c8136d96456bca64bc6799db7c46bd14d180e361524707438b9a9e27ad28909b8e715dc9d3bed6ba2142f8f3c9287f7bb33474e0cc04ad79cfd6ac52d64d3c53a55799bb5d12c19a33ab40a3c696aaadbe18419dad9121d0ef528e805ee4086090af50cbd24b74d10c35820f1223e2ed245ebcf6ab553d917e20a07a30fbf9bbe2b1911ac57e0340bc2a49840c7d4ad1ca3f4ed7af19d4cf9c6f4c259ddb103783f8a39351e83e1ce4b65298217fb0b6be69173e0fd5d7882e8dbcae561efebbab4a9092644bf3819f7c88fb1039b9c431ddbb6639b026766542b2bc3168acb7458ce73d227080686648c219934aeef96fa4fac906473e2b6593875076e6bda49e00c95603783125ab336a7678200186652a8c66343d712cb09c7b0374dbef1cf6490f1a77bb6595d086691cb7ec217c19f34d037f7aabfc7bc9e49848c291f6ce182b3bd0b87b56c0e2cdb1de9eb5cae81ce5fe496272d5d8d2e6b0877da7448b685ae3597879b5c707a2b5f3b6e77ff3859cb8e05f9cf13db417c26505fe03e27ba2996de96c59f619f07ca1d3773b22cd2b949804451aecac4acdfca5112a5de59b27a38cedfe515d22885ef02804266f1b64118ff9cbcc098c7108ed1c09c64df78680dc0958f46cf469143ffd035145a6adf3094f478e878bad2b9ceceeaacbefa645c069966b085e965603dde49095b54fa00dc3f6db2ee85d95c24225f89adfaf535217b8194d213d1c0f471da3a3f32f11262162c51568790fb823286337c09503fa5749c394ed99592952b83422e6c3fc8fb3a9e3bf34edf0f2b9bb4c77d211f33ba7379662831f638ab6286df9c2ef1d4ae8302ad1474f68477397cc48016835ee90b0bea1498ccca8e9337724d112abde767c3254a19403b38a2418e57dc8f233c21471548531a92e9bf8283e06dcc6100afb2e6a7129489dcf7f7eef0e5df77aa687f3c8366f78e076dad3bf5c7316e16f910771be01bb76d6b0090001f8d64d9170738318fa1f2f92999e9d9e8cee7311c0424d0ede68059f2c98337423386295ebee792d6ffa389c7227ecc9090a5bb8fc47ca3cc0b950cfb14bd0c8e74911581d5aafb8c50bcf9abb410cbdfb7d34360d7d1a954571c5d2aae95151ad8c9e0b5bae61dc0df0d9aecc55af4d7ff7198651fbbc2e3f62dc56b0a47ee4ebf889512af83677e94972917cb3b789bdfd32bb56d953d2a3f546dde6d74b2429ebb5330f0706e79db1109d510331848cf1fcb8a7eff8d37ad1207692e9f05fc9866ef58bd1d6dd9f5663dd213e937928fd2a421fd5a10b9835c77fe31b0abdd251cdf59c0ffce53fb3542922ca77d81963c9f373e4fde9cf21a51ddff75b1bc5b877a568b0fcdd6ee50ac1cd1dc02f1edfffe34de48b38a8ba91f549b1c256320e68833ee4b1a5c1d3d9cab419914b502945d3255f6e0e4e15a81d4e5bb5e81828a1f76df34a0b49eb800c6301584881dc6ef56e0c9534399f1115f75c9d84f2858d0af954f4b5f382fa96fda29872381341c49d57ba79ad1262592a3a29863e24a28d237a4e7bc1245285909d5281e73d361ab91864b81d42751e51806277720ee7d033c420d33a94f8639bcb94980c76b8edfbda9b7442314c9db3e9a182a3ce50fcf25b91c101edac3bb789d3021e115458a8767b0c089828737d36526f94b6573cad59e4b42a3232caadce9aa387bc3d490cd879b2aa6f948774d55d6f076b8520a060bc133f99d7741a92dbdc3fab85e8bf495e4426a765629e7b8b3dc8fbb7b00e01cc25d1d6fbed5579be39e780c4de53f60719e76ea1fdddec317f514603e9dd173ee6422f33a334288e2772f291926197a26fad4b8a6bdfc0f824d8f2c1bcee8b48cd0d339dc648cef26f97a51621ca4bb7bca823bb81e77168185b3b9c1b3050ae7ae3781a8ca48edb6d01f1554e55bbf2079713ef88614ba2a7e93355f2925a0b7b838c5efa9c246b27426df5c0a3a63b1021e82bb00d0bf2416a7e23c77de29a5c5c32d4ea176df62c72c69342f164b7ae6a53bb2bb534c3d2e7094ae4af059cfa36b987eaa0342ddfcb444320a825f4d9a4b936249556e93780436514d626a6ba4361afd934a1d3164a253f4a0624a66f4b02673fe3d964fd4d54599f55198706f9178791c05c329f6c64d5503edfa5e3daa85c5429116ec37a853b16afaa554f082ae191a59a99ecb1e3eb3fe792334dc70b360da31a70d6cc285a895e856d86d25698c574fea53dd18068683d9bc59ce28ab2b71fee5eb180d16f1b995f3e31e198eeb10a1c46aaf16d845b76b80df5d20d877f33cd149e801d22e2fd4cb73ce1cb16e3a021962ca1ebda1ec4a6da5c7ed9a5b7df34ffebd029c551693ae9460399fedfae9efa623980f06fc3e49a0c392c8dcea9ca60c49efe817247f71704af5d43204def0b4d7c6fe72b607182e211a29eb529e034d6f9541a5daef6e6a4fd5051eb370ebc6d7ac0ea36cc9a77ae9b7fa2af781f5a455e7c4b8cc61014c15089896217551176de39781c40b05f4b9506b8f7243f2cf06b8a3f7c3770c81617a274e9467b9b0b3fc44f156c804cf487122c530e8d1b7fa1da49fe41d746411ba0153eeab5cce6efe95e2cf7bbc9b452bb66c78364f5d0081a08528f3a19c1ffea972140f99ccd8915dba8a0909ea07013525929c8a504cc70464cb8e02884862556c6aeb72a950964408e58608febd059e66d64088b9ad0b5379829087b91fe570f3d36b0e1507df458dc1b09e940d9c682cacc2b1f02bc5a17699ab2585a8ff1882e3ab35120d063192f5e2f1b758c9fa6fc26b51a78e4e1abe4e06569cc3bda1fb20dfd72666692b8e9ae6eca318e830730e7018a0924a79f1085896ba0317101f923c851c00992b1d7ed1c0ba00a0ddda586299f7cc7791d03f2ae761bbe7a0c9ee26f650b2b67b462a7e5e89db6e43996332cefc7e25c86732814ea7555241092bed8496a68b3d1340d9fddb53b99ca8f2e09299dca0978ec4fa530f4c8114ff408aaca4cd60e2741e5e9ae21b4f95954195264b87a00bb61d23857a4bbaf09164fe921841fab47b0fa27365248aced9afe6adaa3fea4707e357f4215a73e0f00a377a05b56f4ddd75ba8b09d6b45b06aefcaf850f2d00d22614b5a310a3a3e56ffe50155bfe1ecbb49f2aa57e2f46be359e9a866e50ff4a67e8621f38d52bf782162139d95ae918cc6b5aa464e10a8156693c6d2347a39a36b397625fa51e5c6676a0e9357c48b3e2786b7d32de1945a1324ad7e3ca5c3b66e87625392158bde99ca2f7db52246639f16f35accc58e27cfbdd98f44331a8cfd52457d53c67c8aa0da2ec17613ef33f57bff4e0879e4cad05f0a44c863b5b14de4a7a07f30e92c5593efbb0b4a978c6e974ab4aa8389e9749e385fcfb281cef9294118ce4c2c83e88b87f7f534d27858deec58d1e68f20cfcfb65dc4ab99ef071351cbf4830b7914d761023c76649741251f1cacde10fa6dfdfa7c2814471c1c762a2f5cab5160c45821e3a160499ae4003f0b41f4de3f9d41d0fc55f323b43e7d251cc7fe4b1e1490a26bd2389e6d715307edce0c7c9387ca3784656824b2b73452afd7504d72121e16e5f1f2e0f42014646e44f61abf6c14623d37c4577f0f1fa398e86909af8e0fc5c176c7d434aba79e58e2ea0e52de03e880dcc20482645376a6bf0b5e9e5e4f7503024d89da8814000d9cffb05c5b3a8c32d9bcd7a9fe6c45bbdfbd76cd4a98e18882cf108ac3bd66691925f542146038dd5899acdf1fe70538f590c3a3aa024efd99a50769cd6ba4921f4ae2d9011b3bf3ab6e81e35828b3696349f57addd3f0e390dd164bddd2f7e766b3b2e91d68273ea5daddb17816a972af08f0e969a09ce1c7323b7aaeebdd241884f2c4bcf1aa5a6cdf3bda2c5e7d1c7620d0de993d155a0b24ada0904ae73fb66a802b6ad8c6e20d356db45a4df37a2f1025913bc88dcd7861d3cc92d925f5f66f52a4318cccf90b98a0309a3b24d26538612822145795deec811685cbbeb532f5b280f4832077238d36ef939c51673e66a067094c18377834c6e005ac2586c8cf3c1e502fa79dba18cbc2e790372217eaf10e360dc847a21faa80de900777942490da36ac52c420ca14101d25886ea340d4f036516b7484dfc132946165bda17df48bb0216cc9f2914a74b9a353fff626d2336e7161711f1cc0237f766227f7ca886f3dbd64442fc7bd8d1210fd922136f06a7d22704b01dbb20bee797c7cfd08d26950dd1ecc59f8042275be07dda66e529286cb67053ae6c17634f1407e91deb20a682373bfcea6061ae2aa5f1433156eb9424d6a244dd5685c2c48e53e12d1321f0a81b11c1c56d9f8b67de4e65b07c1620e9bc84f9124544232c76da0757c96fe0bef79100ac8c83a57b10d307b5c6f737354285cf7ad9ffbae684984ff9c6ad8a54278c6ffdb82f0c5946bb6fb9d73eea3468081233051c7fc4337e58a1365e58136971b8677d2f622c8c30835f05b1f179cf672e4091ebbbbf42a4c8003b412f0763df1eef7d9620cd7344328fdbabd7203c8337c59936ec763490e76f687e18731db8dbd7ef6ed06d91fd31f69777d3c61be11a660d118baed188ad78469fb2b283cab3f81b789377fd735cfaad69515cf95e29222f01dae1a3fab8ffd259f8c8e40a8bcddf3496cdd7fd474842d74bb30972d5671776d50e7aecdbfbfd2a2604765bf6f62d4a45eebe6be707b1d7dfa3a1f7c89c328ed176e98333512bc1c88dcfe40db28a2d6089585545690ad7c7c4ba95b4d7bf2d7902c699fb50b5363ed56dfe013a9123432bce75acab8ef8a50073ab7a1351652955ad5e9093671c348230a734f36e8e028f4d18cff9344948c48dd197b55028e3607e0f505e0254ec03db8dd9b5648c31028694bf7528c2501df0eaeadb77534d79dbb94e8bbbba52e196a95e8c48e66d062edbcb97461bebe326c53e8857038179ab100ef5baa32da56f621fc0034e0b067f128e93a36d7af5db48376ad33a9a8d9a50abbc9c22f3a0d449241d13ed7782b542c4ce05a66899633a84baa2d946969634355df2250dc81a63f1eb0a43349c9212c19566c78164348a7b54d1e2cde953fa1b63c0619694fafba43e0e547835db93872175fd845267357dfd3e13496bc876edcaff09da3d0e15e9d45827e039d91fe4b3147fd5583bb6c2931ec80a8eb03acf7e1b5d2088585a7908b595b9c6d9431406db40756892047cb077356ae00bc7682675fe911cbcab3fea0868cd08acbdcf869477b3b073265c23a7ec6f269ad12f81e2203ca7813549f6c6c5bda52888c4ecbdea38f78650f78fdbb21ce2669948cf2a817ff0d518168b78f35370a5f7d77209175c059b96945f99a74464394b6c618a3074c646a4059f3c6157f880e6beabdf20e77d232c552c37bb382623768744322f0cd2491ce1044509c83f9bf1be3ad996b9e9b534d3c46175b839f78f0222c8d6fe62b613c7ee571e9680dbc4aae74704f06c8b249ae9970be611cb89e6d9e414c7d44a54f9444c0a3177a9776b74aa537b6102b11af0acc736c57c744f1092753e6e23574fd491bc871772f9a852390152071e51fc8848be992d2735dfe3d3fd9e84484d4f4ea94854eb278e63d85f1da595034eee0167d54ef9b14922471bd6f5391fb82f93a9d4cc99be5a90da3a1fc33b7d635a7dd91a28d4419d1803d4c45066f59143c4bad71342af010ba51e87920b79f09ac4c06a2f4ec06c543dda78301a7a06932b9ba80163774f6e1f1051ce5a8ab7968b1466ea09603b6178fea309b042bba21b1d5c210418f7a58e4c376ee3652fe43622b9b60912d7646984e5de9145a8ab88a5f3fab4975e4bcbc0c4e4ce6563d67709b2f8a80e6d2caaa4843daf5f80c542addb04c17d7b1ff58e371de30864155c3c2716eb4fae17430cfb261fd1a9c56642bad6a757bf33a48e33633b6f47a4c003ae774f140494445c4fb190bec6d4d1878d778236149458c9449e52e2b97672f9200a4761d4192ca83f68fcafcdfc21321ae17f30e98371ff318ba74a1ef8a88f76fabc7cd6dd9cfa3bb97f10b231140aaa120cdd4ea045221fddeeb63e26f188e7a5e17077a808ce30f46ab09c96de6f1a4d86da23790dd97f709ad68c21127b65f88b8d4e85419521ab5145b4017cd23a52a44a517332fed9f97783f254ee5561b312e6a13c9132937a5ce67500bc387bc1c15017063c2058da4c353297e6d4e15674d1fac8df80c684328f9dde50bbeaeb639669a505022c04a08bd7e7ce0ceaa6016bca3aa6c9c22990a09e71030986b92bc95beb1f1ac11856c7b7a916e62f0784121ebce75030c6075eacaaaae3d579481a9ed23f13bf2a5f4f027d609c222706e963a62ec9028378715231839fddb93fbe0914674bdccd782ee11a683f41b8fa573fdc97dcf37f7e659d8809a75979876f3df90056805ef290a9d4be31c1287a886dd94aa5cde27e29d38087f84d5901ea4936877936ab74499c9899ab849cb5eab92a59378595f992bbf71ba4e49dde6f6e9c6230f069094f369ea538619e8ab20240e41425bd79d9782922509c1dd644e5b7a3a81723023c111c9b38b64358554dca94b68733d519f01384b7c677de32c0aadf45727ce9cd53a90f5f53bcd30feb17e30ae28d6ad2c1aeb125572cd006d5d6f51ed30d5d65b22cdc33af889f5fad206cf01d7ab469d2f9acfc006f6c11ba28c37c9d29898bff7a44916dd0d5892a3493bc047dd8a56224d932a6cf46a9d215d05f174303674c07f12836938b13127cfcb8395bce34b84e01d11512f9a66b9fd6f98bdcea499946b5fcdaad8f4891c400a004b75c2456a859771acfd9e6e7ec95303e278c2216a90fe5ceed4db8c73c1724ecac6e6ac5ec13d4d8b827c9fc4ec9202bbf3a0af34a4a0decaccbb64b2156692079355eed807e2e7e9c3cb5febd40979c2cbeb8c0be25768aaf28d9be829789b56f203dfcb28bdf3e7be4933d2509988b15750d61930172e63eec7b729a830eaed1f4a6dfde0cd6a4546650710d4bd9d248478987778829d7b9ab3d1c5fbe7bd548361e4d79e3122e7c255d36780644310d9ad4c91c0016d51545819a4bbac36a14a08c5a43e82b3b9403309afe1a791c5ebd37403c7f8a500afdeec8893ed09a30a6bda6284fc94d88d4c1b7841b4b6300b420b65e762858e04df064f382fdca02d5e1118adc2a9720470e6414453fa098cba26a4a2a678f201936029be09cb3546d0c06f756a0d6089e97eab090107c2d35f26038f91475993b320fcf79724aa8c9b64f973e11886476e2d935402dc0bfb1eb403386cdf977389ce9c8e8367d2ef13c86c7f976624aa2f8df92763939e2718bc7413086666ccdf0027af815bcea3b5c04aa545c26c1cee6b6f6638b697b7a74c73e8d089315c7eb1429a73154cd12bd70ae6766bc17463e21bb4eac0b1b3c6cb980fa6d6c2c5a1266d1361d9acea565d651b7c8a3b2a093f6234adb648d8ddddcb2b7a6cb299b2b1e76db63e454e9414d99a5ceb0a89f004043bc8c6796e556e8816af59b606bc1aadbabfe556f4ba032091c531bc9bda26494ece4a5fe82084afe5b7351c657a43359d5e078af58b8f11aab4adde43c196620b53f145c2d49f8d53a8bafe372671fb4b76da8abf7205c733a396175960b2d3d18ab9b405c14d2c7af7ddfa728e1a7377afe4b74f954925bcbb980fa3fa1e539ed6a7cb8dd888ff29bdcd61768ac7e7adf60e1857c357c3ebdf7d2a9a4096c8a0e748042886542e16a100e1444a981849952d7010786d12c7a364b490ff2c84374f2fdab1f9266777cd586ae597a7f46240b38384c70b2a96f4b274f0013befb6dc4a97a5799821e4dbb22cbdf070c9638b123cc48ffcf41be202ea115a4625dbffd39cec82958d7aca4490441fa641f3ee21afdbfa224af18313e8d3ae2cf04bb61d8e3c494a4100848e00d864366ffbe2f19df2baf3c8be1122cd54f90dd7397ee64a5284e71657fb48e10a4948ef7c39c7f8be1dc0ed2b4e7f0e7dc71ee31225088eeb874f4a44dc656b7f7e5136e2c22cf9481c764b730ea28a2a4cfcc68a56b96711a4201c6c5b37ae9d2f107ac892e3347cc70d390ffe8e12f29f796904cd540662b9c08a80482b36a08b88c0bc11fdc7f98ba43d6dac4b9e943bbbbfc9458196c6086a9c34c8fb7dbcdfb1808bdcb2925fbed0a7b7df34c47f7ee065c5f75e44ac9acd12ce40911d521c3cc62c1faa589a437932142fff4408aebbd7d07dcbb7a8ddb6d883773441621dbd5cc8aeace43182694eb7705d7bacd0fcced7ff6009e0386aad7f62747035b51e4c93ecab144ab2fdbe84e3642d3253bff39cf5b1f570242c43adbce45ea42f9aebc543f5537232ba4669b595e2e925354f2745c1f24ac4a680dc7e9bacb50ea874f0de1f37269d581a195472a9979c153b62c7a082ac3fba4fefb4cd59e41ff00abc1bf060a034dd69b296eca9d6ef27de13dec131a85596a06359d2e4c2c57a02c50d71fc0e697db1a614f27e37bd8c7a8061eaf9a2a899a5a8cd9d1d8cdd5a48f309f94f0d81d3c0cf001dc71c86627bbb92c4ede6855aac537d0917b84a0dab9457ff8afac293bd6f1ab74388d1730b7556b0e52bfabd10050a4af96eea47f9e575467b2a86c6d54740dfd686668bf07b6e1288eee1eccf3094ed1cf071038e93bef9fc0d57a018383f8de89045ab9f93cc834f2b06429fc021948c0ebd612631894eec52b4b981a07d1105422f1d41cff0f3a97b0d62d9e8325a7f71a2f9e43d67ce7c069bcad9ee91394b86db7784188d99381c1f34241e6e5a94a3c140ce0d153f120e40c91a0aeca43a7c339a7a54afba23c9addf7d9a1a16aa8d9c6666a0eba9f5abc60ed38d418f370b789fb228982504aa0da91a3d2f5e8ef8446d5b2b9c6ddbcc33fe2f919b3dbdedfbab56f152b6010e1d42c4b7d50e07f26ddef1c987fe8d0c216acdb0d655c59cd68d7c48bea922dfbda6b2e3376ee7af496243b056219cffdb5dce50d8b07b8dd2d507bcd6499608f9db98f30ff09fab6bf2bc291e080f295cf2397439701955b2d3a725c74d66acbf318e287d648a78a6c8cc6ebdd50b5d67ea74dfc8eaf3d788b2650e1aaf198c458858e6fbaf67a48f43076aa31174095beec31288bb59ab8f179f196c739dba268e3d451c0fb9416720bc0ca2ac89587ee4f66b73a45a95e0dd9958d42d797106681aad0cf926c6b45ca9b26099946e0520d7d035ebc5f320ea59eb8c6cea0feb927b8892250d0f9909ce3f480aab38a93d976714b9317ce2b88f081b1d3f78e69b9d908ca777091bb06f26b3a832d1b3d0accfe6c9bd63b1c124a2e97ea49e4a664c1012aa4edfcf0c675f5535a77e53f4e427abe8d11429f6421b6bedb4ca74263a09b79bca54b9fc92dfedc3179b36ff690bf53e9c137f4efdad69f75684e324bf753433bb9c2fa2d7f5059c12a4504ce156bd121e998623f6b086b9f559710efefbfe9c402e6795a17154230011a1a831c21f01ddbddb0d5b5b3843b9d2d9ccee23d1c0efba658210c0985a06903319f7ab20006ea48ac193b7effd9202c3717ea7a6612c3cc14f52b3502891aa7ae0f821e60624d77a852e7bf293b17036634a48aa19ace15f22c70760ee04567593e8cb0088a5e83f8b41440ffa1264f55f087317d13e9687859c373f115f61ddeb99f3d0061846f757e1227b4f6865951246cecffb38ea8f2a88d3168df1fb84c6ef2d4e7666862fd22c3a92fb9554c4df92432fcf3d360ee5bb94f23d03204996d4a0c6d154ff6f08823558ac385a15eb85866a2525595c049212348c532f71b487f6fd98ead7eb555cd0794dc14f63f2beef6f06ce969ff749b47ee1fa44210f59d80839c56b0334ac697501a7136ce8cb62739640f3e06b011fca3cfd454174b71245bfdd88958af2edb7414380c8d093522a694531874515a96e72c4cc4b508714d6104e9b296d2a04aebe6b99022d0a5f9b09b24ecacf8c2a0afa36bb6d26c59352a87efca619253bc5404ea8ad7b1a675a9aed25956627fbfe32d8a08395fed7b621c1848b2fa51c780d8a7ea1a5323a03441b305dc4c6e50df9d14e21b29a50f44aa789987f15936f73a89c6feeb6645c9fba288ee6ce6d3f6b87cdd8cbd4bdb24452c3860f3339274b190dcb99875cf33026049ff717d91ea2101250592ccd1e65d7b34c4df953365827979243a0f28118a7643c51afb97761398b7e106b41783406b95bad5e27c6c9783b53ee6fd9658c1b9ddbd59ea2bc4ea8689e05f24b88be24e9250205ad4e02fe928a9e891e4cf048377a4897af4f781705ba64c41899e013347183387b74d6368952c536d6291663141ffb1a2baa35ae4f13d0154a2f2913f06a6b604c9ef738a852f1e01df8f84a34994dbb85a5098b8ce8fde290cd07c68d113a5e4093bf1928d42d95df20cafa567ef74ef9cfacab8acedaa6f2217af07d97d764f8857aa40ad96eb39851f5f8ecbdec66a05948973c58b5a0b73b8773a15855d2cad9d70ca4c82644fed34fd8292f578e05080dc30580168b6c638361c31cf93e4fa1caac172ff5b737c8bf71eaa0b26f33e18785b00cbbc5a643159380885b6937f17b4c41b2de308eab82877b0bb00bc7f29c7e628ca29f48ed1accde7d532377584152b10cc84b190218eb341e487341673c57b51c26ff8b359f9bc9e6ec2ae8a8d81152fc4555d14834eb9512a4b72452aaa76e9dad787be9ff13c2807f89f1813aa8be99d951ca76e109fc573bfe62a7862ff3b1f5ce8898c71ad66d9db8e1526e2919307df54cdc4a0e57d6a23157cf8dbc64700600d7c9f0c24f51f98bdf48e90604454e83b343ee9ae67ff73707a3d1f3364d3f82de769ec8b8f9d35a5bb4572273af9d3b9e7e7366df8e4705314493a04454fc6abef0fff72f216681982fbac0619111115f79fd0c4ac12b1445616fbbb44105bcc59cb75de5cd56a694191b127e8dacb096299dd99c042c7f8c3117a52dd173507d16b93c00f25ed0f4f9eee1f6335ee2efadd9b845b7576c4ec997401de4746eaf0d1cae93fd90ec41fed5207112ab0cabec7e625da6df670938577303ce90cd795712d8ff0c56cfdf7fd9fec9562b8781b860d16b23148a40d9bd9cb54293c1ac2d629c015423d3dff808c91deabcc435c9ef967ab8d9a4f131a86901296f41fb21d9a652fae7caec3dcb698197812159c66a5facf8fbed512319716b5a68cc6907822a446ea29ef9bad678fec5edf9a6c8be2127e0cacdb4285c0a4e330e9119bacdfbbd8da92147d41247df6991909798b70f7801916f516af89164ef065c1689365bfc3e9b03ccb1a11e37c8528556f3b6389ef920f9f70bc585f5d064e8a7d9b0dbcba82953e63702455132475cf8d42d912d696bf3ae2ab4c745c77e4f83c46952d2098e64b9cad2817299f7a3c4d9b02c65d0826fa9df2e7a611abfc39d9a80cd7661f6b9548ef8e67abbd66cfc11777a63910f0f036fa8abaf7ed224fdbec145b4290a744cc891162566d4aa877d9dcd69d985cbb2e9ebe3e25ee546f71cf6e2d02698a5c3a8226a4e142dab7c1d8de84ebd0306d66b04ef877434a96c623d9b76aab28530714421df1f2be2aac6073ed88abbcbaed753463c9e24c84444e3fcc415a8a76492ee9b495d775be059172331260ef8d57245197c8a9a1b0c7c837be8c01876eaff393b0346ec1a13ddf7c022de97b79af6af81995d780f07aa1d2bd2f2bb26d4d396003e0daa9c225903138ce870dbc67e84a665d919ed446f8b74d37eb57e3210b94f184610dac0341b50dae3c8cc51bb46036135e43ff7e8596ee955589c0ba28f0b1d9eec054bc62887bfc4f7170cfd443d7beacf4f4bd10e259890239a2b481d2f69d8e408251b5add124cc2b6167c6ba111a49ad29aef7e1e52b906772e5be288995f3efa059d320be9401953d73fbe271e2eaa54cd5ac0fedef206052e4ba325f9ff4ea3395a79c3b080375ae06579bf7c1a7ad145535c552e4d704e0480315d96e0b663e47f0b122d127175d4ab3be79c47d120ffbab3b7faa5d2b286c5b3b0db8d59e4880c32d57ee89ee5ea25b2e460fcb1933e7bbd96cf76109d8ad398b4e13965ce21d08d0cb8b884ac1c391acc8f7d5083c8728d2a05212b17f4049665677b200c5daf851d6b1481b27d7088742a545bd0ba347122987a79df747e87cbcec3527f76da5bc8d7f2ec6aad26911dd20a5d597bc8180f9e3d94f3ba5a970a6084cd79361720f2d49680a7689d1efa016e5692314d48a42fa64fa4a23d246d9cfca4317fc9736b45863f5c18b51311c91db53c73753059b018a3ee6d8dfaa96dea41b53519e5141dc53e730d66d3ac1a8be078b23a158176b8ff8317bfe00f014756a6c52e949dcc2aea7b47b9e7f4877abfc8f9d7a00a8753e1c9b0d92487992fb08857e2ab9aee5b18972e9d00f9f9e21a511a82b5a59c762a188d3b1ce857f989df2a7e81fe2e0daa05720e4ee2b5a84f73b9915c34e284e80aea8a6b058fdd22c251c016c9e6c6c054f442f4076609d861aa72e07937d56be13ed6f2ef399d3399f5e22cfe2dbee284c2dfa4076d2182a227c7f1f180b548a1d023fcd6acfe976a19151e532a4ac3a9b3a00131b15043717b7a74080d5246931eefe49f16907066c99642b5276349c2985f356cfb85748520f56398ab52872c01cc45bf82a4349370187c5877ddb65b8b1f69606826897a534d3203b50c49bcd5861461ba3564346abba9524d036fb2a1024811d3d73e4646877551fb0e3174110d93cb8071f88b45f51a245f9a1af636908f2164719ef513b30cb3cad70c09aa6e09363bc20bde15f72cc0cc9bb7a60d923cfff9bdd7e6fd2ffa990aade93d51d62c49e63ffa99c3e9ad6c945e8bc89576ab103cba7fbfc927a3c3271a1418ea4fe3d7d8d07d96f5f19bbcdadce13651bc55f7c6745961c1c4b2e751ab3c6bea885092186a4c7b1a99152e2f6d83e1ee09119866de500e602ae1aa50b101aa1e6803b3959eba63a2e7b4aa01db61398251fb1e2979db7e7dbf76a34ff3ae98a8ba836ecda0face1b8a26b1de4db82f7f1337635d4e4d858bb0a8578f8b564d4ec6cbed769edf02389a530ad54feabda4285f0e1d9168e7d7be1494dc88c1c1c836ed9102981e496b779acad7a9a02ae51436a1767f30300c70ae4397acaec79d206844da46f4b0820e5c09a486d82d10a8e4ad3ce20f33f1b26e6f09a02fa72a8be32a22b7bd06d0205a5e18ffcf37f9bf83fe451a4b8dab46cb945cac8bdc0a0d4247db7112506efc8bb2e440e41aac60c3b38346dfeed9e235cf17336233d32bb86c9d0beb14dfc72ba2f012dd938c5c638ff9ec9f3d6eb2b70c0db68b3859d9a6464ccb4d6a8b71b1f04ef282665d217dd6c27ed157074759904e300d227f7cb6c4da44abce5bb2df7d5ae94101d2963dd224172880f59862c630ea209682f5d823ddc7ab3f75ae9f554ee4694a223023b8efad2fdc7e5f92c5b5c7968f669931f8d2a62268e52e3da0d9eda64d962c24dc120ef2fae69fa9b1c6eb1ec213063889411c41869158228d88b30a2f45e639e944f8de82407cb168b5dfb005d08f8ccef3085388dcd812ad44fe99c76871a911882d399718142c5855c0c0925c6319c50d9317eb9dd714cb30feeaab4240fe0a16ecf861b924998cee21dfe9e751fe6c758765dc05235c04499ea0b5181dee5fa58ef7bd75e5dd82ac16d1b7b1e8b4eb188a485a667847480bacbdd5c7e1ab8830c8817023f100497e9ba9af1b96d6faa613432a9f96a5b8a8a45211499c6114b5f52a2ea1d88fea71dcc80ea9f76eb3fbd3e0b8e8bc700688c4fce6595da0d6af6e977706dfd8d73fdeb79a25f87503af80196de41ce706231a3f8b974c4b12c034effb4ca3e2a9a2263c65e7038cab4db5f35f113886e4e464204a81ce447d1576533e42c2d1b4c0c0737026752a4670e5ebae1474ffa3444eee98e150e8ae88175bb55b43ee763a2ab399565559dd052a884db3153281652af8b41150c9ca08fab9388f6fd11f0fea9f5124af30823020b3357191847c0024f19399e1ad684c49645bbf1852ac6fe5d780dba93c22987fae32d19f655f57ede84ffd7685f7cc9acb022a9092af9d2a9f1fa88cfef84170b06a4c998cb58d92e07c4e99c9811d3c46201c94e224d6e72003e1ff692ed8c77b8cd857eacdfbe57b44b8c4d564cd09b8021982f3c0233210f3b788bed680b9ebbee277bf1bc933520b03c89eba8f34f3e73ea180691b622c00c06c4b2951480f1b72a373e0452e5129e755004f6cee6e7d1be8c1232ca686aa9490b0a7dc3446e8437ade77c2c4c4d0699165023cac87931b0a0e64a38e7a58b368161912fb518f84bae4a5f0d905d72c045fc4af441c9b6687d381ad019e82f897610c560c0daa1cb5d72f6859c836f7eb8fe7f0d013d7cd3e17d3d6a7a30f90ff2c9e2d1f7618304b20e60a9a0a5c1b742302b2f9b1505e09fcae9890cc54e8630df91391170a0e7f7bae4998f54501f253701a80946a1481afff11fd4fe040a1d52b03567bbf7f84d94a245a0e0ff8b9b41db7726dc43f3ce46f4bd5b266363ddb7ec7f795f87c4282084ecce7de8535190fc5633f98d32c8e648392d60585047ebc98567dd3e78cf82bd8e58789d14e7d08e5b535a1063295c8c565da9b1c3648f769979ac009ddd054a50417976d471485f1f0e71051fa6cade9700e46291f4612274985a154bc3ee2333d1da0c35f9cd26bfd20b06890bbb32b1adf33451e85dbb6dd23cb2a043a53047120d5f83fa94e62b6d8e7afcb329457704ea6a59e9ad3ca1daaf75b3f6291b94540a4ccee7c7230e94bacac812e5185724433093d06ef92f85e8faafc8dc968ea9db58d0a2f20bea60088e7a2c3c0f853232e2922c428df94e54e75c7793c4df692df265053dcc4acc8e3e9c1bfdf71bd9fd85cebfb05c69d28913c11700b4a2b0f39b7d5d75a57a387c30c68cc3b255c56cfe04015dcf6d55c9b13e90673b01db1ec1ebe9ea86b4e91ed04b42973be02742d2e89c05ae483c0d940f1ea89f460f6015505f183acb867d68d292da3c1334ca95e9ee574eab91aaf3b0d18fc613b2fdba46681e69f99d7ff4a3e6888073a67649878a92767c83815c770b83ed5df0b79e731f0e0aed1ca6bc9e3ac5da82398b3ff3b7f722b9e2bd9d3504731e4637bdbb929703f927d853c338a2b867542fda5ae2ef0f971ca727e29b4924dda4bbae399c5210cb7e09a6412cc2c036becd90b85c62bc649f6a0352b639c5c65af3b49637caf523d6ccdcb60854eebc4adc13170771195368ea82e0bc87d41d141aa44f2debaf183ea0534c12a6d3a83d28ec8bda33314f7d89c52638bb577c32af30b84297cf6832e909908f19a3f11804c35a7ff37dd05dcd686e59b16126fdf533f5ef21a5981571bbc7e3a39d3b10c56eff87af3c5bb3e1a84d4618e9b60d74004bacd23a36f4e2885e9a4ed1ebc1420fbd999b8f0a7011117702f3ee202c76c63121681fd33c4d302fd6b727855e5b3a44289c704c0652bc9e941cf53e728b08e27092007d60a6d5ac6d90c428206f3842cace7339e0b72597fdbcc46a9c05204be17515bf3e455b2c5b1eb45395e450eb54ff5932e0fd88079bd584d7e17dd1a5a82a5976d7664ad00ebbe933cba226d2dc3173ad7f00d35d99b820a88c4cf1144d3d9502fcaa4bd99d558e2ed598249e721cd15d144422de2a8ffefbce13180605303c9ea0942f5dc1ed9e718836fa72f2a9491edf6dd7f153d4056cff336744caf613e7fd0d87a6141adbaa83f2271b8578494acbc735183fd8f5b17c565def5d78b0e1e9e1cbbe0983033ec4c39b47825b766e30bf931a353d0c74f5e4bac74f13be01af4019e5986868941ba95d763bd9217b7b671b66887cfb6eb68f768437181c012f3d74f3c51ac85fd0234c52d7ac8be25ff61aadfc613178eec8c121b34bc78f4e52a4f4b47f7dea98b7e89dcd43f44c1446e531768a6d128d471d5c696594267edb9b6c2d8ffecee46e34fbc3417fcc2955425d06eba78e7d877dc94393ba86b39670151ad9aab01d549c2284fce5babfc46f82bd4c47f385477f4250f42db04e29e412c9ffe9cf1ffcf55a84fef9aa315bb1f203c9a723fe0aac8d3d1eca58349c7cde6e359a93acfb8b440388f717e08371c29e51f101e998ce7e33994c2edfdb2c6eb4c6ce6102693a49080aa8bc5fcaf1e1ee293e85b67b57fcda621f6d48358d57e78fde6116639b43b2ac54bc2e638b6b6b6611fe1a83d19cc66af3954fe0a3f1b882c201268b432f1ec988070aa37f49d2761d03f54266ce10152b4cb8723db75725c45877860ef4d76ea4a6208558950c985ac0309172baf0bc14a7ec69d56b14107cc1287d7b9e37e03ed4ad27d9524e5f6da2f4092b573b2bf57f71a50ec5b2732045e19d199745135911f64b7e688b335d98288b50594223e28661e9bb9afb8d23b20c9704abc033609d3ed78ef7f5cf9a6596b9f4f746d96c28535d78df243622780f2071f7a81f00fc1955bc75dcc456be767a4eb4c2751c8ec40fd0e3295622a38772490a43e9c5724f74532ae8f527283c7a9e971c95b843886df8a53c6b219041cad9c9de5792a8b685fcf06e1902d9d1a72399fdc7634bb4cc18300f08f33400e88cf5cd65dcd09bfe0b64453d7c0e52b51f1e5b1286aa44e52247d2506f159a92b851dec1c30ca4fb62d0403f67976c9bebc57a6e87b9f9523bec6c7ff13f35117ad05b4ef3ebb4b8df946254b48953141cf4a6475ac0f915b2729e6226eb9db1a24917a2533715185ecf7882ab5e091fb6ca07fed5a964128b2c73d92a8fcc46b4932e878d6fd8214879da2772ef588073861868e1d7579196efb15cfa93b1a2ed0f5b7d5ca9a97eb655c770e10b953d176f7d4d6d62d7bd19f5ae732def452067fb5b37b1b135fc2053dee3aca57a21d2cd92ea3e4bb12707d63e3d084bb11c3f17aa1aa4a3c70d9f420fd6d8c9353cb79be96f8a70b643c7a55aead8900f78d67902c1375a2648b80667f580e2966040da0a825d4894e9906d6441a6f000191d9b7e7beb6764e6c49b17c0eefafaa6e2c746bbd9ae31d6518ae11b2ec0b868eeeddfcb1d7e1f47de9b270a000047e7b26209263f51b02927afeee633cbb0d27d986de73e6e9f6b5f20477bdd369b441aeb29c4c67f1be6658ea7221fef7f48d31d433ad32e607af522620f0164119f9a58ef0a4d705c76336b3ae7e91b94c0570a37e3458ed53d40c0aa968c5ced1fa3f20f60cc3b4325ae15665e5f14b9b271f590348b7da2a202feff32f0fb24b0747fc6a3a72053a3a513af44aa87669b316a9e33931c113be3f6c7dbe0b7098116bb33a3c4d38784e3f7ae6a335ec97e0e89d61c8cf253bfbc8d8ede9e4c2b845a08a7a676ea78c0032a7f37d0535d5eb274a4dcf4fbfb887e0afc5a8c3b40f1f18d15e338a71733dda066244139b5c4d6db20987f781a149d4201c21316fec39131fb0839b3c21e7a51a03f0077c13f3132fb24c4a2b885122f695edece503927231db5b18e92a4a05446a95fab7de06f6a938dc2bbaa21ef115ac95a8b4d571cea29ff14c2904eeb042c18f87d6fba4543cd90351447d2798db27493af9262ac26ffee061a03887197b7566702ca6887797620b5fd34a6e04e9922551e8468487971fe2778132100f199bf5e445a87577131e4a8cd5a50792e086aa5e7f7b60b42cfa2af02e4cfe1b999c701d79a376328b6b60a5ceda591e7953989df7460402afbbcd6bc8ea937f2847294816d9e2e83e325f9a7c621d0c9434d1bd719bcf3a9e72712d2a6abe188c2da7963036571478bf4198c746024069fbaf271a1e79afb702e1d1e9135f7b6ebad82296d3983551b99ccace3a547791769d9d1bb3ec72f0f11d4bb708ccf214bad8b2e264bd8f246bf2c0a2656cd150894d29224e6ea529e87dea473589a051e2e6ca1aed18d379bc4e4df977dc34f8f4c71d170462dd786372aac022588eaf99b340af28306f1793bd0bc9049e32b00f37e358e884fb4e43e355db7e282a6c7f1bcc8c81e978b4e6c6efce18b51d466c2f13a511ba1efe7ac288a016476ad5a4183665ce442d5f0cf240c9f3aefd4554433333e33047e8d06c39215e428f2c933dad5971a88ab119551260fef3961f3d9b6b8ed4802b2fbc612ae137da3d9557e67f815893ce63d1f2e6d3369bc450834e08e0a93f0a741d600c157af2a03d571f20632fe79117c84818fff0b0f67a4de3928ec942462f519ab8b88dfc6e6576d82b4f6cb9ac8c91023613e5968f0c6b1fb4c3e8f388730e38e374cd45c8cf169cd26aa4346c4c5bf4c111f7fbd935a5de19bfb0960f4b77b83907f3c56dd596df61d9e418deda3c6bde892ca727dc0e650df3d50cc95aea084726c25da526c179ce5bca21608210badb9f62c9cdd1624d1700cf1203710014d36c38495025c1937e904c65bc58ba88b6bfebccd286241d0245e40f83d55c4c0260ab1134cd4b8c805c613f552216c974c7c347c72c23fba78f9d377800c002849cde9a6a8234fd9f2fc72f6b5eb593d136971ed82e8705ffdba07f5a9ec42390218cbe05ffccac65c9ad05b8508274cb984f7b88a10fcaa370f7aa9dfda0cf461a9dc9a224d2c638adc9f85d5bec0f69a036bd895e25ea9711a8f7797a8514b20e3038fce3109e3a72352c56613c2a683fe174820bbe7de351eedbed2d6fb9f94aa0d80dc020c1c11d2e4f9689a009f92c769376e083aee6e2900412f81660b32522af23a18731335db523c661e016e21d973c9899bce8e6505771580afe27952296e7397ea8edcec9c1c9c2654803016cf6d65080670d3169fc4aee0b034955a7f517458dc43c75f80c8eb9e3beaa34bbe2f97f95fbec09ce19fee73cf157f80be30b0c9198ddecea85f9d3cfee308f948b87fa11bac33a313834a41a0b25bbfc1c9253daef8b6e1a7eeae2013c1d54302aad5e0de0318234f3000e26e2aacc1b0c39f2222278d4ec807a71b320f39650eca756cb4ddeedd97275af0c81379cc7b24cd57b44fb4f7003da17c260c6c0d70858336492ba5536a31046bf9f64cf588d9e93287b954d80bac6a05e32ad5ee1e6619ab542fba2c5ad96f7e58cefe2c4331f709e8437a5a6d6eae95508ffa9ad6a189a2bc02b6527ced4866b08d4ce9026284382ee072f07126325f3197441b888c2e2b800ff030e601fa589c984577370307e68c147d0b497a22b51a5090ef7b20cb8cf696a5d780eb40afb2468540cf90c30e9978c6c96d916fc8f7fc915c7d7c7b277a2a60fbcb48d3b97f643d8d9cea4591333cbaf57e9939e3bf930734db6235102933ac0af2f612f7d2b4108ddbd46942fda09f3081434df50a3ebb80a5b9d88cff6d1fd4bb98d29aa469bdb00d77f349797a88624745b083f7dd55c05209d0d13267af7687162a9ae5ac979e15dfb74988b38fc966d73d4d65820195e20241a35c065896631a5bade01bd44bde7b5511f5ca6742ad375336e0f4db18a7f5ccbbbaff110fd593c5f96e44a204dfa17ce0614f39a489258c4db72d393d1959e11a7f6019a09a36ec55272f176d7d07c8790369d14937678ffba3dcb5df7f48989cf0078449f7f88859dbd1e7c4a54b25883d512022c746ebaf15e4197fbcff287de5292856a995b1ab299af3f7f06dcd1862d507e25110029daedb0aba4361e8a9f3cdd24bb90d0c41a9e89e455750cd2b8cd67931b8940655be8c8e012375d9018d4fce3bb921137c3591fd88bd3c1e9dcbcae6ed56a9085a8f755d29f8e4cde71fddb82de2da6a612f5ecd6ba25f4ee89e3afcdbfea711f32c4a05c0ea7c16c83efdaa9eba0345521c8a400ed047b9880545b36250eb50d8de70db580aafc373c305ae4e96aad5fee64798ed3d6950f84b1caf2955585888f883bf31f0147673dda282d64ca3d7822b398f133e9ef38e1084ebb4d2d16858c2d0adde25e5beb3fc52b7bff90521de63f993d8a7a159c4e657bb575ac0ce9132dc21e59d80102d94ea0e1976aa473b7e93d3c2f19288966c0317198c924e2ee5db48717ee73e69c21037c180b355b66208144c1375de169c093b635b39a1054139048f993f900808c1cee137038e9532cd5e9896b4a95fa17f969865a9007e0115bc9031545da856cdbc549bbf4026974a7b6779995174838f09e8935bc4116cc1018e131442cdec56d6ed4cd4afaf4a5d39cb5bd50ece7cf673fa52cc0d3c51440224a510deb2a555d5e2a871032e22d48b6c02fc3397f6859353a4ff849e98d8c8e13dfe24239e159fcb9d884ec742f67269610706d7b7a432802ef72472806c510a08393fb751b6daf46052a32cdafbb6153cd0241000caa66b3a3e1895e8226b96af3ffa239eabd7fe38c83759a58f7228e5998313f3069f763d62a5c7f9d26aa05932c9736c3cc4021e2a9a61cd536d20d286f109f279422929722bea3986ada3b95855501a0534b8db7cf544265c46e9831e32f63bda9e9a3a852e4ea6fcea399d9c9ebd1f75f654b70466f2a7b26e0bbecea53176f066e76c33746cbd275840f20aace8d7503d2158ce5df40dd2f3f0246682a58b1c0152031a309279ae998e1e56ccebc52e13fad6281974e62d1a0923999bc2a7cce5e5d85a40571e6c86a97b5666aa28fa213c66262387fda7c7d46381bb79f0094eb844197aef62eeb91bec8359263373c9d0f81feaf8fd19be254b1a8bb608ea31206b0106a9f3f8f65dcb7deef0c8ae8557ac2e640255cfa51a8ec30a1f531e977fc5bdcc297d005a79ec8457993092a5a57fb2c3a1e20ae8a17ac09a1963672f78837ff33d74b25bcdf6ffc03ac85a51160cce3b84c47e598d89ba935b081947a5297d6849956aa3a333f9f18b6a17e1648dead4b395d6b4808e3d6f82e79f03357b6f7faea6bda97bca9f7c12dd2c830b8130517bd12ce54438388079a0f7f1fa4c139ebb61f02a387dc37e5b52d032608b0f2132a491204a9b813bae1931e5d559aaf8f1857f6998305cf25bc58ffee91dbc67e2588bd2622f4f1055a5f3248391785eb7029840a7f0048e5ab5c99ea88fac0ffbbe91560101bed0405cf8eb38a44716c5d39d060aac79350594325c48f51cef7f57918282d54eaa0e388c36a2bee5cae5a4a63f59941cfa930950467c0c89fc69d56b014fa964aea82c12e11583a187d491fd1fedec75ab1b0d01baf8fa38932981747ddd3dc8ea60bf7e16234ed2c44e5fa0dec714adf771b1f237c876afc77c5bf49adf6426122760dc0ecdbd5084ab5ac2d787c3121c4571288bf42a3acc0b70a8c223558db49a17c71d1044f97d89a54a7f8bc4962549b77b3fbed067657da440bcf59cf307fcf2f2108a462d5c66135223b1f651c19c591668dc828a6ef574e2180835ae403df5a3de5fee530831e7a97e5cfafb9cc7c1f9b57e453a6e2f7ba56d30cefc79b63a33a4ba54520729af521bacc27357f48477de0b9bd23aa751175e80b37c2e3e6b8ff4752918e69c35038508323a014842b851d642f1ae8160b8768581b340a88cba76d94a17b659fda74b7705f82c79b7384141ecfa6d27667dd7b9828993edc549d47706c399dd08dcd55b95f68f081e46f60fbe95b8c3194eae6fb8c9327ea9e5f78ce415619fbb7603905da332bd0d8678d90e2c51191a8881c176a40b802bcd9b75f00b36fd7cfa9ffed1103146537084da906f705f777b4a51012e35fc7e51281a6a2659a46424a529c0730b2464cfd19f80d0c9188bec5fe0c5e0c83cb358e266adeaed83a0614d4661a8863b5b42aa421b08a0167d95300aa9154bdd10db692be661d79c7455f6d84bab1cb4b3becf31be90e919c9a1cdab588da34fe46788fbd799a440ad57d3faa61ffd034a0ab3c0972985c4543045c2beeca5d7999f4feb9a218d911cf06fb35cca9d4b8541faf6bc557ecc29d9ccc97e3c2a3fcdb88740af907d55446002108c16db62ed54575acedb61a3b423bce7de67b5c435fc6d7333fe336e9d198ee22692a839dc86aeac1247a2037c0a57699dbeb1062548c31859896c880642d6527a70516e6bee8cd813670c16a2816861fa7537eda58d2a8f6ed21dd4c33520ab5c04493b39f8ee8557cf4b2124eaac6eac2465d42652d789f47dc5d72101c60ade4b8b1e22e45611c2567ff5b99f0cf58e47487900308cd23fb5c4b03de898e8a4618ddc964633df8f97dd856a6da65397bf556b1955e9dc18a5cc52ade2138f920abec0c8849545967169626714aae1055072045c020b05a4005b98c2195efce62a963d805b3886aa88b60385c802bcd6218b29b30d78939e794636ec6b1dd0de4d394e145bd692a2c1bd1ab2b3d1ad2d3fbe55c86060e0a54c5be447ec1831b120a63ba366d09560cac1562471b8bdd71913b2cb782b30cfb4074dd161abd4e6f576a75f352479bf8f43538d92f3290405c33b25e6562350721896b9c505923e4432fe7ed3b2e503c606a08e1b45dd05ba113b0cd2a4d3584d85945bc8412bb7242bb31820d774aa652615d005afa645d4b58ca8739af8898c4dfdf04b4436e1d6f1e70f4f4c0e092639e58fbdfdbd8c54d17f8f984eada27e6425a5e56f4f4f3b5461f36864ac3e0a861f40a2225f761d7a4a242288b11af2ad22e2612700d658eeeb99c78e005ad34894c98b5e862678d256a2872c405fbf0a60bd3e200350d94a92239b2eb27488064d583e3c175b91b1ea5d51fed4513e75f6382d85d0c68c9346f268c131bef5f10a2afa5af88bf7dbeb159dab7b79ca2d5da797e89b32e2d1e11e85555a1628607db3ee08ee1520ccc2079d2c821047f742df15072e8071bf9ae99f505be5f54c2295bfad3d5be30a9ed41672a8b99963a215f659442e742656a73486a45373ef02450605645cfc17982de363273128306324bc79609f49d272b7199ecee17d5ebe06d028688a8be281aa702f29bf62b21abc9f503130f20ff31ff5cab9a5334594c71c6c957b95d153253fe68c8a3954bd7f081d003e95be2588c3d05c1f76a761b86105a6ba825c8772676c0f2ca12053511744cb8bfcef306c545bfeac6fb6c10b0589a81f9d33db5410b7330b146001271ef4f8df1619208ecba4d22308b5c412e7332a0197f84319f85a841f0e45fb972497cb4774d257db1f6c37f771ecee0ed605701305870b5ef16a08aa90a82bf164150229cd2891379c3b08a69db0717417acc8faddcc602660a6055ca1d6a909cbe74d2d7a7dbee062ffc4dac274d003e33b416dfd32da81c0f76929c86a4b3f7dfa881efaf67b69e5eb84c8ddef6316e6bc463fa495acbd1d4376b6943ce5fb505fd5fd7081ed996bb4efd32c516db5c283feddf7cc984b9a8484e9145c0de44fd010fb205f2ce19111b784b284ab978a5c5f897dc5d148eb3e03ab5f1e705838024675f548a663c7974a11b687a4ed47855517a4285dd5db3900470e3a0a43ffc605d8fe1e101dcfddbf9344cd14f976787b283a95b03ac890dc34bdf3d9414900d2fced28cefe42f3281caab236c88887317ef4678d36221104438d5ad920f26104b397e6f36d0b27d361fc03d41161451e91ea135d9defe8c145a594533d8704db3376703d06e91d28ca9290531bdac0619e190b90ed4aa58c71ac3be7dccdc794932a68a411f1382bd985cf34c6408f0521e036c15be080637a51c9c7ba3885c7b3f37872b60a4ccde43594ab5ed2a673148300a0557102176bc413100e74125ad63968f37770a49011c5d24d894609fe6bace9e27755eb96e83ada3714e013ccb305b62848325f37349d7405ba443ec1e2e5b4c479f4759f3e6c61feba0e9fb5e285cd2013b40f7631e83cb8f2ea9d6ba61e1ece9e4de45f2418205c5d45ada8718cc5d35e2eb6e4d914bd5724466bb3662d23eed5705ef4a07f7b4da7ff5ddecf0fb1a7542a06a80d54594b71dfbe850249dc22cb0421cdd8e693889c6b095a84a97ffe4b0afd8c28215d66bc2d4138638fe434d7c2fb5cd61521706eec226cbe186e6fb77fc89054b51fdc631cb547157e5247e7f71fa991db5ed54598ebbe7dbd068e2813fd0e668e38e4c38e526dd57a403e2c063f949387095b65b9f456eb20b260f8a11c1052f1c30021d6f014984ce53da0e4f8fe92706a8b11507231806ad7e804d76c722465b718e63d017e88a03cc4369a9a17536f74f37b8d5d6ac1ea8c5edebb1de7983446d8b68059111c853f1fdac72c73db60f0d486586714ad91d801b123c0fd1eed5509b350ceb59df1ac412f1cd2c9dba5b94197ccba2c6e7580a3323b0cb81ee502d66bd19d2d843b623877de7570aea20ab2d3b68f5491526b47dd03f85fc8b13427781baac67d9f43c2cb67cae9f542d9671d1a8d3abf049182cacf1d9a97ad429149bc83e75abeb4cc62a4972843714331cbaffbddf40e7b7695c572eef678a880df354443e81ba1d67a98595d8b9f0b5cac5ec8154d16558cc3624d411e76ca983a7838be589f147c10d82e69754325ec22c65605b2668d5156f6bbf65b4dca76fe715b4d161564ac830e1750b056516734bb2369386d051853232bba75686b4a847aa05ab0afe54ce177814495d4cac748c337e5793cd23b3f625c24b37707f7bce40d78257f394a9c642b26513f0368ef9869bffe0a8d30ca7eacb971ed92aea575a76bf5ff215a1fbd4e8eb21b6ff969a870afaab133b82016aafad681b138bee528de3f8aecefc67920c3827362d8ed98c7ae2b2e99e5ae1ffc8052adda57e4609036b3e0692581279f2c0153fd4e84bd5ef29c2466cc6860986227328efe3307796c36a6769a8768b124b24b289932a11e78eb5aa9000cf5495521929846106e45db07e3138d6572943c33f3a0bb9a843ad20c38f8472ecd874cef95675c45201a6082850facc28f9a513061168096d8521ac44e1f1e582c9b8b5ac56ed04716a84cd9da3c66399c390be6b4552866c4673684ce62efdb291666b6f19b00f244c7f8e2173db8d58a699cd78d86aaeca39bd9f90d4f2a95319a2872aedb8bc40de1fc78d5d7bab7e152e27e9177881b82c5eaea06198b3c82eee3abd1ad019bc92a5f0c8ee373bb384d3ac7e8fa9320a5d33a64d68e4289b1661400f6c93ffa46b03dcb24beabf5be2da914c152322002feb4a14198dae825995f97fcd32f9a442ebf1c5b55c94bb4e52d72ccadf046c4c872b82c47fa319965e2a08720d790f8bc54475abff66af1705943beb37bc5c9d65dcd21786b589e4bc9fc7d89ea908a4a96cc2f6310e95d14867ed1214cda258c498ece0204d316112dd88a52580297e5436548b1206876ec470641779a649d80aeb6867a5416bbb86d609c1d7a57afd7358ffa6b6a2bcecbf031d0b16b9c2dc271a4be7e3e4196c8858167efe0e5d88f454efd7f43ab8a6941f6421ac97383e76164919bd4da88e00fd8e143edb5095d7918ed6c425be5dfa168e22075d581f253293dba254bc4a0f89cc732a530b0f8fce4cb3d8004ab7a7b88fc49af6dbf020ad4a421d68a53e0165617a47a4f2de1b0fc7b11f1cbbed58d53612ad9e906d84d0dcc06a85f8f3324849494f3f554845a7a4433153b954b592be6730ea4d624e9765fad555ea8c2cf5b466a6669ef39bf5f53c38467b8b3f87ae4110280e1b065a32c185fd42270e5d4f7583c6f3a0e34c437ef17a44571045eba55b2568e4bbfd7a449adae554fc3ffb6d66b76655c6ce866baadfc6ed158c24633c6ae778e71155e142d6cec6a979e58201d55163991eab756d31bf9b9d91f708da5a7eb6f8b8e937bc32d66db1f75f2cdaa8fe4aceb6ce70cce1fbfa78d6aa0929eed6ca5b270a2a33dff982de79e607770d2ddbeabc014b5c9522dfda9544329aa4532d640e78d521e872a193781c2681944014f960d45bf2db0c6a06a4f496ca1bfa79de44f7b006b6515873b9bf966619ac4c0a37edfcb5a9f9eebcefaaa37f6e5e95d70e03478daab2be80f8c2e8479679075d9b231d45252e0e795dddcc440524ce2c067a80707048fdbb0234c0483ea4117e890eae20dc54adf13505f5734e6d5d1e5666840864a38250c398151d2c9a7b258239d5c7d70ac39bb7d31f9cc88bff1f57a2b4808a073f4a84cc100ec8107a2525244d87f626dab72425a47c8affa3739f34bb9e0335e7aa2b443e66d009b474427ba87479206b41272624ebb2da7ad927a45139b556ed0ee2b023a56d60d98f8c54030f5f6846ca4c9d67657b59d2154ee3dbb7cadea2e2c243dcc5aa90075e36df9b2691c0aa63b63c781b042e8aae5d7788c16d66d736e26f749421087d7aea56d2590b04d5886064a95952344fbea81dff847f368f7c6e4789171d2acca522a0a7aa2c916606b19f9584fa8a681d04c82b9554d9db6805bca161f97eb35425a9eb82a74c48d52457022559eb45ceab9130ff668a5c54a863c58de6cb477769cdec6c26dc703f01ed131cb96481d8f9f6792748f6c18cbbae3627536eccf63b2e3c0d4cf26e5ac3f41fedba2f158d81bf9944f3caf9853af14672ef66c9a20fba8e1ddd3fa53074968923ea0710cf3266711f16f858cb391ec5c17258159496d8dfbf5c8f1bf833bf5f87b6840ce2919f32b6579d34c5f57c8b8e1bf6a906b74d7809dc8cc84096418b9c53507d1121403433063d64b689dcd2f5477de6d01ee2d1c14b7e1d8c4e306636f5826b68b01a18fa6d19e6bff03618c807e834648391dd9b9a1990be87f792c5de830306dc6fb5567cb8da47beeb0922fc578df7bac95dc3c9cf313e6f72d9df9756a75205ae4a5dd96dbfb1ef628f53409cc8840c96aad95d3ff6e009a644b84de4f8280af51abe89115ca132bfd589d0d04084639d40c14ac644e422f63a8cb4f0e2cb1bede8e0dab9a515c74a66ae87299526df3f05efe65dc1643a1f3dca3370a03d68a47e6d4ed1da5aefc5e02c11f7718fbe83da385f2b22e4aede1b5ac535905d3b1efb4356626de769fa458e5e5801ea1411ffd0f594b1cae117ea03856462181ef5cfc2f7991a379b6bb4a31130769687c60cc1b4b9af488a31fb7669dd0870001b8dcf8b20d00d17d2aaffcea5636c6c2aa553d4ba9191ca49eddc14928cf128052455af59d883d813eba3f9828c9655a0efbf81917497dfed7edf69937e5a6a11b3528e31bd3052b83722f052f03716980047cf195fa66cf2cf473d116d2003e2a8bed5fb03cde994f3544298fcf613058f87577680e463a027c0218934a272c386732fd5e009358374bdcca615da673d2839432eacbde1742ecaeb0b31281c5251afe38769d6e6f988cec65312aa20e8ff363bf0930233cd9f38e9e2a30cc5971a67683228e968c0f1671e581dcd590123c96f6c78b146a3806394ee5ecd876c4d0bf1bdc4dd8ad010d902144ee37554492f2b4b872ca4dd4e7fe2281a9b22a66c07bf6f5afa0cb1474a0a0632708bbf1936ffb87f9f8fda74a3dd7d17f20d2c72f8f0a0f861782b40f87ed3ce8a70649003aac71449097ad7a52775bb5a798f92c0b93a396999a8f5a1bf21e4441f86000aa3fc8654f7f681a0e5fdbfd798a316a5e0f7ce30aa5198a8628ceeb4655adff686a718c64b65defab09c08df9fb491e300d3a40bb8509a3ce2204e816798f144ad46782747895beabb4aafcbc1541758611d138d7f9da9dffdbef234a80c3f896ad367ba30a1d3918cef2f73c87ba901a4907489f994b9ba482adc77ac9ef91d3268032793c86f80ee722c595bd7918fc01f95ddfcce02883f0d4628b551b0a3a8d7c5aba9c658b9b6b7894067fea5ae65296b6607b5e95cacfece6b80833787114725a91cdd49137b168a318779bfde8be2300500053552982f37101ed86184124405da0b4efe98105172f9812bc3d4616b5d1d10c8b777a3ad7e8a95d4a154257d8afd67c58ecfe46e136c905a6c0a84fba713fb39c29fd5dff61ec7215dfd135bf6f2381b4b8f339d30e82fa51f4129771ecc5c95c4c482ec35f191c6515c71e90895f402c92ae3b31c2152fdcff295a6d7a613065186cf1efdab5151affaabd7707096ced4bce2ef24538420844beab16376f4b98d2f349441d6050f79279e4b7afa9fca8c55a7b3f7b4603bd6bb3f227274f319790b934f76b856c24102a9d24f302f81378c0c5f8019ce1850caa7a318fd09e490dbe2e318232a6af2682cdaa2b593e651101902edbe0800cd70c27179a62c3598d76598ddb88eb06b0f5d5c42a7845de21ab50aadb780ba657633b904f435bb8d342109ccea2df7ef7942a05184b213dd86aab65ee7e17c9460ce6a9da265b1726fd456477f03ad0924b03939f219b48ce455f0e27f6558e69c1fc402011a66e61d62ddd71575196caf1e6a670fc6148e5d32e87a41acf340287248aa55be3781ef02673649f85d392f2020e0c7b8f8a32077f6843fc219dd0e8708dc6219034e6669e875af518681388f7abe244d6dffb54a97b20cd18d0a2a660a73c8dd46676be9feeee8f14a0c0d0fef2c307b01cc451063eeb8de67575320005f5bc7a1316e2177046be02a5033f1b6f9c65ca9b6712866408028e5c24a2e42d3740a209fa2a634adaebcb087325483d846bc3b948e44354841545f6aaf6a3751b607055b91e9bad1263533d9b617d901d6cff568c2ee3a9d51e23daf4da698951b10acad1d73c3cb1d85e1c5767b52b43570358668eabb06fa60b423e3c4ae936a89e813c4a2d920b0aeb62b82e0bea06e9472876804aed249e928b045efd683d29165312d6d4ba15f84e2e80c6733a004aeb333329d99659328ab9864bc3aea14f5e6140da07b53c897684278d8d9ceafaff6a690e4516069f05f0d5c846b771e4d28d4c39b6f8109c0ccd77527d26942579c2c5d3828c89b2dffc75257a52e33f76fe2902e8ebc0d4a355b3e3d7011cadddb5724c02494ce83eca8d9292a4fa8e1aa01daf616b63afcccc4dc424ec8097fcc0c473b356324524eda7de78a280b786a1b2ac664812a18ec634159db77faad6e3f61e8cebdd5fcd1a03b9409a4954eef6be1a75c8d451e93ba8ec67c9c155d224f779e6f9c13e95ac72de79abcb83c9d477f981225a39da07a3a0bb9b5b44180c43a140a204f60a21cfd1784705833637963431048428e26bd3c5f93b9b2fa828d4eaddbb312f289af60107b8b34e945e8b3ec10ec1892d8a23e511ca26cd4e891cb08a51bd04ed5f5d7f4499d9c4f24cc52de655376251edd12935fe6af2264413ab4b2156db29592ea3e75995004a49038e9ce1be5d06001a8a2ba15947b9f35038121e0823eb97fb4971bc47ea2760ba57102fac6f6a926c2c691078221f333c10a7ee2e2acec9fe835e590a36a8df89bf10af6ad21859380b59bc3d68c6244649dd6e386c81c8e9dcda1c764a18d9bfcf2d47e76fd76c421930adc28795ec36b5c72a3706d60c479df8c6b9c99da7edfd88cecafcafc78e6802fabdee37348aeb1ae5443b13346aa7fe6800b793638c2e969284500acad815c252d48e4ca9db921e17b532b082f0d1edec2772176bb1d886d324c4c4ba9bfa4576364e097c63bb906a175a335cd1e1f98cc7036ce4d23bdd4507a2563fab6774bc8f7da7e3825ca63d0a15bacdfe85545986736f359cd9b1924df0bfe55b6a348e44ad96966047e421dda4960196f652b5c1225b87d2a589d62920699b3b5ed6e9007c04529520e45e037285cc9f19a9d983656d4c499e3721f96b1c365acd3adf9638c15ae832396f56213624614f2f50cad3e7b5e6bc28f82deef1ef21e11c152d71eaf11b2d9181281f48a33b486a7a1c0d033ab875a5d50abb5ee1bfe58b45bdc90de1c91cddf9268a65061e86d60a72e81516173308a22c87968c1ca2cdbde2b3a7f74f38c7eb0ca8dab0846bcb89694a33c9dc81a442e5a41655648699dff8e1fa84cc49faa3254ee3280afaa3d1ce1bef94a7df1e096662800320f3da9f898f3ede2acdc7209fe7ea9687a2bd92711ad0002f5d413eba12e044dd1aef080cf90add3f138a94ac03274ac5c8c7d04b7e3158a886eda0914b1d266740a1b7f29cbc5ef6fbb7e678954736bbdcd062f8acfc2a3b44a8deda21989e8e53fe5e0a2040c38b19002fe94f736f612b78757975b0c985a4601e2e6fe604832e774328ef5972dc4ee9402fc769af10c9ad084f8ea0ce31c37e77076a3b95baf5aebe28f80552c03a671b2c4270d67237746edd4f3593983dfc76d11a43f06a5cc1bf3d14fd5177028976a265a16403a929cf23e538b777e7439dbf77229a91cfc2458dfdc6e0254de93c392353012004f9a6c26cec9db5b1dadf7831dc7a8cc9bae81fea00756182ce0b4e9689f6a807354452c4b4ec35f55f26927a915d42d05e501f26aa08cd9dfab697b8d8b131338a4c09f8ab10be9347ced853f573dbdf62bb64475996c52902c49818aa45c1542635b39049b8e9a0cc276d27d0d009444a7b57d435a11e33a2efe1fb96e722de2ecbf639a1562f85fff6acbca0ece12142761b7873afee47f5a724976a72c66321afec7a6ca2f4cc7ef4edce3e244334b5a40f1ed5c76bd3978d15466be430e703d2057b3117b3155e4e08d1e236d07cf6959c8e6ff7d768c4f81eedbcdffcce9cfe410d5e752ccbfa23b1a71dc977eb96e852677cd07dcf3073e3ee09296bae444db67b1b3dafa6020aa5641ae38c3eb8d559888fe8bce1fc3d905f232c833e46b063cdf4386b22bc89a24cfb716f9df5a42d51ea57269154c7ff5ff477c32a2b695d8026f1d552b59f34b242c2c4af4834ae46f93aa9a17e3aaccaf73b6293c6913ff293361fd8593b4d6fff0c4033a8757dfc4134cfedf1ee719c5ace1d674893f5f0eb9bb5d994c2af07e4e6fa51fbeead5b28e80846b3f421c3182c9df626afd02d7bf6da3d908d2bbe86cc5d3b6338c1a0fb800a3dae8ee43bad7160633678ee8c88e4488fd668a626c89f98c1ca80f6aaac293873f3b16bab616041ccd756ef8adc43e5429915f7fec422abfd2109e97668952233c78af5d9e4df8359c405fd3242b6864fa1c78f58c77efd3baaa87ede1277137133f61ebd9279768a9a14215f6524c9497ca7f85c62bf88b33c4626f8460aaa7f600886f9c3daa266fe67eb3c6f39f275cc531a3743548fc9846266af138b870b50873c068e578e74cfb6685027e4e5813e5a58eb4893e5e3bc8cbb7024ba0b30b66d0a5c98630a98b10c696f2cd72ad98bc17b282432ca0b9bebc602675d21b79469805a0e1b153ae848166f0e0bffc41c816d5b17cf4ee3c0b8cce688be1ad6ec5edacc40bb495c4d9fda7dae397cca5106c18f6e6a50af30c182dad7289ef953e2b1383d27e179001897635161ccf837b10ee7ede6ff77ffe72e552a6da27278c080607c634258430f2a223c476e1970571eb1c48bfa81baa0151a76637b16ab76f3a3cc1b2329ddb245b088f189f45cc1e16e8a87f2a1bc76383aa462f62353b80b28c81c38a0468796c81d2b551b412a3f4a6a68e72cfe85641f03c886ffc9eb12f179d975ded3e439075a0388ead0c4abcce8a3ee86c001917a707582987caa5c5850e7e0540b7684cf0f4de1b6e13396de9e118c92d4ae8d2ff64f6e895845d9871e81ee005bbb18b4e41fbb554b10a159dc6d9a82216601981ebf5a457b3d78e5b90475a467874d5b0456af73c567adb763d7c3d07f97b8b7b53350e4d1ca5a98b3742cdb4383e4195c104c6b8639b5a857548a5af2c2433c069acb60d855d691c9f6be2ff7a910be4130d88dadfb7599024be0e6c5fde561e2eb4a58effe46c4ed546992dfcacc447dde27100f16eb74570951962572d317f29ee9a0cf17b2712d7c2bd3a10882732a04810dcc65982aea3eb9ff40debffdd0310d467ba638bc55018901905cfe8fccd28f523db9a4c3a57e8ffb3613bd1480a421beabe759e2ed99d9d3a611bbb03b3a6be21b58c410b5c2bc5f9676693d90fd656b25c805d1029d29788547735fc874a9677e7af33aeae4042e6c816edd33c6c8b9886c7ff54a8caa700d710a880f7c840337cb00c17026fff684424f46178ad46b31a90f795c88b35daad7c2ed7d8f0e2d59ece7abbcac9e73bddb86b7785bace8748987500bd751d79b15c4a06fb2769233f2fb0379fd4a97fc00f7157a4f189d18cd92c9876369b8fd9af12d2d2b5d2ed6e5e1d0ae86889cb77ca6b20ffea1c12965da7f813b657db52a1183c506380351435b2e7d1731ceaeaccfba4006c11778f9f6e365107898dd5d41c1e891c72e347ae03f82633c0fe8023f2ba7871770d56333beccb96cddc11dc07775e09a477e710b0d84851863ca8301613ea8be0be4331f5748af0667022c01015f4aa4361200d290ff7692f8a34a63a19810a32aae2af12f1a91f297fc9c14fcf0e9ddfe0173908503984e79d2033e33856df15879bfb974c0a246192c555d1c391efe24780be4b7232ed19f3b7097e309f1924d489d6592eb4693f8cf9297c98d0c3ca9cd7d55ea60e11656c2e88f0f54cfb96b4623909a2e888347c2642f4abd1824c56671d393983dbddeead3a08deec37d39e8e3255fa8970ddf1a2ee7716e6f7cdf4404fd026f31bbcaee2f2b101b87885de423d76ff6453328e827ce0ea1803968d8463cb0ad93a9bd170e56dba65fd2f5485f5a63fe87520c03db868e097e828e81bdb0c8be9a9b4256163de8f38e6e59d9c57e167df7056fc5aadd9538dfc5025be1e93b46628733b0ff6ecf38df679790b70ecbd65595d33448af841cdfdd365e9d71d6d76b3e755019bc142b1dad449d4d82505602f60f053b1f2070fe44ceacd52633711af609b8c354ae609a0d6b6bd081a0e4835b2fb1611edd167e5a30cfda678dad3760bccef537e1b6ac45ab59403899450458e6ca6741853ce6b66e04f70cbea06e53e557b7f1ccf52b1be486cf75bf11d28c3a8b52e72f4b8290f153e832ede5ce030e9ea7a940b9f589f0bd64a232f8e0ea3fa1faafc96fe02f9ced5ed5c2b54dcb70fe7881b3606b004fe519803c4f43830d368a42a47254745b897c3920c741829a5b6d437a69f1abc380bebd269db6e74b1f0264c81e756850e35d28ac54e867ae64e260941f71d547c35359408e171bff43b55d04509ee608268cf9bbe0e19a0e0dc440aa02d94dd86792d23cc0e8116e49cbb3f0046e4d7810896d6338b1216b8613de169698eaf407622d57e6cfc249b8c02b657f4844a2e94b58b5c54083798d67b616942512e3ee65c4e20c16c775ece3221893d48f29e0b91b7f7859efd6df690876a5785805796beb332e2b8b144cd83462bf7cf6344830f2086c2df7d63f556258d08f2bdae6fd610ade210fb97417326096f0345c460009a5f7d1d540817e80f3c9eb8f732bd395e78b2e37e0476a66ed40a2028fdaef6a1707bb483db8ca7b573810ed79a65eb5fabf2bac1302732f30a44b2628eab4ba206f49f8f6c932489eba08ea0bea3f928cc1174c58d224e3b2ca649a9edc7dbdb5713a70af4c44831c3fe1590da5ce531549942acab9450643b8aec1869a6ab5adcc32a84adba1926dc82a38b78a94f9653b692188d5f1d210bdababd5420f8cf17c3b1c93be7f1275437ab57a98d1ad8feefef05097190fc9b1226998b6f6cc75d73f75b8142794af79ea53896bf7e77224e3f073dbff32a3439f70912f1b7089b88fc1ca6d78ac6c7c9613946f2c5f20ba4950f73cbddf9d9cf0126e726e7443515f3d342a6352cc1e1faf9390cccc750687e61583bca56341a9ff85d1544a198a47ab73c66d8d99352be8abc1e57ea005969376853d1b92f3a1d95621270ee808c33c99a530745c5de4e37b1bbaba6fba9630bf6ed4425dc473db2df4b192faa7b40a48dad97a3df875976d8c41efa0a1471065d7e741c948fe8bb1eeb53bd692de1d3ee4ac1194ee9144d615a5b78fae910fddcc3367f40de5823dcb66a8d84c6807a5567c933a7eec05fa58c4adf30bfc358d7b48812b01103d42aeee2df09c5f09ade13384010ebf6b44c7b10c96c638e621dc0885c27c29011bc2e921f9b832cf3448501fdc8b482848213323299b979e28772c84eb0f20d40bade7f4891237b67f606436a05548cc57104596ab5b8e49120cbff305e5a87d5958ed1c38d625a63c5d945f730d8393c98e947301c4381effaaa04220dfb79cadabf4cf9f8598795f421a743f04434138830414ad20d310f69a05c0a5240acc3854698eb81391f68e97c45ec815d60c536b2cced1dd40d36938f3d172d29fd6446bac7d4092f3562920733a3deb0b9e0e33d578eaef87652dd2c77bc9ff38fc28d4919248ce0761219f9ec05e9ab919495d7ebddd0a51363a6db034e010df45d275e28b2b31f90f3673cc079580393e3373db3a5ac76cd3e941320e05935dea5108dabc79da58cc46261d928e0ae78f10485277a4294b2a85b7a42a8f82c1c2230baba7a32e9a34c6e0c2ab42d2a49520ff7ca3407884584b9db38318e8dfce1e9df9676d0596758d108119711e5725c3e9aa2c22f4500c5262dd00ba2fcec9415b5eed743a083392783217f95767c029445e1f4bcf0e75e117f7dd437a69cecd1fe40555a11000414d44a6a17a4300288fcd5905b2c0c32d1ca861ac6dcf0b61778e382f46b3677ef7392c2de0da12f5c5648e1f3a8c3b9065ebe32eb7e48903e6cf6fa672598590962561d2052347f0f64016d8223cd2a1889124d586cefd57a2107494264d2d735f338e741597a9bad6b4935f2fbe60d9bdbdf164c978ae62412f36049340a55886201c350db2b037bdc7641d85a6638f5d661eecca126998e9fbe93aadc7ec5875be71385975f9461cb3e51fdea74b8983d8c864398f852708b9f0d91ed89591b17322b894e71349e8678362df1e5e6ecd33f12b3425fbac2fa29363af512d38f6b76cbcf08f5fc19a069ed3e98725c871ea5f4432d184c7bb628eacc2713361bb99081770fcf7a66f663b44f00572703f46dc9f0ed0d53a119b6904af5da47d943b4679c13eb1363e9289ab37dee98e6fe1b2e87627de94d660a51e7d9d10d190527cbf016a2458d64931686afd2988962b8c854e1d1f874dbab3061b9c45620ea7c6cb1919cce71b7c7869126f76806ae992d154bb0f660927c3a82a2b86283e98148abce9307831d4346a61e6fa5388b0eac2825391809b1659b95bfe5277ee9787f742fb255ce4298ea729399b26da6e767921f67341726cbc05b02dc3ea0eaa2147c573150c340c91bd0ce253edc4e2ee6f90fc0a4d1401307720b56c56c7eac37dd9fc5c383f3e9193317e2a93cc1f49490f80d10c1524fd52d8f5dc78e9047d1f5141ba1a19375c824551ae9bf00d6d74a4e21e5b9c134e81a331a175fbbb27c82875c7d809a03b1e28c008659de83b206743eb401f84d8e43b13df57176359c99dcc870985d9c74e64d49d6bb0bfe639080ca4f7f31f580dd9257d1f6268a027070004b0b1748a9e84be3c31b8f6946f736710a1bf02d9cec457db1aebc51291a0cdf63cb7b870ec634de0a94ac55a71c6c44567583cd287be7f1b8f5a8d2c27ef748969231f0ee9d679ff4f07b67feaa956acf69a521020a6d4f9f0f466fe35c93c20fda4d8ae096edc6d429c2b15ed4c941384debc6f0a3f7335301e09ac3253ec36d007453adb9a34cc0df0d5dcc9e0b8d6d0266967d3dadb88d7b6c43a9b75534d9ed67ee5de36e38803643e7f8e784311dfef3763066270320363f8af9168c1e37847cdb55a456f7040fd4112a49c77e347737cee7381fb0c70099a7f4cf38b87ed1f30d3c7cc02cec4248cef47b8dcc6659380ae22b92838259fb64ab6e68aef300edbaac8cfea1b409925dbd8c3bbf2c42c002d75a906517aa2e8edd62b9c28e18cb3e1d0c01a44721fe2793234a6d08b6aad724e428b3a7c7ee1dfdf7722d230c7d316e946a8704478ef179144ee80cddeab713f670e76f26de8dff558816a8d1b0b7638cd4d6cfb254cbfb7252b6ff88b12400733cb0b875b56f411d8a1ab12cb5c1a3e22e89225944d9e527ab9f6d2c07122f0436303d3aa19b9935d71f75c1c7d40e45efb51264818becfcd3517b8a44666d361596c51cc32fe5edf61d48cb85949d7682c3981da2a09286003390696870cce5d96f67afc37b69ea0e6798d518f8ccaa6c69a469bd3a152b6cb01f2081c44f042e51a8c94d13487f4f96cf0b0f1fa94e836bc43eeb5885cdcf8382f6962b471ce78d3b7e13fbdb186982cf02605914f188e96d89d49935e2b38bc219da99734ad61e4c88dd260eba444ee6bf18799df040527959d59b2cbb2ff83882db7a5a12b1ab473426f2d91e7826aee9ae5bf9679744f00f88788d11903b8d4c044ce26dcfeb3da5610acd35e5ab91182c2f2d2e1da462aedc550c5eac1d39e8d7cc3e237cd58070543af7b1cdb3ed2b17316c8eada99ec99db14d7bff7daeba3805447642ca359dba9710a8b95a7a2f38587ddf038bbf9d9e53385b5289e3471e597bc17223830dc78044f841df5528c356d498960241e79d2388adc1b0f61af33e68e0e9d094b04fa0dcb828c9a1c65f6dbd323df055532e6003f225ca5290367a4b1a0eb8eaabe0cd8809a01a9657aefc7eb93e787926d3832ab4bbad290ea71de20d0418ded22a0ae041f1a0c0d4a7ac7774bd09a65273502be2cc7876640b7b1eb9638706fb93b8eebfd7fd651a3a7a50c359157d3ef1b4c693a5cc80786908731534a32a9e67722f1dd589ea7aab6c473664bf00d787ff798f31250cc58ca1f9cee59d5960d82146f04d1e9091ca150ab57bf30e9b8c8ae4062c946d4f4256b20c6296b23ef9ea9ffdb9daba0d69041cae5d28e2e56b1e5f9222505286bd6351066e1adddca9fb165b870cfc784622e722c10cb3285cb2fecf60ce95b3d05a2c6e58f28774b70c5131d84d6cbc32befb82b27214f67f8e6f9e0293a2a654f72790da1efcf578ed5ec5c1584ed86b00fb4436708207bf1216b346c1eb56a4424f9776ce990778b0818e3e5997e91ed1110ca4984ab81c2fa90c8889e6210eada6991a8a696988de901d6b9a429cc8f805d61e504d1f649251bba74ba844738193fabf1caaea8cce6e40ed9d8b6e97bd1fd447ad7a406bad519c0eb8d3f959c4c045d48056aa51720739194fedf474518da6fea2699bb1df7e51fec845fcb7627bc109198047a50857bc8ba6e0539ba884d5f3b8c96fbcfb169b83aa011fd9bcbe0e81374a741eb44a4cd201fd6eb56c9ed36172f66ccfd418372dcc9afe3d2c44e25fbdb834a738a94eb20bf3cf6ce151b354c760f422c1e7ca19e39137c5ad3a4cbd9a18b84068d275b16e42321883182bb4e480b6cb46dce838fe91e816286e29e20edc7dcd4ed82f5e445e3721e2afaa9b0db6e9040cfb221821a748c90a64f61aa939064a3662a366e0b689edfe9676daf1770064f6f303c8de882127b70f6f23302260a4ec86a711f276aed4e9a91efa784e50bb66ea9dc8cef6823319f3a1ed9b46f164149b69463c34074a1d60b889bcca3031c991d5a9fff4fd6b24657cba33fe199ff23cc1f2bbf27de43aeaa29b1cbdaa47d6b9d56a7e13e89727ecde2f6e6c7709d85c5466c3a08695277204bb430d4c5a86aa74ccd2b8eabdbdb0d5e21c8828d44cc6156a03216b82271b47491adb596c1c969c1fc25739dc9bce6e4d39167c5b2152c85432fd5fcb8363bf0dab72853bf60221662be524b0c6281dd9fcc5573b91d545557fe55964f01bbd346d909aceff21640f38dce8fe9d9f7037fb33ae1bf6c548ce180bfaed7ba65822f90816c6fc5df63e6ecbd139abacd754e9c07903dd6bf8e6987748f71e0d2ca12c02828b485fe6d36178557c9acd59c4df0dc234147d09f7ebe685cf434a3fc12b21a120580fb4722617ccd19c64d8c9fb46bf0ebe4901d30ab76a76b43f8aa76a51677fd258336ad7b59719db33c32cca2cfdff37abd5394b7c8d495b1695427f012b70de53d421ec9cc145fb4593642d163b4223ab1e8444fa799646262d433afe304f74c5c4a81c1c4addb63097fcfeb5374d4c6fe38dc0b3ef77e680f554d07d7a4548611852567094f8154391c28fceb237d978b2f7ef129f3bfc84a744af568dd0f1976bf1dcb2118367a24c766c2e8d120a348494fbbe2f7b50c2c71a5ae704fe8028da3bfa1b555d3644a3d849d4a5fd95fe27cf837513723a52883fc9169f5f31d65a827e7dc3fa54a237ce2036d5a551102b025b624a27e1ceeee90a7b99b16d79015b5930f40ebe25a4ac58b64bb5567fa3c0981b90673196008c9b1173e8e346eb08b60a76c5c109c8ad483e54d2f6cf9ccd96ca2b25f316414b0cd72586a2cf93e109c25f49e5b378b9d1b351b4dc319744c732782d58a65e874a3fde30f4b22096f0eaf86d03d2ee50e1ce734ab37ed8d22604ba11c50ba38e6263f6bb2a9e3e619ee6f68013b6d84fc2f6ad75d9a5a529a8d2a62aff154c2fce74a5ae1348e363fe4d9bbb6cc3e229fbca4f907f1e87bf9b0c474bb386bdf51f38272fb42094c5821eebe681c41d2144a240563f4d1a10ab7837ca429fda1a3428513b37afe86a181052b048e6841da7ba1a0bfde751999b0117880b6654254bd26dd91092c4398c1c8a2691ad9ed5599da2c7c8a0a4cf7ce4fb09a415f8beac89d08712a574381c24a1eed79a0ed4fa606d290e09f6e797080ebf1ef25f090693eb901fc980ce1de7691d91e9bd1720b63c20597d373f93cf671b6cba12493f2696f47a7ffe4054f459de8ff0dd1cfce9da4783fcedf5352da09d2b6c262e54694ba1ad6bdcd7c9d67f8cc32bfb15a5c1eef9aa563e0e980db6f5d2d78039ca98041a47962de992b5f60a95697cf6bde6e5bb37d70ac2098d8fa28d8eeb4741e183ae6e0d2dbf2c52f5098ce153e3e26487f1a63cfb6e1c2d70834effd62495a7b74341f01c3e448206e26cc213d74240207be267fb219f4dc8b396ceed99f43322fb5c298440c553b9ed229022290f16a03a06dd4be3963718d200d06471a039b04e4da1bdccf1382eb921586647b66463b569fd053b618eec7892680fd06a4fa63124f2a42d30b03064e8ba8b70145f8768a24f8af8a8adb844646de51d044d132e184ed76840547e8649f38f452f01a4b79f5419ab148f8c7dea5baf08ad75365ca56e28690ffc5522399502382b504fd7578fa43adb9b86e0b6d86d16b722d97985a7b796b33563050dda52508a47dba64b0b3f703e751543cc4ddc84d30eaefeb77558ecc29c7a2a4a8fb4b43f627843ebb9c0bbc59a1ba14b75bc92ea1ade8b7cef80a2edf1a6b4b9a42b4f0095dd892a0da3ee5068430e9e61715afca16dbc2ed5f6050f80e9d660e2f66b5e880620270bc420f4c6eee460d38fd98b8739b2959bf5cb506e8118a4850f99a600eb1c2afe4b1cffb562a694e3f50529da6c2db60477325ddb0da3f6ef2058bacdd3a1d1bc2203f7a4734c65b05436b825eb61c47dae02af45f06835155c1d7ac67caf0b0f1437ce9224582667f73168985f004b7f09994de946c440b02edb4af07bc2d126462266676c9f8e1c49fa8ba0681fe8a267bf6cddfd1e96549b0b8c97d5a5a30606ae353649a3816face1c694d4749e3292b2627c5a6ca17350a61be330b0f4cbd09dbb9fc0683820af5901f20eb7a8c067ac126efd6b3cd75498f7806ea7c43ee1a3daf94c8d00f5d8dc622b92ef8b507cfa4953f9a6605185f051396eae030b891b9d7eefc4a13ec43a4813ece7ff8a963748db3fd15b809f0eb705e931359aed305f04609d0206b87b4b5fbc29eac579f184d4be6ecd4bac04f661aedfd69cd11596a92d974ad64caa5d3fe6a3991e9e4391d68a4858b62759f70334f1c09d0c9f21a8847fd81794cc84bfbc707c22588c94452ca7166b3a830ff3f4803b2160f92f4409565fd2b80933a94c215feb66e790dd9dcb635080abb4bd2ffd5e43c9cfed483cf5b27e18422497021413e561541d83ea14cc9538bdac21915cea4b5f77f610e9cc19201b8b11db9adc09b204fdc41e33f9f7b5da690fc182cba46092762f36c702f106413235ce8d09886531a49575d2f108c1468be4472117c8f8e857894336e6e306cea7e3604d2264ce9524bdaf7df74490440afb30c9b8922b954970baa29ff96869a6d8dadba9aedcfe0ea95c16b930c33898dd613326a40578516f93c70921cedeebda0a1d67746b43cf0c2a323aa02f660e9e713413ed5580a550346bc8fc1dc4ae04f91b214839bcb6d7c30aeeac783a73798349735d7f9be3313fd639070a7286dea6f791de7c49e34441b91f7d14ff54f66d42f16f5698b96a0a4b9e5904b1f9d909b9112e48d9a5c978d6a69aa78e7ee8706b4ba944bfce70e43430e697b6bd0238165c67f52e4bf92c9d34ef9d2643362b5798e21a4f293197be845513eec06c79d55e10a84bc7ea7cce2a65f5b6422926bba15ab176b8b505575f2b5959e67efffeb5f2770977b5fe484e621194d2485053a64d3899cc5a40c1934eacfe6bc04aa8b0f1f725cdd31677876a2bb3e85a1cd9ba50d7ed7b80430985fca7261f3917800158a88309067038033ac7c71f5fec432942cd1a0e408abc1782ee8889e056e8669458916c20f5686ed8c116308af1a300541a67b48b08756bb2c56387402861956b96dfc6704bccceaffb4b5b69513b15cc8a0b7ea2c7bfc162c4df7cf3f7221fb6f7182b6fe8eec61e8937ddbd1e453132bc66153c08f03abc635052dfae2d6cdfbfce5abbb406600dc2638b8b542a9388ba02710a87dbf527ca84eb0f33c12132e97ff833006b6677d42d0704fa60eece27c95321a85f5143519d29e04df8d699d563042cf046aaba6e8e08c818b3be572de99cf51db67b193807ce13b59083e7c8d7030db3382d46324e078ab2912ec8081a17fabfcd71b18ed31878f371d56bfa96e57cd63765fbd7afa03e26812606687f0dfd175f1f9112689431d421d489483d207c91d9bbc52ba2ee3b71524b2eea51611faf56e2563cabceafa54a90028944653204d42d1c433a92f96954be705747d3a30bc732e129577f89631553fbdcedd92e8e4e075f0a474e3a49d4219b72d1903b4b183d7acb16c09a9eb21161316cade9ef3b6f6f860565f43aedcf67a89351965c3bc967a4a2060b2d3316f1b881c98dcd6f394227f12e81055953fd67831ae3f4cf4167fbadf630e01b284011a76e21b8114037d1a64268577a44b48eebdf5e8a223b54c0dac1c93dd9766803e24238c0346ed5decaca518287b818902dda94b1c1f07a7b6c4bac1547b7789902287f6cdea6eabcbbe54fdc799e1191370874415eb51f5ab930e878888f03abcdf7db256fd96f6da28086777467c1fb49ccf5ed5220f8549f70f8c2d3e5c26207137aa1cefeb656f21fa6316c9f7948fb1c7a05ccd6e9cad495616f16f1be7e0152d6f35cfe46ffa7c454558780dc88b7d38686eacd25c7310a2788acee00869879a5ed9f76f6580216997ab110a28d33cef566b8a5275f7f256135a09343e8f9afed59f3e6bcc650dcbaaf88b506497583d4fcc4b37a59070f6e4b777f0e6dc219a775da72f8a9d5732ac78d3d6daa93778805091810e66d3aeaa531ac7e6aed6f77ed6e502de81864c4d27a3a4564347788330886258cd07cb9048afbacb2a4c5f25b78ea02be23927fd90fe581e95341a87e81dc0a15a533f73c685a1444294621684b4bb950f6cb8b0ffa4a452fd08c18c6b2db7430c6221ae72b8a9e73e4c53f474d17868f27c573b4835cd9cf87bd0b4d16315643cc32b7ee277d148903bc9ec6a4bee5372d14137ba9f2e2d2b57319bd38add5742bb3af1d0186c60d68c1f5d7593ab76bb10157ef4f1b3091b3ad1c3a49fc5d5ed41d266f2aba24162eef38696de2e382af05831a07e5eac75642117ff9cb7f8452198a087ffee20a794aa54bab96ef3e70df15254e1c6f1fa6e976e71275312366bd662120da1aa552eeb2d114751718291aded2365935767042b31435b6c4d12e8faa4cdff5ea91b5720dc40c736330829bccd98e2038bf7bcdaff7ed387201eb31752cb329cfc41fbf87e1d2d6c8d738032c91c4069475f382772f6a15f907ef56299d9bf27dfa26be890dcdeb8916e808798135ea8844d7395e2505863424293b6ce917aa07db296a5fbf373d3c9b978183f275ebcf5d71e2e4b7772365f69a911db327df8dc93f8ab3c1733eac1bfd9a30389e331d76771ff31ef6a2f4517ef153d29bff9107459b99904501c631f48cff82820aa0d028299a5f681d70a586788996687bdc2a55e5365146d001e37a4a21526415c9404c0924973c86dd12354d4dbeaee340737483f53bcb01ce5fa1609def812903bb3820273065065e7890687e62012a385fbf108dd78d36ff79e54539b1a8424b72dfd0755d879e4ba2dfbd4d3f00120ee44547eb6cee6e87ae10cb6242b030bfda81c413dec3d469c7fad11c6a9ff17c0c34d3452563aece6fcefc937d793c8f305f856e00fed99505baf37482511c8604a75017603b0d43e8dc6086101dcf7701f816fb6b75f1f74f6dd653ec684c6816c0f80df1a056c1cf2d95474ef58c5876919b9675abcd0ac48005d66358f79d7340990f88711768af75170957e627327bc84e6481d00d5ac57b60668fdc69d1f6b06d49b84c325afcf3b85d09fa0d6096376a9e7e33c0e051164e87568e4c177242733e9c4a9a246a7a59f429f1ddaf1cc9d3ea714108dc79badb37d41d6c9039825592a99328bed5e992dd2f72dfa3974a9df6ca42d19fa4b2eb8e85aee6de471d235c7b7626f3b33c88577b5fccab2da2f505c3bfbacd8a14e6eecfca2b87d1ec3794aa1aa53ad5d685d15a8a96ed1b2cf54a4841ff6e7fe80ef6a9d24890dc83a1d76d0ad3060f81c53e1e88c202e9021355bfb99d7d7fab7786383d1159200f4dd672843729baebf675c7461ad52b946406bc66fe935829cecf2376363005276b6cd52b27b2b048b7cdbdacef8d8f4f9468f753af3ef28e552e4e68bceca2e106d2a00361e8c3d73da9f490876d96b081d5fb1ed77a65a3353d1109c87b7fc62082a3c1724e33273af7f6efdb1a9fb011d6c30f925cf5206bdd230b3110734ac5206484acaca9731891ef8e7c6ea90c1a46d838466a706a702c137f0c3eacc9b5bfbac5141ec81aaddb5b4d6e6e76527927d8ae2d2f66a6bb904ff104a4b7595f6cb78502d6a3878846d9135d8443e00ce64a582baa1bf521cf714f224df48af3a56d6a0271b96ed3944fc3776fcf99dbff7f0959f0bcbc789d2846a2591059e023874f83b9488731c886a792baf1917d3822357b8492f4902337c11f636f6036d836b206a03768232df051e7c410e7cfb46da63712543d3ac26f09591970d455e83988a29da931fe2dfc13b7cca6d922d066adee6ee182a54cea372c7c1eb17fd8f979ae14778fd79395c5a56d267cfe19f841f6c1f9d8de58d32f3bab2c78834f3d74c6d84703ea76c0967c6e0125c95bd459709ccf6f4f3ccffb0634c770832dd76029fea655e0014d08ea05b6de7498f781df7e793a933472ee90d9c0f6fec68d49cbbe25bf97dbcd41048b52beb0498285925578bfd00ed004fd870d78e97b014c0f99cd0faf84d184039ebadd14d8acf17b6d03ee4d8534748374286112ff2fe07079c8a41b3036b9a7f54b61cb234b2647f916667ddb6b7d3726609dff4c3ec36860f9dead2f495103cc0bb45457e3ef18ddef04d558758b32599493ae858bbea88feac45dc2cfd5926e4f09119737ce79d575fcd2b8d5bd7bfd1aa1552d5f02f1942c1eb3e543c74071b5b7dc960e48fa3198cc96b970c70046a40de3db3875fb34f2791c8e87f3d3c7392b1f2022c4c44b100fac9bcb57f8c94ef21fa361210c7d336f22d069d6e370d05b6b5bfdc485bdd48471b2c9b3f4123fa019af327873b1cfea988be2918fec9d7a836f4c4ef7721ebd5db8c702de59dab58745f4f04e75221d9d202182ca949be581f5196955c28f17fa6efe9208aa822d6a578d572178876426d1b958be73964091d4743157ef629f1bf4e4a5b18ba701d8b79458c0c8d28ea9cb02f877af441056283ed0b89ec8f358c9e111dca228a18499d72397b9e6a53086386bdb66df6e0227c7730db997c4c186e2cf0b162c04e47f4450c0cdf06303df400cb067380fd160d0bd2085f943e9017477f30d0c006af48c200dca151b42aff554b6739f167fc2327e156e09347c68026857e8e5162f112f04ffb844bc9a540df43ec3b72ae147d06073e4869e0b16b281927d4466f3f7ea303ef5bfc05e56ffe2b386ab8a3a56f7137f15943d9eb564d608b816a5e127d4e2630ea50b006a7146f07a73e5376ca4cd9d153803e32ee6d745e0750aea3ed50deaa6d0505885bce71a596e19955c0771af3a1a676e70a7e25269d4e1d73ce78803ef966add0e6c5da75bdb6ef94e4ca43a460d1e29244ff12c0c71ba3c482a4a9409ff598a69ebe1c6bee38f186374aeae1ae3a4e5c11057edc2fc0871d27b9bbfa6b3168b67dfa069209241f0743dcaaddd0cda493766c1e7cc8e0eac9f55eae28301c350f5c6c6e880a9a1df24618b67f22ebbb29492938794596b359bb35007b1b3acda7b7c8d8fd666b74a875fdd1e1d9c77336feca27fee14cee1e5b73b916271b60d40cb77038bd9c738f40a59fd299131b720b9b9f0b776613b0631edd1450b73cd4bea57092d2836891b442e355d4cdc9bcd7f6d8f3e1988e69b3565a00a22777469002a0f8e115c199e6004520fd745b953bc70fdeba4224eb2c5e8b5b118637afabd9746d3a41141a7092811e8cf9cba59137b8485b307f967b53941926fe01f73b1dea862d6c4787fb8349eecf1efe35570e0180348b4612e8d07f2476587fe9941721ec4d7332dce0a31e6190335db45c495f2a76ed98cc3ce1cbd8ef8a2cb6ebc972ddfdc03414d21057ff804c5f3386df11be04d4ae70bafc3585f417df739f39acac4d5827b097c10d83836aa8e81bcac606c0e8b3741c00f9f142463b9611eece3d2aedf836dd97305bba3672afaab7cca419df9b8ead4f5cd3b17b107d0e21d58adb630ab00d500c296b3ee784740a878afbdcd4386c986759ba440fe7c563a720d351132940e0ae44b1d8530a71042c7ffea93e333fe1caa3d2d2737853baa7a2ca59ef343418393800206a07de422fa1f01ebb003ade8e4598fb0e3ad76ff445327d36655e94c04176a959e65feb1cdeab8f0169f1b7edc9ca028f171e25cb53efbcebd50456b3d4fee32633b22c14793c291cf6dfb8c82b16b90860dadb42a86aa3dea26b92c61745498123e8f4818c577e1b79da928b5badb988496c00ea38ef91956c118b5a6476ca52093dff368021bc1983942ef2beb4d0e36a3ab4b38758ebb7dafb80e5cad42266e2749b769644419cec343712ae7cd4143f9ada052f1176f8131415688c19facccaccd025615791bf4ffad33df58b7b35a948aaa75e618f714693a725a0a70022857bbed44a93de5e8bef41d1567af9866c72c5c6550d0a3e227f88db308e6f5ef7c15bf60bdba39543b03fc1059b6c0eaf4c1a47ea43d2da5e360b7a1d5b96bdac8bf93c3411098f5f3d7dcc297766007f3d0e1807ddb086320dcff277bd6014519f27bcaabe0b9489e18186611819964b94b55729e8c766dcf9ce0706f8fd15385fdf222309a6aeb125ba0e3c23f3ed69d219a3e18aa2af1d510a27c423143ad919161babf96d058ad59f2abfc1b4489083d010562ff273b992d8466142295c4bea189e211367480a142ea6e45d474b5ca664f9c2025303fb453a67be202cb7cf2854d7ba380025ee7f1352152ce2eccea454dff1c3b1f42ee6b8d472094793466b68017ee477bc336854b3b5854560c9dca67ec5e12c1125dfa789484766d7b615af83c6ad20859e104f7c9713179696b8564ab4e98a55b499d812bf771cb3c97a9078c51f40d43606543385c8a8ed61571c644846a0293498132d89adcec04d8c4daffbdf818bc48344ffbaabb448b9c550699e4d3ebe03a3e8e80c635253b51b1f2ec324390a5ae6e86e6873d7fd14c6f045e89f853b0205a882e43c671d96aacc33c77bea8fc931f13334efd3144929009debd5b50a15d896445f9cb6042bcb1cba86e0d7b229a5d136b542e9ce14b7cf3b817fd40fa761b0b9ff0143bdd210c184d522896a555fed1cf8efc5bc95a6e77b1972c518237f862ffc3f71bd8d909fda5b9d8a736c13c156ffb1e18ad1a6986d3267ae207c221306c07c153682f19b21133cdc7e52cdff0f3d27483c30777523e3eabf47a6de8c9469052efd7b0d42b7ced2cab42cc6d3e71b4c1ec3fd0f377d569abd881a84907a4af035c56721f48aaec32d90e848b52b77c56cc5e95acd5e49b2df4656cd310d6a8f398ed78d7e30adf542fcb3a6896b20fbf8e3897b9e568cede7c75b1bc52f03b316f98227335c141ba3ec803bfca15b023708d3a7365485b3838f2d42745004bc9208c117eefb0448085c888243d861589e15a590ea36af96555a5765f070907e30e7134da66af0d8e0bbc43ac420de6cebd93e5a2eaa1623402864e4d21b7df4ef7b9b7b6b8e21a9e863759b440074fc173fc324a3fbdcfccb5e67577fe7d6bf61f39dadf30a3199427e9d98a1e1363b1491bc241d55b84ec38d749b98af597db8e505641a159065cc41833738fc2dcf8a20944b240b72885cc924ef5afefae6c16ddf46f3dd03cda60933f37429d79a39ab1c80b17e686d8ede151f6d375ec6f157e06552fe1f072cfefc303b82a357a9b908672a670d7367df68c2faf561b7e88bdc08ecc5d28ace90f0c4164176004e9170bbdd37646f82a6428729b891ba20f64d106ed3db249a0167866952290c5a71513782ba8997f2f94b8f3b62b097a982d3e534e54d5e51827cf406300878ce8f0a0c7ae628ce40e732dcf05b35101f2daefc7d64103361508eeaef2154a291b3dfeadc72044254cb26ccf90acce142c546e239c76018254cc16420c2c2f496577a9d8a9f725c603a5ea68c35d298e4caa4dedf864c5335297b54a1adfb5e61fa652ec837dbff31a593377068da3201aff624e514389fb950e78450a11aa16a9c91a129df3e16762a817e0dd42a9144db0f94b9e75b24faf3758f10dd31663977d13cca4fab6fd37b6a685a343ebb561ce4066c7542bea89a58e0528cc42e30a66060154fc9f0f11f929daf3f44f19e6e103558b34b929cad07cb2d1f4b0b5fd157efa1c45111c9a3c45ddbc89f8e66b85123807c2bf6f91bbcae70f3b526e2e93848e28c90aacf7ecb6c033965bc85af0824731269a6003ef82a6869e02097ae66cdaa57e915e786fa0e2846e1f30304bd67e4c6e04cfa85fd634484223933ffaafdd020519b1bd2a5155ad3115156ec991d53be4157036552575382c34804fbb01c6597d12f94cda6fbf5b728b5255beb2366a68f1da8064340816d808de687876b481608844b22d91176c30eb9c679a448dd2ca158902b5f0cd1800a44392525f121a7a6626cb99fbbadb3db6fcd7dda193afea3e8b278f8dfbe638512dcdde1d2f3e6f25e6bd35fbb7ffb5ff966934946821595ebcb05a6aabea80a437fc3f73cd38945d337ae008f61289ee46261cd8dbd30cb230fd3c4cb48b025ced09c08db84a98d2f1ea871dc3d6d4c62169fe94111506bae5013f2c6260e5735505797e0ff00cb97352622ee87595547834f43569b3ff2091ee59108f2d2952dd35c8da119b595d272c6883f920b58df6c7825016f4eaf6c812a4abaf6a7c7190524b5badb509587ba8e9c197a3d268f4497feeb547f476b69ac88a7ec7f4a556b3241ca462a08ce8cdb5d3f3a64484718a9dff330b22fefee9bf93138bb6f4eb84d43b8837a3f0b24ca49aab6b877c6ec55ff792f7f357df3d01156a502f97077c9358fc512212121bbe856d36a22ac2db338441cbff8cbd1da86bfcec7a3e05bb572e45dbda7ec1e544221e86eeb5a1d1c87ed84066baa1a15d5eda24e9803bc2fbad0c5085f14c71763b1234e2aab6ed28fe688ab56369877bc68b95ff9dc0347b2789d70eb264245de77af22686d727417067948d56211c6be046a475b3728a46125e4967f091d3147baa670e6bc82d987a9a80fd7ce8719a237d891469f64afb5ecea8566b6fdb2b8af32dd142296906f6512afa0ebe979f47c6408b72dcefffce9c3c17c4bc1944dad5ddd1a8524100146b2f44773736483ca35d19e2285ad6b063046b568dd28a8626f5652f0c7a1929fb7de392f36a8e114cd35614f8f8d9b514d6c96de1e4f6d26e4d1cb2243371d6ff044b40e85f7e6e3d4815851a57506ea8719b7ac1f38c7525157c8f2d7a1c04a10d34d8d3bea2ef79e9f4e9c7c658f758f8747500e29e2b1c8363f8017183ce2b49d6b691bf296fa0194065558daf729536b8762a05a6efa8c0e5b379691790f4a36c9aabaefc34a89bfb4fbeaa06965463f4e874acf235c291ffba22d4300772fc4f8f8bbab9bc928d780e6d230efd66ffb83ab17a6371c3e91300fb6717fb8c153da414b75c9c2e6da078c3bfcfa360594a793b900e94194a8c3fb61e4492f293e28b0188c3de02dedd99d6d25de8f952d49baac0cfa524a00ac5e257bd3421047eef14bc9aa2eb9d1fcf257bb531604148f7e89202f202cd49cb6d2d03847a3cf0acf293007324c0767425bf5f591d527b3a2dc27d1a1870b74edd75bb6ed7b48b00f66ac0f0aa9e388ade2e5c55592a3841a21c92ce41032cc0ac5332f455adee8b25b49c1a676d5bf1a93c2a7c83ed1e129b5ca1304a7cb6db6067da94acd370e75a59ae00c09f4e15f1b30e27d2c8642d3e43c5a3b0c78d78a7e7fce092dfc52a6d0e373aa3d51b63ceff6a3dda5012f9663d85bfde22bbc37e3976d4d88c6365124ca46bbdd157a2577257a5d3619c67dcfd17223825c83741287f7df671913b1b60068bd384d60dd7eebda489173397f171c8129725cc6c2be1d035c89e294f84a6cabf5e8680ae1ec699d1959f14e28dfb46d7aa54ed40023e6ca8cf31f3868b1b12804f4f112a10c497f604949dd9d391f9eccbd0630cca538ab5e0642d4b4a3feb888b990858cf5269e3d854b56ea55a2838ef0e410b4961ba85f68f80fbe57227bd7619163ebd8d601690c36389cf63a0c635c3cde3b6f69e8cff331e59442b855bdbe4e208940f90dcb98029bb4ce6f2eaee11abbad41fc3342053a25d2c53c6c54d079262f88ac11a5669ca7e51d626331d059f7bc3f0879cccd07f33cc160ace85f0851ef1bf4bc49a97a1b21268527b8fbb69af882624bc88a0646c142d643ec62b1713e45fca165ae32c77654607cd40956df0d812c6023c5d76bb6ce1d25fc1742ccde908fbad7f132124337a167ab0a72b3dad53f1240fad28075fa9089f40fc3999a17eae219a4fe74ad9b8b70d1ae373a504dc1df655050fa3f53046915955885ce33965a3965effd766c872637acb84b255775e8c1381e2076cbdf0637220632c46d25455f36b9cd182c25992524a9ef584ecb75f720dc8d1d287a630edc00b4dca8672be9e3aa9a322473de4a1c20e6843e186e409656b2b728d9c5813e09128bdb397a116aeb2d49a4e68fd65ce421001125e41d7c6b516863b5390d7058cb1edc24002816c3e5d4e96d48a645e749d14b078698386f036c0fc60e37ed094e5e0ccc735a665532a08b782b826c6f3771cc362c11f885b3de37e656147e8e80f1ed9ae90cea0e1b7682e55d69161d7a5d28f650a16ae621d2109a6adda7a13a9ce93760c2a470b92029cf87eedd62d47a9d6e900b9d8561b468d863920c6fc948d3013795b5d0b9b7cd1e56a41845bd47bc532e3ccf3d590670c1a2af6a116de2f444b33f451ede3eaeaafb99cd32dfde357e90596a1c4662511948f22e59daffa9e37bb4fcb47d947a62abe74e9398c977b0c064782537d253f2be2ccad4b95dd6e51d4786d200b0b5b7204bc8337ba2ffa2ec693f85917681ef2f2b3d692829c1c18764db4e6430900016d45418cf879089e740e2da897c0cee09a88c65361a1f388edb60ceba3a160dcfa06d540e5eb47da7dd2801ad64ecb080500fe0685e554c6ab513c3a9a8ca8790aac37668e2329ec530d27c5c996d5f0bd9c75837533f39389e4838ea86090421a2d6c43e8d683e009811824955ad44e5213d109010014277ddbf92cbe3cbcd51dcdafaa744a733bade1955fcd93b438d6b823e52c3b0e58cde0f25adeda6a7704ec084eede0a2a79ced7a350f65edd469b615ad3d7e04b3e49a8b6866120a5d49a6c2d11756bed674f3e59f6dcae87988fd9ec5cf454b73aaaefe16049b238542d7a11448557bed318c654f14a0739cd846201a8c36b6b90ab3d7cd80a185ed0670e3b6ce53f1eaef1026319fe06d07589aa1f698f07b834ddb310a0c5be82a7de98aca5853ff90f8170ce987b97f3e302bcdfc3aaffce7e0d37d5fd01736f3fa58dc8bd0229b7b0aed8e16f263789ad41c095cfac649daa310b6749afa5ff80aa6cf4b608c4886e93f5bff2a5ffb82f26d0461a7b212259ded30a7272e2e35925a80d47856439ccf93006489ca2bc09d584142324c3a20e50fb217a4451063a113cc75caa45e8716ea3caecacd6639d7b3a91e08971aeb203c205f5605d6999ba084f92c05250a5e0b4a72fd3ee4d922437fb3adc621611df787e8e84db816d5b42aabcc947b0d8d200b2b3089655549c27318ce353e25be9a79b827b491fb6c7871061f353f81c1b6067f13be9909165a44e281bcfcea49323c8230001eef329722d3bd9a79da6333ae0b4966995bdbdb043d29b4c126391529356e97780aacfaf98b9979957501b80ce9c1481648fb1656643d674fdf74026cf15a9e795e305fc047eae48151ac6f21f9d69938282413bf2a71d108a1da48750ee1af605ad05869ee0b2ebada51d976b7d38d53f5596a1a41f026d137be83ad683a2395298f098d169d23129b69179ac599963278b45dc2a407b474219807b58089ab25f3add963a5a256200b938232e20f055deeca551e193e27aade3c9d249c8109443abf398d023d122643c8062f91613c4790234c07813be08d0284aeb1fa1d9f55f089a4674ecfa11666f6d498253c1fa779d060c72b25a3ebc1e7362d183e94946f3b0b5ec108a9ae0ab6d83d24269581650539605d43603635bfddad3f405aff611e065049cbaae1ae8b664ed223f8cb2f10251f7d13c9a5d5dd0d18b8fc37a1c8bf2a8e8d57f5270453855b588a331431d56000d77cd5fe7047bf70d80d494d98e430a26afb61fbc841a792cdbd901b9b1995c58879a4e1c133c10880aa77d8bcb3a879c56282ed98ad0b884d70e164752eb054b345155a0b29a9ca501541ab6f7d8aa8ea95c0958e4b78a150baff325e60d7c96a714c78aef8eccca50dd9fe94c54de7eba3c9e6c3d4920f85b0d5d62194e8c2e7dc870d0383a7f0e75bc370a06c580e64f854a2ee9d8d8bc7e5920aed976e760472b1d6ee22f517200c137d9e8e197f26409787e5ee71b6781e65ef6dbd5d1d809c19144a64dfbf5183f0701b4cc2b5aa7c46d4db501fd9e42c106b814501f92bb8d4eee1e2484c9f58d0b2eb6ee9f12fbbd40802d324bd2f59678a84086ed32cb9f9ad64def051067d635f03ae59a1ef5b90e6ea900eed0a3eb934d5e09ceff996aa780141f0b5b4e310c3a117e4ff462bdecc52d03b24aa6a0a38d319f52a2faf0d43cbe6fc3441f16485311c43800bf5f33b264fee6762fcbe414c1962d46b6bf608175929355661964fe921b9b99c0ed12391d967118c0daa1abd82c58250ab809bbca65c1af3efbb261f16e5c56ca5b992dc98d3203b20f1c3d8600f17727aa72b131be3ed2da05dafd106b050c7808947fff98e541b141bd5c9e97c4e0b1bf4d8a82bed42100bcc89cd4cbfdf3194ff75bf9bbd9fd3af64b8c36f3b1db40b69a0d7ac031ce89d787ada6b8555930eab55a143c255424c71b632b345d67e2e9810c38cd9b16e39779f2f330aeeef32532ea54203756141974fb9a4fe21f972f96b3c0a549e88f60e5c0ac88126bcde2b243dd41e88d0722a7b868d37944d47f87207b5ba44ea3a7e851c7f4d454dd6786777bec6d7fcc3f938dbcba41ae017190cab578f333483427cebc27c0f17505bd8a1b0fd0cd879e886880529c92fb81282c1eb9357f3dadd4ce08fe2f2c9b87a53350fcc4d8302fcd4ee32dd7079234c5a34a5228b25277f107ad3ae3dc8b78757dcfba14e512ee38ffd92a0ca70cf8b3b031ccbec8eee3d4b0b05398513233c77ef3e5e5224c79a4a899866e52a1e35688af698d418aaf5e099a4ec718b5c5d7593a1e962f53f7235e1e02761bfd404e7f0521e8e434d0690bf8ac0a13e8a3aef0c50900036e4d4878a8169a80c0e658e95624b8160d945af1db68098bd8299912dce4509239a6e0ff383a8fbe0163f5e12bfa493dcb0fe2bb5901f49c42eea36b68a2cfd42348f693173438bdc7f50de7f025960d38dd504a0a97e68619e5fb29789c3741f0bbfcf94f81bd348f5b394e7460c65bb12913ea8b18c29304526120bdd4884c374370ac30c97c03c9675a646d60f964a714307bff7e4e32dd8a16280dc56fede49e5c49cd61c2515b6fa876f2328765215ee668891ab872338af4a7e3bfa6a9b82586b77ce47e0c1c836a1bff2348b53965c0bed3eeb994c9518f71dde0f23cc42a2f365ad26a745a7aefcff436a0919b76b9938a1f0789151d94983d8d9e7bf2b3b350c5484afb55cd8c68162f5133096b4ededf6cc548c263cb83698493ac7c8075dce0c5426dc13faede0d2855ccd995938507c02aae2eac683a6c807639735fd2bc12fd7470485b40c065be43907503aa2cbcc78f09ec2d92db7266663d39d61e2687bb4cb906baffe20dc803f8da072ec7bba4890644444a414f07412d0717df7daedc38ee0b217705da9ccb071a1d797e44a6dc94aeb0240bf96f8f8e6847b8c3b94ebd19dd6ab6b605efb17cda11d1d09d165a715bad71b00aca7b74bc16d4a3202711b6f3410c35a933516dd487de1c8f17fb9aaccfc8c43fcc7244b6a4b0f01ec7bad13bab4cf3469b3f1756c204fde78eca78b8ba1d4dfbba5216deb796473210dc8895606e1b419a5d49c2c474eff72270b5cba1c8dec5f849de10443010a0a8201355fb88b461013d190cc115c912476edde19a2c45c526c770fc40f9dcee4f80f2c5ee7d0954a622583fd69c5a1358659d2fc1e5954bd51c5ba4d0846f67434763a052d68c289c648af81e6e80d7c8ed159b27a9ee49c4ba7de0b5d0489bb2160a997d9fbdd2fb26fae90f218fbe5edb1a3f9b4093d4b31e4fdd1a21bbdd43cf00d26f5080ab3cb9dc5826c2af2e7efb5bea354cc5a6c4deb09aa71ee8c4a897cf650d02f6ed1c16689de62b481087a0659ec0b37a9f686f4a69e830f3aa427193df28841b3a1a4824a72a11fd51418c1f13e6f10a40e3866f74044ff530d70c90bf5d1961167ab4ba78c0923462590bf13335a3062e5a40b236c4c0ecb854d1aefcbae3fa68e28e03a4587a41b9ec53f99cf302b0b5756063fee789f8eaa646f97c3d4ce1fd81f717d6c474884e2679db21c03ff642915d6d70ce79ac309b56f19e1aef5705c985bd4c86e5011feb85754905d268e87b0d29036b193039d515c6b1dad65894b1419656ac2d74ac96907acf3b3e53dcc81a05838cf12779d306c87a43107122984d1edb0280a37bc7d94f20fdec14f9afa31b9073e31da803092cb312e1720ca4c2a6d3909c7d953b48bde0e502d43d7ea41b1eb98d3a3fe7652086882be111c0812bce660df907bdd3f9654862dd4a960f3ef484f7a6fe47ae7316c2c81ed522fb176bbdbef8631eb15c3aaf405fe600b5582d14fcda697c5991f6e3e33b61672ecde2630c063c4751849e2ffaae7b8d5b83b98f307246bc5864af14a0b2a13565017b7e9e1cad508514038c0cf69882ad2ddd323ede208510c43f479383e47a6ae01595af14d3b159458f2664f56ededaf6afc1ea72c70e6a6c95d5dfe960324029a0f195714e7c7a5c9ec36489532713129b4f49d5cecfee2516ebf64dacbd9564a34eaa7bc4a832d33e1c58bc43cc3885e155cdcc0c1220af1bbf4d3544cd80b5b7d5e5955f73585bb1402c805a157019141a3ad21c977c2c719f8fac09d93ab4096ed1b04ac8b82defcaab9b5ba46b679c64a87ddc4ce660d7ca1611be28e538dc5aa09537c0d30c21e199f22c85980335871c22f2115ab4831bb62d8c6c95fa052a9085dc2cfc2e27085c1358ce8b706eb3667a428a2b1b9e811d567fe52c6d6df2e75271352cd313c61be08bd153282ba1474879033744c34d638b061ebc5693e230aa3403219cac148a3c1adc8ebf2485132c8669bb10844b7cbb7732752b071f82bbe57d8fedeca3aee4798769df64574dc81b4bce3ce5abacdc88a96e5df0f0f9d44a18846f82ec6cf4c299e695ca69f47930ee9b4bdfbf3bfdd7dcb8738744bec8acac3f8c5112a932357612468b4e7e8b8174e53ede82f45e64f187ea9a771e2a58692335ef9636e6b21d0454ae0eb7cd0b106f5d44f53c5d126074940a78b08620cd7d7b27dcfad540bfcd828eb001ef93475050e446ce2b290e14734d3283c1d7b34a927776ed188ad8bedc5c0eb3be1f4b582b87d15773d7f56dc3ec4fc09fd972389e934fe0855de699e89bfc80c77a58f8886ae39670aa5e0a490646576780058451e09839e62ca59fe0a2c03f51b42f66bebe59ad8117a6a1b8ccb38b29b0497eb1fa8d098a8ce1919a1ed767e7a097e850270bc1fcf797ab81031181f44c4ccc8b2e07267fb8d80fd28d0a1ef755f27f413e022ec20557511c85ac1db0bea5b41101dc35780e29ee90c3d9b7f4aee15c780f88d53b61d5836fc0fadedb73e60bc8a715d6638f526c83692ef6bdcafbd6959cfe536210dd38d9353479bc5d13927a8cf142cf63c769207963709b8c8fd5b2588b27f079a810e1fa435cc96f32d329cfb32e73538cfcafc39be9581b79dc26ac911122e90ae6a33906785325e7dcfac249b0b44d690b656c688a6963062f3e75fd3c4310290b95afd6d96ff91e5b086cbc7377e4a9cdf06abf38f293ebbae6845df3ca82c134482e6ffd29efcded9407739659ce6d5231094288e19e47bdbe1dceea00380556951b16ebe20abbc9868245d954648971de69d3fcf1bab8539c78b376f40c00ef8df01c7d8bd45cf644ff5e12cc25f6c762fd7e9990e3806b994444251240918f69bbae6619dac5ba0656f0083f33d3a1600daff52659bac0eb1fe493caf8f390c59deed52f2ea10b6691b2243ad4f5f3bc35b352351d9cdf541f4e848cbbd747524d66cb75e43e0c8e6e399b9af209c76ce4966bfe79ce59c24c8f7ccbf608314e93c4807d95b0f4aee01505eb9c42b6abde47f94375cfa1ca23d17beb79a9dafdcdeb7871dff5ee788ec8846f839a63b4bb0c25b862673e0f15f48db1f8f88ba56d5013f5e238bd3f5384e9737ea4038e654b6355532d483105fa47488baded6778a7bcc7c41a3b11bcc0779106ec62049e9f70c39f1b63f1ce4077fe2edc34d308e516c32e100c798d9c41edbae5066a78416b4d6134a648bb8c8da5427192d4cc8ab2bdcecd08e43c1039e3dd6f4c56dabb42b2f83523c40de393dc0a39e93f834633b5d3c43d9675f0652dd3e2a52b02f3f745875f00317934aea32f780c1885e0f96374af8cee94c0e959a8b15ad4fe7a676f764556b3a7d7794b3d14094a3a7aad0f692d43432e55bb4d889a6ace313e988befb543b6b4d3d032234c3b9ca01c3eef707038fb884644a548677651d573c8a462ade9bfb1fabbccb7003328c9963a00caf843a71e334affdc3dd01373e6b238015b411821d49d17308da8d45aac9384bb611fc81ed2cda1df8015f66c8ac67e4535fe5d7f57e005aa2f04eb0e9426ab0d3e059dead5c9730e40f4a674644a3c671eee98b676af57a5013a1231c6a8168d049fcf9a9efbf9cd38fe2211c0a739e8988915a7788a0c8780fcae261bcf0f8d0c141278bc1fe0a066abce20b654d9090ca659a723b6e215a687e7e239ca30619a4bcc82424c9bb323eeca5103192653187ccefdb7d951fe90864f6e567241e2fbb3c5ebe852dd53d9fa0ea62ea7eb11fc735068ba500d50bdd58e6840bccceeb420519aff54e4734025c4f8ffc311d1076ab1988efb6101cd232c82c151b1e5bb91e0a930f32c2832f55a7246767fe7225d5eb1e198b267e0b202024c67902ec6f50ee712c3b02d08d5d214eff840ea5fb9c5cbe4f1ecc07ebcd041f92887b0a4391e578cf4a5608dfbb7316b698835a1b0cf74576311ab0e3aba2cd8581059b036a0af0451a8437e736df1666c66674d53b62c628dcdadde1392c68bf8449b465281da67fe4e7c996273d0cf42c5e4135bcfe74034baaebdf839a43918f4ea55e0f376f8af755540f27b1d2b094651c1d9658fbd9b037923606f6fc824333ffa9acb57f22eeb3ca77b4b7c3c1b1d1b243e96807ae7223fe978ea666e4f199829c1b002fd64ca4496d99265fcd5eff100613b0a0d4ad6159206cad98fe8517570ae32336e527ea3b9012da2de310346178c5ff3e70cb571236fe5afedc7125dbefd29575c9a543282476bd568efbfd035ad50f215bb93b18d7bc4e1231ccd5742890a12818e8df095ea65f01850ae0c5f276b35c4f86b94a48caafd773ba07157d9bdbbebe40b7fd0d298ba9b9590b7fdf3eadc9cd1a2bea74659a4f74f2f3d81d45edb838121a6d39b6e5153c130562906977bf18757395bf5ec0ce7f8fb4f78c2b7b25bfd79cd2752bea32d4ecbaffa21e79cb52edcefaf2a7b7e7f3bd1c046f4b3b2d2d5ce84ec83aaf3cadebd4ef099583b49989831fc59ead9fd5c1bae74a30e02886de4fc1887c25af419460163a4024813645f33c471cf0d018042ba44da68fc1c494a8c4c17c144622faa5d0a3b1f29ec34ac8d12b6fca1381f3f88007798afc7317c2d2fadc5efd2be193691b62935585a59bb605dd32e63bfa842559c725db5274dff613170ef701bf32a3a98683a92761a9e0fb257e29c727016c0208cfe3c4ef8c2ffecd8ad8925de18943334f765eb70fa6fba7dfefd0652b30acf6abce13bcf5eadd9f8e393345ba13e2a10a3da17def65aa9225889fac7d0d7896a752558405b3ab3b82186cbf9aebeebb964adb0ce9f5a99adda6a8ef7a63fa4293d2b31db6ad16c874c7d1168e962aba2d99bbd19646254600186939b717c01a8d929f30bdab8eb0a1ab348f142387ee7917e05f59b172af75f54ca6df2a6cd6444ae6b8223a3293897c4bdce6b0e93be9233f3effba916551914f0eff082e1ae2dae429c5f8f20e2a248e9e35d8cb67cd3583ddd203cbc9f6946d3beb25b230c786a53b5cc39229970b6bd1bd15495cac1d6da920bdcf05c1d7e09cb86f07614b9214ff44b1c7d86099c5ba2c83a6e5dbe3a0e0f9f0be3d9167e20ec3e710e5dbc921305e4fe90cac624a6a30486268b9de191e025d91662caa76444ae8a2e19004f5f354018b5c5d9ef710c8c47f25d28f22ea7c987bd92c3b996d42f83b7e536ddcd932dbe919ec53648092cbe02609a2749211ac829651ede2a701f6705cdc7ab45041ea6cf4ae243f8a2f2caec33266c29828e8062610d09ebfb5f45f9f04cd341b8a9b53e59db3871e6b375b9326e4311bcfc2516c855a71682d37b3d7114a9a11c0763d6be2f259e7a8481d2b40c05610020a47069d19c5930e6131714a121e81997a531f2b36c3e6441113d5f0ce75af71ad6954ced9234c5032f56f02b0315775b7668b30e7ef4fc095cd4ca70d84c18ef8ec2412b97b04b1d8337d71be8814a79e068f83bd904d0bf71761fab2b2b1a073256f7a209784528e7488591116da7bba131980b667f248b0f55c92711e6abaddb46307adbae8c9defa2b1df091c22105b9079a01acd795784dc42bfe103839219c248711d2448fa9a09eb0c17c0570951453cf3f1db2053a5e20945394a564b33fc4b59deb645400ec6d2537d86625cbcae8d5032636972d20f3bfde07f89ce02707c975908f074614bada1917e0565aa5d9cd503fa8feb0ab4fa208a9126f95c1156a675d5dd1e7cf8701a9c3f67a06d3668f656fab6b8117ac65b58a33f0b0a34c0929291aacc018973948a7865309efefefc1a6ab91aa2aa074d3cd9fc294e295b7ea81c61904e07971a73d3e65baa7a0f81c4649413b4f1c10c1ee067db01d6931eb6ae427e83515f6ae6d6130cf77c9ff523bf78ead0d706a1d7817e8c3ac36d3d7f521d30a383a97812af0a5090881b1d8cdf53ab7761ea87ffcd340d836bc2399b89b642bed8d6e9b40875d969e9688e4804c4a59186113083a1d612a4c60a82d3f307d52fd51c99dd67627e2f641d366472f9eaf67397801197a7b3fc55a61fd2132d10eacb541581a4ecb9a5df81d4bf46fbd202c9f25055aab7ed6a33f928208bea9ad2101522db7677279aa98f7b78e323783843b8ecff17a21fc4e4a84d7467a8222f6a1634a13dcf0c6439aa139e336e3bf7899495a344538dddf5b54d515b92d82193e8f7046806cdf49171d8393f5a3f3f0c9b005eb401e1249b2e80f4fb51f135e1c0ca862db47378a5abd9a4c9c4ea852214d6525d3da5c8debc4e945e8026fc5ebe3f987d222f865ced7a2ef40a679ae64832f6de57ca701a61b6eeae7d35b7ed569d0e510cd0e0225ef2121f38269a73672627686f2387bf3fc82799d65f1840c15e65c7c84ec71babcec182c95af57f7e361a5615eb0fb0872bf8a0c0e80bc017b1d0b92243d55f016c743bc8798383bbdb13d6e03b12aa1c982bc07f9b95b1a0f91faea76d73e6b08114c197c0a7db8a01f3133d959087df5d6fe6b843bd24204c7053ec2ed8fceb947205dcad859ff5898bbf695c115524da7034ce338b8858f4aef21f0c986cf180ccb2478345169dc8d0f2f359b78024074c0c63bf14f1e6f2eb7c4b31c6b3d1f6a344f8c968010006d0c2e438eaa301ed49510fc1986278767c21c4eba4f0e9f9e4f442cb2e2d4a007b0582088fa93b28ef701a15acb3ed68ed95ac2de66221605cb77a1809f9ca674216c5bfd052536c5a0fd01d76d863e3c579db0d7ca4f0577ebd440220ca535f80a39ab4785cb0fdf270a13dfda83eb419802044f9fb3bde7c3c8621e7992b01b3ce9523d7c6c83567fbcf60837444dfeb48adb1816a1448ae6fd3d0c112f9d9862900ad3b02f502fb67ce71f2f3901a61145ad64a5785be43118daeb7ec0068b15917d5fd0153652681dfe3586da651c2b99959acfaaeba4fc3861f397c5aa39b6dd884157898f48385ba2a761a2c204f8c3385c0ea8f8c1c2326c9f3a44872dc2bf08543bbba580f8a26405724f95ce01745c7946b0ad9d2806717b7a2b93283e7460aca19e1d0b3758f2103c6e38b5adfa031ea64e41670751ab9685a0c3432a32525b59a2cad2a70904f37686c67f0865afa851fbb110dd1f52209259e3b098d2150b36f7ed429de504e34c8c45e351434fb112c2669749bd709c8465002601dd2e67d998c3fe2445a299a7be315002eab348d158f110921a3e9288428b45062d5a7d180427cceae3eeb54634ce11c8698454cc195d1fc45b48137876c721242cd38f785a12cd16b002799dff64cd0d6aef5899e33c5d699cc54cc061cd123becfa0dbc81385a346ad71f0d64296291eaaaf870732dc49e5b329e1e1795945813bcdb8ab69d1938908e355e23d312501ab003e76f25a5b2c838cf5a068074442010d4ed288ed936c7099623092449f800d1a9d6ef956d95eb64c830fbbcb93c53995a89f29cb97c664358af1582a166a05555d40273d2131aefb82df3d0bba874ffe7b74def0431c365c675fb2f03c2e6ea85f020c4d36d7407100892b1f885a1ac20a3006f6eb656d3618b175da5d0787349e694e1b289c5549bfd7efd3257f0ac49eb5390be1266ef2aa8e83de8c99c7baac5daf0ec98f4c63efd89ce8eb06e8c591783a7110b0ad409ad54527aa76941fc96ccee1b4c42060f11a37920e85baf0e55066fcf1a79bd559c0af9334305eef7b817525a7d8c8292b710bfb175b244f6e1a3b97c63101eaf2c2a136ece0a0d8c87bdcbc21c15669ecad94bf322adc5387e082bf264e2dbeb0aeecd544584d2aef8f075f6316bd0e6304146f4433f6505f985706e14ebe10ddee4f6ca851605eba8c1d19ae56edcc9f04e30ed8af5efeceab4b91287839a58cf0b6a98961cf8c626b55cadddb379aaa63b297d86d3df9c1d6aa9b1329ebc87b07aa6e46827ef3fccae4a64e7d7332a7015d741b38fa422f19f5f06925bbc4fa615f52da6aa4757c392bb31318789509e0b208bbd540bda1bf6b73c3dab96ceadd18216119df18426c304e7d77e485daf9a32741aab2b150c4c698f6ba2c95c8d08358693b3d863dca6da7ef57fd0a0c307f99a140eb4bc80aefead605c996cc14a0aa165eac8e9de9c540097eb0eeddbb8d9a044b1c1b2238e886439c9dce13ed4b7d14108fa110e37e72191c6c4152d92f5d61e1cc94cd29eb9f85b6e51ede92f26e585fb955959c0ee7e6ff87d5b19bc384e8083790e84c10f8fe979f6bda7d03c9b45cb5e6da6d8a21c64273c2201e0baa3ece55cb2758cf6d289a4b1e83b9c8113b8ffcb031c095f2ff75b6e442827bd9867cf5634f2a086ae028a9a38ad9ea7e6e81c6b60b8cbd0288851f58f06eda143dbbfe5f3bcf3e72098aa0ed575f717a46d2271e0dd6484d03cb1903fa00d4cfe09cc42478ed3299788ac9f192a25623017480b3ac8da8a21e0b4a0bfe5fbf716fe854016b1e010b346a2826c18ed6cdc502a362646fdb253557035b4c699cd9ae27a9a50af38a8301a2cb0bf2c7777d175db2bd71cc4ccd460d0f24db2271d647441ea327a7f8d4445ceea17b086f6e17e86d7b265aefe73e708f574be891aeb0bdc7f544c5c5642ebb24edc6c96490972988f6c86a97918a92792bfd830b98e7c10a76003df0ac3946e0782c8ad504fda1aeab0432e240ff8c409d34a65a42fdb26c670bae8fb9fb184ccfe0413da1f20f1dbeeaf6493a113cd1eb4d6cd84b6fe3a7ebb2e950ae41ad1902f1d8fe73eb87f1738255611d5afdea1802eac7ca5293e88af8ec0f407f5a58294fb080367509fab6e9f191566f27376cbbe6bcc54e788bb23ad510388de4dadaee8f47df5a7c5f94053f25ab08363ef1f94028bb665ad6316d9126f5b7b3ffb5f18bf114973f65c0c23ad0b276e47ef7c7a9321b958feabde1516ce71d90e9d9e3b2d2af16b46f0fe641755769b078903eaab2ca3560a06ca0f814155efa576b08979d3e4b6da7fc6c5d515a067f70151a25f7a2409e113c500c3a98967b5716b604f2868df1d9257eab54cf4f5e139f5ec653ed53f9588cafef811eb386f386c377e4fc4f34accbe9c5f79cda9ce08e0c13d9ee8ed972a19c5feb680bc5ecec0322914a2134ce563a487afed4b17106e50a66583ccb3b22ae790acc51e8377dd39495d07e66a2cf54d718045daf4b6d3e8e4dd54cc53f9d5bcd89b3d15bb2f3b35fdc2177dbb665a94c73122739e3efe8f91d80a1d46c00b639d01cfe6e0b0af9357e821c4381e9f3e60d607439e1fa22abb56b26f6c220b099421850d35904856d9c6ec73e0a518ca2927959ce83c29d5db31abd29ca35f780b64c7587362695e8001429a89738471b3abd54292cbe91957d06f707ef5c5b8b5172ce897f399ebcffd72db8f05ce6998ddf345bc729e387901ca064e514c8003fd83dec150a39288fcdaf378a1f192f86674f46c58256327e3b19c8d7c2cccf5bdf452304ea1eaaca41f923c4080dfee6300731be0cd59510ba82c9792db520377d77aa7a2e364b1e321771653f8e1893eba2b2bc4fc1444adfb6930a0232038cbc3058fab0ae6d27d1fbd3ad14b88e899b73f45e955bb79568141ff45191f8a638abfad44c2eb3f00771bea878359424174b81a76e3618500619eafa0e875c00a55a18e6640dcc8eeddaf6e78211dd328c421d632cbb7a00decb3ae19185eeb2479bed065da3414c51ca756feb179484f8d05f7e68beadf807f832f816a6fd5b79b0014a20a38d82385f736792c58c8fb0310a837b241cd10e3741583e21f9602713ed7b998710f7567bce1cfac892e0db1a54ba06966d2d74cbb8618c57678c53102bc03b10b91298c437f3c712f929f4c3a81e6a44d97b2e4b9ab5e969857293b710627bcd6e939a77ca2f4576cae14c3c8e5c51be5ced251ad70d216211149119431b51bd9166320afdede1d93d8c8511b19f23d448b9b4b4993b64eb00c48ad64622baf72034e39d1324adf74f0118464ece928cd6da2dca5c19c69a266bd0fc024d386b5ac26a427e57e0ada436d09775220f29b6db5427db6dbfc707e34837517450a9e5c13608cd8454df11594d16dec5523acaeae2702294abf46447ed4bf50e0bc3dbc2e7e223ca07e4754b82094732d6c4807203ae523c4ac736cc4bea95ab76353e0bd65b58969a89bbf238289f9d5a757c9ed8a2d4bf419121dc04ca908a22e6aec78d14237ad5a32d11891e6ca661e57fc4f6fa10539868a1014f19c419a42f7b974a190f3c212d7cd565642ccab3efcc70e643f2d53bd07063743ba77d16fe4bc58103117b0cf714ac1064adecda146aeaa3b7bb2379f0eb6a51d74ca494fb0c9657eceffec9eab153a2f08f5ca6efff5f1fd7fe89885f7281d8352898c0ccdcf7282fead0add93eb0860c754ea9b94092bed4b97dfe7909b08ff0afe93f5d188301fc3f5ab3dd7859fbff8cbdbcdf0bbdd8cee8bc594bc1520ef037103a3cd32f26ba8d11f949e96c96bf82fd78a6bfb43cda13ca79069eff84ba9c93de084f5a8e3a20b3412b1ebdbea2fd0ebede6aa9a8dca316210e083733129aa9dcee43b162baac9b715842122f6a33f530aad0c552370840798d0472f0e3e6b2e9320c7182b516a0131377d2789644e0b54f70ec6241f77a8fa0b8a8a48570ad3fcf04dfff882da8d63791127d0e5dfdf91f0329759253a7d10cf979cd444f421b20b550a2e58b650bff1bc2f515d322ea6922091c1d808e9489e8b2fd444e8f3da08f2a641203bb284dc35fec93be5b3c7f07f35b192d7d9198e6135aae202d6bb55d2af4fe3bcc4993876543a9c28be6c897bd2abfe7c062ee50d61d2c9e3cee8ca80134267838aa3f5d662b970301a3eb2e41f7d0f6900a6bd9a413bba0761308b1bcbc409cb62ebe19a9aef582cf73fcd85423f64d916aa2726e1fc85d53abb8c8b256c7ee23db08d0e6263a5c3e17c5eeaf80e5a16dcdf414bab69e545f8bed1dc58045341a5cc8feb4c48d9b6498184674d95fe7015d37dee761272cbd0dcf4c81ed7b134d7e04320e0af4a850c03768b96bfac624abec4d1a3ff619a58d8b47550453eb41b364fa5d51c181ba9f45804d64b9cf6f2b0da05880a9ac6bee936762609d847092005c6f44613a4e08ccf3046b7a7250b55f88d9eb97133b13e8b9a54eaa497e54c0169f636d82111150d75d172f10440662d04b59cf3d336573d81b52a8ed10594d6abd8213254497f6b0f076e7a4603dc1996037636a165379e23ea2d7ada8a192371d47ccbf60b7383b2488acd9325e6247d1080b0401ce1166bda98c960d54cda168af61299056a819dec22a8789d2fa4e99e110e2ecc9b54c918602761e3b2d91f5894543f79bc4b1768c2cf3fde5387522eb8f48e9bfdb1cae8afd663b4405b97ef9372fc46fde990ac3e452e7477c36b0e50242022ca42256be3d1d19018c0358f73d23c5040d506038095cef8c1e5e6da0222ccb139651c65ac15d852a2c856fcee755a04b322bfd2ebdeeacac4b0e1d81149261776bf1504fd74c88166559ae9de7bc797c0fb8b0e04b2281836aba9602e9ad86e2ed672fbe017c59463b0b97d9f797f09269f4d1f9b23e725215d6e2306a2b1fe1e2b14b7fa8e1d2db386b51c91102e4cc3d1aa61afd6ce73ca23a042f3a060285085d029c9b24671bfef4ad09f4025b2e06edec576c28f7ca3b8538b2419d80e3211566d265e523f061260d08f9da41fe0dbb5aba74ba716889efbf836e557b951316de176feff368226a81893d836b47d684dcbf864bf0e5e7640b01c26527381015110eef7b28362578f426179c6b598afcded6a952f8f731d6859dafa6e3ecd472ee94aff04b30484d93c8da436a47844f75e5e66db2b5180e0c5ccb7e9bd7f5c84f389fc463cfc11c4630f38f0867e1eb28c382edca1b0c888c58c84640a23a241dba337412b211dd837247a2c9d626b46fbe089cd189b30b373fc7bed2fa0a7e16939caf7d1b81526375f19439f2f5524216258dd544f60e1ad2f46e4f10eb46656dc52c787033b9657444b638ded0a010804ffd08f493200a67780d921a0814e1a728c731bbc670197f23cf6601ef4d5ea3458cf0254ddd3568b243edd0d4c182d271d79b2b844b5dfba76da7872142a69e555c00c69b31d7d2ca6cc5efb59dd936f0ecc2912063bf1e186e1ddec764bf8078e090acfbe908b78f27f6b9be68764ed9529ae40c952c742d3cc93bd4bee1cf3c63c410c3d3e5bca3d52b747d4528475b0b19bd5608e85dab862a13e028970281904d0d8bf0bc9cfc61a3e7d7e297867f2a13db185f8c8c455fe3a250f75607fe8b0623287e54a3b1e8f3e0f775451fddbaeda17b75aa89d60060678b5648bea15eefb732d5eb331a1a9fb047552e5e1b96269345d07330e6b5f3a63a49ab7bb9c479911f60ea423c7326ac7e46674244dbacddfb1cc1308099b0e5a17ab488eca6ff5ce82cf0da8aa54caebdd1c8fde6ec31cc9265af8e5a2c7d6f02573ca106c8e02944db4a99f4c7fb93bb2b63750a21ee52aed9001f4cf88fd40f1c7e7692710bec6fe9a72f422b02bb0189cfc6ef8ccf86724f681113bc866774d3472c4429a3fe86a13be2c4eb788c38ec9cbea496ac22e4dde8626bd9c3be656968dc33b90f996b297a0c559a30ef83c106606636df04d9327d6775ff99364951dd13e814fe5f3f77ee9ca096f1d1efd8db62d311a1ad78864c476c4b136d686a3d5130e5c3d46b2cb191c9f4b6a4ec91fcaeeeda9bc54c4ecd7eac59cec6b516238acfc425df3a997f8354084cdbdb491fe5f19c6495e111585b0a0181e8a0b5e3a8f677b74dff6a791a67eedd71ac5f9ad7efe0038bf602d78278b22d3ffbf4b6068fa8ec4ecdc6199456b12363875ecb0c47d43fba3e3b716afeb6fd7aeca98cf654f177f6c2d2164386dfb8318c21533ee4da1857b1c14adffec5ff0bf723343dc241c5bde0ef700d96af27619d02c7dd5437cc3d6ab9b481ceadbfaa0c2c2492c8e43300722621ebe00be9fc3c66a78aa9b2bb6a1a5c73449a08c9d3b22127225cb4337e0587846a4b1f52107936649c286ecc8008a211ef9d37ac4337e86a0fce4390dbf581d82d623d002ce81ef89ed0482a45a1b9949daa1e0a7ef495f8ecf60a04208277da68c83fd5e7b59b2bcfaa82e02398b0433efd59804ca617644331dca4397602e367f6b2ff59bf2de1a0ed8763a897f0a11765e80c38ce39980f242fda7663bfa305486cdb9fbf45e43aef0dfb0782712d3eba83a51028caff425d0a550a699204355b63b05c8cb894f5e7ebf69641c3eb1fa4214c682ec3f040bc95f08f8cad7b7dbee8763362ce70e28459bc4e295153faaf56df17afb32a62ac9f7980a2d9a176ef93d14e413ff0434a7d044ee580a862b79542b76fd46d752f9f1abec6c3b24ea9825eda59ae5a0dc6741858fb8e78bf96853f29e27dac38b8fc900c65511f4583c35a888876446d92407253db4a76cd33e7ae0fe9ef1ce1d4ab5f93d13c5633df05540ee3d92440283eedc77f149f1bd4c50c51ac9d7d99a95fea5f717c6d0128e94da454e6089981199c649ebd388dc3eb98997d6f32fb3ae4c3df7236652b608551884aa1be3f8c606d7b6830ebdb4ad589d6ccac7d9988668169164353450007d77a704cf42c6c220383dbfdf20ff69ba5bd2c80fb7777b513b3867fe4732578da407dd5af0f8e448596a1352c0b2b94c9436747b38e8cc5fe5b417347ef0f11b6230fc332cb8977c1f181297f0110978624a221864a7701c7610f0ac286f1a90d719830d7f6d4f59e7761fe0af9c132fd60936d7e0d6c3193a88d64ea1b0c2830f95babb25b4576c72fd32c444edb3a92b8c52988aa4e0351784501b923200055927902d47863fc69c238531f314a73e935ed6866eaac7da1ff54c070282b2805940a5cc1018d7027fe72fb4a25774fd1a24b4c4e0b89e771cba783a7477612d05d4e21745be7298c5522366d81bbff6f0d25366c3bf4ee6c51bf6d90b1f48b26cde693702122d4f45e772d54f127470f4a4426bc2179185f6a0b01072df297d6ca241ebfa3095b605393110bf69ad359708f720a5556c140d1d2a1c09411a32cbd64b07d62e9c57b927800cf612712ba5aac4da6e3883ed7a6ab3c78549ba72f147bbd7796be2c281d8bcbf1dccab9cf26b5cd4bcda6e2c5ee8313deee1b1dc7be30a8b3a83a31d61aa1bcd26174869ebafc640f8689f476103af3937952cddab2cfb32cb895a55553a3bc37c05ade2d3ae3fea077c8e07b59c553841c6fe8a568bfc90018314b23b6bd7d7b1ea35bce93ba32117d0330e379ee247197a1f2875e31a631ce09d3d1d61f8b377157741ff4ba3e5f69fd0b8a049849adbbf7649794dd3db916fb89e6684d604b05adba3c4f07bd7a7f865d9ef3960392ed8b1b1b10cf6e19ded05a65c7fee963f99a6f2fddc14410f836cd5d201bd267a803ebd85b404ebf492a105371911271c3c061de9730696c80f9309dcda78428f85df7d80388a58a2d2c00a888083cc9a89c523bbef1c8fcb86530cb1e9c84b6ff11a6d61715708a94038c88529dc91445125c5a53401f7bb5ea29f09a4b97e3737d4519ae7b6c873f381d1cbadf1a7e094110759f48899a7fc9a2a4aea69ae71ea3c3d7609112461ecf8a06cc669a0cb8aa4d98ad8c712393dfcb162a73feb55d390e9ccb998081d93c105b3c11c283e9a901e1cb58d3c66241e5fec214fcf6a208f6530f8331814a2840dbe0d53699893853b90d48c895d0a48ad18ee5ce47f299afde53328ed301fd9c7732245ed75706f07ccad891f6b59b32968a1e6fcb68354bef3ee0ab27bf4dc152cfd40e0c65df75481d1191245f9e6a8717509103b030be0d7e85c978fb0642fbfaa93fb59d62327d6533dec40ee69909786aec5f8d8d575945575ebe6071b42b1960d5773a08b3afc58272dd77175594565608f053e8b970c653cb1b4d048223374ef24e4b78df4ca517168942bd8ce13d1d172a6db6b48cbdde011b53087496819669cc3331983e2fc483168c9220151ca29ac7d8d4966ce46db1d5bb092144c9e637752c7e133ed30875dd669da196c9e9d84ea666d42b7f45ce10fe1aa68306c923ffbfbd724fc31888f853194d067bf360fe7d031a7ad14483364be75573d283e7f64df8491777ee313fce318a0d4e212276153627f8a4c2e0ca04954707eb8a86208ac613582b702e4fc28c74cac230d8a7be4a0aadc679da6f4178efe4b27fb0b5fc87cbea5ca4203110a53d3d3dc3cd4ed76d97a0868566cd4b952bd5afc1538080e927f34ff654280df56e6d8476376d581a35a93b6ecfba22f36d990b8fc1b1c6bb2fe58a8ad78901f156f4468da91349d85764bd458bd6f8bdee1b14b50541d019232f59a3500ba9d12a3991276a05494b4722ead32952b4391046bdd0538d77dff2ff4a1559d6b52ea7f25b0ba2a20891064723d32b1870845e431b1facfbe66fc0afb1cb38d14b693971fafcaddfcdef7943cc3cd599fc28d59ae9dd19491dcc1fc5255d41fa82e6fbcbaca712f7f0d423d3cfa54c8358815453053c2d556ff9156f01b03667e8190f4a1116d5f16123139c1aab994c3de9704bf0d9923a04b80d91e4ae7776fd5f1949abba391820d2dca71c6e541e95c0050852daeaa558893c2b310dd903b5a8f77065082cdbc2daba6d4c2118c9ff3d36807582417dba0632ff901b64fffaf1e83b099bd0ccf3772a4fa2a40a9f4c11c6d8c56acb14ce878bcd6bac6b982892beb9c8ef03cdeeb3a3791c320bd705d6f393563fc75f0c19066f7208a94b9052dbfbb7adc7a4074744193b1a5ac1e2553f765e10a7c63ec2685818f35287f5590bc74c7ee0e922c687a98390cb7d549bc543b632e38d061d01ce13bf604411e77effe575262a382167fafe87d713fcd31c855db01803553bac28e0726be811db71c2410c4a0cd9717931ba9f18c53203dab5f54855f8f5dda5133cfddeff15144a4804a50f4aa519f0a7461f0c337f842a9a4402b36f01fb9797ac796de4b297367938a84326d230880739032579235e2bfcb548a5bb6894a41cf684f62f6f8d9995c72ae946a944cb71ab1984ac9063e8bcd49f99c26dde634aa6a154f04b09c772022765aa096639ceba2ee74aec272df8d6e2cd8629b610d28aacc2ec35a6e2931d45a8c4e38736950749a10293c091f50e157e8d08685dbc3661cbf193f0e5d5b03399afbc2dd58e36f6ade593576dc479c2cb4248c6aac981eef404bca0197d379041c02e6ad80572a7318a2f8e98ab33f000027d8f9bd0069b9a957ea58b31935f7fc0672d87e0e61df9d25daf2909009d10fc10253ecca479a63c98fe4bdf88163d83a8e32aea45e7c91a48b294d9c4d176d0bb914678ff2d1d6141677a7e3d327287c763535943ea9545ce0cd9e00b42da4e0ee012effcc0ad23a0d06e7ebf606ee4ad2d3a481903e4ca0256a75b827c1182eec073ba4985b74751ac86ee7d3931c8d9f8de6505b0ff24abb8a8317cab6dd71082732dd30b786ce6066186cd85d066dc92b79fc7cdc130c43552dd6ee56cef825495aa4d2853cd6472935e66192f58db0d0de5266404f2fab6eda0730d366723e346afb00567ecc2c02182e43a8607103f606e698213e131f1c22bc84380b426397e1ab54adefe6d8e4280489c8306498d6f24df2bad5dff168a8551e6c7ff93f8bd295d4eb2aec79c3acd75e3fdcb680fb8db57546224305b92f11321f3c2c6e0f9146a5ccfc9a3fc5810b4c281a4e1fa8b1aa8ec6aab4043467eb80ec8d4eea41507e309cdc2cb085e7431a139613f6218092bff3e1ce4c9f7200e69d6738f12f86d9499ac7b7b30d7ae7bd3f19f9f43f4fb3cdc863781511e9188c9b6d501886c428b704fafe39139ba08643b5d33e712c3bc5634d1b3667091bb79c1b9eeba4cf59c9a9772a864c52daf6befdfc08d33889210d7bac85283f8e2d39e80d8ceac24de5e64b263347cb52cfa94f3206f289125d77de2437eda955b33535491bb03192ce4dc4720ebb36b9f8e6bd5c1088fabe40fb72459a390032875a8fec0038a4fa6e5ba38e1ab10bd0d201c2e25bcd360be3482d077d004906f08172663bb48042d7787fd197def0edeb552f060bd9a52aa604424ba3a35aefa8e90cb48de92c3ead9fb3332c38b975d90c2fa9d51e84821ec111b75e0b1c6b80dce0d92f6e287c760f8f7078b69b63ce156ea995da28c9f19dfb9affb50d63aad03693a1357cef464c3396aa4cea20d14929f2644452225d269aca2440f03370a1ce48c0e4559644a82cc9f8c5475c9a65d98aa14e659ba71ee693d04c6320816dddea624a10d4d941e94df28dd684d92cc659d09dcf2e5a3f949a3f6a0ba2c87987efcd93075ac09092ed75074aed84292330f57abc23550e9e9aafd7d71c6d94909d731c4f4bfe98cac2629e8568f20308d1f490b68b996ee035da3a0ca1ae043d9d134efb28930a580e24d22a4faa71b4b85b2211488dca2607b6c632114e3cff55ac7fd8051eb857a14cd8b8b84125fd809ab4ddd3be881dcf5fad009c05260c736d01bd5239d4bdd37f10552fe8e76cf099e1b606e0edb9274004f4dd30639d0fdaeeb094db382debddb41f11c0a6c43f7a83cac436e0b20d000c535210fafcc9a0205a5e409798e8aef8065f68673e8d9499b9cde3d13959ae4e8ec24146220cdbf155b3d808b12770b081a89078ab5c85de7c2ea26d826935b9b007c471100a9979fe5749de14ed094cf693405d986716f330012b3a6db330f7e906ae4ed5916ae8b83e8444999d7513a913b79e0be97557dbd89c8c47923a52d4453408d1850a00e2bbc7a24d33f14dd7c4875a9e28f213c78833627c2c391c9ec436bdcfe66db960858389b54b133a198e54b83b3c25d4d00b9519c92a5bab39f6760b705bc42bfe3e75083674ad8cb2103490d572e9cdb55e9a0fde210e9b12b92c605d689268068d765b0ac1b15b48576fa8eb4e654188f54993ab17e0cdb04b9407fb45a8a18205beb9daaa8d231067608e14c8d14e38e3f6b4ed81e4dfa26774e79f68dbb691aec3ca5f06a890f341f9e6878dffab79e72de727e52ee51f98abc60e1d737bfe5c4c131ae4dcc08cff261e72429897f2fbc3e223f3201e8f154a5c0a8bfe33c786121a55932a31f4252fe21e3ccc0191e6c58ba7508e7c6915a01f91820916d1b0988dd066eb55242083a9f52be91bed9da84d215d2a3db56c9c7065fabd5ab3f40fb8f594944fe0cc0a001c008998db3dcc6964ec4005c6bec9eff4763315f5a53bee89381f5716289bbbd18492fe76f51f7b9cec37ede2db71c23451f854797d0c6231ec46d85a059d92e2d31c768eb9a01d1deea188e283f97a37b0bd950320c410f0839bb355087674c98079ca6461c3029b009d723b1408588292773a9c49c24aa71f88f95104fda818a24b0fc94bf886b2e21309036966e4cb3c63d14addcd8507c8d4c9a0852256b23761b117c72399f5ae93c7e34c46c18c0117eb1006be9296279da8ff013c477fcfea9e18aa4145db64cba1ae0703bbfe482dab71eadcac495b1563d537b52b60452ca7650cd1d468ee9dbc8e4e4d8d97f69b1d71648ae1c581d8c04de55b54ad41ccc9563e3250f0392eeaef28fb6a7936abf428fa76771071a3e8676d3d2502c986e0c9ee577b388cdca44748279949cfd1592bc7a60a885f942955307db2d6e1abf6fc75495a03356174e7bf44a859ded61044b349d27797e6e82866b209273864768ccb502ed939b5bead8bfb84fddda81cecd8cd15cd7614c0b395a80ad56d68ce5681024ec0e3fe2a45fe025fc1ab76c7866fc84621cd0aa7563945b586898ddd2dc7429b19f976bae81facab5504c6880db454775cfebf4a1e5be1e33c86d7027dc710b53a730b0aad8d4468a77b58fbe42e9f42a78475d1ebddf5afed08cd26b6c9c9703fe47b3bba7d7be5a20e1a942b9b00b9ef46cd88489e56dadd13ca60ecb0e8d4bc64fe5b413918fa0201450a65f240fff3457e7adaf1ebbf5595db122c9e5c8fd9b6f16a0a0348de70365640df714fd3dbdf9318233bf735cb7e03b6042c282b3980139fe7e17d41f6d41d84e0815d2bdf1b5f174cf61ef041e4abe83764a99e34f15f46d5634292915e6c2ff73fc1d4420e62bf1e77e94c15e36e06315a5eee654eb05a286a9ea399ee9c75aa765a8966a57bc43b8f95029fad0c658bf02d57b157d76d14a37900306b0cd3d7730257934c92fcc7d93a2b3d65ab3ce94118b9ad3f3990bc7c6bbb61af903b8cffef8fc7a706e7e75772f1ddeaaf11d3187c8ac512ce319cadfd948f9523ae2fbb80d55877636ff36afee964caa1602169e5a7a543c86d9f930529d459e86fb4609b79fc37766e557ace0818ad78e4a1e92d05c76e8ea36330c48747f963b041ddfa658140418ea48c257b9ffc37c9e0725388ce72cef3422e8ea4091452f519eeef164fd208a110ea9d0ad6d94e76d841bea969fb5f9a979df5649788b51d1ce2c24eb05c6db16cafd5ad20382396a90bf66563468dc9cbd2f05b2af9c92ff26566569426196a414bf911e905c0e20f35d42f302d9866b46bacc56da7e19bb516aadbba8510824bad323a7e304528cf5c621ca97d58825fe867293018eca7f4f2b0904d66d6f2dd380ec8ec1eeaec650cfc6434ad864c45c3dca5da1fc1db90ca1eea63a7cf3e218f39bd274a64c1b45d12cf2d197b22b53ae6653a44a4629b696a1cd34bb70c0fabcefb07747de2d9a2bb5843278111b284ada9c64d1a69ebb19a8207e5a12aa414e7bb16d04010002bc6365bc15eb7bc5a887c8c03b9a717eff4eac75febc43fb83008c0fa2eaf4f9692b1108bd05b5970102ff550a89841e5d3e213b4149dbff1758728efc672cce9d4a7dc2f3e6edebb4fd32fb1050c0b50f1ee3442e8e6fa428ea7e627e2bcfd4c4b71bd9ed056cadc4d02eabf5f64697354a9716c53b9e11bdb6496eab6b2650cf9d501416ce737d5583a125b5b6d6d4b19725027d8582473ceee5df98d198a7b3e86a778c71576432708db11f501762aa285d69bd9cce0df119ca3d6eb7e6d0e9e171cda28b9dc54a75ba9557b2cbaa0b51afca61fba9ee8ed4649cebb63fd4f0dc59a2609369d42fb40d0e54f12156048bb2ff3b7e1ee2a512600fe2870b4fc7f37188fe1d908095e2e8be638c9b3e887b5f78904f1e7f30fbd407b62e80ba73d31cf26df100b8d92af3e9a204485bce063aea97a16c5e0a50f276e37a5f047f982618cee670e3789cedf186c34b74d174d8defe38f3da7466d73a76d575b977bb495df89c6db8932c750d5551ed01d0a57ac964c74e8291afa591905fb49a6c0db55ff6fa44d67246d462addba282ce56a3cfe0159c57e9d00a0de66000f773c4a47187826a26fdeb4529fb0bdae91376e53c79ffcf81ea4cc5c64406128d269860829d7244a445664cd6052e7486a98757aeab3b241e62bbe5640570fc0921ee3099deb98a03f985fdcf61a630e5df195f5ee8f862b60792ced29d10397286161de426b9a1a7f1736697fbb87fc0ca49c69d15471b4aef7c3472105b50e47a98840403d69a81a71169e0939f7704bf574d73095208f11847a1ed78c1792da58ee5b338ddc4b5b9e9b4963cf0e54adb4b2a8f116c35dce1523bc48203cd99b61362133a35f65c69b0bd61df53b7f87baa283c6fe8a8e28fa2d31cf1ccde42ddbed6f8b6e0fa501d54d1d3b68c2f53c4385bbcd6c59fd5c9707c6c1aa4e2e04f3094540951d0b6df9daf12d1ccab781cd1918bf028a48f1d592a036728accbc6ad0d5bc60899e4dd614572945ce925af470556d8a608117910229fd4a0296afece0e76340e7254ea3f6d2c37910a96eb5eeb0da05f9203b2ad34be75da31c8393a4a21ce2d9490fcf3d71a4513d49804cce46ecde85bae00820c82ee56bf6bbc7053bec10c6b68ac367e1a1d75dc2f714b776ad6073bba80810ca3f9caf2cb50ab551c710b8c49b92d3e8a7519a8a06dc5056da83c3326b13b841be4ec76fdc2c619e8f4f7b64a856c8628d269ebee7782f826251cbf72f8633aeb10931f4163402d7995904a529684306e105d6d1fd26f078aa07afa591cea8f917322de2288423c7953d6d6c41626ed66e04d44790674d8f66266f761caa2bda2174d65c00bc1f0b25f2fb75354d0e3f1452167385dd3632b29f2c7351280ee2a992016a0c8a5e8eda159ded64112684716bdccc967a4d05ea4cf06f9e8593868ab64103a210d951d342d3e98f45ae69a80ce93b67654bb1bf8b9e8b8a446b5c2924980f67b921451e62e751a275a6ab281e0ecd8223c18d63eb020b582833fd0a86683edbfac5ac2b9f2ab2fb7f060576ec2c052c74324ee0200217a23ed919fdb083f26da1a361b654ecc2827b177966e3e4d03029815cec51f83ad0a08cf7c2cd1016c3d600887d35b7c001ef0bbdefc1f32e6386e7e147d59a0fc2099b0df32a38a115d514070a34b87a8e4645b32688aa8db0fd993491045a5d431cee13994e3ce2334b0e9d8a7079e0be959a8c5579fded6f3acca71dc12aa6a6df645ea9306da9ebed8e31566a599e83f6d439b3f75b15492747cec32a69921e8ca2db07d6ea0307d7d91549aa8a9671be18ce6ec5d3f4a61758671d67ff18a1a47bd973b9adff6f67313bbb215182d587cbf3ffe7c0c7014c414ad8178a4165f11047fc4a3656e3291602351548db8f3fa56ff68aeb3eb29690bed5f4baa0577738a01a70e5a7b3e96cc69cde1fd12900ea468f3bc5ddf5e95bf8f92f0055a07e354ce86e6610bab2cd007b1d3ab28f3eeafa5b9e8785337e6f267adc74c4e171aa02a952db9530ef3233c3b2ae6af887ad1f8aabd6a447aba42163992f85593bfd7a91f9b9b1681998051def26f28dde695f20a3a365bb2967d6c333e0ec7ca9f89f101aa96ac200e96adc23ab9522201dfecf14450fdaf99904b8c80e314f27457b62df79ec78eb90b323fd15379b0fe5886ca741ced0301ff10a83f0df3a23f29fd29f002076dcb9b2166da4d0a7fdda95bd425cca987bd1595e0cdc0ce552f22128ed1947ce9969b2b78315c49ae54fcc5a4e0991ad4174def00f431ccee1a1a9589f5a5342eff82786c9bfe56ff54c8f8a1109bd6cb648ab2c9cbb7dc2f899d715c72adabedf344926dc907645819fb72870aa2870eca3317706ac2914049b696de08b4dddcfd8acb5a2b33ac43c7e059e562ea7b841248951d5beb072f9bfec8f762df4433db25594592b2bd6e9f71fe9f948977d992ecc46de9aaa46ae8c0f726a2b6ad2f2c45a9f5a2dda62cbee47f6cf7dd3bfb1d23f8f13b7c68460c2614fb3dfa40922f48a464186ddef36baa38580676089e099ae4ad3e7a467c2cb4879c322984218f396b40d6eb1ddcfd2f6544f6298eb942c8e0995dbf49a621a00d447f0d5b253c48d86ecb47f126460f3e619c616a0772c7ab240f1250c76fb3e0c0f4e945eb5bcf7d83a4ac71b4948b91b9a4c04587309e73ac2ea8c8c0cec8e5f05323314444bf20494e127d8a477ec2a618b31efd4becd107270b35dc4221b94cbc7e2c058879b3414829bf53eb14f55935941d6e1b2bc3fdec662145c5134b5c6a4f49881372a61bc78e0bdeeb021c5492698da8e3f330cbc9cde88c7cd9063fc62db02a5927fc3fa772dc9cd4088bf0976c39b84bfe83a1f53ae12585785425c211b8cb8d43ee472f19442421f3add845dc7c71e1c8d625025e7ae8490fa5d588ea6951f5f81983a2e242b09d72858c49d1c7ecad1dceef147971926c021f287c0d65253feb1973a3c23e9d577095e0640e3902dae4d00bf2db7b423ecf6d8c83168ab4f2372c5166514cef1dbf027a240732d462f7547ad6c5b0fcc7842f82aa132befeb6f0385b3e014ca914cb857e6967744dee33ab022b88a296325f81f0f16c1cbe793292eba3e68fac6338e46302287794fd7be17d5838f15e272e98f208250c220666ca0b210f46c7453976b561c455f0b1c598bd49b8d7048e76b8e2db9b651fba2a2e050ef2db3b449ecbe712b0f25ade004dd0a76e4ce13dcabed42f61478c2f2b92a07af388456f7848aa66489bd1a39c8504f057d2714221c135a786d3d74a6656c187e703abdecf3eeba5a335f998b041f2196ee57d48b6579d75351299e91f6c87ac254535162215ffdf8ee06f2db0af53198cb9f922cd92d59852ec94993dc168ae1b9f0809e75247b6428f1a5a6ab73c01e3922c94db150d51f672ef99f125f8a5b885950eb3cd9865d3b24333efeadc221c369465d2b9808b0db6eb35e3e63fae4d1777a7d71ed8edb07e468dc67ade0c9d6e0d555cbcf342ffc2121ab9c14b667b05921ef812344dd643fccd9feef3e516b567864e7512f1fc4e4b88eec19e91536b00e301d1510a745820cbdc2e4184329812cccf092bfa93fd9fb826a4cd1f8b052840d87acdbe9f2c08714c66f2b24cf78474acd964ddd5825c20e963c51a5a7ba9cb37aa9258cae52df4b536befcda9375d7dfa77e060b5719710ecac520040863bca2a20690f76529cef4922a406b61eb91023e36c395e6a2748f812f93c34f88d0f81f8d3cb5c1ee4106ed72920687366ae439c737ac441baf02019a47e15761b92596c4d7c24db3cbb273eaca725dbc8f97bf6effb762cc17e571fc2c85e0b66ec178cccd44ff061ae3cff1c7034e5c4142e5c966f86e372d269b87226c6e31a249fbdfe1ce88728ce62367e81417f78711dcb626f262478710729f9334dd3d20e67353e09940f74fa25f6fcb6a97f83f2d354775f932fa899aeeefe73cdce625e2480d84b6bbc3a4180c1db155d1be09bb29f4a3da64ad53e9d34a61a2071bcb63afea49827059a9caf112d278d714b56b96326b6c83ea945925f6c388c785e6ffa62eb14f126fbae48d35dde55003e873feff51e2dd8918da386dc6ed94655e27d349a6d099c472f42e78fd6372d747f8da564274769bd9badf211994062cb6ad450cd0d06ab2df7b8a1c4f089c0060285794c62834727f9e9a30a1277f429750b65a42f1fdb74e5784bd79cff6413664d7674fd244ab49509cbc9823c4cc942907769c156776206eba14757002af51446399f42024f5fc2c8504a62265c3143575e0759df0d2eb4e553d425d4060d675874e9bb91b97594524e4191df39ea243045d0af38f185a1ff86e51c98511a21206c78155bebe3c3f193b0bbb59ddcffaf2b9460ecb923007353c73785452314487c781668cf91567d22496a1968423b256507e2b2c270355247b40d5384eda1e6906b4bc352cfaaa7b09deda81b27111b1a79f70daa3acfcbe2af2d679206289cabc73b6be5d0b2d62a258d795b78d10cc6d91113d477aa7f18312b11565c93b361e54462fe3b73742d0da49574a6460bb8115b35e71b7e73d39ca54a9d659e8b5d3e74ac95c316b78ddc9511d3d4dd4093a7655c4ffc3b096e90d45197da7b1dddfbfa1da7d428b8cfe5c4ac8b9a7473d1b6ba79bbc4f9753bfc62fc58fdef8b31d514d6b752c952ae89f4aed152eedc3b36c01c9dfb539cff0da3cf58721a443f3e7c234864eba89949c19580fdf2f5728eb139ad167dd971eb64c2f4a8725f02e6c558644ff15f33aa183196af79186a80a475669f6a48be3cfa0bebd3b8a406853dc81866379dd3e5da00b5930032e95bd4ce8867d23a0887308be171ddbbeefb1db8f502608b026f1001a37a94170d86ad6594cde92be2564c1fdf6521e7efc13ea1919572b9ff425d95cafb0970c34f53805311193dd63a4fc4d19ff0d952a3907304bf1ff53e0c9cefb9250a93511c9a9f50b81461df8d126307553914f5cf03ed6c7ebc59e414cb20a1bed42dcdd7afa159020fb6ef11010db4c8417fcb39b148696dc62d4d09b5fed814daf8a3bdec7b026ef3336a5a79ca72a43ee7584361ada10c03d1878aff2b5a5f8e4b126f860a214ddebfa906233abce02b5335bec9cb3d208c6dd49089db43ae18e6b0591fd2536942ea79ccc0fe733daa2a92391d0e6a1c5b562c9e435b566bbfdae26d6c5476b86e19995249605a4ae38fafa0c593daa125feb8c0eb0d796a341b65256bc62d2166a63fdb50949affb551622964f5400a9d395865573e378a22d0c8d9e18b604f3b7e94be0dd93fe6ad6094927076d70463101efa34223ce49e4bef6a24d9b998622e33b581edb8d086bfc4b211dbdc4245b8d1606f75dd8d5f199235574127f1abdeaef291785b233f7e825609920f3492766b319d528ee8d969bb59aac45fefd69f091018a0deacfa6cf56ecd4337d3980b9ccc25506982aad74c51472756e1f2a13dc63568df0e38da569028219b82a5fc443e0675ae86e85077d6eaf6c8f0fc59b77875725eb61ade73c0fb7c89f80d89fcef5f4b3dbe46c0441a65aab4576e5ad68f815b3e64cb6a2d95fb55d23b1e578e2b3b321e2024ec0e4b7ab3dea4aca670a37c45c7453198faa282764cb0f8ed796d2713f9f1ede3066bdd304c108e954d754414279d8567633bd3b94f33bbe16e87a3cb9e78753eaf763f2bcadf63ebabbb2980ecf98389877b62d739487b2fd59277ed7f381b5e60dbaced66db3cb0b9bbe66a8b01398897aa06ceea54eba649b36af431c6f1e9c53db316f4d1516b1cb4ded1ddc7b11358e822aa48eeba6718a9feb2ef263aad5e9009758b2dced86c17f04f9db70d17a42b2aebbd340469c4331b8317c1db18ff79b49f059866e3b8966360eb0ab5a9e990133eb44058b98444d3baaadcb9b44f0ce17e83af6fa7fefbc17bccd3b5e6a8f8999b1f9f3ca6c400ae00d0b308e949caefa7e7ca6689b4d49ab6a7948932f7f5601af4dd2b42a0941d5e521304aabdfe698459ce1ef642ec85c1c968c57d000d59eeab286bd06dd50d5a1e8ba9bad062dbb8c30f03378596e908e2bc76a18041fd1fc2f4467631b4b4f8c72e586d7814ca25554b22e14eca4f3a86972e0848f5437f39be883126800e3903e6770301dd462a01a8f3c9e10b54a4ae71fd74c0165d3717d4377c3bf9af8b2b4d8a0f8ac7cf8400cc0719772774bd349fe1df5f9f9731e334f7359332d8c9be25478789077f4c4b011802bcbb4d9d5a476a0d346208272b7b92630345ec66de56a685432fc001226a25ef5194125b44ed90bd602accd900da8b1598d1c6f1d17df91655b605a389459a664bd43d1379880b0c9a29ff6f7829bd4e0f54857e810e77cb2ed03807c6439fc5b2f0d3cd662d99e2a9b6c3532b035e145c45bd3cfd03d9369292dd7ce5ea16fb037bb79ddb450b2cee5bf24cb7ee00e9240e4351f620f1f5186c25d2340bf1cbafbbdc188c590dcdd7354dc23d9e59d442c9ec0543c0544dadea6977c743c8cd9a1c66b89166ed456da15031e13adec145d6fa845d3582f610d2c962f596fb309c63f3c6e6c9e646c73afbf44dc19570f03b10a1e3bc213b5382e2b8d90eb6a703bdad42ecb7b16e942b27652e6ea566badae49d18fd431060aedf03d27196330f96da7fe64459e196c94e31b63a6f5b4c6f1b896016c07d72625bef0307e9677547ff677dfd99632185d69a196953530565e575c7431340985ac814d36aa5badd8fdfe83d0f4b2da02736dc1021673879785ed9790b643d35a960616f73a2d264dee085150194b311629b9b591cb213ee29ca584bff8a1882add2034325b25d1b6d9c05dbfbf04184abdfc03463c52addff1c96310d43e70b5a269d85b797dd862baae4c6a247579f6feb67e718bd2d77997beac65fe3d22ecb94a5aaa809071d79ee8df27b8e621d8de0f13c58ff511e919989c7ce44359f2d4c93efe231c2ceaff457e0e8c8a84a24a668fe1f4aaee72e223c98dfb495e7f45956d1f05d98797e20eef3ae59d489b5af817f4fe26c1feb94babd5518c4e061352a9541d15e7313c01bf30feeebce8f198e15b3f570c3c03fb562539f323b59a492c17deb3a041749e68e728335258f748f992082dc065041c1d409ad98fa89f496a1eb14b0e9754a83d29a49d8292bdb79e6a3537ccfd0bcb506fad4dbf6e3c2f3c3e32244d2fbdcfdb57263e68dd5296560bbeb7f38d5a97f0dc50f365a5ecb087b55266be5bd9c4e8d62c8d597a874106aa4630b10dce915a48c8992260e7bbd605bd6d7395575409839c855a06514a4eeb79b215ab38d02a9e3ab24ad8c3e74cddf08025ce9cabb76a6f3dc95c3e40fdad6491dccaa74e99e4e454f17aec6696151ebb0ce0acaf8a93f6b41790d8ebc9de6b86f5196af8f2954f00be087bd8a7f67ed9a845de8a81c1cd72be110f487ae5d4ba487a0512a941d1c2557c7a5dfcff68fb96613e05e99fb883b765c242e06e012b842ed98264ea758bf2058de2bbbd589c3d036b05b51ff8a4077ce5d51a0eb0ead070c99306781c8e0b25a0442f3d0f45b15c56b6e59f29c0634730b4d0095e4e0923ad1f81820dadfda6a2ddde9af74e9f798e1c3272262ca94b3cce0a95321175177581c39bcaae43736b48356498ab43125675a19c7419890d3e489a6de5a57e663899ec9c3b4f2bb629115b3a784e0edfe4f4deefcbb82b5c0ab120219beb7a8f757966bdaab4230c57a2dc13dc20e4e38dc524a4b35d4a630da78500edfec2302bb0ce369a80eb1e74269022b3400e88aa79637be7a1e980fcbcc23ffdbff937dd38c9cc204552ce032033d9055554352e3919f8e8050d53e0c15977d25dc6db1bb9125cc8d80e77658e3fef308a15b56e5a1d35a1dc93aa3d892c7997d7ed72428d1af45e956f89c027513b70d5f2366d5e407efc3b3b88355fd541e006f2b61445d91965308cc32e6191099ff02fdc18353d39d7ddad637ad6ae5dc45d8788475bbc52e17bea11ea509cc4c12414356b226b328a77e2d2661a7a10af5fd01a4ec5868775f8f0bb3b1c9e21cfbe5c2c55a55883832b8eb126dadb6ac500dbcfe32393d5349567365c82e31a0ba0f3a44bb6016666d5151be15c6d6149942d3ff19562b2f537993d479065d7e385ddf4034b284d2941335d37ca2b56d4f262711b9ebbba28e5ffb1e7f1c4b44e3b6dbe04086df4fadfe812554608c57ae35c83d63d69ba035f09089d24ca948c6a6c94914bf96196cf5b2404a019994e9a17ea4be3b1d3785300776c6b863a0c7d23cbca500ff1c2dfc59460a559dc506f243ba67f3b8e0ffcc6ea994022f230010367e3527d1d139489e1ce9b65c36613bc75cca868664791da4e21fa803805fb2b1959480a8a2e202b8ec994921ba2a55ebb41a2bc5468efddcc0e13299610e301a53b92f85e52cd276f1838c37987be346e997cb56c968a51efa3ef8f2a240ecd0ab6ac94b6417efb995933f7188c356a3a08215417cf588c6e1bb92d0936901aa640c884375b7cff7e2a08ba3bfad048154717a2f5ee925033fcb113a4d042f6e0cd66b99a3b031ba3fc54e260cca4f9273ec48ee8c3b935973311bfc1562a35bc6fe3bdce7c89f1f7e3a3d58028d6b3c547c4ef185f49620f135de24d73036a0e4a7a482709b63583a9d401a3979aa1bf792f1cef6740102021dc686a0abcce252909c62faab322a89ac205096836c7d99fb54be1d960f81dda34e393da70cbad0dad438b95ccc70f6e00964ab04b4e417bae120ba459f6f0f793a18d8ec3735fc703424d0882c96d374f7c421c91f88208487f68c7f14732eebb042b09405522ccd472b5ac5ec1ed6b75f60371389d3353e1f6669c6e68be247759bdd5293871b351db5028bec1f06c8c22d4b9fcce380269e3ad57ef1853ba57f4925e8143d62af3c0d2eca5ec1fc09e5a479fd550b7497336139cdcb84570fbc37de28bc4fc13d4ae5b1abe9c272fa8f4349d2dc523d8cfe6ca2d99e8159549a95e54b708f3c2668cf1d809bf41e33ad0b67d063f20851c311119b2bc8afe86556a3734f4205559ec4931f16bce4bc7000737df1da1309edac5a8cf377aa9d12b01ea3a19f342163a1303c7895520911addc13ab2d8ef431b999ecc102622448a02291d85356fee0a504693a8b702d3c9dcf13f2c14da0645b2e6d25b2ed96fb63720b74ffc2e4bbf59bd76bc1de3713e32f55e5a1506957d94e6fc421ea81d3fe0ddc26b8ca7ae819170e79eb43bcf593a6ac2e8b0ffe3a1b2833d8bf4f28e8b886626487af489e7cd317edd40beed046be755673a0c78b318e9a855099fb2e9b635393e76f818defa3f26bda75e4f69a0f94eefea86475cc3c613c6c3a8205f6954f7e4a612a4826993a7b6df3e1bbb07dbdc60821a08ec3a7ecbffe6526ddddfd453f949aab3d395a568c93d6b838ac821f041fe58df3905b15ffc624a7fea7fed0ce9e2e13bf250da6216750a79a398cb1660519b70ed1ed8b6ad7bb25b970230295b436954149cf76d696bf445a0268c63e315a80d5c77dbb0b1963091695d34dd518ad127ceabdbc87e04e5a8c3ac0ae954fc233d7dac44b38c84b33583a1789937d17b10baf8ed5d99de3c04015a87ed4bcb9584112b7a460f3f63c22c76b2b9c8c01cd0225b8d5dd355c9e8c4d3848c40b9a43e7a0b31522fedbba1c66a846ae6247d1243c2a22a7a71e9c6e9e3b5d1b8220076e53458277205fbd5a87f2e6611030bd98c896583803f7f03449eb69eb9db031f92473b69de6170a885dc2cc491a58638b014ac84cf045586e95bb7a2c8a660018aaa0c402ae67c7215ff7b2fbf96bab910393fd29277f50b849383f51acf9f13da6fe0e622d609497c8fc921e99b2609a4fbc21d3f5f73aee34f11b49196fe3c4798bde00eaf9463816fe985adb6757e6489431aebd053756a676dd941c9c2052a9a3a9d9c09aca3a8e2bba0a14e7f2ccb7854ce9746cd269f4651e1bb378127b60226c6660ecd808b70e1fdc8da5560a48409eb4241de9c1f785b239114275b1ed11b3a4cc02872edbeed31b01fdcbf30bf1a4b369444e7e8df3a8291d6d40d240ec3de0ded2e0f68945714f21c62636f30ad6def7a8183b175eb72bf268aa2d726b57cbbff80ccb1543aed913c332b15a9fe36c125aac46fa53201b5d31f2813bea476e70ceb2de17630fd8efd9739a7b46244114aedb541e9f66f562b1d82d7a54838144d29c91e810231b411fc350f797dfcaea90b95c72b15f9db8f5f3d2b1a774d8645dd133285cfe168ab09231513381379722f7a7662177a0482f46bb8703099d4aaa9b863bbdebedbf5ee24f7258f457b0a5e65b6f36350db285c298444a5c3e462b3f6ac7e97d43c8282f242510aa9fdfbd7ded86855a7ac7b9a9a05851291ffc304fa537b9785a0286e72b9ce40b3261fef002a99d22361098e897d4a1df42e4e0e4973b19421cbe802ef6e9295d0987c8c23e59c47f35463be220efc88072c97b2dfa4612cd0cc0a0f74a86d64ce0397a5f511bc261c3d81e507e8238a7944bf40a7b0fdc30dac0a5c5f0ceebb9ad6eeca077f7be59206801220a8db7583e5dd5c03010025e2bec119614816e6c30b541d33dfc2e2d3b4e9787d2b06286d4c778e7520a98a38d6484c37e44efc43eaf0415f8bace296b130d8e2ab23c5cf0a58d1fa27f7ef6e4bde3e88e1fa3a44c92962ce2c6af4c9df859fb7efe4ec21ae6ee3f3737b72c8f7f580f70fd0b10e0a8ed2c423a558eb56d62516b215ab15dcec9f730bcc99e7ea717b1152f314e7bcea3833a32e0e5fd9aea22de4e163d9c74141fdcdd37e1ec26fd5a59e96786d9f5544a31504cd55cd9582417da03761c45542f802f0288ea5ff6f6ffc4ab1e39a54df5d338bc90b53948a26cbfcb84307fb49eee873c26fdad3c09853a875cd57589b9c715d61244fdea47111d30a176b76c175181b2fb30db5f6a492e8c0a9f940144081230b0ff1b3d5f86b58cc6b95377c577fc9b0280aa20482a615c24ba434b9ccfe2ccfb0ebe06f5016ce74717119834169c614f344f1b7794fe41cb4459864ca339a80e20c5ae8ad3ce90a5af7eb278f24771f4f7f2415fdf0f580572be9b28cc5153840841dd3fbd895446d380709a07a822dc982f270d1a05430911f0cb4e0f66a1be68fbed9d4aed39f64dcd388201b0ab4a239918327c34791830818d3bf83a64422eeb326f6973d44c2e7175db450f25fad932091d5c541b2aa896bb0a6592383fb9c2064cec33245d284c2aaaf2bf9e02bff54bf6e1015de8046a14404fb662941961afc7296c06517d92db8cd87a4400d54d1ec8af3c7dc26ac907b1fcf5bae44f6010679e0036d22349c4e47b3f9229fc9b021e5de94e15d395d569dd1faa8bbf882dcb52f5db62c7ce5c5e95d1984753b3ea44f44f51ac3445fca75c09368506597db9caf5af07175031945f3852c2505f3276969b581df561f743d40d1e9b40850bec6ccfa8e5c55408c63c3e06335cdb69770b5dc6c04d074e24a387076953736bd3a6f43cb5922f59dee4f2be2e8d57f078480852482569f1932059ba0941bd7ab48afa322da58f12405929cd3a58795e3de97661363d4deb95c7686d7fa7b2f3cb491d02c792f3b01651f85c1d5fd8c0d32d63f1b7788c5c907e1c232983d5cf61b7b9c27e662ea522ae3b1afc4d82a26e4eed0da37093cbe850e415d7025c7af6f4d1ae7019e80a3ccf12e5faaa76e721de1bdb9b7ee5c26b49b03450bcb1d2f3828b3276041daf05435e964cc22b779184532da2e796bf995d75af5ad8f5fe8b34b28c24f59c668a7248d4e76408b7da8de1b189d4d16f3383ad9399dd780eb0f033ffceba89b4be58bbf65104e9d442af77a71e5554419f1ad478d199426c48bda08f6e32dbc02041e5fb31d2a1e173e6a726f9c0ef3f02d2ec3c66498e21194db0579112df9ef0d4ba8c9dee72bb52886bfa406709442606fad0238549e8fb2bbd65b3fab3e3ba737111525c96c8b76b9e08e4a41b71876f8615a4ae970d5ab0442da393cc8c2ff105d64b66ba81949b814a01273204239b1fc7e38b4f24100c6987d3e070367f57b53e6d5e7ecc4f2337558a557172e147d57ad8827a8725327043bd3c3da2b83a840c2821f625635748725da08dd7b542bdaa196ed8ac01ca4547b2dca08de07eb9b15a962c9d827322485aaf4fb4ccc471d2ee535a470914f53fc4225fd8bd2f61b6d37b9b9dd9869312334416fd63a88d9b5461a939cd7633e2a07610fb932ec82c2d22b589266e516bfcf252782602331acb6a9e583567d4ba85d89fcd45070436f2685f25bf0a72a2bdb40a6d24ce8819ffdcc8fd5081538fade3cc9d9a336a96403370d0c7fcf4a683bd57a1c3683578a077e969b7f24e4ed97faa959f70165a58c2359127e6367fb8ede7a8407de694f76479f7a1ca0690d61322725f8f6889cbdff0ee02a37d51c1ac7b839becceca0b41221d2a5fe3a625a56e896a5782ed3f85549cc7f370fc24f9698b09f122fe6c6b424055baee3f21f39e21e9a6cbe4f4bb0bf212cc9d3fbd001ab4466b9938f28e6c57d8ec56934946161732f96e477fc23039fdd8f273b4a18d1860d8f355ffa2e75cbd37ec24955e0ed31fe2dc5b6d23d5c593d844d451cbd2d9d1e76fc023ca2d915439a614e9a511929dd946dbc44b7fe18b0bcb55d6d3904d120b533d245a6e8d1bad1fff1a8e7efa26e824068d5ca5857861a410ec7e817ce4a067c9c1090a2684d9156e1ecc0a033462b0c8d66634e60cff4e386a9ef0f00b907a85cfb81b1dc579ead83ff43c29cbe56beff4fd0ecc35652ea46fed42d53b3edcb26987e9a41ecd25358fd5f0f7b33a986bd60f86bf13cf0be815046a625bd1e2bf5ff973b23c78ee16dcd4d5dd038bbca7b43fe502205492fc3e08729e7992666423b3ed1fa1109561e571ef53ffa625ec8793e95c06fbd3773f0ef96a0a1b45cecef53c9f3f7d0b889e13155489ac5fd3f32041b3fd30c25567f2b0e346aedfdd13607c7cb5d2675dac32741f9b77c0ce9d8a1275a908b750abd2dc0ccbc1997226a27b30c7f462757bfb0a557eb6ddba1f8b75d5cd3aeec9f035d7d1ca415ec7f3c23bc30d12db14928b2c58c3591384087ff6d560220842be5c8f53788e1adf384d73fefd0155b2ffff00072e5dffda9cdb1721c2d48861522d068775893e014a3b0f70b3a874060ca504c1129406f949c4cbb42306579163abd0236b4b3f469dc0ac3c29c784ac87b985bddd38ce74fc7cfb5c6da141230af298e21e4317346a201dc2ca09f252606229b2be7cc326cd4b04fe24da760a97349b0ba390c36af098e90986bad07b5a9d66c9b239931db67837af25060a2459612b557968c360370bca0bca3655cd123c08e96636b2a2417e58a52fbc750f939f2d12c32b9c2f596f2fc01a2d5bf2a832af48ac20d74e652a20ed9a8b139723089cb0d8ab5970aa55bb0225b1e00ab6cf4e5879807d2efb62bbf5b620a4a8a2a60488e2c0062851adc4447c6885ac70c5aef6b06a63f68a7d4beba0d0cdddf40607f84cf434c41cc9d40f6c6d12732046e9f729a80d48559e63e19a5696949751dcd631817927b1232c588708f02043d8effbb05a4006d35e8ccd2d04eb97273fcb2f1156ecc556b43c9fdf0cad4f05f10495fee68ab91a10c351a0c41b58e4f9b2517314add101be2ce60d767cb0f0d540bedb0fb704de49f9568c1b5cb3315a832d4e445b7762e2577077e2b2dcf1c00ea2eebb5d29f11a92779db5454e5ac9c30448129c2a10ebca5578a74ab617c4adb0e9d4519c8e1ce739c239527c147c0d6831f99902222bcae55d886258ae74b206170c30aac8ddc41a5ac863b88ba48d8550a87e26c6934bd95a8cbc9797f784237a15d82bdb98ea672afd3dadf0b186c75751ff49aa967955df0a3e1303a3dfef0118eb4a4fe88eea235807ced1b1ccc2214ace3947b933befec872d4e70b521485a65356233ed86143a8cf7ebe6d4b758c972678614c8b58cded0780e1ffc09f8292b8a6683365cd167303cdf6ed7ed40d8843e9501347bddfa64e16539ee3fde04e0c930963c687b15af8b729a0f8abdbfde78fe1c6631b5691bd43f17dc43d25660075a966ff3019336709847fdfcbc069d759df478d4a1d5f7041168e45a8dcbc8cbdd0b8096975cfebbd91416c87f9c05cfc9e05a8ad4fbba345812d97a632f66b19d7b3505a8c8e84fdb3b96c83b1e9c3e0159549e5df23398463c2c4f8ec559ca53da13514565516a42d5bc2d4fc32dd2053b53d52f74938bfdcf9263c48e8e2336bd18db5b0f5eb590800e26e666e80936b060168b28d4b6749b7eec16e8d459ffcff20677ff62d3c54e158e26d2a04e92a8848cf24553f4c04a69eb583c390301bdd2b26be516d1584fb3f6b8e5ec6d71b8e7958cf5186dd7d528f937cafd0128b70de5e54041f26e8efcb4fa992a858b9362fbef142b7facaa96cef42f2dbd7632fdf56b03a1b7d89d2bf8eed2c8ff3da9bb73762660c540dc1b58ad84cc70ca509c667757c1ee0e739f7dd961ae41baee295dbd494e25a57d03dbb77f36ede18699f09c77847445c54e0f81d79149dce09ffd1bcf93cc2ed5ead21eab4f1cd36176badfafb9ad621bdfb3eb43e101750d460573172418f08b9ffaf8fc83275f8439e67ba26809447495ea22422ce8aca78d78e80e1bab975e90300d02a585bd273a36ae23545740c0b32e6732bc6f6bbcbb6245a35955cbf9bddf9efec4fd942ef5351a309991d6858362dda677503d17403c1bb666476b77d85ca85c2450ea96a8239b3211032c2b73ad8ef34ddbfe65efa490980df398bf1462a05642fe4550173ae97f3a2251a34a5b42778036ed7fa88f6fa935eeebf233ff31d134224094b5e6352572ba721c0f07af0e0705f641dd2304b9c5f60bbe2e507e7aa7a9b4c47f1bdfa45ec980bfe299d1705b1e1ce38ac484e6a06e2b9e77f890f2b164f5f16cc300e4d089911f8716547c0d73af27223f6dd2e98db539ba95e909a19c1a2fb046681e8081af2137e64bac0f8b5f0a0f4ab42a2ffebf4c1d1099873cb44bcf1a039dc6c580be9d11a307e94acbfc58112ba04804999e6e6bdcfaa873763dc2c1f84ea49c711e5b5a271dfdb90124fa92440cfdd2991d0ce042e3170aa4fde43f1b4cb350b50fb0f8844d97ec7f39e6d04f0cedf7579d0b490a1ee2c3a6c315df93c6b3f3bbf5b37d1e4a1e4747fa9d041a03670a6508b9722bd1a873ddebea812c9abde5317483197adae3541059fd09eaed3ea5b5eda65ce8f162dcd323da4864ccfd7b447cfab8867c9a1db7485c19132dc20d6b3f56c7a5bf83f4b13a42398dbe52ea17f4faa65e7107d73dae252c5ff60b47d3c3e04649b6739d909b2dbfc554d77c2c6004084fcfec73eeb8aac98780d8e5a5e0915995a83a5df55b6385ae18b82a5250a3b4fafcd5ff6a1e19d9d301f1b9c2a10c77fdacc2986d010a0ce330fd1385ee3b0c3cfd5a558eb24331c5fbf14141e644c4c8950b740e119d76bae9a2e513405f3f2d3c0e5a4628f248d2128cdb9710b828c4887933e82642eb3476e9326462a918106a823201e667b218e3f6224fba6dc9f03aa18f8548c3c214670bad574a2b42a057b44958b4379399692c0159dc3e2389671aba9c601689fcae3dbdddc7a4e3c8f47b4d05c3146ecb8d914ec47b948df027d69d144863b102b76a3a35e7c4816a43cc72284632a86857125308a399c70f9d780b1814a85c71cadc7efb64227aff18213e140a62003ee70100cb1ef4f9aad5bf6d2c8e08c0eafff9f6c27ee51119344ebe53bd15e98694716cd78d4e161fde3dd7e637540a11524b62baf3182d91e7eef0cb4d1092be70c6c654d17c99de792ac460dff1530435c9620d3bfb5b905736db6ba1dabd68fed8beb1abfd279529c5a7a785981e053cb11a4f65758f740dfd94980a22568595b1d19ae6496f421547fb4e27b4ccbc71dbdf143f643eb504046aeb07fd8e368ef59cda4a8b6639e786f4eb93dd37b8d0eb5a924e8a2858bcf1dd2df2156ff4425c788ee46b3ed2af3aae64d5b2073dc9299504ac7b5c4ba07d126068e96a6d85938f2dce92c0e4c8994e19aac2da6dfb63fcd469dfd400bd057200df0d37645b84f54c41e9d15fe3783e617c015fe2f75d1edb4b150a14aa69bb86bbe504286fe1f1c2c0eafa55b33ba5f9e4bd9d61e13f2e0f0c4ee257662ececd2041f91e143245d8fd9973894c4b9fb5d257781d0cb04ba60b9bf1e996d9b3ceaa7a01e2c2b7e4cadc007973280a82fe1b679c126d4e2f34ced8572fb85ba2e1cb4e056db2a4ec469708f63b38e49b0211cc9507b0125e848c7f319a06ac4cb720916dde7d404c33d1d9f906b0112faac60855b2a9da4582b3742a31308a72084f697098048bfeb374b97e4be6d74ccd88ce801ed2efee7962d1cb08a0040be6e944d658a371c028d65bd7da64867aa0775b4d80348b09e124c717550a9dd3be6f52830f8297a72b887484887bc7f5afd7c7c693199e769b24f083d85d7bfaf4f7b8fdce7e83ac92c1a258b58f3b76743c12faf84dd28984ff877e62c16e538eedda88f973b7b3a9424805b1a0f1da29d58a49cf363d05e516e83608d1faa761fc46ea52760a91ba177a5279c4a2e9b8e9f8895c541ce550569b532ddb3e20fa8f0fe2c2dea87656e103e2b93fcab2cecbf0bf1cd771df987977bf541271c2c105f226614f17537705786fe0077f2ef83e6c27d769433283d0ef2d61e41abfb0fdf334b53b84853f41ca605eafcc1c3cfd8ccfa999c0da8d8ba0418b346002b0c0191046c3b9ea03275eefd5b48824bbadcf99e2e458ea1f6208b90084b7d73a2658871bf4753a6edd56375c45aa56e7324ca8fc0c7981f44e18827321eb40b46c248a42f0eb315a317a5519791cad85430696bbcdbb29137cdcb5cda758230ec2cac649256093e4c3cf2494539a878d6d868c3899eff4d5989b6bf2129fca5c880dbabf3be7b98ae1dd06782188f0093f2e29c7574140a1c002577cd99742d1aeead28a8b0713d3c65888ddcad90695cbed4ec6c2c80644527febdc5a44112070759be2ff55d6a846f8feda119ee6c6097fb2387f0db5be6d9345fe4b303a189db7d03e814700334fdab8f17ee7a095d91369f60cde4d4e3c8af3e13cb57ac6cf6dfc28ee98e0ca6d396ceff5f0c04e5f8743645da6b160fc4ced0baaad906584d1b79940e013104afaadb7091e263b4e785b12a4ce24fcedd099f8061450aed757edc3e19533ff7272739fbf036f1145fb14b7bfde50d552b75c755e75815f3b1c6509bc25ea8e76e7b3f20e7bfbf529adf36b0347ac56c23ca7cd59bcf0894a4db71416dd104cefe0799184c079e408b3716bcb38750cdddf582f3c172c7a8c2d08ce5b0338a93a9c8c7ea5fe6a5ccb28984455ad66905b511b3fa52c3bc15d06226bbd53e9b02a0629dd13e57b1a4c7908cb1e4f130f30c1a7ddbc2325437fcdf73a7694038475724c2f20b11e0eadc0d2ffe9152aacc3fad61ca8f39805e6fe9df43596787ff6d9f31654c1115fafa09e26cbab13eb8f39a752eb7db365d5bc589b0361952dcf2a6ba872c4a783a5c130dfda0a939f55a12e3df6954ee22e108c33698d987d1aea682a7a92af305c0208db6099f4b9420cc68b699b326695d3994bbb8e0b9d6547a7ef6d99ab69c85e133c45e7a08c003a3d6673a31df6feea43602c4399d37b925fcd1cc53b32981a5435e6ee5699563ac92b64fdb1dca441a98be78248e7472111b59bd2f22d7bcb3f6840b9a488c3d0816f0220d6a3a1158dc770a810ab385b94f53912cfff297dbf88a1bcde76f604e70bb39cf539fa104da3a6d4033be000ede66de5f8723f647ea6fdae86ae7d5b4c237e8d8eaef7ebe9c1c752e4f97a31f659fef08bfab7020e10a6098588ec4c9c06a986d42481e5fe08c73ee4996fb1453448542edbfbb50e504b09d1e9d4ce135ff20b9f705f7d899783cae2d1a92ce6cff48931ceab1e273a3de0a8c2121267e53c59fa3f48f326e3cbde6afc91013475330c19d7eb7b3fc62143e56c7df910dd8b82f6a8a55003a678f7ca5637d96d16147d9812068f264617a6f943069f0e7bd3f036f344b678a4c31b6891fefb1c8029e521f56c0bd839859b742debb7727f5c6eb5cb3e9222267cec8f89d5f2b412a5190942d3573a8e8f631c1a8136c797b8d2fdf87bc40788bc12f356979ff239feacb3ef16bb511f3f54d54c84fbe9ffab87c276f904437ea3a9ea70586b9aa01919e41ec83f973c44c61a46de190f0b6ef756bef4430bee2b31d5692dd87e421c2f4023f2475784f12583deac415d4cdd16563f4927a9fa51ad772f979e537a69135aec3bf9b3cb7b1af0e69474649c4eb37cd7b5a5820a7df17ccb08f63d901a6cbb402c1f5d0694cf8ed369b8b6165fc4ee95149dcbde14e5f5b0a4ed857bb6d0b47379000b80a55c5119b7c8dc2f0a731feddec58a4e8dea3b91429fa0f0347a7dd63a5f26c2dad4d963f69022499f24fd3fe802137ca5f8ba40b4f39b599937fb27618b3dadfcffafd292c8bd7521c5536f70d3e8ec233047d582b7bd206f3a1467e6110e204d3cda943c0593af2b792796aa7e7f2bdfb88cc221936401f1db8dbed3a46d97e49d06272cba1459a1713f068dea963ab615bba70a74db0db16fcf8f1d72e072a50bed6403497007b68ca748cb8d6149fea2d95d710fa247fbb04e8d4e00f29a74fb61317940d09e0172fe324be92e9c4fa0750bcc8f7750dd4623c73e7cfeff53c020f0388a1138f5b3b9d74f11e002375aa00244036ce11371445c045857fdf62fd201122b36176f77a09fdc02e252ca15e6014443f2fb5aa479b5a98bbf030feb08434fd5e4fab9a510edb46085c2240e44e84979aeb2483c999304781d0c53601dbbfb511cab86d179a3367e55b49fc264cdcaa832a4937b6de34ce4a9f623f2ba76dc847d23dac021fb09f8c0de99b7eff06936168cb65bdcd22b8fd525fa6e4d3f8198affdb6316110b9a601020a280b411a293f46c04550e537d01d12121a32945a9bdfa75b27769acd335388647d5d65c434f72adb3b90ba0b80879685c73da172e6bffbd1d9c2556ec150a9ff414795cfd7d59c1707e745a64619a649b4cfb5fa6b96214debcc5e06db8421ca86ed3e8bac476d81fbbbb4d11fff9a42ffe020f147506b636dcd0071fe14df0f2babd1ebe1f67b4a89e99d4491e50d013ab4d81eda0e73a35734d463304cf3074aa36d0dec8218f9f4687fd9254ca2f33479b7602c49264728f4ac3e9881fc9fef1e084f66f6b51b44346bfbd1c870928b1909ad751a83caec1594e6dc3c6fcd2b1810a9c276119621f573d7a731ecb7ad2369dba535f8361bf0e6c074704ba95d8849590caf110998c841c5fe41604aca777db10ba006e9e028272f8814bbcefed7571800861945caa55e7d67b6b309330a497a28c6ab5da04d3b586acc27efe838941f9bac7a88fe49c82a56e1053dc10f1c1e4868ef47ceaa1c416f5c3fe008a14d1b79d8fc2698ceab1f7eb6760ae17f650838bf156479693b45e7b5d4eeadd1074af07fadb4d3717ac2e7bca78c4fc302aaec02d97f924d07e061dd2f6c3c59cf76ccc99dbfd4fbebfd97a06f383607d9aea146f4dc4c2876c474e1a2b0a6d7b22b7ffd64a640bbe0790d2db36d983a45e6b62fb8d67a567935c395fca6b1d91c58eef6b5c6e1fba2f9cad7d67e53bcb3b3165a4d716b72762d6277f3298ad6a5cf04ae842b02f9a48ac2016dec65cff27763e54527c27003d23c98ee2048cb33df91531d7cde008adf7f042740636b002254e8a5d75a92d2adf4151edd4debf5b52befe8ee1e8f4f58c4f919e73c231dd5fc1d76e629d728ebc0fc33b4c6d0395025d5ac35b4011ffb93f085779dc3cd35653604024c992f917b6939f786a9a940af5254714cc55fbbf8ba0d7351f6d73f1635f4f2088d80289d7a5b5fac3c1426c48924d88767d99459fc624df1bc2b70cb6a2aae68e8f3502d98d98184b5cc57fafa9a07eb38638395bd9673e32218e4fdd0a1153778a0d526b176384e97010b838c6278cd6352c15fbb0194caad2f0d7a10e60434b9d031760c2828016a706393918be327a9111b86f11fd36a4018f426636523d2d21aa78ff3fda4beccf29e16023599472633343283be95f133d05cfeaa08d9d0f74d937acf7b3ff905bdba8563f7ff46bbdfeb01d5d641440fca5a29e7d022a2477ece70383844921e02c79dc160e82627087151a1c0e123b15d26b0e9599214f0e0d63d1317daaee9940dc7b2a512396941cbba011da1c4544e1e7e5bf322372a490cb1786ee26aee43929c74c683e7a04ed8c90491a326ca99a0d686af385d4a464ac34b77a8f27c3bd0d4d26feb766dfbb8196c3592287493dde3718e5fc47018b0a982e18ce105c039776b34ea27c09a5f8c9f6069c478c181fcadde39fe9afa679d90be4e0037a741caac17d5646a7f1395948eef051bdb47ddee4dcb38827988501a0c46ce909dead37763df217a7fc8d00988420298e8be0ecea5ccccde72903b7f4db11c59d30e7c5c8c4731a36279c22b501f1449150e689c16e2036f0cc19a042caeb8becd04b300316ee3847dd03bde44a21d7bfc9d563cfc92cd8466518af77c0e7904f788b0a48958fdc13aa61205eadfd9bf537809f8c50fdaf74266743b762da1d46a5524608ef7481945c3247cf68e191724fd80a07dfb7e2058028ffd87a7f03f19b88cb8c4e82b3083c46e3d9096f9a5bc03fd1626942020c1a5bf2e57acd4597f61c2d71e4bcef744cb6bd8f9489d7384fcd1b526a1edb9de18e449ccf468d23c6c60624bdde3b1fa38dd1fa7e580d747d0d4ea0a1d3bf51257fd6f10233b1a24257fa6ae71e0312cb989d977be071e0c1ff5daa228496c6c1236d89aee981c60b82b5dbea67ec9f390d86d713fb193051521ce2b283261d5e0bd8403e99f566f93ce3628e76ebd7d2fac29e12b7a27c761e204e780c457bb8102da38233fdfc7b196ebfee9ac3127eb944c5be6bcdc17ba76f07f86a898802bda377136a92258d390305e515906bcac42b99e508845e22deedba643b22f34de9d23082e4022530c2571cbd4cab42a3b7ed59b56d2298abaa0a2a3d923eeb0871137a5c1a186082ed4c403c4d7bb8145a05bb67d0f016713f32ab3a2a3fa78a0793b4fe7a7ee25b1eb180f75b3f3620f31767bc8072650df6fda98ff18ce0af82327036cdb9d87f970640fa86f7e6a050ce7b438f8b751479371f76908352872ca3f5b4f007155db86ab7bc76e43840373c057823871a5c3c55210ec3573f0eee56bd516bce8e5ee172726af7ea5f7a2c958caa8ab78cd48535528ca042ebfc64bff71c6c92decb6196cf78f45bd2b2cc1988bb49c0e7f088836eb8298421a3360806422e06c3391187838de03ecb581f9de5a5bb99ac9f5660c2bbb800acd431f100bae5699f8a76ac15b5c341cb1b9bbd85d906053ed3a39faf3f2c56dfe511ad2fce9f59f77e9ecf60e969df1430ccf1bb657376669aa8262adce7460eb8f4b1946ac124f8d503e815e86b212da3ced4d0f36b73d0c899c13fd6034213d6d5385f400df7edfd2ae436590ca162c00eb38191b3008c2f7f128a2e46a1caa0a0c178b85b6eca54d33a9c45230f428501347f4b9a048d656812bcffbeee948bab51fab56eb3a5f8df0b73dd91981f26c721ee973a702d2042fc1c2d2225d868ae4ab2288bcf37285a9ab98ef8f191a2e9bbe690099aa71bce5e036138677ec685a8a46fc2c35f332ff3c26ba9b2f469a9b6f5fe43739c937f815f5b011c725a552c868b15da9ffb8ba6b7e110ece50f8a049b3302298f4b3e3e319061b6277fdb7b4421dcc39d04f89312bf0e98c81011cccdb3fc50692752f00f1675b011c007847a4c195ca31492eb238af98d45a6e87773b24bf9f553f91ea2e4e16b2a76267efd41a84f206510b18e27462bc7abd8a3eb5aabd165ff6a182963c3b96e7433cf53c26a802563663fcbd00dc2fc9247c583eb0e2ccba148c8f54609c65fc42599355ce3b3e9ff3186a55aec2c586835d202a08cc1a1d5bfb2ebc163038172463e147fe500469152fcbccbf09c91e7e2d5206cecff42c0de230501177edf6ae446925d457b39424b8d03439ad324a09656098663236e0add50d1fa4fad8465f71105a0b1cf65135319422e1b80cf2932acdec04687ca685b5ff08dd47303e38379f7e620dd916b347a95d05c64156989eb33b7bd675eb4db0498ef2882f038d21ba81d7ddc26385e61eb187d3bbde3add692c5c0c51593f3b6136a84b565aeca4a8a9c7652b29dc8cd87c8c0185325a056f7d4eb3d40b0fb323e6b2f607ea808bbc41ba9da67388f4a83e9331ba633195f53f5ef6913853d7a0be324a1dde676ecb1757cd69cec62a1489572df48135ec10ac8add327b1e13dfff1101226d086ee5e396b2d4b47352e180b540e125c4f5f", + "0xc8926746567ca6cede12189315a54fc3e17ace1626e5257b1d4e0f2a51812d1856c1ab5c2322444a3c24568fc99bc6ca09729b8fc86baadd38df41495970072b7f3056ad71b6c9e27227261ec25697007a6bb196310786adfb99eee89c95ee8be7a6fc6be3c1813212ffc4258b30c677faffcefc7f44874feae405b2b0e5f9fb974fe6eaae63a089afa29d06630e8887f38eeb2d9f9c5099cb0704fd1e57e2497b62063d1b10606f643bad05bb827d4ff4ee636dd69af24c29902a6fe2acbd79e35c73a0089f87294e509ecfbcbf3ffa2eaedc5b3c5334d6d4c5d1eaec1058ac02ca5cee68aa33100d036d2ebe59a968f7e2fb913c2904535f2fc477a17e366d729bc12bbe3cfd94485ca6b3d2d984134b8c5c9d16e6cae5a126d6b45afd8b25af1169bca6cfd7ed26a894893a208b3c46825d375d1f9bad357d2b98e3aaab319734e0a74d9a4045d5e2ead5eb96dbfaabf6ad1f7aed7685fa30ddbffe95c17df0db7dd6f42f992a0635c1181234584a6085b99e27f225d99330f158de68dc9de247af2a706ec7be6f80f4ba8c4c8f08f0d45556f4ae5573e72fd6aeace3910c79490fe1adbc74c248fc3a8f6c361db507c753b1c52bfe25a28cd5c90627c89a24fb09b02699863ccfe17f6179bbafdefa38d6f451ed4493b3422d1f7bce6d2239090fb66f78aae8c42858d0ad5b15613d5490b0a53b582accf0c33910db2a3d6f8a9463acf30effed53a294b75f02fcea6e4d0da0b8fca0e5eca86ebe6d541762686c341747a42f934da30b7abb7555417c64437546c7cfba68d224f151ad7612582e3a7d207edc035432508cc0e72d220df9542b3e3ddc48a6cbf30a58bdb36462b82fc2bd30b80ff6c56fb8a0ac6795e02b0220f65409543c45e1de7fc9b39ffc070c585b43ee8b1f74507cc0348642049dcf8298105ce46ab95136f3b6e8f1b0edd0ccf211e5d03537ad8cd91475f984e1e1d5492d7fc37f96d44dd062fbe8565da03a49b8793b440a264dedffb92cafce62709f20f6014ba1d055c4380cfadb5cf9d34de04faf38aec15a071db070dfbc1fff65debc71a38139f2751265fd9bd35b5ec88d700f302a6703d0620e00e3231202b820e72afbaae3bdbfa90eaf49bc78b55741fcc5d258c5c9eee2c53ae8328e4d642caf070413c0c2ba27fb2f677b8243c00c263ec114d7e43c2f381fff45e586a44ba92764684502999a5e824e5c278d8a72066c10d6b2bdc742e1d7295b64ab23797e6d7abb90f24f5c5d0fca763ea6f12a1643d6d29c74a398d32bfde8b88954f5a50133cb53fa12b46f233d7f35b921284a3cc6f4625b8d5ad00ad1b8f04518c012cdeb677bf89d3cb96e5c43dc82c673dbd4dd35e2785ed1580481a67bd7b430af00699e94ba4fd9198476d540d5e9bfbe0e213635074e81d1d2bc67d08a1b26ce8fd99c5b871444ed5e4ca8ed1622c5b0ed661c74f6039cb2cce8bc977e7f896eafeb838b97207e45d6791d01c010c885fb35141e687bb2cc718ead8b263c1d4b5cf195fa967aadeb2e6e4844df30e01bc5b0fa3c33b5d0dbe35cb28acb0bd235d614764a2556319a8af4e79c95f5d9e85d920c14613a6dfe68b9eeb8068e1c2b1f9d69f8593ef7b1714cd8f49838ce9dd73aa7b2b36ed628eadfdbeb4a1e05df7e42cd653a105b2450d27ff7b2f8c8c3cccb6e1419b307597893070758faeb42fe92308546c51b6af737f8d340681986da546b903b581022c35ec862c8b83ba8ef66c934eb0d2f271a4df688b44b25182110ef38f3607621a26409d0870f84b1646531f310bc7d8ad157b21d14a8d945c7ae5776d1143f148ec08f4e53eab638b4989f878dfdd28f18fd529178c112c776b5fc969662878c26775b1541d181aefa12106bae66880950b99c388f6995dfd9e8dc46b912d6bbadf6051f389ffd3b95a20b3cb4ccb8bebce8e7b71b9e73ae22cadce1e5c991618727400674882e1da896014b54f003fa05609fc57077f6508723a85b79db44b0c00cd2a003710e409b93655936f82c9cb794c967f96667a6c0a4880806ec98e785f4bd714b931b31987703fa77bb1d25c1555e6db3c552138b8fc3ead5633474a83869bd8276a5c30f4f3b9d27dc182df9136b7ab1b21d1c297450485fb1e3a1208fecc4353552b132591738ccb1247796ba471c96410910defdfa34d35bb84f87eaed6fc21396a17a1c6ea1dd03f91cb4175e011ef9fc4674cf416d93e507a19aeaa576dd6617a7208b82344894f953d4d4459e95a1b2a5b96f8456b77e7459bddcf2ef0fca3846a537d404ed7907f259ff36405e631d35fc4552398887696d744c9b0132a643854a9911f3214b33280b2115cb6d35269b94a6ecd206e3b553eb232253f607ed5b99605e3f2c189ae098e89427cd9b172c59ef4d2b63192ed06f5ccecd60c62e15dadb5fc9cb35f7cb0e623eb41cb6521d29b44735864a8042f33ec82646f9aedb9e6bc10aaed7b47263bf4de20a9e271b64fb891e89f0a3ff8c346eaad4bf2fb6390723fdfb7a858cedb0b485de15eb24718aa55d3c728fdff52643c20957c1ae3fd1a388ca20d078ea4dbe45f186a31b37425b7c9f851df40c7118b93b80b0bc0ebc7acca65879f1fa8c170a3050e7e0a48bca546b624c51535f55538f376b4e443e4f8f121bd3f89f4c3e369e64c63c2ad450f88ac440ea70407eeb82bad5fd451744690274bd92c4eb9803d039d9023d1a2cbf9bbeb6c9ad055de563dec90eb623e6c55efd41103372b8506f06cf17d68932106f5cca5779736d74d6b6bad4054271b0832934941d4987caba50150af32831488f1542f2e5e16ee4528cb601de461d79c15da0fe9783666a01cd72e91494c3c8b30fc5d7278d3dcda422412eb70165a6dedc139c17b77be22b8cafeac0cab69e4c31a7491a7655dd6a4fc09e45517951918107cdfb63b1b7317aa42dfe0b4960fb0335d3bdd2a03099e07468054852010849f75802ee2b77a02c4cadddc2d8db1867a9d8b00e747bf8d2399db460105463adf047d12435ab1b01affaec82d4ef2c1237ebba5bd9aba2d88312d7c29f4a36d0a1ec6f5ce0f1d78bc4e4c214fe6c77e7cfe245d28d05882f5bad3497cfd60b753340c915e9dd1e56a498779252346b169469e0215227edc749da576c4f60decb77d02f378e18ccec9f16299429da2e0e1378bcd170dae8ba77fd0fab44519f0b3848d5d46b91d53e2012796c5df81c40c83c30119c07e5107034ee1a6a5fb3dcaa0853899567bd4b60730b758e0143b27d0c361885ae24d847b8cc76eb3274935d62265e739d1e225fbb0a6bd3d7e6617e44eb17cf47398b218c44116f40ac3a1abb2c442397262ea37ba1db68a1fb75c27a12bb3f8b8ac746e93589ff271e6e94552c1c61d916d8a8ec83a03156ad417ff392364f2ed5535207428ec7aefd04e77e4c4f377dc472166f636c1a49da16c516f4e979d1a776247453b5d175738c2c9d99f7f9521a7a0f6d7d67b28095e8148ce68ff5fce59c9b2c125d3ee41c92bcf983984ebd952141a20cdc8a0aa5bd17b5bafeabbf47504b0c6fa2a15788bed7285d6742e3c632824ad1f22f9505f3e17be7789d3dd87dabf71d657b91bcbfcc9fe123b1f6d43b2018937fcc84624e6ccc878d0c3d780c7a59125cfb84b103e061ab807ef2f90d341c99ddca66a0e02c9cd888158c5ac348290b3a831cd44280abb91b6462018c97fc32dc042155b8f915bb7493ea868071b605e2984a85da912af106567ccec856ec2dbb54794d649f5b38a974fe58bfeadfc5ab3abe98f7daa19be0bf11d675b6dc6137999a0446d551f8ece0baff6eb63651b8c7ded790dacce37b1ca5a3a1294627a77e0c2fb47916ca25d38cff18e5c57556ee477d3194f85819aa3e52c6d0b9da269f2b33ed3f141e990892af5767e0407752dabc931a0d702f3d7115285c255ed5cb8facd939228dbc6719bc9c27628432de99380be3b202c3735eb1836b54972091f6e89ee7c04f9640aea5472647595beefe8abf2bd6ca4fcb6f000dc5c3ed2148386a01b751c3ad08fa3c0c92589a24cd13bfb6fe09e8405be871bdfd4bce0a478667971c19eb8b74da2ba916f566d52cb4d7af9b3361f9356983f26c822ca102b14ccbb0f6edcb10246deedba6a08d948846cd52769d6cb2004d5c85f0fbcb327d36aefa0193bbbcabd013ef4e701af1e3750f1a8fe7462063f93bed6ab42f4c1f789ad2a5cc8ba85b7a5f102bc1dabb7d429f67aef1a5a87945f2efe2d5dae0cc19a686672911b94a611c1fe0c0b3691f7ce81a664d615d8a01de22065f02baf353e52a4260147307d1e09d00631514c068847e70f4e2b8da938a57e157cebc0e157dbf61cd32d089ea24093ce00e8e353ff4acecc38f10d4762e35854536ec4082851615ec4e9f892029fa8031735796ad2be22bfabfbb5fb679135cb8ed19d770bca300e0905249b92c50e1970d20a454eb8352bb47f16675b4f079bf601891ea07a0f7f0f65c3f52f4d9f414e6cc1a47ebeade918f9d206a2d9db071c07f1bafc82a640476816a5ba039ccef95318c8fd5369fe63cb31d5df8759b671f5873b0fc52d22caab58796d3fc4234acef84aa10b7be8b6ab8d2acfc48273d9e3a059631320519177ad29c2923a532222e13065ab25a347192b3ca533c5414a8bb39394783f8a2f8c97258fd8c29fbdf1a6c8b30977df93fd2d4baf7d210133f30c92a025f5441a3043e8a7f0cb8e75068590e0fdf76d744036c98c16816e15820a12a6e0824947472fa451d13cf1108394cdf762e452de5be7610b8bfa02d4bf85db110f313dc5347e771363522d8742b6f3cca7b2f40868646e5ad78b32748cb5b68eb6c1681c244e54a24feb760a777d5dbf646b9b725a6ad6c30916104eb3829af4e96118c7c5d3edf8fcee20f2551f164f02bd51f82a10f0ec640347dd4c7b7187c91242ba9fcb49418bf6d10cdfecff5fa599868d3eda5ca7ccf5f505747fdea181425309bd235a04ac1bbd3cc5a369cc5b9b86613fadfb0c83feebe340ada9f70c4319321494190e578648ba4ac9ce054ccce51d6c7e367b2e5680c690c0066870c99ec6701e4c272870fae3b0f3539bd8cab45b396daa85545d302085647a1fc4cdff966fddfeb2b44ec7905d59b93adde11c33c64e3c0afd2fa6f292d5468bd99621ee5567a92311a296a359c8dd0c953ca2e89423b12be6c38a2e5e8b305876af5e006a63b9211073bc403050343d551574f4bc76993ecadc1f261779d7639e9cc696f79d39c9df39a0e023c5e35ade386d27a15064cd46b9138ede852eff9c74a08f18139b211e1db947fcaea6313bfbec78c43f7dc4900c0502c92b95525c97daecd5319ad8a24a2e5fd5ecc7e484926213c20e9f3bb35dd9c56971ec31263af7187df8fb9cc2a1153b57f9daa76a4c13ae2970cd8e1f07e8082f24509a629f80c410444d4597eba7629596bffeb0f284d5f3c21e4b9f1c0e70147d228b2e79f5daedded52d809f6a9cd1a700b2525bffb92b13305d845e3bcce13ccd72b9201e694af725cc9d0d08cb993e94fa7bb4bc76400733c04468e7207178f012c7fc64edc90d56c8f986c806d01aebdab7d389a5c12fd1f2939847d7bf4ac45c28a8fdd2e385fd2c43bc02ea742ad419977293fcbd7885892f6b1d74771647597138e032a8c8932e2a1250146e060354f2c53e882da62247b21a17c83d6241760f921d11ed96d04359507a73f9e49ea3ff892a71f3f47d4ecd747eefb4c35e71e074d7e62ceae1326f14e93a486fd265bcd75f6df76424fedee12b1014400533773afe32ea519ffcfe2e37eb4a0f5a1c89131300d24e88ffd15d1d04435b3fd4f5fcc00131384bbe535b5e202c63e8772ab1415f4f2dd1fe87bd657c157db3d05828875f3e9be0fe9e73c7eab476df95f82164a6d69eea4dfce49d6bb13689d6b6430099b87cf16b17b66d59655b78cdf0303d7f5ee9551edb10ce5cd49045b62ddd627db7604c140c710aece59e6c8817032a7578f4271af011b9a02bf07eab5b4875c3ce4e353ed352295e2b9e3aae3fedd0be2394de167828d1403405a7112989ddb3ec864e4d4b84b595cb00122491de937327f09925ad1a5f4524d824ac6cb85f92ae95ddea4df238c4430c596075c66c48b0f270c7cb36adf9c62c18554415fb071169883b0d33806b704e25dc04a362dc17b06e66f1b65fd0e2b9062d7fd2d209d3f7b64572f1563879e4e456bd2dd52acfa904fd780ff7dc73405db32face0ad148e0ebbbebf880f541d10e31d618f736359988ef62e20f51f5b01817e77354dbbe2bd3c9de340272862ced1525bd46f35ac96880106a682f3142f8d27e3187d4cc77aa8c83accf725a1d0a740639494401a9d71a0ffbc27b18d68ff64e165450153e56d606ff9257fdb00246eb5771168f5353a7bb8b5991aa2fa2c523530b1e51a48d35d23d3b5ea11565410eff1228370e6e44fe32efc932322d7a7f392299d5485b3c0fe47da7a7ec39c10c43e4e1c20a4d752bed484af0e2dd56c737b489642ea016ddf74f4ba8517580c28e84bfaf4a2aa06c11afde3ae697891086ff94e7308f7032db6c7db83d8724f292f04761c4d4dc492370e7b6e4efddb6e9e53df93e31ada557d2c1a0aacf97845d0f9669a22a132fc55c556a85b23f27d16c755d6ee06c95dd4731f5dd2134694627712ab3a469069248b6c4b15c0d880c3ebbcbe3cc636bc4cfcd419047bd605765f550e5ca03428d8d51eca8a23a29932aceac707980f39637e7bc387d2b3d7359ccedfbba10efa98a54e2ffea42e618a1ecadbb3f62011c8e8f31a2f34560c877f52b7ba629aca21d0f500cceebe3b139a54bc3c91fded8a61f14124f0d8309971ee82c54009dfd2e400f609dd753662e37b68b975d384097cbf2b628f60f7f758caa829c5db5a02572bfebdae72763dc82b1d37cb4909d3d47b4c78cf399423193c588ee6ff5cb6f67fa16bb6fdf67468a52be20685c12b57a56b97b513addd19e9a14c96971a8fc96f99cab36d82c9281bc797f6d58a7e4461f35695fdf10bbcb475645703edcc4b8be44c84acdc08b6f3f0d68c1c689f0597105c0ead5cb3b0f40fc8ad99ebc3d62119c65a36d471e5e7aa3fe0e9009c513b7035c89172503f08fa557bb07c9e7b2e3b48a933416dd1a63d73ba683d2917a152e0db427c7a5ced0757cc9d912c010f0846f0ceee77f8755c568c22f28483fd96f18b1895e1bbe0c3c6084e716d0f4a1ef05b090c25e7a8ce3a7200ca120d2cf53b74e197840ec14c47bb722579fc79bb26db35736f72ea6ef69e6f0fa1687fecb946dd0ba559a0c98dd470bb4bacd6b657e9146d06e461691f8d7132868ca6976525bc38f7da52aaea652b91e3224427d438d80f50758a7aaeede05a11965de4a04fd5d1a409ff33c8c9b9cbd1ccdb9cd7b041ee0ae116eb7bce06a5d71d1ee69b4c92bda0c766e36584b4b0712cc06501892692170e8cff925e565927a9f96d9de94b46eafad15b969fef9a7b0521b12c000afe000597fb5c08cf37a84e93558f22838bddf27871b2f23773f18fd950f4f0d060933b88f2779d7acfba1d8d612d5b15227b27c3416b1a8c3266f1e8b5e53f9c2bb84930272103bace82a39eff760f7d39826e395f408fda2755d1d7b8a8fed76a891a1703a98098f11381f1094e06753f29aa9a1a5e15bbc7191e00730782caa5e9b42b04dfa27cdfc2c9b35e294f24abd533e8af9ff6c276a3b4b3becbb14ba480a919b347014e168277ea83d33b2c225f9c70459b7327ec390c9707ab5f384c2e70158480a3dfa3e922ea4af6367d7ec174e9ac87348cea14aed336cf9a7cda96195c17e2ca633a0988c322743c3a5669e71c5183071032f251aa63ece1381d94997dbd90ee1881ba7e6efc5e281649d62b5deb9ff75a5f563423db1af5f473c95ef681f3b5203e8f3fda850c554b7629b5619c98754032949b3ed29c90c0b86e0020e4012c8d933f31a05ff659d846f66b5129281bd25fda0f110a380d75f2fe8229e9f48617c36e231ae59aff7d7b1424db6ee3be3226235a69b17ea69f300108f764264c3c6b83f17a99282949b8f943d78a51698ad8f599a74a252de7158dc0409be42a1d2334dc4cfc7346432342362282408bdf9ce61c4fe8db611885377e0f7ac9191247c94ab9feb0e113df69cfbdfbb1b0050da276428614ac6ed3830cd655155352d2c5e1dcea4cbc913820fe8cbd0eceaeafa872f918ff395a1caf8055b0265ae58a63bbc54511ddcbebc706bd5462d41f7c6e38e99d2cdb4c0a7e62562fbee6526947d01e87d281f784217886bd223afd102a0e96c59a683a487b388be27ee22033dbdd1098f052efffa40e7eeba28c8dbb1a70259ee80f22fe33f3bde8cba70dfec54212a0d41724a7d8c51820a2a5582d4e56404e813b376940a7ce9097855bce7e3a887015bfe5ee37eb7411d2bf34eaacbdf553d483b2810bbcb913ca658a814cca9c2154938593effc92100bf011f90ce131f5bbf97681f9d8d827d91d9e69fb6c253b4f353f011db22fa1591e1d9bbe80edc6a4a0e016c1d381511dfb53b510cd4583cb79dfe1d42fd7b07de82402815f91992709012c44d152bdb064095387ff46977e494d843487e1719f843b0fcd7d05652ebfdb3b564934e1fd2858ea0807568e43fd67c84658d11a0c41ff39db3376c992a3726063c257e18e3e683ebc7f7791681d6e6ebf53c4c763c2c775eb24ed742d0ff8793d3b2427e2cfb331dcf8fa15bd66c0ebdb8c283faef688775e1a26fc233b13363ca99f35e75c9265857faa81a5f2d5e59540002617cdd5f7ed1295f71debc30fae93d4a11da4d5583e2e04bdcb193aa2dce9b0ad71a083741174e6d7e0fff62a09929a7614b50cba1382ed7bf54fdf36515a88141139c96f1cd0befd239e161da68beaa890a8b3d23e372ae2f46747d4877dd8e2d45909d5e0f1dee55844c2139897503f33021ce99b3596906754902e02a623fe0a07d05cb7f3659d7486cd69951b09340276579ce3b2c7bf9487f140cc5226850aa4d0544c2534f959640c213bb18519b31efe4225167960a1704ee25c4ba4a3cfe386b570114d8bdaf00cc1ce5917fcae0038b8c915f3ef5aebc3e2707edbe7ac81588fa69269b878a4d15e191b829319c4a7c3adbf5380acf5ec1a753ace21d4bf6c54cabc6687c5234f264a5f3f86421d43124d15bd2aeac1ba115cfb392fb5b1704a27d49a558e600efcbab14cfb4fd7029555ae824c2711afa4389af2db6e31e12ea16b9e97258e0cd0a5288c39f165846c622fcd67eb8c2fec9eff4636e61aae41bb6816bf76f53a65deb1666ef231d30fb17f6000c12d78bb456cb15dd652d5dc41c2efd6225719016ed3469e22ef72967ed372dd4855f35bb774482b21620bf390e34ba9128f985bc71e3159718571cd29b3aa4e509641681eda448beac7d2c3ed5d0af655d3663fdb6202baf15ceca93dcb276130a77ed68b85cfe91f792c30cbef5148259b131a99ee80af92c447080b0c5f74ae90f502bbc8f5b06d71c38e69a44e3d7e6b226c82fc556c4b87e3bcfd84c99957bb5feac432e4049c1b601333e1ce3c88596ffdf14ef5d6aeaf665185d2b5c8b88f8a38a779d13e14199793a04b57c76e6eca5a81afefe7c4400dfc509b2468e4d3e886ee9ef406072a8813f494de069716e45c3b329df001f3fc5f6ec139303fb5a048c0daed15987d28e8ced655723c0bd3d8276191912266f28e3d9ea87e335fcbc8bbb2e698646be309ad60ed14622fa99739d45c554d979cd42e6cb2c6596e3f0cab07f22ef88c970046d43fb0b1a22f82a85e7fd9c0bddee16f0eb4c3f29f1630f0bde1262bb57a2741f577b50df450abb327a404c6561337c14d479f4effdb0b8d0be726a60707efedd71172bda891b6ac8ca4efce12055d7372600e45d860c076867af848dada4b09c1ce3262af942701399f1314fdd32c480710066db24c2461f16e74c6b7adb41d6ddc05d23282ef900c83efcd3a645acd8161e0d46dcf68ea5ba91f4b9a1a9d508e6ca81caa6ad36221e459765d2b4ce713d76446e327a498e3e5862472c23cc32cc74855b436d0c2e963f634f4082d13cd7d0e4991ab0e8d25d5cfd7c8f03725a5a78fac41c82c07f3fb2c3b3f288a871b53d08feafdd074d0f734bd12b6f2f096adf6f2785b82792ae12c403f447bc0bad8f574bc062b1407d1338541bf684ccd0bc0f5cb4cbf78bfdddb1878db3bf49cb67492026aaadce8dfc0f2650b2bfb45c667d6c4af144af5c3e36dacd86912f9ac24e92f3da8c80fbd2fbfd029bced6e0417d17a262b3e832a2db6d5fcfda037539b5a96c9494c2fd390aa371670ccc51773f4ff3cd9044cee65503afadd9d0ec691be2d13eda648128a875ed9a2233f2193fbb45d9dc76a4f855336283ece63c35b0adfaba9919f17cbce43994632b8f9a873533214354230b2cea1d0aff58cfc919f0bf7a47fb8d117af73aba1adacc94da4c7a5d2c5711cafde69c0cf07cd1a8cd82364cf40558d361c8f31f5be98249a0c36095571e7e26e03c16bc636fd819d7b1b9615898869ddc03d539c6052958c510e68ddfeb42a1b6d2f3db3b8f95be85bdc56042f790db4a6a5b7e9d5f5389a8dec5db2b24133554e6d83d1cff9a38425aa28136cac6336653fe0b332d3fbc038b4a4310d31c42fc85f847f7263013d332dd09c19f78bc57286eae76276f494babef4f4827391d0c15bc7f9b303663b06194ab5e64b07df3e622dded0a586c5783d44d90f1ac2448cbb952a08b1ccfa0f79093e4ef7941209f3a8dde191d864b8efe0ed828797c0136fb97dd6ce5f0be7a31300176bbf490f8a7f0d5975c4b97fc6b266f653bd40bb29383ce483a44326124fbc5179e1a9babb07cfd4e0c2f9e2ef68295689ed844f68606de5b90125b9af2cf295186142406bcd1e10b669c093c04948e915a324187ffd49f245d0fed045a991a899c40556b715e681fe4d10a6f0d623067c6348d42d58c66e75a9678f6775f0487e53005ce26d8b1e04d6fd9c7eb44eb15f79dd1d663b67c2addbd2eb6c300abf6ea7c8a3a9fe29026d4088c76fe2172e8700a1747b199833835af4003d91fd3e7f3effa4c19810dce3d5100621c5c7ed267fe546de42120a126f7168c12107e4ecd15b0b6ad2a273a24ade8a756dfa5ea8fa673730b492bb86bc0c177f4ca6b84226848befd9ba8cf3f413d138bf2dcea7db2e95832c610144a2a6fdb66382dc3659e42bc31c06977c4cd3ea9c6b808b097ea2971c9f7e30f372d6946c05350ad48e2be9f474bcd1dcee8f11e788cfabd946326e55b44f84a8cbf1837a0f716c6c4eae769b1dfa033dd69795f729e47b98e714930966b77274c2cd0a5995ab8f5b33f04ae43d9c72e6318ff09bf82b3eda1bc66a09c81854df6cdaa76ad866407f927361a741742095fefe9f040954fc71d1951dbb18eff286c9fa4099555202c38047fe8e76031be0988f9992660045a4505f4572d0dc767e55428addcbb17781f18b16b523a79d0927d7ebf2c6ef5db9fee09e1c1bfd97cf4eeb627ce6c33633f049989a34a76c5ecdb4fd1b0321325d9a0ca17149a2a1f9bf9f7302b21964a7372ce3a86a613a4a9eb4d7293f13936328037eea0b54dcc6ee975f5b70a25ecd9b6490e2f9d357be7ec3af9ead06fb08171fd2cf48c8e40cd488695953e66ed5d6712a47ae00adb4c9372ef857e2f59c4913eee2ef7f40021a761a76c20cf56ce2b19345c22565a155591933d13309b3d1ff824de9d12d2357c3bb167181413874895069c812b102edf6c59181ec6042836231021e72f419d713eb2fd1d2a74a9a50cf9e55fee1a6240d7663c01cdc7f54221cb1f8e941d23c4ad998ce171ace45483fd277b951b979d8616b20a033a214c7fc0d16335f951af10cbc39ef355ced72d9940645cb619812377f6f2e5568d759d2f14f205ac071539a1dee1a9ebcaa86766fdac1215fa16f0cb5dab683a765f52ab10fb89d019d32ae7aec9984c86c89d9169672a6578e8b20a46a64ea9f142349df30e08460a79655f7790d63efc51535d6cd0805781e88f5d19039487ffedcbbff2b1ebb0cb4fd63c9665b9e91057649fb73f9da13ae342a420480d5f2a0198a1a3cc7af695e5c4a7ffe11559b987314006b7cb7b9fa2bef1259454e0b7107127a260ffc2ca8f603e88a1d8fdb3656dbfaaaa09232d5a8c0be7712d5b698b910887bbeb04ea943190ffca4c2bd106daac6ddd34599f2b67ec57b7c347cc883e512ea24c6e96f094a21a91109acba7642ebc694de3bcd67744b51a8dbe1ae1d0e14d2e12f8a9e3956d2ef60fe6b091b27e2652e50b34e644f3666720fdab30a8ea5b58555d5ac2ec5dba5cdd0fda13616a2e33091c87ebe392b27c08e8f4a86376c567c59d6db2a6d3c2ae66fa7394f0d365f006e8089c38eb3d80748318d196e074c3d5797e4bfea5fb2555ef97f9902fdd767845e9e0167d61eea97a08981257a8dc19fa504b3999c2fe5c19f4eccb07e2eee18b512cedf94a72489a355ac55e182e7aeb36d0f3ede99f610904bc577a0df7031891a534c7efafc255d0bc264f6e89925a84cb1dd252019a34d9d633b9a2c2bbcc59fe4482cf69ea4399801ed30a2d971b149e13ec575bd070732f8e893d35ec8d0c03527886ac119b41ae576b1c5c9345dc10a7d407696f7ba9fbd6c4d05574c41538492b30ea0dbe5bbefbeb0573b1b3921ba2962fc74e74a19bd6d8f4b2a8df5916fed2992f5daddb9ee3f914b28184612b4933353a1760d9a68f4686921ecdb1b893d944ddc88e27b866938838e29babdba620c2e4a6a6bf6135249406d985770c5b5c398e242bb8531286e7e93f1fe152f7c63db91493db1d859c9e41117f22d76cb0a81633724906bef7a63765fc63b55d0018b0d1d785465f6b25c4e439f4221fdb5fc44ef69affa3de2009f1617c602aa0e38ced06311c9363863d2db3b4e415170a4b2d6cc0615e86da3bdd415ddf5ce9403cb41942606ee92b3aa7f37eec16534306fb2f0202ed0f1b7631d238ccb8169814b0ea7873c8770bf955839d73f9b27a7b14bd4d3531ecd1451c10650fb9d2a3839cbbe8a8ee1b7402c4ee76d90109a545d838368a9f66cdc5313b902ee9bfcbf2fbb080cf0df72c5a59468a61ba65bfd466e78492411641437c54059eb0ef4eecd250243473bfe36681a17b04e28321aba8b2591e846f9c9d60a40046686e3ecb8108549e453eebe8c39730a65a57a0029fa8db8ab832b15a153614aea6b64780d5a8650925d1499a45c6fc4218868003d67d7906a2f729a990589c800b384f352fe44c1c76ea17525e4edee5f2eb38f7ca04baece1ab50cb5e1e445877dadad911d4f3a1fc8e2ec51356ca79e51505213cba9c9b980c25a4c7df990989744ce27b742384ced8253e518509c8b3c74726a33b8a641a2fc36007b6b3da6d52ecc33225fc0a9774a3e6a589a4352a78bd308ecad47a2afb19782302e45a8eb5c3f78c2afe629824f97b2c94e0112ad17e3427cec801c8acf17a12e67dcc6552478e562ca2abd73f138900d9cb877d31d303fc4f4d9c3b50426e82caa952ded1d19d23b78110662db77f4e14da84fe2cd31a057d1420be4ddaa986d84955e04fee15c3ba0fafc7ec114b9dff9026f408db4cfc295c4ec3d95475db80eecc5fdc72c18b0be14a0f8e963569de4481aa3ecdbd4f4a3eb4ad8160dd3af4da6816fe6a81ece1841264b92c3c89f4e4d130ff24d1607a911473a3557b73ad19c1452dd20a0058edf64c25af28210bd86cdaadd8f8497759fd82f31c298fe4a00651551eb1e3f167574b21ba0d14f1e8fb965d0c8e19a2c76a13fa65db5c1987e3b9579a07380f2604050fcafd03f542dd765c941d4b83cb99d1922d1c1e90477d10879063817a55d97be4a917ed6e7eb5b8a747d24b43336cd76b94dfedcf16cbb22f458915e0c87497a931425334bd868d7122e701305c00b08a05adb32247b2cb0bc10de34f30c893fc5431cb25d7de58a1384ba23d735e28c5ac561b17bd9adecc6b37a6bde189bd90818e60a296ee925178e19a7f455da3483db91602746d509576670e8031c643a84d5efc0f059c9a503c06fbb1a020aa12083ee47a122fcb811656eed65a13cca076fd7756c7e1b5a1ae448fb143d37c78621972da8ea80d1b8fabd05ff829e5642f4f7a658a0d37fafa65d8015f7e79a25c7f3bc1e3cfb4e40cc0319d0ce469f7bef695ab7faf3d4651442147a520490ac8486a93d4e2d0d04f8c2e7b9ae464ee6eb6609fe94cd223b80b3acdeb66e5008ec21cf5c165a4c92515b0c3cd690bf2c94d6539b8272c65afd2ca015ba8b32856a12c548e78bf2bb5dbf9a7b30bf4422a71e27735adc891a2b4c2f62e0824f97c53b95f9233c646971c09398369c42e98b442dac15d9c632bd823e207df7d405a2b0589a1fe94e0c2e761f275072f9df8831ae6a03f0d48240b509ecacdc49bd71bea881e1422b0465bbe2f30df40888b8242a5d52e97e58ade0429111cecff560148d91fa26fe4d38a93afb964ac7dbaeb55250f9cf28e326c69252b44e033e9b05339a43b1e9c18de86170602f61d37cf75f5a48c56d04630eb58aece4852d4479b2dd78bb36ceaefbd6e0d4b249e6942b3aca3edf6e79da02a2d97df464d6a75e97b657d75de40386aa1746cdc492fe1eb63e98b3048db6be331f916df672fb9eeafe147ceeeff0a1100c696a1fde83735355243ec19628a8f963fa72fb750cfbc9738158a8c92b5d7bf396844aad9f02cc6f436a3b4178b7fb3fdc20da96ac5adc73531e31d55c58a760e976dd7d4dea4b96e241628f6c545814fc4277d9f71451618f53dfbcfc02ea2715e951d3d3f2b3941243ab86e5e9d20caaf53c7fd45f91f36e1a9f0c1dda721f86fa7aa52cde0713d69155a9c3f6950fcf443ed36ba8fc1b296b9bffa7d6dbaa66b09bfd180e71401d14638467c02f87e8e76ada5c5f5a041a3079b057d4d938a20b832e11176d68257bb32b2bcd0a395e3d494a423fea2fb50caaea398fab9e117b6ed509c45f0aebfa45b47a412fe5e0d2587345c7b7243ec2c94167e809cd32c146d28fc9fa013031d780059cf5c95611f3ef3ca8a00ba31c1dd3a46bf8fb932734485bdcea79d5a0284ae962532df64b5c4611eb4fe42d63f8e726abf4cf7ebfb97c9b90bc964f27f2f0bf88f9baf86d9f97a09b665195bfba15f7c066f63d370a01abc5d50889a675a9b5f41d4b648e1109a2176eef39fdc806e2a14f63f7a2b2d2fc7fc8a1b07f99c61aa6fc1e2b36d11b1228f9a39e57c8e305bd6c7c27c8d1f6ed6f2462271f3c060163e67ef3ca058cf13662b4630f59e8669322a2e4fabed5c34af5b9daad645ee06fc70877a4414f80584a8be43477a9bcbb84b7965bd1e5ec02b22a7f708ddd41098aaf44e81c948672fddf59dd85daeae37b9887732d2bfbd14f79f3e2fee46787a88606796ce6f24e5d8602f5479ad5128eaf6e3133a1a061dbb6a616514a18a759fa43225d072125f6e1bbb6b73a028e2b56c73cb1cfeb84955b9d12c9dfc7d1d2aabb1864dc55a4ab47c135ee2e21216d689fe3f50f3c2892c69b2d70b92c0a4875fc3b91aafe3ad86bba4dbd32e2e536d5db8ac45c7d55eafef17ef96ebe14cb82ece87de02ef4503a3ffde4877103e7f6e1f8d7c2bacb6cdd63993a7e77f97e317e997952469c70e575653b49272b27454d7750ca4b2547d49a71c5f8be1a5d34ce64a0d60a212cf281def80b5953e97dfecb81dc66f5538b0d0550ea529a17462e1646c8f6cda307b417d8abced469ad146426dc645667a5d787cbc3e4b985a1133bba811d72961b7a8eba147daa70f26452fce576745444adcdaa3e029fc3b86ec570d1103805551e9d90aa478daf0ead042a5d919ff9de2aa30b2a38fc570423cc6bb19caee43dc6f0ffe86d87817a95e7d6dd69e260ce214540c14e35b798c5e85260031c6252f823429981d7dc75ca5ce32d25efa20408e6b87e3c6867670fbf19417e1db3c99d2652dcc57be21fe0b0d17692ffce92c10e12e6c0d10ae501450a2b8216b8a2695be1d8f1cfdb0990f1dd0bdce077c1deeb7bf02aa3e0c06e301c0170cdf56f448c102bf2a49def823792938ee5a72e88f3e2e198afe9d904c62b06bf395ac95a79b5a76a3a87cdad0187d93665369f2a22d2031805c1358c92b0b643bd2da876c9e94a6a1b03ebb0d0c3f3d6fe1826a9426719eaaf845fce4cebcef169af5b6e6e595823a2e3c2e1efe7503f3cce196662baf190035adb5b79d8253e93c5212861c36b9301673c5703937135cf63131331a9c22ec30e845fb3b739043920d31d774c37fe4b0428a42b4354771ac1dd3ec6eaf3225163a789d55741ab8cb85069f747d6c4a5fee0509242fc61e0ad872318e94bf26d60732f237c1defedfdea608ef1921f3641edae4137af1431096ef3fa4a80df93a5b13e78b6c9a232b7d1b179840c56dda5fe99e8082a3e0d810ae62b37ed2301963a7da19d580b8dc9047cdef0d518f4aa10ff28a42be3bd2054561c55ca75084f224f9313732473284dcbddf92a76884b86a2367cd09dd69b339cb53be4bf621fdbe400e1c027a498d5ef5495381f5dadc322bcfc96274f062cc2de3d2b77d1b1f858f45e38db78a213970f4c826ce622923f0e2ef3808c9d9d4867dfbfe03b916d45c3141a32a4a7de38eb0e0fa65bd207257908d5d0527e7ae86304f02f463445600fabc7670421f153a5a79d5a0a8245a2b5303220ab8dc3673f419f386aa2f94a8d7322a67f94a0aa94ee92dc9d8fe311a5b49c686970dd6bd6857a5e2e0011563f851a3d6f485d8fb467815319a5a1550ec68378dd3539f9ea33cb2bf27080fd8651cb2ede11cd31b17e3010857481d6d1dfc1d6a9b8c7b46eaaf6ac1f337a89b376c87cd779dff93addb672f65bb28daebb93ce1e919667a87cb99e9aba4c636596d7b9dea5d9a53d58425186f0d35befde31e271e5fb9a91e5d17d2980871492d1d24e139f1aa8ca6f7bcf2617946164fd416f27f468bd1c9692a962942bf6861d0bb0a82b5a82048c05ebc0aa0e0b1757a8c3c1cbd19bf08a6bb9586d45a9a58aed783be482f4d9f60c4f272050f161ed69b92c134478308fd577c85648f8fac336ea6160ec38acfccdaf89c91fd88e17e030524202729120e0336553deb0168af2d60e5ada5cff8ec3c76770f21c89b1b631b5a7a9a0100aad9bba3cb6fd3c6c4227a2890baa8761d7e3bbeb1ef2af5ecc95ff540fc15715a84e2922252d47aebaebee9677bdafeaf447506892934ec42955df2f3dd9312d779948c784b50aeefce7781a5fc7b626834386311b1d3c7029f2d9d18d443bf901122eaa779c53f6fb1ff460102be6000a9afe6a4f3da0126bce950b7525d652766916daccf66fc619d5d61f622d0eea34079c302e265673c8ba1a9df99499bf40718bf2b164cf18a2829ef42ff95947236f7f8d0783ae3e592aa5920b2278c807f287ce87b714506be2daa6b831e02028da34416d9602457b065540f79236d0ca0bde84fb6e870c6748880353d0fcedb08ae89bff07599dcd5d369c5bdf1fc08aacdfeedb1dd0f0d363a5a2dc07561fafa6eff1cb37a07511994bf616d03a79c3d0f6bf4d25002f3336867221ab1714fdb783e61e12159a81225cd81cf41c4221d7a01bbc5a803e2afc4e0a657650d40b352b32763de21668a83a2cdd2651ba9bf2d573cdf7d671c11da189118ab2d24582515e92e34b6257880496d693c3374b3a77a950d4133324b321a7e34edf0c975e53d87c20da9135168038df5694179d073368758a05e8e9494d34d6f2621ef68c428c52b18f472a6d5fde0c57e80e33ac0e5faf1ca9eea6cd3009f3d716bcbe9f1eacda0670f1614c9da1aa26e8091357fa577d6f6c2d7f3e4935d991bbb8586f831a9a8e6c2ea7e60117567bd9494c40098acfdc952388f3f5f32e6b07ebaed3e32cad3518a6ba3c7bd2db5f2dbb51f2e04ec1a89d1c4e1b4270ce6ab39fa0878f78404c2fa2bf43bf004a9267cecf4d054aced2dc3871145119fbdc2a94be70bb88f4707b74fc83decbfabb998ea7a905f0822c752615ea48fe208fff2a477c323883c562612da4812a64d893590538ee63bc1c34385086da08fff13ba731341a56d0e0a4f4015ae5f083334b4763ecdfa2a320caafc86371aa7a9a4d018d90f3525fc7cedbcb56889b5103fd8659bcbc0dac90abf200e1349ec236c1b68d653acf670391dfab508b882b82c47ddbcfb1bf6eb050c216618e666f479a62a03657c0dad05b1858d0cd4c935db49900a04f14abb6d0c831111b5df6ef46f9d0bdf4ffafd8ba47a3f4423e6f9b72ce5f3f0014a5aff5c9ec36cb86729134ef1eaef603187a1e80cb917b1bb189dfc76b2c2e28cbbdf861d27fff8d0804379c955ef3f8a9a6d29fe7fca9c2c95698692dc00284902107880f43f54322da9afbff4885cc1a0f3132cb116f2a4bda66fbcc73dbce072ddc49a5807a169e66c9be06e03e3f791c10e024fb9218f98ccf62abbb33c54f32ee013ab00c092188b212c446e662ffec44f03e0c988de60f76946f26558c91bd292e6744dda92a814831778c05fd2a588b7435df7b6861220ab316f6f700ad7291ce4c612268fc813c70b0c32c12ba25ce0ee70044d01072a293b9d69230693e09030e0ea0574dc86b7e4495abcec1d2b5ebf041d5ecba1578d6cc314014f01803ec224753d716e23d872dedc60a89dfb418920df37e60cf8fcff46ac5e9a671015e4637e427933d321fbc3afe856d86692b218315656056037e1bd90274180215ab86e7b67c31f1dfab6fc435ed41f7d90b30c3f11a6b77f0836d13191c4eade32affe4fb94a8becd1501d1bc86259e14e99b5394562aca780d5ef61cc432c12e513ec9bef4d6668136ba7932c23861a578784b0cc9bc44e22c7d07d29064034097eb408bccf7dcc8a1a34f68f9fdb5dd73211a1276646ebbeccc511a8f6b7f0496151511a18d07642676e0d86446c531963d895125df9300cd5dde695216dbcb77f5efeff32f19adeceddd20fe05f97d0794a6e221c5346138bd7a1b439c061296f9010f06d7f4de1bf80fa4429bcf925e429aab2c5b3c27bc7e35d58166aa49c1d7b1384dba7d9e31f3767b835bdbe42ab3952957db2875c1838ed142fdc5e0c49a852f1d4ba92bec7fcd19d02be6185e73bd8fced79c7ac4071a9da2531bbbb06fe2aee74d093cc04f42d76efb09c7746408809c134caa7b7c5fdd639ad69883c75b220187d1ff51640936f4128b6138942653d2c8a447627081508d1cef66f2720306de59591e8b1afbab4a0ee57e506198bda632a5138ee795536f7eea216d7801e104105150b7e37549f972f701826b36fd91d6b5f1b9f6d94f1d9715dc8ae2fb26c58af8fdb9b3cc21f1730df96e8a79db51af4a87f81b92b434a87c51ee5d11ede9866764117af03b4f496f3eb5d14c2c8997b00510efa5a01407b5231076014a735f07a1077f4d6f66645f7c22aca274ddf920b9f76a49e13549605f773bc2e50a618463d34a25f278abf4e7c09cef969b782393119e9e682458e474bde99516326d8afb23b08d908df24ed824826e7dced37094b1166d8e37586d3d9cfb12a77348727736b8b1f21cab81ec248f901eed23f7015a6a980846aa0d10f224b54eb13233eb61ad01aac12fbebd9fffbf35bbbd4742ad78428ca4f1c83128610d28a4ba284fe91b45291645097767730e2d782fa4c90d82d2e57700922a6ff36e287265930b88b1b3948d03af77d4cf4997903ab94098e3211e4c186d6e164f45ce9346e37cdba86f2de4a22af9b325fe14da0126d00153b1a325893e387e2451c8fc75ed7bf4281a7462aad88136df104c2bedc967a3b9c4821ef6e6ddb770626687893b7483cdaa89faca86fa75892fc384690d97402ba6fbe638a7bd777559252a0041a2a35aff07e7181d2ccdfdec18725fc49bc213aae11370818bd0b4d6862e0eecbe5ac46ca0dfd4b696304c8b16fccb341dc8406a99012cdae08ad08ebf99997c84797baaa73375da59d5d81136fb09b1900c81f345b3c200e01aefb10337521c043df728431eb724bd194bf1e69cb85f9b7c03f53d425dcaa3cb1971f97dc70f477df6f1ff54b6cfa74e6461bb819de4e68f34bbcbcdf2e0aac2d43a50680201ec4e96440f26a92a0a5a5c973351c67bccb1b9845af9fea72f2ee9f4b01d2854bc7c1a2a8fec070212db616d6a459069557a7f8e9c24066481894213c328ac5ebc320d23885a93dae291498bab8d9a033833aa54c21bfedb0ec12f4104323f8775d327ec0e3e5d292234b21ed97a907c2ea2aebe693c0c269be30328c7c5c5e6cdf186f44ee1a367995fd0df1645af4400601b0496508adea6d0a6c8fa9b8a5834167d4c5214db165a961b05ac98115e3b500c41c77011b3b3d907d0d06ff3c66e9a83fd4876d7bed32bf0f78f0382b0d359704c61839d21a2c04b5f0c0bbb83f3ed66e746bc8f069bdf5f6e2ad9c338d1dee4ee2fde32f60217e492fbdbc47ec7ee3e625c7945b2adbf552d6c54da7da046042faae54f9ad9c6b2188cb9437b0ef335e11c3684ce6c045e1606ef1c571e5fad21cf287bce22d0ae9a18b1c89ab601ef7a9b1c082f29e7d2ecf29b0f29bf600ac49f49ac0e379ee788680ed947b42724a4bb87c65fa17cce4e60bb92037cd6962d56f4f86a5267f8cb4a9e8bfbcfaf0419eb8610b40ab746acd54bc4f4ea05e7731a78cd893a278c8411faf3f5eeecbc2ce1e96d3a4e64ad0b30d6f189554bf2ac2cedb6cbb5d6a11c7c429eff9c32c28dcef298efcba3710a2fc0a4918829e1dac6bea1357b5383211240233a2b4b08d8ed288346d5bb99bfbd5ca91b5ffc1c4c3400c7aa2849ad2cfe528eed75de8e9dad40832dda6623a970b71412ca024ab089eb77714089abdbc2b4f869a6bd7f8bf5e623cb238583884fac411d9b47584564a04f262821978f5446ef8c39d78f6e51a31bc62e4d4e4d6810c046f9a970f36ca334bf2dc4b2781d240fd222036298b9c75c59b8da360163e964d3f0c1fc9f7792463924f37c73c77c43d05e9723c873112a0fd04a8bc25be3354e23ada6d82ccde27abf538b1a79bbe9723d6016b6f9e52e0b0cf5868c207b9ba53ab454d7f030bb63a197e724aa33472228cab79257a5f0f56863cf0f1aa7f7dd3b3136ccee07a0947e68ef2b12ef12118b1ad815b7dcae311c6730cf974e51e1e04ab766c249d3da52bbee938aa055ecbf6388bd661070ab8842dffb58ccae3cd06a8833425095e38c8baa7197742c49b8df0f779dcee7c56f7314378631420f71157a62776f8c60966022a8271c16d46056dbd65d43c6ea320588aaf6e2c93514d3c512455ca15dd2e6982a4735c93f854bd6fb13810bf0f8b0f0c0c107fd480ec8d8837937fa92138978dfdba314262c0e01b8ebd6e0880a8d923ea6afecf4ddcb5e4f1c13fb3637e88f94bc22520bb934bf2d858bf33eecfcb3f23279e52e349d3646ab4d2d69e6a0c9cf1375e40eb3c66c1688d4fa375d70f1f9e4ad9a65f7b3911d9cd285b14064519b935c8074a1c0e40a073ceea8bd7616038642c414d49ed6df32ad3ea86332bda39c49221a58313280ff5d01768ba9560e33b977cd4282bbd746e88e4fd7e0b535401ae8381bebb202ce04d8adad80f690e1d2067b81ee0117cdca23b7257049a80f65483c8aa3e797150215d170c492eb899509e70233132aa7b9fe806d0894de9487ff9525d47b366668d5e354a509ec155b43bf278f2492926a1e9ae58e2ca8c726e77048a79dd6072b498631948ff5b035dd1f932306d08d0edd26238aab4de20258b68ebe8bd03841f6a17e4e45dac3a6176e8baa8ea94cb6fef47f552c9a3aaea1304b29ccccdc73a2eb57eee4bfe3f58e385684d6e9b7f35f16a419d09024cc8a6cc1712fe383bd57575fdc5ee1f1ddf9e3961c6f3bad6f031f074222ffffc0f037890ba5d3a07a3cf884fda5dc1ab183a8dcfed8833aa7683db18ce72e743d29695b37a782a40be20bcf23251f14f289d092d51e0da8d4290d1875fa3565a6713a4e9299760e1218d1f79e71f112bb863c1c8b5b320aef2cb7434ea8bdd58eb11951915c90a9a2df07188a70eda8075491aed8ff64ce4c8f33fb755aa7de2bbc770107ebe0c6825e5527133ee4de191a6a7078ad861c02a1f0060dd3575f6fcca0b211873ef0cb15f7d7ae109ad6b3ffc27fe04984b0b236050a99275152415e700868da82b205fd48c821b66cb273a91f76b9024482fdff3b896d6669d5930016164f93059e11df10ea9de4e5f043f1e8adb7691b007330354b8e2b352ecbc0ccbe96c090df4c1e5e3453c3623828e8abd2f2e588ed412f3194941fa5245ed0fdee46c4470de813c2f94dae2e4746db81759e96aa6711945379f5361d7d33b38376370c4d97a7b425b1c73eedb8ca56141230817e47b04080ef0cc80e482dffe6d5466c6f48b2e00f1165394e18b0304505fa2b74dc336d8c43b3297a0f5595dc0ed2d3c3e4affc146b8dccf6323d8ddb0ef0338ed423670850e6210ca3aed11618e1cf7e210b630479305cb2d797afac642276656db2cc9cca70b5c087d20f499307aa24847fef9d207d59c5f3ac14e8e994315b53768cb6e023114117340593408038ecb43e8087fffed572ff58ae5d50f3d108d98dc8e2f2aac73dbf7da88d9ca6a487b2b684eb111fc684d2b381ce3bb2fdc95ba9d2b1446a61c5c4042415d43d109e0c1d7195e86484506302eef8f63e84a5cb3661acdc0212f83990e4c243d52ee12b36f01e8942c697b6e565636356add93681425dc026faf76769b2219897a00b321d25ae4aa94a68d259db1faaa6df6413a2be75744b83c43dc87a2e0d9c81381298443c67c82c352007445473fdbdc2c934fde6e1677177de535d24079336fac966c39b2208d68303351c78ae1528e3856cc0a0c67fd778b2d4cb5eb64a1471a495743fc795d5ff6ee2cfa8b2aa5619b8a10203febed34987038312035710a329a75a912ca3021920c025be4275b79143c2b454a0fbeb95d92a801d34bf277f8a2da3dd75158b535cd56dd73362f068e3f566577c53d4d4d8b0ebd512fe98d836ffe34a98cbbdf0b6cabb7dfcb8e59d56f691017cf08a8c77022e9919f0f4211043e8ea1b4529fd3070b406e3f1cc8520162eb4a6513db61ea5f1f9ee9910c4b97590cc4edaafcfc1b83d8d19a2f5cebbee5b07d79278670eb8541d3388f42808cf3bd26ac6628215aa4ebb43b5258765db7c1aa1f5e5e537515bedf299d40e187151652a7bae9ef3504f91897c48970964245d716a9043b7cd8e4b6af4465056eab945bf3f25cecdebbb1dabff76ad76515da5ece4a2c63c5594bea6e82db453f05ff7ca6e90193b4e724ed691116569a61d6f5b85a11fbba66411b104635b78656282ac8921ac37a28fc1d046e072ee27c188338443f36bf935576aef5d5cb83384ae724735985b524c8742a1bb085a2626733f048a73f7db6e96a73e82ce94c27ed610825e0899c045d7f235dd806322f6368d4f90609146cd710a5ebbf79e801618ecdd68df707f53e1d5329d2f682a60565e2c09e30bc9324eee8c00546c18cc5cbaac69d6691a91e9c8da97b32e4adb2d903563877b7cec70e419a101eeaf0a2501ecd9520e5d36537febd11b843cfd8b1444e7d80ed057da055a3081e5c391262e5d484ffe8afd34ce477d2a848b921c52b899dd796e2a984f1767617bad6751777579186ef7729d8c29e6fecadbd324eb9bf4572bc54528a34a55de92a1dc2ac91ead70da7efe607be2c51e08152fd4848fde52b1f101d42e23427d18bc555a587b1991bd6da16fdcad0a7bc52919f1a522148f34f0b689e601c5cfe926a6241a0e6ba443f822b08066d4f99dabad424de6076a45e016dd16dc92ff3790ce5070d56912e3834ebf4fb99813c71adf52639c1f1c88af2751b519dda7b6e902e67ace4028c98c16c37f31f581d6572898e6aa038b8ce9f217b4e6bc446583efcad0f05f42fa7ff230c4a7d1f4460b16519c02c9dd2f211b87171fc7e67784120df0043068f9446fedcce6779f2283a5f6bb2e86bd013138f4d578d904e072aba2113bba64ae3f48e7d90424f3d617f8a79572e625f2cb37eac7d4f0e003d6effcf9e9e6c9fd8e94b1004aa940264150ced91a774883fc56528bee606931ee39366e8b3c7d0af0cdaa686ecd9e4003779df2ed4e5973660be5f0cebbc43034772d617d3feebd4c469ef308cae36a443c8922d89ac81625e42cc3f6ab1a202b964fb136c7e7cdc7f2381abc1d3ff6a3ad1067f6c2afcd5e09f19af657eaa643e0d394cff760b472ea49932f43e86be445e8ea57a32cb7ac93deea64e81c6bb3d7e80f8a3cb8460c7895d4045ec04562accc5be835ff5d93e105852915514880363405e7f50dbb4c20fee6406817ae8db3a8daca9badd0b2c7d4f7f081f6a2240b80137535986a49dbbe5ab3ebeb96be74de843e5b17b2ac25002c685a4eb348914b36bf097b29c58190e8f27c32579077de5a2825e2bedf2c1d8fd4c3a3836d480e4f5bb4a4058fa8760deb01fc45393f4ee10a01bd0caf5866697957c7b33fee075de2fbbe8570a16a435fbb68e160a062717b26c431cc4f9b9660edaeab448ec79ff580c2571166e3a90e0712fc58e28b2d000344a3e9f4cbba558ee79afd6b54f655859b0ec30d3ed4b69c18f54658910cd26398a9f8ace8d7a86accf452fc534e9e523bf2e6b2dd27354f1e543792ce94093ff39fccb3f251aa159c691c0bed1e5c912464c62268b7c944a2a0ad99ce8ab0bed84c66e3681b3265700cf599c83b46100ea41b25589b3d0051e6f362d958c26c0dddfc19240ac85bd5b06ae7563f81f5973ba7c7d1083e30d4ee267c83a35cf56b954d8037f5ba4c64ec9d7d84e9a08cade73e4d618555a92bb05e5515057c5c46bc10a9c2e5c5b0877a3d0b272bf373f655b946e5d4ff96914ed5096f8641dba216472755fc4f67ee5a7fac71af25832156a3991295b3645a505e8cb807abe3930a56f66270bb667f1e698bcc72a2e49d7240548b7ebbcb06f3614a3fe1be39f340c24c61b2b50eb9ba853adcd650d44f8632ce530beeae70d8bdfe66fb59df8be2df9408f9b6c98cefeb757fdf7603c92af67a0a75e52774ea776adfd754fa6801a18bd050f27aefea1b3d219e324336f0f744391953aafb154ab1845d13058393ef04e90819236ff111dd71c016bef3ea693e69e011ee632b675a6c7abcc50dc69b63d030630f10ba42c988bfbdb2c3ad10bbdfe092c8b07126e11e5f984fca7f9df1738ed7c0d577efc2b5eaa2d1a8dcea3f15a05c6083eac53c1006309d829a5a8d7cd5661b5a3800e843ba4ae27231e299327ea047766e088cbb44ce5a6688c8e1719f7c067b7c0c5f50b80c025aee9ef90111d2f1eaf839183348cf2f9ae82d65636e2ed22ac90e95224865ab302c248c7a0fa47c91e9c9a9b40dee005b06c064e7078325f6dfc28928b5584fc23e9101c5f897fe8d6a4f1d44e30b4c900c56a536c244bd9e94a90071d50ddc8983121ab165abb8387ea8640c7b743851fff90cfce77e92cc456172d897615dae334df02f9fb19fd7e06710f79cebb7f838eccc149572f3f8c8113fb76bb739a3944ad70c19265a3ff216cf3a88d1b1e6fccb55447533879cb9bc2d047bb4f1bcdff765d240da314c576550f5b2bb6497ed4a682a2fe8fd26d5bc4ec3f3499634ef225ba1d328970e374ae77ba2fb5262bb53eca1f11b5ab51e19c751591510e74e72c7cf03b025b6a111d43c0b2911ac3fee0f297679e78085e321228560c39aaf5012ae9ffacce7504ec2a7cf49d2286d034e10680343b121d5312e34776c2405c9d7735b25bbf96288abba0cc7a7aea00a47bf0e3d3cd1d1d30270cafcad8b268fbf2622d948cbdc0081535a0a0923ee3e09ecd0fcbfd17e3dbab00365cd8e18e9fc05645134410259c3b8ec6dc56237a5b2273cae2751365cd7d2378107a5dc10c68d01545b4563a21f8f188ccc4989bcbeca48bcf7853c16365fd82df5113e04db0c96cce4ee6229648853265d296a8ac184785c06b03f55c0ed236599dffc46d8c456905db37cb9b6068f86ea46cffbe28df1ed53065ed5d90abaa1e62b90fff17602773f8904ff73922dc0215603d834c5737a251801d6d871e7664dcf35197a3b1da58716bbb14b5bd0c128a47b9c2b4354db1f99b3979bc4809753d4fa84ed15608265d844e81493ab5e11b185e07f8b9c1fec00dd9d15dcc092dba121c42c12faa0413bd466f463299860ba231208792c779462786a9c7c90180e9a963134e28e54cec372935a3d85a6d89f560a1311c32889a4c3399dc198cf272ffb868599ba40dd75aa8cd5fb0c7d6cb29a161ba5d4682797d231eee4a8f1d0d0f86682823dd89b8a18f54759f1355758010fb7b31e33556db13163522072fcc489941d06871b89f6a918d563f7c504b1f894e1d4fd26034f6da48daa35269c09f6ca5b2c4b3c4c7256e5f008d68843cda83fe5527d83a53eac1da8ee3faa1e45dcb480ac2478b6a93af539a5abb81b7c73ef0c2c324e9a79892d9b41f6dc05c17cc6387d7b62063f91d17a724b9295199d8d2ca1c1c0c2884b5b517e930450457a534fce6634ba07a28fdc42c9435bbf2769192970832e41dc1c13459b9c14cde5c7c1956a90467fab47cfefb6bb00a395be0019e2e61f2898bb713990e596c92b2ff3ad2d5fb64352faeaaae4f7a4e94feb8d782e49028272733af3a3347dc70f10844116c1393fa39d1ddab9cc6751debd2ce23c62ca7633133ed265759272582e28b2182e3e7ad18c769aae59c86720d2fd2fbd79733a8829d2722a071081a3460da1a5d34da7ec2956e256858242ba791419771a462649db944298e03d91f335674426e86b3fc93e77aa2f82966e7dfff459c131d938531b35f29c89a4f02891d38f4a68ab2f2be8b3c6b3893fdf22f4536d9e13db8e2a81b01d46b538ea7db13cae2b0a9fdb5ebf1c09cd9edacb684710b0b5636f466f864e791d1608192d119d180f87c654ffab245aeb0e40d720c57e54de4ad0205e1685fd613868de2271343a59f51f72a750699d154f6a7f70b0e9f69b63973bd62e22c558f9f8e2a0e6cc1bc5ead5f37124c0acf1af85665fe71736c57e7b34163f202ddff1926b9cd8f051a13c51c9f9286ea3e4891011384a0b14525b9ebfd709d8cd8d376592c1b6f5d37390381856cda9c4277bc9f31537c8152a222a5931a4b05b8ceca806ab20038fbd9878571ed12371f454a91d4712eb80e4d8c480f8a4761c51840855a06bbc15182a36c50ef1db25b905e445f7ea0bc5b78d26662f243062569956ff5de1e91adb45e343acd8caa44bdef2b91b0027c0fbbc6d3ece4d113050d9b468bb92a6341e4f2d8610015b1f7b14906aa8a476ebdf1ac901ed4eb3b3d2db83d55a0e3e704724f67dbb0142b587d8c7360e7a5aaeb79bd867cdf6b2be1d96433aff7d49ed65396df219105c38fe62cdca42e190c2642a611928494828711af7f927088c34c069ee7868e0b69fc746fa76a00e165a186065a99f7875d4730b8122ce9124a072a724df63b6de3addaf2c1f19100c86096f37fe4b5cf6caef037e3a78586eb94b5d059b75f13efd40d25744a4fbdd30ec97695515bd69d316ff4ac8bb47d423df5acf215b80df0c5c7ca880d102420fde10a6953e36d53da6e4dff3a2395f741aaab8d1dde0c3271927ac3825383aefb7821205945482e3274b49b7ee0effd687ba9f2cf28e7b8720720a7af85ee6efaa59fa19ecb8065af292f24290cb0dfe19033ce819618a11b667b8c0844bdd4a6185dd0af9a0faf23e7d719337c801ad8a50e14470d3d101730a108bef5097b77f9a795289f57b8ef23592be8b00e8c4412ae3199b697b58c0e77a3e0d032d9d76dbebb7b7e9c2efd1178d3ff4a89eecf4fbf10a1d58edae2db39ded4925b07665d5798ca368557c19d8947bbf72865d844a0e9ce3a2b038250f889d1c7ec9274221b8717d19f39ca95f5b56270a418ec30e3e5a9629c1e3c7b176e627a1063422425345de8da5498cabad4bbbbb9e34a6ecf920161b34739e0ce3e298935ad9af587b654cf0aebc68debbf5359a90f415cde23ebf468158cd3a7e356ae8ef9ce76c57af4cd67d8c4152c28b65fb8206dae3f853485537bcf66040e977994373da658fdf1460dfc9ff136d1ebdfb1b2420d553e3750323a700b971f681a81e2d33e2c55d0947d30a5e65960da115f655c6c362435cd69e083dde76019ded3354600228e45151ad4d647f57a5fe615d96ebb2cdca8187d5a4f65d287e9b1cf71e2808fd30029ade17b150035419d27bbee9e382e34489813df7f058effcefc2f3cb5bb6a1be5e29849f983cf4de66ee2bbad8a2716ae09a6520986d737f3a4c71cee637dbed2c9b6e9811dc744e6c97b63490a0d5367c11bbed52ba9ff2e56c26be938b4c760553edfd67e3263319646cb86d31df80ad6bec27f20efb85d676001b75ea1769ae0d00b7ced70ad6e3de157c5b22525f4037a4196655360d36c2d959eeefa6c4da59657a2c32850e0a525e082abdfc56b26c9c8bc4ea46fa7c1a43ae874a58b0845b73df1ee95b27ebd95ffb2742825eac239a064018b364a05e61d65718e764443623fab6f2814adf5d79960f900c4c37b7b93defb9123bf9c7972dada56c99588677f8ddc72cfcfc243a1a8d6601ed89c00dfa78c7bb7eb2c25c6fc97cd4600df5f08d1df689c351d7e722de0d84744942ee0fe56e81ce820d0297e053a8d617a657f42b4ed6bd6052657fa9d058aae741e6bfed24d9e232878e2cd757619716b5c457bafb2b663f890016fc6d16e7b73ede7b8cb3c747cb735948caadaa2022ccb48e5b46559077e971333cc88e01f6a9d990ee0f7a51f845019645ff6190f18430a59bd2f58f79f71026251b949cf5985b044065af622096477e6bf1bd487ef5895d3588323b667a3e917abe7def7e0510ab5050d17500794a453ebb9ad1e562d70f8263b387069f91e4864107c5ac695c148f60f9c8500d10eaa78872dfd5585c3d15e0835693995994ebcfabf0e76eaeed1cb8d6967bc2c1732ee7cf2dbd7723d874731bfd3f1097efd255b4f6f7da03dc3c70396d5c53ef3c84a9ff60a2d8d7092c19fd0c0ad886100c6c569bd0e00363602b8fac5ea98a68b7c9a70c28bb9b14dbd3f490c0f1d164ffa703a467e195fabe67feca9c04b0627ea2b5e838a83b698c0addd4dbbf91112cec78ef7c8259a71b5d6d67e1c7bf8fdec5c0166a50576b46535bddedcd4c3ca86ccdc9c0977592c0044b3059a02628b4e8ddaf3bc610e66d81f89f59e5466ca184bc37005f9948231129762192a74e1d14de99193c9b0e65b5277b3b18b2402afdb6d4aa1419e9a0255d1923d6a4ceca90a3e8f5417d624c43cbabecd85a1ff29b58671673136a9044053bdec40182a008626a309f63d61fd1788af28e434799a4fa00e052486841acd5c5ed2152fdf72227f05239a7a4083745b26018a6e25c7d64041ceb0deddfbb2a7b4dd2ed4688ffdf252f6090b00e81847db1959b3b9ac6cf91f37fb5d7fb3ab8aa3c1b492355dda341e3af6459c5230775735fe04d4f73b334a5b93dfac220bcf7274c76516d3db7a668c22975af9c839539dcd46448a5a9c3e78e6d7917ba53272b3a21e105f0fc72aeb5dd159aca228e4a0af91a1fc7b5e5c703ffd77c705d08b7cd2ba9061c7c6f83b0b97804d4d4ec00e1d6958197489504957e05c60f4e63d92779cf0aec552a5c5391b60519760dcbc2be3665e895bb4ad75d65e764dbf49fd9bd6730e36da53b54dbd67414c6a9404ab15cc7e9751cc6b21d7638d27a0a28797ff93bd7842919b3841143b437e5f42505a48df0129abf4602f4ffd4915cd3f843b37eebc058eeb41a69b71bd4dc858f33b6c1e763d77de8a2c1571f3fcebfac2709d436b9a727d5fdef4a914bc052bdb1e1c877eec3365a620fe69f0172ecd8fd83857606d600d1ee800bbb9c917231af69e9de4e83be55b6274b801162c94a65d5b34f7f8f0bc190d09178370beaffa970698e3a78c61752acb0693580c6ff77a9edde3c2eb8d0647bc3c4b4bf9bf7b8340e22a521effee70864ec1e5ee3f6b8c2fc6dd4a7be9480d5442df220048dd286699b0e2c68a972bce61b145392eb8c3b6561a34601b1e0d8f513dbacdc43c07f411545d92ef4090e1623644d7244633636c973381d5548ebe27237467af4131674f50470dc0803c9149c8d06a5223a1c2d7358dbdaa95863997ecab050bda0a618e7ecbb9b400650160ca76b2ab081470dda32917913b9d2604c2db21dd0652d9be6834cb255f6e37c8212823666e4c50b5178f2068bca1b4ea16ea38adb8c416002ca64e909f9140f51b54cf7eb09b070dda461a6fa13687567838c10abcf51e2b2b421b192b6e112ea5843a3243cb9084a07952c90fb35369ab4d6d04b6220e4b911e3f0461ab980ecffba585f7056131b8cc28ffe07c68d81b3555b0301d501ca4bb213db70be106a70bb8bf4ff5501a00ca8f7c4b5d1f6f9aed09a8b7980393e6e03fd16a9389d85c221deae38497beb35c04111b9209896b81e7880470e9560b0c3873c0a44c1db9c4e655d6fd7e8c052dbb73799dfa9aa5a133723bb3213fb7dbd9f8d433c9c1e3f0f915586c216989e432b84616f5a6dfdeb78b3791a0dc13200edbfd7343827aa3d37f3d81652f6fa571de01fb62c72fd98f7ce76db5f2317bb8bab9a09c74f77847b0a261a9288d3ef3444149f1aa7901d5f2b9b736f63bbb26d730c4537f67a5a105a01605973ae6b42fbbdbdc120dc6aa1e1a4ee59278583d97459dfbdf70bcc2a30e8fd22ffa85da47ded07c549444ef35fc8a62261dc15306350734a4a90361f05c65359af4e02017fafb5cda52db7df17941a445f05c9e52c784df303e49981873dbb0f3421faf90f72249a1b333820e7f432a34bc72174c10d1ffbce7785689a7be764c0988e186a10a40ba27a0d3ce8540596e915913eabf975ed232690077c325fe29617456327d9363cc54e7b176630f4722d99f0fc702b7e9d4159bdf59173b9d0314c5ddae3269a19093d685ce24b5f4b33712d8a2f2ac7474d7e5866a9f8455c72565ea7c8506fe54be3579a5faba6a373fcccfdb9612633a45496129385cbe542fa3cc00dd0f22794ff6d24b36a56cf9f1bc07f974469a023a600bd9e289fd01896b4b015d4608f5cfb70516569d80f81449cf26b1a8fa7b742ded021a320a1445ad292c8e9570d295fb47dd21a1d86552f596b1be0a8ba9bd3cc7ee358a0a4bfa73c49196fd0aadd2a15e80d7c842292c42508ba03473635f528b2ce10479575e803d24025c2338f289fb5e6776a65cbe23f1cbb9a1dcd5ea22e6119de8e15db069953d1b55f5b84870b3dcc07fbccf51bf642a2ed7d2004fcd543256827673f391af18d3dfb587116317e52ea6a084be58fe88d2f546353f117eec08666729f97679563a36ce93bd68ef65c4ec92309e997665ad696c9ee97bccdc756ff3fd3b2a567b892cbadd9131edcdd89fbfc04e9c966807d9beb5fd04f467e6745de589f97d6eb9307afc95ee6e92941f2dd0c464f7dc0bb523cb02d6223301de86ca7e9239fbab748f97d2a713ae8dbffe352eb1a72ef90dc482fe351aacae90c107cf2abf54e40407efdfabf31e744d1475644c1d70e18c6d536bd351800de687ee6177ff8ccfcd2e52c4f24862ce10ae4a2f4c92d9fab4830a7fe6942377992d433c7cdf1b9dd12da9228e3400c655252357e5d14380cecc45c1e53d4c94e348bf3a7f335da710dfebb880170004d5f9a387bf83ac211db0f8f1c652768133878e9ca74e126ce6fca72e97a6719d8a6c2002f337b50444cdeb3f0649600338ddd15d1422e014dde07f331c7ae30fcea025201ad12655f92e3acfed258ecb2a861d6273b5cc8f39daa7ed815bec4dbdc4f0a5206d68656bbdd58fd704c5cc8f12fb6e633ac537c2636ab85afca4db4c12f5e4ba98095ff9fefe6363ca939fdada66f62a1b190d824fa5323b1328fb8e9259aeae6c3c8321a8cd96dbf0c5f6ab8650b18d2cfe7d8a554a9d5f141ae9036d7715582f56fbc6f5afa241e7ee2399fd1d0acb990bbff550df892edd1f2905355f0214385239314fe347bd71e7abaf0225570f39bcb3abdcfdd8f2b260e29d1752947a1d4ee86637fcf267d749eb26f037e5e1b5f166abefd10867e60a4c6204485493aa0c6dc6276273ae6ef5caf18411d259666f13db8e9dd3eb46ce2918ec6a376db272f6fd87d001c3468d84227ae9b623af5dbca0a8381e8451615842f89771c49c0a1ec599d796d941f87652a2e722a291c955c5b48a36f0b0fd69e12ee317a0718318fad85a9128f1e20a80a9a8e5b25e217d64c112628235de52fb4d1493113d2e76040310ade7e839a71428bd29e38fbac1ea2b60bc86e4c725bcca24e27fdf82739fb20649c70fb1b504a02a5f1c784d7d64639a6558207ae041c8c2ac28c298d96d3f1afe99a241b73b27e7f513d4753c9fb7fb007e334348658ad025c172af6ef95a81852a42a468c6f662e8074232b7df66508367ba6ed61161e6bd60dca9f6ffb641ef7766d9f66cd2fb15924f68592ed27951a780ccb4fe48cea51faf8dc32fdbb828d2ffa443af40876d9c1b615b7cfeeeaec06733cada860621138b03d6b53213d390e30a3a55d7cee7bf81476a234f377ce5d6fbd63d5241a891aedb8d3f44d8695edfd93205750d529863abe081b473453d0481a1f03de6dbe83a86ea51f95db951f31e69921c75e8d6eb018fb55fd2a08f21a7325e6b8f46ef9d9b5b18d44ea54f40ac7ef54aaac01d962114b76a1bdd6b17522240bf8cef1b5254210df52b3f6fad9c10210d4404ee5dc8c557ca27002803ebf3d73d5ebd0df20e3d1ddcc72c5a24c75b24cf51fb32b61529e44d6415511ddf82476d3ca8ac8fcdf129e3ca5ee3894ef14ddad1e633d20cfb6c6653cc66071f7fda1c91bc4e5ab5d4098a30174e45137b40bc39abf65716c9f8ed0967fcc0a1f952387ced8ae2926d6bcec93fff3d3d902b5df14a5dcb7f19202db2f898addd008b5e4eb7a3b551673bf4b71093b4b8999a5fd63088e0f723d6eb0af4f025504dfdca1092b39d85507055f2069141b2c68b80b94a476b121a6070e2095308fcfd06c2fa33058fe3eb5d0ac72a38912011c112ddf3a3d0c8ffbceda157629de664f417fda3412ec610f27d55a61d2937527d5c7dafcdb6f5130009c0e577ef97e32a9b3a1c5ee6ab1b7d4b0fac97a1f3661f9344b3f32edac85fcb4d7645649cd7012289bc73b8b6eee7153dad2e4293644d6cd341d5bb9a4cfb8c69a3930106971cbdf30ceb4a2c8279627ae08edd1adda1c03ed51267bea19822ca4d3547eb7c57173850a540f7048ee33718b41ed0330d888f198a8eb247ddde3a5b8af1e3059a5c4aa60d8c258de10937e94936c0015d8c42b746324673c3c515c52b498bfc1f19d0fe3b456958502511217afc388a9b8ac7edd1522dd74da7cff69add06b60b63a4db9385999c2ed8b28ca3284b3f392004feea5e81fcbbb46c7c0eaa775e534856e388ee2ee89922d80eb335525632cdd064f2c63d2bc1890601b6ac88555beba64373ccc71266d5970619e7676ca28879e5918bc2e27f914b9d0feae69acff00de49d39a6bd87ced8059527e83a78e13f646b0453e24b25fd7528afc24a8ee13568f84031641efbd5d75128fa5b3b69d690d82a98c174c170aae2a6512ab5eb7d0217c372fc7fbd9fd70b3c041f1633e860056c1f199b320f939aff4d4424fe76166acb9827e8ff98963be72f6d9585915aef64d63a52acd74fc56f7395079268abd71674f2aceef9d27e03edbdd079e1ae13f2937a1050d9a6626103c93996ceae20c8fd251b0f4dbeb9a16f1bec265e24d6ab8c06b0c9bd325ced430592d8d506bca9cc275c2af493aa8b2d3726257fd1ea3fdf4f024d3ae12b99fcc76ef9e27411e8a16a074ea27fe9e2638ee4a732a74c170b03386e9fc163fafbd20f6e09483ee2dc6e41f6ddd38e608e9e6f2a57cb8a5f75901f054e23f17c9228915696dfcd8a04538a4f8290f925f22951af42c376dde5447c893b04358a141899f488fd0fd544f49d60403970e4178c86de3d6e7de606f2f71c71cf4b385c5a0b6011e9f6d6e99e07d71bfc955e481ef9e203d0347de92671c58d6b1e7a473e53af1761a79ae54e4b23eb27eeeb13aceec347abe8d482f8a7304199168235e51629b65e24164f80c68bdaf2e7b3cbf7631b2bec2f6f2a5a8bb8d2a190aa8c8f653dbca7c062e18faadfea902ccb094f8376c9e2d49d1b06a9459b5564c035f9b2f42c31401979abb27d6d9a293b272fa961ae4d9a72f7f5811b885a1ffd1dc6313bbc51d3aa985277748bc21141c4f9a81d5a34a70d426bc5909ccaca57b5fe5eef56c455aae666819cbfddcdbe43b94340c191a3cae387b4336b225614739cd0e29b7a7b3caccc7eae5a3898ed4bf5020ecdcecf03a77630e1a07f01a34f26990c5b3fd550589b3a82ff3c3cdf4897e92fd90ca101be2335e3792f61f2475dd2041e29d7d8fddd3ad5256b3440e9deac833740ac343c85c241468dd44fdbf820819edc4aedd0e32532999d201aa0666729ac1aea069973760fed308ad3917343f24b9fd7b5ac2051d4f9a04e0b2538f89defc59d68321259a1696d6b1e72e7fd92c6398af18f9d1bad391a4f85f3f07fa52d6e68bcc6c79d4f461f89e18bfaf43066aa86321bf9f50222bdd029caf6ad05889c53edf9c65a9327cbe33f6edb49b8b6a74d3a16f8397cced23b4a2bbccf939361dc48d4267913410ca99cae4d0913f4f23f67eaa533ca2e10c8e3df14d4e6d74f492e438b5f79dd5240d166c6bf3d947a49cf2505fe9284bc062f719ab4115246d5c3965d19b4daf2c017b398c48abc4cde76fa4f15abe9271bffaf20f726f30a79a90095fca62882ab2f35320eeec559b30ebfc8c029c8711bba2d3a39ea1fb55d101b0f101f4e8700649267a1d3c006ddc56d1ab665619f53a9c1ccf7002fe841b56378b450e4770e23f4d0ed72ef8f3d0923499871470265bd08b60428f0dd5bfbb6c4510d1a0791c98636a9c9473b6d7ca4323442e2ee7ba7e07f5c6f214182ccda370b5730c4fb1bfa0cfc68f55a8613d49e9c42eec21556ec244e42f8d7a5f2f7fdbbf6fc080aaa06021108d61f7ff83ee087bcfb3b117913e5260e9efee5551954be3e6738ee01e298595ffd3bfbd191049125eb1d03ae012ad4adaef1c9e9af403f33f04cba29cbd619283155bf141e953e147629095ba57b2d5dbae8681b0fdc20e727b7db4e84ff0c3c6c4730445ce7f059a962950bb184d8dac6008b41f028adfa338cc4fcd06135b95d37886965fd198162a7eb571e27f98bcbf60ce7ee7c9bcf4d041c75f93329bee774ab9476f660b9d6954bfda5a01fe935b210c709792a34434910f54c806ecba02dc7ec730f930d0cc300d246bf2638669fc4f9269250fdf694a3cc9b21b81653ef23b2603384996041d3adc525f49a31dacb1f8d294546dc9f0e2eb9cf15257efad595e91b41580177923428a04cc75f2891516935e4d17e5f9284023c69d1d56435f7db01350d7244b4ad3b882e502dc40e374b79ae58fb1453f3d03db27cbd0b48eaa9dd24bd0c7b42b90c3a6445ccf6d4f3a84e686484ab1656070f0486d1568765e83722267ba390bf6f984012e082598256fd98b8de6600bf8a98355061caab98d389d7a73d14746e7aa1b7f002dfd9b013a46c2de3e1a3f5c3ce9e0bee696839c72dd0172758f8730a1345fa3e405a31feb0ba50015d09ed1f1e7532b0ea3f86c8df9d0fdfe4c9eb3d1f53dc96748b151cea3217b95c7d7f90e7982610b6dddafbcdfd5c6221d1a1f630137a7d8da19ed405f36521984500090de6a72ebc9cf42a395f5e80bcb7615dc0fa515c5a658073d306436337955c068e59ea5c16267143a56d405b5352085c37565110b30a96a9f394093c625a9601349eeba07951a4d9998043ec6728f123e6a3dc6a92958e0b21ba147d1ebf5cfe4ed2473679b19da1f2126a7ea794a7a407a937ae00d8458f0855f28e7e7767008298350c997519f7bfa3333181377817d6722414ce525612b24455e61f3703919fc58145308c2357b7a251780cb69c78afb5844b1d83efd578dbac94f9e7ee3e963d5bb71b2e67e4334a969b3fff40044a3c05f1bd6623fc93887db97a7c42196dd17f6c403e80e4c688b73676918ec0f8585f1c5741ad0e2ffa540cf97699365030e325de262741585ce2b8477a3ff2ff8a88d461ecaa78123a7a546f80242ead3d39d2b11ebb0ad74085e5ad0af8a6f9c93c96f33be10adc8648f28ba8969f5f5ee51be8ff81f079942a557b79cb2a4a29acd35842eb78c7eb79540f291ca9ed8eb0dadf1af0c98f13b6f321eedc92a4c5b86e7f7c23da06d984837ac6a972d454509fbcae6d11e0cdda7ec9ad03359f2e1e4231312d2cab3e96960d28fda3e4dc382bc9f15a649b37290bb664b62d58be0f9a1e8dc3cf1cec9f3c16c197eaaed86cf5a9d38605dc37a781fec546db299157b7b845db06243669378e25d77600edfda85fe3e75bb6567e1b93fba3626f0fc44edccc327a81258edb09e40e7e6fc3b8a319032a6ed96ceeea93a06f27593bbe074c5f24b716b0df93f63e31baf7100877d8d38e6ebf765d51f73f2e57d13437fffa77ecad9ebea55d295f25e8a623726de002b22d6e6d0f878091c16170a5b74727729e2ff600da49bdd9624959c934fefbe2fda0c746cb1806ef2778810640624464b077f4d290fd41a3cb2186a16b598efbff616a7f746408bcb11217f3d4cbb57d5ea0d3b36b343aca063a1c2cdde07577583022d06a1f98b97a6b2ff8066d5971252b29121f3aea92cf616e2703abbe9db26de8f053d08c80fa03e9948129e2b63a7b6e6ecb7276cec5e82f0f230325be0fa0748bcd520b9cec1cc75cb15402ad3858191628d151874d2381ce53e8673bb1f25cbf67555cfea53d066edd3666e62b7044f94360fc5cf5eb0bf71d8c6b9d19b1c6d932dd12ca2ab200aea48c7e2bced1e75cefbd1129ac1e300ffcd62bd5efd0a6221dc282a9fc09a37dab061bfb0271a16bb79aa7c7c71c40c960e07e1c0b6492e1572f872ea796f0d76acad49398a60de7ba3dfc1c804ccd35117aa71b91281ffcfc2499f484f0970c7eef48d0e7aeaf7b85ff74b20a95044391a4b73edbfad3cf38f4357f15729788800323602c296a798dcdec84f4e51a1b1917c364cb5ca9294ec7950e81bbf15e8986f727569a87f2e5aa52deb0aec9330abde15253f4197de419b2e4942e7283966ceed1a3e95283352b98549564db2023350295350cc3bc32399cb4977381e9c59f3dd98de33f4408f9ef47a400c87bc1508cb671129576c3cb2336d3f409f90e7b739a68b9a3a821535c7a988061725997d3fc60199415c147cd1795616c0b4b519132ab7dfd4b89898d9a9d6490ceeac2590d4457286bf37818c9b62c84e2bfe4f536f8a8ceefab8210dc02332089a342e129e5a5fee1d9fd16d7700ebc4b0bee1790dc97032c1037cdf6fdf49b3910b84fecfd0279fc97cb52d55b803261439c1001b809ec93cc36d52746b53af5327b60ac4210af00bca9040d0643ee1a5b0ef6256aa3c351231f820de808dc6e991727f95095fef341b29a6c72d922225fd805f32d6cca7a652ae4783481146a13c961d041fc2b4897d78e712a098518eb849ffe8451ed9d86a0808e15394ad3fa049c7d4bd212dccd5b8d064a5fafc54b0e0f2033a2fe4e975e60d0664ee10e17ee204bb249e6319f55eb8f11a996dc1e66272d12937eb0b3556eeb2561785105e3bd6e42b801fd5a316da0177b0e4be5f2ace0f4bcf33dd10c266273163513b8f154dcb01849695e2f5d1029ac5d45e9099033e79ad3583d1c926e639720f00f5b3fe88b8919be3be3f17043d7e27f0d79f7b2d90cfb598cb39ab590129487c81780e3d7cbc93e4cb30416dbdbc84897011b9d2cd6b6292f12a4a53b36b52cf450c61b0fc5ba6a005c1830cb5bcb73c9d8edce9e215ca0e30f7d9a82ba027a09e43fe9ff02f8fee46eafb0e33f0b4a322599ccdbf97031ba949d20e8d7f01916e63bb4ee2f685bfdcbf2f20531f3efe284c66e43ce64a3791eb5f1edc99556021d9d1c759f8d2dc62ca86226212cf36287bafe8cf3d8d5bf3e898404516642f1841cadd2c7d682ed9c789b56c2a1f216333fcb962279d85c1c244a7036028cb1c85bc4c6c27ea48ffb86ba300a9792fd7f5e800af763d40bef52f20ebf104fe3cdc79d96cdfd5e927c56dc99b6ca2e1ad8eccb7d70238adb867451183a2d74ef294ba495cc09978a270101d7c4abfca0a0e3185e7335664ec297c10f79e3712da8d07861c4264e7258bed05cf69d8ffcaa8b6b4548246e7819ea181c50bc809cc69556065fc778573eb9fa97564ef110c077a84d1b2f882715768fe5185a9465384dbf6b6bfd47165d372829ad17c0b41e4fd0967c82df70d3312eea2fa5abf3631199bc5bbac8230c0fbeb40a770535f467fa7bde0067d4855da1f276084ad0e32628f9c49ffa67f86de6734190b6dce73118e21b9bbc85f03188f2d1bd2b9a068f8e84e15fc0289fef9c2969c210e59070cba2ee38ef4fefde9b28ab2a875c4f6abb4a10ae4b11d603b7fb5d4c44e8fb45d9547731e9f7eed947c46f4c6d45f32af40e53bfe67344a522f53c011fec2a0d049bbb5381f76f7c8daf10351b3a5f97618ed05a3dfee45fd5a3ea0ca95e900456b1227f74e989f24c5d82974e10b09c4a65527a873a87a7255a8dc8e5ea97c82628f7cbc90464794da53e64ef4339f1e610c57a3762507e8818109f2ae01a9e659bec436394beed9ec8c275a0d80187f3fabddc0d39366bed09a301be02eb8cf2bb932abd6d69aa2eb20f4d09b742ce7237f094b4e185c032ca396cb0004e4a1030e6d51d08cab6a96829deea3debc74280b7ec43df5d326c63087a21727cf338a7bf16b8fb5c4506709b6c51ef1fe8720592f252c132bdf50b0d0a63402298dffc6131825e2b824e8af077751ab4c883dca17a754a4adc8c348573ac8bdf94e86ced65c3aa5ab186e03bb81d23b5abfa332baf493b4210ea6275ca4fabc9bde2abee089a999d9dc81d902a948fe1cdf2f31b31774e8ab594aa2434a3b0e9584b2cce2bfca1bf56ee6f892d80562989961f7ec8415ce42aeb529c4b10e9bae866f95ed5f49a1e4066b2c2ad37fe3647aa1e06a5910ee947995e2c96fb37aec6785752ca1f562a6f0a415c6259ffe04393118a2e93088423f735e80776c5a98d63c8c3e5a5e5e95915127e19c284b81f8475846550e7742a0aab2798ea6a8454fc2aab013ca776d58dbfcf142f137f42b9a991d3e50ace8522eb04e6397b8bb89a6a6c6fe61b7e64c419fe751fdbad0def59f50b35aa7ad14eb7dfecf5ff00b8af9b4a00830ac1d5bbb53bbbc677ebde7b6d14bc364db122206ad9c8af49965c6d71ec9d5b69973297abbb4b22a699e2b7ddfa4b4e6c855e78e65b8b89bdf635c9afdf72431168fd66623714840f49b69cc1d40e419d59e05c888f1f7e1e3da4639c13a3004b33c0efd76d33249b42dbc6ef7503b36865700796e53e112d7cf21d785c9404de08eb434c9eb68bdafef842d3d2244b9d338aaf7c9075595c374169baf2c6b4658e024b9a0e66ea0cacefd072864ae1b725f3c55907379687e740981ef13dc6587e1e90cf88a1a9e5aeba86354f9957c2eca09cee8402c40778bcbd92da776d5c25b8f1c6d74cceba1c23fda28f8301dd12f0b4218897e044cbf3e1be10f76433e6c80ca34eccfbff40427038cc59ba80722a2e9e553ad1e235c6982a5c5a0cd7b6387d0641112afb18d47d6f306b0d6aba5d0ef773081df6feac42fe6a05220f9f9c4dd18ab66070d8596b3e09b61108f0815ff12c5ded40e48582fc4a59d92a3d4530fc052d099a650c1ead4a28db3beaef5a3d0f460655952db297ef7c4f54449d5be314f8a923da9e2e950970a32fd4271df47007a99b38ea5ff6b3b5a055f8d723f41bfa1c0507d1c246ff5b0c0faee79ba4e6b092b0e5a51e51d14f208db3efab3905d1920cedd116970bcc1d74cc91d897cdc1883128f93253ea16753c62f447b6bd42f59d4372e0d0af31e16e54e38839c2dd25208205e70e815e9c5408aa6ad0b6b97aaef426f61991a0bc27c3faaf3f2a91d837e81f8fa57f9a155f3a77385b64d17c4b9fdbe324fc6eef3e69aee140aa254626424b89faaf87b82aa2a319ecc1f2e30b169557705c66d235e8322ae6b0868368ed82c1a743e4f7707de6e53fc900baa3dfe38fe9c683bd60b911d4cae935d6ab3ad584f14db892be1c45836bfe14b671b62636826d48b51aa76f8669c94feff4ed4dada6472ef68867411275e44bd346099d4e2d2e9a413651a3752b06a0d27cbeb070b18cfbd17f555801bc86a144d87a4928c2053410f1ac1ba0cb1dc6db26db035c9cdc58a1d875d0a147efdd574461a4767796a644027f9651c5cc6993af64ea4576dc8a2a8868d817adb29119d3481eff03a5e897b5e6a66672967f4638eece414f94fa361c64f5bfbe6322cca36d7284f59e77a967d08b0ad3439d919f01deddffefdd052eb3c163a01ce7834843c9d9790e0824228156e9b55c5e522b9ad0350b3e703b3432fbd72cf9547a69f1aa47a927c697881161101db3d8b064aa86a433b6ba4ed1d3e1ddd29c3bea69d1c1ac5c40262cc1ea14f748d92033ab94711ec9edecb7991be66130aa1187b0f26c04bd53458b864d016ac8a7de0cf0b3ce7ecf614561b3a4a771bc4b51e1a597223d057ed9a81ace415249b6f11c3fd2b151daf1891c9e9c4383c1aee449b3b6a2886282b24664d43493abe6254b37b2dfe4e261101feb45f3e7c283a2068d7af98f7a47ca581b1a827804dbf737588778a96cdb56c6a773fa83297fdae9dac25135e256e5aa8a31716ed67b6970177b723003692c27c611e625bddbf19ee2a097cdba5dc36917fc8ffebd71e697032ae44b7c7c6929dc9c1a1701d60f3e2fdaeafbbeafdf717132a94a3aad383ad8251f1f7068383228a6b2bf032edaf8516ce19843c1c18509df0a8004e28c37496f9a2708e5ed9ee854ad7792ab41f2bf039a4f14afddcd2ce31cfd9e0787fc7803ad889d907192b9e16cdf0b955e9381849eda9eb50444ef71472362d766f8804b18249e6836d7da1985593c385defdf83960a93b565ece092290f52513c0330aa6249d751c3d7f5ded97fc9677a087dccc900f9b71dfe63a01fb175382ca626f401069494cbef39a70daeb2f70f084cde7247c265585d5ccb19003d93c477c5f15560f45dd7976bfc3ffb553fb1bbae6be1b1058b0009db97c240c12e61fef5de7207823c7c2dd1fb1b3d3a9e57e995da6c2e699d005e5a5cf59a4f18a0cab2ebbb414ea5255abed636ee97f59e4ce2c536f4b73113521ac58477bb24e6bb57bd4d24d4706d5add53be113c29124f6c7bbdb6468023082e5151606b68f3a02fee385d715904a83b4b776ee9a387cd087f3ec992ea3d60d6d6af5cf0c087a668888c1a87812ac88d2b0cbbcdcf8d7c9907e95b7c6f1065d7f91f043d4c1746958e30d83bebb7401476ab95f9a0e7bdb77ee03c9736fbb890b652c13eed8ea62374901e6600b5f50940f6600b0a19f9d0020fc7500ab164c3de80ffb0cc28a1c1a1157c5f0b83718ab43e60668703c99be6c7e814d767a91994113c7fd450dc77f471435ebe94d96c9016ad60939290a5323a6c2f3299b8b7d09036f03399ae623cbad87bacb691a6a42de0cb307848581eb3ebe1cf527356dcf5b821ddbebb53bf5097bccce7cf665780871d63f997409bb01b0a081793abd939b21109be7d53b49f9a45fcc1a24222d6c345b5ca8a8ccac354bf5d4dde2c3b3e9d8eb2f62beec9a3f36b7c722c771290a7f3b2fc75b382438781ee424a8e49036eee1761b2739d4615706f42147e4ac730a06df8ddf7cece02ef03bb2cb59e2e7f583bd2aad6478981875eaf70ee7fbbf839fb8b6ffc6d9fbb79850fdf3cabe139c465508aa2cd7e014eb413acea7a91f2b4f3065ef551acf73f82e1741332e0718ba1777495ae16f2d642df252a9a61d312f566b817209c8dffac596827cc06b0943eee66c659b76f5ebd5f92034f96fdb1209487c8b6871f16dbf85d996511e5a64fe9aee4b4a86a093b195bbba09a09d299adc7b5a18cfba387f86167bbb13e6d2ac1da09964eee3abaae81bfa6d845460b668e73a42f8c324e3b4111e2f5180feb9599cb4c3325c4995ac7680f08c83f2270f06f348f82b274cddf47c2fe4505f2033bb718e2e39b1df71a4f9ccce9f10ffb7710fe6524415ef5ae539706260361e8c024ad91c4d9ee968f3da3a44a95073f3e945fdd67e716d4a48071b7495f9f35b55bb59e1d6897ad5d588d27b1f6c419fae5ea2fc770ca955788b2d19864d7d735584bd65c3f09c8b0155994655002bb95e1e61bf68a4d321ea59222375a7aa9e81a8190910418d5434017b0dfa503611db1ce25e39a95bd58b39ecaa1ddb977c952db9a2f94fdfd0d596ff4e13a0c2519cdcfaaae163b48428835d4be5f0b17045cd3f25459d20e8253180e5c08e6d7a3dc4dc381bffe4fee6f0a1ad932ad874c0353501c51196f22d660abae425eeed0295ef56ec940c05396a57dc29c1d2a67393d80c64036aa6bdfab9a2a1ec57d339f4db7c6da878287f9e26d96cd9f03d3e6e78ec4f4f08757edec38e5ff7048984b18c289cffe9e886570bdd670b812c85b97c2ec55f4b4fa8b2d303c3239da4439f333e358f1ec3fe452c9dccbb5b3fb6c0c6664c152fbfe7d0d86a205fcb44dfec382d4e3545395fe62efd8012515dd29f5620857fe0afc873dfa90ff1b8dd5cba43e7dad3d99bc25c954da225bbc3b3d77ac5ee150d2f04502b5b35afb9547ea64a4a88e66c61b9e89fc9820ed198a75ab795a9184665f58b645afa485dede8005008bd3ac136d4ff32dfca0382e2ea61d507d073b7ccda447f116b7a5bd0c3f3fdfd867926bfeef312b97ebd93d920f4ede1e0bf96fab5bb7506ea2ce4e90fefb13a2babf7a301bbd3796dc3596e7bf33a6e5dfa5dee3f39a3f506375fe50bdd9869a007b509705e8eed5dcf261cdeab577ba600bce95529b1a156392264e5eabd9bae6368f5eab54ea1e5c7c8d4d0a2fbbc0e65d65bbe3f74d92d622bb3579f8d9625a022dd3877ab8bf2f81bbe1b7f38b1d8aae35bf7e0034cd06a70674207ac367c714c4341f2623ff8475497290c5a29779761242909b43bb70a676ceeda052b80f477330e6f5c520cc0f6481225e105afd117a9328c38e69722878dbd50da7808b984ea75cdef4f51dca2bf4d9eac76338408e9e3c049125ed3a64e93a17f6f793ab5fa283a6f2342365e92b198bf96de3a69c4d9d004e81dd6d7c2678490d4276453696306a77107264526133d43c530b4b37a6e7eebf4c6b56f71ba6e1a40e2fd00858221987c9ab8cdd73c84e8b41541ddd1ff61696de5c0f1dcea95282e0fada646626f89735616a279f16f60a41626a32f7295643462ab47313b8c46a269a966f670f1c0973eacd66c832bda8d9ce68c97f39a05c4126e7fbf4568fe58f2359b6feb7f3e845eb48f155bc0783e182ae7ab60e79470e544d7d298fc4ce47621e8f5ccfbc0bd732b1cfc28d2d24be62b84d96a77c38768a0fe3fd6fa4b9fe08030929b70a72cf02a562601ffb8ca2fa66f1f1d7d581a8755aa83c402623ef75ca6cac4c45ff098f0117f8cd320f943f7dc4d342c731c1e2df54e6b67574455f594d5711288055b46a2a3ffb07f83f89256ea6df260115815309cd5e70d595823a280cc94401017ac77f4e0aa20aec9f6906a8e5de919ceef01b65d829cf495d1b96cc4e7c752cefc183908ea0ca0b19bace69066afd1876f3c45c0567be2f07500bac1287ac175a4a21d79f929644446c7a5e765db3cb5e1cdbcc49231696834c282a6e7299e97c13c68b2a7c92ea993807b960dda7db0e31a014f70e729c402b9a56be1be9a9e814772b3f566240f3b9251e0a23d2c18a7b9db2a40a79a4072c8b60fdb7e866f408f580d88fb403d4ef31ea13fcfa560d4790acb3ad8f0c552fa373674cbcc1f3eef04e4c859c10b4bfbb0d084bdb5c8d66665879c15a9ee83b98049138e55ab589505c9e0dbd2587709fc293858a9c06ad4a9896c7115b63fb4eef36a818d926e182143af24213b82fae9b9d333df44576c1dbd06fa18ff23b8b08fb22668439c0e42d2b6eafde6b8ce6b0b17353eec81dd5775a219e5a5b70300532fcadafc7363508cab272a528fb3cea1478b7bbfa855228d877060e352e12d9e1e2676a48161ab5f4645648eb54f4aa2e068cabb99115cc99c0d516c4af54ef1154b9349477b4dc591cb8294e54865fdef62a7a99aa65ae6c7f6654b2535dde9825dcafda3345f00ee69388a21a1cb0c0b87311c83f62ef25eba409d51a5379a5fdd4842e6be15ca7c35e42c5aa96595ecc6994d3417fdd836d11d24b2c2f615bd879fbb90137b04627b105076d27efbc4823d0d1a311524d24934487515d77fd85c8fbc31c61e1b37cc13fb7af7806d055076c92e0eb62a6641a2e317aecd34a298d732aa8cc2f489eae4ec0206690d7b25c7396740afb6932138e83364f21e5b9585adcd32c4ab05e9ac24a544560ce3028128162502cf8caa7be563dac7fd183c7cd2a917fafdaff93b78c43be23aa335b9f96ad534c511ad37212e9be5167a617007e19227c1abc5292c1c9334d5438524ea8df392e86444374b8b847954a950ff31767f5147a40c0a9c527bcb2f149a3217c85a40b7e200c4b73cc0ca96198343914b89262752c53a7f880a9e3448a3cf959b0adeed2b729396e6a6aa2104a5137c110908ed79439a8d85da276b5b0d2d5e775f4ae0dc9d2333f7f7394661c4ca0c4b7d474448253693f2a4ad2cc859fabe86eb9d3da489bc4d616a26a53d14d253ab7fd3a0a72fd074ab77932c766705ec2380bede9db66fcbce317396f0038942060d2bf33d5aa21bbb707ec2dc504c1e8f30236095c2be25dbb6e2456966bdef6c5c8d4788e505c164421314ea7bcb16cc51092b75a83074b1919431e51dfc15f3d9a7395779fa1cb5932d8c52697aef7575837d798102da39b521af745860e00e2e761c5dd0e9787575ee74df0807a6d561d98638cae204483a098945b06c29015eff49d00b71c268188e660c6f2ad46f33f5d0de1743f0638e2afa1cdbe734bf84de74395fbdcd27fec3959fedf4c7864c98367f5894504c2f1f018ac1ecb6cf2d772074306379bdf46072a02f5bb656188efe05cc555dd51d4ca0b5a4bfa852f7a20c529110e148f8d67e3cf25afeba7bd041e5b2263f2b67a4f13101777bb1e300006578147bd6538e7c8778ceb0b78d81a666d0266dbe711a05f59476cdcf1073bbe50d1017c971997df9f97f6221a43dac0c23f07b480e3621d952b9d73203731b58e4bcedb43c62f7f01890cda543fd70fbb0fab6a3dc6e4b27783b58fe63e9616fe9477c6e88e09a0ec43f838f4d2fbe870b505f0821ec82888b53f06c3203d6880071f09eb07eb55bf6ba6544bc492362a04a400d36e63eca255bb61f8a2862468dcba4c1422f02571d28d18aea605aae9b111455b7831fc75fb8d800ea5a38500273f1f0ed30bac0c374792f7f69fdede7987b069ebf4780569c8274f841da2049ffb49ea4de6522d54eef70348e9a1f20e4b59efa771882a01fa714b9056d7243bf8f89ccb19b7863e265b327f68373ede2a81028edd700e8e8c0f558ff4a2859b5a267de30fad5d13db9bea20e29591a1bf275dde6ad6b35762c30453677840441e54c77301c70af71ab714ad638ceec15d4bdd2a8e0e6b8ab063b35cfdd3e2a7a9dd1c1adba67d63a0ff9d0bae750a8ae0f006d7e18e5eed4fec009238c9eb010a12003c085eb5c6e726f708d1a0d228b9257c28c99707e9fddc5001558e4f01e0d65a9f669b4a71ea3e95e209dee383eb728be7345db7dd47334ab63313f84247cbf792e46de4d4d80572e336af11dae2a2a18f2b1a11ca1acd589e1b86419c42c107a78bf0c1126ede8b107273e135484fce0ff7ad8c4131e6297d02c57c3577eb9ef5f94a33dab6d060e5a4850eb044674b1b1a9cf5b2d9af32f14f1e6e74404c34fb8b0f209765d0772027ae0782d9c1f0096f8aeafeceb728884c70ceb666ca26ffb82680f00d4fd99fba776fe837dbbb4812a35f5e1df087e3aeaac9dc02cf330c6425e396e1d1944d76f09cd5420f505afa911d994daf0eedf8f181a35877ff782322e962c8db371c721f1a74a4fe74675f303e8c50ed411b972889cfb1349300c1dbc7c3edfd591346002579214f915f5452b300e556e6c5f36d6b27842bdb6a7449c87d1d4a126cae25324714a336a93395bed1718e888af037223e6cc227c59a7bcab889b37fbde63c66e039779462c17f78638e16f7c07707a00dc798ab2aec09bd5ed42343398e8b1da93a91023225bf4c69b3efc6ff175d4961f48bfe1c722a28ca752b01f8262a65fa98cc79a61dce7afccde7ccb0db7e76108c899f6cc0f2a4c4da3de355822d8084ef5e18280fde9502aff7a4b5ced4f40810ac6bb132335ed5d35a165fac296681a91fa178d06b05e490cf2d1ce41d8229e586285330d299df2fe04b4c287940b79efafac3568486922de10ae32d8356ec9c95fe21b98b2a119cff380f907bee4a3d78ae40a35fa7df1ecb22ce989b99e1d979f97ebc7ffa2023fe15efe88e82622b316a6094a24c238306214b9ec6e6f958128814fd0788dde5f320353fdfc3978a1680907c4a2d32201df6659ee0cfa0e97c011f83e4650be73b19e95a48ab3a47b3678aa0ff55a47e7b53cdd33758a75ec41b45dfebb5930425c69d9f6dea631dee3834ff4da36bb72731e713d57afec1527200c012b40278be704d69dc60d73d5f3311050e4cbaed4249f5cc9fa241553f06969bcc2f5678cb65467885a6b6bcff38420d195739af409b49f4a02f112937bc9e707d071cd70274273e1a860334d44f16d23f208fb42ceb8ad6acf73c550edc1fdff2b2e0b2c074ec1de37ff24337202b2f5bd535bc2c3f09fc07c2be1bff91331ca1baed9839bd0af173420ddb937c1dd739fca179a96222932fce84803b6c4182ae3b58b00fad9d633c372570b2d2c9de1febb8d22e65b612ca490c20bde2c6bfae695fc8e324a3f951f9159837ba1c40874f97e52018ac06e9dacb4e2ec9afe64c081b641d0848cff9d657a1956e73b6d2a6a790d895853831196ecb5edf3ede09f2791daec244666850621f7e4c8c96aec4087797b604a63213dc8df54386f9a29590f905bf4912e69ede8fd3550784ed5244bb089adff735c7177df8fa6fb4aa723788c7f17bd6062caa8336b17626c94a55eab024856a09abe615526b56d95b9ff9e80b4c01c6ec16a9f58c29ff3f917dfed0c47cf15ae3274c4cb4e32c91b546530f30499d399cb168b94dac88c7fd0d71355c8c92e94418d431171238207d2440e035665d6c4103922bedca7ee88af342afda833c65e34fad2a998d5651d80b1a03bda35551e7462c8e833c210a807ab517b6562e70031094bbb54ad9d1d160c77f78066db48769afbaa85a644085c24b4c773a26115d948c3a9f26ecff3e9d3984cf183af88c8ee6138ca361c8f43eb13def2c862294876dec06628eed2cd03beb0867ef02d68da2e1823958726836f0841f6988d18c8a3a59c6221b9a301b915efa02582c0d703c80a2623d1b5d46f8f842f6831f68b24ee1abed61a4b432632eb500e43eabf5e70d7f08dd9728dd74feb7194197c00757dd23304ff7a4e0003814f9c4dd4f10d67fd23a8ab3e8bff38b4bdd5da8d3061dd396bb2433a782ec755f8b1ae230662749a3a95f2484845b1c8993c25aa02021891c4242d5648a3a1373d62e8142d2aefd7c2c10975017b209414c264ca839050393dd7d604afd3f1cf901c34d62e3839a703c47347337330a6c5fa329ec29c7b03f880c0885f690264eb36b663f5c655edd7999419bf9b6c9efe95b17f13ecb5ae0a4fa9ef6214f8a9a9afd62f2b4eb5b762305c0484468d98d482eb818b8b694787434ce4d40c80683e709d337948b2f94a1022a6b53cb6f739f79c7594c1ac137a11ed36eaa64ec94d06a5f085b6883a5fe24b3c63714b37556f27673a2ecef8ab7be48dfc7e5253b0de0e0d99df64a7c674aab3853cd87039786020ad7d421cda673bdf595f4ba9a5cbbfd2ca06ee048ae5ce7a5decd1d3bd2522cb7fc44ba0f413e17242600a62efe9c202bdd0e6e4fcaa151186480b55e39a692fd95642a24c29908d2206c175c3740da00852e4dc7559c0353457957194517123a1acb1e6744e417e33b0f8081d1570051fa1f45df0c7c8bee355d78a12fa8a522790abacc4857fb31c701fd339a7a1b9551e3d394531e3fe1ba17c3cc78fb761e9209a65431904b0123bcfe77e11ff67fd7a8eae7af9ebe31b2618395629810c7ba2e065cc8a8ce9f478545c3fdab5e7f8923c8f749770874ca976a67743fe42e395a943ab8dfdd443b318d7fc68c6e4a9aabdac07231c19b07e1a8c6f94e971dccb0723712d1a7779e2f82961a66e801f130d48619a690a041a594898237c74e23367c29cb3e512a20ead9485a4e7fc8a8fd597157ceb66ba3535aea600038e464371e063a6936100773a833ea1a19e18e48fa84e4233a882d796e2b2bdc9ea8a68504399af7ce9cae834df0b4bc5d51a69751ed9e9151193227bc663dcd7a74778022de8e70f68602cb922ca6ac25bfa6f2898009f4ebacdaa9c964385aad0257f0e2de98429ba2038cd5712f6899bf79e59d7fca29779aa18e4d067c52c5c63bb18882a05c1661498c5513c6fd1317bd5209da2bb448c0d6faeddfb2a22de30a2d0a397356ad4e7d5203e563a91a794616d2a69be7499c1d5224254439b23123a6f14642290172dbb4676d0481fb2f997712182bacc9eeee2c7fe4e2fa0c6dd6510c801f786b88b7b77e3e2a31e5b3726c6fe911ce9550149fbce4fec66ceee642f26d83688cb8f4bb9f0259c989a13eab242d29debd672ece7627518c281e0e24b116cb0a8b7a8efdcc939b989eb0a28d90666fa2a1b031d85c33546d10ab78c22317b652ca2312620425fe19cb42f2c2691486162d23e40932cdc8f40ed84768c0ebe99f14ba21976b1e11f1d8e3bad2082834fc635662650db42e5a0cb40f07e8116bd67f70f18071ce6bf6369c396f6f6ae3fb9e269c78934a50d645dc5732002329078c76cbf83e7b24542147e197f77a22551c4dd58324d4b6078b7d1eeae12973a83e908edb10b15ab20036d98bd4e6221fc6c924f03812326713a55335673a7d5e3c442b6855e3ae73d24a7b8ccfd33a19507af515669b55ccdd955c8c21c2df53234b27eea697c401ac5bd66feadb640b0fbc8853c53af701ccc3901383201622a8511cccfd5ac729ab212d03d202bdb62b807173b703b36aec49bda504d4014a370d37beb3b2e288e52d753d4a21095613cc16633e8b68b5a32da3ae12f1643c1d19bc7c3214c808295fdb41febd2cae473a343967e5b9a1a88476d5caa668f276107eaa67af2d6c9f1b3c325e0eb2aef0b15b8c7e9a8ed403a06077d44c19166ddf671358814aeba621acd174c548a2d1356d1909c591bc85b2fcf1ddd4e7ba7b54f63a6cb55de0711bf0f6de6940ef835d23babaeeb2866405dcbd888125a6c890bc3a50d526843f4103cf4e27116819c688abe50fa422f4b10559ce738d27ca14def080a86cba3f3e95ef4473d52b88897c241c4a5d57aa036e0128f7bb81c0cc967ee0ed76ee733c8739e967ca168296323cfe939ae7e019853f0374ade2c3aeb216ec4a93ff1e74708b2d6bd2c29994b2206e9158c6071da9404d974aec6832131c6de5923d96db1b44a493f217d7da589da4405c5b395fb1011f8dd7cc3d283090bf1d4a75859c0795b43fd66c1de153f1dff9add7620c6349d42383e7a13d91d107c9140df8c3e6a4167f4c37057f27f6a67c149a72a2fe72174cdd0cbac754aaf11b4c31b93a1e82c141c44c0b3d2b96da6aa3a33e46b108acb158438346aaaed22fd310dd734be5b4bad7b237f70c930f9f2b1c152e212e0218ce1f466f5beb49ad90298567bbc34808bdff9d12489cea40c4e628c7e7dadcbcfaadec733ee4b6b0eaa43160f0b1ecfed54a5991b4b5785749464cef10e59442fce8fcaac2e2216e50c431d9221681e621ade562f7edbdded991ab989bdbc28ad9c339b269946f73b15d052dba2ab415c751f9680c65f41258f97971feb05979f9c12ca447f9f9a80468c11ad8d00c9a91163fcbc4a235b9eb59c2b5a2357ccfa71f1aff87a2e859c297c939cf328d866ebc945e423d88aa8022ce256262972c958a216ae640e29e670b714ba4361716efa7ae167dcf8bcb4448d43710738bcb556a8d9b3683f17ef40754fa92c0fc89cb3143b3c13f3de82a4be2fff0d0edc0e1b89241dd44b7fb70c57cff88c565905b871f1c2e568da06b4a31f53bcdad56136b03f5530c4407624ba5d5a92d76091e1bc82938a3c3af002959b09e2ba6a02e69b5eba7d93213595d281bcb865d3536a586ea25b6e75d2ac213fab87ce58c5317a056fb44df8164777383f986bab0eab307ce92a3aad7eb2d82069f48b7810d6ef21504edd0c39ada0bc1f15efc2722cce983eedb8a7e8a1526855c09b812c6a2a3b38b35b65494a97821a7dcab55ee19e0c3fe512c00131801426af57d754f604063ee55881cee14a4acc05dc6b200b14aa858f11e29d53e8c703b9aa0255c8ff61b9fb7b2f2ca9785791892943b2c5d66bee7648df4e281795db346299706af21c0a4a457224c4427923d0ea7ceef0276716d2d8e4f925c7130ab45b6ed47bdd9ab16460cd81f205831f1ade2f6e68f8700fc07116400723e9b6fe8da6d81af46f2a2f2a552ee909d5cabc6c664527bb6c07ca4a2048b4119d0416186c5f87aba070bcdf289ecd835dd172a57f69bd60d0829ac80ff57eb05ddd46d7b5753add394a5b277bf4da33d6392f853f0caed6bbf1218b8b4ca047696d1d1226d1f952ab5dc798d16caa04a2eaf43a9f60d7809449bd747480f7da08f55a142914cfa4af2ab8077e221340defb4804065365886f3fcc6812e9691413b715b645dae66fce1268b4dd2932ecbb51dcb9de53ded9d77bff5239e92d2b433a9d4f3b27dfe1a6df0f1d283659cc5a918f7f280baf2e4a8463de4a87a379bd576f160b0d5e8826ac520954f5fa1dbf5087492f96bf132aa4227685888437fccc430ceb13748d067f264eb515065fcce03ffebe9b43f99b03d24e3323d3a29ed7406165406c3f52fd80bb2cd87103ab954257d021a9209c61212d5f7db6395bddb0531c00b9cebdd6dd1da065cd88f38f9965fc3c71b0eb76f12a33ae961be5642dc467cf25af90fba9e2c9ca51badea25495f390a3f35465ab104beb393ade0641bf49ecb045c1e5e98cc38418f579fbf68c299d4cd12b2a95b7f18c88a83c5f2d38e8889e44a0e097d6a2f917a3665e21c2d133bdaf89488256a377a8f6adc1200743586e39c5802542a32f90319a95b194bcdfa16ca27f7e033cb6135a539dcbda7d3fd719081a26ba5e3648d09762e0129dcefc787fb4a84e584d8ff2a05dc5952858fff77edd7a79c6ebe20c09c129967df9d427d4fa7e01a527f1685b59329e420bf034d54a22036ab77ec4509f0c9b220a8fe2a448ba8eb71b709dd50f635ea4e76966bb49910e09906d0dbd5687326485b36534d46c67e5229a76fe2edb5dd9c7f98f8aa6513332564f875ba4b0e8b282517ca6f7a0242a440ded526d55878fb0c6cb4a645b46d2d8d8c5e50221f94b81782eb09a0fafff4aab4d58dff6057a62f3d3c808a4c63d9036ad141a6788a09685cd81f82674e72db4aad142f8ef7a162dafba01932f8094bf1a2e5464e0ceff16fdd66c2b30e2889f009281dd853d4001d5208ec3585966de243f7a416cd16b2dba59552e2fa2c31491db1f7f8b03bc9e1a92c9172bca97849b413183e7f824b141bd1fac478b4918082adddc75fee629189eca96ae92ffc7a37642ba951b184741468d6822dea2c8fe5356463805dd338db816a77a6c88e20db671d07ab49c55d3872d56e0bd1c98e9ea3142c10cc0732efaf1e8761174755231d61f40cbf9ee8b0503b2ed41cf41eb399ea8ecc0a4f5cfb32a22b4a9f45d26de51ced4843412596811f2f49227cd9ef11d79fb450e0e418cee8f88290292bde5ba90f714d03ec2fb1ee6e8487f3d60b333e843377509f02337533b00d981ae50117af2e24df3d7176e6903353314308a17aad3df81dee1565e4ce3d7abadeb413a9b56824f2344fb29c44af56d2013e2d56e3eacb263b582761bcf652bea5340f55d763f00085d51b77fc28b4b362cb47931e57aa2f00837b2e89c7eb540a45784694c64eee8b1a1d32f4686f79e653586533d445625f5836214dc62e31a0672d5b0b2b4446f274c75e87d68c0a134430f64bb6c8c94bc23324e9d9218f901b30a59c28ddb6db944fddd7c43f11580b1de2324541d5417ec3b4959a89aa46811ced5bff3191a7623469c43d0e7e03febcba6d9cadda8f577d63c14579442c17ac2b534f684c41c5ed0b2fc59d0446d19d81278408902e32ca573fdf002176a187109585da0201b2c2a493ce119a47e3d732eb8c0f94296815c8c5d9738c008f5c7d1fe917f11b283067eede81fb4bc14d382ef879e5973bc885bce0f3d13b6da20a8e7123fba4f91c5df2941226e79df3f4aa37ff67245fe7705b9d04c1283dbd809cd132261d84f0e08f11aade41a9863a8b0ddb6326d768fd1891ee3165bb315f795f321c94ba8420cb7a0d2a6e7d68d4629774054ab51eb7685fa07a48ed7059e8c47dac5823d6a1e29272d6cb10e7fef9cd6cddc87061bcc9208ffb0f8558d534a1904739ab46bbc59d35f17ce015e8e743a05f32dd7a3c2599cf931befe56df486ed8354704219db0e714dea448138fd2c9763c40131fd7c6b43273a1ac27099ff1c9c79e6173a17b9a903582271857ef875a55353b6dae9a43e22064d3c61d57e71ee18f7def3627b9fec896724dd2e08c046c412b33fea387bf0519a0276cb6f307cc4fe5ceb51a39728780c6b3f2a4e254912d211af00498982a4c6661913c6db6d40caed1e2980239b1383482290db2217ea61b73fa2512ccdc5b0466b8abc9a8923f59b5b35e07a6b1accd4edfda975fbd0a9541875963e4a5b8fbfbcf8ab2bc0074cbdc67172ff84fca1667cd9293ea7dd2c0ff8de67c5789495ab1481235ca34a149a567e466314d06b2da26b5f3aae003dd3b2e31bda56e7d089aee4acbfe95d5be058e6e4390f56eac5a1ca98ab07dd1ec1a953d4ece9dc51d87795e640eca7afe6eab6b970ac0ed100b39406549030a04c594a6cafbcedf1189398dd3329f4e40b8165cb48e55dbd06857ac17789cce254cffc26a85b6e48b1d938d1c3c473c6d36406f8f0fbbf3d41b79906f4151e5eb02bd8f904d78ba0965289caf1014ed8ba2ed332cdf10ddbf45da7b44ebd46596725f08bc94558023fbeb7b1dcccc08a1d50017ccc0cd2554481ea5317ecc45f1d86bd44db3fe7a0a00e2fcbb632d180f98ce88cec59ac89699e06331273ac72f8aa2c04c0617a3f21eb89c69fe68bccc17b79722f27c7a84c2696626d076ff8aa05fc5d1dcdbd5f372e55c995bdd542f9080490d4885bc146fe9499aebe34ad239a6a7227a8144b2766a21fd332cc48c8f34dc49bd545bfc8fd9a4c2096c415cd8536be379af548b6556a7c39e3b5bc4d50f9aa3627aa5bd470e68143eefc363473eb7bb5525794e673bff3de1283dcfc053b34d1dfa8acb099362c330bdc936425817052002de2ce6ad0186c24de4bf44fe10cc81e2347082b7616f59518b445f1493d60d9f28a6898bae9bd26cc9bdc3daa90384d8f24abd035aa6b174ab5cc413191ab974aa9bf902c732943ddf58634ea401397ddbe82a3f61afb82a1a8e2114ad3dbf6a7bf4899d855d24fedcc366982f9be6a6c14e3b644c0fbaa31bf7675ad20cf380db73f2db797c03f74b53b6a275e28fa0c86478ea1a8c2c8c7865111a9b7cba2d748dc7b196bc5af66c74296f7394ebe17c1b6a23eaf60f653b9e49f3d2aa9fd9b25d8e68bd5c95ba62b91a061cbf8f190277ddf879e37b6e160816dedf14416136b3b858860d5a602b72b105b364f125d68a9277e292c6c205214dcda3eaf3e163ba4a1f93df616c9b4c9c2e6966b648539bbcde1c58adf7b3fc7e2361c7ecaab8546398c8a37d5e5425365eb6de36f8c66401a2db1acbcc4e6aa89ff439e942358b181d297fd3294e195fc5962777dd2a4b0cc5eaa0913691bdd6e0e3cca784343ff5e3668731e9f18cc61a490c21e0ae0b492942aaad83caf7342779689d883aa77ecbbc62fb031548fbd83e2cea5bcf02a917526dd63d27bd34d366f3b195c0ecff993a4dba1375bcd110f29e9a8deeea2e26ca2abf0620e01e62e8138249fa324877ea66ed14d0165b121f3ec837492c711b4a3c32047b8e6fc796c8ae6e7c9934dfd0b8ac042f61fc4115a85d646541fa02d487b77ff05829004080fd01533b037565a951527d5d9c5b63e8d03a740d8820f0f1cdcccde68387ed81f57d9cd8be26575831beed4c605c0b0ceb143aedca05d9cdd1bd9ce1c9e9706ff7550c5f5214210923f9ebcf6265b7ade4c0d4b43573481d666ef3d31ff906e5c26b3277a7bac9fe89311fd62a12a0ab6822a3149f8e2d2b0d0c4945fad18a33eec0f064aaa5438b74e461211418c35fbc7fcf56847d69a1fd1d092428e79fd7c4c181f9c1deb02594a3f8e14a62f8d9ad234e5cdfd5269e9c5b556989a1915c14ffd66467703300985746f86c4fc3d761ef7d956460095db6d39db98604838b7025cfe480dc795eca0d3a4d9614ab8706a1068984442f1206ccdea24825dc0aef6396ac36c77618d6350e14e9a649707393a47d28a640546caa7cb4f34275b6cc0111f55d2c08669370521ac5e638308536f3298a1940eac756b260cc1a8a3597aefb03ab0dcd6dfaae381c6f15007a74250ad0286ac564bbc60e9920629a48e409d3a912e84e99aeff451df6ba0955fd69761982acda96cd23d2a71f5901b6bb5dfcd09a7b241945b2a754f37f434a1a29f06c5f1c8f470517f4808141aa0967bc2fefe283858edeabd847e95348f2c7cf4049f345e56d5b450d2b1fb4cf947bef4db4ef51b7627b7224aad18f65c7401fb47f1bf412d61db04eea6da4f4ba5aa35e69305cf88b6878577ad283067100ea4effa53f9ecd28b1e4a41f084ede7f0d0d857812e5a863fddbf3a804399814831d41a2586c36fece8d529157906b0462b55a34956d6cc698bb04bb150dd1a95090ea95ddf599109a0c48f3122479de45ec3dd6f43496fb48cee5a9edebcdfa19df394983c39ac53299d90c26d5fd307e8f948b946be537139b95bfed0ff8e5a5c3ffa67309f501e5c58905b1f068a71617e842347eb321796d4c6deaec3dc75b74fc4ce92ca5623dacf5e1fffad29e750716c5bd451e2bf333def1c39c514e737b3a2c63b0bbffd77ffad4a5842bfb203775844098099a8a04798ed50d6fa6ca27206bb8d1ecdac35db8aa8c784c21f7b2f37733e9b68b4680d99572ebac4032ccb9b0ed0a28d15c7bb401c5ae643ff680f43b58c9ef1eaa54933b8e6e1756fbe4ab89459ab437faca34d1bfbf597273cac15871ff778f22007a63d43c3bab84c8081158bbf3317dbded32e33be7ff13ccdae9c57688d9c01c26e6ce7c39ea837b224ce99cee06df5be437436ac9ebab9d39c5bbd61da590fdf9d9bc7f21c4fc24c54ef29e216f51376ce1d43dac762434cd45fc33033c0819a9d76ef09998096fa631eb9990e871d5291f04fd74dcff9baecf558b8880b61d0cc7d9872c3515999c8f3d8b88be0afda4ec60a46096ae8f468a14c984697764059839045489f4f7c757a3952181f9893f90c27ed3ba0729869997eee8768cd2fd730f081ee8812af8cb483596548db654a45fc12cf62d076a848e31bafa2c2892e8021f479ee532a1c1504a668c44ef11a86743eada59a00e4cd55372f11a6e297423687b7fbb22c2e0725b007dfc04842f94ab720e36707f2793a18c1a2eafd8d9b8efa9898a0294766b993fd49b1da405a9a5f319978668955f122d1e8e6b9ca80cf352af4530088031721329699881e7dbbc0f5c77364729a1841ae982583a03f29b57703cf6c0f220107e7bec52e7cc67365ac7333e035369fafe50d46b143f7edc732fcf2e4e1fb625ff79dbc1e00af73db3b26a19a934ea78c42c46c6fe11a789bfddaa453933cda28e574384ef34625f6686da22f00b6384f1be14312b4f2604ccedd01642a8511779766af3c1bacca2cac5915902b7bc392f2a98bfd9e1a0778c506a44e39eaea637bfc6bd19a97ec2d1000dd0e195a72e0f3063b7b3e0165082a9ef65af4757a0b31a235b4ead01802edf9fd52a2464d6080063026c26b3734f9af9a8622a2d01c0d2889e2c7b6f057a4e4cac056e62b9cd25c70ca5aef73ed9e89db0421e294c97e4161834dba87d3bce0202c891478bebbdef9dc7e790f38f83f3388d618701ed9078f3b4de1117bdb13b4e5055fc0f69f0523edcaca1423b627df875f1f470e1675a2845f45e29a23266c755b8a1aee22708bb1cdf30a5e955e84f3704145bae8ec62c81394b9ba76c6d093d80b567568619c92a1deaba4a342e406ebc1b6c0dbafd7421e8f647ee7248634628dfed6683e99d4cfc5ea7af9f6a02fda53b39c4766e0ec5f8daa8b7376d9b30c6e2e779b1140c39bb94af3e3e11137309f9860a49f5df12af58bcfc1745d79f34131ab2509fa807e1c8579772f2822d4c154551948e96e34c7d0bc33dc96a1224ef6f2cef79b5b4e2780dbe94f637943cc804834371f883a14e75d11eeb880860d53fe36d2b6c84665950adf73d5eae3424b9361a2750484821154f9f07110bdaf15282d33786be836284f09133878509d322415a7a50305c9e51d07abc79a5595e75094da1ac6724d8ce81a6a10a361ca8f1594c5a38522381b3f53ec033483d6ff43f127e7788b333c530cf7e3486ca9f09af56128c9c430a9238a04b1d586bea50f9da1c33081c25faf27fe7c21378e424f4143c8c2a6a835d85749a62c1e4983fb977355a77aaaa2011f053f1173c3cc2d88169d2e97a8d3f14f93246c14acc70625eab056ccef5a48b0578bc11604fbbf74eb7dfeadce113fcabf02b8aacd1918a9f899c2a168ff9eff843531da01f84916b6c7264fcc581ce630eaf7edc65a49c4b454792142eee9dcdf072f33df17009ad0b50b32e799858749a325386638f93ed8052e357c83c49fff57f09fb8128f3c734a118b7a4d3faaf471680baf8f8c2f42a38e29697fab213eab35c1160f81fd42c70fe371c1b0d81e828f2d599f09b17374b76b31bd9da33d6bafc17c7c4985beb5ae1ecfb749ed3864bd6a4e0af79d132366c44f39ad195eaa94ccddbd013ed17fe8b528558d86b89956ae2caa28066b5b4e9314683a6c49f89de123a420d647983822275f1cbf96318531c6316481e9fc31b723dcd3bb6846d628a9b8b6435033361809cb58cccf74e356a39f0714a0da9e01f33cf4996adcf304c257f9e5008f9d37219c7c1fe6a21f6b7e801b16c50b744f508d1876c35c2b87309b2692d0cb097b52123e865ebeaaeac4017b7033cc90a1dbc1e8332bd9ae93ad140c301a55e1d698285b914169c41c19d4fb8ee8ec4edb85a76cfc1bf74afa6558ba09a0d936257f63a6389cd175ccd3ddbf9986d4aa1e181a87e15324d4027a572f1905d4a0b2aaef6e4d00ae4da87dbd1ae3d30f3b18ae8a31d857db55717f8a016e52a3497e4e105ecd034aef59561cb5fa397259ef38d631e3edf735d2feeb553c7333ba85b4dd2391bda2c6b6cfd0d78147c61ff9f86b4405a01bbef2f2c2aa45b8352143ba538d234c93738311d108b02d0e1abf07c4f4b64022bdc64d3d411355e918db53b0ddc65011be2375f563724454d064d0259e2960a632a074da2fe9e1732d55022285cf6f792539098b5933840b8af993be4e96d795368abea56770dbc9a5a063c68e84d2eb5ca212b6bca30d00edcde307873440d68eccf84036d520275115a3f85fa7a6b8468684a44b519fd75977287e0f3a79f9a419e3be0e7f76175b9603f0a29d9ddc40158c901b72212228c51ea75e722802ceacb54da395050f687b58ae76f96a8dd4730793920f1dfa238e54684991313816ab94b1993ed9927cea8e3e3ec548d61ad20846d9a64235efe6aeadf761410d036d1e8f64de61f1705b2043a9897444680b5637ee67e1242804e45f57584711fdf3e4850baef38af393a2d4cf7daea3114aeb2ac57771e677c501ab87d8f5f653b2ea1aeca646aa5b8938b07bb2bdca5b13762d1cfd0c44eaa8e494f6bc43a80ef92973bd1cf6ecce3b1cb6f852e877e8cfda76f04aef2431b0c2e32a41ed6af9d20ede605d033c7bcc1cb806477d3d325dad1cbd2efe8db593a254747cf014a4d0f82f49555254e7c61998c69a4d7ee974ba94ed433d329879e021fc041151424dbdec82862bdf9bd389b6bc122e7a44bf7f072e3158930349aad9ef2856f39f002642a797b91aa7d0f5b0423b786a9435b07283df1cb2719c8684c0688a5d9b466ed2435f8d12bd9a7c70021489aeb112b29b550efc4ec747ca1bb082bdf3d760c74e81971c68f6a74e885431410811ef21d2d4228dba66612350276dc2a09a1bd5e112553cab6ff333e49bce86e893ce4a8265b40a369cbf0fa08d12b06a02ab306ab8f3ab424b9f02c7f8d5c2cb65d6b197fb22d0e305e662be9d7e62170f4ae784dd6988e4d7202a19ed5260a678198daf8f77e347d970c5487072f7e02721f8671fdcd89eddc02c07cc1e5261726a471b18ea6858282632ceb601523a143ed98cc3d8027053b81ef00ed78e661d6affb2afab291e88f77a25e1f09aa398f3f22a69da536fff372aa4e9568c3dae190778d4fe14e5ba68bf132709bc8e29cb20827f907c85c3370df3b7feca3770106607e83abcfc3f02fa42b07ce453664f34f54af30fb59800988a1e0d482dab1456dc5b13d608ebb0768854c208364e5a72f4825805f37a023225f92e0c49d43fc662335ebee1e435537bae055d77613e13b8d2943a8fc7ad55087034a0e55b06d8d9c5a0f004b814045b7a65df7d2016c3cac6b5ef2cd0b50dd3ce8a8f79aa736406eadc8f954abfd1457bbfce079bc12364f106484ba4587c9cf6b3eb931eab74b5f573e1ece71956bf60b62b70019e48934fe4cc5d530658628575cae81d47c60e3b78d0babbd3028766f340036acf3a393953e87429086bc70ce3c46d8b7f4db7ed706bb6607a99bea86215633c0976d3657a6c76a8961222f2b777863419b0c3996763de64a1b360664efbfbf41d6d16d0d80ce63f23bfdad1ae04410700ca7a96118e49e5f03a07acca058932430358828ae03d0579781a80a58fa2231628e81e0b6887a370f00121d88aa83fe310ca9501e4d6eebd55c90066c2031a328e3efa648d9036efe7bcf001a5808a09e284ee587961534c05dd10de4a7de87e720ade38404739f707770a00b573bcf3ba617ecde2edafd24af71a68596489707f34f493e887985e8b483114dde463154aa518fac884f6257854b18923d7244814d42eca8dc9621e8479966d850c62e83d7a2029b74fe7b8fa09e734615937b3c3d153305f4ebbcb5528f8dbd7dc8e38af3b9c6e9f5136b9ce94222bd1803f69d259ea4d30e4d2bc35407e8043f64435b18f774453af7f6904b84399b3b1c4cbbd1e74d3f534089fb0bfcff7fbabc777c751fe110d884c6d42ab36664debc874b26b9c0448a79105264f1aae7818b559694dda5ee85daa6243994ef669a4f74f130747d1e9ce52424b2706abf341f66a85c81d71650e1753536e0157d2b72353f8e4a88b386dbfaca547d028ed4edf92fbdd24bde75ac33bd5f6dedfda60e62aaaa9d404bd01ee5412fd04b7a7ca716c20a857dd37016e2bbd4ddd56d747713829fc64dca1ea3b033fb8947eaaf9f2b93c3b17bf0064593a179b548fa29ee50da8a82efb3215254f31343d7a413e48600c705f5153c31def7e22444c164dc22e0b932484633e318ac0ec801bfa8ccb36407ee74825055a79a5a1bae7972d3b3a7079d70149c3183617e5a6e129f1891cfe66cb7ccd0d8589d2fe7be288598bcda3863b3a9f0183bf36be7cdd65211e305d2f08f686a861735e473e08d385945ca8b49ddd43480041701dd5f9092499bbebea540bf3ffd6b636fe1746666f5df735fff238b7572124ed62fc25b4032b62289622ca96a62f015dbaf9a9b05741733566eb2ea172ce9029b09d2cca937d6109c1cc7c572f013768154d432891e2b646c072fe4bfe3fbd733ed216f044f3447609455503563e1d00ea12c6c61b32f83c5d89c823b33a5b6f05557893093c3dcb65c322cbb735c664e21ae388511e949c789e5a3c5d719195b114e7624af26a5b3f4580c11b7ffde4562e41efa2bac7217cd67dcc2c2e2aafea9d2dd0ea31cfe85ce5185e4b198c677c48e47f63f2fa3b12e7eeac96a5e25fea177d935d5b412d9d5676ff7a3a54e6e2359943a6187d8b08732ddbc494109762cd0028c974bd54810b4d634295f2ee4335ad462ae78b69021085fb960d261fb47bba4c3cdb9a8087d4602f2514c922a173d21b57be3d5efb5f0dd23292f51275e27b84f235bf4555ffeb6aab4d15b7b27d9355493870aa99e8e1cb24e2fa61474d2796a8ddad2bb240ea010a33fbf7a5002110ef602cbf50927d73101b574eff111e0e012a682e52f3c7445bbb3abe2b74966734250ac453f9f8fcf00ea1f3193de9baf8566f417075bd67678d9d00d7870bfb3fcbfc1358fae5bde9f124b983e6b52f6bf4dcc638af8d02fde90741cb6de973bf859abb2725a6afa6c1b0e1aee83342a7117317040c7692d9587e1bbb5c04f6437461fe03ff64f24c0895fef9f3c28f1397b9016170ddf621da5fbc36e3eab2aea2b4d4d73e5246fbdc137966389ff5e27fba44eff6b6f26a9e8a654ae6b559add94b673a6d5393da43120c9f1fec17d9e5b2140a7e9caf51871fec6c65659f4652999541922761be4f82484ed110dd1e111b9b42505c39a4f21e3bbe5d7fbd769e387124dbe26055a7a60fc57bd7f126febb74aa7114001a9227cf956637f1db58d2c3ad61bbe2e94f021af19a2543a20b2532ee5bfd579c51363961e1defc726d00837e7f5b5cb2df8174a3b7f08584c2b8d73f33b5f81e8e64a0d2d6bea2630da761205751e9b1792dfc265948b018eab35d11be337f081f483e5fdbc52edd9fe640e87cbec628357de82623eb7e255a06319fa98eea2af4c6df0d95a5eb024243b7a8e91dd794d23b3de559e2ed213d91b24ae55c204c4ae66595bc14ace8a7de8f34a1d12142e0bd58c1460cc279b462b7c41ed7663eb85b46cbb3eb459f70a948b1b62c4e6bb015680e375303e210d30608a9caeb88966c0c620bbb0f513f4193b998d92ceac2d6f1390f8c7cbd10fcde2358133ea083f6d4f7914c686e2bc9d94fcfcf2e7884ed4a42ac9c3c91d6de6ed61b98d2ae0652d074c63831ea596ab3a09587e97e850a207d8d97158989b15bf762b581ed921ec5b9c75b4e86d1526f95f9bc98788a22f1ad80ef1f0cd2393eb29197068c6ded8e9e1b7e2930dcf892366bdf99e0178f926c4ac33561a4cd249114478129382f9740e7f6306d872151dee53deeb35b6daadb848676630b900c57da0ef7dc21be62a1726653d715a9163b1d1bbd8196f334af2efac546e5c36daa3e75d0cd00dd059511e986a9735401225818d10b66970183a47c4a6cc49aad8faf36575cd689aa00cc4b455c00036431e3d0167793093381fe35ef4666baaab397903eda7f900f695fdd0b523f7046434513200c473ec4580c8be44f72cf358657b217d395e004d1736fda934155e1af9fe0a587c3f2fd83698e1c0b73e893245759dce4bb47efe71dfdb69dda212560e43dfefa0a64ffde63dcce1b3b00fb137b746728e3d74b880835293bf2b533b0cbedab3c0f343d8eae6bf46828131acc852afb2941ef2486dfd6c173857be221b45dcce84fcd00351b62cf51f756911130c6b971fd0d9ccdd56c8e8728023ddfd56aa8f107efe27bd3e961f217b1762002da2c9cd7636ad1606ba5fb1bc5020d74282ac04c6e53e7cc58f177b753cfa63765be0248465649832a9fb6461525edf57a5fe4c0a218fe70b98b85ef7d1a8f38e240f4dc8dbe40417d1a2da7384bd1112ff955bc67c6bfb3e87ea8cdb7c89a70ee667dd62f157517e5379e0db150dd732fcf440c154b6b120bdcdc2487bdcc8faa49c142475e0490801a603144c1998a9e5b79ac546695340ffd215b86d2a37d09e3e11c27b56b4edd6e3c73cf625663e53a451c452a8f2952fc1ea5fa54258903967830fdc6d52cc7dedcde29aa5cc03bb00331ea7f1c7c3e38d7618382b79f0aa69ec30354b944079d473d5742f2d2c8212a8888a17a96ecd56e884012cc942bba85493eb4c7fcc6df6b4a178a2b433f99e8fa299fb6306039ff59daac5ac4ff5fa09f434f2b76f45ebe5f6c148e6fc2455ab533dd53c3fb8f7bc9286d2b9af1855a97a62416f396d6e5250d27830ef6f845d3a89342382847a54bd566f1c75d0062ce2343a0107b88771fd53d9a9b54a76ea46e4b2654fc941001361b3534ca087f17da53f6edffbbc31e30859b3a4ced73faa967ec91e4ec386ccd050fecc2b9fcf5780dd89a1736b2f82c626afa2c8842221798b26ae98ca5254e10b2a1ec94a1ed7ebe6667bec8ae065ceab7a1a6da146b1068fd4337f21d40be1ec68183fc37a957c943ef45c1a549de67856f6f69035dd1b13e7ef861ee4e5a819269ccbaa6396823fff9d176104012da7679b05f25016724ac5d67603c402485f8c7f57a99efddd5d58a4ec011c11b73f591ff0a41dda7c465c73a3b6b7d9ee43db3844cb991627ec0b9f77da26e1c1a22e0015d0c858068ec0c368190031050a7fdb12375f1aeced12f450ece9052ea97934d6efde2db3ce83fb184f865d2ece2520a595a20530ce560acd8fe6b7cb0fe5dc4f6aa9a70403fc864dcbaec96d342a83b29fdc7f1919cdc35c35a64ce706d9c6bd4bc26c7c87b36a0e45e414490c789393471669a4bb05053be2f8082e09c5aba8a6c94defa828c593c905b0aa4fa0dc9fd5171e43b8c16bd39701b88ece99970be95feef539b762f45e39f8e04997a146d5ba1ebf73e665fa93fde223028864ebb562af322c32e8ea8a9629e980de41d4f92e85329b88888078f48588144826ded40e7b00c5704a4cfd640aabdbb51c7d5fcd4090e57a39a51c964e365b73690691915628608c2b76bf40069c41931ae11eb618af7c8f67c0890730695c70b7a622971145e246cc0ec26ee64719b21477dcf791bcb37abe9b187a2fa829cb941b51e8d50332911d30c42dfe27c6c637e74a7aa8484c8837e543420eece20d89d5e7c91c6f8ada61845ed5b8614fb72a0b6f3ce85ad69132800e61e79ceb4985d019bad1975982c8356d8915257529b75e840ad7febf14c1845b598320fb1139b6239573cc6a39066c2ff0b2cda44894a1240d080718e88fab88fe695ceb8d3b7ed9cbb31da360c6f50015ecb276729171f6f192f8a81588073547cba7edc88df2f420473f58af62b8c8035253ada5a146051d0d41331c7b392005c77468c0da05a1d51a92e22458b459b83a804e640d80a38302efd84d8b4b7eb116c815a2721c56a8ae7f28d342f0d6eb057e9633d80b39ab672d09568a986144c113c8eada96a0f6c117f85d37cbca80aae41f9dd86d9ffb37b23abc1af2a7d5e63bb85ff6a67896ca76a4c6a9fed32e576da2146a35b75e1d7258a8395ce9746f1f4e8f4fe7d7061c11a69f88180e01438740ae076fe98fc111714b6ed25c3ff1a12acb19f9486039c4aab42ed1636c095443b5edde930ac6ed03421e2e3d63a12f3e107e43558b4bf8b822b8e983db3217212586a29542fec382144c542c0cac0ab5e51b60e6d2771bfa44fa5b16aa95c9a0e0bff2e23995ccde585fb7e2e5810ff29eb4e7208d1ce9f0421864f8f3f4c4fe90a6a4c109b092145794b594f2e2febc1bc36d7793cb83718fad826e07fec9481eab13bb81f6f59e64d06989b32561d2d75b956fdab5e656fe3c82d093af061962703984a3840b0d3c8c283b3594477dd67ba2e2ca4285d9a05e31e5299b72451e33862821e18f2485e96694b2b1c9062339240fd446427600173fad2aa203da0319f7d2e4def01d246d11a28279034ec9b769455921e1f45a89483b8c5d9806109dd324af1aa54b9a9436b2b1d53e09c43f1d4280e587561cf08c198072ab75c1febada535e373c636fbb670ca9147ac2a15cc2946b9ab8736187ed756b81e0e369c7e1e2b4b7c4cc93957794dd3cf592176f00a37dc1abbbd74ca1a9db5e540ac8219684ffba188ee1e306943fe15af9560d64ea7396df6621677cf2bf3b27954ee5664f43da850691f2653a06865126773b7a8dbcb2342c2869dbd7cda1c31df54f10b0a6369110defa19594c842a9a988f3ec4682111b12eb18adc0ef31de61b60be70c8f541d8af210471195e48a83cd8a9117b4de28d661051aee84f1d0c476a7151b6fe84a05a863b2bde4b5c28d04a3bec4d98644c2f649f94187d0dc21b42ee8713a3de394b68fe36f22d322633109effcf7d8ce87840a8d64dd38d35d59eb07d66f7be0fc7d0e447afe92e64657a8209850f85687593349a4a005ce860b902fa84b617c44115c4760dcf7240d8815956f20dd90a059f5c7f897074ac197b073a809bf0eff7f7b27c49c3d13af3b04223d6bd49b9aa441cebfbf8311ceb6421baaa3fc3b623370b19f0b541735cccf11e418fb98de7d4e606655b2f672d22408bae4907383edc3211a6b5daae0fcf693c5f1c7917e4f19e66fd2415e50f896af79568bbe56aa03118d8b2f0bc0a699bd025a7faec227e05f8d7ed099ed4cbba2b0c40dde483b40708aa1d6c01500001ace05bebcb6fda6aab6c4731206211ca756d1ccb98ef78f95f5920eed3d7714cb2e43f505725eb3d4774334436142245f9859911e84448a5881c4cc6efbc4e339d7dfe67513e21182e4a48e83bf40a482983abbccb30acd3e2589b6d456ad1f57f1232a11acec1061e3a6f4a1a52651a7ef5abad662657ab85b35a51f79e1a06b02d5acbb91ccc2aec360484e119541992cbc954fb9fbb66c3b802a552c98de7848b62c4fd43c80cb4ebf645460487243d7bd6549e27b2a96bd4c07e2ebbd77293386be01cfaf63dfc76495a6f4cb4328b8a9d823bda1826fc32db2ccae10af51da0a481c108bcb8e8b961a385f89f9696617af2afa0bf1afacf7d5b7d516ebff9359070111abdcbe41a6a9a71b6f3c635eb33f84bce3ac17917ad0b4e6a3351d0c280a82781afc69d350ebb9262297cf227cf46f1b046a0c6f1036e60089bb9d7f9fb687e1e5578496e1fca3f90cfb832a96cad41ce0eb45e1024cf231225041fddc4007605a5bf06184ec25b4a53cb79c6dd21f03df6e8a2dec8d4517adeae3cd0336493eca3c837b1540757ff493da1dfbb3720848397bbe1f282575b8225e6689f77fac28711992ea71f773ba1a022fa72622e11f14715ad68091ad87b7f5842c36ae5c6a35bb35846bcc8b9853dde17579849f8bce68a952abf840f80b5e5cdb7bdd449e07d17fd310296c3da23fe3da0d10d365b7ffdb72f4b8c252a448eea6a1a4011f2a68ddc3b3810ff0ce381ed4d9c9fcb32480852c5a73eb73ad85f7c359fe921226872d059d849ac484bd79afe403b393effdfa3f0e2eb3e572b40f84a66f6dab4592a5a68ce4e567d4df722ece6b0e08f482c908f9469dd3e883de23607e194317c02def2ff386b5b297959048693ac9954b15b13336a04022838845b177db73ee9d2704ab0b613b761b166c97cc42d93713f4358d205388dd81b5f09a861dcc63a4d05b19cd09655cc80c2215cd782ac370149b083a4b00f580d2fb6f1a9693cfdbb2ac05258a48059b162ab0570915264344645cf8d281ed3271d4579d645fd390d507f12946f5f5375c676aad9eb2d12da8eb721565bf6c0ce7b6cd7a9edfd118a00fd0c515b513844137d75127783925b673ea61958cbbe48d872276066670a6a0c98b30d8e62bcd3ff0a2491c8f580b45e4966751aa482648aaf850e8221b2ea95d803a0cf96f82ac1508a9e0802a5c43fafddba23c258f2a67c8c152fa835af430fd663792f27c6e9b5b7214c032eae651d9e25dca89816da55dba292119914430c9d625242cd8e33280c4f47cf2aa671b9920658a4ee4070857feca6695062fc89c024dfe795a7ac0715923fb7693977ae09c6dcd719395c1aa093f2d72e304ffa345db729a6dbcc7bd546f50ca84e98904756c8696606bc71c4730976f780c60fd373ec932a7d4d10362790d7f48b9b9905e184f82a3fa65ca9622600f83fceb40d9298849e1c9907a234dd22b9de6ccc2f928c99f5ae69aa324a5281a82eb0ef48a6a18cde2f5c76cf0493ae55215040ef43de87bdb6b03eb8e78bd1a1a25b016db0be10d9878d0b7e3f4dbcd77242199fa9783491301a0ba5ce305df8997cc971e9ec43cdba9e64b3a8e528294aeccbe7c0d8a5e574a287bc4aed2fb2ecbb0dbdba456f4cccb4bae018468aaf8a48f8d3ee555b5c5c92c6dc285bc471a96d33b057837b0bc7fad7b161c836e17580347bb80e96c35eacd257fb09d5cb4fd86830322c450a1bf32de72ef60faf37e12e357005145b747620a0666f81b72f830749004af99215e041acd1016029e0f268d654b0026a65700d84b2ec82699018243614e25b32c4f250386f8f138befae021f425c89947d2811e850ed26414b12b18a18bdca9223bf584e78fa4d7321c9eb4743ee84dfc7f41c0cc79848158c9ed913bdbc2ec8c1ec61bb3f5881bbcf23b0c2c5dd793004c86751a40dd6b586d6c3cf79213d166f8835800d675c6b8f0e123751f96e1bcbe484a89f598d689702620605c410ef6c88b626b6fd49df27753a8d3e8c353a641c21dee8b24b9f9f20e3582147e4133637571939f08e97ad2147dd6f33825afceff22be1867cf70bbc1e773f8a769c2d2c155e99065f796ba1e3acaac9b3a47ed836245017f18a8010697b0e80a6b7b5816eecde30398bc431da93bc04298ec1ede372d07fb558d9a571a43cdb38e823feab1006dcfa29e363f484a87b8ea4b1d00d252efec8f97b87a38c0640bfff00c542a5ee30b6d49326bcacabb5ffcf08b03b5edbc70902bb2b22e11080d4e0dccf074ee1661564f244896399e0c4387ff043906bbe8681080102d0e2db5ef1379b6c3438b383f05eae6467df7e053aa7cb30a3cce3beaf3e571d8e8b132ba8fcce0da288fd70dcf2c032a79a05c6646d035a6dcc8d82cff7636ca663bfd6c42e90d959f2b2a297ccbc1c36f795fdc886311e149bb1e0b7be8630eec2f32249dae0e612f84a400b4628b4835fbccb5606dd063b07a0fa48464efa5551981e6c8b1e4bf8382f98372c6212432cc9c198fa33f280ed8dedcd1ce2504a4777f1c3f1fe6c55ae7a6a8947e5775350367d047cd3dff884106da852db993754e730ff206069cc31a80e77498e08f1702e6cb61d9410c15c8018715a8cd2f51f7827205d5cd03ad5572bd975f8c782c127b99175aee476bc3c0153cce7ca8c002c0d816f9aacac3feb52c68cfd769862c7ef2578843fb4f8e2175ff18aa443b32b23916fed158a154823904d0305308980430a6304347291585dfc4d7af3ae0d4de71ae941e264abf216d199072574847d5d18a2b24a0e530a44e75fb5f38011148c13d520642fc62f655d18d1b4d422075f79343854d32085601b27110de7ce4064c5e26eacd4dce9702ce207e3eda9790e8e5aa69ea01f1e3fc1802ef41e9e5f19bfec8d07d9bddb38a3697b4ea2e4b8b8e5b622be6628cdc8599dfa4698e10ba1a0aa3da1cc72dc685d3377243bc80a9f73634fa05a61615a7d85f66d230250699a1f38d0746b80a903bbbe2f04dbb1ad66124f0ded425adb2a58ae7efab69dccbe33370af7f7249cd0f0eaacbc1c827003e783e5d785076b97e7352a25cd119ca45fb3f1b7c0a3a62486ebe649af6e9f005b87843af761612258f48c65bd8cc917be68865e21a48f59035477b61563c45bd4b8da194a798da41772ca6889b0981f042393947707137b5e2e289da3b0b3fb1958d61f6dce56f1ace6d8263f733ddcf805759cb39d1561d34b738055fc14589ac01bd5b07ccf454345511b8b7cb4d9dadf31b0a3f2c885a6576e7ef4b5561e71626c65b24cfd0cc82dafa17227e5f5d79f7e957757b87c3e114275a0a65c2982a1cde4359fd2f77ba635a25659f014e8885c0508e031021fe42402727e13956f1c73e0e4c647f575ce741adb635092f132fb2b65901636a8bdeada08903bd14b5d071a83493f5831bd134922a6fad1a186564a01454c69154789b88beb1e7e595fbd78960ca063a1b34ad868cb20bee9d3090f7ffd70261d9b96efca2f57668cbe1239a2216ee022b4a9697c67aa341cc6b8447d854e465d8ef3d2799eacdc873d6de6769982ce8b2fbd2869ed3d7f1d96ba2db08fdbdee793e51c4b058705112aae1ae75b104b84130b5f5d39d7237144ade2db47be3162e0caa716d3a8b8b1fdcdf2e6b8dfc59eff3865fe9b71e5080c043a5eb782ee38f007ad214956bef4cb5d9d1b5d95f33051204e421c8ecb6d9dc6ea4b04c7c6edf8ca781ae5e02255eb7a7227d0abd9b9ea1dee17dabd0eceea211e898522d26e5534dd41fa867d4b9c97613a0a5696133253a61c07c23d19e15723530f1a71650ef3a6c0de55406148c4514f37df95d3e4a2f4ec7bd1f8af803e95871f1d347e180719a6cf6a614d4426779baa6ca1a720a4a83c06c67fd3f666574f0339e29f635a891ee8fe12a18e303329b2c7a852dec0da405b67cd8d80ce89d902a79104464c968afabaa5678de97ce7b4e6cb422646bc7a88248295ae106cedebedac1d62e75edd2024a28eb7071d70f0647bb61e64ef2fb5a97864c006b1e6c76b910a4b27c46f9ec32e36d5d3573072d778f390912629df399c854805258c1b7148a46926666b59b713e52385a5d1d71abfca03807a7d2426251cdd10ed3c50b6b31b158ed4d6f6240b55398ac2c7d9655a919ddf28e3c2b6be50f4085a2b318444dee92811e5c9e7767d6c9cce93b3d2d2b3f858cdf2da00e14f243af15f3dca8433bb1c3fc75dd158af1e9abf5dc7baf2b749502e12ea70d3036051c857761a48613b80ac39d16bb6727a113401d26989c5f3d73b877c10bd8f29e6b7177b4c990fc89e183502031f1ec0f1ece7e846dfc2bf775926b17110f3379d4f1997eadf1241b86dc9a16e1dd62e1bc904e96f3aabaa0919d5e370be550509f72f3ed686a28306d17340c575ce2e2328b1eb5b84d3d53c2d4305849afcc50abc36b03181a8b61bc1eeb35c7523ff19649ee958944e779fa9987d7ffd0a204e87667885dbabdfdcc3ecfba872fe28654a77b31fa2da94c9e20b01ac51362addd8ece13ddebbc0baeb8be7690491bb8ace57512e27b28c005a874101790840c237dca8ec1929d20a424454801d151f531128de5db176530fc856e51d525cd89e770d59a374398f2a3a4f3f59c4ff07c4bbd97ecc617bf8745019f43c584ab1d6cf5f413eebd6594d8e69c5247b93001b600492345824e6813fc58b50cc5e86387e039ab9d7cfe0b20f81e0b8d0c2aa801d630794023bfe98f6ec51ab98f1ec12191df3e7c4e0f888ee6a4731b83c13610bd0082617022d257b18cf83ad7ba93b97da426c804b5cfe9338abd435261e99bb24e62977d69ccfa976e0de51f92ffdf123624442f51a82b184a3a7cfb9637ad76508c970179037d5bd37b71584201bae1c908b3e889d5039424b3df2cfb8125234915566a09b5d9549f8b7a42e81c831e3e6a5fb3c60754536368ac3105743812a3099001c5c37a87d39b006be929086f5bf39565bc85b45f68fec3f2abb5ed14f02a4521560cc1fbc482e8b2d4732a0912f42726da9deea2f0792c87f6629ff949f03678574583e9f4ea7a679ba65f21ccd7e878a9f4803934708f54dea17f62cd766c5e587e89b2d331e1eaa4c230a92f11335b73951d95cebabdbf249910ec284db23967e60eadf8ecaeec7ea3bc5de9db6570bc422d6f9852256dfefca9a37aaa16f2d35e44be988156322c7a34265bee5e3e6ae4488bdd6f5f11b660f7cdf5ad6c761c83cfc44529afef53fa5dc247d6057aa319bf4998b1a5d1a87e78fd0abacb50353b48d3405677afd3df11c9d544c163bde4130a9dd855343eb200790cdb0e4ba0a1bb3ae9a8cdcb75e0bef683ff0034c81f7c5ddf9671a1bdf138f2886e542303032965128fb676ce13e5cbe884b3978ce863093b0e1e7323b01a8cd6ed8050300107804a35995281599c7b57b5d03c0c7be8d96add28965731773188d3b9d6d36fbdf65ba9c39a714c0d2ac4f8cf6ed7015d4417057dba6705713bc710eb2b365529bd93ece5db9edff57a816c2ec3c9bbc8d92682ae13a7910168cb6c452cc795196a963b913cb0d72670b19ceed5ff766589ba3571a9d5c87220eb75b91e6335d421ce00c05570f20598832e131618c922b37f962138b175e40ffe6080c983c59250bbbd4e9bbbb30c8c9aa927a2109d220a42b23ca191c5ca090c519396cf8bff34b2b67c54a37d49bf3240b73454a73b47e739e4ebf2126c40820633c8b828bc3acf536e24c7cfde9ce40ed520c81077ab3ead5fd50e4a66cb68e261bd1e0ade242cf9ab2227487ff61bce945eed3197524e3f97f1e7a3277e527f664623c26d08a08fa083f045f7c29e5890a766878b5508b79b5b68de730e01df4d09a66ee61694161dd106dda32cbdbb63a37521fbbc91631cf6758ae28af75064f617baba38b75ed6b24b1ff5ef04bf312441b0c1438536f13b1e835e2175c3bfcc98a2cd779a7ce346e79ef20992f21d73f6f66de9db3993a03b23a9359225b5ae9020f8398099400a1373b5b6565cd1ac17e0c05465e2a2803659d5c779de61c637fa874be8874e5129f7eabff4cdfb2d89a53106fa325ea2c34aca2af92222fabd8dbbb9a2e85050fbf1531b02c6ca0f307f6b5ad13f2e46c2d4c30ae01f1bb10420497d73bcefb3afd147d9d28075b43313cd5ca5641dc79bd5d1c3ea84b4a71c4ad9f490f5b7c9ab2e2e632286b4633473e8698e6b58cbc6da570831f917d4f973882f87fb983849d6060a369245f708ca05a2c0f5b104507c8cd75267b45a0fe766074a1b65495a34e1e452326897d5fd9d2b95b21f818a6bfcc3dddcbd92c5e7f90b808c58bfbe1065ffa0cd64878d72de4589543c8b49fc078aa4edaa1afc70b83c500c8c408b3c4ad8d51c000232c92d2b1dbfc51a46ba61f60229b7fc09a191933c0d824e85f8df2f40440a2660f09fc3bc9b1ed5916e901c483461e3eda3645fd3229dcef59486260fddd4f2ff1a7e271c5fcc9d39d371ddc08aed5da0ea866e419fa622140934abee3bb254263acaf1b1cbf8b67915b4bd1cb9e134bacb3f090f5048d18b06f239532c7d417c67b5623929f37125315b0c272789cee03d4cbc91e695bede5b5eea0e2913e5bc45265266bcac6f24223f590e2873a3aa385df3dcdf7ff4a54e2bce09d4d4dd1cbd37f234853c7127e38b3bb416f3c2ed6c98633baf60fbf2f49c9f37102689aca1b7617fed5bb8f6323f68bfb8a067aa7115467b8572c2537b0dc024aaf35f07c2a90ec3dce7f7fb23ae186a00d59b03375f62974e58183bb36a86b4ec2663e294c3e83f9964d4e98b00c1468a31eef78cf9e8866694b3cf3bb6ddead832984b3cf063dbf977f4a283b11675e11736cccfd71d3e150ecb63158633dbf88a95acddcf4a71af6aa1c249106701aa2f685a58e1d22919933e177683b616ef2a1fe25d31617cd7acf76804c13d684ee37ab62274b2af66544f6644ece433f50dd3fa689fd6409d4ea72c113c5b78b2e35adb39e0597dca63e8a6b2116b4975b4e56e4dd188e269864454cc4bfb0cbba2ef51dbeb43b04b3977b614d95176cba6eee29a381611073028b9fa906b5a2fd62f04f24c83200233545a2f3d7dd105eac4c7a475c0332348e0f54bfdf1c695fc45ae7b314d589410bb14efcb7a5a2a8e6b6901df1e3fd97130c2bc59038a33d1c49fa8b95302b8755370aa24a0c523240e3fde02a19e3971a29efbc2c98b43daebbe097bf0d8de694904d27e793df7400d8e8a1be1db54b2a6315426fb3eceddfbffecfe1e60b1d9f5b2362288734efb1ab2e99dc6edf3c344f80fc8ff6e49669bc21c3e47f4171517e5dcef509ab273679c96ae7859fdd55b2cadc2683c4c434bc7922ed8f7595199c3a9d5ba220e48dd5b62aa208f813f7302c77db6c13008ebae5330b2294a25efb1155bbd562c216ec07f9f7c2c8cfb1aa10c3a6f1a728c4d36949e616e8e0efa8a751a5f2bf7256f6b1ed0410f2326dc732e8c85c6f26add9f7d452996d0eb82625a4004e4248305df6f334f614f84b9bb3bdc0ea41c8151fd62e5dce90c8042cdfd0e0d61e0eaa25e11f3af08a8f93f7f84e449f9f875714bfdb28b8842f679f1ae5ac433b81192b29dee6d259811273cb634f548f42cea9150d6fadf80591be2ba0e9ed1c9309320ba373487877981fc93b1f5eafe51327930edefc9ac19820659a7c580af85882b4a95c1441e837db15c114da320d47e08f7874b185f8abb90bab7fcd730d132ec95032bdf17a6b5f5ac6060b16267c77de4a9f399ed635f447a63c9eb16d8fd14172eee9a7dfc10996b7d8e112903db71cb4c8ee20643f80f50e5f482cee5dcf250fad3f8aac333981a9d16ebb06184ba20dd0b5f4827fc3a1a0b5aecb34337fd8ffda27832dd7f61b8c84e646f82bebc42bc0181ddf6542a04b60350fdc5e4c6ad03a20f944fa58937572a577928f920d0bdd40a86f578fdd05d9b95393f3a62fe88eafcb9c5c251757c10a0f15a6d1b32a9b3c6585313861687273a430a268a5c418be55b0d16a181ba0201b9e481ba12be6132379f3c5c83541aaf57845c22e2937a62bb983c54fd6913d33fd43fed532bd1e92d4c431121f5af1cbd8e94e03a1a596aa8fc03044e342c0067fed63340958ddaec3404c3e1309da1010cd430a72404415f74caa5689a24ffd279322c1a95f6891912d391aedd0d6a6869cca6b534f8d69c5e6fa7fe7028ccf0219d6ce4384af87c06f3ba9a6bf3378a10478e717f83c239bcd368eb5d6e173213765e377d7feaf5159f59d55ba33688f4a16c4572c83cb7b4ea34da5c3e24b333f50a3fdbf0a4a7a7a21072c4c53371095c85182a90cc6c105a1c3f3e481292a9ff0b87b8d6601407821e27ce9397a2c8b1b33efaec8870bfaa53e7254a8bbc5f0c130ff39106b2e7329ead3766b6ffaf492baae9ac1de75209f7970b070fde8518b83e5bc6f60ed964f686d19355d3bff0f16e319cfb238096556c398d57660eac82b33545eccbd759b98801a07d10fc662410c1975ee5a24726e7d0cc8f5430ee5e90bac74087bb4e77b642b9f370f13b583fbc6f1303375748f4437e5691e8c9f0e996791e55c873459fa087f4a029bbacaef899271a6145f16adb58c726742277276b5368871f75fbaa3e4b0a41b7e85c5680b4ec1a67686afa32990493d71731b44c4563574b936981d04a1808af8de41613d8f921310dc0cdb8d7fac6585b772942316a7ab64b09fc2292f5b8aa540af1a2ba14b0cf27049d322f59200394fb2dcab536ca3191eae08f0031f046f66025d6a12c28f393065535b3f7d226d3dfa255c888f07094dffb8aa7d807a475116d8725d17572e5a4f8af3626c3d618985bc71f37758c1c290919795e70e96c002646c2cee1c6c813e15f629dc768e8c789f96ef2a47f6f254b5446f4e6bd69a0bcd43bdb658ff3c30c581b0ca7f8ec8d3a386f4586abcac392eb0df9e2cf5903d6a9cf7b430da5c4be82397beae5adefbec3ba9b79546bbef89e9a516d4e07fdbc6e378f3da8b6c54a198e01cb5253579d507759302127dd83c271c65571a5685d837b2597693c1b8c2c3a8216a77a55b687d04d5e9f94c27ec311c163f16ce3a87a958fe57eb564301f556fe40f1b199b86420ae8bec3054e9c8002b18a488e989ae2d0d6baccb9b029e3ca58f8794fb05bb4e85752869a2d602a2dd67e91a81f5d66dc4812a97e8ed71be080952f5e9c8d62ca129348ca5ab50f3cf211dc154bf2dc477121ce412b87006f8a5f3b29ac9499d91c9d793fd6544441df0ed4207abb9d5e60a58c455dee4244339028d74d5c40d83df183e5178bbd051840290d15d04dbeddff0297b4937b7754a742457dc732c5fbf2559fc4ba7064ebfa8b4a667b62e777b7add43e51b0c9d9e7d91d02286ce231697a16b4d9c17a9b90b95a43ba736ba3f687067ad92ade4ad797c2abc801660102c1245bf14108f0dc98bc02c15ea3f10bbc29112e9f4749c3e37c4b64ed5f78cd769afd9ebd9794ba666ed4753817bae7e351ef27a2a30b3957a609ada79e92bd2e63e0949b4b548bf2d8f2f10f020da0d98130f06f3eeb8e42bbd6c7929c272c1a4b13178b67e6b6ea354a05819b68f1179e798902f98e57418925ca34c0ef55f1e64f8182f1872339c324b2161176b9aa1a4b46786b1bf0deebcf4442790ad96b60d9c00d0410be6f5522af7d590678af46f44dca7d15f84ac903b67804563b49293fd5ecab85fa441b42e7864ba2d56557e71bd3f051d31d415a1249e07864e9d66256026b7f4b20a40df9f9a2441ad09450ffa49161272d3fc744523cb41f75a827ec91babdabb67b04b737dd3fb6e349fd9e3011675f70e4e3a6abed759e9679c0d6ce268316b7ec3fa7ac17e5ba495ad16d3bba282bf5773289ffb127f3c123a765badd250d87bce685135a3c5daf9f443aa67f7dfee3d15eb375cbe8980d90e67e52cb37170ff270bf87f60178a670a3a4031dea8f94722adc6d3fb6e89afb861b109d6b3c97f9ebf767e9270b16f3179e7e436058b2b7a7300a4205a38e309acab5460e88b3b7678508634db63a1cd4f0100d971a71e1a3d08998fa6e99b59b2c6ee2858e405d75f335e5f94137800eb609306157d1d9a35073fc3851103697773a06c8e26f0e297f879eec143553e6dfe3acbad7f4efa33b8fc9b73795a4cdf5b0e8229ee4ae5f9c81ed7bbf143eadaf6cf0042483f9de8bb28032714fda5f830bef05dedf6422718835d474aee8873d3aa40d0d1e8c3d3159e98834b4b4db13867eaf447da5e158a26fe088a25bd0f671a70927e640b29310dcd616dff3662a0d2bc774ffdbe9600a21caf6b99b2718dfe9a2470f34b408b2ff21957a5ba9623c9df4992cfee3cc92a149dbd620ae385923950985323d5e6d033b9038d885e9acc974dfba9f6c92d7db72fb740a6dbd7aa11a4d9f472d55a31fd7ccdaab2801945388f7cc56ccdd40f1453bba339462a7a597b4e69cb92290e7f570cbe1ee7eb13457967e83a48cd56b0e251789d3b8620d8827e9dd98edc5b55e89458e314b8e048ff580ccf3b1dde786677741c0a1f63eb0511e92f353773d60870d9a0de50a799252c7e22d12555fca5402dde8d66994f720dc1ebbe4910a04beb91cd7de3dfa896e435e42ab2d8157616b0bf563c6be1f485b63eea6a8fa96e68a87055ba263060eb2c5562962becda9d2dbf026b0dbc1bfcb207f90aef8be9cd4220c97964c307b7713a871d8f6966a35d8ac534b37974279a0ff10818555dff59fc05e2a72af018c49801714f063866eeeeef272f418cfff49fc8642d7e593e1c1a7933d1c8f7378e66ce7b8ff3c03c7480a5f3f15ef29901be9c68499fc01375ebeaaee9765a5624deb60dd93eb8b167856cadc9d7c584436d79a43986e55ea381b2e5921eef1297390342d83aced7391e8b5b1cb132684f0ba3eafdf5a1f7d7c143ca4d615b3936249cadb4e6e9a7521e379d59a02a27920e7e2c61af4d3c6d06907618e35cd8769b2bc66c059290217acc1d613b5a19590862cc33a0c494d52525239abd3245d01ab59288d06d3b0075a0cd21ba03824d048b350b1f43d2dec33f9ed46d22036c43c24bae988f7b96fb42fd8c08443f1d12b859ac784d092d63768a54e5f306d01a4532737789777cf34d1a43ce1e2fc0a48a224dcfe05c23be6228a6a554411c3c851ef332ada75c890eea42712f73f03c97e76911c45af45713bb9cafd517256bf3cd85aa188139c77554d96bba9808ac8839537c1db27165edf80334cd1bda9f76791591891b2ad572ac11a8fe33603978d4ffab0798a6bc8c9eee2bf40ab109bda25c9a78678ea3264c8e468d58075176c559e32b20ff493ccae290da0384238cd3e923e1e9f38c350167a0b72275c3a6525d7b07da2917c4e39d194f676a1453136a708b35450720ce0c076f1b25d4eb2c57f47b848101dc851a977cb66233227f9fd6ac22ca0f20dc356f44d8f63d2fd4e40a8a31b11b247d5d6c5abe463b586baf3ee6f201f999afb6d78c540c1b0e9466ae961d02b95eed8bde2a9a5bbcf597584d2fe1e2ef24eebaae35ca85d4f89ca15a17bd0882a7218a1b7da4369735f3f00765b2eeb6d9aefbb075a5810ade788c9255ce275419cb450b8d55a1f208a6b288b931b986a4088a50dc9f8a4d87f8d37edd561b7b6cb41820e39b489d2807cdebc59bbf655d9cdfc01f9bb366ac1dad8c89b08987d6f26ac7927849b891de7ce8182babc1850388ad8fce2d54b92d4712fc446f9128f497e92c4b5b84befa4c1ef89fe808165b50e2e2a52a90acb7ac9d94e2be6c34411522ab9470c06b9967ab00c96c4ee2c0f256c9f35fe1db9731db899dc6a1f3cb12b70b3b89dd8f0b653ac4d39f9098ba279b8b8b5f70d9be61cade7a0b26138c9265ee383f761411cfb99b25aa7ffbf65d2459abbd0272826748ae376aea48e5368b37ead706509ccfe6545c71543d73ea132abc5e179062b3382173ec628a7e3ef673e5f6bb7db5c105034d7149637aa1a1e17ccdc2554de989f746f56168234e218df941ab3fe682aaf522ecfbf17b10a024c35f1b321340de1ce65fcae30072765a3d8a09decd00189940cc2170230e2ac7edac9f5f215543c5e36f30356517493cf0f9a42d5cd6c8c962e3fcc586db66c241c9734401d432d3e1903edaebb20242c5762c61ad4a989143e1a96ccff2c19790697d9f71d846ef061c5298670572286efab22d245b03671d2635de6048eaffc85cd7cf9802e23d8073f4d3f3a8721303a360248f5f4e83301542d81a77621f0abde49996e4107bdbe1352cff126d57fc5b7b87a774cf1847ec6b74ef6e5cbdd023df721c948344c9fd37b403d291a4a694de49c46d571b34dea92500a9e490df31d204cf7b6a6955f25782f9eb91a717300de93b413d9b101074e5f7d13f91037e6adcc7ebdf78c1bcf884dd01cee53e4357f7bada9a8958d7974a530659b38600022c56eaeae89addfdde177ceb756bb18ea224a54d118a54a98236316e71e6b4ffd509a3024c9967a2d452036d2625351f38a3219b91aad00882d1885c61b64af36f9a2d030ea770805658a8d0266cf9b836bd0cdf31b3c8fe5eacd563fcf1b36ae42d3b8c77319ce45434bd20cd2960fc8ae5162d1c22a866ed58355ad9eeb25cf1ec9992d4a042cbd75badc3f1ce22950f37a9a285a34e2673f1177102e8ac41e76f00db33baa08cfa530f6ba3b57ed480c4a1e30502721cacacb08abebef874aa8cd01b9781e27b71096883f2fb6a8dc80680ccbb7a57bfcef7d3912834b4b640318eb4c145e6cfc0841c15a7795365f096e7869c475662879ad7b206b067e5f4ca4d8d98728554f72244194992ec85616f37e805162bd7008327aee57d97e8e3b1fa5422d681e33494e34189d3a8da14a73d9a85eab39a2901b9914c5f094d3ff97d638c72a627f19b66a0492decaf0fbff1ba68c061645d7e83cfc74213975b6daf4caf8292bfe845b4c1908a83392b4c206f4a02f0252fa0d52f5e52ca109f69a60f4c9e3c028c1b4c21095999208b34f95fa0609c82ee8cace19e115bfb9476ef56f2543ae4b186d714651471b456bc8b5b44b4c4401e55129c6f2842630a796002e5ed8c4286773d8ad5903f16a04ced168a2ca94d9093efc92e83c8ae4049d5695a6a11e84a058394c4f1ab7e6d643930d613d9eaebf595349559fc318c5bb9126976360e749fe598dd81f3c4cf2e18e1881a64baa46b55a40124196c84219c32fac91be4cfa947ed31d4b92dc9997bebf204129cd330d6af0b88ea10147d220fec5c68651e2ea34944be326cfc2bdf52902023d83ed80a64c2881329595d47a62a7cd2f06430acb2c13bcaa789819b9a50ca83e5e3099b4a10462e7d96189806c7a393270f2278b5a2ac2dd32faae24c1c95c91cb8b9e344d33a0573fd44f21f8498e2b58d8e116ecca978f78fa62c908e5e4a046e23f039f61b431ca89c7910785f90d0d73cd7bd2304167015f6eac46b460843aec88789a7c15812b11ebbfeb839a5e5b5556db311ce143c922a0d255ac9c0880b6281f1b383d0e0a72fa3fecf95ac415a4ecbf72548548d7f46f0102e6f183271e089e158cbc0a41a435fc76855769329983799e2003e548b7e09ff6a1b615085830ce4a33607b4b136731df26d8f0ae01601b82cfe36d9d0133e172bf3e33606d0137c82c6512d0203e825ac1d80323bf36f52c3261157f9c67a354476ca4adb7b86afe3bbd6b45a0792b3a9d21b627489ba1601c72574e0892ab0ee1cf51c56747fd0a6563ddf25be2a255e7ef458025be0372e8e62a85f8fa294a5d59861dff780f1178c04d268e152b3b2f2ef83e757bceebf295899fd112b0462c98862fd869a820811fc2536a1f2602e93c13f768b96efc1c9821972e340287e58b9fcf9e4d573a533297f792e5308aed4a3a6bc516735a4b9541285e366ffcc2040f5dce85d77107a69580a1615189f83dab0d65e9cad3e8205206e4cf97ad209467b53f08b10f76c7543ba2abc10a292b2116b58c762d60266edef7c8cfc8030d52e996150fd7c1379d3496d421e7845f5de738008352a465ec8600fe822d8f94cecad03f4742cab0bd4cf2901a4e73f898fc03d66a12aaffeb021e3248bb9042578fbcc0ca9db8d903421eb3bab03f0c619d407136d8ea123611a5b18b20f35186ea7e207c66772bcb4cf775193b9b629f24ab94f5d4e16706d69ac4fb754be121380e2ca33536e5d3034d9707931abdd1bd18416c11912d8dcf39f120af4d43af86b73bf9d1e710d4a36642d9c0b4afb119ebe30cbcffc53bad700ecccb54dfef9598c987b2c297748179ca92fe4609cfc19ed599d1b4a22ed2612644c1dea1e9262658535dc2662c61343502a90eccde603e2808f03d314643e4285e450cfd5c4da8a80c9126a3abac37958fb532b6c08befc57dbcacd7c081026ee8002679caccba414216f2eec8019734cede3a5a7d5564df84c61401685b7b08143215d569edcb45cc696bbd22635c8f183192c7be3e67aace3b103aa20941e8c572e8b6b49f9f996c2f9fb7e666031ec1bf0ac385df57701f113d5dfc10fbccf9294fec6637cd5add80db30711cfcefa112558f1d00a5ec3d7ebbcffb328308a12a233b168141a6c7ba32abb6052d16154b8d4590b456fbffcbb0cd4b6c6811a725dcc1c377bbae5c5efd6ba96d6ddd9f16adbd1d748497ce7cc5c697696de505e019e8086a4f238bfb56200d990ad9da4416077714dd293bc9a7caa415083c14911cdfc1f0e4e50add9b916acb44bd603d0b71c0062227804387057ce3e48877684bb257b3b511b95cf16915decf09cea134239c32a9fe06369b4cb83f5fce63feb0e70b98d351fe5bbf08763355841b1f1f46bf51dc584dfa9bba48240d40135c7ab0e7a8a08739592f670925f282ddd0babbd3bcb8a5c316445c3a2233b59f5d7aa930a855c16800b00cc9a6b60632a0db67a8304ffb7e6bd8ec5a554ceba769a72b85097d808ae27613edbe26a667b7b808f2304644d8169ca2c69d88986ade9a2c02c778507134f93c3a9dbc47a77a6f9f1e5458be5204590bb32b484e411f13af1454f9ac031372164e9162ac2a758068fdf1d1c86349dcf808e2a42ba5e072c3d8c1883822d0612d9bdbfbc9c9514d643d651303f68c777d9f54e55f272c3e1828030143ae3809540759dbf5e844a16f044e15bbc1b77df8292f0b7d0799a21aba2014a06a99f2f55d5549df114526ec200adeabd414c9322ba2479a5161eba6f717c3cdb085677c0865045ac10eedf897e50f0ce3da388b7f0b8246ae4e0b496411e66a3408f6c2be02bbf83337ea3a925c57ec3bd02a335070d54a4ef5190dbf95aafd4ef3f39b21d294773b817635e925fce57a5c057b81860f3d9c56cfdf3c6b0e0a8e7bf46471d4a6f6663ecc32d7a3591951e4b22eeefb33e29dd00b7f7ece64787d2456abd2907e0408c68cbc8bc65a7cffbc1e020262f6602f324efa23cdd64be84cb7e0d22d9e78def23aa4a66201795c5ebb0d85a4454482e740c31fa2dfa809557a1f1fbefa1d7527bf9bdb7be5db7ebbfc5aaa3abd4d8a752a4e2b16ce2b686e46ff9e8e792d7990e75d400aae1268d3dc80b351311842e67a42ff10478f55a2877965187a98963be266074f9aba479c5850bb08298af15a433b31bac1a24c81ecdd29554c23a320c43ca9e3fb7e3265f09079755d18e0b4ba17d9c20891a73ae7d63a99b44f226a0648be4cb74766ab2acd11923dd81c28badb5fb3bc766891307e1dc26b176c21023c0b00c7b775290f2f3f646c62469741201a63d1480e4042814a7d9e7600e27a0f827bb8fbf497ac6c6fa640857ccaf11390110e0bb0e2dd55bba66cc6d15e118539412de8813093c49efb45c7e5ee900b95f38e56d86b827e39436ce78f53d0439d4a5a684185570a073fb7b9724f88a290684130db7dfadea166243c3ef3a37f58cb8b3c2ca813c3f3d00b1bc9e2686b9b766c2fa0bfd0208e6a93739e04da31bdea9b08c5eee4514dda66c9801d6130519e25f41a69d2271636a8233aa4a9e1a9707db211d86a34ad6024851c73c9c37a91d8edebd094969bfbc8331513a8fc2f41b710f2bb4c4f0dad538368139b60f1d9c571e3b9ec62d1bd4c17531053bf7ce8e2e82df4b14a64f735d028bdf69a5d087f21617c777a712100d858fb8aadc6662c3ed420c7fec081c28141f29ae0b3946ea1c9ec1377528da6f03563139b41e2d5efc5023ff0b64d23bac2746e8990344e9f8c0d6363cf5e71f75db713445be3b5a78528cfdc2d5f387a82b7fc77d50dae2875304f8fb3048a18fd849975c245b518a752af57e60f13442ed8f3492bd672513e2881741c278f60710b13c6fa16518d77061d76454f7b8dfecba41848a2522aa690e8aa039f0fd7b2f9d7dd7e311dc6b93ed98b39ca6a0276a386c91de25907790039ed62e40f69b4d59c4fb3813d288f8ba9f749df9097d62cb3ee51c966164f2e692d24c688a307e6fe002c88eb3be83bd6ff23f3cd6c36c86837a12dae45f6ad34b94fb3e63d4d75fd2206dbf47a165cadbe3632ba7f5ef3897010b7387ac2f19a6e2a998a743cee7eba581e3b6f596e001f300c212eddee1a150d185f163ea85c00365e49334b9ec9b8fd29352181c3a3e86cbe8188f6e0c76edfe554d0f463834a454eec0f41e409a435d96cd6ff42efdcad128b745c065d4610949ad852b8dab61660ae143f2fcfcfe74efd1f054341e3a30fa79fd8d34f24a4078850d29b6fb12619c15a067a9025814f19397cca7c4525b97041526732214e31ca10f1ec162dacf8c97487dd227db3af87b5073883fc1d2634aed9494146fc1fe1bfa86ce637f1be5fa9046d438597bd208054d2c00c8d2275b9a34fd97d5f079e38635eb99f799a8ffd50cd123cf3f752295e37a0f2204c6ae81e56fe1351c8ab40a542b0a6a9405a0ff6df94f7a65d9f857ef9151f45187f748cbbd5c637a3028fe9ceadc7de3b35c04a6a30fe821d1b9c62fa1284b27ad01dc7ae2867cede7322665ad88a2c4589afc4d733af0775f0e43e3d1331d5f3b2cd21e1e508ee5723e8b5741b6a2f5431850e164e3bd21addd7dcfa92ff98a62b0988b79fc33d2108b2a040a6c5a72bfe0bad1013edb7a7b3ca5bbb934f6fb575334ad30c03ea936e7d7b7a6be8ce8d361c3d817b01d20fd71fbf1a19d49f8e7fa03fae8567c5747509dbc6a31c98ef115694a06310fc62c4c4a3a6ae6f36006b7728118936751b90bd920347d04f763bac4ec4090587ba8600b7f4df2020e41165795e3a5b8bdb07e039da97c94a4755be921b94a622703f92c8aabefe48f57b1efb06def6af49761cb1c0976b97b57403178d8ab03f78a51f92b25f45cde667b3e7005f813c594c5a62e98d0ae3a5a1c4b12f587b6c0082f38d3c5b728f26c9b06fc5cc79eab84de334628550059557e7fdf5ce346e40330c77865071c5cc4613d12bd6a6774711da6fc6cdb1e3090788deeca0a818c32a7a4c935ed84e1ab9096a7453e761f38200057579f19edf9764ebdbe698264a6c0ef223ab34e68fb18771f9bf921cdb62cefd31e0b53cc1df16102e9ca694d61459c848e1667f18f1a73f46b669610dc3d704771d2d3f642b1fe8c723ca404dcef7d5d5ab0f65f9f0de4fc97b167fdb8c83457c8fc1dc8bbcbea1d8be5bd0a55d345cdc3b0ce73a57fd66f0753dc749fb111c3059dec9a247a271c116ac1e9015f3f00dc702ac0485028741ac1d7ecc1ef34fe9e2c3c6c5745ce1e6b72cb60261f1779607fff7f80ebf9aee50c1ed29586dd29c576c636d60b0829e912816333e54958bb91e7af23847037533be7e0ce3933bc52480ab811bacd172770cc70ebe8673891e4e73a87c3571154a86f889488d7ff77f5aac862b934fa6a33f7f6a8768f6757a1448a50bbdb3532f484ba7e8299655dd1d07bd08992036308cdac252ccb5ac9770cfab478c6739a25f85aa77ca0ead7bd800869e6bb69b9f1766986c46590742c5f01f457fafc90356d6de7b96ca14d6b8c216ce8d513453eb0227384b2f4fcdd56247522261efda72c148d102574a3352bc8aec816384150de176aa9d19a68cd29d3f6b044f3250dce1aa29a8a2e418f159b142c41b849027958bcd0d295e58755256c3d99aabb347e225856906afd1ff80878c95a9c1d6c20ac43f8782880f2ef809416e3904f6398ab0beeadc24ec7a84297b95fc6cd90c5554b06f673d115f4458ff6712c42ed8029fff562213bd75832e322d0e50f331a02067557b40c5a99c28ccd965db1648b5724877d6dadbae63caccc9fd4d5f45c526bceda02d124bd690aba5611b8ca06436ec181baca134dac7d4e68942bdb942129f6308cce687d46a52af1046126a65bc13c44857ae193468cae8af0292699b8c10f6487eb329d831acde0d794eaf142f39c273fe6539d17aa5c77ccec52f5e5aa4e69f07ed0a926657f2a4f98a9df085ad741b076e0c838a4c8958bb2310585b07b8ae078db34ac927224bd434b5f49b13fbfd28338d41d31c8c567dddefb21274bc529f9105b191a19199545f8a1bd6e3294a5c642ce8ce65a1547d05de02723ff46faa79f9216c8192331641152883e7d0a9b673d5ec8bedf7f25814ec83404c3cc9dbcc6a7b6c34b74252b3921860c151defb190343ad6bd6aec067960a9e95cc3fd191f4cb565fb57218b4f4e4f66286e9c3cfe3dce60d26aa27bdbc68cfa70614e8d7dd719656189755e6e26adf94f7fc9d568e7c06f3cce9dfbb2a49b8259401322d167bfca5c364e5104ba9447263a9843046c71cb1d8140d68b0c32444d5506d2a4258e68b45e96f9a81ad72eb93084d24d0cc26d178fe4eb1ca2b4b4e9f374be6d734be7af9a97e14f2d39b4285db77bed674ac4fc98424e6dbdbbc1f4b23a17f4b86de99fa9408af5f3e7690dcd6f0cc5e84241b6d8ece3bf4fe52ab13c65a964ba4c242e62dafc2b5a1cc41ae97d5e24b2d939af830ea482a9b8276c40124cf0d7c16846ea00a4668cd9f9394fa52d7f459c4262c4a108a835ee91ab809cb54abb0a7a2bca2ad5b648e001a16cf0446c826b789fe1588e06cf0d2c526564c538dba7291a351fdc190cf5b3f5c21090e013c4c86778b810ec3c9ecb8c442537be9d7067ea2709460de198dbc399425d36af90c505a8a5b3d6bd55cc9b072bb834ee04346b7b7acc0e8d5ad218185f27a36a6ed11a02331797b5bf5e2b25348a4404d05fd0019f49126f14153abf6fcb1de164165c2864832f3f84e7fca5a591ae609a66832284725aac81408ce7335641c7bb0dcd55d05bc03a627340dd4daa6c3db6882d40d05f1717bd34be272cf49eb45ee7b74a2afcfe80c8425d55f140f8976b9fb58b01410490634fe5ae5e9569e61073b7835b70751b3b68c3f773f9ced8ceab4fcfc3dc037cb42530bf6f6450422aa8985c31b6456b89e37fb91019c9c708d447a7a2de2836642535d2dde179ca676c565c047cc0629260867c7fede3113c0768c8f537e41f36357d875418ed99e70c33183fc847c2d46730005bb39467ad6c94027d43d73218091f7ba22b179a2f64d4ccde4bb86909d032234e9058cf894ef199de6edbabfe384501c654ce78f379e2c460200e263f4d511e918a0fbbdc84e021b59019a9a348809ef496dafa2fae8f8b571c600c3dd1b60756ceb0f916c820ed3650e42d36d47a00717e80534b3cff008f1e763f6069a9577a2cb12c3afd90fbfab50f50ff543000689d4595745eda765291e8379a92c324247a879b125d5f6cfe723f727d44ee99d910cfac4944c10e0fe8b45a5033ffbb353f051661cae05b7fe890c2d350fa61527afc9c4f3ef54930e330a01b2559a5bd895bd2999cdd2b202ab8cf45884127597a1040bcc49842c137e407c41828b00958b7f16c2521b0a24500182627bf21ee70814b967c30a301fb7901259f15beb854b98038c90651ee66757f57b1798ce3fcf72f4943bfd837b90949c675f38878153f2545c8c734086839fde0b51da335a26a2c5fa803309809b1fcfd89ecb36faa41e85ee8185b03c5a5e19ec755ba719002e315ad7324debd217ab72146d76d943217a355e6c74e3466d91d5a11fb14693c1bca279e89e1510dedfa2399fa532b84df720466ced99c46a937e49735b72dc4bd2b5123410db9546e2311dde113d9233be270fef572ff7ba8a3bb6218c911934b3f044422e3f8521ba07dfbd1c9ee09a3037c4069f7925184f4c82fbddcc4c9eed1822b77a9c6a53c86c3759978db990853123c02d4139b363621dadb456bfbf8513b5a8efa8ae7d0777ed0fadc7b683e3732045a81540e4c9564be584d67b4345e37b6918b8223789225f95f7907370f1f560cfb632ec6a4978a4cb8a1dcfbee2c6e322896a7ad431eaff4e964a111eb174bf6a4c97143f505513c76866cf35f3f3d23fbf69cfc0f493d3026335b76ab4c2cb87139532f1cb6658946856d2afd75721a7b4e61b66134af4d59d0c0ca8ffc7465eea68e39a9e8b86ac5854f4db18fc1cc6af50c0a520090f9baa11bf072bf4a71f99e06b5f91d685fb3f8e92c5e227046b1a2102e1cae0e770b9fb001895e59af92bad2e7ce6ca91e66134d098921c8e6f69a88891ae83d1b074ff0450b8d07ce89ac438e9ecc5b9a24c051677885763335f7fdf71b328362d0ecc84acf5c2df59a920b68937fe61dbeb438f5baf979ee6329ff735b6ce14c045ec3e5c66340c9f273c7bec5933c0a8d995a90f6d8151a4662aa4d380897e294373737c867c7c2f00eb7c9c4ce363d66715972fec9f005d569f1e5b539d183e5d3e67e5caa55ebbba8c5401db9ca8791b18d23ef2ae2391c984815f7fd49b65285ee50674cc150e5f24c1cfbcd044d894c794ccb38ca9db11a04eefd7a85769666ab9d42fadb7c0e193250a3d55be9e1db05ba858ef704c806be81cf890ac92b19d33c35c488fbc8414069190aaf16657d56c2622fece923bd31817a2ff9019fd96aad3ff869b8dd5088e433ef08e8ec4b24e74653a0bf8c0358ad1b8690ce34488f7b0bf9e0e8533700bb03a66985d25cb4bfdcbb8e4299a444e3d96f5bf8f066bf6db768acfab079770549946e67ce30ef2de8b870ad511a95811c04c59da5d8c09e82e4df984181ad36ef5bea4bc056f976d8a42a10ff13fff223d672146de6394c796dd59a0a3f6ed5df4d2d22a6667d2c89a42c1938f56824e0d0e701d843182284688f3fc262c9d9183fbc3792428fc7f4a89f9c9c0927eef854034c05650bee05f4f7e3b0468650bb468a0b68e4bb546ee86c7a3671679e9949e6e429684bb6a654ee3a0674eeb6e55e6e34ffab261b9e01c2146bbfe5b402c78b45a8ecded714d71c2e81c377aa2b285dc6b473aa63125caef838696ef405828b0a0686c4e6f2fdeece73ba07eff1159308f086fefaae0c48e28ec716739c2f09e1b98e2da551649eafed62b0c13dbbf5493885decb65adf4e127a31d5c1a1a0d220b8a3134fcc09755c15b957ee83fc16ed28d31082787bf51c95d9b3945ef03082f8177d87b133fc0f630c3c07a80f1543d22a12e8e37b3bdc87825cf764a1b20c7155230bf01f21eca085b7a8ea1d445471d56c9850164c26bea490b2ee1fe656f6a711b29ed23c397e966cf386f86b2eba55df4a91a6496ef76bf49ac29a6ddf4998d71ca563d63766061f6eafbaa6b4ab53ed036f26c7ee794b90a92c437e7bbfa40dc1721c2f73ab943c261fd0e4758dc15e6974ba4ea490844fa4b0ad6015b246c905db4bbae3da3450607e2369d361c9bc261fd8db17de6f8256391af3ba61312a70a8e99ce160f48dd87ca54c77065fd66129e65ef94d215e59c6c028fc14f0d1dfb80330e7e9934a93c3d7fa1a7de0413fdddb3d8aaf6d796cda1d8499972a63dbb49685232902813d2089b19d1623d276a450cfd74270515e2ca0a28270e008edb3e4dedcee30501d8c7a066b7aa925f845a1e2c5c26dc5845c07ae2469dcef0e609431a3b8307992f0366031c483199f834c36e9b5599ac5b039ea08407bc8276ae3a952251ae126cb017ae8318852f8096d00321052f72e19552cc3a0a1489761ff25e6f60f142f1363e5271c28b615e44268666f1ce91fff455e30bb66a9d24028b6198c8fbffa028183cd3222f072e5120b6d7c0fe000a13cfd04148a2711419825ddfb583595a62a0df437b8f1e9bb3e79673bda308cfcef9bab68448408c74c6a963c73ec1552308e39b3db69b79b5cb89c544a91a689bb5e73c06484b97ab436340134fd806169e65557fa528fb741bf33a089a0c7474b7e0e05f4724cdcf66a1036bea737e490490114b066c1f666fcbd7e4a5cf2dfb7cb60bcca9afde7019ea2471dccf815f5bd2a0eaaa46d9bcbcf91c801a93dddaa249ebd9dcc199bca9b029dfe7271c7cf9f7ef872cfc8ca7d0df55d9cd0ec3d6101b9fb07e00a6c35e13af00d435d18001f3d86b6ef70293d7d17a215fd17df28ea20bf002c7407ec226b6e240d3725c8bf60f2c6ced1fd3f5edd6af3c0e48443fdd0e8fe105fe4fdc5bac9cd43798a23d814d5d47b998affe0792ff38d4e81f06cae18c36a778189641ba7217b6edf45147cc156cb3c9314a6d97f233c7f3bbcfd36d16322585dd44edb1193ee918ad2f5c66593d38b3c994add0e3c89b7191b887ff2bfa0e7fb270608df22fc7f91694d9a271e6f56bb39d963d94595c78fc37d8226ed50c48a82c2a02a55a5764637c4c5765bbf2083195325348c631754315bbe189125c1f6a9ec9858651066f54e564a50cfa4e7e6f62c5dca5e5c3ffd393a24935514728478a5aa43770891f2bad2b0ab0d47f55d83ce44d763cb308aa14256dad094c83d4a3df983ef7abdac565cb0cca193c5deba155e241962ee962b3236e34c25c0c64abc83f7aff8f4a4b9eb24b326b6fa0121d18d96a9b4d43fbcdac33bd1c51a6b035d67f6b039d56db4cc552318a461df2e4706546cb872f5b9a04bc1b47c2d77f10df2dc52967014231d8c00999406d7e8b101cd394df2c207ffe47dc5d2bc2d1df084d5ce8fbe942253f9f3888159b887b94c3142b010c99d044147c654e9eca1dd460c61449c3b09b4ed99c8aa62f95c02a11c3807a7effbd0c8f89a132c54d8dda6b621fd5c18dcde5eaf781207f09d9fcf8371dac20f71180c63fd24637d5bb0ae9805a3eadf5d3ebef955005d3f8e9abb2c18944e1877a87f4afe21ee9a724725f2294476e33d9a1fe3108110eb956f243ba2064aef32db8b0fe7a6da8c804b81fd6293b8fc5f88af04a5e1d7c22b8e409c92e592117d25ebd949d5203ffb95ab6aff65c291b0f479194236f81721dc275bf0473d33b68a58612fd2efe214b4917fd6355d127a9e80134dd5d9eec7320e28fb2a7c6211248ead5a480a55b16a88c801a0fb90bb9a214d5ddaac1ea1dd4d9c62ee196feba093678ce332437a2f7e8216ea395992cecd10dfa51d11bc1c4205add580983dc15c9688d4a8e2e4adfd284e78eea562770ff131581914b6a6f1bf898a53c437dcb7e06250b449c44200d2d054cad80da4e0aaae5aa26f5321896f829795bf945b8cae3e1143be938190413fad89d52eb9518cfdd6b4b100aca598dded634c493b69c341d3948bfcb13cdfad53b46207ee7f998b3d3be226566f6b8c603dfec48d632cf1d8f7303b4c59f77c3feeb183cedbe9b9c0129121a483c6ac29db261af8449b916595fbef8113f2dd09d8717bb9bff797d71ff0d10fb0bc7f62995508350a896d434e5d97b3536a60707f0b226256dc96bc726b3e847c27b48d6f2b1392b1b9143fa7925ef96f4e95d65fed6951d1b1a8f17b716ae285108c0e7985857059fbc1aac569499cae74b1c1f205f961ef95acb6505d967fa8fbb2ac0d407fc5ae3a15d97b3ca69b984d1c5cd0cf2e43d306dd93ffb463a4fa5b92146a14f29bab4639a6656f9d2a1c9e02f35f91a6fa299433d5f42dee0c97bd9056e852c08fa5dd5ded1408422e7f6b587b18b2925da11e5a086f29c669376eef66c87b0653acdd27104e2ce9c32183300751474899ae1fcf82039bdddf9eaee99c88f8f62c38b25a74549cb6b61048f354a13a54aca4b357d8328be487d4b64f35ce77957428598702477a3c0c68b0c93ed2ab7deb1a60b7670da846ee2d1717cfddad0d191299fea78cf0c479859c84495e702b7da3d0eacce795f793294041f1a37b571cde429dd450895cea0af2631982d2bcddd103d06c1ff27f6c193b08814dbe5814b8984afe0f49fcfcb02464fadcf1875c91a23bedee3949629ddd784c7049bba94c342a1f34de4282e9162459a1675a9ccb7bf8bb5207fbd0ed018181c3cd3b1958069433c1770403527c084855108b165f5e1384fd55d808f68dff3668ae4cb58449debc11159939f627fdfe221de69565cb22bc5cc26fce3e5393e2c10686659982e63fa360399362f01755b9cefeb9ca3aef1aadf49ddba811bde1de628220f8e70fc5f267eab386136c4abc7bbc7532ecfd191faad55bf72668f470ec75756cca1e5b69c270f167449081c5c44a922f7e05780b0edd6f2ab514be550e04064ad9f19258f983d7a3ccb4bff417ef2acac540bb3755b4aca949ad48afd09507db5b9bff064303a4c26baa6e10e6a72d56a0e9a72acd259a3e4f897d8c6fb9c31ebac5bccce23cc959dee51c362be4df99b9e2ca90d19337dfd43caf21eee117d8ee9fe53fc0716efe365ffc1a2d14584480bcf0b059f57148739d1091a833f5ebbcc71c71079fee07732763dc904e03b4c2ceaff00f96af685bd33a4326e9e30fc2c80638e43f5622f5b14c602ac71f0dae15dc68251b499ad764a8cfae417ac8c0d0cc8faa29eab0cf1ad545275f41a029de148a53820baec9e93a7563d9e7b7bb2a9b03fedca1000926c0657728d0a0c81235d1bd4cb7c5ef7bb522dfc06c3cbceb242bcaa6a44a434ff3e29450882bcc27e18ba5cb80fef907410f9fa8e05e5efd1d371eb4d3867204f8ca0d89f89cef3902ad21918febba5ae9e2b5fa2b117c5bbd8d3dcc400e8a117e4671ae0438f9f040b14c5b81e0fc241e6f8bcbccbc91eb447777bcb10d4c56d6598220631c491c8d939a6ce70bc63735f7aa205321b6cd71da97a122c8a41a7635d2f8218de0cc9ad14828c46115eae408e22ae6823f680a09032341a93bb97a16240f1f879be55f801af6135662f0c9e431b7c02870b8589cce63f12724e31eb73c858ea796b79770d2e43f6769ede3765548ae2bc4a3a86169e6c778d872454fff657862fb4541631d3fa9780fab17dfdd009094ba1ecb56a4df9010e89ff524fabd3789ac39204ede4a26fd6539ac8927c4deca33ff96b62e7ec9f60368d9acc475fc208d623cb00eb77ef11929cfd7a9ba2053bf396315d77b25e8522dbe3ad12049895be160f6a4d0eea6d7b5105863b475dd721a8f8d23e60b4937dd164294e577f25aba99ef3273a75d6dfce38e64ba0da424c3fafb126c16e8f06d7826239e3124459ebd512ece4dafb647214fbb7eaf1923da8a4c19a79390c4241d9cac52f7933e2ce24d158478c99a1684a2404034e8c3dda8d6a8c5066d93e165986c399dcbc6cce234e15c3678a7bc2e420b260a3f6402c1c9dab5a5390ca050d2fd79c91fdf8ade2b79c187001366229f880cb271b4d9c6a9086fdb46e07906d32a0c78b6e1fdb8f0167ae0ca2ed7ca7a7e3c41e66843acdb6841c74ba6b85096a02c79ddc26b97aecfb5a9dd9476700f778ae353aa50ed410023ba0855f11cbb240cf0b0b6c867e2b235bf279a10c4c859eb5451dfd406e97ac9bdb97fb6fc433190d511751e564f3192f29acf495c8c32a16533a957f7c3bd000959be29a7e7173673ec95325903bef588169ce52f9269c17d3b2efdc67843168cb1eb9777f10e6ce9cebff8a56bdb53b82139dd1acdedfb15160bc3fc3c96616b412357eab1c9fdaccfa27a3679061830769cc25be313393ba9852126c278ea7aeca850227f7e8403c4f9644bd53184905a181219b72bda1033dbb9553290edc67e24fc65457c248ac60b56e725c37aedccbce4d97e0e274ab8c33b9e3ca1880cffda149da7b144b00d685f5262443c4f7dc3ec0a6e27b9b3c284159b31b2273fd1cffcd8afc7563812d6e997373bb5339890c47bedb882a86f2dd3e92fa46406a9f794c90fb238bc05b44f047dd85409611260df6360679aced54aa86015eb3b4ce74c45f1d63225993d0facb87109b79c89df508e1a39908ffbd4fe439e9a6d25a84fc85630183413756be8b3f6eb14cc041ac9684a53a40156d9940dbc915fa69cfeee0b0998fdb6a8afd11fd5576e3618f5aba684fb8161bbe91711fa03877a9e5efa253763677ace0ec849fca805c49c0639bb2126ec77f17db83e2cbe8f89c0b65214f660ad0c3045efdff29d8da87f0c1c72d83a38888324adafcc03d8c95e630041c2d1df2c21b8aec53068b0ddec7ddf17e3fbd08ef7a5ae42ce00f2e265cb3341d8e86250bacc2ef82ec98a6d5ed8733271c0b1cffc287848766326a0fc78bc9539176c99d193e182df362b8d5a52adc967c9ecb46ddf4e400fd2ec32f99192fb58fd891dacb6f8837fe61987ea4cc33fb29529fd3e2573a486d87545cc4f4e4cd0ba197c21c5eb40f5c8cb751434d3b9a5c11f3ab643b1c6479a22ddcba1afeec11dcfc42ba3f54a2cf82fcee17d5d18392b1d9f813cd5bce50c0a0d08d818d7c70533ae1dd996b321d124babc1ec37f13cb851f8b19305d66c0787813100d189228211cf9f60f5192fa01432e19d070b3f04bdda03f184b40426ba56920ba02974848f69f10e9127de40d4c47c62e7130567ae74c2b65135ef8151f5dea6cd776d8ad4ed9956f66ebe0045d3e13ee4359ceaf4876d0f458b8e95d68b74d1506f5f725d8646e2fabb1d2983c0c3805b230269c65a58e2711594a5dbe7474ccfea8b1deac964f7cb71993ee5a115ac9e20a3186ab054d63d0d9c8e4aa45d04b92c862d66435b6ef6ca99b1d0c0e257844cddcc88e7eda9126af8bf466c0ee6fe2ad40627c94cce25c7735b392f7a3b104139a4ed97d1f9f0bd384450d6c3cbce2fa01a90a25caf37cbf6b2ffa738af818385a1b494d08fc5ba042c19c0fead7687ccb27c8f60688eba94388c106af36d78ce3c37e0d501e65f1ac06cbee6a09cd2ea32b65e31245c47547a45538ad381e3442f13bb07d0082d32de7a6de6dc31a06d658305e9d97047a47e25b42862b0e6eaae3f18b759cc7619deb0a5cc614d15bef280d22e02c80ae4f91cc0a9e26515137e99f62fb75c198e8cddf0d763533241b64ba378c79e5ae3476dd77a1a1f3348fe901f661113e35d3fa2e5deafe284d0ead680eee33d269c74abc66baf6cc4c9dde0e836e772bf06416050d8d6eafe8daf7a0a01ad6f7edb23a19cff4e7773a3e54c7be27b583a98a7724fcf926d90468097bdf7c215007446581dddf17db94f3ee532ee15c495434a8877a87ee5e539ffe23de0798619ede62890e458f41a870e173f4540294b5c0e8b3dc5130c002c5c6b477a701940bb1b7c794463b03f118763b6e07bfac48d8a8db36a678f36ad8a6586946e894d049639f93556bbd12578c223981b03adaf011d1697bfaa66f4eb4c31ae61bcc691055daf837531b4e0913637c25787fac937cc8eba30c11baf05cf98ed12de02946f213ffc48b2eb71e92a78f8bbaa33628f7eaf685a7502c2fdd6237eaf74a512093f3a2168f57aee6a109594ca013d175c7b80773ea5d30bbcd35a36a13fed3c0043795ad3fbe5d827060fc2457ebe046e03bd52a978ac4d6912a454060177f4f078d736c615a3d5e3fdfb529907354986f0a2db19492675be682c94a81a57039cf3f525e1a8cdf97e403fa8401ae828851195d616c3c461f5b60b6645d7c13a986afe0f3794488ba48d534e8e2f1bfc8995e1515cc894c09d46a5016a019119dc79cb2c1edbd504bea71c264719839ad0e44eb470678fcd609c7fd383999eba0244378d1c9c4d9335aeefadc6eb9ea16aae9e85b91502c51045da19edab9310ea1432f47c78fce38bf836b9e9ff7bb5b1c38d28686890e6fa76ea8057cf17ee9375f96728228ba4f520e97ff4e5d200147c3097b253625b1247ec43fd891b9e252016e64fa63f1d5e1dbd70cc648c195c17c3f924e0703d083848b76eefc40bc549a4fc6146b93604dca3c69d9680b375536531b09dcfbb41f7878e682e9fd6010ca250318d3e21b0cb67b895dc9ae5781f41470ffe126952923063e9ab7863d4f5a8fc531467976a7385358aaef632cf910cda2fe4554f1244ade0b01d5c9044e09b770f0bb17233db7f5241e0788bc222db6e67874d82f6722574cc831f0e43e246a7fca411552ffc05775991d62f498f4d25104ea4e7f9e18b933c0c46955c3f177a49553ae61b2bd7bf70170233fa8afc939dc93b6b34ae706c80020561376eca31e0fc4b62a30ec1456bfc6f41ed6a5af385ec089d93cfd41ba6515bb9563cdb4f15735707de7b01b2641e2a2f15950eed98c9fb34c1e3465340d6b3b3f8b666a9d7221875858342d7c76f7bb909a5cac0a8b53853bead68ffedb9f3fd7634d647ac77278e29951d0f9553c30c4b97e64ac27910ca070f81a73f7bfc2605455431ca4ace133d4d4f94b5684c78e081494134ed06de4d51993364b49353939da8ff7b7a37d8fc6096a25f7ecfd338e95abcf910c24990f21d08d07202886e4da2e1195c6cfba409abdb8389a197785daaad4a61548de6a9fa5791d93b15c99e36fac36f6bfc8aabc4b971f838bfbdb2a1302e86f41630568e574c570beb990c8fdc377eea8cd7bb22ba3364eeddeb521190ed5c4822a5676aecefb2ac15677303c99973e9ba2c296fb73083e2e9de85f400f8fe33391a2244220fc0b71a2efeedbccbad1d613a07c4227a72dc10f7f0ecb395c51eb7486b2d94acd7a8ba90a2fb0426907bd94ccdd8716299ddde03831a7e9276ad9b3711b36bfb44fc987d46d0e8a105cbdd90e597a5626ce251c06c9c3bcfc1007ae273de48dbc387a0dc74443a37fa1fe86c4c0bf333cf0439e90c6f7548ff089e03f4e6fe4362e78a25404e6c16ac7c6786079481b8b5d5005b1cce453b64bd02da6a4fb2833f76413611e151be933e308e727407d3ae7126cf6c27f46ea5d66e81bcc03db0bbe63e2c660e5e5f8ab931a73b0f542f03171aa23382981cb4bd73fb0ec31bdd8b4c0e8cfff8d73f8cbb9a4b38454615b229c0dae947f6099a38b414f818f91fbc93893bd701bac2c104fe86642c9eaad59ce7a421d55febb6dc739335e85de976cd3c64514b34b3d6d637fe3a1abc419c2adb73ec5732d3ccd29e36b0766c8116180880fb1b1f3b77826f795b487cd5b2ba22334d1187a4930507d5a577c0896a5ebd538be2e828a21bdb57773e0d22df7b2856a495200b4107f953a75d86f956639bad07dae2989f8e5829c9d452ed3d5bdb25c3ca82474447206941b553141039c8d5de70c72ee08ae28a9e6d642909218b838d1bb9e23deb676c92e8f631022f67a5762eba2d440b84759758e5d2ef0efe6602ac6d07e9d30678da3c9c83ed5fadaaa502b17bc69d9a8f8b1ecab7b95f594ec17211ae9efacb566b5f7ef4bcf7db037693fa009b10a0ce964df15c6092fa7259a43aee980a551316d672f79a7e59552e25d6f84c0f4b22125fec866c1f7030b34dc7ca75a94c39e77c6ce4f2ef2b7456cddf1d86695aba916762c333a88d9d10df3e274967b11af4b7bf318d2480eccfb46ad17d0c12d1ff93ec60b28943e5be73d303f9d827d3da18c87651379de9864e66e334e8734358673534fb1d112c7da0f8721f8ca957337916087096bbaccc3e31186b1acda3120e7f663bb7b2de1ee8e40d2b0de0e51eb616116f7699783ba2fb64b31d6e76cd052ea314721d8ad7919ca30425aec2a1e882e6dee3c4f4878cc8122e40d6ad395b38fa7dd534ce15205e4bf18b48d266ca2522b86ffd89c953ded90c8b22d6903b419340c076b68d6224524a3434fc1b2395db39daccb73be282b7c5d1064c32e3b434ff1b22ce0b6ade9a9f2e9914a67c09bad318d48b72c7172b4ca20cf8aee7ab7f0d88b591da095bfbdebfd25653db6898340fd3fc4f257d166993b57fd6817dd15e960f1a4a948f571065e48891d2afae5be381fea156bb7a7fcb2056cf241b03fdef34a309969ebfb9ec99a836b144a459c225aef784d93efa9a1fdbe3be138f2d7db5a31f51bad37d6e3c2f29c43a05cd737f08a96a1b89b416b32ecd020f3383545c248e7cfdd210282a5c81fd55ca3a22000e90ba1416a47b14984e701321f81203ecdeeb73e5cae2786cf90745fdb9891b92cf32ac701abbe4c277dc71c366f92cf49635249ae2cd2ac2242dbb886016f81e70d539967e0ab8b0ac6576914e8b67efcc6b0df81b57596af114ab16b2564e8a4bfbb998988bd5a79ebec5ed22509e958e966be6418ce1ebc8ff7ca15b360285fd844f8b7a9bf20501aaffd8be002e584d94b2f88fc64845f75ac8c5533ae39082fd9d925785f8380e11161e38ac464daa8767744b1efa1056b086ebc8d8f34050c65606baec55c90e00e947d9ed86969fd209e928e663aec1e2934229d9ca0ad633fa20676f38b19c6971784f8634c737459758fe577bfa8abad6a22d44b87cde08fded5dfa39f499ed94c234655d0f0d4af40ff80388ca24e506a9bf15b9b27bf7ba39cecb3d161712bce0d8165830a1245f1c6b53328946e908b30c50f8bef7523aa842553c73732c282f67bfba69f1de9b170033dc90ef226b9c9036e9f4c32bbe399c47e10b5fc83e2177f4479c28a3069aa44a5f4f5e53e93102cf71edd2148924b6d896f58a49470aef413093a00aceac66fb5d2fe73acb9f57a8386318dcc4eee74b187b19275ec7c255ce0027babcb3ce7908137299ca02bf03a8f4dc2ec8d3abb07b0e8f5d21a450552b9c7603733235ae1767f8c7488a862d9242bcf568bcb12294e343f5850530f8e226d622988bc34eec90905e4ce29a5b0e3350c7783a1398c4a64f1251af432bc6e8b2e8f93e8a00112dd1055d4abba1a72ce7643caa26166e659bfc278f7cfac8ceaf3c088ac163d5f57cb421ef31a4e0dc9db279d1449687989faa12333c3d86c09b4d567b47c3fb6a6c327340807c6edf0d15c8523e3d5637e5199340183aa699c655f5aced83e614e2301f2b3edb0bb7e8433bf6190bacf55dedf6bbd4b1ec009e798fd6b90775ba724a0b006e01628a54d206240e73bb2408570f6485c8b86eac06f08213913165bd943b1d215aae30a218ef49a0c4ddc04a3e9418942a8b78db8135f2bf9e8d7ec4035af2f82739844c6c4ad2a9c44d07c0b44f2e7371cd87732f670e777b9032caf5f57f877cd3f60e36be7102117801458fb7ed18d2f75dd6463b1575ec8a2c2821fab4c5e5e2a60d77427511e380e4e868156362a6d3b295a1f16a167f5abac2bc1000f750554b76475ba55a7632941e617a80d1447ac7bc3b0ca8f01b7a1b8816a6966a9eb29ce2bbd0d6888d2a11559671dcf0f108a259b43b2107d984b096b68c13f7a2abd83f5afd739ff9a6488df71def84bdce92e974de5b5ce1d8298d21a95c7ecba78a5cd2ea45d0340206c78b733891d1b7bd06b5e1335df2e3eb1eef851f1909ed579ed198acd1eb173264fa8fb89ccfbfcfbddc594e96b6c5f72d767f0f6957434387635a664d63caf313abef17f70ef09d0a5f902507710e74f6d5d60d0eeecf78efbfa7662a237dd9989d776fadcd9592621e5618d493cb7918f0988bd86cb371dde215cec7659fe8125ad230a9ec35b08d68c3fe400d640d2a2ff90c2856de8f875e84b89dc13249dfc7defc4041f9034c5afb240b257ec82679a9526a5021f280d6847a6986259b8c2491ec143f25c9e8c50ccb01932746520947df293ec2e2baa7d3613e6d81830ff347b9f9b782deb5950e3e6daa4d913090dfe786bf6b870aa119b843ded64756bf09c7f970c8ff7ac851cb7512e17771c7a3ec9335669dc2cc8fa12aec5758ea13d1385596da54feaf8b49df2f435512b36993d78aa0d484c64f5b7c50656931aeb655cf7b0c0b7bd30df383bccf5b442af4befeb65e0002a68bdd50967b6347de1beafe67517a64cb877c832b7c988626aaf3f1e5b6345c8bb0fb0ff08b6303c1cf2b17925a8c5384970b57a0a85098457c24e3f5ae7ccb464d6efc4dd5bdf84a757966b590c7472439408ef8fb746f02f5a85f412eb3e8398591f389203a97dfd94177db69945db5c34efd64d61a3e6d85b0e3daccfb617b44130b1c80e8dd45c04f220ce837fb8b25a3da5d358579304b55966c4fd46c1e1b3f649a1c19b9df2e16838d9d29cf5a663e7482e79ef558ba39910cb7972247882a9b6d24f7a81f1c7bedf5debcb36333b880de66ec957370b4543e712b3f55bc165aed5c5e33bf04bbc4a12136fbb9b09de0ba8c59a72fc379791dbcbf583ee0dabe3e4a7236a29c131b18ed79e10accd4a2a7daae966d66f104f9ad919135381de8cd3d69da9763c6d4ba07ba293e73d54adb0b09162c724f2d37b9774061593c77cfc88460621f8c55e4f987cc4574d2558c8c943d7b06cc5d1481d4edb782912cbcbeb28b9e01e125aeaee5c68e2db0c1d308b02a100a2d2b78ab764f301b4cf0ca550df36a6d63202a8012a7c516dfa5d7bcea57c6cb5ab27d45e672ff773f21c289e1f8e061d86aeb26801f7763d05bd5db358ce35c6a179f36e7b59f005d274161d2c1665a87395ae01ae5c16abe97cbd0c1bb8af0b4c51414bb95fb6d6ae145b9e606d348ae1280d0835207ebe8271814c418001f808427d51ad5e006d23fcf665a8c7e8bfbf82bfdc4cd6fa835380fc13f3475fc17283ea78d87bd758b732d43c078d75397de119c4df378e0d02b118a9ab11332ceeb59e3f2f90ab285260c1891248701d9034fa288af49332d9cda3b2b917f08524b734149aa262fbc0f5175873e4323cf1b8830422553e8f47945fc8c1728a3d7f86553e7632ed2530e5cec0673d97b49ea501e22cae14d95d75b7953b10cd6bad39c964145229eab7eafb4040fc25c618e8c29664a2dd5852e63d88f2f807eb2201023437911e6cce640527e3c6d2ade4f0002e38359f3d0041534586e7d052943c53549ab7dce9d0bc06664abe9f330a9023b94bad9e876434986cea2ed049809f46d3684f87b97d5f29cd034dc24099e1f3acf2468a7d21c50d7fe6f0d324a465c15fc2ff57b87a45f4d6af45236f214a9034bab636f9fedd041d96a4a3b78397eb3c3db7a1a4cf0bd402845154043783336be07b9a5c63703f2fe9ec4d91e45e0b9c61a61e54679c5df1ccae5433f4b720bed702f1aae024e5f923bfea9a536bc6212b0a13d793660d4a643fbfd177b146d0c6972f15a79b2d8a5bd90b359f667bb78bc60e60882785c73ee73be65e136c19072936440d3de269fe88557d5a79a56de7d05737dc428aa5df3a4e9751a8f622aad965ce0d9a19064ac1f95a5ddf7b20976a47180dab4612e17ddb0a78be9fb4f0638791c45ccec0d4810f4e418c3fc4662b2416fa598e3272f101b8ff93a77bd04b2b1df6c83337028d00c3e6dfe8ba17dc428d68592bbfd4721b8699d359b775e1edf488cce9e0926e87d8f06a2759de2078b47e5b723fdb6905d5fa20f53dbd13493504a072ce11d2f71b45c3e5cce3f3241a49e3a16b720708345cb547bdbc12de1018f78bf76529cbbc9068c3ebc3ef67b739fdcd4f16d4f61dfb0b937237c260af17c14d3c44a3ab1dc1b8360c0e6a3d4ba2875a5e598e648a999e88b52afc8e32767930f6ba7177768bf448f0ca5d985e3c0b46bf60590485fbb1719a43a3dd0850085db8a760f66fe5531ef5ee25bea9a423c7cf663b92456932d49f6485c540e332e8a83fbc3b3f8a2abc2ee8076f92d977fef337ecdc7332a026d4240eda42119cdbae8887eecb791cbfd3188ea521bf42bf92b5f3ca5c260c65204fc91334e0542e8bdf02f2d97562f36053b2f61e9f6bb051571875de1a24996c62b5f844fafc0ed574822804851e012961d8dcf6a52e486ea51db0ba684fa72310668c5d2e7321bcc9944a9375c09e987e9877b06155645ebdd29fd06cdbf233bff631e9ed15926536790ce1547afb53dd598a7e47ff80b9d1702d770838ab0a0bcde900ce9320b368e60b05f4c4537620bdc3662ffacfc9a7497bd32044d42f432b95d50a4c8445de2040fe6ef4e1a8e2d69711d5aab20a18c6af8f1faa5b19e7922907003fcc956b61e6689bdc9c7a2d3a37145a85584891b4b1c7714ccd8330f7fd88b28e9c13b78b24169b85765e04d36cedc115840a95e7af5a07c2781f88bf9bce478f6b50be34dc8752f00cfadb906c7d7398b87238248e11d6e219a90d9abd3f876720624ff96768e6eafefa19e1dcf7bc2252bca560913358645695131e665d6241b5d18e243d9343f5567d9df9a42e4b5b4a1b9a52e5330986a24e9f3e3895690abf9c72a6ab289735be2936f3499bb6c2abcce74dd51bebcd5ea5ec8c7b7b53c4fc0a485a3674d67c69962ab4e4bbf48bf5c9f372d23602d5407aea4a76077a65505b2e9d3d22375bf221b0aafa2fe104f2b6372da14ed92359dbba4d07795b49c3959934f65eb5448e737657c380bd8ec14fc0014877fc1e48c433b0a9c11a317822cf84e6fd8ec555081ba8a4a7ad261cd3b1ad99037c03747260554ca6fbd3ac1f6e1764b6c8c68db9b621f034397e0ba3bf9474bc6ef351c6003ba752eaff2cd3e371cbd6a7e224f44ddb2a70cca39f9cb37f11de6c12147b059cf8c1f449d9fdf43b6c8d38c9d66d5f486aea383b6075ecaafbaf12b24e1616e35334cc4e234a37b6630bcab4a7805bd38fc22f467cc3da248cc5828e66510c6dece24783a1889880df5270eea9f926486d4aca7cfa33847c0216e11ada66781b0649e0941cf0d7b0827780623f14990e1cd306366cd803c09424d7ddb71d1cb775a2355ab8200739e7741645498f0135112643e0e46305cb106213ded3a56e22dbb388531a3c119e758492c6f7459e4ab897c30938a54be5e8cac51e8e57185cff8b3fbbaffe2ffe0c0915d82b7a240a9faf31f9bf8a2bb1c585232c3c327a5100b164267568716735bc09009d0a3cd47b1917d62e820e6af7efe4b787842781341725b5e12d3b7ed6c5963e352304fa98f166612c15f3726016c8455482636df05255d3d7dbc573accc2d0255928bd76e86f23dc239eb34b3120ee8fdabacde97b1e988bd539a4cf5da012cf1d156be7658f4c8d8eb9b4d1d26fb0b03d32ef6a4497d5a1e07197710288924bdffdeaf80788682464bbd0dbab35a566b384d108f9ccdb97824f7b10a750000d37310e815642a0634a89e47666ef78f7db91f77bb183c0619b9bc4250afe5b28b61cb37b2264493d69da26dcf2623a2963fefe4e1a4501d24a6417cfff97c5679f2652fded59b25c399bc00d8a733a333b0bcd68e61337b3329389595134a7db59727197475dc1d5cf4f64eabf801f3806ab7aeadf834eb24a3a4ceef4a9c97f5e1ccc399f0177a1b0def811a2d696700f8c9a6442644c8ff395ceadadb0168170d061d391b409ebbb358fd1ca6cd8818f60a93cca07acd11ed8df1aa98cc871790f99b019fafac8085760d8e4592de9e664b74ce2a8f76a5b4354b953b93fba36ebe7b3c4ea16e24cca4e581a1a14baf858ddab06263f0f350a922c797b3d7bcbde2c5fd95b4cc26dacdeecbb4e77a62fb8817dfd87699347e0f1e7227c9f414c9e42c7cb06fd784d6f66590e3d55b35c02541b40f6f12ec5de56449213ab4248bbab699c7b85f1868b24afb6be0ae33530404d44b99dedc0778f62855acd420b64d37e76e5c1f22b7ac9d768402a237f1f745db8661943b5f6e50e18c8b564760f89aacbb8a71c0c921eff979377dd05485989269da9d087b3d656113857034820d01c0c8589b5456633d4d1a015fa226687b0cee3989b12ab1e2b8510e9431da50a635a33da418c557235997e50851ae0f6f592d58e95b626ac8ac26dd81b0737a9f327495be6740f856ded9ecbb47841dd7bbe737c67ba45b4ed8ba6d6e6406b7636c3b21407b61d2772eeb2325f0fce8ac8589779d97d04d1b94187d36ab9c28271f95842a9e3d872dc0b61b5a2ac6fb010acaddf25b195acb1dbc90a33875620585d5c74319564e96b8e569e517b894524c85d570604672c6b9a56ec035e0eefb173bd5be59336f05c4ff27e38b2a27a8571cec9840d0d966c934a13d46ecc7b4281800741442c811d84d722db238d98b677b5504ead7a76f0f38f9e52514df20949b7aa967df4bf4b834ea98bf3c05c94ce06634427447d39c2c0923d0c19ae2a14fdd6b3d5f7d365cde3541bd75bbffb79e18f38553f8c91f9aa79163685088557da476703ef9b082127be5c0393c07546b8a4304384f388fd870a6332ad096bc61afac75a0ebd92310eb54244f7f20da297de2166ab3656c504162ba7cd863038ac3208cae9663841235eb8d07b0f889d5d9567ad3e0021574bf165c009ec05aba08aeb56cce2a12ee0f1ddc7fab7bafde2892671a6580df45d03a2fce4a74f87a8920fa1e7f755fdab11446f885762043162111bd26b5fb3b204f3ad27986bcc5b7edb6672481d70f585e4390040adcbaf7eb65e0dad451b89ed2d964bc594556e77cfddd50610659c6a40cd222ed358d41873b3f8db6d917fc46403a17967ccdcfff41f9292e8e18c07dc7618e7f37060d144269206b2492324542eb82e3e6300ddbdcd5e882238e8f46afd42aac200f9ab0634bc42312bffba1e0ce6b74404da09e20845a4c2b568010cd2c8e9b3220ca7871cd8368ee9d56a242983260302b6d8e064a62e7d338649d10b684362e9da416402bb79e6c6606401231accd1c14bbbab37d758fc35e116cdc098a7830b1d0e2959191df3e41137e6c94a1ed699cb7a858651c1db6eaded456ce5392d6e91e958c71931e414347cdd7024ec5adc7f18a2dd77514a4c82b36125f46dcd324ff8448ef16a072abb280f2c3e4c8a2a2dd098d2ab3034d3cd730deecfd9863de0a7a27cbc5bf37712752cbce0746e39d549c6f699a313f5ac8f4d3cac8874092790cc92620079ea5bcf6151e4f9eb78b1070c997039cb61f679def8e28470caca9959291fb939c074ec3ad29ca51816233e28c545e46ed4e219ec864548750779eb090dafcce8a70fb6018fb78d98cccc087530e2bd8b68ee73e3b71b70c849a7c4ad83f2072476ba691fa96ce51541d21c6ef83808b818dae28156e6f82bdeb0f43c9b536dfc95d7604b10134f57c7ba0fb684f866b1611f00117b5d01cfed8449dd42a62c6172a573a7ff9876619eeed3724c8fce2b2ed2a1bddc9df0b3e31ae3fa8de9c1cd910777a069d98cbfa829e843b9fb39a55d85c2b8112d8bda4d60245e21d2f6204edcad6f698aab71af3aabd453710a858e98c1c07d7a9f196c59bdcadf53a395d9587402c24f8e56701eef910df8d0bb36d43e8e6cf749984e7f7baebbc324cbf4da9aca9052dc47f4fa88311c5377f7b560e844584118da05b371ac8a25e846fb77048241ce9cc1e8bff6087af3195862ffeddae78890cec3aa34ae0cc5a90ed9cddbd106343b251a6786c9c4330263a0729e962b79c12406024d359f195baff4a3988643d4258b14382fdfcebfe0ff01a27ba878b3c773e68c9218dc3d20ff3e58e587de2639f339fec20ad3df843826c95b3d26010e254f042cc25fcabd5494f2c8ae02516ff5a0369611c109025da9e95c27a99f28c3b176860da3f095152bd26a7c47641f0ce491320ba5bcb389d984cab85d472d69964b3c41daaaddc5f1bd3fc96e0bb27a7fde57c8c58c32051756365c28e50a4ba88c2286c4bab4fa0a64d40ef09d2a0f37440cf8b4426ee903e8788024105967ad8d785157deab3c700f542a3abc6774b9e67aec4afb5bd2dc0eac8641e3b07da0458afa786a54c0c1fedb6ecbd4b946c4e038a822ac6a6548bbf83c25d50e2dc5050f359b3ecec2c119c03d3a50b2436919fd204b8c3f913e6c15b9289d842a273eb4a1ca0249e7b992e2a4b0122e587e02cb28076a9ced9f5ade5d1a918e8dd67fd1a2c3d839626f412babf4ca040d02a7f5471838ae3c5ecc364c83b8c771da57c8450b8957f39f97ad5f2800b355342cebf78410bcbe8624997b4d3618f83a202452047ba0c11fade456cf4da1074a5373d53cbe76aca4d0893b7f4fba8e20d4c27f392a5e13a5879a0e53ffbfc8b8f3a519f8d6acad139cdb18e2371cb61d5bd03615adec8fbd8ca7a66a14e5717e939447cb7f6306882e98dee780c0e15fddc5070b6413af62515af025e27dd43fdff3a41708194f146b20e9100ccea333dd143d6537d31abc0e0b06ceed0a529d236dfce861558f4c300854802e360d790ec80eada9654cfeb76f1cd5604ed38a0ef973d9d4f5a0a89b0d7a9ea37e769301f5c30b3646aaeb2675497e676ada62c1f52eaa9e15375bd25c01fe9e42e33ee7fa997491221174406b43bc1480be2b91cd9230511867046c2167981b8b5a98ec61dd7029f24894bea7506fd948e5cd824bffa2037b9992b712f443fb6287481d43e820d60859fd06d2f80d9e72d2fa1d6d5f576438b0b071f4689719496445329e4bc597c6ef169305a138bc02866cbb636ad2d340e03a83dfbb5553c72f74b6d47ae166f2ce33d9518e35d16b2fd9baddb8d76a2b62a5041e0cb604f65a0efe9a4153888832161440a067ecf6ad9e788c747aa359ae41c231424669df26e840b6ca2b06a56c19fa73097874aac403e74bea8b82bfe2d3fe0ef5933aee89452e6fff13f8f9c3da36de34e1dd6a2a9d9888ee596d635f69dfbc22ed93ca4980eaf0755edc0a8cdb40bd595283838dd233ce893f51cd10260f79f7841b722bdc1414fbe8a9ebfcd10362744122acebd71eac6d6adf51abba3de386ee2c0e4698f9a377de51dfe33dd6a8f7e37d6c83a1a54697f03f1e7745cbdcbe157aea0bce95cb7a59c03904b5a668b631a5fe93a331dda2410b0b41ce6251f3d6b0cc5ae224deb47ef6e3630d2aea57a525878870e4e08746967145361ac8e509b18cb78cad736d9364b1ec42008ca170d4a400208d36f3a5b626f59536a27478546591df789f4702ce0061a6bffa924023358b055fc51eddb7c1168567dd451a8bc35466494b6ba8942b88dc26331021e02be6351fd7dafb8a88847e0859bdbddd308dd554e17c010e0c904fdc70a74c51cc10d236ea917546c53474628e958889cef094bb319ec87f6b811010234c884da3c04cacb5839b961dfeb2e8fed03eb58de81dadf19eac11b4ff321afa2ac2f09a3c342f457b2b2b4d7ed92e7081855ffd24e84954d425bb458aaecadf864f368d6f7edafc2be0ba8c36448e2475ecbbbd77be0bbd4d5717eab9ff49f4852a12dd5d56c219d951f12f536d433f01ca36ad54e55db599c3c087d94c36ceafe83813310de59fc8f61dbc628e7151dbc111f36fa6aa44245143609d70dc05f2065ff65f0c5c6bedc96822b257dc56bb10ca057f0e568709e2fc088f5b08a48410739dc5ef3bbd4c210988b990e04b884f5eacd420c9b90e210b07769d07c67053a33ebe362f218b45441f4fea496e8ff75a975b7dd5afd5063e82bf5988eb639dce687eb7706b9b245b995eaecc5cbdba0c1567d91e12db1d29abbadd07c8b2293bed1d5e3f72dcb10cd913f91de037ce3c856ab5f14b7a338ce33eb5e43ccb9ba1d6d9e39aac4a4d45e1a5c44b2038c9589bbf277f7dbe255df1e9964a833cf16d6ad247c67b66a3ae2df5bdd171b8ffb827d2f0a36aed42ffe5aa152b1a53c19b2915eec59d18ffce3cfc9d86593b561666ac0709ebe1015ae406ba92994a025ee8a00fc11b12ea67d235b5dfadb888c9d17d1dfa25dbb3d4619a9b120735017bb1a6490048708ace4bd8d9eb6c6401dbfa4ff77d76bd8f672e5ed8b693d7572bd3bb7b00873645edcda431880d4d3af1d4e083e78baf749b273c5691b0984158d9cbe51db6b51193f0db7a7bf91146938cf6044e2fbdc1cdac648a011ac84f437aab4309cb70c877b8d5cf7e1026e634895ed46194405d791cc68896a70d863bd6a0f9650f48ebe11d8940cd72011e9b6c13a1442192cb5d26369d609d972bc922737685eb08186179c40079765a5b2a2fce262271432156db3460b1676b6af1fe8772d14931f0bb7f9944c9968ce715e170e1db610072f87d0fe577bc9677541bcb77b2015c1e3ae10c9675b8b18c7f07e31bf82ee79e116b5f9e9673b681ac9d6bbdb17c9175bcede76e4ddb51e63947e7c2241e10f746686091dcf1e2b9bfb770655f1335a8b7c6ec9472623fb7a38529aee4c514571962bbda8e8c516210fa897ae8b35e2053255d216bd3d55e8ff08b4f9224cda061c34ff03aea643aeb4c11af02401006cfe81a089308c9e45bf37dc10e5840cac3d0e3bbe618f4bbf88cc4ad6e0a50395025cf22390ad5017827b4efedbe4e027968d827a03eb1aefa1a797bc4827bf9bf2309dedf3653e9b09cc2c26eeabde7396c16d8edb15f674070456f5c825037499f3036ef1ba4927449ea4bd2d21de61011caf03f4c12469372f04a93017d876544a37df28201119dbd6a57349d3cc5d6ee795e09e6bf518a2ad6d1c340f76aa95ed9846b9b36538a88c955d1969891eca0df928ecdd0a572ba5b7acec173d6961561c42c88a9c163b9ba61d1602399bd42e44fe35c725a1ad17a0e7541a3071d3bc7e62ff0d0d655505c283df26b8249e06a1a2945ddc2873ed79e5cd56b453976610dc0b664e756d27295db6490915122477e86813f248becfaf719a6d97b36f45e9301ef805162eba3bc202d7e2206befbbc4d45b41b543d3d79d64f79dbdb2e5a2386cf258c7f7a40bf5cbd5bef9b800cd4f407f69bfaaf2a112b7ad1ccec8acf192aee852d259a0a8ce41180e995cc6ce7dd67fb25e10592bd183235e44af67b723a280d3269da84dcc36fc703f907bc93c060ed945867c801e9b0dd71a792969b0882ed5033c40da089fbb17ede06efe73028db4358f085802391b6bf9cc79e217a6011f56648241d2164dacdaaa982f954327e9e7a6985019785e441d60d3ffe6c680b3697a05d9155bd46744a281d30d02f31761b6423b7ad944ff9f85729a3db3968e02938db191cfa235ab51796febc0263f36a0f13c15bf1f2d5e9a73bf10c08e8431f98e6394f7c7058a911c9273be5d3c55b98fd042f33c6ffb97413cd840215442ac80f917ff31b15f132c284586eca22c4901f42f208fac488454da9e0f903df0defee12f345e11d8d9b225d6604558a30cef097458e6239f0040e43d07d3b0a676bd131589992dd1bc7cbdc5de6ca82cb5603a648db85c99bb11ce458cd4e4f38e4acd9613d19ff3e7dca088517ec46967275ca7197a38f1fbff1ab701be697bf5a09a598df292975ac4016a5040dd353a18b1243786a6301b68da37515408a7ae8a8a19d5dcfcb9682851b938c94baebc16ffa68797bc50081d56e36764800c6fd3bd176de0f5d739b9f341a7337ac46defcf748ed03559c305cc2ab53ff8fe234bbaf6fbcf4fa049e866d701637e2b4102e2ad33549a90e10b4d7fb1482f0b69982b8cc9a0ce8de73e90d5ebd798ff22bd1375446e91d30e5a1ba6548fc52d12dbfb99459ba4a6b70431f2d394095a6ce653cdef4b203885ea21aa997d2a6ba61eeef3821b14d03036b8a16512ed1f6fb760974944d7379a655f5604940411e09c2452b6e1585f1fcbec9e174413bff1c65f4dcab02f3a30505e06183624512ed03cf4baf23ad3224d2ada9eac0238a9c398f0cf559c7e438a1463e08653163256eb438d08edeb2ebe2932778299c8c5fedc1c175b0e14601dc453675595eb43a241d9d19218a90acf90dd5fe4fec665c6655c47d4f0c1285bb7034019a58eed7f079e4d473910d265c159db1dd6c01d9033a666d9dc84d14bf25efffec94e6d65d2506942aaff7474a308b2fbe5be77f33768612f8887a46c33d1bd044fa93696c453b5b706bd361f63646d30a6a16f74d49d8880b04e80bedd63982632ad6e151e866232c05f2e335dd5dec864e7f51d783a0f2505255624a690309bdc8f716809e3c7650cb3c9ecb3c396b0f5d06fec659f8e7b51b2ab111e402c20f6844d294ec3dd8d8cac450e46736d461ec63408eeea82d1690f19897574b356a55b4569d3eac45f501f36460296fe002f0f12d0a3aecadb9c96cd6a0e12f32fcf9b4fe31bfe3c8a16e505e6d04528237d75c8b35a012abfab260b13bb109e6927de96fe25972dc6ec516ce88d448e80ae208ddef3f0cba88a8ca648c221681a24e2f8a059f41f779168fb47cdf51852091387b1460fb9f66b4e887b02808a4e267588d16d27c2db38f096a56383701a3afb550eae3464f0d7203053ce3042b469960d2b70bd68ce973ef53eed02869a41ae8671049a200fd3e42f8d5c7551588d63821e5814861556432335cd3f0dd67c8020dd181ba5d6542caa2be58d7b72c7419405d0f537444a2400235f02fb27f9e01a93e6c98f3d91e8dbf3c5380b42166827051e9ab92a2184bf03554a0d67860ee19f19fadea5d613903c48894cfaff66d1bf56e9edd6525f68697bf7401a397ad734aa93786502dfab0ce2ca11bfb38a5dd843acdb24874557035ec959bd4e6fcfd298caa3decd28a0890c272eb19dfc4a44a8612cdfcb97bb7486735e15a6e4934415518b2876cbfab509adfc0ac0594a6ecc97ae6f3e5e187b4fc11b953df05e699ab8c247809bd67f332cd94c630bc3287cfdd41f0b3ac66486699fd1693163cfc8fdbaf69bc8651fae0aa679ef0f5170e0d833e9e3f26fd7543fbc06b6aa441e0a2a4dfee6af6fc597e34763000a42fede3507d6502195e62ce38aaba0f09b51478d361e1315cb990f412607075c18abe9e8acf17b81097ab1f3e416a64674c33b5196853026e809ae37b1fa09cf0ba1677625c95a8c7504d503e9334b40d1062f0f6fdb1ea448674802d8e756c3855e220a987b570fd489a8487c461ac025921fa02cd7e607ffd519fe90193732a48860edcf5adb9cf4f59406c5bfc3bada39a89618697e83388bab905218f9d7bb8d9855b81b5ddafbc2f842af22d5f8cb7a2ab1e272b94ab05b16929c56e1b5d117e5f8e796d4e2dfef632468f8b72dca94071a1f1069a7399a77cf6fedd3bb204fa5900f19b62eed46ecb8e3d4ea1e1b75f27ac86eebf93946b31acf68c9d197ecf2558d43d7b443f4538f596ba642f770a4bfb837aeed288add2547a460a9591cd88edd7cdf41556cfcacc3b260310bd07ee32f8765d7168ae51962b71fb83c306f7622f125566ca2dfef621ae081f626e34c5275f96822825b7133f2357b4b225625a2221f34228f09d938ced02bce814c08a82e6ca504356c21cee9d0ad45e71fa3480abc2be7064c118c0b0e599c5e73ac9e9c3a4584aa6b84cc94566b1b91adf421c85c997fe026b76a8511a2db7706d0049ef989003e89cacb77164f764199cedfe33881826b1eaa21d93a0efd5ec2c08ecf31d6eafc86eeece143832eec1c8e591d5f2adb36fa94c312e1d4e6e6f19a55e4bb3c48558e4d53394b59d4e91e3e09cdae9e4a27a66da84160c86f5ea1f7538e1fa133147c0aab57d475295a4eb98cd46c7fe2ddaf7eeb1c9588e49a0e27eaf6b6f058b43d569ff603d3a556796d261f56308b6e9ad3ebb7781686d21f545ec798727afc1990622ccedbf1f486df3bb251f58166820ecc46ce260b47ebfc56c18a2aededfef128f86bab6d19bfd2d74d2441d322cc42f4f2149e19c099e35fe77ed11d032f26abde450cab194ae1279dc71de576d66d8ebf2ff4ced52dfa69355df405bee7b4a796e529f12e1267fef64649eea2eb8b0a7e75da3b0bfad248e91b60b986dbb15ec5c009bcb870db51ae435c7b9aea149bd21a63e4b8cfce345b6820dcd9987214cbeec6384f5119bbf28211ea9a62e1b748281542c73099496662fc2ac73860949f1b3dc8a5b4a0fa402790f0111b169b776ecc41390e8208612c8bf0bfee27a9be4947843dbd8f7063776c14d441b9c5362a01c286ddebd4a551b08fb553a7a62435f7b6e7afeca30255ed31a3b90178e24a171ac70e5476ab458efd8786f2df5a69325c1892ddbdc5c406f80443463bb08ca191ab2d739aad7dc343c47bbb2d945cf2aa0850950c032a646b6979af5a13d918e449379150e5e61400b316336fd921fd85a99411830018cf64a1de7464319f64c4b6ee718c51bb7ee4b6e5350346844c0866bd3f38c4da390ca56e7aab6616b555703a2ca50ff70236fb9b3751549d8103b693c2e47419b764aa7599c7da9c9cb098d4d6da43f0724f72a2e9403a38b37780b65d664a34b2bf8ba2bc1325a4096100d833c891d3df1d245a0abf55949d1b4eddfe400e40ce467e8f3c2f01debee900f46bf5240754a1cce9233ea958bada4b5f78182cc1eb73183b977c139b2b3d2751794949b6f571cab0423268ca0f531da843395288f796a82bb2a3bd8d1245ae7019909307b9365db9d494939896587f840d10a2524f53db36540f0363415ec990fcf999bf562f34c4f463a6ceed6fba7061af700fbb22b227696e7de3b7d9be5f709a3c5252ad4cc75c1d52c0b454e552844d97ed33cec9bcee33618e017ad207f3e97da4789520fa1c4a4b004b75f74a72c35392f4f7f0b81f1792e030f9ffddf244eb0067e124c9fdf225b4e674ab82fe10b91b98900e008f94c7b9df84853d7e6a9500581f984a242142d7e9a9312747d7afd05f6158fa6969c191d43b3e5ace00996aaaf0a00e2a6ac83e1f9eb2f60adc86a01186d9b706198c6f70b3cc13670e374c548abc645a61b6701091a10bf18b13d443ee488e376bd5d4d5749513fd7f7dcbba377d703020fb9ff5f5decf7e71629254dd2f2b9beb500fcd7b89bf72a47f7635d498a782c3a35fd9f1aa414bc0f71abe6a605445682ca2c6b9c0cb03b21e11da53479301ec17df69df67f4f9cf9fd7f202bcd0a97494b90091e474263f62230c39f1eed03f66c199ce2c77ab98cfa76ee34933a8e748dac05e6aadc0c960cab1212e7e0be7a0e1a201280bdc39950735a29d82f45d413fc7eb9dc70e2fb88ddd371334f3104a96356ed1d31c7418f485a58df6ddb361979df97b660036963b33bdd185686ad0459f40edeaae2eabaf2daa3946a28e3e1527bc5cbfdf05510d4c89a50205ad1b5e7b565e02cbf369c7753e614011d4f102e45e6e76cea98f96e485138bde0f290112c1c87d4b716cfc67470aa84130ff4baf7bff9f02920241ad2e78c189cfb7f8df4a042e82f885f2c57b778f7d9248af58a499b0b514ac562c16e68d6bae05c3e3ea5e183e0196c6d2e66eab59ad128b62dceb6566e7b8dc3e6354cfca719bca334faff368a468eecd68d05820781975561e85f265a8e8c06b4d1d945c60291b125d37452f202704c9357c4e56aeb41098d45ef6a756861b6ba3cc7336ca73252aab56475957585f54538935244d0cd55961370e74d5f087f9473ee42b7f4f64e5020d04564f719d581fcca1dd1b5db55b99bc03e76eb3d54dad0ca49c54aef4cbe24c4d7db2f57b55c8ac24b31c4ddd674486e8284d2e944d604f94a3a3bb72b6fd1d7d384e28a628d34d74da1d50f3159ee0a5dc02cf3aeb7ea99b66c808ae2eba8f2715964b58719502e11c2d1c9339da66cb9401d9efee37a86c01a5c906bdb37b28402072fa9fbc1593c91e2ef2849a6da60822be2fc9517149261f2186083718b78a26df14c3c7df4a7e095ee054793dec5b2107d7f4a7c11e199e7d03a0c95a69e605f73f2d892d9d16c783964f811d810a1fcc50dca53b901a9105e9fa9f2a5138c0bff121aaf6e556782b057cb52d26f11fbdeb2bce05d0b1e81369c024639d7e7df14ad126646b95005a95bb8911187b8aba97f937b95b8598c436ac76a668870797450dcc266bb985618d1c646ae833acfd8d3009a0f89b1b911378e8ff9fe24b3ee74cc01d0c65f3c58b4f25221cdc34d1a53d024489f0edfcc30981562b4cdbb858c4f94c6e047831caa69b8558a6b8d9570ff54c963c10523dc57cafc1866e6c0593c42353c908791a6a0c2f29722feeb11a45afa4be896d1e4bc64013835d33244b3f131850d9b0cff6afc0a8b07580bd3c6e2ab38ae09bc51b845333ba28cd4b60df74fdc7e8500517326f961eca951afe7d1779a4a485958f8af66bd5efdef45ceac0f3fd7369f637345ca2a6534fd1f4928740bce52b3b55e480e518fa830b19fe1469967de756abccc0fa8d98029cbe65b275e8b8f4062f51e4cb89326ef28d880ad1174ee9e0eb00e8638404e22b54bfb4451fb7c7aaf8c3cfdb73a596994e4edde024f02288f14ff9645069352a44fc9ee6847e3aef16e0a181c5067e8a1ce6e1b96ab35205fe289353977922f8ba90d362dc2fcd3153842bf4b42afd0b8d3c4c7c54a9c5abee703548b04e056f1a7fb5018aef36becc3d42f5438ca5bf331046fc8a2becba0c017c4588e258234be2a6a79f67c2541ace222283cab15a52755593a452fe9d8925291c5d982fecde6957c75c44ba6feeaca3fde825865c9f5413482e7fb0cb501f00d67bb13bb192d462be64b7e5199184371eac05c1e44fe731c664d3f7379da26fb13ed867c1bb793fb7aff514684ab3bf29d373db0a333ed3e088b7de89cc580cf83d97ff33b3c27c6ae3b8bde768cc2e89989e595957bd2f99b85669873e5cdb3906df671660ab515952bca794e716fbfdd2578b4e659c8ce39a1e8a69abc06cb7ad84676897487b5b5943a927d70b61834f94dc04946682a4f943260a4008c60452bfff28273d6b9a349273d096db75256cf0b564df7a93a09a3c2a1efbad1c2fdeaad4f50744c653ae716fac98e709b8ce29ed81f18d12584544aeed3a9c60ef78c725ff5eab32fd3aafa98ce6465b97c5a1c50603265909e9da2a3c27b496b3a17a5652b0d376a32f9ccfdcdb4398dcbbde80ced0214e534341bd52a74c0389528a06bddfb2e79ec08e3bbd91dc31b02d0b7f11a72d3c323d017c5ee0aa243174a4baca645227f75f5c11a24a45fea3b474efc46c4ef8507164db94cc8d7deb90d8149f64503310e4e66a09c3632b3f170e11108c5b58e8f3fa21d057a32fbef91a9dae3a5dc37a988b941aad520126c2ec02f98e81f9a68115ed959214664781c2199857c1f701fcb05940c5e07487b4cb24ab49be565bb04ec5b9f8f68f61860d78a043d3575078406110de0f8abab48707f975672f5a99fec20d7dd66a2448994493008220c6d0279a11fa97863595a4edfbb5a23ddbbac642d30735dd0c64edb309fdcfe25a5fd6b7330a61f4486dc6dbf20ded3cc67a08aadd5908a155eeef3a5a495072a477c2be09300d7448ec3939c3079540aaca6b3b99d238becacb6cb7b2c4af235d71e5a019736d5f0b596a00bddc405ad9e95bfb676b20d5a1d393281f87295b03ed3cead2b0083cef626b7f84346490e22786a40657123921c77af77ee3106b6cde477dfe2e98fdc5a473a84342cd24e4d660aceb17d2da1f5c98cfaafa4ac264ca8c5fb9a08c185a9d5cf2844b1b2b7052a057d28c1903a86e49074dffcf6ab76d13964c9e876472ec24c959ee416ffd1cc1dee36613dd46ed4e982ef82ed836b5eb117488dfce7fd66c8eaece08ac1e9b82a230b9e2d0d23a4aa8fa040906a187a4ace68f1fdd5e6cfc29eeac8a11fae066706bd519aeb28f46a1bae794e67863d434312285ffd6373d2a574ab71bbb5b35d7187641a6ef5b2dda8cdb1a212f3c928a364d84b3c1f8bd74a4e9d3b8f8dd798ba44a57179cca51cf578f78203453fecbe6c2447603d2af86ebacf6bf49bb02dc0e564c26594ee4ea7b71a071cd02b791ff061d87c0406845d28b8ab7812c633624358429058e80ddc5571872c891633be7f8207a775be35e7e1fd1eb4f2b72bb704d58e3dc1fa08623f5784e64302b4cf55b8e9aeb213e3ae00b5dd53a51cce3611a948c9940246ddd7cf0500d303cd7b9385e1d091a3b783b6096cf310b4e34484af9ae551bd1c75649bf7fc36047fc15f2bb232d11c0030fe3381f2fa09d022b21bccf4246cf15965abd8b4640017437b1848d7b9c57b2bedfd248a41e9f49a0a305ea79cf29471807d20e6150a42cc95bcb9b2cdeaf74a0b647b7aa41008e1a6071b970945075b0477c1aed7a6cf6ea9f5663fc2819174f2251b232c4aed25e4991d4dda5992b769d4e166ce31b40c2c1210f26560b9264dff9a4aa655d9d14f969971529ba3f04af6bee4be776e3b5bedaf29405a1eafd2520b4d818050ba2ddf1dd297f513a8a600f923357c601a70a646d358b17a3aa2efaa4e0725ff4c54a978e56795d4f725806c2f02458f0b8a3559b8fff50bba9ce8e13b0756b22a220bcf48409c3e69d98332fe1dafd347a7977d915c55241961137f94a3eec9227c132ebef2ccab47a120be9f0328b92802c4a17d1d6c871e5982683b2f4eacc1658c4d632c69f6272e2171c880c5a25cafb81f954607f68d873dd3860982f45060eaf704dbbd2c6762d762002d2c78f754d81cc2572e960c314b5728fe9cbd2209b216166f3d7adac7158d88717b436a3a0e546fa209d86cc025920cfbc91338ed2c1a956bf87327779845e67de068e91defc1b8301d45584e949df957b97a0b72b26e047cf9ca66506d3044371267546f1495ea2bdee8bf9b15861d271ba72da025e38ef16380bc6b7b2a2b13e81a3573e03b23c73eba72a632f23b2cd17d79a46695f2fe95f19dea6a4332a710825a424934f0ea8f3faf6a1c87218e49393888cbc252b2378da0cb1bec55444b1e610e418d62de1cf48f1caf3c57f6155dbc712bff91276d0d0566e2ab81a41f4529a66e6ed26586df8b5cad4603f8c463350094f3237be16b01e61a449109b4efe4c3a02bbd6da5fd4a60b634c6fa2986673993d2929dde0a50c02007711e3c163f7aba81f749e5c5b2e0aea9ce4aa3c8b9e86cc25f5bb253266e9a2292c2452b1a65ac6ce6db1bea0ec628b0800c66a1687ef3717bff1c28f587d04b631498aa440cc7e2e08c303bd6f78b8cd48281d0136ab291f4c0af5acf73a34aa895af676cc83a80ae52a4dce5920b9e90d6e94fca2f943ec428fe5b3f3e553ec1fbda7da3cda4d17df75e28816222a9f87e4d3b6d1c399e42cc6172347a91729881cb306cd622d43e340ac5782b3794c33ba202fa3733520828cfa755f794992b013b2d342f43adab1d5b90c258a6c9263c5861acd7f93334ada5d5d82d648edbdf841e8a7881b78b1d0bc21e2899aca3eb55558a92423ca1b3bf387716485f1ea6983f54b05aaca3d128a884094edcda50ea076cf66cb1085fcd6fa8eaa05f7845a9b0322a576241c619f0bac7d260bbd4bbd46aa6862f026e801fa03b6e2f45f6833ceca2f42dfff6e973e52b859ed11d2c9817b5036180d1fd580ac45cacf5b33f830de5f848e4863b5fe7cd66c929638227d7f7887d80c13954ac99d7ef8d4491ba445dbe70164ab5f838ca09dd1ed83ebee22670acd34aaea6aba1f555a1afed1c8b9e8c9177e939ffef21cf991c1948bc27c196657974f5f764448b6994222d405b59dbe5f6815a4cdd392e6701d012efd7d7ebae9f913e53a22c5a1a2fa38e1336d980b8de35e3f3928429ab807f742b2899d152133085108e5e827872723385aa6792bb9b4cb67c68b46a1a6d293fc0767c7fdaf41aad98865e2eead75b31f7b703a4e763073b51612dc5b02e050d14bbf5ce91866959b2947c3ae502fda5f70222ad5b125f4e858c8077b03d1c3fd169a29c738c9a41713508fb64af44cc5d723d9d86652dd6349c47789885cf5ff82891177a1795fafb1974467372da7a30f5875a020ccebaac2e248619d45ff1b6e78cc4dc4c9d32ececd0ab8e053014c433c252d4d065ce9dd9742b2512c77d7cf4cc093ec58ff3e361c7eb1fd6ae69b870abfb05f60b56da3720380df32697e1dd097050a5180f0f46458f0403f606d0774d112c365cb284b368ba321b14aa0be8f13534ba393391bdf9127b74b8c2240c4536c9c292b310dab89465a705a9091a7b5a2884d536f1854709b755bcc204e7f7b8d5d68ce428288db68492959e57fa8550b7ef2bed0a27fe2a798422f5049cd25782759b938941ba95e933e62f9220d5e1bd64e58fb2f54f33792481f9fb144fbe2fc581b97fe89ac4f77edf16d78ee705204550474fd25174ec81dbd7eebe5f4b8c4d9a5045fd53fb7d56ed3a3a6ea75a4eff97025a9fe928083768f63cc5931971c3f10c9d5fff4e586c2c643d16f9ffb6cfc76d8599b44782da5584637c51952fb922a5436f4a47c011f2bb6fddcc9b28931cebe77d79f73dfcdf425c9c3ad70233c74b7c71314f6503fe0ae072bb31ba61ff2ebf485ccc4408d1c80955b6eac6520e72a958b851c5c09de9ca50feefb5ff243d725fb6d4eb52cc9ddf2fbc773b3dc8a854ed3d88f7b46b7397dcc1f094d114ede29c9c30ddcbdc04557d90b6901fd6ec7b8f71643606859fe471c0c7285e38cc1e370818d5db781c5443801e4f95dde92ae92a7fe4994e0ab07f02e58fe8947238209f1710aed5eef4579d7707f22f9abb092bfde8d6e44c44aee274eb49ad20d9820b3ee49fd1d56faf7c949ffe6657f0634fed06c60f70f81e607dea5260e6bc554b44dd88dd315330f17e4931c76996ecd96193a524f1760aaa4039e940f8def6cbf6cd5f109491fd40366f7b5ec2d5f52d8d1d113b4ac57ff73afce1aafa709ee683e23137892885a862b46909191d6ac5d635fed1c61169a12463be11f516d71ef4614b9af961f94d8419141dfbebb50b40f74125c0d1e568821f316d107c33d12206a86337fd81ca6ea403764d3ceaad0696df1134a681b8f0d1c8495a97ae4cdf9a34856785786bf1e474ee392294d3ad72b99f7f91a249ec9cc6276fdd3e564129d721e336df43d06224fdbe24ffb731619af24bc4c943f8bb788a528779d18407bdc2966a31cca82aef7df4bd0f7c5b57eaffa7bd995427ca42bba399df97c6fed223749d9fa49a4ca7c1a7d74353b982c72d0e0466ab037bccac29fc8be5f1bba3f8b19f0cc9033c8ad5ac9014e54766f2d4edbb824074ea206bead0d5ad2d59d35e3998727cd29af235da68960ad5c5771ff1ef6fd20c55f72bb1deb8303c479e9028cca35593650264e2e4a3996294ed5e5a17c745b951da73c8ab2353c21d2823b3c4b76413a27311c9e1e656610fe51721fa6aa052aaf246ef480b381ba9ced74f6ef864ece0d42e0d97f12291988815098dcb4d9e6ecc87640c7ac14705f575f8cefd19ebcbd5b7de614e2169f0a40dccedec9489cdee76bb662b543b99ec172d1dd2de58323e69b6ed30836d37766efc81487ae15b64e6f814599cd1e9c034c21c8c231d480d6503fb0656338bc99f251f4ba138f99bb1b32af4c5ebe64d5c7d661c6c2175fc913cbdf6cf9253568c179756705383e94ab3ef57a87c92fbef5d440e1bae7517822a9a60a4446772fff1397ee28b752e5347bdbf5f3070d009efe294fc39289351313badff21b6584ef36f39aa2a4b9f4eca77c877b4fe3da9ebe6d0c909a355723673079c5789517c2bd63f6170b94f0a4e1c2e82a10bfc0d68154a2f436b7bcc1a70166bf030a5087c7b6a013ee1b85982e70de49cb7055aa399b64b8d1a3d7f0f8174c4cba3516b0377398d4c04e6336f5b6bee7967b5376d9ff31a18a97e25e26f05ede6a53891034ad271fea6702c28462e17c9b53b066dcdd093cb3d72f7e1fcad9bb390c99daaaeae679492b268d898fbcbd97ec993dbfda08c353c5b97a74695fe21c6ebdeac817885daefff30e99f4afd25b98278e83a29e20a41f5fa5db6561216132470e818b5b425dd9a04dacbac0c54f35d8cf2cb40e78951675d0af0bf1ce275402a00b1cc1228ff401e79fe5c71deaac3779443e8ecb482d99246ecc9bc4e1f624f56243f7fdf05f8a83b14cd54c3bc24501580b915095ecec273a3f35a4d89cc499c653fa2221577fa60623c9cd633078407a7e17c38665250d59b1b0bea6ad4b4938bc658f376d6d9d2710668b1819722bbe9f0f91d98318e3b6466c59bb4ca9e4015d897a3a8728c880d85d7124c3ca4abd381b078130b2e85daa8f78db7f35652cec2439a7a6e091e1951ad6e4a87da414014dc026447b1c024f60c79da583f0076a7b02ef83153bfe7f46c2cad6dd04e6daae7aa0491c1a7b3fadb1ee3b9dbea6a5b0c3f6f87203ef4454f9dc9926b6561fa31a7f10867b417fb4438cf65e7960d1a21a943be059b0f1890c327e03bf0efb7217860faa3ef4fa23f08c25f2185027b2c517e84b78a26a50b07b9da9b1bcda9bc32c97ec23d40818eed56b9c06d59d2852bfdbfe370874c901793d5cee8fe7ade31ad4ba944879397ba3c55f7c12ac339741df7ffa8b4aee6880be76fdbe93cdceafa1ee645b375df004df24ad6f1ea2974521523ab7cbb849fbd9554e01372ae47f2ceaac3a7947415eba693e16fbd7b8e88018b67c2e19c5e830ba3916bbfb78cf64950db7807432e7a6ae017776aad93ba8e72fad4bba60572a7e9f3d58d9821b41a7eac9eb084a2c871ba9c4f715b8c2f6d0698476d68aee21b9d8bd617b2a91d0e48a0a954b438b671768762d0041f53bf05f1ce59e9568e6a9005d223a23941d409938044b96b864cc0dc63178d9c24186bff6a8f7f3118802c8ebc8db1b39e00035b46e90773ce2d12c34bf266d0927ea4175378a374c776f1fb96483ddcd00619a0648028ef11077500475e0111f8a5be16282708e0df373071bf2d2b54dea46705762587f87c56715bc2b8c5c4c83ffd468a0fa4460c7f5bcea769299ecac07f3f59ec35d039fa538a859cf174d6f92e09905511ee05b124b042f6e0591f05a87d22eabf33b7d0f55568732e9d28998cbe74bf52c40121744c9c89d0256b7eabb0663a1e45b47f1141ad4af95015817c3ac8b6332c6f4b604a0b186dd0af02863490df29c620256128b8add02f1e2210023445673cbb4d76d7072ab0cb0d8543a7a706c13a637167e04c526c630c2c14cecd36e5c3cf98f72271c7a7efe30da851ac14a734cabdcea2422c40f3ef606e88c8144491cfd303137c4cb04df3c7426d13559ded1629b464f896603109348d9ea131c3e007e758f141127ddf196beede8a7be9984fb2a222affc51c8d3ae0f9d4fac96a91fa2f7bb7d6176508d31d64cec3082209510ee4228a86121467eadb780781db0e4112021ec32de2a9f029c594c95dd5d7739468e62625c6f585d53bebb48fd2c74d686cc91a74e5909d04b370ddf51cbbefd2dee9ccde33f3e1c9d9a5004ee4a379e0673f85743a2a4845043ee83d4153623267e182c301c85d346f03d3bd149bf8ba1887e916821c02651bfa07465e946187154b836741a1fefdf3c4f79fe43ca8fa98af5af091ba32d46947905d4045b2f17de470e4339e463a8e8da6ff71292e71064914d3709019241ceb9afe4a82cefbe0319b1c64545f5656659b768e9766c0c1e986b151dd20ee6f51286bee39bcb460f85272374a14139139bfabf3d022abe9a874263e130063df05d09d9ab033be65c54e65297f9dd31f5960ce8cb0374f6fa41d343a59aeab213c017090fd158980661fc842e2390baff9fa0f222bdc22597e7c0c8b092586fa49d3176c8c333aa06fb47f01d999d399b1915e91c557cfebda92f47232f2c7f629665fc69e62f16db7f0fed1bb19f690fe95e12518014379e2c59424179bb07ef8d237d4c4e56cf8d94ef06f56ccf1d2bf60fb8d528c9487c44a48e8adce351a7aac897e682243a1b595bfff6955c829b83ad165b4a991da2fa33d6e2168b35e930f650644a72c6aec9cf5762b949bf212f59b4a14f412acda297a105041a9c0cf43f3ebe8821856672198f5c31d662ad91143f15c2f6f08feae12584ed5706fdbebcb7838ea048fd0a9ff06cd8758da7d7c04c909d7a7d5d7242b71e0b2147409c68f00ec2ed666177bd55cdb82a54552d22a49acfc2885265c8f5901bfb387d1fceaa40f06a616ee9c2b7bf2c4c6e9103b14276c7636d1b2d0f67d61471a794a07612c811e45554eeee0f809c484b953d10b58835d6030c285452ae1e47a84b51984457507e97af049c36b8e404bfa1c9bb7f0bddc98daa4f25ba9182e71b3f3257a62f36640edd5ba21d4e09f94d24e121daafc4ec5542aff4731d139b8360a6cf132578067fcbfc0c05fd51676e7323d7e12b6ade4782810e9c08bf13eaea49ae6a4d00a772eb5a462a836a4965ef3569136754f25daf72359e4f833847f8f7fde3ee257a73483dd55263fdb1a392308d5dd56f68335f5feaced7ec764ad3e487598e5c9416a3784bb6b207e4f43342f034b8b2ece580368dd8fb91cc51f465265b0839adacaa6d877e17ee81cc40039e4cfd9fc218b0575ebf1f7e0c0ece28b67e13ef18cc2e5d5fe2af2498dae4209056a1bdd440b66e79140ba604a0070648f41e7493318d0d66e0a89b0ef561b73110cbd106ca99198157d3aba6372f24c044a282bd676864aab9a42e361948e41d52d413d50db79f606c8e0df5bf78ec83abffc2ccbc8ea7869f9930ccbc603d025bbbd5aa6ea129006afcc6ab9180e0d0ff4314f3eac24576107e5349170c83236805bf25707d5b1de14513dbd50613363aced9f1fc61e6c14b9138d93f28bef17c0d9ac14184012842373f5a6b518f822162632af9d08c5dc8eef883380e1456ab80731171d548ecf57702f259dea0bcf89286421f8d5f9352fbdc97690c3077a734b5237da15f6021f34989b8330f4f10513761561bc4172cab6d88be80c025470208fa3460ee96aaee3cf288e697b20a35b70d8a9b7974de387b13bdbfcf48b5692dfdbf1cac2afb5531c9631b8b16790465aaeae07ef1054cf1c1280b81cba21c4d3c7265c97a74c8feb9ae3617d4a8272c09b9eae7737eca4da4674c749f1ee6a020217d83fbb0555261e3f4fbbb0e04c8b6957f3f2c7ce0f9db12e9689afdc4fc7b2c1d876305e99525faf91ef696a9925dd24e217d4cd8bd2520ff55e0b3cd151949af804ebdd00863189d9852577f1f25e57c907d05b8a403b1a988a1fa86003fa2e59fd76186628b274fca1027b3f1689b3bdd2b34ff06ddcbc9863f776021ef527220a6e695886252d748019f1438858b1130c19a596dd0b14efbf7d5dd2c2f011fac889b69b33e3e7e166a05c107efadee76ec695c81843e8ff6c300e7c405f439037f5b9a33d7c2683248ea28e1f708098925be6c889e6fc0c389a10c3b152151330af571d2e8553c222dc97f98d82b24aaf0e0449269d5ebd86d50dfceb1a62bbf50f4965ddad4ca705ca42603ac1ec6272ae9df4e902149f7f995490bd42e73ed1c3f9101511e860dcc4f7278c84bb0ee359b6e62040f3a2c293657e7c86b95bbdccc96402e695c0e1d32c85d72ef0bb56a0cc30824f669ab110efd6e49d7253235d08db78fd7abcccac9807a425539d75fb94561afd96bf4834bd3f47f3216aa79de3a404b5c3efb0d1f40b433d182a4fd5f2d105e8d22d8745ca7207a2526b05b03922cd497a176f5a8446b690f39f7e8c4f8dfb10f76567cec8bc6a56aa21fd80af6b47b5de95b54b533fe6ffb17a5f282b6ba7bf59ca67923780b6e8bddf4e3bb2cab87d19f1909dfcd128cea5fe51afc6c0d4c8f825a39d4db39ecdb9f9c76d103d892426548c53a7ad171b0db20f5114d4687fa92279eed25e04b665495f36a8f7651cfd0d6248d5d5b62fd5e20fd7ad652ddaa6d1c67b482004f8dbab610440df3371580d3c8f9022ebd9c21dfc0c6e216b982126af9998aa549b0681aec3ff10d28be96a848c7ec0405015b534136e2f546f6578f3fee640f522952f04832857acbb79e0452862ad01582e4265cd93a73e8abd06dcecfd3e2c6ea7a05ce798b81d703a4b1cbca03d9ca7a71f29df9215afe7816db03b4491d54adbbf59fe64eaa24b7d2eb59e6f9959bf82ebbfe83dfa325d9e33c04d1e3a0193c3ffc14148d6dc7a272fe06e6a3b64b2cd0ad2f5494b0b4c7340fb2a1acfe1ef10d40cde001c63f976982f8074731e9a2c22455032f0a65027601a474dfa0a9cdd38ff8db38d66ae1bd8280bf2e5c8ad349e2029bf46ed7660c257b4d8f8ffbe9e27589d4fb2238b39000503980979386b2e82c9cd9e58bde27cb7c49e1a123c37238de48a442515a44701b34baa5fe70745a23d5dbce0f0c004e05bd3478f0e89b096cf75b2560687873f85cd685f2a4f9ae8ab8e58b52ba4b882733679408dabd9ccc1d79ee6ecbabd36953436f3a076a810ca3ca0c8802d575494763b382f9ea9d3687c60f9f4378cb3ef92dc64cd8a2d5e220ab4299e9c8695456f32f1abe8b397d05a812b4674bb68a274765388baafe11a4a292f70b54d2bb5b591bc901a8b5a4a0741e49efeb20ffd4df389eec1f2ccf0f487710f5697471a2ca380a5854bcf7831137817510119a6579625c3eb83d719ebcb95834db5a1942245c7badf0f4713081c1b37abdaec64c9790c804531b3bd28e6e724cbdc3e8ae2681cbbb179ed313cb7a3c4bd92bbc3de05b48e2f8e90392e3bc5a62da2cac55f94bc199b2e153506f31cfd1524deea927c37636872b3dfce25d71410857fd7306093f879569499fe13291a81adc6578b6fbe730e781765cb6f1d4d32649f7adefb899f7920314cd50d345214f180513b483346da8024af19dac8c041047c0110a6251fe23c1e4ef20c76bc20d5c23ce4c2490eff2b73f37f9ae585968c0f0a19387638455f87bcd2efc5c21de38c31b96bd595b562a15b35d9d503b00925fdf29954e44dc22d8d85c73b0b80c95a741629706972d0369f8e339cc49beb101abb47f11309a41492035ca30386dae3b46fb270832d6399455939f6347886f91064d4b284f7c33d963ea9be783e8b6b34521231efeecf11826cee465df492af6d686564c199e775a5ab5c58e370f7a1359a29a51e090be0db224d51dd04ac1655f135b4aa705831d1bc5726559a5c1458c52b41ec06d15f14e4c1c2b405d31d57131002219e62780437327c2fe59c2dc11d1e308358223dfda2aa8da227eb475779d87da96ad8e3b890b6cd0dddbdc634545fdaa737c0b83037df1325573dc4cd13049628f68fa99e8e63018ea369477f011dbc1a11b3fcddc6272165c2f516e3281cb60b43deb88923eb92e0956f56d371dd8b0ffec5801b09bfb595c2a35128703e557c9c24e73531b5854aa6401afd0ef4b0f27d067f7105d7a09234bbdbedba9c547611422cb4275b27032873098db8100af7ad48788e1915ebc73b15cb7a08fcaddb5f1def92a92ca2176f414b5c5bb00326b1a3c8577a1011ac016dcca6cb3672df331e62134bab5f3e7109a80c24a7feebd8f34bc819d60d5743e49b9895ba176211b1effd3a0e3bc487cd0966ba9d065b6355124fd7663500667d0dab4f07191996c9b6e723bf83fd8db48cb30d8ed89d51ae24a02437df6c5aa1a5baac35e39b045a17fbdcdfcfe4da861f825c493955ee245929d5b0e099ce9cc15d806c14b031de4e9591be9ed1ff33b4624cf19bd918a2379da2add7290c1d50c9386b0a6ffed1244bdf64cb70c94c00921880189b4f59ee450d01456269ba1964ce02c11e8335a7260a0ccf68bb88cda7183fb219c1395612a3ee76c1616a994a1a9800d8ef0ff72fcfa3d3532241daaf2250ee2f607c078f64ae437742096545aba6dc53f1e824938d4d96f9e2f5494e9624baa9151c7e3df3ee934ad6d725f4de39827a194c1df576e119f360c5a5d13005a261ae584efb704ebdb5a3f9202f3b74568d644ea5c93768292232f96c54248e575e1233696b7ce2ac431ff74fe1c10c6506750367bc10a1aaa6d77935504e2d88aaa6f5709382b4e177ab3c09dd3fca1e8789020e7faa80c03b60555c44d4a803e178a81d1fb23f37cb5e9a386d650d687081eb738e05abbd26ab3f4652df9532a7f89cb1fb38f57f874fc327a5cd45f7fd7ddddcc0c7fce621fe0c30f1a9e0dc8f90e37d3d19bbef8b94d1d6b0f77903ffcefd43afd10206edc3378f1b9549402065d57681ce68564441bee4a79bc24286e3f6b74b767fcb6d945e029884e376f1dd8ed83c31492a5d62ed07a5b2ce382be874c736e7eb018a1ac3d13f54972d28626bdbac81a062fe679f1624005ed5b695a8fda568f08f2507ccff64d29faabcde91785848202297797f9fe8e8c7625574c76eeda7ec4aee0383e9b94d0b244d42663e56c6733184e61712efe975c4a7808b54fe1f7299df8316775c6f3f6674171635c803b4491b4658772a1064054eb1b0ba6ccfc9e5a76258dce6cb73cadecb0fd33f27f52ee5e016ba1068a536c554783bcea36be0597f3fe9a750327d97ff8501fca4bb9a10ac8a7f377adf9db2a028cc83e6879213e264ea6474db14486def3033017df66777ce8f8390cb33f614899940a780408587861947dd23786499887ddb5428e653ed64ceacadb7721e8667f4df986d1c82a0079ed6ff91147d7bcfe3a2809ea2b4abb0c218d7047517bc154e5c1597c804ef6d1d2515016531c2078509fe32249c0b79b04d8fa9632f93e844f905fda951ede2db89a822c87c27b8fbcf8a2d1d33256c408025ad34ca76b8c0f23cd30a2197b56c91e7f8a657882cc02b7f4dc4523c99b8fdccb0b95ede621f4366fe0cfbffd7f202d15aebe617f39c737b416f9d09f4c4744563fe962e487152159a6c2f5d5ff11c5a75c6b3135f33363e2efd1f43d5cf5e3b0bf7ad01cfc5a09d741213cd06ac6ba347c7a5d30990ecdf2d11c65e79ea0b6e027f6463e087bd5491766df0ac17db602541b9ed4acfba65ca1c2bc87e45131736a727fe67ea1d94a5d23f5ed15ae6aa3502ac6ac3d1f098863a92aa6b392a05a9544290d764a4519d2450151dde0689f5591ab6d5003d5557d80eff26dfa35aef2e3441a53feb6d16012252d8ecc4a7b26fc6092a23c30b233228c67c381be6b3de8798c930a4e7e335479b72e50bd712e903912a41890d489c81339ce8099a329cc2e840089ffb8a3c3269fdf9a31f8be081668799ec4b179e51199c7c4dbebe0d47fa8c6c49d9c87cf489ae80f378e92beddbb2a510a254dcb110f343dd143c7645a332a7b9fb095f92445fd4696accf22430632e7a66b8d311b3fdb83251a63313c33b819667f02ed74a10c5352e2795fbf5157048f86f6356b87b7926f08b8d83c8b32f6e06d5cdd2bb6298293dc3e1bdf2874fbe379b2770f410cf43b48ad31b842e504e1842356bd41a9aee85b99cfa283c9e0d5ecfa372fec5c7d4c8dacb3c883ef5ae3c76c9ab6ea43ceaf3fc554419fc6e9674943d76c285de28d4c5719bc2fec202e4e27bbc1b8ec97654cd8fe7ff517a0cc0e706cf5ea233d80f2904a34b8a1b7e13aebdaa7708a2511b4535cffb0b9334d0b95862744e5505d4f6639aa1845be74435426e516b0f6101ce601198bc2a2c896e3d25812398dfe0b2c2a6a6912682d48491d364afa333fbaa72de263de66c675fab0df39cffe717f8a005c2dac367dfdf6a36aff329db8e6b77ccb92742fe73588f006199b6ba44f41c18768c8adeac3df735dbf826052379deb8485b4787da1aa786bedf175f0be9901996585e82bdc7cbccdaa6e9727b9080bac57b4f32d7da2b526e96466010ab819b07f33b50635dbc768a872b33393ff6dd716ed994bec04cdfcec95630f525dd20a597d5e655117e4e2347413fdf693ea6c3e06d0d366979b93be90598d1d5887268813f8e0ea9194d553adb5d8ec8b48b95bf93494f667c2f854b0335694b40877c71acd8d7212e151ed6556d656558f31fbfd4e51dbb65808fa5c8487aaec318382d3aee642703f4d3349a773521625877d7d1598a6145cb2195025a293656404bfecdd5749e6b0268938e3103302ba2e4c267a299c4b54bec1a896abbb38cb49b31014d7e1b788f95d616c8a19963e0727fe35b1d4536ad7419e8c386056c8264971d01a16bf93e9001a51c8db798e77ad2463ec4b9557fe6d9779c40a1d75b2f052a3b210bd385c5bf59d30bbb0b88cac19c2dcfe8ac14bd870517941350d526d5065183ae1d6e71dfb4d48b27d85842175e50430fa956dbb30b5f3d76012d12639a6df4bb19cd19d2d5241e546a516ae4e5dd4d5e2658edd17ae3b9fe217504920d820ecdf1547e2f4c32f1ed45ab8afaf596b27bdab0deba11f2fc6ea03b6a4518722d314d2c2f3078feaa721cc64b724b1a8afe8eebc72846357ea22209aae55dcd7b6bb2f5c6327bc18eb63308bd26438749f32b91f43dbdd665075451fde1d9a795b1b970b839b8eb6b621cf5e7348e20095b929a8afd5348901e84ae802a5c63206e0f1fbb69e4a66e70b8f4c181f6e043aa4653ebcfb7f5a1fd9482bbb3157cfec14697258ea7380cb0918464333334d64aebf61c008f6069cd395708f734aad6fb7b6fef95cce86f4680cdf036cd45d6178b936b3f31695c4d8597587292ea7d25c7e9a711024dff2aa1d768b91398fce2b3faf622f0c5134dc87cc7276d4074787ecc69b72a1cc7a69cd615ae20d5b7ee60cb12a0efea4534c048511937420ce24810b8e23debe3dc3c48c84ded0bb376b5de34968ee4e87b1527cdd271c30588004e3a10b875443e54df5b9176cb892587a1ad425fe6d0302a50f9df9a2d5c3e651683629b537514f4746eb9f1cda19cb8248dcbaf90577438470251285ac9119f9d6520003f80f9f27926c91026a6ef63eee6b7a22e56fdc04d6f3d95ff05be9064e333354b4b5ec3a23a075720ec28d5d51d72d76e03954966c73d7e032138fac965aa70af4e069ac7297e7d4a1ec3547400cea25813996b8093eecd435f266badca351007ea88e432b77ee752e631c2f4457dd77fce7a32a89b70f9a8f562058ec6ad69291cd10fd84c1a27b2f255fe4b6a991eb9b340ca525ee94c93977b0fcf418a2bfbe29f9e2cdaa89150a10a2624001de0d09d027e22ca0248f54334570ca26b4ddb1207909d2345e499cc9a9c044e6abb06556f06bc33680aadf30364a86392908d07ef15db3b4ff8b0b448e68073c38f4fea4828875a4cd0eecb9279fe026590c42a959b740de987b5c2c8527862d114a038e3a27410e47ed23f426ae2f7ef62adee061c7f707a024ef0c277b0af1f03c26eaa6e23c2e840561ca33958715cc91e85a8c83f452e71e7f1527b549d9ecc75929a4bffad153368d2fd8ead9280f04d4eb1ff1472736b5dde8b2e23c923e5e283c59f3212ad20c972cbf75e2e51c12ab4ad9217707e1bfcf2eff75597e59a9826d0a585faf54fdab73bfa725e69c1c5e9fc5c2e47c4520e3ff88d8acaff7ea1fb75eb84a0b65ea829aff734e5858361d0512a8e7781ae6976938139b8f45d6ba602208981be2ec5e03edf79f408a8111634eddf5334ccaae6a098833025c8858cd9327a675ce2c2ac33b0d8d4796d097c814587bc218e138f73f85f7f5d2a79feeec167a2e6e8616b8dcc80e900d1fb14e756c301cd6f3da7562075e44676381e4cd8509a361bc42d7e1b98b8ed3e2f366aefa3ef86ea117505b4267ef15aef0590fcb4b129e83661edfb4af332d326c8e2fd0cacd9e9ba2e3016a2eb530d2f886c8fc82a1f916691f406f8f3e429039e7a58421c1a507dc9fcd2f3d8c2a0bb40267a66627e760c8262a221ccbdbffc7c31d3b5fcdf8aaf0283da6f3f7cef7b93162d193d2f746a4e39630fc79de299875ca611b385373ea44f8bf66320134ea52beed4131f4e25f531404939053282d22225b927aad77002e38ce083326dc25067773dc7c02c5037349456909aaf1103ffc339a1b195e0f4327a9bb09c3fff965ee590e18529bbf9e0f06ad9a85f0dfa416f66b14119d318265c419128d54e13bcf591d869ebd66708c1ea609c791bb78e3117c1c66b6bff1af4b4a0073a1a86bc950b926953bfef33bbf19f8928e1d35c2ac7acefec620660d60c064d8452a2b1c0c74605393fcf1c244568a4dbe72f78d48a312e573cfebd54575472ac8ae681ae13c1c336df5130e15b22c826aca8809c189f3bd4226de8380156d2f5437124522bbdac865110135b66fcf332780369c7dd609221e7310e4f69872ee72e6e2a2826e3ceeecc791b30801cc7beeb80f9a85975f0c4cc8651c06a0b29d362f032553f6bb8bd28b0d3b675430aaf53ec4d2a39d8d95019e8443de8b3ccf0cdcb741493fe01d7cb477a50c7d0262f335b55a0ec3815b9972e71f8a12f030460463876abcfc1cfc0cc818bd4c3aa61a03b53f2b1142fb78142d370e08d1e96b1475d6e7637151b810611165929c7a056c260104d70f53e81275c0cbe0f51be2904d3327f5ca04649d48380a55fd34ea043e7b9e8fafb02bcc6708219ae347ae4fe21ea848b05470824e5cf3dbfca367a842894d95818091bc868167bd24396dba3e0a9c8f16ed43bf67ce0c780c87c929bb6903db2e64e400011a276805f2614aa3dc5ac5a08d74b993c98732c901e058cfaa3b166467edc742a7054944b8ed2e37b6b7f6b84e3364752e9467a0804f85daecb97f4dab156bdeae60acb2f1a17216f968a9998c7a1189ba4f74dbb9f781b6265a7b78a49f8917702d3fe1927e54e0249c3bf7c269cd02a1c3d64551f3dc2fad4c11f00cf0eb06f9fe16278db160cb31db2ca6e25ac5cc695c35a2b2c2bed2d7b45662beab5d563950f909f6fbf8212256f6a2e28f304698d2bf7b03bc6b208fc5895c0653b7c57a17ae348065e734614cb1b829d7d30c2c7bef40170e7f76ad5e8e9b4434f24442069070e15630588c3ff22b3db0f52b434c52b5b08614086455136c3e1717b9799fa7df15cca1ea6fc81430f0d020ad5a1a3989f616fd96381eef0ed2d525eaf196facd672cbba8199ce19652cfdc9f03c2ea4d48619145f3b0d07f3ea0dc0625c0f3505d8e2f58ff24cfd8c11ab4f83e6d811a551e327a879f561de0486ca78c7ff64a9a2b54b5a9da039dc8dab1b4254af23df1a7340c2bc094979f538202f35881a54b691d1fe7a0440b29860a292033fd7f5fa0c2b04763471d2385504b68e9acf788c8c0eaf16892af18b63540ffcdc997c9a05131ace1d97bdd1f551b236a263ee8c82703154508c7c70b5c40662f175af928ebe84bbe3f651deba97bb43e6d673f678435e6e2013bd5afc22fbd83286ec5d7ec716694ed1683c3061e08a08692657247fa445e8ef21d75ff825b6fb6e34d8f55d76ecba73233eb4b31f7a6b730c9595b484fe0e559a66d695ed0223b9af4f053da24c36e5656ed008eec288e78c864fe414f0a89a1c0bf6ea734f032d2625b39b67d882705365369cb5d48290f41a470b7ee2ebc120e4998c095599b787fc050feacc01c0daacd2b751277b16f21290c37f9d7c2223dbee8ab568e4f6657df483234cbb2529b5a7c4935577491b49b86be9c66f052860b956b3bdf24576a35cb25da3fef632d9624bbf07df68678a13e6211118d33236e65df1774304139f64acb8e154982e73ddbb0eaedcf3b3fe7927a1b9fb41cb4fb837928e68dfbb45e777a7bebff31601fcc62c0b2b0e3e213b7b77578ba681bb25316c7e12199012cef173d07e982a599d52ba8e19ac2c494798c5f9731c63a035ca8accef1ed8b67a95b512d5b06eee8b93cd7fd18706c2d1613f96a6c3884a713daa580a4d7d3aa224e0bc884f2825a3a56df725593874ed73b0c76eb48847ba7abf7f8c5e8eac3b96b568175464b79a0e17ab78e8921de66a75dc329f01931717700e18e4bc636425cc88d84970292af43c877d5cc819582a0035b74513d34b9398031912dece5bd3122f8833604e7672c019e791f2ba484756f2fe1ce4a44603c422be5c6dd5f8314523f4298bdcfa6b7bcc45630c32c11e92f423701ef9c290b85681a208c83ad67a49c5110c126260bbefa3867707ae106029c04d6c80a48beae36919f2e0d76498589f714269fc53c194a80d762305cd822ac2620028e6ba056b72ce8f54ebc4dbe0109f505dca953f384ba4b266749f4f2cc7a610a62b6968bbbc49eaf124a751a20d0e9e3e4a3ee03c6261b7d21a2c2f3c546754164838a5757dd532531c3a6033ed8b56177c95c035965b75420e1e20cf88d08aa64b1f027ec9f8399ea9963ef72794e79fcd2af000843cbfb2afde34a0248bf352ea16fb3eaff2f4d4652978644cba8643e04df4b117bbcf1a108b11dffa68d3b24de0bebb4565feb5b4206c9be659a8345bc3444c6a3dc0d4e7026fae2c62f4d4a302ad729beb142dfab0ce4c545a8a913b05ce4dace11396e21a9ef2c456242cfd93e00faf089a53ddd227f0bed9a998541a7209e7d42bf841b2fd6f8f21b28b4ba2a0efdbb81401bbf9514ab6ff4aedf11485d19e2dd19018aa8439458af5339419ed7064f2aeeba922fc43250df3ebcd944ff29f77b09a9f823b6f688ec5eea6d4f917048db558b2862d109bfcf00ece3c8d7c80bdda2d69b1c04c6949003cec1dab80b35b1c5d1b2dbaa222abcf6237e9efdfa02341087199c687ee7d078e1c461e2108bff8adef94cf76228fe40a4d979b55b5173fe64d6c90fe5a633e96f21e1fdcd99904011caf6ba5fe77c6d58a5ba81a22af0f6b05227ab6eae38fa12a18b263185d1efdc86ce44b77aed0e1ed77a47ab40d51994423712a01e9e70461758d6bfad2c8bad2375f42fd12a151fd9f0faa82958adbfe3775e982acb899a1939babf06ca8d47fc5592277849c1085bcde70fc2fa19cb5ca1e855447764aba7d7ab2061b0808dad5219d30ef69a7340df9a476376470ea9614d058de1aafa21efe879b1e56654a9c5b22eee07220945abc74bb6701cc7d67966c88e0a2b98a39ac1f9cdda5105bc07ed65e6467fc00077a8169c38d4efc9ff4aafcc18f7262ef3f9ba9762b92c01f57d96633bb36a531f5c92b8b80991cea15b8078165c5ec01275dd5b9c1b60cbd84dcfb04245a9acae864143b37b9ef86f21bb40b2e5daf3405ebdc346600ad90fa098ed81ea5aa6b7d0ba401711d86711988454df890512431a00f35bca61644803a37a6693e6205d773484bd3210bb72bf6944452603cad343048fc8a274239317c2ac8877962f48a7b5bcc642699265e166205d37f8d824ef9a3e93867d8a2fee81dc73f2b29df1e22edea113848c1fb0df4ef9375afe6f126e2015661b3db2acda8f01d0ebed08f53e2882a493921e185a3bbb0c5288f44a494161569949ecc1dd043ef36f860d08232f6e3f99f640009282acb2e749da1de8cc6ccf93139503f3bcd49994d5f43144e42d4f00c08dfb2c25a88f6f33e17582eb57417ff57f61bcb81029c5e614298f73a7ac37a81182ea0bd124652f6e80991a12d3f4e92528a8d03b5bdafca9ad51926b46edf5bd6020c999496e0c80c979d79b7e7b170ca0347824149435f0ba464ab465f44095d354febc12dc88aad4e8d20fa91bc411cab0c164a1a0537c996ba71590aa79f823454354daa1d4da9fe77637e6982b3d5a2a887b5713af4fe76b9abf915243b2f186a6371a029811396d981f3747ed2dab3c27730da6773458ee72d96112fcee12fc19a6b4678bcb29739c3ab56bdc0e343073ba81c5fc731c14fb084bed8be2ae17a2bfb308229815c5ece1b9d6f32fb9bc68ed0446738c479968c7be865ce2fd66648e81f00992d26b6d95ea3457f027fc67ea1b5b029f861d1a017ceb86e2a7cc76e79da3bd89a01e057b20137e22b104072d44d873c3aeeabfe59194fd7e9d1b799fd1bf0685f797e76f88d97537e09445b6a9cf4c4e9b7a2b52468d6e14d860c76439089f74518bea038ec9b435742ff702525c4a7dca75f56c16499f4cd66cacc22e0daf4cbbb393a1bafaf5de58599b20cb51b06d9f080c45b6e4707f01d8c43f3cd9588a5b626f26f083f67acb9a8adebc619af1fda548b84d1d81cd641716312621baa39c3f261a709d63e035472a8d0f72b2cdd595431ae909163b0b270906027758d21c6bd255974b7fa9722755d8f8b0f61b87f66f5b3bc648a4449283cc47789baab605940be1a4d28e660f5ea3f01ae2449af36f84e5d3ac16ad58328a5d8dc145c53b86735d01338c51e8576bbb747ec9daa2713a0e9d947916cd5ff726772d268b0f7c9c0e9e433dbf6c24923a29e9eb36cad85ac507b653a0839e11a569de03cde6bf6854ebff72415c9da580c13e901d41731da9140217c745dc19477d57df5695bd94e1872476e8d0648836fe4fcf01c185278e5191a7f8e0ca959dce0dfe6a951240ac4ca45df017d4c8e56086f5b2c8b863475d66a01d30cece57ee495163033104af228046d999c96a952491114aa5275a3a4639dd43c366c39002ef6bf0c7e21c4b7991b644638b9c7ff9fff60eb469dbee97c4e5e73d4dd5c74c84fd1e05f7ad47ddc82e45c4ca31e19f8c876ad8ba760354e491749b0cbd53e2ec86cc08b51f672f31e617991a8ab9dd38e03a0d118c9ebca900e8a5aca33ffa9c56ae5f9574d8b21de21b715aaac047e33a8bf4e641e6dbb02651a92e3858d3887d331fb321f117887c13656db2482c1327b807732e62dc3fed064dfc3e206fe1266824ab357c555cbb1f492f55a5b508d82c8c2248e5fe1c11b19bf9de3e99ff417d1051d0290798bb3ef56685a4b54433bba027fe6282ef5a13af6062443165d8b27b9a7d2c08ac3609f6e3b72f7d536174f1ce6a26ed644d57ee94dc7e9c5159e61e5589edf38f5a3bac6e3b673eef2fac127d3db2b98b2bdfb11e6f0cbf560ddbfac7ee00c557d3c4eed417ed7f4c0bdc943718b5a41bd7126e9934a4bf1510c4a8f5b35f286c13e232f5ee3e119a9aca3a55b146cf364a121e6f180a9695fa2016107e1427fb891758b3b45ae237809eeaf18ba512d8a0d5c66c1c584e8f248e4e32449ccc9e871faf747c7783ba887521a3e2415de230a7f9b3b4d6465805ebeafce7616a19ced36af85d172ff16cf0074e1df00024f04add83fd154504176cd5109999465b3692683868ea74ac7fef88a57db588c48f60fd9cd0f95a306d732ce1b81659a2b1c316eb76cf064892526824ceca29ff8f3b7d9b34852ceb5fb35ed6a26a4893a9372dc479ef98c48c848a0ed4a7f56d4a1c9a0b9c1748aec1157fed62248f2882c50672d9d560ee960b1213511119f81b9fccbda427ceff77c31fb26339661f69c5ffd61a3a65516d9ca9667c2f6ead6896a00549a6c54c3512e34bfbb201a176a9db07f2ec9b41c14759979c1d2b58672acd55f18cad2a3dd06f1bc4058aa7a71f3a44a8322c9ee662fe363d4632405694a968114a67ced1e17af93ecab94ab620fd98e29f0b5c218130e63aa2d3efc7a792f2564bb970f4580e7730d3aabc23f89c3f46aada447e59d8abf52b183f1402aea2ce79a6f8d3a1b87169610015be159fe14d5873d507f4c9401c035e3956f67c7befee79089173b82039dfd92ad74a17a20bfe309f309052f644b204e974b049a440da57fc1ac3f2e0ddbef099ef6bdf6e7bdf0f28d9e5177f132dd70b12e9b371bff8f3ac8faf74a852fe7388cbbb1b0ea2b4e4ecec96acff112584f2906dc5adec08e1d06b8d4e5a31b7538d0ebd98e59a8bf2adb0b12b33e7104c8d5d42a1198c02bf584d2ea80b345cd41e103f538a998f1ce03593c3c9937763f552e8ecd5b762255d7e4c527d9f865ab495079db62a14d9ce09b8ca25b308af616bded7afedbfb837ac30a5cbaa128a9b4773b8f602edfc7a82e9e3fbc8b1ecd6cc0a027aeebba8deaf4e903d65232b294f0649f87ef479b9b631fe25f5e5b73f0884c242528994f403362c4204224ae1b86ba276057c42fc0febb79281f8b4b25fa12b01517d38e99ee5271584a044c80d932c59e1d40d5eab7d765042c837e6610118c34c0846cbbc85e7d8d69ad24d6dcdc52d2bb7a97ebbc18f101449c04df582d10fa3296c857169e939442d08a105716edecf23b93052ec2c3110c3ba57f73369bcafdb7651e6521c56d99832a226512b54c44980d539fde56b28ce82ea5975178b8b66fe04af243f431da64da8df7af0e3e79457f869a3ab235affa69670eb9937a7634cbb030ce67c29248402750a052ae1bff058d1b2fff71c6cc8757b5ca98845b9b815f46e8af49f37a2b3488dd2eebf9faedf2133cba74068810cb7e665366069484d78edc46985590c69909712fd8a86d458fe6728d3f057c91aeee9c6eb91cb5717318aa978aafc50243158a29f9fd1eace7ecb01dad41078e419fadeaedc598e716256754f122f1de773de4820d940ed1f1f3a9545b990f750bbf55e4363049e96dac7346e86f026c6feb7d8fbd4d285054bbc2f1dfd20a9dcf906e87b20dbd9207d87b02237b13b100da9e7f08c908e20c79bb6b9b13978844e6db46a91164305f874a2a7ad208d1f8982e98b6f1d10f6e552a6d3569a3f5d8accab36976c30b77cd6b26ef22c213470b5baf10700fddbaebc5752d442879df5f3f8ed778227f006f9f816fbbdab4e1e98e278334ab1943ce7f6af1f86fa90f91f4e83dd946222d691b50dc16fa99003eb8e29ff1f14dc7006f1e9b3def186a67897a555d41222d699e4c3d4bb4520deadee7279da772177c8a1ecdb0ada3321c0076b94f4a160f5152959299fa0372200bb562f52be753ad334a26503ed1e27c8c8436fbade32db87e326be21b2143e97b770ef7ae57f4f490026b01484dac6ab2ba7832c982996a0bd1412c55149a9f2da4a1667585bc25b8fad10c9eb8615ab4a29ec915b7efe4d25aa421f2385972b0aa6b4a2d23130aa9f2d99de85462d751b62019470cead9c456568ffdc8fbe64ebc5f6d5237c3df17e7ac44dd4c73ffd5e14d8176aa7eafd83af1ea81a0065384e1f9dea2b60cd407805c75079b470276ea56e05fd3d102d01901c559f8a864c3d7bb72a3480d8f35c8320821d1d5a6ffd1831bae1a5e21c9563f5d907a1e998c71343e3468f6a75177e9b9fa4181c6d791b79d57aba98ca148580e52526ec5d472611e35523a2a0b59d9a9f44f8ace48c7d7d20a2c977c28f79bdb6c193590bb2381323a74d518ea9a1adb06e22f41212b07abaa14e15b215c15ea60c541f69113165b504d1ee5f90a1eb859416a33a2eee21ddb86964716d2c60601f6efc630c6f4c3d1f211fb43917e8c6ee12dd0bd571ca19dfb8094fa9a351ca34754239f45b0524aabe7351a6ea906d8d4b2d3a536d9b6fd5732479da801bee08a810709d29f396c51d266310783bc82f0530faa0e3f5bcd3a1b9beb1002a3e70368bb052a056b14713ad08b4d5da58ddf36ea660c6e957195718003d841255a1312612e25901f5f5068ad33066c9db2a914dd4323faefbee1df1716fa43c1bfea4b6a049b9950cc5689aac57f62e43e6e28f541eca1f5e586ed371adf289b852e162028d0f43d74843867cb7e0d9f9b5580551a209cb86f3fd1eb4ea2aaf78ea79d1ddfe323e94beb35f8e56a8b5666fbaab2acc6554d4a92e6f28dd768c15566d4d2eaf7109c795cc567c8063c7419d301d5bd75e44ee5b04f3e6eb8a7069bf93202af0c2b60b9bb402f023da0cb44499f1d0639c1575e4c657636e37979a79a9a44a8cbea84d1aac6c299cb290d56a365fa8ffd998abd3376739f1547ef1b71cb8432ba501d177f920577d86954f1df5973669a280c42cd00c6668dc5e3515064829f8ee38002b376cf9db8249ad919fca193d00785bebc0031b1f8c6f34b90eb519da112cad345276d38749042692f35326fdc6fa40549232a3d20ad6036e4f2daecb5a55847bb7d2172d16a8d9ab0e7e73c729d996652b55b65b5f592775002576890104f5aada49e21f0a226a05530161b40679939ece524f3ed0f9250a298d8591a16151f22258e43c009970d80e828414f2f5e7ceb8818c1d7998f0d0b3ac1210824d6a117240c45dddbd18f880b1c8edeeea47efcdc7b2d8e365ac6c0374a2d3e3500ddf7ba2b1e98fea835db3503679094ad9e11f9cb5cbb69e9aec695fe3c6ed6c7bde6396d3c3a795548249382e5054ebe153d6d344c0f48d7f73e363cfba61da2381c4f4c3dcb0af2b30f375356419fa0d447531ab49657e23ee83bb9e2cf02cc6dbc82b478e3bb01005d0ac4076a5b2070978393ba1bae6c8fa867fc744b8cc4dddf32875b55f3e6d7492c3668cbab8f1d35e3ea75fa36fcf2470fe1c039b0cdadbd3f1892b7e3682395e69f74295342bf07c81e3f130dba91bc2d173915a06ffc29e4b0021a1f34af9c180977c4441301934060d4c400f662aaf7a2daa371f445daca0d986fbd5a65574c1115a677de84cda4994b18b5a16df85059a376bdebd8214ddedb76c9ce152e7e68ae1198051fe035e1d4883ad2989d7a695871d8a95a18ec48612b97e8cef4fe550b32daed22e0ba094d11b1420c0752d09c14c3c35b5c8164ff093ee5c586bd325b5eba7fbfd6f812a06946d020ba85e35784c696fce358bedbb1b063cfc6b3eb8290e8a86ba79cb4fb9dd8ffe01335c86b84fcbfa18d61d844acd2e967062982bbe6f5d962a7add8d169a07319488bfdbbe5aca3b862e6a55c657c5d4c15fa8d804a9c8731f8e71eab008a78f90108cf831d80e88bbece0e939f948ca27b1db6ce96a1ac51f76d58c92e4e7b434852e4fc0004fa27cb3770f0eb45a5b1a0283ab2d76844d754180d9afbf08e0d87a4b255dfe4874f06561c30f1ddbe2ae0b06b257d3dd12ca34cf7f83706e811e11a05f8738a0380c0f1d6aa8b134e01d0012e3f9b45d8df71aa8542a2ff638f2a6f7d1f6b7d2506c87d57111048b1d338c87eb191d1627d450f5a368ad3fdb92ff80dc072176822b2bbcbf63ad7a8e382ffe797b4707c7efe69cca91e7e57bb28147dbc11858b3d741d542b97b0d69e99a50b96d0cbb7448196660acf3a39437d80e96cbf0d122d3f9885e6644444b787772146a4c7a826b10266b06ad60ca839834175f5ebc287ce68e7c14b45ddcb4d3f71f7a8da698c102e4001e8255e97d734c7eb35bc290a9e5d778361dff3a0b509d9bcc4d2161c982d1962fd8062563cab93cf3faf140bb79726b84fccb8e823f14bcbbf8052f6963d4cfaf51a6d920e4112cfeb3816000857581ea21bc69baa084d2897e0bf02ae13e9456c377ac1c5b6835e6bea0812785366e0879d98e1dd5877a8065f894c38133178d483a7121575791ee48383c128581c9f919d0e892dcef83de4cddc6eb2be1bae0052b6ee93ca5c92a10e689b97523b4c3602ed10c56e129726726911f3c0d3f0080b8d08c698e82657fe59fd91cbf8d428f55d40342c9a0cb157e67446b1350841f5b6fde486ab882ced3dea2ccc7b9cc8ef694f622b79e03ec08b0fbf45561d2653e0860d7b8b4a8e83c0ee328561c63666829f8d6b2dcc071495394dfffc2c6ef45c38b2cc3fdcfc81d015baab3b51da52fd035a4b48dff733c6e96f7b214aa38da0d2755dd1d053b021edd3610d015d93909a2f89f0ad946ee381907f74b0f48dc822cf87227543abaa9989aed0196b5fd9336c025ecfe9a135ab5b82d7a627b61073189d66b6f62526fc95fcf0e9bf20d74b29a35fac16460943a9efe231d2665b8bec7ea4581f3b94e58fd3ce24499b6f9298aed69d57353057c5a35f964977af41f3b9377de2d5b85b76033f0d6ba3e80339c6385ba4077f322c23ccabee69b79a7f6a4f795f1097edd0c60b70af976f9166dc0eb93dc150790be4dcfec1fd407aa11d71fccaa2ff17d6f36f6e69729459068d77b7c46400561a97f6c36970bce38cd3f3865823fdb949319b18188fcb70512da3e0b4b26fb59abdb499133fc2ca784281306ce46499054835d8912eed39004259f75b0183939502661bdcd78b73577b9bbeceb34df75d16d5aa425cb44e58f172f5a8a1a557a4bd8d43a67877630a1c140bde9a9134d45e872c071642f8de745b5a6cb64241d9bd609e8c6b86e1f34c95baf3045186c9a74c726e7f9b37b28497c9e3bc4be498fb4a4c56ece00608e218437c5e6fba23a699b46c78265eca343bf9aa46b5b5761869d499454e5fbf196d427854120c1639d6c9c8263036a6c271f06b8efaa766a411c7771fbe198d9eb8246259260880d1df70cee068bb2360f595e8a197d7d5f74730178dc2c8baa1f11ab2f9d981943b876b0f6f6463871e9b8e37d58c477c1247da4d2112b3cb2062617ad72097ba2511693dca1bf6f3bac76b4e14dfadf956ff5f1e3605b4c9a82dd6d5d930c5da6bb5c066516af6d433f329337119508f2b910ff69d1cac1d35c4df223a050d8a2221fc1ff48f9afdbc2dff6efec7ef8880d59cd4287881d5196fa3449ede27c599f53164f3b1547ede96799c9efac626fdd4a3c7c25fb07943c98b645cbecb2d13463036ab56eb7248e4ed2af3c8941a1c4efb6374bb6bd478431fee59edfffbb31c774c4eea214b2ce035b1fdc8b9e9d035d726399a4d4cb5a026bfb47681154ff302529c3ff14fbae9be69589a64c66730bbe872af97b4247723c68aa737fdff3ee78562085067b870e8b1235dceb131193dccbccf03b5c3b51689c193b88c33dfb8c3055c8b58057ab2a6e73787f9367f97520376242b2a18974ea493dda9a7b1c83e6c392f134221bc38b2d1d2619a250c80124055278fb537e38cc1676a1fff2d7a5cff7ebac8139251abd8148f8f81163a3e703b67a8723e35907bb4570509a147cef17d778f114de4317d4d80c73e6e49646cd66fa18daa4055e681c4f98625d7b9b887539371800356f6a52cfebad9a94a3e20a908138b05d269c366571d8521a8df789ded9d78562dfb0c96e489d01148153e1d3b69a582a72e86a70cea9937a758679bc492c9871049e3e2faf0eddb37c240bd89c76bee3aa4e55ac40069404cf5ea8ade622d874923b8500e6b33bcf53c754d0db943a877ff0fd23ce10c301cf0f531bcb2b2b81bcc1512f7271beb001c455be09c1c9c5ab65a79d80870810b633d82c63d3b6b580e5e69e2887ab07121a7de4027561205056774e75fd77cc4d13111494f4a30e3b6b692eda534781fae1f69eddff6251a6956eae5c93cd50a9c8766a94a23efa215064f16c7bcdab0475104eca1325b97260ff4ee9979a6e28c4f63892538cd5d81ff218eee684352181d22cb1c41102ec4905ef019411e184e9f4349e8e745e7d23f954d4c941efb6e5340575484c2608e58b3bf05eb5964f2c9fcab318d0bd9e579125dc791b97c3bf421b221ff614c12d6380d0d0e43b36d28fa36b2dc8bc81db326a97b6e3e1196ffbfb2ae1b2d13a3efdc5556ea74fd15727a44b093318cdd8f4060368475c439d65377fac1ce53da963b61faa374c028a50fa68676bdac0fb03bc8fbdb36db012a1d1d5abeb8f4116d338d834dc65e457f0323209f5090a01b4b328060b551727ec5a3f577f4d0e777ba2474c2a898f085a214801b024601bf1434afe00da43139831c47f7e380bfe5e443c05182dd139fafe03ddc191aa8f70f9528e2c35788425e679e3cad8e40e24f575138486d78398218fff24a448d30796fbe431628e53538eba0e649e3d67a621982eb6a205005919104218712ad8e6cdcf6af554a5b227ae7c328751e3093160ca6331134af3c6be29eb545ec8badf9228bdfa6fa1fdb8938d411f2d8c0e93bd27f16aca70d7c624db3bc576baa6b42caedabda640cd868aa7122e4853e2c6777c7912d90c62a67483c7da39014c7f61ebdf1450820a61e3f8f3334c5251cffa9ab256c449b73d97fc64761ccd6c9bfb45243c3e8fde7d020f4ac3b7e35c319274a2f7d6d2fcd5068f494b32a81866b2c376b483a69e6aa51bd0b3007efb71b1c3a1310d58b129c31fa73b476ab24ec0faabeb9b7ceb0f68ddab808f31c724b0e043814439b2b7c332449528f6cfd7be51f40e580bacd093f8d2fd9dc47afcaeca3d033dbaf45dbba4ddc957ae2c778b3bc91cf2e607be7cfef73d9ac3ee7a74d0977ed31fb9b827468b72bfdadd5c70edab7bcc81680ba2e6bd9966095d0f97a9b9656c017d09090fbd44a9d735fd5758aab9e67d58a88c84119075522f536e1b0a6d0747fd232209f9e52015de1802a0dbdd3a0bc23c1d604b9776e82563ba415353bde145b611d823bba8b988788f55bc65e448d2c8a681dc1933f9322ae9c8cc06cd699f1a402e42e2befd6aa453e9e2d03962ff1eb2b46c3f97df877b9c34863fc9f378622d79d46e136ca5ccca9b4b7eeeb2ac83e9d0f311ca8993a461f724da622f999721996d9a968af04c004b02adb882e437ced5c0266bd20f82d95a80fd55051f704024b561c77c20b6f9358c0d19a8cef55a2e4abdd4e7cdc14a878b519c891fa122c5021e6b3c3990704a968fa82bba633adb465c0fb62b6dd04eaaf9c6d736a62d2c9c343537961f7264fdc20eed56e7b78abc1cfa2c70beaf3f38fd11e92e05a73f06901db2b7dc8412e7fd9d017ebc434fb914b2e673e98350391f78deec12fde92b19c88275b0d49dc12700d645cda81ae1fd2e541c0b18d78f330096cc7206192c861d33eba2d8e24390a65c331a9691fb1a09e1958bb4528273b3a5416130f65db9d3046b6267684c6a758dd2884857d60eef7f575593adcc511e4d1e804d995d3402997e48f9eafe4eac980fe58104b425b0ea1973a9ccf5d064375c61d863f6688a18f80776e0d05d27e1eafbb9ae3dbadb62bbd3969330c17fbb24c5d6b94728eec0ea8e77036a3cd264e47e90feee9585d67edaac6ace78d6f61872a225bb0d4e6faa726ff7bd7db224a4424bded76831d6bca03d2d33a33f63fd945636eae27dcbd5804b15db9931d70840c17b4418d7f14365231b48e9c976b74df993821736ec28ac6c113924a73c2c7d40ae9734994800633a9508562f5ea62d4b83e81610cfb82861809dfbc8566c077c389a869cf92ca3a421c84477e231f545a93f9e0c75e8711eb5c24e55926b34eed6442d318729e0214802e994f64bc703861a6e785637b9e025e8fea49f0a7abac9c12d9090a104ba05ab056025b9f5b9b67231192888cea8118695128572a59ae2a4f93308a13e7c478d8e5299dc65070766aef99cdee8eacc358d7ec109a21f359d9cf80e40761af2103617922a3725af30129f538a9a1974e76a5e6760bc03949d454cf50cb8be98dd4c75bc7801835597bbee85372f3dbdc2cc27a07b8dc346d8b6f51cadf718a68c39c4acb7e512db4411145a99c7c5a43edeca8e5fef60c0ea909a08f9f54d35373b95552189ece26b885574c13cbe38db04dec56f55e08c5bcbeaaa481ad0463df631ee53c221d65a8daa95266831b7a4aa2904587a0950512ac5c4f6e6303a054eefef0f8d11d3b01907253e74641fd8bd33fbe27025f8fd6f4719c23a67a873c6c3743ae5afb05e5f6eaedd590a0bb351c5f7511f97ffb903422d9a9218389b745bf92dcca4c3508c5f8409c5c498fba2bce4017b56f36e759d11ad87b7c8a07b4caf5793ae1d15f45ba731ba75b09d2eebd990426b6feb4a3edb6e84db263ca702a68dbf5d9f11f808d2d081da0eadae79f1d8e1c0b6872ba7ec81d0c9a6004226b4c2dedca440af41b1c578860a90d41a20fd268115bea1fafae758df3c2fa4c01e47b6a0f8c0cbbcd72b9ce72f17e02c8d568187a12416fc68e6f25da3dded9ddd94b507f1d2f34c86329933121f215707a0536fe9e4a27a0ccdf81e07c45727eb7c2623762d38c45a886ccadca7b02092ba6ac476231f9a795d4bea5997744ec6e5f5d355842c3a3ff42e3bc35f489c2ba543094956cd5c9588a62eea586f522d142d71e118bfc02a81e28a7db3992491e774e97c406319148703330263acc081a0838a833b147ace9f4b522ea4304fef1af07e34d343de8db3c1aac93c95e78642d3fb7772b28c38c9810f7c7048b9df14e95e8e4390b854e1282a5da664ddb300ce08a2ab281f55cc0121e861c5c117f513c7512a3d6171eb3e802db98d37ce16174e8af5dbff6ab03fd76745b74e823f34f69b1c8efba90c690a7eb653a0a4068878cfa145094cfe6b7288e14f20a06cec54971a700fa2a2d8822524e75aef87dbbe3164cd21aa0f79aa00740775e768bfd365706a603386574e3cd1674d51b5f8c5ea1128994fcf94ab3c66dbd6666249ec539ed963d48ffd6010c63f3ea9bedef884b72f422442481c5e587c568ebb1aa30436bd480ae22bcc73520d657d289176d5b1da756dc6bcd0a33654d3ac0cd305e74ad9bb80122059d5fbf5198fbfad3ae296db3f1aee1a5d8b32b75b2c382323a2165147c9c1fc1a418407784b6e75d3ba5b049f2a81e55c41b83bea375cdadfd727ef57f1ec2455ae00ae3cb88de845fcfca611c39c099c25697cf627eace311e0269a6aeaf8f9bfac9b9d3458ee86943c218a7ad8f408c803eba32027c14062be2341aaa8d0043e64fc7664f4ce125a98da35777d188679f3f914cadf7f8919ad78706ac2575223650f67db8a9936021e6d244126616154aeabe4b1b7f02bf9255eb7aae892a0d7ffa9bc4c2f113d6a227dbc26549bef55ef95b305e5ffd8b3f38748c68c818631f77e25b45b7bbb39880b74758bf6ac92240f8df1455ec7f6b5bb26716732a70f07d9d85a6b0852674af49f33d6e13c5def10f360d3f1411760b7dd4cf2e782485a256f801ecce070f5bc44bc40f8d895a7ea937f32d663acbb6701bcee4c9840104e3082194633eb2cb3c2dd5bfd007bd8c3137728ed23b7e16eed88ddb8c7fac0e4e22a637a64cb245b779dbde97ddcbfee936a20ff115dc3fa7e4986842a43f11c664ce9997d12272eae2b7f070ae2ce0ae25ba66b67a4a4ebc226756ed0a89f96a0e3fb3a115211a97ae4bd1e30af2ef77879ef694d129b4ad2d4780f1557bdf88dcecd21d5d6d6aa557318b2330e3895bd4f4ed97a8614105714235f7f83ad5b758bf7987c24fa229850374b14f4fb5a217bc0a18b314f3a730c4d485d11c983928ff65955d417102dd941d7fd1fbab514c461a4b30de0330429914d8d40deebbb82a90569d65bce14326413b8506b3cf300f53bafd32d8a7ceece3d28b9ac9fcf14d42c258b07b693025209e78a38b253b5604d1300f3f3cd61a7f8fc0967e6f030a0e8cb29f10926d1bf9b2eb302d965292ee85e1fc2a71d38044310bc39bde00919032f6e03369378e4228b4fd913489f0c7770417c023dff8fab9271be21fbd9afaf7796b95dbabbff18719b85d97e5f4d804027da7d20d5387ffe22862ca338b6d3fc4fa73af277d1d6853a01f7f79066f60378e7f6ce11b2cd4f7196fb2796e6de6950f14a16571e6003befaa143347118180d8344837cf37d8830e76c6cc6db33b8fed24f9b2b304019e1545bed24aee2592ee11dfa41b872f2c1e6a8db819620bdbd151c45525576dcd8a5a11eb7fe0ecb6a095126e7ffbed191f27c746bfa664e209fb2578e5d729854b873f56267a5a6935749c5e08bea7810e285f57950553f8de3b45dd61d2193d30ca338f2931c4742fae58d4d6346f1ca7c2a7499c36eb89f6c21de70ee0896c553f653d0500a803b76a0f38d5351a9dbff65e8f9e5a3abde57629b912e76ce83f31bc66f11644df52203b819692cdbc79a6277c6281b673cd6ab3561bdb7d68f886c6a336b4ffa7dab6fc400791f9d02f2e386f06689882daeaa4afa826bfaae607d48ed998221068f3506fa9a2dcebaa081e3505a1ad30cb9826c70e4da0768fd82d3cff9342959a3f846c0a7b9504db1b183a025e9a9ef651d8a66526740229783c3a18d9f1ca28e673bc2bf3a45b124a3b1b1ca08310534c8a213bb063aa49859f21f7b0d05f54b4242d8c600377870e8a5e1b11c57183a23dfd516d0c3f91e86e6bb8d7c2437abb08dc7e2086d88fbf1dcf1288149d3a25f699ddc971fd87cd3f550b2cdb32ad1e8b0d7fee1d08ba458b157dd0315f129ce9e89899c2270b9c729fd7b850695b425cca44aa11d2a3af80498652c75a0a1bd740c1f430f3e0fe74f069f1c36b0a0edd0a5b9e6488902da0274b91414f970a92ac9a2e339cf6dc6df9677e0b65bb5a8989381f1573b35ef4383b4d1bc8a0eb8a32c9ca5caa5f6eda029826378c96787c7fa9fc412b57f9be056966b42bc8b89016f9b6c2e5b808b3aaee37d73b7fcb8b5c7505b47a5820f396884661de606565a47afd408e216f516ccdeddc79f11f2d88899ed8e0851737ee505db01d3375ca41bed3eb95077fb442c5f28cbab16436879c144c7a1f5e046e5861ef096e69f30e0eeedc4ed940c415e72a9aba0cd3e3423d21fb293eb2eb6a9d7fb817b71f84e2b5032b84f1526d0becc94886ecf70ed8b1ba86c34a48a0563ad7b76164b6ff53a34a75042d59756c341d621850724536fb0f5b0d704e373501e3dbe7d77ee84cbbe7e02cb6296542f4b728193347904fde8a31339e422e935275e8af2113f05a899de2a177e9df2048a7640e26ccdededde75af63913bd6db29f41f4bc55772cd704c8156a1a2c7743e7a490a94708c8af20af1704aff1bb6681472d956fbf4d3762a9a84741743accfae3a64e8ab826845a3743cc5cb02de8b6cc48a19a72012df438cec57bc64254680c92e7a18363b40f42737aa048d421f6bd88277d1909765690bc2dc42ac05d1c5c914aa4572100d0d22d8175eae5114f866836e787fadc41d8a8349c06a2d4382ba6db3af49b71c4be3c51af731643ebde80611002f053d5234f91bf0dfd39134fa4d1e06afdca05eefb63a4459e5d5feee130461411d1733d58c7e46cdef56b8043e4dc2809e105ff334efc97d86f5038f7400a756b01904fa66d5d2683750b65c3af20d01f3a6efe9e125a73fce1f0fa22b55bf8c30120de43538f2d935e1a4027094f9f347e373ef9abeef0afab7e6dbb76397ba6c52961bc3f1d1a9cf8e589b031103de290954b8d80dd7fd7784edf9f2208b807d2ef5b584fec1d1928424a81317ec1c99a051dbf95baa793632cb8c21952388017fa8a0279357515a0e8b7210a9e0d4eff2eb61b7659be8a5d3a41e1661258d81238583a8955f7620207e8d76a0edebe08ed450e0dc5a82905ae5b72034ef098e7bf20bf11fa14056cf2f0ef327c78d25c8731a9de48219db1f9604e25528a1c9ec36b31701708bb9d772defa3fdff1e3387d2de895d13bd95e479cff1dbf9e9c5ed451503c0fe76e14abcae839cc5db73794119d7d332f1eb7882e257a372abfc0f4115487e34b17094e2dc83eff9d866500c47b1d9e959baff195b46d49042182e69287cd7511b55cf3590ccaca6e03267246c267bac16d2eba13058ccfe9f619a94f6ead45d37657f529972db98fc21fd7918a475f06ed00e335188105f6de7e899a0af96b2dea69a14c9b09337b59be3e5fef17dc8a7a54ee293988169e1eafcebfa1370d7baba3f83c19d775fcd3b0ce781628136e0640287e11f5fb1ff62d7621fc239c00633c00ffef62da1d2169c784a34064427c3a7f935cacab7ee67d005ea12bec2bc30ea206bd496b29cc9f987cc217672c1aa0ec4189a7966590a74dd4c0f113d446161dea1081cbb573cf0542edd9752e36326d714774778d83ba89166fcd1fa3a1f705c2d0d26cf9f5b75a04cca7076b1c9289a935b4707cef46291ea14994133078d758f65516de36daaf671415db6780cb6ed9a09e7bbba7e0f552d6a3c0ab3701138c43fcba8eb9003fa017adf09b72c796da8e7926db56a22ab7b24ee1607322f180e70aa07904b3c7f3c36b55d2ead800701a25a3e10ca8a0cae271124c3b0da28e8697d300ecc203533a40bd2bbf30fac37d9325fc8e930bf78266121b92171e00900df3526dc12bfdbc90edc84e6876a60648928def0a4697ec3cd4e6853b860f4fae4126b8888b5fa8b3f7673efdf70d96df7cf4fe35aeeb3a36e2599d9714bdae0b0f5063b026a35b77437e64ce089d3a8476a21640928d124a90507dec9c633a8e6d728d196d9a729c699969a0422eec79ac5e99deac3336a3fe5c8e229d2c7ff1383ad867ff007757de10b19ae7a86c94d6cd44c3b1d93b20ecd82cc2ddc594c56ce7c180833f3bd06b52d5c90aa0d8bf75991929ea9c45d2586fd97aa2fa3dedca19de0f892565a47c53629d487e807862d0304ce1dff982f847f39d6a12c420d21bd4057e4b4b6336f17f6a0f40394eab5a4eee20871628753ec0a041176a6a0426d612b30e2c136449ede877fe716ac39a61d4fd60e37581cfea9e9f6517ab7d547a307059f1ab305605b4adcc010301966e46740a784abba528d5d927a316da487b1919a92899b15684cde7a9cfe96b3e8b9314e3413f5ef06f27239ffcb46cb2ebcc6104933d41ce6c17f1892cfbdbb7b58bffe1761dc6edfc9a1c5c46dfc536d50c93d3b46ba924badb40b6f5b167b24903f35d2a64c1536cd8f5c8dcc7897410e0decc19ed1d318645a3095c932234c455661a89c6b37f5ab01da72af0961a6115c56695ff063ae6e571c87abf2b6c56ddb62b5aaa88984a93826220b27c4d86b78782a4d19b330b2f5c17bf670c69817d648442aa750c1418635c1db841d5fc9caf4039094d4720fbbf527f5166cc951a5e3d71158d14b878ae8f1c827acda5d9a031a63effedf90592c80755f2d57b1c5eeb4a6e20284c12f53000e3afd1614a3f54127e1527e76ed696d0e3ce5f99f2569362ebf28999e9e82bea8315e0f50fa394dbc94b96dd39a9b0867a1ea6048cef0f8ff73b592d216ea0a95d906c3c09ddbc91936192c8cfd64b1032f6f373df0ffa33b079d0d7853bc167420d5eba61cb09c046946efa7c0439bb339c8f83657d66e569139c04040bb6e85527f02c02fed58fbee9889eef68e8513c1680fc9a870a6629cc72e92f5a63e78e1eb38a1aab0c6bcb4ae791be141dea1d0806c080c4999f2b055a43bdba394d371e243f9db35629b26d6d37e0ca90de3de2e1dc1cdd6e9d5cd03f3e08b36e4972d3971dc2b733ffac90f5b331690a8b1460c11cf669d1c1e1d2d42d8e2e4195b05371a5843b715a6604d67df1e0a810b2566e099ddf6a668ef7cff1707e2b853b53dfb622dbb11380869d5245bf649e37d39802218bbcd86ff1053bf6e924e1adab99c49f8ff6e00e6c1075b5450a785889567e979ea82b438efe6908cf54e0773259e442035cc11a9cb08cac122e3ce191b1f7994d60a7fcd8f16ab752d90e5bdf03dd17f67d2e1f5a5a9ffc59deb72d79e05fc3f948b9400c57c6b2a18356f342c7766db2323c90e0bf6457ad12edb09d0120376faa25eb546f18d1c0abdd284d9bde579190734fcbcda2d7541ccf6ede73da1a3138e58b6476458eed7df1bb63e7e32b8f6f22365242597637999e8199262415d6c788e2d3620b878e63bbbfc8433405f0d80c925301429753abbc96fa7a5fd474c63568556005feb369131c51917e45f416eaa22eef927bc77643709990bb8a203f4ec7b76dd05928c75b0e6be1930d9d56db1d6e5cfdcd6928b06468171c6c75849f5db8c8c3a210e4f3a574e831c4800d16a9424c9e17f20671dcf200573135cf82bda5119b071d857b4362f41f95af955065cd1ff24ab15038d5ebaac699f363b32ed250835b49fcd021b5a1acf1a7b11b603a70e53adae78a600c5da8e3d211be2ad64737942d816fc9c1c867095bea371fab21cc205a0f202442342054501cd6e1a2b83a4bde12959d465d295541f9211bf1f85e1641ba4dda2dd504b720e28bb4648ccf3f5d85614f523a130f7fb08540183edf9eba2febd0f17fc6d81cd359ba3504f3d2999cf2677a1441b818130370c135271c9605ca67505fde083e873c3ea05d8c8a01575bc1610c4793378fb5fe4c7bbd575fb323951a2d349caa08933ef194f991a0c9360c8f9b74257e8c3934d585f8fc06402064ee85d16ed2a254ee5a2f5236d22f814c93d50ebb6cc080cdf8e1de1b1bcce87145860b5a9bc84133e7360b6a8110545880375ae4d5faa17b75eab7a88ffa8e6ed38a04c29de315293ad22244f99a1c5caf7f59f3625cf562920930fb167a70a0342e090b711ee89e24229d7e459de559d7479c7e28293a9b5acd8a510a31a461ecddd41e087cd994064fe7f522b658a0735b55e24aa937b2a7589c49e2cd6c9fb3a03be81dcee6c301f0a82c80a42c5b7a0436bcb2c94629fcfa2a673fbea25b17e80fdab15c3514fc35a7ca8dd6d00463c83871d16e76f32df9e89482ce852c67875c69945079277284a0175f9a48ec7c4f9ba775ab88f9e0d06d9cf5f36cbaf329348f033325ce196272831a9252b69570c4caaf4ddb99d18075ae830359439de268485714ea9054eb6e20ba4d2bd9ef9ab888c6736a21ef9f33e001578518b2ae7717be2bb027723082235c2c742189180c553b1b8059464db7a907a3af211d06d57e09029802c329ab6723e7092eb1e2f7e8dedb4ff6bb423465577ff655e4d290898a79c4c47a2b57e9a767e0f3ef0253bcf540b228979484d5d663dc43f769f944fe44a6c36203624df7cb4b383cbab7906c726f0ddce75d9c171c338d4d5f7e408a9f418a5c2ad85725ba781982e808e81c200d3b762984c36ff37167554f9512c9576f57b4b31b736c653886796ee18921e1df3a3310bb35a21b3f1cb2f7cbd4e67f6a9d43e4b72fdee6aec1cc8334003b7934078df356441710c3894a3984a3cd541483639b02bba3cbe4e28e3b8b1c44b6c19344c11422a5f7b2a1a7dd0f1f622e3864aff7a570cefab65602b1d870b6d73742cc1b5069e846dde7a23903eecf8ac14e97e14f46b854225caf96d3d23eb2ae6d82ebc5942c256af764079f39e6864683c265105cf4ad7287ca2121df6101e8e0bbecd083e455effdb311232c845581fa41096374cf076f3feb8b62743099d75c9e0475fbb2a8ed3c928ab47b158853de92817a746028373f12a563360c6aa716cb669d2403324c882c2744d81e3ab60e717a29e628f4281800303e0c7c887936d9d5a80931ceebcc185b897eda718a9c7953ae78452bceaddb02439f10ab7e5aa088be1b42b17b86e44cb9a9e447954e9dffba7d2e6c85b52826dfe158d09310537e6daf2d054e46f35d191bf8a7132063704d6b089e533d0e6c8083e6fe7d5f694bc77bb5d80932ad5fee99babc39c0fa36505b84240d23ed39b27d6251073f5ba97e1dcee0bd85fdcf926c9958a2111f45868c507fd09c467e488ab1c0b41c2b53919497ce050c21b7afe1b5ed2aa9c8f7f7e118379eaff20c74a9285e8857c0f8abc5e53baaa7c400adc9e1e6f852b0d5f25e173ab4b7a6db089dd1ef47c51153c6f7587061ce736a6ffaab736d8ca1abb0ae340a35e4cbd8136ebf200c2e20a36c5706811d09576163cc7c199d0a9df0e5a0b85e8dbba5561be672b770cfc025cb75b08ca2774269a59cc29b7831cb9bcaa58a1bfd92c8440a154f849ad93746d7c58f16f64814e7d14c2e0d359c3ed6ab5402c0a215e0b1d3ce1dfa6befa299e120abc196436368a7c1ff1ba99a8632b8e747af6ac4c54f5128a4a2adac33ed7240c0ee51417dc22f6462eb45ae115483bb44f44d72e7f3bcfd46e1a31b3af19547bcfefab0b5a295a2d90b0a0e6030b1d423635ec7fd4d6a6ebfb5873dff4a9639c43b3e11046a256cbd644d2606545456623a38bf124f135ddf709c876f17cd7dcdaa4779f26d39b8c6208d127fd5cd0d70a5932ad8fa1ef1658d286195284a60c647fc14dcf8fafeabef6e27cfdf68e6dfc2da2a4e9dc716e41e6ca8e38708914e6e129e7ba3f2bbcd2e0b6af6fe7e742810dbb7b99eeafab088cb2c5007e4a6ff706ce8c9e15bf1f2ca2d173398ad6cf45ce31eeb6f9991ee6ec9333eebb49645a1b6592cdd10a515eda51c1438882903a8e17ed44838139e1317f438f7cd3ec749706af3f5ac603fc4ec9b5ba03e2999875e4a70b31479c491f61d7e6798dc5e5d3529298635af75fe636cb1bfe08d80ff85caf71ce3039fa8664e58a13097a2dc54b7afbf31a3b6c22c9825fd459d99e6c79969e77fb4e708149c49a4b5f5fc337ecaafbf9b52053e20df82812042fb3dfc2860b5a5d42956d80f068674625514962c57317e548615c3337168708ba31b623a38ea076d264ea3243e8338b04888913ae7196346ac4f253b68035e29b80a4266879865cf48c8064b396fcf92f1478c6513a8f14a748680d171987df256037799e258b60d2b7f4269408c411f418d2db4af203a85b2740e84bc46a261f65ba391f4c2877e2ad69858d8165355e7ead441af4238a06e300217fefab01456566163e482ff3c0c0dea63cc0da594cbe7f6b772bc054850a4c600a69d574dff2951f50b45bba8b1930fcb0801321f156187db668c0faf1b1aa5eadfe4277255ae8084fef1f4e4dc6f354445f1f29fc3f44d00f36662083ee8be336674588e36064b20dff4e65705e77b787f8a2f9fd7f68691b77bcb0e6a94d56f24355acd2bef782b0786692d3cde7f8345435c110bb3418b1c341c7e44fdb4e3a90e83032a961cdefc3327d520a20475d02a70c719fd82ff2fc55898205d330a6c6c4a26e2135ec4b9249481e508ded3ee6f4bfb99515195d4aefaa2cc37a314d938f7d0a1f22f3d41c908a963206617bfea1ec7640976044082b9656e8543623a382abec35fadfd86fdfd8840da3d2b3a33c4ae8e61ed9bc9897dae6facb20b67ed6253b0eab58aa5ce6d9e2168d4f28d0e9d12f059b5bc082c39ce7a1ca95b467278166ef334c16461c92cf13935c0473de0bb3dace95b4324671b879c484f22ee022fc22a655110b3c9bb32d0e8dc4ef43056b15de1832cead46df59d1d19ca93ddeee0c54a3e9e2e9e9567d44805af8afdf341ad50d1f2e231a2bc2688a284513c45ae4791602550a14a832984ea322669876c6048f79e35951aa624a203d39c4b498e01f4e1a3d0c82d70e6b3b1ce7073688cb0493ac25ccd3b9a3be10b0304f4b4c5ad5ac315147cd5a36cce71daa0a8d4c35a8cf574cfd5eefc60a2bd916f26666ac5dd58dbd3589dc30cfab71c5ee36a74940214a55b40201ad685ce5d3d09e0e373f8c86f3fb32359ebbc05a54d91ae47e69c9ab40bb942a253022baa9f79c7fb49488e6f0d4ccc9617cc4e764e7a8ac72fce1b68b10cca3678de71f0e997677e125dfbee36cc3f2c06c87c01b141c886555642257043b006cc4f7383b5802d6b6a45b2205713e62ae208eb6ff3b799d95be84d81e071f27aeb56b80108e82cb5feb62a4ce94a70fa65b9ebbdcc9a111ef0568c1fa7dc10f3aa90fb97e506999391eb3014dffd525d2ee341a59090a894a290e5df98eb9091451ca913f92e4f62298e620d49294185b9bba6573603bac852db535dc6327b18e96666c53b634c120b5eb4a40b58b937847547098cfe0889906c62bc0889ded530a58833c787322a627fef55da607902f714434b615c3570f3b2b5c9e9bc4aa061839a9c3a16c756b8cb2d32f34a0580154d3136b2584afdaa62816801fa55e3781ddb495ec7758b9ed65fb6543323ac213497641d1f333cc99d0f51225a17bc60a0bdb1ee4dcbb229c5c7f167c95e48a5b474bd2e0240fe095f3e1ff06eae25db0d666ab911faee24897efc581f875093fbb70e49d4a5a218a4feb0b8c9ba35f67c32ec75d5586a1b8befbd97172e7f73c8c5773849fa6e96b2d6d4aaa8e1681bd92f240455e1b79b505a033bae2de2c970f7a3b75ebb7763395e48c4f94cff0b929fd6fa34b1c3563652e63fba1e7f2c9c19d57189c918ecfdc60611d529695ce77ad1af0f8b53fce74083df87e007b93aedbd4bcbe7fd7c3b4ee7156927c3407ae9ee23075517f7d9ddff74da169fdcfba62cfde63ebbdfd8cc8b8015fd62bc98cce77c069a496aabbce1ad79a7ac9f976d85459cd9f5c11e299f7619e373864535f6f6c806e01201beb4fe6a3fc2e790e00c45372a1ca9a7e4631ecc16a33558eb4778cfee4bee1b9b01965dcd8f61b38e02c5c483ae74d88d923acf59dc8431e84030a9c6cac8286094479c03e804747c8b78ec9e17b14e4b88f30c6f16c367db8dec56a8461508eb122a0edad46487a36c80c916153d5857c5279ba22fc07fa7060e1cd4c6b01771e3e06b0bbc3d756f95bb18ebaf03b67fbbddcf3fdac83ee26047c32a70735af962ccd49693f3ac417aaebb02c5cca1a4ecb0eb1899836257b28f38b115b133df6b9a5c3f26f2a2ee3e0bdea31d664d3c5954c000ccc09385c3f25c14590bcf522cf1fe0c6821cb3fb12403f917a7d7d03e84a252cc8f391d322924205b3737d54c2ea4c8dadfd86f13d6df96df10027f2601c86b192b6a8763225f48fc9810c266748784023589b0b6a92cec350dc87a436eeb2b958d975e47ea1121add5e6c2ca805b10ea2d60a665488bd4ca0d5786212db179d0c2bdf0e994d6e6cec0fe5697030186b7952eea9e7b310b250ecd7da390d1bc6744c9bfd6199af5a343a8521f747ec0507ce9889f4c4bb01a3a91cd51017e626ff6a3024b49f34fd0221e5ca09b2edd0f3d59813d0aedc8d9ba10f7f8eccf5cf094d72438456f1c6ac31b714950c8c087f7694a923ffdba80ec2711989b51a074a4fc44162872259a517361911af79158ac734b75e5b5d4467e86459f43daa6a3373db486c3b558ccea184eddbeb93a1470a462c6583bc4343feb507ef707ecee1b0b7bc6a0034870ad493177e5a0ea3266d35d88df4e1f6d992a0483469b724e3fc9d3f0ac82ab49d0af55d45a559617766783cbc651dd04fe90c607abd93f0d6190ab113bd4da5023a7da2ba2827324eca80c6863a5db6bc35810f21fe5daa55f672508464754239c0f335dd45f7edf78c9a4887ff358653899f08077a8d1aeb53f19391c9c3b04d06da8260596f426402aec04ff117890ed4a876b4d9136d7f7c69111df2dd56c7d73d5aba830da75eaebf98bc403c48077bb8c4faed11cf365a64b5980da0c2d876c294cb3997638eaa0d39e2110a8662b11c76fce4c1f18e1193a5527adef1b037768c96d60d330670ef85a5b09f447984d96c269a3d9c9d8df05ba27222f583edf2abe37af42eb8144d6140ea25cc8be936b50a70d6e360164876ef4d6a318d9725a64b2e1d442e1fa54c27920f88149554be299d10183e4ae4d1eb89bc40c5c20b7ab0da2e0f5bb0a4a3501d6c4ed47705000b82e3c28a1141b9c7d27314de9c256a07151834ad0130426668021dc2d352940e587cd5e67d5681412232ddcea8b1e21be441bc3fbd5c30d8c21527d19c395e3e66ee39b87e2dd0f0bda1cb6e0164ae61a8ccce2648d3cd1cbe900faa126ebc65df5b51d24c3d9459aa40a72b0d5ebd71191fb0169ab173b2288b79bb02d969f9f50fb87d723f03e19082372182e64b42dd4d532c09a7146c392678526f1918a096f7390e2f467c7769f3ca42853ec065778c93589d95a39dcc1e3fb50abefeaa5965dbbb21aba31f01749d2e29f0f6e69170a7e2f98588f8e65653e6e9055983f860028d49c1769c0f1e58264fa2e32bb900e465d38e3b36dd708efc4047e5d3cdb236da0efe0d3ae3fcd693c91fa2b911f11b46b7be68c09a74d0b10bab6c6d8af94853c6d2d06a8536568cd16fdfab80c930e03ec44d54fe8977441f460409f7ea5ccb7524844ca21311ee178118cc3bbd600dd125147ce59af08dd7371853459a90a5e9e2fd58f265d09ccf4e6ef99a961efda5255971f10404a6e4af25dd3697c918efc152501c83637c5528181662f7f5ce2dc0d3e0df35c99da2b81ad1188f968aa88e1b7187daf845305b75c0c82c15c31082a1330a0f5fb91a5d0d1c862818beb87adebc281dd6ef2e3b624a773781b1d80cfb719366576e00225513b627a32376c488b23817b73503a7d1acdf13c6f6c2417d15022e7f3e18bd9d8d1eece323d5db5300b6b6701c9ef5f838d18687ec02d8c12aa4b1bbfda3ad98b093a6869763eaa77c69c23f9fb9c855f65f79b73bd23b118c8d9868af6f928a16d00bb37d4a81200b1a055bda47f6870a4d23842e5767a13cc690f09b0f95b52b6fc3a1033978b40360b47d3125f5a8ffcc0e77a561ccf4081b7841663b61b1a67ede112e294e9282a676713e69dfe5335021230e15d0d378da11370cbd1a742861fabb9d115b194a3b6c869f0e7cc0a3e5169ea232d84ff6ef6d1fc71fb4fc4476a19953b409f8dc2c8a0265f258ffb17c15eada2acfa0057a737a64ac1fa73c568b218d5d7205e0c88c8de8d9ee6ff5269aa0b0a4e26ba21d59fc00448a1811e887d77df2ad97347703fdc2486c6691644c64b10d9364cffaacb03d098d24698318890a6d91e12018ea81e6571f639f024739ca6ea4ad591215f1398682e659af165eb40117bd426c5c7ebc3a091a6e49c32596c00f69a8c946297f8faea34a0fda8c4a25a2f015e9f07f0375d88f177f5cd5e96f0c4041e8cc1e46b09528379e46a2a566facab028ef7eed9181e8fac29cc6fbcc2b066ae3acc35766542a17485c9286a9d19a7f85ec803bb736a9c2fe901a93e3aaa9bbdf6b772cf62abc14ba465066b24d048b89ed17112c0d8a52d3ffd0535071770e9671a8acdf414a8ef90e590759de0fa40c50c052523a8bd896b98f51a7f51dc6635725991d016a789637079b7f08c9edb56960288fa6ee270da6dfea8f2220f78c39e25b8d3dfee4e3e35c1ee92c9bed69432a9a1bf90b583eb5b738e324d48a9f462a39365b02bffdfe335bac5c492a6f5c741893dcb8110670538fd980583def2e78f2a875f74289331fecc5d5ad0125fddbfa88faf911715539539fa74f07bbb39d983ccd6888a2f573657229f4e5c0825f2c1091ed613e7ef1da03236423389c856fe8792603374939c3531587884fdee4239dcd1dcc18ac9a2d3a4dbc43f3de811b70625092f7aa64dbaf3808e2078b008c801d3165f09943705df684a1b99511e40dbb4d4e46054912018c7ba62a58566f8c5046f1b4c464788cad6e4f5709f022ada79d87b9ee8b6fdb30ef242fcabbc0cfe9730b7fb9cb8243d92707afed3b0219a42bbe08fad01412ceca6f1f903a934e0943d87369322d97ffceea922d00ea5fff0d346fd76a594bf2c4cfef59597313f57955905f010ff62e8b0d7b4df0e909af9973e4917d331984da7dbc20ae3ccd20f2bf44cba5803c4205110f42b580462e759bbe9e9d4791a01f3abfa3085c11f400c2837ba7c24fddf7e75cf467f6da9d757a29b4a3be6bdaed17e2b7a57fb8341d7b2b30222e99357985801a2cea3fffb19bd7a1b19221ef00f6b917ee34de6bf8168be6394409f2c151ee8199f6f07182129c940505e1a15372eb075c3048b386f5f8df55a7fcaf8c0339f6640ef3e09e59eba24ee32c99fef3be9be92ef9881d718a793dca98ec5c5a319aa71a1193a232a0932989fbfc633671e5b6ecbec417ddf255c14bf3796860ee7e86916c72d7d2d725d08fda9f3518f8c72052cf373b4d61a3456f58fde4915db8870897ef966cb7b9999f17d46bffa4ccd394663e8b8731840231b9706b47f06d805e52dc6650e0c5fe4ba9c12ba49575b503edfc3545b696e0e8e80ec11a650869bf3f8529e6a6c2d6b5e155bbc2a71adb1dbb0fbd6dd5debb0794e5f73ea8627ddbe0b6fb3724d045793d65fbe3a34793ac413dc598b67aaae50c5a4954ae7b4885fe182f4d93fe84377080a49bb351b1ca1c086599a6fe4cab11ef49d540208d7bf4606dc1de1641d60f6805808670f4dcfb66d9a1af2920c2bd7fba308506374120f07de70ab030b5de9970ef8f878897d94d75f2eedf5f28c2e5b0c71faea0800a6a886c0f1d86c38145a358e679de3592761f2c3a00fbabf7627b3fb2f2451cd699de8f011f7e70c3a8791add666e430427b76897027af4c1968e6ddc67ec6fbfdb15ba750f982bf081205b193e33b204ee71215f749950d509c300d1ac8d72695428b3e237cd2f038a0811663c5013f803e677b7ec419b4e931f396cfb7b11f87c0d4bde5a13537650dcba53ce385dd166b52ce9faa581b170fd160a76197896632f6ed1b8d22b432e609bd3bb7b0be832d093ec05371952a0be99b88c3ca782fb00ce565e88256d5f02dadd4def3ecf2997cd67fda2aa76675e074c33e05d616eae2a34161205c329f2050d39cca0c30971013f39ea8e3758bbdcae3168088f89f8f9e8c2721e4e3a0c7424256ca4e8660a2c2adc32edae90392f680f28ca86027644a797194a4284fd76c1d154363d906dff53aaff6472b85f5ed2d5fbe3cb2ea2a0b56f80e155b4175c09d0a7011e0ece9f19a8d13009a2f504a0c4da043fce7b519147857a0e3bcaa5bff0438541b4a5361c5cd663b3710f5fe8b90000ca42ebd3df63323afb93aa775defb7d1edfaa5e3dfba2a44219ad0cc89060c71d2a660d75306de29d6fead2c1aa890129846e9929e98368a4137e4f9c8dd95f35f54806e28af19cef752fb1323c6ccf6ba448c13b38aa5969737290ab257cb0133d21699b4b8ade4fba1f93464706422516bffa6930985ff86a6717b489ada324e5547737c48bb33507051a484add919033b157197d8fe69ccdb3cbb81733403e55d6602ce148b53991df892c901bf6addfcbad86f91634e1069e2e62baba51fa24b10260029b2671efe0ebf9100e55bea213bd03a879cb2ecee525942454a16cbc81f5803560206054ef00df4aa984542b5fa6429c47e266f33996024df4bd37e3faeb02a4f8cd543d270467aa021b1e7bdbb129aed2e464c5becdce7cf25442956061d8a7cab93df6553d73bbd2cec5088765e93fb20a9dff8cbe77db8a1a8f5a0d984383be294d407d63e427f867912ab7eb4e3f42fb48e03209a7a15c42f9cdeee75829c08bfb2156cf1d7cf63f9d2f91c98ccf2282d4042ed7a403ed87d7f4065d0cde43f23a67c97dccc47352d7a792e5f3b5b3537cee76857c7325c7c787eba5e4b5bba0eda075e29b5cb7dd1b7d0ade56b99ee1509df21e1c12d02425534452ad2622a8f1822e8ac2ab329315aa9baf11a14e3f0f84ffa6f8051dc7ea635161c2eb749353587a8d902ef557c38dbeabef6571168233ed3301f5221e05cc6320cf7932247ae513d369d33795c5143ebf69747bab5c8082d9ea0e55bc53675f591a1fe31e5d786822d6a3d118d533ba08f79422f2c19276631fec14bfdd303fd1b9b68f2719171b0691b7c385057927bf692ce3b1e942f5dfd8041fc7fa659116478642ae72b5847ec3a3ad54b5cb4c68920b7cba956220fa33ab188172ebf69fef768feb191a2c84d1f356644dcd455fa3f2702849178c2443420abed426a43afa5b0aedc1a4535a65bc291a32af01ab0e4286b97335c1936ce3df1b8cc4e5c81b62cdb15c766cb1a204b31288bcc424d80f4a3103a1bc089dc2e93d6db196503514f4560e959b99ab942762ae48a6ee95fd8bcd0c146d6b19695a95c4e4a959559b2154a9853e45e1b3da64902d113a99b8dbca80503a35f94dcbb92476a39c1601f8c7c57c619b8a84c61f3187465ef90212f919ae7aab936ab95177e01e01b644a4d4c5b9489acaf50b3112e4d93e7b81cc5ffb29fbe96928038b124248ec7904510c59d6e98910b86a5058b431028f4fe6f2ad997dbd576d6e23d5df63df4456afed50d56ffe6b3bc85fcf5b0918de8705577067354e159a21018b2f43666d2b7670d883b9aa6e82b10b30edf28f23850fb60a4a4b9a5306295b1c34d3553545dca16050d802867fd3fb483fcfbf489cafa398be5cc0fde4f6714904905a7a502051d41294aef6c57e93edbe573a0076d511fba6f8196982dcd7f4ea0cd7793803cce461e8cbe3922b42cc1a961559fb3455e45325267e7d93493eae6c12c2214aab81f982010c96f2638ea86c8104fec339b06dda4324f4b816f030ebb6aac73eafcd664461266d12b2e32c0cae47623d277aa3853c7a9a4a1a01d055a0ee272bac22a6c61a09786d435b827f02d495a15523c4869ea55b2d432d948cfa4081e486f69fd1fd0387091d2c751fa3ff8bb2113be9b1e74272aaace68d07b0f7aa3d41b379e5cc18e890524f0c1c48184d7711fba7d07fc0dded4621784e2825b59016d47fb45ffb82d1b68d62fa63ca63bcd8c9d01f832eb9860fbb0c7f56bb9139a8d906a59503073d1c6324119ad618902df521ce5c4d3fe9d9824bcc1792401a3ae70052187ba96a25d9c10c858f7ac59c96768331e536eea71f53fbe16a9918ff1a2e0aeef09594a5bb656bcdd9a2740ed466d519b01951925a51e5c14b589b75f3bd50dc7cfd1791c8cd0190a88b766aee02d22c618733418d7ef7a9cb8112d453f0599a1ca5f67dbd3176143007eb4cd04e7a5a927d97f4360eb4102a8e6d85f9c492d394ee57b46481c5d3481eb7ca0e684116a35ce61cfa7c30df4b0ba1b5741019fa7f9a05cf0364bfcebc2c00468ecc91d1d1f86c8384aa97aff78e28eef55d3fe974ededebcd8d87347990b2523d0c46461ad6d80224bca45bebe37ec282dd0c586f75a16c3b321559dea5fbaa974c3091a234c0cf09db2adba455a58c633ebb1be467d8466994b3fba718cf33e368941cc1c21b517e7f8f72f8dfa239dcbd393a2b74ece4e1f882dd274665115926ac5ae5a0c58887204c31ced0fe2582e2aacc29f15a967186f6a7cc8ab7cbace72250ede2fe0bc4cd6ec0a01b450ac154e5b165804690e8f556232fda0683a38799eeb1e1eb8b7c6f188197378af76005f310ed9bf47dec4a3dbd1fee5534ad86243fd47e14ee2d27fffa55e2e1631f5b93abbb0750a13b321c5f6eaee90db283cd5c15f4e4f40d91ec9ada8ae446ad70b90088ca6783030cb5946630cfd3850c103fc3e62d784c753ec106792f46a4840b3f2225ec342d1ba1023ad25654b32e5d54043fa12d13ce6520aaffe4f1449d6307cffab41ec1cccc2cd38390ec91d599ec0bb25a0186e5686b2b282811100a50ff47403a62c48cf48cca43d61cd7ee9d73810552fe45b560542850a4fe8cdd94334c521cca31282df97734412d1683b67ba4d1ecc6389ffbdaa6220515cfb1a74aea879b4af04d5f5a5a7232e2df6b2398f7ee6a9d960dfaeab12f7c2b8c0a3387eeef1f12e95ac6b24f02ca4074159b077ccb74fc8086b34a7b263e22d66f969a1eecb1299f3f727457c3736338c6c42ec89a97bfa3458fd95c5f057fc9ec63472d4880a5eaf7c527d94c555e623abde282b3c3dba27c8d1e53f48d19c3f5e1d38f7d5d65b9bff861a907e1338dfe95830d74cda756f1be26cb1f18d8eed98a4c9f103e65f7e9950b479d4ad926d8d1e666b7ebb418cfc7b3ddfaeb7b41cc8d96af56be9d0001fef60a0e074beab6ea11913a3a37a32662ba51fdcf7d2f404d5206809b743ea2e5c6435c53b1d71ecdc403523cfe44c6dd3000d390fab2cee08ddb7337bdd258d22478bfad945cb659d4f5f552fd6bca992d733381af72189147cee719497295a14749c058229ea8e454877b4664c8848c55da69f7061c225fc0761f6908d1c301caaf72dc8017d8b7941648c4478a1ebf9aae24c93442787c9e00ec77ba4168f6d08c418334fe718de6496bdcd97ba8d14a9ff5d7625400cedff6d6342e6b225782c963dd931e4f183c98538232fa21736da2a380ed7cbc719cabdeb712356c50cb7e203d4c22b37c905ac00ea80e5eea7242122ab07bf03299e5cdb9574eeee276df7c39f67267d222b0abbdb72a949132830abd61cd0516aabd03191eef4d5e94decb2dba2ae3a780bf252e7e48d85439f8a22801b245d1e4d5735a38b869ee2dccdcb904c52d7a601e02e5bf71ac3568e65ddb51e4ff50a354c2203bd2150c4f62333f4b816e414c6ac7cb81ef5bcae28a554c6814fd30564da2b71dae89095bfcc866e0a9a6e41b5c88ac31a4d6bd4de1f77246772c442781088c6a09dc87b3f2539ad830e9c13fe02cb75e52514b5d83e44d88fd53126ca157b1ff171cffae54f789fe547e27dbfd380202d205c6b37b785c20032b57e87d665d5ff5d03ddf7a8aa7d740c6dbae964e0457760c1310267525248aaf7fe0c8236a90bfeadfa72b5dabb8d55996d3497e1944266e2dcc76f8b0a852b62dfc5aa6d68efd7ad9244c7a10ea14dd844403fb0253e93ca0ab43ae0caf61aeb9f820ac424c33dcf36057f095dcd832c63902eb6239ebb60efa67bbc920c950ad2b1de57640c54a49dc1594bd6dd045f15260e042f13736aef9dd647ddcc27d48d526ebdb898d53ca624f07503cee668d9163fa8d61b2f5c8a127de40d270d8fb425172ff9dc4e6bb32718ad80cbe55982325d0959607823aada0fb2f30d4caeec12411158a1f5031736245253e526300fe560c8c8aa003f6f893beec9ecd7b7c6113fb72c345cf9afa0041ca4dbbc42c4732110c7ed46c81322ed21c8e38e9b285d32a1188000e356500409d6c3b167491d81290e0ddfd76d6a719e89073c8d4498ac510cfc53b957b25033b23a844a4e5b1d5f8c8537e017f40617dcae707d9b2eff231c9802822e9174a8106ac8e7e9d91a509fe29026582e51c8c6a61cceab1d6015af1b9529742440f147cda13340eac29eb8e790e77e19de0ca394b8de7f6c27315ad807f855c8812da8ec773f202a770a9fb9378208615e871361f83e2927675117db81ccff1a3c37fd3955352074fefb4ed2268ded1e193be409ef3a16aa15d9fbdab602c9aa702f15cac3ce581bb336180567b437c593c71d7a00720791c0635f705d4a910dcf9e5c0862bb19eebbd6619642a75c1191b50e492be0de25a37efbe97b524cadb89502cd151ae0926c661d1d72dade09255a398ec434bd4fae809278671d2dbd85dee8742034879a5b8516c7ad9b8ea3564b9593a636f3ca0cd66bfc737b93149c3beace680e0085cd51be2cd1379e01d2b62bd85174647837b0c261198371573cd83a8ca5a4b63d7b1067762d065214e1a7496313b4db45c86a62793eb7903942245123d6c51bd8f523f6486b9052ae09447119b2d37f8990a01702c3f05d49b0dce6e140b2fa02b305610120477a2baaf38e011dc6b2f037d8fcaf062312fb6142ea5adde168482c4bfd7523eeebcab112978f9fb84e03c0de7f227bea9541c62388394f7aa3a682a536556492ee40060ff5c256ccf8ecf8c43f52589ed31e9c10252082d83298bf2cc9a189210baf52b237ec2a3d01c9f97001f9f18d0c8e9d4697ace79af54ef8e4c09560e046694c602a35fcdbdfefbad217f59f8fae5a35d8b39050e2e39d09dd7f904778a33e1b98de7e6ac013db80bcdf65dad67270d3a4a65e80f7577f3ebd405b7b8b8806be7ba489ab7bb46ea4acdd90a1ae752acb1d040ba91ec4db63d903f6598b7fc9d75014165d53c94474c0f1faaa89cfc1e3d0661421770e35fcdbbea6819463668c6df74151b8d19417225216d937e7d3dd11ba19421d16182f4e8c4a247367a1bab566f4c6de7884bf7c7eeefdada3957050327129c55e074a511de12a7ec0195ea6b6e3c643865fd0a4c2ba6becf374121f577d6b1331e3031120163b0e2710ff8a73f82f8a5e4ec6c357fd3d4d005313dec9c0287190d185529ac257025a8356a972cae7902a3776fa398f13125f19d222857988da72b7cb37d99cb94d8da505b4df74d0f5c24dea7dcbba569698ca28aaa64d7b1f2afd8a894d791f5b006ac5cdce6898d70275d14cae3a7950d8698abbbd44e66028222e7da71eae277ad8610dfe3a6b631c82e2c7b723df9d4cee8c4656c14ac5406a85f21a9215f8ae430cff3a4ff1a45729d20a271294a55104a7df81ad48f58b850cb1cbc41b45bb32af538eb46a989a39291156334227d73e774877ea938f4944590e23f77baefc16099d4ce24a9897e4b1b4da1ad9e0ab729626978f591ff544cdb710878886057e073701b814a092d1d6ee94f88bd10961c6db8d1a1cdc7775f8229a1ae355ca89caeb9bc0c2c7f1273142bdcf599787eaa42d5ef84788c1d4dad4d552ccca4751f33e03adc3b95ce70a6790da0447c972886e298d79e02b2665086c8a3868efa3ec91b47251dac0fe2eddda5e4952d18eddc46c8ee8ad3668b3c5f1feefc842b3304215871ce543562688692b402edede9cc2d93abfc1b7e17e7cab7dcef8344a48cb256d7a3d5c2e5a845acf82ef5b2850c061d5354ea648213997159fb9da78ccf0d5a0ec9aaa10f5511089eb2d0f42caf039cc00fc69db53706871794770b087b78746b670134fcdd83d7ab48deca55cf9c6d2325267b66cb2bf5565cccf9697bbc8f1c3c3c376c9f5bd9046ad2bceff30c3bbb3af8a9fcb18b747c09e89d355ca65932e3727679c3f959b62735f97974d22d44771b8ccf95880180ca2de3d00988404b5cee4c3f24e4c3f6f2e1db398c323405abe662c45aeaf4735d91e30cf2b57ff155aff8206847c035e386c44ba2b255b2dda04997c55eaca6c81ea6dd6a083cfe9ce7bc97c06fe7dff4283d88899d1795e105005914f4c220fa712ddb175eb093a57dd4b2064e01b8ad9f70772083f1ac68c784eb8ba1d981663cd665c0176a80838b34b36bfbd5e78d15f1ccc6b7d1b93c0b8087edbbef7d1ec50588a999951dd0e01e6d97308e2ab78cce2593d0b162a7e87d945e804b7db86428ef0fcd5afaeb7e8459d9cba3b23d56fd0211283beacbecf85d8c8ff220da090096cfa049e6c21d3881044d62ada89b0c3a94607b23b096346fbc6cb2ad23b342fa9f84d62cb9a7f0aba95ef78542d62c56dcdaa898f6dde79f0901b99fbdfa88f78cece613b1ba1b7da647134afb5886a3d73ef715d8a7b71b4518bde8ce868ca17dd36def272980686b7619d2c9c4dfded2f67b0abf5381eed1e2b69ab095b6b7ab36185c427bb0a8edfee08eaa9194c347b12271033075df58732801ca79fe8be79509733f6a4da1f514051f958cdbf1c9e3b133aa0301a56143f66a9e1818776576a808336618575d93c50d04535de74644df39b7858abbb5aecf26bc6bf2339be27a481710d6e7dd79775df4da1a04eb4d749695e3f968f0752774eaff85bc64e612403ebf002c3e6885bf94eaa3d582be8284553c14b7c63bbc6a2a77f38141140b2becfe4aec0f26009c369d9d221d1ba9260427a66e6109b11add07f219fcff12926b0cf254ac1dbf4a75e49870072a673a2d2a7e5d9acb3567a7fb8dbb77c20b8f3c5ae090cbdb1020f20139fefb768231ab4437710dd1bf5d7a2e3725b07a34c81811a0b6e693fb2e760daa6b7dcf7a634664d370b54fd20b7d931fc631c766f4658a1d718e9b0de3c473678be9c80e4948ef255f3bdd561573b0e944715063fa58d3390e04ecbdd3ec735215c238d0f3133e0ed036f7858da11ea7bd723c2efd7b312dddada55c736ea0183607bac833091d82ba5c7e5fd4210a275122b97be78198b9067388937b2262ea34452c2e1d744e68910135b37a08b794df98782c4852352d49a67c7639647581a9233427e00e0443ad6245b96ec4fa6508492fda9100e53442ea09241ba66877fcd9b69f24a868aa50e2b93af3a0bd99c9b916740ff2bb7e3065dff5204120ec2bea5f2d5cd41897d1c0034a23637c4658056beb1fce7e2c57ad4f411402527c0ee81e04bc2ca37cb1e4758b0492cb780ccceeef8af428166d12d0a7a5b10c888ee0a5fad0820e34aef2c90d6a16cd617aac65bc001e68dcc14b7cf7d4962cc99729ec9edf9b52b6154e9ab22986bed5129b19f3167b21cb021e909b44bde739b100af5a827bdba6e698e826669c6b1ae5a4578a541ee98bc93ef09c5a9b444b7d63eba737010aae87f2986bef16b5055cc2f1c81ebe8ba85e97a032518e9f6b9afa6555d2a0b5a31f83f2edfb6e126c1060ba5299e385dd590b4ce2988427dd9dc423dbfd49a289d8d82130bca90cdf0a2d0e45cb6b8b3c0a13c1302e195fdc226cf0be48270f56973bb7018bcbc0bb0e8f47639bd8021fd0cc71e2c454a01628d9dc0867b92d8ef2622648bc4e5f89c8d64953754f86e8d2a3f4cbea439670359bbac79ef7a0b071e947574c5db0a7f9eef7e9a94b6499bc4d81328493bf1c043fa1a5908a01705f6fd7d9f1728c4dfbcabb87dcfa203165ac79bc436ff001a37f6c8cceea5cbdb89ef549547b61d7324a02850ff2f1e09713ddf1ffefcf7151883a5af228b2a20229a6f96876b065519fbeae216a400e5c8ed34c0882592f8a29eea5266978ed106752ab382b90cb788be2d2ce7a2d256c0225dadbcd5ec5f8f8af9353a817a9077a44ba8f7728cd9fe6ea5c85db0a3bc47bc169e3d7002d53d16ab961356a6921ac2dd35a5938aecfff5002a389dd80727d3a4f113e38c4510c4b13456543650457a13cb2e491101559187fea53e28513f045b288b451943f1e4808c26ce560b0c498afd5f798223e24456244b3074aa4293d6fae246be8dcef967e1ef78b684f57efbf9aa4c71dc0ae61ea1c896f209495a087451cf9338e7031003105e05a73c3e5d40ff52c155e9cf9f1f053f06140b79022798c4349116059ef7fdc86438a4f9eb155e7e9136b691fecdb2a95ef439c531df632e5df323c0fcb62528f8593daa38df13ab28bc12ee7f038591c854457d42b76694e6b3e949d83578b07d65fe360bd19f05213ca0aead9a8c378db27c71f895e82424122c10bdffd5a6806e6e8a5eabe2726752be4c66e0f58509bdac1e837544b59108226aaed6acd239f764326dd5369a00dfe739ba159aa7f1f13b505d3e7c87ea631ae8d8ec6061e4ad805fbd29531c5799ca68fdb1e889207baf2f0edbac07007d2240b046592310d978c2069d713b0956b6b4c596fbd4d9ae2294605c13144d38a7b3f98ce6ea8541021f61390a50dcb33fd7d97617d26f87c004aff7d6ce1fc19b8885167a0c4cd057dc12732e29eafe58554cf30e1c81d2c5d633c641782d0b38909b7a8d83a11c10a277189b3baf3e3c10783feb892b6e9b39937b40d384a6d0e2aa51fccb21d1275b75d24d1c9a02cf04e1a897916bf61931cb77fb166bc2a521532a02549a2b27960b48937c9a7fbede78e696a9af72fc4bd8cb2fb43c64c753aa261a10f19d8f7f6dd3c0eccbfc0d51329aa589a26698673e6424f5b9a9536cb6cf4be8ab1fee3b0bdd2f1789482da164cc8f9442b1addd82eebd60e9500d1415044a5320b3721ac19993d85440962ba5273dbfadfa662aa7d0fff102386bbd5761848f3bf803f6a93921e43306a91cc7b9a34d4cc32d44a98b06fe7f705de08abc39aaebefbc54d30c9ef1118cf989ee69b2c1baa7d5d40828ec47194d13b1b9cf69fb775fafe1e72399ee78a920c849fa635cfb2ddb1b59ddc235b1d91e99832e67258cd3e3388ffd798cda40b8357bca1e722c7412af75b29beaa817c61c7f437fa4df2ebe09ddc731f621da37ff5882a61fb5e6573f97d5b3436f122ee397b66d147f0f6c14f33779956a60b6dbec37b94754ca0d2d0e4e6da2aa33af141f58f19691c2065f8abc8fbef99b70919ea4f0e5d4efcaa37f29ad386ec324176bde04ece4fbfb3d3554f2b88f9e532ed9410b5b7727ab70c79ac019da682b533fe0bf401f2ecfd801fdbb70ebce06b28e5e4b63949b262d03ddded97e5ec3e176684e183d3d10d84df7341826c46d83c00715dcee534bf2b07e3caf0fe359686ec664a48d82752c6ec5058791879a19d9c58c614b35de7673e70ecf7df02a125a649153a7235671447fbad9f8e8ce8449ed68fdf147bf6f01f802d50b4dc2962a960fbb5ebcd249c4f5cfc2fed4d772fc3fb60b4da7860da7bc8f473dc926de902abfc098220df7311bb1d7d803e5cde5f66d54e8276285b0673c02b34754d30ba191cfc4f60b7121aea6e6cf19b7ed82b85bc1d4af3594c38806417a920abece5e20245088fb0d3e127bbf8c3cf00241eb7ccc2137a33acbf75712c21d88f9ad0721e1280f4bb78c4739fae25e0f8d059dae29516f7a41d803a8b31b1a346f72cad0883090d18a58959892f0cbc9f6e2a1ca71f62211f652342d24123b07d885a708e2c9ef82b617d7533b1a37c9992101cf8a030a234ef396ae34dcda8d813ba8c7497d9b480991833c87d0df66155deb3cd8a09e43847eb2a5d98b7051b2412a22fc0c3ab989d3988a1726e313ad5e3f65c03b4b3dba236fd4a391388368903951f976b612da1ecaef2814daa2cb32b3a2768f91cbc53c318529c005f17d78d8e8381514aca3ec41f872f4269df93c73746c5372d105741ebfc01a6aefce3a3b747d8a114d3eec14e2816f355f49f2c9fb75dc485caca59eb0cfc95738949d02202663feec293ceec2964645aa905a0a4a2281ee819702fa94cf385fc7ee8e995f0ee9d91d9f0c2af125a96314374b3619250f025ba2d6f3ef6a354743f63d8258da46c237a2e00e355ce73fb8ea3d11868b3e41e518df07f649c6036cca268d65baf102b3759984298a910f06fcbdaad586446b6fd3de6926fc02ee7f04f31b0e7aeef2fe6e106e3086a38ccff28d1e5a02a74ea51909ec787c8608bb15a87fe81308ac51c1a7927eda24cd1417b953fbc0023782cfbd3db5bbffb16df7682a73a3a661028bca6089d767372c98bb377d29370b349998d069a85fe2eeb9911d0b4c6c90de7633a2ed3201609ff9f3e09c0c7c580eea78f6f254d4817b1801f3eef3e4528ef10ca9c626eaf2ade05be3d96338997c3095cf4eb1fcf06ef28c72ad4050ee309a65ffa1942ea79228f299eafa0a178d2c4c25c6257265c9856987668ee28a6696e91abda10100dd911f6d67d8dc8c2988202618f24556cfe10ec71bec364f5ea932a4bb063c7c335e4316106aeacce51117923780afde50a2249ab64bf249c56a7633e035822265d66b1829b69e4bce9e4e3ffb260d0026c9bd875e514fb97e01cab67d720fda68c784b77bf57b05f889030d2dfd35801a04dea19106713cc0eccfd396683ac63acff25d547c98daa4550dd16c7e10da1425089e1304f6dc7c972cfae4958fcbade63127ec74199916482e986eb5fbb9adc7f207311d9e627992f83e0db0e7e551312faaffdf4c082642856116cf4374fbaf92e2c97071764f406744b65272779fcfe5a06894fc7e2546836542e9b6b26fca10c6e194cf805205f8df731b73fc2061bd47e656f1538190c50f76b25a658289fbe0e161163a04688730cace9a09b1ce2c1d2cca75dedb7034c8ae7b5451c03dddb5fbe3458095c2f3c92287a431010d1eab7e8fe0dd660de76c83f42ad71578b817df3841ba3e0e9b660293c1ed07ee93bda66ae92de9354116412188b07a89c57d7ac461ebec9af457f75955482e52f95a066a76892b3be30bbe1576ff17447a52570b3b95dab5c45778ffdb4be602ba60e690900625a9c2f18fb73b22ae086753c7677b9e9be30065bbf8487484b6cda55e3ae6ed2fc0eae5fedb2ab1f009acb6e5434b696895054831c49ac64820156e7d49ef200be5b224e7ab137b71c85e77386fd3f8fb4439045c1040a659a0102194a984424df6ef9a64ee08e96688e9a0001dbd82720765724997d4cc3b605a9af0490baf5dd5347f737016c9985c1ab86094cbfa75ab9bc3c0812f3640aa923e09b2b3a2c29bf07ce00ad82b8486d4cccebbf88706ac110f20035afe23d0e95994544fb724d86ee8b96cf45d8bea49c4dca198c8e4aa43a1afbec12ed1a5bb72a236b1a86a022c82c9e26fe3969be3f9ab2331cfc8f5fa02ca6508f28e53738945b61fb5ebb336aac27c7308905d60021535992216d539f351e0ec31aba51251a869e7b9a87fa33e9c19a55bffa4b871b2ccc285cb0c49490e1e918032bd968e6e7cbf4823fdc1e26cbd8dd57b1411b8cd941a595695976aac336b6b8040456cecf480f6883e55e8e7c938a8eb21e7a7f2061d3369a9ffa4e9f5eb9e7e28b458deba7642e9242935cd92e13a2670dbb04be47cffeb1865142995fc847bd2c4206ca2ff240c6c686875ce11b55b77e438d92052089a2e26c295a4cefa51628c55ede5a5b4eb3668016fa367c278da4cba6a81fa28c02ebd802c5c8cedbd6c382044057fc7ba4bd237fcb8fd5018bf57241c20d421d11bd24b2558f1a0e22c846f01389ccf8c589e1ae889d794dc3aee4f38bbe867a68d9da5f81ee67ccb003e1b70305111af82cf8a1c1eaa0b25e4d8cef5110ec34d7a309b028464cec45c421416718df6b252b04aaa651f1f67d15da9616590db425e25b116a8dcb39e062e627cebf6e5ff8b320c60f8054b67d8d97e736e19f678542c1a6e8cc16572fb63529662e3d81f80f98ae5d7d1ef0fe014c2b5d653d2d06d5a68deaa29a65a49c6c25544aff606a332476c11e84a2bc00b19f5e96feb4b58ebf8287bf5d5230767a8b752e6495c834bfe2718f61ee43dc3609c598e5eefbc55c277f6aafdf62a82d3f28aaa7854fce03e057d0507d192d9961318418cb5eb6566934fc25c6261d904ca7bff4e2e0dd1dadc5351024b44e831479e6ebd6160185cfb963ed86c8c053fa422498fb76e44aa8dee438fbf9df447c5b3fbd80c52bc7acd0a065c94e044f0d3bc402527b89ead96f5a45689a419690f1849d0c2d1c9d7b3b49115e6c5d094f4a3e9c2197161fa11be7e7d0b41d6df9859dcb8301a04fe4c908d4407dc557a9026465bbfffafd23e52db1f2b8dde0f757e7fe28c9e6a82f1319813411380969f1bc6ae4d34650655aa5061953321fd7e7b3813b4a043d28ead0b9d17f38a379230207a0da31e321d61a69ab838c70d7cfc41b13337042ac33111c23e3492eac09a4f50fd79568d7942b0bceb6a54cc5d8d5ccde8088fa71efd6c0289f76125bed453554b06fe796a2cdb70ecef77eaeed115790a80caac0f0ad0add4dcb03fd1d3aba94df62bc84f9c7085893415b67ce9999beac9e2120fb37c49480d8fe78c010f19ef1352a288335eda4f90602d2e402bb881a49d640b5aa8ed44834554db10411c16c517aec1006802ee50db5196dd423c45ef7899e2a50a0f5e3f8c9db3a893ecd1644ad75ca7e2e0ef2e23b54350c49ff03fa839f6206d3333640be6c79c67d6e6a40bbaa02b42e8ed554583b959a462331845932eabe02fffaae6dbb26157539069c6497de1546a283f54af0e2e449be2f2e462c0bfdbba9b1e73a1d2f86ff2203529287bbdfdf42379d67fb9541cc40d87514ead25e3acf56130c96e25a8f466b8046fecba773a4d9e7b9f97d7f9db7813896f5f70db70aec61b76bcc8860267de71c6af5d43b8509b3b9aaee5ebecc793cadb1244c07daa8817f0a3c3b7bcf026f5bb992213c0b31a20f5087130b1919a8e34e2bf18ac57028a04c5251868bc7a1922f621f98ecad9d699147c6b5103f89948a2de66a27d490ea76f6de690a222bce1e8fb039dc0c4f5f56f8149114604fa4fad0a8272c72f5717c6ea7c12d9c6055667a8ec774bea666488b8d2a72574ec9e72ec977e60b19485b76a81fe0fcb5fbd89ec2eb1b7956d8eef737b55cde3e64f84c6f7690f9c049a49a8e1ea25b4501edb02dea97b05604974909c428e0bce82d92d22154fc35fb7f4a3e44b7704e8357e30287512960567a0571d454e3c7d5f6d9c1293598c474c28d4cb41c08b27c750c4a3d7cb2758ad4cccfa82866433e577d1e0ef63a3d5fe08b85b2b3587756a4425fc59e7f58f1db22f872f55c79e169e85d8d12767800d71866f549044808ec6771eb356f0ec5cd8ab3ce40f795d3bb180963297bcb57594da2c869b0f1c89c0704b66bc9648d80c63f8c647027b644af40566fdb954ad4c79fff1b7be64ec2da70dc1ca769942edacc4a6df7a380fd1632980544b7e01b94f9b7050abda08e42608da63eef6a6a9efde241a9e1d8579fa5724d921691d3dffeeb8b95af751e0a538536c90e7d6f156ca15d2f9dfb1750744693241b9ee39131d5e61c1b2639cb1e759790a2b6406d2651a7d4f83453aa0bdaaabc32828d93c81e4fe3042cee6369b8b3fac83747942b162fc9f5e89480edf756a34e6cf1192ee8ae718e3332052d5c48156519638aef17dddcfd2b6c8e2f5d96fc64cc16878197809b84bbdd843c7582399f41a024dcfb5a305cebe37dfaf72f66ebefc989157cc570d545afc7b9c680dc614801cece2fc23ac1a5a7970c76180b62aee0fbef403e9a1318334a9cb8f386dc6b12ec9504d909c2b3d67038238b4fca25b89e4a2f4f58f28bb2092f9e553b019536f27798e8d15620c887e117f01a2887fd3d16413a40cfef8c50934c7547076ce0daab9175b9591141e783b7e98d05f313f1740399de27f79b333c014d9beb7c29b2dea8654c0bc0df952b7f23a4ee65a92b3b4940991bbb85e071985f44eb6b7919b2035c299101bdcdf923bcdaf4b44c0e76adf785f34a1e37cd13169a0a3a2f303b5f564b735f86b6a50165752c9a16f0e4e5ae6e97cc3a8ac170d7fc90997e19800ad5c81cc092a2f8d890652fd1b76a77e51ae7182d98ce0fcfd4c68752f36b00b117015e9fb39d4ede4b289c437e4ad5cee42a2561b7f050e7c3323fb74c332af538f7ebd6c4721b189728924523a4dab6d4769635d18470d1018aca28a3d1e3da320addf63c2b630d615536e274fa1437a2b2e5af43862d1bd8e081ab09f9040216502e2e40723fc475a333382cce46d0548cb0fe1a669b2ede047d8b1d2bdab0fd9941c3f7325f10002535e6822ae61c5e9939fa973aa208b1061e1136a8a5ae8a8d581c3040833176396d8759c19ed3d7ace634d67b7e3f7bf58845267c19eeee4f1b587fd101c20b1a104001f2ce998f55c19bf35b3f5907f821c7c262df07d4f51776762843f502b0d859faa508a6ca61f8a65b73477256ec15ae9d921585a64a3c0f9fbe4526773381f039479332eb595e1a182cce33f51bd280aa18caf90f895f9e47f31bb67a8a4daec833eabf611ee9554911611a89608c38bc5383efa94db658604e693aa2c18198ccfa3a279438323628ea5f0c5049ba550f4bb99f33645f96ea13e9fb5640e6eb4f5fe77ca4f9f88433527b408c6f9704520f597ed40ed9cabc11e9c48a8c4909579507c341359df96a523d74162da251dc114294350e880d9d47caffa68afb71176ee56bec41a7c9b959817290551e6e0a62caa97b003532f4478225d12751d4613080ac58eb40c9f2d4f6e9f1679304eb0c3a416ca48c719bf51b7cde45252891aa099fd82eb71b00919f9369eb4b9db36f4d61472d9da186913225919153db90a36935f8ecfd73280456a9cc4fd612ad29b52f201b5cfe4ce1797cf8a43d0ecc30b8fbb43629e58b9544ac0eb786168a7e965bbefa2182d29535c60e7948e0179fc7aafb7ff5423afc6b7b7b82f4c459660958520729ce93ffc02deeb25dccea8c978a55cc3e1285d91cbaad5b794a883c9b6686e713a3568c081437ca6815738ce0a4efdd87096fc481867bb6b6979ffbcb71b6a663e940800eae815fdd425e248bc7658a77215b16148053760d26ba378fb7589a024a98da69f3f45a2ead634e3857fb9b56355deb261ec47625ccd995d043e11abc56ac5cc0dc5c94561ae4a2b9f12b119433cef25956273469a29452e93aaad6c042ad3753f259d7516a303995e0bd1f43de05df2693acb68af7c9862cf4aa0c242b71fc732a840fa15349e4865bc01b981b5c7d59fa3a2ff954513d5de4072c5fef690606189b49cb2f2adcfb9a1f466ed6d3c18f03e66a6e93d5183558c52ccd994dc104691d00d8d7f01397bab891c26e115cbf5eee5e64ff4d3de0fe26752f5833d7fcb4e1dad5907475b06b17a138ba7ebdae2a89949a8dc76c7f4486462804278b909b8aa253081efbd177479a9594bed2797be728931f70cba77ca97bc13b7542f432f0a9e7601229381364f14200d2140f31386b17d8158be1dce5d9e509328573c6d858ab4e03b759ffcef5d0d69000b51d9edfb07f8cd228479655e61ebc8ceae49ad4bb433654597d39c16e095875807c54932ef9aa916ee4b071f6983ecd4bbf82fcb9ac944f9310e92275710ff6deb77b3b23c6d296178f8551af5c73c51cd714114a3dd7951711e244dd30e9490e80488d689b33277b0def2a8cfd27c6f5fc8766974c1ee8260ee213c5a27c84a3318f9b96053d8f681c81866d364751069f1074cd418965b70054e6efdb1e0f058ce5ca8e1df09c9f497d2217f268268e67d76a9d109f82f64da87941bb9ae7efb7d41af24c03ba539e985cb2e32a11652bb540bdc59951bf99ba20458aaaeaf29dd517a9220a68ad19dcbd49afd31373280ec46423e78e27692fe9a92dd5aaf18c11c75f3713354afb29a34da20297369466dfd24d703df494f390c0e59006a330214202226edbbbdd310413fc6ddd417a8aacc6877abe208c4760009fcd6a15d84386467c8b2303a1dd0951c6f118b7ea625806ff32395a66006082d24871250cc92f22f7284b1d25817ca53d7124d478d221dba837d684c6e8ee85f64c540876a677517f3b2974d456110eca4c14640933ef922eafcb368d6b6cec7ebe83c41574ced371490269fe124671876e854af14e0ffce9c1763a5bf289bb6d9881b7c848dd69e02605d10198c8155e2fd1fb63efbbeef185c70ee4a1d79d733a0e0e20318a1ce645b47447156027ab961200325addc236b01465105e4c61a02a974f873adbb60b0d148f0c1bec3779b63778d7585fd5ae9c04a6f03fdc79a32ccdd0ba4c3847bce55253fd6c55b948263093daa22107937f996b7fe7ab799cd0403d8e4b99a2c9f4c3649f9d3b8668dea7187ac52e3eabd196043453129e7bdbe616033ba3dd00af715a8cbcc158def5a3e0abe26de3aa4966f264276645f22a702eaf5f94d5cebb41437ca11b51df04c5586be174639df45a6c7a8f866ff3f6722d739524a7f4d79f1f209e6475d82de90358e979af623fb1ddf0222b43c4927d0f81562c384caae963cca0d72b070f66f6a343a4bc3b03f3632b78498c9c0f4da3b22cfaaf9cbc6177f311b8c0a11e195b52fb250467e77652164f4a37d7628c0e3087bbf57e0a443870f619e48f331beec5d69804cda98aaf997d5bd7b2f1b245662e433c52d8b276a0203f2ab33cfa839f8412bcbc2078b6db07e721a2a4d3964dd0c47540c496774f7a6e8cbf68fa7eec154532b807fd55530e1b702ce46f20005fd2d85243397370b101e6a3400659a51fcaef50e9fdaeaa7b79425e21ac56a03b056096fc5415a9d1e4768276a3227c1d688014b83499719c99b8c9cb957f8f67424c50b49300ac94ea63396b78fafaefbaf688e85b1fa00aa11a17d78439f43576a042b9f548637327337bacac97f28f2966391edf00e9967c51253205f29037f9a200066bf5eac1fc5277edb4c338517c6ad2bd6a2edc198d6cbad11e6eea5a8d5d5388fa845b609c92123ce9dab64eb89f4ef6cb50d9564f1cc4304544be7a0721ae40306564ca94a6af749a50c8d91d2533137340d25a81372868b161c9d44601b32b2f7eb68f64a587363a29e9064922dc29928ddd006b3825406c83de221153c727b0a63e7f2b8e92da8e7fb4b17c3fd97342fa98863abd42ddd7be4c50c734b8486b2b300f4fbeff2edb00339211295ae852fd5b5ad908d2ea1afb9505ac026f4be54ddfcb4e7b3ef9576e793ddc11abe662413a8d387ffe6469747584a2e0b51b5fc06bd7146d96805b1d972b1e2dc103b424d692d72d6e64c93a368ee1350c9eb12e3bc4c51f50a31177d41c3f35d74cae3a0339333e728d9caf594e132d8b2f34b3435472836d38b57b41781de619916ac83801de87c704e90c8e83c036da8d685f26e7146bf2bfd13a947d3d836484b64ad4453efbe60b17dcf460b28533190bb819a1f311bda3325a5764804f0dcdeeed2bd55137e6a69a7fb9e12b8f78a25235a494d790ee8acb9368c25514c24ebb1571ec61f7e7edcaa8f788789056379fc426798868e3811334c7d38a9f744432d962bc459e1cecfae0f1c753077b9e934537b8a3febbf8029eb27df44157fb2682d0e1acb3522ec20198841938d875990ccbdb341975da22c81827324fe9407110ec7bee5e176345bb5d7a85a9f9241c6331a76c66903ee1ba54c0b0a313d6cab56cca04ef66ae3912616f04a568155b05de6473f64c77ae123d94e61a55797857817db058ed924fdee0773fbc20e38fa503339abb6f7e3b8282bc7914ff59541293213aaed692ac4903c2964114774965fe581e0e9c02914f5e53a4f78106f8b4d750ebab2fea1c55eca3b6cac03d495f8eef482c3c979cd490bcb2acc927b440b494242fd604b15424e64eb4d3ebe320e265f4b4f9c83ffdaf9fe921aa9bbc6cef20e8bbf9918c6e4e84399dde82e32771ad682ac618e3cdc56d7ac55bc06f22b4d2ccf42b57c71e2f5e0be81b882c6ba6160e78731f0dd83e8c6e0e0803e802641d9026012562b502931e3c439ff4d25a28ae68dc5b84c9287f9af6650317df39cfe8be408f7cd62381a3056efb2cbb1ffcd82b9d6d10dec0acbb7a66de813ebcd7cfcfa54a2af801a42af20b58df7559e98cd55bbe05675294dc1af17156daff792f8e2f5281e867ca6675e76ba0c529896ddea0db644a6592fc5db0abf923ba94ccd60136bc44125f9c463a08e7642a5daea23f037d823c8cc14aee345fb923ea48a5d535960096bd4fe1d1550b7ff7a254e24ea4af9ba41cabef800d73f6aa91509df90859e596cd490344e2ed368a1e9b41b1d62838121cd8ddc6e79d6276fd5f84e2756e0d4e5ef731336fca1d63e511c92d0b1f8e109ef0aab357f53cb73d13c44b1baa6960fc7c31a3b586bd84748b63187672e6ffbd2f6eec26f9f8cb6b9aece70cea3b053c968e5d8fe1143e9b07628af6521e24d5d946f45fd7bb3267c22da1251f9c7cb17c1866384311c50494f92a7ce92903f4a4d568e210e14b4efcdd693148f7d511a0627f9a9319a16a89c0872de08a13b9babe4e920078ec5cf1f89c506d8c0636ee43bfd46785e5b9a333fdd00addbade032b6e7437c2c01a7c9aee3633ee4ffac65533710c223cb532332f3a5f4f9c1a5f49bf49d8b77e035386ec273085f6337d7995fa6dafbfdd078311bee32137283ec9e67b1d81e8124ca20ed3c60d4837735110e4a562a6acd54c80ef3729d518e561c26cfcfe9edee3795771ed15f2a776c513f5fd64bc676b996826e250c9423149057b6941c4279eb784c6f181a88dfc7f39ab9050ae1a98dc80939a15fe695ebfe44d18106e0ee9b1cfe7fc091ce7436e394449b8237f866791e26208d4fbb983d439b468e85067db3dead3b840353247ee61eaa0a9dd12f44cad57505078955b53d074f5c740e94f81da146de4b8f2ff697aee016d31f31eb940cf269b621291c7eca29bcc57e74d69a0f95d955cfe521a868947c51889e526778758ce5293706bd01af0939604b5e2af7c8fd8843740fd9dcfd48e5cdc2ebba85ac71303b7ca491f18bf1b17fa8f88a9955fb040328ae57b087b55188c4187f431e91372c3754ad0a086147d5083c44c26fb72949639cf0e84054fcd7b493164b147b47450c94e62b4f8032e77617f5d1ae9f0d8c7184495d8af25eaa0d82cac68002651d2245ee8fc7d377b1c9b615f2f7feb68a135d0ef4eaa92919c60838a2945443d5e66e2be1fad862725c6a348d36adb162664861d669ac8a9bcba2c0683db42daa375f4fbf3d9e5f2441d6f8e8b28072575bc9414c318ae7e96a3f710479cac07a0bab8ecd482c81505fecd2c608de9b93418e9689630e880ac3a024e6ef6b1a7fea3cb31ffdf53d6f86a2c8cd842e80ae797e5727de4b4eb7784c2fea36ac72e7a1fbe4c675c61a1fb89686632415ab74c1c25e828a7955bbee99e58420e9418c925a2b0c01651519724730d9d5bde0d0cce4f189fe2c99f52b416c58d0c309cd22da7a77c5fac8c1c2980b56db201365299ff3fc47299503f967ace8b21b339f5b5c69f604098668a2bc7a4733f367808acb4a3ef286ff4e02335bbe81e13fb22bd80b0f3f217ab1de0d36acd4d191e85f9d964b848c3bda453a319fd6b5282784ba86b6b641f8143a16681e2fc09a554b9d942d10ad62bf8037dbe2a7ffe3ebde83f4bf0b9754cb6ede4f86ebf0f3dd5e541babe1d3a187572cdf77669fe64ec22664e0ac767f9bee65912e1de10cee3bef8336f1f2ffb7cc47bf67d4ab17e7f085297c6984a1cf0d206e9a2f558fdc64581364126cc70458263b099d85cb4b4b15f1cafeccd8e339b838d4c736fedd9c34fcbcf3afa48cf18fdbc5cddeb2274b52cbefdb61e75ae506f34251c3eb235432e8af1d83eac605696ee4fb6fcdbc8b2c4548c9bd9d4d2a2b05acc8887b3bd13b1fcb271561fe2f01aaa37d53f691bc8dd85e376cd27f16846015ea1ad778047bb4bb9e89e6fedfe6c3f044026ed7c1e257672d78d94bf1ba862e729c89053361369661852d2747d4dc4f60fe03a5b5b9ba7697fd5b6975ab6c38b320ba6eefb06274c4c90c0a7cbd43372f1aa7fe72d0197ebe5b8219f683b424ba47dd38ef520f0f7c53a5a222f7bd466a8705752c653ea45b4a805aaa9fbc2f7baffd95847ec10e5389e59834fb1264488b566c1595942ae4b44a46a2956618685a1d94559c9c56f4dede13bb708dee3fcd6d38ba23d018e3bfc7b6b157502966849906355d27ef7218bb2cb59eca6ee029a39dc5b3e98c0cd8455653f0eeeb59aaa5696abcf0bfbc52589a308e9bad1aa09ed4fc8672e487a189dbd9eb38eb1a78b55d88d3ca2ddbca0bc96fb85857a9aa5b08c2c61b2e4708ab15cccb3bbe8ef5cad26735bef2f81cf5a1c51addbb38de02e0f5149a9a914291397868a2e86261f8aea995aa8ccffff529f87a4872ecfeed5a505a34c277a709c9730e10538d2995db17c884ad4175577c403952bf5c3e4ee249751c9fbef8c2e944e1f78e8d1e1b9746198fd971df15edc8da4bc495d250ae25ea5b1a970ad7b190c8b17d7d02f8687cef6c9cf5bf072aed09d18b1a9201b6e3278f4603026d9e5b7f9495dd406887b0f2e950c8d33b069de28783f4262ddd6f159ebff1663431e4210d69ab5aa7af7b25a963264fae7cea993bf0edbef5c71fccc51f23caafd23c213a8419ee62e830bb034ed034e89978b2af025baf7bbd0b79237bc71ae77f4f24930ba8f236dc4b10c8279853b3db3bf203cff38cf8f150c0840efb8f162c8b0e9fce3dbce9384ff9ec3d875dedf35e5087f4842416f33e991c000c7f7219a7e9b71c8aa102c1c9499ba78543ba0b682dd1c70db2c8c23bd1990f78948fb56028abeaf78d2ee8ed3f79ea316ea50707d99890e9873723cff9999309d42bac18602792a9415f4b76452fe95a59033aaa460fb4222384610a7ba8389d4bda77879a577cca2990663b1c3f0ec5d2dc9cf253809a8b86c1b44b37dff18b67d0424ec26d4871ad355156adc553b8e317125154f389baab140cca4fb8f3cfe736f8d159f34d1c631009502a80bf9fe6be136edd6b930df8397dafe2fdd2b1ad3e143cf6abef848b72ff42fc151ab64c3c0f3076cdb5250bb5395cbd5e371acf02a7b189c546d92ddc2016e76ca19eec0eeed250eec3a8a59bc5d195494a40bf8150993fa03f26ccdbb867cfecb9fbcea4154eba897a730a8c70777bab273c36ca3bd0494be27f1e4efa4debcf32d62eec613602cfbf277a7ace47ccd09b0117d00d7d6dcc82f128eb1005a962d5c6a9bca007135f370a9ccc3eb4123433c672426fd98607a9511656e1c7c55a100d0ad38086e46674ca310519ee14ff6f0ee1d4a047b02342008af7b72121f381c846819318b8f9370564e117c0022c15dffa68bb0d6cdada860208b66b0f6ab91ecff37a5614793e949f1a4ff41ef7af9a91186d8a356fe8e5af3811d2d5353085fd43b0f6a93ad8d15f43123cff0d4c32f27b38fffa9fdf88a4eaca724c31a90ab7cbe5b880027afe82ed75ed5aff992875ac774adcee59256fb86ae74a15e188fa028527e8b990c03f6caeb0682fd47dbca71db94d552267b6c9904c1d9968f42a35f89753915343c083fd8161632ed0c162a4c3d7a04fe89141a0bf1bc068eea1d8ef379408b137dcd63213e10af512afbf5bf565303b7620c57deafe5e2c1262a919bfabf457f43e5249abcb6a10dfdcc501131930bd2bf091d9feb2c9fef857cd4354c096e0d1f0579de51ae35fb80b49e5645585f12aba596fc57ae563d0d4fa7d52778e3c338275ff4c1c6281860c3d53dac8d627905f35d57ecdc7facb51b546f27dbe4bbc808e38456d75b7481d6460ca45ba2780365ba7363a75e19ea2685ce4d6c4e0d9bf8c2c85eabf2497948b0980e282ac6aa0545b6bdace6d30edabf4f7c596e0993f5905da8fed49b13740471f226481957fc6c53bc80ffe9f4ed00fbfddcb10b261d69390b8aa2bfce068e60f97a23f8396496af67005d876665c394fbe5acecde6997dce01f6c085c235cb6f1e5c5a8d472cd6a8ab65d639f57fcd908513e72d8c1c6b183d8c35f235420ff4d097b4a7fee47383350a111d18ad56296b0d2ed46559346d54ef6fabf4de860a336a716e7f42eaf3621492ea1de30977fa50798ed4c9aa7bdec7e827e815d6a2cd077ca8a116bb7abb814cba6863eb77ec7311fa8c860b4a24709f2e27f74f247390f453da46c126b85cc36ed14b039b41d874ce32dacb0f38c912f232bb698f6560e78a7972ac5968aac34785452a82427f09920c625b29ffe75d8abb98c915fa09de2c367d1d50f24c1fdbaf317b33673c11076ad63ca9d7f8b0b98883ead4cbf57f16278dce4feda67f21dffde6838cadfcf0c11b1f6663087073dbe80f3acc0b7c7a7bb93a64d4a66b67c2b7b64d8e51026a3bd2ff0761b4f4da1bccbc010d5ec2989a827272c13498ea9f0ce43abb97a430afe2cf0cef10396fe63db0d2ea135785481e5108ee1fc38e873fdedaa4b9323a7c9c35d75d7d5544325056d621e25ef28ea3de1a980d32c7242ff04b01c0377f5422623f23ff6ac93e44d54280b73aa78cf97167aff6613f4db235efd203c030086281ad4da38bcc4ab697ea3eb393a8d9c29e63fe50c9c0d0d4a84b648c723ebc6e6982a9035dbe12c0f881a9ac4f401c252f6fb75cb40d319d91562988ad76ac0a0a80b8dfdfba914497275674d91448c2feff50603664fb8c4476ed1890a487224da1060b5a00d2daf5dc4cb50021b4a617039633d51fcda25f6aaaae39ae32f62fcd525a6fbb54fb1a5b8a655f81cc344201540d5cf4c4b3272cb980deeabfe03337cc597aa7c285e7e28104df032fe10169ec1670a23149dace72690c9a644220c293d8627f0c74f5a8eb8eb321f5898d5290f42ee5abca972fcdec588efc66f3d87fe0379d305a8a988d99eb4f5e9a570d2f73cca3d517c3369c25eb732f876a2415bdbe49db346f657b6fe579c3f3127f8a6b8380d41702a7252aa8e3297c2ee8a01c167f79ea3fc63ace0ae505ee20cbf68aa347f0580dac028ead1449d0b489688297d4164f623b4d36af8201ba0cf8c7eee433c9e077edf1f2f0cd17cc6a51e0d94520d1196a37b2fcbc470c122b88d0350f55fdb6b6dbf0b8340d8afa964e0dddbd9a196bab6876e74597809c5622fe1f88cfa777086340261b3699607f61d38634e790c0a7bd13b02abc25e0d7ca6d33b9e9104474d7633be922ba515f41a1429a9c4c29b79f11e2784b076a901687eea7d9da1a0d7a25225e8d7e37a2d9f011c30e2245b65a5ec453bf336d625b290a9ec0a8a4c91368ea66ebabbbf6b7b143cc5ec6bf44c51c7982a15ec6df802faf414b96d2d9199189e9c371679d1fee05dda2c21b5597aaf07f9f1cf16669b2ec6fcff9b8f849140936f43cb48ae7d88a0f6a0700a384aa410a435e04bf3047c0ed724fe292eca19b24ee75f0d90d1d5e88a7c4b877110546325e7043ad6896d7735e5e1531556b5a1a6c214db29d869f36aa55a9c53bc5c1281dd86abb7b8401bf7f393394928eab8b785449862f3f7cfa036c16b79671c7c0343d67b70e66927f572ca190b98add36d7412577e8792d778ffae62b2c9114d7819a14d8ea8289bda7bdfd5c9e2fb4affec68c6de7c07709401c382cac1cc3d2eb3397d475a2c94489adb5e18a650d17ed7475448c14c2e8af33d85acd16e6ead374d89cb9b48db645050c92f69af35823963dbf2c5fc291ac0044271a0bb812022ea6b8acf39a3349202121d133c4f7ea711f6ed00e393450773043376b9d992c4d69d229c79abb14865ddf17063937ecb8a508a6898e1a89afdb7e6c3e19750bf37be226d23395ccfe3bb2eaf93186de275948afc2f2050ffa4161098e142e78c8618b1f2e8972878fcbc24e68407363dc8c7d73df33fddf23743e12cea3380f5d782789e16150b062b5b3b8b11bdafc3f33856b02e6b40e165793958912d909c724eef28a8a61134a30adffc9e1e576e6552415d0eba726ea1bd011c42be2173b5442a0b6db0ee2ddbf45bf915e39dca53ef25538ad59bf1d2b699183d5052424eeaf2053d991412e6aa0f256bd2be79dd0b2c22635bcbf4da1b62132909f425c082c59b3c2206789ed82b88b73dcab177eae15f2e15f7b5e45ef57833dba80b3a8eb09431b24be7a042bb0fe131e3bcac08242373543fa788804ad4c0693538bdbbcc7ae706925c1699b90bd32674772a7d0e8cd60593f1be34d15aada33cc39389291ca4fed2c74ee9d5ae462d78d320991d3b584dadeda1c3915f1d350f19170e980fac6b0d8e2bb8e6911bddd358f0e6c4d59ebd0eaa00507edddd32bc78c6a2b228d723fd095a0f2e3140861f9d28e0cc83547c046bc16d6ef454a11a75ad6bdd0335be78045e074b6d2a6632d1d6f4b87193e507261432b16502b915771af5c080c1b096406c981d0ae0e3343524be50526280c1067527bd15900a2039a561ed4029c07ff114bcf02f8f14fea0447628da4056c2ea7ecf489072e4534c85e2e92c9ef3e041be29f6e9b60a07fab40fae43c4ff96e38d9c0184199c71923874f1efbb7e43ccee377ea8dfb14cc1c985d1c943f82fba318d2a41b09c9ec4791903777c532d2268ac5dc0e3380f878d40d82e950abb6770d3a6406e5d82ee860eb9783c4ed1491185a2eac74c7c71efa54c37d9e8f19bd831589977a120eeb7ae8fe9cf2d4239b10310c023a6f7ba4132442c5841923764f8438b4da39af86406e284a6c98f5d7986d9441aabe32e08b2675c6ee22bd32acba4f8ce0dd3141d4be74a0038f21860f7ba59e22782af1677429788bfb138e49ceae6c8e4ca9f2cb469fd31d62a3e4bdcdc48df5fc3b4ffa25eb230e942e63a87adff16bf6fc6736dc4a5f9648f970a52e93d49f99fc5d2e09d072aca708fee6ac31254f47d0e8d9ef30ce3aac75f227c56c86585e8002b280ff29d3be09ac681fb901aa00bcf43c02642bc4e22c96533325d50a74b978d633b55584283a1544c7e0fd59c4bb45aba52191adc897761fda9d4521bb250181484141487d1f3868573cb1ed8193ca283b6a9ec238f04969621e9cd20f603804cb89ad7db55130b065b20b4a2ec3c5f3e22ce236bb27a8299e9bdb1086a205f9d755361609f3780c17811f3ddd85b010b16a5631911dc7e0c8f5386ea9726d4cc4330a41725ca7947cfc4eb287195290b7b13c9d9e19e66e04b1404c2222d70739b265400f3ea51726704016f6ab9004fce3ebe5fb52713aa574c3c77b75d75d830af820208eacb2d0fbe187a1aebdda61211df414656a620b7aa51938a7565a7ed474b4424d1867f4c845c6a17223d93c3bced9cbefaa42ab0c4c0a3f545e058fdf08fb767da3f3bfd0d8a3579ab05cd5032d770be59e1833791388e6534d26831aec5f288f2e40cffb3d38f80a420205faac7e919aa354684ed0257f1bbf2b3cb0cd1a69c3e77c246f350e0b0825f92281f4f073b9b0edf7418fd1b9fe792966e96f2435e92bdff00f1fe22bd8cb210dbd095534ecbc53b9837204693dbbba68b5dc39faafac6c5b1f150da015daf1cc2c0a09ce651cc367dd29933244c9d232b7641ae65353d78cbdf5072a86667345d37a6e18f33a58f615474dc12034c744f7bec9f5435874ae1c84fb7fa698eee413f72e6ddf0aff7788fcf33f75fd04f8908f2f68da0bb3e6c5f2642dffff004ce28db1edff7c2fdcb35a94745d084688a3f6a6501526320157905fcf1133bc73a0446e4802d96e21d6035612e5dc4b4a545a48641d90b259991d61b2e650eb0982b3b275e6cfd9f5f0bc7a7071fe9ae35c282c529f7a91caa452c3fa909691697b90a0fa6fef2acf5964808cec49a26d265e8013324cc5b9ed6c28071e55b35c10b8139442672487d464463d50d6d7d185e34c7490a9dc95fac90ae3a3611040746ab8c38972155cdc27c43af50ce688ae3ce25c107b6bbccd06601290b2398fdd0abcc18fbcd0fa697159fdbf64593b0abc5818daec189a87121f8b1c9410c40d59e670a6db42ae2b54b65e4fe02b73f7678e84a46ee024d6068383ea52a25bfc38e291fff9c1703f1bdda1a78ba0b788355bfb249302f8993ff96f12dee2e9bce78cae335c58aa18145064c0bd6215817a6dd0ce754067da5a7a9c0c086cc586d61881b889a80a2835eb06771f28485fd6a63d881e406cd548e84c511bfb3dedb783f18e54450107620b743f5adbffe0149df602ed5d63b024f8597a8688faf974fb2da2b01951ebec6b85bfbc69ac374859534390d589336834d4461e28140e41af42ab14bf82e24c956ab798ab1a1ab12fa78a0b5dac918e34e6aeaee01224a092725bdda26a4548493877692b53c80acafea975c577bf8f58adf49db0bee13a7004b0d697aef5e720caa92d4fb3acf049eee03e8da21c752684155f5e093cf52c6065250228d36f312777e002d38fafff07900588ef39c70bfc43852cfa6d0c1b3b0b1f3d49134a5e5e57f2e33c1660113bf5c5904f03007819ff3e4bbcaaf94fd9340fa5304954d8c58efddbe25fc47f47d19a8b67162ff976fdae46836c5fbe1248f594d7cf850181fbc43fd5ca95a318eef41dd8bb5f3e8141484b288b36b79951c306367e1bb4b58e8e85994de84eab9c7680998cd40918e1cf63bdbda61393bdd6f64e439dbe85f0799654010635e4841752e9af6a5c78d43c64612e4385bc3bb58005ccc642c01c4a03cb1397f99a72f79028d9d75009b2b7eaee6390d990811c37eddc92f34325c5c063d55fdcc7c18b2e03bd45537dc4d9c420c8bb1f278313a47cd467d54332116680ce6571e03b6cb970ad29080c574daf8234bb36c5edfe640a2bad09d8bf8340576712c020978f2cdee71f5433f40c4b1de316ffb09d449554681581582dbba669fff17740c01b6e4e9af47c317a59d89d2b7350cd43cc69f2d5ce661615913e4ca9da39deea7bb86852d41cee76999ef099f7f5e2238fc135fee77ef0911326753dc40be77f5404930b321c6eca95ffd4069321f275df3a478404fcb143a0126d85156666c296e0bdbaacf52bc54e4c81adef477d9341537303d9bba0f1e20ab83165c5745b678fde2a0886b20ae8daa55889304bcb8f7e6f137b04d299bf1c7aa48089bb3c3957927c82195dccfaab12a3775e061dbf76e0360d0f1f9a1fa4939878ba3faabbc182677d87797223ac1917d1f3e4701a4b503528443f5b6908d8379dd86d27c39ad1aa8b22ea6e7ff0e1933cbba7e82f6ceb48883237575d8471d4619a7f4780f0d6c796ff200b1ecfe5bf208e0e82d60fabde22c503e0a1422471dea59ad962bd621ac07023be8d394ea9b758527c0a2677a258f85d4b841005eae0761cd016796ba27beeaf14772f69fd07e0443717bccf8790166f2530a0d78afc2451e9859017d74c091ca5fc4b7fb78377003681d1507e94badffc6ffe40458a1e90c6dfc1d4a4257a1bc13adeb0e3f3c4354427cb984e75f706e8f2b7bd7e60bde95461c9609e2a63b1f1aec32f313a835a59066813dc5a06b7e3eed90791b09559f1f9c9104caff14a48164438fa8182d1f5670c13d3cbca103fa28db09bc0abdd4a687c7e616bf573026b3a1a1f5c278b08cad5ae8e912cd73fbc52e2f12ca59c8bef5aea802bff34c3e1587a7b597cb67a03c0716cbb065ac117d4edc6a346c97fdbaf95871573bbacf9e2d3be777a651f3a0bd2cc7d53d991cf733b99567bb8d2decc29669eeef8c37c1fcf14f79241057ed346d240ef721913bee0768be904dce301b919518201da3215098f33a5bb197bed3ab0fdbd18afc6e6fc43ded78d193e5dc8bc24979f999bfd2e59e49c1dcef05944918eb99c378e1e38f712e5c35e10ef23c6215ef036f6ba86a60944c4c90a3a588b4e2b0f5396d6cb1e47ebf94531b76d00cffd9d6d18cdf820bf13aaa1ed1d947b9b47900022556177cea407438765d05fadaef933f39e592b8b0b658315c21c7e48aa679af5229cda2e8a01c13ea8c9f89beb7488c9af5ac4044c95cd7b0a756563e2b35adc529ccc3c8ea051ad38a5fbc805b2660a5c204c4f04da210b454b91360d64e7d712265d02e8ef1b92134cbbacaf8e4b71fcb432694d612516ebf9282d1d22d355c96c3be9f7b9a0c2d1f564cb8d3cc60f71be68d79b4850286db6ff0ec9300fedcb033071e96f2685596e360080d0a7fe87544e53d9763008aebd80d3eeebd972a8fe528d60bbdd276542f88ddbd210c7411d65dc473f41c0c82626cca5eced039bde121db67f5862b6d657c0e9b9952267b81e73aa5b2998b9be207eac21e10ecffc3f8f26edb72de0a1594068225702d4289bb2e7aaab22f1bc6baaf0284d08dc69a367319acb8adecb44e3691f8db3f73bed4b09fe112523402c4e16f051ea5ddfa682d3c08301dce23ce13ae29dad21928718a1cfe5ad98a444982dbd91b103df09f6bb2c9e39822ea59ab9a7509a1413c9681cee89e6314d4d2e7a3a17d730bf6f1fc1a9091c7ce85d9bffc0ad780321c88ad9bf3e840040cca653dae0ef93089f6517a9e2cadc9b35c7bf876088be00255dbc91fb43d4c790385f7f52b5e133a4ba953bb5b9dcf7e95af403b3391ca394a022e7d723d7c6a30cc00a94552555b124c0ba5f8fd90d55aa6be1044e4c0757ac8253f08a50a316818eb3a6425b38c70daa35492d9068e2482335cfc6a4e723e178d104d954f6aaa85321a9fc6566a0ea828b9ec41d706922e75e46c08beffb0bf21648ff5bc6553e7883da5123d9a992857ce7c82f30ae6e0286c7e52f67c2e2f07fb0e4e1d25a9d0e7243772864a436c59f1ed22da3686281d6b6c98a5e3dd335c9f7f72e382542dabeaabc8ccf43faca31e9db926e27c8fa5c54739782224d1141d89fcd4c1df6936876bb2d8e348e74654208e597bf7ca990a714a537e2d248ad74b9699283c2ce6777413508a1b8e4aacbb0b0157c87bda72238ecd18675872f6d414f9523d9c5090d8f53732f83fdfe2e903af2ee67e7d97e8b9608706ac3209aa62d2911c3c16db3cb863ee25977ce4dac063efeacd0396200d0d9c8284bd2b443a150af450c5155a8c2b006b053cb0efe7580294ef3a247e37691d14936e2c90b0484245db91818045041597c002533f2c56ee44f8abe78b8f58313c0997ee6e8f6875741fe4781077d2d8fabe4c0016d1f90a811aba3e2199e1aa3dddab493280235148beff77fee2125beac3aa5570fc9e0276c7d28bf0dbde409f1e48f12606c4bc6e5d450d553832ae3f7c45a682d9cb0a705f51fdfc0984f0ad5a758605494ee5f7dfd073b221aef9d6aaf7c3328b510e6172f8be1c76f173f510ecce82af9c12d52e7671c7a3d9f01265d11b9aee877f6090227c7dda4fc2cb373e33bf4985b861915e6fdacb5e41565f1624892d4f2c27aa0c1c1e6f2e04c5d01d11d60b52ced895c8aa43aed7158c49090a0121c1389401dcab52501d44408d312354d815b6d989acc9f1b4183aa13b1646ba83bc5828aa417c4135be68da82293cb95aa8e4e8824715e63d06c806322e3d9ef4b37b8b99dd926676c5b2f6ef05d7f9b1520aeff6ce1ab7890f85319a655e4bc96a610648c3b11264a50e3b10c28afeea76b3b8e4ce780dfaa8411aef273c94b089f907e1c161e8ecdd061501d543234bbc37748cf42d26a05f9dbe6592f800253503a103529e5f942a0933b63a42ba6a8a5537b847d4541b608ba0a9c7fc4aaf0f1d09134bfc43b908fe07fef63e881fdd06", + "0xdbb36146f6c78513d4557fbee82d6490e87dcda8dcad4e354acf52f22ce2e4a2ede071bb1d832438843c993b90632ab1a10bb523f89d9469bd50be3de50f45bd2773bfbe661215c62910151d0c483c50ec40fbb55aed6247e023e620dd668556b349bc91496072dc17f97aa14ac2b854ede1878eeba037d7901f5f80c31a33014d2315794381b753539bb48edc1c54019c779325dd033b359e1d0f5a2dd9f030c97c4ef1567071321959155779569b724396a3af21ac002c4de5663912a2ceed8bbfae8d87dbbbda5765381d7b0221d704745950ef8eb42fd8e5fe8f4f30944c0dc0cf5f5f00db782fa69e4d60b9357f51cf0c3742252635eac020ee22f2bfc15d8c71776b988433796736b84a190e3472256d5459a0631c24a5073eb2913c9b9c8a68a3bcd5a95e3edd366f7f5678a00339a345382ed7ea9a78e1f3840d0fab80e7c01d686fd4793e76f933e95b83f772e8ac66254e18dd56d3da9b07617f73d254713607be68136bfebae5967bb96f8554edba2b35e36cd4c9bf4e0abd7df3f117376136e85ec26c916e3939afd09bd3562b809a42e8c38487fb5c405046884e687544181f45481b5d0cfda768f223464878cd858465b84cb900efc39f8537ee1d3288d0ea9c950734064c5cf2fce49f17b994424cbc5c03c864718e6f7f1bebaf892d0887e5daf3efcb65f45f6005f2afcbbaeed2745ff7e23762023bfa98f38234286d4fe50855a4894ab20e792125af82bfe7ed61f568da637c623df17cc787f7cc303c0423d8a089ddfcb5894b766cf19b50d3d6cb0bca1b4d570a4f1ebe291a69866ec98eda43e40fdc07b73df24ec21290ee208d8793a6f66cb632263f8d3b0029cdcd1bef9c678181e1a6c6ff7391abd3c4b7d5fb280e43928f81af4a1e21bfd6b0b5d75cdfe018bc0ba52bd3a585f787e9d41476a77d309e65c704f06e582bcda003e29ca43150848b6ff5faa1a18ae10266b77e4158d0c662a761d765c678541fd65bdffeda5372820c5fd4af874a56de8a288af952a928745fc3b7bc7db73486e23f865be8a0459f4b681487a950229511a7882c1bcc44422002dfce76bd3af33e67a935647f601ed55f42861ea3c4c0a2ab58ec53717cb93b23b0b702c9b844cd3f9198c092475ae8923a399a7480bf8f9f4e2af4469b226c1221c113da012659c13e72ddbc26ec2bb3ab2f3d71dc0875f0b4b14f8a4bcbb5b63a22b5a9f02bbbfee1b596bb4a5c316d99233adb2392222146f254ab9d3ea5a5990d4cf862019348634e043ca5628e9cdc6f89dfe5427c54b49ac97c860dec8df00f7ca4b7a36a37dde0d5994eb7ad849fd62498757944f3230390e45c279ed084bec89d55af541b1e5f7424ff72b977e19785a66a9f027aac673f965dc291a6b0b54e4f25bc573f296ad38e95ff405ff7d75e2e1ece7730dcf298a128d4a39d60e72d9014ca3827b3841c2294987cac0856ce3d328353883398a385411ae32f97397f8093bd766ea9159e66a15b505090727d5d08651a25a5be780892b2e3b4e974effa18ec8837a83aa83906e9707dde856c184817711b1cbb0b4be543bdf30183596c9bb8b22a836a41b231944b21958662c85b1f3dcaf31a766f6bb6752a1cfdf9f31a40fedbc1e7dcc9342494322f003bd9f3d84dcc7cbe92af387cda758d0a16a8151630101d037d7947249a2e75598c02817a7fe57cc3f1f0c4690a23378f2fbc1211c6c0042eebde42c4c760086b60acbe298a7aaa3f6fba6b1e329a16aa200f1a2753ef1addef082449ecd9dc65f9d02320ef1633cbf6eeeefc3c40b683b8583a5aca50b53ab43c8f0d344fb709dd3270dfb5c039db3dd8f0b37ce3ba6cb3c704b58a9961a9b7e14812f072b72ba0ab2976eb5d4fec7edb7a568905574c28620b573ebb5a1603c5bc1e8fbbc98c2cad14d4153cff7c7fa97804dc9ad65ec5e36a91deb5151c840f76716af732007bccbc2e0dde44d86ada3a23e6a6154476263e136fb5b7f4b91eaa00487e0ae2fb51f175ed9010b04badf425a771075e4d5b272642169c3c1e6aae4ab44bbcdd275946d811edc7872e123ee602f22f7fca7acbfad791d284f3c27bb695cf8804f3fd92574c54c2ee363d948c5a6e29e9d85c5405ab469bb5638730849bcc02341c746f6dcbb2ce8a31c0d6082a43229b1edaed697b85ef4018d58f4d6a2e90cc92a9bebf5f44aaf26c8fca1aac355bf076314879eb4ef724b6627f16a85befb76c4221e513e48c58e36595eac6b6a98eb2ad1b3d7f3493bee76a88ed492aaebf2652803948789d04ffb34631c300f8a4f6309e1451e0d56bdefe5a1cc546b133293385c2c461789f83a34cf18f08c47955dc0e610ddf84fe752946e80591afe0ca4220247370af4c66c2fabe94d19e497a832e4207689afe6387c3e24dacb5564c1503a5b2c446959e950a9954d1ad7582fdc16278c7c7bc1c5cebc95bc1a27f85ea2643783036223aac175163b62a025ead11d53dbfeb3458b6fbf87e3ca9853fc944d8ac1feb463dca21846f14e36451cd6bffa3aa9fc060ead6687823d20975ac5d4e7bcbc75b1a6a0d23632db9a37222a1981372ad99958383404b7978aaf29a33e480809de8c922238bdc4d22c33bbe86b4b163942ccbd1abf55e08ccd91157cd81110c369fcd778e2e82f9a7848c5d76e044d6053b73621cfd94d551048891f61c02f9d025a837dfccf2716775b5c5cb4ff11368ceb608480b34715e07842fbe2dab2099b193d48b3b54f9924c663969189e6a58faeb92c6e4ca549ff79341f83215393871811268bec28ff09999c0337f1568236f11efd0be6c7f94370dbebb46817545c7abfc34f022d158c4d787935432384bdc394bc42fe98b11def0eee2c2bf02cc5445540e3b180739586b0cf660acd3072311b2a4afe18ebc6c86c88cf50625cfd30e91fbe0217914a660244ee1552ec258e5be95a8de2493d6260b9ce53b01c1c1dd1b62942083ffb06a328e13dcdb9b99dd476317c63a63d6f1273927dfa70bda5da291a0c600246d07ff31d35cb2e4aa4848fcbb55455295675d4fc00fcc8a60974236a2b42a404e7dc1b44563caa46d2de8f1d982ce55a120660d1d56ad0f3c04d4e6cf441824268cdc18971ddc15218739f888e179ba331e616614291fdee03dc399d246b73853ebb361c6dd612675d7266c9575e3a0c76c5090fc5e45300b8ecc2c2e2e31f33eefc819823718f96cf819cbf08e067a0013a887cffc90b149ec60de397563642cf0fdcd144d6c6611581537b2932c91e086ec8b5f15c5025832a8d3a83647ac564c798f611d2977f30755f6a6d9bd7f4f234d9d9baa4f384991e294a23fe2815f1f2273f0e43cea7e4a10f372f1b0b4f0577c06e4c20e5b8291628d6b1ca2ad0d091a120be4bfb21c889f3a4105bff4498dc4d16e24aee88427788e9de1cf8d5b9de809e91b7e7725d61d7f042df6d639f77d4cbc68265089a76c4bf0b32193d557467becd42511a479989847dabc47becf968b1b5a8a77e9a11edc91504dc5482c968beeffe410e80f02fe8dbddb050bb4d4e53ecd3b355bf2e33d0f18e53bc10e26e39bc4af37e8466a5144c7ad25f01dd375e068d5d8fa8b17cfcc5db7a4d80c4031e1cea2fd744f6ed14026288e9033889a760d93a025cc1fd50efe5dc254d2eea4672df40b3b7371e5d365067c68674677f8cec642245ec9f8917caae915b3197321d3adc09578f098680d09fda3a2c674b2b2f466a5f989c4b32d218455944556e60dfdb031be2d17b563df77c5f3c3bb2aa3832908869d292b2cc491344fd90b20843a207f3887347b3707209cfb16bc154c8e9c766cf7fa501d05209a663dd2868bee8cf4ba02e6d8cfa7858a920ca95ad04243d022b171f805d3d7612a90f2edeafd22213700c728662f041d60e8fb278c6c966439f6a9d7b15f71daa1f0322059db458fdb8c9572cb4451f05e21eb175537837d756d23806f663a94d79360cc4a120a773c85b16b1b71f5e786ebf964eaf7eab9c2c542e72274957f60f1ce81e1bfbe40f08fa3079fbfcab4170f692e87c92038055dcf7ef0ee765b3855d0bc0d975ed749fd9498407480ab3de3c1ccc81c6d9016ee75dd0262e9734d0e3f0336dd1dcb1ac4d27f33e31ceb0a7f4d365be88e9f77d246f72ce089b05542f910f564e243a7264f6eb16674d3fed89b731d08332181ab34e66a2609f3c6285e14c1ecc7c335062335ef69b4cb959aff23b07b821a1d3699428385afc50c10d5fa8d6f9bb9e48e0626ab82db589be21012a0a1921453a3b00b4b80d459551945cdbce561e3afb0d703f79c3f84380e29d89e40f126310f19204e7a65d68f089c1ceaaccf80cfcd17831f4f0592f8e5e9947b2c1fd2db965946dec865f675df4c7e6d4dd055db216e5ad385aa073e39b4afcd9811aace1d57c5caf669f7ba3bc9189c9c027d5ba825e3ebda7d02e2072fad83b7aed09709e18c42111ad8b9990c40204b390ab1b4ab49791322def7d6c713c8155540981a25eea262b7e63cae1322f8c6fa7c8000114ef473102befb22b60ee4556e6920f38e43416909f38035e83edf8010308b18d94b7d314f58daece095ac9748d14f192ec1ade8cdb93e4748b98cdbb8a0bb7fb85229bcc597d63669791d96998feb8906ff1daa44e57735ca13faacda540f857c007222d6f621670c3efa3628cbe89f1b8e3b26556de66245826e68b3b64e444174936fe79bda5a9b0a4c77f6bfccf5a8037fc7218e39c5e6b1d21810b64738824c3ec5b740958962ef96955dfc978d20191dd00f17f1a9ecb65d8eeff450d8e68ea4032e4d5f2fd0d06016b339cdd46a6710c59318089fdba38eb4450b787e2fabb71c901d5416a855109c01f9b26063cb320592e9a8e99f986d8aa736d38b9cae37c362e185aaba5043743630eab46bf018af49e6c8e1302c15f7ae3c216666f3a93e5b9f47254deaa575a2ef4469eb29552ae4a59980f56bad6c3ad390ae688fce317fb4a233c92ad055c5d0ab48b07b14021089737b7daf9f6c8d7cdce55b05da65db4292ffebbfd821783d4b3ec96a0d67b0b15dc3945091d7e90414b77f858db21cb07d77aa29d8c4ac3683f85294427fd840966449795f41233cdd030fee0db1d4e0ec7519dfcbc2c7d0d017f105f737d8f45208fab72546119dd7e0c89d169e1cb2c5a6ce9561fe4c5f112e64d330ae56ea81e53d2d39d7f3ec7f0b8bb44a451f9f1e1758d8bea0eb38a5d2a4d29f6b21e4c87cc7d4b4a31b1a26e86d42df225a862095c4e1af63c755ff79f2b8694753045c6bbfe637472d6aa15ee7d5bb0680d4936d3b33b6073424e97fd90725555fa0f0de750e30ef27bd8cf07af4332fa57b601d31c4508aa109481e017d4878c1505c897f70b2f92ba9a7d121c3b6f0e97b07d15e4caf44f2021574946bb42e62c6fe519ea6c46e9a8d967f036fa87acf046039a943279c15604d61b166834451b1ce33f901269c2ddaceba7bf912a302886b1242ea7f2d668f7e89f0d275d1f5a8398ddce2ac59cc26f54e1e430bdc974079bba79a14057d5555b00e88882febfdb9c4c246e4129b61d046cf45e22fba713dd286e76b180af0826d0cdb675ff8ebaf9ead4dfcfcffe1f5dbb9b8adb1ea494807ca49df781393191811de51d54d315949827b7622a8df75b63b81049dc224f128bdca1e0ff4e9c55edc32696c211c4563ab28399888e6c729fb81cc9b7cb1e556a91edf2939f4880cf2423942446d3b23bb6de2c6bcf2d01cd8b0481809a2e4ef59de5cb4ab98919489370bbe631517b068d3bd70bee09c0ef2202afe19567304bf1031423e391785b5a95778afa5e7b8e24a9f9d15c2c802b816c7cd5d58f594f53e42294c76cbb7055f1742618aa66c78b9683dd3408f74b5cd26a2adad3a8293975f906efb412d51812d7e493a4ed2a8fecb482d8daab3e4d98a00631b4f3c3a9be0c540a8e6f38aa33d9829616d035650e2ac465f0b49590fc8b5f6d91434d32f177500daea92ec9ef9bd046e3c1e96a9341e1f813ad0757a28d816d50d3baeaae903e197f62b0c75d8134f81ad74af0cb53c5bed52ceda5069e8cf1d079418ac0845737a4c199f2249f29a9b4f5e314636494d7901ec6c7802bf481304bdc8ba89c48e36aa6298a437cbbd1887c3fb4afee24095b77b54cb0c0ffa513c0cc62c6fab065f310854a8c860d8267e87162862d8041483afe9a7a5d4b6a6f9f13bffb32a5fe195534841c6ad3d063c18d789ec766e9ab2e8c0fface45378d3cf8e105e330e06a20a3c44cbbd899ae832d31dc19ca06425d6eae00bdb2f742588702fd87ccf8aa7ba20ede317a8c9a88edd41171512f6a3b566310962a8f99190ec2ab29eb8dbfb7e5a2650a298aa32deef60965d74ade6619d2eafc98a05b1fa2b0b01871a6fea485583901eb54939857c1ec2ee9258ff731b71addbca446a198e19be83745328b7c855ec0db8d1d81cf5152454cd490b83ed818d6a950d8f40c907a038973d8172c773d88a5038d59052694c074e3400c8084ee3e474cf28e5dd382b0a91b6adfd97a1b510c515c0928982f0a0e5d10db5fa5779ed238cec8af63d12b4ab3b21d2a769da165cbd32d706b4b2276999bafe45ea6165907fc43676e6b7915b68218ac0fd5dc19c1067e9368b25641e2f90d3d406aeb409f64c6b37af6f127f046e74f679ad82708ca80500ad59eb5e46e273d041d00bed48acc005ed82391984e69e75e34239fdc7d3ce839a4f04cf4e746d9e196e060af84dd8240b187d73bcae3ac72917d280fc5e99f1b57ca351defb5ac6c4cad840067e1afb161b37276cd17ba2193b57b8383fb40eb6dddd306fe647405180cdf491d58c4cc0e2b4e7fdd9f92e62d3ae5febdff96e8833f3ca65a5592da9011f8f3e7533f6dd6ab4c82d60b97bf5f79c94635f6f453c2c5bbc0e79d8e7811f1aad4fa87637325d0c1ca318192473f561c8fd6baae7a06384e3e93e791eacf23a605f690b718e239f5bdf69c2f5ea5cbe7385b0b9ed30cd9284c4c69ea6aa9a1ee0a33da8754dc02a6a5e0f37e60331ec9e0b180a02b3359304fabbe8aa383b85b49202862503610824a83d473f1b7d673bd0a8e16e2a3a981a6b56f877e650919cd24dd9aecb609b05e78de6552341c294ea1386435fc4de83d67a39d86a9342660c683c754382248b8df98934b04eb47599dc4759fbfba69f0eb41a8d7ebc8d6f00b0644a4a492d65bbc719aa4ea14ba3aa50434422a07bbbab2be2b9f951a5248563fb09a32a5db56f876002d04ec8382fb52146434b9c7bdc4ddcc2c28c4141129436f60d4724c6a19a9ad54e3f838e3417c89fcd8ba2d110a0bd592a9b16c2d9ec8275b0a011185f0fe6d54562283703b0d8d50f197be656645b5d6d4c3fe5d7da743128c42870ece106fe6993ba12d28861c9f37fc0378d7327db1ef494238323973237999ff0005e9c98efa03e3eb93efb8dd4209b552ffad64e067cb036d1abd2a4704de3dd4c6a6f17326413079b22de5848d844361c40044059adce15ee6941f65ca98f937a27745c7b1c3821ea338ae6cd90d4f52f10a1a176404cf08064bcdb84714619e2eeb84bd8fd3646e35111eb9828631cafec68962650a95345cdaf2051d259596aecb531782b87b6309e3c8d6939272e570fa581a0e604f01b29b14dd160d2af7b275ba39c1d0face24464087aca4528b7262ef77e0b8ecb9a492f7ef28a9a8d80820a4d65eee2c1758fba0fd0d5644909858de6b8550affb07912876cf2e0c607ca462252582ee450cd0040b5ee46da8f6be57de96cfb22cf6cc76a1881947593a2129abf4703167548f0e5bf38e282af0fdaf7f413a5e4209137322588dbca1da398f93e24e7d375c0763c0bc3584a06e01e12820d6f5d775b3f7bc865fc6625dd61299992169228e332b91150cc42d686e0accf27e089502a69dec0f2b301ca5fd917dbfb924910a8d9513196adebddfbceef4127401e4152645996f52bb7e37d0d1126129ef884a5c51fa46c7fd08c97d72d9c7429bf8533590dbc1949b164fb7f9d2a6dba19907a814f18ab100667ad720fadb136426870867d166e8fac5879316095458221cc3061739f923f86c962ea652164d4287cc5f75829ca1740fb0159889d2cbf0c086299955d2f8ad699704571a7929ebf13e30a8d4c0879a308973d3facc029d6eb86f58c89f521a9e6650a81468a56b409ad2b4902d606f0c80597fad99a64e701b351cde7bc0ed54a9f8b47118dea2e6901f9076e0a1eee5a8513905f82d3ef458d42d8bd69108c4ada2b93eeccdc4d8cd7ff661617982ea87d70071e22339daa989d757494603bf21bc99669b21d7c1dcfae77e98008b8c70f7b8f3761c21d27b7aed5c4c46a739fd805a424cbc388a72bd258e8692e0ad85a7aa3c38ee6dca2b284450de19749a4ac2a6b9fd62162ed064b839116f489aa4ff0250298ca5ae2f7d33a171221cddb65d4cf3e4f1f6e3399a6a79557700d2c41450bf852be775497519a5b075068513a9bd95a0702d93bc2e4b0732a738a496830872183665819d1ad7d3ead6cc5f349090976354699abbf42de4fb1496996aa502fe72e8e54ac63252143df5bd17d3c6fe9f794129e6000a28ec8eacb1aeab01fa8f87613f633f80f318c7045c96623b66f7c6a740574922187b2c8f975e76cd11646757e3c0c1ed26cc7f81df36fceaca0726a8567987a71a21dafd477d16324ace279b505e6b52decc7a6ab0c8d051516dc4ca67895632136732f838e275a20ed32f149e28ccbe0ffbb08cf061c7f6c396e13042cc57f229a3d945d1e2c5bea94f70e1f53d326c33149e84ef0134fc10f690160a35741b47dd0875ee9ced24cab248dd147ccf78c65f45f6b503d032c9c061abb95b3c529ec3e0746211871307451ad7cb5e9294ca6b6f1b7d605ee7a5400e8398c3e05e1eaf76d66f0e75f45701cc73812ecca344d9323034c2a586feb39421c9717c2301b8cd6b4fea5bbb96fdc0ccaf7efe25bd381a76fe65aa3e52be5b70bdd3abef41da2df0af0d87830463039362fc69e0c1f6787eb2ce51f7c268443cbef5a9d01d2a8ba12f4e0500c6f6a5b2bd8c38e56358c12c5947da5796b2cb3667096e6a9818ef36e318062064329e3075bb5c91b887ed69b235d011b6b19d56263c833bfac7156cd56cc1c049ec98435379808457b04dd2b13c6b5532433cdec1dd94ea4d70b16e80a5746547908b76b62a9de7e02b4dbffc2e7d26bc4b9bc1ced6e861e1d305d656153eb510e803fa0e06179072be00ef6dd15c442988d49d396f420ac8c3cd713c70e1edbe73782762c275ae32e38fb3936d767af4ed54f8c264e76b5ab49c290906bf914b521ba0cb9514c1cb28cb0430346c7abb9b25057c51c1d9b3612e5a0acd87561abaf15ef7836374e99d8106bc6ff0d3c05932c65062d58f3084569a813c78c16c01328ca7fc93f3bd4d6796e186c33969aaafef785d8cdbf694829521f723edec362ade30cacaed7ccc9e3cfdce7f06c06a02a004f984796ba2ffb594451cac244a31dafe4f313de0d3376aa32e1ddff302cba35881ea51bb3476adf560fb9a05c464560d1980aea5ef34491a905664d526f6b0accf892154424e86568d9ebb630f35336eb6dce00d3aea81dc235b1f5c26f5bd8b901e6b6a34edcc3c0499e277510262c8ed24975d28c7411873753921ce7f5c54da924174fbff8b1eaf29975bd24bf4d437011d5e67dd7f31429219e3d781c9bc132b19ad33434be9b13d0591f5331de08e5893dcc7b6f33e43d1b504eb15364a2ad8d294597bfc7fc549487dc25ac54d8dff102a3b4c73889889420a2db0a7da182aa26c0e8fc6336204a5e6fc508f12dcbc859ddf2f750e276ceb1f62daaf1bbe9c43bd6cf5ea4eba4a3f79cd25f136f1fc360d1d3c4404b9ad6e929d232611033936d16cea958e84ba7846fad055591ecf7e57d1590a4ff062c5548225019351c45038591b46a296ca6b41af7b0f2cef052fdd8c2f380b09787f7c13c165ce5af8174453bd9caf4f6ce6c2d6e941f4d7949b04dfcbf7056cee1cc314f505c02d7db08ee73fd3ced27fde060286d20b3485d8b5b29c4842114a7909fbeff2be9d9f246fb20dc88b11a599abe1d1d95f941c29dcba451b76b25851ce6c3f18eef8fdfa88140d9067a633a9384e3d08f25d0ef7ecee27448ecdbc06ba523fb0ce0ea5c83af7d2be587f636a93e0a5ee58b8d2e95a17ac632777e60715782a24ab86577e2fa1b9234458f0f1891a01213ccc7cdf1e6aa2f314fd63ae4fbb6ef42b86f9adcf9a4d8e8905c229491ff3b7db51aa9935374981db58b4f87ace2678c4a75aeacca2c248788e636ee9fb53cc876f66ea21a5ccbb39720540cb87db7c4241d8b097b2625bd5175329e07fe52525e8190e677d51679a3188ed1cc2ee1145fa9101e8122958599e74bc8aa5bb7caf99e2a81009dd74a162443e6dcd5115c0b22ae83a80fb6130813192a88a195bb44bec8e28fdab77a66696575f6f69697cb94fbc4c5f335f7cdc0e4dddf8c4e3d3cda4184377ca7033b7c049b7734116925280cea10169cbd0b3c4e0327e127f4366e544f309ff7187383b21e1cc71faf58dcf8a01fab268b5ec1fd692152cb74e906b5453d95ae9135caad26b44571ae66d9ad8f680cb242819391a4f5f545ad20a3bdb7fc7007fff12a8a085bb810e7e5d6ca350e9cde21a12ca809b692850bf36c37d19b1f54ea690c89588fb798c27f78b06a1247e7eef61ac901009226d9bc5e1b0c6b90bf115dd84d06c164187231bea89c2574c4a007fca4829c1dcf501b81cddafa83a319037f5a950572bef04566d3c4c7f867d19d60d4bc63cdf711dacad360155f7920e498533f5c2f8aa3297d33c20246a84fba41342ac56ebe3327c38756d225cbab8260c2343284dfe6937a46fe01f08e8dba4b26503b2167c142d4757a88d349e6e24f207c4c0e933384fecb573712c90e1849bb9d6e22d5eae2ce586ecc83df642774e8f24614a0c825dbff58521bc75aa349e00962624257ee0f30576682eb1faa726b0b7398823013eb6aa04373b78c7fe5d6698ac9162148412c2061f575e92d539d4f326a43bbe6fe681a4bb6ced3c737e90926e827797573351628aee5eb8c70175f1919a1a9aab0bba5cd03eae0222931f229917ca3f1e3821d30f5a634fd1d32ff0e0e275c9cadd9de7d174d885255ca74784bd89dcec2f96a6c80531ec824b07d3773c3752fdcc73448dc138267d19cde63bf8e94e4810acac7e9ded5c2d69639e48eb4090509eab37844355ba37ff89469808fa0a9403b2bab8b8341c340e65fcf3c5b9b485a2e7c641955c096e148794e6eb059cd0a69e2ad74b0ddf2fc14cbc79b7d3403881bcbcbee3d1500d0727602178bb1faad04d5840706c0ce1e3074f7996f18d54d2a729d6bcaabf71be191eb99624c7d6bbb1279d55533ef2c4724c02740b46deffcadfc987b7fcd0b644a7ecdfe557c5aea27a256ebec28a3781edf4c332eb062a6df7d6d99b9f746f62b5b11817ab9b7a81bafc278c1cb19a4a8ff200224f9407244bda1850b4c475fa6a2d557930856b52569ec539827d7ae936deadd51b97fcc8f9041e223c22d73acabcc1c46751844f3f5a27d55f1c353a06edd6464971e10ce6a0ca6eab9103cb3c8d544666621f3268e197cad2a04dc7cb467481a92c349238e5c0da6b356be70dc5e90b56eb4e9d4ce2ed452ca7569d7236507b5f21aef2dbdab2a4589860f4ec3b8c6bf67e962367b594b676c79e538eea524263ec77fafe50f9c743c8093e6fc3ecc816eed75bbc194ea6e9d70852d4c55553ffb575b093e1640a6f406aca8dff491a1d768d5a4e01bf7a73ffb93f9f3fe02c55c86578d2057bbc17a4cff923cf4ad4843fabada76d19ea399887916d54707bd775cbb8b63a91e7e6482b316f448d92592cc2aa545c75e30fe24e625f86308fcd4fe0f37e3578e17d9122f1982dec08bdf63d7866c3aa6b0285a01abd6d3d25d2ac05302e28a9c1f017e08b242dbd87669fd8bbf29dbe77cfe369f070d9dcf0577f70e10c16270049a8ef227f6289a31e2c9d419208351e693e86f2877f48bb1f7c09442338869a040bafb57ba2025f42b61340e36dda9077a46127b23dee62c190bb39c371cb77929f1dd0ca3f378c43c9701705c3d530d3b71741cae9477d2aaaaa4effd41568d6c614d9866346f82911e28a1ed415b70c3fb88c47b2ace018cb0c7a2d374409ab1d3316aaf5165b0b59527cd7a06bdbe5879b0dc80ebee5a0729f8f6ad5080e5b87043b9715d3f298d93e24ddc8e31cd499f0288f4052c2a852f31a14091de1290831c090222a2991d777986108314e8338efe00263fef96e56088b4e0c8762c96fbc4e3e549b9e4c92e63599c4395153b657622c0ca282fff8f3297fce2389e3d3a0422ce34a7e3382b22a3da81afdd4962a92397d96e5c1eb8b59d3d8e60693da4da74bc1230b43e75fef0a5030824e01c25cfd626358ea0c4ff3b84282aaecd4d61770e247ed8ea7c1f64207fabf3c03b7c26e261b8206ae067763b6681d70a9d99bd21411e5b97dd83d2a94e7e8cca23c0326cdc064752adae849855bc9998e68f18c69242f7e77f9ad8b14648060c1dacee26959aceacdcedca6ccf624549580b3212d5a132bc4d57433eaaf370fceb220051d8b77ed0aee32f9a9ed628103d773f26f7cce22d33d8f71b75b6e2448b83716a5eb875a018c74867fe883747e072eca1e1e4557c2b9c49b6b76239e11872c3d7f60aae0546898d248371777056d7153ab0cb4d51c513b8b5fc0f4af91c1cbca9732128353a3302bffc98a46bc2f3e9e441ee139e91b9c1e8275613ea720b0af8ab7531b6cc1aa1e0e21c7918551d9a09f5e253508777ab49480e6656b9f120174b2a5d3f43657ffd727f87d6dc3caaf4fdc070fe3f550b37729b2f3c36c6a7a50ce12aa413663644a2bd024e4cdcf09af98061f6a6bf00487909deac58cc1faedd34ef50abaccaa825e4610c855cb4d575c995463a4ae940689d202e85396026c7df5db23069e6f829fcec440c8a4ff297270b008adfbd59ea4042505263d374c0913d880186b16f46d4c3369b79509e98a6fc7f6bb453ae9816cf12e23f9e512eff83a8ec42046ff458f47ca719d355f4beb456b1c3dbe0cb0c43950ac6d7977578ba7d672b26b2dd1fa5ba51eb1b418473e65d3b19a5e6ab95f849fe99d06253a6695f9be18345e9f19c10e29c69aab69e07aaaee849a59270f8de1bc6ac10a4373d1f16d6013cc593d3ed803045f9010ca6aa85890f8f490fbc17bc962853ce1cbf9ab763ec020a2fb894b90415f8a57122d40f42181f606bec4567cc35063210d02ed16bbb7990f4bcfb4b1715ba05966536e31ab43a46e03ec903dbdc4bd3595b2882e0bb53cfc3f32bdd7c9f6a4682d7bd733d0cdcc9dc2c4003668a7b0cd7c26e85a9c3e1c14ed4595893c394f7decdd36900ab6d349968b87525a63e79e804ee08cad1aacd8b792ef3b5910e361c1c11cd9c316ce1b1cb2336f7a8704c2796cd8128bd4258a8514cbfbc1cb69599c06fd94340aaf7b526233d47f44e2c475994051aa3afd2881bd0db82e9e7a45359c8d778d3584e4cef4966e88f06294f94058a36ee06481dff1ee336521938c970a75f8113ac2d34e76e36e5387d19f7ca1441e569de272f20932eca3d0ff4286e948a1d443a1a5952d7537f925d2d7b34f7730aa0bf4e510d23079bd8c5458e866dcacb67d89f0c10db2c46c8de26ad6b36457950bc321550bb637891875cbe2c4ded125998f3145430cf9ada56a61a0878a65ac3fea73f7eba7425d9c2d2745d8c952d44d01dc70acd47657f85c7b795bc6128f8f495c17988207fd265bc9728b20ad50d1011e1c5bddf11d3267f1d013fcd040a5eaae19b0a2ffc625a4b6015cfd81f36336ec3d17ec22eaa8b2fb70660c1f4070f55d5ec45f58f3ecc0fcdddbf09113c3822677dafcc671cd344047611bd42fa5b4ddf4d8f693643554e5de2f30e6d0b7d5e77053545497be8f8ae1e3261d1b39aa5422e5446de29b537b6191138111880553a365624f63b8826fa81fed26fae8b30901585188961e0025aacfe42f7b84bc6e91a674691d9ceabdb31c23ae22b23fc23c90a8b949a36e5485cafd574f7a75e2c6e138d3e67152dfee38fbefbc589002f46386ee2f72a090ddf836d90e4188a6ec940f6d3ae2138a25a1fbb42ae311621299d0ff07b62b59c3e3a55fb53146f919732ebfe2bc07677bdb24708b1ebe650c70e1f9f30174a6b1a7abbe2ca7262b1fe392e34872c68cc33d68ac2d179192c11722a3b5c57208b078532f52860314e880c4cb7a9978f226736e42cba20daa6d33754beadb0fa6511a018c88b165433c97678cea6c373c8bfdad10e3d6d142fe5c712e78000a9f76676fe35b92e13d13ac9f98b349fd8235afd12f608d3b2fd6a16bf29e536f9223cdfefc2b9683596bf64117263126fa362f6fdd03e81c640400520e04d9a54bb9cd53a82caf4c0b12ded7bb734c80944b7b0d97b4ca805138ef5520a3f903d8547d45f24bd1beb7148471cd9c63ec0af5607b1fea587fdf49d6667fc101f98626071c99b7757958a13a484527648ee6c6037668eb7f2281ff927c91e39fc5961c281f5acc18e688f606312fbde28d700a5c9f9a786e5a0fd9f4b1b04968c48f54b274f232bdf4cba224dfb58a9366a91bb6c4b5c817025e0a402fa9a9544290640a4fedcf67e81cbb82f68417d0c8a92231758377b3f3bc7cafe419b140e70ab4aa6b99f4a0331de143ee6a62180a0f1740e8d51d3b2dd7a2ed14425c6baeb9c9a0e1bff0f66471e93dc364398d25554d2c344dd3ef04a2269baf0554f96ec7aa0e40f6bd78231fb37b7a7d23754c40288ed41cc6d36d4efdce7b325573f47125a8fca5fe3d3bfe48bb732bb5ba06b8ead9808b6a2d4c6e398e12501a45a7a627393223f4ddb98eb6f08b15d36be3b510ce52278109dabf0758a984603fc55b101eaf6c60f61ac611c10f6a3a39b92908053de857b51b519f9dac5867152aa840c9536f81a884a51b097e31a1fb76f59c6bd1ba374564ed91412a63badfa7db0f3fc1e6741914ab81551a47e42a8462edbe572de510ea06d61c0c292b99ef19ac9b57355df339703a694fe10365b1b24613343978316b8e177c22b9a0a4093a5f8984cd90e12607b0bbe1d322efb8aedb519d629407e26a59a2fecec9435eec25cb6106f71548e96af6f1f5572c4f54e1b4a3a837b54983b5409d86cd1f4e6985b8a37576c5d388b879cf55e427c305404a87ffeba3728c1501e1eacdc45a2a12b8d72802a965d758d69a244c0f2fddb1795e4f24fbe60c1301dde86e22df6f28c9f257647fab539653b883e3b63805d9770c31f32cdf48c951ef719b0c5895edfd2f6b5e8821704c6c129e9b11623993d187e3166b46084875abd671bc3c76cffa3e6e1708df64484f2cb73fbbe9cf91e570338b2dcf6882e594a4974d67655d78c24a1bc972be205e041add713bef0767f84e6faf172e098fa99034400d7984c71e645e99cf3b18b1c611c497f0d012e015c0126ede419c53bc387bf8472def46986ed2c748cde0914f566bb160345a2a0e076aaf4656a3869fc5f53e2d9f86edc19b1aaa9ec61bfe7d9682ebc16249f5498f00f82cdce9701fb8c3bd77e2d9c43b76d61a1b96442a560aac92d9662b467cf8ba958bbf8ececc6a9587bf337e69c106ccf5bd924bfcf336a8993c5a67f318ee6114ef9bf4509712798e4209518f881cf39c79b3868f4d4e3a1520ea13281b07fbc9fa5aa31c38487c2c3d44e379efd204737f41c6b0c5d4aec1b9751be41b686a4bfd6e78496c64bc9cd2043b837baebb649cd74b638e76b97b3068347db821b5f5941b3765ff38bf7e85e2879a27eb615ca5401a5edb3652c51cb0031849858166647e86f0a5f0d457408b5bbe02d6a4cdf306958ce46255459976d932e7e91f01d749afdfa71fd30eee0a77871e4ce52bf2c6ae8bb8f2ec45e3779a1ac49b7b6ef563f71a5b4fb071a23d439dcdb8666fb896f52fdf4135338b9f9274cfefd0174adb4dfd6d8e66ae522e993f322dcf97b814a5fdcb49222235ca1fb7adb5eaacd5e315db01d00ada1d6495bd1c6b64247bef85b020c86548e9ce5db0fe81f6a013ce43769523366d2560cffe39fd529a6bf8cab8bffaf97ef4313ffdf38ab4a90e2aab89bf0fb5c4f5cd74fb91b61503b5134cb6aedbffc35823c8933711e5438588513eb999f09e7e2876425633c56d2e977702c906d3b9cdaa7339228f5a2e1e8cd5b8b8c3aba09bd528740035b06757ea122542b390275123250a422805ecac3c7e8b1b8c7fd12cfa80c7c0f31e8864796b5ff86ad27547686af73013a14486ce523f61b7f61ebf884b843cbf8ce85b4de922976908332c563d43bbf76ec2e44fafd0f5ee49d7c44c9f8a9c88f4a541db0c9589cdb292d280e505567b82345dee2631ccfe83305ef411c9eb2f066054dcc112bd04b4e9354115a9e575c02e63c628c4c83b45c1b15a1cc8c5ae3bbd594199a8331f1a31da7cdf6fd4889b87dd6ec8e3fb5c7407d5947f21557acee7fa92ec9966f1078abcc8adeb7812fbdacab23f5bac51eae144836affa1b67e09315125dd7830dab4d3c9f083ccb77d06f62a3bec31de8d13eee995a63015f7d6c123639e39f23f9720f5def571fe75afbaa9c7ca9f0963c6c5508bebef785902cced83baf63ac1bb4e1138ce0bb194bad9aac21f3fa6c906f22ed1b877b929c6631621441f8319d0e41baef3e20732d55d390486d97e85438222c58a971f5d603f986d03b65edf280574461cddcf8bed8ffd1492d3f231d1b73683f33475ce9073aa00f293b02d38be6cc054c3091cb5fb642745170b7268de7a57187ac2b71d401481be7a13661beba8d07bd8bb602684163799ce5185a4b46bdd3354121c4eec7dd54bf762af0fa4e2cac4bfef0af98724a6fbedf6e88664f11e1242d83c72b350f630148e86f53e002637b316902f16af6bca8e0b54f10bf4ba9672d14f58c1f7bd36dc1d93d5df9820300a4e868a32e8ebdd19deac2ed5c85936337babd73e941cdcac19f458994aaede0f3e09112aacddfa41c18c689ff97b79ae7889486e76e4d65833654c1d84c0c5298da290f71f3660cec786313729fe7ffa814f07d8edfc8a1a65ef24fda3ef3c4e21d615b807ef3e353fadfb1e16837977b608f586422992566b53767a8f83f0caa97f742fc7a03906f3c0a0e7fd522d7e6c5af954e9b93c2ec4ff7be722dd5f5b2ba4c45c3e55ea24830cdb18e325735ed8c87a47456e0de21e2f92971d4c5e8f8837e01ef4ac5ed3562dcda977bcbaad2491e7fb8785390465bfbd5f6b6f9481409be8e8406c948cf6f27909ae2183e5d5b72f24837d2d7bc76c22a7ed57fddddd48bd866bca02afd60c47b732ede551932b49137d460654795f8b0726c86738d02f88f1e96811f7dc75856b50e50850af05ae595ac317650266e77d6415f8b2a9cb333438ad9cc92a6ce1cf00edaadc0803da71ae4567c053c9c72a5b61a6f4fadcee5ff753754ef64af0c72b419d722049ce7c855530f60763e1a2391dbd6f47fcac904678e15a7ccbab4957a647397a6c910ef97c6227798191cfb1095df8cbf3a30188f6172c5509edc5494e2083a776aa0ae2ff1de89630535f8831faaa11ead0310406c4f1b525f62061eb379c915ba89039603bf2a5b14ac692aeda2287ec71181d218928698ceb3aa09daee8dfe69af8fa4fc4a75347bcce44639a009a56896903d87cc487ac5308b523395393ab97df98397765c7fe94b92f35aac00ae75fea1ff6a32b3d6e9b3a7900a40b31e9384457d848a59bc9dfee14bfcce17412ffd5a2767c0020ce9378af134a9516ab19b31c72dcf0e80f4f3e6ee3995b4547b751eb2078bce9cdef26ff7a9e25d19f5c838c240fa4ccdcbbaf8d22fc6499649bf1b8497b1a9759c8c0706ea652924725237c5f6e7f15eb9de3b619b58abf9a034d59225e513bd718c0ec317a111c221f741517bd0a00239203d41ad715554908a343336d1e10d741167f23ca04be75f537387073c72c8dde42a85e4ac239340a8fd41bea9f8cc087346164561b3e22da8ceca939333a5ae6eea1ed4ac5d3952ccd1b7588ff8c6891a40c99737ec6b3027af8ce6f9aac61b30faefde6235e2ad60eeec1f0ecd433ec30d8c28dd03293268cea4aa7ba0d667698af2d82593b4d33dfacaa3fe876c8889de1439fbb56c204822bd628356e7ffe277cb9554e86a6b197765f865cea5739f045b4bccf170cdd08e94c6cd1b2484359807bec9d5bb48364b0df498ada3a3749ea4d8ab174f1f688ebeca28f57cfdfa36d53a52d95b022591c120142f8ee9e4b575ac298d3e51702a9262d8b92d090cc93533513f2f0c894ed0c9a6e5886ef15693cb21e329e0ff826a622ad0082b8e5c7e823cbe4e4f3768ca9f56f293f8ecad565bb5c10502d6f7d78ce2e46ffdddffa0a4abf8141e8e3fc836745c94941a8ccc6d25a31bec9f80c3b2fec4c7929aae1665b1d48c12e9918d2398886bab7b22f0c03ce8adab9cfb91176860a6feae2505b58fdbe1a0f920f1326369643ffea294fe926fe95dc04beb98b56f88a13182e971ad820761a7ce073e04b089b0d1824af38f0b42f93bbe46e882fa73bba97181fcd4d8fb7a43bbbe98a2fc55f381f5aad347d3af7427640813df118c198d02b846f3c896842807f6f3febdde7bfec920737e8acfdd472ae69abeac9338c427d1f54269de85069c9878a37b9a13fecbc3d2f619fa33517b9e3890c94fd18ff3738a4e891d26d3a3e21ec55e7983e1171e41dcc874ad56dab13c3ebd557e2b97714dcc17f30fd1f0b3f5abba63ea46f9e6497afd1b12bb2e707f59387a53569451749a8932ea603c853bc8a63cd3d64e0ce4673f0b030edd2f4f42927eb7e76573890f07679d37030116fdfbb7d384d41f769ee0a11e0a1e762455ea739cf7e77542944955a3489648bc4e7d24aabd26b2451461a42bd89c126a4afc99c5fa3af0fdfe7baf13c09a4f27fcffc320cbf8c3be31c96884c6134637f7d8e00076aa1445252c5a0a25cb5d2587a0db9b9676778190f080a95c4bf0579eaa48cc62da846751260dbe0c26abb7d0ed4e971a55e6f818320d0a71bf225e78e04283f1fa98e10060812b783f7710f4f8d50d95c744dbcc8267312978c7056fb1a3236d5b2c43ee0ce5ca933074fa0c65614f99681080084de9d6b3c7a4f030b3702176dce7af0ff98df7e08c939bbc1ecefbc292978976f3c06cb02eccf61061c696f3ba4576996cf9ec03d61c45c193dd473f0461e5e6984c750ff2b609795e643700cd6e1c11dc1a03e89724a74cd98cd5394ddbb47d1aa439ba1f95eff82ad2a72f43097621f2ac58d9fb196676f8e32f2e4c4add73713d35100811ea94d88686cb0187d8e4aa0b182c8b4808d5cb73acec09a72a85c06939a353f6dd68be5b57f96cee1d6dad98eb9837128b4c801dbc68db8a9e87c7994a5cb65ef7d1d5ba16c167698a44e0b18123d1af19c98412c9f412f51d9f1008622398f93c92e5a2e18caf893b36dd5aa2e114e217a0c12b080fa0b074f1f08b5c66dd635980a71f40f162c67919f7d9bf6a1cc1a763a527f7627679835b2a8ebcb6ea314febc04f5ff59dada24926a0e15fb1f702c59c6ccf1400037082fbb416d03bf12c085ac7038b1917c22301ffd7986eeba2fdaa72d451168445ad0fa706e717fe2da1a994033435ac397e72ddad610e7f981542ec92a8dfbbf50b5569d9249201efabab19b0824b6296340de7c22de78691d3f5be73d3c310b2560cacb24449701021051baf6c48c66b9c27e9a1acec93e6e7b92567d31fbe5a5845773702d78f289e1cb7edff4e3c0a22d9d18bc909c68d5afc9c6ce933f3bb326fbac47e2b9425b972b24c970885478fd9ef0cbea187e2672588879b6a993c308b8887e5c6ea3f58bc6f75e0408006b4274324f0aa84f2b42b313aac155cb606a10f76ecfbf8c0a2fa04d6c3a9f9effc65ef112eb562220549b5ef1ea18f5a816898776d4c47800f8ba32679dfc228c86078b23cb707a352b8d4ac23d682ccbc20ff675a7fd2e7328c6dbe287fb21bd735cc657af437e10047867f5f31f758fbc5e2250738c86b25ed1711a85b85e128ff0bcc3f74066480f08dd465eadaecfe8b79572ae7af53df8efa96b41a1f35e4dd85e4304ec23eb7b0d8cd65c5d0ef711912c47879dfb4d44f687d80a62c6494e3ca6f7e84865f951ca60a867d18a8a860bd3c060ebf74c86bac787e1d20ecf621c3dc032bd5ee61c315e2527dd209c075184d25e543f58c883ab431846dbbfe3fc6cc8bb94511c665e21999c4ee0590730e6f602705cc57d9059f984daa63c5878adf78f9c9976ffd67bb3da623d7c3791ebabd8913798f5de853b41b348406cef0b7ee18528c71d554a094ee939d867a0e1f03117870c9da1e0c0fa36bd1437d1f3500d03ba51432edd92955797d3b4c22ccaf3ff4f111209a5e2d3b88cdad13594a4afd0b74efa9b1e2aeb4f69e605b4c3c472246fc8054eaf1ed42cdd033ec53c75c81cb96b5f7122111c5c0e1edc65286a5f9a1b08ef24b498e8c98ed99b249102f0fdc4487c07f26c11dfca9e707937cdc21a13dc8c058f9474bb1df6b0635f4e9bec03f9716a36c3e87e001b236fa8020b7ba90339f01ffe714465cbbe243ba1707058887311da819c89425e38e581a3278b446f0a9bdce321f6ca1ba978bc05ac736b7090abda783c1656c6e87f164cb6eae5c7c7300cf64cdcca7d6ca966c993ee14234fcb4a5ab6e482c3be54581f3fa744e4a90ba00c14c157dde46cc802fddcad86177bf2412e3e785c45f3714181b5a057ee15bfa050ea04fbe3395c05e0afc4706d041527e7576faa06659d5acf97eae239ba645085f278ea97b90ceffcace12efb73a16fbbfa225bdabe22197cc311fbca8de75d5e9f3b93418f061d90ee84026ca47a5a2571aa30841d41ae56974c4c7c1ed72fc2d78a303bf0adb416f54b9f16da9293d7fd437fa227864e37f5f435978e63cf711b85d14ec6231a23fd38af77394ea4e55ca1b1ec6ec1b39bd0244976e86c6c391ea2da5c56c37b418b6a4d7ca2fe7e7c1157c5c14a5299534496ccf7536bd7b068248352a56645ecdf2d8c9cba52f52a82a5cc060608423d016b3cc0979c068c20e95770150dac90453beec52f4142ba25f16b557a2df3112867c54c9046947b5abdb5e0f5b427a36a17ed157e507f9642e55c7a72a27542e0dbcbd586693f9d972a529efed5f1c339097564c21a2ec7026bed436e1695e33df6640192f0697c507eb5aaf2ef89f3e1cf689e6394b377de547fa0a191a4aa4867db656a4999a2afaaba94e20d32d7004919f09cebd50f9fdc080d497af7f935622fdc5c50f7b7dd80104fc9f3740d2183d1bf32ce41dc7cd89253ad2d68fd27be91a244a8d33381afbb567de99992fe4c4e78dc81074719daba997015d3d603a1ea4eb7e91e9d53e2922930bb3035432e3f232d831ba0574031bffeda9ada30795291cc8fef5aee59c20cf6948e1aaddac9d3044ed57556a33e0c3bfc22dc52349ac62b2cff143155492310d44853d19c05e1d489727d0be83b30c58d548a5191c35a49372da4e3af7cd4f2c5bb7fece97ff04013900b44b714906f681ddc3e2485fbfdc4fc92752c818242928484734cb9d0e643b61c0c0acbe4c058ee8cee22c99ae180102efdf8d690403a084f5617a6235768caedbdfbf6299b283ca950592f411499b524d821c8ba62adeda926e02fd9888b99243c183fdc6184012be1b489b05ea958b98fcefdb90e709f219592b179519e528818ebe38739ce39a6beae5ed6d44b0b82e257eb3cb436ccf8f50b7d40ac880b4aa9aa34a73aeb66053a7c680e64af05b915805e2dbf24e82cc0915706dae13bdd4e7817d1b1f70d56f1551635f777201df058f6461c14aa8a3822f8fba3e33e606cd58737c79837a5c7550b8a1a375a6200ada6fd49678dd2ba928c344bacd594d49a10762753f1eb4b649d6249ff5432111436b42f6d50ed52ab3500ef09a368adf654b087e7cc0b616e57ac4fefd6bcec34c242354b773098f3861674d9b10d0cb38a001f375ddb38a4773f691649d8d1183acd54b7c7b2fcb00891367aeaa2cb4dfa356f9bbe42f4d2710109bd3bb23cdfe0e92089ceb002abb8b510f7a06c603882e3f6ed0b687a026ad771f1df0fe592cc17f94d59010aa68791804c059da9ec14bea6b5e7eb5861bd688b328a1e145b6b85e699fb99a729d962f6a2b3ac0362364b3411f435bf307ab19c3637d4b3c6fc26dbc38d23b91307d4956b25431dd480dfa3fe5ed1e6d2e264d61604e0b978121d4d19a89ea6addd05f40c3baf50bb21eda39151d97a56ec1fd79bb32ad00f156b685a2d1884751c6a9c34baef834c5ba293837e75d0d9c46b93022ae75cbdc1fd507dbe6d0591f96d66f1ca4bd1d403d84e499b6602e946904b54f3324ca2a4012f4c422276ec9cf4e571767b7acb02501984e0a2418a87367957bd463db2a489ff6e6542275ca2a180a12f60e882d64343348a02ed034ddbde32d936f58f788563d7155905b39cf3f1e54a4db9f71143618d5bfc418892112317bd4339902a08e751067448a58e2e48ee7de01f5bd96131ad1872b8da0595a1a685ba72d29bde7a352f38707a7116a4db666a149c67b787bf0a8d5bb3882c5c5e6d65be28ff751ac74b06fe05b179450b04e71a61882cdc4a7eaab11cb35c35f6588c495b5d12d8ec592f9f1aaf8bae703c869f9a1f9a537a4558054950eade894c851e2d1055c9381d39b9af400fe8bd55c42b14a1375e3b34612164dd2c265ff4d4c26a48138e299c328a3d2c51308f7c12f630975945eea5e9d1b60d3188491ddf48358a7c6bbba4184f68b0f29e6e410f8e4e2080423af59bbc0947ab37fe3927b7ae2c91350a424a22effc8387cb184fa71e6cb5f94e04e5619525bafe26df20e726dae880d1490d84f7b6eea4f0dab444a7423c717eb84059f5f778a6a548903dea14c9d60dd222bf3a76b0579b415ac67e7b8ee0a37a961a853e62ce44d47adeddad8be5deb66b9b4e48e580156f089c4784abf03cb7a5e64431825d0683a73e274e55e70f169d103f2d22c49a68409e65e0b647746082a0e53b79f75a7daf3437f11bb958d404ebf29a1f3a6193d34f65a4e6799d6a21aae27a4e1fd18b9eebb266fd5b7f175e9461f733ded43d0c8a93fac1b9cb4ff515a14212f2359b2359dfd1e5dafecbb57274209e4074156655d29eafe13d8c9abf639850a3b43f5119662a86cebd1e5f8f8ae89f4744b1d6f0cd64d4b05321941d84b853253d2feed184bb9af9ab05f877f99268090008a64953b04155a11418dec79036a75dc2557ffaa681b7d3b57d8b9256cf0801f7d665affc739d7feeeba0db42c7d2c579e84c505d2137892a712528e2dd5e5bbc1f83ad56216b283c5160f3a639f4dd750cdb6d281fbce6a30b594ad62a9bd07e72ecffdf5741080f025b51c5a97537fcbd14c3a26560b223832ef74704650bc315c89d4dec076f7d3d91fc5f6e581ff8aff6b33cfb0f1ff25e94c63d6a270df74c60e669385e331de42640663b964677fce95cb928b9971bdc762e34d951d6ec90a8289229172d8fa43ca5811494472c659438b0efeae8ec61afd79fe4f71855580184399fb8a4f23712f98a0f11cbec2340aa0ed15baa7806bea060a1d93449707cf5631918f76cae839910e73a32334b3df291e312bf18237fd752e01ed3c6e423cb2ab76eb5a6cb33b2d65cd2f69db6de9b4e3a2d20e6f84e67c0384f372c7905a53c857e7b4d73f54c526c89656d8bf4062b9b79eb40654d35eae250c2beb004a25a1ca38e922546182f4d05f20949e648668564dc4ba6b3a8876278332567b554da8fe719ab8beb8ecb452e277b69ce430c88eeea6e2f6e693e01f3eaecf8c0a226ac7b84501406bcba4db721f291397c82e8a6c9d38d6cb32b1916d005fc97bf3b8522f13ea02a2f418007963f536be80099e460e95c5939612f5d85428872092b55746eb83e55d4dc5eef9d597a4aae127fb732e44aac7562de2043dd0fe1ad9baa0dc101fac64bb8e3d3edd9f05687150a4cc83b2d4875a9905009f0c76fa146e705fae3b3200e3964399c7e2d4b4cc019bbe62a25179b200bb9d7fea01ea4780e473d2b124d217643d859ab344bfc9834804e2ed45698aac7a14369cfafc293e3a0342a7b0b63b874a5d3e428c36d7a0e10368ba086d99a1fcb10f9e30e038e58b1ad36222e76ffcd78fb556b57b9155f4985c9092af43a46176b5b7452b0714cfcc92724dd2f7d2a3b1f4b4c88596d08ba14330dd135461368fd9f531a09da99ccf9dab370fa185dc609b84bebeb5a8df2d8579a18516e9d7b69ba5a4ce97b75b8b3b256b403ecf2e0e3b3e91b7b07d861ef88179549d7a4d19302c17166991ce37b1231a534c7c5ff2ef606c63a735073f75ff6d82b9bcde3cdb504373c8fd35557e462fde0ac5eb7fe5ed56ba9f342e9ff365809d344aa3a287263d05449340a3915741ed5512807896f58c91dae96ad95acc2b2f95596291dbde244afc9cc7f4f16d12ce9a071e840ce75f7df20d4922e24e4cf17c1603b5480e8e163a60df75a5d576e883940cbf1c595b010977bbf3f4568341c72c699758563598d8888ab5de2f13daceff2eabdc2d358cbb9abbdcc7bdccde3c3bcf9e3fd834c6bad7ea708a24526a247b4a474d8beab21fc17692175a46c6d078cd6bafc03452967bf0a41206ef594fcbc39713caa31ca2d4f35b6a5fe062d00ba059efaff5e539cd6defadfc9db387e66a715c98dde9cea5186f3c318a88d68c4edbe535f2528458bd26fe9d6e72a6e0d7f007d767c43287915a64a347da56cabe9fac8cc62a5efad76694b1f718c23c4e74ffa86c3d5adac9c7bfadab25b2b4ca31dfc3ee9633d37d6ef9635442328d5339f0688417396e941cc542314c43b8b6e21f810921463b6832e60c1a1cfbb15b4ef0b09734fd3187d4a21059e40254fefbea8aaf8b6ad0f76cbc19b62795008b3589710b00ea63572f0ecbd780de44a94bc5cb9b170f68a4e3cd7fbd2ad0dcfc12ddd5ccec428c4f9a6834509386a98b03548f800423132e2df42b316084beec04533349b60c497d1af7ad20ca61c233e8004894fb3e47f20c3a87a28261bdf4e3092c58ed1bae9afd1a76ef0bd51e2926f0cdce4fca85db101324ec65cbe71867219195bbf9dbf32a2a79bd675d6e392714129a418ab72e4a30ddadc942c0037578a90383dd6a1e50e5807fd0a6d26296b6678d0a32dc2cbb4ebf643bd8f70007accf7117d1fa2d7735d50746749441148a4391975069a9b0c7f36de03c507fdf76725f22808b27b239eda5b4893ed3be9066e71511fd1a9f404806d99e10be31b0b2b55b37549cd40c5b3138be932587cfe5f7338f455a65bb7bcae1ba936c86e09163fa11d5df331c18716a4d99f4b4edeeb5257190de7c958948ee11af8f051d83f3a8b0da5dbbe47a56d266b25a3d96058a0cfb2ffe0a6ae39894de08855a9922e9f54243388244c12f16e94d446291fbf5d25f9d928aa004787fadfccc6a97405c8e2945909038cb0c5fac468faa61b052956bbb994839caac90fad05dd906185117067e15d110672cbac59a2741439637c51db4c59df53a3b64815551ae8609dcb70f890b3ef7e9ded49297117bdc17e47c8ce3f3cecfbcc9945950febf71a8b7be27602c245fa2287c0fdee92e5de1163101efc3573ec3ca98ae0de6d3a5d8b11c864ca399846004d63102afd1d2224a126e8b61c6184aee12a5eb42df19b1af4871cee81e570b5701c94bf2862ffd27bb05dcf325ca3bf8b7ca78b377c6bc502db47aa3d274cc9ecc12d4644e34eaaa43c447db2a02f3d7c5d0cfd35b40789f2fd6689544bf05d2d2074880cedcc8cf6e777cfb0e8927f617d0ea07c54cdc3a5e04dca761439d58604758f1b98982c8cfa61faf19437d7afdce43d2d75bfb56121a216589745852c8d317d1ee2b713fd0687f688a51009ff2efad3e030039103bc62891ab7f77c99481d37fc53903c0394fc6e5c5213dbea176d667ed4631a97775d05a41877589d3aa1e03695713a0b5feaffea3cb8b0c8498fa22963cdd9f046b5dbd781af257fb19b25122b08f270d410c5e8457d37c465695173cbd4da2d0363c2ee7ecf58e8f1d9544829eae16a703f38900a6223351d349a35e62dfd3a21b21a6775c9d08924a24a58c90ffbe559dc5fc0ee6dfb3f7cdf14c63a33d5c545c2874701d5ebac9c2e2bb6b45409d4ae624d426228f613768dac678f641c39e506d5ad96efab228329ed684df8abaea7ddebcfc01ee657c314522680e2b1a66fc72ce4e654eb422d34b4de671fde30ee6f1eb6c5613698e37e7e86b1f32ac1e29e9e767509a1edeb64fb01b8520f8941ce2e2c0d07f7c79a8b85b2b782f346fefef5021f5435c0eac18fd9aafdcb85c8c48bba86a8f926942eb80f769bfe80c1a8e0bc1041e6f0cbc85a3d85f0f57e40aed74a0de2fd1eec0c57658ef206b74a3465e0d41e3c8209eafc6967df8cfd8dfe46bb92d5ede9420055ff715d5fbbab8fa98ca5ff8dc0c80b387d44e2066412ba4e0f6ea82a13a29ae976ca5653f0c87709c12c3b963bb9042a25f4f5381990faa2976402e925ef9bf30a3b7a1769e2017d7635ed16aecc21570c4479cff7546d85abf7919d1ade7a2bb2ee0c4a08f9144f0f97738e8511a384cc55b15604d9d563cd5987795556e22551027203bedbeb2397d1f3fbfbbd3e6372a546d3abfd86c6542f18f747053226be9db776474b974f8d66d1b3f5859d09dccbc4ea0ca0eb8ef7e7fd75076afbc07c790822124d7b7c33f73a4415aada3e7c6f1b9c0d3f0186cc0ff4e76afd864e5ba2378f2478cea19a969d69b7ca06954cdd1e883f0cda3aa16f3d8d813a4c2d5c873ba42ec11d4ae88a2d13c96da753f87207cad4dc1c31bd351ec174337bd494c1ae83230dc6298eee6077a95234328a5af15f2716805f6ca961d6260f78b6ec904efdfe9b7d056e3f73388a239be226175d2395df53feea1cd103214457f3e5bb7c8e982fcbe823efe398ffcfbc6b9e09ae51b299f8a58ceac060a2a565dbd95bc0f2a5ac8aacf074f5bfb2e0ec53de62ada414d963bd384b84f1e15f9f41532243444fd66acdfe362f0e6860739b8ef105fb38e99f3896bdf5c3d5d0389e70cf53acf6ae7092fbdddd81cb8a0e8763d7c890452a4aa78086f11b11c3170178e4e3a315fb72833e4b8d2bb54d6d3aee79e8c7aa721493a08cd9af8bf056d4061908c4515d9c2ff97693b2d7cdb622f6f1bf80e4fb442e417211f563dbc46e87bc7d262b85ed4329f186e90a8c0031a5d38802de473252bd59837ceefa6476d6f82056e6f3baf1469dc172a47cd9e41069e373badacecd1d321d5fa4f3ec1242de72cf93ed2ba5e985e374905ec126ea5f55e3039b1804c3c24ebac21047f04c3c1b115746b90bdd524f5f1ce4adf25d7ac5df8228a5da33ee8d3cad7e1411df8d643c4fdeb76a6001adbea5cb85d2700a01a1408021f86bcdd2c165d52471ceaabc45c3c8c6458afb67219fdaa6285fde37c075d2c75243561b00ab5aff77e98334b5734d5e550a912d0c9dc9604acccb7c806785eb0ec938e9439003603bede902f7332d4ccdc32071fe5c94786aca3648a775fe71adab80c03ca0a5b5911143023c2dd52ef3f9f7ec86f84ca85305c9f8e4daf0538a0851abd9dcf7a0f4141e30ea6c76f90409091768b6851bf3990c4bcde19f1eab3cc2b5352efc7833f2c42f9da049746fe520b3cc2ba1f1b264c5e65f90b875dd90827094122ac9f5a94cc5b621a1ba54db2f428c9fdcc1a4d0b2d0200c258d25db5b726ea13bd00dca225d7fb2cdbc62488f8b7fe1b4127c71dbf6c03882b07c6f29d48d33ceff9a9cc483d68e44bdf949eb1ae5075ae058f2a2a85653aebadff91ab23a42207ffc281f6c73b2e7d4a2999cbdd5c4421e6223b21a268c3d9fad1b5aad774f16a99370126bb576cb6dd611cc08c945942e303028e4f9e07fe355e6496c4ee9588c5691b57d04ea56c81295aed229cfff6a0749a3830bba2920578da0162c1ace6b32b844bec1822679425185b6fa85eb9fe2486ed67b0b9f848de98cd94dd8e83c3e0d15f2c70fabe67299d3938a19388d4d2288a15bfd5650d1a7f2673d464929bd0386fd7b0819ccdacf680c393fb9680f1d490d445ccc5ae53c89745dd6f013f1b7aa6b6d9edebb301a72094b32835aa52e21267f54f58cb5f8523986a3dd0abd4451e98632819551dac434cfa983ff8cf7495cc0394b62e5d272f4b19038d6173b21cace0f75133725f87d92f678e75e2f4e036d5d0170aecae066b90162724ea5c583b78d3c403eb2b097243b3e17b989f7d3743528da0ef4dd53203f118b16407a2e00fcddfcbdfcb778ecef8f88f95d8b68ba5520db478c5205f2d66a0571d3de0b25fa897aed9114dd4c25e0a7c89b3dc30bfeee3eacaf71caad8c6a765cd5a6fb5f1c1ec21ac55ec4d8358ed373d668c7aa3ebce8be8a177243aa3da957c0960439000a303144faf097dad9e3177169bd65f5004ca12058d21fc4321db4c743d0a632fff38f46b2685bd3359d9b35f1d03f25b1f5d1009e434942b484b8d3352dbf89be8f305073f8219532407ae04792a96afd003b8689238c405b4493ef5e8ef7d3475b1dc382ae8cb015fb5d6b3475498e1c9f90797a52b79788f91c935688f5feaa0438b9a15e63e256738a203a535478ec97ff304fb7e8211af16a726a56ef17bc0850e0fd1f2900a84117c16be7750620c22b876db9e98bc2ae31bd61569cc7f53c8952b0ccc032e172fa47565249861d8e7e439bc79b454268f7f7c28ab52be84712a5cf8421312705e3136c9761d6a77dc5cd84d07463408916d987180630ac242ba7c72b1b6de571e381e81ee26feaa3204712cb0b83ca2f90d36dca0bc9f5a47b8bbee72a64c21cec425b35a7da862b4162d431b50493adae397d8f27b289eab9754ca35f8688e515f6e98afe4dd0d2f794e37e2f2cdd0a7821f4f85d910deda0a6af8f4e651a9bbcd1ddb2ef7f786a137d85b45ffaa680f0747dbca7a263f936c0f49e171ded83696542a614e58e598f92cdd71dd208fe2cd87f34d24c052e64dc3f067a2930d68dbe314102e3d91712813771113af3a7354f5bdfef411a00d96f80c4f818be400d7ae9c340b73fb4bbc2ea109e4d6b51b8cd9fe0580d5cb544335f150fd02d63988ceb51d4142b4f4456f0c4dfae26078b1aa27b3b3130eadb8c22fe744ee052d7cb3c7255ba95a06aaa24a2b70bf088feb0579cbc35c50f2f349bc67328b31664824a939982a96fb2181943e8878dc5008a0d4fa84b69e6500ae8774a26142c95981f84ebb1b61a73896945429efa660ff76049b264c3084d600560a2bb8e05181c59fad3819414361b44c9e04aa746faf8dc5e46e31160ee25a995134990855b30b90b722d5f6065e701f3759016f375bcc108e94314add5bae26db9590c85cab14eb46300ed1a4a3eb96ea7aaa62f7e26c7e72762cf05e05b5203d74ede52d615e7563e2a42ee5af4a2e57a7f8572889a1e3b1a3bee4ddd6691b78b2b422bd151e7359758c19fda9a058bd221d4658664936c714f1bc196ee91aa977282c698d2b7f89b59d582c6bd1a94f976c468b8706c831907517325595145304805cb10cfa62c3b49560015810bba40510c0d503b9dae69b8c9c3980237b2e44937586d7f83c1dc0afb174437b3b9aa91619ae221e7c0e434eaecec1ddd6192ce6e7b4d033c8baa11beda37cb4fd2a822d38cab80c7ae89fd3b77514ecf856980c6bba50077c268b93aed6817a94ce7ddba0f9f457213b4804ec6bfb2ff9501831a907a457982deb1ae09638481ee29afb4864ce3a3ad8c03218be15d50cb7d97c7e66af6a64cce3e797e9388538738867f0991cdc8de0919894d477494a8c1f0879f0a1497847e4ea8ac67e37867dbe9ece219ead32b80c8e3eaee6ad96eb5a9cd0e0d61fff1d1a86189bbadd9e3e73d0c0fb79e20c1c2c541101a209ea59a0f477c3ff3b53ff0b8bc1e98992ad45c0e8fc47d67e8ebd35c29c274c8da977032cda653f9a4807eb3ef0a42fb92188ff1fbe6ba1e279d25f3fad98bea61d3686dd93d7a7fd4a7671b89fd97754c1066d3a590b56044ec6940ff8093e22fad6bd9c265cd3c9d0c35e7cc3ec1636f21a8bb859241b57b94f3a028b87da8b3bdacdb70368bb3aeebf6c832262c5aa833576105ed2169c871a6239bd260d2f85c4f42e43e202ed2e4bc5a71a3dc5804351d1d81583b410d06783521f72d0de02a1ba1f4fe01633b7c9e3178b60a895a97c80cc8be96714bf97f0ccda3b785408b40e0e36859c9c69b531939f510a01bced87929be3382ff949834292608fce1242d2ff6687de8bc0d5dfa260aab4178d31ad5ae2aab0b26468fdf8422087bbc6370cd10583d2c9101bd2cdf3184fbe0a455d9f988a175fd20e5da1a1075eecff5af5b7e89fb079a8d3f3988be15b4dbc206a7de94092155591f4d0cbb2711334eaca65bc19772ef27534b0f95d5a60bb22eeb39bc36a81dcba79c6ac2aa6dae24551edcb82905742d71d593b0b447127c2d63b3a2bf1ef9733d22d61a216b55f4ed6a899a8b468c5f162aff9deda7a02faf4f159e307bbdf4f488898b7ca0147c42d2dd88b4ed2e5f4b0bfcfd2236aa5ba8a8a13a8e943615c9fd032e04e8193feb5e1d16e324c838bd724007cef32a95622456b4a75df83ebb90e6f52aed4f05a2fb1dce9717e1d465146202fd795cf79863607f3948bdff83690323b62ee458a6f4c2ac5f559c85c45d3cce6167869da4d41bc2dff99f8ad3b10fd033aff30732914ca16ed3de7da6f3445cb011d028b91fd3d7d8bc7a342257e366c1cd07a6fdb640110a976c557ff009314d949a3f312e27cd9756daf81006b4272201020dd5c99d54c352578a51657be84b96f30aeb1e6ee7262e3df4590143a4256f72d53b393d388280dcfb26df8fadbd61a2b5b4b9941b5aeccae950b687475e9a1ade216ec77d5fc2376d19f349c24f262af3c8330d94d1ff4bbff330fbca27a08acca70a5f584f94fd07eb1223fd3981dd785b571e31ccaeebff8ad14abefdc05c85f3ad35f19b9849d62e2c66487da4c87e35607603caa03a57dae5e206222d90b414ae90e52f096b4a01d4122172b7c841621f3dd3fe09fb1ae1077459934fe94af97960c4b017c1b750017817a74aa083eb37019994e27abd2a6450c353110bf771957194694628d5b597d3530ff93909a686c406bed3a35baf494024ffce31b546616a4c0504b141dc44ea0c8190931b0e071cfb98c4733244a537afb1fa153e5b213d5a191457fa7a72b912845bfd0834c7cf10e13044249c4a286d3ea48191e3f2711e808e18e4dc4e1b44706672a0b8bca70e72b32137d82c07b8b5619171a8a4b06c837f1a48f92d731adcd9cfb8d98c1a759a6e7815a8e8fcc03b526ee55ba33e0ed77280521cc53e1c5bc49aaa8e9963f73d3c858dfa41a4092f358cbafd6bb94063733b921f03b7688cedd4d2b4e51dfbc7cf4e103e772beb9ecf1bfc4f363232df495c7c32878130798c1a124ca2e11bee336535318c2711121a6f815bc9f38a3b0464e832f8d13a43fbe34fc3768aa6424e493543eeeafb9cf0815e04aca7dfdc0fa59295be405e23c24ff154d6bc1f9752296f84143b7c483fb76fae23443fa670069bdee20a0cb8934a6773f4f8bc2e5092e626fd523cc8e41fd4f1b228aad3de6106aa1265c3a31444a1452a0ae8c042d2be8eaa3a3681c54d6e5f0a1394a4d5443c440e0a9b7b88e09433dfe9c14b5109c2f2019e3be0c8ca66559d2267d6dc1389d20033bc05be40ba82463d9ab62454e18cad776e00bbc8a7e34cf5ffee966e9c0b85b6e5c7d48a8f02846d7a44800cac5ae416c7a14c845fc0da032c575e3a0b805821e6e5b55715c909fa9cd685d8da6d3941906fab22824c16c933457be8cd72ff3926505a8a51ff400dedfe4f24c5ccd473eb966c8647a8f5ea4d773c64be41db861d4238dfcbbdcf8b92e2cbacebe2b79149adc3b5a9d70c9127be7c941e5e751cdb10723312f90dcf5fecfcf56d81ef9ef4e63ff1e7f6145061575f8312d500308049a01c367e7bfb604f14e2936fd582869d8987047f75960f184d0e226854a8c11f51eb4cff486c54590622458bc32d7026dac7479a01523b677c77b935df2d6a2c979bee2f46fd2d9587e39479dae874f92732bc885b9b60088e51a9f15908d67b4188b8f1c61491bd9bf32fe7bd082c274129b214b08ff1b50805a4ad366f79ec96eecc90512f5c7f2088ee5868b6811f4ef83c17bc25d08bbd9ec43111d057ddae714f1028571c0cfe054b8c780334c876f2b00c4eb7d7415fad03e5a1f48a2cc1d5ea86fe61937ce764e4679a0958e3a3d02ab9b52c5336d6b3c445f5dfbf85071d498b70073903d544fb7bed66d5c596360addd33383481b1d48f2e9b0b9000a099fb007e3b8eea164f6128b03e75dd17572f9bbb01e83a3ad3a4137d6cd0f71c42113e53c6e7c78ecdfd18dae9e89083ac9241aa2ca96a625246a7e6665beb62286f45f04ee7af5e9e4e83ccb5cbd1ac83aefce07a624ca26f73d287d7e3f51748e682bc07fbc2d6fd8d33cf95afac4dd365773f6c1d8fb76876f111329cc30677811d5579b59ff00b1aae75c2215900deecdb6e6a05484690d6c47e80dd2aacc89ecae8272c3586408022fef164cb0a7da4bc97bbce99c8ea3c357bae3712c678c2e765865a65f659c5ba906e82dd1dd34754370012412c9cb21f430f94d4e134d3049f88b9ca1e6cf26ad1d20d007d57dce3e155124bd90e9d5eca0b0a823b91d6bbe7a2fb0b86127519bb39a5565c6f80090d3ffcadd77c4ebc303fed2de7351852e6c4fae0d06ce66bb0905c5e3232a2f556b55b29f0009d45a48edea2447c36e83dc1f49a2cd13434b66652fa7f460594a420ef9536fc89c7c6f1aeaaa8a4f8d1eaa840a0d33e750a47a9126cd4029d295eddcdc298df5b946bd3704f6ed57f9a70d9a1611af615b9883b5834472d8c2fe47e324703ee85db2a68955599740cad8942fbe7bc73bee67bdd27d670503c0bfd13c5ca966de61c0086ae18a6af37292aa45e131445246f4ce391052c1076e67cb73dcfcd376be09a5c8e069f45d2ed5829421971229d20ee214b12ef5813579790aa8ced23494b6d5a460d0d2ef7b67c105e5b87a67420839dd57f3e4d607c042f414889901c41de995308ab01eac407a3828e78c542ae133e5d348a5ac3385e71a47dbf3a9178f9b4321cb16e47c083bff20a5196030bee1cf7296236f491de4da7a0b745bfa09b4ec92be663dc63da5e1b01b199dce816d12f76bfccd0f7d2d821f04f82dc1e2dee1530a47ac36d6c098a7772240a3adee7adec30f3a88c8dadac1487f9683987f0acf5eb2b31f699793d5dd762451ed69a7f8d7776d030efb97c60726f2835d595e8a6e9d5e5237d875eede2e46f0ec168c4d82a4e1459fcae9f4d9980228149c6cf5e6dbb90ba23d943b954c4a0e5d53f15364e255bcbab7eed0f87b6981c219d687448555f1e22c7b1ed6cff43e4605f2774e824dc0762a3cc6f50f3066be26d02f9c9bc71d17916863216db03c0e917ff1a12a8eec20d05b223cd5421914eda510b41f293def42ce6338330c99d0f1daeaa699a581833e48dfe70ef182e9c93291050f98b99666d4f8863e38fdecf41bf7104561dac21ff43dbbcc6ff9dfa16aba8201b4f7a309d53dc8948dfaec13afd82bd055f0c4bbc3303d935699b6f7d0e5383e23a323f3df229166036b23ead5976a4757f054a00e964ad0212eaff600bc2a270e0b110834cfaa3fb961a7cd20e9526d04df745da142a409b0aa77902683fbcda18ecddecbd3662271ab8ca5f8e3fe29394d8fc73ddc431ac8319a4485bd455c9019691ccf2d572511df7bb11809af5b9b1c7bf5178481e291aeb525f117b7bb8db0cdfe1f1914ee23fe0b99119926dc1154833c5751548616fd003755a84b93d30d2007cdb2f94e55a57fc3c63acc8b4404e5c09b9b37b4c8a2da4a2f7c42409e4de70f9f6b0761faccc7aaeef1c898263c75cd71157f76fc1667210f77a5eab0aacd3a914a4bae8819ee9696659f05680d6109e0b623c0689b7fa41b817e36ce4a0c0a51ff826418bc48f19c76f5a702a139cfe077533daaa473c48e05145c411bd4a9c2c4dc12e9e2192935268a75af5bbe5cddda4defc1d25ea735c1c6a256bd45e67a130229deb97cf568cc91fa6e12174f384757c292791593f0e06a53de82ca8a4324d648fbfac19a909ef241024f70e3c633cd9b64b9e93737703638af7ae0ef9d42927feb0e9ebbdd851b4d73a42bc04f21a5556427cbc892179fa9218dab4c3bef29a67dbdca28d4456f768b13169f1065e0bb2206839b202bc1f891a8ddf982d2207c226efe13cbf27dbe5a7f560d3ac3bee7120e0fe211092ac1e1fdc7330d7f3c8b71f85a056eb88611b331069a70d9b9430dc65c6c2cc81f4df64ca7112b04bc85a404b6f43df0fb07ad6fa5384d59931acd6be7474a36c0c039417d585f50ff9b18fc5cf20b880382221ede50dc1200d3746cfa80d926913117de0888df63c839d18936dd80b82dc3337646f11ecfb9e0066d9a3f5a115c2981fbaf00175380b6f3aa63be980bdc60c2c915df88fa0103eae256f8e2ff6e546dd26b6923192ac74a4fc28423b3126bf657fdc8821fdf9f6d3c866f9dcd9c4453990a8d583aedebc389f304432faeb4bb3197b7e9309fea3e99aedb47b59643b03058bebb3662a6f150c754f04437053f2e1df28da4680bf3121d8ab12f792886dfff7288cc0a0189cf2fd37744cf4b76ef59f2b45de4ac8395ed064222a605da1f392dad0aa0d3e6441e70f79fee9f98f605af95674a2ccb4705f0735d464d357b91fc4c33203b8675eb11e3d1eff99ec80278de7f5b270984c148526b0cbc247765d63d6ec6ef8aab2d488393a012c82226dc2f71114b64605d5a00ae12f3b891dac6894b567e3a471ed6726353c6193f87949d3d101562c74feb33ceee2a074e6c83f01565ed7fdff000215c2badd928803d301922b16f2024deb57954d3a9505e3864f58a0268f2bdf8535a9c571221d5b96534483b5d888f16e371e1433b8ca5828ce1a52ea625e3249f7359c31413b478ac562a76df99c4d92eeaecdbdf7d1a68426498230f17fb96f2bc2b2af2187e7bea48ef740cc647bd9d367410ba7906c8152c2e391ebdce690a616b4103108de4f90fc8cee23cc69d4aca7ef075075e2ec86e10127157e25bfc06155e613d670c24f7b7b1c165b105e0859399bd4e3a2cd11bf4644aef7f87ae88b5b66d021397ac6a6391ece7a0e1245619efc4936358dbde6b690f6861b45df9a52949a17cc745a2ef3d0c43bd5e6922bda8bdc3fee244f2072bcb1f5c6119fc51835c11205b991b3de6acf7b4551a0b37756311b037a0c1adf0aa1fb04e446a823dd2e3688cc4e406e8be3ffeb234f8088073a1c481345c51f980dcdc03174ae6151a387a76d6b6b057145767e3c87710222d4735067bb77a0a43871d861d1554a766c050f954e0cdd8e853376a7eec05e6d750942fa5c140b08dedee36b64e7d662ed67069b8ffaab7548f616c0d0c43533a6438d81344a4991bea409c966a0e00ad9e92caec8d6433db9d8d2ac4ad6a22236b36d7dc95742f506535a64303751b633ffe10d338548fdfd7f51905e9cb98e38ffc144c1e285fb3e58ee09a60c6f291228ae9c10ddfd128725e8ac4839ac8d049a07460a752966cb030e04a4e8005c04b6dd4fd73ee0d6326a78d0cb1565dc27931af4a80a316cb79522757421e693abc57f346f79db3a06bb9237a1ffe6c9796a4d6f36f951dc2a549ad99d3bcdf8fe782c74be2e7abd43ed583c057e07fafe9259674773ad666180a313a8045ea1238ac4032a95af2557b7eba236b30a270dbe76d9c64cdae7196c07f3cc4dc805aa32bea122421f761c38cb9fef1addbc34fbe186e34f376c3b528e3f17f8cf9c24e98b77899e75297f81f663d5affda951219029f45d69edd5d80fd81ae64eae843adeee698673d7b447b26e38597fb57542f331c5b850a64d83a73676c8c81313560f04fa5a4c6f7b008f084b9400e7f366e66826e4030a471d5e4f44dfde244525c2f9daf230ad55007dccbdaa67505687c00a4529da30aa96fe5cb05e3988b2c53762c61a77246f8a5d7f6fe7a39e7d164860926aec2a9f108cd635bd908b5abd5bc4c363bac5e858c1a55490aaca553bac86c9593f5b602867f8971822d3712a72dc268971195b815adce19621fc58fc6633aee24d40cb8df83db5c2f89c611bcad47aa2739479dbb6d5c8b5bf050c8156517019890a9821d114d0a9563deef572708af3ec5358278b38b4228df53cbf1de59d452392f69fd08a875c7e93ebaf918248840c202821ee1fe8b3a465fef9df28b2651bf64986b320630f5b46a8b0b6c32cecdacb79be7fbeacaa2410a206662ecc0c731b2832b6858369d9128df8563b89b39b1405bc09d98373c426cfad20cee99ef4aa89554dae017391e03f7f886b557d4d4ed110f6ae7ed42d9a3f994cab7c7223d777084f3b76c95fdcc4eaeca1850d580f29ef981c74b2dc24fb3f808a342b5aa75bee8ec489c52e61321d4d94624ed55e7c76b53bf9fe2511624f622c07733d69e92829ed3f347ceb2fbe45398ffca46482160846727a97b210c2deb50abf0630e5945a3eb0cc3cd4364bd02daa31eb7f6862daaef5d658d9e5b60114b2b0f798857f37af983dd1ba58c118bce43e1c3b424dbf2979a049e3caf420eda516c9ff2bdd9edb6fe62b27b1735dda72defe8ab0ebde435ff2c6ab2dca508dd571a99d746ce98b58201bdacec66b88e453cefe669dbdeb2b68c04388f5fb766f75139e3671032d71bbef4e41d13e721502d6ed724e6128d8362500bf4749b3cde056c6b12f0c9d4d2e76d12dbbc76ef0ce031d03fb747569e19b6ee765f0e59f081d0e3035c04b9f3022ce8768212fd206c878ba5a5d134e412e3a48e7c886c5ac0ae65a6b90a64a466045f7b6dd344d166c7a3932ad46055f5ae7799fa3358745e9a3181a8bf0acb86f530ce004e308d337618939b0ea8e31f72b4c9d458b3735bc927399390b244241e5be5b6602249ebf8cf00fb2bed9016322d22b06e48ee0a004e21301bb86bddeca40b624befa8e42c102621cca5dd040ab582aba9962ce5f6515b53bf4beed8f511b5a0e360fa262706e1bf425987af1ea7c474a74e4c1f4afd87b41feef484196de3d74eb0ff510043dd025728976f3e60e7347ad8323556c5078a86fb98a44cc99a6586118ac4d8395cce2443c01007c04c25afcf4fcfdf3ecb1b1d1bab255ff565fd0e27e40b30c18dde9e6f0ead0cae05e016812fae08a3b3afe7cfc978940beb60b88b0ce6419878491786e4df05912ebd0570dd85de52837181ebc765bde58fe6ee49c0605add7225a2f64aea72d75bcf7ad316f3c34c5e38a6156396c8a22e80246255dff9952a561c408ea28e7116511c154df40eb9da4bb24a4a516c25da331b4b651131273ec21e7a2d4999556895405578907b62a18a625a741fa196b238676c4724d4e164732cce189db6fb78cd4ae5b9957c359e944967c65522dfc92953a35bb903712763f8f93fc9a9e139357bccce9907c5c0daa06a0abd0e2f18016dbe246b116c28f6b5cd7005b3072379f24452a634c84cb656ae35d2107b80cc660433ebf4cafc6705af8504b474ff66103cd03aed97bae97c53ff582bf8e44ea2adde025e6894a93319e48989afc93b86d6a78ef1b1272d85ccc63a64a34bffb265d200ef85327433194bc0394698206deabd3cae3857a80b61caeb0cb912185ecd655d5245f692ebd0f12b304b9aa87182ffc2b772427c49aeadd0543f35a824fac79fad31f3a434f5f55141d12362ad5cb47f444939beab22505e277b9fd82ff4f9cd6ab5d9d926501a6f9974cacc176ba116a9cc92867581f3ed147893d78b3999f170a12f6b263fd5d70ace91469056fb67aeacedf4c563b27f2a871d1cfa377a7baba918d47334afdb690328c262f8288393c0004cd5b346e529b998f347d512902fe5ae09e334f145c5363258d1de553fb181fb86be30200f8965438b02ebb4866551eb35c359a3d55311a9059dccd463008e760ab5efca75fca8e3e795c598255c4e1eb7ee52db46e0424529c039528a362af45218d7a5d915e07b7d60a4b764d21ff86571de5ac756f8fb918dced624c9b9f0c27123e9d2ad310f59093d76c1936d216431547ef0d76a8b302fea9951e94783f20ae4fceb6300760e73381f6d7ac463f58c1f7ba05e5017be0f21a46676008e22757d1f407e7a42dcf9b22de0c9146225ee3aee4c9768d5e912b8415ff8b97eb50c255cd8d60eb5b747bb679c9b30e13bebb8baa800f2c9df9f2b4595ee669fcf3d68d14052efc032edd9c827c752a041a93e38b7ce35943a6aa8197022a2f68011a747109093206e1a843c8a0595c117dc87b1a652f84ab29591a5f3382ab81a5593175c23367a8947a728d80f7ac2e3eddf320cdb09691a49fefc58716245927fb66052a65894435825c8931f6404d28da9a85a19bac9800539e41a5acebd1353ea8f74693b9abcca5255ef861ce57024da4daf1a5eb57f1e402220499a1f261bdf352c5466708ccd76043a0e4d6726727b6a4dcbd1fd148146a3ed8e13f802529a2db4c924199fad4ece0163096b82ea2a6263cdee2a908e326b0ab02ca4036af012900a062989e88b0ab42c42766f359912f32416b769311e58ff6afa2046720f090c985d4b465450dac649520d849d0e82f7dbaf5b157ad9b49cf4386ceb4ff6d07e94c1d69339b862b54f749bf618e2dd214ba36d2102669b6f9fc474914ff82f48f88d7159f24dd758a748ebf50802c9c724dd49350c7b279116209beae43ea6c5b860c6d19992546886532f68c171fadcb8d0d1c0d70379396ff2c194884175b7ab9d4865a07b8a29967c9a5269c42b122aeff76ee79c86c09784ee91c653f6cf06ec0869a1f0369c4e91886bcaa4577375365cad091ac0f615447904ba174167d8b79933ad4e70aaecc036993450481f3fa0f8daca0281ff9945ce106505228dbbae033a56e5bf27711e0c5fb01876f24faeddef98105317a6bdbd068ee860f35643ca26347b0ca94524727b59e3353f91e7feaf48b100f06e855c340d5f576aeb2f001d3cc7547ffb2c3d38e1aa37ed1c520fbbdc8a778c239c7404c15fd7e953eb6b9941f7395f18f8a42fe6fb549aa9fd6d0b67ef7ac6fea5854ab0af61605e38bca32f2b5a7f0b2ccd870577af96337a22b69d6c26e8df6455de3c6aacc25197cc410ef77a3735cfdde647531fd6445de9fd43404003ab4410e9aa817915cbd2f95eb4e5836a62ceaba1d2dbf130a7bf500bd9dd5bf05cd4f985ab37bd6bd87186991af148453c79f1e693ebf78d9dbee4db156acc1f9245ad980ba314135e460fa89f0b251cf40417e9f674e4cff9fa6b3aa44167a63aeeedfa21318c685fe20f4933986471e2078b488bfdfa9f861a34d22071163059c907641a21b60fba1d77ee48f27f6ee7ffaa40f11f0e7045456eafea3d3bc2f5f3bfabc40711863f924b97a7e3255a1acb3b594a08ce4df2aa9bbe7a9ae077e02fd54a2249be4cde206089a82e16d5bc2f729ee4f9666118f8091dfeb5bda17b64103b86a48822b96a18dd3a06cce775548ba1d4c86f31c3e65f4cb66b08f4871ae598bda83a08a0583d0d0e95f82a9046f5c3b85f280682ac399b32d017acd802a2a8613745095c94e1fc9977cd945575078fee3b08060488d554cea9d6d7e86b3121260ab602a40e5625573c17b5aa354b1a19ee9ce50c3bd089fff1052986cd69deb02c7ee25d792ede5de9276aba3e54c2f59db844e389f183ea584ffe2842ee5c4a7d081905cb55f1cf779158da2c29b22282f012a3bd08375ebf278c1c089fa180302037acc132ede353b0afcf003c01a96b6b950f22d940d6bd814f4d009a6ea84d27f21458dce625dd0505439df267d23900e8998b164a5f1d50346f32cbe702309d08c7555e9e85e96250814cbfcc1062a41352cc71da425ed81930470d093008f5c0e3bf0d371641e2529f38c92b84702a14623eb5f12f32d59e560dda8f8059bcfcb05fedf5f720b3f2b3f3249bf9805067833ff1f72dff685f00f78a3aac7a111a7c4722b8c0b8b35525ef9c6d14c41eff98b0b8d60761e00eae9b297f6b186a1d82487813dcaddbc4f3060ab6b00196b138756d4d05a644176f32d01b76b1a9ddff7af652c89976a284f33bad7412ae7f78f99cd2b850bea8491b9a22721a882c6ab883c1c9862efdaed771bcf463a44dc5a76c946097c762ef58246371fa473513219bf4a977e689b2b5622ec4769ae6e172166ad9e42e01ea0f9e53b54cbd8b2f9910095ddf640e51f5d5c84a6284656e4e75c86a57e9b6ae0a69db93e1a3a54245e503f327ce8679e5cbd03d4f675d81b4a10bc343b52072384aa181dc45b877132cc90f2def8fd333363b29fbe75aed229ea753ac8cf9292a2abf783472345130fe5a40c057e00074400c8c382999c6991312ddd0e7fae49665fd2c35c35a668f7f52e82545da99a12827a96bfa039e1d1e77629bcf9284d8adf7c0ff34a29b69f3c42e955c80c195a710540f56e1af39298bed31c059ef6c79cdf9060ceb5fb7e00646bc3557ac90e965af3030bcf578dc0b83685b720675044041900bb8fdba46ffa53cb5fd9cb7160a09f1946aa4ed17c2684beb3c033ae15f203afce7fc74e1fc54283786a8916b4cbe06174920ac00176698b40866a3182c3f7482a9e62c7e3f278989da0b8be188583a8e05db4e1d8ef84319ad49c0dac45f0045a37aee5fa7f1ddb6b4fa756705e1eb2593df7182b68df18a34c342bf133e77638a8909b43c0892a0f69704aa0dc189bb210a360f65b47e4d03f000960bb7c43ca1368f16810590696a364e6c8f611b8d320bc2b949df7709247874c7e11ca685d856d826bdc3acb035185070b923b937245ebdeb31c3a12ea4953b45e32732af8c01ff2bbca5369b89a26bef5e3a1306d04cd6ee899370262a25990ac785509d192c63c9a7c86caf5962e3a22162e88e12f33c69ef5f91562fdff32ca0a339adbe5628c3f57c047f234e5f5ca47490a359f626eae69d60f3879c527cd1f0ff0b8de6b4d29970a62111686c2e4859738e914e4d86067a72a22274e7b3a483055d5ac5328bed48707f0043fa2436e490a10b0f6d8427e40ded2993813a67ba83b0f145124e0007716b39f4dd8db7caf7143897c819716aab82f1eb18732e2e03cafc17874f41752e8edcaa4dd11ef24f354df4a2364edf7b4b593b469da50ee7b65f4c08abb5091f20557d66dac20451e23586c662a076e04a906fc94587c8e1b40008cf872c1c337457fca90fcf664a5d612bffa9c17ef051612e0347a4aa786836885d4d230c485236c27adbe95a9d674e50a098271af68173147a599a178a635689f4e74bf6b4219984a0c4f3643fb1eb40fd47b966f09e284a58349cb4c4fb1df51b1de7e5bfe3dc25c71661bf3a972703f07a2a5011320336eb3dedef2c71effb1ef0640226fea9e2011bf0052a3249d355caede2407cbe6726ccf22b98641d618c16fd159ad588ff41e0bd0ec3b4ec138de18f55983882521ff5fcd5349ebecfb77c31ee3f387f49df93fb48491abd24ffca8d26e62edc0f8fef28b20024c48237da6c832d980054176ac6de1625451c934cf89c2e9669305503ffaf50a04b6867562f89f315bb9d8916e44517ad71d2355476b227475a92f309aead4a18682de73c7b040f5b0badbad465e14f3e9f02587478edbabe3751107f06aa6bf2da4c18c273ca774421c4920074d454074d8d7070affa86f09925f4209707034d7750a3d75f55135d1f04dd3ec42ccd17cf0a77d917e55fe9b3f60f218dadb4a429f2f31083324028bfb5ca357c19faee99f169ba2ca4cb41e2f272e43905f7caddaeb6977e674e3c44f56fd582f92c5a018cc75413588460a53f5454600d972cbdaa60302c92032dc82e423082aa48a384da18edd1f3f98cb1348ebeabfe33687f7ba74e2532174629afa1e31ba8480f024964a7e345ccd1fe202046f246c034c78a083a687fb615260d4c101239baac6bceb773bb4755af02ccaae324f30598c5474142cd6d01c76f55e5e2661e3f72d7a7a40a085d1d9e7d40f3f50efa1e6d9d4cd5033e018d4cbdb377acb4f60dad0461bff9cab3646186f16662473cfa3a41f18bbce0e2e25a29caec8a40ce6ebfb04522c094469d29bdf59045f577dd5ac582efafa93bfd32650796a189223f2f55a8e9fa771aec86d0e7a4334ae1df6e607bd09b0435ce3c8a13a7e156f6720429a4b6a18532af2bbef6f708d48a6a2894a4c03c8824bb7194dab86285718c777f212d53e45af27e79d3834a084bbf5e380297e2e5531b97cfd2464b19ee27f0ddec79b1d45df9fee1746816ab56727562c2f114878abc48c1dc30495342715363a2c6ce346dba73331e67a4f359ea126333ab478bfa5ed359813b9acc8daca25a08c4a9548b60f159af65569074e22654ee6a9f17f736df75628ea4dbcdace912352bba2d86caaad309ee58ec1eeb40f1f914c62ae66ceafa68361fc3035c7d5685318d4fa809940a40b0d358a9e836b4a654cf66349d93189ba3ca6dc5398a1bfa1572139be5d44f58fba9fbb7901b704a1a2d83ad59b4788c29b9b8a7d5f2470d9836e915590be3a748cba5d8ef84e4ce19b45880a64b680980278e0f557ea26e7ff3cede135eaf2daf13f311e522033c48b0b9617b3843f545e5529df4564b6313e94550f55ea8df6fbc5515a5a5e103620988b546c4ac53774d68947ed855b3a06b561197bdf0906a5cef8f38f491db6677bb6167fd5e1bfacec456d5ae5d2af9df74ecc2c934f2a67859f0f8b25a5917c749f3b2e19ac01705e54a704431b1f2c759baf6c5e230cda4bfd9151a0a667c2e2309f158835cfa5f9748d780ebefe5de1e26e5092be5ae33ed66131c5dcc61b1b48d60ffecf5335d64f728d716392e4633a8f6f4f151ba7730524adcb4d6d595a2232fc06cb73650955f95a4b337afc1f875c3b01d7587933511657594f8aae8ac4e0440afcddbba1b4de4de3b7b4d041c4c9bc3e90951da3af6e40fa1f6f911f04d76176340de35db09ee12fe85700cfae901732a6a74c040729a481edd9b79f35093dd3f5760e9176320b369738790a4cc2af6a92ef35b17a62fe7205ab03b38ad5b02f40364950be4fdb526a5827b57388378098af4746b8a9ee4f1bd1ced39fe42790359532ae3ad99841227567971e72aeccf9c42263519b8c15bf9057013a6b233e14c79f1a65b20397ca37d9341c670ac906cca0d2a0da02ddc6e57d839f9876bcde78545cfee4d2d3ad273dd3bfb5df053bb1e0d15fe4efcf3504060ff7b91bd42820ddb87d7f3d872463a31671b2c0dabb7f59935db0c6d0f95b46cd0fc1514fce80899e3c978003360d7fb15d3ca881a61a99e0807fbc0c037eaa15c024d61dd125201833755332bf0d3193c7b5bfcc387b7ea1ca28f2147acdc071ef9e32949942b296ff3979a2ecdbac3f30bb6c679814333d5e40fd79bd6cb3ef0c77adfac22b8412bbc61174d349f8a039de48ea60991a339c216cf7fdcbac3a9f7250b4e4a81b03e2668b1a24d9664772da496b2448dfd3a701573436fee44e965ee47a2eff1b7b9a77555369939c99ebbeadcd08a444a09dccece42ed7406898f510dbc54daaf7653e7e3815824de01cf5c105e71691a6083da0650df9b566adbbe499622eecd19292e8f7d4279b31f76d4513b85d156eaa5251f86e375128bf21acd4865477e11bd518a48f15d900762e1c6ce4bf7a01f446d113e0c5b3a971e3e836f81df4b19626907c981794f1f3a45fc936b79433debc6332017669668dc777e4ee8195901ec2486ddce7acba87a7818665098b23ce018ef8ba5f76a264c04d27cb73768bc994372f98a915bd83024deed3abc9ce9d59fc5cfcc2f3df7ec9c3c2080e173f6b21c12473cf35f8eafa77edd6dee8a79fc6ba9ebe978a7761ee5a20329a4d7b5eb18c5a8c85ade05e8943ce4165d1147e3dea2d7a1fa3d6136fe59123e7008c9ae369233d0822e0a6a32de83a4da8f925731c7885c26832895f64102071add02068706fd8dadb6852ffbef31755b826a25ee7e2e562fec600852b0366ed86687f5b063565820b87b3f1ed76e2f7b611d62771c62978cf53bf68b2a2618c759abc56b1ecf22a42bbfe4feb3bc9df812d7b17ec242c2784780418ef0cc0a690528e506ad989505aef8acb114a09c34ea4bcc8b9ab7a772eab1913a57f6eb1fdda5c3e2a52567967ccda482771484b638935e7a5b5205bd8b5cafe5f2662cb390df42f52d1ea6ac81394e709d1e79a66e934afa1f8ca1e1d1b1f0d891316dd1b4df2248b7038b1e716e9eadac663f54cba12e0f8d563928c1ed46ce06c10b89fb1a1c7a0f1e3accf4c9e81f230476b19d371290483b572230335979c36008cffc68303cbe8b9715e9b4fce298e5a5d414df0ea9bf8339224cd23dfd424e6afb8e1d1ad3b38ff05fa97de4c3527e2b76a0b9ce5b3d2362be2d2bcf73449ddb4aafc4a69a4776c6926c7fa3c7a4a3d076e141c4f7505d48527d9e4d68d578765bfa42397d86ab789db1280aa224c4de572a2b11a78462e97e273efc5b2c8ba4b2b45ca57ed1dce4f0bbb23641ace28cbd8f802ce5635da2a42130aa425396803863e51433cc3f5501209ca1412cffeff488657a02d2a9d36b3ef5a605a28761b9f319ad469b583ec75f38a5754ed7ff69201a32a0b0304a3f120674020990156475e738f472d95e4297e64763e828d52eb4242138d62151cee777a2882b0bdb4f6120338f7575cdf138c1b0c83de0017a46c3149654869b8cc49baf5c4a3f54f172e229fce1c0615adad8161013dcc6275e06f5580f65ea307dc95f37fe3f8aa610af9a369278ae85104c2bde8f31f6337737e772a2737135dac80a45c27d922f44f814c9c9ca74815ccef68af119843f036d1fac988d815acc8a89a74ecc912f4324a757547b11de2770e39e0df42313fa6d6322f26bed22b124f9f2c2e9a6af87495817f4fce532d1b93359a403d218fa46a3c3fa56f255a73f53aea0d0bd9a7825b75120da2895c86b782c83d8d5dcf83276d470cc2b7df36df0d9955e6c42a20f55e31307da24bc75ae3f77879c9283b9bc6afb533e6a74186561171ac0d97eeb59bf2bf7d081d4f68eed0f1fc58f8f2423f3f0fb72af27f6cdadcb2054f9ce5a3c6a958ffb51015943433102ddcedaafc1ae6d387222be3f8d15c5881d1d82b20f7f4d51eebd55d91f857612956ddc13a22eba1eaa604011ae658cbe1b252f74c72a6e54d7f2740f3faa64d4ab2e454e84db0137b146c3ab9f5ffba981d61c4e46aecdeebea10e46d9db6cf763f70fcad670595e24792c89be35e7a3fb58dae30ce0ec1fc27f6bb6faf8beeb21522249787e157313df06742d139b866db667e1e2a9351c9cc609f9cb13ec6fb6ee7c3184e870c50d246715d5932263e361ee1ae387899165b3493df8f25840ef1cfc1f1c6583864436e0aafc4664a576ae09bbe90c207fe9062a1add9180524252a8e2db0288af06ca87d6d2320cb198539fc1815eb5ba5085140a189e0646cbac963c679d731b0fd50abb694f46418bee475515b6087d2e78bae3b5fc99f55d6659154b6bdbccba13d2d51d094915ce7e47a952e1aa8f292e01e2c040a751246300f63d722b9a428336491bc1afb3f0e8157a6dc21cf69677fe0c2a37dbee18a9a9f5a5102dba80e8c588b94ca54e8673776223ce3d2c5c290516135e75f2b2e3a1772c72ddea9f4a9799b172de12f14c258b2f8e0a54589cc1f84d686a4643de145d121e942c4f73af58c770646b590306772820abec642d66f37fbc563fd60c4e8ce96a794bba7375795a772f046d0cf6ed98b7d1ecb7bee7a7b5f5401ee80489ef52024db1941d372e782b9195704020488317695a12344a785e602c18de00524d62667c39f987bdac72246fc2c659e69b641993b9aff8fc6f95817bcd005d769c53698901bf8ef100b8704d934d7959903b2df7ec5b77474c568e225ba81e85b54fb3c06f285090df9d0f2958dba442d60cd360616ea2c575bdf2a96f656adf83184040ea7eafef6a1c7622fbb241bb89dd21ae9eaa6ff4fcb9cc000e360a591897e04df842d5d21bfe0df80dff9d55fe21400e982f56ceeba86d1fe83fec683f70b5fdc715ab4e40dfb1501c4268d5b72def8f55b0d4777e29de797b1da2e97cf6b728526660bec27332d60c3235789147ffffd029ebfb141a58425986e4698f0a33b39639e8c72aeed61f9ba3fecd55a3d517202ba018f015c97b44fe090dddbd4823ab1a7a700a0fd46c34029f2149a8ebfb458e7c1b0bfc56dc0f4292fb6bd46987955c11414958da2ec14f5671689a4e0a46310ccea4ffd37f655ca0634896deac2d5ded7aff1b886425cf4af75ef221f951d8627249834d6ae2a779097aba42a67e650f5cd3a2f3c3814b0142746e19452de391cf6f8781da2f870768eb9706a26219c0730a7223b57f65e7dcf42c00f01fe9344efbc5626c04475861e432ed1053250a07c1cd951c326fce88d7ee338f12a0e82435ac960b37711f7ffa2f8e1ca7fe3d85f9efb9f554266904a1f724aaadaccd940e45fab54dd332c3982fd66dba176c0c761175bdf50bcf64c8ddd868961a0936becd1a0e329e0a0881978343b6deeefd8d4da0acce2ffefd1d056992224545540a1fbabdf54f46f1e859a9d8f63adda2719e88c2de0456dbf66a85db1dea2e5bd24d50a8d08b286c14dc311b47029ae08dab6d9f083c1ac81ee2ed847af9f552a9e586edc29f16c08fb855b26c0c47fd01e8032fc2b0f3e7d2daf7490776d06c93e8bdbb843a1a2f6bbb2655be204b74598bf4221f2b6cdf46590d9f8464769f384f85f2adbf63261a210671bef6d2dafb425c3dc019778c76cb2c40b357a7531e1d26953fbbc2fed7d22e20f4e74bd404174b6b716de64e4605660f36a1a220ba3c1b0df9302e4db41529707cbee81676e147af806ff3e033c860436190ad986f3f923c23e740c3a8e357f80d412180f5e2c7db17c3b8bf19e2d5e550719125cbcded60bb57b89f5af06bc068ba31398974b91d23c1b823c71c11a2e02f1bf58b0c43c527a6f6ae692dee766cbf97eb0392fc568e0555896eee76e35e9b9df54e7bdf44e0d281db6e7cbaf74ee4970513fde748e35357c92c19fa4315496ae2ecd9c09db469844e0c1f7f22ade6b70e2105c18e92f06bc12a2ea74a00fd5d60dd7118939a124c20b15f4101700f420c7e944668712ba18c1b371a7a5051532a31b9cedf2dc0cb98f2dfd83ec034c8f57fff2854361fee4b199f05af8e0eac4df5a4fcf84bb218009df36eed81d19c398d368c7afe98a87e22d2aece7d47ce76112971a07526edfedd71059d121d5551436889e725b20debb9f06dc513d5a24df3532f47e05a288f2a70efc143eb4d662bd5ad95fce5bc166b6332d5234015e2982cee3f617c4a7cc26c546bcb612506af9277482254394f3510fc33947f9928ccf998c19c32fb73f388af49a53d3fe73e3fde36936f6e421f7263fa3833a186a1e1cbb922c184a67d9551051e7843bddd35c885af91252775d90f62ae2c286f8be05a6f631f53f7bbdddde482989b1d81a39492c7c78f7573a93e54cc282b0f95efccf4a5fc7bbd71d0cac3afe4f673fafc910df7b8c02f607e42488d952a0a96d1db6a6a60311460dfe558f5efc8065ab884e458b130ba54c501728221ab467167f712e27a50bb0431cccc11bdc90bfed826fdddb63b443a7574402f9bb7cab09bc1316744d687240a73a035c572ccbfd1a4bf500ba2c0ba46282ce6575ba810ee90c11ebe65640327a3e34ebb83daf07c1d714fa6086e28ffc0d500f329faca67eff42d01c3e16b9676bb14d080541a6e285e470176ef9d2070748db7b4efb6491d892dcd5a57e80add388d902f3ab0ad4bd5ba06d8f4d8978494cb6f17ea8c158be8c4f1b893cf001a7f07361bd12a0385f15b157e7391ced72512a76fa8e1ab621d97c2101d078a463ac4631419384ec534c6ce9c6e4fdf5cdaf8a35c84aa18fb93ebbfb8019d0acc65c6dbad50f71370f2e0d8ca4f018699d4de8185be5c5064adbcc1a9389bb3ec6286a9bd897051df8934d084cfd4ce27a628da11dbf98fe221163e0292b613395f819edf4dbad8de70bc68ab6d1473339ecf5e2e0e9b4a6933edb68537bba71b0bdfc1f1527ffa2f0e0022027a0b4a00681ca18db84d8f26b0dcf619bdd8ee4ea0a781993fd60105647c02b2ac323263f9a600e4f3529af6c46e8746c12f2961384409bb7f9d14898aa885c64e275d46d1f5676b2f14d5ec9fdeb6bc1d43913973431e0429cd5e59fa1e47b0f22ef72586560d60dc5ee0cfe27b96cca72e938b6d9c4963ef700b04a7b5fcc2bc49b994a4c9e7832ab96499e51996ed80c53e6507eae08a293c728fe98e00b63b1513b6dd1be99ad4e14cf9c834c439f7f9f3a57a58b871e5e90cf33a6d0327d10140c7858657eefcccbed258b645edf5301380413fe3d40cdb3b9cbed37e15aa9cc9946271d2cc19b09fbabe844bed05634dfd4ca1eeb099a49deb9cbd256547f0aefec92fa706f2eeaf7c0445a73dde2c0a788b0d6ecada7fc1b62df6e15f963da77b10d31b6fa9fb539666fb238984313c20bf998828c8ce48c3f25be32e998fbc95476c3f63dd7befbc7673f29efd6fe678a4f17095672620506298e5649febc8694c57a03cd14450530e9accee8d6e87d968b458214191548e811618730e203728266902deaa0007f71033ee118a5d99ef709a7c9fe3fb2d214f420334ba73c699b41bd02cbf8eb3f5fe94a43eb79358386f1d5c2679fda3a2fd5a5d64cdb7f695ae108b90ee703bd1575402d63b060c89ca9c0c916b6ef61dfe610022427e308af085f17711d898c2cc0837da1f9e1d885438ddff187f2f93daf01973ea76b3f91a95e7d374217131439626705d8d6a3250db2d5398409979e0ff3cbf0835d3f98058749766d7e93ea7a31e6281055657c83171b48dd1bc389be7345178df10b1664f4c3fd286433b8e29f49edbf152193682ce0f0fa155ab1e2758da658d2ee18f9b7345edfb992ea94266b73f97cb7177a5bd909879bfa421b9a0ee97516f5a1ef27badf3b7c95307a85e62553b88aa1597442d1146ca66e801ff854736d581c059c37af4b1e29828838bfa7835f8e4db57331bdfc28a2cff9f337c88ab54d02f10e236aeb4c020e07fd9fd2b0b0b92bd1cd8560c8db3a1c4a9fb12422aa355ff30276e7beb59c10648888d157a99fc0c042b1e7b413e67c421826bb70d7d32baf79c344f701486fdd2eef09291b8be01cb5d742a9eb090e1abd810a0e5fc1b52b78e9cc1ecfb2d00338811d83db3478f3d11a28ad7152851cdb06dd0c2e4dbdde0f33f2ca000a947ca8cfc9fe6d05b8b5a2fb0e193d8a96441ae52724088cfa7b374bbd65c81a1fc112f656d03829224668eefbf3e0684242d7273cd4b5c698c70f630334e42f0f95c8e225bc705d7a8640e7284a6289fba3beee89fec0faea82abec42a9a9a235f4095ad7c461ee99bb7d790f115cfd2aceda5ad069077b9588f42217a2f13fef28b44a3ceb6f2dd1dd7be64d15b1469e7a44323f6978236863fb6f21d53e9f755fc5e47b7aed19aa161964daa72eba597374e8e4231e9e746942d69cfbee7b90411050017831f5bf3fb656e83bac03bd613db9438b23e23cbe803bc9062d1a32ab093d6e8265f318fbb112fb9f609d3213ed0c4c5039b529cc3cda3491b2947448203f9722eee7f4715fbbae181b38aa9b4a80d31d71b722b79b6dc73f079eb912f1a3a07d8be7c3b8a897fc169f5706701b54363aa1495af21a1a8d7aa630b5ae9f990533c15b41d8d56b04f65ff0b0b05819dbfdce26154fcc54b58d697d5fbe8fe9542080f87ca59edc6cad616d3b3445f398c56018eb899ce8fd080a3abd1ce65076c6287a92eb9acfadc4b36b47b441997ea84256cbc67a441ff47daa5e30ae94715debaa07deb5dcdd02dfa8fd1b86b1a60ace55aa0783eb38388f70c6ab95eddc19de94ab8328180d593aab8a398448beed3a650739fbc39eabf12e01f9d63f25307185483b7259d53697e795a5ab095bcca5656d13b07acc873545365214bd4bcabf8c34dc25f6c515ac88ea2e5024a4e0ac50bf24efceaea2f714c328edf763d44fc6fc782157ee7379aa80704109c4d77431f07b4eb538f6d50e6d8d7f8ed36e77e83a7dfe726c5c68fea5e5a36e5e24296d8ea95c54eb3756dee97b493f48ad60bffc20872fbc429de6f013597609d6e20911e7ce7c26f907068fde1dd698c89bb3673c5f758915a79c2d6b014adebb4a8371989e59d6513370a19c49fcd7fd4c1504cb9dfdc58621d642f0b975124d808cbe5c306513a2101bf7ec886c8ab4f5cc9231904eb92444d496f22a9331e9a97e211876c52242cc425193717a4f95f73f0668af92ad4cde55b8871b32159de2328ec6e0699878db110cc5a77cd25836a69c126e907b3b8b6f64410fc49b6b8e5d812618524a2c4d805e72bd95780c1ceac13de7f2ebcdab06a628219c0c06ae04652877973482e6dbf67e602783d67cc84b9b0c215774b9c7d7b5fb5ff8591ce55d357a80db2479fae0c365a0956679790207c4c717ab7f5e6c21d5360fe05d8019a0471f955ce297337e2e009f8093cc5ae5397bf905186d38d894ea50532ffd753ecc645d74eab669f23c51a87c89feaf89f78bcec138664aeb36c72e3db697876e6e28301f5a410d40d83022d79d41a497ee4ed6d439c2d9e6029ce63aa671aae844d47d5ae7fb18fb6172cfa2b4246751a6218f566deb8784262a67fe35e069ca34daaa4f448bbd9047224965b96b105fd57c9c8240201c687204a9527961be5e417ca3fc8f054f951201f8053d972ab877cce09b852f8148908ee302b284a90ec544831bdb2d937463570dfed84f5061a44bc37f09e02669f662b65b14c18b57bb5c80a1cfc56739b8114e40afa7abe981b68c5ec4079656de77bb348881f7ac25474c172910e81af8b27b7633c95e4509b6ebd0695277625c9c0848c428d63839a7a1a24eef95f10216dfb9a6eacae71a3ad769ab1cf8b96babd31edb8a3f1e1278927c8d8413b6cf9caddac227c7b9680c858a3f5a5d509ac9b9b4042378ff61a58d36fefc43c8fa5cab5203595291bcca7b05b10d0383b8d66549d5d32d0819e207e1d7f952f59f01a369e93d9bd34b9f4945278ef9af6528e5742151300594c1daa04527bf2d4ea0d2dc801015a08e59fdaa9e491fc23a667528dd46b00666210b8624071badb1718d57ea918833a8d5b196e3fbb634c4da97c41ee5f77542bc0b302382425ee8e56b5eb05feb7b0451ec03ab46796e1b8f000a1b6294e46457430be1e781b2d790412f982e6577fe3a5399cf2ffa4d2193df51a43977f29a27a358d6c04849cfe06ed16fdd8d83d58ed20e277e644371173e38f978b368936a43af79991c5199561966f27304e3ba6bb8553b8effa1b57dbe16e47793cf44cc634f7879e19b0a5bfccedc01d3f4deb1541f74be415b9ada03b2d57ecb7525d39b2a4d6dfae34a8ee6db66a23cd32bdc75962d700799e1554a9da78013bc5185b0734b8ba9b542861b7f7e4992ac6b7e0783e4575369e7e6919d494e921e7130d8b1f2ec8a07ea2ad1630712c61762a326e7a09e8f97f20b908d7ed6c418e1a34e38bc65abb52ca0d8a4e1b5a68c347d5c45693f042c73dff6af71561e561c1386139e0f2878197df904eb5f88bb616a467c0c79a6f16525c233a58371fe33a876e9433c574456925ac3163ad2291abbe55ab59e896f894d30cd6307064c0ce1309b7df40c4dfab056f78af74942bda06675f1a4d331c49cc925dec207d8e93d04f6d82805fc3ae491f7d421eb1bea9a420e9e7329d488795d9528c72c24034371f8ff2d87857c5e0e55181ce56114f829920b475559813dc76e89d23adfa9bc6bd400c4ffe7b5f5b8f048b7b684457d06ef83ae51fc25236baf0c505b4145c7e98ec9e1fdc398271dc69457114b7fa81c80663c7ed7aa49c853d637e7a6e81640f08f5380f49ec7b62d26cd06abd44cc6d7aef54983a3fe9b5f2ce064f68570052f59dba87563df9fb4ae40c4423daabe9ed1e386bed285d1b8d70adf91d48e14b941a7fdb33aa0bc94ad66b77b5ad5fbfca0e157f5c0f1d02a01192dabca216a154cd8fc85a23f8bff08f8a614bdfeaae2e3ffee35692b04a8b9b6d580f92b6bada16a9876e56abcd3263d9ba0a579309855ffc9be5088312acaf069f97f65ae389d8c1eea49e3086a0461abedf6b661646a08d6514ea66ecc958bbadd3289e7385ae7c6341cb3c659b5be69e6309b2868e22205619c90ea9c26afeb584e1a30efb12b59d8b9ea39e26fe2850ab5689fa80c29a44e54391afb603d5c913a790eec744fc39ec0adf7eb0839f9ab8d44395a365d403675aece5370859da6d280c41cb3b121c197f905b775860838748fba1ab2a1a6d0b6480293d623706f1dec693772d6fa17b05f7136cbd5302f28910486954ad3a44409157dc403238452aee507524bca33a967921b402b108e47da64fc58d42b21f6ec6e50c959f153adab94b68f6594b92be22382dbd8cd7991723f60231821f3b6eac0af58de73c04c4e05c2a73d8b163ab1f77941f47a6e239b2d2b790881e9a31337683e508d47391210f0d01805426b8432933521a99a1b6c3ca2bdd66b62c5f2f9a57641567fe71bd5bf4f9cb56a5de8315335e8f07077889161325a0430ee9d8823a22b116b6b6f8765c05e89432c77a5ffc0308133c147a55d41cae32c7c14a3faaae981688ab9dac9c5b3a8639c4e6f73e9e368d7aa9d3b2cccb7f8a1b8106da397b177c5c31784cf956d6ef5bb7299d8905a32ecbe5121a44fbf146306f70e1c7978f5cf1b5d9a656f7096782b9c86b90422a1de48a7a7b03475a8311bc4f80cd0ef63b8b2717199f05d0a38a62f0fe84bf79c2e1939220bffb0275e3a04f2648f655cbd46b0b2a2e545fa37db8ec20229396f2d35fa610c783a63548c782c0ff974bf787b291b6d2319b9a7721b00b4d72576259e94585affef75dc49adb812bea8846bab50b2e3a859fb8ab2e51396ecfe86dc320c16ee3c419702c17b23bb7ef5388e69addded62e3bb92dba8bc4e3b0492f7cf3b20853042512653e4346ab7d05d30db1f252933f70476b9c3a592fd2cee4a868737eb057a718009f2ef978518cd289b935bce44af52f7f31e1b4c1b59da74280a49fec352061803cf8b32d5ae9666ac219710e9bb563c80126b7856733721f2fa6a4e55b857c4eb98976ce94b29278da1279a8564fca6e2453028dd2e076a5e722037adebe29a8d9ad095ee291b938101a29bbb695e4bf5dd72b80b646c6229c8252716728a0145693b74fccc22e863e2dd001450d3f8d8ec37cb47bde45030d7740ed3b14aa277b519468429913a222cd7326ba73b4f6c44e42095f73f65e827195540f458f9d435d5651fbfa85cf187e9c087c35804a2252aeeeb0a48a9ac52a49ea5176cf197115bf5a47df1ed7a54b3261ecf620e5d4cc47382d664d144d1ca7829ed2ac12a7399336d3d6c00ba5406955b00b0b3b985feb9cc380581711068308277a86b3b26b23a70e80b6aa8bedbdcad9012b7688d25b06830e1b8f6e6b7dc4830303c0f9b66467a91321b1b3e9018e631538519a8e6212bcff2f35d112589815f50ac2810499cdded9b680094d789fc1bad61ab3218067d99784339c875aa03f4d930c20a787ea16afd1edc83502365f178b0a30bd2cbfdeedce74ed99c6ec18fb375d2ad14527ba87cd902f435b4bc4867b51a7b9a8c7f96e541d65da5c45db65a6266f1b8fa3f2e6b6742b1c66c3c4170391d00f5d3f125800e60f22f12840e2d7cd5302aed67c67497d16e888808b0b14a1cdddcbebd040ca53f00c0f7b31401c64b665f43497363e1e80d619f78b596ad07fe4104e278d6c056878ae91af3ff4a79709c4db9695ea3de096db11652c8e08310cf236fcfa6a91ef07f8949214bc56a1152786a55a2e5dcfdd89798862a67f9bde7f9c431869ae20a21963d9e725195496f84bb36fb25e09e57591090f1be24508465372c9d09f13f42a6a8c55849407fc9cedb451778711ea32bb4ff8071e3ddd0b8df0c7c82076eb212ad7eee46aee9b4aaedd92b392c7ae52b387197f3a70d2243fe81b7b478f3bd750dfb8fa33ff2be2fea15802f39ef53119981f9be4550251d28ea6ab1a99db1aa20caad8b8fa49577bf6dbe19a720ad5730def619c0eab2dbed39b9ed37585d81de9327cfcc6f4a8fc6cea81e62039d445ea1d77abe9af35f22f034f06cc3a4c167db027dbfd106ac18767e2803452580288769e4f0e14522e2c38f52902bd46280ff98c4adde6d9eed8c6415ee02d27f5bd770ec30d85faac166add3b671382477cd4c784bea28cec4a92db257e20c06f53d3920c4ecee5c04a1d8e7613090651f08028a8d8d4a35c3ce9f6a48f8a88cd5af07ec190634a485fa93e57b1ae9cd5a32dce955af096b2f0fb4425fd4c0821736a702354daae178bb99d6b6cd4560e687e1119d7ce8baa348e8fc0eb4b369c168fe143706c4abe90cce7a1b893202d360dbfa1952a3f23fc7db70b10f0d4050ce28b171d78f5458db74d1582c7657babe7211b99257d1c2d3403b3d2a7decdc9999aa38101aad01722ab909a8dc6f8570cdea915c229dcc136bde1f5630293191fadae072b94353a068d41e7cadb6b09f09a5a9d6ad97bea98228fab19302b9392a99ff2c1b2ffec358855e6a40b17c9fd7d0b8369f960dc83a10a3640358196465f7423b20770ebd2df7ba1066e83160f751ad26e88618cb567613d5769d94340f9f986905865e6d57b850721c11306f650a2c00f5f97a6014177fd5f6a4f92bb40b1660f7f4b57882f9df4e66d514ef8af50b1430824b5cac5ec515de99e0ca7af08b88c4974760c50d2e58c9c25fb4cb81eb1e629678d8cd92c6eda8689ec2553d69084eb7b22d59aef71105970729fa276dc387d69c954793bc163bf6b450c7e3b1b18fe9ad82a6cd826b0c7afb19314903e5e577e4942da1f1e09e8d2ae674b5cbe90100838a645e6576f69a9303c4b0d8de0c15d780ed803c3e13a2668f5f094b4d4c8caecbaa400bf957047a1a11523992923395281b3624284f3b43ea8e116f3f593a2482829698f2c251cd9419fd56e0b778cfdf720e1a2917bbb9726c0171aa2e6e242890b76be84593d8d8b0a14e23817ae1ae4a6a84327a731e04b21fc1fb30d6712c9e3b4d3afee692d64dbbcb8ca135fcd4c4c60346b01744ca51e288da28eff16a6bf2f870669ab17a531d5b7bb1bdee948971cb908291a42f7b85f690d18fb513489ced1a294e5919bd37c996ef53e9d88dbe0a3aa3c8cfeb70ae16e3602ad3f5bbd0ed9e3390673860869582587085fccd88b068257290d8f4aa2b2835f137e57728b4cede1c6291a43f04c886f5bf86aa94981c51d11e8df9d5db4fe9cfe4e38ae0f6126ab32db009cf04e242e23f3cc00e51a2d59e2ae39bb54b4d5b25cae600d2d92ba2d62a7561c1b6fe9db13d2eeb9912176a50037e45cf63fdbe4896707b990b817701fbf2bd86de1ac737608e4b50a0ce22c33d95b83cf210613c94ebaad90d071eb63d904d9e661a3aa05c7520a1db4b674ae48cb877244ef994586d851ab013fa0e2c35ad8b9b3ec585d59f27ffa8cbb39db6f98fe3da355c34080145cf314bc3a103e1aca92da0672befd1261eda8be5c6cc7d8692d179ac64c42f609a28d67475b0a2337af54558d29d71398477b10df95dcd6bb1da94459b7475aa6490483778625cb67d8eba2fe11d8eb1da74406ef76c391a92f167dcf8543ef5f623a98f556605b5e88aa997e2b4aa4b8e9007a0409033acd315e94cca4ecb86f2b99f0c9082c8ea1c3214a6314e6db096a7f480d2620ba983c877a832df18f8f1a741b4f3b4616d77173a968de4342ed5f07d2a9774d2918ea3c4687e2279dc053746bb64715172e3f840e09b8cb1e277e8b7d7961ee5884d394b22b4619e461e307799c33f2aa99504fb6653834c96227f93277388b48a53e0d9b75ec03b596b48c9eadb1515cdb549540bf0f0a3181d4a0dd65598db10425ce849bea913afd7d347b5ae2b9ac5dbc07307e1eb35737860ef24cf0997cf0fe4f1416868fedb41e4c729cc6b690de21a06fcb34ddd2fc5beae30483aa494dfcce934085151fb525a62aca968bf1e92d0bc9b8fc4e494aaaa2abd39012ea38955c7189c3c372737d650e7c6f332a247fed6df9d09ffc272ab24619d979e67c9cf4c032ebda5fda754acf8006608d646150712a82713c0c1c4e360c1b73f7d03db6b5a2763eb28fa6f1dee15989de9f5db34cab4c65ef097829008660bf8ced91442b445baa088b6329f3f78acdd6a2ec165a06812b0d4f85c3addf257e486eb25d1ff7ffb158fcbd9f898f5754a19cd6d35ce9a0bb25f372694adef082818477ea3511617067824bb05f1de3256079093af5adf2f8d915ccab68af28c9c279492432ee832b52b12d06f802c2e8a80cf0c02e72cdc55d4de1899cf540874902b0f17f109c8f08e9131c1ce378c7020c940af2c01fcefc6481fe00e589b28a5f8945add18390ce7b31615506e2d169d9141a93caf21f936b9beab06f37ddaa521320eba26a72b92462ef73cf2a8bcf1d3de5432decfe1412a4934e82713804df2fcc92dddaf437cef64b08405bf9983341d89c4d103e055ad80c7f507f2ca8dc8f169a23791d87a8e4a1ed8c99771c61f0f9193f47d1fe93b7eb6cb15f69d75aad8722501faa3c905041bbc29bc029e3e21d9a3c66362fae4e99428c608a88d2bf1cecf734c4bec4b0f5537af92280c76ef9e4b0bfcbd7d22e6bb2548767e7281497de796729c8eefef0579d4f9554976dff1fcf7b28ce5629707297dcf7d081723c829f23a0eb76b49fae3a686cced11c9e56bb3b11fcf72a86b996ec3758e27bce86cd72380a2c8bb6046bd8c98b36a3d9fa42c9b1df6bd0dfc7f60ee045a329923dc41d8cdc393c304745c6751ce004456025d55a0a3e8e995b7a47d691b3d87b1df036eb6e6fb7be2be3c8ba842e900a3eec0521a0fe855f3bcfd12febaa8af73f4a6e249ed58c68a7751407be810d0c3254d960ddc0626eb06aaa4635ac4650e2c8d062a19582a87669648a35c43b223b451a598de9d66a0776a6df0718c46ce95fd56c7d2f916a989b55c44ac5632a3e5bedc3934d95a411cbec9d2b0fc9725891d96a9000c0aece9d22fbd2630ce082feb59464a0df5aa300e2081fc5e6e5da8d6f3d071a9c6f210bf4de95881978340c56c7893204821787d93996a27d013ee51f56686743a75bec3632d0f0df91e40e8a7b2100655acad41ddff7373361f6c680f709253ef38c2cab2bb4c8f7590607646d5c0fe2e29ca221a2dcff438696d2c4bb96a6a064871d1c6be515d8a973c3263a011fc1d17338ec2695f15a6b5b7823438f6d2f7f620cf5c5fbf18486e5c903c7e9a46c48b8c912cba3e3d823a2e9bcf5c78f7f47fae523e50495da9f7ecf7d8d811ca4e7d8e1d0023dbeb5766c99dbd6e66d4d856cebfba900303f5942c171874ca5f742c4e011b3ce7d6580e04cb581e8b9830c9d760a946497c573985c08f35ff1a8f371877d2f74056baac9bb0d8a9ccdacf4b4ce0fee98bd0aa9cd57122de4834bb45994d99383c182b214c15ca52751c8239a0c8e5c79fd5765911a916e973fbefff96f5208001a8f0e541b5a337e31bf76810fa084d734d45677066e504c4558a751e97c2027b5b0b53ebd10f7efe6ef1e5a810ae6f8aecdb6794fa296672263b5670223ede689343a2daedb13990b8d815debb8af14df6609736451ea624f3cbac4cc2d895fc2412b9f7aeeabef41c80285da184ad6ea2f8fa3e797d84bfeb753f5553ee26a6e71e8b5344bd0386b03ac1114058fe10477cb303711a243399f570ba4c73d1006ba6cb70448cc122e828905da322b49975951a08555250051638b1bc2bb8311bc58198e490639ebcc55f1a73f5371163ee0805f82f2744c9b603cbfdc1da85fa0a23449497daf874c7da2028e5afbc591affc3f92a07783814a5d946e0ba5a192e7a39971fa617dea73d066b89fd2c6c11768f397b64719df9a06ba7c0e57b104d16254283960bae3a7bce6e0c57bfffe8c6c924c1ee512b01e5957e3ca351e8de65df52b74cbfc8a9374d8eca12f47b6d21c1b284b33880ffaca14b25853ab4922a11a8412ca57af72a859298ebeec9a638bebd9f52a2986bdd89e98dd44ce11bf3e0502d29cb452ce53c7ffdd172e81e0d048519e9db7a866ed266337973279aaed1c5191d14db0581e45ba6333c10890ceda5516e786066615e286c93a35a244226a971b323393d3f03a583a274f1739b02cb0966f006804ba8abebfe16be0574f1ba697b7c8fcfa36d2724588f422e28f30e220ef245dc133dbb657a4192b721004ba7c7d451baeac7b3119d0c04c3fa5b86f2ff9031c857b18cb035fbb5f0a3a18cc2e693590d0616a4e3c67394bd919feb6f67543afbfa384d178267e541b2ff471a4fdf8069ed5142bf61ed62437f21d59b8549c74cf0be9f7f8ddc6ba1e67544eb89c411b6aa7b5f41a5a85ba947b9532ebf05deb487114b06d74aad191c29b11084a998f0660ccd887e02622f054cbe3395ae7d2f91b56ac228d73e86d27500a83dddad349449d49415d0dd1777986e999ed3199c16204ec336121b13ee29b450a76b4db6ff6ae5265d38496a3a97345fd73431999b0f8d70077e662c073cc3fc4e62b454fe94afd63ea4666822fa3b66049bba963020f6f3665a8ac2fc6d52406cc17cf9c4d01c52fce06f30642088238e54b7b638fa98242378377b540cba0f4eea21fb72e261c5884e6185d3afbca7d7b38476bef2c034231457998d268403ea1cedab4e94f00400300189265b97bde53dd4d279b815cbca1f1961edb8c6191c4ed08af06d99ee20ce19e197ce1bdd1e226a5171496e2bd273d1748c6b8b3af4327cd81c16209d8ca08a5f9aff70293a616d7155bda4d235413a5ce51914841ddf76b7d3c4dfa8b6d6c15a7d1e59c454841d07f9dc34728d5132212b16334c942aea1c16c41a9d89cf348dd4275e6c287521e622a4b078b6b1049dd319bbe5db8ef483d4daaaf775cfc50fa4dd8fbd406877e3bd26ffdd6c08f202c974c22069431518cca37fdfa22d611aaff2203e01e30bc33cdaf91a8d64b3d5e1aabdedf3541052e275adc3f46462deacfcb043c8a33dfdf2492eefb2eb4d47ee693976d54bda1cd4ccb068e8c05bdb03e2f54c1d08baaed671fded8fd6a9f8cec0286b1c2993b979c06cad4a540ddbf070f884915c46a501f64b6edacc78beb229a78f5279ef6d255c83bb88c170770b80e0327188114c915f255ebb953406a9d2164627be68b4097967e60531e3b7b41360cd500f7b2e3035f30b4804d6e856e0184c9776220ed5436163dacdefb1296707762c76f26c49bc36ab0d229f4d2edc90a41a6546b7d59334c2e935518cb880fde58e4c7325c413b08d9540cd0bed2aa627610d52c268f5da4c6d7724623de46672244f2dde4f46a264c7e52e2038efafdd72550f4cc59476196ed9a8db9fbad203059731eb516f3497cb909808a6fb5b7f8e005370bc1c818b35326816fb2c0e6628ee6d9cfb400bb4c9a73d59671f7c3cec487b60d867a58ed18e34a0c6160dd78497833c303bef1ac53881871f58330b0db3e378a063e5a667e90852514507881236a2ab37dde128597728bf1583ff52e7ce68645fbb6c8777e63e75857b9139afb9288a9e3167c05d40f4f9a0fb694363a0ed3e3b5ca931f0a85bc2023a61c750ed92085069e60ab51720529d5944c0d159a4ffd7e24d561239131cdb189c96d4bbe5d22ceb4758c0d6144caa22ed61aa5422db11ab3c45297196e6c0db4622ab6d11f976e18afbb4bd9d7584bf8b696c611e030472cbdbafe217fabd7e11a0fc239ec9b1c900bd9c586d452060c218000e6b5fd3d845086d8a211fa23ab77033b2f6b7cdb66711e0a4c7a6ebcaa6381b1f6bcd2dd776c740508fd7a3b124a4c7d81362930e59a7b17c1e6f89bb2eba0de48fa7428058fb4a8b59d8bc9fb367c7410f8449edf129383b09768562cd4e15938f0e32cef0a67757cffeb3eaecfbc1752d846d52a41aa7f97bdcd6bc00636d9f474a44b3e5c31bd26d8d130563af2dfd03c0c5d1e87dee1295e0a143eec638002d91f00bd8c5828f0517018856a7b02a9d67362196c31f0ce46fca818adc152b85d51ff7aa813dc0ba6be1eade990110e01dcfdfbd93d0b1ecf02f0e301e8fbc3fb3b89494208f81b87878fa72f8401c46f9eeeaa69a87e6a6b8a44da93be60a179e23f410823c0b95b0b26308b6178a52de34f8fbf9cad330f88705bed837426d2bbb33d683e7cf148bfa4679ab6bb1feb643c18f8e989b05f0ef367fab2dffbeadd1a5c444913c50cf31051537f86b39c00b0342490c44db666902619e8201a9b585581b7dfaba8a8677a569c7b8f77692a37dad5d06e27f3574a61ba27f254017b76d3e9872803dc206ec1746f8e95e9a12582bc14d3901f854a069228e7cb2afd873ef5042ab36efb1243ad0f1dcab4ff1eaa51382591e00ddca857836b78094821f1d9715e894bd27570309de6e740f6b45295114a63b9da4cfd16ea81a6ba55bade821648c96a3cba40db7037541060c080da405ef51d3f725e10c9e7751de4563eda2853ab8c2dbc90e5f923883075e3bda39ed46a55db974a29f38a58b9f3430aeeeb05dec3032e9fdaf02c9208c254978fd8fc982ce8d2e3ec3b9197f4cc268324df5200d0cb659121c17c9377b9ab1d550f838978560f6f1c218cce9a058aaa80ef982748c6dbef156b984143fce866d08701fd686cafd8cfe5d46cb3406ac8f6dca95b9577d325b060a466d6af5d0a1fc10de7aaca412d26c17735a8a201e8d0454319bdccc703be1e2c5f4f7e66a7cc8142ec5a03a51f860287c1bb333658230ac3d2fb1efa3dab84b19ede19285d0faea8e7c72ceb856e4d29facfaa9c2c51f983692f20f3ebd92c2729755d9c5314f98868051a73d8d64e38a27c5af6bba0fb3bb911fadb0a8b47df18c36448305cc320304e23f8b71f8ecfcb753a6e20e029e90d432a55f856ba661a8635e5a227b8ecb636a8cc65933bbd5d42479eba198557a624e5d7fc35863af127d41ddbf3fb3ba5afb50e46761e619342b293ac58400d398309bebc18b643f1acdd460e07fe865cd8796966a704287e069c9d5e7dce776e11efc3c410588c85f2009df70c3f956ca16fe1f2d0557c81f452affa21268862b29936060943aeab3df12850c39ed51e3f6c3cbc28acb6d33f5084f08eed8826941b08550eab127319ace05db6026deb6bf8d1bbc09453002f6d8172bf80dd3d1a30b3e827c63783852cff610d6867017b9ff38967d97568b20a84f87503852298592edebf03d89674e5d42667b227c53a1ea8e318f686bf4a256dbe60f1b0c0db0b2eb49b98fcf89a9d847ac6c9aa4ba79b272dfe9b998b3f8f3b414ede7af887ad9cd06461bb0c8d8639ac8ed972e06c5562ebfe630caa25cbf5c67158c91e3f7a7efac05d9ec62da9641390c2f7813a6ade49e112cdc9b54079d3b71ec07c9d8f6eddfa4579326d01798724124a61e4ab6494fa1087edf2c581b42a1dacce03af818b3afdbfeb56e36ee65b102e6756a347bf6ff7f9eea0b6e1f766e137c5317ea2f64de246a47083109138b754ad56308bdf0555aff70a14f0f01f79d984b0506a780141b4a368bcb2ecfba48002186fd6af820c49081a67a736b4ecd6260dc4104c0866d041146c86e1825b55699ccde40d9deeab74bb5ecd24d2c7f236e3b84b127517506bbe01205eb25e4798e77a1e7b7d715c639764c0592c62ce35b772e04fc273ab24c6172cd2f303a47a019a1b9fcea77d5117a235383eda5317a1e835ea6a7911018d3289b4c104f0aec8e218c35dd9048dbc2f476920f405c6c6906fb112b98eabb5fe27fc4326ec05959acf564b5fdebbc668af566d4ee89ea63077d23ef40b61b2a824a8fc876707aa0eb669cba5f2532a9df3af359fceef317ce3629eaadf73a3278539846ba76f79fa68327675341fd79b8de704eb457fb78dd8dae2d74bc88595e933568794abb583e18c28e623c14ecfd8b4f5e7f6059e80d69428646759b1ee44a0ad360e5d34b62675749d7b2b8be6a493d6fe54afeeb8e952ef08a1b3a7d2658e7118bcdca0a95c90a13a10253544d5415e9ca99dafa1d7b8a2ac3f793220b08c31ef76b4feba6ea13d1244ca2aae614370c40f630eecb1cdb27602e0d186e93132d4e922fc8315133d9bd30b56f7615f7119c08b5a99b17e3c1e49327b676496890f5d98147aa475ab2f292ad39d8b21acc92111d0595a1b4235fb4ca79e25d64b27b43f835fdef8eb02d9416797ad57c51471e5310aaed87372bb1fb111db95c7f7887005f00af3896f60b946c64395405b706d345aa74e883bd23284199a76d2e6f53a6d73ab6099fec5d32bd030b214ea8400b8e549f724f2a01e9b2466a4258411e00320775ca7ca4123bd510a4950f4d46cd34a55b556c55d114e2a714aca285658bc76bbaa3a20a80f44a82839ce6c7870ae06104b9a094e4c71c9e01b966730cc3503d831e47dea54b3cbd826fab192432c23aee27459b3a5432ca4cbb760b71d8e29507adf55a582fdf2a3f6a43d370b66ff8e869c002606ad0b9093534a225b04ecd83343335b7bbbfc9d54e9ca4f67f5bceca7b07325eccc6b87b12fc0e64e6bd2dbaec124b0f822d6103020a456e60e1c9f9982d63de8d8ebf0e670ac8bf16b5d2362f98eb2044d5aa83ce50a9c8e6cd04214eed23f214bc319f666db24f197afc86955c8007ecc6377712becf95608996db44142aed160c6702b698c1b324c5605017e20659c940acc8861524daba6a4967a376bb3c4e80bb5d3c291604a635c3f0b593554632f48ce82a647c9ef300d02497dd6a5dc610e4dbdafd16404b810818f9ab79330447c51210e1a3bf5df734d6acdfb628f6962fcc0683a3ddf772a9136e50032326e8b166cf533a4873608330897498c677a5c1735407b278d45350bce7a1de1ed6292f92f67fa21e0cb83b7b536490181fa3f2578ce143d742b6f2bca7c2bbab868672b789063f832e6e43ee3bee1c70f9ad19a6a2e9282305e827cc0bc3168401d64a41b4537b822e5f1f26c50fbf1d60167f8f249fda80fcfc438e91cd0bb038c317330942be6477ccf7d0b0305f6b1d1cd1f7736e0c7938ee7fba4806bb3d6949067906c4f3caebd335ae15d1f5e0cefa32768a1650ef4fe3f55f34cb71560a258de5b51759b59f4ffe1f15feda76923fb4ab44c6aea9cd614e6fc78bed69cb02621741e9006bb4e4bd3a3184eaddf0a62d5529b916ca9f298fa892ecea15ba376e103dd338e3e59283b45d080f49552ac14bb2dafc06ef97df789fae30cc0ec20d4f2a7ace6bd48af9485c075d44c47146b6b8e176af2cc48898d8d812cc283765771a05d7f0a151772f85c4d70d3b38f9563eea9936fcdd13d4b0c0879ad2a755b73f259566963e734972b482b900f721baaf1a42bd4eb9a131ff0fc38a105ce782ee9696f13418d313d2da95cfefcb5a5c78b98b3448ce5958577daed1181b8409f13eec9b5addc192ad64cb9291888ad49ec06a59538b24fa0a64d934688cb54047952edeef548b18396f61e3415ed8a3f7b860bd22214bbb7d703dbda0b57c360dd03a8d4dddd9ccff2962bd32e9d6dc0e5767dba778255b2db69f13dd8f779fa151969709b43987b2c0c51d1e46e33653a9bec3e81112da1aafec134bc5f5dde6d22b13da15778577a1fe48c0aeb60ca152be00699bd0d35a41b2455ff8bba5a1ad172ad38242b18d1c0fb7425e4b911df2c8aedea3171456054d38b28e45283bf68e0a4ec4054d43bc3d38f1b2b195e142bd28107b5764b0fd0989814fb39ae042d0ffbc3e53b89c49bccf831bb2f5ca796df84462574e56a3e958e5cec18f7383d0efe4b3b8696ece40f5b5bf7c4b66968e66ef92e2454364a2d550c9030bd07908aee72b18f3fb5a8577bd6d2ea9f89d3f8e86d2611004fabb429a9fea0243d01de8032675a2d38b354ad1cff594b1e1b6952c02f9ff14c3a9619881f12919aa3735d0aedafeccf6fb65a2079d373c4dcd63e7e9e0358b3a76189743bd632bbc8bfa04aec796cd012e581db0ff6d54a625bf218b78a04b1b8d9b1a6cd04740871a65b2e7d5b81cf1115322ebe6fb26ecc68ea273cc8ee702bd81b0a0dd98bbe150f12c63544637d2c79140df2d34fa828d8557b71b2aefaa49e29d4e7d4ed00ff903eb23b0d2f0d88fee0ff1aa97407c45293fe7e3202a34af68c6a6bc6d7fe9797cbade22f632d9f2ce3ef1971f01f4dbbbd6a5d684e0ce951ce99d2d2c727731a9ae8a14c6690087980466c891306977b1dc9b6bb17b7ca00ca1bb4170070f00800326a88fe04569dac5b2cc1325b0fa4b1c564d68722a0622e6e0b4809a5b7d545f3a6bdd71e8e437034416c266a399aadd176d0ed7c1bf700f915e82ed2782226fa731d036f02ac6b91578ccd53c0abf615ea2839e4211616853e70fdb4a4685413d224754c84c54e4d7e61884bf23ba7357da18436b4179c0291accb410fa0f374e4b8852c3a8f5d0b8055bce3b66990e049b78672f1b4929f70232d38ae501cf980d46f8b9781f53554be516a52fcb2350e3d1ea8d4754c2e8a2b7fc7e5305b289d70d364392a004d41653655881dc4f54f8fce789011f0db3c9e6043156e31146238363ca91c82848a19dabeeee7b185c3f53d28aac1fb36f3c034e855019301f12880b548d810b3c2d6b5f2841818c1a008b33c36aabd852615a1af9dfe69e322747dbde74954901e30bd09df42cb9ccf5ba0afd8a3d86c063c1235b8a010a5ccdc5c42c71d8b4360c3f19678bf5099164515ae6ae6c5e5feff37aac7f0d944524a337c0a2d0642366fd263002c6305b54d49e9674d4e8596e383db3f4c87be928078c5d8efac7d27eae53cafbd721013c31577853115125f4aad448db8d5c576c08903b20377e3662032cefbd51fad71e57942141d0c6bf26d3035dae7ee50ac94269fb783f3292870c88f3d42c243c466150c11f3fbbd35d6ca04a40ef3f25835f20cec26c2ef4f7537c2104fe5341e47b0fa037bfe0d5df90058122e7906cdbcf5e5aad61a2a9996147b8d60c62b5e9fb5bb11a6040a69fd9974424308a881de1c90dbb545e389ef78c1a310d8400196b133e04b513319521fa6f8df9d80ebf0b876a05f2049d18381ba2eed42ec478dd7be3090fc538cff61b2690d2860ece1fbd2847a9c0be9e1d0e590cf5ec816957c01529c72450913f45d0efe0fa8ed1c7e046b9b410b147c0a6aeb6f3b243d4e9a48cbd9f106aa88ad00b3ffaa85ed80be79bdd9a6571408587142461c660bb8517ae3650e24e36d282a3553c5fc08449a28a464fa7d3227e6952004f73d63d46296e507306b21be4556a10b21c24c09d79640df7e277071675e8bf1f7a7aba9b2c6448e12f4f7a7a5b1a2daf2e5d67c9c723248090800c08fca5a40fbbe52edcdff01194576987e31ee76bc624e9381f6bae6b6831c5d3c98ef45f9145fc78c6131f581abef8f989427d8c90d021d5b557873476a399b4abea4367e0b98145ebe06dcc5fd9a01c2bcd78e1283428e450d05022450e9cadec33fb6bdd8ef887c5d37500b4736dab55ddb9d47ca76499cd7e509b95a9b8a2e6c61851b2c751339566707a76799b5466e863a28dae504084d32dec7c3211ff901d2b0c2e8a14011e897fe46919c707da9c802191e41a32b718d4f395780add1d16db58da40d01d3f5277340cd4ea1f80f622309f9fea2ee26ae6448f80a70f0ac2185f129f0a3ee8364cbd6787c6f45622760cd3f852ed3b5776bdb1dd4001167f77e60f773affb3ca9d033bf8587bfaa563065b82317bd4aa2e4a74e6b13cd5c32ac6ac0d880a0ef10ddb3278521c3b1fb6032a0de442e75f30b0ca9eb37b4e77bd478eb65de5f0db6de1a08c656a18764ef072a096544aa06ff5e605a811aea1f3b60122de54a2c8352410d8b3fd4fea50d19f8afe1b2c1a5c4d63955293949591735849cfc38889398cab52493652e30833da5d36b8b76b1b6090c118bc56fae19b2c4e1b9f27d234480d557c457f372dbb43b73a2e6ea99107f49a80f94c85d9043081cddaf0e1149001414d4266a92148ebd66a0652067a4b86fb9e53545dafc44bb5ed26361ec28866e7a5423782bc01d9f097b148151f89d96559ec1db572c48fb836097419881b9b233567f4328c87848b5fb6c59ea4e37e63e09200468254d1bcf6ff99b7a9f9604173a62b6a449be970b1e1857d45b351e77ea473ca67caa225f1264013df5b75b20a13d01e337175b111d94110ca7d80e1e63cc8574e2054b7138ce2a1d9b8104b7f4ea1750b9b6da1819147ec0e0691da02703e3c7fb248373ba8570cd37f21d4441ce2f9870d24b7ca0c57abba79ac434ddd0e104d88eefe6a21850e5f4261b195d5844cb237e5c28a527455a84d410ad38db0bec95ee6312e287eee160f245a695c795917392acf6a84504161ab22492b879729609e8eb84d5b88eb6604036015df32570944a52d82a793f9cd19cb593143f2b82759746684d9e1ced92635fbbb1443c1d3c1154d09eca61777dcf8c46bc5ed0aea84566a3f93ca556c6d282083bbae4e4340931be7a2a3c47bbcc0833ff82fdc913f2f1cc6882dc4b664f383553fc6d1d493a58f82182828913ae9933b8e1d46ba734c3ed02e1967dfee76c6d7a12e9ab78efaeb6b90b4df2198f4623967e7a638da16a13aac64e5538ccded2eb40b098aabf0d4d3077985410be28dc5b9397130f49a8b2ea4ea2e5f371a2e34ef2deb34ceebf350122c31ace49ed85b107dade3a26f5d9e504d36a5e1d9e30bf56d049934d07ec7f0e134feefa563461bb73a41a4ffb335f24495b28780f64a48eabe74a909896b3562f3486c4b9d51827984c8d8118da988c0d083d86049814cdd52f6e051c820d8ea46de63e7f710b8100651538dff6e6824ecd9df0e2fcbada7abef10bae6b84e462b828cda7b60b246bcd2eca97382576ddd24251decf7cc7081e7829609bdee43e338ca441daf9701874fd3bba13782fb05c23e586a15666b3cbdf92b6ce34576e37e20af4c59ec34c22674978d5034062abc7cb39ec2b64f24bdd2129f3f72710c18dc77a964e5dd258eae832868306b16c06c6aafa8267004f1327a6b00333a367d7f01e6aec58763cc4faff9be95affbbcf37611e67ac5ce55a440cc487798be697f5447f29d5899237192a7d74c9d3b2270b3a36ebfc49c42d7fb229d29891357b01e2a2198360cd0687b1d2e0495589b2f4e38406bc4f9a6407de17444f61315ea0ffee76b0d5287309c8aaa38ad546748462d7c5f5b873bbc24ec9fb7b0bd488d33bd92eb6c4d65213546b563b4402a65f8efb0a0d142fce89b317fd4c83fdc6a14791126d8f3b10077194be3cb9b2c2fa918654acb5017f2732e6e23e21cca18968afc4eb9b3aa47ded521b40ed8f2d2d6ceb4714340cf997e15b632822853b23f8323e5ad192dd70cae2a22abf02140273e1f7bfeafec0b850ee30cb250d90ade5d084181e4b87dfc0c15985b2256d3ccd1a219c78ce8597fd3b024baef01b3931926ccff32e4002b8b1ad5c6ad5381ef54ad7bb3f78a3d1deb6ca7aa6fc2ba070c27e43c55a1570528b7e36335160253c7d5c8ae9d68902dc1e6e27d96657834d2e60eb8ed831a260e07e307a6bda9a44bb1cf7de86791352cc78667686e60e05b2505c4a4c351e696e16ec514af502860308fed0da485b92caa676931c2864ea179e987bb0032f276130a8efb7e7b7cd8fc43b30e022e160c243efa72cf71fe146242da622207c09659fcc2e030c3ab96b73f2b67372c175b4add20e65f39de4c034d4d4bfe4ffb28901360c70660b3e5b0101dc656ba8fd83849789172e4682717f05129129d578f44dc42a38593e22113ed464afe39119515063bbc14d695accd673f1872c15e6627609501ba83982b53346ceb56e825ea3a880ad256aeda33be9fa068bcc863a7dc678e77f2d964dbc78b5e39fecb9556426924af22254a7de49e86b926930e7f8ea227d23e364c70b765b2dbafff3f9a9aa22e4fbb270449862dc3dd4fbf5148bcadd455b209e0873db0d7ceb19a73c51c4faad04027b6a6d29b91c01344d1cab9ab294e42ff57b70bc24623914d782683e123f15f70a9f33b335ae90b6b90d25da8f65459fcd60480f34b85c82fc236a210c15658ded7e8ffdb61b1ec433297c1b88d6bce9994a6b88a4176634b6ee46b1ea0fd36db333438aff92d4e0d3671dc959a9c3607da12c0cfd60729876a1403210f2ed0e4f01cda520c3eb4c1ef2614d97c41c74a520c930db356fee2272947eb0e68c9d16bc5573d964346011a961488ab175bb7058bd8a2e7def7fa689f5b68ef6f72f044fef1739adb41aaa9e95bdd71f9763242c6cbd47e40f4ed083d7974194a0051d38239feadb547cea974a63fe5f25e1a253158ab1586be76df1883d40126ad57e07d1720ab09b758d90e37d03e7f00a51da1b57978d1f587ad71d61a829826cb0e35c80c6f17a837c37ecf005d3d6fd189f9ce9b17ae165642d2a580676c91f79042e6553e72b48cb6ffb6ffa5f316c44d7544b50da218ae3614c6166f8cbd1b03a7d3cf2df1bb375ce65f9866ed83aba88d81618ac415c8fd487079e94498f306573e8dbaae8895d1ec004cf06b28d051019a485b4d65d71586fa60b914e044afa97f0e71d6d640cdf310f05d2d2a56e9c3bcf09f8ff5a15b81f59011cdc4bf2858f4fae92dd6d8fc4976fc19f2e3358b2bf53e043cad030300adeafc520dc1a212acab466f47c5a32769c71dfd8fb05a8f5f55ea5a40bd6f18e39ad0141918902c2a9f1792e5580c4bb4dae29d5faeb2ac5f48af0e4ef4b9f672122a6af18dfebe9f38eb11723b6c95324eab77758a7b8c37d373d5c9e0fd2e17a4071163f61b86b796277a78588c488c1b5e655decc259b1dcd65fb663998e975e483cee28cd696560038adb6e0eb3678c9b9c6c8ca19c0661f8987bb7af1e30e29e0e88c69c6debea6e54ca478aace012057f31736907848638b5e142f52590148efc6f2169ec92d83738b0d251d27e1b08977c2fd5932d06d924bf98523707554fd42e212872e57fa5cebf3ec99205dc43d926b2898294fe08a6ba0a04137f23eba685a4440c470ad1d19f4bd23173d6e05e67ef3455f1ecca221d5997dc05e18b9bdd2ee99ffaef0b6a7572df724b17799c9d364abdf7aa5cc1b19d31a0b1cb9f419f34ef9410f482dddf11d033510e451283aa2e95834124067318e53be81c847103ec8d957c9480b8f195369e55547abf292ac7401283ef99491ced3b347a0f1e66f39474702efdd0e52f1013a8a58cb1e566e93cec1e436ee56ba3b52a6ae16209443646e9a10b42675add41e7d85f638a867e2fafd2bfbb8c5369fb737c93f92130ee6f13017a62570f3a2ba7fd0168461a4d0dca4c28d8c7a4809b4e359d7103d58977bb6944bfce59d5d9105ec39aaa812210dbb70fab5c1d3f593606eb0a40a77d4482997406948f0ac76575b12fd02c36cdd5f6e8facc6b5d3ba127a7d5425340e8954d9a7353a656950c25a7746fc149d1e94625f968dd3890d5509557d69614d0cad0fa5814c8b23a9eb74e128c8557537a3e0c3dce8a7ee2c74bc37bb6d5aa841a599e320699a9d1236f6ef0f7fe0058b2898d5d0dc0d5080e69f8061ce9bce8512d10e077ca44d585fe2e3b0d861372feb30f35f2381ef0f8b5e76833f0e80c17d0a58c42d44de81c2ab231b867b45f309f942d8c1d2802ff9d9c18ca7a11458791af411c174aea5e7aeb9588da540b6312129bde25baaf82a6cec69c45af46556dd9d6e65ce518b4b60d49e48d68a0dd83fd2ab650d8c950c75e9401d041d4fd3cf10cb90ba0c1e892d450eeb2b5c3bb439ac4fd756355bbadd8ab94249a19d9d408d4632545aaf4e4e0304ad8c4175f07aeb66c3c32bb477ea09d69f212530c1035afbcf8f6b09c924a7f901f5997acda107d7925ae5daa80b815b5d1663b85eda40dbe1f7a0516e58f1f579f5177bb25839d1673c5164595d72ca191da98943f20c9cfbc110bb5289418d30b4444de3220107aac14f9a192c41e7777759b73cfa0fb49741070971551e72eb9ffaf4564ca2ee345333a63c25b5d2c54567833f499f6695c581e1906cb3954ae5e9796802a4175a8c478bc1cf7bb23e41de1cc17f94e0bbbdb3efb49a4dd8aba0150e5cd8528f29c646f1708aa4e9a8605baed7dbcb64d49d83d63a04de49a4b95584f29f3a55b208e3bef99222e1520090bcfe31a7882d540bf3164a7dfa304fd616858bb0df2c83408416894e60b084c3d4981d8b8099511aefd5efe45a019e977d63044ab0411877b5057865751a554c8b8885617c3911b2234e28f12c7d54eb546e7d65f8dd3f15b5deaf06ee737a1aca7a021614a8c68bcb2a212504685afad327cf9f4d487c9aae8d9fb55fb4232f6fbc0d1bc454598f05bb002856442c3fd3b4575b6e67e4fa40806f5cc09bd0203bb520e679221c5ca7ae0c431bd80c0b23882e40166dd11ff94c54c58e10e9960f62166f309bc0c5dfaadbe4fe74790132b238bae25692649cdf6f218bea15cf7d6831b39c4add51a9e0061e20e67f98030fd07847f7231b43f49e84ff2bc61da59d2235ea11ffbb0c0f8c266225cf9c76ccfcec9278500943ebbf6698ebe966611a4d788786a570339bf3d74c3a9eaedb02f6ce028c45e5e93fd723cd7012a2c9364e8602aeba144aa8592f7de4cebfdb59bb99e8b6a4dc072cf57cd844d561fe06816cf5a80efd3259acd0a5f30399aef31e0dde6f4d104a42e715413a86424833cebb021f20b608a6cc801f6fbd56a11884ab09fea414650990f5f1ac1a7d86459a09e27d027e706fc2a909efeee7ec5cec3c734cec720fe23508e37c4e5aedc50d6e7c5d83c7bcb9dfd9fac8ee8edc3aaa4b68234825ccc139a05185f1b814c14308199bc8b7df39824341f20e64445b35a6f0797c1f858c6df088929a875691247799fd80aa2d9e1d3db3b9aad447062ae152d1ffc4f516b1903a18db4e7d05d461c67469aeef3c5cc00fbbf61e707672d2a8ccf76de51b94fc662a75a6c23ea3efab455905c6126febeead6ad51208f6168476e4e731ae7a15d67a03bc1de0674e06b63fa7da3a198142f22e61087fef8ba2e63bf1a9f1289e1f5df9d3e168f330be087ebde34a9e6666fc917eb2dc38d4b239fcc1b724aac04313dfc0acd4264875ddd027f63c7e25c1022cbb528070d9280d4680db443e86d3e4346ca5dac7d122458cf727d1d46df48e01fcb08bd84422f165c9f5d75862a9c275560a66ce08c01d46f40291458f9dd4a7f911c636045b824f2e62a4c2a63179480e10225aad04872a18c7de9802a6ef27bd7d77c8ce311e71b3e1619f0c43b30cbb0f33e18733821e127dba91e0236c202756f69297bc62f35155ad6f2f874f9796057772ddf60e85c5d8260f66cab96e6c3de1f61bedeceb7448c9260f73ca1f6d5fe716fd4c57f3c7eb573f78ea6c7c934c3f715ac506c77e4bf51291cfbe16211bf676b884bc60e3a715861a036f26f79900e3159c3730421e66a6fdd1bedb283500eae449d7679831fcbaf8e18016c90f998c5571e80d89aa28267ec4070f0c672fffd9c1bcfd9702848fdf53b0518c92af28e5528eb891ce79e3a63ed289e9356560f5b71a9d48dcfb3f4165a3b097771b36d3d00c7288f75cebe7ed40def35009a918dafc42468ade2db632dbf0974baa8ef3814246158c7b071bee2f9eee3fd56b28054dc3de742ea5754950100ae967dd5c98f1e9d0269782fcb1668eb461f72b8fa160eb9503c1d9df970aafc4de6264e88576e1c5a01862ac7bee59b33a277fb80f25a19fcfa31cf5ed96446e2627c7b8b0fe34f6eb85ad2f658f4f6c1385e79524bdad68a60565dd0d7c11022b693cae37313cd6bde8ebedf8b531f5e65e351cb6a12a0f5c4d8b614c11d7511f9b9ef2c67b97ce097036315a432778a1346ac5379798e66d48006fc1588a7da466506e7c7541bb4bd61eacfd096ab2ae95270e670a80f4749b5d9a08bf687fc044cf52dc09bf6ea2562ff2f1f86575d8b1adf707a61a7368dee79791e20fa224ae1b90d55dd92bba3af9fbb7379a2675b74e87b133ee52b00efec180c47b06c49dd361d6a0f82b874b7ea4abb4b33fe6580545aa1971b307417d961f05191eba5ff9bef03b2b1ad0ae402cfce706ce66138ebfd407c96e2fbd5238dd0d6b3281e6e5e70e11219988fb6bb734cdc4f52911fc06aca5748d70edd1edde4a20de7820d3e037bce6bdfb8e59ce54550568c9c04330505339ceeecbe6a020d6d091bc07c0efe308f98ec66c29dd78d307f2037c9ed5a24ffe24cbb7e85d25360e0f4a662d20610d5d89a23348b41226d8f0cbd7fb9373d5563616dca4d93712ddf0778857c1479ec51f00f18107b29eddd4a577ee8bbc015ddf929232e73afe2b1ebc571ee6fe0b733471ddb0ee5ceab6a3567ea3e1ee9427ac486c47040ac05c5bc297c2e6505c66a0e34b2e66787c2c78e2f57c3f4fe19461e6c90bcc69b07fb9d23ffcdc0f72b5b1ab55ebcd403ef1ffdac8d85262785d75f42de48288197320882ab327cad449a75e0d7e6ad2845ffafd26674c69696191d7b23e8d0eb5b2cbd695d0ea8e0a18377d427fe3c18f5ec0236f3461ee22eb14a34e37f5beab45cb622d358cc2b5e909ee1f4cc4441223b97df8334a61493392bbced0eaa7b8e3832699dc3a03e9283a482f9effe9888be32455aac5c314c95049b5933de3511c2a69ca9c601d63b7dbed8a7367e25d6f50f8e74e126607a3ca7a629fe5e6f8044c0581bc3410a5c06ff6487033d91d56a6cbe75d77b30f842e97339d7c6514b649ffc2d12b2214a271e96839825c3fb29de5291dbe0e6711dee08190c0bef5a7d56b40f682059a78cc48ce48d1d53ee985ce4d87b2bebf6df247ab311200ecd376a6dd64b60c759f61eb116186121129bd6e24eaa6ea936eb4ec8e5dfa74865709d8dd000c6f2a7085273417695c2e493d7d6c46eda6a78822722726a1c7683a3ecd671c0a9dccdf80cd79df2522b8bb0d3e3e28631110616f202d3c55b152e1171d5f11fca4072a0ff2fda9cc2f7be1cb90c080e27d518882d7e9bc093b3dab6d9fcbe470a7a596e288c2625077d0e92a4f01c3ceb2664575d1a8ead28daf2f6b33493aba5b7d8a1fcf49980b699ec56dfb0a278a35c37e17356cf96b53ad9711d6395271a4fc80dd85022338dcfc9af0be917f01a7a2bf6b78d2e4b2a6e094b208b4aaf033c13faafc10e777873d95a0b8d17f1e303710279355372994e18c76876720d640f19106ec3eb14d095be37d9b78a853fe88d736014ec6752abda8d94ff219864a461de51f1cbfa18010351f9db45316d01846369563a9e31a1e9b2af75f5da8edfb6e31f299b941b51b0d2eb4c281609197d8fb1a561fdee9b8190d51cdaca6c814334695abc85bd06bcde92696182c08455a0aca47a57aafdd38fa656a2c3070a7a4752eb5ed04a53e78a0697342fe90c76e1f88f340ed675112bbb954e1b87325aa81c0d301b5886ebf3a4d987859eb8e13a7fb78e110d4d062f2e1034ef771cebc24e6478cc8bb7221b07d4b90481614b9476ea8c5e2e9de13916c424e663dc1ae8b5c8d24ff61d4819050edd1d63c888c537ff80905d5c0f95f16edd9c6105d9fd65de93afe0a1ae17be3e3ba96b2c44a57a68fdb3f87c9677a51f24299d3e4f19acb79f1ccca6b96a78a7c8c1b008e7d92850b51fbd8569fd01b4cd8a66e96e65e290f2756e271b35d8f1c3381ff7b54760cf094c5392288a425ee947930a88a21675bf4ecf72f097c3e5b62e30819632a6ae8e0d2f0c6921048e2a6e041de0fd27b3fa3c2dfde9af446dffbe22e0a6e08d043c476ed9f207d4b0d286f2aaa40d7cf419771f4062a4c6819f8258b52191f045853ab275f4e2cfe5557fd6406b2877777b573ff5ced1e713611d39a03bab1c3b32891900089b09a28fe25048088b03d6a99aab12372958de2611aabecc5b6f54a94e892fae6727e9073c6662022117ec54bd9ab131ef5e5b702ac551b5c58ad06f09723ced92c3062db84fc28bbe1cfd33e29170cc6148d72723d0d3f2975fc62d42962586e6fb62fd5441ad32f4780170ca6cd0d54d9be433e06ba417b219604d34bc987fc1d3e01ccb4de8551dfdc87cdc0124385c46edef04566a7af2141707050ef56d9ef100c7dc02634e23b4e3df4cbdb155f662617c8bbfa8648701a4e51add62e58f0dbe1181e92d42c6042962d7fa89618e43331122c0b2edcbea7e2f27dce122bff45d297c497255e45e71e3f78ebb5db7828335de3b2c1c3ecb9a7d1fde237fb52d678776caa2f3557b5c5c0b70212f0f0a6dcd32b816ee5911f2f9411dee9e5ee2ab11c176d375ff8c926441fc05b972d82173dd775f9367827b9abbed7df632f7f6b8287f711d7fb11f8c6f9819321a62bfe13bb0dc49d20f328dfae56620347821bb3c32a0dec2a44e04570dba085e271d117305f95a13a994060af00e547b77dbbc79715de28c1ab42e416cd0619018f77849446baff2f184f5e34dbf5f3d7cb9dcc1169472ff0c2c9645e8db6d734875eddc8a24e8c9818ba84d21ba4fc549e86f905fd69c15c9dba9d1fe1420b41d7dbd5b0a1c1f7c47f0d77c488c067ac14c81f8a64f19d9e225b2b1704f6060073636bb61ce7fe35d27a2768699960b4a25a0e7b928e88c218f5e166218c1ce01330b7480528442366f2d7c00614e113c72bf1f88d72d4cafe3f680f5c94e363d7365656e1a390f76540b1f2bb4567c4111d5ee236bb0a29b73bf27a67ba6b9d2d8087d5575584d1a2d71ec996ee51987a6dd7621a04d34902c64bf5af7af8b917404a3ecd8bcc04373489318877a8b107870862578d1805c974412e13037374b647d60f104cd094f8ff9bbe24564509c46ae71293aa822f377ffdba2842d5a028aac249156a62bfbb620026f5f793e905353265fd6bbb0ba6bf1d921a676fa3b9ae0ff0c46d7171652857c2569755720574759165b3abd256181f910d540ff55f6a128fd694ddcecda64912ec9b2a17c34ae5935e27c831fdc439f719c5bfa58b9af1b1bd8395ac728dbb369d68f0213e9ad8a973b6c6c71963f1e9d32d0bd5449bfc69a677da16fa08837528b95d2afbaaa2d56c9c98aa24bb6aee638f6c399a92a6cb810b15ca84e48fba42f1a9a2da10dd61a31b51e3879410732fc9de9d5f2b597022e2f3bcd092151248ff754e3fc3f056665cb5ed691e30491126495c3c79a3f668c7a5912b491f2f7cb49fc384a3d2036f248e3a48b7fc222228dee909e0827e801ae1253596f0e8dab422efc5eb747c655878ae611dda1711d55f4a8218a52c2b931205721eb8b77860ac91f33f64187579dd22f151e3250c05a3973eac8bab1eb47df6ad686539735812bc3a5b64f3f090f1e237b963ab3876998005836aa6707c516c2ee4e5b271816d58bb93a56a083c103058415fedbba6a0c5695b7450132ab414b592a886b5a535a18eae59a18bc996bfff99559453b7d1bbb84809dd611f914a52000bc1ba185ca61dbe0300c09b6538e2c6232c7ed894ce3890e407bd3d84a307733d9068fe0dcbc704dcb2444087b8039746a53304c9f9b77ff88a374796653a7c3fc6d1177948d915062507f01750d3cac7d32d06674f6a1720a752199e0af655d1588537a8a7d1ae248c47696c8415f3ceeec014a57618a12fa5cad202c1feb599e16ebf4e49fa020c60ad55a3cd9e522613447c46279e8e364c73364bedb3004b1f47ca24e24c73f0db6bae4017de4c03c0091ff1b0b839f66824dd5ea4c205467494e247f9a9ec747b76d02e43372b095ce8cb1872255faa4cb6089e31a8b013663b69ee695f666985c53285a62d43ccad52ad4e62106f414c0e2afd920457121f9f0d9ee3fe3adf80aaf0c0885ec7125f0053898cd20c0c413b6c21fabc8edeed51f9ff6a845576b6349aafa74bcdaf842618488b0058bc09a2d61350eeb552c355915fd5cc6c6bb6a5fc28b1f5511c0f40e84a13c9d846053ad880afaf9673b7eceeda505cc7fcd4f5d4d8cd4647e15866a4f568a329d89ad94da2e4a4d04382f9714edb744130a8689ec5134df47c9b39ab5ce44db89bb09255e2f360f24203f00e0fca7c8fe28b31eff50f4532ad78594566751c3881361f81fd93986c50bc553a9943b5f64c1d281592427450ef746df8621c979f879c5d39ebad24c9c553d29374c340f6dbc28ce423a1d3a89577bd02fd6f68cb5557dd641be0d4cfde12d0b2ae99799a4620ddea22148a2f0a4d5a8165179c2012607ba3a8001283f168acb6796a987453a2b877cff83687b425d60234532dc87bb60eb1f693501e8b66787cadabaa709df8d42d7b9e0c6481158d888374e55d41d724c1d45353804243499c242ad903f895020ec2caba4738937d38765f8a2c724bcee5a3ae3dabf3d918903086fe6cc730412ee33429e0a3fdb0416f0e5d51b0197bd331497644232536a6aab28d01bf43e48e5c0a0293101334b5000fe8607b50e793f079593e7cca45a17976c8c0fc8fc7bf296c0c00cc789f55c1031e67848017faf3c8bb15b58fd227beee45a76696934789ef56841f34309ffc20c85c7d3e65e9a5763c4daddd6d653a09c97c832012fff81b3208b734708a75b0446c3fa49bc172f667103f42607ff30b6716c6b792d22dedfaa184c96ecb4290959f74ce2382c76caa2814f0e9be7d0bfe46672a5f9b2756b5d7f825898f21b2bed12a5e41769b3612aec83e1393de76fbf7770e400326b97689d6e1c2fb799b74fdd6f85e7c6760e21dc9260dcc718a7224ca3811a42f71a0ce007aaeedb6e51a4359c76a3add2ef5c0a4c621b2c9dc82b0ac4466d51049ea4f60cfe5c080be124083f642d1e896ee8b00df34da13d30e573b113fda33023de864a5121be16859917b3832e187c33ee3f159d4d9262ac2273143cc6078d05c96b723870054b7769b1a417cf1c893f4ec4bbdd83cff72684fc1c043863cdd6309685666b35096bbf1054bfa8cd61a605a55b9955e1c8d9324f734c5d01dc50c5240ae5c1fe382d0f6e092c7a5491d85d36fa09a08e03492b2838d4ed19419cd82f07fe8d3840d949062d8fd111f985d6e75e702f9cd73b63cac7fc05f72dcbf48738232cf825d490981e281339439ecdbf3a956b24a28ec734200f3a2710960c76351769be3aa16782ef8df1cdfe21e35f824fb3643879f582ccdd956860a1341fceefa80efc3d34a516938c52e2b8191d13a3392f998f30207e4b8024b4283561c3c9bce328a28cbbd053c1da0ddbed10bf1af500cb748cbdc086911f785cae60485de7a1073fbb8f6a13817dd78f647e7f4b04ab114138dbc41acfd909b6cda6ef2a09fc1093054649735f4eaaedb27bd0fb561063101fe3c599204a5c1216341164c92ec6ab56f8243206845e6a9e813b6ba134d6772539c5fed0fa527717a73649f9ad4c6e4673f870867c4bae602a27f1006e0613db03928d6ca3a721ba993b4088a81e32f1667486dadf279f4b320a3b5e9b39ec6149bc94012413c556108c28cb5249c1f1c7eee98556ba674b19b814a5b3ff366cb0f1ea133ce8fd1755aaf3f146f5da21fe3e80d0c8d767af6dd1c91a0b707228b44479fabb46e9c77c27e4d8482a9aad2642603b551568d14b7987d65aad6accacb25dc56244dc504c1989278a6951de0bc9df09461647bb217c0d6da1e2fc4fdb1e1c546a294d951c149c490ee4a111889c72b4e89f1fb226f8366d89236d3b6b2667cac611f2f78a44029de8f865b756d2094459205223d4773bae45ae2e9e688e2c58b24c0fe529b13e2d6b71b70d602aa4f401ddb9ee0d6457444268003b6214913282fbc4ef5e3b9c139566f8f83176a974c8760d4cf26532a73aa2e9dad2ed2945d854aad02d70eb66471fb44dc8fe8934711b8b7c96f1dd8a7c3619c2fb1785e589d18bb743052c0df4acc35c6e6b349927aba830d8cc3de46aa6085739e7a9c5befc58597a6aa7d1ed0053fb7e6db95c7ff6f3bb2b18d956337c60184a8dbd78a4e68b246b19e3fba915be474b5753a853696fc7b2e646ab39404b7f68de34ae7c20878b5da99b4a6c1970ee3b51bfb998f232219895692941edc6c580f9c45f3b0216a4b126d202387181a7c1469c92a61bc36f13e154a0ab1e78387ce55a2ad7725136041cc246a4d4e354c0c8101a13a3bb7ef5079a6d01210bc76e9234ad751f95edfd0d0196290400f8a1388b673ec2fa5f4f4f9f4e9b3174b12175bc9b43374d520e674f6cf1007d62628270f1e1e5ae9d40c36ac477f1043416a1af4bd92e3a47bdc18c9ce475185ef650bb2d4843486147771ec7011e1483da4bd9aed80887c61e801c08d67df8419e96442cccd669ac4e810904840c79aba2c694ea34916370ae0d6c19635079754c16aec221751332fc31dcc5482d1669a5b843549ca3755fadc24961f913217bc62d401bf6285ef3a43c6602a6e647121bd39f02f150648eec8db9d27865f8841935fa6b4c64a71b07bde59dd3cb50bed5ef98c5289958bf4efd01b64649f736a4c4d8c043f1aa1cbc65b5f99f4525a2001f58cf46d6991c060390d3d6f97967b6ae3c0c5ec24c0c2bed695c3a29aeb833ca5f84b4df97a803b34925c6201626b4be9880c3fcb4a2d580e0f48d7409e914b4484a9bd32a4bf0e40e692342bc835b12e4d20fa25ab746c65caf464ccd7a62951c4d004f6fd1f09c1e81039765b6b540297d2517dbbb8dd61450445190bd7280f7272059838f41580353bfdd8bc1595ba1c0954d218d2802d9c395ed88e18f405c0fa3261be04f229cd97075b5a4ba130deccb056455c25153a30da0cc4c53080be25dc0f7e09e5cc4d98ea9c7d0c3a41517085ef9af1660d1ac1a58d8cac970cd00bf95185a2135dbb42f44caa43f84d9e9e30b90d036e2b979fb38511266bff2d98cd4c6bd94c34d8fa21b34c0395b9ec655d81bef56929cd8f9af5d9f0a4ee7c9b1d198b75cd8e0deee528b85a4170bf8e634c5d7059e488d8323131c7133671ec63440eadb20ae4e3b99a755c8b5e61d2d3ce5b02a9dfc8d2e860ddebe57483487a4ec7fcbc2c0c75710ae22fa7f461c286f4ef8e4bc1cdb894fd2527cb0db5e6632ddc3093ddf6eabb0e1d4834a72173cd5be62533d2ba16ca592aeeeda764ee78c740e8ece9fd494c50471ac0716e3b73d644347c82c67ebb1688ae80ae3244057a011deb7f1c48ac0d11ed584f301b18ebbc3630e3fa6201ad517881d0f55e89975d7b6cb53732d597989b7cc1259b0b57ee57402a8636cde95480a381bf1630e2b1915a02f70148d39865904cb037388679a43b329b38546ab1340378f09fb8143323c4c22c2684bce726d8fbb0a8df1be2be4ff8e18a8724bfdd66305d240859782718b6cebf6ade449094da7498e06e413d5620787581dd4405536882acd2d3d540fc817e5552db773b897ab19bfe09c91a0c6f81fa69b2fe1d27a4c94a4f1587b3082ca23f4deabeb4ac71917c2d2b15e7134e481bf7927425cca9ddbab7a8a9272ba20c4f6b538dd32dd6d02a31454f9d0e4eee7017c1203a3c050fe7678907c0903536708df499fc4ac9e9e2fb7f204dea9eacfac757e65f4f84c805cea9b14fbf17054db8bf3d27b1e9505e143474ff8097a44390bfd7ecc6bc1341006c6ab8f4e2252fb13a22c039dcc11ef6710a81c5314042a2384d5886832d1ab92be0bbfa11f4a416fd3fc3e7cb9b26ce7adafc068b229325574b6645732afbafb2b7c95c84f2aa14382da7f5e34db02e4645904767a8f1c78339e9cc6daba8bfc266945400d45b4a2abcf39ed5d3b654fe17433dabf80f4778e893fc12a2851090de76d1ad136975abe99d1156426162825e0d58e1a4304ac5e8956d4c25db884406f5b5961ddefda31b839ca063a381e305d512b7d9238c4e31fc82c35596197b05e1c52d07f08a90af9dc1ef63a53aea4e8de8801f8a08ca15101e69522e1ac65eefc6c4d7db5f04d9cc4b058ec4699010e281b2aa7e99468d2efaef3ca4ca29dac3041461155e25d049e9a7173f2984ca1813663c0b35a0c8d1e84d4ecf3e9c3fc1c0baa748302c5024151efedcb2a887116ddc9207c40c19c7c33efb666a8ee12515b5dbef4fe665604bb7f227b6949091f7f469465e9326cbf0c1287dc15df73e7aeae07f4d368e8f9c435704e012ee41a6b50b32928f7606bf9a705ae5dec7bc6ba0676d019124ffb6984abd58a0bb0bfdc9703a40314224bcce75ee21dca371a304958c128021d6640ec5d5cdf149bc63fff0b67cfb9cfd5b2b49461491b005fea63b8d8c2229bc4f02c530356c111b5cc9831ddd46eb12f3bdddbaae2e826965fba39517a7e9e393568b62d7ac74dba8bb90b18fbea84d115a8dc9f35986110cd9e43dc0d6c9924defe73c57fe52141712500c9fe07ec4bf18adc82caa3e44dbfdcb6d2588e77fd53696e85ce66a27672bbb20cd83ab7b01d131ea152d4b05368856df4f2a66a4d198a91d439a8c42c5070d9d834cb75b3ca6643e75e34467197eb9476d3f0d5799060a4da5859ce45cced2cb71387cd8dc79a7a8d640684e3246fa6827dc36cdac7600cdf5c66510d6488c5692167c029c7149f8b2ae0feeb72d178e552b0e5b2960d35a53ae3c17f665dc8b7d0a87fc4c7a6b971c09fe8ab9e3bf3355e81d0d35417383ad46712531b7490b1f0cb20ffcc2f4812822794c15fb9ddf6ce72e75551b37c5e7c691fab4f38ef81f679dd7763e9776ae3c34267d702d683a8c76c486f3a87c131f7d7758747b18993a0b410a23e493a7920a25c61b252f5451158db15262ee087345ece6b86379eafac554606d70d366cf89a83d3e6f10f344e5c4cec5f8ff9f97e24f71e12189e8eed608ed5b091523944c53e7fcb107b18698e3a25dfa718998b4cbaa34a6bae8b20c9246f0f8abcef524bc55de67ce26cd27367a30faac5133d644d99d171d9ab5d1ef1a745aa004fc162a474f88f478e290c1b9d6ac73665b3fcd8d2a848600bb52ac31f27e16e82523e54e21c035b324e54e69ec140c11b6b7262c8c21345b5bf50a0eb8618e2ee1e0e59a073a0d2704a87a1495bfb1362199c143991d023a811e1f53d92ced3113e9ed5418f7c9e0877de181f41063592862e1dfccfe9c86ee488500aecd82d39510533553b7a5acc728c4c8b3a05bc38f18d13fc3944ed1b36bb8fb50997d2db472079d1572a01372dabc3e7fa6cdffcc7b51dbc07848c3bab03d1f20017e8cb04ba8f3a45e222e49cf5f908976acc38907ab32291e8e323d7b203640573cef3ea39d15a88ca628a33ee118060e9a3127c60dad0973e0f54dbe78df18a3725606c79455ac0cf0dce7981a36b0af49f436f328b38c104d414ca3f552d1857c832495dff3a2a88bf0151689e74490e902fe6d244787fb42067380a664dd2e5f60ab9682f55c2ca07f3e941f8002936503fafb6596edf44e8c4d1f7cf36d602b301deafbf3143e4f7907c6059430169526585bcc645b5ae1393a533c23f983ebd2f4fd0cd6e5c628792bb19e9497cfa50a7a254abc8d96bf4eeddfe15fbcce8fdc1d1b11614feb7217f67c70be04b955a877810affe6210324eeafa22d36768afa78bfaa39b7934860ca90c715c80cce8f9aa68955ed12c85f195b1636a8f40d2859c8d139e484d05f9e022f30395231c2e22e4b75ca3eed6c1efd36d89b5d1f7d0a6d8cf983080f787a5518722f7a2e45813918e8cde98771ff5b36be5ac2eef84709dd06a5251483fc874c39880b2b265e5def4ee807edf0945e61a173a62784c0b7ae903c69889ad6720026a45fd602936b1097300d72400ad38b7139842b8c9abcca37a13edabb4d77a655e9ee3755ef01ceba604e47f86085be8a45616804eebf205011d88d66bc7dd7eb40ad8ab174ed0e7355f10d94e9a52181f1723d4f49d8eb1b2ba771c00f44edb6967677dcda5ca931936d0b89cc7f5d50dcd21f8c2b657e717365b9c148fc27175c8b80200be301d8be9c1c32877feb686943f10c88b9becbd3ac4169fe3a7990081db091a54998e0225bca136889112b3f04bb404a969efc15207effd9354e9892eadbfe7b336c1d2cb8212513a081dccab63e36cc7417986a23d4fc1752f341f8ec0f28148f63c0efb631fcffdad70ab8520ff560a175b5e624643e0a036b65ba13f2712ad91c1ea19e50f7f8ac709a7e2a2450cb25fcd3017583d298f8d1bd5e1131b62d2fd77e1bdb8abe9e7a5176d1ff1781c4832b8717af68ccba9daa45ed375001be315a5c5b6dddc2e5801df32d2886cf783f350ee9b1cc3cfde6a9c87465620634b7079f05ec1db3940b517c52c137c4093a66211b2882a30471df3b850086d11a4e81c7de13b238c6fb3c10c1f512ec0adc910fb4a045ec03ef52eeb30434caaf8f8b7550e878b06b9e7c644351fefa0510c8bca037484f46e9700d191fb46664421968ea6387fec8d2df4963252a33f50ce03231ce363ca8cbe049d4da470a624ca8e5ddb89a0df380030ceffd7151ccf0a13b9ad3bfcc1d449ea284ddde6702765a777f216205586012167a25c8e3ee2a99eb739dd91928f16f7dcf33666b52fc7304cc4002c5370e681bdd39dddab4b6d91b38504b356560153ddead041c97f329a7e01274b923741060b2d0755ceb254290ca573a77015dc676df4bd621c579ea067e6da1b9847e5d82d82b2058527b04efec6fbe453c8eddc181baf89909b9889f8c10612c16230d54f2fd3b241fd57fbdc73cbe7aee65c8dd7bdffaab40baf61f9546b45e68b7b9e6e73e86757be7b44d66739612005f9693057601e47d0777f64615e89a5e978eec63109b570147dfe63b924ddcee8bc1495cbb32ad871e7033f1fd7b43b01b7bf355b21f694383fd7a9829567a4c750aba432b3b6858b34b270d4ef0ee69e05dce6f878682451152ea37b421213e48819a7d4cfd819fc20b83b3ffdd43685be2b4aa299f1a0006272db3ff0527fe541654548dbe9e3f747f4e232afa1ee2c20a40bf8e6430e1a05ebb0c2537a759dd4b1215306366cecd41ba3d02e75ede43a06eae3cbb3d47a69a302711d82f3233e39092478bbe1735ecae096bf48bb788034a3b8e11bb088a047b4c9d63b1fe269f0d9ec3a24798c226fe2f1632749e8f17996c071408ec6900daa637f0ab47c675ad948d36c2056480457f3475be16d1404c0dbae72131d85491c71b10e52a6acb75d1b4209ac3ce38e66bb6336976b6b2f22cba9c6b0676917c211b50c7d81591b336ab5d356e4266f0881c57246b6085969da2caf1105ebe9d8ef596ea1825604ba7919ccc531b218311d8687773bd4dd2762989fee75e9e59c841e72ac44aedf68e94dc83f6349fee643bbaaf62f031d094c436879a050e53f2e5452147df6ce55858a9318e1c69d882fa69a4e106b427155ebff9277849be0d20c7c8267fc28df775c8c3841313bd933b6978eaffac3cdc18553304202394841e049874f995c25e076a78f8e1236e6037e2a44e2232d71125cdf699247544a1287b5d5b8ea74108442e333c791396d869a2c02fa35e299ea4120dc3b5576615579cbb9a7dfd08722d920d56668bdf8b526aab869c3b5db39f61565326e66b74dc843702e5c4b59d4b95e28214531832c544fe9e53401242093c778dd69c8eb6ddaa6bf8eeff118d79aafdaedf918b25ca47e497cf24e783d34a78aaee9900b8dafb15f7505bbfccc14545fdf650dae30e61c9e4bf004a72149da456e94aeeb9a62f670b1ac59ee74a9931450f67cc8ee60f9fcdb2f04d4c3af72d32ee5003ddf0512f56d19e2df05353a091e537ef6cda2ed1ee9bbb32165024a353fca5f4ad5cc4418ee4a492fa406f1e9f91f15a67ca2e67b6aa32a016527b10c1e44c09952a3bb17d66e57da1b76b9162a831a28e9d6538e970455458920ab7f91416ba65707652801d60507fcb7741812e3cc39282528c1f5904282a2d1ba36c314348d1e1b94a09e22939b83a6926d75a2eed4ac0f9f9426d0bdda08dfe0efe7f139af128454d1e4d2d176fba8d01f128d70e2f16badb146d0f1a1102586b872283c3c2ce4e91d7b6e2f74e53a93e93bb1f70e0ac3d37a734875a9760541a5521c760a2b34378e38499fc03ceb3ce338f2d0aa096688be372ab5a93bb8167a845504fd8174d5204c92c49bd2f272f7c7ca8edd3df669003b046b62826390a35c45e610a345fad8e2f3d60b346f198cd8acec9852f3c9818a40f06bb88cc8ca4b7705fc4615221ec3d4afa9d465ae2b8923f92e3f776e884dd87c47985ea46126b150af8d3c8991be144f6397572f783b0aa54bf36e91781b798a8d16cea359074efd579dfe2b42d4c757bc7e6d8ecaa86c78a10c6883598a068f1f641f2e1a29fefca7ed303ecc826cec58e4aed985b504598703cd93f2ab122545ecf28abc0a71247266229e2a50b075f55c7be4ff8c399af9c5d813eeb91aad945cb654ed8c22b64ee989761115718b8eae749d699c5d90bf81aee2161b276ff2b0c122dcafb85673c69db486f45f22f9f97d7e187e905490824256769cf0adc52cd29e8eb5c66f1d8c065e5b3618995c82e8f80c2c674a7f8062960b3c9ccdc4103932a83eab8996d324100e843921c3e8f8d987c19453215e190eb41cc2df043c039134f6d72460d2ea42fac9f868ddf5013439cb50114529f3558ecc26194e9a8a48bff0c71cfaac961d6afa2cd320bfe9b293d49e1dfc4ce162cdf201f508478f3fbb9bae5729e197b9838a321a62960f0322cef4b3926fdd8871af72090ac957939946b9034241953f29f1e8d2a20dc85be6d91900e56a97feaf05a65c1bcb666411e235981dc22470ed40799b0dedebc64b61bf48ed6c3442b891c62c553962f4dd7cd0f584bf9adead76586fbd559d0b2f27d841f4cbfaf9961cda98ad4b7a812b4eb5cc7595f7f603e42ad9f794f88a1bf7e59d502314e56c716bba9e73b058e9c0a2dc8d14026a1b2e75abbc36f0196f05d2d676701b0205f60f462f6c42b88ee10215be46a3f507170c95cb1c41b940d47771b8c2c8909a1c6e53fb16b1328fa57cd56a6d44674cea40a81c36e62eace9371f3a7121bb257617be78ac31a428396d18390777517ad29007980717e07a4deb5369358470423dab9693aef8ac4449b137bfcb7519808ffba4aef8f865930e5588e4f58ee98f75207653ac5b89467d7a639ac5db4576c4edc561e39be0fca3ab0117b217b549a9c3aec4b04766c0fb92a85441c44a87c89d1229f849557fbca2b02de09bf1b2abdea01ef97c4cbd0d5a90acbaba9a16dd805aa063ffc35032ced76e2cd7ee595c6b8d2edecfdde31e543992e71febf89d862016c065a6e54c106e4164153d71efd8d95d055e04d318b2cf9bdb63706acaaba69ef76bd0014ae8c3cab8ebf8ede4d081e697f3444bff2c8a6ac7490b0ca51f526306714a99f97e169f8099f3141158fba49f5fca84138f62894a9336267611b93d3347f710438e9f5f78e4c638535caec48b661650ea4c2d0ef42a91f1dfc97ed022111da83c00a11c57225c63e7d75e801d9c9d0f4b423709f95c7551a224c58ebbc8f50150c2d9025044a43d55dca895340d5d3b3fa72fc67662ba39f4f4d4d3d6603b3e4a1161afe9bbdec04f2f9a1e15f28187fc0bb2070827818826b6999afd32a60ce87db7ed93d48f05b54710d93103ca78287237bc6e7e429ad05ca907ab123e9e6e4421f64c8bbbbbf45e2041375a3ae5751f79fd97dd09a9ce550c4d94ddacff3734e5df1b57e25e6234a7f51ee79bc91ba2704fd5d6b42e3e887f7905512def0c54d4af76c7e26dc2f71480020ebaa32e53da0eaabaca6a6313e7863a01a898a54272a9020eb7480249ca41605079e343313743cfe1b1120a52c429a0d7e86a564c1eefa405f19071d6af7501454eb04d1d512f4562fef1cba3b8a8370432ed8b8b481167c54ea79cb18e9ac74d17e01102406f5ab3f067f974466f08c8e87ec13b38dec4d08b42fffa8f2ec415b550291482688ff5541bc826747b523b4e4608b4b7c252132b55b7b9d0e1ae1a2f0cd3ee1fcd80853a55e9e51e62b0f13c4e8a9f68790ff2c03801d4e89fe642d3da1187be6776c334682f80b12b06f4443ea6194159dd2765af6530991aa020a3fadcceceed88472ee5ae92d8b25e874d2ffcfc503e533a7da68e47d33ef9532fe96227a53d2bacd87abc18cb66eeaf8fd78cdcc41a0cd3f2f550227ebe535c897f5350a2d236eea3a4fc9c27bf6136e14d752dbca2d4bf8b092b5b4bc67d99d0dd780fa03eb6da0a9b58d2715289afb2751aafc158ed9671dc690aa29940bc3693bb658f62d01eb9d5c8013f0f7c6836953720226e9372e9decb7aeea50b00010976c8da8517fc2055be588fd5785d824fa6f1fa80858fef2d5364379c1d879a35498c16fa578601adc119cfcc1fd44b599311afbda8e2cd8a3a7e3edd2a7e2ba4dd68804d76eb01f9cfa3459b342fea13781418cf054a2bd4f29c19cb346ffb954869a937c1def3e6d1204332e0d4db20ea78cb20097596225a6962856e95c8baeb5a3318d52ba9db578c401368982310e7c91136696c1f2436a4f78f4e276a191d97b8ee55613f9ed77251556320acb574c3aa99e59afae1d0a7a1987cab99aad594643c4e615ba2254f5df19c02a5fc38965b2cbacbb65fc98c11e4daf1620a0ea4a3e4fba65b076696797922248f1594ed93334b230747a2fe7764b5d181a80b88e9e0d9e945ca09a8f30d58eb858dbae3432c102e94c07c2f50dc8b1ac24566178c86b1b03fb680f6d2f7b9b7ead39ddc878825ec2066847aac7cdff133e9dbf089c3ab1fd4d2c431e0c236d7a821c1b849428ed85d6322f4a87ac84a809c784727c2c9c187c5f63182cebf2e3de5c7c58a58a0e68d85328620676ec6fa3b8a31a485a2f0c3604fe7b8efb3220918a79c8cb22bb810e8a37273183e6a8ed498b4b77c1bc93bd3700e153faa643e5675283438e74e503ea1d741ceec9c675c6302557c00d1155a404343b97a8d3016b403baf0fc631165b0f9d6e174a8d8a71ea93bd9b6bf6150ef27e0601ee982d3f791fb50d55c30119b993411f3b3ee1fd1958a2fb37392acae9b67b6f1695094301a4ce9181e8ee3398151a6f660b3413a768c06c154feb4186e95e9a466d5a094e8119c996b8e80da0de8c316f3e98d0493ac2de9f7777726963543ed5db54d8b8150b878b7058de301a90d5c6c8e645a5b58225b554e46d1baa129d07fb802ac19222c35277da335e8c448eb12d76f631e69b794d1354d93863adfbdd7a302e1fa01915bc6b846a852d37d35af8905cf8abd3f7e3a6d86ef1820b23f0133447a65e9e3be4dd7d383432b9def92f88631bfaf51d6fd93e7cd65bcce059c9f48af7f4549935969f245fb9f130067cfdec326c5352e9319163f969f885b7cb55440410bab4f88ba709e89ab90b7cea044c763c6a5c69f360195af3db66320fcc72600183b674ed7198741027f7308a0accb6e436e7cab6a9a7a5d7525d9de6e848656543ee9fdb91d49432ec3d384bfc272af44805e76072ac44299e46a1352dab237b734d60bb96943984506f57d7140e05e4ffa95c7724d8b9699583f90b5bb626986de95b3e45047b069bde8a54c8a7e5f4422be915f1725083a678c0bba33906629c7d59850d24af8e37229a43c00a0e5f9ec7500681d31adaa010ccbc0035c9b7dee730fe1147d058bf97bcec87c36e5fef1dd7bc9be9400eb9361aefbd61187519a94bdf2496331052da4d0c875381ebafb3473b67b59e498c5d4d0ebca840790a6ab5623c8b8fc8594f92b12caff215826e8e1c61cdb2322bf938683aa9059cb372bc22007652a1e99e8b81b8bf1d6ed21de04a37dbdcde5d047e280736447a1f31223a3cfc480d6432ddcfe4e055e447ee7222351cec5d637a37cbcdd56444d5b8db09399294f8fab9c03fd06301fd3ef7c60210e1fdb868ddb688db429ef80b3e62c63006f246e9a70adfe90c845cbdae7e907c11ac7ed4b150cc19eb07b3909c932e5ef74f64fab23eed4e93f9f52171c7291ca58b364d0139082f737cfd5ed2220e6a58b5e11157b4c0fd26c0665500524f002bfb5512d86f78ae2f4c491d80986d4ff17758ea54cb7b7de5d24865feda0338454190d8c9bda6ffacbffc0a6de39128dec20d302c30841e65f485447343649927fb9bdb68c0c12e276abe7004792db90e6d1071a630eec32ea9f5e14c39fa3f1bdbc740cf061927134ce84ed20565f4c51fcb194e204e3a3d02d0e5da6f8b0600b7f8361a3e50f197c54cd90aae892f1acd44daf3cca17c8337bf2d4f686799c7e6ea79eb6d1b6f0d59b74a01deaa2c7a76895d270344ec63129a8e44ca759cf5f2d0ffe74496b6853dd3bdb2aa61aa2343f531c3221c6d3828117a364c87c62593a9a13675889f40c161043ac277b0aae65b1e60c37b8bcde4d8e5042cabc183fce67f0721294d357ceae85dec4b63765746e5de685c4de3641a3973378b16518041be0a57337f8f524fe2001b16c242d5c0a4e147ef14af203514aa641067667acff2f49e5d3d2c47ee03ac0a6d569f3f73964f1ab10658661b7eb6fad1c2a98fbc4dfe958600201e3be01273af856fbcfdf0d30374b97da4d361074a11ee9b3c3a10679b28d530cffa2682c732e76baed3105d861193ae84e84df1f4430acbb38362ed8ce61258c88a03728759bc9ffb0edca086b618eed5d1162dc86e2d5f0c0ffa5893432d4500dea2fd1ef369e9a3f5899360fba53847a0545523d31b91c0454af0fed7d1dcd819d46157879c7da72b94f10b3a72f7f175b36bf1b085307c5e2b01349500b1d1fc6980576f93633dcb9cb950d4878cb495b552311fe11b3b32fc5ea7ea0a910a79de6034dee8f759dd81ae0b5c55cb5c13d5540e3d36cab72645dbeadd6ef9952cbdab113b0f6985ecabd782cfcc7ea26eea9a883dfac52988cbd2c967539c9ba18430d26ea63b02ace200ca5b99e1f1a25cb7ad0f642a54ecd59f75a803e04a8001605807bec643ed97383757d0240676e61e61a57b2be4781b24c2c426619d1ca2d1565213b5b45da651e765a6ed530faca7b41a838e1f277946727e9a6de909e4bfb0d15c87cdc6f66452fa1dd34322f30ed13f3f2be35e116e94d9c687449ec8866aabbe117bca5b4af0a358e43c350f746e471372f182eb08ef60f9e5b58f30292af795fad4553923eddd301f7fcffadcdc9bd9e2904882077ddbd6f238151ace470be33e24443ad3ed4f06fbcd97a5af9c1ce2937af4f05ffa843acc8f3500406e2bbdac39ec6b80e4b232dfeaad3639874684ad18d7988a801beac7e52d056ccb3a646814929416f5cb71a7dfc86129870842ef14a2290433545ee8411a25e4d053b769d8f67ec3692fa32619e47415e1468e293771f0cffb887f6ac949695f846711fc1481427bb7bdb09e5185f3f40b4fe8c293a032f057b19e3dd2e8f7376046cf3f5bb74475920c11494be56ba219be23320aca22f033f82282c5eae6e9c3b40ca72407ceac122e51d45a85b15faf9b62891384af5bd8805c10d25dec99f46c787a0912915fe8874ddfc1fbcf508eab7de7e0bb0444e62cadf26e92618bad30795647fb7091a0ac457ed900d8fdab375502cac419c06375c0e7adc091ab404c40a8976f2889f968c3bb0c0720d1dad4caa30b770f66d8a8dbe15d15f806472dd0365661305347776111a3e7b09e02e4f228d6f772d679206886fd50e44fe1ee6f96f7b26a3ee88adaf25a6e5e16e9d16204ac04b32f683eb9b27d62f85b88fd7eb4cf49a25dc9a56d43d4cd7a538a575f3b10dc3696fa46b8f3d3a714a56d341e502843e706fbe990dbca462b50013d14e7841d8fb61b67900c5dbe93cb6b16ae7ea7452b5555592007218c236d0061edb5d93a2a3bb679ad730f0d2a0f8704b424062947aa2c35b209baadf4efd9069f68ca54cf56315e60d27d7258d6fd93527f166ec02716f07e9424942b7d18ad6955ed9ce33cfdf14389a9c0242ce965239e1a413a33bce35652155732a4a7eeabe6f19627a72fff0d2aa5f0b53f6d22ebe56a007bf9c23c745eb1f846548c30e3182fd32a5330b2cffc063885e07979528c6c8154eabcce93caa84fe1622d1ed2fc81fc2d827568c97a2b6a10051b4b891ed88d8a372fc2a31b212a91042c36a2397c538c7950eaddd1474f5d4959597bfb4f530857a64e83c86ff3b458cce97b88e2f00e01ca6161654cdb286baa2508d646bf5287daf2c2bea46668dded103f377b69bde68ea0784c976e50cbf1db813736012b45e4dc10dfe417b2f793b4bba72cadd87bec867dd1768adef0106d91f924adc1d58074017e94de456ffe7109ce6b3bae15dd9de5f37ba32704083b80cd7d38b0bc663930e4516a29f151f861b6fa06db8c2436f8e39cfb8e56a6f8d1b635cb2b47aa6749cfbf8c278dd06231fcf6a266bd7c9e398a27aeded7ca9e0b8b429f8905321469ee1f024637a271e5523893d80ad242d1008457999e34997e7961683a493bb36066bdc260472de362fdfed90ad88fc65816c7024f64e38cf17e2d7ed7a9ee3ae0502727a5fafe6fee57f21c060ffd6b72cd1447ca09085a0aef85c2b982045434383b69e6ef432bc54e6ffba49ea85a3dddd2bedd0d853b6ff3447ed771794a47a0ff4bacaad04996e3267015f5e5963e2fab42b517ff25af0546ae53db52b0d67b4ef46b14ba918ead0c58908a59bc9d635e92d1727dc82376bc7a3e6673e45bb24f3c92f97df4ab549578c85595cda44b6655408b9ad029e8d9d2837e7feff9a2c30be689bb159e16459fa353c5aa4a6e689d357444543ed4c466ead1d168df9c1d7f50d77bc08e458eb4c9066c0130867854e7640d83ca05df7952d37f55ef646ee7475d0a8dcbc6ffdb76f32ec7de022b416e350c01a91b5c47193b6e3330b31eedf1765d397093c3fbc623b3914c85778a7be54c8dba0a28f3a28475a274b5795f90e30e76df3a6d4562a2895d98656be5e415d1d531981d41926d965ded8c077bf347e4290e5d189a0b042c96bc2dacd6648d209b98e28c8c22793e76d8cbb7b07babe76d6330d7e312db0871761bcab16fb66985f2d711ba6d709c034efbdb37acfa0fc435fe70be1642a0edf3a36240a91e324dccbbba1d25dc04b83e19f2f46e86794abca57009d255b00cf2ea123b5af8961978a67e8f698d660e15163f7ff1812eeda015833debb67110d54b3afe3f991d3632030428fc16cf010e56394f72857fd83ed4259fdc0ae4d7ecd68c2434fc13826b11b75ff64dff804a32c35f6c0decadfe7da5a8157a2aa787cc75f1743f813b0165308a95cf0f10cf7635cc4ef99a3d303c6c456733f8eead244ab5ca24a607bc66ebe76a79254a23e33935550e63c63754a0b8a5e60ce5610a4b9561910d5b0ad04cc86ef0353507ae75f6247463fee29912492c48c1ff055a7861f2102da38c32f9750a1adc99c0ff03778a362c6640f67c0c9893a3a61d293362c05095d3b3707be729a33cd1d673c01e11c676a861e9106ca00424aaf33db04705a2b23865413b6ecb7afabaaf9b61ba37766e080802563c6d5b5154d2903aa59f7d1db250b1c3dd50513bcd647b6358b2ff8820586858822b5ea52461d145a23bfa7ab668a159e50a20bc70530cc2e881feee7358532740eb56e1886ce250cbb858edc2b542e29514a2f51a60ba8329a97274942c93a3e2018ffa24d45b982c43791418919e194e9ad650d89fe613aaed4021dfb4079e2a46dd167c9c06992071649ee62c0f1987147f6b3820656def62af4911792746ab7b12990c2961627cbac1674d32c62d3bd4a56cced1ff140375ec36388a7ce8372d893d31741fb903c9602ccb2745ffe07b1269b72df1e3f6c6875fbd5622fdda069e4659b2a7094f75b2c70545e50535a5d6d7d80a6ba22781f52f91414c86307934b9692e932a8dbe4e05095351514b01c416c93b1372489a0c63b62bc0be3d112da9595533efcaae6e015f3a099fa3b5f2fe93fa8108813d89eaaf0557182079f5955bd7088aaae86f19a4eae1c039963d89cddbc1b928af8d6793ec7f8a2d87f8d6257d49bfb48e556c78597f53cc21c382a4fed452e8f81c33c24cb930601a28182cd061e7ad4f44ebf070e0c4d3d26751e7732ec44c359df68a021b3927c478e6dbfc6ec198a608fae9e7d3aae36c50c82c62399c148a5dd43577ce22f768634c2e66c41551c88e9fdd287c69706b6a0c9341d151c2bf0c203d47914c3312657e203a6828e84b69461f9ed329339ce388c6a5c75e3dec3ea7b41434d34a258197e5f696fb2c564e0d9ff42320a63caff342715f2a8cd5eb8921c71ec02215ba65e3383c620af498a796288b2253a7056200f9d1c3f088efa244a0c887276c9946cc597ce2a45ac4cdc179808feebae16cfe93cb6cf2218b80993b40d89fbead1368612e6862f7f63d04b7498478aa80655f4eedf31de4e2ec8bc4a7b71aae071fde885bc74595734c9fab8263ded2e69905fc4cdf86997d06a66db3f212a8ba3f9219c30e4860250459da9aabd6875ba9e4b2ef66539fc7e838792edb217361eee6c058aa993a1ad7361d541df186e9e878c9553fdd2892e441f275565bef9971768ac155f5aa05dfad324a3215e5e0d716d2ee33310991488e8af93bada7821a9592d8de6ea6bcad6abb65e3e8d753a404b09d91f7c1dcb95ff1c1035cf342912e2b2cb8679bb8ad12ae66bfd9b199bf8fcf3d610fae6f1c135ce7c4f66f8231509d805b936e9812a1d06151c2c4cc8290be187266ddaa0b8ce816845c8def76f2e94a7c358e9e5941593dd765a44de30ddf7134d89ed2e266f713d2acbeba79d3ec350a04db305ac97235483c6f3e37f3b1fc631dc48f55339a31ba3da4197b740c9f0357e958e6340359ab4859060a0a44618216636c9839b8db00f12bc4818c321c18900845fbc4bc0ebef3b1d100aa9bbc21fb365b198c9a0eb2823678068220f11ae491c881a4348aea24030ecfd0a120ff37cb2ec86726dcffaac977b0bd539a45f03ad89e3474598e13b5ef3a94e50fed05491fef242bea702d380622e895444ac58b0e94623cdb908ad7ec3120c5048e0318499b3acff25e2ff2eed46405533652232a30a9fcc349984e40edb2fbe9de5b812c95165642c56fe1fd069cdade2459288ccf9f5199b7e4a56b264950a191432c2de9cb2e3c5f3a4e82b6e56e2ec15720bbec38b93906283bae5bec247f37d7991300da79d416304bd3ae271243990d69e240120d53657b459224d5f2cd3ba4bd8b478efa15c33e8fcaa4780c4f408abc4e74783de92e7e7c6196d35347ae666fa66ac2b69c36627644635ac13841ed7af15e00bad35d89c7abb8af159dddc5b9561af95d1b9e089ba1075d4a1ae141f0e2d8d7ee3e546b6ac30974f8f4c119f9f4651befd82e341b474e3d07c3b12070db1a304029f2659a4013d42466378354bda358fa2b25b4251fefcf9136f400ecbaae63f7e6fb68437c0e211c7d08e15a50e9ea4a03130fdd160a4c3c29cb639c00f0b9a79fd0c20a18997edfbcc86b743214c2ba627ef8f69ea3c6c0863d4370551ceaaacf70c14976794950167f02694a625770dccf6bc02a31f110ed086f3902f4bf77c5d4fdcf3e73e25775207272659a2bcd1c91c657b5356d453144c1f775ea83bf25934bbada2b4f3934da4131b3c4b1e160fb7bff3cee4684d7d15438c1e6087166d78690f91e638ba62cce614873a851f8d53b653f0e69569aa227391b9481fa54a8ba2910a362be8dd5bc5e9c9a2332caa4a69a448c1b4ce9c7d2645e427f658f7e598bd4fd51bca38a13550bfac890d126e945547edf00675642c58856bc320b2b8215c188622714847b8d561401029a24d9417d063a876b18973f3b4b942d8f0d8bd396e52ff602d77b5521b81ecac58e6d7e4e4f40057e109cc63d414bc9369b4db5d742bfb100a0b4e27318bff38aecab735d98f6d2dfcb7934f81f87fcf034ecca4ab0726598fd64013875e4eb311a65e2c552d4bb02859127fa459cf9024e0c5a7a836265c5dac57ec2538d0a99575befa04dff1c0c16aa1176c98f9482e2bec837ccce6b798903074447cac4b2a6abde92f20f7a59bbd8a3c248f1a1dc3d91e714d99a32192de09d56499423037a94d63e9270caf7a5cfe4d74aee1b50118019e8cb049afcf448f074a2e58024b3f319cec0a931285e7c8ad42f416571dac6354e3e0ba2ef26687c7f62d77a45f1151c6fc22d0de4f51fa37cb1dd93a799c5c425f632f8b3f9fdf43a69c582a62fb1a8d2077542550b4b35b3f37c47aed8766610aa9e9f7e3f0a54cefeba6c1db4241cadba7d80589b674104256b32150130c6f6d5aa4576e010c846fca9e9934d5851385a00b803a4ba7a1eaf3825c002a67c839f7f293925830614842ee587e2d47bb167eb651997072152f73020674a70a6a6ca4a1958d117958a4ae155894ff09dd822f86b989c3f9f17afb8a7140884c211be13ecd70d1c4b626e7a2dc09526ac73566a1b2ca5e6f687b4f55aa9c561a1bc975b0baf2307a337e146bc6559fab7cb344dc6b94c188bdf826296584defca6351fb134d06db730a60b20946b0f6ad2e44bfa3d58c569103332fbe29e037c603f5f15110ae1b51bdfbe7594440ac4b6b5b1f144a3f8c49f70b92a677bc8c1b61e114dfce42671f9b31cb56d5adc3f359ae2c5a9970ed2167a3697273f4bfbe831ed4785016f962ce93cb18825a7fef50ea6bae72829f16208ed22aa09473cc34c284b5d16ea16ce801559a6a73467ead62632a3e1e53f094a09244551ab72a8464e31d8321fcd05b71def6be4f13cd534d806995f739805bbf7b423e3a6daa46a4c0d30afdef840146d934431fdf90250fb7e5c85e029bad3f28a6dcf633bc91bb09dbfe03c191943a0340d3e864888d98300658a3c25fe8d7b26a0007c9a840249fce6e773f9237d9dc27dcd8d59af8d1968e7c46fe4a10204c57548c2482724cabc658b1dd11eb8346acdfdf58a25818d29da0fd2eb14aa2cf91d219c4af0a5b6b7a32cfb6751b0d86a0f2a06f32a1c949b3e1847b7f607bbafb4a0ae00d30049c33642cd04e11e036b33fb09ad34ce1f9419141868c408b250ee1268514ce6dfcfdcbac1fd47eb9e6b78321d73ed6a4ef30b9b47d567d35a51b8d9dcc601324999938d720caf6ef60a59066cf1c4260ff4892bdd8c6ccb130199a47ac47f41dd11aefbf024d714cea19cb7dd9ad9332c5f70bac687789ec7251284019cfa6d146cf29c3b8c9cc72ef5cae701c8953ea42004723abff30f726b0aaca768725592ff3920f78f146dae7834722775210f2aca91ccc8504e30862a568898b44b1a6b1fecb006c9a03566f96b76d02e0d94c38bd94d7d51feb0eedfafe0377a24cc947d7e949ab4f8d2dd84bb59448c9c5a2fb2b6f517d382fcd0f58db7d61983d4154fdf4efb7c94dc5b74209fe8bc36c5d3586a042d88ebe8e6f9ac31ce0178f645de2691414a816d72f611144b77f6cd48885cca3c3944c66e39c4e5f47dd93d3a0f0b98fb58b9b3af6623f93d0f7e58904ccce1fa0a3acfe5f7f66e3652259fdf070c85b6221f43d5d7898580a3bfd7603a236a6fac55bfb5c05cd7c61da3bb40e686ece3fc21e8ede3f3640cbd05e683bedc5cdc415f5e8552a959bb07a53d2f0b8f9a31e1077afea51c88347bcb36a8ad3f20647a3bdbd489ea5026a1a00eeab55aad94d5a4606ff0c0d8985032e47557c689e36741aea53763bce64de651eec0c3358fea6316f444e5dd0e75d0510892b868f99ed14f9d5ff65cae23deacf328e3f6e81f4c467384920339657f0bc9181dd2662e6dbc0b04e8619bfa8b9a84a93ea1aeca4f1c622bf547260c8add7d703b674ecb3412392d1d82a5b7d427da3b94528e90d8b055a6d0b15f4f57d3897318a8fc7bc3b5e64f1e400c409b754887ad415c4d5c91698a7ea967f1aa4d2205187a6748163ec47830bc8c988917d61dd0fd3f61dcad0e1b9ace61c52ec90d9d112e4059679f5b89e01bd03a909b274f3e449c47a0be5c2db9d349d22234288973f20c7badd4ec23b4c63fa30a04cd5e833b9a95ef268e034201190ea9895c4c35b635a1d170c60d7c90bf2c0978c767a51dfb0ef47ee23b12adb9f85a227999a6338f2ce509f733e28ab0f8878ea91ed86f4ec33b52b0129c47e9d5d199eaaef8acf93a7d689eb896b00d2ff8b7cd3388f75ac214e3598b08c83d5f0dbd47521b7f08a219c9c00496b0b1966626bfeeb1cbe29670445b6b6346b888f491a770804be7933b7c8aad053d335bb4e76fb865373c4ac3113f7fa0260a0b3c77b4c684046aed2e27fafa9237dbc7ee787835d4bbe0dac10bf88484f33fede3f2225616ee7a792fba4eb202eb21243875ad8d8925631b54147545108acf75d9ebe0f184481f6c9840cbb0f9c56f474cf2c3de5a85c852349928cfb3025e1a45606fa4cad77ddbf238d9f0ce98f68612286219d82044bd11007e6f15c7cbc40db3f73dd488564a922a08956641be199250b30d00810ead161b5f84c3550677c26df8343e65dc0a7ef9164f7b1f47d534662b3d8961931996d0e8fbafa8ee2ec35322cf80f213d8d9d42c8cc484caf433128034e7fae643d482de39dfb548d10891d5c417e9c14e96276f25ff3cdafc95cf4ea86853927b16baf0c421f1b6d0ea6e8755ba15edabd17b669b8543791e97c6d3d8b63bd83a9301d215e5f35dd6b961aae1e1a996751bbbfeb9e5c3ed5ba0e6e0508445fa56359e2c8d849a13f406766da3840d370b8f0868918d5c7cc71d038071648c105a58ad64aef7e248907a8a781d49f6c2f1b7cc5123cda6d371844bd8326062d1c20ca5550a234bbc2b5f0ee3e0e73efc833ca1b33e65a56dd5e34ec6f36058ed7de06e9e390b456da16579ec9e931335e3267c1e23a98591daf281c927c413c6d738e7e6c38ddeb5cd7fb953490ff4eec0585c50c55ad78a9c8f27d3723ad9646779632a7e69fd1f3cb7d703681375c69047bdf8cff05a4ebc423a17342ab6d174fb7a7e188816fbf2e81cf8c09e808c70f42cfe6d4ded1cc4e93081c3c953d67426beff6e91c3ce99232b8ccc055fac4a0fa4d59adcc64d83addcef1ce383917b49402d1de9e0b0740bbff310974ffbc93638e2ed538e2f570e05aabb25424afb0f5c9705748ae2980cfc73f8c6f13d32e644d6c1fdcf832463f24d0521dfe7a16b7b6be48f0deb02c210b44772730339c8872458b48d757fae287984abd7bc352e6eaa5e980813e6fed3910cbacf046fe7c40efdc61d23f0a73ac4398cf52ab0ef2f13bcc7531633d6ee6786ac6030d579315bc3cdc5b306de276951ae6537b2d2f09f7f16120de8e65816eb3706efcb642bc9da9c748a8a0e28e6ecf0455672d55f8341869448aaf9926c156579e1d8ba44b71ce0168619b6973b07623ec1553007a9420c7d652575179e1d25f4c436df697b693bd687e5d349fdfb0b0f974073134e3a64922c963dc90306e1e2f8d8c1c33959903111fd940bd356d0a03a576cb40a28cd0a1352809f5b0cd5f7d9e9f1bfd50a02fc4d45b52ed157f085d05ce17466380d26e3e4aafaa2a4da14032559d4490c77059b1767018157f7026ab6e401f804dd9ff7c0a2750140e9677f762707715774a42ea9f665508b08112cd08d814ef0e02379da9cd49d34aa408dfa50763ceb515014a6e435dcb7c6a03eedb52a535367fc0df5382fe24dc67844542f7045bae7befe95bd90fb147d074d04685ddbbb515c1199e2d24c3062db8a2557beb6d22fe54ee724008d0b04cb67c692f4102849fd48b28351c95977810a996f125a89870cd3e2453419d2cebf5e3da70437c1b895c2a6d0860000d80cbfe335bc5d22278ff74cd31ca86c0ac1aea5a4b4f1191551e311898fd290caffbfa5cdfec97b414a37b20be8a80ff066fe0f8286086591a321c8bd9233ba9235a102348721d2512d897b41f18b5ec5f1bbb5d552a52dc0041605345bffa192fe9cfcd820e232095ccd6854299cc3e95708bc880d39d80c5137c6f58264e42da66ad4e211e867d96b3190d54bb7b9a790209d33f3b74f73b713d3613d6722a5e8fef3cdbf14cb0610b3ae848b64cbf5092334388d36124c74c53957d3e03d7aa2f76a509af9b40143400bf5761d44d51c957063909072ce44487251d9f182be10740052bc0348e2356e62e7a57c5c229c300f1913c5fde9e71384482f31b75d97ddaf861d5666bd798e10cf22b937e7968a006b549bee81883f1fabbef17079d1f2586f2748a7acaa8ab39c1ae97355799f8da2ca1c6f9063034ffdf0c9ec3ecf51269c91b719a6c8e469a2e41ecf0c9278f1663f0d94733f4d37d87a590d8b7a65377f3ed671881d4b483453a69dc4da2b6462b5ac6b8fd1e7ab64f2264f9a6670e0222f7afd0a1fe1f0e555b7d7a54eef5e8363fb23fd4312da55836a94a94c018182dfb8de0b74fe7507054cf7ac2b2d8109d9688e4bf8ef518c92bf2d80f1e53ae8ed6530f83e0507eee58db5c7092721e5dd6674ed676f99f494065e5d93315ffe26e059e1806d732eac3fe3bab361fbbd56bd598c958aaa287118e8a6a2fd4e46d337bbf5e084c11c3cca39eb22949b949c4b7b1576fdde0b319403c6bba6c8f932d249591284ef29d4b7fe63b81418362e5587cd8afe944023c9c6d3ccdbab660a1c92ec0f7c582de8d120cee58727cac95f37bb40825aa2d618b386f516958013ef6b54ffd682ab13ae3a3e91c761717158dd6eaef5ac5f223403a4a94232249dee29f75ad7a7886471bc83aa4dd6a77651d178a4116d7928d91f8498992e42dd90a7bbfaf452290fc8265681bafbd042348343b6ed83052e2400c9bdccfce48e2c9af8b7507d445090797ebbee7dbdbec2707b6f997dffa7d7cfca0d538bd587aa5558e2048b2e2a83c2faf658a027a5dee8b484920ff59c031307109cb99bfef23114fb9d86ee5d6954b96db04da48935afc54c22c53be09009a58dd74a703ef52c8a9b5f141919337d1f20bf6440b494812cf3859c480c7decb53d903954ea35fde4dcf2bed6d38a4ff0ffc9ec06f7ed986c3ad41487890c8ef95ca9a5fee66e2903e2a4d2bc5dcabd9a79588b386b0fc30cc5d6b8d8251fdba06b6d95fd603c00353cb249528ca54016c41284e43a251fc9e1fd17c008aadd1be9a21581c84c282b85eee10e800aec781518d90feb4ae4f7d122d44569820398e049efd79924b826d4ef8569dccbd9d013c619ff3d0c860c39c59256f16a866776efe40cc6ac2f2c52886f3a268fec777a5c4d1c2ddbf605dba63b83746f2313075098f975a9f8ce956297397b41a32643bd3c8f1ca91634f9b28a71e8e8d71a4d9735c80d136d553230a14ddf8dc84bd5ed8706528b6622c92982a9b05af507253a593d201a6be5310db6b1dbb812c6a9e7e03ed4e64c19e52f9baa7118e7d6c3355e6f91083ef8d7e70efc2a2e0d1c9018401b7184647e47fc1753e11e72718d6289809d832f179a3362e7a6d1de52823bda1d929999c4f8be7b4e219776732e6bd12383406bee2cfffe0b8f3d23c4e1a7162c9c800f1c4e2bd3417c4820a286fca7660e7806a6806e5a0353dea78f3365841e5468a9c3d6fb6eee807bafc9cbf3c697e086ceffee132386ba58fcc438bc79dedf8a5384863a78061290b6fe61b858e3604966c6ccc9c041910f80e5f46d3ef84bf16e586596b9112b536a9904073814c2d6296ce8430cfc22de876dbde714eb21f1a2b2dc3f624938c36f6d8b451962cdd896213f6c3d32dd02f31410dea3564eb4a3787a63c3bfa02ca6c31ed28666324b1727f5dd76ee64e8b168d96151feb7900f171ad7c666609b96dc23d54f1230bb12d29c1250ebcfb9c21b0e6423f79702cccdd83d43e786ba091e59cd223c361b9f27eb65d8d41a7f0e90e7bbf37a71af91050862ebad51b5968a935fda83d21ac53bc78bc1d4d353b55ff1c5593f252aaba64c0e778a5904cdc51ca8d47af5b54ce784f85347c4148e451ec43af39fb82fd473bc70817304844d3e61e72dabc5a0e18458fc1abd3477dc43983144105b1f93b9c20f9dbcca12e5ae38f53a69a195c5a2d631c7f246e598d315355310b821f14133c5ca632bfb8c5b6f6619c95b27eccfba3abde7117c8d455693a1678624fbd985dfbb2c252d62599096e6ac90702516abb4773e3e1cd36c9416a604069ceb37d05143b20df4343762a38638d7a83a2ef04bf2e7f6f4243695fbc632a72be884844ee03ed530017307ecffcc49162ca05f1aec22dc2f301b98419d8a608e761e43bfdce95d51152b1b96251c0e9f4a9c0da1a26cf6382679b2f215939a542791f2884e72e020ad5cf8eb59dac0f2773b489c6155fcc1de3dde1cbe870fff19c7988eb9a60453638ffe220c5942a462e2c9a5f8d29b804d59200e9687076edad42450bb8630da944d339dfcef1938837b045ee540f60b1113c54a62307d20a2009eaaf160ef3507952fd6963cbc1cdbedc45db6edac5e561c573464259deb380584f8a0def262389188ed7506824f84588cb15a8a28660014fa4ca5818a4f8eac74d8afc7bb5f6db48457d098fd935253ac4891142e5de21c8f79bd84b3f7e9058545ec14c740e0951d2932456578708f1e7237bd9fe346759b42e9aa996293824fc724468aa77627b9e3fda8470d570394916ff645bb16a9f4e325a7e754bbb5bf356eda0c5536951202a8b8354f22f9461ed76604cb538b5801f3926ca818695d9d82901afdb54ce48cc37dc6cf3ed2cd44a007ccb67d10e48dd3a150b781c6ce78de847906b8e6174a5054b3a6ca6e060c88160cbaca923d4c4c66f042f916c7bb122751c2e35c189ddbf5e93342994c19a1f842c172ae9af832933907a1155e6764d66ad0e9c8c303c54a9e68e9ada6b09c60ec85f301db03a12eefaf157a310f8e982c871cabe49f2568062b5f0eb70b5a4ce42088b6070bf170917a63673d3e4f578dcd3faf0136e7a4d240f78ebf5f6ad3c9a34802169152f9f408e14ad1ef876094ad6196da5551a6fd190507efe4d18919d724856e80a36e6d3c36a844601f7e409734b10a6ceb6a83b16edb18300dfe7c41a900777656c27d851454612010498810767fd726d6e23f3d49532118543751832f8aa7530f647e194c8776673ae8759a7761f16818afee761e6d1624647ca1939944df98f5ce169e5a844a45f0afe65b0387cbbf4f36f7d264d5dbca13029e11f6e8e33f109ea278dae3d1833b246f5e89f568eaab774b08b90c4f5be0beae0ab0169ef90cfed1dd6396712ba42db148a51212807881134944590750627ef00f8c0cfec1760d66a58b99781c5dc9f9f772a41fb5f3e23a51858a893869629045c8d16257cd6431a8a35262c2ca52f2790b89f632251bf375b896a1e8fb12d6af4422d426d2c7577fac6e8dfdf45390a6fbd0d47d45f248032eb10fc2691d73e382caad251c2c0a4901a8333c06beb4933b1756f82ac3a399d676822c597ff89868aa40442dd9c799bf204b3ad4771f0dd3ede08cc9da42a2b37d75ee3e43e5159125ff17b2438e97ea4d891210e7f1aa3c23ced7d3c5f90496bb3a896e1c35dd86dc2c38424a2735199013c377aeef518d017a89bb7f2a52b67e9f755b93638dab7a74389cd8363cad0aa60a6476b4788aff95bc7e13237ba63f2d97ddaad0cfe00f38f97f467da775a0550a5b72f49c2d9b2f334b08f58afea1a3fec78b2686dcd7d11fbcf93ed51dc76c60c0fd1f4c77e6c49b8bdf5a8c55c193a450a55050197d1f05a7c6f556610187f5f181c0a3fff8a2d09c73ebfac6cf4ab0ecb510ff84ab2983a7a7e7186448327899f0165297360770b3032a546a23916d63a459f2dc8780f232de8a297d9f28e41f592749325af89c47e15828cd9830d019af053bc643d310b5e903f64c5af2a026f0ee5f613fcf4aadcccd65ac25106be738e404c68d2148cb9bf9f9112d04965e7fbcede71b12128968bed4f602c76c80f37a1db8f8e250e4e5c08ae5c4592973959fdf224112c77a0145fd98a1d8358fe5407af8be7bb6211b2731f573ba13dc7d61cf048f75b87108bcf876d76bba39229f03980dc3e2d5acb7a1a47c6e8d0f623e63aab6ce22ba0d244c207e68fc96461f73c873018166659e1ae87e12400af4b95ac4f09c7ad2d80b8fcaddf89e3cdb8170b2c750501d42c866503be0111df2040efec262fc83a5ac7a7865178366eb0abe3f1e48f67283ebae1bd60cd99f7badd406be368326e69a0290dab0c2fa9512093c90db5874b4640764b914e2b6c0211bc6cf3631e119995529233a2e925038c189d4b0a4e09e776a457181bac384d0856c144827d93e7efe9bab029824e6d9be2cb12e5c192636f0a1e4e0738570b0499f170ea700627e921fb5c734ed26e8652a10a5241f9e8f25af2f8884f4b8356c3b6ffc5059f4dedfb212e51722521ff97e6f7e409b866b898b87b2704999eee5a7f791541395685e8cc6b4bf2feec4ca55277ab622af74cf46b5453984ac6bf75ef49048ad1b08d38ef95e186d8ae05ef1288cc3a10d8705a97ea3eba6bcf98ef5c72e6b40b439a47539b91f772eb16e745e69e370df3eaf6dead921a8df73b86510c4a4cacf8a9a112601fb24f1411a7813540fc2af614ae778416a145f1c95c0c9cc6381ee48bc81c94d6a737dce6094efbf6eb52fca1d5aa89aaeaad00d2b700337493efee97a7b5d9c037b49b9289a969e9c7d7c56143551c290de12799db54623442521a9d36f53b0a1296c5539183f9f24feb80021f6a3d0cd783636ad663fd36f89c4f274747f50d8e706b769940d5a27d282213c26e3ef0e138f701a93aac6458c8c07ef9ea85c5e118d2d64d3913ad07094dc857fcbf4dd829ca65af1e4e9942f4d802e1731a94062b1693343ac0589b6fcc45dc4000054083d3bc64032cd8c7e2bcc2714942a8dc86e09cc604bab4a01c9b6e917d7994f4f796f79c15fbe3dc785b75eb28f66d4bce2a1db0cc599d6d3b7c7dfd88d0143d3bb15b1733afe4a5400e33989feecab2e913dcfabaeedc82d623e80d4a135413867444dd6f1d0521e8c992df924a1ffe83c41e396c08f1cd5fef4e074147aac21895aa388f6e3209c3de0c61b885440f8a63ad6370913ef1282e7b81ff47617eb0e5442e8f6167054749c5021dbf0405b31af301cdb9be43eaf9adccaaf5c9f01424544f1d5e2d9c8d921fa4a24fc415f32a6a5f7bb16e90429fc1c37bb3580d8dd56b671c573deed540beed78b057540611c605e6320c9d2f96df3c3f3663a16833ca02227d6aeeffd7cf8aa9b13fbaebb98d6f6fdde826960acd00d9a259387627110af9c040a8126acbf18f00c63f65c717ebeb5fde53bef40f6fbefc94e98c5872b82126012ab9b7fec45bfeb39f7ce41af22273ad8cd4c16ebb77e4148f0447a0014de5e5d1c0e08fbd8fe69da1fa2944ce51a45155698c8cff22a6c6b53b791615e25ed8119ca4d4058445fc6aef92853fa9ef13ffefe4a331f2972f5111b88a0c7bdd0238e13221e2e5be8d642e810efdcd2a66ff3f2aa26fabc894dd6c5b99fb6728e86dc98b70893224bbb6cd512056583fd14d157225f427fef924b5a6fe8629e6eaeab47088193fdbf73ca90131ec5535806a92011f79d303924c5935efe1f7ce6e4aa2e47aa4b2945815dfe10d7cc50d3296ba551cc232497a29497761903caffd10bb3ca76f8852da9e545cf0ef1d6d9c53f4bb788659d0db1c7a3d5a95173a1aafc7c09c9e90be13ce2fc8b680c51589818d7af9f9716ccbe066568ec4daabaabbb6db80aeeed04a3d5a4eb3809a32383c358996c0395083c08a3aebc68b3c25b31adcda589ac6284204dec2866c71d13b80d9713082eccfafe6c8d8016662e843a844e7aedf6786a021319e1481eded94662f3f63b11eca96801346f959e46813bbacd480dc9e0a27e8e0967f10ea8497c3899ebe40af38f0e13bd3f486bc1ff3d1308c6e065e959f548a32d7c75cc507d81a2b493c20338a965faaa8c5ca61af0c73e751a4d6b002a40256c14648a613c8d04058c8cbdfd1b094d9621f578bfdb12b760c52ff82cadc9bf2c7a2e637371c6ebae09a52679444f63fc654642992ac4935257f6af99642796760e3a3ffb83f322afb795a7788ecc05f6c56d20a130ba3d90cee6c2912e1f3080985e8e88603124ffac59cee44457fa7dfcc50636c7f35905139941e29090f8035fbb394031b80c8c8ef448c826f46044090216a0bdef65585496d913acdfcf366270712c39fc54a21fc9ebca79002cf8b31ab1ea4a335491cdf9a40d283b22fb9e41e494d8bead59a0616dda651d366f772db1c736c8996120f3ce6e4488d35627d7ea3bb3f2eb170bb8291285f780af6c959ab5f7b53e3bbc0a203467a06f31d32caba6e00102d64dcc904d5ebcdc296e1896dfd37cf57b82d5afd3d3c780644ba71182876e76d14bfca2e502b5970a0185e6330a8b2aaad667d41bcf5f1c851bc2a508b2c0dc1aece9d7926d7e44d6802fa2021fe5ed00cd05d729ed11c0e07553bff6814933ee806236078ac2d7ab6e42468420aa12fdfa179cfea3e304cd095947a3d008db9c779e0dfaced9e5a2c398c8d64c2017e5065c256a971f61d1d01bd35fc2ae940e5cc30d8d3dd1ee98831d65336c2a6a56c7c33583cdfe0506e138b2c98add8b26abac1b0aa46eb3ed72d84261ec6c2565399b875b6c42cf15ab5afd9b809c8244f8f62e166f585ee0b44a5de09319626f5446449b19f170688ca1084b2a3e721fdad2235833bb1fed5c2587bae8aff5d4859f62b95b423f092a6f3ec27424402d20ac0e2cd6e7c9870a32078b4f99bd9c587b2d517896c9b3a90f7a8b2936fdcaab065d4de6660ba121c04ab78ce779de8d386d3f4690bf8a747e0ad8ea7b8d3013dbab8ee006c82321382d45cfb4efe5c12820a88e48b6a927a30df8c70f4c4f4603eb7c09e80e131a2534b1e955d8286729ac3ff4d7026214f94a37f47d693ec62fbe1f1a69ec93298fe6d4c57c0db05f1c3f9503bc6a4d6dd1bcdeb69d89a829a81be8aff4129c1f737c4c31e659ef2e456e4f508cba887b1455e0775b4ffaff836802097ce45b97716fa056e8b938e72c6f7c355a0845b4dd9f5f6f06bee487bf5cd2cdf0c475102151f62ebd4cc5217a7d6d384109017a491ebc9c1e0fc43bbf92c844db6057536e5d223e1e5d8582205ed8a3d630384a09767ecb5fd385460216bfcd9116fb3e6114a6bbe95bb4c360bb053e941a88c9dccfea5fc6ea3eaa879a26580a00fd5997154e392af8b46cdf8bb763aac12dcebe49dc2aaea18cae51db0f1c5d996d30a69cf459642d824b0684ad4a1fc53144f52cdb23709ecf6fd6538072bf86552a6fd2d82a282374380e7baf2d7fc597482fe9747ffadb1f1e9649246bcd57be811b80065b438a1b231da27f4550a6cadb1d59eadc3ff01db36b7343885d84f84a156a7d270c3766b89b4418adb4a78e8fb20237227f12f5487a17db517ef6df2e14f96029ba75a4ba67feaecedf0227ff6b0112c325939af107ff09d089de5171025daab9fb0391375b04b2d5190c9b82bd858dad09b71461d8042d47017dec1a084c2be0ba127043c4e60fc9282ecef9535132853e2a8a289b8d0cf6c71e103b73cdf1a1073f12b11692d21805bb0e0264f518eeee3d16c477e59489fd8b0feb1fdb8ab052987ec60e02268ae6d698543fc8bba393e6806dd1713a3ace1b3919cecef79e32d9fcb68795ecaf35e63d243a009b8b05d190ae4ba79d1bde454e9ba05aa89c9453522bf45cbe8eacc56d6f334c01934f671e489da6e43ff69dc14034f7bd2790ec7d5ca5957bc71013f4115257ec9880b922a0fc6836724a69dcea0da3138d90f70df46d3b9892db78117dcf66330d58929534b9789f5df06866971992f2f745c4707c22f83bc05ee9a6371c6f823266e3ffc2771c0e86bcf616788fd3ba2f7c1a0e422f3714aa3cfbe0c72906362ed7e85f61f0e40a005c56793ac6cf7c2b48913e61e9e45a5f7a323956e4c936f7c943ae5c79e73156debdd9cd7825aa922c968dec0f4890eb3d5e5666ad75f548d71dd5f43f8c2796a51e915b824eb095a42d355ea941456cf06b8825faeed17bb2b3229cd12c3d543edda6a326291d59cd412a9cedc2ea90635d1d7b978deca07245c3d32d8877546898bdedb283649c87c65d27421a61d58eeca48d96218a3538f0e2f5542f10644c098d87ec695cee6e5679237353c118795616594482ef6ea8e158aabc90d50130a95da9a3bf0129e894791483e324b9ab6482db3afb2d7f6d8b9b7be23ec4c0bd87c41e05d81e3c060e8fa2adde70a5c6b85c47192ffbf09f1c02fab5176558ac10291b8caeab2be23e00a34a3c8d3ddcf00de00fa3ce795f00b97a3fe2fa570c08466bda9f9252d1b69f712d901d4f08644c50469b0ef74df16cb6d2ef23fa37dbc593c3f72a94880aeac4595ba38ac4e935c16169f11609cdabfe23bfeb78cad7c01ba4ecbdd6d6d14d49e22c89feca4cf1842f64c3a7c55d383702702cb997c0d0b6b4d03999d5e5db5c7b6181ccf7be2008997e276c9902db49835e824b90bfad2bb64f9590042cf99ba784eef38fe93fa60cb4393b2c45b2971dd8bd8e3fc6036c944f44b5f18ba7b47d744304e64083b2f21210c818096aa2207ae478f0f1a64e7c64064a92502f7932f7a13fdd75285d430ce52e72409056b9ac2443bcd424d1c6012b76eb18fa194c3976f7469d0fd1db5a6e8782cadf91d5d7132e74504f5a2630fdc6757c62c96009265a6133dbd51760c072c0416139d21e4c599dca3476815331eece765f3b8151bc9c9d0b4faa8044860e073af9a65453cdadb233151908cef3d7cd876e170da6103d9be1298ce42d604d3963093837fc97438ca62a4f265b9bf394424f6030557af1654601864c0ec9f296445d419ffdbb2c29674829846671c697ca5f90eb1f21b81a3468c7fe43e0d6cc7b021dbd94bdb8f7518dd402e0facf62899630036343663b1b3cc27e84dc10549695e94ca0f373794cc9bdd994bcfeff873d89d4dd619c7d72570d9a0cd9cc74672caa13f7da5588e28a6167612ae05e3e4167c8af1acfb3a4f43061be88a65bc739074b90b1a12aaf314c6e187de0ff650a88a1e0738134e03b292046ab9f79b52c61279b5528c2416947ac0766986b9c82986f12de16667a07956e721517ab64b6a967e4f1f6d8eb76ff61c59ed0a1e198d82075c4e0f6567329e33fc534c3453d4acd7728363381cffb15b1a14dbfdd943683706786d6173b9ab1aa6adb49dba89163ed1d5a0af1320543dfd2a602d9ce0733190e2a37743493239c19258735f5f2b060fc1574a0a3e3eb14f6fa41b995cb2d5460a1998081bdb11f201c456e45c535d7cb344c40ff00378d68dd40286da88dadecaf96c29bfc3575399eac2b6e18cd847dc22eb6491e8951ae6c2a86c712fc3b1f0b34eaef7fa0818fa9d54e322e852044e325b62586995025e65afab44302633ef794887c3065966a315a3fa360d1c9c3fba4bca57b49961f5577580f0ec4358edc42cde755e6bb5846ea8888bb3760bae846bd7862b4166d45586bc1c16edebf5cdb9e628f0dd378728bae0cd2a677cd25bcd9a64e6571343c39b88d937b9081f14cede979c231df5a8114007d1d19df991e47a0b2f5a2cd3252d5744298d33e9ddac3070b7aeb3f4b6e488eaa0e94f4a7c91e59104c73f09a79068d59d71d0ebae52e97589ebb544fd0d18189feefff2f43d87659842b9fc97ab82a095b9eb21d3d9f46bcf0a4c068f45776a6d3c4d06d70999e6d28825bae532bec5ea7891cfdaeed28c399c8ca85ee9ed34baa8d108860718e9cc2f12aea97b8b49c74a2d051755b584edf885f8c45532bbcd3127d36588f7e9553a33029ddb508d2c68ac3b217b3a4a037e1af0fccdbd0ffefc84f45e79a0b6707ab8a19f9944ac6c0e5c61531f36e70697391da6f484f43da58d335fcf4ffdd3c3fc8c316e6412af35bef44c043a3f79983f6247d416508ad92824d70326bd69eef83ff993acbd7197ce7770b5d025506a865fc77764477a4b820a3da1f9d4d0a824324168f0bb0105729b645b9ca27302710df112b312b9ed876c89df3e00dc1aafe1789bf6a1030e0a0095a0cb153faf7bedf6ba7a32828281c4b95096691258396faff1baeaeef6664db2a5960b04321bc0eaae33bf297a9bc04e9dd49a2ea27c8a1c93f7678fff91b12e06b6f188a974dc4630542d91217f5ccc5095fa9d7b86539aec572f85f9298bbfec058e824c381e64eb0005b62052eb3eb6aa37048a74df2820f7b9c22e4c21e237c70920f428dd06f031bb2549b7d9afc4fcfab748da4266050c3e109843d054ae30a181761a89d0394e107fb4aa88b11ba9f8428b3a5f1bbae4a48a6378ff9a43428b3cd17054c9c87f16fa325323da0f7601e4cf3e34b1c293e11ecb598a7a6c0c7ad8236acede494248df0923bb43c7ea050f629620b7baf0d6123b3c038083dd27527abd6d5f4feee50d02e24608669e14ea4ca7515e95ce6d7cc8655c7a3d07c29a6758d38019432775c67a5aca4a903dcf1d7b9cfd6d89f6c9f7c210fc2d2ea6157045fcdaee30ac9c92a58e305b9beccd76911d8ee84d7337d3fddadd5b55d31c4405b1e70466fe1c31ca98616056bd267182482e22bcf25a51f166b8e517a47ccae43f89f85fe3234ab3048b73f302d2cf9a83a031c8b49b0bb32e6db6c2e3f5fa19f783d603b5f201ed5a607af03efb01dc06cb37fa6db444ade19d494014bb88b1e2ffb3fef45fe7e83f94b3aa897ff509793800709f353f8349318008c7f85c970906d770d5533241c16053278072b9b0b0953142a403e4b99dd384863f48e143c40b6fa57f4d52b5970230a3a299f04b12340e2fc7d3b85e9c73c0a6313b1ad8ce61ddd877deccb99d3b7ebb2fef13fa3f8cc4ac6db326278bc3de7e53d691b267c08d4f9b2b6cb51bcf9d417024856532b74fc5278210c279bce241a51212c722c45e3fdc6ebd45d408f60b181971cd5df3e75d3e73b955bb174bf2c65c2f43196e9a4d0d75df24ec34e255d8658258392203cc2b8efb6392d546846f14a349c4a17ea3c422a18ae223ae8080d3631b5a49e5d9442fce8e77b8f9611d0e76ce20a655db9ce9ef22d0a9a24712e2127d5614c19cba851cf738c7d0836413fbddb1a81e48e05596f30b2222b9fe4302e3d15168be0714ec2f6dcee68ed26199d89539c659f9834acb26e9d486595f0ccf63708c1cce34d3ff59db78ab3d27676d2accee1fd9a50c14e7dfe57e30cf35d9880a8fdf238fbf6a7cc36a05770a945daa38492de380d52290eb4e405de23f2f6f57e26a51a70cbe549bdb28c6a3a352c73b7d5dd4ee945e4974357c171a0b843bb6f9c80b4eea98f63fcaac46ff775181f5a13f885d80d8eae9565646afc9985629ca74492b132b22cec9dd3d1d2c9464694627774fb12fce3985b60f0a02ca6ed6daa2e93cd323592bc65ac274bed4e5ff092645d813da835b339d6c4b614a1c87e56b884f5e0b777ed8d59b6a8b52cc05c56fc023a52c76c811cd99c45df5812b077b04877600d2b12b6b15de971c782941eb3bed01bd94fcba5b147ca9e3d75380216ddd6214cef4f03f999fab6a5a0182f1480845f61bf86ffb71ae742b88b605f2499d35bf1a3a645b50f23b0f25839d7d71da35fb6dc3e40fcd47807669ada0456fe5622687bae0ebad10264c0d8d244fbadbc62fbbe41ce0ac6b0058aeb71f4cdd29a72f776e056ac1a53994fd5e1bc1621be403eaea57774af04e8c53f6168a79b23d9a8897e94b67539303b91b82578eb991d9c6e50d07d3e16d8c32b170e6cc1a6798e437613af42dc798c24b6d45426d5a2006eafbdbd0fc591f61d08da952d13fa30f9551fac23cdb78515bae6d67ff0d000c92403834352dd33163f60f4f9be682c6bd157c21fe11c8ba1c0ca04fcdcf2cbe7b88a48d311188fc1c9a529610f3c49cfdf2c275e184e180400b15934975beddc64a8aebcc0177d1cfa046271b3c1b9e6a9d9617cd8ef7a6e0466af97934258897152975935f5e5cf9caf6fe7cee5c2959cc3048970667fff958a18776a2958799ea384d4b52be883762d81446f32399e6de58e58f4947eaea52e3baed01860c77abcb7e68fb4eebcab97d0161a6401370909ff1f3150161f7c50a6ea1e1164364963fb797781a901a3fe86b09dd7d051bbdaccf7935f63ac95b36e6e70a81f894d2545834b6e48f301adcfb4d3c6f6b4d36d11ac9f7834eecfee50828c0e22dc10cb8fdd411cbba3a5ed73991df43f631a74e5b017dea70509364cc624b0607a72394e9bdcc45b90aca8e770c4fd794378907712fd0e25ec93e8089a8dcfbfc87e4fceb694ef53f981812964bc67aa792288973dad1ed468f41d3f39db8a09da8d744410737e5557ce1f940acca3060b8b8a1f27af2a505bf5e1f24fdb66d6ad11c9093fa412f3874094100e411556de678f4f6fbbc9d23d7d47d4e1511279ad15736c458f82719e4c2ab547ab8ea119ae83dde3f31954b3ee665744680479af8acc5616c337fd4511edeec49c80a3c170c3a3399ee0f3fbaf1cba086ac402e9bcdb8b7346ffeb4e52a84e3020f2dffe4c05eed522e9646f71adb02deeaeaf393143235e3ecce93efa62de1a74445154d22dc18278e2aba07830b8aed4bbee5beb24d8060a571ec6040bfee1282eeaee1fd94c3c9aabe85dd10977c63faae2c7debdcebc60bd3fb4e659bbf6c071fe8f25701305c8ab07cd1c98edf87e9c63435619c2de29f24a474a4e43cb6521eac18002dbbf8d69ae61fba126eb2d3d680ce713723b850669ab09d7b254386b7b0ae3544972be901ef676d6e4bd288d82a37a3aa2cffaec95585829aa83c1fe275535c607876a2a7882ff71b92e88cdc57e01fd722a0ef5854972630fb1bfc5ae46bc08695cb1790e45c8bef5f8a069d273e4359393abe8b8b31a05c0a30b3e73a9c6b0bec160c01d4bda6ed0562fd0fd14a36f42aa1dfb346c278b1971f393e775109ca87b13a064c80c78d90ace892ae029c24e85ba46b485b6d173e60d7ca4c3adbe6aeed7144c8bbb56bf3bc8d89f5e74dac9f222b70bf33bf7b18be72ce08cabd0934907d257ae45ba9c1762e8ab67e282961647391822314a705d9218f78b83c45de52e1a608592f8382d407718ccfe708cac63fa2122be7dfcea41395037fb71bca5f635524da28d95f6420f511e9136c259dc89114eb883ac9e7c52db1dd9554e3d8663f5a0a4dae22c76698ce5cfdc927733e19512bb0b8e3be8bafbd588c931b5216e85ff1c4e02f34200dcdbdc967f7881ca7ca539a9a76186437b9b4f0e3cd555e85897c869c7df2a66a762590f4824f4b7225f3bb83923920dbe67e1eaad3deb7123bfc8c4a48e178cb9eb385dc3fec12df703d01550038da89b885ebac2bddc202eca3a1fea3f2952ee9053a254abddd9f5c869ede9c82bb14d15b2c29b8b8b099c40ab4a5e5aa2eb6c9c3e3e487ceca3b07c970cb3d55131aebd8482185c67e3af3aec27645a4a29d7615bda6e26310e5de23ee67d746bdcc6097e05a3cd50031976e53680a0ccf800927704ee1722ec98058a6262dbbd7d1d5787fbce8a5bbc2850f7cac0424adceebac934ced26f1441e4d5304f172caaeb11c62fdee6b8f903db87a751bc240816a583736565d43a6b28c792dd8f89c81ae6c4ad92d4f32931376de8438d0d674f6658011b72bd1653fc39887d5339dfdbc13643a8cee7a3c04b93f47eacb93f8270f56e9b8557a025845ecff5cd955e6e3ff380bd8d87a879ad5887eab45527215181e7a4ed794e88187bbc14cf6d4828ee4b5a2bc1369010e83cebcdd64d12fee4589096d5fff0e50a43ab6db6a42c3f2b93efcc3965c15105db8312a6033bf13de6fbbf6cf0334addafaefb669c612d538d32dcacfd624c065798c2a08cc681d32bef502bf09e47a0bebe349f9bf0ff56243ce061e1e37e57f58f4f13e3fa44a1171a5f1f818b4863de89107774ba4dbf9733dd4576849dbf2c8594c76efa2ea50a276befa2b5ada1adefe6c1219399805b300a944d58999ea12a2503bbc492849a551d977528d967177a25f4f93fc37501ca54b213907d6f98b6f30ab10347b5833af61d6a3d7dbb35eaa7c83557867ea0dda251eb79f92925f8806f6419ab75fa89502b101c4bf760e35e85cf2eebba5acb5bfe12b384e8de71dc3e23d3558424f51d557aa11f0f631e62d590a3c97997855d8016886aca694763b4a8979266cbe39a14a9bd7708f9576ce4db23076a2f14c458c3af8a5fe66bcd09a8ec3d649441687c2c3c1d544a72128e029a6bedd4b94be824b813898f6f117553c4f87ca63f3a62907d2713c8712820ee2c0cf2f34e90057c65921dd0b506b90f31452e4607b979e0f4f3c3fa83225a6d31d2cbea4d33c75d4f75e19c88d5374c6e54a11dd239672f0ca943d00fc96cc25e41275c9c09cb8e7cd19fb5dd545bf066154cd83c22fad986ba3c7c8303d7724f5c185f4e5c8f0d49719195a674944249d2f1ac75ac18a15dfcd94cf9aebf486b4e8dea2ddb362be401c6a7b2eb666db9d0bfdab3699f6a4a59cfe56341f61062388ba9030a748ceab3aca1bc663a1b3f1a2fea69cb015989b7782865cf43344459a13de3c7b4cc1e9067928b54e02ce10a7ac88b4eebd05edd3446bf937b000116028432d221141a5369caadfefaa0357d2177a6da5fa4cddc88888a94d76a15a22fc54f231aa0ed07bbbdf70404e54b37a5409778188670c843af86607f2077d87d7d96fe521fddaa441e2bfaabaa466e8fd459f765c0c24c1671b3ef5eab7b55cc32d5021f2bb023d00e2f0f649cd6b05aeed274a1ca2163cc2daf925f44d6fd710b72f658d717bacaaec54986ff8623389a8e43ca2015a102077e7cbfc45f4dfd06a1236d72585475946ca9e30511a37b35534ff7d08c81afce913bbc21144ec5c61557ba9fcb2d208529ff5a6010e32d56727896ffb0ebff4d5a440597f044fcd7a8e7b5040efc1170aba877e8179939b5165a9f0b8dbe44a072f65aa6fc9a383130ca30b3c06dfcb0806577b34d4c33802a31da9bb279c63842c46efdc2c2fa2c8e60191e6c113cb206b93f258d30ee171bccffbec549b4b2ef4d43831719e904cd77b885ce0caa485ce434d464bf94d3ec362764701b530f1d4f3e9eca78f794b42f80f2b6fba4784e02188fb89c13c5794936249bc76e384369c3a9d96b0cb5f2c7d356a55f186cbb8dfb7fd0442edbac6103937085d5abde172b622d40fba1608047fa716b19a44832c7e8674cfa54205562a2e516c316bd2f1bc47d870bd04900366a018f4a07bbf739702b6f42f7f25c79806c48924cc341901a7f7100fea1e1ed6ccf57f1798d48050e00f2057a58dbf99062fa2968b706b0ce285502fe73720b1b9a60a63e5fbe60aaeb06e6e8abb8a786456880d5363d2b927982060c1307f4a338c484debc34bbb8883c4c9b0fe4234996677b3ea2ceeb70a22eb2a3730d4eb3fa4b08216ae786ddab3474264b763ff826e51d7e92e380aa866e8d764f2634fea73630ff1a866bd687a28b5e6ac74bf570b056af72157891df879f73805a028dc6fe8ebea684c5db30d5784ac4c949067b000839a62fb6150bf30dcf86eb29ac8ed646eb2e11692a2cf6a14a9e4ce3faf343ddb9ad79c9003c6981fd5f090bea6e886d21c6299b68512874eab2a21d13a903452f1137e6b3ebdc2198e57c920bc219db99e1431b7610f7b1fcaa2bcfa57f30c6848966a18037ac86b288c344277683da654e68d968fe7b3f8e0b6a4a798a15bc40c48c01555e23676b15602171a1369829b16d1eaaacbd84e1c910375a53a26b10d9e76af8f045de413051c8834f2561939f1375ad0a1121b960ba637e05a349cadfcff8c0c53fd1dfc67b0f3ee48e99b147517262cc5115b0247e673d6bd5697a24114221a3ec3d3ccd7d7a724945d1b7fe9039fd8b8dd906bbaece6834c04d94695ad3d42a62c77a333a3694e2af3130ca49dab0ce85b3fffcd97fc64c1903c79e5c27de0e04bc16c0c95f13cfe1cdef980a2429acd4371ea528a5859cc4bbe0dac95d50849e42c096e786ea30e523d2ad091f3bc1ce833466ad95256e00a00cee2ba0ebe96e87781f8c4fe714cb7d3aab8666038c5d51614ad9274e914fbca0947614278764f254b3b44370002ada9cd54abbdc6eccaaf4aa7dbfc8ac51b85b74eb961fb1a88fe9c8478a10705c1abd1086d55d737f118f2f7bb5ec0d86dbf2471cdaf7dc3958cd396593a6e3da6281bd668059dfb976e50a8bbbf0ed9b6ab36a58b441e70fe9fe5f557f0e04a9956fcac1cbf6c33e451268c5f7bbd49b29e3a373b8bab3e46c9e8be3b2a3e5309cb0dff48096c530d67fbbc359f68e1ae9346581cc3b929a6e3a53b6040d04373051714d47b8f52c7d87a82946f6394e0a82909798109240a863da401fe570f1de486e3ee45e9856bd3df3966e2ea98239fec42012c3eca2793dcc0ce25e7b2c52a7c74d1a647274b08720e5d2128cf875ee27ee680e424acac805db4ea8a0b6e025e06637623a1572d1295b10c0337bf6f4800cd0cc93414b8ccc1e476c6c615760484a89ddef9f57ad69c1fb4c45d7581778153b49e43c163ed9e7164ddf7a6f87003e29952f8632cb7c62ce289eda8e5a326a42ff5323f9b8d256b45ee1b52da1654d6fdaedb8e054bb6e48f85c85b122ed83b897f438014db355b1fdd964bd5b3dde9eca7c09cca93ed1e6a135a51218366d7a3aa0e07c59adb1fea0df33286b85144a2f40db3c4daa512559a071e518d1940ae83ac94694d889c12ef6d6bec40f176ec1d82b5409d3775e83eeb7d84b48d83b4ee3ff6ff63bd75f8539b54ec9c69cbaa9cbcd20f89e39fed6542c4c16e00fd0f2d63fa4b84180f719f29a1cd6889a154485cb407890e42e2063a38b0606e78f0b32e6c53ddf34f45be1001bd35500872150d127fe142f57ace025f210e25a2d952d42ee28b0c47b1f1b5f34ac21a0d23241f38d75c88a01c115786851aaae723aa083a080fe1a1e669cedde9c2ed11971e81cbee87e5f8638ddc5d73191ae979f1b44497ccb91087b00a6e723a21da95e737b6aafe1b959cfe0b1125ef609c5b0eab60a8a58d1c2fe3d4f2a162eee2f698adb074c8f1fa4b7f881ef8c0ed4d9cfa55a7159b34a8e9bdab829724a20b28d2714db9c499c4a6bb101df075c4bce57aa05cfc819a52b675e4bf58217687ab5645c66a270d7d18f473b931c70eaa30258c9a42c8e3330b63dd8f4b4a529197fc8a0a7d05681ac0cf347c87e08e564db732ad0d49b6fb507ceb54bd09f95f15eb77b869f19a0deffec350df90959260bd2bc44931184b62a08c195efb5f67e1289dbbaea703b7aead7c5bcc0a5e376188908325f4964011b1a8a2c234370acf7aa4444bcbbeaf35c6cc660335f11a9b74184c934fa891a37deb8de11de17c43925aaf46b2c4bf75033313df8af2d12d8007c7cb6077384f7d817897d95cc1b78b60b52842238990d3fc00dd8cf8dc8c31e95fc8c88fb1c359c1a9253ee55139bd1efd7edce6e85b0aee5d21c15231ffcd51dbc9e018019f498ce4ae5d4646ead4d2ad595b84cee3633c9cf0435f6722e01f27d2fe923bf83a6fd1bb9e2b7e8047d332cf1dd6d2e5d6889b34e8d13a640ef8d529ca481ad6cdceeab864e8a0c50e62c17824fe2754b7c037fbe78e738841f574d99fe637b61ea8f374487d9115b8a885f13dbf93d6a81005f824fbbf281bc70f3207eaed0861b0c8a5e0db4be4c2b7945c431f06486153fb01f9e3832dbcb8c44736db6fb249ddca621aabfe364fa3e2de646406363ba6f68f96602158db593f6ea682ad8b49a039a7210e9b251c17852086bfa063980d3e41f94ecbbd2bc44dc4b88cb9e1975e92d4d92f025fd6fb7bcfaa35b7471453b459664e834213b789a76a4deef40cf0712ee6946ea6b607131d739a988c8687f23d7d597f25b1033c3a1a96ce78cc2e845d4276b54e7054b03da8ad8891d5d24ef7d761d573340336e45acfac17c0e1c4ec6aa682c26f548dead8ad74e7987bbdb63b8ff59282115ad1d9c876ede18bb4cd15c3bfff68c168e105f267d68b508d4b59042eb82d46f16f52f1a00a57ea2ad27ab5ed16365eb9625e5c74d9cfdd3bad1d4b2d71bbe5b9f392e80ff4592b20352cc355af05a64ab30cb8aa1eff17017592ca3a1d3b45cfd2909d0b22f5271d117fb19d81d9c2759d12546f070f673d634ee8a66f2c1a29488d6abb828d2a02e683bd78db54655aed356defab023ba8d775b7c6efb57075d449e166f33c0c7b198f6ae51edb5794f4fc38bc556d94f8584b57a9792bc27dba4c39bbccfcb2c6715169a641fee6eb08bba39804c52ac411506397bce4e51c7f3592a153a03a6f9c80196b4c3d796801ad1357ea841a7d4ff41657bc63d60871217cc6479f522fa80f686add12f0fdbc25c33cee1f45c904d8062251cb84581d2078cf57b09a888af70b09a653acc69cca83c02ac3cce9479b9133a6a534bbd7b7625fa933087e9a8f6382ecdc4f5d04e0fca26de8558cd23e6ad9bafa19cc357afa76546d9e7c157674710a939672dea5b64eb9b8f82a8314def9e2b633ca94a8f472e68f03bc9a08d085ecafe02c17c48426c63e0c13db3fb81545619c4192e851e5de96bc47ae6c5ea69561483820c721e97e69354682c6e4e55f22cbe09208e5cb33f119713828524299b85caf6fac0d997fde63acc13035d77f1a7fc93bd43d32cbfb1ea1054ac696a3e6db2dfc7e01689c9ca67806bae8d048084f2af9f86921054cee604522c93df1cc0670c4038afd5c6e02366411dae4343f17d37bfa3ddc30ca84f60c8bd571d3da67da4a769b10792cb4ac10aa74c20ceebfc3333718cb119ccd22d2c0fc0e2f3c2727115530b463d088b3e59bd30771b5156ad9fc4f2661df5865f3ca42810058463f233e45e7bb56350ce113acd6578eae60e9acc2624d343fa93074ef7dd29e5cf78ddbc3f0d871d89ca654e5648400150620f130a0f417fc652dd3d59b48a9af00e0df2ed0450c10b4fa46009b16a9b33002005edded0e490ef162d49c97a6c0e0b2122194419b4c88479ab034fa103b9957f12282be9f431e69ab0f81081ba92a1b6df1b73d414cce1b75494276d37b52aa22e8e3661d6839e479a94a79eee08639460ec262c0e715a9b5df5b9f14efcac9ab36c5d4412b9098a9f6aeddca474fac8fe13c093d9b9747c24351e447676148e353756d983c341c7c75d0b7ca8ba61a2250cc40d07440eee934a48146a38bfef218218ab8bb19ec810683a37747fbac1926924cea5215be5470a40db6bdea857c781af74fea42e9122a8ace1871d88f42024c21859c7977847d97edbeb26ebe4d645876fd24fbd65644b77951f5bd75959295ec26dd8000655af0de1276d74b2505353afb2c15dcdd29cc7a0f977d11c433828ab4ee35e3ec683d6f4353771487767c6c990cd806c9768cbac96e419fd545510e149badcf4d401d84689217c3a07832aa8820a5c6827276b80ea3f259d3c7583f9fdfcd15b5433dd5169b45473eca1183f40f696e0782320463343003850c6217663cee2c9c201f6ca60f1c55ce1cacfc6dbd98b8bd6ae6c56ff666603d9a9c4541b9d82ea996242bc99ad0e276d43d0ea67ad23fdfe73f348110e5bab687fbacb48a3e581f2b2b447169ecaa3906bd25f8083b047154381f559ff45effe749e2a180668edfa9d3bf078b1aad286667a2c43055eacb6b49673952221d761783b2caa8b6d4f8956bf7f2b1e4acaa17175a9bf96139b56209827a1dd6cdd6fb039a23cfbdd6c8eb501d6d0e8cb0cf91f21636cd4e1f07dbeaf9215c4dc65689fa4ef6c58c61acd692b4aa3d6984b509a011430fd62ae9732beb04fbd666d11e1133d49f82e83f3c84135187e336fc14017dfff3bdcf98f8d1892287eb8d048bb3e558452a00303fefe63ce31c9a4a769ffea19f10e7c16ffb9852395c22ddcc73b1bc106be4991b9bad9881e5c7e245602d95d8bf2c678d9cf243595d8cd3e0041b375919f1fbfedf3c43cf669846e8c61682d665c15a494b05cb91a139582dfa5a3118e72bb6bd163a86303b2bec840dba2af8bba7469c9a528010151a5060fad74812d0b71a88cca21cec546602ef9c8e146aef4945a510efae8a0825a1cf5cb2212e605f0e01c54489002c6d4532fafb020833f109bac5069381c5d2ceae383d09e39d113958ff45bddd272de33514dc4103cd5099234954e85f969fa6abc57e68e9f560c649259a0e3d1fd56f27f803c01766fa91897eaac84a468cfcc38db106974001b62505927e911557ea9f57b3f9598fe7044ec570dabffda0776658c41b91dc50bc40fa4950ca12ecd0b4f727b3e74af4dd5be11dcf5a2a626e30e7da32bee5c9b2707136ef610f8d4567140a8305e360dc29cbc0315cd160d3da94c9dca1c28f9876099e25f3737a422300fd2c73824f1bf4c27a85cb45ac3128a79c328c9de82278291ea3ce98b7de40cb15cc00d04b2a6ec102b44ebc59b9e5ac112847e2beddea4925d34a078aa2b98b5bcdae46beb56fa61fcc10a0035c51911bae2b8420dc92967703c8fbffeb83f14abae22278bf5d54311052dd44f9762661a5c8a3bff87602abdaa2cc6463463053d37a842f67523da9547b8f409b56c8bda0852671a6ec60ae1e8f67cd7f55eb5c7acad4fa4245c58daecea11ac3e562bf77ebf5b2501d993ecb140c911b2dbd3d6dc996d647b642f5710ffb7cc53d9528a97ce71e4ca793707829c7cb18d82742d0ff8621429d559080bbbd143789e46f8d47c1f8563c142b1120f9da15f837ac08f95722de9fc220e8afff116982f13f599c6aa7a95f4babd9685ce1315fe8306747677f40d0fef9d0521daaf5946bf7ef901b3397a58effc5db9848e16d6076a2627ec42e761e86bc9c75975cf40c29863c49ccbd16508a20876c39d2a67b9b21eb11e3c7a4e7c5139bed96af39431b14d51f44c7981f85803cd823e12aa5af161c79afcc9e5fc6054613e74e5a484998189790b97e3b7c10568b3b1d0ff63869764660784b482fb6c318d1b50958e129ac904ad7a2f7cd246efff6dcbeb1ae70ee4112e93da9bbbb722a1b57d85d45db5afb3210ac0c2c22035291e2dbaffd7e2684451811aeb6ee55d39389a1f08d6c5ea9a80161b322b441ef89904eff063b80d95e631ada8387bb3c8b841ab002ce1b6334872a4a89536f8e232e78121dcb0ee325a4b4cf168d3917566c9421a472fdc2ffda2725121dafd5e53bb9108ccfb36246d9a5af7b9359e4d06e43f9a572559257467613bff71a381bd8bd7d0f2df1bed05e61634dca8d29d4ef9c55ec7d71b22f628e16690b6b465333424357a73912b8b628fb3f5b49cec3c59ed2939e4a189ce7d8c23b87a5b7e114414e874bca0857e14ca797185688038611836acb7a045910ddc235b890e45c6fbe5cbaaa5667e84512baae7bc1c27ee117ce724a626c4487aa00aa6fe14d1f05a04d7be411540b2bf98d71f3fadc1f119de762e3a67cdfe8600bc2b95f0ac91c46404a81de6245bf6c22e382fdf85952741a24e27638d0d3f668f9e37ba7bd45d6151e1daff47eb11abf99af9ed09f733b6359e9397c6189a2a69ed30d1ca32c6a72dee161b1815975f43cc05c33ed7052ebd1949915001e862455ac38eae57f9430e7d1a0c27f7022de0b4b46df3e207acb15ec0b36c03981cb95c6ac7233e4ed5589e290fd8c5958a25614d56013eeeb1ddda44940d7684a162bf6c1c800f99bfb8ae6595821fa6bc7043dd686f2a9fccf9a355ad41efc3119b520240c026d044aa148d1df9822111f0ec1b9c0e5629cd3edb71f099479307e28240c6ab5221e9bfc95d1e0b4860fb50146e36ef75345492e9b8cf5db9c22bd4b0d3f6dd9641213bbd8082016466e658039d6c5bbe02bfbe626ed06b9e754323a9e4d31f02a208372c247cac804587cc03f5766c5a1c10a55cdee2499c2c017e324ce62c16df336aba69b3eb79339080bf2dc352e81dd01ed4d4f4f082d9dcf8ca18ab3d88be2606245bdf23129dd543eede95314e71a91d4a75d3438fe24614b3ddd8e03bec33587659e796b29845c4a302a4217f6412566dcb63a80b5b4828d10b567d69b4c6d7f3f2023fd7e41dab6ca6d76ded7ca25b181e89bd9daa10e9039fdee28b02dc8a4b73cc36383160f1bdbda969019ce1ef824e37863ef6d4ae84260de941d5c71c0682cee7e779439a7ddf0915c18f450317d6644deed36fafed9a1c8f9523b8c967e535e118c04369b4a379df17d3522876dd17a325b87d48cd5088efbcf98055960ff47467a58bbcd84b1e606cd7eb2d8d7ff61e7e6e78c228c93a87ff9abc9332b3f1626ac652f2718726ed3fd8867373f2077ad9bd455a47af08033fe8bd5c0fc606b24f52c1b2648e70e962a799b6b3aab43d69ff76cca3a756204cbcd36900dde4693da30de5beeba33104c19ba6fb6e68dd785cbfe9fc98d71a50f3cf0a89bbfe12b6c1c5eeea85f200506bc00f0089f3ccb2c0771031e5e3d0f53dbe601a5c62988ac3c161659a5f0c0831dc5d2d2ffd0ef3075ed290f9022fb17ac6e0872e0c2ab898e18a2f1eeae8c64d39facb2b60c27ec18d9198b87ba6a11ddca1df0b11d776563487395e3f43cb81d1747c7c9357806c3bd2f1d77ff1e675ff914dc4381352ede54ff05b58ca40b2b6f2202cc6c8c96770e9ac40ea31e0a0f6eb7bc19dd1107cbbfd06155721d852115f14959b531d24719de1abf523619e1f541ad3dd89a80938b0333366505117fb21a6d04a4da4e816b53caca497455cad6e4f70ad946615101cacd6af43d9ea25636e420201cd254e7a354a09eaca64f654580c1b0ebfd415eeafe4790a96a904c9664124b32b256cc5029362ef5aff2b4fbfd2b2d47221c1e3e0adbb5b45f4323bc420c6a7ac67afe2b0c63e52a74ecbc1307e3117a890a0632f9d1b9c97e1d27dda46aa2f6e76de9decb6c6d6b0ae8468feaf6e187e64c0a4839af11db5d490b66850f74cc016f78644847ee9962af41e25a0a72d67cc1a6978a623bdeb31eca74856d20c7b109bd8bc93daedd19fc9d75e82772b548d948473ea18c4bf5dbd35a8f2a98d378540979a500d4215fdeaf264cdcfdd2b7b8f716c59744a000477b1f49841c847b94742437517595e76b2bc4815fc8c3f1867dd68dce33deda0630fd56e07c90d268fbd924c6692cf3a83794b2d6a97eb02df3ec335c2f097cc87ee46d32bc506bdfaeb6f6610e1c61ddbecfeff829e1a80bb6d3fdbe4dacab80fff43522f5447815b02ffdf54362d4c71721bda0232b835b7d97abf79c52ed5c5206fd1a878c7145088c878b773ce8605f2c6b14c48163517b5b95bf9a0e7d350c2439aff16fa564c76a6a4d71ad74205f03420ff86a023134d319f438f45b92fb0ddbf946d858b23536d6abfbfce2f6a7af7bd5cf5455defbca5c91a19d6c957fb270e7c8d477da4eb57db43135926c9eae0edd820dc7aad89e55d63ea79f5bc2bc17911815d68d2f7f0cd968a64b99906f48d5824a0061e0bf2d6cc53330a7880340135a72ffb1987fed9d3763c7e592d737177d2340d10233efaa1f66f0e4f0183e8ad265988a2d7561eb0fc440c9ccbfe7c8409544609b15835522e8a5deebbcad1ed18b4e7e9c74e5fa40e21af51273693d3fffc25a11110067e46876ac7167a44b272859597464e91afa1d95a02834af5bc3a5700f45ea48cb6c1564b775c2b3c80fa0892f0281d6c214988fe6c5b736160c309bf185f5fa1c2a26dade642dbcc126ffeb3f36da65b101bb5f678da5833d2d2c5146549bacc251544913893a8f460172f77b38d3460f32b1b4a06f196a37f9891a1e3fdb7b05d55bd4f70530621c05cc4e9407a315d0bae88bad962529653d1b419dc5c5ecfa137d0c5d4289105b5d0211ad37d7a1cbbd933560d94d55424a1aa9d44000185cd7febda67a742e804bafb91ba8cd8449592b69e8e009938617a339ad814529a463a9cc6ee853ebe19f9191d0d13a08f97bea6977a04821d45334d5a7fce12d10a94920f7633ec4abd70aaf4d22a55c8f004e3b947ae833bd5634e2731337335aad31a13ca47f06cf39a0864db1e91f86e19ce511743f1e2a3b69639e4a3cb5494db544bd4a1422914f7d0b7b81b733b42a5bcad920954d6a5f80a0dbfff95c735daf2943b831cca140ef5fdd6611e4ba8bd508fc8aa7137a27885ead830d0fc202fbc44640bbf1e2ede915d99fd05d811399f2b7302641472577a8674f294aa3d4fa1dbab0cd794c2181ffe827207538aafc8f6e5a3690feb9a427d66e92d5f0fb131b4f4c37d895cc708f70cdffbba0549334b175efdeabda4b0c041ba2bff10a2ede8a45fa6f8f1b95c9491ec1e88c28ba23ded6e039b7e10c86e8f146ac0cbc37313881cdc5551272c3f0508f8cda1f1045fd3e87b6083e6dccf92c8173051ea1020be79b82c88aadb46e6ae3195ba4f9e8cec7da1ddd5f53b7e8b6e80fe0f5e0f186cf0346efa7919766030d3b67c41b9d3e64c166957a8de7060725ddc247eeeb7a2ed74836418a59e538b178167de110acf799000b92497f193775267209c7d7a3f19dcfac5aad9bd7874730556cfb09bc22b2ed32d19d6a9ade29053ffaec5248ab116daf7a2d03478c9ada528adc68a348d2ad1957ff37aadc288f837de47ddf08a114a890e719c1df4aa2023f3b3d1efcb1f8817ecd8034606c55061eb7d814c6f0fccd2bd7be899c4a4aa84592ea84f77b48b023c7e1082c8132df11712fbbc453520ff4a1267b5d6264ab55a25cb1ff51342d939083ea4a0969b7afa59680b257b98eb2096cb5ecaed72a75ed4ba695c89a889b3033d8253a127f47e777752d39a15eba7bb07f351db70a2f3b922a27689c67b3950a0f355edcf13951aeb8a86c66642d84ccfc77f26776a3168fca822e6667440da989525219857bffb2da6a17458d6c5690952f4718118f4d9cf1af0acc9ef2cdfbfd0a071d99e893d9c9df941bbffd48943a9785854ef275920df062b3c8276d969b2805ec07f2b19c5920f3fc2e555499df38ee12aef7635dee998d4d61406a9b0c19e3396b3284fab6017593073b9879d27f1430d214b3a0d3b459224078a3347bbed0b7b36d38e15b37115389f9d5a8cfd75e0fae27456cdab486ea781bdd9b9db10db3eb557dab5312f27b0e1bf344f67c8aac437eba00bd7e493a8d8f3fb30af971033f310bade230f6ec9c427bb6fdc22523ac4cfba316e5cafb3880d62d59c0e449a22618cfe20131c6ef941be14e4415556412b3859d25a6b963da1248cba7e47eb387e33c675768db223b26e4e21b10e117d5d0b304896db90047471089db03d1ade72d20796497f669c3126b0907226964e4061f782c25e6e7862e3fab3f66d38a30bb6dff696bea7d87f88d780e2b294f0f4bafe427c58af16761a098a448fcaa30d6c12307c974a9cb174248205fdd66d15c687eb8bbdcde0ae20a782575739f4cca4cc69945f19ffc505abbd6c4f8cb02379e36d36756d9d895e9b888cf30ef196acfd25bacdb874dab17f881b72b99039f3914879ee192d6c153f4b8cd6af1a88aa788f27b22e3fad249126d673a66309c0ca0e327d250fa93b5a832f754172d84ec07f565493fa291ff08415923dfaaf836d7ab41b06bc99a0892916b2e3f84b49bb587d05bd7715cc7995ae295a926c29a55fa1cd30dc94c9ca03e5ba0ead6fcd4488a58af916ec97f0be2b0b81278cf60aa1f5bcb3a3d806ed09d8d6c722c412793fe4b7603b211b8527642403f17348d0870989d6948f2136301d96b9157ebec553e2c22644d94a031476bd5d7a7cda3c569e0cc3bbdc3303e16afdce01069b8b64e31969a71528b358cd3cb6bdaba5c589a33351bdbf68070738f01206eabd02420c529ce9772fcb360762804aadd68c9eb05b6c8bdf4701f758e0f6126a6bdc1d1067b25a9bf4a292f23f8a00d5d46c890c0ac257f09465f91d76c753cd4e49e1f48119d8f25d09a00fef59ab22525d699403fc2e9e4d6b7e3283f33bab13562fb90cf1f2d39aade36fe81233a65db385a5576fa211bd457c2514a6e203fe623ef19374b71af0aeb726fe75cc110eaa7274528acdaa5a038ceb91ebe10833f9752d3798929e1178faa72f3c4305d91e5ab47b3cf815ebab415d9976b7f067ad08adf5c6b324f5d37bb78dbebec47f5b5f308887d5086b2528fbeaa1f6d54aa398514eb6be419cc9f19cb73b1070d52e6a22a842a5142b6c6688b842dc180bd885e7df787f1874b959806b682feb2405639c01c253e1aa76c64f5f8915e9e85c8aed96f536c82d928a3979751677e0b3521d4589d917ac3bcc5c54002f748d6c6431a7f765c183bf6b0443041ab7b12e552e29bc13f31df7c1b5a08a4701ab1792be67fbc17fb3c602da3304013f83f37b75a40ba5af42bb08c24ce48ec36822dd019bf1e920384e484a0a80bf80a8df01421028e4fdc91872b2a91469bc16c8e90410e75faa8ede88dfb1d54dc0696cb4210393982e497d43785cf479d64a7dead2126b6448880a40cc7f2fe94093f688b74e381ce6cdcc028e3d4ac0fcce8eba22ed9f1b5e7ec05a4ed1bbe687068dbac8c8052dab91dcccb055958512ae495f615166f212a9db91fa727783d60b3d0a10fbba53572d252c5416e013fb3d5f76433ba97495b56b1a505943a7f3f56706ea3e34cfb24521f4500c064d5211f87ca1b349cc2a868cf076b75b06939017b7f673b1b05c08dc7cf4121ef3730f4b89414f6f8c7e46f9720116d57c2bcd24dc66a0e40cd1858d993146bbb932217019c99b847b105a406e082efecdefc5bc0a0319ed9c5653e17e020abfdb73ca53b33d78c0616a4b9f56f1ddbcd0870b50ec835dc0a47c4f047f61fa2358646f3d3e832bf3e3b8052a6a1975e42eb53a341f663f41d33b43a5aa45c92c28d0f7a3aeec0893519fbfd5da8772ff0bf24cac6ad9aa77d17998bdfc33c5eb23fe7d27b5acc9690229bc930ff9910ed5926f32a9330768fe03d0f1ffeb2f6e52824c40a85555398f98b615d3aaca82b05e16028156e9ab82d4a5643f9c819e5899d5d0f868c11826b17c1dc6eb4a83c6d9f337bb30fd317f2d08e64611d61fb743225cd815afbeb5c347307cd88429e63f0dd2d11c5fdbd55c54c711662a078544253f2c4d7d4f4cdf562720555ef136b26a94f23b4816fba81e23726dc932e5c331fe2dfd48e99bf173c65111986c062d9494739f589385e3e491220e5de85f2ed1b4cdf52a9428f765b8c0229a2fc886584335015105e559e99f6bd6b5ac48e5fa4a2780966ab50954fc88fab59235367e10b1f93b6757c2414eed470b35ee3f9574281e2ca8cc91be93c2f1d44cf444472738d6573ae92b9b934fd88596f6c31a75c4f7d74b6f550db01b0ccd04106a2a56fd3740a94e3297483685ebdaca3fe6ff7b3ac387f65a4ec16705eedee76ed2b75541b58d7c6a4ce46eb2fdf782c60aa9315f698b75b29b77d7d49fc665ed3eb7c64ac6be5c33d3ec4534d2de443d6244dd31505884b14f99a2b591b19abc806138aeb7157566efa6fc89db2bda1e650858078ede439407541e82ebaa7e383ed917c916f85279265f50c1a950ac1981f6bb9c2a58291aa630866bb80c98c7f84fb11cacbc5106a05b43b50e47e37fbedf1484917732bf671cf83c985f0ca7b58228cb7aa2361990bb3b7e1b7d15c9f8109199843d7a9e95392b372d53174fbe21439ed1796b0286e4dd9049e06041a1529eeed964ec5ede3ed04a647271cc5defc26f50002020390181e015a067284747f3fbc0a0ed990d3f861a9a6c56064ace4bfcaff90147979c772b6f2200efa295a952a18c9cc05ec51ff932561e4a8c6147e5ef5268cc0a00c84151153821eba95b7927ad676a1de857ace265aee2347fb8d147400086e42bce1a3ae682295f0289e04c23ab45fa52ea49c522ca1ae7acf1e47fac355014ab125fb13577a883c1d86c1b582bf5d736e7d8ffdd911e2856357c2fc8fae59ca363e492768d5241d86c5c08697c25d35a8820fdfed51a019d66047c1cf523806f871d00a11691a9e49f92dd2f63a45a297f7d8178daa8a3716bd0909e1e8c908b9b1640b8e8f1fe4cbefe473f88a9fdb2a8b798853dc87066b2b318bd4b916ce5952f1de9d276dc9cf43fa280cfe1a9ebf53d577f43443b771b15c3fd34691fbe557f232f6bf408a1ef3350219990702a6d6a689d9b0ac7843fb1b78f2b88c28b310fa8a4bae5b81c85c8fa6684bdccb0a88f5043a2c767cb52971cd805cc0b6cfdd2f6f069381f410fbb765c877b44cabf2a36a64dc980be55159d715b0ca3a44acc9eaff13fbf056dd8f1aca58ced2f480e45b34e7cdaa81653eb8ee8ea974e9d0985adfc918388d5eafdd4e760aaa71b3bfd0eef3144f87f7817761a542d8d4ae7c8bf374a83b13d5e187c53d6faca56a8f9efefd31a25a55f72b71addca59dceea28a18f812a0101a304c7d1a862bccc854e4b87295779b868f6cce8a592fcd26e7bc03dfb0c39cea874fa5081b4aa3923442485ca8e30e911ccc3ec2b0188052377846973f1ce9757206b276f29a6b2c233fa07214c0b872311f71be3c98e0c3d1ac597cb289a7a4a3aba7806b913140de960ab01f9ea4f4203d618a59353b97f1bc79ee892016dd171d654802b5083845d135183fafb2a06f42b132dbc2ac4c5e8daf333fb54c26d5523343d0af47bfa1ef4868055f8707d534b129cd03cba7cf56cb51985457855853a2b3d2075fa1806443d19636ae7a78a9f44f695ef56255961f08b284f2df4b5b061a88a475cd83c891f3095e128f9a5afeca2a13701d6bdd4e07f3e25e76882889a4659e0af0a95e0f7ec4a4bc0dbcfdbbaed81542bb89e9c176d1d74e0050f3d0808bf3b59d22eb30139b5e1112a9b5f428776b9e18ad6207fd2c5896dd07b8e397dd2c821286f0af646cb6248b61d63bf04b924ec1c7e6833b09eb7a705277aa75ddedc045646fce8054f81e1c5da24935c552782d51a74020c427ff792bf08500242104c7ec6e9c4aee1c1208f7d86b26b929fba2e1d3f336f59dcc59927dcd4eae126d9120a8a4d3c2836a4bf6386c272eae78b35af02e3668a3d95f226a7c7372866cd5a6afb19eeffc792f8f76fc59493bc680bd393e10373fe82a6edf8292f957a18f20555e2c8c206604edccc0a5a98194466d1f67659b674ba756606a9bcdf4edb489772d20f9ca8edc9e4608b3080930c10f881e50319e2b251595bc9eca576f5229bf450d1ec31e7e6e1baf9e587ec7d66a829cd9daddd29e15d9d0972ad0e8617c7aece5bc07490153b24972f6ae87dd9b5cfcd4a1106acff9dcafe23b434a311d0febfc050dae33c59f94b25b8a0177114b0e72db80e263a689e8f7ad0780dd180c5d6599ba8c932e1b499c3c1db8e45d74422f0497a68559205c01562ea2e6b20fcf04005b66545be37bc690e28f3047f3bf3400e94c0c6abccf03692a247c52820f5d30f3df5b5fc17b75c65be106f9855b84e697ac93800f2124464ee431d4def02371dc27a3674001b44666c9bdcaa4e584f684c60096a451147567a5a80d02df4d3443d8272426b06acb109f6b57621c8fd5dcc36cdf43f9e6f91213b542c7126d137fa9b8515414486a13907f78346c3158f09d8c94f3da78daa4249cf0629eca035e0c87f462772a4917b22b400c67ed7eee212791081e997f2bb167d7960d0741014f7e6c386c740b8cb2a91ef368089eb74a60ac5b1882957f116bea7f10dc44126da31cc956d758e56ba48a6050bf44ac4bce0d6b311ffd27d4b45a52538cc0e3fde4e78ee57c3c80049279c9bc7e5163838123d0e087d6e727e9aacfa1709bdfab11c167c348fdfc50190884261ae99b418e9fe42f727d0447899a58a2ebfd6e7e6f252c958a0272f3577d1dcd8a26a69456586c504295dcf81f1fb4b22767fd9741736f989a47a651de749cd339c8aa4d8b8c2782acfe9046da6c5269a79d87f8047ebf41ba96f9ff67d40a8ff79903ca3c81adf940efa3951903998ae5675f8a1345d982ba423ee44ebdd87dc99e563fdb12f661bfa912522da755e2660e0480c03a0e7a6ed91aa7e77d31de16212f722416f786c4e96fb4a83966629302ff562cb2b976dc17c05397959dc34bd1a98497b763e52e7bc4281e01bf7f120a724bf1ae77013bfe57b62e07dd0ad97ea285715443a68490d481518a15049cf7106626f0160b56c16320daec2079962d2769ff93a26b518f15120a7e23e4aa06168d6c19d2de1af3877c9780c9b1591132958c7f4c1dfa0d4f412dc1454f93ac6b1cff64c38c7557ff396e7e0b8931f7d448252e476204f572b505a8ac8bf0951b4e86d58b0cc8ede420139f5481a0918d6e01fc8fea4350c14b49baa38bbbc09058175dc221c6e54fe12c00c03efcfe39634e9ec75d68bca761f6838bb21c552cf5bd3b25d016dc175686227131ef7a29a5c1f4083d5298e736362e809afdcfd534f402df6b4e7509cd11700a5278ab75b2c6432808b0ee8fc327d47b62c7c708648e99ffcba9d71e9a06fdbf0ca950fb6bf0f6acae2dbfeff117ff1a4ac65d87922eebba61f335e30fb09a6a37faa21a3d5a945a913581f5c94861749fa18709055e3b9faabb035b03a1d63bcaf5cf9c842712e7176eedc0ba17f565a1c5ed39e4e5154c5a301a4debdf3ea382dc6532edddbbacef62cc221d8afddfe7dc2637552369264bd751aaf486af92bb005cca55a0ca1631743917aac2ee5a37b12bd812e816131cb42985875728c1663b917c27b60791f708a14473c6774fe9ce2397a9b970192fdff02dc8f92929ea489536585e550feb4fa7ecf759a78eeba08884523d13dffbb280fcd9d63e9fc2e9c5f3d7bdd0b179eb25c12a05b2b3ead214d908ffb7786d29eb81f4212acbcc6204cbfc54098237d741321f110c977e10bdbc262d7829218244bfca2e2d1a56bc6d573ee37f0ece726f35b7676974b6969f448a1984c05c5e3fadb75a81cedc744f2a6e5a2ec44a253d6ef341c3c40a423a15d3d6859ec5ae60c70dc4d570343d26cccd494e777dda8523713e662a7a5e312cdcbe20d5a799f8f15cb50e49daeae922bd9d12e60f67779e1cd8bb410dd98995ec498c92de060a3d747419cd2fd98efa32257468516372800f6181db554f7a7d8748ed1d4aae35242ef47fc60d7561a9ddad2faf07f01e95fb76c62940ef5e7d0f9bd0a4e19c3fb87d29ba4821d319173e72644a4d61563cbf0ba0a3fa64e5fba049184fa3e0147bbf00b27ddb676a6f418e9f7d56d535b1cfa0993866201a4e3f26cd3049680b11f4378256ffdf77cbb8ae54b657ac3443c4eb7f58d4fd22057bd213b69c588a4d29258c09239871481119b282a0f0d617631f280f4cec769cf9579a9e8de471e4f1435556f788266b158bb4b0df30271bd563efd1449aca03199b18070f94bea8d132b8d74de4292d7edae3a12b411f5c678f223934f8fe93fdcfa31c153096ac4d16ebbb84fab19b3d70c05bdd5d2fd1dd6ba65b18e44ef753bf8a75d1a5aed0314c28b54e9a02d087f26d77d9c7f8c8f8116012960e27741c344810d83f89a3bc8010116508b0a7d9f7d5c0cc376839282da687eaf4309093aea1a7c2f06e95e9499c3244ad96416af48f2dc59b9268dd3acfa0b25889db251eb6abeaf85a5b2190bc071727ce524abf3a9192c6d2c1a668a053d3a93679c4abcaac98ce08e82346d150c1667b6b5819a1bc9485e5daf774120b3ee8ca7395ec6d1247a617cc186e953b574161fd85e92080dba7ac547abf7cf4f535d8fc51be4df5e2db916562a3c0b4faf03314afde1cda2075274f38ea17e5c053637befde8f713e17c20167e38a9fba732845ebac1a60fdd9ccd6e6e8dc14a0109a219e3164a8bb8a24eb29e42a80cf9a6032d9521bf220fb3692396daefc6e90ed266c3a6ce371008b11443d40d18f1e9c960712416b74715863474fb0817fd41ed4ce946d0a546edaaf361fc38cf33880d35ee9f30dfd1e405795739ebff77df711a3b97469fb0757b9b3cdc007138951d73e29f9be45b660285e62edaaa12ed7a569dac00913a2a5630292823f15f246e8316e13ec50785eb24cb4a554599b11486478e9f7ab0760bebbcab022fc6ceb4e325597f18ce5038ec78513e555f37a197f7ba60f3c4294112c5c2b5d54231159489ac31860a78a7b967da4ffb71cd4ca64ca0b80db7f93ab2d3df64bf476d5d4dadb55c3904d40f5395d2e39dfa8792073626bd23e6fd32550307f9f56ba852929904ccf867ddc07aa3f709b638bcd0d44f2460d6b932423efb551aab7b8c0dee2c5a72cff4337320725eeeb8d687ed623ae679c903f6d8e82b757ec1d6c466f1162e9c6e0f16c98fa7ee8f5723470b5a76ada3e66790c7ceb12987c1c08273c1c72bf2b38bed5ebe32e3c68ee51f4d5f132ee23067a6d6b64ac8305306fc11494fb04bfdbec36b1b764b9b411776ab828b11207360c4ef0d50ba509705ea855fb74e5134d9c5f182738ceb57cf79d8e27973785339dcd50cb7fd23fab70a2576bc4eefbb95c57e3604dc629b099434397764519569c16dacada32d59d59d139fe82998a990ba7cfde1c8bfccc7fdd23f4b6a4694d1ab96aa8952659689e710fffc0d57f4ef3e12cf08ae6aab3c298e23cefde2411cb6922165c2b5f27eb253fc455fb2839b0e93a7c2425ce94e552c7449092d306c62ff73f243cbc930cb76bcee335e48f28e806b810d5445c7fe9344e46fff72ba145e8fc7343289938475c3a8d6bec8c5431afa84e95e45ea69106daa8334629d942cc79e8dc5fc1f31b8c504453bcb68567ed12d86ad4b131ca6210b8fa086248e8dcad1566d4a39ab30ffa9b35f08c9185ae6c6e9baff2363774e3f4fdc3b16118176a12d2d37b6d086a13107d00edf782a9183e8c24540cc386ce474dfd02212ad86b3c5828f0f00552bcc5b0ac33a8f0cb368af883e5cabb5be3c216b3190eab5668d6114cd56a274bafe7ef92416151e74da3d6d099797642ff271446278d426a6b95daf53a19d5aabb673574523e86d3d92e8d5423aeb0b36edef3e5af470ead0b3a696df05df8317aaf0df943d8c7cd0d2d5e2787b467681cd1c1702744353aeac3c21ffa2daf1047ce052f741a64c9eca817510ca0b3752d6ec1c651335b428b7b7a8b16602b75863e24644948003c0363b875489e27eb9ac49ae5cf411895ff4bfc785785093de23c7cb1f4489193383a7cfa99335002e1a8f814083082fa6e393e8d038c2a0f70017dd5456d21a3bd73cbb20c9b4e328220ec065142e2d71118323dac0d80fc2f18da41b7391f70ab7c7b1df38d1ccbc1d8cf07677fc0c74fe766d12b119f4cbc6978cf51ca2e41726e6ac1f2a45ee583cc0b1eef4ccc2713e6516b4e38c20a321d722099f01ccb77f8e1eb566892e2abdd8443fa961a6817cde97634b3f14d416a4ca2715514ded8d86275fae5e5ccc70f4e770585cfbca4882b3abdec4f629138a3fe74a584e83c0ea1d572746733d97a80041a4c709f95187e16ef2afa44125c5e778b2801bdac8a863daf508f044fa7e160c068fc6e9f2360fa8ce19ccc11ccaf6285f58180849068da8e13035c138729d0c0d020c59cb6ead149a2019ca08bf5fafc2110030b71ad7af158cff8c937490b82855628a701f0fa2f265726b7ffe97bce702b62e1050ee6193b0eaee30eadb47b620583321d017b8a98c453bc096296c0725a60277e9046be87305c5b72b98ad1fdf6a28ce1b3abb24bfe35334ca1587a297b58e687639c5127076de5704148e99737f8eb72bc65fd32cee53069007c0ba1cc39abd604d6244863035d137affb749fea92544488a80682d22e8d1256536398b7334f64abe56458b7f9cff88404098d09ec393cb7aa347857e00c31d7b4a39726cdb30fbe28c5cef3a2ff6ee65aef466aa439fa32715e473955e0fd813592c67ec635469683759218748b38a5a2ae3d84f204fe1299de2bd61a783ee1ca9f77ca35d6c1e1131594962a5fe52d2df4c5001f2fd9848160e5eaa7b9ee55624921001ae98b317cbd8721c65e7a722e2e9693bb8eb0fa28213c5f5033bd296ac6dee2569a8490d5e361c49cf8f1a4b4ae4c63aca0bda911e4772236498c717ad7ec721c75df69cda4df052de9b4c1ec7ee801c6bece58c737e417c9f7f2bf478b2dee9bd9a4bf29f7ff1c60c426ea7db14df501b2c47ee0be5513a808baa749aba6602c272fb12dad84352edc1a8f0552c4cf8b6616b194339ee5f49e630ebf8403c54043af51980275c4d6685a6bfe0679d8284e4b6242c518796dd09f4efaed12b5d10fa8ce37b29eec1e6b214e9c1afb43bc4b83f07d4021fedb98d42a1fbb43aa1c5672e64a330df3479da1b566e6c0fce9d8ef03842b9a27b0d59e8fbc502fcedaa4b7ae2acc96c3afeb7f399c8c9efb1975553d29a26777d31f4b26eca50e5b51a3f9aaf69c50854d5a52c5a88153305e538d34a145f39a0a4a5db7e1d23f8cdd6409333da2163f7cf027a338a7fff9fcaa06c7b605a9d775020c5d143cc41ede5a9129daf4078cc5400056b2a1a52fa20442b64fe27c870296c2856b85c3611c9d8c02863907609e66504421a0aeb8785c5596550560a5df1c9dc619bc06d71663c819cf473cdc47e08132db0565b5aef76a0c5ebece694767f07d0f917c63cfb26b59778d9133467f6e8d6a447b37265a3e5dacfa44f72fdac2452f11b60fff7b6b307098369f1fc6e98487bb858a54dfa34b66cdc316b50b4d36ae036b58d19014d9ee7e1e63556e36f629a4790c9217ff46167d50044d5780f849faf40e892f86ef52927fe2c87d8e26fee235965c31cae9d454734b1ad27ea83e2ad0c9b01a3558d9e656c4fe469d4dc61df8734e6413c8b328bab3ecff1d88265821e5b88f677655bfe027f2eb05f07296e7edcb89fc8d4316373dc36968812d7c2e1325c6bab26ad922e9697fd909fc1d8960a9cd3a6e4f8bfe2ce1be1e794247df7cab039b5100ec63f501ad220945e84ce54ba796e02706a929c8793071305d4472e7bbcf99e966adaf5ae45e989529fe8a061a6eb01654d467a91a467bc9ea0fab81a4ee4afca74f652060fc38712d541eb691345bd64ba0e61fe93b7b8d3a1517f020e3630f675dd2dc05e1add7056682dd8eeebe262334bc45d79db9760dd03e2feb6e399c0f2eb6c407e63538093199c4bbb418d987377276902e46d6c8e0331769a2dcfb1bdd77f3655796a11414bc5bf23653ed95587250f6652a6afd85112eb067d17a4bcadac6e875f5f8ee53c4e53034a59a9dc782c74eee6b1767270d1ad4f914bdb916c34cf2f584413997a3aa7903805d6db9525a2e26dff147cf1615be67742c732a0af59080fc3e0f6c8c34200fce647de716bdb9a0c97becab09047615336b1f3063f99131e4fcdac2aad9145381f8ea0f368b32a254473a8d6c13783a0105c0984f2dee1aaf04e56d6c9455e271b3ab7205d2e2a8cf63656dc2fb6b6342d84e952328d0bfa54cdaa5596cc9628caac154958663e0c2404ce36a4f55eea3f13c9e1afb9e99a029d8877df1718c50db82808d38eaadd1f084ae12741e9003d46fed7be5ec9492cd8d915e8c0cae9f7b37c11994c2256df6d92fb42932d0a5666003cfb8e591e31caa2a87a4f329db046c6ae68458935604d0ee27c1b189bc036c2220dfdce59ae41b189edf4df2521455cf2c0c40f5f15bd1144564b86c3d613dd25435e7d859bba1080ffb5f15047b8ccacf1b787e68b3c6f09111067b084e705d902b01272617c6094302242ea71640378808be169bcd3873842d5f8f5e7d3852a8dd1d830462ab1169e31eee0e4ea478216527d5e42d91b352cbe7d4a7dae005a915a0106317fb77cea4cb9cd64a1df1c558608cad91b36b530fc4488a1f6e0e6a6a2ae75334e277c7bcd991604a1b8d5bc2dc3ccc19f57aee4c513f50a68cc632ec6794978444b2274eeabb24a01737f0ba029cb94d69601dc25de29eb236cd6e116b98779637ab4a4b6e1b4f4379623649d597926298c47b12dfab7caa2d8772d584e8705f654aacc1c547ae0169821158eeccea6ff5f0e7e3c9eaa7f9759a4f3b026caedb2d5d11d0c6e8f1b1c6913242a70d6f7cd653b33ed7433d998271b9a6128153323e124009613d39ff818bc48427e0578c43fe6293362eae75a2bcf9bc35789628db7f48452897f1a792f2286bb101ac1bad2800886576072d8feef4bff314abed4b1b5d2330db044aad4ac4c5ecde52ae7daaf8eea8bb87dfb1be3e954f107d89a9413bbec70358169b9edafd1f19f75f85848f89ecf0850cd0a63eeb55973a78d6b42355539d9905ccfa7b18400ab99d7156dd7721dda7b55767642e69caae3c891663ebb74a606854ee807a803bb173dee860788d9d68426f836c406e3e6cf3236f6a208b4099ec0711977f93ea421812a21f59df21efdd42c2b423ca7bc7308aad77c27fc94672cd7c5d361d8a3e9f1e14563c47ac3449c6aea00c357ea1b3451ecedd55c28e49984b91d3f142d4fef870b89243567b5b47160e8bc33702b711f77e4aeb1d19b4ac204aae996c56d00f0b43ed4d8914abba8ed9bd2a0c83ec53d0c1fae75fbec3f6a046d73c17cc760fe09a0815877718a1ee72c2305589692126dd8be72286f043f3489d88865395cc0cfeb37be1a735c2cf81d26ede50112dd89edbef94f5ff2048839059af54ffc053c4752601ecc3bc119ac10668c64564ab64a47af7ad17f74f14d7f4bd838c229a6f0ffca2d3c19b5800cdb12732e90dc6b461561f5b15c4bd93e4638fb37a5e6b4c439f528ec3338a7eef9a45b2faf63666ff28f7f18573ccaee615367847af74a27d92f7918f0952482bcb5e8557976b59156dfc3ed66eb8d478427b992b9608754368479139e8a1ef7b8a02256b20bac0b158c0c4967443f370a95655a23c9cd3881d4ec2351a276962fc3730d816d9f8f33a69eaec273143d7337872a6254bba507dec741e6ede203d6bf425646f65f1f9832f7a8b12cd245baac2228f215382383755f925cd801ede29a7efaf265f25e2d8e16fcc04630cd72dccb5b62a96e2d0248fd66e2e0c3a11afb03b87f2ab23e44b6117c6d8c37eb55e5f1b55ac1a80e613f750c41f45600493e4a7d0fa90a7c10e237b759ec51d4928fb3538b8890e1c4ebc406df133e7c3620bbc687f3b4112bcb2225820bfc469f552fd43dbb2007800633813d0a0f23cd261b471ef3b8e2ba22c210f8110b5e8abcb70e49306c9c79741fbf7bc9be877b1191ce23d0602a850c173e56b99d2ad2c005adbe81caafa200444f361f9f5fc2dd5375c2e733ece0737b053f33ff08f3e40df13422d17d6be2bdbf233cfa29455304098ec3efc5a8f6903dbc16b2c3aba0ee6657098a4a55089fdf633f976d683346ceb7f88836f68c37fd1b2895db085a04573c45f88c877c612c5e397ae3760e4cbb59354b4a644c8bbf9418c8e446e61c90830a9aa3e44deb3cab08afe8b56b4f2c09c0b9f922a8dc0ff81698b0f386f03adb03e4697f2a001eb2cfb682a000b72d99af9ac24b63b483573977d3e4a1def46ad0e19e34f2f4b30ead52128c8c8232d95ce58c271904c27a59598c73772630684aa248c8a85049cb346835b31ba4438771d77085b5ee5e60664d65704a955f840c9fe3471eb0c8f2a42121989275f4b23e00e7f440b771fab09c48b6dafebf058c5b10163834584850093dc7d4605f466f2c1bfeb1031540e0d5ec5b0a85eb54f1b2dec7ebe77174a7b2d5005c55bd2fc93c5d0497adcde1efdfc303e6bad8f63ef4506f2e68b9261f2a163394374a5eee86ab6d96cfa89dfe951cb89011fb6b38547cb9e950f7bd4688d6558d777987979377d4f9b32e0fee9727ab32a9530dac913e3b93c0cdace24be50e087a11a0eb28d3e80d1118b2693f78b0fd8ae259dc8d3f8629e2d384c3398bfd1d208cc2362e5e1096a185b1787252ab1b1bab92e353887b2523888efe1893783273c49613e949c9fda18d3dfe42c9af89179e96de549bc2f44d079184490be116babdf065f2672be24e6509ccf7455cf06b10abe53cad623348fee3cb1cbec6777e274a2c04637f364522d39f3f74facd28ddc551d249fca356b8bea4424ec0898932ad2c137d9c9477d6da0fcb0fdb26dd6515a85ebddf1306da0995dfe17490e728942a7dbebf38e72df951b17e93f81ed7eb4f0eef1335fb7e0a71eff2e628ddc3c24194dc0328f18bc4585aaecfd6ca455556bd7e79bd2dba466eee048ddbf57a90ca4078617b36e2833f490612fc1dd18852159b52bed82b125f8570221bfd8e79339a038baf91b30c52442d52ec7ffb1efe6f3796fe861bc88ad06918e9fdfef09aa0d5c1e724d132a5744184bf836525aaf43e7024e8129433e82b17ce361fa4b3081c91ac3e401aad2f8b70a8488095218e132b07ed3ba8a2367a18b0485671ae8ce0e40a6f69dcb5e783593ccb43daeddd1339a2d1b2c2f967d9741ef28b14e516622676999dfddc87f8b68e7e92a7561898db5e221f54918ee6b9b834234f8cfda6d486d033494616cd5f92046d88b2a790aaf793eace6ec8562411606dbb52cfc70b9a8f9f1627e482978752a2a9e6231883fa12bc3d9970b495cf1e1f199127f7ff5248e7d33f9e7f6441a5dfcd6581117d85e2e983867a35b9bcf48b18491355ba47e2eb5d8ae147eddf4fb6d53fd872f83878c158be843a1d7624c46299fd7ac2767028265ffca2d891f3fc9b768e41ed2495359dc703ab2e5ce0764e0945b9d16279aa5285186fe38690bb1ef52b60db0a26d1f4594bf1a932cdaa702aade11b515ed1e9a8d9d19f6d4547eee9bbe41fee70ae867b19bcb8009715ac4831d4ca220a8c0f79faf5ff61851f737c36f7def3e55149c64db4a88e4a25773a27cf1f049ccd2a7fa1fa0ed1e7aca1471fe9e32257873321294969db3192787f0a0ba58269dd9b913a3937a86607799f001e11ee9f6f95261b8ebab5fcd8f2a39984d3861dfdb06e2daeb9e224e8f11ada45e3e30539d70bdfce2bf434e30c5ad9104ac3767c28364030a0a79b877f4ba64bdc570038e35d4cb95edb1dfe5925f26a314faf6aa511baf2e9e458318444f641ec275b949171a4bbdc56d620c86c9313c078f6d48f98c933400f5122019434ab908dff83f77466ffdd8300fe188463acac5f144aa07c06528322c2fc72b97b2c23da1fd0252d320cebc260192b197693c0eac6005f4c4c64f3140b53e5bec2e809a83f23e048070b4417090c4235f15fa43632c58cf29407150bb1a319107d7ab74a177f199d1dbbd0ea37c9c29a7d71eb64a0a04c084506f8fdebf01e2546989ebeb789b718ba16fa248e78d855b37f10aac11b6b4ef8788811912b47560fb4e89a35467ba3c269ccd5a1e841dcae055a7661d390b86b4ce6b947ea4985e3ac319e2517d79b068d018cb3627e72a6e413f6a2a0b21eb1ea725aa347d4ea33b3371126700507d864b29ff764a6c11c06a9a3e06d0e4c3d665ed68b810e52bdd216175506d307850b2264e91cd55fde5bffe7a4dfb88370f56d31345045011b652a29df6558f3eeff05687ae7a2ace965fa04eba4b69748bc1959fff73891a97120ef224b360ad97fca16848abd6473919edf9c2f10d2b1bc9c838f9face2b9bdf1a30904660674f677327d4bda0907cb58753887bf8112720edbd01c955cfc7d232e62cc7b856c1f77bec3ca6e5b680894d4414e08f604dfda8404ab0fbb23d6d24f7d5d11a2222b729542e23582a8f16cf4ae84312550ed2ae87d7548e28f9aaa01d43d8b9bd242749f02e62843e63b83af7db50ecb0889bfd8ec4e77ca7227d73614f8872d8fe9126c48a1c09ab02a4d6714b3b373746de0e0355182c48ef0de6a48f65936b7da6b2c80d774e0e26b9cdf195ce6733189f36c9d724af4a1170841a398f5d3129d2a16a8e2e826631e84044ec1a6af103ebf17659355c8fb89b52ca57ec58297b0b3a0a48db4798bc2e454d6f9e7e423fc020d4266a8d1e23db560f5538041621fe867d0555dbebab6cb4819e032ffb3c6a30631f48e39fbd08421acea93e0052cbf88b1b825a8dd8937d6916cf9976c9a20bd6d76c88e2d340e86dba2d06b132d00571331b8b0c49f46e249f962510370a3e928cb44958d1e82e61e270ca394a244460e52db8ddf9a64be28a9b65a99ac81832e43bd198112e0fa1a531a26b06c293fc226832d835595b6a64e29a27186ace0582e7f5dc405e4ead1194255e508b5edd717695b97efa8995ed21c6f33e486c8e685bdc814cbb975848728dec309ca711f6fe33a1050f9bd06d23b079761250032c8c998be3acb54b36e3fc36859d9f984c03f394b3a8ea9e506ea7ad7a4738cff453221e8771c2809971871ec309b8e735b36cf9c148b4141459f381e8b1561152b596062bb14ac757bd9bcbcd95bb6610fa691de32bde5c87d92570da39dc1bdcb56230669386442581f729da2f46f22251a1b0fac2d53259ae86f7949d4df3a6fa412f333b00ef7a362f666346135cb7a03046665a206af6bbcb1643e390d58490eeb840ca3812ddd120762f49fde7043a77d7d531e168b8b633d3c2950baf188a2626d24d1fcf71515e91639635ceea33cc3fb486bca66374e1b7811e5aa3b85dbff62f377798e717bab0a84530bc7ab40cbf1f532d32f67e074f69ce2088202db14ca8419eb5ab4da4136083fb5253f1247a72c3992dc6c20cacdb67376af4605f6d1fe87bc170c2f5bde76d3ea4caf085f95aa4304df07154e3bf3bf8061342e74330ccc62d05091af6eea6e7bce855f1a8844be05b1677bc8e9e2bcc4fb87ae8dcdcb036bc79c747c8da0aa81632c12356d0bc85b66d11374ace2225ec6fa90eebceeaab0598759b833a40b2224290adb91c0ec9cf1d741d37b0d8f8b7d76f9e462868cff5a803763a4c11dcc63506b9e89e4bfaabee82fa7bfced753f32a76b66e3b1304a8b23764491c12ad9e52694dfca5ea864470696bf1eb71d47c9a4e9eac38871191a2ec0bb72d107a9f1ce93fecbb999a87cf0f9b0a245a54520b87914d7ffa048e3de0d00f6e1d77699d24c8a8dc944386f8e047fb08200e4f64cb74a843682152e602c3581aa71f4682d2f2b5370e46b7abddb62996cc2821b5b44962d141d8d516124c1af32ffcdb18c466ce10acba8b2803e1174c98db20d0e842760a7a1165b3145d036c2271dd6be423f36c2a4ef738f4349c9e0a9bc70cec4ce940a59e60418b1d1d938fdf462d1f176d12bf05140b78c4d500eef184e17968280f01889fc66d6f66ec00bd8fae7044b8d7a1273ee2a5860bb3f27f727c169dcf439715e79fd75b7f30a1740101650d906c212102819224c94afaebadbac2b9c5037951b2338754fb18e841a70c5b4a0960e36743824bade286f997854f82d228077d4454887be3e71722e469c738d05d9536c012b95c9678791e27d0d27a3f58d4651b96425e1c5c11b5f18f6cfc0cfc673bcae3964c83c8b0932c564e8e240c33d8526f8a7f56d4a9101dab88499ac5de0a3838b704837f98c9685bd65e15058870e90ac648a803023a747c4341faad899ac1e43814f35ac0e29a372429417b5b732cfcce4ff8e8b0bdf123778f4be788b5231dde93196d1a1ef3999b77bac415e7e0e0be1caeae9f8805dd9e1ac40dd88af01dfeb00c035d87d16937529c9c6afea4c977f862be5b4f7425757256dec6d4be9d42f299ca0edc03c71356a4c5eecfcde85ce9eacc6584d4e4b46a8e44b23dcd5a0ef4e1842521e632624aab6f36265eb85b4a00b3cc2b60119808e2a6989b7c718accea32e668b75899147af5434beefe7d1e9ad1b3aa04f97c69c26128c3756f5878ab3eb778d10288dca80d1372c38f40b8839397fc9218b5395a59de0562a10a2d5420c582107e95a63976da3ce6c91bc95194aa7d3d5f1e453d7a3305b81f208604ddd1362e17ee9a407a0591c013bc044fcd987bfba1b1852d046b377adb321ff5422a96659aab42b05a4fe87c447dc17574f993f95961da1080b77f194279c0fdde1c436dc4cbdc46c5937065380377fdfff856c20e80f3ddb3fde742f5d4ef7f241dfe60e4b81b33ab5b35ba305df291055d75f8518771d0af80ffa0b6d91fe9e7446e4453f1de911c2e66a7a8791e3a9007374e70cc38d39925fcccb97f95173b4ea390cfc015ab7308e13f5ca4ac32e41da70d9b1c6276fd1ec06a4b4837e0751fd1ea2dee72296786b98048149c465365dabe4f57d419985fe1edfef912372cbb47079f1e9d83d88d0e9e96c89a0d945b44c0694a8be06c4d9e25ad951e7d102c8d0b7def233dd05e2a5bddaebe85b8fb1312eae03feecaf17aa08c365f3c7707202b8b2e53dcc1fb119eb6588e47b71fc90c1372c09e2d2bb526c6feb60f77513c88a6e2c5405ed8e10b30fe0b5131e09761830744564058d0c22103a048bb6baf36f6a9694a75d3bc9a8a5eca1bd3ebe5600ad34a353e772e25794f1f9b08633955f88b0c172bbd1fa3378461a58a97a8538b566b072e8d9674c47353017676130833601464dba946d0e61da5887246d05f6ea8c02eae05feed6be2be87691ffaebb41d2c0c218fc4dc919eaf0313c705363063823c6394b2ee1191ed5059515511978727280d0a50a48e250b60226dc091a20b08978a58e5ae88ed00f0203b337641b19f1d8d60c40427746c1e9b500e2adcb8c3353685b2f7f4aee8d2d2bc4459623d5ca416d27efc4581a229862397a2002461d0e3184a8ca9da22e4ce811fb5e51321cd5014ffead60a10d085acd736cdc0733478132b3037db9b6a87cbe9d9f107eaed19f13ce2fa94fe8f2a50df0fd1d5351fea5b05cf74de1478f7ed17eef2ad6e319f0dc7d54c3389b56606330358f349416404ab68906e8f7d0d4a466194a6b92b1c97a56773d700bf8f73f21e7271d83d75c85e42e9b0d2e42c3443e9b4aa1f3455207b3c7798461de8421e4dc09a59e6f1e369670bdc5553d0715db295ef7f6a2aebcaac7d40d0cd32c1d01514bc3746cf42e6e6cea82471f044d6a28fee19b3b43a0b0d11b8c0de897a1c4779144a743648fc053c96481c8ff1c5a34ae0071a58425588e530c33ee746372f27a8a3fcd61f362ecd9e3ea1e6f8ec69a8e59fa1b582a707fce5046fc0da6625bdadd41c43705351173d4678a527160dfbe848bfa03efaf7893752befec51d3bec0ddb14b0034752d115bf07aa2e87c3790f11546b0eb431f144b1fe58f8b321d58d52063ad90ebc5f4ab3cddcb677c0e88af862477a5a27233e1f8c12dbceceb8d026e77a11373ec10b054aa3c3300833265925e05e5333e9cfc65ab8a3e54918d1798d1d7cc6fcc49e97c5900b675e8c45e39e2caf07ea86770978ddc210dec0a815e229dc04e2403300b686c3e574490dee043bbacc6a81396b796bfb483cd5c3bf8fed77242c5fe23a7d7dcf321d143199a369ec13489c95dd2bb3aca58786740555de1620d148b6a5bac8017697eff871217f02df76bf4b08b31d4ea5a2557d8361cedf9d18c0114a67036e29e6d367ab46252e2fdc127211ef5b5e397832a57ea7a02ae8d3995c267b1789123766111b23a8c4b58d4551da144e2654e300d11999b845b1b3d716c2a7e5a75eba3811010e51aec8c3d5627832378a70b42828fef094b17574e27d3b9ee931195b27229494d5267a76fbcc379d807390dc15e51552e4afb43366e0a71999ea318960db2cd810da0232bfe1de66ef780132a949f0ddacbafe25230a8f11de29f52f61aeb7632efcc4e09ea9ad236f78e2deeca4061c337b3bd14ea77329af0f78aad1543003632a431f66dd33a418639abf0cc1560006ca20e8258cbf437d33bc348bd3ebc090a0199b0adb144e686b74e0bc0e8e08ea503c6b477c2b89b66e8058b78f1054793a45c4c69aa6e42e3270b8a30f924cbf855ad59d1243a74c77429ec872f633354f495b1b34c7cb341b919aeeb0eecfe596751331ba658f4cef0791708e4e6344dd8121bf9a1175dc963f32caa1dd5cd3533619625b00f4e9f468468c4342652991af3985518b3a5f666c9ac8ac39ec499cbb3ed190ccb3e4071ce74d95dfebd9eea088e3bf134b87ffd6a4b5c2c3ad5ec0e36350905f77e4b3aa080276f7c47cf6547336a6e5a0549f9221ab923aad3372c9781cadd2352a9502008955573e5f847441434378ebf6939fc9cf05f57f6fd37a97429b475fd5ccaf13a21daaf312625948f15b0225c402c084cc24fda5aa55311ca642b634961632e78c68045eb0ecf92589b3e7e1897cfb615e8f4397f6f2911cffc77f604950b12da2c71227318c8fbf898b3cc73d8e00bd8709546ca01bfe9e6d1a6dd7db795ecaa2cd3f351e6e59049af5536af532f81eaea4d06037ee095039339980b7599f6e6204967ae7a85effb224672539142b2935ece20d62aa660317c72f98683da76c1097201d8e6f29e13033ac7aab7c6818f18ccd652acd62a0e65e907cccec63d227f9d14c28be654679fc13245ff70459144f2586ccc27084a1f44fc3eb5dddc23731bde81ea3967234f987c75374ea9bc575b417dd39f3b2c252cc24054122893c4d173d00436644687b670d25aad67284bdd89c07099800d98dbe7bce47a7f75a101f78d4d1dd526412058b73318a763a6b298d5322cfcda8edb59a027df177fb966743a29d340e8b0a90dc3100ccced594ae44190fb2896b4cda15be2f7f89c401af57dfec29e094c2cb9598964d0ba69483eec7fae8dd6365ba0646b71b06ac1e386a0d6688cd81fe6502152aabeb467010da1a191144304a3e3b34603c9bdbfe16d118e1dc2f977fd7d8521b8c337befa9991f625691b5bc1cc46d22eed1a2bb444e3940876e3d4626635a4676593ca3923d0299ed6b1a74ab09e02773d3da1928b4c3f599663328b2ba38138d18ec76b8cd7688cc0e9b2d3fe3f2f23ca9380f80925a62906179ebca2887023e2df87306400cc42f5bd20e14b33efde50c0cad0716d17ad52f41de7e85d5b0b71b40012710e4fa8c7ba3ed8ba8805c9561bd74be6c6168ca8c1e643f9e3947ebf2da4f220a25984148322cbf2cd5dc3772dd5c863f6ed8f2b99e2345b9b1cba50de8bfc04c7d782154d183a3b9918164c361f7d8968cdff346d871e514ff3205151735bfb67e2722a626124cd04a8b795a85cc3f0a97c516780fd35af877f99c082824bc7d3f7818f9e4202b52cfccb7eaa743c11eb9a0ff8e9957da6150283f061e8469f3fc4754df56282dbb2bf2c9396502cac856f170b1491695d8a1a358a54455ca8437a268feb7924ec3aa40cc77b6ebcdc704a907c4135e724be5b3b3fb2e5f76c5bbbbbed1a4e0bdaefbe074d9b430e36cc743e010435c0754cf0be7849cca91c68106e33b003a0b4fcf43236ee6e47cb59b11317c36594a7134fd0d7d88cb2c92ef2ce8aeebae0561478fcd69ebb0199ff4c1fda3cc6e37fb6ff821c96f660e8d461d90eaa7e743deb52efb389f3c88a46bf3f74fcd4e24c1d6f0d16a98e8a0b66114d36ce82de78ba05ac49c3819042deda3788e836133df2d35e92b0daa838561c16a3d6b26a42bf32a85b11e54adb198e09abb8adda092523dddf3a7b6535f74fc3745690ad33bb5a87956ef20c1b6c33b8b8775e92d869143d584d169fdf01044d5b7261b18172a91e338ae766ecf271d4930568c86ab436a697e01131f81083ae4d65af2ae62ed27513464ddd81e8ad73a995c9ad53c3149577601e08c8250314f6fb144e123dfc561339aaab39320975652f99eaed93692da12f914dae232e9f9b165d21a06ebf3fcc2e053b33d5f3359d2f8a523ae964ee8e208fb3f5533a04902cf161789830c5dca437f68a7b4c18d9c4c333a5ccfffa21fd062c46e19281edc7975a8c14febcaf4c10665cf2107c4f72073aed05616883017c94a75c10f4bf048342943e9cbd4f8f45bffdad9e0e569027200ca65144e65fa020513ac1098a15afff3bf781c73406384c6341839108cbcda90e80c145e3b9bf8d705142d575bf9066c92675292200855c3ceadc7ae6a1919f3eab5b5993a9f968ab5fa74366dc1351d032e7f11aff68a426034b1133e75ec7de022b7c423b4cf25b84f3368ddbe926fa8a617f2b3bf23548916ee5f5442c13fea44e9690716e6672c32147203b28b13f1d0202471d037ebbb9faca93b401809475be471abe7ab97285bd6b4413375335e20700c0c524ef7b4655b31a054f5f319a1fd94f8c690c3e150b104f8d0f0333526f2ff3852944ed24c70b855d92040001a9c2f4b65b673624c0530967ca9a32e99e3694649f84aae73c816bb24e11cdd7177bde0eb582d2474c7ab8717e5d38a82326ac9d12350545974bd65052d9030fb480edd806a9e674b1ca4c116fc9fa967dbdc11d205d80988b6221574d9950e264cee74dcafbbe89ec613ec28a11483afcccd308584d9e5d143e313bb879b14ad52ed01aeba4a6c5edb94d9039d85823ab46c634f04e8bb7710488420a984585a81f92de21bf9e4d21e7939d7b05d9604ed0a2ac46a78aecb947250940901698be365eaf1effd6a887ce0ca057d2f0086fe8952e34998ee7f9b47c00b2406eca883bdf968367f1445ed60b61996301b477f0e1ae2e4e0fb5e5563ae93ac207246e66840eaf9139ef57d3d93ee08d1900e1ad19d13bd10708194efd5daece8ff83f7879895655bf5e653411aafd9c600e6e14d473b385fbb7e720ac479f0f7657be9b89ebf0d8b3a90daf2ba8a338d602796bb321d2c3093cbe048867760f06992c43160df1547fcd56ee1a5463c0cf874f200aa01b85603412c3aed0d8c61bd9f5737f3bd013c5293e06b45afbb88c489fd79f648d4ad2e3e21b4d6a5e008d776132d7b7e878f201c1ad2b7df6241578f28f1919a1a6eeadc9c75d71980c8e9457ff7d34201805fe7481df129ae2554b3ce74f1e1f15c09e9a7b73f46780ed99359a525b6228ebacb0d02e822469187a75d56e05c10a3de3948fb657a4f7ffb0b2787349ebda40fb43b733cc5b7f04c3486e1215a4668d4f232cf1d111167a49d4a62c0f626134bfc085c3006cc55367cf7bb4c88baf80d72c1e3fefa7404497f2009131c3ac093053ba3bc5152c40ab5d04a74df4c6f416f5b4b80f28c98811cdf969281b2f0e6b2a0c47d42cb37f575f0d8807f5fb77ca8c4b3ae60386daf1ae5e9de0102accef704bf47a6609513a442d930cf3a72455d25f3cfa931057b8a3cbe43a4054f420d5172f1a78e7b5a47cbe75a623bf8f3d02598a299e2315a8bbc1b68b64dfc3c7a1afe8a9854079ea85c552d6defea6acd75f88212cd4044860918d1b5329a49066590530e0a188e506dc73ccc1a386f03ceaa2e5b19ea4e4b88a4ca8c5a1608a302a714e145cf973fcb2bc70a1d1a1fc8bdc744e8482930b1f2660e0f4ae96ab522a95b3484fcbf5f5fd56dd4c1714e65e622b889fa5150fa3165aea029bf24abe1ac4a6ec741cd061d934e01fb89567f0e0b091bd3a1688a07836de35d463a3eb5c1c80b68009ece9fdf77d65a5575e0ca532bdbca30ed2628e2b48020ab25752bfca2ff232e938e052846b8a51ff4d902ea734560a808ad9bce1a9e5f0c3e9713090b41f36e923bbb104931fc715da7b3b157324e959145dba35f610b777416a9aeaa5e1a15425a2ec7094acad805091f47dc7f93ebd1883213317e373242d246947ac3b7df5340a6ab4425226071b86dd76d58666090103dac969331cbbdb097d340621da134f62e76c233daa7750c36ab21551cc047daa09dd3d6cc504614f8c9a0453648ef7cf34d9f1e754bf22b65ef052f9fc4000627fae577541ab36cb34aa8d8f7d69b1fbfbf71a2e44266eb050112bd2c58e4041ca556f6e5d90b55e404b9a0f41fb85ede306432ef8ef3059ff5296c66174bab36ee6b3394d77a1eedd8bb955088c82f9a38ac1fcdcd10cad500d5890ec1c2cadeb2443d60d2b9cebd0c38c4c4bdc38bcd7c81e26680dc68e21a28d3e962519ee812eb48ac81bae6ad9dd47b5f5813c27a6249a01747ecae746b4260c51024858ef438edf80e4c5cdd67f34e68b78a79d8d1fa7d3c299a55862246686f370455390fbce6997492ffc669832d9b8909720e7d76cc0d32a89796cc465030997df40997b6565eb07212b042f328a1fa5ad8bf2be448e739bcdaa162d8d68caf3a8015a01b61fa53b3436e331b9a5899b8ee17de83c38b3b26b7566a22041f9447989bde61c32f33ce28714636287cd4263a879c698502e04817b2c7faf2497daeb83778b628c44900d92a9745988050f58560c5b4e33cbbbd0f83831a46db39ade089203494fc9ee79d6e0d9e09df28e20cef6eb89085f0d40d36f6aba3fc923f6604d310577447b4d7f9ad1ce47a4366feb5b0a2797df525a3b1ecd7fde671119da83fcc05578ee968797b40acfbfc47f1f3d523ce70ccfccdc3304d9531f64f2ab03ae16deb7e5c47345a015d400198c1d3e9d8db4bc1de99e41ea7e66eb7271ec901198bd66852c9a182d7e2dcdcb5897818416b1319627f55f1c7ae09699499481e54947725084fbb6fd6b16f637a809b1f5859728479fbf5e18ad25d10c7193254b242e0d6d69ab759a16ad00f1c498814fbc0d85bf90bbe0cf4a1af0d9a4f56c5f930f388edcc8ea3a4ec18fd1fbfc47f25357c889dc83446c5a59981de1167edff9cde060c10696d5f2f2c8e61d7f6d7113d8bb1b89217dd937bbc5e9ebe72dc12abba2aa5fc4e10b7a20cf7eff04d89a7c66f9fe412c3c90112cee28c9428cf3ee92713fe3b5fe4e6e25ac89fb2d9759406e3b22d27a0f026cd23809474ff60f8245b992dc1c5ce8ece8434d6d7f6811c6e29e96af6354fca085032074f760a01692bcefc090be6626bc2a2637a1e470a80141776e8d225158943083226ccdc34f713c546657374fe20879b03daa67e035e5e25c484f901714dbf68a6ab91966c74fb27f8a4d7ed7f84ff63cea7c06a4efe67c8a9da1f2dea72a2ecc256b9ff48818a7084d5f70ddd87735e8aa33237f0ed2ebf26d9efa42b9fe512073415275950ff130b290b445016b7c026e9d7228fce52153df91d2684684b43d38f5502a627ce2c02296c9698b0691b82bca8425d7a885dfbe9a9c0f1cf09b779a0c1a785624b368e9fcfd439e58c5165aa722b5f389686ef6daf408612544bb85bfd6985095ae06b7e31496f92edd907aac12485554bf9c1c3859200cacfec327ec6dc31f40f1b71f43995d6cf5a6328a9716a839718625e4ab98b267f7eacd741b51d10963bec81bc621875ee4617e8f3934558cfa7b87a824ac7894fc00c4a395351a45c4b870863207f8477f4bc714539bd1729d1920e8f59a5304196803ae862b31813c88c6a0614fb43763ee87a580ba8cc14cf815c4d84c3901495453d632c56a5c11b67d8ec8ce1c4e650ccd533755de85c307c8847c6bbc25aee39d1e3b4098ed1fcad0d890c2ff42013e4f33d1ac0a7ad743fa11a7b50be165b64bcbf1e22f3ad7f270ea40657cdc17a13edfa90e99959bd1a379e565aff8af3ae1eabeff2ec202c27393f43f887afd3015f34a595e7c52ae156ecc8ebd0165e7a1ca94505ef464c8fe88253a3b8fd8a1fd91a84a7d09315a2cc8c88eb8e8bcde8a7e749c45b6211ae0e203aae51f50d97dde6da946cbf02862ff7ffdcc6d65b3eb5c02d907dff8055a9c5ee759448a5e1d82599b53843222e3b1c0b4aea3e84941802a3a95bc508927161c23c1ab7a5bb12caaba6cacb09b362203d7e6726310bc4ad5e11c8f104b26954285c9178109d10c9bbcd0ec41f7adb779f5fe178c0608dbab216c0b4b2722c090d3f9dd57a3b657f0ba35a5ab2e8b7ab1b7979f0850829dec80f5dab895f524a6227d6752367ac7937270674417bd9ac2a6236f154b05b84ff88d17037591b2bb53c7b2ebec24184109057a668722e710feb0bf7b65d99dfb158bd4dd04863cec6009cfa4ac948c422c0558b2c7805a9ca3e71ad829267f89fbd095f21856fb0cba8a65332189683d9a873021fabc8be1a922df303f74d519688bd39ace340c1634a32d008f7c750e6ab565e76073394afd56c3dc546eda7840c17b6a4fcdee1a4d3f75f5061c80b6a0e10d27afbac62d1f4b4db934140d5347ae6c8a6a5b05d3c68e9e9dd54bda56e85f7372cdbcb861107e59b17500b179f7d2fde20eab1bb2d9bb9e9147a6d83d7ad7961ebcd13a5acdfd969388364e37b2f67416f08bda90824f7f371d4c54038e9fa8657df498dafd570839192c2eb4b3ec904be0e553e5ac35ded047af2ab5df4a8f5931bdc735bac186fbfd65e16a7fc800c8a8e1798b3b2a6dd9c9b9bc131fe867a6cd86da1e888d3d7c2f0ebaacb652e95a6b89a71d32b671b5d4536fde59a5fd241b0a8e09f1082bba825d4f368bfb6497d6da16dd80ca44b07dd52c30b374563de382bf1a54e5a4781f91fcd33f3cfddeb684682a3574d44aa461e0ebf90826197767f1a8d561d1f5ec6861166955353cae70208e101c22dae380fc38f0005aa6fad5c84c8e862cf16ed9e016e09b010d1dc92751c841c575aa94f50f56608f691d1e90815be30602cdb0204c99124a7d856249a56fa96536cfe3c5d6088698202b39b6d5f36e023efe6b8d6ed1e36bd1f34eb65dce7f40c44113680dcaa6fb349e954cab2055972f535ed56c4268b68035e98137a610a835add6600a7f7474fe9d5689883fbd911cd89a6c7052cfef1fe9d424b22848823d288632c7fb0172d5120b47f86cd4909c49c409f26e27cf1bb147fb771f5fc8a94c0fe7bcaa2395f539eb83fafab0877f950527de057a8243136fc45689bf083250698cd0a3853630e3dee10415f73e0422fa85c9ceea2a23cfed25c8ad65e495f84cb24f0470df6ec2e92693b380d15e553aa635564e5a2eb53a260ae9bf900b8572eefc99bace057f1ebc4741ad308f179652e5fc779bba4822b3c7b25557fee6005a2c33c177d66ae4319c93679d8748c41341dd93eac9b6cb1b51a14c171de42a13f02542ff410b2fb821196330a36473b9cb483d38a5eb6894646b38c0b8fb2fb954e0f0c2ebdd41a6515f8b566cd134d7a6cfa6e946d128b4862a81d8722918f2ad932ecd4b03bef6ed51234eb38cb1432704155695001af9ea5f11fa3bdf8ae6f24ccb6411b902c6f1d59babf437f49a796c214b6d6f6b43ec7deb52a2d012c42a0cea7e55ce5cd811a2bbd50fba59b95654b7897ce5df5515f8bc237069f93ce9ac22449d7b1c12cd764c874df1e645c8708045ec415857b91b83419a09a604dbb1c496ac486cfe0c182452b62f5724fd8783a7dbdb0f561c33dc977e6016546245ae8528eaae4b56aa0919b97b34022e8f0b4caa8785c32bb5ada372819669430183da09413d4a8955aa9421cfafce91f089c5120b13f0c6835ef5a18b5805614f2e8edfe59871324f8acd5ecebc3a62eb0a16150ae497977a02b43cffeced88758550e1e98adc6aaea1a519b2293ef03fff37b1b654527ad07a18f619e66a509e8d02d2b731c748ab1e501b5d0995c899929671cdbf23770dbdf1d2d421c90071623cb23eb415e02b99d583d8ca3ee8698294c5a86aee4997281f485d4fdb930afac842d02bccd2c0dd8f50b0c6fc00236d032c758dfa7a161117a9234675c0690b24575d5997717358ae32eadfd7cd09deaf2dd06c7507366a65e6d8adf116a02c03f8f9e5426c0712b7b5901399770beed2275c19ed997fcf249cf547ac2d5ad6cc55d3414212922400b60c7752094c2e9de612b1d75256f98770a4e486dd905a1a8b01b02b2389863527c732d5f45eb5b60f61ed0b21520e54c229ae658e75043a2fdfb0372fab0dd62acd7b38a75b94b45c546046aa7d2664a722ffb293eb87b0b8d0c7c6876395b676706c582d40ada5a56602a6c338c4253b3569da98209fb2afa58cd8bf8b467e0b1ee153e853e08abbaf99327ac1fc183d0cebce1d1635abb0fd1395bcac18273be52b0c527ccad512881250aba58853ffb79583032ec4ba3e5bfdc65521c784ff6886aad1b5daf13de6184d2d9ffaffa4ce0a73280ca03066cee05986bc9eb6a035a719a02259ba370121d9879ce9dbb0e54d1b155fba162f6169e02cd5bab5abb4c487bc6116017e0195883cf8f0b7e33e5d7bb86112a4dfaf24125cd982ce38399de8f01fde09fcca0c529f2008fa6ac2e699342867cb0e57f3493bcb7b2082ded073e614740dc5294c133f32d91d5fa037feba09f5ad862111037749cb1eca32f7234aded6b89eeb420cde466c2e9233363779b9fe1ff71fdf6241051c1092e85f38016bc0ab5bb07160fa7ab34eaeffce5595e0a22e7814f5ace2c7ed9120085bb36de8dffa057be598e6eb4133a4e4be6e3a4b0797dcdb82cbd969bd12585b3addc26315afd94d73207230bea769e10d1ab5fa324dd4beb5cd8c5ddb56dd0dfbc069910b460f5bfcc7210e6f070800dff69fae08f6ded4a86589af39f48dbbabac756ce82f76944a43f86c97c4fa44732420b7b36f0ee36268559ef4d9466730b428a07150dfa384abcecb34e5ddbb5ec93122814499608752cf2bdbc3fa13fb2f88eded8057964ffb3cb719846cfbf78e04968f383d8babbf1e4ac7c718faac3701ff400d32c4739312054c4dcfbafb20686af8c371b5b3f2348627cb4293592d1d5c3b37e3bf41b85ed604023b5237b148d3148f6a383851dd51b60c54f65133466fdcb3aa55031209a2aef9de40ce743b2e4afbe9b3b4e65d4ffd9ab73df4b09bcf50280ee67b2cfac9c39c231258241bc55898e3852fe0a740edd70ef2f7d0d640cbb523a5daf8d37c7ee8383ca57eb49780aeeea31a10187c85fc27b315023f1bf36aac8888483ae6e0eff4d172c282feefb888406a6dc70840954499b578ae0d87cafeeeea56abefba560222b6367c38d8e327e640906bc4b9ffaf0885aaa66bff4fc1488b3de813f9d75e9d72a3ee3534941df21b38c734d8f1a5f171d374796fe6744f137ded06b6c0299f3dd66b32c6df48991ec8aae680f088b68e726668a16fcf92347b7b343f73c2efac20c6ef101099e0f4c4847cd0d96832cfcb0df56c3ee666e1fe2e577ae4361deed71ca419266033cb5882cea15bd999646496d9949d287d34b429aae01e0203aed3f8ec8f53758102d13fbe1f7a1830bb8829860b482ab203ab4a7792be1a1b49f17859917e270f9c2109a00e0e850ac2c762d15bef3dda61d8f603dc765172f6948e5d9ec1ff60d35faa5b7442655c3274d49216b7df964293711ee38cff59401f4ac07eea53edff45d0a64815fd0401269c5992b9ef7e0a19c5cd1a580531a77c37d7c3fea87da3b0f8fae0dcf459023707b1fe82bc2315093be688c918debb98ca204fb2e5697d24f328debe0f680d4847a5c892ddbc21e86484dfe163d558e4db0fc4f154179646f1ab7b36322499bb367a92dddd84269db4b0ea3473c3e1d6341a14597865795f271e4395b846e3382dc68c4db61042f5a4add86d74379b662c5c64bdaaf241e0fc70507e1dcb2d29e462d33d182c612072b271cac4e63c91536364a49262aad8ccca8568f04d853d6be68cff8704b73262146a9bcf63dada31f2cdc864101580362c48201cc3cfe82c96ef5847ad54a39d2098c63c621fc411cf2d99f6d65db0fd3ea0447d3e98e20206fbff0f4604d09728fd466fe2a559ddef45b8a0d854677bf0e4c9c8c829a45ad5a9219e4e0b7707833fa853dedda60a95517cf170f4469eb96775c27a10ee693c9be00af19e3f6f83698c7e51973c982534702fbabf157bb6f465c3580544735bb8cff64ca42e36aa7f2a9bb6c0b119de23d3ab503a3e6def5a8990a89e6c1a7e2578840dce31508fc6ca2954551dd4a4b116e53d154dc7759b2381bbdbf1c8c4e3d622d4479776495f4b8ef2c79eea942762793580761336d04cf566c8a322e6e3db2742e796f053379d6ed56fd49a121810e98d090fe4a1556f1ca501158afaeeeb3aab49c5eb34274761129f65897a9f2e299f9a11349344cc0b18da1eb583b65f8fba5ca0646681e2eb9e127a1ebe4a010671699b570bd4f624693a5951229104ef948f089f43419bd1af5d40f27ecd7d55e32b6f7cafcc56ccbe1ea4b8abe599944151c02efd7fb5b143cb69497bb2cff9b97373ba24d2a56fc2bfa5b5910a54d66390f18fd5d305f6f2f1a8a15df9d4b336de32b4ade876dcf00a4058ce6b5ea08fa7a64f28c474115fdf384e41259fc52aad59c7ab47aae62e0b22dac51d52bfc28051c4fd8a810edb5156247e97f764aa723acde53bf95edc473a93d09fc2faccc145562df3bc6d27f0c2378d32d6fdcbb34c6bb6967059dfed3afe5e75b2ffb082395850404c545bd043a71829eb441dcaa8f383e9edc361cb1acde9681b1b4866cb6f07b46a0a55e82079888d191ab8d68ed52397a54c3bc4960d20c06ac4b2ecfb8d5472e4c94b33a7879eaef63a214dde9d0b979f98416aab5d0565fef75f7eac770b3d9bdc5c71a97df38d4dc55a77a08771a037caf8d11e30f20bad61b5fd26de9abc050b2e67fce266c59c89d4577d9cbe559c575e91f520a8aa3f57a2a49707b0d2ab5aff6cf838d400972d24794365f4f25131c813fb59ec28f2a2a7928d0777c1ac1cc6edfb269fc9a31eaf8e642ae8f3b038121340075a0ff41d1eb77d8779c8394c2b30e5b6e8c15b54b04477c475216206941397db5e1dec1ac6b2401f5e36173d87649ca17f950fe34341b6fc0b77e800993517a5931b72a0e9e2913d0ad5209a347c8aabddd6405e62237f7d345c16c3548c9bf1e2f393739b0790a0e803c2b3d4bf1a11c4b6260bf63fd452f9bf92d28d6f42c32f154ef2dcdd415e56ca7e1e5f733e0349052ae373f8dafa49be59a678eaef546e6c19beb4950e7d78aa6aa11618ec3368336c66a2c95d06c2993bfd7c7fcaee60c95c368043411cfc02b074bd059c72681c3e3e789c4b4973fe5a84dff5bdca6a59f4c2094b8b2c835c0dd0a225cc58a836a6af3c76359b95b4afcd89cbf7082bffb2ee2d4a80b8bf1553c963937c06a46be0dd5360d1273e2485966a326db4d1b1da51193818bd7f7fe78279c8b3ee453fdadc60437a4f804dfc5d283654d760bba54c694530922ba043aaeec0f8b3d41eb793a77cae179a22874b20c4a89f4ba1bf91b98807e378847546d638d91410a84d6fd8278f2b0e846e65ebd4a99325bfc98068aac13654399ed65dbb67e84e79a7e4af72636ccd784d17e4e359d6531fd8509c91e808434975c094bdb82ab0a383c313d31412d29e93086636ff7bf2e9f40ad38be671c0ddc20e43686419b128d45898a3b15bce3a0443c231a6ee5fd69a5487878b5f5673e37f69050960ba044161977debcfd0bf38a921249e6220683b0ab4c18d5d75654ae4443fc8547628a4cb42a3990d00221abdcf71fa5a0b64bba940b503ee4c75fcccee7fc544026b8d4b5def342cd0c969b6a70d113ef5d6f28ca032ea7126d5138af5c9aad04cefbdbb820b5cac53873ae99d80fef9463b2ef42e45a1a104303e798553245933afab502a2151f88977747c9f8920b935c7afe011f36c95899b3ca4fd06657b30df029bccd47a74cd675270428c9aa68cb12abfadf3f45d656065af09cda19dada5215ad71de21fc3e5e5f4ff99d4c23a4747e2f32fc42ccf0b21189b2d918b49319a1e5979b6c46dd49010f3def8c7160023cd153fce0ccb4a6ec35b66f322a691b3bc8e08c8b846118a9655a0761e8b5dcf4d6719e52a3ea65edc738e07108fd6e88ebc670f2e7e6e5f6d35c880e11b42cf6779ea41ae13559602bdc0139a8be16788fd6c2513c50970251c2f8ff3f89c9b0eb842fe20f4ffd1c8bc8ee17f2d069217f289c78342d16edfa271dc220eb921b014e89c6851805b8300303ce4ae0d81d8783e59c996dae3822c25e85d433b418f872c804ec95a9766b4fa764ab1727d17dbe560eb0d0aa94440acf4f7dedf50ee7100729820f37af58fb3e5a22fb28623172b05d0636a707d3ec08afd3b5396092bee1eb1583e0dc0712c6267f55ece70329c99ecbb7f3dd06903f2984616d0e141cb93e0a105ee71447ac8c72c3d3c8bbd270b86aed2e5a07e93bd86703baed63d33c6142ca3cf3007c47be6d50bead8f3ca74818dea96da52a23f9a0fed5611e8ce103a1880f64a134ede2439caa82c215a8cc442f04f06388f0c52581adfbe6702ac230c81bc35f9eddc7fa6377628371831266a3d63b119d9827c665cd71abbdb3a042bfd0edc8e8460fc13040e70bcc5e7ee882dfb2392863fec0521be4957023f7674d1ef3c0975dc236da857ab7fea53e984a190676f4ea73c2d6d8903f9f7a314cca0f4593b51c690a525f358b860bf02bdc7759d62e05fa65c151f0ef03131a32b57c675541c178be0f9b2707f939a7b65e54ba5d32ad5e3521edf876f711ac7c194a4a2b796cab43f731dd6c975f5a709108a131360b525ca141902ad48724fffbbdea0c6fe63c62a28ec9a4ef206405500ff7764ca75172f8f906bd8e9b20dd5fb5b0dba93655b22c590110378a940876948f49a33caf383b8ffca3634353ea4d514e0e0f0dbce6f90aaaf1652da5b308b5a2242c231a9e1b790c9e972bb80a34c973ae108d02744fc92c098ad3cf91e05fc4a8db3670e4904660d2e68e860ba228586d421d7151860d1e7318a95c69a4f49ec8646f126b63815641a0fc66e154514e458b483fd5e7aa7739b564fd8519c32903a829577a7c824bd29f53fe7f4d08de8f178f014dfab867fbea4f959994efaf2d23ddf6a8b0992f4192ca4ec77e7cfac5240399040f694e6a434c4cee3abb879e6f69ec5c5614e6de99b294f66ddca2b6b6cffdda5a72d06a69007e28edfd8f86b8f642b3f12be7bfdeb66e53a3205f15201e9f35e455f507998bcc76aef9aca110209b3b0fb39a0bb51d774f01f19176b4e1eab09b86dae18a4002d9dc89235f178288b1df58d911f525d2a538334965121cc2cb1f34db39c5a97b8c11e2623d8f7a0ae2cc57a1718ebbca2d85297e27f4da56ebe562a9e7cf4651b6a711326a3f814a9549434b5b4a81b8340d818dbae145dbfcbc2e22cdc63f6b05f2ee9d061ed6c6b0bbae5236ee186a17f67a1075aa52d63ad02883ed1c8f7af48918a5c3f9952306c1b289d13b46fbdb75baf27fc7553404169e345cbaabaea9293af9e6996b67005ee8ff5266929c83db9d410dfbc909bd7b4ee8b86abb61fc6f96350702c4be8c0951f87b1886cbdf0f135dd98a5a8e4462b564235cb05da9f4d86a4d6cf07aa1781cfebdb4cd40b63ef0c6a902ee692fc92ff65c8e0e5e19a5e4b2ed140a744045b0d88d218628d98b4272623ca95119d258071829c383dc4b4ba176a4428f764a638e5c042f90f5b9f673046f888bc04d9a2df3d4603c0ff3b2fa885604ff5bfda26dcedcee26d678f42c6bc0e93ecbb63e47d116cf22c1e50d91a81d822bc9b66a08f42b14936f5ff42023e4f0f143032fa8e3ce1d3e5663c3cc565656d76dd8fe236c6c9bde55a6e84ea233c5aeb431a4abd84c0172c7733af8deac93f71df061cb8d817b4aed03e3acf7dd555ad08fb6ddd6fa054f198bedfb1bd6f6aa03125f312368f04d293ae29f99f09e463b29eb48003cbc537f3a54addd0b00633363d009b0c916c87ec482ca88a2d71441925a157f415c802365dc58fa14cee370c145002b04a0976d8c2af61c2c26a1c5af569646feb5fd7a312f7d3b7ce41527a9be233b322e1bc5b17348f7329bfcd67b579fde62eb0cc9a98db45d558e27dcb452cfe72ec5c8bba3cd26cfb1e65db9f0eee9f8dec852cff8342698e58f9e3cfd9978d5bd1c5491dd1b1473012d505b4161b92682dcda329044f50482d71bf7381feb672becd5161ab8f0c03688df77a0c075624dd19033b2bf991d4a877519ee93312f1ab093718533e2654c48e017ab8eceb146a208ff7978c9025a201e64aae7ae4f3436f9ff70023ac154cdce73929bae40bab3be18bb42810d58645e80dfa0cdb9144ddab3befb9e0149f02beb8b39144eea1e957dd07411d77f53d0778349695dc7892f0bd6f0c0005f98bd38a184a3534e54d1748691d43f3ef2a6a09d7b700994bb3fdc2733f5ea5828ab07c6eef88bcd5ab99ec4059125e220ef5a6048580b8c5c777c0ef06d61c5d1322c8fb3f0c9e49eecfee6065f70c10309dc34b09ebdc413cc09dcb2c87e45abf562e772ba9e0ff25d2486e0361deb59ccdaf0fbe52713de02d31de0fe5dbaa2c0b89425c59480402201342cc36f055a1dbc07116a1217768d5fbc81f1560f37bc6a410aae89b255a716426ab9f3eae518b4237f500bbf9ece16567639d807cd0267610a68711c4a7162b545f18e5d004a464153419bfc9697dfdeaf362ab11d63dfc27112ecb8889e9a1a1fed9fb31d59496001f1734ab3e497aac7ff8693438fd610163cd8c0a40cd42e36d904b4423290399f8887bdcaf66872fc63c0a1329b330ad455316ff34bf581be860512b124d1e9272083ab2660f96d520494c77dd96a564177ccb5b6e77933680404d9e08e276ff36b599b7ecbd3a42f5af6f8a0e657c876b7593b31c993ebe989a541530a33ec5617f715534e6d681440b3add780cc14888501a331173fe9a6847a3befa193a0704421b0a113e91991ddbd09b5c6a7a9ee844ded7425034bd7ad2a48799a20a55a3ad02ebbb95de4527b48036011740f0bac2b2e14a586c42301170ba8380047fb70237804f401d531bbecb112e420db16055a309e7ff76793c09af4df50203732c9c89094c0c052a46825901b29fe288f25560bc7a0910f925272d0a6db9ec3ce34903e416cceddf0b0aa26add6309f3ba6d9f718b1535d7c9c485162eb8d94a317bba15766e2e595f4d6eed0450093eb6e8193d43c38df1d6ffac4ebfec0d615f3954fd18a716d24cf1875900cfa3aa1ad812e1f16087214fe04c0a6c82393e28f2b9c10b2745716e56328aaf2166ffcb048ffd862c06290dcf309ac456b1cc3d12ce6545655c5c79f74679729ba446e4b1a8721824ce1e3b5c39d2197e91e1c46f29531df75726b1170f7daeeef094352fa9af62660524d955926a03d8fbf6d5842bc6cf78045570c1342d4b895da6bf3bd273432372363b2e25e0ddb3e402fc79e7c4fc055c29a31465dc380120d9393801793b1c560587b281c147851f88ba00b8312742c9cc4ee57dede590648c8e29969bf1b409c93a11b702a2a89d4304fe831938f1928304aa608cc7a364325d8b4856af93b83fa430d70797371164c204fe94fd1ff28a6fbac47bd772127578f2d3d3e4d1e11b67551e9390ed650e51a06873a4dc94d7cedda2ba13b1eba4657fa66ba1bc7d63fc18f9a83e1cc20d026fa96c437f8fff722914bdfc47c549e020fb191d25eb782eb062c911b001f2990cb5c75182fe38402fbed51724a21557a60967314106c99c815593c344dd8bcecc9d392aebda7c327c26366c11e7a96da2363cdd1b0b643b0c4804ce492faacf45cf408e42c38bd666879d0aa87d97771d6d59c1952519d31df00af1360938bcaa4067221dbbc8cd2d00678148b8c202180c78a5f5d0067d59c611afd08a5f2af6a7a5ed33239c4d663a29662809dc4bdd11acf10869f42b0e047bcf7cad21a1e4f798dd0c6c57a0bade82d36edeeec5256f3f35d48e33205d15c5dda675e71ebfb25a40334560a3f87200e46035209709ac16a3d3423a74b0b933a8343ced92f5db934b004bc048707b413b9eb6961bc348a990cbd6a091814c67c20a020d608992d197f3741414a2f9a37c6d6d2e614184bbf72819b1b96ff04003a1ff58e3479e399e9bc63da13da2c6d2186c0aa98a7252f5f15b3e7da696cf07a7e22be6d4797c420e05231d706423685aef4eedee8cce4e46391047941cc7abb86bd02a85a34947f17249ca821cddf1d8d24e550a26b4e76f37c4d1f0f92f93225ea6e3083f9ad412d5087cc98b9c21b4683fc0976b6c4a83aeacac133993a7b6f3b63be651ddf69141a51ee1ef01322106164213e034259091ddbb9ab3e392b046ffcec324701e977ba72d3ed3c16017d78aa02c7686cb61fd49b560cdca42aa63532d8393d49e9cdd623b0bf1fc6d0ccb5cd609b878b1cfae8fa6c327cc6ba0f5a05b2b56c62f4714b66d5746c41ec1acda9159a408f29dc2cf6e3b07e90407be8453a38ca76dce2bbafe94aa03bb1db765b6352bb6cced60be40406509c8ed4a9a803c17bc59f5b141ba67893e931e391ad9d5749e213e36e52581e875b5349da9420d8652d792eebf84c397a376d01a0bc7115c14f7fbdbee776a3d1b91d0b0da701ba9482eaa746ed05a9efd395d5585fcb3c6bbf8a292b366fc8824601f1963d1560b518b138e4d295db3f03628b0a02d9cc557f36defa976f1efb7ef4c23b6a263e2fd7db443eaac857dc4c9fa54fbc0b1a6ce59975f50ff346c454dc7301c13353ddd7a4804ab8b795ab5d4400dde4fa66262c129a31eaca96ae54cc33bbaca777be159b92bc28c7682673c553a2f298810bf6460a190fd3febb904d1b77e5ecc57e8d707edcb885183a069deda8ad124494ca19738e6c55c1d225180401dddd10e7212c4608becc4acdcca3a2f8e7d3ba4217acdeb45ac8fb2d55015c83e46006d811016ba303b0f48af4ffdcee5987fb91916b28f0aad9961aae64c38501053cd2c3956e41089e1b41ded7941f5406b4fc23d48592699c353db3931b7e5a2c3529fd9350bbd029ec54e1e626bffc9e1a153df15f0af9384762734fe017dd893e628a077cff661e6f4f85e71638f38a2ea6b8de465e09378eb00081690858568c58221382a14797a4ef3af298081c8899507fe113603e3a61055a60570f9eb33a59d56c64004b066252e16a0b07469a6ca118c70ae1ba518db294599107e44f0bd251a0cab4c7f82f1211b59729c3c1938f4b4b7634d4abf7d6ae20068f83d2a3f68ae86ee04f33eee734d35f6e318c945c09a8493671cab96c2bb042bbc765bfc6c35cf2f0c2fc55429bc6d461308e51ce782ea954db5915c54d349060203155ae637b35c73e8644b437da07f2fcb362df95893c05886a4866b72a60b1deef9c51022dd505ce752e4062aed6e9f53451a9129705d3a51b7e80ba286c5fbb28943bac40cb75c8bb7c5855f2127b646473a61a8f99656b0b6fd5fb360a2ddc1bad771d2dfa8c9440d55353ef55e2580e51056aa007c0b8c6eda98b739aac90065dd4d652a4f2f19cf7f83ec57aa818fcd6fe3aa0e7dd9a6a042c6073ab03f467c8ccf78df049e23777b6112cce072361427dd465605ed116bda8abc5172d1e01a3e296b89be6410cd16ae5cd44263ea676fafc033111bb5fead5536ed58cd105c37948352b846a1847642fd6f3080581378667e3de4fccea589f799b9c8e889060572679dac382c2c57252aa782a7ddcfc2b78ae440796c1adcff4b7938e4f506b2aca52d15381a6b2e129a27da6c0c68372b12a5c3b3f12c1d4a78e87c776fba62282be038dd6a90c5120df174ba2c2a1995e9c6430d96baf2898eb1fc7009091f20cef307df2d712763c2115db1b82a484d04ae5b9ae5f38d71c171bed64850d5f6c6e108de0897fb38ff720255dd5678f3ffba7a3740f3fa4288cd8204a31de05c30c6d771b5bea8508cb5913eff56481b96bb222c59a35c3a1e955c3607b998a98b58faa282a6d853381e9a0c344162ee2ceb3221b8f54e4402f978ab567fc0ef3b740ab1d02c37465392d483c71b10ae478362083969e9e077ce0991e30ccba20a31794395be862632a41d5eb72fee0011dc4c758be01be905e48331f737539aa28b6ce9db1564dbafaff494352ba524d91cb1d2b2c85f29f665a37850db44e0149e791b3e485354a706128d2a14d66e907cc7d0858ff769da52e8b89d7085fd54683dc87225f0807a2de6e8ae0aa2034d12ce63306a368a03007dc3037b2568ba2816d3bbe55b618d2714f092db774bc9352facb46b8ac90aaeb8cf9bc1644d82447fd2742842fccbd3386ad762117de46fe32b62eb4236482db063f15913314dc0d1c989420f782059918335beca831efbf0be643b4d7f5e92866b878219c39e486b90fcdc31eefda252d2954fbda51ed42ae734af6113aefa6ff1504d30db5eca7d1663e381d0d7edc3db978f48902f5a911d23f25a8ddf609874351a15c2599b09be68c226e2a8636e880db0f2dcbe7ff605d4adb1ea5c8160b193e1c1cebf32c48c48f696d66dc8f3ce7e0ecbb3de8ac793be8056eed6cea2c9bb4e74e5a371ed1155e98aa2a6365e7da476b8ebc4651e69ad44645fbe76f21f71aa8d957f7b55797422fd6bd8ebfa70ee345dec4a7f7cfb41a56488cc7506e56e95956aaf1e156ba0c391cf0e2512bdfff87aa0703bd1536d0621797bbcc24ade92e983f1ccba056558ffe2540b0e392d8800fbd7f3ad91f9ba39128a63918ce362e3adeb23ee7665f452f53bb0e2ae03402bec4488c9b3018bfdce7cf0fd80102d8006a505cc74d7a1298f591ac96abf686627237f358a758a3b9719aac434ee7ad2ae0b417d200320399ec5619f3dd557d2c501b6e620973f09a0ebfcc7237a02c9296ccac9a8c7f1c1089fdc7f1b6a629da411a273637f19b787c2ef9d00a54014d0fe83aa5915bcc41e865b6160d99f9859a9202a359a366d6631a8a79fd3e3343057961ba472f414802076d26c327cb2bbc2d7deba277b2a820effe4865d06fd48f558b10f79dfa21796e721bdb61a41487b26181eb9f71fb2f524f6d70f390e4cb8cab1f556df96bd15fb85d55c88462195a576a3b89fa242c656fdc5aa5d1efd639ab45b4c1218eb4e08155e50be18fcf8377d88df4f2d5823a2528d63510dd21ebf0b423041d8abf6ffa0916e74171b2eab1abfbf242d65f3b93bef626715aff7a07640eb1dbfa24708c8b2cbc35958e3e796473b219243e2da198844b3a0795cd1e159fbd14e887d29cc922d997d5a6bb2c59b0a255ee8debfbff29a238dc3a2533586f2dc9b025a0a04568ef702483cfba0583933ac749ba6e18f686ce97f8275738ff642f217a3bcf6899d0addb06fbfac15a608ea9c1064d1f4a7c174099637aa85400b82c6a19974513c0923f14379c62386023efcf888f878c3616bc2e045793b9d0ead7ca12e3fe303e80a039a2042bfdf5453ef5396c2151df0693c44802ef3f015d046743912d8bcdb97917bbb761b0f9106ffe241e9d08a9f71260913bba2ae48a188f0b41fcde5aba6208e7e1c90437cacb8aeca5435d22c57365d1f03fb60eb7d016df550b031d5414aa37d1e1b0136ed0e815d02f332a926e2cef349ad246e41ac48d5dea3077c67642becc15b9fae6d036b89a29ada144605d1d4bc3f2dcb7fc463f112c7012fab5dbded4426c96dc1663fc4e18d70c9607c3e555e203f353ddca3f5435a6f795d4293f656d1ffa85ef113ff8ca98cb4655ad23ed48b34167d7671f95ea4d24523a70abc0c6914aa8ed5c44a04e33a622298ab0ada4b795d420c3aec8fb86110272926b53105b085942f6f8cad0e7bd74407d0e95947911edbbaef11dbba87e94d4f0b2b199bcf218466f9415949c33ccee0a75d6e5c917f911b868fb98a62481a5b85d950c5418c83a58956cb0a7c58407e7d60ce02a2f71bee77070bcb46ad2603811fd72528a170120807dabb82d90fac021e66c383dd66503f46ee16381462a492bfb6397c01254ca8d6d4c6a671258bca3b1ea805469137e0fe52d3743778326d302aaf8a59d2075a93257d2cc07726cdb113658d3237bf5f975675e8a10f136d7da89171f7305a566a5dd94c0c08b9e732c222950f63ad4505be45b691c71a10b77de9a4b17a56970c2019b4cfcb1f5925e37e2a83c03a1fba1ea2b6aa1f1677f3d0be6b1d6c325ce39e6604114d1a462b03906f8beac7fe9f887cf178b3a3eade39ca6115c60ba954964d508e0bcc373b10761aedeea9f825c36227c373a852dc477ff78f09c1c417ff83a2b7e86798486248f2f160a1a55c6fa64aadc751beb59c87f0c5670cb899e5a27679280e387c0000577795e0a222a15701abbf6cdedc7c37e3a82035d57119c83dd7d0accdfc2453ba4ce2be1261c1a32642c4d48b3bf7febda9c9382ee6a6bdda5572216e47415520e2fa571858cbd2489d6adf3d94065d3ccf364319804c302836a3f217180515a346c45f5efb368d2aee58f693724e64741c00a9b3b05eb2717fb7b628e22960f1763a64915e224d42a06403cfab55734e47dd5d5a85cbc4f8d97fa4e6d8044bcbfb4090e2318cdd3b5b54ee576f605c04bf510d316c30e4713919daf987211887d878c3864eb19273d5ef2e36e74bdba70263919f0834a48457179dedfb66a28fc9757c3753df767e76476198680de299475380d01796374dfe9336b17a897ae0d2eca3b2504effa1c95ddd5134b7f613709aef3265a75fdf22ed141accca7e8c1eb6c03786d3fc58c09c8e57c72498a0519757face1ba2bccf3b8c61124bd2382bbc7d0c2e7f64d0c4c0aa44bbb060a04bb3b89d5a68d05edfcde5a1326cbf9f4a32b4fa59773c6d9c2373d5369668c72df2bf57591f60b2862c6e5acd093f0d70ac5dcedfa171461a91de6deedf3b9b6e28aea79cfccf98af79d8f1c68794e44ef2ead955ef9aa4a10fe593b40692f9b15132d1ba935964232e9d2d60f9ac1ac9a77d711f59b78778462a6f9aa1d7909fc13c5b63d27b608582f1bcdee2b5b9ad246c6e89e4c321ea6bee51a0c9846409290e90c3c87e481d0d94acc557ae5fc71548aef63c9f5839e5802af6122d4d62a96a00fb69edcc715ef2f29d778bbc3ac159911cb710486302eb12cc3d30758470e6fe9f362611b3a61ae64e8be7163508237d4fcff0bfb17f2cc0b200f5dec796b62154039031f5ad83c5064519c7ea7f065bdf7461c01db72e158c8ea1da68394ec3684db4b63aa9f42eb3e4febee53ba01884b4bc0182ab86910bba57913e0b558593cf7c234fb6bda60943bffaa323b725da93606c9d5739dcc6d8147ec1d531c9b248166b710801142005411386edeef8ee2fc7a1e5eaf83fd6c777f261a47836a2a68678ce0f0445957a1eb10d198c89dd706a7329debc2805b4d9902e9409381f07d9a5cb255f6949e86a126c82acd67ae4ca67030a2aaa928758cfca81927ebd40de4421886994a641b4886069505f129291381c29fbfa811fac7cb50f737aebe5e41ac5ac6e3e79924af9660571aa32d92c553d707df37aaae135dfbeb7e406f477dea43811c4589bfc5e36012bc089ad7861332640933ad362ee9013fe3881a027bd3023bfe49f6227448f77b4aed1c1fab38065497c93980070a200993314f69bd9b5d04145f5bb2c4e5a4b6f06cd73fbd4df717d74fef413d500133a5a0634b5c5882d44ed630823b016f5e95b538b4c03964b69e5bab7280e8517b9737f214a0b001420c903b1d6b6981f0ac86d1edfb4956a4c5e7f31115d1a355109edc628a63e876328321e043b18aeed6a832c620c71cb1010ba96b3db34b5cfec763f5a88ce8c45405a2d07328f0548e195c203671cb8db5161395cf397f4bdaf83944e150bafb1a84d671b2168b322d38dba16d380f6041c54fce1e56c3685294dd581a65b72a8dc2c79aea17ccbf1699767cf92de468d904aa27444a953e8f484dc5f083e4772bddfb134df6397ddd18ec1819cff5ba06d56da7e78c580f4f10876a8fa20c3890e1e86651e1171fcba7ce1cb1a3ab7499af32ba03dc3a3b7c2a7d659b30e2a31f8075dc433c2e2f8db22e1dfec421247a1a824652384f49f4ff597335927935e874e27e0083e66496c986fb025d040ce3137690e0c70e165422faa388aeb31092aec82c219635db0aaf6ac1b890bb42f9c5c8c69b06b72c68b31ee32d7568ee9376d6d9dfa051e3458151f5016d5097a5622cd781c1fa421dc7a691f44cab56d64c8c6e4cf1f2b203957d18f78d551a67cbe1e692e8c75452d414696cac6aef94fc726a7d24cf5e99786f1259360f25f4a041c201bf5a14b399611b6d677b98bf8fec627d09abc04bfc17bdbfd27572ea464c87dea124175009ce9d5c70d278342588371aca76dc98377c77780bdd3a18e7e4048f79bc75c43c98d4673e8d197752833d9db0f9498b67307e29de56328b43fbc99711a22ac0b3e83b6a2918007bfd9dc2be72cbc45b3fb0e4904ba335ae3948493db12e4c12328bf619287bd9dae238693ed23deacd7faed4e1e9c19e18eaabe0a8f7ac5559937891172d7ed81b7d3a2131e44ac0b033f369683f76b994abd2ede367ee83941238815e787b0a6b32564dc41b5de591bc5fb3684d4dc2d527a54a65198a1cb323d2acb89d3d04c5dac6a9a2f76d6648915e291a23a453b03f0827bb4f7bb834717dcfc6733554bd5c99c5656ab31e4bab0c8af14638afc610ed69f0536745b9f37bf5e7f3975b51fb82370373d2b16a08be8dc46bb069a91b727f5415ea3681dddd2b2473b8006a521d1b8e9c6dfb32e9c747654b7207b5d6066493843d428e8d3c0aa27ccfe32b1496fc293d4d136df750ff29374f963b340efad0c263d70ec59c071fc0799ddf4c4bdf9f571477a30f6a7fe092c5dbc2614ce40b6acd7d6581341e597ad8b7502c21c42e0085bbc22018f3ef0745f186c6a0409812811cb1e0f50e73c09b633d3e12863b98fd9e3b94dd88237574dfede873ac98d2ccd2677dbe8e124af8ac244a0c9bffb0748b97f4258a0012edff0fbd57bf64d74b4405caaa486fb056ddc944c747cb24caa7201e2d0ee235ad4f7e5e3e052091a0af90e86791262a14553e891a5700031e58a51c71f43aac4623ce2f648065d1d812e8e957be16e6c57c3c78fd3fd9beed55e82327fbd533124d2dc2a8571b839cc5c2571d2ea27a49faa9e825a2c4de4787330252c1512616b70e2229762de0ce2e3de8654d10aa24abd3dfc253d73a4b999f58e03238c042bb3a549e5c2678d2f9c078f7a918876071757ac18357f53c65df589e84c9c7ed875fba186523ed132e9b4109d798553445806b974c57656005153a7051cd276f4fd60270886222438713cf6ad05d9c69dd546a7c65a7351e4c6b94b3bb8ef3b23f670be4d26286e33feba31e06bd2c40abf76d3140a2276838ed51b4d3b6af6fead6eb570e437eaefd08d71ef23b1828f8bda79558a4622680bd678a0ceeeaa0daec1d4bdad8a2c10ddd8e4f976282181051b4f6d6633ceffd1f30c9e4ed90c857271ff342e327998f903101e32e226a40ac5a8381a544be494e46708bfbf20c60aae632c9a926afd0e38b14eeafbcaaf72c73561dba6529ec167abd933e6aeba6e4a3bf989e1e7f0b0e7b40edc840f0096f74602653b63bba4bc477af2c7857e963a1cc06cab6b675f423a075601ac809d8ca75d3bb9f0504e2ac86277938cfec318d9ced9519a8fdfc1a7a9c9eac71a1ca2052383d8e146b978af7abcaca577f9a4f121d28428b6baa0cf4f112d852f71b9ea0bb6e85e03e97464c6942761ff4a3f93f7d5ce1150f65c248c37aa5ae91a3644ce3448f051ca702e3632517f80946e29928c091fa5853afd9b0fb63e6e6ee17ba7f4f0ec9fa5c041a8f22743d5205d7e8c9ee5bcd4cac0ea2d3b99a13c236620024de838e8d93ddc6f61dc94e9f9596b614d67222fba3a1beecd10383dbed41df837cf53e868c571f3f257f40eed5519094564c71cd836cf8a9bcb9553302186b32e55b77896b8e83360b23becc966d1cd1e0a2b0e5708de2261f09777eba3e9ef28c185227e7de64eb0bc31b305475dba0e58ea2d10474a5067969fa148983f1e2d6b884c0bfb2b4eee78ec85b7d6f7433fa126cfee4ee640ee4b9c13589f5eed4c437e99312002d6419c0336d695cd11710e3cd2abbc088fb18fe6c81c3d0539e049ba519c5eb684a11393c7ba2a0d048f18c87963f450cc1557ea16c35a72a14e1212f24c2927159e7c0d622edf87dc0811006aa59e7bf01d8ba1c899c18d4dbe4a1c3aca7a6096d5a8de98b522e22af19c57cc1b24471e1b87de3e74a3a0998c2cbf53924f484a761fde355e06545e0d3177d1cb366870259e665fa3149eb48b0c0fee7b285bfdd89c91ef0fc1f91e419b820b3f478ec0d092dc5ce28dfb6d9ece7c65938c78e9a28d3fb5432cb4500079af5a9a0d789a3c1e7ba16b6919b6716b5453ca82bf750f94d17a10469961bdc02b66c40518cd926c9f66e9683b93c1738b1e81187b65fa0887aeafb1f4c59b3754db42ecc84b449f23c31c2e118dcd86df678be01e48037577c2f634d8c308f93aed62479251d84b893ae5c5ced05eda446bd16e533cab17e573c6373cf03ef77dce96dc7cf8edf8f316ca17d58f08b8a4b019db12589e635fba1b4ab0ff22746d1faf37f7b624a2f3174675ea5a19ffeba5d745d547727fb588419e9bcc5a87828abc264a75fc3c1f40dd13037c0aa069fc144dcdf603c5b8c99d8a0db5f99c2509f33d1d2d62287fcb7389999018207de3ac9734524644cf42b7071eb29ff3c48add530b458ac0c798745397e61619957a194da879c43f56465d35deca72203bf88d03471aeed1638f1452cd5d7db97d14059d95ee51acd45f4dd4d8c4ec8985cd3a2c4f6abe1b4fcc674afccf2641ff25aa36b69463b5fd634ecc223411ebcac3e872b38ee0d2c09f0c626d413487ccf9cdcf9c95543b838e7ba5fb4c42d6b14554bbe8bc9820a6a5e7a71a5c0f74c183cba151796a4eb897650ffe18952c07a84bb22dbc57a0ec82cb8867f7948771edb4e7fe05c4b603ecc25ce0f137a6b46010477fc3bee59c11ee5b69ae065106b60b65adb87e6d226fa301c563384f07b6222c9d71d0f1c405bcd7bfc680f76d7ff0de10e946233a757f191bd9b70746a0105a1e1172be3255f398fde957b3d9e2f49d64ea36b9bbdb04e20eb2680198d77d8a959ad4b9feebeb9fa073f0538ce6eaed57bb61c6156c383d8aa9ff453b48a0bdc5261941e6779dcf9a5557b9f8ee26a10a17a61537f25c32c5a91f2f0b67d9b5e6c2882d765440716ad522593045aa8d19f96e25e1b0146a667228ee5620ea79f9d8034305e25eb1c2a3e7bea18c950abbe6d6a8ca1d5db333b23a06085b7cd52c9ee1c27ed1cb1ec410dd0527c21376eb8e3b04920f58805276b6ce184a62d7513954d9fc2e392ec55e2160649ea7b2a993afd57fc75066181173f35a06f95460938a2d33351bb8aa756d94767566a2438ee06919810ea16bdaf1f38d2a91610b043557a9331978d078ed7bf1ed34b1b2a0f7428371518db36bd7a3c56b9dda654cc664c5118e8e810162832e298b4a0826b398b3604a2c593909aa2068acde9691c653a63881ff0000a42eeb369f60ea5378d57446f8a7d7abe703cf25e0509e49d29aceed0f332285239037ee15e71fdf631738959ac55c1a3f7f68fcaa58294c6ba29e68767571f6ffd4b48583582df570b1b71cd275f948b44193e216e0767996469f2cc776ec6ee6b723851631011da6aa69ae9d4a624ca340fa59c1184ca95c589c72e6cb4a4ef90b43eac073b0d0d73cc2ed1afa3ff5a1c8937303f3f8d3a91d8faa8e6ad638a236fe9a142243e2f85646f6d6df0f2519f937a672a86ca7b1cc5860fa31d40956b0eb7ed1c990fd201b6ec1857694aeb247877104315afaf4124d0d4f5f7c7a00891bdad4f32cd9696157762ae2d5a3abf82007a4cf6ccf3f908ca00b19837f03e035c3b2b363e88333480d1669b23375a92974f6848cda7b5c2fc88ce6309f746de9cec31d46a06b5001f1a4f6fe7870ca21055f9732baff7c3f4530340bc288f8a94adacac6a1f8a9e0874f9637ddfb1d0cde1214ce56176e83d4bfd10c40eddfbea02358e65a18e6d3ce74fbbff07a3be4003049381adea3187693726e2c2394a1bff3e8eff065e21a7041fcb3da7b0f653c594b39f127ffdd1d4a2fff21d01dac9e599fc585792bdaff381348c29f581fbd4d6f1c49225bae160f050d125e93173a65253d2ab9837d4832ddb9d3752be03a50d1547b8a036ba22153ddd731a34aa0f8298c0fae61ead00a9ed0c20a7067fcf6d03159d339d6a0bb5db592361078ead6dac4c9e0718206f1baedec88606e2b2b90a3c957b03d4783cd72087a2f8d3a656f62b50710f6b4e73dad7ce70dfe32b3760fabc411f5326b2db4921c6970183ba1e5d1e2d1e6b51054163151da1522a1b0346b3879a060436d9158e5bc8fc8302c81a378fa590260d25baa9dffa14c63ab200733f94ed24463e4d6613bbf751352d6ed8707fb8f93ac2c5ef206c2a4029b3365551565ee904621f9958967488857c159ea262ea4af7d949562515f864ff6343b1b4657e1f433bf44e86204c5f006365854baf286ca036c16309213ef5af977f22e78348c40a930d92313f30b542a2cd456d995bfa5a0595a20505f5c9f22103cb38c00ca270c6c4620fd90d469169c85c7ce34456eda6175346930caa9b41547e2d7de15f425047cdd16aa3de51e8bf7bc970f4d00db070ef48ab88be836facaaea20cdc43a0d052a86737cd061c28931b67aba036f1fd0866b993f882f4ec57a7a8abffb38c26732a8f6d394eecf7414926c5a5200f66cac3cc3e28c27c4f9f389b5c5f97dfa0991e3e1bd5ddf01179fdec1382754ba22eeeefdd35a0233aa68f9ea962cff0787cc0bb57b9c28c6cbf4b89db043e5eb59cad2253c6887e1014c9cc40da6ffb6ed3f55f8106deab3901f7014f407a2733d4d0b9a4ca32e9250fcfb0febc17a142449c188cd69c385342d408c3fc7a28c15850dab3b8c003725943cbc88bcf65bb355ee79fba05a6b781838ab06fc207279db60243b40130559f17123866cd2f41cbee6207dee36916e00d2687e0820fef4f2f814c62c3166d2a026d131ab6cd048b93336e28017b6c5b08ad4f253dac966bcaf9a860a120796ad1399ab7d16db87070966ff971d8b0b1b2a81e2194f34eecb1e3059ca4fe4e06bdc79e743125d86e21df7457ee02913c2ad056ae25174d4d4b0a2cfe5123df6637db70e8f36c82a0caf2e3ab157d3dd83094bb9e1cf5aa2f800d962e7d4649ee6e2d98eaab9ee0adeec99d6643544627389653bb3a89d7ccb3e1565f51e2004da2eb5e9e6d7b1f2509f2cc224c9287c5592e1bee4c7797163d4d506087b501a7a7362c752ca8f7c9200e042714ca253ca5e686ff568395a6976db972ad44147b8aa0ae31e42cc61d4454ac5a71909ac8b4fcd591471983dfdf30f596ba56227ef0b4d6357ef534a2280bc40a34fed048cae33444b0c6c8e198dab84ee4759bdc096ea1a583517398f313ed17833052decdc2af27d1bcc6352d83820dd370e9932dbfb2287475fe3e895dcb67f1c8811a68f3f4ef4152a54d15955fd1dedcf4d5e60bc05408faf9cf9d6eb3b3d36aeac51985e789a682b5401151039ef28eb9a824aaca0abe5a18c229e1a80e67419a94a3bb0102286a61626d4b2dd41222eb33716a2a51cc77130ed1e2acbc49798f59488b87e4ddccac96dbea5f9f4778a96e920b68740315b57a43b35c35a1c3348b74208981ef8d458605e9e6f3d931451fbac2e7782d5b6f319a2ae06b09d4ed2a1e59b5bef73924149ed92dd76636145f77b763273a57851d3d3128b612e5b361c047fc60217ebcb6629d66ec49325614f086363ee177c3d7e8457deda435c2632eb301f884acbd962fec7f7f4513291485c275916c10c82004f85da21782526d99955fd58c3c639503d26b881b8d8ddee76edc230bdadb2b9270ad7d309469ea0d9eb8b98646559c932fb66000977b26d582858265715a3cb5e5312982b3b31b5caf9a21160919d9d6366b256deb06981b6c76ed2ad6aa57e3266359d72b71cad860315ced6711c6c7f04dffdc8a938e528cf916f6edc70da51589d26ecf72dda27ac8d50e660f2370b75ecb6d361aada8b6c88337fd589af4262a83ce7326e1227d1e40dbb0723f38bbb1dd31f77c8a7eb407d6ca335ae019e5c90ddd71b3d4491b87825c13da375c8095d83d97ebe315c20e8d7b1e55022e6df75bc22527ceacbbdd9b900264095c5e09d2222658077a1005040534299947f1ab14c971b147fbf747e0f2137f9c350084419276fb67ea444bb9084c64cbae36f90f1c3af127761ec83c257f4a293ae609705e9fe98e7cf5b5280d232bc75e170822c4e950d7fdb39f6a66a686975ae39364e77db6d95e3198c2d6d7b160880067d7bbea72f405ec813c758815bcd89fc586492d2ab921f89dc9536e44d7bf74a8fc4730ae793d33966f9c4c0b966515f47150940562b1be7621e350df02fe88510b05af9a6502a94aaae5bd4eedd6167cb245d8d62136ed4f58f5c9576ca36518d642e1ad38c89ef692ddc8c9f4c8c5686730e4ddc9e5601f75e68914123ac9720e5942e7d9701a4d28e6ff29d2b21a6a0200e800e2eceabd54762356dbc887747d98d48cb437589fc5cf19312d2f5f1ba069d7d095facdd19f74910ffc2902fe095e9cf7203745ef7c546f95287cb599b2f4e89d8da64389a30cae4ecbfbb63ae69523706ac005d2b01c81726680906af8d0169c25dcf924979cbb34ce71b06f7eaef51a04b76f2218276f49faf437b2f994a017b5b28f52182bdb7ef981111a039425f5bedf8c8395c981916aae45ba85f189b9d79e1957e85c969e6ba88e5da8cec8e0129d1cb38c03a0d823612bc8eabb19dceab4a10934445a6221c2f3c2f44675c1cce110ac9f85da73ffa7ab43e26d5aef30c9a29df081f52d674d9b46b984cca8b33b1199fda5e2bfbf855e2d6b5f9ced4c968f3d17f91cc308b5fab68c76ec12f7b7f896ad738df1a31430e50c8cf1df07b74a75c9c2e89981291463e4f0fa32780b54477f3e56767599df403caab172922cad6ca82954c9aff10319241da14f40d9e7328b34dae4b0b97ff2dcb8f899b45e05f2e831c07fcb0a74743f028d2fb62929fc6c295d7dac26f83e19ec23469dff9154ee9a710ba5652a7dc629ef956425c461a136443adea986040a1057284401070f76560e736b0d7a957725fcce63ee1611b2a79970a3203911e90cfa868fd610429e28259e7d0aceb8b0626e4cb803b24819908b002ca073c9c7353822b08ec7fe5083a40d08e2220a5a4a015238f2df4a077cea156bac6c1e04707f2865f53f61deb6602471298ab22325f7b1ca3617a073e8af782f27b1d4f50e033b1ac7fa7acf4091ffd5c2aa0f319d9599101e8a292492726dc55ea11a8e743b821134720d3c5954df19fe3c328bffa46dcc1d99039436f225c46def6ee32462d20b6293142dde281f4a088eacf490f0b6979c5b38e41491c1e8ef23d7e3fff7df20583f21d66371be58c901b1f862cc1eba5c1b424058d5dd20ea1966a7c13d84b9c4c983af7ff9786f8e8b804f178d7b33c7d75d6098e9b626a680121dbfbc11de597a46bb5b6a6f5da53629f2e80aed4a24c3ad13c819d8502c5bdd0b12beb84a1010f87e3ed55fe15b9f94772323093567c42bfc3c5a5c77f88448a20cd3fbfb7d3a467cfb2e6ed2ab78e694ea3718a392f66be6f6bfbe1081241d0eda4d3425911d68322fcd7c693b062bdbd4ac614de4272f67f0053be8293d82d6a6c526c36cd258f2c0ee142d3fa3550c666a88cae559c5a80d08be0f462063f28894a73cd8e5e10f6432df41393d8fa1e660f74539444092314c66efdef725d5a45b4fc3afd87539b91cac2188d5d45c6ffe5de778d175b21c759494103cb2ebb97b3f66079eda0040950cfb3402e6ff40ba3cfdc7a0d298fccf8ba2ed40c743569ef6083f20a4de7f697a3b786b8382a98b813cc583fc85fdc7a28607a5a2576e2c35b019bb7e3aafc81006f950fd61c97134a76501459ec36f03d2e9e4f637fbd7f1d606c04942a6c5d498e20212e484eb33ecdfd4eb076cfefbda11c9318e8e105ebd30f3019a1ada8de288671c67ce7f0152386b319f994edf072ef21231818ffae38e0d7c2ef8632ecb7b77921940369e7e2d69392a1c5d7565ba5392457ecfbb24303befb42a1eccf096c1d3b2ac1c77ae3e24bd36f4ccfb6a62b41626b28f3e1c2c9c4fa152b128dbd1e74707e8c4612c44268e0bd163b60dea31fc89d1520cd52fc6789daf24cae7521dcd9189c3a81c9bb0e857a98b0f86c2b96aa782e0efe6654128cb0163a3708dae764cd43128ed3532968abad24868d9917c496fc3597c8e0ac85a42bd4cef01779b72402b7afcfad4dffa0d6bbbf2a2ceb4146ccbd4ef77120941db68cc1e8d6a34065d53334abbf1504d9eaba8b3dadec573ae8a8af3acbd4d1575faee5d110d8b32e04e2f42b39649be5a8d9ae8f700a8e6ffd9d7741964e46289f12fd4abf837e6c645edf4f708613c912f5439ddc7ffad3a51f1ad9bd311f7a62d321b955b713e5565fc4e6b3b987cbb5352b0dd9bd40c21d39717f3cbebf5bc71c86e4375a99da25f7821d25b5c7246dfdb12cb37979acd01dd2c438103c0d0e58da5621e7d871de8950d6f4759d5ae5da2fa632c785f90c2f7326c1de0f239970e74bc3ef29b1c3a3fa515111c9f387cf252225d0eb509c22877d03d490edff57fbc3953064c2392c052017f85aa9a8d741b1d814d25b9efaeb4b86f6188f45409edbbf08c21fab084d9db8d0cdf32067d926aa5ccc103fdcb946eba905a6f6d9caeab385eb41b5ae18147e9d091ba03ed2832a75cadeae3d87a50163f51b3da5d66c067d5a640d9f341f1767d06fec0a2e167bceed1475c6a0e96ef5ea8049d9d4bb24a9f4306798d75a7cafa39cd207afefceacafc6b67853539a6c7beeb9a5f143fc1d896c40e30f731aff1603729dd1c2c8f16db66c8e3707b1060ea0819747a27447d1caa6a1aacb0a51dc42586e42369d8aa90168548cccbf518b7cd45201b925b255e1ce864d5155f6fe4950408a6674b3be35969e4d46592b71a30af56738e25151a2ee42db8e942ff1006155f989c3ecc336584ca47de177067b3cb7ffa48d29acdb440d66ee5e9cfd8225071819a5d79c047a8746af62a50071271d29ddf29bdbc28e14df51aa3600267ee9681a9288ce823ee573f7b63794a6a5e3c1eac033ad1033070c250f30ff32a4fe9d60672e26c7a2f8908aace2bd20fb1da1248ced4eac49a7080ef0f4eb09373c3be49e3a4e62d8c71ca8f6ca0620a6e0292840af57a161057b660629fe4ec82d2d685774dee90e792c01db2b325dafed8c20dcf9485d8888c74050b6f923c45b65fe5fefdace6675cf6380860a850ad7cd978467f61f77a7756fc5cb15e4aaa3103a09a26d23af80e76df4b081d2d2bbd3f092cdfd10963286bc65b569de743ebff64437c275bc9b1bf994b92acb10c64ec8f521d53aa4616d77a448c8900c7bddc89463f3d0acc167ad34e51e096480d2b661f0fb56026eb40a104d253e290980591c2d1e83739ef8f628bc06e99bb8f56ab0c755cba8c605bfbc0d9ef2c1cf0f3e52a9e8f290bf02a78b00df55da6f5479b27c9c5e0072c1e7e4c3bcc1a8dbec4fec64d780181063f735d73678d2c057c09915d2397a8fb7f7bb5f6dd2329145e6d314f9c019f9c9790a76342dcd65831cb00cb30098282c385b8c6a984da3786ccdcacb33baaed98409682c625100801213eaf953e3095a9e5484335ddae578edf8a33751db06a27ffa670c9e3a9dfb3fea7bb71574f561a950cd409ef58c972add2e8446dfe2e67e64a65e512572a5666af13ecefff721790de72b37cadda92daa1d1cad8a88445d9649911023109cce95afbdf29666f09f64d3e657029326206b5082c2c0479fe0ecf81eda3335c68ccc2d500e52d03bae51cdcadba68bfb57c2225e0a52f8110fdd6d948b7bd3a482c95730f9f01868d36c1ab65cdad3b8e1cd1f05ca0862e5019b97db28314fc741195b1fa4e136ccd31e7c840325e3a82f0fc6e12f82ef30db22f1518f6e0cf0e3f1667054f99d21537ecddae7f85c92997b43271298ef67f26df8dc0a0ade6012983a44b134b1c38c763c6f2d951a22d445b05f51fd0f9e11de6652b816a2a087fd94141fbe69d24c994019c4193e9dbd42add6d14634cfdf754c69e75ec86f95329bd0306ac5aadfcf7f4cb2b4280642dac2301a67bd00a96ae6d6efb6cc2ac061b699992e2d03377bdfef043f7e31ed6414c9d8e900f21c76e6a452605e6eab766eb779e51d693b64758e1c1719f7b9a9cbad9f0db5ea0177ea5fcbf37363747590bec25c684dd4eacc87f72134b83bd46f97c42dc134f7fc13cc82767bb6d8655d03c639336b0773827546c611d053219402344d7c8176e8badc5d65c5a7a9251f0a3aa0b9348c6e7adc16c870bd726c54abf4b51b19b0323cf3467c47caa05558e758a09ab9331ee1bc505d279c9214e7fef6498fe0ad2489de59aad495b06ff4811a86a25d91533a86417347c30d68c64616f3954f568a9d2a4240c6e060b0199768b8e7bce4dd0c33b8bc4a624dea968bd70884c04096c53b1e73975ef8aa07f962cdb45259f94accceb3c6edd7fa7f7d4c41b0dd24da86784f771b1f3b83785bc9e3a98e6a881cf813c7918c7b2d8e10cb44feb4d4feac576e153b43ed4b207a9a7986e2d3a4ffb886aff3c36aa64123e3dc22061b8b46d0cb16457e59014d9366967291278e862f2c973d5da45c695868dd78fc594f951f1ae8b54a998f12da6851a1ad981ea6fbd551fde54ea4ff0c4b535984024a3d3f011956e672af4dbe64fac1fb6522865bdd471868c6ea2c4b7aa48fbb3d50e0c72b8b229f26c5be87baa1a53b77829d17f987bf1affc36cafb81bfd0b6a88ae74288f6135b207666d230e4c3a8d8a8d09e467586f8ffd813622b0c8ba898dc0fbc41d99decf62ba625289044031f1221290037d1997a26a6589be70b7060bda6876ab882560575b24a7e274738ae0b030a46c0f27b69145e5f78cbc858da5ad0947351c1ce67e01ffdcdb6c9ecd2e9ec9a2cb2a1a32d6b27c3e278ffbf7bd20d02654b2429700f2b87f9cf52f5c6370dc9cbd2ba694d458319db6ffa83f0bb67082aac5a276f3727df6d05fe2494349d785c8d61e441935e3621796567a69e68310e61a08371a13c9489749841385203101f6eb0236f9738962221b2da2c76e7611cb9f677172b7724f436cdae83b7c554faa9f923d86a9976b4358cdda935a283d7eaecc303c82496ebee61a20cbf4c04bd9497979977d816e3495eea4840a8d7338bf8723dfc836eaf4283f3387875d20f284deab8fe32db1433e61d75ee943bcf185ee54560c25f395921d7d024f4b7708436205f92324c1d90d90ce40c9aeb2572a9dd92244b4865615c1bc5bb86ba036a4972299b632ca13e9af9f25c5a8be85cb6949288655d830b01b4d366f798a0c165cad3d55b1e5ae0fa5b9c11947fa7ff48165e62239b100d15aa7d05ef044811f68023cf10955d5e13ed57549be2be673668c49b9fd3fa9f73c051aa9754160a20fea26e7e08886225a98bc3a49dcd031d3e67b28cf766ff795fe71c0fd6dcfd842071679da892db9079d0ecdf700929ad3b3837137269edc3990555a92ec661928b21c8a908277ed87831d761f4708f8107c45100b2812ff85b5a040370cd50623f6d6fb97c7940b602b979dfdb33d387b05e39443af30ea519d60ce4cc5a072c1c3d91a22390dd3f0213423807a9f5f82773bdc0d347d82c893803f2170c6944336a3532d761551b30c890d029d1d8e1d1edbe67ba5f5cc2409bb432768a7dae076ab7b27c6569c3329a39bc12b4c43b6ef8b2a9df75717546cf9d5eef51ec3b20ff45c26fff22dcd2d406b9dfdde794dc0322349c676f4fe5327203c67a843d8df0657901784b97b5fc32f9a4e0cf487c6a2d006b60b37f593d9876c1e7b7c343bd6de145cbf2284f20efbd5306f1482bcc04b187c32098255eab97d3b71c6f703a0abba9afeb4bff33e1c1e94d267525a36c428ace99d922f6f862c47cedd0230eba940aa64dd6894ea1733366298446773f075af988909e200454cd83885bfa0152314bc3f25d5d4f3b00ab971a7c7083ebf711895a8116bb03984e70efe2a13b783e9e28fbec5974b02d3e76fdba1897f150b0240165669a6110088447ad5e83295b01cd4bc609a9750505c33c8f3d7c6781ab7b717578243d2580335c13f2e2356ea24f073a7ee5f24e331d216046307769c637230acb95e96782101cb18411be4c29081c8a42c705dace005d6690ccdee8bd8494445d126c05e0a718267653bdb01f6fb9de16ab7c99f41884f4a9116dbda971c7ccd4410009dcaa066634af7d7ff145d04a65f29e8db61a8f4f7e268cb12a51bf9dee9e946eed9f41997c9a1e603f9b9ae0a2cba37edc345817f442b21ac00606e28cd24a05c161478da78d13a27de510d60ec9378711a0213fc0abeea7dee02ae0f36afa21a5e63ab5e33ca47319f372b981cdfb6e48020e966f9b6180a2383af70700ae21c92560ba7e916d689e5cc4b53e5b04d56027a6dfe872c2b136914dab9e5d24bcfa72a49ca0dfdd4f967a4ce7f81c5a2a5708567ce9d1d8ee4b5afbc1349d4f26cb5412631a3fb85b1d9e16c07e957a7c8939eea13e06049e38cae26e9b30d60446ac5e5c2a6096966470707cbd3ed50fdb9f2124bd96b4379c7d22906ebf942ea4005eef57af62aa9cea6ea70e054fcac0bb09cd398df1f49fabe1fa6561163fa4e48bfbc81ddbf6024d67af01f8c16d80f0a2450489d2cd2ec7c9d7d32f20f972b685c9b26d16f80ad9768a133e77a22ced4b8ea69106c8be56850fe26028794d6e8c8bc874fafcddd7fa6a06d5b2d127c44807eb174f9585a547c7601fda3747cb076ec960c22daba31684cb6c26d0374d42096b91018232b245ed371a92dcddf0013890ac7fe281ff32de30b77e587425c50d28a187b3876837d5cd56e5df4473a77b461e9449b006783bc5dad4559affc067f1cddfb66cc4dbe4f42918fe92e3cb569dd9385ee061570ca45339fe8dfe098c985d195f54f67250325ba7793b2864c32d4bf72e6d3d04741b7133bd1583d7e9350adbf30f0240e76f5ec02d7d510c7862743174aab1f45c5ecb39ee172d465300ede0af699a0ff06a40c570b12481588de99a7618eb649db4803967e5cfd6f57828748f202dad15725acec6a44c24760aa6b845be65d12bdbc513d35ac0ece2ed91fa6e1f2c69634422256463f87da092b4693e24fc806386591cdce232502895d8667909a29a512373c87f23b5b5851f8c5ae1a85ff75838b79c26a356ae78c26ec4e6750918e2697dea75377b1a6303ec90f929cd823edd79501b5e7a1564f9c7af0a752fc1cc3a2272ba31399e4516f4e3123c76afd8df3ae881d3ce7b20de54dab238a3f5bb17e17a9ba4a359da1a307e406a24d202a85e8aeba94936e246048bd5f9d51b9973a5d1d327b303cfbc4f613338118243b5ab4ded2ac384c4eff61b9075971ae991b27aed8d057bc2ca4edfa0e0ca1a71c73dbf2a5ca80442938177759b0ce03845a42b74734a42c58de320f909433966c76260303f823b3d698fa22c4797df995efbcff791fe006a6023a06debd142c66133251e422211994ef5315f1f678b2ee0f404df80fcfe65e76fae479c0dddd18545f6212b7b5161174ccdf7f394ddc6447b9e09ced4abc18de9ee8e87d2744b3aab30c2080d2c83cd76b5b035bbd38c6ed922439872189926d6d8ff3dbfb76b7a8c23f8f051b615de0f39f260f7eec00e774c85154d7b6cd6a4375220b318e60c0f941a99c86832779640017621b286984e890aaf49b000a67aaacf9b9450fd86eb3d9810119d5d985bc37dd8cf29c110fd7d309d7db3cf607d263af3c0d8a7ed024982280f157f97dc4f31306f61ff4c447f2a2d312709a1647202ce0c71c4a684d8e6512d746a1c6f872d254fe978739818841ae2d2222b33a9ce072a9d5eacb881fbfca9c4f7d4e0a03a1106581aced98873a6851ef9fa5cbc507a9c2303344ecb17c350efab63f3e49500f7c6a142ac41fc56f69a7fa408ee6cbb248f243c23b27fe51f46f14a6b30009c1651cb01f66ae1874c7801ea8c56b009adaf8fb1d529feea21fddfd6be751cd6449a8d3fef5d6837dc0cf2a9c56017e15117f01e13924f6632ac9647503a1e76b2456606d529ebb8b5534d865d4c24f2149e641888475c2f7ccf22be8418c8d9d27db677c1103b37d26988e7b3ae457526df23d5841543993e47f9adf73dba884b6d2f0b640ad3308812123d99ec8c1476b930a9e8bc336fced8fed480ea10732cc84e9f5441da577f32639db5c3b4e569d01e51aa7019c2d6a920fcc0f552f57c41eb6c8493f67f1e559f2710c3772e2f09e7415f5b15d194c77c027048b0fbd214d12fe014ef835928c5c8d7ce36ed1512cc6e7819c99629a11af5b46090de3a7c6e168f891e4dd8fd6e46409def5fcdd74e37873a71c5228d333567ce70d22f3a904a5aedb566ab4c23b1003b8303250e336fc1c3cf3b0c420bef35ba1305c6152e25b1f0cec6252c35a0c2884cc52aad93b227ade63c325c5863595bfec17054475f6e734eb7fede34d99bb706611c6e0778256582f4bbdc3cc59f8047380046cfd1fa0d97089243f0447ed00325a752d5923e4a9412eda5ceae5d0ab6bb8bbaa996aa890bf8ef600354642fb3965e1b391762335d87ac00306e086f2f9bfe87b79c3966617471e1f834e20378b127d0b7d2c6e667aa651938ad063976e6e606f3001d55c3a9b094fa7daed0cfb9933d84cac9a25356f87fab35928538bdf6929cbef6bfc3ff18ea112ca7edc8deca70f37123966ec3b3a804d45b856e01620f7788d93d1ff3bc79f819d207c923b43d018bec67202b476bcc9a00fe0887e36114dd321e4f75c37c7850da9ca34c7dbbe4e257ae247e2a84820846cbef1abef031a821e4ebbb89515dd2958100c682c5b45cba7895b7401316d2805850fb7e2a2503b8c7dfa989faf3c5315d12c4dc7b1cfc76c4c5965c1dee5380273c9ba00158e62630693c309d1b1ebd2b9d1184be1fe2a809ecc9df0a82ebd64f97cb6d69d5dd1a3feda51204e624ecbc4c4916b7ef6df1ad9cd3e32582bb5df856a3aedce512a1469a005c1ec88919335b73be50cff3a48f14353b1f909c60e00fc1b9d6bb3cc44cdac2e07c5ad5bb878741acb907bcac7e53a7208d873cf5d9d4bf7d58304ab18c955f00d5a964c0045c63d1e5ec3bd9bf066d996556ae9e4865f9f7698fd69bf344bc6082174e7fcac4ac510af2ba0b8b4307678565ec84a8abef569074bbcaa5d4669a02cad1454df6083025ced5928e11d7e32c910f36058cf7b75cb7512d7856b51f78ad37c7d3a3734774b091516ac5754d7fb13c1d8202ff08dc67339a7784390428043d1ef985728cfa84f1cc322bcece05b38a99d391881827db9060601332cdfd86736b2f31c9e8fe483f08ef8040132c3f63e5c3013647d6c76a2527d5e31e06163487373c61c08c6f7b2c1e415b4bc2f41fcdb06d7c9f8572431e71ab04eef5f806b0aab6a053f255a45330bdf2527c30e6890aa35b5155ea189b1a4aa2d79fafa39873efa8c044c8c7740988a117726503f4d7cf32b16d55ba79afc92e657e52eaba518b375ada95105a82b0fb75a1054ca632810ce2744dca8cf5099d4d3283785f59eb2368cd3542bee8cbfe8268fa3e9ac8f1fb44194c003960e4b637fbecbb5b72e3b22a7d7b542b7ad0889e0badef3a59a865a08c277b8b9c2e171d4155a422d8c03a270d5b21f8eebfdfba349ff8ea3d664db3029f36d4088d71300d3c57669aa0d159e5bd56cfec2194fc6d93f87fdc65039234f7f55f361512158d0c87331c1600e530671e7e924e4835a6455c4435e9cabae0a635456dc0be4894dd4f219621b23d5ce82d65ee8826c3b5b376a65818544a4713f65727ae64dc17c2bbea9276e09e9ca530cb87e90f0ed1f529daec2f2319ae5c714093363bfbb1a950897212acc569eabd7bd518ce3217a7a258aaff3ed4dd3a0e6114cd464b20d149b2e722e693fd0d4d92c4d9d16b06dee757dfb8c054a3e921b0c0b265e5c5c25e6a7b3c3e3cd6a7d90c3664486e02b5410aee0c1f934f2553eae178507e28e7393e09e1900839d429c67e8f9141d462b8b3cc9b4e943837b08a7853385d72a500903f5610a0ad88e8c3e5cc600e28e32d6a82b211983712cac5b53bede7f2138f5423cc41f07cf8055928f212020d2fd4a2af5911a1287f665d80e2b5df9938498d8bd3088135091079f8d302aa7905028604b499286d599b82f47243e57dd9a3c5a3243b092dd774bd79b0e619c343a860c6ac13716adb6424de246b7d5addc6dd6bb5768ef949e109c36980c727cee9704ff695730afb08f9429f8f9b0c3ceb7537203438f5b82d7164902a45460898b98c5827d639d6d948d72ae4a9167f56602d5a4f43c09f8af8dd3d0ceca3dd957e804f8cb1672f290186b4f3221ed2159acab98030be62df1a20bffd15275a638ac0f9b92e0bfa7edeee9f15136ea3da6c5e4d805d95238d7a190f68be9dd25363f656482d1ef7648de369ba4375d49a868b81cdb5b0a507042221a940379d30255fd67d359c615979eb1aba65447ad605ca17550dbf42f6df8cfbc671075a4aca4c35cef107abbaa1c0890e4b122ea5b3e66c6f0435efcef71da27b8287cb3a4da5ade64ce347be34d06da323b9edece67e0ff109c94e1d7c8dd0e3ed123fd9326174a11a3b8cc4e0c04126bc368c64d687a6472df5d8e7cf08855a38688523ba0f887ae31b989bc4e5f5fff02cb24371c827ddf77a0de578af5a4b692e7b1d2650cf5f03135483a7c972e2e2626ec2305d5e3b72dab8723816b405fa6b21e9535a87f6cdbb7d04aaaceb93fd4056cab635c1a9cedd48813dc8b5da6a0d4699157702b0d329c4ecf00001e28c56367b7894993ff00d31e573be1010cf62bc809884b647b47cf401e4ecb2e66ed65265259179a42a395fc051ec9c71679f250074729b842455363e7acb23096e15389bf69902f923f6bff527b5c38bd25d4914dcc9d957ee5958a7b5aa2a64f00e1bfd92eafba1b719d3d8e671bad87016fe26d920c9b2bbb02c13e1cdb57cf5dec95fc019b9ef153e508b7cee8c6a5aaca1e454a63eae6d89f56a5a2afd71ce492c71ab8dd0db2144dbba6eecf7dbaae32118429c2bdd9a94e13fb4ec84119834547c2a0122573bcfc8b015a01392f7e294cf23d98be4908698c2c1f1ef7841291e6f01062de239c5f2e5ea32ce987bb7614bbe45a4b2de99d76fb04da22fd5d661c3d77eb76958d29c8cb13f36a4e3d0f879ca5e91effd091e04abc533e2cd8eb22d4323c4a138e468c2db579500ac821c021bb625812b986988a155b2297bc6af3304fed858f1af5b5c73805a7bb185b91dc072183ce00a038abaabb408de99e50b54f0957d5029f17ef9b1d48eed754fc75dcd831ca4aa5acfa1a93c08f0453d69ed2c9bd0160f41742458bd5a5553e9fb1593b39f27c4f41b61e7691efbacfd134cbbbf7cf85f33721fd592337a03a6131fa64319a82966d5af2efcc883d45b7279f7970f9bdcc442f4fcc2d2d9ccd0725c7d8e1da5ae609baefea5054a679b629e104c8c9e8e5b001397a571c3db891516a06b5bd6accf24d4092f121134bf087d8abe92fc3f2b5880e2465956bffeb7392d3e7f228204f468b6661e31acc971e7bd02d5adfea9040f0d02b165ee329d665653f9100ef3b34f9fe65971668d2e4254235593a014722dbeeb95fc3f583663e190c1d1387e500013a5074c9b0d4824ce3825163a03bf3c8c0cc5d46fb72c82a773727f68d41b8c94578189aa6e2f3000d0a3cda80d8b1a856b62519c2890ea155e55b10bdc92395aa5541295768b5392a06ec10a804583a9e8a676cd1b2cadae363acc11b092c6cf29e4f3839d05b67d938589411fee366ce77ee66731450f865634c2722c11a8114736d63cae78c1931958a476fd795638c96321b9624179c8c7961aa48aaaae74c8db8cb0f622d8f7d1b6d7945e4e44e937fa2972bafc0532d4c92c270e964ffd5418007008be7fa080e356c9ac836e4f403f31259dccc594e3d371f9c0d371e7b1b66633099e02db5439b5097de2cdaf3c4e20cca1736655aaafb12240a50722d532ac53933acac67f27628ba3cc90438f09ac42fa8717eea7c99a2a98a3eccfc723ea4d26c300d61a78884a58845db52c301ec86b0e316cf53e039e310479c5580f0f4527a159525e1db0856b83d3a8f6a92681d74b58f263b7ac8fcddefa109f11288071093bd527ff6e3f8ad4772fe614d7f5520f9d35ebf4e4129286ce6c4c0246e776ffe4d0d082cac092a0045406dd6192d0f64ffe6772c6c126481fcecf01a28af06b9c0555c7a812f96128933e695526587020acaaab2d38e11e72dc4798781b1f29530dc9cfd5843b701d5ced26d366cf7967afd5e8b0990133fc7045d00d6f9b26c0d42016ae2b67d52694527eb16b5261620e0ca70909ff326f195ef76f01b7065d174640755cac9feb14caf98e301c0887e26ff86730e4d955998eeed96f6cd748ed7ef1bc340321de29d6299c15ff6909d9707519bdbb3453686d3409fbdfc8a13b24f20410e0ce5812fa0f495f6d6b20b46a99c6e00c79972f2d13770b7003823ea827eb15f8b3de86641a12b5113096c993a44ace677ea54e6f9c27a955ff6d06ed16d7a915a6f92b6afa5fa5f77bb6813b5dd341022d1458e65cac03d5ffacf5eaea09f8fcb18420d0dfcc1d44e1bbdb584a87f563734f92c8f10becfd93b643a7396170606fcd74e6e228f27dbc72e768416a2c23957c7712ea7a59fc3e9a7d7a01e845e52edbac72a7465c6641e74c9d61992bb1e48d36999d35e6f8a90802a79886ee373457416a82f078611a9ac45ad640bb363a4232ede3554f890170853f89bfa6306e051f7dac65c56e5ce59a07fbdea980b944810cd532f7b0606f8e5d936cec075f7928704b66a7b1d1f1332aba8146fcb8e16ee5fdb364716bbff9a74fdc039b26b7af475c24e889dcda82d741ace7c3dbcdf8a8b204c0ea7a9075292c8672c0e0bcfe41c866323c75659171677c66bbb04c50ed683f5a0cfd480577bdc786acc984d0a12ecb962a04fdffb554789fbc689c5fa043fc23d5e98083269ec3cb65daecd7482d5a089d1a7f7d1c5826f4d375ec3eca3a2932247011189556879749cf1437223291e0194cbd5085f231ca8c254dbb1f893540193c12c6fd06137fa0ca2f095d1f9c5a4eaa82d2377c6a0a4e88f6db6449652d05f9a7dedfcdbae042057bd9764cb81787a558f130fb58a1c637fd529f6d1579eaf0998ab5249f574d3f072916aea19ab8533dafc10484006ace0b0d197ad3cc8debbe44faaca649e5e246ecb42e7acc1760fba07dc4b99cfc2100a932ae6f6e16af735d8127795c0d0bdf0b1b82d2794225da6f7982e16f30935bf905859bcf3ec477771c9078fc89e00de4a8fd5ad1f7b3ea59d942e77551044e83d8b739011560bf0b92979ad7d5fe14c6713f4ae860c84cb0af584d300249c3035e2c40394b9503e4e3f5516126d37a7626aeb635e9ef64592b06d125082143e8ca78ef51182f1ca2e54e6c518027a2accf1bf717a761234f1684585d2810a4d2b6e72e49a8d7783923a3e622dc4b2b9758159e4b544b291ea40a12e513a5891acf250fc21c6c616f17873f935a8fce55e9a8ca77d694d06890b5444e6401674a5903d1811da0ff61b29abb2889fbe37c11ad58a3575cd8648d5dd52da8b446a085f350f2f85296fe2ffb65a6b6839894c2d2f1bbeeacbe5a02c1ea9c7f3ce990913363a35438b58b3ea9539b571ae59b1a0c200ed8319e281a966db7c8bbe33fbac37fc46db6a91d751dd6d37a5eb87ffe1149d23de8bcc021605a20dcba4809ff9b18aee91be8221a85d6e44dd367a78412ea9d9011d7a73622fc7cd9020dfbb3c61759368faad9396188a4b1d3696b2fd281ed6fe89778454930f403e6ca59e44a4ee47a598dd50c82ffaddeb38d97f7c956a222da9f5f5867c5b52e87be1a85101010186f827eae98fae019c363ec260cae7f9f46ee9f359adf7039f2d5677728d4c5b857108f23d960df781f4b9f02fa16ac2509830c4eb70edb9c1778205b22748df2d77299b0668691b68da7d945142737654b9292fb966b2d07fd3556315a901476fedd7f808448a117c715356c70608e3765b3ac0f19a3a608b5f1d2ce67b2aecf76d6f89ac477005fef1044cc9c0406e8ca09edb1bc4e05d0ef268d1e1a02d1b7434c112bafd35fd224600c82fd44580c4c857b8ee55b10f736e93634a8c496f342e7a8159c10b64e5ccf8529ec981eed24fd8e54288c105f26dcaf2e02693cc51cbff2dfb8fdc06cfb2a1b6924015b7ea417f684384a521d34e290ea6b97a5ec808af5e574e67cb5e2312f4c47a7f0e768a693905128a777d97ea384cb95d837d32b0fe1cdb7aee6d935966d7f97289e745dda46355ee4f02ef166ac55557da3a9636dbe36475b47906e18f28f492d0a9e915794198663654ddc8cc681a9640bbe5b95c51256510ca397f252d84d90c21bf925911fa9813706eb7cdf6f7bfe6a35afdd0eff919dcc5b4e55f816bac5532f3f78df2d651e8cc43cd16d2a48e2ad5e8ff14964df120619c8e4a3f4e0a498309a135a48972097a991d8e46ddb4a104ba651d40ab1c9b192e63aaba276eaa27b79d212bf7ef0f7351c1517e003930fe262d01fab0c9be86c6362021684b63303cf", + "0x3b5944461642e26b9ea483970adaca91078dc8826c991ad82f55a4db6fc67958e37e5095016886dde8b5e898744a1d31950b3508ec98272558882c04a12d799872c0cd152cde8d36ba9bbf177cfe74de246c6c52246cb34859d5bb381e7d774bad777a4e4578252e30db080c039b75a5ac4b24670c6fa97dd0441d882224511bdd45ff3f2f152b46867627373d655062e602dbfb1208cf40bc8a462b796339b44f00b7768051c8019fed1dee31793022d2dae1fa97024787028f942c066c2332d4acd72f020ac15081ce3aa13a5087273351c9166db935efe985e0c93ecdc06d428e0e9735ae1f84d7d596e98997f3ef116d61705f11d09f9e98ef3daa336f68f140e1f1cc62294c6e9f06cfa056bcd63623c0e7aa435f2db11dffeb6977afe73ee765262cf4c392b8e661ebd8651a94b2caff8c7c78031d96616fbeabfaff090b66246bf098b7804c57420adc34cae658a1a7c97c313f9326ffcee7375834403db132166784769f63ed9be62ce19f2a3e60f0474184954f1bc8c81be661a49f3d28de71144954d45de6d0b19b9c177c41e05651d924c556973db6c3256fccf2780274352e0b57e53a412322d2631c4e7ece2e5a44406a949e98d8a877fb3847dfcbfac01e830c5322cfa5e0cb047f04da7027b4f726114c97627a0cf194d7f868f1ee8203d00c96ded30e515675d73a7c7af4ed5ac70369cf9d7b2cbd1a07648b5d54ff311a153a5c360ed89779cadc4df08c3a4af85b9bf57d0ac1974b0179c524afc7ad05e4e32e4109f7869aed197f1db256989324b89fb08a1653a477641842b553b3f4410a0bf35dce6d6cc38c0398b0c787609301c435ed04558e7d628963cb12311adf0d4ddf8fd96e258aa111558dfa52cea5d341c8fa2b17de199aa1c69e3e495cf166729e0003fb83d666a4cd10bfa47eaab054d6528aa7a11991ed246eefd306bcd29cce157f5c053577fb3262d61ea081d0240a21bb263ffe607eb0d3b2d84d6bc611a4ee382d6c4b981ab324d1d4189e243662cbe44ae320576a20226e18a0edefbb090bfddc96340147cd4845d080113af9d91aa9dc3f651349cda6a585c9b438a85186f82fa610f78db603788eec2c823ca2a0353b9a158ab8dd625ac6e588918b75c795bd7303943cce9ef47e878051b2e959e9d829c286da820d90b522d7c939e7c83970581b1a6722112d86fe43547535d4e2b8c63d6fd2447135e15226d82ef159e70943da286404952d7dba714e80495430f5e7110f4a5f76990d509b4406a7fb579c1e5b8950adaba0b1ea1ebd34a1c1493df20325ef2d6ccfaf2db7d904663bac0f894d0a89f240dd625fda55d47758f251d68545f2a86365723bb95a8ee5ac6fa0d94112320ae17c45341c700961649e88ff2b6688f1ac97b4d74ec2aed7e54e5c77ff23b25f3204014b101c5e7185ff4992820f6beec9bc09127b7793191d88a97fdf8d3578257cb5954509c4f6416894fadbc358f867fdb61de0f90e744fd1bdbc65e229e78c7670310c6710c1e64d7acaf2a28f96328c3694d4c116ec0b2924ec91a5c3520fddb8508c9778faf74da1e878b3564b9179b987ee7344a349c93e55a3cf7888a51504f6dfe51a90b4c2c10eee847670a2efa065ee125748e93dbeaf486384a1167c427eb96e762a6e202998570dbc23051b03a9338eb217c4722c5a765a663724ec52fb6012eeb5b70b3aa0b3bf7a4344452b5d25e6d96b6a6764e05c9a62a8581c885e12964d7bac56eb7041d9037bf4ad18703823f8ddf31815d23974fe6ba9d52e7306123dc8d1d94441f9cc325fd77ffbd47d875cf6821c43e9fc7585775fa800a9b068cf27556be343cd85e49a95d7bd76e2b5f76c5e57c680fbf287b2f79aaeaefbcaf82aa90d7a058ef1792be23177fa8a05e0f9c13bc95a2cba577bed735ddc8e3c0ec1c2cc4e1b8ce757ad18bff851f5dad1b5c8f34bb7a5e48c3ba1ab266e66a24f2079a7ba21510767b8a80a431ecaaba70a13eea1ba5784800ccdc7968e48255a3eca50aa0a0a9d964ce01c0de28745e6330a52f2233d40d46b39de2d31e198b3d8058b21bc7cf2554ee7bd4304720a334fe3fbba537c98eaffa340dfbc8e27440d215db3fea2b41a13fec882a26d1bd8fcc3c248a232a26a6c0ae0968629bad782b4680bbc443fddfd508f9d33b6d04390aaf53f06e487bd36cbc9ad1b50729d216735668d2bb19c2bf3211bfa937686d0fb2d190bc90095ba4e3d765c0215aa5bc75c179ac9a4d72fd2fab7467efed948d8d09f17753e632e2a3db66695727605d51f01c66d4a14e1b4e4de8a533814299bda72048f85e0b7ee2a24504ab05dbebd1520305f6a5c359732343b913236b624da860296c3859016f1edb011d720e98d5100017a86bc2ef54e0f82b593e14ad253a1d1ecf8123ac27a33fe45326234d892448927ecc6d7d66bfbc1341adae7451ee146a53b0bc337bd89b466d82cb395d321b0cb080d50afa434e8acf38e545fad3323c66c361b566379521e2f6a85c0cbe0b101bcace860332f8f404788cf08aadc3905771e786e3ffe221d5b6c106bd15f2e42b4c050f87111f14322fc4eb9a7f4e62f1393c935040ad8925366c755d29187cc1be9d1f04236aaa5f14051ce42e6d5bb9b283ec06901f550c0f0834502f98fedfccd9c1322ac4bbdd54d3d1f75f2173a6eb4d7b8cf3c09e0e0866e9c3f3389fdcd96254490b5bd696942536c78ac8aa6b6d10f47a288ba117a0877f71d6c72af866f90cbc44972a908e12c8b207a8ecd45608c5443a49fd92e3c5dd2fce5a68b790a2ef58e9167163e11ce7231190d424103e424fec6ea76b84749748e73ccafed1d080e1b6dfaefc15a4589d718d09d10a272719717e4382938f4a6b902122e1ee07d19deef889c606cdcd4125b2706e9e73d7b60323468c47e60face0ebea5d590f0cc43dee4cc3198d8f29799df2ebdc2e9c44fa9fe1efd6c2297a0280def55f07fa4da3496abc455cbf563df885525e5bc668680cc19ddbc38e1297760f49cc3d622a2a1edc148bd728d020c0def0748b52ed5b046cb6b09756d1a34bc126153078ecf05e77c460d2a1a5053960169a6acfe48a5c03cad53740bc62d969b50ed77bbd5f9db7b2d28ea8d53bcc564cbff8c1a82c19285777f27e6b143f4513963dfbcbc470613da15da3ca6a23962fc1595589ed744e3acd5ebfc34ecdafcbd885180de6ed2ab367d6fffc1366470f7efac65cab088bc5f80337768b10b6929b85bb5ed1f02ed482e1f4878fbb101cd58ca8f228a04190511be94f2b11374bf4d3189c4c29ed44d9a9d0ec74800a21c6065c86793ed5721fd603c0d1caafaa52be80bd9f2bb2d0358afb23ac963dcbfdafcd03172722fca1a606b87ba5ec42035c5505dfd090ce0a289380efe3ea3b8ddaac3b3bff53ef0265607676298c664d5989b01653837c9d6c28045bba8345344c969dc8618bea140add43e83e358b8782b2d076128b0c1f6d25d0fa622b5b02ea61298c994125f6da793429e9034ef10ba80d25cefb9322724a9d7bd9ffa9c7e48dc3dfbe7562914f785a1c9a2599290820c7475a910aa35b3b993cdda41a75b44a0be85cd1b2a83e7deb52e0e332d7360d7aefe1b38580e40defdfcfcc7f2b19ff6ff4489eeb26815e0258a46944a367975dcfe270c2c430ebda63f948219afc600ea09026eda58b7a429ae1d6aa5daf83daeaf0cfd238a35bbfde4d96fc84890ee1218acf82b4b76ddc602f238f263decb33007aa1503e82cdb30a493972b2526f9faa433db61ed6fef9fd2cc26f5bd81bbf1373880fdde5542624852292e90781e36b573844102ea472ae116b1e4f31d936c00075388977e8d17b907e7e2d824f8bfca268b3453129bf36db3e1751ccab2711b46d5288042f27a95225b77fb01598723944294607bc814b2ba6fc7531996dc4f84969c5302a7e1e6fa3f128f33249d57f38617ff4698fb7c82de854aaca9ecc37a7c74c27954e9e6b1ee23380e61da2f7be6bc092e8a7d7adf6898b6e4a79d1c96facd1da3846c02627e5eed762784ad950febd991dcb1d67a9673de08975abb95d0e2ad65750719ef43b6d492b0fb17e43e38e37a70f8fc1064a8dd8c247ea5623a3d09c93236f06c1810787ed45af9dd72f2ff9e64345c96ff12504868a519823ab639bed75cf2e435ed74a49bb925205a601435191ee17ff1ab34f0805574ee47523a8c588783a7e3e3c0b38d59aface0e475903d04c730db966640100a525a42e7713f858a6a5610a59bf06da7cde2469aaf8e136b3bb3b0375342de49a79be436a487d61679cf36296b31330e0aca380b67ec29a8e2a5cab9897c2edcaf6c6a629fd2c8921a1fff11d6ec2b2e3c4b7de5ba2607ddbe0d4158df770187a0d873686f386860a8383b95ea357a79650ef0f6cbc22c3aac555ed940cb787263447df7849a3beafa4541e8b3aafc07d2f85e623a0ee04a1b4fbcaf4a9a497fcf90d619959ac666e92b79e1d62fecc10b16eba9b0391197bfc3af5749a59725fe9be36a72b8479fbe8e3c24db4131d3d1f76a6557879a0842d2b69e28cd37e643a43cc037577e5df8baeda9b6bc770e4182c69b4f3cc0d1f380e7b9010dd3d5855260d35292030f42bd4884ba78d385abcb9df81e710f640db2c5cd2a12f3238255058669ad9b0ea1d9ef1e3bf5c48e7a1dd0767eaf01df36262bd81c61a41373ac710e429686cc680db9fafab59ac48a69d1578f0e020d3b6f1967b3a42913cbca456a188b68e5eb468d83d73fc2b2d857770a6139e5793b87dd7202c454d612da4eeb587ca79de1fbf21e1b59e2cbc431a5b4beccf0579f23e5dd78860d875fcf801d87853634548473a323ea6100c6bf29fa2794cbcde95d02587595ef37be7532be91e7484e93667958ba6bde4ab1213dc4b9ac04bafc92e121e2f6408292e4239692eaaf1ef2f87bc8b0dcd2819bb45e9cb14bf99ef48c0f50e9f72546a945029005ef54ad4b8869e96daa4c64bf84a7709307828335185e8cbcfa7eddc349c22f706a096e7ee5bed51928cd428ec951bd3db9b2724e1c5fd4e1597b55323bba1bd554bc3cc2dd72629bb27960f910cfe576928730147d991959d471f54df269b630a2180fa05c5cacdd1624a50d496d0aad327fb1affe05a202dac509b9692141fc94c543e83e88db04d5ab9ae8086ee44989dad56e2904976eba58f9537d798cdfa1e2136c3870e88b56d21e3f82158821f2722aea45e109e3fe41ae7535ff5693d7b84d7db84acd2c3f0161cc2dbbd23b510f5afa3b2d8a6bc3387e5d23ce3966474e3e8113dac4b9b2c2679de00f6cc10e1f5fc04f446201e0e7a1b7452991a0a383f855fa8b8780ba38b8ff7e706846e9d0bca248a6fa0547d22c8213bc860aeab589c4a732e1fe5c522e558eb66383748f763542dc83fa2a3215e13d92bf4685d11730b0d57cc5e94bf7abab73238395ceba3e820721bc77aac04c0b6b10b29aa6a2003e4df4d89d0833ddbb9e1b87046457e983073d53d9c9014a1a32ef8853bfe0f824a6736d4be6494ebb46f50602094782b8b941188246e9dc436c1b81f3f4d81debded5ea2a102d6c7cb097df92c7e2b78d4a7f98a03e9e22f214a678ff9cd07db895760ee6227d102870c1e15da04c5b208e4bbfb4bccd8117ad6c9e796310b5d02f01cff1dbe44c0a187f77b481d870b0be506dc531aacc56e73c2c55af64773cd0c332c7bd9665fa78b317f9c91479df9999106b8cc3ba500a6def091fc4bacf7848eb20f6b5ef5ab3cd82099a5efaba01795cb949799abbaacca8be77efbbcccacd79833a2c897a9045ccc4707fc32a7d54e9d855b8be788c4d8d4ff800f77aeecfea3ff8436774c47119fae2affc34e567dcc3d120cbe1be580767a81920f64d6b55b653aadc937a8af40d74d1fb5e099e954cce9ccfc80ccd967befe64b59bd1f51e93a824850d4cd24ba808969f2208d9b9dcf2acbcdcbc245d3128b87798157748167f09eac27b7b46537a302e6cab9bf2863e43146c0242c8bce7967c46ab3c636d80bbdd0bb98d2a59dccf3b38b2016780885c9a3b333969c2495a872fa0066ffce21015e7a1517e6781e9414b2ddffbbf9276b83b1db36ee22b33cf0968dc3495edd10e95f8f2fc8f0c0817c9e98e2fe72743cd9c827e263505a525dba78aab05883ade83c402cf9cfb49fdd3176c460252291f9d170d3eda8c086dea4a1e6c5e547bc5f9c7f3528375de008f275a8771b3c49e32b0f592fffd065ff9ce6d36e30939a088759f7537ac8ca69de73c880d1862793a2f7193c1ba21a3802a8c85d7360d1e9427c19a61072eea7a797d8ad844857b1894df2e87192a35e88c5734994204cd749b7a15b9bb308d412188e7cec46543f0764156bb3acb1bf67ded31bb851df40199cd30056914b5bf4f508da8f16b43e25ebd0c06dfff6eed8e31461292ce3d8c3e22c806d7f0d9ef86c98a9dbfb794f6a01d08675894ae17e54be6e550803293a0c76fccefee0431e26cac7fe39c999fe150e1d3dab068b2622519b7710e83bf4b6a2d33a4cc5ed81cb728bbc21e70fee5e7d43ba349307b18ef6b4fc04a23ecbea0c0957d5a0ef6eaab5c103d7b34531d991313a6abe353f79cf6095d78344822627bec3dfe6667594c9818c89f13432ebfa2c7b8f642b96e6370887ed1bfdb578baadf15336790b325fbe784ae2ddeded8ccc1739ed605c23e5446580241f9005b8e8ea60587561ec1605ef07e488fe10722d25ce925bb636e15bcfdaa00663bf7e20c3b97d636b1335df98e1a525f6c90082f44753d4b93f563049edf3e43a8e6f8d8639d6c91578f49397d40b336035edd6320af851ccf1a813540aa2d02c6955dcc64e224842d6f60eb1de471068980a4d31f5ce9c169e9a3e03c86bbecc5d41349b4c4aeee5c6feaea37ab23037fa849b118144ca1b6b06d690de52d0dcd575ca520b3eb79b8b07a2bb571b05b54ab708ffac25082cf846e27aeab8b7eff370e180fb59dbc73593b1eddc3e415cc03d6e9662670bfe9bab983bcb1d76fcc6e7fa7ade565d760114ac45466d4fac9503f4a20535f138f6e8a84ae431b64b05efddcdfef12220d87240067ce0cbd4ad2fbea9131c63cd3fff778fda340790a4bd53e24963fc4efea24f817a897c2e6f1f4f84bfc45f2cc91bab6e184bdbfb0dcecd2ae2f41539e720e9c4e50cd3c02b64ed7f2c3cfe02d89ff9b498f0deda69eea2b7b2366cfa4d5a99fef5bf777b84f9806caea4aaed2154e470ae1fcf2b981eec22671849a2fd2717c1d0fc38ca38f8c91b5a88b3a89a27bb7e48bc245ca59da9ffa29d8412faa4f4cf1e683dddc6b6221478a99981864b045de11ebda3d5e2a92a9f23135ffa1678fe80f4609f67ead1b2eee457acbd17bab97ec122b6aac5d7cee8575c5e182f52ef4edb03e3586ce6b2c8912085b26f906c20871c0c5c4ee73642f6804d518394f8d96b91813e4f3d983e2675f1de1038f8d46311c5809dcb7a853cf5f5db672c27455256fd320aa11aad41b31c8457ce9f1fb9efc2d44c0bf14e6de11e4b0ef2eca28dcc41563fcb9f310483aedd99b55fc6f1f4e8f217be524f1f7c030e0263af8420b3e65fc2441d198709193e9591ce460fc5053b0696bee13b7e85622e54a8b8a174823dccd3d2a45fa01f604e0f8817cfebdf6e52ee1ddfd52e628d889b4681b605da319e1875e43f1ef7b7c0e6bebead7f306170c2955f34ac2e366535d04c2d08ef16fe96a76901f7e77e910265fc25e770c85c99fa651651150b7bb31238344bd88ba0294158073f010a6020d649097505ecc2e295904fe8605b6e4f67015b8ac307d5a9dd63cb6840c52a36ff8d58f0e2f720b23970da512d8d6144eb0614c5b575e4059cf3e923bc5511b79f386087cb35fcf8028020da3b68b43fb930719467ca7c63e20d6e94bcc49d002478bf04e7a5fb3915e8d49e86ccfb5c060d8ce85afc7f2999ba87d3a1aa5493da441af5ceba17133e6eb5dafca9eaa614f5d2aedb9cf7d61c32ce3cfa31525e121f93e1d6c3b8e738b6d1bb1ac7a179e464f36933ef624d4962dcb66720c1bdae6771787d6a32fe197fa4fee43e77439ed1d5e7309168a3feb4b984c1441139e8873e88dc63787119b8c44f3c1f09a5e4469500dca2ca4925579452e572f49a2c01b24cec1b6c9181bae8b9c41a0adf2f28bb12eacdbbf9dfc7f9ccbc39480a0588f592f64c5b7f9e00520375d8a19a92a0c9e509cea0f220679bc6a3ff6499eb1645f878b6cb64d53c4d2156442a0ea972cfd3288c1cd12b356f0c58c1957e815224e88f39677a797360af68ae274e11d5ea39f97f0e9a9a959d56d238adf731ac64a83d29432720138d0cdc386683c38c7447f2ca94c325e9cd1d9f9181558b04121cace9b6c4fabbb30dd22d0267bbcc237aa7441a6a90588daa06b55a8512bf6aeb913415135f647e81cd86582d55c5e071f7bb3cf9bff5f8b945a195d826e401db764049bcf0f736264cd6dd10fbfded588f11cbbd92eb28bb806ffaedea4eaeba9cbc30be58f6e08e1ea175ace31388f3f5e40f4ed4aeb4550dee785fb66b5cbbce74375c3b279dfb8dc13cf390b97eb2bf604b170cec5ed7cb472fa2df4d5486ff0ab51f4b46b77f2f516dc0684da41392df2719dc8ced62562892a2f317445423808ecbb5a2c29fc7559c23272122a3ff3b832cc82ec1a25d2d71db6722e448959ca1825bc3aa56c071b05079f07f08ca6a92ab09cd590f2de4abab9b694822a3f457e9b0427d2d6c71a263694b4d580003a1d7efc9512473596c84cd3a9e357ea316d56f318fbca891e7223a4c725d5a3863a5cb20c1472a4b208464e68aa8a2d2b491690484e5f4b6fdda7a122168d7fcb8fbdb86e895be2585626053c044c943281f6b583abd90c59f0e5335d7aabeceb078b4dc11d6cce89ddee88856394562a1856ccabc2544cafc3fef241461d48ecfb3b7a62b9d5ab075fd9151aaacb855cbd184437827a6c460dba824ee081cd785340438058f6a0da84245bc223b498f474c235afd5ad35753c73b03644bba25e355ee1a031cf06cc4666dbba50ca1a82d02fcb31b43d729ba6dd3160f56f570f48e559172ccab8ed5e168a3280e38a7ab7ecf5ef7e7b5f99c3710266c1e8962282d9c493a647a20fce426fd03a1564b4bf6b51afafce4e547a95859752f46dd08a7792938dae3c4a70a0862b7d2fe3ec15a0f649d71f5b357dd1837692ba5178aab42beac1f88d7aa169c351c2535a43f6bb742dec3488a8b6a5d139dca9071c4b9c5b40cff57cbcf1bc1e41de72cbbcb41519dae8d8faa0c5ceee4affe7a9e308ad0991f2bdfdf5e96dda72a8bb11c055752e68bae839118a0e35ca11f146955297efac700fae4be079ae4b7644199bb64ce2ff7e9f9175c1c93d09134e06229aff1eb43c90f6a9dc926ba8657983fc459c0c5e14bcc348b30cfe0f5e8d4f1b15265ea3ee2dab408d72b95c77199e794c862d55f659288cedc8b817ece62b370d969cc2091672004be7fba979ccc109c5d2914b6d974446115e4f0e6736fed0c03e03339300ee232ecd15c9c29b0488c5e5b5b90c63a5ffaebfa8180c35b864d3976d67f8c6c5a33265b569bbd7ab3677eaacac810a7e4333cadf0c5e1de7144eb36ba8458128bf6cbc11293934f0389f348847b1642325e398a9f3a7224d28305f4791aca35a7a4d15851da9257616b71a793f27b1fdbae8eeec8c4f6640888fb8e8905ad62d1cf7843c4f0ac9533b95caad5dd486f4996f05d4cbf754b34449d2e06b9f8102afa136493ab8e09c79a5dab7001d6ca962d150ba5673959d0e425153b8634817830f07bc5005b03482b199a19837f20e34d20e380787f377bb3620f263efea77aa116a1876a5bf1470395fb52cdb6d0b34edaf356d7cf0a0c61c9dc02c004cd27c1ccc5783e8d44e3d5c5e60d53da7df0db16d614a84e3cacd12e2dd263092d515ece1eac4c4a5cf4c50bd8841631bfb6b2ca09916e9d30712e10b283aac9f84d23898a27bb1134fde6bf32431bba8c07f6aa4de7b1177a2fb09a024a23a5a12d87b952e5b51f7e99ebdafe0fa0fc17f7eff6527d752fcb6926a743c6e917d738dc37feb0eedc6981635ca2108c57a8f22a5dd03bd939069056bba0302fdf1ce1d98780fafbda115375b01ce57651b0a27e7165174bec3ab27bf0ff99656e15af6ef80df50078acbd59a86c8f881f520cfdf8e6276033abdeeb6b6e0b54a04024c34b77c7603d81729199b3c92e0b3615f04feecf2eb52f7f31e58a3beefe1619655a104989b2f7e4d1ebf70def96b8fa001dfae4b3cb0fef5b0f06166acfb4f0ff0f433a3f3826ec30d360c2ac811e35ea8444b98a6c6285614cc42346e1f1936808f7779c4ebe3efeee06ed7e526a0ece9d00b224de2be9c6eaf5504305a1b4ea7905b6d8665729885b1f9dcfbbeeb9fe4de46e81449cbf18395cf85d04430df7fc894c86bb2506bfa37ec408033bd4f0032f71ec86448a4679ec8bb38a59a3302ec74482bf58a78130dcaa3c42091d91abcaaa9081fdda6bc14997dd29dcfda7841769c9ac9d1b3fc1a11b65486409fc44c4ea512d9cc0e86aaecf84ee5802605b7afe918e64874a00668bea424ff068d3b84df4ea96495874fa52abdc0c2b033956e48c98f4ff88f3b521510720df75e5f245cb5c8fa1b3643b168f0b905d1a03fe7459d6b7cdd7b5ce5a927c11b5eede43bd0ff59882038440ad8364ce12aadb5ea612f76edaa3c1af27c5072b5ae2fd66328acf4004c76ff2df85f015a1c42c5d2926d2c9c456bb39022b24a4c5cee648d01cf9dcee7bb20821513b96251a62163be132f9d7b899e0746754aa5605f4a732eb6184461e7a640d57514d63162d03143f6ea117bba209125529c79b7d2cdb7355bb96accaa5dbbae22400a6e349e45721c101a5b0bd39a116f7817e36e4457d3a5224c5ddc9eff6c6f966e79168efd0fabe141924b58b8ef8e14b069fd1b7f747e9abbee56bd25af03d4570a517400d39ea8c17c75c5a8b98ffbc852c7c209bbb0ddad7f6abbe16abfd83c9ca02fe8ea56d361daa67e7cfe3866f8aa81fed7009e9d61b1dc2e3d66f12e2bee69329876ef8bfe4fa98a1f5d5a6fad054a8400cdbf11f6497974bcbcddd22783fe4db30a6ccf74e40a9f4a0d3a3d46f5b2e35661fa4690b33295935f94f48523f1f1702fb24f3a84c6662358537a1f95e0161b2dbf16db7dd27ef99017aefa587a5126e253aa00817cc5a21c65b79901b549bb59ffef80d739721a68d2e759f2ec2034142abe8b0d3b192e49d0904adb0caa7140eedb391a32c9a4515fe575833addad29bf2952c2d6bcae6546b1b0c80b5330ef93682b3ecd756d8d9e3490e487cffb7a893c961bd34cd90bc80bcbf178a5bdaa2f63a36256dd33ae1cf927aed13eedd3f5e464f8da704467f3e6e4832b9f1b686a8ca947d2f01e1cc9cdb6c2a0812cf541654f1ec92b65bca293c12f8703555259b07fd50fa52793fcb61ac2cee1ca1527d9c3b540f484dedae813aa0867934850ccea96482c47a2cfde00955a84a65b54d69fc8d5174cb809dfd62ee26ff15c842c0b365193e92cc115a2e74cc7c064b9b1f7c8c52a89c894e4adf8a7ddd4547eab9c095aa4d7ebac5187a6acc737c1a033140a4086749eb7c5ecc80c2abc2c5d7db3853f3185e811a5d98683017a769ac457443e17cd61b2414864aed45392e8306dc36a277304a968f67ef23b777c365d1314edffd14948a77915f2ab576973d09802420f1f734b919d495633063f8fc25279a4cd4a268e125128f1a43c468e4c0c2529d9cb3c296c15e67bb37220a4d94e58704586d80826cb6e7514e0f6899a3830121a4aba4f3b0c19e5132cf4831b84f8280976d41b59c0bc055b81f6c93091ce9d19c81e806cd5e81c48d883477462861b97d3a6c735ad6c02561bf9e6ca86cecb539cea5564dd1e1cf6a30adc162b9242668969b81fe4dad127cb66a19f28a13b50ef77bd17d4cbbd4484b99d0fd8900e217151a47e32e91c2952d8a372fadefcf02370baed1bc143544336c29fd859be40d621fa65a47c1b15e99c152c31bfef9adf557ea37f19eb929c1993ab04a7478b12b5df139bfcf0c28a36fddf52a1b5d99df9ce2c0fad905f626e78c5689ccf35087a80e1dbd818fe94dc726f2a883161cd05bdca489b65aca236d39f733cb3ad33f1ab7e9601e34f1ef9a22d1a98988e8e73aad260c8b39304e5a7ef9cee1f4a8d30c492a26a00cca7aca0321c9d12cb4d13a1df8f5ab21025e5180ad5ff3b687960fc1c5e8e1f32e24608462a84ea719e09f967cc3d6a4e8d12b1c6eb1edfb39340e72da7e998f615d0718b5ae04e1ced4d4ff139a0aa3ef93d7e70a4e1da9e38a055d4647e2b045e83b35ab966a274da29cc5ce5750d6b09a9fbcf5b3fd3484ee78457f450c9484d4df4edcb715cf351bfb9051bf40b322791cc97fc15a759f48e9d1899e9735fc7538ecfb27f7927ba816aacc01823e256a046be7da1689070a381b5bed628e9cc69c13116b17b6ceeb76f67a2200865ef77cc8d4d0ae608e447eb467628de66bc9c359a614ffb2f0cfc1f158f10ed6cb32af875dbd6c1791330dbd318f48ea610a94d8b5742c72880c16d07762ed55594c395e7e9711bedd228575462d45715f6834915b19995212ac90de47485f92c7bbe6dc570adc7b5738c78dda965a38828d1387950044439e0abedf2e9653d90d08cdf33a03c19a3e9cdcad014c766506b6dbd47895ca8ba1454fa542ce1b25720104cd1023839b53af3f928c4206ea495e69da52319f1ede38236dd804f2f3b222550a1d59c0fd43215d13d0419b9be9dff27a00bda9585594a21863fccefe5a415cf346bc9bb4a43e28899785fe734452e63bb10e1d7884f926cbde2b64d2a5523cdd8d6029d09ec1b66b91623b562091d1324b594d2dde2980300e73083471f031ad62bf0eaf00a16a8d3839b87f7c22d8a2fcffe1bd51b696180f6a17f73f45dcb0b541edea5f33dc7fc127f09f9efee4b13ab4bf558136b37d1d935cc1a134d876ee07d68b4408d0346328cd7ccfba87ffe6d4f0ba28fd463ce0b5a80888ce69e363de27dffe41843af8e043d1bf9d632ffb600c793cd30383e9c4546e8a6aaf8c66284ecc122834006982c009d29a66b5dddf82d22eedf0fe5416b6fd4e613cb96737ec5a1b388090d57cd3e26607a0b56b7f45263499436051a0819e2ff0e27a8b65355989b75cd81b9b55a80c169815f8757562ebbd71e85989b60dda77b52550564acb0d6acfbe19033f6e4a8be4c6289a8f669d784e8359968a8a74caef27e127cb7de4f21b202829d002c7d784f8f9c0fb16cd64a37f457f4ebe9f8f10665e845e87055df7bd80ccdd2fe13c9f0bdb1dc7110f42d599d528d240d4800b3b499d06dde0d835f08a5a05ba2d8980f7cf901d55bee05bd12bdc0bd2a268bd9946912fdf345bf3d1c8d765c2a4cffc4394893f6e24afdb8c53ce119e73cb786bb9d6129a14fd97f74c7b5b5279dcdf63aca4cd3410c14a185168626685a9e2ad6c4fb4ce88e291651f946c3230504ba38ec0c39528b9f2d8ad60c01dad3caa3ce7a7f01b3c09ec68b8d16c97a525c85dc505447ff39c531f4bf11ab33e1be19b79b71288dfd3acbddbd976f6785bf337fc6c97fd82f02a23efef8ce2d346da76665bb8388f891c0ca6a3c5051afcbd6d573b766c682a4ea59a868949d98c1d5103f27deca004fe48ad30092b053535976dd8bb3829851966b22cd84a54015e661bde6c388daafa38e50e0951862def15df95811b6cf7f446c50d67f6e7bbbece9000ccb6e9a047a752c5cb33b812765e340536fdd19fbef1d59f5bf5af978bbe0bb116cbb4c341f9298fa04faca9b18bf9457e158616385146ee2eee46c039c8c03516a8b5737065683c344cd49def412d2621046e1acc9ca2a194a9d4b89dad5908dcc1a369d2b3ec8c5b8238046189c2a163b08e79c90fda157d7f6ae2c20d13a6865fc6005341bca8f2f7c025e5978ad39c69fcf5043c71d20a9d6d87f9d4a45ebeb89f5a7dace09b80c55b5659929f1355d3375b8b635ec3c3317ac0c059c9402a40ef5cbafd8b458654090cce6c07a99a26cab1652544f36af717dce5557f7fd966ec250274c788c2cafdfbc6f5b5196708adb8385e4ccdc907ffdb775907d105c4cdb26f7091ef76f45df8e445b2882a94a4b6a903ea7c20ac6a02b9ccf44d370efa7d4c5569b3ca4c92e50ea05ae59980d1c0b98143ebfa2fdd6838cf636c2216da3f32829418501011447bd72d737e1d499f90d12736dd607978ca0a2f9be02d60bb0f3c8afffef0ab46723f375df0100049d6691f3adcf444105a3d5b28af769c04ed599085b840d6fdd8e5efd3762e893b11fe27521293b9e257aef564ecc14f2a2472b9a4f0c45518650ec25caf4be27c516d98db1c2c3cb12a242eb185eb5d095cde7eb13abc81c753a85ff44674da2bd2fa5b907a62b3f6a77cd875753f16da681fd9fe50596c77112b71ffae27cc2504b22ad12fbfd9ebe51e2e95e6497a465f4591b8500b66974d4b3ce5f5dc4ef8b8d24af870c681b126ec818e733d2f1f95ad344b9898c7f2dc5067b9078e03a4df475115b5c69185fa99ff48db7add39b0dd9f5ca77a5147f54e946caf3769cc93d80694ac84171120b11875030b16e195645e8067590e300d06135eeab874d061fdd3454becf588a1f969415b38ff2548e2a063cfc9db77be59558032ccdef62ca46023a81d0de9d22613c24413174c28eb50143658f656ef5fa65b4cd6e1e0bc6a20c057d346e13fa2f6ca87096b9ed6c7f0473018c808d354e40ce69a6e98512217380abf92c2a00948c33a558c2f189e8162948ed883da37e5ac4983bb227a1a9deb9083e02119e781137d8c8ad02f156994813b4b21ac6f2512b83f6d39d1a127284177c2b6db6f2898df1eefde40572cab3ebb8897142d4c13e426c9067f5d557f87523b6d6dfa261f2afeb1c7183b5ded465e9a9c63b4b1c5bd0c6b559dc4a1def81ffe65b6f34c585217f7817caf59e188e247a5087d34983896a8f19658b508a0d1e95fa52c3024bacb57d577eafdc7165885878ae15eade3b9bc8a5169283ac2328c229bc324eaba6fd3c47773c4cd36d42ef5ec1ed5435c8820bcabf3eec7adc5e46509abe08f37f278511fd477eb746357954f989e576523b51ad1d4056e141ae3a4ce5518ad17812d272571cc39a590596602bcbac3402bf0946d21b01104488e7eeb76bf2daeb07823caca3bb7f965eedbe0a51632553df7ce0aace51f9bd79637a3a9db506260763d42d363d694085495c3bdc56a2f5a5079b36bff4d589abb8295dea7332cf83cfb4998ff6e2c983015d34f0192a3fc123eaacfc299da5c15ca76297239de25840ea0686f578c1878397f2deefdf2ade781624047b9167ca02953a2dc36b37f26f98045cc63ace3f90157ba84a07ea1192b8178606b5c22f5308acbe942599eee87208c8663fbc4c40952d58338c04b533433fe6e34f9bdce10850b85b3770bc20432d0bb01f99173d0ae7c9207d0952b878b46fdd6b2b08cf125cc53571faf20c6841b12c78e09eae1bf400948bcf894def6977e5577759db973c936e87136a785325d4876ab80c40a3d37acc8d450f6495f1e63727d2545c7bff7d1d918d523b097afce41b3e28452fc9270afcd21c282893e90e3272456a968e6f738b19d1dfa59ff97835e2f37a833ff31d77480562bdb2b52e931515d536ba7b5ed6bfdd2ad3034bad63d50a1615fb057d4160c2b03b87ac51a9b6c3e99c130390b5e8697755c0f4f0d7848fd1901c2ca6becea2aade204aab975071d67a976601d1f40ed08289d91ac726bd7953f3086cf9e27912b4bf9f4dc5b32b877b2896cab665c739c2ecf3eaeb566efdf09f02a221b7f2f9237a523a5d6af229bbd9037d549674b013df08c901c32a6aad860fbd08f1e85b6133584dceaca2244b09c63c7e0333ec879bad584ae78d560692cf34a312e973fbe1ecfc4d66bd2baf4af2806e24bf24c4d1badb0adb182729459bd48d5a3ada4f267a1f4f4939555f217bbb3fd36cae822487a50b2dc149789e72b78334143611316b8511f4d276498b1a287245737a11f882121bd0cefc0bcaf55ce939e129caf9263a10258ddb4d5b13a96a948f3ad0900f918917db752ba4d12043c2b1f754c5aaac91ff5260c063d3e7f0d53f26b781ab49acc30246d80b4a61bd03403e5ffc7ed51a60ee53ea70c0e6afc41826ce6acedd5c1e9da84405cccca4c32719f05100adf740c40a8813bad0b9f8f777b3070e8677270a0256acb1a1eb9633e1dd3937eab62e09f34a3b1a1a00b014b5198e66915ed1693429f7a126a7b2e1c352afb70fabcc5f1a56a13ef6de263181435cc0e8754d4e988a483645934c826b4e4b43416d691382c302e5bb8e806e108df70cc3a668bb577dd2cffb8d8b91fb27ab273a57a360531f2be411b03f851fe45a9527def704a2b8c8c64e17082fb702279301081d7e01eace0ba5c94e64f0489553358f545eaf26635d7cd7dcd4c15cd859a7e34157ab193635b7c098785b51b871672de92cd365b0207a1747b08c84f0e468901a2b9b94b6ce0e63311f0ca7164838b1cd6fec4938a12d45d73dad1e5f461b79318196b7fe6bade00d048d89d274951974ce5b576ead6574310b0ca1c8aa9c4e8726cdd52f253b4c4d6fdf47bce690e66420474af47754da5dc094dacca35c8297249ab0c8ce431f11c3f6c880f59b9c0b805a92ac532e50a9d2d2679d04c0cb6ce4f50360543ab6e5ab970528e16245933a67d09cef9bd51583303de44a42a5c5ef6cf82ec0b5d0bac5c88ce35210efd22e395ca03ce20b5b0ae023facdbbd04802abb26bb982126cb738fe2cb959294a6dbbbfea66fdb97614d1346d2e21cec95c2ec57383f383d906bc913499368a2d2b0d395a8d6f47cded7661d7bf65669d8c83b9c6c74f1090274b8e9f2f8e2a835a783c9a202f45da038eed04e7e724fe187e8ad0b464090286b7d496fa77274f7953ef1514f4e4709b81ef6aa6f3d680c83e2b843bfda24f91a4532507e522d069b8acba4a1e7b8cde8cd3edd2741099707cfec57579739f053092e61ba9bfcb65a2828ae99203b1a334d9f7aae7a92d81705da67fd3f906f91a2b051be429eb5e75b3fe79399cdb904195dfc9f33c3dbefc156c4d1f13036d33498935bd8b275e29373a063506037cf46d9eb1e2a892d91be66e48fa8580663430f7c93a9846b454380c999029282bc91fd764509189de7204c2bc6e7874ce50b53d08c304670d1894c2cbd98df6d5bd382ccb09dce2a1e599ae6186f8049d23c2f4b47a089db97f5ecc4b0fe2f40ac09de6d90937a9a76440fe8626754111ced4eba548e29ebc455d2c825c7a45da9106ecbaeb8f2531c78c15b1d7436bf7a27d08d2bd528176008cbbc656caf667347e056cf597e364687fdeadc91ace3fdce2740e831f84f7b1983bc9d3ede347a7e575901348c6c26a13836cbc9628687e3d1ed33690ee505c65391afc212545966ee06ebc5b2c56f9b5f72175b8a479bb5c83a0d6f4fb74b78abffdef47107761217f55b5d124589ac455840e63609ddd20d3e0e81ad87765d0d8f12f67c9c5c55aa9de226cb333ab170627c2e08589ff005b5e9dd9ab430ab6e292fd2a63404e48aacf2133251e6a74bb41c05af4489f8345a9038ab9117cf0afc7145e8fe6a06fe78b63f274b5851a3d6c4a63781f66c9a8064889893adae47a5f7076dfc7ab265756eeb7bf56073801198d6d948c5603e5c2a0b7262fb82ca88b4808959ab11a47db2e56c91e917397d8a252d9aeeff7520137fb6aadb21659df1c4d022c37c972bcfde690c65464e3afc3cdce89bb7d4263dfbc5b81b527cebe66a47a4cdd086a191942f5cddc18270be2ff6bf02b044920e8699665f0939968840fd318457e474ed78a69a6bd8edd17deeb1f16a00de0699bf1ccd4f9c7a10288b472c33627b762859fb9cf883c658f07f96908ebaf5334564b52dee6e0f354d95df33e65d14ce3f8aade18e88b7a3cdd770293b91201bf3cf0b64f2f31661c04f9516c53a22a1f5a95e3769b5682c5d8139350c4f4e475a75c75c50dc10a1fa019afae1190f7031190d923306fa4859c62ffe9d0277a065c90ae74abca716cfb739f06c5e725120c8edcf7ab1bb67e085d3dc62311e8c18793f6bfcf3cbc7312630c172bc789234ec5272e1491f4ad92dfbdac292a81a639ec30e9fb377ed96c65a4b598a43ffecc323a08ab7e8f4dbe28651ccf8191aacb2a7d72d3957137a99cdbe842c4e2ed2f130b01fc8303cdb45d135931387d22445c3300725ef82fdd4e7c75fcc413ddea6b4e8252b6448ad205bd7113032f5c3999f0cdd7516f7f7266c75df4144fa98781c94d031db995708d13c1c7aed6c92a7ab308e66250f5d4f124f46b7613abac61b70c0536030b54c5bdaa0c94f755949b08a07c36257f18a16463cd8358ac94593db7b0729cc8f2612097b128c7ba391e47602ba949afb94d8ece052655c7397defc526b53f902c7ab66fb770dbf64827dd6790487e69be6f426a881f96e76925655fc2d823da2e0afa1d06842939fc61ac49eed74a9fc7a4aa31ea8164e7586addf3372706e5f873dccebe1454de5477766ebccd30461830fa1898347c8309acf3f878e404cd5cf9cefca8e04959629c5987f4d3adf130787edfc374129f130e64b73ac249b369435b82363d342149045d23a8490ebb62853fe345502c92e3f8df5c0a6a8440e2de4b372197b5fee6680dbaf9c10f61a7883098dc2c457c8b95f2c32cf9340cc2ba64dab2e97752838629bdec8253c91f50f084e43f45d5a453f5a32480c6b2dbabab495e460b2f739f5e83a006a14dd5d519e75d16c8b68d65141b9e8379a448e9404b6f541460faf8141e727cf87ebdb12461d70fb397824463c4aa7b1ef7ba90c7683ccccab8fb594c6c314775488ba2d5539fdf1b74b22a01ccad54a0c4c0215e9f74fcc7433c9188fc0d7c009c8b0a3fc56f0d7f9b70954db313ef5ee0af0027e6d845252e16efcd8f2068d312a76f51f7a274469f14ca2cb7f5a159ed3ff360cdef9cea8779cbad4f7e09ca2ba5fbfb0fe1c59f1bee505c0a15b3291fd0a90fb8070dcd3302fb620993908511f9fcdc742102a354ef71d7552ee0cc2ff53134722a333da0bb5efeff17e55e12b36582bccc04c9e156bc4b3182da3f54337f95257bc2c523e455a3275d222934ad4c3a57c6f7b1e1ad869d8593c4e839b7ea18efd5feb916a344d4dbc217c48dac6a735127d93b70e5647c0b89b9d15678b1aa966e4134042e16cf6232c57e50fc9eadd17dfee8583bb207585344b3166e71b62b9a79648c4ab7f9cf1be349abfa6afa33778e963fd30f8329b5e6ceae68b02f88e5a72ed273975e17005dbaf12a740de5f40683b99edf1ae68f9499a2ad562afc1861198e2b2d3964d6cfdbb0a307dd5eaeb3a41044c8b87e62363643af2f03a4cf508c2028729204ac0ed39b1a90d2e8ac3a50ab3035e827bd29c0b3156a182bd7b35e3d2262ed7bb69f507a63218bfd1f132f52e9d6ca9a88be653cd71d12fda2dbb50afe7f038faf3ed382f2f12778430986cef71e1dd063b952f64cbeba27bcad33cdec4e915abb59bacad5d92eeb52bccb9a8ac44a6707d26a1a08ab676f3d23757bedd732c7489328b6a4d8fac2cf1f8f9ff842932b9237d47caba3f15719cbe0d2c32950ec5441b6911791bc15b2faad36e0593e69de0952ff334b3d241e46c5c716d419343af0f3bf54c80a437668dbee858be00484da6e04eaab530e6acac76ae86d9552bcddbc2484e902c55b5a76c96ca0af86f735772dadae0a3a48a1a29d020dba61527b59b8e481f9d49313b0ecde22e78b4a1644ed6aa53d243da8333145d29cb4c8f1716c73c2bac590ab020443e03c506e6ed5b957c595905fd1da46fb5dad333499d0cc2d045b35218cf7c8a76f65417da1bce6f1a4e237f9a1280f7f530254d983f4051e3e977884f83d6ee4a4a8ce7c075772ecc002b9d0b2dc3f7cdcb5fb18f0733ba991c5e12f8011e7091b86e63c6ed84fdff85b8e6c3234db122752e5add72e580cbe55c58e8ef044a6b469d4769625f80111e40915638822f5e44d54856351c28eaae15da1dda2a58810707011b47e4b4432b99959193dce5cc8982c4672269db5e1cdf100fb8f6b49183bd37cf0f90dd1684ad7633fffe45c0d38bf2918ba82ad117adc79ce65bad777d6ff6be6cd8864231023715253cca6eff2dd211a4cdf338a015d1e0c0f72b21bac35cf296c1ae9b7d4ce61e4736c52300f086874925884c58b4c6fc1f92140b888dcd5bb6bbf7adc8c186b1a80819a941dc279d4cbea31da2c1efacdadaeee44b03ceb9743de492fc0779f2ffa73c766d66a361ca2a55e0856ca9563b3a3607c02751528d5dfd4af81ff2eef9552b4f2051f4be3dc327831d6873a8cc96bf35e2f61dacfc65e9740f8d6f73d57c77209897e59f5e3907a5b6a744aa26ce956adfb61d260aef79c2b770a3d8d0022948059644ecf11abbd30de8e03d5ac29c47195395da50b045d9c2637206ad1d186b0aae32d24d6b97d7ebca4bda9542b9e74f86d81da12cae3233cd3c8f294e848f8151c325aa894a1b98f1589765ff4ecc562e3da2f47eb9434c314fa5500816937d7b67a0dca5fbd74b28dbde7bf6f3039d9a0a14ae51bc2a7f5b836596122f452191fb38cd93ff3ecaf1a0a7c76cd7de5bbf03dc21d6de838242e78d99c7b6ab452c7055734fd1e7d343ba208f85eb7a56a4f93a51fb4a5082fe2ec417d0f62c9b10d6ba729c1ac2a8ecc3533e429f499f9d927f3f2d75e1a8eb7271451acb4829991e2e6fc569619bdf77bf90babd9a2f52e922023101fd7e9e2a866d9c873d42d0c6e32b89a451514803b29c883bfea38f32396395e6f8b43b3ae638820f838f0fdb4dfceff850b6915e5e69f0bf259cf6c9b3008ccc4e5ad06cbc60f29782d6cc310f28f59428dd58b062a3f004e20ebe5c2c1c338ab7b956dd0623f3b89b2f3e260a6684f8752071b183ebdcdbc32e9c9488beebe0144993e489d3389d0cc6ba56febf62626b4200767443329cec665aec7c812fd741cf31cc9f0d33bf206294cdfe2ebcd5e3029552bada2f7c8d760bae9254dcbe24370b33368a1517eecdb759062be4d2bea0d6d28c32bbb12a4721dcf42a7277adef9a51128d518348f8d8432762d13222632cb92209400ba301089633342633975adfb10e5ce5e7604ac1637dd92b367d08f2357351d8745c3dfdd1a0251dae3738583dc68d3ae33e526e5b189051ad4f5679849c5aa1ca7671d7fa12ae3c0a7aa91f55f101b3ad7ce9b98c6214c46424883e635673968566b0ffe681d7fce73ccbfd2dc4d304310e19267267e9f07fd9e02a94307a51c25e48a0f9ec08cd26bf3334513269e265f43cb8fc7313d5d5e72bf16a465bf4d532788fd00ea8f7b0219318328b4ee5a609c97fc70fcc96602623cdb0894b6e1c751c7064ee832dbfda19176e2a5f901bf9b4aacec55840e62af25edf57dcb5816bf845e5ffc207113cccfaa46ba82e59170b3a6b3e646d744c161849a5a586528963dbef6d9b0c6d7459ec3a84928f9a650aa96ae0f5b783ca1b1917f3b270ef73c84bb28295fe5749610febabba1bbeaf5ac5836631b31487ee15904841855bcdde453b8071932fab0537e410f4e11aa1b8b10d82666fed0298916546d199c6be7d9604d8656771f67f66b9f561272e604239880d6df1b6b985cbe39816a420c8ed0e55428052804f4c11e9335888455f52d599b9f057b2c660c57f91f3634c7493d6a86674225cb7122de1c667c80eeb71ce460e50f1af351b67220fc76661553c0d17d2fe690f2601ff5b937bdf2181704d609bea464a9bbe5ba119f2e79822b5a649562dd76ee25e41cd40939bca96699dfda755a08722b24abe9e4ebf9e314b0f82f535457dc87d87f83d26c66dcf93eff06090ae7a7c919dd3c7aa100bb966072ef4bb1db1c3349d7879c222760aa204035abf110cae53d881a65cc20b3fb6706e8085f404039a065ab04802d615560900f44a7f0be701717b07ceae8d6d294f7bc39673df98d2dcf98bb6412305c5280a0ecda1255810df4e4ec406a1f700cbdb703dd77b9877f138b081986ca24cafc6d74e9338bd1c7ef47b3f282796adfc4567f17c631644b2925454c95119676562fdd3e7df43f1fe3b12667e4381dae448539bcd02fc2e5fe2c5e631feb9f4e28b5df881c814e9e6e136b001036265dcaa9b399da39284be1db551758e5b00def1963b99e0ea291f9fd0022c481ead97efde051b9d87cb88bf4c0636e343ec0639a09d9b86687a8529a328793ad0fef4c2aa9d448b78bd361d549c5b20b4360eb84a3a968be6a2594e9a7e9a02601295e026baae39d8463964b2dc8d664bb81ad87b818975a5d9e2d5fd5f7b8046eca9f3f770eaad77d994002bee61f41280f24450282a6ba974d351d889b44fdcad0419e91d9a1beede8a106e1b7a7510f16367ff0c1968cf2f1625e6090cddecc086251723cf90230701e01916d03bd79a32f592518a9b96c3f56e3504a0f17ef3255c5464af6c007f1a9705aa3ec6973b02829f7d9ad0da6df0a8b202cce4af23740df2f535da01559ab6cde7cc5cf8e1ead11f1f4655668029c98ec0deff3596df36dc00e580763da982f541412cf5fc4b7245141a25b1b7eb98aa413894fe9e9394c829627e2dc93cef20439417d008a52218ba40abc4d8070d38ad3eba230ea0ec972302ba0d2c96172cc7d5e208d956df5c403b78d31ce2931b6ccd303fb446b4681e905ce77aef2c59e9787d0a987bf0d5706049d1c95ffe3952d475dddef9ca31300ed2365babe19000c3f56f6c7c02554a84d4709cbcc7c66ead45faf935af4811e69f6179575398a2ff6e5a0e113bafc9c793a161f988dbc2330690a31053a976514b76d8d92cc6b74684ad3efec7746817bd5057a3c15ffdc6134cfd4c95016471f9a2ca23c9ae508a2e8401a4a045ede3c81bc0e711aeb020b51a05c95063330a6847c1aef28cdc5cbc99d210f3e20fc921cc5fa928c0ec270f5644b0c5e1604221f68ae6c940c6d168022fc55aea1832c81cf76d22a4e2d4dbcc7adf8535c667d46613fbf8220385f4d0c828632a7f1a03a2b97a5e462349e44b70ee01996d5981dbc2046b79bb6676b1d2a070c2cd90bc44f9ca2e054eaec76e87bb39cc89547b02ff014e1a3fcbab61ad69869dff5dd0357d32319051cc768519acb5aeb6a0f7058fe24e871219a464cafaf2ea20ece487f065748a9366574adcaa2006b2335d236471b2bd20d8aad00135b350da813beaa7d9aaf477eb61ffb5dffffa9f2dffdaefaa4d5a99a5cb7078f8e87ea865528de8e49203a944ddbffd97f597a9b5dc80795acb56bffce7a36eedd14b702f6bfc6be5a8eb24de776be4dbb1ca66ad1346e87e9bba190177ee754fe392728a7282f71715f34da856606b667b76a01d84b73708ca26acefc7e776d9e07a1ab70d98b29459b163a5a98e4713808f6efe9668ae4090bf6c24f28c6a46796bfab91c3715b801c0405f6a82bc7664ef01f87fa8cc645c20cb1e39fba763aded143e8a91acb78e37e807fb8f476167bf00e75813330a1c085125d61bccaf77658eec865e67d63b65706e2001862081e02d9996aa1eaace9cee6714b396069618bb76f49d53ae64c38bb3492b83d4d2327133ed2da7682856a51751e224b1b77d53f75eb0f9b285f1b95d147b657eadbd475bf5e45a605ec6e8848ec6c803868548ef1e95daac612d0b1d61d396ba2577157fecf2fc390e004130b239172bc3e5cb3369fad17476a7bfd0b8c2d8554eadaf60fb04749cdaae85724ed0ebe8b36f23a4d5591f5f68d14296770c0f8a2d3e295ff1a232ebb0fee7b809ae3e5455a526f9c40c10a4dffe5f0a760e763d463cc63a8c2bab928ec7a901aa81620e2bc6a6b686d94b2360a10b3c6efd7c320a5d037f22ae9ee1c5806122ec4303269585cfd0fd78b4df01107562f918c99dc849c1bfb99ee83f6e8a0b6a9debe5d5e9200593413c7414ba9127f0249451e34b4d0a5f75ef06a41de698cbdeed15ca9265f9a34568e8b83c0cc18d745058868fc8124d4e175ea84c317689e977f6e13c23918a719cadd0695a629b6d5145ec18eb797e064e9458c5773a3d83f5f73a9e58086ba588952cf7963fa4ae57ddda3ecee7b11811ef6eb57dc2bcc7f111a95c4dbe8a8297eab33019a8c815d8e6d826099649f2cc771c525c3e02b05b41b3fae2455a6767e224f8b38610d415a2496a49a660f8bfb850b172d429a2a6e88cc3eea85f5bb05ca62befb8e92603a5b9440cc52eedcb83ec9ad346fbd8be8234900f03c0cfcaf7dd2f8f8286bd94853d25b7ac0c8a45e5f2ddd867464cfcfd1105fac75f18dbf629f5e15f54258e2e9883de4e7297e306b5cfae4ea97ba54124ad4c9673f059bf881be907203462d5d2a79c14cab32d73d4bf5a4e5af60ad8e83f1a55973364db9052d7630ca9a9020fcd0b8385f50de3324fc3031c9ed92b5c688d4427545044a48de2c74e30f35c1662de50520e437e3f8b985e1331ac067b1849b3e81bf913b3e79ea2f03cf8bdaada35b398e01b463c2f7b530b5ce7ab4682476cedcfceb5a9fd93c49368ac61a026b9c6dc7718f27f28465adb6e203a6763792ec016aab91dcf77f2f461d5d571fcb230d2039e26315f350b9bc26251ee5a553ee29e39056c1786ac288768cb1e883dadc69a330094ddec257be1eadc22709d0366200fdada2388288568ad0cab4e9a456912ddb4b9c321d4c38e9ecf9a65a52b9940b76ba3d00a435a1816d093cf6d4d39bf2abbc4f1c588815d138f7fdc4d94b2e5d27dda7737f816429ebec5adab48750394df1fe177bebc6f169d73d7597c94c075d66f235174eebe595721a31004a165fd1bceae4245024265ccdc7e172059f0a0ad6632e441e2312f989b0d06831d0a32cf8b9f205ebf033745e905c868c60cb45ac68d631dc77c06a996a5a11fec249b4dad64163f91cc714afddeea1381b20c8c99d79ddeff1478112b4161554cd13a7e2ee9399bf1e5926dfd26cc692181f7060965b9da590e59816ab5efec57c6ba44d573893d7fc9197765a67ab05adc2c1733fc998e41aff4e2bf5d04fafc95f2f2158b653cfe309d8e141233ae0c69760e902364a35e04106ffc5d3fbde833c32c39f15701761935ffe970413286bed97290ca7011824ed673d4a72ec11bab17722618b92419d5f24b7a0ed093c0a67d44f50d963ab2d15dd73e8777d3da6612f6fdee0f78e2f5f24b1efe8a146d6662aeb3bc1e6a2359117060ac801aae8326e6362fef1ce643be2077c1696808580ce4e283d578dac9387325e553add1bf4ac1beaa3668d1325e119bf3b58432a089b72fa15546b93a1e526c9c7e2540bb5457f017f4f91577f2b65308788eb0adc8f638db3d295e0baac2471d4261117b9fa38947b39abce1dcd73b00f7d8ba3bb4c44ca3c97f42a0b9cb59b8725ef8d0d6e3fb563c7d3306758d8b458c26d3bd998dd8f35c084156736f04c4475d3089eaaed9ea02d9a5d2e623a47ac9567b8d6ddbecb0e3d2f353043ccda099fa410189aab6d35b7e2387d0373296c6afb9909a9ee668750ef6af64e87e6a39e15990e8e2657da40f5f0dd59b9b093674b46b52f2be82e1249ec5225196ec564401a95ba196075bbdb87e804df2984e5db12e6c5baedd4ee0f74065cb8e7b3561053f9b6a6d20bae10bafbaa9cd8ddf525b3ba64cce032247d5559c96e9913cb7cfe59fe3df7adb27d9c1174eee397d8f9f6342b6884a747966b1909be9e9a909305987317d2ccf5c98b918f80c1c186b1021edcef416ec0e31e57fa534eec6753f886d83ae7dfb7f846daad2bf25829336b255e2f55564977fb2f3fcff1a28356d7505618473fd0574f00818121669fc3df2539fd39a07242918ac093019a0d4d78b8f8b0659c29bee7e54669fa24fba84b651d6bfd511fbd98a427af56dfa3470f45304f7e923e1a4d6339cc4252039d99b95b86540507dc95b963cd044ed3d1a66850cf855da35002af1a5210dcb40f83b66aa89aec375773d5293dceb9a5dc90621278ede47c6a4997b02d2818ba39156c6457198e8e40d01b6e0464be0e791af61163b8ed0314246742f9db54f9fed5c886b63b7f3eeaf969ee04e4b97e620c0d4d75a575056b75821ea3f51007a1b265b3868f3b511dcc3ea83047365359c204abe76fef651d1fde156a8467af41225df2b6b50d22a0f14060ceb109634de3b3735f685698d7337afde99c446f3526d2ec84a4e2e00c3f911cced7c17758042ed096e8d5280399ed2e385ec8fa2512f76f2dddc90ef82154a82de782ca88c0e95495630f32d5b1e30610ced5b80446b7ed2c77d706675e82126daa5e8e7b0f35717814e0e7aced25650f5e2b41cd43a2fd0f23177196941e2e13d54c67c7e4d200cc8de50ec2536c31032c8be617cb59d9d38641d01049621242ac59ee366234be72abe6812366b9d4434f69287ce48fdfd695eff71469529b5b7d542fd326ffca1ea9b4ab05f676b921c54e3ec306951159c6198c4c8570e7b594432bbe8479295a5f0e1161c3e2d261ce9f94eabf91958c46cb8cd23cebd95fa62757dda704421fe98dc6e0019b15cacfbc47f68bca35369313c78992c599f5da241b54f703630134aff4201d44fabd0785a993c3b7dfdd116b5fc326ea1185f2fb55ce3b703ae53c8c5a3d5652ffeaaa1ac38bcc4e268f90f14d358f0471822fdad39a54dc5c49fb01c9af14fb24053a68ce05f694bf29cd27dc404748abccfbeadc9585e0c11e3d8fa67e04336f93224fb999aa77054266072c89f201f7c179c2a8e3a7b84631f5646cbb5b676accfc97a732e2f07691d7a6b0d9ebec516473ace37ac7602a20becd2751e151a082f8b46ec1fdb134f763e9b15c5accf68d59272e7ff7a291e69348f9228fe023214b2718bf76ea85080f15c82147b4eb3545579e6b675804f40571987ae9aa09b8b0e0657f0c435431088b68f46cc476c42c093b0d0397efd46315cec665d8ea18524a485359d1ad6429495282bcd3a377bff2824d27a4226ba6a9f8a97aac6403a2b2667bf99a445d6b4d1ed2ceb0c0d79837e4cc354c51b6179c88583326976103c49aeaad3aef6d716eb909c028e13bbee0454d11ae942cfbee84476042aa944a4e74d8245d28e28ebee1842cfb5d5e98df7eeccca0e7a2b8e0042bbf7844d16b1db52352168ceee718ab3b4a3f4f01db69db2e1899abc54b5ab744b4fd138ce8cfd48481835e31900afe78588315a30cf89dd9315b2321fa515f026f2b49f6cd9f7c908cc904c3c8e315e1df1cd542a0f4789d6bd5f8b9914e50ec93361a8a56d90c8ade4189d6bf5f01c87cb5f334d33517918836b635b2bdf5e3c5fb3fa7804a150630941aea73fb25d82d1d9c07c1b0947b80b24d93e2dd4bb2a844763f2c4fe05c248e89879cc6b80861d03f775f7000ef716f9073759364e6365cff92913de6ec32c5cd94ba3347e4386d0f7354bfe132cdc3b9f17d9de603852b20fd22df552d86728034b22e301fc4888231d89faefe0146e30b57468a014c61a3d02b529290ba836036908b277e21f2d554152155043a2d8f9b7fd99d17d5575344be28b136a78ece175db1b50cca76851fb9ddb64aea2920deccde82de2086826fc2d9ff6f9a3152941f3fb4a37ba8d7b8a5f32658452c5f8d35592dbd634a865638a1790fb46c15c6704bd4bf7dfa5181f810ed2cd885f787b70da9a731c53707ffbc528d47ac65d643c91aa83ac93f77d6c6c80ddc72fa091a25942df34d73c5b28b71f96f8f353ec38e5ce466842fabb02e671e075f5a758e519ed87dc29b477473f0bd3ff19a966575c603314175c4f212f0cbe52871aa71ff0edbe9941303ab9e9e31365e4ff99b0c57b3336fa8954d387a07073e7af0affe3c0eff03c588148d7efae4ea32f1bb626424244823c10f19935085a9156e8d801841d35b9ff1b22f4640ef53c4fa067a15c376d7856d3e60bb8fb615c731d53ba2d67375105b6cc6e1aecc6aad94f119e33c7424310a60b6e7c00c5177cab0076fb4b4ed8f736dfeee48fa1536e00bcf21d7781ecf232bfeff6d711df36faa432b817eb41417a1e03e0a8396ced12d1670155868c9488bf360f9a5f069bb9bf1113336a79dfbcef7595a0a5886f1c8e148b01e05cffdad3b5ab872d3eeef8a7c75ee17e2ab6d33b6fa4ec24b94ab81e276dbac3553c20959b2ddaebcfad2b8c53b349f55c21ca28a8fbef7b1d430723e98dce28b0e2591a222346b9cea1461375d6056f6edf78545ba221e4142e7b8aca3f1595579e88351d5a8c9ca7d49ef4a6878a78e371a5066d24a85cc816a343d5e87e304553790f5eba54bb55870aa26ff4988d332c727aa63de22e8571c8f6ee4bf482f24e93523fb3ca174820d19b557d91bde7477edbcaaaf198a2f45fc9626490405add69dfc8c21436ce8d19fdeba1fa39516f5e23d19dee85595c4480e6783f0ef7c3e57499a736134dad31c5c041a57e634888a61d9c86c10be5121fabef723215f39ad2d185af1d58c5781ef292706db6f338f5a43d11bb7fd4bb017971e7668ea3e8636686de3cf9627acadadb68ed06e00c85b66ed28d84f1bf55f327666a4f4b9ff5ae4f1cc73757d066b2a479103585ca875850a7614d02077ee23e95f7618ad37c959e28de7087aa54aceb4f3a95b84afc9963f802744373624d08492ac3567f6cf87cabd80132ef2e5dad70fa32902a98ec3cfaf6c8fc3fa9af67fddffee472afba271e93dbf321a812473a78a7638d028edfcb59c3d55671f259183592b946785d454ebd818d2ca469672f7a37bff282924aae268fbd66d923f95a3d1965ade94b9f1e84c8ebff893ac7984a376519f5f30ce9bad1c4f0a45fd85affc1f687856e1e0beb17560b6f2fac17ad72807c04b0cb660301530651b6ac05beb794c11ee51c0e5fd85a45a81a449bb8f55a41c20651703410039bf86669bc0759a6efa5e02ee19975a6e7a29e551f0ef4734ac3c1ff3ff201de6c82f244ea8073f313d0461125099f58b7638882d43874c36bb7cd04722c74d7147fdac26432966274deccd7ac062393fa0a1725f8d22349a3cf54394d970966229fd5a10bc6cd2581c701d4413436f56367016091f4fd4cc8dc8f729ee75a2b06c985d6a673e8a96c3a91755f722c2d4bcb5ffa874ed85d4ff849e4f7dfe3f717864392e86525adf3003fa28ae98c42a718f4a297604a57db71b9e33678ee019ccd64566d71050d48df1f5695625e7fedcb3293e19bf1497b6dd93ae98d41a50261a2ef4716b403d5016ad5bff450586c9576114811fb93e2015cbd5dacf284a854672a7a003419d266bbb15cf9ad96b1520cc4ff57bfb3d0ac1c85d122668bfa247e6a3ba5c2ed732d22c8ec5a5844b2f44d8594a4b49766db2c2cc187edc68cdcf3118322226e24460ff73e68909b836fb0700951f925d07c9237d99c7aa1142cf4e4453330d8e07fbabd9d3c2d0d405cc6d6243efcd8a3e5709709c9f9c37660a0ed06d3c0958517196af2304277ea55e3532f5f573525cc4c7efa86ba13b869394716222054f0b089f0efa4ebc01eefb1c40ad870073ad5c6402aa584a22f91ed7e3ce6a310860929552b2d3246756fef45a362a76d15bdf1aacfe254ee4cb62232d521880a32490bd04a16458483415237ed529d94513c2d8016088064f56f59835a32728e0ad7950963816333aee612150a3a7b377c352c10b87fbf1745b68aaad73f726418354faea1a28f5c4e224fef026d192ca10d8ab77bc0c32ae97b09f44596ab741a2e85db3e179c3ec05e6d9180c8a865a4691a11bbc830d29de43142f377fe09943728c97a79d244a77c36a860e52a408dbfe624896526e0a28ba79fde171e892547890319c1185b292d679bd749a8597db2cdfeb78e0611e372890c2f732d96b1684e6d72c49b6703d6e6415b40fc7d7cbd0c0838a169b18aedcf289262b02ce95d2ff378cf56c0d72339e1718958be4d0ece0df4091f064c0a28a1e5bcb7751ecbcbfc0a26cbda74c2b2a2e87d1f56f3652cdb4dd7bda87db2f172192608f117e80ffdcb124a6dd19f024a2be35b01fa1cd49fefae6f90eecebaf6e45ff6551a5440cfe33fa88442a6938ea9f5567f97fffcc3151de8d1120d637d7af1f59307eb72576c35ca7716cbf294969474ddf8ee3ff40211dfe4049e2eb2361b18c6ec45f0023128faa920f4b4cbcf37c961c7cd2426cec03558940cddd6ddc016741f5cd45e83bdd1e96b0bc0a3a5034fc01035927e5635dc041ed106dc43acf1438272b12fafd0bf3e3d3d261405e2e3b920d98f440ba9312edd152d6230c4503304a4075f79c4afda5ad8264b335d3943eaf0126bbc032408a4062a1bbf06e6759c1f4f5d483a074a07a99b70b7e4d4eb30a2fe9477af6e574989d3085a4e1b74b896f0a97e526749aeb8113d50c6f30b4743ba0760e31bfd52f60352a77f82d2a5c7aa0dceb5d7e566507c87c6562090966896324460630a3caec373b6a0a4ad8858299393c94f61a17a73670f445297a0e167cfefbd5bd31c12214b66f67503e5a974861dea6a3ca293d538b1fcfe5dc9a88e9d42a329354382e7adc82c3c79d7f12f620cd56318d89a228d785fc163080fadebc83e8fd0d0d4e6c5a95f2f9f57e2a602abc10b2070c1e549808b09ac85d0e4003b6faefcf55bcc3bc8a7d75784c8c37aedc4a1925f56187ad77c2d28d484b2aefd2db7e4c9bc0aa37bca58f0dba3c9fc6aa8bbe6e1c2d083efbc3234691da6c5477ec66d62af522bdbee1dfe8056fb0b10dc4ddf4348d30b8942575f357b607f6a4fa835124d37c6365bbbe2df7b1f8db54e616c7f92ded1f51f9b73f7e0fb2b8757d58b325abe11b3a3ccca33ad1f8badb8aeefc401740ad06d059f9ca3158a512608b13b64acdb8e6c26d7bf10ca2775e024d4e37babfbab77cd09f507598bb9872664cd2b0904448314622a4d5e268496dff3b46341404f5ae150069dc4494d502582b3d5ecca726e0c5270b0f125e8d4e33c8663c7b34d96626e1d7d5e2d305b272317500fa9fcaaa973160f883b9c297ffbee24548c5773e84c0e63a2e6dff57ebe37170e505ecb13000293dfb5aa55bd98ec6015f2cd965b49e8b0996b371a79dac8a402c64b22a4683ae5d325a332b1fb1858eba5adef7bedbec8abc3d2552854a295fc4ddc1ab56fe91925491f8a091a29353e78aa5ffb123d48ef897659f46d229a675648eef1e3d328b82f750c5d16bf3bc875f4a1f1d6be224d4c6fec1a73e0a89583f6ff021d8d2ea50cbabc5eab9ffc8d1511b4a97fb96c48e9978be10914b765fe12c982789b734488d19f0c686eda00c709e6d39907b2599cc795d1182a6eacd0f03faba8fa5eb66caae03b751cb42186cff351f8207211cfc7c79dcc1f5a6ba585133a9257d059bb685adefe7fe99e6f9c053ea040cd8716641f2c6c8f7f390d9739c8803dd774b97687907bd8341fb7dcbc94173bbfda77ea1b3ca374a6191557ee82ff5018fcefd6e947cd36b91f20b33d44cab9d9a014fb98806c940f74e9cd32f377e54f4f2d1177f2d356587f7b44ee9377b03d275ab86e73bd079653140d3a6808e56c6772caa33dffb45904c26fb2fb51dcb342e346d7c514b5252f49c17efae46e3e79201e754b9e9e036c79722877ac687f40b284800d1829b91282efe86a7ccf2b86b9b55b0c891a442520ae4e3c03e5eda1d07f4ce693a34b3b03574d8163054bf9fe4b4be7c10c7de6bd6f35cc391283d2d057ac76c71670c43b241cdec5e0f62be825bd4295400f9a18a0fb345c9b252334c473a4fb33219eda54c9cd92961becec0906287f514251d1a9f870bba2220e00e1a0d2df8d5d48eac8eb8d75883c9c649280233a0b3f8165bddbb5de0dcfd156b8ec744154f7359e2b667a0cfb26614b3eafe2c0b67015cd521a48a4c781b6a1c75ee76bda2b7571ab28b33c225d518d794c256819e2ccee025d4629f93b0a8fe5defc91115fde264939753f9e3dda6ff77cdfaf90eb8e4135f4aba169d8f4f6000e1e7c1b3eb2ae6967d0727b37588e004e244c1ee862602c9a9eca9df9f11256b889fbcd3bab3fc38a11c4b891bfa61cba7c4b0cd06b24ab8025436675c55b82666627064d6d5b79b7d9e2737182c3bb951eef70ba5baf69064d4bb8dd5b5cfb209c79b3ab63b9eb4bd63c53ce8c45ca1c29a74313404287a1351a943db80fd098d07aeb4b865c4fcf88008fa84592b5642849ba786681769c6333965e6391315e581b75adc26339d24d154adf6f989e014cdf097f256631dc3e9ddae0f165438a738ea5b46269e510e7642f294a4b49d2c7810f1684daee80663be22e3827764ff50aa0b9e606a7be35062b29fceea4dbfee46d447658d5bec9642f1269b7b55d5942ec067a5041fdc8812ba66e1e95dbd7bb9ed16c6c631e7fcaf36bdb447e98af3b0b4b31888c59e0963630ab937f509ce1e79ea2fe0170111d61fa0d41eb850fe2ed1a7b1b47cd7010a09fc263d93d97d07f53f70fd23bbd7ca479836e258c96cba79a5ba356fc9646833c96d3045cc7fb6c6c5f00e1cd953b760b5c723fb969759c70e5538cf57699eb168c7cfbe2fb08950a52750e3640db479c1ac08417afd77ccf8f3510d200bb01035e1ebdf5450f23c952516a9e994b573dfb9fb82dcbfe6c66adeb695c489b922fc5bc2700b84fdff2f0aeeb27ff8887745fa2fe7fa256d6124b0c08d74e633880f49281f26d46cd1c88b0bdcc24ee07e8c2ef3f66a17e96647dac44b1269496d0eb5840660ab5ea13f74072437306f425e47d09b5ca6ff88ab1e3b83171e3aed341a9b4c1cdb86c92220eee6ef3a171f63eb81aed0815d1c1516345f7b54d0cd59eb259d3f16f77cc3039e98878e24c431f6b481f68087ec01ab1f056c1ee584670a418ed2767738c021761d97519abcaaf69a12061d3b89419ee339a2d2f4b90951a43733f56eb5ee94541ae52c8f259aad4cc937f65eaf18024223738cc3b57c0dae865bf65b217d09e5d576cb9923b293fcf2ed4d83af41bf8f5f89ac1172e87d3d1929badc9b98433f8585614de9f052f95fbf88f2f3b511bbed5b54603b75585da9a2ec473de597d51d1c23c6604d4880cfd5b15108cf08a29f0eebc5165444be53ee16d5279a6fb306cbc845ca15086013fef6d0c4f706b910659cd25d496001430b29556522c80b437010e0e1c3d96a15db2aec7ed844015bd6d88442e4bbd28968f97a93b9b317f08b3a375e2a35b928e843bb61a34c4f049dd04d2d72dad33522bfb3a099d74430fa8b48dac74cbc505adad24fe880e1ddd3fc2527e93656e504958f1bf5edb3dd34ce487cbb7f20687baeb4f0219246d04d96b1c178bbe56977fdb9d62743079e70cf90eb4fe57f51cd21d0cbff0a94cddb1f752f2d4ba341115b82e33d3a813102df996751c9e49b1eb912934bc4ec6321da197e14396ff1f376f4242fc872177a530a126c291c45bda008ff296f57aaed4cc224a2cfe389f4fb80fdf3f7f9e1cd05d2bd9f39d8831f258dde610fe5814bc26e58a1c81fe141fa35d9e56410d3b7d156d56edea2c3ad390b3c467b276521cb71d8e2d6604b7b678796b4c1e99c2e19b129ce34a03cd4f34dbadadff73f46baf424f71d6edc1a9aa70f9853a25f7842f8bc030921d1250de18acb3c8d0966258c51b2b6d27badd06f464b743d3ee5359fd9925f051b256401a0dce3e21aee69dce5ea2de85592a8d8f4cc12f424afdfe0080ceeeed23b7b1dfc85fe6e7b7e234e7ee104b173e2a60284d72ed39ad5b13cba179f43fb83f9e5408d07299e0ab8d21e032e8383b0b3ceab805faab80d2003ae5a1200794926eedf8e4fe048e9ceb8694494821c089b063d774d4a9f0726f274e3195a049672dc8e9379e29f90d1902c2894eb06f38d15d8e33613075cbfe196a83b339bacef2ae100fcf18fa06f21f59f7c2d53529f5092076bd3c26d6e80323f325bdf14d277296ea48c102b1c6ca05914d5498848cfcb51d4f54f6cb51f285a6da20abaf66504291182f8de8fc115b911477ec7e4d3b7cc6800ce6da09021d28fbc62ac580d2f7f36da5ed743e69fb1a34a8e5a34c4596eb662f7473b1009efeef256479cfb8a35db0bc256f74696eee863585fdbb1f8116094f5681744c16b15a7b1d986c471ee1c836fa22f3d483f76feb23fe2724b9c9a832a72c946303542a587708222baa3e977e587b0635c06d567eea8344adf12af5349c06bc4ef35e846cf101ea710c3841429d307fb1581029aabe223207b3d7c6b585d1a2734982e65c97e8afb85ed05ec4a22035e3217eed5d12ce14a81bef4d3761276d3bcc76f1ba6ad1fb174d5d9c0930f37865088fd0dad3b08e7916d9ae67e702575df25b9590f15d5a120383f9b13a179a014b888207f0013c0ef250a4ce0af505b00d24e478375cbe0b17aca2f8d4966b1790e5be20dace2c86928704a4b3923e509212575a807c33a6d04e295f78bdb4903de37f9f73f3a24cba60f64078252feb45e69e005aea3464c0a424e10807d4bc1055186da1243bd130dbb450fa88fabb43bf9c4c883f50557227b99b70b33bd5711d1a091620870fb225f054ce315a716dce73f820e6715619f701e11a2a6af7c6d55a01d6ffac1812e79b08972200d6bd1f9c1066c4c6d0c68d8e0a2bec8319ee36b37f79f6e2a8cd6992aff237218856c2b52d9101ab233b6c087ec1f4a55a2731a5edce41aebd4a2e55b83fad0eee6ba2ba0cc0eea141eee06f430fa2443f3ce5a0c60da9c78ac9c98afc9b9837d2a34dce6c366fbc31e87df266cf81160492c97c4c639f3724fc27fe23f55d865f993d49ebd9b30eb81d15278afe61081e5e732eef9c2042ed3b47a216756a0f9659ddd0092988d44e93fba1d5e4ee42f2d6800009c1e16caea460178c250b147b78c77580ffdbd387abc4700042295ffda0ac97a872d56dc06599c8eb4626338facc55265e128f8f7f7c7ee3c0d3edf03473cab342da54a791bd6ab9e69313bae91edc12d7f974b060b7b5db81d6fce6fa6d346f32c884e349b69b56139ba3fdffbea7b0b424037310a098148397952bffc3aa4a952bbf17fef9f67c4d36f8c2c240050f4bc6767f5502a7e7d372cf039bc0c7f791acbf812a1854fa1fca7bb59cc5791cafbd2a3f8eefb542d702845471e59646e276a68e3b7e23a21d6d99d8d5ed39d9f766235dd2f86a5efa6fd55631411800e57e78e37658e4ebbcde43047d62b15983df85d6938ec2c41b13a45c4b23c29020949cf5cc06ace198296f71541ffd98e98b1c9b21408da75cd218a5c972fc8280105f3315e4a75e71da955613b4721b8719d5bdadbfed86561d1d41bfc2a3c9d7d270bc76ac919d84c632948e8c1561c9c84335b9c1da27ef52e107ff5a87da71ba65aaffe53b171c5548719aef2228a7881b2c0709a1da44a8589b0cd0ee98bc0835e9ac4c0cb16621dc67b7cc877fee4eb8e1793261116d5dba7c79710f1055e5bd9f64697d3bfa927701dca066a95224981a7b1e8d46ff29003120ca98fd00c03b28a5299c4096bca6c3edb297cd638edc20d2276d33a6506a75efa9292c5f73d698ea838a22026a7a2cbba8237cda5ccc5409b29c5631b6fb8337b5d79d58da14dc0cf3fd8920c709bf88fdcaffe062514dc5fb8bcae0adfb67ab41aa869c01615918d9bf249273eb1f83337e8044507a88af8bfd6be5e97462885d1f17b13d8f2d63a82db48127bd41a8b1e6f5b7b1f8abd60089504f24b65e9539a616633551f3e007b86b7347a1a1f91fdce9921aa155a6891c8de4a1d476ecd2244e9e5fbe1bf705679f31e6bc9309bcef0ab69df07bd8c6744c9aa52588c0a573c2f88ad4d653d354c230bdb79f3590e28e7f06835e026aa635aa48c3d79066debe7ac4f38b896d2ab504953fed1fb02b65f9b59c069f7198227ef00fc77c3ba6af6d5a5ee27017ae64c17086c0399d7539aba3a157b97e8726ecc82b98a9b37fcc3bc7be59937b33b86090bf0671be1e46bac49daf976283e47c3e7e42ecc61393aa079e7220db24d08707a5f25266baf64007bc170badee35b6713457297c7e11fa3ef0662fba7e944537f5a8353b8e5a0823d20444b60121a401bcf51c71d000b39286724f105293a4f2effc3af515670dbcd5a74e59471f1a5948d07c628eaf2dd79aaba822482f2a77d93c3e4e7f0a7cb65fce985620b466df5040a6ff32bc1bfd466b2fd3171e9dab7c0effaf2d0e0a272d5323204053730a0f6b4ac9a69f9e2f0d46ac5e0e37ad48a55b1ba536c9dbfda21e41a32d978a550576ca76cd07b53951949a398f9156a8a54eaa51e6a25c6545b7057ec4c73e8d73cb3562fb010919da8a1ffa8ef319fad25e8a403a65b5d13e62c5f0b4b02ab6e26e1cc777f5689b55e39b0316906483046db4a2645fcae8ddd348c601c886119c61a734006e7583d2149af6c415c16419f025b64d58ebbd1470965f83a4cc673117a96f45b64df8461c1bbe4a0dac157131346a0e519f57f81a730a64c4e2cef4f997256c4245f307d58371ed87256a72995a7f761736194399fccba6a38a967cffa43d8ceaebf553e1ac28081e5a7e050cd65088a80975d580ffd29b220be3244d604932f5f291c922d74d873dfd5517559f2ef962993f2fb9ead76b3c51c38aec9d92e0f1b833edc286ef6dc82e5619a596aeb609e916f68b82ca910d013d13908c888963862fa9cb86124e030602811df2a35c96cd947645b54f5e2a31de666730da173bc548c74f970ad5d31b8b476d417cbedb116e1c6533bc7545cae1ed03b460e621bdc97823886e404faed8697d989963f89c33fb5dad6a4d26c5d8574d411846949ec9d024c252df9837a1672db3e10699042648e7d886b3efc017198654cafccbe66d4714811398109213c71f2422140b356fdedc9fa845b6abdde85fbbb8c17a66cb39fd3f1e66d103569296e019311f1921bbaf1ae5f76677454020b28cc254758a672e1ad8d57fcbd2d55fbbf0b3db6b8b8166384d92fd149ae0d4d0091e6b1c9974c222f5886808e321d2a0a525ff1dd6f62d362c300b30914c98ba886c56410569b8f452b4ee17ea0cd9a584c652f950847948bac28c64464ae6c00932311c90329cfdaea24ac25cae113c0608cd6b94bab317628a11e98d6500edc36f6282ab1fbf445f3198d08025f71c911184a462c97ef229a131e75a6e6221711238d0586400b18a5135e6ea111fbe783d706c330785d74b7254fc82f546453c80517bd099250f3c8970b7e11886603a9afe647870d9b8893dc79c1dd43bac2212da97f03ac35a117187f7d663ec0c6b6a7396f220e89a559523531ba5c62bce9493da2f28b50b3739f5971720420f01a51c78e5daf67077e305167647199169c8b0e13926276ad5211133aefe23c3a37454dc8e8435d974e0132e895dd668b5e17fce685d2d2b14fffcbb33b467c374b7536a0ea95e1aa11f5366b4cee54aaf08e57907d8ecd75ebce3cdf37ab8ce5580d48fd2f5e7046681cf806b46591c72dba4cda60954c1a2d787345b8d43f306968414b4bdc29908be912938b460f991e97e0cd8426382d5e0218820b074d398f347b92475ac98e6e3e5e101ca4eb91a3718134d3d055331fe8ef6f7a6c21597464b8d38370f58eccef19d2481ad3e84beb5dbb69577ad3a6acf93ecb98b51ff72e6e2dc437288ccb49b0e7c92620564eac6ceb94a4308d1f2d4cbaa36020b910d4f0e43797ac5559cc0d18efde3a05f1c40aaf641c5a64277a1cf20ef289043e21a5860e07a161ce2ba0272867c1ce829c50976c246c2996fb517dbb7dfc8b67092cd672395c08eb538e5d233a06f92daa3d9bbf8a58d1f63ce556ce9ff4b4468d3d84d0f6a0c7d9862a4d1cf5078756a9e3e67758ed55f72f56f01e2884bee32c3cab8175ae1fee55160fd6b922dd20b86bc8aab413fcecddd5efb82dc29ca69d1c03cd05558b045d703cfd7effb6e61a5a5d773ef678c3993090ab00bcaac5b8a9064753ea83139919c752d0f7e7b05fb1c4f8a9e66b6907878ccd332edce8af9a2d464d60de795522fa4475603860344356a0fa572094096f96b59e62ed82ddce9c79e419106ffd84256449f96085cd6f69107b1b0aeca38100133af723fafa358424b16cb1b74d39a2d07fd7657854b564fd960687244df49d25797d4372f488b9734fd0a4cc438dd20b88f3447e6fa65d2d36b24b6d87952a63dc66e71ffea844f47e281cf11ee1bb04169e3b45d444c4fa35a7ffa43f8e173632d86cd2649b00617b5514654bd7cb9d1811637b8aac836decf9ef357285db3c944f0c5defd8ba15ab9a4cad89b79555dbc94a23ebe517f7c609fb979e4437776d7c3af1695ac0f69672ee3bd4073d71afbf9b927d7150b5afc72cc2392c639f1dfa631f06dfee4c3dcb7c3760b902c0544b6531fa068b6b7e6f35063f01cffc8744b3e446d71438adc999b4b3a21585bf51c7ec77067c1b73e2e235a3678050dc5eda31c8078ea0460460cd87008ba210a76ad3478de16e3172218bf81aabcd324e5c936ee06c51bb743448c8ed7209d6e43cc6eb7b869a722800f5a95dd28b6299a85857cf5f9de383ba52bd5a466da642c1af3cb8441d3e4224489e7f22450d77308b05ff955fe83fd4d4d5fcd7c29f94022318ad8d51b8246a0be006732c5db8dc892fe96e1524f9e5bdde61f589b8687b50f689d079714c1b8fe29d2a538dc49eeb884ba9853ca09379adb2924874b06c365b78fde4395bd78636b600853d10d41e644e084a08db5ce99c9a0810a0ebb1a7fb07ab08054bb759cdada77c473c1c593ebf6ed7c1b4f2ec10f225982d032a59e4cfb7e9102d45968391ca8bab8dc41688165f14bf089804de6c2f81396b35d77f0d3271f488ad01ee40aea6c5e199ec43ddf9119236f294eb52ac822372a69b2e61abbb6eea2e829107245928819b43b29ef3d1296d05127bb31dcdc454ef86caacda94699caeb845a5444ea6c956a129065de0bb7c1ee0f033e18b002ae3fb5019386a20c0a4342a69187b40fe223c54411b9f8cf370a92abd858d16094b413e8b5c104084b1d084bfa9d3710e36a82b26ed774e733d4117d3558b51afbe9fe48a32087ad6f33919329e03a85b97aabbf362c3c3118ce3dd0a69a98d6fadc618a74b0ac7abe33298cc1448be9c1b55880f765b40e0b34a0c437b6fa5a6b3c1fe7509ad6d0a4143321e2397c18b360d3b82038609f89a214c7e6b51dd3a53b8c99af8fce0d12cda48df591605af0fe1a302ee76ce18bd849683a2e88239bccf0d5c47b3f34edb685192c7b1381607d60d2d90f2562dc6044832ad6864eb0b10895a3c63b24672e7428414a70145cf18ca37ff47e7e85dfdab3971ca8e812b4852edebdb4632bd72398639ad88e8411b8811d178c3376ba391dcb3f3f9d776f8ac3afa50477b14ed86e5be5b1a996b6b3b798890a7fc0d66080b8e1e3c274903279f88c66c930f9ecd94640e5b989a2805f3329d64f132ea2a2fcf0efffea160783963d7a25f9044c7c885a5f1c8e84d5945bed720652122804d20302ff2d2a8cfde589c5bd31b6fb0cc13592b2bcb09d773e8d84856b0f6be675ef7f33df50b59871c72ec5408b8e45ee4ef16e894a76fec80256d2d27dbda2b77b0eaeac6a6a121e7e83975dd0ae20091a78f14ab1349900dd56453b02c150ac8f1901669e08815a32f2710fc79a68bdc2223469d65ca3dde6974a7a69efbcc0195035198bdf6d1fb890bb9a9ca295141e704705c5aaa611634fb2b08912afa34225ce296fb5bfc6abd6dd9e08adfc2d9ae91e2c0b8b6d630057911d14c980c22f51de93a4417506851ead6693b44d5ec2946de6e4a4e58ab5aeb13c8d090452b74d2ccdc5b12f98372a61ad314562509f7f92b70149d2b6e6f79212f399b91dedda66f60a258d577c9e1dda19015c01d43c955d7d064f2692f6fac7f39457975c79694ef33153e1ac810af4741d13b2d95f32e42c1a2280c41616f7f8eb9fe019f490191b5f69fd92c0fcd0d3e5d4272601f85cb1f7ded140e6274cb6e186c990d31f6f32aba35dacabae401f3572d6584072ced9c4d8601b97cb5b5c8da9fc1de8b29e65055d7b2a76883610fe9dcdc4bc672cbedbe4b60180c4d00a5b14d40bc4c51f2cd2e19d65b9f8331bc79b83ce1c266ba54bed940d9b5e539f8b5990813f473d5f6caa5391f15c7520293ed79d87deff385753b54b055fcc88b1f7eb50f43defad9d65e83ffd79a3205235e3952c1260c0f42188928184e5d833104553c27c94ff28d3a1a9a1840bac83ad7cddba0e521f4f1053e0f697e967ce6dd7344c677e1b406ecdbb06ba9fc0923d7704e87a201a45545f3bec0c668112dbc0217ac680f70fe8e8aa388842516925087beef202f3ea441ffa1432303ae1c8c9c5f6acf76331726f22a7461ebf85dce2210ab54dcc03cd756cbdf1af42f4442c75b06bf56736d91534a77e0b2478f0e8b2fd5d3a5b8bad891a5f2292c25640d3215b968a84236f7fd7f0c3476b673387238bb55b5f3290ce301467448de725ccf5ed175a42f1c5b5221e1dffdb8c3a1a6bff8a0e03d9e92d3c1aa0dcc8dac0e4082357ebe00d3aed6232fc69e7b52cf448a4a179c117ad790c52eb4df33773afacfa6a6cbbd74c60e40fc781c2c3e0ddbe4dadeeaeb7cc926ec4340d0c5abc6737375fd6fa23cf4b87feef8d912c4c2df6ce5ebe08388eed721957878a720f710be188a579bbdb55372a9e0bb27a41cb2e8080d1c14cac5d201fcc0ab403fa69d6c1ea9751daa1e9f925e6b1fdca7ec228c1229959594954c649ed06d6649a0da8e9a92368b2ff518f619294b74e0c323272d827abfbb1f99c2dc4c2e342665d8e2a929772e7ec9c91b87ba732cbeabca47703868a80efcc04046bedf81b41cdd99caa175713b59193e57124271c12d1263b3193f66a2ab3822dfda94cc4e26b091adae7834002440109b4951aadbf5f762987065ef1dca088aa17f932e48d41a4c39bb6d271b70d6b27f986340015e1db343f60f67ed54636a1e9a1e476165ff27bc3d9d1199bf972a7081f582c06bda55034de6b31096d80dcd4fce74b38579d6752afd9a1d1e8cbd7e2236159987335f67ec5415d36e5984a9e411f863d1cbd755b9428e727fd9865792bf145701e39a421931206573f047c2e3bb31ef57bbbd2f7235cba2d1203e6f7fa4fc2b025a55bc5e57f6ae3a98528e2824b5ff9b3c5714bb0025f204f09539c5680352942e31f86320a75e4a7ecaa6aa5476946d8388b9927ac0fa51b69871fc4d019d426757bcf96384bd686db7e3ed3f6b02006931969d7d5765301f9c2ad01de7aa56bfafa485971c25abed0c799fe1d7a4b9df85cb9bf48361044f9296f33337ba99322afd2eba3e5bba318cc0e8976648ff9495646680662373bac43a00972d0724895ae91806d723e1bd075a6e231de90661b4edd69ac0397b5ff7d3a613344d92444900c84b15d4431ccd290bcf8aaf6479e50c11d4b9739f22fa72c219f3508a9eaf3578eb74b3fc50d9465b14e61e0afafab1f25088c00f8137623561013dd31baf8529dc01873b06392f484bdeeacddcd7194ba89ca0e563200e2cef8e5950d51c4f3a9ad5188120146a65dad10115fabfabeff13260397d4422abb9dc3cf0725ffa3eac1bbeead184d6c9959dc7dcd7361e6b875f002f10e9d350f355dd5067b58ad54c3ca0f7e01eb4120e43ad7619b05ae285e6694fc1855bdad61723d94defeb52ebc2b51f103853c5623637ad83f0adafd793e497c6311939a0a5ad96acd284dc6683ae770b2242c0f6969945fb6d62385c120397f8e5ec9b70f7df363f48f879aec8c77209bf9cb252bafc889df941e91b62a4c68c22c6ccf6cdadd5decefab8dc2678bff33d38298286d277f3fb42bcaec6b55a4f54fc9ebf181d0f5de8aefeffb45d2d61daab34d602d74e6a5697f581b68fd1858ff4840d619182fdca44275ca55349b3d189ee1f051bc40662a351a23997c967458d624115b9461f3082d6801fab430b7dbce1fc38b3db1be3174d7e8ed25d697dbd7e5929486095381baabb24a25b78755200ab3629c6b10ffa3269f42c1cfb3ecb76a2d27b052cc62775e4c90a6ca580c4b8fc5b46a42fad6b0f21feeb56f4552fdf43a09c17818ff7c30a4cafc61292a0653db2efe0f3b3d60d5413905f8b9b9f379d744165727328ebe2d2bb13494fdb7293bd696f37e80b5b7a9e014967033e458cf74c8c18fd74384319a04d3ce78b6294182d59cdf2e666a759449f7bbb3dd6f3c4d0a82f34f49373a32b2d9f7b11774795e821fed995e28407971e636910dd12813d70fca01a99d16c081ebed611217706aa3098a5956356ea7fe3b5609a89a7420f1628ed52831be48aa5ab467eeab89fae2b5c2c9740a61ad11ab61bb60b3aa613075bdb7b6211f8104ac5d4585924a3446140d8905c331095435e42c736d66d920506c1ae5885c540d5e8fa252ec8c9533630bfa3cbbd3b1a24f34443b526a1ef1bf7d7277e04b60b89df5c614b9476dc99201c50c930d8d8801ebcf5d988ed7b005a9b9fe0d117912d36821fdb6b35e844caa5508078bfa888900fc80063c44df2294eb85959025b42f1ac470e8cce135d9fd58595166483a50cce194443eb649983d894ec50f1e04a9d7e658e169c14a5fca42c404ec3d303455f4abdd56123ab2d21a9decc2d349085b60033e649d6133b2c9bc930891b678369363742052f5bbd8a695ef39e68ffaa23293e5976a3135426a8af5c2705be1dc7edceb7f048ab4403928ca93af564a88fc00fad0efbf7257e37c1b64fb49c40657438717c9ee5e96660dd421b716ad1c85ab971a48e88bf8b730286fc7741d4129e941eed770c7fcc1d2d7ab3e93cee33878c6426431901cade39a5a5c90ec92deebe1c37872981364f74ed6b7fc83a2a2833ed287f4509651d9e00eb7dd67a7c86e87588979d8316b18554446e35053f661e228c9d3618072cffe8ac8c4cd8e1963ba44fc8deb9b782d24ef49f9a7ca89ef10ea94804113a28244b4f53edf9c6ae038dd56e8f17b2fd52bd5cca591b855b1306629d264c4b9423c4295114d03380d080431f0dd6cbbb115931367a2007ac516391c2c1eea539748ec76d8a185629789b6bb8adb5948d548b114056bd4b9632be7d4349be54df4a17a58e0720badbc979e36b9e24c863ebe70fa93cc97f7ed6ddd0cdc72014c7ea62070d1e1e440e3e9ea76878f882d6538aaa446da59c090bada55b17dc836dfad92e629b94c28c24339664a99f273d62fe323113398c273f372928af295b62ad39d5788ad12d519316b832e836597e106143f1bfd154d7aef0e7a7a0185bcd266a453c68d5f9bfc4fd45f1660f95a5456bbf302edcada935086191767b3fbabfa45e0e26b3432a76b4f1fc9c3b4814765c2edee0252819ca3324f10b2ff6a023aa6f5bc089d37e9e96dfe703b6055fb1d670f71e7ca81cd6b254f163509c4bdff39009e0c8da91d4d23c869e76722c411d8f13812d4bcbdfbfc2210df3c08965cbe6194d6066cb3cc045f5f10d0bb065e6f5c96241f38f23dae22a27327f9577f01ec9dec79c94546733abcd142f4448481d0cb21249ffece7b7f04de1a9e39b1716ba2563eec4409cce1673326273a8785ff306fa3c0350b3dbd299871c33ed8fa1a3e6eb1652e3f0b72d54c7bb007dff35025c6f90ceaf1093435606077ad3197295cedbfa855f2201f624b007171169a5dd281c4193e005b8f41b6538c92361c3ea145988d3cf597ae0376b04f2a234975bef2f7238565ae4e77dc4b1b56dc38f0a58ad7d07b2c14f8468846b230cbb41b2fa254863333ce44735387fd5fa34e4d0179c2923bfd9b6a9efed6093ba912845baf1b455f6ae519fd0c1152cc25cb55236403d63be29687002ef14434a2871d6fb0fd86d008acc80dcf74fe2f18ec7cff14f5056d69e963d640f758c8ddba045cc18214a27714222681f1276dee632c87e3b96b181c9d2a3a7386bf0094f58a7daa95dc71fd0e4af55dfeb997962941f4943db7981311978528daf5f0410fb70a496f7021162a384f43dde2e9fbd98be3c8c77fa23cc67d30b40dfc721706c658a3da8726d21036739a4196c843764f3ffff3ba1c8b7842ffef01d9f3af8ba4ed52ad7b6b9f2a65a292c80cd8f6f5c7f980bb4489a05c5f81f974155068fe75622e5bc9bf1dea3906a81c3e2088189d97b5bc5dfda607e1dfb08b3cc0e33f10165dbf95d8e0aaf9e6b0236d41ec1d748aaf122aaa62bdebfbd2a561d591997eaf3e9023e141584032eb839cb832925f5bf9de33f5bb9e32ddc8d6988547687e70d0765f9ba2797f51c4211034532468a5ed1ee32044797f7086c67b483d9804587a6d5610c4aa785055f5d6f7a0940be023850c8576c63196120fa6430413b6146eddbbd012f9c453cdbb3d529623b8f9bbd66057b8bfb88092643b8744216ec701ed63c50a194f5f44965720ea8d54c292bbf903594a1b63f2f65f5a566abb95b094c98f14e9d76cb09c7d62218fb825a907d11515e5736f8585bb9708ac5f0cab5b8b7a7e4170d2f6c8c8e00e18313648434bafddae6e25378efc19267dd2512110eaf972a302f9536399dff2e2fe06ac9ea992e614cdf027db53388c6dbe28b16a4ebc0ef3c962934611e42cd3d6563f8d93ba3cb4e617cf72f552e49e81c2a14fc04af80ad501d2e79a88b19a5f0ab2fb9682678122fafb979c6f5281ae61d74b6f391ba288dec40a5c61b673b8767473a25fd656809e501804e6aab78ccca8fe2ce868ae1b0ebe70c8f04559f07b61858c281da111920fa16f1c0147958f005dedd2c02918f9e99d11acad0d8c6fa1848aee40fe7a1657332254a11df80f741d4d7262e0e1f17e05ae0ff86905d70ff2b965974b75a0231ae685c7ad186e3a280aac8aba281bd98adac3e4e548f2adf79bddfacb50a6b3f5874ea5d00b382d9986d31ec5759ebc4a14d110043416ecfa91c954c66cbe268958eb88661cec3cbd483a8717a432380d9fe440521fd7d39b65d9c03abf0d72f8ae4637314a4b037878501b9764f2e19503a5fff952035d6ec3a1ca125206040e6014cb35c77b5da96655c182b98268458a160272886d775abbd4877fc475b1f04efeaa8b79fb377e0398a3a37a89b224c40f04bd738793d6410a910ec6e3c56bd7e068de7c62f61266471dfad373067f04be0ec737ccb31fad181b5d9d40518c61179c109df5207148d340c0c58cf4a5e0395bdeedfa50293cfdb236a4e30ce0d4d8085ee10842bd88dc99a5a163fd56b42b43f922219b3e8d545e5bc7d971131fa4a613fc311d5da9b50c3a91822e802080f1765575e1352463221f0884da05b2bc5774db4aaaf94f73f5970f752fce862cc54c7c012ba6eaad3393fd85c9ab03b763a91b447e83c68ce87f6c1e79838d03981e7f1d4ac6ab2250ef5004b040091507ae8fc78bcb7b0cb7424a60b195a1995b94bcb9f47b96d005803e33cd5ac4f2a9fdbdaa65d580509808221165f37039be5b8279aba8c130e8741935016db3c28f6c62316dc30c5b9b3ec0429a216ee8c9a8969d79f1a3fef587c648ad235c1a12fbea1f9620f9b2c135c2d8f415527bafb4b1bed71598a0b19d4048fbd2c78eb8a3f89daa5645d465491c6f674f97ba2faeff573b696120ae2b137726de03a1bf1ce4e838539130cf349690aab4fc9654cba1211d2aa1b39269e1a09f98a0bae04538d694b8a5bf159a4c3df4ac046e6cb02c3b804061d4d60ee18726a3343a6d833326977bea1fb71e2dc1a93c775e792c282644658ce9b8a55ba33230d78f0e9846a6047aee467fec7eda05addfac865f9390cbd2747f314a2d2e45eca669bda69923c768e4c1a6d75430ed6a0c3896bb5befc1664b10e5014985fe7f43f0c1e6872d6274218648e51d196b5691fd17f5e7e8098cab5c56b834d610c35313cf3b1da84d11a051916f18b190b144ae1de48f8f1e5b0f54db50891d6ac0ffe58a549f2e20c57f9b4aafd840b03ac252bc8b1f6c711e578d162e74752f9d740b162a0446b3248014a304c5f32ec3e8ff4df959588fcf484ff70438b4634d633364bb755fabde89b756f39ade66c15b9b85716f2916310a2982cfaa5a53c281a677a7d2aa0d6d246a9868e85553f101b0866d8d2ac5e0a81ae439b3d21fe808e3d1d92db9cdf3002d5f8b929401158652733e4d67321c934d92f2d1fd03593549abd44cef7ce56edcf8094fb2ff4ad81522ca40c6eef9205d78dc96132c26c8d7c3442bc88542e48004922cea433eac0feeb76cf32288052f774028d03a7787f8de7278e79caa7e2f36e2073146a8f7ecd290c91aef98e05bb6c1c0f2d50aba5c3cd716fc5103787a86af151c463b751647cac3721704b0278a062b0cd4d3b0e99f8b9a72ea29b571af695c17f70f25e5856fbb96c7cc5a0af0bd4c9de50739b5ba98d1f7ef013b3319c53aec0c1fcae63b2186b176e925c8e3e79885d3f52b12072438cb1c35b50b98d2dc9762246c32c76fec7736633e1a0f0d98c1ace2deac695382e18f24f0269e57c871b586d5cc7d282af3f62035e795606a797dfeafb7295416d772de5ed0c20b54a22e84151dac0a711b89fa7e0b019d415f693a802712538fb27b669643c15a2ce934f1ff703d7d65426a9ef2b189cbe15d436b3600ce5b3a77f442d20c514cd0b3404ca991404a9e4da26c4b3c470b2397fcac3ab1d1059b87320b6ff9793d1384acc6f067ba192ac13ea8abbb01dc77b2846cf981638de8d7a7a7709845299da6bb27f2b07861099a344816f9aa665d7bf5d6640e95778cf0f70efc4af0586a39511c91c2d6c3b0f8b23ff30dc0bbebcf23ae71d33f28a6c0ba8edce4fb754a82119bf75fa663879b304d8f8c15064adfefab98cb56e18740d719fedcc5225f95e7810d9eae876b29be3e9a38d03e39b8eeae561b1f7b38e49fa9f40d8370a14b297702d872042c4c6721a74f8c05892747e4adcd21c5f2dd1a7a7606c3c35d89d365cab33347109bac00b061f5dd9fe6db03a2a0e8e7a33020cddbe9dcfab2d498a19c365c894e5560b291b9503af5191d7dbee1d74f709237eba4e0e7f3133cbcdc73e9cca794ec6faa8855bc68981f1b248e5ab7a12d1f604cf21821e2c88cf29e8f0db755825f64f9bc6f24afabadb487244dbcf9e7da2b2e0b57e13c6cd9c3d9f1e0f9e62d64a367b39631a0e340fa9a9380263e5b04d95fd91584747050278ce2f233ba9d62bb16d955b1f90adb20c5765dc29e7c3753b86a37e203976253246c88fa5e4f3f4431006e3b2b7d119ebc6a1ae272f05f467d714542e77839fc73df10e9f0b3f51ef9db9d15faae6b47cb8ff89f87947badfdc441e0fb007e7a984eaa7ac4af021ef381fa9795a2118f3a0b907b98f42c87c5dc066f4ded6e942d10b6df6e1a9f6006f0d793d573ca37b0872ca41cd41d9a1b583835e15347e37e3f7d416642caea2488417f4acf4a1a35b03982cbaa3173ed7ac3a7201bf50e313ce525f46724447a8c02673d77d3d578b7bf513b208807e9a8efa39f7f1f5a092934e5f73d99272ca53ee9bbc11f86a6d2efdfc4974fa446ecfeaa9c907d380f6de563036eda8d705e9aba5217a4d8c7b8c0bd679f6716b1755ec143b07ce940348e82b016aa9c1ba9f37727761c1b45299b79c280d333cd1467d36e18375179edd1f5a945f544cf58aac6b8f06a1d8a6416b252b5fc301dc0adc15853ba89f2ca6678c681be99a5a57805aa2ac60039afc413196cc56b5f12e4767ac19de605432a89c141d82986aadb0fa6df374e9dd30f946d076b9613ca48a99315e9646793452791736fe655ea0bd6925b6bee429d257b489d386c8448a829b3d84ac11f39623e14f66560d8c785cb0500ccdcad5ff40e8579095a8f13ede1ece49eaef579eeb4d9217d666809226e27c4f3af306c37f1aa9a9bc4665640e54de9c4e6cbd9714e0c3b504ea55dbe67fab16951c99f93829b32b2d6b65eba3389ebc60fb7a4f1d323001f72d1d3750c4964b07ebcd5c3dc18280801e81da313cac24faf336a6534d82268ade5606937528fa4ed616ed5357c961296b5aa4222139871a6f17e3b8ff7c653e24c5a18c8ac782b2e34d074be194b932bf2bf417e936fbcef1f77ed5a2c03eed1d1ff4842bf7731a3c0e4494dc049fbab1e3a9aad6599a49900afa419756731d188ee8052977cf82c859764697b489d416c9c17213e3e3937d2c7ee4d0b71e12466ab0d39e386b65e225bb9853e32b085dc8d6777a9d92a41c92182a1bb18350ec1209d5d4d2d84598aa3ad7f68a5219d7656bae19cbb2121e96512703d4251d23a17668d80199ba6fd6ab4b21e74382df365f34b458764e109fd3428ec4e934660c1e0a5a988e4aab8adfa3257260752d4cd692a34b4ceba3c985534618bababe3320fae61ccd78d2dec23010a75ae009ac3380f430f17fb0eaaba5dd1be87e17be255a089cba8ad87ad164969d16f7fa6222069c93666fddfeb99dbbca00d3e4d2de466c77ec6fafef9d8fd30db8fdd71e8f40d0a1d3d2f9cd43c80755ea5903fd4accc0172a9d432dd7c6416ea0895deb7a172108dab5bb42535b63a17941ccc7aee646f4af2415deb1c6020890dc0dc55b7b28fa0d6b61562a13f2f6226949d284cab8a3ad89db0b6e89039f75a8c0c2c8dc9b747cf633c5181e938c5aa5ed3ca75de838ee7149b5941989da55bd6bbcaf19e5fc4b86e377d1aa5ee3f3cb3d8b060579721108bfcf1e513dbbc19166e626bc954303f759ab66cb915bf5c52870e105f05e603c5941e302204950108194a08281cf65d77e68fb6fed2aa5fe8bc7cedc44663e5ee108760814f3e74bb637bbfb5f056768ae8df0956a159a462a176b1b77f3146da2853fb9bdcfc29f18014613858e3b568ea41f0ce5298a0c19bdddba2207d758d2db0341485c364f3b0d716ad3705cd1656931f2dde29bb315a74bc121b8a1efe434f6da0a6c0f25112ab7494eb78f5199b7b3ec07e3ff67461640be10e2d371148e6be4a98d0002c2c1819808acb48f8b8ddb8bfb8036ae74eb8112c5a503e3afdad98650e06bdf187cedd8322e366fdcf66a49c28138fa857e261da046fca53c3e26bc70829c9c7c31e986c74756c7d7e05b5fb9ffe58b3963420ad161e688b7f45681f07337df6c17f69de698f39109e6c4149f7c920ef6a68db220580c87aca9c487527d3f90efd0ba0bc450f087f29935719276d5f837d19f5ac8cd13fc8bd302f2683ec0ab093ff267d582a525eb136e1c5b05638f807479af976de93e8ec4e92f09614da14523f8749d4e7088eca52d8fc19e5d3ed98d74b5486881adc2dc838e1c21671d7dacf770f37a21a1a4fac8b3043f08974e511f75efc452801d8714633f7700c91135bfee2a28a49351f4af31bad3ddc4f2c209ea5f89fce5508a5587573d63d4225b01f54672252484df714cd550a41ae4f9690ce39b3eac24bbeb28515addeacb340209af0c3614f45c378e7b188bd1f11e53369a2b2834ac9a07a371691d2096aa354b64b19ddff8c81ad106b5b50d5cae65b9d40637933a72e05b339cf99c49e1082f070a276702f48ddb8f81c2c739856333d7e9f828cefd232e369ebb3269be8ce4e9033953dc4f371b1dcd7c1ff2054b4fb8cd47ba0a9f9db81691cd21c072c43ebad720a6447a1c943498d9bb91ae5b0c91883053637954d95cecbd97f1402d948f65c194ca435fbb93ab306de30716b9bc8c372b44599d570bb18b78b48341d0a55c1ccbeebd6aa8b9ab28eaa2a43bf181cbb0788cc815f8add55ff6d2db05fab02c39dbfa971eea0d6654723120cd9f9c22b885fa3c720b711886316c9097422f05b6a84b532425d739ee767a0607f12a1e4151d346f55a1adedf2b271f4018631d4bb05230f8d6483a0b3a16437eb4d504b5f94ad7c0c89d6722d827bcc651ecb4e5de1b23d354c9ca637d4f16e301d18da1d70e57804a27d3ae6e4460f21828e3c42893ab844aad35bd21adf44361a009fe4d8c8f097a0921bf6d968dfda9f07e6bcf803c09d348c610f1d8ddd3fe1d9bc3eb7d4f6b947bd20be4d0382f0d7d3e8046a11563fe25ecad1c372c20463dce51dab8f9e020a77077ae7e5e395871fb10dc686c4994038a24e792a5f5931b1e598126981cb0faec3623ebb0e86a77005adc83712f36ed663d77d98846788a219fab9b13d5c3433fba0a059b74360577c11137f91db71307e741b4ae57616eff31d0f9cf226cc148a0fd649b4e9b5170189a60f54b2d0f3d94fc29c9a45c4267821f252c61446b0fdcd88b97f8bade153978167b239af314cef57539ff0ffd9c3607d3f63e2f9b418a33d5ab5258eb7875c59e7c63bd588233f43ff556c4cd380c55e87748cb58a512f0621991e1fb4844ba958ef3e56969f6cff09008d178971659ca62bccdb8e53ef5676925606fd853093d8504acb3a75903f3b469f1874ed70dec8bea325637d0eab28a8c8a74f9b8749b351ba504e4d29ed4eb690b97c5c71982fe5fa58196109e05f0bbb28c12923feb81c25bab144668b8d3fa84cc0bcd7ab835e4b865f452073e28c7f78fc66228ffa214fae476a41c960b5ce10851fdb5d6a6a5d9ff0a5990a3922c48003de376ca9922f9d44456a4c8d4f6746522ba7ba164d147975afd4f49f6773df3af13f6e0be804c2704d00ff112bb8d6c798dabfd9d14a8ab2c52b87411925cc5153279b105c79a36b6e1d6aacc9e24fffb655e8e4c3bff956ffa686e7991e0b6a8a21101e6fd7c3bc8930e7a88c6c37f6e458f38b7512cd01a67e042d6fe30fbe742f8c0e624e7381f227b2f43d57f5bf1af300543bcf4a1aba6d583dc455b1e5bef5543ebf46f6d3f36b265f87c9d90360c05d07ee8be1e86dd42258e66611c46de36fb5cec6719c48a9b0967c47ff9955f897d66c1426f6a6aa80a5c8579a1b59a8692820e74f58a26b3fb50e7b0bf0a9ccb74815a7ba158042db607f8933bfadfb259508570e8924883c1f978c103da217b55d504131abc8dafd03c6dd0f5a69b271b61df1a8e7e957590f520b11729b5a84cf04fc3aa782015be77ba7b7d1e0255166ba5f122e7cc2b768df65e842810c55cf1f78b67364c6abbf1f2b30583aea444c7ed16c445e183a50c3f299995538dbf5135b6f8559bd527c5aaf625ef3d4fee1cdbdf4e383bd039de5884844ac6bbe5e54dba092ffd02c4d761d25b95a5341ee4cb9cf4dd5a3746713a858b432f58710db5c8d7d2ae5b901df3186751311e312695a3188b09529dd7b317f332273aae3a61dbdda5f49c786a93c3f0b96ee30f0d02d88b06450cb0732b0be09d0b17c1435f2b59a59fb05030a726dd6ae4728adf7baa455b76eb663b13195ad1fda418d0f123ec788b936f6dbcaf403fa89436993980c796023c6fa52aedc3d0bf098be3bf47b748de5d5c91b752e666f1bd3392191ebca8dc3cb36d701203321a1ed8dc73b85fec03671756cd4c4f9d4901cda5ed754f05e217dc6e473666c0263c47a45b42e6caa3c11349412df3c4434ba22cf4ac62767b6e3be80d0b779e4e1fb9c495e2f588bb160cbfe3ffedcb0dbf4b13acc1f6c329e969a9810db4c10bf5d87ec8be811d59c7b9036042eaa5b0f12ec2ba2804abb6049d77c921147659f186b4c0d65bfae45902971de6a305c80d09f70edbcfbf28c79b960e2d0f0d489fd110a6d612a73f5bb0602f65fd21fcf8c289e2d5df63c23452ddd12bd86e2959a66ca3c6f8a308acdafe67adec2e4a1c8dc8ad5591af3cfb3d26da565ed29ea8c4ab671850e28d9d74f3996b0c43f0b0ef5d0ef04cce1f5fc02f202878bd70aa46cfcd08f2053e1bd5abfeaa92a964069dc4fd3d3cfc98894032f84d2002d78b0a94b6ccf5ddbcd22c45ca5172ca6a0f208aae7fa7cdfb708ab4d0a7fad019d17445a2e1e079ec867029c1df243ff092310c9790de94a68fa72582724853c0d87e76277673caf9ca1032c0672fb8381eca756a01303a97fba51c0d6a1b55d1461ff9fc9e7aed528b04d5f2deb32eb28d1aa4130c8308bfe55bdd9c51641f593bc5fd28505960ba2e1bdaacd0eb6428572023dc1f0e4f5ea1ae95b2c27c8293212a2c2b7d49afea5cbbf286ef7aa6815539140c201d2e10ae0a5e234166833d8f0dfb6f2971e921d445e1653a0359038c4d1079e80d0b96e994c6ff573bee18053a7fc3dd0b85eefa344587eaa7bc2643ae58fefd54ce0cb03c2e5f761da1557721d6611ae092b82bda1f33f910e5aad813c9dc6811429a770f18d52b02143242946c861f505780f31e19156b0a487998cd637fce3a65e4ffd13925055f6f60e4d4f7bbda6b1f9c5085b00a0bdf3cd4ad75029970ac2baa7beb886aa01374ba98b90dd78ffd614bcc66cb359987183f398a9824038c06fc2abc9db4ed38b734fada9cfeaa2a762b24eea3ff18fba569d3da114c8147f224b51b86bba68ce36d654ca36b9fe5d34a65578df64845ec43fe21df7b8b9f56ac19794f1e0d6c26b8996b77a353ce50c34412df13382e0a226cdd006fe0c535483260f8ea543c5817a009509c950461fcaa0c877dfbbc697a81ca360961b7ae2a72d5045e32606fa1eeecfd571ff18daaaaaec97fa02b39e2d261ce85966f687a9a01a7e05746dea3e41cdd24edd7f5abf66081bcb229e88853f09c6cd520eace02beb87302e437c33da22793cab46f239710cf279be7a788eec2be408326e2fce6ea10efa284a6d75693748819692a9087f97add394b6652bab9872a88f02df3545c9a8b1f70f8f7b741c408a3234b9170e0303994b4b9b8ad7bd63d4bafc010929c94e394dd348e9a75766b73d131264eb9b4d5f24523abc62bfee53bba8ce20f711db6d4e88100dd1194238835cd4dd785d0b013d58b69855f10db224b0f2c8a0eb8f1f9930f7ae181363f86b12d91addb95d9e3d0355f759c0017279a10f1a94a18f9a01f31c2f59add89b106129d986548a2d96f0b434c444cc5310183824e5a062bf481d37f4a9f6b88bde9e8351ae177d9bad1b4309d711b5a8adac76e9819175ab4c80102a7aef9c122233db59beb8427ca481c4af3b90c8b742eb4728fb9298f1756505d0d440208907b4d657cf928e4b8d2bd05be857543285e61af6ab8c806263b28817a8986592e56d4f039eb9353d3c425200ef8a6bb850a6d4294af0436516ae9f122a0b9268e22dd6f8a74ab19d10510966ee27656d049a4e962965dedf214163b2b4e14e39469a2c1c584da2c259670a921fa85d9c4e6cd414bc91b2af9d788115b33048920c9bc9ca6ce6498b395a3d7c3902b26c1812a75f18a003b2e089bc267a67b0dd865556de013e0b712603db15a55888a683b27cbc9129785c4393698b26cebbee2106337fe83af4276ff9f69fbb2e45872c12fc76aaec9ee56cdcf1e1d98e229ea093f2c6362131cf61eff15109fe14a62180422beb0f65fdec665250f178a3765d0fda32393595b1f88d0450ce6965e843df60e068bba11524369f620f267f71657665e62fbf15962e64b9f1371c6b86004bdaf203828a3abcd37b39138afac27defc2bd812f4ca05c4172580c8e9c1f970228cfa96a3c7b343ca2085740dfb6667254304faef8c0431ce055c29635df5dba397c236938e2408d61e5cf19fa9ced3c30038f147bb6a37a8da23fa8b4b0b52eebf53abde2fd008619e5e8889bc59fbaa3cb1e285a9d81275464b7065c84a0d8945741fe01f94e27c08b3389198e308caa4171f7c21080e8e3046322b4a32bf07cd63f904143a9885f8a478a4d7de42b7962c45cfedaeacc40580f760816207d608c5ddfb4c9784495cd6bb613709344f5620904023658a34113b8f2e714ab12f11144054dbfb5b412dce2a6cdd513313972e8c9e39b011d1292ab0da390f0f653e98c6b64f52c971d85f438dffc2042154c8aed5d273628b3eef0fbd4c4b9e39fb8819535c4e7960fdf0ec0346f0e598a9b115a4c8488157867ea82d5dcb1416154b97a608378a6d6959842b75eda1d4f2dee3f33709a2d87156e0b46a8e2bb1a9a5bc36a922d0d73894ec8db2171974ff27351b8caa7775df3ce51885f634dbf1a16c63bf16c877cbc460214c0333529d25f39253633934a33902244786b7738950b5f9f68bae09b92f2bd5c8e1369af4d344de94776b1f0e5bc10e4893b22e2404896c5422afc0c5fbaa5afdbd4c967f19710154977edc8f01df819428ec70ee88493c393425623430ccb8fad4a550d981fdae086e67b9d54c86a536983e97fd2428c0f128da9c45cf856808c9dd20f7d2ecd2433256e0ec4bdde4cf73685f07f8a30077f5b85e944b4878d60ef84101fd667ded4170e108a998d7e3776248c32d7996b9f805420de9fd2c25dee5665f2df16b148a62a6ac0837da8fd446e7449f9e6ddc3ff870a73a59baf0029689be36a9d64510b0738d6e4174dea249a3d6bf97e68e1f457dd240f74eb1a356defa9c6a060b855016966930734bf50f66f80466cf63937d3e3a92b3c8feffba3d4e9765433febc6e415e76d5e9c35dc5077eb860d99478c4f95b5cd4b75fbd35712788150f9bab9ed773d5df3b3af513f5ff31ba4307e3491197664305279cc02089a0bf4bcfa06f98ecd1d5bce297cb9fb3ea4ecd4c77dab06722591e28c56af16976a9e1034c63c2b3c1d544919d335c92acdff4afadda7189e0dd2ac9835125bc9681efba83a9eac066aa6ed1e245faeb8dcd97821bd080b521505860d55eb33ba5b73610fa2b77ce3c681a9bd6b83941f2177b261fba1f41790b58b04d90c67080b99ec9d03e246057d9e916da644eeedbb6c7a5d413240cb574df745e823c82f30eb0f76e3c82198abbc47224b761a5d81c88dbd48979bfa47027ff53a329d8df491a263afd7364d5d156c69c380fb9120b2e2c817c9b5b1afc6ce298c9528e08d42f1c15ceb167512f8d075ccbe83651e90dceddfd1c17fe3470b01209b3b6e9de642dc642454d11ef1d0fc925f2d1f082dda13c18228d8f85f7c5a98bf96b451dd419a70310d9b8c1fdac803e249d1f613b9b3ad1e53b2eec4c274ee109b45079bd7e4080454fbe56e7cc7bd0ec95e5f926b9d18a3453438bbb6c0bb47732aaad01d7b242edaa92acdcaa25dbaafec392828e811af1d226c614bffd0c10ab8482a60b0f7a62242ac09f1754063389f504985ad02c90f919312fe4395f5154af7357940034d4079fe935cd531e4e51998894b1a6519c02b183625bfa5dedf965afe0276ba8c7dbe8706bd37a703aa7524b06b5475c3335468e0c8aa33b4aef12b1b5fcddeb93d7e18a50f4f2ac27aa27de62dce797854250ec0ef8704f04d26c366c99fe57e3a914fcb640ae16b8b2a875804d24b058f4b5ce4d9cdd47691c9af03e354dfb368f0c14b5a4b736878daa8e1cc5dc12872b79c232391900fc87441e8aa8e46b61b82191298c51fca1851dc9570f32ff7e2e53c929c91cc7f33fc62e53ed176b0c01fc412f97942f063fcbb13410ab6bc0471c7325fb2f67b9e3daa9bd2f0fe230f645e7ac5e80602a6105c31c5cc26b62b418e81bbff1846c597eda936ec6e19f2c4aedc648b00877118f1b5b605ec38de284fd82e235fd6070e326c4ab0f7b7ce77412686d266ac93d4b4aa01bf6e4fffffa7ed9bc49c19a53ac92e2ac7a75bf0ef4f4c38aded1f0b67914816664ad8bd88bd021ec715155cccea3a14b4426b275efcec8091b49321b8d4bf5cbabce9404a5ee5f21b35d8154cec55e56afea7671135eae129e6cc690e39ed8f12c0196671e9a1cfd37453ff93552960069137fbf671072b140155950ecd46a9111c19efe0830e5fbe524660d7c986ae3da6014bcac15520a9ab98dff83fed0ffed93ccfe1846cb72f3e501acb99a228e8c8ad0e8b8e1519ea8f476db91069246db90d843c5a5e39b9045cf0ae0b7a6a6f6ad24c39001b79faf691bb32f771bcc8b2b8b0e76a9c6b2f51ec29c5527079a69ebd2ea32e28e56ba51fbb1e66c3d8c1c1141135d5013216859800425fdf4dce9e97398524d2695775b85faca77aae0a43b6ed8d096e9ba08bce5d6276945bc2375f3637aed913c5f2a9e1080997cd9c63f166545c26d0b7d917f2dd70674bdd8ea105b512028d153ae1f1470a6ad25c23d523f3c594ab1c5751109ac5e1f8f68b7de67fcba041f32c155cbbf0fa08bcbcdd2bac5702ccbd3e01184392d888957b34507d62985ee00f4807dc98297f1aab556976dd24474af0029d56a9f15bff4cd814ff681cfc8b239549d28da3af6e13334efac3ec750413eb9218f76d09c8113a24645b048ccab297a43a0931619dd32d6753bb96f2a115853201df2e71a7dc70a8911ef1c917de81079665d1b73f1c43806da5df89c8b563e8b58702d7df4fdf13f6510b91d8b6125529e541eff28e06e8170b5a4d2a0bdf56243f298a3fbd8e46793f853eb86603ed80a3e55721f6f1cfd98e4b850ce47a5008512c1eaae514267b7d961fafc45d4c44459dea47172fc41f255fdd3e526b2f8308a679c603ebef4205e1ef75a86d40bfd6d388a811c5c9ad3b3403d233f32cd9711ecefd319e04de6f4096e28df1d36165ac7b990879df03b1ed28d631170708b46d69aa7e984bd16e165106132058c9eb6548773e4b53d168b08f48e116b97c1444ff1518459724781ba082344d50ff5208bab5ec6ae472d28bce787f654dc3dc8a696506162a57482525f232b4848a3547c7c917e25b06867ca56312914b1ed04ccbd6d1079107156bd6e9a2010dbb5891bb6de50cc522d1794e15dd8c321e0d9d8f93c6fc7b45d534d689a8051f79d7ac0d255a8e8f3fa897f27ba5f3267c3a9849e31b64ef1e3569be801382490e50ba8f38e59d33ea159742304a0624992edadb0f0805fe92ba5009c7c91166740cf72595b6e7b14a6c35f98219f0b529b89d666c007243bc9001df3434fa6e6c382a26cdcece129b7f5b48de74616cf4b08a63937da170618a654e79143cacc4f3c2156438a9cf640e2e5dba46123a5682165848c8d8941c4e94ccff7256ba57128bb27bb3f53f3845eedc8c10304f29e5f83b52cfb1c6375b770430b38e4144da39f943f464628c95cc8b4066a407f9649120f73de4955d81271121b6887f252f9e3396214c60b7b0ef8d55bf49104f02e47f7aadadcbd810ac045de041833d14cfe764097b9b05f9b0206144d663ad99cfdd8ba347294624115364fc150a3a5f44cd62b0617452be4ef9d14fd62bc208931941ad60209c950ebaf24bc5b729d278e05c75e6fe01978cc626ca5dbbbf375877ef78051ba27ca01289b7a5a8c4bef675e99cd63a2637e2a822bd75c82af2bc4f3a7777c3c1d8ddaff7f4ae2c45f2ce0fe5a052721a6d59e9e8e0a23c470295176d03b72ef757b3edab04b7cd1c8ede4717bcd06289d1442ecce86a4c24a98bf5fdc7378252252b7ff807523142b7bc5e7a4deddc5c468325d2924043f50603d21ac77a3995a9315d3b648c935763ab5fe3d7a9eabbe8810deeeb19e3cd8f924149b7f61366dfbea551383d290a3074e1b2c08cfda941181a2af728293a8b86cda3ef3f12becee0fbd9515966be7ac0b51586c08a433afae81d390f152f099344f82dfe65639ae1d15edd2e302dfe8ccdab8b379f5b461c46231a6e2f33b113e07fe2da8f6a7dff5f6c9c77a6485d75623e12e61f9560a74b97771815bcdeb7061b0d1f2b3ae2e394c02f38e19f9a1d15d5a0e9804382c7412789caaad0125542777bf55f7e353d023b91f48a15c1048ae461b06d53176fbafa70672efae7198bdec32b48fbed66696fcf745bb5bf82ce2103529206e3c4936675f9f79a35b8fe48a72c6a8543fe9ba8b0216821f8ad2b82ad394718e811d68e3fb2b3bb101af0835009811933b0dabb622be55bb2cf0bb1be86a5981903df3a0bcc5cbeef311238ce508d3a670c9978a5d38965cf224a86229e7ea5e71f24c05874f4e182ff429ae954b16934ed8edbb1bef2dc7ab6d65ebedd78ae6b4899e6e4f61233aed3b1143b0675b2d413a8a00dc44ece849b08f1b8b1d0e782bd3c1acf0c56b0fddea5af9cbbafff906b0fecb4d0cb08d8b348fb7562e28a21da54ded15f95abe54ac37d4507114a3cb43e69f180f627eec2641223a9329a08559b26c4cb059dc3f5037ed54128503e1bd4962288abf946a1630b9116b0e619a4c667eea51f8e3db48898b60f38d00972e146c33aef48dfc785c4fe9e6dcf1b55e22bed976b186d128cdb2f8c082abbf699741531f07a68525950885cb536542752e7c7a6f7c84dc2d738bd1f9e465e2842027f5751046a8d75f178cf3e892e1fabdb6c6bd2ff3feb4ac469471ca01fe5c9c031cbe484f19b0711f19cb1747755a5c329397b31f30beec5f36d09318ff0e4c43e9fae0ccfcb4b73e6ad6ffbe068669834d6804739272f85dfa12f311bd7f89aca69ead16644aeffee8295389cd73a61ade4e05057f9b87755406429565d69b581712a1ae3cbfceb1c8ee9426bf9bd1a6659d22c7202675af17d1285fbbfc9b42aa331663dec3bdf907e1a702227b535d655ac470eca67f74826894b57223691e45d1ea7feee91d81b8d6aca19713fbfb81c19097fdd099a0fb19fdf3423cad69c2326a187d2b23220e31311af369ca9579c07e9d44ffca7f9303fde9f97ff1e8e98e07b418653c01dd6cad36fa06d37c1479b85e7cb19f56a6993606fbe7c2029f90e8e713d50b5cdc9553d8e07722dbd1c44dc911072a5850228b8719b3e6aa3cdb3fa75fa2ef0e3acd2d75e7cdbeccd0aab6c88249922bbd3ca12eaae79ecf9a8377542c521a13c9ca8ccb061db30cffeb252f3d603763bf55bb29fec9fe7a05902bddfa513b775b56c624fc012c87e679ab86b15b5f878631de3436644f1a827ff46ae671b794a6cd43c15a16a4628bfb26f420eb7796bc6747288208849d1bc00173b665718366a3e047807c2052ac4b0a96a8e6e61ccee4336f6ec8be609239842eb844220e54dc98526b597d425ff8eb0830c76a46a266f620d6fae411b9c1e8c5750d42a9e69287727c56cab474c5e9fb2b2c0b8b92015eb66dbb4304fca6e2b8201d802eca7335451b20b7574428dbfe985799d9039e6c959f6944a40c28464decbacb5e6641377512e80fb285cc53f42daec0619d775deda02731fd6efbb20ea48cec6cd4501cc036e449f09f0f76d1883ca75fbb9dfb9c3a5c0983b3c90ea9811eab12250aad5b96cc1f276c859595032d1e8b6672481dbf3466927baecfa7a46289f2e76e7954ff5d3e9dbd73a9a3f256620ccb2f72aa0b1d6f5803ba16e4952a0b487b8db7bf24da00ee23558fe748aa6c18e45f1a25404cde14d0739aabefb08e28c90d72da0b863d1743581d7101c6d296d362ec650e3615e84d5061ea9a0fb5d6bda60670b32b22c4cde0046f3966377327eb83fd1e17419f9c3f4ce110c75aeaf0a7f42119962067a60485b398ed4a7c2083a39a0e6e8f3087207133b83d204fb171fb6ad918ebf4eb0ded2c82e25bf2e804bb90f47f72d9a5474554c338825be2fb8877a8068152bffbeefb886d77278b1ebe3838d0f510f7fe97a0ed658282de4d782dcb3a4bc85e00c211d2de19d362d54a26b8ac22c0cf005dac13d5df61e20520fd8891480ccd0215805d276ffbb501206beba37472df00478fea7adf2e59d5b055486b4ab5991dd1e4ad5d23961ccce362b2085e702920323a09ada4c3c102e4d6a82e4129891fac9be73ac34260383ac10171dcf53f7a5e1f0eab19cfc9e7f99977c39858ca0b8b9f4c9eacc087972bdc6f3b1df7c29b7ab7ea1368e9aa70082ccb18a5d82097b445ed0a8f02d411db6cf104322520027ead4569018fcba09913ee9c1e2feaadd33c81237c018f218d40c02fd524d6a653bb73973744240b9afbffc5ae602dedc9799f3588b1ae18fe937b633e29096d5481be676563ef5c97dd5e8d8c14f42a52fcf6adfab9789908130f0c07650bb691e28f0aa757b8d14ec5faf128df04e97295bd9e0ed3851b9cb6d2d91e0398d0efaf9f942246f5ba8b07b071eb85b6e5c019453d43ebbd6b03fba23cd099e38010ac707de067f4fd5506a594fe4dfc8e71a98a653c7628277b2866edd449517f0d32412134960c9570dc71612ca8fb843df89e143387b64318a890687afb8ffa02091341b4cbae0e288a89e6cacb732113bff9ecf5987e88fe9ebf6ad66b1f116a2e9580c39b2c0b717df5b4b81200ed98c125b379253c10e7496e780bfcc05843a189e8a8e2c5c1568ff5616928c6278011b6d3f96e47ccf6d21f589d7424581178b8623830d679b9d07f05025e7143a77920dba81ca4fee49b1495d52e350fa3cba0410bafc8115dc0ecbd85b574660c3becfcf08c37bf7136c7ff3756c86cae40dfb8488acf7c47c4552c12766dec8f859f8c44ffb17a2c85fa29073411d43a3ab15ffe133a3d6f004df52b5b28e38656f9877ef7376f8abe17ead8b62ca0dbfe12b2082eabf0b9e49e421bb13b8d1da75009d37c63314d4cf8dc3aa8499dba5ab6928bb75fc24a0cbf4058f060e2891465d54f16c72839c1fce066426f8a728876c2fa002bf420485ba007aab80c0e6c88d1eca6b6101c5f7f980718a89db96afd6bb288cd5c06ef501887d7ebe9cac4cb882c8bbc7823e745ec0c8063ffdb6005981f82d0e3cdcce9e009dfad8c6211c6a64c9acb4483ae938690f7334b064002bb78e91e08e24ad73645df7abb6a539d8006edf02c6c31e255ca2bad13603b032606262b5b23acdbda2c148e73afda368adf8b023b529e130e159e085bf6c44e93fa7c8e0317767292bf66f460453ad6de09678a50831328a60214641c76b1909ddbd6b539656112a8e3794f666cddfdbcd439f7a00d891bd98045e1c2b62872447a995dcba76bd46753c6551b42661704ad3bef32f6a097a70d7baaaf142d1a6d7b98549a88e464a199975c4a444045beadc07a62bfd791d1fb0de4b69bc36460705e3c1c3090242c1efc4071a310c292c02b9f5e3fcfc360c7fcdea0010796487f50c3da0339496042fad44365ee5d504ed4ecacc6ad281f7a0575aa70afedb79b6e23f3b44a9e9b8d9c8e28578cfc6a7fc174a296cb4f1c20f8520522d9c61f4fb286989e503fbde9a696b8d0be72750c5d95eda728622b4c331a55c813df59114e508e747147acef067d444607c5ac9e7f0f0bc1642d63ac7cae33ca04f722314f30af4142fad14351c94dab0f946dc078dfd0dc33649faea7b9ab4c263e994c645569b68a5b9a02de550aa53f77b95df467e5e08889fe34bc6abf0d6de2c359ca063dc7d484f63c56e4e78cd520b8d4df9644a4f0a8635a8fbae20edfab083fa26e419be148dc84c4a201432d6a3396b0cebe45d713f546000c7d0f65c3b3fb30639fca5ddec4897a68aad01ed21856ae8875d2b1d8a0144bd26dd760a37560cc8b14ed6e5c2cc55d4aebda9e8afacb22d7623c468e93c323048351d2b7e25776547178f4cc14376dc6fde40aee8f039128d0a08b5ac03e8b8603761563f2be68c11eef95798232922ecf62cb17303d56efdfdedcd160709066250583f382cd135a925ef8e1ff390e2b849b35675c5e561b027e77686c666fad98117e95d10e5111dc2db57a19ec1725f25bd7e635f295a581e480b52587c0d6fa5ab87403eacc461d3ceceddfff782a237996ed01bae3c7f8dd0bb48cd5a9746178b70ea1bae8bb0b4f8b1768513f63d7224ed2aacdf3dcd671d883ea45445ad5d2e42f1779979c70d1a4604cfed2820106d4353f4c8e4fdf09c8e84a22a7b8d36fb23335f3f68aa9e16f6e299203b6463f8f3a719cb371abe83fedfa7e4bf7cc8b9ee7af94a7f228b0cb521f43de6f811d0bfc173dd88e24f0f3980ebfb9b4a30420e09dbf24c7f32d608d553e5f1f42b42fbcaa259a0e0cb8d3a2dd28b3483394c525fcb49f36220bb635720450484a3e0a87c9b6910775f41362828a4955c7da11e02a0d1fc96405e09724d6e4b110504f81b73a2034472c8e075cee9670a039de0a6ec0e4d97b868f669d30eb5d3fda00b1d8f55dd5bdbff0558e5f07b5737d4e526ebf5c57bb92ae66105a9bc336fce1d238c789b2e83e79a480be6612e8589fe8b61b163c8f07d92139fe5e5986a6a2ba04599c0d2b1033f55ca5248e1caf598838c08841f5294fbed2da1ed1780dedce0ee1e017bd66f44c925c803d20aeb4dcc7b9a9e3fd843b941f7ce98a85ebbe6d4d71b52b2a89934854df8ea877b930399a0f90ea4d186679630905aadb93b8685bd8d4d2d2670e201af04c719c24b5e0d02bac55a0d6ae056821bee8dfd44b54f511cc6a69839ee5203d2f8e7abdba1be6d353b24274e943fcc685bfa5aaf4177f477d0b7523f3d3e394e223f2264d0442b1a49d9685f45b6e5d30b47ac1e5087d60d22dd4dc0beca82a2e0e5803ed3dac69ff6f90ed25c415b567ae5bc8d2db1b23017333686df8f5ea2974f6ee9cc6cf479dd63c9c6671c927a2fe7b93c2e5a6e402d797c8aa4816e03a58884aa3adbd73026e359d974e68c5305dc10e137711ca218bd8c17c1d99a687f0bfd5cac368bb4e462e761afd53903687470019977198bdaf219fe1cad2f1d6b8be192c482aebae986dd59681eec99a47dc9a050a8115aa267249ff0a58200a9ba0a3c92b3eb670db4b905709234f48aa83e0fb551ff8c8c11eaec1d986e0a53ff00e89c5442f7bd0b5f1d865e0044cd0f2d47f6fcd68c1234d756f76fbe41a942fe052b7c1d02d20ae5862359454a45b1480a9d03112f7c27b08afd51aa9c0d8512f63549c15e890cb26c5f0b6b8d3b188c0c50195c122a1f7e8b5e38b45b41440221510a3a1bbf1b5fe9a3f3e5988641fee4e0568972e7465569c73b8540da25837b35b04fa0a5dab529d052ab8eae7614c67acbbc7372f3d450f9e51e71aa1e95f16e1d4cd168efd42f094fb6d655e094d3f94c4ead71449a5da9ec9889a85b9ea1d378ccebba292cc7a5235f6f7a985a211705edd17be2bf805f6d6531b9d7f3e4a048618e3c86347a6e2e28b662377229f4e8731aecbd5377daef516ff6169640403842b6705fd341fa61016d94f367854bde22e6b490f0d8031e388cbaa97625c822a736f78035f71e74e24bbad4ea783063363f425f45551fb258dbd499d6648cd7f5f8441aa45999b33fbee39fc5d5b4be5c2318375fce0da8188d07c05c0ae59700dde6b3cdee400d8b0a59eb21786e587590e0ed41c6a2383c5aba2cbaac4bf4d7faf1996a1bdb858596e15990f9b4f4a8a6efe2b7c3f5cf9e82705dfe98b414a65707ba9ea353257434ee60a03cbce85e07ddae34e408877765e2ea7317919007667fefca4735c7844f41514c4723b3270b69a3d4faf13d46475297a628ddee956f783284b52a1e6155945fa9b7d916ec64356cd2366d4abc2984426936b0be71470615b35d619ccc05efdb27dc164fc69a331f9159f4ddb6ad4656aeb351dbd2c675ed6374bc7dd1a41a16608bff0c3eba4e37e18cf9508c9bfc87d4e3bce9423d8e56f91285dcd52e90af7596f3e4c872bc7ec1d4ad218ae2d0785d5bfa778af8f24102a14d1d58c766475b109c64553531a25bfab39b63452a3211a6a85d96fa3dd36219f77338f8d2aa8e1ea050002dcbde2313ef3d2b510e6e0501fac0b36f85372ac95eda87e41638b9308c3f431fb812e8fd9f61ecd63c8c83358c5c6dd18c6eb45fc6ef8aaa7fdcb589a0a3b4ef8cfe869f545936d11cbd0bc3867a6b5df9fdb2a14866d6b68fe4c8ee29713ff334a46b5e673ea051d1465b0f4d0ac77b4b30e2a012e550bdf95a40e41f45d2a7dce4dfb837824b5a9e5e9f74a2abbd1608366c2ea9d7fc69a7c9eb4f9822184d5205ae3a935038f3e862fcc21e41c7ebdde5991b2f2c2d552fbb9ad58ad08af07679c085aed8ef09efe01b08dcffaebb9e471119ad6778b9fd3a79c1e8fe0ecb08797206e2391e4a8a59a3acd1fe77780c1cba87117fa7f0ad7ce8b5ed61c5fa071a271190b1a98eb4e2cb203d35534b95a99072bd52cce475acaaf370552d7ad4a6a99b2adfddee7145c76bcec1e422d79a0d6e893f45faadae9f914e7bb376a876da37f6d52c82c24c13a8184fdb84ce5bbb5e505b94a251cad7a5cd6b6634bf7806f7e64f242c2a068110dea1320595a568accd2ea3b6cbe4e94b86245c035e34a686364fdd193bb5345e6076376362af31d5cfb76f504c836fd64038e448576c689480a5651cd51f50469bc55cb24eaa90c70b954da5bee839229c45b1af8ccc5b7c66d25ca5bfcb8dc8c183767e4869f03c9e5fd8a2d7288faec469bce1c2a6a6473705457044a7701ef52b78306ad964f2efeed91d73f4c170907df112611ac86fc97131ac3fa046bebc46a946c885dbbc2df252062a30949cb86dd08462ed7e05caa553e6477a3bece76491f387c5abea62aacd95448ae80caf2f12cf3440b97e2f8500f896c8d096b972f25ad9a08fb410d09b2a86d5e22fdd197bcb8a0bb150264011c8b646f4b99ba5c1ac952730dcee6cbd8682eefb7b88cf2bb74d830482fa7a66bef77e8d071e1f56e90ffbea9fcc901b6d47f6c7305f04985250e041f376942c25bb00e5e451e81a754c39d0ad369c2f6140e9481ef5584e9a837a766d3e21cf53f86ea28a11d6d05755fdbaf1464a7a9d570582cc0c6b3e00e67deed72aa404fa5f5f7a3e7fc89bf5b87d66cd72d4c6b574960cd483a87ca617b3ffc6f59fc05d602a718489e8acab983fec61a20d3a2c9bb8790a91bd73e061db5182f4c65bdce2bde111f19863143d959a47c4360ceff5d5b063e551d6e146b0220e0b3d01cac2f759609fd7bfe6d0c024a65839edfd3259e869975f7114d4938abdb8d597386c9b83335ddc8b2f589a5aa44e238a8c719c862bdf1a6ed8bd03fc6d6d95f6c6d78e8d7b600b14f25320505bb216156b78682e8f22392ded9fd53f6669506d47532ba7cf223dfee290377d2c6124d01af452c34f369c37c805e83909098b36b0bedd7a15deedeeaefe46405526bb545352d58d346b06a4bc1213360596c94cef8385a97261f9e974ca7cb97b88f57f29c214c3707cc567912ab9b9d99991666d7cc55988a7af38a76d9bc69223874c42f5884f76b3f8031037a453485bb6d6ed9bc4cb5e43015750e40de6fca3a513444492fe4cd68807b29ff9359a7d60f0b204bb88ebfcf21893a55ea318d0db651907dade809a714acbbbf36734a12396b0fb085df73cc9575966c2d9958c272b04bdb17be6db1a065b7fbb84d86f769fe52f694d71d5fd8ecf9ca0a0f575bd564f257b76d983ca928b8e4f4a26ec6e2b8830a3a46f3b3b0bd574076ebef543410bbfb8ba3f8085974df5598f01b472b68a26abf944470c97b37987a33f72c68fd11f4c7d0d2a2ff7670e7aa9e88b99017d875e090b22735b88b83b5a7a67f4f4dab0a501ef96e8b4e012b00767c2c9f842e394e0763a5e7c9e674d8223a0c4a33fe36412f9f1a16d963d7c6660091ada332ba2d2e3edc3726504627484994be413b286ab3f3275815a8adfc9e14554f34b32c96df7ee861493c66ff81381293c60f96ccc9691c3013daeaf6f0a22de1650d3515a41fcc052f69b74a505b34b837c8de1e33dcc820745d2cda89e7fc028cb9542b8dee76a85aa1450ce7a1639cafa3f94b54f43ecf7b08c725f8c96f16e309e3cddf513a3270a76fda1cecddb7796a0cf2087f4a85b060b32782e001c3644d80e38e07006f5ccc2c5ea95b95ffae9903e54599b0b20b9b5b82cc179574acc8c5ca85697a8e0df2a2d5b33f9773e2b564aa8bde0967ba41caafd038afd9eb3611d3c2000ca5bbfc5790b173b694dd9632fd2803c8db6da1f27823c7bc65efc4aec14171532ac1f4e776944b16e76cbe234c4d84dae73b600e7f8bf16dcf32b8504fb608207b035b4f814967fc743c0c9b39eb57718b0fe055b6e78e5f920534b8a8167a1258eb71873d8707014ac460cb1c6bc68f67a94eabe56561c76cbfceaeedf58f5464ed7c684cecbd4ef944012f7f2dd87c4230852a28091ac8e204e9f4b3aedfa1a7a23884e46d922316d4ce03a0dd00a2875119f26e80d666bb1bf994825dc7520e710df14f16f82eba78a2cdf293f213c3f141e4fb4c13d9814f3c2057ab403aeac3becc6a132bb9035860f89cc8c2d4296d7190e6384c07036680b5226852ee6dd498932615d2b992f19393f815cbd90e68c7f09c1dc5add623f75649f52a8230025f470bfcfc240c6ca7c915cbef026c2fbc285bfa347acfe0450024802dd0b0bb7cc7b0d7dabe9af10725364e367c63a9a7fcb85a4de28a2c43227f0c7c31ccf63aaa4435c1b7681cc9ed514fd575b4d5054c1a0d5834e78214a61b4fc8e74939fc5c08be5e2b297399ea91ca28ba44de9a723c29659087109e5d2c58758d4e31c14fd325335f91f51998d5da336c9fb7d816af66c30d538776d3dc0d5497e8dd77768d69a645dab8ea792e5c9a247351289655c3bc4df602d1c0c77684528747d778b45d595c4094fe80655e3cb61057f8f1e779d1215efd0e0c7dd445d07fc8c97fda8c897585dd07a37267dd1eef7fb3da7148ebb83f53ec16048ebfe089e5a7ad2466a25d6e3510a70686818b28700038d10643fc9058774f54ea0c953fb6c5f4cdbb559743648ddb02346ae3fa28ed573b8df2610bfd466bd89a15c0a3dd142ea191d599534685e2fe08ddff4709e8c0b7ea6c80b100a170f315fd949812dd07823b09166ec89200c33c1e92155ea87ca2eb561b443882b579c132d16738cda2e7cbd7c869f4dd63d1f948bc0e83689429f07937cce1ba4832ed6cd73c07e77958d2e1499e0d59a8da7fef8c01931361d112cb00130991cd5a9d18c0a7440780f369441769bdd4764516ade05fa84844f29ec0f229fc9aae242508ab1c8c0c34ea973fd8ac4fbd7cacce13a8bead555937d76fc0e0cfc3b032916a8d73a7deca03fad9714bff92225e17a0335abe8baf1f0c2def50f4ab5b1fe2554e6877d87416c5db11b1526f57de1d9cf28f168fa97f02a8f355d9d760f5166e431c6c56329313bbc54a88298062011d056094842ffea9bee60ca35e27b7077306928d6ba1f983538c0713ec1855d5831cf3c73e7c982380945aee0ae6d90fbf2b3314ffac60278312dd264de0d5732c691394cc6f1c181abd65a51f42c28800994b91d40bf0bf067446553c73352034bfad5e0b7cae5eaadc18e4323d5114b81a89a7400c684f2f6bbe3957197cf981af53d11e7245f32eb4a3ecd05855b7455e83538c3f98f54a5347367721e53c7b0dbc29f0b12e3d0e1bf92bd93a14c48ea530c44836e71edb42e53f8a965d580d3d421a177f87a5f155514ec7c9c59486606cc315a5ce02f24b23bb084509cdf7af623ace88c57dec4ca6635aac1616245877ae9cf75a7251a28d689a01bde17f2c4007d5042f36298037144c54a6218e3d76fec18daef624003461bce18525f8d22074611760e4968707e509408ca8883ff1604f9d7f3f71232d237a9f20c2c55aee0a83a4c919513f5e8ca2ebcead6cbf536098f896e192a712ae8bb1809ecdaab79c99112c0abc7f465659fdeb10355e6e9cdbc8526566cf7faf6ab94b5173c42e82c1ef22028f650f99919652286a61f49262a123a5f30d96bf30c95de393f3286c5702962d47bbcb390456e82bf6defff7a12e107cb63c7cad50ab4462265920c4f59648aebc0ad2407184876f2c368a9edc2a32c4de77d9db7cc6c2426c31b49c8dae4c02d43a407e3f19796d8d1bf5f00a3037a5218a5cad4c704f93dba925327d0988ba8562723ebcc001a111e485f90875e032f6aa3501738195fe2cb6dbfac5c23981b6a78d0eedd1d23005cce1fa4c82835b57139abf97c6f29d3717df47c4c86e709995f790252e9669beac9698a8708926659642762679f99b84b160750a2c8cb89653dc61d3586808b9f3948fd652f1427ffced04a443f1a6c4642fab41efc896f08aaa0b32b25a55e0b4b0fed600cbe5b258da595d75543391d0422d32bdb09ba096950bd9a3f00d1261203f5c9abef895f14e3e81f1528e23d6343c55aca34127ce14e655baa31f2401024dcabb8498e99f1433f7154cc0eb31c385920154d34759624b441b6032f7d4d5bf8a8f68e39db6f85c854e593f313b51250bb64ba2eafffe4b9683060360ddfd52b79bce1711a14b811749c47127b36534145e648d9fd62b9dfefdec8df12643fe5c6aac02a465621239c88b00209027ebc2f14dd77a7d71edaecd5809f2a2539ed9f009befd23174c14e1e2f9c4dce750ace10c4d46e41a49dc9d08b004fb3d2d16e985bf98774660880aaec38416967cbad478bc402cb68ebbe2ad5b5213f58a9f25d136736051b328c30bde99f14b653966bbbae54c97f3e77c6cef3aded3d5df4732bcfcf49d2837bcc775580cbf427d3dd6ba77965698651c5b92d9bb1453fa25024f9ba9137feb67e4c6abe6d17dc4e21d74460a4c2db2940abae5de57e70b9c2fa4616ba0bd99811a4fed65043137c7b798ebc51aa7954ff704bb17201fd27abbc4d024b5af89a652d07f48fc3826101fdcf76b2103a55018e591f558c7fac33afcbe84c771915e2c23d82f05d5ebd7a649ca890b1ca9c7561a3365cb159e6a5717be08d00dc5037ad9dd528cd70fc1eeea8b77408e5b040cfdafd3a861a55c4ff29a5dcc27cdd0c3b0cd7da36691ea70be891472ac2bba8c98e962056c20b07457d0213dbab6fdc1d407c0814c788ef7fd660f1284fde69a95f0ec5938cb6dab2d07f7a8e24d3be3f1730b00d80fd623b5e11ed8f1145ceff4876a00754698eef6fd9816be550dcc1765141e4d6db9e8a723ad3ec69edcb79954d0bb73c4bdcc9e716194552f7cd26b27f47ce523120c89d9fc06fa890113a4839d2db22c98e498e139b39ac15680aba16be2604863ac808abcb0f2a296989bf1255ff2f7fd6d4f497d0874b4c5147fb426b925263bb702ea5105d722f1cf691c193ce346acb1e128b5add95041019c410c8ff1477d71f51de48ff324d4b3246ae61659f5408e32776ebf0198136eb7047a9719b655f22733511e2fb4d336a98e661f16ac11f446579cde9c6370b648a846265b8c10a5183ac8448f62cbbc051aa1f122336b69f4aa1fb022a1d5e71bc087373c4993ca0bc6b6dacc9ce99db4799c07b7862a88dfdc135d2efad543b49364e8fb78bff471c81579f82b05a8a6f6e541b1708f7dca7b7214eb7ba8c17ee2b1fb129e988b9e02e7022f976e9b1d7ae664a0a89e8b33817885900fd88cd40bae564479a14ace87e1175e5733ac562328985bbc6786435df966efd53583cd44f8833d1387c27d09e19f180fd50305f867e82a4309590c2275ef0db8c1b8e2c5c831c729dad60fe8a8467b38cb3d9c39aec67f1d5c821768585dd4be94f1601a83b185e2493dc441f1fa20fbc1eb6a29af843dc3c49144c64572c903f92aabfbf67949e58c04fe79816f271c6d11854565db91e2c7adf7f6a9f3de4cc3114d6207a5ef3fe809daf2509c433af2a77e482d685dd1a50e980425294ea5b289ddb6fa71d2b50d8115f3433ce6c7611bf675ab2a2c936e845e17846184851228b14c6ac0c95cdd7244f21f4e707572ceeefd6806be75b6ef73be206c1f5c1cb85c90a298bba9703a58c5bf9677fdb692fb8067431f8651c45fce7b1ffa899db9079448a4bc4eb7067665651a1b85d23239ffdf0e5160428fc62ed3d4482337de8ee344b1c08cd85c1d4b44a56702c4ea18bc01f7811b576b783143e8c507258c76ca4631dbda7d929e970447cc5a3debfae0cc73d654c58ccf4cbd3bee23da5ead75aebb0f052654e1860cd29e2b1fd998e81358c19a74b55e53bfb34dede7a31e9b4f89b224a2227be3d25fb06e9e4c401d4663ecba8cc2ef823fb9db6b97de149149f85814e8cf15775ac7f16c4d52ddb3e4b5b0b44b20d204b3ba676252456cff240b5a41780326b13b2b28b13debd44d6b521f521d5079b96da715687b44959482e9defcaebaf1fd4e6db1ecb48cafeb03a199a96c686b69db75ea049cf76668e95b83ae7bc3e6871fb458007b9d939a95eff909ae917fb53b9e6823e0b3c1f6ae4f868a2242415dcbec3a9b9bfb8f669cec4b13ae8a6c609b9f3c69ae7d01dc85578aaddf2f0234db44bb219277b65bc02b15fe4823a7cbbe78f948cd9140bdfb2be6bf7cd53546e9ae87ce3a5406a050a62d534bc390c1922fe5deecdd6906122385822c538a00a462ad3f90cd26f09e39289663e3f5e6814dd5ea9d831b6828bd57e7491e367dd65bbde1308df108b7234ba4ba91dc6dbe5f1b79b65b593fa31d5497ea7d2e05a6d800ebe335cdc7148818cafeeea2e32876810ce56e0f51138806088f0cae1121ddbdd8d9d9d70bcbf166d16bb06d34fea8565bbb7c648327e8b1829c3a0b8891af8ba03083e1a104c9098aa0a1e63de08d8bf1c977dc7e5c4b00bfb7cbde29c15cb70758af36c5e7e2098fe01e4b8b1dc2de497e064b61316443f388567a738431b8d24ecd3affabef6d4ab798ca1456691930550396eca309457cecc7ae626d41b4be55c3d26f21079379cf17351cbca75b7e9bfd47dbd9b3a77e15dfe2df7ce51477a1689fc8ff2915b438b2f9803925798767b7f2442801d723b2af79c306372bf9c80a088512b247b742187525b39065c0ada7613c1d358854b32189b1c195e4172ae91429bfe83d788c0a903f7d1ab17a53789c11cbb5ca12f46fe04529248f1142ba19917173633ee3deadaed4f614c2ea88b9e1578ba8d59eaa5e4aee4bae690424309c31dea44814feeab0dadf0faf526b805ebfe65688d93499f12d34df788e4682bb041b28bfe167ab91219292c0cf66dcf7c797f60ef346d24f8e4ecd64322f6530c5fc94f3e12b792b524fbc0e50f41ed16795e472076b3f8c2bcd3672b8654303c8bbed312eef3257d35ca7687745122c39799a18d203a084762901e3e15f57fd0173f7a36c6d8aa2a58245afbfbadb3329031fa12fc123ddc29b5dd2ac0b362f5ba43209eff3d2e7d68e4cff716aae513f930659a32ea1b647a3fdc0944929ce87b3634556e31fa10ad1327c7da14d7536b003570e241c85c38457c30f6d5a720c67ab076931b31095a13bce385b5ffba48507aca8539cc0c8c6fa83d4c1ccff0a6d2f0c92e8bb9890d693a5ebcd8e1b9b5ff24637bf536af6b4f48b090028c414d652bac8a564dc254d7ed495dd7e08f330d46d6b3f15a004dc44835add529385947e217d1a3284f86990d2c9a58c2b090fbdee52001bb89a92615b147addecda007a967e8db1bf4b8dfeba98f4612636b61d6ac2011d9f596ccc95d5f13b7411575373ba5677defaa3f8177ecc57842f03b858ad95b77262c7b61814cfd0455238d8bb1e646d9ad398160df2e5a84567771faf71e42192e641b643b694c7f220279ea8e2b971ed38ddd4b2c82974ae9dbac9403769349ffb3d89364134bf2dca0e9b5af5ea448c36e820b5cd368f031c15af44a575bf290362eb7baa9944720ab74d3959a0c86056b1f5861bdf281f7af67a9d5aab31ff721c7a8aaf1e1d31c35376bdc0198e9d9a3508bd85ab3b0764704cc7c7828e58b01aa9cdb115614b1cf65eaad7a7b444f8f783610e55d0ef8fb8068d43c6b460fdcec6287a4366e69e18b4f74130183c8f7ad752c64a1053f8a931e77518f5cc2df01026f35f7ae2ad15eded7faccf48a6c890ffa82e280979416aa67e69f881f4fbd843dd966d7e3fae443795abfb8b22ee4911fc57fa89212263cb8f83f67e21afb811bd0aedf1e28741e786cce45acb7da5d87b50a1c2e91275ae0d803c89148dd60fc74ead08eca7ceba82476a8c2c0b5b8c2558c228fa7bbf58a9510352fe5e3a8259ec640816fae312c864c09552b053adc0e1aff562ebd8b05338961047ad31aaa8df966b0ed2be6b39027f10ed8ad62161115cb3f1950f5d5a4ec9ca9648c4179e192d3b1f62aa52d31100849d39c5d9fb441b85cfcf397d79febfc588c3380590fee210a042581c24180e8c5963e80dd08836d6b592169e2f8803d908f4a8ee61e77f0ceceec8dd45b0e2b6d0314c6cd71f4e58d2fd3d882b7fe99db678a6d7d3a1e1455a47c469ca0675b4b7d0acc3a7018c7be6d3a1cc3d4b4ab56f2deff041ebd6851d10e2547f5d18b1b3f2f2ff3057a6cac9f89d30d2a8879d4fb63190dafbc94fff722242ee8a6af5614ac0898a01b2d439f7985b9725e3d208fbe1ab5cfa3a86a17816fa03769225a1130c5b9311c58ecd7f3468a5a6243478a61d4dc5830a345194980e57a0ceb9d28acf5a804e6957f5e10d3b26e390e5b8a6a0a9ee2894447c18150d1d98538a446fc2d194b2de052c940ec13ce72f2cccb0c9d707ed98348bbe6281fb857a885389270a29ec2dafe0b24c77aa9163fb1db9ae4ef8cbf90537212b4b88a03fff211fa96cd3df0a0b2c787bde7c16ce2ecc7d41a4362e42007341e3077bb710f5ec7f45ac002187a217caebbbde7d88aa9bfc833b56780208a903549347abeb88257a4bd3877d943218ac1c4a0321a9dbf3f7ccd4937cfa9656afb2e017f2cc6474e66643cf7257ec5fcadbba03331a530e771c32f503149f0f7049aee1166e9fb61bbdfae7b1497dd8f1f5ac7136c074c5478041244b2de28bd8afd5a23354a7d47719b09ca22c09e89377775381f0741275887f0a82b388aa59933aa57d2e110dda2998d2e0cb7f9f487d6c39c1371e58d5cb83554f0d0147cd0f9a09b88463ee2acbe5c1b88ff8934794751d7470190d7e7ce9794ad57151ee97bcbebeb539c4d165577cafdffd6ff1aaabc86e29b2354a0c067e7fe448dcde6dcc78fd4558ad3a5a63f0f954f23c4791cc8c585c51625ae11fd2f02cb1b7a1abd232f67d8ce9577dd51702bdf97f6f09b0392c742895901a17c01064f9c29fdb9c42bf58712f1ea5ef48e9eb0f8933681e59bba3c6861464b288487d355323218d0d82c2730307455fb1005f37be81c5aae5278c923ed0db011975f4a4eddef016fbfc26b01a901a9ada4eafe93fecbc72e3693362d9f4058a5e68e8a71b6459ea57ff4f83cdb9e973b70dd433ff29bee57bcc4aaba572d128a565054d4daddb0f7bf093e87e8949ff222c35284193edf57f70c5057283ace615a53fc29696d376a44954ffa687800be9cd8d9096a894547ec8befa0720a92562d45d32945e70b8ba18cc51e04171d168c89e09828a229ced1cb1595289b1e0e29353d9e6293d11447f2eb7f0c896a1a227b1f2617fbc894408fc8d9bc2ccecf7f76b598d8039d3b43215eb473211a509a8e8dab6725ea83cfbbaaea511736e3f08449bd0cf81d273fc3e34d717c203c33e66568a6f8b0fe6b9eb421b82f2f4514395c29de6878ec33a9eb47615790114903a658d2b8e17a5dae4f3fc63e3ed0b19d001ed79db19155eb73c464d30e4a07928d680794925ad481ca83dc8ac62116e865644a08202286d4fbc98e358b5c686374f9dd698ef0dc53dc0b3081932251aa6787c58e2bcc0826aaa02813730ca7b16e6fbde40e0f2639170e33efa37216b8386adff3653ad499afe14d4506fcecf4d7273d46f72460ab270ebc9de14d9a1b33790dc9c5b46849c95270ee62a862b4203fa1fceb085f5937b0accd587f571b7a0af95a876988a491b5763819a5aee06245dc71e353235db59c9ae438ce28375d17eb68fd8e8c3d2d3838c924b53ac00d70efc6f4bfb2d8270d29cc6ad3ef484d8c431e19e552d51deaf471b7f62aa5773d88fdb1a6914d00de5022b44d6d547f5d8d9cdf4e8daa3ca94d46be0d9643ace7f77d7f58e769fee1f16708919a9d502d8e5004894709e9ca979efa6b308f059ce4e16340cb3f4b5134ddcbb28ebb565537408102fa787961b0009750cf8ba24f5d2f7376d7fe450abe421be05866a06f9034eeac2cfe7646d34ff85a24c8be1fb648981d060ca80fd5893e7365bca225bf89e0c2547a7858968f9fc6e4e8164c48c16f18d33cf0588ee67f62abf2b004e1b45501b077d0416ef0b6776fc3f3d2f73499b80a8bf232a2c1056fafa5ec84817af571117ade6c0a554c2bd890f591967dbd07dc1327b715e9a2bb6c9781bd6fea890b01517e00d64279ce9dccfd63d5bd53b76570071711227da51dc6c2068c2241584b4942be7904a186d0fbb7682646034b895079e6a9c6df15759781ed3bd92ac2f37a8a0d48c43f356f1f74fd83d26afcc7b4501fd9350b807575ce9482aca6fa7fa7a604543b3d1ba85fcb5a5c44167725c3bee7c5282c52c6468aaeea981d143ea2bb4c9a0c26e6d81c077a17bbf254d60a5f147783958fe0055d00dbf570d84076ef673159f7b4ad0bfe22207ae48f9038126a468f562981fee2f70536b3fcfe976a2d81807428310cd332db5beeb559463b5c9ca527a2cab8d9fae3384a68a383de24ea2e65b8515b45fe8f0755402b720783308f019dd006697188dcbd26933073624ae0312e164ac5dcccceb833de4c0fb38d261f1516f9ca0627614c3f32a490f6fc0ba3337b99b5d7f7f1c1091e5c75a419a372b78bb339d7867b432d604d4780d5bcb799e8128944ae2c8a6f25ccba9931910e08d9ec632a8baeb99c6ba5326268a34c620619c8614f4e6db513b59f0e6c8bd278c4512e2d631dea25eda1d85335821d3e8ad96000357a225da492ee858687b7a3fd050959e701b15980550a83958e52279f18e1d42d1ec278ba4bcfc5f7b3054e2d463affa7eb7794a713e2a491d0943cd6c2710f1cd9eb12b3a0245a2c8c54bdad8cee5a648f3f95267325ddac366b496904f91e0d7270d064eaf7158db89104cdb816f701e753addc67865dd65560adf843621a224cf864efa9ce90882a5ff96cc7352813411359a7ec01695a4ea1239a20d846208844a8fa7938ef451a0436d110dda1c2322539016c9ae73273d1a53f99a242d7d3efbf69661e4831ff5af290162805b65714a962861c73915cb9a2ccb9b4681a3efa5f15a41946087b6ca386a3dd433dcaf7e78dfb419899ce1ec6910f732953a02f2055c9086ac6843b6e60bfb25854b7ee93e7fececf56e1ac740f2bfc73e296bb18a56d50cf5660beda71b3205e8db05cb07de1a4a633fe8a1404f08163cfb49326bd916d615666301ffc12fd9bf9820a571e37b4f1f483350ca3b83f7815d19f4dac781a73c166ad37599411e68f211439d0e033dc6c7055f627bf7c549a26fa28bd95f13a462fceebc35d0115f3dcfcf66f039146c7d480e2a0a829ed23f4f77b21a5ea86800ba03e89a49d7fe31d83c93ae6ee5ed2e8ff4b298a8da2d4f0767ec69235311e619a9eabfdb5fad6a9f7b558232249525f59f11063ca9f90fa4b7dafc36ec00ce8ee0ec11ff9e6ae9824bbd3a289d68ad09c68beb0af19f63efe523d8362c0cb9bb07cbf2d0d54b91549e57b722e79f99ccd47e1264e78a5001fa5e595e80dc69b82c19353effc1ab72d586709369afbdbaf623fa6804c48060ad51b15c799de565f64da4fda680627059dfec48524c72eadba654303f9dc1b204d4617bceaff9d2924d7b5ab579484e4e234b7d14991638da9c89b8bb5786fd3e9ec1142fc2b3b05d69eacef9a9d042664ebe344b648a82364a32aa543664763c407e5a5cbde7d6300d966e7e61d11215810bec1805b2f7a84b9eeaaa0d96e3be83166c4566acd890bf1821ee4909faa5800a975ee9f8706e2a4ffea42e7a8c25855ebd1f76dda827ce7cac97ac9823f6ef2aef635bcadf78197d3b887b12ba86e0fdccb52d9a4e3ffcc48fd76081b2d55aed11cb5d18ca909a91cc159384c7486bee2a6616c4a92ecd63adf25a2c5a51ac676fe9bdd7d67912ab8255409bc29c1402cf8cb88447ea90c3c5ab0ae78666aec308e0a5806a6c631e78f8c8439c7cb15bbf508cc4462b2dbfc11d986016e4bfbefe0c099153767dee827d4710e90eabf306104fb44cdeb929cda4942ca079032a70b03e0b879474597781f9b83192c013fce3344789cc6b4541e0e4444e37e96da8defff2ec97144b3ae54d94d33150dcd6f722b3cbb0f44c5f17808345001aff9d19c7d13c271be8a3b389247166e4c197ab3cf5a62a74ebda8a20299eb17aefc02b4133ea6f380632f10d88f2c3150b3ebd924ba64151c1347d275becff325f191e182b2158b7b08abfa30716572b544ef2b0b7916ad8e4e4fbc6a0584d6203b663e2cdd24336a4ce7eb78c90f4450ca9fb1b83c240465d55b3fa6548fa72a76a9469b2d1be29d6bbd61624be1b4df8b08d8eb88765fba7ac57f87b96f2caa6de50cd78fe9dfaeb9fd19881e24e46adc1e6e9a59a37f234686c87945b79ee73eb294040846971bf1a73127af9023a19f63d5b5ea35433e8c6741fc9467508144ba53d2e2522c9dfb0741d8917894bfb3ed42c3acd16f29c03d7c21786bf31a196b921ed96b333102e12824b5a933366c9a116556b802e9c5ffc4bdd3e37bfca945bfb28efa5d2c6d70f88046937df42b5d9a70cad47362afd77495f969b544fd8f64c1220e026ae6f640e1885908fcb1bbe8f8362f422f9893e95464a6e7885aeeb2edf848dc22406310c932a637810667e2122d1417fb2b9388a1ed960ebd85d6cf1497e7898bd9cf008a240648675f3196c149836927290ba1ad73a0e1443b453ec0c1f6c9cbf98092d18da05a8321081a4c7a4a46a4a7da91145290366d9e5cea469e86e88a4052bc7ea85ebadd13b6e6d6e3703aabe445b77a0f856c940bbf4d1a796e8829ba71f86b32f689ab3bfb1bd82f7d43947bb776a050057ae3110a4128efd041207de00323190a7018c95e9c23d180c8bd14f67bcf29106a7faa14358eaf4e540fe55f362c62d65eee39ddf231d8d1ebb3d661848ce847516fc2d3d230e55761bcb8cd78ef8ec529993260873674ebcfee08125495f4b2fc42ce04daf4e03f0ad6c2298caf13091234dc1da76a2ad59fe0240a6f0519d44e896110617830e678514fcffc6ff8bda6e146aff2a18baff6461223514b6afb192d55612478bdbeb46aa3642e415004520bffd890258b514beab29f41a81fd22279dde2753c761165349e99db249cfbad47a00be00b6970ee307409a3b0aa05a043220ae5f9c770c94beb7c7d954dc8c9045b414b3caa441a68d73d3b58d37b854eed97fdcf22e55840d35032c159bc07d747f7ff4ed0f3d1cc9007ef0aa63a573bf5f5d3eb8410b35ed15169d0e91fb1e2da320a7bfb067e13c2d8e4de6cbe849a639eabd5e8e409a47337ff0e5652e37ed41f43ea4c7cefddbf1a21329b82181391250e459a4a4acba5c9b35e48361c803b6230d42d258958e7595043f39ee7421f5e0d6a260c0ff1afba1937a4845b61438fdb80470ce66b2578d1757e17d569ddd5264389a5844ed82a37ab8c467cb95d5c9389a566b3898ca6354870c930dfe946ecf99dec9ceedb6f309d50d321a54b7fbe97756e9b4047e5ffd45b9340029e14b344d3e6fa188baa95fab1d0ff5f0b76e1d526f37e8ae59930beff092101803752e5b2966ab63f41f9037435e035c4ab589a5f44e7fc4076a8145c0dfce59858b17d25b41e4d3c09d371c23134b60b0ab9a31c2d82a664f283eeabf1e138d5a48cf42da7cad62f494f3214825611881cb8278809408293f70cce62c2df1ea4bf17e40fec46a502e1d94af433155737ff94742f9b3c395270f1d2691843fbab79d33e692629210fb9681545eed56b5c0c7c2197c9c30a765a03efbfb79b7da9fe47b50015e8fc6c6a0a542d85386f52266accc52c08450fdcee997cafb0b3c08ce6e208d2bafd09fc721d0b9a4d9a013bb64f04582eff30340299300103265a521a3faa0f2fc3ac99d41f833a186f4a55e0f5a315545ebda6f7b6c30957cefda6ca7092bc25c481d2161d890a2e686f97103a6a889a2033a0c8c01f4071b080a5a7c78094471f03f9bf331b46e5fbdf08c4fb3ab7b67fc09950917f54e01f22f336cfa86c1d65da16572eb2bec7454373c40256b12b40a0f4e2bd585cf3c81d4a95b43e78a066d503bbe8fd017cadc98c96ce21cc4945763cb3248c94c41a0483e598d0314c6349d0269cbf5dd8137a748cb96e08f677fc1a293e06b53c6cc34e0c114f7575d778b3871f22ab9221eb121b22fb49f9b139f0b73f1eb33649777a2ca9adb55f032156833798b38da9d08957a617884d2161778e03472cd3d27549ca0e495b83f133d57b97b9fcfbf9299f0ac22053e9683a4707f433aabaab4f051993ab2fbc4fcf0d31936cc918031d0713c2f4e814bc4ac3c5a208b36030d253e1feb509f9685bc4a4f8c54bbaf82cf0d5e8697eec33cda213cae3fff661499571fc7223dc1774b91c683e929d2e1f799f2eab929d8bf46444137df5c933d33abbda37590ca52bc8eeac6ca261d7ebd0e52637706be15767141e445eaa613d76500d950c3e3c8c2ab1c217724cbdbcede82bbdf3a637b20605a48dd9dfcb473e7f1c5a192e8409a34dd08ed51db518b9c8d01c549f121cd2e25d664801f5062b97349781ba954c81662117b250b8bc967aa0a4097c3ac3c2b12664a4436ad14829d4a53632453afa47d752041db08eedd7aeb44d984b6a32cfdb4923f2ca613500c307ded49c0f04882937d527b9d518660804756dd49b50a4ce1518a4ba74dd6f76a78ef90d09f53c36e54d08af1f7f444e9efa317687dfbcff0b343f233b5733ce87bf633f0434b6e2a99b7b600961dd607dfd765870be2314a953f8b5f2f20ca9fff0f283eab6bbb9212aa5e99e8904e03835cfd0eedd7e83bab9ef854d298110959c7f60b8d3cdf958a1096e05a9e5ec8fbdb13d9777b99723c132dd073651aa2678a7a5ffc69bac58e2208ccfc93b0840ff3e3bae4cc438569d4c6a58791e56c51471d75aa4800d7c0f57faac996cf2b2f9e44f639a4d46b05821d394e32a26c4f55a13af9af6f25b7f617983ecdedf48a920ac4050a8700fe7a5a055314022a8afaacd2dd13c52f6d6d5e0b41d623da36f55ed2e8fc00845468e1163b2aae35062149149308401544ef0e4a55c6481c5f2273bff06d3e1ca6fe848fe396739da00c44091c9af11f93e05af024256fbd8c767da2c27d2c504438c225d06c43771b24f17096218c36c8671d6e55a56805fa4bb78295444e8bdd8982a1e97c885d3a1f0f3d5d8218681874c186ae906ffef69d28dbfcaee39fb5d3b3628ccea7ebee2bb616fbf8c767c0b912d190223af75d046a1f8339d23e6e115bd8e69ab94395dc0fd5ece5140bd5c5ac3abc4a490518f929331495fe825f0aa50aa8e5a98a40f14209343e88cba38b3d816692397db1992eee377edd668084de11fe0cf969174e6d74b98bc448a30d5bbaa11d3a7cfe56c19d1c51c14adfbb2b9be4ea458dc0b0be8e7fa7eac3f3033ecb1203935fcf44ee827124d173aa204d69c361a426dff6c600a59707a26fa24df1f773514bb5fbc4501175a588c89dbdd15c6e846c9f07d32b373bfeef4be00a3b7f6ec5a6d63ed5b17cac3d1601eafc3c0c19971653b2c39fd4ad4ad848e3930e6df4799bd3d775c0240c610db5a5e6a954e0afe11d1422a41f8d10307270aa9f1200b69bba5a008f85c7844227478d29bf761a0fb25655b4008a20ed6f84e27c94b161d70cc410a3105700eb54172e6109ee3de51cdac5feb8ef04a866756004816e60c7d2220473e74db0265ec1790ba4a9af2ba31b6ae5c40ab020684058eab6ed0da6c0c065ec653c27727e369b7581b209b0adebb17f8e991ab773e451b69b6991f36a7ab6f07c69333395e81c003446f1c4c5c40417f0b0fbf306ed1043a27227f18a39fed2dc6ccf323e9d0aa25cbbbbbca15510ac86bec6ff3d8edf42211c582753c3e3dbeff38a1b7a5b7465691509724190f470d492472784f4e7b6797d4ce2d34c9bc9a43b18fee635c5e6a3e17cc31ad0f249339d875fd4a938778dc11bae6f87d84b0909f2cf88f336d68f37770f56e9a55397c322bd89320baf853ef5e15f171586b42afde621d9097d99f650bb1a33f15b2180d5fbbf43e65fe94f821049a6e89301cd9f801b150e32149b27b2ebdec466812ed9f643353fdb03edb798df03e4fe192b083cfe8f7ae48844b6e0132f8e2829b396311491504a9b3595169c065d48d066439e7a23039454c712b6225eaa8e4ee6525371e2f527f76ef9ef7f1edd674a91548f017a9ed896e366a978497b35be6cbba47e267fc3362bd1c9e9cb70417c2eb3dbec18725a70fbe6b3e330cdf07de8a594728098c0f79457107a6cea3472bd77b13757e95791e258d14b1d15453fabe635571395974c190e72071047916b0f0427c742122118a176836fc0aff1a154dfbc5a23a61303ea5963a347c81cc57724b442b6f99dbf435a4eb0dfb06046064904b0e0c9d43a126c9aae20028eb31e7eb47c21e6c65d13e93def9b0335b017c90aff7d87ce4b173692fdbd1013ce009ee86ac6fe28b2cde55c792894c8f87312726574e0c7fc5fb20a0d4165cd686523f3ae6c236584b9ea3c04c3fba3510bb101071739dc09dcb48646f51d4fbfd54fdeaecd76b412b00d73bafeaf05570220202ed85cfcfaa5cdcb54efa922efdebd943d3b645dd075591858b4065f32897660fce12c6b4a99846788928c43c2281f67d342b73e74fc984b572978d98c84caf0aae4f941db165a264cae71a349aba989564fb24957682aab2c4069ce517263295b3c04e9bf71869ea92567a6470d4b94738bef0423f3b0de93c36f4b4134fb0377d01fa250be66a5dd52fda56a75d00386863d07d005860dec1e739452aa959da14e030192fde2d5fc98436c5758f0b6105e9782f423bb65a41544a0e646ebb937a35c6debdede0fa8d512bc830d8b72c66dceb462825797b84b4698ca06fe3d60d15ea22d92f3f4d0a4dbcae034865f22c8797517633d583db18e5c0a7733b3ac8c1f2fe963466e8ea83abe55375e8890f945ad7890cce2fc226afd92b239c94936c5f8141e4d250147e9350a6ce85f26d8cddae391e87123d29744a58110d2bf1f38b40467b60b48903dc080acc736eb61bb8e8c7382c7fb44a32a1805cb444335c470af9879d1843e50638161c4c6b0eb0defaa3b27a9bb02b25e6b9701389571da0a46ca466ff0010c16d45290ac7b220936fa665d60603cc9c2a9cd76ee73bdebb619062da0ff8add48cbc37de77ba17e308706cd399b0408ee1bc225469b1c297dd2e55163970478579ea6585c951edac0ce584705cee892acca12cb47554acfb9f50e037c51f0251894f0df52786f965b2cf8c39a17fdf57ad13dfd9b9a27869bbc493ff0d0966a56fd5854f649e9878a98f8525070ad920b81451411c39c46a53a2c128d267e4c4bff0c31d8dcdcb66cb78ed484d6e546c651c6731bc6d02b30d493c25f45987d282e226a6d79315b31371a00188b63db46a6e8454d0bd88ee80467e13c871bba93f7d17b8b3660e8a07eade5f15d41efd85dd858e4ca3cce4a7659bb3a41372324ddc72cefe151ff92ab6c9e780a11070037ac9b3dfe022d2d66ac8d3368160fe77e0c25ba78e18974e15d511aa4131ef401e7aa59e00947365d25234845e2c3dd755762f02f053ac9e7840bc81263981fa3fcf760feecb26235b52b5b3ab7d77afed121f80ce024a618642b789f1ebda0e5845a1ad8c68b807089b69396bd7b2873940e1f0e3e38359f3c49a290ecefc81d0645771077c7b4de81b3dc7ad8ccc396686315e33cd73206a896c3d662b9a09b816a092e4e70f694444664ce9c601caf9a356d352301711665a9ddc8284e60ed2b5d85eb401391336a02204382a9766fe34d2281a80356057286f5f0e3acf9f1fa91461805f6a47c7cdd456a80790cb3b4cb0d7d2fe05bf3cd8b94e8419b8dbbf33fca08baf2a43ac1c0cfd889de8907734e7013b5398eba7b884745b1c2f14162c53397fe28d8760b2afd5b97d08e0766876eea75d7100da0eb1f959bed32e56498c6b3960edcff0c38d23d35ad2f8569e6907c8c8697e3d474326b32ee0dc0754b6f8502cc1f40e2d39699c4487684a98a41c1096bec3b0c39187c210875cadbd93c1aa93b6564d26654c0e271df05f3bf53654a9f6e279c206ecab7ce10cc2d43dea7785445d27db05aada81fdba0631879938a568e294e3c57e35949bb1e51782b5c1e43abeef4debb8ab4274dee81a1ca4cfa9551e68b70f62a4fd802419ebf9ebd37f7583471ffd0452f450fc308cb4551d4fdd12003fff5383cc4a9381501d59b1f745d9aaa3bb233406e6e3aef544798390abc095b680145dc9a26c5cbde129038c7a44a031dc2c5a0f1aa9077011659d3a9d3ddd4f84ba3cb7b2362ff18bb0dd71f67a8033c224e429a78cd4ed75aa37d066dd4f11308517540011a7580db022d27b7a6e0573ad43723803e07779e877ce2f15d78fcf29075fa502811a59e08d960f66e06cf33f9559adec17766d4cffdfa5fb27267c697039c586cd081d923fb0e5d57e1d67fec3aeca5e0c93bce47e976c8af00a2c44834be94ab8da27f15f1ce77295f9e4f70b0b857b94041c6954187d10817733202286132a43ca32d3b1ce6a4b8e2bb1bee99ba6eba0282d7a2970435c3852bd979753294ef84739fff520097c8a3e41e9be082d72c702f819352034006e08786a9635ed1b4e67c38dbdff3d843b5f0d8ac0f02728ed0f52950ce0e54391f218acbc430342bd3a47fe42ff943c22b9c8a9d926093bc6026969d92f968721b2a3b6784d2bcec62279cf092a6885f1e4bbd80c7f184ee0b9475c524f784343321716d3a419b189472df43afeaa9e17b53bc6757a20180599fd7ce3502467ebcee0a655536b8453a7d3ad28a327e2feef415d6861eba8b5935ae462f68602819a266a7ad132d450a90c20f4ce2341746341b467011d4559a74539860b1179488a0ebac9313c9b46b1a3251144aca64294567bd5a4a6886704203f64e03c6a910a28269abea8e61faf767bc954a9348fd0953719e4903341c5a5dd1e9885927184a18b926c2347ae17ee5c846efb60d47777e7bc9b225be9446e5e3a562d23e8c821edc30f1a5917aca5050555eb120fd544b9ef665c277054785c7c01ec884ab010a049d247f71daf8f42ebba0d26582ed6119888ec4214555071f2fc0e32ed08bd4ef29b495bc357d3e7416efbddf45b72c8eb8c98635d2649c4ef7e861a2d3937a98ecbc6e61473c41232762e9a540eb5af4b3a35aff1d7858c4fad29452e5d57cedb338c4dc22e333831420222bcc47609e2a0e05893059b3d06f6062efee6960a177b2074c1cccedffdb6108d48af4f34d901f3e54ef99090f8eb3c4e3df932f062468d84fb0d06d9a8bf68fdd5c998f58795e32e590ff1b5e2f6b47247a49f6f954a28ebe959a57e9293c7e939b3ff4dbc718031d07a48d6867d88e4d7afe47e3d1cab426636170a96de0f0d61482a3029bca44646ae766bd533fcd1235c9b5bddc528921728522dea61dd5f480e5655832657fa5afc29278a67b50fc035b5b36a6ca7e75ea23fc817b9272cc6cf0c52e375aaf17332c637bad2ff2751b9956d878a3bc081f932fc75945dd45d2be91111eacc6d8e1050c35d8faa72da4db46496df69ca3a6b111e8c1de8218d95a5c4b92e828580c7c25fbfd12f2c131fad195b9512c83da159e87c9a7a1e17919ff791dde2e912bd32af2e6016fc0f055208eedfeb1bba476f2a17a64cd8afd9614337d12a5152362fc85d9364bf425036132ae6c1f6bc819d00cf0b36e0093b47ab8587b4ce8c9dd5e722e92c604d90c432fc266a3bb0daf1e88513a40387525d4bc48bf5927c429795b2d0fb863c48e7d6a818f1ab6fbc2675e117bd2875baf09386351f586f79958f6b3360a8ce40a479ff91d97e409df58950df4084b2e3fc54bbd0dbb9b24ef6dc16913389040f1de0a5a3ce1c4738043ae76bc9ada3958f73795993df56e600a4d82f6d6f8c5c905297882f20a184a9ff69da493d25931515f16ae7f08deb2e913507a08f351d17f807ff079b30d3985680d96d2a8d608cc5be9a07aea20b7a5e329d608cf4124967f1e7e59e6d82e351b8bbd8c93efd4212302f29bda1e853ed564c5a3ce24c29768c2ca28a969d78f43eadac8bf4a7c503b5e62419d1e7499d564f9bc4369cf544eb4bbb1614ecc9bc4cbece1d7c52e1dffa41b42a68e1dfebd054dc8fe1e7ba02029dd7228c4d90150b05008da604c8ef2dbbc6613b8af98fcdeb5510d29d8d6c8962b1feb8e759116fe59c03e3d856f27a1b4eb76e674f9cc233e74c878ca5356e0821d5fc3cabd08dc54606feb82ceb19d2d0072ceba9300222862332ce2f83a2b5108c4ec381aa704e4958c80787f2c22f64a1f3d354057a1bae2a9a99fa9976f532d7638c8e362f2aadd842e6c984d1f38614d5a8eba67a51bcede1225d0981512105191df768e07400c7b58eaf68aec8a548907162418540d912aa9cadae2318ce8e1d47cd4dd9374cb7c5d17b7ce8ee421f925697fa60257b029fd64b90e33001e6a8c4a2577d91a148993c2be3b71343e06cd783641ab223eab034d60361209d2b1d33132937394b8e62c323302c2fd13d8bb90932f4d9d65ef69634a91585756aa5772eaadc09dd9ca01dd0044e51b7d9e8fdb478af9b6e435c359f4208c25b0e096dddd4632fd704f782c5509b0f74dac886ae6838ef58c9c69855f6dd5271cc0cd8dc431a4f7c8b904ae24455dd8c761e8f5684163ebc24d2c618f51f01e88a43854f7761dad0111fcd0a5e96ea724e73162aa42660901ff24ac0ed8b96617bd9525f5c39ccb8e04b36ad40ced7210b7d795eb5a703255bf4ec56927edd09fbe10ffe06bd257b72223c0ee1cb5352cf91f524f39ceabe015b87cb27ee1dc2b660219fef7e9a5185f90c1f824cbf18dac49915f8142c558706a14fc415be579cb2dc03948c5fe20e9e8793821dff43ba23c63877302d987e16094e316c22d7c8365d9a0434bd89352d970ba637833b3474e6197256f12ca2f28e601114ed0db92c2e6e418acf90906cfe3cc0879036641e598434b8dc0933302667aeefd6e7130d760dc0ebd5e6c0d6347827beb2238d5053ca38e7dd7e885a6b871646831cb57875901e5cd2f7e28e777330a4ce40125117eb47877aae17efabd907bba09ad2b71a9f2c399ad51330f5df98ac08d0f3941c2d4e908d62d845a6a85fc74738d280f5cf2bd3583cddcf0893510f074a2daaba84a229cc88ea74e297fecbade1627fea965df1e8a2dadd38f0aad6c256f3ed695bc5a86555895c42db51943c3a72e119457cfc9ae825c8b4fdd49e1eb1e7f2308b6ec2045f6d228bddfb73ee6d2171d1df5ff554e2e795692db887574cce7a76d2a0bafe2654df913bb0cc7b6ddfea533116f46186b5e7b9873ba19c78a0e2b34eb0a121fb737abfb892ca4c44486d897a2f66139c27a1d19d8e1acd0dcbe627c303b8efd9239fe8a90c67e3d35e9786d422d1d5794e6046480c92ed43ab4b030184e22a6afed16d39701cf0c12deb1b4aed62fad954a52f3a72770939224ed3e205133a75bb0fa6c6c681ab3f348ed974ae437714b1659c0cdd2f2bac41a085cae358fa6f9bd46f461e6522921be20589a058c7a93061a1c3406ec2025a18b078ae907007da13c7dcad3682d9cd437a4cac89f0e1dfc17a163b69ab3fdbb487c5fff2896f2f27dfd8012622596488653274b9b9ceb218111a5f563870934b9da3fe7c967f6651170613a885ef6ed6bcea4790825d663e6998b686751f930e0201cb77e5339288b36cdd57fced77294eb56e1b7040935fbfd66ca7dbff3a3b372508329d0029072da2bae5aa406f27cabf80f3fdc84a617aace81d38a0e8258cd16472e48a91a3fdb6228f7e7875529076884b2579acd76811e4591d6d8cebb7e0e5d0b331ebb86a660b13e1e108933fa282f7dac737a6b86f5ce4468d17652a2bd8758ff61783731973a15698c7c9e0bde8277bd8b3e0527b6a2fb8beef909730b8a6e5d085cf6e97bc60be299f616dcd414a0f731c3df0d09e1410216e6b379c34f3981bcb0fde5050528ff0a378cab79cd1724097016d4582c772aa821767e16a6f67fbb90143b330053a967694a5bdea8439e8b6196d6539d2bb8f4050aab1884e30458c4797285d8404c68e7002d3907369781af48be6cc776a6bd49d47a42e3193677f0dbe18291e38f7e4b5e62658dc1518d03cfff5ccd7ac8bebb1fedee2721c91215b98031eeba9b4a532cec6195d78ca17fccb49c85854a21cd04edde19f3f4b65bbf81a05d93bc2492158bcd2e14a484f4f4b5edae81b309ecc709b66c77250636099161f7850595f37e1f70af994854685ccad134aa7a0aaeb8697dd8b71237cc4e1908884b0ddd0d1f69b4d39d16ffecc0150f84b111abcadb5820c24e2493bb665baead34396e443d22286f4ab6c8c6c8ac32efce57ebe5e9f3ef73d2d7f624b0747104591f6ebac235fdacd3a8c8e26e5b0b2364c6b92a6d371ee63e37540b40aaf262cf69391587ca8ae0e55c6b9d17372bab2c4c7bb5072a4617a04a3102ec6fd526014dde0e8301c9e5cca7efd8078b6a8629b888ce2cf0e1f47ed6272c8cab44916a139dd8d28fd711f74ae863380b63cbbac9aef4d656d1d3d2a664890ea66d335a796f4db2d077b3b5bfbfafbffef55c9977adb704cad978791c299635f5ff6a81937ef4dc8690235d1d2ed74b40c3aea2c3b96206bb22b177b14c391c6ab1ee67c3a8d3fb47ab652690c5f46688b599a87dfc76e631b87a84aeb702d9b9bc6a14cd00120b787658748169c97f727540b7ab11f676a40bbda05ae6b9da265b2d7c794d6ae1cd43765e44d0b2f012f30383ea8b7ccd346f91bd836d3cd8ea52e38b518a6d43958925a3d306f27ec1e287f0fc6c2c38289c1bb35d70ac6d826564dbe564952c46629963f0ea410cf138c7e8edae67f5be2ef2095b2aefc044dc8f5ec7bf2638940c424bbbb1bd748ab238eb9bbe5a3894261759d1667bc7e20539a5cd32e453cc68cd04b46317d3454e031042fb56445567803af109780783b2237c87869026327eb71ee5591ea5eace426c963cfda8ed3a3018d8862aee2fb71001bb3a41d411f76ac1e4c5958a343c5c0a624738e93dcadd534868b515386dda7baa02810a66a2f1d83c2a5b98576062e80a5b071711a92d8be2cc2614f132a18e6b44427e45ef3494bfe0dc79c44c8aae64a7182e4d4a7afa90e4d6ad06e7078ffe99a145c677ce5b4792e0dad9d1af0f41d0333749842c40347516852170801afc5278b7a87268a263bf99d3a507ea05a56f747ecb15a40287592da13938a8379ff1bebae63fae307e3c1051b7c92f5d3c915466711db03a9cffa8665aaab496aaabbfaf37e0ccce16b0d6b344360c3ea13587a1299f972452e6fadaf6b9efc227ed185db47b836dcd16111f9a3263aa51d1a2ddf803b2199225674d2e59445747d48f8a09dac330153fcb31d7e3451eb9ce9b2878978fd43be642bf8a03db87b9b3b23313ece2fd944d9f248134d7c688070f9b5b09b2e128e682a5d335c692ae914b7c4d42596f6c39ac8553554001b54e5c11d7eed43ecbf799dd88f0bee94ea8a2d043921350ce4fdc0c0738b513d3e890fde53fc66a887fa7ef7a38f126e3e890db09385300a4ad7b427b1689523e0b229c52d7ce6718f7f5f7be98d81e1471623cd5b01e6637c71ef2cce9522360677715d8f6aa72de6cc9d1ed9b2ca1a31d8926021d424b33e6d8a368ef2190b29a4556e2c1127067007e5d3754ddbabef31e5528c6df4aa4a4c295152dc25c99bab8a83dbfd252f86af6fb53d71f8b92b538fc689390b00671d0ef4aea10d0f9d06e587f5d74fc5c725a99c7bd8afd1c5308a2c99414ebd712f92bde2f61a38d5742eb0f6c765af67625e13aa542fb4a76cf09437a9374941cacec3e4ef0c949c1e4b8869e15c25ce98475e8ad36e555f6a19a261c6d52857d98bb01586a02d6f248eb750ca5ccc9ce06443dfd6c69fa64f8eb9ff4998e42f4c26a70a57e64fec3dd31ddb37636e3419851d43c5f059381126263a09b4c5a94ec113450845c3c8098b138f253826eeed397e71967c758c529040e61fd5b1e4549e2f1b92ec7f06bcffb880d8663eb98a0cd28c33a210dd973f6559f646a3443864ae101521fad37e415c0ad6e3011941f35b67179dd171df541ee633137279d2025f791b7eff58dbedbb65eb0dfb14bebc888dc478ab42323d4ebdbae6ae1b70beb3e9302fb3c8a16472d10e75193bca5624ac0fcea223257e08cd9d3f2acc8a7246077a4cb6d3f8f655f97f0e965f7d6b4fb5fdd42eec4100d7f5593070c5d08931b70e19d4b30a107682bc5b51da31b3233fde98a4708081724e7bc3883d48acbc0f5e4d50bd6547201e9dfa99978a33b0765bae41e6110d4df4d6d2736e2bc3f3a40e6730c1dcd9d334f37b1b2c6ff30e7626adc20e4cabf2deb0ecd0a0e93eb52d25c3842e6a1ca26c4c59382ed413bc047964bfcde287c1746ea71e133ef2346ed446afe860a78a00ea2f5f0e369edcb6867ef5d4cbeefa88846b55102773f7f197471f846d804a8d9a7f05ab12414509fb003df62e4eb29001a49477eba13ac9ffdb61be140856f37b00a78f6da4e68c81a75bc05ac84389f4a43cb7eaa80ea11a77d76087997e41b5a8a75620f4cab45617c8c50a0845a7b7e26412e5f84e6c06ca4cae11e413cdd626c9f3c0dc31e7a9eb4501359a63f4f7c04618e2e9133441685ad84741f64b98e7bd4dde6847652a8fe324fdd7db9f91b5c42f1122009f9da60d87d6a74824f214d7133c43e0cb87cc3f3bbd53b61fbc694dd8061b9cf7c160d474d7ada9525e623543f81c7561fbe6790428fb4fefc883984b5d0ed98310dd206e950a9d420c9fb19979c12e9fb3f02f183cd540744b055f2e0cef9b1c0c0ad23394955a30fff3fbbe575222a46a3a77c506deef643fe94c5a6280dfe94d46cf69ab653d820beed3c66dc9308fc02dd4b2fd786d70a6809597cff70aa5b824b325dff4d8b698625416bed9ce59fb00351dc419108d066b83e3010061c899e10754687addc60fa6ce0db4299d4b300d036c5c43e396ed851d26149d5aad4acd4c80d6acaf96347235baf717d1543271de58d3ace94e46fb2aa02b2acddb904e77ae0054721321eeae075d8cb615a24b09489f30553d2b51302db9f025df60583e7df556292703b05e2cfbde43c8bc0bb1a4638413aff980b87083e99c10e5d475e9f1c4b212580f21cf1becbf96a99379d019cbb23d68ebd6a78639cb8c857a10fa8debda13e9abce0258ebc91113e5c312d1f043ee443dfea6fb933b4b0499e07f7ac77780c3dcaca4a0129b89c5bd6fdf121c29c5cdc72080432c3849500d5967dbf476bc1e92b9d5170fad1adf9825aa72636a093c45896a4ce53c40949592e9ddfc936f647aaa8bf633097e9c6c60f5f6420e284111b4d8db6def2e582eb9fb2a21388280e17ac2f93362f7875d2475a29f7a04c71941b549d747fc245d6e78774deb7367aa2f8cd338c89892766fc8f0d9715afab547e60797bbf80152c22dd71f80be5593721db96968dccebe5ab29f5d6ba92b2e4416c8a7c02c3265711e91206535ca31f793018b97df649d1e806e3a9517e424cb609b03c8671332da8d2a5de65a89d732cb35c0c9340dfefe63a9bb85724137b041910190c355ff95d37990d79399915cbe5e04e68e90ac5818a159db9d4977708550de235ff2b2eafa896423063383cb555d7e843afaa1c58f2bf29c5045075cdc98dae9d827eb111286dba14df47cdf629571db25ae7c2801f9166c3cfa7348b539161d1b5b2f4cfb2cbea6647270bc59bdac2293211b90cf6ea2d2d73684ece2718dcf753c04ab2b1cbfa429dc156007a0d1da7838c79030b4d9320d2b84c474d5915eb5b6f2e1a864bd2b6c41508d2a5ebb14120ce1cc62bd77d98f2adb396214993ff909c6a370519cab7064f9fbc942f34c3dd6771ced39b20eb7d6b5b4ed36ffd86f98d564bf8eb46dd8c6dd03acf10dd2e1425598fb6c23a3f42d4bd4ae50fc458625798829b30c964e97e2b587452cff92137fdd33a7b49fbb2ca1979b09c1551da4e1fca1ea23b4b90666384b5a15d6ee671ab5bfbbe15ad63018e19df809cc33391482827b58a365936754058444e5548986e9847e4478b915b8d8ef134bf5486965f8f4dd2ce810017322b35177689b0b8b366a100eb7d98dd4ed5bba55c89acd6ecd29e6093fda6c0ed60bcdc448b8a998e4c3f1b0a8e7b2d1bd5e4ea3ea2c57d846519a004dd4e8353186cdb1c83c9356f4f8c2fd1b760a399cd684dbe05b53007c935540ed861dfa3e45dcc8f6261495ab7a6ffdb5d12ea7e4e169e4e8fa2e18627593eb5c12baedc0bb719dbfdccedf626e1b69c077e2f3f4d12dcf09978b4415f616835b15bda8ded396d3d0886460348425c04a836e5a51f532bc37f65f364e8203faf6387a85c8db38effd6913d02ec0415d764f110755c261b29965d138a5fd87c6daba68f77f28c924ab0f24f34e9173756ba092d6ee5a93c466397c81f2cc3e30d9994a17c333c582534326a2d2c9c2b2ae2fb9866a85109c5e60e2b31ae8ec8168a918394b4d358331fddd4996e6a21b697eb9949f76419245501eb3c9bd96cc36fc2f6c35371c50e40063104c48c8f3faf1deb29b180aa039273950eb6b8291170aff0b5fdccf557f9c284aeb5c18793787ddec4d812762d0babe8cbd9356a577ac343806bad26d413a857d0f6fbd81391180d199fe0d75053b538a864cb75f487d0d72498728835f558dfcbd2e001569ca197f25a8044ad00e0e3ef6aec0ad9088872d1d28e9d6689f13b2c574cf3bd55edf68e60de0f25e13fd75dbf7dc9fc6a0510203105e9724d98c47ee3cda2be90775cba2eba83728a2823edc9556d05c342cbd98af1ec66f4f8635939266daa08dda208f1284679aab79f985ac1d8aa5b9f56fe16ff78c10fbd04205fcd483d5461ce0be90e10ee404ca1ba2103efa15861041238f24850fe180e5ba86cc84aec681daaeaa9b3ce1809bdfe3bce3e18a92f5ff4031ff391253ef0b0fe63ed39f8fea8f5b90873646d559d174ccc7c0a3d9652c199f026f722e9c0d41644ca387e519527c38fa6caa35be6aaf018ceffcf86e37e66623b9d33d5e7fb9456f551a832d2a05776b333678c2a2501c4e2f3a2d478990f860d5c8a44dbac4414cbcd0a976b12554852664319ef67e055e0792eb6b370d8032f41ad7becf86fab80893b1b6a2fde65252d0e79c08360421c622d4ad876fe9264d23c432473127f062e957d438a96809fb20de956f02678a66c5f0fc6a4b58174b1b8682f761ca6ba70b41ddb7fa5213a03cfe7caf43cd9a3d20a6980442531457bee3d5b8b3b6bebc7188212529e23fc2f0db7d9317cb878b09221475403984bfcc017a204a5cd293d55d6e9d34d3750cbdede3980d35ec39a6fe33e0433c04914dfcec71b30fd6b476968304958602bba9ca9ff94f48926e876bfa91019465de3d23f8628a5e4ffd62c29c55b847583939aa7111ed7e8e379a4a9affa2edc5d1a8bccc9bf879a4dfd353067488aa31508d62bad48a2a0460d8af9b661bcc78b8821dafdcdc9f069da413616a540e87c0c38cbfae3f9cadd5f1eec4cff83618e402b5169fec5e778baf51b03630a9998bfdfe4b29160f286b0e5219e07a098c2ee4f209b019837e08cc05f10ee7bdd42473413d2b65c9a4867541c7ff0bf6dd93a3fb7e68469c9491fc0a9e28b472f571d28bd5d1e52b5fceddbc604e17777c64e5c8cf0ec923d76c6d044815ca3e008872d8838808e2ccb0349ebac4b585efedca0974a257f65df5e599d869e85928930d9e0065edb5c7415fabb1675126005404ad520171ac82acff8c6e01846beff26157323e803966b64fb494be904cf4d8ddcc8f59831206c76f5f621cc6d2fcdaa13b5a3dc219ec106460f9621299066b5e8f56ee998dc37303207614dc0852594e65d6c92302ddf093668eddc819d790bcc6531070f9f85d877f7a96cd4b4f443bde655a2596f0f42cb15ebecd7841ace5024ce77e0bf62791567fe08e482155b500f61e0aa86da906fb95479c9e7648bb0c6be4ffdc7748c341fe633d50cd8b1ef5bfb96690530accc5d34fcedfa6a7afadd718dc4f54bfac1888f06e141d849fc925336037561b0b2ec80781708f4234984671916bd85c1773080caa6652434553ebee9afd3ec0630b856ad87ef8af483d75dfd5444bf6f664ad557ec90b3a5632f2ac53710176cc2f3bf47469fdc91a2788da4e3e557d6582b14cbc62d2cb4fff8a47cef90561df8370d55a39e660d890cf6364cb003a58fce8af4687bfa745c6fefd7edac8d7aefffbd775787754e9dbcba61b7e62dd49d5140235f0fb77887312254af3015a4e22bf9a0a186734d27b58e1e8c7e2b09a276752d9250dddccc1b62a5d9dd96df5380955038de86fa66a8314c13a43d5eb423b5d805fad16d7ed2a40a95e8b7cd7e26b29de26380e90b4afc29c234643823e27403e99c3993313c85a5fd7993ba6928df8913001a1d64d57c085f43001505624532381a9f0085052848832d059351f8d560f033858b288623c18b974679b8f49262e52b6a64e41c306baa95c34832e8c126c18c4936471dffc6612a826d260ff64432db258f8d33c33d85b54aafdcb11857e83273ef6b6089e2b3ab262effcc1341ac0b17cd4f429e016886961b62f00276255d1126529883ea39fcb2fcb36a0ee503ec226c1b043a25d074ad509da4543614dd04541b11e30b63b5633aa4cb85a2cb8805a87c78ffcd31e0fa8247b2153690911ee7fe9fcd72cba0b536cff627fb0339d8768a618cc4639f797c57619a93e3f18dbfa914a6665a3bb85b5f93d17e3d30e8efa6c707f5ad79ae2b60de2bdd6c869f9d8ccb282bde3930a28e723e3d03efdc46ac7486f512ab722743b9401db76ccb182a20983893018a77b7044a8d32cf2e95c6787f4449658ef1d2674505d5d613fa2df6f89c642d9c7fe0e0bf4bdf7bedeb47a65031fd4d2302f0bef4782e8ab313b92f5f98db0d3adcb440bcf36573d6673914d3a060fbe6e5427b40fcd5611cf0d5374ac6a42296e4a5819c32578bbb41499fff1fc27b2df9f4bfc9c5e9c945f27b7a116649a37476e6a77fd9fa693915fb65a3f6e0cec389b08ee9777a434bc1dfea60943bfb2d4b0bd6564e420abed7ac49242cf8689a69c04f49c2efe55a19117ac5879c4881fa5eda85de243ddf39187255b006b33f3c5e4f0b6ee9d8f35b0fa5492234de369563a013958a26016d75cc5b1aaf8b2a091e3e839629db74798fe7216ae9c292018fbb6a761cbd4c874985a2af25c1d4dcecb07e102bbefa0da74369bbab3097830ae0a9438b4df6ff3791dfa40799a582479d1d42a5e88ecb71bcedc42416171b216a842720f5d3fde32728cba24baca125e13aed64d2a58b8fdb0ca2bb9698a113d6b2eeb42a44720b43151b29852ac694bd64ae8f8aeda10a2fa0a3698807d23c48f3ad8333643a8b22f8cf87e7ee21265465329e316c4acfc9f999a1f537a4ca059af797ac96c0e8c81e051e867f0d212f5b64177dee4c5ebcf0b1129d38a6d5f7b1020e045ad8527d28075b691494e3b961165d38c62fcea3fd366072753d4a2cad65b6fe6ecec84b6acb600f6294f9c4c9e6a8bfd8937f1b67ccff1baaf9ea57a54627344fe73b82633f23e833403a03e263ae83fd9322447eef4f72a463ae4e2c23be8ff3c50c35426221d7d604ab8e4fb0358bac41cc44ebd4a006d7f1dd8aac9197d0ea743bbb775ac1b75326fe61f62968f1fc98e4c409f3599abb0ca7aa599e0c0bc00bfe2e5df98cd2799742dc71d57660f385a67155cb9ea4054d42f0b0a5d727b12a37efe75e086bb9d8c1441d90b89d20d5c47ce6c4d5cfa45d70c289ce9c5fb5c672206eafa036cee71741ac4a5cfb8f29881bfe293c79972bcf2ab68534c3d3ffa4287b0d3ddb398a485e53ce51e505526306a39a42368d4d7557339dc0b8c9fbe333b44950768e7cf48d80ce19588e978cfa4d86c54b59cd541aeaf0467401ffbab0ccfae51a8950d8a02349c4665bdfa339a67e553435bd216affb24683d83d82d18aef0949fc036ed1867782b4f3b9ce084e75ab1ed342dce0b4c17f4536205c0edc2c157e8a9ae13bb7d1d7fcb0b9fc30bf36156d4002a93cd9a8ed6d72f115a2f9e9dfa33044885e7de6a38c8eaa377f37b41e38981256dec830ca838b362f0d9d3c949ba0dab09fe509f5c64785fc44b5eefcc885e6c54dfe9c4563ad24b8904467e1b96bbff3c5581cd29ec6379bd50395471d97d27cb432fc84bd07f28cb487fb9b47fd641f7d44ecef1fe29c840cd8a65e695f1bb9600e2c6193f4fab0c37b426b01650c7ed853f494e66c3d3fc6fcae719269b5d043697253bd6ef5314d289d0097f18178c83778c4a593b474638f667eb4fa200b741bcef668d8ac08a50bcf792e9be288a6ff4128a28bd12a494cd3c49da40bd1ad5d6187931100e262af64fbe03db407af0182163591d0c461eb321f50a8a1d6ccb997d390de1b98de4ca84437a4da9c8253937f4d3645da988c45648328b9d8528be924899e2b69ba81d6fab6613305a4d2a685ec00904a6034c97a202c41a0e70f5fc0f951faa5581485ad507de26cfcbc96fea659f9342c58380dc7709e42d40735c12ff13da860c86d22efeb99d557d9642626cacba6f77a1ddd4b0de00087e6443acf12875d3c430f4beeda65dfe52f2557aa8b07e2bed98d8d31e4f5ba139312bd50e20e999b00d662a0cac7d1ba5257b18265891801289d5c34e652a7adb8a19f7e66ddabf256bf18c7782af24e36f03d94dbbe58465cdcabc324a5e230a7749cf9170278f68ba8531d9bf80bfd999639dbac4132968c356881b48d769ac356b2b5c7d85023f9bb14ce69e08d8800d4e6e4a1f449ffdab659c55f82a98d88d47b79d5947f3840ae37fcf90dc793383c7b4fab7bae10721e24182943c5cf16839060b68c30b98fbd543a68669e2575cd795450293f5f913949b99d8d04ca5579e45acbffe26cf7a4d412d30d952af60a133b6dbbe007aa68ce1cf8f7030ca49c84ac875032dcccf55a7f25c204f44094f1e341818c228bda3e66121ee5c817a3806ce7ecf4d91f890773b1d451b6e83a303cd0c47f549e50a4f3288a4e544fed4d06365f3af63efbb3539acc3708e7d814cd8a91f240347eb8d16c0396a9d19970ba2441a70a4c633e760ffc6e668469912e5332c610e1540142662caee6fe73c21b310b0bb0e0b826a95692a8b1d0267b8fc8008df1e8cfc23e279be3ce90a041915bfad0c7c29940ada6f445acabaddd30e65f2694bc10b1ef4dd51045ab29ebd82d861af2a861ffb8d1673f805d6acee7f1fbeaaf85de1532d7d9b3d67cccc77f1121e7180fc6eef0bf546538bfcfaa9dbaa90e7ac3daac1dc1223b306faafb6af63caae51a683ef3b9b18646f31abad1267f6e33f7fcd1737d48f3a4e7bf5b5149ce1548900ee352835a0efcada5c11313ff7a9a6027be3234b139a99742c63e3ac7acf3d579b411456158140e09398a80724f75cae67506d6f5fb595d493d135345e6de09041b2948a257290593716f13c9500d67afbed3fee616f1b35f8d025e6b47c5257f54078024233c50d03290e19adfb0bc28e72fa85bdb55b4e61b139c21dfa53303140ae510aa2f002d04ce9025c22da25a6fe4ab33da89a56553a14b36fc43929e44089f4a1c4d92ed999fc55eec5b4bcda57316381c391d2c06dd7e98cba5491a03cafff18cc09802a28ce175359265ee1e8c49c31532b0e7094a42a7c9966f44778b4d5cf31af3787bb4115f5b2f444d8498ee5af9e6320f413f13cf96269c72117d5d4af6cd96883948ad416e151d80992fb9a587ed89454168a6efcc286e2ed544fe67dcb3e783b10de4e35e2755c47ca2f9661e7f0a16c846fe43e8b31f3ec678325e9486a02939ddbc6df4cfdcab1972ff6993fa6aac39aad1c633a22a7b41283b0206694b1b2926641ddf7a9c697cd64b875b62436a773e424dee14fd280752726bc55d4a7a2d69cac6f61af18e343a942d99dc1d7c76fce2d18aecbdbd006cf5f9cfcd6fedecbc9238f5a3384c3ebb9418f13217d020b40eaa0352214f58de1f9832032791944951e0258e6e86f9abb21f6f520f10358b8e9fb5304d154c85d5c057b02c9465cd19489558d8538e136f4658cf69810c7790281db5cdb544329d144368d782771a5e474404c2b1be2ca978825e5eec67c4ed371dd6994819298b872f23f08280951c01c4954a858de5b09cad5bd9eca692c15f2cc8274918a3fb71dcbe1a029bb85e0969954039536129e56442ec4e17544f40e28791e5604c1d0e5578ce98ae91074cf5920e8bd076bb8c2235ce585c52397de453c95d54c54b2c2575de235841f28e319bb758902e9865cb7d6c24482807b31f2ede646b233a28bd3f9256eb7f60a970c7e3817149cbe61a018b6ae345fc268e5f50b6876eed683e3f4e476e13b9ca5faefc2d82ba5da143d07461ca6d3e2b8bf17551ee2387f50848ccb83d5b966ad8ee59096e264847db9e3c9177384c71d735ef0c73b3dfe8290de4215fc924bca1a77d4ba16835ae243e8dbf8f90c3c4ff3b2b740202f1cd39a6e3b56362d1be30ff6098ea101578ed2d0a55c43778e8cc5dfc20a3e8102f511078ef254048467fa0d00ed6df7d4b800740de6b3fda8fc0b53c033cb3fbe178a925609912c3930335d915344ce0c59f0f258a828facae68a28248e9a4aeda62b850c65a97a75aabf043bb3e02899119ac29c85e650b997f47e5d56d6d128f47e3d5abac27764a7e0723b59860734944e6d86708cfc2ad640cd1855bb975357bb6320f132a087835326e58f1f7eb14a6ed08dcca30f584761bec9be0a4d767ad233ed9ce9e1e40a62faf167110032515939b834dc211dd3ce40a21c53f02f6ccfd70211095407d583fbe543224cf7ddecdce19370e1bc01d993419070e75f0387bbe82d4b4e92a01a68eacf2617fb5e2351db023753d9b8eb3b7c5b0891f363fbcfc020db608d0e32e0becd82c3e93238baed37eabb5424f6b4e65f89eeb0ee83ddd4ed5e7cd4a4ea50263a499e3b7f02f58c0a536071c42425324752d189db564754c3caac9d77b5a2452daf577babca92dc38ff382e8e179052f398b632f4df956465cf45a6e2da40c8d8e3d8662a722a12e1d921dea2a9add17ed0006bef7a7383147ce6dcc2e5b61a134a43eeaf4e833821715965c0aedf1039d497c1c86802ece99d689cbd05dfe147f116972fdeeb6a7df55ec7c0c046b4fc41622aa6c7672ab5ebe30d91a0b328db29e27129b491b68c17d27990e30089c488d9c8bd9e3bc4548cc8cac16c909f1fa1a892cc0b4d279e58d6ce22f09b47b81c514b71f022dcc2f596f932281aed84088ebf5aa0dc0cae5d864fb18e928291e4c425d1073c14834529ff0a720d1dbb59e2e531ed6b7e71986f47cf771a500b7a24579c3bb602fccba77c5ec182791ce47b67c23b590a3cb1341eb3704b1aa1cbc5291dfc271959926d660f8ddf650a9223d0f1bf4c35fa6ce07d51d47f02a03822bf2a7530494d73f598dac68b40cf10077744f019e98dd5b4417d7a809457b506aeff79f8996c544efd845b7adcd236983cdcdeffe96b932277f8cd399e9c8799cf2d8ba1c988b85b4cf6e4bc7acc41830c905f4aa69731d5c443f3e389d89bf2c63901d5b91b0e92144f3a84855697b0b1094e92a888bbea015f89e8b0bcadd1db1d922cd9862698bfee9d8b864c3344730a6cd3cc11006abb1e9706e389efe940c808bde777e93ee6ddce9ca39be9a6a339a42d4569fbf5f46ae7223010c423494b2fc66b67a0811340d6a5a048a39d547d70eab693a045910b4269adf9b4045043d7cc25e18feeea67ff27728f54d1128609c611684c4bcf44256c321b07fb33046f879fc01be79a1cb998546c54bf6294b792fe64242630f428af506d7fbd6d354c07b974f27a63d1a7d637ad9599b1f1fd7237595974d6f09946175a8a70e7c2208e4ad3c29cb51e13faca3bfd119740f0df66faf2f6c7b1905973964e52aa23369556e3b4b50cb148301c90ec21f2e3514664b7d48b5b986b51802720fa832435de1b4f626ac408e7468e8486f52c22d0c2d5716768bf2453f018918f2b8134fc6808cc2e8b2545c3db6c63ece80dffbb57d0e772274ea4982b79d3d4e21727a671c3771d234c584910c90f009a69ea1f614c897061e2c9121b300c557e0de096925fe80baec3e8523665bae01bcc0ae5ada2796b2b79cd70451433037ab8774d8bd4d1d8abe50882f33e3cbc65de4e88e10f4510b96d49cd5b71d76893714e52471dc7bbf4518d5f0050593203add46e5153090c62a769584cceca3e055f28ba17ce1b4ebb38179274fda400a5697b3d4b49e71f14afd6ac4364ac03edc1ad407a89b5333ff34909b2a7cc1311f307076040ecc6bc5c0e28b75f0919d6099e2f2adaa82d1608acc933bc48e794e2f7808d90ec06749202296035d626ac360c86334fde5932320285e999c8e789a09fe6ec4f9b6ed9c18cbe28be28f048a36753d5555ea5ac2eba6cbcbb00df93957f1ada663cf5923b819342e1dc74209bfc9c9b6a5909c56e027b1d791fb7b3668836fce63a0dab32d0092d3fa07ea5ff41d3234c981e3568421695b9f5db08e20ca82a94d26f4bf6b7cc892c92e3b4192300a1657854ca510fb4fbb4786fe2846f45905c09dffc99907e524fe95648f40bbc4da954c09eef26b445e71fe0196aafd89df2b0ca52bce0cbb69a4890ac686d6378fcee0df55cdec2ffa1e3707a3da744dc63437682ccac962fcabb1c634d2ef21b782eaa9784dce77f0a00992bc3daf03c98cd61a68b2d9b5d7824ca5091953a2c54675d3b774fb8abae5c4da20cfbbadf82dde6285fdeed30ab00fa62be430bd2543cadfd82bc65a66bb0649e2da7f717813d93e3c13efa07d60c840e5c998dad29d79e4f33b5edb2214e8fdb968ac1a1ed46e7cac55b741c51762d95ea31747814eb10ab206bc87dc9f1349aa3ea694a2c0583f048f50a408f7cd4fe90688b2561f8e0fdc97d9dae94c363471a50d7362673d8076fd3af6f44b617318d12ab132dc29c538ea0dd5c781d9f8ca584e6dae9f238b8177ca2ac259a68aadc64c3a87f2c791bb793f7fe6211f84844d83dbab7e707e85623f79478e46cb5199952bc103a8ee027d6c5f85af07fb5d37053dc5d7adcdaa7566dc1f95a9e320d99bc3402cb4e82660b804a01ce333bdf82db3aa2aa9c118830e94defa2073039d8027e20077a2d75ac77dea1c4d3730663684e220d5f47bc190a35352fc91d9eb24de158583d0cb3bb2e1dd0a9ec6bf07979be9fc39d6dc4ffd50e00dae4375300255899bbf3d7fc345c9d4b109d111c2ff05e49cab2bc6ed3aa7db7e3d076542ce5d5fb3cf47412892d1378fbd005c91cd74ddf26d8bbb218ef706ad9e4e8ecddaa8f8b3385e939d081aba5c302e26c0e0bf9914ebe1ff47895212f82cfc97228f4f4c69ab89d7f885cba5f57ce9dc43d960f544a0edab435c1031b571ea24ba724fd0f252e04ecdb28b38e912f333290af4d598f1c214ccd74cbe3a9465def4fd07f2f6ed1368991209104c3fc4583ae8bfaa19264882903d65f10b4dac4ee2cdbb1e9df0e15ddff475a69a1005f54853257d8768bb35ac237fa216fa758b18e7145c90eba225433c04dfbee01601c6dc32911c4b2ac02447001f357e68b0e66a9e708cfabead07996fa28a60896691191396f4f6f9a86c26130e66eaa3296c81499c370b346c8565748b3958a4722b209b66f9e15f6424a228656c8b34ce5e42e9e04a63143d74cc54a3cb70e318b28fbf5977a0e99993af726cc9daa2ca8915b6da4aeb05912242542e4b42750554df1a23bb29f5ba945d67d342fe655b4f5bcd285369c0ebf3a23c884f93ba7f23416a435bb138e9ec0944d566f56957b72cac65b60592b2c07adb104f2ecb1c731611090f09392d4aaa876dc050908ad4a9baaf7429de4af111802892f1f24126cf95203559d3fc6179739cad522ce08a9cbdc1ca0499886ede823cd9c62d779f1020b56be0b711ea2d8fbb09a6895d002d619b5bd2cd6cc1dfbae30700af89362c0021dc54e88f651e27e21d6b61ec4204b8b9b6391634fc3e040b672e607e6040282e1c743d7c005aca59893766f5ec80b5df3c0a28b54644c23150ea5854f3daaee6c648e282f3cbca2214cabbcad290b06ea5e5470f285558b6532968972f964bf52eafd70d2af4bf889d9f7be2025ae54ea657cda8e737b1322cb191c279f5de95ccac6fab249d04c7984a31e1a21cf4678046a77d9f49b9e810ee8a72edb9e9154940d3c4513c39bdc96a5e74739e63a9729ed9bdd9ade03e39f33e68340212e5496a7da45657bfb33367f7fc040017a35598f6bbd3bf9d4ca3b44c5b4bcca4355d51bdcc025e3f306c98e409e712dfade101a82bc036e9766f99869c1edb0b2daa8d379ee7e524dac36583a25c27e9a3617c2eb0a27fc01c635e728828955ba446db634ece191c6ff7f322615fcf4b29d4bcd9ba9ec8a45364e0ccc97b2cca7854ac0c2e867c9ac75a68885dfb437b84bd768eb9d31a19b400cf026ce343326c4856d23fc5d357ebaf6f6de74df1d7062cc1479520a92a365177b6bd02509095fcdfa81e152dcd351cacfd10b12c1f05b1739280682be31dcdcf40039f26886170c856340674bb8aede95909de3ff65f502f101633b7d4f7ddad2af97c89de225878f83f23fea49a217f154710c3649ca885f7c6c10795a54696b2267cfdfe32de727d2c5fc64f37e105bb8273b7568cd5f69199f4903c7aafe94b00dae975a237c42937f7ce48b861b6478166f21d87cf4cbb379809e866e9461cdac6ce7579ee9e136603465e6fde00aaae5c31eb314931674df7523a37badc7faab65d55880393a84e2f96232d9cac4888689d59d84db91a37c9c4d7dd430d839c17610fc8494c262c55826fd528ad79d7b89ce45422086e00d8ede7d058356b7258acc14a9d4f2246f5c7de0349130bbc928f6b892a1991b2f7ca99764fa22db868c02cbcd7c002a7c3894dc045fbbe86927db367d536c5f2284f9da126c1f4c51c6c3872a4d58422c6f061438c1ec7633dc7e389d1a2def000d9a81d0d5a9f921f736e0d963b36acbc0700cbd1ba4ed52da7085b0c7ac7a5b0daf44b9e3b3f565c317ca91f62fbfdcdd1d57e2dd5f0fd64ad92cf3dedfd61458bbdcf65119dfc0944b59d534b8c8eb202d064da7b3dbb8a66d5ad027d12acfcf0c54a7c41b167c27c8ecd8940f4d7d78ba465938d3b9026108a66c7062b6fc5f5d0294f952c824fc623894f8a13ee35674861bbb9e15f1b924b7d0516837948802981e521ef21182eaffd42151d65d1a57753c3e09df7eff41a81951be64a12bd1cf9335c92ba56f81736bcbf188823cd2f8880b8cf69ae33da9417e33733b8dc7aca5186dedf838060ab65e661dfe2fb36e0649c4b386497d587b4dceac0128d18cba0aa53989eaa356526a82807e6239025cbbddb4e8dc1347eb9978a7fe75c4f8a3a2aa37f3cd562aaff43efd51ae40a70c97cbbcdf3298a29d01834069c0a7e7d347c35b98b8f5b41c0e50fd3cb32b3993b8e1ba4ce1b4a91d58c1a56cc77833c8d1ba3b2b0d1b640af3032fdad155dc3f7b7a1fa282d4c6b91370289de9c46ced4c93cb62919ac6f90d9dae0701a21e95e58e46ddcc24c04d063c5cfed602f05e23c834d22969d36a4abd9feca1fd886bba2f218a8726bb8a088d0c0a6ababeb2606ae73e089891f8566d7823c44a24c2076cb6f2efcacfbbacda6f6ee5faa4076022898b51197e604fdd049027d63e3b8f8e3e9e32078f24b975bfe712f24044ce90f711ddd911a6bdf9338f36c41c1beada47c38da1b9aaec71b966d608f13eba2b69df4b8664db72544e24190280e8490eae5854c4481d0f3a13b57b06bd6e1e42419f16ca8d4c8a0da7e5cb7469846db85c68c5c891045ddc00a3577b7fac734947cc6230c1a8e13a23165188fd8bc84ba8c8afce1624923deebc310784147d9f311a079ec7b9d17ba9ffcf33a078f2bc22e321d28ae3a427412c559395bc17165b6da57c8bdd97a97d658e741402e1b4ab511ae9e3b41a78fcb0cc186d424e5c18c28f8c00804367f82e28ae5b7bb51f2952e4068f031d4529c2c057012c318108088c41c7c5d761075d2e929fff1f2cedde2ac0e66e84d72b0d2380c5f39681296bb4cc54dba96b77b89b452584260e82b459afb929b55b8983811f405bf27b9112235c97aa84e3a869ccc6d1b9842bb7ba5d50103ef3b83593bd3c4806a92ab652ad6da078cd02f1dcfeec92a742ebabfe843d29fc27243c9f66c9eb33f66c4f6bb3ed0d1d209822876cc7877522fc74bcd9688090361ff3efe6aa739191892ae476f23eea1baf305fddad3958b73bc0f620d1e7ffc61d0908c8187c1bef9d75d68ee719b9ea495ef867df3612486e6a13a45f456f24764624553ed79bae40bef3c4bfec1b4a251b2e6f139b43d0084192a894f07fd2f7cc361f8098ebffcd868e6bc2f04fd1561b46697c62516604cb98e19d6be70736e1e628a10b2b3e49cc0d3d10e5f24b6d54b1bbb03e5cfbfe76978a1168d4e09a3769fa1bcbfad51ea7cc50cc95af77d1165b9121b9a6c7a7104346bff1a82b81af75543c9627b3f0928b36033cbf21e4d792b747c5bb169fa6c05ee66f3ed11e4d0023879d57f2a7392fcb74220fc2014d55e255ab2e44b077d1afe815b8847a6692f2311adfd9a58e590168f46a395c62e03552caf980c11be003f6ebb0a9c1ada03ff5ab61dfe1985f571d9179010168d36ea2d0ef31f04f42778ac96f5548ebc3acf21e24441cdc3560d825bfd688c7d57dedc6b25dcc2773b129f14ebce634b5078b7418be4bf630c03105763a2039b77c17c8907c19e615c531019a2928fcf06a971136641ede93ba8aeeeb33c2c6428df95a105eae28386e7abecf30e1c5f9aad29dfd6928bc082a2a855ca160a629cb671ccd47a4935aae18075c6eaa6eb3dd5bba2b1e47e29d2daf24ef0ff749e561ea0749fb385eb44a983ffd4b7e1a0bbcb890ecc6fe200e7f3a2fd9a0f976ae27874db9b7dbaa582370c95992d119352eaf8d12711854f078e7245c1dc71754dd586ad3ead0127329e58e7d8f991bd2b0cf1f7697a69adef6c3fbb6db857325eb32fa77bebe600161206c792a24d5100e46153317246741a888c256e21708fc0681049c633eb6d5c999a2c59eb4753cb29b9fb1dfb05c2ca28008d42c137fca2d18b9cc41803fc470efdd04fae158ba0386ed99b80464b857ce3dcad64fcbf7d0c4708e68d1707535dfb55561f61c102de7a42c238dbfde06da5138a8c64a0fe7db03450c8850358c5c4fe1efe684e532dd9a6dac24b73d9285803c265e5d7523f7400d4e59b9888676bf833527cf834230d4d60aa50330d6b31a292314b5c49660785dc6c208b3da46a322dea8222fcc59b1e8bde59c691a30beb75693675074c202b8a64cc77e9981cc798fd754a86398c84b75e099847f1e34d593499a249143acf6bb8cc5db89242f457ffe1d712eeed533d54b6a9d7415db001153dd36a3c14f687d73ff9a5707fa372e4683af7aa4fca8792eb14c52e3efebe133cebabe63111a802bbed14bfdc82a3e1415848b7479a80fee65d3cb9f049d107869a75eb59d3178ac8c030ce44ad1ee8b44cd3cbef07a0ae1a968ab0017d210f5f838e7716954a4f63a4a42309e354f89f76ffca631534adae4e6662a4982fb5dfb07f2338c9183b7d11716f5d52b5b7f4d6737445bfb026fd5a742f2e8658c4715da1fd528187fd7a32ea9adaefaf9438bf996b3a491b761463b2c19a77d53e54098af53a024c58b31d29a0fb5e7a2a06d056f16b9ae2f13846b1ed06d816871de1d9748d687d69f4df7997a16a59848a4798a205aab6935d4dc9ba34cc5c5133749cb6285d26e8fe5690cf8e0d715607a08966b9fb3096af2db2a90a43af9252bbba9bb0d9a80806dc8dd4ed0a5d40527e90783d2c60eb0ddb281412969743096f37500bfd25cb34be2101c81614b454f06723c88d88ff892a8d6bfab93d773cae2f12e5ef5bca268d4e94918ed7298bfbf4539ad4ab93e944a12f15ffcaf9a2f4d9d02cd9ab3d6a339e4d9ac131e0897baea372d3a99b29e9d4b1d96134634761fd2695e239c507e1ce409cc944857450b2db16480cf4f77ec61c5f6bce4d0c4d9b69154d59c3f5c542e934f3ebcc85dde13acfb7cf7336f9e3c2e7a14c2a2231c5206895b67aa09cbc8461b6712589d79ffaea5bbb567c88556a51890efd93ddd8458da8f1e469043364083fdc72636309a7381e1a3d931d9c27a433dc2ab9ff9c0f47289a3925acc430708512f78884c4e08ea5e605fbbb8d5b8b61745dc5f8f7e99ebfbf699c4c171ac6f65b5381dbbd074672bc98679c9994d2328e7239043b745c8788680b73ab829badfcdd6cb46f1fbd0a204d3c1f7e66ee66305a6eae3b06917a7ff5a31bef05613af05c7c658cf6d337f0fc158fdac6732d80c30f9bb54910fb8cc1071c19a3f1fb049575fd253d6e5112f841b346209b8669799c9baeeaef65cb33d25d176f0708da023142adbdf79aabff4332da18c633c35ae915d73e0bb8a9c70fe9196fc4a381811dff615edbaf792751c44dfcf437d0eb9cba200981420efabfbe84242c4cca98bca30eea0b001cfcd63520d54de84099b28b052c366f6bff578352e2a64e70ab233229e07c5c6095f1396983998c15e7fa3239325195f8083ff9313b7ff1b9437b7db3b5a893e44bf40c448bc88f04f098a8be12bcdd80b3544be8b6672c404b83b874010c1e9fa1e5e6fbe76c4046cc84299c7aa6377a566627c284f2f0e5100c546607a8da208d003e64ec3a21e8b0097ea733035d564ebba81d101803409e7b2d6ef882dba1bf33d9061c8dc909db469024f50ae73f098a125733b561ef034a0dc00423422baea0b211f4e355a5a4b0523008b672b591815aa2440a3fb0f286758010182c701e1faa2ece5e68c5728ef631af46d5b48e40839b5f3a891f2d52c0827372af27b8b907af6243b94a877c72cc2cbe606835dcc6971dce02791c648e3cae46e7f9a32eceb4f27e37a322e9580a9c643888745d91016631ebcf18838548672e10529170dd43ce1db914cc98febd8843b5e1b53f4b491f353784c30f5f1256c7b4a79426e564bdd13b7d0923f14f5cabdab6eef5f334508d59f628794686f831ea10302a27c4ce70b5aa4973bd7540afdae75b618c98b0519bbb3cc687dd12929c2f800b0a76317574ac4649068b0ea5aa18335e51c1bf7d04d5a9108ee20193ebcbf78c7bcb0a7e10c0afb9ea863faaa744c637c61d3671d4aade053246d9e196ad4c232360accdeabb7caabcc7951c4b72132c8fec0e728aceb26658e020ad7a86387b64cc29c93e19e757072f671eef787ef41bfc75287ec50289e0f5c42d1c0079f231a5107ac2ffa6d0e5470317a30a7f3622c59c1e085e24d8e2dd7619463e0a1cafb3f010d7f4bc7aa971ae331074610fe869d9463a5124503fa04c2eb568ef3ea38e755c4910c38bd04810e06dc4d48f5e647972283354037c67e7afd40dfdd3bbff0d54a2d87a8f4cc8c053864fe53b0ced60dcc0f3cd96f3dfc9df8a70010b9fde809407290fe618ddd401cbbb2e8dc764e79f347238c453ded08815135747ce4b5ad8abc24b432166e826790e856f414b603bf0e446d96be7f177f610669e5875cf83cf6bde2e78da2841ce6710c45f8c6715241823374b737cfdef19d95c5d4f921c51be8f83dd0f51964c61dbe0672e57f4dcc430d4af051c701120537d5eea11cbcd0744f194db5bab0f40200af9aa4385ac825ebac475c2a8d30a43366351cfe051dd7e7d8c87f0cb306d3501d77c7bd9e115878730ff728245010b6dea19c24d994416fcd25531863be6d57484accde2511c3cea73f69f60481d113cad0f4327e094bc9c5e8ca12fb297a689ad65caf9af5ab12c983a6ea8dc99777231a6962943710a5b23c34d5da2d3455762dfc75b762c66a42dbeba417ece2a112c1afc30b07ebc8e796e3e6a4956e66b2121b5a75ed898429ac12f199189abd1b36c19c066b7ea5cd4df81f7c88a7347b26eab626acb8505b89810a1dd9b7c9c43a2b77d087e1941c836c866eb0181decf64be737bfcf285c315a44f1da762108def05b339d2268c61fca05ff84cd31aa310c2a77cfa8d6a9af34e1b9781b5001bbe05d0d14840e0ca62e74b99ae24570d8c9d2e1a6731f249d98002ccc0daf3c3b254e49ba940b74363cfdccd53e4e5c2e8471c0ae03c6fedd08f87333da1a4ec1f4528a7540eda66345383f00613893574bce9e498c8c7dc4b7f2d08a19d809a8d187427d1d5eac0d275f9ca8e0cfc4e9e0af18d27a4f32a0e79fe2354d82b56413bc6e52746dbb695ecb7ba2b016bfb0c25f52b45be80749b6f07ed5615fbddef92c240eb4673bc0a477de5e41ef583a63a99b185c911fefefad951debe7ba8024e2dbd0efad0da9099cf7d97ee30b99c33e4f547b0da2209020ad6c203ea361b247126f03ddf866e047317fa34a5edc263c25c60b027135c2bb2ae140bba37bea31d3f344ee6c75b2ef40b06bc4fc0b8a2850f40c5d3e2e162eeee6636117950fc62015994fbadbaee22ef78c520b7b3c160c59a5dd1e785f961c4a34c4babcfae976f1f338a18f8f09013608b7da9f1c5eb1bcd37a7684b06aec37b0f76f3f0b2b5f42e5ad2ccce0f151fe01fbdfa1d66a27f85a6ee9a1bb9ff44c22dd44d8fe9db5494f969dc66844cafaa31ada4330866a4716dd3f1e44081d048bd5dc09328cb2dfefeb45b8bca130ed4b60f12a6e4fa8df2db99bce5bfe69a0b673a5dc1c76b07d9e0706870480ff6fa4316c9da02872819ca15153c8ae111c1384b150f5946f4acdd2c80c35d2767f4e1ebe53d7a18716da2311e1594ad781e9fa25a792209c25e00cc26007b058b6d882c657bc21f2e42b169921586879463640693750206ba36ac08dd424799a93500683ea7e4ee37978851a2d5672f69ffae715a71a3b4f1ce2dea6614a8952d22d4a44e5e0e3f51cc650d238a316c0560e4929507462c2b4b905462e7b3f1b8be23d9122a5fad8fa62cd70c35df855f3f044c54d5f4ae457cc0782d423568493b9f7332b1c739546ab97c49f7d0c841ff88358418a81a3ed1d95e1dcf69fa6c4ab0d3d97e79c5d30b02dfd25d5d0647e619187382ba78bf37536104cd156986e1d7cee46ab59c2fb8bc7521c47b15e74f647421e81370434ea4b2089ad9bc210d952dd9ecbde81d3908c8ea25564d932141fa64ba99d2c289e5d4ca52f4be584bbd2bb1e3513b22f5e0f52ffa620ce316e412db6fc810f630e01edcbf437f471e0bfa759c5b07568e032d9cf16032d0b63257ab4ad4bf254ffd3c850b5fd290c8cb3eaa216f26c1613c3733b22fa5030489161a24531a8b0085afdcf91ecef2650190841d4a52426909ec4fea09ce313a22d4ea273c7f40baa9482d9dc34eebd102fcf9d8c6ae0742e2baf254161b872a14c592a9fdefc16fedb1acc02c716c0e9f8398219b3b9759702260899e7b24094c553b7d8492fdb788e48183471aa11c0e9a3120cb6467837f3b0fb07be5abbd43a3947e5331f4539eb11bdee870c17985a9546aef730779752ce87672d1dc083701782f35bbe9b82f3dd70bca5ff7b11a8e99d84c19d806adb5d2de48bd401178765a98a4c02580f97ef612411653bbba17bbeb43ea53e727a794bc59a9e728233c8fd4c5f943de98c0e6e49c88cf0a618b81caccdee78ea86700074b9b34ded9425af4a9be14849d22d7d0c1eb669565227d228cd25b6a6b6f734c551dbaa95daad21ea58e0d8b751a9f42c03b372fad8890758c05cb5165cda4e93bba26cbda4c951db18b494f73edf407a5b8b6fac35e4b9ece9b2c3223a3c3dbae844127743247bc31fb19598738f495af63f8d96db91495b31e6c2f25a5e5475091f638291ae8a5f3c826b8aa6af4087085001405a125c0b8f711c1d59ec511017973677ff7f4a9e9011f726047afd80b2929a0139353581ff97b8b0bebd11b69da535370705a93ff57f9e62666b77a0d9d96c9ef00abacded7a5f75afe8a0ae9d4ddecfe6037fb54a1c44c2cb43e6db0f5bb1cc9ccd94eb0a981cb5adc31a5448e4e657d546fc1555808a51bf02c649088efd07ed069721c6ce04465a0c62d5eaf364dfe100d15711cb5cd612c8692ff710f20cd58cb082c7eea784df6564a4ce5e671a30b7536a32da58fdc52214a0d0f363edba52f64cd2628faf6a09c59ed62ec4b7dee675da1f2accc7f9dae6b73857ee3f76c336b070a1a07bcf5eb4cdc599d107618d56c3a763b2f1f1c0e61363bd9995e5559a7ceb661c3145d72615486b5b8531d7d5e6ae68afd3432f69bc05bf040347d54b8ae1c7a3d00d6c45222a4028e34426490b11461f23019ead2a7551c7a85f422f6810f00434672bee03af420120a03155e7cf75f3d945a8076175b68eef540f84b20c78a45c7d7aec2efbc47507e8eb2afca29e60ce256f91811e6a6a0fbd8f795456014d2b5bdd86105c625ec5f45db68d2677f4336c025c2502f96bdf5aabf0bef5af25cc37440f51cddcd7f29405be10a15e53a26219d69a8b6149c2a96c281161a5e64005bcad8ff53b31a79c9aed1eab78eb66953441113bf65dfbcf1728b01688d2b6e6aa9395a7eb6f354de545da579d267ac07243a95d085edf3033dc851ef5a9006a91d725c3641a0eab2f1245ea995a5d23f8fad3d358f2bc88951e5a2c17ebd4cb782ae8b5973620e2c418a9f378d39eed499d43e7c2eb27f33401ecad056bb4f44aeb5c3485f602066d98f593b0e651af1de1726f9266c4c276246ba763f2166979eee0c6756d6252fbdfe526f6e7f78969701ac43e7d0487d14a5a6ee7b69d00879fd72a04596d48abebbc1b1f4cf9016011c75b52dade4c0c22e3ed8aea9dd87d89179e12166072db176b28359856d9913c660eebcabcf73c1e4bfb9e2b124146c402699640f92036d1d038bd7ecdf9b8878b0522090b38af865387922d4e144e581d73f9831b4aaa0bcf613cc4a826b3135678680559ced5dfa6fe3a1d68fc336314acbf4297af673b8d48ae7f632ad9d1abef787a3c0f93fa3ef2876d260cc2223403b0ca2336cfa869801ee9df7d811567054574b79fe5ffa0a5cde0052b319b133108797c7c8755672ae07cb71b9cdeded108abe9ac2dce90bf81bb9335b685165cef0ee15776849bc6ca11a50efa21d3ae14ab20ffcec867456db2025c0b696598094e3c61e7832133addb8716cdb3f5744786088da6999ca382c51b16fd6308f3169e6e01120fa74b8920dc4fa6f7ca7f6d8184e7b299a87420af2f109e1c8cd730ebe3ddc3318a2addfb73cb48eb8967c6014cf762932977b758ed9c4a6d2efdcd8f97fbe31cb8283483bb4887180379c83bc4252898445d01a230ee96cad7285ee097a2965f7fbc96800d0bc84e539e29cd8da0c55cd9d918ca98a57fcad698a738e1044d9d772b0338b9c66dd8ac81c615352941f1f01f20aa294ffffeba98cc6af81691beb398fc408f3f3ff5965de638a4e4f6d492c8cdcdd7066b3ec2532cd91a3a7cdc54460bf9647a1f699d4ffab59f496ee31fbd9360ca926e18479a350341c4009b5cb4041e60704b862821a585546368a2af7bbb6cba16d318c970d6a52cd2c915afbf2601c4485dda6930f53e35def370e25f56842b77cc83b6422ff12af95d4ac675d3f12f6dea94d017f182755f5aa2e97b1627e14293552c8964e9c1c59c104bd0aa856dd9f5f17b15389f1c372cc5cfef8e920005daf5672a28cdc258c662315a7419390ade7457d35d02606020696d43d2e166797a6950c848f19d2f3665969864e3717bdc7438115564c1e355c20c3d3905b0468a0b027fd8b195f893b3ad61efd8918dd68c3cea5c630eb10591f95727d16a3f566db7ad1e1f670fe4585c88948866fecad10e4de24e0938cc6eb5eb6d27d9e788720644af8f0d633b32eb6056922bd1dda8ed979ef55811639b881a0da57f1bf2047c4b62acc01bf2db2b974d4e46478c79c4177559ff90e6a4cda13d30eddac01346be5c492886d601941dbcee839596d59239a7a5f744862e1b858069e6eb317e04aab0fc920bc486005e68ab404efb6024ee9cbe70c8d7468379a73d9ed5f2d3e90646d663f5d5921aa63da82f4bea9e87f3064560a1b08c7226b07d291cdf8a9926b862530b96cb3b8c26ee2001edc2e817d806c522133d1f23e6458ab2f7aba43a185fdd0698723259ca9cc3ab93bd65fa5040fc044250d3cea3ae0d44aaa916aed64d647bc6ab42e29fd950e1124c96fbd0fa3c21d62899d2d33469df878037fb649caf834f7cd38c8dc5982f8c4e38ea1a0b85fb9cb4f6c27643a91a71b2e6a6bf185bb095f862c7b3dc48e15d93272704ab5ac177d3f45db5c517dd9ab5dcbfb2d9acea4282f0e68a65aca66ace26e0df9701aae74573db1bcfd40a21555a15d72d04f250190b559d1a6c1b9729846a0c5f678e40ebc9ff75bf4902d5656610a6fd410de5eb9023ddbe48031ee2ffc13dbdb6d985001085b04bd95370a84967ebec477d6f3987ca5041706c765179b966ade339901842e73b97169924c761dbaa17cbb48f0b9014802a18cc7ebc3281cb0bede2c97dbeb3591ee15a4e41cf1c5cca8332115db167fddcce54ff4f7acdc06840a8aeeaecf7f1cf4dae5c448472643f9a48596446ac964db5bd33bd65ad00da0d15fd77526905ffe3165d9766c6c44026a4ace0756482c82ef9cfdfa6939dca1214d6ef1708d5ad23b4326b667a7489e197bbe9286431ef919447a151c19466b0a6747651ffd2104023736c3f0ec0ce3d3d663416ea29bf99f3bcebbc0b7301a70b668dbd94d87f73c09d9b2abd4affbae4fd8d6d9752c516c451873461ff7179cb814fdbd4e511d1d1732c6eefddd79d58b4508cd6ec0e9dafaef250d9fde0086db644ac2b2046fecd3164290880ef0c766a783c9617f6957452c833b4c9b555107b4badd923c6b3b43bd635b99cfe6db6d5e1cc6cb29ccb4e6f9fecd7be4286911d90faaeb9214b380baccd4db227f82659207674909982df04170f348193bd7493166f61c19b593375100e8f9e95319c264527b1c71908e4b60841012f535f0ed7acb266960685e2b10ccf026636c0831f3fb5eacce07a8332a83f0fd53fa32b37fe64c7b12ae25b1c0b55496b551b80e2a5da4024a33c4b7441d3f6f073245438ff99cde19878732a5c889038e997bee66c8524cf6218b3bcb3e6493ba974bbbc9c941825adf61ac075cf929cb77df17eb8a1b5c92396ff6452040d9e6a678293a35993bfa45e83218ada6493a29f7031eba212ad95a7775f00f1374d8a59014c18192413936e0671b66e2aa63491ee19f76544e620ffe1650ad11dac23b4ef4ceae3eb1da726f07e96c9d1367655e142c8fe6861263c78e1a91c348e50407b5ee53a2091d36165fba921e53e85d1cb24bad21361c4ba1646c9b4f3cbfd6ab3920d67fb0423825d048fff7ba0b6af206d875aee38fbc9c734f6246f954a644d302fe1f6caace3d503c711a9d82cda30e4d476eb77cd4cf6c917a5006844254cccf3816e977a530e8e9adcdd5a793e7fdeb7f2e01a1b37b51ea9463af675424e1240e9d39ccd5dd3762ba2640ace15fbaad75d0b2aaef62fc72a9c683cd57d6c39e946e4f8e5a8fedcfb74d3fd3b17360058afce007bc17966bab3ad4b97d3a9643efeb83c325a551267d8637bf09e9bc72031a46472c0b20527f123afcaad972bd1dfe11785850bc1f487810cefd0dd2e49610c2083231ed482de210d40454e564a95999375f891c8c1fa2b98513f759ecca4bd77d381f26cd89b2f5a4bd31701bf9b5a115f56272efc042a210d5d93abe9e93297a7fa545bdce534dbb138805f655180e464f5a5470333c40caa7d214061f91031498059aafde7ebe20b46090b7ea89af45f34a6c165aa48cdb3775bb88d240d4d4a412c9982cf2b380f3a56b1b486fb292f93af6581fc584e70a5fb5962828ad793fba4ac2819cdc1c8f72e7ef373f2df5be4a46fd1348a9c70ba4bc4e53dec54326afe8101c35acd1e707ca00e985965746b140459b2a805821553eb0375cf5d81231439bde55da2ae959ccd1bdf84b2fcdd4de6dfee011562291e07d5d923db45c374e908e49e1870e14192948de0c75543dae7d01c06b48b888f7ef08f73d264996d16d56457f503837d2693b357c2d20555163d35d1e80039e0d37e819bde52a11e88609b23a3943f48cbe5fd4a3816fa9fe63731cbf22125162cefecd2530b3ad82dae17ed6979333cf13d0346e67efa3fcd9e57867477cfa699eb825057a1607e339b234e0c7064e98e20cb72edaa9832b43d20b3523b76d46ef4e508fafe6d122bfc6a5279ffcd7d7caadfa15a373b27c9f6461c745f17c572be9621805c53bac93eda33df26a03f2fdbb4fbcb11a72741f8cefc5e58900a871233b9b574d54bf06621bfa282d0a4079ff5fa004d742ae22f17a573d75747df8e4f3351ddd36f0f3934ef9e201468f10c9eda021c05256863c2ca9f61f76cc3fb0d8aae5173fa57905b41aace8179f4803ed811e49bcae438a706ea8a36dc013d75edf6a4b2c9cffb824fec0d184a501944a6a3905588c5e21815a625e75375f3c6f5e3115ba628de99e8ee3d179c9f1586d6801376cda23cb17a7493f2345ce8d36d5b8ebdedd7007de753f4cfea8ef48dbeb0eec9215b8636691455a2faf401fc5973c6d93c334336ea15ec436d20c8474474ca7c5cff57de1dabb9413710cd202190496bf20e7b0aec62d4aff4d805c6535cedb9b2e9c34cf475d7da83910b2de764340add4af0d6cdb10b2101061a2474f3cba6f6acd82d42002a173e995322dec8b8f2913b7f1579a070b188930bcea97c9124b52ddbdecb496eed31905355b5dcc2951e35bd8a904e204e4183556e1f1bc4d34c86f0a50d317fc78926543f7cfe15fdda1ba28a1db8438d091a4b242a489bcb140e7e6ce529f3e9ad4b1a815ecb7a7aa7c836876273e84e2be9ee404dc77c51f452325128b80873391f950bf83f9091bf9208386b229eea2dbf77ff42bddabc4f58eedffda74582430549bee055165e96d2e5f288ca5be9218d3879504e5f662807fa53f21d8e06f4ba387180839a9fc863e3caa87d6c44b1b0da6283fe9b869ace2d27744f5b5033125eae3c85c6accc3f19269bb3cf7bc7b76f5a6985a39c8543d576aae62985b64d78e7ba18872f2f75c71d50458e2ad46dee8c53039c3d8e4f99b84cb6ed8101ca976db962a2e97cabf8d707f5c97ae7cec18fc0a1d9accdf068ad28c9c2be4c37d9894ce621981388b899511f70cde91cc020f8fce57815ac56684e62f051978ffcfc511a48eb110b81ed5e021247defa701e90b6f34ae7e47f06053cac3098c41e4734fe498a3766d3143d708c31872f00c562d31fbe509df528e4f1746b40733d0fd195dab7361f7ffec27feb731ea7a05cd8ba1ad00cefbd115dc88b89e24e1b62526dc60711e0debffc07e56ad9c699b9a1c7f171e305a3e67ff23aedcd0892d0ad0a3a4decb6790dddc460006c2e6169abc23d598ab8193ea405dd62c2f7ec57694dbe6e9dda8317775760c2706af8d27ab7c8eef4c93565f2e05e21f17d5ff2596903e439a90a1cfcac5be1b0b6c4f1e0e9368e034689062d94469f994ed14ea1a469b06a0843170dec9403de4de92856da4efb018007df556aae48362c139350c1668175c6659f2f948cf579bdaad0433cbfbe2c43f4a483f450b6176074d257961427494b9137d259f8d53ac0e62573237526593ff7f5d30d327787626160a1411a67bde1a283ab232b14987a108c21cf604a5f969eb534bfc36043cf77f58b265b1942606de54b2f8f692119ba6f40b4cd3c2faa92746b59fe06b57577920ce5862312cedd1087e099548231f34e3fa9b0c96b0e91db817309e7d898b6566068defa9039ee6a42f451ae50a78a0d849e0b714c8a0167c1d20a0e24a7246349cce1e0394f98c2b2508ee2e05f15c713db3012f053336d2fa5e449b43860ad2f523bb4b19fadb6684ef615acb8078397de7322abcde7e46e3e42f20d5b0a8571d6e8cdfa20933dcb2ad875d0244966196b0b10d57fbb17a8f4f5d5390ecf3b64299728893a86008dbee3cc4c9c7485d795bcfc2d287aa9abe8eb2c4bcb7506e355d8628246487b26d4d1fef2f249c44f896641e41090bb3afa0efedd356b650ec8d6152e01c3bf19c565a8cb9e6d8814c4c7e2948b95883a75e08f204e7a53203fcf0f6269d90b2df9e8145e0ccc9ab92079da4a104dead71593b1cb24001d736e5711aab7f193571e6e811904e0e6c49f048ef9a59ee58d9c577d3f3a9eb29e8f47c54f66506e5d14d2c59abf843f8d551fc339446656e3079e4f612591eb39fd440b9e37ee97d429ada15849710f4ffb3a6f685e87aa7cbf599a00ec75a2c854c4eac215dd3264c8a73746531578974834aea77a9477c8487e11b19d2e453e9f39707b41dc47b393a2cff09d12123414a7740074f91df37708b7419b02e66bc7187f373deaa1c99982b4322200a7f5d78a27be758bb6846242e652ab12025154d4ac78b846d67beea3000d4d12ab820bca02b5caff42e1697609219d2a6f6ad4db84afad2b2774161d65f38dde385c4eac1e1c0a1fc21909741f1eb1e6e6f646c75bd15d168647bbce165da87fb27eb7851180135191ea13cdeef54e5fb91ba533119028141f80d0155c73c40e66018837dbf20c21852ba61497641b788255670261f3fe69fcf583c319a51483f6e3466e69fb4e478cf5033761f4f3d49cb83913ae3195cafdb06591ddc0230bc260be858c964b90c465dcb271951d90ee4ae1963b1363c9fc77f0363a2ad1f2544cdef74d2706cbcfddddd87f2cd186aebe9be2e5c0cd53ca2759ef3e1a1f21b678dce42c42918381a5275364180f7b8a86bdb963d67b0657b59476722a321bc91c517f92a75f3b71541bfe46cd6f1ca790e4e7a75e7290c5ae3ea271b6b7d5dadd00975eb4cd02329b3e8cc2172e70406d0ea633b7f55c80c8e693a2e28b9032f6f86272b3dea3b09b50a99e2accd2edc527b7e6bf8352fdc19cc57f0f8c44415459b78ceea049df9d8268bf20e3255d85c4fd8d06c436a130788487271f8af495b9ae3cf87dab9b7b133f858d68c68b2575d5811cb41c9a820d4b3cb1b0d00e79dc24df85fda23295a39680f786384c1d1f2068a5967480dee0cd57bf4e8a1045a78594f4f37bd09f07ded83193b08d3fdf48bdc2ed3444f4129c990ea385a6fc80db8f04946ae0f13c28479155becef30b10469b553d949ab3e662a64db13267d1bbcd1d32c381c698d90f8795ffc0d653d93712d7d9d8f0516cfd9ba1a2189f768ae6885dfbe191a8bc171899be1f5ba68492f2b10c11ce8cf3493b8b779e91665a7158f70a41855f6fd6d3c4c271af13b51b216b0bda1359978631fc4bf8c9c2eefa230aecf15ca161a26bb9aa2b6f0097501aae918658e6f9fdf244d154ab42c26314011f8962fcd7325e66ee8524110698f7689f04fdaf54950f0d50c9b6837b869a7fb10f2bc2fc3aace11bbad93a778c65e424bb6c558a2ef1ea23e5b2a505ce0e3466ea6ae36b2d23ca0992a3704791d19a467d13d43722c3fd04c784ceaa22287227ca7c7780db8294ddb15a48623e3b36183aff6e252c95944608387c3d412b64224daccf79f9d44740077f39b39af0de8d491e7fc28db6462686c784ca4d1ac5e3a4f06fd0be66f7c23b4632e14335844b14ecb115f1ecc98a7ae1ea173a836ff89f6c2053316428ab3fcd6a580f59e5a1853a1928fd6f2ba56dd5e11311c349d5f9fd1bffe5e8702e34c53780d60396c214c2d259170ab2b69ce7f390c8f1e10a71c09169d33bcdc73de824a28665aee015675f8166bbfd7bb98afaa859d7c4cf94bc14c814194c5cb0633a0aff883b0a8cb4429579e6b00393a7c239bb16d723390592ebcb776117ad5d71cda6a0d532777aa3669d7e0d5ba015b58121d212c7109b0477d2bfd7e9941055495e7a30d64f079864ee0c1e1b6c7244c246a5f5c8475ac34cf8f76c9b757f729be18c5c5cd6ccaf9d679a941fc9793380b78001d442db6fce0a6650b2da50ac4d42b46750c207791d380a3b10eaec9063567720d4d243b7f6e0b00f10c1142090e72cfe0e7929e224974b066e88cca571c4f35f10c2a2cf01971b2ba1b6ec3b2e4f35a9ede02241b95d645b92c8afd1c0a36619e33ec7f64c8029a0f715459ec8b72b76b27f22f56b66fca9f155cafc041c91f3ce363ab6e53d609a0b23cf184e57b0ad5168dab002c4b1cf9a51890de59e22bd1396830cb21450898106a1eafdd674b2b236fc78d1c680ba7ea9b348cc3fc59220e1a0d1d7999cfe16deb95514e50c5ca009f75bbb676dd78547a9331c25c0de1f9bd48ba9ae84f385edfb1e7cb5697b1904eeda6fea9c9e5747b89f155cfc1290b636a88fd21aa09e431eff1fdd536669b082af178997d97a71857a2da988352b76500e93654b529183e73f6646ee92d927b6bf3656a99c472a220565d5e7409e9771bb664e87d5425198211b0384c93d0fdb4037ffc325ba87e6d73ea934ac34358d14e2a1dbf8041cf061604cace3c183d4bc967a250fb9168aa5d5640cf79f6cbbab3925a6e028f860d3ed620321341483ba1450270c1b1bba6ad42b55fbab7bf73b36910307d0f4f4a6b3c0312b85747d4122f1702e1e19817fa61306e04c5ad1e27deb0e2a6126293f7d4d1574ca4c3295465f0ec0edd2414303c390078ff87e03e7f0110dacab66115a854c286535690de89b705bc7936997bf5f42fd47f6e62dee66c7d78f11c53c0a491671abcf1261342bb9b1f228a06c0d997a9c53b6c5109a337a11da581ab3d9b4e2c6d7abe49effab7ee1153f7a0a0ae923085964cdf5f307b26a1eb9dcf2cd77a4f9edcb21cd1be5cb2b62b340f190e1818c6f65d3fab17926be98111c927bb5edddc58a0064c4f1691f7576adea54b1cccf4bb9e2c7a8030018ee3d7c8f3ff193c0e0870330df57ea7cedf3ffffca50049c52c6363cdcabc304ab4189d4179aba2c45eac11d0b76d0461a5fd4456c7b0a01139fc24d4019c733ff58f3ffe81779b859e43d562f0832ee99b2ce743d61779082948b5b8390ef807b02d473372048760b9a3f4ba66449c71015a031b99788bab935fdf7c2ae7219901187577c06e19d5a1edaa196e333c5f25b218ec6d62259e36c26fe699e705f6aeed29efb0e8d90941037640b13bedcb85c88b0b19b3a8438980b67b66bcefb1ad02eadcb373a3528da09cb5a09706b14d33232aac530b2e25e00a9045b0de424a53e3c1d5e326077b85a118b5cbcde17d978efd072556dc5de2436086ed0424d615610ee32766a9c1f3d386f7d101d64a62da78bade27c9a1e53e3f6cc548c80726566221c33b5caf68bf0f8273514479b3fc943b7930c97e535ed2f1d2c45c7600d95dc05fd0a98488b939eaf0e38cc3eb4ca9ca1ab6b963ee065e07f7475bdba7a4016463249a12a65796c786cef391e907546e64147f79db20229e1cd3ec0399959f6a798c19952ef666c80fa0ab8f3dccf2d86a36532df699c6126b201c9ce52d5bd0182faf038734510602d8afe68720ab339d1f644654e2d7c80d18d83da9143ad2258983529574238d496d6f2cbeea02125a63c2a0227153090059c66d4f93c4b2f1e9b65d455da9450e45474951f70810f9ad9fe72b3e44765cb6e56f8c18364205f20779d65b90b647bfcce409770ddd9d3bdde86b466fa587b6001e7eb63d0c551ecadda31d5c4d1d2ae820f97eeab43f5dea5b0b0c10b42d13f02925a24e4db8362c7167156b21764bbfad0a84dc89eef9f2350113a5e5723dad754ab78011bedbce9cabfb0a63c7db6f809ce5ea60850a5ee55f65cc9fe7d5346beff3001f4601ab333e4b9de824079ab6ff62e0a2a71c9c0e060f3055c832397e9bf8118e956e489dfbc2cb8bd3eeba70ed9fd3631dd245a403a28231d2dfa441348c9c30f94044c136e4cc48212757adc9a33fe360618a7485b48b987d1bedba9019502b6a64276d5779b8511338f56e055bacc67512ee85825d44cabf5734dda32d536213208d2e060cec878e20e8b61016e7d0f0c358ddb7bb033e8dbc3c56edfb839b088999db616b7f0dfbcee91e140acb176d677487b86ebb8636a32a17dbd94878fa0ec043482ac9e007a7851b19ce99fa89815bfff81c44d2611a1743e9c0f0a834ebd9c2b020f3b31f0453315fdee35af3ad974cc6eeb955d366726d99d0a3fbbdb78cb074e79e7254b1ffa65b1b01dae31870720a11e9386f7b3652cdc9e32804d700e6a6609a2703702a7e4848191d0703880a9937cad2df86e971ac929c7f1708e8d3c82da43436740dbd368ebc59a044cd2480130f491364703bffb5c4d21cd9d3e2c036400ed8e6f8524ff80bad5fc4b6c682e1bee45328b1add5e18d4a462edc1773259ced1c649d214df871ff5e02d3a373dbe2ad1699059b626725fb55bf953742e9832a267d26f541e0ea76558ea6e99fc54220bcb17df82fbe0463679658e18c37662fc6362575676addb92e8fda38db62310b671ff2e23300d2327f95d65c6f04693978884a5814318384d93ebb2507fc68eebdc6e643d96ad0002bee0114b00c8e5613dff164ed36e1524f6906da21e0f765e33c3d40c2e0e0c94ca943f3c14fe7537c9c7b08115c50218df109b200df3c77324cb7dae56612620821022a358edb8d9e94778f4beb9585734c12efdccff3d053744974ada8c236ab877705c4d27ad43f909f4859118ca24a0329d9c108525011683d14e2734e04515ed8df66e6e2d5d7cba11cdb5c5ab8f43523eabce8325de58d24a28c3a5261fafdc95d7fd8b3c06f77bb64e9413e53b01300dc694f54efa37f9a7b67927a41c4102974387c9410b338230a2099e35aa96297b41524a34ec38bd70f23b6e4d1f11720f0ade9c6b6c6a74338961e4d847efc97283dce97e0ba35136b8a030f5184e68d7b4bfacc1030d0c52b73f34ce84e4fd6ef9bbba294a6b4b6db877d59c42e24bc5718cd1c5f11b46be8b8198dc0d9dceae45bdca8c1dd715f1b254916ad8dcc65485248e5ad45c8badf6cfb278db8b9200a34279086748cb1a5e5312a1fadae0d69cf8fe261727576d27de3d024c210b4cd7014dcffae57fa2645233ddb11efa4e61b8f42dbf896ea76a5828c71339e6027f0215ae445d8a22cb7b27a4eac8481d72d7799e0cefd05ae0b6cf9db50344069154ede5afc4b72814093e29956bca4abd639e6c3a8ed4451a09928a7d13af9dd99a20f1b6f9ea0dfa5222903c1b351efce0ea7738ca16be3f7e605bf8c273d8ee8a4442b35f4b8e236db2771fae0f35956effde9d8c410aef69250bb8c0a97c764e26fcd62234c636fe1ddd514885563e71ce5ab09f7f715bdc12319e7048a3e946e1c6d3f3673a6047a00a8bf4826d96a99734a024f3c3017fd0eed70ccffe5a65b7aa087eb210b77901bce148fd12eadac31187ad54ae228b0be8fb12907d63f457b8ee435491fec32429d3e21a58194617d843404ad162faa3407427be2dbb3c6fe4b5abbc946e8114fcd0f95478bbb06ffce0e4da3d0f5a1902e1e33668d2b020f024f57365e7a03b58420d87efca2af2d0590968f2812ac68de4a57a7f9371c2def749966038f84dfdd85a846fa9fb3e37b94b72f7b06c8b1979afff95072bead955142d96d6c302388c31a37b70b2d0337e2fca7553653387348da3f1eb09625a954c9e600cb4a3e6629153b63fd7c2af1efa65de8f694a85797aa86eb2ed3e58c71d9c3019a39694c69d596eb04c378b5ec6aa10a183127b8a1c3f66bdbac8875f6d1531b4305f73fd3693e45f26a623d22f02919f9b6795d0c90118581d98d7fec43cb992ade85da50347c3bb29b958420555e399c15bffb5c0f40d14318074da47522883d96bfb2ea6fe7fcaec5ee44bda970cb3121b8964b50b17532a954fc32e357199a22aaec5ca6aae0ef1d7d4cd67248154512a0f683f988653ad3f1898bbb8207c21c885302371a1e691897dff1283d700a0495aff2c55d6cef5d51ef905fb5d25144499f27d69a7089f3fe984cb7a0834e77907de700089ae415ca90f5e7af09ebfa8ac7aa0cd8e1182b177aa0001a562dd0eff60c0dc0e95f4d93ccfc9c6206dbc62886a4b34a34e905271df557cf3f07d78cd773e08c3e3758d1bc3b7e40c80ad15c6bbc7c0fa8ad07af3b1506610721386666b685020f8e12b27e46bf61d6ef697025b2690d148d7dcdfad9c9b3b3fb02d8b78697505afc569990cf4676538981fcdd98536c8da6f5b2af58518bdcb72a64ced0c9a0c060855d191f2d88adef2ebace3b655b17cec3260e24c1f483c7090bdcf761c5d84005942af0448e93a02be36f259f27153c7e1bf33d3481c2c8da33269cb8371d24c0ed4fb28cce1a7c5622e2cc54a278c781533d0b3550d0a23d254ec5bb660ac7a1a3fde5bc103e5b3114767facd7e6876b15669744ea34e6b70d00436d55485d1bf3afcabea02043625773b623154d6a9ff0cbb958eb2700309c4a946389f95aa1aacddd3321bf7b332d81ab0840a057c591e13a587d6c08732821ac464989662fc69fb9eb2df83b12aa5228ff7bc00a47a7b2eba1a231d0b16bca77552b9325c01bf0bb6fce1630127678c07f21bb97d5d570be8350c15ffec83d22e0f3bd90d517217c77b848db691d7ade5504e5f3e2bcfa52c4590840d325b1adcec3a35bf489d0807462aab7f0f0984f1f0a8783240b8f161b2941c48a52d9a2189721c7278157d507e6d203a676de43d21017cf17a31d0ab64b4b07e6029f434b13a8e57938b91788b209602d6a580a352537077bcfe87eb5cb797788564ae50aa667f27d13d357800f90b84b4da42b6409f5ebd287689dac5ae29a7af166d48af371ddc7aadfa82f6fa87d6b882ce74d0b0401e3c4a156254c772da9a4e26a15952a9870e89e96079145d51a1bb981362bebb53ae563741c6076d963a628cf8827a1fe9634b5c72e748b458adc35463592614ea5211ed9815df691dd5a3b29d4a9ae73d9b113f7001a8c52124cd093b75853e4b8113fa4b97c9d06afac0ef9802bf066e0897b168b18eaacabf1ced6fa9c48d24a4050dc1ea2cabe55f5a49f25cbf804d2496edc12fd4ada754ec4d392e92832f6cf3f747a68bb29b075b01af1045543de4e1d388b7ec3b3305dff3ee8eb94e19b2f8afd90fb7858835ebb6825513953b3422a262180a7b1c4a25b34b67a50aaddde351d93c29525f868180a9712f64608a84a29b2e367bfb9ced2c58cec76c2a142d3e5adda054618ff1d9931d58a5f1577203a512c683dbfeb71814ebe73d59589f28c7a619c1d56f46d8270dcf20818cad959c5f0f5e928209481b489f92ba6a0c18e8a8ff73805ce4b7ce5010505d2996913091ecca569fe8454c94b71568737c436e2a2e5fddd9b437ab8e300a6078a6b1fca09cc6b9d65ecca6dfb9bf231d5d7b07b998c7a7a60a3802063234302c6040fec54d65e01f2a586d36f60c25dfcf539c2bbde3add0989e9ec72dc420eed535a069eed8379fde5f50397ff4e0c6066c417f725b3e9f98663fd35802ffe0e426fe1030d9a0a30ce4059fc28c1002853674e08b01de71e2130c96d8d4ca6b8c665fc775c845ea0d391049fa96b4045f13d3176e5a0039ca4eeda38e30b5f10f1ce0be1ace64384980b8818afc398d6aeeefb5b5532cc011c8e4d218093870248ac740d66e72c711bb13d13d926169d19efde0380f2b81662d7547ba43dff7d53fdd0755085ae2c5e7fcd1093dc8e806fbd7f516aac9d2f955eb413729eabc0607970cfe492040de6f9ba80703517240bb575fc43bb39186d91482e6323f6b3d3fbd66e0b348ce9b775d52685888c8a1ed7cd9aaad7ac8b35067cd432d24b5997e1377a75ae489bb180c8d1f3130dcb6ddd897b5335f93c6f25d27310069d467f1600ecf9775e0d63dd8e612d737bd5fb301c5126e9886f59c661cc384be032acd94e65a0b199ddc8adf51d9a72ff46dbeaefab12c7a71fe65c512f4ea28d92455074d043a9e58c8a91235da785834e95d9e0442ac604bbdae5600d0a8622441ad679d3f68ed63f9eae0e7a730937a1d8a1be17ca8035691fd460d52107a04cfa9b97129446220f74d5031b92cb0e7f6275ce4ddc9530e47ee0b62279330ba4db8bbe42242122e80a3420c8a2013ec7538749f87c87d3e058c3dd3bfbc6ee111c9b0e0c045556fd9055d9d1b3fbc41c6459db9a8b325d07098ee1e0b5d5d41972ab60bcf33edec6717e7687ab60de1aa5392686f321f37b0490e5690fb8d0f75edbbec97ad10193f3ce94bd31b18f99c7cc3d02b5cf1cf7ef719d353203f6ac33afe724491baaa6c6f8a0a4d3221e02154d2949f95c466e3077d46707c1df1bfbcbcc5b8078e6ed27be5fef5ba297b38e3a6851bb693f4cb8a4e8f75a6c2935db15168c0ed6673c79e3694999f14877e5946968cf7bbc3913e2490f036ff533bfe39d258569041e71b6a91d0d6245053b5c119d53d4d575f207fdb7240168ea5ca2f27c1563373744d0dfac3ca3e698df0139fad2a987bebb351fdbef512a1ee7b0d62d9d6a9d356a421e749e7844957da62d91a57c31c9dcb55b8f6cd3eaf4fe79c14dec2b7a50e0ef4ee35df0bf39657f2e5457a2174be52e74b7335cd770b6cb5c6eafd132590b6fab636fe17a66ea80f1c01f34e291a9ddbff02c9328fdb5390770a711d15b9b7244aeae0cdd7006781f5bb4431eacef1aa5d1abc2960ad7e45424195884cf12627d72013a1308b011d3f6ff98bb21697d257886c1ddbbc55b8ac09eb31e57d37c8d4cb80f8a299bea1fd388428d3cfb7e4f68ff193fa27b682320c55d9411d29c010ca82f752553a687848ff1cce097aacaba9cf7008aa5864ed71e20817a5570374ab55a4db3e03883af307295f528fe4f9b46aeeb56466f6d15b760a3da5ecce450ccf84c166e020293138f665d505a2b1747decbf0289e98570e545c48a18b8f507f68f0519b18e2626f57a67efe8fc13b0552f33ff3f519eb0aae3238284813e7c4e67e6e741d7972710d1b5c21da068595b3b739ecafee3f872e4f9d0f2021f690b47dcd3b500f2f4efa723dee57039c7921f1fcc6944b0b6891019aef9fbbc9415d378e7a1861ea8604bae7876a5765297b7dfe0414153a64bd3bc0dddfba8e1ba63b02092820752e2ce96503afb35f3ff7bc45c12f67b3e88713e225da4a194cbcde3101757089360056610dac5c52623615b9f65a11ebc10742721c0569fb30acb570cdb8690510b73d0ab230ac4b468f707a93581444753ba774ac436bebd9091c02c5d59af527d43e9009d090ef5ec1b953ebe1274374bbc4fe8252797a01f8b2cd0881816f0b2bdf2acbdb0b161d9563335b5b3591934b3f48faf10d1bf667db2392d2143c3ca005b208beb2b9d131e2b82f26ddcd6f62634b262f77772d823d92a5e93b52003f7fc694982f36901a30d1202ff131aa289cf5a4585b187ca443c81ba85321b61a7b8ad59ebfd6a9d44963f430f7012705ffe7135e315b2b489d8b32a3acab77f90fea05b5b3b49c33ae0c1ac3abd0b786bfc74d93c4b8676fbebcd7cc0c7116f5b173277ef2e58f27e6ed51b47b91db5eb91ed112b45bc1ee5d6ba0042b29ba16bfc0262876fbb6b4f986b0610a7b7e2ce9cbf244f406b904f4faddb3354eac70f96df4f3cbcf366bf3a391b2adb9e308f303be634c4c9336445783d44b771a6102a494ad93a5655067594c22f1f122249be1a32dd812ec56cf38cc460283d977e22f6706049680abe910bac81393e3414d865c5b876dc4ef5d79d825e29173f0872b2a0a684f309193a5e2a286f93f9296ca9bd79cc104077878addfe8d00ad13f3679b59c23775a81905f757161fa35a87e7b29313dad59ef8f4f310414db853f3dcb0a9166e26c552548822ea96db8da3abdfcaf9d2eb75798e5cb9c4064401fd430e1cf1c19dbb3deb8f4cde3e3ec26c045355846a51b857d1854078887785c1d550eedf9216ec6ba47548fbb3ce8aae87385bea6f08415e320a1137221add542837b1aaffa98baa7f78a6ba40d432728351148f1e043e7d8349d80b7eae84f7eb22b97895ab13f007d088cdea56b859cf941b421f5b79c9f47ed83eca99ff1b1da363b61ba890d18e555d048a0924daee9918f5363f91d7d4d9244fbff2ec8901345eed6fb315ad8f2fc4b03eda72d41ffbebf6865f215a1750a606e59ad445740222ee34935656cc2fec2e17cf17874e488faff03ce72190c15678bceb8b9134a998db40c25effd853531aef8ffa4f3b9d64cbbd96fe8d6f51f5f3dfca6e07e2ae430de0aa2bd816de5453b2e29cad626e495d688dd6dc1f8913fcf1fce536449a452d6115e18940b71e3461d3b291354df090edd1fbedc41997576ff9e149bee84bfc4bfc14c65c99d9f2ccecda27bb533aed4d326d97cdbe161ad69ee078eca5f59a148fb2cb63b1546685c753d51c297e1da04a9818a059cd85d551c7354d7f997a2503c8ce46ad855e8de18a463ffd5d1e424ccbed7a186a1dbecbd855a143501fc35d6c607602a7f3018dea3c1fc3303f19ca15a842646fbae0d0fcc99dee1b5ec63b5361d890f2a4c186daef9284cccae6f276472c82c162f07b7be61e730e51d8975be44c6dff2903aca5bea9b29da44e78ab1cacfbc95eca15b32b00b255751cbe9430d3291253129a8e3223b77ac67c5df5691489a12ecb914e4198e4ae35f527d2dd1f651469ed0dea6d3d99d15c0ef5b2f4a81559ab0f511f5427567f987c441eb22c3bf8bbb6ca7a44e36bfbda1d26c5cad09742d1664ab68e710cf190c8eda6d49af8b5fe019590418f795a011f4a8bf6b23623ffc0aa5a673e78058210eb5a8cca5a1e0aa93a4918609658d1c71b57f03d7823ac0b0a4fb2c8e41e12d03271612a1fa62a20bb937f4034ba87d5fb487a41e69fa876ab816ea2d6a7257d01d33095019eaa9414f8b7e6d80e8944db60725d9604f5cb9538d5bb641db61760201e8f3d0b342485341570d4299ad5af6f20577d27f13405857e4015183dd595785f7885ead9e9ec8b3a4a36adc94a15d7f8793b8c10b5c9650026c49e3a5305e48708c0cf9828a8f61f2ad092280efe7a9cdeb52c2b52ab1b8469cc308b0b0c5d666f1916efadbe56b311997b5430109af14667e24efc578b4de87521529daf742c8161d17d884d8194903be30d9c01e94f51a9efa2cc19cccabeb24bfe4f622a066d083b309ae5e5437ee1a01363d52a0ba92cd4e7631106cecc0b5cf1ba9808a15d56134ba34822ac106b4ee715606ddc3a8289c2eca9763746edaa47aa3af9cd623074044b9cc4db360648d3d58189afbc65154b0d8c16675b8d3ae7fe42df81532f8b3f4a92b95b24aedcaa8fcc3ec5a6b035bb728f78ed7b0e4f4298f22c3f6f4691b9df3a07a9c1be3653991f1287e29668a9b1b6bd6212a598ff7baafa6af17943bf641619a771b35715138126b499a182e5b7c709ef26ed32d34d5f54ef7f0eb88d2f97339f469a2d7e58073129deb528675da1f2b08402f8f976dcbec80095baf205784bc7c0408d184ce20421a02544995754b24d95a460b3488edb588454c0dbe58562dd64d166fac4bfe61f75e521d0b047416bd0a690ab5ce15637003fb3519643dba50b9a6157160c69be43b7f2118ded0f2a4866b8bed3af5b26bc1c76ea4ca0536887b9cfb73e7f75e008f46640858858a631dbf9eb6148be43c1c7633189bfd97b462f5ac299b90dedbe8da6b1d55cc1786722cea1d5db13e013920b185682c768a3872877075a4928f5e48af485d3ab6bc4d6a29e40001880dec5b4c39f15492ab4f084177fb7fb5dff1bd1db6bf35e6d2befaa64b6c6191da2e861a6dcf0e4da71e2061f3af08c670297994268c6b0b38986ec6365ab0a901b76966cb9d212d8b0a7fc3a7257c080ccbc36a1a6d57ef17826d7c96f8ef2649c07d2fc1394e5d03c39c163b6c8303f4e9bfe8cbaceb3c0328a7d228bc52dfc05bcaa6a00dde290bd20e5e5ed1cd0149bb52c9f9ee050228432067877d4db4eed517b4938ca3862d41a77243300b927de25abf8169a4371a8324ec85b991040b066f715e4a92875576dd7f63492b08db2783eecaa5be332c9784a6e00e73354d9818aef158b8e92eaa1a8395dc3cfb15cb6e6f00153c3057daadef3a53c42f48a5396ccdd52d88169a8dd3747f24c7f2e3b0cf1b01c2d0b36397b56dd9a9e15628e46333d182e79a573b95176aa809fa82fc8dbfa4f996827d76fa25c337bb1827f27c29f94ead8c571d4715b4fb263d843f9fe1737e6bc4c4aa52d377f433fe9b4a574cb2c9229f223f36ddbb08c42a46e6ee45dfdb1b63735868e69a8040e5753fc67188bcb69849f8085db2374f73b65ad5c81ce1d6e996b5795f1bb7e2c53e8c501b21b57b137f9133f7845375fd66eda679be18afcd3525d7ac3691986e3b1dafb81917a6cdf8dd83c99f7caaea9cbb258522612046a5d967d988fbe850162f52ba7b91128a7a94984342cea5ab8bd10bf0057a84b591dd240b8492da5d6787dc73b086bc80ac7d650d6078e1242ebc8421c4da9ca17b119a51e9ed7df2aa7ea3ce1e29485f9fdfb33d48951de36ffab13d0d4c0b3cabe16bc41cbc61d4795432ccdc697bd99fe89ce08cefdd5f984127501d8fda7adc36cef16e6f1c3e14cfc7d81e5abfc9bb3d10cee441e7552a556f46bed3f5c0256a0b9db5a8c6fb9177d6ed4e4ba2e19a3b53d00138c625a94684ba9eddab16dbd200cdcddb7c9749dc8484f5cc57ea8cea7d1a959c4a4af64d588dc78032f26fdb9f2ae1e3e09540232c58dea23395ef20f80efcad05dd380f4e513a8c209099686daf885e97c2b6dedef822f131dc4dd106564f88d02a810fc1840251f3db33c405a426aeca8c1e86db2d05276ff2da0b3944cef044589a4d7c9c43b38be8aa2b93ee1175a673142e1a28c3a4afc42acdf990e0934216bc7041de0d1aaaf8ea975ab16c34dc82271ac784cfb3d7094a4e025d28f46c660ec3430b04a27b1719532e39c07a21df848bbe1f172c71e3972ce3885edea96f313aabda1bae08419676fb3bb8b7af62d8bf14b63e0c2c0e036a7f5bf332a5623b2416440351c31a0f7a3c67975bc249f46b8f58025e59a28cf89078ad3b4e6edeab159af410fe3b9a92843e3f621def111e29ae20fb6e64323e1f27c19058c4a84aab740337720627bff949e5ca8398bddb91067c2a86a5a2c00de819c6baad906cd36b2c32bc0ebf05d394cfc63d53bfffa93c5b98e0b35bf28e5cd0b62faf3efcf8a1b195db145c93e27bb29a9ae092d40969f4df5cdb18eda97c064ab6bdc74b7b1e8ee1b48c542606cc89476ab240a87b64abb701f6aebfb91da4f91383c9d131f809938eb6a069b430071183f7a91e7d1aaed47a8cbad7efc8ad384bb21a7fe24fb9f297477aad78f2efe03db89957c2abd8c59386c1f9cde12f142c6c8105cb1a70b45da218b86d050458f5022d16b1600b59c16baa2cac1cf80ec3b321441dbdf4c4559f8b3fc76748168d286477e46b5c999833abf737459745e3f295327c747b9057e5f6fb49d0ce65ea08efedab7ccf1752a61154ee54655da58ee30f809234a41fd2af27cfac54fc756f862987217dfb4f4d87bea4d9819ee28bbd4e378777cccef2ffb0c67053f99b7f6448affa53498ff3b2e502ac0adebb43c7b4a1bb54b8680c8e57af335c9f4d31ae318ebcddee3ab6598e02f6028b1228c966333c98ba54b4af6da09fd88881dddf3f4202b25e18a561677489a4450e98092855338777df7825fcc22f8b41afda8e721ff080f81af357b27c8615e69bc43be7e433e22db9990395d4be683f542912372aa6df09cfb65cd71252bcbce8a4b6cfb053f6d07650c938a665a52e7230e4779f8240f0ef3a963580dcab23e7fae579ff15c7580ea9e84e9fa90e660e8acf0a6c34c1c7d4de8dc3e837e22dd067278209269b845dea40d938fb0c22b1df38c6b39db81dfc86185dbc7e535e9e9085c179e175cba48e4db87f84e6d5e8d6177e4c862e51899dacee440afbd5905203a0f2b2475d06cc0b0c95471d7cc50d71e9401ea7a6c1a247081cf96c55aa07697c883cdfe60cadd87b308d02505b2763f94f50ec978e4d45c4b205a2c331dbc5f14352e54122b9c9751aa3d9c345e8187b6be4be93fe3bca58ccacf7a8332e17d7a0c46d59172d4244b0ea23d81f6332f63b729934c433a41c01a49e32fd0bc8310ffbe652a1c3c62e6337f0310c3577999923eff0b5f2c1423ba0f1dfa2aefaf7765e727ad70d52b93b7d476f2fd2e3af1447906a4c8fa4113b6c6ef07b13ce6bac93ef88b55bab7b4fcf104232e263886fb21ece27696ce6154f4b06a29f110dff8544999b3482f84eae06cbc2accbf220f5bb2688a963e5afc2e23675d4189baf41ac89ce5f5052f9a697871096e274d25a5b25d65328d4477a6fef1914a164709e1695f67c44baa640cce651ab9022e3bd619e19e6d73beab8d2a9f575fb2fecb9e2a79e2cb7fbbf3b8c423f3f8194e7297deb8189de9bfef75e6a33abec593f427e52b8c8ec944120dd8b9796ccd0234ede72dfd24b28b9dde06442f3f4657990b34316ad25643e1cf47199a47a1913c03dd02913cf48a78360f45620f21e2093b0e3f20f3f0e5b32352d8bd7f07ce40d577ffb37bdcf280d5546e6ab4d93ab881000676a66ea52b8796036f59cb4faa0c372113cc2aaef8d44b72edb28ac088a7278f570a16c712538b467076f566c705fb5cf2720a184400ae4abf338db16e56682019c2cbf1a3167e87058f49d8383a10fb9a19d8dc30c3de0a17f455f2c47bd6a5240f2784141361ba47f251a3f4492adfb0e86645b5e70d798a27aeb91b77db196379c25f128f5ebde7d395dd2a149ede1435d40504b499cdb7d0112016216fddb1802a2c736c5f2fbe90f6422031fd160c428a27a0aa24df8a490ae2e3188a81601f6257593edbe5b2d04cb4b09f50b8c94700c04ba354742a2e6b13d399c9f9febb13241f0ec2e64d03b0e1b224b4120995922ed758e08528b601b45f26bd3b39a67838385a27effd6c10395eafeddf9877b7e8abe2f9a82a51ea2d442c6d0f10fb58b2a6128d9192d01766f61e7e19b685487022f373e711a698b695a3be9de94ff05380539952423704593e9b30daaa47ba1d183ede682bc4670fb5bd9ee6153f79142563a8493fa7ec0a11cb92b72a8f64146f101035cdb774070d8e3b9477ec569f1d947e561821bf16c6d95956113518d04ca69ac6b2847a52719108fc009a7c28345d69e8bc35b77799ad7ab87785a6285751e2c5eabe2026f3a1004e0f3f5834a5cca5a91bd212983f010b01dafabe992b63312a7c62ebb0d16772f1f1de39d2c1e1d02f932ca16f95cfd54fbb25505cc4100d7fe4b4501bafd3ec8d9b0626f214667decc8538c57e50ab6320155c4627a45217dea01281a3457d58cf1d0d59b918ee5817a4d1656971cd072dfcdc5f6979ec0207f3c25ae89e0ccea59ef6d093820be86c043895431ea0b0eab4086ab0f2bd81fa7cf1751d4238836252bf09e7860b3d5eb2dab14bc00cf7c0d24aa9e9ac9be980dacbfccbe9b150f3e45d85fdfdd82d086ba92bf5edf4a43ee046f859d768db246d9be3f09c5c59a7c766bab4a3132787c97f46665dcfcc959f8a6518aaef03b4d066bd7b49b607b4f9d148fc75692c7b8319a9faa600dc1cdb1710912ce209c45f9dc2d12eea23b16081195c634d8e8bb5a1babfd799b5ccc527d0044cbde72ac8feda4b18d6001ab1092a6d496585de3f2f41f7d3662ec4ebc9c30542884d83af30b0b5678c7dd0e67fb45c4349d5a232c0eb9a8976b6c6b24069fa4aaa6bad67b44ad1ef1c00964d4dd96c486e71884a8672d1f28697b86a3d8ba0ac50b54bb32e7fd29eae9d95194cef721a56e0467d96c07ce8fef225ee5de5860c1fbe459a337ee2f8335bd88fae2457845ec214964d2aaec45f95bad28d1190162454454e082d9c6244d1d1be72299ae8c97230e2fb0b2bd558c8c9292d0175734c5c3a1f0d8a923be484d2c66432cb1fdb325aeda94cf19de687c9d01eff420fcec4d97fc143c8c845f695b2f1c111a71eb0584e0829aceb27e2d35120fad6af4516171a94d537efccbdb5df4c4aa51e3b007383dc5a40b6d2d427540da164db80c9b0f3f0f14bbedf0e33f7a9ea5518e35df8de7c2943d372aea59cf0acf30e2e8da3a23fbd66ca4d9ff2758d3f0236c20bb9832d307f78dcd4559e048fe144ed13b491c3615b5758413ac5757c22987fc3897170af758e7cd5df9a059b5ccb7ad8e95490d0f352a57539e35ecb3f9c2f00c4a19a0ed5d270cf145377b0e86aee820e0e04186b1fa7d97d9be23c75ebce44c43340cb08cb919a6347c057dcdc483f31e17994f42d439e7b4ff769f8d8a0386da94974a686d88964883c42e491c962267926643269c1210c4f8f468c108b14a233c4760032ca4a5117aa1e80c8c632049c50f3be6f4e5feac09a8a0b95c865cd0ebf729778d32e88d690bd84f3017da5cf572aa49e9a25381b2e85e30e8e9b5befc786a2b7bd1e0b0a88939670b2f62a0e3bc3e5eb5fedf72bcf23956a792e3e7ed8808d00a893ff677bc1b48ec004758a9190f690d8b792b12a7637c7e67169e5c62b74eb2d3430b951edabe4eaa4ae84270c408570945383b4fcf3b48448586c8b00ac39a61f8c09975fa1f7cfacbf2eb1579ec83b4ceb49f49e86c3c1068524ed5a3b48a384a4680c0d8b311679d8a045f6e27dfb38eec7803cc260edc6f4a567f15b521fdb2e3a3f6db7272c74ebdd93e950d5bb7c54b2eb690c072654a8db5bb8fb83fefd85168a4144315b9130e8038a20c754a6fa182011debb6e9a2be0dd883edcd06a273b21baa54d26f6a3e53565009e574e1f5ff55a46de853b0aeab1dbf9dffd21368b0cb9235b2f91815491aa9151335fe7c3f87d6645578157484aa9391cc4fcf81f314d589d1c4bcf4fd631e6b0998adc7aafccf2ae2368266fd807bb78b6d15769cce1b49338d3d3e3e2f3085d6fe56854d3a3b57db7e31014c370735aa16b62de0209fb1fc6c699721ee27493d0c25bf64ba70cc84ad4b35a13af0696012aca3d643ac4fc42176f283d659ac8f4ad6ba4e61269b6e4582f11ab584f32771d665e8758fc83122169804d706012fbd1af980ec2d1315c4eaafc555cdefadd95af8f1f5361c54ad9ded841019e62e93524ec07f85fe24fd3ce35089f74e2f562458a2dc508ed9dd6e917681ca09168f2280f6fe0bf7daf9a4695dbda8835c57b68f02d01d8f999bee95f81cca73807ee02d2fe35b365b0af44309ef2c59c1e5c7f5e67970dc4b8cd01d46b75685c0dbc58fdde7b9296470ffee403b58aeff42a950bba04b553fac5986c90d38be72af1b67afdbbc4e582242cf7cc9a68d666a7d7f992e23687038ddbdb86562df58aa00e0d34cb47905bc68cbc7363a83daced17b7e4a2c609fb273682a1215eeb15bb33993caa2d19dcce5f593394c3974f604cad479df2999e90df7253e1a465ecb95dfeb5b81c78b3c4e98c79c5e7ef5c651003a4f418a04a144b88a2d077ef6454a87ebb15cc978f59f48d155b79cc7032200c07a7ec14ee8ab78817bec38e160194b7d0b78d24d9b04df7b5bb8de1d095e04986ebf7b724b9a05ade9b691ebaa8862a247cbeaaaa7b46c4875c7093f885d5fb51dc1396f19d4b49082bbd78ec4046556aab57051df8335d08fe1f4943442840594df0dfd3413e59229e09721bfc805ad338601c43cbedb35c47cd8e9e0a2ac4219a931030dac5ac91a309a3275b433add4d77f36e7e5270bf8561086e8fca04b527d26347b96ef867246e0385b4849a048c4f089a21c22cd8b5f5330b26211fc551d99c37908d07a2285b54e4b39c1f96cb2b010b36a4c20d2558fc8ae5e7306b7ca71cbdfdb95002beeb5aafecc654220567ab928ddfa625e98d1bb30afa48210e9248b1414d9af972a9eae1d8a2245681f049fa3b6156c2244a4d49bddee7d927bf407f32e8ae4ff316c00985b5e13961c6337d119cd2928f7a51267c3810570babe6083fed217e98262b77b9e7de180f81c26756042e4501bcbeb6b652e72242a533b65c0424ef4bc389e8a70398932ec99035a992288ecee1a4d3859be5cbc151dfa83e976792ed49923a043a6a9e30dd08c9f144dcd79f71ff1c092497467c26564e1856157a8d086ee7f5a0dc6ec60d4396559a79690927f83fa923ec9605f1ffc97ab3d0712bc6a35e7fae78990c4034dbf91b141a9571f9d2627419233a50d6f19167ccc15b3ad27fcfbe32e26d6f2c3f2ace7ee01df190b1481309521b384bd722ebee8f24923ac270936281eb28a5732bc138d255fe2102a0a35a576a707f1633000791a3ee1ad370ce4bdfae0c60b09a8669630f24684f53eaf34ee314c9652d2810fc8fe2d8b46a7936088751d524bcb1edf96a9fc95ffd52210a5d128a1fad2a87f178f8fba8d481175b3a40f2b8835b73255ae479b4776a46307cb056c0d792cec8b42cf86e1234c93463b827b774a2a60e02196cdaab631e951a046c93502ea3f5516ec8a193c7d399e4a9c839ae276eef669815f761948ce6fd7a76076092a077fe24593eb5d2c520e29ab8759b8e37a67270003beaf7fc13fb53a865dd95d505c7a5c29c34d11c9f8c256a3cc80154b6d8e42d24caa954112e2020e5c6d26868c3be5366c1a5bd5a03752d4f4bae644792ea48ba096e72d77f4a9f5439284db241316c52a311fdc1ffcece5d1144d7f5acaca82e582a3fc44e8e90d4a53a064dc63227b4773f38ecff0685ca147a7286ef0b238a02694ebcaf795e5bb9f07c0843e8d522c238fd642a04308d3789f2ce6717af52a2d80eb068f019fe66f4e3a03bf249c76a6fc3033448e7cf05adb5654d98d7527dc98a6677ab7037eb36ac6c2adfef174c3734d22663d81e21a778eac488fdeccab3b8afb1b5f3a66b6989245cb4b90da1480343077a7545753e23faf7976aa476b05b60ceeead020c8386f7a56bd91b7c3e573bfbc7f332a1b9a41fa6a633c682fe73b9f0890a35ee412a5dcd6e4b746e1ac2b0c4181a802f66e053cb4ceb5be17f3f1da28e0be198a1ab57352031632ebfc9dd174e5f705317aade385424d27438ca330059d0c6ac6636186954fbca5a76004f93e05888e0a0d2aa053dc4fcecd50ee1c7196cc2a6973f3768d4640b716bad4ae65579131c5a445f8bb925636024a7aecf520c5fa900eaf22cdb3cdda92d055500cd1e33d9a32fcf3d2e0bfed4950c8b765c6f38eeaf7a25c19b01edb832f2d2fa79f150095c47930a3861d166c1680086e1aaa48c78dde55ab94a3e5a506d0dcc1f920e8c690dde1625d10b5ee0f54409634260b872390466cc03a22f456617b997980c93352fdda17723965151efc6a4b38d36787895d413e176c9af313c58ea50e2225f2bf2398a66723c661612160c7b6fe019a98cf906fa26c0cf17c6bc7ccc30e4753eb08a755c2cdbd555ad4c4eb65b9355e91221f58a7ad69e60ebd0e71f1887af6264c7e077e6392dd8425ad332aefa285e49e5a4fb35474457cc4397743d8ea6104713710aff7d1a8eb7d10e155195eef362438228c621adad7a982488e5c923c67a6db41c105f3908141d1f55b3b11bd8985a20e35a43c0f74105b42dd38c1a85c81a22e7318705fdd438ca3e0f825c002f656370d1681d2b80c395c9752eaa526cda925a0dc9fec6cb588bf000037ba1881dba086fa343270e5273d4673463b5f1379998be1516e28e18afdf6cae9ab84c01c2576bba7a2a386cfe5d3dbdbf3c208c1a77875cad737a19ce51b634d8829a24eeff4a43025946b74d86a20658f9f77e490252becfc0403050e445b649044e874c130a7bd83b9568d104ca28dd00be1cabf802bfcab10a8404056037b185541e529c162ae23e3e6610a02b614deb18d01f4a9c5efc56284145794b48f00f1103aa181b1d5c3050a42cb8928626563dd301a02f447d6151c18fd8c71b71f1d07a60f698fc45c697c083be7c8094622aea4ad5a06449a7754bf40dd485463f50c8661b538de518f81e9fb8c7dbba36f6775b7738cfaca21dcd42d8c49cb9504ef9586088a3982353080dbeb0d641792a416d48068a05f25a2f644cabf6583f3222a311fe52eb46028eaa80227e40da306df4bf13a85ed74829e2510bbd626cbfb99f6fda254fc5de335cbe53b67689cf983188660304b91cb23923e21090f8d9060d2f4f64df49daa231cdb5488bbbb50b0000d344f1a1c67436d1fc78dd4c5bd243fa13b7555e27e676193351ab2918637bba9e23eabd21e73fbf9e54e992f6ceedebb0aeb1f4f1f4439dbda479915d4370fcf2061ddfb4e63224788ce63a2d69961499f91cdfa78ab16c2d0bb634dbe2ab421f736cff02fd1c8decfbee7753f154f914534557d18ff82c6f666556a17f26baabecdeb56badf058a94cb6c0a451fb13fd74bc797995679602218dc25712b5c73b3b40c09b6e143a8c3e3b4f68c2a84e4496edc3262548f8c87dc5432ad0667f4036b2818d3180bad9951aa5252e5c8b5240df9c63e783b323a3ff2cc54df32d7b85c6801998f7b3c3299404e937261f2f8547cad6e217bc627bddd16155a6cf4fffbde6163dd1d63fcd27f49715e7527be06ffaeb552a1f83c4e20ce3c10698e78eb5020cb0a5252e0cedbf55b018e13c4d053b0cede5783de997b901f10d7023ccdbc56e063379cff66df4f7bc017d785a388366571378647d703a899e256f5eaf45457524bcfe8b75dae78abed24a9c488029487cc8669377e8f3a33a4a66000b9c3d761f2db209dfde30e6249a61ba79eb6905d36a9b2c82d4cf370da056e0b4a68cd95b58e992ca452851f9b04e93be26e4719fb005a8fd52b952b881f67689adb29848b2cccc58d26f37cb3d92704a4c1de91443a5318e2424a7eb8e31e1b2c2564fda0bd5bd6c6d69edceaf22cf571afce6a12111984e7484185b8aa6b2dd4cc2db27ee54248fd5bc8460a0e6d9c7684f30e6ecf28a0241d3574ae627984593658fca63ed1c767ed3b05c5d3bb44694448b15ce8729e2a90d903fb73acac3a050efe32e18196b325ebb017b7294be1cf107c9c521e1d85ab422af649b4f498eba04eba4a0250955d0884a304eae23e4cdd880cba59b51354c74b2d7b80f6f287c3da3ab25810d5ce0acf5ec8aede25133bb584d0d3eea1be0c81b1833b505ef96dcde9c9a823430088faa8c51807d1ee6efb04de776a8787c3079406460cfa0a8faee28c7cf5cad099feec6c4311bb288c3cd92d4dc89aeb083d871d529cde07a16e3a9c7e36a666599dcff78941dd021a7af1a0a5d892813705ef8c474ca057435fabb8be5a626e4dbcf69f5fcfdc09fd8a54bd3f97321be940222a41110d02694e75956ce8e6710ca757c384c004b509b5d280cd92691cdae02619c306994c2e6cc2d40e05617b841f721318a849169007024a7a210e5e2d5de330624e4669d290c42b36c9299701f2c9f46500162823fb014292f104ba2c8f0f4f1f2f8f2b20153bff1eabee010d30a28cf03f18c189fbc1c2c860a5f3549f023a0bbfff91ead81ef8b5eabdc3104c64598e03ba80aed9369de2cd2fcca89f6f309e620e4a5834f4feb0df63eb3464ab062d3e8ff1d8731ff81c439d111a9d2e85726296b2c07cf12cc881ac43adf0d0161241f8978f371dde9f86b06bf3ec116694feb293d843323bcfec9c4ac9764b1bff1c2622809c24601bfe2100ef8d82750f519c686427a46a1e587d0b4a3c92a187a36ce9da85a0146e397333a44bea2d5dfc27d5a45d9d331f0c4774395d14bfc360a922c040b024ae848cb0511700ef04cd61c2e9c15127854f2380961b6a871c7a5678b78d30d3335e8d133973f77520364c21d43231f566247b90073affa6eaa336c57f5d285399495540f374589dc3478686593b00aff69330fe2d287a561c9598c91f548bf2b01b8c7e564e4ec2631c2d4e8437f9f79f2b5e9ae5824f7aad288891d08aeffebc7123e85a530d2f9e76e73acf9ac31214017cd27f1ebc81e64ec8642e82473edf2ef88c79a45a0d53be1a05b684daa262bbb7255f24377850546032d26c639bc09ba300120e48d6c243212c402f8f20d460897028092b71bf33cc46d5f88f6761f9f069276e68025a1a25f583b2bd62b549d253d0079b113b8ec7e7807c7204b3117c95b825df29a7b692fae54a7632e104fc1db9f38e40f99bcf825c0a9b701d567f6411669bd1ada8622ffc122ea9542a81af1e672cdaacec9f23042eedc73377f71ad501daf28a28770aa17faa13328e6645b5db8faee8f6e71bad5d64a0d6bc00e0b080766faaa6212b18bbd36b028ab7e393f972bdeecafd8c65a3f8f52069b774e472190fbbfd9773b06be7708dde1106c411c6eee789ce5bde11a74571208156bda4dde4973080610c2fb990a668afb1d66f7ab85c5e5c3ebd3db03454946dad9eaa21437c00a09207d18a0d9126ce537e1b6f282ac3e5e00ac8826daa46fda17ac1f77cc7de555fc382faf6f57e5a8e80ccaddb46a488f8f3e7feae83cc28c26189a7243a11a955b8bb351151354a5246e3eed618a18089292282ad575b6840bbcf7c989509311977ebaebed26d0b122c96840c09da198e4491f661a7f3c2c4f9403c0c2c4c9f22d024fee685c328bdd45ec1f7fc98805c5998a59c421bbbf7ff972aec5fc5cfc41ebb3a9d09ba11c94a4d1fe3d1f32be5ad3af04f6dea964ab9ceb3a9b3f78481785b5f8bf7220ef4a82a01e11c80d952b7cfca7655ee0b4eb931ce3046fb8f59bb16c61a6ead46146adacce01ff6f13a4f60a70db2cf581d5763ce9f229796cda9915b248af040a958909538cdb7d2194ba6361b4ca45e5098b7ec20bbfb3b287eedb923c85ffbe8385d5db21ecf881b01dfd68640a82eaa60051092befd94077b8beff6e107263269ecf99a5a0f31011acbb54eebed443d13e769de07f56ed25b9ed1f9eeada72d3f368e9f184b8cbb21075dd6eba038035404b0cec9d9dcf2f5b427adf091cb7a66ec4c1524b6e67f38d37da911c212c7effcc93c70ff76ed732b6181a77624fff72561108a742a31906d82a18f1a723ddf32e131b386c2c820ef9c68954de5e00a61676c7f62592cb9308e6591e1e13879d140446e8839a3d97883a3c34054f10c275cb39bf61cf96b279ddbda395da3622c027db02b6603381eb9c97be588e5a7b895c79f593f06bf7c7984328a70ea6f9c7eb21eec05b384cf2a2d2a8eb194f7420259919d98e1c59387efcd8bf4f19aa25aa92d64ae741941f1678fb1eed2042b0701d212ff0e20885fe8d97dc90d494afd05ec178a0eaf19977e8a851a845814f527e315bb1dada3c3fb0780cb0a0d24face66e657cef6a492ed7737c5cf8f92de5a92adccf833e77edb39254f44a208a0c410da2c0b3720284cc25f46ebad43c017d01b41a41c7de98f71bcf1d23db2234baba2a47bc7ae08fa315ccf5cedef81350ea1160de44543572d91fb6800df9934fd8787a3413320e0bfe92c2b9de88196b5327a5046cac272edd97383b8b659d342c9da16a9b98100824648ec9f8a14689afb154c30e4a90c894a27a301eb1914ed48b674f823d6371cd865f8a23e4cf5c10039811e5965cf1275676c1c27394b9080404fa163f7e7307164e52aca05f089193fd46e59c06f126413a53f4ee6e43aebd0f24e9b6dc0cbd6a42b6cb3c37a69065279c2c42d01f89cf4acf09b562eeb8c6d8adb9fb9c911d4225134aa2adc3bcc67ab577e9b56afbe03221a22f22725e3aff15fb00602853da3e063470b8deeb37b2142b794ad37e6a5abc20d785b818bc3d03e2f5774f897f2ff49edd71edc785c1a2eb0a2df0563d7b153a2ddd60786084c205869853434301837d8019d9485cb32bc7c5ce6b484d352490ccca3cc7edf7bf905d65da02d84f1f846ae2fdfede06dfeca4cd81271055e65e1f73d37a9efa0c01d36d5a3ecb68761d4efdab2d109bd1f52c3f84b6d057dd388f65df76cf1ee178d85e9fa79793fc6e9db1a7b510657bbd51e459d40e9b8ed33f10cf1f44c7159f967649c24966686dd504aacf820538ca0e66fbfa466d02e4a6be463dea43a90f538f4bcab02835016763e09699d0c9457468f60dbbe7460b931b9aac476d3e5c84696dea55cd223bf0fa6a639f03d1852a78ed781612ebd273ef55e3fb1b999c3537cbc2b3f4b398b7f9ddf4fcb15924ae94149e075286b9f45bb841ff5c268f1bcd553f68c4ad589bb3c26c0b6b4da8c65fb6942892314f3d2633358aee7249fd474dbe5a199edfe6c014193bb9fcbdf9c8b037d1dc086268b9ee2ace64b0785267cc8610c1522cc087c50e59629cfffc61f483ac60ad3a046b4452ea50353239583c8fa9f35f5c1f453994fdbfc34d686708472bf6c5e8ad33422fc6e7fd53252edf933f3d9a408296c85b6d9eefb72aef841d2e46799f197e2dfdbbf12375ebd0477da162a001ceb9418e77cf00f5839c98c180a3f6211ae7f9e03c3f6c6609badc16a5924fd4103562a51a06b96b84af83a90082ed3f79c9d2ebd879bd424e755a15896249be155c6116fa9e42cb55441df688371362b33897ed54eca10f447b506d21a9786afc3566cceeb0a833ce1c4eb1fd5ba226e89d5a17b8c7c4edfca5a1f9c749840d47990e733c205cee0f5d945c10afd70d9282e16d7b7e7ad9253307724b655f5a10f1ea903576b0b6373a81cf97e37236d734280c450a39fb80008bb15634ba865b02fe7158ee5d925bb83b669511392a85d9dd35d9531a8829720e4d0a048d5fb03442e22e81003a5c3bfb7f41d975ba0930e3392b805c32433cc479c26a936d755524b87ab498114bdc8e4db97273ecfac4d024b898e129f71bb44343d0cb29ba89042f799f0ab1662bd7ef27ff04f6ff8f6e4395e0b0ace0653914c5d1f8416326b71147e19dfcef444be68471fd492d023d75dc2a71274b3284889bdf22edea7205b5af3e7fcd59e573cd414eb8b4255af04e60b2f4e5e3d9179870af135027ef2bc2f03b3e2a95776e6d8152928892abec0cd245aa53c1674b0b4ec3dbf1c8905ad13c4e4f0f7cee6c18b2cc6bdac467cc55c3162acce19fcb41ef524d40839136d406308ac79c983459a51129ce915ddfcc2d1daefb833b1749155a802411d35750607aabd4e7039ff17e0235f3bb16a8746acc93cffa060243d76b4ea78792cb69f4e4d36702751a291509fbb07b315de1c2c9ddf6de9e351c2930d8a5a82092bd6975066a3f6c286b9c496fc3f8d4693b0670b0f2bfa4aa92121e00962799210c3576ab148130de35b80983c7c6a7eb11cc2ed8b6b665318c501aed5a121fe0b326440f1a855e66584b76b2d7b6bf35fd4e3f42da7b17eebc5a1f8b29d0f8acfb3ce1e25d5d097c81a102793890da4d1109bc8157e302d99d07f9087d6802562d85c2b83d170ff41dcc94d81482cf6f207ce34adddf2c3cb3486b581b04512180157e8969d3e232874c94d54a609189cdcf31f8ae6f513923b9d0b329da8e48d369d5314cd033b08165b9f947fd49bd6e2f080815154e429cf85a1251fb8a7638ad17f10329877c0bae2cd1f5320fe2bf11cc9e5dbc6b9f8b0ca4b5f2acb44c4ebafeecea4a10b77abf1f6eb66c720465d4c3ff6c3152eba3412d9f6c46bede6adcf8abaf63d217ec1889e570c4b3e03c557915de86d197b347bd186ec26f36969b489afd495b65019216d0ad04b269837316eeb2101866cb814c2a5c76c5d0541d8388b5a23600f0f6baccc321c946c4a2023d95d45defb4c45325c6a1d31c42e4bc2bb6448e59dfa774f913fcb0519df903d8a691881fb9fdde1ceac78b007bf8239a341d4b7597550c7d567d161951664938e2c1cdb4b67bba6649056d53d8c2ddd1a416706e7f359401f762196129f30efc0a37e2c388d46e1d4dd35c63f924be3032c456f2eb4661328147119fa94400662e35d932bda084a2faeb61701e98d4fcc7d3ebc2bd8311411dbdfc7e91bb18dcb32c6f3f9b87b617b83fbf2ed35cdbdda98807355016f3641c8bc55cafe48368fd751ef779554de3202ff94769054c5e9cc084b2b7eec953956015cc8220ec3998b006c06616df32ea7aa3d742e53b719d45c739505182cb108ece16afacb820fda761d01b6f0f73d79b72eeec2e2ae82c6ef8db9b38d80f46985cb23d79f714e1dffab346aebcd8be74ef120acb98fd244e5f3d71a45c62e7b5f8d1b07312ae152ae1c81e503ad99d9058ba0c32a0cb22fadf1a7a308b8e7e8aaed4e531fbaef9e753c54beed6b1bd5eb0d4c1d2add27e9fdbbe018cd36059b065d2c7262b7479d9bf2f1cd6f0e0e71eb440abcf4377d572618b13ad932986e37417d2cab1879f9b79e30bbf49a7aa6f7b522a1de0811fb7de78e9d8003ee0df4b9f62628d12b538c6909a5b1f8fadb0cc547a4a289e5a5f428daadbe6792c44919fdc4bb662f26bac3a72becbe215abc6017b7f16dcc10cd7687909f6b7450caafd9aff9769bf7afbb9ddcd5530fb315c0c4b792b30966becbbd2e21158597400d3b22b2e3e84c5ee388f3f67ccebac4297b28f98f27630c7cb3b76b3c2335788f085959f9b0972d7b6b6d6924d81be60bc5d0dec5f4a3835f340d9fbde9c59ef5625abfb5e69d13f8868deb20e05797e08e7640916b68c911fc452849ac4749fbd83eeb2088f630ed5531a6dad24d3f4fbb10c1e9c274ffa519b105365bfb13a0f78a47d41489a4819c9a7968fb64e5e89950bd3d86cccf8207f829cb512287fea8f71a752e5bd37a21089475b8e03d79b56803297dc3ae23449b4228451919221b2ce21a96995dc1611d5ea7b61802e8ff2ad97090fe5c5cb824115cfc8038d3b917f52594cb4d0eb45c57d9ebb338ab4b956874226c3d33743bc4d163ca6baf3ed744e97c88feeee051c7d39034f5bcf39707dbaa6c4c45e5ea1a5dfb16e74b6a9c4143ebebd5bbd199db5018e55379af87994cddf4cf439e333ec34503ea028a9a1684c22ffda4da2924972c5c9163ffe006a3ce4a38855ead9b32049ece09f867d1c63fff79d644f98c24b5baab9e12f1acbab125e3e55b4d4c735d7113fa614befb4906b7281fe626f4108eb175137add82212efc286e186e9c094aa99b7cb0b00368ae6e3b6e179ac8877d887e5ecb2b1c8b064601e942f574b422d28d9364a5474fe6012193a6aacf3b8f60ccc0de498738b12168a4c3244c53404c6511db5baf2f544633a7df968afde2a42128d6195b5e51e9da92eccbc4891c7ceb52202cba5e261ee0155e73ff5dd7b554fba4fdd8947081f43680d589f9170a2564359594d773cbfc1d235e12359ee0ee924aacf156e7b1fc2cb0058ecdd66ec689721b19b92c1fbf52fc8d801fe10466badc8348855583b5a16b098d32adfe45b9b9a0c8c49a65461d3a781efa759ab23262229ae42aa3ccd6fdb008d91b46761d79a061df71323838b68627692309c8307d4ffa9c3f1055a0fc6fbe785cc95b957df98094706e97332a180353758481dde58014b8fc9133eb867c3a47fe788133952fa2929048a6f2d5c4df64a1dde9d4b483f9aa14bc7632d327bf84926d67be014fe82ac7ec552c7621eb8b7bfd60a77d140cc5cb8029090e4a30ef68bcc730bbdb53d3552281ee8a7ab97a7af8055a39704dc0d0934d9488db134e5c77553882766da7aa33f117ee41a62acceef8e60028a239a51f510d371502eaae294ab9c221f8e3d0c1f6d9b92893547a2a7cb797c1a630968f81417fb21011f7638e494650f16b7165323e7f1f71f89e2db82fc6ee52884470b313572ede921b298ab3b6270043633f03a1ccb66bdaa8a2ea218465f989bda895f8b215e344604eb275f0a07817ccdaf331049a6400b0601456f3a22961238eec7a44c9987f8220b843257042b4d0026871821eaa35daf5ce0b2a23989ee5933fb68848d6a1e5dfd882cede468dd56dc0bb1421798acf69ce71cdd778b5899a5add26e07c8acfe52ace6f0184374f6023b8bfabe7d03e2ab82c7ce7a67f031f62b69ed52f20b584ee7429f386ed22a91be9d51d4b1e725364d508008cb69dcc1f1b476a5bcc96f5d8f91a01da0c979949225ed00951f3c6527884c5f87d72339b779ccf40fc6ce4079195efe698d3da7309ca700d8740c21917192807d573a5084fdfe6159fa46dcca81ec3e8b6f242609cfc8bb8a390e7d725b4aaae29047c96b602e688acab9ec45d42b7cb30a10bffa8a00357cda7ea3f0b81e4e9c31e48a7d6ea3b219b8dcbca02364d45f44e0c9d52cf677eefbb53a8a633c72b5410af956efb4d08ea9f4b1a9e4a9c0195efd90392066fb838690aa6c722746a70bff5344ff6e8bd993e6fa96b2f4e7ec84aeea8b36f061f9db69a1cb232aa340f857cdfde297f1dae98c0205804f10ee9dc384fd575b446532a665b9f8f161e0e95ad0a96ef8de2b28ce107873c89917447bbc86bac47f157ee32d33d38124eacf61f06837ac48b339598b8d0508d8d8c5113d8be050c88e604cb2b2a5896230d0df1c1c7f5c51540c5de683d42b5d27778148c6759004a058d9d057c7271b0bbaf963618f3a087f0d400258cec47301f10d3d1d93ac66ffa16947f3b5c074520d3ab4e402956b4db3d25e3b028d08893f3c263d51f4644d0088eade40626650cc179019c8208e69f67c9f150bf635984c5cbaef3d64156d8123488e81ab94535e13fa39e7bb0605ce407e3472be6c6c8c074c0204e4f7423b415832a626662b2117c4e4cd16ccb39bdb9be222cf166db188ad31aa9f51908cf42e285025dd1808fb5afbe7fca98ddcec4b5a5284d4559eadd9af6a7e651a44dd31c4488e1bafd6e8c6ba3109e77f63529c94661231a85bb06fc9b5d8ed655d60e16a8c060c170a40fcdbd3948afb6cb9fd7b1f25340c68c3d86453673673f9026bb666413367f9c9b6860cb7f0b50b2db4c42a899be2479bd93024e20dfc7f7b29f26927cadb664c3e5f7eefaa480f1c03d8e9e65a1cfe646ae381794921ac3678705194de6076406317fb5916500232215dab59cf69947a8811d516de8a7d6af67149375fc45a354ec0bf6b39f142fd714a2d4a0f777696e613e4e50e3a1492350d64f7191a8a5a3133e7c4c72ff183fd714fa4f5103571e29f98a3e907e7a09d5c60e14ea4cd11571d4866bfb8bdb7ead9220e304fdc79a080294dae67a33590bcf896401b16776aa1996528d86550f2f34f0d60fc52197a0e23cd2ae15dfe8e1d2cf4d373c0e0c68708abb323f466c8f444148e4e3073aad7326e96a91ccc0a7246f3191b5e60353cd1275d00d5af656c06e6ebe807c515f65955d1f7584c1db0d70a479c837f76f3b6bae1bc8465aecdb781d0fea90ba6ebd98a1060c2d10f6491fe18b84a54da8586b8c6d4ef80ef47cf7798614a6dee25180a2ece7fefab78ba8b73edef97d2bd4e4e13500cdbcebbddc48c5133d68884da318f657c947b3f68007322f7d6faff651257042e29f8f6d07855ea257910db076990ef4861e26a2a10b79b2de7d7d17d4fd06fe7037888fa5249e9f68adc8d0f36515190202fd1d92037b07ade1a724820184223ad496d966387d8cd4d03ed24e2f26658988c8e74203ebb35e7fb920077fc21d03d8f7367fce460f02b89a33fd4b083bb4c6b8f4b7f3e69eea5eb0a0906c9d6622b8f9447943b472fa4f66420c17e443379e3c2e830e8593f04d194d0dd6b9f51b15d8d7d8eab2239a8203a3c773dbe7c862b7f10e5ef6c3716eb165bb64a0c84d79c2748d399835512893cdafaf07d71587db8db80cec4219b4083b07da5160ac9096d734dc44de7341338dc03cac85c5439dc8ba8c1c8914923eb3b99763418feb3d6d2d639af71ad9bf8107fe22aa8e6a5c59e8e29cf27b5b18c7768f7a758d9ecfda786eb27f94338c9e8a2024bf5bd7d86e369e41404b185f048c33ac0a6a518e756e837918642adcab7eba90857f31c12717466214ead0a80d0f43e68f108f9bc73df6aa88d3d73fc3cdaad47df9ee2f18a449297944926f174c8bff9ba168c1104191ae3a13f455d7ed724971cacb36cb98b9115973ac9e6c84f87c468fbd03c21fe483bbea85e32a0705c1e95827ad3c1d575305f5ed8ce8fc8f67aec9bac204c164ba3df9c8a1d36ac084b7e5f9d15b60c1c4b175ddb07f5c2dc974fb6218300ecc7017866b9d3e5916a26c1054f68e02cc2af527343ab55a1d873cd631c35585587942e18584ab189153e06b9a512c5048034dad1a2224beef5a316f2c60b59be00bde53edcaae5b37b2ae22ef54034ccb989a8eea31faaa1a9b7eabf0ee48f0dee1aba0c41eadf785a0b5ab7b4fd2893a94a04476f67841495ed6bc959a384ee23391146c4166eb790d988e8cf9d0d8295086d01994748c6f45edad6f8a637f0bd3182733fb66b564433f38b18823be53e958e415f6d8bffde1fcfe070eddee8284f0aa6d8a92fa84f354df51436abfb666889bf7e120c7cc3e4152ddcf6b1b10d86b8ecea0a27c9d14c7786d26347d215b69c30e0ee0239e8b7d28bcda08da3ceefe2b2abca16004784bbc7114879d3711b3b334783c1c494c74adc2256468ae05c42a026a6fc5e42dd6385f305a8639aa02b765e06f39efb57094610b604f9e32faee7ccf3faaac6e2579ab7c1ae818975703ef784516d215bf04ec8793159d56849aaaa11925e1c4353893912918a47a95423394a07da4363096885cc8c1084a679d399459e9d29fcba5ce425a3bd2d205ab4756f6d870ba9a5d953b7e2de12b4dd6fc262e1eed4ceebad95877407abed3a7eb36d1ee6e485609d1f36627e4f70443e5a41c859892679e4216bbaafed38e119d6e4ef1623fc00ddb27e9651bd6ff4051197af0eccc4819b01d592cb844acf6ca3f9fdc5f56b9e1dc7fa0494612d35dd3faf509ab79621b9271f310297803f4686b89250737284b6e6bda6fc94cbcb7d24c0b693896cd4faeb2237843e1511d6506e6b79fa574bb067a19150e4215eea60391f9970f64c1fa76f55f4c0fb675c25325459e3c0cbc8d0895477b78e3a111892eb298c9468f788e6b7f25e335f8593dc5e2781adf6adc82b7e972404b863759de9ab46f57b10050f8f0076137308483ddf8df21e40642c09f84fcb418017bd26f235a57bccc349406adf9cd07622dc29780b695948c5d129fea07d7365bda7c07ca9938631806d970d487a7564316f8b19263eb6b62de75bea971703981b33f9c1172677951842408cb8f8bb9434353fb4557a76a15fef4374e3327d7530f377ac83385f1bfe6a1122221552665dca3dbdddcf89825c5b3f774690c6a88d61bc19eb856044b01a0c752c28a7ba4fffccc4894937ce26c4e22ae19fe6f19927ce50c6689ac9d978cd448a2b9f7f147b9daee2cf6a557702a8e2fe265094799562c8a36b6275b40c4d8bc8080bfb90a4f27d03be722491e1b4657fd397e27cff9331343df7a63ca92e95e57dc5afc8d1e6af346720a40be4208fe42a9b9c751836a0087f9ec27568c10d10dc036f7b8aa6b246018f6a69a69c8991186c7dbbca5932cd8d1860f957bc871c21f215d017b8802e93882f6811c2b3049575affe1e7476b4dc19aebe07d83f6715fd01e973b345f5af0d0f190c40d19c2f1498618fd714f8d32397c1d8a25d607845bc3108f72ec28cc04f35792fb90e99f0edd865cd141bfeebb04968b8783219dbf501a6b5e3b21bcc947ad86ba1b6e28467907c77ae718863bf0486ef5770e9d5bc4e8c7a40ad59aca9dbe1bbeb62578355a8bfd54d841ed198653f6b10dd73b731b74e007e5f37f3a7f3311b3db974e3f191c849ba5079676ae6f006e2a5491b0ebb93fdc0fa9d04ddf72a6f852d50f708adfef5e301cdfbbc6b5d5d5b9a1c99e8b8a5d8cc958abbcb65d1e1fd687c9f5ecbee80150d8b31286149103f875b62dcba29b16d856dd45b010c06f82638ca1ab93b9bbc83c9aebf13031098c2707313c140a8a67700a29e57ea8621b647669adfb031992ab3a7962a0d56b726ca0e20a3e788f38630fada9f7a8271d802de83537ef796d13a23397aed2a2b71be45d66d8fdde1e9cf19969e91e219fbb15dc55b2f390cc871c53db21bb9a027cb82179d455c4cfd6dfbc9473296606c540a7eb1b37e4077f8b5a3aaf3b34efe8c592f1121ba40079e0669b99e1408885f0cf332c4753e530888ac410a8c538d9b0791a333573d5c2cbecfa2842b07c4f897ee97ce38b6ecf776ae3ef6595b48f0d8283fc893a9f2e19275aa43ce68094fb02f714718f1794f446be15f6621c016abc39255698ea99d8f5b5c510ca694d004eb689a43835db93adae9338daa8b8111d9076663dde11e9b79d695c77067efe78c1d7e9b2c3c71ef1c4d5ac247cc51efc7792c870e95c20d27ff581bab27e1339535513fb7c29c8aa5cd1da58dcfa019569db708ac29b9f2e068bf397b9f582703760e3673f9fc734c1c1c6023e0dec89dc40c179b59b02ba829aa9c587aac69f4ba9161ec42f072ce2244da31e56685b50f2d23e42b470e56ba68b2dae9c916c8f3faf9da5d23df617ea8830af4809f3e43ae36f0b4ad727e949da6eb4085d22c5bc6231b6a3e63af804f2914ee13d1f83074ab61451bf766fd4b95cbb44812da235387fa6ba01633ad6b623d499460d95d9ee50516840d16d0cd57def9e6fa28fcf94fffbe0701fac1cef37aaacc7d34e28478e82688db909ebaf8bcba75db4fa1d307c57a00fe23560ab91b8b0a5e886728757668077b3eb62aaf42a92954035a9ab950b635b62ef0890e91ed8b0a71e83d6a435380ec71b84e35d2c93aa42e640d34003a19d1c44949f6dbf5b22d3faa9000373f63304ee8e251be46b035e0afcdd42f8520fce279a133d99dd160e8ceb5e1609e097fafec7c3b8de868858840862b7f9255afb5a94a8eef2cbff60e7686411b92d073e401fdb747353c69c3dac0f904229316abf998c08550f7db76e828a3ed95071e914fcb6c1e6c87fb7d619b21060f077a7bc7f3588548d2f610977227c63814b197ec033c65c3b80dbe7fa664fa8639481b413bf5f2d4adc93ec81e9bc538f396f57d5d8de9bec765fd1d177b700b9148a875e16f02c33a7e6f3b81a8356110390a3510c169f02ca3d1c95c28af44ec89b29242396ecdb43d4892d206cc74ae5a5e88e32b2f8cd99936a2629591b64c74d4611551c5cb8b93f2012f3a3ff6243da9c3cc4a8048aa022f886118ecfe4aa80f54876439c9dc0eb38e6b06af4c78fe2a2c46523eb0036d2aaeb9ae434c962d87f44693fa993c9fffdeae99825d60a71d612d30173bd812cb312cee98ebdae3b3337843ad5417f886a62b314dc1f9cc1a8110356a4b4d1debc7cb983e70e3a54476890d01280e8f6025b965fb8ed9c0ecd6d3ee73a911e3baf6b1c680516c113d23410920fd75e9e1d0a0a0891d2e31af57205b0e80a02b9fdc8fda4b29a732bccab52831ef93936bbf64635a16cc2aa9d13895f68f3c67188554e1753e9fc9325f6079ef27d685bef76e62007aeef06eb6d2bd65fe3c5a20cc57ff4ca943706eafc7d4d296b2d0ed941f09892468a7d955ff4ad12b1f42e25a7cc44b51e988375ff68f3a453e1332b18ae7ce30878dfe5fa26ade41a6a1bdb3fc761eaffc6cdb80b2064b717e51145c5db44d8646801c2ee2c56ac4f9a13c6b1a77b56cbb7eb8d8a81681c90ebd5dafa8f784c51a93dc933dd5ad53e3ce4bc1bbc162065c8a91c52483cc4ad5e0e2ec98836273fcfef8090bb2053da1a01168c4f8a1e8818164ff075106ed8eb32d6b55cb0b9efe9f990c62e4263b4900078eb5682a0135704561f9b891296321819b36fac6d48a13f107bd30f20a30f1a3a41357e82dbb78c3d9633411ec5277cd3797102c47d1e2ce12b0209e353e1af54f3f25195f4a18791a7fe427cf3fe7ff1079922a32f172c1ec4566877f840bfe1e355a354b7eb1512603a8f709c52247745c78bf550a93096a188961c7809712d8e6270edf2261a7817eb9c4257d3d41812395598f4f72d591d2ab158ce76905685f086940a95bc49a5e5d0b740fddb633d77a89959a29c54e9f60d9b81e4087ff6260b2df7d7e7beab260a5e2932e9762bc143c7d03ffcffd430afae5b066e8c10e8f63e675ac9b5aa1d19a6521e914a2845f68c55044c19cb2ad3fccdd37678736c913d77b656b7ccf643cec47ccd89ab172823f49291711a8a669fab417a310992fe1dbc17c50ba09abf9c872778fa0e01510d57cc56c95bf68c4323f1fa0aeaabae3d9ab210df2d0f3bea47dfd27579e781e8151927bd86e81bdc222e16be2ef3eb9822f07875212256fc335d007100d1d8899f4815c2070a1f248ff216fad1124f51f0da0070f1c727b018118a1542380c6dd99e3532e91c54f1f826e38403ab4b84c0aeed203d68b4740965dce9f9b3e672ce13216961b6af56ba048beb8e12a271be294cf0cf637c151d7fc50952c0c4ef061a75f0572dd696a550c0c2370febf1bd636cd0fc7cee540941faeef2ce190a647953bcb3fea3e6af205a772db8123dde7c60c2436ff056a7b494c913a1e96898ede0778491a5ff4102d1aef837d7004f6a7e6a73ef59dbaa2b8e680d554e329840c4e158b59e8218a2c33784ad4dc73185e2b4b8817648161848b2317ff5599a8aae38546d062ade89748a23fe5cadd144ec894e0f8985350a07ade91ba13f851aceb7d49a86cce92249d9b8044169abbabd92bfe945a5295072175c27a79de04a5923bde27f2fcaf04cb15c2c09a1fffbbf0decf554604f6a16911e2d71c7a6300965b3b881a989e1ac2a292f1991e9a11ab3450dd15f0ae7e452b330fc378fa29a38e6d3d494d3a439a90a64a90234ee3fa9f33fce57bf3fae77d5e55970ac904ee82b71f2916536ec2cb8c0449266f06189d086cff10600add4d54d2f2677056a198cae0a9a762b5d3235774946c53bf77374a04d8763d7fe618a7537c2a072b7a886fc7fe1fddd4b237fe06d753c5c3c35bd4835ac03352033923dbf2e471d0297a919678a03441857483837fd723daf7986b666895bb477ffefcc28f663969c05484d0d27651c4aa3e28783c87c249312844f37079ff0cd3a3d8c68b1902dda42649e700cb81d0c7cbb0000a6e7b1704a70ceeec7664cccbdf74d89c67a3596e61e94c27433ffaaa40bf1b26e1c9f904900ac4af209da85feab962877a0c2acfe3ca5e971cc8619709c6f707c4e8f838a5077facb76d8ebd8fdcdf73e31467e4b97dc01b0ed426c91c4d5677073599c5ebbee2324942759e7d17f3b822b08718c8460d7077539607cfe209549fda571824b16de8d75ae086b19bb4e8c110d6edc907b70e1e0a0d155ba5f4ecb50985ec23c3db76aecec9ac4020a1edecf64621e147d8066d7ab43744d5fbb33328103af3ce02fc53fd9927c9075acccae39be797948f484718a5a7021eb5642a244c2615d9a3bfb14bad9dbd8848f6f6937f7e649b269c1f30762c5840f708ee5324251ece2c438d3e33b14702e6fdfc30b07cc4bdab2d9de96c801bffcac2db091ef359f2a25c20b20e8f8be408ac43ad3eaa8498a553782309e874a5981aaaff777fec806b00eb10cf34648dc3235a63d22d451410e327a281bdd550cbb4aede94ed4887d29b326f0d67d1e394ce4e917344781fb4c22c4f7198deecbfaa5c2df2b302532491c7456ed470c17d29f0cb1297babf6af43520e95977704318c5aef89fe04253c19244bf67231e6521f51420e5571ac906749ed33724d01283cf8e927d4f8f624369b2a977816ec6e222a1b742299fa79775227b898b998fbe97e9c8832c62394e6eed4d89678675adf23d3f0a5b9faa8c7a9678ead97ff9a95f33d74dc267415808783a57850fb61c11c2d9c338a5a9139d64b432a4ed34731f3d2753aaefba40417a24d6ed577617767a895dd691e592e32af0aa0fcda1a1857725bcf465332bdaed206367f6e4a52b0f57bb0ef975c49b0023888017b80d481e4b9bc396523a4fdb3665448dca2f3bfa6f4ff9502a702866ec8a43958b8360e0c6557f20bd09f0118ebfcb29b044c757928c3d2a87e09a6c6d8f09a3255bbdae3fccbeff8058db518758a523e9ce9908f46012facd87634ce2a210d91bf41aba35bd396d5831986dfc787db63ad962bbefe4d2f8bdecf5ee1a4b4a172b112dbc92777d5537f6e97030948fca20b48f2e006561f4870d841e0d0948ddbbc36d95d46e6caf021ab251a480f809ea15b81c6967b12a49f35c7205d4686bec31c69bc6459e57f062f8a73f5ca7eefed2679dceb82ab3934e0a4409ca964757e90e1a370072831bfb4af06625a9b237fd5253bc74e7d632867e8eb034b2fb6f700e4031c2a8ba9503cff3b4967922c7e97d411efac16c22a02b80fae43eeb30f1746496012a8f0b1c50fa044ce9b44222030beac320be61c74337cd9a9eae4fa9b277cf74c236b50dba285559760793b743e0a4b298b1a96bd9eab67913bbabfaf6e8be0d686d58eecb745607e87c5a908da259d8a5c8d629f40405e9cc26eb94f248ede617e373d78c01bac0b1adfe130c0f1770d4719feec9ecd691bfaf5182d6b98f9a8a71329073f93673c44a76fdd8e1b334245c81daf02ad54be36fd61d30afffbd468ac8cf65a1b1fbb30766eaa4b5b2ebf0cbb26166ef094d43ee4ea1ec989f4f07e129712339c49a80354113e4edc485dbf83b43c6e02bd1d598c5f030c22b76e36d6f000f9d8bdf2358e1ef7a77c6784d72914ba7224092a35df40a27d005abb7fa02e7b1f013840d3fe6eeb6217f487a1fdca0495c8d84a4ff960b1ac39bae351ad5f592512d8655cc96f36327f5c13d4190ca5f9b62a13b2f56831e3cef5480d1d846cc792a4705047a2976d2890a619f24537350a276837735174ad15ee64d0560f29a3bf023e9e5c1d6172c285229d95943e5f519821ab0dee73cb5dcc9ef0416b2194783fa4807209b6c329b565eb5c4ac7bc916b3a712f6078863a7b2f09f17450561d0b2b87e52519842d9df8bb9270d92c75329191d29f0ea5b929165275fb33370ffa53cdc9414b229c3dca72473ebbc0ada4384b02f84e771fca1c31f543b7dfbc0473a286c47953ec9bfc6ce7a5032a7a1b5891308a73b57495ec36cd87ed80f4051724f127bdb4a040c16a5cc77ce841159c13bdc8be2a508532fa76729cedb73e028d3b78e7ad35b945a87a79d66173b436b45dfab166cbdad3822da5966af5d2b23a45d8a26f0217b0773ac8284d293e708d72bb93ee7e953237cb34e63f574a7bab95fddf26f7702b6ec771461ca09dc7e8b17c46a9b7ff817d2929c754d3122bf792b194bf8b5c0476be67df4c2fdfa2c902006f7fd4222b835e007260c3f946845251cad08378d5570c5073cb4db78fedcedeea69e04e41dc9129b67915b5d1fbb84efc8b65e6c38cbe0914d223fa13648f0397680a9606edc48a640f945da4bd7cafc6c9a2cbcb6bc01ef8ec4f240e20d92d661b9251804fd8fa89935bed5657048ee48d7cd01c04ef52dd0ed0d1a524b971c7f71c991ba74bc7796353c5b8bf08977e9c9aa28636261d3bdf7244cc2fc2b55c542dcf6194b131a8b6e62ad958598cc9fa2973f5dfe92945acd0e34c04c83601c5a115bdba95ed549e49c49ffa1dc3f4741676fe2616d5bdaa8eb86db5e6042081b8d24c0a9fa205604d1ef58779a668839c667c3e92b2986d9af21f961e815ace0f32cabf0c6fd0b4262a7bd07d32552902003c2f59086dbf1e62c0ad7fe67ea981a47ccc486476b78fbad5c0f77990a6be84b87a4c52b8472eff67d499bfce27865a3e982e044e8b5e088323b920c516ba38e8a82cbdf0a58362ccd8a869954afdcc904fd1c9fd05012f4474abe1f05797e51813c4ae67ec414ab051be9b0e3fde35c12f01a006e64caf1588250a33d22b58dc7dc839fca4531ae4fcfcda9c444f141d838b691e60bbedb70bb4fdeafa61e2045438aa9dc9e156d6cdd30350b316ad363f35785a0d76b0c71ac3ae26adc4d9b19400009e5a5f2ab40d09c5bbdc2a863977bc172a8492a666715d2861b1da156cc6886dd47cd1e3192f50241ec163ea4e14c102212679dd73fa8308910e4b7352815ad88f494f73533717f8d5d2f669128651e991ecba4a54bc760087fe7b5656627a5b59ba2ff12cdf326c29427256165dfcf1f83d89454b66a6569c9fff21887930c4865aff1753cd127f5c8b62487801b43336169a0b6300ec62b1bdaabe7385ee189da822c2438c31861741aa9985f7853c980b823be57f12137c4ca31a8d8dba0c8351fd76ce1d86a81d4dd9ea6f64238cb6fa745a6342b46b266d0da6acad048b83af91d8244ed76053217e9d11c57c171c63ed4f4fb1ecfe3c193fd89b2417332037cf317b28f3ff1493805ac2083fc7c1bef1e723906477edcc8ba8b1f75fd7b3bb31f2382ff728dd5a138b3b82d4f7585e8e521db7cd1495caca137fbdabfee4b5e62ab93908523b72aedf8c60a8f96594a1a4813cf9259fd1b39c8b610962e8f568129b19134a1acad1ca20a2cf922a394755794e5190b3620fc621f37673936b6682a26971ae56130504d1b3e67960d107c2773fa65035eb809b2bd1a7d23eeece7928289873a593a6060b2ee7dbc3e16ea93387ecf2107262281fc52cd6782e1e981bff475fca40a0900462f5da6d39d3b12fbabf16db9fc2fefade060a883b4ea7905b118f1e9c072600a9a909ff3cebe0d2b93cf43e3c17b3522436adbd466310e3b660f36608028ea1a725f2997c3e23119f0bd4bc7a9f5f6b642530988e2c5f65b3b1cdfa93045352f75990ad1ea5c9a3214095b8b0c22068c3ecbcb59ba9c8a1eef9363a71ab45b6e73cd58fe9cc08d27d0d27d84ef19686ce44aa96397ea12aabd6995497f2f72f4a5725e8f52a77c91a2911b237af676b2bac0830d502e3fab38a365f458e407579f8d9e953d89286731deccbcd77bc7e34b21b4e2bcaad661b64a0bb617fbb330f97be5e2d973a4d04bde5e8521dc2581491d7c670e8c19bb7b340ceefc446c5f95f93812ea532b13e5b3fa8721e2b3e3242697c5ee305b27e1acf04163987f4e3b98ea83f0fa32ec66fcf73122eaaac0100ae2fcbf5044c2493e02c6e3d62d1208fd8bfd9f1985277ce7ebec0d27af786b8b922bd3c6bc79a48541a9ad784958d840c947f708373fbaccb925d94d8f3224c518b1d778cfd59fce39d5644dc981be0bcec2536b7f9ea444671d6a784b5779470d5773cde938d799acb86d41c56f4c5ec7694ffeb37c0ff167f0f6a455b7817c5b56ef27adc8c545791f11c3c7f699f957f0908bdd31cc07404544462ebf5fa330cd153a0463e004f9dab1ef82123f3247eaa2f2dbe230a2e3be8c529403b455096780f305f4815899467134ddc3db2f86e8b5a1ebce982256d96d76b048ab7e7715ce032613281619926f600214b02e7fd56d6d87e3e7dcf6251effebf8a97766f81834f56d635062203b6178c65d8b980e18b894c5010b52146133af4018db134b21b55c7c6dbfb1e103e5d47cb4dacc13061bf38ec82f6faf64c7d485c51fd2e29e6b6fc89fc9a718622e27eb072ee99c277efec5cacc3e939e6a7c6e34ef555969e09cfcc138cb2bad079e53b88265c1ce2f2002a4ae141346b9e27b075e9bd2a948807eff8524895943949dff6ec0eed0283e339302aaeadf5cc2fa47c5afa933c91508b1cc0cd86a3fd377e0a4d774c07c25218a70c7f54b79c1b0a7d8050110526b6dc277cc832a2e4b3147a48f3e0d4b36463420849cd11001ca157c4b90c3d6cb623a683af4ac7d1f7cf045324f653c01fa1f734d3a7cceee22d9a46b6e1382fe26c82a54153d3ec4bcbfad669ce3433a3ff43ba559322de3fe0ac58efbb365d0d5b4e042c4e921feae25bae2bb92ebddfc1bd57086c704ecc1fe700aab722870fd7789900828199f24e53acf4b73ef2df5a84dd00fc493ea891cb7a09ae126314c7d5af7cda804f70f83a145dbc9acaa079a0b1618999b5466913b42157354c7c2f1a661f9b2c766dbafd1fc5c8e5227a878b4dd88b383a4a5661d1d9abfbc04c5f3a31105e990a1801a479df7db039175bc4bf6b23215b71a16ca79eb176e1300aea585599b14bf67812c30bdf7833ff218d289b2af129934a3541e5193ff50972d8775a24613b2bc0861281572b9aadc2ac3fccfdf8baab395a5d7d5fbfe60f02a5fdc6771021cb4b2a6e484a9ed83a3954cc095279a6f8d4faeeb34b64c381fdf2aea4a1ae0840f3275407b7a0bd94b0162d12b5048b258ea59b450d0b3de6237522d627ae40bed30c359abdfbff465a39d4b590328a8838b53e214bff2bdc6c4444dd52e6dcc87de1f57e0a36b5d3467ec685cbf2c76e3a2767fadcfe067b3d57d3f19a3f33c69e546c0f76ffdc9bc0f31dd260daec78eb64d7ab13046e43b978e467316f60a49884e88b60ead357eb3f88f889b2a607b2b2056abb0aa39f10b25e66e0cac28db971a9f5947fde1faa56c602536d27b8b1f79cc5419f0cf4eeb17cedba6b7cad05e764b9bcc8a6040e862f95b463a3f01c59fb7da9cab43f6a604f2d576bf603c5b3c129ae24b637cf4b2b2d8d6ad37c7bb4b42336d9c84c16783a2c8d045a4b4764ddc91f9800c49274b8af13dd753a785c0d8bf98c1a711daf74bdf3c518ec8f44c9678ad457d6fe9be8479d34c9d5079c820ead88a1de80b589c795d16201dc5b090744def395df426095d0261596fa6b41a18022f783e20fdada995ab16d343c159b1d92f08cde56db2aa08c233a4b77acb1c959d97c7aa01818d62e3eff7df5db910d4acea08e35a55ca685bee4bc02dbdbbb5dab121a82cd668a1f8aa4b9373b2eb187f29aceea215fbc6438199a8c176c95eef24c5eb3d3fbba89d6b066b48ab2aeda2441c4a844b5e6f3e7c7a60160b1e9e5d71174f2da2fe513ac30391b105b423010fef13d17eff086a46a9734e81ff35dabd60f14e7a508f4544e96a28a288058c519299c38b852254a319fdd964317435de07a12cfc13eb65fc688e8a87a14d538825a59593638cd3d3ee7c7848206960614d80bc06e5a89216c1f1d907a8df4c2238871c0b7c772e0f200fb82af21485e570269b9354a8c2ebe67d3595577d49ed15877c6b1fee71e4ca59e906c0f674381a6700da43674e48a768a9146d5236cbe10cf580fc04ae24e530f685dab3f39da7a9ce5019728e1a430fcb872c166b184f08579cfedef9e849f1af129b93be52cb620ba58b69f89a7c583c3913d0b55bf3cd6bef3a703c88746a2cd50058191662838dfc9625b81cb0e7a99697ed62332706ed0be0a4059a054f5ccc9ddc3acc796f1f534c16237cb433a99183c114c825a20ee42062d4c70f40677780c5247a43d6d742e7f7b57d7b79d1330d160e47e2db36840295525b0b64a866ebd1698b499b32946ddb1579b9021ca9e326a64f9ba31255479bc67fb64666afefa3a7bf5da90b29d4bf4ec51a995796b0a33272e65341e76b2af1dadb119c49da911ec18a32a04cf92a493e913284a3f7fb4edbc8354e1c787b352cc56b4ec972d318e86f157e622c3850939eadc60c0723a5a313f2d0fb3bff4990876336b9024f827ec5e1d7317645bd34361064fbc40f9781b250cde57451b85c64ba781d5dc3d215e0a129c369ee3b78e501d9e2249bb31b8f6b9974b89cb323c87d2a082749a0b08dadba43c599341849f6e4ccfcea6d629749219a7cb72bb9dd90cee72ca85166df163a28e88a040e94a6e4825f5e39b40267854652934c1598e52c703ab8799387fde020120744661f424f878e65918d3680fcf1187edeb653e1339a7e2d68e9e444304ee6a922b032e19b34a6dd1c9a6371223c7b254609bf0c187462010124c785e3c9cbf658afdf34947518a8a8fe87f7c7e7d571e4e233961a774d120e9e7e63310f5c81c424b064c7454d1b92e35f8c621a99bf967f32946c470621df72273083d8be0faf67714606ed79671cd31c164e22885ec5f5a2615bcf88b7dc858570853f1320e8e74ed635f93383278b4503eab847c466f9ceb8ba2eb982409c0ca2a3460a83cb47b25d5e2c10abca17c69f2f97b89efd59f60043dbccdae0c2beca599adcbfd5806e4b78937b4c49b7b213c5ee4225452a9febb88b35bb8485814008d9229e52dd0cb18594e03e11ead38fbffd7ab8eaa28e5d330038a35d7d2f18df041e25529ec2e0d49a0854bc67f42021634f8b82895eaad19a8fe7ef76210f7f54e675509e90089c7916c2f94cd63fc71677281175a3cc3da1c51688a0eae2ca4e39f78ca05391e32ac88c66b64a772f190bc384ad35f513cdc509295a9ff185947ed53317696bd60c865e8941e2b370ceee68d9559a642beb3a92dc4f6462f43b5c9ab44b7f8dc1a09d29f3b8ba7424c999518515f668714e6cf8de5575cefe682fbe0cff3bdfb9ca559fbef26145fce98afa1dc9c8bada41d5e3f690e8e61999696b8e178d9591684819426246ad0c43c71d4174d50e4072f4fd0e60bf789092e46ad4c3a94da2da4ca38b6c3c78af3cdfba2e67931c28eabbd1b9752afd4b4f4986c286729787a59c8b65e3d766b368cbc32b3587013bb4313b6dae577866f6a4900500eb1610a56d3103b389458f9fc4496ecb6b2afc3f9d109b14ac44fe199bc68e3d20ad9dc84233e53d36621be896ef3817694d5132461d04298433a051f311bc4b0ba2a66b45a320e3e93779c6ee3f5671a3cd3c83f88d557184b4bac7d58eb1bd1e9a51111ca1ab7e0c25fbbf86697176344d33593815fdf77c45ff9c75465d36efd4eb86ffc9fff147406d91477580ffb8c7d61a0ce286b8781f8e394548219cb75232d684f817b6ef9fbc82d21fd5033c4bb86673894b28b17e8b64647efe331072ab43fa50f2193e978ed5a24c3decfbb599479a5a60d1ea41592a163d2670e1f3686a379e3cfa38172c3debacf44e4da69abdaaf5dfb9c1dd2ebb17a199f0f473a5033e3a9c434bcf456f5a4440dc03e4ea4b4242d9f2c1190070351e0cc5c1841b1db4b0b25d61e6ec9f24e054ceb5c0789d9d7c83d47f0278325786bf0d9b0a8bf00ea7d792c8057d0b12cb6153338f1191675e3c0dd4f35cf856289527cdc088378444d2e9948e83652a4e901c67a68455439363708bb83ad92abe8feae644078554b3f1273ef55594722bfae6007e9b68dbdf85446fbf3b633ce1743c737821081cf06daceb673a9b630723d8ad317448e3debec4ff8bcd58fc36f33895adf2f2663229ed7e7652d26ac78d2e01cd2808604397975916dc923442026bcd5b6aeebecdd5bb71182fd7a6fd818764bcc2b6ee9c39b90129fa828a5f137cf11a9d9fe77ec700f0d64c947114eba3b1383bd3605dd928426da574a8c15c58d5228f2ed0a772101c6b5506b8cb7eb7fa641dfcd0c0ac64e69ca12aef38cf4e34484ac528f8c18c60e26eafeedf6df790bc8f1eff83940a7fb7eea48383f2ab3d05ab04c1496ded8fc90ff94622a50e6e6ac85cae5b62e31ba2042862cdb92b6a0ac1bccf5d166ad926a8ec73ca8fab34deee26e5436633bfa38523e69009c771270feabb2df83f9b712a716cfa61ec06f45821438a4d410ee5da4fc56fc7b528061dd9c7b156d8dc2d7f11633d903a32db9942b79a81cd912dc9a96a99ba58a17fc31dfc4af41bc111325f05793708ceb9b7a3fd871f9084abee611482e576facfae6cd64ea7e547ef9902bf238343033994ca95a04cc6280680fdbdae00f903e7cdd3809ba8828a16f95d226d49fc2f6b75412ab241d8704d3f34b7afc10011fec6b8f0d2c2827327029dd0bb20605873e90c617fd1515ef5640823772e1afea19d9dafb690a04025956f057cc42628e3534d718c4035b3ee6f9857955cec7ca81e28842fd3d7050c1b86cdb98311ba3df250d88ffd896877cf7bf688d6626ada13706e936b7e2805203cd9c90348342db7eabf47aaac65f8f65c0e212fbdf665cfe284d8ecff06f7a7b54b261b04c47cd0f02bdaa3409de474355b08525d4f2d74f6b3361c136ebb47a0d33488de52c62d9cfd700558ed958e5f0f7c03f523ef8b6f5b3be2ed00d98ed17d97bbae3b12c937577ab8d17c5577160265ce9cd3594b479cecd996083c5d8472ff9a781ab6828f8f05083084a9864d2c7b284a303c73edcaeefeaabf360ce13642ec92a1cf137d3909f810705ad0e2d0b23b9ecb24b3cb0ecf4efbe18b279d31b3d1918dfc8929b47f3f62d06da11b5e9aff264a8a50b814f9cd6a74127184edc9395fc7a6dbf7158e6f3c8f6f7e6032d19e05da3f4fcece118b5be4303fc98eb9abec1edcb7a44735dafa90681584ecdc8f3c338b7d38f5d8c037e1ca00a46bc111954831731e3e482030603c306fb61aae532fa6a48bd393a1cebc5553ce24083ae7f09f387e0c62fefe8387ce5889e1e301abbed890be7b6c08effc220c4c0e88cdcf254d14459751333057bbdc515c293f1a5bfb6ad017e94fd0d6c572a082c43cb3a4f9c10f053372b3432a754bdab917d13ca649e84299ff0b26117aa0dbb68811c6c258f1e30c39e92969584eb1cf123561b1b9a47fbcfeddfe8aaed66c81526efa0df780a4247925204ca76c9593f50eb1bd8e951897280e5e9edc2262566feb8f0f1e5100ef581255d5e9573864ae8c41d8cfdcb24bd012144d279fed9fda94bb8b51027f122322e0abb5942f2a4d09cca9ad6990249f16a01de92bcc67e6ffb453be8a0eec90f2c0f2363f52f258184e25d42e84390ddc7caabbd8298149943cfc3724738072182e627ddbab669a922f0a0e436bc74dc1dee67274d58eae0e90e4700e95ca085fb6f31364d8d4de550142412a9b9b993f0ba5419a5acb3ed72d6ef2ccda479876fd6fb25a1ad75810bcf1d7ba72386d165fa46e798aa23dff9a59ab3b6e61c3ba7f21604de64c94fe5b7b5a51cfbe8b414cd282e53bb74eabced5c105d0b37b0265c656e9af0f48b716c8838d6a6506661477762ebace206f1f4faf287881db2bb0a9f3f97ffe4cf55972715d57d106067bbc5ae497e2faaae81708136584318f425d0d572894d18f6d6954296b0e146b4bd372238d7209509466b6a7c53c4a6dd61d8a80ea626d9ec76cda79e095f525598082ffb66fdafa5c6d0c7fe63de7eb112ea30a1aa2a22c1633a96d3fc8b45f90d04790b9515f75ae733d13ab2731f4df30f1daed757d38c7c3c246a2449f728050ef4ca083877ba8a615e00d289f59a74a1d95e5073e1846aaa577799e06ad8f19a524f8e3b5a86b9d639caf1ca7c4c4ed066f5e882aa95724b206b8d7d78d29933c49bc778036f974743de3c05f087f3207f5397515a85495c220029af05c11ef603e4ea4b3ca7021a625ff3ab896b80e90dd0f5ef5e4ecf0d516afceccdd30e15b7b2879670211ce947bb36535488afd6f5d4552eeda3ba0459ce3b0bbb479b561b0dee3efb871e03031e2c368bb6686727ff542695d2a9d8da4b9ac9cd50fa9205ee5bab8242daeb60d5e1b38ae5846f07bbc4b3e66ec2977524d5449628683630b2864c651ae5d720ce57cc50c974962597f9f225840540a1c9e7823c4331c5d94f6f1136500c32f69426a88d8792d742c744c80f35c24a59db70eb18edad53b373b1ef4834e01a5b85830f44c60803a8916f5bae001d1c976107cbdcd21d0c1fdda6604f9440e33210ccf1f9bd633dcca08d963d1d76929cca1ed24a36e0abbe93c9e00490a9923c4455df7831137d4b7360aa1f9b957f0e789f937fd19b0352d0b871eba6a0625502f8901e6d5e0d2d64d388e141e825dfe48808caaa877ae5b2251818110a438b87b55ebdaf8d0f7a05cd674f59c4be08aec90c145b2c895020b65d0fb55e56ff36dbc60c9f56f423c7af4499d0a1f71708f9e0da88a33d04619dcfb14cb37298cd3feca9a9eb063b24695d87756d70866bc4a7b79991b9295b437e388b41a285698f14a87868df74d0dbb5be2da33de581b3e977dcd3b21082d47f4156aca5900f1f2ab1d2b7f002a0c6941564a768d79d5b14c6ad23f1edd4fd6cec63886d40986b3bb69279fbb8230704f81bec6cdc473bf66159bdd5e98669e106d0caa0cb2e3bfa2f94e19a83333c55dc5ccabbeaa93d44e9b96fce7e2aca00497a9f1adbcb533cefb602b62ee15999c7e79c3adae3541730d957e3277a63eea13fd1691c56dc7c7d5c7b107c8db529e26895c09e92b16a2913f22d5f18095494605e50a452c9580d0103bb89196e1e1c97f99a5214dd9d5f7d185aece07cdea2a60b44214f2912fbd1ea9f886ed9d8e1f3f10a115363f5fc94fc2b83a5efbfcc1ac9f2dd6fc010dd633df8c2d5cd7be01cd8c3a020c819647528f6b16f282c1a5f83b793cb255c24eacbd6f2da326ddae1fe6fee6c3b9758191a2420a27fdc38fd8c260d7f80244d92219be8b242da8b90422957e1de5db76819b41c936c8f283c238698a2153b9fe4078081604a309f284c03c3aa7640bf1480b77c7add84f74eb2524a8b13967e4c010fee1184a3b16956828f7c0e78e984c8d2c9ccf2018fee64b70f026ad14b2ae1aa4870dcaa67ed6f1d4a16732252565fbfc05d00ce8fb03b19915a0aa8d41073037cdb108091bfa9c13ad65fbdb02f61cc1fe4e7ba3ead608ee4939d7e5410f5a279cc99a45f265e50be22e7ade0eb245ac5b8f9158146ac6110ed99d904310363c0d74159a78cbf1d71b4ebbcf95cb05f1eeb8934e92158915d97a4e33d7f74f5320a1f2737c02b71290b7894f829fce5e40451f1d2a7ad4f7a7057eb264b945c3e9ae1583bf6530ac2976046f78839882e178129909915846ceed5e2f67d146f5027107cb2472697b464e4c6f5d722fccaea303ca5904e4854a717dfc426105a9e01d7e5f197893d8447ef6c3256be85f26d608f1579b86cfe1e729be8a0771e3b34852c3a176915f8e437741280e07e44b9620dc05893f146c4b6f6eaf5490c7e4bafaa5bd340ab2512b37f9acf29d31546eba2cbf5c78f4b482d70065d114eb91135006b0859814b5cbd1077e331860f3055bf232e512f6eb9cdb037fa325e40bc14908523228a7bc1ea10954e102d1d9cfcd90412a571270c6101de3ec48dbe420b01a6a9afaf15e4a34b4a927972ab9eabea98138d27a9fb99d0eb8dc27eddda7ebe8874244d124397f10d053592363b2defa3ddb4d8506ccb30a705bca83bd21578a0f7feb51c418c15c1a7c6df2857126840a3d73eeab99c56fa9032d7b240a9a01a7f98ab7d045531872bc63e09ba95daabfadbc8c19bff1c54a244abee4cf8eef39ad6e8d57973a12eaa82aaf974555023955e198788b682183a711753fd9ddd1c280298a803852329d340af854b49d6cf652487ffc3ed29a11a9fe332cf502caea9f3ddb5a0af5d148f97efc0f7f6fdc209ad9d8880c4d6cd4be92b568e605e2de4484a25931a57d25b2da1b563665b0383a6996abe26f5245015dfd026bc3be1ec236880d2f3fd31e35e0d2332c107a99853effad2031384ad0141296b864d361f08347dd2a29e278e25118c30da210a6e0ec48ec1c06360abcd69ce08666433aac59f986890709516eb9f958c1248f722f1733dd0c03b9768f5c4de244a13fea7080d81da5a09a459d53cb5e63322088f560c73020294ceaa1f913e5b52306ff10cd7505f64e7aaec7b832f9cdfd8f76955d05263168d6509e563fe19e657b71f2cc9989d69eaa836e7a066e22497117390b6e94936e7f4556aa21193cc68136e77a43af034d54c102fd6788da810ad69b6ea3001c38a5f64420955be4305916d539d137c92d08d2c0dfa2e9c8af8bae8d448e07d54007394ad29e525aa15e3bc17dc766060e9d3cb3df53ae3de89617731e5100c58f517bff7e5c4764c44463609fe778cf58eb07b9745c6711fffa860b487af1e59bd126967f4d30f4d807545a1940503211427e5587c5089781c38241128bfaa48ce535deb631509697dae57f9a2d397b23485eb49c0dd422fa52092c0776bb87a41d8107610466d9332c6975d21166fd588cb9df34a753bade3bbe39056eb139d551a72c030c39ffc5a4d687e7d0bca8312a6bc60e7efe1ec239763085d33489dec110600c9c02821f5c44d741757ea02b6f4d68e7a16401b3670761756784d4f0dc574f639d061e8c4e23acec42b16a5bbe33ef678105945f241179fbf8195a96068e7a2adb6bcb0d0e5702e4c4607074f9459556a2277d0af6018214bcc5f96b50fdac7ab939e64e3fa658eecb74e9d00550b3a6ebc024ecaa6bb87617c7fad7dee426a895709580db1631ed48077ad436a429ab7d8bcf425b173529b20fda44f283169f3898dbc217ecfd9aafaf1bdf066e22a09aa76aaa52be09d49443eea6531454f69603eee35534f550613121fc414920a3e9aa012b32d576decd19ca01cbfa489be24a2b926413c00f455aa6eddec2dc4c3984a87bca68d54bb45983578484c429aebd8ff112d150f75c80ddf4220e1a21bb96f3bb1da302021b00ad69d16e035f99a73cbdb94e388fd928299593027d05b21a70688ee82643c880b5357e55effab40b5fdab63c47df67b6fcb6f1738baac489483b9844ce9604e6a709313587ed2b838396ad606413c32cecc3401a1cfcd85b03bc169b5c292feea29e463872e66a434944a70939da067ac553c930bb38fed4794a250d6860e53ae37ff4cf881b4afd7e93cff8c5f66bbc5e77fc575a85781c311619f1578c2d66ffd3fda1291db28775778b05d3ac6748068d94a5c239fad9a4f874ba1acd0c7831b221c34be4ee6898ff934a2066e0dd7668b89990b741886bca1c6973310cabe0bc928b43c557da931fef5a48ffe8bf8afb823fb84f9bfcdc3c0fab1f88b69b18f7cac7bc58bc813448b595bac8aaea9a4e90fd0c3e468cc8dfa5680af016de138240a8b2561be6640e616172c1ce5b0388a41f1befc5c02ebe7eb8c5f64f8eafed00b15bd9a9790e21a9b5d33301cd7a46ae1065ea179514e2498f4425b7fb3aa30230f78cd452e0e777d97013757479b3f160c19448e3cf4d4444989c08718d91d3a5943e739d2ab10048abc141b573d205d53dcea0a44761a32cf38223cc47a0f13df83a67aed543bb8cccaa2a8012909728d6aadfeb912a05367d844ce1102a539559f1e0b5502150bad7a2b07a0b35ac894643b66a7e213bdb8c49ca92be32183733838a19db6fc09322ff2dea7ce5893ff9455ca9c10a41e6b13d575cda5e91ecf5a2eacc74a13233211ab237b22ab5eba1b512e88e4885184af4de9538b0837b67411abf518c1f9ac4efe8e92a2df362d9c994eea2179f43aea986b04b7aa20afa743d3263e324bdb4607eb8c3de361ad9e2a2f05c73418d013fb87b6d9a31c7daafd063091d4e2a69dd92ced528ca73dec16faddb4f9fb41d0f22f499de9a7cc31ca1b6d3adc9e7c15f65e9147132adfc9022e2c290edae9c3aacd8d6f165ce9960a71e40cbf84aa3ad85b2ce993cef49ea91c903c3cc456e4872693d7e75f1f3e71d6d65eb9e5bb5f6c584c508c357bc057b9aac85090f731a00d7a33bf67aa1085c2f52449938526923eb897634317d16eb7f0329bd465df3ee63d982546543823d9b980b323d4d59ed72d0fdf383d64e4f8529a73f463f361f61a90410c252dfac193c77d46ee07dac6ca86ae5bf258c34c16cfb03ce0423b897c9f63bac60f0e4ff145f2285dd20254aaefde2eebaea97d744d30108f38b2e19ccb7c807e3d37f350a6a2eaac63c60582d5643b086f46b0e02c5324ee3fe2fc40d9a48edd049f88ddf1e02117384b0c47249868739ee01109977fcdc2d199243a9d92758b6448674c9543704972ab7b2644b7e4df19d1d6efe29d5b6510da5197832717ccc784cbf7b12527ba9970565ad5609daea40889b5e19a866b9a5b5fb065e326a3c67b8c6f4827fc3cfc1d68a53c1848f96d84a6ee43e7ea83ba060c75e26e3ab709a822fa76abcdc934a5ef7fc0c6fac5cbdd8f9e3ffa9594637bcda9af116a56945cfebf1b5877a7e5f2193f2e3754e5f2bbc631c8cba26e788d72fcc53a813ee13a2e9ba79ab66c885f4cc1dd9b343d005c7c11bb58e6a8b6c1951addfcbe0a71b955c5d3201f89523e3f6971060682be1270aa5c21ac733cd2df33688c2669a3a6f3dd395c1f489154e871dff094a031c31d0163ac8277092f1a9226c55f79f69ff802830615808c5835e528b6785a17683c2d940218110b7b113167a527f71198adf5ff9a715ff37796bfa1160cd73a8e8c56b030267c3c0d488051ce5012565aea8501d5ee0913d3580ad5b7f52aafd8f60cf8c86fbf236e78b8e006541600ff9bbd353cd3f79affd0f6de9f4018c37afa15215dcc6b7cdde76ec2b7704359789b86a39546497f8555448ebb0489c6c06b09f50a458031ce8850f4705d7bce07d4c49b6bb67f9d60097bbd5a9f868885825726ec4005e066ed2ed06288a341c5b91e1c8e4a4f248276c51bb27bafcabc389221a3c130fc010ac930e3e7de5f1d10eeac91697a634ff8720c5a6b6dc5ebf813c2d5af255badc7f97cee5a014a4f0013b94b4de99420f66c5bce8e6e3eab9c5ddaab37a053ac6636b2a299de66ee7fa3bb56a76f64c2ed2844efcd22a129bbc571533521e0f6b086fabfb556c96207b1649355f277f44de1af80e03fffa84753727cb16a2db4fc60f52c2b422e67989e03a426dffded201f9faae68dddfd7fdd42dd6d5fc8c6fe139e73809f388d14c11a71ae2854d386de6979917e37122bcb72ae81972e3f6da8a54377a43cb6e343fda42a382e4400d8e05cdb503263270b2e2c063cdde3716429eecc949c9aea8bbd2d77873cd188b861a950c38e844920a91ad3fb19b0ec5aeae88a807446d1927fbe12d53c7e81529f16e89606998a5a163b4b2b9a5286b08d4ee74b149899f4774f332486446b1136416b6469dc8697fed93861dcad9280f85cb5a291c585a97d9beafa9790713a242a6f867a1a4c240941ba228157c38b8df665b98dd44ea619a25a90f0c1c4c3e4b4dc194836789a57453e702f1aaa1aee2098fd2421abdc6c25fadc71adc4cc3a270957f1a5a7d29bb890459a770bbee2863918e1db24561a2de9bee91cfb00b3b15ec598f13346f7f5f65e0c1e01d73bf536e36f854063a08555a4e54ce66f7fe0940b8d37427a84595cd57778ec10cde0bc34d479f318313bef6dd66c93a39929795e89a8214e24c58e63671d393722dc07a2bf606a9627236d7bad210900066547d04c0bfa46ca1d8b66575eef102f24c59bc6bb1fcdac542114880382b5aa4f9202ae39ca320ccbd9eaecbc162c071503862a5e42c5fba99d9db22177cf6b07bcfcbea0b6bc2a3cfb58396ee8c29db3b1ad07ef6b98fa41685249797a2a2591fe288bc1a7cc2162e492b9e0d124a923b33dcf6ba79c8affbf6a0081e15aaa5704ba77b338cc90308b94072e474d082f7c9517a2c779070a71e929a13fce2ba310fb549df52a742183e945ad659274c544a3f7b60d23ea4eb97ee3b6b0b13f26b84cbd3feabbbab2a98924636695dc78c82354a01fef69fa3c337391f366547429d0746a80c6bae4e2eefe8ae0de80fe96e9bfab4e4843000bcd3d765492818505031b83aee46bbbe575fb11dcd0cdb0f48dd2f72daf8099b1206e9e670b8436c8cda505760814c1185c441bb4d8f90d4b2d23f7780940be62c058b5933a30c6c0c6cbfcb142c7837eec6a7dc90aa237291167f34977f3b028bbe35c6cadcd5a9aabb98a3525b313b2adc5440592fa74d4698e87a0288a702a5ebea8dceb9d7974532d653adaaf84f3a2222d2b9dabae68791b2238ed4247002a01a121d847908b9b56571f4bfa7244f2762cfcb31ef488d25a88ae78a740186ee2c49423006f7110adbd76f04b7794814de6289ed3f79f8c9551fa9454a92a3c888246a20ec9d5553f096525beb7fd5c963614464f8db08fd06831bdc096bea5a4bf6887bfb8de8edf404f18085511f820ac65415a32b6592e8c9fda275ebe75755389d4e6381149f67dd9b2affb339c7b096ce98f8295df92d22c1e201c1cd8f48c9c85dba8c9abb36c3513b7570a962ac44f2db2c09c6bbb211430212f86a184abd743374c44eeccd0c0702998f5f329881588d153949b96b4e92f74ba2b2922625ba9b6cd3556f2fdf385abf59fe774b370c41b435fe04a9cf13e982591e63c5cae5f4db7f340b05ea0d9dc26991cded965780fc02b21043cc68e249a74459eb507a3e0f92cf97bf07e81e8e90296dc40bd62e59c336453cb4e2e9689c2616d7e69f42169325b43c50e381d7e4de5106145143ccc0c9fa5d5050f45249a9d3d3b8b04b33ecf89f483c3dfc52c04cc2e6de58e75ea891019bb8ffcf0e36143436494211394b13519e283cdc4baa99aa7c67fc4c1b62ac6c22ea180f402eca53de7a6b1d5eb6239cf327874a5f6a4dee981a41f84911c2f48b835ed30feaa7062a4398448a8d08b1ed2284df1323d314beb13809d00cbde8a331607341cf6199af04204009364cbeabaec1196c2a639b9011155272f00e1064faf0aede25da9a9133395b658ade384f2a7aa147f1f341ff683bf576b95416e113805849c10447acabea48b06978f2f19da6101471b9005b1ece599a7b3a9fe4e28bc8bd84e318bc5793bf69333babfdffc3c177a8077514c25e460f8a3340834ff9cd3eaef48bf2a4116ae551300e08b3292c17ff4503296f400df1930de1ec2596f9469f6fd22107692658a2dd364754435883d388f3b92701396e8922c7a4b59c38fb03477fc0508f76dd158038d8df1d53ba2945f61f63042a9e7f8f718f85956ff5e016873894fe446af53ad00d38c69192057090fad5186f3bc90715942f9e7ded6fb9a6291b8f4a80c5dd2dedcebb95c2b5e10d656459c29b12bccd77b6c3930c0e06071053dd8d2b35c1a3054a573e3bcb56c45c2774cb9346e289046273156866e556741af74bfd59b82a3769f4d93d143695079c035ab5890a6721bd25c89d8592cc998d4d472860dfb8f96ee232fea84fb4c36a5838753aebfd2c5904bb529527831cc4ff0ba3f2734d4980320288e58a6f9676c3a21fea8485de3987ac32f169e84985b96985b491f54752a48c1c4dd392baeff02375896c08a6a18ce7567986513265505049ab7e381bd58108d9a5f02bb629ea00b03c2ccd5216cd0778e33dbfb9916f9e7a0214a96104cc6e5a251380e0f607a73c63d045823a6313b29ef729c85213afd77bbe0daa4f8f282705cc317f186e25709026dd161644189fed39fb97299f7a709e659aec2470bb71d7aa2057da2055c5c9e4c891ef75c709950510a5c0e7617a767e7b949260a32c7228be3d981ab22f0792ee971d78b59c8ad083c3617ddaf853494242ae3cd5e0f89915c5ff633af1ca4412dc66dc49f1f93782362bc2d353bc7de6feadd529299e6eb6d1e66797fd93470075d2893f7759be0ba3ab2ab454509160f2385254d8fd8224d592e8347473dd29ccae11d5365f996c38b63437184cb3ab903a5a5c01fcc40fc06d631ab26485ed77397bdb3ce2b725c15ccb6a2bcce67ebcb05f5a2f87ad2064f104fed5e6af99f1570a88754c204a30c239b9e145c0210515aab1dd177caaa158fab4e77e34837401266c7dd31dd819a557113996d35457e7ea94ce3ca994068a534c3214ee78dd64a080414b93b225a516315ba6679cbd105a653699e0f0e10ba2bb6ae60df2e900362fce954f013df1e70e7cd5c2abbdb194d8a27fbd1cf078ae9d1933d8e097989b61c0ec552222bcc10a389ef6ebec1a80da0e094812dfd3ad722eb534f2a71239b817ca086f93827a0a68ab1f132bde3ede1dfa6dafcd33d8778f4cf933babf804b4ec797d3373480fb2d1202f459d0d01fe6fe064b02001189b8f9b477b2f47bd595f1469203bedb040412f5a4d439958b96361848eaf734ac6c4eea5aa59eab58297a78fa267a225fe235b19f423988a0e8fc6fd55ff56f6de3c70df605831f8109b34b4c1bdbeb22ba3579e6bc87827144c463fc5c261c602c5e53313b00528f637ea842e7c2d8e6a5045da574f15b9dbf8dc00125e326665d2746117b861d5a67999c1cad308e9a6a07ad0d6ea11253374890dbf6f118ce9f8728bdf1d171631363a0c6f6704c3ce6adc49785e8b8cd3a49947664384888773c6fab05de521d9837f9593d1a7d0966ac66ada85150312f3063afd5caf455e9fd659214de0eafb3c7c17351e59fecec083ed0ecd09b797cce2c8d2f288e03e7e0c4eb89426ec3c8057d04b4d375aaf715703e3b825650022d3d2046fdb459e39e3902d2de8a8b132116f6ed4c46e15e5141ea25a79317fe99ed574f1177d1b9788eadde9bc95d27a5624c71c6258e1674824f2dea53fd39acae752cbf88a34870db03beb4a66764266495500981f81a8efd1f5016ca4e6b344992e04f415579c26a7312a3df901ba054f92523222403dc247f8958a8a6b35228d1dd67d36358c7c71a9f2895c44d584e6f4572a951f1c0a0b8300eda4ac246bdeef301b1d2ab18ce1a86309a42bcad29679466169d4230cf8e5ba29488f0bf7a19a354478858819dbc3f15b8c9c93a22f4ccc2a1d069100e9e6d350c576755917f9bb16c4c7342ba1f2e220243c719fcce98aa744118b9b13856a0ae05175de5ac5cdd8ed34fb9fb336d37cf5e766b15a9796efd25f98255f7a37057a9c1f97aa312a4bf5a5c84c9eda34f069eeb951d1d4f60c6ee02624356b02b5cd880c7690dbc3cb752da8ad5b83c77d62d676ef918928c6574503928e832961d2d4da7b83ea404841f64d262dbc25213eaaeb639f029d38b57ae4a73f961e83a309aaf3d10b7c0077be8ed20a203995c8472d779f7f39433f33e134c4b1e7740504a1bfe6a50519c074e5e60cc6c26acb2b9174d8f7d5c0a581f7860e849d6f61ae67b53b0d9dfd9bc8efa07020d56e3b8d33cf9cf4bd922f3485e31ad5edd9d2c5ab0a8bbdbb93e6f1f0c71a105a613c6172d6d6da337b610fcf8f49d69ae61f5d9cd1119a0b3d028f4cbdb9888afb740e727aa6c1eac7b5137f69c102f982b7917185f5ffeaa94f3c0f1de9c377466d2b982043008bccaeb11f0f5dd373950e90e3a61e06eb7bdd7266eef8ab8441f1a0128893f1332dce2e9f98e496068cf695ae681a9e54b8794f24643ad9e9d8b1ee4dbe2d08f3f83a85d5df9555c53ac71a146cd569a10a8f1e3e2df436302c9e1d7d23b1314f9420b7f8583dc5530a76a6598d410200d777ec4f556027bb24af20187facb4c07310e6257b61f96c76f42948c0381bd41c31e515b555c83c5c1f025b24822832a6f07ddbb842a95ddc6fdcacfc2e6933299701f2f27ecc3a534940c426fce2862f416a7e08b29b87994cbad83a856d6819965b6c13413793f7a52a969e823b1133c29bd7fcff06e079f6c320808f56712df885ad99b32bf47aa5e458fd25501ceec41b926d86797176e0035efb9ff081eabb6f03384ce963795cf15672ef8c6282b189beaf8e2dd9c34d346e31a93d800d1cae61102003b66f3fd01e5f291295908b26515e9681c830be96b23949a9864db383dd84dcd81982664005dc913ad8a27f81a2b234ac85d417308e0a50f763ee659e3098d95a8c921335a04ca9ee4667c36fed6c22a9690de825edd512fb1b23fb5039dee72c63a774634b048f266aba5239d34c26cb62cf556aba751ede624090007afcbb4dc4a1dc96a5fa1df8c58153cbd719e85471429f3d68e81a3d24bf4f9999ba19832c44eca512903bd34c562a50e13becf82cb13c4d6bddf1a9000f1621e1a220edeb8865f838628a1ae7fe89c4bfe339273dc70262bd518a32c738eee9be325c4da348a30a8230f31af3ba07009fc36d9de01fde9f5a3cab6302519079459b79c0cd30ef40a0d0b580c15cfe2e97573bc469240253c44ad7df6aba4bf6a911c5e3340a30aa0533f4cc1534caea1ebe9e03bc3aa5277fad330a6e3807cdc7afd0a1774faa066877e9faa7c8a7f49020415dd343a47296f4cb75b0d1404f9be4e62b8b13cd8444113f78a564bf16adabd14a3c6aa7e214fcc4c18882373bc9742af83738452b57fc31d0306f27d61a1855149840a28a8ce8504b80bfa87b150b86f697f4d0d426017aedda96e76fdec2ad901e30c9b7923376a6d6c7cbefeb58cd909aab8df7780925a32ecc4612e755de881537566e40c8fb1efdc774b7d8c6b1748412ba2ed784d840280cee628300c9c45df7b6b9b22f0c9b1ccc89520eb56c986da726a312dd2a53b9faa929e73f6d1ee714fe358acd61198d8233dee44b4165bf77cefbbefa0655454dd566ac37e6d638e4b1596c2c0ead5fce73dd54dc3775bb365275b0d94b032405b6334c9aabceeb685210835a2e49d5290c467cd0b4dbf5a34f1c842d1a38247a578aa921d7302ca43027fb551ee7e5d8ddfd1e2ccd82d441cfeb1a1682af0535ab79879770973d3371e78589fd91baeb2d901f9d7ac1135c42be13e482dbfc99fa590d6e02adf43d54f9d65896aa331177a50b1c11f1435ecb9458ed8ef93163f34c49e8f8d53bb51c5627bdfa466139b3b3901c9872477acab5947105f040ebd8b3a9d28d7a8fe1309fb7f167e90d084770fe4de946d69ee888b58e5416bc47a44d82cb422082414eaa443043ea2f17f9c7ceebb616fcbd1ae46f45b5eea8331d5e8c1b2ca03ab8ea73967d41d978099f84189edb49996357b2b98db304fcc93596631e8e6def0b1df2f5850ccac96c6a531bea9597e09bf8794d7bf49726103375083b8f0e70b4a673ad89f6f8ba6cff91b932914bda29044e2c72ec7686506c815f6c009f9ff9f84f91598f741455bf23f848de55e10dd422186b7771f044ab06af597e73f0614fae75632c8157e4f093828c3d1e255cd953194885172e1177ff25ff6cb9ef703913b3ceb53b356eb0f4259c5cfd2a637365f9384c0c7c0dd46d50e68f3eb7b52d35a7a84a9915ced13d5496e930482215b3c82fb3120a6142afa6ee40617b29005233218e4191291e6aa5e99d192a1033c75865e61b7e6c0547fea5878800de55e03cd7afe9f882973451b5a2945031b38fc1ed470d6f04fe301531936921fc6f012b3581c6cd1bac22b8b9f04b8d7ed97edf5c2ea7eb7ba10e09c458ce4a12e8886cdd296446a7837bdad88deb899beaedcf7a23f2f27ed766e0aa5887feb237c9f2264db2cd4cd0e7de26ca433fddfec3760895dcf8bcc8c002e2cbb052632595b1a9b25b837acdb88f8ade8280a0bf78fa93293f6763e898bb3ebc796fd9700f23dbc390b8875640daed8eda6ff00808465d2b521a68c20ebb27c929138b58f3c4ba704474273f3751feb118047da9508a4abbbae4a358b195dd9a38118cd2f9968e4d7bf2aa57eaab7dc0f389e1baa5b9ecbdba07bd18ff435346e8ccbc92e09eaffbb41f14c7c94122ce0e1f3b4c0f0a94b4babde1b405a09623fac048386165662fa81ff8a40193078e023a0f59d47874f458b352690dedc8d8c3fa743c1877d7e481c931fdf5c1ae440b2182466d42daed6589bd78624da79b209bbe7cf4e7ff95982664a7d7138fc9556fdd60eb6b6e75b95367e91e48a3eb7858497a49cac1830cf64c9c0a7236fa47956613373b8b41991b27cd4d4c8b4661fd9da807b700641e2ae7b2c1ecf9408b5585d443bca00d7d5c309ee027c3991ee5b865ef4ece061e6b5def0634361112483a007e3ea9155989ad7ab68e0c72b5846875ccaea6c4b292cccd621f207bcb5ae51a44d3addb3b842a49649adf2b07defb19e9fcbcc7e72ed632782825393a495c3632d35a69f827cf0f844653a6e60d4124f1e35782d60103ec35ecdbd8ae295173635aa47fcabf690811f2953afcbed3946e0f3ee40183f5e9b1af84e176e208d992c57a665e8b493bbde3f5f9c6b4bba8e2b13221755e6c9e5dd6191aedb061fd31398f4e6a41e9aa3cc0797407445b6b3ffe811a81f01428066bf050f9a32937211c2877138a695a3917098a66d8ad272fb09dbd83cc2d36fe9de846381dc554b29a058aad81dbb802d62408396cd6522883c9e97c39f9cde23c2ea0b6562511042156dffe395b3b12d22f16d714fec9c5b9d7ae54b1ff5ba74189fce3db0ec191e5ba9b1834fa2f2e4347b21c74827d3c97f5f69e6422bbf8443e99250bb0f2075d5cdafdec79134b46abc04e4674e310e687ed58b37d1b92047f1e3a9987f90bc40e55c94dd6f34a5ab76fced865cb5f7217b594b51bf3d1e36a7a720d9ba0a999863cbd39a0a961e36af2ba8b896d278e4d3e48b57662b8679feb9d43fd7c871f9d32ad0328f233ab81d3df5520cffe8f00527cb1cbb67bbb589d69eaa49ad7dea4987ef477b4be5c1c63144038d6924c5020e9dd3cf40a2b2277de05937d3720cea30fca1efbb207f9007fe9baa611a5d2e6a51ec49129ac16029a6e49b157759be9b134ca6c3aa03b450502cc2266f9cf7ff190f5d04a51b185594e9160502f66568957b14d077fc64990d077a8c6ae8fec4101925bf6d72dbe70a791affde7f2bf8c4ccf532ae02296b2adb166a3acb42cb973e9104b1a79cecfca35d29bf61586999fedd76764f96fab87a2e371e2a9f4d59e0d2d289eb14f4ee1e31820fd67f307d27e2dad8e1a92b95f478e2cc01e15b76bd433a00738a00b66836d795d0a5072d8482bd647178c2dcc5f759ebc93a5907aaa499ca14fd4d6aad3faf7c07bd8ec9adf2e2a5b694cb275ac7dbccdf643029d35e401d94eeaba4f12f8988e7c0ac175ef24d7fa2b97d09a7db15ef34ffbd55bc7fc3fc15f24fecef1d2d87903fadaba57603837646bc88c9183a5ad7da34f6e9f2ee490d0a91df3df31fbf241a07b2d154ae68cd9987931431f388101cc9c45fe6abb20f4d1905c9c886db1b8566f87fc3363557e083b8108205278dc832583072d0d6f92ba69fd1e3906315cf0fbf544d8b85068792e0b414a489e7b90767e7457b31ee90b3b9ece7a6731c922f696e24f812359b4d471541fc586b4e53dc016262cf53b0c055b0782ba348931f200b189a5d6d67764e720677fc5d1705a8a2add465df5644e23f1a14c02670d50bb6d8c9255d49eacb8b9089673af88504c7920b7e4563bf73ba6625525d359f7c4820dc6efe94318c175cc0dade7948c2e4c1caebdb97ec7b8a9c5516d580af40ca1265ada1de3c1f44de126150fbebd8b2eea933d5f8e3308ae32ee6c208ac8f72a34a7ac3cbc60d78b3f615001b93a7080db1e5fd198546aabc66dfb879f36de6e262ae3c1f74102c84210873dffd222d9935141d3569c7146ffdab3c37d748db1cf9c5f50506da538154fe75206a795391d5ca5e1035e8586fc127594b63fc508f994e3ba428bff4fc600215d48a2f50e60f77143b6e061dcd2e9e30bfe03bb05480e979c0621e8aa2648ea902ffa2105a9952faa78519678a73be460f257972f3ffa8981d13c484fc38c7cd836a52ba926ae8e62c79507f290bb24d45966f74de350279f26bb9d3a9ab31480d115d9db887cdf1453b16b3c76b691a488766983cf23c61c35e47a4062ab72f2eba427142cc998152b2ccfee65cddf13e1aaf437c2e41fec863e023980cd5c851700c3717ab1d545b1a811da1fe0057b9f3890d3ec67cc31821a717f03de1b56b39f909f6cf3d283f9a266efcafdbe6e64d0a9489029cf3d7f8894c043a6fb35a4c1248654f272ab7625d476113709f42eaba06eb0050c1475214b19fa3ed0a66da549ce5b86bb261719b9951d9aaac4b8b34a2ce8dfcb847e480e85ef1f6ce7bdce7f3360ab580e33b942253076a7a366906f72a8b037d5b951659c9af42a10bfe379a6174f16daed9df5d8cb41cbc13ee64c066c0ce1f744496fa34606663fbf549c3fa6d167a1edc128b5ae2326329709111caa803d5558eb5ce89dc502d6015b83011047e2eb89e287d5132c8a6e6e7564c191112324c2bcf371b19ee3c3cb047d6b302bc011d49b9283f7c010ec9fcedd17d8ba505244190dfed7cb72e4fcf40ddc2105612c1bac1c9d579d91bf66ec885f2315e3fc967b1850fe4c1c6bc83469c33e6ac596cddccd4aaa082e52e05b66d1dc28e078113994cf4282d25f5ef6fca526ec14fed928a1060599c9258118ec497306b0eb3b699976f6298a2b986fe5ee70c01702f2da68f2ade789a9adbf82c358f39f73cbb750105dabbc34fa037692f75bbc655088447e111d5a1ee95905a144da5de0ca6d76c7c6a8e58b9ccdb580e3ce95cfe4fe2d5f561e6b8b4cf045c884347efbf114dc04ddcc08a8cc34dee7e469591a077870d50974aec23789888c67d1fa606db6e99d3ca828337aaede464118623514a32c439eb65b756ed3056908b8ade798dc1653b73dcee6c0e9da4fa1e52e959665d412b66a6d5813bb6a8b09dfd8996e2d719ed68c897821ada69ac859df33dc80b0ed74bc23593360572e049d9e3daca91bd279036a963b644f27a1afbb211ca75b42517681e1d26ae1c3b983886df15aca86a94084f31ae792b04470aca58dec461b20e5cc2caf8410f04fcf02415881485afafb7264695462ceeda5c0ed12eb3445551812ac25d5605321b2db844a1ff1fd1836d10b18f066e8faadaa4f5961bcc5b112a07af3b74425ed8cc983951839955910c19651d878f86cac3f199190cba1da0c8ae2be8b9e9e6f92e35efef7246464ca6889c70a271d8cc6fbf01e1e1ff491e026f19c614934ad6c25f6d8d4cccd596e6f9baca436fc9b957ac6e8c8cc538c10911b058b90a17a39ef6063c0dfa207a58324ee7f1bf5c9b5ff5220d4bb8a1ca628f3e47fb3c20b9b86f6e7981fc00905d5987e508123bff0f029ada3269c2f4b10eac55a693f93a892e6e71ee0fceff09b15c32cc6318046575998a81e1b539cb027373559053d429f61d0ae8d69c3c18dfd75fc7dfb8402639a1b6605d1bfab326ded02a0920dab9c51fc0f23de848c68a590a1eeff311ee511360a14b4a213050a4b264e1070525ea20460b3d87e4a6e100ecf91a41d6dd4a0e8ced62d1ec35de041dde83c7d661e1aa13fe5ab848de4bc98699747cb72c9c47b1babb1bde6b279c1d1e826451ff7c19b0c70fd7832938075fe6122c64c8308712746a355ea3d2b238d38b7a5b269de9822a394b5b548753d5506fc45cf650402b3308d89977e4a464abb0b7887d977b5d2df782ee655f53861d2abc7cdf3ee4e4343a772c1b9714ea6c5a11e8e0e733e001b606ab50da86ddfc16b438c59bd9e322fad20c373d435fc9d50be9bb63902175f6daacb4b9eb1be08fbea80e4d352cff804ef53faa3a5cb0214ac44dff2fe5d493fdb58ec7e55078d9099e1864670b67635e8d9db83c667a3a6d9f97e4b6f7f8b4e295450c337586a9d5ff356a9e090d3acb16f6a0efb4ea6ec4a1cebce777d6a9c52fddd0353376e5fd4b50e71cc5c11d7b9483d69b6f8222ede5063cff63041b10ffc7c5419649b43174f8be3b0768284a2fbb1e9e09aa421f19d85de38defcea2deb1ab12e12a918ab90519813a84ea0218064c97c64aec6acc3d6d593619e1b3576297a5473821195080589f59bf036d25ab9ea7cef331002cf3d6f2af4bb77b2711c01983fc4976955f1b1673bb9ccaf8657adff371d5fa11e876d5a8ffed4827fee2416fb42ee30df8342e39e4c043629aad25f3bc8cc76f0e4549783a538b6e19cfee59083a34daacd5d477320955e036172cd7d8445751568b3b3ed00b6e617a69dfc7a42d4ceb4076b9eeb0292f7deeefe60191673ba988bf9da53f59c1cc492d41b17ec3dd83109f60c9b90ff0bed095adaa5377755feaae2bdd97ff8991d69151ef925210a02d21f8cdcbeba58272df97d3c14763a3d836db3292a5d27e9385e310343f412fb049f51c055af074c1a1ac217ccf02cbfbd64d0669907bc879135d3ccd1e5d4eb645007d16f5e2bf85107bed2f5efaa805e77373a014b9b2d07b79f690e2fc9cd5f573465fdb4b4ba9b6c8d1818fe22e253e12354ab4f41bdb6af45f16c368b3f80ce799b4132ddb683bb19a830f2fedaeba370877521b912b8ca31421182b537fb078592545e3f92d79ffbec2f8a4d065c4e9efc520e36c5b0cdc258597a7ada265ed9e7a19017f82b8466127ad514703d5699d7c6540a8644e5183d52fca27ffa93d30a680667f055265061686f97210a00c3116a22554d9b01d2f93ebcdc4196c5887b3c49f3a6f23b46efc689162aa4d7fe376ee20176e3424546157882e3bce8629f85e55b03e026a41f56c7da48ceb8c63212dcf2c3cd750f8f00fa477053dd9c6fff70c0a0c2b91a3d4be68d6cb167873c2c2171100fa002d0dfea73c6e30d00e839e1b048800cbc7dce3a2ff359b9c7b0a5cc3b02e19cca42c474911d1ca085c618326212c460fd177df92cf5354cdc6cfc90d0c781c9d83d76b5c3b34f35bdde515c61ac7d1661abe6516ced9bd02911c196c743afc168bfef002506f33a1bfef29b3e2460b0ba2311594abf41e137901bab5c7c312cb008def3db5b22cb9020d906ebb462e83e6af3c3df72c56b161f43be7f6850978b5d2656d0f6191d0f7f3b73c2c13fd4d1abfc7111ff27a9d7c807b206665a653a755dcd29f0bb85d8d31fae7b29f71945b88ac737204aa6209d4878dabd1ec9fb684e5f02a20f08c10ae10179894b34780273d86689765c12b07c81399c73d29ef577c4f682be75c075af0c33df44c78c158062a1b5d9590de82c7b69ccb18a57b58c8a7e83961f78880fe7b732ad04a1e7ec97803d01fa11e4775e725835216b8ff206365009168e0f579a789a9420c24ee9b91add632ebf1b8ecebce6e22785fb45198457aef9ffd234e7def5cdd508011b833245d8d631b836c7ad509bdfc7ded2bd4514bf5bcf94245c65316ffa11f51b62f9691baa468b499b9976ca94e9b81e7069ea9aaea967fcbb2bc4542445acf583ee404cae00f93543a8c6dc0bf18f5d5da4d541c66d6b62b4415c9d5d9becaaaea4c66f41169d7bfb8445c3fd6289fb66ab45d9e8b01753e4215c2de9d7b3afeb78b4eeb1e6f43133f32873a4f26717f599c62e6fa55e9f3217e1291765ba6c02848513675a5c81caa23d655707350399707f2ef5041d687486877e2947b0bfc250498f996f3a28a1dd621638a935c67fd5236a1ae07da76356075b48d77a761f214af69b7550f774e85f89eea6ea9ab480b198d27533a7e5ef0fb286381ed818ccbb41b338bd56103138c17506446e33fe34134674a888a19080bcf6b8a91d777e7f4a7fa06bbcc8a3ec48f8126064cbafdc59424597bde6e93672ce9072f154e88753f38252384dc249acbc992654d138d48c3a48c78ee34533149cb124f579a19080dead21ebc455fbfc2128d148a2bdbdf2d71b0a972badbea68a97b53e85ceaa580469b68c3dd69f4fac5cf9fef5a021761a59f5478ec6946eb64e11d4e7509848c5f2f7e269e1fe3d219d166901a9d82409623f623d6bd078911e6e34af0b0e2057b98a4eb05ad764b4c36c3069b647b0f225188043297f12588d8fcf1f07bd938d521f3e890ef3e443954d2e04773ff03dfd508c4a2e4d5095ade5891f7d71bb327400bb2df34ee3a41237f06dbe755dcafea845b254b089b7e7613b7018ae94ef6ee9dc9560300b00f7c83a696ed997e0701dc0f64c56d8b4b10e31baf0e87dc4ed1c50c7d9f0073ef5c382121975deb237b0e4661d5f9cbfe6f3ac660df7ba11fc29d97341230984864574e2c62f996d63b0ec2a721af80ab195604a7942f42f94cbcbe7937647c05b3b6c808a7ed3d73f33e99a7793549f3768f81f311eb79838d5914880637946c499ff64cc04b98387163ee53834da3e82e68ed276eaf29e592d29237b435d7c9b38724c78341d8f9c962205bd2ef9594597339853c37bb7896ca34a24e934968f5a4179763af6f3e83d21095c27e613882e6ddc52228951c2d6a5061a334263d3ca9ac61ae7de68c8b49ba906d116575627b3fabf33383f3b0aea91935b512a8d2ddf8a73cd93d19dc3442f7ac9c6f9f0a4f3c8f09e08ae96edbee85cf82f969497284aa287763ff6aaa2a99a0873f22d270df266285eaf631d84e70db82bb251c2bf38a8e90f82dbcf93756da3629cfaa15620d2e30251395730b996ea9cf6ce38a28d50ef8747b89cc4136e78190c32d416f83ca3a045ec26ce957bcc5a6550ab04a5225d2ccd6f613a4f3798e473394e0ae2eeef471da168f9d0595d43b6012fccf2855ff01f8befcdb3bae251981475e2a5cc20ed0dbd0864389043b7938d8f14c581eeebec9da9a854805eb454e4f2c4d44111e84bf7c855c224e01de7af00abd6c25fd5e144bfcbe2a844a42f0172c703fd9276f20cb8258c413f5c35156e94b1d05b8d9d5f598913ac997cff233479d608f4367cd977c128e302620b196085e19c5e9430688c0a570d70db9e4e135ad90bdaadcbd5632c3f92bea17a35ec69f6d506922d0a01cade809f24b166be5f2cb942c3c33f28fb78427c8da53570de56a8bad0495b6518f43ad0ff76b48f70fdbbb043706c60d7c0b04b1f5c7de7b8e2d693bd8d57e3989e6337d6b2b72fead2a76b5ebe0661ffd0dace55c8f7817c6555186a15830bc29ae846599d04531da6b74028c53c69c3116aafb02a7fc4e6d8ceff0d61d3dc61a027e0fae91a46cecd65611a9e1d140ac82bcab4a6cfe26377c129823542d514f92a4e72db68a6b7b826d48fcda909cd93f0a66b1f5733979e1af3c50cac40d06672693a68ec9b0378d06a473b589d993e6d84e3237495d9817c4d7916dc4d5c5a82cc136f2423d2197959e6ba113e11daf6d8abebf562b2ac975564c8e7cbd379b3ed7ffb437bbbd3d5577624e5596a2e34aa5a63ef0d625542a9f0fe3bd42677fc47459ad99845fd64aee1fcf59dee781e8708492fdc5b7f3769acadfd0f9836b079f1bd5c916cdaecaf78ae67497a7aeb40d358ef49c4eda7a5ca1fa0b940456a6551335350233619e76f5147a0ffd5bab85c898c7df7e506f09ec8d2f58a9fa3eef9a5008bcccc41af5e04b66904bf203947585ade03c2bcef25a428a1b6c7a9e0c034d2d3c186a306c1d4d5ca22f8e7dbbf26e3502a53a9227b271b3a582cf2eb4116f8e2cf82962779373bbe8721a56defa527d36414a06564c14a21d6de036b5b4ddfa5b6f08add4a11e5dd7457f5198a53af33db2c487cc4ea1e04ed9971cdb26d7d6baabbd6995b4ffd33bf2082ec43067c666d420a9327c727e82d189e1c2b70a08fd5049e03b90fe44c52ad24dc568a328b2e1cf6a03a55e3f778ba440b7497b45bd36d601dd35947d3aa64c2a6fe4d0a10e314caa24f2fc8e3877e00667964b26f3433f521ff66499558c4bc3dfc1d567d875d86e3dedbb76465454b88f09a26eafd1600eaf47af7ef848e0ee417f2b75dca0f36eafead3a2ff269afaecf5586b2271b29024e4c93446548706896c951678d10d82ff035277161a7259cd02b41bd1f0ca1990efd7049ca081e17c897858267c29173954197c5ba4fd90df46343dd44dbbc1717a36bbe949618187c40168b2388955ef26c4c6559d2cce5fd39daba6dc9b176b260324b39d7fbef89a4bbb04017672cb342e63b6d9218caf2322cd46061bc780b0df013438dc4c248be7b2c6f9a6737a6ec8b747a0dbe339f81b7ff5c423c6cb16c0fdfcf661fc914ce5a9819a4d39c3c74eb02d751498d127b88c590ba8e7a1afa1d7d0f5c1b22d1963497d7f09ca60b93b0a731c5ba0e1f1b1a08a131b26c1d3e0f82c85d59cc63aad0a2f8f9c94c4e13d5f1063b7379dd9812e22863fc6776b86245d553131b32c683c6fe5745eb63c06cc82b5b1cb4270b4e5232696d644558ee8ca26b946cac3ff0c421f5463c4ce7ce1a4758c78b1d1de94bbe9669058f844f3cb1b6fc40c380b7a7ca0fc1c22f673f6f55f6bb8ca0d23d044322e40cbcb444e119196a116b942e00190d7b13d651792a26e1b1fad95c04e527a044d8179971fb0288e0701ec36730601bc4d6301cbd94dd526e6db2fe095d494d913551d34f6c2a988b11583f23eca6a4e7efce5e44d3710a007c5b0130e67829a866ff3e4e92635c33421ae278c12691cdf267263d472e92132ec7b8a4fbf9e1905717ca60301294fe586bf74ce1cd5970f354d4ae0534d619a02c988867058c31e477dd8269b229dc49d21ae28fbfea12c6148fea65f70a3b6487567143482ff0885e55eec54f012e58de231a9ed25560faca4269f6bde34faf16237d4364200b01f109096e0c178f6c9e22380c1155df36ba31398223195b4edce9e7676c2bb224b7e74a859dedce18296c357f3a9d631dcf145d33993f3db620a854fd698e2ad01e989ed5cd4c7cbd18b7fb814100678c18ccbe48e1ed9c3ceed03ce8d8c387bcf4b9fec9fa4f9995074816a4cb5f74e4479f974894333dae94c137942a1dc3f9eea9510d94c452a6172eac67b46f0ef4310e70129d5f3c0426460c84432d3c2924dbc500a1d8d4b16f8fd5988948bc4f503119b6bb16f5eefc2dbe6bfc02ecae93bf30a33c199755b6059e180fca252744aa417f03ba7b4a2ff009f2a233d5ce9a40327112c1b96d9b0a465ebacd691b4d2488375c1df2551f6000b374b57a137dc71e3ce3564eb04e7495f136291836d3642d3b028e2bb4ef71b4e1288a6769e6d5f1f3079ca534040251e9e28079e3dfebc79e04295bd1070f2df3663911135f2ecbe6e6cafc4376f8240950ea0ebe9f249b4ec681c64692fa0c114c1b9ff7d88cb8067f25246262ce9672c75e730ce62574c28098b63afec5a2aee87260d627efcd5ce2d3f8f509e9cffcc1fd080ea9022e9bbc2021887ed5527fc158fb97836dceeeb612cc5ab068532f6d1f1c9683aa3f41dc17c4ae8b748d394f759e4d09a3e702b4b1116d1f05f18b2e376600325af56591abad295ffac2057e8bbf6d38a641db29e2efd525fa864c1a861a3d179c371b65706acf78fe073530d33085749165b978558a72110465f97b9de68dbad8011033e8534c1b9d5bdfb82397e2869bbc3796ab22353a6c624552b190904477ea61a958b99ccfcbc1555fee8ab91ac0a9cd8c3168c77925f96ccfba1d5f048e5e5ecdf1dca9debda3e8e208eed93ff8ffa0f9ef9006aaf8f7edda6aa9e0eb2273807544ffd1d758285ff247405feb02d79d8e09162b2fc19dcd8eec59e10ffc6df2cd08f3300fb976a0b3e9fcaa75bd002c90692d0f6cb92fcbb877192b2c0068dcd534f3f31bc6147c3dd04a94190ca1bf59c25a904cd75ccd5cb3ffa31e27abd3e162b5e057d7d3321e8c89f67852aaf0d6dbb179bb38009131e8946a68faadd01788f27c6268fd5dd73685af157c40bb0a32a4bd29a0142020035903b0a5ce2bf4fadff0a0ddb1165a1d5badd99444098ae373070d01ebdfc86738ee40972f43c8c952d4b758abcb933a59e38ff18aab00f0a5d5601cf615fd92d86587b0579635618793129dd607dc8162dc69e87d77a9c60d601e2dbd9a458de69d96067856b482c7fd6104748886f9a12879192f54d6244c85c9a4c7125a2dd190a43279a4108b68dd1783b26557a59613394719a06f44dbdce5f7936daa2a99508b3232f8e808dc2debbcf6bc0741c2e604bf147f6b5a02d47d7aeb9adaffa0d948d96a7631a3cca157294040c2ca847c9a51404e59654a6d9d4c255f3f9da6997ecf8b4db24f81b01c485e4aa9ddee0da0dbe0b1da4b4ed3d5562aef63eb5038f4231e8b87d9004fbce5e79b50dc94f51d5e796f244b0071bd564c85861dfbb1126c7c3e9fb7afceff6f26b142ebac98ffa69d8c81b5beaa6bfb41701ad4a780687457273e3362186f5a67b578bb01c7948941f9ce00d2a4fe11da35460f46622881f0a07bde1ca0db926574e62484a911a78662fc242ebd17c2374365f1b146a71e2bf5c35afdfad805bd4eef9085c60fc74aa9934a917f5bdaa94c84511b13e081d8c4546f05f63b339a22eb34e5b908c0f8dd2ac959e4f22c6fefe71dbc33f078debcc36fc269a0d2174ea81cbafedeef5d91f075ad9b0bfcf95f848e08689beb1b6277f20acce687fc6ce604448f554486c02642ccff567684ef8627c3d0c6eb2c582bd74caeb1a7ca37da052d2f94d3e09fa329a80a884308fccb8b9e0afb557029709d25ece70b54f6ac0d66eba9042f104f711c54db20eb6d671f570be801f140280b3f4b34f8434cf92a28ba02480096a8355eaf8b8df23e1f7a6e8ae08214790d23aab2860e51c251a7e42cf45fbc42404980775a8750a6efa9f2f95878315c286b32ed91530953baf12dd537397e1c3c6324fc0c57db6d8545fb766b6e6ff65a83631f4b436a6e2b59e35467534138d79db3c8ec6cc2a4c34ec6a4574e92e2d60b3bb771f5b65b1297291185b923e8dd44b8b1464d525c41e59e18fe5e930da5dbc0a001523e9dcf29fa26758abe1530f432adeb8c995bc8c8f7d766d529872187fff7be5503fe367f538f7e11d71e4706057cb0dd00bfd8ab636d39f5a4977a361746b066793d11ef5358cd6eea50aa52ca13ee2a28492356554446c1b93d34cc6494a1b8c6e19c85c977f1cf556e773cbc8904c69ac21097d14efe3b2629a75bf745a0c13e95079e000360381d7ee01078f8d0a22c2639087d73f8374c417eefcdb482be0698f84cdb86f1d99285abb5c27b3aa41280ed9fafe56db825c938a097055c47163b069b7bd261fd60b1b1a7a3e6aaf80756ae137854bce1343caafaef810af4050e3f8f0ac6ce7ab8e15f4971498d861227b40ab9d0e77951127cb6510eac105e65a309669e3fc2a5833881a8b6d368b8116920ca6515f975b2a7bc39fe23625723a66dbfc51974ce1f50a8a9f6747bb8f7ebb646a30e2aeefefd7d349e98fa3f39b21c7568ab89190dd2c8b403e6f797868e99f4c1c25a890fa199cf48f61df62ba3c0b0eca40d04447c2cbf38a9219764576feca0c21cb2e08ad3a9c06b362b02496694f29764a4651e3bfc16bb02df6181fd6d93c5958df8055b1bd7ebd86067e96700b27e259ea71fa933672438faf5fc390adb256084453061301cadd9d17abd273c623482887cf8f53e456cceea81e92d0db55ffbd6c380ffef71ac70b9b56f9a0bd7fa3f897eb63a4855202e6fc71fa8511597cc1fca3c6e29e2276eaa90a2a1fba5f33f26587c48a4fb511848c6aabfe88312afe436ff8a4103217fe8136936eff5a7978f25ff1662f114b391b846263f16b9149a1b3aafba8de281f54ace6337928439e40e0883e9f803a68137e84aaa279cb6b9ebafd6708174eac4a74d11c0f9582d33aaf65c43c7ba461caa364c87486dd5cea8f715c45e263747be569d1bead8583b0a39c7e46f5bd5b2ff0abb55d6010a9afefe602b850d753f65ce4777551dd82b3dd8e417c20bc93c60f32c78d2d3a5aec481a1e9bd7ed494358e6cc2c922e6e664ecd75b10722cdeecb39e84d881a32be5971ddf56964d9295e38d920e47558980231056cb3f0a2de3c2a64e884d27723a252eb1f6b254c6f90c2f8e26d19738753ee92e33a2e90776c97715539d8ffb8f6845c280f79e74c9c07e68f0675879e293997323d05a0f7728b37f5e7b15b1947045b4f4cbf6cb60a5d1b75a97a290d48b70d7a68393147c720b4f1b15fd66379f266f325a2052ffdaec307d4f9bb17525656e91771b0f84ecb6f5403e565d982deee5f012ce370d6e2011f164c9f97471f43ad9ee886b3f11b2771aeb4ce874a7f4130327a58606e631c1710eee7df8165029c62d4dc50710d24174b809a2b46c7cec3b10525b87bb16fb256a6de995cedcd15bfd905d434ca7e0056122c8892f9836df08ad9d68d97efcf0f74672fbe4009d902b21e168db2fc1e5499aa66878618f928eeee898222f90d2199e23a9bd4222ff086b4f18085a6570f67232f4237f0c2fe5f39561e92bf8ab9ad2c0584cb7dcbfe98814c6d256b60f92cc35e0dffb38a99493191478b302b72429c3789bc08e02a85ea8456abc5e7a6c96afb3af6c6682e80129b08a08d49bc803346d491cefcf21c64419b978565675cf48486d678cdb6d4556efd10c2f597aaa651f07427915b6cb84ccd8930aa5c45601de4249304f79bb164771ab462292a3ccc31a127bbeccfafec795c2ca02124c769c304d0f2da1ac65de831362ec4c9c7ba3dcd3b9264cba2cfcf5c8668e3f00646588f2848f42f1742893c2dda549e103253b8448a423b9307aacac2541cb7545ee74b3e707f9a51dd2235f53f70c67bc463974693fc26a4e91a7b7809a5e7133316e0b564c2bf002f42663f2fe7e62b13a6a3795f09e932450834a4cc6401a6567c7cdad667ed29807859653ad6b71beda79e200e6b1e5fc58137f38cfe12af4e921cca7615e1181f19e59514a03539539a3993d63f7acc2d0dd9ad30253b1c687f5cc51567927f08fc0bfae2f5a30b3ab3a6fcbc6f28b72d09d517867cb5fc0190ed26009434a0ca0b07997f6e77486412392b92227481529c2d7d107236d9d600caf15fd737e78792690422c093747d259ccad9e9fa6977aecc4dfe25b051982e3efadf984bc7d1351ee41217d3044656851ed8a6758119674c6a382144a41cd590f9b93352584034fbc488ee946a6fdf2dc40a510f74ce4e421e39613e31ac88bfdf9230a46cea8b689729855a4ec8a2e21ce912f11a3117a07a674c41ef6ea68f604fdc86da8850e485536ad5fa306648540f3de467a90aab45e06b5a217d835a87961fd107eda5515681640b516967234dbde3976fe9b9966e28b16ac965007aa2deb753e87f379d688ee44cf04dd4a7b4ea2e2f7e044a31c9e8440e092a14c424b9ac623003ee1a1aa8b4f1e908c71776af27eeb33bad52ab1412bad23c7437df0bbc6a11c26e5f9f60fdf41f49f821509a33694b270739cd7e8f639a30c7f932a340ff129f351d7eb8cd480bfa6a95fc9f937c5080374664e2462e7368468a0877c82569053e683408ef1d192f2291c7686325eeba5016a1b575760b749b9a8b8d5c1e7a60ed9449b395e74aa7cd6bb312dddd713d3fa4663f05f3a5a2703f1fdbfb35f8b5e53d5615e2918b1dd9c98c1b7", + "0x4e7a3e46b68dc1b093e7eac2de62df5e0d90c714236243925dd6e7a34a2731e37b9e16f4fcc866cb2fce2b453b1281172da54e9c1dcb11b1ddf9a8f82dcdb62a1b033727213ad9197184ae16c6ef192e9641b6714c5290e23e5fb3705f4e0e16791a3a74ab1616d835d5be87c22c68829e2dddf879cb5905767f765635598a2094192ecec43242102a6f3ebfb7731cdc8eeb82f3506fb9dc8fa0518889e5479b9d1aff2abbb1d9c4530b863fef4c4e452182213de113556626e4d0f6376134a67d0f131d8146f5018ae3d4eefa9268040917460b20f5b548eda50d6fa1ecfc0d4c8481082d04c7ecf878c8082af77f066a597215650df281292a4cb42ca7f8bcdb31913d79beb0ea9faa96d3189645f75dbcd09eedfdf763349c3075c10b605d2b60650d42fa9503d01b04d11d9c07f86f81459b57873f5afc5c251a4c5d6383f41805e10b6e4bb5b5ea5068daf971e31f93a6102792e0ea82a1ccc34123f2351f2a26767b124688c8b695b3b1280150632f246446c752e35d61971112b645f54cf865a8dac2ebd75af74a3049ff580f24622c7b80b857a73495db71badb806e4d21da98986d276b0da2f48f0d96f1bcbd4f53760499d12647c503ce3574f6e3a9ee2299c7d422ac5a212ccbae3bcc0a804f0a54e8858815e7e7b15e0536e9f11a9869fa9cde47880d9b82e69d7922df31d62ff8a35e209efa8fef54af7ad6bf0f56f4c3f275eb43c386f58d922841028930c2ec912dc1ef786bc5ce3c1b9ede2b443a60c6fa43d77394efc808950110b40d3faf732034b4f011d43eb95c190cc413a182bc428dbce2e20f8ebeb3929cd3d97985ec1077b20423c807b7ecf2d4658e4ee399297c712d8631eb376684007be8f2a3059d08a0e8b4c38dcbedd1954ce8b7f1c6b16350435e6dcb3bcf460c356ff9e6a9cf6e69e71217690f142aadede2d849d4b4adcf693d102254b78ff7fc4f227f2a59ba08decbe2b69fd142c76dbf3c8bf22389a8b45ebf665201583dc2b3ddb8ba570857bf107dbd1d93470e2701432c79d8efdf922c45dcc72e63b9eb743576f3af44241063b43b2e0c73b02b004a0761f4652f4257c0108cf48248cf59fe0850f5ae46699349c3fb93a79eba4ba9aac9d214d5573b2f633adf08613c1f06dbb1e2e341fa0f3b70b191069ecbdca5e7738823653998911fb2071895f35208b9db626d9b0283bb2701f958c78a18cab745f46ed0a3961af096d7c8b427fe73a4f6281bf159c1ed4aa1d65a57d3a24b53c95f0377261f2df7cddd505201204cc70dd9a56be708c072c8ec3b43bb00693eadaff9c6a5801ce303b3a0be1ef8ac8491c05e362a8f805bb65fe75c080be92644249a9ad766ebb126ee29310f21c0a7d71eee3ab55f05a02a72e4f2b43026a604aae642c92083a8ea28bfb1d77a296295fd617eab8a8145ea51e2bf6e894f5f06baeeed59371d364614c08771e5362269990f2348a361623ff440ae18b8c97c89ca8ee2bc53d919f59c036648cb5c48525a0941588ec95b7602296c4a9dd942704f7dddf875b925f71f3247bd7bc96a355c2b7dbea08d4e60d6040dced90249bf4ac7b56b7b7e670daf81f2a555192559870085ef0dc139d2866cfd2221c4ee216d1e5142f51e554065066dc8c17569eb38025c74a6336a2604d75ef95b9bcb65c69ada034fd2d75acb083063fda8e77b7bf4b46ce67877b944a278ba9a7b2dfd05d2200445eab56b4c14d9a7b4f0657dcf6068075452dc6b81444cffd71e347d4b66faf1aaf4e846baaf2c386d99d6ca8371770c2e97d52282b882188bddba22876e924a82dfe201e2f1b0aec0ac8c1c9eaff0546af3bb47fa76d9860af60d496a5a88e26019a2793064d917673c319553657a4c04187e47f58eed80be6d5bf3e733e16127e8b9cb66e5b9731114023911a73c779b363a1353afc37123f6ea474560e2c3077021dc5e7e7a3714dc716f144563ea61e236a05433b4779c7f6b10ba4210d7db24b1d3df5a52cbe1f67884932776cf5ab0a468388472e61564103ba162b5c2cb9fb3998258a40c55a3c52876d754e2e830a3e8e661bfc37753cb5b39f788794413d460a6ddf3cacb2d81ee9d35b8f7ac1cfd20afe4f54ae86bab25f5fa454a3ed7011975eacc4b113a8fd0bea2bb72b4cef016134a0b69de274df45b284654d3c795fcf79566c7187003aac71915cdf7652353a4dec942040c52467a827e0a267023043c69bbe9871509badafe511629288e64f09607ade93e0a3ce24a8db3973be570864a0f54115e9f27d6a4a46ed2ffce5a7d2959b38674d51e3c87e3ed4e27a04499ea5e1c9f7c5c776ccb8c8bc42fc64ad6bb4a148ed743d5667876260eae30c607e600494dbfe016cd97eb37d595d4cea77477c28fdaaa7028a5cf225ae8af019b0cd5583440c2d6dcc9e1ceed165f83ec84f164eb1ab5a06e5ac478f01a4545c680bab903f5806afe2f2dc4690e7589297a4cd492bf6f3b1fc397158e2d45a52ba1a9526c2782e96a9b981dc5da9806bbeb43a19cfd7abc78f9ccb705c4367730eebafa5aa029521ad777f39ae1b2a330d5688ea6ac4ec102b47872a6f3aed8a15d98ff0210e6023c6317f4f3a4280dba2f78110815f78c0e70742ff2cebf2669ce52a1b87c6d3f3ff77de2e4c3ea75a39cfdd5d4614983c73b6f28a441df84508e59949bc275b16b0cdc117d000e11e232ad38af6052b1d3817a6e07f7c159d7235e82116eece309f38beb04a52c99b0c16fce6a79ad4284785b639d44a3d116ce4287107b10c71b34936f8ce25eca3b1a75dc7e07850b96169c401453d85ab66cceb339c3d72fa5412caec90212e75e32c0de487f38ff81af10908dff5929f0c1c48cc324b95584b7fd4e47876733703289011f0908bb5d9949b3342f26b3a5402e8934ac4b54daae4a07e38f0e781dc081a9327cb0fb4b7e325c258ff63484d80e98ed4a2aac03e695289c22bb83581880ed42e395227d3bf314a2facf2b3972879984e432c220bfe712b22e78a553ca55161ff5f5b7bf6f00b59a015bdcb60d62e0eebc865d2e5725bc126512338e259f24f92a9fe2a01b2cef8249cbcd88b454b77b91a92aae37ad2e1940c307f1ac2849885ed4f31cf570c678c2584938b2dbd99ee6bb3adf64bc069cd414fefa20206bfb1958dcdf502512bbeaf2e0c0c467f98a54147f86caf4f64b46b078fdf2a6a6bb0316b215c33cfd6f9ae3e51437c1399cdc6a524749bc4362f969db683384c8fe0f842fcbd94189bb118ceeb117edb3929160f08be611489fdb6710294da4d42962a033de92bb082643445845fd95f49c1c6df8fde0e4f1985eaf051220cd800308643f7e6fc4a25294a9c1600bf67b32e922ee8eabef4159fdc1295c4c6db6b6f89df83c47b3d2058f578c3e29843fbe014abc101197cc4c6730f230c1b516a5016daaae3cd8e97b3c1a60969c322619e7882c5e02543d81aa355a47e03c73098bfac29a757a8a0f2527a9817ae18fd4ec316f13d1bcd233f77c5e90c842526a5eab53bc78752c302ecf1670a0c3c954e45299d6d858dbafd62d7ef3994e6edcd8b69212530f9ca8d068192c27d999bb20542230d9073e7def3b411bc444371533f85ac1e6e2783561e76aef814eb8a21d4b66f381ecf6deb0c0ae51b2464d4dc9d8a9810504b46b65b18587bb8353a652a42637f4778fa17fd6d36c66a40af38c6521a238d519ef2ecd278a83bb8abffdee05de396aac393e0641cbd4e8f62c0afd88975861c1f83668d599fdf5f16eee640daff55982324ad98e601392502cab86481d566d9d2df41255ba844711b79b3f27fecd9b5aec488bd2d1ad568c4f23cff0e5d6e0efc424c832b5d40fe8e60e0ba6e4533012ab5d282aa2b0f1cf142c79b1db8796d0fec6fb3c8e4bd265346deebd0969b59df4a29d396f3d4f75dcfdece1f0461fabea397b06083514ed262a5104fb65367e3f0163a23dba9b8c7b2ed47c808685c07d40dd67385292d9d12c5bf714831c51f1bc6e8fd5ed27569edffa9e3e8ca8a2f9e09df92c0f53f6de718d77fb456f43ad55142d2f9b4ccbfa66e20ab96d59b9a25ac79d9f18970369f41747a2f50a95f290492def6d781553daeca667ecfdc1c6ab36f5ba436e36a6e7a090e556711d0bca8d45f3495b124829ccfd4c931f4913621fe9eef9c2b8628be85db2335fc449e158adee4fb2d5fbaecabb26b8f7353caf6f23d59a02244b251420bf6e5f09996488a316299024846596352e42bb3df2fb1a922586250c07e9712bd4a52a7c59cbbae7de6b1dfc2c2573df6858236c29731eebbabfbd7423d93638a4a4c04490dfe93fc62bb5098b991bd3885972a1af3f4823a75fdf55cdea0ee2342acf9a65aedef53206f22f5ed623515dbffe11137667f657402a1b5cf65629d7c2274cf3994a545f3eb80444b66339d3cf1fc3d8e48f64cb9cf828ac3e7ff2afb8bc3b63666a2e56ba89533a6dca93853d321303458a2ed490ba4f49996485d05cdbdd5d5c1959fff2789af1f8ff07de194d2fe8845e5d6eadd2596981650ddf2a20bbc8da232d3c29e08cef586465c5ba299d582723bc2313dc83b69f971c4f89eff4d4f1790814729a9181b84f1fe475b3b315f1e15980c41efee990c9242a2814b95de19bcaf06bdc417ff4f1ca7253ae1e985e6f0897221b6e36f5ebfe674082cf96943b59ebaef2eddc26d3a19a1ae65c269c87e095c5816c82121467d73525100b75971e284a1c160e22c202665961413bfa60bc6a23a1047393897e965d0beaea2e848743e06ff33706f1ee404a26763c1829bb77b64e38462d38481beb39deaa407483ce343af0335a1b8d09b939f5803f8fc05796957b7d366d2dcc45f102f26f0d09db3c8d2a6252d4a8b049a28fa7a893f2b2b400365878007828493080d87d05919804c7f34b2f872d6ac264663da5503d23302b461ec5e6da8031d31576b4109900fcaf5416de46af6d3ba073b4e757d0286f5d7c3a1db4e73f37c192c027a621937c7086c44445e446562b01aa638b9d2ef5611c256dc297c21a3a5fbac33e2f239a05784ae4ad25b6de55307d800edd9e23695e1e2e89c7c0227bf3f0817d4cb3900d4d6fbaaaf12077bc73359809890759c7f1b87331b6454fa15d4b6060066261bcdb7f8d8d6a92326e12b9fc7ee24e2095733430998838c3e4be28f3326c6670892cd10b73d64b3efea953fd5de9f761bdfaa7b9c7c674a607ccceac7c951c36af001369381fe5fc7da78ca655e776c9d18efcd94cdc7202195128348e192255e64a72634754fd34c6d04d36a6e795d011acb7f3229a805b7aaad364a29682a7ddaf8bda8f267b35e8bc597e5537e9226dc5950574b489086d4981d2c02cf414d10a2e62016c5d111a5512afb7eb534beebcf4961042708b4a34a2e9b002244449ebec7afa9f1b55f35d8f44335a9cdde66c0ed77e41f56bf183660756bf12797e13835a6e5e96d759e60410849f108e6a200379470f3157dee50b23be11813211f9046ef5ec978810d8799786193be92219b4168df39b85df1c7ce2052a6c58cb48e3ff97ade45e746ece45c2eba69d490c6e240a93a6a94e7c3b34f63d9a0de55fbdabe5addbc795b912257e7db489a3a163bf487be2e84370a7c8e8063776d8cf038ad719a73a871c2d1d29f97dffaaf5f7e0469dbaa142f68404123f800528e16a3d0ec3fcd06bced0f043cfcbf0b319d9c0c0ccbbff761edf46c82c82249b0e2d4c38a26e078b5bc472c83119f5b890ea6f0a3f6da0b98e359cc110e4435d841d6fd0504b07712378ad3e97a85bacd5fff5b815b9ca3401fb388ab5c4aa1ba88ac0ee8a0e1ceddaecf64d3da8bb9cd3667c5acbe4fab4c36355a7e9a694b68ef0f49ab461369206ea2a9da066b4b86b424f24c719c564378444f3fb6d705a837b07e952ac9e37858485420597cf41f1b4bfccd17d50f251bfe0c0426a52de845a042d903439da04f5d7d8f2a5b7caafda30be94dbece21d85a73d9675eb14c4e1dabdbbcffd2888be118db31d34b16194d96f22db842736611e5bd51f97552a7d6112c62285f9e924581cd61a9ea0b82105f86dcaeeda4f595b4160eb52e3d072f57ec672cddb52f325c8afd0be0dd78bdcdacff55d71ae9bcaed9b99b0ff8575607d76059906c3922dbbd51d4a09d9df02b083907686ac7d8b2a708715684c07ee33b41108e08f70f736a330677a49398e78292dc6e536cafe7bcd19d9b3dbabdae302405078deb47627b83bf9cea89c276646c6a25f4f6060fb213a148a1deb860206bbb3662c490e67773a9a73eaa15b63c156b27a8c218656e3e233eeb12318040ad0199bc82ec01288c579f1f9ee65e468029d1896301e560bbca0f2682d71497d1febe0562581cb55f791643182016769ceabb2ac7f065d97c70df9cacbac36705d13024ea1eaa68e60e418e2cc078fd9e955e91eaf974c081e404892f0833219a24ab37a12c5dea60cb181d29de8fc3186febfd33bfd1ae2ba61272ece4932534a08b57c7a24045396d969b8db44d2cb3f6504c4fdf4312f5931df40ba67811c68c1de46531198124ce230c20f365869168b0f7ef68f5dfd5fa1f91fe082a617c3541ca0c5f770a064432410c00c62aff50d44a46fceabdbdeb7d857c3b5a30869c6bfa52f57418243fc88369a8fd6a4cd3c6c6b69311f609ac145259287525aceaceb46fb6be97ecd9ab5be6d0541353b66601d599b7fa5282aeafb478b479c7ef144c5c4cdfa20cd28b1a4f6936ab2c0232c97371ae6c51d8bbb02a0d07cff5cc78c3cd13bfa3667b127d877bdc34f8ea33fcadf74d96448c44493d790fdda74f83d14d51179549f5029c02507d5a5da32183dbd95f225fe2e5ebd40c1f0275aedca8e0a1f1551ecfe14b36012052ecb8a3189ca2c0933783e57c3a475ab031a10a43e98d9cac8dc8a447fbfb2c1cceca1ffdcdf22dab93f1fcc9b763ce731bb6cc08a4728cb98cb728be3e9ca80423c04277751b8f26aaa27626fd5ded3984eb1fc2f8b3c3365a4905e1643fa1cb9bef32730de686cfa662b6e205f2e7fc18fef46bdd5369a15b8c9863e6465c93daad336f1edeeaea2190418bed2caf85a15c23716408f6553a13495fa6623373e1ea00a372000ffa008e1e6118309abb511b76bf37f7c3a0f3967ebd9ff198e106c7400932a9d19b5d82fc21499689d49a322aa5f2ed3affb9ade0ee168528a6bef61112c070f7da559305b742638b830b5baa8395e1799103ab32a091c1166eb7619be3c73eb49ba6285a3150863aca86f9e05b782bae007050b17be5d3a38913c29428fbdbad742bf546d8d9881d59238abe3dea5bfece19afbf96297cd15406ed11607e518320c2bc891a732a047f643416f0bef3ff6608fce99c88181944146b10b1a076cb4ef5e0103e283633d7db4d9736d7989918bbfd9c4ba1fcb43bfb3ce01521e8ae3442dd3fef0ae7446f54b1015887ad2e12eb65dc77388d9504c93baa3cc10e87567aed12f373e5fe9d1ab02b0b3b8ba9857201cc4258250d15a77d34bba0e2c34397d8bea53e64ae7a72527e49b5115efda5198e875eccb1fc300e9a7e1403dfda103fedc92183bf3b01bfdc4bed0b439cfd933e2fafa754c42c7c18f1cc72ac206d796767665be794bf13840f195339a0f2799adc13f3ae3f8d145f2d70684bfd724540737af37097a8b4dd6db8bf290ba3c26d6cc855f30e89f4fb39449fc92032fd6143f2c2b06636175dd772ec8e2b376497f8e7b92bb7ac065d26aab730d81d873acac39399ad01c9da996e1195a225e021e712dabe8fcfbde388059bfcaca41a489d1fdb037b0cad11d5b975968f18df89c5050b78c1c0c331c9720cba95a754fc0b5dae49e949b145ebdc6219250a7dac1fd5b13cd6fe479f77e4bee383224d83a92b0aa0d3234b69208b269dd3256f70ebc759ccdee8a5bbd9bd18d0b5972f0c357f0b124e68d9bf05cfd8b2ecd654208c62a458a7480f20969d565b756d38b84277e99192c670e842c95199e1ee537b7c8fa96b741b962caf47214e9b8f67fd6d863efff2744fb8dc1e4b256635b4f8561b2eaac7a2527065fdebf988ec4a60c7553844e1effbe9db55c61779f0cf108a795612aa6c957345ed2f1e8ef699359bdf9bc49f9e8e5f378492bcc194e1f2da35ae94332676acdbc4e02a374752c4ea120cba6c8797e24cff9dbebddea4530d0f3d4d9eeb42f98d7a6ab95b903bd81c9a1f88e3c91e16150353a6f3998e152a02ad4ce8f270f871fe0a153e0fb4ed510296e252c471253e6022783427af1b2f709549a2b4ac3d89a6047f10d5c606c04c71fd5124c17db53bf5e0c4db864bdae1892edc0a6189663edd869eb9545e56753c9f78cd9efc0a983d6f07621f6d21164ece0ad3e717426f9aa4525fbca93b19f24dadb3206bad0dbefdf1ce1273a615a388636930e9ba64252f4ee39e7808b79c3bc67b541f304cdfc1f6343513c53752acc043e64c738c3d10e7ae990ba557d373438791ad7542cce7cb089f05790b41856a319f5d245ed275f8226090fa1b871367f8150792445467031cfb2c633e8a14a03fa7cabcc3ad51bc43f2da7b51c84360b7d28c3accf290353fde3314ecb0323f8f46864dd0b363f8172a1130dc12eebd51650357637a9b14ad0385465ee2934ba3ae0261fd5c943feb6e648d8f5e2bf75d6cbd6e4315cd48ceb2474f171bf01667edf6b4b9ec1d7039dadb67626267ba99090b2a7a4a9ab56fe2e16de90cd6a7aee281aaed06f4b5f38f81e008c7e58d567aa1749dcd53026f8f4020dfbb0665dbd0ad8ab557397621ddd11c0af53af7e5c13aaa512313d3f4dd2c0d3ff6f58d5393e1f3705b8d8616dfdfab4bd6c43ce6d9b346945206d284b5aed7888bbf58e7761675b64a60935f3ff7d10a7f686144a84169b5cfa612d7d1877b9e2245e9a87cd09b6b31c91bc4fa377b9143c69408fb21911a1f3aadc204994475b5246ec40cb57f94d0bf957363959ca2979c86b9b9678f78291aa8aaa7b7746a83c0adc9868ba6856cebf6bb99cbc131675404ded2edd4db06043cc59512fcf23bf10a68b709960b79ec0e0a6f5fe9578cbdac514c62c677be7f3feddc9d26ed6042aea944735cb70b420a5f4da6807920f1955334e066b910e4fbf0ad017a4519c792db8ae95ad36f407293da6ea544733eca40c7cf3d6007a6b739cf8b5665a3c0c5719af2d9b5f42ade44b0abc1bf4db6ffaa6036ff88f8cf9c00ca5839c638370342530db3f23d567ccb93e3e2e0d8fabc77b980c73630f2d1177fc0fa3d83b89f349fa76d6282088e09952581393e02e1c389341c0f4b78c168d6c98cc37ef56aa3f2840b16533b4a135782586540d19300d5f87a9580607429ba49cdafcd1a5cfe0480cb74ba76494d95b35f500abffdc9010d3d0d535614c9d3c00885b5264c092b34be24770e8c1b1d7ce020b5833202ec8a727cb3932af627a9d01cad3e53d3ed19fbe90330737b6969d055b95149c25c25b76e6002129c3e668665b617ce9d75bf7ed44f7f286a778f388d13386171e3682d9aa780a3fe3a4c94cea60a3cc78d6e2a5d947bb431bc94ec999ff0dfc4468ce3f470b09b888bd963b13916cd306c01930d92cdd87989b263b4c93dfd8fe8d2eecbc91141e7fd03d30ffdbff4f6d42f76bf186dc70c4de1605e17ce0de27684ff755f416400cdef31bfec8c57265600b4752b10c9f9ef86581721eb063e4b433cd6bf3deb3741a7562f19643d5cee3bb4c5c80cfb9cdfd85becff4e06101db0cac7dd24f4c90fdc45d8649c7f5978e56119ff79ae7fbd5a3ffde2ddcf8e4700c2997df89a76e0094d84033c1b13650e4c52751075543df8e3ad0b85be90e8178ab06118da40bbb6c9455c60fceb08183a91f3000b6aae2439a1f3a021929aee6ed633304e413548ec554b69173346a0d94ba18f5beb16b2efe678d5b14a8982480e6617c50b9746695a4b409ad408e516e75878ea7edd4c37705bf7b88fb27fe460cc349939732f1a0cb51beec5d8b3fb5a441feadb59b73ce87a785c54e99c4f88fc3bf9ba8a1e1768bcd47846682eefb52b97a92dfcc08fbf4929d44d97533a2af49301c49005a1dcbdfac2e5f528f656f9ed61b8c9c80afdb9d2f1dbfd21222c39a5a0d4daf268d51c44684df25fd2e4cf76e90037b0acb35b2fc8f817cc0ac22ed8f282468e3315013e4880a15ce226d5adb40a2385ee71a4e147cffef9b485de0d86e0e632e6cbd30491d17de7b23a623e5fbd40ad5cc427ebcea05432b53bf55d4a1605f11127f5c7c8c68f67aa889be4b962584bafa57b64c83705eb1fa2863ddc9d8bf14eb64ad42013776dc392760c56b57d11a231a712b16da2bd8c2345a43b0022d0533f380d20cc8a065f419ca7cd693cdebae50c27114dd980303ae1d0466ac6f501dfd290721370bde0be7f005b9a6bfce358d443313e491dc68573f86bd6a75024b0fe85018cea3b344ac9f64f84ad2d007be0c0c4f8a56a57001a045cd2db1d758aa7133aded1bfa771e7349fe869980a7908d61248cc9f2f0f08b4272e5498e4e4d9b640186763914d8c51a371937674ba494b695479e788f958d48c935c99b3050e583171fbd759af767b894f4ef735e8ccb8dc8cc85b0499070cfb73b3cb1728efaf258711d58210e3c2a0acd4431fea26699887ebd46ed092f4e6261f8037be1698e108ef167d15d139313b4dfaa7eabeb61c242a1609f59c354b54276252a6b24e5ee9774d0696863d22bc5e8c3e5443a210843230456fb17a7e0a1f4504eb08a14880b2646b9cdae3854e2935d6e2c404a113d4b215fd68fe0d66bd5792d83129ed5971d3d287abb939280f9150650031937631f01d8d3e0dccecce611febdcf62b186d1c72f25f0a070848c97d2b0eb91f7cc982736c53a40c3540a736fcd69705cb51124db1f73a57a2ebf69a615778a75778508c09af4fdf42bec131f0b4872fb1c39324f73e484c117a9f38e8dc0b0f5d5794911ea39aa6457bc3325e8fe6816ebd7d0404fcd305a3ec0e949c2850a63f233ad9ac472b85b0d1c7587e747c1182a585d77c81eb4df21f7afc91a940fcc1d122f1dde5f85e319b1f4c4680e03d3f95e6853e7596fecefd151b4adc756e3307f47330325314c5311c44b425b18f957ec0244063b53a3c04492e60306c87d5c76ccc7dfbbdaa81ef855012c299ba4787be75180020929e36c3dedaade68158a8063991589c34f04f854c0f96bb0cfaea52893afb400263a77568b97bb24494ccd04bda20d3f5d541a92d2a5d4b5dae409fdb83beb4e49a845f43858cb645a5f49a11998ee172fdb1e357a2b1c6f0aa57ab681b8111dc28ca59f9e170fe7b0b9d497ea1fcd40eaa54d1c6b31df6e06b2b4f044942730c74f29ce1b6f3607542cfa473fd4a83cf4d60c664f84542e5b2f208a6a5661b30ffff6a4420933977593caba7d65c6a7798aac72416168a6f9595e07f22d43055afa1d875a14ae78e496bd0cd99054afe7ca1a4953900644b5d0a598eccf0ebfe7af4513dd84c96397fab9fde16649137295712d094f9dc0c56c2f16ffa59e8ffb68c71cfb27d7aa297fa7cef4e1318391ee9064dc0a23bf47aa35efe54c08cc612685dc1586ef5558522c5ec5ccedc37f063794b9eb280dbaa04835e962a0c9e58c0f0e429592a4860f7848dcf89111bb6d48eb7f2ec40e828bf8a36fa6392ed8e1ecedcd3bbcde3a503ea815c5ea9d88593a42854f582b68e218c36d64b9648f171316b4a216629ccc42f91ef458e16ef8d0af11058c0818021e08ea365b4de4e9e6052b583403fc0b1987fdd202b1b7d6a3a2e109f3ffa264572986133e12b30a52bb1742fc2d4ba5f9c489af93b2f3521a6ca6b73683fa6908acf2a914c25e5ec2229460b1aba00fcfe5ec9e03d37422d24d8571c71178b0a114731213f44a48244c70604098b402dc0d279421dbd3e5a18694de60fa59fd9c0663cc734160072a43adfdbcdb66679d818ec6d91969cda99063f4ea613cb5bd0fb00c2ed28d2272210336397039d8c94748687261d74d24be70d181f0a5e4b7d05c5cb79342e55e715b4b60d7d1b190ced0ac38427ee4e8a6b167ae147dd87fb3fb86eaf1f4ebb04055967f667ab37a46771f588208ecd2640ff719049046c46538d96d139dc03652c328e77aa12f8e8fdf49d64fdd807e71e55746800d0655dc50af32ac398723b62c40cc3b58cc98c781aaec8eaf750d14851515ed0a5878ba9553e8714abadeb04a88174ad6d3c0c228fb3af4ef57e6b1b3582776febf7096ec2c7c1f55f75e408c2dc9a1f514c0f974c78b4f55849f0128a260d7456cb5ba4f3d01be63db61c095bfdcfbb3536ac3595325895b4b8813105516dca02e9fb14df0989a81ef1226bbe3d632b14961019dd1e058c325825f8c11b6cfb2048c1f853937ea40a5f30b89d76687b73618c25dea81ab0df91b8c31dfece98430bb2d2e035c9d3563164f3dc3c5252e0189bc88910800026c216f8827993701e1630e92ec1b4f7aa1fe4e4adcbdf7a4e63cf4622df7c32c4b10dc8c8011a17b6ac8f08f58128c2c16b8f9d75783a24cbc8a46030dc7da5bfd25312f478a75240f481215cc16e7ebf1f6ad3f2dc98a7bbf2c1cd62e050a2108f737d509a4529657b177aa9ccf725d2c53a590a8bbdc2cf68ffc1b57d1f857a4c2dad6c26c564cfb5640e9ee7b40aae0f0080ccdcae07d1f7f4a6576b9ce9662f46301e35d492659a972fe048f7501ba270baa876e5930340b041c602b43bfdf8579142c21d5e97f56982cddf6621270fb6095b14e412b77d3f9fbd0f61b748932ca455b26ecbdc6327e472028ca9353773eace27804f8150f9493c599ae9c72af6ebca3533dadf56bf23a604925bcea3e8901148e3a4659fae5c72051f5e337595516f95aee2bfec86983a61759ca9de54c5a1212fb666589824ea2272e37f409abe4297ede8943f80ab2525eb07f73df9cb3c04620ce8a823f352d7dc74c4509182acacb6280732ebdee481c62a0dd1cf8ba2a3d309a2662d65a5ec092196048d4e0ed1ec4adee977d6f70b02c7695a3f25267062f0613aa1cf27254d359355c0a74b36bc60fc15e6d0582a7c14e88b661114b2e50f5a77e5f037fddc40ba6e7bc479e22288b2a47c0902605d7f9d35e87c1eae9586d4bb348ebf36ca1f3c767662bc1b45768b724f2856522b44cd367c2e2eda3871992a895d7764805173a94d7ebb88294d3e8a96f70637bf9a13a201827b1d000c6ef9dd24d0745cb4289c56cc376c04f5c6d542d6c70063455447285f5383414e6f7583fa375f02184a4138fe4da17e978e9777dad66ee8548ed2465e7f30329102e44fc852903a7af611e9af21e14d2fd4fa9d4f658ca4f604158614c4d8ec27e6667a17338d4cbdc11b2ab8510a0baa8ca0c122391ac4e06b88e56a70f52da8db6db6a40ccc9a2e425ba96ab1b21a89a32484fa1dea214a7a0d5462e97afbf40f59c3894d9ff7ae8e2332f6425f9bfd7181c32f134821a349fdefb4dd49dc8becbdab96b269f5cca2613692536791dc65ee537299a17eba2381c3f201e0d62d0552b3e94a09e8db13c4b5056f48e42b45e8979726518116b6f339ffcd4e179645241d13304e9c389c16db4d4eeb69151a48ef48bcd6b820c705492e6d4b0cf0ce4077840d2208f8198917e70b7fdc63035647c44c7a73c854d4c651ab8a77480e145a006977cd18bef730c6dcd19954b6919150434dba7dccd61cf86e94aa618b62a16a48075d4df5305980658e8627e53089f4460ff1d9a464f334c87f33a52d2661d8f4542a378d6d4a6e6b0d6a408ba346912d2aaa64c89eb8d4415370a52acb19d0e5b58da95400bb9aebe02750d9f61768f67df8f03e053d377ffa2165d50dfacbd7b6d083a58e8f3721f1cdc16591fff71c50d0ed519a903a5ec75c15d81e7220b7eb312ac34f44f3c2350b48e3b54018215a8765aa7b190c0e040fc6069804ebc7a48cbf9a256e78896ca2e47cf017c1f15def92fc7f2c56f2f9a3f19da2e536743150e6e9a065dc65c95cbf49a484cb9735cf976c212c58c3e4c095e1dee33f82894451ec1c3f9dcdae002ac7bec7e5881293b54399650a618aac7a855d10f30123a2e62000c08a131fff56e8ddb4f132df940727f4a0f80cff362966e40a020e27b0c54297f2c63489c3d97a379ff995392fd7d08ef2a90aef4086a9db29ab22eaa4e52a962f462a7fc516d51b21bab5d1ffba7e4ef2c813d457a8a71083220471dc1814e379853224d19988213d99f2e84c6234d43c4b112dbdb0075e7957b8a6b10481c93fcdd524ddfa3a3729edf62131dac40bcafb475d0fafb5cb9f8250ea452d12fb14f1fe3de58805adef368de3cebff2f6460cfd18d034cca30575794c7b58bb4693e28a8435d01cfde9b4cab0fa45cbaad077df8bee8ea9975f69cd2f93eaae8839f7e8c14ae608346bc3028a9da097a92adee33be196ec55a50540825bba63194a0984a3b7eb8bc15a2ce86eb4fcfe0ed9a83295fb398d33fef32e5099fb840d8f364f77867897b32da749a15d87b24a7dc538c4309c8d87f8dbfbff5996047c33ac25c43253804f70e84f615955e3b7ce4aa9f2341850790a6d51b990be13b2ced062403bb8cf7d858f25cb303cee87f548489b4bcfad02f8a2481b862c32d50497ad0fca232fbaa76c97ce442a3d99cd21675163a74954cecb0a1b1a751aa1a6dd9896e423bf23ab0a600f1cdbad0af594685f4e5e5e47ade50d00e1b19316695d6b6ac2699c54efc3bed359b76e30ade2e97c015644f271a31c7a2dd6fb826a49367477ea5bc4161ce4fa7323ac673439dd4b403abc5e08452bee60ce941b07a2a9082d89c65c46db73c69d8f028ef92951685b198895ee206d2949be47e8b692813ab741d0e8115e51d1a598523eb16ce17ea09acae23ba75b9b873fe848af30d9c1252accba6335a51a85e6ab29a84327770748f2ae2901acdb01c9a920f66cd49bcc033149d73ab17cd75154394a15f8a35528a75ffb7465dd9345fe3b7545229046a7ce6616681d286157e5005e528007c450bbbdc1f9c58dc8bb994dcdaf77fcba7b88254191a932c0ba20f0d6c145342b9259ac4cb9342df8f579a9ba10ee6f387fbb26e99c8f8f4a6042c1039de0b45d90d76a0c0f779090dabc25a0d5c313309bda32e6c715f0ae62794171ef3d3160e9e56d78969cf1cf46dcbf6a1982f8af55a4cb32d0d5e86a015568ce2f757381cd658f8b9da6b1afa188610a1ef30e83d9367cd312c95ee72db8be22c40fa593857af121f14072e686c0c2a228362c5e10cfc063c6dcd0cb40a580579595531bee732ddbc316e5960ea048668e7f8bd3ccc74e32008663c4938f295ec818e8cbaf0820f01225a9a305bf7fa06a52a780bbf49da68451387947dc34f2a2a788d2400b68e102996840b4ab12c76b8fa5e983738cedb03ed2a09f792235e7a8436754a9a4f7e5f768aa285badd1d12d3fb47670b033232cd632c46c2db9bcd87b347248610372f9e6daba0d94a7617eff82be7f4d30559fe91e9109a5b52314b08d087b84cefd916924f71a8c2d22096165b3375ac87113a182a7ea6cb05e8ee0e4192490bebf0b52de19538eb9afa259d8b2cd4056487f78a92bd2345bbea1cf0ad08ab6b89dcd38df7eac7673464ed15d595296bc1fe090b207f7ace80600b7f8ecdb811985952ed401385d0a294d6548d97f5c53a4b8fe52177ccba442a4f23d16c59d314f6f294edf8632ef0b3e11cec3d497540572ed3b4e090bebf5a7e3a5094ae49ae97fd3f9543026dc45c6fe97ff97ef158a1a57076f7404b8db7a21b9496d52706f436ffdce39b742e215ba6851d83fe4fb9a9caa07c1404ae3b7c2606e9377972182714f18d0fde8506e660e463acae81c613171f36ce5d989593881ca76b29bde2af7e1b36f3727804713be56624b8140160f5756c98bbaba81ca2910da4772b87f3365d9ab8ebca87072ebf26e0de25387cd08a6cf19a520aa9346dffb137e90e8b4df5b9e19d10f1b95db58828759c4ce63b6f07a8a06086aac580819402ced20c6c2e54450ca215c814d6d4b2349eb31a665613e898419bc5defb3f99b85404e36fa074638b66bc9ba55f3549f25ef752fac3e856bc5efaf315e8060df78727721951e4c96b992493c26f3d03ee5634940bd5e43fccb70b7707b0487c6398928f09c4b2885c8f7b9b14e95e0ec2c09e0de33ce7d0d70d699aab4f9d83eecbf2478717b2b6f7a4689b1a6a7206329ef9c6cb30d766bc256146b26f3c307077c5f5c7c0fb05abeb83ad9bc733de5c691f9f35071eeab2987862ce7886f03fbedfa7b35767686eded82a36bcc35713067e9ac9bf273b7c61e2071b9f7c14aae5e9d75f2717c4fa636985d565260d557d97814903e4aefed40b84040144de6424dd70bae5edb772a8a9f218b9c408368b80cf546b4b9b66fd122b5f38a82267f88c251f0a1170afe401e6f449e8edae0d63f06c0bd4f31b5f49fa95279679c2371817d1b76d8aa3fd4e5b19a843b119f1fdcfd245fdf51e07b70a1b60a1fe62437acb9216310b860261f1e61469e15c4d20b817f0c6e59d6296d3833a7ea1d6fcfd73d6404f61b7f47ed4fc87527f0705317f7bac36dad5c7d53cfb9b88067e62c18340a4007b92f0de78a9cedb66df5daa067226d49990c89681f36f3df7c8ff399676ce3dea9bc22d25c8114347a4b89909ea912e87d15eb1e24110bf6260b1ada574254619c1300c4dd534ae2b09c4203b2f66559d83c430290e3154ee5f97b991e2f71f8f99c390bb4350a5932645f3b481ce5f7c3a4fd1f83f69e7150172ccf523a70e44dca7c18d5c00941be7d5ddb5bcb3e48558f987f2531b84dc590faa4f1c6a1f067b541cfd33614bb530c83bb0a69382092c5af9a6c255e00c11e3eb75e14ca0ed15fe12fa7c577e70ccb27fa8c4935a81d5ae0259633dce092a5b795ed69ea5e1b8848796453545d34e0baee3ca5e90de083e2f9074b7cb2e4a071635e8f5852c15755340e6e09dc28296e3e50465cee5fbd0447b345473c01932d4c1e74a5b20a9eac4cbad63e4fa1867cac04e09c19b1334b82233ee096da21e9b1f397886cb879c1a4e142d61189e9825b2791d9bc122b2346bc80df45ccdb5a6c2539129bdb2220ac87e66ba2ff9f24b1236d290614b4517e857e33cd3621206cfcc1eabd9378e3ca0dd6a7bf6f428a492dce7596bd5c8f57d4c96115e2d041ebfe547393f85c2cdedafd4967b95722eccb07eb4608ccf13d5f5b944972255255ad9573f3aa59ace92359cde6f3cdafb1d775ee11176e2ed9bb1f4cc74b355a7fa60daf34954c9c226da6e8afeddb1b1db77ee266af4d3b1990a494329a6f704252cc0ca34238f24b122c0b935c84b08cc49604d4ca483c190b7fb67941b89f06d4499012d17d6df33a813e8febe4050f7fdc0217f8be735f1a3c49943a2f3f1b097f815057afed405e9a67da76e43e8c586bdf5a9676f575b6cd46102793de49622814b74ccac58fdfaf040f976bfc86e74e81c6130df25f2f83ae8fa62ed796c75f2296b0c35b36a6865dce29048f8b5603872421e8ed27d1f677c66afdbb2488dc7fb77c1d3a2e2c18663b0902c16fba347d121c98f455e77ca10ce56ed68833ba04f3b81c1d5d8ae9cc7d34651d5972d979d452fad984dc927b9da4f30c67b95ba79ecdd51720a8750623d81e5788e99b739b3b73b9af2c4b532b67dd2ccae263710eef0ba90b8be0a6f44af525b88ddc4908b81d04e43e60a59fbd976cd1ddfbf6f72f3d6bdb2af2a8e1fea4a6b2427128d7792866ab7b4bab036bc7ef104f86e3530972d7931891944ed63c5a895c53ca224b60ed94ac6a7dcf660f7b4e14880c52611d7b88070c8784c7f39aa91381e45d12008395030512a6d12fe65c9c66cc7720857647a1c61f884116f198fbe3e6fe926315e1350cd059e9497a80f288da532db61d9d075cff23f91c83454fc7a1bb39bd7cd4b15b78121b729f53ce6450f7beb9a682906527bd033024bd59788cd0aa990425f380ed4732e001655180c775be6bed406406e0c0c3bff4563e0e6083032a82a7406eed7d51688ad6ddf4796f23659d783e97cffb2f5641b2ade91d7a113e82a54ad0989bdc237ac945f36e59217189edd3382166934715bff627f450bd24f961e31108cd6b66ada067f7225f7f20e49ce492cf53d35b0a680f686e53f8a15faca7575a692f5d355b6e5b8d88607bb6db75ea2a3c547f43282b7d64a4834d1957b06a1424afc8a0b21f7d0c5aa7e6a919c88450dc1ab3748cd8c80907e8b03d99f842eecec13223f77c04178316abab4edeea383566cdfc72e3ffcd2ba2d42ede6e8bed941d7a60b12159fbfc3593cc52118a639da392c9fd556b4b18fc3322b0200d55db810e8d83953c82e697af82a21606dc82684845701d6d4d4964327a237cd5a72c851dee73c8b679c1c726d3a80e171aa8557a989002b9c62cda29d94c4bcb838e3e59ecbd5025da47069e3c3895b2dc127bed5607ff35f8900841df90fd0da6ff302d3ede14e882544f5638419df07d02da83e20266b50fb49b8eefbac2d1bfe6d594707687d8dc386d26cb4464c4a00419c679f879fc66c9ca2eb782dbfcc70f265caaaee09ca630da67f7adeea915dbbb246c45fc3921560d04284c4c60b727b263ab82296aab376320572aea79f57609d400f223b51341f5953e4b8968d571f1554eacda0f79f1fb6962e9fc06442a5bd9b11d83c468a42d7ef93a7d46394608a944b1db57cdd2763a4b39ee9ddd6898b27ef4f1da1dbdd0b3c4196f20a440ee934ba37cca26386239cf85a34a5af00cf7be39aa451728c7f09cfd5c7a6a4b435226d24db33eb2d1b286acc4422cee76d61bbdb03cb9a5db20fd4b47303989dfb976901c78276419ad86b909ce71691d0ac5865462926d1ac9c1b02f4cb2561a1e50a8a39a0c6587191ce13071bd0da1e103129582feae30363235f196bf5058fc682ed0f1ae2d4d95e5d8d70be27d8d731cd75fb7c3f2ca2da9d62c336d6b1c79f52f55d00964464ea54c8b14dad0986a24c05482d8306e841f28a8ed83bead8e7d27b3f90f0d89ea4e3be1a6dd5259222df5b8dc797d1f4acbb005e62b96441f8af32f2f1c4e965dcaf04c653767176074c76b20d5f3b2bb947296b208b67b18967b9f1ec298a10695101ff334ea8d4756bc86cbc459d426b1809c5050fbac626cf031052fa2ceb40d5fa44237d753094ab8be8c2b768777666766983472526f38e10c4205759b2513df0b4ea067c50d08e5dbcd0a5a3acab9a1b62b55984143f9fef281a216fff34fc43e4b751ef87cf282e425a04759097d4498f141065f181d3186789817bd9e67c3676ddacbb6aa8a47eaf5c4dc11567679b0a47583835804c128286611ddc789830f6b1c53eae92bfef863cfed6d40157664b3cc512d5930467c4ddf179a6d822dec022319038504b203d12182b25eae2fe767d0dfd2d4844ed4313244184245e1806c0e959a030aedb2a9a9f2502dbf4c9867d89d4d9bc2d5d38af30c282b585a02ddec8409fb6609826c61efe0c4cb11f2ec0b9bb0f8d32371e1d121064fa44aa28e80edd389570465fa020a83dfceffda9e1bd1a724b9cfadfec0836227b3a367a25e04298f0006e52c8b8cf1464b98ae4e4dc2f6cfc05ac7f32147cf4e07d3c0006c51ae68cc49df753fae56078cd6696b00130815bddabfa1580bb08ab16a7c77c2a4a99db88297b487f3de8761fd04f4f39f72e22e9dc616255c3624c801c7512e02b04a6a738222fe5368a8e54949359364946f9be1a6008e2cc93cb2d9a0c1f9958206a942432844d7da91448d36deccfa1da374a00a9153b003ca101df210a6effda5c5527f5dedb52f1a1889130b27e952b154cfe0998b708887ed5a5bb875cce636b025a36bb3aedc7e0d91a40cee0c1297dd7c1174072b91cd9f5af7387c26a40834b03cfbd15e2ff0faf3419f0394e7949d3eab15cc9c12296a39f9df2e47926dff0351f279fa39a3cb720fb6cedfb133b7c12d7f5e07164f292a27e656b39de1446bf8be70c0daefd4d6fdf0208c7ecb2e12183621f8fafd16becdfc6e3a7af26b9655b7316ffbe0d06a2a9d2b71637d266f891b2b138edf34b0186003c3d1ce944778d04790c2375289eb832cd7d335d4362e0aa04dca12a43d056224a33e7a3faa7837276363b192def43363f0ba475025f25df4b39c78dd79d38e9455eaef38140992854b9996c44d92e29a82a4a0404b83daaff7732db80bef3f94a959597929c010edbe864acd03b3bcbc6141073fde6e3625a4bf89f2a21a11fd7aac6047bf98762d71c898fe743c6c8fbcfbf2b744c0e30da268187b6a96f8453f5c74f9d940aad9bad8b8cd4ee78cacdc0692944b66d4dc4823f30795bca2a8467eb39ed19cbd97b0011e3955c967866cadccc1e36c6659f303a32bb5329e4163958f77762ee8f50a467665df2d1f914ffd10e05481ce6b5bfdc973a9417a21b1f7190d682c596f87daa9e134dd7c8cae0ad1cd048f0d195f1bfe5a49d374586149997be29badcd4044c36d203ee369e31f966ab3c02ae933e5cf220da50fdafb2984a734ef852498f1cd2673a63954954f32a96e5578c476ad83ac6d7afe4d219261d4f2f2f5a3faf1d62d603a3caaa3ce08ae5297f210a286616225363c08f69511840a003eea59eb4b1d6942b0b43f0f35abeca46107ccfde25b51120b66bc9d77047a90d16ebbb0d7e5046c489ba96fde29e6a6746012192a1748cd5574e019f34fa747b648616c3a1e367a235591a34f7d4e3d6593f1a79b3476a3d9c04a2dbf5028fb3736f0b18f563e265088f58c6f405efbf53a1da3ee08bcaef3abcbda3e89e729065a5f15b5a56aa17f96de21061a619583bd797d19d915fc6698c30f0fd1f690f60a6d6450e760294642a4d9b24850c0e0054a26d9a1d599828ea784e256ab88ce4fa4a5bbc318e0a9fa0123f9d4122ca17cf7954e3e71e991f3420c5047921e7a7a83eb4072c347e6dcc011a0dcd4d3b43c2f1a10e1ddbe3932ab3ac24daae2443bfedad30bcd06e59513f2e3ef1506a6fee65f1c7dfd4fd1c6f4a7fc32ed372adcfdc5e406bb8162cf6d5d18cc9420d99d5fec4a3c29a59950ba3e043abd79bf16de5ddaa790ae66124d74fed446655eb3f06e1e94efd2437ebc6606d9b9a4bfab352aea959d32512690b5deba6503111b64b0d1b80d9ebf56045bb86db9dbda1bd0de3a72fffec99f732421406603dd50999ee5249b3d9ec9cfb94a65d65ae6a2ddacaf9591cd15425d6ddb6d181dcb9cd36ea4a0c20a428386dfa75a625aa69a7a237c2e3edfcd0eda5df6645493328d78045af2401682bb1ac200650c212ef56d5b25711ce96376d6cdf3af755ff31c38af3ab5c8e0348e6d32a49891c777365d030b4d9e0a015668d314f4e0a85a770d4c2127530b7599c0cf63393b11521875e157a6616bd4cc0169bb105920d70820edd40a32b176cfa282e8d4289a41670439be196fd7eb60461477cad38afa8dfeecaf5101a989e0dcc2cf48174b8285ad8f0717d6635f0e03fa19028105a0a33156ea2583640ee452265b8cd9b657881b89bc1e0d455d8a7c2f1142fe7627d6cffa2520c764797f6295eb0b85df3aea77df599bbc2f381ce84e691ce8f068e3e0e7d382f74b06fd98b7d5d687dbd0f918cd3c1bcb2edc5708e614fe3759faa9f994e0cbc2b24f38803255015a19cda87f1ab63c512ba24cbc4345aa28587b14c15efe81d829ab70558e4ed8e2070aad84cc97b6eeefd5ec1eaaa6e1362e0594345f107b5a199a933e4c171b523a39454cf5ffb80715706583100de92ebbb6f4782bbc5582416be5cafdb3cfe10c7cfd04695557b3a064b3b582c674f165fb1600eb4a1ce0d3ebfa915e353f44b9d90a63acefb117d5b76365ea0e5cc1099585879f3825496b878ad003534b5432a9e3218d2e6a9f41bd5bdc1d9aa62ba68003e152f661ac524cfdbaf900171d1abd6566f98aadda63d506651ed51bc696aa4e77acdbdc5dae03d0b11af6beee68c80f73ed1bafc75ab956a8c6bde5903c8ec681e5739ef8b64cdf9a83c91078db0cb7d517a768983f87d289340020e60a5d69df3b45da20bb8d3c60bf8932832ae5857a91349b9622d4fa3a771788203430ea622ef53e1e5d1b775e5f687d448d9f475fd44b0f91a1998ff3dda7cb12251fd64cc5d9820aae57f6f9253e620362efbcc45063d67facfa2079d4a8b6afa2ca500df7dc0c765ed290048c5b135907ef3d6579db7543842e8aa0eaabad17502da65fadb61b2eef7acd7cce409d1ac761a0f930266c86714827aa0fe3add240c59c164c740b3fd05098ac11f00c67f5676799d7e14feb923532c747cb7db826b81080fbf510f1980fa10799c1f7ac977fd193093e8e31060821aa0fe9fe98c532c71a9cac4fd4e8fbd4561903f6695fb1c77f380369be1e5eec49f8ba77ca87f3ef7c731462bc0e2cc69fbcae59708399f226cfc89fde681774a54c717dbd93012d91643dc38faabaea16477b53080c78a2af7e3d212a4084bf49474f3a14a2bc61a9f1d4e3b22dcb1756e5624e6ff3d14a4d6082f99b62bfaab4f68443f206ed3021baecb3befebf45047f3f682f001262a4e5d1a86f9b6ae7d39905b77a29f089b5a52a3b474b82e04b394d2632ebf5258cf19e77f775fbf1c0fef3be2b1672f34b8d42d18bd3e7943d3ec89f96763405036ab3f5e2d8ed26065b0e36b8e322de29cb1bd4c3440cd2780c9a74bccb6ba37167c1cb29cd0e5c009b6a8d2ed1566fa14d94a27e219f5ab3047217209eca5b615eb073d2ed9daddf240682b62d28599745ec8f674587c2f7348071c9bc1fa7a5b00c37764399ef8c097db5c102b981c0cc88dfb1bd388f8f533850a690ecfb30ab45d09de3f9777ceccfda2b60d87a8ecf001e9315799ad1f3b7992b5d32e99cfd79d5428a4d364d005110c0345aaa3bcaec16ab72edddb37ab781d5c2e33e37bf51fe861ea4ced06e77bff39af11389cadd0999d0b37721f0b21aa5fc1554eb3b4f50dada8b8e5fd036ab02c3398d81934ff88e021054799072d4ac973781ca899a53d72189042dd77d4ad7fed9ab436c193bc717a77902270e2a2d69b7a92e72e58a7729d5e9d49075a55415065447bb673acf2c8946b5bc6146c78f17d7836ecaeaeaa2cf2b5d46d185bd02e00c31b807a453f4e0d57ff2126f620e22e9d7d6c396804bdbbecfdb88a4712f016b02ced6a69c891a2b86d6b26a1e21f7d51c6c4bd20da2b89c8c2d24af4f960134ee7a9ea6bbefb3957c22e6f63de8532e9460e91d5483fc574bf9d76135ee16524fe0d44940b9aa7e07d89e04602acbf3f7f750db952b0953cdf4463a71fe52c7f01b13ea21e9add63bef431e717c466306560cbb2d16682149da03b88a00314ebd3763b44854174d407ee9ff7229aa61ca17da3dc3951cc12d4d320e0890f50be2e06e59f566f6d8b9cc09dbe0fd26868dacea7042c823df01f8266b0e2f0128d36db31cc6df0adc565f11893b1bcffff1300322fd87d078bcd418e4c763bafb51f6829577430e6216c0f4a65115e71cd189edd1130e137665b2bb8db8abbe8d3e2f5d9c1bc118b23e0ea04350c7fe643f8fdc497e9cc66288aa858d8e7729c4c01373100edf50eb4b274f89941e455d692e79f5e51be8519fde425942cc0ffc659bef5fa7841c2a0bdc8543b5204ad8036557339edbf20a96a8259b176aa33ad0cccf30dede3a1167c24dc586ed7c83e4bda59aeee1bf7ea5c7295a8588bceaf70228c8a08afe12c53cc7942349a8a900f838c7a75fa8b118217f54420914b4017d53735a8862f596a2118dede9d35fb643f3c09a29532f98c1016256dd30417e14340c780b383f9136a9527c47f0c8aac2afcfe77ed249fa54e2e3f17f479af22b4de6ca9e2d1cdc50e65a92362d549b34275b1902567a76959975865862ac7d8393346f69b1578a14da106450086c9ae5fdcac9df694d67ce2908d93b638e3ece206e8223904038da60f75e6b7d9a0497f2b2ebbdd3995a90a5fcda9eb5dc8895619dbcca72559db81e03efbe1fce5bfb46fa892f3ff7591fa525ca25d7804805ace1c3e8034cc84d3c03fba14cab80b5095424d95d4a5edb0be52e0d91d63baf06b9c073b6d8eefbc2a6afc284fb8210efc5756491d7e5f284f1af62f2d7bc2febdbf6b8fe339486fc045eb1c718b3d64c5f4ed893af8d036caf3bb004d2255b1e0de98440c486ad0e268ff2d8f5a3e383f5d8b5fe13265c8b772b6e9a3f2060e27c5b3ff689b58a4a3034fc4f652139805890ff547eef85710fecc46dbccf8648f35b2d8aaf7453da9552c09d324384276a1c78fbc1233c7a4535004ab519c94fb6305c0af842df49736144304854111d9853f95012825f89500513bc26b88516f7714ff754dfbeb1b8eec50f4af799c3046e488b4de7bcadce94592ddc25de4ea0e875d80c444e1bbdb92de0ede8c9ffead762b19873f5e95c5029c4148bb0f15b95fb52c3b910834afba2cfdd445fb67b34d26dd9924be7aa1feae9cae4210cb7ce6ff2d6b323d36301c8626565a610c0769eccb2d6c53c25beaee88ecace8d94f6325b2f1ac021397f2bb3fad47fd958b53bbf58354c55027978284bdee6b98a1a819bbccb01afdb1ca43e5263fac7dd7d5e57f7b1926140e2d303b206db7d5d06d0fdae1a1b14f61a1d054922296c0b578d22f1c858f296ab1d969d9410f94b179ccca77b0637d1c52815cc790394ca3d757c5101091566cdd9379ed8f4e540f9d6864bb819c146b55fe7e1d023db654c36064269211499644512d2ae85d4a247d01f43d6813946dcf201df1f4966d2f3402a1d082860241cb5b629cbd61af212e2d5d722c66a052eefc2e252adff2cf0c6d3ca2c9a2cd196d16f119ea928aac9d354b3065148ae19869b79ef1dacd81ac6544d91edf1f9b53c130b742f3b55dcd665534605df9f36c5fa6c58696e6c9512b12d2fb7dd29e3c3a7e503c509840ddf9379f9ac203f50dc94f077d9da0dd4cf9988e1bed30c730f36a05a0450a56e6662a75c930e56ac39ef5553c249728028c8f358ba674138a99e6b84f322013a527eb1d72111567676725a58d3421c9bc53438f4af368514a27cb901a511fe1f33450e412c77516a578d26f372fd511513f4f8c7c311ba5c158b079a167b89c15c90a7adb55eb3387902730aa341b098f4803be2780ae0785c0d0a14bbdbe15d030d472f53abc9256a203eabc467ee9842c05da86f2a3c2b4f317fd4a4cf68f56b568c75cb4bd97c8f0f6a27935d4a291f9953be9ac2af5928826c2b05e404504e98c5248fb72bc7dcf5ee1f9a88456475df35f238d55156ae135ec910962e2e6e0d8552233f50fd0a5ef3453da2fda1ddc7e688f406669c3fd4aba3b38dc0719252cf3100fb0b1f10c96ac93cdb53bf55cb09b9de9b78dedcb142f7839d1c8ec617cb50e70bd585b23195fce1e273668b25ce4f4b635f0d2b42793e200c02fe6232806937df0cd8a6f51e537b478beee0b8451230eb456205c05f14b8ef1b8852816b8cafa6e6f11ec18db52e7eb79d078af93de2bf556bbce84972f2dd1d4e20db17e60da0daff21652642cf7fc44e7e6df80d45b9cdc8899bc98377e0c66166b3e6fd5528492521e85a3a8d551ab314734930b2ad5a98382854dd17c4448759b278a69f5ee3274849b42dfa1937235c2b76ad32ffece22de09cfd1f24cc79ac6892c94890a3d08d533ee8761550f32263c47455e393510bb9a7f2a0c742343efc99b0caf0474cb45e0d876cb2a2c23f9bf9054e85d182f5e317fadfc0f11f612f97f6288be2e755c64352935da2a93d8a2506f2e6a88f2c89837e2e99c3981a48b6326f0e3d2f5f3aebf61f524993d11d6b3ae4d3ee7034438d0e98a09b742eb4639a2fa4760053bdf33d5cdf9c181984a8e97341a6e3928ddbc73306d9e43114ed321c68de901861cd1e62d051da5d118d46a5f14a8dc5faf2cc226467022eae76bcbdb42121e0e6adf74607bdbe5c84122069e80f5405ab198bea38ba7cdbced1c08a33696dff7e826b5f6a85d5dce743454850808aa6bc93b1eb352300e9ad2667ca908c1ed3a2c7321024ebab29af76d4d6e096982d3579596d281ebe109daae90c19df52f455b1774ef083d9d67aa548824a6f4e1e2c9e72130132ca61964bb89396a293c73e168b4141ee536a624115aa6dc5964fd6fba53bcb13d12152c3a31ad456515b8513e5344b9e41e3d12f48698da9a4f6e1959bd8211da0174f63c0e34cb473a0ef77757f75e216c784cef824fbd8f0a4c9e5262fa3fb30fc771b32dee1e81038c43739ae0a2b66f15a5174290e465e3e38cf83c404dedffacfdf87a3150585235f19814fb61724714fd27996a011b2668a5e4d26d1ba1fa1aa248a8d975278fe430cf3965ae5740390cfc2dcf140483daab70d97dd55c9681c042a77c10daf7e4b405669b531d0968311af8c2a347c56c5d3bea708b9eb298ef6ab18534733e18beab59e359aeb442bf2551528162d9d103a847a4b55b22dc01aae0787c8977c19337c6fa37a88cb67b6995a5b0a32339365eb18ced7d26036ecc57e1c9c4584ff7a1ea5a72deb360745354d90bae26eed4c94847fe5fb8fc2f01fbab6962c7bf36e73fa33fd798f4dcf6107c8efa79d6319785b28b53a43ac05db8f046b5b676798935fd694d380e688892d35c531048a53d3a01f31e7455ee58606c75a356a2c40dfe8a0db02f1a6ee2c44be359cef18370a8f9b3772953434e0e2d83259286fd7c6b3304a19f3d410229b1b30071d087aca552a68bc81a0f002133afc8dd49e1e3db5cc777de67408cd518180fc46943b1cfe07a7cb2de6b12c308592f561d83d4356950bdfaf796450798ada128c82300d1858cddcf87518b0392bb8e2eda62e2f40409b20da01997412dbba66bf0da62b513d1388b6b4a577e974b316f6e9728469b2cc75d705c11ff7c6363eccbc9624e96ce889bd679c894cde0f303b3d9c3348114255134f1e4f14342ee12c125cea7b4d5bf9e366c11365a26c81a857553e6a9c825308bb866d4a080b3167423398c1c664184ec97ca371bae33d23c487ee7f5d6d5b7665393c997edf2146a657c192a8e67c7118d6f3e2f68d037dbfc6d886fe37a7cd90d874d71323e77884a31653d4bfe79ba91e135832ecc9689a74e49069c081c5f0f05b6d6ccffa9aa7d3731706cc51e7ecfe359668a671644bbd0569bbaac400838f342ce12f122c85431b09d3df25351469ece66d879a8c915aa167188437334d5dcbef826a3b76423065aee4cae4dfa6f1dc9f874eb472b8714c44fe6e0bdc3436dafb26df94345a162d059f19420aaded247aaaa398794cb4b1cf1344a1eeaa8f815fbc5aba0a2eb34d3d0d436dc84280f5be5b0f76e2767121b85997bc80e26f4bf4183c4e954742e4501a9987522218efd822849ac05352cc761022239614f7a277fe72315b1674940e659b38152b9ea7cb029690fe1c3e30e300022180e38cae337a7fdd812af3e3a9685f4bfacdc2372e924245aadcb84b4270011eb3d1ac4a94dd359e24cbb0d3901bdba74b84b1e4a088f5d5e4d21e14a2cb4ba97477c70dcbf5e925b79af7a179115db93b4c0235eaf8e896c558ecd41dd7d9bb6c0b776adbd58d9c2e4598bd9dddf1fbb4aa45d9c8ca732123ddca302eb8168b555f2a6cdabddb1100da60c11e8ebc4fcb6365ec039ae75289a33c01c43a186c993eb72adffb3712eefd70b528b9ff9792e59981bbb2583323fa90582e5f591b20e7e6f4d1284c6bc1cee5cb71a4863cd8e12e5edde85230c577456d37499d64c8c55d89e4c9c2e2a54fd1577597c9a45a081ff4dffcf2fe8d7d11dbdd36bd9f31f270b744f3d7d19953513874118adef742e09a2e845129fe70ac7636148d1b45fab0901f97b5c18eb8574514a589a71ae9304a8e60c514d0b6d46e0a69827511db6faeb69e1c5a568811b7921ded7b4b4475b0e3a05ff413c448dcc877bfb104d0aa7ed6b1389880c3d30ae07f5cc602765589c7824463d3c1017e047c89f6504f4ff01dcf9ca758b5b9d924340562514b1acea992fe5fec23f619cf70c195cba459228fa078107386192ae5c1a46d5bb84ebabb2c7ad245fb56c091a48a5df331119b5c08af90283b701751050e050f0af0d85a05a0359243b3c82958531ccc557ec2fa51f52efcd7c2258338e5d405560ef7528af62d180d35b9141b7e0d0d6f88ac664c1fffb895af1edefcd699e0d99d0d14972d61cd48656dda3198822cb58154cbe2a4837dd20ab241647a512a0edd4c7c7618142a1e63f25ae3534fec395d3c93ba9c91448d455876cf4261c1c02847b2b6e19307600294d8f18a2fbdca2ae9f6ddcf143052f35923582f40bcac94cadc0746878e2e3b07ae9aac52fd14db534394884d61d5557175b938ccfef9cfcf24e00cb6117306e41ff28441f320699371d131ab76b9f09b3f1a55f8b7405488091d5b4440b5787dfa99dfa809a38316f8dc39d6f04ef5f50068451056d91487fafee293a3a651e8a2aea74d08633f61ac851cf3fc6efb0bde7193adfda11f9f836ef421a5e26ddc9285576b0bdd687e3c66dc283010e16515ebf68a1286bb94d5c08aecab77072e76fd3761d72c1275b2d6b5e6a78a8f29c837d1b952c84cf3d80bb2fddc3390c683d3d1f70894e3a0e57dfdefb2e3567342c9f086fbcefe1813ee7197e74d8e299326bd02faf71cc23e79f5370c5a4da7f15e6d7c91ba47bf38611d7b24a82ac303bc61bb520730a8e7b7a1fd6564d78a14913a570cf728f4583ef66e8e8a128f2fa2d469c5a9bc6ca65b07c08160bb0696b0d83799ffaf04c4bc2d8d1f81e96729439cd07121bf7338bfbf3f52212b55bdcd3f52fd27cd5d8a93dd3967e103de1dabedeb223df37e0cea3e5365222fdc1ee9973cfe9555d1b74541052f39be4e4403cdbd3628b4313a7f606f4e06ac4d295d9eb0d6fd905a23574dcdfc0f45988163adcce718a7f3ec044dc1c4f718ae445e93d7692f733de32709afcf888ee36e8f72ab80efc6f91cf6344eed9bb91b2f6a4be92ae62af3d049a3eb36169f7c810c3c5a67d4e3f1af794eec850d560b17906b6e7f4e124d34b4cd31b31e44da0d023dfd6fa7a3c765d9adc573e7d4273961de2bdcf1da48e477af769121bced47ba65f9c5e305912dbb8e706a07cc81c9fb4f2bcc279210642ad5a4b4e16da70916660255db2abfbde5c3ac9a5a443e96e120c56d47ef5cd233743963078d8bdcda9af0c0cd7ed3fed1bd52f34f24bbf04b747fec9f05b61a7470a48057dafa089c950bc9757fddd58d60bd022ae3bd52ba43139c1e7f39af1ff9fd346654d06f960f99f529c5d461bcf04fa70a7b265e4bf4a73ef2e42bd909602c0d7c024601a3795278847b36beba93cbfea5113747e2287ac92b8300b241cc9966153a83069a3c299bd054963f6610249f8a806a198aecff25c2e88f02d779d223373d2a7a53c53b64a958e95db75fa7e9133f50e752581ace4847bbad2bbbcfd37d5a04f4379d028748a937eceb79cfd8f6b90565606edb2e3ff1de0851a7970e3b192c85089f1ca71108efeff6ab25cd917498bd6ebd63c4f44e7dae73eb89f28102f96ea1927b70acb5a3ab199dec51bded94f6ac6f79892ec338f561e730bdacc7efb8ae2132bb107f60b92d912db166eb9fa81477ab87692c344f2e3375d0aa68de7c8d40d3a48a002034d0615edaa2daacafa0c828980693b2f19dea786482beef157879e4ffd4c45f562d40582283a2e2bd2a0a321d053a2869b0ff82fd1f435675bfd0682dfa5291fb880d02b9ae80c094d2d64b8cad2e52f2a4d74760fed7b655e3bb7b41ec03dd4744bb9ae02accf3605dac471195454f5c19df7fa06c9de088333d78a1c26b2bf1bdfd977c96d48e18e22b2f8c622234f15eb75408105ffa7ba72c229b9e4dfb4f73e9c63cff10814a81b94e985b3ebbb36ed725a18e0822019a187cb858bbe0f435a40d4e5d4e74d2488c10c6a1a26a905a388eb78cc913395576621c7486ca5aaeb5918a211802506d307619e37b6eb1f97e57375d75af2c705588671bdac440edf5021c7bcb2fd788026f6e18f5ec859a7caefc4428c3a7da2870189c065c6a011df89bfd720ca9c6b5297d5d4478cfe020dc68665de4227aad1188f0c20aec9e296ece1acb2e35533b54564d87db55b9a9806e6868937877e4973e8bc8b5a6ab65a8a792612ed928cea82d00570ab5848e7f875f9c8e61c93b64b6494f8c5683be140cdf630c7bacc846b308274071d958efa21375f7d2ff213b34f41ded6a10337d19e34bf9534e385a162c5416d070fb1adca1e1253818e0da3be365740a5bc3b76dc44b5d33b25e706c6d373f376dd8b77eabd29c7008688e0f43da1f2dc2222cb7e87cf7772c317483e400b1c295fe74edb41f22c08f21bae18969d1b029bf401cd420b29e37c74364fc5ec5c2e5caada97c53fc8fe218f4e995353b701380a6a81b52b836527d5f258935f38b79147e011b2e4d96c256357f3b36cb0b2d59646880d396b96f100e83e698fe53b24490278503abcd45a4bd3bc45b790ffda1bf5523efd73d6d63495032c0e89c0d2cdce04ff9f0fe350ad342318a4c16528f163f9568952009aa02823f94ffd379c051e3132f4f6c7a7221845a0cc5cecb1c3d8a305ae62c9bfe9e9b69e292b47e6b6c0630d1d64cbc8fbd611a6678cf4451007f76a843bfe6da874abfb5af2ea1aba7e78e785746e3abae99855d47b850cad767c3de6530dc9eac2930902a2c2208065b88097ddab0f941af38415d8f55c413a4182f3b69165ae07e3382401010887661d0946692971f6872f5a50e014a2c7f524cd8fc8cfa76a59975728e745c4e645fb5686826c87fd76eebf4f06352710359310e0195677872c9f715c64e2d1c7d867d7d0d1631dfcf59382011fbad23e12a181d14d3481e09d83f96e7a4933e793fcd2a2e9d72afa4e3c83f7220d054a2cc9fa920d7a5f478d210ff364af49186acb9afd029516314adc28e77e170d80edbf94150df06001887be9e47119aac0faa012e5c95fe89140371b2df4a7e5fe211ae2931f3d584483ee3f1c6a60365810eed6e53907d33afe945e4509633938debf57065ce9cdc066530edb89e76fed6ef2ed888a25770675611a520a21fd77b565f1ac51f12c1367d73646090a30a1f2028de12b62fffc3e20b09b99db4a5540860e8a4cdb0553309553e43481b02bfe04fc04d346bfdef05d4b08d08c8942f395d9e7a9805089e03881221645145339790a8a96f94d9c3c89bea9eda15803456b48cc3cfda830d2380bd1aba96f779fafda121b6e2edfe3dd532f9ae3272d2515ea8bc276e0ba366da9a3b2baa40adefe00bacfdff67f7acb3471b5f5deaec299433567aede0b81106eb1fd17470f031916aa3aa7910df9812de9b7d07945a25772225a8ebdfc9f729af85ed420a27bd7e48955bca14a1f8edd35a3d609050503286d72253cd908e94fd71f19e06f62184d06fa774daea6afd99682651dd69e79d976e3c222e491c579920990eb391e87ce505e66b2e24453de747b092af49ce6265e0124f6d01c5e5cd2fdd55955506a6f9ea13c0d467e5af5d86db0376efcf0188e15e66346116fec231f788e2c13d15ca96843316c481b5df02481b5a830eecb3043ae2663a7627175893d0dbd88b9322d8ac8429b7cc1118e173813d9195387b47bb9bc380247fc9c9abfaa18b90a546ccb69c84d1a7c15aab82b748e4bdd0c4d83c62f491a7decd0ca925fe4c07b1baaac4a0fb15920f7dc575a9325a32e2072058c590f786a122e1582a9d94fc2f7b245878e2a8e2ca2e29123ba532ed5e45db92c8476beb7ff34f09e944777a2b64f32766ecdd8543620518f7d9f61f9b58f965b025f05e6bb49d6273c8ec8b95bd48e8b98e7aa03801b5e44d0e49e2c884a19225f1f044563335e87d1a4c31fe19504efbc751878aefd7f90d9d30b12bb16977a11ff0b942d9ee3edfd929535296ce6168babfa6b0f152d24ec6fb8db7d3ca33034bad2d7f89cbf47c1f7263f3a355dfaf26ee26beb54cb63e98f15d68e4e83b99e010d2fbc201192c7837a9f9552a4aca4d9da4a19d08070585fbb7b2b9db3f6dffad8af358215d08b7d5bd21d2756732cbcfb5b8244944a7adf7fcb7bc17b1408bdf897bdfe1023863e5c7d879fc8a9f918cc5b9c8e5dafae62dddaa01693f6e2d6dc596834c7c610b42432c3a5790357a47433d130c6948f11a9ded339d5e440c67e5088aa83f4a5e010bc26ac8bffda4bc2ffe7d1596443661924b08e066a2f820b242f45b2ee96581f135e28529f1facf805c6b9e657a8b11cb4d7bda89690f25d2986d407b762c62f4e5513eeb1a09974804958ae992597ff9a9f31df1953734946b4853a316167912e5e69fa4678981e6d93bf250a218d630e569863e2a956b4248f6e4ab48d8ce11ecdac481a5165adc7d02546cd526185eb01668a39065f82be84055a4cda1c3abf2a60ad0a4f6eb8d976636d0172b2d3473051578a43464f8c01a8162f9b10b058e090dceddd569a8af179ce410073d50d82d6a1466839f9e01617b12448f621d2f64756534f7223d9f50772d64b6c60e030b3499c9b58fb3b4cf565e70770560019186308f04f1ce905d4c6b31ab91fbeaf6b7bec7338989c554a96bb37b26a6b8b97206fc62a984e374bc2abd2496a1fe1c504378e61d41fe00370c2670691e334de9dfa7a761781f7f990725d606988194db9eb72d04073c57126c9124b1f7f24090862045a7aa05d11d75879158fc94ad2e6d3287695e6bdc6ba96ae72eddb3abae65c9130c3f593e880dda1d55c6841e6d9057bb61b26189b54fa8f0004bebd9668fad108a9d9067923793dde79ead2627214e3ebe8e7146d2a1c84909a65a6c5bfe53223faea51e1ec4448c519fd38dfc7ec3ce0e815441bfad2ee4e66366c768e29d578cebe57e4245f45f1b2b29a3dde13e656b83ea86a1100b47c388ae65963440d328a748b673d2fdb1d0551f2206a36ae824f577481e63330f1ecc8a12346a0fc2fb0d736f372eb20da6f69136ea53c0b8b7c17ef6d401d0b94a81fad0d54bf688384f97239fd014e0a993592d2335457102e7b669eef84bce6677177566caf4bf37e6c9c89cf472e666372b23c17a27ba18d32256816d83276dd5acbbcec96b97b8d8b4759e90e78fa3433515fb48e4e41ea0a0b840183286aa0635b077e6c9fc826771cc43686e3a48d67f232e7dd18eb729ac08c909e5bfcaab6987ff02b8fbf2cb28d080105ad98ed0cb8702705290ac1b87d822eb209fb28fcbf70281a46f49e880f07ef23fede0b470e18bd7118ff328e01495a8cc746962e21ad1aead9341daa51c795c593d25cd844ed04b16a9e1644aa2bbf730b552d85a80ad9d481fc39a2fff29870d9a4e8b423f6c4ac7ab1a39f9151dd3286b0a5cd97e1aef6c0ff9c18b8575b9d9cd671a9c5ff906d3e74c611334e42c0b57542cf308e4d834fa3f5023e673fd96cc1eb50a9173f154617ba0567955185f2d63091caf308a38084bd3262b877e1b71041d2f5106c037f4073786efe9c859699369e6cf5230b0bf0cae8c6866717b3426a2066031056b086da226145cde8c396b09f94fd2ca30a6ab3586a2d93f02d2cd4b62ac922385af7d6c08f8b1aa9be3de1e93b776ac9c928fe45d8b020447b75160c578250b09d92283f53d35468c30d8fd38b56570861952625fe35e897b919fa341d12bee116ce12da50867cadc31ef3f2f08e2f4f84cf6e6ae08714cfe4e7cf712f9fddf01f12d77672f0ea0c7698f79966998cffe42a82f0da9353dc450317a01c1553fec63affc1b1c00afdb63ac62be5f3116268abe7a0a9eb9659076473ca61a2e8e9dd1978dc5b8ca0594dd4a625d79e2954128d44c831466427f057f450383a93cfeef17ba1a24ba3d7c3cd2df5599fd040ecc06ec0e7feb57587faaa63dd1487708cfc4ccf27d9a4eb2e9dbaf5d87f73b660654fdab7906bd82fc290c92c2b5cfa69e7bf9cad76cae46454462f42cada2b7c5395b18c204a4919f5bd2deebe42dee15296853f47553e641282b0ad9327c643953754e8f28c394431f06c21d047aa1751a957f5d4ba69628d459ed1efdf31dbeac7e788f2051532e3609deba8a916adeee3cae9884d93438e4d5206750be1824495b6bc2dced849d1ebca83523cb916a40d2e1d3575230a734a23efc55f4090499ecedc56869f699185a1a31dde10f9e564f2c38d77fe22af3eb015fe7cb561d5539c60422745980f02808d1cfcda9a960920f0aad0c451462dc9e6453a78f8762b2b206c62844c0b2badaea526e5658e37fd9b871b966652184f8945029952ef01f6a572922f499926a941d4b5cca31a5172db848a18d5804fa5f8aa3fc6d7b64d71e4963b67a09f2dd519097e5e207cb9f460e6efc6ba930e8ea5a5d9a22b7521b93e3d1cf0095a92ebee6694881f677f02925456c7e0e06b8ca16bc0bf808cfe0c9773cd0a5bd91602145223102185d7781e5b29cccbd1962502b6898a178d77030166f36e9880931083f84e7d40f1664f6debedc1fa63669bba421dc3ecbfa29fc8e7fd4bcd87ed358bc929ef9bbd5d8238d98a4b0ba737faa351714abb9d5cb2baec78718c795d353df6b8c9106e6135615b214f99441c94cc28575c5d545a31fe10ed00c3b605e6e6f60870c97b47595c8f751555f358437190578649480c6e5912504b4ef1d88e8b06527c8bd19f5e97f4e6bdf902340e34559fed5f8f5056715205bc98b2d0684ca42c2872520fbfdbeef80884d213063dcafbb57c74f5286c576ef35bd473c12114d6d6c4517a6707466bbb4759ed7bf344e79b4cf60b48644b0b738808ad771adb84f3e517ff4c67a8e21b48a102e4e69ba513b1460a13437d2b7d3d51f1cc9446cd95ea62c0b6a024214d8647f10250ac707f994dbef2eede2d0aae86b6c488e4159e47e17f065daece86cefd103e4cd9b44e97231001338551f5c9d4398c09081c3c25b9080adb9ed16eeb08222996875d189b9994f6692b16c3843996a49848881156036a1f203137150dc24bab079e310239b0ef47c1b02ca39d0a2bc9c2019362a34b01b6c206ac549f196b55a30d40078b20079ddc94f78fde6e52ccc3d0b8061c1355f62ea18499c10eb1c33b445cef47d2040cbd7e9bade2e067e49b1a7f0b584ebf9ad5eb55511038912411b9aa09ee6629c212b99f4a96b11e231685483b2fe5e742ecb01d85763f003fe6643dfcf0ae6e048bb21e24cd832811bd7d39fa34350fcc4520fb5f4c6102921f42c03ab231fab13f7b86cf7dcf2ba89fb02c2b688f2878504e77a41df0896778d535f6aba95fb2284be96b6b600a251692b70eeab7c4ed76b45d5211d1a5f4baa2c3979e85b3f952fcddfc48d6776c6bda3e4e3b66cc5af8ad24ff11feffe0b1b28e18c1686d0cac8cf010ac25e0fb6c031ba572c80a44cbfae5a28405accf3a11a8c8eca81a2d649ca29576139ea068ccccd91cff87cb453ee7db918845c3fa5309577dd0e09d44f4fbfab9bd816f0cb841f9f99eb3771582b2eac3bb5e77b60aa12c261ed09fdafdaa087812a7b6f28f2806982e5fc587b1bee801e93e09ba516f6c4e06061a0345b50610569ce360db558edfac880e441da8fbbef0f0890c44b22a9dad9f1236ffb71b99a1d897e56c38d80209f58f5ef8f8868ac0a153658522ad3f6e7c63ec80b802e55e82650fd55d9ae4a99a971bdc819e0cdf4e3cfab93fc61b59d0549dc3847a68cc85ee6aec066ff7e5db25d144423be0e8c4ff4609ad9d90af86071de6a310d180fb5f544ecc75cb89918b1410e1f4aa07ee7adfa29d77a06774d997abd629a2e1de83edd852d5fb56e5cec805b541487f70923735514d5ead5a2d02f8276acdab14e3b62f100ff281fce0b14b5d7fdc249dde0c77a048425db94097578ddedc6dc1b1df391f57013272eee7ede9452ae1ad76c7a29974988c71f9ec77178aef0bf07f5da22462b006a254e55d94c792345475b8f32c35950038d535a9b2387b3c88e84159435ba48ec205f1ed073fc0ad9710962ae957bbb3d764856477b9800c95b8911021f483cecf6556563aae1773045ff60dc8cf275444fd4ec18ae2a15cdb4816bffac055bf45ea3235d46fb5be2924d3e50a6e07c57c88e1ff8e00535dc0033f21c95251cdaa06a189295de65e683e52fe262af39e3da05600a493331980512e3575c1d659ea2faf37c28ac5321190272cc2ca2fa9835c46cbf77b74eab3647abe1c9844387f00e18672dde4b2d37de641bf01d664de7f9408e7f7130129a1ffc46655b0326ec7efa303faac677c5c82985a4db88292ebd687ad15a2e006975f11e8f11984100c1f1e6c516f6d03680e8d5630746a8c8528b9a67a32e045cc6cb5971e8f5eaed0c06c984bfbf7ea1d870338937cb622fab6351ea21aac75ced083532dd766e99d7463c3d2e5cbed1410dc926013b6a803fd35b0f51dc4d346af9174d5ac34f7a043c05ec198c2fdab9a8466ae18ebd02166163a61b3fcb10ae6bc73463fd4ab66fba48bf4ad4a922a5b678a064e8cdfea0bdc5a4422fa2c62cf229e3ab04754fd0f13230510e4462ccb772aa02c04ad6058ab83e34ebb32ff18a6d9fb88016187dd744ee9d8a6c97139a7539cb57178f39b4f98ba300ed95e576f798cac6ce0885814b000edb9197110729097b3278a1c11b51f531717048f7a6922662164c9791ba31b4ddfdc153f0e549522bd2ba6ba5a70048014ce5c922ec2bf8029ba156747b5ded9c1df5aaca150fdf3e7b94e9a4535e5201d7e97dc7e6e879383b2acacdc429993232972af816916e584bfd6d3785ff5ceb3460aa1c9a40ec25c841d120826a612a33350765d28be0b6d5f44e9cb6b6d153b9b93ed2c606e276ede29d45fa2131a2c0b23b9341c4e83607103ce2c7d8b175fc4d0cb1cdf77f1fd60206533d92bcd2bd27028815698b6b7fe67425bda23c6605da4e2be25f9fdff1f07eedf548dddc53e8610dbe9f33c30c6002d426cc1066fd50c52fd7a112c5e2296da927ed3335b19358c2c70599ceebbb9db6241566ea4ef4ac3ffe895d384e801fa0229cfd480c0e2e0d7888f82e684ce56990c7c71b24558e7debf8514ace195fe6f084f05dca4e6dd6e516747bbfb8c2f7ca3442cbdc0adddf3128ff0faf01e66a73378ee36cc3859baf108cad2afe774bd7f9a236d215a3d1a38a3608df02515e5a6ae4487527023da1150fbc463d8b73d3f31a2c67c68ba984b9bd89a2bfa2e25c10db38ee1110d375e38a78a8d9249f5250693e8b896a129acecea76e48bf4e3c9700d333e2ed7d9095a4fced8851d739770fb6e105ca4c97d6dfee9cf16b457660b8baabc50297b4876288aa230f9739fc276d7943faf882529486c949c13e823928b1ec6bde649d3138dae7fc2dbff6c7955f0a97ec495d0447b214f2f4005f2f2a87559017df6672b77e4b48ec78ecffd410d85031524edf3e00f130ccc88a59d178c87cd050b46e4d29fbd4e57f1bff48c76b4abd194ae7ccaf162854579765c973ff52856f9b560bc9dc734c91cd51f834a96de6e868b4c8f2cb7bdd06080bc765a5ded54917d9afa9a36ce6985d1cd6ed2de735407bf1c89ecfc314e6643066b970d9632c36c4f498721b6886513db261f14ea332fca26c0211414d8ff24c63eae675e5caad1fd43bad117612a22424d9b14ed7ecfed68391d5275a064eae498975fb044df02f103b74601a043293c9f238e2cb8c0b1fa18db00417adb42505efc00e35af7d95dc3dbb28572bd75f1f81f8482988f60710a9ada0697a23d337013e748cceb338f17f3fbaf4560f8b9ee09ce6942f28a54a13c90954374cdbec806c68ee8d8702294fc3d45a28cc9ed1dc899c4fd7a82a2a3154765ad9b4b823857e3694329f653e9aa4657ceaca2459747e4f23573df64702c19d2fa23f453469c9696edc8ae5bcf0519a71ee161cb04c70139b4a6fb54f4ba902640eb67c9f36bce265f6e85d950566cd7217f875a6d591a76502c7790dea22f761b4a2940682c8d20ed5fed514604296f0f17bcb0b740aa2a92e6b55d07dce94701902176c40f676ce45d59ba1454f0ab24f6490e4fe200cffb8b5d003b6aa81084cb1cb2a0800714a482c41501049424d9879c668b42c079fa83d99dda3cc77d20354a7cf7d3abd050fb2b21aba09a3b158bc820bf2561d6b3cad8310577998f581abfe67e2ba3e9fb740e108108bd61d4cb02680c30af6b2c5bcf923a03e0832756f365b211d56257fbf3583efe6c28ddf4250c649f4a3280547386aa015690183b42390f7f3c7b51cfe391c7da4a2479182ff24f85267b272c40e6a194276d8a526d6345a6657b316dec5cf566ae9f56c2c2146bb80a2682c4f5d3c7ca75afe97b18335f1bf0d30f939d6420a6211dfebfa414a90f1128232c16fe1cebd3f3ebc54a5b21a8158cc3998c6880e2e2a985503f59cfdb2b62961f69f4ee32cbd815d3ef9b25661c009fdbd459b09c65006c1721c1c1fd9dc79a24798c312a58c915ba59fa7185e4ef95358f87e917cf7ac5017de2846a7dd40a3b1656f00e6c97bd19bb898e7c5ddda6e861dbc71c7cd52448a9db17683754edacd31fca7c6ce6a487adc35b3d0ebba142ed25a9347ac1e9da9eb387500b78687c878ba861af65be97ab702b708feaa57e5d7bf90f0b47dfd17b4ade328c3d914bcdb2258502db697a9620dea4108bf13ede9ffe0127f853eb03dace3b2225515f84db516426fdcc95313307e0d117dcda2184f47cf8f215c21a06426a8938dc8b4f3ccbe7511e7d8ea57059e8a856167ddcd18c415bb4fc244b7d23b65061716e15d15986a9a6c3eafd31de3e7e9689b74788238566baeae54529137a5b0f5f55823f81bacc5e07dbab19b9bad23d70c3a0a83aaadcf6708959efdba2622f869c85cbba4d4b8a24b9015c7a5734a9811da7f20e47bb117e7bfe00d2e16f71d511d05b49e02ad2bd7fb99741e3cb594b8f22b1571eaf7bc3d04ebc7ae164df762a5b8ed94062ffcfd16e3e33e0d07311005a96835e9c50ba27861c204673c3a96ee2dc5f9b6085122a218d021b118dd0989da804f4180a72ef8aba3116a4de828762d1e64283dcee70b414922e6fcb3ae0ba3e7dfbed0193355e5d950052ef0cc7a04a3fdea1ac188772d2ec6a6053ca74880ce0689cc43e20ae1a49d9ae8783d8a2d0c40b83c7104a85d8195c6d0643f45f3fd5c8d533b8634707f98e3b34a28333f9a72464f31c377f868c7bb5913d719caaf6990179fd569b776ace50f2411363dc70a476857e18d251336d69cc95902204b51bb8c7bdc542d0de8299f6befc0599abdd5dccf117581e67874e66d609d430f8984bf0544174e6cf6497c3e0da30e9f010b14ac028cb263d4b3ee6fbce1ca1cc243bc2b67d8ff0a7d21b903eacbfc6bcaf81c1effa4e75fde0a7f8289167bdaf77bf3e743a97065741cffd598ad11fc590cb0a5890e2ebbfa20a0e26b1a7624d1c439b4453b132e8acad1feabb499bc21f05c4a91bf2dc713d7d49c6ebd06ec062e413bcd6a711789385d0101a4f6ddd1e97c8af08c833c6f62abf8b3b5b5da8a1f48d1a6d67032f2f7c59743dcd3b30645e7c55ec152dd234ce02257ac5f3a5247c0a5cec84eb20d6886877cdf212131a2be63ba26d9f587a3b069e4511fe10c8b5e8f4b1b38134a1f5560999b369206d429ae70cc8d305a9d6475e8e421bf9a98ef8e33d503274bde3bfc8d54536263fdc74d1c403ee1d8119514efce299c3882a5d0496d78e6a15c56672ffa412756aa524e4815de55f041285be0a7f64f85f5f3fc92b6a4e6c52e36dd65610713f5d3e853032fa0c1f98e23ee95328fe0f943750cd5952def18fd9dccdec8be0fa58bcc9e27f642cd58040402a06f48e5486721be0117682627d1677ea7a5c61f56d2777c2ff0428af97f46f45e67b0028ba032a7bffe505f3145ee2da088ec9905ffc2ec760ad39d6e85ce856935b2a41cd8ff4c83553fb7980491dbd827239d6f9ac498cbc12b9773fea5546fab40eb264f1a5a77b938d5b3fc145d9f118a053051b41ad974b74cd82a3a5d707ac26c9d8b9ad516b22e0ee2288af7efeda4f75f221eb54385598a82da103b3b1edbe1fdaa82296e69cfffe40b04afdbed2a2cd890c8489b88e2941189329fe5f2264678235f5cad34462498e205af59c5faffc6a1d89ffa03d0c4c4238fd609a7d5fc8430bf2e2b281f81b6d167a7747a40c2ae806637de8089d9949e87e8f9c3443e3f18994515d5bcd741ea0f6ae3d09a742d872e019eb7bd9bebf0b08b31fff86c7af40a9a62e023745ae2172107bb8a46c4e7d80df4b88188b9f9fd94c379c3471e679c00be74897baa5d3db4633215a63c1388d9eba02534cb9b6fa6b994ca49f87ad700dd422acae883fb65859764ead112706f84620fc230bf566500b534917c90a695a2f2a70a1e5c6adbfe23050de09c25aeb40016aeea0178dd5f47b8ea034f553622e208bde891c7f6c5488995768f7f470a622ce7ec5681d3e4e92c255618289fef06452b03dc72df12cff04383ea693ebc4e9bd31054b283b35e71412ebfe918e587e59c246a48a4b2cd6516e7324757a041e4b18c0b58c4877d1a11345667832d4979215d1630a0a4f97781f8cb95176ca6cac3dd0afb6b848288f22d5edec0c5afdfe274906ecc48f8a0fd35f2226a3ffe575c916d7ad0931ca38cf5c7a37b718a3ef31a466af252741bf174f0fcee00d7b610099df735dee186d991627fa50e79ed59a8daedbf60f0dc791a8a66e641888a765340db32fb376b91215c3c3d51da9a20773de15f6098691a55afeb0c4c847e77ed7babca2aacec64d625172a24aa2b9a47249876233065930c3a5cc624a589ffc9ad3d7fd200dc62c168765542d0b6f8d41179481962edc006b1b62faf44036490d5bdf3607a5ec601a50816c7a8a19733ac4e193b5612202bf552562b6e792c080e730a1c90a012d9b4b00602e69b2e5e69fadf43444504a653b58c7821845123320eb1b9b35f73c34491601a21606e07f4c735d40458c7fa02915eef1043e90b2457c5967249d24c1d2626925a474791443e3872d10f34450726940b7bf186cfca6801a9858575759a133d0a14942df3f4e29a82b1b9ca181d83fb6d1c2f2246d2af175ba55edaa672497f6a5de77f7990f8379841bae932e161be02767d4a7c2caa188da2566b7fdfd3e134c62534f587726d7108d8341c057a09ec370a9e41d1410261dd6f4a57b8332689b774837e750781b082fdf7a23bbf1500881c9d927a98164b8f7f440654251ec62e3902e9db592bf3e83307cc3d9d8830da110583cbf721eed1ff756c576a5b20d114d000d951bf53d53e8258b38c16bbfbd8701c39f54c30c66ddc2d09486f99c8e3434e5336b345b27dd1921d482b385259d44ad289c11e8ea07ab92c28b0bc78cd6b4bda802f91bd1bf70efa0fc69f80ded55664a20943c4c91c94b5a4e5c35626acdae605226bfe29ff92bfe7e189a0e9a6a608cc8fcd7309bcfd66bfc8aff0930e10e99d0ceba3280350248064ca5a235b5d0878bb631c1aa35d438bb34cca1607e3ee75f575a5cfb80344b451bbbab38e71969bd482c2a150b98b7d9c073eaaeaefcb305316e3ff81d06c77f73a7ec0b39db73ae65891e7c96d412d3909ccb57a757b7f0a22b7e6e0f04f034367f8ea03a987b99be5c505ad9c42a213e8bcfc23af083cf5ef0013bf94ef09971139d98ee736be2f672fc9f482a0fdfcf4ca3b2adf0fc76d99a7204765c62e43d1489fff187c0a450335d5f4cc9893b12749a05d2c9d7d8a18dc12f95c2d9640945a692b2f60c92ecfb3489583093bb79de29068983224a3041a1e4728457715dd3ac99f5f57420b75948b9b07dda4c3c586b4b0f30bc19e87c08221c83d61f6638374f31b532095dc6e012298842288a829d29b4dbd87645edb3e2302ac3d0c60c48d97a311417e1c74b2d764761841012a3b2de247ea771d29f51f62b7d8985ddc2d10abffb44ad665810de9802183057824682820a8fb7ef910ecb24db1e1760ee5e9a4e5d2c39f0de405c85a46c9104e4b36421ab8492b98f822f4aa32fd65af7db1a3bc4c39fe536dd8afef900015497e8d72ae57951fd6544d4dd14ef6e366f118aba4d6dbec6bcc9e29f673bbdfc0e32c939107188e2228d60f95dbf0974c9fde4e22a55b72351ed24628a2ca0e9de0d48bdd643ca3398bce26b239c3e33dc2d7b922020f1ffdc7dfe56b021cf40428ae609b9b96451dfed1cceff541b8a66a524710aeaed1ac45c3a735b07da19983695e58bee180ed29b1fa7fe97c6b087571cae5494932477831126c39b7432e2a3dc6bf3080afb9055e4761fcc89e9422f81148064bf3be77f6cfc5271330d46759642ef405c55fd82dac0d9bb4b9dffa7bf8ea5f23e57080128d726c1f6288f0088394d363edd3e3998bc920fc65b0cf66537eb6788625473ae4b920ded6aa97e80993097565b411f21272898ff4d17bf24a4100dcce847ad789e9d94576828ccdc999116d07e336275cb6c69d530b662fe2de6283922e2ab476781927af8c2b992adbcb27d0b07ba5abda3c49c1cdfd2e697d22e90182c5f29572d54635ad0ec259bcf4bd104f67d91ed04d3273670fc559b4f3d5c61ac869ac8c4196e45d24f289d3e8a9e9ff9c8e7b23c30b7e4a8bf8e9069ec6d9df19d57ba1cc9b56ee812281b5215e44951aedc1fec44a24fac789c9e436c71860ad9ae954070d768593c2de5a5191505007ec5802a71c0b50318499d91f3b9d40e3165a9ef97b34610c9283ea71f9da44d19a72afc06dda71acb8d191e7e9cb0968080921a6617151a5df76b1c32983f445735d7e014c04ec23440bb48dbf3b33eb088e4699077122984d9f59c54f9493479aa26470096acad35fea07f0ca8b927f31143b71e278714828334124a99562faf688415f0bf38f4449a25caf352da7813a2c692fdb34355b326593eabe7788dac97972307574c94588ae841525cfed8ce42f7bc605316897d169b334d389a694c309dbe6eec94ec5d1be19416275ff64253dfadf587fbf4cfeacdd9f7e6db224628852531502a40426bba82fb292a026a6ab90ee66b69fa33423c6c6ccb4cdcf1af700ee468f3398b6bb463760d3a31a75c843faa48d8a76d8545fbbbb7cdfd1cb43b212366bd637f6ecc9ff528833c63b658d2ab669628ac4ee7eaedfafdb0ee15107cdad7c7aede00fe356ff961e1b83db30db83e08504a560d70f6216e65dc4a9d2d61748fee2a1203353f6b7361314d086c4277b1141f073d1afd70244fae5673bb6397505b80ad1846561100019119dc1e7757c60f5e1cf446f3ceb3e493512c9e9ec31112fec4f321b8a34c89b3344c831d9a90ff07ebdba97a1dc36148ec83c268b10591bed13f134a5f53c878df6eb44acaa546eb38c5ca1b37e84447a438090eb4bb3f604ab77ff120830dc1fc2cfbe393c86a34c33a84cc0d27d0109a96c5f97fe4e21d32245a025622af79b74356f1b151958ed65a88c6a33a8c7e3bd842b19b682677425daefd1bdd87b92debf8bf642815d49a92d9add80ac427341d3a9e052d1d6971a217a029d771edb237c9d499a5dd4ef4c74e07455707d655945fa9d829ba36d69149405b53cf147babe1ae2f3803891c7913ff9daca7096b99d4a4f96555c12e4c887dfca3050ec196115aff4340ad545b287f5b2f3c8e25f4b48617022a7187462e3e29a0fef2b9d45ad195807377530ce0959aa3211f9b198a7388bcd9adc7b428fedf4ba685e72b7331c70f1eb5507c642c765ff61b024ed798cd3ee8e6246f7a6d9fb96dac9b1847bb859fe755d0d02e0d50821c4da0c890d7c7143c2cbeb2b75ea96dcafebe1075a6a62d190c8fa28e3ac4e03cb81d889d3ee764a456e223890545b4b6612c60cfc37e6f207d32a328954092c184ad595c55df5f4ec0c2062f859a6d2db43395dbef807210029fe974d27af259f0beb11b36aae5508d94b9face01cbb18b1515555548c61ff8145e3dc33e3677532859a178e40c20846219cfd0de5ac6008ad8ab7fb86327a1770123ea4e68d435fe9da6eccb101c7611a1a8f36489778ba4807f3d1d9025945f15196251c0ea7288ab56246ba9043859c013eadb6dd0efa6ec2953742ebdbdda7ce71403cb786e07e9d2cebbf87b2ab41eb1ce3f55613a953933fd4a4cb3f0fb07a9412bc801593bc3aee2c9068952873cb89256fcc2cc9c9cdb42d93a73069cbe4e5309f84c84df107498213e1b02052b72bc94d4097aa0d9941845308a8feea81a07374fe5c78b562035127982108ce1bc756b0055b37b2f855237402a14cc0624e3382d9bf5ad8aa3a48ff7f0a2850d88ead9ec47c4ce7308672c76aae4d360d9fc363f005e8d9e61e4bc04fe8403185bf75b8f841f66c02c012bff047ac760770f98adec648afdb23d692a2911a182cf27905834bb8e843463ca9b5666c1e893e27810fb250c6864500a9050a968ab12052fdd867de9041699b20661d5297393003a6c0a29ce0b37edfc8938bfbf7d66b42d102ab98f54fd7a00970d9d8a5f35bd9da4be26807f60c0166d086d9b949fe525aad5b99a9ac87f3729e3dda472078c306afddce95307ccd271cd9d7fd8a8115d03c1606007885fab4491336a7aeca6f5a272f30441c9b2a2d1f7c50ab2fe0805372ad1f63406868b866a75bbb89d0492b40df0be9136d22e50da2b108033d28fdfd22cd1ce3a55fa96e3060f72259f6fe3813b5555542d8f112fc0821e6cd8301d7d608744d537da4f18b860bf640a932fc5357d091a27c7f59086b2f1e469e5e076001bfcb8833a4844360d8d8e5a1db5945acae4f60c0eb1ff8d9e1767869ea709354bf07b2c8eaa4c0c7b82a95ab49bec7504a54871ae7f5f795d17d8fd65ea07b7c9e7e74516173533b36812134b0d93e85fc9e45586a3fa97dea4abde988945dc627a7c562a57aa324b88f99f04828dfcc96c942672d0f98d85d56b3491621cb46ae9ec7948d177d14261e0572beca749bb8894832c4cef8c627035165910eb3301699e5317011056b711204276f4f029424514dc6ccd4f1c09db3b0541919073ffd72cd1c3b10b578eba63dd16843a3e371fbad84e15f1714782439b732cf3f99f0ce5bc645ca11b7a332b36494f9e02ce191d964cd5915a40842689e07b7c1934cc4c204ed7328cf9694a4d60f0f572f3e44baf55b350b2a9cf51e518f0985c783c97767e76beb235d968ce88685fbf2cde4418cd24316d31e247caf67c37025a1d31af8fd86ccbdea28116bc88c010e8157cc877689d2f4bce1c452a5f518a3f623800d6de06e56af3648a9dda3e5d710f5d35a61ee076e836fc9305145c5226d2ff8896ba7b115886353d3c1ec54cfdc5c39c22dea951dd7da2b422aed841272e8dc47f8c5d265451ebe6f256832d7c9d7e1faeab8ea8f377e142bcaac48634fe1dcccdce610d6c97d32ae0ae6cf8264ad3ab16698616ef971fa7d34c2562228c9c69c4a5e1a4a4e70b2eb12db765f865fbb72f286d5103a8d5947e4c86044dc52efa683d5d309fd4087eb85c5e11845fa3cc37cd83227fd710d9f559737a6db3aa20a68ef5582b8510478b77a2afdda96bdf7493edeead18f3783f8dfda86ffd19484341f1bde897c1da9eb586518299677d11d633d0318933208e5c395a5b693bf659e33a155a368886a08e4fb97526a1c584f6c03c58e599dfaf1cc159a2a802ee325adedb0b9e2bba81980abf05e094330f5966402bd5843b266031a165d01422b5438f96b0d8407e72c306c5e5bab3391637d7444138648ac1c2ab9483bf4d77d0fa25a254d6b33a4445553c9406e0ab68762d6a8d7340a3d9d0544f815c3b578e1418940b9f44cdee7a50393cc3f5f9b5cb636fb22a31dc7dc2d4ffa005a012b276062bb9db06f03164101885c53f3ac22dd92a9abce55836b4da54b7c5f413139c33cfd787e2ef8c22f6300292fd032106d49253511da930e096f991e0e1e11a3604a35e3812b30612239d349ee519819bfb5579452fb7f11b3d220112c5f1101e83232906a60f80a7000b51b1a0e4d2e8db03a3458406e7878928d66a334a1e74de5882d402728a3db8a23b734abdd37364c5a27a1b4271ef3638690f72f532dde896b55e5ed3fc5db9fa6bd4f307c8bc6ba591bd051b42d1860b783bfc43370c97cdc6314500c1e3371cabdd201e6e902669ece8e7762769beb76fd701df32268469b479172f9385a997dda24a0974dcb3f842027bee9d5da789739be2aa531c6ec4e45387e6adf74aa94b885d0dfaa591573c260f9cc4e40ef2b234b679fec9b725a12a1d349cd7996d19c63b03ec68242df1d6043a8c4d4482e021c88d5380e552c077b432ac02d925e11937833b7635ddde8a50913bdb9ef8db0316ecd0ab23b0e22efde0bbcc928ca1e29bdf44de7030f520fd37a3caf65ce1efd47efc6bbdf0e1f9fb475aca0e3a727722efe813e58c802ca79f9a29282dcfe8e7074048a757566485f17686dd18b0657ea725bc88bef2e10274a0e2969955056be360a8f787530dc8ae198951ea9367d387370db14fcccb5249b8ffa5d120f12e9a3d5a67e5bef8c2aedc8903db64503ad38db79d712855f29adfb03e6050673244bb39d484e123c8e422864c27b9df3f9b1b92eb74ada5ce19b4134e98cdfc2fbb0c03c1ac179301bf44b8cdcf7669649acf2a1fd2e340e84a2513461153110e9dbd72d5e5bf28e82c2d1ae85d86849cde3ceb22c23559d6754bf79b3337066f1e2b1a589bcbb7cdf5203344b8697ed043beb8c06619cd42e3bd6647d54bea24ad54baba4b93ee555faa6d4d0729265ebe9ed629832753696b02ac46e664a2b4622e8a0d49d0e8f623e317b1a9479d9475105870c420709d54f00a1a2d5836d946df888609de717cb9967de438b34139aefc9e0f9a2370c38120d348138852026295df0008a54287e7f6409d9dde6f0585f63b619e94c2d6f0c4a5d9814b3ed29fd9617834d1d00aaedc3357347bd02579da02278f7bc662898116dacdc47f9f818d6e92f43597ce7bcf78d1018221b8c6e44e04d6564b093b2068dcb4f925f4a0fcce13b48119edb44ca08ef77eee5491484001a1a7c8026c3aa774693e3a0f02acb46505a347578909cc5648507881de9134098bb89495b731cebcaf452a6336d1a11652814f501b299fb3cccb203c605cda6ed46031a0fc11efd0096814174f9bdb591beb5df0f5a0e77577fc0a760f2908622bc61b15bc369952f4f3bf869fb70083cadb49a2d3457a2fdae94493965ced7f045f6a79c7cdd1e73299b3bd4fbc818f117ba7a5b43ab0b7b91bbcec8bb04b4083b7ea673f91ffb82c414c01bf62049bdb774a8e45bc51aab24b724d7ca12686f2ba5e0be2521bf258e6ee46b6bb2d69cda0d1c495827fe5edf6e377c5a3bd13cd83efa8a9325046bb3c70b86ac7eadf55dc6f031e33590de5c1569f4029b51256f4e913bb9af76a703d9536501b12874ee2c8da169db40837e0d1edbcc1098dc1995f35a45a86954ae71fd2bb7f240f2c59622d1fba36828cf2d6ff49e0c7f6ec9b548cea7b91077ec6335256af05cabe38dcb332ad84698c0c8e63520f8a9fa7bbb9aae9a98a7f5d15feb25ea2c12e8394dd78f0391072e0d4fb20869d6e418ba18fb5014735c3268875a0bc0fd654822f655d316e389249f1042e950d8d7964ff36e615891e1cdf15b6ffe20d037cc27bf793ee771485c43076f9b9d2f2462b461f0a5b3794d73f50f56582fd588647e7f52478e1434abe2505e21324d68d8bf2bb0476e3aec5b21c4c9c0b281579a398456afbad8ca4582241bed1f0fc95fdb1e649eab705bb5ee09a2402bce10017fd4d965910e59bbec8b8552c3f4d8b6ee29a62d8358b1344719db01e1139e741ca412a4eb6c3f988a12ce430801b00792e456d0c7ce32a695edca5415effa36355977fe5e136ce326a839c5ba212662d48b89d5cf13de01661899e354be1c82b628f4043cb4fed9d0d592002ed80966a0436b6576c5d1b25097dea4108a9901acbabedb804e56ca7786d0b8eee6b4cc658e2924332034457f67b0c8dd5865b71a5015a2cdb8b28ccbcec6887070da905fe639e6b6762c8c830a23a4f243d29b3c2642dceeced3edd3286386f5c3fb125b96c5dbfca9a98697253dfd4bb3b22b5b1846320704d93c48f8cf06938f7cbf38c61e4c0d67aa98a73571a518cf80e3fa135cb4ce51f4e591de5f8b92a12443656615cc3a1f2757a8cd93d801940dd3bc64989cb2b24594489602d0a69aecc649476847917b279313edb4e1aa7ca217a27929559363ee3f4fb335f8840bff7f060d72dd46566b50e74498915911e8ffcf0d73a3fd7afe0a469add4cf9fc3bd1ed7b4bc30b7eb2fa4904cdcb879ab82dab0e197e65efb876d4feac3a3035bfa6c6e41abd793917093979b697e371578b01fe221c206dad36b4e4cda7950f4ef8d094407cb8441057a069308c6acd893a056001f83623503f556a3b9d462f9bfefbbc3f3e4d1f0ffed2e90c257f3cf18e394032da051001bdb5589756e60a9f3d4871625467547738a239a57b6859ef3e6f68eba2b2b2161c195371633144bf6fc96e364149ecffb0b8ab1b94150b93202c1c389fa1d5ce0804632180bdf7f9adcaf7710895c52347de4388f29d49186b21f93341aff51e89cdc82ee7507479266e9209a4f513f3e7323c7b32fc666c56d7f82a49700358cc73ade7af471b0f663df2407347a1e3f5a935eb43ad35f6a02de279a950aca2276d7ff97430c55c25ce94a71217614e0d1767255b874e51388b72d2ab3b0aac78550b79066756a561016e28670da72ce19e05d0cd0fe9802e070403bc2fd80d9ef1ea2a581acaef77deda0078673273a8e9bee846552ec9ec561e108ce8f237b8e5c4f8d84d0774d7d3bbb4ac18a9e5a343d6f1bebdc1bef6ee0bda171be0d14f1cd97efa43aebe3e66410b9ba8b55e656a32b6504d03825bdf0d26b7ec5acd040a248e8a87dbeab4c096351d2a2ec9b3280c3a7f8ba0411fd78589cf22d601d359bdb880114ec7742f320240e2fffbcb2bcbe5cf5ef9aa9371e29c03fefd830188fdb54b5c67481369960d748216c8c3dc6bfb4205f4789122a1e37e102b87edb76c0c61a179ee4d9b05f25b0a200d5901960107cd1756d401ca1b44264ea433c7a82c862351d201997fc5a939ca864ae9c3b8796ad57b881c986bff6b645fef7abdf3df34d459aa48e5ad881fb618ad899ef650fb0b9f1342a22343d0d56f31068547991379f1909171f95b9c7309d9e6ddaa6e8418640773a5fc2d98822a8228612c35ccc474a58de7c9be56c3b75f939397fa9569cf5d48da06e3ad0eb68c6d1d7da9877113e610f8f882ccb07ef7730d9d650fcf5028a780c0dee918cc3077b606d48c2ace778fe5d0b8feb8a6d7b45f2c51707957c52f0f0cd6a90310ce97056a297e80a9ed276446d96715e55845ee91b04834f1ecb86e7ac24f093daf7d70a9016c2c4a0682a53055324f88e8e4da8da4ad560c5611f6dfff3c1bd87f10efbc4c3868f8c7406bec3aa2831067e2bf2ba82b797f5d542b3edcb03a6b477f31ec0e63ab0e7776e55a6f7c6c32e9be39aa5a676145249328bf2c0919ec3d4584277bacbed98d49f8b46f6d5a77c1f02d139e81fce28e01b6d5d5fc1a35cd0e237d3e726b96cf5bf8c4b04255fe8d117b949528580e5f112c8d151a11ae893b68730d0d6219306577ef3ae7f546fb344725c3b443899c9adf9c8571770199fb358dea7edb4213e39119091246994bbbb3b2d88376d7df66a860b8c565860cc26b7a26049938eb4202f0884c9addaa451db29beff7e692c406e3bfb67237665290835647ae336cd79b35419870d4bc96895f4e58a725bb4f4c24c8abfb8d4471e6dc41ed742da2e24cd016e4562f40eccfee43dc602f76c29f8042d17513a19ff166e5986001e4c2addb246840366e44ab184bce371025b30bf816c0af32c8c6b0dc9648abc097cb1649b7e9861374d28741363dd0be6c915a3b03d2c0c70b4acb95e13177c87a2a4da08c6b8a87ffeaeb9036020f632fc7c03d727913d916b1e9a2884bc63ea68db0fd4b073b85b8b7c6b7a018abb176c327f0cbb07985fc5b0de19bd300f6506c01ef21469f56ea155dfd47720ffec9b9559bb5679116d9473539615c2ed9098b5c1e8b8609c5b5595761f6831e3aa763ce823402df292fe5deaf670bc21e70bc1514f5218474c7f89da9d4ec0fd704072a0da08e8556921c46906494b204b94369d54d462446e274e0046b16e26001774ee454521a2d0c62c418888a2b67fb56d3c3a0e733e7302fa1e4322480540028d9a2193c9ff6c29794aaf357828acdbbd08d6996b6b0efe2d8b74121c0dbb947322fdef5a7c24c99049a4ec18d3dd8345e0121a8e2d7add59fbeb734f771e1c8b17bd5f2d73a24f0351052aa11f84f43def6ac9a399f4e547106f2c50eabb61ea4419e34945d68452ce61652596f385dd4d725879d33c9bc11dfa5714af09fb491a1bbe35337253d6e4bdfbd292e47a0ae04e1c8891198c5f173b5b4fbd212a3c9ba50e70616edd6cea12ea5375f268600a388d2662d22ed63515c64671434e50dce9b29bad85a0684dcc57ff211e314afefd14da7db5cd51611e0671714fe403eaef7f8fffb7aa6ee74cf1a0534a883215802da40b9383b3ad21e947254d17a3cf12c8c62ec6de36c56712e18bc10f0df136cf64bd4248c13d9deff821e5e07a568331ec69b94860b7e6c09767adfdb9dea92fac931a0d9bb2436fdd1ce7b9feffc5dc784b5b82cb94047794bba0550645f6cf956979e906e57b85e446c5dac3af2fdba16bbc272df3f3bda4250cb14ac14edb86a23f576606e0d9586f140c74746df50d4daf5bca3e5798e3accb97eaf078d5e9f4527f666fbf30acef0f071ae100c20df74b5c9186c9bc9ba3976836cd4d9941d61b96bd529dcd322d14666972b90b506d6b27000655a0463c93d171ed3ba72d7e08488742aea5f8702425e48d42884c7a2e2f8b72fc50722ac0d800f9c3c339cf083612f75e621af167b2ffc295dedeee771e7656332098378974fd11fce592b51282300ecc334c2aa68eab1882fdcb8e6dad504f621d2eeb38b4b7060d76fbb49e6b5d8a4a737813d07ddb5b2ec22b5ffc8589da67607d447e78e2a6b6db98702afc49b1df15a0487547f7958feef0f05338c9761024070cefbb6eafc85c74f0b6c3a289c5ee66054e07520cf16f098f653f0745a4b08271836b575ea84bc94948a520a0ebc1f5aab30d0b6c73f5d0ec68158b005b16be8217cfdfe5d0857a186ab336ec73261c982350fa0f8bd6cf0e58584b19e1b7eb86ea8106a54e4249e9a71cefa43539dc4dc0698aa07e4900ad75fe5cf8d7a4267120fb2e414430a74d1128c9963b1fca35d02ba2a7e9e9133bc09a64fa52c4376c43a6437b66e53dd3be41aa134358e9e23dbeff143b8f731882b13b785acfe5f8bc8bd2e07f9c8582461734e640e1f1501650a7193873f326c61c3c4a6c1b5a375e89e647ec4305d947c411cad92627790c58473377a8752cda80e38ef93464bbdc1a9f5a1fdc156de10e0ecbe9c72a8ff664b4bae5e0f4f0d2d0c021e549a6ba4eb2c8551d26438a3bb40495fd27755b4d7edeca4184b1ff05e3dd1b0964f47ab1a0f78301a2a31efcc4002fd9d15d74b114e2df9d167b4f8e1517ebb17370a6638ee7ec77ddc142d2111ad4f4a9dd8962821620e3ee4fdbcc02130a1e2a2d92ab8321274112f17eefa7e39cf7f07493c71b3cdb4e3dcd61e245cc2605a461932f812a38b61427b2865d7d744116df72ebcf2b6eed612917384fdf910ee477367ba8bcf53e92b527536e9a64665a7e89fb58aa632393b212f8480e25561d808a81f4cc68d79f7cfa11280f9cab41a9d1c9fc405d2ad40ba6920bad6bedcdd2ba14825f499398705d01a7b7b38cd643484cdd3d098b3ba2993822e7bb59a9ebdf6c686cc8184c8dc269a2c99d37bc4ed61ed93d2da789147f63df111c1153c747a52157831e7d90221349e35b0e115675fcfbe196310f87e74c817c4303e94d753f83baaaf5af15d9ca2d69102921eafc4a7f9296b2e31d51736670c20f5e94bd9f468b1cfc48eda1e0430540d2e88be28c5a7182046c170c1c5253618aa4feb88d21d36f2bfbc845abeb58200767b738ee63dea1d830412dcdc01d13bca88cb5b46e86b68a86976d030f34a1fbbff564be002fcc3005c1e0d24c976b621bdcf626663608b8c629e5c64de375952f2158ec657bf7e57c6c15b9220b662c0ca9d7d5e5a1be6511fb4e553a67c4efcb448f9068a3ee22b32886d685666d4054d7cf1bca66abd8e436ec14a6a648d817c2c664deec67e7600c9cc064f302b6d04ef933d6557469e655a5edfdeda95365a614468eddbf87433e81d2fd2015196d34edbd2c2bb20831ecf0ceb64d7916085a12b8b032ae2ad3c901ab930c14ecfd49ba3e58ad63b5f3828f26caa9cf0c5813d9600018654c49e484af31bc1523eb7e449ee374c5056097546c428ccad383b7d7885a00ad3cf75b7e83803de8a6aafb94a882dea4a4e8185e98d70c373f3313f49fefc1b99eec2b3594aa1ac4d20a32818dcae9d2cdcf002da89b5f92d5f994fcb603d8a7e9ed6da19150d76df74cbc96617a0672d405dd0a1db7dc275199f32a033feccaeaba2471ed8d67f9db0f15699d5312789c5768097b35937c20146a5b618e093940a598f85e0dd30e350a72359b8209e421ed89b2cde1b868e78f73a7cf931a48dd7640f0612d768333954b501d972bd5f01756301e338937fa073146eda695058ba87067b3349357f4065bf7c70c97e7aa71ea4d004965e6e5cfe2ef8265780a65e84a40d99625ac0fdd19f2a0639df8854a3f3309f84624e7e51f85f8d3f46f59f0a7de994829110bb70be295c851bbca67482752e6d8027215b565de0d7213adacf5707f24c8a0e5205d43f64d14545812fff4f7b7c562ade955b66586c2ca77b2435f595f1fb88d2da1e5f7b31b8820752fc9994b1005f26f89cfe4d8b1a32406f8f9bb0c8fc268e1b71331c13feca74b2380df0687d350ca7c3355294cccf231e6767cb3c578cf6c27b91e2b86e487e08363f032a4620992a5b3d514814b75acc2a837f2f9288f367292a00e3434ee5b0d4afa686de7150a5ee227320444168f2ca2cc33041a68b633dd7af865541d62ede3af0e24dc9e21e58732228d158f9cc7a2dc734adf8e1f0e0cd67d70c5ea01e7bfc3e2d85682466c957f30d952709720425013b07f2bdbb2b9bd648b153ef3953e6f9934a5d5071dfcbc83102d9ee855c9d2bcfba5dbd28f75a25c896598256b3af18807195c8840e13bde70a7ce95be11525965ad2e8beb0bd8469eca899e3ca40a66721112c1f2e373ee5fa00e88090c82143e41290e7a9a170f760a36a882b57e10ba34a7930b8c7e2f477f3d228f485b71e472c5a5b419fb131ed5d94f9ca2976f187ffcac27859a59db208e27cf76966e769d6f667e02851f83ce4034b5e8a35e1c43a837fbfba962b16d09f254d734bbf32a8789df5e98ef856f4da4266c72a96a78765e584fb00e43e10af97b08f7fac152e197e1e37d4ee804740d6e9dd818f2bde59e93495b10c529c0a7ce6be61ac5354664d6a95fbb94d840ba12c4318fe444a6eb2f4278b970f3af83f99ecdb57d50f4d593b7d0a202e0cee01460d8340772229ffcda773b23e42fa38c28ba88df171a836edc4327b9205001c04baeb42b63f23d0f87f17774c6ea73058682f7d1b95d1bfd438f79325a8b94fae89a88e4ae650943ad1e61a7e562d1da3d3aa18c6656a2eec572c1a16a590a6d2e0356c6a4fd6128035dea15a6696b8575be04423c127a7d330c965d5228181ada585ac80cf2f98db0b088fa77a67cbed02d35caea903d49cb6006f1af7a57426888e795e4add70de73d43b95c17d16e0c6a9e3f69476ba18bd631150d6334adae8af0e2e14e2848dcce530a598a1c08dd9dd9bfa39ddf8a52bc70155b0e2cb125d7a5159127e2b5805257a85822a14215b091c2db711f0a9ac00c608b385b95f9eb21d7bf3f373de05a0e643ad82579ffd377b89192727c2678894547b35c26f8c7255d83d1d7f1d49dadbff5f83c1d21f947e43245ce092cda7c2868e577984f72e57e92ca04ab9774be730da0dafd5459dd9f72c38f7947c4f79ff7461f11dd73e4e6db4e7259c55e8f7fcc443b5a46ed567f2ab806f425757e4e2de6be717a59e2f33833fa46a37d34a71d2d1afbdbf64b04d9c6cf7ade12916f16e4da3d5434d71ade841eaac718188127f537cc0f7610d35a00ff21cf22c45d51f87db6d11900dcb1ff5b37cf171b75390c31b004b4099c466f1a54471269938deaf78402a1fb9c03984c9a738a454f0036a488e9bc122b6891e4aa67b3c6e74e18ec8ed66af6f933f499002a2307486b0ba9ac5ddcf04e33d4f62667b7e10ac9f4afcd9d95e75fc0efbf206cb607a4247696479829d88aab202cd0dc37d5818684f9426f46dd01cc169f66f1c0874d0337195a89f8ffc3294adb08c430bba5f4e1dd641f28597bb02edf2f69de500965619a578865475d9da2e11db1012567dcb81f9b5fe6bcb158ab2142ba513629f3dcf599e9cfe97262667ddd12ee23d845cccda779b3c6c6283a04e5668125deede48025015a43288b4cf83e6da0e1be42723115dbc31d2efe37f3497877c68bbc886077ae6ca53986fc216530a3c8b2a2130d034ed0ee376337cc2b3f61acbf2b2c30588a303b4461949a852ee73c86a1ad2aed4d9698a2698050d04a1116ae7307f8ec3416fe758122ed7eba40e4fe36533a4560566805c08c67d5327f3e56dca673800f51ba97912d7a2728e67e1ecda800fab95766267e8a317433433db09667a8bee25723a3902d329fbef64f7ec868d545c460328dd4dde923271b77862cffcb5c8f65f856600e202e2cee157f7ce0715e4440f0e4439b99c61b6b9edcbaf57a67ecf9387befb2c3793235934fdb710fe0024744ff400f9ac99cb8430605243fb1635669c71f6c3c1b9191a60b7011d60dd1ca5f8a3237e7e3ce2cf6ce503d661bb203e79cd38543e02baef375f7c99a41b3a21dcc8546425ca516f455e64228b36e4c4d0724baf640099e1b0e3a38ee24c9ad2ef42f232401cc676b7f000d1edda0c0e9b49bbc72d40c548585a00e7b8d454c56d751e97f3c5c354a1df5c70709bbb140d977af3dce4028b6d45992b41669e4b625dc6555ed163b9f315e71e3a7c4b7a12b5cab81ce18563a73d01dd5d2fb5d2e6e029b13f1a7578aec175e535e5b2dcc739b3e178f577e1d749a9d2cad33a6c2800342cb866b0cbd47f9b754ad78b2a35632e95f372826f3880613bf574e2f1e024e4331f648fe8a6147f6458b96aaf454d69ef0608b336f2de61533de666d1c42503d712479788af9056b3da7e2bb482e07490c176f748e7d3b4d1038385966a75204d0007be9c4b071baaf50ad50cb19e544ee5aa8174f78fff74d748ff11e42941e1ef30a6277ef225b663d26193e87aae0e4f68b32f9b04b67315829b69f578145fab5ad1a63929219c6a7c689fd590ce33baa133bf7b0d0817c8b982d45f943e7e34642eaadc1fb94657f7d5715d06f05f7f753903e8ca83fecab9a5e4bf81ea91dd619d25293e0bff3a5cffe6487d9725c2286f1476a432f07e2f358bac8fbe05fe04772225bc9626e72a33cd452b54b4f1d1101980562f23bd181ab622554165bdc379253ca3099a8f45b9797d11a257a81cbc8d763d0bf4ffdb7ece986288b0a26199aa340f15321b33dd384fafe8849ca27337d48d9dd1cff2034e7bf04b2d6115d1a07f1f1d429ddd37d770dd771b6681b930324392ca122d1a20f502caf87515644eabb44335c2b3264c59c8dd0e074581ab481ad9d5c48f0d47240e8e00715046d01e15fdd61e87c1ac3a04e0b7a08e161fe351cb5ff23a272c79a9851f6903690a9eaa0100adc157758c79b79ff8b12e560cfb30f6a329da4c7cd9b4609d585cad874d061b0122a16a5714ee8c4800685e10b55d7f800b2969d9056b5401c07df9eb1f036f3ba21d7b411a918cf918d0616550b4f25a05dfb5f17a7c9e80048b435cd3a4dba93a05b44da5d3e7ef5188fbc84584d735b43879eaad6606c3edad3a193d1338da45a8b95f27c82086a9d2de4739ebbaf101374fef3ac8ef7eaa5eae2f959ce393afe1254a09081c456da50a516ff167fc0f2fee691a018ea524b4cb46c5cd4ca61d9de8919cacb43dc764c6a26a2f03b32fbe73dc440fa19e0186edd060c51ce5baea3a3f005663ddd15dac79c6d6f25c5b8f43344dce2e5b67c6b1211d325ecc15f58854c9b49484ad994e580e4cbddc8ea6d219919b217f36481646dce84cc58bab7ae5e5de2653acc7c76c90dd338f7eca1727cad0297aeb49242d033744ec8a7c16fc9f2915c9a52764155fb695ae94f60a41e9c9beb3bcfa409e978520eb482382de8aa2ae27c0cc9393cc70125a2267f505f7afd8f3e3e6125dcf34d3cee1924b52b4577965592a127fba326f88778584a4af4da138ba298c0b097eac2be2d4fa3fcb2b4cda80e90e03beaf6be671847cb6b76990ef972ba0594617ebd78d7c9d5d5b8112bfa0009103ce5a14e5bda2eafcd37d4e190875def1306b73ed85864f18877340b0465e48f147ded14adc3f1c0af0ada4bbf12bda8b36f1467e24538f6de52b4be8110dd5063c4b5161359fb164d4a2dca7875367e7baa68cb41d921e4065f9f94165915d319dd653edba0b87f40f405cc764ecb5d66ea5b2b59883c6f847af5b41bfb8f2e729e80fae2c719fe597cccb4f83fa3e7ce74e97786996ec4907e2acb5ec9b4ab4ce41b2c74991356f731a1aeb22a860e3e57e1295094dd5d1f7ca8801be5d0eb77765f65612320a9311ed54cd40764483d0067e876e074e7f8cf4bc7b91c92a1a5040a78fbf0bc22721a70fe501fce4e0e01727f25ce64339ef4e3f31a9790d90dcaef53ba40e9b43f7fad50d4127b6f6a794f26b98e9d3ee55cb5a87f20c1d2020a7135b379ace4573379010c19c56cabf01c16dc5a5945824efb8f50450167f7bc0c2436ef8da66413f8e131d029eeffa94e70ec1f92e7eea75fe653e69003ba73cdc02cb21b4be1a20089ff41cb808dd32b75e993875d61b984d519199331e6acd56414c9667b00b79dd5750eef27a24a510a617c3bbcc5dc7d9ea9f692aece96d98fada88345a5548b412236817d57112d91174af649eb445494b971f814627ea5a6ba300c39c14abf03cca78e6249fc850d64e8c2e2579085e6fb6c9714ccf9940168c19d93a92adf02b388c93f4291ef9b7ac4ef6c7308803b4a11213bd5331a4b3737587d3520c597ca2907d6fe8957381f9e8f5dfd192a1bbad2b04c439b3b2e88bc6255b7d300209abfc39e6bf07dd47aa8fb4cfe7f5c29e4aa3f2cbc9f11551869640e23f05260ad3d9bbcfd5374be0cdf4c9ba7ce6330e8cd2e54ed1349b714990a9bf31f33b7be29d17b092a2557f237e224d3877efbf786c2def942a63896be876aa1534c1f05d6ca623805ca18ff89e10615a7640173f8a21e71c57d97a33110f5bbecfe01503592d280f273ed5e92af73919fbbdedc325bc74fa838ab122c5c58f8f8d9d9da66573741f484d5bc827897081aa2a03875dea5cd86d3f2e2af2b04c70025a5022beac8604635de27e6aa8cca5d28df9270fde8f9cd6273eb8fbc76420d5c2847ad41db97d01168307879608533d2a7c417f1f9677f89e6f53354098971ad004273f8be41ee77bdf7be5c271f3d1938b9dbd7e46e6e0239a1fabeccd3937b867dcbcb315a7d1cf92bd68e210e32e987c0332e51bd211b59a54cc675dc6adc7f55ca1d5f88f8873c2ade8eefe02b24a4b8f85a0a44393555528ebd5964a41ba34bbe7470593a9436c1ef9fd6e8321dd917692418b97646ca641df87aee7137e97908faad0c6af2f94d4a491538871ead21a33967354d58a2897251a5fec862b00c71fe2e937ca5232dafd64766b6e2aad001a601af2a08232b4fa49a6f7c82aeee62711aa5a68451ba82d6dccc6a1bfc3e1062d75184084c6199534fb2f4b3b310f56a770e17bce857589b992d05edd397b6c516f90c9d851f29c3360875c23cf74aa28d95524b2c3904be2ef57d71a9dbda09154b63219ff952dd9f0accb4d577a1f9d51c9586a3e82a98dc8bbf334201efd0c639f3821d1a6e8e2111063d4cd04fef7ae2ad93d0c48bca2766a7b58c3dcd9dc8e9bcc1d943ec471749384ab281202b69ffe6f036edf0b59dc71fea4a7cd259f7413175eff8db7d2d90c3783099a8f8ef87aaeab159c403a96950bb8c535ed098a55a45fb20d62afe637e9aa850afc3f1efc1271b16c71c7678b886fafbbe32149b1671a9c8694abd780d3628314b9ea4943e1d41dc4cb2e797209aef1717923a613b4a94d4115ff5c852092b2115c0e28d54982d86ab369be2b7bc6453fa6a1fb522b672c1a1ee5330437fad08b5030b29b338bc124360fd145ba4aa265515814a39ad96cbdf0086e3a23b0ff5166571af30f08036a0ab6e56f981f445b354c1b8e0bebb17b4a224572195c5e6ca875f5af189feb2c0d677524671b2871fca6dde278b25b7ed65b1670d17deb26c31a5968b1d2dee6d640e946d0abc4ba78058fd9b480ea11fdea2d462ff50a274ccb8f90d9c5084f71de95447d44aad02624011bb4065fb8027816042c123b97ce6678a354a1fce548be432a3cdc40902bf09235e50dd4c0d5d1228fe825bcfd9b2173f953f3895d97e777d99e356a628cd869ac86a4b725a209702c49ebfe5628595d3e9e6e9703788370d787d5f7e4b22d0d0e7145571bb1617fd97226c60645a7758577e48857a826dd7cbf3a884223c2d65b4e66e825067bd42c1523411084f0c1ed89c949e0d05baaf3c1174e179fb8c1695102bec954245040425d53bee26dddcb6a7f1e296f2c9e96c9852f717218e2319d1d789dc57763003c4f7fd4ec5bc3d885b6c94abeb1acdd2bdd1387cd917735e016e17d85cb10fed0f04c5beb66823ba47519deed7cf0c8ea9f418522d8207fe88cf9c18898c142617c3bb9ba8b957794fd3e02a6295b58ff77ea0d28f4e7e67e45592d51b8073fda5d1593dec637e602a028a5f7a964307380f725651709e2aa8b098ead4a25397b2e27e3af9476f1de410d381d380d2eb720947092c2537ccf713de467976aa20edd1c37de8525afc5eecfeec649999a49d512f07bd5dd1690db78a5953c414113886eb6af8ee5612c9217f16e8e0254825d61d2b03b6f59db7a2ce36af893eb72ba49d0b0b0441932f1580215e4804a66bea8b7de3fd08cdd5cf6a4a5ef4ab8c9010d514288805b9ea87555a8af5cd5244713d81a4510141df95cf6d366ff5d5e542ac99f79fc0842b6f81777297c83a78d76f9374c275405d692a218ebec8e4dd67716b484f4f8c741a4fbbe1ca8cd344defd33e18eca9b6eeafc77c62c41e9df532c7a8cb936f91eaa3cb6e78e64e1d935425160eb7b0142431703bdc668a0864500045af202d8d4d5ac7756c953e9dae7c2a2c95ac9c8a0d60fa359a8f4551f781305ec5d7fd916039b6f47dbfcd4e291efb4d89643c8613e92b703598e9f2e86e6249fa16ab1b7ab4b219445d301fc6f7c87ae08ff3bf3991f9128383cf0e99b4551772488506014330c5b5d4ef1293724874fd16cb5d62c1a64b9f9baa2bb793d52981f31520b538cdd81100e14debfda3a22621c8d224d363dac32da61c346bee5ce3ec71788a55a122cba23b68380ba3374a5e75400a2aaa078f52de65233d65c06d1aa36fb17cfae4807f1e6f5d736aef5b64b572cb2b98e9d7ea7d871ebad47d388960f5c7b4c9504eb4e5304285dda392cf0467ac26ea11af1e64958d9b078eacc82a0f6ab835452a3ee6cf6bf2ef038ed9edf4e04a8d8f5225896f8378b8aa69872e4e82762f96acd26e602975d0cce9c2e602214c872b7796cbf73f5e71f84eccb5ea7f5cc8e478a9e7dd6d6f5503c91217304c8a8e1edd6833a9e651847a8ce1dc27ada617a28b388511236beeca55cfb51154ea984a89456f686c40fc757db75fcfde0b8d2111e6176cb22597b92e58ead0b9bf151fe91f2dfe8885c9e7b65a7559f2fe02048f25d5909bd70a76f0fc72bb0284502874f9d80b78609a8222726b6232f0cbcd80c078b49a177170bf3ab196004ffa3e01b2d6699e1902dff81569f2301b6131175a5eafb82c8741ca7a6468f2d11b32b50abe76bcf4a28e84f75d88846a2c906e17ccf05972eccb99845dc414421f58d9c5180b92a02185643795513368a720d4a01b93ece209ede73036c90871c62af64346b46d5989fe8d78f67d802613143917a43f4df39b4eb9bd25a2a24dd523e2c2c628aeae58be0d217d9bd926f260634c89a6724b73825346f48d1d2ba086c13d0622fc23784a4533b310085c0d8791037694b3f089c34b8b90ed9c620626c63932494c223673e748bfdae889655033a9b4c4a9ab98ba3249c7badec8239f92a587b4a038e41dd793faa2d03e7bed0dd1f3080af439d64af3bf64a784c7dd0ea083a99bf12e15295f923b30613674e377f85fd238956491079d6c1c3a18831520b49fc983b3e94333338cc985865b294943c47b20ded8c590154ba7d0fa6620b9e8ca1a92a5e3cdeb26bd848b6c3716b7a84d5e42f6c48607198ec2781ee2c9873e7ea66a5d60aacadc88a163b04c77ca6d595a0eff1fdb44daea6e518e85c3e1c1eee53a9d25e4176f86aa8fcc0330ab680667f0b59102cd1bc499ac261430411a0f883f450bf60dbd654d22d97f919dc019ffa7ef648f6d33ecc579c0937bd714307ed2b59580b988ff76b0f639ecb23a58665ab0753494da9371d8e251026c8d04d8a890f763177405777b50f70bcf89bdab7b50d3f98314428e5aaa6ab1162d4b14e3ce20bf30c0d4c97dae2fc7ba7804a28e399015cafce510435896ba5148b4de7e3862e70278b01d63b3a9610c868fc96fefdf16b0ce6f7d75f14b3a57ae8f04dd2219929597175bb3625d48bc41307c810eb4ce6a50c75c428166dd2ffa49c2bfdbb2af13e7bfdb3a32213afed76f96df547b1a8d49cb783e1a886534bfa090bc91f626a6389c0c62690f19fcfe451049770a558b8e9c0c345696f35db34215b1850e91ae21c3a9c7005d1acb851067adb9d0ffc2a4e241536459ef5e28982414810080b2c71bad429eb5a21a4c3feab8b6dbc215ff08e2972340b1fbfb0ff3c055f2df68fa0e3ae821af82afbcf98afbf60dc99ea8e3c62ec3db3f68f971f9821596b0b68722ffea0375acddd2523ed99ae83be3fc27eae90251938cd2a9cabd7b4f73d0fac677166c6f2e6e587640a5bf8294cd7bb3aba98ffc0e1e48fe6f021e9ac2500002c2949ae7845964414a518432aca8cb26b6cc7afb21137639ee41220886fbf00729e38ff68cae73060dda01a4783efd99db5250cfcf100821bb956462dde73cfffd8c84e7f9fa66467b054e8240e8af873ae1af42fb508a9e8d848e561da4d98f1f51df2417b917cc0220358c865626f2206f92de1a21cb9443947f88e93205135fe51ae76f56cf2f13a0f1c209234cbf3c05b462a34b7c2a07c2d9942b0ce98110d4f36a9eb7c2ff9cb6a817be029c6c446ecfd28405a1225e52133b08e6c089ac657f2a8f5155ac70f300b0fac0ef788c16b0b7b3873572c171ee62e153ac13f1eb81a07ea3883c011e4bc73b64849c2cb1919c975daa7c3abdde8b512d6843c6d58249d726ac53de9abd1231010bf0e6fd2ed3b943f922f931c02652f4d2f28d92cdb04b1381a0ac4fe5d0091aced99727da3fedf14aa64474fa5fe6ce6fc680abb4b1df32028e9c09ec0cde0b919a4f9a8a5c4d1cbf78fce3eda6737cf9fb93230ca8a77c70e0d9ae2d6b30fb4d7057269f4409b74808d8d32da2a0509ccaa63c1fa3342b3439f1f9a9fbdbe4e9ba5d2d8d0aec312a871ea9138f6873a8a1f3550bcc20000e63d8217575dd858ae032acf8948d4388a02bf27801c6d4654d0bb8d3b26ffb78b766d271ee5d82e9eaf7cae98d214bd843a9b716913aec9b8c7cf1542142cc86f4ff201ed0fa7fd4cd0f35b9f0f589918c8d7a431f570e304e6a23c0a812dc013c1417eea76fc577a9f5bc02149d847f58f785325ff78e83d5fa7887d2985d0dc3837133f1b5ee0c4eaf16906cd232f7b25dfda241527e4863ac612c90cc5b8ef15b36e22e1a409dd928429036c19ef41554d06c43b0a09e8d2e546a0ebd397932dc5ad31101630df0de0c41bfcf4a0379d378fa91d00735058c0be5bcf41d0af49a77f13d60b8d91e48d1842d56b5cbeb16765fe88e5dc944f0a315f83ac728da487bd0ec12dc79036e342f855d993c5f6eee80fefd62b200ee9aed61534e0e07023417f4639214c345fb28e5c7b193d08e97fc3e700f20441b9a9e859ff9644513104043e5a8910a3593139d1bedf67340e321dab004b2168257bef66d05abae09bd2d863130b485d0149bf1b9cc684fe1534e698d4b310578c692a17a92b7c298c190dd8b66581d0aa95fda80308fc9de98c73b25cc0b9b5b7629b8a7fbc622d449d309e6ec9c97d6ee6c6695a15c07aa63ea81e6bd05f7de2e673a5025c6b61c91f9e20d5fc607a1742f55406f8d8b5709d91a66426437f0fde888c6e81732e5f42c3a81d6dd6f1612ba4e10a8721a015be6738710104e0af51c22c716f146fd12ba4e7ccea2b9f89be9e8eb50316417e264f673c9d2f95994461b41e9fa5f68ebd60710115b1552882055b5aef33d4f129f4e8453998ed4d234316f6e4d0069461b03e4cb5e87b6405114f202cd347289bfb17c2895b049086ff8bf581cfda24bb202b198eef886fa59ff1ddba90bd2cbe4f700a34c5514b42da0cbf925b1d58c46277a75d8a8b5414eecf05a85b0c10a483169e388d19cafa08d9cc8e9d7071221946921737a5167b73fba2f9f43f6b5ae24fb26c4cf93bbab8f6b5c9e1e80bbb6922e9965b8d1f515b8865b03b14b2984205536563608c4095a98228ae8e14d40b75d84af20afe428012bf2dee7e55d562471376fa12890751fe107de4dd9448ab0fe29fe37c74c21c330f91a224b6ec64c64da533a65835d2438939fa464d9c40a6a5279154d7199f0fe0dd97e0e6c3fb58f5b7210941f7358ce26df2af1ff86c5139c1f598bb1c30c932fda9423f910079f5b699f9bdfed0307741b3f04959000d12442460f5cf840bdceb220bbeb470c522907e8be71ab14aa95a8455707d8f387c6fdc5be6a28483f0a75bb23b4a487fbbb4b8a62828e93997e6ff1f78556619a420644b1c14276041af1fe26cdf480e78d7a58645d01d20e0328403320933562e11d1843fdbacd9e8208efab4f77e7a2b2c6f3ab2d45e67780b40a9d4d57c7b60a0757151f201a6e6d3c38cc84744f3f3ca5e2539dd55388e4e482e4751597ad96831103b18a785ccf4f1de1fd38f4bfb18ff80f10439027e68c1a23bdcd926daa4fc71aba6fab67afca46c3955a077c75889d7859fbcfad6a90b8b194d5ab71da3233a46d51980ec11e864aca070111bc4ea88caf074956fa90d61b81d314942ce4d2622c4dcaa1429a1280bdef0d965d17147a4d0b5108a242c10eaa5405cc1089a8197e7a002ca70fad095d4b22fc586079d3e7503e8080f3b79d52c9055785fd0ae5eafaedac3e1eda5bca6929b94fcb26492dd9462b3c5b7f020db62fcc054e7a1fe820885a60010a772ace8468e71074d3c963d048a94e8bfecd739fd1946e1668b6d5adf1f2587085055fc7e7b92075aa3d2511a2b0312a29d1ace675fae5498b41293c313d8b4af843cc33675d7fa646f14bd324799ce4a77bb552f9346c8ea23c76792d81a77b69ad87283b418ac964fdb90a0250dbada06cd57ae35476aa22be6a6b283a90fed08710e20f3bc8af01017c6fb380e0d6d5d08e91f2e4c9019c5bec40d468aaf559543e6eb5b2332c50456c99ec31d7b8e1ad66a22439ddb3cdfb1808ed87b5da58703f0660b2bed3db7e9ae288c27a0bd467ecd3c23ddd30efd5bd9a8f8146ec7ab1cfc3720fae5d4f57b99fca1cc8ff1fd88e555fd60482424e4c7cef4a60c5c24640ea85b66d4d925cef2c23192a411ea999b38a9b2ce271bca63fc483564340d218c2752a127f0ea9c93e46966817a8d509d1660ff4256f8cd212d4b14d0d8ed9684c72b0ada901de2dc126f2d547c5df7bc030575450100cbd9e2e7001c00fc7b14bef446588611ef11bf6048ccddac0b5d78fdcf4d0fd39f20a16ec3431d2e05c8e57d0727702c19f8a16d48e45466e81bcf999b1479ed7d4c746eaf52d01d72ea3bcd133d43ccf2dd34f83f920f971d73cb0de7bfcc743a2b66a292fb71ba42e5621e8859c67d4ab138cb63ae2ec93e250df97077ab567a0b0aeee44189cb802c207360f815836ab82f5eeee3452e32249f7f8bc24bb7d33af4694b155843c7b8e0b3b5e91eaa52d8e029774cde994a116ef23a58f6af3e843d80c0105061f1ba2f604efa2773e60ed70c306af54bb697c80751d8895d6f8b0319f3a697a49b083fcf648e468749ede2bfba917a8b0ca9e2a3863af53ef31ae6d6aee5898ee0bb6700c589e87ee46b955a8878d21004135431d69ec1e32b9c8d635fa23435fba3a0fba3624bf8cb66c7e7f48857409cfc9a89989086ea80f91fcc0052dba5b96f0ac2d2c603fe836e130a91d1d3344398956d26bc724f631ccbed0e077417e9ed65ce2ecd79bd595e58b04be1099ac2bf088e008dc60afc1140f245102aed255b99257247678dcd563ada6da62c57fd3d1d24c02858ff9fa235dc457bdb88b9772ef7c46a5d44c74f9e6c9a726609c841dd1952c1123963d1e2236b4e9aed6f0bd4cdb2af3fdf8e733216449a534e66d4bbc23e47717b654a85636ea52e328f90dd4f657cc577c3d8e3434bc283de76350a24001b0620b23fdf139dfc92c35afabe8f46e6fa8acafe6425b6d2fb7758ad82cda87af944cd95b458bdde7377ccee92ec6c9abe8f71a5aec1b4b1b49851bebf415d0f814b488a4fddeed9b56e6d56968272c644ddbb357a1b635e1b09059cc2ee612c6da6f72ffbc01a18efc778d8ae2b9aad94e116f7c965fbbe9036fd776eb6bf079ef8a3358b93c437ea21b2b4df0f64700aa86eb95d486a7ae75d58810c07c1728a83506dd3614e0a25ee996fd3c5f36ed5afdc713d347781ea85df6cc883c95ebbe570732cd201ad5493e9f05803ea987912eb8435c8f27fd44912fa313d4ac94e29a8a6f450700add5f8107e1dd93ef4efaa51e53459d4ad773f130bd79d47f7522eb590c4dfc31594c32c1039b9179fe68f5056b13b78298679203420e8d8bf51d20cc58849d1b198e0da8f91057e90b4ef9cd94556d14ae5cc5957e4682f9a9df95f94360325e9ff923c22197274246ed6125a98e94e9266958ac915da623fdf0ebcc3862f0162035df237d866fd95995fe48ca556326025cc1ac7e867094733f468e2aa0c5c009bb5e00334a9d2c3fa6fc4bd81a1f8ab5673825ad84661d220be6b00d51bd0277ac82660e00dc25c6e790fdfcfaec19a89c8d0c6cd410bf322582485a69b98cbd738e44faa85194143005b120a53810b93343c869631b8f617ef8808f4713f2e2368ddf8be9c2ce1f5a6412744e6327b7a8b68e3ad9a4df8105336cad70f511201ae2a6775abeb1348c3e7febb6acbae7a462ead56ffe88f7d5595bb85c80056752ae2f1769b16c71ce3f10bb3d88e482b983fa185c5e5d3eb6acc13b530cbcd707f72eebc788db4af1929de105d0b534eaa98c42c6467c62e69d50c1571a664908b57c136fbe7c07c44a8d9b2a88dd9f0701527852a371863e08965d26c68fc7493885d62cf76d459b4b28ec03249dd6d959424139dfca5e9d9ae62340cb53103d89111fc6913b71276f871b7b7fb1e21a3eb60bf07512b5a6d2c7ac076f6015f0b1fafba6c9b9509bdce7346ffeec414199e0a461c0f0e9d1205e96ede19f7f00192f1c234f907a22cf5a8529849b621ac017c1b600876ac80f9d02ade935265e586c5946779bdaa7445222e2346d2a35e1cc7aaeeef73e1489181598e62c9bdd39332c3565c830ec4e8163543391721c2828cc864677801e915f77f4859c9f9ac3c6321dcf9b8fec00e46163ccdd86611dff16751c28dc7d14bad767b34caa2a7e7aafb54025df9832887ccec25fa7760d429caef6871595a0fc64749bd7659f5e2f0750fdba5cda94ddd7f5ac6e8a59800c0701f022808121e65505d1153059fea14678e37c15eacfe8daae9670d80d0c3ce3fa64d38659ff24630be82f9da90a189925f4466ef7a5b2b02859cbace70bd020a4eddd26bb34b24a291709f345160ed37a5f6e9e1e54b1c7e05a1e18a6065c92c6a5d070aa38aa4c70b2d6ac8936c2e916395e32afabb752a7a9c3a05dcd8571c6052b0bc0d52cad2c91a0f78816db76f535eb88c29d2acab3a0c3bc329ddfda0ace79b0a7481638c2b01636f369f638df1500552233db69c98cda5be4cd6d4bf6c6c0acee3f95b898a6a081c5e99c916a9a16207f2ae8ad6b00ec5b26d7ce2b6f57c2622297ba8018b3cb22cd44f5078c2dcbc4f6b677db22ca4312ccb64b40f833f3c73ee720e4b6874417faad92c4b699bbf2ea18ef7ad0be50c8c2010e3759a8aee46c46b3be12125a9481f2e6168d75cbac270b8bd413ca193adc29581fd73d8e5811d16bea20de9e7ed04133f02025dbcb593ee178bef6891969c2e3eefcbf9dd42ad69bc968e19ef04d114e68c492f87bd55ce0bb5861d489a3cd78fbf3e1829d00c1f0c250c1c7baedc537376a0113baac505932b6469da2e95c68826c06960d211af2bd7ae691dd920d433c969a45dc15c6f9399aa049f3c70dd42316ec5711b03926a630efb010421289f9dd99de0a2224e56f6c02d3fad32d9364a840a6ac058564f0e052923e24f17c14f93763bec375c638fda7c1ad568f152a7b5c8f739c511d0fab48b906591fb5d861b7f24825fd4a3a5ae87af4c658db44afa8ab1050c788fdfb42973a99a66cb18534954c4f6b72e0b27ee62c1459f8e0e67171c0eb5bbfb63a925860a963d1b4851b35421ff606da4c5b89a5c0aaa0148e290ed408c2b7bb8400bd349cb0ef1487653cf58dc6dc9b88ee9825ccafeb56b357ee333d6507937a787c24e524efae93ff100546792ddaf51f36646eb0d10470bf43d799cd0b461c09e8d33a555f7e0afdf5658aab81117863f38ea1a6e7dee077874c7984d4e0b5d86f9649bd8628a07729dd6cce1f017b9e05c47c008487aefb2b349e54bef4dbd876fa353d0170ef3e718954bae42c37cf039b5e63c607267171c5a1ff3116784d653cefd47ec299b9aa58d4bcbf5a06a8e59be7b9734ce1ac9449b2c26160e5783bcf51871eabf7995c8dd11ac915c89005c1c416b7a4ffb05f9da14432ee1cfffdda198fb45d5948bb42fa400f2c56c046fd49369f44eeaa78b243c7b462f2d135b7a54f462fd7240be08b1cc434096024b5dca89fc4c0b1aa101db6b96060b8657688ab291bb202cea9695669024deb5a402ef073a119c7c94e61ec0b13e5c2c758ecaa803f447fb32f836af732453d116c461982baa2dcc19b414cd6a7ee3edd54c59b3d5c8116d6d98ad5c0a481fee2f95d9d41d415e0d6388b818ecc57fb5b95d315775a07176965fcd2fff9c264f21c89933a16d50f1afc9509813af4efcbf9758c96c2bed79d607365921acf7633fd317de88d131a9fcf82dac3272d9ab8944c58d7420bd130b051a365b25546773963372ba98dc8092fca43e6d2ada0b12bab629f2d8c7bc10bb68176afe4d15960e2daf7bed13aa3ae1ae22dfc1f9076badbdc75f96c16d27dc2971bc5ec8019781a95aa8518f1437187c0916af8c291ee30adbfbf45b70ee6329480ead56b8b78d6c3b198ad2906b30601ee6553c656ace87bf4be8b45457a435fd9db23e2d3cecbdd49f9e752e24040a61b39e1cdb088de89b2d791434a3fe722d896aae046daf4f1a88cb2930dfaab58b1b9e2086e4f0ebbf2121987e0924eb35eded269d871bbc74798a4ac3058004133b935eabc7ee67ea11971439ca2bd1139bbeef1d05af3e9ed4aaab353e2f051619371b560c86a800cb82807a4f4b203ecf79d510ed4a426c5313d6ca9b63c9b24a313e3ba932648e8634e8f24dd5df847a142f0f50fa74d00c32c3e3b060d8055cbbb2d277bef392cb04092460b65b67d8e851861ae0a3890d7f60cd598a3ea35f0785a50ce7798a6d80ee477fdfc8be7d3eaa8384b5462f929b071764459d7037a250e140fb178f53b6996e3864efb964c769229f386a39bda7c19fd7aecd079d8d3414474fece84d921f6064e2d1dfc1960d7d7a6fecaa4ed984ab2ba1f386cfa4a28156837004dd93c886b511e34a91cd9fb39d81a2f76cbf0d1e319a870f3d592964e097aa050069168b05eae294a7cdf1a53f3b8767cc049dbb6c26b4dbce3904168abcd49434cf8ab379918f06424231156d37e27587bfa75f173105629a0b462905395b4564010a8fef93c025d44fa6f5848f5c2bc9233c88dfcd9bfe80eb4953c3cd27be6968a4262cae67b81cf652a2098727c9bfcd73288c4d833843258014d5636379ea80daad22d6384a2fc252e43fad4d10595e5e77f4468bc3895591dfac206d5c0f6a41ac4936705c8c6de5ac41b0d91b39d6db56f89fd7316c34ca7bd57ce5d6ba0c18f7c4648e8286c4c89959d78143f391d07fbb645cf00cf9e982720e08b08eeca85b8e17e536ff18794ea930cc0f9f155608980949ca9cda12f18dca9e0adc93e2d83d280a2ab9d5b9715075009b231d6d0b0b0a2120a57a95d287dd621c63f62b108dfe511157aa7cfb8752694e3c8f1253ea59c882e09372c22a94068400282749b9ede59dcd7d5d9764d6a2e916b5ada7fcf80b1620537eb4a3cb52a76eac2639ffbfab0e1c95f36ee7457b4773378065735ce74ed704c3ae9c485ee1d6f82c490b640f114a5614bb9c3c527601b52d3f7f082be94f32d3fe104eb87eb2f471de6e291d9a3883f54608733841683063231ae6ae0123b129b79713714f26e411c1f6863a5dfcf59f1a6ff9f19f2b0d3d98930bd5e80792cf15bb8d91777915b9dec82c374f09fd14963e23578eb49b0ce7ecc0c4276e23810ac362f6aa9a2da310040b03e025e5df118d6c536f3db73f2b5eb844856301911a17e26d999cf8ecbbb06be4794382d04e6fa101e9c578f62058c7890b71f81fc63d7b1aee6eb936dac0c0e57f99bdf2aed5de382328f55a4c6bf40966ff1b2c917bc0982c6eca10475dd9423e4bb85784b84fed809bcd3e10a2b6b9f10eb4bc8d65abffe816bedc890d8b0b3100fb854d5e8d3c820fb39b9eb8a38edffd520c721159f8bf72798cb1eb210a9b8d2bae349760f523bcbd36062276b50777e2a8ab50363fb7682b191baf2e9b28583b29e680df2c439909021c56765f8de368261fb6f35b11e02c7de3f747fa02265e80d59037c9cc2141c6a493d9897ed536ef3515803e3e6d204113ae7f7cd60001fd720a167834c0187fcaeb34137e6ac7e8b3bef9ee3b23ee6b0a94f84e5249ef69178a2f30d35677ff886687b541c21b980171db29e133b7616bd83d62ef3cf61142cb87df2d73c19c45f0d9920a011d6846cfa80b0e1dc1f4613b0e7e600e529295707edca89d826157de7d6fe95e28ceef1577cc378de0e6722d40e5a257883e23ba8eca8f075219da9505899457cf0507635a41d291d2075654467bae2e4b2fa2328f60674b5a1191e3676275ecedbf1794cba87671c6210072687ec03c6c0f4ba062ce0641b68cb6f9b5dbf46486ef1d38544f85e82258cd9f885c4f9833eef923804f90d90f595f613fecc9260983401805facca979d9f8e07536d37c11a5b12a7c2a213e0b34921494808dc0db864cc0f61986acb105a4bf95bf44aec8508ddaec383693baedabc7abc84544f4596d6b94a5af730993ce744833354b2e63be79f962eacb4d98549f848b45ca58e6828380c1836fb749b5fb46693c987debcc53ee891dbc5ed2617a878774a9585b05bfb95f3af07e7a84ae9f55f2f225e117a443d8b4ac9cc400885f19457279b001ea5bbfe9b51a7cb5fd658a983fec956eedd7c2617817c7a891b43325f6aac9fc48ce6d8bd7de3227d4426eba5da2e6b902a4b54a690ae92810c0528abeefec06a3b98605650cf59ec4deaf3ee3a865800c033216dffd80bbc8f454b93494d0f9bf0bc22c734c52c0be1fcc682e40a349228a4b7c8bade1297ec47061a93e3dcd51fce7134b7f641e644a872a3639de3775db6b6c51048628b0193da02e9cb8a5dedc44e450cad37c78e9f147187387bc351cba77e370b247bc04fa618ed0af992b5dc8d1b88190a3129c58610e275241767f59c28c5e41393aef7c67a44ec11d48725e1c126b6324857416e274d22c2c3fa3242fc384064ef665373d1175fc23ea4e6b2980436232eaae8a6f961e2c14bd578ebe870b0272414c9e63a9362f1f203d1f9bde405fe698af24439ffe6cdbbba8c69662ff8403ffbfa379c6982486ed0017107ac5cae12b3ffa6c7c9b1500fdcafafc9a0a21bd8efb5f4c14e63df64e7d4dde9e6dbc110b470523ba6e9fce264199437cd2baf47dc2fdd657c5f1c0a5d874d9341c0a578700c94fb423fcb0bef4035b028b98e313d9658c02f335c15f8a974910ea229b0a1f61e288b6120450ef9cdb40362071da5ec7cc52ab932eeb2639a98c3c569cc50f6235035020d0dc45902b917088ffb3a3bc48e30b756543a84b9627bfc82575e0c9b3137ead9f10c7befe701c00520340dc9bb8aba8a877266c1297514b277ff59b9564c1e520851ff87c4c0c98b58633fa4c58704156cf2a220f391d9c0433a57cd6c73137dfef46d07d43919ee92a71ec659f7869868849203bed6a5e2ea6a59fb9c70f3ba42ca5d86d0b36eebb175d664d2b0f060c2a6a0f0a8ef816238c069940448f174039b6ff9d85cffd3ff592fdacb0aca730d0b6eac4ea8d5c4e5be6b01a8c9add35fa41825b3c2ad45f96e9d8aa762a1f8dd1ac38fed76a83e20bd937ce000ac2dfe163d507b5ad20601e89e2f869a47ca486d52b967ed71a4a0682d1352c0d51f61959abf0cfc9341ec8a6a9fe4971c43e9544bc5cd477a32b73fb2a9ec221082c0b902440564d0a13c30ee6b8fc26b961250bcf4f0e4cad0b61530fc57ffdfa9df90656585b394174c471df31288d8488b98c5ee6cc4aeb43d93ffd46f781ead561aacf4b5ed2540a4508fba26dada99b1979b85b40fc381f3b3caf3226fbd9608cc620eab7999b739616e30d4ae4bf02f6b5929f08d974c7745e35e1c0b9cbf0c0e34d873a4fdd449a3b52b427c019c7868a3f2e72fdf20626de9181c386bbd25bd3283051e129327d5bfc51fc17c7e1893196fc68430ed7423c274c925a299fca9f45c377b90a75ac72567a27fa46c90289a993c4456f642b1dd8116c48242bb187df934b3040b12e0ec21ecbb925bcd1554a872c92f34ec39ce4a014d2e684d42f7bfa2a23573119905b378fe70aa877ca99a3c91213ac52d2ee09cbbc93783d2406430891d82ef001ac5e0d5641bca35e2b03cbe158d1cd5d669d14db2a68d6b44177c8b72abb036ac4edc528c4da149ae37f9960c89a7cd66b82f07c23fd0212478f831bf1289f18425ee880aca7c7878516e033d38838318118a2ea4a4d0fc3390fee70ae4d5fb71218c1224f61ab488a74f13c5bd1fbde82dc1d039352079c463547c12e92cb15468e88c6b7cf1a4f62c0179ea35df120dac593a0e8f7808bde137a6105db78480bdb919fefee3226c5d490aeb2dab6cba62fb7fdbd6e78f063c6d7c1641eb7c69ee81dccf24c3bdb7a1e2415d15468c3b5cf1f81efed5e5c5f2e6faf3b21cb0a2b6da7f08547e382fc45cbc204ba886576b1ebfbd76e058661c5d80b0084fcf2cb542af6fab2a09e29e32bddea74a4008979f32b906062874b4905393b2239a144dbd9de90c02db9b6d93ab1aa8daf880d68276f3ad600947fb061bbc25c367618b597e034b450cb76d228ed29776bb84d78df203d0b7a57c30c0634b5122a0536c5d0c90cb7c30bfb5da96af613aef0cc90dd01b1489184332cc1d1b601542f31964045431eb8ce36e5894c6e397ca3f640e7ffaacc27273cba61b07c9365feefd36a6c2de259c39da037ee8ebafd8b6ad2333f2fa4d397cbaf497c5efc79cc7c08a38ca63af8dcfcbfdf0823da37915292763fcb9b5e41bbb91ac4fd856b354901283b02820c38e8538a610439d60ef78e64bde2da761eb1cdfdad9ae22f28c478d54ffe7e155ee1bdb041a4d2c15ffa4c6685dfec98fb8b0e9865c26efbba75189fd80c9c28c75cee88ec5805574ac80ccfe83b56ec5b0164d77acef34028b629dd14c30ad680efe2870f8d7b42ce3eb4f95f511e04a5bb7b15b23cb63d2895ebdabe38da11b28ab77f606d5e34139e8dc78539fb7da63f16140d8f638c8720b24685ccca78ba9a5f915f5cb538b65bc6a35b14672273546ba1b68fb0296ee640368a021ced4b3d82ae146e3c23506a01e1f19c9a556638f27444e190a822eaece11b85d73c4345c6015612e753eb7a944cf2056a47ee686fdf8ccd83ae4ea9a7a4c27060b5e4936238e798365fb78f9069f8db00f2d252cafd6657e9eabb12981065ad0415870f6bbd017efb3936659b02e0993d9e2cecfd963e26523d98409d0b1204de99c8c94627f25e7b182bccef4dfe546739486d02286ec85b503c9a409c03cd759cab73dc9e78e9f0e172fd5cf59f39e7a295d521f0c379eadd2832baa2efd160ab5e4f823767322d0f5903e050863c806001c7b5c2536d22b84ea36b3f8eaacf3e2514d623ce60df896c9f0369bbca3d3685ffd25e567b2086b40e0799e85d5fc0ccc540b723e19edc31bfcce84e297ee2681fcd7c42cf6a56d056514a60f1807a2c0e30ff0f7c3041dbcc3b27b261134f35293601e30680e8274b2ad196b52734720b1f1b523d0d298b732d1fb6d1ee1fca88714b460c7823a5272b60406b4e35211a8d162686a36fa293723c466deb861b4f4212a799ec7340b7384f9d679c44c72cd52bf92217761c4fda257cbaec1b62df6ba87185446a82285728b697dac742c63c235b60f26baa3a7137db74f6a844f9e89b86af559def027fcd5fae8f63e5633a153ddd6e14a777430c10c6dfbc9a0c01d0c617deeb5b19fa1f4a5a20fcf252d7d4a4a538e29f79afff1e63f96748f5bccb97a9aef1de34e9a88a040cc83b3bd057147250bc2aa4992a1203aa5eadaaae7561d35e29df36c7c388798d3688c8e68c18774f655ff8970a7e7ed8f84ce2c4e5f7d386ace40740a2bba3b86c014944f59178f9376aeff4ca061a3b70e4c240eb516606cdd65e1478fc9721283ba954cfbdb457f8b74be616a604e3e4aa661421bb50bf20dda1dd015f2895edaf799198da528765117b004a826d6dd6b4b5c5cba0c5cf333dfaf2b73a9803ca525e0d89ace031357bc4497423ce1219b3fe7c69de219b238c00989e13a6eeaf71d526acf6c4116818f67f2e25297aa75670a2c36c5295e9b5f92cf9d732d3b94ae97ff7e11107986b9f1d4773a0bbb8ba2caafd7548e52ec15c17c675f21e37adb35531e1a714973a615a8b6e53e3ae1b5ea203a1c3b5852e0661c0515254d55f1634ac890900e279c7c22947ef3797006ef77faf8390206df7e76c092f80b09688054bc9c083fd5a010f0cd8ab78aa423eefb1814e564d62320bee5aabc742c954f8eda82f22484b1ac896020e5a0df21f80b776a3720a3d06a264600502f882e6e8a2a36e76592482dd5112a8212f4c41edb5fe575f3e3858a43b6129f919e9ca1a3547851472d349bfbe6bb34c2ac7a6864fe02b3d620212887915b396b1e1df0e8298ab3b1d9bc6a20ab77bd5f4425387be20eefe476cbe4f8317abd7e71b5aa06186cc2e7ed1b094a6e01aac2edb5f32380ead6371958b8047a70ee462ff5d20ab9ae78e0154232d9038431c84b97f34fb1656334cdf24cda4fef83cda988868646d38235d1edc86181456d89f7e704af2f27dbad6c1eb2611ab3074a609b5a591d3ca7a1f5112b95c24b5f73fd8408881d25f9b26403013b48f051f78b0ad16640ad0b1d278c3c33e71079c65ee478717cad39cf360ecc97cbcf760e96675191d45c7abf652ba2a4d24794478fbfe051b7fe8f08f8dd73fe96fb361e9dca4f99a59308b37c06e7f5abb08f78f98d8c47187006e8d482bb30253b4506f5748beaa1ddc0ab922286685cfd018377cf00f6502a0b6a870c3680f21ff3b5a4438ff459ca328b9c6912b415c6b41bdb26ff3ef36f6bc9e36867d401c2166ee4f1dd66833d0a11e8f0f65ec88dd9096944249cf9753fb64d92b287558c3baea42b748c7a4f10bc958f894badd62aa959a068253fcc48b03f0e6f097819702507708a0dbcbd374916c569b3c0466bb259050ed0045685eac7bbbfe4f71f43f7e2c3c0916beb9690b4ef65503edcf4d10aebc3986cd2f85307f20465e46ec16542341e18cd7171da09d3605f2c324a187fa00c1b01f5ee1fb3ee039253fa8679e4288e5dcc40b328856ef17ed0d4db1cc1462d8f2d0e386e96941da7ddf73491bc86c555774f7f5bec23b72836a673bf4d9b3247c04322820d7a2e7a200bdfd96fa2b98d7fdcb389d52d9ca9ac52f8d09392d48a7059314d8a47f27f3c824192d802134abb3e86602d66800a46d57a9079c242215409d7f01266043d57a2d2a287f34557a44598dfb25c06505b0cc0d5d79c23ef69ecad40c0fdd7fb1b0401853de73accda29295179bd7cd5065eb8f6f97950ce0df3f83c40444191330031ac71aab0739d0d44f069071e4ca66c97f12073182c876d69f3541b6ad2d12b4ba3ce65c22b540d0e49be9220155edb7d29010d140a7da46d3253ff4b202be5edd9b3703b4e0ae0950186e750429522e70f44b2d3b47b018a01a5450916f9ef93acb1f3a21fec07c7632764308678744d6906fef2e273c77edf48abbff8f921428b115b2956cc9262b3d733d2c173b1b57757d65af6385b3c5d4e33ae006c1f8e424c99e104a16a1f152395f0abbc6c153abd56bcc8021ce8ca5d55c8f4962710539039f09a0536548e6970f441c800c51bb08a8ec3edcb73522d7c10db41f191f342429a31b5c8cc6e5d3ee950d4b36fe31cf81803798889090ed453b13a978cd276e75d171524ad48883e97695dec336de2f954eb0b53ce3a5f69213bd394c7eb790d7f61aa078474c4fd3d00a875e5bf56eaafe46b29bd64189716f360d22acf489bb1509d11ef01c12ca94d3bd4a359c21df8ed45ae9c3241c5da16bac11586169dcb803f6f72df84c699c462aa3624e2acfe4fa861510278776496bf8acddcca36a92e7f1d66f6e386bd93ab2ce25d670fb80689690e6070ab6168cf47d4357e66ac5a76b91af20ab1aeb96aa6a5e77486e56241ea263f6c87dd6651523b3501978231dce0976bf825b6a5360e16d6245791fe0bef819dc8587d602c9f428256021af08f22963d03cb493d6aaa46d602d5e75d87e272ad71e2ee7b4e2bd79533e4f06a137f96d650408163a5c571f48f3c377d3a97f89767fb61642978c20c837c287c0d7939795ce7facc4a735396bf5d201c0ce0a467427d27f731189d3ce5e105dfc7b5377d7639ebff016468077c1642cdc8b8aeb2aa82cf535f4bd6da2aa4ca6ab02d9ecd426e50dd34ca82c9229de9b09ffef028def56041b1ab625dda3e0f32d9ec2f13377284f5934e67f8019b9148a5b8d7402e6f84d4a7e9e35cb05b09c778630f34222da73790146473df163a0053f07ddc8163bc23c8985ba81ae567c869461114a1189b40e4ce132c732fe3e1031a7ee6d0a204a01b0cbbeabae8aee5a8ff5acba9268eab08e4beedeba5b466780d3794a9267359ae42e2bae7493dbdd8ae2edb01f8484bbda20c2d67389c80538e8731ad30b41013e4dfae2d446651bfb90643c562be208586f6f37bcc6cc69e64421812b97b77de4c8493c8bd4855c7ec62bae3489538278c2fcab169c8234605ddbb212d466b28ab99392d6a4e3d7f2be9bda1bea6562f96718e05045f8d99ca1a80b97d02470f2b536282bc7cd218b1bb901581aa7b6be1629167164c01ccbcb667ca7d7fa13433c53421aa0103e9e026cdabbc8bde6f8905e73d0d9d8a77ea4d86db90b6ef3bb1784e193da6cdeca608a2a42320e8121de3cfde804a1616510c8786a94d8b4e766bf1adf610713e68936491543b1def42664f17402ea78a55de87f697ea8e9ba30f0ad301027ba3834eb0db9058a8e56d1481aa2ac0dd96cc28ff6fa831d3d1261cc8b535f3eeff6176e93fc3546197a19902cbdba3d764934960c7918918a746404d34e8c57ede161e984ad6f2c6ed46d8d4a1245122fdb762b9e5b3fe12563f0c85609068bbed90b4bce15a245b91106f6acb5661dbd431329349a6df9e1aefa09101399e367e5acff0bc7e503873ef6636d85e4b203c2af8f18416edddb492f85811c351ca08ea5ce1e65213834617fbf1cdae989eedd4ad74bbf6365eeb91daa640f81e9da582a0713f622f910013adfca4f8dc6c83d80e3628fc00b5065ccc076f6dfb0693a499a0fa97ab3b5ee916aec7b8fa53ff463741996d4829535491f93535292cb40db91c1f7657d75e512d2d99907e574426d821ef41c522a4ce0b4e5d62ddff0d4a054c0a9c2fbcc3f6e364ed701b9b9b884456a18e8013cd1b91a5665a44634ad41071ea9c5c1994ce65fa8d9491ba3035d92f36465a7b27a602b602f8cd4039c6637f4326c6109d7b53bdb44a8a4892e080fcce461876101e3eac977debd64a193b246d7674baecc2b9e69491327037f5562a9ab8d8fd69b6b655c157a9e01677bf8212233abd5510b29fd2809ea4f5ebaa7460bc01ad167149e8ceafceedd5991525b42f609fef0adfb405843fe08a34e60ff8690854827b9e2e40ce6c07e63ceaad24744ecf953937103a65f73516ae1638d11ea928189ba9974f4d08b14b9d5be80c536aa966b7cf8e7327925c9caf1f7c6d1c6badcba91b28651bc6712a8a62ee67c0a56d46f8980c23b1b06c85a0d39de07689b18f22d794a04d46544d051d400398782c5b9d3f0cb4466e401c2178e555539bf2ddbdb9dd53c21637a3739cd006443e309059a33501d54ac312c37655897695fa331e4d988593e75abd5d193f66b3314d15e69501dc0b2408fc513c414e23ffcd928c30ba7059eb5652c0aead6fa081cfdd06d44d8948472ad0ab88680a4974dfffc44d1b033d0d7fbbecfee8412737741e9f6a404150e6d56c29b1de3502cf8602d32a1861dae6d277f963de50ace8f6d5d5f9d5b0da78d30f9797b3de6292eb29feeab460f39fbfa8c28db0e21273433f4a88b278ecd418debc578a279770eb86c6d0610bf2215a957aaf14954333486158d850ac0108b26077ed07c55106072df1520a213b493a26ca9e04d6027aba826d717855083b4b0360554a818a25c8b8a416689350feca6b81863c6a1734dcac6ccff6f12a2b449505ea66b98c4966c39560ab09c460b616d80e6de9c000772e236af4ef6a01fdcbb4ff44df550ea76f43cf6a5ef96d10fc3d1d853e7e30ce1ccd86e2340b937bbdd00008f943c519e343707420b9cd0597bb8df82924663ecda905eb99ca549f68bb8ca21f1481d6c6a0828a1193ae1f87e28773bd43d49e5ca09dff6aee8ad92b4e5b1a013133dac743784ea810dca00c4e51fce2e0503d29f43722e81c80c64ae2e67a5f51b4f21673089d91b7781b8eb3bf1fd478b97b55095e44c807cd136ee91e738e66d2eee85d656629dc05221683ac66a25861aa4939eb27b3e6fad62316a520fadabd6ff6b8e69d0344a3e1d2170cfdb04384b82fb774ffc4c10ad7591457999e20704afe6abb346598b08694788a25356af7b8778419290d8cab52e4d1265a8d8fe5e041497433cba83a8854a8cfcebeaf92065475ac42120e297cfc5683e06d94443c03e479ee637dde59aa86cd61a9410c093d456a024ca05d3bbe2ed459f72e4cfa0f63bf0190390c8f5540b9aaab7d40386cbbadb3a7b530c5a85fc98279c0a3513072443868ced32db64f92904b28200162df53f304366c3f21f48186542ae689b93d38c4367da5ca550d592964f3be9c613dc24bb8a8f2f6ef12cbeb7d3c8245fe7ecf34f829b0095bd0569ba7543cbff13ac19c0b2fa0a5bfa7f9640074cae4d9981f67e17dc74d179f192616ac80415c7b9ccfba4e60e4a09b20a57909ce1a26c49047d9d9fbaf7a6f05a08aba088e31543b34768c422d889da533994fd585474cb999f8184ed69af79caf2f6839a6c451230863d697c0ce7a7695a7619bbea0dbb3240f2329e3320ee40903dbf50aadcb96149abe6257ae076109fc219fda1cd842921f4f8b82219b7d095add71b045894105a785a4ccc9974f83868825cfa6cf5207df95090de71767045d947a6a2c7625150bf550cea2066c884641c77bb1f4adfc3a9416d42ba073e08686afebc666b9f3bb09f33521506b0cd29aa364b1aaf226cf5d37ee3792e88825f26587b9ec6b509f6e4ce014b98376d3c4924da0221f4d701f10457abfdd11de733063703bfc4e14c779baa987cf82885ef1f87a0744c5a391723a052d438829fd44aa9b1c5b436bc96542f64b1ecb4255df45c13a30ef243bd8f40f64aea7d11a3ba2adf40578672995e772b87660e6120ccbf9a0276d6183f246715251f1768bdc355dd70d6ec3529590780acb046efc69d42dfef60afc943a312bbbbce90b2602a825ac3cfaaaf39708cb02a2426840635b69e2f63b4d10ab2fdd3650955810b7a5c6620adf3d5705400d6eb6d675f5692a3da6cfd8de8d0de14fc479a578451cdcc237540711900f1a463dcf9dcb88fddd4077104eedf08518e9e8262b5c6cc68be1080852ae7290f8642e527fb47c7fde8b74ebbced8945153b61090d47fe8f50adb935f31160bc56b504539b0d7771bf3adba8a70509906f776191f251bd197af5a738cb2ae0738a6e512159c89ff6a9ef42a3a38f407c45f265bfcee47a73de4d30ebb85f0c3e3327cc96d16a4fb2994feade329ab71a55a7932fb8422ea7058d4216d808ca35f55d3ba8768d0d5e3c82138e57690cecfcb3a80046fc5a20ea4e068fd1f1d473ddefecfac75fdfb035b77014acf226d18eda7c783b7cc7294f708fb4dedb99bf34a2be805a22e671629ea05bca603bdffc011288e67d83fbdb97a23fe6fae090949db65c77aa4dd076ecba8a95929cc1aab23491378d3e13bfa98996247848acc9ed2b921ce28a5afddbec7289995e93199bac0f4392eed09a51f81626f18ee46e027f403847ea2e4da725438b3ec95a370ffd079042c691e180000876f5adca3131626d8d6b6e3f8712d354d7799a905683b55d50a97bc394e61626498ac4566230b29fcf74fec20be0ad2390fb185d3512527362a7dea98f7d27fb96a7d1d3c59cdecc289ae42d225c96c222a5f67407faabb5c570bfd023ffb97489ba3e98a476e25a8bac9c4bbfd2805f2d0f03c0281dfaf4fd0a2564d26b266ae6233a55b1a2cc38e88cf2536e1272a8d402ae33fa8161adbbd2d3e85a84d9041bb7e106b867d84f9fae701563f48b237dfe598b6dd015a101f7230f2d52a93cdd3e3dcff9f215cf469d1e8fa4ce29ccadb57ec8efd90966eafe279a889f39daebf40846bad2a21334778f9310ff0c87798e9ba4b50d30c9223c23953b7a70b1510c5007ca7d722f076c404fb268993f2d23fa5ee8034b29285f5051fcb8fa05b528d78ac9caa650d84247cc86ee21c028c34090d4f44d2b5ce6f7e5d16ee04ba8e3568e7675788b8cd450cd53fa4497b8f1d4ed073f4d6a09a4d62cdb7829b6a547869c959fafc8458eef99a6f8589c7fe30d273ee6fe048741d47409f691455b57f57af04bacdad7f3399669dbe8e47e0437461810cb2ac3b9096511c94e493187b78871e2fefaaa18b9bfc098403d1372623fdd856c0a9fdb17cae91ae283813ede579bb090327a26a76906a609764f800b97ed3521c4b0cacd47add4ff65c95bc30b7b655c6eeadb7dd2d284f718f335894a27b16a4132801f29992582113ead2346bb94b6420d09d56cf2338456ddcc506432b05e141e466cc830016e168d7a09adac37269f801691f50fb8bc3e443208e6918c87c0bd3e154a429f071c41f98653f029cdf4027b61b1a09c1d97288b68f25fc2540f37d963a3a6faf6e735d8408fefaa609101458f6b526c7fdf76aef060cf761b52f861c0271c517c75c3b6c80474dfb130dd971b10d438135806a46725e8eca6b33d70381688a7b40eccaac7f48150c6065f262efb52186f1a2f2d2f35771059fb4b7755e14043ee99a5baf8130e6980c41ebcd35770a2aa97003b66d4d5efda636739432bc0320d8dea65f37747f9d75868b50c28c3768b0d3a74db74ff3c5d67ff4d46b040c0ff389b1ac662f5b5a27086852bd034b3c1c406b4cf9068cc68a3029f82995903435f9cbe60f7d7b6ecf6342f833fa77e342a2889882b2c1a3f36d0ef11f29d5077438c2acf2012f7e01765cf65105d825e15a8b5b2e170c4ca37c6506a38a4c304ab1bab433662d841886a1273398d6bbacd65b094b3590c2030ffab14469fbccf7c9481f125569e711320b9362a656a3fa1d02411f371578dad6a3ab307df5dfdf2fb60b730b7f00ab28f1a176d7db4ed1deb6f79ff46b23b5c0f0d58bf240dc8904af29980205b09ab309e93286e036b40422430b9cd485f41ef882bcbb3f7634e88520e2413d08181dc44d319c213af29dc8a1bd744edf7fbb8e3622a6d8cf3ac37921438e121ebb0311d83e2ff26c02d421be8878096212d2ba9863a11fd8ba45e36224b7987f67939ce04c4e2817f4db2071b09efdff469d1390967f8c2499ea8b7dc42721ff841cc11ed2125ed856d34aff41d3184f7588c482dc5301575ec9002a44eb768df465e34d265703710dcc72a2390d4e81cdd285d3cd6f377b67241f6ecb0dac6bfa994986a1e1fb0fbf71dc344249a91567024540dead42b5b70d5e96b696503e9114133fb737fadd20a5f783aacb3a9b40f9fdcdadbddb6a99efc240f0a71c98f6a280f164c2d08e9a7467d4a21927f165b65f969230d6646158f62c9407828067d47c9a8b6ec9d88227db712f02e046bcaef8280744dc7a7a67e552ce0911684691e125b7e26ce2ded73424be0364f811a2ea4ab660c2f9ba6b621d37039eb7f40ea323df6c900d4f332ec584220196953f85d56df0a33d94ce7df9c955fe1963e9a80c65ee01c524375b7af4c0142630a09023038df30aa25ee1cb7ccbb9a056dbceb237c8f0ec78f2b5b05d3ee4a62c176b9e25be6c39a42895778574099b0a89374d637a249166cfbc153c1c6d81a86bc001a530e51401d47860a5320c7bc5107b1a167ef4274449a89ab048d37a4328424d9fbf9800d5e3192e54b0ff0b725234cca1320f1026ef385d6cbecd4a8f18ecb21e57abc36f984d619d6404451066c82a4d667537edde03cca4903c126e84a6bea8843b3a653e6a46af435d6a1ae64a5722fbbeaf856de68ea635436c026dfd0645e01d90262e4c03858952005993b9a93e2f03ba82887781bf6ac0a9c44b99a947ec3e5bff349e33cc4227d8197c15c01c1044fc1c2de0fa596c13ed645f2bc35d5af52469cb039121c69aec0e076771f71633365be5c83e4038c7380af32fef2178edf26ec04e390ead1569893b28ed912c0789d25755ecfa5c46e32eb177cecfd9c105fec2f76f868b47e22f3a6d511d975b3680edee145cd589b2a5c7f268e717baaad0de67bea505d1266dd4a975ff2e0fed6da237c359b6987fec7853eb6b6ac3bf7fdafed340330618f3effb11d5b6b7536b035578bb93265dbf47bdd2bbf638fba159ebe6ccdc8a1b8821d15c97243ba4ff773cdf64f338a569f8b6d6527cf3c954fbb525858776842487a49af6ed372b2f772eb7bde16f2cd294a309f951417d8fb40012a897f34bcd44de5ec031ac611e013f6d5e726b858a700b8417587bd2ba2c09a8a5f4ee55c0ee219bce2f5e3b0cdcee2a99581a14724036d98486c0c45c3f5db739a373e0bfcdb2413dd4e7adfa408db88c0ec92354e0b0bd80ac7a6a96cb5fada2d6067f60df5de92d2c84086cc17c0c205e016a8dd2c21755c487584d07d1f2bd3306dbeb07e2fc5bb556fc31e2ba308d54bd93f63a492ca736a218a537ce78f3e0bc12ced1895ab6e8d4497a09e4adf9fb62f795a7318100c349cedc27ce30fc303b57c169ba29df62a7fa0d269b1e194848efca376bca0cce49764a41817776f100234c94b7c779970e6e8ac3b86d390a10f7fc9665f91e2030a3cd2a97b11ee75458bbc2b5c18e47cc2c19788ac832f50f132adfb3597c6e6b07cd5f77d35b1397d6628450f3158cc60b0f346b97e269416c8863f453e69cb881fb0537d9e36088fddc1a77862953c916a02577791538985fc4ff7ea6f3f0e555209da50976b4dc25490f70cac17e72ae3429b661b29fce6bc02e95549e9d91fcceddfbef47b3444251d3b542ae51285669296393162c309d54ab208426debb031962204e095e3a3d5bfe36f25c54dffc6a4fd558f28ae5f308dd45ca241ab188ae52e53716c8f54e208e18d6fda767899a509555c16557faa6695fc499ee82ac391994f1a83f12f168dee7513bb25d681148288bbbdbfa36f045568c6d0f9fd45280d90e08b43f072933100535f62828f2e64712fa09b28edf70573b98ce16b9b60e724686221b8a967aa9bf58113e8a976c646ccbfb412526884c68f725e95206f1b0bce6d9a8b2353f3c9e64be2fc0c2f17723a347b859fc3a45b8746775dcb4953ba52734ad0997e459f246593b0d5d51c14896da44d4951f40206922beafe10d699d42389d43e3ec247fec4fe7f9ef62f7ed00e6257664850df3fa96d28700e8e851aee9e47768a8d7da2dbe0e62be3fdb6a48a3b36714baaea2d4f70451afca44feedf74bd1da75c15feeeb8e52825c4f857eb529f986b8b6dd4719f354385913a07a0642e653bba73eac4c982f3ba5c320d71c0ed9f15298ad9b8503090331d81c4caa476375c6711acf41a467971a3869aefbb9d4f8a29b36be0552f2a3adecfb73b4dd6324beffdc0790abe23edb4cb3b167ed375c48730781a2072f2d0dcc5ff0d167131ecb958ff6197fbd433480d150b1fd476ee609c31f010fcc611a077725dc3d06133a7d803b10f12f4c9eb0985043b8a6dc9d768e65dea15d789aaef9712a75fef0d8446f0d2349d89b43fb247cad003dca7a45727230dc707f182a97443c1ed3a8777017a383b396cf25daf6848a1f2ebdd5a003e81596268b9c11524f3ce30a32cdd7a48f642067d3e83da059e522d3fc9e650f3e113f9b6684019433a063fddf1dfb6a381082af42cb2c2e151bc2d50d24905a62024e3f4ed738c2a225616dd178fcf72e4954ebdf57a2ac6960d9162092434b16f633a0b652fbcf9bcbf154ed814738a02ae1fe47d4a88b6c9f19b03412dc32214725f7ffa88e97044c5819bd72c634bca84ce1072a387f29372b11ac859f0c171bb7437e15ec79b49fb02899ff6f6906a189114846c85c85a1add892509c86521e4e04e8c06004c3f7f235ba4c693efe72820861d0f1538e7c44e5e7747b19b0bdbcffa9e04b063e975d68f96a63a43ab5c386e197a7f646f9fd59057dce19dc12bb07e4448e7ef7abbed2603ccfc8de3991c04573c3bd76b146956689ce4998efdb530e2482b136d9ea27a846a7e26d5fd0f7a37d37a92e2c2a300ea341947fb5f568e5591f3bf58d510a805ed7b367024dbd958f99df3112c436efc7236cdbd22ce6030b82d435ddfb787dacf3f89c8a34df11f3abb65a575a90b6edac0fa4f7c9df1a480b99edda5fc35ae0b2caa48b8b64ee34e20e4dd795c633a3a94cba52f044f14e4ebb39e85a62b8a3f3953ba1f6b4dc9d2c84c5862873e1acf613fbeb68ca070100d3e90dc63e6778e6e2b7e0a4632abaae8825b357755c76e2b8008357f8be5fbda9ccad841217f7369d58cdb24588f166661d8101e90d528ca58d7996da7780a056f8b8c359d02a5dc4d1b29656c8cc25c7d854993d643c469fb5c68a9029466b0fc3a3a9779bd7e0c9afc106fbb275599b8c047907126830718e90fcab6ac19f571c462a41ce34f54c61a7d2b8d80e91fa420c7f3fa0ca0f942639c2b8d77a661e9ca5ffbab2359a034a1658791da9ba6b2df103dde050b66ab3bcc6ab35de27446853a2115973cf23ab277f25c59cf183b8be416696106ca214c46ec7f231022e04afffda5d01fe111c2c8e2f4fe1b134ba005c76b9665736e63bf5846f3c954fb1a055c359dc61513f167516c3fe46a4900d0be69ea5a07f8745c183c3e1d6815a97f6edb2d7bcc47ffaf3c90bb69a46867c80e5abff2fcb9a683db6c2557adfeb739473ab1ae5847b33523a4f4d87ce94ed9ecf7a8951f8bb79b16bf5c64e8c4cd845f569ddb9f65ce0f8c2e0b2c5f2de5cf33a3ab2c0eb477ee7e08ba53d36d8a4212ff2b599a31e8fe81d5daf4f19805b8e1d046cdbed54d008f32e27e98812b6b21c7cb7dd643cbac0d4b051788465ae9980b2d25f51f0234086fc6185a65069c308d87a4f65c2dd4c249be3aaf8811f31e84cb37d0d7497f6d7ce365ac8503084694a6672fd4dca236a16a49a53cd116dd3103623f2ecd4984fa74ae1751649b502c07a9ca55bd1181526495dcecd1ae6483b5028466a14dd8ce0e0f99025e439deaf5cea5f12d3fc0bc75667ac34baee49e0699b84c71753a994ea8213c5311637283f2b379b21196d9dd84db4c9f66b33277a346fccd413a3897521471b66039cd9a9a7730fa89a689ef040d0ae4deccd5370d6ef66134b25d08e7cb20df3d9b535a058dc79d341af19d0552d3c6564ef85781c388001d3c33246313e15b0b6a2571ef22ae2e1d1fe4874ca20ae200f963b28dae83cbe9b70ed5a8ab388bca6932833f77af717d666354aa269ef99bb44cb919e940e9c8c636c560c949857bc1d2d5f961e1de24a52872dabedac45509f1835704fa84ff50b73a91964ca0bf7defc666cce2c03d14438c217c0e304da7cabfffe36e13d70146e9cfadd919490fbbd064336a8da6f1c3454627fb3f1ddf4e675b3ddc1567c8366c91a004afa9caf91b752a24518ffc7a0ea0b9180115283f60581f42d5ce57805afd73462dc165dae22fd5e1486cfbc222e0e1a72c249c8963a868facfa7a7d026da1f3846647e5e26746e170298375e08e982946d0f78b9d0b34a9fd31671b13d98101d30d3155378d4c2aa9c30fe621a8132286f32a0f74efccf41fde6b5bc1340a83ddd3e0dd9db78b41108d51f38f6ecbc8c1ff1189b5d6552f0198737e1150bba11d4eaae7dfeebb9c055e871a1db869e1ed0fc8c4936bb028d2197fdb6adbb0f3bf27026e34b105be97aea4cdc51388c8f1dbdc9a7a2ba62f4c5f0d2e3cb5ce44fa44b03f99dc7b7881b470ecca353ebd8c97f429aa7cecc7350bbc78faaed6a755c12bac48baefec538b4973605ab57fef18d8c1528b3e98f4728ade9b9a245ca51c324ba98aaf7a0dcdbcd1073eb1da049e8e27ee12d3a1b97eb9bbbe8d00ea1d20cfba3c6f07cf01c9519dba031c25d4637a19c6319939c345f6e0fbb4cd18ab3c7621c4c98f8b00f62e90d85877a08656fcd16e60f9a057a8744e3e0029031a5bb5a9571c3f0a28a412c965679b1a5f2c48b871d1e4db9b0da00ee3ed4be027b554ef1d6e67739c824d9610d39864103cea51b720879e286c3ca739b4bc4a9ac2e88aba3bdb7d84b8268fcb7d74b91801c09c339d7431a69538c2a61977f5a9c24b99063076f649f90573b38f407667a2d4af1d790a35efa7e752e2a4ec0eb6b4575079242701ec4aca6fa38dff4ee22461deee442e458248c7a0605e9cbc16a07b4e815351fd570515be96e9c01cc20badeb5bebd26f4790ed0b8a58ad888661753e82f3af76177cdff65765950f02022096a25b0dc43e6eb74eff49e96bf6889918d9dfb0478eb98206be0eab954d23cc151c5224fbae168a32caf1aa311ab5e92bbf27168c2e4c1cd8b40a0467ab58f4c6ad0ad18afa728620f06a71582cc22e0c96bc6d952f66a1d004e48b5bc696094870925aa352663f7a775d1f46591d9e52cbaf62160b5bea8c1698ef974624aa804e3e0c643a24f6ddc3f6cbd2eb89571ae8de99d54e90c0cb81bf3b9eb2d883904933d04284ae815dd3fa8e104add83a36dcf8bf2c3fff69f55881d01bb8021d413f63515030b800a907154332264a57222ad58d259af4e602a50acb44335cd06ea2ec6b60685a85a279a0be5cf36dc52f550b1fbb5b9b2a3d60246e4d9077ee29cd8b679840aec13350e39d9089bde2f2a36424f73cd4e340d5582ff6b070ba78e45e2c8bd18912834584211b16f2f5df1bcf5e0f93c04367d7febadbbd949bdbff40f6245ee19c37cd3fff34225ba4e35f7a215419a07d5204f36b494aad99ed8805d3013eefc44d922edf7c11d57b8b995bd86e9acb4d8afafdd7db2fdce494be3629144ce5b7fb2a39de4105526cbe2e5980f012ab6d28170b43f34b594ec33da22e9b1316e4a5b4430d9eeeee4a0546f52c3027ff21958c732bf6889eccc6b1b86f6935517ee34980ef60d93d4d635b6c7f790637ac53e489bd63ddf1f8290e884a7bbf63fb928483ffc9b9c591be67e3358b15d5d8de3d425bb62ac89224f4e173dd704a97fe7d2a281347b796d85c6f9a65fa157395dc4b1d16262ffa9b251273e323a9d210ff1d4bcbac7dc1d6f7751169e326ccb6d6304ddbb447b8b3276324aed887ee98d2c2bd001d21da5a2c268ec423393a6ff718e9e066ddf5ed769136021a2b729f6bb3c63b8d688d2baa8c1c347faa95f4259d24a7f852ffdbee37ae6eb61aa9ca517322492847e96c3f17590fbf4abbb2e3b0e545076fc95e473262c3070f24d305e984d43e69e3681930f5a76a800d88b307462f600f6877c9ec7ed7428a3408504f0fd3c0a3d4e725f837f8bcafef117c8416c2966c97a79d9a01a0895871e42abbdbbd89a0f718170e78a131d04b09373158acc96234e255564196b90e36b2bb07769c0961ec0accbda53a438e0faf7ff5c21dc227c10b9542636e30e522400bf660df141838b41feac1ee34b0aa48d2c23fcad6f1e40af6dae41d01f998a570928d0ae56ac38b6081616b01b693ac8e356dbc3c56e76894c7133253134017e07de72f946058b1f2522e1fc9d5c2de0fba20f8af903882d8af9476e69384cb8f8dca399d2628a6deaa66c8598735bd6a1dddec9d79ea4669bbdeebf40014efa44f86052b5847954e2e5c53a9ca6dbca51160b83bab338b65aabe0ded0b62a9da67e14d40a52e2c3c12f4085e36eeb37b9516393239ece746b0d269be8f273155639265028e3703d1eb280dbea4c2bafb5fa3f0c969142b10870f86b22adcf01297c7c1b06525963b08852da006f71398685eb6c0124d58a9823c170c9b42bbadd8a05413f899ccfa6faeff377d1c2b7664d03933975d398bc67487e6f2da0f5e65b1b769fb9e12e277d84fd75cc8a0119a39554407af7e1c22a8cc0f0d6e6f7217842625f01e0158084ddffe23136784bc0b306c8dd06f62821b8fd66986c0ac1e1549f72e6a969191e97258c31bee05986d319928f22be759e49f06c0f4c337cc54ceffacb6fecbf9a03174cc81607339b9c28cad6c7af7d96fbf8d1b499926a7a7d6226d9aecc6b0f652633ee9eff2e2fee11d2d372b9a5afcb382585d53b0ea652ed2ac9281017a851d8ab07e3104907e844b287307e3d81fb08826cb9c99c35c58d3997fc67b6d7b35438d6b8a8f0331c9486ee05183053e09c985726c7e1e4b68ccc525b4fe24193b2ee763acc65a41fbec1b66d7b9f7173efddbf5c9ed9c69ada19babcb2c0a35b943351a22e8e78c6431f78d8f043b374d43553ca28953dc2ceed11d3fdd3fb96308ebc9eb37a826f0a64c05cd3598835bb641f1ab9c4743ec2035eda983af21a67973ae2bbf00d49c0d8820feceacb3aa0586045cd83e2d0c092b6e59a65901828d8e8ae2a48d91bf77fc53fdc21dd2df830228ea2c58a0b2da005825a5267dbd5f7221bc31b80d16a3b3b9f101f5c09968095365ed1093c5f66b47d8521bd061665abdebd07729a971a78fbf7083b0573e9a42d8b1cd7375ffa43c282303c6894760ac18a01a7c7fac7bb9082ef3aaafb61df27da9baa297032c1a3fef5741802a93bd5a6032d11f7aa93cbd46900ad55eca28064fdbf3d0ca932ad3926db72e9e43c746dacaa7e33211c23b3cb0ff6eeeafebe9b06d30908ca998cfe3adb2db6e63230b07dfaf197d121902fe0a0dbf2aa404d0bf5994d89bedf38cc6ff4f3905aa2d9c909a52f8da9db4ed384a8b1798f18501554152dcd198b199604ac0c328e7c6f07a552960142e280c1e8e26a273b53feee2e90c67c159a812ac63ca6f3f8fd54e0860836e263bb1fb02a95c76af4f4ac101255c18fd8b968bed9f47a96415c1a72aa5e2dfa283aadb7ddd0200eb2481054a114e6efaea9b87cea5a6a1f118f90414e27e42a97c18cddefcbfb5a137035a2f89e49f5ba9ba811e2166ee50c56c04b8b1c0f8e353200329de8f1f0acbb436cdd99147aa645c857c6c9e773704116550f3c80b33328d63ed47402d5f57b9c0d767bfddcca4cc566b5078b69c4b61a33623e8cdeed84bb7a891f8dc8d9400af22bd4903c175bb2b9284b2430ce2d8a5a415274dec46ee6a8773ad318145b63e7095019c6431bef32bb61cb62a6d77792e23c095adcd2cdfb0b5ab7986bbce377ae52bb957becb30e7741cd1877f451e073fa0c467e25f497cb212e583be8101678300544160c05fb88d2d0318a4c963629febe9c801042431e9566cfba3c9c61c0c2dd800b5dcf060095b34ef1692d5859877bba7303e2f3531bd0614e4e4aa24dd517e96a144d0ac3ac8e416f4afb75a0b4f1707ff5301ca77e4302369d70d107f8276ccc07f7ea8062b9b992637139350315617762e27bc543bc3702be9e091a8c9e2ea5cfbb851d74ca31dcbc3d2b3d9116e1f05dcd4a52c84182f68230bbe16a1a1001d86b28477891ca90aefee95d994e477540f26a7095884e1e7d7dd20d37ce88a55d5db276d555869abddaa3026969101e19eeeb5cda219ab551699a0243eae855b003cd844b38897b6b1e0be2da431c265031be7e322c13f9e38005b54c0e52e50045998a8bfbed49b165e914983c89064dba05320eb9f71aa58fef0a34e88069b40b043092539972bb75020f1a7d3fb916aff7a10e5cd948ed65af24e2a70d5aef8bec818a802839bc7c22d50bc4cd383145045984c5c3375d37d5b350703c5c5d59a6b519de0c7887a270b8b217c00c5e5e6065a2faccb20b84457d98eacd1f7631a934c6d91de9589f7538c689b955c0a832712f21493ddafe6b6aedc28226e928de2b9175b3fd2b25daf8fd8473fe9560f4fc1ccda762128e9d156029f0d7d3606a25dabe9eb9336f36abdebc481adbef2393a4a75d5e55624c047848bda1d8730b79bd07de6cb5a8c0013d00e6c4cddf0966aca25aafbb0d71f8adb7a8098a2bbb0ba3f6bf027e614d984eabcaa81719a908001de243870ced9acf393f62c0652a63845e72985a97cdebd4fb424d3dc4de4e07576e85c179495caadf2d8321722ef4145276d50f3b3ae2149aa8b15a4c7a8bb0435690ce7b8cf805ed26e759ef6f09734cf7e7219b881bed9768aa0f34226f05ca325f06726c4044e885b8947df89fc1bb06d4ff4af14ac2f377b3a172a62da80b5b373e3839e163b4e84782169d68499d6bb3162182ced3340cf16035740974940dc1ceaaaa26fd3dcf4672267560c5ee92a33c4007f4900e192bdcde35b46e3bf3e96ce2b3f6c3dd6cccaa14ab25fb1d745567f571dbe63f5b6552e8bf9d24c6e37f727e23b1f9100804cda0ba39cebd7010d7b46a31260480a970599b5d7d8a901b1519976af5b50f3db6ea2beb2fab510daa79fcbd9aec60c9cd46acf42afab50cee9c0dfdd1cc34028e00d2be7df71be13725933a4368106e74180347b4e8ed8df5331a9d5c9092c6f18ee79bb302e7410541b6074977f0c31971bade802a481053700d9f44a0392b4e4ab2e9e976e3a2e43da5b93a562dd044272cceb701d40010065b20ffc065d597231b15951a6d4373e8577bde6d6bfba576d86841000ca255cada6cd30ffc78fd832af4caf1650a3c6c1063f14d7cc2509fa8c20ad6ca540bf41c022aa53fa598d062e1598fd1f0760b826019dbe4f2635ead64ce6354954dfb9b99422a44697ec0dcf7d051421ec14f1e1b6262c2660d764f24fb1c64914390133efc6529623b8ad082b845c1ed4f13f435304b4498793e60405d358cc9a8b8bb646b6decb3393d655bcb741b1e587c129b1c162ed0f2dd29aa9687bbabb589980ae870e26e9851d9ed3d204972f6be7efdd9d0fd9921191a8b261e96faf678c3ad1c1eaed8c7c6458bb1f7cd5deb69437c80a7fece1cc435f2701b0dc8b444c1cb16188f904c6122a327d214914864a6d2c2f55f49b9002b77260a55528beba253058a3cdd898dd0439dd70763f7c64d47867d83a0ab4add016e82e8d95673862a50909688e8b20059fc496b8053d652e0bbf837e35324e912fdb576e48183968b0cfd2fc3c19c6926ccd6e27c6f2524f9a7b69386b2806193cca37d4736ae886b0757030f324c0863d24d2cebbc72331d691655cdf5791f7381fa957d23dde53c1bc8298f5701057100b3611996f3a58492c20fdb1a75540af954fad4e35e38ae2d8858de924618b0e599a4f389ef29a4e2ae07d63a103e0febaee4d8e38c571fdf34b97b74d2dfc58f5c730a78e3d9e7e9f2d3cadf3c6d5d47410635ff13b32cea947fe4f5b799ef060df21637b4e99505044dbc7f006327079fb317050dddb538ba64b83a31bde6a2937ea16275732ca39569b630eb7fc12d5f97e830822004e9c3bc2cfdb94c83e768a6c8a57548602089e66fa663765be68efa28a107a1a7bd7391a5ca0788a1e8177efbe53eaadec9f417eae37c5dd2365404dab237136bfa6be0957f36501ff194e87636a5151569604f19b637b0487d5072c3c40e385166c2c649ab88f64251d2e7be66c521d47b6ca455ef0e27b26129ef4302a41d93bfd54dabf36d545d10576bf692e532bf67fea038f881315a44c6f8643e8e42b372174a5cc9a6a6ddf5981dfc90a73ae5aa34f032df963edce072222654676b69c15faa6387311521037b7f0b75cb777f5896dae2fb6aa61249b0defa7535f39210926c75c37e12f73d1e868a0064823d1cb01a004550ef956b30049dee150714ca2709c43bd9fffd4edfff1b9ecbb00dfb8a646590f66a92ccf5790a209d7e77e7ac6a56ec1a9d0f863fd9420797508c7d235785d442a1710c2637657a4fd91349b92a161646b47cda347d652190f70f951fa1e9ff4f4b2c2342000f6d204ef690899cbaca96842c92c499dbfbdd7af509fb36aba4692d6b7213ab92b7725994d35a10bbef9d5e717165f01555a5f0bdbda672f5d05a143c35766d160b9657af489f05ef8a0c09d42891756296913ef7256065c871dc3a5effc071ebb847d179be39406704ec7ae9544c0106969ebb4a518dab285235efa8307273a1806cba21a127f443196629d92174561ad5925a2085ccc2ddfcbebff78c2b63e463357c99c5c6db12672bd6761695e98c03e1230840f77b8506fda0ee24f2ccd7742ea6b45f8a5758bbd1d3e58b20fb59ea3f2f14d55072afe8ffdfd161f65660d2d30b67d9481ee54b7dc6d5f0276b33114e3a94104f0a8324b8ef4be7cdd475335ed45c8cfc58a2685ef822d79e676e2a2d85e0a286ce265ebbb4b36003749c05d42548ac0cfe731afffe115cd5c699862ad85147dd1bfbe58cce12b1c0f7497ea0113026d8e79dca1135d6ac7392a2bee3c8f92f8b283f7a0cc80bc9325508be913b0b6554d47232ac7843ec551e69ae2906df53fd3785a75d13ac5fcd21d27a9eab00ae74e877cff13b8b13a4b339d601de21a2ce79c89afc7dd9f43cf784f3d07983d0937236639aa34c32a4d882d8d0da71b4e28f1e6c6d4e0fe28481d21fb8d061692456fe7d3d8a919affdadd911a0c51367b75abe58476d28be47c9d1ffeacba1cf609e0b2d06101676d0bf739b93ab77efce3cc5a9176562ed6a74fca98695f502f0bcc18cb8c6ff42a598ac5ba3d1888fc5361f1ef888fbf2e757ef1a8a309ade853c9e972e3b1668b6c4da86130545a8e0afdac1f51f00dae48027bcb38f610d5b5ab1db8799da52d752dbd64da6bbcaf61ac3c1a8c2520a1ee722b73b07b2aa98ea04497d4af2fd021f8b078e6e0c3de21b7aeef42b94badc41177cc870f2c772525bb3a93f997a3a70d05b9e8e737bc3f803415a31ff753d15e93e7329a6e812bb78526250b970b3038e17a438afb313015752d544209ac6b1f374dc1bf48652c796431f29629856df2104fce6ba4887d408e04f221ade4e20d0595048c88e4556a205748f8b408e8543ef26f25450c0b3e74da18afbc833344e6cfb7c7bdf941c8afc97fcc1c964642e29c6470316d144291f1f2e8434e03d40f02e30f1d0a81e34f27ed09b29f3990607a85454998e75db81bd2899d1a2178f6db5ae67a7a355a791819f9b6a1f684f63e473e90bb3656fbfbfb193a3d486492d3710cb232c0996ea955c7229abf11b1909757052d08289cef8e086814f2b07c0aea337f307a8bcf017626a18921a5c8b560b128a1240bdc19bab939834770479edc57c3c862978fe219b227cb8a5481e0c380380d2137e559c7a64e60269d2ee2f54dd17ba418e4d754fa7afe9e97abbc401d839f8a45a669ffcf3bffd01527bc22cff1085f2607ff253649f26b8ad4fe30aee692d528a787b15d54ce3b2f8c0b56ff7a87143ae17a2a1624d444d7e4b0fd9c5fddf7cf02f490d4c07f338081fa371a5d45d2a8cfe4c95c150da68c524c1df69921442fcd70361ab4144a5793f81921a7df5ee8700a559625081e349d4de9f12fb088b36ddb9d6909d6c88d88c886aa1fefc92af4dfd3d4a8b615e9f57686e0fbea69fe3534db7d192767c30b427ff12a96b09d3f892fb565311e6fc2f34b49b97c5a4d870c44f1fec27877c2b08f28c4256467a7b652b7e8dc3a2b8e1bbb8b0f53db0880e2a1caf4b980ebda822dc4782a971e4329f6ef733c6efde76f8491478cb5c582afe3d7ca2175af6a6e3464195b4c6e3db8d0b5fd350740cfb4ed3dc79bf077a6836200ab964d9dee45ff5a89d83ea901c2b01150fa3174c018db563828322f08dce6aeaac33acf1e5986f852d0ac39ffd34d3da1b73ea3a1df5f126d1eb41d603e9a7aa6b0424ef71d101d0ce1d19976ad690f842ac5f1d695b7a6bda59d5bc587f3c3838493a9212f2a15c7d408f4bb2dfd7ff627d6ee20252b889c2aeafb6bfa2963b2bdd346798fd6c3e2b3bb7c50b8fd6996bb7774a88651daee50dccb28d4cb365b1caf23c9695aefd3c88502a0be98dabe37b0889a169ce7f506ff8dfbdbe5d2d09629b9fe28ea4e0098ef95230a1d681653bd4c175d5bb8f470250236d74ca03c69fa928199670bc5ea9dd845a92eaa41d0480b23330b9aac15faf1d5fa26f9a50e38d3518e4e93ffc072a1a4cc774694e2019b48b8d6529e78c8cd779473d6e62f55fc38402416e185353022e136a53cc045100331af72099cddced45cd966e8d5e5bc343a0a70bda2976b40d3a2ce5828fd8cf63b83be8e846f2057238b040b40d203901766e12df6b5c8e5aa9b983ee95747858ac60bc9d717b6151e930528f4ef1d8ad3a4be3b853f1a167c0ebaea0c3a52ad4585371b15c0ea758ec3da828106da9f9a7b8c769612ea2eea805ebbfc8fd4f9c0bcd01d3bfe956a3da4d1a607b7561dd8ea289ea14cbf789bf155f83d87bd4f9d95b83e5ddd5ee6e4a68726bd946d814fccf57a97839053a8ceb59bc778ad6388dfa7a7f374f739ccfb2be50caf3e29d6cbdea077cb948e54aa4a54a9b78522a9f09cf6b0d65ef338c6dfa6acbc1673b12d9e1d61d8d5ad10310d0a216885fa446bb9b27b3f57fde50c116e90d2045f627539de26697bc2c347154505aeb7d009444ff66b132aa694d0156529d32e79856f46c6534f00f840659e16f824c469b9d658b8fb89610495142defbd52b0c3129acc890d2368c4e1ba2cb32b5b78455bc1a6a3d63b714129c6962902bee449491c96b0967ad8362e1cb1d5fd1026a14d8886bbdc89c97fe3d15c3913fb034d77c0f98672b67567d7e3899cf6c0c0841c4762393df88d56d080093d1479d6fd777177ab8771376bd470f6df0226cbe49ace5f4f5af584d5f0ec37cf9c4ab1db263b4a4fd9c2f0329cac55c43336e961d909a6a4e56e9befcb416a2028924344b3a47dda88fa91b2763918ede6f74ceb2d0aa83bdd52a8f0d54f52ebf0d942dc9e237ff24623d2a04694340ea7b16fe82cc5dab93baca4b80664185511b20a5181604914d8f176570e3512f265a9b4d0a8cf5ebd98ca09be74ad197b0be7b1f665396c1f4148631ffd30e97624ba6344a7e308cc71246a4f99302462990f398a7e4d6e85c5ec251a90e504605fd3015484596af4e6385d010e936cbdb494c2512f3a852c0fe1d994aa2097488072dd18d92e1c190c886eeaa76dc9f39ae6d0ba2abc50fcb3b1c6223d19ca8f9bc662aa613196e6272e8cfe9eee37b8bbe134c977327c41e6842295799dd4779478355a46e29a2d1f829f1131ac6846c410070f22cf7eecd0da97e6fcd1006be1734aa9d4e12a89aae153112f77a134d9966cffc8a2df4e2e897f7d7bc64d892a3f9c32980f8adb0c3114cf46b04e9f1ea8b41bf765a44d9b1b6e85e6ca6bf52740fb8e51daf2eb93783a26c866e1aef93d5488b83445b22b89c78ba5e35226f855b3ef3cc898c929caccc4f4c677734f1bf5c737352f2a34cc90902ed7748f0f27acc78098ad8c7a8b2a1191cd0b07e7577e8cecbf0af33fc4e12322f52f5eff745ab1d8339301b9ab0a2669dea0ee20f0ef2b67965d1209abb36aa746102183d65008f89c3540668062e7941031946e286238c86c3c8aa1a07e5af4cfe5d2d77d29e00891f1e32c64a7ab853bb2ae747321c72dcf08c863d93bbe91e47c784555e32a3965e35fef68a1b2d9a5495d52b1486cf1af0655b0886bfe353b52a87c09503330d6e11fb6dc2c00786a09572af4e68cf7ae053481109c58f0dff8f3368a0226d39e1897142b4ea17f47419f720cb94e1c365cb5d993773bf6f47209aa2f24091169473db719098547dc809f0419bdc37506a661d77c5fcad78dfe9619aece2e51a39a366f20e4a5757d890baddcceb49216d5402d1a8fd746919ad42cdc0db321424627795ea41dfc4f99d0cb0a94a5204cec9f9a750ed94bef02b8bda3b374514e4d922bae5a64f16f9ba6b9b9d07d1c6c969e231323c72b8882c9ea147ce6f6d7e3bb3cfc2fc2b3a2821b42f3dfa0a7b18ab1104b782d573c39c6fb043c406bf5c6f29a8da719fdd7ede9680266583cc5f83d00dd61e6b92730b09028d14e21140ebb69a3aa9f81c6ec5154cb6f98764eb39db62e13c4273eaf9090dcf28e004cbe3417674fc28c449d40971cbe5a65e5d1ee2d5528f4ffbe45e2122f8296309756fe4438aab461f69bb9db512a133cd48040a63a1e8eaed1812971aeb5eceaff8586dd99f140c5b612bd0dd94a4c54de8d06c6a698150d5e4bdc35648750b048f4fe13b5cd85775fb9ef7118114b6ad621c95ba71f4207be462940ce80107fa89dbf5d124c3abbdc76639956da9a79e4fe4056b57e1dff06b6f0ce6dfdf33ea1ffe94669c6eade570d611cc88d3fa7a6e91b086eab574282bebbfef2d56051e7aab5cfb0fd2a6a13096d0927427571ac11e80868555ac1c7c3d58d76215756c585e206bbb6307d9074519e4c5a128b67c04d09be934b7891da3157ae52f80e6dbdc67dc0f00df669cca63cf62331cde82a5f2ca6908a9355c7e46c3a928a9934ae6eb036687676adef17bbf3856a77c5462abd56e51fac8ec4ad1da7415733edee91c37c6057727d727ff10051f81ebb020b2f59def0737f824b1a3089be850f0169b4eb0430e774384e4f8295e2318530b34672c598eb61c81738ad03a15c1140fbf580dd2cdc7db93f0bac9e64db87e8953c32945364a65e9b7a3e9028b0df642131cb5fe7cae6bb64030a200838e4ff2a22acb6105d97951b51aa032e049048bd66931a285061b45c49d625e8bbefc4bab3f0128e8d689dab5efbbce2c3b49dd7940a96274a28a1fbeda75aff031827b69f1e2fc2e7db3ad960637728d84f31925be1ddb7d8ca6b047c77a09820c62a5ce15b7980d93e9e9488536e1a3e36ac833e36211f6d64ff6ca12e5f2d43070243ed4a61a1cc6998052826105147dff46b1247ec8d8fc3f99875280cdbdd4d96712e06247d79295424d03ef030939865fe4ce548842d2c7ac1168cfbcd825db3d178345301fbdff4c664b050faf2f746bc037d4a6f6044c40d13782e903fed48c0c78bbe7b758407ce079446db8254b3272c1fd39da2ca18680af7b30e4a7b4402795fdf6c8614189907896f3d7186975d7ac809d796ca9f9b11c22e15fb3df3e914665005de575fb5f3a9ed647dc8cac02bccb2180a1d58a45d3f32b21da1587e5d8e558e8b96d28cc49604a45c5a1cebaa4c08d41256ca3f4239a4719f4fa43b593746abcc7f70f67a7fedf9167a422f9527357331db771cba2f41ff9fb3a7205a4696090e1140257f8a1f2f261b2fc6efb9edb6f5b7cc2a8bdd697b9237af1ced623f6022d3da2d504eabdaf3a97fbfcfdba6635cf6070c0a2710315f982467d23793f121bba09af867fe9164c68d33998d995658519451a77a4860a9a64127106bee9a3f01681c647a16ef8c001f2f067ba7007398c0212ddac6f5df9724680ab6dc3fddee9869090c6bd2ba176529fbdbaa1c473412cd7caf17b14335b6972e8bc4f4eac77a096e6b0f307eec5a4fabe8d5b6a3eca13ecb0e231faf0bdd58507a2ca24ecf3bef71a87beeace66876659e6cf6b61fb9cabf024201fdf01b7e7611b49f4c75fdae4a8d34cb4cd7df07e047d955e352029bda289df563050ad3fcabe90975749c1226480414b23cd0c92541bff7d03871aa3ad852ab632ed6d25c7dbd8c889ed028b7729311914b2ca235d973026f6086c312c263a1af45e69a69dbae6a79c7e478db3619e895cc1ff69e3e8b15b996fea0d24bbdda1f6137dc12bc2dd38269160a92cc2c38dadd497cd60c25b41ebd9b7348cb26f2ef57bfaec928eabe5acf1d9f529dfbb1b399b846fd557bca4fc82e376a35ddfe9b7c4d98fb2422ff8cf64d99b637cc0ab4eff34a16a3d7e72218c0af5969a84bcf8acc287729e1a220014aa58919a4bbb07f33369e587ee3cb1ac28aa789c57d6571fb2a5dda312f7c7a866fe4838de4b04762e03e9987ab857e9f9e0854b742c6087672d0cd5c46fa458d3f22ce0116237e6085d0941e141f5b490b7bdf785f39b127158de547d676d639fae6a5e6387c3eddb9aad21de550f1d0ea2c757d527b94fa2d28674491e4ec6f3408937d648e79fa990c2784916d1e3bbe9290e3808beddfc3ce577d9b84d256bc987ba29b6f9965b4a3dc001ca9ba92228d02e0e984d1d97abb09a23bf672d4d004cc8d9e7762523866dcb775b278818cee17ecf1efc15d92772a0419d34f12dad60aa8e731ceca437204c61d832c12e9fe86867a5b3017c2d4f7921222202e02e0493f0f81567710492e9e8f2c462573347dfc37d2830152ea4c568043c48fef586a00c9739442cc73153ae80fc021675ffa688b95d34990e6f425a5a84da3007fa7d9a7454946c1033f90bfb70f51024c9c4cdb0398e30a58968a321dc59b67e2dfb7a398729d0a0f0546303239c625578062d7d2a42eb41b4c8b7b87b90a909ff35b993b2b4f4ee1eeba3d8fcb59cefb3e2277fda105d2270eec663fb57f167f82e31b4f37309a5ce71dce1e2cc092dfc281cd9f440f0fda9d368cbeb07c7f03de3bfd0308474243fc4682954255b20013c93f3f92cc97a342fd47bfeee450ccd458aa0b52797fd808e3add9ad19b2b49d0b4f7230769b61228d165be9884b90ab279e2df931476e8dacdcf8ccaf38527690b555b85dac29237a25cd8e14e09a2b185d6db171f0b50eb95f6db2f80ba020e963f3b6717223844cc98f31cb6a1b22fc4c270ae37ea2a0812ecf611482bebf1572e2608824e763ffe351aca523c4f738270dd4c7c75672f456e79671f898107345b6a6fc2343bd057b3b1a241264c7bdaabc48019c421cdfee02c101c5e2dbbe747769012b449d4f57703fc9bc25d9551c5292fb42026e83dc798071b84a34d65331dad092364c2fa4955c26905874a0e147d86a889436cfb4c2329b6abbc88a3a9eb0b43c9463740d5918ed1f8d7fa1c71b875cb316e7cd3c0c127f5d89bc835f18b74d06372377e2a819899397cc20bb78b3af4ffb1f65812399bf6e02493a49c3a2445a1c6effb3d9187e27a1982df4a99d8f30df593595bee44c8f1c2378cfe4a2c4aa9ecfecc672e6463017e24058dc28bc82b8a4dfc5347eea70a7f31fcabbb6c1992919135e3ab2b54279f7b6b6b8487cb5993f26ed89a82f07e66456f01db9cf0ea70db0e51bcc8a2d9e74e63cf63954f513417cb6eb14609764197f99efb138a312fb7ec367a72041ad7743c2b6a64a7fa94c7f5bad54fc76b992ef7e63844ed5c0477547a00b4f37fee11d8f5b19bd2f6b3a88006759cd3b00fa69a7e4b19755236308ce8929eb1b1f0569126030221150971fec14f70d2e603ff38d46dadbe72630b69b156e8eeef6f58efb97f4cf3e0f7e2cffc39d63a858ad3149450064f0c9d630ae99af9d789acd98b326066610f12b329ed6b69075ab360b8341fcc22e351be9e09b12add66c3247c14c043f6132a04f77062c8ab032023a369942c07b208e6266c55b4b67f2c4a526a7a91e18d356347814f530475eaff2cb01e5c8fa3eab1aad2a714d26289617e3f16d4f7d5ff6c2ac31a184877db3306c61467b6d91d447adfb3ea8cb0c3a57026c3c79974ac8736fcf10d5f24f182a830fa44c1e8efc8e59d898a5f9f7b865eb2651324aa095a7b966902616d356263b4d35fc157d0004df6e5cb5f78c608f6ffb3a0d8e9b2ea4b202dda6b95e4156ade8b012c251b1f873b6bd5521a3d119c28622b4b5703911fcb3f0772b3e3fd6f7d67595741b3c76aa069e6da755a710bce5ed93a50d821c4eecc561c33878aec238a0b52116d35adbd37612c102ad24b981fee6ae223023f8388785c55a99315a88a7c76ec48d3660e1b981b8446d600adfdea7c504f0906a79fe1d7ad100cfca7174b4fa07dd24a74c01e43ff270d033ba2ae06906d5dac1e39ede4a1264bfcffaba9deed528706b344a278c2c2910df482651fcd3db3bacc855c6eeefd66e053538a1e07cc964cf2cc89c4a3756e0c8c6e5d66e5fd9b2d3d6198b324a958a88b7ece9b18223fc73dafe1968c4820413c290e17eb0ccbff1e82568625e1e4e851e8ec62bb0e458c062b5302fa7ad3034219e915a65d7d39c13a8458aafb82179589bf1082e64fb4a0b12a5c7f6233615f03c20111b96c399dc99827be31bce60a9e6bbe7283be66c3beaebe4099e73557d7e23dd9d0f84ecc39b1144136bd0ba6b895ab82ff3e020b414991777c18b2758c1c99e22170488cd31743661c146326e853fe203fb30979924568f2fa9460040e67aec3a6a24bbf1c1969358ed46f87eb8facab4b2c24f000254492b373e6d737e25b455a282a6a6948590a539c9d8e76cba6f97d06ceb9e6cb76cd6349b1c2e249b5e789056639fc95ac14263283418678a8d37870500053093b2da64eb31e012fa75df89646fab6d89fd7dcb8a06cc557a675f3e63354423b59cf000f1e49cb87180dd0efb01e5bad29aaddb0b91e018faf0f546fa92b67110ae5437bc524fc68b8906513f23b5acd473ae641f829ad693a461a9b555b82b0a634387976931dfacd37cab44c8c363f850522877ca578f541b3199e7fa34bb89b979d4a1500e5f650842e66e76f7302c5e090d7d76df2ec4d638401e620eaed827a7965c9d99f4f49ac1462abe615196f72bd4439a03da27a55c5bd61d8fc8c3d5fb597d50eb0baf41c5358bf17b51038b6c3c9bd21d6dbdaff2ac50f333381675d0d90fc94184979f1e6e88ccc1a6ddd7da7e46b1865d519ca6149f07c750a829c4e267be41950fc7e96b6aaf473965beafa93df70a5d61791be45ca649d8dc2dae5fcb27cde39cdca633b9820112d54f4d4f29056581258265918a980be9388e9bd55995d370ff40fcfc8f307b7e495e717edecc049bf7acdf63379c6fe391c2e6e34df8b68ccdb3de95db6027f49f9e307c62ce4649daabfc4342014ff937c24b927919105d30074363d0c904710105c316bf6bcd858d9a9e2e1eba9d3c2b3d75a549efadd0a848d606c94d4b4d476989fcd54894c7de22abde55aaa8cc25c6a279b4fd9f9834392b9872c12c166f33463bb844d24eb30583847119e4e30c59179f43842a6aba1428e93f135dd09eca068f3674fd5004f3caaed41f3fa8a5b17f15a98ce9166748e48b5c94ca1472e9e9e6d2d9b4aeadd51a5b9f57768b0e85a81df661bf9a1ad1f62fe9d090d386ec76c11e38059c8cc0993fc5fdf2b9969cacfc0994ae32d2fcd26b36641586161067a54321046a24c481e59df43f0943c6ee29f327f6ef2e32947b74f6e5391da1ac37b7ea35753eae76d5661a05f89bb5e1e2cc7652cd2a8f43a0a86305852d6190179f8547de66b322f309e559bf54a4a96e019a78ecbc7a6737db2c7c9ddf9e85f9e018202128b6b70ad09a644bc5bf1a8ac3678632bc8e85e0ec19b25aea0c384a2635153c56a454b08653d15f6dbabefa1470c62e21e1a398e57b5a31237bbe4ae7927d1fab1695f3095a3074f19e07c01ff1dc74fdaceaf81494367664a336b72632fb73f8af41cf2bfcb0fb0258f6a4205670113bd4b54626a183fcd69637072c0d90ea45cf7deccb988633765c8b8eb522b6eb65b0bdeab5a29f697acd5ff133f58b4040cf6d5817d1253c10a327c5bbfb02545b93d3d5f4f1134b275eb6e1780226be1976ac2a5bd86b183ee865cd556bdd71d8f437de55e8eedbbd55743806c740231873f7fbf9f63cd7d581163723b21b894e435777c910165b0bfa0692321cc89e536565cbd570df9be0e3619cced2c7b36db5d5497cef2ba3c1ea4bb55006d95122c0449cba94da3c535eaf67cdb3362be9cb9e0dcc38a0e28ba11d7744fde92e7d592ced34fcfff78573721d0fa0f5811287dadad0d182e6fccea4344036b2df0bfbbda35dfa23f7f33b9783a0c9e1dd0528e035c3c8dd7f50808eb5803a3c24c11305a7912bc59f2d124f876d3418652b507a67fccff88efe896dc0c3ad8e6d45917a30c4a7463b5afbc62603b5dc41d5fb8640fcc29e161fe9466b53ba2f9551a88af54ae0679ecc1db42e2e0dac52722a27e2ab1ea8f6224567b152d5cca5f290f289a9c1336597c6e389bf2a7a079fb7cd4bbdac2d6f271026846d6a64c51122d3e9def1ebe9dfc79970aac340f03a031eb604e58999aef15db907ce15c97d0d756da430f55a8fa8f5663f4f6fcb07c60be3e8af6fd2432df3af032b6944fd5f584c98eb487c9245a4d5ed2e6221989db62aeac0b9e2027024c3ace8f2fc119e4d3a23f3be4361c19c3a57702b44c242879ebc6a8460592f727258f1dff5d1df56171a7ba42fc5c1d4db49fcb19a4d303702eeb044921f38983a5e1d06f3d12ec4a7f95a89d9dfa4bfd40dfc6c09523da96dc69f85ab0d357455f46629d4327816264ec617aeb409de0924afbf4e91a5000b8bc8407bebc566c22984d7766d3e2be4173a5e1cbf6a1cd558a79cedda8ba3439d248afb5704e46ae6450f5c2412f13f44d19e8f936f882ca0fd02d0737a5b47cc60c19c25958f634fdee5b7482fdd94656c4c6fd90d8156c9a95c80b104e4b6e9a38925e81664b5938ee905ff0d44f72079483df6a8bb064aae2457d9c28311c255c9fbbcfbbe6a09cdc7f6450b13d6eccd729566aeea06bccd36a6c8f5afe5b4eaa3cd9c36fb294cf878ea78a8593e348c2927502f3b6e6e40a5785fc3e6d2b9d77ae784feca709b38121e582b3d2c6a3eebd1c211ff368c12bd1c6f9e4ec7647bee1470474e64b8fa23001819648e5f1d5b9a65d0c85e84061a326df8c03303c9c5ce8499819260686eb44cff918ef9d591ca0f8e8194654d707b56e3081dd13d5beb3e6c22fff4f0a6efcaf9d18c8123e0b8372f57afff140251130f8810f6f4ed25fbfac608871d2846690b67729fcabd4bb7d077c27d9509b4012c340610d912be453e783b5adc681286b6e3cde28ad177896093afda8411f3cf7a5b9f2d24c5a432a56b7f9749120b8a0618d2479b57c029978a9bc634f28c324631c8405d2a9190ab0550278217b6d2820ccfd4a15feac45e67482ec3cac48b6f90e9d45987113a6013d6a512a0e2fe1ae7f778586c08bbf782b5d71cdeb0a1414c0692bb9f5ac1229651f6fa3cde9f4060f37bba47b82b969bfe5fb4a4fa82399c937fa73d7dd335bc67481474947b6934bd2db707266338554f9930253c35e1ce3bc90a815921da08f1abb14e1531cb5cbbe92cefb365faf5e6e79c583873c6a6491975e9d123d52ad769ad00907044315e2c1059bae845b10dffa688b2163ff9788f23f6abf03a19f17ca7fa1dfab04980c7d42a8ae7f1419e358454d7ce690ddd0a41a37bdb511a13be3ee5306723578e98a148947c4f7b352f6b812d571839c05ab60be78f1fa1ca6822c0fa8b906292db7f1785fa936066dcfa3c7f89972069dc9a88a217f07763d2d0b887a001dd70c31b0e1391997cdfbd2eb463cbeaca95bf12b577ef9b81c2bf7a3ce9c9911a348c80e4461adf35ece41f8b681ceb4d3b7a64800bdebe0f577bdd0f24537f0ab521a29b0b5a9b7f425aa39f6dc04c0c356cc0104201227115f07afb8f368b9e95ca807cea140664ded6d9e17a9213bad0d4c7d92ab8588afd051255d0b78e3d7575e1076b808149ad5031cef2001438a105d842e34bdd499df9c586a1e99d5ef2b4a90d93c92edbcb24c2daecc712cbe389106de70782ec71290339c453c6bf3b721373b5799acd7b0674d90560bfb878d6694eaf2db8e53d56fe7d4436378075ebd9837f867242a3d697e979865eb4478d5e531253f3ec67e6b652163483e9e29dcad9dac98bb40bc39c558f577ec824e375306b56f60a8ad80e4cd3d4df731d85d51d7e391ea7267aaaad84d191fe31bec5b9f0678656bee4d618ae51c50cf4e9ec5e16abfbeb1eb7fbc7726915bccd559211a9748979fe8b31a9f1a29e96f46c52cd61dc65aa6a3cb0befcceaabed623ae9096efe907a8c111231852ed62439ac0e0212ac7320876dac5c9143ce9020b19f9800e3c1adfa3c919622382111da73d98fba35d2d429023960649db6bccf4b503728acec8c2018a1bb58ae4534a2015bbfc986d66b63d14e476cd7092814e6afde0ef5ab8442c59296615ab4043c6549aed06befdf7a8b0d4a634ea3fbee6191df3263e7e0ee0c76ac00eb53dad794bcb0df8f242cefc39bd7d04e1265df4a7143e46c61e3127ca6a5b473f928b306af39a9478e4a3722a1f26ff319f992c4edbcdd402c2a2c1e3bf2d693f38a5c6d8253e989db821332cb9d54422de64f994728dbe03066d07c957e5b6f839b7e437aa81323cc084a964c58a25bfbf682d7e59b4f1ba96105bbd87722675ca13be33e1b8a30b7eae82159aae554e0641b31d1089db2a75623386a200e8b2809649c5cefdd7505506705a9c162ec6f7a9e3a396b6faa8c953b2377b44e1402b0119cc281dd2cb50740cefc1deb97ef051dbbf08a1d66917b3dcd6d5e96d2fcfd717f45917087d866df70914d0c93db9b7479eb4b31fd40b95355803b275b9bd0c81a1d1785381377fef5aeb9a97860a98656c68e79edfbe833802770edf45635f65467af8eff2075c5ad1b8353a4e2564f0f3da1471c74755a289d4c17b11af408f7a2915a604d9f4ffca76eec0f773a06b5b33ebaea33d06cba6181dddbc9e9a7f632193a67fb536aeca2e170a26adab2c4ae2038fb14f83b9eb6636df5b6325c11e1ddc5972080a9b661eef0ecbaffdeca581f7c28c64f2142244227af2a250686595cbbeac65d2b54be700f2398d850ab00e2d4184dc4afbbf5c8a2fde31b0759ab2eb70d8982a505963a98b4edeaf6f7971f7aca8043f395b9762b2c9010ead6cbd4cded1d3e95704950ff4dd1d66f3d346f19708b82b872c220a702560695f8110d45f4c648ad953c35db2d15e9d7ce90a8fcf66f149799a987187b4e444de3b9bcef42dfc1da6c5a48acadba7dc6658bd46b9a7dd0b76cc7fb2f38046018fe6468eeab547e7b648f3083947832a5dea5ad2cfadf889100bd119ceafa1744fd953cd61627a79f5a4c59584a38e9ca7485b041440f1116c1ed660c1723fe1ed435a68083eea770e8067f264b9a9a042576bc4a245e940924fe75183b68f22bb4107b05e1536d1701b74b1a4970f87548e54329556f3c7ee55b7b7c23266d5a2056b2a17d93f3bbf65c03694541e0fb0ce50ccae3b927ae30b5695e62ae990da21aad8cea002578f17540a087c79d7a2bab81366c08b0ad647dee8c38c440fcdcd60efecc7f0858c587c080c371fdc11f11914fdcfc00b0d96b86eaf021833396e625e63b0b40c1dd9d40b6ede22ef130171fd49188fed728faa176a1f163c6c108e41af830d7dba5c369fe37707784cc5e0595fb747bcffde9d9a6815623f4d1e266fb029061d66e8acd906da6b47611aba3f83fdcbf9e66bb33028ae368cf517c10ccd562691f5688f2d970c2ae20ec6a0030cdb05f7eeb387630dd213eb04cc22f4dc2ee2dee16d470dbeb383bc0ce2879bf2132619d75ea8def8e0dd9fa2203394ed312b2b4038e1ec35c2d2fd1e518033d8e7ab31531a101a1b998360534758e3fdac01a559d554c8b88fc21a2a290fb652bf5f48823f076617726852534aed804357d5d345fcf11b605b5ffce998988eec1e2891f26ad46dc3f105f331d2cef893de43e846025aa7501996b8bfe2289acebd402e44e74214d6022d50567cf50dc4221a15e5c84e0d3999ff2e6761c16004833d3b49a25c461bf1d49b89c5a2ccb6177228c8b9d8caa27f30d75a05f929b37ba5746d662bcede23618c072f5f84f91bb0b107c251f7f9b71f50260754b0d36fa2cef59123da23995151d39ae9e41bdd68ed3bb563e93a02e4245020aaaac91d6d53829e1023cffd7d42ee4f32e14d846550abd6c72bc91f060a74672f2ccf405b26e6cbd48d9ad8dc4f8ed192da7629d5e2ad429e2d46bb1d4a6a8239557ed9444a5075acc69d3bb18df00d9666407012f9190521fd7d12049649f360f306261caf347afe26a4e5a8526b4cd5c318cab4d30fa3003f7e61f755416ea5a03b0a120da3c779c6169d6c8c0a1f73af58c6813db6f109b493b46cd3a1521f064f95afb0c59b2fac408900630c43b61b5261bc90ffbc324ce475f06d868e2545b10ea6b226321334a235df18a5ae07b8af9391656ef1f1beafee867f620d53dbe417eb7d893cd04c50805c6eb87142cf0ad4bbf8c947c52aac694eebde3ca3e08359c7df1fc801c0e90c515d482654031786fb4c06c37255bcaca3e7a69320b7e059a2edbf84a89a120cd604f70487df2ead86f675f32b049f124673cefa446cdb324d2a270fe40e7b0c380def595f51dc84aa416b5521fc0f0f27202125ae58411ba1de83ab2b4573e3fe3752409f3b0659f3b1358000a8fdfb5cc4e4fb11c09522fdbcdb34375eef84d94189ec26e2eaa44a5513fa9dfb569a470595bade3e47e2b9f20f3cee79c57ee18dabec719b89abc74c1423e64fc422aef449872039b27aacf2db3380aaf8f961951217ef50ff31c50fed8b53c8fbf653f013dccb758c77cfa0410a8475475afdcc40d347c04468d2ec067868bf189a961c625a8df2b85c37b1dc4075dbe9f15919f42995909b3cee6a4e12e9dd545fbd150db99bd9e2577749a6c874d88c79968ef0b41b3fe53b00d2d65afa4ae8f97ca49195448db3ee510a7ac196757ba7f8200cf24016924982406720e880d316b5685ff340bb8022c1fa5bcf556e8eaffa559061e769b490018fc12d4bc1a9299330025b796503cbff5270f164efa98c7cca52970f89651f50d2c0c8e34bf68f985c7f6fe800b71e6a9f53abb35cac8777d54243daa9f349a8452b64d594e669459342851f62f6f3c968846e8f30fc623f6facc0e02cba3a5c04eb1271ac32c2af5247d99d96cf63231cbc6e3bfafbad526c0464f730875dd8b3501b407e224adfc1de2e574f3908b330800b78691f5097c5d55cfa666cba2438d7a9180d2e6c4637d99e5b90726de0e495db45f50da30797e73444397f065378d9be1ed00c7493029407212284918b49c1fed10b4162d2389eac545f3b22b577a11c70f5cc1cb0c648f04c12ecbf7a9001cb8a326a7db3a19424eea81810e327b32ed593f6d0dabb10c3ad10e9d8f73e6bb320998678447b81c3f24c46dbc447da500609cdc85f6f44b56980ea6c9468f39b9ce816a6b719cfedda646b1f697054b31523549de163203bec5a1c9df12b83e70e2fc13442c788ad07d3c5312af063bb589fa3a76429ef27d0345fbe2d64fa1be671b03b7b1a477a435a4107ac615554625dd62e160e78ebf26fde8344832f7cf9bf827e04b31e44894b9b72b629971a1b5a8bd647ddd6e58f05b770ec9201f11ca3001d26fa1ac91e1b5bd372ccbbb06fab5b27b09e8b83e5d2c04fbae73aab950b3df0fa86322b8bf20f44323a71dbbac88ca53eff02f0b8728275bd93d483cb5203c114f4bd1d89333e90a1922f0895faa495074af0a7c145b72e297dcefd6c8269dc5199703717e11add88041533d68547489eb7c73f4390e8616e12d8e06dd8c4a0b724e5be8e3d56b0f8eeeaa28ddba7f47381d6afa496aa6d4d8e6651008e20c37a1ff260485bb8aa5a29ebea0a10a3e8a2025c4b6d525e3cba6c4287a79ff8593ca280f7327debca40d2be37d826c62846fe833785de9cbff9c910c8fded042dbb5d55843ce58d2aa1972679d629fd21be819913191489e48ae38c4dfd61483bf693c416982c2da676b9b356077fbdb6b078719f92073d4d0346152bd7807d8649662e53dab4b9221b0193c2c95f04942979903871dfffd99084d20c0e52827e4cf15c0fcf6fdf6329cc3baea8b514ca3108987bce86ed6f5e5f2a042ef9152c998c00745d3e05189399e018793fed344ce657718b6549f0c248f0de4ca88c4963ce61c9d7504f62586328874c8c08c0f0f6899439b35de59bb247608d747603e7a4fc9eb73b5759e62888527b868e3a4c82c3b86308ec02d9ca875556f28e6abfe3147fcec5a149cd0205a98fd8197d649cadf4fc19a922b55d15637d1a3ad38afdce60041c1c95d81892ec5ed2d302aade67db10cc5e7ca09c55b5d10dcb337c4b2b00b5ad34133b463222e54f74b5b1b3a7ee195d94dd7b81f28391b9f616db37f90958404e20465f848593fb12bd8dd268eba8466a6f0d20b0283cf151891ea6d6efbd7ec03c9cab3794fddb208444151653a16e68b092167bcb71e9187d0592a19fb2eda420f2622ac1d6802bff64761d0039d967aebfa2da1924227104ccefe0b3cb057f079df473055224114772c58aedb1122cfb0cda6a0990113f0981cedeac4e6ed813bf66e958a636a6c06b423112c34770f49f2075f920307d03e1b1506806a9d10a1bec37ad7b4b70d1751595d853a765cf8d391770836e751396def54bf18d6d086f05ad659fd3b2dcf1543181713535dd6665771cb409aa27b1c2721b7dcecbfdd057b78b0be07de8a76a80e3834cf6f4eee2e6f6e0ae5b368041c08ff0752a22ce942b28261e8a456dcfca1e3fcac6aa0138599c84c82af590c5811133b0ad40cf40710f89114e37507de5437a5fec95f4c0c9e7339e8681b328157d4dd2b5baa3d050940ac5782df410c23f4be32aff3908266502e6e0f6d649228052863224939365f09398e4dbd6146cc014600b918630755017ac426862d6591cfb9be3fbea476ab0a7a8528ef9bb3fce84094595e24bce96e30f0d78c2dd6ff3ec446b2f3c6413b7b0690ea8826c52858f1a2fba7bca8b2410f3d011d650e06c1c1200f64feaaf6997761f74cabb905a3943ef9ab901ecc6a72d707ca4fbb50aebe412da59f697e272503d2398a2cc33db4952177c813059b58005297ce3f91bb31f1fcda231213e8f1f3cdfbeb5a8d4306fb4ce9e530f0cc770d7d7de2277486649e5e3da7d61f2628c5b276a4086bf1ddd84836ab8ac7b861a7d6e93669bb0f6ccafa9bb768742e66c69e40e52e3d2b2c72376551420e5fb8f75c3a7c3a3b39b108d3d772d652d29a92b523c0de81f50f9359d20e86488272b98d46928bc74c09588266f57c77e511902fa079017ffbf6921aacedabf72a305d98d5826817765e56e9d2186a2ac290b52f67abe0a40a4e4a2176f26045229fb31b254cd14245e810513882c73ac682265de136a04b95c1dd1a8a92266e78efcf73657bd0c62ef472e5c900297ed235789ea607146a310e81ee917a9808005814c13a97daea0a3e95c64c3cd80eca26b27c07a69b871961930b0ca534bcd1aa9a3d3c5ac0f994d86fd69ab3770d185e5ba48599edf5aa48b78dcfc09fd7c6f96a2a7abdbdffeca5b0d6210b971b29dc26b3579bfc52e834c80480e79f7bfe4a329af2d26fa61660b86062ab121eef151101e998606ef887cfc81ca447bd5c5d6ba31a70bb567c3100c074af58175d81005c5786edf0a4365be473490b37077d2b105aa8eeff68dd69bd7e23ed12ee313bbdf6006290daf8d7c9a798bafdeb6705768f17a7c28b783cf84093c72c1f8543d8ccc1572c2d0ad13ab1b798d33742b4bc8afc464579b1cf7f8be863b8f1deed0213e0dfec537a3702dc770cc1dd9a807e8f2303a72aa927ffc499a06c6876c15ebae3745ea50d136548eca2ef16809159d7a0d3dd7b5b03f26628c4420e32f65be4a72c92a2ad3e7768505ec1dba39b3d0e5bd1caab971f097def43687094a1a6660d547c6c6912d4843e8ba36d90a0fdd565ca77df88b0192b42263ca0b8e44e4d7dde2649061d9538369609cdecaff1412c17c09ece53b226da19d2b15e2d85563b53d023204fc3f3729b5144d1dc405a6bfa1d5525fdb538969cde3f08dc93758822bb09da39e97912ab11dd2bd97f9dfc1575d49e9f2bbe88cb40e424e1d74f958c44ac1e43df628bfb71e634e9ac7b70be79ce6a95c72a56b697c44e235abf4484d5e270f164997384c573f32036d87837c45d2f089281e34f720297c05355be3763274cb19cdd96bb87dbd11da38c2323b67df1db73de5456b248e27c57d2d028801715b609435d6e433942aeafe5e4ad178d8dde61ed5bccab4455ef12ad24ff71f599d841b281f1abec721921247241b9d1bf3d5471d6dd6325d1409a913e7e5b2823951f6518215f1713f963fb6bc875f2bc8536bebc491322808df9dc51494db8138be26de5ea5b2227d70c15d9cca87c5aaa823f60abb9f3713b5722e35efbd51920572d035d3637ed01aa8e70fb8a5ec7dc47f1f93c205648d84aa93a76e851ef28d0dcd87277c6d147f177b4d5ee6ed42ff4e688ed238bf34f2ceaa6a81321aab97706611a6401748d3854dc9c86e3cc4c56c400e47fd97e8e07168f1098df9c7f3e0cc02b9c60ba6f549d8fbf33d9debaf243c8c99a07edde908f5548394bc7467b9f2a4d9f1ff7636c407054dfd0137bf6b387760ae32499ee6a0af38ac6d68c1e491cfd4abb1c08101d756b022dd9fac67347d79abfedf06cf4edb83cd5b64338e4dd3cd2790295dd89144054b8189f6d7bde2aa6effbf7382ac36117a4b12570205c9584dfb8a455cc3e960b1de169e3d3b0ed754c0d25103ff2f66280203dfb024e70f739eebe0ca328ccbf6b9e7c8f1abe0e35b415f2691a7b17c15cac818b5fabffc915635d47bee56a3d98e27821000048b5877b6301d5b7e7014d1eadb065732d49c76e5a3143d33f91fabd014fcc18b4ea2c648acc3fef461d0ec0a92313c34daee693fb4d49d24824cfa7dfe1d651fb898a1054605bb734457d4c3c80bc3b8d90cd240a725e52fd01b6f688f20eeab1a68f493877df2790f91c70cb0289b955661bf8ab95022cbe4934e9102174b4c188addc98d1b6dc9a2091d966faf35923a1332dee0f2a4b765b313ebf1c9d06f9305828e4ee7fc8e96a26da6fc14cd28303bd00345abe29b686785dd2d035f7182e89b8cc2e0bd7adb44996853937163a4e23b1fb4d1a1ad4e23a102e1b77ecfc743ef327c2e25f7ea90dc696f92c4ec0461573abeb9161db7d8bc9f807b77ab5e7f7d44573bf680faba8053b97f61da2660676581de522543fe47e692bd992b0183bbdd3b510b87ddef3b5b5b6343b6938acf8b994d1182eb3a01048d9d60049a0114b9c9e77b71a4fed6c44d7db531684846dbad77f2058707f42e2a73e3a570c8749b65b4b26e24838f69a23b24460f24baf58cb1294cef5254477e2b17c9d0a2facf485189c03689be3aee8d49f33bb8645cb901e752aa89cc95b4d653c29f09d9ba92c1adb295e7ead34b732832c49fbb817552b67fb10ceb358e4a3e20329ea910ecdc6f269197163709e0fbf047936f88fc7357a76a00c49060a4adccc6c3487e37e423204cca5ec3b61824c304105cce7472fc543f98afd25f54bf816ce1c2e1780e8ea604f71d86400f713221bfc5bd4807bd0743de0cb3c072b16a3db46408af1c702f37fcebec377ae03f37cf2c2671073d0edea8a1df01d8424d213dcda3f072257ea7adc30af153b76650f82b39a13e4afcb946943e7de846fe8db0ceb8c26efeedf195b39ac6604e97e118b2cb6e68eea902e417e33746c3ffc0585aa186d58fde5a3336d7e49c6023288b13d8f30a53723ad3997802d12c7a9b1fe2bc0e33eb4a56eec8bf96111ead26ddadbc65a5304e4785e0890005f62e6fcb0f7ae30b1e6741536b036cbc7eb4f12b1c57fed33be6d8b1fb5c0f1d2248d8bd6b73ef4797b8dff63100f9ca171684226783ce1d8edbf1ad232a503fcb77e6534f56f1c90afd029e84efe8aaa485c99eb32d7dd4421e4622ea1ea6a028a6e0c8de30d63a628c08be05acec0c237cd95f90cc68971a65576cf12126a1e4cb7f32c3ecfda9cd796fa89e0aeb31ce6cca709191d81cc15b6fcb685be661ec1d0b55c3406e809abab20c4499ab6c01151731c9a0048b4ac986ec66b9980e4db407cf065b141b81188fa994e2ac30a1688eff447799000786eac48c30f30e42d2210bcefff9f284d5c4eb1153ee629c2c7e098a3dc77764eddc568bf6939a9a599f219889a8d0b94bbbddae413a2a17f1068d45b3bf4559b0b66b500ff8e509dd5ad65ab4369c704ca648761b88ac9c85e08b6c18786ccf8aaa0a55d89930b39704881d8a005f86746754d61ed5b4eef448f134d666a809acbca0f3bd88b9f154f6651dd3e7decc219df684aeac9ae3287c30031dae80a88c2a1af7466f5e6465a2b403323c125ba56e334049858be26b4995900402777a7ac41a5d594e54ea6a465b96b7c20dbc3d261b3772a97256af3f33d6248c8c6975854f6208b8b5971dfddafac4388782ac3cc0ea03938deac849f8fd6e4f86d5ba1700aaa016d1b3833ee163de1811adf07f10c2bbca0ba06a957778a580fd5d283d92c7d75fcbf1bd8a867212608141c0e2d9ca985b2dc9df012df3cdfb6d90679ab0d1889b5025d07e920c82c226dd7744351502ac93b9d26c5f7329cbe4b43df0d42b29302b63a20a242c6f2d35f05ddb1e1476a1a237b550db23cc30670017c2dc115a1cc41201aa2d1a3bd5cd9aa8f57a68d86edb48f9dfc47c92db37fa2609c680764bd1b249ec558b89cebfebfe3421d64216762fbd73fb00bcebe25fabb32763fdde854d6614d62179aeaa4e28daf69538cf973dd3f7b2e2fb24703a962b310f2b8ca0b5f9d9d028d6cc1d6d8439bd0b9a5e384da9b94c39b896f2f471846bde7a441f8ecb6314caabc7853e35dd93deca78a05f3a1fdb64ade78af5ee350eb252179e3737df7d9e14ef70ce05f39bde68be5b8a98fcd132b74dd0136f65868278d802abb8c9647b4a4aaa93c9427028de1a2367a309e28968076966af65ae9a473a43fbcb461b7ece64c05b9222ae37a3f2c6a9fccad0ad4ab73525bad7986ed567d28517ed14eed2a22aef94cc0da64ac2c132ababc0eb00eca0e636bf93ccf7f0dfe322770b40b657766eaba748408a4c946678a7a501d9ef816e3a73d6a0f91356e48af1098fd9965a4f0006725ad9950eb960d1c2febb67bac1da8e55473e13d3b44d103295521dc14eec92b21341ab53bf2a6e0cf89bb0d83e03634a458de30ba9300bf9e0d0bbd13134fa684b9efdd4802abe295def5de44ffb6a5e4ddf848549dc612b027fa66348107697bc4e8697546c28baf282f430c9e1af7049bdfc2074f199f1b560660bdbdb93ed9072547fa2a8a6b8af5afefec4b89e7dae906fbe6fc84ad21ba76f52af458b893b20932614feefb5a259ac868edbead9dbec1db948f43fa06b0678ca90858ff44503ff30c1df41395ffce68f9766d716a106d47cd029b3e95abad0f9d7a5cb7aa395bfeadadf2667857d3038b772b18c0d16f58de331d809924875f1c177b6d279516e5cb01717381c063fdff72b95c037911072800a3416593efe7717b68ee41e734ed448724b2f3d2aa96aa0ca876fc186903a1b31cb44d7da58a9a6747e022337cf9c5efc9aa55804b5dd501a98f5709e75752c791ee2b9135dacae0fe2718ab60e05457d2d1f377b19c3bf414e3231f3bb7daefe905dbd39c3be92342f516f1453dc7ba1eb75b9b59ee8e0470ab5675992ee97b5996bfdc53e40f68b4cb32e777c34abe431be282042af13cf7f047c59f53c6028bf13b22d5d20c71d28225103d1cddc30ff61d1205637fcb80e3324f5debca62e0ad3a56f0cfe4f18b01ce7fa463d4514d56681c1d54c30c39a9b8523f76e30f65c4a7d27c3f4bbfb66daf5bf16955c9fb4762199a973e6606735c17e40212b24bc4f5153d072dd2c5a26eebc5f9dd6c789b6fe9a34de5f09d3606851628ed1311e4984f051b291a6e0656397085bcb6517d35aaef5ea0f392a5844c740c1e619ee18afc764d1020233dd342fac794ffbe4b1f9b485ecc2debd704a080f0e1b404b4c793e3dc6b7895d3fab8df18de74f6fbdd11a127baf101a89c7b25c68af8ab0ad14228d4f3059dadfe508b6b655fdbaee27e9dbf2e0fc4ecc37de5fefd110f772cba94bf170c39eebca4fd35c8b9bec9e581cba2e08d8e96d54f40e034625fe7e3092f667911901730a33fc4fc162c05610ef7a7fe373a32929e0b5cbd93a9c9018ee62f71921955fe9082d0c8d8fc6814a04fd5a9f41d7d9fa2c2a039b955c819eb87a189835b3dea980f9248b62b1a837f4f0c73f2118403390e54dfbb1c92bf1a84dfffa3e5db60ec68d76b9222347516973ce7a1bd3eac8b07b0f619cd880d88dc7846a0747fed733e2a75a27ca474542ee20180bab7e849f7895ef578831f3cc6d38504679bc30f186e7ee476254f23deefb2b05599ec70939f0872e709971ad67516ffed063968d7e4f0e588009beb93ea5e69fa6551a4fd6579646390192ec80908f3a307494e73060cdadf372d2901e75d2b8fba911604fc4c504144d00434759eda72e011ac8e236600b612a10fe94e7dce4fb88e0167cfadb6b6eae81cc088ce79f4105305cd5c655bc0cdd73ececf7e5bee1a0caf24fbdeb4dc2c1261a6d5c360b60cf4870613c4b62c5e7087f29895b6048f32110e63b5f2f76c03b59bfb5cbe0bf580acbd9614fee9ca55bfda1aea1921940eeb25171ce15feaf4916c52aa0257cba566788738e3349d31a6c8ce1960f7940e898c9790489f8a24b3e02a7651f5a4b3e5de05e7d4a24ef2d9dc28b51e81e78709fa27a327a81751d2b702b8c435a523e5c1952d4525684cdbd2bbc1901616313509807be134244374d1ef217f06e50d8d6a4fea3fbf3a362289c13551ca29a8e7d4cb50bcb01042c5d136928e41fbb0e2d5c95151e7b76a42c7af7fe591aded07aa1ef1af41dc9a85d579a39ec38beec8bdf96bbccff4e91ff43cff1705c9e410d02f4084cd861e06072c1d7bb61ecd90911b92010f517533ae3c8922be20d429aa77b13f14caa23426ff8062b984f719c0a0f6b4620e16df7708e7a8a421eaceb289d0e539d980b855d07e28d1373a83f5021ba5866496d2e9bc5583adfbb50914d6b88559a7141fbf317e284a7c096b2e5259515ac105801d700359d9d7ab39ded39c98fbee4018e00e1a08f67ffabfc24c5bb0cef235a041aa970a7cc4a36c1ff341b089d5e9c29211a1496f594621cad2a146566d3ec78ad5a8ec166a5a475d9c8275198f7809235e96ae4c944dcf7b90fe8cd1befc08f20e44d24fdaee7d33f1cbf628d8590e03f52f6a6eea0f2c6ccd1aa731838cad73bd6be7ceb165dc18f89f4626747fa8f088d623cfe5b3cbc968f0694bddd3f5bf99915b0d5527df8c5b136adc20deef9de0acc982690415fc2c51b2948bf7ef8f5c20dc5e4780db2feb50971f98f0d92eeb0133cd8bef7145cf600bc62de35b101ef3debf7a20b8879b14c4524a31e61d87dd927abe06104b2215a59a35c79f148dddbc32fe9a3573d73284a075a3da599b7bbae3fd0031a43cba9a284a96cc0389209cb59fe8c68d940d38011f4b90ae8ac82b48a2360bd39670898b9a87b2b155f62a1beee5f905c2218b683bb2cfca39e8fb677a283a496eab76dbb9950596940c2a5086d26fa8577b42b408643d75d8b2858709f6be590db206aa23ff91136b02c7d7bed26521813c5b362f7456c25e2fec461ee8903af220038075c880c1c1ecc688936dcdb61f1979f4c5f77c5d371f6df77ae7bd7731663115bf38ace854d480d52a11f5fc22dea4f6bc841437e0738358f3011b7ada46793c085904a76235a8286d8cc04707e65a3f82bbae2963d4d9e636e9840397595bbe507b036b1f82e720ee9371da1ea5e946efbb4768681b0d277a74b0c2388bb79bdbb032b9bd9d4ab5d63f0018291f2014aea992c74cd73e96541d8b606a9ae3728c50be6dc260798c968b0336216e4c4c4e30563416ca772a74812ba9439a11017b771aec9218c210e2d729341c3f8ad433fcd8e8586cda8c3ae451b2127306faa582b7eea604f40aea68411a845561de613e5e332067a577f3ab7821466120b0db96c6e88bda09cec8e5d0befc05b479e62bb2dfb51906e216e074f30674ad4684190e2cf443a43dd8dc3f98c4b9fd05547dc695b315bbe3f4b2a667ba0e9268f637ce44605a5439033b8f5a726de11c47f05ebf21a2867a3cf1b9f056673fbd645eb53d8d32b6362cd7a163863508d070c6cdc6873a719b0996f64c310cfa953fc2e4bdb64d5b1472e8143865b54f54fe44c0c0b90ddc398a392128a95c708d1bda0433e825856f738ba892f6a7487480331bd3df7c632ed599ebe8e60aa113cbe169790ca6af06b03f38c852590564a65fe7eaab9e91274118f58bae9e11205e5648b427b2ebf2ce6843829e2c38d0381b4e93f2be600e653c5bae25f45484287cf9472b9c09c2dfd005127316a242c3bca5ffe3da8d88ee30da294dbbe198c4db4f2820ad93bba32120def721d13543198e9af226bb82a6407de4d8f6383e45bdfbecf7a398da8b6cd0ac1fea2e7205121dac0c8762ec4e61dfb5027f5c6c6fb2ff5d312d46465fa5bacc52235f8e93061be92e19980f80a6fb83ef7f95cae00c356aa17053536d24415e2d11eeac345b4ffd7daa9c2e4fcc8df93ff88a097e64e0b91d853b58c5256d3fdf0e4fd10df9dc62053c405153af0278703ba8f96013564f7af847de2d49675c29082b665fcfae18f287146c90d3f826be72d397c3baaee7474b6bf97b138066ea00ffceb64df409a0746f4becdc50436117748a12ba8b0d0571ebd07a6cc833ab8d0a1f2ce9ad3819a33dec1316ce0f0f7bc9c866bdeb0f0053dca2ca203a49a1568e4fed9a49fdb5e6a42c23ee4609e0409166232b0f4ffc4e6accfd5f70512c9b5a8f69604fed65c476fef3766540e9dffdbd59b66c91c9b3f4a0c13cf081e9adad8568ba1d3bc9f77285b5e5f7fa1124fd71e3cfb5526046f81910310131167262a23a2eb6a0aaee59cb4e15d1fef0adce02d72eeb3ec2c0c9a93e9a151e21e26ed5f8c599279a4ccff31b043928c76eeaee184e814bd24e20bb3d35c32ef88cb2477b8bb55f61670c1ac853ed2dff2f379a50ee9420940f70a783a84ba2d61215ef47135fd7c9c9624261cab1b4f40c917575912fc4c699142eedfbb4fd15a8f4173bf260e6b6b38e0947d2701427f49f207eff9bb99a744bb6541a7232ca99e43d1540171ee495d9fb3ff9eb70662cfe7f78c2ca06589dfee5c0549bc1bfc2bbcd6a1a9cf0b1970cbed472fc07fcc9ae0177aac6d124055f57d2dfb6ddc815f3aaab2204614a1433720b9263d74839e4894c493988c1104f77875111cd2418549219fdaace0f192d02c1542bfcd7bb16c20578ffc2fb179dd68428a60e3363f7b38dd48f2db8eb113a29d6966d6ce26ac46bd0cd57cde60d78cf4498039226931edfd4c13daf7e62dc71daa2f52316685da132e54a993e37e54d683a1f3fa019d694aedc935afe0b1a204616896312ff5d1940d792bc542a1474bca7df4ca9a7af4f179584a24a3a1883a42261e367e0b7b9e15ae0b450ee67354eec104929c34c01495545b374fa6d81a39478dbf8225efcc130dc73d0ca55b78cbd1c7c9ee9cf9681e9d34142adc31a94944e037c3a2444ce178d1162627946cbc268c09b6e24377f3c77c0b049fe31edf610d2003e1569bcd1d7f40d9d21bfc46d05cf43aaf3950924ebd66c6fa097ca1c902e627efdb482374bb5c962a0f111632f85d277a125683d892259494bd767649e88d76c2026db5daa6d0226e789b47265d41504ea23e8d900bb0d4089fea729bd2765d154d3c6c9e6f2193e3aa9912015c5ecebfa955dfb6f38527c4c6e905639556a5101ba07b57c67e31105b0f0bc1f32cfaa214a9960efffa839cbcbcd8319ea1346b313a46263ef281219adfc0cbaa9465969def7a1e36bc2e8a3502ba97fb3e6e2498e688303dd2584e1864683682e70bbc19cd35da5fd0522730d1c5e601239acef6663aae58b0a1c563a42081a697d9f89b60f7552260c68452d37aab135b83d5c7567d10a427d67b67ac852a33b348c960a9057da5c26ba8eebb5657350e36018aa8ded20dd1608589495d01c896ebf132abf609727d6f691b9f62933378d73be5fae9305c5e1bd11b4c81ee577997cd2c109440778520e6203fad1ede25e1e7124ebac4899df410d9c65124a6735abe5e65f8974370505e71fe98a7071525b024e263ba15385f0095ed5501a515ac5a206b719a32b0ec6903a8c749b5d39cc84c0862d86253b445aea6478a1553116626389dbd16abfc5a170d1d127d4356141ccf7445d2bde1f2622c2d8d0be77489818525fa36e1e743bef4ac9d33b3e4f4beda808f22b3ee9bba283bb96ddfd44239a159cbf75677f969aaeb51542a1562c848bca26ffa173faae9f3ca6c22a61e483d5bb404c87e610aa5706b9ff7d596354d8bb11e33eba1d73f2b231fa77dd01581bf83cc3a3dbfbafc3af06134542afb28a11f8fac36a785ebda85920f2b3697b7686ff178f7653b7142c5bdf413a60d2e038d96fd03fe4752364525abcb66f59f794c24b5837ca7c900b4c7c0c30298ede1b7c2e7a2bf350adff817e8bfea018b156fcf4bb58d24b2115bf4017ae2b5ec975300bc9512bebc71219fc29a926b43f209163abf28eb3d5f69440250138eaaf37b62739d3d79140eae760f2e7519e3e947c09cfecd61a5f86c985cdae7bccddfcfcd33d6738fece5072b25a5e2b4acedfc3f901c1b33594912b48fc3b18a6678fadc6b7c6191b88e783ad65d01f1b1507c3f7d00d0682f03e0ee970435c9ca37caf7682e6200c6a0ec7652d212443bc412701fff8393c0ffe95023ddc98b2aeb91c93e90153ccd45c20ad60a1ea0870672875046235b03408836c4c50cd39e55755132c75a4200baad020c0ad03c9626cd3fb8ae4e965c5709bb2d722a3bc6d49251d026898aab7a59fb8a19d03c6c8ed7718efaa346cccc5161bef667463ad352e0b12483b9e6400913a6e0108855ace8ae2c610f6ef7840ad05f66556c9cf5d0732791302fe0124e60324313605d5e28fb857158b609a852c1e259662a04291c59e47735846637c6e2ed42a0d9a7baedce01a9e129e29f6b39707e1b7503a32dded01a6e721c34f683726c1a491912f46f440892811be8ffa67fc39eef22f4a9085213ae0163c2774f3d1193419e0bb0b9f2a900017185d4044b784f6a35aae5af39198d01c4ec75cc9247c790335ed90bceff90ae09a76cdf3c1cba0353b340ee8345fd2b15eb8b5e3806fdd2de29db812db1d8dbac8922066f4c642ac16f690525e8b1855335f9247dc296b423af5f2f9eab5d7c5ce262fdd00b238cf70a76f65567428447ba5d784404ef87d1884500f51010536f9165966e9723a4f97f9b5e7db9547f74432ea024afb15f359712ca6f6b668a33bf7f1ce8710bfaa1810bf0d9c2ae8208332bbc2ac29a57b5db63f0ff3c71b5cabdb813b0479e8054705f03abf961ee390b175cdab5a282c8a6b2ff317f24d5103b91f8b6298b1a0ba7e8e795ba26985a8814e6da2962ca5c924e8ee64224705205587baf3be5873ce51252afd8357346ab438bc7dbb6310075e585892a742d286c7cc8cdf5740be2138296827bbd13b5ba3800a3f1b4af0b6f75b928b348efdda89cfd9a1efbf071694cfe5ccba19bc62888f1d7c6a712a49c3ea9eedb2964d6618cf048a8a9f175445498dd663c0104ca6594ddffecaddbb1fdcae8be5cc449822c3473d4b37fd478dd309a14f220049013915a65d8ba709a6d146ecda8bb6824b59b231696d129e0351777dea32516da736c3211a81f2b3e51a31cb2f6b265c7abaf533770c3bcb9a5cdb2f5ea0943089048f3604f9cd3f31a4dc9521a745feba7958e1f92b5586b408b7704c9ac5efe12988e0a68992b67a42f9ee7088ed67ae4e782f4ea5ec4a46bcf46d59c5e568302479ab16604c2540ee192c14f628398b7dd1e6dfcec8d70de0b1458625df42bf7e133a10e87b1e88bfe5dab99a3a39ae0e5e20b0f7d8aed54de88e5b09c683bd2277c266e93e34eebce8371b4810d4ba3701ce2b5d5998c9b3c7d1e33f0c18e7616d8cc2745d83bfcf65b51e823f954b98dd325295c720db5da30976235650bd7d7e76af390725276fa37aca5b7ab0322c27652ba762143617b528504369614fad5e73fb1f47bd6ad40ce20610677b4a157cd28e4b8008c5159a9301b61be292e30d07653e54f136ca29fb3000e8efd59e51b93910f6d2c5215ba1a55e424f4cd86bcb9988f0e8fb68df077d022d2b711c8dad3557320f6e6b051feeae5b898715f0ef84cef6d05952a4fe282a5af19186f2168f6c669d9fc055cffdaf1b53a00bacb3ede6125a9d3d53097f732b2898f6acb05b2c501fad14bce4125c0dd6da6dbbed651f603c4ce70e08a8fdbf586e64d70a11f3c67d2e8c09870193341e8c59cd86884b53aec1b53a0d4ebca231ba4796092bd22c61e57e6f567e33fb9ad2097ffd870de7eedaa4e3df0ecb39049dfe046222434abab12112df3823bba0de19d7e20c327abcb34a1578becc0048041cf423b3d2e73d96ca552ac64fe6e6ca974e5c643931de72077f87790056178aff372a737eaedfcc003a2c5bf2240a056a7ba4fe67f59d26b27def87f62caee55811acb8be745cebca895557a0c10c46c99d883df85c47b15416460f0fadf0eb780bb0d07623b417ed64039ff261cf1ad108e99247e1abc5c8ae57952c9de41f9286928545cba84c09aa0cc6cd599bfc689c3def18c9a0f34759a052448133d34a0680f5ef5741aed315390a95de9ef9074d0d8046167ec44058d554b679abd6424700b9e08c4aeecc7fc51dd2fe66ed140478be7c97a2e702185b719747beba6e106859f59ad1c03479e2c11b8a6849e5f9afcdd8f7ef6e143cce07575403a06aaf651714adaa6026b7343145047d6d9c0877298447481b42867b946a3eb49726117501443eec23111d545a205660906d5daaa4a70117b9bc4de712e9372f948e726d5a41e97120fff04eea5c2d3138025cb6b74f05c98cd5f44630407776e90fb7f34fc8a65ae05bbf23274ee4f442077e1c1f1c5050cf2b4c044e6d15ae5d1e8d0401101d8a262db8489aa159137f2277f2c9d48aa03a5d1a405464f8a3c91aab70d42fb826c3efdb258b5057d8d3d2eb62183ea132a68b0f4c548ed343493d99591f69c01b788a2298495607f4f9fc97296ac6af83b349442ffb89db1ffc64afb81b8f8898ed08e36f48f57bfbc326d818fde68a968ac00323d49785ed55ef27d82e071c8fb61027f1079580e6f6a226971b52056ea62009175b5c8e08fff86ad97f1b893965424156d082bf8fb22f441d9b48e395b1af882ddfe18eee44aaff2ede99018faff8f14a3c1fc8386ac971b9aab01a997205553d35049ac11a71e31ff8f890d1a317a26e9342a8056db4578cf1c79889c84931513ab0b7c7a94a6148e17d1403edddbfd7f4e19a7dfefef34dfd8a477cb785e92726a196eb717ee518e91b776b27ea158d513fc50dfffd30c3002c760a85591ab2ad857839fa6cb453c108f01545e6080d372e1b852486924fe23219d1e4a9a999f5b62f651154dd91f43e284f028b04c869374a98c2e3be5f9a2090f13416d2b754eb00459e2a3cbdac68b82d6aed04a24fa5fa6023d386fce1afbf90ca494b99e68e5e5200f6df96c9ec65066b4815742ac3ccd96ffb753d310d59584e7a8903eeabbe2c003bb5314718e3f57ab4d18a22d9376228aee3d10da017f428a5466b078d3f13506ce675f49d9b594c7f752521afd73f2dedf17aa93f9896ff5d887d2b836a6e9c78fe9d79e643559215c4f97aa0c41957f9e68cd0ec2d7440401d95817927482cda7bbaaeea7651d5b026b16a8a497c9febd372286bc146bf551d480241dfce11ca2c2f4292ab77573bad675b1faa57d91a892abe535aca610451dbe9bdddd2ea785f33afd02f36091c3d2c0369b380f94f6fc4e47a6941dc5482cafa60404b316fab5284faa4c38ddc1c864d837f2eef0afbe663c34def7da4a443909620d31b77dbecf90cae934fdb37ec15da2c7d0c5a154bf6b8d59e0d146fa8801535280eb249b5d8e11de3a47be94cb27348edfe05043f188cb11cb6457e11d037d8ab99bbd133b089f8300486db864d1252e3571411252649e2b8023c52c832c73ce40dfc56445d4608bf48aa87ef11361027a5e26ff1ca6434c9eb6b85cb5fe79dfc988cbf95e0df9b16075638cf234a6165195ca4afbef7bc27f3536a4d33086241f84e2e2b854d4181f150f9e36b86d6acc40bfffad44322b0502ad535a1097ca5b81a39de56edf48e4cd1c4db3150acf25c0d97855b5c31c42e74379d77fbd0400722d2d9e8c34a9173fa5ddd8623a38d961e8996c80be4caf6975b54f1220cca11f09d1c6c7e8c216df7b500804fd3bb0c532986b95083a9adbcfe5d18301622f7a279fa1531a4998f236dd2400fd51bba2c4342410c044f60883f6ef8cc57c94743079bd60bf19835f3fdd3d5c97d32011b7acd86bb142ea08f5872a1f00a67165b307b5f7fd081828e63f8de8202e844a25abcb35694ba0f886507fa9f2145982eb1e9798cbbfc36509a290ac6860811aeb2b832af53ecfe8f02016206b4d25538e989ad375573959a2cc35d97fec3d2cf55003ee713c2171d6de524107b1febca5fd3365bac9656b41a165332d12d216c88e4bddcadbd1a646e6fbcf0976258faa5924d5140d7ad9fd0e7c0a1d9bf9518eb4b77a12f61ab4bbf0ce33ecc77e22e8165bb300def5d1d89f0957a39d434ace52e8a5a86b82c3cc6607690515a83039441c2950157dd4d715c6343f12c66c43f1a4021fcd0ad5e87c229c0b2aeea510ded5231c5d08aa21c4bb752596b7dc0cab22abf6a38e61c60bb084764390e8e3f849398a4dcf1105d54472e659bd275bf2b925f858742f4ae8bc9535c654ad364f7b50ecc421fba5ffeeab412a66a1eb8cf339004d500eed8a4ef8996c112453e891e43b88e05780245669d85dd2f44fd7b502bd1405d4e362dbe92427f32a5af51da3de98ef102b31c04141774baaa32200b058469ce4c5080fae957f39c41f2bb65f470d60ea1cce500811003a9794f451776b1f451e781ac7e906c1ace9b7c07c340ec3dfc9155fac4c1df0689293383b71d810cc9227ef39b8ef710bb6b46c9e034d25e70a83128ef5e525e4ff516080c7503dc644a764d4d709b9952e0a2675004cb18eec35b2f2f89cccf60d29115b10d901723009be43925b0998d3f859e4cfeec0f891c7c43f0e67f802a31e380ad9538705a307b9687ee069c0f48a6fe0f525328ba923d8ed37c5d7e4a08bf33b1fa0523573a54777d44ce4f57f6aa697b977f11447518acfa3add3848ece3aba346466b07e0be4cf6dd8e047f8f1f980c565cb6276fe52d22f9bc04dd355a79820fab09b8ce4410a34376338d13d496240484cda88f6f168ceb8799cc7859c58f9459c4e0d252731d9986f35479e9439e38a54c629e6860bada0e934dcd77c6d0e256e30009ac56ca85ce85e655a9d2b4087aed6a2d9778f9a7f8f301aef44bdc9aebb58b9dfa508c677fca8fd1134b3acccdb1891bd2bdbae8399c7f6ca735f931b409e5ed5a2c463993c76c0cea0a1ec2795a7a786106bfa291d7687e57fa8cc813b66d1cc6692dd7b6288854dd3e434f16ef41fda819117320d014250b24daefa815a06911b8ec8a58bb8bcf756ba7d15b3c938a9435d0a9ce16c83127d00ef934813ce4cf8296090ef1007a35e8d841d34f435f1b89ca247d1f7de81030a3a71fde8542c460674d0060219e7662bd1c84fccdf852bae7f2ebc23c436109086162108ef6b8a158f5ae4337248757a84fc25aeacff661630ad9bb06189f36a5332f7f92cf84c7821428f88d5e8c9cc1201c442f63fe8bd79b182a4ae3e323284f199968baba0a509bc481f232cdd8bb4daddac741d73717cc4f14ee38c55222c8dd50fa7203d37ec49404c4c31a06dbdac9fd37081ddcd8de89e1e91d5bdaf7c02c98d2386842f42feb4b94fa31f74a4c08d6308135e0301c17dc6dcc41e31d52fcebb9d8e5a95e95e04558961acec543304f755c0b22dcfa03b69ba4032ba9cbffc5629d770fa8383d83289fba828abc7798ce2d3e715a59fe04cf4b6e842c2ad72726f969af388af0bc91610f5fa35fc6a410a68212d9cfadbc753cf453e7d86b18d0fa2c76099d22497553bf857caa6ba92e389a3eed645bbc78486213441bb91f7cdf0e88865cf6a979840268cae1d1a45f9c3da11e2f444334d0ded0a6b7efcb81533fbb41ac46ff0a7c314ec00a3dd352e391dd41ad197600b05ead8bbd7d2b71343c1a75db038feba6a4d496649239740b4405a3df01dc49267a5ef58004561fe6506355165a4454b6f06a621c7a1d414a3322006ce0e33934d2ae2b25b0e5c28c218a34bf742da592f6d23935ea8bac7ba6b15356d159ef3a05fbc950b57420be533474d985fca5c3afa5acde4ed1936965236f1885f346d787b51de5f224c77b463d48f0b38656701ace89b3110343ddb25c65229dc9333e95e2d4d2d61c5d8873324923b4454f582a0cf69a367909ad1035c50d3fd8a79bd09dfc65ae03fc6984d8d64221d9b1682e74d245224cde37ebfba30dd47f0c361f934fa37b889dab5da34a261482a9ceaced728263dc1401c6ed776551024b58b984d49042db972f633ffaa51ca87ba951b3a4e0854c215e47c1c2f0750b65446ec8cc8382312aa5000b0ae37d5428be2ed5046089046d688d1f8c0520249db09dc7f2cd3843197311990fc77bb49ace34b7a622982f3ba58a25ac3b3e3d2f91778008645bcf5ba91b3084e59a9b697681910a5ef83b9d15c5e1e5e2e42c9930a903b6573316d7cb714a0729effe27afd6ed6304065b77a0b6dad131c12873d8bcf7b73e605d2b88371671f6f878455e532d30e0340895083a8898777a4ed88c17155ee1966c90a8f5f7b4af1bc77e8e4e021d1cb97ccde0e3d77cda901d5f9caeaa59ca5e12c2d5e10394c06b4cde3609f63e7179353830e3a9366df0f9a1064519dc912b9efcf93e841f9f6d8f4cb1c4e497755b7871b809511da5beab57fb3e5705fe2f670957437b0b6a62b9b042ae7aedc4cfccee0fe818227bdfdffbf3df6da25232465ba1c118d10eea19a156fabeeffdc07b63027ebb9ac14ea4072a16fa3b6a7a173bb26a43a12116a0a3507c86afcdad1435e9dbebdb78b1f0b96bccaf7472ab3c04a3dd1727d18364fe1402fe6483c3ecffed35cca32c721a709119d1b765fc197163e4611aa0b62118abbc2686e643982b69567654a4525e8e158bba379ccb99f71c2b25a2ceb8b3689b09522d495e748fce1077fe6f9c5df89036573c0efba835f5781a879df99df9ea02a8cf10e91f27da52503b1c019a191e34abc121dcb66d01f12936d57c8576d655a5432f16fdd6eeb5f3d716cafe7de4a14b661db33a137d2af1923ab2b5cdae0299174652b440d9fe4c4f8e2f54fa4e57e1a99a032d6795ff469adbb69c6079d226386efbafa768ceb514d68cce64aefcaa7b91e88b245ccaaed45d554bc43581c5e6dd819ee58fe17fae19b07edd4a52f718d7b3d63cb367e398b8d5f911ebd54100e7d1f46e00a470a068b2dea62510b03b2af292a443c0531e059080c7de233993079c686771844026659c498eededcc9826baca2fd1c7a35f4e41dd3797faa2c6062d74c6046e1bbe1f9b7fe4e710daaeb9dd8a7e7ddb28cd8a54b38b8b1c4310580dd98b7c062283e9af2506d0537be4f22e62f9cb276ccf29adc951a32e38bb3e8c190432d5e95727954274ef9ae5f6488aeadd7847af19df03879fe7f470be6bb0fc1c0143fbe06f09c47cf0ac62b8aec1385b759c63cc95917dc1075b2fe30fc50cca9977514f7ed1f9722dd7cf1e11d56bbe9afcaf67b597dd7b93f98c3b9cdf1879e974dffac38816787efa1da2181e24afe62bee8d2250fcda0c43f4e8aa47b5968e7508cda2c7b4d3c77bd4ea4736087c52462d96a5f2d5933306a532ca9fb822887f247b9a3d4ddccaf98bd0d1673f7797abb0eea0c885f42b7d34ec230bbd5493500191f21cc36ffb9771a8c06af86272376d4f41bbd06463b3082c3b51a350e9455f4bab9cdafb5b24c7e34809e3ed37918fbc91639b7654a6dc513a2e0eeb4ea57342bf64b916a25c64fe6007b53fcc25f4581d6770868c27415d8b93e47da8b965e4ff6f6ea7251d30bdf852a8954fefb00809d7fdeb94301994b499d1cc8389d2bf164e679e5c52a9bc6913f8ee118688e3ce5a95baa10b1e79b349c3f9498a4a9e75b7f93de51b614ffba767c99f167877052bad11286e591250316e890b97d36e3f14dcf260ae7dac9306b9edf9c02edbdc4360fdbd64ab7f22ebc877189e640074eeacbca127386ef034394c4a958c903bc2ece6e5b947e144608e5cd6ec6b8ce8466a26ecb65e6000c833e9a7da2a37a5113395a753368eeb8ebe9f86bd4811d76bface4f31d19e386e78d9bb8cd10e556c3bbd18ded29a5d0e1bbeeeaecf7c0e3fa38158680804ff8add4e5905014a3632ae2237fb4baf075ead9d141acaa60dd192de995f8be783d2bbb45a976c30a4c65b48b61a252ea34a3ef280ce751b93d55693d7cb782ca5a671dc557879111cf8b3b0a20eb8aaab59ddb1b99900b66bbd6523cc1c01a0b4aedd39f9b6c2064b704daefc6bafaf9c385f99e622110b8a309640d0b0eca73bc5e72f24249686214e62c4acc889d5b1a2d9c0d10f3fa3b03aa6b3e4b7124116e0f76c0c0577c6d6d6519773f21b29230d2740b61c980539bcb3d4e0b9e04d7f087a57021d9ded051e1c6db74c0de217af69e38ecc1c92c197c493c7a9d934e8d1608aa61d72174fa0ea3d519d5869c92780efd69b3f2ccca43e1185ee11cfb5ffa161a2d41426260f8354bbb2ceaf901a95f6ee2b6bb597a670c696cfb3a63c33b396357ed764b9f7d77e437892d4d79593bc97b17c57be65093e60427d85968c16ed2a7cc0fa198277ce223f9b1b2affa82b350d429f62929c5c2e2b3f532b22c8ee05510a2d10411ae99c3d3634dc8bc858cb570267f54323392bc360440714d1b87b27a57145ee1ae9888781cf06032a98e75bf690dec27985c4fa595858c9b9d7885eb251aef9f4cde50df186cda2c9a1e765c89192c7df86465e3728ad970d34b68a081c5e06cc7c5c85cd122c88e4c550131bcbde81789ead381d05cfacde0e5f1db3672ecae750d16db0d0c3e57e31294d02b6768acc61f06ec0665195410e0a6b6f66e4482e3c67d70b9a63abdf42856587dd0b58494344d4e9a93023d059271a3107be0eb17796eba0ea43fd11eeba6426a97af0bdca1e86f71e1ac927c7c51b9fe890e122c438b3085731ff6331edee4ff7d555dd5df5345a6837b868161130931be55a563aad0c2f531f05ea99e1cee7875b9ec298fd1c1929972fb83eaba09cb5b500c8ab7547d248dd2ffbd7511fc7369bbd673670d84d038d75bfca324b7c33c1bd1693ef6408fee7d9b3632b403c065bc42c891023a4e6a2e42c45884eabab930d82940a90b64b91fd6f316f4185f901c45683fa1cdfaef54e2fb5a4add2d0b4cb728e1ef81924f8ea5476a33159bf93918c4ff998541217bcfd2a130351c4a358f03943dd41e98a39c87c09ca5e2c875b5c79e8886ce0ce2e505c5ff0bbb88ab22a5bcb4690130edef7880947b3850165b4a5e1a8269055b1e4500b4d5564d432f381c58e3e2861b34fcd86d7679b404069db3820921ee25ffb1ede389a430ddd405aa4a7d8ff7b91046f0df2ffb23d91b35b89ed573da58adab79d1db9abba8ead8c70c3bd5c5e438d9a0c0bf441d3b8af0a55992fd18b514ac4855c15ad11ebf62e26cea0d1eb4925a88e9b3278efc7dc67f8d865c0624d18910ddcc4c5b7907ec41fff09f8ed5e4b5021249b9a9dc19e16f5815e1136f3950bcfea1164f702cbceb09fd4f6b61842f0dfdb822df081bff6d46b0d59056016cea0f4fb3812b307ee5107b0581ee491ded10731ef1597e9cc27a57c792724753c3557b35a9bc1819100b8a032d2c785cf0e8b63a223f92d7b5dae4ab0f7768eb0d03b223703632a38b4777e9a3609aa495b1ccaa85cd47fc97e4328f5a5f4c3b6e8bb6156bf4d19410b3e736d4dd8562a2fb28a6d048937be069c5ba844a9795abebe3eedb73b074c91cf8166609d1e3a5822bc9f029b91865eee3d916db5998245eebe3fe553d42941eaf98467605fd1aaa6ec3ce48a2eefbd72bc2c184a105eebd995d34644005d24f905c36507b68c72f49c6b0379916c7217da4b7b124fe00ddeb0729eef332a325f1f1c36d6881195d8bf25e002a3b3ce962b021464cb4d36afacfd98d5b538d08b98e382af7be298d63eb3f30130e244a55ae42bb67ed868785c0e4fc7f6c29635126be113fb43021d77f488b268376d7ca49678f3644c1b54466a470d08573a4a06f94bc1b630b83db97c63505f5cfb1d5babae31ffcba487264565df2027bd5c3f0f7422205e637dc97c3f668c3ce44764d1213cd49c38516b536cf218ea499d5d01a772f050f9385f7d74e44e6e3639ba52cc27ec03be48b5ac04eaf04b5ab054db3e98a181e5d4aae94492622b6715e9e257d85432174c5d7e68b149ee0a0dea97d93cf29082e5c869a4946ed915ea93bd01f79d41a9afed8d2518e8f8bee43ca7d097678cd5c44f0d7f947a228819ef14745d5c4037f4a38b9c93393a75f839c5aab4c542bd95c745cb85729d603245d0ee5fab4e6293f33428b1cad7702a262082bc9aa807c92eb1f02fa506520b739a59b3a6ca608c02471698cb8e170d18cf98eeb24c1f9572b44d5f4908d14f6b4019e5ef8cbe3a2c41dcf59584272a7d989581a3dc4275fae5e516f4920689b25fc27b2b3538a97ef731d220a7a63f9408239c43b978b11e48833024c68414e36403e1838603033cf5fb138b9d2d3af0d7eaf02c9bb024aa53d498b96880682ada5f2624d416fe5daf2ff397487046f9a1274f3f47c5f25fd250bc76f1907bca05978fbf7d41190a871b2f2cd325ee6aeb46a61e5350a47289efc8831f392497d8cf8e0a7c2751239cbca3d452b2d6d4785590b0f9812a0cb4f61fee22baca7d2ce4873cfd717fb96f0cc43bf833621af52f74a0ff6ea1c84d71b22555f3d5f75265419511c7ef95567092b5cfd525f3e7b1b5dfa78643372d130a7d8150d298f33363d4675ad6b0bbb4ebb8118ae26cfc5c371eb822e55fee956fafbd0870863ac5c3bf19293cb9323e5c5d038e6f639732a6558d637b38add8f655d22f1cf9566f8e9f8832a5925a5a42e36659d00dbeb9a53f40caa52e904c3872335c26c149577ec149402dd38fdab32c7cdb81704c6bf7dbd942eea2227826e788e31abe03da82f6220f18466f62783f9127e5ea7bfe25ed979077697f9bbdffc6ef3765d48a231317ebd96928146dc422f38fa8b94f127a414e1e4b4bbf42e4d6eea9422821e37282106eef9f84d18b8c873530cddbfc508bf4a4857fb86627cf1e8a7097efb1704764683f622151054a09cdd84e094c7c8c985f4804ebe83cbc38702344be39ed0a5590f4657217c9c636944c6eba5cd14254f8371bd544fbf87bc61e89226ecf80f7fa5b9ee1e011bf00900c09e11f68278b51ed99ad8c21179cf53df8ad557fc8af8af85df2c43a309e36eb100f251ad37c3f75f49ed2cd5753eceda88e716ad9f9720189126a48d9fd0091423df708b3d7ced017696903b49b7cafd67a8281ff22dfe1976f6e5f4bb7bbfa2b425e14cd3d12731474d42c75d08699cf01abb9670623b76979144b8add91f582b32c6594edfcc6989d76945d3af1d4329c188cbc1eedd4e6fcacf93c55f6a7cb2bbfe7cd00a5a63b4beeeb60c8f81f7f156e77d27ec9417300ccfc6d90c2054f2e37c884f363e3968b94c5ecf67d4af128237a6483e53631cc1009dcd11b5d6123c9fd0e65b0c33150c41ac1278fbcb26bee9be04f6ca413c82c7bda59f2cef8262abb2145387d3b0a66c658ec97ee57de1763446804adc019e0d0c11e38ca93a347fef5deb6bf1534bb0ae2044beeaebf435f09faee26442cd629f0f23e9b6ff3f7057d743e29af918c09c71593dddd7adea021a6091c928ba7ce593a08dc0e8240d3a45b31d0ad31ad4cc6559471d1cad33b04de7b4cd9bdc9a8a991b2fc0f2823b0accff2bc69793b3f9bb60f74fb6ca4cac92529a9a504e1c6f1089cbf53bba1a789e86b6ab7c528b1364a464361fd3eea58cd19d9d22fbbd8ebd341bc730dcc065b6add4a826a575887e6d14ffad539bba2f2ebb94eec35b7c99160df88d239e0ee5e1b42371b0e4bd249c6a05e0b2d63efde06d5ab3876db958e5ae9412a478e56ab3b29ff0597869b41d44dc5e0f48b3a11bbf083e921e323a073eb49c5c72a8b13f54dc92ba0691e961605534d96e09f87b182aa67bf11918004cffee0a912225e68ee25bf593956bca689b86c5893d7190d352f12fbcb54c861cf77932f6b118ad1c0f0935e9e9690152f21f566dac2f6686830ee541ce1e9d4fcdb21fa9c8448ab6dcbe92924b49b6a61710cfb6d08976fac7d8ea430d3d0afb8085b20cec02c2311681b3dbabca45a1cd5169909c1b61d490a5df4dbb306363c8830ee73194459bca3fc1e354091fc729e586bf13328e5ba2fb07013487fd013d807b9bcf407caf370f10dce28d6610874852268a391cb2cc0558a72716ec39dff7d6921e0db6d30920795a023fb1d98cf960e3829685104e97df7b59ec9678d7697f8ddb4898d5d249d332b99f2f670cc83532ea3b96556e52ff13fcc56bc6c5b962370cc6d075df95deed43548aef245b4369baf97eb6e80b2e697146bfc14faf0061b4545c584c2a1ef6202681112464983d5b9355e4b6892e3e5d0bacc35a222266756d06e190b7554830c8045dbc394ecb4160cf11f5030107949dd78d3cd50a39fb5baf9db02d7e2459fbe91eab15a2715319221d1e2000845f665aec597fe0e510a7c937918f6ac9d0befc0f15cb52b5ac661107a85e83b5e4fb51c38824845d072228619647594e300b791361ab7b2e932d51febe95c3a7e2de3622b8d6243b5183925d2e104385475f6921146238ca9ce72462671368285ba64bff19c52bd5ad53c84317cd6148f1e0c387292d8d98859b73be15d5b78f3f14f07b23021815ee650b4b8e6b98c197a00e758a5c697f777112607d7ae3370b15e85e968fa6124b2258b5a48e910d965d9405b0789186c3f20b936baed1545591383e75df97a539c438101b6d0e89c4898ea23620148dfd286c3413e6393e0fca0684fc6971657ea2b0a097d5aeb92caa4abee0e8b964d0fe703af659f1e5423799298edfb6cdfb701e5c23d8a08cf1da6cc0ef5a1683848d5bc3a4199e8d617a1358efa9eb85dfbac48f1d570b0cbd60c4069b816c82614d7e75202e70841ca30eed28505d6899aa97a4f1bc3fbe354cf43f7372add1e29bf1798ddf5ac933f9ddd558084c0de8ef45309669df9d5ba1ada485c2a672e49f81263bd6b206e92b090e1694cc31c1ac9733eeb3dad4877faacfb356a05e73e91ee3ec41cdc9883513f90d73423c40a206485e7bf15425d38af486cafa2dfe91bfb689f3e4c7b9a7c5a534a025b9f1023c064992111b04cf71277fb6ebe2e5bb12452a9c3a9a6d510c76c5520c138210681da0b1f0be16acafc674373a0f101ad7f25dc07164aeb5196f4140a935decf8f1d6b0ab2f0beb4ab00866c5bccbe7f09b39943923bd19428756f4daefa2602270bdcb1448c5666ed1e1f5f3ae5ffdc4e09f222817fb87351ed2c4c140dd3fd807e8ab16818bc61fbc8bf4103dd776a3a3992f6281203641aafb2350ebabc3843423b76e173ebadce1332101c4603884e41cedcd30ef7d67223932e0eeea51ec843044b44fa1c159931c97f647ac52799a551925304e23a45e48998a3b3d41c5a94245822dddc46e9a1bbc30256e8fae4321d1fe33c8f439d3b7e266268badd38082c23b15fe3cce8e197f5b06e10d1efc933251d009fce39e6a1e105c805cfb028e24f5e273ec48de95e6275742ef8bb672cf94de663ecc6e19d9a7170bb2f997f54e4c089227a0171feff7e251139b53b8eff3b8520d6a75cf62d131deb4b936bc8a39f211ad2825deb9b7b0d4e40c3b14a42f52eae6a9736b655fd0f22274e5dc40234f8e0ec0ca0b0b3e7615367ecb69a824bd6ae6009e22cbad1c00960da1c184becc09a9d6e87418ce2e5f2d336d4d161a6ab6c44df9fbf4e16b08b8646fcc6e868c652d90bcfaa794798441c4548be7433bd268a9a552418bb1ce878264d246d4dceab83c93137e3a665a46be0aa14823956a08896f55e25dea58addeae9c7ee2bbc67dac2d491ce63e3989879d43bbaeba4bd8d3e98a04026a72de2953657c444987fb1f5eb8cf46b07ffd1bfbd6086c18e84cce454745319c2a53501c5f359d91a2c7d641940f83690c797250f504e69cd6eafc1739799cd6544aa6682e989e0ff0e57ed5a12b24efc6009d74f01f28e050a7603bdec2534e069e70e96bc79bd42cb1068ab94a59e51625f65548c929a7b3d8ae0e0af9aa201d683b1e2224388a765393ed4ab92b876a6eed1735a2534303b76659665dd4a4b7b6b0515428fd65d3ce9d72d5877e59b1d9441020808869656ce640eca2abe8b750e1217611e1b6aa9578dd7079f369e264d11a293f5c5fa3b5e1d76d446b50458a312af15a08ec48b3bfe645420f9375ab10cba26462c8ab12dcfc0b2b46ce4b295c39a0084cd35d84752f11163750e89225db9191bef01087886ebfa41f0cf9593d9a54c14e557dffcdb9a68661a53b070ed832c5602d88ea3037d4aadb2e41b3575a53b92a24a18deab769b2947f74c72373736f97cd6cc986d26a7801905b4b4525d56c02a9a37208a8d4c28bbc1d423a117753e1243bd57fbbf470aae743dc8640862afefbc5c5e363f5ba1db9c181eb27143a296717e51f62ba56f7e536f8626f076e80d92bfa50ffee953fdf7229e6b95474d56c468652e358d18528394ec70a6d0a9b565cf74e1073b5bb2d46814ecbf82d55f7b21c363f3d44a0cd92fe5d65c0240f8ec5c113414fa0f81cd59284f7f08f15ba6a937a342df521a44dff48a87efe619e36b3d5dadf106995bd55e169e4b2083f1f9db559c082491cb89035b11590d0186243534e95537fe51eec3c5bae6128b9a884ce87e0aaf3aae7c1b91e6cf32b7064605b9d76f53dc61fef4fdedeab9efa7e8de32a4f61f84531052ea45b9ee80d3557d8ee9dc2bf8667cb413535487e0f40e44a991f36a4fdb0d474f22e6dea72374c1f85b6145168a42df6222ac73471311f9122380c887cc56662ff267dd730ad4386c48371f40d087febaa68952062b54e9722d51f19649372b639f8d6fb9740ba82f65b796ca3c671bc7a4ecef4c3d79d3207075ddb117f04da434ce907ad7ccdd2fba62525099a9d96c86eded4a6c682efe031061056b662d3233fd3335950f4722e625796e33e2c38ca0ef651e2547fdac98aaa220aa7012273e17e91ce9247624aa1b5f9e5f6954608aa4bb444767170279e6c4e42858874fdb88b97c9795a775209dc6d11056e10ba702e3a48c673188fcd98350bc6e56a693c092fb021a3c70c52d9e0ea363f0c06c2e836c9044ec9decb8b6541a673d6fa5801ce8d0a7363e0ccfd5bdb5478a67bb8723beb9175bced1ee90016a52c2a3af0d26893997f6894d6f98a07b168305b9bf4b236f29d5013a4210a4105f00c51555c441196faacae684c98eca34c02496b199dfb53d97da40a4a08b74dd63f38d2f5f2d7ad3a85f68a01b9f9026a22d95a31503101497d72554100f5c9954a67233c068dedf365eedac0012fac3c03f94f246d5eef5d86475d27fc9a07f79f92f9aa3fc74c0065ed0b2c5f8302b32a9d64346f8f32a9c3584d239b1a5b592c2977074ab520b8dadf608dcb74687ad44069908105853ce1a6257a63b45c4780aeb89a45a9a7daa59c35d61bafc85be1b55eb68412c69ad65038f5d0db651b09c3473cb1228006d42a77edfd2610a8a57bfda56d8a7738ceeeae98595f15b409a8a42c7ad730c2b049264e0260afb468532de3684d3e8c4c2503aae25ecf384551c6bf3ccc9f147d0bdaf5cad51c68a71190486bb165aff8c2860660303bee8da294d7ffc298ad51593ca3b9a94fd66bbbf6a91afd5a8ea8e5dbc997cfc31aaa4b6b2ef5264c9eedc48864b7c746ed4bd7e84638b930a992d57a44445b17fb40d19b710823d0a173231176efad8231e1791e0df7581d64c77f2d420e6fa9c6c1b5ea2b47c09af5570abd7097e4878acbfd09abe79cfae753bb96a019df32c476610f806bc008c2006e85c81efc5f1f91874a72641fc692b0cea7351e772b6e365d38b31368d912db4ff79a5f991843ed6d390aa7ac23f85cfd280647e455a764af85877093b15fe69fb4cdaab04171605f5ff2f163d871cb3f34cc51de32ff35af8a66743f9aa4f833f27cc991715a13a6fcd477224d40fea9bccda8f98906676ed15bcd287e0a3dfdfab94dd0c1005f3b82a9ea63123b786f02037149e6b3d9ed56df3341ae1faf72ab99cc644de48b7417a7dc97581163e5208dc61d17d8caad0970d8825ea0947df692db9cb63f9af217075de6761a0d5e7f7ca1b7b0a291ce4ffef91826cf3713602deb90a254252790977a8165b6203b60e71cc188361be38226efeb825d640d83ff58e03bc8b330c51d96ec453e371e57501ab63a4e94ca6c3b2c5e53e468c18cfd5265ac0f0709ac88ae15d684a9b1ca5c7b2ea5f0f262d020106f5dec9e4bbf17666ba8ec3b0070f310b800e7bf1d76db6b286c3552aae1f58187c786bb83ef28d2b4e3f9cd47ef7716434beca3e0eb1a7606771952f1c98fa9eb9e756a140635fd439647d0e03cd1d96a6777b5690b905bf27063ed1424c44c2c51e4f53e83f79f6fff07ed981ece0e9ca686258b8fccebba4798775282839bf936b0fc69f7c18541df4bfee1909365c77d84f88e82c55310afffb42ce8c37468044179b887aaf980face51383faf235c0728d27ec3699f379eb83e054f3b6e1257f19a8c6d0a3b139ad4e97b0ffadcd482e52cf8888867ebd1dda48124ea287830073408774c938d0d144d19974a76eccfeedeb8d607e62446ba0090c775bcb4723cbe52860be7ed22b5b71ea0f7db6cf6c30eea0a6beaf5bf0de9e20c5343e066d737ab1181dc6fb05cbf62a92a168ca053f91153a968714661fa08bdc0d17638535b129f43f15d1049bcb16602a5f79bab2b7f35549cdda46b65d8159261b87798f3a75055198f9e7e898f3d854e015a3912f2070efa0fe88535c346c97c3d99c54eac5582c1fa3b046e7bc763c8db739aff43765069e0e62f41cdf401b1eb75871175740f4f6ece2f41cc558be7781ffd0ccd00838016b5a4f648b9ab150cc701ed8a85b876f8be021c2b69883f66bd1076547a61bd10307f76349f146f85af47f993f7fe04107a96296b38b95bf84f8652698bb2f3aa766eae0ca943b8223264b6a44cc8f1d4f19868fd2f50fc2ffb20cf1b2e4e6c966bfa65304aa31d5eb8f2f50f984cd90b1ad96f876b2601088b56483134746e6b35586f79eb7bb25f8c472fd40655349d6ee387343f5eec45ed7fe817c0722d39bf4e6e866a3e6bbe5f28005353cae97269aeab30b2d5267ab599ab10c99c543e392be74b969e2619c614dc15519313880c57425dfe6870989694ea409b90abc196c587e7b47dcfccb71e2c0166c310e05eeda3b712052674ed35d09e56ce8cb70c95dc5cfda4e1e31053617d0a193fe3e650bb19118a4777368859f66d9e28fe98d4e3d61d50dbda10b2bbcb4cccf550331d57f5d17d671e94dbc3962948ce7f77b73046b68765fcdcb7c7f24ead9b8f55a6fb6a5d8eee1e4d568a922498b577aead90b7db4b3de7fc74d46cc592f2a4610548a574e45ca04c1555deceb6026b84b8648b958e2747db36e4087a18f289f03440b20746739c9edc7b05ec4efe2402cf20ca62fe79e94ac0d93ccbadcbdea03d0e2cbf086e4df557fe9c1304bc2a7a52a32eb1a0021dfd11e47d2af4f13c92720ce374d4bb8c28eb13183139a9a7fd925623673c58bc0cc36a129d6d3d86eabd2a63b735da27b112b5230527bec9e3634edb5c94dd5874e9fc363d7b889953fd009f4900427c2d54c038a2424be147c0d3e4df7101bc9492045eb7ab5cc6786e2043a2818d1ee0be9ca6f0f39c5d897f100f2e7f855bb0cb40c8ce598b328c2b76346b8342ec2ffc7bf22b9cefecca19cd40fff1d56c723a48b2d69acb25c3b7d084041eeaaa23f09d0962ec6d9b737c72eafa05bcfa644596d93b7db7d8d79bdab8ff5a6042ede9376ff98b33caaeeec1113d47f5bf76cce429f896c2f584121c93a3a785b35c64e140280f8e3ceb05f591d7ac79907e71d4f920e403740bc5d5b76a17bc276856a8a6793df6465daa370f4d837acab370255c59f5ecd4b397c6658376dad8ab132f064ea87b607b2bae481727649f320903b15c6e481743862e30502c7f1ce3bc751a58919cf47f6479e8248f6c047a7523d177d419e38a90a01ee9edec90724031e42121c458eaf06aad52a778c1ef73bee20bad388bd8b675d79840db44deead14084ede835fe705bcef77a62645a5f9c260decc0828206f3815bcce4b651879bd82fd0058c43de54c35b2fead567d7bfd189b2b2cd61b674dd667e7db4191071fe280d67b202f002353bcedbec25f96b561b5d5bc5535330a39e7b9a7329ef350e45c9055dcd8f1baf48e033a38a27895574e26142b9fc5fa81ee375bd97cee6d0b2d06bbcf55db1d6a6d74c80ed63aacfdb8190dff8b0e85eb66018a41cf9cb6f6fadd9421246a2516d4a5f628a363513a9c1b591f8a9cd42678f9207974a678ad00da976802394402cfdde1002276e53ccbd3642a8c9027be82b10238ab0ff14fb7a257fdc75312961bd7ee8d8c46bca45c62c737816707424172f759b3aecbf6d5f55c68a259872020ce580f53f32c6aa4d2835dd473886ba28449a15bb00ca765d6d1f32582c22f7975b6324917907a427f3dfd06294be7cd1771a65f7bd4ab8f5e75e3f55415b9d8803c99732e0667217ec104f66d6cff08de4c09d682733ac7d7b365f7a4a40449858de60688ccb65aed56adb0765b5d22821ccf48b607e1c66687406408638b2fe0c39f9187e1c627a3274f97fc21090cde02b43c3734daad1d97aea4d55499f2b8804bd3513fc638488bab166f06ecdea920a89c5e4f3487b52e1889faf26375192e86cb380cbf61e261212a0c29edee42c15699ff04cbeec5fb79eb869da9bbef6d4ab1242aabc044263ac58f3005098874ea7439d0b28050ecdafe93b66600a27ac8178c1e3ebc690f614120a4360acfabeafabfa1975cfd4ba82a4bd900e0d293edc56ba83cd8ba99c63bf674681b51ffc0e883786e9a8fa1fa3e0c621a2ab59240aa518983f1dd45cb8f1090dda27e757f6806bee9bb7a4b3e18fe92e0c72ced540a856fd33471a91b114d765c5196981bf0639d6f8b00f52ce22f5bcb2fd5fbb174c9b702e86b676f6ba85ba52d61b8560b2a8d33ef0aa24431db6e7eb37a721090b1b09ca053a43affa70d1c13f5a65fa35e00a02dd0f61d9ba63f5856077a6f8667d2835ef03c008daeb8d0c0264f74edd9602aba10fe070a36d3740e89e26a8f14868b107e446b4cbe5b95b95414c419e6975f43151fbacaf9b5e511bf93f40e59708129f02bc673bf2ab8d1036b05fb970666ea139b573bdb1f4e09b1a33ce4c97ea43ce67ca5b2a052db6cba83656eab869fbc9182c709409028aac224fc0bc922fc105bc39ccdb76599bd2b0db762882c35442d4be93dad481df4a7b196b9b8e2b1eec1bad7c9120593827ac7f38f765bb85a48a168f18f92be519921287f9b278808c197c3058a4b23ad48c64b446c7426c24e97d5bceb747931cd44fb0fa089f1fd544a030e431ae86cfc55f29e42dd83d762d8cb29794ae57407622e7cd4cf2ca65d5e2cb7d5ab4b0ac01a7797a6f6300050e2f93602be391b7d4a91036d6fd63ae4f8fd1fdc5d5851f0df9aa22c8a01279028cc1a9e8231624737f72a2d9145e5d3ff117dadab0814e9fe766844493a08ea60643ddd5adad91e7a13ad78363461e61ccf741abba59f5e9317b861f612f3c31f7e5b2ebf795403a63f825b22b39a8d5cfcd4ab98873571b735d8ff5ee17293a41b6a49c8bfd3f84661f3649ae671c38be7b2c641969023ce39f55ef8803744708897389438bd8d6a7895d6ca096b4b1a5e58d10418a60128c7e4046eb72c9dd3474bb9125d6c6b520f28817f2a1c1640c76e15d52591bf61e5658c40539ca0c5a5398b2c1ec45aeda78b4dd19f4f9c8669ad1facf0c4ebd8b2ac721e8ffc1b1d0465a65fbcde9d42822f4cd0f1218d38642bdea760e882d9420e9615fc0adea8a2e4a7067ed493450550cc19f10c901f463444e387d9f9ada03ed91ee4b927337347e5bf4b67b761e609a91c117eba94577e400caad539d55c0048bf7c422e8c943befb67045d53cdf2cc0034e51b1caafaa49d4da3bf0ba6e9259a1a22b723628978c558a7ae8d189eac49ad4c977dbeeed3bc2d9a9c9d87355a2f0eb29239dafac5d9ade4fe889b5ef4a492b2656ebc58d27cb98254e677fe9ff671927abff7cd7eff5cf563c2620d7a3f4e90dad6cbc0f0a7367ce48ebac15afc6a379c645afd5efa118406b61cec266509f46276f8b55b091b5f8ff914a153bf28e8c30ec7c93af2a6347cfb7c1e80e2c6fea30de44718c3dd3660b9f6e54952cd40e3f75b3443dcd918f2a2332bbfde9766e93dcf8b10b759c07c87477613ef94b0e7858f855a18773a271d52817ab0ebf5e377fc1b30550aef47a0be624d9d83fae0d698c878b44516373816eedd6ec907b893c1939060846954b27a5c9cce51b7773b064c20085e1c34fbda27734118105cecd515b67d6c0a27c98c397d12cbd2b319d324e2993731926a5e457ab0f91347188cc6db9bd560c9dd4b74a543540b13f243a6f280a72e617fa243d2779f2c6f99af4f508b612e2cf791abf3d0d876ef802ceecdb43c6057db6e81719ef408981eb05ce252b6e95904771ff003f1f93536095cecfce306ac03e0446ed4e768f12f9d205d16db3e79dab838dd66add16c7d8212877281d7c12c8033975923a2056136d014a0d78a9f00c3ff57ac150d0a9085776cc63979a1e01cdc9bee8420f861fd2383df8160733334a388ba13121acc1bb6e4bc790b440aec2dc592b6de138ac8d9f3eebc079fcad2f5e2bb351536c98e40a691669cad2f9afb3d10dff0a9b5cd3141728dfa126a1ceb76576ca4caa53446da3546b1d7e48a7eeb987ffa3f917e70a0604f6618a90020d172ac1eae46753f319a9ac36bc1ebd3d5f539b60eacd8617e8b09af3399e1526b1f26360783366807771fbf4d633979200b6972d0ebfcd06b7453ebd656a8e3ac9594748376e23f99449684f6477dd492b22b8fdf3bfb0e1a448265e40d97597b5f05b4dd73a808485550689e86daaeb02ec003a591c07067f4d91c011c85df5a1457a4b4516e48ee43b3b437b5f6b162b8d4d856a0fed07bff4f41b73a5dc21e499a4ab10b254c4428882339826bee2ee9bfab06d6b50af52505bd68db08f42995717dfdf1d8a35443c26738cdb45901046a2d007cc380231efca8111f6f8b3fcf87670ae1e2a000168ea45448fe4a845e0ea677147797563ebbd3da13d143e3e33509a73b15d99413e6f370eccafd086de26d884fbb383974773f7c2298f849e77bb766a19cab6d629ee13ecaaf1300331e718331d0503e1b1fa46fd59e2eda448398579b91b3ab5cd5ed1802430f021ad8b38d44ed501d841bebf26317893c2efa2709b9e556f8c2fa0dadeceeda6771a4c98eef63ad5e3fe8b4daaa7655fcabbab5e2d76b3a5ad32b2977be90407318ef5d6f4c0361f87cafd1347d35ffb7f159e4c98e38cb19b6769f0b30a971071594aca7179068fa12f3c9ba76cd99e1d76e2d19f87cb7b5f2b3be31f56c81f11852081e931c444bfde95614ba115a0f9d985be6534b72e7de084bce0c32e7c03750575576ed7a7468a2e7e944e71cdc50910e993c6ab3b739d2ff9d338e02304f1691eb4562137f99281fc7c36bdd578ae13ad16778f5a264aa06c003fa8f1ce4054568ac081ce044eb54cd0fcd3e084c1da59d2d28f7cdec7a81108bf334107697155bae9b267526561136c06e077937ec6c0250473c4a560d0553626af9588b5e35cad330c690ec2394a5797ea15c72817ecfbc9c8c6a5b5b1a2d8fb6cab1f71cf0f0a03e1617c838514de5c29a3cdf911fc74363712712f3bef0ba7af67a1ffc234ef87833aa33ef6dde794425ba8b4967147b4dbb93a91fdf368899b3823959c00240b9bde6c3a0434c806a975e763bc1114c8cfd60b12be44911d5975dd16f4d8064495ab012dde35efe49ebfb0dc96c5fe2460d741dfe2560d9c6204f0c94628712f2328e17318e15712f3f9d0c09fd49f74f888977876ea6ba9d2ec2729c2f76c21d74177f993bd980df550790c7db80b3a94beaf0f0811a9b7684514091f3e66e3bd06fd3ba157f19a613c991d3c21ca196fb2f46439035f2334a607cb5869e104dfcd387c2fb1a900e03dc207041f6678b7f19a747c766696f8e425d84d0ca393730363964ffa1c00ad4d4fe693c4c4e52806f14b9c05d2180bef5b74b4f916af8a9eab5bee85c4d62d7a382046abab716f0f8e5780c2566972f697ea296edf86729649e14b02a6a7e82e5e2aad87f1cdc807f6a5db10cdca49a568e18c8dfa57d7500b12c0693dd09f1c249156415331928e4d35da7646f0a99aa522321eb396cd6e412decca821686062545b431446cda343e1525a0791272f7df9786de4c20a99ea27c59abcceb9b2e7df3f7b6cf06af02af93f2bb4896a3d9a40c28f104d218f9bcb5d39dfb9ffed0446dc69ebb960d2dba51cef39eee50e9a1ac9fc92312f8e3efdc72a3471f1bc1a6bb33d124edd51a1a5626e717e5fcc89ae103d2c542aedf3504c1d140047ece83f1f7a3c47aa37340139e507f96c082474117148ea870ce2b74d7aff2489efce98fd7716c89d942fdaf08519ae7a36996e2ac85da598ca7171b6db6063f65c9c7c7be0635d303b95e3acf29bda862ee8c7b6099b5ae30d9b3716901f9bae6cf14ce03516e2394362b678c49816f4adc64e9d0de681b23e41f897190210227f2f6a4449b35fb5863374c909386014d219991d412a267aca9fadadb0e00ab495f93431c40b25b125fa695dc19a8df5a1fecc9428f72015a2c627d1bda77e9cd6448f42a2418d3d02c0a4b461852f8783625272d76ebb19bc26d9005f2a5b570bf93e04b21e3142447caae851da2e69c42bef9a78840eaf8f2ef8afeac4775b2221d46f18bb7c9ed7f7c87d6ee4ae9114f20f07c78abc5d9bf687b963cf3f66adabf4a1cc73e3dfe9c1ace48871fe7f07473f7f9812de4fdffd198606e08a6463bb2f9819312c256e3432c7e5bca1e1958e0df84f193c5561f65afcc1dd4ae49e87ba0a1efd8f7b9d88a2e7bc29bf659a67eb34668731caaaa1bc04b6e2f905dcccb8bf50eaa41f72fbce4dbbcd78fa57a4b807ebfecd3047bdce60bdeef1173fcdf207f6494f912a02bcb982cbfcd6efd209b9fff913e549ff1857df6918610de11a6fac323357c98eced7267d5684eb5566e358396cd6c622883cdc7687233097040ce15660a39764ad7eaf6e4a8eb70c0152bf82a8995604c034a6151f8bb6656f47592b32c89e7c48539a28c7a4228cad4193af2f7896cee49ae415280f52ea4662ab5d9e912e7ab88b57cab4bde2e613b9450b2d5aa836ad6470d972c9d9ba7a7ec39a6b245a2fe82dcc742d360e06658bda01dd8ab1c8cf79d9e69b68c7c5cf6f62a50afa79313a13d0846809a29111ff6c1e515f5a441d6ae24b60aeb8424d2499bc0beda57d9c2eb19de2f2fe684500a95945b95009da2401d02bdeef32270652526a0f3f2dbc0eaf838cb867ab293d52b8e038c5932854e1f64a1bd2714853c7112931693a4b5a7ec60ae985502f88be397bb1ec0897c7e0d26a796b55de080936f8928a548a10c83b5011e450e4625416c31e80d321e992a7506de9de87ab7a30e03dcec488aca9491dcc735e15a2144edbe83e503d903c5cf35e1d7b0ae7539f2adea462cce531012e15072d3eb20f874dbf668ab8a65abe6059fe52aeba1f9403cd3e9853ade60821f9d94a8a21ea3be9b33e088bfb19941838252ca4a93e2a8d29147723323f5761120489e8ba603aea878fa7df4fdd7ec73c51d91631636d5f7f61dcd32c2abd9c4208f4f2abbd71004f268aee22bdad8babe53aca971790ae7da5a5cb6d864091bf4a5cade5631113a55412780102602de765cf6905337291af21f51eaeaa463bd9916e5c2649f7d8b46feff225ac37f589fdd3e8b16a7722fb5e8641efdd8eaed68b5cf7e0776ea0364f3abf06ed5b0a23faf495e7bdad74eaa612ff49dbfc23e64615f6848b3de05fd1a1f007ab6b82934e8ec4840444976689c56be956330664b70d7e7f37056c7558a781e602408d81107c2da46c50219a5ac1be1273fe06ac36992fadc0ee655347eb019bc07e66fbfa7a6915f4e6ff25b0b34887498e873e00d215da81aa47c788891162e8fcf62ee9182759ef7f80b0e679f8416681dd43b4117b5b66be9c0908863b5130f14f0e6135fee685aed11b9ad51f8e49bf3e5ed7f9a3c5712448fe3849015f82f669d40712039d3127745e31316ab9e9225e4a500cb33d39396f238e2c290d7eded1a025f37a5b4416560d5274372f2cf50206ecd336ee66fa63400217a2f4f7532dcc295054f961c6922467e8cc9f71372513db9c24b3369528f791298e4a724dc12a269444f0ff9610811f2d0ef207be58f531bd4128fc446654be7b4616aa4f642d516ead59ea4277caef3cb022b31a9136666d3de39b81f15a0ce869380e8086b485b2ab17c37638428c8118e02e578817d730fdc80f7e355185e8489341873974c0c9f14f7bb7a40972f859a6a57f528f42cedd1be4f620483683409d9a4362fba4b24fb0dc9846f66067025b37fde7644ed8ea16bd506eecb046d665a24b7ecbf7910a4f0044fef8daa0a9ec7bc0b0fc01c64ea8cf0661348956a79e9840a77123d3655bd74d9771a6d87446f73b5aeb489b7d23636952e5d9877c89f0f0bd3cb6d8ff3ca6ddd2854f0800fcaa2e827e7221dc9157aca73dbe8d15c5cf4ae7ffe33ce432832320b8a5635f6e833e0033b5afe59e9e450b49d8357dd2911ec54b00a275fdda1e7d873bdd2acfe762d87fa88312fbbb9b0386cdb4f8d444b114ac061391a0ebb439d7e8bac5522f1f2074c7a900774a04418dc602e47e2a1f9dc214f48cd54917973a473a5417278d6065f375a10678123d5cf0470d563b8e978bec82f5565c7a7d05374511c291373f53ef8b6d52863505befd58617aa030fbb275e728cae01bc2305b36f698a0c477b4e477e17a49a74a0ea043fbe1391757a537d434ad6499b7b59aade6ea7d707018ded6c438adaa113c15ebe88d18d423f2e2b69759cc960202a074d2ecc657f3674c0ffe922d1a9a8296b4369304edb6a8c778c7ded0b4ec895c737fce0a92d6968499f4f85d465bc8e74314f4f71d42945dcf9f317bd7af4c80b4edad4e1c9d473cd8c3ae61242df5cb47242da16b889ebe1c1af0acbc7353047a873c8b935a391281c01e73ccf8d98c56490be205332c27e0f0c298e2f7d0a4618f5d2dbf6357069512d260488a7577da81d654faeff87bb6103946be238d5d997ec196eb95e9fbe865880bb25d7b5d0ea51ebeb6c4d4c1eaf8d21142f7b4f423458699143fb3393ef324e9a18102140a137fa25b3ea7a2966dd62ab495fc6f2d9e30ffdff0c5eeea63ed84ede82bf4dea97eb0de6948ec521d6d14d5643e996feae60568c86ca81252e5f9b5c5605bc4914951fdbd1211781c8326567a6782a642b2dcd5f4dbdc6e67e779c6c7822954b2621dff608ca8ee57d40da0d18efd14b4ae28cc863f63a75c7bcb42580945d7e29265487429eb8f619a47e9038a2119d97f82a1d25bf83a5b4ec9a52c9016a2274caabc4ff438163856a89c7c2fc9d03f13f66aef30bbf783a1de0fcbcc0a818e6f23f1d6db919dec43d90f64bb14ce50b685d61cfab1039cf88fe5d93912357ce43c2f52831bb44720d489ba79e5dba7c9a4d51971417522d1efbd540824007db8114775b2a3facf0a6a995ded64d210e8bc17b674b87b503029a10010b841ea8ef7317eef1455d478bdbbf1287b7b9a2ba8542811c617c664f996b9894c23f7fff484956002ab5b60c652eaf3598771573a67f36fff63e56e33857357e054f62642b3dacc22381cfcd0eb29a3f3907511b63764645c6d1e213b5e087f7bd9ea07d020c678cf6cdccbfbd5f4417e32ba025476f220b79bad2f8c9f2d46a4e3b5a4c104cba4875edfbeba0830c5f62966aac2250e2152aa8e1532202b0fe9c17392ea1b63a86cc83ec8555a26889b8da2eaa1f5237a5130a6ea4f2f2daf5cdbd99f582beefec49b547768064e3f6f108cdb036de2953bb9630599024c7810bca7a5c8520f1f7a2096906284c8e2b956583cf4e409cf7d6d5e88da74a29aa0317dea2e2f72a09aa5820d07ae96cf845a21efee525189e74aaeca6f140ed1a977a79b2fcd2107d8c1875cef35bb8321e0084862e329242ced03e0ca8172874c74b7bca66bdb860a24fd33046ec5e6a1faa59c36646b9767e6c063f11d9ac9ad04f397220e0734aaf399cd085e7e055ba0ee6c427f33a091a79210fc080e537659f32967df3f6355c105ea0d2ab2846c4f0fb3d2c481230cf9519c9a707f095463023be963966b4e07678efbc84fd432c2e26327865ad31b0329c68d2e9c04794f09d9547cf69afb3911080d0b5959d0b3fbedf67f7a3267e6418329b76807191422ad06385bef6768b46454f05c5aaeb47291e754e5c97ce47fbcd95779f8ed0c1e389377ba12bf6cb037334f7677f60eeabe17d8d8c24918051e9ac5a477b3a79359415fd22ad5ac6d37e1ca08dc18bb79489627ef1ea4be860f7ffb0929ab2045a589994249a06addf7ea19b62546647513ea967977c40eb20a2b6983ae1c4ff2f29c699babbaa483c9ae9c4531f97c3e268b695e84c5a2232b5a71e191cd81e744dc8d4c86e186ac8ee143789b6a639461655d03aa2770b301583886938c6bdb995ef29dc8766aaf2a09c702c91a9614f159050f754f50176b88c23ceaab1fee7e6f331c2301676109032b28b64bf8dc82bbf30a3a05191e68de6265027d1edb3e0cf0229dab72191f7f98aea3842682a2d5b43006f54405bc6579d133de71b05b68ec6e31c212e8ab7f8228f410dbcb276399ebad2e2cab63bb81e8b6a9d99c986a04e23c389ce4fedc1ccc318062e9851651d90ca6cc9fce9071f0da3f08a7392ceee2052504b270c1225342252010ec1155537ab32256212b67932006ef5f477dcc024641409dce2eed9c439722b6946f22cb0c9311f8ade5a7fc64e81ae2946091d26a6b37f77976d90c6930c8da54bb448385e5db9e3fabee26bbd020b0fe8b30123624428c91c1ffde7692730f7976306fa52e2cf2c9800a36ea311a44d9e9a1a380143b5b958b39ed251d50324294ed433b56ad6f8df9ccf5c87e3162ce19b4eb26841fee1623789ecf79260de0ff9103722833ddc6bf48d8d7b33e8078ecae8a90e33ff6322d6bfa3e13414a9c138c8dc6d572a78e10600d8ccb73d4e3eac596d842000ec321771b699760710420bdfd91724b2fa33fa38db74719ddbcce5ac256d728c270c9fb781c7bc0de45ec63e445759e4777307f325bad5a735c0610182d7ec64415c7eac36b752be69a2ed7a04e3cb86504ddbb35f90723bb1134ab3689339b6b1b0dae4fb6ff1f949c1410690f8648468ed34ab22f60098202afc7367b991edceb625e41b5da04bf88be04c892f7ea08bcb56500fc4b4ddfba0359a49f760e87c5e449ffe1876d5a10c0d29c59993f0429b8fc06895ce3260d6cfd355d358fd5c681ca9adfd06e3e0ea4b9e4295693d4d52675dcd3ac9181335f202c2262dc29567c6c2e4e3d03d59a66e5d9dd7f1867b0dbb750c3591cbc3c02ed81e03289958aef646a94a07f5f4df60831fb48af03c0cb8f3a8803821faeaf105a03f850e7af4358c9b88a17c61fb9c87f49493e97607a58a23d514864ec754d513bb1777283b9702759d371235609f515b6fe9ac05e82fc23c96ad8126e97dca0ca79ba3151e4c4b52c164d7effb094d392480262b4114422ed7debe2f10ba13a6d14d027ab2d0e84413234632171bfc5a4eb20b91b6873a5573907ecf3fb29499466791f0f4eaf1a54ca425064804894860eac3fad5d39ff39550ab9644885bd6ffb212d71d70adf34c6f9242304390a9abe89d642daed8d9e09c9903502e2d42b8010944bad293c2cd02308149c1a43236a89fd685c20394393b985a5f102c0db4727f18686b1c9b3d8c9755dd711472f68ac193d74768138b4b01e5b0f81d6c5c834cd476e2beba7913767cebac81f976ffe0bb649da3de630aeaa3e0cdeff281ad4f870449aa14af10fc71c3f29b0c71bfe9a7a15f95f6052b991b9c9663c1e7edd53743d61890db571a381d0e7d8f56d957097a4115a2765cd3477dde577ecd566e2dd617a3e1eda2bd0c6d0ddb30d48a2ae1cd81200893cd62e0413261000255451df09fda01d2502ebdd1234f0faf50e5ce9270afed7abbc08b1ea44b9ba18784c0468f4b33f9d01f464605d99dfa07a2cb11be23d990b83b2ed14d5a97b7c444822fe85104f0be5eb10f5e0d26dd8716497d170d697ba7153ebf7d03893c40aa188266827b481892ad303f552e01337dc8f7bd65d89995343b22f5d575085cc31708aa8caadd0725fb22fe9a5fc281b6315de2bb98d8cc23e020a5b90f9fa9bc4aba9c2b95d10606ebc10618421d36505abd480c35efe8328430acb774e818cfea458062a291cf0992ab35ec6a234cef60bcc2a66755af5e98467ffb3211c33a9c33e4e85321356aecd1a1dbd9b508323e44563fcc29388440d8b9e0ab7f1b67b775606d95ed91d1e1cb8bafdef8fc4a96956361cdf9d50a63a94751bd4ca71c53e7182af6e930043c8f6b3e6693c0abe3529c11eb3f19d5393d51ab3dd96209c2eb1a44d2f2fc93499b22d6ac508bebb497cc001be0dab77b05560dfeee6a36fb310d48eaeda48e85cbb0fe7fc888364431f6f7c04f258ee544e962f927150257bd742d9a8875b882e56ef1a5db210906178b461a2a4fbd867af9dcaa890cf1cbc2785e41d6ffc3af8bcc976bc6496ce2002a3a9bbae3650bb9bca4416c28fc05673774c168b6ac40b998e60b1ddb8bfe5c946bc3c9be9c47fe8965ffb2ac583a104752a291c5dbae98f7a2bca42182061efc3d7727e2ce204a1241da50cfa6f0974de2e3e244839d3b141d1981b69cf172bc5ab066b5c02f18490d1d8542fa41333f0f45deab04d8e080ab6dbd31c51bf453a844cfb37896885141cd10e8d67b606e98a1f7a9283d91236012c3b9a89ed9b669d2ecc0bb5b649faf112efa2b1728280686723d24d673eff54610706baf0a03f7b2fffeeb8e9ac5d253dcb384a1195ad4db9f7c337de71e0ee494f9bfc82571b5e23b90f327c3cbf11181cafe268febcc3534ebf124784d07a6d1094c372dcae2e49a20f4a96bb66587682efca1cd0b73aa943c39186c34c2350a9a11c48db5c7b5c697018a9a095d6ea3ded23d6f319fd8f352b05fc6f33a8125ef5ba6417d460133d10152797893ff3b5b5b113a3d873af487328233d6e865bd9d8091be5fd773c55b6ade4fd4e04faf310af4eefb87446e20c3423d66c7a2ca4d6c9beae3c235a6aaf503c6563737d25b244dd3bf694632e43a589556fe7a6b072fabf71fad429387a7e6915283abd1ef885adbe38ba0d9c2f6e0bcca0edc8d07212773e8729ff0184b4ae8924b28ad33d15ae05dc63a85fbe7f0bbf0139dc3fb7c867bc47ee3b09f542c2ef18a43bdfbad17b6e856614eec2dfd1a622d3a616a3ef65a43370771b8d5faeaae06a4a00f430b6ae0a14ab831cbdd270ae816dd714253643a4ab18029007c9d024a0e197bb252e4ca809379fea3321fbc47b7ee5ee58fafc72374011c282a8acdebc6c2cc2b6fd23881e7b84d1b32d9d25804a09306cf8c46705e09c7499013caa574ae8b6a678e4972cadb94e3a3c9e299609ef9b6a0fa4f751c87da2cf2cb3e8eae71af8cfd092afad878a1dd392bb8e0388a6f3207e3b535d42901c37a8f9b24ce2b3d3153b0408673a86ab103da51141ff24be117439c5c78a36c6aa4b269c4241c9570d5c66019d8fff9c6e6580d8f7cdc0a00a44e560ab1ed6e1840d0a44db8718b3bfc5b83989108d61d0b165ad5179b647dcf59800cd57576d2226a9b9771e7c25285a4ef30cd18bd88dc4e00826a1a7def66240947e45a88ec518b7adae8e78804f784ecbd9cf9905c0ff72eccd771619edffdebf0c093910a9a820757324b23727f435c08a8518d5bfec108da8ddecca1ff308cad13d7fed560983db2acb740186fb52886752b1f00836a2cd9a77f410141f68da471e73ef93a9b1c597682d07e8344a38ccf7cfa3f2f5858913f7600936553b88b428145972d033a4c98aeea5d49692396f2f20d0f0380aaf5e51421c0afcd2b847ffe0a35de4c2b576f9eebe0bb1f890ffbf18f24ef6f42951d314d40e1214cec7205f4c319ccd196c9e0798dc621b75d5236d35976efe9d97d53146d19cfa2425e099aeac8af6b2fd43364c4844ee34aff39c9917d353f13155590bf64112e48eb29af2d56c95d99fdb1eccd159396eb4cc6326375614a7e5da31c838fefe19e384f5081e6433de145a866e1d051894395645308d48d609b1ebc045a4acf22b944a3eb757cd115cd8b9d610c2867ac5fd6009adecb2212689b3f419855639945d618fb4d3b59f5bb25f9ec7edcfa3f3dcd63b98d5f1f294ecba1be0d812aff061b604d6330805459cf0101fc0d4aa583057aa67fe323916153f6a013c9248618cd23f4bc76a9da261a381eb7b0afc3d57e9e88fe7595cfbd1337a0d985289364f15e4ea817176b3a63beca9f23ed7122224cd18abbcb361550dc5a214dc0af0196e1e8fe035d3cd3e276f70cb80d0d21986f5417a5e093d7e2f2ee70c57fa8a20d619824c9faa91fca9cb6e87624ebcdd7f3d377bc92132694776900b419a204ea585facfa626eb659fe8fe657c0c5711df4ad5f86d2f4152e3c87c0f05c1d47c9e1aa82da926e5f51c4f458ab39bca94dd027e16795b4011542edb9ac156144d380e50ad6abb4bd62aae610477dd84011610fd79694226bb4219e44e95da233639a0792fc8ae1e3bdc582fa0d58b30a503647c9d447424326cdd211661dcfda936912a5a31f7d3c94bc2959b09b1fb7481b188bb33f791aea332491f0d828166e8a6b3f0ef476ab6630769a6d92d2eb3f0ee25877bc2a58a94b4a12a0406f14d8a288da8f07f4b80e465dacdf83310414dd6f321364301dbba64feebc637c060b863430d3a37ff78d0be783561cb20d77a686202f3da0a9eb12646832ff4b2b2492a73457e38ad7e3d18c1bf7f519c9d8367f6bb645c188c44418c4d3bb54b75b051d6ca3c027094911d3f08e9f552df55da9ddb909169d2aae2b890f7028a714e326067b94777425a9c3d513a39cfd0cb8d144a8ab5f242ef99c1c37bf9f88afe296a09a66efae741060747bb76cca56d8f58e69afbf6c2d1d97175b2cc0d26cd18f040bd11fb6821f2b5ba4f57fd6e6bb22e4ae50573025d7cc3131041d68b7ae4dc77b37fd7e1cf9995b64a5b227ac10fb7eaf36d57c6023ec7153d30f7a4ebf56637d53bad4a1d5a128ebe57702e577f11075f40934f503d1d4a2709fba51eba7c0c617b8b3458373acbf7f2469f2d221217af7eeea83380fd4be44bf086922341dd2ba9750ada57cd1beb28374f60dc05ace59bb4e5596cd0604d0e5860512598c166e635805882de9f80c859ddcfd386f5a2012f9b65505740437a6407f73ac3b06d82ff1826a8033cd1f6f596cbf3605cb28cef1e9cdb6489164e87831ede0d965e85e1ef1e5a16d19ca97727f46a86e5e40ceb532fa025e5a75a50379a138a9ed82a092cba4f847b7a2eb6e0de2c144f84c763107999f81a71059cd6bbdedcd1ab5ed4ca9be12f3c86a38a55b670661956f4a36654a1d796cec71184bac71a487145b4a90d8ee0ac997db64032303dee1940885a40f94f248fb0f2aff65db48efcb6dff9f97743a26f031af2c5adf017ab4ddacd1ec40ae005e0379274b0720e57bad5875ce47bdd6cd03abcd1eab5fa702f7bad318ae5a1980d015a67d583847e11b080a3bd432f2a551a1cf92cf3c196ed5da96fb99a610b00536c106697e06fac459f23139cae46545c957c80a4b396065201691ffa579718264c87ff0a1a20341deb96950de57a66bd7c9b35d0db01e99d30bc72b1de32c5c40538c226cee4822f73981b79126076d92a8f5d0b02117b698289c8a4504d0e7a3707d469b976257aae321f78eae0444251a6510e1b7895f8d86b1fd76ca80c901114dee65d28df616ce13f4d6dd3e4e56b642a59a82984b5313cd6e2fde66c9ee7018db0682328e57edbbd64becd3cc5884e49e8b733880bb04c3202c8def1282d8c1256a87faa9e8813ff641ae289fadf3bcff875a4551139d7daa7ffb9f08df7e8a26fa6cec39798220fcf4e90da0ff69525dd82709403ea125ca7ca7ad3445f27f73a364706eb7d3a1b2f55e594a542f176e17ea9638ff3c2a6ed8d81976c5a48cd478a14ba36fd50f6dcf373ec6895cc30407eefd1eca3188dc9094d4daaea496634a36c59df51f0964c868b705ab312872657ec63c9a97149c486c99c57b8bd077a29fa1322a57c94ee4ed47f64e62ef2c8fbd39202dad2f709952a3d0175cd784904d649f76449afa0f442cc417922ac8752594b3002ff166220797e359fc088773fc512c5a48c49ae0d27dfb3590e34233e436dff91b00bb8dab5c0a28130877912b0b9e1f119e860daf293095b11cd00c8d14e5c25cc9d333faef9858718cb711a4f3ce645d1b620913c99f5d230ff7e9e6f376d395979e1af68336940da2b4c19dccfd000da0225de63f4b48a3e145a59c0e35c96adafeb6f5a0b32ad1d87eacb2b57f71415bdb478387c853e549c2036f804f5377f33627c703380b02f3e61a9f6f0c9ceacfef6eff85b6c258aeab73e8ebe08bf7f5d938552f05bbc21b6439d3e6865e24b7f531103924c3b0394f00bc62aafb5bb69f48a2d9c341777d7000fb0c1f5a8501d638a99754d4747f62a9642d54d3037f899dbc1252f529d904fc894b2e8b7445b70a8342b91d827b00bc6cf3e7395288d407d668dc4cac651ab8c6f27f03bfce08757ee2f3bb31a2440b7d45b8196c111e53b3268b051ff90e0739fbdd4c103f418c3bbd2c66709f952df6c1528a3ad50ede380612f517c44a9597a4718576e07263a51b6ad0e139b908afac7af614c7ae06899b58d0c3b6d59f4254c682ca92b0539bf545e62a2b8fb6021c313f635a3affa4fb605d3f88a9b641786e023b595b0ba117782b187c451e57bcdec21c6428e4b1d49ee3f72213d5089641df5091fa7337dbf95637b761f200b9e2b8742b65a884a6839e29f3a0bda68891ed171c95cd8ee20cc098b49e5e85362a397afbc96c57fa142e557e4be08324bf9af5f343b112860483678fc4b7f593a64fb8efaefe23896ed9455aff96ef4345bb29d25323ee79ca293fd12696629bbe57791785827637b14d7283152264185dc40b408d82b02c3bef6435313b4786e01a2bd22af17ac9b46f4f882706f13ae22d3156b1adcc019f3648e494746e74ebde4ab47f849d8d4d64957bf3a89ddd7d288ee7e7e8439b67e4849c49b90d94de6a63f1d2637cf163abf978a1191c35b54fe719af1e3e805504d3657c6f37dcf7a99b43a714de7e7b51846881c7eb6476307a5b7295244451ba063d82fd17e2ce578ee1c41c563e25e8158e2a68991e07239ecf4952a8d0bc189fae498cc163206cbb8a3a4fa033367e6b0c58b96941ae06f1b13df74bfbe04a1b658ceedb8a20f640b925a4dfa1dbdfd57e2b2699621f4b35df9f7ec0f1a930c04d96d9442af2ebc77116ac99e74f9119eee9cc511d4b6321033becc0fae588f584dba6fb98206609a2e4b1ab8239eedf62300bbc045912a966c2af9365e2859586080ecebb8fa05cb579f8a43a8a47ff7bd74c0d13ac0fa3ef8107547e1b1d5bc000bcbe6e249124de179123b935c13557f3163e2af96be924d723bb744c8f3c0e227cf1604f893f18538b6f60b9a35272bd8a2d352901ebd845be30f65f89e0bfb3bbc1916890473ddebb76c4834a1f60d524a3c06344159dc56affd786f65ae07680fb6868b54d2ec4f5dc21ad4cc5471bcd7b560c60595386cea99863184d305bd292db4f20ea493544c556112f4d02865c5802dccf27c9cb1b456e99fd323b880dc1f75419d8b1d36c0a392e6b52008d74505ea5c8245b36ba1d4d24f4ec2288289899184f619b42519403965a23b69f6c4854b45b6914cbec8d4c3302cf81f7e49ea451d43e4e981884a71ce51faa82dc0f0b5f91d0ad8ec2e6c1503cc51ad93ca94c25b3fee309fdbc16decde82a7a9c71fc358b812ee2aa397741ee5f9a5c8d838ace966736120a75af3c1de6d4ba6baf9c43d5b11c8fc77515d88bb951d9ec22f9b0433b139df5472dc882f18fdca90de3be38a81c327b754a75a50c2f2b40bc49d88f593d764d621960039072a97427b5e15eb05e332b3cbf779c89741821faab2ca1a0f3ff2fd69a20c789ec3dea2a49834b4c24c7718424a9c8345ef13f6234f43dc78da18c0f116a36fa6be563b200808d68fcac0df546f9f9dee23e5dcd5dc08ae78f4e2dfd41b0b594e93317e520060b2fc4a7ec4c48a2fd46bc7c2d526361af1f63d8cc78f706b2d63bfcbdea1868899b25f8220c293bd0a7d0ac03d232d79b40349ca8f2be5a8e26f4468a3fed68b727ebe534f83d5c5e641e03aae3c07158fd910a5776be194f55b27fd8167dd44392dc20dfb786f663e8680f049eefc84dcf86edf4ee3dd6b9be6f10f5a73c0413c72e9d0f4bdd645538ce521e840b892e6d6a4ef948ce7a3340e2fa29de05376444154c37ab251c913844fc8cf66db94c5c3d5874ea6200bdb0cf22d3beba3be10624ba10d0d7c9bdccbbfd9f42a7c9901798aaed3693e36251450b21ab26d31cf85b7dd370dc682746c7e9de9bba2603e3a2f6718650b3f795be1cf7f45a4427ed2a752e8e6f3873cff9610f66eca267c9093ea3119e4d2886542f5e20fefb55fabcc8142ef9a6cce52575a0774643fb76f6c6f1ad23a91d09a969b132b2861e778fc64068ea77183afd4506917567ff005d182f58a14ba34780093b5dbdebecf55b2cef178db6d9d92630d7c1a7777e889bef056188c2c159a2a5f6bddd4503ed28c5abd4847340c142191d7e0157f171f933c4ec04eb572ddc1a33f6280d22171cced9609d54a09f06c798fab708eac4b95a938de1cadffa9f6a01fa88d3b341fd8c73b03bff0035b67c488e03ce99c8c6cd39b2e4ce73539febf78cf59924aa6bb2214971675975b79a5136823990e4ba4d68ae548f0cb57932f4b2e778edc0aa163f2bc3cdd8563ce693b7f41b8a7d52c0958c00d9c23b0729043b32f0beed45edb57596adbf045d56c7ef9a68b8c07d94295d9ade48b25dbb1ad0cf949c480e81661622b154b76c01ce0d0d86d16f6e4b5a424cd187029145e522f060511b7d9bfbb8adfb9bbb0070f870f4e898d5568575c1c275ace3ce6369289b7517d77ee0c48f43969eec9e5245992f6626f44e5d77d5e096c8f011ea24fa72353be138ac2473ec1698969d9bf47e0b0340cd4c02b05a4d5d199580ec6794b96bc9db434c33c1d532fc4df27063e56d01785f4c0a38fc47f3dba0a09964a0c0c24a0251430d98c9f31d81b5537e333a0ff746193955d39124ebb63eaee894fba2433cf7a19a396a7124606ae10a3a9db83cecb4794b0e22b9e46f88ec3671c86518d1a58bf2d9a43152927c241aee4347bb8c4d13888a87c2269885559bf988af7a9f5c3610afea0e3128ee4f0e439cd6573dc8a7affed4bd8d491a594d52f95b00ad175a1d232bda52966ab4fddfcc0a791ffac97ccb4f0c339ae6755e450a9c5283c4e70eefbec67827e713f78449a930c5cd98da5bc5a3f504b88e3046c7e61c038cf91f70357d1f153d705b6dada4400ff95228be08b986ea3796b4b54fe925f789dabdcdc792acdd63f11bdd9774a18ebc77b3c721700c41eb08a2576c71fe3fa04e625aea1b3553c51cd44045721f79e3c48555aa9c7926e25ec4d61ac26cbef711cfdfd734bc8a87787d6bbd97e22e22478d8517ff003c5d6f4e6fd3492914ff79ddb3366654b64606396934c6b3e36938529a0e9096e8543808e641a5b6c5dcb7dffad4650359a805f86e2752ca179014db666ce5f29aaf2ac7cb9cb9a2525c8730a85b3cc64578f6975640e008a1fcb75d3a926794be6ecb8ff9aeb6df313ec4c6c63a1f3a59906830ced41a684e1b06a8df481e6e33a3eeee6abd0a679fed9eb7a28d76c5dc7a5f5ab6c31bcc3f454e26fab7e6094507a9fae8205505f4155d9596970f5f3d3f0970a0b71e67b9dc0f785e055369e6733347fcec9fe212dca6413445c36bcaaad21c9e78acb8971e0d214c14e0cbf19844551d38ef51099c7548563e0ea4c3767906b257adeecba03e1d28348ea767a8acac8767a169a4c7d27038512578987ee9b6a3f30f9e0315f9d9d14339a915be55499f7e9a552e942e3cf4a5e0ed210d53a4f5011c7a0b58be9ef9896560d9d3b5d8511e9dc65231277d1a8040a1817f3360ad976ff1ac203f69a4e0ac9b878b69f4ac0bc4b536109ab1fc3970fcc91e3d1f9ce2c702420a8ba8334bc5822ab81880d0c5a0c274feaa050a87f67e4af83794f32f2d7f0b43dff6663efc8b2344eb0154aecc4958c9be4a4eb78e37249798cc732fe90dc64ebf3e5fa78270d2fd368ed04527aa660a70c75c511358522a92ee5f4790bd1b4be595d0d400b0edc4859364f9e32d448baea820a2e9449e0c02d245efe17ce34253b4903c62204a5eb2ac59c9767d14c294c10fd87b5b1f6adf5d2ea1f0262c5763437859a12fc397c45d65d3749573b684addb427110ea222958674e07a1a79674c8919e3a33962c19b6d802dd0aa57912b709ded785b3517d25afc3a53382a965c8b49da423858038833ac5ca0c18ae4d248540eff3ca3484e7000990630dc030a9d4f4dcdccbc8fb860855abb30de41c1e102912cdc2cb2bb5aa05f15c1a7914d72061db14246372c8b83f2024fe2afa5a02ad187298f1a2171d85f2fae3f888cac0fc05a8e51ce3e66f1a28b35a4d97d18bbff6a37dc862e3268622e601316414eeebff3ee64b0c5c77a1ebf87038c463f359e2aa96bc1a12e8ca5e0fdb3c932cb1f39719984373c8446cb4e2d8b3b3c7990058c70f2dbba2b9059a3c267163fb7145ff246f34700f4f945f6676b7bab9b90e18b53dfa7c06f6222cd9dc6d6b15548f66ec099c39e332cd90defd68751493eb074f48e3c956abd99e864d2c42d8b9cd8b5c1d9153071bf0cedfacfbd4c4a3d464556c7755a2c31cabe223c0025f48d73bbcd01aac4d84e121d6a651e9dc1ce4c67173071265c52b7314d6f8fe121ca4838cef074e1f15f575b6a7bd2346267bcb5dc2913c8a098d3e6eb8ad81d40306d9798b9660c804efa6b4f7ea29805e466d3a67c829bad0287c1f9a7282da54a0c35b23ffc6838fa4dbc81c97c1046916fd10bd2aa6e656ab02d8bab2fb40edee2ecedd7b064de1557d5ae1ff367fe6ccd258fd5ba75c58f1f3a836a81f18c41c1f8bcf086739997529ea54cbd3ed142ccf19122a54f8a451883e11317965ed00e1f4da781dc95322d6f88ec33e919878c9895dca11ac1d6d3ecf2adcb2d3fed4331cef72b9642f20af33e5fd4e0e81d80a5caebaa98b6b0ff2deff1df17eabc6eda78e81133be07c1da5122c2c4ed8df002265d0064f6983a2acdf8770fd4f3b0bd30a845de449a5c5f9a2643ea707978807652a4334c3b9a1c58fb1a445dd1c0e4db1adb67b1f399946f3a417dbe9987a93444e02ff9a72792cfde3502fea8667ec9b66c6163b26b8b3b4ccb30a5e3e1eb0614bc568f6e5e349c6698eb2f2800edc1e7964a1cc27944a21c927feaed1e0e349489f0245eb063e3aaf7bf15de00259a6579cda5bd9e72a4f26d7cd62c28f67db55a14d29700a203e36ab523686b5b640d3b0b5303670d6807d5323918c1bf1e82863caa8c29cd43aaed604a0d5b0498d585f8ae3698b390aa69978bdbfb22e26928eba3b476293fa4e12e667f7f21cb6605cae921a7dd51936c080ec2bd2a95289f5e2048283cd8cd896bf5f096e0d6bbea70d7e940e0a46d425e062b453b46bd0e56050af475bcd68edb56abf88981ed6b27914fbfbe4c76f78b7f74a1680f7edde59a3c82adc2967ce412d80dbf07f7400d0c4bb9cd91e3b7cf2cf5341d6551365c9f2fef69ae114245f13dd3081fd227d436a27325dfeb577352d03810237b893543724cfd2183b65edd485cb64bc2617c704069e4ab76cb1cd628368cd1380821ff971c6fc99b0f0cdbd14d0ba40832216afac9415ae7aeaed8fa8f05dd9d2c1576abda360870690b8ec261be5a8264d5c51af56ff6fcbdb87badf700babd2e74d5de71c6b39744f615dee4c7aae5c48f048c054fff745c78b440f4492f378f4065c5c2e4a4a506ca40af3980fe69a42795b443efa2fa0f694ed5637940a190613a6622d8296d740056da550e6ca958611622ade318ef02657f2ff4cb722fbaf73cc4d860a3823d38fcd64126e172b90a1ef1766404c38255afbea948662058c1f40ba383d6036f6dfb649b179815a5271777854108ec827355a75b37fd2ef88ecd733324bdfb00c2dde4152cb0677c2e0914f4a4f6fc17180d4635e78b4beec7c5ffac6fdfa446d6b01bf555036ba5545a3a92a5460afc1c44a537c5ca57d1feb8c5261780647fb169cf942e93fc07ebdeaa62a9b94f0fcd2469b4c2847dfc95b8032f5a25984a3aad17df44276c90cac79b1a985affd2649dc7d40b3cfd0e74245647e148362c3fff34d9bbf632b2d04101a5dd403deb22a73c130e3fff6bc8759f626838d20d0f9a3e17397741e16bd876a13cc18ea4e82ecdc0cee706b8dfedbf6a3971cab8a170fd4223ab851638ed58e270f66e6b6a41d57f91ff2462089b0fbb7600485e501dd99930895c4fabd675eda1cb4d53f05c90c8ce80eb188765a9a535b23c141ebfd16c45579a0cd2775e7ea5f2f992a60ac5657a31724d9b16faee6819bd50900720a2a212b7d41b63c602127059017e213ff899cf70b7938bb24d9bbaea7017fb3a34643f75ae37da931d21a75f9f9c540e732bca90d3f28630f079e321330726b1b04fb90aa8003d3826620f630e5eefd09d5bc09d5ea3d1adf72ef9453d1f4879b7f25f6c547ab9a9a63cfe4f15e4e0ac940c4129dd3c9e09f68b47d698a3b81c7f11b8de46dd4edfdd422eb91c3779fb46ac848b165860cc77049bec2e0505645165dc5697b375003d54ee71b3f67916f65a1be895f3891a76782f66501a8cfc0cab57886505ff91ed8f22310b9a5c27bd61c90228e8e0a6e3cebd3e32e717e4a001c2b55195fcc9471781b77b40f05307f90b3e646d5e592460b2946cf6b74594983b7bff2cc4dc5aa0b416fc11b125125f00121daeca4b9030d6e47a415ed981ae1ed399f95f8568d84e02ae2f7b93723ea7a7f16c86f1f5faf4ca3da900c695df82864df8fd436996b48651347ba79064be09bfb834bc120b4afc79fe407c11c46b14ca7230cd87dd6d1dcd447e5526c8aa8928b136531ee8bd3f559addfdcbdebcdbc78b11eda0af83d9aab003b8c4df2c8c155b2b803fcf3edfde866c8caddb4cfd7ddb9bb1c8afd5519922b2944f48d9ee3085e54614febd6c833723c8341eb2fc281cca07c4949102e96012bb7dbb8f9c69bc893b2ccd9bbc9ad1acddf29fa29f89e64f178f6b361a129eb18a5a566ab47250c60d8d9a8ca6da0451800c1f01ed677efd90d8a9cd092e590db0c52fdfdb4468576c2e844075df73ed13bc9cf17509af20d4831044bb7bceeaf1f33e0ef2982649d87cf257ecaaac8398d02b8f44bdb77447245e0c04daf7fbbaec91755f6fdea9bbd9f26e731eb15d9f290f1de55548738287d175c5531df4e509d485aa8b579e1b18624944840f0bd03d28cdffa58d18ec2b7c602f8ff56d347c24d1cef3220a8a03e76971088bb84996b575e2064e6c44c16439c55c5645c3c83cce1173ff3d8fd5bc9d393954a47b5161d02ad6156226b27968182d7546c145e769b5194e5ea0c14d47648dd1b0e5a09f1c7bf673e2ef97539aa698b754a79ec5e0f5ba9673db699d7151dbf75790485d3fc44a460fa6bfc78fedd6136b3352679b356b1c572e6783f6ffdf3281f124feb9393d16155cac4a5d914601187236b006170882ed41c7b5418bb9ddfb61a0ab12753a851b5b96224465eaf85634f18ea289b07e617f8ba37a896e4ba03d3ef387a734c926cae6698f42e885e9697e03c17c46a250c9261f1f42665f594615b529fa1f39fcdcbce11edc0ae691faae75affff2291c0f02d958ececb598e84d62b16574e95ba16a9489283f3ad1e2a35b44149ee4cfb4faa99703b15cf78da48bb35cb158215af747029018470b8b56300b5e7a2751e6e0ad3a484a1b0541ecbf049cd72b1df89ec067c64bc5318a13ba882579d2c750f82d5231ad4b88838aba6b56ebfab9a84cd32a1d34425947f8a051dcd26473697b5bc46bb842b05ef9e1fab9752dbea22548f4234f90d9377955ed6b7f215e5d16da5e82aa48fc624516ab7e03e7bc51ff8c34a2bfc7dbc9df46bf1ec143a001681a9ff1a821d98391cf11c7a70308c1e537074fcad67765c46970df9a4325a087843bb93a263779918c4c1d752435af955914305ba2c350980e93e0512a25497c72b7f4cbeb9a9710917bbf07cc870303a059337fb675ad20087b7bf2f6c365c2fa8b232c7d6add6cf465c0f98ad276d448056be886fd38f121843acc1289a4cb8aaf901123794a150021ba6c3ca121e4e3cc4d6d3f33f2f9e64090f1d5a0fc7b5186b892bc137512ded4f18752be49c0e569818824014af7b74bb2b91b1a71ab7985a3aca70fb67b97f8d4f13265392d0a2600d683a80efe31b46b3fe79171a73413ebbe399e3300639fa959a3b3229f86a1dd9b3484d3f6e44280e217ff31b0946d850cc8e6886043b124ef452c12c20c3d8a3ca86a311b5a0d67c62d90177b37a2844040a9c6f3f5285ae8255cbbf59cd137c28a11de7c6a14b8511ecd64b1c0e0abe4506b0f2131b124fd53f57aca28a0ed5ef314437de5e6a5ae386fa36d24b21de921f21fe9323bb3ec92f0418805a3ecdf2484ef558782414d1aa1e6c1c1de6c229d0aab5b9f6864f613883da92eab403dde15f9913fed1361b398e4314d0d09ca46e28d1eafe2785f431df85c58f3bd123b66248fc740ce605bbd12368b6457faa57288ebadf86ef2a45b5f04d212361c24e0750489226e87f5cb63bcdab9c6343dc15310c91f0b7ac02a94b7387a62bd4f349f77d4e1395425ab03a48f16d6db12f6a5ed2d2e2a4a1e41a9bff9e3dd7bd27f97c367b6640a93e170431d9e53b8c98af27a786b7bb6536a7d1da56289803f848e9944d9003040e09fe1101f117749147bc071d029981fd2ae0110f7e41a599355fcd6712212ec92683bdcd8ea27f768935b1e104dcc96e63c5347d8363c51104bc36b91bb3f88e85a02704044be7d25d2ff1c44b4b460a3ce2e52d7d7fc99a8cf1af7b6c609bd453b5aa6cd0d9326d244f054563db40358bb5fc4889e1346a64e012b95ca087e13d45c7d1bfee2c12aa588f48175b7413be4ea201e2e60f9fdeccbdd149f97aedb7d9421e5e74c1f4bfbb5bf85b0a8845d25850c19e16569fa04a1c0cda055d6a5bb83c8a9fd5416c20e78ae611dfa5acca41c504223c86da7aefd656f2da6e5858d1e5b0163e31ecd8667dbb9a02104f98e4bab8e51d4a05eb72f98d458300a8fa74df0eba2c4793ea02bc23866170db4dfe776dba1f68f1795dcffba475e939c8f6d17a68129e9cfed03ce8a2bd8fc4faf7617ad27407c5d14791a5982e0e6a2c0cff2cb2724f9e3ad4038cd40e610bd1bb23f59c6e9aa0cbad4804cde29857a563622d5d32fd8f7dec7368a1bc509b04d090347c4ca4539148c7d9a54f01d57715d7d3316a5bf4762927a9c228007264a20b82ebee3cbe17f94f3bc35b0b45c746f9e9e1b46ec672a2ffe930a2276d7384cab83ecd4114f3bb494f5b228d5047f8d3c56b0b726d4a93f2476b33e0a6c8817a1710864d243f7086861a1dbd745054c566576ffdbb773f825f3f968cd81e1c12818a1fece5d7b7fa086b09036ae36342c30400cc67047a4d16a57ba3ad929bcbeed5c2f804a5c5dc3560bd3f0e5f8420bd79f2c248e8d20995a7d506b38f12fbf74762956b134b91edf7f7300489666e7378394834ea35ef00e52cc52d7817528acbe4489f54b009021d702de85e506c69823dd17de2fe3fbb1d5d30b67769b2de692777a3118709acffb5815879b7af844a781a3d724498f11808d340628e598ee7ee3a30d939ecde1eb10eaf6ac8e26a79263f0c9f9be7bb698295bb47e49feaab7491955ebf17b45360a0c32210329aa8d44d8c328842e27e4577a16aff2bd9e358e9869b724c11af3e75b867c0db46a114fdd28f06f9f6fc2cc859e38bed6fcf93e2af96ec8d83cba90bff6f3d6d183498e5250e46a8f4884c1066807c18831f40752979cbfc40e19b006f5f0fa2c80d37214b1e9f216784d75c85bf5c0c70d1139cf1beac243c66d35dfc3070a2b3a0e4fd19bc699844554a7946c06b77dfe374dede8e4dc17afdbd3d9726709d7345adde1c599848b1aaf1c00ffa3549df95d5b647b19ed9c2041817ea6f6f29b3703b8b12629eec1ab2a1f47cecb79040b61a2c9e5ef29af1fb5f9709ec42fcfb68ae1b7e92aa36f42d4fb39e09ebd2eab120490198596e1e6173ca52b32230bd3b13cff766086ac01fd83395afdecb749b287981f979104cfae0ca4883aa259f9f0103fd4990bcf407c8c4349e483aeb51cd552a27c4afc519971df4590742e6e028a83e07dbd2a55e06d0faf1235b64d20bd6d6b0a43e7212a3517bcd6d5314dc43a662c42b91e650e853a661368fa21b9b017b73bd5948ed468cdb61cf8dac7fd93d6705332741e8bb584af29b9f0717344cf7e6caa4bb36bdcca48e17fdaac826f72e64deb0c6a47e21c7ac674eb2fd6b5c31df744e026e6a9b3fc57055582c78a6eff8ac0e1765575fdb81c1c7c74825fc5f010751b28b6ababd35594edbc37020f46f81d51b65bda585723e9a50ba845c6d3d3e570800bff0ac44c2fa0dd86deaf61e185bda3f404169ed345e0858a8dea9e7c900597018a22aaff4a6c80c4835d84d50c7c716be85c1cbb4ee976150229050945066ed17210dd244ccfa53240fdc2d6de12f56efd3265085868cce9917b7689284e849ca2a4d901140fc1bcc4051a90b6c76c65c2273412686066e1cc9fe7ad305dd54a4b55b52671545575a2c72065677ef8043811cbf8b9725bc16a67a14eaa9e71435e434bd4a9952bafd445adcc57e7dfb564d89a693bf192b6c59879f4b4ff687c124f5544f3506b1e359eea8dfffdff0ccf5589bd0fc19e435a5f17aec3d5017c643ce3fefd1620ed0602a4256cd7f95d063e66a20c0dff794d4c25d21d15766a92e7e1a466e5f5d56a3ec6cfc1c0fcfd191e61403ec839b4e2e692a860d7b0409f89a41b45513627e9d4596fb3ad4551206892546100708905cd4757f931c675d30ca2d1a0815007f1a377d50bf7ad26b18fe9096a005b5ec363ead8ae5c1f4a3871d8e8f6f97573501ffab52869e3356c361272ff42dbcacf179c36152895f41e41886fb6341638bc18edee7aa223ce70682260fa348306fe2dcdb71ac4f28297153a74c50d43924b18fea508c294e4e2e8230fe9c7c7b1cb238a3d7dd69a34fc2a40aefdfc4740fb446f25eb6595ba6d8eca6e91d4c09cd49fe48852e14873660526a8a820fe862bdd4e50d1f99d45bdafe928674da39f5af259be7ff928533525c0d50918a718203ff5fb7b558d5b03a07a7215415f34c525591241cdbfb08dcbcdc3d3ad58d981810b7b3fab7a67743b4683fbac0b441e9f4a2da7fa5c98d4ce5e9bb0524334dc9b9c2c86c66614ca83831fac1f0a86944ebb7f15b611a0367f6f87bb675d141f1ff3ef4f9a66ecc14cfdf66d2b0ce2f86f8d71c3c06542219b6c2706593d9a1f7e45f4ab1f21649bf890bdb9a8648140db50113caf4415c953911d15882c5814e672793f84ba2b9d4418c9bfc84e9f07e524abe07fddeda56151f46106bd341ba752bdc5a886e7902510b1e2f714b30bcfc57862816e9ff028410ad71f6c13b32c587f8bef1ca441b48ee438904142aec8a76e4a89370829ee2df056b51b0a41868d3af25aa772012a5a6b0c5c4384777f4104737a0c8d931a58a935676c398c7f2674f0fb869b25ed320f5de82f048e3fe8b78e1b42f9b690018aba8f425541492e438fb0a7be87ada2fa5ca78d9843a4dff89e3deff5dc10c204a30d008a70b111846b321d0a0391e272f2e24f5c87d87e147a32bcf095ad5393a1de3cb20dec07013875e368fb6faab2387f6ecf71678dbd4f93ba573350c90bd98908c070eb9b363a55dc2cd421fb13fc8cc3e8ba9c39c71b57ff844f4d611f625afed3d548d841cc95644077d935a743ac18ae41754ab73339f99142096674c969b6bbddbcd7f3da2f1a5dd091120ec13e8eda891f6fe5be6fbd8fadaccec88f7a5d780b28bcfc66f0ad1e528a47f1636ac636360ccef737b2c44ef1e891cfa9a27dfd482b4e9e0667da0972d3f3afc5eb7d89948e35afef8fd2f5b8ccdc0600c6418f6050c75c6424dac828eb1ef8bdb87c72100d901f881601256aa89f99efe0bd0683c288b2bd48f7ef7169dfcfce720815bcc17da37bc82a47b902237bc82206cac596c0e163620e96cfbcfa36b5a94232cf0a361493e32c01169d964f4fd81e759ea43f9d3b9c1eeec7f60ff1e1ed1c37234b121170f7bb633988cc603d260f086aee0168403c41d862a89f38f2b2ccccb65a646c05ccc4a19d4892d2be93a0ede9992b39fe71a211adce82134102e9ad29877a251b989392010b5a86f3649555c0787c281775554439cfa2c158fd9bdd4424f3b1cc873b34e8e825a271c55f2cf7207ca5c2f31db99b840447753092e170acc1ba0893f8b71a3de77ac1c2a3717a95e00147d188d6ed5a78620cb5914a3b7187db13a4855f2108c4b6de160ece987ef1e58434eee94b7c815a4224e3aad8db2165050ea197cd64f4d7bac2491087f2e99b6be636f0570d46ea7359f6149c3d909e49533949b00c2a05b9781ea8ddcd9afd82007f35b6799a40ac04ed5f823093811e3cfc4fa3ecb3d033d7014e189ccf3561ebefab91d07973310df5baa887a77a193d42623fc9cff3f772a5c41810387537ad6bcb15317d02f9c39c8bd0cf3e46a12d907b65f3db6fc3b14b09a00cd8304688e3a4f34624032de68a2ee05f579f724e2908b70c5b4bcd74ed56d83c407e63e97395e0d6005aad6f44f562f9d5151ba06ba51cdcfb2c3d937a17ce3c11a877a69fae165b17f48a3deaa605f9420d8089f0474032176bb024bf3df0518b23008d447ad2af064c8d8018dd1a17cd9658ceabfd11de55c2b79bb78993b32ca69040233ad4cfc8a6afff51d117b8b393afd5824f43b170ca56b05de87063a0384d691424e2a01e5c9f2aa19218cd7a4f6640167bcd943c6c851a387721967fca7032456545d0f82e3ffc582659448a8baecfb75a6aad7410b21c37b3a9aba7f8c61815e84abf6f3227ad1fcabd091bc8919bc6d61a90f4fa3edea701e9b7266e32096ff1c27f1cf82136ad684a9793706999eb289e86544afb9548112c9b008629cfb7ab82e0e4ccaba2e755ab15b6736772f00effe31960b484c7889caa4e9a34d3ab9ee4898c9978334792ad0c42ba0daa2a480769ed09a6bf3617cae87bbb7229c6e4442a9d94ef50ac28c2a3ebe0b414b55dc6b889a0ffca3e422ace9f6013f00aa885b27753ab4d11b58172ca94079ef1c20fdd537566041a3d94a13900defd4e118aa2a0f0f9f8c1c523e1a1f3865f0dd1f8dacf5372dda2aac560ce66ace0565ebc6599ed5d0103940819a55b050781fd5e57639031e6fe6bdc382b0fea2b67448abfd82e0d275384308598282a8dc7f05e4b181aa3a7b084dd8e4eb61b17201ee547b4f0743eb0f9c3e272f6f23bc5cfddc851493d4e1aac319839e3546cbea4c0f74cdcb1028a4a8ae1df232c05991f02cfa4b16724bb5b24832c21bec61b1e96c5d07315b84c1173544679fc28d228b62e4711fedcb108662f0f39182108fae351a3e5a99eada510f2330b5a2c44a42b7fc694d3ad4dbe8b7608cd33b4d6d2aaa33ff6a534234719a550a9911ff3c85222f909293ab87e8b048657742538a6eef4e418fa483364e56c3b6dc034d28763595b493b4d02a642c036b55505bce4398f60ffc9dd8075f5cdf2465ca64edf59694a11b4641d0bf1c3b90fe39d93a718b886e1eadac3166ad2aab6acede0b573cfcfca350b8cc1bbe50335421170f59cad2c7d679014638a9a323e4c491e98b585ee33d202d32d29d0bd2525c89580dab2b557fd08351d3f7d4b76ab93040c6557a4b7953ff595a7aa1ceb56307fb16c2c851aa22cc2d797b8931e8c697ae88e451150fab184760452f79234cba822efcce7fbf9b2762445b2e6f089a03d4580fb762b71e111acf6201a87308c60eb83d14506dfe5e9cc1fc8547b8b0dba244e5302f1e05604f094481b534f87b2384e4eb0b7e333743a9eb014c6539b82ee4eea906e1ed7253fdab83152abefccbcf98a1be4c592237e616b1015f5b0662e9dc5e4ac796d6a7f2899d0acf265756e316fd8fcfeb1e9dcaac1efa658e85dd19906f8e33146bf21c3500984e59669eb27ff1ee038fd6d5fdf56c2edb714c44665af628dfb58ea8b531ff626da29c59111e8bb1bd26e2da80a49ab5f22999f81687704df7ee3c4cd6445afb43bffc60da71c331e5d32d23d5a6130a8fe0eecd2ceaf644cd9b35a84e5bc8c9b05bf8faaa681e9292117ed8aa0d40eb5813c23fb05387a491b43b8d4ab81b6fc4ab7b32d50aa27fe99d27a0fd393b7d3375b7e9e4282cd6dca9f7117ef694519af0aba66eba40712f212dfa38c2cd5d680aea97cfaa726435d282c25cc8e7694ef2ee3e43ed79fed91613f388a397d050f6ae469698e397fc215b533c244b38456bbd07617ebfca58ad5672e3063ef676ce8c60c0e1b0224d9d56eda36a46f034687e830c7cabcc02996a34702f003e0733129d12d78c206f6351f24f0a1212ab5188db8a3ad5ccc6d2d33232ce5ab5dd3d0e3554c69d589635d688b9bb7d230ad62857b85348cca88aa4a75fbb6246a91fc64d8b6afc6e9dc97765e481c0eb1ccd32d4c4a9617226094c1716189c136820b54c6fb7e635a11f0ac4deb8c2de6c2b44c9452dc3a2e11acde6075006c56d43bbdaa6e01b554279a5ad8dda44622d5d6a3f1032f70a9697fe9f7f1a03e4b85c97f21a5ec16e3372ec3e158c63a955f92999846320b226bcb6bdab3c0da1bea54f858fd25dc6cceb203f8fe92abf14f15934a0872335fcdae4c9c3c075c362a9921ef1477337f6c779ebd53f4d571a401da06bbde0f1d79ac2fb8347e0b01c172a5a44d523e5505bfb7753eb4953cf65b27ded25935cf107ec130e431349bfe3598754fa78b6d833a4dea8ca51331edc92d7a4852aa2862b6dcfeba61bb7a8555d82486c7684f4153f2c26d5ce0adc720bdfb1a711101f733b001c9405ec5cd584c2ca15ababe9145dbe9f5767dfed64359cbc855cdce896351e14646b77ea222795112634f01380b41cc9c7597b800535ed9d8622f56885264370c0e6de6a4872ad39152e084ed15681abf2372783e290c94539a035e9591c35c19c92cacc73428429a2e2c29ddd9d32a1d90491a1d2b138b478a0b3207e7516e0f3e52f1d2e5309ceac4e5ad2a28714b5a95a9c440657c5143493a7c69d15f76b4595f6ae0ebb52d05f062486759c11a7ff2fdd5dbfa06b0de82c385fad94e2b724fa554e1031114b3eb3f311e48507a78f3dc0d3ae454a330944f412bb75c5fd749c15e1a7d2ef77fb9680e4a1bffca95a9ce1838fd80f256b8e697253fc01016abce14a1afe5b637953a7adde0edea09b492fbc863f863f3446552402a820485dd70dbe2c279556f79af8c3bf80ddc6e9826b97026b1b7aaf68aa18da5bbf91db416071dc4fc5dfeb3c537bd4ca7113fab0ef5c9421897a54df7b64eb524cefd5a1927e50c8f627e8a957c30605a225d88a34101f4509c11faa41978671c60e7d7982ea2f9b4f3d0eec6fa532569038b1b664058519f6b9f58b66038d69495c21a38bf10f03c9f964359205caa5001f2389cb8a63c189b05ffa4c76bfa8cb2169e1a7cbeb56f1ab830ef4b7493fd609ec5b74ed4a0f0cd7b58269f244e02159397c5f5901685b8e0871088366525f4fe6f4a955e0006fa3f5257f62a3f847f8ab8c6713edb96b3fd381422349f8ef268f887c6d8537a47111801f87771d356727e428bd20f8c9bc456a44372a651199209999366387d5bb7e00860bad1369a6513cc6b2e9ab6732a2b0ee2e97f5c681aa1401d426e9c287aca5c1dd67770e9a0be282684201da5eb5bd0ca055bc3d50008965739a73590a8c7efac61597c9e06e5e08edc3fabf0071f195128eca7f5275bd5d02ea5e339109b96fa26cc82dc9e99c0c89112c2f93f7f26242597c1e4d7a3881196a8000789e4d79ca3d8a87811bea99dd406e3d69cb0ba22c569d0ba3e808b92fb2e98716b3d01118c5ca8cc2db359a628056f53e974169446e68469ea5bab937a0162f71465133546fd59d664990436e4e6b33234902b0bd69da6335038e6f34493a06a647d579d6cea9a824d21e8f8b43cc2d1514df95c1c9b83d749058a8a20b0fca34157af8b4e7038a522ec37371965c5fa5712457fb09cf21e9089b666e77ab89914cff23e6d5acbea417c05b8e4f2d799210521d99e1f72c645db03c907bcd3514b39ec080126ad04acb50552bf638e48cdbff28ae8392e946d684fa10180fb7dd5dec5197304716a89ee5552a426b2524115ec770145f7066f8ff1d8ec055fd1a989fa37e3ad8a4fa28fa20363f2e6eba1e527675258733c98c7ddb7effdc3493f211baca3030dd7e54451ca216c34cbda02dd66b893148d98596f41ca1774b61557fb7fb982aa22e5bd907cd41dae461b2559b8043a9ee303a8e47b4ee1ddc02b6317d16186619557fe6fd7c8bcb35656efb5ef7a9b4205d207cb33e0f4029c87d0445e895a7e85963e5f341cc0839dc4037a9e53d0a3d6df28ddf2fb770d49b25900a9541edda4205cbcec46471aad5e2898d43b4341296c0e1690abe9a6103ad5eafa9876959917da4c2b8b50964a657b7effd30b1cc49d97faf41241ea692e3247605f107a9cc171c745883f9f5bdab7273330199c29f9975b72e65b0b09a5848b306af315760933cf1aacb3847f068a60b55a2c0014ed7f1245f1bc0d393722570ea9a411defb34025bbbae1213f4f3b2b7cea2e2c049957ab9909a24f582ce5f60c4182a144bd6fd154c0b5483f2c1a988fd109debc1bba8b2353d966fa6f7272595762385cf8d7a5e4c43bd60140f5e29cbac94c56dcda338e5ad3cd5ca0290abaca96171014be15a7a867999b1d980201088b95249831f17bbb4fd2595a8942acac410d67e66fca1e820d49ee4a752981a9bc24fb6ed7b846327d4ebb561cc6a6634074d8922a6558031f8fe0c3c3b51299ff02ef77c0b3fa08744735ce375b42bc1cb3288bb96077db080294c59f3b6f2b861c7b599e18cc6f156e9bdab29fd786269258608b416eec592aa0c9872721df33f0a7ccdab10405b706c949e80e0dee0fad9b0ab84dd36707c25764a1327c78854703b7b57740b21a5ae9bb14147a648185ad8d2a8bc8f7a11bdfa709ea50100cad9c827868039e65e4116a9e8c0492c90f5f5877ac682c34065cabe31c44e1427495a52125670c26f0348e4977bf6b61698a191379370d39bce5eae31362971cc390ddd262568c0ec73fb39c7760f8fd4bd9ae3568f0dc3ca39f2a5b9337d3c7f516105abeb71ac69ddfde44105ac88fff4419febe7df712686032c3c7c2b71cad3bcec047bea3270669d8045f31628e7b51ea43713c30cf33bd62b45448809418de3b07443cb4e4c153215d4ad4df41e5e5ab0cfd569e4f427f14990eadcf9eae385148a291c0888be94348b988399b0464311f38ed393595ba048e5e4e4fa6659b0b776f87c82b0a6a12692579fdb7f40cce3f888da762f08717c6c3150248b125ae03eda9b5b3e59ba257133bb584a3d0ae5f404a970e5bfb8506dbd46578ee7d9d20a9dc059bbd743abe3e4a71bed8eb8d2f5ba40028d0e0cdca89edd7804176bba1a73436a7fcd26ccf70663fed9f1b45b7f92f2b0d84ac884c2b0a37c37f5b0211f4914f09ee551a50c26a8dce68a7fa02169e7bc10b88bb56824183fa7d82afbf7c43362e4b933d881e26096e01bc14350d79b2778c4b8a12fd23030ba13c4391c7d353aef1243172ae62ae28bf5c40adb055d0adc43f71950afd5cde80248f92bffc632d25a79c2d27bd7effd98f40daad0d13c4703b270bc9663eeed15e7366fca21d6ca34d3937270f0da768d65799fa56f4b14f8996e3db52bdbc541b61943799a5cec25d25bd1852ded27ab4dddc0c801bed7991f57894bf03a86782bcbb7f215dbd71bfacdba26ffb08ffe850e0ae929aedcabfafc86256ccc589ba4dfe0a38bc1db67555d0e3d07d455730c978b3bd8ad2dd8a7e62e1accf022dae04e9a6e8ca91476f1283e029dd9d0a884b6b6a4d8fd6303e382bc233006a49b83fcc331b87469215df80e634a9d9fadb3f2f8d14414b72d336d21242d9214d897d0358d45bb7c063048ab174ea500e3043809880b73060b5dc2ec354a3c90470660eec97c8aeda082665be11b45d1f3038a88d470ced738ed84187e8698d4e421253e9d3c73814f719f7477d78f5e9ee543d8438c83831eb1116fcfd0c11e0c1c48f1d376e811959e79518dde1a720bfde847b6cb5e09113da47a148ec431ed8ff7b9d0afed560dad0265033e9044904885fcf16bb2474968eb306117d9cf1ef6505d2f8115e995c92bbbc53a114004e29d339900bd8e98cdadccc1396e30e132d964cc1ad0141d1d367812c868bc468fb1c3bef35fca8c4b7e8758b3033d04078556e7bb0959615c2f29e3130e1f2c3349fcecfe25bce286802520bcd49e759c51b5133a19abad3a7ef7fbf9f608cd5a984715b199ffb9633d85b57b52e731fe6c4c3380fed947f07e11b48d3a7c1db1ad2f89f1ebd2fb9087a5de8c6e5db39cee86c20cf1aad7bc2fdae2968323c58b33a9cf73eaddcafa6fd32181b53900cc1fd6556f3e89865eedb17d0f53256d5dc0c5e34546719f544af2a35f395b2945546845ce78e3f89d3f6a5aa5122d1b42b72f2c462af8e897c10fb11d4cbf61a352b22a63f58f8bc0b5b63a3cf793bc77b81145a92196aa7cfcb5c6280a46d6e74c8d01fc9ad27016d32cbd6ab3d3b7e0a14b88764e2b8e04d2adb3e2b48d14f468eb747b00de616e0ba510fbf9ac35821f171a09f03856f10d23651eddee1e13d9641d54dbe99a9fcf0e4f6bd0abd607cc7d229139606c4ac55c45a65de34270841f3e12be38c102aa09356fb1f3b43de142c692787587dbba7ba4b62562669a3fd3dad226a723f36ad5836c7f7de597782264648b6109b2d3f07f7ed3f9c70795ecd7c6dd9d7f53656bbbfe463127aa5b8895b1a74bc2a39b9d21a31eb41c8e1d1034b3a3811509bbd20273d18511b1642074fb70c53bc5d9d07bbe120c8eeb6880507330fa607cb901054e0790df0a6fe2af145ff38bf33491dbdb1981593e7628ac7481aa3a1b46de40c422ace7b7d77b13a374ebf54de8e786fcd690ba8cbc4c6b38783482d55a2fcb42b22aebde8d382fa645c449b4871d2194d021573dc32484d3c8a1b0a19291c9e56aabac49b3cd04eb4d0e0c51d41a3b0deba89d9c4adf6e70388cdcf8c5c0fd00cb0fa7e7cca7b89597b1e90ea15f4a42b393635b04d3c5cc2b9fca56b7c8909a8c2f5249839e7f9db169e21bc7415d0579c1990cdcdd58b9854c9ebccfeeedede7b81d26f32f3a4ff659e16b2a66479a39151ca8cf34d59dd5ce9f31eb66e5e8a5e62dd78da570c921743034cea5ad3a5a6a780c582649f0d5d2553c35257fae02f6f0db89c4ad7f38ab5073f9d04c9232760877619179c23a62e26c155fde156086d755e3eb87babd2c46666b0213416760e10ed4123532d0e92bd02b8d5628c84cd589ecc102143a1a5510a074275d141ceb59ac2b8ff8e874dc7f5d005ba63fc5d2636ed355fd117d80b8240bc9efc7cbe8c3a3e133dc1c78aa12f15b4280e8cbe3ef58c68e39ac6eda6afc0100724cba5a1d699cd23c57c5af25bb86ef5ff447eae20302f860e8aed97414757b5843b2e91b6941f58a3583ccda5ae5511b67524710ffeea65de52276ebc8b197858fbe7ad526d076ccb541355586ef5645a98260f3723017f017f6c224798476d28f9d21482401331b358654416772579eea4a0a2b1179422cb1571a3b2cf4468b2971e7d35aa97624be6819490712439e548e5bf994dd36f9540eb48f451e56f2a275c2ba43e42eaaa71ca6a0ccdbccee0cdb09c2d3c6c793205cad43492447ba4dc92aa77046d302837e127a06fca3ee07f230925de5970901ed1dbfb05ddc8c018f6f24b49a8d955a01a09089e85330ab865396adc864bf59c9d22ecf3f108566f54e22daeb2f6140954da05c92bffb3f6076a1eafb2eecfa86adfec5add8b60fed5a75f0dc1f792c6133eb74704bc9354772a837ca931d6832736289a2d3a3659763551f927c802b6a6fb68275b2c93468fc46940c70b06eaa0bd3f46648c560b877de11ac6a32dd81b5c9cd42325d001770394da3ad5a0c68cf8befc55c0814b50a91ee17a0dc4216c6f3212a339d291b18e3fc7cefa2a5ec8608a1f0194d07e976d1dfb5ffdfddbc2883cbd0d0d391f090c91b4daa638c502c90b504e1e9615c62672c1853311e9388d1a385b0fdbca5e01821541a4ed6ab54a7b2663b24e52483ffdfdcf6db20cef9b32d9c624ff4410c1b33db70668353649a5b6287bcb6fbdfa803649c7cbe134108c25e24ae38dd45c667458682f42456f725c3dd5ffbd1f05866e419c4e976ee31cc69383505d4492e95d857ceb159eb13be56b134416ef266f520a0fa5d31bf93168233b4e1c0240fb29f9a4a819d8e839b8b1553ba5c570ea54093779d74421627388c2cc5256745c608b749cd6012a3a59d4d4847bc7ff1e88ab22940ec2ea9abea735448efbe536b2093f45aa1b712e802429451b2c892bc0a311192cb2fbbf6f97f17a83b0adfdc8cabc550a39734570abe2c768f93da3b5adfc5818031c48b3ef214980f3a3399aa1d0c8d54a0afa4dee3f8ffee1b94cb188defde655fbabb14801de5e2c6be916c6f6d4c54d0ee235f1955325bd3f2d1cd56cbe80e159c518f4fb8e72e0c91ebe1136020d944a1be80cc9463408006ff39abad2c06ffeb4ea382a1c6689be34f83e5b035eff83bf928d279e7388d4a25597179b419882cb85e104689117a8ecca911fdeac8ca7307b5cebcc9fbcc19a296de29858e7967717cdc4afac5498f44d13a3ab71b79c3f09e0b8b5878763356f63a4b6dd565ab2ae7f5025a788c897088e92f60c3cfecc4f259067fe8433d2e340780239b0e885cfda4fbe03d92436f30bef880252870e08525c2efe36e3e3b1cb7ffb44d789354a87a72125a2126e6ed3784600fb7174122a9471fbeba245b9d780f4471c6e55198e1dade7194c0b16d4f171808df6bea1748920eb9dd3d71584e90165e4d9cb137cb5a9610fe43265f96c80951e33b5ae66d94e5d660be2eae1a73f4417f592b27f24cabe8db06e0c50604a70ee51c0df0f8b05d547d406b8d163dd67e7bc11d55d4c0447a070324852f09875309e3126a2141fc15963d0d849589e3c010fcea01f7f6a009dd58d0c6f56ccd07042cb3f901121d92aa9882d4e683c165f33965433fe8470f05c6dc1fb593e0e608d721b263e4cc018812c991996d310fc3284bd929be0d8ce7356b94223c700d5185436433eb73e28cd60604681dff7a3b7ed4647557e5ea932e68ddf8f5cbd1f81f8272125150128aeeb2d7947d3ffa95754e5562c7825ad35fbb911ea189e0f650b19ac9b2c011accb4dd9920adf21b249c81b04d3cdc82e1b0815a9f97bd752060368009f5e335ec1a93f6656808e15bccf773f7724eaecd7fd6dd908f9d88ef50b3f801be9c4c888c3c64c87aad533923deff9606df66fae3866f2ae70d16c13d8357621ff7ae2bc2a1de0d547feb81612c3ae73fa05e6deb195911f5369d51d0f2a9b1caaa90c5efa65140f741ac29461f315443b38f249c03b076147ddab1129c7e56cb813d95261d12a179bdc08dd5024caa03f0ed0f5a80703d1b136c7b2b26e6ee8e75ae7dfba8dee61e74108c62176e2030aa3758cbf32ce9f8a9e1e08a2347957e05abf323793587900ac09a84fa24522b2ab64dd168e354d84c473ddba612ef6fdf82cdb130c057a1904dbe2bbef136357692d59c165383482946b40032e66f5eb32e94d645bbb974fc1a753eacfe560e3f62197a15b8bfe5eb4120648a510f90e764b626a04a89558ec0fe04d37c5689c9c5bd0ca9b002d03844044b1e72e9cbf8955d67ef4cd4f817a21f4a402b8fe8713ff63710cf193cb9928d6663807e95496abc789f1a231fc9949fb65fb69589de29f536b5bd4d83ff5afdc448c39e0fe12f13c0b2fc1be7fc9ace63b4d05e1c73fbec4400b50f81862c838a08a9ef870a4929bb34b160b35d595aa927e90b7b91e9e81cce127c297c529111b3267985c363c308c39fe41f612d5c0333e392d8e5721796c5aa45a2b503e528993c79cbbd919adafd2461edd77faa7f297cb4b3c0fe23ec2fd35b767cdfb2be55493d6ea3189a4921c2f7521614e5e69623549d9cb858403c156264c8cb18f53ee968b947a100fdc7b13a9472a4eeac4f75d18abde24a8daceecc5d99987b538d324f26a7047c9cd5a9e369fea3ad6a18bcad90a0ead27d75bbc09fa4789985cf941b9b2a6dd133d04032911f4f9aef8af7f6317a959226e68c838b53a9a771f70197f9d1311101bb5fea33eed1f831adb50c1376fb6e18a92dcf0b875a255bef9e25b74ddb6488d261a59efa0806abd0057b26df5254caf58dc9e2e24937aa7d8345492b26f299612ec17d0dc06fd1890972878738f74a470de08e214a3f0de42cde62e36c0814d75eb3881f9e8d81269fdc9c522ab08bb138dc4b7244706732d3c83f84b8d06a98cb630f5e5871d7b9aa57137995fe09b62bebe7311f8d100627a107f4cebced4d891031fd067f158fb29aeb2c9c576a842bab6cf6ecca6481067646e6c46d71b9f48cbf0c4bafc46f103438494b468eb562dbfe1b74aa2d24d59cc98e0a98060b18635aae1e6eddff559a5921128f898f65ac2d2b69c22a3356f8ad188520e257c390477f04af43aad8a8160fe738c1f43baf9e4bc7a4bff990851972bc928249d848d5d8a4546789f9034dff9f32ec8bfcc74ca64ba83417ae7cb8e8c775c79845c3a7d182c9d5de7e9511178d70ce70ca7974bd969f6bdaec413cde70a9859e2e7079d4e70b50268071f7d97baf99ba8569a3ddac512b77cc33bf29bfdb15be35e080af9abd08d5b67196f42f8eb22d70908c9f9250b620413c8130d51df507d3de1c537ac33004d676c0c46057bb414a14000cc2f58fbba3831770ad83fad4e444c0581dea712cf897c3549af68f6b21bf8c5023f34eb62f3631c41715080d2f197fe04b3f92182645f38cdcd14fc8323b503b0f51efa33624018853877fdead323084da17a2b3bab6053a2ce05d7b4d553302855599525201bbffb047b940450e606307d7fd95dd57e077a8a65b739c983263f956d238d4f3d9f7081099a5346ea2c76b3e29fbbaaea3a81f9839c6d3d484bd92ca4688226644b5fcb3180ee42cc07c6d67fe8899d8c2b2cb35095c74d79040b248efbbb683ff57bcce79ec6c53edfb49eb84f41377f319e9fe390c701437f40d57dc9d55ff3d7c471838cc1888563141cf2f07706915157e4f6be7c12a4c627b809ab334f9972667a41067591fbabd76e16c3086cc49f11e166804749f12957ae8e08f214bd92fcd7c268474a8e8529bb11051a5ed071f804b6e7b86d51f3e98ea98e96a5e02efa8089b8f6d43f118e7454bad4b79e61a35f8dc9b1d23f6e8d5bbff27254f81042257f3ac846a5b229575437dff4ce1f7f14335d23b50b3eb89e76c7eb66eb503a6c709ce284674e87900bbeec4732168e42186d13c95a0406f03a611545179fe4428cad9405c6d877aa752af4d351daaa854e17c683a257f180b9ca58b6cd5ec547e7a68ad11034e5c314afdf6fe56fb6f10a1e2fecaf0966e168c912fdd190a391f90334be2e5fb2846da1c7c45d5b5c4b27c80cfd21bee5e0fbf15e50dc8d6be51eebdb0017f4020389560ac75c84564da2514eeeebd0388ef0cc80271a91beee162636e85af68381750fd38238e85afc1feca70dd68ce5dc050b9d06ad12f93586aa62c099f18f87c2f5e1f47c1c1d67624f7628fcb1e764bec9b40028f2b95d76b2a9a3086848550528a73066a10db3d7d953eb4d4c6206e1e714ef147134a9d2647240f290fe1e58d602656904c1010c4101060dda45f8f969ab726efdd6ebe90d366b346785ccd76e3c69add2288e31d2835454c224eed6eef42f27cc10caf1e771a9c007473225da025c8a5b085c9f429bc88d1bb08e0a34745aa34340a28173d9c01c6037dbe4c7878611434ff74e10f150f7c196696eaae5903b36148c14604bbce12cfe83400b082683e4430c5d72a38527bec0f89b1aa13fbbece99b8d044bc63c48f258650753f6d784a7148ed90d7484fb20fe7259db3ae400f2feae6700af6f48c0e1042c235838553ef1c700f17dca4e97bc950cba06eb0726949fd800f2516ed646d38159b68545650a928d5ce288cc9c1feb7e6b4ff80c595d6e176296cae3ef450a476e5dd0a69f7d9d40fc30a26fb4e22085b467a8dbec82890dda51594a59bce69ba850e09d46f13bb6aa9acf0fda2e2272a6408c1af6ab4516eded8e99c826293fefc8af65c4e2e2b66bcc1ba869f1a51b6f31a835d91b5bd76c0c8f4de2d7985a44f1eb6105a7ab1730c467ed3865a0ee7412f418aa5d65a9c90e97e5c5ef7c5f3e25790109e0d52a05d9e434dde3ce1331a3dfbad8446690f81173b23b5022f30f6eee70bcdd43c091029caa571a2ea479eec776f4b13fc4efa603f55de25bebf03a141d893bf9b50246e9d7a12984ed2d65823790d93bc9fb2dbf4cd783fc5afa596c05410fa218c910fc79d410d5c676b3d87191c284186f812f7610db5faec706a6de52290dd4cb3357a8e2fbeff40ce906ef7350ab586eea7259e722e1d76e7c2a057039abf3ee23534b23b7df9e37693c674c752426db30b868c9b7628ca1d8923f0e261373121f9be2229578d2743b20ec9316c76b9ff5c84e4bd1c88f09462e516f887f9eead6af9b7789d318fec14a2306c7514bdb6c7bed975c7c1132547e5c180a4c03544d63b89118c91a9b8fc6501cb7e195b7fb3fac505deb18901bbc15e3537ef004a05d45c2017b5574129531ef247bd4de339516b99306027c4c50c5125a3987be9b9a20f235cbded70d2ba6892388e0de2492ca4768c2092e90591a1714495b5f11e94fc3c2e0392269f22cf6c8540cf50162b7f64599ea0fb32bcde6199ba379116ea716d7a63b3daec62c91b18fdb06a9c1abec9d0889f5e7cb111c34c2fa4e6521c02feb4cff66ae780f6a4ecd4bc9ad80345ac80fb00e1475da3ca773af53d64d3ef163c4ea32284b2cbda306ad582a06cba3d7b4dda37b17ead8e509a59b171168ebbd46c3f6f57a82d0f3160ac3bccc53333c801ff057d3b6676002c4d26ee20b376acdd11540b043bd513e2147c7e0ec8ac800ffa9d6811c105d7ffaa28c07b7560c9817dc6a8e2ef03ea1ec493f630c733e457e0dc42adfc31cc8cca95e1c3c98b5ab92dbfb28b96a45c8ba44150bef5d0f652479a88efd5816c6755f079089b00f4b92fd7e880b0ff81fd72d86a2565a63f819f0729fd38abb8897919226d08b25861bba872aca80e175c21d7584982fcb9b5513e2040d0d0fbf7b536f78f98b9ea95d27477fb064b180fb324225fc7c3b70d863bd97671a4e41e485326f6eafcdc736d3d36afb08675757f6718969f60f9cfadf98e7452913896b58a7cc2d5aeb39c8982cc6a3c04ff6e9c1deca6718dfc8c74d4db711b0a2357566bda332bb2d191be433dd687b6ebd7eec1b966bedd7a16bc4877d6e238687ae5176db2a0839c5d4155df2aa6449f2a0bb28af75be3c58ae46d3e43b9834e51efc8eaf7d098e62fbf889b91593293a345e8f6901c94e238180474a68b34b5ac8c3422fa2b03257ca7ca2da1a1390249d71922f4354a8ba9af9974393d1c612d86131c0c5b2cdce9624c5713cd6029e79d319feb6bf93db234f97148090b5e2664f2298c261d336c4df8a9127515b7ee9c1a5e7fe6467c67346623958242ebdc9d11a43663d2fc3c83bbdbc9ed26ffa668cad9211674fc1dcca4edfbd229b407210fe2108f70aec41220a6c34dd47302f5775b6b8c8379588286b6aaead0f275fd6b8e56fe1f0ed1895b48ed50d0b9f3ab394a25f64ba0f6516d2f1342800d51ce1cc170c078d43b71afe02245981acc50c1eb8319f0d80206158bdecde98d155dfe9937860bd324bcc081ca1a94a1f693295ec88f1f13e364921ce534eef43f380240855e576421c383e26a828eba3c276a949ac9e85210be67656edf0757bcd3a467a6b7142beef89dbdc38bc6849ad2ef66cde35b7061a20dc3b34bf6d6bec9fa2c126b8b9347dab1fee91837d050a8ee207bcb6c8503014ae995dcb8b285872d90859c079f8f24ebc819b5c52301825185fea72f662baf1d23eeba2ac6c79cdee4e52a275a08a1597ae21bc4b045e80edcf1507de2620a6e42d0e603a170a0c2de8468271892d449c02df62b22321ad90434005b38931e7fd1bd994ddaa954b56fd0501b35129b860fd56b9e8116fa4b3be5f2aa8fca26ed0f5427a2cca89afc509009da15bf40d959380dc6cb5b5defad44c3935f59978f358f90c4fc3d6c5425b9dbd264e022cd8ae40a51edceb91743001d50a6c49d769180302fa0220af7396e4621a96a8a34ba9b43420b6495ced1026f4965e9e2d37ba32bdb59a7cec0c3471b3eee2129a68d64ccf2e57915d0dc4f2c7f54efc227cf968b321c0c7f417feb9e219a4472bf8fab6108137e700c7325b300cbf09a2f944a7e2c74f81f3eb95a72973943c79becc98c20eb33af9c6558e1752bb8c740b3ef2491f453e53beed7acbd42dfbd85b791ae0a58a3e3243b9c44e844f57ce223e048b8f44a9f502cc0361da2fd5cf232341905760f1b7bc015fc60e0c449989cdcf1fa312133b2e5027e47f1ba9d22d5d1921973eb6d60662543b81884294bf2ad2cd1819933bcd66b635bbba36f9afb1b14ddc10fdf52b25f1b3c9db739712c9354130e8b7d352549417e7978317c81ae558b9267bef9628e5654123578f2bcfc4f960b0c7666a302dd5fb804fef338af5c61cb3f3e43d5ea2dfd10006012a98abf3a5c790781b663c141f09996b1d65f6bfe55190d6694b0b8f9918812990320bb6ab29ca808b35e387090832180c040765097bc97b1c8871ff7f940c0ab2df5bb179f2039ab5330f801e1a644741345da24612df200445e4681ba19cf391979f17a3e527ee01c5308fd61da59740b41f48cdd9e08a63c2ce6a22f1516315836498a6e8890241a841c04bb45bcb0aba10744cf9462452d5e60b66370642458397aae7868845316b1b174bc7b3249d6f0896937e1af43e676b59f9aee8d8dca9264e976bbd7f5ff21d554c0083b79b6e3f9950d7ad21aff7b23fbd932a0dc3bc736ff5ecbd0ae5f5253c164e3d63a94969fc7c5ae506c7150a7600a6bbb429b696568f7d6bef407ed3c9a266f966d4049fe2babd0f134be8e19744ae1616f74770cc8238d44d4b6f20250c3d85c1aa9819673a9e4e006ca94ec582f21de5cd4f8cdf585da3b00cfa4638e88f8acffd72bcbdbefd8e1de026d6647bc0074f8067d472becc212e1527f8307e5bc3d918f16fea01bd11af81408ee0b5e95ae7fa5912003c8dc678c951e260ae653e8532eb4b19052684a7e86d8b78d643fb87bca4423811485741fea987383ab3b3572d2892e1d266a83b3c369f84d9264676c0f9b66b84cd988c24b264565711e9c14fe678fdd70b8e12c7ba66bf94f03e5f58c008e4488e8fde3bc366e41d8d26627854c5403e8a5a14af2aa9749881cbfcd394db991a20505db988b2bd6ffbba70771736d8a4bca119904b06ad2bbf0076fcc36ff050be5f4d9581ba166b729088a2c7bd1b285c4efd9ef7f4b0a7147fcc59cf0461f5c6a489ba82a5a158ccd03d6c738d7dea8a1ad3689c117de8ebdee8f0ef0b40de39e7d8253205694a2a9a34c519ef5f374b984438bbbc01e1362d18a98f2a06693fe1421d8cdcda4d6ec3a9502ff0dbe706ca56a96a0948a3eb770cd0cb0cc7b2a1dfc60960f6bd28c0b09f021ddcc2e8084b1afad3fbd555826ab243f807c0984df215a8d38b0b160a382192c08664a001080835b317eca079fa6da11c8d285ed6ac3277db3ae7dc7c954c46e966e47985870c68db3e7617d023907a716bae8ff2761886c44c2fe908701809dc80270b8dc283b9b3dfc9008eb517f6e6e247a0fa6ccc03ad4c5fc2e7ed0457d220a521f38ca752b2738bb13a2e0f789e8645c66dd0793f0ceebe5a12d92a977765a481f98d32c5e74d555362a819df6eefcdd26d087c1826431736c9d35aa36c9ab04ac3c839c873b9f99317d700a9633e2d194032783898436854109d3eccc6624ec3d8b47ee60d687a366f1256d73a6fa2fed041e8d3d1a258222d65ae718db33bc5a5e6bbfe7c300fe9027478bde77a94762cb2b91795f6596e2c32ac5b3e9ec422fa47ae44211dd6146e0392f90f4a598205c6e1dc7b2dbb865b54b75c4aebf6248be0dcc76aca0695d4f25dba8d77f8c6325809b570552332ceea696a9584beb1702e61636015c36458ebc91bf0e2936e2c3cb2e533b22e29dc779245f7af34c0a50e32601a1adf5ba469c4d4fb1260d6922e7871d6232815a0853bffbe19ac808b35b30147823a04652acaa8256856fda7554fe143dd18dd795a53242aaf430565378baaa923856acda60410171f0b43cf51e219b56aa8378abde51df0480a47dc20024694ee888e10a10b51302351c916de712b3b08870d3acb1960b825fd1a7c9f6a28732c53c0e7c09bd704b195b6a800d8b438485c35b6d965569f346b0934ba57a7440ed7c81040d4ebd9c81daa5acb9024e50974776a6dab97b62f8701da19a140178be335cba6cd0d28718fee20aceadccebfa3948c3d2dd181863292a5e17745928e86825e989b2122c9705a954dc002510622419148910378184ba8b1170ea57077371e93af0b4829eb865976075e88228a4aa1b6f8602189bf05d27f9d92a0fde56286356bb3b8529f3e4d27df74d8ca3e88db7858b9da94aa1fae72b883e89cda31bf962a1f32eadd884d2c183d5f23e5dfbf1c571d66ee87f07c522a9ae14124a6790c3a349dee21d556b1542a12dee1d45a281d9c62df7fa7c0cdd9ce95f81e661e70ef1751918b131d0346d300fd63a286e870bd8324ff3c79f10a3d245cc2d1c59dd62dfdbad2e80e15edeeeb59db0233ea2ae6936d51e3cfb427e35820003bdff7edfe9e83097e8ffc6a89d91dbfff2882ba267ee00b00f56c1884738a725beae1f21b12bb2e96107361d29f49a4838547baa57c9447f88a572c2b0bf35a612f45be4cb86590d38158e3266a30a4a8029494183d17ac59371592146a48f02dd311b19e7037fe567d2df5384efa12fd6c0838fcc8e9492adb2860fcb38cfd9efeb43024941ccc22b5989d76212386384f06dc7f43ff4469827b2d16a754d0fd10a53377f7b2a4eb67e38512e1fa2a1bf436d5531b414f0a52d8392fce4977edfedddd5000cd2b410f7d2a5029236d715b027ace220bf3f59a7026bd88aa507210572dc8b6f270380c769bf56a15ed75a41a17191db0add8bf583edb63c7e8ec2997b6095add3102d307cd04c89dc60bbdf0f356b3f2d9caca064f78dd872822ad20719a68fcec16f908781ec35a278bda3d67f8708c6a1b67d81037d1e3d3aac8fd93773cf1c3e294788a30373e351a5e7afbab5aa874c7728d1fc37c685864bd3982a553132e1b91fa27525f1345cc4b68a39fef698a6882c9829c3fb9ebbc3a67c7ff1dee7a28f1523aef10f460016989fe03e963e5a38196c69bf80bfaf4731a245cb1be244d87eb91a5accf1ec06ba4ad03d81e616411dea3b029a8e4aff96eaa5215f8f27448549675b4eac6036245b7a0d696456964f2389dd86d106eb47eea3cf0c2ecd53cbe8628685bca389d3afc29dcbee1f32106d2af794b44ca95eb2e3e3f761bcd07804a0e438f8961fb17bc3aeaf8f59d45b241bd0fc95794b75cc9666b231da12494d174b8c46a9d5cb32976339eeea20a72c9dd12803123a9f86e447e0c87144117057b168e400c71a90f71917dee25b02792ae9d9e15789ceda471702718f291cc472109560048d0d8847b1b55a93e4b95b419d764440dfeed3cf68c9ebbfc989a86b9d1d6c8ee78e4b03c745a0ed7eae3d1e68ca8e869c3ace18aac525bed960ad918e99e38f76bb2a05270b6c2a3081e3c96795456d56563b3119c538268cfcab12c6d9314c914f02a680c046cc1a1b5ae48bee598c30f50f4d55969cf15d82c9fd56c6a3e54948ae47245d7cac058fe96b5afec51d5fc34c564f58e374367a79b29df31fb9fd236250b4a31a52bb2b0ec713391e7846dd3f110c67218be7955ee7fd5c7898c6fea1b10a80c81ccd3679a09910b03dbd878cd735cf61acc32749be8415f09c14860f3098ed52e432e2476adc8295fc4376e1f7d0bb1e56d8ce564f17d01b0ff4f9906fcf3eb23b01fcac97737cce6e25e881fe4256e9f55c9b05ada9709515ada5725998325a580eda26b898f6a23f45c9a820b15ac413b9d7efb9b4ea6330166a1e80b6449c1a56ad86681f08dfb26bdfd96aa3e1dbb782b1de5608f5c39a6114317c5a1961bc03efb33113b52c1fa5d0f71cd4627e2174f001555398354aea54b1a02c73b860a0a8181af90eb908146b127fe9b6637bc1abdb8ece6c54eab1c8d81fd5ddd6c0d91418cab4e1dff1f85c720a963287812228d8e047ea4dfd70d2098fb81150f65b2f70723bac31724acbb6d0ecdef00b0e9cfd57d52f2129039df08a558f08a2428c3979c0049accdf1fb375289f3ff8bcd85cf37b956ffffbce99261496db79ffdaad6482731f2a152773d7ea79e777cc9d5ce8803cecc821f22cea40c02cfa53114f02b0192712456245d865b0e1161d289d998fd280b6c81b0ff5e3918ea76344cc8b14a94434f3f7b33a24796bee5d990d83f34875835b17efe03cb8a49fecf04b56e97f5a06483fac68db73d2e072a7b584979e4574ad1bc27da362a711b90cec50ed587c0f35aa24483dd3d0cc38000da3f578bf7ec855d63830b3d1204f0a39cb5c4af052b2277ccff8885159e377bb221689a07ec579738f2c1fac5086960d650f2e87ed106044ea5ff38fae9cd687ca1cc8520261667f23c5b0e9846fe44039f5f3eb48133d474cb982c10f55fea17d45395d912850ad400a31a610f08742fed4ed4c5ff40faa4917c6cd58df0483b6e3d644fcc98855d477233f112d178fbcc575edac4378a07846fb64284ed6a93f3e262fa52cb1fa01f1b620a930ebb444536a7dd19d51da725e4feed1203607479fe53d505dee2a25d39222b2c5c0e5e3f930d8f5b18519cf1a3e9fc5925db19dfb7cfd3887a1dd73181e528fdaa25d8325b00e04156474aa54153e755b2b2779d1bc1a893b4e49c8ac88f9a370318da511686a2443123abe52eca09fcb15f9a9020e9dc62638ed77174f912630ee409b81bba8777df90ac91bf1008678580975cec5a35c5a63792d8a76f2bdd9fe8045e67496e7717399c539d9cff3cc9560e5098fc69ffb03cb4820d335e60d86968d350f30043d751a4432e1a8ab9ca4938e6520b2c001cc1c504dbf8b09b900e6a015f10a518f90c58ad39e78f05b261894a5c967c9ea52ec405b7672f256e640078fb08b9b33324504aa696eac66fcfe07f060153dc2bad0637819d3551655b9b07d6da2283b455d783856dd7118f62490d9483936727ae32b496ab8ab871c76ca95f962eb3fbe0a68dbfe8392648134a528aa955d3af6440bd11154b77fee040f8e1e3bc24030cb36b9c35aea29379c6e4ced17a434a468ffcaf54a36ecec2e6bb5e7ac1ab02a0073516b76b1789556f9ab1b09484608f0acb7e545a1334ee284991a8112f556bb4255984f7220708c31fd7cd1bca43bd5d2429f62b930fc755b821d082831bbdc95116e7a6827e189e3ed203f68c0b15393dc78ff35a5916583458e7581c3beb640b56def1c0bcaf5b361c034d44761ea6ed5b68a647f6875fe464f704eb3fcecc4d479c956bbe1c86c706cfb4f22e226c61c03c1e0c322a19329f9c33087a449ebf210887fbe34f17d53441a2c17fb084c09abcb39583f2776ef58a2b0069ae081e903db5d85f6149bd20823125871ca0c1200ea9792e390d1724057cdc27711a2341089c23570af7cb39933c427afeb958d34a64b5eb3af13d3267fb4416751d392d6da62efa298c682cc7c1905cafbdf314fc794b03963bd61e9d15526ca9038dd72361d1cc4086e1fa479af4d9cf3af777a5878727d00be7a0aa6aeabf7de35151137dff71f684f7a68d80c69dc2296de73adef2f1d121e75a23bdc5c36684470edda14d9193ea894ee96687962ec01758a3fc43196406c3e7b2306fb15dfbd5a952104ed8870c07c8ff1d38137e555a843ddad256bbc34fb694d8e0e060575094fb14eface3f381fd474b8f8c6257aa5159015c79e82d2cbe1a969209f05d3040914a45e1dead8f7f8caf87394d4e7ae2bb791c5265bb52b72c47168a92575dcf83ac6b9c512c4e0b6ebd0044f6f1d0031b8390008deddda3c1449bdc4eeccf70737963b73cb63609e07f6b8fd74dfe99a71f5fa02049c1296831f30f33102597b9e51d003fe89d5caad0bd88b1f520ec7f6e3c84c3de7870c217f2b5d1fff1f0de9d193021450336e8de2564064a6d3238d6ccf77e63f1f405d94339bd4ceb9323193ee74d5692fc890538829ecc68975affd2f93cd92a0c7beb10f611fa301cf8bbdea6505c77cdd1f1907303858bf0e29e327f4ec7579b01690cc2e9a8519985ca0f9c5d8fe981d71926370475f9cec1109296e8027be2886dc5c9e7d4d602242bb703c9ef0ca70883bedc361d462d5ac2a433a307c61498c555caaf206c96e4f802168ea60d55a2d84daa6e1174eb086d6880f9df39e0c8ecc7b76cb2f3f108e62fb2ccf5165d3ad22b40489da27e9620df51cd9d4cf4475cced149a019f4866ec97644b907d836ea61fda3781bb6c51d10c5e062950d5629a601f96c386e89dacd8ddb7606ba54648912238cb23bca8059185df9c00accf33e1d3094a07af01060371dff56b121a4f346aec5a981cdbb5c8c4efc501591240255282795dacc39f108b89d134183d31671effc8a246ae10f772490e7f6237cd3a21d798f17e6300ceafcd9abba30d97808d7e7a96334bfbdba33ab214a14f1248ad1db9b4336c82c1362c74a73349f9204161f40372dc8fe8133ee415489de37da096ce11c6dda4cb602e686546fa96571a63255b750cff478c00c2efbbd82e56c0deea6086c2d11841b93fdb115fcbdbf41cee4fa089253bbdbc580797ccd880d2cba66d2cb24c0f38f09bc1f2c525adce6edf452b6120056686cb228a87ee3cc36b9c35b53446c0f64f297df11a4748658228ec92ec3508aaeff99f7b8941808007171728482fc884485d95df3fd64339fe5c7183a7f38f8dad3c8e9340b1652e42061d1106bfc07fe38d91f57a6580a85ff5ae21657e6737cca824a3ae907403eeec5ea5e115ef3030473799294572819fa6bccf229a492071b5514fc9faed2f020c27808d39775e92c71585237126a30a67f4c7410fee955ab8d6c40b9b2d7df6fcffa5deac71cecaa5077168b316edfafcb5533977c9322f814f8dfd54f27735d3436e0d0c74368160153b1802360024355d43dc97bc68c8d6c3d46fcf0131ba41888c771596460298251cbb39d60b9bf8fda910ae9409a0fd43df83698bac7b20a587c2cd88dfacf80a16071500ee57e6daba6c2f1c6b2d2d6ed09832b246c39084220a7177f01c9557d3f0e84c6afa61457e3d6ec382004c43ba40e015184c55b9f03715a4d62d607a68c8d9ab2020faa7424f5089e9662d3e087c744598b6ee1ed2d758a15af7d331d3e97af9c0c36e49f3cae8909a686f84f823911c683928435d93c1df09f58fa5ea2bed0d2c14458c56d609d6f4abba6b3fcbc552871a208f4f4014e438cf55b9fd61888155823b3f4f1f115565d6607126ef5e3bbddfe6e47a291979af3479ad84f23b3abcc9d5064755b8ecc2001655de59f3e9656e48b07bafe975df8a88bca53fadf3a5c98e28d9902c73eb6a0cc6c84b1037aec679c3f4524c81bdf67fc6480dfaaf00b541ad071e44283a70e289700c60be9b483ef0003f8b0a594ea81794310d6de20c385cd07906fff617152f122de98784833f4d7e5ac88d7245e61fb62ec1529a8ed12d5d6f0e1d9b284e9fd496e2ebc44a03e4594a561cc42f76b86736ccbc8ef65ebfc50e971fa5062ddf3e5bcec54ca5e567ce936552cc3c2f25f62e826380bcd993c5abd3e0751da009ffd9089d4ffb95f52733a546b220634a7ef2d6d4b5167abbfcb4ce6a4b35b1c44aa30402c8c10f2b6f4708719fd2fe4f42de758dcddc03fdef01d79ffd56c45e09aaf52511d41ad49e4b469d99558b43b0551d2b00f6238a50b38f508fcb37c918e8df699e526609fedfc052b5252f855b14177330994fa9bcfcd51e9cf8fd4f4dca4c6161926d2916d2e03ff3d4ace4e417fad293235f581e6b765d3dc3fa2cced6814d670c88185f7bf67ef85f8691f19663990b59d5c126bbf32d1119d7b4fc074b28faa69eae8d22b3f0ffb60654b71df922c0394ce7870b85f2143620317656912b106f4225178328b7d95233981d4a7722e4d51d0057a6ceb6eaa04c6c3831cd022caace77f", + "0x15175046d6aa23e2b31eb54063c8a1f7fa86ca5eff07c963d4521d4bbb040b43b43fc4d70da6c50159856240e5ba556467d801e08a34530d4da5331b89eefd73213bfbf24326f76f4dcae119e91b2b3f41c1d813d39ff9148fc1ccc89eda49b61632fb027a3b44da26e79c14867790ebc687b24332b6486e83cf6aebfcb9de10719ea12304dafcb13e85f9264a48b86e95318b0c9739fa08165f30715b5f1ce6b3cb260e0991a57b36b24d4bb4d1f4db328c627601e02ac9bae41b98a581014a84e76055049158ee70a40606bbcac46d87c5cf2d0842353ce245867f788e482d2da228b44602d1b2948f33ab45d8dac25e943f2654198cdb89753651a74c5cbf1c5f815a72ab1a0f0c89e6c5b1d7a995e8f09e7923cf2dc0ac209cd9b94e4efc64f56658ffe71fb1877c1d204ef93fcc395d7470c75a8ba2cb6a0307683539173a00637fbaee8f177930254ee1aa7aedc9bda93b2670fce36cbad32f24c2b85479bf4b564168d7cd9a5aa84c2352dddff4c1880f39fe1a2898952b308eb961f41f88ce04885525cd63c4dcb441d794557bdcabfd8dfd9fb55c8e6b67fd9563fbcec4a76e5846b6d9947f80465aff717001cce521c58e9b6f4a3f825efc09be0d4c86aa10cbdfdfa0b12a990b0597e4f78fb36174156922b9f5570b68ca52b40603a4f993d2b296b180452726c86c41f211c37dd9c998cafe78b993dbd85a68ac816c1476af6268268c953f6ca21bdd91d76f22d6bc8d91f2f0a294a54facc7adf9e598967b1b24fda59a3c5382a5c52d153d98a5e17905c0fdedf7c588333415c19eddf5a158aba55e13fa4ecddd246d63141e4cbeffcb9f465b37ff91d1927dd20dc57161fba4468e914cb6dca395e33d2ec2a7ec30e03af2ee6868afbea9a24b836cd84eb10c94d01e27727bedf51b848a3f6f98dc213f2f5dcaccd6bcf858eea8983ad0aad8d802f120396ca17f76fbf8e184052e1060ae869dc3331a7594a2920102a3a12f02ca2e4ddde241324ecbb1b201089bc9bf25056833a383d3e8ef5ee0f1562fe90f0cc4963e0667d790ff7d6fe38b22ab65ccc7e78339a749d9856760e2ce73524b754612c876092c5409700e560adb28f9e1bf4e1abca6f160b501d6b9c00b710af4e9f7fac19cf8f93b2cd02719d1b970249d97db265a3958f6cedce03a573e933b85376eecf921244fc12215db35f1c55b9a0559266207bf629dbf301a1095e742a6d8d5f019fd10e010d73f8cdd1e09cf5921fb9f0a807e36d8cb259530cbdfc5b6981939a06ff7eec76a53f90d1160cdd1c4f727fd93e8568872f1b22932ffc130793e2835a7a15ee7688e039dd1942749082089c3c216c6e458e2cd69f7dafbe22feb93b071d478dc2227205f78dab063229b431abb4c3273ba7a15331fc17945ab9b4014800867294448dae56c57c43e8d730913c3ae67b8be770dc2938a06de1c2c6d561e9abd9d02304e8eb1d5bd9d0274400712efd778a4fe0ec48228b2b43b404bfc29dbec1eedd2addf11b37f262132845a86101a89e41ec41d838a50d8b02f7e845162cd009bc1be394eccedadcc4c220d6100672eaedaad013df0f7f2df8c9fa1e6891deebdf65ad39ea771949bd49e1ef1931f0f5ff19e568e9682ee7d0fba44cd4ffb6058a1ef0828947832e38c2fc0586a43b3d8b93d6e65f510a9a7a8d07751af6cab1af5fefa39cdf45435343e57d64df994d574870bcc7084b96aca5608ee1cd88f28899e7c75f1d8c9604beb4f3bf30bc19fa14cb9dc740544f278b5014e038a69c9d3f6513047a0fc46e288bf7a616707cb09ae709c7180dec98fc8f7120033e5c4dfc6beb258c6a218ca1bd779dea0bbd46aa68ff2102185e8c161212a2667496e6edf64286c4e78cb2ce0258cf96b05cbde7f1f394ede9e753fc342baba1e4fa057a6725e3c3b0cdbf1c5ab452f23c15d67596b1fccec117a982968f4b8358a2b1f9521a920179da688edbb8cad46f0fa48a7e6d8e24768ef673e7051e8eb617965ba848a836f05fea82eaf15f2f6b9d835b163d2652f04df8ea46606786499650f37a7f42055b8af5a9366b25879fb0ea3139a670da564834b6daeb9e1296890bfc0fa4006ddcd291dda9d1f32ba6822043cfd52c6f3799d44a5fcc24ca622ab81201637b7a01f8058f60d3aa7c53ca313f0e2d1e5210a70b5c62280caab728156b4c3bc2c3c7569598e5fc57f4e7ac1c1c7f9b6668025134341a9888bec1fc1a5ee5f099bd1c005fa7ded2edf2bbcf8dbac0fe5e023ab11a8fc39ca9c8168c278d387760e856b7fc15057f62cd69535035e28ece161dd824fcfdad7d266e9d2c77e1748f702b2d9b4cbe3a5a9ec831610f2e3c2aa5506122d06f8f548fc16c5119b7805aef3107e4b64b384a4b06c2a974f35d61b5e2ca69be23ead408745c6ebec403ed38ac15afac6c26ce189b04ed9b068e9c59fd69bd01848ee3dad41bd35c820d42efd45a49050bd6e817fca8e0e267a80ab80e1c27d501210f3fd78b3259721245c04068c31949f2dacc28027a414bcce3b2b639290a74c33ef66b20a6b5734a9215dfb7d0ed8291c4b23a58fb8b1cd637510a044992d71d408bc5681401a10f2cb496eb725982206639965a8da89e110ec610fcd4868af962d36494762866004450cc2483102698ffbbe2c77d3fc53c0a2976fdaa0d0a69197f24fa583534487ea7051d4a278d7920f50120b0cbe913947ebea56e551f1ab67700cf90dd11b4f56425b9c0012f68ab4b0db6ff3554e0b63de4b181bcc7dcc4b138407a95fa72466d4feb138197d6e82668cd0a29f0a1682b141b2e395baec26a438e84af575e1d07a4857878da7aa489b862be049eb7024eeb49cd2f68f55a8ced00a549ba33b800d4ee65da05525489d3b3a8a58dfa28edd2b20ecab2a915ea350198af0e7dab76b5bcf4f39ff707d5f6c6e6aa4166a300f3fbada6596db1915e2b89aa4f490cbf42e806b73769c01f6f9266458c88b67d71dec8b47281c617e2d6b2dfd23cfc70f46468d1b7a482b1d467efa744966d9cc22a5516cb9b153194212725677b3f8a3397e2a3518ede4b22354304b733f7b4978bb595fb19b91860ed9879ce546ad9e2aa2cb77e078a0365775d8055a89a6edcc2449a1e0c9aa4a69820ed0f9c6ed723e09eccce6b36b51a702861e5397431c18e10c262b9d254ca960b287c1141d932b6a3ed29510ec4d7d796fe54b7d2a7b6ec97ed802e3635ace77896d0ba3a6fad572655d51d473961500c1fe6f135778e6b45013b2d58ca2398ca6bdf57deba5fb0608f2e8c1f54040d70ce11f5872bf8ca5cc2776eb2939f61f5dcbcc459a14f1f7c84cdaaf5781b113c35937aa80c668ef5cda697e539891a04f7a39377fce6d4712db63b48732e200dc05a4953942918b7be33f972119844787c6bf9aa2da6847d44067d1c25280cf2ada4b2cabb050099c70cd64947e296f833c8d353d46052951d31b4aaf836f71209f432550cd59cfdfa1642a4f6b495e647d9795a3a48ecccd1d910c488b59c5206f553cad1e0c9fe80affae4fe72fcc13bf0a53ca8885e4885e01d919d5ce73ee3bd78bdf69c88be935387743df559f934b08a16e0bbcbda908f410feedf61f1c46d1da423a55d82a1e18543ba399a86900b5c73f4b823ef04130585208d1cde3a774197c5f536c91b5ad104567075d75cf97619fe9e2eecf667f71a77904a03fcae185c16dc2d35e5f7948e2c431d05a3d4876af89ef1b48833f01053d414fa1ef3e332f3995fa4a76a7b06a341a7114e46ccc6e551d683bdbc51f2b7030fd2faa1eed535f56164dc41a5e2799a94b2bf2090d957bb15a416691e5add6f444066136b1e7bedc6fe50c47d25bb6b8d08ba81f92b9aa3dc0ec4e4d5b62533bab84d16439caf90fff7d82dbd880b4a866ebdc98fa10992cee4971a3775773dbcf6e8a0850fdf8bc0a844d3d80ac9f8b44397789ddb6815e3be8e2de1481e30703346ea6e84b657a3e310cd2b681e7dc59a3f8bc360a9ed53f1a685e084ef60e207636e036b4309de8964e1a5709e0c9444ef094661cb172ad38fed6c59d21abcf9bedba3d780c3d5262189cac85420a99fd8437df9381c1d39b516638ed7fe393fd733591edef4863fd649dbba8a948f98fee0dd9ac55d520b04575bb1d4d7c3f07fb2e44c296ab04239caed594161bc560fc92a8337b353102716a5dec6ff7ba798d9d3c72fe7ff2ba230545b66c8b5d5790718f6dc5d9405f9e2cd60aea2439d385146815ec55f0d4cca518d4f42f42aa1ef322e607370f2f4b75dbce68433dc6129b8a84668691e7615f5badd9d3882231bea1009a5b88fc2cf3bc97b7b01492b8d2a10f3898070b1d953f17adaf71fae6e4d2fddc1bc5baa73c725d4a2aa601ce6d16a671b4a8c432d909d8e2311a486e4348e0ae4e34b455928457b69db8cf01f6355ee32a201c4557c46952579043912e1e3af519ff3987717e4d36891332cfe2aebea6067b1fed0e0567b893c89d26729278194ffa19bff6caed28ec1a570d00090a95b282af37de50a3354a388c9c9f0cb388d7b69932102f7b8ec7c8b362245411cfad176a255ce5d7ccd5162375ac715c343183354d80463c8e2e261ac93787c037507ecc2a83f35ce5218716c5e0dc7611fb6faa2db0ae5bf2e6a5b2138a49acf59ecf33af2b959eced22b01b71518139891a9e22552c952a999021d63792066f3300036925607dc35fee7dc08446df647bbb8333cd4408c4493822fb0683b4161232feaa247f346af73ce708a62ab3a1f657cfeaca2b8a67a14c3054606587f321e2f1b2470d0c735958115a394789d256fee28653a53a3a4326d5245e278929d687b0b5129a983a2bf8557cba84bfde188051a870bf856424876312155683d9c0d0b66d53eccbe364348ad12e7a633e21d46d8ec2b83a874f5cd0a20b641e27010b433524935df16ecdcac972f6e153752d4ab9cd9488181b09b6fdfe17a3b1bb11031dbd8b520c91ab4eb126972e3f70e192d56cd96d854e66d3ece102811e4c018ad796f2904bc6ccbf84b3f8cdebb1e4cf90e5d1deef9aafcc4affd7339d706e12caa4b3ea2bff41ab0a031e0031f5a755e696e6a9a25fa61081b5c865843b4326ddd029dd18703417c83f1252f44e4b6304239e097ac87e9d6fd9e52613ae9ecfef7eb787f2a80aef9fa100d025177f2a229dad1c90820dac8140f09ce144962a7d159d3b0a5d0d5d41e0119f9edc01b6ddfb4afd2d998dadf753124e4ec9e24e2b7a5fb6159521eab9c608e07c7cec9c2dca66dbd6051d406087e4c1d2192f05dea0916e18a629e2c379a4bed0f8bd99cc9098d190243754e06668cfbd76aab121f4cb34fdff6ddba44d3a63afa4833a1068674accba1b36481aa8e2474e6a49aff37c3aee5c523472c2aab9f4161058425b5ffc5e80cf56fdc02e19c231c8fcda5e96b378cff0e41ed444fb5a2de05166d9470592c4fbb284f1375615471de3723e88fcaa8957ffc9a2f7fe85e3a8d5358c72c378caff8c664b3d96a3a9e83edfd0f0df071140f14d68a1390b9289cb015aaf026a3d16d1a7d84e65a4bc23163ab4dfe35030b9cf35d0a10807e751e8e0734622d2f26b3ef4bd8d3b2c488a26d1c288abfdf03aae47c43c39d79f0fc3c43aa2dfb92ebcfb558e7f874235d8a422e1b087a690d98ac94cba111fa69d0331622165f51be80327f57aa82abaf2e5b37c286be68d2ef0a9ba6f6b458bf47247dd3a39799b98ff56e12f3dbe349d0647fd2fc1c88424f2c9a05c3426cf7926dac3b5a8cb527e0252b6c212417b35bffc3e5aeaddbcaae74305567a4126f6501880fa04999c20f358c996273d6a411e7b414948c541e06da0d9cef6bac1561312cfec2955a84cf00bd76e68a728f194a7661c3114b8e916678291d2f9eb9fc026843c118b40756ebbe9d45f6832e307722f233f1fcf23960ca9387ffd36437983d0ac35b83788d7ee3cc2382642de4c6441b5aab0724e100f1066fad36c9aaf3629f6dd84a14df3f529d48b5b5db129d5d3a6b9ff10095a1eee219dc3abdcedec2737a6baf3abe748889a8a6d7f196a46260529fa209ebb857aad72f53c87f01fcee3bc1fc0d55bad54318a073655bf33bcc9f1ce6860613d64003077bbf1a4ae211fabda0a3f47cdb5ca47af34d44994535fde4ec420b38a7799e40ae71bf9dfae85077acc42a8e133ac78608d99f38d1e5f0ebcad1fe0b1ef6608c6e648c6800cffa0e573e9f52485cf71f224f11aba2a5f9cef6695a511f5454a13fa0e50d627fb0a27bc21a4319f647c0fb27286273744d98ce4ccfdda4ac57812c8d1869c3f80890155859c67bd215860d2f15276f14c5c312bffffe3b6224a141dfee86782f837ec85b8abb358bfaa217b82f19b764beb064912ec3853fae650e9302810e9023fd5b10a067630f80189ce33c4fe08bff7acf382798b8e5f8e82afae4ebc2514f0437bfd0d9f4794e7c63f3aa4b72f2e4ab3d77e0f81e8bbc61aed76a990799cf57ea68eb452c38ce3af8ae32886a0d645400949bb0940974dab68caf88046a2698a6056245228078f42ad890b9b8f8ace74a2482900c3dae1de454a1bd136b9fcdc2552b6a4317501f8baf4910c2e1749db46304530bb2bcdedd9228624477c65a3842de10cd683c0bf388a8a7df41333abb1c7ace2ca4192fc92c3c03d8002e8f26cda8e955ec40c5fd6f6d88dde8dbda3e21c8869b4c1f42d7f874f4c643af864d92044242dcca1a89dcda207cd7dfc802530c249a80ea59b739f2e439488e9c95d74ab34f3c8f2b387715d8f1e97e6a2e3c9252ff9f82791e2ba1780fb52b7d872d8a7c0d30b38df3ed076f6452b41acf379216b4d3a021469e39495c722eccd19f3f785ea1380565d83c3572e34713552a7dac369cb0ee6ba6810ae51b4f68c675d550fc36e9347cac60b4ab2ace9a14cad6a417b0e3674f55aaada6432f91db820951f09a397cecc25d59155ba157c477e0087d2a73b0b687d7474c84e6962b079def1b11df6aac6b44cea7071d0002a796fba0096815ebc12430bc632f46f41ff0ffb05d11d07612712ccfada69fcdd6c2784ffd84a33a1cb9418a055ef718c86a43b8fbb2704b73a2eaed0f4d4f091a248a6c852b0a733fbc6e83ad8a019d68d5f18da3d9dceedef16ed65f0890ff2ff0886b6056116e713ed924129a562ef902b15f2171b2648fdf785139e56bdb2c2fc8d74903d281b16577207f0d3897b06e5eb27bf2d77a0ce52b9d6ca4222db2b352ce08a6b10be571e0ddc7c4474c45afffde6969df3fa03f5fea98996d69b7b13d80ce7edaed136a40f7091cb3e3bde1288e1a42cf85dbe4fbdb96d25567e2356fb3e4ed8b0cb58498bc3f0fda95d16d2a414a9903642ad39d0ab3d12ee36fff9d42ac1e27d10a9d62afa24d9fc1d8c561cca908b8b878306284b86487feab7ebe99eba34da88f476606de66816a4d041bd794290f9ee6e8c749cb62c9bbfaf9063b6ddfc08472570e2c117cb8b4db888b5b18481afb8cbfcccd125bd083701b333dee4ef25a23e7d53fa21ed76a02f78f2a490079f55103fd7a347ef6a2fa68b5c85c185ea1ef357493e046d87b43380267eabfa577cd59002c9e4cf6c71769139a666fdad8aeec462d778c1779e463ae0a6466e9b23d524ab3a0d386882076bf8657aeff007f9b1a48af0a6c183fae275d097d3d978bb2f9555a83c7dc1f8261ef473cae1e9182d9d4829a81b5a1c10081afc1195d5fb09d4971e7679f3b4da6519b9a80bb05f8d8f27e4c97cdbf2235ea93fd460145888c3c9eccf611add05ab9ce33a964d9fc7579764cfd81b282e3df926256c1e024b3d0069deb5749e0cf4797c5542ae1d27174049907198920d3fbade849a033c8491968fdcbf9994440b350802b22d7a507a2de38ae7d699ca0afe2654fe6efe8a51e11f5466285cf39c6bb35f4e5769904f5f7d7bebe40ded8bd505a2d9dddb5755ead2a3e64872dd8dc0c31ae12aace431373f6568b03f2babeb0aa25154ff10d48dfff7cb17975f6694a92afc8c431d0d8641359bc7efbd39e1ac39f60a51617c1aa954c63ecb85a71fb46772cd22396d2667db2cbb7a32a1b1cdce0d7e4fbd2a2af032b740e17450d26faeae9f050ffc4f9b29256dda139491f5c769359616838344cab472614baed9d95aaabbf450b24b87c289fc7418b10218fbbf44b211ec3ffd6ea1e9a3756d1a22efca3d995779c582b140c090a62acb72e111ec5f133f7047d18a18832770fcf77940663a5528c80a381a78ee37c2d6974f27763ea127ddc6e405df1100d115612298ea567e4866621c89ed064aff551b0102b3f40e4730f80ef426d3774d392584bf7bca430d144de80c49222b93c1b9e03a8dee938e831a14725772f4f69e67b8383539876e89b01410f3528818f41f2e9223b1d5161cd92ce3c44847577e60f05776efbf9f84488861894f99c4dabd98a10d5d9be571b1b97a52c32b3b7db5c9f9c4acb1165540bf39e79c0d4298f6526add8f092b78f4864dfa36a42779013bdbf485ff145cc90a2039d8728abaa1d2878523d0060338b0d4ec1ae9f186f3c6031ea9fe0e31ed047cd33a5b4afc8325cb473fe64a8ceaeb9bb58829690f07b0847dd70a03e8194ba2612b7b5e4970b1de9e685f6d8e3ff7dd2a2392be95a065bdb19a088870d27d05d5bd2d64dd1252c6134acdfab79258ea375a354c0cfdc34c90dec84a7b5eaa863c2c8e6c4ae858eac36bd7ed3b57970220d924ec7aa2d8973d9f276b60594194f5aa50b72b12dd21c9fce937447eb99a76384ac4330f20e3e9c1cab85b6a679dbf6c28d59b858974a8ab29ca7a1b16b6f1af2398e8b234a13d1d2fe151023ece41c1e5eca6670158f24f84ff9055ecc19f2fb23961d21eedeba960e1e1c8d2aed82c48defdaf9988c5eac24e95e137d29d382de5c1b22f013e1c84289a8b7f59d21840642b4f2a4a3b1cc186deaeeda8866e7b4777ccce1249c33daf619fd923cd43bf7146a58777bf49d746eb4ebf3023ef4fc8e394b550cb2aa21370ed0273a896f9007f2d32d7f3f591d47e1cab5c68cb470e1da7d1dc70252e0d3cecd58a90202e094b6c3ac60e1e0254ac8ca84ea6f394ac1561b36d7445da08493bc4cbe2636d587dd1db88f636fb03bde36b7e5c68f5a1440e200c1d15ae4b9941f1754e059b87ddee462c49e72e0d36f1a4a139c687bd244304e8e825b8915ee4a99688fbcab6d6928177adf04903e2ca0a2351d36698afc9a584b9c898eee50211c9e09d31d1c9dccfd701ab6b89d7fe856ee23bf49de06647489cc003bcf86e53fbb2aab6ea78d917a2931970385bd60c8474e6be1027ae2b4dd35f922f6c3c96228f5106dfd1a15c66d46b9c07f1be5d02ba7c9bf41a13b33618c97ddd7c9264a764207ba6317c96cc622939a867b37e3ecde137a780b05f33142f45497d984add4037693eebd179f04a9feb58c0695c6bc13b06099e9a99aefc32b7a9176e03d9b1230010c7930ccb95ac093f5967484352af3fa2abdad5640c589cfd5f8d4e6c390b2e1fcf836f6beeccaf419f3b736d2b5a5fac35626484d9d21aba4ef96526bd93fde519ace8bacebb036c6d7d92373710d47942407d043b3654cf553e82c550138e0731c3c586470f619bdd2e2fddd477d35dcd017e2d3fa8fdff48a703c67e7d03b1da8974888e434a831ed2e2838ecad037330b04bb380ed517d38222d2bd58f66e025c959ffd642fc4b264e9f8f02612e418193831a075f6aa5e198d14faf26ba9fe4480075e0d102a8bd897d53d8104dc4f8842948b2a0f1325f98b426b696761190debfd89734e6d94dd81dd9acaeb18fa26fd5fcc42ad61e20180f26d6baf04377d876dc963ebce1b64a8ed789b129c58e3b37fc6cbd1f183c849a68889b9c13237515788e7039bbd83b5aebabf7e3a250aad1919fe93602561e422b432e6db63c7917676be2a0d21dcdb3147b3cadf2ccd4cb0806297d744ea869527a62d532c42b1ba98a9de487d579ab3713256b9858246e32fa567238c6c25ae12f9e90e596325efffd58eeaf5ecb739b5c25fc0927e1e0e4929caccc70a96d83140c3bfc4509be72e0c954122278a66db4bf68ce08b0ab78c021b8e33637ad07385dacfd3c0c17ccbaf955ed5c771f3d25e1a0067a99464b79158ce4285c09df49e0f93e3852821df854cb71bbd3497f2f5cd6e10074c63df6dea269416fa69f6910ff6b0bceff386a63f042c346a90c22c4e326dccb4f34ff89ebc2f7057b8487fd4d04b8728f33de5c41f80de7029e022b15ae01a2849947c0ba70a23b39eb543073dcd35399ebc00b6ba15373c657068416e66c9c92d9dae199aaa99273d5c4eb8a9b3ffcc97dd3af413d4504413b9aacc151bd81e0e5980e53db89d908691cee3f3d2d7535ceefd2f841372fb1b1fb5d0404251a9bb2c232e121a6bd257293136e9176b7a805dd4162159ce38b0661891c29a7cf8aba9668fbd0eaf595dd847ccdbc43818e0b349bce964e8d20eab1e0f77ca6a7ac7afd40cbed3f2fb23d2f193db301cab11254264694ac4552f0cf8d99d1c36f02f245c5fdb4cb24f34705bd7dc4a84e750b67e43455811d4b126f5a078c0c38ef28f243c713058e15568e1b710e53f0cc2e760d5111c0c9e52c7eca652779743ea5933aa22c96ccc5e8d6503a0423df62768e6b77730e3d097c1feb98b0bb5fa5f6b7ee89d70e84fd1e71d7efed79cbd722f545751e1ff8582931d8f5485e79272ce587311d67859840050ee9677e97fa366cce3b26dc1a6cb9653a4fa53139485ca6bc40be51b8293772ae13e0f24229f88642c59361803498ec3fed910b525d20a864efac5eecc3127ed8271c5c0bca730e3308e2c76f5e98aad1cf68d51da615e581718eedbb3d82169203b277faf0f775a3b183beab386c0207f09eea0c065be292853ef0ea725d21dff08f025dd3975ff3025cf6ea232b2d1a1437c7326118fc3f1f4b7deb281eddd21b71cfdb9fa930c41c445c03a0d4225f2f4d064aa3f5c1b5987832728763d13c086c2d31af4ab64c34892352ccc412ff358eb0c96a9f633e0d3b6744896e4fd368699eb4c6d8d9ccac6ba02a98416c7ac2bcdae52a472dec7f3f2faa64a582fd53a2dd3653766513d39ef255eff37633e92b94955823146739e22c2eae13119f742836e8178bd84705cc7fede5657b831c4525f8dfeb522f58b83395e3e44b877f5d2943ca434c6a65113e1a46897b1c12099eb3b05c16e7e606bb3720edef65e87a6535790c683bd17dce82e9317bb93088b426a9b93975ec482027f72176678b0a0c016b1b667ebe966772f797585f2b68f38789451313d2abb9c8d21df4dac26d489052e527c7c6d38f0278d634b01561384ce1ca50972b93b8d0c49d8c832a5636355aa65a462222a8d1ab6e6c136bc2826e1a15e48f6617dcc664047077244e181087ddab450d6346103fc41fb438ec1173df77fffc2480f37e36d96cae0d2fde9565ce0d4618ea5fefbd9f4b98d8d6d33f1a4522bf10ce302f154410a2f2a9fbf0c4ff0bf2ae0144b9a7ac715272882324b359350ac5334b0e4b9556a17ec08e3684bb2f56b663661f1dfcd00fc4a0d7a90890b76f039571a350beebb9d24cd6a919927411ffc3f9866d812e058dd0a009d24afa51ca100d32aad4fb58eb77f88789d7cc6f6c435a5eb6942d7c505db85cbfed6dd20a7253ebfc9193053e431916f720b6a01dfd47c55e7238030fa2dee5b362fe8cacbea9cf40d590d64202c1ebd7cadd7b9a7ef11179baf881018ba90be8977fb245aad669e7212386afdc92b31673d5850145cefcfaf05f34581b23de99fb29546e2005ceea1adc44444c53dc1f7ed7267949497d4cfe3fce7de6b741340427f2ddc09686fb0c50ae2ca33ef4e7929b45b2703ba1e4ae734965977519feac2d9f925dc6586f6446812184afa8781b3bb81e1936e98a319720f76c990a74f02e4b197c1a0b26357afda96615a476c8253d9a939df35a9b50f8c8b56eb368501207afd8a79754b4ea0816163bc45f0b26eea8a39380d76428f9e8587d6fe85382535be123740abcbb7e0c32dd62f69c755f1a02b21831e8f15bac500803a700c9cc5337c7d94f4ba649d3ae90aa6bf7e1dcd4dd94e063e8c3ea1e29dcc76e65bcc5f1340037ef03f92bc953f93160d90077c8543563f7078178e7866d35a213bba34260f53457aa2857e33b5057bfc774d28dfb135dfa4ff090339c47de61a0b80dc4fad7fa85aaf03463573a16cf8741eb005b33d24ba965e382b4ca3c52245a402d7606999992030463e9ee518ba4303e3c72e2f86168fa29f9ac3ae94dbc22193ff9fec574934b2a4a0aaecd88ee450ab52f57c386bf558f33771d138a0bb0aa74df2157e203bb5eb425874d29f8439cddf71812f14605d57c98e957d4b4066c1636441fc5deac0cd97a6f99df9940d69e233bd9387965bca1ab04519ae1ee54a240121d2d40d5920a9ca85c9f6b49652e8067c263391a7495dd11735cbf6079b3f541239eecc13f77f3761b5a4f185743cdb8152f49170c8c6f901807ff00f6937f95646fc8ea2df03b28b997e7d7016f4065f34ad238322f37cad16d57ad3f6cbcad8dee5f52611c036a48ce1bf86f6c023928f2df6bb9171e1254ceff182893bfac56dc5db6c8282ff01f1a9512c28caee026a9e266adc4a352a2d1357929da4ea8b6eb175004b8776b6d5c44df3803d603f0f52df2f4de56ec48fbb941cbd166ec22280125148fe6cfc093dd38d9b77e2ff3917ac0c4b65ee4c6d751f131eab30d848a35e74f3e5beb49775531dc739f9032ee64d7648ef4627e8447ee2b0419ccca8ff3654ad00b4cc2fa68365dafa57e33e1eb870a74e681c65ce6724d7f2ec54e571b8e825afd763d661646f803f2d585fdf4f6c822156bf8b0008aed11bdf660aab5fa03268d6e591a20334a4c5922ec5ec735daa0f7c6916d6b1b16c04411bc5169155908e98889ee8ff984c4a3996eb38feac217157bc6817f08b916769abc4807c7706f979675542e238a140de6e2e4de8812b18eb81ba69a58bc68bbdf8ab101b85995ed58a7100b3c3d08c8c0b20e261ac218935ae6dc9c75af2babb8a0e8ec20f54a98480066fa5600df785ceb5a409673a4e994c6a76b783bba971955b9032b03cb16acb10612a28c87b69fdff8e9cb13056af27a767085a0b200765780a4e02a113bfeb0fa2e0b99d18e2fe79e40d9a0d684a3a4441939d2df1df344fcd0addf42b0a4e2f06df4009b024a04f04a341758b81c57b55524051c5a6ac1a7af7046d26ff6741db2f85c4285707aad6f43c7131c058d3c1b59bfe3d43bbebb0a1a7c25499225dd24c03f3580e29fd3fa859546da74dc0fe306be60ddf0d863cfdddfb660056bd2afe48844d0e773a09c4ce762af8304a92b27428c7eaefb4191f342d5adc1bc1682e67f8546ebc309e9013e226c272e9ef33996a8f077a91906e71f657b6473678f30a9ea2665e957d902c3367962fa744112dfb92241a05e87783b46ea4cfbea0f2d876ba8956a71490746d44dc2b7de9eb289d637d1ba6d930d514b6d825348fb69b9867b0f08e3781a70f6f72d597d9839e81f05753c6a4cb1ac034ceb125094cd2b263d1201d78a232d80980408ea3edecff39681f014f8a4d4f023d36d63dbda477104b598fd08fe8d0ee68b6b37a7fc4970aaa6c7758180a42461c1f51a19065ae5d8e025e05e22a59fabaeff926b32aab23411dddbf6e27baeca9f0d6c59199d20361b38375cde1ffc440b15fa288b9b53d95d0d8b08b362b0f6304cb1e9a89d288f209ba3b61d9e2823525430febcf681745b89698eef446fcfd64687dd97e798c64e439984c20a024ef4de46147573c6959d0e230110a83317a97e648cac2f13b6df6c62c38d768edd21670c11b486eafddeaf8200f57b5ae0db693011356b7eaaf377e0d197377a7f18d9afa33a00b523345737ce68e9871276d3e2cbbb871ee36b4b17f5584faff6c16fb8fc05392fb20d6cd2cf2f4088e8570b62ddcbb4521695489fd54159f396a24e374fdce4ed090b47930fa9660d7391a06bafc571d4eba119d1fde383feca17fbbf58e9d868b99c5d7dbbfe6c211609a0506bc3d1a57ff5e4dd5faa568c90e64e46d16a59c50b774f4aa5e625d9087291b3818da779e33daf0dce21467df819be79fe6cc09678d43f04c4f2e68bd592ac43239f8b449a5ef60c81d1583ea8310a9722978f012e882478b271d297dddb00a6c93aeed11f2bcf8997a35e525ba0bcf207083f5d92e0f43a2cdf4c84d44d895aaf8ea7ac5df10f608ddd7c065d9a02b07b425be9b859e2af96e47f2640b0667052e9b76635d4513bc9a810121134c430cd29c46aed1f055974e90c46ff17ba49f7fd2950fbf5d2e4132b2a206bd010cd540e1f8e2e6226bff2335122bebdd984243949f9f972836a162f220777df3a49e8c9cdbcae7492685d99dd228224da5d25259e70eb2bc7ebe45c0cc1d0ec3c5367ecfca954c31caaa8be03f02390a58088de62098260b61f6f02080e29fe410932f89a3d3a94bf98e8e89a2acccb1b51a198619be119e797116cb107c8416b2cadae4aab2f9a8105d85d5efc7d40f42307326f992365095a05cd35d3060d2d2cc26ca27336578b38565487c4895b5cc015d9f30fd35de0a9ebb7cb0dd02adda75f974ac6054f9613e474843618458cc76ac03399720862c448279285297a4c5df317cd3b8709205f28eaf05aa6e6cb4c69e34999f4fc07dc0316184fa6dc85bcf5e827265be50a496c012d058241a2fdbada06a043e19addeaa70e4ef0740c825db274c752ba96861f5b3a7a501529b7c7c025a3bbb302642be2e7d5463533ca29763796f44bdb1e52abbd3788d6be4a402689dface5e5c8dbf3631df8bd6709da4c2657fc8b2e9e3b0a4804f4f4908198167294dc45216f730e4fdeed8b8a36f4317c3cd8ac2056b5d449b43672b823852ce37702bb623b4dcef1a01e77ae3d81e0286b2a04f858be1c515940c8e2e484b6a1b74cce70ae2b33f6e01881d9828fbf6f3e49bdd612f9a975e3da1fc19d52eb8696da05e93bb128c36f7ef3a0d5addec762c15bf4bd2a8a14971fd7b726742e133a400f7f47e69e903685cebab772020f69cf0d9572bc313d1b0058887db064750808ba06aab732b6c07787de41f7c061c3e5cea83e3e2c724fbf3eef9c9258780b2ec2d2be7466f6c431178f4357ae2a352c5a3c84e15c9f8976d07092e82e0829a26a32c1516ac83aa458a87336993aa0fdec25d9fcce67578ec1cdeb46eb41a6cae717b1e774e26657b7c9a837d7fbc067d997c589162d60484cda8a83043f56fd99310db0ab86b0e32df81985a112dcade8820aa540728f3897b14b3a090f0a091800708e9b54ff769411994b81fc97c58df28b13547c41c46b7fae4a549153ad09b3844441a1d7513feb913ccc803dd9e7cc96ba6152c6a93c5ae357d1207120d2d6d7fba197694aed355a0c310462ca94a0fc23257f31777ce72b47d14344880a1dbfbff3a34d4b068107f453118fa8536a6bfc3436171044c483c5eed18984ccc9f20056ebb6d129f791327ba8d23b777c7a97c3be892d49ece5c1024226a3cc8f7a121ad27a6d0dae83874b28447e28f2206bef4564d9249952ed28123deb44e53ead9bd26a46aba3d5b794e1711e7958ad92a37ab2f3e953ee42d47bf653af1be76da9262496c0c2e40c2ea85bff4577e14a0895ceb10b333079f3e54a4850c4ab537d05a7299c889ad4e2f216b7e963887483aba118947e1a9325c7e72c912b6c424578bde13c26fede6e5c7911bf47b81849774c85aa34e652fee945d22af5a4833b077834c03664018b972e8c7384f4df7bea60276a285fbd5a4555042023dd414fc1ccac20655c9609286fda29209097dd39bf8208b56ba0c5dab6fd8711be0e5d60b366449b4df9027325616ca303b30f3c1bed4b3fe009ec4c59ef2831525cf78bef945b946a0b12f8aebdefd264c96340291552ffcbcc2120717fe28ad505bf7c18fb8eec49b3a0c58f3c25efd1123cbf7378a6cce101f6d63144e8551ac44b825376fe07f658447a5e609d636dedfb85e5eba8e67c81d75c614bcc2ac3baa42da5710f6bba692a65e7613a107a5c8840261544f3066cc970db96599d7bea4822b36e0b5e4dd5949705a932964385588201f1f3ad31a527025f983e47e7bcc7cf4e840ef6359366f9f856e352c13216b132501c018c547bb18bbb878d367ee99527da45dd771cc0b210bb72f24d52ce721a55af8377635fe7c9dae9aa2fde671591317e749fecab7c59df42c46076b18114f7239568027533f4c7dcc8017136af605802284204dbaa9ffc333bf15464075f82bc91a82468e5fcc6853167305b7483b5c911e86b71007d01b7431048e0e1c6161dd986ff0312771072e472f6560814c3f6421da8e2a15a11b0594ecee373962632a102905776de522118e5031e38668ea54e1a4adeb547022988b809f3e296fb66cf7c15eaeab52b6072097ca047b4390af00c604c8745dfd3bc9140e8e44d2f2c52ee91ff5818b17201f1e8e237d878dfe58a015a3a32675d19715b147f0432ceb4744bed6324ed0e4051b4a687c116255d22c69566cb8b8f2c196aef588dc99be7c34f7e38bf5a27ae70b0a23026712e854c4b1c285af3433d2f1e5984338a5c7631eb6734876a85c850914be343f9002740b2d4797a7a2611f54e69ddb46017a79a34ce5773013469b46d2cc364b4025a431fbdea17ae47d94a74d063ad0d293b5c7fd8b288f8b9dab842cf2541bdf8af243d47002a517f2e8a2ec82f63a3aaccefe85541439b2428776f351646c0557275b7c4d7f2db9e473ebd93e4740a280288ce71e6cb2be2738a38e09e3e80d8caf7c0e3d882f573d3588990c2867ea6123255787ad95d6c5f6746691cdc527af1748c3b8b0cff9a20469ad6baac0efb5398e2aa1c27dac2cd2725ab1a209fadb9d8d4e8e0238b217d2e216926fa1e71cd7ea3243bbebdb58acdc5797eb866ec1801563a885cdff8f7c5edf60252e6c0087805cf02ef1800a105faeafdf4b7968029536d16db7738ee46f72ad74cf0559b1d3c6629b66f326925fc2e291b3921253b107a1d5582300e97d78ca0cb9ee5214dbe8d437b3b6d9b71e8f88584a5938c9455f07eac604cba214bf16c99a155a887c8f4188768ebedbe3c777f204857fe0bf1e38dca2ac5f5a5b77a814f83f2b796d88aa84dd75c0a235fdc2caa8555ae0934e9d19f2a244511a029318a1ff6850731c4ceabdd10e4bb177730205166bd9773217d355e952c8430fdc45e235efce15aeebf84c2f0b88a105b31d3b50e692f8757e78dfa0936c8b6a317ed9512973e9f94c8bf434a47ff5c99b1ad508f04dc4e2ca0a9e32aa9d222bbc6d94b5c4f038ef40583116a0217ee08432ed34295052953ea66341b5f6a8da11b7871ab0f1d7c8208ac500650e31e9f5ceb824c2cd67ddeb119bd0a5caaafd50d6d07ae6900fe7d92f3197918e12858525eba9657b6329c4faa7f9818e667e7009f61b688197096e4ddf8ca33cbacaf3121652144ce3782abc13105a56737f81f58a5719a18719f4a956e8d7d782fa984c187a06bd2fb2a9009be35109bc6cb789b50ee27b56555da10708599e599683dc8b56ae7a3f66141d0c585bc7d5c6838cfb2f21898f2319675e625b3c1b65a4c9d99b7c2751ec0a76e186a8c936947ab086da35b99835066742ddac1b4b5eda27b702ee6397258a3a83de31037fe15e378fa796a63c862998396201c1dacd9a4c08bc47611737457dff0bf23d5520524b3238b2adc34b5df36e474633111f94980d1ebc15da66081559faf97873eab7bc88a1ddc677e43f2a4d20a134b42b1726d3c1111d813492cf6ec24e88dc272237e2190173821dd57be8b583b9dffea30d4586bfec7c92554062f0813567e9c9036b090105edb59fab4307134c2eb9a079ac718250958b749eaf239062339cf537f53a2994431de7d18562f515a0eda62f6bf8e46125593e9af73e54ae15e382a98f9f3a18bea2f8c17852fdd6c558ecadb8a573f99d940f85e25a3d8657a3ce2b1e68627fc901a866aba9aef5b11a391d8052165c0026535292f6b3a26c0b7f51531a5d770f2e34cc8e5c0dc0274d1038c211b28f371fff773eb576f7485cefbe147a8d71ca5d0156a6c83500617f953ab66a611b9cbb6655d6838316cc34d5484660f708f7eb8790fa78f5b747708cdf76b527acf393597cfe9f28a0a9a9baeb123e6933019ab32286269fd91737507765f2c91cbe7943b6c64b7e85bcb374e1de57a7eb756a439455e45f51ad04525ac835d8e5f88dc8c9b04020c483bcc2ed86765e149d65036b7cfb3e347b5a756abae192b1fd08ba7d1a86d8d4676cd69dd3add5c8782e2724cdf1a07a62f1a292fc8ddb848f93797ad6156d6312aab7ffc40603cc205f5c5742a011d2bae25632b4ffe71a93f38aaedf84bbc81a790660432a9b10b4d8224ae402832f786a46eb7d585dd2c6462de546554287266b580cc1cf607870ee7cd0027776be5709b93647f6360082dd7788559fe73fd7f3ddc7adc9e89ac3ff7437ed7b4116406a285b288e955bde2de1a85b543661d31aa5e31a6fb11c29a22812abb126a0b4adb0584bc9b495dd2d5e516113cfa785edabd1d829b85d420a91e73368725121f7e9b2bfd4d2c95cd288058369f59800c9b68c2cdcaaaea93df5c5c1cf8700dceeda4e6c2929e05a8610d17a417b5fbe5c7c030b4691cfffb833fd83535f061836243639379aa57bd436b210d65e43cb8fb48d7bc12518c22223050bdc22d6ace21e33b8e9d864e68f84575d84ef876f6d0a7783d91f01a1888d845e773499e23476229e5833cd08b4bd5849f66283a35b2a2dae2a7f14faf4a271455d5eff75a1c180b5e4a4c800af854fbb19ac6b5b13a72be2a273a6dff59b045a267e4642f023fcad1a5a71050048a569198222dc62612beea53bb14e4a5dba9d8a9a859c3e8828cae309edec92ee76375ff86ff77d46ebcc99d44637bd2934efaf3097d1958b69f740995ca666a2230c862babeea5392b0c3a58625a9fc66c87c21a0f49a08f0063bc1a37a1c6b4d40a81cae12ea0733b6a79400ff948e4bbfc50b8711920b93972b9a70616542c3fb68f0449464d6457899c1d1d727247b8ab4d4dcfbb08303230316e6f3bd0b7d060f7d5b5ceae8753c90a8a9cb927f15c21801cf828aed094093d49b7126a99febd87f7cbf33fda310d9305021c88d7d113763406617f826e542c20c85a48f54e0b0e6ea919945cfdd92438087007ba24148d5514633ed592b8996f4c9c2a33f97bcb2eb5a99d9096e30b20ef135d7a666f9c357e41eaa1b3f75a26ef90c262415d0aa791157b65ac5fa6c97efa6ca9758e9880688fd2790bb29efaf1493af8a37f8ddcc57174faf878b092b59565a26232f95df2a5894306a5aac76686c3e7a26f3f55faec5ad3e885499b65a8dbc94e4d16b29839af96fa7d1ee88ac3152963ab3595dc26e23000917d01fd655bd49a84e6cfc2695771c7bedbedcd37e1834f9de1f9ecec58817a36d7a4f10fe32bc25156d2ec7fb0b7fc91e77435b75a938a850d1a4019f0e594b4144a4409a82a8f00b2627f1e6ea7be06b72b2053b54d2a397fb3dfe779e466853cf87888134c2930a6be7dd5167350aed0a83fe78fb5e107593b0d7ebca2879b7192037cf9853435c36cd939c6bf3bc52e8434bdb8111bb6227a85d3c50256053345702e17b7d514483de070c8251765b9ef54f944628fc08e24227d22475fb6449b30bdcea085275f8a4fa486df54d5e9bcce9d9b1c635c55ced8fb6191c5cf9f2b81c2608fde79962e403dd5050d2c466d24d61d1c31a2c42f6c3170bc49277e1d183ebef6a8bcbfeb59fbb692cd08c2f006aec04004184c0030ec6a09dbd13d2f15f99ac21321d95d216b756093cc6aaac00b9ba13a347ccd4d1b99e68bc5bd573f6643b3caa136315cb07f18892194267170d3c699da532f8038bc505b2aee5e9e3c3a0bba126d681c8c9b46eab3f929a9bb38913a3ff7b6379fa423445bfcdd895f10c9fca4316567a7cb9f328833990507748f45e6c9e131d68b25c64165f9a806d102c474960f40a843a716349f6af33aabd0236378021f55cad8b2a8ff8dff17ae0588e8f30ad44aaafa3ef87151485a1dbc5275e4af4e3feebfd65d85c8f35a0ab8a445b3db4c09a7508a44431cd8b365e53da158b7b3d9ef5df2af7d8f3ff29fe19196b41cad064061850203f6ffe45f7653741289b9b2d6123cfc3ba7db5a5364f95709665d7fcc15e2ecceec1b1308b5c60fe2133d8c2a58ba666178a35660ac9ed8f9f63b1ba46b6788d58aed05c7d34e71a256db6167b54d8e1e1ec42051a7f53de038d6bdb59216cbdfbc369b20cd12a97ed399008ca13b288513782db95d2f5edb876bdfe5f0c784a0def8f1fc0216d2d7928501b2db9ed8298f44a89f25ee33add89aaa765f44a36163aa514e3f9b9c509011bf300cd7a4aea563670ad7c3bbb623c39bfb7b6ec15e2b4a70612abfdfff7cd4fdc04517d31d20e6b3a21a8ae5989c467120c0b1d92bdda81efd6b4baad553cf0438be45ed9d946234f6a3e206f29d164cf39eabaea041271cb551ba656607e163a3a0e01bb7ffdce615b42584fce109a0c82e30f6f021f8e1c093712b4c319d9f85bcd59a27d3782e1811b18bda091454068a278061da464678e0f7836ac4be057bfd4052e5fc413873a819172214436c71a270aa9560950b582939f7fa9ecfb552811a653688f6ecdd503339ab32abf626b7381e71a6505136f3fdfe560fe3b93505d30d7cbb61c75cce5f956f7ff1bb457ae015f5d404b12c505acf30f4d69d97785b5d731e300ff0337fd3bf45d51c62100e34808506147eb893ae7dece3e9084fc80428e9987342364b2d213b00983f8a81aecba7d03cc5900433403ab6f46b4e4e05c4781579ef6ab7f16ec790f3d30149329d8d944bec6451101b212592edc4d573dacd8ac0de52c8df9d9bccc260bea20efe450b8bd62ffeaa9e2553a9d39cb6f50bb911913747c69df6b86a6d81162a0c4363e7e6f25d67d3ae1ddf08ed2c2f6d538d15889dcfa02209cf122cefb572c43f235d7fc291f78f6b0f7801f6618da5f15ca4108af54ab8bdb2487e827e54e9859a0cd931b83a6d43e982712ed158d56242fab7188e456deeb1602eba48081066b0061e4b176f1ff63844c4daab3637522b53d66d6e60d4f8a2488ffc9e75061cfff5ea53d965d56b8866f5acba1fb4d0c5fc9ceabb19106eac03a2f5f51ff94189abf0e4536c2eb349d16e898b573c1c48eae55a5628ca0feca96ed55ad8d1d5001eb5c30bb4184a648d648379ce4880b1451e9ddb43dae9651ab8b11f3aa8cd515c951068aaf1df067c8f0f6f447afc3b3583ef3f07b3446d049c23fc026088d8bdbb238a4f7641d4929fc3435bd148ae1b74b1a290c2a212f782f41ca2ac95d16edc880404c3c45da5da8cbf7e5ec9ba50ecb4333c9fe450f6cd121e4ac9f003811e0cbf2553b3c2459d7129ae53d0de904bd5013cd11382efe8d219b416a1e89c9cb3735e32b1779328f70486a654fa2a4e556c7d4350aead3aaccabb59fbe97265e1f649c8c7d00c17b79dc0791079c9149f5a7623559307455a4d19aca05b5a3f3367f1111cc8b3c68a12e174735d039b4b8ceb74d16621c1e57b34206444c4ee7b8410f1f07dc36c87bbd3edda891be36903499ae21f6707a89ed7887539d821aa26389519dc3bb328cccc3ffc9fd63a1517af9fcb4e4143f2e7eab1047f42872fe1590f6f9cd09e0a65cc52dae70c90e4e8d0ccf9d25ca2a6f12177d68b8e758450cb791e756202fe19f8c3a7ff50a56f699fe3548cbfc5c25f9fa3b87ec2f39c6a40c58c23b532212cb30ce31ed309a8ffe832e998481d9e1bbcecb96fa6206250240b77a902fe0e266e6e58b6500bcf72fbc2f998fdf0886a0f1439de491b4e627ddca670240326f82744e7bda53e379c26da0ee66b5366c9552ccf1347fbd0d6c96e6e9d2aa067669742dbc5ba1fbb208765e28b4a613204a1d25cb479e9ec6cf6a10dd9336ee19c0327acf50383386fa623ad850c932a7768f1e1ec8c35724111984db0ffea23126438041550e7d215692777d60b68d5993b71ecc791ceeec87b7305008ff7a28c4195e40e7a711122ddd503fcd3b004a83049e21abc8ec751f793659b3baf46e63488982e2c6ea684fcb7077b129ca3ef33baca4e72bde90ff9f6e7a2352347bf44e487d010e47ef4686780c78de0f3a6fa36933c699d587b65ee11f03e47f59a44937ebdeb52c6bd4477c9cbd03589270e68b72ec89e729f6f04ff04d74bfcce328c5a231c5def320cc86773c65109be689dc8ba1e6ace73585aaeff15102ff018ab6bc3cfb6b561564126a4dea09ddfb8bb93c8a5ac1ffcba8997182c1fbc13cb9a10aaec0208a89a09057c781f6de1925933468bb48bb4fc8f6db66af805f68e072dd640010353e33e6a4473fee7d6d7d72c3f6d066ba56fe50392f4f0afa90e7ea1bdbbe9440d28eeb722d00f0d56d906dd83ec0c450dfda6a9bf8d8387d37171aa92aa4c67d2603eda8d1ad59ba27663350fc540ff2f905ba4d0b094c1e0c1eec1ae971045ae18f2ccfc5996fbe4f408593ee3b79ae83a0ebd71ca1ac6c48b69ac0538b73a3046b5db92380dacd5c57b9852e0235bf030e5bd0dfed62f20ac935f9854b7a5dc7452701387325552d4a39c3e356fe22fe629e7ecb3e9d6456981fdab3e243a525aea950115342faf8700230f39d914a4d0bf94d45512e64962a9125a3d83da6d887f27cbe7a03e590da26d6805b2ed5545ce70f96eb0ccecbec1691dc1f9c9ea87b887045fca29730d94a145f611b5d1faf980e5547d09bc2420e5c4fdad8f34a68e2e59c1b3a5761aa281cc5f02154b94e6def32763a54f3862c36618d2a573e54eef132b84b24b2f30ec1e6330df05aff7d654e9faa0bf2cdf975a48812fa561c8c5ecafb3a4346845e96478c3027332314b47ccea7f48c9b4f9faeafd3d2ec1e10d5b8f4ce547c090c5ee333e0bce5892e0130125c80fc99de39c9acf5f0dd6fc4d8cfb8b4fe2f2b23c78598f55d0ec80078e5cf160fc74daaf776cfc3e1d6b563917a4dfd2358d2407ceba94ccd5a8c703b458ac7303ab38a2b077fcb2493ada065dad89bad03331582860c48200ec898285ecf86759bacab8fb13661b007749d65ec8ee7e2f690e8e5ffc34c0bffa84769a7a80dce722a0c5cf4751b86a924748501651e526b9c11bcd071423e63537fd6b1b13a7c900100ad2eed5657420db2a713d5df48b4b27f6e8cb517d1f901f82ab3ed8e93b074af39b173b03905b5d777c1e1aedcc944345bb6953cc066b39c05558fb109de91945abf018c6bd538d714fb1a7583fc23c5c23c192779d1d309bc7129ec56f7a500603afe9128f10a9c8ba99afe3b537bdb06f362d076186212fda82aada6f6329638f1ac2b8e72f88121dbcf7a4656cab438a5b134ee2be83e43f6180798df07cd67ce6f09905873d86e3e76fd6c484ca2f79ea0d68a613e4817b3bd2f8e7453714c5eda9dfc09846649f646ffdb10d58b9fbfe5393bd3799d22af55009115cd23b7674c9f918471e27e10c7dc8a575367c77593670d1b96e11148e478bd6a59d4d090e58a20aa23795f2917553496d5c60f3c966d1bfe626a47abfb3946bce24e514a291ec35d7f4d1806cf0edf1f26474171bedc87d8fec35daba709041a77ab057b97dc1f6380f1dd2fbf0ef660d022bba5284a8adcae2b7ad3ab5296b420dca6a5d38dbe31a1efe6d9e941f1d9a79f31b83fcf8b7636146fa2f0a2130a57230083b1bc6c2e3542369c23f98d96b79dbc5be5895368e7a4ae17cf2c4ac85999654aa337b2fcb5dc35cd93699723d70c36e18618436d84370dfce446908640a97a22939255daa8212184bb293f450073e85d0522a379b8db53903fe924b90c93487426a3f036ad6a3f8ec1b505f0e66b8d8961d0ffe654d2a28bf534208095eaa41ac70795f97984eee080ee324643219ced0c4f951fc114a493bceaf333b716e8a7939c80260b2e7d523e97de9bb3d8e73f9b51cc9a06ca8d98a1ef7bd1cad3f33b8505e2d6059ed5a3f9d988c31a658e025089c63cacd4f4becece9ea70bb089a4ae2aadb464fdf72405bf4225e5b136c3ad32fb6a24446fc134367ee83b91f1c175b57f6cd3e6447eeebb6662ad3b9f93bd89e367e9e106f4007837008b2ef0690d9595c7bbeb9768ca1fe1874f937c953e4eb7c783a57b53040b34d37a920d43437fcd5feb10325ea4a5081198e0a7b34e4839109f3f564a93090a46439c2b52ea68bd1fe54e748e2ae8063d625b9de266be93d50092ca15f1afecb0fd816c34c80cd70066116a9eade8d07827d24a82b6fe44e6ae346af40ce1ac20b448693ff06b9cb960bb2300338aafdfb7262ebb02d91b58d1f0a68832a349874a4cb801e546e44db81fe1eaa716581412cdc3f02f254488e545251952a1103e1abec3ddada62eb34d060c3e3ab794f4165145a3843a6360a7e4de98b0a84e7b0221f0b84b5609fb88ae02d97bff7ce923ceb75a8676c472ae3515a1222a909da2cc12f99c6484b56245b2313c603ed674784a750ab995bf1cd313c770bf716e6d6c384acea4b67d16720134f3b474e78c1305f3b5e93335e50bc3f7269e00bf467fbbe6ea2d52e213cd0ab42fb512c5cb79c698b070873d20620ac3db28abff66d9aa5bfcd9481c776227fdba85dae8c2189304c1b970ea9c0c03c1ef5ec1b5522380036fc980454f33c9470a28661bd571338d60b644935d75fa7ae06685f0cd5726b11ddf98013cb325202606c059289a2207975d59f5f6bc44828d0acc1fd64650457c43bdca784bb007676a8ba5f8bdccc89726a229d933df9e39382deed6121f28d6df8b5440d864db4505bd81e8971d882a8f5c0162e1e23fa583c40081b418e17ae308b78e2be2c8056be31d02fa5eebe398cc9b3800c7975aa081bee3776e470041a353ad8854dc2c94ff71ba4b67e712480947da7f730e27ea0881ad7b9304773249a69f283071975dedcc6d0418451126d9fd708023f3c8df23d1bf3323638baf8c747cb7bb0f72055c977b332ce856c09e1404db17980ba1c19097e717a411f8d70cfbd66a818cb0564d5dfa56b1482755e7d39a1942e7768734633351546a11b287009a082648e75cf0d20db2153d719c9a397bcc95bd49f16e03866a5c8040133dc50bb2d3da160b7485377cc59936d641b471d16c762602ef9ca4e1c4df91c9df3ea6a0cbbe0d53e74dd527fc3e1452fce423b93c14c28414d4258d688952edf0d7dcc48def80445ca659b953ae2c8adb1b6cc67952f0dbbb45f3620fb597657d21913095028765d0a7c875357ca26fa4bfd9809f032d638352d08eaba8b77c57189d5147421f9b975e3de141a420c7bd4a2e17c92f155f2cdcced8b228cd843ecb4efc9fb0a6a10b2d640d4a4a5395ddcfe2910368eb7df926d55bceca388ca6abe445643e6315826aff37b44a6d9b47f99ed5c35d16e82cab208c5aa11b221297142fe692fc0acb6a65b965bea2e3ae3dc1752a919ee00745c08d714bdd2a30b3861ea377fd37baa0fe428c3fab5d0c96df56ffd3b3f5eddb18db7972abc42f8b572b475a58ab7c9cc86de04d468bfc573d218f7226c18d4b5f3b7323f13bfc789837df5ee015bd3cd5983baab33c76f85783d40eee38311421097c3fe50f5349ccda432bcca2d887cb179be2385dec625b44979da58f9719bec84874fc06e6356e1c07ec3b60a64862b1ea909fcf2c41ab266b8009a5fa81ea0e88ca7353fbc469fe6e12aa3793b8ea6d3000b35a8e085f9ab86a7b0622992bb76cddc7c73dda9ed746f27f761437c2b5f304c7a53fe1c13f399b837fa5755e6ad83b3d1baf48627e91b582e6b24ce2bff9d62e45c984cf3992f64a3ac1003375e0485b3eee81fd4266135e7630fe5250b1a3c4d61401bc50f6ba1e705debaceea62e6dbf43932cba82d625728ac2b0c6e761632e8be56fe4f9d7f2a92b0da22ec21b013f267d9f575b87c94bda44af7ca1286f921bc002af0271db90fba44094ac106bf428167cd8b47ca4f3567992742fec4b083ef84457fdb3944ea9f3869cf6f742428616da7d102df1c0f872b557dc0de2b0420638d342f9fb7d47b5c74835a1e15ab89d471775da50ea81d505c5ca9b1f3580bd949ad71492ab660e2bd5e67be7f4d17f43dd5e99468eedb582efde77744233e043a96edcfe659c9d2ebfc79cb70f89ecc21be042ba4b8739c48ccddd5717217ce351da288cdeab831f1c52adf9c7258eaeac3c197a6a2d4a7313aae9c11f4f9f48e0d404a719f25ea23f61e2173cc71263428ac5b4937f44ce498ed1ada161ccf70b4b4e63aff7682fb233fcc180b02e32821fdc7d1afc9a2524357e9f797336ac3a92caf61b4a1f9077459f69a58f8adeeedb444ed44d075ff3a20f1ae77834d492349139a0fe2267a5bc0ac8c8f0bc21a392bb81814c0975e334a429697f8c14de3cbc2bb28044a649624e573d4f6228dc211cd8c57121f5c9b169d7aa5c2fc03b2c806efd8d0314a161a7d7bd76a313540155f7b0c46a80443699b77f9ebd64a30329c8f38125cf9d4798cab126fe776c51aae5d67df64c2716805cf0cdb63f370bfda4ed5266c5bdfca5f78129f0db28b56a8ff8e591a23b0d21e2565784c36641b18edae2b23931b360eafc51393ef98056453c316d614e594a648ba9a917e19beebb8185cd4551038571cb10c58f5408c13bf65870798e973683205e43955784627f52deb75266b08e20f593f0342314e30a0136e9713b7fefe6af7ca74c103bf8d4c477bfa1becf0bce74a2ce84f9cbec2ca65da4e3a3d3b2b4362b697e480924da49b694c5144c5c16dda53e4d229c2483168370fa73278b1b825d3a23676d9c51cc08662746ff4ed70c94284e79e2c7d2725f82fa534b27cdab552665ffaa7820c178938159dc3ab5f3aaf3be156c714264622db9d681bc7ea6076822a3686fd2c7fb3064d5e3c79566305ac4c40d81df44adeb1eb8d26867dab1af6e8545db14db2838b266dc982504a810fc53e15e19d81abea96b171cc6d13c030eed903e391133fc24d7096c51293153f8abf17b44935583ebfa9a875cf53385fd768d3ab6ec4b2dc5535c16cff5fe4fbdba5fa118763e03093467f5ed586956eb28ea51a63ccf7a7403d2f195601c92422e4a76317326123d289931c4979676b9535b59468ddaad67ed04f55d5cee03f4fe012490689c5d55fa56e12cc18c00fe457d2c7a2832e8a32f1faf280c26dd35ca55a718a8d12a32fd40bcf854c55e85ce6a1847a6958d8485afd0b80715d4d8fcfdac1210d78c4b22781efc4f661dcd8eb170570de63f3c1e18bf14b09536a7cd73cea9b3345f27b8935291480bcf871d8eee7883bf404cc391ed0894f922de07bda36f139e9fe67820c4159be5111cf999cd1d8e687d0c4ffd5ba2e4aff5ada5f665d7e5c497b9e8820469a60523254a5514dbe238842973fda8b6f99524b93aa8cdb86f8ca66604572d7118df95f175361aedc7d9a421cf129a5be6232d9b2e2a6fd06c1f5ec53fa7b4974a5ab602812928b1040287c956b4d96c1de7ee5fc7a8163f88aa1a45d4943849ae04d49041a90329628f95c8089ef00926fdc707048e8c0865bd2b685f4b21774932350462dc4f7bbb1fb619f5cf2c1360800d06475cba9336942842d15939164322b97e3360f3729e8be78d93f73db3d81806c6d0435f2ee9cb0dfeaaca859f7f78405150ab1cfa7be48b466a3dccd32e2361220afd6287da4251598d95b8904d9ecb810e3212a768d8543e04b133a3871f41ec9eb15c3322282f25174491ea21dcde4cc2b6b62f6d9d03be37cddb16935a546868fe122b6a7b11c813e460b1643e249ed06f8deb66c66fe7bcce5762a00223cf2758914a577f19baf9a0af704d97739b91ed145b78a3922c14d79984c21aaece105deed081e0800ab99eb3b2cf2f611903ea829f0910a7d6bc1508ba04feb60424dd05e2fd92bedad9efe18a97f933234b6c46fe58d0c77fbb713006af648b8759a3380774a819deeac0630c1654ac770aea38639be0d897706d2cb29a1dfe609b49bbacc9a09ae23f13a3d19db654097f5012dbac57f2e3be3e84c796ed480a90a11ca259f7194100a173778fd12d7e761f871851bff5f881558594dc46f0f7347c739bbcee806e85c4951f96f867b2100073f1030471c454ca8d2d94ca650b49da12b021dd2f6f097d72edf3e78332528195e0595e7406a86fc3e968c6121f87cfbade367be35ca5eaf88cde36a5c386e4b182f0d78ad1287f0ae42d20a87fb0a2fb84a1f760e59fdb76a7eb0819d97323561bef4d970d771dd57b92610d6d67f4e7e606d1a6ca0b451f718dd013215b9a280f1713f2f62b2e92d2e6d50c9cd9f641ada4b85e60b6c0b21e9f3471f7ccff5e6a6493c59b30321751f0ebe6b53a00076579ffd213666a6768016bd1f04a94ec593e9b5260642a5e23ce4d4bd50e029cfefc4fb8de68b6be0b479ac752bab308af3724777d93b855b6ed60d20d45afe44c69b6b2d4721b71487114ed97a632ea615fc98c7cbdf84e3d0f20f6e1215b3e8792399b9bcca9f866bc7c95ee5331f70a214576beabccc9315a81b5caf9daaecc4f8631ecd1e98c2d7c2a90baa14e3468b59a7df7d793fdcc81da81b4bbf49699736f1315c09b9369085bdb11bd6471dd22cd76aea289818cf9f4d1804b24df5554448a77d432a36db9046e3ea3398defcd4575bed943e5b639c4ba83acc1e4c6e43ffc07bb25358df45c453f74cd2cc8994c44d88e0bdfd113f03905fcd164985c9296d14c6e0fa24863b34795306eb69833bdff3d0af32717a572c43b0d41dd70c712709ed23d8a9a03843da30b72ac4c18080a44851b47055df96eece242881c8b50985ed12ca661a1ee3c354312c0775cce25a5a1078556916f2a7887eff1f80edb8d844b195bf41d72116f61bfab7c386850236afb79ce891c106d541754269257a94e459191e4aba9c063af494c4f0919dfa411397c20b9e4ac87050a51c4cd48da905833376c01e10048284e25f53b80f8eaab202ea459fd7f8d9c406dfa47892153b233bde9bbaeba74b01adc95f87e1898d6e0f3193cfe7ef7f5dc9090cf5c14c0b56e986c06248d393a20bb1beff48e860ca8717ffa7f916c58968617a2ff5c639efac151d5304d7fc2743164e7e0ff6e9dc313f40049150c89897ea1fe2738b8bb3a37f048b4803a4f7a4f00f7a3e0de83fe89ad1e285b882eea8e0a2705f907207078550951e0ad597b4c857e60ff7e93df46fc90ff27118dc22cd111e58498dca40c12ad85db7c4ef0026d50b0fba9b91b0160ba2f310ee5c5b67e4ed0d32a2598fa157db9168e0d2d6e86a337c7524aae34acf784a7a9feb8ec9fde1974c9f402519d27e6e6bd936833f6b2ec2b3b938ea03c4508a92aac1b714d051708e70d26a12c3447d560386c18c72d46437a2fe7c739a696cc1f4d8d4d444ff1c5cc6f137f9d4a00239628bb860ad8e4fe52d50871ed7fef98599cdd6d8e55cbf5589b8e053b9ffb436a0aae0b89ffb6a05a980f28275bfe0ab552da22bbfc3e750d41b04fee155a59c9f1d1d902a60640efd956bbb0bd8013b668b19ea73292376e32b3ff7aeeaec34111d54700835d4bfe6165bfd20dcd16f2002f7ad76cddc0afb071b9cb0be98d96d06e4f323facff1a5af009e9b16b6e4a4535335d69c5aab57223a84e283cfb2133fc0f638bacf1e424f13507de67e6f6c08ba852f4572361fcddf76189940308b8fc48f6f40788be4b8f22adc1b93f60018b9ee1b3116d2f213259d00320d0381e37e2f999677fd3fccc748b07f0adca87383cdc3c115c28cc02825d633f4043b61066c61e33676fd3791158d94a5ad0551e8fe5f101db1c675aac6287c367f72b8d822f876f22a4e4eca5b2d9cee2ab9e88072a6f5767357b95137bc6b10ad9f17f8944d5e069404a6c1e19c672d65267dbf8a7840892d064b279406beb2562b8b3f0a08f4b4816a6f530ecb26e39601f611b08011782b134f7a3175cfc66159b2fd24c91759d915750d18313e006cf7c4a0a06cfd76f7e1868d90c4005af60ed4c6d2dc54f9c9e5defbe53006aa7842497c768271d288fe4b96ac0b22d984fd103a305af844de01e2ef51f6d357fabe945358bd91a8f0b99852663594bea0d02b07a06e4810c3792e0394141b962ddad7a9e74ec1a185afc82e2c2ea72253a7c929defd4f40997810492f983fe181e2c3f2b811adf4edea479f8667cf8fb07ee7fd8bf8b9dc62ee19ecad80ea9dea538236f9ae9d94f070c69c4bca6fcd332197f9ff53e4c9cdd7475f03078e9e47b3f48ddff61404bae84212854520447c09095885fdcd836fa3d62d99a27a1cfe00b534d9fa55308c52e29092c4041a6927ca4cc7cede513696b739a8ac66d398922567bfde92761544251cf0e9f2173cb4c02ca6d774a0803c6e70ff47e052ca8380688ae969cc2ca4bd1e9fe3f75e3fd86718574b810bc4bd35c58ffb949abc99171775e8a2fae9a331747b33bf7633117302105e5112b78283156cd50ba2a7d4e02b169c8d33a292bbcde231b5311b4ce1d6966465924c5a732324c617f11d0f5ca820511fa8f0cd9372826d5cc3ebdfa634ce25ca3cb1da22dd71b39143c98c3fb99f825886b9a5efca119338bf2df3c9b5c86e77f171217d7738208ba7d8e85e68ce3bd91a0c6109f4ba46e24684d0f284e74f3d7551d8dd9fa704f3d19391126521968449451fe922b7f1a758de79e697cc254dba33c3c81a397364547a69c55c707e39dc0469dc3c952a8f98523e56166ec2aa376d584a1698a4658b5f683432b30a73231cb390fb4a31ddb27bc2bb12cd3522915ececd28bf52efe02b845b2a3afa8800a3c003afccec99f7c34641a164ee88e1baa1d160ce28fea450fc089b7579108009dbc73b6160ff9432afd480d4b390ef9349b3d340af7e885b3f8d1d256f5addc56a9f37cbe907770781f3c1f7fcc5e71d4303d0d3e83563eb8f9efc67044adfd45e77eea375807a9297d8efea65dc41c694ba3e6d7df51e2278d6445c779ccd31879e7225fc3f5c83a1ccd8257f17be532bc0dd4408a6e566ee1bb6932cc4965fedbb249c74deb5c2dc732225e62bc8ce79d602c8593a4719360742d29e171cca49720081787b3276a0d697fb10a0a251956e30bf94f6a80454462f13944b5b6875fba0c75c8e5a173fd62daf1692f96ecec2cceeca661c5b3b07cfa12258be48e9f7085047b8173e802019979ebc61c2035f69a71f4c6f3386010ef1a9e6dacfc8d07ab710159fe5592f0c6fd2de4c6617e7dd52dafdbb4d5290b5d9905c277ac1c42358e96b6d2da8c258fbe6e15f9f5cb24aa4144db237bec72346f0b8e44a163c9e0fdb2fe3799855ec747faa7eaadc9588a3bdba45225a921495fa57024e45e48eef2cb33a7f9526064c1c4d4272ef99ba61cf428c6c5d58fd2e60b74bcb21995a4fa7c2751bd95f8ffcf8b3c0f85d1c6766d11d6f6fd32cdeda549f4c6fda009cad96ed598e01f62570524e55511cb2a3562e0b3cfa9aec719581f04903757602f798ddc924d6559cee0d3bb81b8914b620f9198333a1da7ba5c3e707b72838023e25e4b8a5e600aea5fde7a6e6dd74e40ae50e875dfd35399cf1bbf7dcf35a9fb4a8dfc7f309404d61e9fb2cd06811856f1179bde836d356231de51a03cdb519133f690a3c5168dde08daa0a1652746f1683fd92c9644d625a0271981831ae9c291d0acdcf7ccf9f6982073c2eb26e29df78b5b0ea46b5fd69fbe26d1a7d453ee0dbc7d463b423c34aa6e8b5a42b7b3b056a5dfa9c42ed0cd7257c3d89562af7a4fcbb7ae30c66552d860606a70c586bfaa286e16d3676b47020096ed206a635159db271908bab92d70a69c46418aa32728c9e3e1782f14e356f0d8ff51e4005ff6c9b13bb337d648f0903315fb16f385c7302b8b08b53a25a1c18d0f062fc515365d1101e87c964a19e33a526552fb3e0a93d90a284789f6d14d21b3dc43d9e8f8edfc08f3c3957b8e417c4e1f20f2f8ce236c444bd7b822c3b9f595766e8ed28c2759235a74a44b06e7daab46aca41f36e43897fe81d3d8ef6bd7f2031cebd0596e05d84ed514cc0a7edce26d15d5619677415401e6b22ebdf1771c239ed3629ebf68e4f0ab7f334a42debee2eefd3281f27a3f3054b79b5215a8f80efbfb0d3c1c4fb3606f845b77cbc1df44552049d7d5c91140228c7b02a630811d2599dc93d0d7e8a1fc1341ba2327396c8f5e21eda7e5f647aa4c8f42b5d7438e3379db722b2ddb4df40789b00b9c929f75aa79bfdd93101cc1847a344a56e0a876c39b0e767e16162c24f8fd8d82071b19bcd537062ef277ad5645becdc08f2b8122b2113f3dd816de22f76c44d387e665dafa80693325f9e987db32b12a9809818337b84aef92f97f17179ff04956fcb8bc766b8ebaa6e93b558e8a111cd97981e74afcb9fe6ce76b47874d4afd8cbfa4f115e257f366dae8b5902b59c6445570fc8ad23ad2c14bc592a01925dd94c25dc46d6eac8ec90d15257b4222c35fc500559d76531f9e6643ab5aed4f14addd898f54cdd9cc28b2941fcaaadb8ec242c51facc71ad947afcba1d4ebcfd56c956bc9649326284fecb9435d67f2de9de31a2fe4b4ef55b30606c7d0f158af38d1a3da7ee1430dffb1e967f9aa81692ffabffcf6b901470bba547634a62515cde103fe432991d76d74010cc670cbb250033015976bbce42f55da258a1a917dbad729fd9d016453c19ad740cfa4fbfae8e41e00011468433045770180fb130de329e19a340bc65c98cc608086dcf774757cad4c705f911bd74ae96969518785ffab81e1fae45acd830c44f83d9f3d85897d31e1a6180a721dbd76ecbbd0cee51bd5c658a03060d086a2e777ad3e11e64aa0aa0f68f59473b19bcfaa8fba4ce91556d95b1ea7f9df99d6408a733f7f34f11f3f39ff728e8875710eb6254dc160210085652f3d3b232b7bf0428e51f2974b8959fcb8c2241d010703935dc4773048fbd42dd257a3a09a4776ede3d85fec3bd9410264c6f0da1fe530f93eeae299e44c90e1cb10f7bcbb02851cb9054d1536eb4b82d91c02194da72be172370b5926ae50911f8bb2ca597dc18e3d7d2ee6c537f5796f3eb0173e1e3b22c883700890b22d339c577f02ae5c76fdff91e45a07e38b6a83a9c23559427132b24641307b3e36374ee96219ebb40631740c56b12c1b3926f71ec2ac39f69b17c4670960934d32bc0b1a97cdb67329a672836b53fbc688d7b0ee848a2b99bc3a3b9f3ab4550967e7e9be3e2fa79a37a6b644ed664d84c8f71754488eb369ef9a74663033982f57bfc24c681eca4917f461cd05478ff6d75999e2e84707b8eccf7078917f01c9b92eb78c1074209a8d1677d26a21446544c827020c5892e88d6757e230788d2f2182aa6017901d4801d85fd96e6f81aac9f6b77b4cf87346006df1a3d07f0b650cc8c29758922b2ef8ca66607d09707192b0c115bc02fba58f532ee067519fb95cf8ebd25a59268fd9813c97c321cdc4d13dc2404c8833d73212a09dce7741c269ad5379467ddf30bfaf74a707896ced8ff4bcd3efa553e843f8fc16f1b93c9f2d86efbc16e299465f97098df03eb1a0c4c9b4d887b04c380ea79d9bec0eaf9243fef4ae36288f2b5904d47e4075167f18813369edff40591ca70100b8f70fe7b2a55e64fc366ced6e8a17e7c3dba9e2e7cac69aaa9904c36f434a9e396ea325c0276c2ab458d1a675edf5ebf6408bfd60397e7b34bca5550cb0bde6ecf3079d3e7d21cb2de4d2a90664f787a3517248d776711eb8d3e0ab8104468079acaa371cfcc5e1fd3b797a3bde8832fa872741a69037b8ccb1a83d5c3ef3f8ddda50a221b3633fe5ff4299fe987a18e72809793d7b6dcb9cf9a352a8527506108a90c220a6495f10a99e1dbb0d80e4a58489f32f2d36655892aec4f050a25634a4567d0b0c8aeb206e702075bdb117d68dacd460d0b569029a559263bdf5efcf3d63cdaca57f51333892f6946d0cf291408c5fa79194f0eac25c4106930c229564c829fea0416652a6513bef2beeea4941d744848880b1683e391124d22906ae536f3c5342311b0b99edaad3d69db966914e41c209aa80a35796fd5f1ab28fa68992e8d5b9714212841bcd2cf5c1edf335480c1c7947db81a9d4901493b22c58de42a10c2169632ed0836ffa61e517d5322c96415711840b6b8386eb4f55f67861e10f6599429fd7eb41f0b0adfb81474bfa96d6dac52fd3a5eb3dd7727071b07ca80afde96ea53f456858471fd577b28ec36c44dca341394a87fcd787f6de538e22db23c81eb8b34c7a46feedad1f08d72c4a793df19799fd850037fa841c2cf4afd44d2bcac08acaf1a829a49ee23804f0b4ee3f7868b62e4763210ed614e747023b74aaad741148ba48879a28657bee5b54916c052df274e4cbcc7c4fc01661a3781be647892607b523ec22b00f6bbfcf0f64cae99f2a7fa7f18fac76b5df8a6ea5796fd9f8780836975248fd263fa0437df8217ac846df8fee98817349b93d135d7772ec569aec875a9301bc749c71bf9f16f59017cacfce612bef9640e19794e584a5cb34571064495353fe7fc38fe1f52da30994fea84b6290c4d10e65c1c9a57da7049607217dfeef24b5551d7c5bd869ec4517881b204122ac39a8e262dfeb1301ea74c989f73d757b3ae168a3722883a6aa99726e1c1c1ef689e16258d5037f741657d786eb2fe564cad40a5e814ea9ff218f0def414025949e60efd3fe9d6523e2f16c60e66a5d1d042242b674881c1d97532679475c989dfc1cc63581853e58eddeeb4a68cee2de6c0243764d88533c7da7737e188336d047704cfadca6a16d9a6032ae652dde5bec8f7a7ea362c6be493c443c52fea9c3cbb623405d66436390365622c7c8931b4eed7c6a1ecdb8b1f350c2dec8f0ecf1f57f0193a846942d3b823544e9991fcfc3fe5f19fcac9d74795e5e2901c9af49d84e2dda34df3eb249bb8fa01d6dc03c5fb284c48ff5ed195bd432dcb7832bbbaaeac583cd22feb02fb4985828cc7b8e9ad810eebdd68cff1fe572765abe0913443f304813f6858da2ae37cfc1b864a8d08c9b967f3b13e5ce6236268b994c82a4cd512bfa15780c1e8064a215370faac22dced762989c7775ab34aea16b60656eac78b3494e9f9a63c6547046a8fae514e6fb37090aefe3a6a540ca2743c137671813a81b00eba2f22b6b6ce7f4fc68cdc4f1c8a8c31881f4cc97235c39de24f994980c60f8e4cc94bc1a948287f8a2d965816a8bcddc0e7a4e5636b1942452b39c46765d969bbad4493068121767e18a2a88578d1389545535a2a14fbb5cd1c6e1924d28423a0280df336b894183131302757aa2c30f2625a75f3c8ff5c225881e75062d33caac2b48d4494bf61abf0cc28ee44dfc7df6903080f07f008669f575eadcac86d578aea18e7eb1b05424f10e7d292acb2928bf213fcf6470956c2964542d38a6e67ca30104768882f14da3d4d54e667b313ce0fadc0832e3e998e73e951239fe1d8be929afb58feed532e54eb175413426dca2e8ab721603b10315460c8e6b0458e4234dec4afc92e31ce0a1866293e7fb79bc507f0eed5807d63e44d31f5d8e9d5e38e384d4f8a36d409f02d38d459098eb666ed096caee29230fbfdf5ff377d81fd48d31cd1e36d2ce946f4d76d3c09cf8ddfe296b74c24955dab7e9dae5990673e60cc459005902d611f9a883d1813f4ae4fdac58e5076b9516fc39303e10650b2043ebc1a20103eed09927e76380578e3e72c0a2cc3bfaf5dc05c22fddd04d3e7b4ac3e6fdc4b00c6c9f7f8dc38cebe7354a3e600c0601b36c6c1f82f791c159b098a37e7e6250d7e5a2d563be68e4f81648afb93bec248ea6e46c369300d842bf33dd99841eb6702011cde737e6b9e9b3fe67d524d4d92792d1026c0c4790f46cf65af8e5ec0d126543f138a35535d5dfdd98464556723ad864893093e3bb4cbde45504696b8eb3df27f9a78c44a3e7f54ea3a452e0f7c6484ffe94abcefdd17e908fda4eaca0a9207aa70e0f8c0e5252e14588b0a7f496540190eeabf117c3bd8dc4a4c3d046629a8b49115daf5eebd786718cfb6b99f1917b703240ed00cd4ef748af6d73cb5d279c16c93d8a73fa68e0d9188009e9053aaf015ee82f7c3a4703010fe4e2031581c2f13c894f982d6f9a92acc3dbd356ad6efde6775c2e4d85a72761372cafbecb64507cacd7e73459d94b17fbef6c69ebed7a41960068b5264e952a64f5bbcc064147262b3f7cce18b6ff8f9107a3101cd3f3a33f9b20cb0d9a78a0e1277f899d0500a519d583549fca22e0a56a27f509d7aa5343f3db3f623bb330166b2574da79196ca059950669cea9ea898a6c63a1f515eec4bd737e0fd44cf4e06ee9da6e36b4167f8cdd58f34276ae4374e6fc742e2e56bb94ffd244ecad521006d9b8eded2d58870b008d3e30fc830f13f7a43bd5c626733d55c2f3f69480ea10330c4f45cd501d81c5b94ef132bedb4230e54e724ecd0c3fdbad5466f731a737a8b1713ce0fdbc22f12fad102307cab2d50f2c339bbaf9c8a7fd63d040caf374085092260f2b707fd7dbe834a3c8b297c89af7eaa46982e925905d23a2926f702707d632e6805b9e90dc111d16b29e2e4788f5a24e564314bb1b47ea620230a90164c684d70a336ddf0a3bad3bf44c0f2a3610bba160abf8268467a166f13e706c93cedc37d5c27e2893020b671caf4e8997579a1c837ea897e2c91a58a116b3daebbed0f7116519121700caab906e71f3af7beff634540eac24bbf22ce6299600ae4a941b898e95a7045928d48e642ea02253817d4b17b4deb35114f35a5bdf5f4b8a5133f8430c1af2305b32381e0149cb588fe7af89d9128ce24d1a7c843007997b11566a9c5578d62feb9ea4608c91a129c247c9bcda3d8588f5abb4f2110e147b3461804857f8e80421362fa0cc299b09ac7a0c98e66659a49d22e8e5cc97c4d17a7e1709a3abc9de81a62f891a14dc5cd934be5805771d59d9d3c61216675b239d32ba3365b957f45b221b7afdb8472e7192950d6f93780c111e4721884cddfd7476ce31a37742fe62469805ceb270ac65ca971932fce2ea66ccf12feef98e51b59c8100cafdf3ba5c876970287bf8a834e737b629a99a62ab624c4d5e04dbf2320609b28c0aed68ddf831372f64ab1938a77f6d441fc9a7614390ff231f9b17bde6eced12570b4f147f00889d87089986e6c89f1a388b2fd4e109bd7ad984df859cb86a77b17c36a8bd3dc5a99570e563345900d5d528363972ef75186979c71a5c9a76967852eba3551106b8ade9614176031663bdcf3ce7c93a07884b1f35ed3232742c53c2c072449394dcaa41914ebacdbe01119283996116c853c87bf16aa20e58443c2209ed75266f2e8e5ba1999b7ba811253e92c4abb900009e39a6a6551b2df63e979f74db29c9e9f09fdebfd9c7d63da9e2b4fa30256cd563e96690b39491757b3f60219ac58962a8db3b2e060a21f25f777a60240bbc7b6acf23be4fe934704f59acfd21facac60553cdf168ffb421de2f35316255166425c237c47b505dbcbb8aea52403f59b15b734f187f708f5d0d737d530a2691036733dd1d7bc3645761f501067ff13a8cb3579fa0b476053b6a4fadfd28e4bbddf9bdb5a51b7539b4af34df03638423c3dc483ffb3b383e0a3989646a1fe2145f6078449eb4d9dc591ebdf6bd5bf0ffc53f7cd51a250ab6dc2a0d059dbe6f9187c5dc724acecfe3d18b54bab6751b6cdb1e98ab14160bbcdb2ca7383646b61965684d0a16f47ff7e61b85241e220c3dc32eef30514773f4ee5b5a6758b9900b5e0c1c3d4e731856332ffd327ea58dfa28b1f8754ca508d6b2569c429c3bafb74b38821f6a08a053ff4dc86477ff8d5be67a45b0e639602cbf67033b1568b8e0644e2729e3bcb8d26f202e418d5de5d1159015bc443fd8983d42ac0b66d4c741f8c6a8b59d7752cd04cecdd0026b67fdf43fbd98407e800cd04ab92be5319d04f7171885e101fbd1675e3d1fc70f173797ea3be469da784fc7a6d25cd1be0b4c4f13893de282af818af50dc07170150868dac167962da87fa98b7b2096f9bdad16c69ae4d7b3d112150597474f416db07ddb658b02d50f8a0889663e20c82dae84225c67a74e29ce24cd53cd7dbe2ba1bb7af6df01926ab3a8c6af414285c54ebdfe0c161b79a8915ac6ef7019db5001c516a6943fa03713f77009fa28a67a7c6b320325ab2e004f39cf57d17879002cbf2c4c018f23cd16d0cd73fadfe9d69e2bdd6a2dd6eaef8cd436479479be0631e48a19204c4f8ffa95b30f19e644510bc61fb0a80916a2e2cefed0e3dcd13150e552e80e4ce9f353975cf7f2d1fa0b9139d21f781af7547fa8ee56ecb39d3b821df6c38e5d0a8c8ac5d0ce64069889f09500b4604d2b06a45d52395edc5efef19395e087593ee859bb5fea1277bdae5ca6381089efe6d427557e4bf08c18777bce6ffc82c365cd5013e57ee47cf072ff6bf268ff7e8055f29e72c2dbf13ca9337446112dfafada540ed14c84bae0f674689d703263081f818237e45ad91ccfe0bfe54edaf79c751b8a2f9ce210d6524eb81c6c7635ef71685dcd373170f0627dc2379300a30183b147272db1a338548ffdbb3f8399fcf4cbd1c956240e8b74b7758df7b9aeb146f581abf5e7ed648d311ae79cf5a5182ce544fcca7b120c70729e0796430b30791cd4592241e63d8fa1ba2e78cddca97a81adb39384d01ef2457f495d7fe66e852e70bed5bd332fe03eb06396eeb3893984b27f07118c9b86f95adfa3753cb4b284a5788e1d729148df1bd34ea1add1a6611987c8f6859b360dc70230cef74fe350b7f9f16b86a2584a68ed971101033ca384cd6a8c18529b35cea69359a2c57a1503d8f66f0384a0be14e212d0d24a456782023d31e43cc3d7e2f50f86a54bf02b77f00e3b9ef1ee6a4ffa1151fde46adfeab35dc60b7d978ca1abaeee1ac28c3d59d0fea0b2a10ff35fbc846b69df3bd08efde72f816b97a563f4e2c92c83d5ca5c2185b6d781eef2e1214cdcf6bfaf1436108cd761bab0a4a1bcce7606af2fa70912d2588441b974cf6ab8c4f4ce021aee29592963b5b2be259a3cf754d5597b72f413a5c3dc94785b57d9262a084761a8d9d7184f735b600eb97972571e74413b8d0b81f918c1749cd2d86a6ef4810029a8d498900a46a7a0767eb17f5571caefccaf12b72590d10658cfded1ed352145806422d01a11e6ea933fa3a277f538aaed65439fd36c6ab79d60305690c3817170bd34a03ded24372a95d9b8a6d884092f38445b1346118e4df6f5365926f2a09f77cf3930639b4dcbdf092fa5bffa77aac2079fae1a0b18d79d26c2b62dda728fabf748c8893b8777778fc63a7db8c1f942c53d6d0c8e4aa4659ec00a7ab2b1052c37c9051424b053fbe705253a32fba954784e18564a0d3b959d6e6133872137cb1af2d39730ba48cc343975b3b1b7b4695e600dbcdd9415434804dfa57b9e0d34b3334b2e663ff757bd027e39cf8f79fb7cbf53935d8d3b9a26ce25ae458ba3611643861688d4a85c6a7bb27bfcf7f1c519c96547d314e698a4d53626ad8f4e28dc365c54862b29fa4be31898fd66191c3e50205bba85b83093198f5111a7d394a4b3915c0906b13611e2325767ccc3893d128a3d84115878a556839de47e9e1f8c2853c0e9f74c9a93577df728575c84273b65ef152b6c0df35f1ce9292516d3bc1b0a72b7f969a64bbce96dff8b46e154fabc6246c151dd7a07f6edfc06698ddb86dfad34cb713ad711f38affabdb25df26e1b163490b4a9996e251093f6a7798437dc8d825a16978633006106b3e8a28f481c7ae99370894d6545f13345aa32288e0264cbf81e196d6860c6ef67eb550b6ddd5da93192214a9d2606f87b487b0734f6af01bb2c33a4b5d8f284bc9cec0b63207909ffa42a530f22186535db3fbaac36b5631e5c0928c733da2dc977ca218e725edf471cd3789a32657bac7a9bf045cfac5d8435670113fc0138b24d066cd189702b75a469e10c9bff2c3ef4e3e46a770b7119a49cc4cef9208ea91e83f9987e653de824d123f6042fe8c41acbcefd91c5b14fae33e8e7b8adfd6864ea4270b4f59f35cb4b00fbd4c33c5c720041941281434bff584725cf04d5f36a6cf2f071f00993e42f6f89933e17d3b40e15d8422f7911a6202e4d2e3d9f70d5b41a98f9429e7f55c4b75fe666848cfbda6da8895519f93cb3dabde8f5e0284553c102fd12995bf1b751b3eddbea4cfc0a738070f1f7026fe5f8f46a68da4c0a048ba80d149f4e74120479258ecbf72eabeca26dd95dde9deb706547a69ee1a23ae3a11e944baa03d5e5110aa91827125c7b9af53987867fc36772408c950a43100d7361fcb9bd58e2259feea5def43112441a6cf434c0f56f206b22fd9633cd48f0bd4ed04b709e9c49bc80397d11a7c39fb60d766707194a6fcf56c99fde604f31f364f07ce87fa805d19be98bbf0e7f13d6ca5026c27b730b0c6605c985e1288cb81bc60516f02f661d50d4e554c883787cc24ce679730120b53904b091d93ebe95fba903a6846acf4fe32bafa8d7f7ef971e5b530fb82f3985ddbe0865403803fdcd58cb607088781c1d472aae2633ae8eed7560a55b51b28994b6bff923def4da87f3ca02fd156bd273c2044363d6574c3af83513c62faf9c80991bf097ba3383408fdcaf2cd475e3e630117bf3efb38d0a3c2eeabb5a1838677c768b36d4ab94f1b201dc8717064a5a366c0fc777e07c2e4cf983c6a47becea6db37d2535824457e697a16d547f2d16d365a449a72b4888918e774b9c507b9aa6c9b8099837da07f907e630f2ab582986af933b9e2f32ae24034193e1b93f9866d1a4eba489c147cc307af51d9dd2886907ca79dd94589199c50a5fae96811d6a68a229a656030182291c5abf7a847944aaa08dceaf2e1ceb9045a11f6f74d983397e1795df6d552425d93368c770c07cc9f1460a91828d8d463883ead35faff03978801f72ba660ab70c2d48577a1e9608f708930c67fae60ee04d19b4e63795ab3c096bfd4d1545a5c2dda33dcfc29e5cea7459b28711e8484ecaff3e6929f4f5e1f5c843e03f840d8f0b1c8a62e8d4c366dcd8cc7a4b59a2825f80aebe0484f198fc2d8b551d2c02d260addfe6ef71ace39cca8d13a10b29144dfdbefbe58988b9a8b941a715935729023ef1a6fe9eacda2c217790f980d8ec6d483235f8ebfe8937851848f686a91c6a2ddb8ae02e8ea006508607e80a235bd4dc6cd181a2ba7d2a7eff692a32028a4a76c26d8ce56f642912b1577c99cec64428960ac5d978681ce1227a92b8c2e0bffc3d964220bcc053835a0f4dcd93546285518c9dd94e6b612a04e5b17d57240faef990cd1ee904b3e5f1e2aea6d55cf1edb2c7615046dd146441198749ae36cd66037c19680416ceee86ef6791dc38f176b91418ea0fc52acee7065376baa0da66ad438a2509019088eef70d8e56c7ffe7b45565a74fbb33151d22c5c4b165d5dc6bd484e841490e01949a1d772c9fb492635dccf5ee9e8536411d3b03556fef90ed3923d56c84f4dd14bb41fa9ba64e5aaa9432f92469469e2a50e2c940376bd447f473a95d7f54402dc3fb91e40831ce9495eb018ca1e23cad7ad76c97c39194b41fef120be113b7fee67be9ef92309e9aa674c4ce82f78df03bf4ea80f5f3a6dc4e6e36fb60f3d1c95f627a6798f0754705f7d5ea9401028f0ccb8fbf3381ad388d49d0a7892bf331bb97be967cae1f9fc5615d0cf42717130a187fe156598101ce7b20f46d6dc2032b4b9cd73c7b449b39442fb4e96e4c99a3e9fe1b01b6a97e1d0acb04df77dc52d0146ee16f50ddac5aecf8a11c70f02cc057c4ab9c699406bfe96b354358a075166b59a27d162e897ffb0fc0fcdb335bc35f3d0172ce9c76120a9f0b78ec04f2afc52543b6ccfcfad15fb26b7c8e23b633ad681b3b4a74dfdd904d7b94c51090072ed52d906fc922d0170af9e7541346d7b1e5c4c9a75d50d9670e7205ba6284dc3faff7c322557efa0eb938fcd9604ff9c8bd82506fcc893c4773826850aa04d706979682085e91d5119a1da9501d18a642a5c816ad972e8025ff2b3f108eb9a8b86144708c835679d07fdfed0a887b4b30ec4e8a0e08276f0e8d4f3786f85d82e38d59fd0c8cdbcd8609ea04ea154464ba7e34897508e02b2feae2dadd77070286cf717638e68a4bc49d1ced30f2c354876fbdb95d98d8365ede7f5b07bb15ff4026a85566560187229b49a954446b58ca546e4671c5b8b0810f7ab34e5d11252af4fd1d8fc32f8a5e8bcfdffa99d5e87e27136f1ce383f936bee4835b65c52093b7daa02a102098b872f1003e670610a291c94fad849e049f9ec7d5664653fb061ff07ff071486eb44ab8f607ac2ca24a95bd63e8b16e48619a722f240016084fa947bb0aa5441acf29db5b385dad82fc038e8028a0a9d7fefe8f33691c7bba87a2e54be4ccf53637ecb5d2d04c45f82112e91c223f772c5340da2f0ca57085bf17390332b385ee426cb7c3e14cf3d7c27af0fbc938fab8569892fd343d0e5f17f3fa119446459e45189e6aa500ee0dba9a083641fecc2c924609f63c2572bb6f720fcb84ccef61677c564be46d7d68f22d8280f1509543aaeacf3d7689743e9b7d97d693714916720931d9e6c467a767ea4615171469126f91a7c88633c998a1ee09c1c9d78ac2f91d949f0c0bb9ebdf34691ed57e84cd28e6d74cc9d7713aededf6b0bfa5f078d40d43b546a5859d4bb71c64e9c96914cf4faf25b817da27557366c3270d53a39f593b5644284d4201bcf35df4cddca509e2b27916d08dcff96773085ad08eb84fb7a8f3e356a34ec847b84c393ad7df493fde72225d4a7dd0ce9ce03a7c98758a0c1aec5c37b8b364687e2c446db902377819232ea23fce00f07241c150e9d5cd6f34b22c4e8de640678f5732f9d252dc85e38c7613aaa5643fee4000172b3abac708930b1283bfb98c592ce6b1100e3df4d1e10a1e23afd973282e03db4c0af08eb59dc7678d8d40f5b4af246b67f0d4a9c8a08f8e7da4a1db9d9255c34280de7ecb6a3ae564f8cb91cc1a590f02736e0ace356269c57d417deb92c80794bbd414e27b9ac06dd05bc5bdbc2c988b80a43731e81a8562be7d9a0331489adaaba9bc29580930db84d4761b7cb722ad6da16fb7cd0b4ed99a8ab30bd981f1f95e01c4b7760e0b8743cf1ec773469e642f2b5e19c7e503edd4ba877242098c069e01ac041218a967993a6abde2b87b0a6d1e1d7d5059fab6131d68d51610ea7676ee64e3255d6fa8383c2c3b6eca8e0e7875a22e8ae2e991201e843d951c48d0e08b6f36382807a3ccf494d0fe2d1b313ae291cfbb58ef0b611059a5f4399520ff691043609ab73dbfbfad545286bc8d6c7dcb3eba0ec9f5dafaf4aca5a6176cc6b37a802015782dd41e1dde0347ca3850ae1e8eaa0cf16da12603c43cb00a06ae6025a2585cd0cc82f5c583aaf4d2db5ccb0526c194acb501cb3100b7f711b712d146b512c7ab7fd301a2ffac31d326320899964a622b6d3221c981b184554fa96087d38a433efa26a58bf607d6ce2ae59ecfbd73b87d40e6be15b9a72c85d7471da0981abd46292a0d65961eaed5021844ccab838d6a70417cb131b13a96df1b4aeda0ce45484611452c18c1e5ff68508d7eb1587eab4daa0542fb22ae05e085e9c908f37460c759006b0cb54522f5305815899232104b6326152d71ab22e4514c31f75c8b8752511a952e9be85bca21b229f56a6ffa3a76d6bd217a3c47e29fe584d18a90c7ef3bd8bc9edcb7f40bab2a162e9a6fc25a971e93a9922a916bde4b13749d325aacc241fa848effac423f4f8d5e3156c1ca93826c86b97bb5fae08a4cc231accc15fe9d078cb322233560212438de5faa3a79621f0ac45e2e7024b19503610be4d815a5c36741dbfdfed2b5b8af09b76d6e27020d779308de1578b0ddbf71b231ea09ffdd307b940fa741d3b9a3aa8d65713fe76d8b1ce4fa2b25db5d88e3496c749709cb37cc0f21ebc5371f968959ecbb821bf0389a59225e1790a86e700f81ebf87ef2f3541d3c6c250d4424874b95b76341d99eab225886a86857a1a5394c09846ce130a3934d22f55cda1c216e0347fcb6d91abd1ef8d0f215f1b233aec8a7b34622025fbbd075aa067597ef67407135137178d81921adb464c25e623a321dd53ae8bab65768de078c73ecce081890a8002070fbd9cb9c27d4c2788c9a26bd879ee7c3832286fd37f633be6c12cf473144d7612c7d219d761ca0514e08614121ca59027ebe41f6c1069ce7d298a853f43a22a4c1a248b0478017671c7c60bad46ca58af4f63ef55ae4a879a622dfcfbca841d87e4238663685686abb1e0024fac72d8cb30ab9886c4958dc838371fa3afbefeb6b73b231902111687fcfef134027209f910d7b7a636d31897c4ed3776f35aafda5a5ba1c7aab15769b72d93571af057bd10b34b0a8764f866d91890eade05c8aee49be28e1bee538e8f3be79f6da42304f2a7393993050c89ee77fea5a9d013308a27ed9c8d3b648f9cceb02b087042483cb0c80729d9ccac9da7538b965d0eeecaba6a4eb8aebb39c70af6a1095a7c8ecb0c253ff6acc19e10b6ead6d4496c2de53e29df42e4dab4c46483972b870e30540de0d5946f0757f8761f4bb84294dabb509baa8b961af9dfe1670300a12875a5886eb8b5a9d157e760d56c1a94204c980257fce67f26960b1275c3d94570ffb48fa521ac29e55b295feecff62560d571ca9770b72a7ec9f586c33091867e04bd7d4283dbf61c55728cd67394cfd528a559b8e4015bf6e418682ec4962b5e58f7c666fec910e4bafe3bf92fce9eb68a450ebef75ecf34050209d4ca05771148bfce156cd973be28ff0f49304c326ed371c9cd1a6c3135184814982aa95d0b44249db6f5e85bc04c691db981c08d1b425739b1311e30c833edf2a13624bdb65a3783963d61c313268846c4ae78df111fcc1057c397e8113c2495db93b1e9ee829d9c65176dab7693e506e66bd686552eac3952ba64f408dab4a6742d2a0a84b630a4b7d060d0b93167e42254814b23f260ca57b53daef8c177866039461dbcdcb9c08409920b438ab89a7bb5631d69bd3f6ac1e7b480004aa50dd64c4a2fce840dc6a81c22ca8d915cdf7a6dc4e54996a7db0d8a6e5c9550f050d280923b687015e664187daea575004eaed50fea9be808965fdac6c5fe72a70a91a6ad712aee90f4db468fa8acbce9a528c02101680841b5fcac0744d793564a178cfa192904962f9646f38e58b39902fb8322647084f306ce8c8f5e8fb1a25bac50f9216c6a1df600b39a89732b0023c2194934a548cba9e36b8cbee90c5a935ac9c26c725523f5eb5cb36c5a8ad7231a4814e7ae90cd85eee32b7e7f9ff2d671f55760ab10271b0a13cb787e27044b23e0ccaa65aa28e0c50663283ae2f03f0483bbccfa68131175fa73d3e6fa10a3030a637d59882870e1beaf6edbe3f0316a6307363ae7d90e2877eb71ac9b232f63a1f81f4d243ba6e1bf752476af4b97bd6ff0beb5da4aa183a4851d7b8e0171f0a1aa49b7b12e490707d9a1f20293bd5e1d6a6dae33f45dcb5ddfaf18e400d4dba36b7c42a01329b9eb374a8a555d786f425c47d92d1191a8d618a3d627fe505a6801a74c6e6c6a01c0a6944e2e1cc657ea9cd1decad4a8a5c39a98209eb1482576774f694b95d70e010f9fa3caf62f423aa0cfd91c9980b4122887f3d2fd22f9c59859de8a8db9b117d406bf14e3829f6590bedd60bdb5a7333ed7617811bb187f429d27e68cf4e1a81f7c2eea764da0b2bf6a6ce93cdfb8f005d30f957601c7c3a168718f0e883776374750b22bc3bd8ea62a01d948d802d75675b7026986cf8daeba20143c1d73ce7ec1d8440e4331b3dfbe86ac6e4d052f8fd1a73c0ed0fe9a757a4b0fe201f58d05964e2015c57c59d492de95156326854204417e6879a36903303bac58c944afc6778ef096dedf7f0a1e5ca65c9b2cc200db79311f18144502ccf0f809d08b6bf8dd48659be3e33d47724ac9a318c4d3b7275aad76d02b625ddb9c08800917eb0f417e5800e8d228f796648e49f9ffe4710281441150c50b7b1c25e624d4da855a450845ad083cc88e2e5ac467d0cf267212a0a353a142dfdfcba7561e09eb934e3a130d4f72741ad50651e3982e8d28f255fd7f86ea08194d26f06bef2104cef5579e10561011294aa1634710c576c001c6f0950fb500f1ab8e03e7c918033e132efb9330ac6dad1b751a3b8fec29844ba268f75bca1707587e966ab99b69bfe6ca5476fb8929c559a8f9d100412bd1bf2667aa550dbfdf9ae6937d1246de0fb0392438233da7b65d42f392c691636568eb81977ef86b706af29a5dcfd6ab6f531bba51af848fc59465f2f2ff9d9e87e63461c80a9216bcbc277ea1c4c53ed2c145bad9317c4b1721f3519f56f30cc05d0a45f693b8bd7f02c0c4abd72caa9e06899b7b95538aa70217639819cdc120cdfb7d6840a4e0ee9aaf27eda0b524001df329be430dc14cba9fea1bb100351e1922ef2277590580523c16f7231f87c6ee2d049a5d77a5cc98b0a05fb5dbc4f7470896647b9335c93e33345e87fad1d61edd206000b2b2002c52b11b32572fb0b2dbff75895e7e6c89c6d86cf670a42b813344f0d019a70a7ca03fe5e02a1a962c77cac74e326f14fcdb8ba51640c66562528b3f475b08990adbdd58641a8c5c639b2f61d7de9e805f1d8c15bb9da1ec0067e52e74c89b3bc6661515ce4d71c3f9ec769e4a0726a2ff6b4f77bf5ec39ed9e497b13bc8ebc763e6e284f9a51bd01e1f7e3f113721c8e670f92435905f12aaadb7433d5bc8cdcfe9367a85c4bd95a30737c63ed733dca1e3e6da4badcb654a72b1b0e43fc51baa59769876eeef8dd1372825586bffae9fc9244aa0bf00a0c019c5295d34b953fdaff98ecc072d81831be9bdd185af547d60f57ada021da12f8686ac60323f8fa4438c2394a558ff428eaaafded57091d19d51ffc517e5a283a15cb91d4636141168f00c409b33686c4cab756b89f355492f62f54d6e3c49fe35035aadce411962e75b9d5277e7839ba4c2d55dffee4b27ae05da0651ad4204b90a78d38b479a0069f33ca21a7fabe253d81e746f99727849502b30e8e778ced8558303daf43c31ab56b4c2f46d818e856cb75dbe32cb8f8206db579d3bd1e04f9c68e3e237454e1215475d77033a78850efce62d79159bb725910984207d683be9d7c655c2999bf4349e8101fb7328d2e56d52fa349c622059be33cfb0dae3f31edbdc708dd8e635ac8239dbf0a04ce22a31393fac118691867e2ce628e5b5316dbc09c1547b653aea67e9d8e3fd401fabdb8caf2f7cc8d2424b805f6c358719de3ca703140c83f44dc647e5b61bb14c499394c58c323d95577ef402809296a6cc1aa502926991d5ab45f5ffb4f790d37a7cff109ae8671e46a467f710125bcb68e8c318d41b8db5cdb7ff3507a4f02cc7786632b1cba18dbf9e796ce9c8198b3532e448a5b8675aeee2d9b841806cf74f35d7e42eaf55392b9725637d0b51418af5a37815588a23401c927fd4013c184389422ff448e50122c1b7b3643e1b461367c46bf718828267b251cd9a0c21a76824e878e67d49a0f5ecc812d636eb205109129362b50856fb276f8f4ddbb94a988d19c56ebebfe625ea29a2312b44851513c99e3127dbf00b3e9dc41078f7184171eecbf97216a2e9b9e88d79334f670926b009835c109295ce0006e4c4ba05e43fc4fe79786a4aad91d950d35970902755637f3bfce1580f7737da3414da67971ca3c8e2ac67fa8ead4d7f093b3d3e3f7b8915813a194ae11299b14a511123841be283ad8b5e34def2e1610937778076e1edcc3fbd91d1e8053e4ad7b89e9368d0a4af57dac0d4a6628f3d6631eb3cc235b8b4a4908446f55694c16f218e6e152d0ce9e364d7311f5c67e1d5e158fa6fd13c57a52b8d5d4c9a8dc80ad4f467f0af340d54cac2d038afa5f5b2b4c3d59d4f1fcd77849a1f26acaf4685f49f9673e25bb234591948147f0293793bcf4fbf73c1f016353ef12f3b92371f7af73aac27c7d711fcb3e089f46ddc4c2d09f21d6038b1c2af0b72082393b5fcb717c5bcda4545fa357c45a1c09fb074f74226531c42717d83f97fc696cbf3a67563b45abd6894062f4d1b1c6f240cd8dd5cfcd06bf5b38eb0f676711b9060869710314eb6c846cdd039aaed88d25f87ab240558f42516000d26d9865205496f57710ef6dff69dedf2c9d9b986d1f235f329db83b4b6b824b971e87694931d140dfc3ac4e6ef22869700a25b939c62b5dfa96c3bca54cd0aa4685e255b43e68d865381bdb72cecbe373dbb631eab768494f49b428954ec0c20985b6b7c4c8dd7f0d1e3fb7eaaba3f204ac7923ea9c83e1eee55aae1aa374487d3db96346265505058ca2df683f7b4dd29665fe4693526f38cd05a163d1411f01b79e70086b83f8964b01203f6744fb975a975dcfca5a303783d90c3007096f1190b104a6b3b4af8afff02a6e99646455f2133a29283bd5a26df5a35a6203b785bbdbcdeb5f8fd9ad84965385d3051f9a64e2a021814a44e22191b0ec7e32aaac78a073e9da64ac8d62139fb46f42edf199da38cb3102a4152c60d3dd3eed3dbfaa802b2be600479416c90f5cad11e4f682a17d88e0244f068dab94436ca68947c52313a286f6220a31b0f23def465bc6785b49395558c56df1580d16e6862a2018b0c46e61a831461f471f2b06dcd911142df69149cc21b1a5e16a01207fa3f2ced813f9e8fe486f72102147bb2241ed1b6acb2613146959c1d01b4f86cb1477c4d70e5ff70eb0c8c1d25988248b990f27768f6f944a0566bea1ede0386c87861022e76171a60b818a4cf5d78e2e305452e1040ba5af95100931d934732c9cba1ed03aaca73eebfb14009d1832b7aa34136d73f22789f88729c0012815bfcd685f7ac7d0aefa7b7a73d71f997475cc5490da43dc889854bb32ea0da1e09f3427d88d9cc83767d5988a5b9d8ebcaea39cef291db6807c00b036628745038ff4e2db2b0bcd81acadd3f5b2719b08b888e714b6da83c800bbbff029883d8b2b8651b2548f6acd3c9e3dc36140c5c3a206c77443b827d8444bcee7c43329bfc78c165c42fb10eef1aeab8826df82b1e9f0313eeb1c84554ed63248c51e422b5e0203ca5e58d06b04257072b35b9aaac778a6683ba5f33d7ac08ab5c3e3f9577538b0a8c5f40582c29120d7001ac60f41cc745dff58178a3cba38bbb5980d25876258885850abeb09aaa82f17aef01fc87ad0d2d33634446b8015abb4623b9a0b7151c0eb30629d2c611e377dff1b548b60b23bdfca2ad928682e67e7dd8c740c2784a563c42d0d9c1e2a8f6804f52b72a46ea840b8f88776b6a3713c8cb97d70d661b97e2a71869043bbce04401a3b567244a3ace35d3bf40c22b84c93ae9c54d04ae1560ba9f09e922930e24db19b277ad0b2be748a12c04c869a1715b3cf7ffad6969e11ef3dc3286c623ae5a7f496814a9e8adcfb18a59ef7a3b8a923085e1257fd485f7bec683bc1d9883c57e53c9b45da1aca918c1057237fb2ffa234a75dbab02e30d7d3be3a15246d9972770311f898720e1a5597370e3574f38cdcc853f714e82cdee543f3f10a9f942be21b835b7f87ecdf4ae30a29f9a2da5c9ab992832c15e0eecece702eebcc23b76cf7c58df2dec054dbf6e960f50e2c159d58347e85e6aaf50460f8969d42459ef461ea2ac1ec423bf9e84845703dafec564d4ab63f20801133b50f42089a68290734234e1e9155527a66bacd39f53d225f46458467b92ffccfd24d6cf5be1ae190c1394268522bfffc743472b61e11e838ecee72d93d55d423c6da7d082033207e8bc16ddaee1b02ce7cc07a1cbede99333f140bd9b915fadd7eed024dd4d5ca087f05dbc1c7ca52ca7ed2ac3c03162840b705b784bfa83dc76d04345fe9568cb1a62e456aad41656f03118dd663d368bfe3314a43b3a006bed1fa23dcdc5ba00fc4e9ad2daf91f0d4e4592cc43f63a4261e4119c6dec099ed24bf7d33f5a6ef725ef916859b3ef1a607c771c9e1162fdcb73b9505aa3f1b0a9a800bf50e634e5a306bc7d44fd0a91d34b1287f19c009a009332df02610d9aacee052d6e8e846b5d5ab466f7845fe2bacdf94106766580f73a7c75a5207392a1b9411d448c168ce8329e28b72c261ca83f82b504d2bfd1c92591f42d4d83ea220ada4df4aeb53e3ddd10c91e8b95689f85bd81b1b855fc33519c02364743f567c468c083d55c823f2a14ff676c6445d3a40bf3d7840a30d9833d7f6ce58714ed3014178477a50316f02c57b54e1c181f463b48cb65356d45c1dd8b88edef2f5079374cc51e86b22c88791c53e33b0a60393a6cd1dfc727e9d7139a809eae2056319b862ae760e1934ede987c9129571ff055053c4ac4b8eed418329a2726dc54cb3d0c930462c72523427e93f4f5757c000cfcee500418d78a4c630b2d52672d1eac95263a2e807deeda8adf5aeec8e8a46adb15734f984011ca10534902dd97e8e9833a64e1e253168abadc45ffbc113a01add385c19f17440c8c2188e410c349eaba73ee5cca47094997d6ede68249c46032cb2d8196b642a22fa7e95f9930449822bf5ae6a870b9a57a0fbc37ccd9682c9e7769c68527eff3eb62e33e4a45416f1039bf15815b1a4fd2fad02a36eff1b92e70073121cf7016f816dc296a3d8ea31b2245149e3ba6b1b9217c424c374b424cdb2a6f3446b3b0185eb2f12c13d9da1d8eaa2aa529d9a37a21c7bc4cde0aa20c88cb33af0be5ef2e7836aa3c6db8746290c09fda44b422c7d3ebd51855e4a93e5f367dc906f98b0149ad945bda21634646ece6b36b3e1ebe18d7dafa2a32ff5e1f892bfa8528dc71304eda6876f292ca47a91e110afe550debae0b2c52748c18a138e7b9846bfb8e57c61652946ae4dab303dfb72c8345c25e464e4459ca8132348c574c8703fd384ab6b2bb2faeb34b441d58e9a2dc209cebaab0fd7e7be50dff1fa90949f2304639340e6ab845f1cf93abc02d7820e1f0eb99bbf50872b414ad6164e2ce7f785c0d467bb5409cca69067814af79e8607789049556f1bc92bc221694172db6aaf0866a08933784e21793e222bdcbd088886993f291d20b0cff5fd63b6174e6081e04111bfc9daf19c10359ed54cdf98ba94a21dc97f3366469348c1efdc721c347291fdabe1636e7a01ee455c5a88a34716d3c3e337ab7f725eaf8d45f93bf8cb6956d6801471641b6929b1dcbf92a401a13a64c76142b2ca1972d348233db40a40148ef01bdae14f76e2e33bee288cc5494d7b460ddd6f0ab591304052dd496679fef78ddf9424f4a625c51aac3d4d3289378a029dc1ccf3d52e605a535cee6b15d189b674a7b768a007ded6c8743b9fb92e987d740098b38eab54ab9ec2ffe10b56bf15cd2e5d012cff97532248ee50ad2bcd40f6cca53cf7ee4d9b51b220427ff06687a8c701e99e9cfe0ec7d7373ed97375448e332847355aaa7ecbc176e4af2f7554309f0e055a60f8a9d5233ecee4cd679c48d36f3686b94db06d4410480c0c56780659d34bdbe60628c3913145596c87108fa71d463780067f05816f60085e859c14894384a287b6dc607dbc6e2636d03acf6a128d245a3eb2f13d3febe1f4c836bbb53071ff7ad907d1d5ae42953de43b77c28beb24e04f2e448f699985ad32f1f4b413f7b5a59b12339df4c7e0d6518f3c48cc11b76fe6fe691c2472f38cfca7d43241b4b0174235b6ec1ed9b4d0089d764f7ddd284429fbbf4bee191988cd99ab8a81a51fb086816c8d9dd510ae2e2017bb7ed9808d32369b036ff2cf4c4c5a1bfdf3aac79b13b81ee038ac4dbf3aa5c46bf3a0b2288824cbbb969b3c929787a79bcbebca723f58ce2a1f118114b6063fe254f3cc88de77f0c99a1f07fdec276829787a933a2333a8217f39a14bb0e2c66a255660be23c803a6e72b7e8fe9b52f1acfd070488ddf91150a8b0ac44b1205f150a59eada900fd793975e461428114f9b886806c26ebf7838d32c609d6492b3003a85609ecc8d35a8707db1a19480d8ea97c9f854979e353f5ad2c4b169906c09d5c76ca8ba41f60ec6da009ac26ee97e3b338ed1290e57dcd41ac71ff8ac497b8d56f3485d4cc66e9dbfe1e7c0d8a8264cfd54e3592ae50828920ab9e0995cc208708722954041331e20a3e6169fec10248253c94a9041bf32595a0500c75df29fb15bae1799c60b864c52e5de88d252e73f66d4edacf8838aa1c1bf806c0a41b034d2b7b58662692d1c2cabb09fbb625caa08e9309961d847344c55eeaabf897bd567ddf1d09e069cc411f05b2e2e9e542f58027ddd32c9e2559f6917ab91c798450013e7c22d5cadcea4e072eca1c6a42fcfad84b6e3621f999353c0e7509ff4cbea217f5ee62ac5dbe99ca420617dadee6b8b62b54a330a73b89d250b4bd561d45123f94f76f3132dd6b8e7c378cb73bab5d207d56bd404a232854e0a18d5b9b02908c05b837eeb1ef8be74ef289d49ce58ccfa5ed15be2b9b67e2f686f2c8d2d1d149140b357230a7faa901f664406b2df5665391ce7136779af9ccad40c64dc685ef247364d8d3d436d2715c3f2ce1767627378b119e53acf720c4be6cc8e351053f9fefdf27901136b36608a406f7a0775014d8c96c812ded6292d3a6686f3593161d1be1e4dd775fc06dde5ab41fe15299baa4486b46c321e37e504f8dc490b8df180386d22674bee38aeb112a8564cacc93e4c188f3a434040983343bed96bcd34b306bc81cd27019d7dff3a14b25d40b2933cfcaa06ef671d80422f0086b6af7e0f68b0233b136adf0d5e4aa0ee7cb90478d2e7537bc57245ddd945c3883dc142a7ff2fc6185f510267b04f3799de023a06dc136b9f807270602733a36c32e6baa291e410219753a827bfb94d794f9822e5efbc135a69300a36fd4c77cbb4d7dd6b21bf892231002fc5b5dc29ab8e0dc59b3da46f0f83a4741dfb05a3f4849fa5d1a473995b825e99c46c71bc8a38868c12288f6b68427f1a36697af6dc791ea6ddb4f79fa2ad644a36b91209f1b53ec79ba4c89b9743a2516cf7e61efaa388f355420619ccb1808ffef8c11e86d101751d8a9b28adeca50db0472ea7ebd8e35825599ed0007c12fbb4ba61a0294bb2653615d9cacb2851625f045788133e8cde236b8527f6e5ee8e24af3cddb3ffc5a778e757d8507126d68e470c4a804ab3a0f96fbf673ad4deb6b6097b799101c54613b16e60412ad684194319b3caa2daf515651929073d1e135314b1a6fb4ccf5985857d588eefc811a36cf209c9235ae5f45da2c54bbcde127e0251ecce981562349562d801d1966af5eb2de5396bdded2c622cdee17dc45ec0fe338042235df9ffa60567e7a28f5964ad038cc82fe51bffcbd0ee1db36713a104132f024080d02c36ce56c17936e82045d4e60cc4447063b767f32d7dd5cbbc5812d56cdbebfd408a2a329d1fc191a6c3a0ff6832a296cb56111cf8310e7cc3573366f91c219cab770938d9d19b45acb68e12e679fbeb15b0b2916b25861b67e4df8604d136b851b963e86cdee23943d5682e73961ed56a59704a75ada71f85f362b4884856905afcaea006c8e98d0d411d6527292f65fe4a37ee0aeb4dc614956bfd82eb3c22d5c86a489070b7bcb6d93f8c69c72554f0bf35cbfdfe4830a45f904a06d1bb09116b960ded6987df17db838d1f324d45c46d5eda87b5dd4b6e53c8363f4e39afc4e2373102f546c0b1e1434747f8c55d2c0fe9d3c45f458f5321ef77ea932fc65aa6d8e35c6718bc667cfffc9a52022b205cd05389862d833f4145d7ff1faa1b01ba053207a8d4759ea5d75723584ad9790e540e4a5e351dc56aefb993ffcdb45233cf005e3483583dd913f7d8053bba937f7814056871eafbd17539319b4d3db7c34b1afaa5e5e919009c90b7f5421ba0c081285f77eb09e80142cc2e0ef3c5d14c134afe02ececd91480a1e40b256cb5cc7c22676a1ef7f64c287ebfd71ed398d3c3895c3a3e54613971aecbd27ab5c898b864b13b7d245b93d9b8c20a3ebbf15f7d3de40db7043def471452b92d5f10534760bdbbea65508e6f9c94ff5a55e97766802b54e567b3487a6884e8fe4689188229d72a3f2b93e6e5e760f18bf7e3ee2681a5ec8ace6433a8695ff0002798c4821ce720c98a941b9b71bade7fc55eb26cee77f81ea3a5701580961d1c4c0144a891e1acc71b35a8d62f797bf74e1c176873e1ea4b6cfc6a26ce79e48c9cb00115a2c859efa010e13dd12000497ed6ea4f4443cc6f9f6ddbe5d05d6f60ee0b9932fc71d3ea82a4bf5de55129ded6cf37dbba1f9b1d437f1c80902609fcadc9f62ac88239d41adb2c269507c8b503de38c802a00e9c611e1cca60d8ce98d485766b9c53cbbdccc5646deba3d9dfb5c77558d6721e664bd018b93150cdbf2e8f582982ae7b2af28fbc68ad0c3d01d30f61d04a169caba9d9b9e66f8572d1f2a620db0999279494f46a35c35ac0d5f38719f9acded9cc60459d1075f70381a7ac0bbc6f9c9fe7f7c0f25330de70a9324423a06d4cd4e042f5299988289e575a70cf4bd03d6f05f52d76269c78cdde49ca04161e83923292264f0770481b2e262545cb6c985241241a89776a90b96a0296b6b07cf37ac05314de858f7021b7092e74c4ff4b96e5d76e0ff2631ed557f24cbc48918a29be71a1555f9a1383f50d3fb080213132ace63954a7ee972c418b3b90bad9f7ec11ae344b89d3820ebfbc0c238fbc854b484646cd8ad6b709dc78f5c26886dc70d564301719deaae342e70327439283efdd753deef3a5670c6c4f33d2b7c6f542d81eb00ec91d6a697cbcc34d35cf924384b89b051f8e4b994c8a4743902594d11cf4755f76a72206c22f54cabeaf8a1cc91f015daddfb21968dac4fee0f5f13959be3196a3c169d13baf523c7f34b2ea2e66a9bd2113ef7ec2c42f4418cf3abd781b8cf2f7f4f68e622a8f86dae6722ca6991409646153f9f090d5cdad1956fb19409fefbaac34658768d37076adef251a962acd42ec5ed99c8722e699abc6220e9ac7d25c6714ec4fafce51bfb0f16fe84f639aeb76d31f03811141d874311dde42f6a5ef76086330b95fe3634fdd0c5eeebd6972aeba5777c38e65ec3b5d604342efbda8514517f6fbb6b0d622a11643b6908f51029cf3dd31e8535a6abd73aca01dd06272ac45413f0b43cf13d1c44fc47b8fe30c658d30caa4df2be9d96abc49e7a61ac9020e0483da4ec97e5f7eaf9708a5e98bc616fc735de46c0d268dc9beaab674bb545f0836f1a88368a6e6826cc0fb06e9073ee31e7116ae9418245e99d03035b5a91f67bcb1b780c2b2595e66c360435293091c31aeb186b196f0b9dd9ab5c74869331146566a88bf0318cb8a2aaf8b62bcf2ef454bb10e2804194d1d9c70b8df13734af5267d25383076c68bbe57305a83963a3cc98d627a8a794169003f3bfb30102a55def6271f24c14062cd2b64e75669ef9498b624256920f014127aa50495641c20b6582106e82b9db82802c17e16b993219c1ef9eb60686748a423f1ad60a95f56d6efe9b12408362597e4c243d7aec102e33b0a368c93eb624d7d3de25b9d88a420141cbfd4bed734423348812df0a5f633cc847a3601702d9b864b468eb4fe1992e59756d67a4145eb9215b2fcf582f7438918bd841922ddaa79014937057d2fb546fff14e3ba92ff1895419102d2d2ab2b87c1a01d2e0e5ce20e9c387c8941dde673a30131037c370670febfd7a8f1c232de7645b3ebc9c2ccbb12bbfef27832b34f4b98496890f0a6fb80417d0265415df99d0f0f87caa7bb9ac508e00ed5b85561b3698692d7f144ba1356505842c49bd51b0ec4e1c4e511750afe125f246145a644ef51b2ac24b768317fa63cf05d6b5d54114044a6fa1f8b6507524171deb9ec4c3627f78883fa5fb7610d940c346426e8a8f32e9805f5e1e3bd4ac8dd7dc78f792f070830c1037084cc208a49957f2694341438f3369f86872a5565ec6b8d3fc28921dac6d415c8f425527de2d2f8a97d67f3b06f824369b88686be416672596a71ab7c8daaff1d7d25fbf63032d4acd6a41a5ce517e3a62be038950aa9f4bcd39cddd9f8cee040dea4851bc3aa7df65000d279af9297389b3c50e243c35306b78f3966e909b96c222e40607a0314fbc9d4279cfcf5be685a7bc39b9d82eb480de2b8566627276688d2c8c770948e2b28b8cc6089f58c5ea4985cfbaa3296fdf4d623b2a582704d808607cd00576c32da28bad94ae8d75f21af338a7eebc459ea3a4ef55db5537ce2afdb8ecda557d96a4100af624180dfd5b34f8549fdab69a5c4587f2730b906bb8656e38d400025aae7464643ae6320b90537867e66505f049fef102a3b978b3ae278037e1ca396aafe265493bdc6d448c384edd457a108555050efa8c98310ddb2e95fe836359bbf8a3f8c45aa73170188b2585e71cc2805645db4274c494c6036102b60fb668c7d8c1cb275528637f1f19be83435279cbf52c98b703a0e18ea066601e3723750b488ec978e29fa10370a290cf16d2b995a2c57e29694545f922a2af07ebede287a5e5b0f3f8065db10c2cecb4a9d3b8d296043dde3f1005ffce978bd688f53241833b6986df3ca5e40c3d9f5166ac13b9eb87ef0d4b8a077c2348150559175bc282c4d95310f5a81a0da78a1bbf3a1a45be315a640045f7b1d23eeaa15dd18097414f0432eb8e0e752fbccd5965579cb563535683e26962c14a58b4cd70007fd1559ee42c3841ac3aac1496a7cfc6160dae5af27fab0b0935ce7f9c3fb3d320855a551d017a43a855f245ff741065719340338b60478203781ce830be4a4f654d0ccbcba310dfb4d4572dd983fc853d52f4cd3ba29e5b895caa801daa70f86fc67552f4b92b92ef685ab09d6ea1c3889a4c805bb830abe8946aa96b74d08404102ccdd81d8daee5e76f14591e0cb5e57efb2d68847ec2ac382667dc2136a78c519b98335e1b1e64cc6650ca545f474154766ea5e1449c0a44659a56cb8c53b0326328c13f443703b556f98a243ab378399a20ee1a87846818e7fa50202d147a60c3dfba362fcbd2e420ada0756e48698b601eb26f69c73df9aad995e17b4ada0c18fce5eebfd725c0801c7482078a606da302de97db70968f88ebbc64d8741d6c66a2a1c568874051ac16cc5ba0546846f232773913673e65589e3d13dbd39238f961ef4fcd6896c7843815650a09e842769f0a72d669f66dacba0aebe308322d0dbec9d134085af35621f1d643f578cfe6eaa85296c01c7918543efef887878e8d903cc6cc545acb2b4fc23abe7599228eec0e5e59a1e2c30a4a7bf1f4f6909ee0579b5ebb7b8deba804acf1f4881fb05dbec510769a7e6634db4f7f05d47b27c4c1e1fa0123340f81da47ae53cfe8b512c979521d89cbe2810d13f479fd69f63905c3b12f2e339a74de24f96c314bb06a808407b5e66a9ca3ec6cb2e1f4785c84dd2ccfe3761d13e261feae80a636e567c1a8830277d05b26e1f7af7af749af32380b5020236aa2e6d97a7c52d5cddaa5044e0d25a194cc1ba22ff5ef4532c73de8e9696c837f970e732d68508978dabdd61a6460fd09005383302268350c8134f0a900c7a28de4953a874709361875bb48ab37b7e159e92022a0e5e3e35a3f7835e02f69f2ae9e38ff5e47f30214fea04a44ac55f75ae0b8b27687eca9136789ae9bc558bb6880934bb9668219670cfc21d1dacb22ec221570465f92a3e9e0635e41c4ca3f7067141c84f98e2fb9f9896e2c4e1849dd4e6ff00c5dbbea6898ebaee4e455b68cd77a320c270c88ce66ec6eb28a82bb56e948609080c15c880069fc020ff5888974e8280c6c0ee449b56d775e8145543fda03e6c86061059a8e1564d1e3d9816f8a81a65717221ed08ed5cc411d0a8e58ee0ab0dca5f888ab3ab8275c330fd0a6879d574fcbf1691a5a4d55f6ba3120a7558a6fc38d1428790152388f86eb0d377b878b7c023d7269cb54d1cba8f0e94523b841bc6a50360f66dab9df9753b3159fce99ed851ecf1852c68ed2ac3836f0d0ac495f22841e17ec0b92b6d3cc9d56cb26712ef5a28ec7a8ebc7927f73a267b8cb7c3aae424e969d4054ecde5f981dfdd8f10246afc9a746a220344e0d32599cbb63979ba8a296865e1c9f0e4b0d63d9c3f55a3e377f0cec8ff31438cf588c20efd13d8c7a30c938d42a6bee844bf924ec2752fbc32f3a1e676155d30906f64bbdd5c5b59381b549a55397bd0e0ac3489d0d706a4af3d3a23b54a6a88ffac0090a635162a4a170d1869216ed1613b7d419e3c6d15103fc03e7e8c0b27ff37bac7e7a546e409428ed0b5658a4eb4020f9db2d02466af363117df046e3df73656752cf68cc3d0e0a40e253c13ebd36840e6626f035f311165fd07b71a007373cd2a22d0802638c276d1ef84ec9307fbe0ca35b93dd31abb6c406a3de40da9512695c236fa96521129e98c15787c2fa2812d73154d4b72859db3dfb0390d168620db3add7ee3895c500591d9370f8c71de21f1f7c7f1947ca823f6c4752d83006812aedb114acaf6245149393ad640fba6285c7be9bf4db5d5e465884b9f490cbee2e227ff058c8f320b854a61e785d8c1d9a5a37b746e6e356d247cfeec2620a5f3d74796ce2f520cc07839bd52474c4c0abd4eab713e365148d8b9e8fbfef0a469c45410483764a8648b9529950be8d9d830592535ca0b2883e861a2b62190df5a3155f4ceb2bf90efeb1076417cf782bb77e289564088c64d1903cc7077a7126973387687044f62bb71643e5dd963b8388cb7f5f4a9f7fa067aa8f5cadc8dc740bc432928a6ba424eacc03ff33389be55694e0e3ebac0ff77e66da567a092de0e1da4f97a31b6647e1512d4887a605319f8f95291e4dd86925cbb5161b55bf4ccfab805a35ebf565b7f7878ba5783c6f8c62168c33e0c8b83d111971eb40d4037513a05038ef96546415a8470f99754718d36a3dd2955febd3782e30f131d82f09fb0703e28cec6cd97be12d1abe8189bbed48bf1a0c12cd81a3598ea624f4628f586490b3541a0b2ec204a5e3d3dba7ae0063691e3db36ee32634bd94b3920ea1cdb328d8c08511dc3a044a13c2ff36ba8e54e7a534b4a11b496961be66740dc6267592d3f034640ca4c6696d370a71979b9fba4748927d6819c613da9585195d3de7a780bc4e6df3e45d8735656eb6e0f335b3cecba2ddc75687df5c67e75514feaed55fb8b19a3d6a90d860d4810692521c7cf07bb1e0abd6eac654b684c2f1952d9d3505f1da8bf323c898beb9891986cf0f54199469bf5d4e3d13e91acbeb074f16f904472400e4a0760d95b808f8f6353ce8edea9fba1cb2aca702d6ba11ad9f67124f37f0d9675534189fb572f13112288a36c36e474349f129797e4044610550e97daabc22013809aeda5b57cd571dc9fbaab505f65adfdad49abef17d5e8fa2c3af47886a4de92fa288f870a7942a6b2a9e6857415c3daef08b34c5ab086ec2f3d4b05a94167d95b80eb515d000f72dc570129aa3af65a58d27dd99152c4a2a572510bcb200e35d8819a3c53c8d93852350b6caba8c726b0e4de3ac5670e1e824571639f466bf5f2e2895a288dda8b87b7b5a277d691ea182640622e601041e0c7122e39f3945a5cfeb18f284312f63698964b27d6b825cd1239a852fb4cd80a251cdd021ef29edeb246c9f59c096f5c3679db4400d63a4b3de983e3b1e3bd922467c9827da1c2a80e8efb83527c732c50f1c38a06977f67eeb6020e77309867b4aefd9cc764303f97671ee8fcdceb17f287b8c40df73c3bfe67cdeae1d26f9acccf8b3d7801c53f50e9b18f760955fa5114bc414fe44efa3df45900451d137780dae4d05e5d3a7d86502af72ca66fb9d10a737f3f0d35335b74533392bfd5b5d78684e66df81c32db09553733fb697ed9931003ad5e13b643cff25f5106111ea8ce164cbd8071ed9639b4453500b1debf0807e83b203e8e1ce28ad40542f1b58338cc141d53d611b1e14e96616a5c8c69732d46a048d0fcb9275711c6359d07b960f989f85ebeb6357114d9de301a7e049716a60084358227fc0fda900d59802dd70a5204e9850f3ce7e9db015241d6f7ab66a8e4107e01ad1cb43e44a6371015c0aa312d495d54dd8efabe6ee1e647591f544cde443b732aece16e88ef06dd31ce8d391e4c8f67df43c6e619630050a612c2aa81ec9631dffb9aecc2dc23248d0827b55c69ce126612180ffa17061ed8c89957165f65b7ecd74270c144e7822891b658c483df86687939ecccbe42b70def6be67497f8d73ae4f017c85c58fe6d72b5cc920ac538a74462c02b59feca9beda25e974d7d9ef0396a1d53f13d6f82177b2ff69863c8dc69dae97d8677eff50510eb9ce5594e51e73cfce354b450c4e4bbd8f5657b16eb66050630f4792f9e7f2ff53f06a06418c5836c26450e4e01f6855636725e5522aa460ca474d2a6bce7a445462dbecb216b2e8e786c35252ddd5581aba7fbf75f9b6ce0153c31fe89e466be650caf64a47fbd71da4233fb616ad274740b159edcb56b2dee9049c8ba3b3c84daa854ae26e395d40c367f28aac7226bbf1e7823c4017c6364b3ba10ef8d4f278d97000568274b5123e3fc3756c343fe34b0e3db540b0e8d0153c812e68da44a68e1fa39153087fb77994a291df036034b0cd40abb2db9ae53fe2646344c55d1848aeb669f18e40b905e48f0d24c6f8a773b07676e985822f4e51c6e6a6b5a1da8caa2d4638b4e0a263781f1bec907e48b1a27d458757ea8b2cb5f609e32fb5950b69f09cdd792a28f9a0fe2cfcf5eacd312129c0b50a412b4a3b98dc183706740f7c5c3c80524fdeee886785c2af3a4afa3dff79e0909851db33232327ff4316fd18c16587016384fd68ae14e21aefe55342bb345bc925a76284649d7545df97c99fe5b7da5cdfdb6b6db6a7cac98dac5e1ecaf29d6cc318e4d6fa9c511590a39d237fe9bce41d11bfcf7b66b8481f698106d1d900db7148633bd7ebd6d9d39716c8bd5353a5dfb3df518aa2b4d9b092489724e521b1cf8d8f43c5029f2465bbd702be4ca4fcc93fb57e84f57189d24886984f685e5fa486bffadf8fb07dcb815d55195216afe2347ad29faf1d7f1b60c50091610a855a379e7e134d69e6cbdf44df5503ba2b17c04a33249680d2a47e612a5c9c4f7b80bb2b67a7265c76f1af783d6fece800b8f3aff0f2f108858948d643d7a3de4e4786f39eb1b15d9e0b27f78657200349f98f29d7faed97736b9c17e55c85db6206339ac69ef2382bad5821dc72a35546735bf8c2c1452c38f1df045cfa62b01ab7e524c1ac73c616aecbc6e919a6737ca00bab83e143c4fb425c49b2f3d5af33773b9c906fab5f93a91e5ff5198f8c5462bd2fd08810112a8caa3ba73f21b1ea09cbec3c50b3e8827ebc238432d688c17cfd6b81f74fd5d181308ed8083410a554352719094eeab7cea0fb7298aef76718619d470411093ed5ace21c2c7cbb97e1c5815d2a3e76f4822c6b61758117853fae0495980b1dfdc1d392a3bf8839d25ea3bdb698eccf97440afaa56538832f64949d86322ff71c83fb3fc5867cd0261d90d11d085f13510423c19ef8574e93daf4e429638182dbdcd8fb907c5039a4953afc04887e54fa74a2121533ea997a59bbef9c504cec6c904b1c0a51e688b8e01da0a9f7adf0f48d0b6e970f39ecca7d46542c339de8c1e93a0cbbe6ea38a03cf28a2488b00cfd085d3221f958d59e4760a8c0da1298693582abb9d2887a778bad8aa443e0786fe645c0235183aa4a9ac695a327fce8c344ed0f7ae0ea3c1fd213721984b4756ae969fe08eb4062eabf43c7e28ec68dbaea44b9d48f8e912abdd7ee777a98120718b671939064db0de156305d9abce21f836b8a75906658341a4bd3a8a91121263fc55b147ed518b8926c71d568145da46a8919814ccd5d50599fb5286936f6f06c54914ce4293c2d45a75a3a2a4e5d0c8049299e5c4754c613b606576474743b74c7faf0671149fad137cfb4a5e27ef1ac255db90f1654e8808102761ca7176a6cbdf037a08ffb38f4458bf0b341bfe355c37ac9e799caa1fff41b67637efd5b30b5e6889c063b51ce688e83c2201630ea5fca921c85034f9285c641e034241edfc115645a11f46062af2c4e541959eb5a4d68e817deb5885f3abffc919659da5c4f19dc512e63021839082c7d9784219c7e9932f8d13ed2304d378444579489cff6af87e7391a603e5e75546818c4322924751111577484f45a82c11cb9b16e226312a6fbb84a6582680b57d2b8d3787d5875cb699f39e23c242a4b1283d1438545924c5cf31e607adb63b78d13954899dcc0d73b5b3fffbfdd89ae7247ca51eb5973d84fde2b9b1c4d4ac9ff6ff14484e43f3c74cb9904d61053865afa6f5e8b7b308c0dd7454a46cede94a04063c1c5f3cda738a4166a000c9edb3ed8a67b5fc99e33422d42a637e36c3880f1c0a3ebc91a295dbf7cee5fe367a1679c7c46a8daa0e6907d6f3a140cf973be0623ce065f0c23ee9e1f743a01a0746f07c21268035c860adcce3564ddc6c8128bff9a2bf0b3a7a9bf706a7946272dc6b5ded4e6a8215db9ce570994a859dd44ced45ef31b28b382bb78182cbb62363046d9582ea67e5d1b18d1bb75b4b1a4b273fd33fc0ed6d71e3c62ef05cf431845d0cd7a8ec022d99e510823b905c81dced0878e67c01bce59bd8007d829e813f0aa4ca21b2c922c2a5672a179b78a5e9e9b2a37583e3d01c01f7d0d220c3339f1825bb72a20d3c8947c7e1eb2e3db033be9b0557a0a07a4180b9230803f02e55bc11225d77b89382ca226afc31b550e527c77247886af0fd52002163397e02916421143817a323a300586cbf070d1a9a663d5bf8570c92fa4fe3171a300583f5e5a40ac4c7872cd56ef80fde20c005c8ce88945d56f5986e11010a3d92345b6422fa29e9ec6a61d4630c7ab255a819c6dcd892122b160e32135b4ae0394ceda265c247da2902d881e68bb03a9bc50e747dcc5f628936e43aa2c61e4f38fe15e41e9b0f1c8cf1599ec21090c42da7cf02dc5c40b28630b69f6de51dfa15256222092f7fa435029bd37bef398287370bec24c2a8469290ead346cfcd5a5f31db0215ca96689c58294772da83278ca4d16c2ca85f9b2852f32c70fb5c7bdd71bd2f97c20d6d7ee2145987a1bfdb09e1ed47af80137d29b6b20c5d2dac54db18c6f2f91ae70abcb2fe97c25405837b2da7e4b0fd0f4191005cd790ef871da101dc49e220bd448e0e438764d9c3ed3e386a62b376871dc133bbce1be80cd8e8511e0f77e9ca8358a43dccfab8a5f30d7ee602345f9aff481043a30a518a3b84d224c3cde947cbe641865445eb091602dbb87d2c9a1f43f0b62df4d3a8b244997ec9d47d91d2e72bdf2cd86817181564de630e86f4cd01e7319ba5371dfd357501bc441300c3aa318077fb99b6e6e6abcd138acaa49aff6dbebf40f4a31719d87a9d32be1d5b9e9c52d46f5d65462d8067e9b77b40067af2399ce85333b72f95ce029588ec4b89f846f63c80b8b8a4038a7c837dd51b0385042666c3eb97bee81f2c8f1349ecd6438d2c7b39b854528e4c714ed2884d5010cfd63ad1f1070204a57ef70333e939cad57e8a81bcb0375be44e72f3ed81b7f32aacce702e2e9da4b470c25a0d8afed6d601393cef353f6c3424ca7a41a9aab6c6160ee2c7b648b90fc5db4efe197c2a4e40aceef2d50d9f2e91e9153cf3e83dd03bb486e40e7445598b895ebd41ecb1335c2aacd102b349316174190d0c188dec70eaf6589c43c5bd02e93f850357b173682edb3c8c87d0fbba39b1c7b1e3fcccfb8919290df4cc8c5974ead4ae989bb46634fa6e528125d74a199b5c1fcb0e21d20933763f87497a737b9b848da70df4500fcea56e4b3f412abc9e1c120ea2977470a0dfbaf549902239c18e7d8ee6a678215655d2a035b1af8cc0fb4917d72073b80c3eb51b404e14e13a01a568992cba92fbf7e760a39797bd90451aafe61d80a35564ef4fc961ba20dceee9b052c0a43d265c3b0b504fc3a379b06ae868f6d539c2dd429bc447ec6cef3b786ef12248efb51c98855393ca6c6d095cf34b0176ed9112c55267aa2ea6dabf39a169d8c779aa375a31c200e0a7725f4cea6d3d0424aed22a88feba01f579e51e10c1f3d28150c4fa2a328af1bcf498a7584b0b35dfb5e2afcf2f5fc7fca9b9ee7a980045ec308cb2267d136fd691d2a41f600605a301d2ffd6c8f6bd75bff8ba288e1843172ed179347200c0b71fd557f28efddefdf27e992c1c7571570678db1894d916be2be2d2108ab61382963b3f3cd91d2e733cb0f10d6d8466ec7bb46b34d81dd4f48dd2f18d12ffabe67d2c2e5997817140a721b7235c77db2ed8344eebdbe31cfcc7e69b7afbdb76c1518371bc64807e678487fe78c928a0ac88df88e84b194670bfa6eed126db7e7b0d885d5906911a342ae84e52ef692fc0ee4342190631d9595e02d694ea8fbd7ca6e8b62b9c066526479325290b98a57cb149fb895415f9a70e9f5211c04e70389195c31067fd1678c08eaa9cd90b363dfc7d5708a2fa29393abc4ce16a80913257b9ca5bffc09e09c25a493238d08827ea5428b29ad583c6c285ec43e4703d96d67fb1433a61afb2cb8f709741d7736ae8cd275730a868a5b26fc5878a87bc04302a77332f8a4010548541ac69e0773cc190e732aac0648345b9e3b0bbf732c1b2ed735918c198aa74f1a3fc37c57dc077d4c715660ec1dc16645242353716c804ac7d5aa363583c45e7b843ae206aae4a0fadbc1c2601a3e9da2e1523a472e9042b93ed92f55e1c30c4cfb9cf9fbb7b8a030d77bb1bf95dba106100b207c2e7bebdb160054742c3ebb31787fbd9d57318f0f6356d1db7f3ed198b426de914607b32e83036ee3548428d6401f596872ce8ca1596a229f8afe7b218f5f65afde0f9ebc894d940e2517d20a14d8187d99622e361793a4795b29f1f033d7356f36ff96c8a74a95e15e2f2706edadea0fb0953375e2ee0b50e9bf58ade69167d4ee5a0cc58aeb739d13368b24fdc56ed4f8638da1d66085dc70345e11bef642a8bd35df301c25f4300d4b28d79ae897cc709bb4c6270f8bb3f5f2aae5cf5269c238b9a1b33972376630bf91aa4f06dc1a8c6150ca15e6c85e1ad530bf03548dfd35a42513844e6977979a368fc2b0f4b99bac2c9cc816114036ad444cb292bbda52c95adca8bb7bdcc417a4cdf69d2f3c5dc980fe9c8f602ef4bf883a66033315d58b7dd96bbef363b62398503b274ff477d685a01e8bf3fe7045a7ffea83cda83b6695af7edfc5e8d0e2e32e31cbfa29f5485d8509046a6cc5e9dc0e5552f80c8667433de6ad4237952a1e9f83adbf3b136547f13139fc0d234e5345d6953ca66dafe094463813f3ce0726bf4611a1d02dcb29571f2dbf5030874b9700d457b08bf3ecabef954590763575d975e3387bd7e765007c28f9a41b9e1848907ae422acffcc19ee5e69b1cfa94212b5306870ab7fff6838348651f20fea36f65992525c2ed97fb42fbc7c650975a64dab9733d029138a66a14c9f234a660aa223ef501af4bb742b2a66ba662f65265729885a9ed19c8c5e81c14ebd3415457bf2be4c6855200d1774c6cd8baa70562325b3ca60378e9eb32d7d89daa69a8c0fc1e4746d6bb05bcab6cfdb203c5c9f4d3d3b12ae6e35e4dcbedfc1f2edc0adbbf0da1fbce36382129c74b0065d863842b36cbe6c5ff3bf3b94c532324853277cc4bb394b801e2f1c5924357db6e975aceccdd12e4442ea55d34bf1c96ec84521e4d93aaf979e9dd722578a52a8efe3fef4bfbb322d0c14afe1a4c23105bd195adde8282592bb7808ae2a16a2c3121b33f9ae73027e510dabeafc27aa2c3ed368a0b564106df434c0bd0e1aa74f5175f2ccd2995b6f1faa465c6e52e9f2e34b5aff6e46223c4ebe7a8e81a146c66f0f94637fbfc58bd6df426b06f1c1dcbbc949337eca80a382937666dcdbdc570bc0bf5a0539fe31c1d4928ed90abf6303459159efd0e75c7ea82a1030338a657cee106d221b2b16fadb7a0028572473b2bac5f069b1eeb52faaed5831b2b4068973c7ff014699c1a297d34092c57eeed555065cb925520fa57dfb8f358bb285e7ed6f96cd9fa30e6abb51915d28f527ba797466e5cc60607b14070a3fd29ae19034705ccde043ac6229887bc832d568e5f6a1bbdac86eb29cf06fa319bc094ce3d08fa01893b79f296397486f3d6d6ce2f46168a33883a24ef1033687f43dac94aae753d62796be5c892288c0821fe5da5ab0642f9148e29043ef257cdd541d754f1f8c0d44af3661632f8d81c5bff701c15207ad16a7b7cb8f1dd56bc9936c0181810406a70a057a290cf06293b8bbce346d8b71f8567bcebed82fa5829c9ec5f13c9b384c6d802e0b330aa59529bd065a849271d1251c1ef0e220bfb123678f5c19d1cfaad9cd00ac687ccca12c7f98b24d9f498fa19b937ba21915f53fb4705f044db8349b6a741000a7667cb3f445173e9bd601598f4a18388f53bbb02292c41c5a41778fa464b54335de7ffc051fabfd525e95e89fdf82807c14338c84d5224e654d7f8921abcb808e5f997010ccd3c7f447f9970bff3c14dc8be19b60480022801263de5716d21664cd4dd964a800459464b563244340513144b24f7366e026e26a136412b0073b28c5b841c6ac4a9bacc7efebd062be5b00eb9197292ce83065b5d66df25370d492b3b781ee29374a972fe5e707b048cc522de62325f901c307460f9cea9565f21df9b2660b5327e516fed56b58e6f87234a47485bf42ab2269662fa7c3f8ede4881eb7a93b983ee7ccc069856549753037d18a658116d6f353e6fca7977454eb5619d06614d1c9aac249cb706213ea66f02a7997a96c88bd2e3c86c1564dbac24fa0d8951e377105e457ffee9a3352ee7939b314ab4a236388356b7b44399d1bfd8f2f195730bf2981cf3714ea5ca9c8efc2260dacb57b7194375b8d79d78b22305f0553ade9c535cf82253b4464e10bf2079c1508752f1aa70feb56607682d57aa333d687c1ed45648a8aa82eefb49828103126cca4dfdabc5324c1382aaad4b4a5d0b33d8236fabe2d8fd04072b13eb906428b3c183b19f15270d1963374ba7706f11a9b6c751bbd5b9b1daa7f12dfd4a650234f8c02700896c0c7e1b54bcca472497c62125a7523b3b68eab6548f929b8bc442eaa7004e7ef163cd5bd5702dd67a227c70044091b1bb1811b1d44cd6e9b5f6eb9d9affe181ecf51019807fa09095065f33a3375afeb9583e287e2e8dbe65c7601e4472b4af94bc149776364d402206281845dc951a62b107eff1087ad12ba42cf65addece35ea2a646b5be62c806fe0027c320e533e82bf823385a0a6358f371c125d6f1bb45ae05ea78e2ec52e5b857c85d86b6ef1d17e115822ef8bd1e26e97c42cfe4a61c6131818453996533bc5e7846c3b3fb02c1867a4656ea5af827e2264bccf9aa75d26c34a95585aefdde6af688e49c516c47a5121741441cd6b085595302ded6e35a269a3f09b10f3305135840439e5f4c5ebafc7a39830589392fa3ca19d4aad934564e38f9f7c844e5b4eba7f43e6661186f9ee991d48bb222b8fd2e54c59870d68e5ff79a1a4521d23c277ca8df67d4635b70b597ee0ba782ec782a99fea0019ec6e481ff753faf682ce7dece3a378f2a608bed7ce58a1811c0922f1476e3df4e158ddc2a3997a061ba37c0df9628bda821c30fb598f7b38cbf0ee7ca87c5004fb4e762cdd48b95087e47d20360b39a799bac40e086b65636cc924b0f84e9e0defd0785cc1791799472c1fa2b95a3b729fbb1513a255e6dccc185ee86541cce7feb15e3c5d06169492869cf36970fbf8758d427ed7ba5dfceb13c76e6259418fd29a6c85690d0a1a4af3aa1ce3519a7500b08e47458b7fef8925206d6dba36b60a85b857d073e14b8ae822fe97648960f93c5058febee016946d9090e23058370042803b235ef7dbd9cd7a3fb6f6b29c485a2ebc3eca93b7663c4844cba8f40b56f5cf86a6baf8ecd57f11813bb732d0e6c6af2a042fd593b39bf3ad3eb5bea7349678617cb6d83850ce489d313b9eeb705419c43fecc73c7dc2fcd5980c1ddc3f7056e1c644d5713a007002377add212d689c1b3607422fffa29ea5b4080ba59aa2e7f84d9c8b0f664c7e6f4f5093d2687cd5e86b09a90d8b5dc7a45f26898196a1323253b91cfa13609d9d78fe1529c59e9afa2e7fde885bc8caa1718a9d39feb4fc6fc2da61c58bdc83a0a5a7f7713eef1945647a3cca1df0e4ac4d79e4334677502fdc03316e76d59f0793d41e6978254825c510a2707a928c1115ddb0bc4e595403cb7ab1cb8453110a5df16e02200a9f331fd98f7237a1953780c4bce0ce1d7145534ac026fed37447e0cd006f01fa2b407b725477a4c3239624e169bdf05dc833f1c364a92fc57de7b41eeb60c769ee5149fd4879e3d56c22ea0a92682202fbf746f85498590f612203fb9acf365b86c3d09f1dc347634be495b8e7d1a0cd3f50b13f8a88a3880f7c8760bcbe20ea32d72c01369a7530a19a9a8ae63fccd2c9d436b5e502d57e403cdcadb2c931c4205c0fd0152825b48999d3c2534ae8f77e13cbb8e4470c314ced8427a1753dab083f5c3edd746b995c4c69c64e74837afefb0b6b65257155d6eb4776038ca1f31d20727ed584343e8005e2a0f1c76468f75535357b10ee9448511925d6ffe3074d489d4b0deb29340c064d7f81158827cf3b034253f54d0a1dc339264f1fbce4c997c362056399c33be788342fb863ed97d3a100296fb9c7f8f0324b26144e9bee47d1036d430f66b0cfe1b667026d4657c095a44a5a725196cb0ace6df47dd4699acf74eedb404b841ea79eb4b392929c05bea32df2d81f80be5dcafae5e546bdcfd77e0b1093d42c76e3ac2c1a2f8467572d3993ed391f9b760fbf5d1629400cff45ee09c101182d51154074c1c5a45e109ee5bc4aa13081ffe8126b8913233aa9a815f0d86c62988aa1e14dd1bace5548b1ebb0bdf1a9ab41ca8a530035e65821eb49910858b16484bcbaba7d14b124c5fed08ef2ccd06d2b0cd54c7b6b9167242262aa8afa378dd5b118ab2a4151cdbf38e2f3156d64bf0e5001ca1720c2603a333d0e7e14db04aac5ed3e25cf86f2b74bae6f556c14d7fd3f03444dcf2b99ba483de2a85fb7783e66509614fd7b9ecf6f88084a9b069530b33392cad3116e8da5c5eab6999ae22107fb31840c2f59699606d07e7351bdbc40ced27551cf4305f5bfe7441686eb26cbcce3294af78e027c8587856783022b8a73e3508c51d468a418014b7f331e2f15444fc9d1fa4684eba3544b4e1be0b26ea76944ed9acd082d4143b8ea8be939330bfad62db429846dc3859f6b104527e7516b13753ec0fa76b02b51b42c73619a6aec3c1574d72fb38c661e24480ede813e77f963e85dd3a55d45239be939af95cfe1e2b3dd8edc896a24f23e22511c559e5db56ad607fab145d51f7a4988f2dc4d09dc1c692375090cc31bb4ed75d1c5857802d058ad6f2aeb96af9306b7024419565cbfe14340fde420366a6e22abaf6b84c29354fa225cd28851d0903f17960e60d7f9e610b93baa0be5f25ef4cb52ac085abfc5d52be504c99680889e1fbc2ad4ea306c0374bfda646249ea0bafea095001c13730886b8e810d2b450645800f75f62139234ad83156dbd2316602f926f10be64d2234c801e5ecae52e1ff9b83ab83836b8d44b933968f64ca07821e0ae768c63c5bb778f33a948cee246b41f0a6de67ef4a02fda8bce4df3bf71dd3a239ddb94ddf81927cfc2e758a73bffbe40d83400b7792771ba7df088307f56d3d36bb3d5e16b2c4ba00105b4f0f2096923e3ed3d4b5fcd15aedb5979172eeb411381888622a1e2e4db9951c969c23b3501f29ecb9faf1f8f965692aca43fc9ab500c363dcb5baeedb7ea98b6db4c2e2177fdb19f69e5f5dcfba9fa7879250eba5a07cd668c2b8648ded2b041947964f07067b4b22c8de62760d28d8948c0f5fc2ef35013317f5f69051e0fb8ece8f8fe0b587baa21e3a1dcfabe078b3504802cf9553207ed792279623a9f6f95095bf89fa872433d483ab7cd4eeca17993edcf5a23a901f71db6a529527123733abd48c4af6fa64fa7514658b7ab4e9354f863fb8a740ffdabde7002e10ec5bdb95f8985712da19291785347e60d8c757f9bb1fc0920f9d2387d8da76c6fe2c231ddbfece77490a75dd37d8f88ba740aad6f5e736a11a894faebba4b711b0a49a5b1c35aa9c8341b6c91706eaea52593e8cd051036934ea87cde521c3fc35729ac357570f99c3a01e3568b3f72db10b45fe57f8de0551f998224f9bd332267926c4e2a1c1da6259204b579ba3c69fc299504edd4ec3eb84c030a85f776bfc4fa03705f721a6e274a46966be7fd522df1c7e2de32bdd1d6ccc5dda3e8db724bf49064d5dbf86d74c91e100dd72fa8b37de90f152bb985c2789a41a0e51c11e4797a6a17f77118f12a1d16e010d393c9317c5b05857389b3e80b69d2778511f9b5265e72a279a324988158ff5eb62292ef720a683a78bdbd00627cee75dab2d208d9f55d1eabe1b486c8368c72fba2b3a3a4b9a48691e0e0e9c799e2e40921a7262581e09efea09bba9f1af4bffbd3c5b97aa8580c84781bd972d32e38b09d7de8ad4a80dd132ea22ebbed5981c533c2af917dee5479c04b72821a26d3922a1e8bd256c3a8f2ced518fd60a8989ba85b388ad419a3984546aa3e5113a396735c7e4cf699409a5b8ef5f6bf23c3c089af7877c17a0c7f8575720dfa43bf0bab3e41cf2634012559df797e26297e30b6a6bfc334e628ca938946a492366c4b72e5f8a9d2d080ef8da393aa9adbebbdd55782902982abb0c644b3e7c4833b9e5ec8afa43dfda246627dab7ed629e7281ccf9da3a62a9d81b1239d708c5201c573b6b56684c490294dfcfe6776b661c5192c07f8c4e7303bf042fcf8af82d417e513ee5fad20a269a83674819a0083822191014ce2280cc28d1954c4648614f4e2ef15e0b8079c42561be9f6fbbbdc3560124dcaffbad9fa42ae280edc0431df986a7ceba901237f5994bd8f39f7e614ccfa7eed80d39bc995425772763611ddcd736459789f8fc4106533c8f718b8bdb1c3a8f3b6848bdc4177f32b213cd5a6e68a95bcb79714b3acd73fb30efe8d8d812f258aaf964b2e954a71c3aa99a85419bbe85cb82672eecef1a011ecedb51cac2d838f892f7c7809564c440fb640f683368346b68e938446d0c1bf59570d4420d67382dbed17f1fc916ecac26c557d2504ec883c0a8c50118e06fa1a1f588951d10189a0aa879a0b42ee8dd75e1e874c54a5497547ac7c2b18345b5767e66d327b9b9d4dc93cb4b76b24d5c7bdbc3490dec2f196bdb298960b317e79962c744023a5be7e88fea81e8baf081f75dbd7ea3f55946f967c15b1e85feaa64bc0dd167dfa03c3cfa22ab9af532b31215ea62a7dcaab73161cce454e0642225eb57062de96f12241ba16d8e25a2034f321be5c34cd7177f30033071000fdcfe1245b3750d997d4c98096ce59ee65f55eb6ab514a442a7bddc38eaddf4701e9899c94405f352482bfda10e32cb01976bf8d85b5476a17771958bc47c1f55b69caa135a18b88435293c09192caadcdcf117f7d5f6086c89ca2d25dd69bad28384b47f40d26ce0720328800e204b26a0bf88a58df4d6203583998b4f8e51943fd9ec9c492d95cd438ef9c1a68e5482cd9892dfbaf10e578a0873814e49426e326cc7412d89ab232f59cb6cd5178007da3dfc97821e12a18ee77b7669414145d98982b0e9669ab439b41efa25fb1b0e2fca94a564a4fa3e862d1188df41d744af3e9acbd39d43a7f73c57476e2d884ed12dacbfcab50fa1b044bd1122e2de65982d545ac959faa17e693eae1942bb4f5d90978aca5c51ba22daa8cde8970745a64d365db77e09c5827e7fad8e2cc025b35431b46cf6f222a984208579be544931228c72e6a12c7528fd2921712c3280eb4555200be0d90adc37185105109e1a80a5e44abfa514f654dc310bc30dc408702f6425983c20fcce09a56a3d081068772b922df928e4d487d0f0eb2544bc1151c3c4d8e0df976d0675828b81a9aafe0bf72d8d6466b722877ca1aabe4e7394323b5f6b1c5e3f259d0b8dde4928bf2f711a10acc3d6187f68a4e40d7e40d67f6a9120965af6cf6ac3834880ae1277873d7fda5063e287f2c0633ec4cf3ee8562a897a16a38e310a0221598f2ea44ed3ffa0ee8a6534fb9805f797fcf1463e1fcefde03ad8400626ebc00acd18189378fe99f486f0cd5b1c67dfba8e7790819faa1a4e7fae071eda223dc9cd37f7ea1a1b9f5673b3cb04ffb107d8b3b671f0edf42dbf394bf302aee967a9b9a38fca9214edc47473ec46b6fd17054f26c1db4e9dc2b4565ced6ad792a3e09cdbff0034a176b1aa924be7943455bac5eb4c2963378eb325bb7cc74c90f8474888802a641b58d343c36e9e85be4051681b28d3a64989c635ec28baa7fe98ddc18ae23d81ba32a6a258ba9995d8ab8d6a6d3b663f9e39f8410e169bd7daf34445388900189216ea91e89bf84e63190f6c69bd851a6fcfdc2d0a32f3a34bd542d4e5828f6ad18f21892e3f4fe33118e1904af4655c8737061216d402ffa894425725c4d846fdc01201636d282624b7f0291eea501eb4ad8f58ddff3a282bfcd14d56f4212d1e3149d8784b7f5795538aedde89237d1eac95e9df95c19e6b69210f6cac80c61c1a94c7f20744bee9c9e4bf8ef2cff7684db867da9af3e321a1899a0b8362abc69087e6422ddc12457f960b91abdb1daa589f7c4968de0dc6f302f862c3057a35d5f93fe639a1b9b3d21caac7cbe08d9e3771355a08c529039cac285c36fd3c92778576ae535dcd5043575c34130c44ac085d6fd9379e6e23b347a70df8b3216fc20a79eb67d3f932000ad3206da03891d71254f488943fe0b2bb788aede17e31092c4767ce36262aa65f470f4f724ed7c847e6dbe985fe3f3f90cc7311172b460ed0c56591b0ef97a65fa3f5ee6c9167ad349e9d6284ae6bde762dee7739231ab2a4a31ad1ddf3ec317d3a85590bc5d6041716c3355866a657bf41dc9cff801181954d47554deb94870c128107e04245eeb1c68aaffc92d0ade01b814974c1f68356f3f24305945b3cc4b964af1329ece8c6d3cbd71d0a210df41aec20785b9cebe09b6e20fe6b945f41b4ddb6dbd8b18ea1e8d6ea9fecfd8e385bd0ac3ea6aacdec4917aaa53b8f66846fd9d507c55fa48d24e6f519591f6a90b6a996ce0fd42d7b3088ee5a70236d70cd2933789053f45d17ee3354ee65000155519384a3e9fb4ff72ee7f1465ca94e3c0281a47cc569e5cde1cfcf1d0f3f35cd63698fe089846f0f744634c68fe74a5fcf651528fecb7eeebb813e4e31f1fad41a6573e0630fa717e9ac5e896a83f3462bcce89c154a86e5de1307cea9f7c3817c7e88cd480b05512f5ba15aba99bf39f08a4faf15c1de219e3ec395e6d42519027178a985355d238899a29d011e840cac340fac99476a610270c3da359e5b711806c5633f9fc6b1417af8891d16000bf6c303574513950d1b068971852fc3e11bde4040cb501b7f7150b035897d537069489739ad3dcaa76e3a4a00bc715fc3b115938d3d907c22af30cc6f0739806f46ae4d418a47fc455c7d7301169f5581a13fb9aba87dca0bc115bf6abd12efcbfb383cae527a1f1f8048219630b470398f4d8062c6cc2e586dcff23608eeee011b4f8c519271ac276d7fa728aca79cec392c0e8805e192b6e0b5430d97412bff78c4fb1b9c2621be4d4e0cdf90956d3f1f0a59f73576265c5d388169946d3c6b7de55bfc6ed27f673d168adddec699caa679aed64c4ddd0824c2f1f4e7b21780e224110ee8daca9b6d5f1159f46079fb36e22b2efb09ed1bc91ccc40db679a72677398179cc98da267f9c179b3938d84d5fd44ce108b53b8676bbe50ab85046b37f7fc58f2fb537ffd69730d9250f55d35734186e58c4df9641669f5d0d17a0d070f60aa5a552feebb8b310afdeff85554f6bfaa4252de36b583e0f609b583922a4b78eab8bd3570efc4bae0b9ad81310abc2bec86654d5ad5432c0f6d498d6f264d0fbd5f9ffe678e90ff9e2f909d5c2b774a7dfe40a642ea6fcbb41248668f7c4c839934e928469a2aa9e2c121fe2a2188b489a9d23739b8512cb51c46c31ab8554429d752d4c5c911909ba75e7ba8198254fcea5c14766412349f2620bcd0f93658f6e5c127398eb8459ee75c8ef930abea95d92a95b43219bcfd688a4eef8673da69bab8c9e5c52f8906657fd44b36a789532decd3d7b0f71062197bd8ab1c86761a36a86971adcdd46925789156ee0e192503522e9f023d713ed18b9e3b0a30ef6a7bd7365ee2d3cfd93af9296bf54fd6f3f0b2c96a3f4e9490057e496c53919a78ab55679788dfdab6fbb6a815a3d3cff823120c10146e225cd9c565cc5d4ce0590313b50de57e875272493b4d9115686383e222be1a7236f5d45de263ea05c0acf2cfdc63ff9f1d622e8eb534a904d84f114479f29a40e21a4c2d94fc5d284a75050a1eab1cac1641e2660b6bd7c3ac0d0447447da315aae17cfab3fa99ef254cbb6fbf2f250ca1037614d8ebc9a142b651f5fc95b0ba066eb1385cc5e7680adda5ad8a55478220597af9da7f59e94f13a880dbff4f50e57eee010dbfb84046b568984a84693dab3e254273bd80fe5ad50af85f3e750525c8f8322dce3cee3c6274d052243dcb8c8142cb299902163e1a9255cdd96f1c1c1dbbef8275110be1df96fdf6aa0416c111c2a4268622b8ac43038aacb3b5e9126b57cdb97c8b6b3e57bba910b75e6b7e24ceb7b8261029a61d3e69466bf30cc4836c7ee1285ddaf22c73937c3da821a826936bd28ce8c30555b8ff2ad21401e3b75a25f0049b30ae5f220a9bc5c7d15a7f239f8a0a6f4ff53d81e6ad7037449341915f3d3a61e1b736e986d4b57343642221f29992df5574ea87a0641ab9c4ec7e2eb404799bf66740a53e0fb0451ac7f21621dea87c93d6901de9ab92d4f47dfc7c4fe570b1eaaba0a3da38fe2c0a3af5ab2ddbe2baa14442ee2021417ee2c44f17dc66d919c186afdedec20e12daa8521a2636f82b1f38f1e9b32af672f5b7c1bcd96c0a163e8de7e0852101bdc3b02a94a23a638bb602c8d7676cbfaa813ec92009c62418246a24a7034f4251d02436807a53918e9146cf8d0052cca130b6553f63a2ca95eb5a311c324839f0a88a39b8c696a35af67ce4068c8c6229606fe9ff9916684980aea707a38d0355f39e47330136bfc1086f00d1f58de2b2f92f84314f980b242d4d1d8af4a5417bbaced3c5f510eea9eabfcd8d360cdc46f1ae5d290686ce710631a3800e98f3a293bd94e142208f3fc15f8f7f9183329a8f18708e53a0cdf2cfe69369a072654328c0367f5c0a57d57617575cd7b351f3e68ed21bf689b1ea920eb2a4d0c62bbf8d64de9b5e92e0936b038ce1921e72d156a5e3635249c768d6df96288f2830eb5be67af47f24cd5aa912c1e1588ced87cee543de42cea84ab2a3700767b2cdbac3b9e8e8a04d75759987dbc63287a33f934ba0ca4c6675bbc337115dfb80fda2ff04e4b0453f2905ad7c89c23fde6d10aac74cb211469a31608c4c80953493865721cb4c46510143e35a08273626a524abbfae9244062b2d422aa7914b72893d9a2031dca17d3efb9a633ba26334b518af8a77fa8023ca3851a854c14f655e095f4240442ee13ae4a629125528a4c1083cf6aea3217c21ef143586e6e9398088997eec4f503eeab22e133f01ae565afe93c38d549bd6ea06d9120942769ec9fa0afff5b3837cea0e81df3dc7c9eb3fb08a262811f05888a786163586854c0ee9e3a3bba03d2424c89c1aaa2e8c4c38c61447e8e7850f2d88bd292b7ee379b781797eddcb9fe4faefe1aae5720024f31217c3d8e20b6b959bc5c963eeda64703c4a55af1b850f0eb80d450f4e0161fe75982abfe71ec04f4a88888d8886cee296ad247b5eac1b89385ef748bcd6b7ca575d8206910fc7947dde8bbb0c607c83fc729893b7282104807da04e71851cc0f11fc27949811ab0fc260de4f187b76e2b649636acca60f48e9d745cfa554d62d40c58ce349abbf8de46daae2f71cb54a817b23ffae7b9ac20017965c61e48855de7a4feae228e5914ecd49303b68b7613c0b9aaa2c334ee63070c9a8e49d091103e7b746c42da6946287249cbdbcbb170ad28e6d1da7b0805b35c3ed961edd90263a4038580cc1594403c834eb5e59db405b2f58f865a8a2b8feed0903769fdcd705eb4f34af3d6e9dc500012e435b828d2bd6462b545824dc71781e945535eba80d95d5591c57cf897e0e98db29da078dfe5084afbd24efa4085f50e1c80a5135bb810f0ed19850c4fb281612202667a167894c6d93afffe88b76254fa0557d95695514d6fab0448779e20de92cce203e4f9f8c9ecdd43866f80f1e0b3be763dd27d23f1539c1f012c148583d56a295ffe9e99c59cbbee15418875122acb3ca3a970e2f7f0ef1147a0947147dfcc003057d24d3b11fb038ca4cb7310640eda0f57e2eda48b0dc8cf1b339bc286e770dc50b3337c62685a7d481879495aae4c3ff03d232c254207d0b11ce89ce8355fca5e95527f74eecb97b493c0d40a9644cf0d5d2840173d26806e0dfed21c323b04107d0dfa7722f6e9c5332af250f61732c212862fe794554fced620afe0e0ba1624a66524cab88a329744812247c1c75b2ba2929ae43e7807f0de608fba44a739b2000dd3ce0a3099d8e71292b02e145bd6442c0c00178c63199e19d3e5e7b8159bac48d16b98f172e48d94cf0338a15020a543ffc45fa2dad323c089065584b97581a3a4ff8240f430805a09361e2b76fc67361b8a3b68a11d9001bd3da1768fe88a7024091084f2185bde4a53e3ca270b9df9b0b9333f24e99a3170b8dfe166e7861d8f382b3a17588c957445cf4a21ba5114c38bb3e57b6b0a09af3ca919e29f6755074ee1a72601d917e8e8ec8a613aff6922aa8aaf9e883fb445899b9fdbf5d3f2a2fce4193c27d89522b389f5657417d569fe6d4e5002a931fc95d75f9451a6c275040cb51ded759fbfbcbb03b0c77e91e258752a12ed4f006fe382fdbc296e1642d9d1d60930703a9ef5d7d1c64e0d779bb69d4a96544a1edf12452fac23ee26b976d105a08ddc4822a7fac3269511043dac45cd76e7485793efcd2b54dc9b4675765072c716a23fcc2d813ad128c93764e2b2f033f80ae3a4ec4b26c96c22e41717b306b59bfc2ca10091566e35ec3c8e9f8babba1fe65351dbf4da6a85e05c35a70408731ffa0e1db290ce326320e4de125dd5f55345d52b47822b038b689ff8b171468cab007aa993aad2fb8784ee4b7219df2b5326bac776b1cb6b79019ea85ecdddbc6e468fd2094d0153552728f705911b2bdb995bb688c3fd8c6f269179af0e86cacb5743b46cad6b4c128e52c1e9fe9786414547f285fd5ec7b0040a54afcd73e6bf92f4598541aa709c32df5fa57d8465a8e4bd118c27c41a98ffd47b29c9c83ad2ac510a564401255f007a7fba8d2ca739c181da6210269c712dac4039649485902c90b9e0359543add763bdef927f5d8841f510ea089e0c6fd9b922db2464e376eef21b0c57afd5ec0d9d816e5629e07657899ccd6572a3f402eb14ac34642b03a1a0129d32122251ebdf03c1833afac50d7c5bd7fe325d4bd911c72ee00f7f9e49ca6c77105e81732c6b055d2961f4bf02e73f07b3e5615e47d821421d72eff9bd2137fe8185aaf7829c09af3eb17d48e71d9053e342548964825eeffef559752aa01379d751698c115b17891afdb4f8015d6494f4019ca50181645940c7de298e9c53d9aaf7f005f2514d6ff7bdd4d4aac7bba6ce35fd741fd45662bfc2923b3e32ce1656bb3c03b2fad27b778c4397d0b6c24460b90e40763d7b8ffef64e2860f7aca178a5308cd077f07a1d290b837557246a1aac61ffef42e5cea4b4bfe37203a91375476c5a423f576fd214f82d2d99815c72fe6bae2a018f05f92e15b3c1457260f38f010bf194e5e562b9e3b8a36c67995f0e8877f9cdc9b76dacf7e4f32b3b425eaf814b38d56e5ffd21eb7a14525efce1539b40e3aa30b11247a1b47e98a284640c1231698f529eb643943ad237ed68771d36c0a287864c1d3d3fe12e29761d79487b4c4870ecd407d623aec2a8a925a75c3eaba5542adf69d1fcc4a3cd06b8545464ba8efc26894bbba522df4aafde798277bb8fe50ad7f3bb5901d0ad097570942b63671bbb8043f969d7b5ad18f7fc6b7947b6a3444d5f2aae287e603f268c1510daf470e6309241f8d1e668536ac05ee8e4a510d32a7250fe26c7715b3a2cd19ccfca88a2fb410abcaca98a69ff5b1500169a18008096887f8e9b39e6e2160288d772d0a6fb3c36eb2846569af9e5dbc35309357b5a590471563e0213bbd5887856e761bf3fd24d691a9b52dcc27bbc65de175f4239ee0c2a0dc87ec45b396063c81b9e421d3947a99a9aa82246bfbbb69d1fd2c638aad37ff8a39139d6d42173347197afb007dfcf4dc8d17fd05625b203319ef73488d2e42111631c047f9aab8f444cbfbaba8098ebc0967f5969e875538e0a1c6aa6bce3d5a4c7edf8d36ebb035fb172c732bfbe2bae5d520425043ae72dc8a790c6fed7b0c4f606a6b1cfad8b848ce7f3315deeabd5c8a3843b0419103af4720bcecf05ed2d91abefbb3e6e1ce61efeb6e2e57b6309a536d3608dbbf291eaff8248d173486ef7e506d862509bae9f19c84fd567bf3628a047cef9385447e8b833e33f28836af027d9b4ec0d397986859eea506e8fd77fbcbdc105bfa2227e4f48f0b3ab28db9fe9cb3d8bec63d8a5490b057025837fafb6e6fc8bd2a51cd3a7d4e571f311caccc0c727f0fd67ce15771e59146c1454bfbd4642523b2ae4b6f968dd4a15cf1878aacb69e4ab0056ee37e08352ab628e3ac1a9dce5ecad5c8411c0170d67f2f9c280debe6c0293dbd12b65826aacb0fdfdce0a19887e881cd4dabe7384eb087425d73925fe6984be47db6c3b5005ed8156ec02c92a044deefe9ed6f80a2fe6e4f4b6f662c2c325d4e64b08f5c35deb8f6f84d5c27c5a2a5070a1de51a9f5cb7a3af6597aec19f7e54fffbddefa0ebbb311c6195c0638dff5c803a54ac75ce0b8d9221b3b1d569c2ef8e63f84d7dfd508b18ad1f455956f44d11bca586c5257f7063ca6b2d7afb7e0c3160f5cb2dfb7c2cba0776c3c3e29d73ba5f40f1084aee20db465b205c5029f7040583eb2a1cfa4989330a9199eadfe377910a9fa265df9677497548c8e6b03d041ebe6b45a9c8a054ad2143919a73ad4b51486353c630f23de0c71f0a2ae1ad24f6f75c7a33de10517e81a3e8588c2307fc1a60b3236cd97007b2a0b79e4e45f88dcef2ee3ae2a311532aca092350182c4e0311a05a32d7080ad61ce9cbbd605f5d2bb009e667bb1e75fc03939bb15e3b2d8eff04260fffde8033d1908a6586e489e264b3418fd813af0cedf794f52f8bfc9d142903467e1611eaa9c111447ace094e0cdc9e46ffd9b2f531307a8bd61760566a694c85dff0284d7cfa3f37355d8077d425d5ea1bc894a51bba65792fd6d6666e66d752bc8405ab6f4ad0e226d3029f534505efac4ca47cdf15e4abffa19f52be20ca3f3cd2afa7f2c01908c1e5d24246ce1d6f306718950e0bfa866bb565033fe1d9427ab764d2d9c0bea5c47bf244be25b759a2c1c2467acdc625f87e183a0245fcf0f399162ffa0239735d2d42c8d4dfc2010b857f52474c563b30e2452b85585b047163094f91455af2be129707338cf200b722ee39a5a94f622bcfd7965c8130d3d7d1df660a3e21b46c8545969aa09f955284d1864a45f369ed7742cb59ac643b76a3876422ded4403d886843e609ede4bbc4e611ee4a27ace7879b95b12737f4c14e345ec3df371d2f77bbea89411f65e810b09eb36f1918c4924762c6d7f70e6ae59ad718f1aba9910d386be58cd7096eb05b3ee90024567181b02a34154424685ab5f2a9f754d2f4719ac7c7c78020a8e4ebcd1196e0c223b055d5e6f691c805e50c33152b714e2061257420712166969799c4199a31b33c139b09f9fd0107a349468e4a90621f2db05425540d3a0748a7e996ff3f5e34576114ccd555ff4723a53146888e429131e22e85d471a6f81f89fe290b5c8fab6b4861bf08fda3e7533c05a24855563ef6a3330e53cdf4dfaf3aecf5eb232de1a080dbc38f7c5bbe9182fc342d1c14aa2f04475dffa7581dc844a9396aea76bb69fca7a76a0b88604111ed3312c3da53c88eed61d5d9e903959f127781d7bfc06919db3a05c598852b5f62b25e828ce43a05b6ad9192589b6f300a14aed4d0437ea96715299646b33a9411c95fe61a12ef7543c2e2a97890d2afc51d563b9bdad94d5bb48d15dcb5a8046a2bd346dc0eb25d7139cc2c9898cf3b26fe60ac9e97f07ebace68cce304ff551e31a5053ae59faff8b88db3812958725e8cfac15e7f6c9334eb0f23449ee6f1c88f05a1f42cfa15c6bb9497ed01ccc3c2fe360936d12c6cd33d2e703abe6db0a44c7f8303c94a3e215dd6663bd2c14b2a7fda7640c056b160198c056603bcf430aeacad45e64ab1d96024a4fd7622ec020fa98441fb59fda50f7803a65c500d318e7e4d446f1235c011d90134a70c3779a3a1d5a513e85a2f703adae40af0e550f1151f36460a1e4e986b4593b9c04d123233d86eb6e09c33977a9bfe1f894e5bb01a580e5c81b7e297af932593eaad42e9e7c7f1c48491f5a30ac5cf4f593492611a68007b7f9d48d98e08cb64542762898474c2182c3c3d9b23ccbf3cd2690a6e0fd0e61acea86d765338c77b3cef97a836eeeb4065bc5dba144da5afc89a381d1fef5d29e91df0bc89b104e1db4fe62d2b2517674290e6449b03674d171849b8b78a97973ff8f508ecce2cc2cf889288063cf039f210293189f8377efb0294c7a9c17be8afdea67e7394f261ed0a95e8a09d9630c8225931e2418d2d02e3e494df201c53228706be7612f01457f8cc570249cf276172fa9949684b43d2e37e4765cd0df30d9af9106a5a3ad8785244cb8f6b0744c4f30ba52724140d7e37c91ad2c104e3de2d1a3a0aeff28dc1db4776b62261f311abda657c829fb925c9fca6d48119386174946766dab0ed40cda2896d57c5d7c9e3d0d443fa38034b4d1e2765d53df2baa7d5f2c9cfac90ebff94ecb4662deb6bad360e1a395c2db9b25524926b591c05278b6c9d93c1bc2b7189c9d4141f81e587ec59709948e74304151afbe97a0ce4bd85a3a528848384f8bb42703f5c6288d64cdf57ad9754421895c330868cf531c9e86cef600214fc10aa786a6347cf98f72062c3afba86326f95aa31e40f13e329571bb469e4ff78b0eb35a61873ced78b242939172d23cc724b293dc921df44c66fd98a7b158b71d83844ad0d38a12d50aa92334607d0f711a86d96f13a8ceb79c38e14daf0328d437157d53dcb4aa084de7fb2d2b2070dd22c112fe4ae19854287677b5fbe0774a9e55217b3aebad81bd51dd64dd74c5c896441c598e211476261e1daabf11e7f7b497e783abaf44ba7f57afa85f63cbf844d19ac34564758afb6bfcdf04764d1e377885e3bf0c4f0b9076fc53f763119322cb74c5b8c5e59507051f1c9deb92086cab33e53f9ae14e35c5717ca7ea7bc33ff95410d089ff7c7fb2f8ec955635992fa42f56d7a9be52143a60b3571ec0b23ac829747fee551f3590d9f23ac2c6280e853942da17e41a4f174056e2d8edccaa62a8e3c9f0eb4158b17cb8e8076cb48d2c17c03424fff359402a6f6cafe1573e28c6889157ba497a937c1b320f605cfe7612ced767f35570cd5e25a98ccf5984a93fe9a5cb2ec65eb7da441ae970326c01773e35735696d3e2bcbdea38becf9c53121bc280a9cb625e793165be7d588cd218b49ce2f26a3dad4c2b23060c34496403096df7fe1d85baa1ca40c7fd6ebf4fc8ae8bbd483c3068b62f36b8e754179418c7edabf62a59d6808ec8487a5383cde3a742c608480f7ecb0b3facd37aa0211df7c51aced46e19a4c825e3102feedbc33e31f79b932825fabfab3327df168e203d645fb70cf994825a4e51f3d40c294c750bcc99ae1a58dbdc4f128f729b68f5c300d6553dbd33f313a419e7703e7461fc991c534540aba8e3d0108bf315fbb3d1d5954185957fb19bf694c685e7966c90973f4a830b4cbf360e9fef548988346c264d87c10feedfe7a91ffe3b1618da652de4b5457b6a229a669461741e12990dc5042868f38c7e46033f1000f2199da5e090001e1468f643fd35df205f45c4680c959932b876f9f5de02127110b1a8f902ff4724076b077d60cd36715b4bdd3d7c22439837ae9a4d50f22e9f09df7729f899df99705f43d133448c6ab3adce3e6ccc011923e01276ee5f219ae57a84c6e241ce5bd8033bd0bf6bd6f6be6bc70387d4a5570910f5b1cf18bd4f3d4bd3e889114e255e59a55d89d1622b4ea7ba0fffe97304f4653b3675ff67ba287767fb894f4ea23bb3dc9152444fdfbb05dfe4afefa397e828c192294a995f543cca9822e3f15186ac5e2a277710924cff32299d88e3dbd571c6aa93ca611ed8898977339d0c395b7e4d8a5682eea113dcf0da81f2d448b8496e3d80dae14da9b8b6663a66ac64de8bef4a7d5c83d2d80a1e95613a892dffb443fe2348cd2bc21b655a64ea8e3cb87c2e5c00c83f23b8d302e44da30bab7ca5af3d58e2f09a588b2f8803ada6a5fae919b59b9be6f57525a8a9d12bd77e6aeb82219413a731be5fb293fc8499f497746194e6be0f85c1615e92b47a5d9d4d05726da4506498c3890ecbfc6342b0d517dd50efada7aadf9938990820839cc21d96db63fe2c38b99769738bf2312465ad06ba50d96cf677a28d9cb30321ee7c9deb04f6d71a39677f6d2548fb27c30be47c0863c273147ec27802e70e83ea0277cfd946cddad096f6c539e8d79b59055d7f5e6a45a3837186586d379aeaaaf0b889aad0c72ee106fda345c51238108a3f76d8e41d389c6d6e508046ee0bb4cb02bfbfeac16de6e5fb3da70e385d3e22556c2d5a5340e6c3c2c7b330318e70b12ffd822223ff352b884b22f0619b0cb2ac8edf4ee721c01ad8ea39316f907b6ae935376162e28c69668b8c3f633be766d5aefc3ccf11554a7125f32d0921bbacdd3a41e08428eef4e73e8a8394b6c0f0fdc36eb4ff9de371baae721db8c74a96fe44002e2f77d1751aa85a652f3a24b1a767dc04102354ff8dfa127980fa35ab8e6f36c5a387a1438c93b4dfd42c18ca28571913c8571fa351461a2d65a602e0b73b01f938a88a2099ccb2bc52a0d036ebf7263cbcc2846abe0fefb865ac0b7b140d6237863999304ca5d034fde3315832ccc467f53e117a549a5c715760abd6dfad56e4c6322846e572f6c0f9f2229f33ff90ac857b7522106de716760c364e7cc7814fb79b9fddf80c9671a800b03e7ae1b827d47eac4933d431321c6cc4df9a6a63867e128362f351d75cf1f4fc0fe16139ea5c1d72629b5d70e8ef31ce4c988b21050e4ad09781a1d4f59be80712e998af1d9c84096c295cee39f57e94c39283e087be86ad3d0163e75efeab3b2fd63eb9c2ddb253b43668a2dc626e5c5b528dab7ed722684ea67e04094340d232c731e5aab5fd3556eedcd224cb8c79ed5d49ede51c0bc36c72e028323b5d0718f1f53390f58a50aea857caad265928157d3c78857541955d75fbd51435ed1a1d412f286c11d60440133c9cb492c93860774e1fd8395cb8a60e439eda948f2344ec2967700430ccc40433f95621c688fa174ade1dc20447ad11b1c1a3ff14b12bde52e942f33cde5f5aa61328eeac4e5e5c61925a58782bedbe43da35c0043f698cbbba5ffa712730204594cdc5cb33d33ba74243c908fe237e799823ad1a77cf6e9a4bc2d19c8fba94829e9613e93ec6a495f85b6d9b338926da8f7f40c4434a40cb5038315b90e64b16e53e74bd8e44248528c8a92a9c6d6b6d136cc1a4b23a374a34002ba31b87d37ace4f4175e4222b3aaa8f964331dcb440221a5811a77c97ba1595043bd2a9c06fa9d1a431fe9b0b55415aae87341645e56309a5975c805be15aca6f3f8a26fa77f13e4985c16f99e0b5e3292c9e040df0349bfc72b9213529d098689d25296a59a3eb85fb35cdcdc87caaef7bdbf8fa7ac34ab8177127d221593f669bb8affda1a152fc8f4f91ef5bf09ace53dd56e0a13b1c27acf69323fa3099004f0037fe1d29fbf63189a487ce18b910a4760244060415878b3f32620bbbcba425290f5f6155e87e474f81d8b9040b51f50aaa984d0acf19c35508ae4ee3ad765ee5128d44b5c408283a2da798b145e6e08c4857a01f79d697ba9971e00e8b068bd3baac61ef3bcfa1182fe34c84fe2190cc786f2d65d673fd982325859c23151535c7f79776346c74ca4b229851631a49167458a3c80e851fc83ca921f50c3ab9f4f918894edb06d5ea13f4a6f6bab2e120d6ceb990622cde9d8333402cd3e204fd9af91fe0b378eb4a8cc87f81301d3f4c80f4a8f912774a9143b38f307ecbdbdec07103de1d20553c7b8496e9aa1ee32f3619ace111ce2bad3ca7608c5cc3f6c797b1253903b3a2ab24e53e58b3f35e79cdeb86854a077bd2f6982ab6354b60c920073825a048d70a7f842f01acd3d51a0b35fd4c958beaca4ad507f1455cf96d23d9322d97fdee0b2ba6058bd9b582c9878658a7a8b5592b0b8535bda571f4a04b4dd057c309512bb8f4c107012a33cc3579e5f798065f06f7fb96d8febf59e4ad14105c7adb630a00fe467d9cccc91962307692b90cc76e60ef2fcfb06184d72b47b5e530d0f799a28cddfde71cbbc74ad7dfc7f0e110ca3049ac1bc71fa40d730bc6e9b26ed714edf3b250494190c8a4b87902d1f6ecf23477dbd7626a3d3490060f0b629b3ecab502542ad49468faaa60a2f20878c12bdb692cfd7905a78950339e0e2c1b5eb8f69839f5ecae748590f33bcbfcfb2be1ccf038350ee98ca3ebce47602bdedcf630cb372a4cf47a8a7083288e9a4e783c0ec7373a3dd66e85af7d21a723f74ff1e2150c39e4a6522115bad468bb212a868d6b88c7cc2c1e07a9a7076a4cd9c4719b62d8006cd86ba72f9caa20a42079584cd62d1a149f468b825218c41b723d7b73879ed88f99475edc849d8f7665cfa18c354c01657ce105136b382903f92df4f878c7270b3efa598bb9a130a6974a77ab21af7e566cbd5257868d3a50dbfe20d49d9e8e2c94afbfa81f2fbcc10a3db7932145f7929f00dccf9e02aba3fe8beeb192d49e867c23549eaec5d4230daf7bf2ec9ff30bada0907c38c733b0b0a60c3d34fe23cf64285a083264c35c36da5c97947470b58ce92af1a2cf9833ff93d82ff412fc2ec724c137d1114467edad83aa9c1dbf2a63fbc63bc650bd5bdf8b17c955ee7f84f58fa35b9a5462fa8e4b8ca21f19f6de1b4ac9970447c809803a812dedd17b5a267815ec00bb658a948a3824448af1ba211c152740f158a55e421a8064e0b795ef014330d858cecadc75f235abb7e34ae00f932b0153cb713ab65ebbd8a2101b19dfdef9d33f61c3becb1e71ff8875dd1990077b0eb48c97ce9f3c9557851ff0f7dbe0ef020a45cae07d3f1b790d773689643927871e80534f7bdef7665773985053940207552ef5e433e650fef81fb7b7236894b1e072fe02b945d945cd58b115b9f6e209419cd3dcc876ac811ee01d6bb81278410ea1def33eb57b05ff320e361366978cf524841ecab91265f9bf3f90e30d7acbff49f5a3e3eb60b1ea63d713799f873a18d27685fb3e8ff129515d12b7ea717ace543ae0f42e7a7bedc46d2c9b0d9ad9598d6e61d28f6a68ee2ef5a01cad7adfdb04f84cb2245f494caf14ef39673c4ae89c9356fb31e4ccb00e36004ed256e347be3809d27e950eb094a4bea89d714bfa2fa939d3793a49786072225ca7de747bda78d3fd743317a527c8a0541b3f6048fbb783ed2ceafc747f37f3aaef728da18c0e6e4e0f67c51b14862b385213c590e5bf508ff44f157672ea6e6fdbad8929d6f99dd740ac4be64719d8679affdc13c442fd35a0154d763c0c5c384ecca1468b0e031cd2bb9c3ecb59008760dfdf1527ba5e0d3815520cbd87bd637589826f67aa34961b7d214029387251a4c6db61364a437adf9b1cf720abdfa5ae66a4de316902319084c46a680db313c7514dc29d435d928736f698e2aeb385be990414f28874ce17e9892393c1c22eaab0ab8b8946ffa07172c9775aec07de561b505334f02bc2397a3931d00a6d971d874610b31816a2813b57bddf250d61ed8f66235e080e5517a198410b47fd5a9efcbc2b7d809dcb60c219b978828310e20458ce12debc44367650622db27713659526b820b765037014f05c1b1fdcc4f5bba5e3a73938401bd6e38ae5fa5073c4aebf19e9435f628acf28bc7d5796a9107f9bb6a9a1286db47e08100178fbc1d7b88cb28052cbb9979b2594762822bd58360cdf6f79c1e4937f4d30548087568187f06e4dd69e09ef539cc3ed4d9b5498ba99b7c1addb31fa86388b32a70220b954a338dd0c1f09890a6ec95cfec297f41df5de8aa1e6d5b0d5eaa477df37202b4ed18362313ea4024f274ddf65b800f4e431b89f4c91c5b4e3ed631fc7f0ec25c868c3407387796f638099d34212dfd4e95beb91be99e9b0fffe966e9dde2dd96fc9f2a881795afc489f1c0b4626d833e4fce29477059e4873906baba5df22e416170c463e07cd61ce70e78a187d6302cf234d7249213532f63df865f86b1c34f26b93f968968e260a2931dc28ac4bcda6cd9f8eb20b71217aa1b4500593003366070ba8563c0bb2eaded3eca11030533a448ffde4380d8299ccfaa84719c845ba5f7f150529e62ec641cd7f2d31056b072597a6eb533402332a8d2feff3029b4daefbd11d29773d149bbf2d64de923a5e4778799f1c07edfbb20fb17f964f4927270f36bae74876bba971f50c84f2bc44a6b4b25e661b55132f881ea944e5bdfb8d526ffa2097bc9c674b5c8e7f1699d4c71330b827f80ee0b5e635dae00e7b0144dd9cc146d7604675dd1e33ba41480dd91fd57c9f9b7bc3bc77ba4f7ea7262f3bccfb28312f13f9ba597124388b8c54daa7ffe8eff4226bcc703da253a2e8bc74c1237c54f9a568c914d03bc75e371fc63f0cd834691ecb6369761489841903d26153d09e44a0e2a709600e7bfc3f7c90bfea330652530ba7df2b24c4e7401008d4cc888f53a0c40855dfd32df6297c3bc0c2128c7b7df137b1ab1f40f963907749425a531c8e6c50bc250bd0b6bbae0122a834c6a50992fca4d3c1b9fca3df8370529fafca9d0c762335feeaf70431c5895fd36c04c051a8dfa91672c42c62c5fe1410503c220d8914da875c47b50587db32f6dcc23e82926f852a133c737b1c2db72e9a832fe6903ddcbcfc8cc2b1a7c3d5bbd67b4423c5c4c6454fe1c3be3b3928fb81680d9b90f1be5a907c5f5717325a4c70bfca92353320b7a9452133b9e4d5bffbe37941b2a5111e252342c968d834658494f035c8726e6ef68e72c417f278098fa5bb3e02745062b7613a50f0af51b10ff1b464171e21eac3f4013c83aef11b3f8f8424ad9c54adca6a181db471385f64448122f538333911464b5a2a6434767539a45766ff54087144e3a0f91d41a7d7ed836d46a4b31368661aec3be44537db6c8aea78a37648174c5f45a876d83391c1da2e26a9dd4bb1c8f9f48c06487616a899550732eda84eb1e43f8f84d49d70888d153574c119e0f7f048d72096df309f49f7297bab58b6f88578d911d96e917e58e69a947c03df11932f5191f12805b81986efefa3dd197686bf9f2ccc5bd2d6460a857f0264ff465dea173abe2e718d53debd25996fd3d920cb96aa5aa9e8321d66dd0c75d28a5c653888004fcc326d9dd534567eac83a09db74ba08cecf42d94c48bf70cecfb2e5831294c42c145db5cfe7fe167483a9eb9033fea699942d1625dd3619242d228c8113f8aee35510de984f7c80b9b3d7b5c4373a8ae11d8211943454d6571ebcdcbd274addeb0336e8d900b32d22cb9339f02b2bb8f25c191cac14f24169bc932eca64caa5e8f041c5cd2b8e775a5bd952293de4c8f388a8888f8a9328ed1358063b630f81753f26ad02b30d734be26c4b5bd2b46617c36e5ac37ba27c82a3b75abb40e16be563d5f4197ee9390192eba4c92eed7dff31777f4ed9c9618848de35b296205cbbb2e3624bc3dd29e22acc046d015f30f305484692ea17906360d30598672ca4ba353dc1ed9f8eee9554af804a102d135f98c431e19e7abb33a3fd5526553eebc037575eaed7c64e19534d3d09e9c6cf9551862b7b04b6cd5883fdf9186e6fef6adbcd8054fde58da6c299b126200039ba26f80c6e6f4e13ca5e971176bb80a2b53380e380dd90ea05e23ead70e159937aa01b4f4e89f92efacb1400ba4112aef9d73d7e2da747294ab3731aa9caa751df45f04fdf84aebcf59ee167a3100f45ab03225255900916027b133b5d27fa430b7d3ef7659f3bbd5c3224f648a6d0834996e9ecdf6da1e3505e0873d32b4725f25c3e47019e7b7d6e02c5f1c288f852a92951e1dcb7fee9abb91196749b7f52601f4c8dac899f8de041c49f5ae20902519b9335916677cd361a6a94b28bc8227afa474c05f027919e5d829410ee0d49f36c49f2e529f66c928c34a61f21435c935a93554e2479a48dfb6ac9f31b5fd13830cdae3fb71ee90d1b3e530c69f6ef0dc354bc98be9a0ce877c939c1dc83c79bd908e5b8203797843a7b45c759b4fc25fc56afe899e3246c06f349e9189c6cf040019e701a114a9a315c7f6c6cf3f79e2943cf893e0ddaad877f823895b55bd06350ee9b759ea5690c882273ef269491e84dc2be57392117d76de543618a539b528b4475895cf8161301d249f953e5575c45c99674623f1718ef7dd4f2ff84a558085afae93b84591eb2375acbfefb1e0a540b616afc9fa602de820cc7293d2f8c2b1a5352541bbad27f38cd675f47beafc0128e56da18238546bb263f53f69b5f2996a8d772668764d42aed72e87fb25118c4eafcb2a78dfc7ce28758ec94b2abe54acfc83ca3f073c9722761c29d9d7bfc09e04e1c8ee3f8a723a24b0825727bf2d096589b3333331cec0e6ad1d62c082f3ccd1594536ea394d2cce3dbf168743226255fe0b54705f96c38980e8dc39576ec735034b83d2bc69902dfa5add8ded67fd23932180f71bf3effb31d8ed1c16ec800b10ea27ebe86354c7f52ff55f11e1783a2fe6a6f981bc0bb62b790b1da91f8bf247185c9db3ec1f7b1fa0da6015ac8cfd4f71970c621ea4b48d21038fae2b81e0432d9662cf4c0351ba12898d43969dfad27b6131571724e2d2658dcb882942857263730085da75de046ed7236aa11f4500e44516e5fc3a3da7a2f29f8aa6fb0bde5c30290485a4dccfa0e4286285c82d9d2c377695f392f5ac75bf7eee210403949bb1825d4e10ca1a1b94a0122b92bdeafae9b7247ad7f89a4389628a9085741f091c56d6cb7cb10e541a88cf338d9eb699752ef0de0baa34b2c294bedcf779bc72fd694ca62e70d84399e5036f835c1076849d02c531bd172ea0caf1606bd4cb0605c9ee1c7a15f5e5cc7eee666a27c8a314e34da53f7142650c4a096ea35394d84b77a67fa1357cbcc708d9d2a5819758c8e8da4a67a281cbac08b0ca00168f622d5828b4034ad54dbfe299221a84b76cc63efb54ac6eab17f6f6eb2d3ceb52ffafc6cfb69a780ea1e8ad60f90ea2b3e02a02d2b6ca66a8c450e974c3f063b2707da20f11ca5cbcc56454c6ade1167b5507f1db386d85d2914dd17cadf657c7586bd37d687dabe34a3d51d9c887670e90f3cd78f6b3661e02ea381d808ded75c093853bef96cceec5704b678be1a1a9fd2d75dae00a7ad8dce4316ac5566b6894fd9fc2f1adc31a500f561566dc43f7294c45283850287dad222b3f77205fa423d537ef4b1d0218076767f08165f4aa477bbd17174b285841225e36887fe3a0a3340272ef61fcd48c40d9ff372c78deac5073b5e7717b242e81c6df5c3a0e35aa7c06b763c99c89842b040c95348cae542ac29bea00cddb4990d5384b83d1ccb63c13b23f70ed2318db473be03990e05a1fd65eb2602d412ff8539a2403da11a7abb7f0b3909327759212600ce12acd8380f487a7dc6378be6d23cea5b3339d40b0c3c7fe20f6ea4ca1b9d245bb5167b4e8231485a950289876d2c2048abf55a9799070f8c129de52f0347a6a185ffa78dd950cdb3b193ca73d345f69f1c3d6efa7937089fdfb30c19d0f378da91f257bff73798cee185493776e4c711522998304ffb32fd5b7bed6a91f3c74f301ab11cbf2a152f9cf5c4e572f29adfcf9a0b7ca6e5a7ca07d9f51b3d6001b91d1efb0e8cb4636b74a8f8992fd7c2173c7204480e852963b4820f8c33d613046a855710d8246193dbb533c76d4eec5c441dac75dac8ab685f92b142dee2f96e1fe3f936b10e52f403f1c220b7eb6074888043f479ba0a92f0861f27399f6e3ef0732f8b2e7c27f4c0c533a4a5dfc47b86526915433c552daa828634ef2e1e13dbe59a7a15a69644b7ce447619adf5a60b4a204ea64ad26858c253caf08de102b51dc4824dc340f5ab4c25107e32608152dacc660c244ae4c8e39d7e26ab823ccd863ab06b14f02f0dffd22e130348eff2af5653fcc190979ea3291bb9db57fdd7bc14134f76196553ab1caf547b01d382eb756025c5567dcd8ea4acebd67bf8571f2a1882496766a60121c33df865930279d71746f6c8f81a440e8be5bbc32e8887905305f9322bca4652f02a538daedd4b27297d6a15aaa9ae5d49ce5275b8720caca9751196dec5f77ddeb913cae14c0ba7a1c86db351e6b5f7a4f2f8d7077b774f4ee5bfb0068777f474d3b26d5c19c338d6c9045a3c8d3ffce12ecffdc6082e0a7364553d56c94014f1c188bc4351de5124107bbb9a7b1d1c2032bc9be52aea0afe2cde5bc60c5511cbce92ce34e7f0356cc47f3a10ad1a4d1bc282568653bdff909c6ddd97783e29ae1bac30fd45ed809727300172017737802080ae02c99ea1827893424ab5666f78726de198f9666bf0f17c2efd4de52b77f43e762fb6eaec1680159e7fe911c27f5d8b244373aae70d5428d8d02a30b9492eab5dcf339c34f9294e84419e25562ce7c6acb2bf30cf8ad94716bed4f2b9828fbe170ecaacb3f6c9c97ad28a85aa13c865d59fe49b69837f7309713d62b50ab6a8df520ee09b5c44cb96a1a5b6224218efd8fcda666734c1736324bd8d1cdfcaf6d77b54672f6ff283116216938ee592fa6816f1243121bd293f2308f6e2484e00cb308a803ec386bfa228b53804716985d396c024fe1ce1d5ea0e63b18ef49b2879cd636daa5f1fedb51e9fe47393b41a133c8b900afc82e7b9b21c43dcb24f5f9d92adc42d453f1513a8571bc14d87db7df9e08443267db6154895133d8f554ab442354124f01792fca277a62ebaad4a2238d74aa815f8018d0650e773cf576b66c8262a58f74f7febf2ff92915b555c0d6eb139f98a5e72d299e5976a00ec4541412173b33f195af2ef8c50facdf5d4e46daa533d7e4f3530d070c8db14d7231b2d54bcd7d0460b2fd8e6ac711b07a95b318b183838812ba3d01a9d1a05a9f26f10cc726d395fd426abb2f13660c6031d1b2b3b94454b64310689402a3068e8f2f06abb93f876e3a82543306121022044a7aad79a58c5c3dedcfa79172e858ebffc01da4f0e56974abe7826941f024b23a518fd398afde40d414c15cca08ace3a9605264b7aa42821baf74e262f07421b14459e7efbc1290d638241bee9e57eba56e5ef88b0a74205ed8b845a766785b3577f113e40efc4a9892cae821ddcd9024ed8489055737a6d31addb788d02d5c3ddbfde092c20e8dd54bf9a12dcddd508739e14de56ec570309e3cd940f767ceb7bd4ad379b047abd92fb9f2df3c3d2ee5be9bfe8bbe251efa3096404f24ba7083208802fef41a8306ca091788bab3928a78121c7ed0ac450ecfc2f4f66506e3f5e46796e8087b0853d4e9497da1f80672449f3ce96d8c3e1b78466bbee3dfe857c66648e5697a07c8f58eca9836961ed205e6cd194f176f2556b5cef14233c16424caa603d3495c03d16630b6d4638d9097d403005c9a91043427f51f1be70fcf9d9c1c370595bab662bb7f372969bcc68ebe2bb57ced55e343337c9b7a66faba7ab3b1d91f807b26b0141281803c5c43cd3e3df2f91dc9c1352ef5fc7a47843fe7060d2689c7cfaec5b1ee7d222e6309e4c84d956dd4f6f39da4e99de57fedebfde682bd66c4213a05b3a019bfd29dd045147f1f43584aa0ab4bc51ce8d9cf3ea2d7df23a65769ccc4cff1c4eabe788249cb1b38c8524f442fe25fded89afd2c2b1d303f95fdb1fb3cb131f4aa85f2bdfc27d929cdb3942df1bbf68a0b8eaf9edd43fbde0a8c196fc74cdba3124cb554c6689f60d5599e0158f1e28ab5e564f2362c4a301f5d1c666dd77aceee832fced846cef0d75f04365f6d3e8de2a3f3770766554974e81932c62cb0f5829f23e674d8ad0e90321999dd53f708797dacf25ce4e8a10e0d9bb925c30a9e55d08e09fc889f955dcfb1c81b7a86b04e69211d3d546194bd8d09f41a8745d30c23f7dbd210ae83b5cef5b8baeb9a014d4d122230a0a6e3138236703e381a9f5a8a29b213974e7a221c6f2feab591baa57b3f249b6aae32f0bd43d050217d94f9aa301911678040d57deb4aef727e5f17f265b6ea88e08895714249a9459348b97ad54fa8e3fb3fc54d24f9fa4fdeb6418d75618dc92ed253841f24f45d1ed39a044bc663a2cc0661068b7e5087cc4a0aa22523be8ed05fc06b443f413e6b52fde3bea46dd885c6ce840bf2bb88b4ec10af68eb1e085a657e81a98d627f0868da48684552833bd5bc220fc0584a0b2c3418e41e2315567b9719f5919a85acb8129757b792f78d2ec2098e28a87b8ee4251e7d154a1aa11d64dba8e79a3ebb6ccaf2b83c07bf60f04e6286bdf794e5ae0f84409d2953822c041f4dbcd230cdb1d54b74cc11f148db2c40c3e817fd456947956675486be86b675100510db6723835ba1590a06e5ad68f6e776362bfe8b8137df9d3c8673d03e6a0ce7b607b2fb7a23db16800acbe6bb67dd2be108cb5828022b0e0e22bfdff6874bc266ba053662d3205667ff26a491ab460dde2fc837343fae3372f2299d1226f7ccde30fe983e60b7751df435fc130c5b8771558b97ab080246ac1d43accd702600477eb64ce9d2ba6239849124abb6fb499a84bd649be4dcf7d127ea6a7b6d22feff5242e0daede388beaf911fea7653322f65abdd91af53f69bbdcd500c1683fc8d49e5389d9db376cc2dc6b1a821f324498f817e34f249f9affd3e2d7c3ff3d5cf96dfd9036cfc45c691a2382727dd009a0864567f7b0147227a3800fe063fc8ed9163ef12bc7382609bed53ad057becc1bb7ac29008924c4aabd91f0a22b9ed3e9dfe9837d94bf48fed5b5ee406166bced061d2f02b74a592b8e5fa8aecb72b55b93039e686f5576fa5b266b69fc195cf24c2b44a3ec7e6e3fae98c5f24601512c4a1fa0d073a415f70e9f242ee77206779719790b4524340c5d81bc747da7d8821ad5697bc69fc1f7a8f5ae83dd196300d2e79f69310e4fb03eb166a85b8c115fc3fedf5d75e2c79c1ace44cf9523f460ed9fcd87c1af587eae507d586c8ad697af046bf864c8ac85b6be43d7b83f8d1f84cde06fba3e5b072e07241f8f269229eaef7bc3dcefa48376a8af43b707d42d3556f61f2d905af5bab35c6ed59ccad4dd4ffeab84521b9cc4deadae9ed5c7ee2e95f24e7fb8c8b515979028c88b910cfa43eb9fe56c30db71fd074550ad338da4b1fc4018050ef442cf0ac997cc11359722ba2abffb35f6c4b6abf6baec3da227a5feab23ba09e4d1e27b1cf9940932b447e921c4ae31beca762c37fba9dd2b204c27ac1c1b8a5cb1a17789b0154a45678f786190d05e6252743f4e82e05ed3dc276cc812a9d5c19dd0f6e80d67393d1ce16d98e94bab823fab4038a7d0e083f52e0207db2d22c071ebd5eedaba51f3f9f951259da63a121c47ab16433fd650fa25e6119f1f20d6e3c953227e799e1a0956b2028d82e3091438a3303b9589aca87f556b7c246daf7a1994665426425ef6b09fc3bdf5b0eac4076e831a3992ee20b154b225021f4fc26e221383a5f3cf89182fa077925f108b86f6e21cdf642ad63b29f7b7113e0a0c27679cc4c37ba62df4fa91cc48e3d336954aaa4df6c055326cdf1f36644752437333ccf1ae374c1eb69e801563e37d53221bfc9bcb3ebf28f1c75c5c20ab4fa1ab3c8a496499bd1d243b7e38bf3a096a6d3f930676cbd430fef2acbd464d4c497b9934b9f7a737c446f813ca0e75b5e9c532234121253a639eb7725df508ee178a4788a7fd7936c8177c9e5b585869a046904875d6612fb33c3318377827412f0aa419044fbec3d7f875ba882c59e5ec819c09017566477e2ac4c365f0eb9209f6f75c9dd53815ddd515c1950124c614aebde65427706eec1a8e1cde1f091c1ddbe63eff0c3b7bc8968f54b1f0155768a4fb7a53428d40da1ef61eecf3297b5ac4fd4c5c6a329f392e9ffc2aa0c1341ef186acd42723b047aa2901e7bc68ff0f372e6e43ec1a12a223ffd2307e6dbf1045306d2e7768fc84919627cd9dd7c2fb3b4c2b24a9062bbbf0f33fe68f955dc7d5ee0ae590e9f797b97029baa2f994961d8f87e351993569ebbec6e500678e759b5a10e534049f936c2de5681949b5e1db136903448ff065be2ae27f4f45ccd9e734b5e8cc6dfedbdf09a5333bb25d415558911ef5345c4ca405f1486a473f2684dcdeeac6ad69907f845344f4151d2ecbc325bb37ebd8dfb19e32c853b73f5d5fdab0c93d9e0196ffe0bfe697c701c7b81cc8b517a895a87d4cd359e993a8cbd957ad7a10f08afc07a4f22e9e10948ee80f3fc7d2764e3f5ce708963a0efa8ae5a1657272a894b78f1b92651baca0dc55abaee6bff35ae2394d3fcf760f4c3587abba21f29ceee59dd656ec7d4ed3ceade5608acecf0c2ed3df5479d6b01035bd8aadaaecf86f213726908c431921c232161e09a5515e12b001e78b0ec0a65a77f9bf2e68bb0d91b1a3b861c325039f5c79159e4bd2f05fcd9dae31cc42bca113d6e458583b41b787a81ad2dd008182cfae55d1bf3f5b8652a1ec566fec8050c8a30005639dbe3607d48447602a0b8e293ad546c29bc85d0a7ce6e8baa9a8da7e06fa26555e7b07e68a0e9a2e9725e8b7050b36af7be61597a572d879173e32e6495a539acd04d6dd72ec5ed031e2375ada160c388823a482149531280a4570eeda7d8b338e2687eaf6548dd4542b25bbea79fa62003e4b5ec72bda87072dff72cc542fdc18e119aec6742b9a50dea78b495f744b3622161d3fabc9a8ca13b19355b3364638b061c95473f570ebb52f9e7074dcbc0e1960b600ebcb54c0d76b204e3214998c2153ae598730b1dc04ef95b951e5e68246c4e6140221ff8dfa5486b69fe3a809bbdc8d4e1b1c5e5140d25de77266191f780e9789338c508853a7e02fffc5ad76318688f401b3226a5aeec19bbfa7ab8843070aeeeaa3283a929c2a7f1a8d9deeee4f36ccbaaefcbbec6f55e0a365f1f2743573dac87475e390141311a218ac62e98cefa0c6feb5ce325546a0b80f66a7cdee0165bfc992f576e49d72dd06e115c9b0fdf80b26619fd47cdf2cfc0305831252bdad3eabfa97abf791d4eb9a231e5f4c00a64b30691e81d340b89ac81b7a6a04c75371e7f02398acae8e94fa97e96bb25f3ba5316ab158aa44dc4686c1100dccbbfb88b57ba83a17c699a725abb6b5fe9b8f2b82f3af2780a014224585df4062f2d01ac66b6888132515ee48b5196f79a43d892789e670c70e4135aed215aa164afd8b526e5ba05125c2aa4eac78ed902824b51eb6154873b627795303f3e81d14358efd23abcdc56088aacefa91afe300e7b677c573fc5414ed6ec0104f88a5632cac96ff365a26c1efe4bf31f1b314646e7b75c4269394619f48d561133c07ba1be6124010316191a7ac8df57d1f649863b923c4cd11ced1afa12e3cbb6fb595405e4cb1fe5033ca02707239ed334638b6e514edf7989d0a70c79bf8db24bbe35c155bfffb0e4c0e75093a964c9672ed1a383adcaa4ea4e59a91e5379721e9b433b79850b728a62d1ba0cd4b7ae525bb85bf07ecdd1850e5c9ca67fb2a6f0ae10f77a18a13a7009331182b47aaa08f8db4865681fd27f0c3fe283fb36028ba733efce31ea690a1b19b13aa58e45da6c9a4c8b62f6c51e02b1cd60d0a1b98b4d78f5e927b3b6ccc645e82b0a08450dc051a35248dfd39d5f66c889874d1a7bdb6d93206465193963524c3381bb91f6ee91d454ed97a5093491a2bbe510c9e766d75a7e953995403a7bb53cb1c070d466d769fe6301e989a80b5168cb5e92cbdc3bfb0b7f07ce691fb9611ce85c56aad5e378da7e11c439129b3d970d09ad06d539845655d9329a7624a0a4b6ba0624611317e0498161d7734ea90cf41e47da3a8e7ab45a02d3b7d1f13dc90f6160c08a37c9db68ba6c5eb1e18d0758ba1a0ceaf13d57babccd782064ca64e47fcd23612f3759784d8ba111b5d1ab649406a3d778bca8a98a88d54a1fa890d36f92d93aab5a67b8dae33d81abcea28ca4070efa23e2ad7372abfb96442ba29ef09a538fca6a7ff6e9bcab5379e4c5619b89ace3223b32b7b72754fa7ef1cad80fa27e7a3eb9d789809f81d264e04caa5d262a764b3e19252d202cb72ed7aad9ff2b4b0a972407bf1d35c3b437d4754254c617a8c6a9c176b5175fedcd040101ce74e452068ccaa2acbdcb852c005797ff62c01b749f03edf2ad908514ecfd5b3254457fcc009c2883589a3310dc14f1e368980cb57dd4c514a4b5c14c15b4e39ccc4d1d0b35f08d14a5baf9a42f6552d87e441ab1b33a617d5db835ea660da4950c9db393bf9a4f2b7be68979e15f6fbf5264e7e247de11ba140d38d209e1825f748e14596f981441bec1c61460bc5efa2d043f681ff58cdb9576a5e75aaa38e5ec01c19c9c0b1b38c138343c157b830456862d149c34f10db79368c9012c106f5075b5d1b40880a1357708a7db8d67fa639255115b3fb62fb9cdbf37e0aa4107e7af3cc955eda8c2b9520a348602577236407a981c7068abe46af19f1ad25af926b2e4d896d15824603de60d7bfd3c72f394ba3af4359f6004f2ff9c0d014bb1cee939908ad20ea489811c442dee7e9cdeadedac3013fbe4e729e22655f7f38dceadc766ae03a860a4706ba8641ed16198ab8f268cf39746db4b0777d4f975ae58680c1caf24593d808e90a02676857bf55432449da125ed192714b4c2015781fda177188ab320ff4b7cf12facb10e18258b857992cfd8e2607ce4436eb39ccc6f511d7c5727e2711bad0f117861302b7577cba8c39db2fcb596c264704d382e93a72f4ea25f57ad87a7596e56be05bc711dd70db79f9d052c4bb89ac2ae137ec0093bf21fc282d66b6116554cd433eb1ccc7914418d0f802e465ae3849c5c5068c2698da7a5266cc93c94538bcce898534531408ae9d4355fc8bbae0c614f7c453f0f4487a8abe8e8f5092c9e4cf9eea8936b86c0fed4f7a097a2b3f6777738499f08be239903f2536abb324f65e849920883b38285864d4a2b9c113bb3009fb4efcd2e2848d1c7dae7d3fc89a3ca1df2d5d613be8193379adaee6be203747af4cfbbbc9e68afb7714b10b190189161fe72466c53f4160b3de2765c654fa357ed846fdd9ef85b068a379fee0f3920a4ef0d87f2b2c9777830e8d5155923bdf167ce20b99895b9698b00758c98241f8751a5df146d489cf195a9529b943993f7a2b892a555bf845c5756dd2e33ada653372a809f4b4ae6e5d16af86e542b02e83bbc8959c3e81489dab833b24ef253c389e912096ddad696a928339efa9f4c45da8a5e2c0c3658547f4d61be3103655cb8d5844913ca8570daa40489033a4c8062c811a59c68e99db15e8945c984cc0457747d4cdfb6a6b4a289214a72b74b5d2a43bfcc3111bf9e50449e0307da8a6942605b639ed0178d8f974e1b6efdc04e94bcd0f9b155cb9e6be60c0e2be38b3b99b722c44077ba7a02f4e0c63ff2477c83bcfe645aa0425d3f4dfc25afd775d4af92d9866f1ecf241d1ef8ff99c8d3fbcc6aef969e5bbc89485306c66a1f27df1c2149395a0127b8f7f75d3e4fd42206a1d850e72fe857a86c8694234953921eb6b5fe9d0030eb910e7225a390bf2b44a45cdfb0e43b5fafaa79335da8c43a4893530ec98c0231f7e02aea42bb22565275f72e6b11b5531b48b4212cfde7ec3b25daf7a72ff8129472d9f7797c4cdb9a03df0cf112041b76c13d6826eec156c5f9d0ee86648640f1006b1c57969911bab4b8066ab3b5a4e50a1e4a27a1a28cd1ef70d96836f263d2e215ab0751dcf510dc38c8e3de28b2880b49d4f9559f95c91d5dbb4599118802b8bea6b4f436c74e232e4094a54936191132d2fc73e5a44ec796a1a7d1f2655471be7577344d6641b5667f699f3badb0bc768e0feabcae879ba948c08fda11bf4958c476e41d74cfb392b9bb6a7fbc3ebe353e38808191c1711ac2a18abc905599fa4c9725220149ab449207052365e222640929a0980ceb7f949dc4e85d180d17d163ad657ab37622bda5a5954775e135b98f2cd0a85fedea07ecc4f0e8c7669acdd8a945a56f095a9cccb4a217600199c9d3b9bf6180827e2b601444cfe3a653d50fdca7c5a20c446a14ddce4c242ff58a1b0e6bebd62be96f31359357330bb0cdf77397a801159dd35b2ef365427863286d37265b254e5332cdc412ce02c96c2b9bfc9b834a80f1124bf27e0669fe2a491036694671f73b9f6b8b08cac73d4a500a103e9dc5174a5698c6aaee1d43d82d853cfc6beaf4ff0ceade0472ea7893e6efb9536119f6e2455466359afd7333dd0c31d01d6eafaf896330d916d6d7ac8a2bcd2089b2cb3d4f0b80277c0515503cf0ba5196246032a2b0af99901a4a3757b0c30535b384f0066d8fa7fa7c8a6a784de1d91d979903e23bc695f18e7b2801f53c8757a01228b12af42e40020215db6d722fbf1bbdbd41acfa585fbdf890fad4bd9ad83dd5fd94ab7952f19843041c74fb5f6312eb33c1bccfc44a447c0e5af0945164ebe0f0602acf23d83a036b6d7f2bab699cef79500653e6630ca20e7cbb21238d5be8c69d2481c80900a078e8549781aa4851f3ff4fc404f4a00296a45b1ea2a632f067020471a50dd136b0497581c5622adb39356c35c1fd6838d5a514f9b45ae8301c05123b85563cd9f891a1c352bb4bad1fab161eedb75bdb32b57fe985ecc77d5b052da05fbc3dfd35cc5e939b1de8eab4591f6d8acb668359b8e08779c1dbb2d11e4dcd3f0bc01acf69ab5ffad0348075e53b8fe28f9f46243a30e71d69072893d6beb3bc3f841c44327cb437ebb5ebd445624cbb266d9bcfd477ee684e3edbc863e6a167ead0d25afd5cc268e533f3d601310abe485aa7b15e421d641bffd6ee8a7038461bbd9d2fc2eb2ab61738a061b074b8f0d4040094ac40468d9d6729b0f181a69a63d983ff4070d3b2d2aa530d27dc16cbd698384a1792a67ea647011b143a2eb52bfb0d3daea1422fee646e313a039bb61208a400b5003bf16ae66f62f257af61e86056dbe45d710731d42de2d58d5fbf18e8242d2061b05c468bc41941c37b868a5acdc8f2772980499daf10beb7c2baceb8bc6df343aed6b2c683cd1a7b22539cb67660d966eb4ddc09a83665e3750e1c005b9cd0216d17c4afd095c6d527458f991427dc6263f444ebf0c41063ff5d1d20d3fc924b531cab2f9191293259f729c2e1e38c3a3799137ff9cb8d351a69a34dd2e453ee42d8dc574b66f9b76e74bb3019903488587bad1ab53223f5674305e75927c196f0df534a97a16435e4f05f81cca3cdf55f1686ae3e779e7ee746d559627c55c57ba475836d6a318391c713d1ab7d2892423a3dcd621204100402d3c47e2b1a7ec4292925f8dd7c89e5b77724fdf107c5cec04e2f05fe9ed7c7479d5526905427d57e9ae02360a599f5b8afda4b139b99a01882204147c980632c6d3f99674c651d1395478bdf3c9972f2b625b13f197b07bdc448344ff6c129f3e02c5f83873c928a9f213e2c1dce42d7e62f9dc7679195551812c0919894963219bd151730ab8fa85cc82b87ef41771ef0ed059b13de9ef4c7980103dfdce2d2d5d2a195e6c998bc8fcdb27c74d175be775fecc073ea08e5555d21c4b39ee2d1d32c0f94f55ca40239dcd6cd106c00c8fe5a2e80cd960d9a96bbd827dfe759835785d528ee9b823a36df594c3b135eea4f1f357f9d8b95d69f152aca730ad28e0407fb4eff8ea63e09f1d045a6b082961af4f34f63e980b4d786097c4206099581658674e24cbd0bea7c8f4ddafbf2e6ad9eb91373dfab5ef3ac654d52afe2d691a60e5ca4e6963be3331ef6b682530d9cdb5f2e669ac94a679f28a0fc120293790be5dde04beb4dbaea5548aeae1a64e981dd0dd74b1c5e9693df25b3e1e561f2389323dc38b8200eef0d80fe496cb167afb1830eaf3c74c7a0fda241a7c81a27c4d7a8947ac2f04eb53025a6dac1e5ea27ba986cb88fe06ed71a374572dfb61fb9980d55473413caf6eaed3bb70e2750800da490a19340c0be84364498b192c9d4243f695d3e39ccf588bcb2e009f289a34f19b2cff13b57135c4d906e0b5186eeff5a5871d61691c149d9ab0a89f1e3026ad23a745acf73c04c396272babb50e1a7c769483b0746676bb1aa6207252fa08bda6b5f9f22f1034f296a4825d432300f493cc09e3f17ba1126de6f66b95567f4674bc3540783ff996bef5123001be382a57e32ab7d4be22a01075162024439e619f7cddcf919bd909d9c64a0d8a168b23a85c4708c2f6ddb948f815ed4adfa09a09a545415da20239e7dd2fe140205d933014e75a9040f986d32550721aac38723d8ae719e3156b27be0c341dcdd190675e88f051583d1a81f09f6f112c7facde180fd140ec3bb06af5472236a72fef3c36933c3915e366fbb6fc2d71765984c74708b8822a48a5aa253de526b56b50e5f57a587fd590e697bcf182fe319454888ea4770ff1b219257702fae9f6ab88e88684db357b4812cc0bde6566cd155773e4a345fa7c7e712d80b95a01434ac101c17170920c309d666a2c911df280e54c5e671cbdcdac48a7733f8ef3129f4e9f7c95967094bcc005f0476cda988f93cce823aeb40d68818d9f4453c85fa94262756729cc9228a29cec1c5e182e0c9d1fd3c1b49d8a9fca6d3b650e8d8e25f5a3fcc1f04afd17b9f31e604f96c61a97672933991e3e1be3e9861dbcd36ce579ec7b33d7afcf8b79263b1611d763c4d837df4a3c3fe6479b3538b3a82f3d7b867bc70de7652c87e525c115b1a348f6da18ca5e22ecad3dde9c3a6e99bbd38998c4401ddafa0c081532237d83845d67e4076c3e627465c3d8fcbcba6394c24b46ecc831dba1823535653c57cd4aa515b2f58d487f0d4b50ab45900e285a9623834f83e313af86e5f92b17e88988c14d7146aaa9c54d634ef2fdd5ab87b322474afa673dc41f5bdcfec3035cb914876e4c53270dd7b2611fd6bffe9a35c7ded79131a637ed0f7b6720c0fed2048ba2daffe8614bd51c21a642b7187634c551faa0ebd62b0a411b36658a670249ca4cca68c687deff4eac565c286edfeb5d8fbee351ffacf09b3a91addc06e7c5760fefc3224228a870d60e47e673bd0145c4eb1f43636db1a74255fe4765414775991b5e2430d2178f6339d9dc07968cb5d2007ed2271c4014384fe8ae71d69673a361cd6931d3631cc1fde388ffa2c5eafefb31c7c564bb337bdf3ec977aeee5fe457658280e32d694e7e4f7a067adaa6abbbaf1b4c7a697a18040ba266cceeeb157a7d739d690530356768d9cc61dfae260a3f7d72d8e005a92c6a1a6717cf0f09d54c34082a700bd24f62dd85ae2c4b85a673cf7b246010c379d265c2702386ca709233cb43a2fcacb04056b6bfa2ca90dc85a9e8570b7efa49088a18308d4fd72afed1d54394e701700e24537969fcc27dc8d5f99e9f557136ebe4e67f222d61f251e026597513d9468abc2f52c1b6524d81d102953240f8e022a35e542928a3987f2cc7f36eaeaf8034aabc516552503139508cc8bc0bbf359e4c8bf6000a46a79bef93584e46b0d7f8091697ce2dd2ba31b946b1822b9502ca35c95dbae3d4ee595ad9f3ef507b6f850c6243632731d70da7cc81ea34ba055e0a8cd1ec8641bfec13bd7437a47f30be797fe13b2655bce367357ff0603ed6a14b758dc90979fc8bb178fbf6ffe205a22904a5b3931162de7d77c8360ff34715cbba614e4908819d4264e4667ffabf658a8b1a69db911a4d1f9bb7a041eb2c7a33dd89bc64d08074c7d0f9b62b539d7e1d5523aeefd51b80b8bc46851e8c96577cae33263dcbdde1b2b216d1694abcd4f83256a7c43e0c1967df22c76f2df83079a870fafbdfa05b6e1c849c8636f75b44c81f84d42ae4867d8f568c224acdd54b938bf48ac70856d7889bf0321feddfc0173c4a9ca2b63c0355b6e2c940a560ea7bfcb81801e184bef577ec010639e63c6263a81c1533d331f678591ba4b6b6a3fa74b799d6122066cebf98ebbe19281f5544255a24f2acf889a57b721b5c9b95c9be9e4471a2f20aa6d18fcc580c4be28825c9df81dfe57a5a41224cd31cb533ab66cc14fe89ef55c2dde7e5151b2e934fc81138db524e8c9767c8cb7d2234c5a06da749e22444e875b6c159f4e25753d3669976d6a9f23bd9b46635e33e24e6707ac2e4ff1c64d74a61aeb1c691cfd884e75aaf1e75384472b0de7402e3d6077e45f72e0a0c572cfdb29459dc5ef1ecd99fe67b808aea9a921daa96c1a93bebec386a31ea42a4634580df203a409dec5b402c77168ea5e3395e554e2e5870291b7f8a3d336995ec722d84bc62de744906c4b7c585c4f6fcf95147714e754bae65f9af65a7e62cadd6a6e044af08bc0af57c608a4a402771895a7c7b80db26383fd9ed00cc48197dfd0b87b4372cd5496398726f14bc1d05267025086ce5b9dc96d50d288e1623aaba97cc6c4b8f41b2f9b34c2133b4f930c76f8f5b821865808e366d3ef7c30e74028f58b1795383076d5e44d212910a9c200d52da0e6feb618131a264f1b7b0909440ff2b2a803d9e6c9d65b5c8f48da87412898fd7a3378f5a4f65011c96fda5765fec65c59774e1e0d24a85af7d30e536d8c5a94d21766c3bd73741b03e35d23e427f516d79e0cd799bdbff1390a49b7e1e7af94d767e317277a5937536e3272ed142c14591d6748d803a63f1f8c24549b2d8767172416ac0a6cc29c66853271b2d1aef4c99717b46978af7bd7b91108d888bb9ed4bb374f1770e7ba375464c2c5912f6c36c429c22677f84479d3b611b392a8105717306c1d963c4dafd24836271485627b00325c1b1dad79f3d824c53030f3109e745a5117ddb83399fadacf337fb74b74f807801f6144119d3661da4c6034de7584c2e73db30fcd1921d1b75032e1791161b8971c86e185358dfd3df9843014d37cf50f91742b54f1f201ad6573aed55e02b630c5b9234563f30a05de4789a568c510f62b467f95b5165652ab44c046527b5a348cebd72c1fb216bec37b30ad0649c438c54565812ac9cac445f1051a3f1cafb7625283506f6a74e9532cb6805f168173e0a402585c3b414213dbd2cd45d62b170f8f3e0b4f9b6172e354e6e23bf528a3be35ff751f3acb61ff751d28153271d963c8c5dd970f9cbbbc3d6f927b1c5f1acb3f72846a3fa1f0f0104e27517642e1dbfb89967fec71fa5c0a98d6290ad73d5560d5913cc7fcf0645d6e1c1c6fce6af2a1105b8494dfeb4eb8bcf8460c78b19e0e1ec13ae54ba1180d6b657fafed95ab2b617140d0406ed4e060843d4968a557632891fec32caa899b82e32154cb2cbbb65c752b9ce0a2883bba984852c1384d3cf9a6f7c245afd7f66790dff72afdf2202128540c0918cf602c124d31b9db4a2fece932135bc1353a2abaf4de42082f0b97bb2d94d55cf9eba89428639f551366099765d49b5ade8073cc11e4aebda9ebb85a5cf09c645c122d921a1feb9b850d8b37110eafc04f391893524f30bcd44463ac8ac3785c8baa2b09bf9b4de1df901957236c8be5554465043a5ee0dc5428ba7105682e965f188af1e81e52ac5964aff2e74f81d3969d438ed75ad91d74a725dfde6dc7de459339e3f5cdaba87ccb77569666aaccf53bf471a27bacf2fded1f2a1601f80153b91e7d92b697eaaceb1bd45e5ebf5bb91256a3ef1600fce99177ec37d4063f7189a16c029a4b8042de962adad1cf3ec6656f0921bee3096ecac1f053e264fa8f1285ffcfa8281764b9434c422139838e72c0fdfe17f22ae109e7524fae69d2836a618a1590e44af02cec66c191748c6a8975ed01a476c2c622a264613fd5bed280e3a29f81b414423d4efdcdfc35c4969cb59e32078a7166dee5b528f5fce428c2ce46840320b17d5414a42f316a10b305ee1dbbf1b00b04c49416134aaea7eca59d80dd0bd0b0c0d27b576156dd6c7b6efb9cd2866ba1736788a37f57fdc0302a1fcafd45cfa10930bd6c4b433315423130ab52e38aa3748a4e9d2c01a81129ff9db71a9a66b73528191bcd720db1c5ce5df9e4df5b902fbc79906078cec6c6d2a223158803f87eee69317ff176f6e811aaa613ee76603c8e2d7278489e4c84bff2347e0c02e9dd560cbadaf7e7f905554bee518fe413ae66a63ca25c26312ebb555d964a245494cdceb7996a70fb09d42d2fd46da714c334e048d1a9f187e43e9d1b9a43f62f92a25ebad7827189ac56584cfc9b32f02a41c01f65e05e66ba9ced7d75d27badb47b487d7615b0746504bd4cb93e04915d627a85f59246319ac4a47407ee15415c7e1bc14c2233b30dfc2a537f971a04f9d7ccaf4569e5a24283f29ae441c8c48cb934f586edc8a84dad93f44799faaf9a59c3dbdfb5f49dd377726abb219916b405746beb4e5bc180463d0b7617bf09886c759baf74be469ebc00c40f2dfe6eeba0d6cf0f6a60f377f6ee6250fbc91feda737c13937890b7f2174d3591a1e533a500d19a7ccfb138175ef6b7cb3abea542528652e31ce83da33f80e3b3cc3753353748f06fbe49f0ce30d9858e273c625cd55db0bb733c9103cedf93a1325d33e561e83e36676fe402384a7e1dd7e55e19c36b71aaca0dc5c674c8704cc32bef668b8c9496bb305aa8a769df537f276c01c51b5295ab939e61483d06b76a478c4f04537360a18b2f735a3a3f8f2b839e42465f03c78f3797a3e0635259b8ae01f2ab209684bdf685ecb1272485b10f3da62f2db77fd319af7d710666e71a308e24ce1bc5d1ead93cc4b17a2d0375f5ffc43afdbc5ab18b0fe16514951ba5ef5eea4a2ebac706113ce754e4cb5b57f29e14a74d2e1be5937ddf991e376682e4853ba2881532db6f8e24a2f9898145d8afa8141dabb1356d9c770cdaf7a47c5a4065cb1e627d4f374c6b35b1e412760cd5c02974268d8e0700b7c4a3b74336718dbc74252af8b8a255ebc9e9b3d88e083c7e71d9c28880840f1cb1f7fb68069c149d65991b72155cdda2d0e0227997da6b5a93dabe08fbbab7617bf8ef0fb7235cee41ba3ceb3706c32246ba3861d5a363399c887118ceb4ed1ea6ecf431bfa24fa9db8a304573b5bd93c901f1266b1a093193f9569b0e3001e4ccbdc261f588161894508b281b7156466e1fe4e5db07e75ffdc52ce3c521bfbf8a7a187a21993aca0b17379047b7b257e0e47f5861c83b6d458a1e3d6e2e64565ed4fc41466d1e77852fe8aca3f82e353c06d0af59cf578c346902489e315ff4dda28e28f6efc348edaba112b518c908689cd66bf0214c1dcc86a525edbae346b15d657a88dee2486be24962f4ef5a58d5a374b68bd8e844d88b28d9898a4ca411a581b28e4f4feac4ef4ee144cba461507ae20276a30b1685256c6438184e0e05bacdc87b29b0e896315bb1d4ec27fde965b8f3b1413e2619868d76670ff95723032ea009a785f89dcb199a3307d111180d87c9e40aa5a7b9e272bdd9ce8c19788b21f68ada7f01da250b977ac472e3dffdffdbc9663d62c5f2672ceee7195cff7ff275022525dd5469699bb24010c63c27aedfaf536c26e574cac9eaa0f4264eb176d189bfc8d3ba071d3e458cf7fffc5e3efa16e3dc9269a8c6d5cd75f758331860014e34d151c031c13f262cace4fdda57e7a4bbae47efd4235c11949577804e1d0f28e54e8f8560b81c9198a17207b704b04a96f4e08bc220837d5fbd5db5104a0aa483e223c6cd501daabec5fd8675aab6a5c08252f73d60299eee8af4fcc2af0b1a98f3c0a7f9f8950e7edbb00f7992195c9c0d7f3e97e5a4b08aca5fc4e9d56757fe368c68258449642da5efd68b02ae721f98248d2621b5e6334b4839ae2273386585d402db7e1f4413dfe35957e5156152327886c30cfaab1b012e27628b797dd2011b196393a070ed09bff8ec02b2f6d3070b754958823329f8ebfef4d4cb171a90aa224efeea246b057b9b3fc972f954bed2531ca642f37716d84e7d6404266b9b37def012116db37a2363a9a4c9c51b246f539fd787dbd5ae2895b59fe5d8c42c4285ddcf13e5dc16f20165e83c1d812e0708bd69b60843e389217add7384785134187383ebef7495c793134760bf734857dd61e1e8657bd70cae50e62c33b0d1766050805074fb9acbb738db335ff4f0cac7fd473f3764b3da72dc047f2be536f6f2d8e13571665f3d3bbcbf2b0599a9bb6a07b8f1caa07555bb68a6e1f96a22d292b06028489c28bfdc6a3862f40b352f1578f977a0ff95906e638b31bce0f330d146370370fc94a68e736ab6b78925af074b2e582d0a784b90de87329dbfbf71ac4616ad5ed6b51b26eba4d91163bb136f048f6e0779add77a0fd458a9d495363e2629cfdcedf910944b398d2980135c612637c0a4bd089575d2ec3b68bd17013d9b2ab8a2fce75d9ceee39271d9a5edf2bc012b11777fed56230455f06f5f5b332289dd112da9867e94c4117afc13d52bd17584f2ffdcfa13a501eb7cb135c7d3789bac1aa363fa2ae1e6710f8a47e23df8c2f9f3de44407b1e134ee89e98edbd22e59de2f264d26edf5af0c8b9e0b9ddc4cdc239548521dbf8ccc4ce2792c85ee66abc8aa11c5cf778dd6d6fd2f4350a514c7aced3390200c2dacc888f5ec1525017138bafe6f72dfd103a73b41cb0debaf2ac1381bd36c9ad3f919dede2fcd52f2fb2730ba616b4a245ddfd4fd30e46a0af711fbaed308f1027b8c8ad73505c15d63e881b2f60b6ffd1220b2a24b085aaf81c998cbc92b8e544ea300feb985fdaa23e9736824c6590fbe55adea98ba0ff2661173a93102749c6b5f6a70f6ed0194491a22ad6b9a0366f63fb99dc2584cde36d3aba844d9800d2aed5db4a6c5ab134ca6ab772494bb54911a29cb02ecac6a4e0bc37501bb2ee98ef2b68af8eda45805cb3115b8dc934b03f07bd84e59a9e38987e8f33c8349ff6595ede4f53fbbd97ca2162c850e8bff803ffe6609ce58e63bd1cd58d64b9c0a13c3a1fe5a3e7c3354cee457485c4c86230189484f4b5d48b9202d0512a75a3ec3da7e4c4bc6a47539c384cb39f56a25f5a205945aee53176dcfe7b4870b6bf15aeb638288ca0fc2be1b77c5f6bf2056b310a5a3d26cc6912f6518323d3322e28a3dffbc1438fd852e0a8cc92a3638d73a859d1c9d9d5c757e1d8cc5f7ec92e6c800160a516a098d6f051aa31d74e3bd3b3678cd98c1f9631e771edf7be0fa167cb986f7c5df239765d3075456425f2d79d856c0beb49a97b98f7afe649d98c6e706c840e9bf180e528e70327944afbdb3346e71cbebbd40e42379179e0f09bc3d8dbce161b6c732166531d7922ff82ee4df987a8137270dd251847733c619c4874e0d16a25a5ded496befff2b847160c73b46934ec4edb1f0bc137fe6d0100bf98c7e470ff82d0ccc103d9fa294a2de79b19bf904d90f690f7e9fa6e15735d98d8a3b4e635061b7d33a05010748c9d40566b4e86d2baa5ba23b0e1d62264ee563377bff7e8acd7941a15fd06d81725d0ca63f1d411cc52527c326e6605b1117ec121daa31442dfa272b3ed108cc1e2bc67b2148276fa6ba542f5d69f74f7c812be32ac750fde52caeee71f99d5c1daa531fa397763a1e0159e8b86593d4539ac0fd43089b98a1387d66009ee9351753afda87770bc39a6a6304e9b90bcd12e14b32a37e215134a8206f414bc853dfe621306f63a2e68369800f6680bf21b9677a9b0e4124803e27687ff1b58d33d26f901657443d03b0e1549cbf4cb545a02274c3f2e3230c308266d1bf0d9a76782109b7fc374f9b02fee03b87952d3e429e727bb61221f03b25bef57d706e33d08cf64984866626d9d673ef6e7afa92464d1c1949d275d671603efee090c2ebd96d5fb2c7edaee73e3148b425e68f7a032c4e79b56ce7c7c2e4b59443309fd3e6b382aae718db83f8cc52273b7253ff2b6636ef5d221b4833bdb1a4df46a4736ac07b5e94453354fab818614fc393ac234aa7e5dae32b6933f1795f862150198e0672290ab8692a95496b434ecf1a9809708d5425aedc6df8174c704865e9e38753afa8671c79f5120b242d678b71021ee1694b1984003b40dde9eb9dbd82c8739564386f408e3eaad11ef9c49047d08ebd48c76019417db32291d64d3edcad5e14f3fd6a4f0af0e1cbc7a253724d04d637a1e5e808edeae029a4a0e524888ce85d2a6e088845cf091cfde22d3c72a92d0d70ff4d42ca20ad57723dd310ff9ca2288e8aeb829edf8b7dd2ecbde666902d24604b41328f9b2c6b1f3b1bcef058417922c5de4f2d1f33958ba56d072da85a92a6e2c22ac7a8c3493d22835f8c2f6a8911e00cb3e8f3f4a0d3f54525998b9bd0021303d5ec227438830d24f42576a7f40c079c5a66b361eb43e5dc456311b1701e5d475b37ebe59f2a891b36d3f3a2599c63f3a3d7dac6f89c945b81887b0e54eaea72d9783baa10c8a607eea74678d8f4324291cb0f1f9fb4f3b7530108efab859319d611b458be0c44ec11344fa8a599ec7a243a03ffd684d667555e5d74b0a11a14f1e102a4a4a3781001adbed54471c794cc860dcc2e8dd8ae777443d73eab833a522278f540d8218b4bddbb5082c7cf1e0518a840f2b91d42da37379304e0aba51f4089ee6f8dc5fc9d9796d25566681abe92ae0b3630c725fb02d18e3773971da7fcf437e1c9b5f20bef0660f18b303101971dffe464de5c7c8029714884c3c1e9fb4965f0c51f30e5a59218fe0c92104582cdd4516a0f563b85600ec9d832ecbef9a471036cfcfdc362ba251e39a3e91cb7c4e61bc9a006710e747ba877441e4f96ac2dd4462794542f2ce6451f5aa53544c9830faaeffb81903046f03bc0342a67e4555960b07fa6803abbe213c9cfeec6a5c13a325f87197df99218f660710059545cabea3b321013a4cb669bbbcd65868316fe994b36259b0968bc972d94e6408e9d41d19aad20408f188452013352285412cbb238f8c9e71ba8c620f5650b64042ce823c2e991c63e1d550d56c08e954be392e2ce8a6478b2ca49b763f3c489c3658e1cd3ff77958ab20af456d5301ec6f06fd0e2d9bd9b76d7a5889178fc848acd315bb19e18151db51a448e2a961b2e708134ae10a50d9dd58bf8b5e999dc6aee8b9c27b3f47538736bd3704b4e13508382924f4c5bfa517ad69a583fc8b10b70109ed806ed5c2e3fd8771d6b3c895a494727fa152c955f78a24070631ada129cfd48ce1bf4a789fbcdc4af3f7ab61f39d58a5b46ddbbedc2641d87f03b6d369c289bae3f6c22af4eab5b0ac659d0572d8471d6d8445839c5a754d96118d4f9794437be9cb117f2fe398fc90f7a91d9f4d8ce0753a1a429f264c8b1450318a27bff105806c4d43f8678ebd113ba84aa30b3e7d57e4e1f0e02a2636c988f08712028cd80ff928a1ba1bab7740d2566299a23dfa8d0f1dc9dd2ecad118d2ed5f37e0568fd1071f517506289c53f2ca14a8a7408ef3f89673fd9a85529920f839f22038b0771e6c1899160b3cece52e618834ee7b8112885bb8fedc8175b5b0c09a4e1bdc113bd91bcb995f37e388d07365650ba580848853868ccc18c9a90142c73966180a4f56d121c4feeabacd7fc73bdcb7a623a852f6a09998b1a066e4f7bd737d22c1bd649ae330e89eb0393da4fe3dba902c8e556dc7202ef3ca2e783373d458ff3ae05151e5572a37cf663855d4b3dc89b07617877c3e139832926864d0f8273981834153661b5be952821eb0aa6959f3435a6847abb7e7320bfca336c5bc067ddc6708d1ae40a0f823cfb8c73e1257ddd962645b397075d2b4266240d1c4c18acbc0d670c4ed47ba2c21dbe3736275de696d461bd2f350e7dca17afa49f8aaa8a9b8b28a402ff164d563a2187f9369a0ff8f0a0420ee090d0d500bfd9d037e0d4bebc289b277446cfe120317fee1aab32f8de0d2bdb4eb988aea6eba3bd354f271ea683c00173c6b68c0a710890e2f7c0d636eac63ba4d10247b83328f1cac3ee3b82b1de5c8fcde96921fc9b0df3649a6bee2f9371b74e84be34058bfd577000e5072de08263e34e1c35c2ea39c2aeab583d7e5b6150032aa559f2371b94722ad1d0ec3243243e9931f8312e2948652c14604a3568af01121dacd89dbc67b11877f958d56d062c6b98906e19097d71e04d4c0e6e980322a1accb8d5e4c28846734d8e100f47206f63751969df7ac70ca6a95741c5a1c153d55be01ad7b14ce1194e68a901c4d3cd096e6b17019739b87d7a283ed7bc584c5b0b7fbc766073cb75bf473019d6e21bf6913739f14a772f3ead9a753642b239a9340043ebdeea12fed09f26bef388887010a322fe756c304ddcdffa23ca5824a481c6f9f7fd676e7f279d2ea9f22fc0d4b16b52b6fdf320a85686cf238d07cc6572420f77d5fa1d1b5b6015149058d6914de6ec5b4a34142e9edb4698ea9a777eda5831e742b399947a08fa5aeb125489514d2874cb0b6f5dea1e8340e390a2d96119e0206155c013838d5b0609076d37405f8461708dfd13a58376159f19aa0d02c5f0f5171e78c5ed6a17c6520d9d8c2e4de7382e8d8b28ed031244e6b7db008e24fb928a97f3501f1aa31c1257306747f9f92a7f3c52c516038c6ea87187f8282fabf7a57d0cecf55c0a59f926782946855decdfd6cc4225c0e8f17690f758c80031c099b266f542587c059a19aefffe309480505ec6e255982ea807f26f97b82049c757434d5f487e711feffdc706d588b7acd767b2339619f082b5e896211a1897dd167c7be24149b445d33dbeab44e45520fcf7a21409e51565fdabe9475f584cf0d30c44e4dac5d68787d60649583411144e6f6d4a856112d603591e8bd171557ecc3dc837b3eddea92ee1463e3422d9b6dd86d056153ee9830b8395060a9a872804343166e0d1337e50ab7c7c8d7dda43be5cadca78c4b40c01543d147b82887ec3451df66b95156f5b5f24c72cfb7d048b90a59ca0fb9233f23c88b0e67e6ae7135fb33ecf372a701d3d19b9704310d3e06fb025339a247891365997e5fb36aa44760eaf7e2fe9574b6235f2c950edebdf3279450dc90703b391078d6145e1a76810f3165dd4ef0ffe22f2b03e1e49fcad4898d8bcb5f8fcd357dcc81b9d5b4dd8d5006a439a882231f28a81e8a5ef66f3b3f91a03f581b18f3bab0026a1c8a1ad36d2aa7d1befea44da649a752f96a85d7702c957b56651291969276a02031a471fbc274df31a157c85bcf3a6ee979e1e1247d265c130c40707e28a238bf507cabc1ff766681b2980d6dc26d1f137346b0ce5388a528cbb33f6f09e61757d119c5180ad72e74d95de1060a75f60c2a3fb93d14859b35b26dbe2da6e8611d117e919cf9b8c4df90984913df74f09270a8e28afaa19b2ac34d294af5fcbbca45d1f409f80c60218004717a60cb241e7846358fcf545e3f9580df0d1a8ba27888772e1337ba5e45af45f9bf03e2d137173c08cad4e0ab4611628d509aab5ec354759229a3ba000af36e9b919b67aba41be6de6834acc4cbdf6df91c1106e76cf1f0f5341dfa41ed02d64aa9786e7756937392ab3d2a143c1b695e150906d363fb61324c3a5931bb29534c88459d5a34a4174bda8f6d41e9291d07d77cb8e2b3b8ea8eacdadc013cb8e23ab62bf3a31aee973b205ad64a77698ba3e69ef80b8a1e956f56236745d884bdbcff7112058879010e51d50820b922ea2cb0d6b47ca2abd67f0da746d5378c86dd0091823ae000328278e3b17d1cf1379db551fba4ea7526b5a62ec5aeff242cd2cf673f782acac1b7dbb503b986be55605c85f05fb483eb408e05760344b1153a36b44e08ef2214e6a4d50bfadbe9df220a71c2962acc1dbbb77a39869d3163b19c64439f114d0ac4df5e6a46d3d682d37549a775b9f9439c41a278e243e4d2613cf28ee7e661021ce1404a275ce118702ce2b19b9dd506fb6d84fc42326c497bde4e501618c351e571591a2a7e578a7ff6f80894e3e6bdf2fe2292df9c6067785c9190803e56a18a582e844fc0ca4d80d533718470aba30ab6fc9b284300f92409ec5ad516e6709623a7c5a25c590879ff19469cc7805cd64fe64b03e7fcd18e6c8212d49c506eed142f26b00e85fc77af169f3fc8804674f950f7852e3d01cd7c965dad318d4478f1aa031d9f63fcd0935748232b4756f180466ce8880cf18b741fd99f82974995793b41b7cfe58733b96c5b69832b89d3c4e2e6b0271a168d4a9c96559b3a4efe78990cc18fb08b9f3ec058213cc676c2cb4dc7bc274c2ca2081beca01d23855e90cc79af4e5f2400c43b8ae756f029b800c2e20091895e4b9ef5b6a8549135cedc4fd10edd6bdcde4570556070a8cad3e5f8bed7d5a71be01234a7c6ebda09a7aaf6e6ccae3e4cc83d5ef6a5c597a6a2df5b66b2a21004447e49d48fc39bd26297f1c2262a7a3ca46d9402c7bb1ef5c394d579744fd83c5fe2b1dac31a64120cf32e357899adefa22b2edb452f17053e9a95062c91177778ab3309a33f9ae27bdb56e66d7a8e1b275f6316f811fd0e2e2288230e72155f092c70d97f74c8ee10a9bc95f38abf2eb64531b9c6b69fadf7e96675a381280aeefdc093e42282677f345a6834fb200c4cfb7cecea17eb5e66d6f55accd66ec911faaf7bbf59916164211bdc9a94a2cfecebc606d97821dd76cc280e70888aa5c51c7e351b0ff466fce479a5dc0248081c56db534a90ee25409e4c84047d87037fc1685d5ba9151370900ff1bcbcaf4d700d27db473fed544762645df5be4013008793b30470e42a8982c8818634ec5ace9d913d0790063537007ed61da38a9b5868a85e0fe1d0efe0474a71af5172e54c491a73f1b25d76f32864d5731a6101bfb736c77e14ba7fb74a1191b0442ea4501bcea0edbe54f4c7a9322c594fd5e1b3308831b73aae7647ac0eeca3b2a27981d352a1bf65e3be19ccdd7a4b890e84fafb5bb053b80e382ee35e8095322318c13c38e9b49b505e9aafa67605bfeb8b99b0c870292955ba2de676970be6acf035b32119489e28d64a5f2ce5aa015e53d58db62f5c0fd249588c677c932e120047ae28764c7616a13c2eb45673adae222912340536f755c3167484f92f70cce37252416384876dbffbf5ace4f66f31c96e769eca561b024ce4eabe07e0973906cf00a3096ab0686f24bd9234fb50f96272a22f909883080c9990c27f40c5c62148f9457d46146b7fc74c40997a707b84a1d3a72b25c80900465aaa28e107625c6a447b29e72a7fef030850dcd16c959d7d304136492ea2564dcdf6e9c1ffc31bc25ac987493ce60e4f0b4428970559e8b97088ff91209145297ae599fa44d0b53473f4b298e8343b5459032d7c05c8e846171f2de4dc5303b05671bce9b1f6a8f00c50a65f7d77780946934b88c3f35c9e2291496d6a33c10ea414d9495b1e7941a19ec2435fe742adb0da9a07c8199c01cdd9136537534c7eafc050f89b0d82ed1e1e136d58aebda844d1ff9d6f61fb68962d4e7bac6b5d829cc139376b1514a03c6a0bd331a56794e1b3c9fca36c85bd5562968e4aa30c0f332a325da6de27bf30835b1719411393bf35c63891c384325e3148a64b79a817b95c201ee2b507698ad5a5fbb89d40b997b4f893261bb66f1f49cb2bc4e3820a7959a15bdfc7a967d83ebe6de601227159225498d9833a06c68755ad991da26ec8c638305baa45933bf00b93252f488e0362151931a74327de7a28fe092a1203cb51823ebed83e04f00b820cc68176de407f041cba3ac3f457f607450a3eb1f01d3a9fe790ee873ffe6e5b605042cda063ef22d73b654503b2ed2bf6dd79b392a72f4d4f8b637fb249b62ec5593e8157f5e151f7b0681d1d2ec543702194b0648081e970bc9bc870ae7068575867e293a12df934f7aab91b4f20a3c6b634823b98d00eea59f85c7a1c7e218d6abe5664fd5a0fa738abd46873a993ff80286b3e65f3bb3cdbd9d945494b0926877dfdf84707137ed099c074886e94599f1b2d9907e22752da3836665200ab1b3eb88eae36e75257ca18ad032662a68ddaac83f2b7636f776b00cdcdf776f893a1fafa45d01340ea8877c013b04355641114792498907af95455b38191ac1033398df6b7f023235993fcfdf13b6f6d0cd3e31031ceb6648b18326e0c0d369598cf85a62370cd14ec368fb12c9977a2c065b9fc7fb1c9120005d56df809a169c45b4a5f0a8d17c0160e97e26e7b0b5d426d0629807c18ccb69dce1612e0c852e14cc6f41112f856ab9fda20a346646c5b379cb33d073518ef9cef03a8a73a3485ac6f1c3bba19f9c44f6c793f739ee1157a615d8147f6ae520397d609174f7756d60aaab061aef198cae8ffad31cab5d0f076acd8f77b1fdc941146d5dc202152db29d6e77599d5bea06975a2ed1fb64aee5a1dbd2176d3a3a7de11e958027dce8bdd348df4e854f14eb6d3327230972a73c33cf33ea98b3c4c1e2d66c32605097a6d9b88f222ad573af24ea22f723e92d8ac1fac8935ab14cf0fd1c3759f94e5c0676029fe43a4152cf1446e27046bfa378d1b275d2b134985ab51885245d855f1f96ac3c0f2fddd25582f52ab50cfe57b606cf0680406e72b1621ad7d5ebf9f2e0b601164f1c65bd7b52050008e8449596242f5f2ca0459ea43313ddb9cd8209fbb191ca43c28918445b6b6a4925410056c332b4201bd5989e9e1b47d9a54afd79e4af702aed6e9421bf7fd112be3b461c4d3edaddc6ec2b46a9e925c30e53a6a419f229a4bc2ec5ee5e7ee3f6d18c1b155f3ca167ee8dd0af255edb12d5efc01682b4c70a10532dc3ab070ea613238a3a1c1941ef726ee168fefa9a93f546a45144967f055660186f099f86f96bff8faa5846d6ae49799dc6c4657a237fd3483de1faaf4f414845a8812de32693b80da2c539ee07864efa22f8e811b89ae79e53bc87b4e370f56031bf7e429e66f604776fea23376fc046f1e7f1ac262625357094a9cafbedc2508627c2045550f7262cf057cc2ef9549dd4a5930a9280042f7e9f0f069b7e014dd7700d147f2a0db377b200b36a98c526223803ae9f61518b7e482b55902f77cb5c41d7bcf8a81ea557826be6ced0822c79201cbfd6d6aabaa044b5952525db394e3c7d16e37723348d71a194e30f2efb5a55dc7acacc038667d129b9ecb55a880560bdfb34eda9a099c7aff7ff5a2095ec00e533f2db2545147344f95c0f168419c03e9342615353164e2752361ae1344cb2fde2506b2a65d2778b1c3228a201797506687d00554b82cb9cfb12d1b09f24328e474e9d033f5dd9c4cabf9088d7d0150212ef2efbdcdee7297d80e6014868d6279863e5f23d1ad47af1aac5c3a8c622816e306420c0b507ebbd62b5f93f5e04f9c27d971056e1af7d38bb05457fd2a8b968dfbcb76e62e3823fbbfff4fb6a8b5a3e373cc8caedc36086b64f7236c1b44152d55c46d3b8c1946a688600e53ea645694bf75a45b1b4fa947819a3b5295e95cb9f23664763464aebd1f75fbb54bbd97be5d7593b8347e595b885a5fa5ee4963cfe2244e291b5d21d14a009c9e968d607ad7c2da566ed02e72e5a37f4a8c207dd65bd2317d567db8a7c4527e4d9032309b20f92046053f3d60cbc902cceaf114dce50d8a33dea1c746964994109744a869a4018bb15dca079f8c4d6433834c0bd48d84dcf1bf0cd70de8d72174644fac0b38da1b0b4e3b38cfe56a73a3de183a923fdfef7f7cc2b1a6004760fccce85f6c8dee54953141c6c2c32948c573bb01c9da67f729ea6f9c7e8d2a389d3aa5fb0e12ef1ae4cde8d16c432a11a5718fd8d6535f4b758f0fa5c0882a5aed6e2a5a449c4a3614e5dfe413ccbc7e5d4890847753e97e4ad097823813f6052760693268440302412902a807e417399736bd15cf6c63586440cc0b9f3c46aa628de0d270da49f2ffecd117315f304e6b6533b3845b9b1babfeda40e6c8a8dbc1b6217c5093c4cba25d374113de850ab7bf58eae4989809eb11bf76de1d94ad9f5985d6e4a5266ce63905cfb064a1ff35af7f8a9aac42c0bfda0149dfb2851965d2eac8f406270708a2a94de04e4afbb81e507629e99d2a540b55807afb60bd573e477d5c987c415e0382aeb2ab62f92c72930245935a33d2550a4fa81ca1081a97e53fcf2d60b6b6560f257dcbf44fd0de54cac5c39667aa9fbdcf38c1bb1229b677b31144ec66a9dde03f7539986b7321c160d2a6df4dac4a96afb87d56f41dc1e4c03e91dc9c3d17338dada2404ba1eeaae281840bb03fcc2bb11776a8196dc6ecae18515ba8f0d62b0077f9dbc16bc4f18b950a53c5dc0fcc1abc7df530f51861a2f4d1a965948e34e3e3c8d24a3dcc9bee835528e02b5c76f3ff18d01a0ca5306e045b62d747b8e39cac8c0a4725b0cea7ab26dd8ff324f40e0ea59e0e564ed7cac75f1a1a09ba05d697823192103214d84364ddae0a614b1eb0748f699b6610fd020ddeb04b103e93fe78954ed02b07bb362f2658fa12ac3c50de87dd36d0a755a11725672873bcfdc5ed699a3fc666c29a49ade81b6f47aa59482641a425c071048a502fcb014484e278e2158f54afde142d8c039811a60710520ce49263b44dab8e062ddd40f4d4636eb98f1b2406daca45a17126c0d02acc6799042e40c4ec8f45fbeb084081f4feeb19f83503ee1b3c6c1055e121a72706aa6b76d8c1f6b9fe34ab2f51184bf0fe0964b791368e0972f9740d7577fc37eefd9000f637c85fbeecaade71d6a76a0bfcca48fcbd1d714dccc925c8f6e915867e35f6735ebabff40c173a4dda54fefff6627a047bd963ce8f058004b29766d932979a740bd8e96f8369ca24c549834c699453ba9f5d03ef79a0467afaa96574bc829b214f20443751a1378c7b065772784e212a1569fc19b769b75646b1428be18ffae1c6c89801c5f97f0c8e60d22e21dd634dea5ffc942b438507dd89ac3e05ebc6cb735b9b33a1f3d74c34caba605166f153aa44f34639887a8f106d64e9b8ed793094bd7aae1f1ecbd50519e333aecee696ba3d3bcf3564b5c8206f7aa871bfba8f3f74aaee640dfe1319109789a5205d349fc34986967d86323f83402538e86dfd59c1a21620d27a4d921547851f25f57ec78fe9bc103991045b54564142b0cbc0b9877b1523b271f7b19a9726e0118ae2c2520f755938b9b9666e8722a4cd38649253319462f16bad6c278d3a0b4415959ff707a8258c0031ce25d1e7235548e453f436e2943806f3fb8f339ce7b5e9020b2257159d6de3cb109eb71e80bc03957f34103a359c6639256928cb424e7fafdd75b09eb099dad54ac5970094e79ebf521edd797a199cb1a96911d0a73ca3ab547924ce1c04dfed29d75007ea194b3415aa899be6d83229c5c6ddfcd79e746a3902fa8720d4d37aed191e9ea0a5ed2ff59f73362de5eb1fcc86ba9b9059395f01cfa05ed15952f5a4701e0f2acd40ab5be06f1b5fdda644ace118c08b51617ee669f745b442d4b287f9ea1bdfb29c5c79f222a5dd9fcf313b1ab3503ed2d00274e2d600829b4897c00462296ea4401d41c3e8808169956509fc76604ba8864f1df9a5ade38dae4253359c871f93f199b666fd44a74df8b4ea8b976e7ca4da187d63c74e9eee6fef36e3eb97230e953396c705807c0cdb067cf18e812259397f4a851247bbe3021e4addc35b70745478b211fcf1baeb6666dd13f0d91e2e8b65c4578c1b2b1a88a7fbe210708f2090bed46fee4273ec3890e7acdbce847ccd76d76368a6c864e0e452d7ffa37c1203bbdb5b34894506d37ac132516a8c334e6ff83733dd999b701385d6a6e466329ca4d78884b3b4306255991ef55d3f5085c30d6fa4240f98f7bee70dbee9687f5a32c5feb1155913146fd8f95baa9b1a48b8241fc63ae7c11e2b8b6d0e1cf930c20ee58ef5389a566c3d730c77872085bbace298d1393e691c9bc43c94332f02944e38ccaad48477040d91cf8bf43d0ef0a0ad926478ea1f3221d4b4d747c1bbad6651c5580cf4eee7290b5decef5c51b38313e22dff0db30ba89876312aa266141a4798f617495d508a395f617b45d091fe0c7419fb16ed804d0be19e92231754317761a1d246aecde0c08fd75de91dc19603527b7d8338b40470001ec2a3e82740b86bd442d2c4e879f0a78702c84282a3708dedaa32e7fe131c0af43a544c496e839e050bd10ec1f7cc52d90449175f381b750ebe42dfd506e5b3c6a7caab0b920991351b1810979811ea8c3398bbf85a2e5ce2e5d5fe4fb10e0c65741756c2cf1dd872c9cf6bc8be834b7d3a02bf9f70da08c1917a125b1c130eebed35952405f0c937224a37140891eeee72f7285d2422022a6003c4550f6b95859257d71db1a0230bb1bd868858135241b1a91bd49329c0c3e4819dec764f92e446a280cdb30e87e97f17e35b538a2f41f993c6e48a6732b323e721e6446099e6c48eb1946b7623d1264a93e4df9923df556af584a6e6f43c3bc70466d463a570cd8a6c24fdd7555c08fc940f49abfa3aaa979af065dd67bba58342c163688103687c4e82909db4e61c1c8cbd0f66c0c35d33d9dea60d3e091dc36b9badf5e0272326c9ba7ed6bd80fabddc12f20212353b7cfbd634107e12cd0186c6e93b5686a04e5a3afc15c4502dfb4db7a9b9ed881b9caa2faca27d4200f75d6da460106a8ee6cfa7e033a0adbb138247f0d8add00b5944e3d743d708daf781c6e62de9f5ecdba50bb71014289e6077c031d532be740f1bb79c5675185bba278d9959c7e49880f865524392bb9c57416af80967b47b2bc56480d1078067f3db8df4d08ee97c232333cef9aa6d482b8fa3f7334ce648e227ee62b19c8826cd9be73a5e6c2e9ebf722de78c5bb9310e1841108c4e6f65ea70a617fea8af8d94ffe26ec99ce5bc4f0d27cae67131dc7e1e3f219e1ca7e1aaac08e3a2bea9a189a03e81b4e6ba4a5c2f54e80867cb67d199b4dce0f46ab9295dfdab0a2770aa917ea10d8ddf73f232cf1720fd06905fa92039ce69568cd9ad696df60f9a71d8eb4e5c5cf5953add32862b1b76a6fdfd63ec82f5ab7055dd8cf8ad0c705513900bfb9a39dbd63ba54c9960f9f51caaa44686848f238328d6f7054b547e73139032240be7ee692e0dc450f32b51bd64e45b0b879e2e8cbf0fdc60174aa7067e8a028e8ee7a514bb1eb89058f4cfd95b445ed5f629732ef2e95e690ab0b4bf809cae33373d87f8152ebf7e270b7ef30d7366758b2357081c7a7b7775e33c94cf11fcb35dbf421280bd56bc4c8922d6e64880a748183c1a9e719db1f6dab9aaeaa28371948dd51b9df2a94fed0a89d3eeda656d6f535ad514ee89963e0196dcfb3afe19cfa3f38b23ed890977f955933a6dffe753addb6a94017f81504aa11444455af9031916f14bdcb67c9c8963803b8cb6e9dc5e860a48edb657a518eeb03268ea35b587d5ae3e25b4783b1322a0820a5a56eef7dc779a72f36c929e543ea1d96067585026caa07c9bee8319d37bf2027265cd81a1e22be46f6af608a9e38e41673ee48cb10f43e6e0dcee707364b42dc0aad9f3fdfe0fd8ffdcd969f5212ad85b7e5caa482d45473694099458ff2e2fba8fee9976ab5ce3b123964d578ff407935123a2a505eda11a7fd866b099f57398ebfb75e23e82975caf952bfb86da57aaf3d8affcb2b42bff9f68e5a215f9c2610b28bf6dd85fec0668ba9bc9d2a551244c48235e8d90ccea0d31e5a5fe4940c1670e1ef90daa5353e600540e3eb0814ab191db13b890558316ff62e0805dd5a40e4f3f7cafc677c795cc57f97c80f6ba84233b010608e83d758ba57b03c291113cdd369644010cfc55844d90abe37e90d587ec56406fd7559505659822637c45240ce7b40c29163dda0e370412c46da9308e5e5b32a0785dece2f457c074e2056252343b7e1bbf73e76e5d80356005e46151a6141fb3e797d7e28e383434f0ba8b50b086fc1fe6e328d17c9bae6c3ca43d48adf52b09ff35cbd7029f4e656c8f80211a400c73fb4448e4d31f966af9a0eae9dbf7a022a48c11e2aec311decbe066fb2e4bf21be51b996ab30f7c65aa5c3a1406ca0ad905fbbe7d9eee8bbc1c7d9345c2c663c07710cb6c0bb47dc1fa81bc0c786eef3f4714c94abc1cdb5062166dbadcb2a4cfb34847271fbc1dff25e3dae1bfe2f18b3acba53831424a6466c6ec610cd09c7e19ffc43b2aeeeeccaaf0b27386d6ee73e158387e069d44cda5746a79e2c97ea8d778d15121949829aaac978fa5ad52b103bcd4690538f09e8d5e90558b6c13393d965c914484a05d85fa4024035f7379f8a85db2fa35763f402b7beaa0456e589713db45db9843e96cff0bb5421925f71534b447f38d084021efb7f4859e7876383071faaab0dd92c73b2acb1fbdb7d35d32fb48357d5ba44346d4e4d4a0165cf3b28c59ba410e570234d740b212e6df0d7db137ab03cf85c62a301b67d2a0daff8485853f5b0587d5d1bc3b0daa29139cb1179998312542dcd89c426ed4dd49a7b0cfbda474c890b2800e03888d74d8738aab6a58a4d8738b4e497016c954f763850c9607fc8b45b1bf22482e08f8c8b2019ce5192be70923ff1cecc699dda14325c4d4175d67aad4deb7d00e46739a0ab427572edf39160eb4a8fe92a2f14ee165f08e25cfa5e4826a0ec5b5a1bc7430de697002ce490eab255579af15b61e28fd8ef5bd8b9481459dd075ff52aaaa5aa2dd3ebbf76b83a5d8f7659d1e8670ff31feaf5078706c28c73783573d0dc42d603fabc796c754e8d548e7f267891b4cc09566f1edfc6836d257bfa59445992b2a3950807bddcd677d8183aecc28f27f0ca841a449a9e552e2364972651a3c10d7e5db1dc3920896048dfd16a81d4d8029c38c7d29905d6ba3c17f208113e8148f2c1fa362a1eff40568241f8571768b34c2a7d34d957ae1b1a8e6b877c35e1998b636b199fd2273bb0f61bc539d3c80eea8806ef64548bcf7757aea321933d426b9b7f7871e047b93c02c3ef38c676a5d7734aa6e2a1a51a9b13cd5af4eb3a7f48f32bf7370c8a5d4dc2ed57a875ba723f7d771f2445da8ef0f9b09aaad1d252f7a92fe204c21f235d257fecc8a7fdb78831fe8eb62e534e0d50d8067f5f706fb7303753688ff152586fac6df9e62f3e9a8b5bbb7eaabfca19f8642687b11cdba4afcea505a5df2ddfb873dd84013baf087cb3be39ee1c0303e27ad50269bb1b848024a8065b926e6e6a6218b98d87f9f5683b7129930e82ad93ee132c2b57fecbb29b31daabda04dbc6ab50e45f91ef52a774c64a13c79ecba6438b17227e4b3f882e09f7b3a2ac18608f6535138c95680737a7335080c2e647fb65277aaefaa0f8a045cf356e42d59f0f51408917cf0a488b121d0e84b4a1b832526be4d2b60d2d8391bb166bf70c3ef8251562045f9a9f558fad74c42e38cf91c90915cfc54d0604fd68e211c75dce34586d87286b0834d038cf90043dc67689f877461ca5029493473f4756d08a32774970a343f661a3d5ef3bd09028f02ae2ded6b675edeba055cb4895677452212e54f5a4f301067ffb7a718987f2197d9a834523954f9f2264746045015d74a7cbcef63eb94a8dcb7c9f6e73b19e7b9515565955ffbbf7cbe16dcd6f4bcc86a45bc11e680cd0967ff47cf12aead005aa99163794e007307cdc6eff524bd8044b6a47f3dc809a2009e8b5eeaf187f388b1ee0f72cf9a015cdffd0d1d0e373d1a53ad82d9bfa71d0c9212fa0e6b7b9c31a6c2d1ff09922008717db96ef6567450c4def3567f2759493db6fd916efcc08cb88f3e7b4b0dd422a62e92f59b19ac0b035cf8c48cac94f31b9ec466c3a3c582a782b18d2e4a59d68b35da2dce452a115c358350832c7dbdf92c7dc77a35a17524965dba6c375caa86681eceb9e4576937430c8b79b6882cd0fce00ad8981ce76753ede12fdbba58421c3581ccea33ad540acf127c0dd3aa110c1eae5fa277f5b8ed585fbaf63974b66fa30a8117e6d5bac438c70337c5df2e92e4ddc9b5c87dc3c95a7cac6e9d280f69a7eefa924e0f82f7c676e097e38ce6e6a98b02064c6658ff096eb6311bd59050278f1f8642954ef8b103e8a40eb35cb681067557eac7998eab7515e0946403a4756d592c6c56abf2c9fc5f6f4319b2e907d69b6135e2d5d8306f0cd144f56833b9266de290f0b7d599e295df5576a46c1770299cd18aa13642c42a80843ebb77ff291456a605ab3efa5557d2f5b7d88252ae2e35a97aeb164cfc36c30e1070bdd67e8f5e5eb4f926f1f79bd5767a74d8cf59c57e3460ccbc4bc75e16bdae54d497022310d06343554fd882ed6332abc60862a676bbf27c031765ddf97487202419c982d5be72a39bee1b9a09f7b408282ca67a0aa167b3cf46e042f9438d23d61ddca865a33a5a36a4e07c86cba96608bb294a416531505dff8f6747877dc5a6b78d83d97e4ec1830fdb1700197cc844bd1d4b0247b1617d979462eca93997c1cd00a4aa0979a627c6dbac375e6f6b386bbafb6037b33161d0409bdc58bc9e082c149b97a9120468c086a9bb3001e453c8193045161380b88d4d6840cf25d02bbf5a360284840ab57fbcbe79932bfeb03b94e7e89418072918b4d174a6afe8b3e60cb1c24a693126c0a2d2378764c52495d956539617f9ac62e8d70a23f851a2f1c96a2f5bb055c2f31a2d6d33fa784702a81b22c333952e321bb43fb7e81cf46fe7fdf3e1554dd44d3822eaa13aa2a2d440dfc210ac8e7e14f8257726fb4b3587c23eae47094c80ea4e99e9fdaa29296a799f0c15ad9769cad8ef2927b96e98afec682362eade2852d3498cf56ce8bc2566a5eddda2f87d91810581c9ed1afb449cd23325bdb89e10c884b2eebe410f13927cc33ca1ffbdd573d546b2dc3338a7542a24df22e0cca904b7faeee8dc292695ea14437134edea6cfd8d870ff3380cc545e6180084e0f62a9739d19e431b4f3fddeec200723e9d182a99fc3cc729106d303991da1c01d4510d7e637fcfa9736d967d3eb0f23255398181b29a4f84f8bb8da8b5e86a8abcfb4ca322f57af89992ad9e5c0cf2b7c4e56d3701eb726ecca9ba7dea416b458230cf70f946f9033c40df3671001ce0d8d85bef72566991b493b1c110104e2395b53b09b7d301a0174019157a3f31b03ccf1e2ed00c8da09a8fad758a9d8b78b5f082b5a037c5d58b66a32275b06c89dcbed694fcc28e5bcdc5ef8abe36ec804406ec030d5a62ab49d121311fe30939c8ccea9e03d847597b992395d23758a820a0d43b4a9f70be97ea3d384347b0b4f136b42bd0e102ee326e2a6eb04f07e0a512f633dd32d101f632eb2712a849af2d8a449fe38b1888cb443dbe7c4b9a7593764237528f7644aa2a7526f1dfde332cdd887490e83997aabc8d110c9f94d7cedfe5c4b917ac12c896617077f2b74e76a6dc45b5554a12c682e460ad5b21828f2965489f5cfa02985a709a03868be68ec4b22e08c2670879351a54e8e3573d254855e72fe824c778f0b52cf0ca26b161d618c262ab197fcc1b58d3e05ac43bd746c93241915b7767815410f08daf8e89e1f328b2ade6d751cfedf6f1391f17367ac94ab6b7b263c43aee71e71a7a528bcfb13a1964ddfabf9785f9e8135bc7246ef60f7fa9dae92f8a23f8cafb0b2a306ec9f71a6d011dbb990e2df113a61f2209d382914d87b043821e42a2d35f0fd16f25d630eeed6f1c95813febc191312346892e8277dedb1543e5a794d879cf3b78cac999c61eeb06e07c017ac9ebfd958c11fb2aa508001fb73e936348c92a9aa408ddfb698185fdb77bbebb967a6ce4c60e152390a8972331c04ac3a3cc864fa17816f7936f9fc22a64d6f91683f1497c04b0135d8be1c16f73f67a1261d43871d752a2f91c922c6353492d169715351a07bc646d995a6a9aade7042ec78cf08e5be0f9c33dbf1faec3252f88618e208837a29bea369bc373de636c6c2398b4a0429081b5deac34f34348039aedce44131934e8bbe7752d89cc9b323f3f2c6cd920f56e07f4082f49bf9d8cf265865e334b6fca827aa3b1416a191025c7b644dac8c3ccac1a6cec9545c53c9038e96f85cee3a27cf31df46e1f24becef4b5cd9f4b4af097e286850b41dc6c9b3b0c1c03be577ab1af116d6930b9217322e20610fe41f95c3a575b6b64747c1753895fcaa776d2761b6806eaae66bffbd3a358d2619b2c7d535a08b781de71ddc49d0c4425a32bc7046cc3106a7e3e5c0279fb9666377c7a8592718bc9ba892506c84fbe4cd2b3b0837d02b6a9f35d87ae7f6bb805e754d68fe58ee6889d9278c9067963264d17a5e996f72feeac8c8c39646e129bf9132f44f171106182ceb2167f09513d474c19a749a0bd09572d983bb04399befb2b45e5b56f545143440f206377a33de7fdc5a10f3134e55c5fe38d3c8d313bca7bf6c81bbb776a62984b6e3d36b8041da162c0fe2a7cdd06fbb75319315510fa8a51ab9c81a0fa313727a14371caebf6925175923c0067aebd05d2ec29c1bbf809b16a23d452c6bbb761cea3196b431de4c13d6158a93f5fd682ca50e88ba68bcfc436798c3095d0ceed1d5acd44dac3b788cf857c37613cf69afc229177a5d5bd43771e00289d4c0159f9fc3fa78b4d4b3e3177b479357955cc623d6ba2f9fec66bce82456b2bb7e5be4ecc175f983a684ed9ad74d32121b8de94396aaabec19835209599b2fabc58ecd16ba26d65d49e072f2cbcc7e089ecea03b4aff49def82dac4378bfcd9a5069e050b0eedaf2e61daf63f01608adcba00acf56236512b3d82f301cb5fe21cdd2731f949d15d6e814d4a2090e44e8db4557cc2f22e16957ad7651eeeb59480a3f321e8251590151c2873dc4360a710cb94eba5f02a254e6a8d0a69ffa17e600889d1608c9bf69ee3960d5828f17b5fe5ac8d666de112eeb28c00e50f8989457af8766650820a4df5c6b2ac94b8a51ba9733650be29ba9344b7c798ff5dc2e440598b601f79d9915cba9f50d7d671b56c00f4df5aa314f7efe6feb62200be2ec4ccc009447184cc8c98f93fd4017b889d07408afccc9071debb84ff761eecdaa98f3e6b312b8aa0f65857e7744e6c5a9de8be26561dbb9006ba91aecaf7335d0c22f59cf08697612e76899d0498494d082118603a2e4f59ca048bc5fde2c3fd499788cbe055a367ddb084a24e8856d3598d7db7a79e7b28a5cd1e2277bd04506111b41701d7d3c333aab63bee8e16cf459443962e8e71af5e9318ddf1db9b82a09375968ee0aba6b0088e1e77e74e9c802d1de34d76d67230a8dedb4a3658ca38e3fbf0a24fce3ac734d71a0157f6d7cc58cc6d5a608ceb15fb91b2101f63a06bd7b9cec97922757869acd0e96253f0c2a96c22d68c97c4b4ac297f3aeb25441d286dfa56ed06eb25984e8b1d8ef78c799a5ebfe24c3a6f7bb659c5b3b83a0b35dd112dde1fb74afa513e69c6a49b2e72a835f470d91a04be19541d93277ccd6e11f838726212bcfe2c3e647ef0238668a8c4fcdadd00c148ef96e406841ae5fb107b697038f2ce26e07a2bf2ed0d40f39345fae8da01847406b9e379eb613f64a7630943a59439289c1d03d4fca29192f7f520cb227c851337a6edcb75223e6f82a8dd0d8d5fce7f1cc6774d0ec96b55f870c31900e53126ee90478e1b14c6d0437e342e5204e3e2273a2159e96b37284faddc3e7029111ee2e416d9516c9845e867c2fa4974856a4f6dc62f60d575a0e9a23ead73476cd12f4becafce7ab4b3a51dc24d75fde7cbb0c3fccf0f9301d19bb346d43da9f263499a82aee2e8372b7a91502f5dfb6f4ae5c36eb27e6f1c7c2c8a13f41acf042dfb059cab81a884a65f07101534113165303c16169c303c558bec2fbe7673d778d81d103fd7c5f5a195f67019df4c2d60b1188685565d22c61ae95353c4d090ac984f5920e4b6a9a4e81df85c82c28ac670bca158705a4a6a540edb96aa352e19beaa350c020a6ba04b6cd2be3614cf99d6b15a735be015c0b2bef14c1326f6dd414964d04ba1d14e1b11589bacc047bb01bd3573e10b0c031bee2f907c7f862251913777e7ce92725fbc1b260ed2664abfea08e2d603731885a4f66fcb4c9156545722f03eabfcde86e8ae3fd08cd1b84687c6b2d75fca9c8f66a9aa54c098739946d84fe301674e8baaafc34a2aacf62a0bc00b7fde8188c9ad8402f6a48784e3b44edeb9bd01322e308db9d09714cb765ddc08206a40bfbe4b65fc0ebad15cb20adba591d83b96dc1abba7dca43ce556619eb7b855abc7386feec802f33091d5d99a26ecd41c6387e8122f3393dbbfcc9d4006ad217bf5cc53020a19cf00857c1c6118b65014a8d1c761240ec027a10a5d78d9a2aaed141fc55dbbe1b7a32514e222d6bc2871999edd96dba406ad60e8758cd142c2f90c6174cc576994bc571bcfaac2168ec81fa1918dc2fd32ca637f1d6f5c75df40ff11965ef4788450e85f502fc5efca8bb321bbd993708ad9f2cd6c535b4a437a3cc965520325b399653972444bbc8397fc044cdf30186ca94d62006ab45ce3b476b39731ea00d86e5b5752253253a4e5d8f376b67b2b9c683b22b31dff70b057fda404393409bc46ebd160b812b6489bc9a6bce9f36503930c547b392df6fa19cb6fb5862698584722a357b028f7ed29eddad89ccd9bd1436d839b6e0e77201bba550848d825118eece3fb05075603590ea9b210a89b8bac84fbadb05677160ea293a5000bf0872e7aed86a9196095361d129f3d6dabc2090dcf7c7532e2a3d51e845d1dc1ab70fa8a656a128fb1b628f4a206ace70890456890f7c1b6044e243b914c42330f0f7b81f4402de355bbf7b7a9a872438a030752898809825c57e9493dcfbd1f346c6b1e5e146408b360ed50088b89b62cad03cf11be026d69ace9dabe620cdd6d5c72c7c9f55302237e9d3722cfceeae92d6b93193f14d401253caec10bf3917b727726fa434be2c92222dd19f5aeabcc66d9855f2f2698c631b9a4a4da414488f2bacf94cccc1f39d94db044cababb6fa800f279d73fe9f241d6944218f29360380b6fea579d9d2518223f073abc58d044e081beb8efbffd11c785d252dc15a3a95dad0f170b87dcd87712ba7643f68810af4ada9f67fef4b26fa388969a0fd620b0b6928f0ee5ad31af71750e3a99e4f98015399cde1ef559528808d0b33012c2f70bd7341965b4a9b268c2a3dc6d9114aa53bee5108d618ae9fb607a5fb144e8657a9b28d8a7abaf37000c4e77573afb7a449d1576060a0c585a7e0d0a2b3006cd869f77e1cf9d3c9e6cc035fef3bd3a218d2e093f5975cfa3e2497c13fe380bdbf0a09b36482e63e9fba9c1b71296ceb1674a9b57a4ea27caf63bc1fb4278e96943fe2fda2996a4006e69dd9ec452f94f62934524aba28674e6f76383578f01dc80c317c531b796874b1e42e656311d75fe8769eaa888c278bb1fe7b5c52ef616255d975e323506eb251a671f7bcce499a92dff9ddbdce7647e7224c5936d944bed970103062d2264a50eaeecbaf6612cbc7cd48ca61d1e1676cc31a1ef17d792674c1d138b70615c7390c7166249a2b1511161f4147dde1bc1957d8a21ab28f65684af2af07958a48903a16111673b9cd4483ba32332085c6b067b29617d0109b6bbf7f524f4d580705fa765be3bc6d36874fcd554828a7142012221bbf34ace7a1854f3259a00eb1eda21ce8b783fc6f2dac180ee36ab945c1894a627ec173c22f38c15bfb25cebae4df47026d9ca096eb3ed79b00bf1be60f91a74a755a2809252551815716a80d862f07b6b31eb03a239ef7dde3e204b23e040c529069961d78d1fa966dd18eae43679d6438e340a7dbd82631e9f3fafb7e50f079155b02a27f706b874058d643602d380fb50cdda8e9edaa3562f6db39c4f610f77222a5a6d96e046de8d0449a377ef6d1947c47c610520d86e15576fa4b0c5dc65fb2385af7eaadf83005b38b1f2a3f49e058501d746f95a8955ab1c538bc34818784948f943679f0cde53ce9555367dba78db955812293c531b645a91cc3f70a0c155aaa3a5913f0c201024ba2f2a820064a2b5c9c3979ec69fd057466f2e3f12068b1c48e8d07d5560f76e78c5269e3218138d736fbc7f13728b7e142b1439de580152093c1d180ce6a41d44d93cf724c6b7388aaa0c72ff5117939a977eca26ce730333417c1da3590b152e228ab417601920b22d412b4d4fabe20f9530dde8f2bcae67167aa3bb1a3b9090859aa0bb983a2a51738f1a37007d8a4c5664d21ca5bc0d335bb6aad2ce9824f38c2e0faa3f54f1676e181e1ecbf07bd27673a9ed08e17946fd139a8c14d8de41fd29d874b9d369d33d7b53ba88f2ec7381d075c0f5c1579609ccc37d7db5fc2794d930cdc8748a553971ab3944702c123e999577d636d3818c347b2d347c9dfa5cb4b49930142c89792749d169ad63f9239eb2676c37d620421026b3267b00ccf37f14c921f2e1ccdac29b2b9a2f5681816b43968a29bb31c43170bf3b47447f5506383ee38fbfc8ebe7b49225b886ca9976c1130aa6f92a6edc979a3cede2dbc2b9edec5671fc48c14935860240f450c6b9a0aea86624dc295b67eb8f5a06b6faf7056df0b4d20dcef58f430416abdbe546f91dd6819e9f4e7d58784906748491783388e4737ffa5032265ca5b72ffb2a6b7dbe5860292a93f4f3ddfaa79b7a974ad022483663b88fb281586fe202ddacc18826598f10236321bcd7b70e98a96299ec139e91c805af1d8e31a1949c67cc49f92635ccc7245057618ffb454ac8f6dd02d7fe84a15a1f6e7a72182dfdcf79e9ff6e91347dbad34222d226d357d7cccd2008bb59385dc9041ea4c70d3599400e0451e01b1aa9bed7ab49035c2c039a6dd3c5dc561501136c12314ff76d4d3a51b61d7f0d032b0925642beca5eb119afb960e1550b1a57d6bc0792af77bebcd9ce6da3aed166273bb9ada08d9c237a6df6c1c3e2060cfb505fa5fce566e665ff550d4b8a3eba593257dd1806cbd86ebe70875ab12f57c5f9d2696d69d2923f0b5ce9dfdb0f33f775e7b1d65e1863604f29fe37481a0a3e193c4da6e7ecb75e0999ef4d79c700293746f8afe3413d6a256b4239f378ad616d83b4206ec6095d94e0d637429d2a5f5f678db587d4f7341842778940905812a5f0d1f9f414ed365f80c7a096bb26f007191ecd62fd9d035341061f83bb2fb6e7948e3fcf8c88eeb0ee4086dc8b6cd8fe952c392ceab3add699a1ad53017fe04a8546b83dc978a1e0c89616fb1254d847e84544c4b97049f48002e50bb8e2965ce5e17eddc4e82cdc219fa1e15dd4e6981b9137abfc155cd5e69d194a3a30c09dc114b434e21072a7206cba00fef26fdc3f22e089c58680f57cc92173ab108f02bacf142a845ecbd6ee2a42cc95f61db13bbb29a7498096a30c0b472ecc7f46737c2b7d8a36c64812f7813d3e75aefceb6ee4c0741116b7831d8ca8e5dea08a4d0f593e856602d89a7308675446619e0f25874101b9535d0deceb50489c9b8ce0eb60b52fabc093be4cb16a8fc9348ad9d773328440266c0cb0e98ec93773c4f1e8babf019eff126547439773a220a4b6417ef1d9eceefc1f33a1d5217409983af5088256431fb88883389c0a34be6e4a4019bffcb7612c3bb75386c9c7bf42e6a17e74ee0266adb44a9f9b628d87ffec869c4b9051916d272df78a8291688d157dbfcf6d30fc728c2ed6700a66573e25219e835baf4a45feba0596ce5c7a6a5e3c3e44dd23a0a045773d8e992a3c9135c509dcc72d22b2b19247317436b75648b7665d28e294c329e2373d2719f0658ef6df096340d4ef831891820011ba72cfb11c119f558d0f15b0145dd26d882257f8c6e461b2dbb68b59afd240391ca6e67659c3761696effa03bdf63b9f2de7ea8fd72e15775f9335d2fc6fc8da24c1ef42f27445c33f625f913e1c06abee3256974f1f7c0ada70c184587b6f94347e447ed1eb88e98b72dd9a8d945e7201eedd5f14d9b2611c02c35f798bd01c5f78b2c72c62207e5e0da24018c56e26029477e42e697b6b8e3fa1f4d7d7caf6e4a8f9ce81b1d1e575e9ef1e0524e9c403394eccab84bb20cfcf187ea8c901367fc14dff63fdc28d2b369a3c373f82a483ec403d8900fe2416d1b8369f665a53afc5d8f9649900147f4b8d49710d7511928d617e9ce9f1f6f82363ff78068311859936e0a144faff2da4452d32d0fdf9c17b766a9935e6b0750ad255822968718cd8f76ebfdc060bda0053e52446dbaab1b07ab2a541555965a8109b9613bfb6d52b20e85e59dbf87fb1dfb33d4fd69b3eb61df021b655c3b7b4fda951047e7c4982aacd55381500c1a8209ede6c354cb69d408892f227ff1a75ccbd6d825fd9ba02026c3282b5c2c02ae53a9db9472f96947a5dd2d7ac5af0ef85a887356394694b8734d7359ed6999f0fd1830ddba8acf39652f9a1e9f1b01a8459c3364c69e69610e8363919deaa4f14c6e704c819adad139da0868acf23adf8b30a96215d8baa63917be452303e967e5c2f8967fc88d2a2e76ef75d9d072c65b5e00eae22fa06bf4f22dcd8114e656ac2204c13112075ac4416bcd3e411b022ec028d018f52af53f1d535217d67cb0a70945fb09a19a1caf02d9282df65e8dc3d532eee1d1300c45d12d3047bed8a23d6a4b422abf8364be591a4a5d7e4d911fec3e48c86d57aabd0da733d0b3fb8905cb5d6d17fbd74b13a32f79a18fae6965440b8b65f592015e40c43ec9c81c2bdb0eaa72beea5a9345b7cd7636fc4bd12f4caed8cd48eee016b1a85161712412c64ee3d22e0de133d05c87c263bbfe480204d06ef68935ce61b34a12371de5df4da173faae0382fec1d7247ad0d4dc0b105d09c08ced23a2a0b2ff45edb29bb3d8a54493db831cc93538f78e7dbc515c85d1aa9c1c6bd31acf5aebb78777d41c58669fd5719e51e399060cf65beea42bc67ec904a1cc9353b5b5fef06a1c7585e636842f95cb695193cf334de41e19ad92d54bf96a2a6ab1c69450dfec5ebad6d5f71362a4fc5af20509781ab47189c3f1cd42edb4ceaa388b474b53ecf44cc6de51c0b710b803b723815734b76b8fc62e7557016528d892bc5b0700519dc806a5926bd5de9e35de586cd1de13982dd88c2233e856101dba76fc52478fb563387373230fd783f8384752c7eb1543bcd4ee661972be7c5090f00a0881ee3dc1e7882c9b8688f87e20d391b53a6ff0da92467c2b54f60b1686c34736165f9779b0882e4873763918c74235915cf9a7bd0cc5b6decfdbf60253b0770711b5db27695d19ebc06b9c3185e96e6b2deedc495df5357a483e37ea5ed49ddc7f5ea71b08fbeee19f61f11e1a7c5ebb0a8f8e94d481e8037f516d644660f98910b9654cffcf6797f2e3e4d67dc49c579a753a3e5c6dfd361aba95d5d7fe646a05a500f66f787e14d552d2feec28220e87b20f76a6e79a85bbe92b5b685e4c99d418391512d2c1fd01ae79288cdc95193648a4b8d273f11778e25c2f6b77fb1480418efad5eeacd9cadc1cbe1a9744efccad618b02dfe82463ed65971cb39c6254d10537ee20378a343fc19cab5a7f47db6059dce8f5382e8360e37c1691aebc9a6ae7c8a21334443955b952283f88ace56023319b1525611a110a0e8aff9e43eff2e89021a3a9c5961d61e1c5ae0a1f37d632fe7cb7bf9d0edee7654ab9ad00c2e0f0c10ddc0a6b0e8512bddb4fec0c420bc64526702c3e04d8da300e49551216ae7b7991184ae966f6e798ac02b8a7cda7bb193e76382793ab70929d213c424d0d219256fd3d0b0be63045fe15a3c63695f3902fc4d0750ee437d666157fbccdf6729f044608d4ca4edc5f72d4dc0502e712c6930d54f5be74a66d373185764fb40af12f35b118d70481938ee13a99fb1993d425efbd6746a6807d85bae390bed14c4b571e657d2793dd1332563d22d1bc02a453486bdb8fe11988a620a2931615fea35c7cc79a1983f535c02b48632bb7af8a6b825c7c8edfaa42345822462669984529497c626a99749c66d375705824fc355c0ea65bac68868e3b56af9cbf201aa6389e980230ea1bebd81980f6c86844878780d4e85de570de9d681a0ce5cf69bedeb2d58ba2b16b3060b8f6fa98380887ae0034c3dcacf0ce9c029ee81e0da5dcf1497f916eb6c81180f42945155bb24fb4ce8563fe6c71b6401731f5a1f9331b8f16c525e3a43a05a447a3bdc7f3e5bffe22f19bfd13b57fc1af70dfc9c8afa8585ab5dae88db95e993a44a08a7b5c1ed1fb169cfef0fa3cafd8214e1404dc9ac65f196354ca92eb39ba44367170f22f253fa6e15e6e56c229691eea1d6af11ce3bbe6c937fed48c9307791d23eac1a9720f866d3210145063f961c9f90884d3444014cc41d63c7a2d8a4d61f2d226494ffeb4cdd503bffab4917974480f70dfed1f71ed5a8fb7ca24d84a7241b8ade0abbb2d756e6084ed37a98da55203fbd61ca5b597ba4ab23a4fd4c5afde261c8a9f35a8acf9a8d095e8a559686cb2c939926e2eb771c47b07f8df9d6957ffcc0829c0bd16ee6c0948da5cc872341117eb57409b95c1c6e956b52fa90a6958278a47d3a64678ba21285ec184db6274902c7553865e53489c7e6d6b714b3eb822feeb2326cd60b7f5d34f31c385e84555299ff2b9c95fcd5935b59e5d21ae91268f02aeb1e882e44f29b457d6c0f4684216ebcb625b88a839cfc4da313f81f7f6a19292dd2d87ee5416edb6ad208bb28f30569ce632bfdde8b75d9713b5cbf8b7fdec60abc0ecad01a6fa93da8981864e890f7ea13a1f68f50e958f3cb731e45020d6ea5db15a7721c9612dfbcb6f67d4e03eeb46d181ae5f45fd77eca3f3760abf05f44c47ceaca66e56e049d12cfcc6fafe503f962913063369a8276dd272bb8862ebb44ee2f11f8198b393df3852e69f40b2db5758a34a95a97b679c8b20dcf874220252955696ad729bbeaacdc100648a1a16b21b59f8c1ff91efc1ebd99c3ac56d374a400a803b57d218d81fb09e5df7edd478ec799823a9ede45b2d22b9c34fbd322a41627499eafda8276f00067c48aa50e80fa5f5c0f9ad9d8999f1b7b5c1368da7e43aa894d5c75a20a29e62a2643968ef98af13ac5b2272c12777c4d2c58125e3b75530f4314bb2abefbfb17653b02244f39cc9bc0e25673abcf6d61b5d3d8da7860a7eb7fdd9aab0d1eaf385697206a19cbb89006d87d1b30c2fb45a265dbedcafaa18f77aee331d82effe7fb928b73c28ba774bd761ee8358e8f96c1413a564f00dba11ff5ce3f282c771312f80e2499c59caf7754d8d9ff15f09307704c8d4870bac4c1125b5cfefcb59386abc6856f4aad5b353beb48325dd2ac5c4c26bff50dbd3e37d975430be586dd33228d33caef0add11ab89dddd10fa57710570ddb5dfc8b68214f7003f148a8dfae5b932900d21bf6256fb4f91fde9e1b91f8cc6c0b0917650ff6a80b1186d90a41230d6fb03c168a5a38f1a75952410a7f20dbb668f0de5c1caac5bb067b3e9d2dbbc8446af5e79f92c6087ef6ffcbb2a29809bd351f92a0d1b51f2acd80e5b9506c67c2af95ce10d40e3c3f2c4f4c699437ba8c80b6d33e689e0135d28486e316c48efde496a0757614ee4e1f3b10a07150cbf9c99807a5a22e2c69f75b7a30c7a260ca40ced8c1cc7c800edfe792645476a4b181b005cc5e6b5f69ec64cc7a3b3c6d94d3280836ddc6dd6df0c454cd7d2fe6b6f7230d4c6493f12368028aef72b02f27db37f2552be1f96a1e55d6f3b88bafeb1c7a3e4b2b55fe5dcf2c3dedd0d637e6505a563a2c129cb0f799276228cbc9286051e0fc406413735cba9e53117b30dfaa8b3d9c0eab2837159f4535dd54878ea5a8998770c70f7e09ebe58fa19da1c819a35fc197400257b3c292480b00e69febafa85de0cc703766519cb327a0c6d37e34791af4f8895be7c4bb77e3bbf829c5cc6855a4028d13bfb6b3312b34981a20b77c6289cd3a66e965a25d0ebf38d913ba43632520881dea1fb8653d12addcb9fab75d73231e98fae3b50f90765cbd896e47ea4e5c82d6a7a298b3cf700df3eb0266be31d38530c094a75b82a70c12670b4e5a60ce377b00e8b1fddda434f23538ebe54191a67a29077306ec5eec36411722047d1e19db1cb9282474350ff37220a91061bc6bf5353fd92ca9a5c307c831146bcb02ca9c17fc85250917611c2b96fc2a3c9da2fca049c2f37424e98f515915a9019a279e9df914ebb3459c4be3a7f6faffd68dc25786c3ef1a937547ddc7d24eff101ba72048b1498339bdbc6ca2f4b434686fdc92a403a498c8238542d887e13112807a5e96e66f8a7deff1b110c259e66af2e09b891990702f5661025289700c616d479ee8fb0173e13b049be9e2ed5d5fa780564058588f06776d72152d0304fd1d47358e0d781b9149e9c01efd1fa3c1b81b39479adba93cd6a68463b31a86306fad5ce8a90c56e9990740f0d2bd6fb3183b352a7a3cffb8737e1fa2d9ce4a88a472dde1abfc4c670241ea2ae76d6a571069ecc5253168a0fc628696e3a7a3da30f807635a6c3c011077376db07467f907275d50b842a78e9ba4b012fd0c631205d7c6be1e2ed6c7984f8cda996e0040bf128627e815e52ee72e7f694ea0a094796aef55f792671598295ec0afad8633644780f534d0677e0f2f3bfcc19643e8da2203195749e899642429ca79e0aff227e13989ffc159a52c3da972ea997bc221dc19e00dadbff168745aacc4c8bee4ec18460e7225743def2cdfd728759654c5e99a045f49038e1f0ab67670f127b28754dedab6c534eaab8bf34f750bf8c8e6528014436e2278ab4a728124eb0a56098a3698dcbf46a417130c311aedb7ba7ee2f6bc0387fd6f3fd6fc7306c2a9d0d1b6723fbd5c59ab8ef45f7767712ed593be0ef9c9441e45b9d08201d7fd54c9d6a3a0c743cafb8255d445cad529294075c9681a19bda02bad7139563ed3fcb9799243b577609ed65208e4892b884941b015079d43177756e74718b0f0913e831cdc6694408dc3b3488c550ee97f106451f8f13634927974062f7eb07f78ba8afdaf9760c062ef38f3188d11906087681f0a6f019c34456ad8d01a27b75a2bf963e9ce231b25d3f73648168b1af7966f71b53936db50bb485c2ef215e53741ab1d77355f95c8f99d9e03d7a5afbdac9a00e09e5125c1445ddb2e9ddf3aad456df0f4a170ae5655216d640ad97108688c5ceaab2273265b4487d6ad06e31ee46bb5cd4989e7b610c7bfe566dad34530146d4212aebf8613e6c4c26f69a2dc0700a428eea448e73404e190a68962f9583b5afef6106adf235dae9d5d19ae7dd90004065422ff890b9113d641208ab2cd3448af1ce64acdb7e415e55e6b3a340155257fa7a14dd4d1719bce72287bd31a97cc86ad09c8e6614ecf84b3e2b7a2c9f160d4892a0cfd84e7095bd138c13a734c859ea24e87129838d5845e6319e20877b18af2b7525fd2412aca1a4b768e692cf7ec570acbef06d614fbc6fe1e58b574624c70aba9a2eb66e3e01591743fa59a210b2bc93a38d099abc196e48a5864d274ed49b3da702f3415815f77922e511b29281f434cc919f1eb512fd862e23dddb4d6d6c2527e620ba38800cd495eab89c991d674c14cf0d9a952238fb88fe2c216eb1ad2e395052eee61964b4e84a3cc750ad4b8439c845d9d716c17d319b9676c168b77e742df7a46e2595c85a8604c8283b36cdcd1dcc79c5c33daef5b728b03c8c8203d8c04e6a7f1d7571132968a1f848a646ec683de86102d54f3c452659a1fe2d6415c2eaf667a49e67435534cc1b807bb772e3c4ae2509b6b54cd387e661b27981191333e6a7e8f16f26bd291257127896c1b3a413650a913f675474b9e9134e86f400e4bc91fc1020d7827c388e6fc5a244b0b1077cc41ce6c0d5cdf1f252368883a68e3fb734e2b22680567a94ab700c46f5d76419598ed7b362a310d410ddb77db114191a9e12edeacc52d3a14ee72cceb5917c43522724b79dbf6aef0c9721c77c2dd15a02911174f6011a37527fcf914672f6ef34a67aefba1a6baea3dafd2a2de61260bd10e61c3f69ea7abbf1093180a0fe4862d1f46a7063a5b257bf91df3f1d4330dd87c726698260599bd7a4483c53c4f951f1f359207cb82628859f75c40767f7a1b1ce5304b8a2f03b341418df5b481c61530dd7f9fd00592a0e67154eaa5a73798d04f1f16c3c14eae9ffbd95987ba28ac806100db01b0ab861362b82645740fedfa642d77348f118415c4d2f7fad545f25e3e15713381987268ae50c62cabf58ac7c8482956b1d9566123d3d9c4abf7cc4fe39a0d93a782a2dbe26ae2a7b939cc23af0da0f9f9a1be938f4750aeba993023cce8969b091cfe74dcc031202e7622ef87bd012cb99f03edc742afdb0f1c7bf3ffeb45e8f8a86eba46db0c68e01efc3b242e4413106013d5767fe38f7e0d4e1bdefdc05cb0907737ff47fc6fed99f9ae3c84e37a723b1a33b08f8974f5eead1d537dbe2b56faedcdab035e543a74e8c238f7dffa0c9b98fcaba6b87d18ca8fc7ea32f2b34a7672a76cac1cb1aa77fbadfa49d9a0b055d05fd413d89b8b7f85305f12a4bbefa4781e231b6741195f7061e2d2d7df72aca6e1ce26eb352a3c3cb958c23613397efad2373f5afdd8b5d9751071a1013a6c016ebecfc2e3f9daededaa12bbe7ba6279be00bc0a1034b0e593f0ec830f50860ad5c7a92b9fce51909a914986bfb2bcbde2327773fcc1a2b7af29e75ad372f9bc7de4fba24c84d944cbb3248a0d40cc32bace0a5d78bc83befc059d9cd6177f35c3138cdd6ca1ed9ad7f30064efaedc0ddcc712488387570ed5f4f80c7a25ff848cf4d054899ae36b5f3c2889712d26f72dee972c45030ad70080c68495c0f87cce6f9cb880131edf19068965029a1040b3f54bbd511990eb7ab328cf37c97ec0be2a98eb729a6ae7249338b86320474f0e26d4556feff83c5379aa3daaaf3dc8e7f7d248bfefde94d94250af65c3e160a754c88b6b4c270e2eb1e15063e16a8c17a6f15cef1caf41c8a74f39334ee2c68079970b915dc0319bd9940f40a893573c4bae1dd081e787c1141d10395e091ba5340e4f6bae219b8caaf9414fd6c165a4b7ebe293b66be8d1b9acc236c5fd1d98bba0659bdef0ad2e26b8e4c81e26c8d54e11aba206da175f0d9e47f4ca6153dba4c43a3cb27bbc016d4ab73c0247f08643aa7a7f0cae0dd8bb093dacf669485b2e5ace590e0a19c5fed8ed7a9e18b2bb5fa859fcf6b9a72096d40acc986a2f39178d5096b9c40c452df0ab8cd98dc3b4360c4636e0078652158e59f49822dedcff6d8497156b05de62999ca070b22e061303749f873e5ecb43112126e1b1d7ede4bfab6cad880ce451fc1b7f904dea6e5fc5dbb51c14dbf6a23079606420bd25afcdab254172340b613509b550efd7cdcb5fdb6a6c1ec9b5bbafb73065dd3bdcd4a087699c87c258bf5dc86f8c7c937d689b94c49ce3dc3ceb9c524c75fb535fc03538d16b710ae2a3ff6fdd4021310bd560f22e04f707a06d9fbd61a552cd4c7542957d3845c532275857aadd9b4223e2dc3f2e494948a1cbe60ee2e4a23579f4bf48747dba94f4ba267e79e57b4edc1a8f30a738964c0eec7da803ec3e6217fe74ca691419622ff83f6277b75c4d6f41dc7cc652aa56d1b797dd814240cb981d6b68efd12020d5c58428ef3775aa4dfe1df2cc7cd1ee70d9631f55fb68b47004671efda4fec999980086393f86e05902b8c358e9a13061b485909d337751b4366d8cda342fe116d6907658a23a8075152f484adc9eca7add765fb181afa27c283c4ff72332f037e6b2c4347f4f09f736a60cb718a902c83cfb4e496de0380f5d74db2caa3f5c2ea953c23e27a7025a7820c5030a473fbf79a3295fe3730e0b5735ee5aaccf0e7dc94051c57746bd6e103e96b452f03fb63f13010b1dbd7272de585ebf758d2cc2d26d8bb90bfd951d9f5120c63ff731a87a0970bf12cb8d5567b94ec309695101bce09824279601b0b2ac6322f995ec905881671e52bf39210499e637695be160bbe7f6493c8f01b558f097532cdcf7ef5d747e06b525ca7ba4928a1e0f67085611fd14b98a6821e1e305c7d16529f3179e4c12bbb48748268496c492659abc9633463939e2a42540e9d378834f8eedf6d20f0d9d59b0836a172d2d292a7d9912d01fe8c46250dd157c652e87350ae0a27112ba4ccdf27f8afa3f9084dc03d4fb56ebcfb6d144e0d8f852e8378e0df383b4deffcd0e7fda384ede98ced2c63bbe019e799eab91865135a9b51213e267060d8438217fe363524de564f65e7ef50a9403d9314dfeb97071a96e256acd0c0586e588d8a45bc50a978291b3465a9ce507f6b08210fa34ada990fd5291338b9ee8e24a84caff6bad4fce30aef6272b6a54ff48f4c52f2845e8cf162416dbef1015d58120b2e49dd2de0d30d172a5bd1577c9aaed5333d32741df9d199042c80a3a2403c20111e48b39a70663f4b9baa5cfa7164c79cb9a34009ce0193187783428c574f86b1b62c1b29b82e8406710f64da17a0934d960df73113e24ec73b9de8ec1ba399dae7dfa366d4d050dc6f945c4436c77d004c0731f60bfb5f544b71861d7149ab98105d74a0d68c7600bd0f08af6532d57e570dd7c9d7e5c726c32950c939836357e4c28c04e1f592a9151da0c5b0adff325a0099d333cd45180df229391846f47914d146cea773c676409c8aad7cfa530106a3f69028f6f4ef037e24f03ebf1bd780706652cec2ba65b82f1e9e5b4cc471481fd8c207353b22388009ab04cbf6c2592aba4c4671f912f5bd76fc5bcc5874e080b624a5730730fa33f8147f7da39089ab4b118264923eb1f2596dba187a4ae93554b0c22f603f61d411c3bf9cb3b5ce482083fc5312cff5bd2b8f79bf0b5fec9405703ff941c7fd2336496f226ff92a7489f25349c9cc7cd0f24d46c65617bb538921b6f8cd6849e6cf796abee659af4c0545f725610f35246d033c26c4e6a810712bdf65c84f2e67b122b653d690370caf082f1cc4974c7234d58f4b672fbdcb19a7370e67b431f100d9957757625b983f551e3553d02cbaf202e79658b91b67348125d46f58e65635a6d2f5631fb7f49d9c31cc6c2d41c0a61620dcdfca312cdef20e2da7194d6c22a8464b2806b0ccffcc530f43e8358af828a3e66e2b2d4849d5a1a38ef3b28b15f6922d266a04ed99662c8402ce99e49dabe1ef6b9be149f591d552730a6d11025d7d0027cecacae0669b81485d73dcce6b8a29cc8a88a477b1086ecc998cdebdc4d35ffe59fef8582ba2b3e9ab6646cabe1a387e18b632d44af9bbe9df45d84d50db9a1c565ab2f7adea9808cf7e386a0ae2b5a4a475ae65d53d13f2604e68428b4132f196115513bd28047cbf8a8fc81b41aca07fbf38561f52e4311be8fc23363e5f1d02e2e5e310a3a085f44269f3fdea1eec7f60d5a76a42afb986a883ef83148a76971f8793604c66d82e1aa9b1423180c488fbecccf27c8a4c7a4bf4a2da6ad3d8a79505dfd8f627ef2db17757eff13ba54b04cad05c589f9e4f0bc7d968008cc923884d46965605b34962bdaa7f912a92ce711f10d46babe3e0087a792220bbe92bb2f2cc04baf9712a3fabd7b0871e32816e7f81d5eb80ad39470d6ef6d09c384ddaaa4a47994e2519283375066a5db9ea7ae38debdc831a15a086764f2b1d261378ce4b08602408a2598d993b0b1fa43a4f2579dc132e5483df6f01326c6175d9f1dd81561fee7d83eab5fe113b10414647875a0da98f5d50e6531989563eef072df9c36e27f4482339e83631eed10bbd4b2da51bbbc831064c44617433bee42186689f95e3d21004352bf1071a77d79dfa9e40ef1a8d32a47a5821a94aa28153c9147862b4f738f5c5c44de15c0ac936484731c7c1a9e665a7276338fcdaee666f0c391eef2707f74fbf42a09e08223af1f8d002c07908335d4f1e4cbd0e454b360195179bfa190d786a10d332dfdab1dd6497a9a96fe49286f074ad19184f9727cad60e005a2f79dbd9c510a9760ddc03a672f36390073d0631002684881cb242e0411b9b093b186063d5d264a52f3a71b7af539df73da1f6b92c0e301f648b4be202ac9919cddb2122b93c4ab81d5ddff972c82750e1009a36a79a6654b60db213b0868c72c899c677a78349f0f437a1afc070e35d77f3dddad8bacad27fb421d759e59e4f69ac2e8557e85602be03c58215abe575a07016d8739ac6f8dbef0b392b1640c19b1c0eb1d5746996e7fdfdfe8e3e0f0056b93dec0f18ee5837406b689a3ed82ba250f72868f06ec9908b4812a45052fc78ba97d0d6c27938c23310362924d3c40b79c55983bbbfaba38b42946d297f7bb0c210c840311e14b3af0498b51c0618fb352277ce8581c2bfe1e0bb7e088d2398a51017e1c26b1a592ff5285a883887bc2e17f837109486f48382a34d8cfaac3ea6c488421f93acfee21aa6de7660c5ac9539181a6d17e24b9560cc2b6e0f66f4c213e6d303e3e29bd8d473b85af7586fd202576f7057ba2457029bce947fb0693c8a83e43294055998f9149beba41e75cc56f71642ec5f5dfbaad867bf2d821d728ab5b0958015e1deedb5989a60c4d28f0d7f29442c1c4ea1ae2f4e4b92e41b6efa547ee33244845fb8a3d239144f6746933b5dbf9fad93073baf35d698740cba763ec95f54792ab89dd1b9b9bc9752bf56b97a0703c3a9bc674ef8be9de59057ccd47f81dece15014b54df1d00c7bbfecb4de109888155d85062eec6927af3f51c7a4f959e1375a238e7540b32dfe78f3d8e1b787402e0879629d755388f25bf991a01ad8948c659ba689d92ca32a09384d78300eed120f7da425122c7110e5632a2e56d1727099924592d1765e8e8c404c7f846c26e5860bf32e3405c0028e0ee8152905a97c1a98a607b76777d07eef6c1a18f3cd0da4c70e193dbf7f47034ed2e2e22d63aca3ddcc7a0d01340d987216dc34da7de8950081a1314e596a78922a18cde1ee0f65794fc899431d5797d9c35a408ecf51fcaef0e72d2ef22da3d14d85b2c301287b6be12b7b12cb4394e22c98048e0654a72e7d26b82e3eb4491b3542096fc886829d43f8c1164a7e407be9b907d32f493c39adc3d016cd7806e6999c1cc29b3497ed15c32ba225058d35a641a1396591f856e8a103e98df019a28b1668718347cecf768073d49a16a0dd79d9820c2c23102bf9bef4eec91e5e20daa62d25063a72ad9059f527f622026c207ee6a124f8db8e8b352fc268e112faf13319f2bc94a98acfa52c60fae33c0d924aaa71e949b8745dc35059d0ca27cbb8382a71aa610256eaf6313f376eacaafbb5d34681b68aabf00c29d5254a832f71359f53f6cf0dff2b4a855f7fc3c90a058ffb352e06a06bb7085eac945395bf1df34a21e412158f23ad16f665a4cf164c95f44f8d32299dc603c7ad3d0cba00788509f0e81dc39ff98348905f9284b1aa2ae3d0e59800ea76829008c7ae72870b4ed98c53af0d08cc73245cb1ae9bd8eba0eaefbcc1fcafa04fed018dd22a6098db146b7af215b6ae7245634510fd0fdac3a0377f653ed461553e4a226723ba33e11bb47d65f5490b8dd4db00441a82e5739947c9a0024a05fb15c8699c50a477ace83cadac526b722bacd3af04c57125e22fd33eb444201092ad8aa09f888d3f583ad11996de8f1ad4178d7a581ec95a9f27e6613f6fcb0207f0b7f600df1d8e841fcdf261211730957465105544e59e270d57caee9462713dc69201dc17041913aebe9488251b488f82150c9551161f92135974c101dd4381edbcdd164e8c3b17e4531fae2f6759f90e891fc7bc7a6a14d6336f25fcbd846adc2e2a10e58820cca696fe9c1836d69d636d67db581a0d0121a19998ef41bd9e3d83dc717547eec5f8bf2f9f76806243ea0d682d17d75438c2a65ae9ce61ff207992511eb1abf9ff781cac15b084bb1f9337710b63a9bf8040ff0912f06aa74d345726023261ef4b8fa610a446be71889713584e66c03b13cdf7e16bc5a99a88cc6032bfa50b0c2481ca953da563a02db0ebe0d5a8dd878bcd82107818541baaede4ff905eeaa62e5efc6503da8943dfd317c2fa2fc03163bed639f51ad3e39228223ea486675309321df6773221a3c5d00e74161f45d9a1109e3103029fe9b0548882f8f3b510d59e9d9312d18329598a54cf010c174d8bf030afeb7f326b7053e1d8e1d88a3e08c2f44ff579b1981dd33dcba18fe4de7806c11035931a449469e18dfaf557410303e4e53801cf45fdbffb97434ce61a2efa4202961535371da299691c765290c5c91a76204a4aa31435afcc52a4a5528bbfb6473d7a13e34cd29cc264a45dbc3be987699160f051dd8c888a8d39fa65d6bb938542636dcfab9583fb26fc5e42c277cf31590faabed0f21ecee6e9b92673551003596b0000ef5361460013476c021353d2993452d8f432672ba4a95f831e02738f497321421448b2aede7ec06fba48fd8dcfd55b0976f8df303bafde6ebb8a24960df679fc82612c62b0a1f79decde3e868ac88c2b884880b155b01c888977022be4da875f9ae9d25807bdea470ac9a9abc8b77874f483ba810aeffda3ef33e3547ac7c9892e9279064faddc83820d067fb7bffa3d8c4bb3367fbcdc40a074d7fa7361070d2d6990de6be6910c5c4a3d7fb02306e764a80e5638a008629068f6a80f5581bdef2483728997df727ee0a19c7ce8e476fff5c269e27b413a06053e8e5e8006a3e4e6d4adf5f10d773b535621e08598aae00735388fb9124b6179cecdf025a895d3612edd4aeee4c4215d94df174ac1d4012b396e6b0078174229e86ecf1e68c0c6e43e465f5be833216f087e96ac297d7dfd5fd4debed4a2ce2182f7bbb42c2fff5785004d50899640bc6fbde91a6d04acdeb72ab0d173eefa677897126712f4e6583e3b7cf5980fcde5b5d617613eb1357e6bbbf5080e01544efc0a6f5e1b1f6d17ae99746e1cba56e7a5833ec5e24cf02bd309c291ff6b9b409df69f2b0f3564972ec51c81db40af803e8cc40a02fc2df0f6a2a0085513bd051f5f8c6ecd3b2d8f130a8af75915e955658d53d7a7b519769c4a535d347bc0e11b809a9eeedb4257947f011d5bbd5c9d13faefb3285850d83361c7bb9a3a55d513444d40ca3e6968c7595fdaa6d291ed148e98303478f912aa3f37778f02004959fc7d43169380c0fc79208e0d816cdad00cd43c9e23e9eb08162c0225b9d97f6dba1a122288027ea2efa2ea015dd7f99ffd44e83e58a2afc71f31b96354f00a32f57877d1ef524473c730112f4c51a64a52d7145e30d8aa813081ce75bad8ddfda61e2bb1eb443da8fb623550395997e573a128bb685ddce415202395af11a0eacaea9c0f33cbe026b111b62511cfccca413e7136154135da75bf73b369c43616d1cc9bd63f152c168e56ca580aa4219f40275b46700781c7afe90cb2cf0a7320c014c7a979c5cc7ae270d70d1947a396a0564c485b3d6c90ce9a8678975412da6a55743a3e97a20abe31c97a6b3da3a8550a114c0bb29e1d2228381fa74c7bd3cc5f5118ee7ca38c1b5f8dcdde5ef2382c85197320bdbfe627f44d76a7f237bab12afaf7a8caf411f4e97fd0d8bd91f038894236fb994f8fe2cb95775e7f578a2b0f5e3852f2a3753f537785d0a9624946015ffe67ea10f2b296b48fe442ab6d1b75ff4830cc3071d0361702e4a5f669c516f17a439dddee7ca08a859f29b1927b6b10107c401a169662e404d3a172a03125f158a6c35e634351b07ac8ecaaefc2bb90bffda75e2581ff095a84ac4c84e8ec5b372bdb9d59be70c51e07c9e14590cf7a5d3374fb9aec41837dbef1df64c647a04bc773cfaa630803fa2643d50f0411aa70ea686e615fe7bc2f822299c6366ee8c4a07836d4fb2f5714ab1ee7567274a5d8e599631290cdd0b20e1e4dd811a9e64947f06eca1e6c2638e1110da790e4111bd62c2094e3fcdea4ead0613493c54bf05164472139658ba13f819bc02bc36e27a3bf1d7097cda96d40bc7ce6d3a3c8df2a59d034164d9a5bb1cb49d9ae99a443e3f1483a1bd0deb8803be4381b7c41a542bca3c2042004e98fad9b76bc19fad6e2e20e98090b92aa0a4cf964b0852dac44bd693f8f8568503500f401d65943524ad954e1e9698218c7e28f39fbac0c187c9b467d7a2bc3c3ba1a46f396a0f3b46c39906cc053cb9dc264a711b0ab8e5eb115f41932f3c713db40b7f3e58e9507a5e9ed53027ca5d7bb52723906bcc3c08b085e8dce3328e5a153c079f2c070174cc9ad0edd90ccced4a52d7f50472b49ed8d02d4fd5c67d1a93277b52d6f42dfd42d4ba4e0dd022868335659a2fbf01f1e1b08ce872ade19dc03eab3abc4f1d7e593624c048905187086494f3fcfed774c2be06dcf8412e9a7505858f350175e38b3bca2c24793e4e01f4f0e4ab136fa09cacda30fceba16c4bb780b60f49b57fba65fd51cfb33d819aeb1e8436a9837b30c6f83ae5d5528522fc6e670a98f9ecaa460d918b05b42086bd7e66c5373b3c630157906ef3cc989eac98c45b3a0a038218fdc12cbefe1479d5344b37d695fac19e86c12858fa9ba5a662182ad208ad50e602129df6fa7ead34e684a0dc5770f8592dc6f5dd4f8be2b1e73e14a241c9824493065b1fc6a15e1ebcdec55695ce582a44c08e1b786345743a5ea9a7eb446d99fb53f8de91b54ed480d8a24649ed5a933d73ffaaf67e81764174ef85e154c9f5cc549a40a5544263e7fde4b6a27c1685758e26c07dc18d385f6ddd3f9d03327d99957932e57c827f50cd709df16acbcc8cb4370ff096245658ebe1c2004ca95ec61664547e515d719e1ada8d5d655b1592fb3a0349d145bb29a05b41b59f125d749c3d168ae1a311ea1aef3bd034cc771a7c8c44e5ddb3e8c024205d2b07b4e7c0a27826c93929d62a4e2bcebdbbc89bab675a8fe59f7548c87ff7218600bcc2e152a030cdf049ee234c4300b5841d68190929daa57a5792f9241fd0fae1ba3fdd23d3eb2b2e5f6f28129d15e1243f43b90351cc82bc6840a811c7766fcb2106e1a7417995e64d9188cfd39be730c1e38c207d8467a77b1376cf955e6222cb6b7965b012e8a7f7fab95634fdcb25e0b0c6fa2cafddc9a6a763922044642a745d2b82fb089bd9c81e8d4943e3c272f8b249e733ed9938c518af5b7662af8b3ad732728e121bc72ca701cf36691fc40c140785398abe7df8b63207974da58024ed67d7ece9f12214f38b21781ec4ca42305b7e3a834ec020cb356df79c3df297638c372a3cd3f275a2dd8c27d9c1fe6536cc2505dd8abb666be14e0066af02e2d7833871e7e8fdc932838297580e476258ccc2be4a349bb55fcb978e86df64b478389f7f89f8e78cabe844cdb77c03cb8b61955c24ebb63b16499b71bf5d66a04e2e64265e3c1dc05a974804b061b157dad4d12cad2774eca77c58ee9efac0a01407cfcc6d09946aa1bed32cab8d466042cb174caa844bffec4d7c3f3b40208fa078b0ea0b9d3212d0599466a6866963276a323149560b6fa1c1cc0ebd57c6aedb77808ea5ab58471385dd89e42be1835269412256c7f67b9960e5feb925e3204b9a5cd8df8aa51970d3fca0702df1078334c5bac2f64d2606a1b0225fa7ff6d28f0a0800611959dd0b7a06a7001dcd88e7e6a6a7ccf20b7c983d6846bda56030ad91b4fca83f66d205399d946416e0413e8dbf492940b3adcd76ca0fab914b01b95aba14f3092257939559386984a3eb49b52f1ae5ba1febfd591e61e1a3b29e7946aea8c868be75e005c74b4afa85bef01194cd8efd51606053e3b4c6c5b87acc96d2df9d12ed80ca8b00adabc5cd679eeb4c58cd6add8e29d867892b66bc54a787e868ae9e2a1d1317618e8a3484d32e9f8702671d860d2d8bdeaa747bc43b85027a20471e8ee7bf56813e9d0ca01a174ce3392749d0e4dde5ad0c3f17a460bcce242978569f2d687bfa803365a5a0874254b5631b4048c4857e148d63f75121337bcccef1de23644ce344d174261051317c7e86530a95d69bcc33f0cd75e7def117ac834717515cb584a6c8e5b45c0d0f40c5695ad280ac66e95a1abd9ef9489c578d520a96bbe07d5310bf0b5d7ac90ae4f371c47f2477be2667207b0fd83f49cca44a504030c8f03641a7d5a0ddbd2b41ef97db838407b47bbab2046c02fcb1d149c232c8233692910e309bb82d7753ed871a43671a3d7e80df79b1255a05fb210148095b3a198e799e984e6f41ba4a330c80b30dacd89ee4938c40f3bf93ea60c6795af62e7ef2415a08751c50fcf51aea91427f1fb6a6d4ee863edd6010c1569efe3c1e0b508bfcfe85adc7b98d9b62ed1f646fa8e4eb5723f7f11f03df2a91d16966e82eb6dbfc66819c3413ad4635edd0d297a617019fe2f39f5339633d4321134ae22b04aa22baad94f64c8ec9144777a7dbe2ba903ad306d0ab090926345f2a0ed9ca130d4e70e0a7ad6a57326b7c851ef55f81aff31d7c79d5b199b5507053bb05210c7ec12936819ad95184de142d5a992a8478bae4268188cda0bfbc07d39b9a94b75547d5f40f6a51bc1c1c3b46c590b89c3f43d56549b7f25e282c777a1488afe59f3292cd7cb9a6c9aedb1b15c601df6f5246bc3492ed56aca660b446c69e29b2140ce72344510ef480dd247733c65109a56b7e4b5a21143f72a8d07b9a722db8d855571ac17ab4b57b0a10625c84881f1e01768deda1c07a161e3a923c7bf44c07d5efcd8a1b70d47046f55d4166c4fdbd773c9845cc2f8afe8b7139b3ab3ce9972bb21eae0a1d3e487de193d293dc34013299d8ef533fb52e646bd5030fa88c1eaf39a78217b0fc2f567ae3e9c695b8a4c88aa7cc083db841fe28c9bfd165a248bc00f448c7c57f66ed5287ec164d10e6555d6ba052929c2e17105e8978ccbff3c912887927e468a31c8f09a46e52dae9449dd124e849e71dfebc40f9165e6c9d80971cb487fec2d7034a6efac67ed0a3490decb795119c10cdf52b2beae1f888e7e0a67f220cf1c33df571959a93413124bb640d73623f9c0ef3e694df85467047b2e0e5b297a5184e609bfee2e15ccc80f28f7023b0a891e4f8ff181d8d8a6ac3e81221f03a06a8b388c5302bee1905164d981d24c894d0a4a7fa4d3688f28243b34aaae3ccae3a719a1cbe7e392382d481cb7aab800d4c8bd8dd95cc51a388397f818aa079a830aa173828a6d3bd3d0a9890669b53e9cae9adb0bd78f175b6aadc15433b99821c93b5ec6c7ef8cf1abee6bf776d9d79a2e67dadc796c693c3d8d57a0f04d9825ea2601c8ba3f6ca8096ff919b6a20f7ef8bc4a4e1d8497046e78b955cae1a3626ff7a8e5c5fa95c241f85ef5b1f05077c6c98acdf00639b1f365509adf37802ffa15058deafd52d22b4b9abcec86368bf0cd34eaf1a2713d067ff176c935bcde3c3c2e2d2eed3c158a9a24d42a8c23aad9a00dd20e0e7ead03a5b0fd066551f80ffbfcf25fb1125c2e116d7258106c13d12a43ec8982504ff1e982675876d4d6ab36b04990f29c68ef4a23e503800dc510e9fa2dc53b3dc26412b153e2b9358a39a4e359f0a2a27321d651456e31f7f91770300215fbb697c01a1a932da41122a852d6009d72edcc28bb48a4e3dce2f8bee2e3de9b871b9f98b045297b5391c1751e01fa0d5a5ec7e9f157fb621bbdb5077b98e17828902ec2b6466d6f02db1ee63dfd347f1512634de459689df19d07dd07230dc52beefa0cc46d74ca941250f2b5ba91afa29567cef50d81fb3f5175a869c802f461bf50e1a3cb30bf0fea0718e3067dbdc42ae006f942c7a6506fdae416ac502ea04ac008d483ed7d1ec2a310f76227bf831c2c82b8d1878c4e05679a978eaf243fb08eb607ef12b28e5aad62742a50f1a92315ac6f67aeeecacdbbfe0bdcc9ac9e167e7da48d5c06d112b2b2b109dffc46db9d914f20585e38f9244aa20a66319ce6be4045caea3d7eba91b25ac4c5e02d457a4cfcf12eeb7086353123490ea11f181c563a8cda13cef1a690ef4be482755e645e0ee6d7e92f2b4558677d8f0f908eb4ff039a4cde211a6bd24326e9c7f8c3bef59324fef294cc9284db92e9af5c85d31bdacb06e577d67798fe236857d76637118bcec4a3a3870d4502198b25740cba69270e1977f81b08641c67a1def4505cbc6ba8a937c549064bf131f26cce946b0a0934300e6dd25a986cb9b2b97679542b9b94224b46f94bb1d2d00cc5e18ccff4d4998039c404991c12332d6849a92e50f8dd7ff5d62d74fe6148f2132d0dbaec8d97729d8fa121b5063149179b6f78a05252ddef097952c57229d03ab194ad2c70c37a1085cb5ce5939b32d960260f26ef2c2caed73ee064697124ae73d5675a6b04c8c000ba786dd87c27d6cf065da206d19f261c1e178fc0089f70fc908b8ea074b1597e29b2c14ae762e1e44d747f4554078319e97fec85914440d984f92fe7130e53215c0a2b302c0e61dc70ba864cd9dd1ef12d7868d985ac5e1b67aa23494ae0ef2faa8c9b2662b265bb6115d930ba1b042d4f707072a674ded8f21b5a863afff492a285a29b3be422c9e3cc70f9821290392ca4b619b943c9a804a31390e4a7cb58bb4d57532d24b810f0918924bcdd08e45910d72d97f5c228c7344d0e18209734928983e5e42c5ee0295ea7218532b3e4eaa5931f8cca077aef78a7da36d5bffbbc01d03d0f2a9a4c631d99d6fe976750c8fe3af403b4c4c30937c283c7a099292a74391c6f910dab3153c01a8652bd249a1433c68918d2acd57076ccd71c165a11019d934398d617922e1b3bbe8ba0c03fbc8f4316a9cae2b2bb912b2f32e7d17315be8cfe7e3af19dbd0a796b819069d8e7122cae2151971dabb54b514a11f42cf5c1414b2d805b4f3393881dc5d1c75bf1f2d8500f19fe3a5ec68a50cfafcd9246bfc364d876bc5571e012aad69766c26f49ae36f5efd27582e37c70e3998ba641aa74bcad2140fa472d3377a38835be581bae5f6b95d02a5d3f66987aa8ffd464988df0bb6656141ec8fb95b40309037181e97110aa3865ae47c4953f9a2047d1109912946c300ef3d3f0ac15461b1f4d9604e8685e50ab7e7cc32eeff487c2b0e0f83d5d8746f9ec9089b23edb86e36475ba8f05d4e1da2901c70413cff31947b55d7e5433d3b2e46bb4778acaca5cfbc457588b54b815396ce7464620c72d918f5106f39f5718a2d0500204984c5bddfa3d71769b26bedd9a6c346e11877c93ffadb534bc134cbabeb4b7947ed38b38ca63b8b27081831f55566f90c95f43baf724f0b8899009426d2757dd400d200defd17863bba17e0f60d71e315f9c2eedf2b7c3b7b9180ac6dd65c4438d0807fcd925797405635e9233d5e162e9309a381a3e5f053c3b793b1b20a2ff38b9b57395115ace212aa493e96c91f22632622e11e6d89d754c79da057dbc2f85787f7d9bda44484859f0b3246ad358d55c436012ae447349e2b714f993434238827ead39dbe9b083da5ec49cd27c5b9c8bcb950fe91a78fb58121a4df0d53995760cf78e00cf88bf9af3a0b75ac4886643da9f9bbfee1f3b4c4a9db1135b9921d9ca67254bee471c0a173c15ec44f61929b1eb7dab74d04f23cacaa3f3ad00ba923b0ba853a44872a022ed3d28d0ede7879437f2fed8fc768479a3cd7617c4ac6ee9783bc0eeb11454fd53b2e11072d5cbfb0ac15b66e500d9a12df1fb9808719d20cf8dd0fafaf623c863749cfdc4b10852d48f397c359ed1e22d1ed1062f1833371cc9d603e250909a66c1141b5a6b7346ce0164d5f99de1365a55bdf297c6a8657831b581f0bd1e4f0c1db88ede96e7ac0e857d1ea990be07396878660a58592f525e69a7e69ed75fd6fd2b01410762ee60f175dc38e2e4521ed92f6e47d3045bafac7e31a834c8d27263c450e3888609ce7016a3788212def8ba01739477507b64be978484858236d85f0c14602d1923f4837a9b2da0cc7be114856546fe43078598e91bf49e9bae342442ec8d1885a68f56915aa8d0d85f9e1941b89721ca028e39bd47252f2b100273daa7aa6a58f6d702a007cfbac1838c97342a539934370d4ef13bf2c2500ed170f934d8b6c5ac91d4bdd2d581571ba1614d611d85b7fbc600786e1a2eaa769dadfb635570226cf81654bb1fb92d197516f15467abea8d9cc1d545d9c4df7dbde8ee791cdc683fe27aa5a601a01ac38c967988530b49fab444a4173417181cbe811493d15fb68abeac43c661c1b9564dafb11518ffb594aae9127799cf8279bec065d52a7ace8b5244964e6dd8e9bd52fc5b87a793f100bf3060d3ab2fcf6a1c210a733c4c976a55d25a7dde084d5317c5aa83aac926cb57e263665167b2fd8391e37c525e99d94d721ef08c0eccb61fa9c746142b60904513077363ab6715b42c02854236844653f1c64a420512b21c4150eddb7f0eb7973ec7d3968228178a462e115f68a99a944c0a2e0dcf0e2db577d48ea47386b7fe4337d97738b9a626c961dd76077f8bc604f57d8cec7232ea4058285ead7ef4fe377b7893c7dd723dc64bee89bb207bdb8566f8eccf36044783d556293194237699cdc927d5de11e2d0cc731e52c9e8a6ac921b935016404f7ab7e107e4c84535aefad6f58909ee632c7e7b5f4e5d714e46805cabea0f14dd95601524b0fd2fb17ee5b90e2d2f420b1d28736fdae35faa3f8bad1ae3e68261dea3edb8177ba30b27030bb6662626c9af4c7b987e04cef71ce454893da1b838324910e5fb70f6f6f9de9fb3fa46ab2c1e9a89442e8e547e3c0e1382af0b6f84448f97f2fb6a4c36409399ae9aed082f8c7b5be78df34b0b596099df6034623e22a6acdd18de5ebc3553c36b2afbd8a83d873844d0ca9c64bb87500257efd4742632f22338a5d5aa43e5400971576482890f85b92c4d20158c016f88dd5325e3b2ccbe26b87a2fb45c238d91bb68fff0c094247cbbda9034c1a25f821c3b7158b68027aa877d3aa2cf78c87f669c7653f94dacec77730a0d3613785d51c64a9e064fda3a19b31c03da69570f9de48a7f27a66570443d1bc0944efffeccd77cd1d7aec8841a83ec3ec309d170de367e9243bb20780e05644ddc2484c9ee96df5e2706a2e40e3ad9974e833d3e020ab0963ce1d69e9cb6c89c77b78386d1ed3c16c5321ebecb88e3d6e093a4c886de49905b1e1d0a24e4306e0c00606e440b4505c10418615c0126a7cc0dec18edb2fbc255ac66767d44d850634aa6c8f7e5920c69c07787029eade1d65506bec78dc842b67a1799b5312f040cb5a5de79b0c060ad9eedb5df39e24b2ae670c2eaf6e22177ab66c2bf294be4abb4553abe688c69b74c7c0953147f8aa0cc0263dc7b99cd9a1411e9444ee743368f8c6b6e4d0cb1ba6bd33b3e531b4b7c290b613f2e536c56c2db89e4e6f4d5a8e285cd3061f3d48b0d7ae8337d42e66eb3bf0971229c4ee672e604c0dcbb88481cb90667ebe5ab553ec95c08ff1cfc0934fb4cfef241c57518ce62d43c8b74c501003da3f6dd10d978b67c5da9a8cd8b094c7de43b80ee9b599fab79baf9bf1e290d3838d39f06002c6e86892e81544ba45293cb1e3d4ccf1099395a2cb69b997e32ecd5933e253140bebea7a9385be70b700e89bf5535daccbeb1570ce8b7a0c27727198db083bc8c5050b9134018c256c4cc43c8fa73ca513b8c1ef71fd5eb07015b52de738fef5cb5e77bce5f0d41347d7482e61ca30e1393569c30d852e135c5ba8ce44284d9f13dd6021dc02dbf677448474be91c74bea619281d85ddbd87942d0cc2d8758e00a7c52ea9818c1d431e821d2b568c80b0858defc9359eb00e6fc70de0c51dc3319346d7fee5156533c88aa53fbf73327d10052761c48dc42d2bc8936854dfefa1d5c3d80b0815fa3427aebe45923a8c6b6b3b8db796cd211b6c586bca7cb3c5608ca440a6248878593620e67d0b946df3406d0fc2ee27ec64e87e6738eaeea3f40aa7800673856e456570c42e02512746d467bd1ccb19c6680008022b0f14ead594bee9478d32d0b416c42b1fc5eee5c6e377c8835708cadba45930dc492375efe7fdade968102ff26e72fa1e077587885b62fb58ed839d438d6d3fcc181b542397585051df9d746272db6e7ddb74b1d9d7d0f423a4ba1c7dbe6bf73d5f9ac3c53445b847c6921ef873947a8fc23a04b6f7db700d727cfe39619f1cb6b9d6cc1f4d8a16779835c1bfd3438c30c68518527f9d1964dc72bb79e8bfa082e25878ed30c067f0ad8de2550dc6183ba6558d944af4a91a386ef51688c87c32263161e08f51a8a80474176a1676e51115a2cb960fe4a8477aea953bfbd73817e895991be304bdf598c4a9450db3b618040d4e27f13aa7a3982ddde89ad29cc9361e3eb9a758aa154e32f53f37fd8e3a00e22a4ae166b40d7aa1a570c4c0e1a2700ac945693cf4a7667f16454f441c629ef456b5d3a4b206774b31fb8f230144f84c33409cf0e6308d1c7f5a24414a03f82f9853c0f34d366a83f105d7b96c0ff944359e481719986c707d1388f4319037e966c375759ce6504cdbdd8a6f8eab3b5d8549843faeaad849d0198da5c70535470dd63b27da857bf004275b71ed850a01c79dbd75c097863eeaaa15f9b95d22512c14461c45244ec37b5bac9eba492699f8ead5a2de7455f89f19b2fced1948766e38f6a3daf9902a7b43ded3d36dca8293f60bc4bcb726b39a4acf3ee5bfd1a097b0ee0599e050517081e2c602a7c1323d78b6450abe466d0e37354e2459aa25531ef5bdf4d54f268007237059718af6dc9ece0ae248658ce16dd53a61f2682318d9a461637b0588979cb839138c8b0526884aeb6ef91df9a98fe9f1da1d4d223d6df19939982fc0675ef16e4f7958d429ca47b32edb10f3a1d2618fbb6e4b07dc1679da9c97f2b0133b27a64e0206dc52ee05edb4d88a1ffd80a3fed0fe29ac7749a7c0f4048a55bc76e61e9aaf8e473cf0b0ffed41be94d475978438ebacae6c2ca7441b1489788d29644ea152473937c0fb6caa4a8be336a5080dd3d5d24817192626861aabc165bd4414e77c639af2c38a37a98bd861c794525579632144401fe63ec713347db773b251cd058aa6a6532ebc6f807b37bedc5f4ef0bc015ad38120a50c1be1bec9dec3dc6a8879a5593aed87fc0ab1ef08abf84f8f0f2d931935b8c7bcf668c21367320a9de4bc844f3bdff4c9ed2591c14261f7620b2978b2653ceee5888cab06c86047b3bc6f437a8ad797a4508f7e307748cb5867d4244ff2bac6fb5db7073c91b17ea8f81262cd4edfc89040d3a1133406ffa85b0391c2ec62eb482230b3a9a72d40db4271c8aa2680d0592cc1a3f3f629ef44252ca0521bf7898d29d9032ec07ae89a8a93d33ba1de836c6a5a32e64e59318a8623ca557910977fea805b81e82140ad83c57d6dc4a4594eb1aa973a637e51db42e96e11b63037447cc2835cfe254d2523aad27289bc41599d3023346f469608a484277db3a447852076756d37ea5081276021255adac9632fd627243ef066a4f7f0a50707373179b7b16d869b682c0b8cb69e559ad758a44a7990ebb26a2c780e1af6b97db26e0e4759724d83b8a4e3177169281cdd8a6d37044d2a41c3c74fbde8311e9434716f7a3fa89422e541f6cf9c22ddaa5df85822161a2975e4f73a5d5ffa1efe4fcc3e1ed61c6ef813c2507df48bfd7fe0f1149a3b65d86ba448354cc647ad21ffd33ea66ee5ff60fb5afe3355dec6cd9bfa5015b74f15552365de6be8625a99661693a70ab61704a94394c242cac639df0b346ad911c4f879e78d9e5f193cb4675b6d5cbc517f63984012427c54115a4eeb5e55ea40352eb8ff9650f17e61f40214c32397761d52192c978ea000293deb1dbcf6a0b9b966338c01ecfacdd6918a639bfe2f27017806b5aec5e2fbaee4f04146522c313f1f257d5765ee38b7f5a42ca113ae738fd0cbcdaacbce3935c27dd97cd1cbae4d70999d66afdebe133e1fcce72c6b242e2bbd8590c51db518400ed076bef76fc483ad1b00431c5586bf8f6b3c3824e8efabbc469da19a461e3cc74461ca19f942161e6ad09fe1f7207fc815f1c8b9e7f84a31b14e8c16c4a8859063c08ad55441f9255563c40f7408b819f7c99380e18c514d9024796d59c360ff56f7f4e0c37892ac6449b6fafb7259647398f2212efae1a4a009a19a4de706119d73e66c5f645cc4e51c0046d9f285fcfb1a640c51df6d14236dfddca55823b548579f1d704f637935d62dd1cded125ccfeb0c74f69a3ef7759cceeb58315928faa444937b9dc9ef267850b4f5e10ba50ca42ee38010eead2ed9163b04b7bb1e98bf5d824ab645d29e9e7d4c3ca12ef4c4dbb65a884ded746dfd1c50556352be1387555c69469f10bee24d58b6fc6f83f45ab002ed06008b653dec25991b9c69c17afd87e55235ee35595e247371739c8da2d16a5f56bca753bad5a12370085a1011092a49f57a609fa8d1c79648165bffefed5a809b0fc25c28e91781607b0aabe3917d177371bdef56cb70cf44e63fe2007e33fae5b8260fbe80dfa30dce714a6692bc4bca36ba64f6f4c07767a592b42724de35d8cade7f01b5f77ff74d0dc69d6b989cba75b981cbfb39f88fca94d0b51f4e8d842d663ecce7bbc6df39bb2ab4604286c9f169f85e0fba39b80184065ad7901d611db2980c3aa8b42f4765e2551b045dbdffb4962f67083b59a76c84d6556e9a10a987e95f142e23cb207b367b2668ea9108fd9361bc711b134fccf55bc799c5683522eb9ea098508fdf3cb7a072f256f70bacd7d9ca742c0c3f0405eb00726bd1f82948da4e01105896d55178d2686202181213add37edc9af39ba858f55107d17ffae4125154534ac9451fcc81ab2cd3d693c82b1bb88cb69953e6f44171715e28399b2e2065414ff01d36a3981d119efe289a1d6de0a35b9406f65ea2543859a8bb6147f5124a1ffa0809b8999d56b0dd2a79ef943b7087fa5deec479ce875c86be1a78517deaf8c5261cf7e70db6c0d67291b1e38daab0165365a84e8fbffa9d6b82b776481323a7361b0c4b6df919dec809c3ae28aca9e681ae444a461b529eb0f726ebf162a7e8919afa717f35f4fea1f3f2cf06aaa99d4ba1debc510ed58c651978fc34a64445f60c5f6805609fd52e04af22f986d223c9109995ff34133ec371b1387f50766f20b83b268644f813baf09108e30ee9908d5fe4eb5dfd49e029aaa7f174de918a36b22402a719ffff568844e806ad1db438d9427a9b6986723701f6bf855467af0232353814394df2dfe42da962efb393d9bbe61ef88d2b482efd1dfd904b866afdbb7769f9bb95da444de03a1c690fe1201ba25a45acc388ab94bb4b9a3d453c28f651180afe52b829a3890bfec52c8a6307bcd4f60e1cafad47680a8e04ed1ab82c142e1a494122d575ef910321d62d6da281d6c205ce0cebe2fce315bdf6ec8fd10376462b4dc26e14a8c5f5eff19b220cd5cfd2a5814478e75e417d7f1e0f8b801722ad392ad58d3953a61716245df4508fd0832f69ccbed0ebd2a5a029d497522244b641ddac172a8eb2e2ef982c21c44510b73bae72c3b2e10a0c6da3fea1895b56ec2a232e6e614071d3693a77c86fe669b212ccd5bcead99fdb8f7f484ddf06b3640bc454ee24a7eb4574bfe0cc84aad890ce1ce8f9db870e149885dd7f00811bb83090acbe98372c6266febf86f41000432b317318f37215bd4da5debcff1a338b1ffbd8ed2f08c71822ab9d469eeea81f26e5928b6950372bc9d7e04ec8fe02a7cb060ce191f3502f0b32bba7ba243804cf85347283f63b547efd6b42dccd76a18a7793124f10e15c23b189b26e394005edc69dbd41a0ad33ae3d7c30e7cadd1583174920ff699676dd282fcfb0e1f2ae58b9e4a7c25d5c3ff0c703d9ef256c6d9a26222aa22111ac79de0788e986a3d52d6d767aca1adaebc57c668d3272bc3723f2a3805f3cf6d3fc91201cfaf54ef6366d91a42e9aff406aeefd6aee634713cef564a3fb7070c8149abde192b0112734cbca211d22677e4f5f9365afb3f0259fd5948f9f35abd37b30d47803cdad97df0688307a5aefcffcdfeb21df6b7825eaf6745ecb28572cad3990cdeeeb0aa2d1b38658ce0b3c123e7239a0a6f40af0967cdb338eb12c82fc9ad0ea8c8eb16aa66455c17e0234a7d723a5b66ae9b0b430f1b07c5d5c609a62c2a59c64035011070cd7d84957825a3067cc5b6d22dbab81f7747d250b32fc905bd8e2a6323a7178b6c54942c31656a38c3ec15d64df5fbdf0b6306d8863ad1e4e613396cee471113a2b42c272a3266c23013ee1d674857ba59c75a76eb8fedf08f18ca3cf69e77a3be709110020d05e350c095fba366405a5608e0b9e7a68bbce69592baf0703dbb12de9b4db48f2ddc4cdc398d426cfb73cd1ee8eacf5768d316120fc86a0538ee5055fab6d1afdc0b0a4d4d9b228ad7b9fce5adad4fcc6ed27a20911173a56d0bfcba701a859751c266691c72f83119713cf5454ea6312e732ac2f2ab67f96b523af9387980c491e14db391ca264e458c35cdc9ac1844cf4d831c22c5d3e5f19f333ad96c4ff3370aa3fc2d6b85b1b611b937c064ebbced45398f87450e8fa6054b0af27bf4134d2c6c56da950db818777a6aa106eea9409af7bd48365148436c8d14db076a40edf5a0f39b17dbe11a33d5b74b701f6890dbd29b4b286fb459da01548832d41e32c3fb714c09bc0dbb36b8a7e386f47e49a3925b5d6e1fcac017551d3acecf1d13b9dcaefc376ff7f310da353bd2b4c928f27a5e6fd2119c726412c4f8586d4aee41548921484823680012502d336f5b642f9134cb02f795413f7a24c74ebcec6390ea547b2b4ae67cefb280bc7b837365d5a90af5e36e467606e82e49da805b40b194b59bf9fd2d4dcaad4a0431d8c5187826c44e9184a978bc5f05d74e5654284471659bea39d507385e834c51470547dd0af1968123cbc2e7ce324681a1c648947d63b5f24a20784ce3457c3e0e5505d0d945c9ffb71443fc7a81030081e36da9ad143e539db583f021fe4a62ff0eb3f20086bc9904312b7e25dfa632ca21418de3ebb6ffe233e9a032183e796193a6e2a2fb6a01e30ed486e77a3630da2bf2d0bca7eaf24bb4409104a75ea6aefabc6fce074d330598202353decc33c5f8fc6de1758d3aac61572b5bab37c4d820a239724264b3706f5fd194a5abcdcdcb8c70c3928b54bcc8e95c4275e024de783d1eabbe3f19a1fff84460fef4eca5ea2fdbb37e291c73b6a74805a79b5d7b8c772699684df65b5a147204e4e244bf2476fd59055d63ce1777019b2fd8d179133cf015e8f187677658800a0345643e7af0910b3c8ca9074652cd99f35ad84940f750cecfc482d3d2b601ff03da2844f6f9545856327570a176c42286c669de6da3152cfca24b3818c7ba8fefbbebd833e288adf69dbbea18f77ce66eb3ebc30a8b8c6c95d582be1cbf378de5ccded9c9d84b30e4691c99869c2df064b7ff51f8a07ca52b432b39f55259876612005fb88197a5263b97a34dfd9f7cb0e30bfe40f5ec31469739621d0a5170324d589c13d94215fd825ba1c63db3c0a959be7b4d1d6b06d85e6ed71bcbba8942ef5ab570e36a3dee1805ddec8f5e02d55af07490df6d6f023b8c5bda6f9df8e211d32e84660a8ed2c282b68fdb60c316ed62f5f52bf13e4e2a9fcd8e6ded126aae10ce22108409bf136b08f4f288327852707383f2479c3269448b8f09f6deac86c2c79cc041e6dddc8728b48fb54b6f3fff5194ddebabd2cdd2ff63478bd39680d69247b695fdccdbf607914499e9746663ecaac05ac33edcf52519127fec642b3ec1e8e5d43d55a965ad87aa678180cce151a33f7803ccefc122b517d51191a9190e6c52404373109610d678e019af216ed59555bca23260e820abe12aa0d3d5f0fbf874900583da13bdf0065931337e114dd356026e68dba8418409770535ef8c131321bb081a56865fb5495158d6391d57dc07875b903bf41a40e504deeba4ad98681f2776d9454ac718d8b96a55d9de319d732f881dd0a489f70ad72b690d7ad4e04ee43ced32d3735ba8d380dc5fcd1108ef61b5a8b8752208d17c0d5e43acadc9f18fec83602959f29b5d80aa2d6c5c878c0e4122a2633e1cb54164c9a75cbc6242c5c74d46810eb508abdf663c637290629d2abe51c3abfc52b416fd8f30e68f361365f1223c0ba440509bf2f520022ed4ad6dc2b7e613dc522ec65c1896b62b00395087fe4b58fc1f49f677e6c4623a95a7591ae93a002d77e32a978e0df1609aee6657c4b3b53c40db7820b1b28a206016d6736a70d566ae47c8c790d362b88775d5fba5444d2b2253cbb139d1e96bfca52314523e0a9813b89b03d4e190d7a6d455181d31d3c1459e04fe3aa30ff273f71768835f80d73b9ab8e3322006ae118438dccb8e5a5d9209e90b4a8fe5cea6fcbf01b5d4cb7383292f1043d9ab67bfdccd734338a8436983463dee69533d413970e9c8e8081511315792d0b27a8d544dfe8aaf1e338097537c25249c18cb27ead7308d8f56b31aaeb1ae1c236bb6f07ddec0113ff7ed374013b6df03e763e086c7576aed41642986b9a423bddaef2e5ce044a8ccdfc42400d7011bddb8119b43c9e934fef477396d516ea034b0474e4b2c5fa0f4dba4907f79519caf643da2c882ff8e0dc6a5bea137dbb761685cab95db8edbfa1a4c657aff5143558d4286422984937590de82e39130dbe3bbbf20482d82834c609bef0356e56d09751eb695b012d6fc8609e5280f01d090076831ace1779a0381f229489f05298895c824cbec509c2b8bc6bed087fdc687149325cb5d9dc227c7c2b1958015006479a151430f19b40601906500dfffc0e320a684c6676be845c9e4141603c629a7534f02a91ca565d5f96dceed90560e99a56e5cfa2bcfef8a165731165cdbb365c57edc43b44977084f5970a60f8c8d3060a774fac6ccfa049947fb208f74a2632b4f417ba8ba6a0e71b2bb8d794e4d944cbbaab39b95de166536d19e38ea8e8d3008777d77e8cd7799573aa87689f43c57ff33479cc4cd488b0b4faae7d561db3755aa5bf2fb2b00c0e6a5f7358cc6512d2ed187542005dde19f7c975424e28684f07e937645488ecdae292621b1b718bb2f4f8ccacb6ac5ae347c8396ddf69c551c4c01d19c616616fde186fbe5eb924d4d5999b0e743fcbc70463bb25de23ad3d333d3ffc8241cce66981081f242f262df6df8b60bc9b275f3e659da22166345f3d5a51f0110caa7e0f28277298057e79768994101e5f62aeb0bd59b4529cce0300e7408ab7d2671ad7903ac0bfbe42b767588e7e8c61aa954bdb2e3b0a9756fac8ce5a97f838e4bed6343963fb176daa0f9fdc7f8af9595f4be26bac3f2acb1a23d5d094ec756c1553201a8ce090a75a3d60acdb24abc936e13b489307bb7ebbf216f03560e836ee6f04ebbd5e864e91ad75e2cfbccbdaab6b42c10ba2564a3aa2e2f6dfc71caeba709ea74f361c615f7f6ead8ca2e455323f0ccf47d92c0e795eb9d72d02af5a108996f1eebe6e3097b817d4b67fde27a3fe969f0db0876a5d638b5f6eeab1dd2a3d38ca17fec60f4fdae045e5913f20bb83d56d36609a254f58812525bb86386552a679a10dcb2564858e2627b50612995762f830a9c123bcbce46288404e92c54f6ce131d2e4c3f32eed8a7c3eed1f41bbd8917c6e0f319564f95102db5dc66e8e8f92c4015956e1e4756059a6198c1c40164330a63b1cd004dafab251624a2cda8121297ac8145522178626038d9a76f0e67d759754cce5cfa965ea741a66eca1975c84e7151839b493f0c053d5f4ff07de6c0a69c80b5122ad01b090d34941b8e33bcdbae95fbcad29d1f799ce844b3c5d03bfffa1bc163f1bb140af114ce0a39a9b4f704e9fd26c731911c57ceb52950c8ffb2c130b391cbb5187ab0d7a24805f1429261f5db2aeb463466c4890f0d544b2372da6fc433f9dcaaa13f3b18b6d1c8fd082421257b4053b425928c466742e5d8176b06bc1a9849f7ddb07b1369248848bebeb7401770efba5e2819bd7229791fad6e017c4d5d0ca0ddf27db6daabd30f60a5d0db1ec43038616caf0cce7bf7b58e302f662c2fa2617353e0419297f6c80a7e185b05cd9c5ecb43179b1c6a5b065b551523310f7008e51a62f49e8143aedc9ffe408c4d74e54fae5f355f886307efaf3a9d42d0f8519f89e0cae695b97d4331606094a0d3c2e3ab0436eb3a62214527b596894039892fe38f21ea7eb922126e331c6c4c6c26049feb11385911d2efc805f1214895688df6b4014737c2b9577adad954d854cc1b89db140396435e6d7b97b7c3073e5be1c3a572e69df0841fb097593e521689fdfb3365553d7f7e8b11be4538d1d75aa710fc8ae6e7bb00f3777171e2a11493ab6bc20971611f4f6e2eda2c86ae65af7d5c200fac26671396a49e05919b9d246809a42ae1e806a663edf711032cceb0350e6721da082e6d0e3a004abe60a3a6d47004c26884047a2507b8fe511805361974e25436b3a9736a9649040dfd29bcb25c136eea8cd97a7ed989d04ab7ffb5987fcb04075c8f1a46c7b30875e70827060cee1db580243870f9c10adcc07366361d2e50a4b2294a5d3bcc5b2d2e739e251ee3226caa9e8e704a5182641f2c8b0dfbeb63b96ee9a990d55e139d180fd9824766feaf1227481ef063738aad0a4a1174898908d267833ba94e8573b627e805d907ba780d81ba3929fe3b06dd68c4d2ca02f6cf544a5fb1f67a38b72defe7a36da56c26a8f3daf71eabee0b163b400d1ad0b56b0245fcdb2e865199d6142dac8617c0201cec5993ee9ce1b6a435fb69bb22476dff07b59ead7da87fa33deea074fc31599dd966c983b2e3c73ee61a427790a1c93c855a168dab12048820b658bc1fc09c628b2c519006620c065f7b00735fc3a0bf8b67d70d01974355ef7fe29add2d320f8bc56b75864279675c2f4887ea0e587e9ae1aacb0fcd6e8a8b1d763bf5acca0cfd7656eaca2b7d973f83f4514b7d7a92f397743a667dd9319480a9d97672e84eea54a430098b96acba393854ce9f0624baae6426b67e317d24e2428dce19bc8b3d0f48f01051a91e6a4a87460d1b1760fe8915119e689ba3314a420f6599733e94865a29b004b794a986821fb6bbf8ac38df3b7eac431eae50181157e9209eb360631ab32edc2c0f5107151b66a66c7683e5bb6a58183124139a183a3fabe9d410b03fcdda7771254a696236f491308c2916d2bac34e9808f4d632019efe63b350319963b5468d3582d5e829c9bd99b013ba08ae9991259d61a16f44f1f953fbee3c308b72015df9214846611c2ed953e42c02219247299181c7f440ba44385b39ce89f5d4004544b4375e9d41c2aae136c6db41ecfc12f4650584f972b4db4f20480e299203e70010cd527fad78eb109359b586b83781d49b1cbd42c1f723731e21b617092d07dd5bafaf3a1a5bb82af1811b7a86157ace27cfb714bcc56c5c31f58d417384ccfb4086f58901277aa8136ea8c243be2b24a137bcb146c02799e066f8b060945cc584473eaffa52c7803c91683b6d0dfe8c2fbd487f259627a0f8fa82acf27d60d6b5278ec9ca869b2ab4dda541a2fd94b90b3041a11eac536f6b2e2b966961c8b60bea440d2415fd786ae4c46f8a4a0930c48fa5b7917612979fd0d03ae8eb7d5ddf5532bd29564edb038d8ea155cc7b6c1601bf9d2b0cd337c73b04058664d66b67093e504b274e308adbe3b6994257fc14ac0a819c285865956641c89ee08f9d8f7a6ffc660ab81bf4291fe07dd552eabcab638cfb86a199f3056fdc33013faba758493a170cce9a305b97b2d6c353211f7bc6774273fb4d212c9a60644200215bb56476696bda74f94f284d0e46be930210890521c2d877ee4922629b6e562026bfc1fd9d4095294e4cbcb836ddb772edec321e0b6405308349a13ddae9ac3d5d18823d23f5cbacc5e28889af932ab469788ed4906e72215fe601ce6827dcd34c2c1cb00040baef352c16ecb0a5fefa8a3e93eeb4278927b7b74e565e74ee84cb4a148bbd78a46a284a1f7cbfe1453ebd2eac6be23a9a80623fd375556d306334bd792835cf3c9574da7f49d31499c4a7b84561268183f8bb23480847e5583c014464e2c84861bad9e087889daba6c2893236907adc5fa1141e79bbdca210c7fd0847cc7bf23bc5500cb0afd8e64767919297faa4d93d41712f7f8e02409a075ca5cffc899d15a10804b33cec30cc015156948ab5bca312720da03181be09ae8de4ceb06603bf5e86bb94b947ab8f91cbfac9effb5988c4b1b19e6767602d25e8c08aa81ad2e886e9998a8178633e1e0002f50fbe18bac21e6d394a723c9c07d11f5ec1df71d50beee3f0f0f768db6074a23baa692186f8672392f780719c58ef4af6fbab99d9986dc5b7ca54799c0d8e72c335eb91820263d10ad66fad56bbf7a838a4b8be921637a6a3a826d6ee1e472e345049246626e8d32dd83af67cd6e85f694e61b5f07350140484d9fe73a7d9c54bb505cc2a7a40d0db447bc3cfa19043c18e726004a5871860fea2523e3a9a18175065b913a234522ea30504677b9a9c1d1976ff4dbd84c366be20605a992eddd191a411ad5fefc87ea496c78caa1dca48509280442097020febb86b4e88b01d18b136caaca969d6611ed934e1739e837a1018c1ec41c3d69d931f71c70398d3a37342af1bfd1217c3a620142cb135081ad2a0dd52da78107738cab6c7379bde92a2cd283f308539b9f2f62585a4ac4bc91f028df1e24b746ec913a9791092d220368a15916e49e28073800930b1a9fd7a5b2e395ebe78146a8c8ead3e8178e1da4412d4db4a7fe9d4200067dd52204f49435f0760d1c9c7a3206431c3b321889c49db2a12cb81508fdb53da34ad4b1eb0f7fbda423a9ac2a75843eb22245020448c0b6793a53e38ad9d1431796db55c64f8500658330e4f23ff79096569dd4a469613b5c0dc221dae16ea7ed87a4bd43685cd2a358779c411e5cbc12ff1c2b71b64d3fb7f185b3c044b1dbbeb13f8c556acb266d56e5a0db7d7e772e1a1794e8d71a645a89414d9a64d62e28933f37a356733274f7f83858256a093bf082947a2ebb58f99360e1da35c8344bd65eec08e0f1528f4ed387a2fa45cb4c98797e0a3cfa17ac47c03085ed4d344d9c01aa11fea92e37673d567b1951f7b88c2fb373de2b216f39da49b5ff332fd7d9e344824f1c0d0b36c9e6f539fc489a4fdc1d005a9890a3d533ae196e050f97c3864dd14cf9db4e19f005f76659b7511f4231f2336f648b68144c70663059bc4a2fc8aa4a57f064e95022bf045cc000bbc775fedc4a4ad0b6c3781231b08e7da98772694cb65659996fdb5b27a3500f3756c2cc2b8f08fe25d39d676f960492ff35e2a3a6bb6f5967981f2e39c850a8e16c8e79a72cf60475335a6daa0d94b9fef91f9d71cfaa399dc8a372f16b463b371d6816a292fab804196e3631aff933a72383d3cb056bede0be3ab09a7b44fae6e07c2623da3e51b0f0e66747461d4414757973ecfd851015955249a9689b5ee77b5024a27310eb35e7a6bba35ac4b658c197df05a1575fc985aaf1a14c57a09a5c31fb90e174062fc5917e3e1c63566bdac72ff8ea183e3bbf242e50339f41032cb68cb649950899215f13708ad87623a0a8add3260331e66572dd4c0576820880942c59e777b6ed2c506f5ff0e36a45423d572b49cc64a4283aaed4cc32eccae16c2239a874bfcb96cd9bc0100b0b9f07d960375234245f0844a3ee4e43ca089abc2d5b7e71312f504035e39a7937342ccdafc7e1ae644f352795e23271aa92f501fda2303a023a2c4eef10c31b4e7ba8be5e0667af39ce23f1afff31efe0cff343b63db436888ca1010f3c18d7b7a9f3b13c0a96c15eb53a3ff1b209e90353919a70dc585a012e2e4aeefdf04d591013cb4c390d63b14fbd4eaeed292e6e7e2009b9be51650c0520b179e5090b22888878447b5486b4d9d2980edc59d4c03862f8118d65792ee0c314b3152f4c84eef13f0f3ca0c20d92cdaa8debcc5c5db150e26c03cf914f0e3dba31340be4f3b16bab4b3e0277065a130d7a2162fbea34ce4db46b98a53a87870c9ca775d4686e08e7cc3df2920de6493579c1071dd411aa0c45e8fb1a20a466ed3326da53e199ef7517625849357ea8b202447d2fca8cadca6f8e92b916684293469493e9de40f506e88083aeb44e91fddf9cedf93fe5a260f8505c789258358dbc32542ee6d2bcd8ac30b5246348d495b2d11b8be969880a97baea5bf2e5ccac8e1df58600ffb84d07ab2d8641913d656de01bdf459d61947a783818f5633e434a1a47e13aa09a48507fe12ef08451aed7f5d1e3106a58cdc1b4f7503f92125691b6be1326ba00aa10154363374558290ef4b170cf67201500416122dab4892d99b6150258857bd087fec9147eda1a540049791b482fcea3c190ce13b03c3ae5abd33b12e98b344c271b22b055e4f362f014dd9007bf94400084a8b41200ac75a6ca30cef7d5cd0f178a2c74edd915b4f7a0663ddaef1a78ad0175eb3403f2037abaa1c823264a48b16c3ccc9dda28208125f89f56f95a072e620d6eaed08422aed263fb114610ae0479394b5e0ea205cce0b3944f063e1cdaa947f1fc61df14db5126e0eb625b91525c9230509676766c7d3f4463d965417f939c5dff97a0152fd4f574df79aa1c93ed28d3330d0c82cac89d287181d646dc6a94bd7b433315ebf16a379cd40048f12fa2e9ef97882fa0b918c61a1e723d28b704aa97bd3e65e52d9ee2d99509c04a25c46a0c86e45e7ec6f54b47b478a789b568af6010624b07343b65cf557094b270cbab3b825f71498cee4da2127e549ea3de8645affb83ce674d16bace00d9eec8e275cb523b4cb7c4a72c1bc687fbf6d993049cbfff53ccc29fa85b995f85f93a2607342ade02d48ca090641e458a97b6a94c1cf11ee72603cabd79f96dc7823cdc569087be377ffb53907642934c7857dd3661e6bf5d162a45435bbaaaac6d8ece7f1da7ba0ded0787b70a55bf8306257cc86c2d8d1c6a4a21f54f1b227f4eefece6bc82bd5526c0fc2a21a938c1a32c6f5320c899a503a7367b27ccbe72f19da38f7562d37e83cf0a917d06a55c224b6718c6445e815721ec96b7f90d48d5ab8f12f1fc0fb13655c83c25fe88a94d2774418a661084f0f7ecc0586ac859ab1f7bd6fe27e865c20ad156e54ef6245ffc8fa9fb5d170aebd4676768aab222dce7ca7e0f19e1c27fbad663cb59f2af8b34ea2c8f919e9c7a2cb1b6c848a6a9019dc8fdba35b7f518067b96aca6860f73d3fa2c1df688cd62eb62775c23d6696914725c38745ed30c7d2bcf9d78ad57b1b0a88a61f746007e7553168fc39f3d96c2b814e84b7e053003fa097a728c9a51820c987bf050433af4fd5bccca7b8ac0ed5acecc354b242b87ab3f624baf3155b79a6a7034485418f535b2066fdf6c50b0c0690abddf34f808776c3893343b3022be85a8a600672f584018310721eb66cb86876c1f772668f02e8424871e714c732d0d6ee3f44da78eab0ec6a7b1465449a126e17d2b139db3ce9810f639558483858d73f8e6303e2981d543cf3d5b21f03f86fa9c193b90cda65d2c354dc8aa6ef2f04cadaf14c6b6aa50a922879b0884de336d350ceb8d04a17e6b248187027ef164ef5b7e15a4f2a3c7fd3909a4f6d92a1196d410c2b20057f8044336b7c5e275cd3a590b5b5343d47ec77cbb8b0fbaaa28f14c98137332f5baf1d3b796a040fae06ced7e7cdf8829da950e821329924b5ba1b604761909246773127fb432084930aadc0e406b3bce5179cb1f954ff8454cecffc6e73e7971e18c76f87e91a1052c7c7f9460abd914038754bb1a3ffdfe73bd0d6e5752d3f4cd8309fdd9c66640b14d6b9d496aa7f210592c4958ed4ed1ed216c49c51aea26c364ca71754c6e9fc5eeaab88806bca3588be36c58fe2ae867ca8e81a72b8928287e22bffd9525e6f213870209ef6052383e55a38e4e2196978fa1c7b3733bf13fe36912e385bbe520d4de300c2cc0db4699f3c7a86aa6d1b7eae8feb3b16120d8eb7b9b60f55a20e42e10a23ad5e20be5432447ea1776c1e278b28195f8986a6fb15b38a13135a9f6807030129affea81ebac8f13c9c5828a7dd5e3743071dd6c94e8405b7a5c0bf80e55cc713a19f644c12f95d82c4793f05ec354029573732eb8a26401856e41a082ab1efe0ded5c92fab775b19ffa883e2428033d3679b24a837fccb2fb0e08496622b6a17b319f864f569460b4d101ce001b242e77514e5e20cef268f7311510abe18079832423187ecdbae1b221f540c1de7ffe8fb80924ff2be37d8b36fedb24d39414356a9f06c84e149613e6d0465f32a67b0b9e4f625389d4893bd1d63c0c7b880c383b72217146136906d30c4e74312ce449bb3e6f923d4fc380c6d2787c60dea145e33fb74438945aee371dedbec4959cfe7921a9f92b518146757414f6054536aa8f72320caccf52e1b1ef809fa2cc40b12a8c4606f8213b6e3112cddd71ad34c76d75ff1c2aed6429ae5b5a9ddf46603d8b9b4efc49c9654d6ebc4bfa467a359419c5dac84749adc7bc30d7e20e3f15539d0d5f622359db2bb9cecdf96c49f31a5c2f8eeac3c0c8ebb2cceebcf29f91f6cc2e2384437e0cc583b59fe9481af3f539dcf55eb3927a7d9d630d1ebd85aefd66d503f19b0819ccbeb28dc085d298d951fade86bdab76988363941ee07685945fe5a5fbd45d106444ab5dd56c63bf0a8b28f3c6686c6e09f99df9756eb61cbb6816423ae20707a61247fc64ce11d2e213f76c09773c6ed480214a020c523ac558f6bd09a7d1621e56ee460e7aa2d24fb019c33a527d52afbfecc8476ecd83dbe061b307ab23bb4d446d4356476dae525825d1cc88ad9a867ee57cea6c8d2a7793ed4098de92ef28c6482525ae98c28126f345335acf29f57cbdc436a26487e93af992626fd3a297f20db846efff758596024969536493d113af72989be331d67f6792d0ac811cf75826a5ebcc855d9d1375596afb8f6ca0a73b85229a4e52b3df330b92fc72b0991bfb9226d3d5751ad77c62b88f33b91ceb554d0be35a274ef360ea1bdf802e40da704a7130d69be11659e2d7d014f5b3f1a1b52ca015fb4605f9e72204008aa76c06e7271e4c93ec8339cad2de61690a12b5698550960c8ef81a0f226f55dcf96c209508d97499c918a36eb425247776987fcfb6c85e46ee7e4d1bdaab5b2257924b89b92995b719383079105a743f81494a2086c38af3829f928fcd128a9856db7faa417dc1c7121bc64d7a85819a6bb4f17160023108398df5c0c21d10667e88aee08e8d6064fe8f99be0c23bd9ea655492cd1fd97fb57cd8ccb45cc565bcce62418ee992ac9ba089d3be24bbe115989d0390b2620a5f3ad2a8e25189ae430ea8dd1962fa70238f931e39ef3adfcdf4d233e66b305077a0c3656f4798cf510989c851f826ba7fd8537fbe5344e4645d6d03fd9065c742a6c65da8a7d369fc441a93a03549bbca382d062dfadeea4cfec817e859ae409985c568082668435188fcb69256f6e5558c07a7ebbecdf72732599a12b82a3032b303baebce43366cd583bb846adbcf35eac51f929ec37f05ce0b606b07b53139e021917d9d81367175302199190d2ad893e9677de9ff944681ccbbaa08f1b7e820f5085c228c86d208848a2106c10a4c437d6ff1391f126ab199f93a9412872b95868a422a483f784a2c5c0341c165f8cb04c71078bd95eeacb00f31b510ab7fc9c5cb0e7f86903d407217b514f7d4573f755d779579588211dfaf76f09fd95569eddbdc5b78b4613c34a261f5e64769ebf10cb2e8b9a52feffbd45bd227699a7b84784b368ae8c3c3f17433ab44bfc489f865d7162d530635235134432a18d23c8442f6baf52edb9d1a73ca3c8077a3ddef5358dad9cefe78f55e9e6aaa8fdd05f54c3ee7faa38ed146a663ea6c929609416a955cd86d35654ab51a96dee430b50b40dfe627104ac12b8e7520480442518758f9ebf31fb2daec2b937ea9525047d63eda3cad80cbe3e633a0cef12ae17bd3b8abf3b50881f4157fb5fcf01dc3d053900a776fa315f41b480fcff3b1153e2053717df8dad9238764c924b27610fb849641ae98236c291a93e9526fd6b0c51968c87691c1f230afcd566ddd8cd24dc154bceea858889e07ef1b100f86b05eb8a3bf409fc8b1e0818d217b46a9bfe453991db1fafc94f52c7970cc327e01aa96777c7ba50b606c4bfdf01a052a46fbe976a1dac40801e8aa47bc4b1bff3b7e992fd6cae567913413c2b2793a5d11fb93f78b1e79156f983e477e02830dc5f0f1d89d6cbc78baff63a27afb1947d0a5b7d4a7c230093543f1080c5349422266f6d23fa3ac415f8a20cd564f24bb5ffd0d766a47d83fe9639b56ac2ba09b7388f2eeb4f01904142edfb05334fd4ae22f6f26614c659449eb873dc8631b68a50b513fc54aeb7c692d8e592ae85dbf96a4a8faafd7279f13be59bb9a4e9798341c5511b0a186e0f23067e428c67832c2439226450a5be9eb3b563b316e6933a716fe5ad76273500e5c7e8f927bb9a0f6eafc07c443d047d3da8ff5cb744b81d59af004721b5239af90295defcabe197bd0256e9d6fe9a6e874d28b4c8365b38069a39ce98755aa836e27f432fcb3b4c5727619044c6d01530a3d62f6c8932219b7c54d6ebf57969a8584c9704a0f112da36b2cc91cc79c44f3e41372bbe2f46cd4ac33e32a82bae0b74d80b67c863c2b346e2ee05fcad04ea45645a73b37417655d34a303001036547f3a5b65a9d13ba88e7fdcaa542c87803d9ec412dd0460c280ca6dfe9ea32c29f54fe1b1af15494fdf2711d06016a0809f2b29be0c35715453d8994291ed876442483c202079f094680bd389b9f51ecf478bd88dca1ba422f43856f49908b39358d5c92d78017437d091612e9b3d3b47ae15c57d3d841a4501a0bfbf8fd95e7b10eca1765ed9bb4c981b42d889ba8232f150fceda325976be67adc4fc9848b915c3e233c23b77db9d51994e705a233d3afcb81225c21bb557b3dddd59974dd7f4bd9c0e7d0620dbb36f6827f503430ddb48887c37c09f559f2336586dd0219a5da908380ccbd6461598581064022c6fa7045b75efdf1f3e01634491c9617309698239d3606ee9b0f72fdf7a82429d84545259fe16e4e7fe9dbc7c253974ea59717407edab98ebcfd41ab72d3bc9694d09d8b5b21449e2a853aab8f6d4376282330d61b62bf0895b65ddf2cbb39a7c71fdc2e4756aa297a5960b7d6af57793869135e73696b74f39ac3cd08d753ef04ab11aed19df150b41f2e95f4e2c80547cc2dffe8adffa6795cc259a2626f4457618a339c758530c92506d183d3af825262d9c0cd90ab4d0e842f0830dbd0d4e22027eea243759b70ccea290dd345272b76e02e37991c38c9eded915285e161e93f886b89ce8caedc0aed35ce37f144a007d01b55f09e341b48c4d0c8e883ceec04081d17c3fc7d25e9eab5edd96116a3461a6b9de5cd1fdc9883003b4e7873402d85919032939fe0059e324695bda5041c090d7969d409dcb47d8ef547d1eb356bfd2de10f84932d12fabca8cddc9bd4a2809698933d938ec94bf17825784b36e3f76e78b2c14dde54dbeb1ae6960a8fa6911eba1c55e369d5e4423981c1f184acbffc5457e561492605711cc91e84372ddc4b75e317da9c2d0497c5b4116a1d536e1cf79fa793c17470df71626f1138ebc1bb956bb45fd2f8df47d45f910c1a59c647db0de9cda440ea7c4b24c8d95acd682da7589bf3d1b12fb35ee3f15055b3ddf5ac8a4ac272200239e084398d7d6f8d1a9af61fddefa982210cea4105844a98de98e255b361be4823be7a41e4ada725a8d2b2a89f6982e6d1a8dcd1dada79f2420545362b7657defa220378c636f8d218879e6f94fdb5dd634b6b28fb6d921b047ec700a1383d51b1a8a14beac51f252b0ef1d2cb460da61918080797dd596093d1e08c4ec255ccfa72d9cdff398bac0da1853598a82acfac466b7ea18e87e50433ecdcb8009a9545d4b48fb8d9dcdcd21f586f64dfff20af2c0f1329a34832cfb4ab16adbd98dcb2113f8e3eac6bbf8e9a0bceb79e55d2b193b3f10022bd8a0197c20bb42ff1d8ea860b2fec6bc27588bc66a589fe460fad8fda33ac417b1afbb239523e95dc38e6ebad4c57141f8c29bad26f46dcc2cf615f4c34bd960befecc5fcec0aa3a1df06e83f53015df61b950ddd7e28be0dfeaf9d93f31afa68c2b07a5a848a5c1ef4196fdd6c3e8a6cbe1021ba3bc6393fed1a307f8cde578495beda892e4143453f1d9e29be25dedd4ea901bef7f758c31ff6eba2b8ba3bc31a4b3d1fc868a89cdae1eec8b29c9b567dbd57e44c77fad85df4e0d5641fdc7df0d8e29adc5552bb2ee6a2e359cffd1b31582e4a0edab5131c1395b1558b9981abc62ada1e6195d1410137a7d2a7be23bb8485b2c8ca5cdb311c4317dcbd638db1a3b7a27157762056b98ac5c816c797d8064702d3a0cdecdf375aa999ba3ad7e355e61a80b26a7dd85f27f2003f6c578520f8c4eeb96dd52649124e55d10d87195ab350e61bd1d19e4cbc68f5d52c749e4f6ea778374c7a6d0ee6b2df1b8f3a6aa988b2e9fc4a9a76d27664824b3ab7542de0fc2801a092774029c307242e81480d7695c11cb66a03c755a6a28a39196fd9e639642f0e29ac29be359fa350606cec04b26f8fa367edb7f9f43b658f495d9b677a1b3fe820ac6f23ff8e900ccf8dda2fa32877cfca5f27bc97fbfc3c291aa3e8fb3cb15ba83809b0dcfbe61a3cef74056b4c5a4b60d76909dc42bbc851de13879fb4f75ecb699ad8cc7ae37608b85525ebee0fc30c41ff119423aaf08ba2c29f6cfcd101e334b1c690559f21051f28956ef08482436881e9946c40eb5572523f0d3d7ba921439c5f31df40cefe6427631ea6dba88eb5811236c6f2cb628e98994ffe4bab0718d61579d831cf309f922a8c12a8430c3df047d6de1b39195f721ba467b1aaee873e8578e40d79c951dfd52cae4ae3ed1ce60d57a70d0115377725a3109c19817e9ce7010d3b5470dab4e9d6bfab97f82bed349c9f5d44a3e52f218561c83c401522e42a575ee2bcaafa3a4745d92a06f81e040e33bedb4719be6daa83821ffff9ec19d0671e71bb5283319e6b49dd8414b52f1c25f75737921d9412e2c7f46425bd0a1038e66f6d5b1ea0df97c3ddf5b8e41ab70dcf7ade24694ee539e87d6ce15bb8cfd9990247f11aca73ff31356eaf1f25d2e5f74f5b8ccd30ec3a0831e61f6d5c344c6f17b15e8565a6d0dde4189314ece8a3501dff0c142e15b82704f620a51f28605d1a8856a94828ebd783b25e087d75e80d3ad3e6eec4f2678df394699c9addacd27c9d0ea3f88d2890be0d4b63697cba9b7c0f98715e3b35ba940b0abc374494a6ac332a097ecd34ddb98efd8a9300544a57a4ef5e49471f46497a34fc42955776c18574f9bbc4f6f680af0664528bfe17ecb3ef36c997aa48ef56236f91cb3be01b3e6b1205b38825547db0143baaff295814802ee34ce12e3fe64fd22f25be4e6eff9823d1bdc026e41c1de3796e95c637d1f07aeeace32061c6f89f74a7d8452bdcbf9e456b498c443fb54824ec02e2eba74c9b70a10859a665f85a2797566421dfd313ba294a94a5b0e69457beac907a8c7b8979398e0ebd86eb0e2c00398b2184c54181c69f3eb4ce32b9488145f0fb2335fd8627dad527c3a73e47322bdde73b1c8606f8a4a0d50a8d18a3550a5a6549c32af1414a983b0502bb1b40078824ea60b5bed68ab950690974b5600ff02c8d94a706009585690de51b79806a8a6d6858a6825c4149e005db4ef54b9cd7afaf9e5e4803baa024efb7d56e0f5ae716030efaa8eaef6b148ca26352c398b27d2891bea98c82ca449214255d4bf7f96afbadea9bc5fdfb61bf0c05adf9082aaca2d78b5401926b6331ce4a6a5744db8005302bb795aafcbbf4c08383239a9b1d7c6c00336c062050dc47d2579af80bfbc8d121f1e6368f19959ff393f93e3c36477b236efca80666f81adcb04065d44c63610732a79c34599f50eac038dc41d34bd3822182ae953cbb0da7afb7690cc1e557b542add75d88242211012205e677032ab8c0f50717e9b159d10534783d61d4c32cec31be8cb4c936a482fdc7538c9c2d640eee422ec83a420ce82caa5008a70320384e69871149043975908ad23a7b67890f2cfa099109fb3b5bdbe43a604c5009c2842d606ef021661da9f6bfefb4ee701912d62246a6de3dc6c00d5946a31798af382354a9206726ef99f62ac193ea82f3241daa71edf4ce381f4f6e1600277f36323fc210cf59116db5c1210b17e5bc098ed409fe8dc94cad7e6c76a8ada5ed8c1dfbbc6507edc273d7f8045e72edafd79d7018e58b924ac82827be6166df3cc10a8ef882668f0c6adcd271748a8a30074315e2e2bca6343eadb2f395dbde9c3cedb417819c89c987245995467b7d2239976629534e447c146039219931d8c9a31f0b998fefac700615b4fa7813540a1253e901633fa70569d770c34f81631460daf2e69fb951bd979887265555cb4eef55f325cae46fd2476f3e6ebe5887465ac00d4c6ee9a509f09a5f9132f701549d1e2cea516459225cc66bb11636932f585545ce6a7e4b348b8d2cd3b6e37ada81569df0893b4084f73f6b2f030fcae0fc8063328210472b14e4cf119cbaef4bf14653fd2cb87891fe812c1881cddce4a20e3baacd473e76009ab804bd4cf3dfd05c8d8ee27f754dc8f8007a69cb34fc262f60efbd61065a02ac8f1ffe2164c23aab7e1a3c07be63e253901ae95b0e2841f770cc6cb0826fed9af4b54bf3aea594689e14071c35bef904ddc98942630e39deed565e1ad3c78aea492a4d32e16a6c6e881c4f5eaf2ddcc358611c37a5009a41a25b2198d2f7a2a591799d7f8bc979bb6df8b5c1d91ea50c09e1c667482f0adf9cbfecb7e5a435d959b65131742157f1143d190c7095ac9cbb5cb6f41dd48f5cb8d78d1a196d6f15b94456d319e0ded66ac5d75ac3e7bcf74aab78717e5d5ec1b3f8b9f58f4470f05ae9b3a405249ed4a25b6b9b90f468e5f209ce6844e4bcfadac11b9442a25d829cfd1d15ee877879e735751427cd19f1b425d7d49676b6573fe442d20c168de8b85a434fa93f6cf89a28cedbde0d90e9cc3ce0a783010c0b8068f3a20c22cdc505ce3baaeff060a727b0a55cdf5e2261354aae456ae34eb022b52f8a5071f3bc3f281437eef10e7f60343dd735d7f7303c6d1f07367122c17bd7be23d6c5e0f7e639eb38a9d7579f712757df3b3cdaf026ff23ba68f8611f27d1de9bd8371ca3ab4e4aa22e7edcc960e203dc4d570182e708921df507508d10ec48326fa00071eaf963a298f437e41d61108ad1db6588e00a1966e90903340c57acc07b4938173946ac15e0f609782340fd788c97bfeab948a8bee977fa20ff8c492ee93ceccd029acd0e7fdfe635a79d0e8a4ae74f52450beec07a3427c0974867f839cd9dd134e35554e33a566c5ac0b778d4a9feaf728a32fe1bd3b86a9606f0b266311ae3fadb97e1b0664494baa55f4c362b1db65471b57c32d9b0d4a558a5800c4e59c98b7a2464d4e6aec7f1d93de855c2575c352ee133c341949cc38afc9ceb0562cc05def0c0655ade42473bd97ed91afc5dba801b8ffdcd92c2385de6d3b5ab7f3a5b4ab58b5a3a34e81f8b84165e65bfb919f8b6f295ec222922d579082d6f2de24e05529008cc6dc08eee0e0bfee79c315e538d2ff04160198965b8b091df1d9b80260f4d78f1407375c0c08e27a93acebbf5160f1a1b72c00bf3675561ddadbd89ac5c7687c162cf3457a722c32e7f5bf4e067d09555deac15744d146595e3a629695070db115b46ed9f241eaa8ba8e6cbe756a0f485f452a82fe91e105fd33682967fd6a35c036f4fb1b12e6d3542438d0a382641676c8bb3dc333a2e98e5536427faf82cac3284fcb7c5d36a5ccc899e2ffffa39dde912fe23c241e2d70166ac241e574276e3e376dedcde35c0c49325aa54285c1358079e4622a1f41215ddaea9b12b6191138ea212adf94b3a067fbc4021b2bd82f46f01eb3ddb718bc1a7b45132ddbaadb9abd5cab01e1c79213336a65b0bb8e871b18652080699a548bb8728918d07fc6e04792c521d5da566d372966d9c6278d21aa579c7491afce7910f70a28d28ecd68738362b1bb4ebd44c44095b42ddd0775aa5e4d464a54df4a7fdcc60e39a2d62c7c3cf010eab240acd622df2ce6a826e05ea1ac928c81df6fd89acc3cbb95bc5791ee16042f7149a48711daf845b2c2a14c812a3fa1c23ed993ff55033d1ff5ef880d3f1d60f00eaf61181aa9dc77dbe61ef0fa355c9dca804d954c23e00d3d3c2c81d04401487cad00a8cdec519a3202e63b63e454ce9d5cc2cbd0ec2eb695bf978be02c5020e8f177a0d4a9d69ea239f0254caec9cf8f8002ae2e8c940b492e34ac5f1023f214fcc1a81fd3aa6a8b33ba1a23100997311b7e4ca4b1407fa2c6b4e4e7066689553389954eaa490a9436faf84604bc3320789b2c7fe93c340879d9a9025b5805b6e66f7d2605886b48f0b737eca2a52de5714575f12ee6a42f52d8ee2f186624321a4016885c71bf089c3cfedd50f8ed1b178400538ff23609af19fd5b6c687260506d32daad5862ec7af9f42ceff7f9b4bdcd3aa7e56da3ac463bfcb0b342035d8e369f6655ad96ccfcb9bb96615f076d0e7c97d6eb4a0db072045a8bee2775ff7564c4376a40b0f7878d45bc5fdb353ab479b65b690e395d56b737e92baad15ccbe3cddf5f3d6a2d4f9b944847a4d4b532efd119e956b0dd3aa865f48f7b9d7e43efefd35fc5f335af7b47015e0d89afdcf6dac3722300a0ee855aaa0a8c44f043e293e9467b17788fe4e967b9a4b7cc2e6d07edcc8f9030652837ead30ccf06fe80fb9fb510666cbfdeacb58a50279d32d1c21d8d0d48f9dba3c3581c99b532cacb2185ccbe4f54eca0dfce913a10fdbe8130046b3531940178c01fefc11cca2bcc47b4558081b2e9c366aa48a3ec7fe5a174f0da0a191eb03381a4e2ab7f06090c06704731c43bd8f47cad0c2e509464dfdb697f964fe583c340f5607a40e40640c390d0747e0af237eacad0b6360598f005457d671123223a22c4519b8c347b52ec342f582ca7fbefb3f59c462e9a66fbcd470804c3a1d40610d423d20390cc81213a892ca81cc25dead00e5df25fa4439cce6f77bc66cbc2fbf13232db81d235d855926129b5f07e88e9976e2747ee60889736dac1d69e55a1a92cd79935c12d0a23d6e12e22272b93db8168ed8f4337303d7c9a12081aeff2e9a14629ea923c074ba1ae3f99b5c9807ec7580de9e8cb2b4be25fa29272cdbe93d23c9ac78aa9843e0506586701bc97d68da7fc5015540699551c053c41aab52e8fa2fd53f3e70f1e6277e280ded7669a99d793a2e783160794dceecf6561e063aec1b6f9b3aad628f2d21d7c8722c242daed046aae3a2494fd2ff47446155cd7321cd07443dbaa6f6e22a5fc52cdc56570dfc49740536f668ca344f81e3f2745f1545c7a0aacad2ac3a0b145d0679610c4f7518d7559dc97ed423847826bc45c9179dffd529afc06d1f40fb24ca1eed9b20f799f0cb3842cbc1fc58bf96c9c0c6cbace0ac24ba23aeed9ffc69a9ca6a1fbb0b81dd65c227f01adb0a4047478139a9008a964bb4a54bf573e196b8a3808774ebf575a40a33ed970868b86fc565377b20f55911e1fd12fa622c206dd3a7312fab4e680cc540d8a90f2c51e7186343e32572b12c13347bb62b146a26ee7c05e5ba2e48a7646137f19ddb7caecba28cd2a2b03919d181e9562f2b9ca2eb84c726b4a7d9830858d5c7364a80661dcfbb12d88e999589830dfacb7d7d85af6885927835792f785aa9b4b53362d593ae30be3b29b725d8ab6937873143d921e9bd5fa0af02423024f3f8a09382661b71f4c54fe4238fd92ae89408efb288d70d2dd6388a02d47eaefc054ca4c5a5b7500f6ac86aa65f90bb7010e4a019e34a50f3d6d2ff4d03b01f0b01caaf11c7c36762c602daee635909d09a34515e1ea4c52450e1fe57704ac3e848b01cda1fc3dea045cb960e2f709fe5980630e8d11189abc967f4b9bf5b1d1ae8a86095aac1d385257484429a8394f961920c2678b1e8cedbf8cd701bd56a4024d5c24684449deefa3b98fb3f5a644fc346cb44f407179fb404cd3faff72064f2ff17b871ca4a132d0403d7fd86a9877da3a209090a63fb957705842ed13de27da0e29a55dc84b178576b64782da926c6e328d4deb438e754a8a1844cc87b7fa3ac808bbcad2ea06bc0f12d95d6e2a1c5787c8380366c68da9645f54239bab4773b51dc534d6beceb6ff972025516ab165411595ea69137a67a2bf14e222da0c0f7fb216d65e852ad33ef6bacb9710b4b02edface4d632149a1d32e30e02527796244b57f8c90a2bfbc88ba4658d94569955b6687807816e89c618daffa86bc4fe512c2a4250758003636dfc9db7b63675f67fb2505cf8cbdc20066120135f026b59d0619d18f8ba32ac029ee6a24c2b27c9dc8a90de90496f9e93ca87616649484db18c26c431db0bc4ba0b6dcfc77ac2ee9e5f6bf813a55d8e48640cf74036506aae3a4a4b4e5832b3fc5e3fcb1e4280690fc554e1ac76e145e39b17bd06115405210691366934baac0f97ce02b54f0dd9811f29fe1c26c406dc454067af659ac543cdff2b3c78c86c9774d4a4c2b40a527475c89b83e6cda63e7853f8282962da72e795c13f89e9e0784641f65f348fa979009955448a0aabf89257ad34e68d0cebacc19c9922b28078595eb58bdad946044d05bc387cd719a631bd885181d5e7fa313057ae8b5c65e22f77597c10880090e6d6dd06bcde7f0c9cea6c07138bfaa99acf936660ef2d76b656568d66526bf0100c90f490e0a5b64adcbba15ee2d2a689954e6bdddaccd4dfff43552c62a4c7a8ee58ec512ba0feba740ac2eac386b7700052db5208b3b45a6b8c9339e1384f97f4a6e69edab4d4db3a0c2d48f94ca17ab2c3975a508375b8371adf657c5687a1eb8e532caa483c94ac46a1deabf866c895010608f2fcdec80f2214ecccc94831de0749a6609d291e86d81eac47474642b1943a2d78e7ea9cd145e1dcf79b4cf0eae428a93bcbf908e063d4957ebdee848a328f2c980d37f5dbc0768a4c91791ea1fed69b74d3cc3436ae29892ec3d4e3960033083c1c2e466ec18a28421a72c8eae4b864a7749668ec496e198b4ab1d7d86b1e47955e4ffe5eba2ba1cd9c4c73946e6ca5cede5e7fe7ce0bb3fa544813712cbeef4bfaacb187a21790b95e52b10cf22f90c7c1324a233a9e992c8daf8ab554f088e891c26021350496771e9519b456b47127612f891cdd2495023a77fc5194431b716c823ea43b35d39fc7f5e4563ce9836732c9f6491b11f6ad7e2f6914ee87533ceebb3dc0f4825fcff20f8dfd6dc4bd65ea89db753fdbf8916727cc44b5cf99a8f0cca26640b6d221e64a61d0dc5f564d6c137acb30b9585e40a5032a1e1a7d77974cedd9c4b2a8f39c1591789ef3ce6d7bd9367676514efa9810c55771476aa01540c5619f6d61cb10352cacc9d6c75c076af939808b088962546cd7fc09c26587f31ade0527d156afa5895d14d49be9af942db50ea05c8d35612db7533d3332102b94156e00cbcaa2eaebc10e42384bd0e8372f688905887c097e42e2f240d7a034735fe4056c4c4ab0fe91bde271cbac7778cd8a1e398a5e089f43add9bc34fb491f1516d18d68f2103a6c50f67ef9a6c44e2cb5b101a94c75d381566b7b9054270a0a49bdd0fb4ebe1e4d9ac33fb71624f32d77824259c391983e40d31266c070eb017900280c4c7317766a1ef5337e5b1bdef60d8332d9cd8cacbf87d9706760d549f4627ad29448397937a969af7aeb8c8c5176873ef588ba8caf8146aa2719b051729740fdc3166600c62ed8c52e6871ba16f4347a6a0f1db2d0760543d1811fd65439392eea20353f7ed727649ee25854d0bbac7e2b799c58f4b0cdc3b30c7bab327f917e93f94d37ec7deb95df149551701083d863776eb68d246ddefb62b82ac741df3f2fd38a9e9693f4bff414ce3d73030a714eba97a305556086f49ffd9d52f8f6ecd7fb381437c8a354bea7f05129fe139d73651bd0cb6ec60b961dd0cf36565469eab1a6a9587c2161a050e9a1e673dd8ce2f64a813117dbc2fa2d7a979c368298a3fef5aae0bab9e5eba24036916b39f76cf47501b85dd485aa9f9051617773e1f6fe3a87b346214d4f8eca5bb82515e56ed47711a167e04ff2700b53ff00d9d8fd33f90f1b11dd1fc4643689c6dda1665e8fee7184b884388336b15decb9dd2bb380fb38374b6c37045a13bb9869f7e3b2aa335b0694d2ebb0e59c4fc80435e0d1122942d50a5eb7bbcfe8d649faf8116ee4d011c71833fbee2432690dfc936219a891c0bc890df0c4fb2d6212123bea9f59195da36f3c66f22d2e149b3614242fc611681849249f32c830c42196707c2152460dd4664670c9266607d9c52dfb3eea1b4f535e9656e5e2e2e906b3ee2b7c4ea734969c59a252d02531471035eccaa2d0819e6e1870b839bbd0dfed00bb2148505c8efca2ae864572d93171d83df379a8cbdf96193d41dde3ebfef88f0b7c33cf0662c7eb7b270a3a52d0e3706f959e59b4065a183cec8e9b9882cae34944b623109b48334fcaaff35eb0f711567ade5f582d552e5c7e9903d1af0a82c871b456b674e30698a34629edb8999d014b95d3f71cfad5a77c2fe5aec099465c9655565a0b5de72f85772625bd204ccb4016c801c088d19eaf55ea54cf44f1cde2a808859875a3e8d67aa4968540591bb6789a66277196942ddcd377a1098c4b56c81626f099f11620ffedd0521091c2a5a66ff26e7482ac645fe2ed299b384a0b3bb2536a49a02d95561edb198bd5e28a8bec01a01cd4d3d723a2b0c223cb6104f1f284a34227e63c4190ee91e3eba6ffbaa82151dee57a07987d386a81b6a2dfcce65f095c1c39872b815bb093f8b85450ebffd5133e3165dbb4ea49e54e034dc7afa060ca1669cedf89e6f3f5a9cc5a97c5a418ba71d466f47cb366b5e12afe4dda8856449cdd43586893a341fae3cae6014dea40147efe651fafc3ee128703365578efcaab6f14cd477003a4cf552bd3218facff337deb67a902e4c64016bf0cb900d066eaf420ed2512b54a39b46424e700cc26cd7270551c718b311b153a76101ebb03c9b5d4b34c28e01213c76ea4e8d9570a3a4b8db0fdbcab50bfd1143c4fdc9196a33156780b85caef7697bd5e7c3675b5c3033ecb18ed204efe1031512f959201382bfe8c9e729c0962515bed5ca7fa7f5a11e81cda40837060a1092fb1037879868ccc14b45026e306be265e43e6d8c6d2f65f6f2686dbe625d88afa7805aff1b19ac3fa38f8dd6a5a6eccdfe204bd6c4a92253792615ec876edc09112b1b017c9b05e477c343067d360206e954487ed5f1c2debdaf24d5940a1c3f5d17be94244b3d9dc8a4b1df88f2e09c9121c09bf37b70cbdcd8dd2ae2ad4927b3ee966ced594b19ec3acd1737a130fbdfb4e22f75d3d24fd2fabb57d90c7dd43f7fb8f22747e22c8f4f5ab80c804d33849ded8d8b141dcac474a073628dd5846d3b352cf26ee588a1f25edab5bfe20f944ff461af716cc6f1250fe1a6ca3cf0cab9ef93dd782f382ef8a78a3103556bb0a438983eaf760259f27aa50e12f99bc432fb4efbe7a89f92765d0a0fe6fc19055813a7d1a988c8c946a2ce4ee80f1e1d058c5c698daefa6348a7dd657331f1b4896cfd3bcbd43b688dfb761782787a043578a38e12c88d988e615a2eaa22b52a3ec4972198117019b8313b704b1e04cae647ff4d72ae09372ae1a8e40284f756ddcafd8925686686bcb0321a61b36b67e3d5ae9a7ca2d8e343c868ece206311ab2892adf9bb2498f1242bd5e1753e68e1b80c60254135021c4ea6bff26a59ff96f1b2155b80a841939b9b78a75f4957920e887f6f19400fddd42390ea0bbb3c4a6f42fcd4fa8871c30b0e9f5b3ac9d6ea643c1cda0269e3181f5495d95f4150051bc24e6c30f65b2fc53bedec2c18bde0a3d96ce7fc93a7ae76632563c0290c24bb4f210909088ba28419a92c38c03fac96354c30367cdf00a5f29784329622fd5b18d2fc313394e407060538d2cd1dd042d35ff72073fd7293e9f0f499bcfe012a6fb797d3ab2df5532f82a2b08d1c903842f0c6a5878174741d7e065a1eb648ab6de2373ccf35d7c3de6655c21555baeea3a9e5883291cacd6b4bd9e96f165abe5f9827176a0204fc94abe1237f26e162aa6d20254466162022f1370b2b136434b7245d2d885b06abbd658f3b7de20ea926334feae7040b8d21bd74da3dc4208ddce9c0ae6a7baefe38995db844d5e02ce6c783858cb0ac3e445e31af9375210c7f8201d91e99c034a4c5e58836e9dd83ca0677009ef76d8f8fdb6ae5f05a55954be9425ccac044e88b40d2d00ff9c0aeab9f5b9d8fbc614979acc56a926af42679aa3cfd603097f398d40cfe1937fda094a17fcee00d0d4c3972c54a9c89e1082c226dedc4d03c674ebe4ebaa0732ae0acb82738e34393dc448ac5bde9eea6a5fbd7da7e4582a585ae8a1de4cb6cf9035392b2e69b6deb5f24d5215edf9dade1a040d940d639defaf4f433bca70a2aedecdec9147d64068a340af9dea42605ae96f03a11e951d478dd52c49a9526fdb25c096d4fe184ec41847950577a590b361761de264d02da218a5f88336e3fc0d472d3782b775a3fd87827dd2a7f2d52155763bfbe1e9b145535a4d16972c22dd7a8a50fa8385938a2d89167bc2062cc1379746a6caac6ff9f5b8a766abb2390a67426af2469fe2a6715eebedc63bcf1219fd0d31553e058b5db24c89c17386f61e6040efe9192bd01c9bce0acab261792c537cfdd7bc014c878cd8ca175df427b469b0cde32e4a4b9cb7b925207eddbde1eec3003834ce911d3ce8282fdda0c756cc633d0f370b9f56aa1c8757f6a08b8d0de644a741fe3494432ad4ed7dc325067c2242d13b8416104c2eee02c481f3a1ee4766b300711155a9bcb691b0e132d1a8aab38f163c405f34aa0954681ae976ccde18a41b648afcd61de97235b405a7abe4bd77983f6f31008dfd854e75c5a2f5d99f29193c04a6731e3b96c9c758b78c4c5e9474c03b5f34cce317b0cfc3e28898555b414e68488b32ae0f04ae0863c574eb34e6b500512ebb47d7d56d849395262806b469a3229538fa348d8698bc1f988ba34d3c5bb3d4caaaba7f618bb9a273194b8a3626382b4d08a019c4af98d54ab92b3d1eb13bfa95028c7db2c199def2bf8d1dc366dd848a7801d353952e517dc570b006a87ca4b83563c290f2e1785bc1b2cdc05d5406a31cc318b9ba48312d54146859accaa8c4a1f07c164e61e9cd60aee0020779771e7b7ac24230057353dcaca3936b3051c29797fea7e95025b9ea6255cbe67db3a14f2b4e3a2c26e3d8290cb4645a73fb0fdb587b2e3b2c057948cfc3527fb8e310075aa4d089f2389cdbd51f632d28e41f268dec41a0195dcd718da4c1db7d978c46ee5b9744a67cdfe565546062d78f87a46fa0d5d8e289f7f4a09982070f4b4262e5a78801739bc410071de2b731841077784022887d74827395926e94952fc9e6d458fb84104bdb76795a36b05443fe32875857b8234e7722ede5d41730464c103d9c6339dd9e2407c9b4ea131fbb895edda81554fc86074cdfb9caaa0e201353ab636cae8ef05a0774412f6b959aa6f8e8ccd2ab53c182ce66567e699fd512d7ac9dc81372febe8ee157d088563f83f1de000ef363c3c59aa03a84f7ca0611f490aa16c13c612507280e01fc1f2dd8ad2510adc3ada92d367a0f35f640f68abbfbb653b06cbb81b1231825a0624108858fb6ef96e0db803bb0d13c92d411036d48e6a7ff3844b721dd02260de714474565fe264f53862dd61ccd6cf7e8798f01bc76c770129008be3f06a524823d77ae4065c5b00c9ab3495643bbd6ed5984a28749c0e9b3b81a4420e78787d96136f5b6d16be15b950e6b9dd71ce5eb23dd2f9b78cef4c246224293a3f41d38519942d3a34ef0009779241c1a8d5c210198ba47e4bd3f007f7a9c93e3cc9272916e32616aad4be57df6f373cc2c78ae098f0ab2e2711d08f59909f9671fd4db147a5607071f47641797689cb9d5fb51157b19157b6704a3851195bef1d297490a01b2314b239d239ea5a9113be5aa3537b495d4d6690da61a0521995b03d228f9283ecc57c2e77b0b70f152c547ceca36f4635fd23b7763da57dedddf2640a29b2169cd49012871fda70db11501b4b697d718e2d7ac25aba497d6b8c416e0ce28cd9190fd9a413b33ffdd6cdb852dcf021a7ec96d6a1b5bff8d63b3e88376fc009f8c00f3ba7d5ee2e6d925f63c0e272293161523e30480d43eb68ae9340702eeb422929c6f0654661e8998a367b12a42c99079c3baaf05a4075156dfa861a469c3900ea3286dc20c0c0cad368173cc49875453fda28df70a848dfee55e910a9c49062ee8dc264600b192d531e034c1db43fc68e3e63551c2d61503ef0f6a4204a62a02526309ca9367e2bcde03daccb24fd87df49ae15e77f86991959d05d5fc109430a920d36f7081d544bd82ce1e8bb168b4922eeead1fb85debee553b6b8e3650fd136ca3086849d9d463ff7dbe2a4ee6c0140f608daa2a971d91712d8242255f25f8f27d1deee26ff8aae2d8075b7bbaebda275b1e326214064a5ebd2fe88b35894df4ca8779ffac4d3edbd437e56403e4114eabf40d67a3aa407e12f77ccc3ca7ab62d6995068bcc3ec4beb08e4ba15620d123d47699768df7a8018adab3e50e69bdb51d781e95b2952e39a5ffcf8f5996403a4b03ec45b3d015dfe6c931842b0fae9cf3d0b415a0bb490e1064f36df7d3a30957fdb9cc7681b4cb69cc8d8555c7138481d725320e32bebc67c35d6c1d05b8b6b974c3ccba75ec57801c2b8c4e9523098804d0d269578e9d2ce1ba2bd081df0a4e056f6dcc888b03fe423a33a8a6500002685077a3f117a928609cdab0122ae6149ddd3415961774a469b6558fc622ea307473a3d58532417a6ab21947f79e2ea55d688962b1b959d253b5a32b639a50a74f5c8251ce65c77b4f1233881b666284133104a2ef0947dd18d90d2df58a9a1b68f37fc4cada04ada8f3f8962f1c92aad5a842092f12ef84ecc92b41d913b375057281e40e5ba2d0ef8342ecfda9aa1e3183db24046575bcded3f492b543a82bfb316ff3c42d442519cd601854a4563a627b6e9a251a1b92a81d774455d0099d99662a32b2d0aaefb8bd091e6f3e8eb8faf4386b77c4d6b88824010650c5778b2e365249377561a19bea4a15d2adad70365249d799bb58bef9ec86749fe517f159a3b30e8208133d59a3ea78ddff069af22131597289177059815bc52ab10f48dc856892b07af2af895804e564565079a23142977d1b754d0b9c6c32c17727cff860583d89ce13573ecf6f4a5bdbcbcc53edce9900c9e898b94502449db7da6ce7b828923fe640cfdd66a2d1c0235b45fc6daba11b4c4408c6cf1fb2916a56099ad459888ffba6dbec3693e7cad2ec480eca0d2d3deb9e83512395b7c0905807fa3dbc1a90f0b980e69f4a3ef9053df7dcf1bbda47116b5fe1383c60271843cfb15a8ac7d0680d33fc37189187f98a2c88fd8dbdb22191e847ceeb64fdcfbb249b29f10ce3b46e77b4fb254f476c5c95f1154df40ea1c5faf8ed2185095986163b2323c067f0da1b015481b8e58e2b7cf4a2a5142172ef5e9316ccca5dd50ae844b589251ca0b528c53b827818dc1f3c243d30d7c876e2462008426d28c8f614635e9060acb7e508ada13784b4fe5a522257ec28db7ce745f2919703059342546cb3da3769993730f735340707527" + ] + } +} \ No newline at end of file diff --git a/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/BeaconNodeReadinessManager.java b/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/BeaconNodeReadinessManager.java index b1099d82eda..647941fd7ab 100644 --- a/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/BeaconNodeReadinessManager.java +++ b/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/BeaconNodeReadinessManager.java @@ -27,7 +27,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.tuweni.bytes.Bytes32; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.ethereum.json.types.node.PeerCount; import tech.pegasys.teku.infrastructure.async.SafeFuture; diff --git a/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceBeaconChainEventAdapter.java b/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceBeaconChainEventAdapter.java index da34c803791..c05848ae775 100644 --- a/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceBeaconChainEventAdapter.java +++ b/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceBeaconChainEventAdapter.java @@ -36,7 +36,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.hyperledger.besu.plugin.services.MetricsSystem; -import tech.pegasys.teku.api.response.v1.EventType; +import tech.pegasys.teku.api.response.EventType; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.logging.ValidatorLogger; import tech.pegasys.teku.spec.Spec; diff --git a/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceHandler.java b/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceHandler.java index 36585ae92a3..1907ee36a58 100644 --- a/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceHandler.java +++ b/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceHandler.java @@ -25,7 +25,7 @@ import org.hyperledger.besu.plugin.services.MetricsSystem; import org.hyperledger.besu.plugin.services.metrics.Counter; import org.hyperledger.besu.plugin.services.metrics.LabelledMetric; -import tech.pegasys.teku.api.response.v1.EventType; +import tech.pegasys.teku.api.response.EventType; import tech.pegasys.teku.infrastructure.json.JsonUtil; import tech.pegasys.teku.infrastructure.json.types.DeserializableTypeDefinition; import tech.pegasys.teku.infrastructure.metrics.TekuMetricCategory; diff --git a/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/typedef/OkHttpValidatorMinimalTypeDefClient.java b/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/typedef/OkHttpValidatorMinimalTypeDefClient.java index 8fb2cc45813..5138759ef8f 100644 --- a/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/typedef/OkHttpValidatorMinimalTypeDefClient.java +++ b/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/typedef/OkHttpValidatorMinimalTypeDefClient.java @@ -38,7 +38,7 @@ public OkHttpValidatorMinimalTypeDefClient( this.baseEndpoint = baseEndpoint; } - public Optional> getSpec() { + public Optional> getSpec() { final GetSpecRequest request = new GetSpecRequest(baseEndpoint, okHttpClient); return request.submit(); } diff --git a/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/typedef/handlers/GetSpecRequest.java b/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/typedef/handlers/GetSpecRequest.java index 264026bf0c4..00a944ebac1 100644 --- a/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/typedef/handlers/GetSpecRequest.java +++ b/validator/remote/src/main/java/tech/pegasys/teku/validator/remote/typedef/handlers/GetSpecRequest.java @@ -28,7 +28,7 @@ public GetSpecRequest(final HttpUrl baseEndpoint, final OkHttpClient okHttpClien super(baseEndpoint, okHttpClient); } - public Optional> submit() { + public Optional> submit() { return get(GET_CONFIG_SPEC, Map.of(), Map.of(), new ResponseHandler<>(GET_SPEC_RESPONSE_TYPE)); } } diff --git a/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/FailoverValidatorApiHandlerTest.java b/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/FailoverValidatorApiHandlerTest.java index 26c5cfe7536..c749bf718fe 100644 --- a/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/FailoverValidatorApiHandlerTest.java +++ b/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/FailoverValidatorApiHandlerTest.java @@ -45,7 +45,7 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import tech.pegasys.teku.api.migrated.ValidatorLivenessAtEpoch; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.bls.BLSSignature; import tech.pegasys.teku.ethereum.json.types.beacon.StateValidatorData; diff --git a/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/RemoteValidatorApiHandlerTest.java b/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/RemoteValidatorApiHandlerTest.java index 5d0f1865194..eed0df5963f 100644 --- a/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/RemoteValidatorApiHandlerTest.java +++ b/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/RemoteValidatorApiHandlerTest.java @@ -48,7 +48,7 @@ import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; import tech.pegasys.teku.api.migrated.ValidatorLivenessAtEpoch; -import tech.pegasys.teku.api.response.v1.beacon.ValidatorStatus; +import tech.pegasys.teku.api.response.ValidatorStatus; import tech.pegasys.teku.bls.BLSPublicKey; import tech.pegasys.teku.bls.BLSSignature; import tech.pegasys.teku.ethereum.json.types.beacon.StateValidatorData; diff --git a/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceBeaconChainEventAdapterTest.java b/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceBeaconChainEventAdapterTest.java index 5f5ca028a75..03689b3ebb6 100644 --- a/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceBeaconChainEventAdapterTest.java +++ b/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceBeaconChainEventAdapterTest.java @@ -33,7 +33,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import tech.pegasys.teku.api.response.v1.EventType; +import tech.pegasys.teku.api.response.EventType; import tech.pegasys.teku.infrastructure.async.SafeFuture; import tech.pegasys.teku.infrastructure.logging.ValidatorLogger; import tech.pegasys.teku.spec.Spec; diff --git a/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceHandlerTest.java b/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceHandlerTest.java index 112e5d32890..8f40ee12064 100644 --- a/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceHandlerTest.java +++ b/validator/remote/src/test/java/tech/pegasys/teku/validator/remote/eventsource/EventSourceHandlerTest.java @@ -23,7 +23,7 @@ import com.launchdarkly.eventsource.MessageEvent; import org.apache.tuweni.bytes.Bytes32; import org.junit.jupiter.api.Test; -import tech.pegasys.teku.api.response.v1.EventType; +import tech.pegasys.teku.api.response.EventType; import tech.pegasys.teku.infrastructure.json.JsonUtil; import tech.pegasys.teku.infrastructure.metrics.StubMetricsSystem; import tech.pegasys.teku.infrastructure.unsigned.UInt64;